diff options
| author | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
|---|---|---|
| committer | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
| commit | 7dfcc480ba1e19bd3232349fc733caef94034292 (patch) | |
| tree | 03ee104eb8846d5cc1a981d267687a729185d3f3 /doc/IGE332 | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'doc/IGE332')
| -rw-r--r-- | doc/IGE332/64_bit.eps | 2222 | ||||
| -rw-r--r-- | doc/IGE332/Bibliography.tex | 34 | ||||
| -rw-r--r-- | doc/IGE332/GuideBW.sty | 211 | ||||
| -rw-r--r-- | doc/IGE332/GuideCOL.sty | 199 | ||||
| -rw-r--r-- | doc/IGE332/IGE332.tex | 36 | ||||
| -rw-r--r-- | doc/IGE332/IGNrapport.sty | 574 | ||||
| -rw-r--r-- | doc/IGE332/chapter1.tex | 7412 | ||||
| -rw-r--r-- | doc/IGE332/cle2000_hierarchy_uml.eps | bin | 0 -> 469818 bytes | |||
| -rwxr-xr-x | doc/IGE332/install | 45 | ||||
| -rw-r--r-- | doc/IGE332/multiphysics.eps | 5487 | ||||
| -rw-r--r-- | doc/IGE332/vect.eps | 4962 |
11 files changed, 21182 insertions, 0 deletions
diff --git a/doc/IGE332/64_bit.eps b/doc/IGE332/64_bit.eps new file mode 100644 index 0000000..ebb7519 --- /dev/null +++ b/doc/IGE332/64_bit.eps @@ -0,0 +1,2222 @@ +%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Photoshop Version 12.0.4x20110407 [20110407.r.1265 2011/04/07:02:00:00 cutoff; r branch]
%%Title: 64_bit.eps
%%CreationDate: 23/08/12 2:35 PM
%%BoundingBox: 0 0 150 177
%%HiResBoundingBox: 0 0 150 177
%%SuppressDotGainCompensation
%ADO_ContainsXMP: MainFirst
%%EndComments
%%BeginProlog
%%EndProlog
%%BeginSetup
%%EndSetup
%ImageData: 150 177 8 3 1 150 7 "beginimage"
%BeginPhotoshop: 7374
% 3842494D040400000000000F1C015A00031B25471C020000025020003842494D
% 0425000000000010A866478363733C6B3DB87AF64C49D7213842494D043A0000
% 00000093000000100000000100000000000B7072696E744F7574707574000000
% 0500000000436C7253656E756D00000000436C72530000000052474243000000
% 00496E7465656E756D00000000496E746500000000436C726D000000004D7042
% 6C626F6F6C010000000F7072696E745369787465656E426974626F6F6C000000
% 000B7072696E7465724E616D6554455854000000010000003842494D043B0000
% 000001B200000010000000010000000000127072696E744F75747075744F7074
% 696F6E7300000012000000004370746E626F6F6C0000000000436C6272626F6F
% 6C00000000005267734D626F6F6C000000000043726E43626F6F6C0000000000
% 436E7443626F6F6C00000000004C626C73626F6F6C00000000004E677476626F
% 6F6C0000000000456D6C44626F6F6C0000000000496E7472626F6F6C00000000
% 0042636B674F626A630000000100000000000052474243000000030000000052
% 642020646F7562406FE000000000000000000047726E20646F7562406FE00000
% 00000000000000426C2020646F7562406FE00000000000000000004272645455
% 6E744623526C74000000000000000000000000426C6420556E744623526C7400
% 000000000000000000000052736C74556E74462350786C405200000000000000
% 00000A766563746F7244617461626F6F6C010000000050675073656E756D0000
% 0000506750730000000050675043000000004C656674556E744623526C740000
% 00000000000000000000546F7020556E744623526C7400000000000000000000
% 000053636C20556E74462350726340590000000000003842494D03ED00000000
% 0010004800000001000200480000000100023842494D042600000000000E0000
% 00000000000000003F8000003842494D040D0000000000040000001E3842494D
% 04190000000000040000001E3842494D03F30000000000090000000000000000
% 01003842494D271000000000000A000100000000000000023842494D03F50000
% 00000048002F66660001006C66660006000000000001002F6666000100A1999A
% 0006000000000001003200000001005A00000006000000000001003500000001
% 002D000000060000000000013842494D03F80000000000700000FFFFFFFFFFFF
% FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFF
% FFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
% FFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
% FFFFFFFF03E800003842494D0408000000000010000000010000024000000240
% 000000003842494D041E000000000004000000003842494D041A00000000035B
% 000000060000000000000000000000B10000009600000013006100700070006C
% 0065005F00360034005F006200690074005F0073006800690065006C00640000
% 0001000000000000000000000000000000000000000100000000000000000000
% 0096000000B10000000000000000000000000000000001000000000000000000
% 0000000000000000000010000000010000000000006E756C6C00000002000000
% 06626F756E64734F626A63000000010000000000005263743100000004000000
% 00546F70206C6F6E6700000000000000004C6566746C6F6E6700000000000000
% 0042746F6D6C6F6E67000000B100000000526768746C6F6E6700000096000000
% 06736C69636573566C4C73000000014F626A6300000001000000000005736C69
% 63650000001200000007736C69636549446C6F6E67000000000000000767726F
% 757049446C6F6E6700000000000000066F726967696E656E756D0000000C4553
% 6C6963654F726967696E0000000D6175746F47656E6572617465640000000054
% 797065656E756D0000000A45536C6963655479706500000000496D6720000000
% 06626F756E64734F626A63000000010000000000005263743100000004000000
% 00546F70206C6F6E6700000000000000004C6566746C6F6E6700000000000000
% 0042746F6D6C6F6E67000000B100000000526768746C6F6E6700000096000000
% 0375726C54455854000000010000000000006E756C6C54455854000000010000
% 000000004D7367655445585400000001000000000006616C7454616754455854
% 0000000100000000000E63656C6C54657874497348544D4C626F6F6C01000000
% 0863656C6C546578745445585400000001000000000009686F727A416C69676E
% 656E756D0000000F45536C696365486F727A416C69676E000000076465666175
% 6C740000000976657274416C69676E656E756D0000000F45536C696365566572
% 74416C69676E0000000764656661756C740000000B6267436F6C6F7254797065
% 656E756D0000001145536C6963654247436F6C6F7254797065000000004E6F6E
% 6500000009746F704F75747365746C6F6E67000000000000000A6C6566744F75
% 747365746C6F6E67000000000000000C626F74746F6D4F75747365746C6F6E67
% 000000000000000B72696768744F75747365746C6F6E6700000000003842494D
% 042800000000000C000000023FF00000000000003842494D0414000000000004
% 000000013842494D040C00000000131E0000000100000088000000A000000198
% 0000FF000000130200180001FFD8FFED000C41646F62655F434D0001FFEE000E
% 41646F626500648000000001FFDB0084000C08080809080C09090C110B0A0B11
% 150F0C0C0F1518131315131318110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C
% 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C010D0B0B0D0E0D100E0E10140E0E0E
% 14140E0E0E0E14110C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C
% 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFFC000110800A000880301220002
% 1101031101FFDD00040009FFC4013F0000010501010101010100000000000000
% 030001020405060708090A0B0100010501010101010100000000000000010002
% 030405060708090A0B1000010401030204020507060805030C33010002110304
% 211231054151611322718132061491A1B14223241552C16233347282D1430725
% 9253F0E1F163733516A2B283264493546445C2A3743617D255E265F2B384C3D3
% 75E3F3462794A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F637
% 475767778797A7B7C7D7E7F71100020201020404030405060707060535010002
% 1103213112044151617122130532819114A1B14223C152D1F0332462E1728292
% 435315637334F1250616A2B283072635C2D2449354A317644555367465E2F2B3
% 84C3D375E3F34694A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6
% F62737475767778797A7B7C7FFDA000C03010002110311003F00F55492492529
% 314E989494B4A705711D4BEB4DF7673DF8573AAC6AC965458747C7D2B4833BF7
% 3BF9B51AFEB7F556686C6583F96C93FF0041D5A8BDE85D3707C3B31883A6A2F8
% 4F47B994A5715FF3D7A97EE63FC763FF00F4AA0D9F5B7AAD823D66D7FF0016C0
% 3FEAFD44BDE8287C3B3F87DAF77296ABCF075ECF0FDE32ADDDE3B89FFA27D9FF
% 004559AFEB7754673632C1E0F60FFD166B48678AE3F0DCC3620FE0F7494AE2BF
% E7AF5288D947C763FF00F4AA159F5BBAAD9316B2BFEA307FDFCD897BD0F15BFE
% 8ECFE1F6BDD4A4B8DE87F59AD6E7B29CCB5D653944303DE676BCFF0034EFE436
% C77E8DFF00D85D8829F09890B0C19F04F0CB865D4583DD924993A73129249249
% 4FFFD0F5549249252CB9EFAEDD6074EE8CEAD96065F9A7D0AC92010D23F58B1B
% AB5DEDAFF47BFF0032DB6A5D0AE73AFF00556D39ADC6F428BC57587137B3790E
% 793A3351F9AD625C1298318E848DD7E29C61923398E28C4D98F77CE865540001
% EC11A000B784BED757FA46FF009C3FBD767FB659FF0070B0BFED9FFCCD3FED96
% FF00DC2C2FFB67FF0033517FA3F2FEF0753FD358BFCD1FB5E2FED75FFA46FF00
% 9C3FBD2FB5D7FE91BFE70FFC92ECBF6E553030F0891D8533FF0052E7297ED968
% D0E0E183CC1A20FE2E4BEE197F782BFD358BFCD4BED78BFB5D7FE91BFE70FF00
% C925F6BAFF00D237FCE1FF00925D9FED967FDC2C2FFB67FF00334BF6CB3FEE16
% 17FDB3FF0099A5FE8FCBFBC15FE9AC5FE6A5FE33C67DAEBFF48DFF00387F7A5F
% 6BABFD237FCE1FDEBB3FDB2DFF00B8587FF6C8FF00C9A6FDBB4FFDC4C1F0FE64
% 73FE7A5FE8FCBFBC15FE9AC5FE6A5F6BC61CAA9C0B4D8D83CC3877F0D57A8FD5
% 6EAC3AB746A320B83AEAE69C8833FA4AF4DDFF005DAFD3BFFEB8B0875A611230
% B0BCCFA3FF00992D7FABBD4C64DD7638A69A21A2D02966C04CFA76178977FC1A
% 7C395C98AE44822B56B737CFE2E660223198CA26C4AFFC6778274C9D39A2A492
% 49253FFFD1F5549249252DD979D7D63CC9EBD9BAFD073183FB2C67FE497A295E
% 51F5A9CFABEB375166B3BD8E006BA3ABADDC2B1CA0B99F259936FAB265F658F6
% D55B5D6596383595B44B9CE3C35ABB0E95F546A6B05BD54FAF69D7ECCD3FA26F
% 93DC3DD7BFFF000259BFE2F7A58B2BB7ADDED9739CEA30C1ECC6E9917B7F9575
% 9FA3DFFE8EBFE5AD0FAC9D53AF597FEC9FAB98EFB2F0272F306D0DA411ECA596
% 5FB69FB4BDBFA47FFA1AFF00C17E913F2CC99FB70355F34B644469C47EC778FE
% CFE9F589F4712B1A09DB5B7F82E23EB4F51C7BFAC17E35CCBEAF42B1BEB707B6
% 66DDC3730B966DDF53FEB5B9CEBEDC21916BB573DD7B2CB4FF006B21DFFA3563
% DE6FC5B8E364D4FC7BD825D55AD2C701C6FDAEFA4C77FA467E8D3B0E188958C8
% 266BA22523DA9D4FB579A5F6BF3593F68330AEF46E9D99D6F3DB8589EC006EC8
% C8225B4D7C6F3FBD6D9EE6D15FE7FF00D6D4F28800C8E800D56024BB7D07A6DD
% D6B24B64B30E923ED370D3B4FD9EAFF867FE7BBFC155FF005B5DFB31B1EB636B
% 654D6B1A035AD8100010D0B2F2B27A57D54E88081B31E81B29A819B2DB1DEED9
% FCBBEF77BEC7FF00D7143EA8F50CBEA7D1599F98F0EBAFB6E710DFA2D02C7319
% 557FC8AD8DF4FDCA8E53298331A401E10CD1A1A75793EBB9019D6F39A340DBA0
% 0F0F657C2B5F5472C9EBB5B01FE72AB1A7E41AF1FF0052B0FEB25E47D63EA43C
% 3223FE856AE7D477B9FF0059691C6CA6E799F835BFF7E56A51FD45FF00501FF9
% AC60FAFEAFA7274C9D67B3292492494FFFD2F5549249252CBC7BFC6AE0BB1FEB
% 2B730021B998CD7EFD47BE9DD53B5FE4B3D15EC2B8DFF1A1D1BEDFD03EDB509B
% BA6B8DA48D4FA2F1E96547F51BE9DFFF00A0EA6E567C3963D8FA7ED59905C4FD
% AEC7D53C6189F563A550358C5A9E7FAD637D57FF00D37ACCEBFF00E317A2745C
% C7F4FD9766655302D6D01BB2B244FA6FBAC735BEA6DFDCDEAF7D4FCF6E67D59E
% 9973752CA1B4BDA3B3E9FD058DFF00A0BCB3EB7747CEE9BD6B3ACCBA9EDC7BF2
% 2DBE9CA826BB1B73DD6B7F4DF43D56EFD9656E4FC38A13CB28CCD55E9FBD2B44
% E6444102F67BCE9BFE34FA0E664B31F2A9BF03D53B5B75BB5D5027DADF51F5BB
% F46D73BF3DCCF4FF007D6DFD67E87575BE956E3C06E5D4D36615D12EAED03DB1
% FF00076EDD96B3FD1AF17E9DD273BAC5E313A6D0EC9B2DF617301F4DA0E86CBE
% E8D95D6C5EEE2CAF0F1B7DAF9AF1AADD65AE3CB6B6FBEC71FECA3CC638E29C4E
% 326FB5AB1C8C81E20F86F4A6758EAF9B4E060D6C7E45E6002D2D6B00FE76DB9F
% F995D7F9FF00F43F48BD83A76174AFAA3D09C6DB629A5BEAE6E596FBACB206EB
% 76337FE77B28C767F375FB179CFF008BBEA581D3FEB05F9B9D733131EEC5B807
% DA76B773EDA6D6D7FD6DABD187D71FAAE351D5B167FAFF00EC4FE6CCCC84003C
% 2003A77FEF23155137AD97CAFEB27D65EAFD7BA91CA355B4E3D5B9B878FE9B8F
% A6C3CB9DED735D9177F8677FD697A47F8B9377FCD0C3F583859BAF90E041FE75
% F1ED70573FE797D58FFCB6C6FF00B7168E267E267E3B72B0EE664E3D92196B0C
% B4969D8F8FEA3BE928B2E5271887B7C110745D1881226EC97C63EB9B727FE747
% 56745BE98C8264078646D609DCD1B5741FE287037754EA19E447A34B31C13AC9
% B5DEABFF00CD6637FD35D37D73FAC1D18743EADD38E7D233450FACE36FF7EF89
% D9B3F7959FF17DD19FD2BEAE502E69664659395734F20D800AAB8FCDF4B19953
% 36FF00A4F51492CE4F2F4456D01E23F79688564BBEE5E953A64EA9B2A9249249
% 4FFFD3F5549249252942CAD9631CC7B4398F05AE69D4104439AEFEB29A63C24A
% 7CC28CBCBFA83D72FE9AFADF93D1B28FAF4B1BF4F67F37EA51BFD8FC9A1BFAB6
% 4D4F77E9FF004372EBF0BEB7FD5BCB60751D4A961235AEF3E8BC1FE55776D567
% EB27D5FC6EBDD38E35DECB987D4C7BC0935D8046EFE556EFA36D7F9F5FF2D793
% 6774CCAC1CA7E16755B322AE587DCD2D3F46EA5C7F9CA5DF9AFF00EC59FA4573
% 1C31F302C9E1CA07AABF4BFACD7C939E2D87140EDFD57D4B2FEB67D5CC56937F
% 53C7207E6D6FF55C7FEB5487EE5C3FD6CFAEAFEB341E9BD3AB7D1D3DE7F4F6D9
% EDB6F00E95EC1FCC62FEFF00BBD7BFE87E8BF49EA73E296B7E8B601F0F2F825E
% 94A9F1F298E1212D64477619F35290A143C9A86B2791252F48F8056FD2F24BD2
% F2566CB0F1353D2FE4AF44FA99F587A174EFAB78D879B9F4E3E456EB8BEAB0C3
% 80758F7B776D1F9CD5C37A5E4ADF4BE8F99D5735B8584C9B0805F61FA15338F5
% AD70FA3FC867F857FD0516784670A9CB8444F15B261C8632F48B274A7630BA2D
% 1F59FEBC676430B6FE934DE322FB46ACB06D67A18EDD3FC3D8CFD27FC0D6BD48
% 0FF6AA1D0FA2E2F45C066162C96B49759618DD658EFE72EB23F3DFFF0042BFD1
% AD159B9B271C857CB01C30BEC1BD08F08D773A95827492512E524924929FFFD4
% F5549249252932749252CB33AE7D5FE9FD6B185396D21ECD69BD9A5959F1ADFF
% 00CAFCFADDFA35A898A20989B0688EA8201144582F93F58FAB3D4BA3BCBAFAFD
% 6C69D332A07647FC357EE7D0FF00FC0FF72D5982B0469047622217B5168235F8
% 2C3EA1F537A266973DB59C4B9DAFA941D9AF89AF5A7FF035731F3BD320FF000A
% 3FC1A793933BE33FE0CBFEF9F32F4BFD898D6D6B4B9C600E4E807DEBB71FE2F1
% DEA90ECF229F16D403FF00CE2E755FF80ADAE9DF54BA26039B6B69F5EF6F16DE
% 7D423FA81DFA367F658A59739880D2E5E43FEF98E3CAE5275A8F99BFFA2F0BD1
% BEA9F53EAC459B4E2621FF00B51637DCE1DFECF49873F77FA57FA547FC67D05E
% 8BD23A2E0748C518D855EC6FD27B89DCE7BBFD2DB67D27BFFD58AF000292A597
% 3CF26FA47F743731618E3DB597591593A49289954924924A524924929FFFD5F5
% 54924925292492494A4C9D41C4F01252CFB0334E4F820BACB5DC1DA3C07289E9
% A5E9A70A41B6BED78D64CF8C94465B63743EE1E68BE984BD34AC228B26BDAEE3
% 43E05490BD3F0EC8809E0FDE82E649264E8294924924A524924929FFD6F55492
% 49252CAAE7F53E9FD328FB4750C9AF169E37DAF0C04FEEB777D37FF25A9753EA
% 1474CE9D93D47227D1C4ADD6BC0E4860DDB5BFCA7FD15E4BD36AC0FACD92FF00
% AD5F5F33DB8D8163DD5F4EC02F757BDAC23D4F41ADFD2FD928FE6BF56FD25D93
% BFD5B6BD9FA74A7D33A3FD6EFABDD6F32CC2E9596326FA59EAD81AD7801B2192
% 2CB18D63BDCE6FD15B0B07EAC53F534D66FF00AB55E1FE8DBE9596E335BEA869
% F76CC8B63ED1EFD9BBF4DFB88BF5B7EB2637D5BE897752B807D83F478D4FFA4B
% 9C3F46CFCDF67F84B7FE0589290F59FAF5F55BA1E6BB07A8E68AB29AD0F754C6
% 3EC2D0ED582CF459636B7B9BEFD8FF00F07EFF00CF5BE17CF3F59FA467E374EE
% 9DD6BAABDCFEA7D79F7E4DDBE016D6DF47ECFED6FB5BEAFACFB767F83AFD0ABF
% 45B17D0C92945723D3FEBCDD99F5D323EAB9C26B1B8E6C1F6AF5492456DDEDFD
% 0FA4DFA53FE9575CBC72BEB5D3FA17F8D1EAFD4FA83CB28A3D7F6B46E7BDC5AC
% 6D74D4DFF4963BF7FD9FE93624A7D8FB2CEEBDD6717A1749C8EAD961CFA71834
% B9B589712F736AADAD98FA5658C5C63BFC6E8C6CC657D53A1E5E061DA49AF21E
% 7F485A23DEDC6B2AA5AEFA5FA4F4F21FB1755D6BACF4D6FD58C8EB02A6752E9E
% 68F57D2D0B2DADD0DDAEF5039BDFDFB989296FAA7F5A313EB474B3D4716AB281
% 5DAEA6DAAC8243DAD659ED737E93365AC5B72263BF82E23A3FD71C3AFEA77ED7
% E91D10D74D592319BD3B188DC4B8D7BED6FA357B9FFA4FCEAFF48B82FA91F5C3
% 3BA3E7F52CE760E4757BF258DDDB5EE7399B5CE77E9ECD973B6FBBF71253EEA9
% 21D161B6965BB4B37B5AEDA7912376D44494A49249253FFFD7F5549249253C9F
% F8D17387D46EA50489F4018F037D12B0BFC5D7D48FABD9BF56F1BAAF52C76E7E
% 4E50B0345AE71654C6D8FADB4D55EED8DF757EA6FF00E737D8F5DE757E998FD5
% BA66574DC9914E5D6EADE46A448F6D8C9FCFADDEF62F36E8F95F5EBEA27ABD21
% FD22DEB7D3B7B9F8B6E3EF701275D96535E47A2CB1DEFF00B3DB5FF39BD2534E
% EC167D4CFF001A3D3F1BA41733133DD4B0D25C481564BFECD6D2F713BEC6D763
% 3D7ABD5FDCA957FAD3F5ABA6751FAF47F6F5773FA3744B6CA6AC3A58D79B6CAD
% DB2D75BEADB557E9DF757FA4FF00BAF55547A7F4ED5D07D58FAB7F583AFF00D6
% 86FD6EFAD18DF646D30EC2C370DAEDCCF6D134BE6DAABC777E9BF4BB2D7DFB2C
% FE6D7A19C4C4249345649249F637524CB8F1F9C929F10FF18FF5CFA5FD6B774F
% 774EAAFABEC62E167DA1AC6CFA9E8ECD9E95B77FA27AF431F5CFAC75DE90CEA5
% F52FA77DA8B325D8F935669656406D6CB7D4AF6E5319F4AEAFFC27F61617F8E1
% E8B9F98FE923A5E05B902B6E47ABF66A5CF89346CF53D163BC1DB772F4DAEAAA
% B691531B58264868035E3B24A793E87D53FC6364755A2AEB5D1B1B13A73B77AF
% 915D8D739B0D73ABDAD6E5DDF4AD0C67F36B91E95878F97FE38F305F58B1B45B
% 75EC6B8070DEC60F49E4387F837BBD4AFF00E1762F5CF25E417F46FADA3EBFF5
% 5EB3D1B12D6DB8763EFA0DF539B4E436598F76332EB3654FF569B2C7D7EFFA0C
% FD0FE91253DEFF008C0C0C5CFF00A9FD49B921A7D0A5D934BDD04B6CA87A95BA
% B71FA0E7FF0033FF00176FA6B88FABB7DD6FF89DEAECB092CC77DD5D40F669F4
% 2FD3FEBB75A89D77AD7D7CFADF8ADE858BF57EFE9755E47DAEDBC3C35CD696D9
% B7D7BEAC665156E1BDEC6FA975BFCDB3F72CE8B3FEAC1E8DFE2E32FA1E0B5F99
% 902825DE9B0B9F6DAF7B5F63995B3DDFC9AFFE0AB49487FC4E49FAA2E3FF0076
% EDFF00A9A9607F89727F6B75A1C4B19A7F6EC5D2FF008A8C2CDC0FAACEA33B1E
% DC5BBED563BD3B98EADD05B543B6581AEDAB90E978BF5B7EA17D63CFFB2F47BF
% AAE2648736B752C7963DBB9CFC6B7D5A5991E9D8DFF0943FFF0052A4A7D88274
% 3A1EE7D4C7BDBB1CE682E6781224B7FB2889294924924A7FFFD0F55492492529
% 3479A749252D0914E924A59209D2494B109A1492494B42509D2494B26D614924
% 94B00427492494A49249253FFFD93842494D0421000000000055000000010100
% 00000F00410064006F00620065002000500068006F0074006F00730068006F00
% 700000001300410064006F00620065002000500068006F0074006F0073006800
% 6F0070002000430053003500000001003842494D042200000000017E4D4D002A
% 00000008000C010000030000000100960000010100030000000100B100000102
% 0003000000030000009E01060003000000010002000001120003000000010001
% 0000011500030000000100030000011A000500000001000000A4011B00050000
% 0001000000AC012800030000000100020000013100020000001E000000B40132
% 000200000014000000D28769000400000001000000E800000120000800080008
% 000AFC8000002710000AFC800000271041646F62652050686F746F73686F7020
% 435335204D6163696E746F736800323031323A30383A32332031343A33353A31
% 310000000004900000070000000430323231A001000300000001FFFF0000A002
% 00040000000100000096A003000400000001000000B100000000000000060103
% 00030000000100060000011A0005000000010000016E011B0005000000010000
% 017601280003000000010002000002010004000000010000017E020200040000
% 00010000000000000000000000480000000100000048000000013842494D03FD
% 0000000000080201000000000000
%EndPhotoshop
%%BeginICCProfile: (Photoshop Profile) -1 Hex
% 000007A86170706C022000006D6E74725247422058595A2007D900020019000B
% 001A000B616373704150504C000000006170706C000000000000000000000000
% 000000000000F6D6000100000000D32D6170706C000000000000000000000000
% 0000000000000000000000000000000000000000000000000000000000000000
% 0000000B64657363000001080000006F6473636D000001780000056C63707274
% 000006E400000038777470740000071C000000147258595A0000073000000014
% 6758595A00000744000000146258595A0000075800000014725452430000076C
% 0000000E636861640000077C0000002C625452430000076C0000000E67545243
% 0000076C0000000E64657363000000000000001447656E657269632052474220
% 50726F66696C6500000000000000000000001447656E65726963205247422050
% 726F66696C650000000000000000000000000000000000000000000000000000
% 0000000000000000000000000000000000000000000000006D6C756300000000
% 0000001E0000000C736B534B00000028000001786872485200000028000001A0
% 6361455300000024000001C87074425200000026000001EC756B55410000002A
% 0000021266724655000000280000023C7A685457000000160000026469744954
% 000000280000027A6E624E4F00000026000002A26B6F4B5200000016000002C8
% 6373435A00000022000002DE6865494C0000001E00000300646544450000002C
% 0000031E68754855000000280000034A7376534500000026000002A27A68434E
% 00000016000003726A614A500000001A00000388726F524F00000024000003A2
% 656C475200000022000003C67074504F00000026000003E86E6C4E4C00000028
% 0000040E6573455300000026000003E874685448000000240000043674725452
% 000000220000045A66694649000000280000047C706C504C0000002C000004A4
% 7275525500000022000004D06172454700000026000004F2656E555300000026
% 000005186461444B0000002E0000053E005601610065006F006200650063006E
% 00FD0020005200470042002000700072006F00660069006C00470065006E0065
% 00720069010D006B00690020005200470042002000700072006F00660069006C
% 00500065007200660069006C0020005200470042002000670065006E00E80072
% 0069006300500065007200660069006C0020005200470042002000470065006E
% 00E9007200690063006F0417043004330430043B044C043D043804390020043F
% 0440043E044404300439043B002000520047004200500072006F00660069006C
% 0020006700E9006E00E9007200690071007500650020005200560042901A7528
% 0020005200470042002082725F6963CF8FF000500072006F00660069006C006F
% 0020005200470042002000670065006E0065007200690063006F00470065006E
% 0065007200690073006B0020005200470042002D00700072006F00660069006C
% C77CBC1800200052004700420020D504B85CD30CC77C004F006200650063006E
% 00FD0020005200470042002000700072006F00660069006C05E405E805D505E4
% 05D905DC0020005200470042002005DB05DC05DC05D90041006C006C00670065
% 006D00650069006E006500730020005200470042002D00500072006F00660069
% 006C00C1006C00740061006C00E1006E006F0073002000520047004200200070
% 0072006F00660069006C666E901A0020005200470042002063CF8FF065874EF6
% 4E00822C0020005200470042002030D730ED30D530A130A430EB00500072006F
% 00660069006C0020005200470042002000670065006E00650072006900630393
% 03B503BD03B903BA03CC002003C003C103BF03C603AF03BB0020005200470042
% 00500065007200660069006C0020005200470042002000670065006E00E90072
% 00690063006F0041006C00670065006D00650065006E0020005200470042002D
% 00700072006F006600690065006C0E420E1B0E230E440E1F0E250E4C00200052
% 0047004200200E170E310E480E270E440E1B00470065006E0065006C00200052
% 00470042002000500072006F00660069006C00690059006C00650069006E0065
% 006E0020005200470042002D00700072006F006600690069006C00690055006E
% 006900770065007200730061006C006E0079002000700072006F00660069006C
% 0020005200470042041E04310449043804390020043F0440043E04440438043B
% 044C00200052004700420645064406410020062A06390631064A064100200052
% 0047004200200627064406390627064500470065006E00650072006900630020
% 005200470042002000500072006F00660069006C006500470065006E00650072
% 0065006C0020005200470042002D006200650073006B0072006900760065006C
% 007300657465787400000000436F707972696768742032303037204170706C65
% 20496E632E2C20616C6C207269676874732072657365727665642E0058595A20
% 000000000000F35200010000000116CF58595A20000000000000744D00003DEE
% 000003D058595A200000000000005A750000AC730000173458595A2000000000
% 0000281A0000159F0000B83663757276000000000000000101CD000073663332
% 0000000000010C42000005DEFFFFF326000007920000FD91FFFFFBA2FFFFFDA3
% 000003DC0000C06C
%%EndICCProfile
%begin_xml_code
/pdfmark where {pop true} {false} ifelse
/currentdistillerparams where {pop currentdistillerparams
/CoreDistVersion get 5000 ge } {false} ifelse
and not {userdict /pdfmark /cleartomark load put} if
[/NamespacePush pdfmark
[/_objdef {photoshop_metadata_stream} /type /stream /OBJ pdfmark
/MetadataString 15353 string def % exact length of metadata
/TempString 100 string def
/ConsumeMetadata {
currentfile TempString readline pop pop
currentfile MetadataString readstring pop pop
} bind def
ConsumeMetadata
%begin_xml_packet: 15353
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"> + <xmpMM:DocumentID>F3744640BFF37BAB23BEB8339370F72D</xmpMM:DocumentID> + <xmpMM:InstanceID>xmp.iid:0280117407206811B813FB27A86CE338</xmpMM:InstanceID> + <xmpMM:OriginalDocumentID>F3744640BFF37BAB23BEB8339370F72D</xmpMM:OriginalDocumentID> + <xmpMM:History> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:0180117407206811B813FB27A86CE338</stEvt:instanceID> + <stEvt:when>2012-08-23T14:35:11-04:00</stEvt:when> + <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:parameters>from image/jpeg to image/epsf</stEvt:parameters> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>derived</stEvt:action> + <stEvt:parameters>converted from image/jpeg to image/epsf</stEvt:parameters> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:0280117407206811B813FB27A86CE338</stEvt:instanceID> + <stEvt:when>2012-08-23T14:35:11-04:00</stEvt:when> + <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + </rdf:Seq> + </xmpMM:History> + <xmpMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>xmp.iid:0180117407206811B813FB27A86CE338</stRef:instanceID> + <stRef:documentID>F3744640BFF37BAB23BEB8339370F72D</stRef:documentID> + <stRef:originalDocumentID>F3744640BFF37BAB23BEB8339370F72D</stRef:originalDocumentID> + </xmpMM:DerivedFrom> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>image/epsf</dc:format> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"> + <photoshop:ColorMode>3</photoshop:ColorMode> + <photoshop:ICCProfile>Generic RGB Profile</photoshop:ICCProfile> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmp="http://ns.adobe.com/xap/1.0/"> + <xmp:CreateDate>2012-08-23T13:41:56-04:00</xmp:CreateDate> + <xmp:ModifyDate>2012-08-23T14:35:11-04:00</xmp:ModifyDate> + <xmp:MetadataDate>2012-08-23T14:35:11-04:00</xmp:MetadataDate> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?>
%end_xml_packet
[{photoshop_metadata_stream} 2 dict begin /Type /Metadata def /Subtype /XML def currentdict end /PUT pdfmark
[{photoshop_metadata_stream} MetadataString /PUT pdfmark
[/_objdef {nextImage} /NI pdfmark
%end_xml_code
gsave % EPS gsave
/hascolor
/deviceinfo where
{pop deviceinfo /Colors known
{deviceinfo /Colors get exec 1 gt}
{false} ifelse}
{/statusdict where
{pop statusdict /processcolors known
{statusdict /processcolors get exec 1 gt}
{false} ifelse}
{false} ifelse}
ifelse
def
40 dict begin
/_image systemdict /image get def
/_setgray systemdict /setgray get def
/_currentgray systemdict /currentgray get def
/_settransfer systemdict /settransfer get def
/_currenttransfer systemdict /currenttransfer get def
/blank 0 _currenttransfer exec
1 _currenttransfer exec eq def
/negative blank
{0 _currenttransfer exec 0.5 lt}
{0 _currenttransfer exec 1 _currenttransfer exec gt}
ifelse def
/inverted? negative def
/level2 systemdict /languagelevel known
{languagelevel 2 ge} {false} ifelse def
/level3 systemdict /languagelevel known
{languagelevel 3 ge} {false} ifelse def
/foureq {4 index eq 8 1 roll
4 index eq 8 1 roll
4 index eq 8 1 roll
4 index eq 8 1 roll
pop pop pop pop and and and} def
hascolor {/band 0 def} {/band 5 def} ifelse
/setcmykcolor where {pop
1 0 0 0 setcmykcolor _currentgray 1 exch sub
0 1 0 0 setcmykcolor _currentgray 1 exch sub
0 0 1 0 setcmykcolor _currentgray 1 exch sub
0 0 0 1 setcmykcolor _currentgray 1 exch sub
4 {4 copy} repeat
1 0 0 0 foureq {/band 1 store} if
0 1 0 0 foureq {/band 2 store} if
0 0 1 0 foureq {/band 3 store} if
0 0 0 1 foureq {/band 4 store} if
0 0 0 0 foureq {/band 6 store} if} if
blank {/band 6 store} if
gsave % Image Header gsave
/rows 177 def
/cols 150 def
150 177 scale
level2 {
band 0 eq {
/DeviceRGB
} {/DeviceGray} ifelse
setcolorspace currentdict /PhotoshopDuotoneColorSpace undef currentdict /PhotoshopDuotoneAltColorSpace undef } if
/picstr1 150 string def
/picstr2 150 string def
/picstr3 150 string def
/picstr4 150 string def
/_rowpadstr 150 string def
/rawreaddata {hasDecodeFile 0 eq {/decodeFile currentfile /ASCII85Decode filter def
/hasDecodeFile 1 def} if
decodeFile exch readstring pop} def
/padreaddata { _topPad 0 gt { /_topPad _topPad 1 sub def pop _rowpadstr }
{ _subImageRows 0 gt { /_subImageRows _subImageRows 1 sub def
dup _leftPad _picsubstr rawreaddata putinterval }
{ pop _rowpadstr } ifelse } ifelse } def
/image2 level2 {/image load def} {{begin
Width Height BitsPerComponent ImageMatrix
Decode length 2 eq
{/DataSource load image} if
Decode length 6 eq
{DataSource 0 get DataSource 1 get DataSource 2 get
true 3 colorimage} if
Decode length 8 eq
{DataSource 0 get DataSource 1 get
DataSource 2 get DataSource 3 get
true 4 colorimage} if
end} def} ifelse
/_image2 level2 {/_image load def} {{begin
Width Height BitsPerComponent ImageMatrix
/DataSource load _image end} def} ifelse
/beginimage level2 {{
band 0 eq band 4 eq or band 5 eq or
{image2}
{negative {{pop 0}} {{pop 1}} ifelse
_settransfer _image2} ifelse
} def}
{{pop .9 setgray 0 0 moveto 0 1 lineto
1 1 lineto 1 0 lineto fill 0 setgray
0 1 translate 1 cols div 1 rows div scale
/ratio {cols 400 div mul} def
/Helvetica findfont 15 ratio scalefont setfont
5 ratio -20 ratio moveto
(ASCII85 encoded image needs PostScript Level 2) show
/x 128 string def
{currentfile x readline {} {pop exit} ifelse
(~>) search {pop pop pop exit} {pop} ifelse
} loop } def}
ifelse
/hasDecodeFile 0 def
/readdata /rawreaddata load bind def
12 dict begin
/ImageType 1 def
/Width cols def
/Height rows def
/ImageMatrix [cols 0 0 rows neg 0 rows] def
/BitsPerComponent 8 def
band 0 eq
{/Decode [0 1 0 1 0 1] def
/MultipleDataSources true def
/DataSource [
{picstr1 readdata}
{picstr2 readdata}
{picstr3 readdata picstr4 readdata pop}
] def}
{/Decode [0 1] def
/DataSource {
picstr1 readdata pop
picstr2 readdata pop
picstr3 readdata pop
picstr4 readdata
} def}
ifelse
currentdict end
%%BeginBinary: 134805
beginimage
s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q"Xmhs8Moms8W-!s8Mrns8W-! +s8W-!s8W-!s8W-!s8W-!rr2inrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8Vunrr<#u +r;?Kls8W#pr;?Hhqu6Tps8W-!s8Moms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr)irs8W,tr;?Qos8N&urr2orrr2or +rr2rts8W&rrr2rts8W-!s8W-!s8W-!s8W-!s8W-!rr2lprVccrs8W,trr2rts8W-! +s8W-!s8W-!s8N#srr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!qYL*hs8W-!rVc]ns8W-!rVccrs8W-!s8W-!s8W&r +s8W-!s8W-!s8W-!s8W&rrVc]nrVc]nrVccrs8W-!rVccrs8W-!rVcWiqtp?jrVccr +s8W-!rVc]ns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W#prr2osrr2rsrVc`qrr)lsrr2orrr2orrr2rts8W)trr2rt +rr2rts8W-!s8W-!s8W-!s8W-!rr2orrr2rtrr2rsrr2orrr2rtrr2orrr2oss8N#s +rr2osrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!q"Xmhs8Moms8W-!s8Mros8W-!s8W-!s8W-!s8W-!s8W-!rVcWjrr2rs +s8W-!s8W-!s8W-!s8W-!s8W-!s8Vunrr<#uqtp<ks8W#pr;6?fqu6Tps8W-!s8Mom +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr)irs8W,tr;?Qos8W-!rr2orrr2orrr2rts8W&rrr2ors8W-!s8N&us8W)u +s8W-!s8W-!rr)cmr;?Qos8W,urr2rts8W-!s8W-!s8W-!s8N#srr2oss8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qYL*h +s8W-!rVc]ns8W-!rVccrs8W-!s8W-!s8W&rs8W-!s8W-!s8W,us8W&rr;HTmrVc]n +rVccqs8W-!r;HZqs8W-!r;?Hhqtp?jrVZZps8W-!rVc]ns8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#prr2osrr2rs +rVc`qrr2rtrr2orrr2orrr2rts8W)trr2orrr2rts8N&us8W)us8W-!s8W-!rr2lp +rVc`qrr2rsrr2lprr<#urr2oqrVlfrs8N#srr2osrr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r;?Qos8Vrlqu?Zp +rr2orrr2oqrr2orr;?Kjs8W-!s8W-!s8W-!s8W)tqtp9hrVliss8W-!r;?BdrVuot +s8W-!rr<#us8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vumr;HZqs8N#ss8W-!s8W-!s8W-! +s8N&us8W-!s8W&ss8W-!s8W-!rr2rts8W-!s8N#qqtpBls8W-!s8W,urVc]nrr2lq +rr2orrVc`ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)tr;HKgs8W-!s8W-!s8W-! +s8W-!r;HTmrVccrs8W-!s8W-!s8W-!s8W#ps8W-!s8W-!rr<#us8W-!s8W-!s8W-! +s8W-!s8W-!rVc]ns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&qrVlfqs8N#srVc]prr2rts8W-!s8N&us8W)trr2lq +s8W-!s8W-!rr2rts8W)trr2oqr;?Qns8W)trVc`prr2orrr2orrr2orrr2ors8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!r;?Qos8Vunr;ZfsrVlfqrr2orrr2orr;?Kjs8W-!s8W-! +rr<#us8W)tqYU0hrr<#us8W-!r;?Bdrr<#us8W-!s8W-!rr2oss8W-!s8W,us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8VunrVccrs8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrr<#us8W)urr2rt +s8W-!s8W,urr2ors8W-!s8W,urVc]nrr2orrr2lprVlfqs8W-!s8N&us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rVcWjrr<#us8W-!s8W-!s8W-!r;?KkrVccrrr<#us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVc]ns8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrr2or +s8N#srr2oss8W)us8W-!s8W-!s8W)trr2lprr<#us8W)urr2rts8W)trr<#trr2or +s8W)trVccqrr2orrr2orrr2orrr2ors8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Mcfrr)]js8Vca +p\Y!jrVc`ps8W-!r;?Kiqu$Birr2lprVZQhr;?Nlr;?Hhrr;rrr;HKgqYL*grVuot +r;?Tps8Dfjs8W&oq"Xmhs8W-!s8W-!r;?Kjrr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ss8W,us8W)ss8W-!rr2oq +rr2rts8W#pr;6BhrVc`ps8W,urVZTkrVc]ns8Vccq"ajds8W-!s8N&trVccrr;?Nn +rr2fmrVlisrVc]nrVc]ns8W-!s8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,tqYBsds8W-!s8;Wcq"t!erVc]n +qYL'aq>0m]r;?Kjrr)clr;?Tps8W-!qYU3hr;HNir;?Kjr;?Kjqtp<hrr2lpqYU6i +s8W-!rr2rts8W-!rVc]nrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trVc`orVlfqr;?Nlrr2lprr2rts8W#pr;6Bh +r;?Qnrr2oqr;6EirVc]nrr2]gqYU3hrVc]nrVlfqrVc`prVc`prVcZmrVc]nrr2or +rr2ors8W)trr2osrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8DZcrVZKfrqu?Xp%eXequ$Elrr2ors8W,us8W-!rr)cm +r;?Hgqu$Ekr;?Egs8W-!s8Vunq>'mdrVuotqtpEnrVQEdrr2ilq"Xmhs8W-!s8W-! +r;?Kjrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)rs8W)srr2ilrr2orr;6EirVlfqrr2rts8N&us8W)srr2orrVZQj +rVc]nrr;lmr;HZqs8W-!s8N&trVccrqtp9hrVcThr;Q`rr;6Bgr;?Nls8W-!s8W-! +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,sq=sa`s8W)trVH3ZpA4[ar;?KjrVc]mrVcWjr;6BgrVcZkqu$Kos8W-! +s8W-!s8W#pqtp9gr;?KjqYL*dr;?Kjq>'ses8W-!r;?Qns8W-!rVc]nrVccrs8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)s +r;?Nkr;HTkqYL*er;6BhrVlfqrr2rts8N&us8W)srVc]nr;6BhrVc]nrVlcorVlis +rVc]nrVlfqrVc]nr;?Kjr;?Hhr;HTmrVcZlrVc`ps8W)trr2osrr2rts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qt^3js8W-! +r;6Noo_&7ar;?Nmrr2loqYL'bqYU3gqYL$aqu$?jrVlisrr)cnqYU3hs8W-!rr2os +s8W)tr;6?dq"adbrVZB`q"Xmhqu$Hns8W-!r;?Kjrr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2ilqYL6lp\=dg +rVZTkrVlfqrr)`kqYL'cr;?Tprr<#us8W#qrr2rss8Vrmr;HTnrr2inrr<#us8W-! +s8N#ts8Drqs8W-!qYC*hrr2lprr2rts8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVQBcq=jX\s8W-!s8W-!r;?Nm +s8W-!rVcZlqYU3gq>'g]q>0p_p\=R[q=sa_qYU3hrr<#urVc`qs8W-!qtg3dqYU0e +q=sa\r;?KiqYU9ls8W-!s8W&rrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)srVlcmqu$HmqYU3grr)cmrVlfqrr)`k +qYL'cr;?Nlr;HTnrVl`nrr2oqrVlZjr;HWorr2lprr<#us8W)srVZTlrVc]mr;?Nl +r;6Ejrr2orrr2orrr2osrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!qt^3js8W-!qt^9loCW(_rVc`qs8Mupr;?NlrVlis +qtg-aqYL'dr;Q`rrVZQjrr2rss8MuprVc`qs8W)sr;?Efq>1!frr)N`q"asirVlis +s8W-!r;?Kjrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr;roqu$Kmp@nUer;6Hkrr<#trr)forVc]os8W-!rr2rt +s8Dinrr2oqrr2ors8Mupqtg3err<#us8W-!s8W-!s8N&ts8W-!r;6Nos8MuqrVccr +s8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rVQBdqY9jarr<#us8W-!rVc`qs8W-!s8W-!rVlisqYBp]q"XXYpA"IZ +q"OO[rr2rsrr)clr;?Qos8W,uqtp9fqu$BiqYBm\r;HWnr;HZqs8W-!s8W&rrVccr +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)srVlcnr;HWmqYL*erVc]nrr<#trr)forVc]os8W&rr;?NlrVZQkrr2lor;HWo +s8N#rr;6Eirr<#us8N#srVc]nrVlfpqu$EkrVZZos8N#srr2orrr2osrr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)s +p%S(Ns8W-!r;?Bequ$Bir;?Hiqu$Hmr;?Kms8W&qr;?Nmrr;rqs8W-!pA"O^rVlir +s8W,us8W-!qu$Hms8Vulp%%YNs8Dutp@nI`rr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8Vll +r;6Noqu$?hrr2ors8W-!s8W)trr2`ir;6BgrVlfnp\4O_r;-Ems8W-!s8W,urVZQj +r;HZqs8;]fqu-QprVuikr;?Tps8W,trr)lss8W-!rr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtp?iq>L*bo(MePqYg9f +q>1'grVc`qrr<#urVcWks8W-!s8W-!rquNbqYg?goC_kPq>1!brVZZns8W-!s8W-! +s8VuoqtTdXqXsa_q"amgs8W-!s8W&rrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2fmqtp3er;?QnqYU0frVc]n +rr2ors8W&rrVl]lrVZTkrVlfoq>'perVQHhrVc`ps8N&trr)forVlfqs8Dilqu$Bg +q#10erVcZlrr<#trr2rts8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s82cjp%J(@pAP$kr;?Qns8Mrprr2fjqYC$d +rVlfrs8W#prr2ilo]Y/lo)8Ugp@n@Xr;?HeqYU6ks8W-!r;6Bhs8W)rnb)SIme?\[ +p@\=^rr<#us8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,ss82fqs7Y^Hp&+jis8W,urr<#us8DrqrVliss8Mrn +qtp?jr;-'Hf\PogqtpBmrr<#ur;$0bqu-Hjqtg?mr;-6crr<#us7bdKq>L?ns8W,u +rr2rts8W)trVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!qtL$`q>C*Tj6H+/qYgHorVZWns8W)rrVZTlrr;rps8W-!s8W)r +o]=`]m.^DSoCV\Jq"XUUp\=[cs8W,us8W-!s8W)up\X^Sk3r*Cq"Oaes8W-!s8W&r +r;?Qos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,rrqcNiqs`tDp\k*js8W,urVlisrqu`mr;HWprr2lpr;?Qnr;-'Ig>D>o +r;?Egqu$EkqtU!`r;QZnrVZZor;6Bhrr2clqt97GqYg?hrr<#trr2rts8W)trr2rt +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rVl`orr<#_jmr-Fs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,pj4Mc3h<Fq=s8W-! +s8W-!s8W)sr;?NlrVuots8W-!s8W,mf%'EmqtU*er;6Kns8W-!s8W)ts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)urVuln +hkPCKYJST@kk"ZHq"X^_qtp9eq"X[\p[n+Ko'G5RX-e3OC2nfiXi'2`md]oCqu$Hn +s8W)ts8VojqYBmVlf-F3RYl9Kg&D$Ms8W-!s8N#ss8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rqPEPKT2tB +b1u"Hr;6?equ$Kos8Miiqtp3`kNM-lg;g@gIroRNJs34Jjm;L-o_/(Wqu?]qrVc`p +nFH5Fo^_8-e]OkZJs+FKp\4Rbs8N&us8W&rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)urVulol+*4Z`7*N)me6SU +qYL-frVc]mqYL*dqY9dWp$q4t`O;4rM3+:2`RO8DoC_kRr;HWps8Muqrr2`iqtg-^ +na#/b\u_-li;NWOrr2ors8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2ZjqtTQn`n.Q'_8*n.bgbV;nb2hX +qtg0cq!mJ'e'GqC\$s,me^;dob.bO#ZF.Hgd+maKn*flAp@RqFo'bc!f$(tG]"uS? +agKFjqY:!cr;$9js8W-!s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q#:0[`HbR"CiFoWPbu7;e_fQVn+,u:nF5f+ +g!@RFV2p%EC1_9qC2Ij'CN>)gS#Ed9fAZ&ap%\=Uo^_G4g<."*R>cH2?YO4lZh4:r +s8W,trVc]os8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W#sqsMITATDBrI"IBS_TLKhkjA!8o^hVCmcW?Q[]Q$U +H#[\<EG]T5DeNg#L68%+\&QqUkjS0<p\".JjknS.\#>XRHZs@PF`OGCp@nI`s8;os +rr;rqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!q#:0]d>rU3JV0/OTs2JZg#MAdoChhJoCMJ9h:0HXXdb?*KS5;? +M2[=EK85VYVR!q\gZ7_io_8+QoC;84h9a$FV4<O%JW#;:](Gsurr2oprVlfqs8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8U3fe]cb"cIULjd*gFoeC`X;jP\kIf[eO!cdC4ke(31+gtCE:g=b'/ +eC)^idam+)g>1]IinrMDd*C.ke^_jdbg,,'iSDo]s8W,tqtKm^qu6Wqs8W)ts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&p +r;-6N>@2#I?sZrB>ut37?=.)NC2S!,B4G=U>?P'3>[:W>?<poC>$P<:>[:W>=]ed2 +?!UfHBPVEuB4Y[c>?Fp,?!UfC?!UiB?``krqYC0irr;rprVlfqs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,qo%Rbd +Ali8B<afE@=B]$<?t="iE,9/s@:*2?>[C`D?!U`B?!:B8?!LT==]\U&='K$=@:X(g +Ch[NnAn5:U?!U]?>$53>A7JuFnbMqSrVc`qr;HWps8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)srVQHXI=[3%KS"Q' +JU;fpJV&N0NKKEcMM?e9Isl]nJ:W6$JqJ`-J:`B(J:W6"I!^6kJqAZ2N/s$YMMR"? +J:;opIXZcqKS5,5J].9[qtg<hr;QWmrr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,us8W#ss1$4p_pH`We'6.^bKS5V +bfRlCa2lNOdaHOid*U+bcdL7kdaZn"daQXndEp4bdF-OndaHIebKJ#M_Sa^KeC;R\ +a2ur_akb%dp](9lqt^*bqu6Wqs8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Mulp&"<K>Zt-7<EEI,<`W4$='/R);G^:k +='8^1=]eg0=BJ^-=B8F'=&r:#=BSg1=BAR+=BAR*=&r=$<E<4)<`W4#>$>*3<Dl@l +<dEU#qt^9ls8W&qrVlfqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,us8W#ol]>ac<*N7">?G'4;cHh#=B/6q;cHh$>?b32 +?!UW;=]ng-;cQju<E<1'<`N*t<``I-=]nj.<E3%"=BSj5>[1E7<E*%!9Oh+Gh>6pA +rVuotr;HWps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8N#pq#'fZIXH<hH$b'fH?sg]H@(!`F`V_MH@10jI=-HkI!g<h +I!g6fI=-?fI!pEjH[:$dI=-EiH[9p]G^4OZH[L3gH[C'aI!KX_Ga%:gr;-Ekrr2io +rr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)tqY^*fs2EL7cHjn^dF$%\cHXVZc-FSXai_fMc-=S]e^MmlcHa_[dEp4c +cHjbYdaZdpc-4>RaihrVdF6Rncd1+idEg+`e'cRh]Z/4/cN!qEqtBdWq>L?ns8W)t +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr2osqZ!Zi7mosG<)61]92SGY9hnM^;,Bt^:/4MX9hnM[:/4Y`;,C+d:JO_`:ejYX +:JFMU9MJ/S:esk]9heDZ9M8)U;,L+a:fKn\;F-r?p\Y!js8W-!rr2ors8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8VWY +Y"qb\7S6KM9he2T9h\5T:/=_`9hnAU9MA/U;,9q^9he>U:/+J];cH^o:Jk"d:esk` +9MS>Y9h\5S9MA,Q92&&S91hfS6;UWNV="!Qr;Q`rrVliss8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2lqq#/3NEc,l> +H$".ME-?>EF*)PJG'.hHF)uDDFEMhOF`hkNG'/"PF`hkOG'%hLGBItIEcZ5AF`qqN +F`hhLF`__JG'8%OFa7\BG@n#Jq>C3hrVZWnrr2ors8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#sr;-<V^q\"CbK.W?b0.fB +`lH->_o'F3`lH0AaN)BCa2l?D`l5p:`lH0A`l5m8bfe/NaN;H?`Q#p>aNMiRb0&#S +bK.]CbfRuHaM,a1OR)rHp@@qLq#(0ls8W&rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rsrp4Af4A/197n6!;8Oc0>7n,s; +84cEH91qfG7Rf^37Rp$@84c9@84Q3@7n?':779X:84H*?8Ol6=7n?6E7R]g<8P)HA +8kMuP9giF;o)&=]s8W)trVlfprr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8VcICIpid6UO4.7Ros:77Ka86psR;8kV`I +7n,s;6UXC6779O46UXF;91hiN8OuBB92%uM84c<A6psL77n6$;77BX66pX43:.S/P +B@QJJp\Ophr;HWps8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W,urr2oqr9ArLB6A*0Ci!s+DJO'*D/=!'D/O92E,]]3D/F$' +D/O6.D/O0,DJj?/D/O6.D/=*.DJX0-DJj<.DfBZ7Df0H1DJjB/Df9c6EbTLGpAFa] +r;?Kkrr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +r;?Tps8Vrnr;ZfsrVliV]$ALI`5Kd>`l?BObKJ)Pbfn;Tbfn;Tbfn;TbKJ)PbKJ)P +bKJ)PbKJ)PbKJ)Ob0.uObKJ)Ob0%lLc-=MXc-=MXcHXJXe&KYT^ZYOpp@J:`s8W-! +s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr2or +s8W-!qYU<mn<l1$4$l1t5!D7t3]TDh5<h=q5!D.o5!D.o5!D1q5<h@s5<h@s5<h@s +5<h@s5<_7q5<h@s5<_7p5!D.o5<h@s5<hCt4$l@q5<Li7p](-cqt^'^s8W#qs8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vrlqu?]rs8Vljq"jsg +rr;2G1da>k5!D%i4?l2"5!D.o4Ztqk4Ztqk4Ztqk5!D.o5!D.o5!D.o5!D.o5X7S! +5<qJ!5X7S!5<h@s5X7Ls5!D.o5<_+o6oR:k5'#]Wrr2rtqt^3js8Vrls8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2orrr2orrVlcpr;HWpoWDJ9 +Ao20nB4kmkBP2$nBk_6oBP;'mBP;'mBP;*oBk_9qBk_9qBk_9qBk_9qBkV0oBk_9q +BkV0nBP;*oBk_9qBk_<rASc9oBkCb4pAXp_r;6Bfs8W&srr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)tr;?Tps8Vrnr;ZfsrqcYe]u&(4^:qP) +_SaXD`l?$<aN2EBa2c6@a2l?C`l?$<`l?$<`l?$<`l?$<`l?!:`Poj:`l?$<`l?!: +a2c6@a2c6@aMu*<a2u<=_mmtjp@S1\s8W-!s8W)ts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr2ors8W-!qYU<jjAn9!4u55\3BB;d2`NiZ +3]];_3B9)[3B9)\3]];_3]];_3]];_3]];_3]];_3B9)[3]];_3]];_3B9&Y3B9)[ +3B9,[1cdWY2`<]SaT)/5pA4UZs8W#qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8Vrlqu?]rs8Vljq"jsgs81SJ2`EoV3&ifT3'9Gl3B9)[3B9&Y +3&ilW3&ruZ3B9)[3B9)[3B9)[3B9)[4$,Ja3]]>a4$,Mc4$,Ja3]]5[3&ilW3B&`S +3'&rT6:8-Qrr<#uqt^3js8Vrls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)trr2orrr2orrVlcpr;HZmlYBm9BjP4V@Uiq[AS,I`A7T4]@q0"Y@q0"Z +A7T4]A7T4]A7T4]A7T4]A7T4]@q0"YA7T4]A7T4]@q0"Y@q0"Y@q0%Y?=[PW@:3VP +a8Yr1q#($cs8W&srr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)trr2rts8W&trVl`mq>'?cf#knFaN;TI_o'C1_83t(_83t(`5KU4`5KU4a2c6@ +a2c6@a2c6@a2c6@a2c6@a2c6@`l?$;`Pog8_SX1,_SX1,`P]^6_T]p:c+MR+p$qtY +nF$2Rs8Vojs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)trVuots8W)rG9\mk3&E3>0JG490etI<0ekC;0ekF=1,:U?1,:R=0ekC;0ekC; +0ekC;0ekC;0ekC;0ek@90J>(40/#"50JG170JG:;1bpaG0f(g<>gEBHq>1-ks8Vuo +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rqtp?ls8W&t +rr<#uq!3Sd3%QpA0etL>0ekLB0ekC;0ekC;1G^gC1G^gC1G^gC1G^gC1G^gC1G^gC +1G^gC1G^gC1,:U>0ekC;0ekC;0ekC;1bppE0fq-I3@J1Xp&+jiqt^3hs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2ors8W)trVulsrr2ik +Ro*]u@9m,D?=$oC?!^c@>[1N=>[1TA?=$rE?=$rE?=$rE?=$rE?=$rE?=$rE?=$rE +?=$oC?!LW>>[1N=>[1N=>[1WA?s[)M?!h/BJDL+tqtp6crr;rqrVccrs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W&tr;QTkp$Slrcd0;< +aiVWF^q[Y"^:q=q^:q=q^V@Ou^V@Ou_SX1,_SX1,_SX1,_SX1,_83t)_SO()_o'C0 +_o'C0^qdb$^qdb$]tD=r]tqJ"]#_#FnalSSn*^)Qs8Vojs8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trVulss8Vrc2_6L21,:I7/hSb. +/M8Y./hSb//hS_-/M/P+/M/M)/1`>'/1`>'/1`>'/1`;%.kE5%.k<2'/M/P+/M/S- +/hSb//hSY(1FXh-/MAG-26ZuWpA+ags8Vuos8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&rqtp?ls8W&trVuoto\`+s0ek=71,:O;/hJb3/hSb/ +/hSb//hSb//hSb//hSb//hSb//hSb//hSb//M/P,/hJY,0/"t30/"t30/"t30/"t3 +/1WP,/2/\1-8[W`nc&RgqYC*gs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr2ors8W)trVuirrr2]\>?Y<<>?bB=>[1H8=^"s2=]nm1=]nm1 +=]nm1=]nm1=]nm1=]nm1=]nm1=]nj/=BSd/=BJa1>$>*5>$>*5>$>*5>$>!.?WC03 +=^+d3=i:%2q"sp`rr;rqrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)ts8W-!s8W&sq>9m[s4b9-b0.Q8a2Ys3_Sa!t^V@Ou^VIY#_83t(_84%, +_83t(_83t(_83t(_83t(_83t(_83t(^qdb$^qdb$^qdb$^V@Ou^qdn'_8!k)c,.E^ +s8W-!o^`%^rr;uss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +s8W-!s8W)sqtp3dqu-)G+X/6\.kE(r-n$Jm.k<%t.4H\q.Olr!.k<,#.Olr!.k<,# +.k<,#.k<,#.k<,#.k<,#.k<)!.Olnt.Olnt.Olkr.4H_r/h&;"/1iJ!,Xh7tq=Xdf +s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtp6d +rVuots8W)qk(kcE-R^>j/1W2"-n-Vq.k<,#.kE5&/M/P+/M/P+/M/P+/M/P+/M/P+ +/M/P+/1`>'/1`>'.k<,#.k<,#/1`>'.k<,#/1`G(/1N5(.N^!=j7iTRrqQBfrr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr2orr;?Eg +qYTr];H-_"='/R+<`W7&<`W7%<`W7&='&L+=BJ[-=BJ[-=BJ[-=BJ[-=BJ[-=BJ[- +=BJ[-=BJX+='&I)='&I)='&F'<`W:'>?4j,=^#*/<-S$2qt^0ds8W)ts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W&sqY^*_r/eV0 +aiD-2`5B='^qdLj]tM+m]tM+m]=Y\e]=Ybi]=Y\e]=Y\e]=Y\e]=Y\e]=Y\e]=Y\e +]Y(ni]tM+m]tM+m]tM+m]tV"j]Y(ni^r+74g&M*PoCDq]rr;uss8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W)sqtp6fr;PbE+<MmS.P)kk +,palb.4?Pk-RU8h-RU2d,pai`,U=Z^,pai`,pai`,pai`,pai`,pai`,palb-71)f +-RU8h-RU8h-RU8i+t+cb-70l]-mHn3n+?Y[s8W)ts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtp6drVuots8W,sfKCr=-6sod.4?Pk-71,g +.4H\p.4H\p-RU8h-RU8h-RU8h-RU8h-RU8h-RU8h-71&d-71&d-RU8h-n$Jl.4H\p +.4H\p.4QPk-RU8h*?Zgh]_hX,rV69err<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)ts8W-!rr2orr;?Hiqu#_^;,L@n<`i@$;c?Xp<)Zaq<)cgr +<)can;GpCj;GpCj;GpCj;GpCj;GpCj;GpCj;GpCj;GpFl;c?Xp<)cgr<)cgr<)cgs +:K:=l;c?Lk=B3ZEp%eL]s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W#prr<#us8Mfiq#CBos0oJQ_o]p6_84(._o'=,_o'C0_SX1,`5KU4 +`5KU4_83t(_83t(_83t(_83t(_SO()_83t)^qdb$^qdb$_o'C0_o'C0_o0:,_Sa7, +]"l(cb5_>5p\4^fqYU<ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)ts8W-!rr2lqr;QTkqY,jp,pjc_-mC#d,U=TZ-71#b,paf^,U=W\,U=W\,U=]` +-71&d-71&d-71&d-71)e-71&d-7:)c,pai`,pai`,pai`,paia+=/9Z,U4We,Sb:` +q"agarr2rtr;?Tps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rVcThr;Zfss8VrbN[H+u*[E$R,palb,9nBV-71&d,pai`-71&d-71&d,U=W\,U=W\ +,U=W\,U=W\,pX`],U=W],9nEX,9nEX-71&d,U=W\,UFNX,:"KX+t+WPDsI/srr2rt +rr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2osrr2lq +qu-Ejqt[Bm;,gCo=&Dst<)cdp<)cjt<E3!t<)cgr<)cgr<)cgr<)cgr<)cgr<)cgr +<)cjs<)cgr<)ljq;c?Un;c?[r<E3!t<)cgs:K17l;c6Lq;FHH4q>'m`rr2lqrVccr +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#prr<#us8Vlip\t*j +_Rm4g_S3b"]=Yhm^:q7n^:q=q^:q=q^V@Ou^V@Ou]Y(ni]Y(ni]Y(ni]Y(ni]tD"i +]=bei]Y(ni]Y(ni^:q=q^:q=q^:qFs^V.Fs\@'/iMuW\Op\+XeqYU<ms8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr2osr;HKfp@CR#,9e6M ++<hsP+!2OF+X/$O+<VdL+<VaJ+!2RH+!2XL+X&!P+X&!P+X&!P+X&$Q+WqmN+X/'Q ++X&!P+X%sN+<VdL+<VdL,9J'N+s8-S-71J'q>C-drr2rtr;?Tps8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVcThrVuots8DZX74TT**>ok>+!2XL +*Zc=C+X&!P+X&!P+X&!P+X&!P+!2RH+!2RH+!2RH+!2RH+<M[H*ZlIH+!2RH+!2RH ++X&!P+!2RH+!2[J+<D[J+<;^V0\uU*rr)lsrr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)trr2osrr2osqu$<fq"AB%:Jak]:Jjn`:JX_\:Jaka +:f'tb:f'q`:JXb^:JXb^:JXb^:JXb^:JXb^:JXe_:JOY\:Jah_:JXb^:JXe`:f'q` +:JXb^;GL%`;,:"_<)lWTqY^3crr2lqrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8Vunr;Zfss7u?Wo`+sk]YM7r`PoI%]t_\2^qdk*^:q=q^:q=p +^;%J!^qde'_8=(*_83t'_SX1,_SX1,_SX1,_SX1,_83t(_84"*^:q=q^:q=q^;%Fu +^q[Xu^q[_'YPS.eq"k$jr;?Qns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)ts8W-!r;?Qms8MlhnBMml,:"BS-7:,c*ZcLL+X&'T,9nEX,9e?X+sJ3T +,:"HX,9e<U+sA0U,9nEX,9nEX,9nEX,9nBV+sJ3T,9nEX,9nEX,9nEY,UF`^,U4QZ ++s\1\s7cNmrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rVccrs8W&rs8W-!qXs3p)BKtC*ZcCG+!MsU+X%mJ+!2RH+!2RG+!;XI+!2UK+!;[J ++!2RG+<VdL+<VdL+<VdL+<VdL+!2RH+!2UJ+!2RH+!2RH+!;[L+WqmL,pXNS*fKOX +r;Zfss8Vrls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2os +rVc`nr;-3ao\<&6;,U7g;H$Ll;Gp@h;,L1f;,L1f;,C+f;,L1f;H$Fj;Gg:g;,C.g +;GpCj;GpCj;GpCj;Gp@h;,L1f;Gp@h;,L1f;,L1g;H$Ll;Gg@j;,^&ar:U!err2or +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vunr;Zfss82<Q +nc/Wo_8<q#`5B'n\@TVs]Y)"o]=Y\e]=Y\f\\#Si]tD"j]tV1n^VIY"]tM+m]tM+m +]tM+m]tM+m^:q=q^:q:o]Xthh]Y(kg]=YYb\[oDd]"#kp]=.D1o(W._r;?Qns8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!r;?QorqlHfqKs>+ +,9n9O+sJ0P)&XJ:*??7F+<VdL+<_dK+<VaI*Zc@E*ZcFI+WqgI*Zc@D*Zc@D*Zc@D +*ZcCF+!2RH*ZcII+X&!P+<VdL+!)IF+<hjH.NKs%r;ZQir;?Tps8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrs8W&rs8W,sp\OT*+!;XI*?6"; +)BBnA*??%:*#oq<*#oq=)B9b<*#fh9)]Te9*?H7B)]K_8)]K_8)]K_8)]K_8*#oq< +*#on:*?6(?*??+>*#on9)B0Y;*uu[G.S&e$pAb0ms8Vrls8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2osrVc`pqY0[]qhn6H;,L.c:/4PY9he>V +9heAX:/4PZ:/=PY:JX_[9he>W9heD[:ese[9he>V9he>V9he>V9heAX:/4PZ9heDY +:JXb^:/4PZ9h\5T:/FYX=\Mh*q#:!arVc`prr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8Vunr;Zfsrr2K\qZ$ADMNEpaR@9J.Q^=&*QBmo*Q'R`% +Q'IZ%Q^3r(R$a2)R@0G.QBmi%R$a8.R$a8.R$a8.R$a8.QC!r*R$X/*QBmi&QBmi& +Q'R`%QBdc&PEh<!P`b#+q#CBorr2lqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)ts8W,urVcZorr<#lk"dT[.P!##/hJb1/hSe10/"n0/hS_-/h\k1 +/h\n4/hJb20.eb-/M&P.0/"t30/"q1/hSb//hS\,/M8Y-/M&M,/hSb//hS_./hSb. +/h\n6/MSb&gA:L?rql`qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!qtp?ls8W-!s8Vrnq=<ND,9nN`.Outt.kWS40JG"-.P!#".Olr"/1W5%/M/J& +/M/M'.Olns/1`>'/1`>'/hSb//hSb//1iG+/hJY+.k<,#.k<,#.P!#".k3&#.kMnk +-SEO5nGE7cs8Voks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr2orrr2lrqYU6dlX*1R84lQM9h\;W:/4PZ:/4JW9he;T9hnGX9hnJ[9h\>Y:/">T +9M8,U:/4PZ:/4PZ:/4PZ:/4JW9hnGX9h\8U9he>V9he;U9he>U9hnDY8l&&Lg\^[B +rr)lsrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vunr;Zfs +s8MQXq>^KPr;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rqc3]q>^Kprr2ip +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W,urVc`qrVZZf +nZ/=QR[KS4S"#q;R[T_8S"#q<SXl:?S=Q1>S"#n;S=Q+=SXc4@SXl7>S"#n:S"#k8 +R[T\6R[T\6S"#q<S"#n:S=H+=S=H(=SXl:?S"-"@S>):0l14QIrqufrs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtp?ls8W-!s8Voiq!maTQ'@T# +R$j;-Q^XM;S=Gq4R@0M4R@'D2R@'A/R$jA2Q^O;1R@9S5R$a8.R$a8.R[T\6R[T\6 +R[T_8S=H(<R$a;0R@'D1R$jD3R@'A0Q^X#&OdF_enbrLfs8Vljs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2orrr2osq=sm_ot.fG\@8rW\[f8] +\[f8]\[f8]]"5G_\[o>^\[f8]\[o;]]",A_]"5G_\[f8]\[f5[\@B&Y\@B&Y\[f;_ +\[f8]\[f8]\[f8]]"5G_\[f8_\@o8RlLX`Krr)lsrVliss8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8)`npAb0mq>'dYp\OpirVH0YqYL!_ +qYU3fqYL'bq"t!dq"O^cp%\F\q>'maqYL'bqYL'bqYL'bqYL'bqtp6dqYL*drVc]n +rVc`prr2lor;HWoqtg6ir;ZKfq>^Kps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)ts8W-!rr2rps8VfkqXsmgs8W)sqYC-js8W)ts8W&ss8Muq +rVcWms8Molr;QQks8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrVc]nrr2or +rVZTlrr2rts8DTdqu?<br;6KmrVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!qtp?ls8W-!s7Z<bo`+sks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!nb;q\s8Vrms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)trr<#urr2rorr2Wjr;$<irVZTkr;6Kmr;?NlrVcZmrr)cmr;?Hjrr)`jr;QNi +rr2lprr2orrr2orrr2orrr2orrr2orrr2orrr2lprVc]nrr2orrVZTlrr2orrr2]j +qYp0brVc`prVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr2rts8W)tq>]U=f%/F'fA#?GgXt!(g"G!/gYCT>gt^Z<g=k97g=b03f\>6;g=b04 +g"G'3g"G'3g"G'3g"G'3f\"g,f%/F'g"G'3f\"p4g"G*5gYCT>f%&F1gZHlVqu$Hn +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr2rt +s8Volg=bB@i8<DJgt^]@i8EGIhr!;Jhr!>KhVI#Dh;-oBg">-=io/eOhVR,GhVR,G +hVR,GhVR,GhVR)EgtUT<gY:E7g"G$1g=t<6g=k<:gt^Z<gtpN:ebf(7qY^?lrr2rt +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtp?ls8W-!s82Zhp]'I? +hVR8Sk3(dbi8a%bkih$cjlY^fk2tddjQ,C_jQ#4Wj6#RgjlGL`jQ,C_jQ,C_jQ,C_ +jQ,C_j5].XiSibSiSibSi8EVTiSieUj5f:^hqm8NhW`_noCVkYs8Vuns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#urr2rtrr2`lhqm/Dh;-oD +hr!5Eh;-oCh;-rFhr!>KhVI#Dh;-oBg=b9=iS`SKh;-oCh;-oCh;-oCh;-oCh;-lA +gY1B8g=k97g=k65gYCN:gY:N>h;-f<gY^WBeGAq7qu-Nnrr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2flr;Zfss5A]`LkpkCJUi2uKnY57 +KS4r/IXZ`rJ:N)rKn=l,L5(>2IXm!#JV&K+JqAT+JqAT+JqAT+JqAT+K7ef/K7\], +JUrB&J:N6)J:W<*L4t;4It*$$JUrQop\=dgs8Dlns8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#sqYgBQQ&^WSL4tG=MMd4FL5(J=M2@%E +Ll.(ILk^tLMi3UUMhm%@LPLY@Ll$qDLkpkCLkpkCLkpkCLkpnEM2@(FLkpnEM26tD +MN!@JMN!RTMi!.AL51eLQIl03q>L<ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&rs8W-!qYKm[s6utiYID$S]XtPX[CErb^:q(c\[f8_]=YV_ +^qICn^V@Fl[^`lY\[oAa]"5Ja]"5Ja\@B&Y\@B&Y\[f8]\[]/Z]"5J`\[f>c\[oDd +^V7Ir\[fGh_SWhHs7lEgs8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr2ipqu-NTPE(T\N/W^RMi3OQN/W^SN/WXOMN!LQMMRCTNK''_ +Nf/^NMi3LPN/`dTN/W^SN/W[QMi3LOMi3OQN/W^RMi3OQN/NUPNK9!VNK93`O,]!Q +Mi<aZQ.,^,qu6Torr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2fls8W-!s4qsLLPLY@Jq8E#KnY57KS4r/It*!"K7e]'I=HcsIXQa!KnP)0 +JV&K)JqAT+JqAT+JqAT+JqAT+JV&N-KS5#3K7ef.JV&Q0Jq8H'JqJZ*KSP,2I=$+E +q=agfs8Dlns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!r;-BLLl7"AKnYA>Mi*=GL5(J=M2@(GMMmIRMMR%EMM[(ALl71KM2-kBLkgeB +LkpkCLkpkCLkpkCLkphBM2I1JMMd=MMi*@KN/idPLl%"IM2-tJL5:_CKuj;fq#10j +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8W-!rVH9] +s6Q5UY-tgP]tCb[[CErb^:q(c]"5Md^:q4i\@T;`\$ii[]tCtf\[oA_]"5Ja]"5Ja +\@B&Y\@B&Y\%&u[]"5Ja]Y(nh]">Yj]=PPa]=bhh^;7P!^:^Ass7Z6ds8Vuns8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rsr;6KOL5UtJ +Mi<XSN/NXRN/W^SN/W[QN/`mZN/EIMN/NOKMiNjYNJi^RN/NXRN/W^SN/W[QMi3LO +Mi3INN/`gVNK&sYNfB!WO-,E\Mi<XUNJigZMiE[QKZ*i_qYpKnrr2rts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W#nqSRE'IXQKeG'8%S +H%(-hH?OOVH[C*bFa&%QH$am_G^Om_H[g6cI!Bp^G^+IXH$O[\G^+LZH?sj^H$FFN +G'8.TFEi1XFaA4UG^"@YG'S=UGB\LYG^48'qYC'hs8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr)ioqtp?4H@^a%KnY89KnP)3K7ni. +Lk^S9L4k)/KS+r4L4b/9M1g\CJqSl1L5(G;KnY25KnY25L5(A7K7er6Kn=r0K7SW/ +LP(,2JqS]*K85,8KnG#1Mh6P5GcC]=qu6Tns8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8Vunqu?]rrVQEhs5L2q_SNXf\%95b[^<<FZaRKV]=Y_e +[^`lX]"G\d['d!5[(j,c_7dFk\$ro\]Y(ec^qd:_[CO#c\?iEA\%9AhZ*h9U[_&K< +]",;^ZaRER[C*KH]tUJhs8;Wfs8Vrls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)trr2osrr2oqqtp<5IYWc9LPLY?LPLV>L51J9M2-kAM2-_;L4tD> +M2$bBM1g_FKnkM=LkphALPLY?LPLY?LPLV>L5(M>Kn>#4LP:A9MM?b>K8##4Ko(M> +LP:G9N.Zh=H`R,Aqu6Torr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)trr2rts8W,qpSMnVI!^$[F*)MIG^=U\IX#mRFE_qOFEVnQFE2DEG'%hK +G'A4UG'%kIG'8%PGB\7TG'8(RG^+FVF*)PFH$+4NG&qhOG'.qRG^+:OF`DPHF`MPC +FEV\am.gPZs8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +s8W-!rr)iqs82YmG(5*pJqAW.K7SW)It<?-JqAE$Jq/?%KnOr(I=Qp#JV&N,KRnZ& +Jq&H,K7ec-K7ec-KS4r/JUrB(L4b54IXZs$JV/N(JVJ`,It30$JqAQ&J:;rtHB[jo +r;Zcqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vunqu?]r +rVc]ns2D"N^q[1\[(*]X[BQd:\%&iR[(!QR[C<`X[Bm3JZE9q!YID*U]=GAV[C*KT +]"5A[^:pkWZa[T[ZELO9]",GbZ`ppL\$i39]"55TZECXEZ`pO2\\"oMr;69ds8Vrk +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2osrr2ors82Yo +HA.-/KS5#4KnP/4JqSu8K7e],KnFu1LPCD2J:iN,JV&Q/LP1;2KRni2KnY57KnY57 +KnY26KS4r0L4b;8JqA].KSG/4Jqo&6JV&Q*KS4u.JU`6'I?j<tr;Zcqrr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W)rpPWp3Ec>o5 +D/O90DJsQ7Ci=91E,KW:G&q\DEc5o:E,]uLI:dD7DfKl=DJj?0DJjB2DJjB2Df9N2 +Df'N7CN4E;F`qM6G\qM>CijZ7D/438F)Yu9EH6/Hh>.$Ks8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr2osrquYTFF/C]H$FX^H?j[X +H[0j_I!U3fI=ZrtH$FRVG'A.SH\-uhH$4FYJ:2`iH$O[\H$O[\G^+LZH?jg]IXZKh +I!p<fEH$8DG&_PKH?XOSIXlloH$t$eH[XrPs8;ips8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8Vunqu?]rr;HQms0/Z6XfJ_2Z*L[?['d?HWi`_: +Wi2o!YHY77XJMAPPEVE5Z(\>(ZaI0FY-,%7Z*CI7YHP.5XK8M,\@/uVWNWY<]"=N' +ZDXh'VQQbiYH>7C['?[8[^WNCn,NCcs8W&rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trr2osrr2osrquVUH%:?kI!^6hI=-?fIscQjIslcnIY*3& +I=-EeG^4OYI>*JsI!U0hJq&/qI!g<hI!g<hH[C-fI!gBjJUi#qIt<-$FE;tTHZjR] +I!L$_JV/N&H[gKoIt?YWrr)iqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)trr2rts8W#nmW`SgE,]`6DJjB2DfKZ4DJj<*E,'*(D.[F!KU&[R +bLkk<Z#Oi'EG]K-Df9Q4Df9T6Df9T6E,]`6E,9<.D/O6-DK(8dO-uE#P)kZ]F_ti/ +DJa3/DJX<2c2.>8s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)ts8W-!rr2osr;,u4F*DqVH?spbH?sd\GB\@ZH$+OZG'\CPDK^o,Zc(;Lkj,g) +I<^']GBeI]H?sm`H?sm`H$O^^H[:$_GC4[^GBItLMij0mS<oV.R$2uBFE`"TG^OaZ +G]V@4rVHKls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vun +qu?]rr;HKirgg0rX/iP3ZEgdA[C<HEXK8b3WhcAdVPBui^<>-hmed%ajfGbm[BZd6 +YHP7;ZEg[;Yct@9Xf\_0\[AcMX/rJ.ZaI9Uaj\_abfRc:\$)m:YHFn.Za$[-huEWO +s8W&rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2osrr2os +r;,u6G^OmdI=6NlI=6HjH[:'eI!C*bGC+XWEdEb;[Dp\Rl0Q'1J:)flH$XmeI=6Nl +I=6NlI!g?jI=6TlH@C3gH?jd_Ng,m(Tq%X@R[&JNGC"X`H@C3dI!=';r;6Kms8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)men8Q0 +A7fLhBkV0nAnk^bCLh-sB5M?mClc3do)/L^pA4^``b9+$DJNs%Bk_9qBk_9qBP;*o +Bk_9qAnYpfE+<d+E-gmDr;6Egp\FQi@;9IgB4kjkBk:mi\G5gss8W)ts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqkJhDfp&@EcZ8@ +EcQ,@CN4N9EHZ;FF)#i``THsps7uHfs8L;]EH$#>Ecc>BEH-#>F)uGFEH,u=F)u>A +F)$#9F`hVMo)&Ies8N&us1E#bEH#o;F*2VFDf!/bq"k!hrr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vunqu?]rs8W)toTlSaVPpW"WMlr'[CN?? +XJN//WN;n[P,QF`pAP$ip\44Ho:VqXYcXt.X/iG-Xf\P#VP^Z)YH+OtWNW\0[@sY" +R?d@?s8W-!qu-Q>S>`BeXK8P-YH+\&b5_G?s8W)ts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W)trqbGjF*VhLF`qnLF`qnQDfg8FG'e=W +F_u8e_W:Fhs7uEdrVOr^F`_nPG'J1RF`hkNG'8%PG'8"OG'7tNGA_hHH$XR]nG3(_ +rr)cnrOZlgFEDVHG'J7RF)o"lq"t'irr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr2rts8W&o`FNFf@:Nn]An>LaAR]+]A7K=]@:45ZiqW9E +qYU-cr;Q]ob@G=!BP:sgAnGXeAnGXeAS#IcAnGXe@qoOd>\n1fB\N%Kr;-?eq=aHh +>\dnaA7B%XAn#1[W;H>fs8W&srr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trVjuVCi+'/E,]`5DJsH0D0'W5EG0*%J$\J@s8W,tqtpBm +s8UP_E,BK1DJjB2DJjB2E,]f:DJj?1E,]]:D/X$-EbT1Aq"ashs8Duts1`&aDK0Q1 +Df0T5C2'jMq"k!hrVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8Vunqu?]rs8W&tj--IBUSY#lVPU8o['?a:V51>nUS"dHs8W-!rqufrrVQ3Wpme.U +WiDtpW2Qf!WiDnlUSG#rXJhnhVQm;.TrP&]OnJMFs8W,urVHQ@Q`6g_WMc_oXJhtm +])Va/s8W&srr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)u +s8W)trVarXE,fi;F)uAAEH?5AEHZABG&;,6J[XkBrVlcnqtp?krVb8aFE)ACEcQ5B +EcQ5BF)uDDF)uACF)u>GEH>i<G&D-Qp@nRbrqu`mr4ZfeEHQ8>EcH5ADJu]Vq"t'i +rVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8Vol +[9[-E?!UiI@q/nS?rpWB?t3VQHb/P@q"FL_s8W)us8Doq_d$b_?t3VQ?smAM?smAM +?smAM?smAM@Td&@@UibR`;BT7rVccrrVQDr=CY]H@:*AK@UESNQi$XVs8W&trr2rt +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!qZ"0<C1h9r +ChdZuCMRj#CN"!(B4QP*o)J^aqZ$Qkq>C6irVk&PChdX!CMIU!Bk_<sCMRWuCMR[" +Bk_KtCgq0nA7N[Ws8W&rs8W-!s0u9JBkqKuC2.['BjmV5q>1-krVulrs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8W-!s8W#sgRG.@Y-+_%V59r^ +VOafmX/VGBS^I<6nE]K:s8W-!s8)E^nWfc@VQ$MlVl-PpW2QJdWiDhhV5UDoVOaEK +U7e!Abl.SAs8Vfdq>^KKTWY2lWMcbrVPC>nY5eP%s8W&trr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!qYn0ADJO--Df0H1DJjH-DK9Z6 +C1i.4nc&FZq#:9jqu-Nlr;FoRE,KK1Df0H1D/F0.DJj<.DJj</D/F9+DIm^&BkYQa +s8W&rrr2orrOQHVD/X?0DJjH3DePaAqYU<mrVulrs8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8VojUJG-$>Zt?:?XI&B=^#!-?<L[0l1auK +qtp3hs8N&urVQQn_H:2R>[:T?>[1N=>[1N=>[1N=>[1N==^P9?@U<'9r;-Hnrr2rr +rVQ5h>$bE;?!CN<>?G<8KD56>s8W)urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)ts8W-!s8W-!qZ!NqB5)'mB4PRbB4bgkBOPU`Au4qks8Durqu-Hg +qYU0drVt)LB4kadAnP^fAS#IcB4kdeB4kggAS#IiASZ'k>-@o%s8W)ts8W-!qm0R> +AS#LcAnPdgBNg;jq>1-krr;uss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W&rs8W-!s8W#sac3-tXfJ4kTqS*MT:i0XWLoL!s8W,uoC22ArVuotrqQ0] +n<'33U8+KZUSF]`UnjWTVP]uXTqnQ_SYMXJU77;(s8;oss8Vfbq>^KFU8ao_V5'oc +T:E'XRfEEfs8W)urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +s8W-!s8W-!qYdHuCMdp(C1q?sC2%EuCLh9nBrLIqrVZTjq>L9hr;HQir;OrNCMRTt +C27R!Bk_<sC2.HsC2.HtBk_6uB5VU#?aKb.s8W)trr)iqq6aaJBk_?sC27QsDIJG! +qYU<mrr;uss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8VihO&&hV<E3""='Sd,;cZb%=)H.Xqu?Tls8W-!s8Vrqq"FOX^fOZ<=]e^+='&C% +='&I);HQju=&i@$<*<+$>Zd3bq>C9lqu6Wqs7lAi;H[+$='/L(<Dm+#F8GP,s8W)u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!qu;s` +An,@^@:3DO@:<YX?Y<Ybe,T7BqtpEmrr2oqqZ$EdrVF`HA6r_R@:E\T@q/tW@q/q[ +@UrnSAmo1_?!q/IRfEBbrr)Zjs8W,ss0>^8ART%XA7T4ZAQ=$Tq"t*krr<#us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8W-!s8W#s`0I6rV5:#b +U8O?EQC4DGQ^lV+r;ZTdq"OU[qtg*dp\FggoTkr6US=HVU8"HZUnjWTS>)RLVPL,] +S=uFERYeEOqYL6lr;ZH_qYgH?RA64:TV\K]S!^FSPQ1O[s8W#qs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!qYcgdBkD!jAS#@bA7T4` +@VfLrdJj"AqtpBlrr2oqqZ$Bcr;+ZKB45C`AS,OdAnGXeAnGOeA7oLbBk1di@:a(Z +S,N9_rr2cmrr2oorNfdAB4GOdB4kgdCL)8bp\b'krr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VceL.bHB<(Ttf;cH^t;H$O_HJnVo +rV-<frr2rtq>^Blqu6Ni[n0M"<)cgq;Gp=f;GpCj;bp@f;H-Ii;,1.d9S3!3r;QQf +rr)irrV?5d9N5%j;,U7g;,:7jD"I>trr;uss8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!q>ZFQ@UN\J?X?o??XdJS@SMC7s8;cerV??f +s8M]ir;QZps8Bi6?=@,F?X@#D?=$oC?=%)I@pE8F?=.)G@9$6\rVccqq=jgarr;ur +s/o4)@p`JH?XI2I?W;(?q>:0krr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W&rs8W-!s8Vrq]9/k^Um\!QStD:8Q'S2,])Vg1rqQB_o^r"Uo(r4\ +qZ$Tql\LdqSt;RGSXlCFT:_R@SXH(=Tqe6MR?jJ0MR3?_rVZZms8MZaq#:<:PFe/+ +R\-7GQ^+SEN;rhUs8W#ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)ts8W-!s8W-!q#-:UARf=V@q/kR@V'%[AQ"6ErVQNdrV??frr2Wir;QWorqs]8 +@:WeT@q&kT@:<SQ@:<\SARAkU@:E\QAQi/mqtpBlqY:$erVlcnrNB:2ARStT@U`eS +AR'<Nq#(-krr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8V`dH:Uh*;+OMZ9i+P[:J4-7iV`?Bs8VoorVuloqt^!Ylh0l6Z;=:k85)ZK +9MA/T9he>V9M%lL92/&R:.\2]EpW_ur:g*fq>UEorVH>e8Pi5X9hnDU9h\>YA*EXa +rVulrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-! +q#>e>?<^c;>$4s3<`iI'9p+W=qYC*gpA=des8;orrV?'`s7O04=]na-=]em4>$>*5 +>?bB:>$5!4=^,'0='U"@s8Duos8Mfls8W)us/o$t?<^K5>$,$6=B0)'qY^<ls8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8W&rs8Vin]oeqW +Ss>q>R[ok9S!ST1p&FIJr;Z`qs8W,us8W-!s8W-!n!KH2S"H.;S=H7FTV.gBQ'.c2 +R[f\2U7Ia?RfE$Ks8W#ppA=geq>('.RA6CES=Q7AQ'A,?NV`JKs8Vrls8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!p\fbF@:!DG?X?uE +>?tN;:m:)Ap\4Xcq#(*is8;lpqtTaZqt%X2?!UT=>[(N@?=$rE?=$rB?!LW@>[C`> +>[_sLrVHNirVlTjs8W&rrN9++@:!2E?<gfB?<h:6q>C3krr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VZbECNPi8kV]J8khiO929Wj +p@7nWp\4^ds7lBfn_:I:J9>7.?p[L\9M@uN84Z<D8P)KF7nH-C84uKG7nZBUh"^F: +p%eOcs8W#qrqZ>d85)ZI91qlI84Z<G?K(YVrr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!pA]81=]JR,;H6_!;--^uIHpb'rVuK[ +rVHNfq>U*G]:+P(Ci+&b<`iL-<a&R+<`W7%='&L-<*NC+<`i:%;.&>^p]($ds8W,u +qu$Kns/o!o=]SO&=&`7&;Gq&gqu$Hns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&rs8W&rs8Vcl[#^ZAQ^F,.Q^X/-Q^Y)Ws7GjTo(N+`s8Dip +q<#l'SW\;GSViZ#T:_I>R$aD6S=Gt2OHQ$)Q^X,'S"Gq7s8V?TrVuiprVZKfqY:*. +R%Kh6R[T_5OH?*-M"CK@s8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)ts8W-!s8W-!p&059>Zb38='Aa3<a8d4JF!+)qYp-Zrql]iq>U'E]:4V) +C27`b>$P?==^>37>$>*5>$>'5='f$7=^+s3<b17go_eL]rr<#tqu$HkrN9(&>Zk66 +>?G$2=BT8!qY^?ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8V`fCICQT8P)6>6paF=5A0-TqZ$Top\4I[p$g1h>=^q?3']bt5=S(, +6:!n+6psF26psL66pO716:O407n$2&qt:!cqtp0ZrV-?is7c2^7S#s87n?*;6:=44 +>N#5Prr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W&spA]#';bg7i:K:=j<)l>%li6taqt^'ds8W&jd[+B;7n#a:9282\;G9h[:fL:h +:f'tb:f(%b<Dl[o9N"_]=Pa#Ps7u]prq$0_rqcWiqlECd;c-Ci;c-Fl9hf!Vqu$El +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8Vunrr;Zj +[?6]7R[TG.R$O86KU`#=mI9oEmd^&Os8W,NXdYE7M34!fMNO3hR$X)+Q'I`(R$a/( +S!TG%N0'?qR?DscqXOIUq"Xj]rq?Bls8W,:PaRc!R@9P1OHQ-*Nr/MDs8Vuns8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)tp&0#1<`)t$ +;d!.#=BeC9m/?h[r;-0ar;QTdeX^AR9hRuP:fC1l<_u^m;cct!<)cgr<E3't=B/:$ +;--dr=kruLs7uWlr:Bp]rql]jqQ*Op<`E+$=&i4#;cI8hq>:0js8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VfhCI(3J7RKR25<hXr +;RlMkqu?*apAFgS_KS+$5Y"438Okp36:O4+6UF1'5s[e&5s[k*4[hIu7Q4"*5srBP +qY'jep[e"!r;ZHcs7c,Y6:=.+6:F4-5=.b+=lK#Mrr<#ts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&sq#>5&:J4MY;,C"_;a+9qrUp3j +lMUGWs74<[69@Y29i"\b7nul[9heDY;bKk\9he>V9he8Z8krAU=A):ZaRoN.qu?]n +q9/d:oCr7[q5HhW:esb\:JXba9hAXQq>C3js8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&rs8Vunrr;`l[>p?-Q^!c"PEVJkQgFbBmd]K9mIpDI +f:$`,P*q]+R[B/%NKK?gR@'A'P*2)qQ'IMqPamYiOFa-kPE>/2q==:Wo^M\$rVuNf +s8W,7OHkriPa@Z#NKB[!N;W;As8Vums8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)tp\f50;GL4i<E)gm=%$?0r:Bjbli$PUrU@pX76sXI +;cQq#9N+kk;,L:k<_cOj;,L1f;Gp:l9i4t_>u4?oan,K*qu?QfpWNO7o_AF]po-tc +;c6Il;c?Om;c$ocp\Xshs8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8VrkD*C*F6:!du3BoM^Pl(7Ps8N&soC:jd5;thl3'BAe3BB8c +5X%@s4?Ghm5!D4s5X7V$5s%Ou6V'L03hc<CmeZtXnbJQ4rV63gqY0ZS4@)4r5!qIt +4$Q+r<TN]Irr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)ts8W)tr;U\'91hiK9M.iN7mrsKqYC$`rV-3cl@DGk91h`L:JaYV9hnDU8k_cG +:.n5Q8P)KF8P)ZI;FaAV8kqp[s8VQ_rU9U_R#1b6qZ$Egr1u\N9hIoL92/#R9L;tJ +q#:3is8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8Vun +s8Vol\rMZ)NffZrSYM9h\,Z-oqtU-arVuo$Ko)7dPF.T"OHG`kOcPfqP`q>oO,oNi +Pa%;mP`_K%SthR,D86,NoD/:Np]%t4s8;6TqZ$T4KoqL\PaR]!NKKcrO8n_Ds8Vun +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W)tqu(_2 +:/+P\:esea91>HOq>'sbrqZBbl@_f":es_\;,U+`:f1(c:Jjh[;GU(a:JXb^:JXk^ +=%lLn:f0cbrVc3\rUKX\S<*XCq#:-dqPHbY;,0h`:Jjh`;bCE^p&+dfs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VujD)s^=4[1\c +3'Jlsh"^[Ep&FphpX3#%1I+8c3'K/W2`3NW4ubVb4$#A^3]]Ac4?Pbi3'B5`3C#JV +NUZN5oDedfpW,^NqY^?io(MgK3'KMd3^>\g2`j>b;s3]Ls8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W&srV^Y"84Z3?5YFUA3b[[S +qZ$$[p&"dD>=(DD9gVBG7nH6@85;fH7n-!<7Rfm<77BX677BX:6q9O65<PG6rVuNh +p%A@26[AM's8;H`rhM\H91;3>7nZ<D8j$8Cq#C<ks8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8Vunrr;ij\r)8uM3!R`S>(Y(s8Vchn+lYR +s6OuLH'4\[PF7AiNf9!_O,9'`PELl`Mi3[YOH>H]Mj'0ePadPR_#OH7q#BsWrRknY +s8VWWo)Ja+JW>eNOHtoiM2e!bNW8MDs8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)ts8W)tr;1\-91qoP6r6QT5&'0Wq>^!^p\b!D>X^kQ +;FaAW8P;]J92SJV9M8&P8kM`L91qoN91qiO8PDZN76d:;qYg'cp\4U27t:C4rVH*\ +r1ubS:J",R92A,R;++^Wp&=sis8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr2rts8W)trr;ifIkWZ84ZbS]2)I+jr;HZmrquNb_cAKM4#A]P4ZG>\ +3&r`N1,LdI3]T&U1cI0H2*!WZ4ZYJ[4#8[7qYgHos8V`bfhs2SrUTa]o_S?U1,hBX +2E3f\2E<cM;sX#Ss8Vrms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2rts8W)urV1k$7n6!86UO1+5d^@_qtL*iqu5)U3^#qs6qU*A6:O@34[2G. +6Ua@/6UX@56UaI65sn")6:47-5'm2&qtL'hp&F&W16DP0qYg3fr1Q5=845m9779F0 +764iJo)/F`s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rVccrr;-'S]mGKlOH,6WOcXG's8)<Sr;ZfsjGA_YT9t@lQB@2jN/a0lL5:kPOH5'K +NKfQhMi<UUNJ`[SObmk<s8N&no_%VLs-[WAnE'?Cq>^K0KSb\FMN=!cOHZ#iK)Y?> +s8W#qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)t +qt>b,84cHG7n6'=6+$OcqtL*hqY\`O5Xe@87SHTM7nZBE6q0^>7S66C7Rp!B7S$'B +7nQ?B7n?<A5^WG*rVHKlo_d`W23e(2q>L'cqkQMI9h@lJ91hZF8j?_So)8OcrVlis +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)ts8MrkLG(;7 +4>JiL1FZ8fq#(0dr9=+>@NdE\.5WM!+=8Wl/i,=A/hen82DI0I1bCL:/i5UI3B/rW +0.:<#qYpNks7lKR?7mghqY:'[r;-;\0/baG0fM'L1c7'@=mu+bs8Vuns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-!s8.R06UO7&6TdUl +@.O!cs7?0Ts6F_Z3B8o\4>e`J3'')b5<qS)5!_Co7R9I+6pNt&6TdRs6UX!mD>=)* +r:0^[r9n;Y30aF?s763gs.)/85s@P&5s@Lu5<3?Mp\jsds8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrrV?0X`Hm,kO+iLFO+iSns7uBR +qXOU_K2dYhNL50=H%1L%Jqob_JqSu?N/*1?NJ`mZKSPSDM27.OKmoKjs8W,ioBu8; +V0-b"mHaZCs8W,2JV]&5KoV7SNfT<\M#[5Ks8W&rs8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W,urV;I86q'^57mKL)@Ia*frq$'Srp+MV +5=%>!4uY5V4[2+t7Roj95t4:.8OQ*87mfR28OGp784c',Dtj2,rUg$^qs8,]4.,p@ +rpp'drh)GD7RKO77moa66p>5Up\t*hrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr2rts8W)ts8;flOtSF>1GUa@0e8ahoDe^fs7Q)C-8mYTBPrE` +NJMd_75ckP2)mBI3&E?G/1rS)1bgO9.5!;,.9P-oqu$Emq"a'',rI</rVHHhqtKuQ +.5Wh:/N#:91GUU7BD)'"rr;ons8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr2rts8W,srVVj;5sILp5X%@gW;lGdp](9jpP^L[3Dsd7KT:tEG@!p, +4?>_p4?Gej5!V4o5WV4q2`s&_4ubQ5iqrWJqY^<ln;Jt`2N%P2qYC'`rKoE+5!D%q +4ZP_j4#h6Xq#1$es8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rVccrrVH9^aa/SrP`piTJpFp,s8Vfhp@&$hFbOURJq]\kUS<s#Dea!+O-5EY +Oc>$KM2R1AMi<LQM2mmaC4=q3q=jLRp](9)H]*?qp[\4\s8W,0K8tqNJr5PEMi*:C +Q2gRUrVuoss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rt +s8W,sr;2mD6UF1.6pa4#VZ$/cq#:9fplI0p4]QE@L67LQH=9N65!28)6:"+/6:=(* +6Tmn+4[M7s6U*VAh>-sDqY^6hmuB4m4HTR<qtg6crL5f86UO(.69[e)5Ws/aq#1*h +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)ts8Vlo +RP--?0ean.00Rt_r9s[_m/#*n4Ggc8p\+F]qtp3ZjL'.o,UkN(/i#+3/Li2(/hJ_2 +0Ie_(41FtYpAb'iqX]b#/Mnl6qtBjYq>'rS,VL`$/2Ak20ek=2F85A,s8W#os8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-!q>ZpB4Zkee +1-Rfijo5/Dr:o^[dQg!S_sIBtqtp3aq=NsdJP%RP4?>A]4ZPYd3^Pqi3]oVe4Yf[J +s8;Tgq>:3hR5m/g0Tc;-p[e7Wrg>E#3&ira3]T>d4#VNeoDSXcs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrrVc?ad<^:sP*(!BJ;a.$ +s7?-Zj7MDHMqI_&s8W-!s8W-!s66\;IY3Q8LPpe7MMHe@Knt\JOG]<]I,4bro_\4O +q>I[5K8Op#p$VVMrr<#0IYii8JVT,>M2@">U&XZ\s8W,us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-!q#6sK5<hJ#2F9Z%j8AiCrV5aW +e3lcia6ig"qu$<eqXj*hK1n*^69m\"5s7Lt4[hV#5XIh$69.`Vr;--cq>:-dR6*Mu +2O=:6q"4FZrgYf04Ztts5<_D#5WaGnoDS[err2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr)lm]c\mV.5Wt9.sC[[p\=[[s8@_7nFleW +o)/C]o_\IVq"adQNBAF?2CU44/2&D*.Om2--RpN&_#"$+s8;i[oqNl^/hA6*q>:3l +oD&'I+ttPu.kNG31GC@)Hi*L9s8W)ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr2rts8W)ss7sDU4ZYSj68^QKs8)Zgr:^-eM3@K,s8VlorVZ<b +rV6Bls6u@B-o=%C3^,Pd2a9,U5sI@l2Ef4]rq?3]qsXQi1,:mM09uJ4s8MWdqOB9' +4?GPb4[D@t3%Ta_nbiCas8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rVccrr;6Hek\5j/L6S0gEM3."q"FRZs8SCWq"t*fmeHSSr;ZfkqYU<g +Y]4E1OG8UOLl6Y6QBm8YJV85hbkCPks8Dl_s4E!XN/Do-naZDKlh1:gG)M67JqT)E +N.le%V>ouZqt^9ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr2rts8W)ss7sP_5X%>$83Jn^r:p-`r:^-fMNdZ-rr)Ngr;60ar:g-frpZ7D/j)K^ +5=7V#3^Pqk6pa"#3C1^_r:^'`r9aEe3&j,c1mn.9rr2KaqOTN15X.Cr6:OC14>DQh +o)8Rds8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +s8Vup_[HVT$jR^p*M*!'nb;_Po(DD;q>Bj\qXjFWq>0g\p@%\Lo$Cqh0.\\$,V^er +/h&A%+"&8*nbr:\qY0RT]J(`d.4QX)rqcHfp\X`Q+YG2j-m0BA$O@(AN;EALs8W)s +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-!qu+JG +',qo,-7C1;s8Vfep%e.Ln*g2Sp](9ipAOg`qYg?bqu$BDC*>Gn3\iER3]/lQ4?5,V +0W4gJqY0UNnGU?j1H@<N0q&(<pA"C\qj]?%3ArcJ-6X6B((?K-p%n[cs8N&us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrrVcQhmT!S-BkMpI +A&nHCo(DVOp\t*gs8Vfgp@.VMs8W&qq!n7]s8T0>M2@(?J;o&)R[&GQH%BtlrV>gG +qtT^YdUe,jLPU<,p@.P@n+cpnFbtm,Is6$SA6iM=[f>pmqt^9ls8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-!qu+VQ(*=Y;/2/NNr;Q?_ +p%e1OnF6>SpAOsap&+[`q>C*\q>:!@E%*n45;tJf4ZG\g5<Lbb1TU<Mq"OLRnb^6g +3BoPd2OsdBpA"@ZqjoT/4ZYVZ.jc8T)A/;6pA=jfs8N&us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trVucoi#Vn)!rrH3(!lpTq"FIYmJ[(^ +o_/7ZnbDhOp@7JEqXO4QpA<cf+#Yc+-m^Gp-R^Jh1*V\Rs8Vloq>Kd84sM@-0HqBo +qXj[]q>'c=#RU\9!!3-'"9eo3\,#t$s8W)ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr2rts8W&tq>B1s%2TZf'bqV4rqH<cq"sFUs82K`rqc6_ +qtp9ameltMp%eIak]e@:4?YVZ4#\rP3&!HBPPY:Pm.g8Pp"`"f1d=;a/"$8+q=sd\ +q1oh,(_mJj&/5fj&.6,Iq"jsgs8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rVc]nqu-Bks&N9;C1U[I8F-<Io^_kWkkP2TmI0cAo(i%Sp$hSQ +s7PL<m/-(5G)q6-I!g['LPU_0JR52Qs7uHio_\[gRY$6TN-]?fq=4=Wq>L>k=CbcI +>?tH??X6c-ec5=:qZ$Tqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2rtrr2lrqYfJ'&f_`%(`4:ArqH6_q"sFUs82H^rV?$[q>'jYmecnNoCr"X +k'8LH5X@Fi5<Lqe4Z#GUPPb@Tnb`%Yo\`D!3($+n/XuY/qYBs_q26.5)Aj)$',MH# +'G/"Tq>:-is8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)ts8W&onM::M!XAf2-27?3oD84Wr:]UVrUfdTo_J4Qo(V\KpA"R^o_81I;'?o, +0./+o-7Kub*-1]Kn,N4\qY]PA',VMn$4m;grq?!]p\"H5!<E0&"UY;4"pkYOh=gaG +s8W#rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-! +qtT_B&/#Tl'FuYeqY'X]q"jm\n,*+Wp@\.Vqt^!ao_S=TrVQBhs702>.5X4G2)@!F +.lSf!qto^VmI0cHmR%j9-5mjK'oDt`o(i%PrdbUo&f))r&eYrp(E)9-p\XpgrVuot +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]nrVcZms(bkN +Bl70J=TA9hn+QVUp[R_Lp?h;;p%nFUnb2eYr;>sJlM(>YW-WB.K78?&L5C5*CTd^; +m/HhXp%nZ,Dg-D@AnY8^rU]XWp\Fi^;-R14?tEVL@:<MIqu$*]qZ$Tqs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rtrr2rtr;#qI'c.Z+(D8=p +qtB[Zq"jm\n,*(Up%7qRq=jRYo_S=Vqt]p^rUF2J/N?$V3B/u[0KUe4q>9OWo(;\S +mRJEK.NTZX(QA@doD84Sre(q#'H%],'bqT))^"/8q#(*irVuots8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr;ulr*BF0"UYP<:B1@hq"4.R +rUp!TkOeTFqu?]lq>C0gp[J"To_%kN]bL_W#m:V@%1<dS60eLAqu-Q`qWUKM!sS`/ +!Wi@Gq"FCUp$qm+!!EE/"UYG8!=Ar^nEp/Rs8W&ts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)ur:U&"$PaHt)\,^=q!\(Qo_eUXqt0CV +rV63cq=F:SqYKmQp\=@Qq#A;Q'bqMt)&4&')\,C'rpKFPrp]s]<X]ZY&/c6"&qg,U +p%S1MrdbRq(E!i%)&3f$$o%JDqu6TorVuots8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rVc]nrr;rns+XW`@:ie7G5qO5q=X@Vn)s3-n,3+YqYg<a +pA+[cq!n:\n*TB.ge^[I@U3AH?s@;L?2"<jqu-9Qr;V7DA7nnC;,0WfqtBd_qYC/b +8Q],%@:ihL?Y*2RqsX@Ys8W&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr2rtrr2osrV$5&&K)K/*>)9IqssRUoDACTq=<qLr:p-dqt9[Yqtp*U +q"aORp%u]N(E"/-*>on9+VdQ6rp][XrpTgW<Y-)e',hW&&r$5Vp%\7OrIY\!)&jA3 +)]'80&iTINqu6TorVuots8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)ts8Mfnq1]:`"Tei/F8u44p@S.Hp\FRZo_&.Zp\t-gr;ZBfqXsR[p\"LO +o3h_1"U>58#mph_f)51=s7,pbpLjO9!t#/=!s&CIqt'CVq"4E4!!ii4#6Y&6"q1Z; +oCDq]s8W&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rt +s8W,upAOlI'c%T"(CbN^o^2GIqX4%Nq>U?ls82Kap\"=\nbi1Ro_S:Ss7Q8&&fMDu +'GD5p%P6E5oD&+GpAb)6%3-'$(EXG/'SZSYo)&7Tre(q')\s,"'H@r-%9iZ"rr2or +rVuots8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]ns8Mcm +s/og>@:!)*S,`<Tp\"@Ll0Id3r;HZmpA4UZq>^*eqtBjco'Q#/s-uYe?=6u@>Zt?X +o)JLas7,RQq0k51A8>FT;GB`jrq#d^rVZ\k9jCt.@piGJA7no/rq--ds8W&ts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rtrr2rsp\t&M)]BV2 +)%_)jp[IqMq<dhJp\ambrqlEcq=j^ao)8CVp&"ITrUBW!'HS&.(`+)-'JnSCo_SIP +pAXr0%NcN0)'B_2'Sl\Zo)/=VrIu"+*>fY0(*4D9'4CY,rr2orrVuots8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#tosPG6#6kG9QN-m_ +o^;_Pq=XRTd=t[f0e"G-:M[r3p%n.Jr:'(Hpra*N#7CbD#7DNiqtK^YmdKu9Hj0cX +$NLV<$4R;hr:f^RoBuF-!s]2A$47(A":,<mq=t!is8W)ts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)trV?0&(_I`,(Clo0o(VhGs7lB] +s8Cc7>=((p.QURLcL(W2o'uJ?lM1D2(Cq2s(E3r#+NaZZo(hbDs7D*\(DS&)*Y0#% +&qp;Znb2bLrIb^n'bqN$*#05(&Wlnarr)iqrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rVccrs8W&rrr<#spqg?:<E*X>\,Z'pqXjaZo^Mn\s2^ab +F),E4PHX`\rVPpIqsWkFrmsbKE-,Vu<_Z<Eo'?)No_&7\\liTS=%I:?@Tud=s7bmM +o'QIS7pTkE?!UlG@Ui6Bp@J=as8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr2rtrr2orrqlE&*Y]S5)\eh>p%n@MrqH3[rVG?6@7`I60L/fb +d-^`/nF?>AlhCA,)AO/3)]]\2,g-&ZoD7qFrUGa])AjS0+r)%9(5Mn`nFcMFr.kt$ +)]K_8*Z,b5(6eUhrr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)ts8W,pq!B=7!t#89UAaidp&+:No_[og&dJdR%299[#m^i<aSbo* +r:BjYo^Y$P#m^\A"Ve'4lMU,Fn+H4?%Kd%@!s]#>#S./hp\+:Yna?:.#7V(I$4I"< +":,FMoD&@crr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr2rts8W,srUfp[.iK6H(([;:mJ$>Qnb2SNo5l#b&.T0b&e>K_&m`obrUKXMqY'me +6l$OQ'cRZ(Yl+%jme6/Dq5,&A)\j20(E!o(&;L)UpAXdWs+M.&((qE$().N!'Z0P; +rr)fps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrs8W&r +s8DumqtY5;;-7I>_uK0"qu?*Un+Q=$7S-KT:KC7b9h[Wmd/E\)qssXWqYk\MEcGPr +<*%iTiUHL;p&"Zg9NGk;:K(tE?sQX=rq>mXnEp7R94MaM?!gfB@Ui@"nFQ\[s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rtrr2rrrq?0[ +0c_)Q)AT4InG;kWnFcDLn8]Tb()7Q((_m_u'OK)aqsjLOqt9g^7iWKf)''D7[/97g +n+Z>FpS/]B*Z,_6)]oq<'T)\[p&4OQreVC1*#KV8(`+&.)9)7Brr2ors8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W&soD(f["ptJ8 +Wr;YdoC2&>oCkTW$jm.C#6Fl+!!3B,)pdsDq<mkMl2,N)$31G6':naeo(;P:o)"@Y +#ndRO$k!:L&Ieeoq>'RPmdKmu"q1qK#R^eH"V*!Gn+m"`r;Q`rs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W,uq>0da9b\Ea(`9[ZmI0c? +n,2kR9G&0[()Ro*)&jP;*YB[Jo_&(Knb;>KH4Cr-*"3pdoCVVGp$)2JNtr-=%h96c +$ka*[!ep@BnalAEqKrbc%La!i(*FD51$nB)rr2oss8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rVccrs8W&rs8VrmkOX.)A8#=ObQ%)&qtTLPo(n,D +ARetOAS,Of@V'@bBDL]Rp$VDKmf0(]Bk_g,:Ufrfo_.k<q>[Zg:KUCf8kDcW;GKE` +s8;K]n*p@H4\ejM8P`l7@qAd@jmW6Lq>:3ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr2rtrr2rsqYTm^:`(,n)B#p\nFH;EmJ?JM:_k)l)&jP5 +)B9\;+;H?WnalSEo(_MLI1m_=+VQ#qoCVVGo]YuGOr=rP'bhH"&f;H"$&\NQnal;A +qLB.o'b_?&)'^%B1[XW*rr2lqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)tr;Zfsr:cE\$jm:F[/U""oC_\CqMGpo#S.7K#m:;3"98W0 +$;gEel2L8Kp@ja^$4-qGC$GWho^h\Op="1R<`rd;?!q,L@q];Zq=X@Ro^hsa?smDV +>o3eP"Tqm!n,*.brVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2rts8W#rrr2osS.m"a*?2cmoC;PLp[nBA*#050)]BY5*$$1<*>B/fqt97R +nFlVSRMm1b(`@Jerq,jSp&4a:GtD.DA7]:aB4YOb@CZ%&oCr(Uri^!I@VKL((`=,% +@/'-err2rtrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccr +s8W&rr;ZfsnF=b*C1q-]ec5@8qu--Uq2JH\@;'(WB4u!oB3]4`<dO/sjo4fIqu=TA +Bl\<>V>pPep@\"QrTK\qS=cURS"?UWUoBpKs7l9_p%8:0Q_L=XSm5l?@p4ZfjmiBN +qYU<ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rtrr2ip +rr2imT,8^n*ur#op@S(Rp%&!<+;u.A*ZZ:@*?H=>*uGhsq"*bLnb;eTSKAsr*?TLq +rq,jSo_eO9HqdsWC27KuD/3m)BYF35oCr"QrNg9TBlIi:)]Tb2@e]<err2orrr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W,ts7"MM +#mgn<X7l;_o'Gu5qaCSr#mLY>#71P9!X8`>%M[[nlM'`?p\VE0"UPJ?XnqY_p@e%G +o_@hLrqQNns8Dusrr)3SrV5pMm-FKCnFl\UkV!,F&IY9.o)A[hqu$Hns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W,tr:g6ig`%(L+;_Ze +o(;eNqXFGM%NHT3*#TP1(`+,5(EF5)h>Ha:m.C)N]GVY/*?2Zjl0\*6md9`En,*%V +rr2oos8N&un+HMKna5c3qYL$fs8VdX()J,3X8hbirr2rtrr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrs8W-!s8MrjlJ_bPD/X<#b5_80n*0E0 +s*&4%An,CaDK'/p?"%SnAmGB9l1=<8oCq6A<+9HMci<Y,mdBc?kj79qs7u]ps8;in +rVZBemcj?3l0.d3o_S7Us)r6sDcjjUkk+oToCW(_s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W,urV?Ech&m^[+rIido_%qIp[7uO'd=eB +*ZQ.@)]9S:)C$4Ai;;p9mIg5N^Dn17+!%rkmI9`=nF-#EmJ6_Trr2ops8N#sn+HMK +na5`1q>'a^r;H4Q)]U.DWrDPerr2iorr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)ts8W&tp$20:!t,D8V>9`RmHa64i$&R;%g!(F#7LqI +#QkDA%M>T9m-j]=n+P!>#RCe<ZLReknbW%On+6DOo'l)<nFH,=mIL2Dnb2\MoCq_D +mHO*,lm)cF"sMRfp&G!jqu$Hns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr2rts8W,tp\aj]r(ReE+;M<`mdBc>pA*\i(E+V<*ZZ%:*?QFE*YoJ& +W;lDWp$_DEdN0GL*u)QanFl;Ep$_GDr;6!Om-sH4naQ#>s75RJp@e1TnFH;Dp%/#; +(*45EiV3$Fr;Q`rrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rVccrs8W-!s8Mcji7n9rB5qfr`;fJulKI[/q,DEXCgUgiDKBQ+@pX7qAm*FZlg+96 +lgjgO=(,cJeGoFAl14cGj6,jtoC;5<n+#l7m.(,Oiog+3nFZ#4na5Z,s(cIoA8_/9 +lh1;XoCW(_s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rt +s8W,uq>L!UqGJ+Q+r@Q`nF,o9oCq;m*ZugK+<VXI+<_mJ+WMI>XT%\Wp@.PEeKGtT ++Vqico_IqLp[R_DqYB[MmIBZ8naPu<rpoIIp@e.Rn+$#<o'l?2)^?7Vi:ZaArVl`n +rr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#p +qu$5X"qUt>O8/21n+HGLc4LKm&.\mH#6Y/7$3^_;'FpH'o'5l?o'sg1"UbbF](Pjq +mdp)Jq!.29o()DEoCMSGp@n.Jo(_V=nau\No^qtOnLXkN"'PZls8Vuorr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2oqr;?Nmr14KF +*u^UDo'Gr>o'k0Q+s.jH)]p=J*[)^J+;l:7PPP+Inac8DcQ4)O*Y?0]o_7eFo_\FK +lgjW;oCVYGoCVVFoCD8=o^hVAoBuAIn*0C%)'9T'r9O@[s8W-!rr2rts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]ns8W-!s8Mror;HM`;eKNDa8bu% +lgO<:nPt!`B4bR_BPD7"BOc!qFD8JhlJh0tk3)bL=^tuFeGJk2mdp)Jq!.,5nF5u= +naZ/?n*o;opAF=En+6DKmdBK2s(H.d=,6J0p%/4`rVccrs8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2orr;?KkqjeHJ*u^[Fo'Gl<oCLNW +-6j]X*$-=I+!MmL+r_jIRJHREnac5@dN9GR+Vqofp%[tHo_\FKlgjW;oCVYGoCVYH +naQ#?naQ)=p@7hKo'Q$/*$Q20r9O=Zrr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Dipr;H$6,R4J\BD_)anau>Li>i%3&.]'P +"U557"q(_F'*Z2Co'Q&=o)$'3%L<IP[JTa_o'>K,mHaB;n*fc8nF5r:p%@_Ap%7G; +p$qGBn`ToEoe6gZ!iu:fs8Vuorr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trr2ooqu?Zqn_,W7*[Ge(nF#r?lh9No)'g7D+<i!R+rq^L ++<hm6^%M9rnF#lI_BUBM*>Q6bo]5T/kO.a'oChYAnF5r:nF5u<md]c6meHJAk3hm, +o]l-2+r_6(qWn.Ys8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rVc]ns8W-!s8;corVl<>EF*$bTE"ZRmI'3:s'^#!B4bagAnu="A8-"'F("53 +lK.?rk4/@X@UN\Pci<Uso'>K,mHa<7mHs?0mdBN2mdAlfq=s.CoC2/?lf%F(s(c[l +<n[**p%/4`rVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)trr2opqu?WonC]T;*[Gk*nF#l=m.oit*@N*T+X&!Q,9@mN+s\HH_tE`nnF#iE +a!;rR+<.ukp#Yc1kO.a'oChYAnF5r:nF6#>m-jN8lh0r=l1+?.p[7c<,p!i1qWn+X +rr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8Moqq>Tm]@LN_O6LOC9md9K2l;.Kh#7LtK&J>Wj%LNCG#p[jbm-XE=o(e[_#RLqJ +VtKfQr:BLSo'c,6nF5o8nF5r:m-jK8nF,Z3nauYPo'6#DjXCNB2W4B,s8Dims8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rsqu?Qn +o)</5+ra>Mo_8(Po'u-I'HnMB+W_aG)^-FN+s\9bh=U4(m.'WDTcG3t,94;pqX44M +nFlA=n*'3-mHs?0mdBK3o(288nb;G:nF,u7m-*q"*#_?1o_/7\s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8MoqqZ$*aSRZqc +H2m3uq=s4<nS_NGC3+K;F)c&9An>drA7sBXq=jLPm.JeBI!p0H[/BstrUf^WoC2>: +n*f]4n*f`6nau5:o^gu%rr2N[p$hhXs(GqPF8tq-rqu]ms8Vuns8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rsqu?Nmnbm2@-6H(Uo(DYH +nF,aF(*anI,U+NY+XSHZ+s\<ef^\J!n+6)GU`gp,-6BPlqX==Pnb;SAnEKE1mdBQ4 +n*fZ5nac/:mITi:oCDM=naGm,+!!l8p%SI`rVliss8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&sqY^3bX;DBP-fs[Zm,[Qur0%Et +&.&aU$PO3`%1NOI!b^rtht-O8kPfc6#n7+FX7bf@mcs30mdK`8o'l,:nF?&<nF,o; +lLFK/kk"K:nFZGQl7N>MD"Zies8Dims8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)trr2rtrVl`or;*Q<+WN?)md9Z5nEg1A*$lsT+s@jF +*uH1K,9n(JqZ#UImd]H>Jf,[V*>uTkmcEg!lgO3-nEo`5mHs?1n*]`8o((u3qX3G0 +m-!p3lL4C1)BF8(htd6Js8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&squ-EfkAPTd?MERBp[@;*s0?$OF)Z8ED/sW/AS>pt +?*!Jjm/?VKiVKlnI=Z?D\GZ$en*BE4n*or<naGo6n*oi8p%7Y=me,f!p&4@EoD87^ +s(u4VWW1oQrqu]ms8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)trr2rtrVl]mqt[TG,p5)2m-F6-mcse>*[`?[,paWX,on3W,9n+Mp&3qC +nakoBKcMBc+<.igmcNp$m-sE1na>r9mdBQ5nF,o:naYl5p?Li0n*9H9n+H9:*?]e, +i;3HNrVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr<#urqQHam7@Hk"Jl(]o'5T(r9.\s#n%.G#7LqN$4dIP<9*iFnF,f9na&XP +#7(D?V!RUFp%J.Qp%7nNp@\(Mo_%nLo'kr4mcO!+l1=E;n+Z\Sj"UiaeEQ`+rVQQm +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2os +s8W,qs7YqV)^H<-r8m\@o'?/6E#^&K-6OQ_-79u^+WatQp$D,6lL+37:*Co1+==Vp +qu-Bgr;-9cq>C-dq>'maqtg3co(;G8p%7PAnb2hZq=j\S*&6:9p&"ads8W)ts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr;rqrV-6] +pLnGg=Ocrtna5o9s6bh;>&AS-Ed)JDChd$@H1UUkqtfXIoCn)PCM[HglMpnas8W-! +s8W-!s8W-!s8W-!s8W-!lf7[1jmVR+rr<#us*[j]mdp5Qs8Vigs8Vuns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2oss8W)orq5bV*[_l3 +r8mV=nETo6E#TrI-Qs`a-7C)b+<=eOp?hA<lgOB7;'I83+!nDiq"sm`qt^'_q"sp` +q"X[]qYBs]nal54oCD/;nFcPSqY9YO*&HC:pAFpfrr2ors8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr;uprVlTcoTomn%U8]!iTf^n +kPs=P)Zp6M"9er5":ui!g&(.)nF>r;p<4H^$4RRO5Yt3P9i"V`<E2gm;c6Ii;GpCj +:f1/eq!mS4nac=T91i5l58=B6naQDSrVZWns8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2osrql`qqY9fS+<i%Fo^M#2nF,K;kC5<0 ++!VpQ+WVOJ4+uYokN_L(lL+Aq,p"Hb/g+,"=]SF"<`WC-<**1'<`W=)=BJ^0>H7Pk +mdK`<orhCq<F&TS)0G`Hq#(-is8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr;olr;HB_rjHlj@Z0R8i9g%*lMpmcCh7[3DfBK+ +AnuCfrr;'Bqu#dKpt&n^DK0W"L4sP`E,p#@GB\%KF`_\GEcQ2@H@'\@p$V8:mI'JD +>$ti]LLF&^s8)Wms8Vigs8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)trr2osrql]oq=jWS,:+ULo^Lr/mdB6:k'f*-+=&*S+W_XN3eQJl +kj.a.lgOPq-m'fd/K[nt=BAI&=BJg5<`rU/=BJ^/=]np4>H7Mim-X?6oWD+j=("uW +)0YfHq>L<krr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W&mqu?Hbs6M*E"UilUnFu;?oBPi8cBMQq0JYUZCl?U5r93D;n`]W0 +n7<.A$47@Q$k!RS$O$_<"pbA;#6tM?#6tJ>!rr@Iq=EnEq="97!!ri7!YuZlq"XX_ +qtg9ks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rV69iqY:'S5q*p'dIQSmn+H/3qYo6AC.UWU6r7l^df'46lgjB$p[J$!+=JZf +0-qe_*ZHFK+WqpQ+<i!R,9nBV+sS6P(Pr%YkO%a!qhl13*$#nM-dMP`q>UEos8W)t +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vui +q>L'\s7Bo=D0,@ChW=P3nDj'2iN\)I<`iUANiLk0puM2Lp[72#s/U?kCi"65GB7bA +GB%YCEcc;BF)uABEH,u=GB?]]r9WG.mca\<?#Xe(AT(W4oCMSKr;66`s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rV69iq=jmS +4XhL#f(A7tn+H25pA*@4Bh1BO6W%ocdej"/m.B`-o^)?p,q:8i/gVee,9S?W+sA-U ++X83V,U=TZ,:"ER(PhqXkO8!*r/):7+!;IT.*hV_q#10irr2orrr2rts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;lrrqQKhoDajR)Zs[M +q<dV/nF5B%oBYl/h;RGZnbMnBh<=.jlM'W7\/>_i$jmFY%1sEl'akQb%1a!\%M'*^ +%hB0^%1`kuqsWqGp?qp6$PX6_(^FC:lLt5Vqtg9ks8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,srr;ums8;EcW>mf;@JBBVn`9'' +lM1DQrV#UInF6/JqX3D3m-<[%meFXF*A&cj.k`+l-R:Am.kE(u.k2tt.k<)!.P!#$ +,*;ijlL+$!r/DpO.3^DfD#3Jls8W-!s8W)trr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;fnr:^*bo`*3CK56/;kM,k#mHNTts8W-! +s8W-!s8W,ag#Vr&nGV2*h-Y8TDJX<=G^4UZJTlKiH$apcH@'saH$O[]JV.44roiJ0 +lf\;:CO:MSHXN?Cjmi0Br;66`s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,srr;umrql9cV&VB7B)2&]n`9*)k4AKBq=En=mdToG +q<[&*mHj$.lh&%B+tkAm.PE+r/1E;$/1i;$/1W2#/1`;%.kE2&,*2`ilL=9*rJW!R +/0utmD><Dirr2lprr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8MurrqlQiq=a/4'GM"ErortBoC;P7hXL%&o^hV<kND*mmd]K/ +p$_J(1^sX"'Ft`b&.K$U&J5Te&J5Te&J5Te&J5Te$k3i!p[dh?m.0q'#7_@Y%NNI] +o`+mequ$Kos8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,urVlfnqY]sSoLCYl+JJeto'G]+p#kE0n`oE(l0%<qmd'H6kOA69r9-p* ++tG8p/1N2".k3)$/1`>'/1`>'/1`>'/1`D,-AqZjlKI?oq3!$S0.n\)dJED5s8N&u +s8W,urVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8Monr;$-aoC2HRH?s/[s6B"9l0J32jS%s'p%7nGjQ,UmoCL_pinXS6HtmeQJphKO +IscThF)uDDF)uDDEH,u<EH,u<DJrsnoBkf2p](8oDL$_\E+eA2kk=]Dq>L9jqYC0k +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVlfn +qY^$Wnj>,d,,P;&na5`0p?(B,nE]N0mHNium-=-2k3hm0q;t@!,:kJt.k*&".Oco" +/1`>'/1`;%.k<,#.k<,$-B.`jlg!a&q2cjP0.n\+d/!52rVZWns8W)trr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8MurrquZls7,T[ +!##hk]`6s]naGi3m,[C"oBbc4nET/tl07]tnE\k6"W.jb&J5We&J5N_&eYfi&eYfi +&eYfi&eYfi%gWSpq<mY:mdp1'#8.@Q#BK@ss8MrnqYU<ms8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVlfoqu-KZpq@_&+YgY/ +ipQ'nlgaQ2l0RZoipQC(lfmg$nDs0-k%c(r/hSY)/hAS+/hAS+/M/P+/M/P+/M/P+ +/M/\,+H66cl0%6pplHdT-Rp<lrTaF[s8N&us8W-!rr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Monr;-6drTj=(A9hd*`rFl\kNVL. +o'5<#o^2&?mH<Ztmd&r`h:V1M9m)#<It)BRJ:N)rFEDVHFEDVHEcQ2@EcQ2@EGA^h +p#tW-q>^JoDLH_TBtaQ4p@@kMq#(*hqYL6ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVlfoqu-N]p:;4t,;m16iU?*sm-sN.kj@d" +k4%p,l0.Kun)Eg$jCoVj0/"k-/LrG+/LrD)/M/P+/M/M)/1`>'/1`D$+HH<clKRX' +pl6UQ-Rp<nqW\"VrVZWms8W)trr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8Murrqu`os8Vum;[O->0WOs:kk"0#o'>c6mI9H0mcX9+ +nF>r7mH77J%graP%h]Ng%M'!T$k*OQ$k*OQ$k*OQ$k*OQ&Jl1:p#k`/kNVJk&Jl<# +/C<bQs8Dflr;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W,urVlforVlZgnaKs32'to,s6et;o'#Q'lKdWum-jN2p>bE&l07g0 +@N.$R0InV(/1WA11bUL80/#"50JG170JG170JG+1-B7fcmHj0+pm*Eb0IfBDnaZVV +s8W&qrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8Monr;-<gs8VrkLguR!N9:00j6Ppcp?^l%nauADjPB=bnF>o5s8SU)MhcIr +H\$p*FEi"QJ:N0#IXZ`pIXZ`pIXZ`pIXc7RkLo1dh;A+=FaJ:GD"d2]r;-<hs8W-! +o^r1`s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,u +rVlforVl`lp%2Z;2'to,rU/e:n)a*&lg3p(m-jE,p#PK,lg+03@i[9U/L`2&/hJY/ +0In_,/M/S-/hSb//hSb//hSb0.?X;dmHj'%p6@-_0e5KCn*p>SrVlcorr2ors8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2os +r;ZWe`YT!m%3qG8rpT.7l0[s(kjRcujlYpoo'5uKW%ASs$kE^Z&/5cl%M&pS$k*OQ +$k*OQ$k*OQ$k*OQ&/l4=p?Uu+k3DPm#o+3hP4.T4s8Mrnr;Zfss8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2orrr;]fnEeXY +/hn\0V"=HLnEf<"lK$shlK@EsmH*Zoo(fFI,V:W'0Jk:4/1iM31,(@70/#"50JG17 +0JG170JG(3,`qiil0%@"qirBZ/LRInm/I%`s8W&qrVccrs8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Mror;?Kks8Vofqf%FPBj[t7 +q<-o"mI'&lm.9]4gYCuQo'5rI]N\]jLl6G'I"R0/FEhqPJ:N0#IXZ`pIXZ`pIXZ`p +I=c:UkhYF`gu/1?D0^27df8J*rVQQks8W-!o^r1`s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2orrr;fko^L?a/hn\0U\"BLmHNj! +lfI6plK@<mm,m`uo_YdN,qgl*/M\k2/h\e1/hAS+/M/S-/hSb//hSb//hS_2-^=>j +l0%6qq33*W/h!RklM^b]rr)forr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)trr2orrr2rtqu?]is*>7d&I&_?[Gp93lLO?0mH<Tp +n*oi9n_p!+*=EVk%1Wp\&/#E`$OmLS&.fBa&.fBa&.fBa&.fBa#RL]amHs*)m-3k_ +&JbgMlL+]PrVlQgs8W-!r;?Tps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)ts8W-!s8W-!rr2orrr2cnq!S070J512+^DkRpAF.AlK[]sk3;@(md0`: +[p1d62D@!H2)$a@1H%!F0f(R?1,:U?1,:U?1,:U?1,:[D-C4K#n+Q>@p5LUX/8"YF +s8VurrVufnrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)trr2rts8VcXrJFp.OG.P>oDejjp%.;,m,m9cjlZ%.s8V)GF_ZPV +H@($bG'J%MFa%tPH?sm`H?sm`H?sm`H?sm`I=>\;q=jIUnEp7YI=b[Vs7,s^rr;rs +s8W-!o^r1`s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-! +s8W-!rr2orrr2foqXFN9/1i\-,[\IWo(VG<lK[`ujll.$n*g#;Zs,C32(gU=1+k47 +0/>.6/MAe30JG170JG170JG170JG.6,EqflmI]o8oSY:V-t;i;rr2iqqu6Qmrr2lp +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rt +s8W-!s8W-!k3b2>&e?'!,>=EEkkt8Nqtg-^nF5\YI7bIj&0;Mu#ndX\'GCuh%hB0` +&eYfi&eYfi&eYfi&eYfi$4IJddG3!hdb3],&0Dq'l1=lRs7uQhs8W-!r;?Tps8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!s8W-!rr2or +qu#RM="lKe1*\GVW8$J/p@S1UqY0LKkIlOM2^g(21c@'L0f1aE2)dEO1cI6J1c.$G +1c.$G1c.$G1c.*M0T+]Ie^E+-mYiYW4OWrqqZ$Qks8W#qrVccrs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vlij8Oa\ +OcFlu@=5NBoDS4JqYBgQk2tmNQ?QeKBRPG`G(4abH?jUUH$OX]I!g<hI!g<hI!g<h +I!g<hIt;I>h<*A?f%p)&I#De0s7Z-^s8;oss8W-!o^r1`s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!s8W-!rr2orr;GaM;_L!`2't%] +Ut4c*p@S4Wq=a:GkeMjQ1aa\/1Gg[A/i#4<0f(R?0JbI>1,:U?1,:U?1,:U?1,:R? +/Vi$=e'Q\%m#!>U36q-fqYpKjrr2lqrr2lps8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W-!q=jR]s8TVX"<%ja&IT6m/4sPt +K8Fnf;a_T=&depU'FtQa&ec)s'bh,e%h]`s'bqGu'bqGu'bqGu'bqGu&/>ct-6O0G +)AXD7((ZH&o_/=br;69ds8W-!qYL6ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rtrVuQ_]f@N.4$,GV-o+P8K8l7iQ\fs$ +2_Ha21,qEU2*<lX3&NZS3B0#Y2DmEP2`EZS2`EZS2`EZS2`EWU/i>mT3^#V`4#8T< +ScABSrVHQorr;rqrr2rtrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rVc]ns8W-!s8W-!s8W-!s8VZbnatIHDi07&IWg!hMk[Mjg#(,gV3ZdaIs5pX +I=-U%KS+o-H?k:#K7ei0IXZ`pIt)rtIt)rtIt)rtIu'&KHZb7,I<L<oG\XPan*^5R +s8Mlns8W-!qYL6ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr2lpq>U0`^H!W)2`ETG.lBt6J;]hfP_F-f2_Qg3/Mf@B0fV'K +2`*BK2)I0J2Dm?L2)R6K2)R6K2)R6K2)R0K0K;9W3BT>Y4#AZ>S,W'Orqucpr;Q]p +rr2lprr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr2rts8W-!p\F[^s75i>&e>Qi%M^'+)%IAu(DdVq%1sBo(`=#&(D7Aj'+u)t()IPl +&JQ0#()@Z$()@Z$()@Z$()@Z$'bMB')&X8+',23.&lmrUqZ$Tqq>C-ds8W-!qYU<m +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr2rts8DlXq3j6$4$Y\b1bq-J0eb.0/Mf.?1,LjH4[)+l4Z>D[2`E`X4?,D`3&ETS +3&ilW3&ilW3&ilW3&iuX3&39G3ArcO1-@.)na?;Sr;HTos8W&rrr2rtrr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]ns8W-!s8W-!s8W-!s8Vic +pu_UtI=Hs.H[pg&G\1>kD/Eir?XnS>Knb#)J:EE.Kn=o.H[L^*KnY85It)rtJ:N0# +J:N0#J:N0#KS5YSDJk>eG'&+fFKkf9p%n[fr;Z`ns8W-!qYU<ms8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2lprVQNXpmO#q +2`riS2`3QH/hS_-.PE>,1,UpI3&s&Y3AWTN2E!HP3&EQQ3&ENO2E!HO2E!HO2E!HO +2E!NN3]/ZJ3&NKH1-I4+md9lMrVl`orr)iqrr2lprr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vrls8D3NAeYgk'GDE( +&ekii',;B$',;,k%hocn'GM5q'bqGu'GM5q'GM5q&.fEf'GhQ%'bqGu(D[f(%LX-i +(_d\q(`+2$2V8!/s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)tqYU9ilgf*G3]oSh4Zkhj4?GVc +5!(bd5<V+k3&WfY3]]>a4$,Mc3]];_3]]De4?GSa3B9,]3]]8\3&s2c4uYJZ4#B)_ +68D?pq=4Lbs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vrhq=j1SSS38"L4t&'OHP*DJ:N?/N/iL? +It<-!K7ef/JqAT+J:N3%JUrB'J:N0#JUrB'JUrB'J:DurJq&B"IX6[!NfB-IM#Zi& +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)tqYL3hlLT*I2)mTU3]T2^2E*QR4#o5[3B&iU2Dd?O +2`EZS2`EZS2E!HO2E!KQ2`EWR2`EZS2`EZR2E*TQ3]/iP3&*KU5;,djq=O^es8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rVl]ms8)KUcUA?Z'GMH%$PF-k(DRc''c%Do&Jc9%'bqH!()@Z$ +()@Z$()@Z$&eYin()[u-(Ddl((`=52&IfQo()n53((_3"X69E\qu$Hns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W#qqu6Wkq<m$A3'BGh4?58]5s[^r4Zb_f5<_7p4?>Pc4$5Vf4?Pbi4?P_g +4?Phm5!;"i4$,Pe4?PYd4$5hn4ZPG`69dOh3^L^Rme6PUrr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8VulqXjR]s-\%_L5()$M3*CFKRe`2NfSdCJV/W-KS5#4K7ef/JqAW-K7ef/JqAT+ +K7ef/K7ef/JV&E'Kn4f(I"@38N/!.GrVtj@qu$Hns8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&squ-Ni +q![!B1H@HU3ArWQ4$>Ya3]T2]3B/uZ3]K)Y3&rrX3&ioY3&ilW3&ioY3B9&Z3B9)[ +3B9&Z3BB5\3B&fV5<Lq^2a5.Jnb;qYrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vroqu?]gp9ZXp ++VPV)$kF'j)&O/)()Io-(`3kt'bqGu'bqGu'bqGu'bqGu(Ddl('bqDs&eYfi'GM5q +(Ddbs()Rr0'G;OOr:o^Sq"t'js8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)tqYpBls7lW68Mrjp4?Yhm +4Zu"n5!2%p4?>Vj5sRY!5<h@s5<h@s5<h@s5<h=q5!D4s5s[e%5X7Ou5X7Iq76s$t +4$Gqq4JDTDnG2kVrr<#ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vrknb)qZs2]_:MM@1QJ:iQ2J:EK6 +JV&f:KSGPJM2@(GLPLY?LPLY?LPLY?NK&dOKnY57LPq.ONK&jSLkq1TO,o*OKRRI? +nEg)Qq"t'js8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)tqYg9is7cH-8Mi^j3]T)Y3BB5_4#o>`4#o>a +4$#Gb4$,Ja3]];_3]];_3]]>a4$,Mc4$,Mb4$,Mc4$,Ja5<Cne3]oJa31p$>nbMtW +rr<#ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8N#brVZNfiprul'He)0(`!u-*$$";)&XG7)]BD'(Ddl) +(`*u)(Ddl((Ddl()&X;0(Ddi&',2/r(Ddi%)B0>&*>p+G'bbrao(;eVqu-Qps8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W&qrpKa_qYfd\]KS5B3^u\25s@V&6U=%*5!;.t6U="(5sdn(5s[e& +5s[e&5s[b$5X7Y&6UO1,6UO1,6:!k&6pj=(770C-QiHOEr;QTls8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)_oCDbXmJld1I?TYXN/EIJK7o>HKS5>DLPV(RMi3LPMM[1HM2@(GM2@(G +O,o3WLPLY?LlILXOH>H\Mi<a\QB78fKn$l;k32jFqu-Qps8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)s +rpBX\qY]UT]KJ)<3'oqs4Zbhl5X%=o4Zkkk4Zbei4[)"k4?P_g4?P_g4?Pbi4Ztqk +4Ztni5!D.o4Zkkk5!;1n6pWprPPah=r;QTls8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,ts8Vrq +q=F!A.2j6A+!)46'GMH))]KM,()\&0()@Z$()@Z$'bqGu'bqGu)]K\3'GM2o'c%Q" +()@Vu)&sP4()7Gi,CK.Tq#:9irr<#us8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8Dutr;ZT`nu"W0 +9L;-77RTX46:4+-77B[66UF1/6psI477BU46psF26ps7(5sn(077BX66pj@17RTa9 +6UF@868glVo^hqZs8Drss8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VleqtogQqtTiaG_;HHLkh"Q +OH>6RLl77TP*1ZXO,o?_NK&pWN/W^SN/W^SPEV)eMMd:KO->`hO,o3UP*1NPLl.4G +E2N3rq>^?err<#us8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqufrqYp<^nY86+7m0+%5X.Fr5!M7r +5<hCu5<_7p5!D1q5<h=q5!D.o5!D+m5!D.o5!D1q5<_7p5<V;!5!;1s4>JpMo^hnY +rqucqs8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8;oss8)cjrV,RLN#iZN*ul"0'GVK()]KP.(E+85 +(Ddl((Ddl((Ddl((Ddl(*??+;()@W"(Ddi$'G_Gu*ZGh:%20`tA+B3bpA4dfs8W)t +s8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&ns8W,ps8)]fmf/qA6:XF06pa:15sdq+7Rfm:6psI477B[8 +7Rfj:7Rfj:7Rf[06UaL87n6'=6pa4.7n$*?5"S"/9gO+"o_/(Xs8W-!rr2rts8N&u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8Vigqt9RIs8;EegP:lULkUeKOHG9QLl7:VPEUl]OH>QcNfK-[NfK-[ +NfK-[Q'IMmN/W^SOd)#jNK9$UQ]ZfVIu'MRYlF:dp\Xjbs8W)ts8W,us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)qrr2rnrqQHdmJNV=4[MCs5!;(o4[)(p5X7V$5X7Ou5<hCu5X7S"5X7S"5X7Ou +5X7S"5X7V#5<V+m5X%Y'3CGhj7m2.ko_/%Vrr2rtrr2rts8N&us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&t +rVuorqu?<Om#rn9*uPt7)]fe5()7N"(`4),(Ddo*(`4),(`4),(`4),)]KY4(Ddo- +)]g"=)B9V2'G_u,*Zc)9n*U/Os8W)us8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qu6KlrquQj +o&]SD7QX:57R]g>8k_iK8kDNC7n6'>84Z9B84Z9B84Z9B84Z6@84Z<D84Q0=6pjC6 +8k;?><C'>N2h^qmq=O[cr;Q`rrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ur;Zfsn+H;;pSi%Y +SX5=pOHYNZPEL`XNK&jSO,oBaOH>QcOH>QcOH>QcOH>QcP*1ukP*1l_M2-e;Jr$+[ +Q&\t+m,e'<s8W-!s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r;QWnrr)WjoB,Y=69%J$5sRb* +6:=.+5s[e&5X7V$6:+"*6:+"*6:+"*6:+"*6:+"*6:+"*5sIV$69mXt:HM'70n8f] +qtC$grVlisrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,us8W#ss8W,qh!'eE)]Bh>)]TV5)]9G0 +)&X>2)&X;1)B'M4)B'M4)B'M4*??(<)&X>5*$HLL+<hgE*?#n9+qe_Sj7<6Mqu6Wq +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rqu`oqu6WqrqPXTWCTQM9M%`F8P`,V9hS#J8P)KF +8P2TI8kM]J8kM]J8kMZH8kM`L8kDQE8P)QM:.n;R9M//FNV_u3rVcTkrr)lss8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr<#up@eObkPrqeR@'2"OHG?ZR$NYfNfK*YOcbchP*1uk +P*1ukP*1ukP*1ukPa%DsPEhAnO,]!NMi=$hR=_UAi9L:@s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr)iqr;Q]prqYULV+!a<7mo[25t=F66pj:-6:+%,6UX=16psF26psF2 +6psF26psF26psC27R]d;7RKU37RTm/L\9j#rr2forr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +r;?Tps8W)tr;Zfls6T!T-5dsM+rM(2*#T_7*?,P*)&aG5)]Te9)]K_7)&aD3)B0V6 +)B'P:+<VgL*u5V2*?u:F,)Q3]qY^?ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]n +s8W&rrq?BZm_Vjk:/+YZ8PE&U8k;ZP8P_uQ9he>W9he>V9h\2R9MA/U:/">T91qoN +:/"DR9MnSa7oMR;puhMOrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q"Xmhs8W-!s8VQN +rUTO%Fb,[>R#d5gN/!^cQ^E_pOHG]hP*;&lP*1ujOHGZfN/`p_Q'IPtOH>TcP)kcm +Pa-uaC:+$-r;Q`ro^qqUs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrr2ors8W&srUp3XmCl.V +84ZEA5t":2770R85=It/7Rfj;7Rfj:7R]^677BX77R]a777Ka984H*86V'aA5>4,( +qWReRrr;usrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r;?Tps8W)trr;orrqQ0CRPl$#*@)L? +()@r5*?#Y2*??.?*#oq<*??.?*#oq<)]K_9*#ot@+s/!P*>]Y;)AsM7Npc*"r;HZq +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]ns8W,sqZ$NiqX;F67RU!O:/4MS9MJ5V +:/aqa:JOY[:/4S\:JOY[:/4PZ:/4PZ9hS2Q:JOST;-$@^:.hM`jR2sEs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!q"Xmhs8W-!s8VETqu6Thl(3`iPF@YtL4bqaQ^<i#Pa%Dr +PEV2oPa%DrPEV2oNK'$bQ^<u%P)kcgOH>g!Oc,3Rf)P./rr<#uo^qqUs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W&rrr2ors8W,tq>L9fq<P_!5X.b67Rfa07n?->6qKp?84Q0?7n6*@ +84Q0?7n6$<7Ros=7n-$<8Ou9:852N>7RO'Jk3r6Hs8W)trr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!qtpBms8W)tr;?Kmp](3hou']W$QC3,+WVUG*$6@F*Zc=B*??1B*#oq=*??+? +)]Ke<*??.?*#ok7*uu7:(F)8Jna,lIs8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W&rs8W-!rr2Ndo^_n3E)B#$=Ai'n:Jake<DZXo;GpCj;c?Oj;,U:i;,UCo;GpCj +;Gg@k<)Qgu;G^"Y>e9b"o_\L_s8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vfds8W-! +qtp?lnG2hOpWnM=H^1=qS=#h;R@'5"Pa%DsPa%GuQ'IPtPa%ArQ'ISuPa%DrPa%E! +T:hgIQBcs=jP9,"s8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2ors8W)trVlHe +p\"@0BhCBW:J"5N8P2NI9h7oM8P)KF8kMZH84cBE84cHI8P)KF8OuHG8k;`O8k;?? +=L[qhoDJObs8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtpBms8W)tq>:0hqu?]mm,Q?# +)]Ke;+X%sN*#g%F*ZZ7A*?6%>*Zc@E+!2RH*#p"?*??1C)]g%=(`F8(*)FH@jR2sG +rr<#urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8W)us8)Kgq!mqLm#"b?<E)mq +;,L.d<)lmr;GpCi;,U=k;cH^q<)cn!;c6Lk;cHXp=Ar'p;+XT-h#?[1rVlWirr<#u +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8Vfds8W-!q"k$fo_\OXmdC+]Mj9p+S=H1BR?Wo" +P`q>rP`q;qQ^<u'QBmi&QBmf#Pa%H!PEqT'R%9h7S&,.)fA?3#s8Vrms8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trr2ors8W#qs82TiqXj:Hjb$,r9M8&Q91qfH9MJ/P8P)KE +84cHI8kVfM91qrP8kDTG8kV`L:.[uJ8O5phf_Xe!r;QTlrr<#urr2rts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr2ors8W-!rquZjrr<#us8V0FU-9YF+snZb-QsEK+sA*Q+WhaI*??.B ++!)IF)]TtD+<V^J*$,q6.535)HK!rUrVuopqu$Hns8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rVccqs8W,ur;?QokOu;f93,+u>$>*.;H$h)>?b<7='/L(<`iL,=BS[+ +='/R,>$G3:<Dm"':/$lCmdp5PrqcWorVlisrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&o +q"Xmhqt^*bs8W-!p%I2-`dN0#VlQ#FPE;&qS!oh9S!f_7R@0J4R@'A0R[]\4Q'I`- +TV@g:P`:38Re?.Ds8Vofp\=dgs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2oq +rVccqrVc]ojmfTV6VgNX;,L1`8P2lX;,L1d9hnAU9MSAY:/=PX:/=V[:Jjqd8k;iX +8P"g.lgsuPrqcQkrr2rtrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2ors8W-!rr2]jrVccr +s8MiSiOr81)Bg=F+Y+i]*ZZ:D+<DRG+!)IG+<M[J*ZuaU,pXTT)'0Y?-lb^Tj4<Sl +s8W,srr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrrVuloqY^Bmr9s:3 +JkJm?<_l\#>ZY$/=BSg0='/R+='8^0=^"s4>[:W?>Zt68<aAisC;p,7pA+Xbrql`q +rr2rtrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&oq"Xmhqtp-bs8W-!p@Rn:s89-]T;I[* +NLHK.Q^4#,R[BP5S!oe9R[KS4SY)IER[KV7SYDOCPBi\cs6B@Ws8VogqYL6ls8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr2orrr2orqu6Tmr;HWnqWdS#H:1;"9h%cU;bg(^ +:/=\]9hnGX9i"S]:Jaha;cH[n;,Btb92e\OA\n'"oD/@arql]orr2rtrr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trr2rtrr;lnq>:3lrqZToq!daH4sqHn*$HFE+<DRH+WqpR ++WhdL+WhgM+!2[N+sA!I*Z6+H16CDSl2Ub[r:^'gs8W#pr;Zfss8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)trr2ors8Vuqrr<#us8W)orqZ*Km]Tko=C#<G?WUK9>$P<:>[L`>>$P<9 +>?kB:>[1Q>>?G-3>#.tgl/U\"r;?Tkr;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +qtpEns8VfdpAP$ks8W&rs8W,rlf7]UG^>LATr+QRS!f\6St2IHTUq[FSt)@CTqRsF +R@'S=VkT`:FLCGkf(B"As82`oqtp0`rVcWjs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2or +rr2forVlcps8W)prql9On#]V_9i4hk;b^+b:Jk"e;H6Uk:f:1f;,U7g;GpCi:ejn_ +:e46Nk2YG!rVZZjr;ZfsrVc`qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W#n +qtpBmrr2fns8D*F_d4Q.)]KhJ-R9l\+sA-V,U+EX,U+HZ,9\3S,psr_*uu8(\_c!0 +s8W,uqY^Bkrr2fmr;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2ors8W,us8Dutrr;us +q=jaZjnI_k>?tTC?"IMR?=-uC?!q#F?!grE?=7,G>?kQF@:*;E;hiomiplj@rr;ut +s8;oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtpEns8VfdqYgHos8W#qs8W)oo^M8J +rNVTVTV.sWU7\!JT:V[LUS4<RTqA!PV5'KKS=ZOSW2>loqu>aDnF?PYs8W,sqYKs] +rVcWjs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2orrr2orrqucprr;usqYC$_k4IDZ:f1+g +;-R.&;cH[n;cZms;cQgr<*!!t;,UCq<`N'q8Uo1ThspR?rr;rrs8;lqrVc`qs8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr)]jrVQ?\nF"591b(($)]BeA +,9@dH+XA0P+!i9^+<_dH,q1&h3*3<>jQZ^EpA+[drVc`qrVc`qs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#tq"41Md>:q*@U<AH?X[MR?Y!YY +@:3JO?!^rK?X72Q>$53S`ou[KqYU!^rVlcorr;rqrr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r:f^Im.Au&GCu-KUnaQUU7ImNTVJ3VUo0u[ +R@9hIZ*KpYIY,Apj5U+=pA+[drVc`qrVc`qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W,urVlfop[dqGc@o(i=Ar*p;cQpu;HHn%<E)q!<)lmt;c6e' +;,LD3^?"J>r;H?brVlcorr;rqrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr2]cp\Omhp?18`XBHnp,9\*M+"8BS,U4BT+XABb+s\H[,9\I$NmQk@ +o)J^br;HWorVccrrVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!r;$0es8Vo^lKuoP>$klP?=.,VAmo:_?t3YR>[h2SAn5@U?Z3@>qrRSOo^D_V +rr2lps8W&srr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&o +p@e7Uo'Q#Jn$@tBXK%kaSuAKYUS=EZVP^)_S"6L\YH"=jeGJprnb`7Yr;HWorVccr +rVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtTs`rr2ZX +kNL!9:fLV#;H$P$=]AO+<**+$;d!.'>$4s+<bJPsoATBAq"+F^rr2lps8W&srr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVZ]qs8W)bk3B[% +6n9u<,UFWb+X\Wg.OuS`+"/Zi3GYbamd9EAs7uTms8W)ts8W-!rr2oss8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#qrVZQhqtp<jqs<bDc&H@<BOG4V +?>!_\B5)!lAnP[hA5cTW\F/hNlMghYrVuotrr2rts8W)trr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q>1*hr;69bpA"@HnG1M$OcQ3+StDOLU8Xl^ +SXuXRUT'rDL7QKYkMtOoq"4=Zs8W)ts8W-!rr2oss8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&rrr)clr;?Klqs<\?abO;%?<(!+;d<@.>?tH<=BS^2 +>"qtB\*i\LlM^_Wr;Zfsrr2rts8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rVZZprVuopmGm*[\:6k%,UY&l-mp2b-7L#[,pGEo[b]p+ +pAapes8Vrlrr2oss8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W&srquZiqYKp`s82KWme>J;H>[,#AnPgk@U`hZAnYsiF._"Mm-49Cp&"dh +qtg<krr<#us8N#ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +qYU<kr;66`nFl_Sp[[qUs5UGcStVsVWMlGYR@L(MWM?]Js8W)dn+Q,=p\XXYrr2os +s8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&srr)cl +qtp-crql<QlL<<"E+;mM>?kH=<`W:*=B]!3Bpm?5lfn-Ap&"agqYL3jrr<#us8N#s +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)rq>1!fs8W-! +s8VlenaZ1mMc2GZ.P!&).3pT?L9T=llgjlOs8N&ur;Q`rrr2rts8W-!rr<#us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Drss8W,trr2orp[dV3 +mDtf<AR9"aD/s8l>AT\>j6l@+pA=gds8W)urr2ors8W-!s8W)us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qYL0js8W-!s8W&rrVcE_mI9bsY`Xs* +QCXeLRYulZYfc4tjm)C4s8W-!rVuotrr2rts8W-!rr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr)fprr<#trr2orp[me;n&h&7>>eX1?Y!>9 +;eD<+i9Tb"pAFpgs8W&trr2ors8W-!s8W)us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)tqtp9hs8N&us8W,ss8V9Mhor-N;`c<]:O/bYhW!ef +pAFsjs8N&trVlZns8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)us8W-!s8N∨QTms8)N`ip?1#gp`AkB60'8cg1)go_81Zr;Q]n +s8N&uq>UEos8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!q>1'is8W-!s8DinqYgBkrVl'Us8W,]^TF'+^u5%gs8;`enFZJRs8W-!rr;ut +s8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr;usrr2rprVl`os82]hjR2ErdAqn:=_3,Za5cOQnauSQr;Q]os8N#tqYpNps8W)t +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVcZl +rVuots8W-!rVcWcoBu)5lJ^CPlLX9&mJ$Y\rVlfps8W-!s8W)ts8W-!rr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W-!rql]n +qYgHos7l9RlK73`db*[Ll/q:'s8W-!s8W)sqtp?js8W-!s8W)ts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q"X^`r;?Nlr;HTjs8W-!o()YO +o^2)3lf-FJip5jkiTpI@r;HEbq>L?ns8W-!s8W-!rr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2orrr2osrqucpr;QZnrV,sOm-*Wh +eCs'Rl/q:'s8W)trr2orrVc`ps8W-!s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2inrr2rts8W-!rr;lnrr;uqo^D&5p&+Ua +s8Drrr;HTns8W-!rr;urrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&rrr<#us8W,trVlcnrVQWps8W,uq=j@Cj6?(-q#:3frr2os +s8W,tq"ssds8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!p\4O_rVc]nrVQNkrr<#uoCVnZs8W&pp$h)/mI^2QoC;bVqu$3`qYgHo +s8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W&rrr;usrr2oqrVlfprr)fprVlirqt]dKjm2I3q#:3frr2lqrr2orqu-Hks8N#s +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rVZQhrVlZiq>($hqtKaVq>L9kqtKsdrVcZos8W-!s8;]gs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrr2rts8W-! +s8W,tr;6Kns8W-!s8W,sp@\4XrVlTaqYpNprVlcps8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rqtp9fr;Zcp +q>1-kqtp9fr:omTpAY*ls8Dlqrr2rts8DZbq"t*ks8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W-!s8W)sr;6Hlrr2lp +rr2lmp%A+XrVlZeqYpKnrVlfqrr2orrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trVc`ps8Mihp\+CVqY0a\ +rVcK^s8;osrVc]ps8W-!rquTfrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W#prr2rts8W-!s8W,us8W-!s8MupqYC0hq>'scp[e=Y +s8W-!rr2lprr2rts8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&rqtp6dr;Zfsqtg?lq=sXTqtTmZqYpNls8W-!rr2rt +s8;Q_p\Y!jrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W&rrr2rts8W-!rr2ors8W,urVZQhq=spbq"ajcq"4O^s8W)trr2oqrVc`p +rVc`ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +q>'jar;Zfss8W-!rr2inqtg?mrVQ3Vm-<Znl0\6Dp\=dgs8W,uqtp3br;Zfss8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,u +rr2rts8W-!s8W-!qtg3fr;-$TnacJQs8DT^r;HTmrr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8Vier;Zfsq=jXYqu?6YmIC/Ts8W-!s8W-!s8Vlhs8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrVlfqrr2rts8W-!rr2or +r;6EiqY9XNmdKfCqu$*ZrVlfqrr;usrVc`qrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q>'j`qu6Tps8W)urr2fkp\4^fq=*=r +g"Fm(db!XOs8N&tr;ZcpqYU*ar;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N&srVlisrr<#us8MuqqYKsVl/U^[iS`\W +md^8PrV?3ar;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)srVcH`q"=4Ek2tjhjQYXdp@nRd +rVuiqrr<#us8Vlgs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W&rrVc`prr2rtrr<#urr)`kqtp0YkMb=UhVI#IlL=cLrqlNhrVlcp +rVc`qrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)us8W-!s8W-!s8W-!s7tj5e^DmncI(1oe^VjicICk@pAY'jr;Q`rs8W-! +r;?Nms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8Dooqtg9hqtp?krqu`gnET/riS`_WkiUsdkNV'jnbN+_s8;`krr2orr;?KjrVlis +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q"XUWp@e:Y +rVZTkr;HTks8W,nnEoB"l0Rd&l0.j9n*]iDqZ$TqrVufnqYU6ir;?Nms8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr)fnr;?Qmr;?Nm +rr)ikn)r]fh;$iEj5T"SiT&hTmIg>Us8Dinrr2orrVcZlrVliss8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W-!s8W-!s8W&om-<H[ +e^W1#daQb"g"=Tpe'm%0lLt,TrVuorrr<#urr2rts8W,us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#rr;?NkrVlfqq=a+:kN:pgjlGRe +kih6nki_3ml0\!8r;QTlrqu`or;?Qns8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!p\4FVp\4L^rVZZprVcNamIKuBnF,Z,mI'?.mHjT@ +o^2#4me?_\rr;omq>:-hrr2rts8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trr2oqrVc`orr2orqY0=?k2YI[iS`\Sj5f:]io/tWjlu4- +r;QWnrqu`orVc`ps8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)tqtTpZo^:r'h:pW8g"=m-gY(-,eC`U5g""d0g"k`Tp\b!g +qY^0as8W-!s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)trr2rts8W-!s8W,pna,H#io/t]l0@X#kN:phk2tjekNM-rn+6GSrVc`qs8W-! +s8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8DZ]nF#K%kjIs1o^_PAo(2>=nEfZ7n+6/Dr;QZns8W-!s8W-!s8W)t +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W)s +rVZTen*9#pi8<MRjQ5Ufj5T(YjQ,C[jQ5Idm.'rMrVc]orVccrs8W-!rr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8MuqqtBUJkMkCS +h;-oDhqZl9f%8O+f@f!:gt:E:f%&O9me-GSqu$9aqu$Els8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rss8W-!rV5sNkiM!jk3)$q +lg!Zsl0@Nrk3)$llKREkk3V[3qY^Bns8VuorVliss8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8W,qp@7P8nF5c1mdfr=n*or@ +p%7_BoC);Am-Es)oCr+Zs8W-!qu$Els8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)trr2rsrr2opqXs=Bk2YRbjQ5Rfk2kXajlY[cjQ5Rb +kN:a]j6H1-qY^?lrVcWkrVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr)`jp@7D/i8!)Cio8tWiS`YPh;-uHi8EPOi8EGIhV[2H +hW!_gp\OddrVZWos8W)us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W,us8N#mo'Yf*jlc!sm-O''lK[Qql0@R!lK[["lK[^%lg*m&nFle[ +s8W&qrVuotrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rVccrs8W-!s8MceoC),:p%A"No^h\GnF6#?oCMSFo^qbHoCVSCnacANs8W-!rVZWo +s8W)us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,u +rr)chnEfB"j5oRklK[Wtkih-ikNM-nkih6okND'nkih6pme-JVrr;rprVuotrr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Murrr2cfm-*Nj +io/kUi8NYRiSibTj5]1Zio8tWio8nShr!>Ki8`n`n+6>Rs8N#ts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVlisrqc9UmHj3*lg3p& +lg*m&lg4$+mHj3+m-O**mHs9,m-O-+mI0]BrVuosrr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVZWns8W,tp@\"Lp%7nLoCV\Io^qeK +p@e4Qp%A"Np@e4Ro^q_FoCMPGq#(0ls8N#ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVlisrV?$Plg!d"l0@Ksl07Hsl0@U#lg!d# +lK[["lK[Wul07KulgFB=r;Zfrrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8MrprquHZl/q$fk2k^dj5f:^jlPUdki_*ijlPUdjlY[c +j5]4]kiV!gl0Rs8s8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W,urr<#sq=X1AlKn!-mdBH/mHs?0mdK]8n*]W3mdKT4n*]W3n*ff8 +m-O01pA+ags8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8Murs8W#lo'c)=p@\1Sp%J+Qp\4FWqYBp\p\4FWp\=OXo^qhLp@RqHo(DkY +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,u +rVliqq"3t=l0Ia'm-O$'lg*p(m-X90mHj3+m-X0,mHj0)m-O3.lg*s-p%eXfs8W,u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)rq"4"@ +lfmTrki_*jk3(pjkND$lkND!ik2tjik2tggk2tghl0.Bql07R*qY^?ms8N#ts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8Mieo'l/:mdK]8 +n*f`7nF5r:nF?#;n*f`6nF5o8nF5u<nac8@nF,f5nalVTrr<#trr<#us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W,tqtKdTo^_YIq"ORYq"aa] +q>'j_q>'g\q"X[\q"X[\p\4FWp\+=Ro()JKr;Q`rs8W)us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8DcdnaGr6mI'H2mHs</mdBN2mdKT3 +mHs<.mdBK0mdBN2mdKZ6n*]T1nFQMSrr<#trr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr2osrVlckoC)#2m-F!(l07Htlg*m&lg!g%lK[["lKdd% +l0.?ql0@R!kiqI$m-F$,oCr.\s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)trr;utrqc9Vn*ff9nF?#;nF>u9n*f`5n*f]4mdBN3n*fc7n*oi: +naZ);nac/:n+-,Gr;Q`rs8W-!s8W)trr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2oss8W,sq"4.Jp%7tPp@e:Wq"XXZq"ORYp\4FVp\=OYp@\+Pp@n=Up%J.T +o^h_Lq#(0ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr;utrqc9VmdBT5n*of7n*of7n*f`5n*f]4mdBN3n*f`5mdKW6nF5l7nF>u8n+-,G +r;Q`rs8W-!s8W)trr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)srVQB_ +oC;57mHs<.lK[^%m-X3-mHs</mHs?0md9E.m-F!'lg3s&lKdm+mHj3-nauVRrVuot +rr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr)ioq=aIOnaQ,? +o()>@o(2A@naZ/>nac5?o()AAnaQ/@o()ACo'u8@oCMJ?n+#uAq>C3ks8W)us8W)t +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ss8Mojq"F@Op@e:Vp\4O] +q>0saqYL'cqYL*dqtg0bq=sa[q"a^Zp\=R[p%7nMpA+[es8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr)ioq=aIOnF,o;naZ,<nac2>naZ/> +nac5?o()AAnaQ,>naZ/?naQ&<o();=n+#uAq>C3ks8W)us8W)trr2rts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)us8W&qqY0XRoCVP@naZ/=nF5r:naZ/?naZ2@o()AB +o'u8?o()>@nF5r9nF6#=n*TT6o(;VLq>C9mrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr<#urVZQfp%7nLo^h_Io^h\GoCMVHo_%kKp%A"Np%A"Mo^qhL +o^qhLp%7qMp%7hEnFH2DpA"L_s8W)trr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)us8W&qs8;]fq"a[Xq>'j]q"X^^qtp9gqtp<hr;?Kjr;6BgqYL$`q>'j] +q>'m_p\"4Rp\F[`rr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr<#urVZQfp%7nLoCDPGo^h\GoCMVHo_%kKp%A"Np%A"Mo^qhLo^qeJo^h_Ip%7hE +nFH2DpA"L_s8W)trr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ts8W&p +p@\(LoCMPDo()ABoCVYFoCMVGoCMSFoCMSFoCMSFoCMVGo()ACo()DDnaQ/Cp%@tK +p%eUdrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#urVQ?_p%7nK +p@e1Pp%A%Qp@\.Qp\+=Sp@e4Rp@e4Rp@e4Rp\+@Up\=LWp@e.Mo_/"Pp%7tSrr2or +rr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ts8W&pqtg-`q"X[\qYL'b +qu$EjrVc`orVc]nrVc]nrVc]nqtp<gqtp9gqtp9fq=sd_qYL$_qYpNps8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#urVQ?_p%7nKp%A"Np%A%Qp@\.Q +p\+=Sp@e4Rp@e4Rp@e4Rp\+=Sp@n:Sp@e.Mo_/"Pp%7tSrr2orrr2orrr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8N#ts8Drsrr<#us8W-!rr2rts8W&pp[n1Lp@n=Up\+:Qo^qhMo^qeKp%A"N +p\+:Qp@S"Nq"aUSq"O=MoCV_Lp\+:Qp\=CSp\+L\s8Duts8W-!s8W-!s8W,us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,u +rr<#srr;uts8W-!s8W)ts8W-!rVQB_p[\(Rq"XXYp@e1Pp@n@Wq"aa]q>'paq>'m^ +q"jg_p@S1Up%S4Uq>0m\p@e:Wp%S7Uqtg?krr2orrr)lss8W-!s8N&us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ts8Drs +rr<#us8W-!rr2rts8W≺$6`qu$Bir;6?eq>'maqtp9gr;?Kjrr)cmrVQKjqu$<c +rVZHeqYU3hr;6Bgr;HHgr;6Hjs8W-!s8W,us8W-!s8W,us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#srr;uts8W-! +s8W)ts8W-!rVQB_p[\(Rq"XXYp@e1Pp@n=Up\=OYq"X^]q"X[Zp\FX]p@S1Uo_/"Q +q"a^Zp@e:Wp%S7Uqtg?krr2orrr2rts8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#us8W-!s8W-!s8W-!s8W-! +s8Mrmq"+=Xq"aaZp%J.Uq=s^Yp@\.Rp\+=Tp@\.Rp%J.Rp@n=Uq"XRWp@e4Rq"XXZ +p\ag[q"FL^s8W-!s8W,us8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W-!s8W-!s8W-!s8W-!s8W,ur;-6] +qYU*bqY0^Xq"jj_q"X^]qYU0dqYU-bqYU*bqtg'^q"X[\qYU-cqYL$`q>'gaq=j^Z +q#:<nrr)fprqufrrr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr<#us8W-!s8W-!s8W-!s8W-!s8MrmrV6BlrVlfn +qYU3irr)cmrVZWnrr)fprVZWnr;HWnq>1$erVc]orVc]nrVc`pr;Z`mrVQHks8W,u +rr<#ss8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)us8W-!s8W-!s8W-!s8W-!s8W,ur;-6]qYU*bqY0^Xq"jj_ +q"X[[q>0s`q>0p^q>0m^qYBm\q"X[\q>0p_q>'j^q>'gaq=j^Zq#:<nrr2orrr)ls +rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W,trr2lqrr;uss8W,urr)ckqXaL[pA4[^qYU0eqYL*dq=sa\ +q"OOWq"FLYpA"LYr;?KjqYC!_qt^$^q>0saq>1$cq>0serr;rsr;Zfss8W,urr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8DrrrVlfrrr2rts8N#rr;-<_q>L'br;-<gr;?Hhr;?Nkr;HQjqtp<f +r;HKirqlWkrVcWiqt^0dq>'maqtp6erVQEeqYpKorVu`nrr2rts8N#ts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W,trr2lqrr;uss8W,urr)ckrV$-gq>L<jrVlfqrVc`prr)fprVZTkrVQQmqu-Qm +rr2rtrVZWkrquZjrr<#urr<#uqu$Bls8W&tqu?]rs8W,urr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Drr +rVlfrrr2rts8N#rr;-<_q>L'br;-<gr;?Hhr;?Kiqu$?fqYL*bqu$9erVHHirVcWi +qt^0dq>'maqtp6erVQEeqYpKorVucorr2rts8N#ts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Muss8N#ts8W-!s8W-! +s8W,urr2lor:g!`pA4U_rVc]mqtp<iqYBs`qYBp^qtg-aqYBs`rVcTirr2lpr;6?d +qYU3grV?Eir;QQhr;$Bls8)cqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVuosrr<#us8W-!s8W-!s8N#s +rVZWhq>C!aqYgEmrr)cmrVlfprVlfpr;HZprVc`orVlcoqu$Korr2loqtg3frVc`l +rr)coqYL-cs8N#mrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Muss8N#ts8W-!s8W-!s8W,urr2los8)Wl +q>L6ks8W-!rr2rts8N#ts8Murs8W)ts8N#ts8W&ss8W-!s8Mups8W-!s8N&urr;oo +rql`ps7u]ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,urVuosrr<#us8W-!s8W-!s8N#srVZWhq>C!aqYgEm +rr)cmrVlcnr;HTlqu$Hlr;?Nkr;HTmqu$Korr2loqtg3frVc`lrr)coqYL-cs8N#n +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8;cmrr)irs8W-!rr)fps8W-!s8W)trr;rqrVlQiq>C6krr2oq +qtp9hrr)iqrVlWgrqlKiqu6Kgs8W#srVlfqrr2rtrr<#ns8MWfrVQEirr<#pr;Q`r +s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,squ-Nmrr<#us8W)srVliss8W-!rr2osrVc]op\jpcrr2orrr)forVuot +s8W-!qtpElqZ$NorVQWpr;Z`prr2ors8W)us7lWnoDJRaq>UBns8)Zms8W-!rr2rt +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8;cmrr)irs8W-!rr)fps8W-!s8W)trr;rqrVlQiq>C9ms8W-!r;?Kls8N&urr;ik +s8;]mr;Z]ks8W#srVliss8W-!s8W,qs8V]grVQEirr<#pr;Q`rs8W)ts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,squ-Nm +rr<#us8W)srVliss8W-!rr2osrVc]op\jpcrr2orrr)cmr;Q`qs8W)uqYL6iq>^Bm +r;-Hnr;Z`prr2ors8W)us7lWnoDJRaq>UBns8)Zms8W-!rr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr;rnqYgEkrVcZk +qYU6jrr2oss8W-!rr;rns8Vopqu6WprVlirrr)fprr2orrr2cjrquTkr;Q]nrquZn +r;Q`rs8W-!s8)cqpA4gdoDejjoDSU`q>:0ks8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)urVHBhrqu`nr;6?frVlfq +rr<#us8W)urVHQoq>^?ks8Murs8N&us8W-!s8W-!r;?Toqu?Zqs8N#qqu?Tns8W-! +s8W,qs8Vfhs82Efs8V]hr;-6drr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr;rnqYgEkrVcZkqYU6jrr2oss8W-! +rr;rns8Vopqu6Wqs8W-!s8N#ts8W-!s8Vuns8DforVuorrquZnr;Q`rs8W-!s8;os +q#(0hoDejjoDSU`q>:0ks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)urVHBhrqu`nr;6?frVlfqrr<#us8W)urVHQo +q>^?ks8Murs8N&trr<#us8W-!qtpElqZ$Nos8Drpqu?Tns8W-!s8W,qs8Vfhs82Ef +s8V]hr;-6drr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,rqu6Qjs8Muqrr<#trVlfrs8W-!s8W&mrr;rss8W,t +r;HZqs8W-!s8W-!s8W,urr;uqr;-BkrVlirr;HWps8W,uqZ$Kgs8;ZlrqZQas8Duf +qY^?ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s82]mrVHQnrVc`qs8Murrr<#us8W-!rV6BlrVuots8Dlos8W)t +rr2oqrVlfqrVZTlr;-Ejs8W&ss8Mrprr<#us8Mlpr:p<iq#C?hrpp*fs7,s`rr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,rqu6Qjs8Muqrr<#trVlfrs8W-!rVcWerr;rss8W,tr;HZqs8W-!s8N#t +s8W)srVlcmrVQTorVlirr;HWps8W,uqZ$Kgs8;ZlrqZQas8DufqY^?ms8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s82]mrVHQnrVc`qs8Murrr<#us8W-!rV6BlrVuots8Dlos8W)trr2orrr2orrr)fp +rVQQjrr;rrs8Mrprr<#us8Mlpr:p<iq#C?hrpp*fs7,s`rr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Muss8W)t +s8W)ts8MlhrVc`qs8W-!s8N&rs8W&lqYgHnrVlirrr2oss8W-!s8N&tq#16arq?6g +qYpNerVc`qs8W-!s8W#srqlZgs8Moqqu?Wor;Q`rs8N&us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVuotrr2rtrr2rs +qY0serr<#us8W,us8;osrV-0es8Murs8Mror;Q]prr2oprquKerUKp_rVu`ns7H9g +rr<#us8W-!r;ZcnrV-?kqu?QnrVl`os8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Muss8W)ts8W)ts8MlhrVc`q +s8W-!rVZWjs8W&lqYgHnrVlirrVc]ps8W-!s8Durp\b$]s7cHkqYpNerVc`qs8W-! +s8W#srqlZgs8Moqqu?Wor;Q`rs8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVuotrr2rtrr2rsqY0serr<#us8W,u +s8;osrV-0es8Murs8MuqrVlfqrr2oqrr)Thrpp*`r;ZWms7H9grr<#us8W-!r;Zcn +rV-?kqu?QnrVl`os8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr<#trr<#us8Vrqq>^Klr;$<cqu-QorqZTos8Durs8DlqrVuii +s8Dfos8Voirqucqrr2rts8W,trr<#tmKNdq").H-rqQKms8Durrr;lnrqufqrnXg- +s8Vljs8Vurs8W)us8W)us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)us8N#ts8W-!qZ$Bks82`irV-3fs8N#ns8W,ts8Durr;Z`qrV$9iqZ$Tq +q=sserr;uss8W-!s8Drss8MEj"9J[=p\k*drr<#ss8Drsqu$Hks8N#RYg`XPq"k$j +qu?]rrr<#urr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr<#trr<#us8Vrqq>^Klr;$<cqu-QorqZTos8Durs8DlqrVuiis8Dfos8Voirqucq +rr2rts8W,trr<#tmKNdq").H-rqQKms8Durrr;lnrqufqrnXg-s8Vljs8Vurs8W)u +s8W)us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8N#t +s8W-!qZ$Bks82`irV-3fs8N#ns8W,ts8Durr;Z`qrV$9iqZ$Tqq=sserr;uss8W-! +s8Drss8MEj"9J[=p\k*drr<#ss8Drsqu$Hks8N#RYg`XPq"k$jqu?]rrr<#urr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#ts8N&p +q>^?^rVulsrqlZms8W,tr;Zcrrr;ipr;HZmrq-0hq=O^]rqucqrr2rts8W)qqY^9f +rriH(!,qf6qYpEmrr;ors82ipqZ$QpHjKi_HM[[@qYgHor;Z`os8W-!s8W)us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ts8N&ts8)QkqsjXb +rr;uprVccrs8Dlqrr;utqZ$Kls82ffrVu]cs7cNjrr;uss8W-!rqlQir;-Es!WW4= +r;HKkr;Zcrr;Zfos8Dforr7?P!XsDOs8Mlns8W#srVccrs8W-!rr<#us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#ts8N&pq>^?^rVulsrqlZm +s8W,tr;Zcrrr;ipr;HZmrq-0hq=O^]rqucqrr2rts8W)qqY^9frriH(!,qf6qYpEm +rr;ors82ipqZ$QpHjKi_HM[[@qYgHor;Z`os8W-!s8W)us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ts8N&ts8)QkqsjXbrr;uprVccrs8Dlq +rr;utqZ$Kls82ffrVu]cs7cNjrr;uss8W-!rqlQir;-Es!WW4=r;HKkr;Zcrr;Zfo +s8Dforr7?P!XsDOs8Mlns8W#srVccrs8W-!rr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8;ims763XfX$0LWW)bos82irs8Moq +s82`oOa(k^CQ82is8Drss8W-!s8W&pqu-Kkr;Zs'!HS5>rr)lss8W-!s8Mlnrr;r7 +&c_n4%b1:MrqHEks8DutrVuoss8W&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr<#rrVQWcs6eOGJoRdhqZ$Tms8W,uqu?]nr;Vn( +EGTEMqYpNnrr<#us8W-!rVQKjrVZTo"9\aGs8N#rs8W-!s8W,uqYgEnrPK6J!!*SZ +q"k!arr2rrs8W&ts8N&urVuots8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)us8;ims763XfX$0LWW)bos82irs8Moqs82`oOa(k^CQ82i +s8Drss8W-!s8W&pqu-Kkr;Zs'!HS5>rr)lss8W-!s8Mlnrr;r7&c_n4%b1:MrqHEk +s8DutrVuoss8W&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr<#rrVQWcs6eOGJoRdhqZ$Tms8W,uqu?]nr;Vn(EGTEMqYpNnrr<#u +s8W-!rVQKjrVZTo"9\aGs8N#rs8W-!s8W,uqYgEnrPK6J!!*SZq"k!arr2rrs8W&t +s8N&urVuots8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,us8W-! +s8;lrr;?Hlo9_KO!!!!)B`J,3s8W)us8W&qrr2l3"TSQ(!&jQNs8N&us8W-!rr;ur +rVuotrW!**!,DH3s7lWnrr)lqs8Duqr;HZ+!so#1!4Dk*s8W-!rVuosr;Zfqs8W)u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N&us8W,srr;oo +qu?8T3"u>m!!m9<s8N&urr<#urVZZorP/R:!<E0YpAb0ls8W-!s8W)urr)fqs8W&u +"U+m@r;Zfls8N#rs8Durs8;fns1&4<!WiA0s8Duts8W&ts8Mrrs8Dutrr<#us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,us8W-!s8;lrr;?Hlo9_KO +!!!!)B`J,3s8W)us8W&qrr2l3"TSQ(!&jQNs8N&us8W-!rr;urrVuotrW!**!,DH3 +s7lWnrr)lqs8Duqr;HZ+!so#1!4Dk*s8W-!rVuosr;Zfqs8W)us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N&us8W,srr;ooqu?8T3"u>m!!m9< +s8N&urr<#urVZZorP/R:!<E0YpAb0ls8W-!s8W)urr)fqs8W&u"U+m@r;Zfls8N#r +s8Durs8;fns1&4<!WiA0s8Duts8W&ts8Mrrs8Dutrr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2orq>^Kkrr<"8$3L8."98c1CAn,2s8;os +r;ZcnrVHO9%0HS2!&OZQs8N&us8W-!s8W-!rr<#tr<*0*")@c6q#($hr;Z]orV?Kk +qtU*J$NL80#gNAJqu-9gs8Tj>r;Zcorr;uts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W,urr2orrr2`ns8)`ps(r)F!!!-%$3Fu@rVuoqs8W#srqlZj +ruV[P!!*'Us8;ors8W-!s8W-!s8W)us8Ms"!X/[@r;ZQiqu?Tor;QZjs8;chr8A"` +!s&\Prr2fnp\t3m^U!e;rqucqrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8N#srr2orq>^Kkrr<"8$3L8."98c1CAn,2s8;osr;ZcnrVHO9%0HS2 +!&OZQs8N&us8W-!s8W-!rr<#tr<*0*")@c6q#($hr;Z]orV?KkqtU*J$NL80#gNAJ +qu-9gs8Tj>r;Zcorr;uts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W,urr2orrr2`ns8)`ps(r)F!!!-%$3Fu@rVuoqs8W#srqlZjruV[P!!*'Us8;or +s8W-!s8W-!s8W)us8Ms"!X/[@r;ZQiqu?Tor;QZjs8;chr8A"`!s&\Prr2fnp\t3m +^U!e;rqucqrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr)cnq>^9jrk0TX"TSN,!!!'&C]FG4s8;oss8Vrnq>=b,!!!**!&=EOs8N&us8N&u +s8W-!s8N#sq#pa$#]9P?q#C<hrr)]nrVu`ms8VinI1-)]MuE;Irql_V9c!nMr;HTm +r;Q`rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oqr;HHk +q>^H-,le)K!!WE'!X!6<s8;ops8W-!qY^0eA-Dr5!sS`[r;Zfrs8W,us8W-!s8W,u +rr2]s!!ERErVuZmrVHNlqZ$NoqYgHop]#XM!!nM]o`"jes,Tkj")n,9rVcZns8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr)cnq>^9jrk0TX +"TSN,!!!'&C]FG4s8;oss8Vrnq>=b,!!!**!&=EOs8N&us8N&us8W-!s8N#sq#pa$ +#]9P?q#C<hrr)]nrVu`ms8VinI1-)]MuE;Irql_V9c!nMr;HTmr;Q`rs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oqr;HHkq>^H-,le)K!!WE' +!X!6<s8;ops8W-!qY^0eA-Dr5!sS`[r;Zfrs8W,us8W-!s8W,urr2]s!!ERErVuZm +rVHNlqZ$NoqYgHop]#XM!!nM]o`"jes,Tkj")n,9rVcZns8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr)fpqZ$Qp_@?eR!WWQcLW0;drr<#u +rr;utr;ZZis1SI5!tbM6!&FNPs8Duts8N&urr<#us8W-!rs&T*!,DE2rr)fhrql]o +qt^9ap]'jbs37V.rVHQkqt]jn!s]$DrV?Bkr;HZns8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr2oqrVlZnrr9hF#6Y).$9![Ys7QBks8W)urr;or +qt^9+!!!*5!!*'TrVliqs8W,us8W)us8W-!s8W*(!WW48qu?ZorV$6frr2fjs7H'c +oDej8X6BNYs82]hoF1m-#&*u2r;Z]ns8;oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trr)fpqZ$Qp_@?eR!WWQcLW0;drr<#urr;utr;ZZis1SI5 +!tbM6!&FNPs8Duts8N&urr<#us8W-!rs&T*!,DE2rr)fhrql]oqt^9ap]'jbs37V. +rVHQkqt]jn!s]$DrV?Bkr;HZns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr2oqrVlZnrr9hF#6Y).$9![Ys7QBks8W)urr;orqt^9+!!!*5!!*'T +rVliqs8W,us8W)us8W-!s8W*(!WW48qu?ZorV$6frr2fjs7H'coDej8X6BNYs82]h +oF1m-#&*u2r;Z]ns8;oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr)fqs8N#tqu$H&'EJ19!+XserUg-is7H?jrr<#us8VrqngjhN&MaCh!&4HNs8Drs +rr2rss8W,urr2osqu?g""*4><rpod_pAb-Zs8N&us8;o`rVulsr;ZNkq#C6n!!!%E +rqH?jr;?Qis8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)srVuos +rr;lnrjNRB!!<42i;`cJs8W,ks8N#ts8W-!qZ$+;!XoYr!Wi?Us8;oqrr;uss8N&u +s8N#srr;lr!s&LEr;HWcpAajdrpBabs8W,ss6T^arr;orp]($gquQiu!I4V<r;Z]m +rqZTos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr)fqs8N#tqu$H& +'EJ19!+XserUg-is7H?jrr<#us8VrqngjhN&MaCh!&4HNs8Drsrr2rss8W,urr2os +qu?g""*4><rpod_pAb-Zs8N&us8;o`rVulsr;ZNkq#C6n!!!%ErqH?jr;?Qis8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)srVuosrr;lnrjNRB!!<42 +i;`cJs8W,ks8N#ts8W-!qZ$+;!XoYr!Wi?Us8;oqrr;uss8N&us8N#srr;lr!s&LE +r;HWcpAajdrpBabs8W,ss6T^arr;orp]($gquQiu!I4V<r;Z]mrqZTos8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#ts8W,rs8Csk!!EK9ZiC%)s8N&h +rr;urs8W)urVuilC'k%COtZk@!&"<Ns8N&us8W)ts8W)urVulsqum*)!,;K5rVufq +r:g6kq#CBnpAb0ls6fpZr;HWprql^$!<i[@pAb0^s7lNlrr)irs8W)us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8N&us82ipitDCq"qJ!>rr<#ts760hrr)ls +rr;rsrV:18!s"K<!!`KVs8N&ts8W-!rr2rtrr;rsrr;m"!<iI;s8W&tr;Z]hs8Vlo +s8M`ls8N&ds7H6frr;uprs/W/#&*`1s7$'`r;Zcprr<#urr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr<#ts8W,rs8Csk!!EK9ZiC%)s8N&hrr;urs8W)urVuil +C'k%COtZk@!&"<Ns8N&us8W)ts8W)urVulsqum*)!,;K5rVufqr:g6kq#CBnpAb0l +s6fpZr;HWprql^$!<i[@pAb0^s7lNlrr)irs8W)us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)us8N&us82ipitDCq"qJ!>rr<#ts760hrr)lsrr;rsrV:18!s"K< +!!`KVs8N&ts8W-!rr2rtrr;rsrr;m"!<iI;s8W&tr;Z]hs8Vlos8M`ls8N&ds7H6f +rr;uprs/W/#&*`1s7$'`r;Zcprr<#urr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)sr;Z`mqYsFn#65:Is7lQep&+afs82iqrVulrs7uZ+#QOiOp+l^M!&soT +s8Dusrr;utrr;utrVuiqrrN0$%!DCGf7HL:4%YS,qu6Wns82fjPAY&VMYHl7BlRqk +!!30QGA_><r;HZprVZWns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr)cprVQHk;?-q%&%qr;rV-!_r;Zfos8Musrr2rnrjrF9!%.Cq!<E0Zrqufps8N#t +rr;utrr;rsrVlfu!!*LNq>]&u7j:#dOnAPMs8;oorqM[pBQ]4,p[Dm:C]aY=!A/M5 +DfGXQs8MuprVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)sr;Z`m +qYsFn#65:Is7lQep&+afs82iqrVulrs7uZ+#QOiOp+l^M!&soTs8Dusrr;utrr;ut +rVuiqrrN0$%!DCGf7HL:4%YS,qu6Wns82fjPAY&VMYHl7BlRqk!!30QGA_><r;HZp +rVZWns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr)cprVQHk;?-q% +&%qr;rV-!_r;Zfos8Musrr2rnrjrF9!%.Cq!<E0Zrqufps8N#trr;utrr;rsrVlfu +!!*LNq>]&u7j:#dOnAPMs8;oorqM[pBQ]4,p[Dm:C]aY=!A/M5DfGXQs8MuprVlis +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VupqYpBjs/Q,%!!0=ls82iq +rVucms8;fprr)lss8Va?!!WY-rA"?R">]fQs8W,trVuots8W-!rr<#uq?I!1!-Im< +!!`K5!!WE?QMpj_rUfpc/Hu@[1B.=R!!*3+#7C\8"on]3mem+[s8N#ts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qu-Bjqu-Pq!!<3%YjVPgs8Musqu$Kl +r;Zcps8W-!odBeE#-.VW!!*3Xq>^Kps8Dors8W-!s8W)us8Vp#!"K!NoihD$!"Ao4 +!#V%#s8Muhq>W#N"TgIYs8N'""9f#<"TS`,!XeAns7lWnrr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8VupqYpBjs/Q,%!!0=ls82iqrVucms8;fprr)ls +s8Va?!!WY-rA"?R">]fQs8W,trVuots8W-!rr<#uq?I!1!-Im<!!`K5!!WE?QMpj_ +rUfpc/Hu@[1B.=R!!*3+#7C\8"on]3mem+[s8N#ts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!qu-Bjqu-Pq!!<3%YjVPgs8Musqu$Klr;Zcps8W-!odBeE +#-.VW!!*3Xq>^Kps8Dors8W-!s8W)us8Vp#!"K!NoihD$!"Ao4!#V%#s8Muhq>W#N +"TgIYs8N'""9f#<"TS`,!XeAns7lWnrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8Vrqqu?Tonk]Sl"YofKr8+Wbg&(dIrVZ]os8W)qr;UO4"TUgaq_S9W +!%e0Mrr)lrs8W&ss8W)trVlfrr;d*&$YWNB!<`N*!sAr2$&8KZo`+sc1]ROW2ZNRK +%Kc\=!!!?.!!NK*rr<#ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!qZ$Hmr;Z=a#QP#_q"jpFYI3'\rr)fns8DutrqlWnCB+M<5l1@7!!WESs8W)s +s8N&urVlisrr2lqrr;ot"oo$E<<E7)"98N,$31Bes8MZjs7\>M!<G+Yq"bI&!"/c, +$3L83"9AH$s8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vrq +qu?Tonk]Sl"YofKr8+Wbg&(dIrVZ]os8W)qr;UO4"TUgaq_S9W!%e0Mrr)lrs8W&s +s8W)trVlfrr;d*&$YWNB!<`N*!sAr2$&8KZo`+sc1]ROW2ZNRK%Kc\=!!!?.!!NK* +rr<#ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qZ$Hmr;Z=a +#QP#_q"jpFYI3'\rr)fns8DutrqlWnCB+M<5l1@7!!WESs8W)ss8N&urVlisrr2lq +rr;ot"oo$E<<E7)"98N,$31Bes8MZjs7\>M!<G+Yq"bI&!"/c,$3L83"9AH$s8N&u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vurr;Z]pgBmoe!2f'u +('+CA!#'2=rV-'dp&G'ls2YKH!=nVurA"?T!]'QIs7lHjs8Dfor;HZqs8N#rrr<0) +!t,2:!$j6I"TeZ*!"5.lq#($h1&q:]0)tt?#64c+$NUD4!!WE/pAXgdrr2ors8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qu?Tor;YLY!!rY&lYI=;!!rW= +D"7Jup]'pds8W,?#lju9nG`AA!!<9Xq"k$cqZ$ToqZ$Kls8W,urr)is"9\f7!selP +0I[/,!!3-.Qi6^Wqu8DO!"(@Ys6g0m!<NW0"TeZ.!!r;tp](6lrr2rts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vurr;Z]pgBmoe!2f'u('+CA!#'2=rV-'d +p&G'ls2YKH!=nVurA"?T!]'QIs7lHjs8Dfor;HZqs8N#rrr<0)!t,2:!$j6I"TeZ* +!"5.lq#($h1&q:]0)tt?#64c+$NUD4!!WE/pAXgdrr2ors8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!qu?Tor;YLY!!rY&lYI=;!!rW=D"7Jup]'pds8W,? +#lju9nG`AA!!<9Xq"k$cqZ$ToqZ$Kls8W,urr)is"9\f7!selP0I[/,!!3-.Qi6^W +qu8DO!"(@Ys6g0m!<NW0"TeZ.!!r;tp](6lrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&trVl]mSH&Wi&&9%f"UGG8#71GL]Dhj$rVuWlpacCL!iYYg +r@nEW!&X]Ts8Drpr;Z`prr2rrrr)iqq#^Ts!"&]Wb5D88cmJf&!Wsb2s8W&i3WK6f +0)GJFl2C>e!!<4;rqH9Us7u]nrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rVuiqqu*&c!!!PF)$^<N$31;;!ZAWLs76-gp](">!!WM'nc&JA"9SW\ +rr<#srqu]orVlfqs8Drqrr2]q!!!!+!%c:jrqath!"Au3-0G7-rU`,N!sgOUqu>pZ +pC@6+!,VZ/qX"7Xs8Drss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W&trVl]mSH&Wi&&9%f"UGG8#71GL]Dhj$rVuWlpacCL!iYYgr@nEW!&X]Ts8Drp +r;Z`prr2rrrr)iqq#^Ts!"&]Wb5D88cmJf&!Wsb2s8W&i3WK6f0)GJFl2C>e!!<4; +rqH9Us7u]nrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVuiq +qu*&c!!!PF)$^<N$31;;!ZAWLs76-gp](">!!WM'nc&JA"9SW\rr<#srqu]orVlfq +s8Drqrr2]q!!!!+!%c:jrqath!"Au3-0G7-rU`,N!sgOUqu>pZpC@6+!,VZ/qX"7X +s8Drss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)urVlco?3:93 +,7+>N!!!'#"T\T0&CUIUs82inBE//;6iI#^nMgUN$Sh2Cs8W,qqu?]prqu]hqY:!d +rW!$+!!+8$p\Y!hpus1,!!!%_s8;of2$43d2#m=Es7uNl!X&gJqZ$<gn,N:]rr<#u +s8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr;rrrV^%)!s9bS!!*'" +!WWB)!!s4bqu?]ns8-I0"9V$irqu:G!rr]`nale\s8)Wms8Drpr:p-`r;?No!sel- ++lN+ls8D`W-ia5I!L!K\s7/#L$NN$`p\4^`qZ$[#$#f\?p\jR\qtg<ls8W-!s8N&u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)urVlco?3:93,7+>N!!!'#"T\T0 +&CUIUs82inBE//;6iI#^nMgUN$Sh2Cs8W,qqu?]prqu]hqY:!drW!$+!!+8$p\Y!h +pus1,!!!%_s8;of2$43d2#m=Es7uNl!X&gJqZ$<gn,N:]rr<#us8W,us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr;rrrV^%)!s9bS!!*'"!WWB)!!s4bqu?]n +s8-I0"9V$irqu:G!rr]`nale\s8)Wms8Drpr:p-`r;?No!sel-+lN+ls8D`W-ia5I +!L!K\s7/#L$NN$`p\4^`qZ$[#$#f\?p\jR\qtg<ls8W-!s8N&us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,us8W-!/dD@^!"K'&VQQUi!!<H+!&afUs8W)+#mpeI +f_tjHs"=TW""sWRrq?-ds8Diprr2rss8;flr!!<)#mAu^s7H3gqt]%J!=&lhs8;or +0a7UZ0_k\Drr;j!#m:6Gp](*irVuWjqu-Qorr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8N&us8O\V!!iQ7!_T>mThtdl#64`]s8N&urj<%>";0;bs8)aK +#64iYs8W)lq#:<lqu?Zps8N&rr;6Br"TSi3gAh3Fqu?Qhh#IH\#WMe]s8F_W!!4kL +s7uZoqZR9/!,hQ2qZ$Nop\k!fs8N#ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,us8W-!/dD@^!"K'&VQQUi!!<H+!&afUs8W)+#mpeIf_tjHs"=TW""sWR +rq?-ds8Diprr2rss8;flr!!<)#mAu^s7H3gqt]%J!=&lhs8;or0a7UZ0_k\Drr;j! +#m:6Gp](*irVuWjqu-Qorr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8N&us8O\V!!iQ7!_T>mThtdl#64`]s8N&urj<%>";0;bs8)aK#64iYs8W)lq#:<l +qu?Zps8N&rr;6Br"TSi3gAh3Fqu?Qhh#IH\#WMe]s8F_W!!4kLs7uZoqZR9/!,hQ2 +qZ$Nop\k!fs8N#ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&tr;Zfq +%06_@!"$gIs7u]j`Y&=W#Qq1)s8)ID!!!.ds8)]fs"4QZ!%n*>qZ$T^s82WgqYpNk +mf3=drr<--!'BuIs8W#pqu-1S#6=i6q"sgb1&q=Z2#dOTo`+mn!!!"?s8;ocs8Dus +r;HWos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVufqs8<B-#RLJ; +b5VG:s7sYI!X8o4XSVtnpFlRI"I/r_rV$7D#Qk&Yqt'[as6Td_q>0ses8)0`s8N#u +!snrhq"+Ocr;?Hjog/la!=\c#p\loJ!<tC[s8V`krWE3$!-A2<s6p!ds8Mrprr2rt +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&tr;Zfq%06_@!"$gIs7u]j +`Y&=W#Qq1)s8)ID!!!.ds8)]fs"4QZ!%n*>qZ$T^s82WgqYpNkmf3=drr<--!'BuI +s8W#pqu-1S#6=i6q"sgb1&q=Z2#dOTo`+mn!!!"?s8;ocs8Dusr;HWos8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVufqs8<B-#RLJ;b5VG:s7sYI!X8o4 +XSVtnpFlRI"I/r_rV$7D#Qk&Yqt'[as6Td_q>0ses8)0`s8N#u!snrhq"+Ocr;?Hj +og/la!=\c#p\loJ!<tC[s8V`krWE3$!-A2<s6p!ds8Mrprr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q>L?n!!`K("1J(+s8N#topZ3e"p.m)p]#=8 +!!bXbp%\Rer\+<T!&FENrVsAg3]&ZF2_?jB5IgUir!EE($"a)5s8)cqqu?>4!!NE( +g&M$L1BIOe-ia5Ds7H!n!!3IAs8;ons8N&os8W-!s8W,us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8Vons8N'(!!!,0qZ$Tprr;Y\#QP&1=8hmnF8u:G4T4sJ +s8W'P!!E9WqZ$No\2lZ-1bCX<1c%A+qu6L#!!!=:rVZ]ls8Vurol^<=!W^pRrV\MR +!"UIWs82igp'^p&$#9M<s8)cps7u]ps8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!q>L?n!!`K("1J(+s8N#topZ3e"p.m)p]#=8!!bXbp%\Rer\+<T +!&FENrVsAg3]&ZF2_?jB5IgUir!EE($"a)5s8)cqqu?>4!!NE(g&M$L1BIOe-ia5D +s7H!n!!3IAs8;ons8N&os8W-!s8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8Vons8N'(!!!,0qZ$Tprr;Y\#QP&1=8hmnF8u:G4T4sJs8W'P!!E9WqZ$No +\2lZ-1bCX<1c%A+qu6L#!!!=:rVZ]ls8Vurol^<=!W^pRrV\MR!"UIWs82igp'^p& +$#9M<s8)cps7u]ps8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Mus +qu?]q!"&]17JHcYo`+R]p&>[2!!=V>s1S[;!t=8jpAF[aqCr*R"uuAVmJjNu!!!$, +#QOl*$*X@-p](Es!,hi8oDeR`oDeif"onl.\,64$0a%R_/H,PDrr;os!WrL9rql`p +q#:9hrVc`qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVucps8E!* +!!YmdrVZ<fo_eC^'*nR?-h@;O"on`6jT"rOp\t"D"9A]dp\sR[Zj-R2!=B)4!<<G0 +rr2Zm"98F>s8DQhp\j^`s/#u##6;71s7nAP!sU=TrVHNnr;Zm$!bVH/s8MfmrqcTl +rr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Musqu?]q!"&]17JHcY +o`+R]p&>[2!!=V>s1S[;!t=8jpAF[aqCr*R"uuAVmJjNu!!!$,#QOl*$*X@-p](Es +!,hi8oDeR`oDeif"onl.\,64$0a%R_/H,PDrr;os!WrL9rql`pq#:9hrVc`qs8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVucps8E!*!!YmdrVZ<fo_eC^ +'*nR?-h@;O"on`6jT"rOp\t"D"9A]dp\sR[Zj-R2!=B)4!<<G0rr2Zm"98F>s8DQh +p\j^`s/#u##6;71s7nAP!sU=TrVHNnr;Zm$!bVH/s8MfmrqcTlrr<#us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Mrqqu?Zn!rrE-A,Q?)s82irs6`Ya!<NB% +s!IdH$5,'G2Dcs@1CjQf!"Ch661qM`#QOr,!WW3*!jhq+r<*--"`OG?s8Duns82Z( +"TSN&Z2a_#0EMCX2>R7LrVult$31*FrVc`pp\t-jr;HTns8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,ur;QTnrqliu!sW95rr)los8W,e:BCOu"9&6I!!!?= +0eP@@/2K'm!rr<12CCf`Z2b.1!rrB&!!`S3s8Ms"!=8pJs8N&ss7u]lqRQh1!!';( +qu/8N"TUFUrqu`prr<B+!H7r8rr2ZkrVl`nrVliss8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8Mrqqu?Zn!rrE-A,Q?)s82irs6`Ya!<NB%s!IdH$5,'G2Dcs@ +1CjQf!"Ch661qM`#QOr,!WW3*!jhq+r<*--"`OG?s8Duns82Z("TSN&Z2a_#0EMCX +2>R7LrVult$31*FrVc`pp\t-jr;HTns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,ur;QTnrqliu!sW95rr)los8W,e:BCOu"9&6I!!!?=0eP@@/2K'm!rr<1 +2CCf`Z2b.1!rrB&!!`S3s8Ms"!=8pJs8N&ss7u]lqRQh1!!';(qu/8N"TUFUrqu`p +rr<B+!H7r8rr2ZkrVl`nrVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)tq#(*j!s8N-Du]_7o_ngdqYkX="Tnc)rW!$'!!36&!!!$%!s&B0!!*'+!<2#p +XgGC>['6pA]A`Yeq>gQu#A=)3s8Vupqu6E!!!!-([K$7+1&q:Z0E(qLrVufr$NL3H +qu?]rrr;fms8W-!s8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2]j +rVls%!![BAqu?<es8)TkFo_aK!<<#u!sAT*!rr<$!<WE)!"/c-!!rZ)j2%k)ZEgjA +['71$qu?Kn!!<I=s7lWoqu-Ekq6^2&"9Z(3rr4_R!!b1Us8Dorr;[3*!H@r9s8W)u +q>L?ns8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)tq#(*j!s8N- +Du]_7o_ngdqYkX="Tnc)rW!$'!!36&!!!$%!s&B0!!*'+!<2#pXgGC>['6pA]A`Ye +q>gQu#A=)3s8Vupqu6E!!!!-([K$7+1&q:Z0E(qLrVufr$NL3Hqu?]rrr;fms8W-! +s8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2]jrVls%!![BAqu?<e +s8)TkFo_aK!<<#u!sAT*!rr<$!<WE)!"/c-!!rZ)j2%k)ZEgjA['71$qu?Kn!!<I= +s7lWoqu-Ekq6^2&"9Z(3rr4_R!!b1Us8Dorr;[3*!H@r9s8W)uq>L?ns8W-!s8N&u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#ur;QZl0`qFa8,N>ds8Voks7pL: +!<E8sp&b<s!sel9"T\W)#Qt,-"p"`,"o.ulp\k*krr;fioDejjrr<9*!HeAAli$_\ +s8;nS"98Z,gA(^I1'.F\0`V.Ps8W*(!!EU@q>L?ms8Mfmrr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W#rrVJ;O!=MEps8W-!q>1-eD$L(B!r2Hk +!<N?/!"B)4!<EH/!!!3(!<WN#qtp-drr;utq>'X^s8W*!#6FpJs8VE`qu?]os,$pZ +#6<KQs8FbT!!b4Xrr<#urs&N,$"s)4s8N&tq#:9ls8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr<#ur;QZl0`qFa8,N>ds8Voks7pL:!<E8sp&b<s!sel9 +"T\W)#Qt,-"p"`,"o.ulp\k*krr;fioDejjrr<9*!HeAAli$_\s8;nS"98Z,gA(^I +1'.F\0`V.Ps8W*(!!EU@q>L?ms8Mfmrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)us8W#rrVJ;O!=MEps8W-!q>1-eD$L(B!r2Hk!<N?/!"B)4!<EH/ +!!!3(!<WN#qtp-drr;utq>'X^s8W*!#6FpJs8VE`qu?]os,$pZ#6<KQs8FbT!!b4X +rr<#urs&N,$"s)4s8N&tq#:9ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2lrrr;ok@fcr:(]O@,s6fpdq>Ene!!t"Ms#hhg0.nn8/i#FC3!fTm":$h3 +5kt9PrVuoor;ZTms8MfkrrrH'!,;!'s8Dfoo_eSl"U4r5s8Vrq/d24U2#mIQrVlTr +"p"aFr;6?gqYpBlr;?Nms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rVulsr:jb'#lke@r:g6Zs8Mim8ceu!-N*m,.Pre20/Y@;3AWW$!=Ar72C:]ar:p6j +s8)Znq>^Koq#(-r!!!"5nc/XfqZ$3cqcs@0!"&]*qYr/O!!+qVqu?Woq#ps'!HS,8 +qY^3hqu?TlrVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2lrrr;ok +@fcr:(]O@,s6fpdq>Ene!!t"Ms#hhg0.nn8/i#FC3!fTm":$h35kt9PrVuoor;ZTm +s8MfkrrrH'!,;!'s8Dfoo_eSl"U4r5s8Vrq/d24U2#mIQrVlTr"p"aFr;6?gqYpBl +r;?Nms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trVulsr:jb'#lke@ +r:g6Zs8Mim8ceu!-N*m,.Pre20/Y@;3AWW$!=Ar72C:]ar:p6js8)Znq>^Koq#(-r +!!!"5nc/XfqZ$3cqcs@0!"&]*qYr/O!!+qVqu?Woq#ps'!HS,8qY^3hqu?TlrVlis +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rp\XpgVuQf""j-cCqZ$Bk +qu.N7#R!furT=.[s8W&qqYKpcn2CUQ!]BoUkl:\[s8Vups8;`nqtg9grr<3("![d; +rVl`ps7uO2!!`fqoD&=a/cl"V/H>bMs8Drt"TSd@s8;coq#C<mrr2rts8W,us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVcKfrVi_q!!<DHrr2coq>^?k)ZU-H +9DnbNs8W-!rVZNgpAaV@#QOo`r;Z!\s82irqu-QmqZ$HhrVQTp"TecMs7H9hr;Zfm +q\oM?#se+Wrr+MO!!OqRs8W,trr<3&#AF/8qu?HkrVulrs8W-!s8N&us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rp\XpgVuQf""j-cCqZ$Bkqu.N7#R!furT=.[ +s8W&qqYKpcn2CUQ!]BoUkl:\[s8Vups8;`nqtg9grr<3("![d;rVl`ps7uO2!!`fq +oD&=a/cl"V/H>bMs8Drt"TSd@s8;coq#C<mrr2rts8W,us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rVcKfrVi_q!!<DHrr2coq>^?k)ZU-H9DnbNs8W-!rVZNg +pAaV@#QOo`r;Z!\s82irqu-QmqZ$HhrVQTp"TecMs7H9hr;Zfmq\oM?#se+Wrr+MO +!!OqRs8W,trr<3&#AF/8qu?HkrVulrs8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W,urVc`poah6+#q>cOs75par/([Z!W]b(r;-<gr;HQnrr;urr[n<W +">BfTs8N&urr)fqs8W-!s8N#trW3'-!!9+us7Q?eqYu*J!WW7gp\t3i1B@LZ0`V1P +s8W*!"onfus8Vclr;?Tkrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8Muqrr2R%"98`Wqu?]ep](/K"p"c*\G#jsqu$Bjr;Zcrrr)gK"9eo]s8W,u +s8W)srVuots8W,urr;s!!"/c.W;chirVHBjJH>lQ!LWW\s8+SQ!<b+Vs8N&urr<6' +"\Jaop&Fsfs8)`ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,u +rVc`poah6+#q>cOs75par/([Z!W]b(r;-<gr;HQnrr;urr[n<W">BfTs8N&urr)fq +s8W-!s8N#trW3'-!!9+us7Q?eqYu*J!WW7gp\t3i1B@LZ0`V1Ps8W*!"onfus8Vcl +r;?Tkrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Muqrr2R% +"98`Wqu?]ep](/K"p"c*\G#jsqu$Bjr;Zcrrr)gK"9eo]s8W,us8W)srVuots8W,u +rr;s!!"/c.W;chirVHBjJH>lQ!LWW\s8+SQ!<b+Vs8N&urr<6'"\Jaop&Fsfs8)`p +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Murs8Vuks*+MI!!uls +q#CBm_[-;O#;Z2Vrr<#rrr)lrs8Mroq_J3S!A=?Ds8W-!rVZZpqu?]qqu?]qrr<$! +!Win=q#C3js18U?%0.L9s8W&m1^!g]0E(nMs8DID!=/uBfDbg@rr2orrr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVlisqtU29!!N?/>OD4cs8BhA +!"9)fqu?Zqs8;lps8N&tr;?FJ!!<6SrUp3js8W&qrr;lqs8Moqs8N#u!!!'%&$u'2 +qZ$T-$3L_;+7&t,rV/2P!<Y"Rrr<#snM:1O#nPYes760grr2ors8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Murs8Vuks*+MI!!ulsq#CBm_[-;O#;Z2V +rr<#rrr)lrs8Mroq_J3S!A=?Ds8W-!rVZZpqu?]qqu?]qrr<$!!Win=q#C3js18U? +%0.L9s8W&m1^!g]0E(nMs8DID!=/uBfDbg@rr2orrr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,urVlisqtU29!!N?/>OD4cs8BhA!"9)fqu?Zqs8;lp +s8N&tr;?FJ!!<6SrUp3js8W&qrr;lqs8Moqs8N#u!!!'%&$u'2qZ$T-$3L_;+7&t, +rV/2P!<Y"Rrr<#snM:1O#nPYes760grr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8Dlps8Vujrr+AM#ljrhJZl.Z%gW==%EJDGrr<#ts82ios8W&s +q_%sQ!&srXs8W-!rr)irqZ$Tqqu?ZoqZ-s'%L<.PB<f(DAH2u9!!o\*o^_t\0`h=W +1]RISs8W*\$NL/-/t]5$s7Q0err2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,tr;Q`rqtL*h.Kg%X!'Yt;XBQ2@"TT"Pr;Q]qs8N&qs8;osrVl[I!<`B] +s8W-!s8W)srr;ips8Vurrr)]p#QYD@!u>OS];&p;#QOi1XT%k_rVnSR!!>%Wrr<#u +s#USg!!+^EXGHoLq#C?mrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8Dlps8Vujrr+AM#ljrhJZl.Z%gW==%EJDGrr<#ts82ios8W&sq_%sQ!&srXs8W-! +rr)irqZ$Tqqu?ZoqZ-s'%L<.PB<f(DAH2u9!!o\*o^_t\0`h=W1]RISs8W*\$NL/- +/t]5$s7Q0err2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,tr;Q`r +qtL*h.Kg%X!'Yt;XBQ2@"TT"Pr;Q]qs8N&qs8;osrVl[I!<`B]s8W-!s8W)srr;ip +s8Vurrr)]p#QYD@!u>OS];&p;#QOi1XT%k_rVnSR!!>%Wrr<#us#USg!!+^EXGHoL +q#C?mrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr)forVPq' +!<r`/!X8i1!!*6(OS]"TrqcZns82iorr;rss""<Z!&OKMqu$Hns8W)trVl`prVl`o +quZp&/78V]!rr<(!<E6,!/UFMs8W)s0E_L\/-#SJrr;c)!s&`0!!<6+nc/CarVlfr +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2oqrVc]lllQ64"p"c0 +"p+c*"Ta_]s8;lms8Dups8;lrrVumK"UG)aqYg<hrr<#urr2lqr;Z`pr;QTr!!Oo] +"TSW)!!E<'!XA^]q#CBorr"MR"9U1SrVulspppP.$3:,/!=&)oq#C<lrr<#us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr)forVPq'!<r`/!X8i1!!*6( +OS]"TrqcZns82iorr;rss""<Z!&OKMqu$Hns8W)trVl`prVl`oquZp&/78V]!rr<( +!<E6,!/UFMs8W)s0E_L\/-#SJrr;c)!s&`0!!<6+nc/CarVlfrs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2oqrVc]lllQ64"p"c0"p+c*"Ta_]s8;lm +s8Dups8;lrrVumK"UG)aqYg<hrr<#urr2lqr;Z`pr;QTr!!Oo]"TSW)!!E<'!XA^] +q#CBorr"MR"9U1SrVulspppP.$3:,/!=&)oq#C<lrr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rVlisrVuoR3<09a"TSN*%KR?/rVuirrr;rss8N#r +qYp?iq_%pP">9`Rqu$Hns8W,us8DiprVcWkj8fA`3;HMS!=&i0!!`K8JGoNGqZ$No +0`_7W0E;(Mr;HZj>6"d/!!WW-s7uTmrVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&ss8W&ts4o[8#64o-!!Ec4(6e^srVulsrVuosrr)]mqYg:E +!!EEWs8Monrr<#us8N&squ?Wnqu#LU"9:FW;um")#64`/!"a\Zs8;`nrVnSQ!!FtT +s8;fns7fdu"9\]/"p"]!r;Z`prr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rVlisrVuoR3<09a"TSN*%KR?/rVuirrr;rss8N#rqYp?iq_%pP">9`R +qu$Hns8W,us8DiprVcWkj8fA`3;HMS!=&i0!!`K8JGoNGqZ$No0`_7W0E;(Mr;HZj +>6"d/!!WW-s7uTmrVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W&ss8W&ts4o[8#64o-!!Ec4(6e^srVulsrVuosrr)]mqYg:E!!EEWs8Monrr<#u +s8N&squ?Wnqu#LU"9:FW;um")#64`/!"a\Zs8;`nrVnSQ!!FtTs8;fns7fdu"9\]/ +"p"]!r;Z`prr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s7l6do8l0D!=B,7&oQ_-s8)cor;Zfss8W&tqu6Nmlp1gU"?#`Lrr<#trr<#us8W,r +r;Q]l[KHd?3W8Q3/-#YM!=`/Ms7u]hr;HZb0E_@_3q)qFrVu`on;SIk$NL5:q>^*e +rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,oo`+NE +57.Du#m(`Wir/oRs8Dlqs8W-!rVucor;Q%K"onc`nc/Ugs8N#ts8W-!s82`nrqa&+ +"pd6fo8tR(!!!$/=N1=9s7cHis6q]F!"(dUqZ$NoqZ$&E*WlcM!Y"o)o`+pirr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7l6do8l0D!=B,7 +&oQ_-s8)cor;Zfss8W&tqu6Nmlp1gU"?#`Lrr<#trr<#us8W,rr;Q]l[KHd?3W8Q3 +/-#YM!=`/Ms7u]hr;HZb0E_@_3q)qFrVu`on;SIk$NL5:q>^*err2oss8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,oo`+NE57.Du#m(`Wir/oR +s8Dlqs8W-!rVucor;Q%K"onc`nc/Ugs8N#ts8W-!s82`nrqa&+"pd6fo8tR(!!!$/ +=N1=9s7cHis6q]F!"(dUqZ$NoqZ$&E*WlcM!Y"o)o`+pirr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr;ris82fn]<&0iqYgEno)J[gs8)Wm +rr;orrqufqrO9&=YeU57s8W,urr<#us8W,pr;?TmnuT%&fDY[JoD>f$b4kr5s8D]l +rV$9i^Tt2L\,ZF,s7ZBjrqu'-Z*ML9s7cEdrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8N#trUp3frqsC0Y1rgOrr;QhrVuooqu?Zqr;Zco +s8Mu+Z*^aMs8)cqs8N#ts8W-!s7uTjs8;GhYI3!\rVuKdZ*qgLs82ipp](3cs8B^< +Z`gk<rVuokr;ZcolHc`@am&j"qt^6js8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W,urr;ris82fn]<&0iqYgEno)J[gs8)Wmrr;orrqufqrO9&= +YeU57s8W,urr<#us8W,pr;?TmnuT%&fDY[JoD>f$b4kr5s8D]lrV$9i^Tt2L\,ZF, +s7ZBjrqu'-Z*ML9s7cEdrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8N#trUp3frqsC0Y1rgOrr;QhrVuooqu?Zqr;Zcos8Mu+Z*^aMs8)cq +s8N#ts8W-!s7uTjs8;GhYI3!\rVuKdZ*qgLs82ipp](3cs8B^<Z`gk<rVuokr;Zco +lHc`@am&j"qt^6js8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#u +rr2rts8W)us8W,ts8Vins7lEis7?9hs8N&trr;ops7cQjs8VrqrVuofrVuots8W,u +s8;omrV-9jrVccnrqlHhs8Vrqrr)`or;$0ds8;Zlrr<#opAamdr;Zfrrr)lnq"t$i +rq--drr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W)ts8W-! +rr<#us8Dutp](9gq>^Kds8Duss8N#tr;HZis82irqZ$Nos7-'fs8W-!s8N&rs7uWf +rVuips82fmp\t3mqZ$Qnqu?Tiq>C9jq#C?ns7uBgp\t*js8N#rs8)NfrVulhr;?Qo +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#urr2rts8W)us8W,t +s8Vins7lEis7?9hs8N&trr;ops7cQjs8VrqrVuofrVuots8W,us8;omrV-9jrVccn +rqlHhs8Vrqrr)`or;$0ds8;Zlrr<#opAamdr;Zfrrr)lnq"t$irq--drr<#us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W)ts8W-!rr<#us8Dutp](9g +q>^Kds8Duss8N#tr;HZis82irqZ$Nos7-'fs8W-!s8N&rs7uWfrVuips82fmp\t3m +qZ$Qnqu?Tiq>C9jq#C?ns7uBgp\t*js8N#rs8)NfrVulhr;?Qos8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVuorrVuikrVuckqu-Qjs8W-! +s8W-!s8N&rrqufrpAFpgs8Dlqrr2oss8W-!s8MomrVuotrr;forr)Qjs8MljrVulm +r;Q`qrr;uqs7ZBgs7u]pq>C3err;fos8W,us8Vlorr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&ts8DorrV6?kqtg3gs7u]ps8W-!s8W,u +s8;los8Vfjrr)lqr;Zcqrr<#us8W,uqtp?ls8W)uq>^HmpAb0lqYC*irqZKks8N#t +rqufir;?Tjs8VomrV?Hmq>^Kps8N&uq#C?ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rVuorrVuikrVuckqu-Qjs8W-!s8W-!s8N&rrqufr +pAFpgs8Dlqrr2oss8W-!s8MomrVuotrr;forr)Qjs8MljrVulmr;Q`qrr;uqs7ZBg +s7u]pq>C3err;fos8W,us8Vlorr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&ts8DorrV6?kqtg3gs7u]ps8W-!s8W,us8;los8Vfjrr)lq +r;Zcqrr<#us8W,uqtp?ls8W)uq>^HmpAb0lqYC*irqZKks8N#trqufir;?Tjs8Vom +rV?Hmq>^Kps8N&uq#C?ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8MrmqY^?mp\k!grVQWprr2ors8W-!s8Dlmrr2oprVuoss8Dlorr2os +s8W-!s8W-!s8D`bs8Vlmo)JaioDJXgrVHKms8W,ur;6?cs8;ops8)`nqu?Kis82fp +p&"@\li7"\rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W,ur;-9frr;`kqu6Qks8W)trr2rts8W,tr;6Kmrqu`ps8N&sr;HWorr<#us8W-! +s8W,tq"4Udq#0d`s8V]gs8W&orVuots8MrnqY:*gs8;onrr)`oq>C9irr2TfoDe.V +s7uZns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Mrm +qY^?mp\k!grVQWprr2ors8W-!s8Dlmrr2oprVuoss8Dlorr2oss8W-!s8W-!s8D`b +s8Vlmo)JaioDJXgrVHKms8W,ur;6?cs8;ops8)`nqu?Kis82fpp&"@\li7"\rr2rt +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,ur;-9frr;`k +qu6Qks8W)trr2rts8W,tr;6Kmrqu`ps8N&sr;HWorr<#us8W-!s8W,tq"4Udq#0d` +s8V]gs8W&orVuots8MrnqY:*gs8;onrr)`oq>C9irr2TfoDe.Vs7uZns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8DinrVQNmq"ssgs8)cq +rVlfqs8W-!s8DfkrVuins8;forVc]nrr2oss8W-!s8Molr;HWoqtC!gs8)`kr;?Nn +s8N#sq>C6jrVlisq"jsarr2rtrr;omrVl`ps8;ocrr;Ngrr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,tqu-Kjr;ZQhqu?]ms8W&srr2rt +s8W,tqYU6krVQWmr;QZnrVc`prr<#us8W,uqtg6hrr2fgrVuoorqcQjrVuosrr2`k +rr)fps8VljrV6Bks8W)ur;-Bkr;Zfps6osenc/Ugs8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8DinrVQNmq"ssgs8)cqrVlfqs8W-!s8Dfk +rVuins8;forVc]nrr2oss8W-!s8Molr;HWoqtC!gs8)`kr;?Nns8N#sq>C6jrVlis +q"jsarr2rtrr;omrVl`ps8;ocrr;Ngrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,tqu-Kjr;ZQhqu?]ms8W&srr2rts8W,tqYU6krVQWm +r;QZnrVc`prr<#us8W,uqtg6hrr2fgrVuoorqcQjrVuosrr2`krr)fps8VljrV6Bk +s8W)ur;-Bkr;Zfps6osenc/Ugs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8N#ts8Dlorr)]ns8;lqrr2rts8W-!rr;rsr;Z`qs7uNjrVccq +rr2rts8W-!s8Muqrr;uss8;fds7Q?js8W&srVZWoqu-Qorr<#uq#13err)ips8;lm +rVucprqc3crp9[Ys8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,urr<#sr;HWnqZ$Tnrr2ors8W-!s8W)urVufqrVuonqYpHls8N#ss8W-! +s8W,urVc`qrr2rqr:Bs]rVuotrVlcnrVucns8N#ts8VlmrqQKkrr)lprqcTnqu?Zl +o)J^Us7ZKms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8N#ts8Dlorr)]ns8;lqrr2rts8W-!rr;rsr;Z`qs7uNjrVccqrr2rts8W-!s8Muq +rr;uss8;fds7Q?js8W&srVZWoqu-Qorr<#uq#13err)ips8;lmrVucprqc3crp9[Y +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#s +r;HWnqZ$Tnrr2ors8W-!s8W)urVufqrVuonqYpHls8N#ss8W-!s8W,urVc`qrr2rq +r:Bs]rVuotrVlcnrVucns8N#ts8VlmrqQKkrr)lprqcTnqu?Zlo)J^Us7ZKms8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W-!s8Mop +s8W,us8W-!s8W-!rr<#urVulss8;lrs8Dusrr2rts8W-!rr<#us8W&qqu?]rs8Vup +rVliss8;lrs8W-!s8W,urr<#rs8Muqrr;lqs8N&trVucps8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#us8W,uqu6Wqs8N&u +s8W-!s8W)us8W&trr<#rrr<#ss8N#ss8W-!s8W)us8W-!rVZQms8W-!qu-Kms8W,s +rr<#us8W-!s8N#ts8;orrVc`qqu?]qs8Musqu?]rs8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W-!s8Mops8W,us8W-!s8W-! +rr<#urVulss8;lrs8Dusrr2rts8W-!rr<#us8W&qqu?]rs8VuprVliss8;lrs8W-! +s8W,urr<#rs8Muqrr;lqs8N&trVucps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#us8W,uqu6Wqs8N&us8W-!s8W)us8W&t +rr<#rrr<#ss8N#ss8W-!s8W)us8W-!rVZQms8W-!qu-Kms8W,srr<#us8W-!s8N#t +s8;orrVc`qqu?]qs8Musqu?]rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,urr<#us8W-!s8W-!s8W-!s8N#ss8W)us8W-!s8N&u +s8N#trr<#us8W-!s8Muqrr<#us8DutrVuoss8N#ts8W,us8N#ss8W-!rr2rts8W-! +s8W)us8W,ts8N&os8N&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8N#ts8W-!s8W-!s8W-!s8W,urr2rtrr<#us8W,us8W,urr;ut +s8W-!s8W,urVc`qs8W,ts8W&ts8N&trr<#us8N&trr2rts8W)ts8W-!s8W-!rr<#u +s8Duss7u]os8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,urr<#us8W-!s8W-!s8W-!s8N#ss8W)us8W-!s8N&us8N#trr<#us8W-! +s8Muqrr<#us8DutrVuoss8N#ts8W,us8N#ss8W-!rr2rts8W-!s8W)us8W,ts8N&o +s8N&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8N#ts8W-!s8W-!s8W-!s8W,urr2rtrr<#us8W,us8W,urr;uts8W-!s8W,urVc`q +s8W,ts8W&ts8N&trr<#us8N&trr2rts8W)ts8W-!s8W-!rr<#us8Duss7u]os8N&u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)r +s8W-!s8W)us8W-!s8W)ts8N#ss8W,urr<#ts8W)us8W-!s8W-!s8W-!s8N#rs7u]p +s8)cqs8W-!rVliss8W-!s8N#ss8W-!rr2rss82iqrVufps82irrr<#us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rqufrs8W-! +rr<#us8W-!rr2rsrr2rts8N#ts8N&urr<#us8W-!s8W-!s8W,urr)lms8W,qs8W-! +s8W&ss8W-!s8W,urr2rts8W)ts8N&qs8Musr;Q`ns8W)us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)rs8W-!s8W)us8W-! +s8W)ts8N#ss8W,urr<#ts8W)us8W-!s8W-!s8W-!s8N#rs7u]ps8)cqs8W-!rVlis +s8W-!s8N#ss8W-!rr2rss82iqrVufps82irrr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rqufrs8W-!rr<#us8W-!rr2rs +rr2rts8N#ts8N&urr<#us8W-!s8W-!s8W,urr)lms8W,qs8W-!s8W&ss8W-!s8W,u +rr2rts8W)ts8N&qs8Musr;Q`ns8W)us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8N#ss8W-!s8W-!s8W-!s8N&ts8Dut +rr<#ss8W)us8W-!s8W-!s8W-!s8W-!rVuoqs8W)us8W)ss8W,urr<#us8W-!s8N&u +rVuosrr;uts8Duts8W,us8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr2rts8W,urr2rts8W-!s8W-!s8W,us8N&ss8W)us8Dut +rr<#us8W-!s8W-!s8W-!s8W&ts8;osrr<#urr)lss8N#ts8W-!s8W,us8W&ts8N#t +rr<#ss8W-!s8N&urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)ts8W-!s8N#ss8W-!s8W-!s8W-!s8N&ts8Dutrr<#ss8W)us8W-! +s8W-!s8W-!s8W-!rVuoqs8W)us8W)ss8W,urr<#us8W-!s8N&urVuosrr;uts8Dut +s8W,us8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2rts8W,urr2rts8W-!s8W-!s8W,us8N&ss8W)us8Dutrr<#us8W-!s8W-! +s8W-!s8W&ts8;osrr<#urr)lss8N#ts8W-!s8W,us8W&ts8N#trr<#ss8W-!s8N&u +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!~>
%%EndBinary
grestore end % Image Trailer grestore
grestore % EPS grestore
[{nextImage} 1 dict begin /Metadata {photoshop_metadata_stream} def currentdict end /PUT pdfmark
[/NamespacePop pdfmark
\ No newline at end of file diff --git a/doc/IGE332/Bibliography.tex b/doc/IGE332/Bibliography.tex new file mode 100644 index 0000000..e19a188 --- /dev/null +++ b/doc/IGE332/Bibliography.tex @@ -0,0 +1,34 @@ +\begin{thebibliography}{99} + +\bibitem{cle2000} +R.~Roy, \textsl{The CLE-2000 Tool-Box}, +Report IGE--163, Institut de g\'enie nucl\'eaire, \'{E}cole Polytechnique de Montr\'eal, +Montr\'{e}al, Qu\'{e}bec (1999). + +\bibitem{lcm2002} +A. H\'ebert, \textsl{LCM -- Guide du programmeur}, +Rapport IGE--296, Institut de g\'enie nucl\'eaire, \'{E}cole Polytechnique de Montr\'eal, +Montr\'{e}al, Qu\'{e}bec (2002). + +\bibitem{ansiC} +B. W. Kernighan and D. M. Ritchie, \textsl{The C programming language, second edition}, +Prentice Hall, Englewood Cliffs, New Jersey (1988). + +\bibitem{fortran2003} +M. Metcalf, J. Reid and M. Cohen, \textsl{Fortran 95/2003 explained}, +Oxford University Press, Oxford, U.~K. (2004). + +\bibitem{lcm1994} +A.~H\'ebert and R.~Roy, ``A Programmer's Guide for the GAN Generalized Driver, FORTRAN-77 version'', Report IGE-158, Institut de G\'enie Nucl\'eaire, \'Ecole Polytechnique de Montr\'eal, December 1994. + +\bibitem{jargon} +A. H\'ebert, ``Coarse-Grain Parallelism Using Remote Method Invocation", paper submitted at the {\sl International Conference on Supercomputing in Nuclear Applications}, +Paris, France, September 22 -- 24 (2003). + +\bibitem{npython} +T.~E.~Oliphant, ``Guide to NumPy'', Brigham Young University, Provo, UT, 2006. See the home page at \url{https://numpy.org}. + +\bibitem{hdf5} +The HDF Group, \url{https://www.hdfgroup.org}. + +\end{thebibliography} diff --git a/doc/IGE332/GuideBW.sty b/doc/IGE332/GuideBW.sty new file mode 100644 index 0000000..8358fff --- /dev/null +++ b/doc/IGE332/GuideBW.sty @@ -0,0 +1,211 @@ +% Guide.sty +% G. Marleau +% created : 1998/09/18 +% modified: 1999/05/07 +% 1999/05/07 +% + +\ProvidesPackage{GuideBW}[1999/09/07] +\RequirePackage{array,cite,ifthen,longtable} +\gdef\@GuideVersion{0} +\newcommand\GuideVersion[1]{\gdef\@GuideVersion{#1}} + +% +% \moc{Keyword} +% \dds{DragonDataStructure} +% \dusa{UserData} +% \dstr{InputStructure} +% \dir{Directory} +% \listedir{DirectoryList} +% \tst{TestCase} +% + +\DeclareRobustCommand{\moc}[1]{\texttt{#1}\index{#1@\texttt{#1}}} +\DeclareRobustCommand{\dds}[1]{\textsc{#1}\index{#1@\textsc{#1}}} +\DeclareRobustCommand{\dusa}[1]{\textsl{#1}\index{#1@\textsl{#1}}} +\DeclareRobustCommand{\dstr}[1]{\textbf{(#1)}\index{#1@\textbf{(#1)}}} +\DeclareRobustCommand{\dir}[1]{\textrm{/#1/}\index{#1@\textrm{/#1/}}} +\DeclareRobustCommand{\listedir}[1]{\textrm{\{/#1/\}}\index{#1@\textrm{\{/#1/\}}}} +\DeclareRobustCommand{\namedir}[1]{\texttt{/#1/}\index{#1@\texttt{/#1/}}} +\DeclareRobustCommand{\tst}[1]{\textbf{#1}\index{#1@\textbf{#1}}} +% +% More commands +% +\newcommand{\keff}{\ensuremath{K_{\mathrm{eff}}}} +\newcommand{\kin}[1]{\ensuremath{\mathrm{Ki}_{#1}}} +\newcommand{\rv}{\ensuremath{\vec{r}}} +\newcommand{\Ov}{\ensuremath{\vec{\Omega}}} +\newcommand{\delv}{\ensuremath{\vec{\nabla}}} +\newcommand{\nv}{\ensuremath{\vec{N}}} +\newcommand{\drift}{\ensuremath{\vec{\Omega}\cdot\vec{\nabla}}} +\newcommand{\Iso}[2]{\ensuremath{^{#2}\mathrm{#1}}} +\newcommand{\xsunit}{\ensuremath{\mathrm{cm}^{-1}}} + +% +% Environnement DataStructure +% +% \begin{DataStructure}{Nom du tableau} +% \end{DataStructure}} +% +% + +\newenvironment{DataStructure}[1]{\noindent +\setlongtables \setlength{\LTleft}{0pt}\setlength{\LTright}{0pt} +\setlength{\LTcapwidth}{15.0cm} +\begin{longtable}{|p{15.5cm}|} +\caption{#1}\\ +\hline +\multicolumn{1}{|l|}{} \\ +\endfirsthead +\multicolumn{1}{l}{#1 \hfill continued from last page}\\ +\hline +\multicolumn{1}{|l|}{} \\ +\endhead +\multicolumn{1}{|l|}{}\\ \hline +\multicolumn{1}{r}{continued on next page}\\ +\endfoot +\multicolumn{1}{|l|}{}\\ \hline +\endlastfoot} +{\end{longtable} \vskip 0.5cm } + +% +% Environnement DescriptionEnregisterment +% +% \begin{DescriptionEnregisterment}{Nom du tableau}{dimension des commentaires} +% \end{DescriptionEnregisterment} +% +% Peut contenir les commandes: +% \IntEnr{Nom du record}{Dimension}{Commentaires} +% \OptIntEnr{Nom du record}{Dimension}{Condition} +% {Commentaires} +% \RealEnr{Nom du record}{Dimension}{Commentaires}{Unites} +% \OptRealEnr{Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \DbleEnr{Nom du record}{Dimension}{Commentaires}{Unites} +% \OptDbleEnr{Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \CharEnr{Nom du record}{Dimension}{Commentaires} +% \OptCharEnr{Nom du record}{Dimension}{Condition} +% {Commentaires} +% \DirEnr{Nom du repertoire}{Dimension}{Commentaires} +% \OptDirEnr{Nom du repertoire}{Dimension}{Condition} +% {Commentaires} +% \DirlEnr{Nom du repertoire}{Dimension}{Commentaires} +% \OptDirlEnr{Nom du repertoire}{Dimension}{Condition}{Commentaires} +% +% \IntVar{Variable associee au Nom du record}{Dimension}{Commentaires} +% \OptIntVar{Variable associee au Nom du record}{Dimension}{Condition} +% {Commentaires} +% \RealVar{Variable associee au Nom du record}{Dimension}{Commentaires}{Unites} +% \OptRealVar{Variable associee au Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \DbleVar{Variable associee au Nom du record}{Dimension}{Commentaires}{Unites} +% \OptDbleVar{Variable associee au Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \CharVar{Variable associee au Nom du record}{Dimension}{Commentaires} +% \OptCharVar{Variable associee au Nom du record}{Dimension}{Condition} +% {Commentaires} +% \DirVar{Variable associee au Nom du repertoire}{Dimension}{Commentaires} +% \OptDirVar{Variable associee au Nom du repertoire}{Dimension}{Condition} +% {Commentaires} +% +% + +\newenvironment{DescriptionEnregistrement}[2]{\noindent +\setlongtables \setlength{\LTleft}{0pt}\setlength{\LTright}{0pt} +\begin{longtable}{|llll@{\extracolsep{\fill}}p{#2}|} +\caption{#1}\\ +\hline \hline +\multicolumn{5}{|l|}{} \\ +Name & Type & Condition &Units &Comment\\ +\multicolumn{5}{|l|}{} \\ \hline +\multicolumn{5}{|l|}{} \\ +\endfirsthead +\multicolumn{5}{l}{#1 \hfill continued from last page}\\ +\hline \hline +\multicolumn{5}{|l|}{} \\ +Name & Type & Condition &Units &Comment\\ +\multicolumn{5}{|l|}{} \\ \hline +\multicolumn{5}{|l|}{} \\ +\endhead +\multicolumn{5}{|l|}{}\\ \hline\hline +\multicolumn{5}{r}{continued on next page}\\ +\endfoot +\multicolumn{5}{|l|}{}\\ \hline\hline +\endlastfoot} +{\end{longtable} \vskip 0.5cm } + + +\newcommand{\IntEnr}[3]{ \texttt{#1} & I(#2) & &  \\} +\newcommand{\OptIntEnr}[4]{ \texttt{#1} & I(#2) & #3 &  \\} +\newcommand{\RealEnr}[4]{ \texttt{#1} & R(#2) & & #3  \\} +\newcommand{\OptRealEnr}[5]{\texttt{#1} & R(#2) & #3 & #4  \\} +\newcommand{\DbleEnr}[4]{ \texttt{#1} & D(#2) & & #3  \\} +\newcommand{\OptDbleEnr}[5]{\texttt{#1} & D(#2) & #3 & #4  \\} +\newcommand{\CharEnr}[3]{ \texttt{#1} & C#2 & &  \\} +\newcommand{\OptCharEnr}[4]{\texttt{#1} & C#2 & #3 &  \\} +\newcommand{\DirEnr}[2]{ \texttt{#1} & Dir & &  \\} +\newcommand{\OptDirEnr}[3]{ \texttt{#1} & Dir & #2 &  \\} +\newcommand{\DirlEnr}[3]{ \texttt{#1} & Dir(#2) & &  \\} +\newcommand{\OptDirlEnr}[4]{\texttt{#1} & Dir(#2) & #3 &  \\} + +\newcommand{\IntVar}[3]{ \textsl{#1} & I(#2) & &  \\} +\newcommand{\OptIntVar}[4]{ \textsl{#1} & I(#2) & #3 &  \\} +\newcommand{\RealVar}[4]{ \textsl{#1} & R(#2) & & #3  \\} +\newcommand{\OptRealVar}[5]{\textsl{#1} & R(#2) & #3 & #4  \\} +\newcommand{\DbleVar}[4]{ \textsl{#1} & D(#2) & & #3  \\} +\newcommand{\OptDbleVar}[5]{\textsl{#1} & D(#2) & #3 & #4  \\} +\newcommand{\CharVar}[3]{ \textsl{#1} & C#2 & &  \\} +\newcommand{\OptCharVar}[4]{\textsl{#1} & C#2 & #3 &  \\} +\newcommand{\DirVar}[2]{ \textsl{#1} & Dir & &  \\} +\newcommand{\OptDirVar}[3]{ \textsl{#1} & Dir & #2 &  \\} + +% +% Environnement ListeDeNotation +% +% \begin{ListeDeNotation}{largeur de l'etiquette} +% \end{ListeDeNotation} +% + +\newlength{\NotationLength} +\newcommand{\NotationLabel}[1]{\mbox{#1}\hfil} +\newenvironment{ListeDeNotation}[1]{% + \begin{list}{}{\renewcommand{\makelabel}{\NotationLabel}% + \setlength{\NotationLength}{#1}% + \setlength{\labelwidth}{\NotationLength}% + \addtolength{\NotationLength}{\labelsep}% + \setlength{\leftmargin}{\NotationLength}% + }}{\end{list}} +% +% Environnement ListeDeDescription +% +% \begin{ListeDeDescription}{Nom le plus large de l'etiquette} +% \end{ListeDeDescription} +% +\newlength{\DescriptionLength} +\newcommand{\DescriptionLabel}[1]{\mbox{#1}\hfil} +\newenvironment{ListeDeDescription}[1]{% + \begin{list}{}{\renewcommand{\makelabel}{\DescriptionLabel}% + \settowidth{\DescriptionLength}{\textbf{#1}}% + \setlength{\labelwidth}{\DescriptionLength}% + \addtolength{\DescriptionLength}{\labelsep}% + \setlength{\leftmargin}{\DescriptionLength}% + }}{\end{list}} + + +\newcommand{\Release}[2]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{#2 (\textsf{Release #1})}% +{#2 (\textsf{Release #1})}} +\newcommand{\Releasetmp}[1]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{(\textsf{Release #1})}% +{(\textsf{Release #1})}} +\newenvironment{GuideUpdate}[1]{% + \hfill\Releasetmp{#1}% + \ifthenelse{\equal{#1}{\@GuideVersion}}{}{}}{} +\newcommand{\BegRel}[1]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{}% +{}} +\newcommand{\EndRel}[0]{} diff --git a/doc/IGE332/GuideCOL.sty b/doc/IGE332/GuideCOL.sty new file mode 100644 index 0000000..66aab30 --- /dev/null +++ b/doc/IGE332/GuideCOL.sty @@ -0,0 +1,199 @@ +% Guide.sty +% G. Marleau +% created : 1998/09/18 +% modified: 1999/05/07 +% 1999/05/07 +% + +\ProvidesPackage{GuideCOL}[1999/09/07] +\RequirePackage{array,cite,ifthen,longtable,color} +\gdef\@GuideVersion{0} +\newcommand\GuideVersion[1]{\gdef\@GuideVersion{#1}} +\definecolor{Red}{cmyk}{0,1.,1.,0} % PANTONE RED +\definecolor{Blue}{cmyk}{1.,1.,0,0} % PANTONE BLUE-072 +\definecolor{Black}{cmyk}{0,0,0,1.} % PANTONE PROCESS-BLACK + +% +% \moc{Keyword} +% \dds{DragonDataStructure} +% \dusa{UserData} +% \dstr{InputStructure} +% \dir{Directory} +% \listedir{DirectoryList} +% \tst{TestCase} +% + +\DeclareRobustCommand{\moc}[1]{\texttt{#1}\index{#1@\texttt{#1}}} +\DeclareRobustCommand{\dds}[1]{\textsc{#1}\index{#1@\textsc{#1}}} +\DeclareRobustCommand{\dusa}[1]{\textsl{#1}\index{#1@\textsl{#1}}} +\DeclareRobustCommand{\dstr}[1]{\textbf{(#1)}\index{#1@\textbf{(#1)}}} +\DeclareRobustCommand{\dir}[1]{\textrm{/#1/}\index{#1@\textrm{/#1/}}} +\DeclareRobustCommand{\listedir}[1]{\textrm{\{/#1/\}}\index{#1@\textrm{\{/#1/\}}}} +\DeclareRobustCommand{\namedir}[1]{\texttt{/#1/}\index{#1@\texttt{/#1/}}} +\DeclareRobustCommand{\tst}[1]{\textbf{#1}\index{#1@\textbf{#1}}} + +% +% Environnement DataStructure +% +% \begin{DataStructure}{Nom du tableau} +% \end{DataStructure}} +% +% + +\newenvironment{DataStructure}[1]{\noindent +\setlongtables \setlength{\LTleft}{0pt}\setlength{\LTright}{0pt} +\setlength{\LTcapwidth}{15.0cm} +\begin{longtable}{|p{15.5cm}|} +\caption{#1}\\ +\hline +\multicolumn{1}{|l|}{} \\ +\endfirsthead +\multicolumn{1}{l}{#1 \hfill continued from last page}\\ +\hline +\multicolumn{1}{|l|}{} \\ +\endhead +\multicolumn{1}{|l|}{}\\ \hline +\multicolumn{1}{r}{continued on next page}\\ +\endfoot +\multicolumn{1}{|l|}{}\\ \hline +\endlastfoot} +{\end{longtable} \vskip 0.5cm } + +% +% Environnement DescriptionEnregisterment +% +% \begin{DescriptionEnregisterment}{Nom du tableau}{dimension des commentaires} +% \end{DescriptionEnregisterment} +% +% Peut contenir les commandes: +% \IntEnr{Nom du record}{Dimension}{Commentaires} +% \OptIntEnr{Nom du record}{Dimension}{Condition} +% {Commentaires} +% \RealEnr{Nom du record}{Dimension}{Commentaires}{Unites} +% \OptRealEnr{Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \DbleEnr{Nom du record}{Dimension}{Commentaires}{Unites} +% \OptDbleEnr{Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \CharEnr{Nom du record}{Dimension}{Commentaires} +% \OptCharEnr{Nom du record}{Dimension}{Condition} +% {Commentaires} +% \DirEnr{Nom du repertoire}{Dimension}{Commentaires} +% \OptDirEnr{Nom du repertoire}{Dimension}{Condition} +% {Commentaires} +% +% \IntVar{Variable associee au Nom du record}{Dimension}{Commentaires} +% \OptIntVar{Variable associee au Nom du record}{Dimension}{Condition} +% {Commentaires} +% \RealVar{Variable associee au Nom du record}{Dimension}{Commentaires}{Unites} +% \OptRealVar{Variable associee au Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \DbleVar{Variable associee au Nom du record}{Dimension}{Commentaires}{Unites} +% \OptDbleVar{Variable associee au Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \CharVar{Variable associee au Nom du record}{Dimension}{Commentaires} +% \OptCharVar{Variable associee au Nom du record}{Dimension}{Condition} +% {Commentaires} +% \DirVar{Variable associee au Nom du repertoire}{Dimension}{Commentaires} +% \OptDirVar{Variable associee au Nom du repertoire}{Dimension}{Condition} +% {Commentaires} +% +% + +\newenvironment{DescriptionEnregistrement}[2]{\noindent +\setlongtables \setlength{\LTleft}{0pt}\setlength{\LTright}{0pt} +\begin{longtable}{|llll@{\extracolsep{\fill}}p{#2}|} +\caption{#1}\\ +\hline \hline +\multicolumn{5}{|l|}{} \\ +Name & Type & Condition &Units &Comment\\ +\multicolumn{5}{|l|}{} \\ \hline +\multicolumn{5}{|l|}{} \\ +\endfirsthead +\multicolumn{5}{l}{#1 \hfill continued from last page}\\ +\hline \hline +\multicolumn{5}{|l|}{} \\ +Name & Type & Condition &Units &Comment\\ +\multicolumn{5}{|l|}{} \\ \hline +\multicolumn{5}{|l|}{} \\ +\endhead +\multicolumn{5}{|l|}{}\\ \hline\hline +\multicolumn{5}{r}{continued on next page}\\ +\endfoot +\multicolumn{5}{|l|}{}\\ \hline\hline +\endlastfoot} +{\end{longtable} \vskip 0.5cm } + + +\newcommand{\IntEnr}[3]{ \texttt{#1} & I(#2) & &  \\} +\newcommand{\OptIntEnr}[4]{ \texttt{#1} & I(#2) & #3 &  \\} +\newcommand{\RealEnr}[4]{ \texttt{#1} & R(#2) & & #3  \\} +\newcommand{\OptRealEnr}[5]{\texttt{#1} & R(#2) & #3 & #4  \\} +\newcommand{\DbleEnr}[4]{ \texttt{#1} & D(#2) & & #3  \\} +\newcommand{\OptDbleEnr}[5]{\texttt{#1} & D(#2) & #3 & #4  \\} +\newcommand{\CharEnr}[3]{ \texttt{#1} & C#2 & &  \\} +\newcommand{\OptCharEnr}[4]{\texttt{#1} & C#2 & #3 &  \\} +\newcommand{\DirEnr}[2]{ \texttt{#1} & Dir & &  \\} +\newcommand{\OptDirEnr}[3]{ \texttt{#1} & Dir & #2 &  \\} + +\newcommand{\IntVar}[3]{ \textsl{#1} & I(#2) & &  \\} +\newcommand{\OptIntVar}[4]{ \textsl{#1} & I(#2) & #3 &  \\} +\newcommand{\RealVar}[4]{ \textsl{#1} & R(#2) & & #3  \\} +\newcommand{\OptRealVar}[5]{\textsl{#1} & R(#2) & #3 & #4  \\} +\newcommand{\DbleVar}[4]{ \textsl{#1} & D(#2) & & #3  \\} +\newcommand{\OptDbleVar}[5]{\textsl{#1} & D(#2) & #3 & #4  \\} +\newcommand{\CharVar}[3]{ \textsl{#1} & C#2 & &  \\} +\newcommand{\OptCharVar}[4]{\textsl{#1} & C#2 & #3 &  \\} +\newcommand{\DirVar}[2]{ \textsl{#1} & Dir & &  \\} +\newcommand{\OptDirVar}[3]{ \textsl{#1} & Dir & #2 &  \\} + +% +% Environnement ListeDeNotation +% +% \begin{ListeDeNotation}{largeur de l'etiquette} +% \end{ListeDeNotation} +% + +\newlength{\NotationLength} +\newcommand{\NotationLabel}[1]{\mbox{#1}\hfil} +\newenvironment{ListeDeNotation}[1]{% + \begin{list}{}{\renewcommand{\makelabel}{\NotationLabel}% + \setlength{\NotationLength}{#1}% + \setlength{\labelwidth}{\NotationLength}% + \addtolength{\NotationLength}{\labelsep}% + \setlength{\leftmargin}{\NotationLength}% + }}{\end{list}} +% +% Environnement ListeDeDescription +% +% \begin{ListeDeDescription}{Nom le plus large de l'etiquette} +% \end{ListeDeDescription} +% +\newlength{\DescriptionLength} +\newcommand{\DescriptionLabel}[1]{\mbox{#1}\hfil} +\newenvironment{ListeDeDescription}[1]{% + \begin{list}{}{\renewcommand{\makelabel}{\DescriptionLabel}% + \settowidth{\DescriptionLength}{\textbf{#1}}% + \setlength{\labelwidth}{\DescriptionLength}% + \addtolength{\DescriptionLength}{\labelsep}% + \setlength{\leftmargin}{\DescriptionLength}% + }}{\end{list}} + + +\newcommand{\Release}[2]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{\color{Red}#2 (\textsf{Release #1})\color{Black}}% +{\color{Blue}#2 (\textsf{Release #1})\color{Black}}} +\newcommand{\Releasetmp}[1]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{\color{Red}(\textsf{Release #1})\color{Black}}% +{\color{Blue}(\textsf{Release #1})\color{Black}}} +\newenvironment{GuideUpdate}[1]{% + \hfill\Releasetmp{#1}% + \ifthenelse{\equal{#1}{\@GuideVersion}}{\color{Red}}{\color{Blue}}}{\color{Black}} +\newcommand{\BegRel}[1]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{\color{Red}}% +{\color{Blue}}} +\newcommand{\EndRel}[0]{\color{Black}} + diff --git a/doc/IGE332/IGE332.tex b/doc/IGE332/IGE332.tex new file mode 100644 index 0000000..fd8e733 --- /dev/null +++ b/doc/IGE332/IGE332.tex @@ -0,0 +1,36 @@ +\def\opcite#1{\textsuperscript{\cite{#1}}} +\documentclass{report} +% +% Black and white +% +\usepackage{IGNrapport,GuideBW} +\usepackage{makeidx} +\setlength{\textheight}{22.5cm} +\topmargin -0.5cm + +\makeindex +\begin{document} + +\title{THE GANLIB5 KERNEL GUIDE \\(64--BIT CLEAN VERSION)} + +\author{A.~H\'ebert and R.~Roy} + +\date{\today} + +\RapportIGN{IGE--332} + +\GuideVersion{5.00} + +\tableofcontents + +\Debutdutexte + +\input{chapter1.tex} +\clearpage +\phantomsection +\input{Bibliography.tex} +\clearpage +\phantomsection +\printindex + +\end{document} diff --git a/doc/IGE332/IGNrapport.sty b/doc/IGE332/IGNrapport.sty new file mode 100644 index 0000000..0d1f4d5 --- /dev/null +++ b/doc/IGE332/IGNrapport.sty @@ -0,0 +1,574 @@ +% IGNrapport.sty +% G. Marleau +% 1998/09/18 +% + +\ProvidesPackage{IGNrapport}[1998/09/18] +\RequirePackage{array,cite,indentfirst,epsfig,fleqn} +\RequirePackage{hyperref} +\hypersetup{colorlinks} + +% +% Definition +% +\newcommand{\warningStyle}{\itshape} +\newcommand{\warningRestore}{\normalfont} +\newcommand{\ColorComments}[1]{\renewcommand{\warningStyle}{\color{#1}\itshape} + \renewcommand{\warningRestore}{\color{Black}\normalfont}} +\newcommand{\warning}[1]{\warningStyle This option is not supported in #1.\warningRestore} + +\newcommand{\sectionformat}[1]{\ifnum \@typerapport=0 {#1} \else {#1} \fi} +\newcommand{\sectionstyle}[1]{\ifnum \@typerapport=0 {#1} \else {#1} \fi} +\newcommand{\subsectionstyle}[1]{\ifnum \@typerapport=0 {#1} \else {#1} \fi} +\gdef\@typerapport{0} +\gdef\@typesections{0} +\def\RapportCourt{\gdef\@typerapport{1}} +\def\refname{References} +\def\Indexname{Index} +\gdef\@tableofcontents{Contents} +\gdef\@listoffigures{List of Figures} +\gdef\@listoftables{List of Tables} +\gdef\@listofinput{List of Input Files} +\gdef\@listoftation{List of Notations and Symbols} +\gdef\@listofappendix{List of Appendices} +\def\appendixname{Appendix} +\def\indexname{{\Indexname}} + +\renewcommand\tableofcontents{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \section*{\@tableofcontents}% + \@starttoc{toc}% + \if@restonecol\twocolumn\fi + } +\newcommand\listofappendices{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \section*{\@listofappendix}% + \@starttoc{loa}% + \if@restonecol\twocolumn\fi + } +\renewcommand\listoffigures{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \section*{\@listoffigures}% + \@starttoc{lof}% + \if@restonecol\twocolumn\fi + } +\renewcommand\listoftables{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \section*{\@listoftables}% + \@starttoc{lot}% + \if@restonecol\twocolumn\fi + } +\newcommand\listofinputdecks{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \section*{\@listofinput}% + \@starttoc{loi}% + \if@restonecol\twocolumn\fi + } + +% +% References +% +\renewenvironment{thebibliography}[1] + {\ifnum \@typerapport=0 + \section*{\refname} + \else + \section{\refname} + \fi + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\newenvironment{ListeDesRapports}[1] + {\section*{Liste des Rapports}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\renewenvironment{theindex} + {\addcontentsline{toc}{section}{\indexname}% + \if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ + \twocolumn[\@makesnewsectionhead{\indexname}]% + \parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem} + {\if@restonecol\onecolumn\else\clearpage\fi} + +% +% Commande de mise en page +% +% TitreRapportIGN{Nom du rapport}{auteurs} +% {numero du rapport IGN}{date} +% + +\setlength{\textheight}{22.0cm} +\setlength{\textwidth}{16.0cm} +\setlength{\oddsidemargin}{0.5cm} +\setlength{\evensidemargin}{0.5cm} +\setlength{\topmargin}{0cm} +\setlength{\headheight}{0.5cm} +\setlength{\headsep}{0.5cm} +\makeindex + +\newcommand{\RapportIGN}[1]{ + \markright{\normalfont \slshape #1} + \pagestyle{myheadings} + \pagetitreRapportIGN{#1} + \pagenumbering{roman} + \setcounter{page}{1}\clearpage} + +\newcommand{\TitreRapportIGN}[4]{ + \markright{\normalfont \slshape #3} + \pagestyle{myheadings} + \pagetitreIGN{#1}{#2}{#3}{#4} + \pagenumbering{roman} + \setcounter{page}{1}\clearpage} + +\newcommand{\SectionFigures}[0]{\clearpage +\vspace*{5.0in} +\begin{center} +{\bfseries \Large FIGURES} +\end{center}} + +\newcommand{\pagetitreRapportIGN}[1]{% +\noindent\parbox{\textwidth}{\hfill \bfseries \large TECHNICAL REPORT} +\parbox{\textwidth}{\hfill \bfseries \large {#1}} +\thispagestyle{empty} +\vskip 5.0cm +\begin{center} +{\bfseries \Large \@title} +\vskip 3.0cm +{\scshape \Large \@author} +\end{center} +\vfill +\noindent +\parbox{\textwidth}{\hfill Institut de g\'enie nucl\'eaire} +\parbox{\textwidth}{\hfill D\'epartement de g\'enie m\'ecanique} +\parbox{\textwidth}{\hfill \'Ecole Polytechnique de Montr\'eal} +\parbox{\textwidth}{\hfill \@date} +\begin{picture}(10,0)(0,50) + \put(0.5,50){\includegraphics[height=2cm]{64_bit.eps}} +\end{picture} +} +\newcommand{\pagetitreIGN}[4]{% +\noindent\parbox{\textwidth}{\hfill \bfseries \large TECHNICAL REPORT} +\parbox{\textwidth}{\hfill \bfseries \large {#3}} +\thispagestyle{empty} +\vskip 5.0cm +\begin{center} +{\bfseries \large \MakeUppercase{#1}} +\vskip 3.0cm +{\scshape #2} +\end{center} +\vfill +\noindent +\parbox{\textwidth}{\hfill Institut de g\'enie nucl\'eaire} +\parbox{\textwidth}{\hfill D\'epartement de g\'enie m\'ecanique} +\parbox{\textwidth}{\hfill \'Ecole Polytechnique de Montr\'eal} +\parbox{\textwidth}{\hfill #4}} + +\newcommand{\Debutdutexte}{\clearpage +\pagenumbering{arabic} +\setcounter{page}{1}} + +\setcounter{tocdepth}{3} +\renewcommand{\thesection}{\@arabic\c@section} +\renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection} +\renewcommand{\thesubsubsection}{\thesubsection.\@arabic\c@subsubsection} +\@addtoreset {equation}{section} +\renewcommand{\theequation}{\thesection.\@arabic\c@equation} + + +\renewcommand\section{\if@openright + \cleardoublepage + \else + \ifnum\@typerapport=0 + \clearpage + \else + \vspace{0.5cm} + \fi + \fi + \global\@topnum\z@ + \@afterindentfalse + \secdef\@newsection\@snewsection} +\def\@newsection[#1]#2{\refstepcounter{section}% + \typeout{Section \space\thesection.}% + \addcontentsline{toc}{section}% + {\protect\numberline{\thesection}\sectionformat{#1}}% + \if@twocolumn + \@topnewpage[\@makenewsectionhead{#2}]% + \else + \@makenewsectionhead{#2}\@afterheading + \fi} +\def\@makenewsectionhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \large\bfseries \thesection \space \sectionformat{#1} \par\nobreak + \vskip 20\p@ + }} +\def\@snewsection#1{\addcontentsline{toc}{section}{\sectionformat{#1}}% + \if@twocolumn + \@topnewpage[\@makesnewsectionhead{#1}]% + \else + \@makesnewsectionhead{#1}\@afterheading + \fi} +\def\@makesnewsectionhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \centerline{\large\bfseries \sectionformat{#1}}\par\nobreak + \vskip 20\p@ + }} + +\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}} + +\renewcommand{\subsubsection}{\global\@topnum\z@ + \@afterindentfalse + \secdef\@newsssection\@snewsssection} + +\def\@newsssection[#1]#2{\refstepcounter{subsubsection}% + \addcontentsline{toc}{subsubsection}% + {\protect\numberline{\thesubsubsection}#1}% + \if@twocolumn + \@topnewpage[\@makenewsssectionhead{#2}]% + \else + \@makenewsssectionhead{#2}\@afterheading + \fi} +\def\@makenewsssectionhead#1{% + {\vskip 20\p@ + \parindent \z@ \raggedright + \interlinepenalty\@M + \normalfont\normalsize\slshape \thesubsubsection \space #1\par\nobreak + \vskip 20\p@ + }} +\def\@snewsssection#1{\addcontentsline{toc}{subsubsection}{#1}% + \if@twocolumn + \@topnewpage[\@makesnewsssectionhead{#1}]% + \else + \@makesnewsssectionhead{#1}\@afterheading + \fi} +\def\@makesnewsssectionhead#1{% + {\vskip 20\p@ \parindent \z@ \raggedright + \interlinepenalty\@M + \vskip 20\p@ + \normalfont\normalsize\slshape #1\par\nobreak + \vskip 20\p@ + }} +\renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\sffamily\bfseries}} + +\newcommand\appendices{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \renewcommand{\thesection}{\@Alph\c@section} + \renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection} + \renewcommand{\thesubsubsection}{\thesection.\@arabic\c@subsubsection}} + + +\renewcommand\appendix{\if@openright\cleardoublepage\else\ifnum\@typerapport=0\clearpage\fi\fi + \global\@topnum\z@ + \@afterindentfalse + \secdef\@newappendix\@snewappendix} +\newcommand{\subappendix}{\@startappendices{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}} +\newcommand{\subsubappendix}{\@startappendices{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\slshape}} +\def\@newappendix[#1]#2{\refstepcounter{section}% + \typeout{Appendix \space\thesection.}% + \addcontentsline{loa}{section}% + {\protect\numberline{\thesection}#1}% + \if@twocolumn + \@topnewpage[\@makenewappendixhead{#2}]% + \else + \@makenewappendixhead{#2}\@afterheading + \fi} +\def\@makenewappendixhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \centerline{\large\bfseries Appendix \thesection}\par\nobreak + \vskip 20\p@ + \centerline{ #1}\par\nobreak + \vskip 20\p@ + }} +\def\@snewappendix#1{\addcontentsline{loa}{section}{#1}% + \if@twocolumn + \@topnewpage[\@makesnewappendixhead{#1}]% + \else + \@makesnewappendixhead{#1}\@afterheading + \fi} +\def\@makesnewappendixhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \centerline{\large\bfseries #1}\par\nobreak + \vskip 20\p@ + }} + +\newcommand\InputDecks{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \renewcommand{\thesection}{\@Roman\c@section} + \renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection} + \renewcommand{\thesubsubsection}{\thesection.\@arabic\c@subsubsection}} + + +\newcommand\inputdeck{\if@openright\cleardoublepage\else\ifnum\@typerapport=0\clearpage\fi\fi + \global\@topnum\z@ + \@afterindentfalse + \secdef\@newinputdeck\@snewinputdeck} +\newcommand{\subinputdeck}{\@startinputdeck{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}} +\newcommand{\subsubinputdeck}{\@startinputdeck{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\slshape}} +\def\@newinputdeck[#1]#2{\refstepcounter{section}% + \typeout{Input deck \space\thesection.}% + \addcontentsline{loi}{section}% + {\protect\numberline{\thesection}#1}% + \if@twocolumn + \@topnewpage[\@makenewinputdeckhead{#2}]% + \else + \@makenewinputdeckhead{#2}\@afterheading + \fi} +\def\@makenewinputdeckhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \large\bfseries \thesection \space #1\par\nobreak + \vskip 20\p@ + }} +\def\@snewinputdeck#1{\addcontentsline{loa}{section}{#1}% + \if@twocolumn + \@topnewpage[\@makesnewinputdeckhead{#1}]% + \else + \@makesnewinputdeckhead{#1}\@afterheading + \fi} +\def\@makesnewinputdeckhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \large\bfseries #1\par\nobreak + \vskip 20\p@ + }} + +\def\@startappendices#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@sappend{#3}{#4}{#5}{#6}}% + {\@dblarg{\@append{#1}{#2}{#3}{#4}{#5}{#6}}}} +\def\@append#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{loa}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \addcontentsline{loa}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\def\@sappend#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} + +\def\@startinputdeck#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@sinpd{#3}{#4}{#5}{#6}}% + {\@dblarg{\@inpd{#1}{#2}{#3}{#4}{#5}{#6}}}} +\def\@inpd#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{loi}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \addcontentsline{loi}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\def\@sinpd#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} + +% +% Commande pour inserer in fichier de texte en +% format verbatim +% +\def\listfile#1{\goodbreak\vskip 0.5cm\noindent {File: {\tt #1}} + \vskip 0.2cm\begingroup\setupverbatim\input #1 \endgroup} +\def\listing#1{\goodbreak\vskip 0.5cm\noindent {Input data for test case: {\bf #1}} + \vskip 0.2cm\begingroup\setupverbatim\input #1 \endgroup} +\def\setupverbatim{\tt + \def\par{\leavevmode\endgraf}\catcode`\`=\active + \obeylines\uncatdospecials \obeyspaces} +{\obeyspaces\global\let =\ } +\def\uncatdospecials{\def\do##1{\catcode`##1=12 }\dospecials} + +\newcommand{\Eq}[1]{Eq.~(\ref{eq:#1})} +\newcommand{\Eqto}[2]{Eqs.~(\ref{eq:#1}) to~(\ref{eq:#2})} +\newcommand{\Eqand}[2]{Eqs.~(\ref{eq:#1}) and~(\ref{eq:#2})} +\newcommand{\Eqor}[2]{Eqs.~(\ref{eq:#1}) or~(\ref{eq:#2})} + +\newcommand{\Appen}[1]{Appendix~\ref{appen:#1}} +\newcommand{\Appento}[2]{Appendices~\ref{appen:#1} to~\ref{appen:#2}} +\newcommand{\Appenand}[2]{Appendices~\ref{appen:#1} and~\ref{appen:#2}} +\newcommand{\Appenor}[2]{Appendices~\ref{appen:#1} or~\ref{appen:#2}} + +\newcommand{\Sect}[1]{Section~\ref{sect:#1}} +\newcommand{\Sectto}[2]{Sections~\ref{sect:#1} to~\ref{sect:#2}} +\newcommand{\Sectand}[2]{Sections~\ref{sect:#1} and~\ref{sect:#2}} +\newcommand{\Sector}[2]{Sections~\ref{sect:#1} or~\ref{sect:#2}} + +\newcommand{\Fig}[1]{Figure~\ref{fig:#1}} +\newcommand{\Figto}[2]{Figure~\ref{fig:#1} to~\ref{fig:#2}} +\newcommand{\Figand}[2]{Figure~\ref{fig:#1} and~\ref{fig:#2}} +\newcommand{\Figor}[2]{Figure~\ref{fig:#1} or~\ref{fig:#2}} + +\newcommand{\Tab}[1]{Table~\ref{tab:#1}} +\newcommand{\Tabto}[2]{Table~\ref{tab:#1} to~\ref{tab:#2}} +\newcommand{\Taband}[2]{Table~\ref{tab:#1} and~\ref{tab:#2}} +\newcommand{\Tabor}[2]{Table~\ref{tab:#1} or~\ref{tab:#2}} + +\newcounter{nblank} +\newcommand{\blank}[1]{\setcounter{nblank}{#1}\symbol{32}\whiledo{\value{nblank}>1}{\symbol{32}\addtocounter{nblank}{-1}}} +\renewcommand{\@cite}[2]{{\textsuperscript{[#1]}\ifthenelse{\boolean{@tempswa}}{,#2}{}}} diff --git a/doc/IGE332/chapter1.tex b/doc/IGE332/chapter1.tex new file mode 100644 index 0000000..5e8a5ef --- /dev/null +++ b/doc/IGE332/chapter1.tex @@ -0,0 +1,7412 @@ +\section{The GANLIB Version 5 architecture} + +The GANLIB is a small library that is linked to a software application in order to facilitate modularity, +interoperability, and to bring generic capabilities in term of data transfer. The GANLIB is an application programming +interface (API) made of subroutines that are called by the software application (e.g., a lattice code) or by +the multi-physics surrounding application. In other words, the GANLIB acts as a standardized interface between the +software application and the multi-physics application, as depicted in \Fig{multi}. + +\begin{figure}[htbp] +\begin{center} +\epsfxsize=9cm +\centerline{ \epsffile{multiphysics.eps}} +\parbox{12cm}{\caption{Implementing a multi-physics application.}\label{fig:multi}} +\end{center} +\end{figure} +\goodbreak + +\vskip 0.08cm + +The GANLIB is made of two distinct and inter-related components: +\begin{itemize} +\item CLE--2000 is a compact supervisor responsible for the free-format recovery of input data, for the modularization +of the software application and for the insertion of loops and control statements in the input data flow. CLE-2000 +permits the conception of {\sl computational schemes}, dedicated to specific engineering studies, without any need +for recompilation of the software application.\cite{cle2000} +\item LCM objects are data structures used to transfer data between modules of the software application and towards the +multi-physics application. LCM objects are structures made of {\sl associative table} and {\sl heterogeneous lists}. These +structures are either {\sl memory resident} or {\sl persistent} (i.e., stored in a file). The LCM object API is implemented +with access efficiency as its first requirement, even for frequent calls with small chunks of data.\cite{lcm2002} +\end{itemize} + +\vskip 0.08cm + +The GANLIB Version 5 is implemented in the ANSI~C programming language\cite{ansiC}, in order to maximize its compatibility +in a multi-physics environment where different components are implemented in various programming languages (C++, +Fortran, Java, etc.). The GANLIB Version 5 is {\sl 64-bit clean}, another benefit of using an ANSI~C implementation. This +last property allows the execution of software applications with 32-bit integers and 64-bit addresses. Specific Fortran +APIs are also available and are implemented according to the C interoperability mechanism, +available in Fortran~2003 and standardized by the International Organization for Standardization (ISO). This architecture is 64-bit clean.\cite{fortran2003} + +\vskip 0.8cm + +\subsection {From Versions 3 or 4 to Version 5} + +The Version 3 and Version 4 software applications available at GAN are using a legacy GANLIB, implemented in FORTRAN~77, +and relatively unchanged for more than 15~years.\cite{lcm1994} The only addition in Version~4 are the heterogeneous lists within LCM +objects. This Fortran implementation is {\sl not} ISO standard and {\sl not} 64-bit clean. However, the corresponding API +is mature and efficient, two qualities that we want to preserve. + +\vskip 0.08cm + +A software application is not 64-bit clean when 32-bit integers are used to store addresses (or differences between +two addresses). This nasty operation is possible in ANSI~C but can always be avoided. Unfortunately, this operation +is extensively used in software applications DRAGON, TRIVAC and DONJON Versions 3 or 4, due to design constraints +related to the choice of FORTRAN~77 as programming language. + +\vskip 0.08cm + +Versions 3 or 4 software applications can be re-implemented around the Version~5 GANLIB in order to become ISO standard and 64-bit clean. +However, the conversion process is not automatic and is time-consuming. Two major modifications must be done: +\begin{enumerate} +\item All variables containing addresses of LCM objects must be declared as {\tt TYPE(C\_PTR)} instead of been +declared as {\tt INTEGER}. The intrinsic type {\tt TYPE(C\_PTR)} is available in Fortran~2003, as defined by ISO. +\item Every call to the {\tt SETARA} subroutine of the GANLIB must be replaced by an {\tt ALLOCATE} statement and every call to the {\tt RLSARA} +subroutine must be replaced by a {\tt DEALLOCATE} statement. Statements {\tt ALLOCATE} and {\tt DEALLOCATE} are +available in Fortran~90, as defined by ISO. The {\tt ALLOCATABLE} attribute is used to identify allocated arrays. Blank common +are no longer required as reference addresses. This modification +is the more time-consuming of the two. +\end{enumerate} + +\vskip 0.08cm + +Implementing software applications in Fortran 2003 offers the opportunity to use advanced features of this language, such +as pointers, Fortran modules (not to be confused with CLE-2000 modules) and polymorphism. However, this is a programming +style issue which is independent of the selection of GANLIB Version 5. It is possible, as a pragmatic choice, to keep the Fortran-77 programming style +and just use the GANLIB Version~5, {\tt TYPE(C\_PTR)} types and {\tt ALLOCATABLE} arrays. + +\section {The ANSI C {\sc lcm} API}\label{sect:lcmapiC} + +LCM objects are data structures, implemented in ANSI~C, with characteristics of {\sl associative tables} (a.k.a., dictionaries or +hash tables) and/or {\sl heterogeneous lists} (a.k.a., cell arrays). These data structures are either stored in memory or are persistent +(i.e., stored in a file). These objects are primarily accessed via an API implemented in ANSI~C. Access by other languages is +possible via {\sl specific bindings} that are also described in this report. Deep copy and serialization utilities are available. + +\vskip 0.08cm + +Persistence is implemented using XSM data structures, together with another API implemented in ANSI~C. {\sc xsm} files are used +in this case. However, the XSM API +is invoked from within LCM and a developer using the GANLIB never has to call it directly. + +\vskip 0.08cm + +The {\sc lcm} API was implemented in such a way that +\begin{itemize} +\item the access from ANSI~C or from Fortran is highly optimized, even for frequent calls with small chunks of data. +\item the access from other languages (Matlab, Python, Java, or Objective~C) permits a complete read/write access +of the totality of information contained in the object. +\end{itemize} + +\vskip 0.08cm + +This technical report contains the precise description of each ANSI~C function available in the {\sc lcm} API and dedicated +to a programmer using the GANLIB Version~5. + +\vskip 0.08cm + +A LCM object is a collection of the following elements: +\vskip 0.08cm +{\bf Associative tables} \\ +An associative table is equivalent to a Python dictionary or to a Java hash table. Each element of an associative table is an association between a 12-character name and a block of data. A block of data can be an array of some elementary type, another associative table or an heterogeneous list. Tree structures can be constructed that way. +\vskip 0.08cm +{\bf Heterogeneous list} \\ +An heterogeneous list is an ordered set of blocks of information (referred as ``0", ``1", ``2", etc. ). A block of data can be an array of some elementary type, another associative table or an heterogeneous list. +\vskip 0.08cm +{\bf Array of elementary type} \\ +An array of elementary type is a set of consecutive values in memory, all of the same type. The type is selected in the following table: \\ +\begin{tabular}{|c|c|c|} +\hline +index & array of ... & type\\ +\hline +1 & 32-bit integer & int\_32 \\ +2 & 32-bit real & float\_32 \\ +3 & 4-character strings & \\ +4 & 64-bit real & double\_64 \\ +5 & 32-bit logical & int\_32 \\ +6 & 64-bit complex& \\ +\hline +\end{tabular} + +\vskip 0.08cm + +Any ANSI~C function calling the {\sc lcm} API must use an include file of the form +\begin{verbatim} +#include "lcm.h" +\end{verbatim} + +Each LCM object has a {\sl root associative table} from which the complete object is constructed. + +\clearpage + +\subsection{General utility functions} + +\subsubsection{strcut\_c\index{strcut\_c}} + +Copy {\tt n} characters from string {\tt ct} to {\tt s}. Eliminate leading {\tt ' '} and {\tt '}$\backslash${\tt 0'} +characters in {\tt s}. Terminate {\tt s} with a {\tt '}$\backslash${\tt 0'}. + +\begin{verbatim} + +strcut_c(s, ct, n); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ct} & {\it char*} & character variable of length {\tt n}. May not be null-terminated.\\ +\hline +{\tt n} & {\it int\_32} & length of {\tt ct}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt s} & {\it char*} & null terminated string. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{strfil\_c\index{strfil\_c}} + +Copy {\tt n} characters from string {\tt ct} to {\tt s}. Eliminate {\tt '}$\backslash${\tt 0'} characters and +pack with {\tt ' '}. Assume that {\tt ct} is null-terminated. + +\begin{verbatim} + +strfil_c(s, ct, n); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ct} & {\it char*} & null-terminated character variable.\\ +\hline +{\tt n} & {\it int\_32} & expected length of {\tt s}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt s} & {\it char*} & character variable of length {\tt n} (not null-terminated). \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Opening, closing and validation of LCM objects} + +\subsubsection{lcmop\_c\index{lcmop\_c}} + +Open an LCM object (either memory resident or persistent). Obtain the address of the LCM +object if it is created. Note that CLE-2000 is responsible to perform the calls to +{\tt lcmop\_c} for the LCM objects that are used as parameters of a CLE-2000 module. The use +of {\tt lcmop\_c} is generally restricted to the use of temporary LCM objects created within a CLE-2000 module. + +\begin{verbatim} + +lcmop_c(iplist,namp,imp,medium,impx); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the LCM object if {\tt imp=1} or {\tt imp=2}. {\tt iplist} corresponds to the address of the root associative table. \\ +\hline +{\tt namp} & {\it char[73]} & name of the LCM object if {\tt imp=0}. \\ +\hline +{\tt imp} & {\it int\_32} & =0 to create a new LCM object ; + =1 to modify an existing LCM object; + =2 to access an existing LCM object in {\bf read-only} mode. \\ +\hline +{\tt medium} & {\it int\_32} & =1 to use a memory-resident LCM object; + =2 to use an {\sc xsm} file to store the LCM object. \\ +\hline +{\tt impx} & {\it int\_32} & print parameter. Equal to zero to suppress all printings. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of an LCM object if {\tt imp=0}. \\ +\hline +{\tt namp} & {\it char*} & name of the LCM object if {\tt imp=1} or {\tt imp=2}. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmcl\_c\index{lcmcl\_c}} + +Close an LCM object (either memory resident or persistent). Note that CLE-2000 is responsible to perform the calls to +{\tt lcmcl\_c} for the LCM objects that are used as parameters of a CLE-2000 module. The use +of {\tt lcmcl\_c} is generally restricted to the use of temporary LCM objects created within a CLE-2000 module. + +\vskip 0.2cm + +A LCM object can only be closed if {\tt iplist} points towards its root directory. + +\begin{verbatim} + +lcmcl_c(iplist,iact); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the LCM object (address of the root directory of the LCM object). \\ +\hline +{\tt iact} & {\it int\_32} & =1 close the LCM object without destroying it; =2 and destroying it; =3 erase and close the LCM object without destroying it. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & {\tt iplist=null} indicates that the LCM object is closed and destroyed. A memory-resident LCM object keeps the +same address during its complete existence. A persistent LCM object is associated to an XSM file and is represented by a different +value of {\tt iplist} each time it is reopened. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmval\_c\index{lcmval\_c}} + +Function to validate a single block of data in a LCM object or the totality of the LCM object, +starting from the address of an associative table. This function has no effect if the object is +persistent. The validation consists to verify the connections between the elements of the LCM +object, to verify that each element of the object is defined and to check for possible memory corruptions. +If an error is detected, the following message is issued: + +\begin{verbatim} +LCMVAL_C: BLOCK xxx OF THE TABLE yyy HAS BEEN OVERWRITTEN. +\end{verbatim} + +This function is called as + +\begin{verbatim} + +lcmval_c(iplist,namp); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table or of the heterogeneous list. \\ +\hline +{\tt namp} & {\it char*} & name of the block to validate in the associative table. +If {\tt namp='~'}, all the blocks in the associative table are verified in a recursive way. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Interrogation of LCM objects} + +The data structures in an LCM object are self-described. It is therefore possible to +interrogate them in order to know their characteristics. + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of interrogation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & father structure~~~~ & information block \\ +\hline +father & associative table & {\tt lcminf\_c} & {\tt lcmlen\_c} \\ + & & {\tt lcmnxt\_c} & \\ +\cline{2-4} + & heterogeneous list & {\tt lcminf\_c} & {\tt lcmlel\_c} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{lcmlen\_c\index{lcmlen\_c}} + +Function used to recover the length and type of an information block stored in an +associative table (either memory-resident or persistent). The length is the number of +elements in a daughter heterogeneous list or the number of elements in an array of elementary type. +If {\tt itylcm=3}, the length is the number of four-character words. As an example, the length required +to store an array of eight-character words is twice its dimension. + +\begin{verbatim} + +lcmlen_c(iplist,namp,ilong,itylcm); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ilong} & {\it int\_32*} & length of the block. =$-1$ for a daughter associative table; + =$N$ for a daughter heterogeneous list containing $N$ components; + =0 if the block does't exist. \\ +\hline +{\tt itylcm} & {\it int\_32*} & type of information. =0 associative table; =1 32-bit integer; + =2 32-bit real; =3 4-character data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =10 heterogeneous list; + =99 undefined (99 is returned if the block does't exist). \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcminf\_c\index{lcminf\_c}} + +Function used to recover general information about a LCM object. + +\begin{verbatim} + +lcminf_c(iplist,namlcm,nammy,empty,ilong,lcm,access); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table or of the heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt namlcm} & {\it char[73]} & name of the LCM object. \\ +\hline +{\tt nammy} & {\it char[13]} & name of the associative table at address {\tt iplist}. $=${\tt '/'} if the associative table +is the root of the LCM object; $=${\tt ' '} if the associative table +is an heterogeneous list component. \\ +\hline +{\tt empty} & {\it int\_32*} & 32-bit integer variable set to $1$ + if the associative table is empty + or set to $0$ otherwise. \\ +\hline +{\tt ilong} & {\it int\_32*} & $=-1$: {\tt iplist} is an associative table; $>0$: number of components in the heterogeneous list {\tt iplist}. \\ +\hline +{\tt lcm} & {\it int\_32*} & 32-bit integer variable set to $1$ + if information is memory-resident or set to $0$ if information is persistent (stored in an XSM file). \\ +\hline +{\tt access} & {\it int\_32*} & 32-bit integer variable set to the access mode of object. $=0$: the object +is closed (only available for memory-resident LCM objects); $=1$: the object is open for modification; +$=2$: the object is open in read-only mode.\\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmnxt\_c\index{lcmnxt\_c}} + +Function used to find the name of the next block of data in an associative table. Use +of {\tt lcmnxt\_c} is forbidden if the associative table is empty. The order of names is +arbitrary. The search cycle indefinitely. + +\begin{verbatim} + +lcmnxt_c(iplist,namp); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of an existing block. + {\tt namp=' '} can be used to obtain a first name to initiate the search. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt namp} & {\it char*} & name of the next block. + A call to {\tt xabort\_c} is performed if the associative table is empty. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmlel\_c\index{lcmlel\_c}} + +Function used to recover the length and type of an information block stored in an +heterogeneous list (either memory-resident or persistent). The length is the number of +elements in a daughter heterogeneous list or the number of elements in an array of elementary type. +If {\tt itylcm=3}, the length is the number of four-character words. As an example, the length required +to store an array of eight-character words is twice its dimension. + +\begin{verbatim} + +lcmlel_c(iplist,iset,ilong,itylcm); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the block in the list. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ilong} & {\it int\_32*} & length of the block. =0 if the block does't exist. \\ +\hline +{\tt itylcm} & {\it int\_32*} & type of information. =0 associative table; =1 32-bit integer; + =2 32-bit real; =3 4-chatacter data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =10 heterogeneous list; + =99 undefined (99 is returned if the block does't exist). \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Management of the array of elementary type} + +Management of the array of elementary type can be performed {\sl with} copy of the data ({\tt lcmput\_c}, {\tt lcmget\_c}, {\tt lcmpdl\_c} or +{\tt lcmgdl\_c}) or {\sl without} copy ({\tt lcmppd\_c}, {\tt lcmgpd\_c}, {\tt lcmppl\_c} or +{\tt lcmgpl\_c}). + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of operation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & put~~~~~~~~~~~~~ & get~~~~~~~~~~~~~ \\ +\hline +father & associative table & {\tt lcmput\_c} & {\tt lcmget\_c} \\ + & & {\tt lcmppd\_c} & {\tt lcmgpd\_c} \\ +\cline{2-4} + & heterogeneous list & {\tt lcmpdl\_c} & {\tt lcmgdl\_c} \\ + & & {\tt lcmppl\_c} & {\tt lcmgpl\_c} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{lcmget\_c\index{lcmget\_c}} + +Function used to recover an information block (array of elementary type) from an associative table and to copy +this data into memory. + +\begin{verbatim} + +lcmget_c(iplist,namp,data); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block to recover. + A call to {\tt xabort\_c} is performed if the block does't exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt data} & {\it int\_32*} & array of dimension $\ge$ {\tt ilong} in which the block is copied. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +Function {\tt lcmget\_c} can be used to recover information of type other than {\it int\_32*} by using a +cast operation. Here is an example: + +\begin{verbatim} +#include "lcm.h" + ... + float_32 data[5]; + lcm *iplist; + iplist=... ; + lcmget_c(&iplist,namp,(int_32*)data); +\end{verbatim} + +\vskip 0.2cm + +Function {\tt lcmget\_c} can also be used to recover character-string information available in a block +of the LCM object. It is also possible to use function {\tt lcmgcd\_c} presented in \Sect{lcmgcdc}. +In the following example, a block is stored in an associative table located at +address {\tt iplist}. The block has a name {\tt namp} and a length equivalent to 5 32-bit words. +The information is recovered into the integer array {\tt idata} and transformed into a null-terminated +character string {\tt hname} using the {\tt strcut\_c} utility: + +\begin{verbatim} +#include "lcm.h" + ... + char *namp="...", hname[21]; + int_32 idata[5]; + lcm *iplist; + iplist=... ; + lcmget_c(&iplist,namp,idata); + strcut_c(hname,(char *)idata,20); +\end{verbatim} + +\subsubsection{lcmput\_c\index{lcmput\_c}} + +Function used to store a block of data (array of elementary type) into an associative table. +The information is copied from memory towards the LCM object. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +lcmput_c(iplist,namp,ilong,itylcm,data); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block. \\ +\hline +{\tt ilong} & {\it int\_32} & length of the block. \\ +\hline +{\tt itylcm} & {\it int\_32} & type of information. =1 32-bit integer; + =2 32-bit real; =3 4-character data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined. \\ +\hline +{\tt data} & {\it int\_32*} & array of dimension $\ge$ {\tt jlong} to be copied into the LCM object. {\tt jlong}={\tt 2*ilong} if {\tt itylcm}=4 or {\tt itylcm}=6; + {\tt jlong}={\tt ilong} otherwise. + Array elements {\tt data[0]} to {\tt data[jlong-1]} + must be initialized before the call to {\tt lcmput\_c}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Function {\tt lcmput\_c} can be used to store information of type other than {\it int\_32*} by using a +cast operation. Here is an example: + +\begin{verbatim} +#include "lcm.h" + ... + float_32 data[5]; + lcm *iplist; + int_32 i; + iplist=... ; + for (i=0;i<5;i++) { + data[i]=... ; + } + lcmput_c(&iplist,namp,5,2,(int_32*)data); +\end{verbatim} + +\vskip 0.2cm + +Function {\tt lcmput\_c} can also be used to store character-string information in an associative table +of a LCM object. It is also possible to use function {\tt lcmpcd\_c} presented in \Sect{lcmpcdc}. In the +following example, a character string {\tt hname} is first transformed into an integer array {\tt idata} +using the {\tt strfil\_c} utility. This array (block of data) is stored into the LCM object located at +address {\tt iplist}, using {\tt lcmput\_c}. The block has a name {\tt namp}, a length equivalent +to 5 32-bit words, and a type equal to 3. + +\begin{verbatim} +#include "lcm.h" + ... + char *namp="...", hname[20]; + int_32 idata[5], il=5, it=3; + lcm *iplist; + iplist=... ; + strfil_c((char *)idata,hname,20); + lcmput_c(&iplist,namp,il,it,idata); +\end{verbatim} + +\subsubsection{lcmgpd\_c\index{lcmgpd\_c}} + +Function used to recover the memory address of an information block (array of elementary type) from an associative table, +{\sl without} making a copy of the information. Use of this function must respect the following rules: +\begin{itemize} +\item If the information is modified after the call to {\tt lcmgpd\_c}, a call to {\tt lcmppd\_c} +must be performed to acknowledge the modification. +\item The block {\tt *iofset} should never be released using a deallocation function such as +{\tt rlsara\_c}, {\tt free}, etc. +\item The address {\tt iofset} must never be copied into another variable. +\end{itemize} +Non respect of these rules may cause execution failure (core dump, +segmentation fault, etc) without possibility to throw an exception. + +\vskip 0.2cm + +A call to {\tt lcmgpd\_c} doesn't cause any modification to the LCM object. +The data array information is accessed directly from memory locations {\tt *iofset[0]} to {\tt *iofset[ilong-1]} +where {\tt iofset} is the address returned by function {\tt lcmgpd\_c}. + +\begin{verbatim} + +lcmgpd_c(iplist,namp,iofset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block to recover. + A call to {\tt xabort\_c} is performed if the block does't exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iofset} & {\it int\_32**} & address of the data array. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmppd\_c\index{lcmppd\_c}} + +Function used to store a block of data (array of elementary type) into an associative table +{\sl without} making a copy of the information. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +{\sl If a block named {\tt namp} already exists in the associative table, the address associated +with {\tt namp} is replaced by the new address and the information pointed by the old address +is deallocated.} + +\vskip 0.2cm + +The array containing information stored by {\tt lcmppd\_c} {\sl must be} originally +allocated by a call of the form +{\tt iofset = setara\_c(jlong)} or {\tt iofset = (int\_32*)malloc(jlong*sizeof(int\_32))}. +where {\tt jlong} is generally equal to {\tt ilong} except if +{\tt itylcm}=4 or {\tt itylcm}=6 where {\tt jlong}={\tt 2*ilong}. + +\begin{verbatim} + +lcmppd_c(iplist,namp,ilong,itylcm,iofset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block. \\ +\hline +{\tt ilong} & {\it int\_32} & length of the block. \\ +\hline +{\tt itylcm} & {\it int\_32} & type of information. =1 32-bit integer; + =2 32-bit real; =3 4-character data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined. \\ +\hline +{\tt iofset} & {\it int\_32*} & address of the data array of length {\tt jlong}, as returned by {\tt setara\_c}. {\tt jlong}={\tt 2*ilong} + if {\tt itylcm}=4 or {\tt itylcm}=6; {\tt jlong}={\tt ilong} otherwise. + Data elements {\tt iofset[0]} to {\tt iofset[jlong-1]} + must be initialized before the call to {\tt lcmppd\_c}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +The information block of address {\tt iofset} will automatically be deallocated using function {\tt rlsara\_c} +at closing time of the LCM object. Situations exist where this block is shared with data structures other +than LCM, and where the block must {\sl not} be deallocated by the {\sc lcm} API. In this case, it is imperative +to follow the call to {\tt lcmppd\_c} by a call to function {\tt refpush} of the form: + +\begin{verbatim} +refpush(iplist,iofset); +\end{verbatim} + +\subsubsection{lcmdel\_c\index{lcmdel\_c}} + +Function used to erase an information block or a daughter heterogeneous list stored in a memory-resident associative table. +Function {\tt lcmdel\_c} {\sl cannot} be used with persistent LCM objects. + +\begin{verbatim} + +lcmdel_c(iplist,namp); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block to erase. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmgdl\_c\index{lcmgdl\_c}} + +Function used to recover an information block (array of elementary type) from an heterogeneous list and to copy +this data into memory. + +\begin{verbatim} + +lcmgdl_c(iplist,iset,data); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the block in the heterogeneous list. A call to {\tt xabort\_c} + is performed if the block does't exist. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt data} & {\it int\_32*} & array of dimension $\ge$ {\tt ilong} in which the block is copied. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Function {\tt lcmgdl\_c} can be used to recover character-string information available in a block +of the LCM object. It is also possible to use subroutine {\tt lcmgcl\_c} presented in \Sect{lcmgclc}. In the following example, a block is stored in an the heterogeneous list located at +address {\tt iplist}. The block is located at the {\tt iset}--th position of the heterogeneous list and has a length equivalent to 5 32-bit words. +The information is recovered into the integer array {\tt idata} and transformed into a null-terminated +character string {\tt hname} using the {\tt strcut\_c} utility: + +\begin{verbatim} +#include "lcm.h" + ... + char *namp="...", hname[21]; + int_32 iset,idata[5]; + lcm *iplist; + iplist=... ; + iset=...; + lcmgdl_c(&iplist,iset,idata); + strcut_c(hname,(char *)idata,20); +\end{verbatim} + +\subsubsection{lcmpdl\_c\index{lcmpdl\_c}} + +Function used to store a block of data (array of elementary type) into an heterogeneous list. +The information is copied from memory towards the LCM object. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +lcmpdl_c(iplist,iset,ilong,itylcm,data); +\end{verbatim} + +\vskip 0.2cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the block in the list. +The first element of the list is located at index $0$. \\ +\hline +{\tt ilong} & {\it int\_32} & length of the block. \\ +\hline +{\tt itylcm} & {\it int\_32} & type of information. =1 32-bit integer; + =2 32-bit real; =3 4-character data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined. \\ +\hline +{\tt data} & {\it int\_32*} & array of dimension $\ge$ {\tt ilong} to be copied into the LCM object. {\tt jlong}={\tt 2*ilong} + if {\tt itylcm}=4 or {\tt itylcm}=6; {\tt jlong}={\tt ilong} otherwise. + Array elements {\tt data[0]} to {\tt data[jlong-1]} + must be initialized before the call to {\tt lcmpdl\_c}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Function {\tt lcmpdl\_c} can be used to store character-string information into an heterogeneous list of a LCM object. In the +following example, a character string {\tt hname} is first transformed into an integer array {\tt idata} +using the {\tt strfil\_c} utility. This array (block of data) is stored into the LCM object located at +address {\tt iplist}, using {\tt lcmpdl\_c} . The block is located at the {\tt iset}--th position of the heterogeneous list, has a length equivalent to 5 32-bit words, and a type +equal to 3. + +\begin{verbatim} +#include "lcm.h" + ... + char *namp="...", hname[20]; + int_32 iset,idata[5],it=3,il=5; + lcm *iplist; + iplist=... ; + iset=...; + strfil_c((char *)idata,hname,20); + lcmpdl_c(&iplist,iset,il,it,idata); +\end{verbatim} + +\subsubsection{lcmgpl\_c\index{lcmgpl\_c}} + +Function used to recover the memory address of an information block (array of elementary type) from an heterogeneous list, +{\sl without} making a copy of the information. Use of this function must respect the following rules: +\begin{itemize} +\item If the information is modified after the call to {\tt lcmgpl\_c}, a call to {\tt lcmppl\_c} +must be performed to acknowledge the modification. +\item The block {\tt *iofset} should never be released using a deallocation function such as +{\tt rlsara\_c}, {\tt free}, etc. +\item The address {\tt iofset} must never be copied into another variable. +\end{itemize} +Non respect of these rules may cause execution failure (core dump, +segmentation fault, etc) without possibility to throw an exception. + +\vskip 0.2cm + +A call to {\tt lcmgpl\_c} doesn't cause any modification to the LCM object. +The data array information is accessed directly from memory locations {\tt *iofset[0]} to {\tt *iofset[ilong-1]} +where {\tt iofset} is the address returned by function {\tt lcmgpl\_c}. + +\begin{verbatim} + +lcmgpl_c(iplist,iset,iofset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the block in the list. +A call to {\tt xabort\_c} is performed if the block does't exist. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iofset} & {\it int\_32**} & address of the data array, as returned by {\tt setara\_c}. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmppl\_c\index{lcmppl\_c}} + +Function used to store a block of data (array of elementary type) into an heterogeneous list +{\sl without} making a copy of the information. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +{\sl If the {\tt iset}-th component of the heterogeneous list already exists, the address associated +with this component is replaced by the new address and the information pointed by the old address +is deallocated.} + +\vskip 0.2cm + +The array containing information stored by {\tt lcmppl\_c} {\sl must be} originally +allocated by a call of the form +{\tt iofset = setara\_c(jlong)} or {\tt iofset = (int\_32*)malloc(jlong*sizeof(int\_32))} +where {\tt jlong} is generally equal to {\tt ilong} except if +{\tt itylcm}=4 or {\tt itylcm}=6 where {\tt jlong}={\tt 2*ilong}. + +\begin{verbatim} + +lcmppl_c(iplist,iset,ilong,itylcm,iofset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the block in the list. +The first element of the list is located at index $0$. \\ +\hline +{\tt ilong} & {\it int\_32} & length of the block. \\ +\hline +{\tt itylcm} & {\it int\_32} & type of information. =1 32-bit integer; + =2 32-bit real; =3 4-character data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; + =99 undefined. \\ +\hline +{\tt iofset} & {\it int\_32*} & address of the data array, as returned by {\tt setara\_c}. {\tt jlong}={\tt 2*ilong} + if {\tt itylcm}=4 or {\tt itylcm}=6; {\tt jlong}={\tt ilong} otherwise. + Data elements {\tt iofset[0]} to {\tt iofset[jlong-1]} + must be initialized before the call to {\tt lcmppl\_c}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +The information block of address {\tt iofset} will automatically be deallocated using function {\tt rlsara\_c} +at closing time of the LCM object. Situations exist where this block is shared with data structures other +than LCM, and where the block must {\sl not} be deallocated by the {\sc lcm} API. In this case, it is imperative +to follow the call to {\tt lcmppl\_c} by a call to function {\tt refpush} of the form: + +\begin{verbatim} +refpush(iplist,iofset); +\end{verbatim} + +\vskip 0.8cm + +\subsection{Management of the associative tables and of the heterogeneous lists} + +These functions permit to create ({\tt lcmsix\_c}, {\tt lcmdid\_c}, {\tt lcmdil\_c}, +{\tt lcmlid\_c}, {\tt lcmlil\_c}) or to access ({\tt lcmsix\_c}, {\tt lcmgid\_c}, {\tt lcmgil\_c}) +daughter associative tables or daughter heterogeneous lists. Use of these functions is summarized in the following table: + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{daughter} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & associative table & heterogeneous list \\ +\hline +father & associative table & {\tt lcmdid\_c} & {\tt lcmlid\_c} \\ + & & {\tt lcmgid\_c} & {\tt lcmgid\_c} \\ +\cline{2-4} + &heterogeneous list & {\tt lcmdil\_c} & {\tt lcmlil\_c} \\ + & & {\tt lcmgil\_c} & {\tt lcmgil\_c} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{lcmdid\_c\index{lcmdid\_c}} + +Function used to create or access a daughter associative table included into a father associative table. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +The daughter associative table is created if it doesn't already exist. Otherwise, the +existing daughter associative table is accessed. In the latter case, it is recommended +to use function {\tt lcmgid\_c} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +lcmdid_c(iplist,namp); +\end{verbatim} + +\vskip 0.5cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the daughter associative table. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter associative table. \\ +\hline +\end{tabular} + +\subsubsection{lcmlid\_c\index{lcmlid\_c}} + +Function used to create or access a daughter heterogeneous list included into a father associative table. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +In the following example, a daughter heterogeneous list is created as a block {\tt LIST} +into a father associative table. The heterogeneous list contains 5~components. A block of data +is stored in each component of the heterogeneous list using {\tt lcmppl\_c}: + +\begin{verbatim} +#include "lcm.h" + ... + lcm *iplist,*jplist; + int_32 n=5, i ; + ... + jplist=lcmlid_c(&iplist,"LIST",n); + for(i=0;i<5;i++) { + lcmppl_c(&jplist,i,... + } +\end{verbatim} + +\vskip 0.2cm + +The heterogeneous list capability is implemented through calls to function {\tt lcmlid\_c}. Such a +call permit the following possibilities: +\begin{itemize} +\item the heterogeneous list is created if it doesn't already exist. +\item the heterogeneous list is accessed if it already exists {\sl and} if its length is unchanged. In this case, +it is recommended to use function {\tt lcmgid\_c} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. +\item the heterogeneous list is enlarged (components are added) if it already exists {\sl and} if the new length is larger than the preceding one. +\end{itemize} + +\begin{verbatim} + +lcmlid_c(iplist,namp,ilong); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the daughter heterogeneous list. \\ +\hline +{\tt ilong} & {\it int\_32} & number of components in the daughter heterogeneous list.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter heterogeneous list named {\tt namp}. \\ +\hline +\end{tabular} + +\subsubsection{lcmlil\_c\index{lcmlil\_c}} + +Function used to create or access a daughter heterogeneous list included into a father heterogeneous list. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +In the following example, a daughter heterogeneous list is created as {\tt 77}-th component +of a father heterogeneous list. The heterogeneous list contains 5~components. A block of data +is stored in each component of the heterogeneous list using {\tt lcmppl\_c}: + +\begin{verbatim} +#include "lcm.h" + ... + lcm *iplist,*jplist; + int_32 n=5, i, iset=77 ; + ... + jplist=lcmlil_c(&iplist,iset,n); + for(i=0;i<5;i++) { + lcmppl_c(&jplist,i,... + } +\end{verbatim} + +\vskip 0.2cm + +The heterogeneous list capability is implemented through calls to function {\tt lcmlil\_c}. Such a +call permit the following possibilities: +\begin{itemize} +\item the heterogeneous list is created if it doesn't already exist. +\item the heterogeneous list is accessed if it already exists {\sl and} if its length is unchanged. In this case, +it is recommended to use function {\tt lcmgil\_c} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. +\item the heterogeneous list is enlarged (components are added) if it already exists {\sl and} if the new length is larger than the preceding one. +\end{itemize} + +\begin{verbatim} + +lcmlil_c(iplist,iset,ilong); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the daughter heterogeneous list in the father heterogeneous list. +The first element of the list is located at index $0$. \\ +\hline +{\tt ilong} & {\it int\_32} & number of components in the daughter heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter heterogeneous list. \\ +\hline +\end{tabular} + +\subsubsection{lcmdil\_c\index{lcmdil\_c}} + +Function used to create or access a daughter associative table included into a father heterogeneous list. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +The daughter associative table is created if it doesn't already exist. Otherwise, the +existing daughter associative table is accessed. In the latter case, it is recommended +to use function {\tt lcmgil\_c} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +It is a good programming practice to replace a set of $N$ distinct associative tables by a +list made of $N$ associative tables, as depicted in \Fig{f1}. + +\vskip 0.2cm + +In the example of \Fig{f1}, a set of 5~associative tables, created by {\tt lcmdid\_c}: +\begin{verbatim} +#include "lcm.h" + ... + char HDIR[13] + lcm*iplist,*kplist ; + int_32 i; + HDIR[12] = '\0'; + for(i=0;i<5;i++) { + (void)sprintf(HDIR,"GROUP%3d/ 5",i+1); + kplist=lcmsix_c(&iplist,HDIR); + lcmppd_c(&kplist,...); + ... + } +\end{verbatim} + +\noindent are replaced by a list of 5~associative tables, created by {\tt lcmlid\_c} and {\tt lcmdil\_c}: + +\begin{verbatim} +#include "lcm.h" + ... + lcm *iplist,*jplist,*kplist; + int_32 n=5 ; + jplist=lcmlid_c(&iplist,'GROUP',n); + for(i=0;i<5;i++) { + kplist=lcmdil_c(&jplist,i); + lcmppd_c(&kplist,...); + } +\end{verbatim} + +\vskip 0.2cm + +\begin{figure}[htbp] +\begin{center} +\epsfxsize=9cm +\centerline{ \epsffile{vect.eps}} +\parbox{12cm}{\caption{A list of associative tables.}\label{fig:f1}} +\end{center} +\end{figure} + +\vskip 0.2cm + +The capability to include associative tables into an heterogeneous list is implemented using +the {\tt lcmdil\_c} function: + +\begin{verbatim} + +lcmdil_c(iplist,iset); +\end{verbatim} + +\vskip 0.5cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the daughter associative table in the father heterogeneous list. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter associative table. \\ +\hline +\end{tabular} + +\subsubsection{lcmgid\_c\index{lcmgid\_c}} + +Function used to access a daughter associative table {\sl or} heterogeneous list included into a father associative table. + +\begin{verbatim} + +lcmgid_c(iplist,namp); +\end{verbatim} + +\vskip 0.5cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the daughter associative table or heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter associative table or heterogeneous list. A call to {\tt xabort\_c} is performed if this daughter doesn't extst. \\ +\hline +\end{tabular} + +\subsubsection{lcmgil\_c\index{lcmgil\_c}} + +Function used to access a daughter associative table {\sl or} heterogeneous list included into a father heterogeneous list. + +\begin{verbatim} + +lcmgil_c(iplist,iset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the daughter associative table or heterogeneous list in the father heterogeneous list. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter associative table or heterogeneous list. A call to {\tt xabort\_c} is performed if this daughter doesn't extst. \\ +\hline +\end{tabular} + +\subsubsection{lcmsix\_c\index{lcmsix\_c}} + +Function used to move across the hierarchical structure of a LCM object made of +associative tables. Using this function, there is no need to remember the names of +the father (grand-father, etc.) associative tables. If a daughter associative table doesn't +exist and if the LCM object is open on creation or modification mode, the daughter +associative table is created. A daughter associative table cannot be created if the +LCM object is open in {\tt read-only} mode. + +\vskip 0.4cm + +Function {\tt lcmsix\_c} is deprecated, as {\tt lcmdid\_c} offers a more elegant way to perform the same operation. +However, {\tt lcmsix\_c} is kept available in the {\sc lcm} API for historical reasons. + +\begin{verbatim} + +lcmsix_c(iplist,namp,iact); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table before the call to {\tt lcmsix\_c}. \\ +\hline +{\tt namp} & {\it char**} & name of the daughter associative table if {\tt iact=1}. + This parameter is not used if {\tt iact=0} or {\tt iact=2}. \\ +\hline +{\tt iact} & {\it int\_32} & type of move: =0 return towards the root directory of the LCM object; + =1 move towards the daughter associative table (create it if it doesn't exist); + =2 return towards the father associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iplist} & lcm** & address of the associative table after the call to {\tt lcmsix\_c}. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vspace{0.8cm} + +\subsection{LCM utility functions} + +\subsubsection{lcmlib\_c\index{lcmlib\_c}} + +Function used to print (towards {\tt stdout}) the content of the active directory of an associative table or heterogeneous list. + +\begin{verbatim} + +lcmlib_c(iplist); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table or of the heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmequ\_c\index{lcmequ\_c}} + +Function used to perform a deep-copy of the information contained in an associative table (address {\tt iplis1}) +towards another associative table (address {\tt iplis2}). Note that the second associative table (address {\tt iplis2}) is modified +but not created by {\tt lcmequ\_c}. + +\begin{verbatim} + +lcmequ_c(iplis1,iplis2); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt iplis1} & {\it lcm**} & address of the existing associative table or of the heterogeneous list + (accessed in {\tt read-only} mode). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iplis2} & {\it lcm**} & address of the associative table or of the heterogeneous list, modified by {\tt lcmequ\_c}. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmexp\_c\index{lcmexp\_c}} + +Function used to export (or import) the content of an associative table towards (or from) a sequential file. The sequential file +can be in binary or {\tt ascii} format. + +\vskip 0.4cm + +The export of information starts from the active directoty. Note that {lcmexp\_c} is basically a serialization algorithm +based on the contour algorithm. + +\begin{verbatim} + +lcmexp_c(iplist,impx,file,imode,idir); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table or of the heterogeneous list to be exported (or imported). \\ +\hline +{\tt impx} & {\it int\_32} & print parameter (equal to 0 for no print). \\ +\hline +{\tt file} & {\it FILE*} & sequential file. \\ +\hline +{\tt imode} & {\it int\_32} & =1 binary sequential file; + =2 {\sc ascii} sequential file. \\ +\hline +{\tt idir} & {\it int\_32} & =1 to export; =2 to import. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Using variable-length string arrays} + +The following functions are implemented using the C~functions of the preceding sections. They +permit the use of variable-length string arrays, a capability not yet available with the Fortran +{\sc lcm} API. + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of operation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & put~~~~~~~~~~~~~ & get~~~~~~~~~~~~~ \\ +\hline +father & associative table & {\tt lcmpcd\_c} & {\tt lcmgcd\_c} \\ +\cline{2-4} + & heterogeneous list & {\tt lcmpcl\_c} & {\tt lcmgcl\_c} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{lcmgcd\_c\index{lcmgcd\_c}}\label{sect:lcmgcdc} + +Function used to recover a variable-length string array from a block of data stored in an associative table. + +\begin{verbatim} + +lcmgcd_c(iplist,namp,hdata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the variable-length string array +to recover. A call to {\tt xabort\_c} is performed if the block does't exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt hdata} & {\it char**} & variable-length string array of dimension $\ge$ {\tt ilong}. The memory space required to represent the string array is allocated by {\tt lcmgcd\_c}.\\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmpcd\_c\index{lcmpcd\_c}}\label{sect:lcmpcdc} + +Function used to store a variable-length string array into a block of data stored in an associative table. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +lcmpcd_c(iplist,namp,ilong,hdata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} &name of the variable-length string array +to store. \\ +\hline +{\tt ilong} & {\it int\_32} & number of components in the variable-length string array.\\ +\hline +{\tt hdata} & {\it char**} & array of dimension $\ge$ {\tt ilong} to be copied in the LCM object. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} +#include "lcm.h" + ... + lcm *iplist; + int_32 i, ilong = 5; + char *hdata1[ilong],*hdata2[ilong]; + + hdata1[0] = "string1"; + hdata1[1] = " string2"; + hdata1[2] = " string3"; + hdata1[3] = " string4"; + hdata1[4] = " string5"; + for (i=0;i<ilong;i++) { + printf("i=%d string='%s' size=%d\n",i,hdata1[i],strlen(hdata1[i])); + } + + lcmop_c(&iplist,"mon_dict",0,1,2); + + /* Store the information */ + lcmpcd_c(&iplist,"node1",ilong,hdata1); + + /* Recover the information */ + lcmgcd_c(&iplist,"node1",hdata2); + + for (i=0;i<ilong;i++) { + printf("in table i=%d string='%s' size=%d\n",i,hdata2[i],strlen(hdata2[i])); + } + for (i=0;i<ilong;i++) free(hdata2[i]); + lcmcl_c(&iplist,2); +\end{verbatim} + +\subsubsection{lcmgcl\_c\index{lcmgcl\_c}}\label{sect:lcmgclc} + +Function used to recover a variable-length string array from a block of data stored in an heterogeneous list. + +\begin{verbatim} + +lcmgcl_c(iplist,namp,hdata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the variable-length string array in the heterogeneous list. A call to {\tt xabort\_c} is performed if the component doesn't exist. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt hdata} & {\it char**} & variable-length string array of dimension $\ge$ {\tt ilong}. The memory space required to represent the string array is allocated by {\tt lcmgcl\_c}.\\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmpcl\_c\index{lcmpcl\_c}}\label{sect:lcmpclc} + +Function used to store a variable-length string array into a block of data stored in an heterogeneous list. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +lcmpcl_c(iplist,iset,ilong,hdata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} &index of the variable-length string array in the heterogeneous list. +The first element of the list is located at index $0$. \\ +\hline +{\tt ilong} & {\it int\_32} & number of components in the variable-length string array .\\ +\hline +{\tt hdata} & {\it char**} & array of dimension $\ge$ {\tt ilong} to be copied in the LCM object. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} +#include "lcm.h" + ... + lcm *iplist, *jplist; + int_32 i, ilong = 5; + char *hdata1[ilong],*hdata2[ilong]; + + hdata1[0] = "string1"; + hdata1[1] = " string2"; + hdata1[2] = " string3"; + hdata1[3] = " string4"; + hdata1[4] = " string5"; + for (i=0;i<ilong;i++) { + printf("i=%d string='%s' size=%d\n",i,hdata1[i],strlen(hdata1[i])); + } + + lcmop_c(&iplist,"mon_dict",0,1,2); + + /* Creation of the heterogeneous list */ + jplist = lcmlid_c(&iplist,"node2",77); + + /* Store the information */ + lcmpcl_c(&jplist,4,ilong,hdata1); + + /* Recover the information */ + lcmgcl_c(&jplist,4,hdata2); + + for (i=0;i<ilong;i++) { + printf("in list i=%d string='%s' size=%d\n",i,hdata2[i],strlen(hdata2[i])); + } + for (i=0;i<ilong;i++) free(hdata2[i]); + + lcmcl_c(&iplist,2); +\end{verbatim} + +\vskip 0.8cm + +\subsection{Dynamic allocation of the elementary blocks of data} + +\subsubsection{setara\_c\index{setara\_c}}\label{sect:setara} + +Function used to allocate a block of data for storing a memory-resident {\tt int\_32} data array. +Function {\tt setara\_c} is a simple wrapper for {\tt malloc} standard library function. +If the operating system fails to allocate the memory, a call to {\tt xabort\_c} is performed. + +\begin{verbatim} + +setara_c(ilong); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt ilong} & {\it int\_32} & length of the block of data to allocate in unit of 32-bit words. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it int\_32*} & address of the allocated block of data. \\ +\hline +\end{tabular} + +\subsubsection{rlsara\_c\index{rlsara\_c}}\label{sect:rlsara} + +Function used to deallocate a memory-resident block of data previously allocated by {\tt setara\_c}. +The implementation of {\tt rlsara\_c} in ANSI~C is based on the {\tt free} standard library function. If the operating system fails to deallocate +the memory, a call to {\tt xabort\_c} is performed. + +\begin{verbatim} + +rlsara_c(iofset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt iofset} & {\it int\_32*} & address of the block of data to deallocate. This value {\sl must} have been allocated by a previous call to {\tt setara\_c}. \\ +\hline +\end{tabular} +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Abnormal termination of the execution} + +\subsubsection{xabort\_c} + +Function used to cause the program termination. A message describing the conditions of the +termination is printed. + +\vskip 0.2cm + +It is important to use this function to abort a program instead of using the {\tt exit()} +function of the standard library. The {\tt xabort\_c} function can be used to implement {\sl exception +treatment} in situations where the application software is driven by a multi-physics system. + +\vskip 0.2cm + +If an abnormal termination occurs, the {\tt xabort\_c} function is called as +\begin{verbatim} + xabort_c("sub001: execution failure."); +\end{verbatim} + +\begin{verbatim} + +xabort_c(hsmg); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt hsmg} & {\it char*} & message describing the conditions of the abnormal termination. \\ +\hline +\end{tabular} +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\clearpage + +\section {The ANSI C {\sc hdf5} API}\label{sect:hdf5apiC} + +HDF5 is a hierarchical filesystem data format. HDF5 is self-describing, allowing an application to interpret the structure and contents +of a file with no outside information. A HDF5 file created on a little endian CPU can be read on a big endian CPU, and vice versa. +Similarly, real(4) datasets can be recovered in real(8) arrays, and vice versa. HDF5 includes two major types of object: +\begin{itemize} +\item Datasets, which are multidimensional arrays of a homogeneous type +\item Groups, which are container structures which can hold datasets and other groups. +\end{itemize} +The Ganlib5 implementation of HDF5 relies on the official ANSI C API provided by the HDF Group, a non-profit corporation whose mission +is to ensure continued development of HDF5 technologies and the continued accessibility of data stored in HDF.\opcite{hdf5} The Ganlib5 kernel +reimplements simplified ANSI C and Fortran bindings of the legacy HDF5 API to facilitate its use. The compilation and link edition of the +new bindings require the definition of a UNIX environment variables {\tt HDF5\_INC} and {\tt HDF5\_API} pointing towards directories containing +the official HDF5 {\tt include} and C API sub-directories compatible with your operating system. + +\begin{itemize} +\item On a OSX operating system, these variables may be set as +\begin{verbatim} +export HDF5_INC="/usr/local/Cellar/hdf5/1.12.1/include" # HDF5 include directory +export HDF5_API="$HDF5_INC/../lib" # HDF5 C API +\end{verbatim} +\item On a Linux RedHat operating system, these variables may be set as +\begin{verbatim} +export HDF5_INC="/usr/local/hdf5/include" # HDF5 include directory +export HDF5_API="$HDF5_INC/../lib" # HDF5 C API +\end{verbatim} +\item On a Linux Scibian operating system, these variables may be set as +\begin{verbatim} +export HDF5_INC="/usr/include/hdf5/serial" # HDF5 include directory +export HDF5_API="/usr/lib/x86\_64-linux-gnu/hdf5/serial" # HDF5 C API +\end{verbatim} +\item On a Unix AIX operating system, these variables may be set as +\begin{verbatim} +export HDF5_INC="/usr/include" # HDF5 include directory +export HDF5_API="$HDF5_INC/../lib" # HDF5 C API +\end{verbatim} +\end{itemize} +On Linux and AIX systems, the environment variable {\tt LD\_LIBRARY\_PATH} must also be set: +\begin{verbatim} +export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HDF5_API" +\end{verbatim} + +Any ANSI C program using the Ganlib5 HDF5 API implementation should use the following include: +\begin{verbatim} +#include "hdf5_aux.h" +\end{verbatim} + +\vskip 0.8cm + +\subsection{Opening and closing of HDF5 files} + +\subsubsection{hdf5\_open\_file\_c} + +Open a HDF5 file. Obtain the address of the HDF5 file if it is created. Note that CLE-2000 is responsible to perform the calls to +{\tt hdf5\_open\_file\_c} for the HDF5 files that are used as parameters of a CLE-2000 module. The use +of {\tt hdf5\_open\_file\_c} is generally restricted to the use of temporary HDF5 files created within a CLE-2000 module. + +\begin{verbatim} + +hdf5_open_file_c(fname, ifile, irdonly); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt fname} & {\it char[1024]} & name of the HDF5 file. \\ +\hline +{\tt irdonly} & {\it int\_32} & =0 to create a new HDF5 file or to to modify an existing HDF5 file. A file is not created if it does not already exist. + =1 to access an existing HDF5 file in {\bf read-only} mode. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_close\_file\_c} + +Close a HDF5 file. Note that CLE-2000 is responsible to perform the calls to +{\tt hdf5\_close\_file\_c} for the HDF5 files that are used as parameters of a CLE-2000 module. The use +of {\tt hdf5\_close\_file\_c} is generally restricted to the use of temporary HDF5 files created within a CLE-2000 module. + +\begin{verbatim} + +hdf5_close_file_c(ifile); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Interrogation of HDF5 files} + +The data structures in a HDF5 file are self-described. It is therefore possible to interrogate them in order to know their characteristics. + +\subsubsection{hdf5\_list\_c} + +List the root table of contents of a group on the standard output. The name of a group can include one or many path separators (character~$\slash$) +to list different hierarchical levels. + +\begin{verbatim} + +hdf5_list_c(ifile, namp); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a group. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_get\_dimensions\_c} + +Find the rank (number of dimensions) of a dataset. + +\begin{verbatim} + +hdf5_get_dimensions_c(ifile, namp, rank); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt rank} & {\it int\_32*} & rank of the dataset. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_get\_num\_group\_c} + +Find the number of objects (daughter datasets {\sl and} daughter groups) in a group. + +\begin{verbatim} + +hdf5_get_num_group_c(ifile, namp, nbobj); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a group. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt nbobj} & {\it int\_32*} & number of objects in group {\tt namp}. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_list\_datasets\_c} + +Recover character daughter dataset names in a group. + +\begin{verbatim} + +hdf5_list_datasets_c(file, namp, ndsets, idata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a group. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt nbobj} & {\it int\_32*} & number of daughter datasets in group {\tt namp}. \\ +\hline +{\tt idata} & {\it char*} & list of character names of each daughter dataset. Each name is null terminated. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_list\_groups\_c} + +Recover character daughter groups names in a group. + +\begin{verbatim} + +hdf5_list_groups_c(file, namp, ndsets, idata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a group. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt nbobj} & {\it int\_32*} & number of daughter groups in group {\tt namp}. \\ +\hline +{\tt idata} & {\it char*} & list of character names of each daughter group. Each name is null terminated. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_info\_c} + +Find dataset information. + +\begin{verbatim} + +hdf5_info_c(ifile, namp, rank, type, nbyte, dimsr); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt rank} & {\it int\_32*} & rank (number of dimensions) of dataset. \\ +\hline +{\tt type} & {\it int\_32*} & type of dataset: =1 32-bit integer; + =2 32-bit real; =3 character data; + =4 64-bit real. \\ +\hline +{\tt nbyte} & {\it int\_32*} & number of bytes in each component of the dataset. \\ +\hline +{\tt dimsr} & {\it int\_32*} & integer array containing the dimension of dataset. {\tt rank} values are provided. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_group\_exists\_c} + +Test for existence of a group. + +\begin{verbatim} + +ierr = hdf5_group_exists_c(ifile, namp); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a group. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt ierr} & {\it int\_32*} & existence flag: =1/0 the group does/does not exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Management of groups and datatypes} + +\subsubsection{hdf5\_create\_group\_c} + +Create a group. + +\begin{verbatim} + +hdf5_create_group_c(ifile, namp); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of the group to create. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{hdf5\_delete\_c} + +Delete a group or a dataset. + +\begin{verbatim} + +hdf5_delete_c(ifile, namp); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of the group or dataset to delete. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{hdf5\_copy\_c} + +Copy a group or a dataset from one location to another. The source and destination need not be in the same file. + +\begin{verbatim} + +hdf5_copy_c(ifile_s, namp_s, ifile_d, namp_d); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile\_s} & {\it hid\_t*} & HDF5 source file identifier. \\ +\hline +{\tt namp\_s} & {\it char[1024]} & name of the source group or dataset to copy. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ifile\_d} & {\it hid\_t*} & HDF5 destination file identifier. \\ +\hline +{\tt namp\_d} & {\it char[1024]} & name of the destination group or dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{hdf5\_read\_data\_int\_c} + +Copy an integer dataset from HDF5 file into memory. + +\begin{verbatim} + +hdf5_read_data_int_c(ifile, namp, idata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt idata} & {\it int\_32*} & integer array. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_read\_data\_real4\_c} + +Copy a real(4) dataset from HDF5 file into memory. + +\begin{verbatim} + +hdf5_read_data_real4_c(ifile, namp, rdata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt rdata} & {\it float*} & real(4) array. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_read\_data\_real8\_c} + +Copy a real(8) dataset from HDF5 file into memory. + +\begin{verbatim} + +hdf5_read_data_real8_c(ifile, namp, rdata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt rdata} & {\it double*} & real(8) array. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_read\_data\_string\_c} + +Copy a character dataset from HDF5 file into memory. + +\begin{verbatim} + +hdf5_read_data_string_c(ifile, namp, idata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt idata} & {\it char*} & character array. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_write\_data\_int\_c} + +Copy an integer array from memory into a HDF5 dataset. If dataset {\tt namp} exists, it is replaced. + +\begin{verbatim} + +hdf5_write_data_int_c(ifile, namp, rank, dimsr, idata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a dataset. \\ +\hline +{\tt rank} & {\it int\_32*} & rank (number of dimensions) of dataset. \\ +\hline +{\tt dimsr} & {\it int\_32*} & integer array containing the dimension of dataset. {\tt rank} values are provided. \\ +\hline +{\tt idata} & {\it int\_32*} & integer array. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_write\_data\_real4\_c} + +Copy a real(4) array from memory into a HDF5 dataset. If dataset {\tt namp} exists, it is replaced. + +\begin{verbatim} + +hdf5_write_data_real4_c(ifile, namp, rank, dimsr, rdata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a dataset. \\ +\hline +{\tt rank} & {\it int\_32*} & rank (number of dimensions) of dataset. \\ +\hline +{\tt dimsr} & {\it int\_32*} & integer array containing the dimension of dataset. {\tt rank} values are provided. \\ +\hline +{\tt rdata} & {\it float*} & real(4) array. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_write\_data\_real8\_c} + +Copy a real(8) array from memory into a HDF5 dataset. If dataset {\tt namp} exists, it is replaced. + +\begin{verbatim} + +hdf5_write_data_real8_c(ifile, namp, rank, dimsr, rdata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a dataset. \\ +\hline +{\tt rank} & {\it int\_32*} & rank (number of dimensions) of dataset. \\ +\hline +{\tt dimsr} & {\it int\_32*} & integer array containing the dimension of dataset. {\tt rank} values are provided. \\ +\hline +{\tt rdata} & {\it double*} & real(8) array. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_write\_data\_string\_c} + +Copy an character array from memory into a HDF5 dataset. If dataset {\tt namp} exists, it is replaced. + +\begin{verbatim} + +hdf5_write_data_string_c(ifile, namp, rank, dimsr, idata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it hid\_t*} & HDF5 file identifier. \\ +\hline +{\tt namp} & {\it char[1024]} & name of a dataset. \\ +\hline +{\tt rank} & {\it int\_32*} & rank (number of dimensions) of dataset. \\ +\hline +{\tt len} & {\it int\_32*} & length of a string element in the array (in bytes). \\ +\hline +{\tt dimsr} & {\it int\_32*} & integer array containing the dimension of dataset. {\tt rank} values are provided. \\ +\hline +{\tt idata} & {\it char*} & character array. \\ +\hline +\end{tabular} + +\clearpage + +\section {The ANSI C CLE-2000 API}\label{sect:cle2000apiC} + +\subsection {The main entry point for CLE-2000} + +The CLE-2000 supervisor have been entirely reprogrammed in ANSI~C in its GANLIB Version 5 implementation. Its main entry +point is function {\tt cle2000\_c()} that can be used to execute a {\sl CLE-2000 source file} which can be a {\sl main procedure} +(a sequential {\sc ascii} file with {\tt .x2m} suffix) or a {\sl parametrized procedure} (a sequential {\sc ascii} file with {\tt .c2m} suffix). +Parametrized procedures can be called by function {\tt cle2000\_c()} or by other CLE-2000 procedures. Function {\tt cle2000\_c()} is therefore +recursive. A computational scheme is a set of parametrized procedures. + +\subsubsection{cle2000\_c\index{cle2000\_c}} + +The general specification of function {\tt cle2000\_c()} is + +\begin{verbatim} + +cle2000_c(ilevel, dummod, filenm, iprint, my_param); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ilevel} & {\it int\_32} & recursivity level of {\tt cle2000\_c()} call. We recommend to call +{\tt cle2000\_c()} from the main entry point with {\tt ilevel = 1}. \\ +\hline +{\tt dummod} & {\it int\_32 (*)()} & external ANSI~C function (or C-interoperable Fortran-2003 function) responsible for dispatching the execution among calculation modules. Note that the calculation modules can be implemented in any language that is interoperable with ANSI~C. \\ +\hline +{\tt filenm} & {\it char*} & name of sequential {\sc ascii} file containing the CLE-2000 source file, without the {\tt .c2m} suffix. Can be set to {\tt " "} (corresponding to {\tt stdin} in ANSI~C, or unit~5 in Fortran). The name is null terminated. \\ +\hline +{\tt iprint} & {\it int\_32} & print parameter (set to zero for no print). \\ +\hline +{\tt my\_param} & {\it lifo*} & last-in-first-out (lifo) stack containing LCM (or XSM) objects, files and/or CLE-2000 variables that are exchanged with the CLE-2000 procedure. Set {\tt my\_param = NULL} if no information is exchanged. The specification of {\tt my\_param} is detailed in Sect.~\ref{sect:lifo}. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it int\_32} & error code equal to zero if the execution of the CLE-2000 source file is successful. Equal to the error code otherwise. \\ +\hline +\end{tabular} + +\subsubsection{dummod\index{dummod}} + +Function {\tt dummod()} is an external ANSI~C function (or C-interoperable Fortran-2003 function) responsible for dispatching the execution among calculation modules. +A specific version, named {\tt ganmod()}, is used to dispatch the execution among the modules of the GANLIB. Its specifications are: +\begin{verbatim} + +dummod(cmodul, nentry, hentry, ientry, jentry, kentry, hparam); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt cmodul} & {\it char*} & name of the calculation module to execute \\ +\hline +{\tt nentry} & {\it int\_32} & number of parameters (LCM objects or files) for this call \\ +\hline +{\tt hentry} & {\it char (*)[13]} & names of the parameters as known in the CLE-2000 procedure\\ +\hline +{\tt ientry} & {\it int\_32*} & types of the parameters. $=1$: memory-resident LCM object; $=2$: persistent LCM object (stored in a XSM file); +$=3$: sequential binary file; +$=4$: sequential ascii file; +$=5$: direct access file; +$=6$: HDF5 file. \\ +\hline +{\tt jentry} & {\it int\_32*} & access mode of the parameters. $=0$: the object is created; $=1$: the object is opened for modifications ; $=2$: the object is opened in read-only mode. \\ +\hline +{\tt kentry} & {\it lcm**} & equal to the address of the LCM object corresponding to a parameter or set to {\tt NULL} if the parameter is a file \\ +\hline +{\tt hparam} & {\it char (*)[73]} &names of the parameters as known by the operating system \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it int\_32} & error code equal to zero if the execution of {\tt dummod()} is successful. Equal to the error code otherwise. \\ +\hline +\end{tabular} + +\subsubsection {Calling a main CLE-2000 procedure} + +The simplest situation occurs when a main CLE-2000 procedure is called. This situation corresponds to the case where an application +software is run in stand-alone mode. In this case, it is sufficient to write a main program calling a main CLE-2000 procedure. The main +program can be written in ANSI~C (as in the following example) or as a C-interoperable Fortran-2003 program. A main CLE-2000 procedure +has no in-out CLE-2000 variables and no in-out parameters. + +\vskip 0.08cm + +In the following example, an application software contains three modules, named {\tt MOD1:}, {\tt MOD2} and {\tt MOD3}, respectively. +A main program is simply written as + +\begin{verbatim} +#include <string.h> +#include "cle2000.h" +main() +{ + int_32 iprint = 0; + int_32 ier, ilevel = 1; + int_32 ganmod(); + + ier = cle2000_c(ilevel, &ganmod, " ", iprint, NULL); + printf("end of execution; ier=%d\n", ier); +} +\end{verbatim} + +The {\tt ganmod()} function is another developer-supplied function that is responsible for dispatching the execution among modules +{\tt MOD1:}, {\tt MOD2} or {\tt MOD3}. The {\tt ganmod()} function is responsible for opening any file that can be requested +by these modules. This open/close operation may be different, depending if the modules are programmed in ANSI~C (as in this example) or in another language. +\begin{verbatim} +#include <string.h> +#include <stdio.h> +#include "cle2000.h" +int_32 ganmod(char *cmodul, int_32 nentry, char (*hentry)[13], int_32 *ientry, + int_32 *jentry, lcm **kentry, char (*hparam)[73]) +{ + int_32 iloop1, ier; + FILE *kentry_file[maxent]; + char hsmg[132]; + +/* open files */ + for (iloop1 = 0; iloop1 < nentry; ++iloop1) { + if (ientry[iloop1] >= 3) { + char *mode; + if ((ientry[iloop1] == 3) && (jentry[iloop1] == 0)) { + strcpy(mode, "w"); + } else if ((ientry[iloop1] == 3) && (jentry[iloop1] == 1)) { + strcpy(mode, "a"); + } else if ((ientry[iloop1] == 3) && (jentry[iloop1] == 2)) { + strcpy(mode, "r"); + } else if ((ientry[iloop1] == 4) && (jentry[iloop1] == 0)) { + strcpy(mode, "wb"); + } else if ((ientry[iloop1] == 4) && (jentry[iloop1] == 1)) { + strcpy(mode, "ab"); + } else if ((ientry[iloop1] == 4) && (jentry[iloop1] == 2)) { + strcpy(mode, "rb"); + } else { + sprintf(hsmg, "ganmod: type not supported for file %s", hentry[iloop1]); + xabort_c(hsmg); + } + kentry_file[iloop1] = fopen(hparam[iloop1], mode); + if (kentry_file[iloop1] == NULL) { + sprintf(hsmg, "ganmod: unable to open file %s", hentry[iloop1]); + xabort_c(hsmg); + } + } else { + kentry_file[iloop1] = NULL; + } + } + +/* call modules */ + if(strcmp(cmodul, "MOD1:") == 0) { + mod1(nentry, hentry, ientry, jentry, kentry, kentry_file); + } else if(strcmp(cmodul, "MOD2:") == 0) { + mod2(nentry, hentry, ientry, jentry, kentry, kentry_file); + } else if(strcmp(cmodul, "MOD3:") == 0) { + mod3(nentry, hentry, ientry, jentry, kentry, kentry_file); + } else { + return 1; + } + +/* close files */ + for (iloop1 = 0; iloop1 < nentry; ++iloop1) { + if (ientry[iloop1] >= 3) { + ier = fclose(kentry_file[iloop1]); + if (ier != 0) { + sprintf(hsmg, "ganmod: unable to close file %s", hentry[iloop1]); + xabort_c(hsmg); + } + } + } + return 0; +} +\end{verbatim} + +\subsubsection {Calling a parametrized CLE-2000 procedure} + +In cases where an application software is called from a multi-physics application, it is likely that the multi-physics application +will need to call parametrized CLE-2000 procedures (with ``{\tt .c2m}" suffix). This approach provides an efficient way of communication between +the application software and the multi-physics application. It also permit to develop computational schemes outside the scope (i.e., independently) +of the multi-physics application. Parameters are either LCM objects (memory-resident) or +files that are managed by the operating system. Multi-physics applications are generally programmed +in C++ or in Java. In the latter case, {\sl Java Native Interfaces} (JNIs) are required to allow this communication. + +\vskip 0.08cm + +In the following example, a parametrized procedure, {\tt TESTproc.c2m}, take two object parameters and three CLE-2000 input variables. +Note that the CLE-2000 variables are always defined after LCM and file objects. The first parameter, {\tt MACRO\_ASCII}, is +an {\sc ascii} file written by the procedure and containing an export of the information pointed by the second parameter {\tt MACRO}. This second parameter is a +memory resident LCM object containing a Macrolib. It is accessed in {\tt read-only} mode. The procedure also prints a table-of-content +of the root directory of {\tt MACRO}, using the {\tt UTL:} module of the GANLIB. The procedure {\tt TESTproc.c2m} is implemented as +\begin{verbatim} +REAL KEFF1 KEFF2 ; +INTEGER I123 ; +PARAMETER MACRO_ASCII MACRO :: + EDIT 1 + ::: SEQ_ASCII MACRO_ASCII ; + ::: LINKED_LIST MACRO ; +; +:: >>KEFF1<< >>KEFF2<< >>I123<< ; +MODULE UTL: END: ; +* +UTL: MACRO :: DIR ; +MACRO_ASCII := MACRO ; +ECHO "KEFF1=" KEFF1 ""KEFF2=" KEFF2 "I123=" I123 ; +ECHO "procedure TESTproc completed" ; +END: ; +QUIT "XREF" . +\end{verbatim} + +\noindent More information about the development of CLE-2000 procedures can be found in Ref.~\citen{cle2000}. + +\vskip 0.08cm + +The next ANSI~C function is an example of how a multi-physics application can call such a procedure. A LCM object +containing a Macrolib is first created by importing its information from an existing {\sc ascii} file named {\tt Macrolib}. Next, a call to function +{\tt cle2000\_c()} is performed to execute {\tt TESTproc.c2m}. The corresponding {\tt main} program is written +\goodbreak + +\begin{verbatim} +#include <string.h> +#include <stdlib.h> +#include "cle2000.h" +main() +{ + int_32 iprint = 0; + int_32 ier, ilevel = 1; + FILE *filein; + char cproce[13]; + int_32 ganmod(); + lcm *my_lcm; + lifo *my_lifo; + lifo_node *my_node; + +/* create the LCM object containing a Macrolib */ + filein = fopen("Macrolib", "r"); + lcmop_c(&my_lcm, "MACRO1", 0, 1, iprint); + lcmexp_c(&my_lcm, iprint, filein, 2, 2); + fclose(filein); + lcmlib_c(&my_lcm); + lcmcl_c(&my_lcm, 1); + +/* construct the lifo stack */ + cleopn(&my_lifo); + /* node 1 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "MACRO_ASCII1"); strcpy(my_node->OSname, "my_ascii_file"); + my_node->type = -6; + clepush(&my_lifo, my_node); + /* node 2 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "MACRO1"); strcpy(my_node->OSname, "MACRO1"); my_node->type = 3; + my_node->value.mylcm = my_lcm; + clepush(&my_lifo, my_node); + /* node 3 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "value1"); my_node->type = 12; my_node->value.fval = 1.703945; + clepush(&my_lifo, my_node); + /* node 4 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "value2"); my_node->type = 12; my_node->value.fval = 1.562276; + clepush(&my_lifo, my_node); + /* node 5 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "value3"); my_node->type = 11; my_node->value.ival = 12345; + clepush(&my_lifo, my_node); + +/* call the parametrized procedure */ + strcpy(cproce, "TESTproc"); + ier = cle2000_c(ilevel, &ganmod, cproce, iprint, my_lifo); + if (ier != 0) xabort_c("example2.1.5: cle2000 failure"); + +/* erase the lifo stack */ + while (my_lifo->nup > 0) { + my_node = clepop(&my_lifo); + free(my_node); + } + clecls(&my_lifo); + printf("successful end of execution\n"); +} +\end{verbatim} + +\subsubsection {Calling a CLE-2000 procedure with in-out CLE-2000 variables} + +The CLE-2000 API also offers the possibility to exchange CLE-2000 variables with a procedure. The following CLE-2000 procedure +permits to compute the factorial of a number, as proposed in Ref.~\citen{cle2000}. Here, {\tt n} and {\tt n\_fact} are input and +output CLE-2000 variable, respectively. The {\tt fact.c2m} procedure is written +\begin{verbatim} +! +! Example of a recursive procedure. +! +! input to "fact": *n* +! output from "fact": *n_fact* +! + INTEGER n n_fact prev_fact ; + :: >>n<< ; + IF n 1 = THEN + EVALUATE n_fact := 1 ; + ELSE + EVALUATE n := n 1 - ; + ! Here, "fact" calls itself + PROCEDURE fact ; + fact :: <<n>> >>prev_fact<< ; + EVALUATE n_fact := n 1 + prev_fact * ; + ENDIF ; + :: <<n_fact>> ; + QUIT " Recursive procedure *fact* XREF " . +\end{verbatim} + +This procedure can be called from a program implemented in ANSI~C, using +\begin{verbatim} +#include <string.h> +#include <stdlib.h> +#include "cle2000.h" +main() +{ + int_32 iprint = 0; + int_32 ier, ilevel = 1; + char cproce[13]; + int_32 ganmod(); + lifo *my_lifo; + lifo_node *my_node; + +/* construct the lifo stack */ + cleopn(&my_lifo); + /* node 1 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "input_val"); my_node->type = 11; my_node->value.ival = 5; + clepush(&my_lifo, my_node); + /* node 2 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "output_val"); my_node->type = -11; + clepush(&my_lifo, my_node); + +/* call the procedure with in-out CLE-2000 variables*/ + strcpy(cproce, "fact"); + ier = cle2000_c(ilevel, &ganmod, cproce, iprint, my_lifo); + if (ier != 0) xabort_c("fact: cle2000 failure"); + +/* recover and erase the lifo stack */ + printf("\noutput stack:\n"); + while (my_lifo->nup > 0) { + my_node = clepop(&my_lifo); + printf("node %d (name=%12s) ---> %d\n", my_lifo->nup, my_node->name, + my_node->value.ival); + free(my_node); + } + clecls(&my_lifo); + printf("successful end of execution\n"); +} +\end{verbatim} + +\vskip 0.8cm + +\subsection {Calling a calculation module without a CLE-2000 procedure} + +The GANLIB API also provides the possibility to call directly a calculation module without a CLE-2000 procedure. This +capability is required in the first-generation Jargon framework, as presented in Ref.~\citen{jargon}. The actual implementation +does not support CLE-2000 variables. A calculation module with ``{\tt >>~<<}" variables must therefore be encapsulated in a +CLE-2000 procedure. + +\subsubsection{clemod\_c\index{clemod\_c}} + +The general specification of function {\tt clemod\_c()} is + +\begin{verbatim} + +clemod_c(cmodul, filein, nentry, hentry, ientry, jentry, kentry, hparam, dummod); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt cmodul} & {\it char*} & name of the calculation module to execute \\ +\hline +{\tt filein} & {\it FILE*} & sequential {\sc ascii} file containing the data for module {\tt cmodul} (i.e., the data between the ``{\tt ::}" and the ``{\tt ;}"). Can be set to {\tt stdin} (standard input, or unit~5 in Fortran) \\ +\hline +{\tt nentry} & {\it int\_32} & number of parameters (LCM objects or files) that are exchanged with the CLE-2000 procedure. {\tt nentry = 0} if no parameters are exchanged. \\ +\hline +{\tt hentry} & {\it char (*)[13]} & names of these parameters, as known by the calculation module. Each name is a character string with a maximum of 12 characters. \\ +\hline +{\tt ientry} & {\it int\_32*} & types of each parameter. $=1$: memory-resident LCM object; $=2$: persistent LCM object (stored in a XSM file); +$=3$: sequential binary file; +$=4$: sequential ascii file; +$=5$: direct access file; +$=6$: HDF5 file. +\\ +\hline +{\tt jentry} & {\it int\_32*} & mode of each parameter. $=0$: the object is created; $=1$: the object is opened for modifications ; $=2$: the object is opened in read-only mode. \\ +\hline +{\tt kentry} & {\it lcm**} & addresses of the {\tt lcm} objects (for parameters that are LCM objects). Set to {\tt NULL} for parameters that are files. \\ +\hline +{\tt hparam} & {\it char (*)[73]} & names of these parameters, as known by the operating system. Each name is a character string with a maximum of 72 characters. \\ +\hline +{\tt dummod} & {\it int\_32 (*)()} & external ANSI~C function (or C-interoperable Fortran-2003 function) responsible for dispatching the execution among calculation modules. Note that the calculation modules can be implemented in any language that is interoperable with ANSI~C. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it int\_32} & error code equal to zero if the execution of the calculation module is successful. Equal to the error code otherwise. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +In the following example, function {\tt clemod\_c()} is used to call a calculation module of the GANLIB. A LCM object +containing a Macrolib is first created by importing its information from an existing {\sc ascii} file named {\tt Macrolib}. +Module {\tt UTL:} is called with this {\tt read-only} Macrolib as unique parameter: +\begin{verbatim} +#include <string.h> +#include "cle2000.h" +#define maxent 64 /* maximum number of module arguments */ +main() +{ + int_32 ganmod(); + char hentry[maxent][13], hparam[maxent][73]; + int_32 ier, nentry, ientry[maxent], jentry[maxent]; + lcm * my_lcm, *kentry[maxent]; + FILE *filein; + +/* create the LCM object containing a Macrolib */ + filein = fopen("Macrolib", "r"); + lcmop_c(&my_lcm, "MACRO", 0, 1, 99); + lcmexp_c(&my_lcm, 99, filein, 2, 2); + fclose(filein); + +/* create a file containing the UTL: data */ + filein = fopen("UTLdata", "r"); + +/* construct the parameter */ + nentry = 1 ; + strcpy(hentry[0], "MACRO"); strcpy(hparam[0], "MACRO"); ientry[0]=1; jentry[0]=2; + kentry[0]=my_lcm; + +/* execute the module */ + ier = clemod_c("UTL:", filein, nentry, hentry, ientry, jentry, kentry, hparam, + &ganmod); + lcmcl_c(&my_lcm, 1); + fclose(filein); + printf("end of execution; ier=%d\n", ier); +} +\end{verbatim} + +\vskip 0.08cm + +The ASCII file {\tt UTLdata} contains the data for module {\tt UTL:}. Here, it is defined as +\begin{verbatim} +DIR STEP UP GROUP +STEP AT 1 DIR STEP DOWN +STEP DOWN ; +\end{verbatim} + +\vskip 0.8cm + +\subsection{Management of the last-in-first-out (lifo) stack\index{lifo}}\label{sect:lifo} + +A last-in-first-out (lifo) stack manage the stored data so that the last data stored in the stack is the first data removed from the stack. This means that a POP function retrieves the values most recently stored with a PUSH function. CLE-2000 uses one lifo stack to manage information used within each specific CLE-2000 procedure instance and one lifo stack as dummy parameter list each time a CLE-2000 procedure is called. + +\vskip 0.08cm + +In case where a CLE-2000 procedure is called from a multi-physics environment, the parameter information is first integrated in a lifo stack {\sl before} calling +function {\tt cle2000\_c()}. After execution of the procedure, output parameter information is recovered from the lifo stack. The lifo stack can contain LCM (or XSM) objects, files and/or CLE-2000 variables. The lifo stack is constructed as a linked list of nodes, each node containing a single parameter. Three important rules must be satisfied: +\begin{itemize} +\item LCM (or XSM) objects and files must be defined prior to CLE-2000 variables in the lifo stack used as parameter information. +\item LCM (or XSM) objects and files must be closed when included in the lifo stack. +\item Output nodes are also included in the lifo stack before calling function {\tt cle2000\_c()}, but {\sl with negative} {\tt type} component and {\sl without} {\tt value} component. +\end{itemize} + +\vskip 0.08cm + +The specification of a lifo node is: + +\small +\begin{verbatim} +typedef struct LIFO_NODE { /* node in last-in-first-out (lifo) stack */ + int_32 type; /* type of node: 3= lcm object; 4= xsm file; 5= seq binary; + 6= seq ascii; 7= da binary; 8= hdf5 file; 11= integer value; + 12= real value; 13= character string; 14= double precision value; + 15= logical value */ + int_32 access; /* 0=creation mode/1=modification mode/2=read-only mode */ + int_32 lparam; /* record length for DA file objects */ + union { + int_32 ival; /* integer or logical value */ + float_32 fval; /* real value */ + double dval; /* double precision value */ + lcm *mylcm; /* handle towards a LCM object */ + char hval[73]; /* character value */ + hid_t myhdf5; /* handle towards a HDF5 file */ + } value; + struct LIFO_NODE *daughter; /* address of the daughter node in stack */ + char name[13]; /* name of node in the calling script */ + char name_daughter[13]; /* name of node in the daughter script */ + char OSname[73]; /* physical filename */ +} lifo_node ; +\end{verbatim} +\normalsize + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{2.4cm}|p{1.6cm}|p{10.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf life\_node components:} \\ +\hline +{\tt type} & {\it int\_32} & type of data in node. +$=\pm 3$: LCM object; +$=\pm 4$: XSM file; +$=\pm 5$: sequential binary file; +$=\pm 6$: sequential ascii file; +$=\pm 7$: direct access binary file; +$=\pm 8$: HDF5 file; +$=\pm 11$: integer CLE-2000 value; +$=\pm 12$: real CLE-2000 value; +$=\pm 13$: character string (null-terminated); +$=\pm 14$: double precision CLE-2000 value; +$=\pm 15$: logical CLE-2000 value. +A positive value indicates that an input value is provided; a negative value indicates that {\sl no} input value is provided +so that the node is {\sl empty}. Empty nodes are defined to receive calculational results. +\\ +\hline +{\tt access} & {\it int\_32} & access state of data in node. +$= 0$: creation mode; +$= 1$: modification mode; +$= 2$: read-only mode. +This information is used internally in {\tt cle2000\_c()} function. +\\ +\hline +{\tt lparam} & {\it int\_32} & record length (in bytes) for DA file objects. This data is given if and only if $|${\tt type}$| = 7$.\\ +\hline +{\tt value.ival} & {\it int\_32} & integer or logical CLE-2000 value. This data is given or is available at output if and only if {\tt type} $= 11$ or $=15$.\\ +\hline +{\tt value.fval} & {\it float\_32} & real CLE-2000 value. This data is given or is available at output if and only if {\tt type} $= 12$.\\ +\hline +{\tt value.hval} & {\it char[73]} & character string CLE-2000 value. This data is given or is available at output if and only if {\tt type} $= 13$.\\ +\hline +{\tt value.dval} & {\it double} & double precision CLE-2000 value. This data is given or is available at output if and only if {\tt type} $= 14$.\\ +\hline +{\tt value.mylcm} & {\it lcm*} & LCM object (memory-resident). This data is given or is available at output if and only if {\tt type} $= 3$. The LCM object is closed.\\ +\hline +{\tt daughter} & {\it lifo\_node*} & address of the daughter node in stack. This information is used by the lifo utility to construct the linked list of nodes.\\ +\hline +{\tt name} & {\it char[13]} & name of node in the calling script.\\ +\hline +{\tt name\_daughter} & {\it char[13]} & name of node in the daughter script. This name is used internally in {\tt cle2000\_c()} function.\\ +\hline +{\tt OSname} & {\it char[73]} & name of node as known by the operating system. In the case of a LCM object, it is the name given to {\tt lcmop\_c()} function. In the case of a file, it is the operating system name of the file. The LCM object or file is closed. {\bf This data is given if and only if} $|${\tt type}$| \le 10$.\\ +\hline +\end{tabular} + +\vskip 1.0cm + +The following functions are used to manage the lifo stack. + +\vskip 0.8cm +\goodbreak + +\subsubsection {cleopn\index{cleopn}} + +Create an empty lifo stack. + +\begin{verbatim} + +cleopn(my_lifo); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the empty lifo stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{clepop\index{clepop}} + +Remove the ``last-in" node from the lifo stack. + +\begin{verbatim} + +clepop(my_lifo); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the lifo stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it lifo\_node*} & node removed from the lifo stack \\ +\hline +\end{tabular} + +\subsubsection{clepush\index{clepush}} + +Add a new node in the lifo stack. + +\begin{verbatim} + +clepush(my_lifo, my_node); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the lifo stack. \\ +\hline +{\tt my\_node} & {\it lifo\_node*} & node to add to the lifo stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{clecls\index{clecls}} + +Delete an empty lifo stack. + +\begin{verbatim} + +clecls(my_lifo); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the empty lifo stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it int\_32} & error code. $=0$: successful; $=-1$: the lifo stack is not empty. \\ +\hline +\end{tabular} + +\subsubsection{clenode\index{clenode}} + +Return the node with name {\tt my\_name}. The lifo stack is not modified. +\begin{verbatim} + +clenode(my_lifo, my_name); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the lifo stack. \\ +\hline +{\tt my\_name} & {\it char*} & name of the node. The name is null-terminated. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it lifo\_node*} & node of name {\tt my\_name} or NULL if the node doesn't exist. \\ +\hline +\end{tabular} + +\subsubsection{clepos\index{clepos}} +Return the {\tt ipos}--th node in the stack. The lifo stack is not modified. +\begin{verbatim} + +clepos(my_lifo, ipos); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the lifo stack. \\ +\hline +{\tt ipos} & {\it int\_32} & position of the node in the stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it lifo\_node*} & {\tt ipos}--th node or NULL if the node doesn't exist. \\ +\hline +\end{tabular} + +\subsubsection{clelib\index{clelib}} +Print a table-of-content for the lifo stack. +\begin{verbatim} + +clelib(my_lifo); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the lifo stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection {The free-format input reader} + +The free-format inpsut reader of CLE-2000 is implemented using four functions: {\tt redopn\_c()}, {\tt redget\_c()}, {\tt redput\_c()} and {\tt redcls\_c()}. +Only {\tt redget\_c()} and {\tt redput\_c()} are expected to be used in an application software. + +\subsubsection{redopn\_c\index{redopn\_c}} + +Function {\tt redopn\_c()} is called to open the input reader. +The general specification of function {\tt redopn\_c()} is + +\begin{verbatim} + +redopn_c(iinp1, iout1, hout1, nrec); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iinp1} & {\it kdi\_file*} & KDI object containing the CLE-2000 input data, as computed by {\tt clepil()} and {\tt objpil()} functions of CLE-2000.\\ +\hline +{\tt iout1} & {\it FILE*} & sequential {\sc ascii} file used to write execution messages. Can be set to {\tt stdout}. \\ +\hline +{\tt hout1} & {\it char*} & name of the sequential {\sc ascii} file used to write execution messages. \\ +\hline +{\tt nrec} & {\it int\_32} & record index where reading occurs. Can be set to zero at first call. Set to the value returned by {\tt redcls\_c()} at subsequent calls.\\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{redget\_c\index{redget\_c}} + +Function {\tt redget\_c()} is called within modules of the application software to recover the module-specific input data. +The general specification of function {\tt redget\_c()} is + +\begin{verbatim} + +redget_c(ityp, nitma, flott, text, dflot); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ityp} & {\it int\_32*} & type of the CLE-2000 variable. A negative value indicates that the variable is to be computed by the application software and returned towards CLE-2000 using a call to {\tt redput\_c}. $=\pm 1$: integer type; +$=\pm 2$: real (single precision) type; +$=\pm 3$: string type; +$=\pm 4$: double precision type; +$=\pm 5$: logical type.\\ +\hline +{\tt nitma} & {\it int\_32*} & integer input value when {\tt ityp} $= 1$ or $= 5$; number of characters when {\tt ityp} $= 3$. \\ +\hline +{\tt flott} & {\it float\_32*} & real input value when {\tt ityp} $= 2$. \\ +\hline +{\tt text} & {\it char[73]} & character string input value when {\tt ityp} $= 3$. \\ +\hline +{\tt dflot} & {\it double\_64*} & double precision input value when {\tt ityp} $= 4$. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{redput\_c\index{redput\_c}} + +Function {\tt redput\_c()} is called within modules of the application software to make information computed by the module available as CLE-2000 variables to the CLE-2000 procedure. +The application software must first call {\tt redget\_c()} and obtain a negative value of {\tt ityp}. A call to {\tt redput\_c()} is next performed with its first parameter set to +$-${\tt ityp} (now, a positive value) and with the corresponding value of the parameter. +The general specification of function {\tt redput\_c()} is + +\begin{verbatim} + +redput_c(ityp, nitma, flott, text, dflot); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ityp} & {\it int\_32*} & type of the CLE-2000 variable. $=1$: integer type; +$=2$: real (single precision) type; +$=3$: string type; +$=4$: double precision type; +$=5$: logical type.\\ +\hline +{\tt nitma} & {\it int\_32*} & integer output value when {\tt ityp} $= 1$ or $= 5$; number of characters when {\tt ityp} $= 3$. \\ +\hline +{\tt flott} & {\it float\_32*} & real output value when {\tt ityp} $= 2$. \\ +\hline +{\tt text} & {\it char*} & character string output value when {\tt ityp} $= 3$. \\ +\hline +{\tt dflot} & {\it double\_64*} & double precision output value when {\tt ityp} $= 4$. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{redcls\_c\index{redcls\_c}} + +Function {\tt redcls\_c()} is called to close the input reader. +The general specification of function {\tt redcls\_c()} is + +\begin{verbatim} + +redcls_c(iinp1, iout1, hout1, nrec) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iinp1} & {\it kdi\_file**} & KDI object containing the CLE-2000 input data.\\ +\hline +{\tt iout1} & {\it FILE**} & sequential {\sc ascii} file used to write execution messages. \\ +\hline +{\tt hout1} & {\it char[73]} & name of the sequential {\sc ascii} file used to write execution messages. \\ +\hline +{\tt nrec} & {\it int\_32*} & record index where reading occurs. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Defining built-in constants in CLE-2000} + +CLE-2000 has pre-defined built-in constants, either with mathematical meaning (e.g., $\pi$) or with physical meaning. Currently, available physical constants are +related to reactor physics. In future, one may want to include more physical constants. Here is the specification of the function available inside CLE-2000 to define these constants. + +\subsubsection{clecst\index{clecst}} + +Function {\tt dumcst()} is an external ANSI~C function implementing pre-defined parametric constants. A standard version is available in the GANLIB with name {\tt clecst()}. It is specified as +\begin{verbatim} + +clecst(cparm, ityp, nitma, flott, text, dflot); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +cparm & {\it char*} & name of the parametric constant (name starting with \$) \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ityp} & {\it int\_32*} & type of the parametric constant ($1 \le$ {\tt ityp} $ \le 5$) \\ +\hline +{\tt nitma} & {\it int\_32*} & integer value of the parametric constant if {\tt ityp} $= 1$; logical value (=1: true/=-1: false) of the parametric constant if {\tt ityp} $= 5$; +number of characters in the string if {\tt ityp} $= 3$. \\ +\hline +{\tt flott} & {\it float\_32*} & real value of the parametric constant if {\tt ityp} $= 2$ \\ +\hline +{\tt text} & {\it char*} & character string value of the parametric constant if {\tt ityp} $= 3$ \\ +\hline +{\tt dflot} & {\it double\_64*} & double precision value of the parametric constant if {\tt ityp} $= 4$ \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{{\it int\_32}} & error code equal to zero if the execution of {\tt clecst()} is successful. Equal to the error code otherwise. \\ +\hline +\end{tabular} + +\section {The ISO Fortran {\sc lcm} API} + +The ISO Fortran {\sc lcm} API is a set of Fortran-2003 wrapper subroutines or functions programmed around the ANSI-C functions of the {\sc lcm} API. This implementation is using +the C interoperability capabilities normalized by ISO and available in the Fortran-2003 compilers. All the subroutines and functions presented in this section are ISO-standard and 64-bit clean. + +\vskip 0.08cm + +Each LCM object has a {\sl root associative table} from which the complete object is constructed. + +\vskip 0.08cm + +Any subroutines or functions using the Fortran {\sc lcm} API must include a {\tt USE} statement of the form +\begin{verbatim} +USE GANLIB +\end{verbatim} + +The address of a LCM object is a {\tt TYPE(C\_PTR)} variable declared as +\begin{verbatim} + TYPE(C_PTR) :: IPLIST +\end{verbatim} +\noindent This intrinsic type is defined by the {\tt USE GANLIB} statement. Very few operations are permitted on +{\tt C\_PTR} variables. A {\tt C\_PTR} variable can be nullified by writing +\begin{verbatim} + IPLIST=C_NULL_PTR +\end{verbatim} +\noindent and a {\tt C\_PTR} variable can be checked for association with actual data using +\begin{verbatim} + IF(C_ASSOCIATED(IPLIST)) THEN +\end{verbatim} + +\vskip 0.8cm + +\subsection{Opening, closing and validation of LCM objects} + +\subsubsection{LCMOP\index{LCMOP}} + +Open an LCM object (either memory resident or persistent). Obtain the address of the LCM +object if it is created. Note that CLE-2000 is responsible to perform the calls to {\tt LCMOP} for the LCM +objects that are used as parameters of a CLE-2000 module. The use +of {\tt LCMOP} is generally restricted to the use of temporary LCM objects created within a CLE-2000 module. +\begin{verbatim} + +CALL LCMOP(IPLIST,NAMP,IMP,MEDIUM,IMPX) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the LCM object if {\tt IMP=1} or {\tt imp=2}. {\tt IPLIST} corresponds to the address of the root associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*72} & name of the LCM object if {\tt IMP=0}. \\ +\hline +{\tt IMP} & {\it INTEGER} & =0 to create a new LCM object ; + =1 to modify an existing LCM object; + =2 to access an existing LCM object in {\bf read-only} mode. \\ +\hline +{\tt MEDIUM} & {\it INTEGER} & =1 to use a memory-resident LCM object; + =2 to use an {\sc xsm} file to store the LCM object. \\ +\hline +{\tt IMPX} & {\it INTEGER} & print parameter. Equal to zero to suppress all printings. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of an LCM object if {\tt IMP=0}. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the LCM object if {\tt IMP=1} or {\tt IMP=2}. \\ +\hline +\end{tabular} + +\subsubsection{LCMCL\index{LCMCL}} + +Close an LCM object (either memory resident or persistent). Note that CLE-2000 is responsible to perform the calls to +{\tt LCMCL} for the LCM objects that are used as parameters of a CLE-2000 module. The use +of {\tt LCMCL} is generally restricted to the use of temporary LCM objects created within a CLE-2000 module. + +\vskip 0.2cm + +A LCM object can only be closed if {\tt IPLIST} points towards its root directory. + +\begin{verbatim} + +CALL LCMCL(IPLIST,IACT) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the LCM object (address of the root directory of the LCM object). \\ +\hline +{\tt IACT} & {\it INTEGER} & =1 close the LCM object without destroying it; =2 and destroying it; =3 erase and close the LCM object without destroying it. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & {\tt IPLIST=0} indicates that the LCM object is closed and destroyed. A memory-resident LCM object keeps the +same address during its complete existence. A persistent LCM object is associated to an XSM file and is represented by a different +value of {\tt IPLIST} each time it is reopened. \\ +\hline +\end{tabular} + +\subsubsection{LCMVAL\index{LCMVAL}} + +Subroutine to validate a single block of data in a LCM object or the totality of the LCM object, +starting from the address of an associative table. This function has no effect if the object is +persistent. The validation consists to verify the connections between the elements of the LCM +object, to verify that each element of the object is defined and to check for possible memory corruptions. +If an error is detected, the following message is issued: + +\begin{verbatim} +LCMVAL: BLOCK xxx OF THE TABLE yyy HAS BEEN OVERWRITTEN. +\end{verbatim} + +This function is called as + +\begin{verbatim} + +CALL LCMVAL(IPLIST,NAMP) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table or of the heterogeneous list. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block to validate in the associative table. +If {\tt NAMP='~'}, all the blocks in the associative table are verified in a recursive way. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Interrogation of LCM objects} + +The data structures in an LCM object are self-described. It is therefore possible to +interrogate them in order to know their characteristics. + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of interrogation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & father structure~~~~ & information block \\ +\hline +father & associative table & {\tt LCMINF} & {\tt LCMLEN} \\ + & & {\tt LCMNXT} & \\ +\cline{2-4} + & heterogeneous list & {\tt LCMINF} & {\tt LCMLEL} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{LCMLEN\index{LCMLEN}} + +Subroutine used to recover the length and type of an information block stored in an +associative table (either memory-resident or persistent). The length is the number of +elements in a daughter heterogeneous list or the number of elements in an array of elementary type. +If {\tt itylcm=3}, the length is the number of {\tt character*4} words. As an example, the length required +to store an array of {\tt character*8} words is twice its dimension. + +\begin{verbatim} + +CALL LCMLEN(IPLIST,NAMP,ILONG,ITYLCM) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. =$-1$ for a daughter associative table; + =$N$ for a daughter heterogeneous list containing $N$ components; + =0 if the block does't exist.\\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =0 associative table; =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =10 heterogeneous list; + =99 undefined (99 is returned if the block does't exist). \\ +\hline +\end{tabular} + +\subsubsection{LCMINF\index{LCMINF}} + +Subroutine used to recover general information about a LCM object. + +\begin{verbatim} + +CALL LCMINF(IPLIST,NAMLCM,NAMMY,EMPTY,ILONG,LCM) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table or of the heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt NAMLCM} & {\it CHARACTER*72} & name of the LCM object. \\ +\hline +{\tt NAMMY} & {\it CHARACTER*12} & name of the associative table at address {\tt IPLIST}. $=${\tt '/'} if the associative table +is the root of the LCM object; $=${\tt ' '} if the associative table +is an heterogeneous list component. +\\ +\hline +{\tt EMPTY} & {\it LOGICAL} & logical variable set to {\tt .true.} + if the associative table is empty + or set to {\tt .false.} otherwise. \\ +\hline +{\tt ILONG} & {\it INTEGER} & $=-1$: {\tt IPLIST} is an associative table; $>0$: number of components in the heterogeneous list {\tt IPLIST}\\ +\hline +{\tt LCM} & {\it LOGICAL} & logical variable set to {\tt .true.} + if information is memory-resident or set to {\tt .false.} if information is persistent (stored in an XSM file). \\ +\hline +\end{tabular} + +\subsubsection{LCMNXT\index{LCMNXT}} + +Subroutine used to find the name of the next block of data in an associative table. Use +of {\tt LCMNXT} is forbidden if the associative table is empty. The order of names is +arbitrary. The search cycle indefinitely. + +\begin{verbatim} + +CALL LCMNXT(IPLIST,NAMP) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of an existing block. + {\tt NAMP=' '} can be used to obtain a first name to initiate the search. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the next block. +A call to {\tt XABORT} is performed if the associative table is empty. \\ +\hline +\end{tabular} + +\subsubsection{LCMLEL\index{LCMLEL}} + +Subroutine used to recover the length and type of an information block stored in an +heterogeneous list (either memory-resident or persistent). The length is the number of +elements in a daughter heterogeneous list or the number of elements in an array of elementary type. +If {\tt itylcm=3}, the length is the number of {\tt character*4} words. As an example, the length required +to store an array of {\tt character*8} words is twice its dimension. + +\begin{verbatim} + +CALL LCMLEL(IPLIST,ISET,ILONG,ITYLCM) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +The first element of the list is located at index $1$.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. =0 if the block does't exist. \\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =0 associative table; =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =10 heterogeneous list; + =99 undefined (99 is returned if the block does't exist); + =999 undefined (999 is returned if index {\tt ISET} is out of bounds). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Management of the array of elementary type} + +Management of the array of elementary type can be performed {\sl with} copy of the data ({\tt LCMPUT}, {\tt LCMGET}, {\tt LCMPDL} or +{\tt LCMGDL}) or {\sl without} copy ({\tt LCMPPD}, {\tt LCMGPD}, {\tt LCMPPL} or {\tt LCMGPL}). + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of operation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & put~~~~~~~~~~~~~ & get~~~~~~~~~~~~~ \\ +\hline +father & associative table & {\tt LCMPUT} & {\tt LCMGET} \\ + & & {\tt LCMPPD} & {\tt LCMGPD} \\ +\cline{2-4} + & heterogeneous list & {\tt LCMPDL} & {\tt LCMGDL} \\ + & & {\tt LCMPPL} & {\tt LCMGPL} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{LCMGET\index{LCMGET}} + +Subroutine used to recover an information block (array of elementary type) from an associative table and to copy +this data into memory. + +\begin{verbatim} + +CALL LCMGET(IPLIST,NAMP,DATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block to recover. + A call to {\tt XABORT} is performed if the block does't exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt DATA} & {\it CLASS(*)} & array of dimension $\ge$ {\tt ILONG} in which the block is copied. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Subroutine {\tt LCMGET} can be used to recover character-string information available in a block +of the LCM object. It is also possible to use subroutine {\tt LCMGCD} presented in \Sect{LCMGCD}. +In the following example, a block is stored in an associative table located at +address {\tt IPLIST}. The block has a name {\tt NAMP} and a length equivalent to 5 32-bit words. +The information is recovered into the integer array {\tt IDATA} and transformed into a {\tt character*20} variable named {\tt HNAME} using an internal {\tt WRITE} statement: + +\begin{verbatim} + USE GANLIB + ... + CHARACTER NAMP*12,HNAME*20 + INTEGER IDATA(5) + TYPE(C_PTR) IPLIST + ... + IPLIST=... + NAMP=... + CALL LCMGET(IPLIST,NAMP,IDATA) + WRITE(HNAME,'(5A4)') (IDATA(I),I=1,5) +\end{verbatim} + +\subsubsection{LCMPUT\index{LCMPUT}} + +Subroutine used to store a block of data (array of elementary type) into an associative table. +The information is copied from memory towards the LCM object. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPUT(IPLIST,NAMP,ILONG,ITYLCM,DATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block. \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. If the array contains $N$ {\tt character*8} words, + {\tt ilong} must be set to $2 \times N$. \\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined. \\ +\hline +{\tt DATA} & {\it CLASS(*)} & array of dimension $\ge$ {\tt ILONG} to be copied into the LCM object. + Array elements {\tt DATA} must be initialized before the call to {\tt LCMPUT}. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Subroutine {\tt LCMPUT} can be used to store character-string information in an associative table of a LCM object. +It is also possible to use function {\tt LCMPCD} presented in \Sect{LCMPCD}. In the +following example, a character string {\tt HNAME} is first transformed into an integer array {\tt IDATA} +using an internal {\tt READ} statement. This array (block of data) is stored into the LCM object located at +address {\tt IPLIST}, using {\tt LCMPUT}. The block has a name {\tt NAMP}, a length equivalent to 5 32-bit words, and a type +equal to 3. + +\begin{verbatim} + USE GANLIB + ... + CHARACTER NAMP*12,HNAME*20 + INTEGER IDATA(5) + TYPE(C_PTR) IPLIST + ... + IPLIST=... + NAMP=... + READ(HNAME,'(5A4)') (IDATA(I),I=1,5) + CALL LCMPUT(IPLIST,NAMP,5,3,IDATA) +\end{verbatim} + +\subsubsection{LCMGPD\index{LCMGPD}} + +Subroutine used to recover the {\tt TYPE(C\_PTR)} address of an information block (array of elementary type) from an associative table, +{\sl without} making a copy of the information. Use of this subroutine must respect the following rules: +\begin{itemize} +\item If the information is modified after the call to {\tt LCMGPD}, a call to {\tt LCMPPD} +must be performed to acknowledge the modification. +\item The block pointed by {\tt IOFSET} should never be released using a deallocation function such as +{\tt RLSARA}, {\tt deallocate}, etc. +\item The variable {\tt IOFSET} must never be copied into another variable. +\end{itemize} +Non respect of these rules may cause execution failure (core dump, +segmentation fault, etc) without possibility to throw an exception. + +\vskip 0.2cm + +Subroutine {\tt LCMGPD} implements direct {\sl pinning} on LCM data structures. It represents an advanced capability of the {\sc lcm} API and should only be used in situations where +the economy of computer resources is a critical issue. The {\tt C\_PTR} address is the ANSI~C pointer of a block of +information made available into a Fortran program. If {\tt IOFSET} is a {\tt C\_PTR} address, the useful information is +accessed in a Fortran variable {\tt IDATA} set using +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IOFSET + INTEGER, POINTER, DIMENSION(:) :: IDATA + ... + CALL LCMGPD(IPLIST,NAMP,IOFSET) + CALL C_F_POINTER(IOFSET,IDATA, (/ ILONG /)) +\end{verbatim} + +The useful information is therefore accessed in memory locations {\tt IDATA(1)} to {\tt IDATA(ILONG)}. + +\vskip 0.2cm + +A call to {\tt LCMGPD} doesn't cause any modification to the LCM object. + +\vskip 0.5cm + +\begin{verbatim} + +CALL LCMGPD(IPLIST,NAMP,IOFSET) +\end{verbatim} + +\vskip 0.5cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block to recover. +A call to {\tt XABORT} is performed if the block does't exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IOFSET} & {\it TYPE(C\_PTR)} & {\tt C\_PTR} address of the information. \\ +\hline +\end{tabular} + +\subsubsection{LCMPPD\index{LCMPPD}} + +Subroutine used to store a block of data (array of elementary type) into an associative table +{\sl without} making a copy of the information. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +{\sl If a block named {\tt NAMP} already exists in the associative table, the address associated +with {\tt NAMP} is replaced by the new address and the information pointed by the old address +is deallocated.} + +\vskip 0.2cm + +Subroutine {\tt LCMPPD} implements direct {\sl pinning} on LCM data structures. It represents an advanced capability of the {\sc lcm} API and should only be used in situations where +the economy of computer resources is a critical issue. The memory block stored by {\tt LCMPPD} must be previously +allocated by a call to {\tt LCMARA} of the form +\begin{verbatim} +IOFSET=LCMARA(JLONG) +\end{verbatim} + +\noindent where {\tt JLONG} is the number of 32-bit words required to store the memory block. {\tt JLONG} is generally equal to {\tt ILONG} except if +{\tt ITYLCM}=4 or {\tt ITYLCM}=6 where {\tt JLONG}={\tt 2*ILONG}. + +\vskip 0.2cm + +If {\tt ITYLCM}=1, the useful information is accessed in a Fortran variable {\tt IDATA} set using a {\tt C\_F\_POINTER} function: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IOFSET + INTEGER, POINTER, DIMENSION(:) :: IDATA + ... + IOFSET = LCMARA(ILONG) + CALL C_F_POINTER(IOFSET,IDATA, (/ ILONG /)) + ... + CALL LCMPPD(IPLIST,NAMP,ILONG,ITYLCM,IOFSET) +\end{verbatim} + +The useful information is therefore accessed in memory locations {\tt IDATA(1)} to {\tt IDATA(ILONG)}. There is no need to +declare {\tt LCMARA} as an external function; this declaration is included in the module set by the {\tt USE GANLIB} statement. + +\begin{verbatim} + +CALL LCMPPD(IPLIST,NAMP,ILONG,ITYLCM,IOFSET) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block. \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. \\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined.\\ +\hline +{\tt IOFSET} & {\it TYPE(C\_PTR)} & {\tt C\_PTR} address of the information. Data elements pointed +by {\tt IOFSET} must be initialized before the call to {\tt LCMPPD}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IOFSET} & {\it TYPE(C\_PTR)} & {\tt IOFSET=C\_NULL\_PTR} to indicate that the information previously pointed by + {\tt IOFSET} is now managed by {\tt LCM}. \\ +\hline +\end{tabular} + +\subsubsection{LCMDEL\index{LCMDEL}} + +Subroutine used to erase an information block or a daughter heterogeneous list stored in a memory-resident associative table. +Subroutine {\tt LCMDEL} {\sl cannot} be used with persistent LCM objects. + +\begin{verbatim} + +CALL LCMDEL(IPLIST,NAMP) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block to erase. \\ +\hline +\end{tabular} + +\subsubsection{LCMGDL\index{LCMGDL}} + +Subroutine used to recover an information block (array of elementary type) from an heterogeneous list and to copy +this data into memory. + +\begin{verbatim} + +CALL LCMGDL(IPLIST,ISET,DATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the heterogeneous list. A call to {\tt XABORT} + is performed if the block does't exist. +The first element of the list is located at index $1$.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt DATA} & {\it CLASS(*)} & array of dimension $\ge$ {\tt ILONG} in which the block is copied. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Subroutine {\tt LCMGDL} can be used to recover character-string information available in a block +of the LCM object. It is also possible to use subroutine {\tt LCMGCL} presented in \Sect{LCMGCL}. +In the following example, a block is stored in an heterogeneous list located at +address {\tt IPLIST}. The block is located at the {\tt ISET}--th position of the heterogeneous list and has a length equivalent to 5 32-bit words. +The information is recovered into the integer array {\tt IDATA} and transformed into a {\tt character*20} variable named {\tt HNAME} using an internal {\tt WRITE} statement: + +\begin{verbatim} + USE GANLIB + ... + CHARACTER HNAME*20 + INTEGER IDATA(5) + TYPE(C_PTR) IPLIST + ... + IPLIST=... + ISET=... + CALL LCMGDL(IPLIST,ISET,IDATA) + WRITE(HNAME,'(5A4)') (IDATA(I),I=1,5) +\end{verbatim} + +\subsubsection{LCMPDL\index{LCMPDL}} + +Subroutine used to store a block of data (array of elementary type) into an heterogeneous list. +The information is copied from memory towards the LCM object. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPDL(IPLIST,ISET,ILONG,ITYLCM,DATA) +\end{verbatim} + +\vskip 0.2cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +The first element of the list is located at index $1$.\\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. If the array contains $N$ {\tt character*8} words, + {\tt ILONG} must be set to $2 \times N$ \\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined. \\ +\hline +{\tt DATA} & {\it CLASS(*)} & array of dimension $\ge$ {\tt ILONG} to be copied into the LCM object. + Array elements {\tt DATA} must be initialized before the call to {\tt LCMPDL}. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Subroutine {\tt LCMPDL} can be used to store character-string information into an heterogeneous list of a LCM object. In the +following example, a character string {\tt HNAME} is first transformed into an integer array {\tt IDATA} +using an internal {\tt READ} statement. This array (block of data) is stored into the LCM object located at +address {\tt IPLIST}, using {\tt LCMPDL} . The block is located at the {\tt ISET}--th position of the heterogeneous list, has a length equivalent to 5 32-bit words, and a type +equal to 3. + +\begin{verbatim} + USE GANLIB + ... + CHARACTER HNAME*20 + INTEGER IDATA(5) + TYPE(C_PTR) IPLIST + ... + IPLIST=... + ISET=... + READ(HNAME,'(5A4)') (IDATA(I),I=1,5) + CALL LCMPDL(IPLIST,ISET,5,3,IDATA) +\end{verbatim} + +\subsubsection{LCMGPL\index{LCMGPL}} + +Subroutine used to recover the {\tt TYPE(C\_PTR)} address of an information block (array of elementary type) from an heterogeneous list, +{\sl without} making a copy of the information. Use of this subroutine must respect the following rules: +\begin{itemize} +\item If the information is modified after the call to {\tt LCMGPL}, a call to {\tt LCMPPL} +must be performed to acknowledge the modification. +\item The block pointed by {\tt IOFSET} should never be released using a deallocation function such as +{\tt RLSARA}, {\tt deallocate}, etc. +\item The variable {\tt IOFSET} must never be copied into another variable. +\end{itemize} +Non respect of these rules may cause execution failure (core dump, +segmentation fault, etc) without possibility to throw an exception. + +\vskip 0.2cm + +Subroutine {\tt LCMGPL} implements direct {\sl pinning} on LCM data structures. It represents an advanced capability of the {\sc lcm} API and should only be used in situations where +the economy of computer resources is a critical issue. The {\tt C\_PTR} address is the ANSI~C pointer of a block of +information made available into a Fortran program. If {\tt IOFSET} is a {\tt C\_PTR} address, the useful information is +accessed in a Fortran variable {\tt IDATA} set using +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IOFSET + INTEGER, POINTER, DIMENSION(:) :: IDATA + ... + CALL LCMGPL(IPLIST,ISET,IOFSET) + CALL C_F_POINTER(IOFSET,IDATA, (/ ILONG /)) +\end{verbatim} + +The useful information is therefore accessed in memory locations {\tt IDATA(1)} to {\tt IDATA(ILONG)}. + +\vskip 0.2cm + +A call to {\tt LCMGPL} doesn't cause any modification to the LCM object. + +\begin{verbatim} + +CALL LCMGPL(IPLIST,ISET,IOFSET) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +A call to {\tt XABORT} is performed if the block does't exist. +The first element of the list is located at index $1$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IOFSET} & {\it TYPE(C\_PTR)} & {\tt C\_PTR} address of the information. \\ +\hline +\end{tabular} + +\subsubsection{LCMPPL\index{LCMPPL}} + +Subroutine used to store a block of data (array of elementary type) into an heterogeneous list +{\sl without} making a copy of the information. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +{\sl If the {\tt ISET}-th component of the heterogeneous list already exists, the address associated +with this component is replaced by the new address and the information pointed by the old address +is deallocated.} + +\vskip 0.2cm + +Subroutine {\tt LCMPPL} implements direct {\sl pinning} on LCM data structures. It represents an advanced capability of the {\sc lcm} API and +should only be used in situations where the economy of computer resources is a critical issue. The memory block stored by {\tt LCMPPL} must be previously +allocated by a call to {\tt LCMARA} of the form +\begin{verbatim} +IOFSET=LCMARA(JLONG) +\end{verbatim} + +\noindent where {\tt JLONG} is the number of 32-bit words required to store the memory block. {\tt JLONG} is generally equal to {\tt ILONG} except if +{\tt ITYLCM}=4 or {\tt ITYLCM}=6 where {\tt JLONG}={\tt 2*ILONG}. + +\vskip 0.2cm + +If {\tt ITYLCM}=1, the useful information is accessed in a Fortran variable {\tt IDATA} set using a {\tt C\_F\_POINTER} function: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IOFSET + INTEGER, POINTER, DIMENSION(:) :: IDATA + ... + IOFSET = LCMARA(ILONG) + CALL C_F_POINTER(IOFSET,IDATA, (/ ILONG /)) + ... + CALL LCMPPL(IPLIST,ISET,ILONG,ITYLCM,IOFSET) +\end{verbatim} + +The useful information is therefore accessed in memory locations {\tt IDATA(1)} to {\tt IDATA(ILONG)}. There is no need to +declare {\tt LCMARA} as an external function; this declaration is included in the module set by the {\tt USE GANLIB} statement. + +\begin{verbatim} + +CALL LCMPPL(IPLIST,ISET,ILONG,ITYLCM,IOFSET) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +The first element of the list is located at index $1$. \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. \\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; + =99 undefined. \\ +\hline +{\tt IOFSET} & {\it TYPE(C\_PTR)} & {\tt C\_PTR} address of the information. Data elements pointed +by {\tt IOFSET} must be initialized before the call to {\tt LCMPPL}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IOFSET} & {\it INTEGER} & {\tt IOFSET=C\_NULL\_PTR} to indicate that the information previously pointed by + {\tt IOFSET} is now managed by {\tt LCM}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Management of the associative tables and of the heterogeneous lists} + +These functions permit to create ({\tt LCMSIX}, {\tt LCMDID}, {\tt LCMDIL}, +{\tt LCMLID}, {\tt LCMLIL}) or to access ({\tt LCMSIX}, {\tt LCMGID}, {\tt LCMGIL}) +daughter associative tables or daughter heterogeneous lists. There is no need to +declare these functions as external functions; this declaration is included in the module set by the {\tt USE GANLIB} statement. Use of these functions is summarized in the following table: + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{daughter} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & associative table & heterogeneous list \\ +\hline +father & associative table & {\tt LCMDID} & {\tt LCMLID} \\ + & & {\tt LCMGID} & {\tt LCMGID} \\ +\cline{2-4} + & heterogeneous list & {\tt LCMDIL} & {\tt LCMLIL} \\ + & & {\tt LCMGIL} & {\tt LCMGIL} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{LCMDID\index{LCMDID}} + +Function used to create or access a daughter associative table included into a father associative table. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +The daughter associative table is created if it doesn't already exist. Otherwise, the +existing daughter associative table is accessed. In the latter case, it is recommended +to use function {\tt LCMGID} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +JPLIST=LCMDID(IPLIST,NAMP) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the daughter associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it TYPE(C\_PTR)} & address of the daughter associative table. \\ +\hline +\end{tabular} + +\subsubsection{LCMLID\index{LCMLID}} + +Function used to create or access a daughter heterogeneous list included into a father associative table. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +In the following example, a daughter heterogeneous list is created as a block {\tt LIST} +into a father associative table. The heterogeneous list contains 5~components. A block of data +is stored in each component of the heterogeneous list using {\tt LCMPDL}: + +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST, JPLIST + ... + JPLIST=LCMLID(IPLIST,'LIST',5) + DO I=1,5 + CALL LCMPDL(JPLIST,I,... + ... + ENDDO +\end{verbatim} + +\vskip 0.2cm + +The heterogeneous list capability is implemented through calls to function {\tt LCMLID}. Such a +call permit the following possibilities: +\begin{itemize} +\item the heterogeneous list is created if it doesn't already exist. +\item the heterogeneous list is accessed if it already exists {\sl and} if its length is unchanged. In this case, +it is recommended to use function {\tt LCMGID} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. +\item the heterogeneous list is enlarged (components are added) if it already exists {\sl and} if the new length is larger than the preceding one. +\end{itemize} + +\begin{verbatim} + +JPLIST=LCMLID(IPLIST,NAMP,ILONG) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the daughter heterogeneous list. \\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the daughter heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it INTEGER} & address of the daughter heterogeneous list named {\tt NAMP}. \\ +\hline +\end{tabular} + +\subsubsection{LCMLIL\index{LCMLIL}} + +Function used to create or access a daughter heterogeneous list included into a father heterogeneous list. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +In the following example, a daughter heterogeneous list is created as {\tt 77}-th component +of a father heterogeneous list. The heterogeneous list contains 5~components. A block of data +is stored in each component of the heterogeneous list using {\tt LCMPDL}: + +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST, JPLIST + ... + JPLIST=LCMLIL(IPLIST,77,5) + DO I=1,5 + CALL LCMPDL(JPLIST,I,... + ... + ENDDO +\end{verbatim} + +\vskip 0.2cm + +The heterogeneous list capability is implemented through calls to function {\tt LCMLIL}. Such a +call permit the following possibilities: +\begin{itemize} +\item the heterogeneous list is created if it doesn't already exist. +\item the heterogeneous list is accessed if it already exists {\sl and} if its length is unchanged. In this case, +it is recommended to use function {\tt LCMGIL} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. +\item the heterogeneous list is enlarged (components are added) if it already exists {\sl and} if the new length is larger than the preceding one. +\end{itemize} + +\begin{verbatim} + +JPLIST=LCMLIL(IPLIST,ISET,ILONG) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the daughter heterogeneous list in the father heterogeneous list. +The first element of the list is located at index $1$. \\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the daughter heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it TYPE(C\_PTR)} & address of the daughter heterogeneous list. \\ +\hline +\end{tabular} + +\subsubsection{LCMDIL\index{LCMDIL}} + +Function used to create or access a daughter associative table included into a father heterogeneous list. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +The daughter associative table is created if it doesn't already exist. Otherwise, the +existing daughter associative table is accessed. In the latter case, it is recommended +to use function {\tt LCMGIL} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +It is a good programming practice to replace a set of $N$ distinct associative tables by a +list made of $N$ associative tables, as depicted in \Fig{f1}. + +\vskip 0.2cm + +\begin{figure}[htbp] +\begin{center} +\epsfxsize=9cm +\centerline{ \epsffile{vect.eps}} +\parbox{12cm}{\caption{A list of associative tables.}\label{fig:f2}} +\end{center} +\end{figure} +\goodbreak + +In the example of \Fig{f2}, a set of 5~associative tables, created by {\tt LCMDID}: + +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST, JPLIST + CHARACTER HDIR*12 + ... + DO I=1,5 + WRITE(HDIR,'(5HGROUP,I3,4H/ 5)') I + JPLIST=LCMDID(IPLIST,HDIR) + CALL LCMPUT(JPLIST,... + ... + ENDDO +\end{verbatim} + +\noindent are replaced by a list of 5~associative tables, created by {\tt LCMLID} and {\tt LCMDIL}: + +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST, JPLIST, KPLIST + ... + JPLIST=LCMLID(IPLIST,'GROUP',5) + DO I=1,5 + KPLIST=LCMDIL(JPLIST,I) + CALL LCMPUT(KPLIST,... + ... + ENDDO +\end{verbatim} + +\vskip 0.2cm + +The capability to include associative tables into an heterogeneous list is implemented using +the {\tt LCMDIL} function: + +\begin{verbatim} + +JPLIST=LCMDIL(IPLIST,ISET) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the daughter associative table in the father heterogeneous list. +The first element of the list is located at index $1$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it TYPE(C\_PTR)} & address of the daughter associative table. \\ +\hline +\end{tabular} + +\subsubsection{LCMGID\index{LCMGID}} + +Function used to access a daughter associative table {\sl or} heterogeneous list included into a father associative table. + +\begin{verbatim} + +JPLIST=LCMGID(IPLIST,NAMP) +\end{verbatim} + +\vskip 0.5cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the daughter associative table or heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it TYPE(C\_PTR)} & address of the daughter associative table or heterogeneous list. A call to {\tt XABORT} is performed if this daughter doesn't extst. \\ +\hline +\end{tabular} + +\subsubsection{LCMGIL\index{LCMGIL}} + +Function used to access a daughter associative table {\sl or} heterogeneous list included into a father heterogeneous list. + +\begin{verbatim} + +JPLIST=LCMGIL(IPLIST,ISET) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the daughter associative table or heterogeneous list in the father heterogeneous list. +The first element of the list is located at index $1$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it TYPE(C\_PTR)} & address of the daughter associative table or heterogeneous list. A call to {\tt XABORT} is performed if this daughter doesn't extst. \\ +\hline +\end{tabular} + +\subsubsection{LCMSIX\index{LCMSIX}} + +Function used to move across the hierarchical structure of a LCM object made of +associative tables. Using this function, there is no need to remember the names of +the father (grand-father, etc.) associative tables. If a daughter associative table doesn't +exist and if the LCM object is open on creation or modification mode, the daughter +associative table is created. A daughter associative table cannot be created if the +LCM object is open in {\tt read-only} mode. + +\vskip 0.4cm + +Function {\tt LCMSIX} is deprecated, as {\tt LCMDID} offers a more elegant way to perform the same operation. +However, {\tt LCMSIX} is kept available in the {\sc lcm} API for historical reasons. + +\begin{verbatim} + +CALL LCMSIX(IPLIST,NAMP,IACT) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table before the call to {\tt LCMSIX}. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the daughter associative table if {\tt iact=1}. + This parameter is not used if {\tt iact=0} or {\tt iact=2}. \\ +\hline +{\tt IACT} & {\it INTEGER} & type of move: =0 return towards the root directory of the LCM object; + =1 move towards the daughter associative table (create it if it doesn't exist); + =2 return towards the father associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table after the call to {\tt LCMSIX}. \\ +\hline +\\ +\end{tabular} + +\vspace{0.8cm} + +\subsection{LCM utility functions} + +\subsubsection{LCMLIB\index{LCMLIB}} + +Function used to print (towards {\tt stdout}) the content of the active directory of an associative table or heterogeneous list. + +\begin{verbatim} + +CALL LCMLIB(IPLIST) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table or of the heterogeneous list. \\ +\hline +\end{tabular} + +\subsubsection{LCMEQU\index{LCMEQU}} + +Function used to perform a deep-copy of the information contained in an associative table (address {\tt IPLIS1}) +towards another associative table (address {\tt IPLIS2}). Note that the second associative table (address {\tt IPLIS2}) is modified +but not created by {\tt LCMEQU}. + +\begin{verbatim} + +CALL LCMEQU(IPLIS1,IPLIS2) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt IPLIS1} & {\it TYPE(C\_PTR)} & address of the existing associative table or of the heterogeneous list + (accessed in {\tt read-only} mode). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IPLIS2} & {\it TYPE(C\_PTR)} & address of the associative table or of the heterogeneous list, modified by {\tt LCMEQU}. \\ +\hline +\end{tabular} + +\subsubsection{LCMEXP\index{LCMEXP}} + +Function used to export (or import) the content of an associative table towards (or from) a sequential file. The sequential file +can be in binary or {\tt ascii} format. + +\vskip 0.4cm + +The export of information starts from the active directoty. Note that {LCMEQU} is basically a serialization algorithm +based on the contour algorithm. + +\begin{verbatim} + +CALL LCMEXP(IPLIST,IMPX,NUNIT,IMODE,IDIR) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table or of the heterogeneous list to be exported (or imported). \\ +\hline +{\tt IMPX} & {\it INTEGER} & print parameter (equal to 0 for no print). \\ +\hline +{\tt NUNIT} & {\it INTEGER} & unit number of the sequential file. \\ +\hline +{\tt IMODE} & {\it INTEGER} & =1 binary sequential file; + =2 {\sc ascii} sequential file. \\ +\hline +{\tt IDIR} & {\it INTEGER} & =1 to export; =2 to import. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Using fixed-length character arrays} + +The following subroutines are implemented using the LCM Fortran API of the preceding sections. They +permit the use of fixed-length character arrays. They reproduce an existing capability of the GANLIB4 API. + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of operation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & put~~~~~~~~~~~~~ & get~~~~~~~~~~~~~ \\ +\hline +father & associative table & {\tt LCMPTC} & {\tt LCMGTC} \\ +\cline{2-4} + & heterogeneous list & {\tt LCMPLC} & {\tt LCMGLC} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{LCMGTC\index{LCMGTC}}\label{sect:LCMGTC} + +Subroutine used to recover a character array from a block of data stored in an associative table. + +\begin{verbatim} + +CALL LCMGTC(IPLIST,NAMP,LENG,[NLIN,]HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the character array +to recover. A call to {\tt XABORT} is performed if the block does't exist. \\ +\hline +{\tt LENG} & {\it INTEGER} & length of each character string in the array {\tt HDATA}. \\ +\hline +{\tt NLIN} & {\it INTEGER} & dimension of array {\tt HDATA}. This parameter is omitted if {\tt HDATA} \\ +& & is a single character string. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt NLIN} in which the character information is to be copied \\ +\hline +\end{tabular} + +\subsubsection{LCMPTC\index{LCMPTC}}\label{sect:LCMPTC} + +Subroutine used to store a character array into a block of data stored in an associative table. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPTC(IPLIST,NAMP,LENG,[NLIN,]HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the character array +to store. \\ +\hline +{\tt LENG} & {\it INTEGER} & length of each character string in the array {\tt HDATA}. \\ +\hline +{\tt NLIN} & {\it INTEGER} & dimension of array {\tt HDATA}. This parameter is omitted if {\tt HDATA} \\ +& & is a single character string. \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt NLIN} from which the character information is recovered. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\goodbreak + +\noindent Example: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST + PARAMETER (ILONG=5) + CHARACTER*8 HDATA1(ILONG),HDATA2(ILONG) +* + CALL LCMOP(IPLIST,'mon_dict',0,1,2) +* +* STORE THE INFORMATION. + HDATA1(1)='string1' + HDATA1(2)='string2' + HDATA1(3)='string3' + HDATA1(4)='string4' + HDATA1(5)='string5' + CALL LCMPTC(IPLIST,'node1',8,ILONG,HDATA1) +* +* RECOVER THE INFORMATION. + CALL LCMGTC(IPLIST,'node1',8,ILONG,HDATA2) + DO I=1,ILONG + PRINT *,'I=',I,' RECOVER HDATA2 -->',HDATA2(I),'<--' + ENDDO +* + CALL LCMCL(IPLIST,2) +\end{verbatim} + +\subsubsection{LCMGLC\index{LCMGLC}}\label{sect:LCMGLC} + +Subroutine used to recover a character array from a block of data stored in an heterogeneous list. + +\begin{verbatim} + +CALL LCMGLC(IPLIST,ISET,LENG,[NLIN,]HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +The first element of the list is located at index $1$. \\ +\hline +{\tt LENG} & {\it INTEGER} & length of each character string in the array {\tt HDATA}. \\ +\hline +{\tt NLIN} & {\it INTEGER} & dimension of array {\tt HDATA}. This parameter is omitted if {\tt HDATA} \\ +& & is a single character string. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt NLIN} in which the character information is to be copied \\ +\hline +\end{tabular} + +\subsubsection{LCMPLC\index{LCMPLC}}\label{sect:LCMPLC} + +Subroutine used to store a character array into a block of data stored in an heterogeneous list. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPLC(IPLIST,USET,LENG,[NLIN,]HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +The first element of the list is located at index $1$. \\ +\hline +{\tt LENG} & {\it INTEGER} & length of each character string in the array {\tt HDATA}. \\ +\hline +{\tt NLIN} & {\it INTEGER} & dimension of array {\tt HDATA}. This parameter is omitted if {\tt HDATA} \\ +& & is a single character string. \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt NLIN} from which the character information is recovered. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\goodbreak + +\noindent Example: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST + PARAMETER (ILONG=5) + CHARACTER*8 HDATA1(ILONG),HDATA2(ILONG) +* + CALL LCMOP(IPLIST,'mon_dict',0,1,2) +* +* STORE THE INFORMATION. + HDATA1(1)='string1' + HDATA1(2)='string2' + HDATA1(3)='string3' + HDATA1(4)='string4' + HDATA1(5)='string5' + CALL LCMPLC(IPLIST,1,8,ILONG,HDATA1) +* +* RECOVER THE INFORMATION. + CALL LCMGLC(IPLIST,1,8,ILONG,HDATA2) + DO I=1,ILONG + PRINT *,'I=',I,' RECOVER HDATA2 -->',HDATA2(I),'<--' + ENDDO +* + CALL LCMCL(IPLIST,2) +\end{verbatim} + +\vskip 0.8cm + +\subsection{Using variable-length character arrays} + +The following subroutines are implemented using the LCM Fortran API of the preceding sections. They +permit the use of variable-length character arrays. They represent a {\sl new capability} of the GANLIB5 API. + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of operation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & put~~~~~~~~~~~~~ & get~~~~~~~~~~~~~ \\ +\hline +father & associative table & {\tt LCMPCD} & {\tt LCMGCD} \\ +\cline{2-4} + & heterogeneous list & {\tt LCMPCL} & {\tt LCMGCL} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{LCMGCD\index{LCMGCD}}\label{sect:LCMGCD} + +Function used to recover a character array from a block of data stored in an associative table. + +\begin{verbatim} + +CALL LCMGCD(IPLIST,NAMP,ILONG,HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the character array +to recover. A call to {\tt XABORT} is performed if the block does't exist. \\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the character array.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt ILONG} in which the character information is to be copied \\ +\hline +\end{tabular} + +\subsubsection{LCMPCD\index{LCMPCD}}\label{sect:LCMPCD} + +Subroutine used to store a character array into a block of data stored in an associative table. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPCD(IPLIST,NAMP,ILONG,HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the character array +to store. \\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the character array.\\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt ILONG} from which the character information is recovered. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST + PARAMETER (ILONG=5) + CHARACTER*16 HDATA1(ILONG),HDATA2(ILONG) +* + CALL LCMOP(IPLIST,'mon_dict',0,1,2) +* +* STORE THE INFORMATION. + HDATA1(1)='string1' + HDATA1(2)=' string2' + HDATA1(3)=' string3' + HDATA1(4)=' string4' + HDATA1(5)=' string5' + CALL LCMPCD(IPLIST,'node1',ILONG,HDATA1) +* +* RECOVER THE INFORMATION. + CALL LCMGCD(IPLIST,'node1',ILONG,HDATA2) + DO I=1,ILONG + PRINT *,'I=',I,' RECOVER HDATA2 -->',HDATA2(I),'<--' + ENDDO +* + CALL LCMCL(IPLIST,2) +\end{verbatim} + +\subsubsection{LCMGCL\index{LCMGCL}}\label{sect:LCMGCL} + +Subroutine used to recover a character array from a block of data stored in an heterogeneous list. + +\begin{verbatim} + +CALL LCMGCL(IPLIST,ISET,ILONG,HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the character array in the heterogeneous list. A call to {\tt XABORT} is performed if the component doesn't exist. +The first element of the list is located at index $1$.\\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the character array.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt ILONG} in which the character information is to be copied \\ +\hline +\end{tabular} + +\subsubsection{LCMPCL\index{LCMPCL}}\label{sect:LCMPCL} + +Subroutine used to store a character array into a block of data stored in an heterogeneous list. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPCL(IPLIST,ISET,ILONG,HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the character array in the heterogeneous list. +The first element of the list is located at index $1$. \\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the character array .\\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt ILONG} from which the character information is recovered. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST, JPLIST + PARAMETER (ILONG=5) + CHARACTER*16 HDATA1(ILONG),HDATA2(ILONG) +* + CALL LCMOP(IPLIST,'mon_dict',0,1,2) +* +* CREATE THE LIST. + JPLIST=LCMLID(IPLIST,'node2',77) +* +* STORE THE INFORMATION. + HDATA1(1)='string1' + HDATA1(2)=' string2' + HDATA1(3)=' string3' + HDATA1(4)=' string4' + HDATA1(5)=' string5' + CALL LCMPCL(JPLIST,1,ILONG,HDATA1) +* +* RECOVER THE INFORMATION. + CALL LCMGCL(JPLIST,1,ILONG,HDATA2) + DO I=1,ILONG + PRINT *,'I=',I,' RECOVER HDATA2 -->',HDATA2(I),'<--' + ENDDO +* + CALL LCMCL(IPLIST,2) +\end{verbatim} + +\vskip 0.8cm + +\subsection{Dynamic allocation of an elementary blocks of data in ANSI C} + +A function {\tt LCMARA()} and a subroutine {\tt LCMDRD()} are available as wrappers to memory allocator +{\tt setara\_c} and memory deallocator {\tt rlsara\_c} introduced in Sects.~\ref{sect:setara} and~\ref{sect:rlsara}. +{\tt LCLARA()} and {\tt LCMDRD()} offer an alternative to the Fortran-90 {\tt ALLOCATE} and {\tt DEALLOCATE} +capabilities for exceptional situations involving {\sl pinning} towards LCM internal data. Use of {\tt LCLARA()} +and {\tt LCMDRD()} is 64-bit clean and Fortran-2003 compliant, but its use must be avoided as much as possible. A +setara address is a {\tt malloc} pointer, as defined in ANSI-C. + +\subsubsection{LCMARA\index{LCMARA}}\label{sect:LCMARA} + +{\tt LCMARA()} is a Fortran-2003 wrapper for the ANSI-C function {\tt setara\_c} introduced in Sect.~\ref{sect:setara}. This function +perform a memory allocation and returns a {\tt TYPE(C\_PTR)} pointer variable. + +\begin{verbatim} + +IDATA_PTR=LCMARA(ILONG) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the data array (in single-precision words). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IDATA\_PTR} & {\it TYPE(C\_PTR)} & setara address of the data array. \\ +\hline +\end{tabular} + +\subsubsection{LCMDRD\index{LCMDRD}}\label{sect:LCMDRD} + +{\tt LCMDRD()} is a Fortran-2003 wrapper for the ANSI-C function {\tt rlsara\_c} introduced in Sect.~\ref{sect:rlsara}. This subroutine +deallocate the memory corresponding to a {\tt TYPE(C\_PTR)} pointer variable. + +\begin{verbatim} + +CALL LCMDRD(IDATA_PTR) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt IDATA\_PTR} & {\it TYPE(C\_PTR)} & setara address of the data array. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IDATA_PTR + INTEGER, POINTER, DIMENSION(:) :: IDATA + ... + IDATA_PTR=LCMARA(50) + CALL C_F_POINTER(IDATA_PTR,IDATA,(/ 50 /)) + DO I=1,50 + IDATA(I)=... + ENDDO + ... + CALL LCMDRD(IDATA_PTR) +\end{verbatim} + +\vskip 0.8cm + +\subsection{Abnormal termination of the execution} + +\subsubsection{XABORT} + +Subroutine used to cause the program termination. A message describing the conditions of the +termination is printed. + +\vskip 0.2cm + +It is important to use this subroutine to abort a program instead of using the {\tt STOP} +statement of Fortran. The {\tt XABORT} subroutine can be used to implement {\sl exception +treatment} in situations where the application software is driven by a multi-physics system. + +\vskip 0.2cm + +If an abnormal termination occurs, the {\tt XABORT} subroutine is called as +\begin{verbatim} + CALL XABORT('SUB001: EXECUTION FAILURE.') +\end{verbatim} + +\begin{verbatim} + +CALL XABORT(HSMG) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt HSMG} & {\it CHARACTER*(*)} & message describing the conditions of the abnormal termination. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\clearpage + +\section {The ISO Fortran {\sc hdf5} API} + +The ISO Fortran {\sc hdf5} API is a set of Fortran-2003 wrapper subroutines or functions programmed around the ANSI-C functions of the {\sc hdf5} API presented in Sect.~\ref{sect:hdf5apiC}. This implementation is using +the C interoperability capabilities normalized by ISO and available in the Fortran-2003 compilers. All the subroutines and functions presented in this section are ISO-standard and 64-bit clean. + +\vskip 0.08cm + +Any subroutines or functions using the Fortran {\sc hdf5} API must include a {\tt USE} statement of the form +\begin{verbatim} +use hdf5_wrap +\end{verbatim} + +The address of a HDF5 file is a {\tt TYPE(C\_PTR)} variable declared as +\begin{verbatim} + type(c_ptr) :: ifile +\end{verbatim} + +\vskip 0.8cm + +\subsection{Opening and closing of HDF5 files} + +\subsubsection{hdf5\_open\_file\index{hdf5OpenFile}} + +Open a HDF5 file. +\begin{verbatim} + +call hdf5_open_file(fname, ifile, rdonly) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt fname} & {\it character*1023} & name of the HDF5 file. \\ +\hline +{\tt rdonly} & {\it logical} & =.true. to access an existing HDF5 file in {\bf read-only} mode. Optional argument. +By default, the HDF5 file is accessed in read-write mode. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_close\_file\index{hdf5CloseFile}} + +Close a HDF5 file. + +\begin{verbatim} + +call hdf5_close_file(ifile) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Interrogation of HDF5 files} + +The data structures in a HDF5 file are self-described. It is therefore possible to +interrogate them in order to know their characteristics. + +\subsubsection{hdf5\_list\index{hdf5List}} + +List the root table of contents of a group on the standard output. The name of a group can include one or many path separators (character~$\slash$) +to list different hierarchical levels. + +\begin{verbatim} + +call hdf5_list(ifile, name) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a group. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_info\index{hdf5Info}} + +Find dataset information. + +\begin{verbatim} + +call hdf5_info(ifile, name, rank, type, nbyte, dimsr) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt rank} & {\it integer} & rank (number of dimensions) of dataset. \\ +\hline +{\tt type} & {\it integer} & type of dataset: =1 32-bit integer; + =2 32-bit real; =3 character data; + =4 64-bit real. \\ +\hline +{\tt nbyte} & {\it integer} & number of bytes in each component of the dataset. \\ +\hline +{\tt dimsr} & {\it integer(*)} & integer array containing the dimension of dataset. {\tt rank} values are provided. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_get\_dimensions\index{hdf5GetDimensions}} + +Find the rank (number of dimensions) of a dataset. + +\begin{verbatim} + +rank=hdf5_get_dimensions(ifile, name) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt rank} & {\it integer} & rank of the dataset. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_get\_shape\index{hdf5GetShape}} + +Find the shape (dimension array) of a dataset. + +\begin{verbatim} + +call hdf5_get_shape(ifile, name, dimsr) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt dimsr} & {\it integer(*)} & integer array containing the dimension of dataset. {\tt rank} values are provided. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_list\_datasets\index{hdf5ListDatasets}} + +Allocate a character array of the correct size and recover character daughter dataset names in a group. + +\begin{verbatim} + +call hdf5_list_datasets(ifile, name, dsets) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{4.5cm}|p{8.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt idata} & {\it character*1023(:),allocatable} & list of character names of each daughter dataset.\\ +\hline +\end{tabular} + +\vskip 0.5cm + +\noindent Example: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + character(len=100), allocatable :: list(:) + ... + call hdf5_list_datasets(ifile, '/', list) + write(*,*) 'dataset table of contents:' + do i = 1, size(list) + write(*,*) trim(list(i)) + enddo + deallocate(list) +\end{verbatim} + +\subsubsection{hdf5\_list\_groups\index{hdf5ListGroups}} + +Allocate a character array of the correct size and recover character daughter group names in a group. + +\begin{verbatim} + +call hdf5_list_groups(ifile, name, dsets) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{4.5cm}|p{8.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt idata} & {\it character*1023(:),allocatable} & list of character names of each daughter group.\\ +\hline +\end{tabular} + +\vskip 0.5cm + +\noindent Example: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + character(len=100), allocatable :: list(:) + ... + call hdf5_list_groups(ifile, '/', list) + write(*,*) 'group table of contents:' + do i = 1, size(list) + write(*,*) trim(list(i)) + enddo + deallocate(list) +\end{verbatim} + +\subsubsection{hdf5\_group\_exists\index{hdf5GroupExists}} + +Test for existence of a group. + +\begin{verbatim} + +ierr=hdf5_group_exists(ifile, name) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a group. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt ierr} & {\it logical} & existence flag: =.true. if the group exists. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Management of groups and datatypes} + +\subsubsection{hdf5\_create\_group\index{hdf5CreateGroup}} + +Create a group. + +\begin{verbatim} + +call hdf5_create_group(ifile, name) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of the group to create. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{hdf5\_delete\index{hdf5Delete}} + +Delete a group or a dataset. + +\begin{verbatim} + +call hdf5_delete(ifile, name) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of the group or dataset to delete. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{hdf5\_copy\index{hdf5Copy}} + +Copy a group or a dataset from one location to another. The source and destination need not be in the same file. + +\begin{verbatim} + +call hdf5_copy(ifile_s, name_s, ifile_d, name_d) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile\_s} & {\it type(c\_ptr)} & address of the HDF5 source file. \\ +\hline +{\tt name\_s} & {\it character*1023} & name of the source group or dataset to copy. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ifile\_d} & {\it type(c\_ptr)} & address of the HDF5 destination file. \\ +\hline +{\tt name\_d} & {\it character*1023} & name of the destination group or dataset to delete. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{hdf5\_read\_data\index{hdf5ReadData}} + +Allocate an array of the correct type and size and copy a dataset from HDF5 file into memory. + +\begin{verbatim} + +call hdf5_read_data(ifile, name, data) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt data} & {\it class(:),allocatable} & array. Note: if the array is replaced by a single integer, real or characcter variable, +this variable has not the allocatable status.\\ +\hline +\end{tabular} + +\vskip 0.5cm + +\noindent The generic {\it class(:),allocatable} data type is selected among the following options: + +\vskip 0.2cm +\begin{tabular}{|p{10.5cm}|} +\hline +{\tt integer :: data} \\ +{\tt integer, allocatable, dimension(:) :: data} \\ +{\tt integer, allocatable, dimension(:,:) :: data} \\ +{\tt real(4) :: data} \\ +{\tt real(4), allocatable, dimension(:) :: data} \\ +{\tt real(4), allocatable, dimension(:,:) :: data} \\ +{\tt real(4), allocatable, dimension(:,:,:) :: data} \\ +{\tt real(4), allocatable, dimension(:,:,:,:) :: data} \\ +{\tt real(8) :: data} \\ +{\tt real(8), allocatable, dimension(:) :: data} \\ +{\tt real(8), allocatable, dimension(:,:) :: data} \\ +{\tt real(8), allocatable, dimension(:,:,:) :: data} \\ +{\tt real(8), allocatable, dimension(:,:,:,:) :: data} \\ +{\tt character(len=*) :: data} \\ +{\tt character(len=*), allocatable, dimension(:) :: data} \\ +\hline +\end{tabular} + +\vskip 0.4cm +\goodbreak + +\noindent Example 1: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + integer :: ncalc + ... + call hdf5_read_data(ifile,"NCALS",ncalc) + write(*,*) 'ncalc=',ncalc +\end{verbatim} + +\vskip 0.3cm + +\noindent Example 2: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + character(len=8), allocatable, dimension(:) :: isoname + ... + call hdf5_read_data(ifile,"/explicit/ISONAME",isoname) + write(*,*) 'isotope names:' + do i = 1, size(isoname) + write(*,*) trim(isoname(i)) + enddo + deallocate(isoname) +\end{verbatim} + +\vskip 0.3cm + +\noindent Example 3: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + real(8), allocatable, dimension(:,:) :: yields_matrix + ... + call hdf5_read_data(ifile,"/physconst/FYIELDS",yields_matrix) + no_fiss=size(yields_matrix,1) + no_fp=size(yields_matrix,2) + write(*,*) 'no_fiss=',no_fiss,' no_fp=',no_fp + deallocate(yields_matrix) +\end{verbatim} + +\subsubsection{hdf5\_write\_data\index{hdf5WriteData}} + +Copy an array from memory into a HDF5 dataset. If dataset {\tt name} exists, it is replaced. + +\begin{verbatim} + +call hdf5_write_data(ifile, name, idata) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +{\tt data} & {\it class(*)} & array.\\ +\hline +\end{tabular} + +\vskip 0.5cm +\goodbreak + +\noindent The generic {\it class(*)} data type is selected among the following options: + +\vskip 0.2cm +\begin{tabular}{|p{8.5cm}|} +\hline +{\tt integer,intent(in) :: data} \\ +{\tt integer,dimension(:) :: data} \\ +{\tt integer,dimension(:,:) :: data} \\ +{\tt real(4) :: data} \\ +{\tt real(4),dimension(:) :: data} \\ +{\tt real(4),dimension(:,:) :: data} \\ +{\tt real(4),dimension(:,:,:) :: data} \\ +{\tt real(4),dimension(:,:,:,:) :: data} \\ +{\tt real(8) :: data} \\ +{\tt real(8),dimension(:) :: data} \\ +{\tt real(8),dimension(:,:) :: data} \\ +{\tt real(8),dimension(:,:,:) :: data} \\ +{\tt real(8),dimension(:,:,:,:) :: data} \\ +{\tt character(len=*) :: data} \\ +{\tt character(len=*), dimension(:) :: data} \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + integer, allocatable, dimension(:) :: nitmaV1 + ... + allocate(nitmaV1(10)) + nitmaV1(:10)=100 + call hdf5_write_data(ifile, 'my_dummy_record', nitmaV1) + deallocate(nitmaV1) +\end{verbatim} + +\clearpage + +\section {The ISO Fortran CLE-2000 API} + +\subsection {Management of Fortran files outside CLE-2000} + +The {\tt KDROPN} utility is a general system for managing Fortran files in a software application. + +\subsubsection{KDROPN\index{KDROPN}} + +Function used to open a file and allocate its unit number. Allocate a unit number to file +name. If unit is already opened, returns its address. Sequential (formatted +or not) and direct access (DA) files are permitted. + +\begin{verbatim} + +IFILE=KDROPN(CUNAME,IACTIO,IUTYPE,LRDA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt CUNAME} & {\it CHARACTER*(*)} & file name. If {\tt cuname}$=${\tt ' '}, use a default name. \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=0$: to allocate a new file; +$=1$: to access and modify an existing file; +$=2$: to access an existing file in {\tt read-only} mode. \\ +\hline +{\tt IUTYPE} & {\it INTEGER} & file type. +$=1$: (not used); +$=2$: sequential unformatted; +$=3$: sequential formatted; +$=4$: direct access (DA) unformatted file. \\ +\hline +{\tt LRDA} & {\it INTEGER} & number of words in a DA record (used if {\tt IUTYPE} $= 4$). \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IFILE} & {\it INTEGER} & unit number of the allocated file. Equal to the error code if the allocation failed. \\ +\hline +\end{tabular} + +\subsubsection{KDRCLS\index{KDRCLS}} + +Function used to close a file and release its unit number. + +\begin{verbatim} + +IER=KDRCLS(IFILE,IACTIO) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IFILE} & {\it INTEGER} & unit number of the allocated file (as returned by {\tt KDROPN}). \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=1$: to keep the file; +$=2$: to delete the file. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IER} & {\it INTEGER} & error code. Equal to zero if the close is successful. \\ +\hline +\end{tabular} + +\clearpage + +\subsection {Management of word-addressable (KDI) files outside CLE-2000} + +The {\tt KDIOP} utility is a general system for managing word-addressable (KDI) files in a software application. + +\subsubsection{KDIOP\index{KDIOP}} + +Function used to open a KDI file and allocate its header. + +\begin{verbatim} + +MY_FILE=KDIOP(CUNAME,IACTIO) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt CUNAME} & {\it CHARACTER*(*)} & file name. \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=0$: to allocate a new file; +$=1$: to access and modify an existing file; +$=2$: to access an existing file in {\tt read-only} mode. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt MY\_FILE} & {\it TYPE(C\_PTR)} & address of the allocated file. Equal to {\tt C\_NULL\_PTR} if the allocation failed. \\ +\hline +\end{tabular} + +\subsubsection{KDIGET\index{KDIGET}} + +Subroutine used to read a data array from a KDI file at offset {\tt IOFSET}. + +\begin{verbatim} + +CALL KDIGET(MY_FILE, IDATA, IOFSET, LENGTH) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt MY\_FILE} & {\it TYPE(C\_PTR)} & address of the allocated file (as returned by {\tt KDIOP}). \\ +\hline +{\tt IOFSET} & {\it INTEGER} & offset of the information in the KDI file. \\ +\hline +{\tt LENGTH} & {\it INTEGER} & length of the array of information, in unit of 32-bit words. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IDATA} & {\it INTEGER} & array of information. \\ +\hline +\end{tabular} + +\subsubsection{KDIPUT\index{KDIPUT}} + +Subroutine used to store a data array in a KDI file at offset {\tt IOFSET}. + +\begin{verbatim} + +CALL KDIPUT(MY_FILE, IDATA, IOFSET, LENGTH) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt MY\_FILE} & {\it TYPE(C\_PTR)} & address of the allocated file (as returned by {\tt KDIOP}). \\ +\hline +{\tt IDATA} & {\it INTEGER} & array of information. \\ +\hline +{\tt IOFSET} & {\it INTEGER} & offset of the information in the KDI file. \\ +\hline +{\tt LENGTH} & {\it INTEGER} & length of the array of information, in unit of 32-bit words. \\ +\hline +\end{tabular} + +\subsubsection{KDICL\index{KDICL}} + +Function used to close a KDI file. + +\begin{verbatim} + +IER=KDICL(MY_FILE,IACTIO) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt MY\_FILE} & {\it TYPE(C\_PTR)} & address of the allocated file (as returned by {\tt KDIOP}). \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=1$: to keep the file; +$=2$: to delete the file. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\goodbreak +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IER} & {\it INTEGER} & error code. Equal to zero if the close is successful. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection {Management of Fortran and KDI files used as CLE-2000 parameters} + +CLE-2000 allows a module of the application software to exchange information using LCM objects and files. If the +application software is programmed in Fortran, the CLE-2000 driver expects all these parameters to be {\tt TYPE(C\_PTR)} +variables. The ISO Fortran CLE-2000 API defines a collection of four functions to wrap the {\tt KDROPN} utility +in such a way that Fortran files are referred by {\tt TYPE(C\_PTR)} variables. + +\subsubsection{FILOPN\index{FILOPN}} + +Function used to open a file and allocate its unit number. Allocate a unit number to file +name. If unit is already opened, returns its address. Word addressable (KDI), sequential (formatted +or not) and direct access (DA) files are permitted. +This function is a GANLIB wrapper for the {\tt KDROPN} and {\tt KDIOP} utilities. + +\begin{verbatim} + +IFILE=FILOPN(CUNAME,IACTIO,IUTYPE,LRDA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt CUNAME} & {\it CHARACTER*(*)} & file name. If {\tt cuname}$=${\tt ' '}, use a default name. \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=0$: to allocate a new file; +$=1$: to access and modify an existing file; +$=2$: to access an existing file in {\tt read-only} mode. \\ +\hline +{\tt IUTYPE} & {\it INTEGER} & file type. +$=1$: KDI word addressable file; +$=2$: sequential unformatted; +$=3$: sequential formatted; +$=4$: direct access (DA) unformatted file. \\ +\hline +{\tt LRDA} & {\it INTEGER} & number of words in a DA record (used if {\tt IUTYPE} $= 4$). \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IFILE} & {\it TYPE(FIL\_file)} & handle to the allocated file. Equal to {\tt C\_NULL\_PTR} if the allocation failed. \\ +\hline +\end{tabular} + +\subsubsection{FILCLS\index{FILCLS}} + +Function used to close a file and release its unit number. +This function is a GANLIB wrapper for the {\tt KDRCLS} and {\tt KDICL} utilities. + +\begin{verbatim} + +IER=FILCLS(MY_FILE,IACTIO) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt MY\_FILE} & {\it TYPE(FIL\_file)} & handle to the allocated file (as returned by {\tt FILOPN}). \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=1$: to keep the file; +$=2$: to delete the file. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IER} & {\it INTEGER} & error code. Equal to zero if the close is successful. \\ +\hline +\end{tabular} + +\subsubsection{FILUNIT\index{FILUNIT}} + +Function used to recover the Fortran file unit number + +\begin{verbatim} + +IUNIT=FILUNIT(FILE_PT) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt FILE\_PT} & {\it TYPE(C\_PTR)} & address of the allocated file ({\tt c\_loc(MY\_FILE)}, as returned by {\tt FILOPN}). \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IUNIT} & {\it INTEGER} & file unit number. Equal to $-1$ in case of error. \\ +\hline +\end{tabular} + +\subsubsection{FILKDI\index{FILKDI}} + +Function used to recover the address of the KDI file. + +\begin{verbatim} + +KDI_PT=FILKDI(FILE_PT) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt FILE\_PT} & {\it TYPE(C\_PTR)} & address of the allocated file ({\tt c\_loc(MY\_FILE)}, as returned by {\tt FILOPN}). \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt KDI\_PT} & {\it TYPE(C\_PTR)} & address of the KDI file. Equal to {\tt C\_NULL\_PTR} if case of error. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection {The main entry point for CLE-2000} + +Function {\tt KERNEL} is a Fortran wrapper around function {\tt cle2000\_c()} to serve as the main entry point for CLE-2000. +Function {\tt KERNEL} is specialized to the case where the application software is executed in stand-alone mode. It is +therefore limited to the simple case where a CLE-2000 procedure has no parameters and no in-out CLE-2000 variables. +Moreover, the main CLE-2000 procedure is recovered from the standard unit (i.e., from unit 5) and is assumed to have a {\tt .x2m} +suffix. This limitation is making sense as no multi-physics system is currently programmed in Fortran. + +\subsubsection{KERNEL\index{KERNEL}} + +The general specification of function {\tt KERNEL} is + +\begin{verbatim} + +IER=KERNEL(DUMMOD,IPRINT) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt DUMMOD} & {\it EXTERNAL} & external C-interoperable Fortran-2003 function responsible for dispatching the execution among calculation modules. \\ +\hline +{\tt IPRINT} & {\it INTEGER} & print parameter (set to zero for no print). \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IER} & {\it INTEGER} & error code. Equal to zero if the execution of {\tt KERNEL} is successful. \\ +\hline +\end{tabular} + +\subsubsection{DUMMOD\index{DUMMOD}} + +Function {\tt KERNEL} has one of its arguments that is a developer-defined external function. Function {\tt DUMMOD} is a C-interoperable Fortran-2003 function responsible for dispatching the execution among calculation modules. An instance of function {\tt DUMMOD} is implemented for +each Fortran application software using the GANLIB. + +\vskip 0.08cm + +A stand-alone GANLIB application can be set by using the following implementation of {\tt GANMOD} +\begin{verbatim} +! +!----------------------------------------------------------------------- +! +!Purpose: +! Dispatch to a calculation module in GANLIB. ANSI-C interoperable. +! +!Copyright: +! Copyright (C) 2009 Ecole Polytechnique de Montreal +! This library is free software; you can redistribute it and/or +! modify it under the terms of the GNU Lesser General Public +! License as published by the Free Software Foundation; either +! version 2.1 of the License, or (at your option) any later version. +! +!Author(s): A. Hebert +! +!----------------------------------------------------------------------- +! +integer(c_int) function GANMOD(cmodul, nentry, hentry, ientry, jentry, & + kentry, hparam_c) bind(c) +! + use GANLIB + implicit none +!---- +! subroutine arguments +!---- + character(kind=c_char), dimension(*) :: cmodul + integer(c_int), value :: nentry + character(kind=c_char), dimension(13,*) :: hentry + integer(c_int), dimension(nentry) :: ientry, jentry + type(c_ptr), dimension(nentry) :: kentry + character(kind=c_char), dimension(73,*) :: hparam_c +!---- +! local variables +!---- + integer :: i, ier + character :: hmodul*12, hsmg*131, hparam*72 + character(len=12), allocatable :: hentry_f(:) + type(c_ptr) :: my_file + integer, external :: GANDRV +! + allocate(hentry_f(nentry)) + call STRFIL(hmodul, cmodul) + do i=1,nentry + call STRFIL(hentry_f(i), hentry(1,i)) + if(ientry(i) >= 3) then +! open a Fortran file. + call STRFIL(hparam, hparam_c(1,i)) + my_file=FILOPN(hparam,jentry(i),ientry(i)-1,0) + if(.not.c_associated(my_file)) then + write(hsmg,'(29hGANMOD: unable to open file '',a12,2h''.)') hentry_f(i) + call XABORT(hsmg) + endif + kentry(i)=my_file + endif + enddo +! ---------------------------------------------------------- + GANMOD=GANDRV(hmodul,nentry,hentry_f,ientry,jentry,kentry) +! ---------------------------------------------------------- + do i=1,nentry + if(ientry(i) >= 3) then +! close a Fortran file. + ier=FILCLS(kentry(i),1) + if(ier < 0) then + write(hsmg,'(30hGANMOD: unable to close file '',a12,2h''.)') hentry_f(i) + call XABORT(hsmg) + endif + endif + enddo + deallocate(hentry_f) + flush(6) + return +end function GANMOD +\end{verbatim} + +\noindent with function {\tt GANDRV} implemented as +\begin{verbatim} +integer function GANDRV(hmodul,nentry,hentry,ientry,jentry,kentry) +! +!----------------------------------------------------------------------- +! +!Purpose: +! standard utility operator driver for Ganlib. +! +!Copyright: +! Copyright (C) 2002 Ecole Polytechnique de Montreal +! This library is free software; you can redistribute it and/or +! modify it under the terms of the GNU Lesser General Public +! License as published by the Free Software Foundation; either +! version 2.1 of the License, or (at your option) any later version +! +!Author(s): A. Hebert +! +!Parameters: input/output +! hmodul name of the operator. +! nentry number of LCM objects or files used by the operator. +! hentry name of each LCM object or file. +! ientry type of each LCM object or file: +! =1 LCM memory object; =2 XSM file; =3 sequential binary file; +! =4 sequential ascii file. +! jentry access of each LCM object or file: +! =0 the LCM object or file is created; +! =1 the LCM object or file is open for modifications; +! =2 the LCM object or file is open in read-only mode. +! kentry LCM object address or file unit number. +! +!Parameters: output +! kdrstd completion flag (=0: operator hmodul exists; =1: does not exists). +! +!----------------------------------------------------------------------- +! +!---- +! subroutine arguments +!---- + use GANLIB + integer nentry + character hmodul*(*),hentry(nentry)*12 + integer ientry(nentry),jentry(nentry) + type(c_ptr) kentry(nentry) +! + GANDRV=0 + if(hmodul == 'EQU:' )then +! standard equality module. + call DRVEQU(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'GREP:') then +! standard grep module. + call DRVGRP(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'UTL:') then +! standard LCM/XSM utility module. + call DRVUTL(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'ADD:') then +! standard addition module. + call DRVADD(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'MPX:') then +! standard multiplication module. + call DRVMPX(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'STAT:') then +! standard compare module. + call DRVSTA(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'BACKUP:') then +! standard backup module. + call DRVBAC(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'RECOVER:') then +! standard recovery module. + call DRVREC(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'FIND0:') then +! standard module to find zero of a continuous function. + call DRV000(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'MSTR:') then +! manage user-defined structures. + call MSTR(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'MODUL1:') then +! user-defined module. + call DRVMO1(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'ABORT:') then +! requested abort. + call XABORT('GANDRV: requested abort.') + else + GANDRV=1 + endif + return +end function GANDRV +\end{verbatim} + +\vskip 0.8cm + +\subsection {The free-format input reader} + +Subroutines {\tt REDOPN}, {\tt REDGET}, {\tt REDPUT} and {\tt REDCLS} are Fortran wrappers around ANSI~C functions {\tt redopn\_c()}, {\tt redget\_c()}, {\tt redput\_c()} and {\tt redcls\_c()}. +Only {\tt REDGET} and {\tt REDPUT} are expected to be used in an application software. + +\subsubsection{REDOPN\index{REDOPN}} + +Subroutine {\tt REDOPN} is called to open the input reader. The general specification of function {\tt REDOPN} is + +\begin{verbatim} + +CALL REDOPN(IINP1,IOUT1,NREC) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2.5cm}|p{10.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IINP1} & {\it TYPE(C\_PTR)} & KDI object containing the CLE-2000 input data.\\ +\hline +{\tt IOUT1} & {\it INTEGER} & unit number of the sequential {\sc ascii} file used to write execution messages. Can be set to 6 for standard output. \\ +\hline +{\tt NREC} & {\it INTEGER} & record index where reading occurs. Can be set to zero at first call. Set to the value returned by {\tt REDCLS} at subsequent calls.\\ +\hline +\end{tabular} + +\subsubsection{REDGET\index{REDGET}} + +Subroutine {\tt REDGET} is called within modules of the application software to recover the module-specific input data. +The general specification of function {\tt REDGET} is + +\begin{verbatim} + +CALL REDGET(ITYP,NITMA,FLOTT,TEXT,DFLOT) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ITYP} & {\it INTEGER} & type of the CLE-2000 variable. A negative value indicates that the variable is to be computed by the application software and returned towards CLE-2000 using a call to {\tt redput\_c}. $=\pm 1$: integer type; +$=\pm 2$: real (single precision) type; +$=\pm 3$: string type; +$=\pm 4$: double precision type; +$=\pm 5$: logical type.\\ +\hline +{\tt NITMA} & {\it INTEGER} & integer input value when {\tt ITYP} $= 1$ or $= 5$; number of characters when {\tt ITYP} $= 3$. \\ +\hline +{\tt FLOTT} & {\it REAL} & real input value when {\tt ITYP} $= 2$. \\ +\hline +{\tt TEXT} & {\it CHARACTER*(*)} & character string input value when {\tt ITYP} $= 3$. \\ +\hline +{\tt DFLOT} & {\it DOUBLE PRECISION} & double precision input value when {\tt ITYP} $= 4$. \\ +\hline +\end{tabular} + +\subsubsection{REDPUT\index{REDPUT}} + +Subroutine {\tt REDPUT} is called within modules of the application software to make information computed by the module available as CLE-2000 variables to the CLE-2000 procedure. +The application software must first call {\tt REDGET} and obtain a negative value of {\tt ITYP}. A call to {\tt REDPUT} is next performed with its first parameter set to +$-${\tt ITYP} (now, a positive value) and with the corresponding value of the parameter. +The general specification of function {\tt REDPUT} is + +\begin{verbatim} + +CALL REDPUT(ITYP,NITMA,FLOTT,TEXT,DFLOT) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ITYP} & {\it INTEGER} & type of the CLE-2000 variable. $=1$: integer type; +$=2$: real (single precision) type; +$=3$: string type; +$=4$: double precision type; +$=5$: logical type.\\ +\hline +{\tt NITMA} & {\it INTEGER} & integer output value when {\tt ITYP} $= 1$ or $= 5$; number of characters when {\tt ITYP} $= 3$. \\ +\hline +{\tt FLOTT} & {\it REAL} & real output value when {\tt ITYP} $= 2$. \\ +\hline +{\tt TEXT} & {\it CHARACTER*(*)} & character string output value when {\tt ITYP} $= 3$. \\ +\hline +{\tt DFLOT} & {\it DOUBLE PRECISION} & double precision output value when {\tt ITYP} $= 4$. \\ +\hline +\end{tabular} + +\subsubsection{REDCLS\index{REDCLS}} + +Subroutine {\tt REDCLS} is called to close the input reader. +The general specification of function {\tt REDCLS} is + +\begin{verbatim} + +CALL REDCLS(IINP1,IOUT1,NREC) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2.5cm}|p{10.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt IINP1} & {\it TYPE(C\_PTR)} & KDI object containing the CLE-2000 input data.\\ +\hline +{\tt IOUT1} & {\it INTEGER} & unit number of the sequential {\sc ascii} file used to write execution messages. \\ +\hline +{\tt NREC} & {\it INTEGER} & record index where reading occurs. \\ +\hline +\end{tabular} + +\section{The Python3 {\sc lcm} API} + +The Python3 {\sc lcm} API, or Py{\sc lcm} API, is a component of the PyGan library, available in the Version5 distribution. +PyGan is a Python3 library made of three classes, as depicted in Fig.~\ref{fig:PyGan}, so as to encapsulate Ganlib5 capabilities. +The extension module {\tt lcm} contains a class providing {\sl in-out} support of {\sl hererogeneous lists} and +{\sl associative tables}, as implemented in the {\sc lcm} API of Sect.~\ref{sect:lcmapiC}, to Python3 users. + +\begin{figure}[htbp] +\begin{center} +\epsfxsize=2.4cm +\centerline{ \epsffile{cle2000_hierarchy_uml.eps}} +\parbox{12cm}{\caption{The PyGan class model.}\label{fig:PyGan}} +\end{center} +\end{figure} + +\vskip 0.2cm + +{\sl Associative tables} in Ganlib5 are similar to Python dictionaries and can be handled +as such in the Python3 dataset. Each element of an associative table + is associated with a string. +{\sl Hererogeneous lists} in Ganlib5 are similar to Python lists and therefore are an ordered set +of elements. Each list element is identified by an index and contains +an information block. As for the information blocks, they are either +strings, or NumPy arrays.\opcite {npython} +A PyLCM object can physically be, either in memory or located on a {\sc xsm} file. + +\vskip 0.2cm + +{\sl LCM Python bindings} allow Python to use the API +{\sc lcm} transparently. Associative tables and heterogeneous lists are +represented as Python dictionaries and Python lists, respectively. The +information blocks in integer and floating point {\sc lcm} or {\sc xsm} arrays +are automatically transformed into {\sl numpy} arrays. +Methods of the {\sc lcm} API have been adapted to manage the use of files. + +\vskip 0.2cm + +The compilation and link edition of the API require the definition of a UNIX environment variable {\tt FORTRANPATH} pointing towards the {\tt libgfortran.a} library +compatible with your operating system. On a OSX operating system, this variable may be set as +\begin{verbatim} +export FORTRANPATH=/usr/local/lib/gcc/11/ # contains libgfortran.a +\end{verbatim} +\noindent On a Linux {\tt x86\_64} operating system, the environment variable is set as +\begin{verbatim} +export FORTRANPATH=/usr/lib/gcc/x86\_64-redhat-linux/4.8.5/ # contains libgfortran.so +\end{verbatim} +\noindent On a Linux {\tt aarm} operating system, the environment variable is set as +\begin{verbatim} +export FORTRANPATH="/usr/lib/gcc/aarch64-linux-gnu/9/" # contains libgfortran.so +\end{verbatim} + +\vskip 0.8cm + +\subsection{Structures} + +\begin{description} +\item[Associative tables] An associative table is equivalent to a Python dictionary. +Each element of a table is an association between a string of 12 +characters and an information block (scalar value or vector +of a given type). Associative tables can contain lists or other tables +associative and thus form a tree structure. + +\item[Heterogeneous lists] A list is an ordered set of elements of heterogeneous types. Each element is +accessed by an integer index and contains an information block. +Lists can contain scalar values or elementary information blocks, +as written in the next section. Lists can also contain +child lists or other associative tables. + +\item[Elementary information blocks] An elementary information block constitutes a set of values whose Dragon5/Donjon5 module +needs to perform the calculation. Unlike tables or lists +which only allow you to order information, the elementary information block is the useful data +to be used in a calculation. A block of information is either strings of characters, +either numerical arrays (array) with one dimension (similar to {\sl numpy} arrays). +The elementary blocks of information belong to one of the following types: + +\begin{tabular} {| p {3.0cm} | p {11.5cm} |} +\hline +Int array & An item of the associative table can correspond to an array of +32-bit integers (type~{\tt l} from NumPy).\\ +Float32 array & An item of the associative table can correspond to an array of +32-bit reals (type~{\tt f} from NumPy).\\ +Character array & An item of the associative table can correspond to an array of +of characters (array of type {\tt Char} from Python).\\ +Float64 array & An item of the associative table can correspond to an array of +64-bit reals (type~{\tt d} from NumPy) \\ +Logical32 array & An item of the associative table can correspond to an array of +32-bit integers (type~{\tt i} from NumPy containing 1/0 to denote true/false).\\ +Complex32 array & An associative table item can correspond to an array of of 64-bit complex variables (type~{\tt F} from NumPy).\\ +\hline +\end{tabular} + +\end{description} + +\vskip 0.8cm + +\subsection{LCM object Python API} \label {sect: APIP} + +The {\tt lcm} module, accessible from Python3, is imported by the command +\begin{verbatim} +import lcm +\end{verbatim} +It has one constructor: {\tt lcm.new()}, used to create an {\sl object instance} {\tt o}. + +\subsubsection{Attribute Variables \index {attribute variables}} + +A PyLCM object {\tt o} contains six attribute variables. The first five are read-only; {\tt o.\_impx} has read-write access. + +\begin {description} +\item [{\tt o.\_name}] Python (len=72) name of the PyLCM object containing the root +\item [{\tt o.\_directory}] Name (len=12) of the current directory. $=$ {\tt '/'} for the +root directory. This attribute variable is undefined for +lists and for files created by {\tt lcm.file()}. +\item [{\tt o.\_long}] $ = - 1 $: associative table; $ \ge 1 $: heterogeneous list of length {\tt o.\_long}. +\item [{\tt o.\_type}] Type of the object. $ = 1 $: LCM object in memory +(similar to a Python dictionary); $ = 2 $: persistent LCM object (of type {\sc xsm} file); +$ = 3 $: binary sequential file; $ = 4 $: sequential {\sc ascii} file; $=$ 5: +direct access file; $=$ 6: HDF5 file. +\item [{\tt o.\_access}] Access mode of the object. $ = 0 $: closed object (i.e., not +accessible); $ = 1 $: object in modification mode; $ = 2 $: object in read mode +(read-only). +\item [{\tt o.\_impx}] Edition index for the object ($=0$ for minimum printouts). +\end {description} + +\subsubsection{lcm.new()} + +This method is used to create a PyLCM object made up of an associative table or of a file. A {\sc lcm} object is a {\sl memory-resident} structure +implemented with the {\sc lcm} API of Sect.~\ref{sect:lcmapiC}. A {\sc xsm} object store similar information in a direct access file and is implemented with the same API. This object occupies very little memory space and can be +used to store very large objects whose maximum dimension is not +limited only by the available disk space. In general, we can always replace +a ``memory'' PyLCM object by a persistent PyLCM object (at the cost of a certain +increase in CPU time). A persistent PyLCM object can +also be used as archiving medium for a ``memory'' PyLCM object. + +\vskip 0.2cm + +This {\tt new} constructor is used to perform the following actions: +\begin{itemize} +\item for creating a new empty PyLCM object; +\item for retrieving a file made by a Dragon5/Donjon5 module or to transfer a file to a Dragon5/Donjon5 module. At the end of this call, the variable +attribute {\tt o.\_access} is equal to $1$ or $2$. The PyLCM object thus created does not have +the {\tt \_directory} and {\tt \_long} attributes. It does not own the {\tt keys()}, +{\tt lib()}, {\tt rep()}, {\tt lis()} and {\tt copy()} methods; +\item to create a PyLCM object containing a memory or persistent LCM object from the serialized information contained in a sequential file (import action); +\item to serialize the content of an existing PyLCM object containing a memory or persistent LCM object into a sequential file (export action); +\item to perform a deep copy of an existing PyLCM object containing a memory or persistent LCM object into another. +\end{itemize} + +\begin{verbatim} +o = lcm.new(type, [name], [iact], [pyobj], [lrda], [impx]) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt type} & {\it string} & type of the PyLCM object that will be created. $=$ {\tt LCM} +object {\sc lcm} in memory; $=$ {\tt XSM} persistent object of type {\sc xsm}; $=$ {\tt BINARY} +sequential binary file; $=$ {\tt ASCII}; sequential {\sc ascii} file ; +$=$ {\tt DA}; direct access file; $=$ {\tt HDF5}; HDF5 file; $=$ {\tt LCM\_IMP} +object {\sc lcm} in memory built from the file "{\tt \_}"$ + $ {\tt name} containing +a serialized PyLCM object or from a deep copy of object {\tt pyobj}; $=$ {\tt XSM\_INP} persistent object of type {\sc xsm} built +from the file "{\tt \_}"$ + $ {\tt name} containing a serialized PyLCM object or from a deep copy of object {\tt pyobj}. The serialized +PyLCM object is assumed to be a sequential binary file if its extension is {\tt .bin}; otherwise, it is assumed to be a sequential {\sc ascii} file.\\ +{\tt name} & {\it string} & name (len=72) of the PyLCM object that will be created. By default, a name is generated automatically +from the address of the PyLCM object or from the name of object {\tt pyobj}. \\ +{\tt iact} & {\it int} &access mode. $=0$: a new object is created (default); $=1$: existing object content open in read/write mode + $=$2: existing object content open in read-only mode. \\ +{\tt pyobj} & {\it LCM} & existing PyLCM object containing a memory or persistent LCM object. \\ +{\tt lrda} & {\it int} & number of words in a direct-access record +(only used if {\tt type} $ = $ {\tt DA}). By default, {\tt lrda} $= 128$. \\ +{\tt impx} & {\it int} & edition index for the object ($=0$ for minimum printouts). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o} & {\it LCM} & PyLCM object created. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.keys()} + +This method allows you to create a Python list containing the key names of the associative table +(memory or {\sc xsm} file). This method is not available for FILE objects. + +\begin{verbatim} +o2 = o.keys() +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o2} & {\it list} & Python list containing the keys of the associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.lib()} + +This method allows you to print the table-of-contents of a PyLCM object (memory or {\sc xsm} file). This method is not available for +FILE objects. + +\vskip 0.8cm + +\subsubsection{o.val()} + +This method allows you to validate the content of a PyLCM object (memory or {\sc xsm} file). This method is not available for +FILE objects. + +\vskip 0.8cm + +\subsubsection{o.close()} + +This method allows you to close a PyLCM object (memory or {\sc xsm} file) without erasing its contents. This method is not available for +FILE objects. + +\vskip 0.8cm + +\subsubsection{o.erase()} + +This method allows you to erase the contents of a PyLCM object (memory or {\sc xsm} file). + +\vskip 0.8cm + +\subsubsection{o.len()} + +This method returns the lenght of the active directory in a PyLCM object (memory or {\sc xsm} file). This method is not available for FILE objects. + +\begin{verbatim} +length = o.len() +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt lenght} & {\it int} & length of the heterogeneous list; equal to $-1$ if the active directory is an associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.rep()} + +This method allows you to create an daughter associative table in the associative table (dictionary) or the list {\tt o}. This method is not available for +FILE objects. + +\begin{verbatim} +[o2 =] o.rep({key | iset}) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameters:} \\ +\hline +{\tt key} & {\it string} & if {\tt o} is a table; compulsory string (len $=12$) corresponding to the key of the daughter associative table \\ +\hline +{\tt iset} & {\it int} & if {\tt o} is a list; index in the list {\tt o} where we find +the daughter associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o2} & {\it LCM} & daughter associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.lis()} + +This method allows you to create a nested child list in the associative table (dictionary) or +the {\tt o} list. The first element of the child list is located at index [0]. +This method is not available for FILE objects. + +\begin{verbatim} +[o2 =] o.lis({key | iset}, ilong) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameters:} \\ +\hline +{\tt key} & {\it string} & if {\tt o} is a table; compulsory string (len $=12$) corresponding to the key +from the daughter list. \\ +\hline +{\tt iset} & {\it int} & if {\tt o} is a list; index in the list {\tt o} where we find the list daughter list. \\ +\hline +{\tt ilong} & {\it int} & positive integer (required) which gives the length of the list daughter list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o2} & {\it LCM} & daughter list. \\ +\hline +\end{tabular} + +\section{The Python3 CLE-2000 API} + +The Python3 CLE-2000 API is a component of the PyGAN library, available in the Version5 distribution. It contains two extension modules, each of them containing a class: {\sc lifo} and {\sc cle2000}, both implemented using the CLE-2000 API of Sect.~\ref{sect:cle2000apiC}. + +\vskip 0.8cm + +\subsection{The lifo class} + +The {\sc lifo} extension module allows {\sl in-out} access to the {\sc lifo} objects ("last in first out" stack) used by CLE-2000. + +The {\tt lifo} module, accessible from Python3, is imported by the command +\begin{verbatim} +import lifo +\end{verbatim} +It has one constructor: {\tt lifo.new()}, used to create an {\sl object instance} {\tt o}. + +\subsubsection{Attribute Variables \index {attribute variables}} + +A {\sc lifo} object {\tt o} contains one read-write attribute variable: + +\begin {description} +\item [{\tt o.\_impx}] Edition index for the object ($=0$ for minimum printouts). +\end {description} + +\subsubsection{lifo.new()} + +This method is used to create a {\sc lifo} object made up of an empty stack. A {\sc lifo} stack is a memory-resident structure +implemented with the CLE-2000 API of Sect.~\ref{sect:cle2000apiC}. + +\begin{verbatim} +o = lifo.new([impx]) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt impx} & {\it int} & edition index for the object ($=0$ for minimum printouts). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o} & {\it LIFO} & {\sc lifo} object created. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.lib()} + +This method allows you to print the table-of-contents of a {\sc lifo} object. + +\begin{verbatim} +o.lib() +\end{verbatim} + +\vskip 0.8cm + +\subsubsection{o.push()} + +This method is used to push a new node into the {\sc lifo} object. The new node is a Python3 object of specific type. Empty nodes have defined names and types but no assigned value. The number of nodes stored in the {\sc lifo} object is increased by one. + +\begin{verbatim} +o.push(data) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt data} & {\it object} & Python3 object to push in the stack. The following Python3 types are allowed: integer variable (int), character string (str), double-precision variable (float), +logical variable (bool), PyLCM object, empty variable of type int, str, float or bool.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.pushEmpty()} + +This method is used to push an empty node into the {\sc lifo} object. Empty nodes have defined names and types but no assigned value. The number of nodes stored in the {\sc lifo} object is increased by one. + +\begin{verbatim} +o.pushEmpty(name, [type]) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt name} & {\it string} & character (len=72) name of the empty node. Used to name the PyLCM object. \\ +{\tt type} & {\it string} & character type of the empty object to push in the stack. The following character types are allowed: ``{\tt I}'': integer variable, ``{\tt S}'': character string, ``{\tt D}'': double precision variable, ``{\tt B}'': +logical variable, ``{\tt LCM}'': PyLCM object of type {\sc lcm}, ``{\tt XSM}'': PyLCM object of type {\sc xsm}, ``{\tt BINARY}'': PyLCM object containing a sequential binary file, ``{\tt ASCII}'': PyLCM object containing a sqquential {\sc ascii} file, +``{\tt DA}'': PyLCM object containing a direct access file, ``{\tt HDF5}'': PyLCM object containing a HDF5 file. By default, {\tt type} $=$ ``{\tt LCM}''.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.pop()} + +This method is used to pop a node from the {\sc lifo} object. The number of nodes stored in the {\sc lifo} object is decreased by one. + +\begin{verbatim} +[obj =] o.pop() +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt obj} & {\it object} & Python3 object contained in the node. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.node()} + +This method is used to recover a node from the {\sc lifo} object without changing its content. The number of nodes stored in the {\sc lifo} object is left unchanged. + +\begin{verbatim} +obj = o.node({ ipos | name }) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt ipos} & {\it int} & position of the node in the stack (the first node is at position 0). \\ +{\tt name} & {\it string} & name (len=72) of the node in the stack. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt obj} & {\it object} & Python3 object contained in the node. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.getMax()} + +This method returns the number of nodes in a {\sc lifo} object. + +\begin{verbatim} +length = o.getMax() +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt lenght} & {\it int} & number of nodes in the {\sc lifo} object.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.OSname()} + +This method returns the name of a node. + +\begin{verbatim} +name = o.OSname(ipos) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt ipos} & {\it int} & position of the node in the stack (the first node is at position 0). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt name} & {\it string} & name (len=72) of the node.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{The cle2000 class} + +The {\sc cle2000} extension module allows to encapsulate Ganlib5, Trivac5, Dragon5 or Donjon5 {\sl and} to execute a CLE-2000 procedure, itself calling modules of these codes or sub-CLE-2000 procedures. This extension module is based on the CLE-2000 API of Sect.~\ref{sect:cle2000apiC}. + +The {\tt cle2000} module, accessible from Python3, is imported by the command +\begin{verbatim} +import cle2000 +\end{verbatim} +It has one constructor: {\tt cle2000.new()}, used to create an {\sl object instance} {\tt o}. + +\subsubsection{Attribute Variables} + +A {\sc cle2000} object {\tt o} contains one read-write attribute variable: + +\begin {description} +\item [{\tt o.\_impx}] Edition index for the object ($=0$ for minimum printouts). +\end {description} + +\subsubsection{cle2000.new()} + +This method is used to create a {\sc cle2000} object including an {\tt exec()} method for executing a CLE-2000 specific procedure. + +\begin{verbatim} +o = cle2000.new(procname, olifo, [impx]) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt procname} & {\it string} & name (len=12) of the CLE-2000 procedure. The OS filename of the procedure is {\tt procname} $+$ ``{\tt .c2m}'' \\ +{\tt olifo} & {\it LIFO} &{\sc lifo} object containing the procedure parameters. The {\sc lifo} object can be empty at construction time and can be filled before the call to the {\tt exec()} method.\\ +{\tt impx} & {\it int} & edition index for the object ($=0$ for minimum printouts). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o} & {\it CLE2000} & {\sc cle2000} object created. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.exec()} + +This method execute the procedure. + +\begin{verbatim} +o.exec() +\end{verbatim} + +\vskip 0.8cm + +\subsubsection{o.getLifo()} + +This method returns the {\sl lifo} stack containing the procedure parameters. + +\begin{verbatim} +olifo = o.getLifo() +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt olifo} & {\it LIFO} & {\sc lifo} object. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.putLifo()} + +This method put a new {\sc lifo} stack in the procedure. + +\begin{verbatim} +o.putLifo(olifo) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt olifo} & {\it LIFO} & {\sc lifo} object. \\ +\hline +\end{tabular} diff --git a/doc/IGE332/cle2000_hierarchy_uml.eps b/doc/IGE332/cle2000_hierarchy_uml.eps Binary files differnew file mode 100644 index 0000000..0b099bc --- /dev/null +++ b/doc/IGE332/cle2000_hierarchy_uml.eps diff --git a/doc/IGE332/install b/doc/IGE332/install new file mode 100755 index 0000000..57e899e --- /dev/null +++ b/doc/IGE332/install @@ -0,0 +1,45 @@ +#!/bin/csh +# +# author : A. Hebert +# use : install +# +chmod 755 . +if (-e /usr/local/common/TeX.csh) then + source /usr/local/common/TeX.csh +endif +# +if (-e $1.tex) then + set nom_fich = $1 +else + set nom_fich = `basename $PWD` +endif +echo "begin typesetting file" $nom_fich.tex +latex $nom_fich.tex +echo "first typesetting completed" +if ( -f $nom_fich.idx ) then + set header = $nom_fich + set core = ` echo $nom_fich | sed -e's/header_//' ` + cp $header.idx header_tmp.idx + makeindex header_tmp.idx + if ( -f header_tmp.tex ) /bin/rm header_tmp.tex + if ( -f tmp.tex ) /bin/rm tmp.tex + cp $header.tex header_tmp.tex + cp $core.tex tmp.tex + latex header_tmp.tex > /dev/null + latex header_tmp.tex > /dev/null + latex header_tmp.tex > /dev/null + dvips -f header_tmp.dvi -o header_tmp.ps + mv header_tmp.ps $nom_fich.ps +else + dvips -f $nom_fich.dvi -o $nom_fich.ps +endif +/bin/rm header_tmp.* tmp.tex +/bin/rm *.aux +echo "create pdf file" $nom_fich.pdf +ps2pdf $nom_fich.ps +echo "pdf file produced" +open $nom_fich.pdf +/bin/rm $nom_fich.dvi $nom_fich.ps $nom_fich.idx $nom_fich.log +/bin/rm $nom_fich.toc $nom_fich.out +/bin/rm *.[cx]2m +exit diff --git a/doc/IGE332/multiphysics.eps b/doc/IGE332/multiphysics.eps new file mode 100644 index 0000000..abad562 --- /dev/null +++ b/doc/IGE332/multiphysics.eps @@ -0,0 +1,5487 @@ +%!PS-Adobe-3.1 EPSF-3.0 +%ADO_DSC_Encoding: MacOS Roman +%%Title: multiphysics.eps +%%Creator: Adobe Illustrator(R) 13.0 +%%For: Alain Hebert +%%CreationDate: 6/16/09 +%%BoundingBox: 0 0 424 275 +%%HiResBoundingBox: 0 0 424 275 +%%CropBox: 0 0 424 275 +%%LanguageLevel: 2 +%%DocumentData: Clean7Bit +%ADOBeginClientInjection: DocumentHeader "AI11EPS" +%%AI8_CreatorVersion: 13.0.2
%AI9_PrintingDataBegin
%ADO_BuildNumber: Adobe Illustrator(R) 13.0.2 x434 R agm 4.4379 ct 5.1039
%ADO_ContainsXMP: MainFirst
%AI7_Thumbnail: 128 84 8
%%BeginData: 8044 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C457DA8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A8
%84A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8
%A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A8
%84A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8
%A8A884A8A8A884A8A8A87D7EFD7EFFA8A8FD7EFFA87DFD7EFFA8A8FD7EFF
%A87DFD57FFA8FFA8A884A884A8A8FD1EFFA8A8FD54FFA8A87DFD04A8FFA8
%FFA8A884A87DFD1BFF7D7DFD51FFA8847DA8A8FD0BFFA8A87DA87DFD18FF
%A8A8FD50FF7DA8A8FD12FFA97DA8FD16FF847DFD4EFFA87DFD17FFA884A8
%FD14FFA8A8FD4CFFA884A8FD1AFFA87DFD13FFA87DFD0DFF52FF527DA87D
%A8A8527D7EFF527D7DA87DA87D7D52A87D7D7DA852A8FF7DA87D537D527D
%7DFF7D7D52FF7D7E527D7D7D527D7DA8A8FD09FFA87DA8FD1CFFA87DFD12
%FFA8A8FD0DFF527D2752A82EA8FF7D84537D527D52527D7D527D7D7D527D
%FF7D537DFF277D527D525252A8FF5253FF7D527D7DA8527DFF275252FD09
%FFA8A8FD20FF7DFD11FFA87DFD0DFF5252527D527D52A87DA852A852FF53
%7D53A87DA8527D527D7D7D527D7D7D5259FF7D7DA852A8527D7D7D527D52
%A852FD047D52A8FD07FF84A8FD0EFFA8FFA8A8A8FFAFFD0DFF59FD10FFA8
%A8FD13FFA8A8FD0CFFAFFFFFA8FD09FFA9FFFFA8A8FD09FFA8AFFD0AFFA8
%7EFD0CFF7EA8A8A884FFA8A87DA87EA8FD0CFF7DFD0FFF7D7DFD47FFA87D
%FD0AFFA8A87DA8A8FD09FF7E7E7DFD0AFFA87DFD0EFFA8A8FD47FFA8A8FD
%09FFA8A8A8FD0EFFA87DFD0AFFA8A8FD0DFF847DFD46FFA87DFD09FF7DA8
%FD12FF7DA8FD09FF7EA8FD0CFFA8A8FD46FF7DFD09FF7DFD15FF7EA8FD08
%FFA8A8FD0CFFA87DFD45FF7DA8FD08FF7DA8FD16FF7DA8FD08FF7DA9FD0B
%FFA8A8FD45FFA8FD08FF7DA8FD18FF7DFD09FFA8FD0BFFA87DFD44FFA87D
%FD07FFA8A8FD1AFF7DFD08FFA8A8FD0AFFA8A8FD44FF7EFD08FF84FD1BFF
%A87DFD07FFA8A8FD0AFF7D7DFD43FFA8A8FD07FFA8A8FD1CFF7DA8FD07FF
%7DFD0AFFA8A8FD44FFA8FD07FF7DFD06FFA8A8FF7DFFFFFFA8A8A8FFA8FF
%7DA8FFA8A8FFA8FFFFFFA8A8FD07FFA8FD0AFF847DFD43FF7DFD07FFA8A8
%FD04FF277D527D525227A8A8527DA8A8527D527D527D7D275252FFFFFF7D
%FD07FF7DFD0AFFA8A8FD43FFA8A8FD06FFA8A8FFFFFF7D525252A8FD047D
%A827A8A87D277D7DA827A87D525252FFFFFFA8A8FD06FFA8A8FD09FFA87D
%FD43FF7DFD07FF7DFD04FFA8A87DA8FF7DFFA87D7DA87D7D7DA87DA8A8A8
%7D7D7DA87DFFFFFF7DA8FD06FFA8A8FD09FFA8A8FD43FFA8FD07FFA8A8FD
%1FFFA8FD07FFA8FD09FFA87DFD23FFA8FFA8FFA8FD1BFF7EFD07FF7EFD04
%FF7D7DFF53FD047D527DA87DA87DA8FD057DFFFFA8FD04FFA8A8FD06FFA8
%A8FD09FFA8A8FD1EFFA8FFA8A884FD07A87DFD17FFA8A8FD07FFA8FD04FF
%7D7D52A87D5252FF52A8FD05527D52535284FFFF52FD05FFA8FD07FFA8FD
%09FF7D7DFD1BFFA8A87D847DFFA8FD07FFA8A87DA87DA8A8FD13FF7DFD07
%FF7DFFFFFFA87D527D537D52A8A87DFF7D5252527D277E525252FFFF7DA8
%FFFFFFA8A8FD06FFA8A8FD09FFA8A8FD1AFFA8A8A8FD11FFA8A8A8FD12FF
%A8FD07FFA8A8FFFFFFA9FFFFFFA9FD0DFFA8A9FD07FFA9A8FD07FFA8FD09
%FF847DFD18FFA87DA8FD15FFA87DA8FD10FF7DFD07FF7DFD1FFF7DFD07FF
%A8A8FD09FFA8A8FD17FFA87DFD19FF7EA8FD0FFFA8A8FD07FFA8FD1EFFA8
%A8FD06FFA8A8FD09FFA87DFD15FFA87DA8FD1BFFA87DA8FD0DFFA8A8FD06
%FFA8A8FD1EFF7DFD07FF7DFD0AFFA8A8FD14FFA8A8FD1FFFA8A8FD0DFF84
%FD07FF7DFD1DFFA8A9FD07FFA8FD0AFFA87DFD13FFA87DFD10FFA8FD10FF
%A8A8FD0BFFAFA8FD07FFA87DFD1CFFA8FD08FF7DFD0AFFA8A8FD12FFA8A8
%FD0CFFA8A87DA8A8A87EFD04A8FD0CFFA8A8FD0BFF7EFD08FFA8A8FD1AFF
%A8A8FD07FF84FD0BFF7D7DFD11FFA87DA8FD0AFFA87DA8A8FFA8FFFFFFA8
%FFA8A87DA8FD0AFFA87DA8FD0AFFA87DFD07FFA87DFD1AFF7DFD08FF7DA8
%FD0AFFA8A8FD11FFA8A8FD09FFA8A87EFD0DFFA8A8A8FD09FFA87EFD0BFF
%A8FD08FFA8A8FD18FF7DFD08FFA8A8FD0BFF847DFD10FFA87EFD09FF7DA8
%A8FD0FFFA8847DFD09FF7EA8FD0AFFA8A8FD08FF7DA8FD16FF7DFD09FF7D
%FD0CFFA8A8FD10FF7DFD09FF7DA8FD13FFA87DFD09FF7DFD0BFF7DFD09FF
%7DA8FD14FF7DA8FD08FFA8A8FD0CFFA87DFD0FFF7DA8FD08FF7DA8FD15FF
%A87DFD08FFA87DFD0AFFA87DFD09FF7D7DA8FD10FFA87DFD09FFA87DFD0D
%FFA8A8FD0FFFA8FD08FF7DA8FD17FFA87DFD08FFA8A8FD0AFFA8A8FD09FF
%A8A8A8FD0DFFA8A87DFD0AFFA8A8FD0DFFA87DFD0EFFA8A8FD07FFA8A8FD
%19FFA8A8FD07FFA8A8FD0BFF7DA8FD0AFFA87DA8A8FFA8FD05FFA8A87DA8
%A8FD0AFFA87DFD0EFFA8A8FD0EFF7DFD08FFA8FD1BFFA8FD08FF7DFD0CFF
%7DA8FD0BFFA8A87EA884A8A8A87EA8A8FD0CFFA87DFD0FFF7D7DFD0DFFA8
%A8FD07FFA8A8FD1BFF7DA8FD07FFA8A8FD0BFFA87DA8FD0FFFA8FFA8FD0E
%FFA87DFD10FFA8A8FD0DFFA8A8FD07FF7DFD1DFF7DFD07FFA8A8FD0CFFA8
%84FD1FFFA87DFD11FF847DFD0DFF7DFD07FFA8A8FFFFFFAFFFA8A8A87DFF
%A8FFA8A8A8FFA8AF7DFD04A8FFA8FD04FFA8A8FD07FF7DFD0DFFA87DA8FD
%07FFA87D7DFF7DA87DA859FFA87D52A8FD07FF7E7DFD12FFA8A8FD0CFFA8
%A8FD07FFA8A8FFFFFF52A8527D525252A8A8527DA8A85284537D527D7E52
%5252FFFFFFA8A8FD07FFA8FD0FFFA87DFD06FFFD047D527D525252A8A827
%5959FD05FFA8A8A8FD13FFA87DFD0CFFAF7DFD07FF7DFFFFFF7D5252527D
%52597D59A827A8A859277D52A827A87D522852A8FFFFFF7DFD07FF7DFD10
%FFA87DA8A8FFFFFF7D7DFD04527D52527D7D52527DFD04FF7D7DA8FD14FF
%A8A8FD0CFFA8A8FD06FFA8A8FFFFFFA8A884A8FFA8FFA87D7DA87DA87EFF
%7DA8A8A87DA8A8A87DFD04FFA8A9FD06FFA8A9FD11FFA8A8A8FFFFFFA8FD
%07FFA8FD05FFA8A87DFD17FFA87DFD0CFFA87EFD07FF7DFD1FFF7DFD07FF
%7DFD14FFA87DA87EFFAFFD09FFA8A87DA8A8FD18FFA8A8FD0CFFA8A8FD06
%FFA8A8FFFFFF7E7DA97D84FD057DA87DA87DA8A8FD047DFFA87DA8FD04FF
%A8A8FD06FFA8A8FD16FFA87DFD07A87EA884A8A8FD1BFF7D7DFD0CFFA8A8
%FD07FF7DFFFFFF535227A87D2752A852A8FD0452277D5252527DFFA8527D
%FD04FF7DFD07FFA8A8FD1AFFA8FFA8FFA8FFA8FD1EFFA8A8FD0CFFA8A8FD
%06FFA8A8FFFFFF7D527D7D7D52A8FF7DFF7D5252527D52A859597DFF8452
%A8FD04FFA8A8FD06FFA8A8FD3FFF847DFD0DFF7DFD07FF7DFFFFFFA8A8FF
%A8A8FFFFFFA8FFA8FFA8FD05FFA8A8FFFFA8FD05FF7DFD07FF7DFD40FFA8
%A8FD0CFFA8A8FD07FFA8FD1EFFA8A8FD07FFA8A8FD3FFFA87DFD0DFF7DFD
%07FF7DA8FD1DFFA87DFD07FF7DFD40FFA8A8FD0DFFA8A8FD07FFA8FD1DFF
%7DFD07FFA8A8FD40FFA87DFD0DFFA8A8FD07FFA8A8FD1BFFA8A8FD07FFA8
%A8FD40FFA8A8FD0EFF7DFD07FFA8A8FD1BFFA8A8FD07FF7DFD41FF7D7DFD
%0EFF7EA8FD07FF7DFD1AFFA87DFD07FFA8A8FD41FFA8A8FD0EFFA8A8FD08
%FF7DFD19FF7DFD08FFA8A8FD41FF847DFD0FFF7DFD08FFA87DFD17FF7DA8
%FD08FF7DFD42FFA8A8FD0FFFA884FD08FFA87DFD15FF7DA8FD08FFA8A8FD
%42FFA87DFD10FF7DA8FD08FFA87DFD13FF7DA8FD08FFA87DFD43FFA8A8FD
%10FFA8A8FD0AFF7DA8FD0FFFA87DFD0AFFA8A8FD43FFA87DFD11FF7DA8FD
%0AFF7EA8A8FD0BFFA87D7EFD0AFFA87DFD44FFA8A8FD12FF7DAFFD0BFFA8
%7DA87EA8A8FFFD04A87DA8FD0BFFA97DFD45FF7D7DFD13FF7DFD0DFFA8FF
%A8A87DA8A8FFA8FD0CFFA87DFD46FFA8A8FD14FF7DAFFD1FFFA87DFD47FF
%847DFD15FF7DA8FD08FF7D7DA8A87DA87D7D7DFF7D7D52FD08FFA87DFD48
%FFA8A8FD16FF7DA8FD07FF7D7D7D53FD04527DFF7D52527DFD06FFA87DFD
%49FFA87DFD17FFA87D84FD05FF7D7D277D53FD04527E525252A8FD04FF7E
%7DA8FD4AFFA8A8FD19FFA87DA8FD04FFA8FFFFFFA8FFFFFFA8FFA8FD04FF
%A87DA8FD4CFFA87DFD1BFF7D7E7DFD0EFFA87DA87DFD4EFFA8A8FD1DFFA8
%7DFD04A8FFA8FFA8FFA8A87DA87EA8FD50FF7D7DFD1FFFA8FFA8A87DA87D
%A87DA8A8FFA8FD52FFA8A8FD7EFF847DFD7EFFA87DFD7EA87DA8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
%FFA8FF
%%EndData
+%ADOEndClientInjection: DocumentHeader "AI11EPS" +%%Pages: 1 +%%DocumentNeededResources: +%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 +%%+ procset Adobe_CoolType_Utility_T42 1.0 0 +%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 +%%+ procset Adobe_CoolType_Core 2.31 0 +%%+ procset Adobe_AGM_Core 2.0 0 +%%+ procset Adobe_AGM_Utils 1.0 0 +%%DocumentFonts: +%%DocumentNeededFonts: +%%DocumentNeededFeatures: +%%DocumentSuppliedFeatures: +%%DocumentProcessColors: Magenta Black +%%DocumentCustomColors: +%%CMYKCustomColor: +%%RGBCustomColor: +%%EndComments + + + + + + +%%BeginDefaults +%%ViewingOrientation: 1 0 0 1 +%%EndDefaults +%%BeginProlog +%%BeginResource: procset Adobe_AGM_Utils 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{currentpacking true setpacking}if +userdict/Adobe_AGM_Utils 73 dict dup begin put +/bdf +{bind def}bind def +/nd{null def}bdf +/xdf +{exch def}bdf +/ldf +{load def}bdf +/ddf +{put}bdf +/xddf +{3 -1 roll put}bdf +/xpt +{exch put}bdf +/ndf +{ + exch dup where{ + pop pop pop + }{ + xdf + }ifelse +}def +/cdndf +{ + exch dup currentdict exch known{ + pop pop + }{ + exch def + }ifelse +}def +/gx +{get exec}bdf +/ps_level + /languagelevel where{ + pop systemdict/languagelevel gx + }{ + 1 + }ifelse +def +/level2 + ps_level 2 ge +def +/level3 + ps_level 3 ge +def +/ps_version + {version cvr}stopped{-1}if +def +/set_gvm +{currentglobal exch setglobal}bdf +/reset_gvm +{setglobal}bdf +/makereadonlyarray +{ + /packedarray where{pop packedarray + }{ + array astore readonly}ifelse +}bdf +/map_reserved_ink_name +{ + dup type/stringtype eq{ + dup/Red eq{ + pop(_Red_) + }{ + dup/Green eq{ + pop(_Green_) + }{ + dup/Blue eq{ + pop(_Blue_) + }{ + dup()cvn eq{ + pop(Process) + }if + }ifelse + }ifelse + }ifelse + }if +}bdf +/AGMUTIL_GSTATE 22 dict def +/get_gstate +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_clr_spc currentcolorspace def + /AGMUTIL_GSTATE_clr_indx 0 def + /AGMUTIL_GSTATE_clr_comps 12 array def + mark currentcolor counttomark + {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop + /AGMUTIL_GSTATE_fnt rootfont def + /AGMUTIL_GSTATE_lw currentlinewidth def + /AGMUTIL_GSTATE_lc currentlinecap def + /AGMUTIL_GSTATE_lj currentlinejoin def + /AGMUTIL_GSTATE_ml currentmiterlimit def + currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf + /AGMUTIL_GSTATE_sa currentstrokeadjust def + /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def + /AGMUTIL_GSTATE_op currentoverprint def + /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def + /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def + currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf + cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf + /AGMUTIL_GSTATE_ht currenthalftone def + /AGMUTIL_GSTATE_flt currentflat def + end +}def +/set_gstate +{ + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_clr_spc setcolorspace + AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor + AGMUTIL_GSTATE_fnt setfont + AGMUTIL_GSTATE_lw setlinewidth + AGMUTIL_GSTATE_lc setlinecap + AGMUTIL_GSTATE_lj setlinejoin + AGMUTIL_GSTATE_ml setmiterlimit + AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash + AGMUTIL_GSTATE_sa setstrokeadjust + AGMUTIL_GSTATE_clr_rnd setcolorrendering + AGMUTIL_GSTATE_op setoverprint + AGMUTIL_GSTATE_bg cvx setblackgeneration + AGMUTIL_GSTATE_ucr cvx setundercolorremoval + AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx + AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer + AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or + { + currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne + { + mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark + }if + }{ + AGMUTIL_GSTATE_ht sethalftone + }ifelse + AGMUTIL_GSTATE_flt setflat + end +}def +/get_gstate_and_matrix +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_ctm matrix currentmatrix def + end + get_gstate +}def +/set_gstate_and_matrix +{ + set_gstate + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_ctm setmatrix + end +}def +/AGMUTIL_str256 256 string def +/AGMUTIL_src256 256 string def +/AGMUTIL_dst64 64 string def +/AGMUTIL_srcLen nd +/AGMUTIL_ndx nd +/AGMUTIL_cpd nd +/capture_cpd{ + //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf +}def +/thold_halftone +{ + level3 + {sethalftone currenthalftone} + { + dup/HalftoneType get 3 eq + { + sethalftone currenthalftone + }{ + begin + Width Height mul{ + Thresholds read{pop}if + }repeat + end + currenthalftone + }ifelse + }ifelse +}def +/rdcmntline +{ + currentfile AGMUTIL_str256 readline pop + (%)anchorsearch{pop}if +}bdf +/filter_cmyk +{ + dup type/filetype ne{ + exch()/SubFileDecode filter + }{ + exch pop + } + ifelse + [ + exch + { + AGMUTIL_src256 readstring pop + dup length/AGMUTIL_srcLen exch def + /AGMUTIL_ndx 0 def + AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ + 1 index exch get + AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put + /AGMUTIL_ndx AGMUTIL_ndx 1 add def + }for + pop + AGMUTIL_dst64 0 AGMUTIL_ndx getinterval + } + bind + /exec cvx + ]cvx +}bdf +/filter_indexed_devn +{ + cvi Names length mul names_index add Lookup exch get +}bdf +/filter_devn +{ + 4 dict begin + /srcStr xdf + /dstStr xdf + dup type/filetype ne{ + 0()/SubFileDecode filter + }if + [ + exch + [ + /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx + currentdict/srcStr get/readstring cvx/pop cvx + /dup cvx/length cvx 0/gt cvx[ + Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx + names_index Names length currentdict/srcStr get length 1 sub{ + 1/index cvx/exch cvx/get cvx + currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx + Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx + }for + currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx + ]cvx/if cvx + /end cvx + ]cvx + bind + /exec cvx + ]cvx + end +}bdf +/AGMUTIL_imagefile nd +/read_image_file +{ + AGMUTIL_imagefile 0 setfileposition + 10 dict begin + /imageDict xdf + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + /imbufIdx 0 def + /origDataSource imageDict/DataSource get def + /origMultipleDataSources imageDict/MultipleDataSources get def + /origDecode imageDict/Decode get def + /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def + imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse + { + /imbufCnt imageDict/DataSource get length def + /imbufs imbufCnt array def + 0 1 imbufCnt 1 sub{ + /imbufIdx xdf + imbufs imbufIdx imbufLen string put + imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put + }for + DeviceN_PS2{ + imageDict begin + /DataSource[DataSource/devn_sep_datasource cvx]cvx def + /MultipleDataSources false def + /Decode[0 1]def + end + }if + }{ + /imbuf imbufLen string def + Indexed_DeviceN level3 not and DeviceN_NoneName or{ + /srcDataStrs[imageDict begin + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi string + }repeat + end]def + imageDict begin + /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def + /Decode[0 1]def + end + }{ + imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put + imageDict/Decode[0 1]put + }ifelse + }ifelse + imageDict exch + load exec + imageDict/DataSource origDataSource put + imageDict/MultipleDataSources origMultipleDataSources put + imageDict/Decode origDecode put + end +}bdf +/write_image_file +{ + begin + {(AGMUTIL_imagefile)(w+)file}stopped{ + false + }{ + Adobe_AGM_Utils/AGMUTIL_imagefile xddf + 2 dict begin + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ + /imbuf imbufLen string def + }if + 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ + pop + MultipleDataSources{ + 0 1 DataSource length 1 sub{ + DataSource type dup + /arraytype eq{ + pop DataSource exch gx + }{ + /filetype eq{ + DataSource exch get imbuf readstring pop + }{ + DataSource exch get + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }for + }{ + DataSource type dup + /arraytype eq{ + pop DataSource exec + }{ + /filetype eq{ + DataSource imbuf readstring pop + }{ + DataSource + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }ifelse + }for + end + true + }ifelse + end +}bdf +/close_image_file +{ + AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile +}def +statusdict/product known userdict/AGMP_current_show known not and{ + /pstr statusdict/product get def + pstr(HP LaserJet 2200)eq + pstr(HP LaserJet 4000 Series)eq or + pstr(HP LaserJet 4050 Series )eq or + pstr(HP LaserJet 8000 Series)eq or + pstr(HP LaserJet 8100 Series)eq or + pstr(HP LaserJet 8150 Series)eq or + pstr(HP LaserJet 5000 Series)eq or + pstr(HP LaserJet 5100 Series)eq or + pstr(HP Color LaserJet 4500)eq or + pstr(HP Color LaserJet 4600)eq or + pstr(HP LaserJet 5Si)eq or + pstr(HP LaserJet 1200 Series)eq or + pstr(HP LaserJet 1300 Series)eq or + pstr(HP LaserJet 4100 Series)eq or + { + userdict/AGMP_current_show/show load put + userdict/show{ + currentcolorspace 0 get + /Pattern eq + {false charpath f} + {AGMP_current_show}ifelse + }put + }if + currentdict/pstr undef +}if +/consumeimagedata +{ + begin + AGMIMG_init_common + currentdict/MultipleDataSources known not + {/MultipleDataSources false def}if + MultipleDataSources + { + DataSource 0 get type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width cvi string def + 1 1 Height cvi + { + pop + 0 1 DataSource length 1 sub + { + DataSource exch get + flushbuffer readstring pop pop + }for + }for + end + }if + dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and + { + Width Height mul cvi + { + 0 1 DataSource length 1 sub + {dup DataSource exch gx length exch 0 ne{pop}if}for + dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + } + { + /DataSource load type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width Decode length 2 idiv mul cvi string def + 1 1 Height{pop DataSource flushbuffer readstring pop pop}for + end + }if + dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and + { + Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul + { + DataSource length dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + }ifelse + end +}bdf +/addprocs +{ + 2{/exec load}repeat + 3 1 roll + [5 1 roll]bind cvx +}def +/modify_halftone_xfer +{ + currenthalftone dup length dict copy begin + currentdict 2 index known{ + 1 index load dup length dict copy begin + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end def + currentdict end sethalftone + }{ + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end sethalftone + pop + }ifelse +}def +/clonearray +{ + dup xcheck exch + dup length array exch + Adobe_AGM_Core/AGMCORE_tmp -1 ddf + { + Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf + dup type/dicttype eq + { + Adobe_AGM_Core/AGMCORE_tmp get + exch + clonedict + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + dup type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_tmp get exch + clonearray + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + exch dup + Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put + }forall + exch{cvx}if +}bdf +/clonedict +{ + dup length dict + begin + { + dup type/dicttype eq + {clonedict}if + dup type/arraytype eq + {clonearray}if + def + }forall + currentdict + end +}bdf +/DeviceN_PS2 +{ + /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and +}bdf +/Indexed_DeviceN +{ + /indexed_colorspace_dict AGMCORE_gget dup null ne{ + dup/CSDBase known{ + /CSDBase get/CSD get_res/Names known + }{ + pop false + }ifelse + }{ + pop false + }ifelse +}bdf +/DeviceN_NoneName +{ + /Names where{ + pop + false Names + { + (None)eq or + }forall + }{ + false + }ifelse +}bdf +/DeviceN_PS2_inRip_seps +{ + /AGMCORE_in_rip_sep where + { + pop dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and + { + /currentcolorspace exch AGMCORE_gput + false + }{ + true + }ifelse + }{ + true + }ifelse + }{ + true + }ifelse +}bdf +/base_colorspace_type +{ + dup type/arraytype eq{0 get}if +}bdf +/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse +{ + /pdfmark_5{cleartomark}bind def +}{ + /pdfmark_5{pdfmark}bind def +}ifelse +/ReadBypdfmark_5 +{ + currentfile exch 0 exch/SubFileDecode filter + /currentdistillerparams where + {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse + {flushfile cleartomark} + {/PUT pdfmark}ifelse +}bdf +/xpdfm +{ + { + dup 0 get/Label eq + { + aload length[exch 1 add 1 roll/PAGELABEL + }{ + aload pop + [{ThisPage}<<5 -2 roll>>/PUT + }ifelse + pdfmark_5 + }forall +}bdf +/ds{ + Adobe_AGM_Utils begin +}bdf +/dt{ + currentdict Adobe_AGM_Utils eq{ + end + }if +}bdf +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_AGM_Core 2.0 0 +%%Version: 2.0 0 +%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Core 209 dict dup begin put +/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def +/AGMCORE_str256 256 string def +/AGMCORE_save nd +/AGMCORE_graphicsave nd +/AGMCORE_c 0 def +/AGMCORE_m 0 def +/AGMCORE_y 0 def +/AGMCORE_k 0 def +/AGMCORE_cmykbuf 4 array def +/AGMCORE_screen[currentscreen]cvx def +/AGMCORE_tmp 0 def +/AGMCORE_&setgray nd +/AGMCORE_&setcolor nd +/AGMCORE_&setcolorspace nd +/AGMCORE_&setcmykcolor nd +/AGMCORE_cyan_plate nd +/AGMCORE_magenta_plate nd +/AGMCORE_yellow_plate nd +/AGMCORE_black_plate nd +/AGMCORE_plate_ndx nd +/AGMCORE_get_ink_data nd +/AGMCORE_is_cmyk_sep nd +/AGMCORE_host_sep nd +/AGMCORE_avoid_L2_sep_space nd +/AGMCORE_distilling nd +/AGMCORE_composite_job nd +/AGMCORE_producing_seps nd +/AGMCORE_ps_level -1 def +/AGMCORE_ps_version -1 def +/AGMCORE_environ_ok nd +/AGMCORE_CSD_cache 0 dict def +/AGMCORE_currentoverprint false def +/AGMCORE_deltaX nd +/AGMCORE_deltaY nd +/AGMCORE_name nd +/AGMCORE_sep_special nd +/AGMCORE_err_strings 4 dict def +/AGMCORE_cur_err nd +/AGMCORE_current_spot_alias false def +/AGMCORE_inverting false def +/AGMCORE_feature_dictCount nd +/AGMCORE_feature_opCount nd +/AGMCORE_feature_ctm nd +/AGMCORE_ConvertToProcess false def +/AGMCORE_Default_CTM matrix def +/AGMCORE_Default_PageSize nd +/AGMCORE_Default_flatness nd +/AGMCORE_currentbg nd +/AGMCORE_currentucr nd +/AGMCORE_pattern_paint_type 0 def +/knockout_unitsq nd +currentglobal true setglobal +[/CSA/Gradient/Procedure] +{ + /Generic/Category findresource dup length dict copy/Category defineresource pop +}forall +setglobal +/AGMCORE_key_known +{ + where{ + /Adobe_AGM_Core_Id known + }{ + false + }ifelse +}ndf +/flushinput +{ + save + 2 dict begin + /CompareBuffer 3 -1 roll def + /readbuffer 256 string def + mark + { + currentfile readbuffer{readline}stopped + {cleartomark mark} + { + not + {pop exit} + if + CompareBuffer eq + {exit} + if + }ifelse + }loop + cleartomark + end + restore +}bdf +/getspotfunction +{ + AGMCORE_screen exch pop exch pop + dup type/dicttype eq{ + dup/HalftoneType get 1 eq{ + /SpotFunction get + }{ + dup/HalftoneType get 2 eq{ + /GraySpotFunction get + }{ + pop + { + abs exch abs 2 copy add 1 gt{ + 1 sub dup mul exch 1 sub dup mul add 1 sub + }{ + dup mul exch dup mul add 1 exch sub + }ifelse + }bind + }ifelse + }ifelse + }if +}def +/np +{newpath}bdf +/clp_npth +{clip np}def +/eoclp_npth +{eoclip np}def +/npth_clp +{np clip}def +/graphic_setup +{ + /AGMCORE_graphicsave save store + concat + 0 setgray + 0 setlinecap + 0 setlinejoin + 1 setlinewidth + []0 setdash + 10 setmiterlimit + np + false setoverprint + false setstrokeadjust + //Adobe_AGM_Core/spot_alias gx + /Adobe_AGM_Image where{ + pop + Adobe_AGM_Image/spot_alias 2 copy known{ + gx + }{ + pop pop + }ifelse + }if + /sep_colorspace_dict null AGMCORE_gput + 100 dict begin + /dictstackcount countdictstack def + /showpage{}def + mark +}def +/graphic_cleanup +{ + cleartomark + dictstackcount 1 countdictstack 1 sub{end}for + end + AGMCORE_graphicsave restore +}def +/compose_error_msg +{ + grestoreall initgraphics + /Helvetica findfont 10 scalefont setfont + /AGMCORE_deltaY 100 def + /AGMCORE_deltaX 310 def + clippath pathbbox np pop pop 36 add exch 36 add exch moveto + 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto + 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath + 0 AGMCORE_&setgray + gsave 1 AGMCORE_&setgray fill grestore + 1 setlinewidth gsave stroke grestore + currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto + /AGMCORE_deltaY 12 def + /AGMCORE_tmp 0 def + AGMCORE_err_strings exch get + { + dup 32 eq + { + pop + AGMCORE_str256 0 AGMCORE_tmp getinterval + stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt + { + currentpoint AGMCORE_deltaY sub exch pop + clippath pathbbox pop pop pop 44 add exch moveto + }if + AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show + 0 1 AGMCORE_str256 length 1 sub + { + AGMCORE_str256 exch 0 put + }for + /AGMCORE_tmp 0 def + }{ + AGMCORE_str256 exch AGMCORE_tmp xpt + /AGMCORE_tmp AGMCORE_tmp 1 add def + }ifelse + }forall +}bdf +/AGMCORE_CMYKDeviceNColorspaces[ + [/Separation/None/DeviceCMYK{0 0 0}] + [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] + [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] + [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] + [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] + [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] + [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] + [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] + [/Separation(Cyan)/DeviceCMYK{0 0 0}] + [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] + [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] + [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] + [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] + [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] + [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] + [/DeviceCMYK] +]def +/ds{ + Adobe_AGM_Core begin + /currentdistillerparams where + { + pop currentdistillerparams/CoreDistVersion get 5000 lt + {<</DetectBlends false>>setdistillerparams}if + }if + /AGMCORE_ps_version xdf + /AGMCORE_ps_level xdf + errordict/AGM_handleerror known not{ + errordict/AGM_handleerror errordict/handleerror get put + errordict/handleerror{ + Adobe_AGM_Core begin + $error/newerror get AGMCORE_cur_err null ne and{ + $error/newerror false put + AGMCORE_cur_err compose_error_msg + }if + $error/newerror true put + end + errordict/AGM_handleerror get exec + }bind put + }if + /AGMCORE_environ_ok + ps_level AGMCORE_ps_level ge + ps_version AGMCORE_ps_version ge and + AGMCORE_ps_level -1 eq or + def + AGMCORE_environ_ok not + {/AGMCORE_cur_err/AGMCORE_bad_environ def}if + /AGMCORE_&setgray systemdict/setgray get def + level2{ + /AGMCORE_&setcolor systemdict/setcolor get def + /AGMCORE_&setcolorspace systemdict/setcolorspace get def + }if + /AGMCORE_currentbg currentblackgeneration def + /AGMCORE_currentucr currentundercolorremoval def + /AGMCORE_Default_flatness currentflat def + /AGMCORE_distilling + /product where{ + pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and + }{ + false + }ifelse + def + /AGMCORE_GSTATE AGMCORE_key_known not{ + /AGMCORE_GSTATE 21 dict def + /AGMCORE_tmpmatrix matrix def + /AGMCORE_gstack 32 array def + /AGMCORE_gstackptr 0 def + /AGMCORE_gstacksaveptr 0 def + /AGMCORE_gstackframekeys 14 def + /AGMCORE_&gsave/gsave ldf + /AGMCORE_&grestore/grestore ldf + /AGMCORE_&grestoreall/grestoreall ldf + /AGMCORE_&save/save ldf + /AGMCORE_&setoverprint/setoverprint ldf + /AGMCORE_gdictcopy{ + begin + {def}forall + end + }def + /AGMCORE_gput{ + AGMCORE_gstack AGMCORE_gstackptr get + 3 1 roll + put + }def + /AGMCORE_gget{ + AGMCORE_gstack AGMCORE_gstackptr get + exch + get + }def + /gsave{ + AGMCORE_&gsave + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /grestore{ + AGMCORE_&grestore + AGMCORE_gstackptr 1 sub + dup AGMCORE_gstacksaveptr lt{1 add}if + dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known + {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse + /AGMCORE_gstackptr exch store + }def + /grestoreall{ + AGMCORE_&grestoreall + /AGMCORE_gstackptr AGMCORE_gstacksaveptr store + }def + /save{ + AGMCORE_&save + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + /AGMCORE_gstacksaveptr AGMCORE_gstackptr store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /setoverprint{ + dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint + }def + 0 1 AGMCORE_gstack length 1 sub{ + AGMCORE_gstack exch AGMCORE_gstackframekeys dict put + }for + }if + level3/AGMCORE_&sysshfill AGMCORE_key_known not and + { + /AGMCORE_&sysshfill systemdict/shfill get def + /AGMCORE_&sysmakepattern systemdict/makepattern get def + /AGMCORE_&usrmakepattern/makepattern load def + }if + /currentcmykcolor[0 0 0 0]AGMCORE_gput + /currentstrokeadjust false AGMCORE_gput + /currentcolorspace[/DeviceGray]AGMCORE_gput + /sep_tint 0 AGMCORE_gput + /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput + /sep_colorspace_dict null AGMCORE_gput + /devicen_colorspace_dict null AGMCORE_gput + /indexed_colorspace_dict null AGMCORE_gput + /currentcolor_intent()AGMCORE_gput + /customcolor_tint 1 AGMCORE_gput + /absolute_colorimetric_crd null AGMCORE_gput + /relative_colorimetric_crd null AGMCORE_gput + /saturation_crd null AGMCORE_gput + /perceptual_crd null AGMCORE_gput + currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf + cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf + << + /MaxPatternItem currentsystemparams/MaxPatternCache get + >> + setuserparams + end +}def +/ps +{ + /setcmykcolor where{ + pop + Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put + }if + Adobe_AGM_Core begin + /setcmykcolor + { + 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput + 1 sub 4 1 roll + 3{ + 3 index add neg dup 0 lt{ + pop 0 + }if + 3 1 roll + }repeat + setrgbcolor pop + }ndf + /currentcmykcolor + { + /currentcmykcolor AGMCORE_gget aload pop + }ndf + /setoverprint + {pop}ndf + /currentoverprint + {false}ndf + /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def + /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def + /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def + /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def + /AGMCORE_plate_ndx + AGMCORE_cyan_plate{ + 0 + }{ + AGMCORE_magenta_plate{ + 1 + }{ + AGMCORE_yellow_plate{ + 2 + }{ + AGMCORE_black_plate{ + 3 + }{ + 4 + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_have_reported_unsupported_color_space false def + /AGMCORE_report_unsupported_color_space + { + AGMCORE_have_reported_unsupported_color_space false eq + { + (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== + Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf + }if + }def + /AGMCORE_composite_job + AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def + /AGMCORE_in_rip_sep + /AGMCORE_in_rip_sep where{ + pop AGMCORE_in_rip_sep + }{ + AGMCORE_distilling + { + false + }{ + userdict/Adobe_AGM_OnHost_Seps known{ + false + }{ + level2{ + currentpagedevice/Separations 2 copy known{ + get + }{ + pop pop false + }ifelse + }{ + false + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def + /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def + /AGM_preserve_spots + /AGM_preserve_spots where{ + pop AGM_preserve_spots + }{ + AGMCORE_distilling AGMCORE_producing_seps or + }ifelse + def + /AGM_is_distiller_preserving_spotimages + { + currentdistillerparams/PreserveOverprintSettings known + { + currentdistillerparams/PreserveOverprintSettings get + { + currentdistillerparams/ColorConversionStrategy known + { + currentdistillerparams/ColorConversionStrategy get + /sRGB ne + }{ + true + }ifelse + }{ + false + }ifelse + }{ + false + }ifelse + }def + /convert_spot_to_process where{pop}{ + /convert_spot_to_process + { + //Adobe_AGM_Core begin + dup map_alias{ + /Name get exch pop + }if + dup dup(None)eq exch(All)eq or + { + pop false + }{ + AGMCORE_host_sep + { + gsave + 1 0 0 0 setcmykcolor currentgray 1 exch sub + 0 1 0 0 setcmykcolor currentgray 1 exch sub + 0 0 1 0 setcmykcolor currentgray 1 exch sub + 0 0 0 1 setcmykcolor currentgray 1 exch sub + add add add 0 eq + { + pop false + }{ + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + }ifelse + grestore + }{ + AGMCORE_distilling + { + pop AGM_is_distiller_preserving_spotimages not + }{ + //Adobe_AGM_Core/AGMCORE_name xddf + false + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq + AGMUTIL_cpd/OverrideSeparations known and + { + AGMUTIL_cpd/OverrideSeparations get + { + /HqnSpots/ProcSet resourcestatus + { + pop pop pop true + }if + }if + }if + { + AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not + }{ + gsave + [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace + false + AGMUTIL_cpd/SeparationColorNames 2 copy known + { + get + {AGMCORE_name eq or}forall + not + }{ + pop pop pop true + }ifelse + grestore + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + }ifelse + /convert_to_process where{pop}{ + /convert_to_process + { + dup length 0 eq + { + pop false + }{ + AGMCORE_host_sep + { + dup true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process and}ifelse + } + forall + { + true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + (Black)eq or and + }forall + not + }{pop false}ifelse + }{ + false exch + { + /PhotoshopDuotoneList where{pop false}{true}ifelse + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process or}ifelse + } + { + convert_spot_to_process or + } + ifelse + } + forall + }ifelse + }ifelse + }def + }ifelse + /AGMCORE_avoid_L2_sep_space + version cvr 2012 lt + level2 and + AGMCORE_producing_seps not and + def + /AGMCORE_is_cmyk_sep + AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or + def + /AGM_avoid_0_cmyk where{ + pop AGM_avoid_0_cmyk + }{ + AGM_preserve_spots + userdict/Adobe_AGM_OnHost_Seps known + userdict/Adobe_AGM_InRip_Seps known or + not and + }ifelse + { + /setcmykcolor[ + { + 4 copy add add add 0 eq currentoverprint and{ + pop 0.0005 + }if + }/exec cvx + /AGMCORE_&setcmykcolor load dup type/operatortype ne{ + /exec cvx + }if + ]cvx def + }if + /AGMCORE_IsSeparationAProcessColor + { + dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or + }def + AGMCORE_host_sep{ + /setcolortransfer + { + AGMCORE_cyan_plate{ + pop pop pop + }{ + AGMCORE_magenta_plate{ + 4 3 roll pop pop pop + }{ + AGMCORE_yellow_plate{ + 4 2 roll pop pop pop + }{ + 4 1 roll pop pop pop + }ifelse + }ifelse + }ifelse + settransfer + } + def + /AGMCORE_get_ink_data + AGMCORE_cyan_plate{ + {pop pop pop} + }{ + AGMCORE_magenta_plate{ + {4 3 roll pop pop pop} + }{ + AGMCORE_yellow_plate{ + {4 2 roll pop pop pop} + }{ + {4 1 roll pop pop pop} + }ifelse + }ifelse + }ifelse + def + /AGMCORE_RemoveProcessColorNames + { + 1 dict begin + /filtername + { + dup/Cyan eq 1 index(Cyan)eq or + {pop(_cyan_)}if + dup/Magenta eq 1 index(Magenta)eq or + {pop(_magenta_)}if + dup/Yellow eq 1 index(Yellow)eq or + {pop(_yellow_)}if + dup/Black eq 1 index(Black)eq or + {pop(_black_)}if + }def + dup type/arraytype eq + {[exch{filtername}forall]} + {filtername}ifelse + end + }def + level3{ + /AGMCORE_IsCurrentColor + { + dup AGMCORE_IsSeparationAProcessColor + { + AGMCORE_plate_ndx 0 eq + {dup(Cyan)eq exch/Cyan eq or}if + AGMCORE_plate_ndx 1 eq + {dup(Magenta)eq exch/Magenta eq or}if + AGMCORE_plate_ndx 2 eq + {dup(Yellow)eq exch/Yellow eq or}if + AGMCORE_plate_ndx 3 eq + {dup(Black)eq exch/Black eq or}if + AGMCORE_plate_ndx 4 eq + {pop false}if + }{ + gsave + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + grestore + }ifelse + }def + /AGMCORE_filter_functiondatasource + { + 5 dict begin + /data_in xdf + data_in type/stringtype eq + { + /ncomp xdf + /comp xdf + /string_out data_in length ncomp idiv string def + 0 ncomp data_in length 1 sub + { + string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put + }for + string_out + }{ + string/string_in xdf + /string_out 1 string def + /component xdf + [ + data_in string_in/readstring cvx + [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx + [/pop cvx()]cvx/ifelse cvx + ]cvx/ReusableStreamDecode filter + }ifelse + end + }def + /AGMCORE_separateShadingFunction + { + 2 dict begin + /paint? xdf + /channel xdf + dup type/dicttype eq + { + begin + FunctionType 0 eq + { + /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def + currentdict/Decode known + {/Decode Decode channel 2 mul 2 getinterval def}if + paint? not + {/Decode[1 1]def}if + }if + FunctionType 2 eq + { + paint? + { + /C0[C0 channel get 1 exch sub]def + /C1[C1 channel get 1 exch sub]def + }{ + /C0[1]def + /C1[1]def + }ifelse + }if + FunctionType 3 eq + { + /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def + }if + currentdict/Range known + {/Range[0 1]def}if + currentdict + end}{ + channel get 0 paint? AGMCORE_separateShadingFunction + }ifelse + end + }def + /AGMCORE_separateShading + { + 3 -1 roll begin + currentdict/Function known + { + currentdict/Background known + {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if + Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf + /ColorSpace[/DeviceGray]def + }{ + ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }{ + ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put + }ifelse + ColorSpace 0 get/Separation eq + { + { + [1/exch cvx/sub cvx]cvx + }{ + [/pop cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll put + pop + }{ + { + [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx + }{ + pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll bind put + }ifelse + ColorSpace 2/DeviceGray put + }ifelse + end + }def + /AGMCORE_separateShadingDict + { + dup/ColorSpace get + dup type/arraytype ne + {[exch]}if + dup 0 get/DeviceCMYK eq + { + exch begin + currentdict + AGMCORE_cyan_plate + {0 true}if + AGMCORE_magenta_plate + {1 true}if + AGMCORE_yellow_plate + {2 true}if + AGMCORE_black_plate + {3 true}if + AGMCORE_plate_ndx 4 eq + {0 false}if + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + currentdict + end exch + }if + dup 0 get/Separation eq + { + exch begin + ColorSpace 1 get dup/None ne exch/All ne and + { + ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /Separation + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + }if + }ifelse + }{ + currentdict ColorSpace 1 get AGMCORE_IsCurrentColor + 0 exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + }if + currentdict + end exch + }if + dup 0 get/DeviceN eq + { + exch begin + ColorSpace 1 get convert_to_process + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /DeviceN + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + /ColorSpace[/DeviceGray]def + }if + }ifelse + }{ + currentdict + false -1 ColorSpace 1 get + { + AGMCORE_IsCurrentColor + { + 1 add + exch pop true exch exit + }if + 1 add + }forall + exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + currentdict + end exch + }if + dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not + { + exch begin + ColorSpace dup type/arraytype eq + {0 get}if + /DeviceGray ne + { + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + ColorSpace 0 get/CIEBasedA eq + { + /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def + }if + ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or + { + /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def + }if + ColorSpace 0 get/CIEBasedDEFG eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }if + currentdict 0 false AGMCORE_separateShading + }if + }if + currentdict + end exch + }if + pop + dup/AGMCORE_ignoreshade known + { + begin + /ColorSpace[/Separation(None)/DeviceGray{}]def + currentdict end + }if + }def + /shfill + { + AGMCORE_separateShadingDict + dup/AGMCORE_ignoreshade known + {pop} + {AGMCORE_&sysshfill}ifelse + }def + /makepattern + { + exch + dup/PatternType get 2 eq + { + clonedict + begin + /Shading Shading AGMCORE_separateShadingDict def + Shading/AGMCORE_ignoreshade known + currentdict end exch + {pop<</PatternType 1/PaintProc{pop}/BBox[0 0 1 1]/XStep 1/YStep 1/PaintType 1/TilingType 3>>}if + exch AGMCORE_&sysmakepattern + }{ + exch AGMCORE_&usrmakepattern + }ifelse + }def + }if + }if + AGMCORE_in_rip_sep{ + /setcustomcolor + { + exch aload pop + dup 7 1 roll inRip_spot_has_ink not { + 4{4 index mul 4 1 roll} + repeat + /DeviceCMYK setcolorspace + 6 -2 roll pop pop + }{ + //Adobe_AGM_Core begin + /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf + end + [/Separation 4 -1 roll/DeviceCMYK + {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} + ] + setcolorspace + }ifelse + setcolor + }ndf + /setseparationgray + { + [/Separation(All)/DeviceGray{}]setcolorspace_opt + 1 exch sub setcolor + }ndf + }{ + /setseparationgray + { + AGMCORE_&setgray + }ndf + }ifelse + /findcmykcustomcolor + { + 5 makereadonlyarray + }ndf + /setcustomcolor + { + exch aload pop pop + 4{4 index mul 4 1 roll}repeat + setcmykcolor pop + }ndf + /has_color + /colorimage where{ + AGMCORE_producing_seps{ + pop true + }{ + systemdict eq + }ifelse + }{ + false + }ifelse + def + /map_index + { + 1 index mul exch getinterval{255 div}forall + }bdf + /map_indexed_devn + { + Lookup Names length 3 -1 roll cvi map_index + }bdf + /n_color_components + { + base_colorspace_type + dup/DeviceGray eq{ + pop 1 + }{ + /DeviceCMYK eq{ + 4 + }{ + 3 + }ifelse + }ifelse + }bdf + level2{ + /mo/moveto ldf + /li/lineto ldf + /cv/curveto ldf + /knockout_unitsq + { + 1 setgray + 0 0 1 1 rectfill + }def + level2/setcolorspace AGMCORE_key_known not and{ + /AGMCORE_&&&setcolorspace/setcolorspace ldf + /AGMCORE_ReplaceMappedColor + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + /AGMCORE_SpotAliasAry2 where{ + begin + dup 0 get dup/Separation eq + { + pop + dup length array copy + dup dup 1 get + current_spot_alias + { + dup map_alias + { + false set_spot_alias + dup 1 exch setsepcolorspace + true set_spot_alias + begin + /sep_colorspace_dict currentdict AGMCORE_gput + pop pop pop + [ + /Separation Name + CSA map_csa + MappedCSA + /sep_colorspace_proc load + ] + dup Name + end + }if + }if + map_reserved_ink_name 1 xpt + }{ + /DeviceN eq + { + dup length array copy + dup dup 1 get[ + exch{ + current_spot_alias{ + dup map_alias{ + /Name get exch pop + }if + }if + map_reserved_ink_name + }forall + ]1 xpt + }if + }ifelse + end + }if + }if + }def + /setcolorspace + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/Indexed eq + { + AGMCORE_distilling + { + /PhotoshopDuotoneList where + { + pop false + }{ + true + }ifelse + }{ + true + }ifelse + { + aload pop 3 -1 roll + AGMCORE_ReplaceMappedColor + 3 1 roll 4 array astore + }if + }{ + AGMCORE_ReplaceMappedColor + }ifelse + }if + DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if + }def + }if + }{ + /adj + { + currentstrokeadjust{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform + }if + }def + /mo{ + adj moveto + }def + /li{ + adj lineto + }def + /cv{ + 6 2 roll adj + 6 2 roll adj + 6 2 roll adj curveto + }def + /knockout_unitsq + { + 1 setgray + 8 8 1[8 0 0 8 0 0]{<ffffffffffffffff>}image + }def + /currentstrokeadjust{ + /currentstrokeadjust AGMCORE_gget + }def + /setstrokeadjust{ + /currentstrokeadjust exch AGMCORE_gput + }def + /setcolorspace + { + /currentcolorspace exch AGMCORE_gput + }def + /currentcolorspace + { + /currentcolorspace AGMCORE_gget + }def + /setcolor_devicecolor + { + base_colorspace_type + dup/DeviceGray eq{ + pop setgray + }{ + /DeviceCMYK eq{ + setcmykcolor + }{ + setrgbcolor + }ifelse + }ifelse + }def + /setcolor + { + currentcolorspace 0 get + dup/DeviceGray ne{ + dup/DeviceCMYK ne{ + dup/DeviceRGB ne{ + dup/Separation eq{ + pop + currentcolorspace 3 gx + currentcolorspace 2 get + }{ + dup/Indexed eq{ + pop + currentcolorspace 3 get dup type/stringtype eq{ + currentcolorspace 1 get n_color_components + 3 -1 roll map_index + }{ + exec + }ifelse + currentcolorspace 1 get + }{ + /AGMCORE_cur_err/AGMCORE_invalid_color_space def + AGMCORE_invalid_color_space + }ifelse + }ifelse + }if + }if + }if + setcolor_devicecolor + }def + }ifelse + /sop/setoverprint ldf + /lw/setlinewidth ldf + /lc/setlinecap ldf + /lj/setlinejoin ldf + /ml/setmiterlimit ldf + /dsh/setdash ldf + /sadj/setstrokeadjust ldf + /gry/setgray ldf + /rgb/setrgbcolor ldf + /cmyk[ + /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx + /setcmykcolor load dup type/operatortype ne{/exec cvx}if + ]cvx bdf + level3 AGMCORE_host_sep not and{ + /nzopmsc{ + 6 dict begin + /kk exch def + /yy exch def + /mm exch def + /cc exch def + /sum 0 def + cc 0 ne{/sum sum 2#1000 or def cc}if + mm 0 ne{/sum sum 2#0100 or def mm}if + yy 0 ne{/sum sum 2#0010 or def yy}if + kk 0 ne{/sum sum 2#0001 or def kk}if + AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace + sum 0 eq{0}if + end + setcolor + }bdf + }{ + /nzopmsc/cmyk ldf + }ifelse + /sep/setsepcolor ldf + /devn/setdevicencolor ldf + /idx/setindexedcolor ldf + /colr/setcolor ldf + /csacrd/set_csa_crd ldf + /sepcs/setsepcolorspace ldf + /devncs/setdevicencolorspace ldf + /idxcs/setindexedcolorspace ldf + /cp/closepath ldf + /clp/clp_npth ldf + /eclp/eoclp_npth ldf + /f/fill ldf + /ef/eofill ldf + /@/stroke ldf + /nclp/npth_clp ldf + /gset/graphic_setup ldf + /gcln/graphic_cleanup ldf + /ct/concat ldf + /cf/currentfile ldf + /fl/filter ldf + /rs/readstring ldf + /AGMCORE_def_ht currenthalftone def + /clonedict Adobe_AGM_Utils begin/clonedict load end def + /clonearray Adobe_AGM_Utils begin/clonearray load end def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall + /getrampcolor + { + /indx exch def + 0 1 NumComp 1 sub + { + dup + Samples exch get + dup type/stringtype eq{indx get}if + exch + Scaling exch get aload pop + 3 1 roll + mul add + }for + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /sssetbackground{ + aload pop + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /RadialShade + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /r2 xdf + /c2y xdf + /c2x xdf + /r1 xdf + /c1y xdf + /c1x xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + c1x c2x eq + { + c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope c2y c1y sub c2x c1x sub div def + /theta slope 1 atan def + c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if + c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if + }ifelse + gsave + clippath + c1x c1y translate + theta rotate + -90 rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax xdf + /xMax xdf + /yMin xdf + /xMin xdf + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + /max{2 copy gt{pop}{exch pop}ifelse}bdf + /min{2 copy lt{pop}{exch pop}ifelse}bdf + rampdict begin + 40 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + c1x c1y translate + theta rotate + -90 rotate + /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def + /c1y 0 def + /c1x 0 def + /c2x 0 def + ext0 + { + 0 getrampcolor + c2y r2 add r1 sub 0.0001 lt + { + c1x c1y r1 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2y r1 add r2 le + { + c1x c1y r1 0 360 arc + fill + } + { + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r1 neg def + /p1y c1y def + /p2x r1 def + /p2y c1y def + p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y p1x SS1 div neg def + /SS2 90 theta sub dup sin exch cos div def + /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y p2x SS2 div neg def + r1 r2 gt + { + /L1maxX p1x yMin p1y sub SS1 div add def + /L2maxX p2x yMin p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + c1x c2x sub dup mul + c1y c2y sub dup mul + add 0.5 exp + 0 dtransform + dup mul exch dup mul add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + /hires xdf + hires mul + /numpix xdf + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + /xInc c2x c1x sub numsteps div def + /yInc c2y c1y sub numsteps div def + /rInc r2 r1 sub numsteps div def + /cx c1x def + /cy c1y def + /radius r1 def + np + xInc 0 eq yInc 0 eq rInc 0 eq and and + { + 0 getrampcolor + cx cy radius 0 360 arc + stroke + NumSamples 1 sub getrampcolor + cx cy radius 72 hires div add 0 360 arc + 0 setlinewidth + stroke + }{ + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + cx cy radius 0 360 arc + /cx cx xInc add def + /cy cy yInc add def + /radius radius rInc add def + cx cy radius 360 0 arcn + eofill + rampIndxInc add + }repeat + pop + }ifelse + ext1 + { + c2y r2 add r1 lt + { + c2x c2y r2 0 360 arc + fill + }{ + c2y r1 add r2 sub 0.0001 le + { + c2x c2y r2 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r2 neg def + /p1y c2y def + /p2x r2 def + /p2y c2y def + p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y c2y p1x SS1 div sub def + /SS2 90 theta sub dup sin exch cos div def + /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y c2y p2x SS2 div sub def + r1 r2 lt + { + /L1maxX p1x yMax p1y sub SS1 div add def + /L2maxX p2x yMax p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + grestore + grestore + end + end + end + }ifelse + }bdf + /GenStrips + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /y2 xdf + /x2 xdf + /y1 xdf + /x1 xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + x1 x2 eq + { + y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope y2 y1 sub x2 x1 sub div def + /theta slope 1 atan def + x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if + x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if + } + ifelse + gsave + clippath + x1 y1 translate + theta rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax exch def + /xMax exch def + /yMin exch def + /xMin exch def + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + rampdict begin + 20 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + x1 y1 translate + theta rotate + /xStart 0 def + /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def + /ySpan yMax yMin sub def + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + xStart 0 transform + xEnd 0 transform + 3 -1 roll + sub dup mul + 3 1 roll + sub dup mul + add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + mul + /numpix xdf + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + ext0 + { + 0 getrampcolor + xMin xStart lt + { + xMin yMin xMin neg ySpan rectfill + }if + }if + /xInc xEnd xStart sub numsteps div def + /x xStart def + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + x yMin xInc ySpan rectfill + /x x xInc add def + rampIndxInc add + }repeat + pop + ext1{ + xMax xEnd gt + { + xEnd yMin xMax xEnd sub ySpan rectfill + }if + }if + grestore + grestore + end + end + end + }ifelse + }bdf +}def +/pt +{ + end +}def +/dt{ +}def +/pgsv{ + //Adobe_AGM_Core/AGMCORE_save save put +}def +/pgrs{ + //Adobe_AGM_Core/AGMCORE_save get restore +}def +systemdict/findcolorrendering known{ + /findcolorrendering systemdict/findcolorrendering get def +}if +systemdict/setcolorrendering known{ + /setcolorrendering systemdict/setcolorrendering get def +}if +/test_cmyk_color_plate +{ + gsave + setcmykcolor currentgray 1 ne + grestore +}def +/inRip_spot_has_ink +{ + dup//Adobe_AGM_Core/AGMCORE_name xddf + convert_spot_to_process not +}def +/map255_to_range +{ + 1 index sub + 3 -1 roll 255 div mul add +}def +/set_csa_crd +{ + /sep_colorspace_dict null AGMCORE_gput + begin + CSA get_csa_by_name setcolorspace_opt + set_crd + end +} +def +/map_csa +{ + currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse + {pop}{get_csa_by_name/MappedCSA xdf}ifelse +}def +/setsepcolor +{ + /sep_colorspace_dict AGMCORE_gget begin + dup/sep_tint exch AGMCORE_gput + TintProc + end +}def +/setdevicencolor +{ + /devicen_colorspace_dict AGMCORE_gget begin + Names length copy + Names length 1 sub -1 0 + { + /devicen_tints AGMCORE_gget 3 1 roll xpt + }for + TintProc + end +}def +/sep_colorspace_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + currentdict/Components known{ + Components aload pop + TintMethod/Lab eq{ + 2{AGMCORE_tmp mul NComponents 1 roll}repeat + LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll + }{ + TintMethod/Subtractive eq{ + NComponents{ + AGMCORE_tmp mul NComponents 1 roll + }repeat + }{ + NComponents{ + 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll + }repeat + }ifelse + }ifelse + }{ + ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get + aload pop + }ifelse + end +}def +/sep_colorspace_gray_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get + end +}def +/sep_proc_name +{ + dup 0 get + dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ + pop[/DeviceGray] + /sep_colorspace_gray_proc + }{ + /sep_colorspace_proc + }ifelse +}def +/setsepcolorspace +{ + current_spot_alias{ + dup begin + Name map_alias{ + exch pop + }if + end + }if + dup/sep_colorspace_dict exch AGMCORE_gput + begin + CSA map_csa + /AGMCORE_sep_special Name dup()eq exch(All)eq or store + AGMCORE_avoid_L2_sep_space{ + [/Indexed MappedCSA sep_proc_name 255 exch + {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx + ]setcolorspace_opt + /TintProc{ + 255 mul round cvi setcolor + }bdf + }{ + MappedCSA 0 get/DeviceCMYK eq + currentdict/Components known and + AGMCORE_sep_special not and{ + /TintProc[ + Components aload pop Name findcmykcustomcolor + /exch cvx/setcustomcolor cvx + ]cvx bdf + }{ + AGMCORE_host_sep Name(All)eq and{ + /TintProc{ + 1 exch sub setseparationgray + }bdf + }{ + AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and + AGMCORE_host_sep or + Name()eq and{ + /TintProc[ + MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ + cvx/setcmykcolor cvx + }{ + cvx/setgray cvx + }ifelse + ]cvx bdf + }{ + AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ + /TintProc[ + /dup cvx + MappedCSA sep_proc_name cvx exch + 0 get/DeviceGray eq{ + 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx + }if + /Name cvx/findcmykcustomcolor cvx/exch cvx + AGMCORE_host_sep{ + AGMCORE_is_cmyk_sep + /Name cvx + /AGMCORE_IsSeparationAProcessColor load/exec cvx + /not cvx/and cvx + }{ + Name inRip_spot_has_ink not + }ifelse + [ + /pop cvx 1 + ]cvx/if cvx + /setcustomcolor cvx + ]cvx bdf + }{ + /TintProc{setcolor}bdf + [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt + }ifelse + }ifelse + }ifelse + }ifelse + }ifelse + set_crd + setsepcolor + end +}def +/additive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 + 0 1 numarrays 1 sub + { + 1 exch add/index cvx + c1/get cvx/mul cvx + }for + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/subtractive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 1 + 0 1 numarrays 1 sub + { + 1 3 3 -1 roll add/index cvx + c1/get cvx/sub cvx/mul cvx + }for + /sub cvx + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/exec_tint_transform +{ + /TintProc[ + /TintTransform cvx/setcolor cvx + ]cvx bdf + MappedCSA setcolorspace_opt +}bdf +/devn_makecustomcolor +{ + 2 dict begin + /names_index xdf + /Names xdf + 1 1 1 1 Names names_index get findcmykcustomcolor + /devicen_tints AGMCORE_gget names_index get setcustomcolor + Names length{pop}repeat + end +}bdf +/setdevicencolorspace +{ + dup/AliasedColorants known{false}{true}ifelse + current_spot_alias and{ + 7 dict begin + /names_index 0 def + dup/names_len exch/Names get length def + /new_names names_len array def + /new_LookupTables names_len array def + /alias_cnt 0 def + dup/Names get + { + dup map_alias{ + exch pop + dup/ColorLookup known{ + dup begin + new_LookupTables names_index ColorLookup put + end + }{ + dup/Components known{ + dup begin + new_LookupTables names_index Components put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + new_names names_index 3 -1 roll/Name get put + /alias_cnt alias_cnt 1 add def + }{ + /name xdf + new_names names_index name put + dup/LookupTables known{ + dup begin + new_LookupTables names_index LookupTables names_index get put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + /names_index names_index 1 add def + }forall + alias_cnt 0 gt{ + /AliasedColorants true def + /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def + 0 1 names_len 1 sub{ + /names_index xdf + new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ + /AliasedColorants false def + exit + }{ + new_LookupTables names_index get 0 get null eq{ + dup/Names get names_index get/name xdf + name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq + or or or not{ + /AliasedColorants false def + exit + }if + }if + }ifelse + }for + lut_entry_len 1 eq{ + /AliasedColorants false def + }if + AliasedColorants{ + dup begin + /Names new_names def + /LookupTables new_LookupTables def + /AliasedColorants true def + /NComponents lut_entry_len def + /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def + /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def + currentdict/TTTablesIdx known not{ + /TTTablesIdx -1 def + }if + end + }if + }if + end + }if + dup/devicen_colorspace_dict exch AGMCORE_gput + begin + currentdict/AliasedColorants known{ + AliasedColorants + }{ + false + }ifelse + dup not{ + CSA map_csa + }if + /TintTransform load type/nulltype eq or{ + /TintTransform[ + 0 1 Names length 1 sub + { + /TTTablesIdx TTTablesIdx 1 add def + dup LookupTables exch get dup 0 get null eq + { + 1 index + Names exch get + dup(Cyan)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0 0 0 + } + { + dup(Magenta)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0/exch cvx 0 0 + }{ + (Yellow)eq + { + exch + LookupTables length exch sub + /index cvx + 0 0 3 -1/roll cvx 0 + }{ + exch + LookupTables length exch sub + /index cvx + 0 0 0 4 -1/roll cvx + }ifelse + }ifelse + }ifelse + 5 -1/roll cvx/astore cvx + }{ + dup length 1 sub + LookupTables length 4 -1 roll sub 1 add + /index cvx/mul cvx/round cvx/cvi cvx/get cvx + }ifelse + Names length TTTablesIdx add 1 add 1/roll cvx + }for + Names length[/pop cvx]cvx/repeat cvx + NComponents Names length + TintMethod/Subtractive eq + { + subtractive_blend + }{ + additive_blend + }ifelse + ]cvx bdf + }if + AGMCORE_host_sep{ + Names convert_to_process{ + exec_tint_transform + } + { + currentdict/AliasedColorants known{ + AliasedColorants not + }{ + false + }ifelse + 5 dict begin + /AvoidAliasedColorants xdf + /painted? false def + /names_index 0 def + /names_len Names length def + AvoidAliasedColorants{ + /currentspotalias current_spot_alias def + false set_spot_alias + }if + Names{ + AGMCORE_is_cmyk_sep{ + dup(Cyan)eq AGMCORE_cyan_plate and exch + dup(Magenta)eq AGMCORE_magenta_plate and exch + dup(Yellow)eq AGMCORE_yellow_plate and exch + (Black)eq AGMCORE_black_plate and or or or{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + }if + painted?{exit}if + }{ + 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + exit + }if + }ifelse + /names_index names_index 1 add def + }forall + AvoidAliasedColorants{ + currentspotalias set_spot_alias + }if + painted?{ + /devicen_colorspace_dict AGMCORE_gget/names_index names_index put + }{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx + 0 0 0 0/setcmykcolor cvx + ]cvx ddf + }ifelse + end + }ifelse + } + { + AGMCORE_in_rip_sep{ + Names convert_to_process not + }{ + level3 + }ifelse + { + [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt + /TintProc level3 not AGMCORE_in_rip_sep and{ + [ + Names/length cvx[/pop cvx]cvx/repeat cvx + ]cvx bdf + }{ + {setcolor}bdf + }ifelse + }{ + exec_tint_transform + }ifelse + }ifelse + set_crd + /AliasedColorants false def + end +}def +/setindexedcolorspace +{ + dup/indexed_colorspace_dict exch AGMCORE_gput + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + currentdict devncs + }{ + 1 currentdict sepcs + }ifelse + AGMCORE_host_sep{ + 4 dict begin + /compCnt/Names where{pop Names length}{1}ifelse def + /NewLookup HiVal 1 add string def + 0 1 HiVal{ + /tableIndex xdf + Lookup dup type/stringtype eq{ + compCnt tableIndex map_index + }{ + exec + }ifelse + /Names where{ + pop setdevicencolor + }{ + setsepcolor + }ifelse + currentgray + tableIndex exch + 255 mul cvi + NewLookup 3 1 roll put + }for + [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt + end + }{ + level3 + { + currentdict/Names known{ + [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt + }{ + [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt + }ifelse + }{ + [/Indexed MappedCSA HiVal + [ + currentdict/Names known{ + Lookup dup type/stringtype eq + {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} + {/exec cvx}ifelse + /TintTransform load/exec cvx + }{ + Lookup dup type/stringtype eq + {/exch cvx/get cvx 255/div cvx} + {/exec cvx}ifelse + CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx + }ifelse + ]cvx + ]setcolorspace_opt + }ifelse + }ifelse + end + set_crd + } + { + CSA map_csa + AGMCORE_host_sep level2 not and{ + 0 0 0 0 setcmykcolor + }{ + [/Indexed MappedCSA + level2 not has_color not and{ + dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ + pop[/DeviceGray] + }if + HiVal GrayLookup + }{ + HiVal + currentdict/RangeArray known{ + { + /indexed_colorspace_dict AGMCORE_gget begin + Lookup exch + dup HiVal gt{ + pop HiVal + }if + NComponents mul NComponents getinterval{}forall + NComponents 1 sub -1 0{ + RangeArray exch 2 mul 2 getinterval aload pop map255_to_range + NComponents 1 roll + }for + end + }bind + }{ + Lookup + }ifelse + }ifelse + ]setcolorspace_opt + set_crd + }ifelse + }ifelse + end +}def +/setindexedcolor +{ + AGMCORE_host_sep{ + /indexed_colorspace_dict AGMCORE_gget + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + map_indexed_devn + devn + } + { + Lookup 1 3 -1 roll map_index + sep + }ifelse + end + }{ + Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll + map_index + MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse + }ifelse + end + }{ + level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ + /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin + map_indexed_devn + devn + end + } + { + setcolor + }ifelse + }ifelse +}def +/ignoreimagedata +{ + currentoverprint not{ + gsave + dup clonedict begin + 1 setgray + /Decode[0 1]def + /DataSource<FF>def + /MultipleDataSources false def + /BitsPerComponent 8 def + currentdict end + systemdict/image gx + grestore + }if + consumeimagedata +}def +/add_res +{ + dup/CSD eq{ + pop + //Adobe_AGM_Core begin + /AGMCORE_CSD_cache load 3 1 roll put + end + }{ + defineresource pop + }ifelse +}def +/del_res +{ + { + aload pop exch + dup/CSD eq{ + pop + {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall + }{ + exch + {1 index undefineresource}forall + pop + }ifelse + }forall +}def +/get_res +{ + dup/CSD eq{ + pop + dup type dup/nametype eq exch/stringtype eq or{ + AGMCORE_CSD_cache exch get + }if + }{ + findresource + }ifelse +}def +/get_csa_by_name +{ + dup type dup/nametype eq exch/stringtype eq or{ + /CSA get_res + }if +}def +/paintproc_buf_init +{ + /count get 0 0 put +}def +/paintproc_buf_next +{ + dup/count get dup 0 get + dup 3 1 roll + 1 add 0 xpt + get +}def +/cachepaintproc_compress +{ + 5 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + /string_size 16000 def + /readbuffer string_size string def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + /LZWFilter + { + exch + dup length 0 eq{ + pop + }{ + ppdict dup length 1 sub 3 -1 roll put + }ifelse + {string_size}{0}ifelse string + }/LZWEncode filter def + { + ReadFilter readbuffer readstring + exch LZWFilter exch writestring + not{exit}if + }loop + LZWFilter closefile + ppdict + end +}def +/cachepaintproc +{ + 2 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + { + ReadFilter 16000 string readstring exch + ppdict dup length 1 sub 3 -1 roll put + not{exit}if + }loop + ppdict dup dup length 1 sub()put + end +}def +/make_pattern +{ + exch clonedict exch + dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform + exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub + exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub + matrix translate exch matrix concatmatrix + 1 index begin + BBox 0 get XStep div cvi XStep mul/xshift exch neg def + BBox 1 get YStep div cvi YStep mul/yshift exch neg def + BBox 0 get xshift add + BBox 1 get yshift add + BBox 2 get xshift add + BBox 3 get yshift add + 4 array astore + /BBox exch def + [xshift yshift/translate load null/exec load]dup + 3/PaintProc load put cvx/PaintProc exch def + end + gsave 0 setgray + makepattern + grestore +}def +/set_pattern +{ + dup/PatternType get 1 eq{ + dup/PaintType get 1 eq{ + currentoverprint sop[/DeviceGray]setcolorspace 0 setgray + }if + }if + setpattern +}def +/setcolorspace_opt +{ + dup currentcolorspace eq{pop}{setcolorspace}ifelse +}def +/updatecolorrendering +{ + currentcolorrendering/RenderingIntent known{ + currentcolorrendering/RenderingIntent get + } + { + Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/Saturation eq + { + /saturation_crd AGMCORE_gget dup null eq + } + { + /perceptual_crd AGMCORE_gget dup null eq + }ifelse + }ifelse + }ifelse + { + pop null + } + { + /RenderingIntent known{null}{Intent}ifelse + }ifelse + }ifelse + Intent ne{ + Intent/ColorRendering{findresource}stopped + { + pop pop systemdict/findcolorrendering known + { + Intent findcolorrendering + { + /ColorRendering findresource true exch + } + { + /ColorRendering findresource + product(Xerox Phaser 5400)ne + exch + }ifelse + dup Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd exch AGMCORE_gput + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd exch AGMCORE_gput + } + { + Intent/Saturation eq + { + /saturation_crd exch AGMCORE_gput + } + { + Intent/Perceptual eq + { + /perceptual_crd exch AGMCORE_gput + } + { + pop + }ifelse + }ifelse + }ifelse + }ifelse + 1 index{exch}{pop}ifelse + } + {false}ifelse + } + {true}ifelse + { + dup begin + currentdict/TransformPQR known{ + currentdict/TransformPQR get aload pop + 3{{}eq 3 1 roll}repeat or or + } + {true}ifelse + currentdict/MatrixPQR known{ + currentdict/MatrixPQR get aload pop + 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq + and and and and and and and and + } + {true}ifelse + end + or + { + clonedict begin + /TransformPQR[ + {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div + 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind + {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div + 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind + {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div + 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind + ]def + /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def + /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def + currentdict end + }if + setcolorrendering_opt + }if + }if +}def +/set_crd +{ + AGMCORE_host_sep not level2 and{ + currentdict/ColorRendering known{ + ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if + }{ + currentdict/Intent known{ + updatecolorrendering + }if + }ifelse + currentcolorspace dup type/arraytype eq + {0 get}if + /DeviceRGB eq + { + currentdict/UCR known + {/UCR}{/AGMCORE_currentucr}ifelse + load setundercolorremoval + currentdict/BG known + {/BG}{/AGMCORE_currentbg}ifelse + load setblackgeneration + }if + }if +}def +/set_ucrbg +{ + dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration + dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval +}def +/setcolorrendering_opt +{ + dup currentcolorrendering eq{ + pop + }{ + clonedict + begin + /Intent Intent def + currentdict + end + setcolorrendering + }ifelse +}def +/cpaint_gcomp +{ + convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not + { + (%end_cpaint_gcomp)flushinput + }if +}def +/cpaint_gsep +{ + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get + { + (%end_cpaint_gsep)flushinput + }if +}def +/cpaint_gend +{np}def +/T1_path +{ + currentfile token pop currentfile token pop mo + { + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 exch rlineto + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 rlineto + }loop +}def +/T1_gsave + level3 + {/clipsave} + {/gsave}ifelse + load def +/T1_grestore + level3 + {/cliprestore} + {/grestore}ifelse + load def +/set_spot_alias_ary +{ + dup inherit_aliases + //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf +}def +/set_spot_normalization_ary +{ + dup inherit_aliases + dup length + /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if + array + //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf + /AGMCORE_SpotAliasAry where{ + pop + AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval + AGMCORE_SpotAliasAry length + }{0}ifelse + AGMCORE_SpotAliasAry2 3 1 roll exch putinterval + true set_spot_alias +}def +/inherit_aliases +{ + {dup/Name get map_alias{/CSD put}{pop}ifelse}forall +}def +/set_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias 3 -1 roll put + }{ + pop + }ifelse +}def +/current_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias get + }{ + false + }ifelse +}def +/map_alias +{ + /AGMCORE_SpotAliasAry2 where{ + begin + /AGMCORE_name xdf + false + AGMCORE_SpotAliasAry2{ + dup/Name get AGMCORE_name eq{ + /CSD get/CSD get_res + exch pop true + exit + }{ + pop + }ifelse + }forall + end + }{ + pop false + }ifelse +}bdf +/spot_alias +{ + true set_spot_alias + /AGMCORE_&setcustomcolor AGMCORE_key_known not{ + //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put + }if + /customcolor_tint 1 AGMCORE_gput + //Adobe_AGM_Core begin + /setcustomcolor + { + //Adobe_AGM_Core begin + dup/customcolor_tint exch AGMCORE_gput + 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not + current_spot_alias and{1 index 4 get map_alias}{false}ifelse + { + false set_spot_alias + /sep_colorspace_dict AGMCORE_gget null ne + 3 1 roll 2 index{ + exch pop/sep_tint AGMCORE_gget exch + }if + mark 3 1 roll + setsepcolorspace + counttomark 0 ne{ + setsepcolor + }if + pop + not{/sep_tint 1.0 AGMCORE_gput}if + pop + true set_spot_alias + }{ + AGMCORE_&setcustomcolor + }ifelse + end + }bdf + end +}def +/begin_feature +{ + Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put + count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put + {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if +}def +/end_feature +{ + 2 dict begin + /spd/setpagedevice load def + /setpagedevice{get_gstate spd set_gstate}def + stopped{$error/newerror false put}if + end + count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse + countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse + {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if +}def +/set_negative +{ + //Adobe_AGM_Core begin + /AGMCORE_inverting exch def + level2{ + currentpagedevice/NegativePrint known AGMCORE_distilling not and{ + currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ + true begin_feature true{ + <</NegativePrint//Adobe_AGM_Core/AGMCORE_inverting get>>setpagedevice + }end_feature + }if + /AGMCORE_inverting false def + }if + }if + AGMCORE_inverting{ + [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer + AGMCORE_distilling{ + erasepage + }{ + gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse + /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore + }ifelse + }if + end +}def +/lw_save_restore_override{ + /md where{ + pop + md begin + initializepage + /initializepage{}def + /pmSVsetup{}def + /endp{}def + /pse{}def + /psb{}def + /orig_showpage where + {pop} + {/orig_showpage/showpage load def} + ifelse + /showpage{orig_showpage gR}def + end + }if +}def +/pscript_showpage_override{ + /NTPSOct95 where + { + begin + showpage + save + /showpage/restore load def + /restore{exch pop}def + end + }if +}def +/driver_media_override +{ + /md where{ + pop + md/initializepage known{ + md/initializepage{}put + }if + md/rC known{ + md/rC{4{pop}repeat}put + }if + }if + /mysetup where{ + /mysetup[1 0 0 1 0 0]put + }if + Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put + level2 + {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if +}def +/driver_check_media_override +{ + /PrepsDict where + {pop} + { + Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne + Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and + Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and + }if + { + Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix + }if + }ifelse +}def +AGMCORE_err_strings begin + /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def + /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def + /AGMCORE_invalid_color_space(This job contains an invalid color space. )def +end +/set_def_ht +{AGMCORE_def_ht sethalftone}def +/set_def_flat +{AGMCORE_Default_flatness setflat}def +end +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_CoolType_Core 2.31 0
%%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved.
%%Version: 2.31 0
10 dict begin
/Adobe_CoolType_Passthru currentdict def
/Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def
Adobe_CoolType_Core_Defined
{/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def}
if
userdict/Adobe_CoolType_Core 70 dict dup begin put
/Adobe_CoolType_Version 2.31 def
/Level2?
systemdict/languagelevel known dup
{pop systemdict/languagelevel get 2 ge}
if def
Level2? not
{
/currentglobal false def
/setglobal/pop load def
/gcheck{pop false}bind def
/currentpacking false def
/setpacking/pop load def
/SharedFontDirectory 0 dict def
}
if
currentpacking
true setpacking
currentglobal false setglobal
userdict/Adobe_CoolType_Data 2 copy known not
{2 copy 10 dict put}
if
get
begin
/@opStackCountByLevel 32 dict def
/@opStackLevel 0 def
/@dictStackCountByLevel 32 dict def
/@dictStackLevel 0 def
end
setglobal
currentglobal true setglobal
userdict/Adobe_CoolType_GVMFonts known not
{userdict/Adobe_CoolType_GVMFonts 10 dict put}
if
setglobal
currentglobal false setglobal
userdict/Adobe_CoolType_LVMFonts known not
{userdict/Adobe_CoolType_LVMFonts 10 dict put}
if
setglobal
/ct_VMDictPut
{
dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse
3 1 roll put
}bind def
/ct_VMDictUndef
{
dup Adobe_CoolType_GVMFonts exch known
{Adobe_CoolType_GVMFonts exch undef}
{
dup Adobe_CoolType_LVMFonts exch known
{Adobe_CoolType_LVMFonts exch undef}
{pop}
ifelse
}ifelse
}bind def
/ct_str1 1 string def
/ct_xshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
_ct_x _ct_y moveto
0
rmoveto
}
ifelse
/_ct_i _ct_i 1 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/ct_yshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
_ct_x _ct_y moveto
0 exch
rmoveto
}
ifelse
/_ct_i _ct_i 1 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/ct_xyshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
{_ct_na _ct_i 1 add get}stopped
{pop pop pop}
{
_ct_x _ct_y moveto
rmoveto
}
ifelse
}
ifelse
/_ct_i _ct_i 2 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def
/ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def
/xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def
currentglobal true setglobal
/ct_T3Defs
{
/BuildChar
{
1 index/Encoding get exch get
1 index/BuildGlyph get exec
}bind def
/BuildGlyph
{
exch begin
GlyphProcs exch get exec
end
}bind def
}bind def
setglobal
/@_SaveStackLevels
{
Adobe_CoolType_Data
begin
/@vmState currentglobal def false setglobal
@opStackCountByLevel
@opStackLevel
2 copy known not
{
2 copy
3 dict dup/args
7 index
5 add array put
put get
}
{
get dup/args get dup length 3 index lt
{
dup length 5 add array exch
1 index exch 0 exch putinterval
1 index exch/args exch put
}
{pop}
ifelse
}
ifelse
begin
count 1 sub
1 index lt
{pop count}
if
dup/argCount exch def
dup 0 gt
{
args exch 0 exch getinterval
astore pop
}
{pop}
ifelse
count
/restCount exch def
end
/@opStackLevel @opStackLevel 1 add def
countdictstack 1 sub
@dictStackCountByLevel exch @dictStackLevel exch put
/@dictStackLevel @dictStackLevel 1 add def
@vmState setglobal
end
}bind def
/@_RestoreStackLevels
{
Adobe_CoolType_Data
begin
/@opStackLevel @opStackLevel 1 sub def
@opStackCountByLevel @opStackLevel get
begin
count restCount sub dup 0 gt
{{pop}repeat}
{pop}
ifelse
args 0 argCount getinterval{}forall
end
/@dictStackLevel @dictStackLevel 1 sub def
@dictStackCountByLevel @dictStackLevel get
end
countdictstack exch sub dup 0 gt
{{end}repeat}
{pop}
ifelse
}bind def
/@_PopStackLevels
{
Adobe_CoolType_Data
begin
/@opStackLevel @opStackLevel 1 sub def
/@dictStackLevel @dictStackLevel 1 sub def
end
}bind def
/@Raise
{
exch cvx exch errordict exch get exec
stop
}bind def
/@ReRaise
{
cvx $error/errorname get errordict exch get exec
stop
}bind def
/@Stopped
{
0 @#Stopped
}bind def
/@#Stopped
{
@_SaveStackLevels
stopped
{@_RestoreStackLevels true}
{@_PopStackLevels false}
ifelse
}bind def
/@Arg
{
Adobe_CoolType_Data
begin
@opStackCountByLevel @opStackLevel 1 sub get
begin
args exch
argCount 1 sub exch sub get
end
end
}bind def
currentglobal true setglobal
/CTHasResourceForAllBug
Level2?
{
1 dict dup
/@shouldNotDisappearDictValue true def
Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put
begin
count @_SaveStackLevels
{(*){pop stop}128 string/Category resourceforall}
stopped pop
@_RestoreStackLevels
currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll
{
/@shouldNotDisappearDictValue known
{
{
end
currentdict 1 index eq
{pop exit}
if
}
loop
}
if
}
{
pop
end
}
ifelse
}
{false}
ifelse
def
true setglobal
/CTHasResourceStatusBug
Level2?
{
mark
{/steveamerige/Category resourcestatus}
stopped
{cleartomark true}
{cleartomark currentglobal not}
ifelse
}
{false}
ifelse
def
setglobal
/CTResourceStatus
{
mark 3 1 roll
/Category findresource
begin
({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
{cleartomark false}
{{3 2 roll pop true}{cleartomark false}ifelse}
ifelse
end
}bind def
/CTWorkAroundBugs
{
Level2?
{
/cid_PreLoad/ProcSet resourcestatus
{
pop pop
currentglobal
mark
{
(*)
{
dup/CMap CTHasResourceStatusBug
{CTResourceStatus}
{resourcestatus}
ifelse
{
pop dup 0 eq exch 1 eq or
{
dup/CMap findresource gcheck setglobal
/CMap undefineresource
}
{
pop CTHasResourceForAllBug
{exit}
{stop}
ifelse
}
ifelse
}
{pop}
ifelse
}
128 string/CMap resourceforall
}
stopped
{cleartomark}
stopped pop
setglobal
}
if
}
if
}bind def
/ds
{
Adobe_CoolType_Core
begin
CTWorkAroundBugs
/mo/moveto load def
/nf/newencodedfont load def
/msf{makefont setfont}bind def
/uf{dup undefinefont ct_VMDictUndef}bind def
/ur/undefineresource load def
/chp/charpath load def
/awsh/awidthshow load def
/wsh/widthshow load def
/ash/ashow load def
/@xshow/xshow load def
/@yshow/yshow load def
/@xyshow/xyshow load def
/@cshow/cshow load def
/sh/show load def
/rp/repeat load def
/.n/.notdef def
end
currentglobal false setglobal
userdict/Adobe_CoolType_Data 2 copy known not
{2 copy 10 dict put}
if
get
begin
/AddWidths? false def
/CC 0 def
/charcode 2 string def
/@opStackCountByLevel 32 dict def
/@opStackLevel 0 def
/@dictStackCountByLevel 32 dict def
/@dictStackLevel 0 def
/InVMFontsByCMap 10 dict def
/InVMDeepCopiedFonts 10 dict def
end
setglobal
}bind def
/dt
{
currentdict Adobe_CoolType_Core eq
{end}
if
}bind def
/ps
{
Adobe_CoolType_Core begin
Adobe_CoolType_GVMFonts begin
Adobe_CoolType_LVMFonts begin
SharedFontDirectory begin
}bind def
/pt
{
end
end
end
end
}bind def
/unload
{
systemdict/languagelevel known
{
systemdict/languagelevel get 2 ge
{
userdict/Adobe_CoolType_Core 2 copy known
{undef}
{pop pop}
ifelse
}
if
}
if
}bind def
/ndf
{
1 index where
{pop pop pop}
{dup xcheck{bind}if def}
ifelse
}def
/findfont systemdict
begin
userdict
begin
/globaldict where{/globaldict get begin}if
dup where pop exch get
/globaldict where{pop end}if
end
end
Adobe_CoolType_Core_Defined
{/systemfindfont exch def}
{
/findfont 1 index def
/systemfindfont exch def
}
ifelse
/undefinefont
{pop}ndf
/copyfont
{
currentglobal 3 1 roll
1 index gcheck setglobal
dup null eq{0}{dup length}ifelse
2 index length add 1 add dict
begin
exch
{
1 index/FID eq
{pop pop}
{def}
ifelse
}
forall
dup null eq
{pop}
{{def}forall}
ifelse
currentdict
end
exch setglobal
}bind def
/copyarray
{
currentglobal exch
dup gcheck setglobal
dup length array copy
exch setglobal
}bind def
/newencodedfont
{
currentglobal
{
SharedFontDirectory 3 index known
{SharedFontDirectory 3 index get/FontReferenced known}
{false}
ifelse
}
{
FontDirectory 3 index known
{FontDirectory 3 index get/FontReferenced known}
{
SharedFontDirectory 3 index known
{SharedFontDirectory 3 index get/FontReferenced known}
{false}
ifelse
}
ifelse
}
ifelse
dup
{
3 index findfont/FontReferenced get
2 index dup type/nametype eq
{findfont}
if ne
{pop false}
if
}
if
dup
{
1 index dup type/nametype eq
{findfont}
if
dup/CharStrings known
{
/CharStrings get length
4 index findfont/CharStrings get length
ne
{
pop false
}
if
}
{pop}
ifelse
}
if
{
pop
1 index findfont
/Encoding get exch
0 1 255
{2 copy get 3 index 3 1 roll put}
for
pop pop pop
}
{
currentglobal
4 1 roll
dup type/nametype eq
{findfont}
if
dup gcheck setglobal
dup dup maxlength 2 add dict
begin
exch
{
1 index/FID ne
2 index/Encoding ne and
{def}
{pop pop}
ifelse
}
forall
/FontReferenced exch def
/Encoding exch dup length array copy def
/FontName 1 index dup type/stringtype eq{cvn}if def dup
currentdict
end
definefont ct_VMDictPut
setglobal
}
ifelse
}bind def
/SetSubstituteStrategy
{
$SubstituteFont
begin
dup type/dicttype ne
{0 dict}
if
currentdict/$Strategies known
{
exch $Strategies exch
2 copy known
{
get
2 copy maxlength exch maxlength add dict
begin
{def}forall
{def}forall
currentdict
dup/$Init known
{dup/$Init get exec}
if
end
/$Strategy exch def
}
{pop pop pop}
ifelse
}
{pop pop}
ifelse
end
}bind def
/scff
{
$SubstituteFont
begin
dup type/stringtype eq
{dup length exch}
{null}
ifelse
/$sname exch def
/$slen exch def
/$inVMIndex
$sname null eq
{
1 index $str cvs
dup length $slen sub $slen getinterval cvn
}
{$sname}
ifelse def
end
{findfont}
@Stopped
{
dup length 8 add string exch
1 index 0(BadFont:)putinterval
1 index exch 8 exch dup length string cvs putinterval cvn
{findfont}
@Stopped
{pop/Courier findfont}
if
}
if
$SubstituteFont
begin
/$sname null def
/$slen 0 def
/$inVMIndex null def
end
}bind def
/isWidthsOnlyFont
{
dup/WidthsOnly known
{pop pop true}
{
dup/FDepVector known
{/FDepVector get{isWidthsOnlyFont dup{exit}if}forall}
{
dup/FDArray known
{/FDArray get{isWidthsOnlyFont dup{exit}if}forall}
{pop}
ifelse
}
ifelse
}
ifelse
}bind def
/ct_StyleDicts 4 dict dup begin
/Adobe-Japan1 4 dict dup begin
Level2?
{
/Serif
/HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiMin-W3}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiMin-W3/CIDFont resourcestatus
{pop pop/HeiseiMin-W3}
{/Ryumin-Light}
ifelse
}
{/Ryumin-Light}
ifelse
}
ifelse
def
/SansSerif
/HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiKakuGo-W5}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiKakuGo-W5/CIDFont resourcestatus
{pop pop/HeiseiKakuGo-W5}
{/GothicBBB-Medium}
ifelse
}
{/GothicBBB-Medium}
ifelse
}
ifelse
def
/HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiMaruGo-W4}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiMaruGo-W4/CIDFont resourcestatus
{pop pop/HeiseiMaruGo-W4}
{
/Jun101-Light-RKSJ-H/Font resourcestatus
{pop pop/Jun101-Light}
{SansSerif}
ifelse
}
ifelse
}
{
/Jun101-Light-RKSJ-H/Font resourcestatus
{pop pop/Jun101-Light}
{SansSerif}
ifelse
}
ifelse
}
ifelse
/RoundSansSerif exch def
/Default Serif def
}
{
/Serif/Ryumin-Light def
/SansSerif/GothicBBB-Medium def
{
(fonts/Jun101-Light-83pv-RKSJ-H)status
}stopped
{pop}{
{pop pop pop pop/Jun101-Light}
{SansSerif}
ifelse
/RoundSansSerif exch def
}ifelse
/Default Serif def
}
ifelse
end
def
/Adobe-Korea1 4 dict dup begin
/Serif/HYSMyeongJo-Medium def
/SansSerif/HYGoThic-Medium def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
/Adobe-GB1 4 dict dup begin
/Serif/STSong-Light def
/SansSerif/STHeiti-Regular def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
/Adobe-CNS1 4 dict dup begin
/Serif/MKai-Medium def
/SansSerif/MHei-Medium def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
end
def
Level2?{currentglobal true setglobal}if
/ct_BoldRomanWidthProc
{
stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth
0 0
}bind def
/ct_Type0WidthProc
{
dup stringwidth 0 0 moveto
2 index true charpath pathbbox
0 -1
7 index 2 div .88
setcachedevice2
pop
0 0
}bind def
/ct_Type0WMode1WidthProc
{
dup stringwidth
pop 2 div neg -0.88
2 copy
moveto
0 -1
5 -1 roll true charpath pathbbox
setcachedevice
}bind def
/cHexEncoding
[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
/ct_BoldBaseFont
11 dict begin
/FontType 3 def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/Encoding cHexEncoding def
/_setwidthProc/ct_BoldRomanWidthProc load def
/_bcstr1 1 string def
/BuildChar
{
exch begin
_basefont setfont
_bcstr1 dup 0 4 -1 roll put
dup
_setwidthProc
3 copy
moveto
show
_basefonto setfont
moveto
show
end
}bind def
currentdict
end
def
systemdict/composefont known
{
/ct_DefineIdentity-H
{
/Identity-H/CMap resourcestatus
{
pop pop
}
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry(Adobe)def
/Ordering(Identity)def
/Supplement 0 def
end def
/CMapName/Identity-H def
/CMapVersion 1.000 def
/CMapType 1 def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
}
def
/ct_BoldBaseCIDFont
11 dict begin
/CIDFontType 1 def
/CIDFontName/ct_BoldBaseCIDFont def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/_setwidthProc/ct_Type0WidthProc load def
/_bcstr2 2 string def
/BuildGlyph
{
exch begin
_basefont setfont
_bcstr2 1 2 index 256 mod put
_bcstr2 0 3 -1 roll 256 idiv put
_bcstr2 dup _setwidthProc
3 copy
moveto
show
_basefonto setfont
moveto
show
end
}bind def
currentdict
end
def
}if
Level2?{setglobal}if
/ct_CopyFont{
{
1 index/FID ne 2 index/UniqueID ne and
{def}{pop pop}ifelse
}forall
}bind def
/ct_Type0CopyFont
{
exch
dup length dict
begin
ct_CopyFont
[
exch
FDepVector
{
dup/FontType get 0 eq
{
1 index ct_Type0CopyFont
/_ctType0 exch definefont
}
{
/_ctBaseFont exch
2 index exec
}
ifelse
exch
}
forall
pop
]
/FDepVector exch def
currentdict
end
}bind def
/ct_MakeBoldFont
{
dup/ct_SyntheticBold known
{
dup length 3 add dict begin
ct_CopyFont
/ct_StrokeWidth .03 0 FontMatrix idtransform pop def
/ct_SyntheticBold true def
currentdict
end
definefont
}
{
dup dup length 3 add dict
begin
ct_CopyFont
/PaintType 2 def
/StrokeWidth .03 0 FontMatrix idtransform pop def
/dummybold currentdict
end
definefont
dup/FontType get dup 9 ge exch 11 le and
{
ct_BoldBaseCIDFont
dup length 3 add dict copy begin
dup/CIDSystemInfo get/CIDSystemInfo exch def
ct_DefineIdentity-H
/_Type0Identity/Identity-H 3 -1 roll[exch]composefont
/_basefont exch def
/_Type0Identity/Identity-H 3 -1 roll[exch]composefont
/_basefonto exch def
currentdict
end
/CIDFont defineresource
}
{
ct_BoldBaseFont
dup length 3 add dict copy begin
/_basefont exch def
/_basefonto exch def
currentdict
end
definefont
}
ifelse
}
ifelse
}bind def
/ct_MakeBold{
1 index
1 index
findfont
currentglobal 5 1 roll
dup gcheck setglobal
dup
/FontType get 0 eq
{
dup/WMode known{dup/WMode get 1 eq}{false}ifelse
version length 4 ge
and
{version 0 4 getinterval cvi 2015 ge}
{true}
ifelse
{/ct_Type0WidthProc}
{/ct_Type0WMode1WidthProc}
ifelse
ct_BoldBaseFont/_setwidthProc 3 -1 roll load put
{ct_MakeBoldFont}ct_Type0CopyFont definefont
}
{
dup/_fauxfont known not 1 index/SubstMaster known not and
{
ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put
ct_MakeBoldFont
}
{
2 index 2 index eq
{exch pop }
{
dup length dict begin
ct_CopyFont
currentdict
end
definefont
}
ifelse
}
ifelse
}
ifelse
pop pop pop
setglobal
}bind def
/?str1 256 string def
/?set
{
$SubstituteFont
begin
/$substituteFound false def
/$fontname 1 index def
/$doSmartSub false def
end
dup
findfont
$SubstituteFont
begin
$substituteFound
{false}
{
dup/FontName known
{
dup/FontName get $fontname eq
1 index/DistillerFauxFont known not and
/currentdistillerparams where
{pop false 2 index isWidthsOnlyFont not and}
if
}
{false}
ifelse
}
ifelse
exch pop
/$doSmartSub true def
end
{
5 1 roll pop pop pop pop
findfont
}
{
1 index
findfont
dup/FontType get 3 eq
{
6 1 roll pop pop pop pop pop false
}
{pop true}
ifelse
{
$SubstituteFont
begin
pop pop
/$styleArray 1 index def
/$regOrdering 2 index def
pop pop
0 1 $styleArray length 1 sub
{
$styleArray exch get
ct_StyleDicts $regOrdering
2 copy known
{
get
exch 2 copy known not
{pop/Default}
if
get
dup type/nametype eq
{
?str1 cvs length dup 1 add exch
?str1 exch(-)putinterval
exch dup length exch ?str1 exch 3 index exch putinterval
add ?str1 exch 0 exch getinterval cvn
}
{
pop pop/Unknown
}
ifelse
}
{
pop pop pop pop/Unknown
}
ifelse
}
for
end
findfont
}if
}
ifelse
currentglobal false setglobal 3 1 roll
null copyfont definefont pop
setglobal
}bind def
setpacking
userdict/$SubstituteFont 25 dict put
1 dict
begin
/SubstituteFont
dup $error exch 2 copy known
{get}
{pop pop{pop/Courier}bind}
ifelse def
/currentdistillerparams where dup
{
pop pop
currentdistillerparams/CannotEmbedFontPolicy 2 copy known
{get/Error eq}
{pop pop false}
ifelse
}
if not
{
countdictstack array dictstack 0 get
begin
userdict
begin
$SubstituteFont
begin
/$str 128 string def
/$fontpat 128 string def
/$slen 0 def
/$sname null def
/$match false def
/$fontname null def
/$substituteFound false def
/$inVMIndex null def
/$doSmartSub true def
/$depth 0 def
/$fontname null def
/$italicangle 26.5 def
/$dstack null def
/$Strategies 10 dict dup
begin
/$Type3Underprint
{
currentglobal exch false setglobal
11 dict
begin
/UseFont exch
$WMode 0 ne
{
dup length dict copy
dup/WMode $WMode put
/UseFont exch definefont
}
if def
/FontName $fontname dup type/stringtype eq{cvn}if def
/FontType 3 def
/FontMatrix[.001 0 0 .001 0 0]def
/Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def
/FontBBox[0 0 0 0]def
/CCInfo 7 dict dup
begin
/cc null def
/x 0 def
/y 0 def
end def
/BuildChar
{
exch
begin
CCInfo
begin
1 string dup 0 3 index put exch pop
/cc exch def
UseFont 1000 scalefont setfont
cc stringwidth/y exch def/x exch def
x y setcharwidth
$SubstituteFont/$Strategy get/$Underprint get exec
0 0 moveto cc show
x y moveto
end
end
}bind def
currentdict
end
exch setglobal
}bind def
/$GetaTint
2 dict dup
begin
/$BuildFont
{
dup/WMode known
{dup/WMode get}
{0}
ifelse
/$WMode exch def
$fontname exch
dup/FontName known
{
dup/FontName get
dup type/stringtype eq{cvn}if
}
{/unnamedfont}
ifelse
exch
Adobe_CoolType_Data/InVMDeepCopiedFonts get
1 index/FontName get known
{
pop
Adobe_CoolType_Data/InVMDeepCopiedFonts get
1 index get
null copyfont
}
{$deepcopyfont}
ifelse
exch 1 index exch/FontBasedOn exch put
dup/FontName $fontname dup type/stringtype eq{cvn}if put
definefont
Adobe_CoolType_Data/InVMDeepCopiedFonts get
begin
dup/FontBasedOn get 1 index def
end
}bind def
/$Underprint
{
gsave
x abs y abs gt
{/y 1000 def}
{/x -1000 def 500 120 translate}
ifelse
Level2?
{
[/Separation(All)/DeviceCMYK{0 0 0 1 pop}]
setcolorspace
}
{0 setgray}
ifelse
10 setlinewidth
x .8 mul
[7 3]
{
y mul 8 div 120 sub x 10 div exch moveto
0 y 4 div neg rlineto
dup 0 rlineto
0 y 4 div rlineto
closepath
gsave
Level2?
{.2 setcolor}
{.8 setgray}
ifelse
fill grestore
stroke
}
forall
pop
grestore
}bind def
end def
/$Oblique
1 dict dup
begin
/$BuildFont
{
currentglobal exch dup gcheck setglobal
null copyfont
begin
/FontBasedOn
currentdict/FontName known
{
FontName
dup type/stringtype eq{cvn}if
}
{/unnamedfont}
ifelse
def
/FontName $fontname dup type/stringtype eq{cvn}if def
/currentdistillerparams where
{pop}
{
/FontInfo currentdict/FontInfo known
{FontInfo null copyfont}
{2 dict}
ifelse
dup
begin
/ItalicAngle $italicangle def
/FontMatrix FontMatrix
[1 0 ItalicAngle dup sin exch cos div 1 0 0]
matrix concatmatrix readonly
end
4 2 roll def
def
}
ifelse
FontName currentdict
end
definefont
exch setglobal
}bind def
end def
/$None
1 dict dup
begin
/$BuildFont{}bind def
end def
end def
/$Oblique SetSubstituteStrategy
/$findfontByEnum
{
dup type/stringtype eq{cvn}if
dup/$fontname exch def
$sname null eq
{$str cvs dup length $slen sub $slen getinterval}
{pop $sname}
ifelse
$fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval
/$match false def
$SubstituteFont/$dstack countdictstack array dictstack put
mark
{
$fontpat 0 $slen 7 add getinterval
{/$match exch def exit}
$str filenameforall
}
stopped
{
cleardictstack
currentdict
true
$SubstituteFont/$dstack get
{
exch
{
1 index eq
{pop false}
{true}
ifelse
}
{begin false}
ifelse
}
forall
pop
}
if
cleartomark
/$slen 0 def
$match false ne
{$match(fonts/)anchorsearch pop pop cvn}
{/Courier}
ifelse
}bind def
/$ROS 1 dict dup
begin
/Adobe 4 dict dup
begin
/Japan1 [/Ryumin-Light/HeiseiMin-W3
/GothicBBB-Medium/HeiseiKakuGo-W5
/HeiseiMaruGo-W4/Jun101-Light]def
/Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def
/GB1 [/STSong-Light/STHeiti-Regular]def
/CNS1 [/MKai-Medium/MHei-Medium]def
end def
end def
/$cmapname null def
/$deepcopyfont
{
dup/FontType get 0 eq
{
1 dict dup/FontName/copied put copyfont
begin
/FDepVector FDepVector copyarray
0 1 2 index length 1 sub
{
2 copy get $deepcopyfont
dup/FontName/copied put
/copied exch definefont
3 copy put pop pop
}
for
def
currentdict
end
}
{$Strategies/$Type3Underprint get exec}
ifelse
}bind def
/$buildfontname
{
dup/CIDFont findresource/CIDSystemInfo get
begin
Registry length Ordering length Supplement 8 string cvs
3 copy length 2 add add add string
dup 5 1 roll dup 0 Registry putinterval
dup 4 index(-)putinterval
dup 4 index 1 add Ordering putinterval
4 2 roll add 1 add 2 copy(-)putinterval
end
1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch
anchorsearch
{pop pop 3 2 roll putinterval cvn/$cmapname exch def}
{pop pop pop pop pop}
ifelse
length
$str 1 index(-)putinterval 1 add
$str 1 index $cmapname $fontpat cvs putinterval
$cmapname length add
$str exch 0 exch getinterval cvn
}bind def
/$findfontByROS
{
/$fontname exch def
$ROS Registry 2 copy known
{
get Ordering 2 copy known
{get}
{pop pop[]}
ifelse
}
{pop pop[]}
ifelse
false exch
{
dup/CIDFont resourcestatus
{
pop pop
save
1 index/CIDFont findresource
dup/WidthsOnly known
{dup/WidthsOnly get}
{false}
ifelse
exch pop
exch restore
{pop}
{exch pop true exit}
ifelse
}
{pop}
ifelse
}
forall
{$str cvs $buildfontname}
{
false(*)
{
save exch
dup/CIDFont findresource
dup/WidthsOnly known
{dup/WidthsOnly get not}
{true}
ifelse
exch/CIDSystemInfo get
dup/Registry get Registry eq
exch/Ordering get Ordering eq and and
{exch restore exch pop true exit}
{pop restore}
ifelse
}
$str/CIDFont resourceforall
{$buildfontname}
{$fontname $findfontByEnum}
ifelse
}
ifelse
}bind def
end
end
currentdict/$error known currentdict/languagelevel known and dup
{pop $error/SubstituteFont known}
if
dup
{$error}
{Adobe_CoolType_Core}
ifelse
begin
{
/SubstituteFont
/CMap/Category resourcestatus
{
pop pop
{
$SubstituteFont
begin
/$substituteFound true def
dup length $slen gt
$sname null ne or
$slen 0 gt and
{
$sname null eq
{dup $str cvs dup length $slen sub $slen getinterval cvn}
{$sname}
ifelse
Adobe_CoolType_Data/InVMFontsByCMap get
1 index 2 copy known
{
get
false exch
{
pop
currentglobal
{
GlobalFontDirectory 1 index known
{exch pop true exit}
{pop}
ifelse
}
{
FontDirectory 1 index known
{exch pop true exit}
{
GlobalFontDirectory 1 index known
{exch pop true exit}
{pop}
ifelse
}
ifelse
}
ifelse
}
forall
}
{pop pop false}
ifelse
{
exch pop exch pop
}
{
dup/CMap resourcestatus
{
pop pop
dup/$cmapname exch def
/CMap findresource/CIDSystemInfo get{def}forall
$findfontByROS
}
{
128 string cvs
dup(-)search
{
3 1 roll search
{
3 1 roll pop
{dup cvi}
stopped
{pop pop pop pop pop $findfontByEnum}
{
4 2 roll pop pop
exch length
exch
2 index length
2 index
sub
exch 1 sub -1 0
{
$str cvs dup length
4 index
0
4 index
4 3 roll add
getinterval
exch 1 index exch 3 index exch
putinterval
dup/CMap resourcestatus
{
pop pop
4 1 roll pop pop pop
dup/$cmapname exch def
/CMap findresource/CIDSystemInfo get{def}forall
$findfontByROS
true exit
}
{pop}
ifelse
}
for
dup type/booleantype eq
{pop}
{pop pop pop $findfontByEnum}
ifelse
}
ifelse
}
{pop pop pop $findfontByEnum}
ifelse
}
{pop pop $findfontByEnum}
ifelse
}
ifelse
}
ifelse
}
{//SubstituteFont exec}
ifelse
/$slen 0 def
end
}
}
{
{
$SubstituteFont
begin
/$substituteFound true def
dup length $slen gt
$sname null ne or
$slen 0 gt and
{$findfontByEnum}
{//SubstituteFont exec}
ifelse
end
}
}
ifelse
bind readonly def
Adobe_CoolType_Core/scfindfont/systemfindfont load put
}
{
/scfindfont
{
$SubstituteFont
begin
dup systemfindfont
dup/FontName known
{dup/FontName get dup 3 index ne}
{/noname true}
ifelse
dup
{
/$origfontnamefound 2 index def
/$origfontname 4 index def/$substituteFound true def
}
if
exch pop
{
$slen 0 gt
$sname null ne
3 index length $slen gt or and
{
pop dup $findfontByEnum findfont
dup maxlength 1 add dict
begin
{1 index/FID eq{pop pop}{def}ifelse}
forall
currentdict
end
definefont
dup/FontName known{dup/FontName get}{null}ifelse
$origfontnamefound ne
{
$origfontname $str cvs print
( substitution revised, using )print
dup/FontName known
{dup/FontName get}{(unspecified font)}
ifelse
$str cvs print(.\n)print
}
if
}
{exch pop}
ifelse
}
{exch pop}
ifelse
end
}bind def
}
ifelse
end
end
Adobe_CoolType_Core_Defined not
{
Adobe_CoolType_Core/findfont
{
$SubstituteFont
begin
$depth 0 eq
{
/$fontname 1 index dup type/stringtype ne{$str cvs}if def
/$substituteFound false def
}
if
/$depth $depth 1 add def
end
scfindfont
$SubstituteFont
begin
/$depth $depth 1 sub def
$substituteFound $depth 0 eq and
{
$inVMIndex null ne
{dup $inVMIndex $AddInVMFont}
if
$doSmartSub
{
currentdict/$Strategy known
{$Strategy/$BuildFont get exec}
if
}
if
}
if
end
}bind put
}
if
}
if
end
/$AddInVMFont
{
exch/FontName 2 copy known
{
get
1 dict dup begin exch 1 index gcheck def end exch
Adobe_CoolType_Data/InVMFontsByCMap get exch
$DictAdd
}
{pop pop pop}
ifelse
}bind def
/$DictAdd
{
2 copy known not
{2 copy 4 index length dict put}
if
Level2? not
{
2 copy get dup maxlength exch length 4 index length add lt
2 copy get dup length 4 index length add exch maxlength 1 index lt
{
2 mul dict
begin
2 copy get{forall}def
2 copy currentdict put
end
}
{pop}
ifelse
}
if
get
begin
{def}
forall
end
}bind def
end
end
%%EndResource
currentglobal true setglobal
%%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
%%Copyright: Copyright 1987-2006 Adobe Systems Incorporated.
%%Version: 1.23 0
systemdict/languagelevel known dup
{currentglobal false setglobal}
{false}
ifelse
exch
userdict/Adobe_CoolType_Utility 2 copy known
{2 copy get dup maxlength 27 add dict copy}
{27 dict}
ifelse put
Adobe_CoolType_Utility
begin
/@eexecStartData
<BAB431EA07F209EB8C4348311481D9D3F76E3D15246555577D87BC510ED54E
118C39697FA9F6DB58128E60EB8A12FA24D7CDD2FA94D221FA9EC8DA3E5E6A1C
4ACECC8C2D39C54E7C946031DD156C3A6B4A09AD29E1867A>def
/@recognizeCIDFont null def
/ct_Level2? exch def
/ct_Clone? 1183615869 internaldict dup
/CCRun known not
exch/eCCRun known not
ct_Level2? and or def
ct_Level2?
{globaldict begin currentglobal true setglobal}
if
/ct_AddStdCIDMap
ct_Level2?
{{
mark
Adobe_CoolType_Utility/@recognizeCIDFont currentdict put
{
((Hex)57 StartData
0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0
7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60
d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8
cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec
}
stopped
{
cleartomark
Adobe_CoolType_Utility/@recognizeCIDFont get
countdictstack dup array dictstack
exch 1 sub -1 0
{
2 copy get 3 index eq
{1 index length exch sub 1 sub{end}repeat exit}
{pop}
ifelse
}
for
pop pop
Adobe_CoolType_Utility/@eexecStartData get eexec
}
{cleartomark}
ifelse
}}
{{
Adobe_CoolType_Utility/@eexecStartData get eexec
}}
ifelse bind def
userdict/cid_extensions known
dup{cid_extensions/cid_UpdateDB known and}if
{
cid_extensions
begin
/cid_GetCIDSystemInfo
{
1 index type/stringtype eq
{exch cvn exch}
if
cid_extensions
begin
dup load 2 index known
{
2 copy
cid_GetStatusInfo
dup null ne
{
1 index load
3 index get
dup null eq
{pop pop cid_UpdateDB}
{
exch
1 index/Created get eq
{exch pop exch pop}
{pop cid_UpdateDB}
ifelse
}
ifelse
}
{pop cid_UpdateDB}
ifelse
}
{cid_UpdateDB}
ifelse
end
}bind def
end
}
if
ct_Level2?
{end setglobal}
if
/ct_UseNativeCapability? systemdict/composefont known def
/ct_MakeOCF 35 dict def
/ct_Vars 25 dict def
/ct_GlyphDirProcs 6 dict def
/ct_BuildCharDict 15 dict dup
begin
/charcode 2 string def
/dst_string 1500 string def
/nullstring()def
/usewidths? true def
end def
ct_Level2?{setglobal}{pop}ifelse
ct_GlyphDirProcs
begin
/GetGlyphDirectory
{
systemdict/languagelevel known
{pop/CIDFont findresource/GlyphDirectory get}
{
1 index/CIDFont findresource/GlyphDirectory
get dup type/dicttype eq
{
dup dup maxlength exch length sub 2 index lt
{
dup length 2 index add dict copy 2 index
/CIDFont findresource/GlyphDirectory 2 index put
}
if
}
if
exch pop exch pop
}
ifelse
+
}def
/+
{
systemdict/languagelevel known
{
currentglobal false setglobal
3 dict begin
/vm exch def
}
{1 dict begin}
ifelse
/$ exch def
systemdict/languagelevel known
{
vm setglobal
/gvm currentglobal def
$ gcheck setglobal
}
if
?{$ begin}if
}def
/?{$ type/dicttype eq}def
/|{
userdict/Adobe_CoolType_Data known
{
Adobe_CoolType_Data/AddWidths? known
{
currentdict Adobe_CoolType_Data
begin
begin
AddWidths?
{
Adobe_CoolType_Data/CC 3 index put
?{def}{$ 3 1 roll put}ifelse
CC charcode exch 1 index 0 2 index 256 idiv put
1 index exch 1 exch 256 mod put
stringwidth 2 array astore
currentfont/Widths get exch CC exch put
}
{?{def}{$ 3 1 roll put}ifelse}
ifelse
end
end
}
{?{def}{$ 3 1 roll put}ifelse} ifelse
}
{?{def}{$ 3 1 roll put}ifelse}
ifelse
}def
/!
{
?{end}if
systemdict/languagelevel known
{gvm setglobal}
if
end
}def
/:{string currentfile exch readstring pop}executeonly def
end
ct_MakeOCF
begin
/ct_cHexEncoding
[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
/ct_CID_STR_SIZE 8000 def
/ct_mkocfStr100 100 string def
/ct_defaultFontMtx[.001 0 0 .001 0 0]def
/ct_1000Mtx[1000 0 0 1000 0 0]def
/ct_raise{exch cvx exch errordict exch get exec stop}bind def
/ct_reraise
{cvx $error/errorname get(Error: )print dup( )cvs print
errordict exch get exec stop
}bind def
/ct_cvnsi
{
1 index add 1 sub 1 exch 0 4 1 roll
{
2 index exch get
exch 8 bitshift
add
}
for
exch pop
}bind def
/ct_GetInterval
{
Adobe_CoolType_Utility/ct_BuildCharDict get
begin
/dst_index 0 def
dup dst_string length gt
{dup string/dst_string exch def}
if
1 index ct_CID_STR_SIZE idiv
/arrayIndex exch def
2 index arrayIndex get
2 index
arrayIndex ct_CID_STR_SIZE mul
sub
{
dup 3 index add 2 index length le
{
2 index getinterval
dst_string dst_index 2 index putinterval
length dst_index add/dst_index exch def
exit
}
{
1 index length 1 index sub
dup 4 1 roll
getinterval
dst_string dst_index 2 index putinterval
pop dup dst_index add/dst_index exch def
sub
/arrayIndex arrayIndex 1 add def
2 index dup length arrayIndex gt
{arrayIndex get}
{
pop
exit
}
ifelse
0
}
ifelse
}
loop
pop pop pop
dst_string 0 dst_index getinterval
end
}bind def
ct_Level2?
{
/ct_resourcestatus
currentglobal mark true setglobal
{/unknowninstancename/Category resourcestatus}
stopped
{cleartomark setglobal true}
{cleartomark currentglobal not exch setglobal}
ifelse
{
{
mark 3 1 roll/Category findresource
begin
ct_Vars/vm currentglobal put
({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
{cleartomark false}
{{3 2 roll pop true}{cleartomark false}ifelse}
ifelse
ct_Vars/vm get setglobal
end
}
}
{{resourcestatus}}
ifelse bind def
/CIDFont/Category ct_resourcestatus
{pop pop}
{
currentglobal true setglobal
/Generic/Category findresource
dup length dict copy
dup/InstanceType/dicttype put
/CIDFont exch/Category defineresource pop
setglobal
}
ifelse
ct_UseNativeCapability?
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry(Adobe)def
/Ordering(Identity)def
/Supplement 0 def
end def
/CMapName/Identity-H def
/CMapVersion 1.000 def
/CMapType 1 def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
if
}
{
/ct_Category 2 dict begin
/CIDFont 10 dict def
/ProcSet 2 dict def
currentdict
end
def
/defineresource
{
ct_Category 1 index 2 copy known
{
get
dup dup maxlength exch length eq
{
dup length 10 add dict copy
ct_Category 2 index 2 index put
}
if
3 index 3 index put
pop exch pop
}
{pop pop/defineresource/undefined ct_raise}
ifelse
}bind def
/findresource
{
ct_Category 1 index 2 copy known
{
get
2 index 2 copy known
{get 3 1 roll pop pop}
{pop pop/findresource/undefinedresource ct_raise}
ifelse
}
{pop pop/findresource/undefined ct_raise}
ifelse
}bind def
/resourcestatus
{
ct_Category 1 index 2 copy known
{
get
2 index known
exch pop exch pop
{
0 -1 true
}
{
false
}
ifelse
}
{pop pop/findresource/undefined ct_raise}
ifelse
}bind def
/ct_resourcestatus/resourcestatus load def
}
ifelse
/ct_CIDInit 2 dict
begin
/ct_cidfont_stream_init
{
{
dup(Binary)eq
{
pop
null
currentfile
ct_Level2?
{
{cid_BYTE_COUNT()/SubFileDecode filter}
stopped
{pop pop pop}
if
}
if
/readstring load
exit
}
if
dup(Hex)eq
{
pop
currentfile
ct_Level2?
{
{null exch/ASCIIHexDecode filter/readstring}
stopped
{pop exch pop(>)exch/readhexstring}
if
}
{(>)exch/readhexstring}
ifelse
load
exit
}
if
/StartData/typecheck ct_raise
}
loop
cid_BYTE_COUNT ct_CID_STR_SIZE le
{
2 copy cid_BYTE_COUNT string exch exec
pop
1 array dup
3 -1 roll
0 exch put
}
{
cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi
dup array exch 2 sub 0 exch 1 exch
{
2 copy
5 index
ct_CID_STR_SIZE
string
6 index exec
pop
put
pop
}
for
2 index
cid_BYTE_COUNT ct_CID_STR_SIZE mod string
3 index exec
pop
1 index exch
1 index length 1 sub
exch put
}
ifelse
cid_CIDFONT exch/GlyphData exch put
2 index null eq
{
pop pop pop
}
{
pop/readstring load
1 string exch
{
3 copy exec
pop
dup length 0 eq
{
pop pop pop pop pop
true exit
}
if
4 index
eq
{
pop pop pop pop
false exit
}
if
}
loop
pop
}
ifelse
}bind def
/StartData
{
mark
{
currentdict
dup/FDArray get 0 get/FontMatrix get
0 get 0.001 eq
{
dup/CDevProc known not
{
/CDevProc 1183615869 internaldict/stdCDevProc 2 copy known
{get}
{
pop pop
{pop pop pop pop pop 0 -1000 7 index 2 div 880}
}
ifelse
def
}
if
}
{
/CDevProc
{
pop pop pop pop pop
0
1 cid_temp/cid_CIDFONT get
/FDArray get 0 get
/FontMatrix get 0 get div
7 index 2 div
1 index 0.88 mul
}def
}
ifelse
/cid_temp 15 dict def
cid_temp
begin
/cid_CIDFONT exch def
3 copy pop
dup/cid_BYTE_COUNT exch def 0 gt
{
ct_cidfont_stream_init
FDArray
{
/Private get
dup/SubrMapOffset known
{
begin
/Subrs SubrCount array def
Subrs
SubrMapOffset
SubrCount
SDBytes
ct_Level2?
{
currentdict dup/SubrMapOffset undef
dup/SubrCount undef
/SDBytes undef
}
if
end
/cid_SD_BYTES exch def
/cid_SUBR_COUNT exch def
/cid_SUBR_MAP_OFFSET exch def
/cid_SUBRS exch def
cid_SUBR_COUNT 0 gt
{
GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval
0 cid_SD_BYTES ct_cvnsi
0 1 cid_SUBR_COUNT 1 sub
{
exch 1 index
1 add
cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add
GlyphData exch cid_SD_BYTES ct_GetInterval
0 cid_SD_BYTES ct_cvnsi
cid_SUBRS 4 2 roll
GlyphData exch
4 index
1 index
sub
ct_GetInterval
dup length string copy put
}
for
pop
}
if
}
{pop}
ifelse
}
forall
}
if
cleartomark pop pop
end
CIDFontName currentdict/CIDFont defineresource pop
end end
}
stopped
{cleartomark/StartData ct_reraise}
if
}bind def
currentdict
end def
/ct_saveCIDInit
{
/CIDInit/ProcSet ct_resourcestatus
{true}
{/CIDInitC/ProcSet ct_resourcestatus}
ifelse
{
pop pop
/CIDInit/ProcSet findresource
ct_UseNativeCapability?
{pop null}
{/CIDInit ct_CIDInit/ProcSet defineresource pop}
ifelse
}
{/CIDInit ct_CIDInit/ProcSet defineresource pop null}
ifelse
ct_Vars exch/ct_oldCIDInit exch put
}bind def
/ct_restoreCIDInit
{
ct_Vars/ct_oldCIDInit get dup null ne
{/CIDInit exch/ProcSet defineresource pop}
{pop}
ifelse
}bind def
/ct_BuildCharSetUp
{
1 index
begin
CIDFont
begin
Adobe_CoolType_Utility/ct_BuildCharDict get
begin
/ct_dfCharCode exch def
/ct_dfDict exch def
CIDFirstByte ct_dfCharCode add
dup CIDCount ge
{pop 0}
if
/cid exch def
{
GlyphDirectory cid 2 copy known
{get}
{pop pop nullstring}
ifelse
dup length FDBytes sub 0 gt
{
dup
FDBytes 0 ne
{0 FDBytes ct_cvnsi}
{pop 0}
ifelse
/fdIndex exch def
dup length FDBytes sub FDBytes exch getinterval
/charstring exch def
exit
}
{
pop
cid 0 eq
{/charstring nullstring def exit}
if
/cid 0 def
}
ifelse
}
loop
}def
/ct_SetCacheDevice
{
0 0 moveto
dup stringwidth
3 -1 roll
true charpath
pathbbox
0 -1000
7 index 2 div 880
setcachedevice2
0 0 moveto
}def
/ct_CloneSetCacheProc
{
1 eq
{
stringwidth
pop -2 div -880
0 -1000 setcharwidth
moveto
}
{
usewidths?
{
currentfont/Widths get cid
2 copy known
{get exch pop aload pop}
{pop pop stringwidth}
ifelse
}
{stringwidth}
ifelse
setcharwidth
0 0 moveto
}
ifelse
}def
/ct_Type3ShowCharString
{
ct_FDDict fdIndex 2 copy known
{get}
{
currentglobal 3 1 roll
1 index gcheck setglobal
ct_Type1FontTemplate dup maxlength dict copy
begin
FDArray fdIndex get
dup/FontMatrix 2 copy known
{get}
{pop pop ct_defaultFontMtx}
ifelse
/FontMatrix exch dup length array copy def
/Private get
/Private exch def
/Widths rootfont/Widths get def
/CharStrings 1 dict dup/.notdef
<d841272cf18f54fc13>dup length string copy put def
currentdict
end
/ct_Type1Font exch definefont
dup 5 1 roll put
setglobal
}
ifelse
dup/CharStrings get 1 index/Encoding get
ct_dfCharCode get charstring put
rootfont/WMode 2 copy known
{get}
{pop pop 0}
ifelse
exch
1000 scalefont setfont
ct_str1 0 ct_dfCharCode put
ct_str1 exch ct_dfSetCacheProc
ct_SyntheticBold
{
currentpoint
ct_str1 show
newpath
moveto
ct_str1 true charpath
ct_StrokeWidth setlinewidth
stroke
}
{ct_str1 show}
ifelse
}def
/ct_Type4ShowCharString
{
ct_dfDict ct_dfCharCode charstring
FDArray fdIndex get
dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not
{ct_1000Mtx matrix concatmatrix concat}
{pop}
ifelse
/Private get
Adobe_CoolType_Utility/ct_Level2? get not
{
ct_dfDict/Private
3 -1 roll
{put}
1183615869 internaldict/superexec get exec
}
if
1183615869 internaldict
Adobe_CoolType_Utility/ct_Level2? get
{1 index}
{3 index/Private get mark 6 1 roll}
ifelse
dup/RunInt known
{/RunInt get}
{pop/CCRun}
ifelse
get exec
Adobe_CoolType_Utility/ct_Level2? get not
{cleartomark}
if
}bind def
/ct_BuildCharIncremental
{
{
Adobe_CoolType_Utility/ct_MakeOCF get begin
ct_BuildCharSetUp
ct_ShowCharString
}
stopped
{stop}
if
end
end
end
end
}bind def
/BaseFontNameStr(BF00)def
/ct_Type1FontTemplate 14 dict
begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]def
/FontBBox [-250 -250 1250 1250]def
/Encoding ct_cHexEncoding def
/PaintType 0 def
currentdict
end def
/BaseFontTemplate 11 dict
begin
/FontMatrix [0.001 0 0 0.001 0 0]def
/FontBBox [-250 -250 1250 1250]def
/Encoding ct_cHexEncoding def
/BuildChar/ct_BuildCharIncremental load def
ct_Clone?
{
/FontType 3 def
/ct_ShowCharString/ct_Type3ShowCharString load def
/ct_dfSetCacheProc/ct_CloneSetCacheProc load def
/ct_SyntheticBold false def
/ct_StrokeWidth 1 def
}
{
/FontType 4 def
/Private 1 dict dup/lenIV 4 put def
/CharStrings 1 dict dup/.notdef<d841272cf18f54fc13>put def
/PaintType 0 def
/ct_ShowCharString/ct_Type4ShowCharString load def
}
ifelse
/ct_str1 1 string def
currentdict
end def
/BaseFontDictSize BaseFontTemplate length 5 add def
/ct_matrixeq
{
true 0 1 5
{
dup 4 index exch get exch 3 index exch get eq and
dup not
{exit}
if
}
for
exch pop exch pop
}bind def
/ct_makeocf
{
15 dict
begin
exch/WMode exch def
exch/FontName exch def
/FontType 0 def
/FMapType 2 def
dup/FontMatrix known
{dup/FontMatrix get/FontMatrix exch def}
{/FontMatrix matrix def}
ifelse
/bfCount 1 index/CIDCount get 256 idiv 1 add
dup 256 gt{pop 256}if def
/Encoding
256 array 0 1 bfCount 1 sub{2 copy dup put pop}for
bfCount 1 255{2 copy bfCount put pop}for
def
/FDepVector bfCount dup 256 lt{1 add}if array def
BaseFontTemplate BaseFontDictSize dict copy
begin
/CIDFont exch def
CIDFont/FontBBox known
{CIDFont/FontBBox get/FontBBox exch def}
if
CIDFont/CDevProc known
{CIDFont/CDevProc get/CDevProc exch def}
if
currentdict
end
BaseFontNameStr 3(0)putinterval
0 1 bfCount dup 256 eq{1 sub}if
{
FDepVector exch
2 index BaseFontDictSize dict copy
begin
dup/CIDFirstByte exch 256 mul def
FontType 3 eq
{/ct_FDDict 2 dict def}
if
currentdict
end
1 index 16
BaseFontNameStr 2 2 getinterval cvrs pop
BaseFontNameStr exch definefont
put
}
for
ct_Clone?
{/Widths 1 index/CIDFont get/GlyphDirectory get length dict def}
if
FontName
currentdict
end
definefont
ct_Clone?
{
gsave
dup 1000 scalefont setfont
ct_BuildCharDict
begin
/usewidths? false def
currentfont/Widths get
begin
exch/CIDFont get/GlyphDirectory get
{
pop
dup charcode exch 1 index 0 2 index 256 idiv put
1 index exch 1 exch 256 mod put
stringwidth 2 array astore def
}
forall
end
/usewidths? true def
end
grestore
}
{exch pop}
ifelse
}bind def
currentglobal true setglobal
/ct_ComposeFont
{
ct_UseNativeCapability?
{
2 index/CMap ct_resourcestatus
{pop pop exch pop}
{
/CIDInit/ProcSet findresource
begin
12 dict
begin
begincmap
/CMapName 3 index def
/CMapVersion 1.000 def
/CMapType 1 def
exch/WMode exch def
/CIDSystemInfo 3 dict dup
begin
/Registry(Adobe)def
/Ordering
CMapName ct_mkocfStr100 cvs
(Adobe-)search
{
pop pop
(-)search
{
dup length string copy
exch pop exch pop
}
{pop(Identity)}
ifelse
}
{pop (Identity)}
ifelse
def
/Supplement 0 def
end def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
composefont
}
{
3 2 roll pop
0 get/CIDFont findresource
ct_makeocf
}
ifelse
}bind def
setglobal
/ct_MakeIdentity
{
ct_UseNativeCapability?
{
1 index/CMap ct_resourcestatus
{pop pop}
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CMapName 2 index def
/CMapVersion 1.000 def
/CMapType 1 def
/CIDSystemInfo 3 dict dup
begin
/Registry(Adobe)def
/Ordering
CMapName ct_mkocfStr100 cvs
(Adobe-)search
{
pop pop
(-)search
{dup length string copy exch pop exch pop}
{pop(Identity)}
ifelse
}
{pop(Identity)}
ifelse
def
/Supplement 0 def
end def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
composefont
}
{
exch pop
0 get/CIDFont findresource
ct_makeocf
}
ifelse
}bind def
currentdict readonly pop
end
end
%%EndResource
setglobal
%%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0
%%Copyright: Copyright 1987-2004 Adobe Systems Incorporated.
%%Version: 1.0 0
userdict/ct_T42Dict 15 dict put
ct_T42Dict begin
/Is2015?
{
version
cvi
2015
ge
}bind def
/AllocGlyphStorage
{
Is2015?
{
pop
}
{
{string}forall
}ifelse
}bind def
/Type42DictBegin
{
25 dict begin
/FontName exch def
/CharStrings 256 dict
begin
/.notdef 0 def
currentdict
end def
/Encoding exch def
/PaintType 0 def
/FontType 42 def
/FontMatrix[1 0 0 1 0 0]def
4 array astore cvx/FontBBox exch def
/sfnts
}bind def
/Type42DictEnd
{
currentdict dup/FontName get exch definefont end
ct_T42Dict exch
dup/FontName get exch put
}bind def
/RD{string currentfile exch readstring pop}executeonly def
/PrepFor2015
{
Is2015?
{
/GlyphDirectory
16
dict def
sfnts 0 get
dup
2 index
(glyx)
putinterval
2 index
(locx)
putinterval
pop
pop
}
{
pop
pop
}ifelse
}bind def
/AddT42Char
{
Is2015?
{
/GlyphDirectory get
begin
def
end
pop
pop
}
{
/sfnts get
4 index
get
3 index
2 index
putinterval
pop
pop
pop
pop
}ifelse
}bind def
/T0AddT42Mtx2
{
/CIDFont findresource/Metrics2 get begin def end
}bind def
end
%%EndResource
currentglobal true setglobal
%%BeginFile: MMFauxFont.prc
%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated.
%%All Rights Reserved.
userdict /ct_EuroDict 10 dict put
ct_EuroDict begin
/ct_CopyFont
{
{ 1 index /FID ne {def} {pop pop} ifelse} forall
} def
/ct_GetGlyphOutline
{
gsave
initmatrix newpath
exch findfont dup
length 1 add dict
begin
ct_CopyFont
/Encoding Encoding dup length array copy
dup
4 -1 roll
0 exch put
def
currentdict
end
/ct_EuroFont exch definefont
1000 scalefont setfont
0 0 moveto
[
<00> stringwidth
<00> false charpath
pathbbox
[
{/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall
grestore
counttomark 8 add
}
def
/ct_MakeGlyphProc
{
] cvx
/ct_PSBuildGlyph cvx
] cvx
} def
/ct_PSBuildGlyph
{
gsave
8 -1 roll pop
7 1 roll
6 -2 roll ct_FontMatrix transform 6 2 roll
4 -2 roll ct_FontMatrix transform 4 2 roll
ct_FontMatrix transform
currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse
dup 9 1 roll
{
currentdict /StrokeWidth 2 copy known
{
get 2 div
0 ct_FontMatrix dtransform pop
5 1 roll
4 -1 roll 4 index sub
4 1 roll
3 -1 roll 4 index sub
3 1 roll
exch 4 index add exch
4 index add
5 -1 roll pop
}
{
pop pop
}
ifelse
}
if
setcachedevice
ct_FontMatrix concat
ct_PSPathOps begin
exec
end
{
currentdict /StrokeWidth 2 copy known
{ get }
{ pop pop 0 }
ifelse
setlinewidth stroke
}
{
fill
}
ifelse
grestore
} def
/ct_PSPathOps 4 dict dup begin
/m {moveto} def
/l {lineto} def
/c {curveto} def
/cp {closepath} def
end
def
/ct_matrix1000 [1000 0 0 1000 0 0] def
/ct_AddGlyphProc
{
2 index findfont dup length 4 add dict
begin
ct_CopyFont
/CharStrings CharStrings dup length 1 add dict copy
begin
3 1 roll def
currentdict
end
def
/ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def
/ct_PSBuildGlyph /ct_PSBuildGlyph load def
/ct_PSPathOps /ct_PSPathOps load def
currentdict
end
definefont pop
}
def
systemdict /languagelevel known
{
/ct_AddGlyphToPrinterFont {
2 copy
ct_GetGlyphOutline 3 add -1 roll restore
ct_MakeGlyphProc
ct_AddGlyphProc
} def
}
{
/ct_AddGlyphToPrinterFont {
pop pop restore
Adobe_CTFauxDict /$$$FONTNAME get
/Euro
Adobe_CTFauxDict /$$$SUBSTITUTEBASE get
ct_EuroDict exch get
ct_AddGlyphProc
} def
} ifelse
/AdobeSansMM
{
556 0 24 -19 541 703
{
541 628 m
510 669 442 703 354 703 c
201 703 117 607 101 444 c
50 444 l
25 372 l
97 372 l
97 301 l
49 301 l
24 229 l
103 229 l
124 67 209 -19 350 -19 c
435 -19 501 25 509 32 c
509 131 l
492 105 417 60 343 60 c
267 60 204 127 197 229 c
406 229 l
430 301 l
191 301 l
191 372 l
455 372 l
479 444 l
194 444 l
201 531 245 624 348 624 c
433 624 484 583 509 534 c
cp
556 0 m
}
ct_PSBuildGlyph
} def
/AdobeSerifMM
{
500 0 10 -12 484 692
{
347 298 m
171 298 l
170 310 170 322 170 335 c
170 362 l
362 362 l
374 403 l
172 403 l
184 580 244 642 308 642 c
380 642 434 574 457 457 c
481 462 l
474 691 l
449 691 l
433 670 429 657 410 657 c
394 657 360 692 299 692 c
204 692 94 604 73 403 c
22 403 l
10 362 l
70 362 l
69 352 69 341 69 330 c
69 319 69 308 70 298 c
22 298 l
10 257 l
73 257 l
97 57 216 -12 295 -12 c
364 -12 427 25 484 123 c
458 142 l
425 101 384 37 316 37 c
256 37 189 84 173 257 c
335 257 l
cp
500 0 m
}
ct_PSBuildGlyph
} def
end
%%EndFile
setglobal
Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end
%%BeginResource: procset Adobe_AGM_Image 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Image 71 dict dup begin put +/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def +/nd{ + null def +}bind def +/AGMIMG_&image nd +/AGMIMG_&colorimage nd +/AGMIMG_&imagemask nd +/AGMIMG_mbuf()def +/AGMIMG_ybuf()def +/AGMIMG_kbuf()def +/AGMIMG_c 0 def +/AGMIMG_m 0 def +/AGMIMG_y 0 def +/AGMIMG_k 0 def +/AGMIMG_tmp nd +/AGMIMG_imagestring0 nd +/AGMIMG_imagestring1 nd +/AGMIMG_imagestring2 nd +/AGMIMG_imagestring3 nd +/AGMIMG_imagestring4 nd +/AGMIMG_imagestring5 nd +/AGMIMG_cnt nd +/AGMIMG_fsave nd +/AGMIMG_colorAry nd +/AGMIMG_override nd +/AGMIMG_name nd +/AGMIMG_maskSource nd +/AGMIMG_flushfilters nd +/invert_image_samples nd +/knockout_image_samples nd +/img nd +/sepimg nd +/devnimg nd +/idximg nd +/ds +{ + Adobe_AGM_Core begin + Adobe_AGM_Image begin + /AGMIMG_&image systemdict/image get def + /AGMIMG_&imagemask systemdict/imagemask get def + /colorimage where{ + pop + /AGMIMG_&colorimage/colorimage ldf + }if + end + end +}def +/ps +{ + Adobe_AGM_Image begin + /AGMIMG_ccimage_exists{/customcolorimage where + { + pop + /Adobe_AGM_OnHost_Seps where + { + pop false + }{ + /Adobe_AGM_InRip_Seps where + { + pop false + }{ + true + }ifelse + }ifelse + }{ + false + }ifelse + }bdf + level2{ + /invert_image_samples + { + Adobe_AGM_Image/AGMIMG_tmp Decode length ddf + /Decode[Decode 1 get Decode 0 get]def + }def + /knockout_image_samples + { + Operator/imagemask ne{ + /Decode[1 1]def + }if + }def + }{ + /invert_image_samples + { + {1 exch sub}currenttransfer addprocs settransfer + }def + /knockout_image_samples + { + {pop 1}currenttransfer addprocs settransfer + }def + }ifelse + /img/imageormask ldf + /sepimg/sep_imageormask ldf + /devnimg/devn_imageormask ldf + /idximg/indexed_imageormask ldf + /_ctype 7 def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall +}def +/pt +{ + end +}def +/dt +{ +}def +/AGMIMG_flushfilters +{ + dup type/arraytype ne + {1 array astore}if + dup 0 get currentfile ne + {dup 0 get flushfile}if + { + dup type/filetype eq + { + dup status 1 index currentfile ne and + {closefile} + {pop} + ifelse + }{pop}ifelse + }forall +}def +/AGMIMG_init_common +{ + currentdict/T known{/ImageType/T ldf currentdict/T undef}if + currentdict/W known{/Width/W ldf currentdict/W undef}if + currentdict/H known{/Height/H ldf currentdict/H undef}if + currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if + currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if + currentdict/D known{/Decode/D ldf currentdict/D undef}if + currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if + currentdict/O known{ + /Operator/O load 1 eq{ + /imagemask + }{ + /O load 2 eq{ + /image + }{ + /colorimage + }ifelse + }ifelse + def + currentdict/O undef + }if + currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if + currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if + currentdict/I known{/Interpolate/I ldf currentdict/I undef}if + currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if + /DataSource load xcheck not{ + DataSource type/arraytype eq{ + DataSource 0 get type/filetype eq{ + /_Filters DataSource def + currentdict/MultipleDataSources known not{ + /DataSource DataSource dup length 1 sub get def + }if + }if + }if + currentdict/MultipleDataSources known not{ + /MultipleDataSources DataSource type/arraytype eq{ + DataSource length 1 gt + } + {false}ifelse def + }if + }if + /NComponents Decode length 2 div def + currentdict/SkipImageProc known not{/SkipImageProc{false}def}if +}bdf +/imageormask_sys +{ + begin + AGMIMG_init_common + save mark + level2{ + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + AGMIMG_&imagemask + }{ + BitsPerComponent ImageMatrix/DataSource load + AGMIMG_&image + }ifelse + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + cleartomark restore + end +}def +/overprint_plate +{ + currentoverprint{ + 0 get dup type/nametype eq{ + dup/DeviceGray eq{ + pop AGMCORE_black_plate not + }{ + /DeviceCMYK eq{ + AGMCORE_is_cmyk_sep not + }if + }ifelse + }{ + false exch + { + AGMOHS_sepink eq or + }forall + not + }ifelse + }{ + pop false + }ifelse +}def +/process_mask +{ + level3{ + dup begin + /ImageType 1 def + end + 4 dict begin + /DataDict exch def + /ImageType 3 def + /InterleaveType 3 def + /MaskDict 9 dict begin + /ImageType 1 def + /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def + /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def + /ImageMatrix[Width 0 0 Height neg 0 Height]def + /NComponents 1 def + /BitsPerComponent 1 def + /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def + /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def + currentdict end def + currentdict end + }if +}def +/use_mask +{ + dup/Mask known {dup/Mask get}{false}ifelse +}def +/imageormask +{ + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + } + { + save mark + level2 AGMCORE_host_sep not and{ + currentdict + Operator/imagemask eq DeviceN_PS2 not and{ + imagemask + }{ + AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ + [/Separation/Black/DeviceGray{}]setcolorspace + /Decode[Decode 1 get Decode 0 get]def + }if + use_mask{ + process_mask image + }{ + DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and + { + Names convert_to_process not{ + 2 dict begin + /imageDict xdf + /names_index 0 def + gsave + imageDict write_image_file{ + Names{ + dup(None)ne{ + [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace + Operator imageDict read_image_file + names_index 0 eq{true setoverprint}if + /names_index names_index 1 add def + }{ + pop + }ifelse + }forall + close_image_file + }if + grestore + end + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + /Adobe_AGM_OnHost_Seps where{ + pop imagemask + }{ + currentgray 1 ne{ + currentdict imageormask_sys + }{ + currentoverprint not{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }ifelse + }{ + BitsPerComponent ImageMatrix + MultipleDataSources{ + 0 1 NComponents 1 sub{ + DataSource exch get + }for + }{ + /DataSource load + }ifelse + Operator/colorimage eq{ + AGMCORE_host_sep{ + MultipleDataSources level2 or NComponents 4 eq and{ + AGMCORE_is_cmyk_sep{ + MultipleDataSources{ + /DataSource DataSource 0 get xcheck + { + [ + DataSource 0 get/exec cvx + DataSource 1 get/exec cvx + DataSource 2 get/exec cvx + DataSource 3 get/exec cvx + /AGMCORE_get_ink_data cvx + ]cvx + }{ + DataSource aload pop AGMCORE_get_ink_data + }ifelse def + }{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + /DataSource load + filter_cmyk 0()/SubFileDecode filter def + }ifelse + /Decode[Decode 0 get Decode 1 get]def + /MultipleDataSources false def + /NComponents 1 def + /Operator/image def + invert_image_samples + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }{ + MultipleDataSources NComponents AGMIMG_&colorimage + }ifelse + }{ + true NComponents colorimage + }ifelse + }{ + Operator/image eq{ + AGMCORE_host_sep{ + /DoImage true def + currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse + { + AGMCORE_black_plate not Operator/imagemask ne and{ + /DoImage false def + currentdict ignoreimagedata + }if + }if + 1 AGMCORE_&setgray + DoImage + {currentdict imageormask_sys}if + }{ + use_mask{ + process_mask image + }{ + image + }ifelse + }ifelse + }{ + Operator/knockout eq{ + pop pop pop pop pop + currentcolorspace overprint_plate not{ + knockout_unitsq + }if + }if + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/sep_imageormask +{ + /sep_colorspace_dict AGMCORE_gget begin + CSA map_csa + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_avoid_L2_sep_space{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + }if + AGMIMG_ccimage_exists + MappedCSA 0 get/DeviceCMYK eq and + currentdict/Components known and + Name()ne and + Name(All)ne and + Operator/image eq and + AGMCORE_producing_seps not and + level2 not and + { + Width Height BitsPerComponent ImageMatrix + [ + /DataSource load/exec cvx + { + 0 1 2 index length 1 sub{ + 1 index exch + 2 copy get 255 xor put + }for + }/exec cvx + ]cvx bind + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Name findcmykcustomcolor + customcolorimage + }{ + AGMCORE_producing_seps not{ + level2{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ + [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + currentdict imageormask + }{ + currentdict + Operator/imagemask eq{ + imageormask + }{ + sep_imageormask_lev1 + }ifelse + }ifelse + }{ + AGMCORE_host_sep{ + Operator/knockout eq{ + currentdict/ImageMatrix get concat + knockout_unitsq + }{ + currentgray 1 ne{ + AGMCORE_is_cmyk_sep Name(All)ne and{ + level2{ + Name AGMCORE_IsSeparationAProcessColor + { + Operator/imagemask eq{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor + }if + }{ + invert_image_samples + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + [/Separation Name[/DeviceGray] + { + sep_colorspace_proc AGMCORE_get_ink_data + 1 exch sub + }bind + ]AGMCORE_&setcolorspace + /sep_tint AGMCORE_gget AGMCORE_&setcolor + }if + }ifelse + currentdict imageormask_sys + }{ + currentdict + Operator/imagemask eq{ + imageormask_sys + }{ + sep_image_lev1_sep + }ifelse + }ifelse + }{ + Operator/imagemask ne{ + invert_image_samples + }if + currentdict imageormask_sys + }ifelse + }{ + currentoverprint not Name(All)eq or Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + currentcolorspace 0 get/Separation ne{ + [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + }if + currentoverprint + MappedCSA 0 get/DeviceCMYK eq and + Name AGMCORE_IsSeparationAProcessColor not and + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse + Name(All)ne and{ + imageormask_l2_overprint + }{ + currentdict imageormask + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end +}def +/colorSpaceElemCnt +{ + mark currentcolor counttomark dup 2 add 1 roll cleartomark +}bdf +/devn_sep_datasource +{ + 1 dict begin + /dataSource xdf + [ + 0 1 dataSource length 1 sub{ + dup currentdict/dataSource get/exch cvx/get cvx/exec cvx + /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx + }for + ]cvx bind + end +}bdf +/devn_alt_datasource +{ + 11 dict begin + /convProc xdf + /origcolorSpaceElemCnt xdf + /origMultipleDataSources xdf + /origBitsPerComponent xdf + /origDecode xdf + /origDataSource xdf + /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def + /DataSource origMultipleDataSources + { + [ + BitsPerComponent 8 idiv origDecode length 2 idiv mul string + 0 1 origDecode length 2 idiv 1 sub + { + dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch + origDataSource exch get 0()/SubFileDecode filter + BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx + }for + ]bind cvx + }{origDataSource}ifelse 0()/SubFileDecode filter def + [ + origcolorSpaceElemCnt string + 0 2 origDecode length 2 sub + { + dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div + 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx + }for + /convProc load/exec cvx + origcolorSpaceElemCnt 1 sub -1 0 + { + /dup cvx 2/add cvx/index cvx + 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx + }for + ]bind cvx 0()/SubFileDecode filter + end +}bdf +/devn_imageormask +{ + /devicen_colorspace_dict AGMCORE_gget begin + CSA map_csa + 2 dict begin + dup + /srcDataStrs[3 -1 roll begin + AGMIMG_init_common + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi + { + dup 65535 gt{1 add 2 div cvi}{exit}ifelse + }loop + string + }repeat + end]def + /dstDataStr srcDataStrs 0 get length string def + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_producing_seps not{ + level3 not{ + Operator/imagemask ne{ + /DataSource[[ + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def + /MultipleDataSources true def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + }if + }if + currentdict imageormask + }{ + AGMCORE_host_sep{ + Names convert_to_process{ + CSA get_csa_by_name 0 get/DeviceCMYK eq{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + filter_cmyk 0()/SubFileDecode filter def + /MultipleDataSources false def + /Decode[1 0]def + /DeviceGray setcolorspace + currentdict imageormask_sys + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate{ + /DataSource + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + /MultipleDataSources false def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + currentdict imageormask_sys + }{ + gsave + knockout_unitsq + grestore + currentdict consumeimagedata + }ifelse + }ifelse + } + { + /devicen_colorspace_dict AGMCORE_gget/names_index known{ + Operator/imagemask ne{ + MultipleDataSources{ + /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def + /MultipleDataSources false def + }{ + /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def + }ifelse + invert_image_samples + }if + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + currentdict imageormask + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end + end +}def +/imageormask_l2_overprint +{ + currentdict + currentcmykcolor add add add 0 eq{ + currentdict consumeimagedata + }{ + level3{ + currentcmykcolor + /AGMIMG_k xdf + /AGMIMG_y xdf + /AGMIMG_m xdf + /AGMIMG_c xdf + Operator/imagemask eq{ + [/DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ]/DeviceCMYK{}]setcolorspace + AGMIMG_c 0 ne{AGMIMG_c}if + AGMIMG_m 0 ne{AGMIMG_m}if + AGMIMG_y 0 ne{AGMIMG_y}if + AGMIMG_k 0 ne{AGMIMG_k}if + setcolor + }{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + [/Indexed + [ + /DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ] + /DeviceCMYK{ + AGMIMG_k 0 eq{0}if + AGMIMG_y 0 eq{0 exch}if + AGMIMG_m 0 eq{0 3 1 roll}if + AGMIMG_c 0 eq{0 4 1 roll}if + } + ] + 255 + { + 255 div + mark exch + dup dup dup + AGMIMG_k 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_y 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_m 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_c 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + counttomark 1 add -1 roll pop + } + ]setcolorspace + }ifelse + imageormask_sys + }{ + write_image_file{ + currentcmykcolor + 0 ne{ + [/Separation/Black/DeviceGray{}]setcolorspace + gsave + /Black + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Yellow/DeviceGray{}]setcolorspace + gsave + /Yellow + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Magenta/DeviceGray{}]setcolorspace + gsave + /Magenta + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Cyan/DeviceGray{}]setcolorspace + gsave + /Cyan + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + close_image_file + }{ + imageormask + }ifelse + }ifelse + }ifelse +}def +/indexed_imageormask +{ + begin + AGMIMG_init_common + save mark + currentdict + AGMCORE_host_sep{ + Operator/knockout eq{ + /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ + /CSA get get_csa_by_name + }{ + /Names get + }ifelse + overprint_plate not{ + knockout_unitsq + }if + }{ + Indexed_DeviceN{ + /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ + indexed_image_lev2_sep + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }{ + AGMCORE_is_cmyk_sep{ + Operator/imagemask eq{ + imageormask_sys + }{ + level2{ + indexed_image_lev2_sep + }{ + indexed_image_lev1_sep + }ifelse + }ifelse + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + level2{ + Indexed_DeviceN{ + /indexed_colorspace_dict AGMCORE_gget begin + }{ + /indexed_colorspace_dict AGMCORE_gget dup null ne + { + begin + currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse + get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and + AGMCORE_in_rip_sep and{ + [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] + setcolorspace + }if + end + } + {pop}ifelse + }ifelse + imageormask + Indexed_DeviceN{ + end + }if + }{ + Operator/imagemask eq{ + imageormask + }{ + indexed_imageormask_lev1 + }ifelse + }ifelse + }ifelse + cleartomark restore + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/indexed_image_lev2_sep +{ + /indexed_colorspace_dict AGMCORE_gget begin + begin + Indexed_DeviceN not{ + currentcolorspace + dup 1/DeviceGray put + dup 3 + currentcolorspace 2 get 1 add string + 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub + { + dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put + }for + put setcolorspace + }if + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + end end +}def + /OPIimage + { + dup type/dicttype ne{ + 10 dict begin + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /ImageType 1 def + /Decode[0 1 def] + currentdict + end + }if + dup begin + /NComponents 1 cdndf + /MultipleDataSources false cdndf + /SkipImageProc{false}cdndf + /Decode[ + 0 + currentcolorspace 0 get/Indexed eq{ + 2 BitsPerComponent exp 1 sub + }{ + 1 + }ifelse + ]cdndf + /Operator/image cdndf + end + /sep_colorspace_dict AGMCORE_gget null eq{ + imageormask + }{ + gsave + dup begin invert_image_samples end + sep_imageormask + grestore + }ifelse + }def +/cachemask_level2 +{ + 3 dict begin + /LZWEncode filter/WriteFilter xdf + /readBuffer 256 string def + /ReadFilter + currentfile + 0(%EndMask)/SubFileDecode filter + /ASCII85Decode filter + /RunLengthDecode filter + def + { + ReadFilter readBuffer readstring exch + WriteFilter exch writestring + not{exit}if + }loop + WriteFilter closefile + end +}def +/spot_alias +{ + /mapto_sep_imageormask + { + dup type/dicttype ne{ + 12 dict begin + /ImageType 1 def + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /MultipleDataSources false def + }{ + begin + }ifelse + /Decode[/customcolor_tint AGMCORE_gget 0]def + /Operator/image def + /SkipImageProc{false}def + currentdict + end + sep_imageormask + }bdf + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_colorAry xddf + /customcolor_tint AGMCORE_gget + << + /Name AGMIMG_colorAry 4 get + /CSA[/DeviceCMYK] + /TintMethod/Subtractive + /TintProc null + /MappedCSA null + /NComponents 4 + /Components[AGMIMG_colorAry aload pop pop] + >> + setsepcolorspace + mapto_sep_imageormask + }ndf + Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_override false put + current_spot_alias{dup 4 get map_alias}{false}ifelse + { + false set_spot_alias + /customcolor_tint AGMCORE_gget exch setsepcolorspace + pop + mapto_sep_imageormask + true set_spot_alias + }{ + //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec + }ifelse + }bdf +}def +/snap_to_device +{ + 6 dict begin + matrix currentmatrix + dup 0 get 0 eq 1 index 3 get 0 eq and + 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop + { + 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def + 0 0 transform + AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + itransform/AGMIMG_llY exch def/AGMIMG_llX exch def + 1 1 transform + AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + itransform/AGMIMG_urY exch def/AGMIMG_urX exch def + [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat + }{ + }ifelse + end +}def +level2 not{ + /colorbuf + { + 0 1 2 index length 1 sub{ + dup 2 index exch get + 255 exch sub + 2 index + 3 1 roll + put + }for + }def + /tint_image_to_color + { + begin + Width Height BitsPerComponent ImageMatrix + /DataSource load + end + Adobe_AGM_Image begin + /AGMIMG_mbuf 0 string def + /AGMIMG_ybuf 0 string def + /AGMIMG_kbuf 0 string def + { + colorbuf dup length AGMIMG_mbuf length ne + { + dup length dup dup + /AGMIMG_mbuf exch string def + /AGMIMG_ybuf exch string def + /AGMIMG_kbuf exch string def + }if + dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop + } + addprocs + {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage + end + }def + /sep_imageormask_lev1 + { + begin + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + { + 255 mul round cvi GrayLookup exch get + }currenttransfer addprocs settransfer + currentdict imageormask + }{ + /sep_colorspace_dict AGMCORE_gget/Components known{ + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ + {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer + currentdict imageormask + }{ + currentcolortransfer + {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }{ + MappedCSA 0 get/DeviceGray eq{ + {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer + currentdict imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + /sep_image_lev1_sep + { + begin + /sep_colorspace_dict AGMCORE_gget/Components known{ + Components aload pop + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + {AGMIMG_c mul 1 exch sub} + {AGMIMG_m mul 1 exch sub} + {AGMIMG_y mul 1 exch sub} + {AGMIMG_k mul 1 exch sub} + }{ + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} + }ifelse + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end + }def + /indexed_imageormask_lev1 + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + currentdict + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceGray eq{ + {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }ifelse + }ifelse + }ifelse + end end + }def + /indexed_image_lev1_sep + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end end + }def +}if +end +systemdict/setpacking known +{setpacking}if +%%EndResource +currentdict Adobe_AGM_Utils eq {end} if +%%EndProlog +%%BeginSetup +Adobe_AGM_Utils begin +2 2010 Adobe_AGM_Core/ds gx +Adobe_CoolType_Core/ds get exec
Adobe_AGM_Image/ds gx +currentdict Adobe_AGM_Utils eq {end} if +%%EndSetup +%%Page: (Page 1) 1 +%%EndPageComments +%%BeginPageSetup +%ADOBeginClientInjection: PageSetup Start "AI11EPS" +%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0
+%ADOEndClientInjection: PageSetup Start "AI11EPS" +Adobe_AGM_Utils begin +Adobe_AGM_Core/ps gx +Adobe_AGM_Utils/capture_cpd gx +Adobe_CoolType_Core/ps get exec
Adobe_AGM_Image/ps gx +%ADOBeginClientInjection: PageSetup End "AI11EPS" +/currentdistillerparams where
{pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse
{ userdict /AI11_PDFMark5 /cleartomark load put
userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put}
{ userdict /AI11_PDFMark5 /pdfmark load put
userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse
[/NamespacePush AI11_PDFMark5
[/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5
[{ai_metadata_stream_123}
currentfile 0 (% &&end XMP packet marker&&)
/SubFileDecode filter AI11_ReadMetadata_PDFMark5
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.1-c036 46.277092, Fri Feb 23 2007 14:16:18 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/postscript</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">Print</rdf:li> + </rdf:Alt> + </dc:title> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xap="http://ns.adobe.com/xap/1.0/" + xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"> + <xap:CreatorTool>Adobe Illustrator CS3</xap:CreatorTool> + <xap:CreateDate>2009-06-16T09:28:15-04:00</xap:CreateDate> + <xap:ModifyDate>2009-06-16T09:28:15-04:00</xap:ModifyDate> + <xap:MetadataDate>2009-06-16T09:28:15-04:00</xap:MetadataDate> + <xap:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xapGImg:width>256</xapGImg:width> + <xapGImg:height>168</xapGImg:height> + <xapGImg:format>JPEG</xapGImg:format> + <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAqAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9A+V/K/lmTyzpDvpFkzt
ZW7MzW8RJJiUkklcVTT/AAp5W/6s9j/0jQ/804q7/Cnlb/qz2P8A0jQ/804q7/Cnlb/qz2P/AEjQ
/wDNOKu/wp5W/wCrPY/9I0P/ADTirv8ACnlb/qz2P/SND/zTirv8KeVv+rPY/wDSND/zTirv8KeV
v+rPY/8ASND/AM04q7/Cnlb/AKs9j/0jQ/8ANOKu/wAKeVv+rPY/9I0P/NOKu/wp5W/6s9j/ANI0
P/NOKu/wp5W/6s9j/wBI0P8AzTirv8KeVv8Aqz2P/SND/wA04q7/AAp5W/6s9j/0jQ/804q7/Cnl
b/qz2P8A0jQ/804q7/Cnlb/qz2P/AEjQ/wDNOKu/wp5W/wCrPY/9I0P/ADTirv8ACnlb/qz2P/SN
D/zTirv8KeVv+rPY/wDSND/zTirv8KeVv+rPY/8ASND/AM04q7/Cnlb/AKs9j/0jQ/8ANOKu/wAK
eVv+rPY/9I0P/NOKu/wp5W/6s9j/ANI0P/NOKu/wp5W/6s9j/wBI0P8AzTirv8KeVv8Aqz2P/SND
/wA04q7/AAp5W/6s9j/0jQ/804q7/Cnlb/qz2P8A0jQ/804q7/Cnlb/qz2P/AEjQ/wDNOKu/wp5W
/wCrPY/9I0P/ADTirv8ACnlb/qz2P/SND/zTirv8KeVv+rPY/wDSND/zTiqV+aPK/lmPyzq7ppFk
rrZXDKy28QIIiYgghcVTTyp/yi2j/wDMDbf8mVxVNMVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVUL6/sbC3a5vriO1t1oGmmdY0BPT4mIGKpaPMU9yP9xelXd2poFnlUWkNff6wUmK/
5SRMMVXc/Nsu3o2Fn/lerNdfTx9O16eFcVbeLzZHulzYXGx+AwTQb9vi9af/AIjiq1tS8xQEm50Z
Z0/Z+oXSSv8A7JblbMfcxxVXsvMOk3dyLRZTDekVFnco9vOQBUlY5QjOo/mWo98VTHFXYq7FXYq7
FUr81/8AKLax/wAwNz/yZbFXeVP+UW0f/mBtv+TK4qmmKuxVC3Oq6dbX1nYXFwkd5fmQWUDGjSmF
ecnAd+K7nFUrt/Pnk65tJLuDV7aS1imFtJMr1USsSAlfElD92KtzeefKkN5Z2cuootxqCRy2a8XI
kjlpwcMF40PIbk7d8VbvvO/lSxtbC6u9SihttUhNzYzNy4SQgIxlqB8KASoSzUAriqrL5v8ALEKR
SS6lAkczTLE7PRWNtcLazUPT93PIqMe1fDFVq+c/KjaoulLqludRaVoBbBxy9VCVKHsG5KygHqQQ
NwcVU4fPfk2eWKOPWLUtNALqMmQBfSMfrVLmig+l+84k14/FSmKq8Pm3y1Nos+uR6jAdKtQxubst
xSPhQkPWhU7jYipqPEYqh77z55PsLyWzvNVggnhjM0iuSFCCIz1504/3QL0rWmKojSfNnlzV5lg0
2/iuJ2WR/RWokCwmMSFkYBl4+vH1H7QxVStfO/lG7vbexttVt5bu7UNbxK9S1QSBXpyIQkKdyBiq
hL+YfkuOWCI6rC7XMjxW/ph5FeSN3jdQyKy1DRN37V6Y0q+Pz/5LklhiTWbVnuIlnho4oUeP1V+L
oGMfxhT8VN6YqmGl+YNF1an6NvIrusEN1+6bl+5uefov8n9JqfLFUfirsVSW51q8vLmWw0FI5ZoW
Md3qE1Ta27A0ZKKVM0o7xqw4/tMpoCqrWHlyxtp1vLhn1DUx0v7vi8i1FCIgAqQqR1WNVB71OKpp
irsVdirsVQ9/p1hqFube+t47mAkNwkUMAw6MK9GHYjcYqlMkOt6L+8tGl1bS1qZLOVud5EvWsMzm
swH8kh5eDnZcVTbT9QstQtEu7OUTW71AcVFGUlWVgaFWVgQykVB2OKojFXYq7FUr81/8otrH/MDc
/wDJlsVd5U/5RbR/+YG2/wCTK4qmmKuxVh35geQLjzVNplza6o2lXmk+s9rcpF6rLLL6YDD40pRY
yp9mxVjOl/kUNN06TSbfVlGlzXJvJENuTMJI3mNuqP6oXgqzKHqpJ47EcvhNqyPTfI2rqmhDUtQt
3bQrW4soPq0DoJIpreOBWfnK9GX0yTTY+2KpfYfk5p6RaFb6jqV1qFppWnTafc2zzzok3rRW0RVP
TkThARanlCeSty36YFX6f+UOn290Jp7n6yssOswXsUiyNHKurXKzrSNpGSP0lHFuI+M7nFVKw/KN
7O50GSLUkUaTFZC5kWBlmmltJDLKeayqrLcyO7MJlkKliUIJwqpaJ+Ueo6V5dHl1NZgfTWX1Jmew
imla4+pCzP8AfNJF6Xwh6cOX7PKhwKih+Vc8vl+TRLrVStnd6lFf3kUCOVEUESKkERupLl6GWGOQ
+ozjqoUCmFUJD+StqdI1W0v9Se/u7uyFjYXEglWOD07JrGKZ4BL6U0qxv9tl5daEVwKnFt+X02k6
/YatoN1HEY7ea21EXwuLuSf12tqyiV5+fNUskRQzEAUHbFUs0f8AK3XNG0ufTdO12FIbiQXjTPZK
8q3kdusETIzSELGPSjc0HOoPFhy2Kq/lr8p08vXumGz1SSbTtMvDfRWs0S8+b6c9hIokQoKNyR/s
9jWpNcCpdp35MXlr5ai8strEb6SJbe8mf6qRcG6toI4k4v6vERc4Fcgry6ryodiqefl7+W0fk271
CSC+NzbXttZQR25TgIWtRMZSh5N8Mstw0nH9mpG+BWa4qkl/d3epahJo+nu0NvAB+lr9CVePkAy2
8LDpK6nkzdUUgj4mUhVNrS0tbO2jtbWJYLeEcY4kAVVHsBiqriqV33mLT7adrSISX1+lOVlZoZZF
LfZ9QikcVexlZQcVWC+8zy1aLSreGMn4VurwpLSnVlhhuE+6Q4q36vmxKj6rYXFeh+sTQU9qejPX
78VWHzFJa/8AHW0+4sUGzXagXFtt1POIl0Sn7UsaDFU2guILiFJ7eRZoZAGjljYMrKehVhUEYqvx
VItU025sb19c0lGedgP0lpyUAu0UUDLUgLcRj7LftD4G/ZZFU2sb60vrOG8tJBNbTqHikWtCp9ju
PcHpiqvirsVSvzX/AMotrH/MDc/8mWxV3lT/AJRbR/8AmBtv+TK4qmmKuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxVLtf1G4srACzRZNRunW2sInrxM0laMwG/CNQ0j0/ZU4qq6RpkGmWEdnEzSc
atLM+7yyuS8krkftO5LHFUZiqQG4u/MDlbGdrbQlJWS+hYrNdMDQrbuP7uLqDKPib9igo5VTew0+
y0+2W1soEt7dKlY4wFFSasT4ljuSdycVRGKuxV2KpLd6FLbTvqGhMlreO3O4tGqLW6JPxeoi/YkP
aVByrTkHA44qjdI1WHUrYyqjQTxMYrq0lp6sEoAJjkClhWhBBBoykMCQQcVRuKpDHTRtfEANNN1p
3eFf2Yr4KZJFHgs6K0n+urHq+Kp9irsVSvzX/wAotrH/ADA3P/JlsVd5U/5RbR/+YG2/5MriqaYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUljX695plmO8GjwiCMdvrVyBJKTXukIj4kdnbFU
6xVJNeaW/uYNBgcot0pm1OVSQyWamhRSN1advgB/l5kHkoxVOYooookiiRY4o1CxxqAqqqigAA2A
AxVdirsVdirsVdiqQ6+v6Kuk8xw1EcQWHWEFaPaFv74gftWxbnX+TmOtKKp9iqX+YNPmv9IuILch
bxQJrKRui3MLCSFj7CRRX2xVX0y/h1HTbS/hBEV3DHPGG6hZFDAH33xVE4qlfmv/AJRbWP8AmBuf
+TLYq7yp/wAoto//ADA23/JlcVTTFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlHlgc7K5u
2PKS8vbuUyfzIs7RQn5ehEgGKpviqT6Cvr3eq6mw+K4uWtoSa1WGyrBw+XriZx/rYqxfzzrfni28
06cNBs7mXR7BUbVzHEGWU30ht041+N/qyqZWEQbty2wqxWw0783pNE8urLfXBk1hoZJomuZUkhYa
bPJK1zc/VC8Aeb0/3PBgGXjy+KuKo+TX/wAwbfQdQ0tJbm983WusWixyfVZI4ZbT1rVJGV/TWJYX
ZnJo2yk9sUKVxqv5gSaGbDy5JrF3rN+LUy3d/arClrcokst56bzLboF5xRxsh+Ac/wB2SagKrHu/
zANrqGraUdVNxPc6K2nafeCT0lS8eCa7jZXVaLGxMbttwWoJxVC3Wq/meLjRv8OTaleqXgm1hdSt
2iH11Le5kmtAWii4xSGJUbj8CNwoRXdV6T5Bm1PUfI+my67HKb66gb63Fdx8JSHZgFkQgU+CmBKO
8qSSHQ4IJXMkti0ti8rEln+qStbiRq71cRhz88VTbFUo8tVit72zI4tZ31ylB0CzSG5jA8AIp1FB
iqb4qlfmv/lFtY/5gbn/AJMtirvKn/KLaP8A8wNt/wAmVxVNMVdirsVdirsVdiqA1DX9H0+VILq6
RbqUVitErJcOPFIYw0jf7FcVQw169m3tNFvZIz/dzTejbofcpLIs6/TFiq8XXmggH9HWQrvRr2Wo
+dLUj8cVWnV9ahqLjQ5pCP2rOa3lTau/757Z/wDhcVbt/NOiSzx20szWd1NtFbXsclrI7dxGJlT1
Kf5FcVTbFXYq7FXYq7FUq8pqB5X0kjq9nA7E7ks8YZiSe5Yk4qmuKpR5VNdFRjX1HnunmBFCJWuZ
GkFO1HJGJVhPmv8AMXzBo/nO5sLRYb61ghYQ6XCnK5km+pS3KhgWWb4nRAHjR4wtQxD9CqUTef8A
zrNqOlaTo2p2utNqRglkvrGGBWjeW1u5ntQs0vpfD9VV/iYOBseq4oTXUPM/nLSbnzNcz6gLuz8u
pp93Lam2iVzbzyCW6BaMt8UdtG4FK774qxb/AJXT59Cel+jlbUbZElvbRbeR29NDJdzFAm4AtHtY
+RFA0nKopiqrqH5t+cIYr2/gmX9GT3GoxaZcyQwCMpZ38cEZgYSFy3ouS/roq+BxVm9x5u1ux/LS
fzBDNb6jqMBPJ5GhaMAzBP8AjyeWNiFOwDj3xSzzAqU6HxF7raJ/drf/AAitQC1rA7/8OzYqm2Kp
VowH6R133vk/6gbbFU1xVK/Nf/KLax/zA3P/ACZbFXeVP+UW0f8A5gbb/kyuKppirsVdirsVQ2o6
nY6batdXsoihBCjYszOxoqIihnd2OyqoJJ6DFUqSHXtZ+O6d9H01h8FpEwF7IP8Ai6ZaiEEfsxHl
/ljdcVTTTtK03TYmisbdIFc8pSo+KR+7yOfidj3ZiScVRWKuxV2KqdxbW9zA8FzEk8Eg4yRSKHRh
4FWqDiqTnQr7TQG0C4EcKf8ASqumZrUj+WN6PJb7bDjyQfyYqi9J1uC/aS3eN7TUbcA3Wnz0EqBv
ssKEq8bUPF0JU7jqCAqmOKuxV2KpR5WATSmgH/HtdXcAXaoWO5kWOtO5j4nFU3xVKPLlYv0lYMav
aX1w3L+Zbtvrikew+scPmpxVNuCcw/EcwOIam9DvSv0Yq0sUS/ZRR8RbYD7RrU/M1xVsqrAhgCGF
GBHUeBxVwRA3IKOR6tTfen9Biq0wQMnBo1Kb/CVFN+u3virccMUcYjjRUjFaIoAXfrsMVXYqk/lM
+rpAvaEDUJ57yMmtTFPMzwEjsfQKbYqnGKpR5drL+k700/0vUJ6KKin1XjZb18fq1cVTfFUr81/8
otrH/MDc/wDJlsVd5U/5RbR/+YG2/wCTK4qmmKuxV2KoXU9StdNsZLy5J9OOgCqOTu7EKkaL+07s
QqjuTiqX6XpN1NdDWNZAfUPi+p2uzR2UbihRCPtSFf7yTvuFou2Kp1iq2WWKKNpZXWONAWd2IVQB
1JJ6YqlC+abO4FdLtrnVVrtLaxgQkfzJcTtDA4/1HOKrzqmumrJorheyyXECv9IRpF/4bFWj5hlh
+K90m/tYv9++nHciv+raSXEn0lcVR9hqNhqEH1ixuI7mHkUMkTBwGXqpp0YdwdxiqIxVAato8GoC
KUMbe/tSXsr1B+8iZhQ/6yNSjodm+4hVT0bV5Ltp7O8iFvqtkQt1ADVWVq+nNEe8UnE8fAgqd1OK
pnirsVSaxY2nmbULNj8GoxpqFuT3eNVtrhR7IEhb5viqc4qkWrN+itYg1onjZXCLY6o38g5k205P
ZUkkdG9n5HZcVT3FXYq7FXYq7FXYqkvmSd50i0O2Yi71QMkjKSGitFoLiao+yQrcEP8AOy9q4qnE
cccUaxxqEjQBURQAqqBQAAdAMVQusaium6XdXzL6hgjLRxDrJJ0SNf8AKdyFHucVa0TT207SLOyd
g8sESrNIooHlpWR9/wCd6t9OKo3FUr81/wDKLax/zA3P/JlsVd5U/wCUW0f/AJgbb/kyuKppirsV
diqQ2Q/TOtSag/xadpUklvp6dnulrHcXBH/FZrCnh8Z7iiqfYqgdW1aOwiQLG1ze3BKWdmhAeVwK
9Tsqr1ZjsoxVBQeXWvJEu/MDpf3KsJIbOhNnbsPs+nG3946/79kBav2eAPHFU7xV2KuxVLNR8v2V
3cfXYS1lqgUKmoW9FloOiybcZU/yJAR4UO+KqemareLdfozV0SLUKE288dRBdIoBZ4gxJVl/bjJJ
HYsN8VTfFUm8w2NxSLV9PjL6pp1WSJTQ3EDUM1sfHmq1SvSQKelcVTOyvLa9tILy1kEttcxrLBKO
jI45Kd/EHFVbFUp8x2l01vDqFihkv9Mk+sQxLTlMnErNBU/78jJ49ufEnpiqYWV7a31nDeWkgltr
hFkhkFQGVhUGhoR9OKr5oYZ4ZIJ41lhlUpLE4DKysKMrKdiCOoxVIILufy4RaanIZNEqFsdTYljA
vRYbxmrsvRJifi6PRvidVkQIIqNwehxV2KuxV2KpZq+uQ2LraQRm81adS1rp8ZAdh05yNv6UQP2p
G27CrUUqtaJpE9oJbu/lW51e84m8uFXigC14QxKd1ij5HiDualjuTiqaYqkV236V1+KwUcrLSWS6
vm7NckcraHw+AH1m7g+n4nFU9xV2KpX5r/5RbWP+YG5/5MtirvKn/KLaP/zA23/JlcVTTFXYqlvm
O+uLPR5pLQ0vZiltZEgMBPcOsMTMp6qruGb2BxVFabp9tp2n29haqVt7WNYogTU8VFKk9ye57nFV
S5uYLW2lubhxFbwI0k0jdFRByZj8gMVSrQLKeV5Nb1CIx6jeqBFC4+K2ta1jt+9G/al8X2rxVaKp
zirsVdirsVdiqB1nSYdUsjbu7QzIwltLpKepBOn2JY6918DswqpqpIxVZoOpyX9kxuFWO/tZGttQ
hWvFZ46cuNd+DqQ6V/YYYqmOKpLoS/UtQ1LSOkMTi9s17LDdliydvs3CS7dlKjFU6xV2KscuJB5Z
vJbpyR5evJDJcnqLK4kNXmPhbytvIf2HPI/CzFVWRggio3B6HFXMoYFWAKkUIPQjFUkXy5JYkfoK
8OnRA/7wOnr2e5qeMRZHi9likVf8k4qvW+8zw0+s6XDcL0LWVzVz7+nOkCivh6hxVcdV1h6LBosy
Of2rqa2jjHzMMlw//CYqsa18z3lRcXcGmQnrHZAzzUp2uJ1RBXw9CvviqN03R9O01JFtIuLzNznm
dmkllbpyklcs7mmw5HptiqMxVKta1W4gaPT9NRZtXuh+5Rt44U6NcTgEH008AaufhFNyFUTpGl2+
mWKWsLNIQWeaeQgySyueUkshAA5OxJNBTsABQYqjMVdiqV+a/wDlFtY/5gbn/ky2Ku8qf8oto/8A
zA23/JlcVTTFXYqk+qBp9f0a12CxG5v3Jrv6MYtwvh1vA30YqnGKpN5jAuW07SzThf3S/WB1/cW6
m4cEd1do1javZsVQf5hecf8ACflt9USBbq7eWO3s7Z3EaySyHernoFjVnPyxVhupfnLqitq95pOl
rfaPp9sLmOcpcLRJNLXUIpZZgrW4BeRYvT589wRtXCqeeWfP2uX+q3Gm6ppX1RoLO4vI5ys9v66Q
yIissFykc0anmy/GK1WvQjFUv8t/mzealolv5kv7S1s9CaNluF9ci7E0Ngb6Z443Cq6UVlVA3Lj8
fSoCqjo/5qeYNYTRJbWzsoVv5LqDUIHeSR4ZbFGnk4OlFYPBwZPdt8UKFr+cusTeVYfNP6Mtxpsv
C1NuJX+si8azFyXpx4+kHPGleXD46/s4qyT8ufzDfze9+j2Ys5NOjtRcRFuTLPMrmVD/AJKmP4D+
0pB74Ep3x+qebBwFIdVtWaXsBPZsoUjsWkinIPekY8MVTnFUn1EGDzHo90NxOtzYMB4yILlWP+r9
UYD/AFsVTjFXYq0yq6lWAZWFGU7gg9jiqQLZajoB/wBxsTXuiAf8cxSBPbD/AJdSxCvGP99MQVH2
DTjHiqa6bq2nanCZrGdZlRuEq7q8b9SkkbAPG47qwBxVJPP2v3+jaZZyWciW31y8jtbjUJVDx2sT
o7eqwdo0qzIsal2C8nFcVYHp/wCcetXFzpAjgFzYI0tvrd6IaqJJrmWzsDygeeBC0sK8qSlW51Ta
mFUF5Y/ObzNc6loNrrv1Wwini006nNIAkTC+tL65WZJGYBQ6QwE/yvyXArcv5ueZ/wDGl1ZQ3FvJ
pdteW8MUSLCTNBPqMtsxWriWVhEoKeiDvuRTCr27AqQyeYJ9Rdrby4qXLA8ZdVkBayhpseJUr9Yc
fyRmldmdcVR+kaNb6bHIVd7i7uWEl7ezEGWaQCnJiAAABsqqAqjZQBiqPxV2KuxVK/Nf/KLax/zA
3P8AyZbFXeVP+UW0f/mBtv8AkyuKppirsVSiRg/m23UkAwWExQdz600XL7vRH34qm+KpVc/8pTp/
/MDe/wDJ60xVKfP/AJq0vyxb2Gp32mm+dJnFvP8Au0W3b0X5t60pCxs8fJF3HImmKsYu/PHkvS9B
1WePyyq+VZjc2ss8aW6xXV1aWzc4XgHxcSts0IdhTkPDfCqp/inTvMGs6FNP5Vtb+4u5ZIbC/F1b
zGL0AJ5QWC1HBQG4nvihKIfzE/Kdwsr+XIVeO1tI5VNvAWSEWMl08QDAcvqsVsI2HjxUdsVR9z+a
Xk+K606/bRIvrWpRLeTvK9ul0kryHTZokV/inmT0fTZUNSop0xVF+U9X8l65+kb228sWqLplpJAq
wiC4u3ggV7YQrbxrzHKJCir/AC/D0xVk/krUtD1WC+v9O0waZcJOLK/QpCGZ7WNQi+pAzxyCNHCi
jHjuuxBGBKP1kD9JaEe4vnof+jG5xVNcVSnXfhvdDcLzZL/Ze552s6EjY/ZVix9gcVTbFXYq7FXY
qluo+XtLvrgXbxtBfovBL+3Yw3AXqFMiULLXfg1V9sVQ5tPM9uvCO5ttVgI4mO9T6vMwI3LTQK8R
+Qtxiq5NR1aMenPoMrMCDW0mtpIiRvUGZ7Z+o/kxVbJfTuvF/Ll260UcSbAii1p1ue1Tiq0/4luH
R4tOsbEjZbieRriVAeo9GJI13r2nxVcPLX1qja3eSanX7VqQIbPrWn1dP7xem0zSYqnKIiIqIoVF
ACqBQADYAAYq3irsVdirsVSvzX/yi2sf8wNz/wAmWxV3lT/lFtH/AOYG2/5MriqaYq7FUpvG4ead
LZjRHtL2JfeQvbOF/wCAjc/RiqbYqk+qM1vr2jXW3CY3Fg9a7etGJ1bw+1aBf9liq/XvLGj66kK6
jHIxg5iKSGaWBwsq8JU5wsjFXT4WGKpXL+WPkuSGa3Niy2c6SK1ks8y2ytNA1tJIkIf00kaJyvMC
u9epJxVO5dE0yW70+7eGtxpfP6i/Jhw9SP0n2rRqpt8VcVY/L+U3kCV1d9KQsJZ5zR5AGa6nS4mD
AN8Ss8QHE7carShOKq4/LTyUqX0cWnCGPUYzDcxxSSxpwMnrFY0Vgsf7z4vhAxVX07yPomnWd5ZW
r3a2V7HNE9qbu4aONZ2ZpPRUv+7JLn4l3HjiqO8v+X9P0DTI9N08y/VIj+6SaV5eAoBxUuTxUU2U
bYqpag/r+YtJtAR/o63F+9DuOCfVkU+zfWmP+xxVN8VSnWGB1fQoVP7wXUsxXv6aWkyM30PKg+nF
U2xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVK/Nf/ACi2sf8AMDc/8mWxV3lT/lFtH/5gbb/k
yuKppirsVSbzQRBaW2qE0Gk3KXcp2oISrQXDn2SCZ3+jFU5xVAa7p0uoaVNbQOsV2OMtnK4qqXEL
CWB2A6qsiKWHcbYqv0fU01LTobsIYXYFZ7dvtRTIeMsTe6OCteh6jbFUZirsVdirsVdirTMqKWYh
VUVZjsAB3OKpL5crfSXWvspC6jwSyB2IsoOXosdh/eM7y/6rAdsVTvFUmt2+uearqUf3WlW4tAw/
39dFZ5lP+rHHAf8AZYqnOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpX5r/5RbWP+YG5/5Mti
rvKn/KLaP/zA23/JlcVTTFXYqtmiimieGVBJFIpSRGFVZWFCCD2IxVJ/LM80UM2jXbl7zSisQkat
ZbZq/Vpqn7RZF4Of9+K+Kp1iqR6jbXumX0msadE1xBNQ6tp0YrJLxUKtxAKgeqigKy/tqAB8SqCq
mlhqFlqFpHd2Uyz28oqkiGo2NCD3BB2IO4OxxVEYq7FXYq4kAVOwHU4qxuWaTzPKba328tKf9Lu/
+W4g/wBxD4wbfvH6OPhWoLHFWSAACg2A6DFUJq2pw6Zp817KrSCMARwpQvLI5CxxIDSryOQqjxOK
qWhadLY6cqXBV72ZmuL2RfstPKecnGu/FSeKV/ZAGKphirsVdirsVdirsVdirsVdirsVdirsVdir
sVdiqV+a/wDlFtY/5gbn/ky2Ku8qf8oto/8AzA23/JlcVTTFXYq7FUp1zTrp5INU01QdVsgwSMtx
W4hehkt3PQcqAo37LgHpyBVRmmana6lZJd2xYI9Q8bgpJG6mjxyId1dG2YHocVRWKpTd+XozdPf6
bO2m6hJvLJGA0MxAoPrEBosnhyHF6bBgMVWrf+ZLY8LvS1vV6LPp8qAnxZ4blofT+SySYq3/AIkt
wp9Sxv45e0P1SZyf9nGrx/e+KrW1nWZhxstEn5EnjLeyw28NB4+m1xOK9v3OKrToF5qDcteuhcwV
qumW6mK17bS1LPP8nIQ/yVxVO1UKAqgBQKADoBirTMqKWYhVUVZjsAB3OKpBp3LX7+HWXBGkWtW0
iJgVMzsCpvGBoePElYR/KS+/JeKrIMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqV+a/wDl
FtY/5gbn/ky2Ku8qf8oto/8AzA23/JlcVTTFXYq7FXYqk+paReJeHVdHkWK/IAubWUkW92ooAJeI
YpIAOKygEgbEMAAFVfS9dtL+R7Yq1rqMIrcafOAsyCtOQAJDpXpIhKnxxVMcVeOSfnFqthPI136c
9zc2t48OjLHGHtryGf0bW1k4zG45uzKr84hyLAoeq4VS2b85vOcDLHJbRk29raW2qMYHjeDUZNQn
t/UeNqMsU0VuKKfss6++KozXPzf1mHyfoV/Y3lo2pXZmTVVQRu0RRqJVGakZI3+PFbZ/+W3mLUde
8vyXWoMklxb3dxa+tHw4yJE9EflE0kTHiRUxsVrgVkGo6nYabbi4vZhDGWCJWpZ3b7KRooLO7dlU
EntiqUiyv/MDxy6nE1noykPFpTf3twRuGu6bBPCEdf2z+wFWQYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYqlfmv/AJRbWP8AmBuf+TLYq7yp/wAoto//ADA23/JlcVTTFXYq7FXYq7FUHqmj
abqkSR30Al9JucEoLRyxP05xSoVkjb/KRgcVQK2XmWwotpeRanbigEGoVimHb/eqFWBA8GhLHu2K
tDWLmGr3uhXUJYj1poRDcoSvQgROZmApsTEMVVP8QaUSW+r3tTSpOnXtTxO3+6e3bFVEatavzSy0
W8ulf4paWy2wPz+uNbcjviraL5quVWOOO10a1pTYm6uACaUCgRQxsB3rIPbFUTp/l7T7O6N65kvN
SYFWv7pvUmCnqsewSJT3SJVX2xVM8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqV+a
/wDlFtY/5gbn/ky2KoHQr3V7LRNPs59CvfWtraGGXjJYkco4wrUP1nxGKo79Maj/ANWK+/4Ox/7K
cVd+mNR/6sV9/wAHY/8AZTirv0xqP/Vivv8Ag7H/ALKcVd+mNR/6sV9/wdj/ANlOKu/TGo/9WK+/
4Ox/7KcVd+mNR/6sV9/wdj/2U4q79Maj/wBWK+/4Ox/7KcVd+mNR/wCrFff8HY/9lOKu/TGo/wDV
ivv+Dsf+ynFXfpjUf+rFff8AB2P/AGU4q79Maj/1Yr7/AIOx/wCynFXfpjUf+rFff8HY/wDZTirv
0xqP/Vivv+Dsf+ynFXfpjUf+rFff8HY/9lOKu/TGo/8AVivv+Dsf+ynFXfpjUf8AqxX3/B2P/ZTi
rv0xqP8A1Yr7/g7H/spxV36Y1H/qxX3/AAdj/wBlOKu/TGo/9WK+/wCDsf8AspxV36Y1H/qxX3/B
2P8A2U4q79Maj/1Yr7/g7H/spxV36Y1H/qxX3/B2P/ZTirv0xqP/AFYr7/g7H/spxV36Y1H/AKsV
9/wdj/2U4q79Maj/ANWK+/4Ox/7KcVd+mNR/6sV9/wAHY/8AZTirv0xqP/Vivv8Ag7H/ALKcVd+m
NR/6sV9/wdj/ANlOKu/TGo/9WK+/4Ox/7KcVd+mNR/6sV9/wdj/2U4qgddvdXvdE1Czg0K99a5tp
oYuUliBykjKrU/WfE4q//9k=</xapGImg:image> + </rdf:li> + </rdf:Alt> + </xap:Thumbnails> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"> + <xapMM:DocumentID>uuid:09218459EA5BDE11B2C6D5E8056E1B71</xapMM:DocumentID> + <xapMM:InstanceID>uuid:0A218459EA5BDE11B2C6D5E8056E1B71</xapMM:InstanceID> + <xapMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>uuid:b1ac9fe8-11a3-4422-b8f3-ae4b8085b7a8</stRef:instanceID> + <stRef:documentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:documentID> + </xapMM:DerivedFrom> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"> + <illustrator:StartupProfile>Print</illustrator:StartupProfile> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xapTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#" + xmlns:xapG="http://ns.adobe.com/xap/1.0/g/"> + <xapTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>792.000000</stDim:w> + <stDim:h>612.000000</stDim:h> + <stDim:unit>Points</stDim:unit> + </xapTPg:MaxPageSize> + <xapTPg:NPages>1</xapTPg:NPages> + <xapTPg:HasVisibleTransparency>False</xapTPg:HasVisibleTransparency> + <xapTPg:HasVisibleOverprint>False</xapTPg:HasVisibleOverprint> + <xapTPg:Fonts> + <rdf:Bag> + <rdf:li rdf:parseType="Resource"> + <stFnt:fontName>Helvetica</stFnt:fontName> + <stFnt:fontFamily>Helvetica</stFnt:fontFamily> + <stFnt:fontFace>Regular</stFnt:fontFace> + <stFnt:fontType>TrueType</stFnt:fontType> + <stFnt:versionString>6.0d7e1</stFnt:versionString> + <stFnt:composite>False</stFnt:composite> + <stFnt:fontFileName>Helvetica.dfont</stFnt:fontFileName> + </rdf:li> + </rdf:Bag> + </xapTPg:Fonts> + <xapTPg:PlateNames> + <rdf:Seq> + <rdf:li>Magenta</rdf:li> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xapTPg:PlateNames> + <xapTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xapG:groupName>Default Swatch Group</xapG:groupName> + <xapG:groupType>0</xapG:groupType> + <xapG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>White</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>0.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>Black</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>0.000000</xapG:yellow> + <xapG:black>100.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>CMYK Red</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>100.000000</xapG:magenta> + <xapG:yellow>100.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>CMYK Yellow</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>100.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>CMYK Green</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>100.000000</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>100.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>CMYK Cyan</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>100.000000</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>0.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>CMYK Blue</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>100.000000</xapG:cyan> + <xapG:magenta>100.000000</xapG:magenta> + <xapG:yellow>0.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>CMYK Magenta</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>100.000000</xapG:magenta> + <xapG:yellow>0.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=15 M=100 Y=90 K=10</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>14.999998</xapG:cyan> + <xapG:magenta>100.000000</xapG:magenta> + <xapG:yellow>90.000000</xapG:yellow> + <xapG:black>10.000002</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=0 M=90 Y=85 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>90.000000</xapG:magenta> + <xapG:yellow>85.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=0 M=80 Y=95 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>80.000000</xapG:magenta> + <xapG:yellow>95.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=0 M=50 Y=100 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>50.000000</xapG:magenta> + <xapG:yellow>100.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=0 M=35 Y=85 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>35.000004</xapG:magenta> + <xapG:yellow>85.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=5 M=0 Y=90 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>5.000001</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>90.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=20 M=0 Y=100 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>19.999998</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>100.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=50 M=0 Y=100 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>50.000000</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>100.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=75 M=0 Y=100 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>75.000000</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>100.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=85 M=10 Y=100 K=10</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>85.000000</xapG:cyan> + <xapG:magenta>10.000002</xapG:magenta> + <xapG:yellow>100.000000</xapG:yellow> + <xapG:black>10.000002</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=90 M=30 Y=95 K=30</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>90.000000</xapG:cyan> + <xapG:magenta>30.000002</xapG:magenta> + <xapG:yellow>95.000000</xapG:yellow> + <xapG:black>30.000002</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=75 M=0 Y=75 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>75.000000</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>75.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=80 M=10 Y=45 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>80.000000</xapG:cyan> + <xapG:magenta>10.000002</xapG:magenta> + <xapG:yellow>45.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=70 M=15 Y=0 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>70.000000</xapG:cyan> + <xapG:magenta>14.999998</xapG:magenta> + <xapG:yellow>0.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=85 M=50 Y=0 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>85.000000</xapG:cyan> + <xapG:magenta>50.000000</xapG:magenta> + <xapG:yellow>0.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=100 M=95 Y=5 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>100.000000</xapG:cyan> + <xapG:magenta>95.000000</xapG:magenta> + <xapG:yellow>5.000001</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=100 M=100 Y=25 K=25</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>100.000000</xapG:cyan> + <xapG:magenta>100.000000</xapG:magenta> + <xapG:yellow>25.000000</xapG:yellow> + <xapG:black>25.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=75 M=100 Y=0 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>75.000000</xapG:cyan> + <xapG:magenta>100.000000</xapG:magenta> + <xapG:yellow>0.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=50 M=100 Y=0 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>50.000000</xapG:cyan> + <xapG:magenta>100.000000</xapG:magenta> + <xapG:yellow>0.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=35 M=100 Y=35 K=10</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>35.000004</xapG:cyan> + <xapG:magenta>100.000000</xapG:magenta> + <xapG:yellow>35.000004</xapG:yellow> + <xapG:black>10.000002</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=10 M=100 Y=50 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>10.000002</xapG:cyan> + <xapG:magenta>100.000000</xapG:magenta> + <xapG:yellow>50.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=0 M=95 Y=20 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>95.000000</xapG:magenta> + <xapG:yellow>19.999998</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=25 M=25 Y=40 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>25.000000</xapG:cyan> + <xapG:magenta>25.000000</xapG:magenta> + <xapG:yellow>39.999996</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=40 M=45 Y=50 K=5</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>39.999996</xapG:cyan> + <xapG:magenta>45.000000</xapG:magenta> + <xapG:yellow>50.000000</xapG:yellow> + <xapG:black>5.000001</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=50 M=50 Y=60 K=25</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>50.000000</xapG:cyan> + <xapG:magenta>50.000000</xapG:magenta> + <xapG:yellow>60.000004</xapG:yellow> + <xapG:black>25.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=55 M=60 Y=65 K=40</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>55.000000</xapG:cyan> + <xapG:magenta>60.000004</xapG:magenta> + <xapG:yellow>65.000000</xapG:yellow> + <xapG:black>39.999996</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=25 M=40 Y=65 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>25.000000</xapG:cyan> + <xapG:magenta>39.999996</xapG:magenta> + <xapG:yellow>65.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=30 M=50 Y=75 K=10</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>30.000002</xapG:cyan> + <xapG:magenta>50.000000</xapG:magenta> + <xapG:yellow>75.000000</xapG:yellow> + <xapG:black>10.000002</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=35 M=60 Y=80 K=25</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>35.000004</xapG:cyan> + <xapG:magenta>60.000004</xapG:magenta> + <xapG:yellow>80.000000</xapG:yellow> + <xapG:black>25.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=40 M=65 Y=90 K=35</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>39.999996</xapG:cyan> + <xapG:magenta>65.000000</xapG:magenta> + <xapG:yellow>90.000000</xapG:yellow> + <xapG:black>35.000004</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=40 M=70 Y=100 K=50</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>39.999996</xapG:cyan> + <xapG:magenta>70.000000</xapG:magenta> + <xapG:yellow>100.000000</xapG:yellow> + <xapG:black>50.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=50 M=70 Y=80 K=70</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>50.000000</xapG:cyan> + <xapG:magenta>70.000000</xapG:magenta> + <xapG:yellow>80.000000</xapG:yellow> + <xapG:black>70.000000</xapG:black> + </rdf:li> + </rdf:Seq> + </xapG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:groupName>Print Color Group</xapG:groupName> + <xapG:groupType>1</xapG:groupType> + <xapG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=0 M=30 Y=70 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>0.000000</xapG:cyan> + <xapG:magenta>30.000002</xapG:magenta> + <xapG:yellow>70.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=5 M=70 Y=90 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>5.000001</xapG:cyan> + <xapG:magenta>70.000000</xapG:magenta> + <xapG:yellow>90.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=5 M=90 Y=75 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>5.000001</xapG:cyan> + <xapG:magenta>90.000000</xapG:magenta> + <xapG:yellow>75.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=30 M=0 Y=95 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>30.000002</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>95.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=60 M=5 Y=95 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>60.000004</xapG:cyan> + <xapG:magenta>5.000001</xapG:magenta> + <xapG:yellow>95.000000</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=30 M=0 Y=10 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>30.000002</xapG:cyan> + <xapG:magenta>0.000000</xapG:magenta> + <xapG:yellow>10.000002</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=60 M=10 Y=5 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>60.000004</xapG:cyan> + <xapG:magenta>10.000002</xapG:magenta> + <xapG:yellow>5.000001</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>C=80 M=5 Y=10 K=0</xapG:swatchName> + <xapG:mode>CMYK</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:cyan>80.000000</xapG:cyan> + <xapG:magenta>5.000001</xapG:magenta> + <xapG:yellow>10.000002</xapG:yellow> + <xapG:black>0.000000</xapG:black> + </rdf:li> + </rdf:Seq> + </xapG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:groupName>Grayscale</xapG:groupName> + <xapG:groupType>1</xapG:groupType> + <xapG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=100</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>255</xapG:gray> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=90</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>229</xapG:gray> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=80</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>203</xapG:gray> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=70</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>178</xapG:gray> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=60</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>152</xapG:gray> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=50</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>127</xapG:gray> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=40</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>101</xapG:gray> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=30</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>76</xapG:gray> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=20</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>50</xapG:gray> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=10</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>25</xapG:gray> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xapG:swatchName>K=5</xapG:swatchName> + <xapG:mode>GRAY</xapG:mode> + <xapG:type>PROCESS</xapG:type> + <xapG:gray>12</xapG:gray> + </rdf:li> + </rdf:Seq> + </xapG:Colorants> + </rdf:li> + </rdf:Seq> + </xapTPg:SwatchGroups> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?>
% &&end XMP packet marker&&
[{ai_metadata_stream_123}
<</Type /Metadata /Subtype /XML>>
/PUT AI11_PDFMark5
[/Document
1 dict begin /Metadata {ai_metadata_stream_123} def
currentdict end /BDC AI11_PDFMark5
+%ADOEndClientInjection: PageSetup End "AI11EPS" +%%EndPageSetup +1 -1 scale 0 -275 translate +pgsv +[1 0 0 1 0 0 ]ct +gsave +np +gsave +0 0 mo +0 275 li +424 275 li +424 0 li +cp +clp +[1 0 0 1 0 0 ]ct +1 lw +0 lc +0 lj +4 ml +[] 0 dsh +true sadj +181.5 181.5 mo +181.5 211.323 157.323 235.5 127.5 235.5 cv +97.6768 235.5 73.5 211.323 73.5 181.5 cv +73.5 151.677 97.6768 127.5 127.5 127.5 cv +157.323 127.5 181.5 151.677 181.5 181.5 cv +cp +false sop +/0 +[/DeviceCMYK] /CSA add_res +0 0 0 1 cmyk +@ +208.5 181.5 mo +208.5 226.235 172.235 262.5 127.5 262.5 cv +82.7646 262.5 46.5 226.235 46.5 181.5 cv +46.5 136.765 82.7646 100.5 127.5 100.5 cv +172.235 100.5 208.5 136.765 208.5 181.5 cv +cp +@ +361.5 100.5 mo +361.5 130.323 337.323 154.5 307.5 154.5 cv +277.677 154.5 253.5 130.323 253.5 100.5 cv +253.5 70.6768 277.677 46.5 307.5 46.5 cv +337.323 46.5 361.5 70.6768 361.5 100.5 cv +cp +@ +388.5 100.5 mo +388.5 145.235 352.235 181.5 307.5 181.5 cv +262.765 181.5 226.5 145.235 226.5 100.5 cv +226.5 55.7646 262.765 19.5 307.5 19.5 cv +352.235 19.5 388.5 55.7646 388.5 100.5 cv +cp +@ +333.5 173.5 mo +282.5 173.5 li +282.5 158.5 li +333.5 158.5 li +333.5 173.5 li +cp +0 0.00392157 0 0 cmyk +f +0 0 0 1 cmyk +%ADOBeginSubsetFont: Helvetica Initial +%ADOt1write: (1.0.24)
%%Copyright: Copyright 2009 Adobe System Incorporated. All rights reserved.
12 dict dup begin
/FontType 1 def
/FontName /Helvetica def
/FontInfo 5 dict dup begin
/ItalicAngle 0 def
/FSType 0 def
end def
/PaintType 0 def
/FontMatrix [0.001 0 0 0.001 0 0] def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 32 /space put
dup 45 /hyphen put
dup 49 /one put
dup 50 /two put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 87 /W put
dup 89 /Y put
def
/FontBBox {-951 -481 1446 1122} def
end
systemdict begin
dup /Private
7 dict dup begin
/|- {def} def
/| {put} def
/BlueValues [0 0] def
/password 5839 def
/MinFeature {16 16} def
/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
/Subrs 5 array
dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
dup 1 <1C60D8A8C9C3D06D9E> |
dup 2 <1C60D8A8C9C202D79A> |
dup 3 <1C60D8A849> |
dup 4 <1C60D8A8CC3674F41144B13B77> |
def
put
dup /CharStrings
24 dict dup begin
/.notdef <1C60D8A8C9B66F631635D26BA635582B3FDE9B3DD75794781396E6
48A7CA97DB1343CA> |-
/space <1C60D8A8C9B854D00D> |-
/hyphen <1C60D8A8C9B81F2C797F8B2BDB0639171EDAAB309BF7> |-
/one <1C60D8A8C9B7EF322B8DEEDAE6F72EF3709E16C7A593AF17F17D72A390
7C7468090579C66DE0263BFE> |-
/two <1C60D8A8C9B7EF327699F81B0CD59DC4BD38D48AF11B5B9C1D7787A22B
DC09D7BCED9A76C2312055A28AC829584109043EE366AF8632D6D62E9BBD6A43
57093750D4015EA59C9F538C44C55AD0DB14FEE0C7267845EB7EFBD514024AA1
A03530A8941AD7B5F508335B2FDCA37E6B0627146A6F144DB9DD7DCA6BE86290
FB46DD6A2918F4C2C2BDEECA159D78> |-
/A <1C60D8A8C9B64EDFF4A769B0E349B0B8A8759517834132408F730D592533
2B160EAFC678A283B12B9F41A37E5CF702EF2D2E718583BF> |-
/B <1C60D8A8C9B64EDFF4E8F029E491459914546F05F980240E216037EFFB56
810F73C7B1AD75758AC950CDF0AE7CA5E10B4B98E91DD14CBA33340505432C4E
BD036ED5D8912D20451B0A88BD5908DF5F74741DA09743ACC2D69ECC46C5DD00
5482FE9F42B63F3612F31E021BB829EB7CDDF491856FAD0A1D6B2854CE32CAE2
827DAD35AA4DEB8EA2DDAB1E824241122D8E6929DF014B94E2393EF8A13B> |-
/C <1C60D8A8C9B6079F6D8209747A86332E73924F1B07F271169856A53C9157
71D7C530ADE68D8CA49F0A6B3478F9E8176949771F40D91B68E1A88C72CE81CC
0A91B3CFB642960E7EB2127A1637D49961A11F5DD40622F39379CDAB7E5B349D
F832E4955008C5E3208AB258B012A237635179513D820ACF76E0A17ED392C351
599687E8E7D0> |-
/E <1C60D8A8C9B64EDFE336C703EA12FABA68C9F5D15F1A9B67653505BC29F8
D56A4237858E054C3198877A> |-
/F <1C60D8A8C9B7D8BE0123FD0A136BA0F480FD4287FFCF97986718886432AF
2C7EB6A3F35B> |-
/G <1C60D8A8C9B6FF86FAE761919412E75DCB56A17E0B647886E974BE0CD2DD
C55247C89172C0F24B317CED95A1845F91927547B6F787BE4A81523EC6B90B7A
F23F6F8A8BDDC51D0AA285D7E086AD8E028BD7D16A89F17742D556071D7D5616
6C6C8A71E0DFC3DA3B4DBE27EC4E6BE207A1EAF47A71BE409951D1C5060119CD
D071AF7E9076F56846B6D62E52B2CB6390635FC230> |-
/H <1C60D8A8C9B6079F4F4E07EFC7C894BAD912B65087B319FD4C6D4407FA6B
DEE59584D043C3070AE38B> |-
/I <1C60D8A8C9B854D0EE4B20327A907C36187261> |-
/L <1C60D8A8C9B7EF320B5E1B1901757FD427860A5A6931496E07> |-
/M <1C60D8A8C9B6B41C9910B30BE12408A0CCE83CFCBF71D6A0AFED0B0C7E6B
8742F00BF38074693AE67B7536DF8025FC27BB7165EE6A43D7B9497E065E42F0
EE8DA1C58C8863D1E0F8290CD2A3925749EE5F186B> |-
/N <1C60D8A8C9B6079F42CB3557771D803C706A630DA03929B931F488C01B37
E85FE694B3E25EF7F6332F> |-
/O <1C60D8A8C9B6FF86FAE00AF1D2F86EE41080CA4FE58FE601E0C2094F12B2
546E9E38BAEF65733BECF7148D0EA0DA88DD45A55274AD12A1DAB92015F88338
234BE6A027107EEF674C9235BAD46D7DFF766B4165047A7FA440E1670CEEAAB2
425BA29AB4CCAE0C0F708E15BAD5B5B8F2A1708072DEF2F49003A8347C8BC4E8
13779196F3AD613B7571> |-
/P <1C60D8A8C9B64EDFE336D280AD0769103D1650D4946BC89E21A88DEC5161
3F3C79BEE823BD11DE4DA6DB5B89497F0D2976B3DEFC67AF28487C3BB530BC49
F1D09A090BACE6D7137C10758B70768799060F36DCE81F308AA18889AF5053DE> |-
/R <1C60D8A8C9B6079F62E4AB3BE2637412A7FA2BF1A87387986CC045CAB872
B149BF5CA8B183616945E928E44276850B6ACD583D0202E4733E2391A44F4BCB
738AB089D22707E0F4100F2BC6F35BD460D56FBB8A5713D4AF8760EB8EC1E1AE
6F49A9B2B1066A8DA04011CCA29E2BB62A652880D30D80185E3336BD5BF6EB5D
116E1FAF0793D4F86835A22CB564EFB5339E311318AE2981A0679F359C9E7A1F
F6CE964A> |-
/S <1C60D8A8C9B64EDFB8831DC7D3DA5352C683CFE7ADDB1F2F7D19136185D1
F816C3BE09EC1E84619F52030DEE9359B5F11BDC142E51FA821DBBAA94D355CD
B3194A176F4CAFE2F8762140A61B8DB4801B25EC39CF8CD3F7F21C11EB8BF2FE
AA7BF71364CB0E29D9153C5428F8E2556CFDCDFCF7C63E7AA008F518E6EAA3DE
B5EC8960FB0234452B3B55FF1BB7B980C85D0DFF1CA34BE144E02D5E8A581ACC
1C4C80D7396F6E85C6E2CC3BAA0E140AF4F656AC7D073077DF7B4E8B5856F92B> |-
/T <1C60D8A8C9B7D8BE7B6CE17BCB3B2D4B0FB3E6AF9E6DDADD178189522CE1
F006> |-
/U <1C60D8A8C9B6079F4AA924EA43FD5A09DAB441D8FDAD8EE41C906BC5551C
AACFEF8B65251D34977BCAD7099CF8F4F9BCA8F32E33DFACED539B0F12BA4E54
491DDBF246C2DFA3D44D729CA7103659C293245DC39AD319> |-
/W <1C60D8A8C9B5D6EF2BD09738A41AA6380C9765B88F07D3637E9EE67A95A8
1C558683DE1DD822B8DCC23EEF2BFD04340812EB686C4A78A7861A98B16FC19A> |-
/Y <1C60D8A8C9B64EDFF46D2EC9D2AE9B9064B89D1619D7BD915D4A1DC374BD
A504CF8C7F69969A9C11B530CF3B> |-
end put
end
dup /FontName get exch definefont pop
end
%ADOEndSubsetFont +/XLUCMA+Helvetica /Helvetica findfont ct_VMDictPut
/XLUCMA+Helvetica*1
[32{/.notdef}rp /space 12{/.notdef}rp /hyphen 3{/.notdef}rp /one /two 14{/.notdef}rp
/A /B /C /.notdef /E /F /G /H
/I 2{/.notdef}rp /L /M /N /O /P /.notdef
/R /S /T /U /.notdef /W /.notdef /Y
166{/.notdef}rp]
XLUCMA+Helvetica nf
XLUCMA+Helvetica*1 [12 0 0 -12 0 0 ]msf
286.5 171.5 mo
(GANLIB)
[9.33398 8.00391 8.66602 6.67383 3.33398 0 ]xsh
87.5 174.5 mo
(APPLICATION)
[8.00391 8.00391 8.00391 6.67383 3.33398 8.66602 7.11914 7.33008 3.33398 9.33398 0 ]xsh
268.5 106.5 mo
(SOFTWARE 1)
[8.00391 9.33398 7.33008 7.33008 10.8867 8.00391 8.66602 8.00391 3.33398 0 ]xsh
86.5 188.5 mo
(SOFTWARE 2)
[8.00391 9.33398 7.33008 7.33008 10.8867 8.00391 8.66602 8.00391 3.33398 0 ]xsh
46.5 46.5 mo
(MULTI-PHYSICS APPLICATION)
[9.99609 8.66602 5.78906 7.33008 3.33398 3.99609 8.00391 8.66602 8.00391 8.00391 3.33398 8.66602
8.00391 2.67773 8.00391 8.00391 8.00391 6.67383 3.33398 8.66602 7.11914 7.33008 3.33398 9.33398
0 ]xsh
153.5 254.5 mo +102.5 254.5 li +102.5 239.5 li +153.5 239.5 li +153.5 254.5 li +cp +0 0.00392157 0 0 cmyk +f +0 0 0 1 cmyk +XLUCMA+Helvetica*1 [12 0 0 -12 0 0 ]msf
106.5 252.5 mo
(GANLIB)
[9.33398 8.00391 8.66602 6.67383 3.33398 0 ]xsh
269.5 91.5 mo
(APPLICATION)
[8.00391 8.00391 8.00391 6.67383 3.33398 8.66602 7.11914 7.33008 3.33398 9.33398 0 ]xsh
423.5 274.5 mo +0.5 274.5 li +0.5 0.5 li +423.5 0.5 li +423.5 274.5 li +cp +@ +%ADOBeginClientInjection: EndPageContent "AI11EPS" +userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse
+%ADOEndClientInjection: EndPageContent "AI11EPS" +grestore +grestore +pgrs +%%PageTrailer +%ADOBeginClientInjection: PageTrailer Start "AI11EPS" +[/EMC AI11_PDFMark5
[/NamespacePop AI11_PDFMark5
+%ADOEndClientInjection: PageTrailer Start "AI11EPS" +[ +[/CSA [/0 ]] +] del_res +/XLUCMA+Helvetica*1 uf
/XLUCMA+Helvetica uf
/Helvetica uf
Adobe_AGM_Image/pt gx +Adobe_CoolType_Core/pt get exec
Adobe_AGM_Core/pt gx +currentdict Adobe_AGM_Utils eq {end} if +%%Trailer +Adobe_AGM_Image/dt get exec +Adobe_CoolType_Core/dt get exec
Adobe_AGM_Core/dt get exec +%%EOF +%AI9_PrintingDataEnd
userdict /AI9_read_buffer 256 string put
userdict begin
/ai9_skip_data
{
mark
{
currentfile AI9_read_buffer { readline } stopped
{
}
{
not
{
exit
} if
(%AI9_PrivateDataEnd) eq
{
exit
} if
} ifelse
} loop
cleartomark
} def
end
userdict /ai9_skip_data get exec
%AI9_PrivateDataBegin
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(R) 13.0
%%AI8_CreatorVersion: 13.0.2
%%For: (Alain Hebert) ()
%%Title: (multiphysics.eps)
%%CreationDate: 6/16/09 9:28 AM
%AI9_DataStream
%Gb"-6I;^CQQ(Rp[l9"L-!@6T@1F"+g?ZZ_ZI&j[Ae]pE9\mASp##mNoL0f&0Qd+)Rrq)4lcL5u:7'WX[P+fKk^g/`A,:YK"?Qu((
%-Rt^f0>=rDr:o^)rO_MO+91hgZa=U_o:4*l.A)lR4ace=J%G[Qh1sHj?<(..rEQ51r@Ij:WjZKB+('MFHhZt(X/F"iG99"R4[(tl
%IJCe7YAV*nQ+(Cm&%AbB3@o?$I.uEfr_I_K^V>-0Isi9-qYK7LpCI"BDdG&:n]Udrnc%M8q"XLTpA&NS2+_)B^V0Pis7#.m5JI*P
%h:"%&8hO#4^X[c-c%i_4^Gs]WXnnCQ?9`gbF8&\hUUrJ"I+t7l+A])rlJGt+4[6END(hF55$e-P^\sLD7'.5cTDeK8GMh;-G^d5P
%^41P)5CRM)roWY9qhNqh4$?_L:<cq5Wr245A'&m6]$rp7rE];MSS%]TT'Rirme?I"s!jr:p&2Mc`t(De6%*nUg<R^We+;2cs/R0t
%]$G"^R]Z;8+!9pBIe2u6:7kSS[b@o+hqUAf9%Q3igrbaSqFLR_/b%$Pe+\(4XU.*RI$B9]`S!0.WHPHEiV&=V:Ni2f"hoA6p[4Nk
%s%iC_mo#_%QD,aAg=NZBb@bP<bqE^@f%7.438*Rs=-o2_<G?nh[EJ+%e,B%8ms]h9>/1%5Vu&FO'!:cYAj:CH?Z"d%Sc@ID[6o@k
%^3bY6D/JG#=+*0Zo]fLbgC&E#6Yf0[DXZ>*9(R57Q*[U[b%839n#gT$Drht'dMh3hc7].l/1kLLs)OEtb9B1F?%-*cYr67jS[1GJ
%ZTO_`4aT<6g:#S<aAU2*V.GdcQ:7*CQK++^giln5hdr4hrKFY`?'a2g=\A[VT<ctsPq7'#-#6gmaYR""ZHVhecQ8.j,&89]o)/#k
%le!95rn@A(/)%>8-D/W[n:ge)V<"$)V^s.7`$;\QjG;lp/0dY15NTD#->ZsJ-M]):3?n8J>I*j2>F$LsT5r`X>AE8ej>H=@g?Zp[
%Ea806Q8p"_Nn6epgs30q76=05e(1lN\%T8![sbSaQTaLhiY(r\QBL9lT<]cTJp,Z;S6[lF/PF4UnI"#RZ$#1'jJS7'kj8/h:YTri
%Oe8qD*2!/9X(\WRcE"Xm]HZ*\loEf2YF4dMSTS)Xc5Y)f*P(RNm()MM]rl4?f?9K<5?UI9N\+1i:=ckK[V+^sjJOP?m9>UscAAYR
%5@k]m]#,>#g$CeDk3NhaFgDO`Xg#4TSm+jm[_R@.CMN%gp<Lsp]rmnbflLI3*h2Q//B(]"XkW^G]`#0"\"7<9frhlV)r&5,s&o6d
%^"q7"I)4[nHPXq+Du8+sg$X4aPI5`V@ScGoR:j';#MC>n8QiZt%IPb@Q`k2Z[5CmOoUl%>.OP(_B7$NU[XY,U\c9*fLG*DMRf;(@
%XfI`aDu7"\<o,aKp4e&5(\UQ&D>u4AXk\E\^V^l>f2g@MgV93s/,.rpDt8CtF1HJbe#oa:=gHrPpuZTsl?[l`?#3`-T7?_+_\[gj
%)Y&$`ao-p/rj?'Z]j>W;o)DQZr+iu0Xcp/h[]WMDccA"\43-[J9@mX&ajO+mAYhP2%B3-ia('I-fj9hS[UN=5X`;IjZ/fN#X]qB-
%/\KrqQJ87crbakb[W&l3^@u?LmHSIoVo$+t=0->J(VY"R?dn]<=D.Hep:t!=8ob^>pGM\_]rn^?QEpF*qq(,>4==pRD'!OcrI&0[
%Y\3p%GC+JgV^pZ&R:hM+[9h1[]ZPV3YI#%Y:7Z6KEU0p=mE+lXYC/Fcch9Hdo/$-tQBUKCO8<Y<HIgjMV"#GXCYJfsp[VP7?'aNR
%RC2((g$cN,H/Vs*q'lF9VL)0Vg[21EY-@nJe(^Mo5%9$8[YL'S2*I#RceXj=Fk$*N>jk_Yk?bW<@;AMcOEK+np6<oJDn&5!%nF(f
%ZJ)jO[V":!jnT8L9m^.:3W7.uMleLZ21FqAA6>S0`HHct^A,%H[5r0fZi/-Mp#EM_>-QmGY%[K>[a<U<"d\FXg\=iR:?m#eZ[H[n
%k@BRS^M<5r])<8eR\'cJQ+HnUHfW4#CZtHEj?+8L8>a+Tl,'VsDZtRd=+1:QX?E.`gF%>CT3:ZBP`BQ=ecK]*[RR;(/Si=k0)V/L
%C_Q]?a'H^A3NqKQJ+rqphPpPO=Zb=:I`/t`[_2?_m8n>Zm'UB9ee=n(jb>!_r3*e@Z$8+FqVLZ-C`+0R+mkZ(O*M3/mSg=<O!e8K
%_\_PSlhXpF<b9^qT$dGZ%JEYJ(Sd_;DW;fEdtt53X0u)QVT*[bD!?;5!fa!=:2@N>%/X/.[?-\tNc@33Y(!O[cpmIhX`cg!UP#u?
%jEF14=i2-BBA+bIf>ruA<u%hegYUS*i0DpfE78"lf^bI(d-mh+4,(F^l_38Eg6Qp^X]0)^lr[jAYH>IGoq/UFqd^.c:Ld$ka'NBE
%&GC5=4)AQjMdC1#(46%TrL^b%AcE^iU2+m$b1;<]ir-8T-E6Hd;EjgC1nGk'iY];[rQfriEQc(Mp7]Z877If71C#[@`VZ%Xq[h)-
%43DZuH/./*^\2E,Sik_:$k\QYPaspPVb7JCc[IG(DS`qm31b6G;KZo]_d1irk`+sUY'3+!m<Eq1](FQ5q3la;mVU(3$$Y?W%mRUk
%ErC7.6^uq\koQVZrb^iKb.&+!Hg:@gdl[DJN6h3hjS.#<N&ga8oq'`M)%D>QJ_]TrpFGp9qml+)?]/]+q;Y&jEuHhDGD#j*XdtkU
%[PDgPl>X^+&X?'Ln]J2!LH]e0cai3i2^,B9q=M41r9UWCj-%.&_f9qe5PG!.FCXLH\&/mQ"E'aJ7T]<;)Ef*h)i:\C3aKXLV8k`>
%VpIS>&!GhjR-P3*:%I_`+%Nr(ThX0F#?ephqi\.,@p.1CT"hq)0S<bd'B?!^,KW)CErV?UL-5-M+gg^#6/Uh[m\+ci4G,6LUfV<&
%&L]l^?.-J6lY5IOO]U?jo';FiN%FN:mU13tH+d]UB4lY:s"oec/)Yia"<r&1&(.)i00O=_=mcaRq/A"Nn_W]gg4qc)B3`++Z0)R$
%\8mUYo)>aKKh&>A'$%e/7QMp(41PIJ)7u#Y7:N-h7X8LF1mKr*dOCbF^]14'Ffhp``t8cpI^jl3/'Sjc1Q,ls0"&BXaL]ILE>8^J
%>W;hU"b#I.+*fs20;<r.fGB@hqePKRm*[eG!g\<X?c9\LQOH!jj@%4Nr2fGbG@oC>7kD\=?:+?,Y2T6:.+bsfI7-DN>?aJ,n+Vh#
%'jd&d9-Y8Fm?]8>s7FhZK<rks4M8\YMlSe<TmN$VC>,9:Gc\]0E"_X'p/Ba1,76j5(=<Wdg=")lN6ea>HH_'>>3W[g*&FZNN!QYi
%ffHb^`TJ,2T%<Qc[GAUp)8#Aaqis=dCjEM\HcZF]CAQaa=lSVIoEa2@7ugj&\;%DPFpAD!oY$<:o]'=`?ooGSM`u10M,F&:rGGi(
%CPX01``R&(4_sc=_g(mlBMB>)=`%<`lZccE0CL,'f%.tbgOSCJm#a1Ii7kbuis'P,)>048AV]eKUIO_NJHF+rXPZN/NL`!k!orK_
%nMZuAH,W+GEF^';a6%2sR!4\Oq.m]&pSW=AQb/,\O#[-`Z&FSpLAdJ<s6kI)_\Z\8]R(ml_V8F!O)JTm`!="@s4,TY_rLLbSH#_;
%I!tbenbqFULV08ZbK%Zd]+=Z)^43XSgR%O#T5K..-h$]"?bEqaHYUlS359]Q:S2"-^3ar$n8N`'F8PgooA04,52ST;\NBhSM]L)m
%j(mH(,.G.ko@qmk:Tm!srU/Y4&*LEM)-d,A2u]6b^XG%NkBFB"?!-dF=1u)fhqKp\@@;ILk+-DhE;jOo52*<'@G+.Xp<e'FUFl>i
%(B)l%4e.#oA`)9ls8Cd&q4"gFGB`5Rg\F&5n9k!&+@kt\m^:7H3WIpULPNM)oCo^iEX(D#E8K/jHi*6UmiL1cHI?L_D/4(8?U):)
%j4!u$5<PQ&5Ma&aH[GY^cf__Irc54!4[-WkqsOCAk5<C5&%<X03-a!NLQ<P6hS8s?(ZOmJhRu"#qsh&in7"EWIXHJ5h-JdbrOY/e
%qsEd+f,l*1^]eU[4^S(o52L^LK7*:cYOBd*rp]dCp9">I>1``=gP<4hYP$_hA%T6(GN8R]m8DiTI=-LRqsM"]lqH1t4P[]<,QI94
%p@[8;KjBWF1cG9C3Id8Oo'T6,V=V=.qF_cJ42nd.(2TIDlLe3Rk5P,LdQm`+q)SInrmu?i[rt2Y5!D-pSn_'krRR-LmVr0]I61gn
%O7p`Zn([.j^6&Vof=L^_hq`ako,Z=I>P.`Ha,_<G'02RiKI2!Yrk>V&ET9-)A#JIU<r^@q>^tuGrR)JXdMD[7ClcX8V(M3V>N.S]
%1V^2mhT1uYnDX@/XDJd5mHs3eC%"iA[b0t_m1@jFX[aJYJ,&g,qqJ$0D]`j]5.?"9q!RRBcX5S<oa]m7k[^UfT>1?e_oK61^Gu,2
%p8#t.;G>oZHi5?km=''KXj;;$oA>"DhQ,!"!]GDkS,[@FC@'tmcG"T#Gk]H)hqoH'S!J^[I$W?2hG2&G^O3\BBSGRGrnVe#.m3hd
%F>,_&?(g`XmT(s='FnhMda))]J%i[GG]Wo@GN\?QhWbNZoCl%ADa(mQ'Y&'cHkr<]c#<LTQZ)?,^HFZS]q2].07Dt6mHaT8qmO?`
%YS[1[IXUt[I![cLJqhu?f`/O0p\iq$>UEVKTf(YE^]*9Jh`X/NHZ$TR,Hl7t^MTn@X*-X:@b9Q\hodh1[pM:GCet$.e)SLC^O5e3
%j5FVeD]XCPGP9SSo+,K#&$9&aq"YfmXE\>m[+^#>s8AM=]t1n,s7=QSn!b\mV>'rAQbWEi%?,.8<:mr>rcnHjpX:)XqR+OIHTJcd
%qY9$)ZYpm,++4+.VgLF#XgPJ4ho9GZV(94Unsu?9Q`l&G:1*8Fl1o8c<SGkcrX/&7^ZDS)h6rf3hO3h>J*I2$n[uW"4niU%f^[qo
%l)q4n7K39"R\f`Eq[[UlCCE(-$$fiAgjT.A(/_aCl)e7KIJ<O/2Ol\-]m9AL]8+H$@4/ach3$"^lg<0ucYZi<;^:FoejHf/pXAp4
%p:X.c55Y23g\5p']?`\]FigieKP(.$qsO1B9^@+jJtLVC)p^u!=e0K<$MG_@rpK5=_o-kEq(=f.pO_LM)uG>*qV@_1K@QKgT-$6o
%f9eXl?+t%CoRAj-'W:'(a/e7^n`%&#\)Vd>NqHM7q)BJFYpE=-2`K>I=#ZI)(H;69G-g$V2ta''jI>rlh6^/TqW@YNqWdqJqVlh9
%h@;,Y>-@16\^&fJbILeGHZaCPI<B[TH$+,7?Yrm1eT+Znb#Q0EYL6FoP:pi,Y:m(30/"t2pWMrE]j*2UA\$$Oo4>M'%N!0DRu?Tj
%X,G/Z$[HCR@_Gkrl:&8)(\:),R.fQhZX<0&qrN:3n,'Psqm+hem!55t['uiT]@j?rX6m2=CAYF[[WPf_\s4jco9QhNoh+5R?EKR[
%`O`8-\us4[f<XO]?IRW6hW8@[?ETU;j^Qo0D-<3:WCpCb1,!@0%eWqBl?0e?Qh@*@FfT:`C99qElY<FOBe;9?AZOpu>a2q/1pJU.
%Q;Vak9.Ek(k*pahYOZ8=aEubRH-K!b\`B:DSFSKYkF;9n^7$_<Mg:r(H(C:f;3s;ho:4ql*Rd`o:06[8?)50ijjt8$e5T=@F%U.-
%9^P/Am932M;`eDd46C7Fg5\mEgQTkUqi?Nsm#,d8T3@_G>B6:[>-6;%IJDgV:ilHkOK@NhHFZ1_H0q`%mHm\bW:MATl7<CPYbAM]
%?1bD1a4;<D4tbRLZ9>A_ESVZpqD_6je;fJD(u$;$URgjsAnkKZm1_/>7'5iuaeL_YG4O_A>$X4Tnn@F"SQL0EXtWZJODW[cG&>qZ
%OG=<b*838Qg6If@VN9=-g@^V!CWc&0al?PH2u72N/5Q,HS^T1Um-GpW6Ycbo=S/l`A(/K$NsgA@lJkJYfD<#)a&*mh_F'C]@!c*5
%*qlesZ05]:A&DfsirY97J$^hUO<=>/DCt':*3ek*c+@^(06jU%S%:^/D=C&4oJbLnYHdtkg&Wh5'C=9^2B;Ic*MR;H.,$C2:7%M4
%4cOJKEGFktgF9neDBk5@T\%,bNa8VQHW&DN<4#/,m8^Ld/:$GjQNj+rlpc?U[J%'&3,!*<7*F9V@I7dJA'mfsLReJ4Z>H.RCpgNC
%do!^A;7l.RG$0/siGj^p"Wf`HRm0r'=Dq=Pg=,_gfB=Mhs3C[lp_746&Got!r=ikI%kgHm=KAA@@2j2*Ja:B?BEKT(4*Nc3a^1es
%g07!-ZPGHmASIVpTL%sY717gF#*0F$%,8pi2j#,&?G05"IN3Z\&/$q?.Z7MdqNL=`J&:RS2iGSGEjti9bsEA16?lN*?79n![n"F(
%XDk;ae4j(l$&7:b4-L:U=Lfh&"c\iR-/so)0IcmV!cM)[>q">.BLbMD$u-*L<o"jY8f3mK11>"9k_/ItMbl5q@>KLXKji-?,8J3J
%N)ge!0OeJ7_Ph#b0-"5S9ckl,$Q`:i7'".!_.<K5:4:WI*o3O_Y&!E5p:/V-]hrOJ@fKJW/Gd`-6&s]Z_oO2gnfXK$JT92[ND2+W
%LE:X)W0c4@0=8Xbg1`M5\19VDFPj*(\31</C87f&cR<nba,N:T`4,/_V-X!s]D7/(oj,3,VHnX.,Nk^_^Y3PHmX^;Ug5'KgCHO9p
%#SXA+$WkK*9BF'F11E1;*,KP1Wt5p15%WZ>'cupB>W.BX!>7]?2=>R0o4rHt"ph#SrfM^$1%TDKIh%O3qD\B*j1lVW:HWMYqmc'T
%6S+b_Sj*+_r9WJ'i-2M'4nd2c[SK$rT=>cQHn:n<eG_/k=_)ddYTrQ[n1Fh4,4Ys%fe$aQhFm@O6si6I[VAofTcr'2CR[iIbsQ9T
%1B"Pd7_Q/u/oSd;Zp#VGiO\]B@lp^?qG(pVWOCZk[]['JY'6k9n[`kg@ll3?Fl(o"F'Y,bBK<3D?Si$nl$I1T'CDTm`fJo";Hmd>
%)fbR@TZ]g#l\;BK]-aLc/2sZ\etpt&VS*-BNKF%fU!`UH5IQK=g<DF_*`QA$QYA"_pcK"rf.@Im[Pj7O>`r;EX,R[+j4rK.HeE(Z
%h5G[:/Ln.AR'4Z+*S]"5[5Coj1h^5RGi)cJgT.;N4h!%J)fF5]c+UC^ZJ>VcgYLf?g2h$'LYTI`D,=CT?2&LY\VpN,=jX3s2SGPk
%q6?sfHBJs?f^g[&6N&GNlT4?q-,5o>G.+8L\Y6NOjJNdCXj&q7C7k<"H$Udhmp#YD6FrFNSsNNIW]`S]Oqr*S%dD"Mq/^Sg?amdf
%+3$U&QZ[0:s*#%6rshBna<8Fa"rVl)JDr5"W:MATl9$oQceb]$PfLo%n*guLa$9Ik;]GZ4Sba"\_k4]dB-'8M5P3mn01mu`Rps%C
%fD\a,;1A-iMd,Q,`BEpmm]`=n^W,$o_="LVn_Nm'o[\?`be5n"8_3$kFST(kaVa!9]'?#jYEiS'NU5/4F^nLa6.r%rNj@Vr[]cM$
%mTK#9)$<<-n)K>&':QCD4<Rj[Z[8PCp1q@V[l_5bY,6j.k`aliB,_r@!8Jdr7IU/ThYlR8^M=6#;8B"t!YPlGCHTrf!dS$H#7V*)
%"p_JoPY"hmBnL"EQMt\=0^K]7>hErY[U9\?#U,7ul(F/,dV**uYq/Tb,TBl]UPUGg)CqUhDR-Bm<o0XirV(@@=^4fM;Qp\OOC2LB
%2(`S]j-%_>oB3pZ2t,VZ^:el7p,u!W/Idc5WZ;*8REkaYU^DT_r*Y0W^Cp:=+"-f=s7;_=D+4d-nrF:MrC,\giC=+I?A:+_@K:Io
%0t9/s0L$>kHod4SAW1tpA53BN`aEBeB4=-d+jD/u2*J*NA:rOS#L0F!]Io;;XpB&!MtA0m!aOACPrpB%<umP[2p.R>$s['fM)]mj
%kn'-j@N@;JXbs@bUs0hJ-6Lc!C@$9L*nnA%$uoR'S/[3oeq8t,-t3QR]s7ja1LR;t8/Zi.;6XgFS?I;slp=)'*M['^9<U8+A"tfh
%/_D!YG-eD=F?=J4D65bN@^!2i?>7Tja2L>_6b>PKk%$hY$_"FclrJj"'6&lI(qk'Q(O5p91k-FE"S7\;HXu_\(],2Ds.&h=qh-6=
%S7jn^lLEi*DpPR.T/iC8_>Im#g&*>EodmMXE@I?18o^+QZLua$^AY"(pr.T>\J+,or6laqpn-<5s0G`)lWH7Fe_+m@a)q#Eli65$
%m2*4L%DQa[j%K?'fAP2dB&%r>("[f1YOgkR''auGCVTRe3%GZgMEU$CQh5#uAIIbQ;KLD*QF^@:lB]kd0!X_fDD>qSE`j/,Q_c##
%YAK81a,%MdB3Ah\,h$>%8_7\2dT=Q$Eg>A*,ZQVl08l'3/lJ9E@&^2#;JqK);=Ekof#b53e0S=1DbmcMgS8;K=L46'-h&Su,"kpA
%o;mk7A^b['(G"7@Zn;'hPWUTsf6G!n16(p(DI#R>Y,4ctVT$-9T7Ep6Zt40R4YM!,[OgO:h.EIq[i:!bCK^0gm;cg>bPU/ISR:JJ
%l*Fr:7pHiZf:#bmVj4<a=dRcEYAC$ubO<-P-oiB[mEi.R\]*F67W,,Jfqg;qZS'_p84f-smAdVcda!V1STrHNWts/;>.:CRMl_9U
%@k0u3!A;.@l_9lIm9X>hPZMl5dGrKW$ftC3;J'3HPm1+40\Z+IB<K_7f;bsDmT*SjUucI$@_4)S=dCRn2:e5hC8P0WX)$+@3QpRm
%8l:UKat5%".]q[o"jYO`UqCQN?LTH-Tp:sEbH9=fF]qV7mARFaZ`oF4X46-^B"-p^He'qsm>*?oY[r\EZgXs.bg_Y>3bOn/SSah&
%#INf7]9]OnQ.Cc`E*>N#?#uG3%-1=@G$8*!niH/Y[c<KjD&5p8`7f+i;V#W;7T7o1QRPL19abQVh8Ck2W;W;kLMPue<m86kDYc-U
%^p>SUQ<i+1ej[3u^/+V'PdZ9OTS4&*M#0B^ecgqSkcM7@.p"=+/SO0*G/`/YY.Jk@FrL%<ZrN)KgM3XZ2%_N-JhjHCWNIl%i\N1L
%C"IB22?R,u]s>qgrEi4`!-JF8eBQZ<-Umhj5*E(6V\WbPUm&CCp/i8UD4P*<46`Q2aq@:tWj\aGdRcIL:-'ie3g-X<[p5GFZH-94
%l*NP^UslHKSTLuMfEUTI>Y!46SXqp):<NIh8LN8/n`W5!3P[Cmdcj=rSTLtrK7$G*<`bThPHL2*$0e7ddOCN6FL=$"'U#Vak&osb
%CZR>?,O&Cf1@:WSXk_pt::f/2Td^GHCK2s@?Cc2?goc,SSNO[S,O&B;<l0K2X^'JSPHL0T<\fi@eSTYUdabbE=N*iZ`ANXNPIbVq
%Usj@"U-r9;-TTh83iNct&Tt3,$%epIb0r2A:=e*rNk2G(6(J^2*Dn2,.<j;+12BCNQBr2+>*h>9Ug3)C3]Xk("UEQ!M-RNM3k_,a
%UJ>"6Q:KH4L:$8.'8F)!PT8(JVsQ*rW0=[#VN/5gDK/0:>q>6P&TuOAAUU:Jfs5eNBmCXpVfd>VSbAQ.;5Yt6#1Nrpp:[4rb?IK-
%PdgT;l<;hInii.1Wp3J&F]*+$!Cr]F>FmgIY1;WF.ZQP=:XeI)CZX7/Dj%9RUm>(Dl(m+;YEM`(bI.qW.gmLJcdmMfaD'<G)Bl"Y
%WArt7S.&4$3@Rbt!Y.4^K(_>fjCB-dmZ_]h>V..A`lX@FH$@9mfd`IIY*G?<[XiG#DO[_&);!#X]2:TKMY+p>Zif>l<Sf$N1WZu`
%@UN3U[Gnc"#j%"\FaM6L)-=7J1<70Jf?-+?3^Bju<Q&#I\Q7:&6cc\+1=+,D\Q61kSI2o.hC%?c6E\BnDVG0%<[V@k;m)D?W[fOM
%MX@jW%@!'fg$#2qPB*r5Tp1bH*,_RBe?q!P.G)_M>,8!ZPB+t75WPg5/T+P1Kl%+WUq!)VO`L<HQ:iXfUq@U>Q#a=Y3`&T;/G)c]
%l-!0V;p*3"g!_]Q:<mBbm=CLc.k7HKP\X@5f[C<jBh<TpKNo+tb"2`s[,FU/(a,`9Z`FWs.HdNejJ5)nAK;mpjMk5%LR`O>Bm7X4
%3UHq0Zn</MS7-#Na=2l7&g=0W1@cjSZof^kS<R[Hj8ca']hD\-Xs^B`6qCRZI%%RR\fl'YE_K_Bq)!)VWgL<)nrUB(o;@F\hM/sK
%<f)[6DIQ:E[43H);N?U7Q;8,pWJcV6P[i]&HZkjfaoTQ$<DQdh>[."migTTrEGae\ER"B=`3iU!`3kkb`3i8l'A$8D,d+73,d+7s
%R^eYt9O(eI86fBp7H.M!R(0TqOLUVK13%/R0l_'LR(,cY1i\elR(,aK,d&H,9O(fXOLRnC-E^619jFMI-E^brb.7."E@klu>]lHr
%\8(gbERhX^\E_7j`)X6kR^gLcN/=T?cBu+6"$'(\V&b9.2=G&7.a@B<ERgp(&m$O&`)W8tC#YSj0lb_r&/&%rT-URC(D9dua2D!$
%A)\t<0lb`a86i"hWPgZlQ\hcmKu?uK0l_'l(Q#3B`PaW0A)]!"PJgI5k/>2<at[n$nnI*PV]g&F7:P8VjY:c*XbObO:LiCajcdV_
%l=/a&jd<R#2GXuf3P_#ll:DA?CJHMrf:9k![?ZNc25_7ICS#%qg.F`lg<)&]f2agUY,sf3XuX6f>[,a?\@1si\B=E@M/0.2'%^/*
%'%^05Ogqj2R(296,d($-9jFMI-E^M^M/+^s'3D/kM/+UPM5uk:'3A<a-E^brJiY?P-Ean<M5r6B&m$ZW,d(;e&m$O&`)R<91i\co
%)&$)bSfr*=(35kRjtn?d3K8lr[_%aA<SD%Y>]Uesf2d?_\4R^$M6!p.,d(<78R/YU,d,j>6K5!r)A?1\9h\g"*"l=%Ik#H/o8COe
%Waas;jd<PMq)!).F[P.<jd<Qdnk%ipC50Z,at[n$nnI)EB0o@bNJX^%a2CuY6K0KVR(,ca1i])XR(19o+`We,C#UU4()'b4>9S!'
%jVNbhWuD]'<ZVn*\\(I<>?+@%>;7J-XnX)[D085*3nH*+D<2RjCTABef2`q*f2d?_\@/slEGae\ELiG_M<hg5M<he_M/+WU86huD
%-E^7,M<hge9O+DH-EaI5,d($/9jFMI-E^br69-Kd-Ed3n+`Wcf9O)G*0lbaTOLXT!KZ$m9aD'W`B/1g:E^aKtg913bi[QN/,d)2+
%'3B$q-]+l^cB,P.3@:oWTMH6Q3KK#tG(PgcCAB,pe[gjP)J4<TWYcWf=+sXF>dYOa="/VKED?+;i[T(6ERc@%i[X'=`3n,)M5ukN
%inDPQM5sUp`3kkc`)WBn9jCU;&m&3^-Eaq:0lbaDOLRnC-E^N98R/)E-E^7,M6$!rC#UTI*"uC:Bd%J5jVNbh>/nLgQ&!:8/M@ag
%<YZ8!<Z2V&[(]4=>MYCN[doNi[dn.lg8]nG[?ZNc[?Y)EY%\ggf2`q*f2d?_\@/u9\@,j?>bu\6\4U%#>brDQf<i4b>[-$G\4Sb.
%Y#7GX>bs&"Y$i9d3@UOHY%\gg='[-uY$+"\>dZ10Y50msEKtC4-E_A1A)\u)1FB9Q5Y_toBh'=d:!8p69!^TR>d\:#`)Xr7EL#[6
%R^f4U-Ec&+6K5$,PJgJe6K0KVR(-mV9O+DD-E^M^M5uk*Q+1^p\!D.:h'RF5eAJgk3W[STW7rS;Xo!X[9bLNc*jnG?P.8fLUMc@8
%[19->-#oIl8):2i.6Hfq9jI"7\ogPK=34YU>=uJ,o@=UI-Q<fKOE@O")i:YX:<Mc^::aG$?$=Xf8"ZnN.HsmT>E+;2\lJ@Qm%iAm
%Dsa@T1iJoid`E@+B!IJ]DNh_U>+Kc)k,h!IfC79.ksEneR^a\7SIF';L,DKW/rAo&39kZ]>\cjcoHJ?n<C>p&b!Y;@c_"gPBc8eZ
%1l[o=/&0/1dkkU<.1M]G'MgMdWJd1FQ:'f'd`]j7l=/o0b!Y;@jjVFReqof1fS6[a^!'_[)DbH#-=j8_507';/nD+_NgXZT0/HZi
%OYLpBlR@Taf'P+(f1kkf7+B<Yr*jbIe86l1ekP/OZodMo\9uUt\kUd-"6nn'2I"8"Ut[_CSXjlWbHt9LQu`VuUt=\<7s(54X`FX$
%VHI\qkVg[hZ\*/EXL5\@?+\`lVr'qk9q&PW5"IV(*42lLZYkrMFkXjFDN`Lllac=,WN2U3cu,$%FY^$2G63hJ?97O%9j\?[$G8t%
%f+[.<KUoLFei]/FDUJZ2g*?$]/kPd^mj:,kaalCm<S37d:;"\D@Rm#3pps\q<T[#=a0'R/A1()^NF5Al8Mf&13;+[nA^`DRDj"@+
%[RK]-i@8h1`m\`^%5FGbZc1%QL29nf(M-7#H\a&kD!p)J246$ZS!@NmXCF.=afMbpZ<9=ZWFrQ#bgqto<g),Ij3;VZ?[=W"2472!
%OI[`)#kDMnZaD$J,os=UACbWrIEYHMg!n(/,akdBO4d*BPa?C6:(gE>:Guf4afNn=`p=t=[;m@qdptB20g!WEAfnA.A@@G,G*:(P
%[?&uQ*ZVN8A2]KYG%3:s24*^PCjqeqAkchupOl4_?@.X_:'cHV*od^?XMB#%X)h(*?(L\++J1L9!]hh--;A+8`S!1a2J_?'%R92q
%/JKX/5NrNS9T.q,/*(ji!@X4BBfQ2=J/!Quk-UEdP(AfD[2,Gb"=MH//_j52:7BaW$GH]JcS(l]YOD.J4`?tlGkR%ros9RKT:LK1
%/>$0mp+uZ[1B!G)q8BRG?N9ris,fbLbE"8"+"E,$'F_)qL1N"k04)Emq"E=#chbbF[c%2?rbqi8k.mtRWDEJ1J&km`jm6VE5PqAY
%HJjbG0+[)rk`[IUdQLB\,c)t#8SScB_?B-%jcH:rBUQ^?BmK/^$5960dih<E`#@c.n)KM*PY[&[XhX7r9\mS8kl&J^UfN0m8VL.]
%P#Sr^$qUfaoVTd1dJGUC.E0aZ8NF(9,cPE,$qVq\:51$*ff181ILef/!htl%8``bjP*Fu8&=:jb3[?.e.Lo#W6K4*&?Ak!j8\)cZ
%85_*\(m<C/F>>*j]e'^cY%\l=PcfHr,Uq74+j$g5BGC41<M4Co,UmkU85d8<L*W$i-UX%p\"t.[$Lcu9Um+Z1,c*+'8a83G%pu/X
%3[C[X^%Uqqb&Ku#ees5g[4Y9\?R?1Qar*4Y\3_t[8]pbdOJElIacN<gNIZ"/H#ZAQ)rA\uUc-LP,Uqh7,Uq@3F@]<5FVp:kp6*;J
%kl'V)Ut4Xfmsl:F)nj!'P#PP;+\=8@+\=-'+j&'(qsnYCh*6a5R4M7D/IWeJD7&"Y\L46q4X+f]f?SYtaS"[[a,mqdV:6'>[l0H:
%/[?F\cS_'=hbn2(;k<8<-A:G3hOEkkmN.P#kOd2JA3NY,=@-O^,>!`Sq)kdf%Kl<67pfn:^=;CX-pfo@H=`(eq.=hs&'S6"YcJtc
%jmm!1lPALN3_d6"?,F+!=YWecj79cbZtgni/KIn@p8GV)H5q4<kTiRXb@GTDipn\gL@5tGn%4Q^+>0:M%CIrBh^@3VH<@m,],r7I
%Y9JkDW*G+q:82b;[kK4;l5&5HDcpPS_;#llDoDd%"Qb>i[0XpABeQAM3N"hj-s+.VQs:/EN6,jAQOo<5Q50.UgsXe/,i9pf77Bc(
%U'-E=BLj`t-Es+qjO08j#g$;LClJlIH!=q9:."M4cdqUtPLkD2#;J6Ur%TVOp=+`c3MhmK:ql'k:4r,g-C,4.D[XR&Fl9[83n<?3
%T\L1J*g?&6[2UH%noh4"+fR1CQ_`!lbF#q"jP&L&Op^@9+XXB9*-_0#)K.H7QN?;*8ZM1&(8LD:S%"FM<Zt\>s-B)P&cX)A(0><E
%6RXNYft?hrQ_h?s4d),*1n,OXS!B9N8#sY<>#6Zm8u+?_p$6V)e]eqiPW2jj.DfJtEgE+bLnhqY>;/fT9mW;irAFl.ind6;M350p
%c$#Sa!S[@72Es[Z;P&'h/U_]TeLeC%WY.m]X&U]SejrtTXh=On>9kf&2pFLKQ2oA(%Z@-Z"kMC['rtPsSM,ns3B;bTFR(q[n\EdD
%l"!/hN2>Y0LG>M,.cn$`(hKtZ5^SrH/=gTU*_X\)Fc<+b"5Qn:UcJ%#O`]nrM=DT2kuP:Hq]$ACb;+=G6mLqsDEJpal1SAR/8irr
%pSC(J:jUOY\VJ-:9$>2hN#E/%V7b=;TsS&d);XYQZjCs\TsKF#HHe2?7m^p42N+c6TsW>6/Y1X0D69*F9.r'jUP13]QI[*4BC(Pp
%daEN$Y@D$Lh1ea0H9emc>n*VHI4p$C:g3bXlK`+3h<K)qSY:-U\!qhX.(qmMM4q<+/_4_pQBk7HegiSC(@>$Is28#c;<c(fkuK@A
%FZ']*eK/!Yr74\JlLMYl0:6o=:-Gu8E[mU\G/6T'>I0+5;Vj"Oe50=&[,s*/Q9#<U),'9NQC;M=/`kRW3#;En`%G`gC2q%fFIKdb
%N67sQ\i</jp@2BWN/FlWmDO>#;PrLlQ2#SU,=eT*Y,QJADV\Ob*0oc$<pgrmDSMMJ;\?J4c;H*[J_F6VFjo&I.RZ!F)G<NOhWBrs
%,&CI*2jOeDC@3bj@=(Qj9TqnX%T>B!AaV6h%&m:b@G4&$![D#[.`-Ab*Mt<&n&k]027Ajr@4K;$;CYD;Dbna;8Q.WT)bu`CM\[p*
%9',uS3-hZOlRigHMb`KYN`'`1L/pgDqV!o&6)jRLh+=UeDOUloWij&':/^bm4%Ro@/nk<bqV(i/+JlhIOK(0T-cJA$(A+-&K2fu?
%a4lTT("YQU<#';_P_r>q!\gXGosP8GeQ6&ma/HT$;g"&a3d*-4;6=#6a/H^G>of[iXJ^WDEZ/^c:/R5D(T44cg.NJ@Wj]>j:GKEl
%kesDV\l)%W9#E2Td8n])5Y0;`kG;*6fe=Qm$Lc[l.clmbLaH@X6<)+9=bEY0[lcD[+"lL\Q*Pg7JMB"?(e9=\)JNiOKWCKd9>[Y[
%=XsfVB&oHe_F^<4T<3b[D:ufp.Eq*?n4d/#'C$<NC05DrnYReCPoXceBs2]0<kPEQ]lh&'3=gA`WbHIcdC:O[Uoa%K"MC_E]k,6R
%Ch'KOj%[\iE=kr)3P_)IdnNV>EO^k?\u1*rU;:^fD.:Z=\iJK_d+4?3J2S!Y[A<qA,&(s2(b45hApQnQe`pS6U.qFi1dIn,8D5Mr
%JSsITCC^U)`6fobV9asYN<n/#<YrLu.G_qiek\d9hHF'Zk<unhWcm-"SShm^bPPG\RgReZTUSp&/8*C*bEa%ph*c:TmFLB@PI`%d
%Vjf[!3U_te.E`8rjI:JMFtpBHq_l5K3nod8qV%6;l.K"og9N'eS#s"e^1l-WGgf_[%hlUTV*8_uhpceXfLu%;=4>ftI$5>O0Cut<
%;7)O8&;TuX>-+QaDqabS*r)UldkXF12!nAEMZZ]gm9KAdE72[?fq!*3X%>9&)k*=:>%aHqU4h"didar3c.bKCqoFT[K_%u,!9)H(
%"p"hbe:V"A,b.hJGRVG\H*LUT#cCj:=pDj#OM0@:>h,t#aT*lN'8Lk<4.J*%lB4U8$9@da/Z-no,3@(l%QVq7PMJA:Ep?;94X&C^
%Z,J.n0R8YBPHqoX%a(c&]p=4iWcD;K<6D1%?E-q!h/Wng*-6-_TVl6ocWT\+'<O,r5j4jSoi7$3U_@$7`sb6p[;.@NFOI.A]/]"B
%e-<i*FCK!'BcTGdVDa#Y"eBnOHER>4`71qME)&7W[B.Y6dBpB^3p2AqV+CdP7+3c2ER'E<4X4bVcA>e2/-0_:M5H9j<C&!1o!ZaP
%]#)*,OKN!L#,!J?N;u$4Sh9\Zd"ud+:";NWjYb?o3n:\%GlXDb't]tC3o:-,V`qKtjZ)Jr[HltJdq()6;:'"pBaR,'<OFgNoOZ25
%Uf.YLRKq9_R7,E&UsmMT2^b0'OBh*:3b_19Yb\'FA1gEN/MF:0l*PTqRA?%@D,ikLm<PgZ!1dfWH^PmrMO(q:kd4,f)Xa9I3m3X#
%FBZ-?.d<0do/r+0\!pDGSX-2(8Ojg!KQO5)Y9f>abH0IHZdk#&]-*ZEPnkW+l(fqK)b;@%1</C.FK.#JA%%j%Ta)^29%e"+<i%p^
%A%!kMG27JQWk,QkHqHFOcXXPdgU.G[8XFRCgZkSunm_EPP>8OP[AU(&H5@s"$K`,]3U,$dT6n/<0tWjL'8L_$`cP5:=0#9JM(b@!
%K21gfD9Q&2_R5>'8LL8+1A>UmaQ+ot@40ml!LT!EhK7I5k[\_2`W#5d0MS*[;^\l6Y!'OjJ5569et0%%V7ggc!F:&WD&r4JZ*_!:
%kGr>DgF.T'/n#_UJkj?eHGZ]D\L4In522'uPHNH$W@+c9p*ln73k6MW)G)=5khK*;hZcZ=A1$]2ZKc40$=orrALtSNd\WP?OE=B#
%Hci?A;gQTd>5H=NFs>P;B<6D6ND[hYBcno]GB-FsdU%:?RWk5E:X3[db@APlD:>e%BerZB92A]sHn%T+;c[Vlf`hQnF@qk4kH#Pb
%q]k=3c:/6WFBYiRK2,9#E_\Q_HHrPPWTU?tG,H-:CXsrElbL&a#m00mZ7I#`e$mB+&Ta>'$d?^3C0Pi)aV]@FhqZTI:9Yks0IP`K
%Z?FI6]3A>(R$/"oG>Z95AF>.]:<I8g0dk_`G:O)CibYMf3LSR//0j7'N'<AEd`ZJ-gaG,'BrE9<jIL7bVbo)"V0'kfeiDC`>Gn!O
%.Fq6SH$c[SN]H?a@lPh;mVZNk7_.1YVN_`cHbn>Z.@4ZX^Q`a_p$0d'QkN%QgW0\.-,7n&:5QN_QK[V$bIAm]F'7B;hOJY]&l/ek
%KQF8so6_eGZ8Aa246K"'f"j4_/i*Y;SBDm\!Tu5e(iW5eC:h:,3N:JQ.,^Utflc^-F&L;.(Q=k?PC%Gtq)6#K.9lCcbiqdp`)W/>
%gN1?cW0)+('f&i>D^@F*<'fEb^c=E;P=8'c3PCs]m>Y.?WJp:a841P>,f:UI9?]uFZU)ls3IHW30df]3@Pu&.CHU/<jc2?h$=WC'
%)!1rPgY+A0A]pE%jq99_0pdt`&T\7s:e&apPh!Hg:,Hi-S2\_>,fh4nAt>9m7*a'T85X>$b*oFOkZ"+[5g_kF7^f6N#!+2E$bQUa
%+u/-6$O>M3EE[lfjQCCERB&G7/S!omrcDInk%^''G0jq`NL?hb[jS>YD;1_aJkj!u)n:%;8Y)"dTMnoSpU>0Sf91i3%QZW0P^;=M
%gJhhkSS5-:*tq^U?h`QQS(eZKATlFW>q>L^,3_M4c'I-7l"5;C*_A<V8!%TjksX(Y3p=NJh7&ucMQ+;7.=b/UD7lF7TG(+j7$c+C
%Si5S)#G$+n9BhkFGhQ`R%Q^kQq>LL_2sZ8hcWjJo[LiNDSXRmr3(>9<[E!>lS9sC554sFd;6JC)'3?XOF*>c!Gtm<\&5p!5T"+VT
%J2o&SbF#g)93W1-/R+RH'LtHej`O+![Arl;Q$,,QVcNXX-E_A5bMEn6]pqP@-(VE)C2Z['l(fW-V'iFP1>"mj%<!<Z<b\)C53Gud
%%Gl=4kG1-,A^"BOUBkm`c7)l(T!rIf#jn/2DUL8;7=3oZ0rH-T$0PpERj."Wm-fuck2qVLrJ8!``>BTWW^rD0Z+ulo2-%+q22++Y
%:27(?_,\HHSU:sh8^YN]ST/+!YGJu;+m$9.R4;)eFe#ETI^X)m&Z:Mq%JhO5Zoj>S<HPS@G(MJESSif/8/\<,\+LVOSCFZ6T<2S&
%q!O*)EjaiN)(.o[Ft2Mb5/3;?'74lV`p"sE#8^HSS=$T>jK'QVmcui<70Hl#?HG0H[#JFM\0Rh%Ge]]'CNU'!P]<h,1Zuh=nZPk@
%JT5.,l];o"-cU>dqK*Ht*mA]F,uN$8c74G>L=f33f?+P0j1>joL,*M9XeND7brekA,pj]7EJYnk?sI.B"3-2Y4Bm:"OAk%_la'TS
%jAou7a@SDND(7kIlDCQ,<q1#,E`+O53*SgY]?CaF>mBbl'jkU@XeJh+cW3nK4SRMYEd2$q8'$O^]kr2+MI+VSG0!5gg$S_?LKp"g
%n19"!8g81>3Gj*63*etAk@QM][+WN>HL@/9jXKA4\r*lcC2Y:EjqK@^T<=o"99pT>g/BPd<R)Ir<p-!9BH!eLk]Wge>t)n\"'[d`
%jlsa+(&bM]FU7/PA2>%bS:&7'!_)(<Ga&"_k,i*0A&rO&ZP!V:O\Q+tnb/3BNlj7W-bac32e3YGnp(M^8KDs%-^UF5Xtk(,FOWm-
%1.4.fA@#M*n$YidSYlBM"=<Mm3`X/nfhj+dp:U+3Fd6[eFj+'do*\cY3]Ubcl(`<oZu4(^L8te:et0A9#>sVI1J`>XC><jZah5JG
%pGX:>3BKBBQ&d?LpG&,k3Gf\5P6o:&V4gXrS>Z-OKG`A-h"+Q$[)liIh1S?_&ToFiFk4[qoVH`^:&U%YBAJ4OkTK2%N6_\2N-,G:
%NKJ?5552]ibGj[,.:L:RZ;,f5XllhGA?VtUf!TOhlGu$^S?/^QXhG7M:1k?'W0<RV/BCX8MtCu6eemsYXi`eF<EVHY]J\Zc\-CC'
%=,(NSDjAL+:ORUc55m7>,O&B)_D`J`k_--Tl4ZdciMCD8>@hn=fm'#D)Au3R:DIuR4g151j.P/fXZ0NR5pp2GfD^NjArcB]3rS^1
%eDG4FeC4sh6.(A0P+ZT5Qp[a@g[mXoreBa9GPcF'3VPf@kZe?9l#]C<_8sG2FHFR)eNp325ZSb5c^qe\$PIHW1<=@O<o1@q6K#B_
%&rGd,#am&]s(fpYbu_A?,5%meOF"'^&::R47.*e3]_6%dY(Mg`e3P;S\def6FWCVOlT.ReTBdVYo;I9qcD(j^j#m/\N:T*`/C:.'
%&d(9(+\ZJkKJ8ah&CPW&kTEQ1WIlmiV%+,:=m.!PA>t3#aGr;P*3u=L_BD#.<]uYC%l+RH_$BKR46/7=Z%EQBN7bg!M;Lhi+GBNG
%*JBM_`"#+iO4\Fk*3k,.1(;im&JCg#)Bh:V#9tLSfg,o60foXa5%Y$CA/MY*&E9Z?KFj48+G:/#*eY)cnmI,qPQrEY_N..li9*E4
%l/tB(`1ID\jIZc&;]iJi+!^o,ZE#lF!@`_aJ1cOD"M,=7#eCa;$G$smK#,3rU]"7mY@W<Ppcm.BO\&t359Oah0AW".BNt&aRnOHq
%X%sR6@76uYeR``37*<,i8;"93.E\(!.dDuB(;07F\r(pt6j)cCcA9\V>?nkM0-D^HN9L0uW#_UkZuSoWnQ1ea=d_(T5dm!+&1ONa
%]/!:G;tUp`.of&L<`M&E6`)6qe3*>g<>hdTk%/!:<CUN=e@+eJN6$sW27kT[n$BeZ2A<4&n=g@g^QA^BIj;s(eW5lHXpeg9e]H't
%`e[;n9_Q"<qG+)UCN`oImn#P@dX2Q_7\m-b"H3q`m'r#"Lt$9Re*8aoR:K<2_V,mTYTE,/1SSs/;K?D<QI-5NJhnUs:TJg[lAXq0
%>$W#.PIR&JU<8:^kbYJWb(s:2TfnYQSaA<_=%8u:do!W8kT2cXc9<gRPnCRh0WS1kd<V#!f?ka+BhS<u;10B%p.uWho$UeR<CX!9
%,iJ%/Lc!`>=0_3q&O(1LC&%Oq3G!DG7/@XHFAYN'Dos"9=@\VgSN/^B0d<q?2`$Fc_Sj@YU6-?=p16/$N=jhF5(PtY&Xf+;JG82/
%oP8ZZ@NU5qb(raUj@?%Gqc]RKoabD+AONCGC((S``2A;U)3JX.>=X3L0UZEPg_c/B1@,N+7c`fONS1ZeSWRXgW#?nl$uBaJ=f"Ba
%lbA!+18#?,Lnb[0Lnb[4aFI/Z,E>Z8,E>ZH,6LTtNAsSiNAsSiNC9(!)f_O>2W?iQ2DXb9g5,>7g5,>7g;q'.BHtf$BHn!dBHmUU
%ToD$.ToBV^YXShi_A[Ee_AXRo(K_moW!f[=!d0nm/X,#cm5qHP;&<=Z,jHT)#][Gk)MpFZi/J;G$bR)2FFc@`EOrq)+\ijF7S(u3
%hFOI,!cJ2u>tc1\9UFaGJ)i:hTT'M[$a^M_FFc=_@Ce`#+A<U#7`a#s[#p0m"kj5Z)Ra#k,d`\idKS>1:qFF\+\EPQ,8$a[Zk9$S
%JMoiZ/uFUrOtP*N5gfhe#YDVC)MokJ@#Y_o$_^=[_AX:gC=\3)'\\A,'\^Vn;U\)TUsMTJr-Hm_#*;.j+\6%$3(V:4))qt=`&S0?
%`&S0?jHQFh7O$sXNKA2Q7S#Os,E[!\7n>X=8'![$,EZtb7u0.9,=EO-OaoEk,=EO%&Maj]844HJ&L*8##SBRL,U/96#SBRLKSY7A
%&d_'NKS4t=!l2VlM0sq96G1\c+l6mm7(gne+l6mm&8sBq,2R!n&8sBq83!%_O`5D483"1*,TPX&83"1*,TPPs&I3M*&ruAc#Y0#j
%Lk@`$#tK,kKVLRp_GM>1KVS6,_GM<sii%l*`_da"j2*^=EE#FPj/@ugEAU2,31;(SEDT/]33"2k*7^1m33"32*6f'NNoilC*6f'N
%NogTb7roq2NogTj7s0KHUH0#27s0KLUH0#kJe!2sb#'/[j^=)[E\p91j_0[9E\p9W3LV1jPbU8P.7\T8PbU<,b#'4:PbU?-b#'6(
%kNIspcI!^Wkie'=FS&')kbsORFOWed3pIrPFOWfO3pIq8*VGOc3pIq8*VC#-Nqu:7*VC#=Nqs#`7scMuNqN`m7sforUHK6(#CD-.
%UHLrrd2n.KUHLrrd2jIt@#m_,d2sOtk`:gJoLC+kk`:gJoLHt`qBHSqoLAmCl6Cs&ooVd,kTba$ob#'$qFH8[eITNWq?UM"I3c[i
%q?ULG[\9q#4q_9oI0?dL4[RfK*f7+r5!mt#+!L$MO$q]!*s(bBO-"Ol7j@>6O-"Ol7n>_q,E[/V7n>`*,D7*1OU+&6,D7*1&]0S)
%8;&#V&\sG##\ceU,gq_H#\ceUKX@L;E_8FY,E[0A7n>`<,GZ=`P"7YA,buFq'%2dM8Yd@I'%2dM$#)nb,g_PY$#)n`KX@L@&nsji
%KX@L@6J>9[M6s$E6J>9[+ml4i7+tK]+ml4iJ9Eb?,40'*OEN<K#WiqM&U$!%837_8:-0:<"79KX3:4p4ES/)M)/'81`+_.jQ]61N
%O:8@G6fP>&6fP>&6ScFe%LHPKKu@C)Kk,]S'G@;a'G@<Lo't7*46Rb]4")@L4")?Vm@]P#mJ8`"G#1^6g-Hl*m9l#8m?6WaST[h#
%S9@_"S9Coo%'5(J6Irsq+mWg'7+Ta.+mWg'OEEBN,3rp(OEFMn#WjL]&U%,E#WjL]KH1ej#WjL]J/o(3_@?cAA/u*lZAo+q=\",*
%"m_hC%'5(KiiGesfaW(c8-[R0,&u*u,B;5L,8j;_O2Om#O2Om#O!LG0)Mt4!)Mt4!)TdLjBI&U!dn$!Ncq"Ah9qLbjl(F.ul(F.I
%Uk;.rUk;-'dNssaLG)Siq0Pjt=<rnfZUb;K_'3mIc(/<13a*ekFL4S03a*ds*A*G13dN&>*Bb%0NZLc&*Bb%@NZJL07unq$NZJL/
%7u`2'UIGl!7u`2'UIIT$;'Uq!UB3d5;'R7MW0'L!;'R7M_D[X$cq#AGTTObHZq*_K=sT5Pe4<+kC*Y&F23Q$AC*[1-/.tGn/<U$V
%YXfaVA1g^aMe#'n/.tGn1_N;!1m.l^cq#.!cq#.!cq"Aj5pIQ<@$*G6@$(l!K14e$K14e$9:dXEXJ85t=\"O+XJ89PfMNoNYbO`U
%fMNq<m-'U#f[1ugm-'TDG'$:Wm&6'YG#V$=4/sP<G#1cO3iXHY*EA7.4/sQZ*E<`hN[dVR*E<`hN[b?C8!>48N[>'@8!AV1UIc)4
%8!AV5UIdf+d3ORUK1SD^d3Kn%BTbd9d3Tt&k`QL#F@d\Ck`QL#F@ca"\g.l2F@cHoW[*6<<K[VLW$Gmo<>)SI.S3#K2%ZLB.LAsB
%PpE)a.LArg[\9Xp8eP8sPm"=d8OD(W,`/b#8j_0-,pDWRP!mr",m!@GP)siD8L!P8P)si@8I.DH,S>2V8I.DV,\.oqP/o\a,\.oq
%'!dNI8Rri@&tk73#uO3V,bg;G#uO3VKW(Y;Ef)oX,S>0@8VfF=,Xe3F,S>-_8I.BB,Qo-8P/oZ[,ifqn&os!r8`1S1&n6k^#r+r@
%,[ucp#rtMHKUef4&iiIQKUef46I&FUM4C>96I&FU!U"-[7*a1,+m3O&OE7d#,3NX'OE7WtLcO07&Tb<Na>qs"j;`$"a>s)Bj;`R\
%EfN=Tj;`O[@ZEVY0h7i]@ZEVY0Lq[eR%mCh0h7dfS>/hGc;>sGTVDi\cqu/6kbs\5cqu/6ke]4lFOWl+kbs[FFL4UF3nbhkFOWkf
%3pIsn*HdMN3pIsj*GlF@N]'H3*GlF@N]%288"1ceN]%288"G=3UJ;G!8"G=3UJ=/*;(%4!UJ:mAd3^%&BTkj8d3^%&BTnO#Zq4"q
%8"Cp2N]mbP8"YI9UJMS;8"kUCUJaG4d4'p^UJjM7d4$7,k`c5*5q*uFW0@j;<(\A&W0@j;<(_s..O>[N<(_s..OE"RQ'-qb.OE"R
%PnN#87S1N=N=t627L=')UEniZ7L=&>UP-.P;%dk=UP-.P;<#*<;)7&>:5S"KE\\U%i04Y[K2^dBK2^dBS,/Tjc9"!3j;jHtk8feM
%JTjp_S9Ie%S9N)q5WeG-K/i=mPW8-)PRP3W;W>@TgG%KP;DR/?8dTKM7Z#SHH.p\\#Go@Q#Go@Q#Gkt(*L%2`N^a=h8#%?X%Rpb5
%8#(aAUJVY48#(aAUJaG2;(7@+UJaG2;(3[TW0B^&;(2P4BTs'O1eJtY@$Haq1ePhM)C;;_F/:/!cCGTrcCGU-cD?]F4-rPF4P*1r
%4SMGlo%Y`=o@ti>o\:r'e8qaFgiKTNi,c"GP)icQalch6dH=\)A=mW`KV*$+U`["-83b]uLd0K`^d#;#+ol>BGe=9^`8a!_,t#<M
%X2O&35W9/I@$M-$+06)NCs=I"]G=PiOOoq&ib:!W&l3<%PmhB/GpT'4_CP."4Er0i&0AIs%cK](nKC#.-,U98Zk=It6^#>!4D6%Y
%#Tf3A+2NS1iZi]p8qmp?BI,iof=,05GgK';+ZsEa*5dD/ia[5;8qo&_BI,is#Hbqbn=Z$T@sH?mR+B,(nRrG6aUmjU.e.0_<f'=n
%YY$)>BpB6[Y*G*!Y*DBX\lM-%;C`mm>q:aCFKGZ[UfB_g\lB@tkZ/!UkZ/!]kZ5eS$NE8(,r-Q/-A4dh7-`q$<f'ML=LS2d,Z:61
%[r\NK,1A+4jieVJ9"E1FKmkdSA*r.d,&`i><@[qTrF@\!2"`No.h_1aIL1S<n#mh9#,t"'Mer>"rF@fXT,OonZVlKqs&,bjQ0i)G
%iKQlYb'k2mPdELMY"1Mu2N=P_Tq>"BaEd\M5FI%p+uGgQ<aObCW)Ors$\n+q^^!NTpRY53dFgg$s$FIEl&?&ppA'8>^C^fFM6*rB
%re5eVX_6WpE'Pl2e/p.dZHf'<(])8Fnt);Q"/SD_!oZd(F_ZQqkaqVeqT76DM4t*:&tMe&oe5qfa8r9)86H?,>mEuYStr[%;^*U:
%^)]V,&in9Yl*-$p,uV4Ur<rRG@`[E@cqc9"k"118U(^/-re5f!`]&jT;PJ5o[dab(Ui)gI=kL_$ojb7]-f:Wc0-_^CdPg:%J"`Jk
%h7WJ8oTQ.XB0QKuPj$Vn\UU<FF=N-VWKbJo,l)mqXJ8CE:,:N>G=p"q?[`-U6tY5q`BkeGVaTfbrt5st!ksO^PnKM(,kL`CES<q%
%nlmYF.?SZ)qA9"M,bCi^$]unb3jGU,Y*@!9W_CAWBj#jRXCE'J*MIp1)OqEhDbL*s5G:oS^*9V:4SJRV:eIOrcM\.L'P=oR)^m!7
%7\Q%XUG,:[UG,:EN5?u_N5?u_N5@!"*/.5K*/.5K*/.3EE"kbJ@;8,cZP5_tA1;m=B.83@B.84kJYhj-S>G^H*2`3s#+37TEL=Tj
%EL9'@).3fF`*j"HKJ96!&n">(">HZI6CLe"M);&(ih++?3XJYUSKsqo3XJYUSV/Df:(gDrSV/DF:/^q$Z`$V38P5P,,_]"qOA[H_
%+Jhh"OA[GL8?%e@OAZ9+8>26/UX2RV7]DR_UL=Q*/1n8$,"?:1&>R`HLf*F_&YmiILf*F_`$f_j85\XtUaUX(;Ns@:`$g$H@$E^/
%@h^uGJ5OceS>+A%S>++ie@SZ/F:s?WF:s?WFHQ[!cq,4On4=Uok*&2f676c-676c-674d)BZ9%e8@T"t"GEh[8P$>uRj8WL_BpGb
%bU+LjBTiS55pdc3.$G3\PY!(UBTiF7PY&qTa<Ue)F@h9I\g535?':"&\g535>nZ-+/kMiX>nYSfRS,uW<KfuugT&@@6sG@=6F9b6
%,QV`s/d]m*Toot('e2dC>HJsrf`VPY,c"Xu8eUAhTotLTFm0J"4,&K0SSiT?Y>qe8Zd5VY2[`;*M0,dp8OteO,et?uP"7O3,buAZ
%'%2ah8Yd:_&CQOf$1UKM,k?pE$2G@F_0:-^m@*X+-40K;Q%XO[8eUq(Q%XCW8j^0f-&I#M:eAa;$C?EnX)LWSh^VkDn?##'+l=bK
%P/t*>Q%X[g:e:r&$C)k<Y!OEXi@7e>'!=PIM1hp+8P$@+/dVP[iK=>\<D:"Ki@7e>'!>^/eg]RVP!m/a,lut<P)sW>8L!,,P)sW>
%8]Wl[,_9qL8I.>6,_R.+OpF(:,_-k'&jhU&8Y@%d&lO`2#q8B*,Z9XD#q8A6OE0ta,3J*O&9IJ7a>o,'&Te^Y832VR,TT=:5WX-8
%!$*p0JrUa@"<B?456tpJ"<B=^a>mu\j;^#iEfM&0j;^#iEfM%E3Cf&SJrU`U5t?t=TVFsh8I(6.TVFtCcqu$ETVDQTcqu#2kbsV3
%cqu#2ke]5YlcNt)7*s=*+m>ke&9QDm,3YtfOEAuC831K2O`])D832&B,TT%2832&B+<<<PP)^GP,TS`TOq&B:5t?n[JrU`U5t?of
%TVFsh5t?ofTVG"Dda99GUn^CGdSV54l)9`7P)^GP,TS`TOH((_8On[aP)^:a8On\lUn^?k84SMiUn^=EdSV3FUn^?[dSV23kpVYs
%da93]l0+4jFEC%tl0+4jFEC&E3]\OKFEC&E3]\N3*@6k>3_CYC*@)8LNY4n`*?>cSNXCW,%LU<C]#hiC,Fp8/%QZ!`"6lJ?39d;8
%A0mcq,Qm8'O>uHsO>uHsO:7e76K4Yj6UK-c+W3NMKu?OfKu?OfKk);HoFE;i'G;c6'U"#h:e7*uI2a\9O*MaE<Z35Y3[c7K]%"&$
%-QNm6-QNm6-_2_4"6Z>=39T4]OE5M7,3S0OJ9+[\a>k^qO`OJma>k^q"<A5?#WaF\"<A3iJrU10"<A3iJrU<I5mN/jE/k833CedV
%S>/FAJoaaZ#0oLX+m7&lEQl6A)));J`%_LL`%_LL,[q5bM.7"sM.7"saacAg,fCZ*'#tspP))-n,E=eU8"=Vh7g@,P+*#H>+*#H>
%*uQI3J&Ec@J&Ee&>[iZLoUlk_ST594*-3Hg7*<=f+m!;`Qr8t@8>I6u&Q4Yc#Veht,[uf1#VehtKUAMu&iiI1KUef$6I&FMM4C>)
%6I*t#!U$DB7*\XO+m5ebOE8oA,3PnROE8oAa>rN1O`T#BaLSO7'r&aS%[_l36HW.I+m#Y`7*8@K+m#Y`OE/i@,3PncOE9n]*-:U>
%#0an*+m-jM@Li7UJ2ug<N]H;JN]H;J"6Q8;39Hlp39Hlp%%)Z2ig<B1FVs9!O$q8Z+*#Rl+*#RPc]8=V;'1XbUHSb)d2jIpBTGR.
%d2jIpBTE^HZpt2].$"p]PXc!?as.L?Zpt*Was.$0jcKO(\0L&Sh%>7!mRRI$h%>7!mKc*KG9hd#mKc*KGD)Wa4;'qMH%_ic4@7Cl
%*XSX;3s*i-*?j[GN^V;]*?jXFNY$;37j@/qNY$;37gM/U,8##s7gM/U,6T%;OU+"J,6T%C&V,o,8-Bs_&TWos#WW-4,[uef#;J_k
%KUAMq&hun!KU</%=J9t5bF#ff*$OOENY$;37j@/qNY$;37gM/U,8##s7gM/e,:";cO[qOE,9S#V&V?&.8-Bs`&V:MX#WYCt,]\q1
%#WYCtKUeeu&ig2>KUAMr6Hmgt$(.JK6Hi:I+m,_`S77ND8AlLu&R^X]#VfuS8;%u-&OMN?#U'Fo,VY8<#T6-PKT)Zc&fCpq"Gig4
%6Gu_@$&G?86H7Cl+lhdG7)mUn+lhdGOE'n^,3.mHOE'n^a>f&%O`;(*a>f&%A/rRN^c6Wb?lZNc,*(AJ6l`TH161&o)+SNh161&o
%)+SOsN2&9D)$b#3Lncjp`).J1Lncjp`6fM)ii%i)`).Hsj/@s!ER[H%jJ[G;En!Pa3GKcNEn!Pa\Zh&.HA>TI&TY6J#WZWEKH.C^
%#WZWEKH.B36B9bjKH.B36B9n.+\-Gr68%pS;Logq&Q4YC8>I65&Q4YC#Vehd,[uef#VehdKUAMm&humnKUeer6I*st$(RbK6I&FI
%+m5e`S8sYD8E:bu&TEc]#WYCj,a+2=#Y@O%KVYA#&l;)4KW(Y&6I\jNM5Z%a!n:'c+mLJ8"Otg:+mS9M&9W(a,3nBN&9W(aLcRRA
%&Tr1bLcRRA6li+dLcS-Q6li*9U5mYm5TQC-TFT*M;+G1CU5mA%;+G39;$UZC5TQ($8);[_XJgb,18#-"LpIT6LpM!aDcA^^TStkr
%i/Eb?:dtZ?5oF[n5oF[n5oCPB#Mm:##A(hV#A%FR*L%.K?/NY:E^r0Y;*nd2;.n%-P:lN=`CU;G`(:2F`(:2FA0;nW&X&1"#Y@O!
%,a&Y_#XCmkKV5(q&j]$!KV5(q6I8RIM4gV!6I8RI+m>k`7*ndK+mA-K&9N"`!pH;9OE4Aja>k^pVjqg>,_F=,&Wk:t&YdR1OiTRB
%7L2(77S#U"7KW!_(a8?Q(a8BR(l?1P@g("s@>*!K@3e[1^'L_$^'M",^.@=Vq]Z08q][:-I?@&apI0m%pI3.e(IfVH.#`D@#@YR2
%4:!/dc@[de33SOj!^5`k6_FZi`04?Q76Hoj/i)LnVMf[K$XL\L=m.%s.VlVOB<olQI)lf/a=q-0?,VNbi/;Qq%_B_8A-ZDYL[:,T
%E5W6ta=q'.e\aoDTSrT$*H[EP`"'A7O4a,BXJU-aR).C0lsPbHQlU8\+1$SP15smP(\'4AkTW3&#@1jWZ\'miW@WE/O7M4e$rJ'n
%&Oq&m76J_F/e[,5?%h]g?%hik>pSFUFV42*\d8,p\jusslQRSsI1[+=I?B%Ff0os2f0r4rf0rFhq!V)s8SSJ>[Rc;roW(BZMbH1$
%d;9K.J+<@HClrnkC?i)q/*[qm5SfL:CA'O/((kM^e8:>iVV\p:da5J!m'_^H56kI^k.eh":gIV;)>/B6C2_2Y/.q_&;P%\G]_WhS
%][b,J977Ct#;2Le+d8,Nbr>N#"P#s5c*ol8??MA]NI.7&(QgZ.(Ah\IeOB%Png+fI8(g>#T=cnmPjGu;Pi^^l%=[8o[(9D-%:MZ]
%eWsn`'LnlL'=Y6(hN4NCZA/c3;HA,G_MGq<%O2"gLfA4iEaM5k_NTe2^5*b'V31gc7#lMp`I/>$7RhgiMobLR]-"&28C\&-6?Ef"
%M2UUClAK2sH,2Q,Mo`<Q0.MW.d`OU"J\Hr)rHfC?HH>4'lKl6@>]P5*M#&;u[0^3\`qq+8m.<^nGs?*3_MI")]?"EtL]mD'Qdsr&
%c^V,5+6+bh'j"7>7,B6FkO+8L)g:Q(I1b_2Rt&nDq'&D-]BAU?Znj<SV_=5"@\F6u0-Y=Nk9,^/)1C2M0Tlk5hE6^6Vj?8!,b$=I
%^.A#C1A=4JL;:0??R4SdrTT4_)TOo$MmO_)L8M[UZ5J2\Mkhb[@8^(*dr0K+0I"^,[0n4"f)@7COap<_,/bmP&R^j38Alon&R^j/
%#VeqS,]]-X#WYL]KH-g?&iiQgKJ8*46C(LcM(F?6i[fd:i[fd:19_J,LpIf0#[n'GA:Q+N&VhfW&VhfWOTD?+73&2O70liW+q^^E
%70lg!,GZcBO[rCX,G_:G,=Eu7Oap@+,"*l.&YbN(844nT&Y]uR#Y@Wq,`n8%#Y>A/KHR*E&j],sKHR*E6BKV3M'/Y^6'/r"+\1LL
%7#\]1!fX]D!fX]E&hrUf#VbP\#VbP\8B7\+,/C/S,/>UTO[)e<76j`E76j`E705s7(BI!2(a2?tN'rUk(]d(iMia\*73Y1ZM\)WT
%70lce+q^RA70lce,(q@lOYk-g-B+%['Lp/?$6oX?>o2aYF'Ad#F'Z]ikI*o(SD,5W363<%S'*",DmVr`2n)5+2n)3WhV8kIhHUit
%hl)G9][7N=hWTk/DtHIBhWTk/DtHJK2s;HJDU_*G2s;H=)g%4`2Wu>Q)g)aeNOhYK)gr<mNPYtK7U[R:NPYtK7U^slUG*>E7ULgj
%UG"sFd2.X]UG"sFq.FgODt$0sh5H6nDU_+22u"SZDY-@g2u4_o)h!i>2nC'+)gr=XNP7sES,4DfS,4DfRgUHlD_@!!D_@!!D_?uj
%^<m_thV8nJhV8nRHuiWtHuiWtHuiX?nBH@nnBHY!nBHZL^c*'!$ukWm!-%@a"MhQ$!lDK$!lDK$&d[[7#REq-"FtQ#,S87T&J36A
%&J36AOb%J*\k"2RTe->_($Zu4\3aCF&?a@q0u=[J,%+ZL/.re$BSuk2Ksh70=(mKpa;*DQJ6\d#!lu,A,(Xb<^'H/hi/<\;"hmO'
%>_+Opb5'OLUKi@&&i!I\M\'q5\d1;tTSl4b($Hhe?%FUpdM:siO`\Qi&V@0e*F`a"fWECfFjQE(@kQ&8:go$M.jg2Xc5$*ujBR6h
%6I$>@,*?pM^'H`#i/<\<oL/iFW/D4/e3sX(qBD&Dn3mUDqB?%_I?=dr\fLtpI1_'k^.8Btq]Z$2q]Z$2$R5[o/rTdP/rTdP/rXo!
%\M"$4\M"$4\M"RdkIq3m=6PQmFRG%id^_"4d^_%5dM3*6JTQU_LlnjU(BN_,I?=N@6=0kg/+c8nl^R$p"OIn[+okoB0*9Q:qBBX8
%`_73MkmE+VOKL.+G>FjX769\g('3Z)(GX@K/J:V;[YU'kAJ($LAW]5=[m`PC[m`PC[m^A_g_KqT>SdG*>Sd^BUG"s^d2*tjk_hjW
%d2*tjk_jt5e3tSGW/HaZe3unhl6;@4e3unhkTU-MFccqjqB@1*Kb5[QKTUh-PK.%;4Xs3[Je#Xg,TV7E-f*iS2U\!H14TkKLk?2O
%Lk?2O8-BrT&I0=u&I0>(OTBRn7@\Jh7@\Jh70_2Vol/?q(NIm>(E#b6?\G5M01+)a(l>&`0LF2b(a8-A:KVd)*:lTi3r1$GSbXIl
%F7_oB3VjrXSGOL]F7+s:F"WE%F"WCScFGW<S9&$?TQ=HcJBiQTJBiS*jCsBDM$]hr?Nd$C?Nd$s0+p8-_?`-a_?`-a_T9eYl6:e#
%Zpi%rkT[e^D39W7g*4<PAJ&C3Z:MnRD%U6;[KnTX>9m[<[KnTX?%eT?/eTlD?c4[3^5,\t^;rQ"p``Hnp`cLRFHM,pcpaIFcpaIF
%ahJ'-I\hZl:3OcG(NIZe/i$65^5,^*mK=3G;&G.SUG,$W;&CJ=.#\;Qd2*tgk_g!noL0tek_kODoL6h]qBCK3e4%G=l6>:/I?DT2
%qBFu?I1^L[^.@<)>n:t9^'H_h?R0[;I1^GDI1^FY_FVH^Kb7/,Kb7/,Koo+jpI.>-pI.>-pI,/Hg_U"Sk_g!noL0tdk_g!nj=N)V
%@3f<B_?_hc?\FfA0+p!0?\FfA01*n1(Q"NS01*n1(Eqr)MaYif(a8&jN0&,&'BJBk\k)"SgEPRGlQQNo[m^A^g_MWk\L[g/\L\@Y
%kI(X]kI(X]kI*n]S_G=gSa.I"Sa.I#FRV`?3Vjp&*IX%U3r1$'*ISNMNk.aa*H_sGNk,K^7pRBlNk,K^7pUe@UFm0N7pgqFUG,$_
%;&G.cK.oX=;&CJ?.#\;Ud2*tik_g!ooL0tfk_g!ooL0$HqB>r^e3sX(l66?OI?=drp`ec=I1^K0^.?0^>n:D)^'HG`?R0++I1]l4
%I1]l4Kos/2(IeBc(IeBc(IgILg_U"Tg_U"Tg_U9iF'f'CF'f'GF'g2Sc@$:dNku&ekJBaiSI6YH3r1&YSGOL]F7+s:F7+s:F7+qh
%cI!F/k1gaRk1gaZQuc[=Quc[=Quc\H^ms^7*HQ+V!-><$)!54a"N\,*@ZYY6"H]B0&fBf?#T2a5#T2a5873ES&KoAA&KoAAOaoFf
%,%M[A&MfB\87W]g&MfB\#T-';,VkCk#T6-<KT)ZY&fF2FKT)ZY6H2k=M2\2_6H2;.+lXo/7)Vq>+lau0ODtt(!orL&OE'n]a>j#?
%O`BkZLcG5T6l^W;J2lg<6l^=],*'B.6l^Ue160'S)+S$Z6B82R+\,mmOJ=HA+m6QF+QpHE+QpU4J=HulJ=HulJ=Hul*HLS+!-7Lc
%!-7Lc"N\,,!m%o*!m%o*&g3P;-VZ#M>SmM'>Smd3F(*!8kIq3UkIsL&SGOMGSGOMGSGOK2F7+s:F7+s:F7+qhcFGV1cFGV1cFGVa
%E6`Tgc8i@&^cC"8N,rlp"Oah4@\e'J"Jg*A,bWG"&YREd&YREdOaoLH,!_^b,!_^b+ouiY7>O#$,"*H"Obc'p,"*H"&YP/q844J@
%&Yb;s#Z4)t,bg=1#Z4)tKW(Xu&lD/+KW'MW6I\jLM5[1'6I\jLER[8kM5Z%[ii&=db(_tP+p7,gM`C%\M`C%"r^OlfX/IZ1XFi.b
%XFi/]YR\C'ZOX^*ZOX^j^cJtHc8t_Ec8t_E"7,0/OEL1aa>sSO&TndWLcPed,[K^2b2*Y@b<9cd?\G5M0+piH?Nd0G?Nd0G?R1_n
%^'I!e_?`Ei_FOZt$R5j:pI,'CpI,/Ig_U"Tg_U"Tg_U9iF'f'CF'f'CF'g2CNku&]kJ@KakJG<U\ZUj4cuiOqV!GUJTs!,oJT]ca
%1"^VO"LRL#8AJN?7DQNQMZA"X((%qF[Kr8PFV-mBlQUn+oL2;6pI0m$pI-;#g_V./g_U"eW/F(7\Lp5@\Lp5B\LnNR7pX'n4Qmt1
%k<Tn%i]Qu[*p3^4BqP]>A-hfMN-I*n_MIB\&4U+]CVGV&ZLC:FQ%^kHUpB-@GU<f*`/!^;Mo6c#kTW3$#@59'm,3d16[%rfI)sV(
%)BZ5:0/AL=_=d:048:!`@L$7N(pThh_@\m++rmk_0G90-.#`,hNku(BlmRgG0g#4U*4)Cn_D+.K,&the^'IY?qBCmhk_mA-O1kmp
%4:3<lngKG"ppi(fnE[dokgt6FJA:N1J:I!FJ:HAk#ls>+#RKY.#RK(2Oat5"Mu\H8(]afP0_1F6PQ03V&K)l24"0qL;O>to^5.`T
%b</)u,;R\"Xm5SQ$R7Dl^Mf#L,8m8"0Lk-f'jn45@moTm8;>,TDEWD$],MtmDHH[,=-:p/+`_8o389fAKb8TsU$fm,6%tHShU$4M
%A@ArU>SrlGn."]N0J^+#2:Y-L&K-n+QYqai=;n6-0d86h^3=(_2-f`g9Gg>K?f>C83oeYBOi]YC$R;di[l]_+^D'-aq_fi0,BAQU
%VpU3\ael%I'tY\bQ:AJ?1>/I$(IfbKNZVP^`lKEh2qMr+8;F4Q)^EeqkqUO%8c!""/r[jj8__[IO]E5elRF_\j<SSh2b&td)Vc0$
%2K92lQn]fRoqnQ),KXCJ2b%DK7`';t(n%M,].kM]gqGqiN03i11=1\sFMpu?e7J+'d-]:!Bk7`#pc:IAg=k`FKb8%3fiQRfd<cL-
%&S"3iJ4tQj0d?Rtj\'KM83bn/k//%`G?]q4,H[p%GQ_GChj^U1D*WdeWKYUm@77PSDqRur7,HjbO[3oW76a::^[d?'Lm3VR1e-R)
%S_Chd8<"40mqf%BN6$?]R0H72ZFYoqa"CKFR9pXtUaVoIKb6<G@N&U9<sG:%Z&T)7\dZ;m6ml"Ad+6NmjjRR,)&Z6XB>dXSB>dXS
%Bk0IXU_-*GX:[rOXHA(1YXY.ZYXY.ZYXTg0+cSHX9cA#C65g_d8nir@V)1N1;AtBSV)1N1;Ap]TBoPNRdMa9*BoN+kPXZin.?+n;
%PX[!lcd.YWFJ-3%!hd+]!i!7_&r>i$#`*6D#]T(W8AM3/,J^9_,J^9_,6=][N>PD>NI[lYN<G]]2$05p)?EOf)@8*?CBQ>6CBQ>6
%CF$^FXV&@5ed,AMCF#R;ed,+k[\,dUejr1XXV%4jdKi]BBdBF;ed,,FCP4*i2%iJQCBPoZ1d[@')Mol=1d[F))KD!.)Au@ddYO)$
%eqfM(f#U*SZUPq1YXTV.YXShY_AXRg+cSHP9c=m/$>IF=$>IF=$>JRcUXVaWjlh\cEqDgl3Jo&DEYM#73AX1H31;(SEA0n=31;'[
%*6jUr3/SqK*5rLF%cU#IS;SUWS;SUWS;STmEA!7OEA!7OEAU/eiS5CRiFn5gi$aTg^/5jNhHV%gHof$!,6;^8NW<uMNW<uMNWd#*
%3!-b'3!-t-3"cM[jp27Ujp27Uk"$VbRj1B^(Is!8MBd[kDN96dDN4^:1e.W+g`-@Rg`/oal[WW[I6$9A*!,$R*!,'S*!qS!3C:`>
%D(+FXN^Un7*!,(JNf\5p7j?u$NY$1e7u0-n,EZt&8&.*A,@he5OiTM>,@he5&MfC+87W^Z&OMN?#U)]Z,XROR#Ur8bKTr5l&h-=l
%"I+Nu6HE"DM3Obp6HW.F+lt,4S5PC48>I6]&Q4YW#Ur8h,Z9Zn#Ur8jKUef#&iiI/KV5)'6I=+$$)"%U6I8RN+m:>87+/V.1Acho
%RliJ'k:`;e&kM3V#Y=.L#Y=.P83ia#,=%gS,K;d27fr$^*WbY5*WbY5*XT3K49F0G49F0G4;)&bnd&Xdo#Tm!dA?D)@%H$s@%H$s
%@%H$sJTYjk)!bEJ!UEu3$*\Jt"L)ro"L)ro,g_SF#[lih8EugW[9*q)Y]G-oY]G-oY]G.:^lJ*o@2H@\niuK'#Wp`bJ0!_`_N+1X
%KH9FldZ4#,Bh*LqdZ4#,BLd?$[%f_rBh*H%[%f`Mg//oJ[%f`Mg;+gRltDGJf[1``ltDFkG-ja`ltDF[G*GKf43Ae1G*GKf43AeD
%*T`D^g//rK[%fiPg<gucm3n&ag//t9m:_TCFu2`6m:_TCFu2`\3uTAqFqdJ<3sm7/*<hTs3u:G"TA+/`am??h9csbLF+FJ$F+FJ$
%F+Yabc4(E5c4(D]SI6]oFtSl,FqdIoT@[u_8V!?>,bU\9,buFaP"7YA,buF`'#KY18Yd@9'%1[_>i+CmD^Vca5m#\9+<g)"O@7aK
%+<g)bO:ZRl80[D6OH=WB85a[Keo#)jFu2`\3uTB?*=\0&3uB5<]=n`'e;5(h"79KXOEM1+S9E$GQ;0LY,YgE<,YgEY8-[Y]+<g%n
%OH=T!80[@JOH=T!8B<h!,a!3`8B<h1,_R0IOpF,f,_R0I'#KY58VA)n'#9M/$"4'i,dNF3$!BcLKWLq6nq)!\8-[Y]+`Z'Zk3Rg`
%80e<&+H\YK@$*G6@$(krK14duK14duK1-DM#DpAr#DpArL\K!te57D5l6)4NFHf<?kpV[UFHf<e3a*ekFL4S03a*dO*@6k>3_CYC
%*@6ljkP"@Y%-q.B+mEU:R$,`@P!D'p81%.,9d6!Q<5^&FJ@_9LlmV-S/J=^/dio+"bHsg!FdWjK=I1J!"P.-f,[d0I,[d0I,_:)U
%OaqRlOaqRlOTa7G70;&N70;&N71r]mMhJ/>gTWtiZUc;*@$,t]PXn>+8gKO@Zq*_K=sP@6/X"2d%#Y7iK1+^tK1%Jf%MFVnNm&g7
%+H[)2K1+^tK14duK1.Pg%Mjnr%Mjnr%Mm0:3`mXq*@)7f*@-f!Fc].aFc].aFie^dJT]I5,4"HTOEL1d#Wmnh&U"j[#WnJ#KH3dM
%#WnJ#KH3c"_N#s7J/q&k_N#fH@7QG*_N#fH=Q^k7@-8_*J=VTDJ=VTDJ=W/T!Hr@D!-W7C)!kKQ$*\K5"L)s0AFfQp-B\Mc\OZeU
%\OZeU\O[?H8!*qYF--U0F-.``c:nqec:nqec:sH%4#]_>FtSpXFtSp\fXXQTfXXQTfXXQd?q6C`XE0R.XJ8?";!0/3;!0/3;!0/s
%5TNQ3U+U7L;+HfqZAp7<?q6?4YbO`%@7QN7YbOcVf[1t$YbObkfMNn;m3n,cg/0+=m3%Q'FqdLllmS#.FtcM/3gq=VFYl\23gq=)
%*DM^<3g_0X*CUU8NZq%_*CUU8NZnd,8!2jHF]:pVlKFBBF`^323g3,ZkU;W+FL4UF3nP^?F0nN[3SGb>*,UkS3QNJa*+]alN\X2E
%SBE29SBE29SBE1/F"WZ,F"WZ,F)I0EcFHXNcFHYYS9()DE6`#-E6`$Xa_1C<9G0>J1'op1R08muR3Z1cAJ/t-AJ/t-AWjhh[n4@q
%[n4@q[n-YaBTj:q>UBL6>UBcEF.3<"F.3<"F.4F_c>=25c>=25c>A^E3k%Z\3k%Z\3k%Z^k\-.kFC?*q3nbhkFL4U>3m&]N*G(B>
%3nbh^*GlF@N]'H3*GlF>N\Uo,8!tWSN\Uo,8"#%+UJ):l8"#%+UJ4))d3a^KUJ4))d3^%%BTkj6d3\n[.$Ka8PY!(b.$Ka8PY&qW
%as<mdUJ;G)8"YI9UJF5-;(.:.UJO;2d3p1*BTtp?d3p1+BTs'P1eIi;+I!F]'M=0C$7-:./sH?[/sH?[/sHLo\PN@_\PN@_\PWuY
%k=,bsk=1<ec@qF33u:M>3u:L9cLZff&od##$#iD."LrNH,iHt%'&_&h'&np<8]2X/'&mfoA6.L5.#GI/;$,TO-mA&Vrn`A#N^a>#
%8#(aMUJVYL8#(aMUJXA7d3sjaUJXA7d3p1,BTtpA_'j<[okbQ7bU=?J#GZs^1SMa$QTT-L[):C&V]C^/V]C_ZJT`_>5W]<!U`G/P
%8@u"%pJnul`e4uAN^?<j*JG-CN^a=`8#%?HN^a=`8#(aAUJVY48#$3kUJO;0;(.:*K2=nc;(*UR.$U7-cBXOu4*O:f4*O;Q4-rP`
%mp%=cnD#K:n_>UNaE+D8b]Bh<cuZ65:sYsNEmLQpK$U9V83WA45e\k9!.A-&$1-tU$/jF3'%"t,P!Hd"PlQ<i.P^pFW?_JjV%Udp
%PY)e];(@Fm*i0LhH_#$in51Zl!?\-N-FT".R+G4cM0UZWd?rM5.UcLRX!FRMYY(#-;C^W:*i5#ZKL`(r6[5t13.sf&,S&e\.cCp[
%OrTM?d40ttGdL(&Jk)kp,C$RfiWpU,&g+sUgTV8P==(ir*ip!7iB\s`0g%uQ_\aGr&g,#D<T7M5YY'X)4BNn'CE\sfZj3R@M"VsV
%GdI^T`1oId,nYZl8dI\k8k;4V8g4>m.Nnn.Q&pQ7Psbnh<<<M*.Nnt$.Z#!aWIuC9WIuO=WT4bIruSQ\))W%`-u(%h\l=i.,uU$=
%6`jlg`r,\[[1X@NP*gl*M3PJSW0Kn.D-TH1&fLGD[CT?^""BUIY(P6+glf+2>)A34m@.<+1=.qsrXc,@QMInGlQ.$X=Xq./6j?,V
%4P=7j[7XW5Q9I<8XV)McOfK"n6q;.glrJt%goSI*7'2V4Ri4VoUm5.b^UdH$kE@QFYW>B2\uq!n<Y7'ZQ-?"#1,nXONC&J\LWYr?
%;(0gH<.=iOKG#;K2&Sf9&fjmc])k<U%b9QCRjaNB\>k4d'M@M()'=PF*CQa2!22dj[TuWe8n8h0*GC]$5h4kka,GQuKe88s3Iu<s
%Tg[1GmAm0^,1f,qU_#ja.r-r9:a5#/9,j?0hs,.sI1j*Epi[8B8Ye3prMr5+gi"fah>9+sMa>i>OZ$:-iif)K[o?Z_Lo?M.X4=Cn
%_9?C0*mB$Qd7L.qms/oD7/GAI7ZH[YdO.[H>uW26OiTYemZYjMM8_TQ@Sc<d65*1f6rqu"f1BSukbLu%b"?hqQ:3a-X&:=5([Gqf
%8`oLgACO1]4B)A+l6J.SX<6^<SYVNNA]-WQ\Z3n[VGADZ88Fqq,1!kuB%*OY65!!i-]ph1^5kZo=t.P8^Vr-n$j_P^iWt65iWt65
%1*@8lM'E]qM'E]q8Rs5c&n`V/&n`V/P(B=R8I/5#8XuQ[8Ht3l-?5'_-?5'_-5ecMS&@;oS&@T"Rq)LJC_?t%C_?t%FHQ[#cq,4Q
%cq+L@l6Q!$VXE8dDTS3O]O+M8Tl)C^dOOASi4JC\(UfYbC.+OCb<i.@Hr=f4TUW^bN/74R8*!pU[^utc+k0u)W1;nkR5=HVEJS8G
%gE[A%&P4)o,"X.2+pfMhOT^UeP&uX,P(6Ct&ho26dP6VM!_-aa5Z(4<:/O[t-n:EK&4Il/&4IiFU51'['To1W'FP&"as2J2njkf.
%nOPoYCS?W;Ud`]DMF@S5d7?MN)G*FI)@6[<,6=Ld830&a80B<%#mA3lkm56Q&OOl9N)44608,W\@Y.2s0gVXu]Eh[ZM#f)c_uQ&l
%ncGaH&d*7L,%:S[4HducBdDi=1_TCY)Ta?kd7?=Scq'fK)@:LQ,O';;,Csa/Oh`k3P/]C_,bPU)"LMU"FL7a(#]3ZhYY>m)7iN3M
%BYu"pD-/&(D-/'V%>t@raWft[_]jYJZ:Ftb1m6-ABd@'qN<H>VOXtF'6s)f!!G_rd*GYp+?k%YiZ6><OZ6>;p2?XZ6L-X2/L-Pgn
%0M"Hu%$F@D$kgX95pE[-+R*E(+G">7,`iIdUlc,\"1$mHJ2[=fc8PS4f[ecTMBHVoFLGV=^c(fsfS2T<fd;+M[%WP22Y<-W2Y7U6
%L-Gaon4,Oon41DToF]`1518,=4p'Nd7t;QT8;A/\#]rEUJSsZrSSmX9cqXKFE5Nc3F@..$DWi=l%=R<$DWi=9DWi=l%=JAjToX<,
%ToVGtoF^kQ5194\4TaQG7fXP&8-^.2L]E2n!oU:Q3oR;5+<:(\KYnkqKYnj^E3:iF_I8LI`*n^W3:%4oLHa-0LHYe$cps`KqT/4_
%7g(ij&KligdNOB*!osn_J=OQ?c8``S(l('Pit+^Ait+^g*9INc_]7p&_]/\tQm72&i^fu;`"=,I3!/.P7iLH-5(FX0#`uqCl&`e%
%!HP:O'a)"2hur,F7XuK4#`qCml&\7OJT>EK:_%?<;\!XIb2J=F3P:JL3P5r$%W)?kToF0:ToD;tBd5kQD59N/D$7qRN;tuGOUaCY
%&Klif!p/o@)Wf=8TH)YkPX?DcU`A)ZV]=CrPX?C@EbH\gEbH[o%W)?kToCnO@?!N4X:Zk92:<q/2Bp:PNBfM*O\Rp<&L`Dl!p-XU
%3p!S8TH)MgPf"F(Pf"DjE`aP_%W/"?%W/"YC)tDk5RqXab2G*F6ofo4;bk3NMfP#n?.^41TU1b(0_1s.KFq.#15Up0-&fJZ-XjrT
%P;-OfaV]:h:<&)5-Y!;#8Jl_=:;Vf9-XjrXP;(E6-eH8#P:pCfaVT5":;2N52qlW%JROJL-mr6;P`m_/b0=FH@`h7Y1$,3hQu]0a
%]GN#%`/Km5!orc=3of]u`&MiN(l'`l)2BgGj3U5F*4e[r*4cE;6PfcDkTV$fkTW8%?NeHl(MSgq(P-Si+tsL4j?(@Q(O7`1\qh5*
%\qgqG?0$]!korTeF:f`m\k#>]C_7me[YPMC>NCJtkoq6F[YPMC>NCJtfcimjfchc5CloOmA;cgoZ:.GHfci)daVHViA;cgoZP0iq
%=bf[DDTUJ/M\pH1Ma07i+qSW0oU<p"aMcJ$3(+>aLF<5`&4JY>&4Ji(U'QQB'^:QD'S17k+tsL*Ub`KZ"NFl-LiJ4pST0H00Fgq_
%`Z^3r`o20X3'7ciLF:LfLF3/`=rYUl3R/H#A;NQ21_C"K-IN3U-3E/Q6m*J<87rp2#`Orp@`6A%Gp,qS#`+,@@s<g[6sb\5-=Xnb
%'/ALBM7aBI9uMjO-=Xnb'6t`rRYVP':W/'Q-dik[9uN!S-=Y!>*YZ:*[n%1sN*E*7^plh%#`r7kpCRkF7@FLD>GR)U\ODrXKA7YD
%"NW1#7"F&:9;FpmOX;9n/[@cpg`fCe6Z+>G"NE%!7"F&:9;Fpm_/0eF(0MhHDNQ6n+h,N*!HN\ua=Yh.3oh&j,!K%r#`r8dM(ER4
%7$Ln$Ld8L>Jk2fpZI.o'm`<$a+LalQl&]*pL]Fts2i7.Z=X8fFa=S#mJD;>9"NY#-FN@mH!'(H"5n62V6V`4=N'e/-E=tYXic$tE
%*.A0L_[l!f_[ccfXc4e1P'0B/*-MUL6Os3<kTLsekTN2$4Trj"LNLV2LB+kRIL)0BjG.j"/b27s\Y\p0+LalPl&],FLB+l]oFMkK
%8.XsD>GR%i\4(]LN*E*5FN,o/LOcm'IL(a6<nG?*MHFIcJ[f:a3d;idOWO(M3:r;m3:manLE6NV8e:0:6Os3:kTKq$H:['8FpNK5
%%Y8QN+e<Q"6\IDb&FbDpdd`&4!oL4Li#?i1k8SRMI)?GFDqH5(DqH6&%6F^,Tnda(TngEBoFUeP*jWH'&FiJ(#^A]Fl$,Q(JT$>f
%n-q+Jo*mDW^*/6H2oLg'2i/^9%5S."@>8m:@>9:kbRi_B0r3h=0a,36L;5adO9R\7%KM8#!oWQ73oKKo!*j<7MLVE:dK,+<!oVEl
%!$#05#96nQJ3s\FE+gC8E+gBp%PIt#iIuBhiIqPVBH[os/Yj$i/HiqaKn).iOH)<-&.jU4!ohQn3o\LQ?lWJYN5H$;N'du(EG-LL
%%P?b*EG-MdEG-LL%P7h'TnRU2TnP`lZk+X@(=Fml'a!O%6GORA8B77-&7H&!"O(;.FNe0IJ2s\B0S^Ck0o$JFk-.1f**,VN***?4
%_[6EcBH\C;BH^an/Hj:kKe.-e7$s/L!p1%\3p$u?^`5[s0de.*KfKG_`nY)?(Zlur]J(]V`13#'@a7\SPSfpS&Rs&-#_@%06=-1G
%&7WpV#VkKfKQPM]jY5lYK:$`N6!g(F%q<hD2H9P5,ARE$`0`%q`0?b3pr&D\%V!RP#;P>9K=iT[*<aODK0VGEOA<?%.+%^"*<aHW
%K652.K)doR&0Q`<dNOAU!p%]oJ/gU@LE&>\OM_;(EqgadEmd6]*'+@a6O3EtS99o'3U7eac8l5uZOYDDB,q-%=U0M"ej15>CkKMa
%gE=;W2Fsa:FV+)g2@.+)%FU)g%0H'9K7H)=+J!ed6%GPD&?(?nd]$ju"ROeGJU>s63r%&fgqT$_ir5Kj&GgT+60R2`WauE2,06g;
%-P=9!fFgJ4I[(30)S^$>!J[cj5s0O[#kAnJQ3cKtX%X(#dE)N::!q&cnJ%Nf&>nY:K"RuE,_C8u:;[r]kTkcP)*0btStV>QiYae&
%+KlYDGp&]P)f9-5O0V#W;fo<14@^b.`,g%K5[JMRdQfob-On"8FOEE\F*,hq4FED!ing4gOB:mG*XKG@Bcuj"8H\586N[@:ej(@M
%23<h^CEThl%0ZB-"6o<]"p4bm5bO`4OG5u8+99b,#R%L=nqk0^)E!VS;]e4o[m2,oc_i@V(io#=[`FsZ1T,i&";2riHT3-.BU`WS
%OSH$"mSBV]'!ZZr,CquWcIWI;8GrALjs,Gq:i`V#W'S4%=p>b`oC"-J`;GJ!P0PNeK*;l4eu]S,dfOgorVY)-XgC?6OB_EN,Tt(q
%V6\YCYJp"mH%YUCPX&[`';I3+O;P^QR7R]1L*j+`%5[YbB1j@%im2@eP!EKJ@DciA#njLFNKab_+,Q*n.L6[qqFJ>XE^F5@XFfMD
%_mEVOaXN7Z$'Om*bA7h;cLgAjg'!7NF(6W>"Gm.^'Y;-aM1<Qn"XZe<4)VJ(N(f>C9(ABYK#CZJ`@OuM*%6inU^@a>9=dYFA]KiF
%UE*<qq!FAae0DM=9U\a</kGnEF[OR\M0n=ZC&(FtnjP)eFkSgM6[[SlR3O/"S,IQ:1@9.4cIXHs'"@>hcdZ(-I3`?bGQP>::h5Z4
%bb@U[$keW[4h65;5*@WOO%`M`OSQ&"8!6/I'RsT#8-[1uIbcqsK1$BQY`gt9b_3o*`:rG\mHdh#,\<)4k>VsrariF4ZAn-9.>(%T
%H0896M91>Q3FpEbVh(emYf4R$'0!uTnaG]5+G7TIfT5'(K1%9%M:`s@n"WMNAGT9rD##_,K633t"YiR0JcJ]J+>8gK"TbDS5n$YZ
%+>8mM"YiTFJs`?36!bh%$=]Nk$Y#RI"aSKp/r43k(W8.q$hC$k>S,@`/dOG%$M)'5<"S(h.Yr'o($('IW?B3[<"O#+$IWpO%g#K<
%6Js:Z8EVEg#Wtg)"ILBd1mm9T!)n7V@#>KC@>YQs9]^oB;LFSO;LB$X.N\eX,(t'&,(tJEKFgt;&COF5cN-XLKKrEQ+W[?q+b8&o
%#c'F'*MbY<J.s@6OQ(pMOJ7C.;Nq_X.OCm3'I<mBU4g<ZP`QAQPRp*;'4R'G$$h*/S.IY0-,^dg'(Y$q.3Z^0PRq>(9#qC8;F6=>
%.3Z]E.3U@%apBdkjb0"qE^Dr<MA">SLCjUJ0LE];KTOJ=KFfl@Hk6R=&(1b3+U#S(KE*ubO:F7'&-.It!o[[CFMM=<!'#oK!/D07
%!J_6gi%RJ#3!gb!D[7NU9gT,1P7Z1,-6WN%+bThSKTH[&X:X<E('<:<69<oK6@^"Y#^euIBmdf*JT"X6n-pnDo5,R*rlI+#&-+(.
%V"5$G"MS;u!'"[9SSr0bn-prP^7g7&^>X1L2nT\%LDSAFLDL$NgkH)i):AhH)$8bN6Qd@\80aYC&-.J&!oOVW3oLW;+<4hrKL614
%KL60!E0qd[%Psmo%PpM/6OX!8L`mdYL`nG^0a,K>L31EYL;5d*+Wq7LUb`K:"NFl)^c9Q"&&ocI1reL.^c8t<0b,e21Cc!)N5H!R
%E`aKUEbHV(%P7h-TnRU4TnS"W]FZcP(Xb=!(BWdh6Jrhi8EUt!#b8d?&a.M-3p=pW!$,5KUdGOSW'^rDF_Dr&%P=K_:2U?96Oj->
%a<;RHa<@2d3<[i'%V_`V%=rW2+cm0mUlu9I"Oc7`5W[\^N]Pr,:kotklB"@olQh793ogiKLE+`>LY2^nYX:YrG">+DFpP$f)aYQo
%84O\L#cPWO!Hn/\%<^kXYRWf!etIk@etIl73qNtcLE=lHLE6N_n3^S(IRn)lIY_)R4Ts9.LNM%>LO_GX&5\-'dSYc@!p\-"?laPa
%B,uF,XMYR"Fnd+%X@!M4XMYO!Fk@jH*HF\`*HHs<LDp<\E'l\PO@*CrEX8a6%dC&^%Y8cT+g;G<UpCOm"P.":^cLhDc8t;'=GIn@
%efffjeffga3ogiSLE+`FLE$B],_pn2jH,B_$kZTs,%B+p&UCX!EZ_Ab=,Mf2-Uji;:54R-2[q/_lcKcaTh^>u;("`LW08Cq6CeMs
%UJ?Q";("fnKfUY,At9VJZVHD!MfnSPbW7a.At9p(([L.<R!#b:lXYjb==6b[XHOr>f$,8Dm-Q%.[2,j-,\#?$,k<.M,S?58OpIjN
%''Z2Z&qP.,,*3:-Ulu9]7&30_!HgpW*HamsTFONre00Zje00[!3[>;6-V:+t%SHrQ@>R61/<N`V8J:9`P9XPbPp6@oUklZK-Ue0b
%aUg2jA;Il`-UktHP9OJ_8J-6!:5Xin-V)+JP9]W"SK&5oXrJ$p:6*DRF)j[m3B8:&:5[,NF&GEM3@Q07h!D_XHdRRA9K)(0L_t61
%LqG\p:W/c-bcof9?D:!R*23_/6PKQCLa!:MGTqYJ:B]&'M0.2)M*O*a&P.[)dRf3A!pT2B+<@1I-QSoeUdGiIFGM-3FBBTG%T<MY
%@>]0T@>[<2[is2A($VBT.g"mQ7Go/g8E1\i#b46sJTIb6STLeSOA;g35po[n"ZiV,"s(VcFE0fVTT^l-kbO(QFAbP6TT^j7cq+s,
%kbO*K5UTRMTT^j7cq+stO\W'88LITXUmjM@m\E2bBr&W\JTR8'662dk7ie=[:kpD"lL72&l4?BL*MNh<6PSd`6PKQDQm/15;l$0`
%V?j!8'EN?D+rtfn,+oEE7&WHel)6r`!HftSHCd[K]ALM-6kN7N-j&ZF769b=7:7.I#cpB0l)^($!p\-$5TRF,6QNT@W5BAOFk@lY
%Fk@n2%U0(c@>f6W@>fXsC_9L!0%*TE>m/TLMa0>f+rtd8*e4`-"OQ+cFO9!)!'7S4cs_lTdUA)b3fFYILG@4RLG/ep&4So*_FR0;
%_?d)-(kHf8,Frr_,Hsq_#cPWXl);K:&aCX#5WXR\:-+%?8;Al#kn$<Fkp22f3eS)1LG7.BLG8ko0Lc$_`lJDK&4RT%n3m<t^5,$U
%\k'j]\qi%q/HY'FMfd+8Ma0:E&L`DedO?PL"N]P[!',Fh%QSnK.*(?YjmY]"jmY^3*574WLG%"(LFrYicpaTI\k&aS/6rD$c-f%R
%gala,;f7mW!p/PHK%71[Br"+652H*.b0?)=T\M)4Ueu#q1BQZM3?q@<Q8?r<2jZ<%jCUCs5]2lDdNLQm)$+caS.Ql&1B_ERS!dt&
%j^s6%U>.;6Ugn;.nH%ca=X.<lQ8R)F2p3*?F)F@4S)oWObg#]J^ta<sosD]1H0)3QdRM%-I!MPI0fM`El'Rs:NI\QBg'F(8V2]T@
%c-f(sg^J0UY?.V\dQ'80)\M7FBd8.GQ8[/W2bP(jFL/=d5W;=Tl(FNBNBk'Xg'FLDV2]TFc14=Hh(3IId`oDEaIREd,E6eI,ENCN
%7&30gl)[5j&aOC*?ldN`LE4eKYX9<0G"<huG*5=F*S(M#_]%dD_\rQ!=<kTkCS\iXCBW9uN<j\u,9:qu,JXe'"P=lWFP%ar!'?tg
%@#$Se@>?iEm%fXA44KB&44FjMLH8ns8KI'"P<!+)9`rQF4..<HfZ>*fm:;6EG10R!0^WD2R!(5T9KT3u0A8u<1$tcsR!)@t?F5pj
%@G8gD1%"%^]P&[:`3c9KBNOoK$[/gG%(if8bduJ[QG%\j;NB#5fk\=@3lrU"ek$p6FiYf3%XFkVmM^5E[X<bO*W^E9,9:pZ,=3FA
%#cL*3l)6rj!HlI.TFQ7CUCMPPe00m'3olE`3nYa>%XS?,@?5etcLOLnS_Xl[B6QbJZT?NKB6?VPZT/*UClWVq=WN'<<_#EHeWJ->
%X!:HemKhIO44:Zp3s,0CNW;8T,Fs4*7mN^&&[;jhUpJD4#k5/]!r]3\FSqhm\?@9&`-jeJ,HnhQr"8\r#2?/a-\:@/fon\\+`.N2
%*mmS&kp'A311EL!J&DFmq'3'DD>>CtccR@"e=HN"f@6Ah&Pq6)+7[jO"HqBdSHKR$h.^uKbaem"f?BfP&'s%Q+S![H%$K5dSI?.W
%gsH<^GB-5\;g37Q4Ei0.`,g-C8G_,4'GAaJ8KmWZSJ77=gmo,l%qqf$\>L^.jOM_C6K4T.*"r#<jH+K]iK+=p<_2/@'p9%l.jPZ;
%K`hH\+mB9>6376d878)*Oq'c>,[et/#op<>nc?W-.M\,GN1lS*1=`,$*Kn5+g*Dh1hV_-P08X5>#uk+SdBbi/>9m-AL$KspO\@K`
%EnMXnK_<%>Mk$;tKi8\Kqj2V5TTIq`6aLW18=hW,S0oh@j>iF%mkGN>k=kGJ6QpaS]m_FVG@i]a-mZ&#]H3i08;rpFC/Z3GLEu<T
%l*`nk$dm#%>9UO@l8?fYl93G1#0@`3jnCH"c<ojrP5S`*,You*0a:4^+!V'oK-]<7c^F<cr-7kf@m#<.E[I]=5nX8#l3O)F`.0'&
%Pu($2C!*.l;FmtST3`J/3D2`qSpnLaL#gCN:9t[u9.tnpN"hGb8s/Fp6?6X7X2PE;N.@i)XcQdjEbhpHErAm32[[YI[DeI%RB)"u
%;\_i$+h;YOA[au=GHZq/80Nh3SKQ?oA'8jJ$;'=3`*8YE'D&7Z(5RtY$H\i;-_m?Uo?1LCdRbo6cg?4]:<?L3=f.Ng+c.T<h"aXg
%NCCU1*sTjY9-/(AA<>%*CUp05)'mVA?FF:(7)sL4L-[R2hL0lkl)*X6Kb]d7;69Xk86S#..jT*ZhYU,?-LK9C68Fh>W6^\p1ArCK
%X:17@HH,h98>^9e.7#F)LZK?W8K=N%,+2s6r-Q!RFE+5Y9F=>r.1QY,`?>8X80f4O80i^"MZf,NO`ZaqO[)fI,UTKAP!Mtp,fXOI
%,c7OTOr$ihOI2nC85)r2,VPTY+Yc]fO;Om987"9@6NU#ZO;Oln830LWO;OlN8AHYY8]N7a#romHJYs>1SYm;Mn2(Re@#@7u@>[AQ
%9Mn?2.1/Y%.1-A8PsPOF;+N`@;+P)o'G=6"6IJ_g639bV83eU28Ok32#Uks)!_K5MFHE5Y!7K7]JJ<g6K+s"BOJ7g:;A>8u;Ca!o
%W>-%s'SW?&e-\cee-:ahC4i=5e-:apC4cYN@ZY\narl81-mWaGKqrch$4.P<+T\>d,TWX.,f1r6#oJpn1;++%1.\&d"pl!_+Sh\/
%'p?Qr4!\:**>1*P&kQT',n_q-(5W<0MkgppMaW*5+ouXb,R,4q$%PAdJT+LX3oEh*!#u=PJ3tLEJ3tI\E$ut3:(BkY)\.`"-A;T8
%8KheiP<f9*0M$^5#"aRh"po7d+9??s,TUb>,eskA"MS<+FM=H1^c)r?pkD,`q6kW7Q/W_i$%S4+deSVa!oHgF!1Xadc8QFMpkD*:
%hbZj)hp=UG)[Zn%6Qt]I6Qq#"UQ$H;$:uTb$42AQ+b=S\,`Qak,QaJN&cp8b8L'`?Os6D*&eWCn8L'`7&eWCnM$RaHU_1lVM%F<R
%7#809dL^&F7#\H=,0!b/BoKAb;N/L9&`RVg1re2k&`[\hLiG=D4r@pdUbU.)M&9l\7#\H?dMQVR7#\H@,0JR_Bp>qm,0XJXJ2o.n
%@h+1qbb:,K3>@Y%3><)cLI)(*:e3Y1:e9La$436?+mGZ;+VEp780Ao[8OFL&$*;#eJTVeTSTQ\Y5TL%8W5BbBW5B_YFVlBs:'O9;
%*=<+K6Qq#&-mY@*-mXlaK`ohtOEB!GOFTA+&l=?MdTIrO"Os-,J3"C-N]QeC:kq@=l;1#4l;1#:h.WQ[LI0EdLI)(-:e3hl$;!UU
%'b[ds$AhktKqu!!$;%MJ#)QGpK;>ct#)QGpK1)fI6./kJK1)e.+VF"@O>PHi+VF"@O9fu08/gcpO;-trOGJ$;8>__F<X+C_B7iUR
%ZU+/u3\)J8F`p<o3]eTrSL'H=3_L`-SLkJZc5&u]SLkJZ%Z:J@@?Hq"-mZ#,K`ou#OEB'IOMEmk&m0oUdTM>l!p`ZR?l]_KB,qJ=
%=GK3ElVL+jlS(k;SI?--LI'?cLHu"-0M'DK)'gldaWN>(ariG(A<=H+-\]L?S"R&h<sm%WF](bh3[l=DSJ75'lD0LYF](bh3[l=-
%e4Cf<l_KW0F](b:XHWWlek%#>l_KWT==8g@XE,=iSJ75'l_KW0F](cS]%KFdZOVZletJ2@\l)'[ktjo=3XcX`c3?ibSIH3oc3B+r
%B7m"Bc3B+rB8&aPZU3):B8&aPZU,kc=WqLXZU.QgZU#eb@?=/9O6kBk3$26A,U/cgP#'N"OEAq0O?gCFd<^?RM55b6M$216OT7En
%Oq'N(&jRh&`1W;_1-d4@`1W;\@aI[iH%A]tM*Y2MM)cr;jMa,.,j(U2&p$eXabt4\8Dp!P&p$eT8`uTP&p$ePM*Y2Iabt3q8BeUJ
%L)&l*835of8DkHl$)#0Yl(CBe!H]_8J.@:/P7E9Ld\2af3Y[`P3YW2tLI)(,:e3Y3:e2]L$43Lq+mGdis+#2>,`iLiUlu:B"O`8f
%MKD`e3p<B$^c<)A3/9iK3+mq5S?kO+c<2<)UpEBcUr+;UF;Q8DF;Q9R%YFo2@?>TX@?:IM'G<Zd6IJ/T63?@I8,sY;8I$7CM*Qh^
%!pD=/3pA=h+<:XmUmjM>IZ_n_8L'cH&s:HLM,7iAUnQ'HM,7iC7&[F\dSOS77&\!I!HhKi7NDgBW'_^/FXSLUF](aQ*=<+O6Qt]m
%6QlJQ-mYGqLSU[TLIA'[)c%:8:e2Mi0M"GL"pq6G+R,uF+G"YP,d7c2UpEf#$)k`a!Hf5)*H`bUTFQYYe=htGe=htS3YW3'LI0Ed
%LI)(-:e3hl$;!aY'G<rl63?DIOEAjCIfMMD&jV4=dQrXT!pE)m"Zd?\:-'(%:kq@=l;1"ilE$'QF]M%d3\)HbF]M$?FZ)e/3ZB?(
%FZ)e/3XcXpc3?j-SIH4*%Y[<HZU3)2B8&aLZU,ka=WqLT6Qmo*fcUmjClh=DNN@0%"?IJI!hBd`&("H&BqVe",1,!d&a1L&1sB)H
%&a!nl#]j)nNH2Hu6oce2.#16#b"3`WE[W1u%Y^]G%YY&.O`(Kd:e3Y/:e76!$42s7+mG6/+VEg48>$q08Y[70$'`=MJT;SQST5Pm
%:eh3$OM`4*OM`2lEYp&u%YLQU%YY&.To_N"'Tu3O.3q.gK`oJjOEAR;O8q9T&g2rrdNOB4!p*6LTH";1`uOp\QpW"tF!r:SF!r;A
%DR<9.6Qt]]6QlJO-mW11Kqr/&$AgHLKg_<76IIQ#KqpD8K1)*56..H"K1)*55pFV-+DI@P5r)TQ.>:0_ZU3)*B8&aHZU,k_=WqLP
%ZU.QcZU#e`fcY")ZU#e`fcUmkClj%+c3d,fSK/?*c45\%B8NFhc4Yt9B8]0ZZUN;MB8]0^_]f,)=<rWl'G=f/63?LM836*68:V]f
%$*Zc?l**Mu!Hok:^^c-q_[_GiYX9Q7FsnUFFr2L?%YFo:@?>T`@?:IN)'m!-K;?BpK*9h8O;N-r87&Na6=SSAE*9E/6Lo`!'GAki
%$AiIUZ"26q-\]LGP<ra48KiB,:'uhl-\]LGP="i7Sb*HA:'uhl-\^VM4"2GPS_F_C8g/Jr:'uhd<sjde2g`JPetJ2@3YW3/LI0El
%LI+n?ZU#edfcY"1_]TQVClepF2FnbOClepF<_.m).jPRH<_.m).jRHP'p=;4.jTg0)^Ib@%?cH,$ke]J#)Pl`KB.Z,6Qp0B)\.^,
%2]NIHDFc%4G!dGcmY4.Sh@5C=!H2'c,+^A!OCsKibd0V;orO7*4Y%eKHRL.YcO(!:ZU3*^B8$K\=Wr?E3$b&CG";a#.jWKf$;&,W
%#)W5'1.^3PP<nd)lcC8h?dEOeB28`RX0X1+`'`6683EU]Na<sa;FipCPsXI2XV?rMJ@6.)O(Y;NGj8$2a_U0:$Ak\KUl]id:(#*Y
%l:q\CVs\;Ej-_tX,d3UtkoZM-P="8s4"2GYR6)iCT"/n]R^nVKns[.R6K5O;.3tLsP=!^\mSHHA]0d`MmLFrHceY:VBL%JA6;J,E
%V"aL88Ef;HOO2Io+DLVW5pH49KgbhX$:t?X:e3u>.jQ=s:e2K+LI+lIZp>l?%YLQCE#9k;i%R^?_-rH'/b52,9.2'*eG]D=-s8;]
%DKuO799`bOG%Z+c:MHt=+d=O?g3boSHp+4F:8AV$PpCII\uk(X/:'#CM5jMp':7H^T4EfQ\,;:<N;ZEJ<+#5Qn]qH^;FofMI3:A5
%aAGr/Sj$$4HLN;&U,K'pCniK%01T&pE`J9-gRS)`o<O0VGWTHQAF@lufstiLe4((i4FNs(P!j?:^0<%C7@a%POt>j^`#\_s1Yu/(
%gl]q#]NHbQiXq&O;0XDW@XDF.Xtu5Mab3PI`VaG9jH*:Qn!CQIF``d1>0;e4Ulm0$W`GI^]S#INPrsQ^l$\gAP"?/RLi(<tC6LdC
%E1R!T=Ts8K4B<Jd@S*_`/Yu"6=n3Q;k&Ze0P?JT#lcLBnU2BXSRAP4G]0&[1Rr3VPb*+s'T9aP_-[B#.PQ49T+UXLjQ8+t>El=ss
%k40e4m&E0GeOa5EiqBq5FC<7`V28/OYH)7sW(unVn:$n](,M76Vh\E\6pfZcMN]SGotHGB47`4$Wa;LNP'C^'cpVV?]Fjnkek>D+
%([36d@CIKhG/a$,glaOE0]+okU]#Hc`"Rf.ZDIr4fe$@Em?uk^8_0o+L0>2t""IB:C.V+YYIbmf<(kf`6*j/rT:%J!%(0V;WR25D
%Q!''\G2/':eKr'aM+$gB-b]YbUsSr0+]l9%ED/JY\0XGL6Pf0@B"-ji4cen,%'Rs"m%==RTDeWP?iTg9s5r5=bP78cPYb]UQ%WWA
%8jY7[-)&!0.gZCSb!@b0je09M.gO&cQ%NQBb!C=#<uQr.*/hcjC]_G;1?f(APR.VmPR.VmPY"A!V+a-.V+b8N[7hKk.:iR5je3(e
%914%]==VI$YZqku(`DGS?u2(L*f;,"LsdH*LggXfM.-O]U:^bjMdc`4UR8jL.#l$`-ml07'E]0mjTT%>Pdj[qfT;OKiid-d2#b(`
%M>6D*-K;4ERPb#T,)Q(f9p<FI,u#;+?.).5*=W^2?.,Or(EZ*<77VpCkU<"9paFK**sMM`8*TN^7fg=0.DQ`CV:-5("o9F=R(a22
%?M#fm"o-510mr)X]\m!XMV0L%`U&kNnm\eM'XLk-MV23#apYlq;N+og.7ULo'[TK3)'PjJ%Nu#4+f)n8KTsbDKG<sZHk^7LO4%_i
%*sL<UUB!B'PR]d>'OY!7b%B:'eYKIq<DCCm=#CTU>h,XTc;dTW3`e0NlR6O(;!4i*6Cj>TP>4lq$Zr[PbW3$EEt0kb`Atl$a\%FN
%LQg.HLQc2m+f-#u==GoQTqrTKGUZ*&@S0!.?A_U8Qt"Xg9R3<A28uM8Gn[HCng4fg/oMr`\\*bqkOKr/FY6B4e@E4`Z-Llo)XL_b
%7'IV)'^T)\UqmNu7Bj['!HshZ*Hk=Z?l`thX@#_HYX;+cG.9!:%QC6%%Q=RDiMHT:glr:1g_A-G2$M^-VKCOcVLUbX'QAhrdW(&2
%!q,-H5WdbcN]Z#1E/0namVl)gEJL%3EJL"bmVl+?*H"Ki*H$aRLRJ;6:fBFE:fAJXC'qmH:$KU6:4[Y(URYhIm/eXEGqO%[jLN'_
%OQQZm%='RF,36;MM3-m--\H[sE$FFQV\jaD.50s0W#0ju.`NNeapWQ:<$p?KVB1%UV]L/AWJ@*Tl:Fft5n??%cpLYboPdbJoMAKq
%4WG2(%nYkO4Y.=Hc]q6n4]a[YfV?lOW96c#U7Nm+2!VVDM5]T0-Ug073bd)bTbC:A1f;bDTp%r///;"m8HnB&WH@E6WIR,_'sNIi
%d]nS(!qsu?^`Jq:`u^ZVfL&R<HY=lLHY=nGSh(VTLS`FuLSY(FYZ.8:Q:e%rQ3u,/;ZV5Y.NNkL.UWc]"mhq^Ht!U\V.1$1"mhq^
%J3>`SN]f36@1Q!7lsZl8lsZlD4Y.>PLS`G(LSt:J;G>3_PJWo,SM]]DeqpWo=sq1YCRm<K\^lVAk?97MSr9-Jm((](Y_T/dlsZp,
%Y_T8glq(54orqG&e3d<*/?0-Fa]*OoDk^#3p.A=&e<?s(`h$_+J\B0](A:@%l-tp!18lR+APc1:b+!\i<X/4FH33afHIAc_d1``S
%d1``Sd?BSR$C63*MOk*#e3*!JUZMm8EtcD32,?:,,clMZq'sD@b`J]1:Vr!o-Xk!H94?oc4UEWnSr=DWLU#:$LTppQ0NN]F`_)"-
%`epFEYQFJ/<]]mb<hLMN$IhFFl-r(&JU/.`:f#)'LE=GBd)/rdH5J0i5u5MC$[OR/%)"DsbWHan0BUAYJU%l/bWH1^0BPi.1%QZl
%R!B<F?HeV>@ckWB>`OHT4Na7;k#(gTk,I\RaJ8)n7il5;5TXK45TY&D)Y,;'!qPER%-0u`Gp?,=b!;Q2Q,1*G=5M#^\MDi@1%LE,
%3qAA5N'+0V1Cn?a`B:dJ1CnKEbem\"cpM%moIs>T4k,`5oPdk?4kDn1oN_El6-o4""?k@$&bK?.Ud<>79*@E05:Pg,r(2O4bF]&d
%UPXRDj\HfdjK8c6W%/u$Fep;nG6R'dY(/XiPn#t4'qcq"`QXOYnm\3O'f/YX2=i)s]U1'l"m3p41%XJ/]U1'j`QXOX@ckd<Gqi+_
%MO>i;`QXOYnq*Io'gkdfMP2sbNda>+H)3k=Gm3CTY<Y83PtjL''i>Kc"mY'LFR%hf5X!m;W/&"5WJA1hohnl5[G7LJ/"e`a;#s,4
%Es37TcP97poiqMde8kd-;9pOb#5)4%7FX\31%k$;?IZl#1%e@F9KaA](\Wqm-L32%*r\dPT)9=%%tV^L_dIae%u&!P_dP:mOB<Fo
%E*,ds,Sj;hMrdAj1_s$9V,0QCQU5E9UD/TYk>E^[*i2[Oo3B:'b]>4t@\,*D2!2=]MO6>k.-A&Q8qS0'Ml;EM!qid"3q^j%TH5!Z
%e3da1e3d_sH?^uK&!*Ps&!$n\a^]mJGV#D3GV#S\1_ua>`mUQ9`WGeZ=F_G298B)q(79lt!qYn`3qMiC?lg?sbemrdA0)dbB-&*%
%bemqAH0);Qio..uG\AW>:Duk2*Z>F%6Xp.ABIk0K10NO@R4P[ik@,j!G:nUoi40\^JELAi%<sL[,2g!KMLal)-j+]HL*GPaZ5@hb
%/2,p)ZP[r>/-[.Vb6rRi//'@gH&'PjH&'OOi8LsYGfVEhi*ir/Gj$[_*^34!Sobb>%\L_Q6YLc8%\q"UF&`qEc;d^[mp$Sr^iNKi
%!RFbC)Y%([AF+_OP"$&078Xun>SKWF)bh%:>SO"H]U+XO81(%Di=3q4n-+<Eu[`5?9Q`5?8>GUP-T&#H*9&#BHhTsT>4Pa7=l
%PSPDQUBTdgZukG=[(ne_(79m)d[>m<!q];mJ0%<ULE9%qcpMLJH71A;cpMO3cpMLJH71@1&#H+4&#D_I_e9't(bM;*(bK\;UBU'o
%Zuk_-C4U_oVd.m^`BDgAC#!c8'QMHA;8bWL7;:Ou>nh;)F]$(?(If:tF'TK"&#mP'_eOI:&$Nt-6YnLO0O%l=6Z&6Q>0K.2QHhXp
%(3:"gAT1FObF<hk>6agK6X&9/g=!MZZXnY_C<HV7jL(!P505AYHk]*PHk]-9i1iOEi1iOEi1iP0#9UoZ!$;AB"?u+GFRW-L"n9&/
%JPYr93qjo/^qFbmN4kVk9uER`(1U-\Mm4Y?jb5k>/RT+$"mf[,FR7+eJU5s#:_117;\-K/e3e,)HH7\/HH7[7&%Ml/+h)RY+h'^"
%lkZOTh9r8M]*7D,[fASXQ;?_tDX#ZWh#d:@/I-Wg><;LVDRm(YT&<8NV+0Q.P=+H?FS)EaZK;!qZ-R:qn?^ltl"@[5re94'V1o'0
%W0#F5kR&a_i2D_]"HEg<NIde4P[uHQNX@50TM)'h$B>HB_P$Q;F3oBZ$\T?LUB;p`ATRq6\@anRP$FlVB1%\#T_t*W%o@_u)"Q7W
%NtJRcPP9mB'ULQ4Q/aV(]TQOrJ@?Mb1#A2V11p>m\\)SNUq&Hr3[Y<eZ(UD\.=IMC;CTi\8`OHHO&@ETP##'XrFDs,MWX[^Pg\ai
%.$VRg?W\q-S)\"+djOssS;ShPjPj<+8M72L5$9M0jcefc=[#t@Y?=%l/fsIRF)gYER`hc+-dBWD5A;b<rCM(p*(4i[#Aq!O6<c(5
%KXP,N@9P:kP[#cHk0d]5gfap@i)#!OMG#=j'c0tc`<@)^EV\@b:&cS=>lLm?dskR<jraQohu)/W\,M;8P^i/Zs4+m_A,Z;Ns6>+2
%5Q7V&J,Aipqk*oMhu)$>qcWsuq`fN,].,n]%a,LC,/*rd11)iC=FNTCGtBmBci<t85QB%Wp`FtAIf:F=ra5ZVl0!P]nULNS2*uPq
%q-/cVh4MI\<2oNWDnTV-p=g,3MqB,$ZMYBNjISbEMj2od9<[mcqZ#errcOgW?i2`[V#R-[YPmYa&C!UOXKs[W,I@9VMB-?sDLNUg
%AGUBkW[P\%l+3L"'=[]JZJ^mKgG)EF`)uZQXP\fnG8`8G.qIr;Xq(8rYJ'eUHYO[IXP=mrXXT#4Zc/NT3C["8GH>aq`o.MD\P[]h
%cE+8B<;*`J0ofAK=R27M:OfBeddoS-h_A0_\+B<;gu]Nbo-Lm/n_`B(CL<7D@suJdGo<0\TmqO5D6'JJrZs@YjB2@,1Wf"QGMMls
%16H)!^>m]/*RjY.b=^.NQX#Qn4Q9$5W\6B9;1*))IE=KU*67:sq$]$F]lq!50:DQ-,TaEJ))G@k2"N#'>e7&<^LRc/A*'kCa^rWF
%<PIL@5<jTr/^TiCR?Z@p]7%`_%mM_Zh;<3YWXI.>%+XVK7IB\N?I@o,>BiUA8pn`:#&]R[IF\]$N/p+$gn2m@T#ofnnGHPUoidV\
%(tkBo-6jP9KWm,;UAt/gNeF9XWYQgZCh#muVDVh<cEekc[iA3ddI+Q9Psr,LU/C"3n(u\VPE%Q#$%!)gScSHS$h*Uam@e5G=8_eM
%#1@d7;n6/f>-i2F>UnJ!GOfBpcLh[Jl1t)&,P@ApOku@QHIFM?;l2qCT?BXbSP,7j8CM.n9,<^&nYP5/d5?:M^GE5XY$&KWVs&5=
%^1K+k+-Tl5ZR%B0fDTj:QKU=sg5)ob&l8.@$='n`3[;s(f!!a>bJ/$;Fj4B-4*"T:B!LE:`,F2/=\ORj"?P-c(0=rQ='`,!K4"*E
%FifrM%cs-20opPG^1L#374qZVB[:$l,&;o0Cs`Mj(G/P`QK*9s[('U5&'J59-sO1s?h\egC?*CV#!B8'*fH&@G^a<*s6&LH53f=o
%b<GmI43mH/k!\.@<9a5UWr;R2+XWLlmbN6XBAWQ-3H?[Who[c[bA0.JTRZ$#eUHiKIu\dqaP89t:?BR#T-p7ZU&`;_<.Xd\G9N.B
%LiHi#kq0#sH&2RQ;V;T,'3L,k5\H;V0WA+!>tZ>f-HT*lE/gLOR'2^3p9c$7CM-nZkH`G(<n0X^'S6$Zg-ppaNd+%(BPZ>@ZS,K-
%8Z^\F\nJ.ka@0=N1TD24]P+R9T'<rUU.+Xh<m,K..Vnj=>dQA[a6e7[[((r:Q(*]?Ss<I"79^;Y"7;go#!letlCpFKoj4XXE*fn&
%Y'4bg[,gRpp="EdU;cct?-CCdoB*[bIF7VW^$C9ge6Je[-Y=[obY,Y2cDbuPSn2@P0r9-E(./JKK48Oj>9Cj7p(=?a[E[2=r`,a=
%kC08R#Hi]?*0E/K4M+aS1]&4jb2I%l"s_OkLo!>I3:;14Mt]5q.lniB*KMYah#B3c[/'1Ng8AHQ541T6G,uFKE)i5MHQTf@rSV*'
%A[nnM\sCG7RB$G\]Ni1hn:&^_a&*f8k@ONomso%-Er!!eUQ3NaD4@TNIb>nSE2fDPo<PL']g3F_X6UQ"R;:Ydf.HhTOTigKbPk2"
%6.'h5rljoHCtY?cr91FtIjVXVXihLYR5HqP)4)rO1KRW4X37rf<aE0#d,]eq\89ilWB$3SCtYS/*Xl>_GT9f8h2][EYat(p_.APY
%STuUArGL>FWa3%nEZ&Vece@kE-]3(S[d5/K4n!CDU5'H3Q<^lb+iUKbQgM+Lm2j].&[#>]O`D\U\o-1i]'%[f>L_Ki\n)s4dMd8a
%U5sE0Y1c,=rINH>s8Ei7ptu#>T0+@,J,]r2^3lo!Nj&;/purn#hsk'VqCd?tDu][krU7,bp\rhfs7e6sql>5>oCDX*RXY7BkPtPW
%J,&93TE"X(;#PVuQ%Q%h%ni6]2MsHeK?H,CnR]DnU@)/,KCH@2n.Md)987d<^Ctc8J'?C=T73fhS"DFbGKn-cT9G?ud@6,7m7_t>
%:<L<KkhMnpDa43dr"!!X$g$n=r;Vaq8@f[F@e*X;--_SYmL#e_=J;+qr2Mu*?iJ>HLJMOp0,Mnok8Yrg'2[4II#fA@eZV0mUGRtS
%I<hDX::K)\)30,3.X6aH?K\a\:IYKI!FF=I&sHp7eNhDN<WaLJk`9:^36s-fR=9Ab?gH4mfPY)'g7S8%n?d.g@T/U#ApG-qT+7<A
%qMc[YkupROSoe^Mb#YY09'Y%NScP`)l]6giLcI>`g(@K"3rY$)@/`daSkDWi53d>u!uU4DTgrF]22+YNriEl4YclCk;cV@aoS0j2
%Ik<<A^6ocpEC=\C"OB\6al!9NX4iR&[cq#_d3hpJ$M@Hh*Xt6Q<N@i]q5YFd/q2m*W2\_OoYhMD,h8HC`/4!HQ\e@sGGg%jRuE"?
%24;)IfAB_Q?(Uf+[;o=$F,JnY1")3KCJP21K#cpVWZ,!tm5R,2(c3a&E@X0SgRY"PBdP6."-JW],ma'r^@P*'k0h!p(3W4'j>lMq
%j+$8*,h6Pq\sU[B@(p5'GS@\VH`9JE,.0Ua`O/aQ;_7f8n;)a_Mb!6o0o^Uf\EUIi%IBqXf!-r)X'cZ]W8N'5Ja;Amh4oP]\BMd#
%dhth<[m2:0<\RHFKTo]-0Lka??LFNZ:#W0D?gV1r&i'7GB?W#+_<3,I#%CcIRLNPeHZ%9F*K?ZR_V^eroIf/TK$1m=Jb3jQI?45/
%OlKjY?cAW#?CthF9F:=Fk)O0+5V/Vm\)"PLF#=l>qW[L#IQXKhKDB@[4W[OuEP?nk-b,KlUdhmRVs$FrU!G=dh1G\iQWT[1I;eI/
%&GlV#k1`6X$g:!Mq!B^g0Y-D6c,EaD];uC14f4EQ=24=7lh<);iULB%qXhc![GCA@Kj2B?jpU7P$TE-;XbZW$XgLXD_=$JramZX^
%jeM+?4nEE,>:&Tpq`(jie])4i#%EI#XrAu_JG%1(]ft#:<`a^U#lDU5oON0+2'VTa<)@^m+ujRda7)$23`*H]p=Q.`lRmp`\io3(
%FrH2%p=2E]rKG3)4"nj@&d(\]lLm1]IGM)([2VK<aHR_7c?=7:VA">QL#h#kkM"[q&Ua#bH0;"@'6)ViKVs_4i`26kG"-n*kjsc-
%o"Ml9pAS7iimbBE#ChY[7'bW!e+C02Ynoh3j+l\8Y3IIl;sUq50eCDlhm'f7o^5]7:XA,_U1/?E*YCM`Om3aT&#Z3eJ%,/U*q48S
%V^8bjd7NFT<<W'II62_CmcbUSD"P&Sh>'\P?HRN=5&\)i+r5Hngr[TZ(QRqApVi\Fk:LmJb1$ds[q?,6_(2U4Ju<RNiJe'qG@UKH
%n/g/t\A'54a&naYd$;pD"ES/KIE+a#]>/@=I,>W%GCIQaBeYt];D+(%NdYOi(je=/H9n_?kK!5L5*+/OKo_FQru1:-kO%\Bp)`hH
%e[JfU?ti\rq7+(eU=F%dHJPnH:dr41^9KP$"<Vs";gT7.1:Zi?`_WZ?@]$tc9tbRWoJ=b)?.Z=,lH!J(B>?^%D?*YHDk=iohhsK]
%G`Shq<mR2;Y[G9/]s+(h2RCDG&XQ_<H0:0V>6iTlFRbT.MT[rLfPR_Od5lI1m?"C>3caDE4h[]^bu+PD)e@Z'*LllaooMT)YC^K'
%B/$fOUOd^H*7gIt[%pX:iuZ$_9XZ_;r9MWIIr&;:Hd't4E<b.KYo6a,d6PEp.NIcrgp]qVOYs`#j+!EG<*(7"',A11U"Z6a2P.8>
%g)&$X7gnudY7C!rUIWpM3OX*A2/ooGiI0%1#dS8*=(.O."Z'RQ^V[PBCGV$B%usqu]JPb4bdeM?P>ks0n^FQK@/%p"3A)?L$jLjb
%o+"i@3s`is=:N2\8[H-Ina?L'eKg(eh2YLOl+2!F/FbXZe%,#re6]1X4!0C+s1(RUIS1s3F6'/-AVTB)hg:h&*IIXDc([cN\`h*S
%bZ4g#hHLN-GF_#bk0d74(YonTURYt7Q:X%0'Jna(n$m\VT(gCV1X]9K3dDH&+%At0lh/]don7D(]K1Zo?[2;Z1OM"1?o\Ng<DtW5
%jRYmR#P2eupNF4><aYA8O?X8ZLLK]tAghP;c9If%<nCM1XV7)e&kqR2f#N!J>-liLLM5e\/=mjOT8H;\md$^PM(;;@qppP#gp'mM
%`Zn['dWY4Uc[+4f33A_!5r\[)@kU'n?Ou[L5F5p@Pbt;>%.4r;^oV[QbB1dDMQ`JPi,@ncj@1c^.B$XS'C)l.]7NV^3Wj8d$u\6K
%aVf^&qdS#^"ij.tK@N5g)D3'0(!LN"oc,D?H$I!P=K*3pmO7hlV"+,=K6*#DFht!+%B)[4I,1j#L$kqKIaIJZ^?"Z!SS2E/gDC\`
%bfGY&D[OsgI?(0\Pi6E@Bb"!=_>?'Kl5Zt=h)1VN<e'Q$m*Ud3'g$"_^qDU;H90!L;`$]a",$3F%>K"FoRpfMg!aHaKYs-\c9=V6
%(6=K]@0JSr[s+W:emCMpJ+i3g3fc1K;B=$GeaK*s\ikHS@6K[H"!&TdNCLCGE7L)?Irt_)Z,UnAIWk:K4N@kFnGB^1S.D7Ab5=ha
%ok%QHdm40#F(s6&_$g$50aU\d/7me$0,DApk[FT?1ULV%FN$QPf?1StEOKSH4<T6&)p)Z'=:N0fjMg@4U^1=dI<4\W7WNQ!/\R'c
%mC+HY@eIEhGPg'*%s#EWL7$"I5<&="X'fg+<PbZ;f=n`YalDO%,4#nN2NT;pCC`l,?>Ca4?cpC>o2K(ATA$M(8*ncD,Si(sbF-gt
%$Ep%J4^rok(o^$r_;;e\'hk=%0$V).h;#)d-gJ4/s,T:%a@sbG1XO3MG`-@W@-H#Y?gN0ISIE.n_%h;^H'"<OLh_.;2<>/]i$/9]
%ihsj4]*c!m`t[?2IK&Jm++2t7+H'W-9[:D<IA@-d.l2!3oI-bkXV)h"PLZ3?=VNrAaAK^i[eO.27dKY=j_EC)R.q[G+i8Z-*</KI
%W^U%GGf@)`D?ElLg`fE&>5eD<$Km)\\Fgi%PZ6HJSoT=8V=t-11rGIi5AM>iIehAj^?54*T61(WiVa"&hQmGT/\!Krh[cSj,.quJ
%1-J^Te\=4&d6F#lrmr'b9_/;EU*'(J@D;qdkb-iCUN7Zb5<\jGgm:n</mDUE+K9hapLb''8cS-)Fu8[f/(YI7d3&D=CGkY^D36QJ
%OkTV7D#@Kj24gM45*'gXPFg6N0$h)cGL:ek^V.OIWc=WP.=M3maS;^c(4So`+OYu4gpd5BoSf'@kNFF^FI2k$kOW`/@l!N[0=f,7
%Zl/?+4(CcTs8>Y5)O&KE5p=,@"q#mH)>h?=K6X>\LYe.bI4;hLN]fSVi6(;ZEnU>H7_W!snt-\-e&Wpa]u>J]*cN/>]n5`1Z@uP2
%IY*]&FBmL8T(m<TL,H6^#lF25B:l5eFY2VAe>2aNN6.&-s7:WSl7i.o'#gsnQZCt^-&QO3bi5f6)AuBGTi93MUqEMD<J/TpF&uYF
%o;YN(o<2.1pBdE@NtN7Nb'DbiG#[?]Ium>FMr7dp[3mrQDS+ZLJ,$"W6e.sQE)+(/[s]+(/"#W/GtuaZ"k1K4/+[#M.UJ782=%8k
%pU0uuQf5P<.WCp8lI99M?@Xh<ZA["ONPSHqF0R.Cbi]b?5P9:*^?X`_jRqTSc_YNNaG.gBljmuLW[_qFbk]JTp'Oo=EG-V[Urj@+
%B"<XLZ0BUgBc#p2jrQotp%bG5QZK2jh<M"60s-m1TB^XXohXHbBDB,bb=?#ObSbJ=Z9.Z2%o#UZfWb1[A#f!(&):3tm7(DO/Xt6'
%Vl0$C9=!V[5*)/9I"H",SBQ+/AJKnN*h"lC%[^$tM6`u;Mq%.%CC?g5q"'3b\i>hK=V(8#h$#%5f)Y%A4r87?gH0FQ@mL$@X0m]]
%?UYs*<pY:%m/PIeq3rJ`?:V/,eYAd;jg]ua1Z5H/U`%J.Q7"X5KekY&pmXD<W1NJlh84-T6_fIXRY83sVq81pbr4akn9hFLm5ghK
%IVIorR/Yk/HGiaKLu;:HoaJ"L1Ra(g?Ho%%j#s@X);Bm7[c(,F=P=a%@`.6YEl9>0o+PaG!nOo"kM3s&JkMBr8P8%lonV/b:Yqhl
%S^!M56;(YMo#=jUr:)n/)Xc^r8;Sf,c%19G,=R[V4GU;Yju5J>)YCS0p8Sr@XboPm0BY:n_b]qg1/g(.^tOLL^2ZnQ5JaEmEW04@
%Q0Sq+I2AYf?(8/aPa>g>e_M<qXl$tHOgCKlSC<*Qh-;C\+%r/$H7p!IAV(QHmsOr7qKruDWpc?B:n@KjD0LClZ`EZJ=L[Q?kG.r[
%S8:,R*I#5NcH3Obm"#qTe8qL.:$(O[>B=`_HpC?Gd;>,CZ[>#Z$]=DflCYdDEhtn``bi8am^Dr>j:lEbo4?.Nq-K*Bh-K5jrbB[_
%-TZ;!.?7D+;N`Eu6gM[2H_EPui`(>_.`NN:iejo+'ATsnP/3U&H@kG:5/F!p*V7_?dV0Bth-sA=epVWXf6hCU^ZrCg,<mN5Q>QLu
%)^'VFI%p%0Yj5%1n)kd!R:+WRs7#H64iO]p@;mjL`k71u[Qi%R5^'?'?t:ZmRpH*[#p&Q-.7bF_rM4^QJkhHt<"HiG]pWT8XRNm?
%Z4>CuSF;&I?LKQ[lE-/[Y[k3nr^+oa5B"$@U>5L2>8D/*&/BD\\X<XG[<nlljL#u.qGZ.?B+VOXbcb*WB<N9Sd*=oL??erT=#0;B
%7TR1Sk,MUJXlaf,J,*#s\]7&LXr#[\ZnGkKk<kCG"b0>r0fO^*bBV7]om*.7]r7<:aZA0Y$k0@N0WtN/p-,eJELq=8n`+:bnbbZ"
%8]odG;NL9P[o^jc'`,6VD<K@ZIp0=0DIa=(A^/XKqI2d>3V;q.JfSpn"AE$JKBS?qV;<Ap609'/#7oZKf@+up^A`Tne+>_VQ*P5F
%T-uu:Fj/iGbS@H+hOg3aQ[PT5*e!I.Zi4k9>dh]R=u(KUmUU<WO4n1BGnal8]Z,\m0m=0nDe]EADO]es5?Qd]O)!U_=+6]'[,?>-
%j4[9h-J;i9K^#E_o$m;VL/YXD&^^&QP3GLqDXICIeN2r9Z:F<1+_4CEZAE:IfYm-WY&<BDAN1LflA*I+<OS>8P5V5+[*7%BA$["\
%FXV?W,>!-\(LA_Q9O+"ag'"j\DR\fIk&S"TLXeY'e*^u@Fg'N(4g3jemIg9:l<NCc-T>u#o/W@_13P:'h,Apq>f%nXF]MZ?,(G;G
%:9sm8m_Mnoo4tCecpO#<g90?,)7nqA.Y$r0:U>W8)+bu/_g>oOe?QR^?8ooJ<i`bd'5-fb2m7TmrD0UI7mM@d\Q05!qRUa%QKXn>
%6-oOMeX/9Rej"&3d8G#,T6?(%OWWGd^Xanf2cIq[+r5AQ^\__pqu,:-]3FD.5Q0I+otqa=qjY%^jmR*W]U+-;2#QjJq7T;bLQCI+
%+5@rDYi!(&5PuB_J$;0-dscK[r2#FubuO@?Vn.U;\e3S9-Lg0B^mHR:Ci55sT<PKmY._4nR!H'l-/qAgrN#&S?UN_cZ5@>+s*FS$
%MstpsRQl29rpWqc40S#n^#FOo)>Ln*_[egH5O=F.kgf0LYE9p@E5$f^IJr!rfT4p7.\i*-ju*5Tbl!oW3jNjg7OCdao!.)mZ0G&b
%q;luh1pE#F1?BhNY5(scr];*IrQd<9p`V*aS`^IT,,XX57_ZP\k<.U[or7C)q5HUXoFI<<4DML7ke""Am"?W@jW/<[D`6GNe%'^'
%6bBs$5U",S`X)9d8pfqSoC_-;Qf8cfi1)EjDD!<d6rn1f1VQ4>L\mJA"+nLoV07B<+1oInUW]qrqkeWYh-'7fcB\<kiUe<M>\dq/
%m8amo&WBqhK)<)3/bl@bG_#PeZ.C_6hmJng$$?IBaFRZWUk1JSMoZd#Fk<n2X^_o&q9**bXp4U*5MjFe[?Y56-J$l,_(D"!If8Le
%HL<X,G$_lc>OIrU@#jPCO9VRrq)gR:gdRE@B27>sE!\8!#1Q86aDbl5);]Bj?h9#]^-GH`kc<u=*3&rUec>5gD!`n,)r3![b;"GH
%0(q8FX^%--18.gdl)ZW9>4[O)KFaN;$>91i$;Pe&YV8E^5Oa!V,PJ18WRK;\7qV#3\g]I@GR%_tHu>PC,J8;Z4R+mYg&H<"_f[`(
%be:1T1%&Fus4Hd]U:599q2UDDmut<;\N0j5alVFQq]Fi.5(C]A=n2^Lb]d*`WSfUO^4EfIG"iNYm(W0p/EX0PVG4>\&&]CQo%fEW
%:&]$HO.V8i\+!Q<Mr;1(D-Q\AF09qHNB79R4?J[h4R9+ZgWdc0G6I#IE<:e00:G;\A_oWo(it/LnJqb-8$soj&8]0bi48<;@-e`:
%Xku"?<YfZYeQ"ai+'lRpXIM,!e\G>pamW_@O1!_"keZ%:RKa$JYH!3?^$0htB7=PdZHb>U,AA9!$o6&l7k>No9R3i9]mU\j[?:_`
%GcD(crl:=.4fI<:o^,ke)Gn3?I;HX+FCk38"n'4jgYM;K&rk]R<rE5jqGu&[R?!P*GOrOS"=I(A\k3g=0L,@"hs26a]Xt8;-[:E&
%3dZB9f-Js*f=GG`*+I*KI(;@(4[%>_]KWWb7IXB\lfg@la$r[N^'_'gCCr/.[MR%9S:.sU:3S;_/A;MO:[,5#j:&<uiTII9?*@Mu
%S7Vs!\m#$2YA,1[KFDX22S\[N,K*^XXS5(5;AO?gX1tiYU9>g).S>i.W?0>#dgkkpSFE=2M@?*JV'S6H?Lp:gr!<[M!V=T`+1m%#
%UcRhcT(pjl_iPM^Jq#V@Tq`ADFV1g&Bu/+Kgl@pU5qC^6RGYT<2"6GgF=mFO;ft)U>R:ZRe3^sI>V-,GD/V]YaGI^Y@r'J$Y8qQ=
%U"f^t+(esYWhnWYXi\U;Sd16-?bnPHH24teGGGI\a8=Nd:_%8I55O[Snp<Meb0OSL.]iILGNgEWi"d:&hJQ_SB6Bm-\#MIXI%Y@p
%piXmJ'[P(5Sc/Z9RaB8has'Le`gZ9oM`1$C<hHF#^nlXsLflU%@.]+t]'^f@OQ%$Y-baIFI:Q0<?p-L"_@0dqK^"cW9D(aEa,.Lk
%GWs_!0>p[IescP[[sZL)"OE8ZN19T?1AOEo]unY?rb>4gNF%e&l5-Wq#(f>"<6If!fWEe2#n`f'fW3JN^5!6ec;9!?nNbX</!q<7
%o8$NQ5!E&.5VR%:pf#i\aP_B9ho0W1bF`u<kCu/>br\RJroSCIPiAl]@)#_gKIm,"KsFnbUj$dY<Ejs$L%jk(<\Wj*j[6sjra+jR
%hceP?\8H((5"G23RKKiW$@LDA.<@Ep"W>P>*g5AW*gD[d4S?:XgZ(@qU/[]/]&*k?Khm:)8A0`2Z&t&^<ocGr(#2R0+G7?!F0=eV
%C_*[@mV+u[i]eC7CMd:lROaEUQ5R+PSE@/K_9O][`WU8boc@#f:W8>tnPbC-mqWE4?:Smu1(m:g'3EC:?FiidXggQE<dJPQ("6r\
%<3fT#7kIJbafarO(Me.`jM:N&g)UdcPPrksOf<_8.`l/SFGUXD?Rh[Xh#uS]\PD=lA7<>9p:M9eht*ks\Vj7oA'<8/^M:4IY$'e.
%A1eMalGs+b9(n\NNX.s-c(Z2NHT1b1mU_u3M&)X\$a,bDa&nMo4>Jj9hc8c8mDm%F2T6ME4cGW+PTH!k[B(Heju-pB;Z.MD67@<!
%C\aJI\q4JiiG#$eI[1g$C$?cS#I5"h?BsVTQZ^[Us(i^Vb`"`N-PP7al<$dJSnAcYq(=YuS@uf2_E:idDd(gMpViKDrkSk\>r<;o
%5#ul3o[m[9p+pr<JFj1)83aDkk#&sknc8N.^eq*8%HKG9)5_1o7/t$9f"of64.&R3!Q(F*aHVWVZOFmf0R*%ALDXe^o?[G5(K-0c
%d<2u8AOhI.Vq@\u-8s9(#jsW9n'adp>EHlPF1U8Lc;f5&hCH49&IGJ%0F`t[DS/<?..RM%e#hIc]NI.Y'V5R(.c@:J]^EAR.>^I;
%AQq?MCMm?@ma)Qs;I0Km;fF!Zo"-FI<Qhk>aX=gJ^9k'tbBB!cH(!c`TCUY(Yg2s6%mSIP;cY2PC1S_=ZL2!]NnbCO-WZ/`"?eiT
%'N3YiCDh<G4j`29$a-m$_Yhmh1Pg;]02L;5Q)+n,,Wk.^ZS(Woem-oXYI#pa(;*tiSA=e(.(j9_Jc&]l=dNojY+4)if-^pK#FBBQ
%fB(k#:h3D/<Zu0Y.TsJ#p1\5,:JfUUeW8O$"1<HKlQtA=g&d9=7MpMibUpaR\"3`+S!S6Ro1nN(\V*cQQbPCRos.he>[K;Eo;R2r
%Ej,HK[XBC2f<b,D=`;9i;B'c!DhWeqpNsTo'g*jdHTf=gceM"Ze.h:TV`fXUZ/4em]T6oj7VlC[0-<JC7S8_$<<om/Bk&IY2\l[7
%<hJl>_6J`p&SMQl4Spj>\V/;l0._J[T)=t44NULXcX!a06_9U\QX8!ak@X)SkP+TF@-nBu):#n>$D(l>X5g%)1FI\.1Kh3]2%k+U
%f3c\d<<m5@$*%2ok3iWQ$u5dV+1m[[G^2KS`V)pAhuP.:Bt&s`X+)]B.\4u7BAP%h^M62>SXFY;9^L%P1KVd+::u?ldPQ::?T!+Q
%e?]^mF.;>GQ2VT1W>[@ri6CCcYAbH5`?]CSpr""N^J*Ep1XAr'q$NS[DoY=r@3kt>X_+ukG>PU]9Z":.UorTTqbpHID`q2Ab);e+
%jKr!.Y(IlJ.F*::En;2u1O?lf+R9;9j8SXPc#cB.L@bi(JjBU-Ab<]t9s:tKc)e6O<dOD1mtJu9gnS?^q%\p,4[+mS##SldZsUjD
%0GHX`649tC<IUp8FMC.`%C(NNZ!8m%<.&T>pHEb1L%!S6:R*95eQ!OH$4^%a/Udj^V\Zq^=VgOc7#XK3#Ks*b]7UhZJpcCU4oIS<
%XNc,BQl:>uK@IhSbRL[)UW:h^<LN3IO^>V(2;HQCi%)<Tq\VMWE5!tT31WadAP'l;96Vtd&EEu>l.eL`%1R+5O6&PL):Zk@62t?Y
%np0TA%!tZ>Bh"s'T+g"HnKSU*Pb=5YXAmW+[-B]lcZRgWXF`:%Z/GN3>8,[e[V08EB@c.-Jfe@YII'!j3qi2d`/*M9&YEuMY2N\+
%UaHb\Du:Kc/h_X3nGZ'lF6AukV*D@ZgagQ-hC[sGYZB--a'P#9GNB=Fo1(K4VWaeh_W2l!]-.*>jpL-u*]IGA?.D4Z2b.*SAY?K<
%D:`n5YH`&nU1;dMP*@+G@6G=;k$!^?O9a`ih9I+_hR.-/SH/EH#Tdi9g;82.c./gpJZmU&X)["FUd9<1.m-DYEAQ("EK.D2o$;XZ
%6/)((i7u\Y"KW#=gbAZ3;>'bcS]b&L&Q:,=49ns\RGns\fsl8dWp_!3?h6EBGS-HJbdb$6;MLNhhQ%t;Uj(@)@]t`jQqm-F[$3b;
%;2rpI=)GNNX4,dM9ObYe]RVlrCraO@^r[i(e*AT1eMM&!0ZMQm>`N8hIt99*/:>$&@,U=\)h45-rL+o\VZ><5Hic6-m2I8qX_
%3K"L+e.\(i>X>JXSp,H!,KO'`>gH8/2AY/W&q-,ArYZ\_i>''a/A'==P?Gm<J,I;DVb>BB_.DFeNf>(%E]kXcXd*^iD;3YXF?aMP
%%B^_P.iYVUL%#H3?DJ[X6?mHqWJ3rgXa7RGWHeX`hh\Hi'-C:m.9\GXP==JkT>\"1Q;^cSol9=>3HTSY4@.q6r5dVRno7./2VZF5
%?.\Sq`eC&$gj4PV7X3o_fPAZu>0GdY]i<iR`V?r:TQ]C"4-7s6TlM,B0KT)h]>?_$(!XJbZ$CHbpQP.4;=gUe4^C$!f>k.;jAg82
%9FcN1.Q-"?J]:UQk>;Oj^F?fpIl^rQ)n3,sX4Tg8\OJlnm,8/emq"VT8,9M(N^Pu5O-O4+b[$-f,KKtQqbY%fNH7>Jmq=m6DVh?@
%XeiJ0qRh&P)jHF20iu-%/`FZaTFr^[3`"bp<S<Cl]Sd-ZAG&$/rM"UBn*jJL*>GD%#s<rW@/dd15Z;Ntp&iR%@F!j1VWT<#lDRc4
%o9`9ub@/26IM^4`M$K+2iPh/iWb7K\P5`h9lF7h+0`X;#QEf&].%mVIbIc5$P1.$4YpkcSF(D"jIBUm_^dETfp%$t-46,0La;\gI
%VYfE+_qi54"s9JRI65J"CkPsf3HHaKM3FHqqr)J/Nt]eY(FRi"INuL4lHM':'>Z!8]^Oe<Ic')rqWX9BIdG@%Ilr!$9eNo%YBcG%
%`JnP=R2In=&UN%5gss1`XFBmYik,/AJ+atVM7e7I,6,Qq;`8Z4E)S!SUXfM;b"g[FFbIMXKU5<oq"E+VmtBN<+$[5-f2?g9F)rpK
%01BmIL;8\Z"lroPXuiNZM61f[=d$L";CF:BXFg91XU3IWGjtYRf.Ar#$M^TqZbBgQR(YETb)(a>j)]AlX(0[CR*J;tb$_*[k,D'V
%AYN27e<E(=AWfE!pW:]WSE$t)2)/pkZ0&+;]NH9>>,opQ$bpEL<P14aSVLTPg%=fo&+*87Ao3,lmhf+R$5>%X0(3,4Ad$^(X[I,?
%5'^1LPqGCGe`W4*]*QQZLgXe9AOaLYN<]+*5B-;GBC-q>"tkMOk=4ljk,Mkm]h/fl6T*8T]BYB822Y^K,aA<N-SWf')pldm(=^&I
%XD-.nilXY!-UBQU>A_4g_4s%L)9i&rX5*dUTbGU0hJ1uOSn8,7RbsY08iQeF@Roh1?an6^@t5s<5*J]\:\>?g<SY'\[5P^i6]fe6
%f\D+OZ\4,554=U/DDP\@EV]4:,IhXERElt!I=BcPEZ**'djc1Jf\&N-X%EK%_e'*o43p$47A?3M^3<lKMkPBKBE&,+/KD_V1$?]*
%c(ZOs'S^t%5d<c@[-MPKgGQG2/F=k22_oSj<s-BF]*_M6HQC$\G#VO]O\)E'/7U]X?6's,7[X20VXn(M!?^'bDAUnU2q#k,Z*$4N
%bN`]#pKst5f@gCK>dOj@7UX)7_<V!;$!?lCI<bQ:VR^;+A!cG:+*c@?:2JatNF-_hqZ\)9+m-<Vh'KK1fl+UW<8U_<qCBX-g2baY
%9qACao:OsO:L%o4CEn(p4C_^B$<)BW1tnlSXiX4kP&UF([iKYI2r19@jJP-!96X*tORr<S"'V("=dTEa'^O/o_E\h.Rb*u)TO>OQ
%k/GftY')[aqks";kp6tYNCW_@+1R?\)<Apu%?T#3SI$e@N)`V*XFk_"I$l+aq"*0UI:;+AC<A0d@[pCui6rG!/m>0aeZ2^36`a5H
%A<g!4T]U"[X"r-8(#A<FjOh&SUL_s<[uJ=ufHbo+ZmNs)mi!jq`G&,L1I_KE.<U+b<;Q]lK'V&spO/&tY;b,nXHK`kNNf#kYqPeO
%WD%$OW>\lRCO&&]o%5/nJEJ4IJNrANF!`DorIWV.WgDt)]bJq;>9(.i\d):gH`L;!?F)$HmBcLFB]dUg^cee^o<G=i-)GtUNfge9
%Fa;QnN`LXEA[uK6%R)8ESGHGungpE"0G8`9[@sfCaC9HX0Ug^Rl@5"iD']RkHhAc+qhkY\I#'MuXfc@8\Iu2'&`Vfgf)+UPBRgre
%T'il909(-fDHYijlf%:$kT30d1aQ!J3PHDfb%#NMZh-inF,`\;d%rm@[BV?D+7Jm<R*6Y]1:GbtKW2U@eaZj>VRp_KT%-)B-fhb*
%WYK&(;su1U07=jfqDV@(q@gO?T#h[/g<J<f\eTBo`[bdTlW@%6euR6IoNl*c0>c>O[hGg8G1jJ$lj?bZRP%oR1EFLAT.<u4aWMb6
%qpeFSFILF&JWAXM7WuuE?H:nJmUlV8_<!]u4E`Y;DXlM3qjYHk@T7QQ@To)U,$+28prP<@NFoL\bkn<KCG!(8ciRSPV<]=^G+1-D
%OO`7S,-#Pnq]DuIK"8bg,raQ#?1nspp!^kY>P#5L5V[]1Eb5QS<UZ0s7WR>hC_6)h\*_`mTUWPfj[s.Se5t;>0]77aW^'MAI9'+f
%U]oh`b\p<R:1pQhr2GtEjp=]NMA*n&?eW,D/p14er&t-;[LbEDfe>E$a(cI#]/R7Aor?qDs8<7r#7[1YD'N/G7'p.PP=.*KDUVZH
%:H+sB[FQFZSMV.7=i[=i\V6ub/=hu!q,DKG>4UQko0"*eZ;.cQo7S)&;iIDK0-k7q2]#Z4@>uVGD6;!Ffs9/Dk0CrkhLnc*<68]A
%D3J2?ojhcDeTNG-(M5_hh\=?fmWD\h/`c%]F]sL;/a&?5bClC#p@+0+Dj7ZplU!+U/[k#U\UdM"QSsbcnH18+,R!cQS)S<KFM%"5
%,habOQ3IP'II]lCXfM`V'p">]GC%](p>sT(FG'p8e/o.dI!]^&;@WD5F4VgT-dMW<^'>239/esQm[rsu];:'o!Q\EJo,HZ]<m!4>
%T!;qJG4qt5_+@GH0m]Q+h66et<A9>uer?@X`Y6j6MRR3bBOGldGOtH,Pl7-]/g]n%BDndtTAaUNB#F-GDgm]V?(80XE0"?r_/o4W
%4g38KI4H1`O[6Zd,R3>S=\C8J^A5:mSQ$&'*YW6$`\4kQLubZ7n45(<)tjqh3hn'G/G9nn5pE`P3NnE,<Ymm,cr-%OmN'(n4MdR.
%F&d1"G>?Ih`+JF*mBW\:hn2johd-F%5Btll,(_iRWZM878,-JTj&0Jk<2na+cL)&%%%CR&4F$bigs=do<"Y?!UEhMs=,tLq-"qf\
%s5LRlFXU1K7r?!?-$NY=_AhMe;4h31hf4)!\dtRMe'8ooO>@UT\W<9th)>0%>5N-rKKU+=$'KSJ>Fs&.R1\/>g.-Kdk*s5u-&Z)/
%ot;Q-B]Y9)m/7uD$0DH_,LrkFo]V!*2eVKtmCl<g7OtuaYcDWnWe&D4^uGQllU4Y<U5>mupMdg\-mO-:leWuuSF4:Vb-LK\WjlYI
%;d$UM0dDAh[<b(OQI,43kauHENH#0/DgH9"\Q`b#4UBqF%(q244hecnER-E)Ym9.q6uaUKF.q3SSn9j!3+XbSJi_Z=kn+#tW^C?Z
%R>dmV=)$T[<^1ah%?O#fHQjZB4h^)6?+/qj=DQJl[92rniGHQ#b#s]2/f.GqVe53=kjJ)q;Bd%K5\&Eh2<p:\r&D;$,\"g&CKfIU
%<t3+']DL%blP*Kfr4=?FC,:3IR.$C,*rB!4h2c'\&bb&),2%FMV,2>@GM:k#<Ya'&U#",fjM_\nE%n4M2:WFkaqKg28u;Wc*@.\$
%.4`]Zmjlg8ndPF]DWC?QKYDc8H]5i*B@HP0Y;W5!GlSJ("3jLfS<B3_\8Hc'kr6pF&3<"eh_oZt)mVt;e;`@Jr$F!!m9]O6hi*]"
%E:rBnXkl_VPJ&&(pC7h/DP49dqAgI`>^ce15-4ujO*S:7@"0u1c0oee6[i!p6j9uXFagH>p?)t$7+cW,Jpn*j]2=&lV*j[RpHGJ?
%8mqE`eD7d\]D"^<]Q8M,Qi$UG&rp[Y]FF[H\",tgH;%>2>!J!EkJtg);,]X2^_-C9)nL^BmBOcu-Ne6hb-AudmE1bS2gs*[+63(/
%Du"!T*c]tl:GCn@3\gG+Z!l4cIO=/;($>1X[g^NeaL7:uEm24XVK#ILp8U]AitoH_@aF@Oietq/$IP:Y_kKjk@rptTUCDDPO2q]a
%4#R%[/=s!`6ec,@&4E(%5(7j1_Uir''`ClBkS:`XSq>?'MQlq)#MZb#E8gVa[HI7g\PI_)qI2=de\5dn,Od"'/XMllH=Tb(`jT\e
%"ZouH,f@9GR%$3]p86*,=q9Ca.c[YYDLMG]r&<H#[FmjrStt8B"g9/p4(^8GE(/84GlFhcTdj#G_.ej8:-,.?W.10%pI3i<`9*fZ
%:;;Bj\30U];;c#n80j6CNa3D((]CM7oDX)k8K@#>,oJ%*:cn4<CfTu;4V_Hp+(t97rO9Kig?soEgK-A_dmi5f(/m$1W*.mL+'0a*
%<NCnIm].>[(H@I0)GF(@PX]V]qcedZA?JD6HD_gN;)0,B&6F9gF()Qs\>u!ahj!?+8f[1.6BI[L551AkOd`WOBU6AVmKJ6Xa5)#c
%5!Bt:_m<#Q41p=YFjn$5i1HL`o3-@8daGnt_),n[26)KH>?$k3[a)GZH"YAX7H0gTOeu"sRDk\sh:&CZb2/0Q0mo28^<,?)0QTIf
%K-$aCR'cOo\ea/29:M1&#<SF<^26jOJT!dUFAi]g`Y8kq<p*:>ap_mc:>iA\Zb!'jY2\U:]&>D]m0e1;5'@'t]qk_N;Hs+Bmk:nj
%\lCOq1bbNV7J5=ibjsh>85E580@$PpIqEO`Z"qS=T.1:NiCLn[h=^:.gt;Ud<EE4bX6(.TPP[2T_B4/QA#'#glAX(J#4aeQ`95fe
%?mh9o^T)RV60+I"@6@j`/DU2!4Y4HfQ&PUSh.#P,pFVs1J#^.HrV_im7Q/PZfF&LAj\3]f0i-a"i7<84XjbGA76]kj=Ko=DPP^is
%^Ki3G^b*W";3j25Gr/UZ#f$+Rjcd]V@e74flVC%N"_%l@V!2uV33HV-ClEq*T#"?j,aIr@aHD78B_=,O1k?GPZqEB>#-r-JId`cu
%^uP'a+=j(63\-`99Tmlh*W>FD\8!7>UHdSeYt&AYO(X@T:/?5\RSV'h%I'4Lm!b:H,NHeFO6:%$`$#()1+]td1HR'=2_TL.cGBp%
%PD$E7,fen`k#pb3l`Tq.%VJ`Gk;&7="+D!nFA/eoqtQn9$GRL/pqH!:jR-jQ5KmZig%te[:?M6>eJn*D5h%I7U]bOT*ERI_'(I#u
%oRVX5MN2"(WumJTW[3eF"8N6!DiI2R#gXbD3\+2L?MeY@N(*Q;[M\)sf>KZ1)K3e\j>HmZB!S_Boug-+8R5q[0kR09q`&gRh"7)Q
%r`D@.TLjFhn<E]&;I-j+Al$rIri(+kaa-PoP^O>)p[F$=]LRFW@jD\nqp&(!WX9g=GiA%I0gBWaeV\%k"+Yf8?YkZpR$5k2[=7c=
%+s[(L*5$E#+bI4n7a=;qH!gL5>2%+$fnebRT22#OD?N\UVrkgrKoo@ll7(SL&PREj^?Jaib7,`],[*C$]Y<$:n.\=$AZXT[Xnur/
%CTb'ioj*Vu#&VR*YMQptRK)]kD=m2/EO8[2kdj4+f>8j>SF9]#>$&ronp6.&:M.c&3&pjhcT9q>m!Ds-ESt%`g:`l"a;PL&]On`R
%/@WZ;iU_MXT<USpGYY49@S?%HjD8T8R9+ak11R?^YZi07p^RiFA`^r:OCRmTKjf<Jl^s,1io6$d4QZD!<A=/8X`O.l8N'sS%0\>a
%;88^mf\^XW;k`HO:E/7bQ-[1j`?.1]/2'n$XD3+A_(3*:m'1t4'?%/^pU\`LH2K,;l=[=>=PI@9#q`^N3tn%F`eKu+bd?"cmXj(K
%c+UT/k'GqNiTZSpNT;lK;D59'TAO71rnc:!FC[/44;J.rl@+@e.rm/gS%E'J&NhtP3(Q-Q(ml=ZH-u!&M`)sE^F?f;OSVe%oaI$&
%HdiIjR^h"kqb*B7XK<p]^AcRC[+omXd:25j1Hs@!l;@f2ej[,Mo[^NK(Yd]_hHBJ*oEL@@^YGsCU;)-HqTCllT@-&EO;.ZK8TsYt
%C-p.7D\$rmH[Ma1P6o8&<dU=dXerJ#YXVC!@[$E.LCG9u22pE@`6t9.XZ\0Z2'nJcNu!!kL\H2f$gcUA3=Ou4MgBXAm)i!>^Njur
%fW95oHLh8hq>D*'P/G`t:S]dqDi6"0Rup.X%VB$"ZK:XZVS%ses'rff:S<`@(Dt/DaJEl\KpQTLj^S1Dg5r=eS?YPWXZ$$TYk!^T
%h-K$&e/"MLatLAOJK_nqS;l%%BOIViB_q1<h5rViG.,T*a'PZHNl#K:b#SiIauu[s8uMsRk4.a8[B\E?4>X9Tpi,='/`T0q84?fY
%m9?hWnM__-Y7CCu4t5(rY:.01cM!^@fb!62F8"dW4$ML^@g81r<@WBgClP[CI`6"SV)SKOM=$lIMZtg%6^FN#'oZ,p40>N+fr[t'
%BOIq(mRg[)\srFAb0MsRT$[0Km*&b[#G5Y;EMN_BWj#^:`_F0;Cq_U[>FP3*D'1t*!F^"UqlL$9i#)Uk5!1R]&)Wnh:&AWG$gN[P
%;pa\S=Ee[ZS'UB#;jI5QOsr-JU$nt_7sf=3Q)A"2T0>4)>p`mS=g?iZaI7(hIJnC!)2$gVc_S6r(`F5Sa95HK>]]40WGYlBg#QmA
%n)S(R?AiFX/e1$?d^6,n`50_%RP%baWQQhh8+>G`jZEXiNl3C?k)VZ@]p7^(^:eTUO;T%TCi!24*++STk/JaX2f-*oHUj9,S*At`
%^gbneBDYE^Oa36Mo=i_'^^JJt(=-I1QH`]KdkJWh*a-c9I8bCGLH0A6YZ$]>J8RB9QP6t]G\[tap_MYl=acW0[Q:B?pW13F@`t@q
%\],t`2Pc5ZSWPf_$YIefF/MRLN@j*OWCDb^ln*QnP@XAB%7'4'Rrl$\3*_D%<FmImAZO/Xq(Z+(psL$n<G6G>M)^,.a_k&q^.6'%
%``12GG&uAPE`p4gp45b`nTik7\Tjg[@qT"EDq)CDh0j)18*Nm6h9HLY=j*3Inso[:%`M?d2I;&\_X3BnB+,e,*eoND]:D5I;#E'=
%.UqT(`B,?ei=DgL-a9Qa40iQB\WLeP>=dT*DsZ3jN0nT>7`K0_CIaIi-P8IcDV8&B+Jj3<RD`^3p<MC3^?[NI[0EiE;!rR\MeC7s
%^Y@1c=uI3uRF5aM-MAR+G8)0!3l'>D9XeBGRn4DOqo1R15tT63**o/k24&Y7L>(O0#:c'_*Q-40b+Iq=^$1<r#"L;jd?/.p@9_N0
%<VLtp^fGEh\[IpF88iI^dA9D'M:'B1#4=4s5.s1f=.j#u\\l1`*V%BA<Lu[h]@>Y75L8''\d01Sdl+E/jKZ-/FXMT[obNFQ"hfV$
%_D#E72#69F\D4`/dXK8?PV%KNq]%)5lR<nDCmd/GR>OQr3Q"H5M5d\"f+sBG*5AJK`\h9rD=J]h3L7`q5u5\cR4gFs\AQF^/`bFF
%9"W6PXW<XK+-BPC'=RMKpN#7l9_iGSBD'bS9OGt1Mr4ME^6i32f6RY7d\)W@>3!g[[4\fQllUZ4?LU&0qDApj]f:8A[p<CK>Fp
%`lU8"\C&;<).[gHfGd]r#jX.hJ]fh?hPG@+`@^f'ePL@9mI#>+X6lUm,?B)NR:\U+(2M&Sf5X_,KrC='hiXL:XA_nW,+BB<Nm!h`
%U\I@_2$LOr'H*tBhL'KS4d--eKi_7rM0+B<'3Ia;`,hTcCZZb$YCK]\f"0s%Ks_;!IUB59+-]fbPL[2$cjG+'^#g"h'C+)H(\B#;
%2TBgUG,/95Dq--fXq(i@om)NBUDg21EL2g-&2i?@G/*^%^nE-^Ram9^e4!_(!QsmOCX&,W0XoT,!U;tP?6[V3)trl5:@D:I0N]h3
%U)I,r2HafGVD#-kT6CCdk.;#HAW@@HIBMc4DQAo%bcdC:Dq2X6.=Er<UXl)F/DM8XpUJR%Q_2Sr\bla*&,(W]aRU6MY$H,dGn/VF
%fS:`HI0724]ZIfmS,fdsShFDcH\;`DgS"g@(?=\Rm+CQG+'T\[5-<IBL$.-j\3@\&jZLZk71T(6?'HiV?SYo6hcAW%E&PQl%gP2H
%m^(C=ep=qYGb-9YXfq'36XM?$l:Y`u1P7dWbt,EI>/OMGd:sfH@Iq^IVb&/imp#p[KHo]QE-M055-]%^4mFqB[iM?RniSFIXM"%n
%"0mR&2KlU5WPJjXj#32'FF37qD08=VbJNL)>a7*'0&eK_Jk^JIj/i0]g:$_-Dq9LOOX"M@hDCoU*Sa&p2_irCqsa.Rf8Fbj[6%F`
%F.36=[Rl?.`gSj,*X/leZQf2:6?F/`>Pek)]<,4*o`0!a8XhMcf:hLu2[/^58p</NqW`(eJhb81@<K$Q[X+.#FmOAod>bFCfj-#,
%Ah4k%[HdH3Xh3?\*pDp.ZP2TX;]hn!ajVtY_D.S<Rghk:6*W%K!F2(M(#o$XZ'&$9!O:%&EX3Jbi%7<-?J8/h95Gs$rm3'Y&Y-@c
%\Na.!OaG\8XD)(1N49dm6u:Y58n?0K%g_QoF#9phj+TVFf^.SZem_/]6"Q949tZ:1/?3Z)N]_)oG+"j@Z8cEF^26_!/Q$o0h8<ML
%(e!kfNX),RB](X>rU,P+68Xp6C,4cfiJiiVF8^`q.cs-$HZ[K:_'.u7_7;+ilfp=p:sVaRb:qb>H)5&!r&E,t@VZtFDCnShQm](p
%XYj)VP'cLK0su6UG.OUsT@]Bqb2b]&'=?:sR6npp;XE8p2GIB0%boIt("4m(s*iRn^T?gYig;WLY\49Ckg!P,W0ggqmG9PDP<V*K
%AL!"n.$K::R:6*RSW]:S@E3XVdGLRIG"RWd64[]u09io)n8;`()<s6^lf;TI=p0$^A#?NPH<+er?G2Kj1fe]o=#Z`]OpNM6BO&GV
%5<KO#ANC0$j#<aoO)Mg84$8IX1OF#Lh[#i*a7pp?Q6/D`Q<4Aoa>q=&#@Du9mPk*\X^-gSRJ]e<e*4MT"6jkSFXR]r03Tc-%YCkF
%]t%KofYP]f*L<nMF8Pq>^A?%jPUS8>1SYaB.NHH]&NRF%FNUo]/Ct@JY84!;Amc3lo,]R*0>!Rd55m_n('VNGkfmJm2o7?uG'`?&
%ARi^/MgMe:(j!Z\&cYtTFABh\WlJ,M4ent=qp1<dlUJJ.mLALMj^\sJnqd=;*#q&.Z8-X25"*U)3*Bf?6g65&U/%!ts02E^Wm1;2
%#A9mf0&8g*R$2O).D4P=.AF_2-9/G7a;KSJ5AilkDj*-R;JGg]'F*sBj,ABlS:d^"c%sV/:gp9e7HpdQQa08b/E_G2!r@o-[<ZoJ
%1&m7&mCaa]<VT&Y@cf:UI(oQhO`+BEr',4+^\pAsJT4TR7t#8DU'aoml!FV659cl<pm`92reViZcdT#pfji^\29'9DqqX=i,L\Yg
%oD`lQM=GFi<)OhTqgR)YWP(&k29T_U]VWGjbfj=IMU1@$q_W73*6Sm@Mk$t#Efup/lElSZ:DGQl_ZYIY5o@Z1^M%3G1H$^69de-[
%4RmDl?H=Eq.Vn]VDi;`BeME061@$qVUpib]^AT7C8-9rc=kiF$dR/7k<djYn)YYL]G?09I8/\$j7`o*rY]\]2*6V@g7ho=0i8WOo
%;2ug:B(.NIgh_F6lMVJIg[!X(I%4oQEFe^Q?tK'#5D/:#q_Q+$X7*KMm<.KLmVQ'i5oRQ$HQC9N!i*>4b\aKkn4.W5a?lJ#h4hJd
%mb1@[V5r?FQ0pEqLmWEgN@3l.O2uphqTsDKfuIMO'j%#f,mO(H)d?OeP)/\Pk#.P\B]6FHd\F1ph<Xip1-G<3egJLU?@a&,GZmr:
%H%5eW1X&n(3C]oRHDpm2eg+_(l>j._XA$3Q*ZJ>\Yqeg%;@E1b?*CKY@.oKUl;H6;i&YV?Npu$[c==+q?b[+,ZsVN.l%-n@5!P'u
%W^,3:1U-'??#\<"C>fUI`=KPd@hd\aA0G);r[X8:j*FrU<qod_("^S@oa'0W"Y2?f"i;*j(.opbK;5`Z@_V!I],sO<Q$E+B13OVJ
%'c[=c<b?EUn^SF-\[eROKi3[*WaMD`(,MJ@muH3]f."?(1Y=0VoWUshGosk<0-R(dY4Hu4i3+\Uc'5a-YnOZ[0qd1^O4^MIOMecG
%d)&iV]tVkYoTifj.!+l+'^T=RWmnNS67pjU$]T+qfZ5pSQW`&bo/'a`T%8PE5cb>iB"&dBeML:WmT!`Q_Q;O>lgY/5pX3AL?aM`$
%BKL46Hfj&?IC11^_H$[(a2W;^Cf@L7WPu$mXg`.0I]2,qXUX4CQT\TB1'U!T`=i+!6c#csd#Pd`Mc3^#'b;:C#M\pK>Bk4=.W22U
%S4OM[>2"e;]od6u>d\'_5C_f,ZHM_TbjInWd)4WBdH\?Xd:Y.'2*M+t8`e/R9.'O<bQpXKEB!?`RhtNm$+oTW?$Qa]9C0+"6G;5P
%$W:i?>UK^.?S\,soppE:Ti4"kqq0PfY?oDIK$YCI'%'2jeV<)>Y9$+op9'qL3iun'qgR)L^@([r%BlGe3?g>2/C'+NCa*Rh<U[h5
%.'k>Flcf6>@&7O_mY>%k[PE#Hp-:'HIauG_4ALgn13I'5/M%;(\mg?caHong>K:)]%\L-<8GqXn*r2XFV)hlI?r7&JYFnF0<Yik/
%pcSJ,E.k]l^7_26f@Z34M\jo"X5L1M6de.nrR`Lu<G/phfq8L)pL_&`'V/uUWZKimVJAtEd\IOY#S+O0W)0ceQ3'$;7F_CtgrB^`
%O?[)<Ib]:MZ7bOsWA6oC,VG@57dt`]*JAA"FV1aA!$#o#brN`2?!UZd^\Tk`_6M-l\Qn)ID2VUU?,gbN3Gh\P)aa*TR!6s+:]B:d
%4\%3`$VnI8"l!g6,3OWuEbTm@^Cc?6/ma=6C>S;V*Eff@9iA<$'c_A*Jm)_37&Hn@_$rZ4'_n>OFH;Em>OV'[$);o3>2?;^n2g#8
%EJUiCiX,j-VMGA_[%^mR78ILeC9e>gGK1ckkg8U4[:$2Moa6oU)F5*A3C^uFK6l3RGAA'B04l#b4D'r#i+tp>XVP_q[p!n'h2;,o
%I8eK-Hk%\ZJmTC*]&<6Ue\j11SasAkN=P&=0mb^`G3EBaDY(;k9/!I<s027#c#qfBg?:3:J)D,E,ul1eEGpe#fh+#4c7#"mB4`nV
%op1N5BUc1SdR-lO4MUl'?(M5dhNYE$ZFEKp\ElbedF\F;=BP<qX54c[n6CQHi\YDq7!)o!?!cB@Q8RhogM+`%L9l"FMM?ZU3u.El
%a:)&,-hJ<F>3lrdGGPBL3OASXNi;<dc)!1+!Ep"<?rX+9:Si0kbqn_1YtO`n7"XE[_[&V"?gPmgDC.Xd/(pe-dKgF$30^lbXFeM=
%c9%C-;O$LR9!j?bSQ%29XjK?,J)PI&W_JU^6CI@"B,f2M"A3;SEi(D%Fsk/[b?2nQO+tK1d)H*l#nsRE0`gHSB\U7o&s8-]6KDYS
%!Zd)bN`hdD+E\kE)Yj25gAm$F0/]Oo$ML#=l7\!p*?eQ+Yf$iJK;<f-@O5eA!Q*oZS'T0:(7[:N$sY>*O)a=l/2fJs+GKnXD'2Ui
%PUS$4:+e__^5g:r"VH\=aOqKd;BDrjS5fkm>p8cE20I$PPG(_!m4Rfl]!r/F8:O3Fi1q:N34.0B&m\=;&il]5,Z>p`>.D"Oe5mjE
%WDpsN73$cHQtW+baE9!WNAIF>5U"bJJs"[tmT7K<?`fDI`BV4="ppSe31!frXLAQ=*\.,RaXr<tr-FnR//Y#3n-lsAW0RQJ,jAGS
%g=OehTXSM1-p\[?<m#/"'"AiFQog]OZ5C6CW[dWe[%9FU$cP4>bugA;VJg,e:B;j\Wkfm3`*!^T4qJ1Z4/!j2dDE@bP[Lkm("Q^,
%c8c2K@-Z+T$'gGehKdBS,&L7kA+*B?!j$RFSd+<L;?7(l>V)<\5.7"Y#FOpH5b3%l7KM2mVIU(o-OfDmE0*YQ/7\`abRHro>=)k'
%['^N(-(9<tKuj&ofRX,BX#1MeNPV!^dd[-;]R-J$L.]kV*oil-*/Rc_2$o:[*U7LgD2;Lg,(D+b!&>Rr)0#9V<_$L^,=RK$3J3,>
%W:Kl=2StAA2kPDO#GPZER'g;Cl#c3UA2<kZ9hJ';&gNr@&tKSn7k/\*L=e-0N`$J`f3Mj]UfjPKJZQ7TXONG=+UeCS)iFgbAmAg-
%d[=+':c"-fN.PNaG)1`KOJ\\f#peRhY8REJ'#N7A<['DMK_Y$FYNeA2iKLO'1O+AU%)F.-57jOX[]=j`CE#]tS2J8WLp$5;VdBe9
%k<m+(i'k9oU6`oj'cKSuRV2gJ/7Me\@F8+2UR>e/^+^7I!Rejk<$Z$[5oYB$^.<Cs&1N>9cDkhE98tSQJAK=r'o@QFf;XQ&YC-Kq
%4VI4F9j4=s`p5L&nYYtoW*Cbr*,UO@,f8K>gMC\!ec<6Yk&.o\>1A/8>'ntHitU/E.R&q3=O29#.*@s_c;i.]3VB1nolRJ'_X*g^
%$=#;DW%2XO%Sqet(Z\`)qh1>K4t'Y=-<ht6AA,>"&#YR"_+r`'I.4YM-t9[b&^Dt=6o/o*9Mgn#*-G@=^h5L9FTGAm$=AoE83@e5
%io:_-$*:Sc''W)C24_:OdX!g\-Hsp,"4fH)WZ.3]TTm7h`rDa*"O!r&#;I.nK5U?WiTn,:AXL:@"n'U"IPgQPh*D9F;SEoo@.Nj$
%<jJ1D)&'PaV>/tKn:rH4Pt9Wtq6MAM_`=^O^AoMJadW\l^jA9WcZL!XhpW?#b#s,E94Bfgg'Tj?4"s.6Q:T;Z%NPOj=_j\(K3?Mq
%2W#4f,mSMl9D&XSe)JaUa;qJ#N2\)@<XW:F@Q1+jB3(h!6^WM7KghTMOpg!DlnRjj,iK4d(>Hl&#U8ttAgOb6R";G;-AWp<CQ&H\
%%O+*=?<UiC1\-hANZ;]-F0Om4on9;HJ!a5h7Hc3)VcRs?SLDe)VZZHo4"+$1Dl\?9eR#ZI!f\<&/2p`4%4SWPksEr"F`Y(l_5XMc
%N<>;)TYuDC_J3;Ta=cHgXD=Is2QFif7Ofi3NC)rBYS+'lqZEk8JLGG`j/#+I09LM-X3,\/Ej83ilNP'E]]:Wk"(blk!<e7'eeq("
%/r5n)AtlB8eRJHi;p%C&`Y,mlEEM8XdNj@kF"$%,_F^hjjM(Aq5[*FK32J=i$mAh>I"kj*C%?R*)"c[j++Fa_?6s?V5)qJ@;+d3J
%Vs4j4c?\=,'Yio/``4hiaHS1&mRnT79/MV@/[>5Y5b5m69caHQ8hY[V]Q*EQ96o0+(3`1r5=H.%4"\:sW&/dhlGJsrQ<CW#qe7(G
%HBkT*/0[hk^'M(GPobc*-EH7"OR$&DQ!,MN!ssRP*Mpf*+HAG*"5/UCrAj%A"Y&OoYd7:5D61'-.Z>s%S;+HSd9Dk/5R^P0@+dhi
%]MTR8!\KUq8C&SDbc_Rh$F<i)<nko/0j@q9Om(#\1m!>8NX@M*$2+V%.m'M6-u->fK38O?OEi8,#W/3Y"EVVc&32NY*H^kJV-o'#
%o2`)G9(M<!:ni%s)QJT%6X..'MQSL<[K[q0dcp(gB^s[,WcsP8JXfJ-)094/au=F@R^LjMZd+B*OgpW"3+is7XJA@H82V\,]5$e6
%^Y,)Z8#)6hr#-aF=g@2pnYHi0V.\($5=tJld4Dtobctu25I'',X;1;!R%VBg=I^6?fI2Lq_!.uI`R(S#L+F+aT8HK*X=MDg`Z-Q3
%Och#<?@FIa5o-r`QM'gKI#Nu]Y7a@&YsRSY/B$U;0^4qDlqfJE7)ZRARqQfX:mS^$EV0mE&@q^!N1c^M:CaANG%;gAr;08E3fH(K
%K:UX<&jP)!7,n&.N.ZatKoBi8=YH::'`eZ8pFAWk;fdQZgtEZO+l/oNM)l3cW]M#-]<d9RW[.dYPW47eKXRED'G#'&!`gEL^cp/&
%.Yo2I!p!e`5m$:=&F31p=\:rBE:-Z5&Yq2FiAso31@iqQ0<>`Je>L[85]*2:RrFR\M'a@U@HHL>c"92K29u?'/ZDg,ME)3cF#AeC
%.=X.\Xd2q65;@0ZEdiM2p8hk`rY7YCn\B\7oYW\2R_8%hHoA@-ng:^"naIFil6Ks1!`;oooP/HV@[30'4,lZ%:QhnZ>UHLg_e^+O
%4<[l3VV*Ak6nbnL0.nUdEu1QD:A5]hM)elqqgjR2f##:6gEPNL%L41(MqF)$XiX-Dqd\BnR"D?[A5fQV,@D<,GUeM'+6&#ZBfh/-
%BXLnQ_[q_fOF7Z(RnrFm@KMe4BPOGZ=0pk,%W/7TTaa%e[02j3rJgrnF;K.,O=\Ai'L^IiV*nE'M!.)58ZQ^5\Q4%,CnML`QZf8>
%TaaqFKC]I:PJS9W+ho47efKW([#M#m3G@i'<:F7:q[`e`-Bt9_!`R-MKQD+G..D#U^/9c;S7&\eVMO4+.\rmN-a<95/l<)T>Tm-'
%+liKQSDc4gNA/!6QaCYS)9D)Lf08BN08KXS'HgjJ2&0V;lckaD:5irJPRo&W"!F3$pLJ]#[B0Q-(DgmZFc@6Y!;TB%p^HOiGssZu
%eLi_Z8Idk%(?BhR;Uo[0)5UY6lH%S2PCO\"I7l7%$+;'8=bti_`G1nhoi9UMQHi]W8AYV=!t'iBDs2Nf.YLCo**]^@e8eFM!9@Z*
%2<`[o<3/SYFc%_Go16f?c2id$f%+(!Ej*/<&>K67g2\)LhHe:M#SUt(6n?J_1TE/Do8RcOQ(-CZ`b=IaeFc3!2c`F\2E0#[?>F49
%&lD2?KkPIg.o`GBRJg/S!O^IO.M5=8Z^#]">7(O-W*>pNZ3)gR^cbF-aB!Af1Gm7XWYgu,4J[ig3so?"R`*pClZJo8),PKXL`FKo
%pHe4?20>i%VM/-qUt_0`P]0PGX1TGg+&JL@fhJV2\OPQurNM3>N8!`BX&hm)EE;st,0VFX#d=_tIasKrK-BGR;SmC,8:JA25prSu
%[j'S$e"@Mk"]X3>_Zf&ZWZBek^m@H7;-/t3VunbGJRn+6O?8?8b]mt12,l]i/jmqH9@ABJ*&b7Mi.9BnWd]rKM#\)F3Z0Co7>H`b
%3qjSo$V$A'1"BSo(/\96HL(\L3W+1T\5)*_jHr7]UQEaU"-TC4T?fYABk8f!<6<cNJfW.MU?b?[FVs[4aFd"0I]H67_,TDd81,Fl
%,3:%BV2a>t9-8EG<GQ)f;O!Uo-Jhf,5?X]0!4Xe=1T4[lPD1,,d;DI>O,(0hiiFKU>#pGaa;#_;18fQdod\rIBs8jlr7A8$)6o_h
%!]eHj]!Q4/;&BOopb<l%Rr\dtp(jT\)Ctu1)O05V-I6Wc0(5Y5!J+OT#D$c%\UNeo2^9;r=\=hOdK:hQpIWnKJJM)eUEXK7Td7YB
%@U-9=(^u;n:s824dFhi/+^=.n)=ad(@ngeYM1^+_A2[m>4<j"rE8=3_(hoOse"XjnZ#(-&L_)GiH%j>Ye^-T0UI]`p2.mgiHRhK:
%(Ms7NEh@l-Y%_7o?M-F=Qo0j0;[Fj5A(uf)'i$^W]thQc#9qg7RS_&5Ae<mpM"<ZIMK!GC`WNO$bqL2Pc7?qH<b-o_:^Ee8*'lAf
%D-IA,'l4OOgVI(8`a&2"R>nnb>Z`'7o2-H4SO*jG*820!Wt_(TC?h?L%iJ.F\b,IJaUIg!^b/QQ"Hjfo=9`%f1ShIUj8h.3bS'<V
%,dsi0.nOFA/..oo$;Fc_,,tpp;)64md+VWUERB>P2!&fhL;ZU*Tn1N^KG@?]'$%Fu3+5W_a^1nhg.I#5OHDkqD)j(=,++GqdtpB;
%8'h:X`S`4Z%3k@l%GIsW/<ZqE):>)ipP\$O>.g/2F&63tBR\A:O^gR_9C-0hVm$"8jD`hR1Q&S_R@X%d7Wgc!m1s0B7Vc<CSQ+KP
%=HcUb>DO1b-'c<uBO'42mru';oEc.d,Up2nd5%aIL^R/>fX;TAF;AT%6=a&%FO8.FZ5S%3]gQ]bHE"ii*.dR4q;\]`Lm985;c(60
%kCY'OS:cP_=a(`Pi)%O6L"NP$$m6)McNl"t\c<BX8p1gT&S3SZL`)k]jj:GomEtFr32(02!tjnOah9C:V.>.U<HN%cr;b[!6l`$5
%F_P]`<)]1)RM[PChD".9)r>`@J<2Lmg5EPG&;M]nAAf84BJW6p)IS+:HOqo`?F.r2d`mK/""6ao\L5B(f8r%PWZjSik<O-L-QSJp
%@So@bqFNTP"S`aLa]1b0$15qC#F[,fE0u2=8PjpK2$&gj,at`(ENK^jXhJ0Z&dE'8JGg[pZfgU+9<*7@Q!sqAE@j..<lbJ8k2`<E
%QWM*0N^=4#&KPQ(N3OrD$^i,Oc0*-c]&rSd\N;$')TY-7oHUV&,Mdcbmj6gPXL1@=W,=E:CI[:S@0NUrYLJP8=fkpsO'K+nCWGoR
%<f$^$%HRM*H!&.#_CioAY?9I4flX]3G;0kN?/LD[0(pj;I=%Ft1`V--J@4*^+f+E1\5$^O[`[P;')qZj7c(EV*#QtE.WD0n>Tac\
%f!sWTW>KTqd+2[&#<oL]lo]';%/uPP;K:bMX2L-9Y)pJ.;aEDC^l)p.p[IPkHSDm&E936ZTa>-j<X(tV+BaiJQ+!VKWXqD@\`@Z6
%!9B#ddQt7Wo*2@^aGPqgYGh7?"Ts*JU:a9j"5mgH[TmNjj[*2qo%lV:SSY-QK0`WdP=g/&'$Rmg!gJ*,..<`Ar'Fp/XlE1"U+g'*
%ONj>Z<N)Mu![/im<fmF$l+/,B6WPBpU,N1F[2k)B<RXO7#WRpX\<tnfM+U8dctrQpM@c5V<@I3NZUt+JBY-Ut@dj^bN&@WAp'Tc)
%jeo[4SiQjq(Y\bc*Q7i+33!#^\Z6/Rf;$K+="pQoFu3]g.3jh?BQ3:iG)!&ib8P%:A<f:):;di'^1q?9(P\0QCp?9Pj9k(T<a.s;
%S5lV7gK>Vr`_:89<:(2:F>>\lcCtN6P)=RDR^]#@d\2fj3OUfMB$b8tihukgjK:(5KW(,p,1TA\"-TLYJnQBJY[^hj*_ohVmOqLX
%2M/(4V^TYV6<7"n(Fth0R)R%<Hn-GVJVcA1PK(<HD='%+#\FGom)3<>,Io:+>\=XRf0cVY8V&o`&Iaq_'We_P!eJ<Y7!B3i]/U@=
%&V]t][agY>?8[7^Kuh-Pi[^*N8L9Qg+Qc[@Pd"f&&/f?h*HXEs2JGed##>Wn#kp6W:&4!DLOYYfNeSY_^"<,j91q^"s71M+PN
%\3fO?aV?StQPA&AkAL4I+-Of[Y_Q-Onmn.AP%d0j=b>=,\O.a-Rc:Su.qI_B`+&Ngh*`4j!ju+RacpU=?uN<Y4U8(UMTLZK0$FDp
%3llj:*SXc!1A.[/R0V_b^E:ON%*MY#/6F&Np]TTTp2p=#ng:X7[`NJAal84O]b<m`c9PEH$=t,R(N3?m'DX(j%("UiOop`qfTH8s
%:aS]'gabe$I%l6gk2J>RX,'#OLWpn8!a=t%NhI7K!u8dn-JW8MKMU_6Fc!:5H)at5OL*T[Po8m?-jF896h<U.O'&BSpUo3<c4JUi
%%e2Rk'uCG")<;k8e0FZ)E@Bb.;+MoCm3>4@M6Una*Jld[D9[XA+rdDak(GNQ##.l1S>8:ZI`8!Q@IoXk1pi5WKm!YZm0^,1FB?P&
%s7ZAF_,6^rX^?&tVo_QbFU'b.SVl]gE)dFed20;ZL'rCmeT@usXCgLcV=gXTTd;?B8qsB:Gp'+B,k#r_f\E'ZaV5G\Vq&$rWBK)K
%6nkrV"nA\]/2k%AWl"Ms+N&`gMN6>CSID[+6I\n'oLk>OWAOO%NY&"59+3[K<@/jj_CH%kRY\p0i"K6tW[M$e>3\A3P3du75YebC
%LCs/tQ$u6)KXSf[^]drsM@rlU^s#%`K51[3&&]Wa&-Ynp+ZhD_(#9qd6V0%ZS+eV0(eqC*!CK#f9Oiue4BnXs$ki-V[$L"hW^McA
%fa'a>Bg!i+P"qS/Cf=&lJ?h(L(Os+@G>("loe3mi`JP2i7S5RKMA;\4XB6%.Nma5u=%VUD0;hKM+3CIY>V*"Rg[n.B4mPji[3s.@
%)42JajCo4p8Uss9ZQW98JgtO^YFDm-=?Mu`+)1^ZY`TGa^#_!G:7frO=A1Cjmc-L/Q(*][.&<[0f[aO(Hh>0?X7DB\a@5>pB/o0U
%:W83u,.rd`Y9;u-j.K='<!C4=<U-4[.DN+-Y7QI$XH69lAF.j*\_Ve26qdWiqk5Sf\mSiVTJe"idB14=5jg27Y[@b*Y=b)p="3DL
%Lpda<Z#=GoVh.PYQ+0HQSu&Vlm&$5enbPH/,2HeD0AU/1oHUVFGf+rHmjH\;\26@PUmk%YG@3s#E=cZkK[(!q\AFPpJ&4#SMX8SR
%.l,ac+PG&8S:X89$0CACPLhs8T:ogaIbu9=G9RG!pkj.=]11beY,3Rtm2`nK#OeCOlUXDIadh<>.LO;rS1VD1!`(]QA>"oLlJuCK
%KKp?klAEq!BrRt<7<5j'qqeW6I.]oT=?W;Inq1IG8/ON3+o<SL2FCW1Q(=oT"aNE<+<7oCX5r5YAe"kD4=i&M'[`:<4ofZ6#(<V^
%eO!LC,?Z<2dodiH6*9bd<^oI^q5(F2liitsKgk_%["4WgiX4]daFlUPjt8IS;_3Sk;WT$(XIUa["=r"^[-a-W)@q%\&(ue.N1SJ6
%8@B+tK9mgOZM>bfcdY6ac=;tsK/X3:J"&)eP_*hl1c\ZjM8R'S.J+0FR.R_Z)U>*>HQ[(54k9Vo%RN\\L8h,0\Y'X21,LF+ie1j#
%KsnEGjZ"g\[0P\.'@=i'Qd;JU,9RKj5rL]UQ+J7[3:#5*T::9SXWOG3pXRMZ7/ZV:2qNPn]tD(k]`.'hF!5TbNUaik5CQC(ga%rp
%plBq#rT.&Fk1O\>O!ju*lo0Fk_ok:$]Xjb#rq>p\mdfN:m.SJlHLU1@YQ"(glFK-)hM-0"q:463M`8C7q57l?q<[hKCsh8?gWQX!
%[hmZggn4N,?a&qp1]#GRO5F<kZX:7WqW-6U^\RWibO\4&U@im3c"b_BT3]-q[Qe$2])23!)cIahC>4K;XoIXIBCtT1jYu)RD*0+$
%s6+P#lsIO*m-=Idcb=LjcKt+%C\aRd:n*M0Q-DP=NuNS8*tNZ=s4DQ;s*0'>gjJdE0@'#M^Nk2)WX\@eS+hlM:[;e.AZb4QRuJf*
%o$0I:0V_!DPBUq`^Nt6LEIE;@l12or)m0Qtk5f2&l$RA%hRpPUS5l<Za$5nbCu08/?_+m@q#0U!s1E1jG&qQ-GjD-Ncu1tYlaO(t
%FFJH-pP[9,kkN:jT@ih](O)3ikO0!;qY]2hlb?b4D)&klG;eDFn!Jq.M2C#;nID)\iiaRgq<8Lk`)ep+DK0t#Sm=C7+k64\Dmh<:
%hVOi2r6+K\pYT;KDa(9TB(Z.fHJeMo9Q%SZ\37I9\_VKorIkJ<2(riRIt.(PnnsXYo5b=jKpVQ5p2>D,nb(#%7r@_aB(Y;o]m/'#
%m[;-ngH0.s5OU(MI='Oui2]*!>eW5`HO$bCD/9l4SEetNQbZJS40!WtFml9s*S%iu\u3\JHueN/(,L8)lJC\?J%rMiinLe@2a9D*
%(Z0<6<7JX!B!S8mpNX%g\N8CfnPh-dYHH`rk:1k,MU9@h_OJ/=^V0F>jV\M@$UK)dl+pn^IlVlQk0<#@p#klH+,_\`n[EeO3>Zu6
%&GDmD-aGaBJ+XACI2`Z8khPOel`]2NgjT/VGhN6?q`jTZ+45Xh9&&ZhjC4!k4MSG<\c(\5^(loL_n5'OX3Jn`gA7SjnBL\DkC7gT
%T(DIH,Q]oAr0c7?]Y-A<rS9]P^U_(ghL'5,07Nh%DEGrV2qN!9c?>RcJ+9:0EoW7Y2fEWL5!-OSir!V^F1:_gA(")?K%Bq1l/MX0
%`[gVp&#!gND<>lsMK@K\.N_o:r`Ncn5Mo^Phn<!QdR2Y30>:7HoMR@'7jJW4A4&=uT>Hn'_kG8!:K.Z^3_9g@)/O[TI.n\'_sf+R
%l,SiJfQ\V/&Q6Z+\3lRU^C-N,,TQGE2SWM2HPC\ITjO*]dK+i?H2$L.bP/!!O71@V]=klSp@ZD\k$RBiHZqXp?$UcQn^bbLJNi-:
%/oJG7TTsmm6I<0Bj!fG8T5O_MOJ,q`.!H(;H5%Mi05b[15/4e@ptq'Z0o$]$[)EhBFL1/M'05334T7GTGIhcHp?gP6bI<ro$(=)?
%ReEP/]f)J'UX@AqiqOIAR>52JY:d$(2NK//N%3s3DJm5hp?(Z&Ri``7C@VM\g65rW:G.-8o,OMM1HR@u?'L6p'=.IFGhC#BRRb96
%[S,?-L5S4A=atN*[nekoIuCFOkf8-nWUd;6qi,61kebNM\]Fe1X!hd(5^TT,YWfm5'nr2Cc[4Y_L@;ER`&9ri&!u;sHpl*j\lguK
%AWPtch0;DEI^=L3Z"NCA[qF=E(KXsK>[<k<@i8BunY8nN0,o8OG+I^jM[stArV#g,pK)"j(U#Kpn,@;"r?Jn4?D"X.2Kn1F#46(b
%_*9;_Irm2jgiV-FVp.XT1d>L\H0D`h`YQ-UF*hb*\FU<"K3hC>miT>/*Xfa;i]A.V);/,AI5GSIiu&lKKXZ4.o#E2lE[[jSl`Ho1
%^:q7kg*U:ml62s_pW*MjOc5s*2E-XflbhPh?f0_QhYcDQj28:oh;)m"e_WF,6oNn5YML)<5IrE'5(mBiG4ic+NuQEC>t0$N[p*-E
%df/:)B5Pl8qs<\4s2["KE/ojc*[&GdqVl>ON03_<X7JR2]\7aZrIkK\S6p2^4.Vq7^O?(Sr;du"LDsRqk]=AL?k^N!dsLcQo'Z);
%>>3=KGT`:4m/$;Gfn5QEIB7STT$PGbQikh(cC\>qbiU^-/Cokl0[,*8HahX2LOST^>VOCa1HKW1cI7Q1gq5E#0c]=>PM@l4B#i6(
%Z2FDW_I9n2Gm>E$o7ZP_-Pm9!q2>g^DEW`l*5c1pjYHZ9KYt<,8iY$1*:hHpY9t+rZh]P$Ma?QHL;Rit*=i%,4LoEuc"D.^'&K=9
%_]6&`kOCt3Cp?:8AKDBS%3K*1^b);CNaLaXq[,Pp23CDu&UqFp4OB-Rrh>CErTffbjm"'tDJ(?n5U,oq/ApU^^IM20kXj@L51[h9
%EjRDX>5fgh[#HG_jCh&DG3!<AcI%)bgB^:]mE!WaSY9?97Qp=K,<sq9T,e*B,<n9\ZQh\]r;:AQl?p.5ch`L'[>cR6$hE6sO3K#l
%VYlU<c,Pr3*h22pq=E]40!>2$FnXj^gZ?U!@a)k[_?GASl3u-5g,OCVLAI5g![rg_*Y[_K]m+ts^@^r*XVVnsK@P;$HpYlZ+qI[S
%`1=D6rH.$sqsSXTrr'5&\c)Q+mD6nC$eaBu3Bm-<.W<&!&h9BrnQ8'<QWHH6,>[^tqUNR:Qe.Rn].D]G>b'XKG)L-EGiR]i`#OXC
%o`Us)^Y/a*r38ZTD_n:YO4?H5/.S3kD!d'>oJH0ANmE9_\+?*@hqu(\([7RK^5$\k4uW/L[=?sAZPWCWO,+rqCj#UB4mnfu;c(r(
%Dd(h=,4DdqNY?CCTrr;rOnZdWN=uU'4d"!mQgZ!TG1fHA54g@HQYY_<?(Fco!oho#jk[DL0CC`bgO?DOki6Z&m'L8`$%Ub=i93r8
%&FSWHl7a9R=lSX?ri,-&h9#!+Ec`ZNh8r02o"E8$*6Na,F=Th%F<M`j$i,UpEH6.E+'lr0>:hnIODc2s:ipe&+'lrX(\5u*qWdY;
%YMX5XB(B&+_3WP2FDe=&H+GqQDng2,d21Q&q-SF3E4ofY;.&*`2pLf;o3Jm"hVh4,%a9*gDrmON5.)IcY-)YkfQ;RDQf!1;f:G2k
%Vc(8K:N?3adHGa1\p_BCH%^o8I&!2#R8:T.]stTOZq4XAT/LQ^nsc+Es*f67F`I0?mDZ,%Df3n(^Y/C\4Vhhg2E^SEOuo,n55s>t
%-FomCmUP/-o>Y+'Zi@^drV#YBcunAd6i2qYg%*.(]!uL)fuiA3]^]D'T&3k[!qqd0["jNpq5l&t0D/4k6sKX>R@W2^IrX=_X4o!=
%iU8Z`f'"=UmN:=FiF!%G`qkT(&?)i#/@ROlXM9#$hsq?thO;T/[+cSf2YYGXBX^"UD*FHk791>3gSb^>br8/)c-^EM[+cSf2FkC(
%d;JQsm5A$\d!-2.#"KofcYnL56<2c1BSCbqWPCT_UQ-+u@h"EiKf9ueBUh1i%?8U_2B6rNNQo5ZJ_/9$Hm/f%6Y"l4e:YLmT-U;U
%e`GVZcS",<V0IB3k-9*Lna8N,M&c<HH)s5QBQrW7qUqS"TA*[0O6,Xhet)[!hOT_J]ta5X4k?.WAcNA6j%lE3e/.#6]t4$uLgTfC
%q\5QH4IkV;?/SRN!?9X?4(dQ'oHU^tYi`"\Yb3]ZllQbBaYod4O./r+`rkK)LX+.^^AduR`>otUgP]-;n`cTigB/Jr5OhEs)%+1I
%?hGj_!f->H5)rS#&U]\8C3FQrR>]NARr6=i/miH-\u)So^4A7[5,3$LhB1i;9F8s.qOG+urV.m$5Bgi%n$BPip^m#S2Da#k7Xk[U
%rFj\?)E$A5QcERba@E#F_2?,$;_`$'5*;U;it86)8#+)_?Fr_&`Z]BnUJ^&be2UF&#-#diB3W<_*3?Gn<6R8;p:*7I^H9((j3?]J
%Z0:cLL+@m`qT/7hs7l_A55%Z.[Tbm1/T^M$*I;bmFLlH\TWcYt>l=Tpid]fk>b>r;f.>eTp_MhJUU[Mb^A_'k,_+^G'Z^!k8"\K-
%bnkSjGN\ELb)[;KCAlc-X">[.o$1aV'qSg<UWlU"f=*]B2kLR=IXp[!N!OHJZh[mTo)M]L<c-RM_LA/X9j:k/a3mC@3PAqeU7^\e
%3gMDpKp44d=c>h"I=(kAgT/?M*hOJCM:Gqc69./I`Vio*jQAY2O5JIPVC*0E[`+1H;>aP2*56erLA)oHMf8TK%Qf8Yo6D>9`u`!b
%ibk",SrAkbB(aZ4qpXg%`,4KQa"JH-ip.95g*D,HpR\b'[g`^-.XXa?n#5a3[lo`Yhp8.gD(NjM'u#<ga&1fBr!M=[ND"Ve.c86g
%.NYM-\+0*N)W+EP4)0.5NGj4l7u_Ha!B^CB00M=TDi5Jr,)u%UDf/m0F*k@kGs5>Qn%!cp$K!`t3N@If?fcWt!"r)49#ObUmg#H#
%Za"7hXEa9_)8`Y;k>+h5=RfkH9DRUL]QfMUrbS,$JXG-iofG@G.Jp+o(P;M^cX0tKSU^CuM3)Vh5<HWmqsg;fYb/Y?qseEB)n39T
%pbCRY+IkZ^e$RZ$*m8!g4`/,-FI)VLBQNBldHrjEnTK=gIdi)mMSAjg\\caarBTN36fE5b8`8G<nas*UJSfsC&"El@*:WU_mHrM<
%k8.KqT5>g8Y.XDs]b_V<iporRgg%V)4*r%rhl)enh`KUBb(876o<#[sdAQ]U[p(+D?]d.D4b(1s=>e<Aq:]=6TY%GuiB@(qbL^[A
%E&UttO8dQ&K05QR;0h2J8f(Rr03]<`LGp8J`qo'Ko=^LUpjIssJMm_p_(YI,+/QXUOnNt6k^=uphr[ATYR&#@a7hOE(L+rmlRs<^
%+G$e8/M+$=Ga*B4o$UBAg0\/IMG$HZC""eaTj7@)b"GMc5'dIMkpQp'Qn3J=R3*>Gf_EVamQFnNiDWS%_\Ku%HV_h),45IYZM>;^
%:O/dV,2o1BZM>g<h*]sPg\NH2rmH1WZ,9Y0GCMfgI%Nb(q!QA4gWR3I?XIUM131#h%unCGpt`LV6k9._gft+En@Nc5M&c<H\W_Jc
%kkF8K=3^:#4C4Q`IW[gq47j,]nIT9*T:I8lJoC2N%H%h8KVr"2kQt_(s)mW__2m^;J+?T^O%=?4,"iH`hHun_Xu<H(n/*"S4.5`5
%qu1,j9rH3bg3bEFq'0;HLOPfm97-?Vq]h+b^hrdQMVcn.m2p9I*t-,6JqDHM:=M@kpc.'(o_ch\pisNXI"(9J5!FiIl6FX>:EMeA
%q10C!UFVD1qklH%\'!8'gnC>bZHUdqqWeeG@sndI4#GNmbAMZ#-YVPI`lE+Qh!*r-2+M*PGT2']Zh1`105c8hH$]fDP!f&jG@t9"
%rf&"P6.;HBll=ros2T9ubE[8mXq]LBlgqkR,&Zu4G1gRiR8/2Kqs7[Mqs4@XRJWhbZd0^C`.XBrb+&FsmFh0%Y;\_/31Tr]@k,Bi
%RmM:\eK0A@.A,q$8>&J"a=l<i_NAo3?!SInSNW%l0ii@b!Be_iD[$15a_1Y=VD!FCrQ8N@Lm3_djWAEDs4k3D1*t8#r;";jQe18M
%B7KhcqqstOr:p,hRk+2d?(?:kH2HmYc_coPg:r.7iRuuETBYFGmGC,kRncVul!uiG@VFcWWLN0HJ"&bfq<hAr^\QWFm4\KXqnrGN
%U`W@kaWF:Wqu9>;YGgX!4F:Ds.@g6>e&`SF5)m+drgLs6rFMQrk1'AEAiH>E0;[5u+&ZoCk>%fDNf!bBpo+fZSU1.]H0_-Io4^`E
%&\59RqF#0n4`rW:7eH[:`Y+XU:K&n$l[5.l$dq=4Vu1^%9lm;hYajiXPj#3h3@=^tl>"k9kL1>'W*1RPmg!XodL;i\Sprnn7R%>&
%j?iH^r\Tj+:$:ate6/]AUsHTr,7A(_Ib)(,ds7OCOPStQ[qn^g3[<X+3k(-6kZe/9H_#N\V;cam)qe;j^HT]+IVYs]V6-C'I2,YI
%C=]lMl!+:ldo9(JODd(e%lucjr00uu%?ZM7H1F7Wm;L:i?[V".C("%iXDMV(EfJ`64D4Y:F)BB%]M2X8kP=2XrHmhkZ`i,L%CAJc
%rJ*5en$m'qD-PRg#IGregTR42`#GQG4(\EB1Tbtf6$Y[&.CBXY&7S77<a^+<ogr1,nZWqV\+Pe*8s_Bn'5?Z9S8"d9^WrhBqt[Vd
%R6]hX>'U#/[[&5dqlt!T?65O!m%Yq;3K9_L:0t`irXp6\9rEPS-#6MXG$#\<Sn9YA(YWB^jF&*sID=jOee=8%rg)AABI']-?IYKf
%9=L*,C6hHed[#[Gch",oT#p@u,l.D?/&[?D5Rd$*eLEY2f3^RpVfS/`0t2VnTOsW:+"CHP`c7Bu<m^FMBH=JJqZq9K;qmb;mG,2U
%s&e%,]G<8VR%s*B@f3"r;a4!&1.kADiS,5'$,+LYU&@Q3WU4+qAm7T<J[P\=$3t:Cg@K71*\P1j&[%>HNKL9j),r]bD.e0`Mf?J]
%p]>ksFrYN.-aJNjb,c)"pr0Ss2dZI)Qh9`gne_.@qi$[524^92eJ^)KIbi$@Dsb)WPABi;QAE/eQ3V7-Js2bogZR_d0KWL2p0O+Q
%dGrT@G1&`!19DjHiS,'PI&57d?hA^i>&R?h'4$#<H6VF;a%C!6q4WbA[*K]d6#'=OgdTs<Ti)]>;(#s5I!<e3:J,X^CDZ@o[3,%r
%](#q?jo/r"bLt'A_5:o/U=S8!MpU#`>r6_q!^CAeeKcLe29qY\I$>9+T\F4Q-N2F;KnLN$-Cee\jCZlIR</8DH,_RpH8J6Z's#Ua
%5c;[2)ehDnQ)GXKWc"-__L,<X`]QaS!kF<;\nE`43HK$gNA"u2C%b-dN1q]&34e9<XJOW+Zl:@(+:fAp:O3XO&RJ*.3i?d=VJ8UJ
%emTkQ[WOk$[_M!)jj^*)QW3ilG.LHf([0b_n`DZ\qoBqQl*R6h=_]68.*T"("(g->03T0!["&+hrEE'Hp$7gVr?k0!hiD6m2Ialn
%LM-(NZhM;hqq17`B_FSEHQAKeO3?C8AacD"pHdL0R/G>WJ!0ZcI>`n@eS_4_fM;[9VV6.G(mR^;kt<>#Qm.3=g<$CDORT,;Cm&SZ
%M>6uej:G8noWar;oFgGb]soD4JEkiDb#MSMdd+68WZ;3q7r8.E?J$[#G<2(iD1*@We)NO3*O!=ko\.FJK<0'V#]nNRSsmru12CYe
%b:$O!7E)n4A&2S&83FM.">Vh1r)ol!G(,m+_a>Yh'5P7DSM'LsX_"%p89&OurPhQ<KC!/#9bJ`AqP>VjXM6T442!H"K&Ccq[PJ0m
%,l$AP)!Ip3:i4$]=+nd1Z4&D7Q`@W`onYI81e/,c)[l:7!K+(laGjn*VbI.%PHIaifkI@L7cUjm$!B?ge#XWZ<NX9?VEF1q%&s3i
%L!!q#5Fg>o14/%F<S;(lcIhV;QK.WX]P80U(R+T]K4plUe&G@dD4^eiB?'he(,N[P&/D8YU\EEhWmaj=QU.->cjlcu\4fX]1,j"h
%Gaa8&>sDnuJn?PXXA?\aV#ulF]lr?3KXS!ah7Bc!$;%X)m@\=pW8"tA\?7m'V/!#,@bdb?QuBI'*g<IT.C"Vto_i;BX"gB;D\F=,
%%fr'mLqXsh2CtYli-k'O:*:lgI!NS<V5esPh<_iK)62$ZIbU/@lMIYD]i9tI(]9_Gg+V9;P7lX?^gp@p&KTqI.VhlJ[WPtPo4/b)
%Ed4.hRkCbZ[!Z*FX?YgD,+PNI1;;maX_k0eP;=Q?=[[+Zb5,7[ag^_BYd:3/n6JE1I^N+c&$[jd,)StXJ9JS]%We$,Z!ji(l,)'.
%dR4U/Yt[8nXATjXf\=[t0>uY1*'RW0=.]lgLS?#,$>`7@psl?h,cN!3`$mt9<BJJO[ZqZtieKj4rL_1\"fQ7!i#6Zo_8F&D8!WcD
%R@EG)OB$,.DOmNl9kL+ncGBoZB@Li5kt!'7Q!>pk(riF\9"0M!BF#e5bWuru7Vmj4/OX\oHrdd'3!_$c,XCU%&h=0Mo>L>.(4sKG
%6]u5b;2M\m[J]fgFMSp,8Z#'iQk]4kg5VtEH_*CsCa,5RB"iq3Y>;="ABP?.P$&G4!^r[]Be;;EqeH1ic])d9,!F.ZpChNW](BgE
%;NC.%RNNI`lQD@),-&FK=8Y];:W;W23]58c<)_C*M7hB-2I<%TBIDVgR%9+XY1du-gH?UaY\UBNG\VhbrYer/KUBGp;4o%n`/AVt
%F[iP;U<Z?TC=qI4b`bJPEtsh$>3[lOQEuLXN9u:t+O(OT/@kL1f[S3`N:5tna;o#Y`HQF7.QPp$aSp(TTrj]P#*r.tJ(C!>0SGP<
%!_U$hFCJ?E:%Hm6ffi#!gpY<.6-k#7Q*I>tWgujEGYpFDlQ&1Rr[)AR=g\hX<*g_0=5kA[@A7?kWt9dS;2E@Dg[7-T/nrKh(oJm+
%0iTlq9jVb-`h%R;6?KIXghVAY#_H2,S&V6[BHOdb51Z+Y/4A9NoI"(hC0KZ,?"5(BnC6%&a;\YC9V-D..=%pgO[9n_.>ieNPO]qr
%*^^>:;Ra%+AFO_f6uZ/6?G3YC`gDVjCi/@BI\Uf!RTNl=S[R@:ZgO4?Kh,h@TNf=_YbV@F(YJFq$87\2S>^o<(,o-a>nE#/89gT.
%1e%+=>7Ddj:h>!2:0FT4LIpss8tWrA:1VU9LeVF-/uBbTTVEM0oI&HcoPp=%2<0+u(hRB+Zc]#1PR;8sE&"`-$VG6HZ4;E"dgPIA
%2bTZ(3_0Q<E"c5;Cm'D,/FAZ]lQCM9L$4==Y:<e@]_*1Q\P%dZ`&8Vmc^7is@XbJi11tGb2?"mY[R7!j<\&tdgZpR`Q!BNW%T])4
%DVPLLVDoFWq9"6-PKe9pEe4iiK#U`Q#E]k%MZ%#iXH(I$BpV**S#1_e<L9q,eWTPD3+jT2aTYs8^'la"FtZ*h&h_/A3ELSrfpuqn
%#eJZ)P=Gj3'0!5geTQmq:harI+d$Rm=hA&HP4"_&<.AAr&KeZ=TObX^d;:=0W?sf1dR@PmSnrngkb3Qi/r"GbVC<iNrG'oilVpq?
%(BbVYJl<IV_K%YWV;^WN-T5[/P"8Wc5!B$&#sCjS3ep`^D/k?1m+[m9c>j]j>rdtHG-=Wn(fG<-i=>Lk&&^E%#+ZkL&eR3$@pq][
%2*o)m#6O5>0#U^tHNR3B)d,SW[f+0si(/=4*Qf2R$T5W*6]&EXZqVlJ840EFc#?Me0cR="`r'MNb@0nr0@4tBX;8W!m`f^;ZE6Q?
%]bA_CYZ/.cM-0C#P5(N3eg.2IUHFV+b<@1/;L"]Z.o<4F!Or9,Y?n>l;[LTTBX"=$+Zo-m?"t$g6`B;DU:ZhLNH\.eD$8kN6>Tgk
%'k5o0\hK*^+YqtVBT"iOY=-c'prc('1q$0;b=la8UAH^4$.n"OZ6qZgR*Wt,E0V`%7Vjgp^.]cl\I,n'AIdIY73913"1E$gi\aZ:
%"(u5GCd2bd%W=luSmc*UJBY'XR=NGuZXUCNmC]V/Z79(CDGk7+c`EZpZ>o>VfN_EcRA*Vh>8Zb:?g`#_cOLs`T=&O7,q75Q.-QdR
%WjK^ggAYTMJB@*9,%BQ\9Z0M-Vedsu>%<n?$2/f]i74T*9gQOTk#aVZR`CuOo]$jAOI8NCd=nO;G*\p+:F6pg:>9kaPA["m.%1#'
%09n(8G9XB`b/iq`A27tVNL8l9VlH3akULR5#2\p4-H41p67,nP7.$Q@%O^R')l6!jD>RCG<)S]Db,+^ge2j4;#q"b+oE.as[5]Bi
%bsQu?Cudo/>C,sU/-_d@b@9\.n`DA<JXO7*AD^)VPSjCp_mckY/lZ+`M`5<$MZ]+696AP!,*h)=)VLUCSK0f.fq"e%2,D4/h-Onl
%QO^[,.7tApOgOa`4s_Z4%]XkkM/>o%+OJP>`YJln8DC#:a'$>qigHO8(:jlceOrGQ(N$!'%km'e3\4E5pU9H>mp!'%W="lscahqA
%9Fa/c,0)C<(.Et4$o@OG'(k^WobrV)0[n/\fFB%`Z$J@f[SV]DWaM<nWe+/$:n:bhPfq'.>o7aXG[/2J;\6XM/YdOZQ;es"[oTEP
%(65#K&`bXF8tO;_d`?:_Ag,V5d!j_D36r((K`Jl98Mu$3cMZ`Zo`&0i&@^bjV[E+O_;*Hk/I-QS5H;.d+qN5\D\YnYRm:(<L76;_
%5pk%rJ#QDXaOoE+=89%.KlQ*!'4MX2&A6K1X)<Wj6*2giM5F!a-XL%jJi1$un;S]5-neQC/ebEt]2<0_Dmd9S@NNc:H\<iD.#*I'
%)V3pE^+2X=JFA5Z8hMFRij,gS[PR7.@WIp^P;fIUd$PhkBXV)=,n;-L9-o?m&FP+o,Skn=NH0UW+d9Ab_DEtl#]#m"L=U<#f^nuF
%(3#,3)<,"Ub\Thk0q3N?9p\0^jb&CN3+jsUpDNb@<af8.J1-=5Rg3c'.(m4-2>LYZr>?U'5Q.KeIJ2sgX,E1fDX[RHrTCN!DbiR3
%IJ`0]PJ>u0>lC*SfBi\>mEa*BRGno-5IneFVfimUITl]BP:)?n2boQdf9etN0Dsm\l_bGhI?L':T78docT_0q2smMD6<lbNZ:?G9
%@(t\F>eKor`^B9RT7$HKqf`l>Hdc=bbN<hp?S%mWeR;LJ#DitpPq$rO\g:>\,;X@O]dK+\jt*qXoD<AtOg"C^%7K3oN>1*BnOOs@
%Lgd*SV$88-O-qRK73p&t4aZR",aR8p?X$j?a/hj]8Vq2u/-n!U,!/^7@E9WIPMIeH-ouW)M:2Si"q\_Ih59JUqM5V@[#)oBr=j;3
%[bfg$"`\QV/;S:tbF>FKk#Z0Vb='h+!'XaG`tf5KmUpdA)p@9M62UuA<oXA)g1O9C3K!U]mR5L60`^`QPN4IRq[sL_`$fH!]uHM?
%"<:81T`ln]YC`TD).(2<7F\>CHn+E)-/j0=9/U^-F_fA*>_Z"eH[G`25As>IYW+"2<bLrWE\sgZ5X_0Q&K1b]dKej?p<&9F3Ig^1
%,?+"LdQ7[*No@'/!5.Kr[LQOF&*7cAfB_Lr%Tt-F%+>bJ$sqfJM8fPBn4H[G'&Uanh)EWVA3/]#c0R6ta[>N<0Z+Rm\jaqO>j^iA
%pS*^YcIt^1Ld`G,SHJ4h7JhVi>;(FO#$B`F"T]1fV)i_!`!Hq9Ft)+c<X4/;Od!o)VH<;q"%eRM[AO<HWO9`!Xcjg1d;L``(C[KL
%W'qr;H!+=oJL)N<^J<j++\%B<kk6bUc\Q6g+b[oVcQQSMZ^K%h:%>G.PEQWKVO7W49\h#3h9T-DQV(kH<I_.g[7lB$aJ?RRA(rQ/
%g(4_!'Ql*^k3^VZf<+GFio?$5jjaXt&.D9$pu->qnsqdS9AZS&-YsL%_8t%=gXtmVN!lM2ZF2!j727i>;__]VeM->SNrXkhf`riY
%(1@_)(CDmoWM#.V3t_t=CpcO30dH8"`-s[Up"0WbKI'%)rikmo1[kk^6W&$j[L'G\Cl\I9-OoKad/%9a^^8`71..EuT$V@S<K>2f
%+VOKV#F;bQSV+$grEWVSfH^4P<()%*`"s(;[OA65hMK@`Ntn/(Q!(k^KO==?.UXL@[(KNYah8.q5+N:(RjP(f/e#$4%$/U4&:Dq*
%OR,4bq1>3Y"E(0qS)VI#i<43b&SF)e.p9gWPUG\#'j`!E.IaLM''(`8qBP!Ie@sOj8R8Qrf[&2UOX@+uI#aL:@abcCVMj4X'(sn5
%`CFKklu8'sP"Ju,'2h*49-qmbc60X8)R9-hIOG*!4LgBpW_LtsB/G=MhG_KCS-r3SmQ?GUX9Zs1h^hf!*It?E0+o_HK_l)'H+62H
%1;tM9Ln\t+D9q:Rl>Nr[Ms2Q-Xu__k)>3Fg&<V7S$Tu$`=F>nDW:]9*\1^7,o40dJe3b:rM).dm"CbJ\0GbqDjC[bTU,Qfu5,NO^
%.+mV$Lo'`L4&>.^@*)Tu_W8,V:a>B90eKY30pR3*]^A3Dm8sV[+(Sgq+d`#H*&YQ`q2)APJe5Cp_7dX!KB*99#Z?Qj@/)WTdm:nc
%'0BQ>e'VO?I7*uOi=Sq(913PfSG([mHqY%>muW[iV$_rn)3eG@=Q6.(8bA.`Hn#R],fn[mMl&;1GB_2>[j@]TH55*tO_8d0LP`m!
%K2.>a-h&#'(rPV_^8k2oa`6g=GRb/".Y(GU@a8^3E'\'"aWcWFZ0^1+nA0a92(0'q3c(KfibTZO+1&Xf/>A8F;'esLX0(VR7$N?_
%*blSti39NRR`!:n.L<KY-9mRo"FM!een4UsCK%nY,CFei`P18In_HI]`UtpapgRPNGYt4=(tocV*YHPYER9j7-]]crE`MLk55AsJ
%c@JO&cF1X]jOX1(>dp[17^+@W>;<V/0&>C4(E9QQ#_j31T"C@'V\H@IG0XQf4ALS&)Zu&$S,d1"g-K_(_N=o+MPBGcs)>CeF6o&f
%Fr7EPCU/L+LXQo7LAW>I[HVgq>nE"MFPtGGMRVUj6#7`K7\-[m(!AQa7/:lIT8>Dr2"CgkZ#7S%*&afeBGhn.'5ti).#VDoaUkJW
%J7S!(2'ck_!J8d7BQtUBP%ngKqg$$^_2P/4o!jZ=#"rO+)5j$:-m9c[2+[?oqONQ;gU2T]_[IR$V&W5lIrG'Z%d95<U:V>0N:!)9
%jh8-M6OuenQo/Im?*_nb)IPDbRkl1A5V:0$p#>U@`+glIG>E,-EH)9D99<Z7/coUR);2/1^/Brl&aVf2?$b,c8S8Wn8tCs?aYFRa
%AQ!.T1Rb`m7_tee6<8AefFL;sfQs70JB\YIN/VY,-E[Obqp93$<Tb>NM8mW:=fJ^,`9O^H$59;V&V`Ut"U.,G)"XF'ntnEQ)j__C
%-AU?29kKL5&02L=iL#"Y0tA`u4HQi3m:u'"BW[tL/P<WCc[9l9R%#l-SX^,jTf$?ro@@^-TG#u8&s5k.Y.(@1Wooh`m2iO:'RXUM
%Z#)^_+bN;o@AnssOITQgLm+h@;,RUogc:kVetcrN<-4\39"u&m0HnLr,]qbk&/r>DX=S)E6oLYj8_S09UlDRDbp_Q4:;V)bqWm>"
%=0Y/kD11#4krW9d*+*-H1*Td.+`omkCV/n;jS+JA1+nsd99Cehi"FF67+Mp06,-%WTb_]G2.@ufJZHd`P6CaJc_Z(cC;ScYf;umj
%"%8=eE%HnVCtRp14?Hj@M=_YWg\<YIF,%i"B;fK]Z6+_,_omlj4_.$RpuH4'>4$Z(.G*br;GVnDUfGY@*)6Xu2pDF@.Ai;u:/(3c
%_W>P+(p5C?2KmY5gAjiQ"gOAO>+b-%@T>'o*QuMaRpF=R`L==IG.]]%en^@U'e?F+]%64T?^mYF<!!D;\Thu>h23cYo)@4T1mcc7
%h?,EtbA?lPGRotUWm.%j66;,emVf<0/[B_QB]m2p,C7CTmN9\s^&q!CGFIs9kmO\SS<4/C]%R8BBp*KQ0CSA)DrWSt+c/4?FZq17
%WC,tu(+%Qb*DDd,iOY"X1:-adlM9/;]s(qhP=JpleV:jn,Y!])';Ofi5,)mLXgq_TkdanL]@(FS:c*usD.",D\/<!h@hqd/R"p]/
%)]9`_"41B2hn&D!>gdI&9]d6:1<'qfU[tDYL,!=CdUPUu'&kf@;4*Q-RUo5"jM@.M6Zm6bP='*keD:f\VCn5JK1=j"o!N7RF$fS%
%,^oqdD"bq?8mM^$Mlr/ti+FP2N5=$GeZn@Z8AV@CeA8]\iXD\JonbDK0Hj=d,Ba'=r5d)=,;X6loD=X=Oj[XJn`h`p7TYA/]2eQt
%`2s<7T57kc`W9@3lg">B5$EEM+?.S]U7Rst?oB<dHoJC0:Du;S'X@]Vb:m/e*SZf*Ute#s2VDfi'95q\NDiZ8Som-HJ8X[\?*FIF
%3L^Q)WUrHjANg-]*Ib)5*SspKi7u(.Wg*/)8Zl+\o=8dR-UHOri+AIGB+-]lD,V[n"75sH#r#hY\e20;FoA]^<'0];dn;eS66Z%'
%4-Xg`?bG^?.p4*N-BTYI=F0=]Nqc[b!Ft&RVX(icgQL7"X6S?39ooKjW7cVmMXn!8&>qQ6h24qFage-Y`-B^uZX"H4$#;$a:1DX1
%_(=5aMCs*ucW0ImC8,!t7aOT/IbW,'%Xd_'bkO631?]KCU1mSjB8:o)@51>JKgJ\:V#uTT+7)3q%/_Rm=_FgUAS_RC;qFOe1T-/0
%rfN>/amKL72XL!oP%_q*6Gt%p+A>fB-=]>_kXmk2bt78(+@:M7YXMh9B=EBBg":1S-TtkV-?BJgk&]s^]ATQ(1J+nf+/n=n/eO7$
%[V[."*;l>J=(QD;)O:--\Wi//KrM8+ib1)pXj6PQ%e<%n5kb._/HIIe<_g$(K+F<>3fr>K$Vne!GrUoKhJK]W$B9PrVAV!gF4lY!
%*:kbJ\BWiA)oCN)06!1;lW"$8\V&!d/fAptK--SqF)VkgW7<tVbtt#nZh6\M60dQ/O:L][8.tg_TfR0#\ohD`HmGm,9?J):$6Hmd
%9hJG?f=p#gg-O\KB)Q3qJe1RHegp[@Bk7W->l!t>_P!2"M%LLW_nJOJ5.<O]_XMH,O)%1<Zk\XX4IL33^%a$gd=]]H=X(/HVVo('
%[?puJF-CFtC8skk_GAa$Nb5tl_8X6Sa@K.=.#2;!rD%e$_B;R0>E`pZ@Tp,4=G=bHi-)P^!qL\n"P8.tIKdp`G:(q'#n=Mo4@`hY
%mnirG,1iOie8=Qb!f(=3$,*obnH?sp5'Fl]bb^e\R7HM9#O>g,3#9agUm;[o]$+3J@)Y]EJha]1Z,\[5T8=.mB-eBB<"!G[WNR+b
%6oteAjCt/r[T,R/Y`T),NjP<k^Sjf5!sn?qO=3I>c3_20'u:MMbR,6D_;DRL4Xd:5ZpFFU:EG'8D38d52cTl96!UmT].'hphQ),O
%,@qjb1`EZ4*'I>,bd?_B!!`fW-CD24F%+_<NTu.5R/P=segb_o`?FA6Mb;-g$Qe`JgeVGpWUdTCiM5d?#j;Rd>!t8oNL_amY)pkB
%lp"TkPAjA<-!$PKWF(%p')14^-!QO[\6n`u1jfKVQm/nD<G/P*4-sdi-D)UuEF#J1>Xe"a!'+d6M3GLb6>RJ!6FBUTh)Pgc'H$s0
%R68`+0omY6cGL3.1?lhZB4;b&j-(I`*f6%:M%2P^Ck@3>V3Mt/jc'$g/qqZ+_rA&*Q(S[D'I[R*7Q(jf*I02^44,GfOs^Nj3C>`9
%'0^lJ8ZO7/iaS6C\`Sm[:5CTdctX^n$Th4:O12Z:)_7#Gl$]qV,'4GVRpEPgG%aDT+.Ia&]>89J'=8c95t&t7PI?\NS4q(<UI+,X
%d+qb5],U)WTlVO/3Kp>2Z\3)4>9o#mq4\'D9tf84HM()uAubg`-k9fs,&UbFD$`75?VFhL)+oA%^3_2JKI.P6grGm>[YUn*4^<%H
%7-@Ahqo@2V)eRP?SF;$"a9%c_^F@PX;eue1MeK(]"D[8S@7,)=J-Dk\4#c3VE?5?2qMYfZ8Mk!\09[+pqHYgRFko%^'Bcl%Nc#)[
%dXsJq@A[N(>.8#^A/hioEAj\Vc,)sp5aVCLltS[1H=;5JD.I;?q'TuYjsrt<+%V`nq$L0!^mFf)roKRD2mR-Zb$@^1bu8bKf1Jf:
%CN1PJB3%)e:gH0NJ*1E4XA-$#6.;@`@]\H[^:OqhLM@H$]YqrWZMZOP+JeKB7htLbFc(&3n_&!.G))!E`=F-;)Q+Y;UgdHQY_!TW
%E3mXKZ\1k\jDQ]KJ)9n@Fq0Z^F17^;5*Gfo'+`s3U*q;!a-r`\9ib9JDS!"%oBn.+ad6p0SF>XNF4]";H5gc<opS`pK;2\UI].N5
%Un76PO:0&>OTTl)-d&UVJH`Zk@D[=lA[@LL;CNAG>#H_Padn7V6.p&[dR^*DXT."44q'<l"KA>5_jE$?#PmQW[)Qp\j9j'-7!-lC
%YQU7@?Ja;@pCIB-@8a,=Nt>-B4.3<KA..JH33Ga2CR&U:K+*PQ&ZV'HD9V\$2aP['k]VcmRR<ufI*/a71ii+RCXnUb,OPT20UU;9
%YlIhm!^ssgEFD3C\]MVMfBeLaP9=sY%([Xg7I"hH?mBI3U0r.O,&3?RY`]OpW=cu`B@u=&*,nr(AZ]=I]EF'.2mQGo?.lYa$=S'e
%bS'WDNPdG\5MLW)[Lqi46FN8R<H=*elNn/L0^R5FC*fu)\`ih@<mGe.C;D#_.L=g_&fi0e,E>s4&pRih1TkYCh1c\`c?L3r:,mZ9
%$@QesU-eWcXV_.1"a+u6`3udE-jY,>Z.+Rj5s_Vj7%=fLBWqbfi3LQqd6S7%@G\_H2Nt"<b3+XodE:X=$/MJ1:jR'E1(;Q=D3M(g
%QF%)I(K=!oe8,[\SJ$o69ih%I<l$l0X^IQ.EmimFlA#fPqh#^S![2kQbR>M2!g\N:NiW"uQ@b2Y7'Y-@\"k%P5<(5j/Mn/*?uj9C
%3[\EEmJNX<e81]$fq["74&83Q+c6C*hk."8'bXHTqMlkPOS4^0m1Ti$eXCH87W3G#AouapY:%VOpVB_?VLqa41K`=,&h%Dn6P+qj
%Y6U-5&M+uV7tk4[e4iV$2;uSb[U+rMobpRn[MptGGa+Pf)BYK5oifCGV]D_$2+W!8laMOra]@_O\?8lR)8\ZpRlcTR@jO*,!BhZ1
%,\=*J74iNOR8qofS*X<#YA$BAL0d#G7KHOuSm#HE`6fo)"6![UTN,aq,A'nB9bsQrjFi?ZPj:TC.V:Be&htS+aJKc;?)8_<77ImL
%`B:A#L-C7DQAKCH=;VEHLK3HM:Ea1MbW?=942QZtfb+@<<'%tmnM-GfD@pUuUro\H(.Y4PIat-2?SD5`1'4Ya&+k0'QJ"nbc4UGc
%jG6f0)4*FCHWUE/,VH<c3/%VLEq[E6e^?9\Hojfh&Cai?oS//&]EoVnhID?KSQ?<1Zc_tf%@bREMHc\LQ1'(^S(`Gga?iZOc;	
%M=T#ESI:3t?=TJ2,t3,O6T%.G=aoE%9Y0Rs@cC&s;,)aJ#OI5fnesNm!^m_Wbdl=Wj00A7W_kQ'_'*\5$"g8<iSs&u%4hX6orj7I
%0#V183k8]8Q4>ION$VQVJXgR+/7O4P!Vr,h9HrJL!+\J`3Nfh!NA'?YngUMNR<oB'!k,m7c5%eRXXB@p[$W;R>ob[OOkN=7F%4G"
%Ht@\df26P,-lNt?;s[.6<?p*L:_?;_Cf`+!>9P28@t$hs[cZd"@^`;3^!>q?=:uoXWK89Dqe%E894YpYl=EU[eu=H1k?>ts/ld2Q
%jRc3k_Mb8X>_<X)P.5b$$"4-ad5:T8PCk!W&bM)K%4im6:P+4%3rA9<*V+0\ELk,M$%d6,C_A)8+mb8&etmI!8[<bJn9_2W8*#W!
%)pY`X^Laj#(8V1+n25VdA*Ad5/6BgRr[h_p8L8*G`j8t$6+r4FX:U/Bn^\CJco3kHV;f7M(I%G!T<7=!7(,Zg5KL0:eLNG9``+(+
%6#(MtEoL=Ac@qZX@d3'm4$P.G7\/m0:BULargnJJ=;C*9=^b%Rmj<R=k5<rSo/r,lWFs,E0jOU_c!\tEQfPI+qNke"hhgjJhS_65
%r_(8>T/I@4VZ:?'5Y9+N]tbm2C2,sm8HHKX),O4;h[<?1]%@Hk;V#5/=@qadG@4!fIkPJ,b[Pd8a`m*XQgMW@]LeG$P<d]'".>AY
%Hb`=4]3l_R8[p-kLRJnk[XGq<ARFj-2[N<o4THk+MnL5\0oA+Z-NU<X47"4.Et@2#q4`4%:O_lrmoR$n&Us9V5C%pSg]2ed%a/MB
%bQ%*^s7V'cU;:V<J%a0HbA[=?GaOMHl'HX^rqHu*iMQZ+jf#7J<eA$i>)<K"Ya+tW"L1c6j:],R*\?8#dG#;L'(k!'/B@:^_-#^5
%*^H#<md:QrM':^`B8Hk/J<oYKUORiA@4gl_'%jLj905LF6=3jt\!.-0_ct:\pAeIX_<ql$OT'D-\O6\7_d#eEHN@DE(OJGR8f)i*
%?-6$s#OYK9fE^mY4mWZ($2_g_kTr(E4^]qj`Ql8cd_S,oQdWcXi0W(GHb`u\(OH0jb1YYW!qRd!kjs420Oai]"2Y25h&Qi$HIrT6
%;nCTh%MQ/#c@D;G@!>.8l!Z5A9\;Y^?nq1Z$&g>*]q@+-oboe:,ime?0r9Z=!&CgXHU)-$bH?D,b-p%4-548jmQd0O7b44f_,0h*
%bCk"W&%G;<@(QJPMRL&3A0retliEP(UY#r4;nBID3"lhrJBigV?k#432X9,W1SokR!&X4R%g^G:`QfTpk[G&>:$?+L")4K^SY7mP
%)S%Yk-G!<3e&:2<!7WirH$;eRFKl%MM=7nYX<tM\!c&^&GA'^@X.@'aV1ZJ>28K9:#M91N>(bIl#CD#<_?72-bU1PjHN7p"OgYME
%VVDd\J8P!$G)"b)EHVe1',0.AE`7;:#BUX:Bb/ijm'kf%2fYG_JDLF,>Q`m%K0A-O+meOr^^5.3G6gt9YVQP4[/)pn32+s-!HI,8
%)AK)4fH#nadd$7>S0B`G"3B/\o*$Be*\9T;Kt\?S-a`S1J2u#r*mgG*`EqJmYT<'?cRE&G4oh--19<c`_L\ut8>iGS]>J`6B@6j[
%;]b9/eVW7eJT]tg*cR[u`BAaBYfQ/3fa5'5$/,^^*jD2I0A7/N':SqBd%.TiQf+EZYQoQRFE%hA-QXf^4@*<Vn\iQ("3.[ZKC4<]
%Zj05X:OB<-S7d&2h#lop23J-Ak<%ON+)9?^^\QbFN>)82cUcG:5>80BEZuF^q8nsdb4GE`8DtD]n4O0fE:*!shcud1mDP`J2@XV3
%a2%q-G9gEqJ9T&N`HATo)Qm@+]AqkEMqntbV2'IQEO!j`5fL\bp;"Y$`4Q=1metlL\(KZuj*nej\IUR9G6K8*pQXQjTR5";BJCV'
%U?K=dX!&bQ4tKudYXHsJmZr+/rP?d8\go"/U?^HbST/f"_]Hn1I>$qM\jg&dle_ZYbE^B(:j26B&n`!kp-@>#(Md-bGd%G,0"b_1
%Ge84)7,50dQC&oj_QKiLk[97Z$i1pc]@]_Kls8!45i8tT]#<L6#J22LU4X`rYL.PaiC+Pu35"rmG9gL:Ym2%_s'.X\nRBu6NlR&!
%p-@\e2^d!o].5A7EJ+KJDs'GK,P+MDHXZM<(\aToikb'X]XZ>?&:3kS%uah:YrbR]9mhfHM[+SOp#<UMJ^o\7Ym4HN^GL/SlSWk"
%4(>C5WLYbj9fcFOp6o*j.rI"$=@;M1OLdMsYB@NHn$T<Ba7$DgG"1si%sq^Z=r08qpmNP64-$KR@Ys/]&!g>3p0`)$?gD0F4Q!jZ
%(5T]j&%9LM[@OcposG%:j8,3(ZUFNS%sGtdm@r%Ske8Af0(F?acIj5sf=KTTj4?\q--ECt5YIVSj1i2NrL0Or1Y/`Y$VRkaY!q]9
%pPUYI8,Tc!DMe2D"hIu:Inat<*VUA5^`)dI4]l1ng4Qats0W*Dj8Yj32$@<6YVQJ;H<<N8[KfGF@!f+>&hpoL*=LMQ]d4T$4]p\E
%pBM'o?p*'^'A,_@"Y)4iHf+sp/A=@R#(:]3@.^Z.3\\-I_Zr(KIs6QR'D%P-_=h8n&o8Y7=.EZ?Y_Ej.%sGu#7MfiR_57S-NYcN0
%Bo*[C%sGu%2N;C,)Jfq-`XV@+B7V%=9PnG/@.^[X*]u.@&c??fYXB%OLG<hV<8N6PC_'R/KR^kALX,>('CN0f!`A_5D]J`?p\<3%
%V!"J!.J'8be%rg<In63XLDf(=/t[K@O8FQ0k[UA@_2mL$e*>%ZK0\i8(*L]l?jVJ@FlQbYON.C(JK]6NH"T+tV>e4m+S*VLej,Ap
%K*<gs45O(NUheo0rP8OVfs[c,kH+cJdD6_hZ41o"OCV9,QS?PT?jW'6&!l]@VS;I.Q>G:J&h_j2I(KJ-)lHq--C^!5B@(2DW(Ye(
%_$C6M[V^SZmH.Y?-ej9E_393V$i"6gj6R2IChm3tKi#5([/a&^)p[k*b33:F+Q]5'&c,mZ0P*&</Duc)/S%pJAOqW(5Ur89\cc"k
%;0Z_UAWsEd^rgo+#ILe9@S:\%HQMgljZNX19c;\+@bLCJh*I@oMsUqZCtiQ7TOfpDm1-O?B"TGBZ=tf#__$'QBGGL>:>G9!bJ!3V
%ct2NgGM$Km@V=V1'23S)?LG,DcJZn%HFu'3ZAi<"^haOI&BnE^gDP[TDiUAsQu-mqJXH>;fbo\#cH?iZfcKJia,K&k#0:TkG(sNc
%:9cl/ZZWO'AHmPn?tOMc#;icH@L:>=#A`hQrP?bZc"7mJ*MOEWXFW4_K3_oS]*W:$TOnj"Q;GgQ:[AM@N#q\CCGqsP'!N5aef^IL
%_%O-.*paBk%#JL(\Chqi%,G`3j!Aqk[jQCpAtppYSFL!"#\Psf/3o_b^4^L7#>61P#_6\ec?Nh00P?S1QZ17K_#i!:*paC$N%W[H
%Sag*#=D-AO3s.S!hHiN1j1uepcCM^$i19at<Ie`BBY-Vo)oGs54PPME@@ljM=9:XTSA$N'Ze\>KY\/<e45=nlI2@F[G,Oa<q.sN\
%'(d'Ic5s49?!LP55MLf:oQ/V`<l(Ec@6#=PMYBA$pBM';kb#)s%ITf6'Qb-O(LYVYGiS"]\^*Y7iVX,Y4(pPG3#l@kIhG6H#Z:Qj
%+K@Z!+7H`15Ip@:cZ\qVh?RV/&!gVSp0\2>rJn%8Ms!9#CO<:=[D$PZ-&iFYL:1D+ck>3HO)tDArJihVq5qJ<GOd61otAUOHWl'6
%mLL(`fCiTbaD:FP#'u769A"$T07g=o_%QUUpTsq^l>Q"tIuQ)3!3l"8ef_3a_%Hn**paAhD>RiMKPc,jTs3q#&e)B:=G=XNq@X@o
%*\8J>NVb:nZ0ut"j2r=Q"(N9OgDq40SHhSBlk1Ao*\7>tm?$ZCOU[>b#=pba=MeSfI<V?#FKl%8D%CdpbJr8<_.E?G$c$R@fGu`Z
%Z_UkmZYfI(%\)8ba0*5230:a>B;:6Q_6ZjX>/FqHZ0_gih1`-<KXUQd4,C?<]nFeA#>61VHa&1O[aFFOVJTTiiO&!g&l?3$Aee4U
%IuOW1G+\7*<nfOJ&t[Mm/>9K=_62_Mf"hu*gSF4B!OhlC?A7&"F4hFA]5%HUQu.2#K2q5^M=(DPh.O&MfX;6,$+E'FK2o^(Ha#Tm
%[dCIKk]VH[JDIY^^,thmFg4%#[YZq9nEp3_=86Wr+a41LmUGA]K%i]K,m\^EY^k[R,U^d2Xt($K:u(bPG;*ou[?bdep0\3Jh;;="
%Enfup4",:h+Vq<;-?Leh\N>3?bmatm%@k$pd.Tg<^jZ:>f#88rgEaHY8@Lb7*N%R:]`h6Ad<C?1m_\&eXP4dIiOWke]*!5OM`&Rn
%Ha#SF\&n26fPZ&?4)hZWq^$@YEZZp@d<jf`D+j='i8)`+!l>leQ6>$R?c%'BK-cV'J$=IoIYSqRe]>!"khR=3+ME9AIaF'7CV\fq
%Q^sH#hFG&pRTnfcG($RI[C^4s:G:n>jPKF.JEllXmhH-&:HnYW2gtM6lW7Hkq"h%\/,fA.(Z/J(/*0j)?bO-4q>Jjg%i;^iIR]';
%2TrjPs,bWq_7:<E\ucVH?'D0sNVm_@<_W9Bi3VHc`JDher9",%a='5H]G<lVlXs,l:2FD,MNI<NW?]KO;\XC)coM-r9PSGP(1I[c
%8n4rHqd7[`\ppE&opkC-[2l;TpG;C9kF\<;^O?'IS%CIk3uj?BAD^GM1c*Q*r?q-0\<A"J8>2\u;@ZShOCo<@"FRVHEX)G5j'I^<
%o.HiMI9"F!`e6Cm>T&W@>bY,)?06`<*a=<F'$XOt'`\Cs/'\3Rh2##jJ`F&3Xi>]gc*V<*1niOD'm>sF7$1stan"W@UgC!ODV$/I
%8k%t%fGIcIBs=V/C:0_7N)"hl.XHiNI4??bI8d+BS4OE[RW2<u>`O3'1ae!,^'61)R&D'M$A,f(-$us1-e-tGQ5oWhY'9u+6jHV\
%1<g#46U]J;k6X!JVujUY>F0@[`VQ3JiD4j$@W@]t@=V;(6qtF?KRmI6-kpMh"5p\SaIe_)ohQ&T3OBtZQ%tkD^>/h44?J(n$-Q4K
%WLTg_flM<lHRTq6.!%Wu(!Y`@U?$Uk#_M;$V20fRLiEK0AWD@:5V8b`f,BQ!i_SMF`!GJ0%?-2W1h*bJf83m4`28hKRt)Agnkt^(
%8!#.US>DZV)d<kh>qF(iLg>rL<=mF/V_1l>84Gic/(Si0qjt--07aTIbE0H,<AYuK8K3etIA`fH60m7NM1D=>E>4$q;fIGQNL5iY
%pJE@>,cFmh=H9IDVE!X4YkZ'd;+PQ*Q,"s4/!N<WO$'Z?(*>a!%Y\=NBYbF$iuUtdin;rX1U?9+2ue2Pf5?A`gJ?+5?@RIrpA3=]
%Rr?We^GpLeoBKdm@W.n;lH_Cjhjp>9p?(e=8H<rN[uJE?drraFl(A!!+@\(m8juYXInm_-VY=V46U(#Z7ab;a0<f:LAQa.ad^nRX
%is%ZXPkDrJCnCOeBcY81C0T1Z?#d#3/?]+L+BtpYaq??S*,5O3:c.baK*;UdDXaT'6$6.,ddsd^'8/e"^oVSU]%)2-!BX'0VAPh*
%8WQ;tORVBV0gU$eDsuB/.PYif%6@LW6r:W2C&.-ESj3,N474MS2(X^tDfeGHca08;n4H8ejnY+s%t$YTi(S[A$&OCq8qjQ<Ca`<g
%Vo1'q`cAF7MR)NpJmI,4(lAWA8"!B`OKge);cbU`U)8qAGi9^\Eb]$*-Z\%"Wpf9J99WUGi34+"QiaK&W8]alP>o[O@R.K3(u_(7
%Y9Go4nl"94\H&&=7no1LX.Lo$/?:aXgZI0A)6LIlA$>T3"^/+T.uPAu`HbBngItE`+MK3p%$6_\Z\4OcQ)G7M8NDo<SsWS?/\'p+
%6CuleP\,P*+M^G!PJHA+F<.]j)ncrFj^1e`&i4c5)?ro(L'VK`E'iZT&hC+*H=r+]"=%J_Ebogoq'<?cg?GiZP(Djf]M8@2@@#tZ
%FJ*soa\O_p0Bmq;el`\*,Du//-;4HCCF&7,8A52H\T1rOPXbqbdtGB+H]Gr<ZiB4AJ$rk^s-]8Kn'=rAcX#sKdC3sfOa>bjA'pVM
%]k*<+gWGDoLmO6>N4mfs;iOcK`H6=Oq?n7eeKW=lPH1Ypdr9YSj[GKnW-J2M(,V&3AS)e%"F)XQ&"fA>LDS:Np^lfRhS-i%ZQPO2
%):e3?TL-;Z45A:9%P!d_GX(]aVM`gn<8:[BMNsVV+hVrZ=Vd8i`]Ujb6U>G#%lLmo!6Q3mZ&Zo'.l&D7JOi^3!E^\efTk2=.N+Jd
%!Be;\'Yt``1L/,!JEa26p,Ik*0a=UE`ki.VJ.FP"3jhO/g)$k>bab;S;G9[cD6?>-gSmmk<DJGD&h3.4:JiV2=+$s/&KH_E_PJHU
%Ks-cCBiY@1+>FtV]V8pm(Ggu8Pb^hY'04?Bp^&D;C]J(C+(7^fK1cg!XaEi@O&R[RPB_/p5MVCC,"/cI_!V4`1)8ejng55N>!ljC
%:F_[A6/l<bY8lA7<+,&tV.%V]D"@cD?H<a3^fue6b3D8,Gp?,ml3Ej6<#'_MnDF!jiOMf$^9H1eP!Ete2_%JNC_cOFVLe^@76+Yc
%l[sQnWnjIf@hNSg^.4;D*(Zh9+Zmf^JLmN*1"$^XM-8CZ-#BOGK*ERS*m$'5=HV<@aU>*RjXhu^2<.6==Lk'S$9.QQ5No>q1U+Ml
%E,+tsJn3'W@WLB/j_XI<fB^O[Plrp.T2EJdgLeWn?qDKdH9i?[Jq+V<b77qI,s)*Ua+4+TMS7`rg'VR(@R1'(H&p]lWHD<@"q/M<
%Y":!2"^Dr[$2(%U6n"aCenbCcM:bYE$S]b87E88`P6NZh%61r7Gq)]-9l>!>!?isAAD97OnGLt/&&joJPC?%b<OP<bH=gS_>=*\>
%"TW/Js(0.s@:03QQXNQZ:+E.r=jZ<["@6EB/Qb[YFKnB:5uIC8r[`7$<UhI!T;?'cHOQ_B'#9fK<gZeuI=oI.Oemae(e%-Did55E
%8ZmZ+;%(T#KVSW/]7=schOS'`.cTQ&qZ]=QWp/Gp/#2g?T0lZ3@KF*Wn/[6_Po'h+RB00m^;7oqYAnK*Japqsd3MBk35:ZV8^*uB
%^o%>Nkb[L1R,F0"(gP$Z!kja3b%+%BYMqCN$q6pkcm"UXPn>fC/`HjQ0R2?Mp6P)2%W10WPZ]F8SFojsSQO?OSXe*;UF>p@eAp,/
%$)pi2I`eRSHne+f<!*-:TQ7k)=r5[)R@sNm1(VElJ.]g-'Eq6R'qJ)b@X)(ZK4[/IXBFlpkHIhl*1dP(FMsQRgabJ'`@=.*T46dN
%=pkn-6WFB46(qPUN^/DNROb,2eHc6[Qe%/HZq;$rZ0RXUP`hJ'fVj0JrV0't&0i@Y'7#k;,;a2YA0i8kn*&A(_8@CqK'lU7EhOC>
%7<'JeiG>FE_4cqZ(-1o"K^kr#O92J/Fd$NJ&gh:^&G2!D$Hk@5PZ[,8gGpb2M(qlS(t;N\\CLK`1ffB_E-/323_qC<B-hm9[^
%Tu+"&ST69K[:i\lSFB$+9<%,0g#o5Z=+f7u(68F,R_"%MQjn=u/@K$%p<L*/?OhIC:fa#Q6j[!L=Uo[U\?7B55I+Ygjs=P*XW"B.
%c0%->.SOn]=,P4&+orli1!_C$<"mU%\V,E36Q<9YZ^%%',O(Fmd-uhnE*b#*Ln#TL:%T;[.ZDl%<<gRUD1Y7J^`ISGh-CXiM&C;,
%SK27u;du%*"E7$W%lfCCUk?o_jQ-)(d3cfA_FSFgc"OX)86jfp,hA5+KgLJ:bFtiG:p:?F9UL!n]O/'a#9f;JmRW(+p<4(F;nqQ9
%'P1.*'W@@X(]iJ^QqYA-RHUK"8N)>D,f^=F@<0I]0-)<\mBd7g_YgF*)VH*m1a;U[bYBhE8/j%QK/Nmn%r,X1R[Q'=$'/s?%t`@8
%hi[:VUeHqoqHP=u.\P!?TeKLj"^-(7-&&B.S=K015^7QSj_`]T<QX?%<P#+i946pYHi6Gl^iR'--H\-]!f"i5B(?Em.V$CeOgkER
%&RtC'):@[k3A%OW=94U9qEc,g46dOgS$fg0\Iu<+%ghS8KH7DdQT>-hN"fm(3"?_'[pR6*),'>'.(l[7LRB!_TVrO\(Mhf6rF*\N
%T5[L-jY.,8>KeQ@AX3W(N+2t7D^PC@5eqEYO%Ga<,0$UT<tVirkVr]=001JBhqj;3lf-(EhrU6X:>gkP/c-46fRe@6:Qp$)g$'-6
%NG7oN\TWWdOdH._.=iur#WgVRA7:at8q[iS61oW^"f6gkP4jRFM<gBC$nHH]3"IiT/j:Gf&#X?h1d#XY<[bnb=V/EbgX+,689-6H
%ls0*HERVf_-`Qj>;!](0LPV@f<piaN\*+6tnHUp%PGA2%=E&iOp(@:Speit7^H`$iVZX]ZXKdp<)clGkd4HP86b3f=X\LFbO$KHD
%hU5rTM\,]k<lp#N2&QFqr#uuWD4Bs9(/+p'kXP0-i,'fK(X)]-0?Z?LZ%,7m!b![XEtfH!M5[lQ&%9BM.[cEqYIU+jVK)Yn>o$\S
%9oc@Z*O@.=E[U[K74[O=a&)Gr-^Ee,FoZ!>-C%Bfm#0nu7TC.9"B$7<`*(LH=\P/#1GgSa+3EDAMafGK+fi78*<=4WMK_U4dEU0i
%X6O[qL)N\II[69@[Du76AWm^#$t]9LB-Vq3S6,'f;11\5j;7+Yl^/+GB;.T#oUUBOC&mdeiBY/][WRjiFakZ=VhcM?73i?E^/jo^
%.XV?QM%fTZ")mJFeC!KNHD]rI<!-Z=;Ve`eU,,$h"s[1-4MEhHhq.A@Z@5BOe#XquLZWB*5!P'7Dcm78:Sb?)6V+CO6W+if&d6ZA
%#cq9"[tGAr.[+J_Gt2LTg"<"K`/^!,mte_^ZFdcbpdV#QaajafWbKNNQK.[M%@EdY_=?kqqd@TOAKM:f4[iSfer)o7-b?rF%"pl"
%B^)<*+OUX,)(.p5"S6Jn56)un-`t6,$.<+%"q$5ZXF-3F:p>`J2IKrDVHGBub#_Z^>*Ho6[G3BanmBm]X39?Mo%)GrcTuQ=,6b"Q
%8dVIU\n`:bV&sGls*\k?ofp,?=Q8qARk(r*"H@s,h=]H&<u:o-p@?bQ)sPms1QOEia7hO%GCTS]HaWCRod51!pu_.lh(=\j2r$;6
%n&<i%gK,o!G[`n+M?[^@GCQ]b]._Hi%'0L@)7b9h8gVq;=uUp9Xh(%Eho>)b(u)7Am6NLO-:$n6bUn(hBPk@_b?dY&9/W,,b[)gN
%7Z&?])Oll2-Q%(]#ErON"hJ\s::lW6O-3ZZFrZQnXOU;[qO(Uf**Q("\75DKMA+&r#3HQ:e8&#;863b6B:&JF,"WtD9Y?]J"kskN
%RYIm(6q/aTP(Z@M&pHV;%KkdtqHB:ijY4Rb8\rK)jj$P>4,Tn5`GQe=O9\BEO.6?Vb8R<JT;+$O^>Eqm(_oZ/J.)gaUZoaPOK!+s
%2.I[`[7nPsU`th?(1*-FgGD!7X\T!NhK1rWKgit>Pts(qf#U2kj^,r6@.PRt@Ihi4KhE\*i#[#;&TO9s-C?lf]ckL3'Jpr$H7$,1
%i%QMN\C/rK;LYtbUQkK5%L?KH:^tkV#k7QdW5=`Z27sXqc#g;5GDTIS`+9'S14_9t6`3"=e<tuWbdriaQItH=Qt)#&9\kZgaq-It
%=j?">"9ViQUq_h0*&Vu!4!6s\1/KE=A<Nf)AJX#=qC"G+B$$4#LbR9DR*SN.HmgLoF!E`,>(`dSVQ=`3!2k&e047$-HL1Ia@5GIR
%FI),e(lo6<<IG4]@1$71"_KOtduhegoU/_+Te0X4MeAi.(\Yor$VeE:i@EI%/j`U7/+OI\>/9`-4MjE;6V3aiRon1(=9oKcZ&_%<
%TQF#bVR5o?R8KE!bsI@(AY=]"ZDWc8$Sa@M9.$&T#UFcB;'p&<UJQsVmi!daPgUg)m53e9DRoiFRLOmtQD/47f]T@=P+n[P^BEV7
%ZGB0<G2%EW8=i9CNeHU9$'q=T(TuGZU4I0i^#"c>Okg>qDh9r:CHtWkko`o1/1.9&Q-4tX9+e8l/RB[<?pZ)GK9#_?/#k^p[E_9q
%5Kn2q&?I?DN`p1_.uK?01#cGj.b_AL+kP5kQpas5opR_34!m?n;FG_\pRB>k?mgkU0U#@7l3`_p<"mEqpJ^k6:g>J4"!f<i/:CDY
%c6NuPZPECUZ^S1I(_XEU%!tTU/*%1T!kqM=P49_a[T/0FGa;naS]2iNUEEa@&n7;B9/!Pt#u7R^1>'MeRg"nCLbn<H[c>D/1%'QA
%:J4GG3HU[cF48"\0NmN*b/Gsb),"Be:?0mg[kok(_c#.X=<4s%Mai8sn%=fD?0_.2"^Ud?<0sE3KUdD8f5bH8h#u<Jb>RSrP*11A
%O::aYIRmB-NgGjPPsiij_""?ME?2M-*@2PS!e>7q0rVTI$^2lg^,?_#SM]V^%-nNa;TUr%k]KmIFmboNk%`S_Z^es+*&CXG7_N;a
%8`N5$7@D's+]I<l)SMFO!NORgC*i7>fu*[#"uT(CmRNZG=U(:\OL%ZuT6X]F9%%G(:*NU'<@QNZMpFpP!<j=5MIRE#F)CiK`*&B*
%M)dk]P@h_=foIn!A-KX.gU>:,DCQhk=9FE3#reYu+OU;t@=3u@"Tg'^7R$'a.FQd`i[1./'9!0]K5"u>Oa<eLL(i`@CbL>S<TLkm
%B#cGGfjsMEnp9':6'\&h&l?\YqL(:AW$(WI3@HTg.uXo9)+6GqF-?%@=fSL1h_2YSIhma$#A$G[P9c&Y9/<2uQ^"k!\pmiqp<n*c
%Xr>Vdl>*a!K55VV$n@:bb_aXC#s@$mZRX!/n#P*l=(/#JgJVT_UQ`2$\W8M&L0;ahLl`mb3K'TCM??PT^8?;pkr%+Y9!MZ,3frrH
%B)+0m03BoCpPUXIV4gEg%12T1YQb2k0O:ukZ]t?W,=amEA[\'<Em_HR6@mHlp&1l$CLicJ_TiZ>s/g8+qL>U14Qdh$%`</>-Fp9]
%aW[!&K@E;%5q!D.6XnQP:tBX-SAd3`jB'_#e6HV%J`MljG\EMJ'=#:W/V>4`,t0W\2PelF5t#,j:hD)4(F'p!*M1Y?ab.Bbb9Glj
%=pu]TZH^V0^SD:V.))5t;OC#2IWk"QA-7tX3)O.>`S`'cM'R462:=NOGGj?MHj?R@@D&aC62Ul+,AA`).d@YjL'XlC@J&3,mUa.k
%Jme7DLhZZgF9*^_/^JJ18I#6R:RpDio?V.T+WFZ%Io-]>iOi,X2!9&+g5Y1SQ]c&b*mS\]lW8oe;p[8RF%O#WE'%(t-3PMqfGJ<d
%#cPqEo)/iHb\<`V(4Vu1XiZ2u6gS=c:q@3nmc=GX.;?n1+O-mfWf?'K'#Z^-'Ilr+DM*80WCoW1LuF.mS;*a\AR@;CSNTcsJWmHN
%^1AT\M$D->Zc^()dJ&j[VArtcTjVFDZT0Y.lhcciP$jZ9VP94o9@@nVi2MH5.HHE%<P(FO.l4LL^M4`*N2WPgHN#>Gob5]ZJp-Ug
%30?o`AOT'\[Sg?&??E8QP1p'_K3UZ^Db2:o7gec:RUi8M2%oI$X$Ja<0TtqAJ9YSpCIa:!%;FCl3t;c:22KSg9#\-CW&KF_9GK<F
%[;CkEQ>('pGRC\*#`tRPOG7l8OCuV:q#jElYosjg2#MleMNm7S,;+q:@hEsi>3NN<+/9<2^!Wt^.WP8UK@%l:?[-LPV(SdmR\l?-
%3\?%8&N<QF5Q=\P#AeMF0J%o=H7iclK1$rQFe=:i-1?bP93,-bb\CcejU>N']V"t?dJ`%#3)t,'ROdrQd$W]N_h:aB<>CCDR'V=7
%[<iXeeZ;mY>o$4$526/BCQ$K(S]LsbnP#rm7q$;jP.aaU<nmhR0hn0k^rKYPUo+OL\FO/s6F)u5m(8QJ7h2T#\rB_!U(g#sO"$M+
%.8!8QHkMb(9KaXK\`iIGPc(J<Zc/#:[>^6<'i:BR>'aJ+C69gLiH,AsMc!,?7?SSR0LbaURBjKr_Fi)gQdgK$,!H<ZC9hHS.oqBs
%-'2cD*&^lV9K>DNU^]IA/#eJ8,arC7paZrq3D/Ro;bfYDjj_Qg@1Xf'V5Ts'Map`M.d1s%E&`u[-R9h3C(`LY`d5nR<:,p)RKTgX
%>,JC$&K+EAZl`TJ.b@1'=`[I*.>bbp9-$&c5F=:oX-/$)U*St5(>hn>'8hR-X=P?[oUVd$C0jk/mXVT2+r$%[pfE`(YN=I#S5e/0
%WF'J`PlVG^C!ul\;5?`g;;7[@]7?gk9c.I_L-5.'<]F%[,J/\Z/C*/6mE,UY<3=4E!i'&,`CRFfZ^NBVR'*N-Kr"]@ok@C:fVA5u
%]I4UP!ib9JTu(-uR2+DFCs.]9?7EWgr4O@uBaba$>q3Zh5_t;'1a8nI8qN[g\5ks:-F(sMJljbii_Ccrele;1auO%\5>Wto_Ek[o
%-Ah@GYfd=u!LK@),U]XDLY*`)ZUWhl8]Zk9"]neVb*n5Wjq4SQ6..j4oL]\/UrnjjO'\g>s!5uJKZ=)iLk?"ua;SYWEUe':o5p*=
%7sVqF!,?2G>Qfc(e4&7J4h_U)o9&#Rs*sb!FLdRp]GA16^j"EC2gg78E&VRRbfVsVr?.T(&$K.\0.D/P+,9oW#"b1!3WM!JqWVq#
%iQJ770f5=nRA*Bu)ORI/Q'IWP2lppLQ"SL9QLg2`53j2_%dYJ8V-hErVpSit&kWHe+PBP_g-H'AW3:gX4%dd1Bc8t2#Yo+7!D*pj
%&r-8jUVlV"Qr1kn&!V8NqZ&#tD%,7ZHQ]6ZZV<X^j42QMo`5TAl\F.9*h/%U+Ygc'*o%nG@\!%sQn21UBS2#Zl7=0Kq9Q!5#<b<f
%AgAh<VXlF0#6G00UH9"p'KL!0&40E'33pFn$.MgiGo.!DD:-U3%Rhs.`%ZEAOmP[O?,W-V[Qm]GLh7.'E/*/dHBH,u'A#h+BpP]Q
%N!$XWK]'8_(+V0s>b>,f29)u(91)jh<cKlKMNJ/<:WjIi%:tMkTT"+s1/e6(ejR5aq%:fbX+XW_>a((IdBPC<=I$oO'73(qMKE'[
%>^5+"Jj#T:G$2g;:Ln>(i*CSI]*:2Lget4STaZ#UXi8_Y<#;GH[a5om[NnqUJCL4pY(X+3!AUe\%o:j^KEUNp70r)!pf=m*4hhB)
%>[YP:#$(<0*1(EqXhAoV?9UACjBd+OQrJSA.0q\!o.i7aFiQ<T@0(3&d[UighL!'/A&grse'JdB3,!A:(.D9@5=Qb_qhBH5WD\%=
%#Ejf0ORSls#,<.@:G"!qn:5,j%?eYNe,s6*\[hdnP+!bg%j&(d4!p"]&%i&Tb[FDWVB!)[7C<-e)KIVDJO?B4j_M),M@^0/OGh9K
%UqkWW+O?,OQ='rV`WD'0Xpq@96lcsJ2N]>n%0F61,1g*mW&%.I6tChN0Wo(2Fpe.>WT#V_9m`1.&Vd9E!(h2,o?KPS"/HIPO\*c)
%%&4hlRfbq(#ej=d"+,a`)!l\o,H=p<J4:RSK>T>$EkK5i^s6I,(emAW+NW!dPP("*WbGR3\kVa3b]ob,8CPkU"Bc5mZb,tqkO3hA
%]+fQaL9n(UE!sATGCO(qDeLIKqa&/$OZJ)d+UY1d3G_1a'0VR'4;9NZ?k8p$B<!<Jb7pE/M_XJC;C+SranKdda.8ZjauJgoq#V0m
%dp!mE!bEL9A>E.68Xh&!;/Kf=Jf'u7MGWgUj<4l:er!).hIs`9%hR*W&h#n)H[:gQON0XEG<.)WqW-3j=mQ`1d5dng-;.qI70*7e
%$7S`0\/2h$\:?ZPl&P3n!;.PLc8_Q>-VFi`p6*K<_Y=0J_QoET$A0"3/9_.MD'rhJ-@uFi[ch[<.d'k,=elKrWC!&D]EL&S;sj=o
%.<:96W$j&M2$N7p8('d+YEd^DPYOL*^%]<FX$q_RNQ#@MYfu#:"13.1Io*/kBKQg:.H]AE2"<(pU+!A\U`imol6e-&T>d7T]N8:5
%nTr.Hik=qkc<ZZ<L7(>RRjZ#\BT`gZoRm"A#!E[B]:CkIKb!#;dN]q;>"r/$A\J='7QM4qr9@S<Q&Q;OUCueKf;e`g<'kJ-bUh@D
%GpobN@;&=N.M3P(Q`!,M'qlHaP.#eL#GMdM-fMo)ECS)ecE9XX?.]bMY$YQ*4*Mq_J;Jt=K(W<B>.##AD._m]oesjmAh?9$jG_r-
%!,5-N+^SfmC1&!oj+B[6@MVtQ8Cm@MN1!+`J6pSk@@%kVok8;OAe(ZNh\<!o*Y?O>qYcd:%n5%tcp8.BTf_f_.5TEX&h&c@^L%%7
%3m*CT^B:'e+nCiM,q#W-(OHHk@$t$A*QIRe!L#BQUf_`&o-M8Z3I$K:jb@lt*F^Q>_#t8a8'SRV"AiBt&p4i$`@sfpFIi.>dVpW<
%Y\?aVN/++c=So&ST#NB&2-OrD8EAdep(cQYM%G/>!mCC*+;pp@dh#?F,,5/qCh$s#S59kR0X4YoA5QbFPsP"*Uu?#q84+FK%bA>-
%;o(IQ#n>W!&k(&5!PT?PZEQW(81-kJN5*EI7Gq(j$&;3)pb>=JjG9A$BC$nYhDgkWhP9g*LN#d,ooMQ/PTnCbV_>hD1C4+edEu<E
%![VrPG3^F>>"JiP4gL3%`W,5(Om37rW#LHL,7RE<emPT[fN[@*TtN@kl%rU])[P231-2["HA:i*S,nPkV@@Jc[2n8'ZrpHR(='M/
%_Kmp`78"(V,G`f.6`]PArWEMmQMZji7sjaMa1KE:(e8LS)SNIcoZh'r3u^WWC_FFf61h>BcoW16mq`?EN?Rq-1[(BhTQ`;FhUqmT
%BCk;'N1[R6IGVj1Guq?8SW05M0mVWmi-ACFk?X(<G;XO"g!G!`1ZrV6S9Hl2hUTDeBCk8VNLP,LD;N::H"XJGSW0(^2JIWT(\0eH
%k^:SNpXZ+TXgkX+]6RFG'ge*.A_/a7RBm-GT?9Ws;:%lmp0D]KV,f8\.'/>>^;4jX%,N`cEIu35C\t'X=h"52el;Pj98dC"]Yjm7
%F16Hn9Pl"B@j/<L$3FKl;A:'Onk24=%5cmDqJFSV8JXFC;.BM*+E9l+B74SY1N#lQhMd,bY/J5("T^2"He04<DrsYfj?X>F?XJdS
%2elep(R5S<daOXbJOW^@@pV`H6T:rLEU]JB"MOoq5`$&AWUB3@J\$T,CF%@S6gZ9a,;*njb!2KAfOgcQlFn4mS<[GOUZ;3iB]D2C
%lN\V8fhG3QF#'B"fiBu/F:)SZe/VISk%DQEX&t]W).PKL_VAF8+r_:J4nFR;Xj%L+\@)NP%jf/k!?GQtkLf7.!QPWpcc6I=fYt8'
%FpA%(4ZJ]*`n+VPk#mXGSbtdATnoBn3cgW@;DbHDAqh^/CH3h;HkppI>0d-B/CPG\BJBb?Hb`1p4_PA6lF[Xu:-74WOpiS6*_9Xk
%`Yb1*!2tS>Zsf?lBl3\`<e*Yj3,etdB;;rL6MWT6rThj/e`^ccA3FZ2\230Y`\C6$dVDqt%JXR"gF-^U]s<I3"=We#\W#&-$Y1H9
%:2%QqjJ7586'Gc,)!`$DZ'Ql^'G;Q&KgB6n9`jIq%D!_9?Q)m62Gkj"(pP+sX/Hn:iWZ=V.8!bt;l,lapjTDMqP@&]&<59:_d3.g
%Aacbe%7V(\nHS80C.(PS1f`654M3L0HE3Y%E6$ItCuqZ0)!A;<,l;,D%(%T*NPY$>;tP.X>P6!WOu^Ms:_W0NHLJ=X[+l<E')Gj\
%K7p#:-$NAu-1]E?L+n3,[i%+1e"uB]ha9[s<gQ$/J"K(Ra;U\h3"DY7_Yp<R@-"ag$DjHj@#Zt/AmKITh&tj$cG1nU8C)fh8']J3
%K,pAPP)b[G^*:TuPR<kt^@BFH[uptX$F/<(D&5`Q+(T%iH9&t$)2s25g$$f#K"%*I[58*":p[,f0SLq%X%.FF@M2A@Q6sZc\u7#_
%Am=ts266!S@oOdnAW>k^fiP!DaC\ou9,,,3Cbf'.)[BCua/5aRJDMVH=1V,3k#*kDPbA,iCUdro#'=1mBMPNflsP2R)ESPF^lm,`
%$tF8H4:E&Le`&C>Ls?eibmlh.d5E>UZr7caT2F\"/82U\nbaRBTi<%3Z4a4AVB$`&`%e5/<`([]O2^6R5qFt$HBHH\RXsO3i_bSg
%FM1@J5aBj2UhMHNe<D261Is(LVJ6pP)Nlj?GB9Bi79:q-\kQF&(!^>S]90lpfubTL.i?qQ+]sQI-j2plEZXSPR*VXk[%Q(6SEj^H
%"61k9;/(.r)TZ1#gt!1uE-*uj$fK+r/V[SeSVnQF3:q*1</'5'QdIiEFWWaX8=2o/@R+UKjr;K3'Q%NJShO2+8MJm9PiCh.MS&XA
%bAfFT%&V<o*Gi*%s-WZ)2s;j`85%NiDNsW@*=gh3E6W6:$$f&3SiN?)lY(sb-kKcPGgDXCh;Z)JlkglLm2r`;0sto7-r5MYU9:6B
%]f7qZW@iSilj:T.<`Wlk_cVd6@>d!;`=j]NY\f^Qf;i-JR@5"o?*nd[%C8BGU2>J7BhSR%\A>@64VliRpb.(9GZ`r98#&[_EJ%,E
%+nTo&JG[J[gbYl#/!W?0Xf*oeYA5`rYhhr/<l"XYNOc.pkblYL+H4Hnd7cLcQ9m:(2o%Y)0d5!fT5bdEaNO-/puDp?!\`oGIZ2[m
%/J+elcZdU#?:LfMA$j/Z'[Ve^M2H'^#SZWK"60p-I$WiN%)PVMG-[c&<q@loVc&q&cqReBLF]40arA-cNV+IR1Th7>L9MN:ri\d-
%FOq.5$b2)[$:XH-Y`Y<#j:HGJfG"]\e"[`MEACZgg\cfm[F@i]P1s7+NU/@J0`*>[*#rKTCk<_PhXJ-*LZZBG0kF&b_FC5?_U39\
%k`_?"hF1*+QF?=C!g@;0XcE\jp1-YK.\O3gZZl%:E.>UO0\Ap.J0o/!R8X8SE(7h75KonK)M4EQR4:(1-4m%3O.EO[]gQ8'3Vb#8
%TI>8S/7t-Sd"p);hADf4Ls=dc/bi[,5%7lcN[1)E<VO/4-f)4IT/O;V(nDfHYRD))Z05[q-eCiG&.UXe!+hF+,6fkkS4t0U7TPHs
%8LRd)E?Kia4s#HDMNZFl;aL1V?[QI.M@e.JBGeJWNF:I_dqgfoid=#Y$6E>R;$f6ZWuZ/B.BLO'$3*UT<4!HaQ=GPiJYVkbihjtg
%,d(CbK/H[9@9r_=,dPX&>;!pr[tJaYhZqUj7b5!((`&DIah3Xi+qkOM9r'9TdDoD(./=$JdrGe.+P2DSddA?*"qU1,mgCL->bT8(
%:Z=\QbG@R]3P_$gpCF73.Bje#U\l0*2a!.5*q*cS!I/Aqh--F<&QI"-K?$]$%3NKn#u$\1A-hlce`M1@U0/C:B[4'8aHsm03dL#2
%kX5m98#0[m0J,S$V*]'A!\i*dr]js2r8+sbm#kJRQ&6\!n'D>:VQik@jZ@,8$\_/Z]FP^LclpS,)%C;Dg:Pk'KP.k^D&E]+:AXdW
%M[(*$2SEE]\l'Fc-t@/m4^HIW2UX-2E"n[NSb['C&joMRf$U_AE$cG&C,S3r=DbZ&i[8oImL!/IW52$<0UfO@5:.+jU1ha2EaonT
%Fg2d+$eEPDU$X!0QVJt$&FgR%45^>!X<?Ss_O>*L_!-+O+]:CIDQmUP5!ne_<0Kj!Uu&TE\q"iW0u=<\nSA*o6&;`Tf%"h#YFQg,
%0V10uE]+/68#+bEW@5DI*HCCL)&seA@SLjt;hTRh+_@#nA_S:qq*d.6c5^K=a0g_nK$':.rFjD@s$tZt8#,?]E(\Tlf*ucUQ\V!;
%CWaE6-(Deca-Fe@&M`([G)_(^;E,rM6u-EU!*,Ub?l2#8RUkQDUQ5:/LGd6p'Q\F:!5n30(aj)L+p:&IkO@S*5s00OHM*Y!%r&C^
%ES>k]OG:nj/P]"a+/RrS22"=3ks^gSVU!@q*5qB!KQ]!IMGlTVE`-R<OUi78OEs7X.eCnK+[A*Jd<.>CWTTs7+[#EsU\Hs-1im&G
%q-MbiM1AAV#-O8'8BFcgjM]/;ib\QR?9'N4Kk2)(f6_61ls^]oJuV#!/51rcTdjdkEVQ>;8)uFlAMYjUBgGo]94=DWITnIASd-X>
%VcY3\-2.aM;),7dE`!_*n#Boo7(j0c]0Yp4U(DQY`""m<[?!FcA"cD6T;->o69/_\g[6'5:Bm6acE2.J`,\*Sd(,[E.-JW]n*GuS
%8EDg,0g[uAA!SOJbSmf&Ej'lbVJ1o%)-+skNm/O89JPR:+VR2nR^T7Td4aR4"LiQ2O;g:g(;OC[)8oiJ3pBn?!tWrb<ZKIZ+?V`;
%IPbZ$]j,'k+>]=q$5!f2Nt=cW#N((,$/GTsoZ9%beta4J3#]pbM/+u71cimKg+i]j#8Jf;9OVa#bg$ueLl,95#G$o./m7#'=rj*W
%(u+6$/G9GuSCY\'6Boa1Sg(B]UNO_]<?cE&7hj-0pQ4M!nYJD^3S;0'fX09.cBQ3f`p]-X5h`5=4(fl[k5eC!CKcXqTdH',!Y`fT
%b6RIAco+hl#,/7qA[%!jdOs,[i=TmhhABS;K)-XhBN(*hm>Pe"!^o386iW22KG%0%0)F[iAXl5-Cr]*pTPdS"Ar1,t-ZSPEq^Bu4
%9]rt12R+N)E]hV[N9;l5.)D)ApcPfsRWTsG;kK"J?st=MX$tH^TK%9+*`H9AoSZ]AeM5O:@n,5#Y7td@N8.n/p^&BM"pHlG)9ef;
%1T5&N8_cQOFX2W]E8.,(BQU$N?ATh/YWR]dnNHG_70hs]U%k>'S0AMN,Lg-f+A`ZrOf"o-J1s?S,bF?cRi`F=j4l0I/uC"!A[@4#
%WH?>@=(`QL*QOm>4FCIH./KX*B6@qhX)>7?i>%7g$hh\!a0h6(^_%4m]X?97NuPD0I&,gT#J_bucfuc?)]N^5(NqiRh7QnNF#3XE
%Y_JYdTZU"Z$Fbt_R_])#&h'0;)D>n]oRM[]GAWqG,'bU(>=n,\B0`\_FX16IN[_nGi*Z#1APO!<0#FQpq"[n.`:BGC,a%[<BQ>S4
%Ror1-d8)/`[<rEZ\!H@aGg7T%BV)%M26uYqZT'b(M7/hm2UNV;!uDNV("XV6%64U7D/jX7<2rh`_+gJ/!Al3R%i3F8##n,)U/QqT
%:[JG'$O#%W;bqZ@SA$3)-^fL0+J??G8-DE5U.b[*2SD#Z*(80es,3?:5b[m*Kj%5mLbD-p;$'DF,QrF4B'p"igL`:FjY<Zj89o`M
%<YiQ3.<^'-pfqF%!,,6QTJh]KG9pWfn(OW%_&*Ol,I:Ja=^Gntd#&N/k8\2)WQ]n-D;r>T;NX>eR7(U0%7(3b-e*\u\T`qP>kKsk
%M\hl9!>+O*s)ZVK!La')7AMV0'9e',2j?!X6>W@40lf/('V6Tf18n6jaW5F9cJ1tj0;r<(K1sCFLm+<c!lSt6Z:e&6Ne6ROgn)s6
%!45:OGh".EQ7NoT/G_3A^lU2&UdA"=!P(eS%-p4?k,?EE"^<#Lc%3m)AR$%rBmk]hLu\=;EIo<lo2f[IiXqsR3Obn9P?6).L,VE5
%,uR*D>X_p]%<FV_!PV*b`rjB:&Y"D&@dF&U4]._)+;tn8+GWscBg>c^P_6.S^q!I3!GO03?'(D<cVqBQV`;2dq<YpEigP;>#4%!f
%J(I\)@SX_%rD9S28<2dCb6@lIfa"%2^"r`CFG2afdSj*YNV9r6(/M3W0$U/#glo"1]'IjIVm5SMo2--Z_M"QD(#iLeqZ(iE&#r+^
%/WoS%ID_%g`HgQ#`[n!u#GVihpDRP5_L;L^]+U_U/0DTs$qf@V\ZmTO?mC?FVoD5Y'%iqjQJ#"6^+@s%oG+G%?<&#Ii#St+m',1"
%TN<M.S]$A@ULe+%5SuQ-e7#^QNFl("R4M4)!K>]/P3TplISU/L;1(%\pjq<uQ6pHB]6N/nfX*:L*',V!%"6`(*^a*a9D:G8#QrtH
%%[$B%`)!fYJ0"fiT*HT%^nV3n:c/osau;]_Yn-@=_Y-hGJLjMQL=<F"R<XPE]-N4LESm19A:e0IU)JI*Aue%/1(&I2&t<<c>]Eb(
%1tW.@N(f5M,kDAfi^@;7)g!I?0*pdQW+rfk$Ed\&Af&i7/<!:u[Tf^rUY?uPfK1kPno*B,</<'(A6k-=b?84`(2X00TL@:b>D=PI
%7MD+8Z<ubNNQ^;LZ@&Buq>6l%^Hopa?N[)O%^'?#+.:5@&3If;CJ)<,ZFVT*TOcO\Rna;IH#>_unFpMiU67^95B*`%1gl,?JdbU0
%e&^$MSg'gdP:O,i8;,NIk/I<R[s^nUJs(4.UIS`0g7*q=J_*rm(89SrmbIs`E%s2D[Ncfi\Fmo^jD+cS:Z<5.DTZ7eCk=(.*\o>N
%c'.?q-`#UVgLAIe6@J>uH9D$e;&F+Mjq!-JrA_?p_1EqR+"FjZ=rZc_GB3j6A?k61,uff&0Wh)WHn:>-cJHDi;2%L26Pe.DCZWk$
%_9m#i.1E`h*=P2ELgZDCJMfNp6Ig(]L_5ml58G:#M)O'"2T2a2RF<$;c59jAfS<pp<cE6qBHZMAY;"iI<_@q87ba/_[0E&3kRm+t
%(D7'JEI2,`:eoO5:2ha)24CWkbTYggPcFNVkbbRf#P4GCJEd?.!*&':6`!Prq@>SGH-'u&#"Jq.Cr5$lN[4aXA!f_!lrlIE0]H$k
%#rAt3OK_'(o9^*f0;<t^f#FEC)@QfTkOhNj$5j>B!d?M_dG15_!V_tUg+3K5Fubk_W,".M%i^oZ=!mtTimA&.Lt7Dn"t$cR`XS\G
%f`sG0F`$M-[kbAiguIFV$>Q!kBkkmjYg<Xb\MXU^F"]M`?J=X+n<=6BN5idU%*-&0:9_-b%a,%qh%Ub_(.;,cJ5(uVVAp@<%M0p\
%>1n01bWu`A=\d=3:,^.7GZ&31"+IRdi6tFc<__e*ASHL4+a$`AE?]Hu$`d;56V17OjXHm)U./B-#THQAX!n3'[o1dFNFMrj6#;g@
%_*r`[>0MC?mit&l)dl[,p.8pO4HJXS3?65Pdb6fO1I+CVCqM#C4B*U,eh*@"J9HdR*f\&O!6.o@0*[O@W]>*0Cb@a+r$APK_mBUC
%7rt:a5E?4bd5TJ=0Md:J?o1C4>)b:)`2Ia1OFrQ$Od8!o]k`])3Pu[O#90q(H_qniEO;bZb7]A\'S1k)=qj`a!3LrXE?@@raOLk`
%*L2-=oa4k[=`d9"YlW1`/#_6fKf.!(>0&s"X?haN5)%L4aS=ga.@Alm#!"OME3'XApH&u:UG422.n-H<\\]RLU1A/0/b20XhPb<Y
%LZFEALgg:P=h8S-neAC)]q&+VLl!j,(o";A5436tnUV\<iOmXM<WYf!&p,,8BLFbLA6u_o'(AG\bg#`1d\G17W^9-n^b).!nKo_h
%4:7r!985,?LJ9]uT`U6&PADn<HB.Q/Zd/RuoR6+fL6JYWN.FVD9*gZQd@q%Z#rP^>%SXL?&aW;5"'%+LR7m7!1i!=`F,AFB#%FEt
%bTO"L_3f^1S%_*%Kl9MYkj/c8c(qKeZ7N7:U0/)pd@<GIh)qOec-0?[F)klnaC/.+U.f'eQ.](026,XaK'QeS3"gjLR6-FT0f<N)
%7+?i5X9p/s,/gP_%i1cSb"P='q,i:4S2agc%L?4&C'?S:V+Xh-jYVbJ%bAN[Q11+b8lnJt#Z/"YB*=;"H#Se^-!^@rT-IK&Cr6os
%lD+l&pTNZ9a+?es+Y$0ZdG%/48nn`^)&6ZVq?XkPg4Ot-lf42&fk%'^Y&2EUl7h-resh=[;M%4JN<Y4ADJBZ-lo*.k[H5FLW!%RZ
%+4b)Dd4kqThjR40+HZnIc/Q?&Es`Q`4``X<[/,k$,4dT+F.ke,Btts5c(&S(UR[.7d?9XTk8\,AaTC;lQ073N29g%uRNjUEG-@BY
%6dTI#LD3V$Z&c1mf:5h*3-;mcG!;jCjjOd;fs]<]B\8FE!rh2iG=^2eiBYf4S6GK'C'@J""KB?I[mZ$?BWgeOfBKj6#0Vt+;s6r^
%j.Vq!AU_=c>RCpLA"T:LZWLe8)(V*[O@U$16p1N=+[JgAciJlm-%&(X>/iH+:V5<.eh6JY7R?NBq>^e+7?lS,^[Rh[Q9jObV'p0r
%0"-AF[SqnV+K0$#0VUV>M[V3WV,*+Uoa25H[1kheZ"@Lal).!`fQdEE:h'gqdMO)<kYI<_A7A/@cr0#t.,h6T8rG*+=%u]p6rGpk
%ZG0Kc2pUF]@5^*5I"0J5!cdK&PaVn52OlpoF)lPF34UAQ((a477FWtP^DA9R(`jpL?K*9m%C.lHT\Nblb$l2e>DXms;WI-A,Y4bC
%=$WE<L#^G3^@l.O:;\tMR-JZO\!&_Ne.h#DpbBCCfjB`@+\6DZ(ND-n[5KqP-VVdH&[jU2B78T=n1).=<AK[m5njY[iHtA-5kCD&
%c=$05_^oG!2#HcR3.d9FaYQXmY1[tF]6/bF-m*4Iig%@\r,51cm]+TgV6M,]%g(cG7lkh!C^Z\A-?W5in`J^+dV*^#ML),h!aV1K
%N9CTn/mc]RfT?/Zc,aR^+M46l1)p$o+rI[T6eWC[f3<bJ'X)/l]\>iQ&Vssa=%Zeo\NQRsGo4VkJLkN'8o*Q=Pj@*pCCQ#WdIH8J
%D!)bl7pn*P--LCQ]\X2$<EP%EE>R$fd5hDVjj'.AC*!i65VpkdCkc.5c"W1SiKB)\Y!fpq.b.!kbae$HgTd+_"q#jK'd,5K!j"2O
%dLt,'+d6Uc9s%9,@In5')LND)-^d<AG:#jiQ;:b4bMU0lacS,[B?h?9_oOmSc[P9gja%QX!JUeJ=H6Bc0uUb@7QMiMj*Zm2B"*IM
%p;2=m[U?nMM`mXCTqG(CWCfcdZehX0pBFI<^H)M"/C/Qb$UCm.]>EKB"@cf<F@LEtZ;Gq^1GU;2.6'cW5c"l8cq#iaRjU_ga=#PC
%=(\cG<q:o3+\(JNFJqq@D=s-O8TY.2)4a3=8N<eL.;t?IU]d'a84Z%h]!VpIb@1r_"TodJ?t0tGL5"f5K5@\i>Usp4'H80uFCF`.
%EO/f-,qpN.#)RAi_MnTZ)PlN=SVEOl_0V&1V,GJRGVIW#<dV+]\WnD;`_m2<6)Q]7M*)YbE<&g9AE-lQ.Sr.$&u"u.HU<@U_u.X]
%6>a&T>uNZdUhko.@)rfZ+P0%AJ:<aaAKkfBXZ2C-QX(!uX0J;\D2mQ'a`[1D6\^uJ/RpoJW\*cd8]L&6@Y,LkWTtL7Ds\OFN]8#o
%IaS?DO04$`#j5!s9-9RfHU9;/o/mSUA,_XJH.]B%p]eTo\nBPM[%4IBi7r1F4+[@U"MK+.[:h:t9q@GV+O0I8#rA#ML:"_,.4AgE
%o>n08Y):?Qc6OireqlZV2TDeQ1!Br=K1KAT`kj8R?UP34(3pFH)MO,@$CLljmMJBPGeb#QJR+8`&B$/)5rO7d1;_FTm/[2\/aE_M
%O`Kk8o'*MW=)e`9#/)O,acn)2!d,u0/n`!KT+L!C95ObMI5e8eO@BimB\"R9+EgZ"F6G/M8(&O6PRR45BhV+"Tl[&W^lm*4=rJOI
%S3%NpYu'7`S%T`!']-b">-nk3kG\gjq'5tr"@nH3b>Gpu]!,djA5k/q(]CV#7Iu42\5<eh</Sb]U;gkEd3#8p+5-ED!mPBgmcZ,^
%99&Z5O_C7p'"U=5?=+N+$]'hu[F7W])*0*c*&L7_D7m!f;Y#[>#!sm;DGJ"R!qiEO\QarE9%Y]3Zqc?`_G7*i"3=l1f>9Z<UNDA,
%8ph@cZIT'->K!mN<=1,(jDp)]F<]ib\P8i<*mMpG&iK*<"363_!tmWdN<`jQm-I>IE$mXJ*f!^e1(I!\!eEU;^n+=#XCgUpeX0WJ
%d>Og[JJ;XOZ33#I1&K\=bc^dZ"Ko;1#L>pKI@'<omJlkYLG(;fSErGP](t^Po:qdnFrt#'^A_a=LWdlI?]c:Iq&'/&q0RVCV.FNq
%]3)Q?hdXu\dd@'AYJ51;Fg<RXhiq\^.aNiepingJdX-IF5iV:&Y.Ina@?hF;BE#h%S@nb5qK%Ek_C`dn?b!.diN@Y#$[;7sgss/Y
%=)[!b([gQq\>t,<Y5\6;=9&95I^+\]/h_CYUq84N3uWRFi`9EV]\IpUG5:<bWrn'VH\a9r:Y^q^Jd%]fS.%eGGOs%#_+4SKH(9\?
%Tk8&-L!I0$Z$5$KL]HjZ.65mQNBPRUEAljo'+,rjMD9]n9TBi[1,Mc-EWoamE<K_c.`\\7Z\4HUMD,h]BBWH>_>:)qJ:?=95p_45
%0H,!_@0g&A\WmU-)D5pc?!r2DW]3"8:W^[/=1)$4ii+"'Q,LX:Yq-VD5Z:3N%M"&MWn(<(WM+mhES:k\3?SknN);X%KV`=&l6BV>
%U5B_1&>K=PX&L:09"d"d'JD''(Y@!<_lZt,"Rp9rFRA!1$JJ#h(c3^$9[5cQ<k?+T4aFnFAn;:\;"/%2B66^IPsn$eD:ZQD3sAJ0
%GFSq8eYt=Y8Q`]M;UpZ%J<NVOXUE+N>$]B86>bQU52k'UB@\I[>"pqQD.%*:j`Qj]iER=1D7X2DrtDRi)H*6-Xai"S#"=oO^%]XS
%lC=R]],E[83]YW2BK.K[MBo(C]Tm;uTp63fVblk6g4ht.W^FLWSj+H-,pocA?Ku/0PM$A6)&d$[Od!!ha\%J*kVj6:-s4Sr-A*,>
%*`c:70I.\3lI[L2-q)WQV&D!1?H>NFZg^`>1M/0QaUYFDeLGR,Ju:HW8?L_eZ0-J*phM6rj`cZi`OsNf\.]X&7&IlC0GH:%3<-PZ
%#['Xe7SMNu8T9_?<j#7rA'LI,:K6";35`hI^SDnQb_>m:Q#Ad#]34h:#QiDP,'^)9V;Uj1"(*`K2p=jCAD]n"TF,e66+(a.hQ+*?
%j&hDZ_&1h-_8$Uj[5@SLe3(?i]_2U'$+1j\OhA4'1aT]K6bTuS*jS2a%r=g;+>P*Wq@^_W<FH%u&r&,r1kg)r""Rh:UAEtRN1(:>
%a0e;Cd#1NT]2'VhT`#_?$)#=9cXo1VCi4iF-*0a-!j-uUK?,5uGfH=@,uklmE)i#rl-+=Tg^pa7W*XZ>%0^)P[Eq*W6=TJ1I5PZR
%H/pE]%\Z;RT$aGX>-r7/ZLd")c-eAsc3$jPE":+26Ym_HQR,b,GRA0q('ULq3i@bNA130U(T1j,i/>aQ^6&2+GTgP"g-#1KAG>"T
%Ue+&E\S&E78][;([fY?1D.gZQ8UHl.V-X31UP#Bc=bnX^;/2Je<Zm*`,m*ci(rM/$82*?5[[JWcT1DI)'N$+M%m$PIn5!`]B%\=E
%Ec"YZFWb01K0q7%C8YZp'Hth:I_R]VQ\-G80,%ocleo#K"GRBt2`W3F@oq8bMB-OH0FjpT4LUs*)J;(q0Tm>%\Y<?kW'=ik(]>AK
%ljm2"7ZPMiLI$'&7Bu>oE-mV)m?-=MMV;\8TF/aCP%K?4#"+Zcb;/2@=+_G<Z5t!th;jQ<$tq0Z+V#VORLFVC6$LFVM+C5+s&aHu
%_6UA\*1Efl74=KnU'+l9L!q3?X^Dr3'n%Kdp/Q1*d_&F@#um!a$Y]n,:H0DE"bae_^;iDV>`JhEW@QSHUFnO9o\@r0P#A:[k>2TT
%`?37ZNj7Jn^RT`nAqHuJ1g5iCXcg5e(tVX):^q"nJti]L?Q7cS1d1HEg9AIdgkCS]<6MR@PG6"EYs4;[OSUiI#ObOtZ\V^4:r8HD
%:Nm/s7W2j2nd;=O&YQ>TQ<aglooOcor/Oj7GAFW-0N.tKS\*RmNX@6Ng^r?e(*e>Z'U]'DF.4=H;h]d.G^:a;Z)04pPKJH3:(-[=
%%`FT,hM?.GYs.:)B;1Q>3)meq+\>Tkf`G!('H/jR`d*ZJFDRT_iIX^D$(=XnG"h.ZF5%eAg:BREN$?9#AoS\O+(8*pVkNBL++rGS
%+5Is.c+tJpMA?8SH3OYI\6'a.N0]'FT3W#K_]Ml$n];2YVR8^BoA$ZOUW\3+q?E5EC`6sPbK;FL[k19idW*9CU4^Ht9,i(=UY1LO
%b7Dlk/X+D_&fR<[<-6Q^?e,WNUI'?AN*a?H@:3msKSWC^-ar(c:M*^1WEP/s?:fP9(#t(,&tUn`c=ZmV>U\YgKCM10Wo)>6m>Jdl
%"`R^\oHN5s#<JBOnoR*8`9)#sHKuf:5V8q%P7AsM`45%G?K<@];4=&Tq9'V'Q@WFqL)#6dQbQe'<e8di8;.91eBB?YUZr\3-73Rr
%n<n"EaE2Q"HT'hEk@e6?+@FHl-g!5T0uq9Ta^@B?.iAZEim*4dR,WO63bCU6#'[/u:/;WT&s^/nDPl,?,=]A-M6UW(k*D#-aF*2V
%=2E]Pk$uh*7HW"Ymos%Kd5XZWo+`MNI&+]kN:!VY*!O6\dgs9E+drD]*,>i$Y:m\p'5poVKYdF!i0rj&Q3N?PBhQ.]j$_2C"J2m&
%&I?q\M!u`r&+)Z($j/sM.05(gg2Pt!X=8$\igD%Sc$HJF80^L-!X2,*#`+LRl)Sl@&s"/,H?8ssJA')Qa4qZOA,pAPL;JI$GtIP"
%E(Sr@jp!B,Y#f57fC8(UOHa5=>X,=ECM63<:D,@0E*88JN@:[d21^dlN5d25\qqUCa^eQ-ZKXbso^44Alc4I\;1'L-$!%u:<^%^h
%18F/T!-4;EJM"Hf3L6D&M]l6>DWe55lJ+o9;SVttfuH.25ci+j_I1t)Z4iV1fo2t\LW-Z^r=,!c!4j^*$:pJ*_2:1RPV,Qs&Em&M
%^@(=^^&fa6Z3M>*N*R:@eZ"<LEahd!Ys-K>bH:o(;?H[*L;*N(qcYqhXsrY^lcR](P@qpiH4;Ar1J=kVF^:_&"M:qh=q"ujDEQ&M
%U$R]g'Y'\\H&u$p-9?TPloo:pXe/+&@#R]p>(Y.<U2(OF7(!+FSP7O8jQJh]\G(gs456f'G[Oo#Ccj+r(8p#2SjP":@b@OO?C'0D
%VNU'%jmSZZlugEK1jR%NI=O]I^(Hb5E&8h9.P:nN$.7jD<<VXL*V865J7^"_>441V<CciNSu2SGb[qZ,Q65p%E]AQT[c58/-)FUL
%(meNjf+.Zh5_Jaf`QiXn'nh=n+,UXfH)jN<NegL3YeqZR94^9KZ3bI`,GWC]U1RVOm3=V+)Rd#YiYAS#4jVsN-m+>VqI'6>$?Lm$
%k]Dbq6Y,EqRR=-SSqE$'hAKeadW+1:%7PpJBSX2YG^'XP!VI_*bM`MXB04-T^_"8;'=r.6VcM?4#G!OE$tBjs!AHAiY.Hk#)t;7\
%BY;o*a.*8.4-BH%fL3Zk]<EHWZpaX6YBiJ_d-3QL\OM_O"FV7nb!ZJ&o`:L%<%OTG=jJ,D+sKfa$bS]h&e83MEc:E:\B"=DJXBMA
%51FIq&5k!D%YM<_a]jkC'n@TXm[/RaL"N,ZaWF"dL6ld`\>Zt[&@NuMX&%G`-DceZ(hBf*5_jCE4!b'%(s7AINgo039?1LsJ^5f_
%?\H%`q5eI&Vnaf064/\e0uhjaaWJ`^EC\V5,;ag7bh9.72N;XkH'%&GK?OguDbG.lC^urB$I8-A5r&Q4+JSQ;ig,!/D?]t3M3"su
%Bt&Vo5c#RDW%Hb!]Y"DuKctWh%\]`@c&D")T<9tN?0TR",r\+9MM5W"JRJddBU\QA"5S3VkZne"T*6O[/hrSnK2T_qlbUMO"WYN.
%.)AK'LFoJ60Hu0s7>XRd?(J=QZGksr#)tl+Y`BB4lr3[10%Z^d<L!Db2"H]Eql?@sF24^%6rNM<BteO.e&ITm6=8Z]2,_eh;l?R>
%ZUp!%YY\[tYCKmgBsOS_0DisV&H=-HleYMWAX[aYK@Z(ah1\'JUkmlYZ_&P?-q6-]AW?%eAsp<+OuV?t)3j<XI=RpQ:B";h<j6>&
%kWL.:P+"VSmtXCl8eh,9M*QhV[G_A`!+-e^[j-GnZ*3YoI40@a&QP(5X)3=h;F#?D81N8uQ8fUXJ5nudOd8qS1S[K+iFsnF$";5Z
%m%Y%8W<]h<P@F#bA6%]Z<]_]H;:-u-I]V2Ca[8+E"=]eI3G"YZfrgEMn^3Y]P,!S(3:q%28sDe:2D(]J6BR`YV$eP%M284@2LbgX
%nW:3`$#s!QqrTUBD9K%VY0,1"DDg[]9`l,7DD&$1RE*>=KK;GnXKad@<L#/GK#WdYL:\&0NR'$\>kV3oV::?ZY`/qUQeB0f)('L8
%qZ<\8\AJC(JTkQ`2h()7&\HUBgZ7/7F0/FM`_=V_,H*:899oo^RN1=p`o?,9N,;LsJ`c[J-Nh`KB]*2U]6]8l5TV]_T/0?am6&d1
%&t<UhSie<51[TlEN(DJi%`cduY9!m)H/VFB%CeV`@sCQQY>_=;F&<@#J0)6DO"'ATKpT1^d<6?##ar.G9-;Xnr4Jo=a8_ZVIn-CK
%cpm_n!Y2CtdOB!-IP7<5BUi3OaR:EBROM>SI&#(qnsAh<&kr>lp6Yg1"5K#2Z*5o0@KUE3YTC7ZolWici=bi$m(@1oo2`haHe0GC
%VS.:sf<nHrLu5D<Y%$2AEtjE*rq"q_o-X=FGO>70WS&6fmse#5Gbn,e?s2_61H`G&gkg?ITh&nY+nXA8>!QsRX^F(W3`X$ZHe7t#
%jP.H8[ZN_/2d;bGL"L:#2Br[_%^a7>J3&$rmJ:#P9b0_/6c3B[cBAdnnG,B9TIc!!@BpO_.bg@E[bA3+NH%(:7V_BqYS#rDE7_Kp
%*JiUVXaqNqn%&!hD4WtpZG,)-DQ_g0CY\ROrF9)I*.,",>0\@/lOBM\*-md6jLlba]j6;C\:MSld04NbIU?Ph7**@g/9W<>%qM8*
%HfO+;-OR3hZ/(H-dSa;;n=1B>Je<i'\%"52:Yd/4QQ9(:Me>c/U-9Cp%*b>n[eHD%*[7EQX0m93UQ7T$5(7qZ`T7QFBH&)J]gl/c
%+[iYI2Aa>X)!mEIRB:N'`.;!LH<gn=-aRArR7P6,mgJ/>f@AZU2Qlk[p<o+bd,M0=rOl"F/duV].r11=Xh)-pZ7_.(fUQ*T`npuN
%.^:[j:[p_qqq[=j]Ddr4qn<.7lYr(=f.6h>faZI]UY4krWqDJa`W-jaP[Xa[<qDK;ICauL3aFL1JIa7_S[1<")D;i#Xu?W]T,C':
%Xn!FQZ/0fG"c9[pY-Ys.K1Atp.a[%6@FWI@]lOI.XD.*lMt[Es'L#ZYn%&c,b7@s"S@f-Ldh.3r7q3f#/!Y5RH>nKKaM:mhIJZ8>
%Pj^72gd"&#',oK?FNW-'W5ELqDY,guYJ;p<m1"$]LF)"pdN)iehlr.e'c,8sbjAA&QIRQ$jVhV1Q<A!CP^&2=U(AsJ:0[]ES#q&+
%#.YU'.6'5rR)d>=R',?'^l>5_A2%FmL`epAPYeTqdng8Fn[S7AlJqUK0dO@i:-mZ]ocIrc1"7a%>I?j[Sju&X-?#\DJ)n0*Ump!"
%H"[(j1q&2S._\oENo*?u[r8lI[r1XKCRf4p$rd&:C?N.^fTcRtBC]XJ(a\f'O59l(E,K>Pmjk9/<oZGr"$W_,a5*9gn<`%-qqtrD
%f`dh-o39ILD`W.0Mg^Vnef#o.Wjg!`H?<jB&$CU:)qVO1DB%8]\A?m(,?_8-F^En7[0Os/h='af[Hi1I]A=HY0[io&6@b4ao)8Je
%o4Fge;`g/JaU)0]/CSPe2qJgdB(+PsgW8PJU,\UbG,;C&.]$>BHf2nGlK[]tb4V;`pUp1u(mn'9,'QPOo_TY\`nVRN7q24*qkC)R
%7s(+9ZL^UQE%r-5jA(`O'rnpA0eeA=^u*rBqE`6KB>3h&nb:J85YZVan!nHhrEN&G@`AOJ`!m]mKJl[J,;^gR56`JE(PI_iPtB=)
%!j!TS-m;c!b8dQMWAZS:m!t.cA`sh2+1f9tDbf"R=k`*'RW@AuWQNg)VGd%2`XlJQ'.1a\+#L?s,"Wl]P197;qeF![65"r#32gq\
%d^e1aDcO'dj!R)TeR:s)RZ\Ucij$=`@M<_gE\3k5;o?_r7Yf,.S`D>#e2K)Z,^M/iSO5Z^B.>J`PBUpBV<$;J4C"X:iEpmBL+YeH
%[,oWi[7QPU.$=pBh\;SG;Qc'a8nApN3;]@Qm#)lEgq\.Mjte6&]1+EQ%IsogeoBDaH'*Ag[VV]+as#_L_kJ;WP9Q0b(1"lM#4gsC
%@:OWfmr=*SqjWeX02q;4?g5Xr`*p]</de:+*KEMI#j_j/*B)`2b`'2@4NogE50O[&bIBM)MMf?_[`$7R@:CLnU9%HT7%24,\ja-c
%b,2I,pbWU7%?UjW!"e!q#k:GBMshUu#j`s*(:6g%[!H;9f,f7RY\N5m"EIG%>NAPk8f#rPr-jG-IMWCt63ZZ?2P`;u<)URu#J(P&
%LT%^<`StZM2b8rF:Z9=d@E+M!Bbsib47?7n)^]dKcD/h-YDWNOSJlaD-fODI*:@nE1??L(-UWt<<U\M;Xj.D.dqSGT2+NbD)N'>E
%UrccW-;hWQ]bZ\WND7Z4$/!B8f]M5Wn2U3FT)&2?OltmH"Z'#PZ.`d1!o.0Zc!o%PAJI=)'2'OM9`p#,QsJu%#&!Q5nls\PM8mU=
%72WaYjR]M]fcr0urs7G\A?V2b34'0;2Z6f'V)L[QSO_(!iULFB_BVd'>;CUtq!],:'dWS61J`aFV1.`>X$r,r_F35HU]n3Q`Y?:%
%NWG0+fTqqD/9*Y9(+EFGg>YWID8N`#)%K/p&.s(F\-GulH,;hdRZF;#()\%P4kf/#`^H]*dVlDs^`E/3S;YmK0K+E.Y?ri?+'9c`
%eeO+0f-`L9-b%55B`k&6EB+2!>Tb!Ln`>Z"'Len*PMPC[n>HF9+hQI4:UA[r3t!0UYA_S$jHsbln#3O=e=[9`!pYPK0!_P[Zc-E0
%a3e'$K61NTM'sm(Gk]R!K,@=kjV;@T=[`[[M,9HHIVp>fY'^fn%qAi>5b4o]&>t$9kWp[Ecp#VF9N-l?$d$6c<>T,9eQORneaWc@
%r\Y(-6NGr0ChSigO*Y+g^_fCP]k*>3kS;;V_J>?n>=oT?;6&/(Q`0Bc05B=Qo0A_>glu[Q<cdOI:eea/:]ftg,+R>r540G*0Z^=%
%XehmqgGL01Hj(6l+<'%TJ>1K.1=%eBQ=DXp!)gsfSCh#Tm&Q6gK1WKXBBou&T#L+cZrR/M=O/<pY(">%E9iZp3Qf*89VK:A]Ojqp
%)qBXcZq,Y\[&#nkr\L%RpY>JK^bZ[pn-N&CX\!i(*8"`]k$;?J)4.?V;ao"aTeN`n&hYa-/Q/#!6pT=OXoVY+OkcT+JFkR**7Bnr
%"p?oKL$bJ%L8Yli_Z0q'muAK[YHH4=6MB*F?QK8'%P[i@7L+f9#pMB#c!V/++OF)"djGfZ32j0`FcXEU<0^OUU@_)5OkFM1$;'Dq
%c\OXsL*ZnCjI$Skdl"Q:hhtPdM3chm&ui$Sk=A<,_6d1Cmh)#q"o\4)UMU@_8^-=:PNijjY6NN.B7"N*GGROZT;kKrT@jp\NC@8R
%C-%k5&-XW0.+PT\0H_Dl7A8&WXh'oWa)NNPjQuop[]$]58483/)E+bog*pQ6!Wf)X9[IaCYtTMF!Sf>=&IVD@8SYVZQ7gr^b'e6[
%>BUR;PH=,b%i^l$$$:hIj6$P0pGQS"2g36hlDVh;=BrEiFFsY+W2aJD'PaZi)dQJ[8$MF(>Vd<N&OfZpbZ?!5k-iWpeHn*+OXsqm
%ngl@_6#U=]jeT(+H<I$0TH-9k+q>r3:"6Klnc@!KLh23j;ih^o#"4e;>1#)!*Wl):Y&\oRU3%k;lsg\2Rt.Kt@ZMkja#KL6L4V>E
%80^A_i)/R7&BSV1;'#(V1lUT/a-?r\JJX8^SUQ:WfRT/@7;n1n90CClDa:6m'QS4/7SM5r7+Xio;Y;.ZW@AsBa<)Y,8j5Bm+&0uc
%Y;p^bL3^aTd:Hq/D9,1VB3$CSU2demE41m2aZW!&@1Eu0SL2/c9<1=^ZI]cSCPl2Yb`T1H;3%R.L:K]PgCmFbcX[ZA[qT10TpW_X
%1L"LVIBV.u8B0gT\#uPeNtIbqfbFZoh3:X/)?`l(16^7#K3jjbd]QC;-o-#q^)Mgb0t"_':l:EXm2DZ,bNc1p4349Z*43-l"dX4q
%Ra/.R:aad[Mju=.opNamPfH?mO4%69NS@cZ4p$ipD(_%U.cDUS?P,^M&f5B@Ms;F8R'.g>6RM*N#UMJ\eOM9kqQA;b0cC=Rc><ch
%[K33L;cF!]!lL1(N'b!/"U@qGjO?'L^M+1(GZ5afEfKFj6YBRP7hR6-gl!q/$otP?_j+HSZfXkU@[]Os8.AJ6g-4A\KDZe(&:4P&
%VJHO2E((=C7c4(0"C/$$Iuq']&^=dN6Zm(h$(+V7H0OsCPBUJu,221.73+,?$BMFuW5F?u@2eo!OsDnu5)VH9"Yp^geoig:Xo]\t
%]ZL7f0F-1]FSCIJ'?:ml$mX1EBRM3TA;ZAlFsg9TR^"gW'*tU@K&1ha`]`gAJClW;]I`T'oaa+U]$Ok,iH<3RJ6p9t.>?1W+f2IT
%Ar-U4<67GLP=[^;ZuT!\:+f<b\%`D>P\aI$(;.ZdorR?n%icNLAMEo_)7@]V>K/o4_2KlBFSiaJ'@D(T!%T,Wigij6-Y*eXo&`tQ
%6RuFlUPEJ'Qk[ad?%a9L=e+O!R]<`5jSAF>*0l^203CM>HaY_/eh4l<;^E?6WUV9"fe$db+pKjZ6^TkT3CYOZ&M@$+GB"HAbI22D
%\fe)sZNiuQNnGP4<??D2_:cM5CDQ;q6rGkfo,+:I.)_V,g!Qi]YDQZ3mff7MBdCV=1gn"qS(VT]%'Z4UqpRK;of.XN"JUg1m':9!
%E>fH,e*=bRO?8V(CeOmr[nh0,9.5W6EqIS!SU9os+ki`Z_@oh^)J7J6Z#DfK>=QuP=cZ@2<hmZjiB"Mmi*2M<J:gq>+$Q\/RJ=!+
%_eo3_!O.[+c;MX_OST6;BY!;,DA!Noml;eqT#0HU)B:K-2V9#96,VcpMG3T0Z0>X176ZSk>o=!r-C$j:W1jo1><@O+C+G',iSH+t
%]cpX8kh9E.Z$'f[CQ;prdbPPlA!BlTrc+7G2)](_Q1g?JK=V`F8Q6#<+fnpHoH?%\`mHQ?S5<p@BK"Hd\S`i9C2`egZL5pae&C'=
%e_3mK1%Z*![fQC/r2nI8RT,lZ7bYL96HhNMg+gSXnn@HhkZT_h"HEY3Uf$P1qB"GFJf;"r/&,>0L.%rPNW!jS8q8R3CkMe[NF70o
%.:i+iL:#EbRl]*F+XA;,rn]M!icU*`G(_MA'RnRnL$N@,@Z]%A^-Bminm^`cV@iKc98*<@3A`c?LSH=(''kc:b)de^OWm%jRd/B$
%:r7&d)A16LGY0BYh0(Z>G,AEJd/,mVlN"gA6I&n0Vcb#:12I06I)JIK])i27?$V7+BC,8&i/AJ4jYDRm>jSSn1:Io&7W+CNaWVqd
%LMD-UU*_T8`A'^hQ=C&nR@TKI##2OXV'QPaUeKj)6Nn_-Xp9)I-5*HO"`S)qF\u+!BC8aWDD?JPm,?`&6jlYa/]BG_:;_hS-Nc@t
%)Ff&u5uPb/E,0G(3G;s?+*,uKTq:;+@apNG98I1,;j3^-*E9N1jM<dF`DhAiH1&_tcH<:A1X)<h!_T/G=*0JF33eeB3*YPGS)P^L
%13O,8G7D7]"S;RSH7W'&A2$*AG=cO;mh"aWYn+PB0b9;Xk3*]9kXTQ,+a=M@\=%[EOZ<?354-ojpFHDgO;t</k_2/MN);UBD?*#B
%iE6o:EJ`Kb$5-NZQJ?Km:I@.?"Cj>^ni/b0n?hJRP9f+tOrj8KTQ`c.HEj*k.dS^^`k+]3"DXn$A80c1g/leJlc!f-n`ROGcFJ*:
%H;:Fb<$KN^S&;\5/$V;OgXGFoY/<7rW61`R$k![Oi;F@=X7a_O0_U($OT6"h!X<"@H.<?1E/4@_<rRcf=`5t=il1,Fl6o^(-<8sE
%_\aV&^MdrJlI!T/E9&E%cf9qW7dYAn?-!R?Z^1]a7G698]'k67#odW_2]f)n!@Co!3KD8VapodP`9i#9gFXKgF4B[>QVR4Qn!b%\
%g2g+&XKtE]7(XD(?El15V;?PDQ"\\#dBHTu'<20`;FO<P=]%\fE)<,9F,`J\n-;4[==lM)KBrXMS0_[]f=$W,E@j*h`:,V3&6!%'
%>W.`YM>:juK<4eR)Ra(Gm?K[2#8:CrN>>BNeK!?j1m=XJ#o\_C-VjBjP4@$mf1X"3%s?:$d_4/pB[^.TPoZWhg^BU,[:lHX2Fiq9
%([@j=7mmTijE5O8K9n>/l$7)0<Sqm4J\.4sLb)>r2VVHtq\*X+/7B)%jeEJ<R1^Fh=qj1D/>Q*T$#47AH70s>Xarsd,]s5P&&,#%
%]7;UgNP/G#e4:$YNXeLm%dg@bP+t1hnThY[c-"S_I1n61a32dMG3Na^LlF#SG,=p;_$K<K1UN"'+Y)g&U^R81A]U@2%!^U%Um7Ip
%eWdn]kK%Tc1*O!bDIX#b9"D#(lSV(o>_o)&F_3,_mUmQ/@dOp#RALZ$I^+0!JNdT+`$W-8(4r0_T.Cg73$&@Z^/=0C[Fm<Pl6UJi
%e\8/O@Z3`3EjT#MP+Ek]0a]DH"]X<)UUsep,C7_m)WZg\'JANl%Pfs)CM6n;&fa\.-V7o`SRT+<+u2gi>!^?Y?fN6LCDhab*CiB@
%"6de5`3ugc0K!)E&>:u,h]t@oj]SOtB_`\.ouTCZL9u]WMl>lSGE3m#D!Cb`/:M:Z7j04+1^tRu/ia%m]MdH/-CF(nmu^K]q#U];
%m"A<dW1'4#KEWL;O=qWQ%#0UF90`M#D"rre:rl]?P]L@C_9O/5+;&$WVHi=/EM$E>+3onAPaJ2NYGj8,A8/!Tb_/>\naVt6K)!>N
%9u&HO%ZEAEnTp=)7DqmQS4maM?';poqqM*?DPK+XiDaGpO\1t9VBi??)4>bh3lL^^TS=O8;6JE'n",Wi)b-_rbt9pG"]=iP+=Pc`
%:PO7Z`faP@C/IGO'"pd%>+$<R5^j;c2u/9"Jg=q`h2..TaW8iD:Jlq/j%#9;2/0tWl^C-Q)0cD1?o==*`>5q0L=d-lKdg2UNUGTj
%4IRb61`5YB>X4d8a:[-A-jiPn;B2FpEZ/]2S.U78#m%eFKk<]qMRO`jN8Lgg#j4Jo"%#gue]$qfg(PQ<R'M@H]s>=*Qoi<^kqS5N
%**9H>!*X9YAS>NENp5NX$.s/;m:,("M)PnK'%pa1Y(_p&fVXZfX#rY)W_3rP;0<*)P0+eXpEiW?Tp&m96J"V9LXWHG0]DVDgaT8!
%=P+2I'pTQo0Z,6uUrV8"obluW4tK,M4`YJG?hB;:qjCk6P!^\C.&BXu$)A!P'?c`i%#8SMhjEa[X>S%l5)a>3J;0aQ-O@I&-c9@u
%>8FMH8jdNun,a*GP\dD/#\GF>dI$Qh%(e5L?7bU]Tm/<r)p[`_@j#P:X_ed2#LEE>^55M#=II,lVe\@gofS.-B$UI5+^6b'!`A#p
%'(ArmRWNt@8>tuN7W;H\o@RS5*VP1%19\5FC_C#u+(93J\?@bp)SW+3:T&;T'jn&uFb+).()kLaM7=N$i3Nhg1P2OoI>XkKf5P@?
%1tNt#8K4),jePii<cn0$J<eKGNg+r\jC`NeVj8ZuAQm7b7$<5?3%5#$A84[KaKnMXK)B3&.)@'oU7<=qUHqg(2uaS=*4$<g5sV1<
%Chb#@@5?4\m111DJ0WLB;F;[X)U.>t/P>@X<.%S$Df94+@iJ[rEhB`13W0J\7AWN,Vp/4I8L[Zq8FGm/(PicnDi9.\3]:/@S`Kgn
%d@enH5T;*o_t%(=n>5f;U"__qg4GT1>I#%gW0&LkUMtk'F(o=L#0<Xd,(/ZDHdP#G+cZW_2^^"Hco?"Y*Q((:r4IuA@1D5)=OX]c
%0Ge;U_:"^h9ob%>X9=@Re](TW/mWKedD7ec%+qeng]cbr_F[2)mh".aZ+u3Lad-=V$jH)4:3%'Bg`\@OLr-CDq1r`CbbG9:Of*ma
%;D+ho)S:,:)93<S`0^uc2M*>p24qR5R<XcY#qJ-U,_d;sC'ra&qC48$9g+2B1DG$CAsn$l$;\u//4__GS$5TpfMWV9b[PTW<nlTL
%6\m346LZ*+i8%=Z"'ol%M6:VYGMY<_cY^f8RBHZ>do];6.,l3c8n6mq#uf&?g0EUA=d5:K7b;om7Qb:I;X2m@6_mXRIPYm$'-j_[
%fm9]-`\bR@/lRXd$I[jaMMsPn4VQD=6MmEV[u(Fc-Y8$&KK8H_"nE0fmLVa:[#)F6*"S75O!)pup0lV5_nP4Yoq<.jQnX0(4<>??
%fZ*),7B;M\I<(99A=>QW8K9&e7[")Jlstg/FFUnLIL1k[QC]jG&<+rG%rh$FSoAo`bAM1%58,j>oRZ9I&k3FMP+""T_+E?AYWt_A
%d/0I;jGZNdDj#:q/0BBu(+EVdl_H77($S["iIWOQVs2!^TB$NY9dQCL2;C&=[cr1DDV$^6p)5)d$]S,:@A@J+$c`fr-VpYKEhKB8
%>q:maHYV8X-j4P\"6"shD\JqeIcE1Zc86=lmm%eb.PstS@()U/#G)%c]<%>nLG`O`.o^*j-03T;V6\Zh'IYrh7Zbcu`_fQI*!Kne
%O=R,e(#?[1SlHR64$A;GK*BV3aC6RL$-^jV#tU/Rl%Mb8JKouNb7Y`6Yq"6!+E=j#nTN#_,f&gnT@g&CTm'tWHb0s6W2(Q`Dep`@
%)$nIt55\^e0:nCPT[.)[h2ALF2\MTj6onmiiV3H'3mN*7fbLt5`T3'cRUG<_X%Ybf\MbpC@Rjp[,>K,ZP?sOr%ged^!9Gr9!e/;&
%COC7[Uf!o:`PGu(f/q<I!dERJcT[*t.$LUZ+N8lU?AL>OPj,e>+cQ:"5p?kCEC*&Y"BRBBJ*qqV>(@_3CG_0l,(d#BjQhVo/%gH-
%@drqJr"4Zt1,P]c"sQ/j'5)tpMsOWWC8I\,<fCBlOeN1+d4M@Y!gTXcVE`LJ7^GH@BWQhd,[*I;'HNraCk8sdlUXES?V:USG_A=P
%LpQt_g3X^D^aCt!knLLtLBa:U3/*#T</32\PZFcH1iAgY8ioJ^#"(/8US=\WVs'-BbR3n!ERO0(g"iH+i"FJ]E5:*b?7(N]XnKX.
%;]gN.(ur#-+:kQE]J732=a47\5SuLD3!M9bhTM(8;8L0ej\=)]Dt#H/l6@2k4c0HBM*"M&%"0['F@<8VpGGg"5YfXY_XMW+?maBF
%C:]04Anc)P!7XK;"$"9?l=c<EK$`6pj5(h1LsoIM/:qS^j1GuNFl[cKBPj!Q:g7YUqI1tSnX'4p<]jdZ\[QA#Wlli0R\`^1p"Y"r
%7<6bBK>KI>Bm=2[&5)2LMN!8t_gS,0Oi>-rLNP?[AqR\CIWX'J$DE-+A\sjj\2FbXUn'gSa\DKU^S6R[b*>!o&CY6abom3DC.Ln-
%<XYWn*_OY:g_ls6`.:*bBaE_+J>r2CamQYh+A"H&oS%2WiN^%VW1=-Ha9cIY<ENOsbB;>oQ9Qe!c6TU#1eebT=I3DS2ea`9WlN6N
%khm#EBV`0oCl<Ukrf2jn\,-2iFK1,;WC^)46W84CKE;ikg:UUT0$UXQNoec1(n_[21(O32'-IJAhn1:lXN]I9#7D!rEoSB[WoFb*
%3%#&.8nU=q.B<*0_76Wc:+B:q7Sk1).r`E'hVb2;r5g?&amO)"%<SI03m<,PdDX0(k@C#JboY&/5U(l-k*/QJBq98+MaZ5%&]6K-
%e!M(h@qhgPRoN<J8mt?;>Z+gjAPo9-):km=n_V_W>NPn-fT>>(i*%21#e/t2T(o*ZkK-(/8GpH"/W.T&#MVe^1Ch9m]ZE3ogOoJ:
%L7]j6itV>?ESdnSAPDhhIWuA!Rgi1&OITaeG[%U(LIa_XK8Eo!6Y0:&'nn^`=,11:^'1R1Q",R*<LP,d1H:fB&N4_HA<6m:-_M$[
%9=k8,&)Xp+fES\(a#g>t5EWTZBQY"goK3JlQ0PjC!Q%tdNZqdjT_hR3iJ0R?1XAREBie.PLfj6+l"^DU8DYNS>7(?f<&mQ:'P9W#
%5SmEBK'+?q&;;p]7]M]3PlG=.JRke0fMmW/3_cOj&fAHjZ,R1V7ALI:SHbQuNS<2$63]>1+^WFV;huC8el+FFhKI&h0:_L<$didB
%l\V_'4=,9/p(8d@@>g7N<RUqpT+u.`&ZfDu6e;rSY=>/t7KkS;"_?4)#HQf46:@5q^hBdU$.;/8$A2a$8P^&DB"&6#+5V,Kj;4Vi
%;OC`\SdL_j%54EXBPsX!9_(rrJqbX#PJ%cb<cN.a-^Z?!@BhOAQ1%%?ct((nBpY^W^;#G2MBkVpn3t>3R.[;?eO8jRM?r`>i,LAM
%,1-Y59fWSrm5qX(PaUPUH0$_gR!I-AMEI69%hW?*e1'jEr0q$&9F<K&J>ljt[+UtiTJj-\PI6tZ0Qe*)B#Wn92M4;Z"DVK$eZU\A
%_b(AEBACB3BkT%5I@`e#/V6U>ZmsV[.OMhYe/(\G-q6N.V:;n6FZBS).ZHOK*he\`**Cf_qOTGnZeJ`qAf#kQXEY;XV(FI(`lJPs
%PET:Q7Pu\I'WK,,$D7de`OrVT33legf-4+c6Jc6](;%rW=OqXT_GS2f4_qK6mom>E)rRT:"9_M<(+e(9&8O==0^H9oh(g<UnlPs)
%Zl#YuP`Z$KoT7O*8recPb#`.d+gkLX;99Zj%Dkqr\ZY]5D4o#5H7oq0fV_;u$P8L69I]\JA,@gQ_I57L_.rW,8<+^=immE6)G,+b
%S+OSFLZSZ84u-+=EmkLW\tZ-=cn;i%6?9t>%7Q\AdR'a"7XW&e)7W_`3e.C!?A=k($RkIIX71J!"LjdM@k"]1=srG8g7<l[C+rM2
%`jp)Q!3/!P#4T!Kj$H4o#X.;T$l>(LX*hMZ'_Oa8JC+Z9"2s(W"#I8-Td'uK?DUIITPI>A10XauSRV-cmTQj(5";_mo,s##O;`\e
%\YPN4#0O;&WmF:AL2_'uPo\(`4d"`Z!J!:NIF(k>k@Gke$5NXLKH3&E@kiFC0.2WkBnmat6RR9OFrK7STUFu8,0%FA8-Vu:'@f*V
%CA0G_>uI4k&?d=g4kBsUCbTXoN;Sp)XHSbHjsEQ2i"cbNDugHe:gH6r+ni.%3po?EE/^M<=HY9d_BL;M"JN#T7hLSB7S^C!^Elid
%Q&.+tlNLrZl#:.=<ZqIf"DN>&K/.<=$:6.3qD[4)-GNdpFp^d2Z<h(soJ&%RHufl/jW)8Q)+-qDeeA[X^>d-up-YIb#dqgC8'#X3
%bir3,O.pF'Zouu)7(K_jSO'MFWtUEWTIO;(+^&/i0q)`2'6U<.=*1X!LBA+rQZ&Tr:6Q3N^oA>)j-LcBh!`pRN^[Ae^kn0_m=N9]
%F5.>jj>*2[2HW^faT]RibJbW3+gH:_2;=dY2NP/Ro=3pV8o2]3fkMI;M%k$=Y-&1,4$D-0l`Daq`bf/n&1g8sl8F9[;e5c,enNoM
%<ofFT=fQC3;d_4-.QjSSHU"Mq\C?9&&VURakLiHV30E:6T/&0KSZ)'9@R!c]&=ug:[4hf]3!"fFYLVg-ALNFgW/$Zk>gUGbp.gH]
%7_i\.0fU%1UaXS>X-cK%Ts\iX*"T`:<qkV<BNCQ5gMNK*`040AMR&Sup/N>A9AOD46lZh8Nc^?BaBb1/\CNHq2Pj/ZC(-M`Zn0\W
%B3]?-&QsBV7htZ"#]_YHQ"d`rTd@bm<,S$@]?!AdQe<K-bHS0nr#qH:RGi_sLesllpXo(BiIqn4+YqDX(aC$j;%TmEjYE78<pc1n
%h1)/Dhk5KmD0VPaiPh#RDSk6O"C^2k?cJYm2#q)Z.nM+UT+ZU0ncFO+,2=9[6$S8@\/jf]8=mMF@@N4GD^DGtKJg.^4Ip@agd(cl
%L`<l+"Pn+_4&Xal-Qks^ZMq)=@RcBoaY5ci'*cY4Z$C<]^IFS['Z1?^bEnP.C<a,W_WDWP#9\QZ9JdhFVn`m`R\^SqAm-c56o&i)
%*fbb_;c=NkX>@bqJII?t17U24F)m8HAqWSYR$;eKF<Um$0k`M6OTYq05och^hI,!:dGDYP@C-h^0/8l)1[&\J-Vc@t/SIZ!KS0iK
%8dVnaeo48rFlT/*bQp[W(Z>`M-8Fr-j]7iOc9L>`@HKS$5El/"_2p!W#0PP(T%(BDNU!1E)pZ5MX^^"BniU<8o6<PCC7J(^^*d0t
%/YTn@HeBl3Io!4F(opqAdh\Ge.S(pV95Tm8K=LtSmlXU$[A#.<e6(PsIB2^+S39lm:hOpjgGWC!lk%qiRV,]bMlRJ9?sLN4ME.U^
%:_K_=KKPD=-H1]W"Y<-OO:?&E:t8Hk/MYBd`_;Q(e4gm4qA?NVkWrTq)]j_(B\I'R@!6*,.]r3_23bHAC8fBS*/LkISR_G2Wn@S&
%Rt,sWOAFXS-CGPClnUNMfJO@/J9^LH@sK"T7.MT8'9V*P3p:pYCqS[W/Tcfc:#-.@aWaS*GG2m%I0mSckeF)(J`d3-N"jFa`t:X7
%`<$P9YrNJp\J\Xs^HJ=%.af4g>jGUF#+:*AUbUCB(?"s(_B6.^`d-+qCWm%Dlp<IqT)no/4GiGD;+0.)M(3P_!c;Q7+?B#1EYE79
%FEqC6-]&c4P6RQud_V)AV^e:W%3*.3i)kHH8Aet-T;`p7`DK?K"tf;r6-JICq+*sWA\*C$Uui6lZWE#Aj=3FR_AgGE"2.3j8;s?%
%PNCB$^ki+"Ws`94Ht['>:pd7*)2gtdkKo>9<Wq!q8GZ*kE?rj"iT_?H=g8.#CVpiK5,4,A%U<Ce:bt[%$9-6;(DG8`V'h<$lrjuR
%Rft#k:H>rY7I*?)n[+IoZSES]3L%t2@B.;s$)mHKNfH(q7]L[0i0n[CT>A#!2JsXa^$Y$)^N!*o!Qjio-nQ$21>]lCC.4gMpOd>o
%$+oc,6,gP-#%72hXliEtFu<1%JMQ>ANem<B!Gfc@;f&s`/CIK;iT#1k`Tb1L+^JmCJ_n&Q'^-Tj-5(2=j$/bG:F[gpnRBn-V,hg!
%A,qs.>)QCR@&Q)FKM4UbRTX:W4A*4i1^cTQc5S0sc]]DNH^UTHQm%JgUeWL%5AH4X;.q\?dmnBe,H7q2Yj2+IhuZ!oZD(ET\lh,d
%OFlJGZuoM3Kqq%'29HS$j4I!&"s9YrYG3Wie]``_>IYu*2jEL:1p!<;M\iqC7.#[rY%oES)NKrI^XNCeh)OZjgo:pH4]lFEL6TRJ
%(+W2=nVG5N60uTCDp#c)6q.rS7kn`;81dlUSt$TlSWD+<DGFO*</;#PYh<eQT1DS\AUu?s@AldRE`b>7A00d`?@\TpQ@X!a+/K9$
%juS<99\G>oH/DUrPMgP"M-"eYaQgZ)n*Ppr<4S3*cnqo2b.SS,&5/SrKIfdYAeH@Mpe7]B_!6a8F#_K/I/uSlk9ekWC)@HB?J4>p
%p[HkX>"$3q+@KVZ8&2D8-3<uZ_]i07BMB(VS6F;VJDX!aZVF[N++d-N":?B!B1q$*3T$"oAX1GOdj+CJkJefu,.!sih)<XGL_@f!
%TWX9)q'A4G]WlnrG-K*!4k%U6=n4u>UGuMj)&_A-f5fR;N<bS<`e_aK`!UJ)\?[BHBe"qJ)U\it*Kf7L'H;\=JTuuWa/KA.OIe+N
%nepa1#1N/WQTQN$&6oQuM93a1HWI#:$m#18CCu=FqPAXYh49WAkdJKcJ/hKeh]^IM778SEVO=\haP<oYaCULt3!<e.)P$n!&8H*5
%=>KnY8ilbm)D)qblp-+iFLl<Y;(YNFB5N)aPcF$d&/0*K1cU=\n3K0aE-WSig8Z[0;D*K3QB<C%GMHae/%u]S-7__,hBPn"Pc;l9
%k6]KOJLK2fDP0TF=>j3bA>$1q_U%^-N>W/?_,S1%8-jd7)!T7p8'@>)dhiR.0X/JpBS.2aV_K"+qO^rf1n`4$bKqooo:o/D]I]P.
%PQI:@k'eVX-N]HLMe_o^]#Ot%D)TulNi=pIXioXCRq%cg`ME$A2-ca\S9hBWknFlbPoK.)[$ucEcof5K=aR;m%!&I-)'g4nTiLr;
%T+DG&J(0=h+ZdO50<$o/=Wh`-#i'!ds+Bb[G#OB8:i:RTR_;:d'#4,Scteh=USQ/23>4Pt?9-*aN1Ti-=b2\R2!e7)n`FH*9[YW>
%VA+qEV'8l4kYLY\P<(Tk*"qSNVudBblmd6Ifp@\Oi[pZ\>t,uISrMau>Z%N+!1*$l?0jZrET,sAj@h8R\%8E[Wl;QPqERfN$>bMZ
%;f&G$\lbASQD2AMA"[rV:ph,EKDaD2>#Ih)TC!>]&sCq*jQ'-9rlp0J.d7t?gFmlr21u.1][:!dePQe^;:iCe/3bL(6I7f,f02L5
%A6IH+6;e9&0+#dTc9b[)5i)M!bRL*h/.Jp8?"esJ-,KKuc$/bacj7'nL$N8.'GXVeOa&\7Q\%:nCP%CcBZ`48TX:<C$<g:<]/._a
%MZ],P^fUU)I('M"*/J0u9okR`>H-$8W1<Rlhn#GI(IgUnM0r_nmt]8:*OX-87Ei(TdP\qB*B]aV!1>V)?=g=^2k\0%$3!oqDa;kV
%nCCg"q8kL`60o15-:9RG(tR`T"?DiU[^"-&j&XGhgX+2r/lSNmCOG6:P@t^`kMBA_]V5'fd!'A4fgnp3f#Ai3`tNd8N*JpN]p_T3
%;Mg$j.69u.Obsi<M@*'iX/o8-ET/FonLNn>2AM-uLDO6s^p+9]2TGV[)1?=9<\4035gip2$,W+=Cr&8"4Sk0#jgjtN`7d)g_0[*u
%?!6'%E+6/5?+=<,cb5<Rb=A5>o3oR:/;FjXEs8SJh(C);(AY0$2@&UbE^?EK`PWlS4KR:S*1kfX85chK)l=U87*)p"AJ]SF)Ql+B
%i('i2pT+5X[-"IqAXAJVb.2/&R0H0(-`hn%(p8(dP,%)$G%LE,JB]M.mt3QS/keZq9p8dQU-'<^@j2%40)K:^E"<CBLl!tn.`^Hs
%VI(6IIfMuhNTQWh^bE!-=1Q9-7ln*s1/3Cjj2aJBKM6`\E#aG6CRkFG)m-F/Pl$jea))p,e;sg6R2+!$qe-3;LNj>i0X51VW%&rW
%.h;==IJCpiNlG+/2odO5;it>oelC3ikh:t$p0::Zh&E:ceHr*kU"*c;Y[F387@@EnKc9O%7QS#tTW\df5KU`]B7RLT#u`o##uk[4
%0U`lLTOF["BcWIXSX^9CN00#(le<07#TWN;'ATL;KBPc2$t<_KR9B,OWt$J1&u@CA#$#"<LW9FGGmk:@"*4'L%sG?`ofYbJ&65iK
%$7b-8F/+O-)tNhgJHB/GV==eso&ikaOnPK*)?sM&[)mjkl`/@"X>&4jSX=_BU.:Xb4^77'6I^Wq%"]gW`3sH:"*l:In]_Np`t(6&
%PnEe.3];4h8fgYVDrMO2FZM5b1k>tJXKY9f:'q'B+%sj+iue<nqoaoD(CT260bU'?;):(Y[XWPjpTO(QWkWq1p3QP\cX-OiammW&
%msk-'o#8`=UT<"uhs>f9FE-sGajogcX-Y28^O#Zn48n^&dFm4;f2kJG^,\@MQ%-<V4SrMFlsAL1h0o"QdIP%j?i$hZPN<S7lgob\
%mp/!F;VpDsZ_O!K?E[SjE@GgGhu1="I!tPUNVDQeVV==;53HPpT-)m:ZZl**-Psh$B=fP'5C@Nu&XW&(G@1C:S"m%EbB6AD^?VI<
%hW!PSj=2ceY.6R']"$e[c`Sm\c;-'1Nm;ei?/f(;n>kADc&Q?rmELV4H&g]:L<Eh*kK<?+rA&M]J!Ji1#VNR5o)Da^HDmH#kcnWe
%(OYSZr+fX<'bB^2Je-sJBi"-.NrRu6lUQGBhLF4kdjr`As1dnfgP<a8HTpr@@YKg<ZMe.g\^SA;:WpN0EfbdpR=Eho?2F6A&XG!2
%rs-/#?=7'QoG+!.YDRg@W6m4M`<8W`BsG)nL`J,r-!V^66!PW(miVNXn*+QQ6hg7rQe(#f$Qna1@2IDU0@ci2Sb/RZ_qgl/>ZZBu
%msa.H]_(sL2LOu?:3SSXgPq^-2t?I+1MI]bahu<=9EBFd122UMjO(<qXTrCf?^;5sjj!O4-eIg8nCrlE5@<n%(;o;5%kfOgG)OK=
%X5+#q?f#2bp[<P"iF;S0G7mu)nEf`D("Ve#Ve=3JiA\p_4MBD3!k&#b4o`<ar;BncqXWe4ptLRRo[2(Zl1+V.#GrJrCAfFgD#P0!
%I!To2C3^bXgiCMnh[:7b*m7pjE-cS[`dr=oqs<UkS#a_Nq>+=5D]+e_RkINs0e$E]Ip=&k`Q9l.hZ*/sdIB!5#lO=smJ,nhD'/]9
%o#\U*q.dIX_;a*1pf\bU^\@.<G43&XI.F0O2nSgV/Yfnio^UVrn[F!3]ftE(e9QPKSKoEf,U9.V4l.h0am_p9XW,s:./r/bjW4>/
%pYPI]lQ`joq;\OAe!DF(0/La<iD,tM?Ch'sMiB;iJ$clG1)<rXY:d"<]P%#WiS]+Qa,AF,bEjRgBD_JrqUO9Hp\Mqt'0^g>+0Vkd
%Y\);Z%m,6Jh*8Q]N8W+SR;YluB9sDf?_?311\Dga+f<;te+O4a7W8:Hl]^4RGB36,bEr-9\Ej")*iJ,Q*Ia2qPC(=-J[bL>m,[0f
%%tC\lq"qOKJ[O\,cgU8tHQW1J5>R;HUC6u%Is]N0Q%.K#rl0+7@P<;+.a-t.)DkQ#bV_Lhqt?@>m$Bm%kHfr/?hU_=YrrLQoX)G(
%CgK91FIao%n(GSYDZ+,cqdg`D3H&EV0AG,4gXlMe_(Rn':V2g=p>EFWp<dJ/Y5;e6]5+UNIgpb\%sl[?BCVSdcqiM=J%N+Pr4mCH
%@#'!FRf!OeZ/N`o@R%_Qnmd(>T<U9H1]HNdqjZWd8(ZXgi'";bru-(%^YO28hlq&!5RVO_rhNoR8u;Nja.%]GV?-BT@+d,4nF"J<
%Na?&kq6+bbr@M.hJ+ZjWZ@9mp:".P_e!U"&:A8A^JZk'Jkth&"gA@'pI-h/oWA`B)jjDVfk]`&A(MBqTm-eX6?QG]C@>l_N41VrU
%HA'>j=3'qjT9d"JEcKb+Ie1hGeUMFcoA],rSe&^ld(dcu\3<*gqWVgjT42%%a0WP'rTq:5.=9GAJh-UdE@&!C5Ps`Hl]W81@_TC\
%f(D!"l/&h^p[cG-ob;32r9X%q00$>)bHJ(ZOpA25s1#RaouNEiht:jDlAL,`U<SFR^00=XrBM?NI<G2QoON6d>(3l;/Z/8loCB)O
%?[hXp4.)H4]Uuk9YQ+HJpUd3dDf:&0rol@KI<BRXF78;jjCJ(j(s>Eug9uujZ+Su[laK*/r^WCsJ,9JfQcE1*04(1I20tSg,A5fX
%-5Hd.(eD0U1sUU01\K&l1F=a2n93e?rd+&4\XE21G;a=o9PmT(nD`c"E`("u?@I=nfjarP*PM<IUT;j$bOW$0f=[?ZY^aL*F7/k!
%IX6<[Edd=bfmhr(r9)Oq2p+lYc$/gDm5P(FXpG9u2k`fmi@4Fa?sirro]l"Jf>ld=rj&m1\3'T6BnQCV&sdb1f.:%W4hJA<34ZW7
%[9rO/pMSOe^O=mth=CSIO0s4^cG!M4bBH=qF$90Q]"_GKm4#(r]"tY[s/t2XDsEgiosk#>HuL(r:FCPYT>H'TCC$bgW:Q"re7&<S
%&Pqe3`Dag)(f9&d/4-Am:E*41`?B_iiV%1_ld>%)Rt'>JD-rm+^H-.RgL2N%MtYu`#0a:>pA)#Gh/#-i'"?b']Nbj"hH2)uq9dm;
%c-6PVnbJ+;H5@j@s)26qJ%`S,UA+6Ip_NmMrSCuKH_2BuhW=]croWk8ACH@6\;]c`?b0+>\>A`Kn,E!h].Zoc[YqW^s*A^?3&gid
%+8k@FY>.hFg0_G9?_2[q'S#?@rp\=gl]_&;m2pe$oJNWgos^hIXk%+XPhgf^l_W]e^IDAo^]&QIG/%>^BCqKkea.Y]\m)>,ES8e4
%gL%-ce^_;*<L#Mt^FH]/j<Y\1i2PIH:lg"n^nkcFJb$B]4'o'VpKQh@U1#jN^E,FCZM2#0H$`9"qjM6fU++uF&UOA>h]p.JC/!BI
%0r>r<dGqY4%phBi4kl'XHdDD8m6?'RN^pK9RbDnlMl3K?KfI"U<j19J15t\(Qe>W_=5hb7YNk-W](Sh1kO7mAs8)&o\IM[N=oYb;
%:=F'qPs\kb\)2:FSX'*0Ci`>=m_!/]'HcrC4i[/4A);YFol0L<mCKqp2>Oi$hGV/$%XXBla4mILp$gl?=/PAMakuE`#EdUbgbn2<
%G$_'qs'7OXR+i6'h0'3J>ZfJ`?&Ur]?As)(HehE1GgkKu/o;iu/kk"CD-`P&7WaSAe4kG5eqL]ehfu```HE4nN[6i+0:r*TedJBu
%Q0$95k%q7!mrcRGeq6P\Ie3\EQ05%]-V%7]VX($Ms):`pNpD+srF?@X(lMhokhFt.rr+M[DqW+gEF!t@D/WdBgV3^68)KkB8$2`n
%p26OQrS-IPs1Wi&p^>s>o?4IYO*2UPhRqBuDZ<<Jchk'NG/TFprOmUW$MO)S?gF60r7IMpSB'I%.C1c+IEkNq%[o"^n%)6V3%(VV
%27.R&NcEuncUf`/h6L<g\Bk^=eF!*:GO)kn]57V7EAJXFLIXn%\+crnd!iUm^V>0kn#qe5?p/fi^OGX"/H3)MFrfekffHU%AngQ9
%2:hI&\8kR/eFl<fc>"orC?@aieQk)ZBUd\^Gt'k]lfK'P4+]E;=O6*Ar`o?Fk8uRV12P"?iEUWAR#bH-Gn\@[^>TV[\aQZf`C=b`
%]Y++P@><u-rCIu0\BY$We+NCUm\A5]0XX#)]6oV<?B!Ik-VHBiMnoeT5:r)WqAP]*?=R)dFi]N<]ADF,O4;4:a0/?`naY#O&a6^`
%T?4aRk60W2cXVUi]K25Arc`j,55dLjeS&]8lLh4$RtIc%c;(RnZqNpcS1e6?5#keskOh`Eins_!+*R+&q!%4af/K&.0933%Xlf8j
%:(D0P]\Dl)dAt6G]08B-IC>gUD:KuV'oSj[ipu<ujmEtTPQ(Qt^\mNqmk8%>h"e8!PQ17Plsfe^P@]eZB$oq6'6jD-&$M9FWF,UX
%Dt,(-Irj-qXj:<[SToA\YRuB(J)#GOb2`Bus)W2YVsfYKY5_qJ`k&kU]-B:"\ea\bpKRsm7/N@cnF(l#UN:F#EUnp:6-\$@M*>BZ
%ilW?W@fFaKH?"9$Ep79;Lj*&Ma-S/4^ZS8&q>Ia's%&d^*CliRE$QLtrhi90g%(Mes2M8=F'@f-laoY?F^4bVcY0uJna#M1bO_?L
%-i;*3_uFk-KHMD_oOWkBFuoWAf>Z1)^S7n//ZdCdYQ"H$HlE%'bM`6`o_@U`(T/!KHf&W<=TG$PJ)!6ndc[NU+`OEqiJ#!+3W8fD
%a6XN-b+JHo+?B4oQhp\9n+6KRr@0tK$/Y;(s7rUaj<oGBE!PiYN>Ip?M[AnNjK"crY"l_Y>JV99lLo/q$BBK$F'i7f^,eIR#k3M>
%r4HB3V4Y=,k9i2Y0,O6C?2H@k@mBt]Q]@t+Ap/#D4pYior@\)X42&?j41[H*]g*4`kgF%Xnqo."FPcuajSG>]+CPC`pVk8F_q/ZX
%jIY+UHa3@:Q`k=N?RoC968RrP5C7hMC:W9]gCKcUbK\Sb`V$:,AQ4`*?g`:;Ed-?V2GhfGpVpcfrUQP`++*8(9\Api4J\\-J*jJN
%m2I^,S(h8'bPoN,[O_6g&+TJGan<d+G:1!eSG_QpmPcdpDiS.oSt4_chnGOt\Qmm@Fc/9WqUP$0dDa_@O1mg2I=CuA52H,9p:HNT
%Vm"E*hrim8o<R.o2c+&BS6VRhWCo1^eQ(N#\D)G^/mP7_E5oM*`_ru^^A(^@kiI"9=0E1)oFKA^eD(@Po)F&bKONLr5Paa.m.M.-
%Wuj:D&F.DPr=jT[??$H>q<m>=B)*i.Nm<Y;No0>ha(M<RQB):VlT^_sq"6D:Z.U4fNI./pQR?GGqrhW0jQDlM7qW[_C]=:8K;)ZK
%.>WR>rHN\Np<S5=08$0KG/c$1a0WtN?+r:Dp%n$$'hQ8L)i!II]8$ra_u8OQT7;]?cXHc>)qKI")gTQA\(hJQYl!q=G)n;c;rl1d
%iDVpB:Y--Vj7:1<AL1b44PYi*07*l9L1P(hm.^>FZKlF)?bKRUs0oahn=`q,oXh[u&Qa+&&?f@"])LU1(S>#]Fh(_k8pB/0gc:D+
%ir3AVG8HV3P1cC4E%YI'T>j.OZf3o:SWA$Vo&d@+0]epPb($[eo%S<+96DY1n5!4a+71YYm1H1q>70ucihau&K4AH\kg>HQ<<`+4
%J&GX`n4.C<!mT:dNe&gsIh6L)Hfls;Ng25DoO-qS[iI(!lHR6>".%iF='&046b@hFiL6+U]_P+b>OBPkFW93P6>cI%[Is:Ns7kZU
%jiq-"?@9Nbq!.K5ei+WiCPTZ3Xf_#o7iWWCjSk(G*P#s1GS.&!GP:"0@:.^Rg[,rO>s1>XIf3*`Y$O<*]__KhK:V`o%`7qq]iQr'
%*;=d>Fl,@/F'eM(m.gJTB8WiP^:8W*8=++0:=#BFHfqL.qY]*Gf7BuMi0rcW4F-aWCQ>SN?esW$Y:a^a^-(0I,^3R9rVAsqeTf]0
%Y+M<Qfe[hXn_t6Uo>+'P:;/nY^!;6H*FE..0MD)S2.o(4PG=UOqoQZsfA@Q"#N3VA]CRLS9i6,Cf`8K_rTC5ZLM#.Df>-[_^Z3K@
%Q`lE&hf-F)"0]uX?G:k-U\Wj2%klkAQWM@L]Y6@Se:tc>O"N%/?%08&_lMY$$Ql!Z2NIP3q"2b-]73"iYoI;4jn*TfJ):4rT0N5N
%s86X+h=,BEQJ9'`]):hMQI^$LUDB'SjRhG_AW3bZ`TbYC&^:8BJ+V$'Dje#KZ3*1-rU?)s.XFApn:OrejV:P=UGk;a\aZY2iWU`Z
%"XG'o70@@QYC#tL'ihtnO7m],m&Sp::+kH)]R85!d\b%;Z@9g6r+>b82lKku?N;IdCUN3Njg^*%Z[[_dh/ui]Vi.8HL<H_X&F_Vq
%fPmp!**li70Y$H:J,.VrbLZR@c(cr+\U=)6CTmHUK/[)<W1n.)HS7TJ])),H^XnOV\Fo\1f5>p5Lo\"u^@1]@H1pOgX36EV(,!q0
%F6j+_%tEU#bW35e5>YD%d(s%9Fh#!/SA+=3Y91([iV_(UFE>W:]DK0T;t)qp*:0fa4-*4/)YR(3YO?rr[qEZYNmGIiB^].Y]G)fN
%%_PL^a[;uAic1U;=4m,/DE[+Xjt'2UDTM3*&)SEmoC_E`qO$0QHAOHGm,HE`HM+d2'0jm1fm[r8H="hoe+7-@HfLF?/mK4TrEbVh
%gapVRHm;pDYUJu3E@tBZpdQq"i3GETo9UiVVdEfD@=Ml+L*s;@'Ft@VGi?ZlGjpGXf<Qak$H7B0fC&rShC=!N"+9.XMf6qEDjHsP
%FVmHmX\UUah#WkQl-C=:J+p[2Rsk;+-\!>C)J%[@HQ;nTG7ANhoQQW<QcIug?(R[i^]3]c`QJMRr^R4n+*o]hbKn`[hdP=GNh,s=
%Wa7nmqY]=&c(?Ym^AV_$g$a4GA"qFrrGKCQ5F94`l,E2GCNT7@bHo[X+4Sb(`*uN'qBVQh=hi&t[]8Pu^(95C(H6eoL\L(YHmBas
%>TDW;7lSbT^-;p&C)HBEHab)=SOB)Z+8YKGj`cc1,j4WEF5c)5*_cOMVnV!Mq-r/g+'rp`YBh_cpblIbAZTtk5(0thWRJ%Gj,>O-
%0js>6Gf9Np5B2f,HtggJqa^MMIHA!-RbL^3oo7FBfF.e^XMZp+M4#FQ>*$a[^>5$!hTkqP3d]1^giiP>TZH0"<-OhI&+/qsKB8_s
%/c-K7XQAS/g^^u0m+%5Zi9Pd\E6tu:MregUq;fLZSY#cTbp3/Van<oXb`D.i^:?%LGUU/TeiSWdkiUq:hn2.&EH-)H(@g0EI'_&L
%h9jcpDD@l0[OQL"`)t%EHM?T@:+g_A8)Ib5N\5M0!QH,3*F5Gnii!rKd^&=;GCR9f/XQLm^Y/@JYBR19n%N"<mKke3jj&+XDYH#%
%-r0LXo_5uZ@I9s/b8]nf/ocg0PMI\Z7Rt(sU[O?05C3!;)*+gVlds27TR3;;Hq_Fq]oAV,Ymfp`V0A85XcG][hS$Yus4dG!X^l`j
%h^dV+A=fK/An7&B77@dl#7q"c*0B.GrVs1,r?UV^h+;f/Gh1Oic?e+."#Qg:8ubchWF'B@Om*H9%1&DO=a_i\D+<d5J0W.*]28`]
%NTNnu4(DB,JqVsYdM'iSKG76O%Q!TG,D?Rc%++Ni:CU6r%Ma(r\XXU!)V>['ko`>Fd+_<hncF:824S3'1g1b@$itj>nd\2t^KGu4
%T>Rm`\[_>kPFpN=A^."_Y6"FEKjfYb1^CgdTk]5.G[AcA@%(3F[R*_@AC?I#_94A\P(mI&j<XW\A7`D@&M0@kX\IK7@Gh9m*nj6=
%NtP.9Y,j_8H(1d!8K*UdQb`/iX^3et[UOZa7.oSQ@K'9K"BVSm\tJAiPGO?FoH?4I^o%<"&M0i[]H-#hT]Ms=EL2k2l*T\WmqsVA
%HJl:ufKfNk#S3#nB/\7ZodA+?4m>u$m7afDLMI.')D!5-e%sK"1s/7>kCI%*I1qC>pdG*2(RH4Kafj'Dj*9g#;lRHBRu<U(\hL+s
%El4XLPReP4;t"ne6bm7DSI^H5[lsL!l.SLPUM:=*o6)`i)#=iDUqQ'.9!%j]3Ts"NOXOL!(ZUcS4Hm?PIGa5*c]-iS?(@B5:V#&$
%?<s[jPFq!hmH:kII"$3Y')HGJD=77+eM2lg:@?G'>,bE-EDoI<b0`q4%=Wa%c*a.T<LN'IcquVLcL8np0lFM$^,@)#-^UTtINr2q
%HqIo:XB-p$4g>7\IA_$8c+g"/2rc+UE3FA!%qibL4nS`!@h2Xq#rjc6H>&/^21/D\"\p+7cnL@1QKqI*TXFa?>N<Cc7h%Vc\Wng:
%U?bL:00*5]n@&/3brin4\nB(LgXY=ck)>3FH3.YXZ^I\;&2.DdI,JYB+4\0c%,'F:VeVkEM0C`0@'OG?-kh/f-@W.F5;]+0e^O<,
%7j2&\:AtE_*$T-=CWNYJWV\<-BZp3/NS]kUk3W[pkO#KH,&22&1KO`u0irc_-&jd,r0#-"LaM!]Y#=8L9JeIDE"+F=Neda^d>ZW'
%R&+'PC]=Qp.+bu>X&4\MSF1:`jFfo8bR5QjbVbscI3O:ac#D@jSjio0U8u>\8P18^om/K:)F*)+bn*aA)_B*F*M:m@lA7a=J40A4
%=cGNh$Koq^+I`)U&q(\[)^M.92^4ah\o_a"=T[!mC?0Bl;M[5;;Es#;S4IaMne=S^TcV[B[?^N8)#f\TjrM1D2sjb1Lp"240t6%A
%H?djL"]WiHarat(a,4KZq7"%5PDLW@%p\-Gh^+<4dJ2"u',S&,S!u68Y4;C/8gWa_^RR5s7-@hHb'C06$E+4=^:<4YMs,!g&5=f8
%7+^;X3%bgaL4'u7ahL:5=s.!u>Vn./pI276cGfl"5W58SCMWI,:/jgl&lGh'rAphhc(*BU;[lSp73jtS0#'#cA>3_nqm/iSG=<e2
%4--;=6p&Z3=T[uUUp3*/\=7Zf:Ed=*oK(6P1m-uR\,"A^78u[\2tMsk4,mpC],c0TA>5WrpXWul-kV<mKl9+>.VWD+47O=QBgb1q
%qbU]h-@4(2J(e625)#r[XWmX!FduBe/ok=U;[Upm&iU`",fiA,K+=At)$&rm37d9f^df^9(leYp1=<bj^03D*$V3+1Lk;n1[*g7-
%%QZB@(I0hOVq"Dof[$ZjFHI#GM#NC_h^_)/m.S./2H##@b^Su(;hnmN3`UEE'6RZ2S6lAmjgB9-ont+D'&Ae()F`lP>[p'5pnpjS
%'^fFF"`_N3lhq#5)UYTP\(s.?V2'S7A#nEa$dnI75dV4e$YtRPgl@lQ)aQd.9DqTj1T*,qG.tP5JODNS88mOLT7^<2!/R6#[Hq2$
%l9T,[m=+B&$Tjtt^FIR;:ZF+q0_K.a=SVh=4d@jRZ0POiJ'HO8Z]OgdVm?Ofjjo(VoN%mH44cE$=Xm"hB?r7'Vs!cW2hS"7=%%>6
%iu!!N?$t(Mh7LpD%A(;c/#9'ea1.W)hb37<=.9aSD/.=h?9S#2J'ue9XdF+;Dq1u,1&^]*=4_$Q2"g&gGhRJI.8TUV]2(Tnl+_[N
%pb(f,8%uoloMji&k\W/SrYfVA`?P7pi\iom5:o90qZ\$u<O.GarTQa*r_%`eq3O0$i)n:2r#J^cD>+168a5JaV1%Vi0.s&ue$Y3G
%G+Pa_j3O&1%h,J+CY=F7TVoc*5JI?Tl24%N4d52hq!.[^,l7d2NtlPIMcdA"4h[mVkGQ!s.G28SK^G?_Gh)-^&(=a"$m$?D`I@ta
%35#IXfbs`:9`8?3*He%$9@k)/CusTgKl1"s]qD9ui^D03pEDg;.9G`r$l+I84jX%NJa5>K_JKE.YLbmn..AdrcaamiE7I@=VaDVr
%E^E"RM*c=ZW";Dk(cGDb@i;0XKmjMs..hT;,biO:KdcSVnohcoXGNNAc/<K&<tV!K4AHW<U%L&PNFPA?n'Lq2;X?+q=ifMK3`/CW
%&toq,ej#!>nreMn#jhS(dT@ZF`s+r$Xq[ET[/O)!=Br1sTM7/7&\U)1n&<s3M5[5jTM:!`WXD!$afiRU\J-G[RD'K@EgZ4B^<&MC
%E[M8I,#_.^(,0cm:dp)2i$t&@\JK6U$-O$hbs@WhQFJh`9O&Mh.u*=4eXpS9:mISoTTeB</,7f*g?&WV:&9L-ht;]M$h1/#is'Wo
%=ehDcq0j-mog$3q%7gU)'3HNQl:om:"B<;moucR`'2X&2C!uBLrY1^5fo9Z"UNR?f"^_Ji/H6#`_.&"p_\JY&qED*V5>IV.!E-!0
%N8UBFS%-*_R=W#^bJh%sr"D-keT;+Y_[)fJXJqaW]nqI>Yn6j)TT6S@iBY?PP-9<]7S!rTNrD]V28uaGNA']\53j&HcR'.NC^.Q_
%LA?JmH)L@MV"%$jR(0*+hhK?aSj.,l3PSSF-eu\bQt=e"H?%!0fPTcpo)-Mm:[=nNQ%e\J_TFp"m)++-n)K[fn#CZ<aSFG&jFL;e
%TU6A3/6VcSWi,hu%,e.`Y#RXUkc(RPYkn!u0at0<#0L5k<R8;snH_UPSp,>@9=HXTeFmOfo`Eru*g1g3U[W/#kF]2J1U>`38>QlY
%,7H0jfOnlJ$6!.uGBIfCl=[j:aUjHP93K-=UQWV@r+VaJ`7ZO%pA/8N]]4NA/%L\q3V?"2`=Q8:*r+oe3_eCFbV@VO7GKCF0udmn
%Y5#q(;`Kh1"4-qn=7VNXgh0D72+EilRl`NJ1kW<n26=tA\Z\q\X2mJM/u'N6>R:9?[3.N++=rG-A*bn@:=[(.XU[bb,e9VtK'L@u
%gjIS3lM<Atq^MFA`,X($(MraB2d"F2@0TY^lpO,hPppF9=^fOSB@`"F.\A-=(74+$P0Ks%nfkCphNe]TD/P+("e?`PpT^;hZJSV<
%22t`>ou9YndbI.G/'Ds_(ehN<@aaMQFEoI]X>#.@R0A!CbtL1,q1F!0OYnl8=lg<=r\dGb9!i"X2eHOgBUXN_0k`+aQpKH]YVGQb
%*/bi#A,IK1(>ibdijLDY@7#:\orZ3X]T`1Uf!3TRb$_Zc\QN2EZ6%bbljW$a9f0)r;Yen\p\904E`7!]FHk0u/<N"5,&`/5Kp=_@
%B'09ZNFF>fl(1\jI7@k#BGc?+N/;SVQ5=:;e/_t=nMD8K4`R_W7+&En&WLW64$p/'c$3\AWERVein-(V)[>2o=t"K0`?u0/P)Q34
%-=:TnXZl2@<Roj%p"RIn!Er=[Z`Uag"<3)k5%k#g[/SPBnY@d'c#;=8]bQ'j/[(hL?o:hO*T+m"Z0(N(`tpDbhOLoeCcNSlaRj\?
%*Eg!h.@,?#m:*Q>LKRU3X7pNtdL7fGNp-77HucIf2\s;gJ5ou`.*P:'L07'_g%S)ZZSWjI4'cV)4RU?E\'jU^H/7W1V=.>FH:EmU
%(r[-IY+3gLkVTSuA;._f<,9=6,:![@g$_kpIZJ!EcPRu06VI3ULH"-0_n)SuQEA2U^cL*t/gVEtlHI,^J?jZEWZ+Ziq[dtV;foO]
%BA<`rjYc552iRED<<;70j4lAFf;McVU(!i"K>s:5^PV5Ml/`e#8eVN(k%uI..e-D$khMAGb;7[T8a-aqI%ce:nkrPBc#%/>"@LB"
%0/(L)Hk3$Wg2NULqX0__<,10N0cGJ;g\4AH,Y&QR!GOL+*>Cd,b-()SdL#A;N(G`P!4:-FR?5daV/Q[KA^0olU+Ilu9(9%lcel5F
%5%Bg=A#TP\)(=J%^?6/00MMkbjqFJaX@JAVYoEiJ[F&$L:54`C2LF_S5u0M80\"4aZ$86DN*DmuD:T3b8FG%J5\4j?7(jb6<%+m$
%h!FE!4.l1o&)[+YA,$A(V+hX7Mo0%2+0mg[D$`Cc(eY?S#Rr\g$LNZgAk0TD2AS"$#5)VV'I*\AE\amtD12]Z>mr[KiT?icB]-3[
%1`AP2lc$$)G`(A)V,XDkIB,pSYd)K><MN._$cSB_NHOXcC:$0hQbAGciN*o31fi:bmHh"'AH)hAEr_1(><0LP.r#=@B\:_UQ#_bW
%fE/'Y9KQg?5r.fj&<"'?m4IkpNb<i<DpT#4%s7m,*!.dM_3$Xabi!S``klP%=0nPSqJiL>P1?,:_T&Z;NC73X5<c+&*oZb9\iAU4
%P+%>5Ts(_*l_ZhA'fc)GBZJ>j[P>4c90H`Cag':teC_THeSooY?E!'BnEE7*H`4uZqg3]jTL]:,)jke%7!TT5h9\9VJh`ahMK27b
%qo0'LGK+tQlRiBRD3'bo2Z!``mm/IW^!QU.#2:l<mn'Y&nRP?U<d-q-KGhgoXmLkIo3oLB3'_g6ArZ8l)idu(HXWl46g+@36k%!'
%%q)'57Hp/-Q&7iT:Z&1&kg\7ZA@?SG;t!Hsc-ITiTWnY`L/,t#2W,F1\Z>H08Lo)!@Zkf-do.Y%&T'Fj`H4.8QOJOH>S05*d`"kk
%0hp8G-Z-G,fTp>i)cJVg%7OIC>grKFdkuU<7:dctE"*>FD$q7<5J+17gh5@*%;[S=ei?EWA@cB1-W<bEn<o4bag[!Z=O\2,`.7Xd
%FA!][&ZX:_UJ<PH#^WYR.Wth?U6?pN()U@1rVH#PY2)$SHfaIgd]'E>Ks<@acK7;!L<^W%-Qn0;a3Y\KkeKeS#_pVA6)R'XmYIPm
%7aSt5<=XSRdh0P1FFqQB5DIH#5ptHeZ9O(=:K3=H,G>9b_9a&EkZ$3D]eFQJ#W`C3]*F'cIRQZO)4jo5^sE5o&Ti7[ff1.C%XT]W
%NLaC(%Qka<1^l<em#p(L"eDY3]Ceom_:.pPCJC+Qc:;Kd$>:ZtjPU#:Upm5Wm<>$\FOO+537EhO:VSm3#02VDHTW5aXS9WT-`&8d
%s&(Z!_dXZ/Emh0?S1]ACFaT6lR&HP,a4;]gj?A2KBonB&OXgMt)+*I2,aV*hQr2Jb+592>N&Gb0"@0A).L<lN)i!`AL5kjn)`h*,
%e4bV:RL16H7B'\(]at,.ighP(!5"X?gXoWDD?`!`gOTGhZZrQ+4!M[^#],C^jbe?D%#s3p=96)I0kjI4Ebd_HTnP*R3k_?ESk4P8
%ABG$0Saq7[>gg@#4^aSl=n^sB(a1&Vc7"7]`1JYUZH0+(k/>Om<a\l/qN7C)$4O7K"_a?mfu9!3e)Xd$ME$/[c34.K(TpPF-dt/2
%k;r#2/X.LLMl`,r.:qesjq!M\&ouo5A#i=@"Oh>hb]%rAQl*9NJ?mX4A(WpMqlD=]6j>l^YgO@?X*uFV&MQ#QF3NPj`:>&D=!:])
%QmV=7.K4%d1R5e4W.\.D(n6)i.;g#V?%WC"j-HQe3DpN8"2pZsE9(MQ&4:q@Uq8DWdn7*S'-lBqX-;re]<b!c`EN*X7I*[8?B(]'
%o/-\-6A*E`R%`Nn&1<L-1h<kA&2uDu=##>b8i(PJ'Qu0<j@#uCZGXb(JHI[AnjFB-3AuoPObD3/caF]@(:,4L/%KLO]OM)*1I2H.
%>).ukWmc05X7k2p`m"Km+s(W:mBO+=n.$IN(\H])7(`#h[\8G"1eYV0En.T:OWeoT8gT.sRG;A,HT).7+q$2L(Gk!5[>55K42#Jg
%,(k"EO3#7FfgSkeGK8rV+u4.>cJcRjfM9d?9+`&+5t$@g`6LK#M9+?)?uRjhScOf=;r`[mN@"2s@;%!uN\'oRSK8u1&&Q[A&K)RN
%C6$Wp/L$sM^dH*e=lD@DNua#>W<J<rP1cMj\aDqF6S7ueg0>Pea2_X?")H1rBe^/Vbh8"B*W:jtStV5U/Il8:Vuqe:1X##oJYDJ#
%^b4]`gH"!4@92;roMf3,/SKm>g\K\[`T)T\3ii(&,[;?]=VHn6VEn&"S[9^-79Q2R<';>^,dh95UEfXhLW76Zj8=\N__L%5[MKu[
%Pm,u*"F>`[LU3SG\dKR>Ph-.+@u&%@m>2Th`5C9P6!OZ1_l<1I$6i4s3JYDf8T>Re&\!gT8&E0kD@&9R*mR5C`#T0qVtJ"Wa#[5V
%NQ&Nh`=?HN%/SJD8<%K.OqZM]b)%s?rS-5CiUp"R"W9*>:#"'#CU)%hYL(SO#V=U8gl_=n=@MTohaOQfJN(o"L>Y+=5g04'+J2_M
%`Gi?:M]qkS;%,<KW/^LMWEBZG&Q+o,.^to8+GRA,f?2__`:2?h)!\5CaRB)H&FA@!W_Lfg)_c#^<=B>L=.u0P!$O]J+l)1^)q5?"
%3ZPn/Mje5e)l"LeRX,:ogD[bY.tJjMXCJnoZ(4(Pat*dbLmWgT>d0/XNB*@kUhkk:Qm8lFlN4RZGO6F:6O9e]+B%Y<Jk3R:&0gf8
%5`!oOp1p<M+Y?\fWN*];)G=2:RUkIo;OsKmWi:MEqo0QlUDW9hE4?sqLt6!h_?mb9Ul:m46K'a@HY:-kmJqsI*4O]0$HM(+*WQNP
%DkY"_E/$AZ]0bJ@W.I%XFE],Q*Znla];qZAKUGejqYk"-i7!-6_W1@BFFBeiePK1tS3TD/OWc4dU=TYe)=D+S<$Tu2P>pWEr0PQ6
%C_?h)]q#u!%h5t[1;'s:FF1fhf9gPHW&Fs(FB$m6'`!G_j+tl]S-,HopmXGEF#CC]DF\hrp`r&/LJP7!4)eT-nC8'b%C`n,5@mq>
%rR;mg?!#u,=B%*BOsebSl*C'k"+[N)0t4`5*fa%u@r_"K//`YtGBf(^DNV/L]jO6\H2d1<4+5#o=O-p:l[]7`]/Kf'I2X?s?8$Vh
%Z)4%_f]i0b7W`6q`N&R7.%CM.k'WdO8l5rs/,m)njcO;oDF4MZ*FNi;Nj.O^=mgl.2!&gbJ+FmgjYdd*h)[hLg'g.%;Mi8*Yj_41
%HkE.%GTAH&k\Ap,g8RL-jeqU-3W]i5cEgCRcms)[r71\t2`CPtmu=d55Lf-F.O+8p;13Ctg1'VY>^,2Y$#re&-Q5?OMUM9Q$Oq*V
%YHap*8Rb6$`@Y3B$'DO^5L_513#Ou.]&&/glpNn@?n2"a.CTIh'53rRNSp@)ILWVfRWk\U8*Z7XVoh:TaY?9DC?@P+N-mYr.*Il%
%YE-5M*4[Ht*ei@^Ln*`)<-@)S2-"f:T4tD.G,@'.QD-!/UC-/Vj4LsX1TN&u9Qr?^dugkV`(9?'BKAe+R%;WH,V5L@@g>9JObT_o
%'0d%sNo\&Lno?]Hh#WUu4!%nl47XQAF<iE.3];F(1`cH&+o@qsXR4*@U?V=!3GAK.o"\p"g<%EEd<$X]RW35k/nd;/@7\3]m")%O
%B32msRG=jI".G6\gt3*sVB^4TF5-Tncu^NaS^(-e)bigX:=YK`_k?6bo;C4pLI0IPY]PPe_L&$A851ht.kRIZ9K@8-1`Zlq[jT3i
%%7=Wcm>e%g*M_gK(TSfs-SujpJ;C%#gQn.p0WE6t@-Q_mq-[ksdV4PG.30$q8+U$tMl%_kN#Wa18)7M^MP_UQ".^bY'MV),L@*o4
%3g(5WXiHd`gB$B-f$aom!"/D<9FC5D!pP1#<5.,BqNG,EONphXe]dbdXc!;2X-:0V2N,K>;m24g5&I1d#%-2u,G-ePn^"YS@DTGV
%hAPUlRWb]E=K7D8-$j\odo*BN>lkdlQ!;NBpgbSm=q+ukWD;I#ZH?G3)WnT7d<\1l<+VA-bn?HA5!;.h'LS9MeX\20-M^tZmW@"@
%R*LJhQFS6kY;?@0=hYPST:\e*FLTGDYVLDl<G%2a<7]4I;'Ut`6?hR[,:7!iTVZ1&k\fiEGD=a/VSf/b/N/'EH`hm1C(`dCa'$>R
%rA4WOPp&T\N0F<Y(!?]6k-lC#eXl?%=irn'XA:P5\FWCM^bZb)Z_D!PHR6VWYomFKnV(H#+`iWBRK3j`L8H(1Rt:Lsp+OpX?6,VN
%1,`8Dg:O%l>9/A%R`ZX<G'`o[@+eALWP`:7Fh]NqG')f?8RaIpo$QpT6ksl^-c"(J)ac^aj#I:6*'+@LkdAO^87@7s0%_"fZC0L4
%C.HhTC]4+#DfBd5>6.$"LFQgCqZW4PeOgKS<mEh?[S@<X?IY"2;%>JB11l?\bL'8A8Y.n!L\g^g8(1aJ.??Z-M\QZPM\qq#ab&/M
%03IL]RE<22hW(/hO8GC[W-k'8OFd)3)RXX:>67V_HWR7;XlrAmWOsJl-j)A9`uNY0hVj.>9?=2b8A(rW"'Hl<?m6(ZiQ`u!JfRWt
%<8l,3h<H"2gl[\ZO*d5WdT3m4Vc"QtT#eE>hTfSd[/s3>LM4`0_OZZ$+0nt%4&WcD8,]DN6\RVA>Kn>fl'e;NZmd+jDs$D2mjK_7
%B>Me(<\i4P\_A'*/$?,Z!,H))0GR^5Ia8aDB:ik''X^Et*!4G(-7(\bHnj)n%$!1n+=>c:ekatZpib(O1pUQ0/%ldOch7o;%%m6t
%U$FEWN6)'_POm0b;5hMd^mNIkXh3uMGl`mF-lEEg0:$!>L)`i,b-(qhH-9)N>B=8TM85nOM$>X\CEOtNV3jPJ@0_a,AM=O.$pu<u
%_r0)m2ZIU)2D4_PkE)oKUt_m(,M=+?_d"%j7I9+WjdZdDLa!MP[5-C%=@14ib](UCO+]Vt#kcufg`rmjLMqH[e?_0T'm.R1gnU5E
%B=L)QIPX[$mApWd7+2[`PjEt-iu!C36!.L?*ZE@Bm"(Xi'ZBO$B3c,*G;`3:dD7"Yg4+h6Kt;V/F:#.gk+gtq1>O@6a"HjJG@&ni
%;Jg>]FkD(?fCa_rk)NP`%c(r[!*^[/p5`ug;O8)l.AuJZIQXKYn4&54CA'CK?dkUB'5]X/6^akgK]i8+D'(X^1had_%"9tIr`tf>
%FTc\t>4D<f:BTQ%hZMuP^f&SX=r8;$qZkdN`_hS5NMi'XDQ$%$\JNZJ.?3Q0W6?9KUCpk7hbK^lD5i0H4ZZMi=rkG@d7E"5c(#,R
%iaL=;oL]0nDJ,DVP.u5*S25Q=k$C,%$[.8CY.!AE>I@2B1$acn8T;La6U#)I'Jf*V7WIG2CI2(4;;,R4o;t"^6;iY1:Nru4[A8PE
%BFtk<rhmu/d\c:BiVp*ba#(u1%;hqD]),N?l$?%O9@Yu/RK.I3-XD$*)T1(H^0'!&.0[s%.&TkBg(fkgADiZg,tQ"JZ-Zq!#B/.s
%Pc&*>V21PPYX8H9Wh'd6Uq>m43)4:p92_&kWG9FaT:?k$;-1Z^O%*DPA'C6SV@5h6?o2p5[XKned\s=Y^P4Ze1-!(eY_-@t-Ds!!
%"5H:+$nYKCg3pbS-@Rbo^"2ki,KhKZ'VYU%]`oB1L)DXVlF"FIkZM(?nM(Jf<e"1UA&im#H4;ZM%&fN`=RqRn8heom2IM8<D[<kJ
%kKJd#T.]#a(0,)4iqsQYFuHb=-r"2JT0P)GRbkV`@#s50nfjj2e#S?+=TjmND"+d,SaSRPRU<a9!Fo]?YR%4$_Z%u:aIH14m+Bf+
%a1I"Y4*fU&ZNp_V=b:Z$#RK,mrZ('lMC.;0J"O\FWGATlpFS46<^fN6Xu0s1BO&C.)TU(+4;J,m5.TI2@qPCU/9,L?Tf&^"$e)5q
%:%8`lfc:7;M?,QGLP4*/`JSsEn'qIHO;.krdel2"!*M%,2X,0l-PR[R#*?BQ)&;kbJcQS[(YUo)5ln9#!#\WlFET?H!"Eg'B0ZL'
%@K<*_]K6H3mh-X!,U8'9PC10?I-)0s%T/H$hF+XJF')7D]+j@jUC.%.-m,90gOY:RdIl-8Mt5QNkIU\p.%b&CrS+&o`mq@)<Kth6
%IcVV>q=$"NDf3BI6A5?*5_Dp>5MXH4<qY5CDCA4b^R^Kl#=:kpWd]`7)p5[j+)A<e=^=7h4JfaWqFPaWJ@hK`lM=Yn)etGFId.g!
%=7sJ:e+]g,B+/Sh1@Fk>lXt%<;_j.[fC^?s=&me3(/qMBf?\[gD+jt9o=BCj6PEMkrcS0uX89)&!&:YBB07<e0"+he5@p:BD`-FU
%Y+K^R)'+pNcc+SkWd^ZG]6@OF)R_5B(fX\UU_F.,%9+m$rJY#fFVaU5Fo>:p-A^Mrp%\7$]^JnQO4]?&jm?95O6o2$4A.GCk7GFQ
%0lFOG>sIALIdm!s&9[q>0r.eA;r9sJ:L-3FUIZ[-#H6r9D_4?j6B]K>lhUbo'<[JtEe(`M`WsB_Jp[O/I`;Uu7',S^Fo=ib8]?/9
%Y9"eOl*+kb^3sqiOQu?VUop>p&^Q3oR-X&6Z/?\%fsWuoocj_!V5et_.Qc8Tdtj^[G3(k`Bbp7q"=j<#oeSdM7Tfj!W9Y6VXQjH'
%*oDuL)Z"c-H]'&@Wo)+ppal6hPhR/LFoAD,imT`\]hrFo\pap$6*9EbJp_+3lY!:.R8IZFf3]Aa3VXNI]riHN?`L,T]AD8;Xm<GH
%maYKH5GM7sIh,J=ccie/XiImm(gbRTqRV..RB\V'4JAdI`OjTuFo<"(UoJm`&U=#\IP`i'7#SqL<7fGUd7MPWhn-$5`\Cb!5N9@q
%44Nr0*4O_&Xri:'H%<JT``;sgB+Io*qAC6,\/sD<Y+Mt-83BK!Trt#-<Bl,"&Z^FaK;sCk?Fa]S5N@-!._=2?>sIALIS=BGN$\,[
%&J.+:Q6MqJFo@7X#82o8Qb%Y<blM-:/8.]Lp@,G<UP9N,K&G'00pP,<S0kHjm$/)NTj<l#HQ9KHd"Jd+.#+SZo=MakZ%kf<S3nhU
%As!CK'k<-Cm]XK'N@,(<Dll^cmb-=Lot/A;*IQRFMI.:JX/f6OY8$k06_E35P>9cD3Ncd$r:[;[I'.Z74T<K'K#PU,*:0<2Hb'!l
%1<qb_oeP-DH>7HEd.WpoUals\kMcDo3tJF/]PtPoDj'FG9,4W03Lt0!hOf#[[M/PuDO77Rm]JCKEDMpZ1[\rj)0"VZpkO2+>e@Q0
%r5cWV?%fnlouU-I[Joj+=52Nm@I7<#?6eu8Ah,&ehgW1F?;b,,H,&A$e%UZ_hK@]3h\9?\X(]Dg-cQtZk?]e$\2esD#B(MdDt,;A
%:Bb;XTXQe.XG>7FcR5*C?j":&_Y2O#;q-6kEINnkI:B!RNA'sSHtD]]YJ_/V!YX(J9_aCZHp4&F1(,f=%+iB[TDPe<88W80=G+XI
%$1M`5<9+rVG7C_>r9^Z<RCa>'P02_0Rp[BX7^XWb![b0Ys,=,3O2&a)1T0YQ@mN^$nL56>.R^pW:5JGk:0)ci6f:>iWNh/B0aFY)
%-:HIWh[SqdnAG>N[\rW@0eB?X[>1NK&S,)X<ni"TKf$-?H\s39's*i!VOTqnFn5Lc=eD5?h2R#oOF,aO[G#KUIssW9gl8T=i=*g"
%0F;S+(Xt.SiI5s)"ja08HsFRu;,IWI>@.,j%p&2sK!?G#<2UHB:qpDQ%`,UtnSL,r62jM-,6'>8XPXLkYWn3=dd=><rKou_>dTmf
%aW5fhAj0QsHB8L_%q>3//h]@9LQi#l(Tp]$*]5.a,Ht=1b0knPV`[e>Ds$t:Ujb2_AiZgZ%T0[FV+6NLnd&CJi3Q0XfGC:,9+Ke_
%(Q>u3h])'ncbm0n5d,"0@KYG$&:Po.rhP%ZgNH]I-!R@+)>LQP6!lriCr"e@%dNBtpbRP@#=>ced`kQUQp8>9i^Z`e(EKs39EH]o
%fWdthGSreHig!2"@ria<8,h-*H`D'gq8tZQW[0+30nmVdmoACjJnD3]9!asUYtTM&c1X/ofi5_JX.JrHa3W<1o\&frk2b\8aVA0.
%#`PREm!fn#P`Ip"'j,-.EI"6@X(Qb4;3oH0#\i?=I!-N]bR-X$O'd,hESQ;r/&;'h!51]2P'@@lr=CN[Hs=2figV"a%@C]u!T[>t
%!0hn65o1sMs2DY^8A#`eJ8Gdim9B:G^N;h>!8@:[i`[lAI;!JJTq1u*HBBEt?iq(W2#2d'LdU)%F;$hj](#f@9o_/l3e*_5`?*Sf
%R=EL*i1oBMB(FLLLYdVI_dC>Ii,G"L:M;ARljNPnF@1jed>u*j,.Q,ETj/-X:LO%L:J&A70OYc1_CC]J^^#9Q,n4CeR.dRl?^.9o
%+fJ9R'1X#*p0nb2UCU%(^EdNEG*GWpcf!)t##(<SD6*NG314LQ!F1$8E9bkZQ"4>j<5B;bp3df4Df:s\.g>Yu4IBRI\>C/[0Lb.g
%(@i3g_%Q2;<ZaPDc&d.r7u\,)AgP01$5Dp0$lUYeZ0$(-5dlbRM=pK[)I6G0kV%hIN`SK`n?qaQ0R?U_jCr&X4fLR@iOoTI:>6jR
%^PNZ(@2)^fJL=ehL#39YR[ppn)#,Zk'<i\fA=VYN2N#a=i-FFYS;-(p!,(dE:\IT7r-mX@=5O1smq<($:uO=.f+U)-m3tiYRJ.%H
%s7oTtr(dMBX>*3rljd"QJ,f\<&'*f7)TA.`UHBBTT4L8G0ecdQ<[-bn,ds[0Yq@6%e`W;?*;pRIhN?(,boOp)_B&9:4)n-0ib%VN
%)Yj.YW#c[g,%'W/-A2TWO.cj9^jE=N%R?*RH3:3%oBSS`XbT`4go7T%4nnlRas.IV]DSMP"T7hU^4EDd!MGW>/Pf#Z6m,9YM^"85
%!*kiu*o9!ce7bcqKWcTjB2SI\TPHm-5H%pjop<X)QK*@THUVM%O^@"8%<p\./<qJ6!*1JnJ)ooi*eA3%1r4fH"BuJ:c8$A9_@Q)T
%!J\!Y[Cis9ERDeYNf7^,0?BU4?hGR:.$tfYbKlnKEoh/;HDu9BML5rT"($UaWjaAbk[>3u8d!5TY^W>kJ:rA]e^h^f>&_l*T?D6(
%3FRmjB)QI[lc;fApAL1ag&mDonskVEc5jKJjh^PEVUsi+0G7N.,5f1'_\6T*b$0UWcqFQ(mu+.J65,FF-B>jEjX(091FX;r$4T*H
%%=g<j250C@f#6V+NdX_Z,1%'Hq[<R\m)Z8]CQ)gAn!)K*IDFG5j-'$ta>(q+m#EM&<nlV=melQ\q&\-IbBL5[rRt,EQeWe6+M0.Z
%9^5hNWc^LQ_.)HDiM4&kL6(UpWA!2gd@h*E[eGEfSStaA?Zqr3pD3XPGPI*0SZ]3+moX)U`E)q\36!Rt)G^>%2)^t7N=Fdsf\6S\
%p@&<*HY(7SDB8#OpJ*(gQ.%25Q0J2WHi&hGA@fQ;1B#$M1B#s":.#D#6>fC]BP]"q!<m:(HaA'c2\1(]i+-<k\V<c4l.=U*l:=P7
%"5_<<7/P0p+!)[@XZi]RpnpjS<-DB,MMV@0F$lZ\2;k!.X$@C#&L/RB*/91Ql36?pAN7Ei(nt?05"K#.1N5!FI#*\-,No2OT6`c8
%5Cq$X?q6JW'mg=s&f/N>[<%ggT$3aokjr^kFIk?#!bWl7=96(rBd1`k:'VLgCpA5An`*bS_XC.N(b=g?6o)#J`5NrGOS?FSJ6_Fs
%Jc%g%$-0h%hcpPK8Ri'brPn^G]+4#C\><k>pAX'VB!ktJrl-Z/I=HAZo<nI=1A]B=eRC15rFb2t_.s&UBI1]*mN41qT9V_n=ZhYt
%pkBXSnu_+GEs-8CKjF'cpGuKD\C5<tB!Mi/Z0CJX/.<A!ouQTZHNGY<DXGc-Hp)t/&MNfug%`[1kqj0%>;hT1%!nJFat1']B"mT)
%k_[3eO;I(s5fHsH^_Bfg(??c(d$iQ79+>'^`POJ+FF!eLXf(V7WJaBVHb=birQ%tOTat[Fns*Xf*lP7g,(t.>"E,-'q3X=B[dSc\
%_JNFm"G0W(2&:ga`8MN<lVtXGb@aY3*VRmT&bHoD2OCDD\Z:NQB.23$KKmm$P>X]RPVC\t3+Qg@2</")UOjuP#]2Su'q8E`c;^rb
%0CZAqKn^(k07lDJ'7G4?h@2U@fJ,U>Bggks+"o9<?ARabWu%ilEW&A#$^_@lch3T'QqJZT+57QI/?9UM.(ZT&pntT$P`J9SBLtL8
%JW$PhcQlsQja7l9og[K-#)c\2+M9q/i1W!HOoC?J;Oo)G$o<n"_Jg@t(3U60mQP=Z$)jBi/l1ISX#m8<p_5[Uk/q\io@#E.WWjf8
%j,MtuqFdI%YN19(I@p)<lYIp9WRj5Z%qi9Q,c?_)+uRLnI>.QI1?OcF/Ue_T]jSu/;CCV$ZIF,;ZFjQm)9;Ja]q=q"WUcKb:![Im
%,qeg&bU.qBI=t(oq)s%t&PRt.KI3>tNU"H>;.q'e>\I;Y],8k=$,7(+7Qa??a$O:RQ+hC7&NFPM1b_6?CZ:LA)<^r/V%0/"%-iLX
%Z.U>+J562sYE19cEg;hrYCLN<0_>Tr)#71RMp+dAqkJ^7?K*=5Y0GR1@33K_jcV#F;B.#$CW<NHP.\0I!:LhcprVpi37`HfeGm##
%94\"9<*hoga9rE\ipu["&sORFVUJQAs70Vf?=<bs8mZ%/g>$YVW(QWD9S35>E$EFt+A\.:--V.db=,\_0AL?fp&A?)ZHp5J:UZj7
%IUu]n63Z"Tc<9,'G2g`QNWXpoqt@=[r0iS9^k:i4q@(%8S:FZWZ^bY_m]&Db.;5l]U4`p+p*Xbf=9-s&E:u*QUKAt2M)(ZRON,u_
%hMlpZ7e1IoZTEFk;!^>IekM"q`6bNEHgI9R^H%6sK<8[9Irc1i#2V_!GcU.N1+XE&#a&cm]&WSU\%NYpQ*VK2Q_4T#HV8o:>`0J-
%W4dga^79AN9,BQe)gr;gIPkI_V0R;R(IpYNmr()C3uWM%l*-8(!Z;/nqcO#EZ7(h6Cb3*+#4hS;P6E`V-Q.<S_$t#G"mTB<p!$(@
%&e12<dnN'1ef-joJX?"I"]Bc\.2'_olgX9gkP8Gt!ZCUdmHkiARhiRC)K%mUH:[H<_I"Xc:^@">$WJ59TkAVRKH'PR@_Qb0,Q^c,
%<"#ZePg1dV0<iu/(Cqp&2?J%Mndp-sX\6aH!6b1!+<AH6pRs+EHD/*W&NQR:ep&m.\KJ<uKm[Vo7(gB&jgBn2.%\33CEDAnNh=&+
%VnBM&W/9JL(m_EL>]G"ePCrbU6Rmpcnc2qt#f_>qk2jSNMS6AL;a?Fj8a3gRa#2/S"DI.q,qnVn*0pSrbhFZZW$k;C36om+*lPk3
%fNX>^iq53'JPBn]&+FE2><!=R-51h;B-I-9Yo=HMjf2sPE<BKQ4;Le`f_lW(0/91:IdYqFG5pjr_sX`&54"<pM*n\Ek^mj?_gCA;
%?*L7QOV1FhjeOaf$pH*%ogoN'XBNTXJSSRg$L6O4ma)bh8\tLEAQD_F9l>,])TpgmSV0ZK,#)qCYlKS<5G/_W,N>j-[i9^kg>('+
%44hChd%bDm\:kgf-[sUs&ks-.b(?Fkh^Ihh5Z,"d=Pkfj)Nure"3)KBI=SGcNd`8.:&^P&AIp;p`mc0?d/ss.`<pK20e(&LFWf]S
%E+b[@:Z)1[!)>etUJ(kL5H?"TE0^aqm1f>Ar(bo=JPZLdS[pA;O4mD?*d@\51oZ+UlC-0,*a1`RSI10qe;LgG`Zjt8*DlOU]T"<e
%_<R55koTV/o+!(0^o4Z(:o6k/\t&eVOpmR&8nUC,-:3U<e+t(2A42Nl!:Dh"bRl:J!5*o_a%-T2[n-59^I[=@3@8F%-d,rWmF-BA
%;OtI?=$HX8-D-7>Dc.e+R8;AX&GPcI56rYJ+F_)jT$!*\lJM5D1\j=)rSXgI.R2ij%tMB@QQBE,d7D(dE(k(cq9u#%lci;f7=GeK
%5?R&U.d_q[J9SgQ=bCl,4;5F?MJW?!lCLNU>bO,Ar6f[)K6u3M=B741YcIOA`8W6jI,uYSL$`,bnFE:gg^VV7Z!"<B@o>?j"7C?Z
%r(>fOaaJ,X8`aL&gdKYliiD7FLU-nVq3\d:@>75?7hg;ENWfHd"WEA0HL,%aEbZU,FfoTLI'A+58eq5[Mj*e^bU7'is*`3GY2nOD
%0;fRK.gq@2DeBH7"a?t8_q/&qG`I/!XE1m[8f:$EmH%6i\#b#NH1BGY@3jJ,F[&^PP+.WCPgkD/Q^"'?c]Yk98f,)%l<bl\Tp.1n
%^&HKV0#U0q\^DaGSbu:2Q;2(V8!ub'I2'BOIa(r\X,j`NT;.M8fG6Vaa(#">fl(@XTARlmHW0fifm_7s2Fk<QkXhu3DJ,-?q9/5C
%%_`FNjZ0FLA]bcVS.NBmA[AaAHd+Gb/a%7b;L@M[7:#b3]N'LXJ_.\\!BX39m[hJE?lEGa^24.r]=9YU=nlY`%6/.p<FoAFSp0U;
%B5Mukj3/mcVY.^XI3[FN\PHDNS@_f/^->Sg0DJlMXBZ*`[kH^5Qjf`FHBtiuS#.$"a:?sLm/HoO!Y46+p)<;9G#p7/[>4\AZC(Q7
%jg]htNYh1N$0FP"m%O#:b9$G"Xt[=,<?C.PJomqh?Q8%1,c9C),Qa]1!L3@`&_RtpVHZ$5A6L.%(RVSN*-":AaX=h!S-MH=5tT@Z
%`1XS"+(Rhk/8@aYDa8-u[@c2E2Ju`aLoa>[ed-g^!f\20WWhWQ2%8V98U&0c6C%!*3ds/Q*aH^Lr+0sc%&BX0:o-7S-o\1n`[md7
%*iWg3gC\*5"FuR3Lj!DqfT&2*i5'OE]`f@f*PCd*Q+"^=&-P14TPZajPh<X#<Z;0kA-@B;"!mgX9PsMZ.\o>IHXahGIS@h.(,Dr&
%%rlkr6:"!eb'=c/HA<Le8c)YbJl_e4i)hQlaa8&H5Mgi6?Vc&adc^9pN?7GH(VZ(:4oD9//X"g$,.u,O8j4>3d=7Uqb%@*%Z?Lar
%CX9r!5%%?BR&%T;GdQG^gqoB;ru*tqm:qe\,rr#lfCVt^C)/U;Vu<R(m&'pqjT:$8%l&&/R?%&O[`sH8RSKO5!ah.A2g@g.;DuL.
%^(XZ9Tkrlq4biG9,sh5lJ'1KjfP:kTTl@6b-Z+S#5N4@Lk5f"T<Fp3GGQBQhiUYtrA+Zof&Wa+Cj+q)KUJ5aB?A*nIaruXI>i^OY
%)ep35R)!@b#Qusnj?1WJR9r(G:H"s..iEk$O;<Y64mN\%'GEZ4\M0b/7%f\%R"Sp/,]&?iIB:7MXJ_!!QfFtU$SADam54jdl*ULf
%qSL__<</e&7DVe8<jFbTQjS:>S_'pf-1I-5=WSi\(2YhC6E`S*p[nepTeCWk/X-ur-:$Y=fD4^V1ndJkL%Wg<V$<OIg'5"7mN5'c
%"S4t'$FSUr_f%Oc<1d3[(j=GDV9.VL[Xi]#iEMS8g(Tp:_p3jB/I5]nm,e3'Pr)a>52ZRVEH"YL`Qol\!V*LM,7*Hc.=6@sL$ru?
%U"(gW7HS&FXA[dU+g\t:8/U`AEou?t##kY1SLQp&9U?_Jl&pQ(9K8dn9_tQ18NC)@C]=RChA\R91sUi>1V0GKjktue`&(6mDV+Ve
%;r]MFUh+U^Z;>W.]i#S<Z.$,/CSc3FPklk)6nCZq#\`^I`Y5&6#*d<3)Crt(o'__;l;^`/Ps3!KCt&i0'BnipbC*4CV;bKNm7tP1
%MS0X).:bZL$q#j0lC3%HXF2tLEK31s^Id?8WC:CjeF[MGgr64Q/;*RD99*f<H;g6]O#E2+LrG1@\uEbL1456"*/`]E`>q?73A?r`
%b)+3S1s%%\q/8uJjL&%+s4ASug&1ls,T#kdchq::*6nr2KKc&#DUW'*s+s=MNf*ftP8p_[@$Jh]Gt",V5uL,r)#31/%tS":8DqF+
%MM*u<IH;7,."iek9_AQ(a=fA."HW"KN6`bZK!GK.$;2(;7\nu4;*pMESF97:VK*MR7"qpi%h.LQPn`j^MqS5gh?/42PC-lYl_s_0
%gWgj#J6._a]^HDtEopFn@C$n$lt>U>C8_f!&q;5fiN^`X4]c*rB2MZR#\_R<_(aFCD'e[W"\*ASU:K/4#K6t3?jEn8VeA-r>\_;g
%j8.(q*=B*_h;FLRI'[+q0-nT'q:iqcBC_\jaqd&Oro:eDn8C@7']Uu>Hnl#b,iPYlWQg44HPH&nFae/pEV*eLWI;Eq5(7u.X8a1$
%i(&Fk:;:'rarLfG*J<f%+8J0?\2!b:GiXYMV_RDofZ"r&JH#lS"c/d%_5h>j-dk5cEFN:joDa>"Vr5NApuoJQ&kD+T%o;!.%0#nQ
%(/Jp?nQ>AG)nk5ea[dtRarJC\a[h/Io1+0XFqj+;khd0qT2#^=iEJLf.mJQ&?p!:.n5UYUr`o:c4I&A&^jf^-EqAL)fELLE;L`"h
%CKiobQMLelnS'VmV\5YZ,Ss%mPDLMJSe1`&rWRCB1#Y-?bO\<e#Om`*2u"kj'n7k7+J):6I09M$^.HSEO'rj#+%Z?]I7knHoS%5B
%<D"6C1+!G]_&jsY.J3(e/Wl:M!'`rj'L+j$&7,&\_2COEIujYG#IXa7IBgo=_mb`3qu`o_W,JZBe2R.P.1S-OQNdZ6JGP#?P"8,[
%J0/i(jTk"/co:GDOV!!prudG!$[i-WK"ah$_mb`3qu`o_Y]!aMln76XNGr,bbO]D(0#57&)u)DVEWRjQn>[_GMJ'^ToMg*iT"YOT
%>:?+/Ek%km%,A]"/s$V9DXor/s30X*/\LOhITQQ3hB1L6U^UkDe</(,1q9mbD-?BDH`JmM<nZ6e&(jq\J8HT+gS.AT*""o4m,']b
%'18ra_Q.2c]L#DZ=6QWK#u1D_#u-hrMX/n/#Pu``0ueaTLT`c&<<B8p%XP.f&tZ7CSVjXoJ;j[\pb8p[h;-3-r+7h^p];DVgNrF?
%k!tW-TARn(1LG_]7rPI()Y@fo[!r&R0DGkKM=bqp-!`EFrtdE=Q43~>
%AI9_PrivateDataEnd
\ No newline at end of file diff --git a/doc/IGE332/vect.eps b/doc/IGE332/vect.eps new file mode 100644 index 0000000..eb6c130 --- /dev/null +++ b/doc/IGE332/vect.eps @@ -0,0 +1,4962 @@ +%!PS-Adobe-3.1 EPSF-3.0 +%ADO_DSC_Encoding: MacOS Roman +%%Title: vect.eps +%%Creator: Adobe Illustrator(R) 13.0 +%%For: Alain Hebert +%%CreationDate: 6/13/09 +%%BoundingBox: 0 0 370 231 +%%HiResBoundingBox: 0 0 369.5000 230.0684 +%%CropBox: 0 0 369.5000 230.0684 +%%LanguageLevel: 2 +%%DocumentData: Clean7Bit +%ADOBeginClientInjection: DocumentHeader "AI11EPS" +%%AI8_CreatorVersion: 13.0.2
%AI9_PrintingDataBegin
%ADO_BuildNumber: Adobe Illustrator(R) 13.0.2 x434 R agm 4.4379 ct 5.1039
%ADO_ContainsXMP: MainFirst
%AI7_Thumbnail: 128 80 8
%%BeginData: 6470 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C45FD31FFA87D7D84A8FD4EFFA8A87D7D84A87D7DA87EFD05A87D527D
%A8A8FD047D527D7DFD12FFA8A8FD4EFFA8FFFFFF7D59527D527E7D7D527D
%7DA827FF7D7D52FF7D52527D52537DA8FD12FFA8A8FD4DFF527E7DA8FFFF
%FD04527D7D277DFD04527DA8FD047D2E7D525252A8FD13FFA87DFD4DFF84
%FD05FF847DA8A8A87DA884FF7DFD05A8FF7D7DA8FFFF7D7D7DFD13FFA8A8
%FD4DFF7DFD30FFA87DFFA8FD4BFF7EFD30FFA87D7DA8A8FD4AFF7DFD30FF
%A87DFD4DFFA8FD30FFA8A8FD4DFF7DFD30FFA87DFD4DFF7DFD04FF7DA852
%A87D7DA8A852A8A8FFA87D52A8FFFFFFA8FFA8A8FF7D7D7DFD11FFA8A8FD
%4DFF7DFFFFFFA87D52A8FD0552FF5252A87D275252FFFFFF27A852FFFF52
%277DA8FD10FFA87DFD4DFF7D7DA8A8FFA87D7D52527D527DA87D52A87D52
%7DFD04FF7D7D7DFFFF7D7D7DFFFFA87DA87DA87DA87DA87DA87DA87DA87D
%7D7DA8A8FD4AFF59FFA8FFFFFF7D7D7DA8FFA87D527DFF527D7DFD05FF7D
%A8A8FFFF7D52FFFFFFA8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A87DFFA8FD4B
%FF84FD30FFA8A8FD4DFF7DFD30FFA87DFD4DFFA8FD30FFA8A8FD4DFF7DFD
%30FFA87EFD4DFF7DFD30FFA87DA8A8A8FD4AFF7DFD30FFA859A8A8FD4BFF
%A8FFFFFFA8A8847DFF7D7DA8A852A8A8FF7D7D59A8FFFF7D7EFFA8FFFF7D
%A87DFD11FFA8A8FD4DFF52A87DFFA8527D7D535252527DA85259FF522859
%52FFA87E527D52FFA82752A8FFFFA8A87DA87DA87DA87DA8FD05FFA87DFD
%4DFF7DA8A8A8FF7D7D5259527D277DA85952A852527DFFFFFF527D7DA8FF
%AF7D52FD04FFFD09A8FD05FFA8A8FD4DFF7DFD05FF537D7DA8FFA87D7DA8
%A852A87EFFFFFFA853527DA8FFA87D7DFD12FFA87DFD4DFFA8FD30FFA87D
%A8A8FD4BFF7DFD31FF7DA87DFD4BFF7DFD7FFF7DFD7FFF7DFD7FFF7DFFFF
%FFA8A87D7DA87D52A8A8527DA8A8A87D7D7DFFFFA859FF7DFFFFA87D7DA8
%FD5FFF7DFD04FF537D7D7D527D527DFF7D52FF7D525259FFFF7E527D7DA8
%FF52527DFFFFFFA8FFA8FFA8FFA8FFA8FD54FF52A87DA8FFA8527E275259
%5252FF52527D7D277DA8FFFFA852527DFFA87D527EFFFF84FD087DA8FD54
%FFA8FD05FFA853A884FFA8A852A8FF7D7DA8FD04FFA87D7DFFFFFF7D7DFD
%61FF7DFD7FFF7DFD7FFF7DFD7FFF7DFD7FFF7DFD7BFFA87D7D7E7EFD06FF
%A8FFA8A8FFFFA8FD05FFA8FD0BFFA8FD35FFA8FFFFFFA8FD07FFA8A8A8FF
%FFFFA8A8FFA8A8FD10FFA8A8FFA87DFFFFFF7D7D52537D52527D527D527D
%A87D525252FFFFFF52A852FFA852527DA8FD32FF7D52527D7D527D7D7D52
%7D7D527D7D277D7DFFFD05527D52FD0FFF7DA8FFFF7D7D84A8FF52A87D7D
%527D27A8FF5252FF525252A8FFFF52527D7DFFAF537DA8FFFFA87DA87DA8
%7DA87D847DFD22FF7E7DA8A8FFFF7D7D7D527DFF7D527D527D277DFF7DA8
%7DFF52527D527D7DFD10FFA8A8FFFF52FFA8FFFFA85252527DA852527D7D
%7D527D52FD04FF845252A8FFA87D52FFFFFFA8A8A8FFA8A8A8FFA8FD22FF
%A87DFFA8FFFFFF5953527D527D527D7D52527D52A853FF527D527DA85252
%7DA8FD0FFF7DA8FFFF7DFD06FFA8FD05FFA8FFFFA8FD08FFA8FFFFFFA8FD
%2FFFA8A8FD06FFA8FFFFFFA8FFFFFFA9FD07FFA8FFFFFFA8A8A8FD10FFA8
%A8FFFF7DFD4CFFA87DFD2DFFFD057DFD4CFFA8A8FD2DFFA87DFFA87DFD4C
%FFA87DFD2DFF7DA8FFFF7EFD4CFFA8A8FD2DFFA8A8FFFF7DFFFFFFA8FFFF
%A8FFFF7DFFFFA8FFFFA8FFA8A8A8FFFFFFA8FFA8FFFFFFA8AFA8FD2CFFA8
%7DFD15FFA8FD17FF7DA8FFFFA8FD04FF597D527E527D527D597D7DFF7D52
%527DFFFF7D52A87DA8FF525252A8FD2CFFA8A8FD04FF7DA87DFF7D7DA8A8
%52A8A8FFA87E537D7DFFA8A87DA8A8FD12FFA8A8FFFF52AFA8FFFF847DFF
%FD0552FF7D52A88427527DFFFF7D527D53FFFF7D5284FFFFFD0AA8FD21FF
%A87DA8A8FFFF525384FD0552FF5252A87D277D287DFF7D52277D7DFFFFFF
%FD0FA87D7EA8A87DA8A8A8FFFF7D525252FF537D527D7D7D527DA8FFFFFF
%847D52A8FFFF7D7DA8FFFFAF7DA87DA884A87DA8A8FD21FFA87DA8A8A8FF
%A87D7D52527D527DFF7D52A87D5253FFFFFF59A87D7D7DFFFFFFA8A884A8
%7DA884A87DA884A87DA8A87D7DA8847DFD05FFA8A8A8FD04FFA8A8FFA8FF
%A8FD05FFA8FD04FFAFA8FD2EFFA87DFD05FF7D7D7DA8FFA87D597DFF527D
%7DFD04FFFD057DFD12FF7DA8FFFF7DFD4CFFA8A8FD16FFA8FFFFFFA8FD12
%FFA8A8FFFF7DFD4CFFA87DFD2DFF7DA8FFFF7EFD4CFFA8A8FD2DFFA8A8FF
%FF7DFD4CFFA87DFD2DFF7DFD04A8FD4CFFA8A8FD2DFFA87DA87D7DFFFFFF
%A9FFFFFFA8FFA8A8A8A9A8A87EFD04A8FFA8FF7EA8A8FFFFFFA8A8A8FD2C
%FFA87DFD05FFA9FFA8FFFD04A87EFFFD04A8FFA8A8FFA8A8A8FFFFFFA8A8
%A8FD0DFF7DA8FFFF7DFD04FF527D7DA8FF52527E527D52527D52527D527D
%7D52527D52A85352527D7DFD2BFFA8A8FD04FF527D7DFFFF52527D527D52
%53525253A8537D7D52537D52A85352527D7DFD0CFFA8A8FFFF7D7D7DA8FF
%A82752A87D527D7D527D59527D52A852A8FFA87DA8537D527D527DA8FD2C
%FFAF597D7DFFFFA8277DA87D52847D527D7D527D52A852A8FFFF7DA8537D
%527D527DA8FD0DFF7DA8FD08FF7D7D7DA87D537D7DFF7DA8FF527DA8527D
%A8A87E7DA852A87D52A8FD32FFA87D7DA8A8527D7D7DFF7DA8A8527DA859
%7DA87EA87DA853A87D52A8FD0DFFA8A8FD08FFA8FFA8FFA8A8A8FD05FFA8
%A8A8FFA8FFFFFFA8FFA8FFA8A8A8FD33FFAFFFA8FFA8A8A8FD05FFA8A8FF
%A8A8FFA8FFA8FFA8FFA8A8A8FD0DFF7DA8FD7EFFA87DA87DFD7EFFA8FDFC
%FFFDFCFFFD09FFA852FFFFFFA8FD04FFA8FD0CFFA8FFFFFFA8FD09FFA8FF
%A8A8FD23FFA8A8FFA8FFA8FD04FFA884FD0BFFA8FFFFFFA8A8FD09FFA8FF
%A8FD0BFF52527D7D52527EFF525227FF7D52597D7D52FD047D527D7D5252
%7D528452527DA8527D5252527D525252537DFD1FFF7DA8A87D525952FF7D
%7D277DFF52537D537D7D7D527D527D537D5252527D7D7D52FF527D527D27
%7D527D527D52FD07FF7D5252275227FF7D7D5253FF7D2752525352527D52
%527D2E522752527D5252277DA87D5252277D2E522752277DFD1FFF7D7DA8
%2752527DFF7D7D52A8A827FD06527D27A852522752527D52522752FF7D52
%52277D525227525252A8FD06FF7D7DA87E7D7EA8FF527D7DFFFD097DA852
%A8597D7D7DA8A8A87DA8FF7D7D527D527EFD057DFD1FFF7E537D7E52847D
%FF7D7D7DFFA87D7D7D597D7DA852A85284FD057DA8A87D7DFF7D7D527D52
%FD047DA852A8FDFCFFFDFCFFFDFCFFFDFCFFFD15FFFF
%%EndData
+%ADOEndClientInjection: DocumentHeader "AI11EPS" +%%Pages: 1 +%%DocumentNeededResources: +%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 +%%+ procset Adobe_CoolType_Utility_T42 1.0 0 +%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 +%%+ procset Adobe_CoolType_Core 2.31 0 +%%+ procset Adobe_AGM_Core 2.0 0 +%%+ procset Adobe_AGM_Utils 1.0 0 +%%DocumentFonts: +%%DocumentNeededFonts: +%%DocumentNeededFeatures: +%%DocumentSuppliedFeatures: +%%DocumentProcessColors: Black +%%DocumentCustomColors: +%%CMYKCustomColor: +%%RGBCustomColor: +%%EndComments + + + + + + +%%BeginDefaults +%%ViewingOrientation: 1 0 0 1 +%%EndDefaults +%%BeginProlog +%%BeginResource: procset Adobe_AGM_Utils 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{currentpacking true setpacking}if +userdict/Adobe_AGM_Utils 73 dict dup begin put +/bdf +{bind def}bind def +/nd{null def}bdf +/xdf +{exch def}bdf +/ldf +{load def}bdf +/ddf +{put}bdf +/xddf +{3 -1 roll put}bdf +/xpt +{exch put}bdf +/ndf +{ + exch dup where{ + pop pop pop + }{ + xdf + }ifelse +}def +/cdndf +{ + exch dup currentdict exch known{ + pop pop + }{ + exch def + }ifelse +}def +/gx +{get exec}bdf +/ps_level + /languagelevel where{ + pop systemdict/languagelevel gx + }{ + 1 + }ifelse +def +/level2 + ps_level 2 ge +def +/level3 + ps_level 3 ge +def +/ps_version + {version cvr}stopped{-1}if +def +/set_gvm +{currentglobal exch setglobal}bdf +/reset_gvm +{setglobal}bdf +/makereadonlyarray +{ + /packedarray where{pop packedarray + }{ + array astore readonly}ifelse +}bdf +/map_reserved_ink_name +{ + dup type/stringtype eq{ + dup/Red eq{ + pop(_Red_) + }{ + dup/Green eq{ + pop(_Green_) + }{ + dup/Blue eq{ + pop(_Blue_) + }{ + dup()cvn eq{ + pop(Process) + }if + }ifelse + }ifelse + }ifelse + }if +}bdf +/AGMUTIL_GSTATE 22 dict def +/get_gstate +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_clr_spc currentcolorspace def + /AGMUTIL_GSTATE_clr_indx 0 def + /AGMUTIL_GSTATE_clr_comps 12 array def + mark currentcolor counttomark + {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop + /AGMUTIL_GSTATE_fnt rootfont def + /AGMUTIL_GSTATE_lw currentlinewidth def + /AGMUTIL_GSTATE_lc currentlinecap def + /AGMUTIL_GSTATE_lj currentlinejoin def + /AGMUTIL_GSTATE_ml currentmiterlimit def + currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf + /AGMUTIL_GSTATE_sa currentstrokeadjust def + /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def + /AGMUTIL_GSTATE_op currentoverprint def + /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def + /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def + currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf + cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf + /AGMUTIL_GSTATE_ht currenthalftone def + /AGMUTIL_GSTATE_flt currentflat def + end +}def +/set_gstate +{ + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_clr_spc setcolorspace + AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor + AGMUTIL_GSTATE_fnt setfont + AGMUTIL_GSTATE_lw setlinewidth + AGMUTIL_GSTATE_lc setlinecap + AGMUTIL_GSTATE_lj setlinejoin + AGMUTIL_GSTATE_ml setmiterlimit + AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash + AGMUTIL_GSTATE_sa setstrokeadjust + AGMUTIL_GSTATE_clr_rnd setcolorrendering + AGMUTIL_GSTATE_op setoverprint + AGMUTIL_GSTATE_bg cvx setblackgeneration + AGMUTIL_GSTATE_ucr cvx setundercolorremoval + AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx + AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer + AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or + { + currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne + { + mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark + }if + }{ + AGMUTIL_GSTATE_ht sethalftone + }ifelse + AGMUTIL_GSTATE_flt setflat + end +}def +/get_gstate_and_matrix +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_ctm matrix currentmatrix def + end + get_gstate +}def +/set_gstate_and_matrix +{ + set_gstate + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_ctm setmatrix + end +}def +/AGMUTIL_str256 256 string def +/AGMUTIL_src256 256 string def +/AGMUTIL_dst64 64 string def +/AGMUTIL_srcLen nd +/AGMUTIL_ndx nd +/AGMUTIL_cpd nd +/capture_cpd{ + //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf +}def +/thold_halftone +{ + level3 + {sethalftone currenthalftone} + { + dup/HalftoneType get 3 eq + { + sethalftone currenthalftone + }{ + begin + Width Height mul{ + Thresholds read{pop}if + }repeat + end + currenthalftone + }ifelse + }ifelse +}def +/rdcmntline +{ + currentfile AGMUTIL_str256 readline pop + (%)anchorsearch{pop}if +}bdf +/filter_cmyk +{ + dup type/filetype ne{ + exch()/SubFileDecode filter + }{ + exch pop + } + ifelse + [ + exch + { + AGMUTIL_src256 readstring pop + dup length/AGMUTIL_srcLen exch def + /AGMUTIL_ndx 0 def + AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ + 1 index exch get + AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put + /AGMUTIL_ndx AGMUTIL_ndx 1 add def + }for + pop + AGMUTIL_dst64 0 AGMUTIL_ndx getinterval + } + bind + /exec cvx + ]cvx +}bdf +/filter_indexed_devn +{ + cvi Names length mul names_index add Lookup exch get +}bdf +/filter_devn +{ + 4 dict begin + /srcStr xdf + /dstStr xdf + dup type/filetype ne{ + 0()/SubFileDecode filter + }if + [ + exch + [ + /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx + currentdict/srcStr get/readstring cvx/pop cvx + /dup cvx/length cvx 0/gt cvx[ + Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx + names_index Names length currentdict/srcStr get length 1 sub{ + 1/index cvx/exch cvx/get cvx + currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx + Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx + }for + currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx + ]cvx/if cvx + /end cvx + ]cvx + bind + /exec cvx + ]cvx + end +}bdf +/AGMUTIL_imagefile nd +/read_image_file +{ + AGMUTIL_imagefile 0 setfileposition + 10 dict begin + /imageDict xdf + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + /imbufIdx 0 def + /origDataSource imageDict/DataSource get def + /origMultipleDataSources imageDict/MultipleDataSources get def + /origDecode imageDict/Decode get def + /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def + imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse + { + /imbufCnt imageDict/DataSource get length def + /imbufs imbufCnt array def + 0 1 imbufCnt 1 sub{ + /imbufIdx xdf + imbufs imbufIdx imbufLen string put + imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put + }for + DeviceN_PS2{ + imageDict begin + /DataSource[DataSource/devn_sep_datasource cvx]cvx def + /MultipleDataSources false def + /Decode[0 1]def + end + }if + }{ + /imbuf imbufLen string def + Indexed_DeviceN level3 not and DeviceN_NoneName or{ + /srcDataStrs[imageDict begin + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi string + }repeat + end]def + imageDict begin + /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def + /Decode[0 1]def + end + }{ + imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put + imageDict/Decode[0 1]put + }ifelse + }ifelse + imageDict exch + load exec + imageDict/DataSource origDataSource put + imageDict/MultipleDataSources origMultipleDataSources put + imageDict/Decode origDecode put + end +}bdf +/write_image_file +{ + begin + {(AGMUTIL_imagefile)(w+)file}stopped{ + false + }{ + Adobe_AGM_Utils/AGMUTIL_imagefile xddf + 2 dict begin + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ + /imbuf imbufLen string def + }if + 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ + pop + MultipleDataSources{ + 0 1 DataSource length 1 sub{ + DataSource type dup + /arraytype eq{ + pop DataSource exch gx + }{ + /filetype eq{ + DataSource exch get imbuf readstring pop + }{ + DataSource exch get + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }for + }{ + DataSource type dup + /arraytype eq{ + pop DataSource exec + }{ + /filetype eq{ + DataSource imbuf readstring pop + }{ + DataSource + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }ifelse + }for + end + true + }ifelse + end +}bdf +/close_image_file +{ + AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile +}def +statusdict/product known userdict/AGMP_current_show known not and{ + /pstr statusdict/product get def + pstr(HP LaserJet 2200)eq + pstr(HP LaserJet 4000 Series)eq or + pstr(HP LaserJet 4050 Series )eq or + pstr(HP LaserJet 8000 Series)eq or + pstr(HP LaserJet 8100 Series)eq or + pstr(HP LaserJet 8150 Series)eq or + pstr(HP LaserJet 5000 Series)eq or + pstr(HP LaserJet 5100 Series)eq or + pstr(HP Color LaserJet 4500)eq or + pstr(HP Color LaserJet 4600)eq or + pstr(HP LaserJet 5Si)eq or + pstr(HP LaserJet 1200 Series)eq or + pstr(HP LaserJet 1300 Series)eq or + pstr(HP LaserJet 4100 Series)eq or + { + userdict/AGMP_current_show/show load put + userdict/show{ + currentcolorspace 0 get + /Pattern eq + {false charpath f} + {AGMP_current_show}ifelse + }put + }if + currentdict/pstr undef +}if +/consumeimagedata +{ + begin + AGMIMG_init_common + currentdict/MultipleDataSources known not + {/MultipleDataSources false def}if + MultipleDataSources + { + DataSource 0 get type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width cvi string def + 1 1 Height cvi + { + pop + 0 1 DataSource length 1 sub + { + DataSource exch get + flushbuffer readstring pop pop + }for + }for + end + }if + dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and + { + Width Height mul cvi + { + 0 1 DataSource length 1 sub + {dup DataSource exch gx length exch 0 ne{pop}if}for + dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + } + { + /DataSource load type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width Decode length 2 idiv mul cvi string def + 1 1 Height{pop DataSource flushbuffer readstring pop pop}for + end + }if + dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and + { + Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul + { + DataSource length dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + }ifelse + end +}bdf +/addprocs +{ + 2{/exec load}repeat + 3 1 roll + [5 1 roll]bind cvx +}def +/modify_halftone_xfer +{ + currenthalftone dup length dict copy begin + currentdict 2 index known{ + 1 index load dup length dict copy begin + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end def + currentdict end sethalftone + }{ + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end sethalftone + pop + }ifelse +}def +/clonearray +{ + dup xcheck exch + dup length array exch + Adobe_AGM_Core/AGMCORE_tmp -1 ddf + { + Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf + dup type/dicttype eq + { + Adobe_AGM_Core/AGMCORE_tmp get + exch + clonedict + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + dup type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_tmp get exch + clonearray + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + exch dup + Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put + }forall + exch{cvx}if +}bdf +/clonedict +{ + dup length dict + begin + { + dup type/dicttype eq + {clonedict}if + dup type/arraytype eq + {clonearray}if + def + }forall + currentdict + end +}bdf +/DeviceN_PS2 +{ + /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and +}bdf +/Indexed_DeviceN +{ + /indexed_colorspace_dict AGMCORE_gget dup null ne{ + dup/CSDBase known{ + /CSDBase get/CSD get_res/Names known + }{ + pop false + }ifelse + }{ + pop false + }ifelse +}bdf +/DeviceN_NoneName +{ + /Names where{ + pop + false Names + { + (None)eq or + }forall + }{ + false + }ifelse +}bdf +/DeviceN_PS2_inRip_seps +{ + /AGMCORE_in_rip_sep where + { + pop dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and + { + /currentcolorspace exch AGMCORE_gput + false + }{ + true + }ifelse + }{ + true + }ifelse + }{ + true + }ifelse +}bdf +/base_colorspace_type +{ + dup type/arraytype eq{0 get}if +}bdf +/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse +{ + /pdfmark_5{cleartomark}bind def +}{ + /pdfmark_5{pdfmark}bind def +}ifelse +/ReadBypdfmark_5 +{ + currentfile exch 0 exch/SubFileDecode filter + /currentdistillerparams where + {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse + {flushfile cleartomark} + {/PUT pdfmark}ifelse +}bdf +/xpdfm +{ + { + dup 0 get/Label eq + { + aload length[exch 1 add 1 roll/PAGELABEL + }{ + aload pop + [{ThisPage}<<5 -2 roll>>/PUT + }ifelse + pdfmark_5 + }forall +}bdf +/ds{ + Adobe_AGM_Utils begin +}bdf +/dt{ + currentdict Adobe_AGM_Utils eq{ + end + }if +}bdf +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_AGM_Core 2.0 0 +%%Version: 2.0 0 +%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Core 209 dict dup begin put +/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def +/AGMCORE_str256 256 string def +/AGMCORE_save nd +/AGMCORE_graphicsave nd +/AGMCORE_c 0 def +/AGMCORE_m 0 def +/AGMCORE_y 0 def +/AGMCORE_k 0 def +/AGMCORE_cmykbuf 4 array def +/AGMCORE_screen[currentscreen]cvx def +/AGMCORE_tmp 0 def +/AGMCORE_&setgray nd +/AGMCORE_&setcolor nd +/AGMCORE_&setcolorspace nd +/AGMCORE_&setcmykcolor nd +/AGMCORE_cyan_plate nd +/AGMCORE_magenta_plate nd +/AGMCORE_yellow_plate nd +/AGMCORE_black_plate nd +/AGMCORE_plate_ndx nd +/AGMCORE_get_ink_data nd +/AGMCORE_is_cmyk_sep nd +/AGMCORE_host_sep nd +/AGMCORE_avoid_L2_sep_space nd +/AGMCORE_distilling nd +/AGMCORE_composite_job nd +/AGMCORE_producing_seps nd +/AGMCORE_ps_level -1 def +/AGMCORE_ps_version -1 def +/AGMCORE_environ_ok nd +/AGMCORE_CSD_cache 0 dict def +/AGMCORE_currentoverprint false def +/AGMCORE_deltaX nd +/AGMCORE_deltaY nd +/AGMCORE_name nd +/AGMCORE_sep_special nd +/AGMCORE_err_strings 4 dict def +/AGMCORE_cur_err nd +/AGMCORE_current_spot_alias false def +/AGMCORE_inverting false def +/AGMCORE_feature_dictCount nd +/AGMCORE_feature_opCount nd +/AGMCORE_feature_ctm nd +/AGMCORE_ConvertToProcess false def +/AGMCORE_Default_CTM matrix def +/AGMCORE_Default_PageSize nd +/AGMCORE_Default_flatness nd +/AGMCORE_currentbg nd +/AGMCORE_currentucr nd +/AGMCORE_pattern_paint_type 0 def +/knockout_unitsq nd +currentglobal true setglobal +[/CSA/Gradient/Procedure] +{ + /Generic/Category findresource dup length dict copy/Category defineresource pop +}forall +setglobal +/AGMCORE_key_known +{ + where{ + /Adobe_AGM_Core_Id known + }{ + false + }ifelse +}ndf +/flushinput +{ + save + 2 dict begin + /CompareBuffer 3 -1 roll def + /readbuffer 256 string def + mark + { + currentfile readbuffer{readline}stopped + {cleartomark mark} + { + not + {pop exit} + if + CompareBuffer eq + {exit} + if + }ifelse + }loop + cleartomark + end + restore +}bdf +/getspotfunction +{ + AGMCORE_screen exch pop exch pop + dup type/dicttype eq{ + dup/HalftoneType get 1 eq{ + /SpotFunction get + }{ + dup/HalftoneType get 2 eq{ + /GraySpotFunction get + }{ + pop + { + abs exch abs 2 copy add 1 gt{ + 1 sub dup mul exch 1 sub dup mul add 1 sub + }{ + dup mul exch dup mul add 1 exch sub + }ifelse + }bind + }ifelse + }ifelse + }if +}def +/np +{newpath}bdf +/clp_npth +{clip np}def +/eoclp_npth +{eoclip np}def +/npth_clp +{np clip}def +/graphic_setup +{ + /AGMCORE_graphicsave save store + concat + 0 setgray + 0 setlinecap + 0 setlinejoin + 1 setlinewidth + []0 setdash + 10 setmiterlimit + np + false setoverprint + false setstrokeadjust + //Adobe_AGM_Core/spot_alias gx + /Adobe_AGM_Image where{ + pop + Adobe_AGM_Image/spot_alias 2 copy known{ + gx + }{ + pop pop + }ifelse + }if + /sep_colorspace_dict null AGMCORE_gput + 100 dict begin + /dictstackcount countdictstack def + /showpage{}def + mark +}def +/graphic_cleanup +{ + cleartomark + dictstackcount 1 countdictstack 1 sub{end}for + end + AGMCORE_graphicsave restore +}def +/compose_error_msg +{ + grestoreall initgraphics + /Helvetica findfont 10 scalefont setfont + /AGMCORE_deltaY 100 def + /AGMCORE_deltaX 310 def + clippath pathbbox np pop pop 36 add exch 36 add exch moveto + 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto + 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath + 0 AGMCORE_&setgray + gsave 1 AGMCORE_&setgray fill grestore + 1 setlinewidth gsave stroke grestore + currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto + /AGMCORE_deltaY 12 def + /AGMCORE_tmp 0 def + AGMCORE_err_strings exch get + { + dup 32 eq + { + pop + AGMCORE_str256 0 AGMCORE_tmp getinterval + stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt + { + currentpoint AGMCORE_deltaY sub exch pop + clippath pathbbox pop pop pop 44 add exch moveto + }if + AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show + 0 1 AGMCORE_str256 length 1 sub + { + AGMCORE_str256 exch 0 put + }for + /AGMCORE_tmp 0 def + }{ + AGMCORE_str256 exch AGMCORE_tmp xpt + /AGMCORE_tmp AGMCORE_tmp 1 add def + }ifelse + }forall +}bdf +/AGMCORE_CMYKDeviceNColorspaces[ + [/Separation/None/DeviceCMYK{0 0 0}] + [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] + [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] + [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] + [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] + [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] + [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] + [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] + [/Separation(Cyan)/DeviceCMYK{0 0 0}] + [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] + [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] + [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] + [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] + [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] + [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] + [/DeviceCMYK] +]def +/ds{ + Adobe_AGM_Core begin + /currentdistillerparams where + { + pop currentdistillerparams/CoreDistVersion get 5000 lt + {<</DetectBlends false>>setdistillerparams}if + }if + /AGMCORE_ps_version xdf + /AGMCORE_ps_level xdf + errordict/AGM_handleerror known not{ + errordict/AGM_handleerror errordict/handleerror get put + errordict/handleerror{ + Adobe_AGM_Core begin + $error/newerror get AGMCORE_cur_err null ne and{ + $error/newerror false put + AGMCORE_cur_err compose_error_msg + }if + $error/newerror true put + end + errordict/AGM_handleerror get exec + }bind put + }if + /AGMCORE_environ_ok + ps_level AGMCORE_ps_level ge + ps_version AGMCORE_ps_version ge and + AGMCORE_ps_level -1 eq or + def + AGMCORE_environ_ok not + {/AGMCORE_cur_err/AGMCORE_bad_environ def}if + /AGMCORE_&setgray systemdict/setgray get def + level2{ + /AGMCORE_&setcolor systemdict/setcolor get def + /AGMCORE_&setcolorspace systemdict/setcolorspace get def + }if + /AGMCORE_currentbg currentblackgeneration def + /AGMCORE_currentucr currentundercolorremoval def + /AGMCORE_Default_flatness currentflat def + /AGMCORE_distilling + /product where{ + pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and + }{ + false + }ifelse + def + /AGMCORE_GSTATE AGMCORE_key_known not{ + /AGMCORE_GSTATE 21 dict def + /AGMCORE_tmpmatrix matrix def + /AGMCORE_gstack 32 array def + /AGMCORE_gstackptr 0 def + /AGMCORE_gstacksaveptr 0 def + /AGMCORE_gstackframekeys 14 def + /AGMCORE_&gsave/gsave ldf + /AGMCORE_&grestore/grestore ldf + /AGMCORE_&grestoreall/grestoreall ldf + /AGMCORE_&save/save ldf + /AGMCORE_&setoverprint/setoverprint ldf + /AGMCORE_gdictcopy{ + begin + {def}forall + end + }def + /AGMCORE_gput{ + AGMCORE_gstack AGMCORE_gstackptr get + 3 1 roll + put + }def + /AGMCORE_gget{ + AGMCORE_gstack AGMCORE_gstackptr get + exch + get + }def + /gsave{ + AGMCORE_&gsave + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /grestore{ + AGMCORE_&grestore + AGMCORE_gstackptr 1 sub + dup AGMCORE_gstacksaveptr lt{1 add}if + dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known + {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse + /AGMCORE_gstackptr exch store + }def + /grestoreall{ + AGMCORE_&grestoreall + /AGMCORE_gstackptr AGMCORE_gstacksaveptr store + }def + /save{ + AGMCORE_&save + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + /AGMCORE_gstacksaveptr AGMCORE_gstackptr store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /setoverprint{ + dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint + }def + 0 1 AGMCORE_gstack length 1 sub{ + AGMCORE_gstack exch AGMCORE_gstackframekeys dict put + }for + }if + level3/AGMCORE_&sysshfill AGMCORE_key_known not and + { + /AGMCORE_&sysshfill systemdict/shfill get def + /AGMCORE_&sysmakepattern systemdict/makepattern get def + /AGMCORE_&usrmakepattern/makepattern load def + }if + /currentcmykcolor[0 0 0 0]AGMCORE_gput + /currentstrokeadjust false AGMCORE_gput + /currentcolorspace[/DeviceGray]AGMCORE_gput + /sep_tint 0 AGMCORE_gput + /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput + /sep_colorspace_dict null AGMCORE_gput + /devicen_colorspace_dict null AGMCORE_gput + /indexed_colorspace_dict null AGMCORE_gput + /currentcolor_intent()AGMCORE_gput + /customcolor_tint 1 AGMCORE_gput + /absolute_colorimetric_crd null AGMCORE_gput + /relative_colorimetric_crd null AGMCORE_gput + /saturation_crd null AGMCORE_gput + /perceptual_crd null AGMCORE_gput + currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf + cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf + << + /MaxPatternItem currentsystemparams/MaxPatternCache get + >> + setuserparams + end +}def +/ps +{ + /setcmykcolor where{ + pop + Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put + }if + Adobe_AGM_Core begin + /setcmykcolor + { + 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput + 1 sub 4 1 roll + 3{ + 3 index add neg dup 0 lt{ + pop 0 + }if + 3 1 roll + }repeat + setrgbcolor pop + }ndf + /currentcmykcolor + { + /currentcmykcolor AGMCORE_gget aload pop + }ndf + /setoverprint + {pop}ndf + /currentoverprint + {false}ndf + /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def + /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def + /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def + /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def + /AGMCORE_plate_ndx + AGMCORE_cyan_plate{ + 0 + }{ + AGMCORE_magenta_plate{ + 1 + }{ + AGMCORE_yellow_plate{ + 2 + }{ + AGMCORE_black_plate{ + 3 + }{ + 4 + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_have_reported_unsupported_color_space false def + /AGMCORE_report_unsupported_color_space + { + AGMCORE_have_reported_unsupported_color_space false eq + { + (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== + Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf + }if + }def + /AGMCORE_composite_job + AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def + /AGMCORE_in_rip_sep + /AGMCORE_in_rip_sep where{ + pop AGMCORE_in_rip_sep + }{ + AGMCORE_distilling + { + false + }{ + userdict/Adobe_AGM_OnHost_Seps known{ + false + }{ + level2{ + currentpagedevice/Separations 2 copy known{ + get + }{ + pop pop false + }ifelse + }{ + false + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def + /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def + /AGM_preserve_spots + /AGM_preserve_spots where{ + pop AGM_preserve_spots + }{ + AGMCORE_distilling AGMCORE_producing_seps or + }ifelse + def + /AGM_is_distiller_preserving_spotimages + { + currentdistillerparams/PreserveOverprintSettings known + { + currentdistillerparams/PreserveOverprintSettings get + { + currentdistillerparams/ColorConversionStrategy known + { + currentdistillerparams/ColorConversionStrategy get + /sRGB ne + }{ + true + }ifelse + }{ + false + }ifelse + }{ + false + }ifelse + }def + /convert_spot_to_process where{pop}{ + /convert_spot_to_process + { + //Adobe_AGM_Core begin + dup map_alias{ + /Name get exch pop + }if + dup dup(None)eq exch(All)eq or + { + pop false + }{ + AGMCORE_host_sep + { + gsave + 1 0 0 0 setcmykcolor currentgray 1 exch sub + 0 1 0 0 setcmykcolor currentgray 1 exch sub + 0 0 1 0 setcmykcolor currentgray 1 exch sub + 0 0 0 1 setcmykcolor currentgray 1 exch sub + add add add 0 eq + { + pop false + }{ + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + }ifelse + grestore + }{ + AGMCORE_distilling + { + pop AGM_is_distiller_preserving_spotimages not + }{ + //Adobe_AGM_Core/AGMCORE_name xddf + false + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq + AGMUTIL_cpd/OverrideSeparations known and + { + AGMUTIL_cpd/OverrideSeparations get + { + /HqnSpots/ProcSet resourcestatus + { + pop pop pop true + }if + }if + }if + { + AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not + }{ + gsave + [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace + false + AGMUTIL_cpd/SeparationColorNames 2 copy known + { + get + {AGMCORE_name eq or}forall + not + }{ + pop pop pop true + }ifelse + grestore + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + }ifelse + /convert_to_process where{pop}{ + /convert_to_process + { + dup length 0 eq + { + pop false + }{ + AGMCORE_host_sep + { + dup true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process and}ifelse + } + forall + { + true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + (Black)eq or and + }forall + not + }{pop false}ifelse + }{ + false exch + { + /PhotoshopDuotoneList where{pop false}{true}ifelse + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process or}ifelse + } + { + convert_spot_to_process or + } + ifelse + } + forall + }ifelse + }ifelse + }def + }ifelse + /AGMCORE_avoid_L2_sep_space + version cvr 2012 lt + level2 and + AGMCORE_producing_seps not and + def + /AGMCORE_is_cmyk_sep + AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or + def + /AGM_avoid_0_cmyk where{ + pop AGM_avoid_0_cmyk + }{ + AGM_preserve_spots + userdict/Adobe_AGM_OnHost_Seps known + userdict/Adobe_AGM_InRip_Seps known or + not and + }ifelse + { + /setcmykcolor[ + { + 4 copy add add add 0 eq currentoverprint and{ + pop 0.0005 + }if + }/exec cvx + /AGMCORE_&setcmykcolor load dup type/operatortype ne{ + /exec cvx + }if + ]cvx def + }if + /AGMCORE_IsSeparationAProcessColor + { + dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or + }def + AGMCORE_host_sep{ + /setcolortransfer + { + AGMCORE_cyan_plate{ + pop pop pop + }{ + AGMCORE_magenta_plate{ + 4 3 roll pop pop pop + }{ + AGMCORE_yellow_plate{ + 4 2 roll pop pop pop + }{ + 4 1 roll pop pop pop + }ifelse + }ifelse + }ifelse + settransfer + } + def + /AGMCORE_get_ink_data + AGMCORE_cyan_plate{ + {pop pop pop} + }{ + AGMCORE_magenta_plate{ + {4 3 roll pop pop pop} + }{ + AGMCORE_yellow_plate{ + {4 2 roll pop pop pop} + }{ + {4 1 roll pop pop pop} + }ifelse + }ifelse + }ifelse + def + /AGMCORE_RemoveProcessColorNames + { + 1 dict begin + /filtername + { + dup/Cyan eq 1 index(Cyan)eq or + {pop(_cyan_)}if + dup/Magenta eq 1 index(Magenta)eq or + {pop(_magenta_)}if + dup/Yellow eq 1 index(Yellow)eq or + {pop(_yellow_)}if + dup/Black eq 1 index(Black)eq or + {pop(_black_)}if + }def + dup type/arraytype eq + {[exch{filtername}forall]} + {filtername}ifelse + end + }def + level3{ + /AGMCORE_IsCurrentColor + { + dup AGMCORE_IsSeparationAProcessColor + { + AGMCORE_plate_ndx 0 eq + {dup(Cyan)eq exch/Cyan eq or}if + AGMCORE_plate_ndx 1 eq + {dup(Magenta)eq exch/Magenta eq or}if + AGMCORE_plate_ndx 2 eq + {dup(Yellow)eq exch/Yellow eq or}if + AGMCORE_plate_ndx 3 eq + {dup(Black)eq exch/Black eq or}if + AGMCORE_plate_ndx 4 eq + {pop false}if + }{ + gsave + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + grestore + }ifelse + }def + /AGMCORE_filter_functiondatasource + { + 5 dict begin + /data_in xdf + data_in type/stringtype eq + { + /ncomp xdf + /comp xdf + /string_out data_in length ncomp idiv string def + 0 ncomp data_in length 1 sub + { + string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put + }for + string_out + }{ + string/string_in xdf + /string_out 1 string def + /component xdf + [ + data_in string_in/readstring cvx + [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx + [/pop cvx()]cvx/ifelse cvx + ]cvx/ReusableStreamDecode filter + }ifelse + end + }def + /AGMCORE_separateShadingFunction + { + 2 dict begin + /paint? xdf + /channel xdf + dup type/dicttype eq + { + begin + FunctionType 0 eq + { + /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def + currentdict/Decode known + {/Decode Decode channel 2 mul 2 getinterval def}if + paint? not + {/Decode[1 1]def}if + }if + FunctionType 2 eq + { + paint? + { + /C0[C0 channel get 1 exch sub]def + /C1[C1 channel get 1 exch sub]def + }{ + /C0[1]def + /C1[1]def + }ifelse + }if + FunctionType 3 eq + { + /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def + }if + currentdict/Range known + {/Range[0 1]def}if + currentdict + end}{ + channel get 0 paint? AGMCORE_separateShadingFunction + }ifelse + end + }def + /AGMCORE_separateShading + { + 3 -1 roll begin + currentdict/Function known + { + currentdict/Background known + {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if + Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf + /ColorSpace[/DeviceGray]def + }{ + ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }{ + ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put + }ifelse + ColorSpace 0 get/Separation eq + { + { + [1/exch cvx/sub cvx]cvx + }{ + [/pop cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll put + pop + }{ + { + [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx + }{ + pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll bind put + }ifelse + ColorSpace 2/DeviceGray put + }ifelse + end + }def + /AGMCORE_separateShadingDict + { + dup/ColorSpace get + dup type/arraytype ne + {[exch]}if + dup 0 get/DeviceCMYK eq + { + exch begin + currentdict + AGMCORE_cyan_plate + {0 true}if + AGMCORE_magenta_plate + {1 true}if + AGMCORE_yellow_plate + {2 true}if + AGMCORE_black_plate + {3 true}if + AGMCORE_plate_ndx 4 eq + {0 false}if + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + currentdict + end exch + }if + dup 0 get/Separation eq + { + exch begin + ColorSpace 1 get dup/None ne exch/All ne and + { + ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /Separation + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + }if + }ifelse + }{ + currentdict ColorSpace 1 get AGMCORE_IsCurrentColor + 0 exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + }if + currentdict + end exch + }if + dup 0 get/DeviceN eq + { + exch begin + ColorSpace 1 get convert_to_process + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /DeviceN + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + /ColorSpace[/DeviceGray]def + }if + }ifelse + }{ + currentdict + false -1 ColorSpace 1 get + { + AGMCORE_IsCurrentColor + { + 1 add + exch pop true exch exit + }if + 1 add + }forall + exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + currentdict + end exch + }if + dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not + { + exch begin + ColorSpace dup type/arraytype eq + {0 get}if + /DeviceGray ne + { + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + ColorSpace 0 get/CIEBasedA eq + { + /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def + }if + ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or + { + /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def + }if + ColorSpace 0 get/CIEBasedDEFG eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }if + currentdict 0 false AGMCORE_separateShading + }if + }if + currentdict + end exch + }if + pop + dup/AGMCORE_ignoreshade known + { + begin + /ColorSpace[/Separation(None)/DeviceGray{}]def + currentdict end + }if + }def + /shfill + { + AGMCORE_separateShadingDict + dup/AGMCORE_ignoreshade known + {pop} + {AGMCORE_&sysshfill}ifelse + }def + /makepattern + { + exch + dup/PatternType get 2 eq + { + clonedict + begin + /Shading Shading AGMCORE_separateShadingDict def + Shading/AGMCORE_ignoreshade known + currentdict end exch + {pop<</PatternType 1/PaintProc{pop}/BBox[0 0 1 1]/XStep 1/YStep 1/PaintType 1/TilingType 3>>}if + exch AGMCORE_&sysmakepattern + }{ + exch AGMCORE_&usrmakepattern + }ifelse + }def + }if + }if + AGMCORE_in_rip_sep{ + /setcustomcolor + { + exch aload pop + dup 7 1 roll inRip_spot_has_ink not { + 4{4 index mul 4 1 roll} + repeat + /DeviceCMYK setcolorspace + 6 -2 roll pop pop + }{ + //Adobe_AGM_Core begin + /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf + end + [/Separation 4 -1 roll/DeviceCMYK + {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} + ] + setcolorspace + }ifelse + setcolor + }ndf + /setseparationgray + { + [/Separation(All)/DeviceGray{}]setcolorspace_opt + 1 exch sub setcolor + }ndf + }{ + /setseparationgray + { + AGMCORE_&setgray + }ndf + }ifelse + /findcmykcustomcolor + { + 5 makereadonlyarray + }ndf + /setcustomcolor + { + exch aload pop pop + 4{4 index mul 4 1 roll}repeat + setcmykcolor pop + }ndf + /has_color + /colorimage where{ + AGMCORE_producing_seps{ + pop true + }{ + systemdict eq + }ifelse + }{ + false + }ifelse + def + /map_index + { + 1 index mul exch getinterval{255 div}forall + }bdf + /map_indexed_devn + { + Lookup Names length 3 -1 roll cvi map_index + }bdf + /n_color_components + { + base_colorspace_type + dup/DeviceGray eq{ + pop 1 + }{ + /DeviceCMYK eq{ + 4 + }{ + 3 + }ifelse + }ifelse + }bdf + level2{ + /mo/moveto ldf + /li/lineto ldf + /cv/curveto ldf + /knockout_unitsq + { + 1 setgray + 0 0 1 1 rectfill + }def + level2/setcolorspace AGMCORE_key_known not and{ + /AGMCORE_&&&setcolorspace/setcolorspace ldf + /AGMCORE_ReplaceMappedColor + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + /AGMCORE_SpotAliasAry2 where{ + begin + dup 0 get dup/Separation eq + { + pop + dup length array copy + dup dup 1 get + current_spot_alias + { + dup map_alias + { + false set_spot_alias + dup 1 exch setsepcolorspace + true set_spot_alias + begin + /sep_colorspace_dict currentdict AGMCORE_gput + pop pop pop + [ + /Separation Name + CSA map_csa + MappedCSA + /sep_colorspace_proc load + ] + dup Name + end + }if + }if + map_reserved_ink_name 1 xpt + }{ + /DeviceN eq + { + dup length array copy + dup dup 1 get[ + exch{ + current_spot_alias{ + dup map_alias{ + /Name get exch pop + }if + }if + map_reserved_ink_name + }forall + ]1 xpt + }if + }ifelse + end + }if + }if + }def + /setcolorspace + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/Indexed eq + { + AGMCORE_distilling + { + /PhotoshopDuotoneList where + { + pop false + }{ + true + }ifelse + }{ + true + }ifelse + { + aload pop 3 -1 roll + AGMCORE_ReplaceMappedColor + 3 1 roll 4 array astore + }if + }{ + AGMCORE_ReplaceMappedColor + }ifelse + }if + DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if + }def + }if + }{ + /adj + { + currentstrokeadjust{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform + }if + }def + /mo{ + adj moveto + }def + /li{ + adj lineto + }def + /cv{ + 6 2 roll adj + 6 2 roll adj + 6 2 roll adj curveto + }def + /knockout_unitsq + { + 1 setgray + 8 8 1[8 0 0 8 0 0]{<ffffffffffffffff>}image + }def + /currentstrokeadjust{ + /currentstrokeadjust AGMCORE_gget + }def + /setstrokeadjust{ + /currentstrokeadjust exch AGMCORE_gput + }def + /setcolorspace + { + /currentcolorspace exch AGMCORE_gput + }def + /currentcolorspace + { + /currentcolorspace AGMCORE_gget + }def + /setcolor_devicecolor + { + base_colorspace_type + dup/DeviceGray eq{ + pop setgray + }{ + /DeviceCMYK eq{ + setcmykcolor + }{ + setrgbcolor + }ifelse + }ifelse + }def + /setcolor + { + currentcolorspace 0 get + dup/DeviceGray ne{ + dup/DeviceCMYK ne{ + dup/DeviceRGB ne{ + dup/Separation eq{ + pop + currentcolorspace 3 gx + currentcolorspace 2 get + }{ + dup/Indexed eq{ + pop + currentcolorspace 3 get dup type/stringtype eq{ + currentcolorspace 1 get n_color_components + 3 -1 roll map_index + }{ + exec + }ifelse + currentcolorspace 1 get + }{ + /AGMCORE_cur_err/AGMCORE_invalid_color_space def + AGMCORE_invalid_color_space + }ifelse + }ifelse + }if + }if + }if + setcolor_devicecolor + }def + }ifelse + /sop/setoverprint ldf + /lw/setlinewidth ldf + /lc/setlinecap ldf + /lj/setlinejoin ldf + /ml/setmiterlimit ldf + /dsh/setdash ldf + /sadj/setstrokeadjust ldf + /gry/setgray ldf + /rgb/setrgbcolor ldf + /cmyk[ + /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx + /setcmykcolor load dup type/operatortype ne{/exec cvx}if + ]cvx bdf + level3 AGMCORE_host_sep not and{ + /nzopmsc{ + 6 dict begin + /kk exch def + /yy exch def + /mm exch def + /cc exch def + /sum 0 def + cc 0 ne{/sum sum 2#1000 or def cc}if + mm 0 ne{/sum sum 2#0100 or def mm}if + yy 0 ne{/sum sum 2#0010 or def yy}if + kk 0 ne{/sum sum 2#0001 or def kk}if + AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace + sum 0 eq{0}if + end + setcolor + }bdf + }{ + /nzopmsc/cmyk ldf + }ifelse + /sep/setsepcolor ldf + /devn/setdevicencolor ldf + /idx/setindexedcolor ldf + /colr/setcolor ldf + /csacrd/set_csa_crd ldf + /sepcs/setsepcolorspace ldf + /devncs/setdevicencolorspace ldf + /idxcs/setindexedcolorspace ldf + /cp/closepath ldf + /clp/clp_npth ldf + /eclp/eoclp_npth ldf + /f/fill ldf + /ef/eofill ldf + /@/stroke ldf + /nclp/npth_clp ldf + /gset/graphic_setup ldf + /gcln/graphic_cleanup ldf + /ct/concat ldf + /cf/currentfile ldf + /fl/filter ldf + /rs/readstring ldf + /AGMCORE_def_ht currenthalftone def + /clonedict Adobe_AGM_Utils begin/clonedict load end def + /clonearray Adobe_AGM_Utils begin/clonearray load end def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall + /getrampcolor + { + /indx exch def + 0 1 NumComp 1 sub + { + dup + Samples exch get + dup type/stringtype eq{indx get}if + exch + Scaling exch get aload pop + 3 1 roll + mul add + }for + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /sssetbackground{ + aload pop + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /RadialShade + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /r2 xdf + /c2y xdf + /c2x xdf + /r1 xdf + /c1y xdf + /c1x xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + c1x c2x eq + { + c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope c2y c1y sub c2x c1x sub div def + /theta slope 1 atan def + c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if + c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if + }ifelse + gsave + clippath + c1x c1y translate + theta rotate + -90 rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax xdf + /xMax xdf + /yMin xdf + /xMin xdf + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + /max{2 copy gt{pop}{exch pop}ifelse}bdf + /min{2 copy lt{pop}{exch pop}ifelse}bdf + rampdict begin + 40 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + c1x c1y translate + theta rotate + -90 rotate + /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def + /c1y 0 def + /c1x 0 def + /c2x 0 def + ext0 + { + 0 getrampcolor + c2y r2 add r1 sub 0.0001 lt + { + c1x c1y r1 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2y r1 add r2 le + { + c1x c1y r1 0 360 arc + fill + } + { + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r1 neg def + /p1y c1y def + /p2x r1 def + /p2y c1y def + p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y p1x SS1 div neg def + /SS2 90 theta sub dup sin exch cos div def + /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y p2x SS2 div neg def + r1 r2 gt + { + /L1maxX p1x yMin p1y sub SS1 div add def + /L2maxX p2x yMin p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + c1x c2x sub dup mul + c1y c2y sub dup mul + add 0.5 exp + 0 dtransform + dup mul exch dup mul add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + /hires xdf + hires mul + /numpix xdf + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + /xInc c2x c1x sub numsteps div def + /yInc c2y c1y sub numsteps div def + /rInc r2 r1 sub numsteps div def + /cx c1x def + /cy c1y def + /radius r1 def + np + xInc 0 eq yInc 0 eq rInc 0 eq and and + { + 0 getrampcolor + cx cy radius 0 360 arc + stroke + NumSamples 1 sub getrampcolor + cx cy radius 72 hires div add 0 360 arc + 0 setlinewidth + stroke + }{ + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + cx cy radius 0 360 arc + /cx cx xInc add def + /cy cy yInc add def + /radius radius rInc add def + cx cy radius 360 0 arcn + eofill + rampIndxInc add + }repeat + pop + }ifelse + ext1 + { + c2y r2 add r1 lt + { + c2x c2y r2 0 360 arc + fill + }{ + c2y r1 add r2 sub 0.0001 le + { + c2x c2y r2 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r2 neg def + /p1y c2y def + /p2x r2 def + /p2y c2y def + p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y c2y p1x SS1 div sub def + /SS2 90 theta sub dup sin exch cos div def + /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y c2y p2x SS2 div sub def + r1 r2 lt + { + /L1maxX p1x yMax p1y sub SS1 div add def + /L2maxX p2x yMax p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + grestore + grestore + end + end + end + }ifelse + }bdf + /GenStrips + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /y2 xdf + /x2 xdf + /y1 xdf + /x1 xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + x1 x2 eq + { + y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope y2 y1 sub x2 x1 sub div def + /theta slope 1 atan def + x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if + x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if + } + ifelse + gsave + clippath + x1 y1 translate + theta rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax exch def + /xMax exch def + /yMin exch def + /xMin exch def + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + rampdict begin + 20 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + x1 y1 translate + theta rotate + /xStart 0 def + /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def + /ySpan yMax yMin sub def + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + xStart 0 transform + xEnd 0 transform + 3 -1 roll + sub dup mul + 3 1 roll + sub dup mul + add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + mul + /numpix xdf + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + ext0 + { + 0 getrampcolor + xMin xStart lt + { + xMin yMin xMin neg ySpan rectfill + }if + }if + /xInc xEnd xStart sub numsteps div def + /x xStart def + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + x yMin xInc ySpan rectfill + /x x xInc add def + rampIndxInc add + }repeat + pop + ext1{ + xMax xEnd gt + { + xEnd yMin xMax xEnd sub ySpan rectfill + }if + }if + grestore + grestore + end + end + end + }ifelse + }bdf +}def +/pt +{ + end +}def +/dt{ +}def +/pgsv{ + //Adobe_AGM_Core/AGMCORE_save save put +}def +/pgrs{ + //Adobe_AGM_Core/AGMCORE_save get restore +}def +systemdict/findcolorrendering known{ + /findcolorrendering systemdict/findcolorrendering get def +}if +systemdict/setcolorrendering known{ + /setcolorrendering systemdict/setcolorrendering get def +}if +/test_cmyk_color_plate +{ + gsave + setcmykcolor currentgray 1 ne + grestore +}def +/inRip_spot_has_ink +{ + dup//Adobe_AGM_Core/AGMCORE_name xddf + convert_spot_to_process not +}def +/map255_to_range +{ + 1 index sub + 3 -1 roll 255 div mul add +}def +/set_csa_crd +{ + /sep_colorspace_dict null AGMCORE_gput + begin + CSA get_csa_by_name setcolorspace_opt + set_crd + end +} +def +/map_csa +{ + currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse + {pop}{get_csa_by_name/MappedCSA xdf}ifelse +}def +/setsepcolor +{ + /sep_colorspace_dict AGMCORE_gget begin + dup/sep_tint exch AGMCORE_gput + TintProc + end +}def +/setdevicencolor +{ + /devicen_colorspace_dict AGMCORE_gget begin + Names length copy + Names length 1 sub -1 0 + { + /devicen_tints AGMCORE_gget 3 1 roll xpt + }for + TintProc + end +}def +/sep_colorspace_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + currentdict/Components known{ + Components aload pop + TintMethod/Lab eq{ + 2{AGMCORE_tmp mul NComponents 1 roll}repeat + LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll + }{ + TintMethod/Subtractive eq{ + NComponents{ + AGMCORE_tmp mul NComponents 1 roll + }repeat + }{ + NComponents{ + 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll + }repeat + }ifelse + }ifelse + }{ + ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get + aload pop + }ifelse + end +}def +/sep_colorspace_gray_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get + end +}def +/sep_proc_name +{ + dup 0 get + dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ + pop[/DeviceGray] + /sep_colorspace_gray_proc + }{ + /sep_colorspace_proc + }ifelse +}def +/setsepcolorspace +{ + current_spot_alias{ + dup begin + Name map_alias{ + exch pop + }if + end + }if + dup/sep_colorspace_dict exch AGMCORE_gput + begin + CSA map_csa + /AGMCORE_sep_special Name dup()eq exch(All)eq or store + AGMCORE_avoid_L2_sep_space{ + [/Indexed MappedCSA sep_proc_name 255 exch + {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx + ]setcolorspace_opt + /TintProc{ + 255 mul round cvi setcolor + }bdf + }{ + MappedCSA 0 get/DeviceCMYK eq + currentdict/Components known and + AGMCORE_sep_special not and{ + /TintProc[ + Components aload pop Name findcmykcustomcolor + /exch cvx/setcustomcolor cvx + ]cvx bdf + }{ + AGMCORE_host_sep Name(All)eq and{ + /TintProc{ + 1 exch sub setseparationgray + }bdf + }{ + AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and + AGMCORE_host_sep or + Name()eq and{ + /TintProc[ + MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ + cvx/setcmykcolor cvx + }{ + cvx/setgray cvx + }ifelse + ]cvx bdf + }{ + AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ + /TintProc[ + /dup cvx + MappedCSA sep_proc_name cvx exch + 0 get/DeviceGray eq{ + 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx + }if + /Name cvx/findcmykcustomcolor cvx/exch cvx + AGMCORE_host_sep{ + AGMCORE_is_cmyk_sep + /Name cvx + /AGMCORE_IsSeparationAProcessColor load/exec cvx + /not cvx/and cvx + }{ + Name inRip_spot_has_ink not + }ifelse + [ + /pop cvx 1 + ]cvx/if cvx + /setcustomcolor cvx + ]cvx bdf + }{ + /TintProc{setcolor}bdf + [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt + }ifelse + }ifelse + }ifelse + }ifelse + }ifelse + set_crd + setsepcolor + end +}def +/additive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 + 0 1 numarrays 1 sub + { + 1 exch add/index cvx + c1/get cvx/mul cvx + }for + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/subtractive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 1 + 0 1 numarrays 1 sub + { + 1 3 3 -1 roll add/index cvx + c1/get cvx/sub cvx/mul cvx + }for + /sub cvx + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/exec_tint_transform +{ + /TintProc[ + /TintTransform cvx/setcolor cvx + ]cvx bdf + MappedCSA setcolorspace_opt +}bdf +/devn_makecustomcolor +{ + 2 dict begin + /names_index xdf + /Names xdf + 1 1 1 1 Names names_index get findcmykcustomcolor + /devicen_tints AGMCORE_gget names_index get setcustomcolor + Names length{pop}repeat + end +}bdf +/setdevicencolorspace +{ + dup/AliasedColorants known{false}{true}ifelse + current_spot_alias and{ + 7 dict begin + /names_index 0 def + dup/names_len exch/Names get length def + /new_names names_len array def + /new_LookupTables names_len array def + /alias_cnt 0 def + dup/Names get + { + dup map_alias{ + exch pop + dup/ColorLookup known{ + dup begin + new_LookupTables names_index ColorLookup put + end + }{ + dup/Components known{ + dup begin + new_LookupTables names_index Components put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + new_names names_index 3 -1 roll/Name get put + /alias_cnt alias_cnt 1 add def + }{ + /name xdf + new_names names_index name put + dup/LookupTables known{ + dup begin + new_LookupTables names_index LookupTables names_index get put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + /names_index names_index 1 add def + }forall + alias_cnt 0 gt{ + /AliasedColorants true def + /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def + 0 1 names_len 1 sub{ + /names_index xdf + new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ + /AliasedColorants false def + exit + }{ + new_LookupTables names_index get 0 get null eq{ + dup/Names get names_index get/name xdf + name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq + or or or not{ + /AliasedColorants false def + exit + }if + }if + }ifelse + }for + lut_entry_len 1 eq{ + /AliasedColorants false def + }if + AliasedColorants{ + dup begin + /Names new_names def + /LookupTables new_LookupTables def + /AliasedColorants true def + /NComponents lut_entry_len def + /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def + /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def + currentdict/TTTablesIdx known not{ + /TTTablesIdx -1 def + }if + end + }if + }if + end + }if + dup/devicen_colorspace_dict exch AGMCORE_gput + begin + currentdict/AliasedColorants known{ + AliasedColorants + }{ + false + }ifelse + dup not{ + CSA map_csa + }if + /TintTransform load type/nulltype eq or{ + /TintTransform[ + 0 1 Names length 1 sub + { + /TTTablesIdx TTTablesIdx 1 add def + dup LookupTables exch get dup 0 get null eq + { + 1 index + Names exch get + dup(Cyan)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0 0 0 + } + { + dup(Magenta)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0/exch cvx 0 0 + }{ + (Yellow)eq + { + exch + LookupTables length exch sub + /index cvx + 0 0 3 -1/roll cvx 0 + }{ + exch + LookupTables length exch sub + /index cvx + 0 0 0 4 -1/roll cvx + }ifelse + }ifelse + }ifelse + 5 -1/roll cvx/astore cvx + }{ + dup length 1 sub + LookupTables length 4 -1 roll sub 1 add + /index cvx/mul cvx/round cvx/cvi cvx/get cvx + }ifelse + Names length TTTablesIdx add 1 add 1/roll cvx + }for + Names length[/pop cvx]cvx/repeat cvx + NComponents Names length + TintMethod/Subtractive eq + { + subtractive_blend + }{ + additive_blend + }ifelse + ]cvx bdf + }if + AGMCORE_host_sep{ + Names convert_to_process{ + exec_tint_transform + } + { + currentdict/AliasedColorants known{ + AliasedColorants not + }{ + false + }ifelse + 5 dict begin + /AvoidAliasedColorants xdf + /painted? false def + /names_index 0 def + /names_len Names length def + AvoidAliasedColorants{ + /currentspotalias current_spot_alias def + false set_spot_alias + }if + Names{ + AGMCORE_is_cmyk_sep{ + dup(Cyan)eq AGMCORE_cyan_plate and exch + dup(Magenta)eq AGMCORE_magenta_plate and exch + dup(Yellow)eq AGMCORE_yellow_plate and exch + (Black)eq AGMCORE_black_plate and or or or{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + }if + painted?{exit}if + }{ + 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + exit + }if + }ifelse + /names_index names_index 1 add def + }forall + AvoidAliasedColorants{ + currentspotalias set_spot_alias + }if + painted?{ + /devicen_colorspace_dict AGMCORE_gget/names_index names_index put + }{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx + 0 0 0 0/setcmykcolor cvx + ]cvx ddf + }ifelse + end + }ifelse + } + { + AGMCORE_in_rip_sep{ + Names convert_to_process not + }{ + level3 + }ifelse + { + [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt + /TintProc level3 not AGMCORE_in_rip_sep and{ + [ + Names/length cvx[/pop cvx]cvx/repeat cvx + ]cvx bdf + }{ + {setcolor}bdf + }ifelse + }{ + exec_tint_transform + }ifelse + }ifelse + set_crd + /AliasedColorants false def + end +}def +/setindexedcolorspace +{ + dup/indexed_colorspace_dict exch AGMCORE_gput + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + currentdict devncs + }{ + 1 currentdict sepcs + }ifelse + AGMCORE_host_sep{ + 4 dict begin + /compCnt/Names where{pop Names length}{1}ifelse def + /NewLookup HiVal 1 add string def + 0 1 HiVal{ + /tableIndex xdf + Lookup dup type/stringtype eq{ + compCnt tableIndex map_index + }{ + exec + }ifelse + /Names where{ + pop setdevicencolor + }{ + setsepcolor + }ifelse + currentgray + tableIndex exch + 255 mul cvi + NewLookup 3 1 roll put + }for + [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt + end + }{ + level3 + { + currentdict/Names known{ + [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt + }{ + [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt + }ifelse + }{ + [/Indexed MappedCSA HiVal + [ + currentdict/Names known{ + Lookup dup type/stringtype eq + {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} + {/exec cvx}ifelse + /TintTransform load/exec cvx + }{ + Lookup dup type/stringtype eq + {/exch cvx/get cvx 255/div cvx} + {/exec cvx}ifelse + CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx + }ifelse + ]cvx + ]setcolorspace_opt + }ifelse + }ifelse + end + set_crd + } + { + CSA map_csa + AGMCORE_host_sep level2 not and{ + 0 0 0 0 setcmykcolor + }{ + [/Indexed MappedCSA + level2 not has_color not and{ + dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ + pop[/DeviceGray] + }if + HiVal GrayLookup + }{ + HiVal + currentdict/RangeArray known{ + { + /indexed_colorspace_dict AGMCORE_gget begin + Lookup exch + dup HiVal gt{ + pop HiVal + }if + NComponents mul NComponents getinterval{}forall + NComponents 1 sub -1 0{ + RangeArray exch 2 mul 2 getinterval aload pop map255_to_range + NComponents 1 roll + }for + end + }bind + }{ + Lookup + }ifelse + }ifelse + ]setcolorspace_opt + set_crd + }ifelse + }ifelse + end +}def +/setindexedcolor +{ + AGMCORE_host_sep{ + /indexed_colorspace_dict AGMCORE_gget + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + map_indexed_devn + devn + } + { + Lookup 1 3 -1 roll map_index + sep + }ifelse + end + }{ + Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll + map_index + MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse + }ifelse + end + }{ + level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ + /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin + map_indexed_devn + devn + end + } + { + setcolor + }ifelse + }ifelse +}def +/ignoreimagedata +{ + currentoverprint not{ + gsave + dup clonedict begin + 1 setgray + /Decode[0 1]def + /DataSource<FF>def + /MultipleDataSources false def + /BitsPerComponent 8 def + currentdict end + systemdict/image gx + grestore + }if + consumeimagedata +}def +/add_res +{ + dup/CSD eq{ + pop + //Adobe_AGM_Core begin + /AGMCORE_CSD_cache load 3 1 roll put + end + }{ + defineresource pop + }ifelse +}def +/del_res +{ + { + aload pop exch + dup/CSD eq{ + pop + {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall + }{ + exch + {1 index undefineresource}forall + pop + }ifelse + }forall +}def +/get_res +{ + dup/CSD eq{ + pop + dup type dup/nametype eq exch/stringtype eq or{ + AGMCORE_CSD_cache exch get + }if + }{ + findresource + }ifelse +}def +/get_csa_by_name +{ + dup type dup/nametype eq exch/stringtype eq or{ + /CSA get_res + }if +}def +/paintproc_buf_init +{ + /count get 0 0 put +}def +/paintproc_buf_next +{ + dup/count get dup 0 get + dup 3 1 roll + 1 add 0 xpt + get +}def +/cachepaintproc_compress +{ + 5 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + /string_size 16000 def + /readbuffer string_size string def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + /LZWFilter + { + exch + dup length 0 eq{ + pop + }{ + ppdict dup length 1 sub 3 -1 roll put + }ifelse + {string_size}{0}ifelse string + }/LZWEncode filter def + { + ReadFilter readbuffer readstring + exch LZWFilter exch writestring + not{exit}if + }loop + LZWFilter closefile + ppdict + end +}def +/cachepaintproc +{ + 2 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + { + ReadFilter 16000 string readstring exch + ppdict dup length 1 sub 3 -1 roll put + not{exit}if + }loop + ppdict dup dup length 1 sub()put + end +}def +/make_pattern +{ + exch clonedict exch + dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform + exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub + exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub + matrix translate exch matrix concatmatrix + 1 index begin + BBox 0 get XStep div cvi XStep mul/xshift exch neg def + BBox 1 get YStep div cvi YStep mul/yshift exch neg def + BBox 0 get xshift add + BBox 1 get yshift add + BBox 2 get xshift add + BBox 3 get yshift add + 4 array astore + /BBox exch def + [xshift yshift/translate load null/exec load]dup + 3/PaintProc load put cvx/PaintProc exch def + end + gsave 0 setgray + makepattern + grestore +}def +/set_pattern +{ + dup/PatternType get 1 eq{ + dup/PaintType get 1 eq{ + currentoverprint sop[/DeviceGray]setcolorspace 0 setgray + }if + }if + setpattern +}def +/setcolorspace_opt +{ + dup currentcolorspace eq{pop}{setcolorspace}ifelse +}def +/updatecolorrendering +{ + currentcolorrendering/RenderingIntent known{ + currentcolorrendering/RenderingIntent get + } + { + Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/Saturation eq + { + /saturation_crd AGMCORE_gget dup null eq + } + { + /perceptual_crd AGMCORE_gget dup null eq + }ifelse + }ifelse + }ifelse + { + pop null + } + { + /RenderingIntent known{null}{Intent}ifelse + }ifelse + }ifelse + Intent ne{ + Intent/ColorRendering{findresource}stopped + { + pop pop systemdict/findcolorrendering known + { + Intent findcolorrendering + { + /ColorRendering findresource true exch + } + { + /ColorRendering findresource + product(Xerox Phaser 5400)ne + exch + }ifelse + dup Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd exch AGMCORE_gput + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd exch AGMCORE_gput + } + { + Intent/Saturation eq + { + /saturation_crd exch AGMCORE_gput + } + { + Intent/Perceptual eq + { + /perceptual_crd exch AGMCORE_gput + } + { + pop + }ifelse + }ifelse + }ifelse + }ifelse + 1 index{exch}{pop}ifelse + } + {false}ifelse + } + {true}ifelse + { + dup begin + currentdict/TransformPQR known{ + currentdict/TransformPQR get aload pop + 3{{}eq 3 1 roll}repeat or or + } + {true}ifelse + currentdict/MatrixPQR known{ + currentdict/MatrixPQR get aload pop + 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq + and and and and and and and and + } + {true}ifelse + end + or + { + clonedict begin + /TransformPQR[ + {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div + 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind + {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div + 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind + {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div + 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind + ]def + /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def + /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def + currentdict end + }if + setcolorrendering_opt + }if + }if +}def +/set_crd +{ + AGMCORE_host_sep not level2 and{ + currentdict/ColorRendering known{ + ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if + }{ + currentdict/Intent known{ + updatecolorrendering + }if + }ifelse + currentcolorspace dup type/arraytype eq + {0 get}if + /DeviceRGB eq + { + currentdict/UCR known + {/UCR}{/AGMCORE_currentucr}ifelse + load setundercolorremoval + currentdict/BG known + {/BG}{/AGMCORE_currentbg}ifelse + load setblackgeneration + }if + }if +}def +/set_ucrbg +{ + dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration + dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval +}def +/setcolorrendering_opt +{ + dup currentcolorrendering eq{ + pop + }{ + clonedict + begin + /Intent Intent def + currentdict + end + setcolorrendering + }ifelse +}def +/cpaint_gcomp +{ + convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not + { + (%end_cpaint_gcomp)flushinput + }if +}def +/cpaint_gsep +{ + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get + { + (%end_cpaint_gsep)flushinput + }if +}def +/cpaint_gend +{np}def +/T1_path +{ + currentfile token pop currentfile token pop mo + { + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 exch rlineto + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 rlineto + }loop +}def +/T1_gsave + level3 + {/clipsave} + {/gsave}ifelse + load def +/T1_grestore + level3 + {/cliprestore} + {/grestore}ifelse + load def +/set_spot_alias_ary +{ + dup inherit_aliases + //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf +}def +/set_spot_normalization_ary +{ + dup inherit_aliases + dup length + /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if + array + //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf + /AGMCORE_SpotAliasAry where{ + pop + AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval + AGMCORE_SpotAliasAry length + }{0}ifelse + AGMCORE_SpotAliasAry2 3 1 roll exch putinterval + true set_spot_alias +}def +/inherit_aliases +{ + {dup/Name get map_alias{/CSD put}{pop}ifelse}forall +}def +/set_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias 3 -1 roll put + }{ + pop + }ifelse +}def +/current_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias get + }{ + false + }ifelse +}def +/map_alias +{ + /AGMCORE_SpotAliasAry2 where{ + begin + /AGMCORE_name xdf + false + AGMCORE_SpotAliasAry2{ + dup/Name get AGMCORE_name eq{ + /CSD get/CSD get_res + exch pop true + exit + }{ + pop + }ifelse + }forall + end + }{ + pop false + }ifelse +}bdf +/spot_alias +{ + true set_spot_alias + /AGMCORE_&setcustomcolor AGMCORE_key_known not{ + //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put + }if + /customcolor_tint 1 AGMCORE_gput + //Adobe_AGM_Core begin + /setcustomcolor + { + //Adobe_AGM_Core begin + dup/customcolor_tint exch AGMCORE_gput + 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not + current_spot_alias and{1 index 4 get map_alias}{false}ifelse + { + false set_spot_alias + /sep_colorspace_dict AGMCORE_gget null ne + 3 1 roll 2 index{ + exch pop/sep_tint AGMCORE_gget exch + }if + mark 3 1 roll + setsepcolorspace + counttomark 0 ne{ + setsepcolor + }if + pop + not{/sep_tint 1.0 AGMCORE_gput}if + pop + true set_spot_alias + }{ + AGMCORE_&setcustomcolor + }ifelse + end + }bdf + end +}def +/begin_feature +{ + Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put + count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put + {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if +}def +/end_feature +{ + 2 dict begin + /spd/setpagedevice load def + /setpagedevice{get_gstate spd set_gstate}def + stopped{$error/newerror false put}if + end + count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse + countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse + {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if +}def +/set_negative +{ + //Adobe_AGM_Core begin + /AGMCORE_inverting exch def + level2{ + currentpagedevice/NegativePrint known AGMCORE_distilling not and{ + currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ + true begin_feature true{ + <</NegativePrint//Adobe_AGM_Core/AGMCORE_inverting get>>setpagedevice + }end_feature + }if + /AGMCORE_inverting false def + }if + }if + AGMCORE_inverting{ + [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer + AGMCORE_distilling{ + erasepage + }{ + gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse + /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore + }ifelse + }if + end +}def +/lw_save_restore_override{ + /md where{ + pop + md begin + initializepage + /initializepage{}def + /pmSVsetup{}def + /endp{}def + /pse{}def + /psb{}def + /orig_showpage where + {pop} + {/orig_showpage/showpage load def} + ifelse + /showpage{orig_showpage gR}def + end + }if +}def +/pscript_showpage_override{ + /NTPSOct95 where + { + begin + showpage + save + /showpage/restore load def + /restore{exch pop}def + end + }if +}def +/driver_media_override +{ + /md where{ + pop + md/initializepage known{ + md/initializepage{}put + }if + md/rC known{ + md/rC{4{pop}repeat}put + }if + }if + /mysetup where{ + /mysetup[1 0 0 1 0 0]put + }if + Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put + level2 + {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if +}def +/driver_check_media_override +{ + /PrepsDict where + {pop} + { + Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne + Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and + Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and + }if + { + Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix + }if + }ifelse +}def +AGMCORE_err_strings begin + /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def + /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def + /AGMCORE_invalid_color_space(This job contains an invalid color space. )def +end +/set_def_ht +{AGMCORE_def_ht sethalftone}def +/set_def_flat +{AGMCORE_Default_flatness setflat}def +end +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_CoolType_Core 2.31 0
%%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved.
%%Version: 2.31 0
10 dict begin
/Adobe_CoolType_Passthru currentdict def
/Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def
Adobe_CoolType_Core_Defined
{/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def}
if
userdict/Adobe_CoolType_Core 70 dict dup begin put
/Adobe_CoolType_Version 2.31 def
/Level2?
systemdict/languagelevel known dup
{pop systemdict/languagelevel get 2 ge}
if def
Level2? not
{
/currentglobal false def
/setglobal/pop load def
/gcheck{pop false}bind def
/currentpacking false def
/setpacking/pop load def
/SharedFontDirectory 0 dict def
}
if
currentpacking
true setpacking
currentglobal false setglobal
userdict/Adobe_CoolType_Data 2 copy known not
{2 copy 10 dict put}
if
get
begin
/@opStackCountByLevel 32 dict def
/@opStackLevel 0 def
/@dictStackCountByLevel 32 dict def
/@dictStackLevel 0 def
end
setglobal
currentglobal true setglobal
userdict/Adobe_CoolType_GVMFonts known not
{userdict/Adobe_CoolType_GVMFonts 10 dict put}
if
setglobal
currentglobal false setglobal
userdict/Adobe_CoolType_LVMFonts known not
{userdict/Adobe_CoolType_LVMFonts 10 dict put}
if
setglobal
/ct_VMDictPut
{
dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse
3 1 roll put
}bind def
/ct_VMDictUndef
{
dup Adobe_CoolType_GVMFonts exch known
{Adobe_CoolType_GVMFonts exch undef}
{
dup Adobe_CoolType_LVMFonts exch known
{Adobe_CoolType_LVMFonts exch undef}
{pop}
ifelse
}ifelse
}bind def
/ct_str1 1 string def
/ct_xshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
_ct_x _ct_y moveto
0
rmoveto
}
ifelse
/_ct_i _ct_i 1 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/ct_yshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
_ct_x _ct_y moveto
0 exch
rmoveto
}
ifelse
/_ct_i _ct_i 1 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/ct_xyshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
{_ct_na _ct_i 1 add get}stopped
{pop pop pop}
{
_ct_x _ct_y moveto
rmoveto
}
ifelse
}
ifelse
/_ct_i _ct_i 2 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def
/ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def
/xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def
currentglobal true setglobal
/ct_T3Defs
{
/BuildChar
{
1 index/Encoding get exch get
1 index/BuildGlyph get exec
}bind def
/BuildGlyph
{
exch begin
GlyphProcs exch get exec
end
}bind def
}bind def
setglobal
/@_SaveStackLevels
{
Adobe_CoolType_Data
begin
/@vmState currentglobal def false setglobal
@opStackCountByLevel
@opStackLevel
2 copy known not
{
2 copy
3 dict dup/args
7 index
5 add array put
put get
}
{
get dup/args get dup length 3 index lt
{
dup length 5 add array exch
1 index exch 0 exch putinterval
1 index exch/args exch put
}
{pop}
ifelse
}
ifelse
begin
count 1 sub
1 index lt
{pop count}
if
dup/argCount exch def
dup 0 gt
{
args exch 0 exch getinterval
astore pop
}
{pop}
ifelse
count
/restCount exch def
end
/@opStackLevel @opStackLevel 1 add def
countdictstack 1 sub
@dictStackCountByLevel exch @dictStackLevel exch put
/@dictStackLevel @dictStackLevel 1 add def
@vmState setglobal
end
}bind def
/@_RestoreStackLevels
{
Adobe_CoolType_Data
begin
/@opStackLevel @opStackLevel 1 sub def
@opStackCountByLevel @opStackLevel get
begin
count restCount sub dup 0 gt
{{pop}repeat}
{pop}
ifelse
args 0 argCount getinterval{}forall
end
/@dictStackLevel @dictStackLevel 1 sub def
@dictStackCountByLevel @dictStackLevel get
end
countdictstack exch sub dup 0 gt
{{end}repeat}
{pop}
ifelse
}bind def
/@_PopStackLevels
{
Adobe_CoolType_Data
begin
/@opStackLevel @opStackLevel 1 sub def
/@dictStackLevel @dictStackLevel 1 sub def
end
}bind def
/@Raise
{
exch cvx exch errordict exch get exec
stop
}bind def
/@ReRaise
{
cvx $error/errorname get errordict exch get exec
stop
}bind def
/@Stopped
{
0 @#Stopped
}bind def
/@#Stopped
{
@_SaveStackLevels
stopped
{@_RestoreStackLevels true}
{@_PopStackLevels false}
ifelse
}bind def
/@Arg
{
Adobe_CoolType_Data
begin
@opStackCountByLevel @opStackLevel 1 sub get
begin
args exch
argCount 1 sub exch sub get
end
end
}bind def
currentglobal true setglobal
/CTHasResourceForAllBug
Level2?
{
1 dict dup
/@shouldNotDisappearDictValue true def
Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put
begin
count @_SaveStackLevels
{(*){pop stop}128 string/Category resourceforall}
stopped pop
@_RestoreStackLevels
currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll
{
/@shouldNotDisappearDictValue known
{
{
end
currentdict 1 index eq
{pop exit}
if
}
loop
}
if
}
{
pop
end
}
ifelse
}
{false}
ifelse
def
true setglobal
/CTHasResourceStatusBug
Level2?
{
mark
{/steveamerige/Category resourcestatus}
stopped
{cleartomark true}
{cleartomark currentglobal not}
ifelse
}
{false}
ifelse
def
setglobal
/CTResourceStatus
{
mark 3 1 roll
/Category findresource
begin
({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
{cleartomark false}
{{3 2 roll pop true}{cleartomark false}ifelse}
ifelse
end
}bind def
/CTWorkAroundBugs
{
Level2?
{
/cid_PreLoad/ProcSet resourcestatus
{
pop pop
currentglobal
mark
{
(*)
{
dup/CMap CTHasResourceStatusBug
{CTResourceStatus}
{resourcestatus}
ifelse
{
pop dup 0 eq exch 1 eq or
{
dup/CMap findresource gcheck setglobal
/CMap undefineresource
}
{
pop CTHasResourceForAllBug
{exit}
{stop}
ifelse
}
ifelse
}
{pop}
ifelse
}
128 string/CMap resourceforall
}
stopped
{cleartomark}
stopped pop
setglobal
}
if
}
if
}bind def
/ds
{
Adobe_CoolType_Core
begin
CTWorkAroundBugs
/mo/moveto load def
/nf/newencodedfont load def
/msf{makefont setfont}bind def
/uf{dup undefinefont ct_VMDictUndef}bind def
/ur/undefineresource load def
/chp/charpath load def
/awsh/awidthshow load def
/wsh/widthshow load def
/ash/ashow load def
/@xshow/xshow load def
/@yshow/yshow load def
/@xyshow/xyshow load def
/@cshow/cshow load def
/sh/show load def
/rp/repeat load def
/.n/.notdef def
end
currentglobal false setglobal
userdict/Adobe_CoolType_Data 2 copy known not
{2 copy 10 dict put}
if
get
begin
/AddWidths? false def
/CC 0 def
/charcode 2 string def
/@opStackCountByLevel 32 dict def
/@opStackLevel 0 def
/@dictStackCountByLevel 32 dict def
/@dictStackLevel 0 def
/InVMFontsByCMap 10 dict def
/InVMDeepCopiedFonts 10 dict def
end
setglobal
}bind def
/dt
{
currentdict Adobe_CoolType_Core eq
{end}
if
}bind def
/ps
{
Adobe_CoolType_Core begin
Adobe_CoolType_GVMFonts begin
Adobe_CoolType_LVMFonts begin
SharedFontDirectory begin
}bind def
/pt
{
end
end
end
end
}bind def
/unload
{
systemdict/languagelevel known
{
systemdict/languagelevel get 2 ge
{
userdict/Adobe_CoolType_Core 2 copy known
{undef}
{pop pop}
ifelse
}
if
}
if
}bind def
/ndf
{
1 index where
{pop pop pop}
{dup xcheck{bind}if def}
ifelse
}def
/findfont systemdict
begin
userdict
begin
/globaldict where{/globaldict get begin}if
dup where pop exch get
/globaldict where{pop end}if
end
end
Adobe_CoolType_Core_Defined
{/systemfindfont exch def}
{
/findfont 1 index def
/systemfindfont exch def
}
ifelse
/undefinefont
{pop}ndf
/copyfont
{
currentglobal 3 1 roll
1 index gcheck setglobal
dup null eq{0}{dup length}ifelse
2 index length add 1 add dict
begin
exch
{
1 index/FID eq
{pop pop}
{def}
ifelse
}
forall
dup null eq
{pop}
{{def}forall}
ifelse
currentdict
end
exch setglobal
}bind def
/copyarray
{
currentglobal exch
dup gcheck setglobal
dup length array copy
exch setglobal
}bind def
/newencodedfont
{
currentglobal
{
SharedFontDirectory 3 index known
{SharedFontDirectory 3 index get/FontReferenced known}
{false}
ifelse
}
{
FontDirectory 3 index known
{FontDirectory 3 index get/FontReferenced known}
{
SharedFontDirectory 3 index known
{SharedFontDirectory 3 index get/FontReferenced known}
{false}
ifelse
}
ifelse
}
ifelse
dup
{
3 index findfont/FontReferenced get
2 index dup type/nametype eq
{findfont}
if ne
{pop false}
if
}
if
dup
{
1 index dup type/nametype eq
{findfont}
if
dup/CharStrings known
{
/CharStrings get length
4 index findfont/CharStrings get length
ne
{
pop false
}
if
}
{pop}
ifelse
}
if
{
pop
1 index findfont
/Encoding get exch
0 1 255
{2 copy get 3 index 3 1 roll put}
for
pop pop pop
}
{
currentglobal
4 1 roll
dup type/nametype eq
{findfont}
if
dup gcheck setglobal
dup dup maxlength 2 add dict
begin
exch
{
1 index/FID ne
2 index/Encoding ne and
{def}
{pop pop}
ifelse
}
forall
/FontReferenced exch def
/Encoding exch dup length array copy def
/FontName 1 index dup type/stringtype eq{cvn}if def dup
currentdict
end
definefont ct_VMDictPut
setglobal
}
ifelse
}bind def
/SetSubstituteStrategy
{
$SubstituteFont
begin
dup type/dicttype ne
{0 dict}
if
currentdict/$Strategies known
{
exch $Strategies exch
2 copy known
{
get
2 copy maxlength exch maxlength add dict
begin
{def}forall
{def}forall
currentdict
dup/$Init known
{dup/$Init get exec}
if
end
/$Strategy exch def
}
{pop pop pop}
ifelse
}
{pop pop}
ifelse
end
}bind def
/scff
{
$SubstituteFont
begin
dup type/stringtype eq
{dup length exch}
{null}
ifelse
/$sname exch def
/$slen exch def
/$inVMIndex
$sname null eq
{
1 index $str cvs
dup length $slen sub $slen getinterval cvn
}
{$sname}
ifelse def
end
{findfont}
@Stopped
{
dup length 8 add string exch
1 index 0(BadFont:)putinterval
1 index exch 8 exch dup length string cvs putinterval cvn
{findfont}
@Stopped
{pop/Courier findfont}
if
}
if
$SubstituteFont
begin
/$sname null def
/$slen 0 def
/$inVMIndex null def
end
}bind def
/isWidthsOnlyFont
{
dup/WidthsOnly known
{pop pop true}
{
dup/FDepVector known
{/FDepVector get{isWidthsOnlyFont dup{exit}if}forall}
{
dup/FDArray known
{/FDArray get{isWidthsOnlyFont dup{exit}if}forall}
{pop}
ifelse
}
ifelse
}
ifelse
}bind def
/ct_StyleDicts 4 dict dup begin
/Adobe-Japan1 4 dict dup begin
Level2?
{
/Serif
/HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiMin-W3}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiMin-W3/CIDFont resourcestatus
{pop pop/HeiseiMin-W3}
{/Ryumin-Light}
ifelse
}
{/Ryumin-Light}
ifelse
}
ifelse
def
/SansSerif
/HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiKakuGo-W5}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiKakuGo-W5/CIDFont resourcestatus
{pop pop/HeiseiKakuGo-W5}
{/GothicBBB-Medium}
ifelse
}
{/GothicBBB-Medium}
ifelse
}
ifelse
def
/HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiMaruGo-W4}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiMaruGo-W4/CIDFont resourcestatus
{pop pop/HeiseiMaruGo-W4}
{
/Jun101-Light-RKSJ-H/Font resourcestatus
{pop pop/Jun101-Light}
{SansSerif}
ifelse
}
ifelse
}
{
/Jun101-Light-RKSJ-H/Font resourcestatus
{pop pop/Jun101-Light}
{SansSerif}
ifelse
}
ifelse
}
ifelse
/RoundSansSerif exch def
/Default Serif def
}
{
/Serif/Ryumin-Light def
/SansSerif/GothicBBB-Medium def
{
(fonts/Jun101-Light-83pv-RKSJ-H)status
}stopped
{pop}{
{pop pop pop pop/Jun101-Light}
{SansSerif}
ifelse
/RoundSansSerif exch def
}ifelse
/Default Serif def
}
ifelse
end
def
/Adobe-Korea1 4 dict dup begin
/Serif/HYSMyeongJo-Medium def
/SansSerif/HYGoThic-Medium def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
/Adobe-GB1 4 dict dup begin
/Serif/STSong-Light def
/SansSerif/STHeiti-Regular def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
/Adobe-CNS1 4 dict dup begin
/Serif/MKai-Medium def
/SansSerif/MHei-Medium def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
end
def
Level2?{currentglobal true setglobal}if
/ct_BoldRomanWidthProc
{
stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth
0 0
}bind def
/ct_Type0WidthProc
{
dup stringwidth 0 0 moveto
2 index true charpath pathbbox
0 -1
7 index 2 div .88
setcachedevice2
pop
0 0
}bind def
/ct_Type0WMode1WidthProc
{
dup stringwidth
pop 2 div neg -0.88
2 copy
moveto
0 -1
5 -1 roll true charpath pathbbox
setcachedevice
}bind def
/cHexEncoding
[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
/ct_BoldBaseFont
11 dict begin
/FontType 3 def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/Encoding cHexEncoding def
/_setwidthProc/ct_BoldRomanWidthProc load def
/_bcstr1 1 string def
/BuildChar
{
exch begin
_basefont setfont
_bcstr1 dup 0 4 -1 roll put
dup
_setwidthProc
3 copy
moveto
show
_basefonto setfont
moveto
show
end
}bind def
currentdict
end
def
systemdict/composefont known
{
/ct_DefineIdentity-H
{
/Identity-H/CMap resourcestatus
{
pop pop
}
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry(Adobe)def
/Ordering(Identity)def
/Supplement 0 def
end def
/CMapName/Identity-H def
/CMapVersion 1.000 def
/CMapType 1 def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
}
def
/ct_BoldBaseCIDFont
11 dict begin
/CIDFontType 1 def
/CIDFontName/ct_BoldBaseCIDFont def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/_setwidthProc/ct_Type0WidthProc load def
/_bcstr2 2 string def
/BuildGlyph
{
exch begin
_basefont setfont
_bcstr2 1 2 index 256 mod put
_bcstr2 0 3 -1 roll 256 idiv put
_bcstr2 dup _setwidthProc
3 copy
moveto
show
_basefonto setfont
moveto
show
end
}bind def
currentdict
end
def
}if
Level2?{setglobal}if
/ct_CopyFont{
{
1 index/FID ne 2 index/UniqueID ne and
{def}{pop pop}ifelse
}forall
}bind def
/ct_Type0CopyFont
{
exch
dup length dict
begin
ct_CopyFont
[
exch
FDepVector
{
dup/FontType get 0 eq
{
1 index ct_Type0CopyFont
/_ctType0 exch definefont
}
{
/_ctBaseFont exch
2 index exec
}
ifelse
exch
}
forall
pop
]
/FDepVector exch def
currentdict
end
}bind def
/ct_MakeBoldFont
{
dup/ct_SyntheticBold known
{
dup length 3 add dict begin
ct_CopyFont
/ct_StrokeWidth .03 0 FontMatrix idtransform pop def
/ct_SyntheticBold true def
currentdict
end
definefont
}
{
dup dup length 3 add dict
begin
ct_CopyFont
/PaintType 2 def
/StrokeWidth .03 0 FontMatrix idtransform pop def
/dummybold currentdict
end
definefont
dup/FontType get dup 9 ge exch 11 le and
{
ct_BoldBaseCIDFont
dup length 3 add dict copy begin
dup/CIDSystemInfo get/CIDSystemInfo exch def
ct_DefineIdentity-H
/_Type0Identity/Identity-H 3 -1 roll[exch]composefont
/_basefont exch def
/_Type0Identity/Identity-H 3 -1 roll[exch]composefont
/_basefonto exch def
currentdict
end
/CIDFont defineresource
}
{
ct_BoldBaseFont
dup length 3 add dict copy begin
/_basefont exch def
/_basefonto exch def
currentdict
end
definefont
}
ifelse
}
ifelse
}bind def
/ct_MakeBold{
1 index
1 index
findfont
currentglobal 5 1 roll
dup gcheck setglobal
dup
/FontType get 0 eq
{
dup/WMode known{dup/WMode get 1 eq}{false}ifelse
version length 4 ge
and
{version 0 4 getinterval cvi 2015 ge}
{true}
ifelse
{/ct_Type0WidthProc}
{/ct_Type0WMode1WidthProc}
ifelse
ct_BoldBaseFont/_setwidthProc 3 -1 roll load put
{ct_MakeBoldFont}ct_Type0CopyFont definefont
}
{
dup/_fauxfont known not 1 index/SubstMaster known not and
{
ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put
ct_MakeBoldFont
}
{
2 index 2 index eq
{exch pop }
{
dup length dict begin
ct_CopyFont
currentdict
end
definefont
}
ifelse
}
ifelse
}
ifelse
pop pop pop
setglobal
}bind def
/?str1 256 string def
/?set
{
$SubstituteFont
begin
/$substituteFound false def
/$fontname 1 index def
/$doSmartSub false def
end
dup
findfont
$SubstituteFont
begin
$substituteFound
{false}
{
dup/FontName known
{
dup/FontName get $fontname eq
1 index/DistillerFauxFont known not and
/currentdistillerparams where
{pop false 2 index isWidthsOnlyFont not and}
if
}
{false}
ifelse
}
ifelse
exch pop
/$doSmartSub true def
end
{
5 1 roll pop pop pop pop
findfont
}
{
1 index
findfont
dup/FontType get 3 eq
{
6 1 roll pop pop pop pop pop false
}
{pop true}
ifelse
{
$SubstituteFont
begin
pop pop
/$styleArray 1 index def
/$regOrdering 2 index def
pop pop
0 1 $styleArray length 1 sub
{
$styleArray exch get
ct_StyleDicts $regOrdering
2 copy known
{
get
exch 2 copy known not
{pop/Default}
if
get
dup type/nametype eq
{
?str1 cvs length dup 1 add exch
?str1 exch(-)putinterval
exch dup length exch ?str1 exch 3 index exch putinterval
add ?str1 exch 0 exch getinterval cvn
}
{
pop pop/Unknown
}
ifelse
}
{
pop pop pop pop/Unknown
}
ifelse
}
for
end
findfont
}if
}
ifelse
currentglobal false setglobal 3 1 roll
null copyfont definefont pop
setglobal
}bind def
setpacking
userdict/$SubstituteFont 25 dict put
1 dict
begin
/SubstituteFont
dup $error exch 2 copy known
{get}
{pop pop{pop/Courier}bind}
ifelse def
/currentdistillerparams where dup
{
pop pop
currentdistillerparams/CannotEmbedFontPolicy 2 copy known
{get/Error eq}
{pop pop false}
ifelse
}
if not
{
countdictstack array dictstack 0 get
begin
userdict
begin
$SubstituteFont
begin
/$str 128 string def
/$fontpat 128 string def
/$slen 0 def
/$sname null def
/$match false def
/$fontname null def
/$substituteFound false def
/$inVMIndex null def
/$doSmartSub true def
/$depth 0 def
/$fontname null def
/$italicangle 26.5 def
/$dstack null def
/$Strategies 10 dict dup
begin
/$Type3Underprint
{
currentglobal exch false setglobal
11 dict
begin
/UseFont exch
$WMode 0 ne
{
dup length dict copy
dup/WMode $WMode put
/UseFont exch definefont
}
if def
/FontName $fontname dup type/stringtype eq{cvn}if def
/FontType 3 def
/FontMatrix[.001 0 0 .001 0 0]def
/Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def
/FontBBox[0 0 0 0]def
/CCInfo 7 dict dup
begin
/cc null def
/x 0 def
/y 0 def
end def
/BuildChar
{
exch
begin
CCInfo
begin
1 string dup 0 3 index put exch pop
/cc exch def
UseFont 1000 scalefont setfont
cc stringwidth/y exch def/x exch def
x y setcharwidth
$SubstituteFont/$Strategy get/$Underprint get exec
0 0 moveto cc show
x y moveto
end
end
}bind def
currentdict
end
exch setglobal
}bind def
/$GetaTint
2 dict dup
begin
/$BuildFont
{
dup/WMode known
{dup/WMode get}
{0}
ifelse
/$WMode exch def
$fontname exch
dup/FontName known
{
dup/FontName get
dup type/stringtype eq{cvn}if
}
{/unnamedfont}
ifelse
exch
Adobe_CoolType_Data/InVMDeepCopiedFonts get
1 index/FontName get known
{
pop
Adobe_CoolType_Data/InVMDeepCopiedFonts get
1 index get
null copyfont
}
{$deepcopyfont}
ifelse
exch 1 index exch/FontBasedOn exch put
dup/FontName $fontname dup type/stringtype eq{cvn}if put
definefont
Adobe_CoolType_Data/InVMDeepCopiedFonts get
begin
dup/FontBasedOn get 1 index def
end
}bind def
/$Underprint
{
gsave
x abs y abs gt
{/y 1000 def}
{/x -1000 def 500 120 translate}
ifelse
Level2?
{
[/Separation(All)/DeviceCMYK{0 0 0 1 pop}]
setcolorspace
}
{0 setgray}
ifelse
10 setlinewidth
x .8 mul
[7 3]
{
y mul 8 div 120 sub x 10 div exch moveto
0 y 4 div neg rlineto
dup 0 rlineto
0 y 4 div rlineto
closepath
gsave
Level2?
{.2 setcolor}
{.8 setgray}
ifelse
fill grestore
stroke
}
forall
pop
grestore
}bind def
end def
/$Oblique
1 dict dup
begin
/$BuildFont
{
currentglobal exch dup gcheck setglobal
null copyfont
begin
/FontBasedOn
currentdict/FontName known
{
FontName
dup type/stringtype eq{cvn}if
}
{/unnamedfont}
ifelse
def
/FontName $fontname dup type/stringtype eq{cvn}if def
/currentdistillerparams where
{pop}
{
/FontInfo currentdict/FontInfo known
{FontInfo null copyfont}
{2 dict}
ifelse
dup
begin
/ItalicAngle $italicangle def
/FontMatrix FontMatrix
[1 0 ItalicAngle dup sin exch cos div 1 0 0]
matrix concatmatrix readonly
end
4 2 roll def
def
}
ifelse
FontName currentdict
end
definefont
exch setglobal
}bind def
end def
/$None
1 dict dup
begin
/$BuildFont{}bind def
end def
end def
/$Oblique SetSubstituteStrategy
/$findfontByEnum
{
dup type/stringtype eq{cvn}if
dup/$fontname exch def
$sname null eq
{$str cvs dup length $slen sub $slen getinterval}
{pop $sname}
ifelse
$fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval
/$match false def
$SubstituteFont/$dstack countdictstack array dictstack put
mark
{
$fontpat 0 $slen 7 add getinterval
{/$match exch def exit}
$str filenameforall
}
stopped
{
cleardictstack
currentdict
true
$SubstituteFont/$dstack get
{
exch
{
1 index eq
{pop false}
{true}
ifelse
}
{begin false}
ifelse
}
forall
pop
}
if
cleartomark
/$slen 0 def
$match false ne
{$match(fonts/)anchorsearch pop pop cvn}
{/Courier}
ifelse
}bind def
/$ROS 1 dict dup
begin
/Adobe 4 dict dup
begin
/Japan1 [/Ryumin-Light/HeiseiMin-W3
/GothicBBB-Medium/HeiseiKakuGo-W5
/HeiseiMaruGo-W4/Jun101-Light]def
/Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def
/GB1 [/STSong-Light/STHeiti-Regular]def
/CNS1 [/MKai-Medium/MHei-Medium]def
end def
end def
/$cmapname null def
/$deepcopyfont
{
dup/FontType get 0 eq
{
1 dict dup/FontName/copied put copyfont
begin
/FDepVector FDepVector copyarray
0 1 2 index length 1 sub
{
2 copy get $deepcopyfont
dup/FontName/copied put
/copied exch definefont
3 copy put pop pop
}
for
def
currentdict
end
}
{$Strategies/$Type3Underprint get exec}
ifelse
}bind def
/$buildfontname
{
dup/CIDFont findresource/CIDSystemInfo get
begin
Registry length Ordering length Supplement 8 string cvs
3 copy length 2 add add add string
dup 5 1 roll dup 0 Registry putinterval
dup 4 index(-)putinterval
dup 4 index 1 add Ordering putinterval
4 2 roll add 1 add 2 copy(-)putinterval
end
1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch
anchorsearch
{pop pop 3 2 roll putinterval cvn/$cmapname exch def}
{pop pop pop pop pop}
ifelse
length
$str 1 index(-)putinterval 1 add
$str 1 index $cmapname $fontpat cvs putinterval
$cmapname length add
$str exch 0 exch getinterval cvn
}bind def
/$findfontByROS
{
/$fontname exch def
$ROS Registry 2 copy known
{
get Ordering 2 copy known
{get}
{pop pop[]}
ifelse
}
{pop pop[]}
ifelse
false exch
{
dup/CIDFont resourcestatus
{
pop pop
save
1 index/CIDFont findresource
dup/WidthsOnly known
{dup/WidthsOnly get}
{false}
ifelse
exch pop
exch restore
{pop}
{exch pop true exit}
ifelse
}
{pop}
ifelse
}
forall
{$str cvs $buildfontname}
{
false(*)
{
save exch
dup/CIDFont findresource
dup/WidthsOnly known
{dup/WidthsOnly get not}
{true}
ifelse
exch/CIDSystemInfo get
dup/Registry get Registry eq
exch/Ordering get Ordering eq and and
{exch restore exch pop true exit}
{pop restore}
ifelse
}
$str/CIDFont resourceforall
{$buildfontname}
{$fontname $findfontByEnum}
ifelse
}
ifelse
}bind def
end
end
currentdict/$error known currentdict/languagelevel known and dup
{pop $error/SubstituteFont known}
if
dup
{$error}
{Adobe_CoolType_Core}
ifelse
begin
{
/SubstituteFont
/CMap/Category resourcestatus
{
pop pop
{
$SubstituteFont
begin
/$substituteFound true def
dup length $slen gt
$sname null ne or
$slen 0 gt and
{
$sname null eq
{dup $str cvs dup length $slen sub $slen getinterval cvn}
{$sname}
ifelse
Adobe_CoolType_Data/InVMFontsByCMap get
1 index 2 copy known
{
get
false exch
{
pop
currentglobal
{
GlobalFontDirectory 1 index known
{exch pop true exit}
{pop}
ifelse
}
{
FontDirectory 1 index known
{exch pop true exit}
{
GlobalFontDirectory 1 index known
{exch pop true exit}
{pop}
ifelse
}
ifelse
}
ifelse
}
forall
}
{pop pop false}
ifelse
{
exch pop exch pop
}
{
dup/CMap resourcestatus
{
pop pop
dup/$cmapname exch def
/CMap findresource/CIDSystemInfo get{def}forall
$findfontByROS
}
{
128 string cvs
dup(-)search
{
3 1 roll search
{
3 1 roll pop
{dup cvi}
stopped
{pop pop pop pop pop $findfontByEnum}
{
4 2 roll pop pop
exch length
exch
2 index length
2 index
sub
exch 1 sub -1 0
{
$str cvs dup length
4 index
0
4 index
4 3 roll add
getinterval
exch 1 index exch 3 index exch
putinterval
dup/CMap resourcestatus
{
pop pop
4 1 roll pop pop pop
dup/$cmapname exch def
/CMap findresource/CIDSystemInfo get{def}forall
$findfontByROS
true exit
}
{pop}
ifelse
}
for
dup type/booleantype eq
{pop}
{pop pop pop $findfontByEnum}
ifelse
}
ifelse
}
{pop pop pop $findfontByEnum}
ifelse
}
{pop pop $findfontByEnum}
ifelse
}
ifelse
}
ifelse
}
{//SubstituteFont exec}
ifelse
/$slen 0 def
end
}
}
{
{
$SubstituteFont
begin
/$substituteFound true def
dup length $slen gt
$sname null ne or
$slen 0 gt and
{$findfontByEnum}
{//SubstituteFont exec}
ifelse
end
}
}
ifelse
bind readonly def
Adobe_CoolType_Core/scfindfont/systemfindfont load put
}
{
/scfindfont
{
$SubstituteFont
begin
dup systemfindfont
dup/FontName known
{dup/FontName get dup 3 index ne}
{/noname true}
ifelse
dup
{
/$origfontnamefound 2 index def
/$origfontname 4 index def/$substituteFound true def
}
if
exch pop
{
$slen 0 gt
$sname null ne
3 index length $slen gt or and
{
pop dup $findfontByEnum findfont
dup maxlength 1 add dict
begin
{1 index/FID eq{pop pop}{def}ifelse}
forall
currentdict
end
definefont
dup/FontName known{dup/FontName get}{null}ifelse
$origfontnamefound ne
{
$origfontname $str cvs print
( substitution revised, using )print
dup/FontName known
{dup/FontName get}{(unspecified font)}
ifelse
$str cvs print(.\n)print
}
if
}
{exch pop}
ifelse
}
{exch pop}
ifelse
end
}bind def
}
ifelse
end
end
Adobe_CoolType_Core_Defined not
{
Adobe_CoolType_Core/findfont
{
$SubstituteFont
begin
$depth 0 eq
{
/$fontname 1 index dup type/stringtype ne{$str cvs}if def
/$substituteFound false def
}
if
/$depth $depth 1 add def
end
scfindfont
$SubstituteFont
begin
/$depth $depth 1 sub def
$substituteFound $depth 0 eq and
{
$inVMIndex null ne
{dup $inVMIndex $AddInVMFont}
if
$doSmartSub
{
currentdict/$Strategy known
{$Strategy/$BuildFont get exec}
if
}
if
}
if
end
}bind put
}
if
}
if
end
/$AddInVMFont
{
exch/FontName 2 copy known
{
get
1 dict dup begin exch 1 index gcheck def end exch
Adobe_CoolType_Data/InVMFontsByCMap get exch
$DictAdd
}
{pop pop pop}
ifelse
}bind def
/$DictAdd
{
2 copy known not
{2 copy 4 index length dict put}
if
Level2? not
{
2 copy get dup maxlength exch length 4 index length add lt
2 copy get dup length 4 index length add exch maxlength 1 index lt
{
2 mul dict
begin
2 copy get{forall}def
2 copy currentdict put
end
}
{pop}
ifelse
}
if
get
begin
{def}
forall
end
}bind def
end
end
%%EndResource
currentglobal true setglobal
%%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
%%Copyright: Copyright 1987-2006 Adobe Systems Incorporated.
%%Version: 1.23 0
systemdict/languagelevel known dup
{currentglobal false setglobal}
{false}
ifelse
exch
userdict/Adobe_CoolType_Utility 2 copy known
{2 copy get dup maxlength 27 add dict copy}
{27 dict}
ifelse put
Adobe_CoolType_Utility
begin
/@eexecStartData
<BAB431EA07F209EB8C4348311481D9D3F76E3D15246555577D87BC510ED54E
118C39697FA9F6DB58128E60EB8A12FA24D7CDD2FA94D221FA9EC8DA3E5E6A1C
4ACECC8C2D39C54E7C946031DD156C3A6B4A09AD29E1867A>def
/@recognizeCIDFont null def
/ct_Level2? exch def
/ct_Clone? 1183615869 internaldict dup
/CCRun known not
exch/eCCRun known not
ct_Level2? and or def
ct_Level2?
{globaldict begin currentglobal true setglobal}
if
/ct_AddStdCIDMap
ct_Level2?
{{
mark
Adobe_CoolType_Utility/@recognizeCIDFont currentdict put
{
((Hex)57 StartData
0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0
7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60
d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8
cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec
}
stopped
{
cleartomark
Adobe_CoolType_Utility/@recognizeCIDFont get
countdictstack dup array dictstack
exch 1 sub -1 0
{
2 copy get 3 index eq
{1 index length exch sub 1 sub{end}repeat exit}
{pop}
ifelse
}
for
pop pop
Adobe_CoolType_Utility/@eexecStartData get eexec
}
{cleartomark}
ifelse
}}
{{
Adobe_CoolType_Utility/@eexecStartData get eexec
}}
ifelse bind def
userdict/cid_extensions known
dup{cid_extensions/cid_UpdateDB known and}if
{
cid_extensions
begin
/cid_GetCIDSystemInfo
{
1 index type/stringtype eq
{exch cvn exch}
if
cid_extensions
begin
dup load 2 index known
{
2 copy
cid_GetStatusInfo
dup null ne
{
1 index load
3 index get
dup null eq
{pop pop cid_UpdateDB}
{
exch
1 index/Created get eq
{exch pop exch pop}
{pop cid_UpdateDB}
ifelse
}
ifelse
}
{pop cid_UpdateDB}
ifelse
}
{cid_UpdateDB}
ifelse
end
}bind def
end
}
if
ct_Level2?
{end setglobal}
if
/ct_UseNativeCapability? systemdict/composefont known def
/ct_MakeOCF 35 dict def
/ct_Vars 25 dict def
/ct_GlyphDirProcs 6 dict def
/ct_BuildCharDict 15 dict dup
begin
/charcode 2 string def
/dst_string 1500 string def
/nullstring()def
/usewidths? true def
end def
ct_Level2?{setglobal}{pop}ifelse
ct_GlyphDirProcs
begin
/GetGlyphDirectory
{
systemdict/languagelevel known
{pop/CIDFont findresource/GlyphDirectory get}
{
1 index/CIDFont findresource/GlyphDirectory
get dup type/dicttype eq
{
dup dup maxlength exch length sub 2 index lt
{
dup length 2 index add dict copy 2 index
/CIDFont findresource/GlyphDirectory 2 index put
}
if
}
if
exch pop exch pop
}
ifelse
+
}def
/+
{
systemdict/languagelevel known
{
currentglobal false setglobal
3 dict begin
/vm exch def
}
{1 dict begin}
ifelse
/$ exch def
systemdict/languagelevel known
{
vm setglobal
/gvm currentglobal def
$ gcheck setglobal
}
if
?{$ begin}if
}def
/?{$ type/dicttype eq}def
/|{
userdict/Adobe_CoolType_Data known
{
Adobe_CoolType_Data/AddWidths? known
{
currentdict Adobe_CoolType_Data
begin
begin
AddWidths?
{
Adobe_CoolType_Data/CC 3 index put
?{def}{$ 3 1 roll put}ifelse
CC charcode exch 1 index 0 2 index 256 idiv put
1 index exch 1 exch 256 mod put
stringwidth 2 array astore
currentfont/Widths get exch CC exch put
}
{?{def}{$ 3 1 roll put}ifelse}
ifelse
end
end
}
{?{def}{$ 3 1 roll put}ifelse} ifelse
}
{?{def}{$ 3 1 roll put}ifelse}
ifelse
}def
/!
{
?{end}if
systemdict/languagelevel known
{gvm setglobal}
if
end
}def
/:{string currentfile exch readstring pop}executeonly def
end
ct_MakeOCF
begin
/ct_cHexEncoding
[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
/ct_CID_STR_SIZE 8000 def
/ct_mkocfStr100 100 string def
/ct_defaultFontMtx[.001 0 0 .001 0 0]def
/ct_1000Mtx[1000 0 0 1000 0 0]def
/ct_raise{exch cvx exch errordict exch get exec stop}bind def
/ct_reraise
{cvx $error/errorname get(Error: )print dup( )cvs print
errordict exch get exec stop
}bind def
/ct_cvnsi
{
1 index add 1 sub 1 exch 0 4 1 roll
{
2 index exch get
exch 8 bitshift
add
}
for
exch pop
}bind def
/ct_GetInterval
{
Adobe_CoolType_Utility/ct_BuildCharDict get
begin
/dst_index 0 def
dup dst_string length gt
{dup string/dst_string exch def}
if
1 index ct_CID_STR_SIZE idiv
/arrayIndex exch def
2 index arrayIndex get
2 index
arrayIndex ct_CID_STR_SIZE mul
sub
{
dup 3 index add 2 index length le
{
2 index getinterval
dst_string dst_index 2 index putinterval
length dst_index add/dst_index exch def
exit
}
{
1 index length 1 index sub
dup 4 1 roll
getinterval
dst_string dst_index 2 index putinterval
pop dup dst_index add/dst_index exch def
sub
/arrayIndex arrayIndex 1 add def
2 index dup length arrayIndex gt
{arrayIndex get}
{
pop
exit
}
ifelse
0
}
ifelse
}
loop
pop pop pop
dst_string 0 dst_index getinterval
end
}bind def
ct_Level2?
{
/ct_resourcestatus
currentglobal mark true setglobal
{/unknowninstancename/Category resourcestatus}
stopped
{cleartomark setglobal true}
{cleartomark currentglobal not exch setglobal}
ifelse
{
{
mark 3 1 roll/Category findresource
begin
ct_Vars/vm currentglobal put
({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
{cleartomark false}
{{3 2 roll pop true}{cleartomark false}ifelse}
ifelse
ct_Vars/vm get setglobal
end
}
}
{{resourcestatus}}
ifelse bind def
/CIDFont/Category ct_resourcestatus
{pop pop}
{
currentglobal true setglobal
/Generic/Category findresource
dup length dict copy
dup/InstanceType/dicttype put
/CIDFont exch/Category defineresource pop
setglobal
}
ifelse
ct_UseNativeCapability?
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry(Adobe)def
/Ordering(Identity)def
/Supplement 0 def
end def
/CMapName/Identity-H def
/CMapVersion 1.000 def
/CMapType 1 def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
if
}
{
/ct_Category 2 dict begin
/CIDFont 10 dict def
/ProcSet 2 dict def
currentdict
end
def
/defineresource
{
ct_Category 1 index 2 copy known
{
get
dup dup maxlength exch length eq
{
dup length 10 add dict copy
ct_Category 2 index 2 index put
}
if
3 index 3 index put
pop exch pop
}
{pop pop/defineresource/undefined ct_raise}
ifelse
}bind def
/findresource
{
ct_Category 1 index 2 copy known
{
get
2 index 2 copy known
{get 3 1 roll pop pop}
{pop pop/findresource/undefinedresource ct_raise}
ifelse
}
{pop pop/findresource/undefined ct_raise}
ifelse
}bind def
/resourcestatus
{
ct_Category 1 index 2 copy known
{
get
2 index known
exch pop exch pop
{
0 -1 true
}
{
false
}
ifelse
}
{pop pop/findresource/undefined ct_raise}
ifelse
}bind def
/ct_resourcestatus/resourcestatus load def
}
ifelse
/ct_CIDInit 2 dict
begin
/ct_cidfont_stream_init
{
{
dup(Binary)eq
{
pop
null
currentfile
ct_Level2?
{
{cid_BYTE_COUNT()/SubFileDecode filter}
stopped
{pop pop pop}
if
}
if
/readstring load
exit
}
if
dup(Hex)eq
{
pop
currentfile
ct_Level2?
{
{null exch/ASCIIHexDecode filter/readstring}
stopped
{pop exch pop(>)exch/readhexstring}
if
}
{(>)exch/readhexstring}
ifelse
load
exit
}
if
/StartData/typecheck ct_raise
}
loop
cid_BYTE_COUNT ct_CID_STR_SIZE le
{
2 copy cid_BYTE_COUNT string exch exec
pop
1 array dup
3 -1 roll
0 exch put
}
{
cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi
dup array exch 2 sub 0 exch 1 exch
{
2 copy
5 index
ct_CID_STR_SIZE
string
6 index exec
pop
put
pop
}
for
2 index
cid_BYTE_COUNT ct_CID_STR_SIZE mod string
3 index exec
pop
1 index exch
1 index length 1 sub
exch put
}
ifelse
cid_CIDFONT exch/GlyphData exch put
2 index null eq
{
pop pop pop
}
{
pop/readstring load
1 string exch
{
3 copy exec
pop
dup length 0 eq
{
pop pop pop pop pop
true exit
}
if
4 index
eq
{
pop pop pop pop
false exit
}
if
}
loop
pop
}
ifelse
}bind def
/StartData
{
mark
{
currentdict
dup/FDArray get 0 get/FontMatrix get
0 get 0.001 eq
{
dup/CDevProc known not
{
/CDevProc 1183615869 internaldict/stdCDevProc 2 copy known
{get}
{
pop pop
{pop pop pop pop pop 0 -1000 7 index 2 div 880}
}
ifelse
def
}
if
}
{
/CDevProc
{
pop pop pop pop pop
0
1 cid_temp/cid_CIDFONT get
/FDArray get 0 get
/FontMatrix get 0 get div
7 index 2 div
1 index 0.88 mul
}def
}
ifelse
/cid_temp 15 dict def
cid_temp
begin
/cid_CIDFONT exch def
3 copy pop
dup/cid_BYTE_COUNT exch def 0 gt
{
ct_cidfont_stream_init
FDArray
{
/Private get
dup/SubrMapOffset known
{
begin
/Subrs SubrCount array def
Subrs
SubrMapOffset
SubrCount
SDBytes
ct_Level2?
{
currentdict dup/SubrMapOffset undef
dup/SubrCount undef
/SDBytes undef
}
if
end
/cid_SD_BYTES exch def
/cid_SUBR_COUNT exch def
/cid_SUBR_MAP_OFFSET exch def
/cid_SUBRS exch def
cid_SUBR_COUNT 0 gt
{
GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval
0 cid_SD_BYTES ct_cvnsi
0 1 cid_SUBR_COUNT 1 sub
{
exch 1 index
1 add
cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add
GlyphData exch cid_SD_BYTES ct_GetInterval
0 cid_SD_BYTES ct_cvnsi
cid_SUBRS 4 2 roll
GlyphData exch
4 index
1 index
sub
ct_GetInterval
dup length string copy put
}
for
pop
}
if
}
{pop}
ifelse
}
forall
}
if
cleartomark pop pop
end
CIDFontName currentdict/CIDFont defineresource pop
end end
}
stopped
{cleartomark/StartData ct_reraise}
if
}bind def
currentdict
end def
/ct_saveCIDInit
{
/CIDInit/ProcSet ct_resourcestatus
{true}
{/CIDInitC/ProcSet ct_resourcestatus}
ifelse
{
pop pop
/CIDInit/ProcSet findresource
ct_UseNativeCapability?
{pop null}
{/CIDInit ct_CIDInit/ProcSet defineresource pop}
ifelse
}
{/CIDInit ct_CIDInit/ProcSet defineresource pop null}
ifelse
ct_Vars exch/ct_oldCIDInit exch put
}bind def
/ct_restoreCIDInit
{
ct_Vars/ct_oldCIDInit get dup null ne
{/CIDInit exch/ProcSet defineresource pop}
{pop}
ifelse
}bind def
/ct_BuildCharSetUp
{
1 index
begin
CIDFont
begin
Adobe_CoolType_Utility/ct_BuildCharDict get
begin
/ct_dfCharCode exch def
/ct_dfDict exch def
CIDFirstByte ct_dfCharCode add
dup CIDCount ge
{pop 0}
if
/cid exch def
{
GlyphDirectory cid 2 copy known
{get}
{pop pop nullstring}
ifelse
dup length FDBytes sub 0 gt
{
dup
FDBytes 0 ne
{0 FDBytes ct_cvnsi}
{pop 0}
ifelse
/fdIndex exch def
dup length FDBytes sub FDBytes exch getinterval
/charstring exch def
exit
}
{
pop
cid 0 eq
{/charstring nullstring def exit}
if
/cid 0 def
}
ifelse
}
loop
}def
/ct_SetCacheDevice
{
0 0 moveto
dup stringwidth
3 -1 roll
true charpath
pathbbox
0 -1000
7 index 2 div 880
setcachedevice2
0 0 moveto
}def
/ct_CloneSetCacheProc
{
1 eq
{
stringwidth
pop -2 div -880
0 -1000 setcharwidth
moveto
}
{
usewidths?
{
currentfont/Widths get cid
2 copy known
{get exch pop aload pop}
{pop pop stringwidth}
ifelse
}
{stringwidth}
ifelse
setcharwidth
0 0 moveto
}
ifelse
}def
/ct_Type3ShowCharString
{
ct_FDDict fdIndex 2 copy known
{get}
{
currentglobal 3 1 roll
1 index gcheck setglobal
ct_Type1FontTemplate dup maxlength dict copy
begin
FDArray fdIndex get
dup/FontMatrix 2 copy known
{get}
{pop pop ct_defaultFontMtx}
ifelse
/FontMatrix exch dup length array copy def
/Private get
/Private exch def
/Widths rootfont/Widths get def
/CharStrings 1 dict dup/.notdef
<d841272cf18f54fc13>dup length string copy put def
currentdict
end
/ct_Type1Font exch definefont
dup 5 1 roll put
setglobal
}
ifelse
dup/CharStrings get 1 index/Encoding get
ct_dfCharCode get charstring put
rootfont/WMode 2 copy known
{get}
{pop pop 0}
ifelse
exch
1000 scalefont setfont
ct_str1 0 ct_dfCharCode put
ct_str1 exch ct_dfSetCacheProc
ct_SyntheticBold
{
currentpoint
ct_str1 show
newpath
moveto
ct_str1 true charpath
ct_StrokeWidth setlinewidth
stroke
}
{ct_str1 show}
ifelse
}def
/ct_Type4ShowCharString
{
ct_dfDict ct_dfCharCode charstring
FDArray fdIndex get
dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not
{ct_1000Mtx matrix concatmatrix concat}
{pop}
ifelse
/Private get
Adobe_CoolType_Utility/ct_Level2? get not
{
ct_dfDict/Private
3 -1 roll
{put}
1183615869 internaldict/superexec get exec
}
if
1183615869 internaldict
Adobe_CoolType_Utility/ct_Level2? get
{1 index}
{3 index/Private get mark 6 1 roll}
ifelse
dup/RunInt known
{/RunInt get}
{pop/CCRun}
ifelse
get exec
Adobe_CoolType_Utility/ct_Level2? get not
{cleartomark}
if
}bind def
/ct_BuildCharIncremental
{
{
Adobe_CoolType_Utility/ct_MakeOCF get begin
ct_BuildCharSetUp
ct_ShowCharString
}
stopped
{stop}
if
end
end
end
end
}bind def
/BaseFontNameStr(BF00)def
/ct_Type1FontTemplate 14 dict
begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]def
/FontBBox [-250 -250 1250 1250]def
/Encoding ct_cHexEncoding def
/PaintType 0 def
currentdict
end def
/BaseFontTemplate 11 dict
begin
/FontMatrix [0.001 0 0 0.001 0 0]def
/FontBBox [-250 -250 1250 1250]def
/Encoding ct_cHexEncoding def
/BuildChar/ct_BuildCharIncremental load def
ct_Clone?
{
/FontType 3 def
/ct_ShowCharString/ct_Type3ShowCharString load def
/ct_dfSetCacheProc/ct_CloneSetCacheProc load def
/ct_SyntheticBold false def
/ct_StrokeWidth 1 def
}
{
/FontType 4 def
/Private 1 dict dup/lenIV 4 put def
/CharStrings 1 dict dup/.notdef<d841272cf18f54fc13>put def
/PaintType 0 def
/ct_ShowCharString/ct_Type4ShowCharString load def
}
ifelse
/ct_str1 1 string def
currentdict
end def
/BaseFontDictSize BaseFontTemplate length 5 add def
/ct_matrixeq
{
true 0 1 5
{
dup 4 index exch get exch 3 index exch get eq and
dup not
{exit}
if
}
for
exch pop exch pop
}bind def
/ct_makeocf
{
15 dict
begin
exch/WMode exch def
exch/FontName exch def
/FontType 0 def
/FMapType 2 def
dup/FontMatrix known
{dup/FontMatrix get/FontMatrix exch def}
{/FontMatrix matrix def}
ifelse
/bfCount 1 index/CIDCount get 256 idiv 1 add
dup 256 gt{pop 256}if def
/Encoding
256 array 0 1 bfCount 1 sub{2 copy dup put pop}for
bfCount 1 255{2 copy bfCount put pop}for
def
/FDepVector bfCount dup 256 lt{1 add}if array def
BaseFontTemplate BaseFontDictSize dict copy
begin
/CIDFont exch def
CIDFont/FontBBox known
{CIDFont/FontBBox get/FontBBox exch def}
if
CIDFont/CDevProc known
{CIDFont/CDevProc get/CDevProc exch def}
if
currentdict
end
BaseFontNameStr 3(0)putinterval
0 1 bfCount dup 256 eq{1 sub}if
{
FDepVector exch
2 index BaseFontDictSize dict copy
begin
dup/CIDFirstByte exch 256 mul def
FontType 3 eq
{/ct_FDDict 2 dict def}
if
currentdict
end
1 index 16
BaseFontNameStr 2 2 getinterval cvrs pop
BaseFontNameStr exch definefont
put
}
for
ct_Clone?
{/Widths 1 index/CIDFont get/GlyphDirectory get length dict def}
if
FontName
currentdict
end
definefont
ct_Clone?
{
gsave
dup 1000 scalefont setfont
ct_BuildCharDict
begin
/usewidths? false def
currentfont/Widths get
begin
exch/CIDFont get/GlyphDirectory get
{
pop
dup charcode exch 1 index 0 2 index 256 idiv put
1 index exch 1 exch 256 mod put
stringwidth 2 array astore def
}
forall
end
/usewidths? true def
end
grestore
}
{exch pop}
ifelse
}bind def
currentglobal true setglobal
/ct_ComposeFont
{
ct_UseNativeCapability?
{
2 index/CMap ct_resourcestatus
{pop pop exch pop}
{
/CIDInit/ProcSet findresource
begin
12 dict
begin
begincmap
/CMapName 3 index def
/CMapVersion 1.000 def
/CMapType 1 def
exch/WMode exch def
/CIDSystemInfo 3 dict dup
begin
/Registry(Adobe)def
/Ordering
CMapName ct_mkocfStr100 cvs
(Adobe-)search
{
pop pop
(-)search
{
dup length string copy
exch pop exch pop
}
{pop(Identity)}
ifelse
}
{pop (Identity)}
ifelse
def
/Supplement 0 def
end def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
composefont
}
{
3 2 roll pop
0 get/CIDFont findresource
ct_makeocf
}
ifelse
}bind def
setglobal
/ct_MakeIdentity
{
ct_UseNativeCapability?
{
1 index/CMap ct_resourcestatus
{pop pop}
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CMapName 2 index def
/CMapVersion 1.000 def
/CMapType 1 def
/CIDSystemInfo 3 dict dup
begin
/Registry(Adobe)def
/Ordering
CMapName ct_mkocfStr100 cvs
(Adobe-)search
{
pop pop
(-)search
{dup length string copy exch pop exch pop}
{pop(Identity)}
ifelse
}
{pop(Identity)}
ifelse
def
/Supplement 0 def
end def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
composefont
}
{
exch pop
0 get/CIDFont findresource
ct_makeocf
}
ifelse
}bind def
currentdict readonly pop
end
end
%%EndResource
setglobal
%%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0
%%Copyright: Copyright 1987-2004 Adobe Systems Incorporated.
%%Version: 1.0 0
userdict/ct_T42Dict 15 dict put
ct_T42Dict begin
/Is2015?
{
version
cvi
2015
ge
}bind def
/AllocGlyphStorage
{
Is2015?
{
pop
}
{
{string}forall
}ifelse
}bind def
/Type42DictBegin
{
25 dict begin
/FontName exch def
/CharStrings 256 dict
begin
/.notdef 0 def
currentdict
end def
/Encoding exch def
/PaintType 0 def
/FontType 42 def
/FontMatrix[1 0 0 1 0 0]def
4 array astore cvx/FontBBox exch def
/sfnts
}bind def
/Type42DictEnd
{
currentdict dup/FontName get exch definefont end
ct_T42Dict exch
dup/FontName get exch put
}bind def
/RD{string currentfile exch readstring pop}executeonly def
/PrepFor2015
{
Is2015?
{
/GlyphDirectory
16
dict def
sfnts 0 get
dup
2 index
(glyx)
putinterval
2 index
(locx)
putinterval
pop
pop
}
{
pop
pop
}ifelse
}bind def
/AddT42Char
{
Is2015?
{
/GlyphDirectory get
begin
def
end
pop
pop
}
{
/sfnts get
4 index
get
3 index
2 index
putinterval
pop
pop
pop
pop
}ifelse
}bind def
/T0AddT42Mtx2
{
/CIDFont findresource/Metrics2 get begin def end
}bind def
end
%%EndResource
currentglobal true setglobal
%%BeginFile: MMFauxFont.prc
%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated.
%%All Rights Reserved.
userdict /ct_EuroDict 10 dict put
ct_EuroDict begin
/ct_CopyFont
{
{ 1 index /FID ne {def} {pop pop} ifelse} forall
} def
/ct_GetGlyphOutline
{
gsave
initmatrix newpath
exch findfont dup
length 1 add dict
begin
ct_CopyFont
/Encoding Encoding dup length array copy
dup
4 -1 roll
0 exch put
def
currentdict
end
/ct_EuroFont exch definefont
1000 scalefont setfont
0 0 moveto
[
<00> stringwidth
<00> false charpath
pathbbox
[
{/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall
grestore
counttomark 8 add
}
def
/ct_MakeGlyphProc
{
] cvx
/ct_PSBuildGlyph cvx
] cvx
} def
/ct_PSBuildGlyph
{
gsave
8 -1 roll pop
7 1 roll
6 -2 roll ct_FontMatrix transform 6 2 roll
4 -2 roll ct_FontMatrix transform 4 2 roll
ct_FontMatrix transform
currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse
dup 9 1 roll
{
currentdict /StrokeWidth 2 copy known
{
get 2 div
0 ct_FontMatrix dtransform pop
5 1 roll
4 -1 roll 4 index sub
4 1 roll
3 -1 roll 4 index sub
3 1 roll
exch 4 index add exch
4 index add
5 -1 roll pop
}
{
pop pop
}
ifelse
}
if
setcachedevice
ct_FontMatrix concat
ct_PSPathOps begin
exec
end
{
currentdict /StrokeWidth 2 copy known
{ get }
{ pop pop 0 }
ifelse
setlinewidth stroke
}
{
fill
}
ifelse
grestore
} def
/ct_PSPathOps 4 dict dup begin
/m {moveto} def
/l {lineto} def
/c {curveto} def
/cp {closepath} def
end
def
/ct_matrix1000 [1000 0 0 1000 0 0] def
/ct_AddGlyphProc
{
2 index findfont dup length 4 add dict
begin
ct_CopyFont
/CharStrings CharStrings dup length 1 add dict copy
begin
3 1 roll def
currentdict
end
def
/ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def
/ct_PSBuildGlyph /ct_PSBuildGlyph load def
/ct_PSPathOps /ct_PSPathOps load def
currentdict
end
definefont pop
}
def
systemdict /languagelevel known
{
/ct_AddGlyphToPrinterFont {
2 copy
ct_GetGlyphOutline 3 add -1 roll restore
ct_MakeGlyphProc
ct_AddGlyphProc
} def
}
{
/ct_AddGlyphToPrinterFont {
pop pop restore
Adobe_CTFauxDict /$$$FONTNAME get
/Euro
Adobe_CTFauxDict /$$$SUBSTITUTEBASE get
ct_EuroDict exch get
ct_AddGlyphProc
} def
} ifelse
/AdobeSansMM
{
556 0 24 -19 541 703
{
541 628 m
510 669 442 703 354 703 c
201 703 117 607 101 444 c
50 444 l
25 372 l
97 372 l
97 301 l
49 301 l
24 229 l
103 229 l
124 67 209 -19 350 -19 c
435 -19 501 25 509 32 c
509 131 l
492 105 417 60 343 60 c
267 60 204 127 197 229 c
406 229 l
430 301 l
191 301 l
191 372 l
455 372 l
479 444 l
194 444 l
201 531 245 624 348 624 c
433 624 484 583 509 534 c
cp
556 0 m
}
ct_PSBuildGlyph
} def
/AdobeSerifMM
{
500 0 10 -12 484 692
{
347 298 m
171 298 l
170 310 170 322 170 335 c
170 362 l
362 362 l
374 403 l
172 403 l
184 580 244 642 308 642 c
380 642 434 574 457 457 c
481 462 l
474 691 l
449 691 l
433 670 429 657 410 657 c
394 657 360 692 299 692 c
204 692 94 604 73 403 c
22 403 l
10 362 l
70 362 l
69 352 69 341 69 330 c
69 319 69 308 70 298 c
22 298 l
10 257 l
73 257 l
97 57 216 -12 295 -12 c
364 -12 427 25 484 123 c
458 142 l
425 101 384 37 316 37 c
256 37 189 84 173 257 c
335 257 l
cp
500 0 m
}
ct_PSBuildGlyph
} def
end
%%EndFile
setglobal
Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end
%%BeginResource: procset Adobe_AGM_Image 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Image 71 dict dup begin put +/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def +/nd{ + null def +}bind def +/AGMIMG_&image nd +/AGMIMG_&colorimage nd +/AGMIMG_&imagemask nd +/AGMIMG_mbuf()def +/AGMIMG_ybuf()def +/AGMIMG_kbuf()def +/AGMIMG_c 0 def +/AGMIMG_m 0 def +/AGMIMG_y 0 def +/AGMIMG_k 0 def +/AGMIMG_tmp nd +/AGMIMG_imagestring0 nd +/AGMIMG_imagestring1 nd +/AGMIMG_imagestring2 nd +/AGMIMG_imagestring3 nd +/AGMIMG_imagestring4 nd +/AGMIMG_imagestring5 nd +/AGMIMG_cnt nd +/AGMIMG_fsave nd +/AGMIMG_colorAry nd +/AGMIMG_override nd +/AGMIMG_name nd +/AGMIMG_maskSource nd +/AGMIMG_flushfilters nd +/invert_image_samples nd +/knockout_image_samples nd +/img nd +/sepimg nd +/devnimg nd +/idximg nd +/ds +{ + Adobe_AGM_Core begin + Adobe_AGM_Image begin + /AGMIMG_&image systemdict/image get def + /AGMIMG_&imagemask systemdict/imagemask get def + /colorimage where{ + pop + /AGMIMG_&colorimage/colorimage ldf + }if + end + end +}def +/ps +{ + Adobe_AGM_Image begin + /AGMIMG_ccimage_exists{/customcolorimage where + { + pop + /Adobe_AGM_OnHost_Seps where + { + pop false + }{ + /Adobe_AGM_InRip_Seps where + { + pop false + }{ + true + }ifelse + }ifelse + }{ + false + }ifelse + }bdf + level2{ + /invert_image_samples + { + Adobe_AGM_Image/AGMIMG_tmp Decode length ddf + /Decode[Decode 1 get Decode 0 get]def + }def + /knockout_image_samples + { + Operator/imagemask ne{ + /Decode[1 1]def + }if + }def + }{ + /invert_image_samples + { + {1 exch sub}currenttransfer addprocs settransfer + }def + /knockout_image_samples + { + {pop 1}currenttransfer addprocs settransfer + }def + }ifelse + /img/imageormask ldf + /sepimg/sep_imageormask ldf + /devnimg/devn_imageormask ldf + /idximg/indexed_imageormask ldf + /_ctype 7 def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall +}def +/pt +{ + end +}def +/dt +{ +}def +/AGMIMG_flushfilters +{ + dup type/arraytype ne + {1 array astore}if + dup 0 get currentfile ne + {dup 0 get flushfile}if + { + dup type/filetype eq + { + dup status 1 index currentfile ne and + {closefile} + {pop} + ifelse + }{pop}ifelse + }forall +}def +/AGMIMG_init_common +{ + currentdict/T known{/ImageType/T ldf currentdict/T undef}if + currentdict/W known{/Width/W ldf currentdict/W undef}if + currentdict/H known{/Height/H ldf currentdict/H undef}if + currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if + currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if + currentdict/D known{/Decode/D ldf currentdict/D undef}if + currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if + currentdict/O known{ + /Operator/O load 1 eq{ + /imagemask + }{ + /O load 2 eq{ + /image + }{ + /colorimage + }ifelse + }ifelse + def + currentdict/O undef + }if + currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if + currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if + currentdict/I known{/Interpolate/I ldf currentdict/I undef}if + currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if + /DataSource load xcheck not{ + DataSource type/arraytype eq{ + DataSource 0 get type/filetype eq{ + /_Filters DataSource def + currentdict/MultipleDataSources known not{ + /DataSource DataSource dup length 1 sub get def + }if + }if + }if + currentdict/MultipleDataSources known not{ + /MultipleDataSources DataSource type/arraytype eq{ + DataSource length 1 gt + } + {false}ifelse def + }if + }if + /NComponents Decode length 2 div def + currentdict/SkipImageProc known not{/SkipImageProc{false}def}if +}bdf +/imageormask_sys +{ + begin + AGMIMG_init_common + save mark + level2{ + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + AGMIMG_&imagemask + }{ + BitsPerComponent ImageMatrix/DataSource load + AGMIMG_&image + }ifelse + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + cleartomark restore + end +}def +/overprint_plate +{ + currentoverprint{ + 0 get dup type/nametype eq{ + dup/DeviceGray eq{ + pop AGMCORE_black_plate not + }{ + /DeviceCMYK eq{ + AGMCORE_is_cmyk_sep not + }if + }ifelse + }{ + false exch + { + AGMOHS_sepink eq or + }forall + not + }ifelse + }{ + pop false + }ifelse +}def +/process_mask +{ + level3{ + dup begin + /ImageType 1 def + end + 4 dict begin + /DataDict exch def + /ImageType 3 def + /InterleaveType 3 def + /MaskDict 9 dict begin + /ImageType 1 def + /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def + /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def + /ImageMatrix[Width 0 0 Height neg 0 Height]def + /NComponents 1 def + /BitsPerComponent 1 def + /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def + /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def + currentdict end def + currentdict end + }if +}def +/use_mask +{ + dup/Mask known {dup/Mask get}{false}ifelse +}def +/imageormask +{ + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + } + { + save mark + level2 AGMCORE_host_sep not and{ + currentdict + Operator/imagemask eq DeviceN_PS2 not and{ + imagemask + }{ + AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ + [/Separation/Black/DeviceGray{}]setcolorspace + /Decode[Decode 1 get Decode 0 get]def + }if + use_mask{ + process_mask image + }{ + DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and + { + Names convert_to_process not{ + 2 dict begin + /imageDict xdf + /names_index 0 def + gsave + imageDict write_image_file{ + Names{ + dup(None)ne{ + [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace + Operator imageDict read_image_file + names_index 0 eq{true setoverprint}if + /names_index names_index 1 add def + }{ + pop + }ifelse + }forall + close_image_file + }if + grestore + end + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + /Adobe_AGM_OnHost_Seps where{ + pop imagemask + }{ + currentgray 1 ne{ + currentdict imageormask_sys + }{ + currentoverprint not{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }ifelse + }{ + BitsPerComponent ImageMatrix + MultipleDataSources{ + 0 1 NComponents 1 sub{ + DataSource exch get + }for + }{ + /DataSource load + }ifelse + Operator/colorimage eq{ + AGMCORE_host_sep{ + MultipleDataSources level2 or NComponents 4 eq and{ + AGMCORE_is_cmyk_sep{ + MultipleDataSources{ + /DataSource DataSource 0 get xcheck + { + [ + DataSource 0 get/exec cvx + DataSource 1 get/exec cvx + DataSource 2 get/exec cvx + DataSource 3 get/exec cvx + /AGMCORE_get_ink_data cvx + ]cvx + }{ + DataSource aload pop AGMCORE_get_ink_data + }ifelse def + }{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + /DataSource load + filter_cmyk 0()/SubFileDecode filter def + }ifelse + /Decode[Decode 0 get Decode 1 get]def + /MultipleDataSources false def + /NComponents 1 def + /Operator/image def + invert_image_samples + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }{ + MultipleDataSources NComponents AGMIMG_&colorimage + }ifelse + }{ + true NComponents colorimage + }ifelse + }{ + Operator/image eq{ + AGMCORE_host_sep{ + /DoImage true def + currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse + { + AGMCORE_black_plate not Operator/imagemask ne and{ + /DoImage false def + currentdict ignoreimagedata + }if + }if + 1 AGMCORE_&setgray + DoImage + {currentdict imageormask_sys}if + }{ + use_mask{ + process_mask image + }{ + image + }ifelse + }ifelse + }{ + Operator/knockout eq{ + pop pop pop pop pop + currentcolorspace overprint_plate not{ + knockout_unitsq + }if + }if + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/sep_imageormask +{ + /sep_colorspace_dict AGMCORE_gget begin + CSA map_csa + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_avoid_L2_sep_space{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + }if + AGMIMG_ccimage_exists + MappedCSA 0 get/DeviceCMYK eq and + currentdict/Components known and + Name()ne and + Name(All)ne and + Operator/image eq and + AGMCORE_producing_seps not and + level2 not and + { + Width Height BitsPerComponent ImageMatrix + [ + /DataSource load/exec cvx + { + 0 1 2 index length 1 sub{ + 1 index exch + 2 copy get 255 xor put + }for + }/exec cvx + ]cvx bind + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Name findcmykcustomcolor + customcolorimage + }{ + AGMCORE_producing_seps not{ + level2{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ + [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + currentdict imageormask + }{ + currentdict + Operator/imagemask eq{ + imageormask + }{ + sep_imageormask_lev1 + }ifelse + }ifelse + }{ + AGMCORE_host_sep{ + Operator/knockout eq{ + currentdict/ImageMatrix get concat + knockout_unitsq + }{ + currentgray 1 ne{ + AGMCORE_is_cmyk_sep Name(All)ne and{ + level2{ + Name AGMCORE_IsSeparationAProcessColor + { + Operator/imagemask eq{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor + }if + }{ + invert_image_samples + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + [/Separation Name[/DeviceGray] + { + sep_colorspace_proc AGMCORE_get_ink_data + 1 exch sub + }bind + ]AGMCORE_&setcolorspace + /sep_tint AGMCORE_gget AGMCORE_&setcolor + }if + }ifelse + currentdict imageormask_sys + }{ + currentdict + Operator/imagemask eq{ + imageormask_sys + }{ + sep_image_lev1_sep + }ifelse + }ifelse + }{ + Operator/imagemask ne{ + invert_image_samples + }if + currentdict imageormask_sys + }ifelse + }{ + currentoverprint not Name(All)eq or Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + currentcolorspace 0 get/Separation ne{ + [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + }if + currentoverprint + MappedCSA 0 get/DeviceCMYK eq and + Name AGMCORE_IsSeparationAProcessColor not and + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse + Name(All)ne and{ + imageormask_l2_overprint + }{ + currentdict imageormask + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end +}def +/colorSpaceElemCnt +{ + mark currentcolor counttomark dup 2 add 1 roll cleartomark +}bdf +/devn_sep_datasource +{ + 1 dict begin + /dataSource xdf + [ + 0 1 dataSource length 1 sub{ + dup currentdict/dataSource get/exch cvx/get cvx/exec cvx + /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx + }for + ]cvx bind + end +}bdf +/devn_alt_datasource +{ + 11 dict begin + /convProc xdf + /origcolorSpaceElemCnt xdf + /origMultipleDataSources xdf + /origBitsPerComponent xdf + /origDecode xdf + /origDataSource xdf + /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def + /DataSource origMultipleDataSources + { + [ + BitsPerComponent 8 idiv origDecode length 2 idiv mul string + 0 1 origDecode length 2 idiv 1 sub + { + dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch + origDataSource exch get 0()/SubFileDecode filter + BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx + }for + ]bind cvx + }{origDataSource}ifelse 0()/SubFileDecode filter def + [ + origcolorSpaceElemCnt string + 0 2 origDecode length 2 sub + { + dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div + 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx + }for + /convProc load/exec cvx + origcolorSpaceElemCnt 1 sub -1 0 + { + /dup cvx 2/add cvx/index cvx + 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx + }for + ]bind cvx 0()/SubFileDecode filter + end +}bdf +/devn_imageormask +{ + /devicen_colorspace_dict AGMCORE_gget begin + CSA map_csa + 2 dict begin + dup + /srcDataStrs[3 -1 roll begin + AGMIMG_init_common + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi + { + dup 65535 gt{1 add 2 div cvi}{exit}ifelse + }loop + string + }repeat + end]def + /dstDataStr srcDataStrs 0 get length string def + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_producing_seps not{ + level3 not{ + Operator/imagemask ne{ + /DataSource[[ + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def + /MultipleDataSources true def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + }if + }if + currentdict imageormask + }{ + AGMCORE_host_sep{ + Names convert_to_process{ + CSA get_csa_by_name 0 get/DeviceCMYK eq{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + filter_cmyk 0()/SubFileDecode filter def + /MultipleDataSources false def + /Decode[1 0]def + /DeviceGray setcolorspace + currentdict imageormask_sys + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate{ + /DataSource + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + /MultipleDataSources false def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + currentdict imageormask_sys + }{ + gsave + knockout_unitsq + grestore + currentdict consumeimagedata + }ifelse + }ifelse + } + { + /devicen_colorspace_dict AGMCORE_gget/names_index known{ + Operator/imagemask ne{ + MultipleDataSources{ + /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def + /MultipleDataSources false def + }{ + /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def + }ifelse + invert_image_samples + }if + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + currentdict imageormask + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end + end +}def +/imageormask_l2_overprint +{ + currentdict + currentcmykcolor add add add 0 eq{ + currentdict consumeimagedata + }{ + level3{ + currentcmykcolor + /AGMIMG_k xdf + /AGMIMG_y xdf + /AGMIMG_m xdf + /AGMIMG_c xdf + Operator/imagemask eq{ + [/DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ]/DeviceCMYK{}]setcolorspace + AGMIMG_c 0 ne{AGMIMG_c}if + AGMIMG_m 0 ne{AGMIMG_m}if + AGMIMG_y 0 ne{AGMIMG_y}if + AGMIMG_k 0 ne{AGMIMG_k}if + setcolor + }{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + [/Indexed + [ + /DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ] + /DeviceCMYK{ + AGMIMG_k 0 eq{0}if + AGMIMG_y 0 eq{0 exch}if + AGMIMG_m 0 eq{0 3 1 roll}if + AGMIMG_c 0 eq{0 4 1 roll}if + } + ] + 255 + { + 255 div + mark exch + dup dup dup + AGMIMG_k 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_y 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_m 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_c 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + counttomark 1 add -1 roll pop + } + ]setcolorspace + }ifelse + imageormask_sys + }{ + write_image_file{ + currentcmykcolor + 0 ne{ + [/Separation/Black/DeviceGray{}]setcolorspace + gsave + /Black + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Yellow/DeviceGray{}]setcolorspace + gsave + /Yellow + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Magenta/DeviceGray{}]setcolorspace + gsave + /Magenta + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Cyan/DeviceGray{}]setcolorspace + gsave + /Cyan + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + close_image_file + }{ + imageormask + }ifelse + }ifelse + }ifelse +}def +/indexed_imageormask +{ + begin + AGMIMG_init_common + save mark + currentdict + AGMCORE_host_sep{ + Operator/knockout eq{ + /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ + /CSA get get_csa_by_name + }{ + /Names get + }ifelse + overprint_plate not{ + knockout_unitsq + }if + }{ + Indexed_DeviceN{ + /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ + indexed_image_lev2_sep + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }{ + AGMCORE_is_cmyk_sep{ + Operator/imagemask eq{ + imageormask_sys + }{ + level2{ + indexed_image_lev2_sep + }{ + indexed_image_lev1_sep + }ifelse + }ifelse + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + level2{ + Indexed_DeviceN{ + /indexed_colorspace_dict AGMCORE_gget begin + }{ + /indexed_colorspace_dict AGMCORE_gget dup null ne + { + begin + currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse + get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and + AGMCORE_in_rip_sep and{ + [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] + setcolorspace + }if + end + } + {pop}ifelse + }ifelse + imageormask + Indexed_DeviceN{ + end + }if + }{ + Operator/imagemask eq{ + imageormask + }{ + indexed_imageormask_lev1 + }ifelse + }ifelse + }ifelse + cleartomark restore + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/indexed_image_lev2_sep +{ + /indexed_colorspace_dict AGMCORE_gget begin + begin + Indexed_DeviceN not{ + currentcolorspace + dup 1/DeviceGray put + dup 3 + currentcolorspace 2 get 1 add string + 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub + { + dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put + }for + put setcolorspace + }if + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + end end +}def + /OPIimage + { + dup type/dicttype ne{ + 10 dict begin + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /ImageType 1 def + /Decode[0 1 def] + currentdict + end + }if + dup begin + /NComponents 1 cdndf + /MultipleDataSources false cdndf + /SkipImageProc{false}cdndf + /Decode[ + 0 + currentcolorspace 0 get/Indexed eq{ + 2 BitsPerComponent exp 1 sub + }{ + 1 + }ifelse + ]cdndf + /Operator/image cdndf + end + /sep_colorspace_dict AGMCORE_gget null eq{ + imageormask + }{ + gsave + dup begin invert_image_samples end + sep_imageormask + grestore + }ifelse + }def +/cachemask_level2 +{ + 3 dict begin + /LZWEncode filter/WriteFilter xdf + /readBuffer 256 string def + /ReadFilter + currentfile + 0(%EndMask)/SubFileDecode filter + /ASCII85Decode filter + /RunLengthDecode filter + def + { + ReadFilter readBuffer readstring exch + WriteFilter exch writestring + not{exit}if + }loop + WriteFilter closefile + end +}def +/spot_alias +{ + /mapto_sep_imageormask + { + dup type/dicttype ne{ + 12 dict begin + /ImageType 1 def + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /MultipleDataSources false def + }{ + begin + }ifelse + /Decode[/customcolor_tint AGMCORE_gget 0]def + /Operator/image def + /SkipImageProc{false}def + currentdict + end + sep_imageormask + }bdf + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_colorAry xddf + /customcolor_tint AGMCORE_gget + << + /Name AGMIMG_colorAry 4 get + /CSA[/DeviceCMYK] + /TintMethod/Subtractive + /TintProc null + /MappedCSA null + /NComponents 4 + /Components[AGMIMG_colorAry aload pop pop] + >> + setsepcolorspace + mapto_sep_imageormask + }ndf + Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_override false put + current_spot_alias{dup 4 get map_alias}{false}ifelse + { + false set_spot_alias + /customcolor_tint AGMCORE_gget exch setsepcolorspace + pop + mapto_sep_imageormask + true set_spot_alias + }{ + //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec + }ifelse + }bdf +}def +/snap_to_device +{ + 6 dict begin + matrix currentmatrix + dup 0 get 0 eq 1 index 3 get 0 eq and + 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop + { + 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def + 0 0 transform + AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + itransform/AGMIMG_llY exch def/AGMIMG_llX exch def + 1 1 transform + AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + itransform/AGMIMG_urY exch def/AGMIMG_urX exch def + [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat + }{ + }ifelse + end +}def +level2 not{ + /colorbuf + { + 0 1 2 index length 1 sub{ + dup 2 index exch get + 255 exch sub + 2 index + 3 1 roll + put + }for + }def + /tint_image_to_color + { + begin + Width Height BitsPerComponent ImageMatrix + /DataSource load + end + Adobe_AGM_Image begin + /AGMIMG_mbuf 0 string def + /AGMIMG_ybuf 0 string def + /AGMIMG_kbuf 0 string def + { + colorbuf dup length AGMIMG_mbuf length ne + { + dup length dup dup + /AGMIMG_mbuf exch string def + /AGMIMG_ybuf exch string def + /AGMIMG_kbuf exch string def + }if + dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop + } + addprocs + {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage + end + }def + /sep_imageormask_lev1 + { + begin + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + { + 255 mul round cvi GrayLookup exch get + }currenttransfer addprocs settransfer + currentdict imageormask + }{ + /sep_colorspace_dict AGMCORE_gget/Components known{ + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ + {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer + currentdict imageormask + }{ + currentcolortransfer + {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }{ + MappedCSA 0 get/DeviceGray eq{ + {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer + currentdict imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + /sep_image_lev1_sep + { + begin + /sep_colorspace_dict AGMCORE_gget/Components known{ + Components aload pop + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + {AGMIMG_c mul 1 exch sub} + {AGMIMG_m mul 1 exch sub} + {AGMIMG_y mul 1 exch sub} + {AGMIMG_k mul 1 exch sub} + }{ + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} + }ifelse + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end + }def + /indexed_imageormask_lev1 + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + currentdict + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceGray eq{ + {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }ifelse + }ifelse + }ifelse + end end + }def + /indexed_image_lev1_sep + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end end + }def +}if +end +systemdict/setpacking known +{setpacking}if +%%EndResource +currentdict Adobe_AGM_Utils eq {end} if +%%EndProlog +%%BeginSetup +Adobe_AGM_Utils begin +2 2010 Adobe_AGM_Core/ds gx +Adobe_CoolType_Core/ds get exec
Adobe_AGM_Image/ds gx +currentdict Adobe_AGM_Utils eq {end} if +%%EndSetup +%%Page: (Page 1) 1 +%%EndPageComments +%%BeginPageSetup +%ADOBeginClientInjection: PageSetup Start "AI11EPS" +%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0
+%ADOEndClientInjection: PageSetup Start "AI11EPS" +Adobe_AGM_Utils begin +Adobe_AGM_Core/ps gx +Adobe_AGM_Utils/capture_cpd gx +Adobe_CoolType_Core/ps get exec
Adobe_AGM_Image/ps gx +%ADOBeginClientInjection: PageSetup End "AI11EPS" +/currentdistillerparams where
{pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse
{ userdict /AI11_PDFMark5 /cleartomark load put
userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put}
{ userdict /AI11_PDFMark5 /pdfmark load put
userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse
[/NamespacePush AI11_PDFMark5
[/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5
[{ai_metadata_stream_123}
currentfile 0 (% &&end XMP packet marker&&)
/SubFileDecode filter AI11_ReadMetadata_PDFMark5
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.1-c036 46.277092, Fri Feb 23 2007 14:16:18 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/postscript</dc:format> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xap="http://ns.adobe.com/xap/1.0/" + xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"> + <xap:CreatorTool>Adobe Illustrator CS3</xap:CreatorTool> + <xap:CreateDate>2009-06-13T13:27:01-04:00</xap:CreateDate> + <xap:ModifyDate>2009-06-13T13:27:39-04:00</xap:ModifyDate> + <xap:MetadataDate>2009-06-13T13:27:39-04:00</xap:MetadataDate> + <xap:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xapGImg:width>256</xapGImg:width> + <xapGImg:height>160</xapGImg:height> + <xapGImg:format>JPEG</xapGImg:format> + <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAoAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9G6f5z0TUTb/AFNL6SO7
4m3nOnX6wsslCr+s0CxhSDXkWpirF/PXmzz3oup/V9PitJLedpri1ZIXvLhba2gg5erbLNbvwa4k
kDSR8uC8fhJbCqU2P5p+ZNbvLyz0s2kHoo97Bcraz3pmt0tLGZYreES2zyuz3rFmJXinH4anZVLm
/PLXxa3N6bO1+pPZWZs7pBK0aX84Zmjl5mNuEixv6Z2oyhd+QxpCdx/mZrOr6p5s0vSprW0bSYnu
tIupLeS4E0VmxivFcerCrfvQvBkNAr71xS1befvNVpomr3Go3Flc3Vt5Wi8xWTpbvbr60wuCImUz
Sc1UxRjYite1cCse1D83vPVlDqN6yRGFLjVrW3ifTpo4EbT4rqSIi8NwVlkraDlH6Y2Lb/DhVn3k
3UfPt9cI+qBfqKtILn61YNp1x9hTF6KLc3iuOVeRYjArNMVdirsVdirE9X0bR9V89WkWqWNvfxRa
XO0cd1EkyqxuIgSocMAaYVZHp+mabptv9W060hsrYEsILeNIk5HqeKBRU4FROKuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxVIvIX/KDeXf+2ZZf9Q6YqjNa8t+Xtcjij1rTLXUo4G5wpdwp
MEbuVDhqVpv44qh77yX5Q1CAwX2i2VzA0wuDFLbxsvrCNYhJQr9r041WvgKYqq/4V8si0msxpNmt
pcCNZ7dYIxG4hbnEGQLQ8G3XwxVWXQdESOGNdPtxHbRyQ26CJKJHPT1UUU2WSg5Dv3xVD33lHytf
/Uvr2kWd1+jgosPWgjf0VUUVY+SniBQbDFV955X8uXlm1ld6ZbT2jTS3LQSRIyGa4DiWXiR9t/We
rdfiOKtaF5X8ueX4pYtE02306Odg0y20axh2UUBbiN6YqmmKuxV2KuxViWs3Oq2/nq0bTrJL6Q6X
MHR5hAFH1iLepR64VZHps+oT2we/tVs7ipBhSUTCnY8wqdflgVFYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FUi8hf8oN5d/7Zll/1DpiqC1bz/DYandaVFpV7eajblmWJPQhSS3ihhmmu
RNcSwxCKP6yqMWYfHsMVSWb869DW4VY9NvJLRY7aW6uGa1ieL60Sqr6EsyTSlCKN6St7V2qaVFz/
AJs6Tb2MmqT6bex6LJDcz6VqhEBhvfqkMlwyRBZTIhkigdovVRQwHywKreZPzP0/RdRttNWwnvLy
6jtpoVWS2gTjdJdOvKW4lijUqti9at3FKnFU/wBA8x2Wt+X7fXLZJUtbiNpBEy8pV4Eqy8YjJyIZ
SBwJr2riqX6b580fUotHktIrg/pq5u7W3jkj9ORPqJlWeSVHIKKHg47/ABVZdutFUv8AMH5q6Jo3
mOfy79Su77VLe0a9aK2NtVlWN5fTjSWaKWSQrH9mNG6jFWZRP6kaScWTmobiwowqK0I8cVXYq7FX
Yqx+T/lP4P8AtlTf9RMWFWQYFdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYZ5A8s
6anlTy5eia+9YafZy8DqF8YuXoI1PRMxi4/5PHj2piqaeZ/KFvrskFyt5Np99BFLbC6gSCXnbXHH
1oJYrmOeKSN/TU0ZdiNu9VWPWn5I+TrbTLyxX1ZWukiSK8lWB57f0ZHkRoH9IcDV9/lhtUYv5V6M
8S2F3fXl5oNvHPFpuiymEW9qtzE8D8GSNZn4RTOkfqO3AHbAqyD8qNHbUbW/1e+utcntGjEa6gts
8bQwQ3EMMLxpDGjBPrjvypyLbk4qzWGGKGJIYUWOGNQkcaAKqqooFUDYADFWP6F5H0zR76G8hnnm
kt0vY7dJSpRBqN4b2cgKq/EX4rX+VRirWoeSbW+8xQ6vNf3XoxSw3R0wGL6u1zbKVhlLGMzDiG+y
sgUnqOtVU31PSrXUokiuHuEVG5A21zcWrVpTdreSJiPYmmKpd/gzR/8Alo1P/uLan/2U4q7/AAZo
/wDy0an/ANxbU/8AspxV3+DNH/5aNT/7i2p/9lOKpFJ5R0r/ABxBD6+o8Dpkz1/Smo8qi4jH2/rH
Km/StMKsx0/T7ewt/q8DzPGCW5XE81y9T/xZO8j09q4FROKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxVIvIX/KDeXf+2ZZf9Q6YqnuKuxV2KuxV2KuxV2KuxV2KuxV2KsS1nU3sPPVpIlj
c3xfS5lKWqo7L/pERq3Nk2wqyPTb5r22E7Ws9mSSPRuVVZNu9FZxQ/PAqKxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KsL8gJ5u/wr5cLzaf8Ao/6hZ1URTet6Xopty9Tjy496Uwqxzz5p
2rWGoXaSXOrXdjdQvc6J9XkvyqanLcM0kTHTh6qKkPp/VxJ+7ryrirHfqX5k3M0vmRIbpL2KfQqC
ee/WZTNa2IulSziCWsiepJKJ+Ue3x7AjFVedPNbaXa/oH/EB1qO19XzcLw3wrPE0Llbb1z6RlLK/
BbT4Sm3TjihEazaebfNfnAXGlpfN5eupZDareSanplv+4tIVZ2WH0Z4wZSwSoAZq9cVZ35gGp6H+
Whju7u/1DULK1torq709Ga9uHDRpIY+IZ1Mm4LirICW6jAlJPy9fzBfajp4ubu9l0zTrW5uWacXi
B5by4aO3tmkvI4J7n6rFBJ8bpUllPhhVAXOm+Zr/APM+8tZNR1ZbC7mPJIRfW0FlbQwRyRSwzeob
GX1pYzGV9PnVmPbFXpmqrrRhT9FPbJNy/eG6SR1407CNkNa4FSz0/P8A/v8A0r/kTc/9VcKtrH59
5DlPpXGu9IbitP8Akbiqf4FY/J/yn8H/AGypv+omLCrIMCuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KpF5C/5Qby7/2zLL/qHTFU9xV2KuxV2KuxV2KuxV2KuxV2KuxVKNW8tw6jfw36
3t1Y3UMTwCS0dU5RuyuVYOjj7SDFUbpti1lbCBrqe8IJPrXLK0m/aqqgoPliqKxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsM8geZtNfyp5cshDfesdPs4uZ0++EXL0EWvrGERcf8rlx7
1xVQ8yeYvOVp5hl0e1a0to7iG4v9Nujby3kr21lFbCSBbdZYPUuJJ534gOKIPHoqwgfnN5vueV/b
RwiytIbNriKOwuJoHeaRo5jLdGaI2y1Q8eUbU96VJpCcX/5l+brTyzb+Z/8AQprbWra/k03SUhkF
zaPa2dxdRGWT1mE4X6uEnAROLNt4EJVvOH5jeZbXX7DSdGaIreW9hM0kNm+oTBrmHUJXCQJNDzFL
KOnxbAk74VZhZ61r6eRDrGrQ21hrMdnJPNHdMbe2R0DFGmNZWiUgBmFSV6dsCsd8p+f/ADNqutW+
g39tBBqtveXQ1ZVikiK2VvaxSRyek0kvptLNeRcf3jAqCetQqq3zX5188WfmybSdKt7OPTSkdra3
txH63LUrmGR7eKUpcxSRIzhBUQP3rhVnN9qsWm2sUt6kzu9FYWdtcXXx0qfhgjlcL7sMCoD/ABno
/wDyz6n/ANwnU/8AsmxVtfOWkMwAt9TqTQV0rUwPvNviqeYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYqkXkL/lBvLv/bMsv+odMVR2teX9C1y1W01nT7fUbZGEiRXMayqrjowD
A0PbFVKPyt5aitLizi0q0jtLtQlzAkEapIqksodQADxLEjwxV1t5U8sWupXWqW2k2kOo3wZby7SC
NZZQ5q4dwKnkftePfFVmmeT/ACppbo+m6PZ2TxytcRtbwRxlZWRoy4KgUPCRl+RpiqazQxTRPDMi
yQyKUkjcBlZWFCrA7EEYql2jeV/LmiKBpGmWthRSlbeFIzxLciKqAact8VXS+XNAl1iPW5dNtn1i
FPTi1BokM6ruKLIRyHU9+5xVMcVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs
VdirsVdiqReQv+UG8u/9syy/6h0xVDXv5j+VLR5Y2nnnlt5ZormG1tbm5eH6swSaSVIY3ZIkY/bP
wnsTiqw/mX5T/Sf1BZp5FD20T38dtO9ir3qRyWyvdqhgX1Vnj41b9oYqtj/NHyW6NIbyWKDiHt55
rW5iiuIy6R+pau8arOoaVamPlsa/Z3xVV1j8xPLWl6o2kym6udTVuLWVnaXN1L/drNXjDG9RwcGo
xVPdP1Ow1HTbfU7KdZrC6iWeC4GytG68lbelNvHFUv03zl5a1NdObT71blNWNyNPeNXIkFmxSdgS
uyowpU7Hala4qhL/APMXyjY6leabcXcgutPMa3vC1upIoml4FFaZImiqfWTblXfFWSYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FUHq+rafpGmz6lqEvo2dsA00nFnoCQo+FQzHc+GKpF/wArN8m+rcxteSIt
tUidrecRTKk62ztbyFOE6pNIqMYyaV8MVbf8zPJ6Ndc7qVIrWG4uBdNbXC286Was9x9WnKCOcxqh
JEbHptXFVSf8xfJ0Onzag2oBrKCxg1R5kSRgbW6keKFlopJZniZeH2q9Riq28/MPy9aazbaS6Xsl
xeIJbaaGyuZbd4iELSrOkZjMcYlT1GBotfipirV/+ZPlOystOu5Z5pE1a1jvdOjht5pZZoZpIYo+
MaIW5M91GAlOW/TFUKv5seVJJRb28epXN6Ofr2MGm3slzD6ZUN60Kxc4/wC8WnIdx44qyTRtZ0/W
LBb/AE+QyWzSTQhmRozzt5WgkBVwrCkkbDcYqjcVdirsVYpYSebNWl1CaDVoLOC3vbi1hg+qCUhI
H4AlzKtSaV6YVQ/kDyzpqeVPLl6Jr71hp9nLwOoXxi5egjU9EzGLj/k8ePamBV3m/wAiXmsXs13p
t7DZtf2qafqcdxDJMrQxTNPFJD6M1sySpJK53Yq1dxtiqQr+R1jJYyreX7XOotJpTR3zCZaJp0Fp
BKHjE3FzOLRjU7ry70xVEXf5UapqenWmmatrkctpo1sbfQnt7T0pUYBFjluiZnWUosXHiixg7nba
hVefyl/SeuprfmW+jvbuR5HvLe0jmtIGBgjghWOk7yrwEXJiXPIntjast1XytpeoeWJPLa+pY6XJ
AtqEs2ETJAlB6amjDiVXiRShWowKkHkT8t28r3r3EupvqKpFPDYo6BPRW7vJLuelCft/uQaU3Unu
AFV0P5den59/xP69qsSyyXASK0Ed5I80AgMU90JKSQpxEiL6YPKm+26rKNT0q11KJIrh7hFRuQNt
c3Fq1aU3a3kiYj2JpiqXf4M0f/lo1P8A7i2p/wDZTira+TdIVgRcanUGorqupkfcbjFU8xV2KuxV
2KuxV2KuxV2KsX1eyXUfOVrZXFxdx2qadNMIrW7ubQGT141DN9Xki5UU0HLFU+sNNtrG1+qxNNJE
SSfrM81055dQZJ3kentWmKvNz+S909zesdXighuWYj6ravC0xe6jueV3GJ/q7snpcVMUUZJPI+GG
1au/ya1OeGKwXWootMsLC80vTVW3l9c211aT28aXLfWPSk9A3AYFYlLcd8Cq035KQSavcyDVpYdF
u2tGk06FSjL9WNxOyxScjwV7y4W4px2II7ihtU+0fyFJYt5fWe/+sxaDYX2mIChVpYLp4RDVuRoY
orYKf5jvtgVj7fk3eXltptnq2sRXVno0NrYafHDbPAzWNtdW9w6zuJ2JldbRU5pxA603xVBXn5FM
ms3F7ptxYvZyvIYLDUYLq4WJJFh6SR3UMjNziY1ZjsaYbV6zBGY4URuPMD4zGvBSx3YhatSp36nA
q/FXYq7FWF+XfNflbTjq9rqGsWNndLqt6WguLmGKQBpiQSrsDuMKpv5C/wCUG8u/9syy/wCodMCp
280SKzO6qqkBiSAATSgP3jFVrXFusqwtKiytusZYBiPYde2KrvWiq45rWMAyCoqoO4J8MVWy3NvC
KzSpGNt3YL1rTr8jiqoCCKjcHocVcWUEAkAsaAeJpXFXMyqpZiAoFSTsABirsVdirsVdirsVdirs
VdirsVdirsVY/J/yn8H/AGypv+omLCrIMCuxV2KuxV2KuxV2KuxV2KuxV2Ksf8m/7z6r/wBtW+/5
PHCVSvyA/m7/AAr5cDw6f+j/AKhZ1YSzet6Xopvx9Pjy49q0xVLPPfkovrJ1a30c63aXsdx9fsOM
Fxwv3ht7e1vfq15JDBKIorcpxLCnLkO+BWCwflP53n0+8vbyxt49StYLJLKB4re4nf6rK/wW128r
yW3GNVpxbwp0woTaX8vPMN5pQ0mDRfqHmBLXUYdc81u1uE1P63aTwqvKN2nlE00scp9ZF9Pj40xS
q6x5K80+bfMem3l1ow0uyhWztLgalHZ36A2dtqPOU24lkjkjMt3GiEmtfioKYqz1vKT6d+W915X0
+SS5lXTri0t5AUidnljcD0/2I6M9EHRRQdsCsR/LryXrVlqtnDPpcmneWtKnutQ0xLkWaXT3E8MV
tGbiOyPpc0U3FGA+yyVNcVd5u/Ly61v8xjfS6ZNdWd3FFaXF1KbNrNLBoZI7lVLf6bFcVk/dmLap
qe9Cr0jUE1eG1hj0aO2Z0opW6eRVEYFBQorkn54FS71PP/8AvjSv+R1z/wBUsKtrJ595DlBpXGu9
JritP+RWKp/gV2KuxV2KuxV2KuxV2KsS1ltbHnq0/RKWzy/oub1BdPIi8frEX2fTVzWuFUw1LT9f
1Ly7NbTzJZaqHjmgkspJAha3lSaNGdlRuMhj4SCn2ScCvGr6bzm1lLb6VDrz3txpbR65JMdT5DUR
6ZevqIYFqQwjNmwHGtduOFCZW+m+ZdJ1640zzIuor5OiZZbkaXPq12vqyQ/uOEwZr4xclk9UIeAf
hXriqu9951stL1iO8i1mRtX0Sey8s0iuZrhZ/rV79U+stGG9C5+rTQFpJOJ2+JuSnFKN8peRPN2o
Xz6pf6nd6XanULySVUur03VwkOpM8EckM7G3hj4xChjWrIf8o4q78w59fu9c1S2i1S/0uCylsBG1
jHeT/wCiy21y7OYbCSGekt0qxlwduAHStVWR/ljqGtTnUrXUo5ohbx6fI0FxLJcPBcz2aSXNv6sp
dzwbi5DMSC+BWR6k/msXRGmxWD2tBQ3MkyyV77IjCn04qhfU8/8A++NK/wCR1z/1Swq71PP/APvj
Sv8Akdc/9UsVd6nn/wD3xpX/ACOuf+qWKpH5Tfzv6Gp+jBphH6TvOfOW4Hx+seVKRnavTFCf+Qv+
UG8u/wDbMsv+odMCU9xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ksfk/5T+D/tlTf9
RMWFWQYFdirsVdirsVU/q1v9Y+s+kn1kJ6Yn4jnwJ5cOXXjXemKuhtreAOIIkiEjtJJwULydt2dq
dWPc4qqYq7FXYq7FWP8Ak3/efVf+2rff8njhKpb5F8z6RH5a8v6VI08eoR2VpbSQPbXKcZVhRGVm
aMKKMKdcVQ/mv8zJ/LGsJZ6jpLG0upZIdNukmQGcpBA4JVgFjX1p2jZnYBQvKtMCobzV+acmjNpt
lbDTbjVZzKmrRfW5pYrOaFEZo3+q29xNVi9ByjXFUp1D85tYs7nU4zp9g66VaLcyL9Yvec7fo5L9
vRIsigX95xHqsh7kDCqlJ+dOuIbKM2Wl87wXDGX19S9OMWwhqjD9H+oWJuB9lSu3XFWS6Z568yam
Tc2OjW02lxXC6fcXDXjRSC7IVWdIpIFrbrK4SpIkI3EdfhIVLIfzM84qXjuNBspbg3t/pttDa3kz
s9zp9nPcsKPbJ8MjQKiHrvuMVQ+r/nYyz250ext5tOumiSDUrqadYy72YvJEKW1vcvVEmiXYH4iQ
aUwqzryprGratpz3Wo2MdlVk+qtDI0sc8L28UvrJ6kcMiqXkdQroG+HfAqdYq7FXYq7FXYq7FXYq
7FXYq7FWK6xqdrpXnS1u70SpbSabNEsyQyyr6nrxNxJiV6Gm++FUzm16S40gX+iWzai5nhhEDcrY
8HnSOZ/3qqf3UbM/TelMCsZ8l/mzpnmOwh1K4+raTp/pwQzy3dysbHULhFkW2hSQIXUJX4zTkfsB
gCcVY3Zfnjq9x5fOsNp2nqJFtDFbie+LRm8njiBmJsghVVkqfSZztsDhVFN+cOuC/tbMWGms09rH
deqJ9R4yercz24jiH1DmG/0Y/wB4qjfY4qv8u/nDrGsWVo8enWL32qm3h0y1juLxQs9xG81LqSW0
jRUSKJyTEZKkUFa1xVN9U85efLSTSoE0TTVudQvW0uRZb+Qot0sUs4dGit5D6LQw1HMK4Y0KU+LA
qG/5W3MIZuWlAXMwlTRofWJF1PDqr6W0VeHwlW9GQ0B2c+GKqfk780PMHmO7jWHSbR4XZfVhhuLn
6xBCZljaZ/WtYYHCKakRysenvQq9KwK7FXYqwvy75U8raidXutQ0exvLptVvQ09xbQyyELMQAWdS
dhhVmmBUu1Ty9o2qzwz6hbLcvBFPBGrluHp3aCOZWSvFg6CnxDFUt1HyB5fvoNOic3du+lIY7O6t
bu4t7gKyLG3OaJ1kfkqLUsTiqvF5M0GPTdU04xyzQa1EIdUeaeWWWZRbLaVaV2Z+RhjALVrXfriq
3XfJWjazJYTXD3dtPpsckVnPY3dxaSLHNw9RC8DozBvRTr4YqpQfl/5Zh1KHURFO88LRy+nJdXDw
vcRIES5lhZzHJPxUfvWUsTvWu+KouHyloMN3Bdx2xW4t72fUon9SQ0urqN4pnoWp8SSsOPQdsVSx
vyx8oiwtLK1huLCOxnnubWSyuri2lSS5r6tJYnV6MDxpXYbDbFWSWFlHY2UNpE8sscChFkuJZJ5W
p3eWUs7H3JxVXxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpLpHkzy5pD2r6faek1paR2EVXdgYIG5RBw
xIZozXi5+IVO++Kpbpn5Y+WNOhgt4Wv5LO1e3ktLO4v7ua3ha0mSeExxSSMi8HiXoOm3Q4qnzaJp
ranc6m0RN5d2sdlPJyahgieR0XjWg+Kd9xviqQWf5YeWLXT/ANHLJqEloixLaRy6heSfVTBT0mte
Uv7h0pRWjoabdKjFUztfJvl+1t7CCK3Yrp122oW8jyyyStdyJJG80sjszyuyzvUuT+AxVTTyN5XS
TTZBZgvpFzc3unszufTmvHeWZt2+IM8hah2BpToMVW+XfI+jeXpzJps18IuLJHZzXt1PaoHbmfTg
kkaNTXoQuKsgxV2KuxVienP5l0iXUYE0R72Ke+uLmG4juLdFZJ35r8MjKwIrvthVlmBXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8Jh1X8x
tMvtcvNMttR1LUfRujOt1HfIsTNdxiJ3glWe1keOBnMX1FqMo3Q4UJ/+XmvfmTe3GtXetpPJONKj
m0eykt5IbaeVZrlQ3J4oCjsEj5KwQkNXiABRSo+TtR/MDV/POjSarPfPo1pbXkskkllLp0b3RhgR
4ZYmVOQheZxGzVrQ0rQnFUo1T8xfzbj1LVobewuY7JJ5DbyvptxzjihmMYSPhDcKSyvGeX7zl24D
cKFf/HX5tPqc8Nxa3NlY8Ld7q5TSpZGs4W9LnKsQEnqSHk9UR5qbn4eNMVavfNf5rXVskF1b3lvd
k2gjsrbTZwLi3PF5LuS5VkNvJzojRA1H8lCWVVLpvOX5s6lfSR3Eeo2VoHnaFIdNnjLcrS9HoOwj
NAk0cKCjtRm5czTZVNNR82fnPZaXKkViwWwMEMt49tM8jx3fKdZlCxXTubaNEhkpG3xOSwqNlUz1
/wAx/mRa2HlzVDFdQ30+j376hp9rZyXMX10LAYDJGAGRuLO4DGo4laE1UqWKWnm382rq/upZYtSj
u2tbezjtl066EVxyu5/Ul9T04UgljtJfUDBV5FVHsVCJh85fnZbxTW6WUkcNrZW9GntLqWRECQg3
HMW0nqSP8fIcpCDWsfwnFXsPk6/1TUPLGnXmqRSQ6hNCDcRzRGCTkCRVoiaqWAr2/wBVfsgJTnFX
Yq7FXYq7FXYq7FXkl/5m8wQWWsaZZw6hc69F5iWa1iktb54vqP1+KnGZRHEYuB+wJaca9sKHfl15
h/MLVfMmmyeYHvIbIwahG8bWUkEEssZtWj5F4YWWnqShWZE+wVFdyylCWGsfmVreuaFDfG9gs11O
2m1eOOzls0t5Vju5ZLIuQDcW6+jF+8qVPIVJ5ABVvzL57/NG2806zaaZZTnTIvUitJH06dkQxiNh
IjxxTc+SCQhuT9v3dfhKhBW/n784pJOK6dcuZLN3iVtNlBUBT/pDgqgZ6iqKr8n2X0VrUKq9x5u/
M2a3u4Cb0wGGQaNPHpEyyakjNMskk28Rs2ijVGT7JatQrdMVQCec/wA2Lm+Wwmh1Gxsorm2Elyun
zmREhvraJxVo3MivbytIxLvzp+yKriqIs/NH5y2nluGGGxmeW10+3vWnlt5Xf07hbaEQkMk0rSQN
9ZlbZnoq1U9Cqnt75h/MU+S/LGsyRXEeqjUZRf2tpaySm4t1huvq/qwMkEirKyRA1Ee7A/BtRSxO
Lzp+bNxPa3csWoR3VpFqH1Xhpl00V2ZI7KS0injEUSIJJvUjEhUcBXf9rFUTpXmz86rW8OnRadM8
MUN40JvLe5leUATyLO7mI/EkvGNY/WBYUAQ8gcUPTvy11jX9W8rx3WupIt8JZE5ywNbGRFI4uEdI
WKmtAxiStPs9yEsqxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KuxV2KuxV2KuxV//2Q==</xapGImg:image> + </rdf:li> + </rdf:Alt> + </xap:Thumbnails> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"> + <xapMM:DocumentID>uuid:D7FF3C35B059DE11AFC0B4F2CCFB8D1B</xapMM:DocumentID> + <xapMM:InstanceID>uuid:D9FF3C35B059DE11AFC0B4F2CCFB8D1B</xapMM:InstanceID> + <xapMM:DerivedFrom rdf:parseType="Resource"/> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xapTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#" + xmlns:xapG="http://ns.adobe.com/xap/1.0/g/"> + <xapTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>792.000000</stDim:w> + <stDim:h>612.000000</stDim:h> + <stDim:unit>Points</stDim:unit> + </xapTPg:MaxPageSize> + <xapTPg:NPages>1</xapTPg:NPages> + <xapTPg:HasVisibleTransparency>False</xapTPg:HasVisibleTransparency> + <xapTPg:HasVisibleOverprint>False</xapTPg:HasVisibleOverprint> + <xapTPg:Fonts> + <rdf:Bag> + <rdf:li rdf:parseType="Resource"> + <stFnt:fontName>Helvetica</stFnt:fontName> + <stFnt:fontFamily>Helvetica</stFnt:fontFamily> + <stFnt:fontFace>Regular</stFnt:fontFace> + <stFnt:fontType>TrueType</stFnt:fontType> + <stFnt:versionString>6.0d7e1</stFnt:versionString> + <stFnt:composite>False</stFnt:composite> + <stFnt:fontFileName>Helvetica.dfont</stFnt:fontFileName> + </rdf:li> + </rdf:Bag> + </xapTPg:Fonts> + <xapTPg:PlateNames> + <rdf:Seq> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xapTPg:PlateNames> + <xapTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xapG:groupName>Default Swatch Group</xapG:groupName> + <xapG:groupType>0</xapG:groupType> + </rdf:li> + </rdf:Seq> + </xapTPg:SwatchGroups> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?>
% &&end XMP packet marker&&
[{ai_metadata_stream_123}
<</Type /Metadata /Subtype /XML>>
/PUT AI11_PDFMark5
[/Document
1 dict begin /Metadata {ai_metadata_stream_123} def
currentdict end /BDC AI11_PDFMark5
+%ADOEndClientInjection: PageSetup End "AI11EPS" +%%EndPageSetup +1 -1 scale 0 -230.068 translate +pgsv +[1 0 0 1 0 0 ]ct +gsave +np +gsave +0 0 mo +0 230.068 li +369.5 230.068 li +369.5 0 li +cp +clp +[1 0 0 1 0 0 ]ct +1 lw +0 lc +0 lj +10 ml +[72 0 ] 0 dsh +true sadj +0.5 9.5 mo +0.5 171.5 li +false sop +/0 +[/DeviceCMYK] /CSA add_res +0 0 0 1 cmyk +@ +%ADOBeginSubsetFont: Helvetica Initial +%ADOt1write: (1.0.24)
%%Copyright: Copyright 2009 Adobe System Incorporated. All rights reserved.
12 dict dup begin
/FontType 1 def
/FontName /Helvetica def
/FontInfo 5 dict dup begin
/ItalicAngle 0 def
/FSType 0 def
end def
/PaintType 0 def
/FontMatrix [0.001 0 0 0.001 0 0] def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 32 /space put
dup 39 /quotesingle put
dup 40 /parenleft put
dup 41 /parenright put
dup 45 /hyphen put
dup 47 /slash put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 65 /A put
dup 67 /C put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 73 /I put
dup 75 /K put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
def
/FontBBox {-951 -481 1446 1122} def
end
systemdict begin
dup /Private
7 dict dup begin
/|- {def} def
/| {put} def
/BlueValues [0 0] def
/password 5839 def
/MinFeature {16 16} def
/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
/Subrs 5 array
dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
dup 1 <1C60D8A8C9C3D06D9E> |
dup 2 <1C60D8A8C9C202D79A> |
dup 3 <1C60D8A849> |
dup 4 <1C60D8A8CC3674F41144B13B77> |
def
put
dup /CharStrings
27 dict dup begin
/.notdef <1C60D8A8C9B66F631635D26BA635582B3FDE9B3DD75794781396E6
48A7CA97DB1343CA> |-
/space <1C60D8A8C9B854D00D> |-
/quotesingle <1C60D8A8C9B8ADAC7D5A0126936BF9AA86DD6462CB7D8404> |-
/parenleft <1C60D8A8C9B81F2C3A3BDBA2E9DFEE10E6670AEBC7475A54CE0B
91C398F722701ECC7FFACD7325FD69C372628B8FE38CA7FCBE37C8CC6151D955
D330AD238F5A7ADFF3EC6F792676AC012B90C4C6A5CC37C0C314284064> |-
/parenright <1C60D8A8C9B81F2C240532A9306D88FBE802946D4D7C96BED00
3DF2FCDB8DDB235CA368A4FADF1D0309B087452F4DD7B6CF26A6C550E92B406C
8BCDB5365991B0FCCD46328F398E95D059281A86422A9CC2837C1B0EF> |-
/hyphen <1C60D8A8C9B81F2C797F8B2BDB0639171EDAAB309BF7> |-
/slash <1C60D8A8C9B854D08FD42DCC2A61292225078A8A43> |-
/one <1C60D8A8C9B7EF322B8DEEDAE6F72EF3709E16C7A593AF17F17D72A390
7C7468090579C66DE0263BFE> |-
/two <1C60D8A8C9B7EF327699F81B0CD59DC4BD38D48AF11B5B9C1D7787A22B
DC09D7BCED9A76C2312055A28AC829584109043EE366AF8632D6D62E9BBD6A43
57093750D4015EA59C9F538C44C55AD0DB14FEE0C7267845EB7EFBD514024AA1
A03530A8941AD7B5F508335B2FDCA37E6B0627146A6F144DB9DD7DCA6BE86290
FB46DD6A2918F4C2C2BDEECA159D78> |-
/three <1C60D8A8C9B7EF322B8D6E3793F9C339FF2D01F55F75395A69A42725
328E1B8E66EAFF6BAC335B6E345906CE7152DDCE6F991DD2E99A50D14EF5FE71
6864AD89B92005EB56184F6465E294CACBF73EC4E77A27D9ACFF3348FE551D23
745FD8C1F5363E223D2FE146B2E36748D97805004E8C37168D3D6622BBF76ADD
739801325A4BB7457A49C531154E36C58F381AB30F164CAE6510100AF5FE6405
CBE42D3AEC01131A86CADB27645F055DEC901ADBC964660F336098380F7A3143
62D92502B680C534E053458ABD592A4A4D87F9589307764B161F9884> |-
/four <1C60D8A8C9B7EF32298E3DD46F18108137336D1A5C627A90D059BB181
58BA2A55FF5DE20CE460964DAF45C08A7D9820A784F4A44F7E1> |-
/five <1C60D8A8C9B7EF3277A9C7C54B35CB479E4C110330EAD203F40A20826
414A4CC0E90EF4AAF68DCFEF4ABE6CFF07A7C5FBDADC90A7F87ECB382B602F56
451722980F3A3AC74E582BA9C9CEC3027EC489F453112D8FBBD217B656538AC9
0D034F616E885784C813B1555F6DEF92ECF082193A9672305F8A984DE35F68D1
502A8C10EB08C528E24E38813C68D1F86D01BCA9E> |-
/A <1C60D8A8C9B64EDFF4A769B0E349B0B8A8759517834132408F730D592533
2B160EAFC678A283B12B9F41A37E5CF702EF2D2E718583BF> |-
/C <1C60D8A8C9B6079F6D8209747A86332E73924F1B07F271169856A53C9157
71D7C530ADE68D8CA49F0A6B3478F9E8176949771F40D91B68E1A88C72CE81CC
0A91B3CFB642960E7EB2127A1637D49961A11F5DD40622F39379CDAB7E5B349D
F832E4955008C5E3208AB258B012A237635179513D820ACF76E0A17ED392C351
599687E8E7D0> |-
/E <1C60D8A8C9B64EDFE336C703EA12FABA68C9F5D15F1A9B67653505BC29F8
D56A4237858E054C3198877A> |-
/F <1C60D8A8C9B7D8BE0123FD0A136BA0F480FD4287FFCF97986718886432AF
2C7EB6A3F35B> |-
/G <1C60D8A8C9B6FF86FAE761919412E75DCB56A17E0B647886E974BE0CD2DD
C55247C89172C0F24B317CED95A1845F91927547B6F787BE4A81523EC6B90B7A
F23F6F8A8BDDC51D0AA285D7E086AD8E028BD7D16A89F17742D556071D7D5616
6C6C8A71E0DFC3DA3B4DBE27EC4E6BE207A1EAF47A71BE409951D1C5060119CD
D071AF7E9076F56846B6D62E52B2CB6390635FC230> |-
/I <1C60D8A8C9B854D0EE4B20327A907C36187261> |-
/K <1C60D8A8C9B64EDFDBBA3672BA9F92710F094994A8A12A9F4DF39299BC3F
AD32D853DD36FBDA8E3717CD2AE8C1575639957965FDD3> |-
/N <1C60D8A8C9B6079F42CB3557771D803C706A630DA03929B931F488C01B37
E85FE694B3E25EF7F6332F> |-
/O <1C60D8A8C9B6FF86FAE00AF1D2F86EE41080CA4FE58FE601E0C2094F12B2
546E9E38BAEF65733BECF7148D0EA0DA88DD45A55274AD12A1DAB92015F88338
234BE6A027107EEF674C9235BAD46D7DFF766B4165047A7FA440E1670CEEAAB2
425BA29AB4CCAE0C0F708E15BAD5B5B8F2A1708072DEF2F49003A8347C8BC4E8
13779196F3AD613B7571> |-
/P <1C60D8A8C9B64EDFE336D280AD0769103D1650D4946BC89E21A88DEC5161
3F3C79BEE823BD11DE4DA6DB5B89497F0D2976B3DEFC67AF28487C3BB530BC49
F1D09A090BACE6D7137C10758B70768799060F36DCE81F308AA18889AF5053DE> |-
/R <1C60D8A8C9B6079F62E4AB3BE2637412A7FA2BF1A87387986CC045CAB872
B149BF5CA8B183616945E928E44276850B6ACD583D0202E4733E2391A44F4BCB
738AB089D22707E0F4100F2BC6F35BD460D56FBB8A5713D4AF8760EB8EC1E1AE
6F49A9B2B1066A8DA04011CCA29E2BB62A652880D30D80185E3336BD5BF6EB5D
116E1FAF0793D4F86835A22CB564EFB5339E311318AE2981A0679F359C9E7A1F
F6CE964A> |-
/S <1C60D8A8C9B64EDFB8831DC7D3DA5352C683CFE7ADDB1F2F7D19136185D1
F816C3BE09EC1E84619F52030DEE9359B5F11BDC142E51FA821DBBAA94D355CD
B3194A176F4CAFE2F8762140A61B8DB4801B25EC39CF8CD3F7F21C11EB8BF2FE
AA7BF71364CB0E29D9153C5428F8E2556CFDCDFCF7C63E7AA008F518E6EAA3DE
B5EC8960FB0234452B3B55FF1BB7B980C85D0DFF1CA34BE144E02D5E8A581ACC
1C4C80D7396F6E85C6E2CC3BAA0E140AF4F656AC7D073077DF7B4E8B5856F92B> |-
/T <1C60D8A8C9B7D8BE7B6CE17BCB3B2D4B0FB3E6AF9E6DDADD178189522CE1
F006> |-
/U <1C60D8A8C9B6079F4AA924EA43FD5A09DAB441D8FDAD8EE41C906BC5551C
AACFEF8B65251D34977BCAD7099CF8F4F9BCA8F32E33DFACED539B0F12BA4E54
491DDBF246C2DFA3D44D729CA7103659C293245DC39AD319> |-
/V <1C60D8A8C9B64EDFA60949676B75C625C6948873966B83A549B84A6BD5D6
EE9C83058CE085EB61> |-
end put
end
dup /FontName get exch definefont pop
end
%ADOEndSubsetFont +/BDZTMS+Helvetica /Helvetica findfont ct_VMDictPut
/BDZTMS+Helvetica*1
[32{/.notdef}rp /space 6{/.notdef}rp /quotesingle /parenleft /parenright 3{/.notdef}rp /hyphen
/.notdef /slash /.notdef /one /two /three /four /five
11{/.notdef}rp /A /.notdef /C /.notdef /E /F /G
/.notdef /I /.notdef /K 2{/.notdef}rp /N /O /P
/.notdef /R /S /T /U /V 169{/.notdef}rp]
BDZTMS+Helvetica nf
BDZTMS+Helvetica*1 [12 0 0 -12 0 0 ]msf
14.4922 13.498 mo
('SIGNATURE' )
[2.29102 8.00391 3.33398 9.33398 8.66602 8.00391 7.33008 8.66602 8.66602 8.00391 2.29102 0
]xsh
14.4922 39.498 mo
('GROUP 1/ 5' )
[2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 3.33398 3.33398 6.67383 3.33398 3.33398 3.33398
6.67383 2.29102 0 ]xsh
13.4922 67.498 mo
('GROUP 2/ 5' )
[2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 3.33398 3.33398 6.67383 3.33398 3.33398 3.33398
6.67383 2.29102 0 ]xsh
14.4922 93.498 mo
('GROUP 3/ 5' )
[2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 3.33398 3.33398 6.67383 3.33398 3.33398 3.33398
6.67383 2.29102 0 ]xsh
13.4922 121.498 mo
('GROUP 4/ 5' )
[2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 3.33398 3.33398 6.67383 3.33398 3.33398 3.33398
6.67383 2.29102 0 ]xsh
14.4922 147.498 mo
('GROUP 5/ 5' )
[2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 3.33398 3.33398 6.67383 3.33398 3.33398 3.33398
6.67383 2.29102 0 ]xsh
14.4922 175.498 mo
('K-EFFECTIVE' )
[2.29102 8.00391 3.99609 8.00391 7.33008 7.33008 8.00391 8.66602 7.33008 3.33398 8.00391 8.00391
2.29102 0 ]xsh
240.492 121.498 mo
('SIGNATURE' )
[2.29102 8.00391 3.33398 9.33398 8.66602 8.00391 7.33008 8.66602 8.66602 8.00391 2.29102 0
]xsh
239.492 175.498 mo
('K-EFFECTIVE' )
[2.29102 8.00391 3.99609 8.00391 7.33008 7.33008 8.00391 8.66602 7.33008 3.33398 8.00391 8.00391
2.29102 0 ]xsh
239.492 148.498 mo
('GROUP' \(5\) )
[2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 2.29102 3.33398 3.99609 6.67383 3.99609 0
]xsh
99.5 144.5 mo +126.5 144.5 li +99.5 117.5 mo +126.5 117.5 li +99.5 90.5 mo +126.5 90.5 li +99.5 63.5 mo +126.5 63.5 li +144.5 72.5 mo +153.5 72.5 li +144.5 54.5 mo +153.5 54.5 li +144.5 0.5 mo +153.5 0.5 li +144.5 18.5 mo +153.5 18.5 li +144.5 0.5 mo +144.5 72.5 li +99.5 36.5 mo +153.5 36.5 li +360.5 180.5 mo +369.5 180.5 li +360.5 162.5 mo +369.5 162.5 li +360.5 108.5 mo +369.5 108.5 li +360.5 126.5 mo +369.5 126.5 li +360.5 108.5 mo +360.5 180.5 li +315.5 144.5 mo +369.5 144.5 li +225.5 171.5 mo +234.5 171.5 li +225.5 144.5 mo +234.5 144.5 li +225.5 117.5 mo +234.5 117.5 li +225.5 117.5 mo +225.5 171.5 li +0.5 171.5 mo +9.5 171.5 li +0.5 144.5 mo +9.5 144.5 li +0.5 117.5 mo +9.5 117.5 li +0.5 90.5 mo +9.5 90.5 li +0.5 63.5 mo +9.5 63.5 li +0.5 36.5 mo +9.5 36.5 li +0.5 9.5 mo +9.5 9.5 li +@ +%ADOBeginSubsetFont: Helvetica AddGlyphs +%ADOt1write: (1.0.24)
%%Copyright: Copyright 2009 Adobe System Incorporated. All rights reserved.
systemdict begin
BDZTMS+Helvetica dup
/Private get dup rcheck
{begin true}{pop false}ifelse exch
/CharStrings get begin
systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
/L <1C60D8A8C9B7EF320B5E1B1901757FD427860A5A6931496E07> |-
/a <1C60D8A8C9B7EF322B0D17E770BC81022852C5639214CBF49D6EF8BAFB01
88062A6BB41F6EB58ADD15E3D1B86AD22624C804FD4A4EBA73D78F7E503599DB
65A7EB53D74C4A9A536152BF7A6B13AB96FF2727313FED0263E50A950746CED5
AD5E7764E6E353716A8BE8970281B41D9429E56957BD1FCC84205F76AF78E807
D18CA1CFFE724AECDDD2D385233E91066015AC7E0906FE359E28D96D9E0BD326
B9E6C7D3E486FD1864E3B47A611B1D6D0D080020321300485E65AE9E4C12443E
21865F474D46CD791839F25C8FD0A80215E3D2C3A5928427942DF3859AEF6E90
35C909FC75082E8FF246F375DDB90EAC248C9121707FE869E161502F320A2711
3504> |-
/b <1C60D8A8C9B7EF3218D573119DA1C11A6AE733DE74B449EE28E952049DF2
0D24986476D6D2EEF32C9EA9D0ACD1DB597DCDAFEA016C8786CCA065DDF1EE59
07C8756872FC8DF20AB863D540CF67DD1EF324B2790688B9E765FC9F6CEBC3C1
28AB52D1A4FF3B9BAF04627D17E8573C64B9FC053FD7156FF73E6BCD82B1A402
A01ECDBBEC20265AC1F5281625> |-
/c <1C60D8A8C9B7A73DB9BB4BD7623FA1F3C03F832EDB3EBDEEADF30D53894C
A8D0E43AB471E7BA022BFFD675D506AE0402072D4B89708C39F4DE4224D2E08E
345C99AE382D5A27CCF2E9E7F36B9FF185D5B1582E55EEA79434D321A3126C80
6AF846740E1C2FF9A41681247A023D851231C058548F93E1F768FE103B973ACF
15C379D13F> |-
/e <1C60D8A8C9B7EF322BB83B593C4F5531F1493EEBEAC6F4C92C25FF10F1FB
8EC7E530E4B1F1C9E51F31B44D59539AB4135F310FAB43C5A16AA1F4EA07D67B
BB916AB355913EB7D45F3AC7C9CF1FD32728FCA1A2D5BBD257CEF831AE751904
AD7F4FBE21E10F3A844E74CF6B850E894017941E45AE6BCDA168BF4979345C67
DB13F0C5FE9888EB731B0A06A8D5D1475F60C11332FBE633540E50C86671A26F
D83CD870BB68F7A9> |-
/f <1C60D8A8C9B854D0E1194BB75B674577C40C65C9DA80CF489EB158487251
DB3D0D4CE62FE4588AAD1DAC98153B63C50CB7167E75DAE3557295D61A22E58E
D82D181423A4BEB279AE837EE035530BF30960CB0B47037A994CC5880A6489EE> |-
/i <1C60D8A8C9B88C084EE8A68C7FA2A58C433876A9B19799899FEF7A13> |-
/l <1C60D8A8C9B88C084B857C39B4185359B4FDA8> |-
/o <1C60D8A8C9B7EF322BB7315D499F0FAA57DF741D86CA9D8DB7E5AD83A05F
D148F53EC24E4E6BF5C292C0FC171599978D99E35AB7CAFB8CB65593939725D5
20CE4A30CDA834D29EB92A082721C79AE18875772ECDD437AD2148D76D23F045
CDA1E61619294E456095F14AB8D580008870DAABB6481A0C5B1656CACCDE79F2
741F9BB15B> |-
/s <1C60D8A8C9B7A73DE557A2AA450BB57EE39D611FDE79056DA153DEDE8E0D
2C9D756143DA5E614060C362E0813E35369DA2F002330267D2CFA81D3D9AA172
C91A8B8E19BB92CE3CFBA62200E9E8175CCCB3A5FA559ECF71DD7F2B47B117C6
9AC3637EDAE62020C9DAFDDB718C27C76EF62794CF8B187D103B05AC07655F04
A6D9D5181CB287F032D98B2512B2A9B281D13745308AC05B350DA95BA0BE14F1
2630B5B2A718215DC0DE5A544FA267BEF8FD5CF5292808F195D31A5EEC3ADC63> |-
/t <1C60D8A8C9B854D0DE8EB299D76AFE3A3E7733E2D967660702D2EB06537F
4BAA1F2129056DC9771C91484E3F22B637802F61054AB3D0E9902E08C4E6B9AD
DC0E2F51D38CAD652B2A777D9304919B1B524DD7CC56553E03BE971752FD0161
CF> |-
/v <1C60D8A8C9B7A73DDF32B99894CC6FA66F5D07EC695DA6C164CB40F9A791
729569775D3BE9C3> |-
systemdict /gcheck known {setglobal} if end {end} if
end
BDZTMS+Helvetica /Encoding get
dup 76 /L put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 101 /e put
dup 102 /f put
dup 105 /i put
dup 108 /l put
dup 111 /o put
dup 115 /s put
dup 116 /t put
dup 118 /v put
pop
%ADOEndSubsetFont +/BDZTMS+Helvetica*1
[32{/.notdef}rp /space 6{/.notdef}rp /quotesingle /parenleft /parenright 3{/.notdef}rp /hyphen
/.notdef /slash /.notdef /one /two /three /four /five
11{/.notdef}rp /A /.notdef /C /.notdef /E /F /G
/.notdef /I /.notdef /K /L /.notdef /N /O
/P /.notdef /R /S /T /U /V 10{/.notdef}rp
/a /b /c /.notdef /e /f 2{/.notdef}rp /i
2{/.notdef}rp /l 2{/.notdef}rp /o 3{/.notdef}rp /s /t /.notdef
/v 137{/.notdef}rp]
BDZTMS+Helvetica nf
BDZTMS+Helvetica*1 [12 0 0 -12 0 0 ]msf
0.5 206.498 mo
(Set of associative tables )
[8.00391 6.67383 3.33398 3.33398 6.67383 3.33398 3.33398 6.67383 6 6 6.67383 6
2.66602 6.67383 3.33398 2.66602 6 6.67383 3.33398 3.33398 6.67383 6.67383 2.66602 6.67383
6 0 ]xsh
220.5 206.498 mo
(List of associative tables)
[6.67383 2.66602 6 3.33398 3.33398 6.67383 3.33398 3.33398 6.67383 6 6 6.67383
6 2.66602 6.67383 3.33398 2.66602 6 6.67383 3.33398 3.33398 6.67383 6.67383 2.66602
6.67383 0 ]xsh
%ADOBeginClientInjection: EndPageContent "AI11EPS" +userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse
+%ADOEndClientInjection: EndPageContent "AI11EPS" +grestore +grestore +pgrs +%%PageTrailer +%ADOBeginClientInjection: PageTrailer Start "AI11EPS" +[/EMC AI11_PDFMark5
[/NamespacePop AI11_PDFMark5
+%ADOEndClientInjection: PageTrailer Start "AI11EPS" +[ +[/CSA [/0 ]] +] del_res +/BDZTMS+Helvetica*1 uf
/BDZTMS+Helvetica uf
/Helvetica uf
Adobe_AGM_Image/pt gx +Adobe_CoolType_Core/pt get exec
Adobe_AGM_Core/pt gx +currentdict Adobe_AGM_Utils eq {end} if +%%Trailer +Adobe_AGM_Image/dt get exec +Adobe_CoolType_Core/dt get exec
Adobe_AGM_Core/dt get exec +%%EOF +%AI9_PrintingDataEnd
userdict /AI9_read_buffer 256 string put
userdict begin
/ai9_skip_data
{
mark
{
currentfile AI9_read_buffer { readline } stopped
{
}
{
not
{
exit
} if
(%AI9_PrivateDataEnd) eq
{
exit
} if
} ifelse
} loop
cleartomark
} def
end
userdict /ai9_skip_data get exec
%AI9_PrivateDataBegin
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(R) 13.0
%%AI8_CreatorVersion: 13.0.2
%%For: (Alain Hebert) ()
%%Title: (vect.eps)
%%CreationDate: 6/13/09 1:27 PM
%AI9_DataStream
%Gb!U'q-NAJcRA_I5jtBM$D!Z^Eu@%q'IZ>"!Xn3'T[8P&?-cjG+6V@=A]KW`Vo(RmH,$b:]<ngfgTi(tZ=Nk2`US?*l]45ej+$W+
%J]i?7'^nb-Eo'2bnG)t&rG-Cf;(!;UTiui&94sHeC3eU*&&lqt+cX+nFBTRn`mQ^4/IpLjDl1$**mN'l@r_!BSFsL2<##%ts,m0F
%*dTVg/UknKD2EPsAj2UkqI7e<MhRAECUHA<X(,krSp>B3%\E4-CN82QoIf:DN[X#&a[?a_-XLdWS(%(dR.oV/jRL?j4.,c\#3rnS
%3uOdP.26<!nb3uB2F@a9h;M3i9'<<4G1>`Tr*S@gFfR`t8aTZ14Sfd<Y]%M>AC-p)(nZXi)XthEi)BS,f0nZ7[;qcrMZ1q@!rPh$
%<J6:Fqr3+rhXbp"5FRS0T4CcXI[=H;+O+g#s+A=XaU-f\09E*`o78;I7t!WPIZu(\SWA-W5^nCDXUa&=;@``IX.Q3)D-QiJB8B1"
%K/j>qn',ln&]/\(rC<(XR\55TM)`'ehr3E]JVoW$/0KhnA\@8D_CME:pp;t/aR/K,/Y2rqfAU9J21q"J5gs^%ofr;J]\KF/CJF*g
%e1&NGhCSK<h2Z'7s)[g^dQ]S<fh<C-rC&PA3`k9Z>jVBC1iW>KaCs)k,<YK_(6-t979q@:\K7$jZZb2p:1cIRWrI=%IqCr+*;Z!m
%^h5\;T=GqhQ:gd`+p!0,#q/LnTJVcRV:@'.:#8L?TiO2`^X?hpPtj]KFLkYP0QT7QPKQ7_*;TnYkAjBLQ\/K2%6gIdW<BV$-$Zaq
%Js'"<l;Xf\>-4[Nn922Hjjbi+L\-u+Qh6'?84qi8>+S90r9t$#?qg%r[9u[MUneDg"J8Kq7Kf>;DMebk/rU*#i>7FY4ol;4'7gQ:
%Jkm4Br.V%&->8TNPI(k.?sN1-FfJGd7ct#&:2in28?`5hj@qCMdX0DddPoT8oUO2=X[2qP/JoRW![KORACRE6bS^83=ti-$_ZVLN
%>o4Z2_Cl`HR=FuW4bkES$+4/gn4@5S:^OrgBcgNS1]T\:oL%f#oT*B#C(\*U]TA8>hF#U\^IYs>17^'rKDpKa0KMgo0KOHJN1-!J
%ptug#&c.7P&Y+r,i=kLlkWF;dfp$[dk"#l5\g\(e>+sFM4XZI\BS#^XSPt,adQ<&'dOr?ToUO24*?46)e=s&Yki@.i:B$BI'@%lQ
%9]hl'L-V]sItW8NDC=mtr01DccD#P]BqJ3\V0eL,i,+a6.&X,P9X1\E"8%CY'&HZo62O:O9A:b3adYE=iIC?`84?ka-O?M9rCd,9
%PN94LQi-IM;^q9*rCd-$1?>q@Qi,$=amX&3[[i]`'aga)rCd,)Mr_ADQi-IMb@U64rCd,i.ce)8Qi,m.ImfmGgqbA+=7Vj[,(J#8
%KOcO"Wg4<G[9CX`b*d9.=iaXeaU7rHT>4h+=fI^t'`:Q0R5.sCZ;?l\P2D[J[EK$>4UQbIK?A73"8uSXHK8pn-tJtbT&<cRWKg(@
%R0Hj*=s\)#R#!4g];/FM""f^DZp-m25YDD#:4eFb^]@.B`W=uT%5Q3q2Of@`O:dX^Oga0e*a=6g#2TPDn1;DtOK5mX7J*s]4seS'
%o7C-bYXWs@AY^q!UB[UdKYor'A5`PTS%s`_5nD(b:gB23F9K,24DhppQQaL/jnI,X!WN:,J5>r0l3J8@#JNLYJ8's<>n?%:b%%<T
%Laf2p@)C[`88u>Dlo-[%f)NYB/2gEeQFc9b;9Hha;C6GkjYEYF8eeXWZMLWI.7bRL)ic^c5+>)5+LN]=pZ2$)oRZM&PFiTs[F"mS
%Kk;0Le+q$DcRH6$n/WCUQ3%=6dErOWV%SG[#_`:k;hBOG!RcPkSBN@.#ML<I.G(g('7?!%.BQI;b*7J=!21Y4Na!2G7?[X8D:EV^
%=.!IDB240+@MbVdZr#p-^;7>L-n?!U0LiJ\PqC"d;rnq[jt`'YA;'6S9\&bgO\CYnV"@G:9dPcko71VAr^kG:j]#7AH87BFeHA[L
%XA%RfO3E[_G*U#o)6`3&E[jX0J33k3ME)a(2jFJEY0skX:h:-SGQj\sjEXNIaggRTV%Q1f;E@h=.3=a:#7C2,[A8(Pbc6/NoR4(b
%^j;6B>XE^@m03>jPijs$ap\,0UN/HgSA%^0T'+V\Cd6%aUrkX-$IZ>:;DF<%'Pk4,AppGT-'aA[2rGXaL?5[6rDc12Zj1huQKJe4
%-JV"\dCH"l8m=YGWQH`k7adG7(gmDO"mBBK8ocC]<LP04j0c<fhkk6=X$<N-!l9CZ4c4V!8C&_Y64qlrm5MkY.eC#fRIjFDCW_S[
%8WmKE7%GQq6m>^^p;si;\0[BXcjln:XHmnR.S-Om^7k$7rgT\4V&=oE)_01=/1FF&,fm<p5/e`uX1AH`+Zr6O;#4KQ^883RoSmRs
%b)B05/h8[;SeI'L8C-f7bC%9AeFk=mVfG0`-o6u1e48_m8gUJL:mr[KLnOC4l8n9(#B)-j=<TFs?%Fi$,2kb3$tR$sg)cNJ+I>@M
%WP*itOF@G&L$,1\Hc8oe;dlR:=RPE1-M2eRN`G&uWn]Lp<u&-XW\,K:D1\#Z'X."L2Q>tbW^^0j;B@0r\NKJr7]WIc>uB]\(&KZp
%auesY7.gs<*@Q<C*RY<>1['.db&p<@R+>4c$tY*X.[5OAAu<u2E`@*YF[aFf]V+@dQ/6d<&!k')W8R^sT/gm#]P[?XoET.8#6&.7
%1GnM>b=VInXO#k5.S9.tW'MpW"GXZGk,=;uhns64!l;seZ>:t2AXudnZ?d7_"dqa2:F_K,WMus?AYI39-='PPfoPruBTWUGQX),L
%Ydb<-2iP0mCR2!u<c(=+5nI:"?D/mMN3t.#2FL37\lUehJZ-AImAU4o6P\@<@LpY1g-^r5<0e+IP-ou.MIbP=rMSsECT1/@;h#Uf
%L/"aa3\n]!.k<U2k\p$u'O=A=nlf6*Hm=?Ffp`]="V#:FQ@afa7AY##X'2Z8SAS]-P<#qgX#rp`!M+)iGtsV7GjZ3GbY[38'"4`E
%6a^irE`J_U3[stQ*X0o'A\S<,T:i5Ld"SK^:cV5L_H\<G;Pg]gm1s/.;&r3)Dk2>Pog;`JX4i>j;7.IUB=+iD:qu9'!SL06E6:=c
%%2C@g2XR\?lf:,Z-XIBk=Z=-BVcl2s"ic;N6s:#L,&'hPfQ>Ys[K3++6`/<hKo\AY(!7Q&*h-*A(1]U2IgbY!Cf+##O(C,eCPD72
%OiVXhQgpLhYR!a_'j4h7=NJEZ7-da>21C-h"170nN-__C6GA`)6eMC,d[c_Z1`hT?8=B#hQe[D'q8Dmc8`\kqoC5MEp.$2,d@3eL
%5G\!k&b^2'KjJ,N:rtP#OAKr0e.m?/_4VgP[(Gpt(r)I2#<aej8ZR-r:$%?mWRAf5ipCVjlHY1R"7`".>HL9LDe%^2$=(MfHK$,o
%<FfDNPumhcI%SpQ1NiOdSIl(pM2t6a0r[6HlAh.@A($W&WB)D,kA"!mI'1ud[6HiC.GdE4'ZG;5iB'5oM:)An0bq=)itq1.#6Sr]
%T<oo[^uR;3hAE[k^!6Ud8\uF>#[/n<*DcZ*rK#9-HmZ7Jiik"_a%7A;k$k+UX=(a&$^LMKFO6V.HB^p`_0e<1O611'qY-%1M@\nH
%`u[T2qKFL`hF.RI58)rPYW_C!#Om@HBVXa2lT]H1$A7])s"fOjs)\M5+o[@tX5@b)cjS!#mt3?`>[o]Vk%Ld6iHR6lhe24-JdHEN
%kYGUIdn./%`X?<4$8Sm.Ik'tCd)`/@\eGs9p^\]^KOP@SrZEob0D.>Nf^&S*"+_jk;fLSk^:d0V18C,F1r_\tS>,Wps2*\Vnb53c
%YY6+:jnJtd1[Y9pi42naXOEbu8dFks<-@mpSkfrTGiAm]6n?LU!hkR1d^]]NbmAZE_NO5A;X&j6\g3On)0g8YQ_[*7e7c-qR\Zke
%1Gt`sj367g,)5Kf"S=='UftBg)1o(LiFl$bF$BG69Cq,84eEl]*08&,Gdi[hoA!C92KnBXol`A<ML"Xo.O9B:=A2^ah(ciNjLq`h
%PQMTfn.\qGa41N-?iKb]!(*uPK(7\iF7JtM7!.7b+e$7n^&muEn1\a-OmLqoor?@XG=]37pbXWs(,):O`6f!M5P+RKrCG!+UNaYM
%ZTelU_lVc'88O3$TJQB%iNkYN58$2eIXBH-^V@h:5_h>[,!M./]m1D#V`o\l"#5_LB63UdU%m%/HMC_pNara+ZBrmKip@%ui?,TH
%\SSo0%VBR]^aE^m6%&\sioic%$:t^W%hM7EhY\77`e2l&q5]pF'Z';i_Kc6G#t,DN/gaDXI;KDTW2M&&kED+Wqq)RtR.3)gZVPLZ
%J@L"GoZGM$:G6tq4g"I.Mr\$Bh4FgeiS@*;(@pFtm!Kt%NF%nmW8DLTrL)jXkb\a(&X'UOc)72jg[TN]oM8\eFAmXIT0iMVN]%gN
%L!f"<@+s7r>X@7F6(7c([=W-t[t"hcS"Z2&B^N\E6bdEfJ4[<"&h.%XYppAYUA@(Q8cQ@E9?c)fktn3Gk",Y#:Nmr<r'?4ccl$"i
%Hll!K#&X-LAb91HN$h:HPp^7=o\R'RM&g8s-6t<mLdNj\X(WI`-P4)V^%lJ?7,6VOB,0%2EC%Tsp'?Lrr*07/iWmjaP%Rs\7%Phm
%;]tg;d2.erbJYALJU"TU+!g5:nZrg*[dXfG*d)0R7SUiTg-a7,n\fAB6R71r.HeB4s*o9,N#Ll-pk+$cU+]m;d=8f#n%&2W([(1Z
%V[qChh?-Y@a>e?+?6nmpd9i(q]ns\BdqnU4Bf>YQ1n4JgRa(alc"@!HAomuEZUsTBBpSdCRMGgmB)eJrW@.>F4Whms3AaG/qaTJG
%4Z&2ob]RQCMpC5q""c7mHJuBt1ti$DWEm"INK2%/:)gc$obaF4)dQ77W&-hL/[D2&&NCPCL,%TnbH.6s7uE+3!au!lq(VrHHY<Fb
%mOO8I-_@cu3;nhK'7TVZMkD[#1&[Y6HfN^%ZCV,]G-;]M"Q=jl]^[1Dd_(->HhpGXnat4N17m`F[?4W]*b>ImquekskY:n.ngGeK
%l&Gu]H*W@8OqVbB4r\jPgYcf2s,X+2Lkb&_+QZ,a:A[ChSjJ3tIUI+k")2bGEEh^R]+>0Bb2X#qoo!fc1`\)]q4HVRKSlNqQ^@Q>
%q+R$"*\U&^>K5#s#-eC-9Wd_qJ'aBI)*J]6ZkP]9IjQq""5BU8lgM8=h*p[[1BTRl[d*>T?r$%)o;P0l&J?,,ABGW3s6HqB7'c"X
%0nXK?>O8o:%'@&e_H_7hSNb='ia%KP&]]kj]>0&<*ZnU5:"-j$-?r`g\/Kk3h&2#d#iBW&s(+[gcDS#=n8GT.s!B1\s6Y,O:t7]X
%s#iEe:YVP-_30g\bUkjSFhU+hq(M$Uru\amqYm,eimmg2AqT?@hu2FbMhM:h1N'1\D)Km?&bbJE9JN[Fmu$'l3YtFL%I-1VhX&_9
%R,j/)mZ8R-eR:^mg^N>k^HE.Lq0!Ur5H][]^HE.Im'I[#B08OR:0i7>Odol>UGBRT?a/O";0Ogf93i.-n,M]H5$F?Qm4Jgd=hBGG
%TN1lO>Ho9>4kZUiL:Wbp)@?]#Nq]+*X,E-b,)K5qqCR$6^I;i<DOmcC$)2]R4J+p`Mg$NIirHYPkYJkI1$F\uGTiSi4E:aT3g7S@
%Pj3OS;k,G.g(O,57":-Nfi[fgg4T*tC\6QS]U**EgRjMbqugpC[_VE62A*D<Pu?Pc3>\TcMFRraI(\_n"h*@(8''%HA+4r/>q`iQ
%E>mc%o@X7HYQpdqV%P4M#EtKErMMIq0\'c5HSh;#&\3&aTJ#k`hPoM_EWc]b'QWdo+Xps(lO$>WN`?kr.o@CB@qV'q]Oi?+Pa65"
%D0d_GriFr?&,NUsb,eGqik:4j'$'cmlg<*?]_s"")rh6q]"le*f^$k=bl!"+\iK&"&[P==1kSh/BG>Z)k%/rSL`3j7W@.Cq9P9\H
%Du=',dhHRHXjX][$GnoGbOV8d/mLicat/h]DrF*8EPq>bB2qTAagnaf,B7kbMLUUI0f3a_G'Ym@Y;S]A7jS!UC58Xh2Z<&>3f)D&
%K=6b+XHbUWTm*TU(R#/A#Fpf9Y[?dO+W9c?`c$jVS9Hej-)S.9_K'NVmF+p9cjiE"\-X*@0hbaW`+_dYVq8"0c(oGE-fQG$7jMT,
%Q&HVi7r$WuO9p^Z_?Gbfdg7;_d1F1$)3./rP'6.V>S%>Gm:)C3\'#_hh\lg@\u&HPieg]VN@[u`)-bggP.-t%lHEH8,YR<aM%o9n
%\O&"V[1'XG3#g&h/WD*n[\fj(G@irA'o?_PRU)U^O).rZ2Tf-.E86OD/_9%mPf7j"et0ABa'4l+^Oa`(dTQUaWZmkjWN5?AFX=I@
%B'@'rn;8c@f"Q&FYr$kb!ZXb9+aVnG@o=s<Q9JcdSX8[?As=h;>17A9+Au=%omYZf**8R;\ppe1L",@IVKO@VF_:T'U:6Ogji?jP
%2MDT;LH7s0'RL=4\e8QiZS'"RB!L2X1F8o@VXk9<<Pki6.:V/kikVEEdo`LYEl#3,8Gka,jDVYM:XMcsRc3'KRlUWmf!>"n+O"s#
%VP!5s6r,<M19C`FqFI.AV(Z'=T1M_O]UL&`eH'a.]&Ta+Gg[To<1)AJ*EVIL(X`2'YM1k;e<:G)k+f(0JUhOF7jGUgD6>eU>#%u*
%4(JIaTGb@uH1/]^>"+QKf(2'1DXK.scU%#<_7iDFbX<AapBNb.6WXMeV>Jd-e-(*M_+#=e8IEin5R.#4fmk\'=S&8eSHCY+27^F^
%7rI1OoDirbOm>b:HEMg_BiElm=_btFmo+5g\2KL]Rs:2<f/OPCPmZ=\Vu;ZR>@[Dr<lDN8aR166h&TR-BZLrsHeR`1L2@m,LT7/1
%A@0]X=&:.BOe+7Zk`Mim9gu\_^d44YX3t)ONR.]';"5RJYg9TH5I*^o;%"<U/1c]j*;+9tSiACtE]om<)D?<o#kkU[&MR?00a4Va
%l/j!CA[DA0RK&Y91*pS3MKfL#GHEo<hK:LmqoG4IW$X6-=\``s\/IDFBki9*<KTQ%jJ[ZG.P#8DMn3(\go33Ts(T[AO@(tWp=_rH
%eTc&9bOjLWD4T1^:pq_!qflYl\6-]fJi&kK:GGaS`0jXb8T5GKJYX)7fISk[q;FdOJLX$_d*1Fb0s=+&TamNFL3lY&0qs3>-Ml4]
%;WF%6\C.t+5Ba>.XZ2o#Rep4pZo[5]feqKmC/h&gN"@+on3X@JBpg=Yce0[R1Daq$-R[SH=Tf$6:r<O;[nQSdXqU!XiU]n@n8jnG
%DaJL5.\BNEY*<k7?oN(M4"HWSF1(Jsc0P=Oq42:A.&B7Ts#U,C$Ts-OI$+#UQH/G%G@M(h7&ZE!iM/OX(Z0-7EDn;n.<q,J$Ia(G
%On*_enFGrh;9UAml,WGcEA./h*G=dR>Ycs5NaKbg,TX6^[DC[#VtbFa<@C8TeZd)$\M%e^`/b:eB8,C<@B"R"R!^lNch=7"mF*5&
%r738FNF%d.i_a^3XXqM6/ZJAKHhJ1,?Z)@`]h7jRNk%?=,[oF#Kc^Dp0UCG=JM5C1@_V'NiLMWjNH2bSkLZgh>&5KnBE<9iaiH>e
%/+TCNErcg3+EtKkV&Re2pM6ZXll9i+EIl06<f4kofpZliH2N8CecoAt]2`Hi[QD0dSd3q)/tT^!/Mge@2?-&'kUI-/YONiLi%RM>
%^\"Q@3f56Kfm3@ck1`oa!]QPf?f-gD)L[`s]meg?1qN^Qq?]kUgo/8sCK>aQ5;oS]4l.0#ifE5]meNHORs1uh=ed&<1jcXFF-&%<
%SXPNq]\?0K=YuT(gq8!H8=;E*Ccugh@ep]rMYKV!erArrG&*>pD4!3'<StF/QAobia]?B^;)Br)fcF4q8M+ud=+?Z*l*fVB0.+_c
%o`!P^k2f&O4$1#69h9Ku:Y_nhO%?QTdE_$@oW*@p&KEXQC@YGH(2HCa)k@t@RPjC#j(?aVh!QM,etg]roTJ;XbT"6oKJn>.o5h6-
%VjilZ'fQJ?bV7W.6XdntRQ$ZD[_fY/k(RNE)qB,SXARISRFSXEU'6.tS,QAFF_K09l]nN2Df<l>X_mHDf>Z(5a)k@mg/[jlC0$D)
%UV7S5<PJ&%?.CXR7W>q['U_:_+gk1s$>K5/F\$d81XS-b5IpP82qj,nF<f&+@^/Gp7[&m%Y!0M@TN8GEb)N!/bd6tC2f%.2jZkr:
%D"K:P1Pt<6KiUaN:LW[gr\HKOoITN1Y>u0^VN'H(oM7"W]fAmG^>ZKJCogEDmZ)Y9R5\<1DVk(n6bB4ThS&8OFcGB]jC[i^ip4O_
%d<"_>H<@OfZkC);b"<u/7NWka08M-\`qm)_>;'/:qOH\s[GSj`NF"I=hg,5j6uCH6B:=6oH$H`5F=\I;5-,YckM@]]Z?`4q-L^JC
%4Nss'bf2,((XYsfd7tmaA"%?h<(W0@gDdJfG,<;Ro0eFf7O,E?1_utAbPf6&9BG+<27bI*=.9&s'p0I6c@pA"qVRo'hJo;WZ,N>K
%`PXR-jN>G?%@W7p7H$\"Xu)uCIT@taY8D!G0MmU>)GPYJoYRn-8o3T^B<[8uU/29eB.ojLdC?I/[!uT#FaT,d4n\%Xoa/U\:V"mN
%<D5>LO8j".?hl%n*]E>,/V;@gp[pPdbF>T$1!8'`kS*N^N^`2[gR%+5-h<.2-r1$Zdi>/Oo='oL#nb(#hkCg!(R;\W$7Su@AQ?T0
%mW8&rKRh7*!rh_OX'ZqqX\&t+]m#dN.RcB,GOE)h>*W1!bO3K[<Tu#X;u3(gPWhOGS%DCeN%pOe(jC=K*jBrP`AN'.1%S;=btE+b
%7P6Q^aiE1Be$i,qoo,2)g=k@Qo['VFcJ<F#$<Eu>W0R7%V.<T_i#Xg5^T:&B\6fc-+cFe3%/9)R4[Ll8/C/;hc/"''gIL%7qDDn_
%qC;$?critBWa`%Mi,`hR\]*<o9tn.9;RJ!fiQnYb:+])M@l0L0DkV)Hh@&nVYHr*;daZJ(G'@luBO3/^)nqm$l%P'NABP+9[H.R!
%m.fcEQQ'J-0H9f\P,D[LV9.Y:GYe+EdZpgL$iUM%m1-=fnkq;dSX_%8Y-:;UQiq`EiSo*.6)<,Krl!-MAsI#6BPEod2L`aEOWh7;
%-=s&SI]TtqbE%q%(ja2%9>t#B<%>o6_W\t.M>ZA&IfR/ROS5'-2\S:**$rU"F#%uLfDYJiG-lm<aG2c6GE?clhc!5;c$4`Q'1<hM
%;*i2s^7c.idY>!4hhY0?kOP,Tek2]>)c(m:r-Q/_.^%GoPH>)U7Q7?\\7MF?osT+A=ngUS,/s>_J)7VKoZa8\=u=8Vg=tK@`/Vpn
%\2;HcVoi*T3WpfP53ohfdFpj<hMhNiB_#b.D,ct=nM/;"Y;Al`%+Jn:.'b1^mI4rKBX7;AegQj+(r8SUCofCDOmQQ0.+f"mX%#P5
%W3Yi,`er@BWs@r[5p*@"0BaXa\jh6$j^t\)ZauQcaN`a`17dT6f%X3j@G\JnR=)0LJsZs)83J.KKR-hfjoUI%@GU2g=mA(E-(4Va
%f0ue@&`H&2X)e+M+)19Xjl;1Tok"0M7&sP+Kgu.&RW5q[1q(HO4j`;/N`a[3c(Cm2If'5qH-[te=uR8_9psYT<EtBhGBtZq]iqan
%IW#&EO7i[NDsMdmW:ElTYPaj?R,KM8L/nd6oHSB?-J0J&58D6(#S70*1^I&cLoAM9pnq6f_ZqC,6gdA0'(IF84/Gp)GDc*k&g8>P
%5)I&:9(!LRni<k)/TD`*it$E_fHrNt?c-M@5*'%gk-b-rJsLiQ1k2_#&02jtLWK6iSR3]nAWeX,ja-oL_^^)WX-aR+Ck+rZ&A,sl
%\VC]1Xi]ReV:(Vk(/.ld4290H'(\/sl\JM%0+26\F"8-8^'fqiT`^13%AKa8R:mL87W0GrcmiW^)\j2ZN<,_p=X/6EgR'J8ES$)l
%FBiPD&!lVX6cL-i\shQ[npKW,'&-Gl8IQ])TcN]:od,A_<\YFrFOLDn3O'1N5*uKI-K[:j225_<,-.)'o@meTk-Fr^_MQb1qo&f9
%V.;tUg,1'_:?T$kD4Ri4RAP"0LDFI'>RW?jeuLVTcC/a@EYqCqp5LN*c?(4;>#5XZ@G_5Q1%8I=pfWFAXLPD?%]C&/pW_mlFhWKM
%^%7%(Pl__3dB3hkk/B."l-ug3Ep&8mgW7KMHs.tt!>[*gj=[_9$<s\1m4.j:MEP)No('ps$aZ?91a0s_ijI?2a`gdkQaL^"%iWt#
%+WlGGKLKuPFae+PWN'<kd-Q?1mUgop286c3F1e=BUuhRDSBhLEqji7q/d]M;go8h-WV"5j9)"n2[-Wr:Fnil7GFZM</R-2'e&D4s
%R9Xf2l!3gmYJuFdf;9%BWl$@rlq>!4gFpDsG/1Hmb&W,f4`LJq^@Us#-B+@+Fj":]4WeoR)oct4D6ZCLIP'(\1HYBZ)6Q<riFTTX
%G"d8SE=?$CKe[7;B[%@WA([>4[TBXqWe,)f/"cokDledGO'rR\C_9%f1meGV-aC(+<nH;"dJ@*WB*#?"_%!Fo+mck]>e:TL`aU8/
%[/=C\'l?HG>:jS[crbBqEKC7)3[3cK@]iori5C36op0%c8'tae9@W<9Wa"q^/47(HWOfSoq8dJBAZ\aNBVYQSSKKB.Y./Dc_Pn^V
%RZ;dH3fKL%Y[W]t'.:1Teh,^"C::[1!2.aQ<BjWU!;JV&#lnUbhf=+Nn;^_0:"C-H:7:>RG#W7[ahq3^jV]-iIT=uc<1eJk<3.>q
%_oKV@5=*HHo?SW(>>U@H1.BcG/8eni!32,=^)2cDOJQOYR$#4?VjP<Bm+Y\!No$VN<dnPrNJGI'QS:P0Z1Hb]AEd9Ca:h'pPD@*0
%-&[Mtn*#MGn@hOSam_-,G^"MKOF'>64c$_5qr(TKqjaB]m`+OBR+Yh_5l*@gf'd+RMB28cF0.i;_X@S?8NHVCoV0.<?ZTuJY@/l*
%;s.rC.FU&ajr6+I.\/P8qAl)_(d(p[%a+G)Ch96,a,g)7qec5j7MCO!BDQ2$d?GDP#Ua9=KlB&$3Ge*gSPa5skE@^XilCKX\FrB:
%Q/&9CpDaA?)QX7A,MG_l.KIcDeW/>A>m<$pL!CAaBVG%m<Gg;"45,D6E?-h"ZAbZfKA,2;@CBXm[h=!&0QhRmAAVeJI^iOur^<kC
%Zs;u4n#0H?'`bT5\!hSHXXjh_CiSUd;(=7/mn+q]dONIE0]7QB4YGZG<oohap:ppN/&MB9&PFMnruuEVMu!@;F\e366%R"@"D2b6
%#D;TmLdpEP\A`e'le#W2TTnP-NOgiS6PmoToZLjqa(g[]6AY[F$Mp;A-hWZq1jKhb.doI?F@cXY&e."IO-c)E3Y0>"Eubn\::FGu
%0X4qi9/HdqV*so7mN<Z\.n_^\0[oL/b.J6(n^`lE4ms>b+5HUFZ!T1)2_r=^2gXGf`83#!'/q`5ak"Yu34r%$8CdrPXjh"dlln:b
%%bk+4m+,V#<(E&Q]p.^jY^&S3TJ#l\bsXO0^m8q-`/0*`En&;Smd,WYnVt-qZZh^=]tKLbgNs*3b==cnAo:=B>FJCZ1("B4RPq+d
%)@DT\eo2C&m4G$qG=ImP@rG1j>f1Q=O0_d,28#!$Xj'q\K9k=s(pAW33S*&cs/`<Z"-MI+f#"775-V:-nn-i]/6>1ACgm;!_?UIa
%<nHftq2Nlb<jDA<q-$fR"NQMmlJ.jd6kEcdM`L&>J$KOo^X-_/]b[=KMq\#k(K_..[4i\Y(tQQO+K"F6X0%,T,>U,=cmd>^eDMc5
%ON)>=q#G?d0+BC2jj\VN%2fO(ql3XmBO99,h&)M*Dd11agL)SG\34M#a_3<qgfpcoK)%]T?(6/C>_LSj]&Z*g*ksjbknYV>ps=o`
%N&3o_KX3nrEa`_9)/2j.CBf,-p$C/U&Uh#/F-U3kF[b$d0^GQhH@&obh>jc+LtE&EXc;^:</e'+9[_j'#9PJtB#3i)WEo!F9+fBc
%Jo.EW/QF2XZ)V!b`?uW7;ggMLB6b!.fdrJ^[D?/G[Ck1^=/rg5UR1956).nW60IdA-\j<jRmEr_%'>maB:hI[cL+dtLX+O#RmC\M
%/\"aiSUC\_3P/eo*'1DqeI4KRnZA6IB:hJfSDCGZ%\7=/8d:i3[c$.*FS6SoA;>C%*'3s*3daE8)KP'.1[+?)ZA'>[.Pf4(k]@`E
%6U7qOg7)rXMcgJ$FXGJ]P$QL]H;UT1!k6LrY4ADG/ge4eZ=IM5;d$1"=uZalH$UDk$cS95n*rQ+[/h5ij%5SKUWjN*b%j+LEnM^j
%\VeGV:m71CJq,l#@C[FdCZ=lRNH"FXfor:GO\WUDVhnT$acQ>^jLMS\P'+p;R`XZU2!7Wb]N!+&LF//$%LH+$Q3Og@.#=kA='<sg
%Cc4+dd5jds3=P;#dtM/bj*++=dmcYVQ'aO^r;@?n`fTQLi:-<IE)fnSFac7g%TlmY`7P3FY_It/)$6Iiq,qIf\2,gU#hD:3)!dCl
%93:Z#1:\XRS[d9boU<hoTME0]KM]6R0s/S^V=iL7i.D^p#7:<;iB";e*.k%,dCMnaJ=$ZO>GFkCZt%XefrT"5=^]CbW7AYhZaJob
%^!%L+i8)E+eb%UC7a3HZNIeS,P\?Hfj!M0qn\EcC@c/oC9i<gMkKc-mhL-H;UF*`@*hU`1\I:46dHLYT+i.akb.?'jQlG`M('3QZ
%DmL;#XEQ=`^mJiKs)N`cXG/I3j-L`>W<m\C3&]79[JH7@?1uo2BfDj2#LiQ%*V8BO+:J7/!_8mYLq0"!jR/(=\&P$):UW%PAr!PV
%F=R@G:+*M1JiK-<%S*;@H+(p70i+'=E/"c_,;qH@AVus%]2E1lA>Qj103BDc;'jbVNi^T9Vn'TnOtHrLjVug*nd!=#4tH?YoOI%7
%bd=-UZudq][]n',Js.SuEUR"B7+nOV$gD/.-OXq,MC##]L@DR`*^&[3LmH)FKmQ<[!fij&2jnZG>pB!cM=Xk>>3j229.&/![u/ks
%Bd&OrATTtTC,(d.VFt*Rbl5h2FpFfgXhuA>4B4O"91Ps-[dnu$[iQDILY'[b3*hS8#2B$me!2/6d*RpVbFpYqekTpm.sPUSCr+Tr
%arVEk6Sf/^2IrUEk3">VOjX"#+[=:YHB(pE%`44JE42"t.S:n&<0enE>%QADDVU5WI'uic]9S&k?TA6C\MZ2VLX"&'[3'!(Vp:]Y
%jK-Dj`qP:D(0i.VNiXmHQ7%G>Qrdo4\tI4^FNgdi/ngQYp`Qcc+lpRI?C`6n`&(EF3C!_1l`:Vr12nnt/aYmtOGquBL[(RG%`G#E
%kUc+f[H>B[qYAa/&%BXUA'=&QBtOdF7bkTHiKf<s>s'4S4K`VYq/EBI$bD0MoXMsF?TfK+Ru^6!imsY2VtsiSN49Vsg^O!teu&YP
%1EXnPRLs2$"0b`gSDG$fg=E7ZNRs7p%h"oFW*RG3,#G/R_l-eNLl"O8XESb%Le\HqDHuO1g#jhB>t74B_msiN%I(+7MrA?/kG<JL
%k?4kg44\S]/dC00U=l.>Cme&6mT8],Yk!/Qd^*BD\R^ade%JbFh)@/&CWVBA`iM2VFG\B*SKBe\j)Gm(]OPh4/uFVpgkI^HV$sNe
%1gga4'cYk2Y8GRMCj;jf_BmO>_/PpM_tBpA=b^):)31)(3c3$h/$5>mLdl'6@>&8sPBo6A\qEj;^33%TE(8da3\s\&f9qbI^Q+9&
%kF].mV",JP[:H'W3,?T+`VEtYOMB/3F_%9l3%g8C2U,RWqNQLrC^s0F362A^#L%k4<aMWqYb<Za:+sX'c.6m$$:hFpm/;R;VSX3)
%p/b/NQLS0o1$0g@aH^&AE[i%hKBU-pV-Q5!NqFm3a>@0X'i+3>Eu0"Tek[7$A3:I\@7>(u"!eXF&RM5n)3,J=qEQn<oqUFD1%cs+
%E$,7eR1!B/.ikL`5@f#Lblqo05n]ZF/KDCOGsR\8/XJRN`uL;4[H+/Kle=Fi<U1ZjQNpN%0B/0Y9\Rs#JUY:tJ\/a:Hq7VE_c>[!
%^<kOcmu*F6msU>1QQ)"C(O>E(qEhZF1jj((c&s`+p6t"#&)S7M3SGR)ZX'FL-Z-.n^bPp!DT?Y53>Tf,]X-kJesO-5<L`=jk\OOS
%>MS!LI(%5&gShhS/K;[\C0NN`hUJ>i))LVcm#p1P.I0I^;Ji7-I4ghSFXGk.=p4l28HHFa\n2l2-+gundq4TfqtQ3>6PHL7Ya/S#
%gBVBE-s-@iCmSSns,PuZX;Ys11g8r1ArS;7nU6pF=s,f<l$M8\2_B%VI1a)RSnr1*n7YjR@AC=7p`%JsS+h$2DdMmQ;m`W]oOPAl
%`oXq\"[m)(qTYn\_O(di-tQZUDBtmc>n/-kSPeJgEi[Ys)r!`m6c?/)#*8&tWBCocgW<pNK(5:3hd^e>IoNa<k/t86Nd%k?bOT0&
%a/f>?(;*5aX@o!<<Lg`qc8WkUotiS02V*L.Fd[FkfB;Q73O:?+Gi=t'7*^7/g3__I/fSdl5(.C[8URg:Uc[Eh_K6+(ZMaZ@meMQ`
%Y:#rJFc,j</p78dQ)Aj%Cq9fK0M?$,RAfNgHuf3iZg"R`jRm-6RJ?tcIT]`1SXJKPGikc"2P$6h?6<mrH8_<s/tMG.Yr-(@R=TAp
%"hdGbh81]5;V?0SH`ub\VR,+s=_BX`=Y?7DCsV+oFCr71bLiD_Zg#\Sl($("=>ZMm9Y$;3;d*ZhSQRS9iO&EGZg!i0),<(r?T+IC
%EiSa'Xs':[D#Q7M9W]V1c7G=-r(c3NZK]RuH2R!RVK7Bpe[+MaEp6WFQp.!W6&[C`9kTSu[H;9d"+X/+=K>Z/,F_F9JE5-5/+T.7
%l-+<D'MW:YflT.'lPd+o/9aS7RS@G$^8s&YcH8)[hJ>5/AC,Z9f9]3EVF?s/a1&V\R%NXP5l#l6od#>r?;g%XS*o'8-U,)c^"%@K
%N7u7NpXM!(ZILR.]<BM=4uKsHQ?[G_g"$j5.[Fb>poiq[ir\Y/"O-;-eRq$,F@te\A*UY&9=D=Q))%[hY"QmU:-#YsPO7bD-5+=q
%;s>SrAkB]iM0:ARQ2?SW/YZ1W7:Zh5G2o"^pg%-Hk9=Q`5$l+dhIF4820UCVb8DtE>C:+qC[S:lYB3C4>Jo^YqMXd-*0BI7[D-:m
%2GIn:C[Q"$MX!WSb@MqQ\<2!lQTiXEh)0Bd\SnW/O3kJBBg62gk?OR[1!a<L[\aT^1pf.$nsm7J`R)u08S3DMb3(\Vd$d/GS0rE%
%jcYIBmUL_uf1O,XZOYu6T3pfPQ0']T%'Yq87EI0#fErH)A]Vf2>j/P-6Wks_i0n"%YtL+366/c]G_b*E6XcO8?-uJ.qgW/q6hjuT
%q98C;nOA=h?^?CUI2oa*`T%<N,'UY&7Wng&<B6.+Z,gJ-AdUW_Z4gUR,h@!j4!=0P[9mCYOBDB+3p\/\q:<bc"U&59F<NSW?XI85
%+04>4G$1R1An6`jlhb"*A#SjT>Is=J.Y?Bk'"<al2FNQVQ^Q9,h[P=bFl$NYFHOZ&K(n`RMdKG#Y`eLpCFcG!(lE00k9=kG5:(iq
%=nT4<E[dP;?q>&Z/JbCE(rTu0K?G9AUjF!4&3Y*&aPc!-0<ODl4(r22ChS77h;\0006>%%H04/0CoFu)DRGu)gu]81hNYL8)t*?r
%S1P,h5&QEe?_$[SQG;D(ikALUN]Vu:((%A+lqTFA4o_T0Z-+b4AAQ2fI`#/</?tA.&o7<&Q#B5AR?+*@iEP_*+70Q]EI5tGL9n6G
%M`E$AIP$DapL\tOVRDjJ*1QkLZQpk[0,FBNL>\L(YKKk4OR.kmQiu#+Z;f;%!HX[I"D;g0Pf@7'P4N(L`.V2HpM!<CO<)Nf_+`*s
%*2d>0`jE)PkosBZNS+e&bl5'ZY&nXif7Tpe^:7JE.P771AFRCpgCnF)g;Oane0V?5/\MLLkI>^-40IW^.#.Gn2S%"N/O&gh<YJ+o
%J]G9nf\B$,=Ibq>8i(ms1L8aXNsHH0O.AFkDK8uD;u<>h(=?P_0aIHKV/t)ODS]EKB.$jOB1o_pfk*B/kI@6=\Y0:i26t<oTIN>7
%WUl6dHh&0+Vii=L[cA.9dp*9$qekBQaQ*#K]<P:*lmq&]^0%,$gJTA:>Lu%6RjL!eRdtoaj\JTc>&m!Ok?-Vqp)^YZbBu9`rYDh8
%_@,f=+8Qr>Y_8_EYZ]kdQY\h=?$#bZ>;jW(h_/k(1o@m?NB_jY=uG$?]8*M5__at@\X4qgbth1OJGS'9K:f9>1/_CA>gPM<&#"2S
%cq&V6)IAF[c2AkiNn6YW`@;0iT5I3Z/eeFaPLb`E,&_[kNUDURbbnGR?;,_7Rm%:b^15ip1i4<//0"7&rJKI;O^4ng0h4<U^W@-$
%/3W]]Rb>0KpG*hNm-EX.b4OiB9BG-\&Rt$(VE9'kKG9j;JkkR+*gsf?>rn7,]BWY,(.cS7k;$jO^DeHU@cfRfdWTI[K<8-2F"pgE
%88N1_ZO3h?m#pW4IX/cV.dP$MlI>(ZI$\&:A\1T3=<FUP:XW1p7;.tJe1nC6H,7iWRfosWcF@%A/'T5(;aX8ih7!JuN71sXHuLH7
%@Fm4\h/1`67?j+T0CFt::c)C4dDq3:ZA[18UeA@hR:8"Z8Ul](Z!)-YEZ!q3`QZB8`18?B`K-cOdJ7"/RCrgjf"$LGH096i_P%>>
%\?_E+SlX>aUrM(P<fqTN=&4"Gh6M3JXu4K+>f!*_a,WJ%TUTF`*H0GKSM0,9[8^t;Zs<FIZp>qLEGqa"r&E*73sjB=Y00<&,W9`W
%B'ET>n-M,qG%DG-C#r>\aO9q\?+]G;N9Ru)hq<kc=rG#+E<1JUDi*'s27LO<an5=1/:Ys]GLlV\K>ho53fBML@-EcZ^3o+FcT,s<
%NGH,tW=RNloW^h`!O_LT2O0J>8iEZ!:0/@GRQnIZR["j+F^,T4jPm=!pV7bed4o1`g&Z9#<>NE<@kNi>6(71G/r_U+qfEUiQq]o9
%+^N_u4,h6elQrk;D7)_X#LN8d'"]\[=/rW-FLpch5drb()Xlmqraa%h5gN&*J8TE.4aoo[igBH%S-,^7HC)bUFINBr50LqY*A2@4
%4gqM8V^t*B3Ii1N.Tq:>Era=2A^c$if6/U8M]:@#E%)kMbLajC^6F]K.f@7Yq(-Gp>O/,5[W62$Qh"QL^UkHS<k+BTdJEk%V0n<4
%AZb&l55Y4-=1XWWkn<\>LmIsc7/Gr.)SA;`>IiHlrDkotMS7V[kubHLme*nD&5Li%2O)IgIdWtJmI0^h)lL's]m`Z+h<JW?=l/IW
%mhO8Tilg3EB7HtSmVJhun+F#\A?9&r+8P9c?9`e1!7=X/\C]&S\F`fd)kW9t"!?FdB0VS$[gl]!Hi<;dVVGOhik9dtlY[.jJCrZC
%B0RN`.^m4-I[Xt+h!2@JIcVc?Ipei!2CELloHRtn[E1q#B<dJDrN,!saK9o,a@^O4(3Xs)Q/fQ,p84uF$@:r`rNt4#N.PC,?9`cb
%f(\\dG-@MQPd!4[]ZY[#m%J[TFK_>8L5MF^]%XiH)HG7*WunmC@J,!G'K.e]ePCN%an#3&fl'=->b4saos;E`O5\6Hme*ms\AjiR
%)Xd:)^XZ-%i*Pq[5PpEmX'F%@n+AIGU/u7*>PUHH=1c@&mc.OI'G("'^,=^3B<T7ccK9)Uf?\o(fFVo3jLp"CRQS.2cZ%V9P5"g@
%jgODt&m)j"cX*/Dm$AIUos<OoVK[$_HESF0[eUNYMr2Ra9TY"^I=/*%U&J*-<USmgDbF<,hI+"JDkX6,$lQ&1\CXLd$a@.k&+m,L
%>UX36X5>+(C!3P;H5^#]?9cnf.9?-4V`&8Xoip/%\'Vg;p.ul$E?4fMfdfAVn)IUu$WiIVL3rm+Hc?HT4;i&0_sq5P\CXO*MW%T#
%7h<8UHi7ct]@^,"`I%RM".^.pk_f-2kqJtjgTAbTF-H46hWqY0hbo@e2u!0ZZ7B"jfC-NK<kfrT#>O[[ZW@QdpXaDgT=n]IZ'2]e
%]mdC?Ef5lfom?Z$+O+itA+[$kme*nC_PqI$/bf*%@VdXjqLrd)oeXjq?/f0Tqo-B6Mf\E8rTk:)ECMcemIDCFCihLZ>qeF[PW;h1
%]pXq^Na64uD!#Teffnn3QaWidVMRuVb_9QIDiKq&p)99!Gf1d,V[4b#;!j6>8]E+]-,9.'Q6b_Q]'o/2`FjOq"[79_,O?CdP]8"j
%V`G=F2VO>?ruBnhJKr7Fo5acnMsZ!/_Rg%;\a\JDFXqjoruQ6Hb#b+6Hq!X3p$A^&<QG&!=1cUD\baFe.p!h,Iis\U%`D02juedd
%DGU+Q>]]c;cJ<KH!I+:D5NhI0G6.+ddL:023ZFF@bKIdbpNiBtEGp\h*U`;WE$\(R,q_oaa1Kci+5KN[f5+j+PM$.oi-GTqSN@mB
%[,3sZ4MJnM+5QmAr:#EKr==mim-^P1Dqri;[m.Y+)]Q?_7::2`oq*LNgR"J7L[nc-V?6VVO\,-'%8R:%HRi'6DuJIWfL*t'@k9p)
%SmH\KE.7%n$43PO?aSHX106``pB]o>(<FWG&MiK5gtU[Y:m*H*@?9;XXNBBfGV?=C`)V_.7BZLD4lpFF(W5M"9=b4nX$4)-K:bb\
%5C;q=`N-1+a@X&(.X.:^I*!HH^D%oI>;EVQZ`PCX^ej^51.+uA*u5BnD-q8N,3b$*GO?Tcp>ERLgF?jr^.@bW#bIXa_H.ZmOEPsO
%"c'g*+jomMc6&'pTq>%9de6I;VWm@cA@E*S\[f\79)NS+hi@:^Wn4$%\kg2,j7-2$_KcoF^R=SRO,jD8mHt4Koj%EA,DP)NCupC-
%NXNebpa6?dJGee-%&#V?KB0VhpRRp1r!^b5o78=fKR4?RK6gE"JY^)_df'0eEUhNb<u?t`e&'f:r@]E"Ai[Ds#FV5g^lI>\5KjhK
%[n?P-!9Dcu.B4-i`Q.*aIHMlY(*MH!UHf2>H)9F&9pgFG`G>>ooblM)Xb:;Y.8nkh740gCmmm^9A^=cfB/:t6RXWLY_)7:'-4ZM/
%oWrP5_LBHR,'m:L5a;o/Z,NHM^47WU,&(6,,(XimVRCI^#L@Dn0>-L]'8$aVab_sJ'(PR_mf[t6(865!D\Ga\W.ET_Mmqt$>2EpC
%DcrHooOG6JDsqQ+5=R`Zl<Ye4V,/pAa/hF/Z%f<IeLB!h<,TE]F[-OuXT4[0<t%!3R_?jTCXo1#n[<hnP:rn'j*T]a9"l%WjbSCm
%%32"1#f4@CVG([*G#CUmRjGGeAJC4@60QRPd*H</Aq8//a*6er61jQ$Vn5(]cAQY'3t]iPFkR0"9tLUqf\K4h:TOOmpsW7D+Pm>8
%TEp'2piZudLI;J;IO:ED!^M6bDL<CX(6Ini,bg,.O5sE!GY#9iEdJJ:j2XIg:,%IX4]<=)OZ:"W[&^CHV__`X(pJ(3>dPqT^YtWF
%j,hL>r'jp>8"[YSU\?!T/dUnjK`O=g`BZ_7+P&CG#g.I6WZ!g?NZcG/W<C:odK\^aA,qj=`,L8m?KM,J*_([`]_%e7Qha08$khbT
%MYkIb?8<^iI:r*>60@UFo_)SS_.i4fia?7qjeH$-T<ua0&5Ne`$>T6nR)^k@Y]^_8q)qdo'NG=a.j2,u<8V1b.&1_JP`On[LZj^"
%1mUPgm1=EZT-j1uPHmu>7]$3V]Ll:06k]Le0P]m4AQfkXaY]\l[M*9inU>5f/6$eJh6:pH/(.IFA\nLP:G56U1olUUgreZQ),U:l
%&@GE[p?P9CjmtUO9C]3E$<C[\P!Zh86Z^QI&nkstdrc1\M1gPuI3#:Sj3C9a2%@ftQ\;5p9,'^>NAV2?Dcndc`go#j&"-S$9mVL>
%LBbI#-Yh]Tra+TI%ZO\%BHUa=Oed/6\\rZ)bOqsq4!5;K1sOB63B'=s/B_nATn+h/4Z&4>c!>R-$pfV7"gan2:[]2)$25LNb_'F?
%q!M10Nu=$^:*S7-;L1<Kh1LSu@^GIZ<-hfq5:T=SITN;Z@uG9oN1L<4WsbcY:/\K@nM@[DrLAIaoBS]d4,k=m@q=cT`pdh0$E";E
%nMB'OCPXQ^CmRkcRWE(+3CpRs/;VfcWX"YGGoA.4D?p6RqP;1>#T=2[;LR@5K#;%%'S-6kHhlSbFU6.9g-6bVg%RrQ.0Q2@\8q=_
%%#RuEd9MKb!Fq_9+er@(;ZuN3DrXC0E0VE^"/Z8T$3h!4#)nTCmKAjejk1Y\.qd2D0eg-Ioce\Fk(_hk)Dn#O]KGu/nHuNnV./bI
%)Pj@Y5\KEZ)6'OU)X7bRe(A=.$=8[r\PKU7IECa&2DkJe&,:O>gnr34p@L7?JqTm%K*;4Gmu=%a)-9Z8^%p7:I0l"_=SBnd)[-Po
%//%)@QO4?HZq-"_5XFDn.M0BD5W82GI<__W!ksDHfZ;Bt.86Ul,/G0$L]$C9VYsun/?G@.P</[Xg\>NpTS(2Am>R6c3-4mIUHk4<
%/./tTk;kY3UM`?igJQ:@1++@m#R18rM])S+p>(6AO[%%^5sDC_a"=C.&b;p%<dd4MEup'.P"VM^k?,-dWsf*+:<^E_BIpU*+Eo4c
%9N2E#TLp)3bCKr'<,'D-*krG6#?\QB7Q^fQWa&TA"B_[7!LQafOt\5M@-M^25,_G;k5m>L1)l#Emh#^8o'8Rq<9]FI4U)JCFD4M_
%.TNKn+;f15kc*!n4"fE4Pf(s>g3Q&MppfU+nOgWbm[,l1WR.$Fo#[9l\K"UG-'2\P/8-]HgsB/B<P]D\#m:](`L-O2W!)*\AE[_Y
%BLX2(oH@`lFU5ulK4(%O"o?$9a<=St/2J4gPp1=Ke?$`7*$8@M,367RnOnhaSibNB0/-"BYWms@U'9M8Cgh.FZff&92Ymf1T(jKr
%[/`D%>@7$bn/=pV^l=[.0"YdTo'5cB2G/Z4]=e6R4naiZjNW_Oh(N<DrY))F^;a8uo0%Jb%032`f8;e,"R"eX4BnNK6#.Gb%P$i8
%-[TFq8.cH[nu%B4OLOpgZ1^c"mia8lLoUIgLJ76sn&u8D(/_B6E7is%@5=Z#lH:#n".?BMCq@0L0,9r1];)-,mVWF$:1/K*2<a[o
%-!l&%[Vj!nA9,td4GRQaGRPaCfMQ8SSsdhAlE)i[A4hOWF9fE?`9)@'2O/J!qACL)R!9-T^NDoj_$.<RSC#o%WQ:_:-[&r,&MBZ4
%@=<2eRk[<ZF*c.Ph)pQ5J_al<WV:5PDrV`[qhM.SJEDP"L!C%`W"!cV-^j!i3tJP+E/Y3]mk-9+p7c3L236eS,d>p2=oLCh-")$3
%![!Nqc@7-KYJ-jk@2Dri&o!DW0l&'Xf[/_ZP].;0e]g7,]H?*VL"C4-j(lp*!e6_sesS,k0+'drTpcNTY%DVe5pHc,[N"GbGlgad
%R`!+*qZqaUIpuVqB$jlO-Gp(0!W@D:mR)68623.tT-KcRb2EE;lonsrjm['.Po`_A7OiUc/+$eqCgt#>0(P.:*Fpu5_*l/tMq65`
%*Tn'iHYGH?-_.$r!5-T"_=<XL$XE+O9/=P3lLd:`jLa;FCkpHHGlOFc#X7B5?Rs[5BIo92F]XSR9(;r$D'%1N-AFmAj8HtjRI=H>
%$];E'@b;\[(22%XVF6I?.=-"3OP`4^:5=1COjBZ`74n+Vd(I'NI%_)8.\%0d2DFa%47kQ^WfP'XTDF$(Pj*?cD'2KEr>+':6jPDQ
%FZ;dCeBLCa;Tf;VDn8ck+L]A^n4&"cSqHuuTC2O8'A=$FEp@PU:i(h9k.C<Q8:O0WGaCeRW5[R,B1H*:f+YSQjdctps,\.?)e7NY
%O)Ief_Tc@Xfe=A/Kj\QAga7e$Dj<,"m%@bi-1R8e4I'#UT@V>3V%-E_8D&5[WpU'T<-ikD%?<sO%H@kZ&;Q*iZE],d)_D77)C>Yf
%*q,1"*]E5$prmrW+4Wd<@]p8pSO@M`UQ?lpK0r7@GRGC'%5BHQ.s%+i.a6$:iduP;IX^mP5Rc'lA%`S:a,17CQ/bfQ]2lW^(C(+\
%Y]:-cPu_Q4*tu][Wj;M;pj/rpCWJI>)Uif<WgqgRP_)55YB\@+^SX`e'20'U,1_!<qY;?=+0U6cKciS7%t-gT+o+2jer[DU-ZuJC
%EOeSGg':U8`"TAW;;rgJ*S,qXRYei-9hkaacH?6S3j?f6Q`D@QEENjqO!e)[<-s,N;?q@Y9T!Y^:@B<S>Y#iFc45R>)/f'1G'Eq7
%g>BNG2*S5Ung?*5=6a%!.Zs>A/@h6>6eQ:$C,\8-":A:;C\o:-TK812,qPW"Kf+cBNA5$YN.tgi'P3E:J,R9>Afss$Et[Tm$oj:P
%n,LFBQXPde<>'n=8%T+6(/qQZQ<=%Wf_I!,ZC@5:2Smksp-i;7\*0UakhEh!'#7.&@sgo'LAc:dbM@K+8/*JP1_q<h<7j-s4?b6E
%8Z4=_dhd@BPlpWka2=3p%T[<&:Ngp'Fe.7)+/&CmGeZ%cF5bt_NcKq7-:`IHB;^d-g;t8+eTMce81+Cpf6?C[[cn->a/q@t',6$>
%<onmlCfTT%;He$-91\$)2ksJjjY/)/h(m."Qj*lKd64d)i##[!$J&)\#u?8nG(4:'e'uW1:35jIIJCYbe:<&`\rQQ<[#<3;15NC0
%!Mo:.7Pc4?7Ee5=?#<$O\_W+Eh9)^SAJrP5Y<rTD4U/;$<0\r3NRpT1/t#*NZua0Bhb=R`fJA@)eVc+L\mMHC9*#f$6L_RRL[E9>
%7YDpoVje(?89i-u1c(4"i>I1!7s!Thj^Fnh9l)_;XAecqHLYWTE:<_H(R0C2^>PL57CJRJf)GTj#+;Pu/7O\E'UEcVOC<LNh#GP%
%RE(@_1=[N-Wt2UtjU<p#+;oe?T*JSY\2)-EjS)OV)/1Cm0utP(]#2,Dp@NB+)9?>od9j-#8/)*0bHt='%`.];<`rUN4UKZ#<Q:lB
%9g,H.kR]>!,RiRun2qnk0G6?t9cqr::j_@[SAM21Z*Z5"3V;^jYp(rdI#WV*$K]06*(R"S/G,P+YX\;W?k/$jXb(A+mHn>aVZK=4
%dX(Zn#Hc%Q->Ue2lTqX(XS49KolueLHPY4Z$n"i^d!HP[HB<f"d!OKGR(]2)@qOg)]6Fr['Z"gE<q;"MIlWp"$s-=o$]\!5(g;u6
%$2utdFSQ@)KDL.6BXoh'nEd>jBXoh'4F[$Z(<3Z-d'=@$M=$3a#io`mH42^&@VCm6*"P)$jE*T&*#cXG&t,ltL(M"tViW<FAT4WM
%<g(@eSu3np:4mbT0C;Y%9rNYcTna8)(@\6saD80*8.I6`HSe3&*M21WUdQpY"kDfb,J4M-<T2O\O9LiQb+1H]8+a/XnOjkMf]QdA
%2[;lC2PTa^j@a,\)NL]1/:NPrf@PD$lV5bCXP?Ks_2Hkc321i8m>\dcq6mNY6Tjj232.5;H=.i*`Le^LLgEX<_9l*&323D'_p;S$
%4kct<NS^ENUtu^N9'_lcL1NBR\D@=W?4j:Y>"d\^':m]Ar;=`aUYTZJ2LZJZhIrJ26Z?k9p!E%QUY_2#/'(:ZGS=Dh(+.Y2"H-7m
%oH-$rs'*>Y%R_=ie[;Z5Ib$K[qKVWBAponTV"qC$pm='TR<[?!1om)AQo-'=JWS:78,P\B(j`+-/78d;`+*j!9;(t!+6p>BP!JHr
%&%G0tjH&HiNqI7Bl/WB%R%4@`O8Qg,B)NZWN;RBc)k1Z8pd0/U6LmWrh?BID5UE_3h$#n&;4[VN3ko6.n>a*/Wr0\>Ktju6VTL!,
%&$M6$>*&TtRZ\kG9)bba!ZC+Gjai-UL#gQolKF&H+4g)$10K`)c(9XZKiKNNIusYR]t][,6#pcF%EPCDR<e_2BL$Is%uodZ:'5Me
%J(/o-AMbO=njhQu0p=jh+P5=NO8NGJQtm/pO?\XU,_'e$Rk0-+gkj\f\/4fVOB_O5`j11#jAu8A]qf3s+LgnHkqK7tT\M*X."Bls
%"k;C^pks,EO&c>i'e^RbTHNlmc^Eu]RDegREE+B94T<*.JZ0gq97A(9"qV,`ZU1<]?$j2d8R@QW!+\Xc^+>1;LU&2*^'9E>C2]X%
%+Mfb6@`Wf3i@+IKNp1tTQkYI2`qS7oDPL'H@RlKbF\egP61$j$CpAed,D]r8mW+3*YleDlGEp8S/R4R4b%E*9)oQ@ca-(PKh^KY%
%Df3aRJ_hVYbZ3@8(RfiHkkqq*q7N#/m;A<1+Ha%(E8VeCrRLr^P"FdBHW'1<9K%H.;p1u'kppc>5XpOKM3>D_+7@<]gEKK+V[4QM
%UhN"pI-/X2\7"Lc_WW[/od#+<3=b@uJjE>X#6[I+&M3XTYST&0P1^)4E2+(mrAhU5,:=G514"kg_m2dpN;m\VpqYYg<I7+akrW5P
%^CP6^NS;.aLI#?!Z$eRd8%Rg'LI6Ztr"1Eqa$-B])33&5$*TC[.J.Za5BjSj\)#m^#mu:Z+s]?1p;.(+'IpWe*C/O[7dEWlL;!G3
%6`A=;jW&Ghj?=o1Y`I1gKK&19[+FiYl9F9h[jD>NAp*Pb==M4[f"r:tmE+DgHdYR;Srfg[e=WW(et-hkf38,CB%iGhhY>h&7qUHg
%c?j\P^HkKF'%WP"=5)s=UVm"0bYidsUH6Zd2\6mIf9q\#g(W&Xf'5ITe".,1XkA27VEKKKHklYn2[[1$hO**`*,L9KRbMa(duY`D
%op3Pq,89Ap"$,hj*sZTR+.:4mL\"rulo/Wuq*R$9p%aZmjGsr0Yr;WERJ`2B#hJ$#&miT8gLg"HEsKWjo3]]8n@IFF1MieZG?q"3
%s"DugC7XU`RM')r=JBbaHauDK@V,[>#;kqr\a6`D%W.^d/"bHK$abjNEqGaT"7,;dODqbD,3Z5D4>7hL`8TOk=^p-pUP\>hOJ2h'
%l6m#pe4$/r9`T@2\p2;X/muc?CV<?]OA>F%B12Ydf/<9>X?U5d-[O;@rP.U.##B/P[^5C`+e@h*A?nc:a3A:Cd;q+lGi;>L&,OE2
%f-kqV`iOj>)FY1!@uBbi9iU*39(W6b#p]M.kH%"#RsOiV#C8aF:(kTPh'!*S%;m?,#MEQJq]03WIK.M6GVS2'FaTXKpTsEc,uLU?
%C1+"Ig_o!3@!CIMEed2VZP!r;R,q(IR0,W.R?k*!-+k:K*@S1Q[p1S*h3&:9RXX^=2:%@2<l&p;,'.RSS.)S_H6TF"_j09XblVn&
%g5mKA@s7*=3-[N`%8D--C\9`abJ_kWNB[c[%7m`47o:L2fRO\(oXfC)djPe_4@^-3T[Hr2mm`(4=\uQp"85#/EdTW&ajc"Ks7m_m
%8$irLLYi:!q5$Jp0/5MtH7VXiH&XX,+nubRi=mFTHBd(=/(Wt>7-R_aQpS+N\g!B"Hibj;a74WEqM75HI-14XVlrW%^bUgGUYUhp
%PZgc+PZ]h.NOY\slR'hf_SGCFl5=g2=_`>2C\Wjf+3dG/V2aJl;O?52<#a>p_hNBOTnJ6)641KK-\k-$dgc=.`UGTl1$-Ba]%SAE
%SeUG2IE;J1E1h4c(d84!/H?gR-,2s.NZu^CJ3/PZ"'SN\0a5>S01WCBc5]X$2IFW48MD0lm.&Q&7q(P-5c3XH<BYs&"X1*!TkF$X
%9nBn:J;;#4Bn!IeJ5`;s;sM``N]eX:H;7c+,YCME4<uRuNI$O'&kG^Y`\e![`1rA7r-TVp&V#h^d>gP4.i+@F]5*tqRDc5+7ilC\
%oj.)6pg3ej="iZ34KG\JmCa&:b&pqo"^u3b3).[d`HWn]B$M`WgVW0GS/GFV$GBh>"g72Uo]_3M[g@bQhUoC*e0E2bJ4,mk>[ukB
%JekS2OF0Dg'fd^>4Yomb`j#aLOj2_h'oM0!XnLgZc,3%KPJ]?V)i\^rnBIrDB0g!MU@RQ2a9]i>g8Lc:@k:)@5UU.mKlbT[G9#Ql
%3.i/fKS8k![uk\PHR*F)]/N#9]D7gmoW`8q6A:'A=TC'urW/)!RrY`>83UjnjIaL67U1_$;rrh^"0dqjDOYg`am"/78VnsimYs6e
%\X^Zi<MT\OQ0epQ)#g-0:F;8uH*bUt`Z)[a%n,Y[l@8FrhM>gr'/,mFHumdV=!^_V(&s\ea5-Pf*6l-ADnL$f3]Y<Zb$oSM'><Jt
%p9tHor^'eT#rQ.f:6V@$np@P5ICsj=h_)ZbXTLr9GiEri%W]3/LV3'NJesJ.?f\PSMVd3"^@477!ujI9?^*VgE"8_tH.NHP4Jmmp
%HdT=f3-1_MH9*nb;?7:$4,(c:iq2Fc2a,5'n(l$aj2^4d7='FDYVKP@0C3nfA20\>$u;/oomd8]qGfu(,4&i'p`ao8("E'V#@AV-
%hG?tMgkFRd"rd1.$foMRpnFOaB/n!k#NcT0<MEcWF=WKos&[bqh+FIo:$Z)CF=WK.$.cR$kuK"Xb26<ZF=WJ_/?X1Kd]Gp=gV[VT
%_Ijs+6GV9TO6fmn%+!s@*hrQ)#uNIThnQce_.FKeU%IZ7]-BscS-B>TA#9Lf=4eQ#Z[dF*ofV+3hEU^&Jqpf^CqlfZHeY'1O!\YT
%r<&?R90uR?%"NI;_g8bc0^mqr$,"es=au1%B'+nai]PoL&U'1^^PGmFpcX54<Gt8ZZJth<=cBG,rCB,2NBj!gB6Km_2D8(<7Fkb+
%SrHpq8@nDoYpp!kF0Ha`>s=1f.qb'$Z(/cMh)k24+/^W!S`<V=1U,&a)5("bnP#/6oUpM6U>(lhF[i2[d=WDT`4BkA3G_]%;Teff
%=,$ecKkZc7^p':k1Rs"U$VV98%35G=ck`Y#P/i8"4_\mU1*5!`-$MS8UDa6F<^Lk,@sZVe05d%,:O@aqMK&h'KQcr\.R%9)=HPni
%Mt[aN's,@TJK/(oUsJIXkd-QhmpEr'cJIEIXHm=)d:e?ZT>*ml'01Y`?O//P&:49L,Y!+Z*[WB.oCpb`IMP02N,5Es_lK?G#f.31
%$=6gKi'Vi&$HVa+O":o?Ioms]-I"%'0S2d]GhAMA@7*lq"`gC/"UTEG=;5/@QPgG0B.a[hZoNmrhjCD+0ZoEML!F+k04VFMdaJVT
%a):tJ,mG+d@/p:f-S5==S>:KC8BQ_335V7/fZW&8(C[K(N;%]B@Ko*<Q*qf-Z0:2b^]:=^lb/mKXYpT8Mi6_::R.a2*V0(+El;+4
%Dufs!ak?IuXMWe$Ta'lb^qluC+EFg8C4.N+_f5*t#mcm(!BY95(ObfJD0jUjUJA/ChRcSb,b>3fQ3Hc@+XDar[L?#AD8n/-b.MWm
%0e%+&W3fe"U0B!-"u+l3*>_^iRGJ?88VnOd-;ppsEm<kcYL\>:h)DcKI3V-7Mq:*0ZXc@$BZpr@[?m8Mq6cgMg.*oudb%H];k)k(
%L^]ThoH91'NoDPuj#C6(.#ff+2#-*QSTifnRE"m4ke-[lj7poQB;UkqOkkZRDIoQCXiPlK\fY.5j1FQ=Sm>X)aE[;*`<U)OP^G=#
%@8D0`og3NRo9">`NcGCIZA4S@2Mc(AK<aeKh?%Hhd9tqc%MLaZUQUG8Q-,2`0p2<T1;RV/i1G%'1VTT:^0$@FL*Xg.@6:+(m7CqV
%[NIME.g9@iTH<O\!^-?m;79#B*=5Xu.=ETJ3YN&%<QMa]Si$Tjji.r&>VSYhaduBE_fc*c-:a#1`+)'](Her`Nt8GQk7nB:o+;2N
%?HIpNU;abXYS0#=P;mPM?9f0*EGT(Th89mkgQ`2UHe$&B'?m:@ppL4_nqe]EBPsU3Ps$u(T58UV(C.4+:nc9bYN$aD'/R"kF]n$>
%#)]Y6]Ve6ml/6:(k$19dWp^m&B$,Q:DWY1%b%%UUY4c(+V-ZQ"N$GP!P#-$H8hrae+(i*+_X>OB2+%,="QJB(:<EJVcJ&$s#1l"6
%rK?n7TOEdnlop!8b9!YJCJ&[GK'UmjXKM_h4]b9_#it\?+RLHiMd?\Mp,X=WJ!CCm/?T)Drgs9'U0cJiGccpNlrJbZmmg/k`7]M>
%'iM5(nY8=K\,V8IL\Hu33:n;?Ao_3aaEiP>$N3N3dsB%J^id><cs%T;r3,XB1b8=4Zi54!QMu.#nEAiDhE366o3P>h("M.5##K6J
%=&^+R"^uo@(%q(H_g)XRs+gW!k3,%TH]A$.GrW>JW8J3_EJhJXTh#.QnsoI0qih]R;Y]\skNr;'CQH9m@OZ4>_oG[>CskD0+5fq>
%0_!kBR\$$.&G/0APKar[%-fY3NPh%jCsAWEiEtuGGV\Q@s.J73mu?5K`mPt*@+XF169jP.;<'f8H?$0Z&a[r]Ebg>n=X1$?)I]Jn
%#V3GT=G\oP'%R?3KPYe8k+7[WFB6%cA1Kje4oi$SlQh\*3qNGOLX52Lcj+;++ie<_-kD\+l%H2LIDF?(UighD"/ZQn%S@aB>U0tS
%D-QQ5q`;iP^-?WY[6J[P[Qch"8fb@BPb<Ymar&-`9&jo&"JlTR^i>)iWMC#!.VT-Ce=dD?3e01a*Vt;c_f<7KCk!(&<_GZ6[%O=h
%6jh;'a=;/i#@,hV-S=Q?U]ih>Ue[43e.L-?3^VOsLWeuJB_oV\80$/OV"?K>l7b%jl=aj;Y+sF4>_f.1\W09$EZLH(6Hu?-5a.IJ
%%1?Rp;*Hk^'oXE>aOamJ!(o]*HSV+MV4"ePSr\1rn*P?de;F;Cj7'f+Zm566+5T8f=Qgqlk^#@,"$fa]i,$1Da0XHD81LLB8E<oT
%^$^Atc=E#!B32Dl^<[W:BF0sBH(ClMM115e4fj?+UIb&nZp2K5WSJX=D=:ugr[iHNUCeV9S=gM`LEoV,<7*f+*<-88TN>fLUc2U\
%4oZ=a2]fU~>
%AI9_PrivateDataEnd
\ No newline at end of file |
