From dd24189d7d8dc2873b9301455a137bbc5959f338 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Wed, 21 May 2025 11:20:05 +0800 Subject: [PATCH] slhdsa: SLH-DSA-SHAKE-128f test cases --- slhdsa/testdata/SLHDSA128FastSHAKE_1.json | 9 +++++++++ slhdsa/testdata/SLHDSA128FastSHAKE_2.json | 8 ++++++++ 2 files changed, 17 insertions(+) create mode 100644 slhdsa/testdata/SLHDSA128FastSHAKE_1.json create mode 100644 slhdsa/testdata/SLHDSA128FastSHAKE_2.json diff --git a/slhdsa/testdata/SLHDSA128FastSHAKE_1.json b/slhdsa/testdata/SLHDSA128FastSHAKE_1.json new file mode 100644 index 0000000..ad09301 --- /dev/null +++ b/slhdsa/testdata/SLHDSA128FastSHAKE_1.json @@ -0,0 +1,9 @@ +{ + "parameterSet": "SLH-DSA-SHAKE-128f", + "sk": "E02DFB4E16F959336B9DE70F9A8BA5FA62958AA179327D8B79C8278A3E7A3ABC9E84F23F025B879A95C868FEE91B41125921D1F337CF1DFC574CDB12FC49DAEB", + "pk": "9E84F23F025B879A95C868FEE91B41125921D1F337CF1DFC574CDB12FC49DAEB", + "additionalRandomness": "", + "message": "8C8361FF301D03326BD745F478AED0449438092A6090F61F3945DC8F854FA0DE9F4BEAD2AF4C08D1769E08ED8DC223F36705D04ADDD57F7755104B39EF79D174C4D2B79BA1384A6482E700DF084C30847ECB0856C365B156E68C0AF9B18BB9767D1139BD47A1BE705C93AF8E2C6504600AFCC4A8F04E85FE90FE3D60A9A6F832762C450CAC3B814374F9A54864425524EDB3A0A9BE2FA3C21DE6F9C9E5336A02DC13D08289F214ABA683D79311A3E48AC8239413A9D44646AECEFEC1E628C64B8DB7EB48CC1D4781C74A7D047652911CA7DFF1AC7FF7BAC75C9C9FD073DBF524884DE6A3BF8C69B9CF130A639CA2E34E9F729CDB4C4E99735BABD535D71695D1AE1AA759A0318F44BB3DFB186A157331D277E708ADA33E2FA787D54FD024F7CB2C757910D4B5C6877B4A7F8B7E40FA30FBA55ACFE1C147272A7B0F67B90A8E3BC87A5965466ED72C46C9CAF4CB69ABB6EE8E595E5FC04586DABF7EABE20C50453E4BF42AF7E8BF5404BA8F264722E7A927F2730950CD86BDA4514E05C3DBE7D6F01116B212D2A86297AA2CE67EE9D729C54286C9E3405755FD07FDA04A57FF30A00D101F4BACECAEBC5749A72384C4A1F2995CC20C87E40030625EFF8165B9E1514F6A428ACAC221059351C74087B85C067E05043950800B509BE90ECEF1410E1E8A2FDBE1CB1FF89D95128C93359B1A712DF0C373D76C802B4B0EAAC260B7181FE4FDDCA2298AF74179DBA5D0AB565F45AC6E850961F21B67D1056BC26171793BE337E994E1C6DFB2FA2466F3D45130B6D00B34D9F3FB57CE91BD69083CF165DFCF7922DB0D3051E0477805B9C1AD253A0DA7B3C65048B50513F7C432A7272B00DD28A1F98C3E5E84D28422A8016AC656F0103068F143077073AF196CB423656A2107248803154B3E10A50A58B928B52C6379550C914C0701B0A50ED77C6E2ADDDDDCD1B6972ACF451CC2B5F845B716818795DBDF004246F2BEBBB2D35A6700C59E5010CFAA3CC23F58564ED83FC5BD6378693F7C34C82DEDAC7BF35A69289C6B9AF5BE031B8EEBC6120FA72E2FF26EB1161CFCF6D39ABA5C532B5E9503D54F00847ECAAE77D37F74601317EF2581180A11F62FB82820E965A335D79A034BDA2AFFCDAF48FD80A745D42417BDFF5E922BC662E1DD004ECD33C6C82F1E19549977D0174EB8ACDE6DF2D33007F554B02DD254F1EF9DC3AA424D855B266B737B76DB1A6B6D2D31E61CB500A488429C528FED33A29A8F30B3E33D447F9EC8936D975B72A347E39D6075EE801F51A6E887CD2324BAD90BD7E97F624E0A8DA7D59DD4514B70CA6976B3A70CAD7178AF153248D227746567BFE2CC3D0DBE97446D235FF9CE67D8305AF5978A2298EDA3268C20E54FFBCA3497A2B824A1245E0E3DC9A49B149F3B361897CDF1A9FC0A77066D616BCCD40E11BE7498099DF0C828E741872C0FF41087F8ECBA5E0C89A930AC5514694C454FC4F6B49024263323D2F6DA7B522DB6CD1BD6ADB11B9905C54F99BF3DC0C3BE026293B4E3DC10E735AA085463D2D842EFE916D8284FA8E278DA91A00C5CDD2C2759AD54941CA0E3F4FFFC5AFE12DF56F0A51B1AECEB17B0B628D083C005E6320406674229C8E80B0303C440FF5F0A495E51A6F28EE1338E9CD71D7C28A4E7B93FFBB9085C3DA89698AAFC1F7AB487D4A4F927A8BE252EBE0FC380D25F80B600233EF48633AF4386FA6418BDA042521CA97CFDDEA40BF73482EDB89FC3A3FAB1689C62CCD13050A2D8CCB3B559B0ABC863447559311E9D860AC5B683511B52AE1A726D4B0BB5601FD62FFD419102F938700ABA16511524D6E86E82315026D1D50E45B853E91CD21E5AC76F55F485F48DF706A923F160F3D2C65767DDD4BBE64585F2C6868FF13F1A2DAC7644E8EA2D504B56ED366B56C7D5CB48442937FFCAD10B574021D540E4E43D157AB835BE1B0B809FDD9E8CF29DC5149CC674D57D30A764AC0303F5AEEF29F57929081CDB7191BC1AA767A72F7D0F5B36D0C469D95E671E9694A750D725270685CE0A01F8FBE4612F4D34E44E3DF95354DB1BD6F5AEC3832A0017C0D3C10A4F8CB6E529D1633651A6BA179DE2921FAE547A12E275B3BD6AF7DB642E4D8A1C47EB17776EEC4ECD66BD9089B218BA5F8F2F654AEF09F5660324D1779FCAF3E2306D305842214F139F691CD7DCB7E13B6E7A2F222FBA8978435998BDFFEE3783956C40945429D9BE529504798139C09CE2D165D64D884F710285821CE0A1A8A4E29E109C53C40DD4517CAB7F2B8CFDC575795EA8921A21A609945961FE2B3BFD1430057FFE35154179F8F06E2E58055BE680471B9FBCD4E81D0FD2690586CC42EADAD730E7E446BC95FD6567023EB5DBFD5EE8CB6D26D8EB61EC6345F2AB3FDE5FF3ADE43402BACF4BB44277A835D48055C51444652C3598BF0B33A1B39171D7750E9DD7BF0AA011A34EF7A2BE97F7948E16D76483B4EDFCCA6DEFD4145D1D4257000EA0CA63972C2997F95328FF05AFE047FFD0D4C8D884AF673A5737C9A99DA11FA1C446D8DB8EE7AC2D5B389C6305C4269EBDFABE62F9C55578A5F27FD856F332EF8C04CAD67E04FA8E37C19DDA270C2DD70F209DCF90ABA68E1C56E08876E3EEF912C470329B36BE5BCA4E0E9F5372CF857BF6BB45ED45B3FC37660C3D5FC4DD4561F14CF792A8CDCB658A1444A8DDF52994404D542950EA5FBB03DA690124E6DE93B77D489B63C5C84AE595D8A46F0011CF0D6146A371FCDE3AE85B587017B0FA63B9B4A9EFC436F686F1C5262E2447165C4B80B11F499847606C0DD2594CB9100BC3FDEC865C5D4FBF818F3BB95D4A47BBB5A42A27BCBE60A53A054C14F677152D7E83796C03CB0176A86DDDA93E8266B821C9D161E68E8F3C69EF525DD3F82D5F387A3BC3036984860611B64BFBC9958D631F0C23D64DA7BA477CD5875207875EB9D972D310CAD82EECA7AF8D49D6B93E76A4655A56E638AB4E4C8DDB97712DB59FFF21B4080C32C97A630A0EF8F506D5586DF87FBD265EDA8D7BE042935291F6B6A88350AB11AC6F242381B4C1C6262E8E212E2968E45D224FCDC5B47B56ECFB18CBD51F2395F6879660641B49ADA8532F5C99804EA9C28BC7A6E5A29842CF883ECA62691A568A28A27DD32A7024C9356F5EF74BDF2BC67A35EF75AEBD9904698AD44012E318B227A779AC1524F77B3C55A33B9DAC5A5D7EDC4582CC7D32A14E93F722EB611ED8ABFCA3A63DAAA3C0B7BBF2E15FE79861ADBFA131BBC3AECA4EB656B8E5AF362E370323350D071D200E01457A478058A44CDCD2228F55DBCE31B1AE5ACAB1C1FD363A62B88CE43E7FE131879792E07BFC11206AA6AC6D6899BBAF194B87FF519599D85BC37D6AC5B6837E8FF8EF977D4BFD35591C475AD591FDDF22519BC2FE7129762F102C78316B3DB10182FF6679DE01B50D85707B0CC8E8873CAED5036885018E5E69757F000BBBCA985323BD19398EF7540347FFFF88E0A48F2D83EC36D504254018A007D656B855857004EC6C77B4C09B0BD86DAA41A6FE714BD5B960413B9C3F8F34CDFA29032D70F241A68751EF64E6E42D717244B475E59A31D9842948C7178B3D5CDB9AA5C97C4BB15FB68C99A22559E2A90852287DEB10689FF380792251F83220F414BDC88E36C39AC2A0854D39255AFD4B9ABF49AC3171996333FF40E574FF3CDAD3C87F562E43C79CD4AF5DAACBD2F3C15F9651340CF3BC9314F7D1FE606F71FD30190C181B5CE2ECF456A0EE05AD5A05FDA055E5FD6CF3DFE09AB2102FBBF3749D625726D7F161B47C4EA100D39D2DC60701B953E30F5F8740E4097C105E3B9557738B33746206B7F338F55CF433C3EA16C26F6A514AE82995CB89DEA855ED71AB953497874489776C0B9DCB38F453C9C2B2D2FDD0E62A8C0A1277FDDA73C391042D5147FD869CE8C040517CD6F33B0DC963516BE6F19FFDDD311E232D4AB8BE8774BE74011C2C141EB8EF6FE407BE2936A54792314A06C3A253642A9BBAA1AFAF3584941C72B211F583B6EDB54150415CB9DECFF968F30B09DBE6B42E2297D4A6A4B134491AE2147441FA25560F9E8907924C338F4754616ACDAFFF862753F0A80DFD54CA58D4A8ED6D174EC95ED9B8DA6DDB811340E1A3F97C8D1DC3D0828B90C38330C878F6E314607371EA4DDDF7EB72CF09B3E3B42B3DC5CDC13BE80961DE029BA755C52BA9768E64C76C1F68C63EC905CC31618E2C6BD9F5F3226D727827E09053131CC0F13E006A410F1F0533B9EF2FAD6130416F55AFC316B669A9E1D073E7715222B56D7666FD72D0E4DB2EEFAB5DCC4E42EC0F51E376C98937583B723B25EB4EF4DE17BB7EEF4D409353CC794D4E0EA51C1CF55E3566313971EC66B43D0524B0557C3DBA03E86A374B44B814B03A769E0C78785FD540CA32991AA4E92798854B687CB4C3EC1B1E957BCB9E0098CA5415D58E4DC2508C2C093F2AD5217EE603EA4550DF04504B2D5A3BC9EB02490A5D6E3C22CF2A83CA9C4781040E1A75595E66CEE80AF6399137A4B9D08CEDD3AE0D4E444A7BDC4CD1D24F47189687EFE62BC7B6BFB15658A2B9B8FF1CFC5619E360178CFE00A02115257F3E6298F24A37C0B526A5D034C6994D45EB9DF2725011B1DF0BE0BEB09B526D87F377F0A5E7A455F28E4D67CBC26CF84BAF9CF28F9C19F72F087F979F294F028E7192A0BEE4FCE1DD2C8F8B4840BA5EA280E7FF9EE0DE1A9436D5A2C88282811A95A885210F7833AF3AD36DB7AD2D04AA481922AA699737F6B4B03718AB1CB19A4639754564A7BCA292693518D5CE446DED4DE5331CC8540AEDEAC9CB1BC51970EB4385F29AF1F82D4C3E73BEA225E17D7B52DDC58C9CDDCC2C10375CD509E10528D83DB64CC0C0CB1271CFFA95811B24479ED4FCCB414828FAD2B35BBC0B9F1C38083FBD4A281C504FA906D5C5D79EE06BF36874251A0E679587DE68110F74194694D233618618AF13FA16D9A8DDB0D83AC56B3124E6B10A3CA04462D72F4B6683AFB275B0D9A5D7258C5BD6254A08D9EAB6975C75F8C8F90A820D075D3E3C6ED13B23B0B79A8FD221E129ECE0BB8D49A7A2A1149D1CA1A75F6A0F40ABC7B84F793B92B293B07B8BCA3478179F286319C3B8CE168DB6A963EEB76032265A079AF8C91543D5500176B82ECA467F905EC09C359AB262B0198F7F6703952633BA957BF8A8FEE9004F5D6B30C6A64528CBF24C8766E0EF8293A1C8FE4425AE6DA77ED5106E4A82AB4802168935F551E18DC38CB102CDB28FA5EA432AA9310366E6A0261887D3EB57A34E541870946CD7CC712F478B940DCD975DE35AA226FA9C1B861EA1CD1D52BC0B1746109B4AED8844E651A3CD1FEC0542F436DA8FF76FEA5FEF635D1DB1BD1D15FD66779A50C1CE3873511110598C7EE43B538B3B68BA728FE0615C1925FC96F762FD5A9DD141957F72434969FECBC04C7C831947B57F12570449DBE641407BBDBB10DB1AD8FA68559A40BA7B1177D9BC479D5AA1B951083D173398399630C02CBE5BE0D78708EAD625D298BDBD2A8A9C837117016D3A189CE86322C3D08D2833FE78A59B135C2D5E9FC7DBD1EDF0A139F669C7BE64BFA563F6F433B567899E00A486AE5E6380064A307BC0129D0F901C18894D6F8ECDB9ADD6091C19A65EDA5FDA79E17E0CB9C343D8558B1E6C7B6C130EDA1341E9797A8604BB1827C4DEA0BC992D8E0A229FF62CCA37E80853BE68EF30E0F8461A738C6984031D03E68D7AC05EDFDCD56A9DF306202EB476E2FE8921BEFEB43F9EFE9B7502F9A716A6175B7EADCB07DCE026EDE4209744B6E98E632B19C31A410C288B65BBBDFB5882149E65E49D05462AA3E5D83FC1672A645732FD52292A447C3F1CB3113180C6FF2DA688C1A90D1C8CB6554408978128DB9D973C83FA86289C5F0EF2B992FC7FE7ED6FC0EA43C7FB93B5F8D852C6A48B31D6450EB168B36EEE90CB89A4A0D2858FA70AAC22B2FF21AB48A4366975B867E9B3928C188B27F29A9273E964734338EC624E0A2D8E3EC4625D99D85A4E0062792FFDE8D9BFE7DDB2383A6177627E4521FE8569D73297E69B6C4BFF68D92AD5F3EB4BE3B8653772CC253CC575DA30AD5D02B28423F34DC513B64D1031B302EEFDAF3BA80FDC47D383A85D25F7AA9CE87C7CB36BC827852E935BC00038BA1A294B336F11C2AD2A116D7BACA822E120D3B686CA4CDD4D226DC1FD553AEEB54F2F518007177E536E47C891B9EB94462CE996AEB687EA6CAA524BED6531F4F3A3276641EF4FCBB6816D0DB5B8889F6E5A272E4A2D91DDB57041CFD2CEFFC17CFC811A595AEF6E5B34C33F933D5BAD7A251AED27ADF074BD80C0305DABFF7AC1014B106602C589484EDC3BA24F5D76A19F7BD249C1C2C70CE81C1EE338BC386F668EF0B4FC4DF5F763AFE975FD5DDA9EA4681AE36FE150F2FF0DB3F8BDEDF7385138FF29FB1A0AB95E422A12B4C7199B15DBD02FF489A766B8ECCE0706533A8DC19E3C16F8EF7975980F6C164708DECE14BA4BF77AB8D68E4EF8197590A3C9CA59711B93952E5661D24BE8CB18F65ED1615EAAD01E93FFDC32D2444F514CC080DB850DA5DA402DBF8A6A8A7A94096193486AC15023A4506617F5D4C3EDE1CB5DC57DD57989A63B23AFCE746EF916D1079532311DA986FDB0FE964C", + "context": "F510B36297FB02B4D5B0443B34718E46EFF4E0BA603BD908530BDAB3BC5565A50C2B4864DA1BD4A2BB186C0D7C1AFF563B6F0D27C24B183E758E7E6C9EBDCC42BEC05533C7C9B6FD1CA206797A4F96D277797189982465615F102E9119F045C191E65D12EC77CFACF8A54B28AD774EA31F975DE47E5E281BD241AA9776AFA367CBB3F1C8F2B56AD55DF0E7C03F38A309A7A440BD58117483AF4FC8564C2D9DE0668B605081F5475F55B6F5F3E1D76B9A98F7C4138F0AF32C0373BE3915BF8C52E3C898AAD23C016BB7D0C74C3D78F66D89DD16D88081A9FF3633", + "signature": "4E21984D8756144B7D4E419607ED9A3C471912F4584D03F617B782BDE96576AD470606D6B8AD8D4BF016C36653DDAD9509DD1DDEB6A537C497F524D735A8EEC9AC4F582144729FDA2A9625D1C850736CB7590D5791ED933B9A9177E61A4370D8FECC989A0954690F543E77004E854DAB5B11C407CA12200CCBE8B02B643E8BF7B2EA6C2B23AFEC16E9BE0EC928D754E503F2E0350DF92712568D05D4F889A9E4B0C8AACA9D69E71E0AD72D93AA4BAAB5BE23A662DD0B812E81C1E88E9CABD59ABF2C56F8DDCCF1A443A5D83F288E439C4EA18FD26EA60E2B06051CC7A606AD04541DE9A1BB8A49AC6AFDC056E1698CA3C3E4E8C6DE871D4BE04BE8633AE5E5A9D1F62ACE606323BFEF49BF46D28D7DF683ECA490F1E2059419181647124A81D8B327ACE38BBF78918935ED4C38AF2FF41BF3AEC18509E66ECE2200E61E5A177A2ADE2777B8BC526303C8752477BAAFD8825B3288DA3D81072B9F060971AA99C7767E4C2F1BE79A5896DA31BE2A4B7D92233A59548E2D52FBA905951219B82F63FC0EC85C3913CCA3FDB7BCED10DE9E78DB49D71778209D190F03BA3C8785F3DEF4542DD50439DC2B30EB27D4D6CD6254A8BD814BC0DEA53ADEF05F8A137D3E13B3245AD3D0102B814B1395234F85BDD21A8DCD850EE79314E3CD1EBDC9ED0AEE192F81D02B1E75E5F565D0135FB0348E6BB2767F59B439B92FF9F191AE362DE71E106A06CA2EB71455EC1D62C737BADC732C0D70990743282EC7F38CF193A46C2D7823EB4E27EC7C75A5D470B652F534F4154B9D03DB10B829C4A495F581333B3D85D4455C811F496FF4D26ABE1E627F27C350011B53D379297D53DD92D93415763BB7CE1A26879E2BA420B5E42606082709B180B7C0C4B130C5E9408C5FF7B85BB1AD57EA38BC25809CDB6A53AB0C70325117AD5B538CD94FC445144A4A132651D092D3EBB934C9D31079194EAE9874B8719A87AA724D31114C40E6934F7569F7DB681713A6AB4DA36F8F73B76606107F902C2E3A2C86BA39A7B044D08B26DCDEAC1C1CCD1FCEE9409BA6B9C85FDD8899DEE30880245302B1391F94D0D0008CD8A4A6433853C94BF86103DCC54BCB0D8DA3044775624AF761B7D2323C960969065BE4D83ED0CE18310E814823AF76790441DF45E1982C23397361743EA195C4E9FB8FA2EB6000F387A6AB5F69FECF393DC13BB4BDE1922E606BAD7B71FE7E2B0399E19F70AD4BB4E068FF0A7D7741F7A708988B9A2AB7281A068D91C4B10B3963A139A14233B06A87334A1E754AA0BA919C7682419D826085394807C08A7BB3FC8DF119AB0CA59B7CB2DA43FE0556C41175BEB1EDB4ECBD44BE54348030BEAC8151F4BEC2D5C441FCB23B48ABB58C472C7C07680CB6E611DEE2E41D72460BBD179ABFEA50951614D0A5CAC9875BFC7C70602E048A5DE35982F8D24C0443A9FAD5CFC2810784424EE2F500ADC144CAEB39B5402852B83A7F2E859AB261CFE5D0CF6A0DED888290845AF3619B7A52D0903F57F463AE2A06A2328C0E5E27B0F9F1BCDB2D372AE55282AE1D834356EFADD4CA6E11C19B75BEB866F404AFB3E439DAE78B3E65D1DE43A754B2095749840AD8337273BD37E8EB96747C19A864D77554C58BCCB6BC7DFE1E73FB205D9B6C4134AF43F5A28F56CB0D5401DD0245E3E7044A3FCE7562ADA82EE9C11EDA2A4AF7D9B8B8880BD8A5A35D69D83688CE79D38504F16FBAB8A03C61A13F0E9893EFC15EC36F48BDDD444DD3F819020488840EE8B6B3BA1C4C47622FABDCD29D524C58EE1C8C778C286C05FE37E7DDE0BDB80AED0C7932FDABEF4F3109F766AAD4BB95C6EC622E12E001E75031A997F43514F3DC86204978CF0A90813C892B190E27D604816110C062A22DAC6D8E4E78952718C7117AC9C3CC6A29E1984E49F86E919A98809893F02A86D4D45C0CD18E558896E070E8DB117328B27AF6702E539E37884DF92F957C29B479C21B34764035F192161959F0B409827BA01775C05468F8BF9092B07B9293275B865C4B187DC1DEA1728479C126BB9730C34F20131E71F052F4D505C3006F160D441CAB23545AA11C5546D47A0652D93F2ED29A3138C92D951E4CF350F7DA0659996DFBE7D594C41F5A28A9AC75406F3A05CDA5EA49935CF58809919219DBF29EF801C44A7C30F44724C7ABB53B3B2F33C5657E4ADA9D30C0CC324749FC8425EBA88294B3D3C816B962844478C2FCFAE15FBC2F24647011C226065C932E81E60901582F3EA495781FFF509B9329EAA2DC0C158EB0E0FCCC445FB47519FA0AE995F5F5D63C15934CE35B81D8B04C0DB3275CA6248F41E36AC59583FF396A622085DCE07746088B2D3734AED247A93BD931FBAC3509159BB8B3A9A6E95CFE9BE753E200936E3E5B923889A5F08BEB74A8612B18789DD3DE3E99265538E019E65C16094B6E95D585E6671305D9BEBC6F03720BC41A765CF330BF19A15D34CC3625B754B9F66396FCEA2C0A6396686A8CEE533F8FC3773D6641D98F6A80B764902690DBAEE183A11C15BEAB59B35C7FF62DD1AE76EADCC530A4C364FA0CE8B9CCADD3E32C9237EF9FBD690280D0A3B7B7442E56A548F50B797213C26D33257655FF73F17CFF4DD84AD1FCAD2724DFF12050BCCE063F5069F005A41A9F65EF4D86EFBBE3637C51287C157CD9E2F156849A1155445FAEBF5DF3CA2CB66EBA2C2992A713D6A7530568ADF7E2182B9A36BBFBC0F526ADB6C99E38D6D6E09B0857976493B6BA7FE781A0CF8B0FF723EB1341C858A48B700B71E5BF50B758264890B7B539B57FDD65B622437CDE94E4788465E00F502F296B271B6C87451AF1CBC620FB0C1CFD430212245569F385950EC292AFD11E29073E26DD1D3CF4D2A09847FF84ED31910819015CA9801FCFA6EC445FF1BA5CAA8D69318862504C7F29E56A25497A8B1D8FB974834F95C60886FB4A318DF8CF528E0416670B9827DB3511960ACC23BF9B3B0056EAF09B9C16C9B3B10F4816BA32CFE6E89EFDCF617D1557B1921B32256B631C63F5A41F78B5A30941D1DC9F2C451C949654548C8B1D80DBE8DB1CBDF4A922FFAA0DB4BE86586F05F310D5B5C1E9BAA7CD4D630882A0FCB006C6F1857718B830A237E638E25CE6626AFBB0AAEBB0F8A83479B3C2EC89A01E806940F58FE6B346F88334B53DF8A7BCBC4B1C23F12AF67F8DBE2E2857B8FBA2044C09CB6CAE2081F51D8091C7941B4861B7DF9A7D7A986C60E99E0EDFEAF1FFF79277539FCE6B3FE6DDC52ABD0707C5710A4F13740E5D80BA4B5197E256E24A397D5F12118A20FD72E5F6E2C6548334F92C3EF9DBA4A3075A4A7BB6B87B07626C2FF9C3442646C817F34072C996C6CC7488FF257D81B5DF1A2C33815E9F8FCD708D0B67F75735E398CA9924A3D2C0A86A8B6E7C2D738C1B512062AEF9CCA74C4179E6702C684318EF68A7D4FAC2D171EE7E25FCDFCD0F1CFC1F2747037C00E9A20AE42E6DF14440B2A2ED753E0DD67E8E619BFEFA8EC9546F9DEB1CEAA4F26A7DCB9DA79297971A8B264C8B805F1B403B30F5B015BBFA7B38F270C789E928F3F9BB88EDB11D69BA8E712B2775E24D01F9C678EBD301751C597FF1B09FD509E6C8CE8EB4A6EC475A45BD555D568AE5080A503A62469BFC0A8156800FB7A74A1833B10EB86ACD18DF798E57CAC5E75AAF13ADBD468F6F0A4D6537A43366464F9DEB5147EA252FE7EA886CB48E8BBF2AD3829C8824FC26E67CBD8D2CB72468736EBE9EA93A0C654005F808847DE2C293D5F828B0D9A9C73285D7FD7BFD530EC0760B913FC95F65575B3E4D6A81D3C486B3F4D20AAD7CB8053A8B5F8D645746156A1F16930B8052CB4086F170FB010390CAC46A42C6C48C4259524984CAF3D4F5038002B1953709656EE0D6C0E03F7DF45F8BBF726DAD9E03CD9CF6FDF448656F396B5426C6F1A5B8B2B65EBF2D9F3FE8D24B9F061202D576CAE5F32CE7788714C376764CE0CA79B80AD6C486DC2242614A7CA0283D739E0F2697180D503540A44192468846460982278E9586C2CA89A55A3D4F7B04F7E9EE6CD32C33EDA3E54AB6FAC8EC075B8A86033AC02346BBD07E298564AF13F9992E2749088929907592CD51B33E77137164C992B236BF1D73E8BA6FB36DF9F1A40F0299BC306C65C114EAC1578F66416F10A4B94381B34FA2E6CA6A6810B0FD79A22942282138BDF01073B5C9AECFA09E9D2869F0F5B24862E5ED5C4546AF706E3E238D3284D480599A5208FB82408A83E6B5D7D43DABB88781E8B6A6A43B7CD38E493E422558318FF432FC2F35C07BAE05F28CAB587C6A5F5D76D983F50C52D69A566C29170E8C3FB8A09F2FDA97418D0FAFE93D5F2DEEF7B38BDC4B6E95BB851FDB4781524FD9381B981C472DBD1103AA20364486452AC88B439BEEAEB772E0CF01381EEED3ADD1CF6A2063C881E54AAD72CA32E7B650F6C0704051A0D6BC78FD50AA65443E9580D461C7D245002D461F736ABD72625FB9102FBF8C6D727AB68AA9F8755D8C1E346BAD3F274AC917AE1061EEB387CA65EC66136A545C4DA583AC4566F25E9D857EAEB83C9651DBB240F0460C2A2A6C9B2C99F3EAEB3177EE898B8D192E2589C1C5CD309120B20BC8374FE1A438852783B62BF56210A205E096CE91C77B1DF8EE56BDC33E772163A54C9A2E641796FAECDEB8968E6EC45E4BD2EF0FFF5FD7F1EF478D1C8EF0822D38EE5D33D17225AEC4FF62A0444C4E94F73F752556B2FF84EE641D0E5500AE74544B9CF6DA19A3E5FA0C431DCC74F90944A4CB3A418E3EDBC1BA353872DE2BAFE01F8004E31CDFCDF4D18C164397EFA8D623FD9DD007DB14B1CD5A7AEAE18C75332565D0AC6FAF0FC148AD0E13F48EC6D5364F468D3C7160AF37F424A8CA42C8F7A11A67C8A61077C3028B4CEDB1DA8C135000DD822628468A28B04BC41E1A2EDB675C0DB51394725DB29F93E4414CAA7AD28511124A1C82309674D72102EE46A87F16B000A7B7E2BA946BD6115D9F7BE4C8BA85D319D41F84849FDF4DE55D060AE902DB8E217E04950BF5FA96D4FABF33BD121813FC852B0DB897D3F0C8E245D676EB5E41B5DC765BBE9857D439F3C1A4003065C22CBDAE0BD692BF8DA7346FC6D35FAB58C7FD799745A517C208C2397257296E6C00C0A6B8284C0C23565B8C68769E3E8911FC06C4411F4F70E06FA54D4DBDE6DECCC5C5FF6086301ACBAF729FBFC778329DC23E1D1E6D52D86DFA00342906B0A3F7E20348B0D15D8ABC9CAE426BF81B4AF0419B885E9D1F30022477FF1EFE7AF47530C5281C503911279C3CC4BBE3169AEBBF36E56DE426A715DEB913BA2F38542E5DBEEF2621611E131D635BE8D9D1314B3156EC054396656A1628825CCA7528E73BF8F652052F9C9A13CD8DD6BB756B083B4C379C03786FCC79208B34EEEE269AB2501D89EC55F05DF4AA84DA1866E838FB843B92631F32413A3A8E57A0BA12E662D75A37AA1B594BDA9C7EE069587770B4A73A905A153DE93816FDE9BEC16A39DF34E5E679F582369A3179D35820E1FC3162CBE46F8DA5A8EFD2E07B80355FA1BF0AAFD3F12743D0BFF9F03C31360D9587B1178274E257919F42254A87A960296A8B6C1B3F0AF6E57575CC2A627BCC0D34FEE86333CFAE9F38E940E71538E12B43FC8629615ADBDE403A09EB14F67571D573B845330764464BA1875534AE3B960D5BFF9B679D4CB85D644ADE1EC44328D364C05F5AA9AF5C99DB737AFC565EEA90E4FE5DE255E73B48134AA770AB83B90F701088CBD0ABD23E6F327079C10E2549DCC2154C3DC4704545C7F803AB9CEC80274892680B4111E1D72946BDDD42BA3FF3E81744121AEA20D45839E612D466147370384C339B812E684E92520B3A976A348D6F56B3F4FCA8D740D29C7E90431AE085CDCC7EBD997FDC8C80DB2B62B044B11B40855E8A7B1A93F8C8019040BFBC5122E3663896138546F0F23383E66D4A31A5A5E334C7E7C14F3714DE309FE846A75D898CD65D637BB04AB3EB1D3A1F41AD5DAAA745AFE4AF63138B415653F7C25704AB423068758485F3EDD309CA5AF93E5934DE8289ED0B3D65DF81AA4C208CCC8C717359EB8749C11F3EB71BD3A29BC7BD01304BEE2455B0674DA5177A68BFD3FBC431C5964F0A588762A7CB87E26A0F0A13591EE2ADDD246C4F404EEE7D1B9B7E6F3EE9790621B1417A3BAE92C4D32395D8324761A74410F0EE80655B247D9A1D2699FA8AF93F47574420645ADE82A53D4A1E9E618E4EE30A8168DE0DFB29A787C369EE1EE045E790FCB3FC2E53093A0DCA80C34C0F80C29B9AC1C615FBCB5650850B68D625C1832D8204DE34810D58F767C7CB9ED4D307B1C7F87762D71A77942791C48EDB85DF03A430A2F7AB2CBCC081E2841736F765AB7B5F4A91FC94024EFF49A9882FBF312C48868920BF198C2AB9BA6F2385F368393A3725BF7CEEEEFA8D1CD76614D07718F4B97392BB0B6F81335C4EEE6E9A78A445864B775E3C4BBCDFB05E37F15B465CCEDFBCC4F94438191C7889D8E40A1D26E4F39B8E2E2EF0A48EBD5639F20C33F987A3BF9FD20008BDC7E1C03ACAFE8A2A5930977199520E07F06D61DDDD55AFDA1DBA0F5EEBC86D10B3DF85ABD6E89BCEB4C2D45377A690E0B3AF0834FB2F338CD2A21B037B6AAEA6989B93A6E74ED1152FE371EBAE15198D19CA895E324AC495654F604DB99FB7685B5D2F578EA6D086E74695F747C3CFF46C6516E17272573D1A8283E89DAE8A6807588B8409367AEA17E099C5860C573097BDEA7DAA0D0434554C1BB648C9700ADDC5460431CDBFF966CDCB9809F1431CAA9D74E5129B7B7E4C4ACB15865491A44A47393BD58903AC868F2B07FFA176D2BCC902D528E9C209C645C3086DAEDAA6E0CDD14B8D2C402F69CA2E76213DF1B09A6B18C0C004CEE6AEAF5F1BCD4ED5C6BEEFC0D41A9287D0806A56A966EEC116A52CAFCCCFE85685CF3A5CF57F2C959767D252FB4AEE193ACB414D38F5F9E6E40BF0BA9AA16A05092BF3540701F0EBA006BB75913800B3F70BBA276C357AF8D259C788E85687F92E053CA03C6E3B57F87418D2C8A3B9B94978BA4223E988BCA1D27B2DB1569817BA7032AD745BF4D5E1BDF3185400A13ADCC3D1F7B27A2EDAEAA454E0CE5E20620A9209F4089A7FB24E982CCA40B39EA58B42376DDFC59107752E053F9B8AE74E947EB7DA063A9A0378F87441D7EEFC9F2B63B2ACA69BD826E9DA6D71EB4317D812BB51F1D8DB4ED5FB88A2C72510C9D71B2BA03D4CCB7B0D255CD52C5428B1D2088DD53D4C5821B3059B582D35F5D2753A9F6AE275D631790BB8AA010F57C473392CCA753FC77A29C99A4D41FF9513452EF787479C139BA68BB0E5F85855B9CA69C171B131DCC7E62A9347D58CFB4ACFF04E3D656965541965EE667E1877B1D8C7052AF8AEE9FFD8B3C349954CC79BE1896F11C70219A57935228CD2B8BE29BA8FD941A17FB82B8A913990586B4757887A3391B2D4F2421E6F327A5D5D71BBAB42D25D19842CB0832913FAEC6760B6B185EE6E0A00CEBEDA465D4A8A4A673D7F17B363AE00BC28F966D2468EE0CBD98B454B31B759FDFA510BD88663E42B51EDE161D794F4E81B3FA6C5C49456F1106E9F9AD7A7A2DB0DF1B57ED09262252A284369B07DDD8683FC8FDBE70728741A69A16ECE5C486ED980302DD1583C5FFC74D513DC38B594E57C37A3BF35766897361DAC5E6234D391422779A6387685C29BB5E10CC3E30420ADAA8FA6B8B1F89C0102ECCF5E3D3D67393EC8F86D9C2B4BDAEA421FA2E4E4C2815C2E935B128E2178EF99ABC129A311F453BF6ACE019B30A240AC748567D4A7A5CB077C96F0A6349796F2EE967560643056D97CFFD33AFBC13645EFCD3336F7F2ABB2270F4FF466BC08BA5F9089CAC3EAFA7A44C25EB385F50E0E4204DD1AED23C694C48158300DB34B5D40574E4386A25A706FE666C2322203EF5C8B9FD4D6AA746543FCDD3460414953CB471092268DC908CB2F0A74FFA5EF4DE10D3AC4F9804DD465A71794EB70ACB72A6EBFA05ECA6268ABB5D636B2DB00C560D5652981462339AB655DCEC0B57F0F50E612371157FE3CD99799DA2B66D4581F67A053F0D910DD0399A3A1B7D69CBA47B03DA2F184D541C4B800064F4E119D70CD465EA0F66C16E8E1C46F8F9AD982462360C82E30F55E04BF2C368673E57CF82EEDF0F5A1724F5C1CC1DD28FC24CD33CB14FE00AC720E105840DBEA2F005C7B44202BBFA977FB9609F9D5712F7EA7FEE5887E52F2A82D80B6E6A5C7CF7E2DADD4B3A61907F5AC72D315BFA5D4475EA566BC2D9BDD796263E213D5C5B3984D1091093A58DC54F125AD6919CFC147E209BACA59578A252D0B3CFB45B57BCF82492A9B9F29180673E9D6043B9414DC5A859AC7618946E1DCE5DBB6130A7C05C41774FCBF33BEA9275DCD29E4D3A65234A3445A422B8EBDE3B02879F715534D0E48FDC6620BE0EE1AFEE998985086492D68093B788E8B0995410EC3E71862998EBA5A2D12634674BA04B096630173D30BAA8B605DC2C262277A2FAA05E546C4D200AFC0ED48DDF61E13CA1F80772A6FB4415F18DA6ACEE51E582589E62DB7F154DCBC910B72AF5B8F7EFF7AAC89D6CF28857B1950AAA443D2B7FD331606483675B5B073D1E00025EFE60F5AF1FAE5118F1F5F371C28594B7F848A1DE0C6A4F2BC4F62938CC4DCFFD9F1E0AD6099D37CC3945E1C8431A72225512683A28ACF6CFBEC5ED903EB6CA40E1F60839075F4B5286AB5AC6743FD97AF2DC855075FA1E75E06A83EF0DFFEE7AC1663FE2E8960BA2DDA394B7165EBD77D8CA2E062D8FA537F0D0158ACEDB84E602847DFE3062303485AEF32289CDBC56D2B8A840F6D2E78DA9321C6AA00DF075BEB4A0FB4B158BB4D2D70D117441411034763DF291CC70C2E5349C93EF143C7671F364F12E4C7B15DFF73AE533ED4E998041C109C3717EFBD072DC417E6EBCDB094A92015B0FC83192B05CBED51D720F88CF5F8316590A64199C1ADB49219AAC3A7F957786C90435221A87E1163600B2F4DD2543997AF32FAA50A681D1E518FBEEFC22886F24788324E5B48636B7184E5C3F0B1F501FBD797B38671270AFF31A2D1402E35332B2210B15395DFBCEA54FC5AAEB038DED0B6E01D4CC00F3074758AB356CB8760A27AB084F8885E4BFF279B621AE1F10F6E6524972CC9D305A0D7994C9A497A4E7F9BC04D3545C610CEC3E2DCF0ED4FDA25D8AE57EF2E787374CD5C3051041EDD16425CF11108AA3CDD5B387AEE944C12202160B5E681A61DDAC8383E1B90E1C8837FEEFD913D685C63D18D824ED886D5D5599BFBE2B3F96518C0E955C80A7FA2062865B112C0C2F5B68C41FEFF508081D8004B919875951149B6E5792B8B11BB03B5A83A618FFBE1FC9D54EB994E60F1A2A3B9D1B536CC873DF74FF36F0539D0E1FA9D18AD7ABB33EF793E36AB52DDF0DFEC9B4E8172B930CA8A43661F37E635373A7405B417C9742C77C93F3B7547ABA79F9B0F262C0DF75E0CBA5CC4335852097D61CE73BE38AFAE3E62D309151BF553502063255F7A8484F0387A257B5E6E45225063AE4BB8D1B1163A563E0F01849012F4367C88FF8A0DA5582774B8184DF318C6D3658BD309DACFACC55D92ED9B9F7814F0D74BB5850B46698B5A5D3C5A84D6E4DC38535C520E3769C260CF4A7A24BA589042F187239EE486D0CCF396C6A281836641399FFFAE12B322B0AC4CD1E43FD53DBF9239016358274E52A53667D0AA9EE548A4B338EE3BF3BDD81FC256187B1565AE7C942671C3B62AC38E135D819FAC15C913C2D88CD8CF0298BCFECC70867ACD7630C3D88633515A1F9D53AC59706160F42B76B6A8A20866D7DE7405761EE807A1C4718C38986CA654376B7F2063394D6C0C3A3BA5A834E5732E674506ACC561D9FEF05CD25EBBDB82DEEFD9EBBB4578462718C0ADCE26843085986BC14FD4A17F62097D3CCE27219C4AFA5B0C40577362037D95B155966E77A2890E0AD7D0A8CFF41CA1E133F74A66618C750AEAF1C5CF2E38E7781F7AAD226D6466AAB5E7B239670DE6461E7B76B189364BF908EBBCBAE362B072DE83A7FF898D39D003098CC5395A1A79DDB74BBD6DA32D4FD553F938A9F3B2C1556545915F9E95965EDE18CDB6E6E5F669A526EB231A9E0B6DC8194E7BF644378418A9C9A749A5FAB63337FF868F738B73EE6D6B09E90EBFE57552ECEB03F7A9D7EC4AF5CECCBDE840711EED7F20D6B3F3C6429ACEE0D9DC8357D8A29F2744C3AF19197566041F859AF36F0452EE2158BC9B50CFD0CEE03E02112B2A711AA17EEAA2242C07A8DE2FF35CA6F0F4302884C0CDC0A8FD9B6347261DBFB96D18EC90378AC4A5BF34E64E668CF82546191896D4E37A11D16CE7B7D401DC98F609A5AD950EC59F7D5FE0EE13C24D13CD6A9707DC221F8313D97582E0609D8C0715A1F288B6FCF218E24A284AE1D9837AAD3C971A19337DFC11E448FDEC1FD8A35C17D879F394735B9B5534FC69B0FAB6FD3798A72F7AEEC7636563E5A67B09B876369F98A8C0709D37FF2E0EC26F0045615D164D38461888C54DF489935DC0DFF33F3EF93BBEF195BCD8CE240E1FCBA512707DEB93C1CDC36BCE71079D99363BCB6806521343C41465670622E6EC886532D864E576427BC616AA78D932A1C5EF58EA4F971DEDEC07A221847B8AA5DA80D56DD0ECF1430279ACE4D826E73F8BB04D5B0EAF7A1DB188ECA6EA4D2078840530341B54B198343FBEB2D93D2EF5AD3DE247E6E6F4675E4A2BDFEEDDEBB0CC05CAD53675D023A2D6156C1D651019E8410B4F3AD3BFBB666AE5782CD10D55409425874E4A3B04C02807BE74686FDBB30805394AF8553C3DF638988F73F6AB47AD2EB07B1420F3377F88E98B479BA9FD69121186100D7A342C3CC212516491CA1769D247CB6D9B5A7F9D7635107588367ECBC09B12226690ADBE68E9E67416C892949F54C383FB79265DD9DE3EB9E1518CEA482C877F69CAFB989C33EB9330EE6C5C971F221F719E7F643C1F8F38FBA3C17349CEDBC81F3E0FFAE7CF888492B9273C67EACAA0B9BA8A4058298D132198A3162E4E66730A00677CD2A8A55A173B47D0B946D5C962271F8CD385FCA19AFCC94482AFB6F48F18BCEEA8D986DF002ABC5875BDB295963C7BBC3D596879B82EC717EBAA5741598CD2F440F35C12B7B4EE8D3FDF32AAD5F8D8D7DB6788ABB883AB1C43A9ADA445D76C4F64FABDC03BA29F67193841CCB1C935CD95CB9AD6E1BCA90EADD3C149421B63226C066156A883DF1B0BDA8222B7D25BDAB266A30A99C282E50F5501A9B96A66552F09F7E886CF798B70C22E23B59FBB0FB96FCB0C84509D7166A0E88F6B7A0C6425575C33992A75EF647527F1A5FD60D2A7D8BBF80880E58D7F40C1CC51EBF68216E48D446D3BA144B8DE8BB856696DD32DC6D71F70E967729FDD28A4CA6FE7E39A56A558CB754F39DF78061B9BB25798704EDEB6175B942AA37EB5D712B3DCAF41A53BE1A8FFD8B5CB4505505E812840DE9FCE6161DB29EB013FD4CE5FBEC4D43CC60C2910FFC62A02259328B718BC90685A854BDB6E83200BBA1BF01F8E3265DCE91203FAA4FCD4CECF643480A03F1E8B7223D6D4502B5C39345C14940A8ABFC9753244707453BA8B9741D032A93C02B38D790C4F21D4FCB2C6E938772D22247B2F362290BE0DBEF63F6B6DAA76F013F0B300BDAEC4338FEE62050D0743EB65BF529AB514F2217183F8A74D2027DC0928B190BC60F004C287EBB7793F921DCA04F5AE619D4224377C3C6F9721FAD588DCF10DB4F6332E1F39FE0D59C7F5AED7C38C16F0E512944A40C351875959F8AA39FAB33524D80F46D095A55736E0A1F6E5F34FC1B207900439005BCD6F8FB7AE0CC56F0F8509CF9CB7DFDCFD8E510D03BC1CE4CC0A8B748A8B851CA33BF1C81F4B78664EE3FBFC072D3F4F5CF4B1CCA3521E86DA862BC9D33B63E335BA6D3BDD1E8F82681BDFFFBECAB8E83018723D04F6CA5D38D6FF023BE3D513C2D922C421CB7EC2091668D9A1CEFEFAADB7443CA8AC1B9920B251452E1509756A115AC5D04873D00981382F2B8629316BDC7394DAC3E96D01EACAF563F121550E4537F5BDBC19B48B7348C1E55B05577EBE5E81465D939D2A56A4C791C52152B475D6C455E4EDA6AD94A9358D27343EAA9FED7DB7598F40CD2E89FAB5F83A9FCFEA34B0806B83C6243F21CDC4266C8A721EB6DB8FAD4235917906936444339F2B1DB401CA88840BF73FBD9447C7B9C27CAF264992FEBAE76AAB8EE444A0D2816DE56BFA0C1F1EEE7BC067A59C78CFEDD1A4267260458266251D81B1F5AF2BC40F7B6304F7B244E4BB616CF251F62583C56353188E5FD3190C39DBF6F1F657D154B370E462B2F84D9950986BCB8DF6DDD53259853E2BEDE0FA21CAC13499D34C4629E738502C077320C3BDCFD77F6FA7C441EB23AAC11AE7F552C93E7C03E41416630BFEF0C927AD10685DEE67FCCE37662A022F35821200092849539FE32852B61D0CA29C6D207812E2DF98D012938F99D7F72739271778A48C92273535918F6AF10D43DF924BD3CB459634574713D311B9ADBE6A7E6A07BA198EF8A81A8320887ADCCCCE032C3381E4CEB4B09F299D97671D6CF6267D690BF5C213DAFDB1327F0D72A5CEA3E5753D9E32EFCC32B485AFBB2268A63AF9A0F53357EC158D897140C5F41D8750902ECD3794D298C79F5C7FB719844D59762DF413722F43EC3EC0680477395FCFA87D89EC39526C196290581A99022B4F205EB217596FBFA41FC4A513A56FE625D84987A8FED87F3E2DE6F4435CB202DA6DE795EC389C3D2B1EC55B925399336A575FA34273F47F20FE27DFD45AD5D186783343A05BCC7FCD619126FE4A96F8024AC3CFA0927E01C3D131862A4E8052C5813664EC8FE02953C36318B67344879CD26E6B670BF143F0BF2DC9E28F79D32AB38CD95AABE7F0B575E754148EC045A0BA6D3DCD984E2AF38C15452E3A6FF738C3ABC62E49169B1A02421BF3BE39D277B174AAF6C925B84F8E6ECD679DBC827665138522D98F22BBC36D2A07A9CB257BD1179BEBB72CAB348B9EE82E896A6BE179D6FC18B76E2FCE47E2E06B6E56A309E754262F5F78A07F1C705E06D188EDF8B3E965294A720B4E24B86D79DE07F2028EDABC3E5E6C924531B59D2AC2247C9678C7B36F04E6B0DFBB16D4CEC69A7D880B8B74BE739FA153F3EF84C43CEA47E50449B2AF4E2581EE3D3B80CE73A327CCA8D745E8621EFE4255AB3E8D2585F6DE50867D89DBD95E9FD8BBD3B3019C4251B54740ADCC1C0329630F3E69398D8225AED821162B7FC9906F45E5B118A3202B967CC214B18685934763EF6499EED094CF1668B972164F1945DCCD0D5BD51034FCC4E9E14DD2EC8740CC525417905BC47A4735DFA19D91A3F4777EEAFFFEA03D3B25F83F065E4CDC7B7756047B08841984D3EC80E5E813381CD60D2917D667D7C780EC5C1477C5FB23E07E1669FF6E80BDCD981312BEB7A79DDD453E51242339311CCF3BE60B181CCFB35B74F99275322000632230F13CCF13CA795D7BAFF0BB38F1547EEFB64EA5D5702804E0AEC67DEC90DB5432C55C6E4899D291B29729E1CED80924D4A3D2E577E76DBD5C399930A40A15F688F09A08491144C6663852878CA748CF39F224D491B6AC2504BF9E1F7DF99F4EBDCCBFB2B8BBF86779BDCCA14DEF5B0F80539F9E6CFCE7C0CADCB9F0FD73DBF3FDE4B4A8AFB910B043FC9E0394C463A169C96D2074912CDB1517966A07D78D46E73C5F362D6D9A91F22C8D6893EAECBA62676E648AE42022BA287B84766CFB792B82C2A74F59CD22445129A66B6D872AEF7E86BD3E3F48FFEBCD6A6D17B64A4515C3DEAEC3DB875980261780AA06242827FEE4DC85F3225CF54F0DE5369C00C73AB4DB1B7013BFB86671F360F182C3B9BC9132AB5DB46D1150BCC4B8A4175A274272A9E39C1B41AC1D27FC6F70E8F3DC75C9B48A860CAB571A09D26C24C560E89324DCC4A29B12CBD37D06786159213FB8E873951C0055E04738AAF9BCB55498C2FA95A1849B8080D6147BAA91CAD8FF13495C989E93D00EDBE322E37DF74FABD444C8DDA1F18603060FC41401D947C4E48BCA987BB5568EEEF90EF8EC5A0365269BE7059343BA9CA12C218E15ADB51C7FF7B22F7ACC76648C12AD22BF99F3791E8B6DE2861BDAD3B69BC91B4EB4C2CA5418D6B8152F64D418A2ACB6967EDA3C30D4B2FF3829970994750215D33AEBDBC8EA9203B150CEE35279290CDB89D7C8706549D3B3F30CBEF2ACDAA6173CF43E2EECDFFEAED74DEE7809C6FF817C4BB4F40283321149CDA456FC3B52C98AE99ACEA2CE90EAB8389AD0EA7D7DAB649BD5E67D7D405D1FD231027B4F0752A3F72BA5DC3F54610EBB3C116730F06CB0D71A8DE52CF9A793FE8F11C1CC0E234A3139EDB49CBA8398EDB314B80541B590567B7D1A4372B5459A54C6B1324837068AB817DBCE5CA0FEA839EE55C50F77B7B6829EECC020BE85543A163F78BC1E292B921C1D1FE15F8852F9361504754D8084B0EB329E96204AF86ED91B3B9908976752183F9AD594854025D25F761D60ABC8D525F7C406C674EA50214FF975B330FA3615D15094226B2985215194EC6D3B47A921739E73033DD6518A2B967FCFF3527A592157C0EBDE942C97AA130F25D33D0CC3E58DD187ADEDFCEFAC96827D0C2E73E995381327FE891306D18B92884725F0F8636382CFC4E92D785757A0122AF7C9979330E73DEFE2BFCCE939EB785111E8C6F4596D6E8C80CBE481A69517A50C5DEC1F1543ADBDDDE4386DE47FE7ECEA3F9A8DD34ED3D6187BD22A730B655DEC033DE2124B925CF648429C5D532D3187CF6727FE75B0332101BC44CEAE3B18F26784ECEA90AECCD05CBE2D95CA63138BB22987F88D5DEF65FA3B4F6A190A0A7B8AF9046899FFA8659572FCB62AF73DA35620CC6401B4AC7D44DAC8B873936201E98B233D611CAED87474942E8D01764245401BFA25D5ECDA1D5EB4DC42B15C5254BD27BF3A55881162E46D02179E3E861DDD7AC10D2C6494E7E4A490BEB77E0CDBEF3329A4D7DE9F66198DDF01D9EFB194368BA9AEBD6C751B364B7DE499DE6046CB4DE950FB62059051AAC9C4CB22AB26C157CE2C7CEA791C2C26D0D37BFC3171E786DCE0266E3DCDE67EAE3782F5661222AEDB16C269427BE102696104D86937B296F7C2818100AE23FF5C9E3085AA032CCD60C84848F986B05B3702F4C6B3A3A586C9C6C96A1D6BFCACC91357DB9AAAD40DA1AED32AA5F26E665487BF59AF1A23F6EA6968CB05BAA32F1009AA43271EBA9C93DE952A3ED8E33E09ACF59C8790F9E2B6B6862F0CB813E74D847BD1BCC9EF08AF800A3E1EFB8A54A44E84DA0373A6AC33867314D1112B67C2C208C540F57FCFC5F8FD10493135910101E800FA7DC9D3A1C6354003C87F753F74A351A7A19A4979534AAA2093A2D2CAC8896B8D06BD8D7940C4A1DBFB75EA0D1C0C44AD6D9A1095CED8803389A7F0C4CF6B079225D5816F91B1F0FE31B876006CB241F6B3774B1F70498468549CAA3925B4F7C79EC177B007ECA89D62585365344171EEB3C8E57CB4E524B02F0E002A14214802DA35D840A7ACF20EA1082037938106F8A59BF78A5292C3A3067FE84F0BC8ED105F709E3CBC25A89FB6C999B0A912FCB3E29592E4A74D10354BFA63F4AE0B0A4E7FA5BA1234E21F966135CBBAC647C1A1A336AE15303030652BD62268B9B9DEBB0D0326031C0E97D957D21F2F83BE281F2EE3EEF6A892C74B661C35F9FE6F0D88A73A0B038BBADE4C73FE3A1FE691D745A6E09B5DF5447D9FBC3FC4F07336B89E6C65E7467479018BFA655A34010D1A9BFBAF83AAB6CC86F9693BF2963C7799B41BC2EC6D7CA64A621CD06BB5C40F3E87CA9FDC8E1189BFC317E63F6E58B582FFB10BAE2835C0D1972892D476F78E4BAB48B53F6BD5B2B860117719266C1C6405F2EBA2F4F839E027B4EC88249AFC32648B13DA274DF6D86AB4FFA9FF53377406BCD3CEE15961CA76A8BC36FA17FC9CC31F44F34D21D075407B323EF75F4D50604BC99BBAB737ADEBF8463690C3A063A3BEF93745F6D023D3781837084267CC22CDE1FE1A2DDEA2485329D401D6214FA5FF82B11E51A45531AE2E44CCE32126234E58B0518BE17A6FBBE2DB84F25EC259823B7C2978787D66C66DB700A7C20541FD3883113680D123FF52BFDBAAC790C6A67390CF323CE1103CCE0368F96322BB3000434874E8CF87C742355EEE643B39C4DD9D315203AF49C03B561D64702C28863BEDCA5E226336BD63BD337ACC3CE59153CD8F1FD79F42D145CDC2BBAC834F04AA747C4B60146BD4A3B0249B99BFB37B93F7FBE1900FFF2AB02BFC5AFBDAE946933C36AC62FE78B4F1807D587E536205683CE113812841D692972A1387A3BAC9F6820CEFDFE7A14D768D079B5CEA56C092480FF9DD049DB796C1B93384AB56321A18EC99AA6F1A2967D7945F8C1532F9C3A3EF02C774736FA36C8C892FA04EF2660FA0CB90740F1C2F25CC69C3E43E4F5345205D91725631F7659D7263621297CD67557587F88CA64C51A95DBBEAF600455F0FDC87349C7E5A5D82E26AA8F7A4AEAD247838C3A6E72968365FC9632D58496A863E255267DE8FC7FD5AF879350A37A5A7CF5028CDC0696BBF8E5DD0D1D983E6C8556A5C162D72F056BE1299A8F66A9974B978AA4FB69F62636BC905BF55C03B4E3246A01AA1AE091132AD76E7EF501F9468CDA10A6A8C6A9ECD0709502070C51B87D7F47ED27F388C204C9F880EA70DAEB0BEC82B5A5AB74C1CE1190118FA0E060022C61637504E1ADF397BCBF9844A94E97FA4D09AEFD38CBB710E5C86C05719FB02A82593E9C2728D81C04267EB7200CF773C6B4A0FF6BC1E324D366D0732369FF4967C99C3DF28C00CF61336B93A35D191553C826B4A1C6A6804691F95C90E8BA010885843C72909E7D8BC243777186A7C459B1B1B4F8213C4E4703C6853B59F9F123D43A2F81A66A2A8FA00FC49598B464914950C28EA7B3FAC20E76CB5DBFA283C5A67DEADD68D9371405F6596C1A2115F138BF043ED4F374F85EA472B959CC8866BA9D07D627FA874A0EE3525B060FFD777D081EB26A97339536E89B91D2AD862E31486CAF2795EDBF386C2C94CC9018C2AD6BA54E42EA9D9C430C3BA6AC7FF46B98446202FCF112E0B21ED92075148D1F541704A3A45CAC47A9A7DB8FA9C25A210AE808248D680B13071B6FD10EA5FEAD788DAE7C003B77C8638A30E3B0F204F106B2FC44AA2596E29429255D8CEFFB93BEAB8B4F3A21ABFCAD95D8253E33C2ED2EE7FFBEF24BC673C023F4D5174F7BEF267D23A45585B4E19F529502D676A2F5140E4E297AD1902C0EF3F961186CE68A1CD30A2CC4F3EF2F90B2CA2681FD0652FAEB64F5E28CEDF9E2A4B0F1996BDE73979DA7DED743833AF7488C10348430396993736CAC620D7220B02A91CC2E06761442C7B49C9EC206D87AFF67CBA646909B889A997891A90013D25FC03C94CC4DCB8B3C1FB9DC5F334C723B2AF1E32A1DFC19275CA3EF2079FE1EC53C461652BB48422280ADF6953960F5156E01117A4F51323A9E4564D2A51734E22C99BD366BCCFE461A62B8D487C96952A32CBD9B29975E326A9F1BE01D7F8EFD21B5DD3BDC2CF7B4B9CE0833DBE5159B44368B3547E044D066D3299E25A1D1F3F1436DBB793D0AA1DD013FAEE7C352AD192B1941333C1F424486E7144A2AF0FA3352DB436CAB6217EA0B9086489F64A63E095279160A39C95F62D2799975C2F42E84784F4E4EE5D38851AAD3E76B48AD3499AECF071B070EB031714187035D3019C733E326C146F11750B4C12B13575D00602BE6B6F7CC6EE19B680624E3801B537EA56B1FCC20D9061AB84B92869286C102B789399D4B3DFF71EC57BA92DA81400CEF0076DE190D68751247676B69450F21735CD1C10FE373B43B14713238A063A41C392BAD989ACA1535D21D22907AD1187CCE444F4AA55F66271BFB496FF0CBDBC0F17A92A4EC18485B3FE24F4A7808BF4BC9C5DA254D88A7DA15F1CB46815553235F7DCF4C21D170C762E64A758DE2A7C16D27DE9F0FBBD4432DEEC78E40EBD34392F17DDEF18A35CD3EE6B4B64650194210B8FF241AF9F7BA11A985449A2AED7F6F50DD3006E8208AE42DFC8ED9A0173B8946C9DC15844AEB181AF11EBB5125EE15C099F3D52023A9FCF9591CAD15A2F9B4EEC7E19B1C0F55F09CC2B97CECD751BA56E58D75D1E8BDADB48B8FA1B45538D8DDF35ED888190F7BB61BCE36BB5096898BB31C069E8A4DF7D844A70E8E3AD8A02824D8DAB846B4CD7A69CADA8AD8D1F49E844B342E6B267927770F60282D21252A0DAEFF9316E3A0DC730256AFBF73A0CA73371823500862773407623C734FC78FF28F1DA2941C02A25268E831B141826DF96B45089F667BEA25BF05FAF36BE0D550897597DF64B4A0BEA9F6F1888166AF164D573A058A337D7C202E33C1650509CDB42DB7CC344E4257D09CB4ED27B8677B78BBD81C80DCA5C1DF783E47C6B37C35D9AE2FE09102660601D7D2A7DE9042BFCE19E73F0B3BD9B23E6F84737DD8206446F8C96E8946572D643FA4F1216392428A6C95F1B3E013C315071B84E852D903271B9B83A4D582C073C8A0B084F3D0CC7AE74BEF225EF2929371FC28396AB973F5C34381903C25A837C19D3364816B13BE4809A9AC692B9ADFB526486BF176F088CA559E822D6A5F0961B78C78B0FB920AEC1447FD5CD8AC6A809A1333A3ED7A95CEFC9449DD3D7B9E52BD59DB84BF53E25670B1EF0FDB32447B82896F988FD79898FAD3F04A7800A90FDC52B1A3285123830935C12FC3AF7CE7FA85754AA99901DE318BE444AF089D8548289D954FB1819BFCF0039EB2E984CD1F7EA80123BD2336389230E4ECC2F2BDE8CB262DCDBBE20C8D1BE1F4FD248CF7AA89DE01EC75EFCCB45EB337A32B9AAB7D7F70D48CB43DD4DCF1DD95205F4CF4C1FF1D2C0EF9C3B1271B82421D4598AC0936A6F8B22F1E755347CA56ABB4DEB95AC3EB19751645903FBD23F03AC3D22EC14EC13EA86C2930B64FAB330BFE6592C52A12CB68AA5C790B4BDF340E885E94CC6B6545D5F440AA62D3AD676F04C9ABB1DF99CB73EE364551A530B597701917A0ED70E85FB86F4A3EF0C949F7AD3AF7875480A1565E71B85F772E7148ED0011DD287A1428587B52ADD43C33C4380AAC55374FDC36A94F77565078CC081136ED828E6A61B990D92811EE29918441073D1FC273F965699BDA6192C94F1E9462FD2CF22B96A74AA4B8B45C66E5F9F8B296062AAA71699EB00C1DA9D8333CCA58D08A3BC7913E41C97FF00F48F975F737CBEB5E090F4ABC754040B1FF664A474F053D117F7FA71D59C82CB20B23340EFDC57A4351AF117E91A1CC16A4A5BDC64BFBD486964B7D7688A80BEEB2AEED2661136953788FB1AAF531DFAF07D4A21EB3D70E9F9A0877AC9282B25C5CF34E9834A11D62161CC1BE88146F8995A7ACE7A2F83CDAF95AD3B10583602D734074367ECBD5CD5FC25B5F22303F8A0C81773E565261BDC04A8CDC0BAAD96026BACDE7418F6B6EFF7374E95A0E8A83BE8A0E88EF7AC2FB9823A387B7E605E019E8541A4094ADAF5CDB430E60B944C7BA24B901399FDCCF4514FDA7F6EBA922A1810DC47F2065208055B1C63814DE1EAD57A64F3A0F287E3EB1692CA235C10A54690C86AD77C4DE7C22796D8BE2085D0C96FF49634B4E593D20BDA7B8A89EFDBD35B6D5248D3DE298A2F1AE8A184BAC30926A6C97EBAE3FA074881D7F27F07E115380B8FD7491DAA8C2A84F6B6D7D88DEF7AD46781055AB07FA364052AA8EDAB1953338B7C99458E284B846006F8922F7C972EEEC582D3600C45CE0FE7CB90F3F0B68D9C92D865E1209C31000A964C6FAAC5BACAC851F2388D89EACD5A3555738DB7177AEA5B1C63C35849B55164CF223AE5DE01B81974DDB5DF176988434A5B8914343B605AEE0D56899C7D02838C2808A302B840993F24295BAA948E6EB1F4D09C9D013E85894E19DEC8D0F5810AEDD8110A7B801034F45A621559D43774AB27D2576EDF83E2C7937C601803F757972B47E5ED4D9C93F72195C85EF8C2B98D78E0AED590FBCC6B6C6F15A254AEEDC57736C623FF887E7871FBF3817B85A324D2FF7223F788DEB1F13B56B676FACFA03CEC9E62835AECC74E8B28FAD298DE646035A96BAFCAE294EC7B793C5AFC589E4527C31F1A9E7F787E6D2F59751276BB4A1A7EAFC51E93E1A47D1FA0840BCC0EBF675CC4AD11E22F441742927D75FCFAB2A4970C6905621682E78FC017DC3B14B595E2D30A3BFB2C2CE4411BDA084D13907DB102E3B2FAD411010200F4ADCDC03645940B0D98BF8E4AE18B608863FF86B5CD21C4AF05960BEA114F9F873E49EFBD2CD5C4AFFF506B71432EFB0DA221A88968B46157E015BD3BC038A302BC889887123E28884F56535C3C406F9E3466DB871B3FDEB8A9B5B251EE6941E171DA90D420BCB5275A66BFE32C623277331A6E2BD515819459254EEDF1A516B2D1E3E8CC113723E3B56FC2DC0BFB07AC7F5E3940D62A8E075FE8A83504FA56C288F7336FC0D559D1EC8AA5609D15C927C655F805A33B9293A82AC4CB5B84824E42861BDEFF15E0DB5E8F8DAE241C1B480F0F30DF7DD372321ED80071A03C3E853CD8D46F81F078A0F78E0AD3616CE93E75CCB3866CA58788A3476E5D7ABF7398D79033CE7B3989E7DF123C7B3FD3971D87FB51D5FE06E0DE77B8F2BDFECB930C8D0E6D75919DAA0049EF76CD89B0B6B2B6E4005040AF9CEB85315675F41858E1D45ED4890E601D7B2BEFD52C0CA692F3D20E76F8440DAFF0053B226B0FAD4C1EA2772BD9354041B592DC6CBF62B55FDA542D0B50F07E404E7DAC0E697777303FBDE3A34F30FECAE8896AD6745617EFA2093B193757010F5EB720036D82A9A3C7AE9B194B17D767A1650A84C00A7291C91BE3158CDD4877DA8B2CDF4308A1946B2444E4A032CA68B90F88FE1AF78F1BF582E8C557A297E247E3A69ACDC02AFCF8CAC4A3EF8B21E79EAC77D40D2F61F07A8719C4714F28A8BD9996C7B83E078D012F0E0E11F85A415270B752A1606CFD79C526A0FEDEB2E6E1DF56C38A4534E21D6B1AE5DF391690119EAC184109EF644C0E8EBBC9E74B35738D878FECE268800C830B414E9D0C35573971722D0F3358992B9E1F1F273F0C8203D2C846852CFD821519A8D9FDFB73BD851FDFB70B25B270274511A1C0ADCD80589DCC59802A90670250454A6EC5B8B2E2C36E41FEBCAF75DAA0C32660ED5EFED7A1C2FEA55A729765BE43DA55EAC162DB38E8EBBC738C27B1E0D360998D33FBF8038D82C70281ABF38CB4D4F17AC7EB40828D08EC5948A9F47C68963F9E901E9B0DBF109F281F96FF30E80416152E0FA66B286352BD1F0F6F60FC641442CE96650ABFC3A2312F2A2978741997791F9E55D5C22E22905F39EB3DF73333AA358AD79C930A04A8C2CA3633CB50870F1F3D8F49E45D784CF3C0B3FF70A9C5AA51A285F04C90AF001E0A3996698AC7AC1C4CF7AEAFB28CE25AF13BBBF87964FB9A84050C9AEF640853417AA19767824589526179FDFDA6CB0C5E34E1D30D560C1D86F36B0729DE4A508C4812AB9D6EF452A40DEFDA1A2E5B823B2CF81E7450646D3106101C8AAEEE8BCD4F5B3319D6D503A0596177BD2B8CC1AC1A249CE09B6F2423E255ECBAA85C40452DE55759D04B82921374016055FBD2679DF5EC068BC98480C29611997710C77FC66FEF7A3CF9A48E0EA2014D711D86163B768D018F17E815BB794D4467903333367C79ED01B99879218159124FAAFA48A67A30F1EE44FCAFF45BE9D1306D0BD020130E147617DDBC4FA3B6BB97BB91594018A7E05442C30FDFF4F1079405CF09B3C036A03F5D7F14DF937E627BE8BB91D0208E2C8564FD6AB1E097B57A33A354DD270ECF1E2916DC28A1A3CC7A71D812D16CB34641F0CCD0C5FD1F00C694DCA6548138991EF50C459DAC955CF5925362CF91B540047DA991A7B4D58BD93E4EC329FABF0F6B3E3155CFE16CE19DB7EBFE92947BD31CD418C2C06545DCAB8E606FAFE1E0BED4169C71BEFA8FB7EED422A967D0930BFDF80C0812143990172209BE0B3EA734A504CC820DAD4536A7CD4E2324EA0F60765B1D2ACC7BD17EE6DF3490DE273A94211DC26FEC0F5359AAA9756CF2A98E79C69AD3A16E68F41F1FAACF0163723C1FAB76C73B5FA30DAD9B6C0DA2863ACCC80E2609F9529574074684199DAFC21E5221F7147D7AFA1A90991132857E34993CA2BCE3A2B81BD22B2AB251F106C9D2413271DCFEE7C42688673F83F5AB43854F20E365C33E588D5820042419C1655698746D1AA80FE642310799E1CCA2EE7C5ED664E56477390440FB2C63438A79AAE1B8B277FCD0CF204EB5B79B8C3CD73F9136F55999C319FD67519B1DB181867681289466DAED2DCD21CE844AE0E343B2BCDA2D4B29AA8A506F281BBD9C66B736CB8AF20CCDE7C1AA9A12F7F098563F479B64EDA7940AEE4C6FADBF38389E7A66BDA26DBFC1E9B082DCF781F7A4BACB3ABF3EECDA1591902FBD3E6E8DC8A47ACD7D387B604A9CDD84AE921885C131BC2BFE234E8E932251EAF9A3D7BBBE2E4011296B27D37DF10C09DCE68938E929003C9AB299AE56538A14723F1CB8A0546495057718A9E46E9A9A0A9075DE87DD124984B47DA1F284239B0749CB6ED9A9549BE877725C5ED0B1828E1FB6F71312E7959448B7ECD694E40F0E581CBAE3CE08DE11BF13F431413843D770BBAFBA1B18915AA76F6C55929E8D3D06BA9C18889AAC26DAE0CB64FEF0E64393ACF1F61D44005E3694341EE87DCCE8D6A2D4F0C6A05F7AEB09567BF782195574AEA0F93224C5DCD2C5EBB32EFEC36D1DC9B82BCF41429EDADF169B632640B503590828A05F919FDB01C3C934080FE22FC95A18E002186B9ED6E4495DA742E99E70322A1AF7C9D721BA711BEDCA98118CCC738C8BD2DAABBD00D07A8DFA0834C4D92556F41530CFD0359B166132FB07369EAE222EDFF009324E3839043E1F2ED769D4141C8B3329FA53099DBEED068C4D1D1CC3E284A8D125E90F41129457ED5501CA6A804319B5C8C44F22E7772B6F458AFF772DDF59EBC1BB9C59B58AB384861E4BEECBAD0C761E7F9B2D1366CBCA7AAF3F2C277E3586665AF04CDA9C8F4FDF45BA0E1EF9EBC620483417494539EE7EB9F578CA58B067C0C49A51DC79003F66C4EDD10C6E8E756AAD36F874069EE8E0F7690E954F4274C48D3735760ABF217C1F3A1216132153D0389B63981F7C4B06951001933D441CF6C4B1E73FF219445DC86578D4E903C0EA3E2E1315A2122921237BFCB2447A528CC28AAED027DBF67535FF1E71424AEE1BFFC3AD28999D075649645299F4B1FF29B89363661DE496D82EF0D5F90EBD6212512340B3F37A568767FBF270F0CA7B620B9DC49A2DC8DB92C0471EEA6B0BE302C9C0474147C3F807CE4389AB25D997A66A6B8AB8C95EBFC16B1FAB6932A5E7053DB19EB0CAB8911D571F392953C49F8F264811660FC84B17F830356DE9CCC1D02C5C55C49A4A4A086558265599D6F4BB9C646133B2289B95CE7E891DC6065BCB356519B9197E382553EDA2DAA396533380B56FE97367CDB73AEC54016FB7FD38EBAEF3076270DE73B915691CF2B1C33035B2C60BB9A7134E39E7EA3FC6386FEF87D9F42668CB2E7E93317F71183F09A51A59A9B7E5793183AAE942829702E287A434409354ED2F3AAE470F6687D4AC7AE7ECBF3FE929595F937512EA635791D1DE34B99E72B2D9CBAEB3812273DBC5BC6A30F80368EFDCA38ACBBAA3D5CF79CACC515E2D7196E2EF3B6BF8B7657298453A0A54443E6F90E2E540791F904E1144E2CB54680837E32694D9FE617E764B4A280DF576959342FDBAE891625AC3F3FF25ACEDFDAC6DA2670EBC4D005122D6C6665E7834B5380BBF57CF2107E2AADAFC7F97C0B16BB36184DD955285D9E35D8FD7D00920AC1F4E59903F232D7EFCB7427DA532215F291400E32467ED008C63C2B6C7D5A92A93F4D48A127CB66C064CFD90F6682085D50A961E265319CE90662DFA99FAE77957EE468B8F60F79C0D1FCF3AA451C0ED5DEFF653EDA365188DB72611F3B60B20D1B887591D186098CF6C84CD324FD403C31B2A539958761A3528A7383B21E51E18E19BCB46C4F7062FB531E1D710966B1F25193D3AA1953BF08A576EB1E68054422DBE6F" +} \ No newline at end of file diff --git a/slhdsa/testdata/SLHDSA128FastSHAKE_2.json b/slhdsa/testdata/SLHDSA128FastSHAKE_2.json new file mode 100644 index 0000000..f56bd02 --- /dev/null +++ b/slhdsa/testdata/SLHDSA128FastSHAKE_2.json @@ -0,0 +1,8 @@ +{ + "parameterSet": "SLH-DSA-SHA2-128s", + "sk": "43FEDB2B7B4CFB234DFD112BC8B6823F837B5B4AD0E53C4E6B4C09816C311A350272B1BA6AC29D89CA7C66E67415379D931124BE7946AB6B8083B03B5BDB6BB8", + "pk": "0272B1BA6AC29D89CA7C66E67415379D931124BE7946AB6B8083B03B5BDB6BB8", + "message": "D06125A32C246C930BEDA74A2F7CD7C7895AEB92B0615E2E3BF2077AF2DEE37ED9AE88F18A183B54AD9C7AF9BEA64FD6D73DE049A94C6F5953B0BB6778192F86E765F07E53AE056AA495DF20BBB1DEF75A80942264CAE4C92DDBA08F82DFE98DBC36AB9C9DA9566B6045138D169D34F33F3D4762A7ECBC92028E28AA1965B0B822F5BDEFA51D35A1E33B0E215CE6585685BAF432980C83792550BAD24B3AA76E6670746EF3BAAD3470DF6F2A66E1E3BD6074E4C0D416289764B0A95352A5815266740240A4B8CA697BC849C1A4E72ACFA40D77CD8D0DE369B01827BD2328FDBAA0131290B187CAD84171CEB780D9AF8B6ECD7B4F5F22667904B4C76E900CDA497FCA9A5373989D205CD7EFF386E71E7887B8CAFE727D843B6786294EA727B03164549E9E51374438CCEECCE45DCDFF2D026F95413D3F9E1E69EC8BB7D1690E28BB4DC1861520E71DF9083E109BED27F33EFAB7B54F6B7E26DBB4BF38553D400AFE68D184C13D28BA24E5ACBC6579D32824E0F512730C918DD182C33EDB0C03A6C4A3896F164CD3330C2BC2E1F950A89FF39B4558E305AD88D7E7D0957134E5E7C6A60C0E18C6C36939D81720956975A2173573C1F3CA4CD1B1A236D9B60D0C244C574A6FF2C0D4665C382230D65F2A0EC187A27D58313F1115FFCEEC2D20A25C08EE80C0773729B9B2CCF332DB62D17F8E63FA58691512CC18C1A61C7987324F6BFE92A8DEB971BCDF0B926BFE57D2BC1C47735F6F0D5A9B965E79E9F309C54537F189AE1EEDC702C36A66C3B0A92B91AB9A253ECC6A40F4ACB195A6BC352645CE431429E97E56428640CAB002064C2C05361F194F93884C1A722C742F4E428D1A68CAFDD530C8CAB375D254B65B67D925C5F4FFC340AE9940E959B14809B75994800C6AE072F2FA36E25AFE2DC8367324757EE7A8D70E26D3AA6FC72AFEAC0D73001DECCF8C4FA4AC9DD7D2678143AFB183B0F5172A59B26DDBF62F179F970DB4C17F7178E7F7D46B9611028A7C02C9D98666C10C61CFF37195D4C760BA3ABE9F614E694B1D361845BC57E71DCB4841A257E9515D366F032BCB8EAFFF3D91C27D2FCDD2BEA420C3D8C4F77B65FBBE0045D304F17DB7EE6C340C0E6CE10EDC3C37BCE2DCCB8D15A64966094CA2A3103A3770BEDC79C87F5F0C985FD34B6A2AE110991F7535F67003AF7EBAFC17FA0494E059D60BF0EDD6573217D23B90C52404632046A638F0940E7CAEC95020B176DFD3F098706E8D0157405765C904ECB179CEDBAE8DD9D78478CA4499F24417AE98E0D727423EF3DF11AE207EBC695E5315A00E67CE4957B6FB32D7634D9FAF78BF14CF275702528736AAF7E58FD3B7502E9238A2BCD6C267082E2994C629890993B05173B98CE54E43CB3E91B060E525C79D8DD7A84328118788B43D509552743BA84675F87EEDBB6AE1E6E5E74AEFBD6C7A2A189DC5B1DA254AF2A648502F29B025DCA01D519FF1B62B9C5A1E4E5B792FFC8D80BF0399184964C69870A3E6063B043342C41EB9FAFAE91C37DDFB3EECE2624A2E576B2DE468A0BFD74B9ADBD2627A555C3A3EDC792BE4EBECE801B8083B12324C76498091616E81A097E4DFE6D60439960379FE15AEC077D8FD8F53E94156BB2A80B2D79C1058D638538A39A2BDE97B3BEBFA5FF63DB3FE4DE591EA37A7D42BD1879CCF5240249062703BC9AD0E5C69E7C6FABE6C2842C7500518C0A1BA47741C3747FF26D04236A967873904040366A532A57E1CF1621986C2A09576CEF8E9AA40CDB074029B8C4516AFCF41C989F09A8F8E99A4F1B4E9E8BC02C25D884C5836C8038EF59EF534CB4970D0DB4BD58984FD1EC3262EB2AECEC24F693767D6B6E78A1B16530EEEB852B5C8569F83AC37263A29343E34E352DF569CE35748EA93A010538783FBC3AE315CF80A8191046AA5A6B222FB76C63B129E1216BD20154AC049E8A4ED52DED85D24AB056FF5F0F16D59046C93ABDD88B441D961D320D3DC6167FF728272C4AA1345CDD8FF7A7DEB00E53790FD77B2C0BB6A17B2FCF11E2AFDAA7FECE1F1D7A5EA01E4456B98F3CBF3D553F14BD087E154E1635A17AEABF78B3871F24670C153D78361845906A11EC52E60A7E8A9636E9DC65DA245AE284B853D4C0CB7B8FA547D3C9BAE3F24A8B183A80940FA3134D84528AB41C53E8F7331A0A801B825C6CE6F5AD81D82A896480722E1D4225AEC2E3E05317E8669AF56591D57D66DAFD4657D2B9AE66073DE77A632AA7494E990897716B18D8A44F90941399060203D7AB29776BEB3E36344F092BCC28073F18FEA7E7713E7626BDB3BDE7E4AA563713468B21E6624D30F018AFD13F9667FD8888CDEF4D154A62CD0FD9A91C2E5EE42038C234258FB7E6DDE4FCBBA14326976CDA06339E767FD57AB0A1AE491B15FCD45124662DC4C78EBC6C55BCFAB5137EAE12C4321B2335549EFFF8ED1E744333A1E770B4C1D4BA210C2166D3CB1EC563ADB0228C4EB7E44505E63AE7E5D3A0234020CBB018B13EC0AF12F9FF784B3AD9D7EEC0BE9783646DA79975F0A55933F610DF2F05E89D426E7ECA1FB3258BDE7BE6E04119D9C0F26F36B45D6B1FAD8ABEC61F7B56B721BA18F89A8F99E29B21F4F485AE3017FA159C25E627A2B64B08FE53F24E5780D30195105903FF5D28456E5703B628ABEEB11466FC29C8B6DA720C89DCB2280988F8BABE5A1ED90E8C985FAEEE7D284782DB162A57D0798DBFEF3F32127BF577E44CD42BFDBB86F4EB6C4775B7889609A41F05D23A1C565D24B869E113B46AC40E17278476DC6698AD4036AE2DAE4619C042F68D40038F1BD15AF864443435120A7513FD92665C9AAC55D5B92827A82D1CAE1558D675492214C9FAD37702EE73095EC5D5CB52C7E5ABCCF28925A3D5CC2E7F7732B74E70D05AEF505A5BF867AEEEFB6CFDE3D69C93D0DC9747559401752446CBDEA1CD7E665CB9BC57F6A8C23314582D3718FA12FA4E290035A4CD8A073747031E3B7BF70C3275E7F6C0DABCD1024C14DF9B48BC2764F75AA8C9B0DC34A07D32A389C47F3927B88FC51177F198C1C9E681023A7479FA8CE2BAA51EB4B24B096EB2738EAAE8CD270A1FB2B6A447B20FB78E63174E1F2FB63234BD3C5031C8428BC5BFA3A8895849984049A4202CB19FE705508CF4C6DF2E562C180332657753B3E2E365D7A905181B67EE1D4D85D24A37FF91C7957C256F3B974CAD9163B1866D972A0276F98F88CCE6092A360AC592C9B966E3EBD4EADDF55A5F6721D1FE148224180318ABF3AED38D9C705A1AC98B0E7E7F9F7833AA85AA42AE7A986316696653450F95D4014948EF27965A9510A3D4F7DA483B5467C723BDE729E54C9E0B13F7057ACE9E82D8B6BAF3E00ADE33817C93B7266E3A507BDE03AE18ACC7F43CDF32648E168D478C2E48729BD035DAC1C683F1E9896D3D88852C08062AA1113946C425E5AFFA056E8D3093ABC2E597D609C8B9CDF14B01051804882BFBC4BCB1E43571681BE49A8041F3248A62459D1D47F3DAE753057EC82C31CA3A8A5751B1BB05F15FF2DFC9D4B01CC370032D36D24F02735D8677B7D5957447D5C94AAD056337B7A927EC2FBB41515F1AEB043C74178385276CC4E962AF193C129B1B260F37AE743FA15E55C439D0126FEA66FED186E2E0FF59D4B3E77759078DA0599B53B14981D9D5C3570872DEFC10AC50CBA696EC6C366EE748B9885A030856D8A325F0BEB0A61D95BDF3295FD6A29E3C317A515E56538F9C1271EFAF6F93C6805859719A4CDDCB1D04FD4FEBC281693858F7EDC988BF2224C04D9C8BC32282FDEEFBD13FDAF7242F33DA1D88784FD9BF0DA2C1F291A57C39895C8170FD0EF71275B83BAC3066DB2AEA8F7EF4E8BB7141BE999ABA3508B61A981196B6120EAEA2DEF633E9819848986D06FB57C0045B2002A38FABB1C618B9A1CD3488FF4821D5D73F0943EB73E53E354C805DB257E7DCAA95FE33E475E1D84A1F6D76C68DD4ED54ADAFA7E0F5C5F0D7641193AE52C90F340B16D425868376E6EA39A174CCA256D02EB07B672BE7B16A23BA77FCC8B273B0D24378D4B51C052916C3C8A7202491EC0E6C50D689E18783EB89418BAC8DAAA2D0C1996E8E554C8F870548A36B9CF36546248A736554826BA20739F19B9C2E5F6724442389E80088DFC62B0C5D398B158ADD27DAED11D724E513469EEE2C45A21195DCE6B28E327E0F67954C79778EF896182DE14E4FE5441AF6A1CC560FF075029483DC22213DA8BE662AD265F21B86EFAC9EDE9158469561FF07F026F0D42A39FB3E950E6E9534F6BF3984D5574322E6D8BD3A2A3A604129824AC7563467E7EAF029A915026F9CD6C918F1996017BCB66E249EE8CF1A639453A76E0B7BFE0FB0C2F4FD1409811B67A609449E0494C0E04633443418BAEFFD3DA2A62DC732D00DA7062E310802F9A258A793AF17A14709C5254E5C0BB6B6F1260516F333741F39A86C3F4B9E8615948F5FFADFAC05F25495E991D67C8879E641BCC71D97790243873FB519F5DCE3570BCAD4759D08BDFD22BE7C35B796796D76352881DD115F63C597D85A032503022F597CF5F5F02B6A4EA43EF6ECC7DB5F99B83F08EF12A078B0CA65B862FC9161A5590D92E61325B53E07948D9A103E3B403B469486A86B3CEC53091BA55971D321D9071B032B9AD05CC5B15A4F9CDBC9E61B11D4CFB33AAC7400CE70F3727AEF51D41A75DA145662100657B154DF4DBAD3FC9E2048D3A73C5ED13F599DAAE6A48706398D47BFB6744B5AB866FF898DA36A6C2BDA16F1F59B516235809891CCC87D474AE282A8270FD6A5223E6EF89E8461D7EB5A7363EBC1E8CC257ECF9D296D99176F9E1DEF8B45C6AF3E02C3EE5776D0F51DC1FF55EFDCD568C21DFDEDBF14A7F61CB67F7F898F99EAB05330C13ABADA135C7EA1D153B5CDEF0D976F153077027EC3FE99219A2D73CF93531BBDCBE2F021232E64C1937BE4B5E819AD0D4F2D4DCC110CA43AEC0D41B140354D487BA5F8AA94AE427E43137B6829852EDBEEB3F4D0AB8763B48D94DF759CA7D51ED41E3B06E58BB1440DE94374B131CFCB72DE6925441166B6BCEE3655F2505796983C99F940A1BA47D948F2023E10A2C3FAC1C5F43E6D4B6E178BA8AFD39A8D0FFB818553F5CA9D48D297929F8F7E32658E09F07F5053181D908FB3DDEA8CEF6BD88180607630CDEB412647468AEBFDCB59832CB30665917BE20B94C3B5DE6F19EE1D7B8D499BF8BABD06E4E1CEFA29254369BC59A6CD89541EC9FC6EFB8AF236180640B401413505DCD3709FB9A035EE7A804EA80487202ED17CDE8EA1D59E3D96AE9204E8A3A59211B0D0D6FC5AD0ED48AE3489B888D4AA1B3957B6E356C6BDAA6CFA8A8D8E8CBF0A0720E9213B682933B1D57883389A81391F837552AFA942A9F2025484049F1E16C7B2531A0DB99EAEAA568C9960AFBCB17E9F2CAC9376CC6A4AF6EADA06D38A3E6ED922F55BFFC83C2018D97C038D90DCEC6B579EDD8CFFEAB7BF19D5F5BEC783D29017018C991CC62DFA299361741954CCE098DE576CDE75EAAF8E78C5E63649AC3AE02CD25DBD7539AEFBAC02DA9A3637DFBC3C0863BEB2CCE95F4A0E567519A62C6DFBBA5124891C9132061F9B6F39F99CCF4B0FDC760A369A7E06D6DA066BB51B37721483C3072ACC187E7DE55D4AF0361414C23A24ED9E728F8D585F45251FBFFB7CD66F700DA1817524CA048CC617D6562BFF262BB0880DD184817498AFE0D2830ABB75114662033AEDEABCFB600710F1E0FF35F792BAA6F1E7A5D200DC7F6FE1B57493D719B75551F6B8E66779F587669251081FD287F79E828ED8ABC3F9F3C45236E0E77DB342F90F088F9A593980B051960AC043C218A66C019A5CA0646A76533F910AB5D90CAD114BD1FB2E63A01CEB89002E704703F33196B08A506434D103BDFE09566C3", + "context": "590DB5D80216630F89751815670B77EF2E9E719973B8AC683AC150BCE7E14E1DC291354CCD94379568A71B0E601355AB6AB4900E3BC32C8F59836D3AACCBB6A5837928BDB6E1A3BFADAC5C9F4706EBA7FBFC879D87D197EA4EEC2E7053E542C54662144CBB51A7F25217E0D2AE7A7B87F4C01FEE91FD0898C5E30E5ED3F5D78E7E0B1AC28EE0681BEB189B8F6A5CCE5C4B01662A73C1", + "signature": "A5610F099D3202172F2ED54DE17EC0A35DACB97EB2B1D4C7F6964BE4C6D648F875CB220925D40EAE33FE11F2A95E0B24A3D46C678956373AD1BDC6F92D70012B73A0D50B71AFC3890A383D312513D97E9821D41A08BD9AD64D134B5659461D427F900B617EA2A126195C3BC5ECE88AC52DB028EC7888D6EC77051ACE6B6A148974F2B9B9CA143142DFC9F275F359F71D1705224ECCCDAD01A8925A58EC9211264E2C0F42D18CDAA2DB5E2C1E18E577C943D1BBDE9514E1F777B27AE459952A87B3FC026A06BC4DE04DF78A89C2DFE96DBBAA31925A07C9E88BA14F5E59E78E356CC82B92577F0020677DFE0065DF62C79CE7929AEFE2A625530E9D22CF680FB2AC2AB26F502760016480731A99128CFCBBEC729EA9766C356AA91D08EF213194FA169C763455B3A2CC149D9F41ABD14A1E41B51A63BBBE9515E0C9CFF9F977F57BA212CC0FDF118DB814CDD023531AD670DD015EA54B09C8E77994A25709250B80865683F4030B4BB8239874B9C13BE5FEE23AAA4BBCEDDE79DE4D4D4F0966FA66D4BB1B392F43E0844C045DFF57A3A75026ABA50BACCBB4B2B6A386153011F052466A76B5CFA4B1DDC8207C955636E85D305172AD5798762387FFF2E6C4761B9913E40BD37499A4FC9F56B770E4FBCBD9D393C40CFB5513EAF9F1B097BD0510113D49F824A9C5E13C4076243DB6FC5B7E210120A4E82C9031F031A7CFFE037C4F2DFF8604AAE4B65CB3A1FC392A1121E7E253E622D39FF7AB08F169A4F632C4E6A55033C8C43837E96F213643A9C938C74822BDEA856C124E7B632207763360ED5358D08F4AC4CFAD271355280A691B30195D89016BA88FE15A9E7A05ED554818BABF543E1A406759B0B1B16973877288831FC464CCC4C588927575C976EE79070D68EDBFC0D5B4376EBB866FDFDC5DC00BB000A3C03D17D47C4D72DF9BE97EE87B20809F220D10B42A69DCD4C8ED2886BD93CB4CF6B16B57DCE5800F8EF78F169C74E96EFCFA5B03540F955D322A31D51833038F952C29F7A88E2CB3C5500B3E252ADEC5B91341F63E7772171ADA52F3E1938CB2E1B31DBF540203D848829E5220565F6F14BA9A00D59EDB1323846C8630160F92CA3C13354651F99067F59558B5578A44CC478DA09B14C5FFDA21BAFA206A95035D8279C7CF80AE1ADF03727D93A102AB423C874E8F3268BE4642ED0B4282C358AF9B323A2234265F2D0045674822642B0D4B0E9AB588D44A8291B444F9F14E604AB20E82042FA9E4144BEE2A7AFDD3470CC3A04FC3DC724130B440DEB4B5299F30613113BA631122C982763CAFF9D829A900AC6008A3E434634B22FD1142E6C58002E003DF30B4CB148C7B0624AB531F75D89B29BF1D045893D692B0C57F1C1CEB7CA1293864AA5F2CE0BEAF79F0E73C02EAAD7FAFC05D5FE6C7F56CF1FAB40340EAA2D770BCB49606DC07DB37F39F78AEC62CE79CD02FBC5563BFA0749B0F48B553527B7622CBE650E0D52788D8773E2C3E83AEE46B7E10AB15C7C4FC1EAB58969BA4776665194015D8393A90B230F8F2A6BE46D9A983FAE55F47B9FF71B8D5304B9B5B19BB441EA51152B9ABC24D415616C482056CBDC03C100F0FE653979697AC9246B3706E7F5367A08DF97948F77AFA75D1DA1EE5E368DA53D050599A129374119EBBDA76D880512753663682F81751C291DA0F1D7CC83BBF45203EF9D7614E281CD818C113D6D3A8E8BCBD0C91E1761E982E7BA334420441C8CAAB8D12C9D2AEC6F3186DB60BA9860413297FEA28631EEFC9C448EEE4A515FCC056AB61CCA64A7D98B8A2904020289E6A4C5DF9BF537DD3429CA3F1C9F82930FD269D18B45246308F32DF4E22203A82A747B6107B89E1719FF50C4A4E49012B2456E9442B2B07F3494C9158C5BDAAD85D4FF56799676ABD31AAF1DCE4908CB85F181410165556FE019E14A67FCC2C885F548D20D1934407A862B6AD37AEE730FA4878E46042C611B504EB7D163ADE38EE75FA7130AD494F19477EC307A7D1A94EC436AB22BB15E4BCD7C2CB4743DEDC73EB8203551ADFD7080D413504061EEE3A4D8FA6408D4A6A6611FB416279E84C46B9F5FB23F25946D1928B1DDC6E513A045BD021CFF3D390EB5801A1F2FB918FD97EFB0A32EA2FA348FCCF6AE16085EF1D8817F70ABFD3727201A8611B31B808C5FC7BD2184AEA9B9D07A3FA267BD3A9E1FF2859403CD06841579AB10B2B7A2B7A5528AE244064DBCCA7123A2759B71F7399A63197527A9030F216DC96814CCAAACA40B7F3492BDBCD76210C8F983BBB88160AF405AAFD929DD103461F9E5CF7B9D312833B5DF69EA48C3C45DC1009DCBB5163E0A3655F3C72D35C74164556D7DBFCF5FA9585868521FD826B104C65732F5E00BDC48B3487844C3A15336F8893AD2D0FC60C61E91F23E9977E7602B90918E3234FCE6EA2C1A74E791D6C7CEB4A3CE7D2AB7E9319E9DC154970A74687B35022C31FA94E1BF22BCD8FEB950A938D245055DB5570E5F29C326646C47B05FC991B13319A9744496978FBE80C3D57A499909B17F7E98D9A5B878BABF438EEF5FB582459B6261DDFB7CC03C756EC7EE50C0B13EAF97A203C3F87B5433B53C7754665C0E1BC20B4C4F17B94157CEB35FD680D3920655FD888E201F4A5ECFA12588645D3AEE0D86439F93E219F09BECB5827C0A34B8EB7B7BAC5007B82913B36F25C1AD70FE7894D8EE61CA535514BC2D5A3CB919C3A467980A36871F17857DD84157FFB4C287FAA7AA3F5C3E85C91C57CCB2EAAE4A14F3914690CD1C6A9EEF1229F518F876D981D07CC896FF3A5EBD5C5F172AADA4880E0D68F430F72793B4A3FE31F3535EC9F70915BAF7A9FE442E72918D8D7C1618D286C68CA22A1FF4E2B0B1E9F17A81844A6E32CB31B7FB8A45A8DE526BB77D1B7C17671DDB3235A2D448CDECCECD20D20DF9D5553CDBB53CBEE6D3BC7D2773D70165473C1FD642EAE4419CDFEC52000F5229F66FA2E7A02D769EFA36A57E029F5F4C691375575DDAF8C52112925C721105EC7CBC4BB6AEE50C6B671150F23B8D799F94F083ED9E1765995584C50F63D58C156DD027DBE346BBBC24F3367E28875C36AF38D6F2B5AF69EBE0FDF535700CCC6AB7FA33BB3AE3433C2B1126C3234BE2D1FBE833684F9BBE2D76F29AAE3C03C9579765B110034E76DAF17BBA8AB4483187314717160D6CBEA7610B50EDD4637699C2B8823E0D27A4AF0BC4D3CA2E46856A56679ECB8FCC1167520092911852074D32B9EF85FD85CCA64658B139439099797823647E83C054AA068FCD7A56DF066168180A697615047E34894FEEB98AD39FE8A3799B7302747319DCBCFF446FF65C77D9604045F1B0D56A511F2344FA0DD4B8A1376276BC4A1E8D26F7275FDBE53AD32F2F70C89E4475580E1AEA58D3D76BDD93CE0F54761F3B89294CE4F69AC89E71BF34BB4D64F37B0C8E2AB340A07CAFE7854BB098A64938935F40B7AE7AA002DAE3076BCD6BFE42C1B0514CFD7E441DAA8BDDEABB63B294DBC99A7B7B249988CA4464F786E4ABBD9D8E4C9BED608D32ED926C82D773A5B377C5B042D2D43BD3276B1599F395C6CF70B29100D2ECD28891DEC96B8DF9E0CF9614D49CAA394B7BF7C6741EC0D3321FB0D7331F6BF29B3C0B7AFE8428C6BECA83ED876BD8D0ECB29B5F0A3AE1FB68ADB1532196E3462CAA1A1B54B379CAEE2B964DDA30E017808961AEA48C5753B06079157454238376AFEBCA42C86F23C35F06BA34A5832AE5261B1480FA6305E5C7F5A5853F5A6BB904A5FB64B0FE9E00B1378EEC3295673F495B337E10C0A899EF46B26DB9EEEFDDD0A47FFA0FD56368E9507CA108DA7A3FAB9F8D8EFED7238FBDDD2C5DAF8211DB425D85F7AA9281FD0F4D384A250F281091DD5353CEE903A0901EFCA96BB37F82210E6F8500CBB843013BAD5FCA697EE9431749DDBCE088561213D35E8300ABBF8815B95E5F57566CC34872060C0D4E91519502934E838159DD234353CC0C089228F81D93488465EAE6A7866661C5A2E7F7D4DC027413AF072A3C30C797DBD0C7C94EDAB05D0490A7200E957FC871A6596D7FDC0AAF1D11EF8F62A5E15FB34E0AE5B74E9082FBAF37046AA18C087BCD49D5A2618EF09D11E617146F1538EE5C04898140EFA99A0FABE17724C6CF57783F1439DB249CB248626436E26E9FD21D72D0041F3BD18D8F1B91BA6FFD8DFB271EAA124C4869634109D943BA6CF4C30E8CFB0FE5940D9C78EB7BDA48C90EB36D39466C176B86725F8DECE1E0071B7EE1B8EFA71A118800AC99D77F14B6E49B122455BC07FCCD6E5971F08BF9A9B5C2346E1C4152B7AE765465533E75477B6B58E78B031271B5D2A4114937B8159E44354D1BAA2C5E02085E9A00DD9BC6727C22FACDC7B126CE8990A6FA279A17868BABFC54071E3CA8A65832447FEDCBE3BC5772524E6D1024CA223FE62C6FB407538420BCB007754BAF42CF284BD8EB8D5B8C5E1E3D4C6561321A95930084A56F4D0E4F94ADABF13A6BDCA893CF37F31FF9EE7A9F152F6365D6B3BF4FEB5E5B6CCCA968C15C0EB59DCB4EFB65E14B7DEF360D83F56FCB5DE4DA9D2261BCAE611BC8FB655C98D91A3E4E188015ECCB93DE5EEF85A5F90813678B6FDA6420915A94E220C837DD8F4811326504F7DBC82C5FB1C044CCBB40C51AA9AB79F08B800F4FD70C3121E511431A09DDEAB476F8195BA4E562DC37F6C0CF664AF9E7605D577CC36247296A759935879EE9C8CDC015FF604373FCCD80D9E834CDCE71F45C4A1947BC00BA3EEF0AC4477BA200CDE3D3E7319C415592063674929717366FD399A54A80AEE56870299EC36D64463BC8893FB6B1ED9ED2E3B758BCBACC101E4D84CBE12746028EEE0562CE889A4664FDF31855CEAF411FD0419EEB578C443BABEA2B44B1F80A3D8D7E3A27D92B31B82E483049B53C99949BD28CF20979A28BAD0F00DA887FC2AFE7C8861F01BB2A6B3DF53C518FD25D4F6E5A4EDF8AC47FBE5ECA409014663A5D5B0FF5FBA22CE1009794F3A8EC0DE69A106DF66E5593C453A592AAE62E17C29AC039183FDD85D142A9265E2D360808CA7E88FE897BAD775834C07A9DBD29C7DDA10ED8CD16C4F931358545B17CB386349876F41609461077E39F0EBB56D04B7B87F049ECB88E6C69356AB5F95E5529DD08A68D808D6BBA9294D664D7CAFFBA85AEA527F5EA1C54F5E51370B708CBD0E50E3CCB458ECD1D2B50F904D63789870AC42F8651F6B04A2BB180D19329D3ED95C5034852C9F7B3DC2219941B0C63F4F1D1E98B3B1DE33F09371C5DACEF08ECE915AD245C828EFB145CE22A3681AC0991033C1A4AE33B9ADE911222E7D9590AA3570C2A4F62ADA63C029330B943CC609B9EBE526284E204A3E1C7B985164FC61E6068FA58DFD7BD463EE2C3B34914A373EBD3B39FCD29375D162C47CFED85CC4DEDCD73D3CD319CDF41BDADAA7EADB134AC23D4D7DD6D17633E681E51097113DD179AF36984C09AF3530D6887A63FE4D3C3C3B920F414B0190768395B3299F40E8FC5694235D46D05BC005D2C8A90AD42B25C33DC27A71089827539764A875D57FA1C616DE04FCA8736C823F2D7E61F548C59D757C6FCBBD8BEB3C452E0627A38C2EF2041BE3E0286D7D6EE9B0350B3CB412EEB65BE2AB23D9D7546F3828217A22CB985249F5F86F602627A3A88588EF248DD5A176FF1913C1F162E9182A8F2C55026F219BAAA641E146B8DCDB8C0A28EF0E94E16CD0DC613CED9DEC52146BC79CFD364A16FBCC3D57B576FE85BDB68AA5D2645C9FFA162D9A2BFF116702A66EFA7BC1A5B8133277720DE45DB77B3637054D3CB9CAC714908A25A6DC85C20023B15839CA18B2CD81CA09C7218159A67BABDC88499651331F8D032907C577621270D406705F55CF5A72B2A6E45B4E5EB69DE3807FF124DA2AB0DBEA038D537F7C38649CCC371135533CAAABFE4D807F9583705793199A05BEBE3683A6B0A6DE9C7A50D6E282F3DEB26E5C21D91CB875CBA771DD8575BFA196CCD1E53E25120DFB8F7485D43FC5C43D93A8F51348C025B23674D4DB73AC8E65061069AA7A27A180C94D2003EF7F4389D2171FFB280C040060D2158C9D362A2C3048E7B641DAB2D3ABF66877DEAAE17ED34C4AB151857F9BDB14D530EA38118E4C6B355347420B5249F85297AA073B48A4146FAE52F305CCBED010E66A65AFB87EA1959A4A93C285F77685C63ECD67B37071236A7D74D94B3929553A930F4090F393B1B2BCD5174AD68984FF7A32A965EC9ED85B5445C2FC1720F44F97ED4B19250E4840654D795099C58FC95337227B11D3DFC430AACC1D3A6F39CD5E39228D97129D33BBD66E7B6F33CCB971C682FB1175465A2066EBE33074D0A132E2C4A77D1E8BE5C91D9ED2581457315D43E27B972C9EA70DF0726A41DEC680C1C764A2CC76779F20A8AF97E40A7925554DF97F0729F34709AB48B179292DC87ADD265006FB48A1EB134DAC429785F838FFA253EE3B2CB2BA0629960134F8C741F5ACBDAE5620733F5432914F1D8F864BE8CDFE845CC5B17389AE84A3F0FE7BA3AA225038E62A6122EEBE08235811AD9420D28A165A187C612486CC236A0882779A0E72F8749A0DEB498F58F3D0B4449CE96D66B1216009982C1192683F2899FDC9C68DC38F16DE829037CAFE969BDC3EE086292754FAF39A8DBA4B212B2BCA26C1297F5382282769870A7B6E26951C1EF82AAF550BAD800EF2B7A8AD02182B0D06B423403B0D64170FC17480AD20C1EAD83A6FFB7E3D0C2AADCAAD4338CA0B87580081542B602ABE58DD9D2A8C88F20DADAF8D8F2F8B9BFD2ADFD3C0AD6367C52B266DCE900C464C7D7CEAD438509CD0A239D8FFF29BDBB7399F59A75B31F3F319E1DF4351FA09970CC8BB978AEECBEE610EC6C3A67C9AC98316A38F660311E8FE9A286B9AD282B472AD98B2C8CE79C45B26782D386AE7CB98C918EF65163FF6F9CAFDE91CE24B9B78D34367FFAE037F1F8BCCFFF88D97D53CA6BD3678C7E894757D26AB2BC0313A67075208CF47BD6D52520E1CB60540F01426839FDD558D58F12790460CD90BE412A92B6BE8E705B7AA710533364C9D9B141735C02CABB759BD50421A0ED2422F01445EB27DDED65D7FA95C7321ED4DEE75A688CBFE3CFECAA77B73179A7555FF9250C9D3455FFF3EE2C922262716608E6BEE1CD68F27685BD89BACBDBC6B63B467DF59C963C88561381370C1855B6DC0C7003E9FC9B9D9B1E03310B8F16B49A2E3C8B86851864EF2CF74EC6D52741CBBBE06DF4588E9F0718748B574B53E5E84F42CF37422CC7280CA22EC5A5EBAE68DF5DF0A769BC243738C22344865D761DA5879A95E246D9301B2BF53348708ECAC999151D1574A580ED0124920A65D7357206A1E0960284585E79E89578ACB83B6CFB18EDE65F270578AE985DBBF14E5CB84745F1F28F063AF3188B725385D01FFACD59B3D1A97F99A71768449F89DA60C55E879EEF99DBD0F2A281AB3C68732F9E2D28FB0A660D6AEFD7C8631122DB06A6FAE721487D6526AF778C36B94CB2C4F1A1D845A49525DA432BC4314D4AA9CF65AD3CC84940CC8F5A55ED44750F2991AFB57EBF0781F44C7B62013D504034EF1B404240B9ADF5DCA1DBF2FAAE18AF476102835A3B4F46E482D42E826C3B5D283F7A0FCE5CB97E6E5BB44963C59A642B0FD602C9A417A0FCB3289B24D433BDA8C74411D1CD80E687AEBFFC69AF230FDBE44353147A8BE3B67B49AF53438EB614A4FE5A51F384F82702C60878FB6A1CF919AAE77BCA83156DC7781064529C24A2177BFB270CF791699F3104B66918D9FF9ABB72F4B76F9FA73B2963E7277681B21F4D6D68BC532A2D67E4EE63FA6816E110F1FC3D46E4B766A9BC149C8B3B956AF7501745F3BA553A3A9DFA9858637EC907878769EE4C9A053B27ADC6192E5F577DCFF37159CFEC66F58B058F2FF98AD6B7B92EB4CB93A20B66AC9219F4CCFD945E1E8863B343C56E6FC95820D764EE6E86FA7A41289692B3570196452247BF2AEB89796965160454A3E6EFCEB275A0434A61569310812A19FC97B276E280750C1DAC87F04739E90A72928BF23EF71AC4E45ACB72D75D31D0F21369DA5B21E05859036DF13C6478DD3908C4D0203D97419C77C23F5D5765C1028FB376C2B91453F4424055B1FD964528C45CEC9B8ABCB25420AB0B5EC8A1987E36BE2EE3B274D188110729326C0607BEC78D3B6386E706BFEDBC01321666BAC7E747B77DD33E3B6CAEBCCD01D6F8EC1979CD40D9E2C95621A3D1793792F2FF813CA1539C8580C5CEC1786696A8772F5798E1487ED612D12D586BEEA2F2A96B5B25222E01EFE41F867F002849A4ED42175EA5D8CB711BE8A58F9272EE8AB058F718A2064C33900FD937179F9296BD1B0F9EF99FF218911EDD5968FFD15AE457B6E1673E7DAF7C1E627EB0D8F54861A8DC33A669C685E1629489B3B492D0C86B9BB49226879D2D93F6D51DE45E796D89B19D1EC705FB0EB344C9A841ACC525ABC09B4A985DF4DB8D32C70D56016D6A4CB9B5510CC4C6EB3912D8C6A7F5EE146E6E60FC14CC7E5D642280340042876E461F795362F18DDA2A031836F3B93DC13319B17695701BD78309B60BD025A951FD8F11390B2AAEE5BF8B29ECDD625275D7A8E8E14781434738C0F7DA4E428663244599A4E501F02FC2979AAB6F7E3D08F465D2D9075285E922FAC4A601C2343F89F2AC93202F8B7FC08D3D4073EC6F9B3C4C0A2A34362E84B3D51C5ED625FDFDE49EE8101F34F364DBDE1F464331AB8BD396D01BF0AF4F4A94FC9AB9B46684E3E01172AE0C803C53BA86E0F73BBA31A0EE054E16D388E5960F7F5EF563B982CD8BD697AF0EBE0E74A02DE6A7889D2B4568A495591EB5E2260B6C3837BB4C39391C580FFE628687A866C3A3F3E5569B79D39661CBFB4EE6AC133A8F6EC9B21B5B333B45B7BDCB4840ADD13A1DE8251E320074AC709DEED6082E16263C8EA9671C4743DF67C5B3A3D8DB66A96CFD86958389DF3E869884A3615995422B7377E24CEAFA07659952A2A3B564BE8727FCA79D588A558BD277CB248CB48D1AAF6920165785C2817A640BFCB4D1F909B7C10A62D03E5B455DA08438C5F6DF950ACE1BBC9591CD984556CEFE614A7C43C17A37A6BCCC48A3BB72748B8AA1BD51A95213461A11AEFEF769A75CFF785ACD8F645D16C58CFA37F7136300519C2DAF6E9EB50D6EBF62A99BC9FADA0A14953875FD8DC5F8B032B700A02E3BB9E0ECF510FA69A41AC7F8F99F4FD8B6BC435D2BA6D1FFF0E9FD55146F9C9A77C24F6C87CE4080DAA80C7634060C9B9EDD113425476E756E43443EDB15D481EEF84EB440711D38A464F3FE22CCD7DA6677562D813909F3884C778FEAF20B18D0AC581E2E1F870479A1A9339AED868C3E6662F8CF453A5116A4FDE6FB0DBF47387C5013FCC3F18DC87FF1E738A0E332C56CFCD7B023D9D6691FEBF0765275C8FD71E037260E5CAA4338BCEC1E97ABB1A51F1E27BAF91387A9DB14A1988F73322448935722B69C0652828A5681412B736C032654F743508633C38E82106BE0E3C7D73B66667A1CF9561BDE77A751A444BAD279F0E92C381310F23DF4ABB36F18F4C53BB3E0532D5E74A62952895BFCF9412C641647E66D4B715D2803D9534C491DE2383AD85469F094BCE4DD619BA8090E1DC050100DAD7DDE8486AB1D74A7CFDE9CFEC8FF91CA7080F4E814C85462D443D033ECC340230918C0DD60B09B17A3B583C8001569416B39596F165734BA3C5804F03DBAF23310B1734AFE0A00E081E3471FCF786BC853C088722EE368C91AF6BB18B766532FDEE2A0ACE20ABC611C7D5FF01F4C8BB27B9CF9CD811031FB107D779EEC69A3C5458079B6B090072FE552F6F8178EB008AC8852B654C86052D688D6BC2C96BF8F6A323F5FF91151DF0A19534554FBBA540561179C2C3F231584FDC51B12D70E0007FB38A235CCF5F18B82510989F477658A2D49C40F1C7665658884DD486E97B2E45D5816EA05D926D89504AE6B122AEA919C9B60BD1967C96A4F8C2E3CCED82D4DE371FC63AD7CBFA5489AA5A7963DA48960D51311A2697CE5FBC5301E665155D4D13D0FF3E5B89571052103BCF34B021570061D9599F17F3A42E42A452AEA0945E41E4B435B3D3CE2E75F316BECB06AC13896933871A360DBBA8E796C85B11B6FDB94BDE213577E8E3BF0FC6BDB5B93C7533E18BA024E575C701D64AB5A004AE6A069AC5CF446BE8CF55283C751CEE16140F52FE5B89D4F436CC8497E3ABC72C250038E87973BF9E78CF9F7719E88DB52319E6DA23CCC2DFE916ABB71CD722CA6BC93152248AF16FAC8C38A684E1CE1292C896A2C56567312D07697A465E6DA8B46110C70338A35CE8DA9B0E7497FE33F15DD708E594D61CC43D4AE67471567FE8E377A88FC18CB2448C854F64512014687B01FCA01008FB1DFF2A2FA8FFFCCB114B17C9EC3262178B98F67D6FDC0D56472F023032068C975563266581A57A56833BA4F7C75DD3C2D575101A4895AF3CB2EEB6DB84C4DB4DDCDE7426E1698FF522CCFA5F85B20CF503A3D98FAAC4B29EFFD5AD6DB4BA268EC3913019D9E7F96EBB3D3D1DF4697A09F876F758C1C7F9765472ED7D5C6BFA79A1D0FA89C3458C897C016D27B7725749F5521C36ED6222A6A8C60F30B2ABFF2C6FB1CEA63CEBFF54E9128AF727580C0047655F0B5CD189D740A8098EE706D6B6D04D286D28810A219AFCC51FD618F0C91AB2D634FD49AFEFD6689AB665343B7C6EAE48817AADEB199F2751299ECCE08F0F479518FF36EB41313C6321CAA28EF7ADFB1ECD2DE6024251092E0B62C1C8B9688B8E42566525A66BFB3CBBFF9F13811A34E4F6BA5410C5AD9D512265F8BF061B846A64DFB9B6F0EF64FC81D7E032B00C91961D104384D5BDB6062E188A24AAA59F1DBB04B5EFB4A9B9E6D21DA8C766C02D275460DD6F22329992F176C8BE65C111BF2EBCB59B7CDB0CC2403600A346F7F6ECB6F8CF4C1EFB83D3B257A0E682E6DCBE4C46D35D802AA923D53223059A0E961B3EF195270C46A75AE5FCB5CEEC6500F129BB7E4F0CAD9787AA8DF8B46E7FD91D1597248EB6684B1D0F86515CB6702690959B707AD8C12E65D77C7DB2295268BCBABC2CCC67FCBBCD1115" +} \ No newline at end of file