As usual, we begin by wiping memory and loading what we need.
restart; with(plots): with(orthopoly):
Homework 6 Supplement
Definition of cosine and sine fourier series
From the Supplement to Lab 5: cosine series routines
There are two differences between this and what was in Lab 6.
assume(n,integer);assume(m,integer):
In the definition of the cosine I've change the period to 2L
c := (x,n) -> cos((2*Pi*n*x)/(2*L)):
and the integral below for A goes from -L to L, not from 0 to L:
A:=proc(expr,var,n)
evalf(simplify(int(expr*c(var,n),var=-L..L)/int(c(var,n)*c(var,n),var=-L..L)));
end proc:
cosineFP:=proc(expr,var,n)
A(expr,var,0)+add(A(expr,var,m)*c(var,m),m=1..n);
end proc:
From the solutions to Lab 5: sine series rountines
Again, we change the sine term so the period is 2L
s := (x,n) -> sin((2*Pi*n*x)/(2*L)):
and the integrals go from -L to L
B:=proc(expr,var,n)
evalf(simplify(int(expr*s(var,n),var=-L..L)/int(s(var,n)*s(var,n),var=-L..L)));
end proc:
sineFP:=proc(expr,var,n)
add(B(expr,var,m)*s(var,m),m=1..n);
end proc:
Finally, we define a full Fourier series that is the sum of the sine and cosine series
fullFP := proc(expr,var,n)
cosineFP(expr,var,n)+sineFP(expr,var,n);
end proc:
Legendre polynomial expansion
First a routine to calculate the coefficients, copied from the Lab 6 solutions.
legcoeff := proc (f,x,n)
local a;
a := evalf(((2*n+1)/2)* int(f*P(n,x),x=-1..1));
return(a);
end:
Now the function that calculates the series expansion. Note that I've used add instead of sum.
legseries := proc(f,x,nmax)
local s;
s := add(legcoeff(f,x,n)*P(n,x),n=0..nmax);
return(collect(s,x));
end:
Part a
First we define the function of interest (replace this with the function given in the Homework ) and define L:
f := x-> (x^2-1)*sin(x): L:=1:
Examples of using each of the series fitting routines above:
Fourier series:
fourier5:=fullFP(f(x),x,5);
LCwtSSRzaW5HNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2IyomSSNQaUdGJiIiIkkieEdGKEYsJCErOyE0a24kISM1LUYkNiMsJEYqIiIjJCIrSnU8Nk0hIzYtRiQ2IywkRioiIiQkISs1dUoiZSohIzctRiQ2IywkRioiIiUkIitdJylwblJGPi1GJDYjLCRGKiIiJiQhK0lcNTk/Rj4=
Taylor series...NOTE THAT TO GET TERMS up to say, x^5, you need to tell Maple to go to the 6th term:
ftaylor5:=unapply(convert(taylor(f(x),x,6),polynom),x);
Zio2I0kieEc2IkYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlLCg5JCEiIiokRioiIiQjIiIoIiInKiRGKiIiJiMhIigiI1NGJUYlRiU=
And, finally, Legendre :
fleg5 := legseries(f(x),x,5);
LChJInhHNiIkIStTIkdIKioqISM1KiRGIyIiJCQiKysrWGc2ISIqKiRGIyIiJiQhKytdUDk7Ric=
Below, a sample plot with a legend, reminding you how it is done...in the graph you make the four different functions will actually look different from each other.:
plot([f(x),fourier5,ftaylor5(x),fleg5],x=-1..1,color=black,linestyle=[1,2,3,4],legend=["f","Fourier","Taylor","Legendre"]);
NiotJSdDVVJWRVNHNiU3WTckJCEjNSEiIiQhIiEhIiI3JCQhMW5tbTtwMGsmKiEjOyQiMCNldj1yNXBwISM7NyQkITFMTCQzPFhaPSohIzskIjJmYm9oTDVIQyIhIzw3JCQhMW5tbVQlcCJlKCkhIzskIjFEJjRkKjQ8KnkiISM7NyQkITFtbW0iNG0oRyQpISM7JCIxdW1ydEtNbUEhIzs3JCQhMU1MJDNpLjkheiEjOyQiMlYlPShSYzghcEUhIzw3JCQhMW5tOy9SPTB2ISM7JCIxQlJhMk5feUghIzs3JCQhLHZMQFw0KCEjNiQiMUYvTyVvSF9CJCEjOzckJCExbm07L3NpcW0hIzskIjEjcE1DbVtRViQhIzs3JCQhLHZ5JHBaaSEjNiQiMiUzK2d1RClmYyQhIzw3JCQhMW5tVCZHdSwuJyEjOyQiMU5dSD9wLzRPISM7NyQkITFMTEwkeWFFImUhIzskIjI4OUxiQlJjaiQhIzw3JCQhLHZbajVpJiEjNiQiMmpqRzlkMWRrJCEjPDckJCExbm1tIj5zJUhhISM7JCIybS07JFwxYVZPISM8NyQkITFMTCQzeCZ5OF8hIzskIjFmTGttQCJvaSQhIzs3JCQhMi8rKytOKjQpKlwhIzwkIjEtKSlmQDdOJmYkISM7NyQkISpEYlxjJSEiKiQiMUMxTiYzbSUqWyQhIzs3JCQhKmxTdjklISIqJCIyRWhCWW5ra0wkISM8NyQkITFubTsvIylbb1AhIzskIjE4NURHIj10OiQhIzs3JCQhMk9MTEw9ZXhKJCEjPCQiMjhfNyFwYW8pKkchIzw3JCQhMU1MTEwyJGYkSCEjOyQiMiR6KDRYKmZbV0UhIzw3JCQhMjArK3ZqdTxcIyEjPCQiMkVXKCkqR0ImSEojISM8NyQkITJWTExMQkAnKTQjISM8JCIyRihId18oKlwiKj4hIzw3JCQhMicqKioqXFAncHNtIiEjPCQiMmJnSj4hUVU4OyEjPDckJCEsRCI0X2M3ISM2JCIyPHYiUlwyVkw3ISM8NyQkITFKTEwkM3gleiMpISM8JCIwPSc9eS1MOCMpISM7NyQkITFNTEwzcyRRTSUhIzwkIjEmekBNXXhVTCUhIzw3JCQhMV5vbW07enIpKiEjPiQiMShcLUlXIXlyKSohIz43JCQiMTxMTGV6dzVWISM8JCEyJjMzJ3ApW1UsViEjPTckJCIwKioqKlxQUSNcIikhIzskITElPiQzR0E7JzMpISM8NyQkIjJCTEwkZSIqW0g3ISM8JCEyV21QOEBieT8iISM8NyQkIjIkKioqKioqKnB2eGwiISM8JCEyL1ZNKXA+JVtnIiEjPDckJCIxKSoqKipcX3FuMiMhIzskITJjPnVANllIKD4hIzw3JCQiMiUpKioqXGkmcEBbIyEjPCQhMlh1Rig0WFIwQiEjPDckJCIxKSoqKipcMidIS0ghIzskITJ1KT09JDNCPmsjISM8NyQkIjFsbW1tWnZPTCEjOyQhMkxuYS1kQjAiSCEjPDckJCIyJyoqKioqKlwyZ29QISM8JCEyJG9NRylwd3Q6JCEjPDckJCIyQ0xMZVI8KmZUISM8JCExXCZReTAnb1RMISM7NyQkIjIoKioqKioqXClIeGUlISM8JCExbEwoW1kza1wkISM7NyQkIjJZbW0iSCFvLSpcISM8JCExb2FxIUhQUmYkISM7NyQkIjFLTCQzQV8xPyYhIzskITIvPXgwTThgaSQhIzw3JCQiMSoqKipcN2suNmEhIzskITJuPC87PChwVU8hIzw3JCQiMUtMZTlhcztjISM7JCExbkM6bD16WE8hIzs3JCQiMW1tbTtXVEFlISM7JCExKEgneWVTek1PISM7NyQkIjFLTGVSPHZQZyEjOyQhMlpqSDNwRHlnJCEjPDckJCIxKioqKlxpISozYGkhIzskITFEIVxNNi1aYyQhIzs3JCQiMU1MTEwqenltJyEjOyQhMmEvSTkicCJcViQhIzw3JCQiMUxMTDNOMSM0KCEjOyQhMTE/LUNKek9LISM7NyQkIjFtbTtIWXQ3diEjOyQhMTIkKW8vVT50SCEjOzckJCIpeEcqKnkhIikkITI6XDMvJilHM24jISM8NyQkIjFtbW1UNktVJCkhIzskITIlPlxebFhSX0EhIzw3JCQiMUxMTExiZFEoKSEjOyQhMncjKmZ6RUxEIj0hIzw3JCQiLERPbDU7KiEjNiQhMkxkeTolKT1eRiIhIzw3JCQiLHYuVWFjKiEjNiQhMSpRMShbWzhbcCEjPDckJCIjNSEiIiQiIiEhIiItJSdMRUdFTkRHNiMtJSlfVFlQRVNFVEc2I1EiZjYiLSUqTElORVNUWUxFRzYjIiIiLSUnQ1VSVkVTRzYlN1o3JCQhIzUhIiIkIjEnSERdWSx2KychI0s3JCQhMW5tbTtwMGsmKiEjOyQiMTJWQV9Rd2VtISM8NyQkITFMTCQzPFhaPSohIzskIjIpcCpHOGU+JD03ISM8NyQkITFubW1UJXAiZSgpISM7JCIyUDdJKWYkZlp5IiEjPDckJCExbW1tIjRtKEckKSEjOyQiMjhheWEzIW95QSEjPDckJCExTUwkM2kuOSF6ISM7JCIxRS5gJylSUidvIyEjOzckJCExbm07L1I9MHYhIzskIjFuWT5gZnEhKkghIzs3JCQhLHZMQFw0KCEjNiQiMjtNSV0uSXFCJCEjPDckJCExbm07L3NpcW0hIzskIjInUipmP24vZ1UkISM8NyQkISx2eSRwWmkhIzYkIjJtLSd6USplVWIkISM8NyQkITFubVQmR3UsLichIzskIjInZSVccFZHISlmJCEjPDckJCExTExMJHlhRSJlISM7JCIyMklDJls4IXBpJCEjPDckJCEsdltqNWkmISM2JCIxJnlWbilmIypSTyEjOzckJCExbm1tIj5zJUhhISM7JCIyOy9iJ0dBP1RPISM8NyQkITFMTCQzeCZ5OF8hIzskIjJFZ3pdNTglR08hIzw3JCQhMi8rKytOKjQpKlwhIzwkIjJMckF6cEIvZyQhIzw3JCQhKXRfInklISIpJCIxL3YhKXkmM3FiJCEjOzckJCEqRGJcYyUhIiokIjJOcyZIVURUKVwkISM8NyQkISpsU3Y5JSEiKiQiL1llWm4+V0whIzk3JCQhMW5tOy8jKVtvUCEjOyQiMUBjRFBUZWdKISM7NyQkITJPTExMPWV4SiQhIzwkIjJuX2NyX1thKkchIzw3JCQhMU1MTEwyJGYkSCEjOyQiMjFwInpQImZ1aiMhIzw3JCQhMjArK3ZqdTxcIyEjPCQiMk9GQ2gjM2UwQiEjPDckJCEyVkxMTEJAJyk0IyEjPCQiMnhFaHU9NnUpPiEjPDckJCEyJyoqKipcUCdwc20iISM8JCIyYXpaWkdaW2giISM8NyQkISxEIjRfYzchIzYkIjJkJD5lISkqZSNSNyEjPDckJCExSkxMJDN4JXojKSEjPCQiMSM9b1prZWFHKSEjPDckJCExTUxMM3MkUU0lISM8JCIydi5VWkAjUiVRJSEjPTckJCExXm9tbTt6cikqISM+JCIwXHQpKjM4dSoqKiEjPTckJCIxPExMZXp3NVYhIzwkITBcYHF1TDdOJSEjOzckJCIwKioqKlxQUSNcIikhIzskITF0RFJqZjJlIikhIzw3JCQiMkJMTCRlIipbSDchIzwkITEieiYzNFgpUUAiISM7NyQkIjIkKioqKioqKnB2eGwiISM8JCEycz8hNCI+KFExOyEjPDckJCIxKSoqKipcX3FuMiMhIzskITJ5WC1JIzQ2cD4hIzw3JCQiMiUpKioqXGkmcEBbIyEjPCQhMUZEYG50MSlIIyEjOzckJCIxKSoqKipcMidIS0ghIzskITEuJTRpQnVbaiMhIzs3JCQiMWxtbW1adk9MISM7JCExUngyQXRgMkghIzs3JCQiMicqKioqKipcMmdvUCEjPCQhMWsoPURKVzE7JCEjOzckJCIyQ0xMZVI8KmZUISM8JCExLiJHW2Y+JlxMISM7NyQkIjIoKioqKioqXClIeGUlISM8JCExTjhzRSZ6X10kISM7NyQkIjJZbW0iSCFvLSpcISM8JCExdT0oKmUyNypmJCEjOzckJCIxS0wkM0FfMT8mISM7JCEyTFNqWUdXcmkkISM8NyQkIjEqKioqXDdrLjZhISM7JCExNElaZi1xU08hIzs3JCQiMUtMZTlhcztjISM7JCExdmElSFMmM1NPISM7NyQkIjFtbW07V1RBZSEjOyQhMmQ4JkdZZSNmaSQhIzw3JCQiMUtMZVI8dlBnISM7JCEybStMPy5hbmYkISM8NyQkIjEqKioqXGkhKjNgaSEjOyQhMiZbYEcvUClIYiQhIzw3JCQiMU1MTEwqenltJyEjOyQhMmxYbmUuRXFVJCEjPDckJCIxTExMM04xIzQoISM7JCEyMSRRJzQqel5RSyEjPDckJCIxbW07SFl0N3YhIzskITFlVy9sJ1FiKUghIzs3JCQiKXhHKip5ISIpJCEybSo0S2pPPylvIyEjPDckJCIxbW1tVDZLVSQpISM7JCEyMlooUj9ZT2tBISM8NyQkIjFMTExMYmRRKCkhIzskITJXdSNvIz1qITQ9ISM8NyQkIixET2w1OyohIzYkITEwJEgjUWtaXjchIzs3JCQiLHYuVWFjKiEjNiQhMWUsWzouKXpqJyEjPDckJCIjNSEiIiQhMSdIRF1ZLHYrJyEjSy0lJ0xFR0VOREc2Iy0lKV9UWVBFU0VURzYjUShGb3VyaWVyNiItJSpMSU5FU1RZTEVHNiMiIiMtJSdDVVJWRVNHNiU3WTckJCEjNSEiIiQiMVtLTExMTEwkKSEjPTckJCExbm1tO3AwayYqISM7JCIxTyY0KHl3SSFlKCEjPDckJCExTEwkMzxYWj0qISM7JCIyd0gyNnlIISpHIiEjPDckJCExbm1tVCVwImUoKSEjOyQiMjp3cWMpM0hBPSEjPDckJCExbW1tIjRtKEckKSEjOyQiMkYsUC1OeScqRyMhIzw3JCQhMU1MJDNpLjkheiEjOyQiMSN5JGVBKXlebyMhIzs3JCQhMW5tOy9SPTB2ISM7JCIyO3Z1eFQ7KSopSCEjPDckJCEsdkxAXDQoISM2JCIxb2lLTCdmR0MkISM7NyQkITFubTsvc2lxbSEjOyQiMkxcMio0MSIpUU0hIzw3JCQhLHZ5JHBaaSEjNiQiMk9XbXRuQiJwTiEjPDckJCExbm1UJkd1LC4nISM7JCIxMmYhb14qXDZPISM7NyQkITFMTEwkeWFFImUhIzskIjFhPW1Db2BQTyEjOzckJCEsdltqNWkmISM2JCIxPWc2LCIzc2skISM7NyQkITFubW0iPnMlSGEhIzskIjAuNF04PlprJCEjOjckJCExTEwkM3gmeThfISM7JCIxTCFSSioqKnBGTyEjOzckJCEyLysrK04qNCkqXCEjPCQiMiRILl4hNDdnZiQhIzw3JCQhKkRiXGMlISIqJCIxdjxRMG8iKSpbJCEjOzckJCEqbFN2OSUhIiokIjImcGc4cVNrT0whIzw3JCQhMW5tOy8jKVtvUCEjOyQiMTQ4YjQqNHU6JCEjOzckJCEyT0xMTD1leEokISM8JCIvcjhDSnMpKkchIzk3JCQhMU1MTEwyJGYkSCEjOyQiMnc1WVIrLVhrIyEjPDckJCEyMCsrdmp1PFwjISM8JCIxbV06NXUmSEojISM7NyQkITJWTExMQkAnKTQjISM8JCIyNzxxMkcsOio+ISM8NyQkITInKioqKlxQJ3BzbSIhIzwkIjFtKnlzNUNNaCIhIzs3JCQhLEQiNF9jNyEjNiQiMmBrbjp6SU1CIiEjPDckJCExSkxMJDN4JXojKSEjPCQiMUhsJDRJSUxAKSEjPDckJCExTUxMM3MkUU0lISM8JCIxYzJuLnZGTVYhIzw3JCQhMV5vbW07enIpKiEjPiQiMShcLUlXIXlyKSohIz43JCQiMTxMTGV6dzVWISM8JCExLm8+KClbVSxWISM8NyQkIjAqKioqXFBRI1wiKSEjOyQhMUJQV1tBOyczKSEjPDckJCIyQkxMJGUiKltINyEjPCQhMiopSGV2Q2J5PyIhIzw3JCQiMiQqKioqKioqcHZ4bCIhIzwkITIudj1LRVVbZyIhIzw3JCQiMSkqKioqXF9xbjIjISM7JCEyJVFVRUt2JUgoPiEjPDckJCIyJSkqKipcaSZwQFsjISM8JCEyY0xAYVgqUjBCISM8NyQkIjEpKioqKlwyJ0hLSCEjOyQhMVpgWmEqUT5rIyEjOzckJCIxbG1tbVp2T0whIzskITI5JWVnZkZjNUghIzw3JCQiMicqKioqKipcMmdvUCEjPCQhMWhXdilcb3U6JCEjOzckJCIyQ0xMZVI8KmZUISM8JCExRyYpKSpII3A9TSQhIzs3JCQiMigqKioqKipcKUh4ZSUhIzwkITIwJClRLGdyblwkISM8NyQkIjJZbW0iSCFvLSpcISM8JCExIkdAcyY0ZiVmJCEjOzckJCIxS0wkM0FfMT8mISM7JCEwYjZ6bCY9RU8hIzo3JCQiMSoqKipcN2suNmEhIzskITA5UFYpeiVRayQhIzo3JCQiMUtMZTlhcztjISM7JCExSywyPmBHWk8hIzs3JCQiMW1tbTtXVEFlISM7JCEyJXpgLTdTck9PISM8NyQkIjFLTGVSPHZQZyEjOyQhMXYmPiopKSkqSDVPISM7NyQkIjEqKioqXGkhKjNgaSEjOyQhMVpsMi5BJ3ljJCEjOzckJCIxTUxMTCp6eW0nISM7JCExIyozTDlZJylSTSEjOzckJCIxTExMM04xIzQoISM7JCEyTG4oPWU7U1dLISM8NyQkIjFtbTtIWXQ3diEjOyQhMmRiTT9lbVgpSCEjPDckJCIpeEcqKnkhIikkITFwUCF6JlIncG8jISM7NyQkIjFtbW1UNktVJCkhIzskITIpPScpNE1iKmZGIyEjPDckJCIxTExMTGJkUSgpISM7JCExTEBOejA5WD0hIzs3JCQiLERPbDU7KiEjNiQhMldXNFsqcFQ/OCEjPDckJCIsdi5VYWMqISM2JCExXjxkI1xeKmZ2ISM8NyQkIiM1ISIiJCExW0tMTExMTCQpISM9LSUnTEVHRU5ERzYjLSUpX1RZUEVTRVRHNiNRJ1RheWxvcjYiLSUqTElORVNUWUxFRzYjIiIkLSUnQ1VSVkVTRzYlN1k3JCQhIzUhIiIkIjJDZisrK1NKIUchIz83JCQhMW5tbTtwMGsmKiEjOyQiMWlgUnpqQXJwISM8NyQkITFMTCQzPFhaPSohIzskIjI8eV09PmA/QyIhIzw3JCQhMW5tbVQlcCJlKCkhIzskIjFQPTghPXN6eSIhIzs3JCQhMW1tbSI0bShHJCkhIzskIjIlR1k+dylcYEUjISM8NyQkITFNTCQzaS45IXohIzskIjInSChwdkspW29FISM8NyQkITFubTsvUj0wdiEjOyQiMnhyeSg0U1x5SCEjPDckJCEsdkxAXDQoISM2JCIyRGlFbjppY0IkISM8NyQkITFubTsvc2lxbSEjOyQiMThjd1JFak1NISM7NyQkISx2eSRwWmkhIzYkIjEpPUZ1a2JwYyQhIzs3JCQhMW5tVCZHdSwuJyEjOyQiMSw4QzBFMDVPISM7NyQkITFMTEwkeWFFImUhIzskIjElKXl4XWVqT08hIzs3JCQhLHZbajVpJiEjNiQiMlAkemJbS21ZTyEjPDckJCExbm1tIj5zJUhhISM7JCIyQklEXVVJV2skISM8NyQkITFMTCQzeCZ5OF8hIzskIjJXIz4uIVspZkZPISM8NyQkITIvKysrTio0KSpcISM8JCIxSDttWiM0Z2YkISM7NyQkISpEYlxjJSEiKiQiMWInKXBqUCIpKlskISM7NyQkISpsU3Y5JSEiKiQiMT0nKiopPT1bT0whIzs3JCQhMW5tOy8jKVtvUCEjOyQiMT1pcUs2L2RKISM7NyQkITJPTExMPWV4SiQhIzwkIjJFV2RxKT41KSpHISM8NyQkITFNTExMMiRmJEghIzskIjE0NyFvOS5QayMhIzs3JCQhMjArK3ZqdTxcIyEjPCQiMD5qI3luLTdCISM6NyQkITJWTExMQkAnKTQjISM8JCIyPE9bJVtsYCEqPiEjPDckJCEyJyoqKipcUCdwc20iISM8JCIyZCE0ZyZvOkRoIiEjPDckJCEsRCI0X2M3ISM2JCIyc3JuKnk3bUs3ISM8NyQkITFKTEwkM3gleiMpISM8JCIxTmZxQ0YjeT8pISM8NyQkITFNTEwzcyRRTSUhIzwkIjFGKltxTWM3TCUhIzw3JCQhMV5vbW07enIpKiEjPiQiMSQqbyUqNCQqemspKiEjPjckJCIxPExMZXp3NVYhIzwkITFEN21wZlUpSCUhIzw3JCQiMCoqKipcUFEjXCIpISM7JCExPVhdKHlJMjMpISM8NyQkIjJCTEwkZSIqW0g3ISM8JCEyNiJRXypcKDQyNyEjPDckJCIyJCoqKioqKipwdnhsIiEjPCQhMndvKVJgaCRSZyIhIzw3JCQiMSkqKioqXF9xbjIjISM7JCEyMkZoZEkkKT4oPiEjPDckJCIyJSkqKipcaSZwQFsjISM8JCExJWVuI0dxWS9CISM7NyQkIjEpKioqKlwyJ0hLSCEjOyQhMSRSQyhlJ1E2ayMhIzs3JCQiMWxtbW1adk9MISM7JCExJGUjKT1pXio0SCEjOzckJCIyJyoqKioqKlwyZ29QISM8JCEyQlMhWyd5KjRkSiEjPDckJCIyQ0xMZVI8KmZUISM8JCExZCRbcjE4PE0kISM7NyQkIjIoKioqKioqXClIeGUlISM8JCEyWEo1eW10blwkISM8NyQkIjJZbW0iSCFvLSpcISM8JCEya2lUNkUhZiVmJCEjPDckJCIxS0wkM0FfMT8mISM7JCEyYC5WeVwjNEVPISM8NyQkIjEqKioqXDdrLjZhISM7JCExay0jZj96TmskISM7NyQkIjFLTGU5YXM7YyEjOyQhMTlOODl0dVlPISM7NyQkIjFtbW07V1RBZSEjOyQhMWZOSUs+ek5PISM7NyQkIjFLTGVSPHZQZyEjOyQhMTRKNmM0JCkzTyEjOzckJCIxKioqKlxpISozYGkhIzskITI5REZyI1FubE4hIzw3JCQiMU1MTEwqenltJyEjOyQhMnYnKVFYbC1kViQhIzw3JCQiMUxMTDNOMSM0KCEjOyQhMVlCcl0lR3NCJCEjOzckJCIxbW07SFl0N3YhIzskITEtKVwjXGE6dEghIzs3JCQiKXhHKip5ISIpJCEwYVtsQTEubiMhIzo3JCQiMW1tbVQ2S1UkKSEjOyQhMUdVLWwkKlFeQSEjOzckJCIxTExMTGJkUSgpISM7JCEyYjojKVFNTTgiPSEjPDckJCIsRE9sNTsqISM2JCEyJEdcIT1XQVVGIiEjPDckJCIsdi5VYWMqISM2JCExeXpvKmY1LiZwISM8NyQkIiM1ISIiJCEyQ2YrKytTSiFHISM/LSUnTEVHRU5ERzYjLSUpX1RZUEVTRVRHNiNRKUxlZ2VuZHJlNiItJSpMSU5FU1RZTEVHNiMiIiUtJSVWSUVXRzYkOyQhIzUhIiIkIiM1ISIiJShERUZBVUxURy0lK0FYRVNMQUJFTFNHNictSSNtaUc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkc2IjY1USJ4NiIvJSdmYW1pbHlHUSE2Ii8lJXNpemVHUSMxMDYiLyUlYm9sZEdRJmZhbHNlNiIvJSdpdGFsaWNHUSV0cnVlNiIvJSp1bmRlcmxpbmVHUSZmYWxzZTYiLyUqc3Vic2NyaXB0R1EmZmFsc2U2Ii8lLHN1cGVyc2NyaXB0R1EmZmFsc2U2Ii8lK2ZvcmVncm91bmRHUShbMCwwLDBdNiIvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XTYiLyUnb3BhcXVlR1EmZmFsc2U2Ii8lK2V4ZWN1dGFibGVHUSZmYWxzZTYiLyUpcmVhZG9ubHlHUSZmYWxzZTYiLyUpY29tcG9zZWRHUSZmYWxzZTYiLyUqY29udmVydGVkR1EmZmFsc2U2Ii8lK2ltc2VsZWN0ZWRHUSZmYWxzZTYiLyUscGxhY2Vob2xkZXJHUSZmYWxzZTYiLyU2c2VsZWN0aW9uLXBsYWNlaG9sZGVyR1EmZmFsc2U2Ii8lLG1hdGh2YXJpYW50R1EnaXRhbGljNiJRITYiLSUlRk9OVEc2JSUoREVGQVVMVEclKERFRkFVTFRHIiM1JStIT1JJWk9OVEFMRyUrSE9SSVpPTlRBTEctJSZDT0xPUkc2JiUkUkdCRyQiIiEhIiIkIiIhISIiJCIiISEiIi0lJVJPT1RHNictJSlCT1VORFNfWEc2IyQiJFMiISIiLSUpQk9VTkRTX1lHNiMkIiNdISIiLSUtQk9VTkRTX1dJRFRIRzYjJCIlIXkkISIiLSUuQk9VTkRTX0hFSUdIVEc2IyQiJUlPISIiLSUpQ0hJTERSRU5HNiI=