dpdk-doc-18.11.9-lp151.3.8.1<>,Љ_se/=„a7/<SGXKtJ)Aih0nNM):Cr>a{)u 06ob6&Q*m l}n2g@q Z@Cbjk4i*t_1D :뜥ov55ױux<Ա<@QD9JƧA.Ԭ 4Q`*c^dHq7rMhMm/j_a# ))JToM/IHa%d~AzgLƍY><J?Jd   L &,4X  '| : p u ̠̤̃(8<9ͼ<:<GVHiI|XY\]^1b2vc3d3e3f3l3u3vFJhJlJrJCdpdk-doc18.11.9lp151.3.8.1Data Plane Development Kit API documentationAPI programming documentation for the Data Plane Development Kit._selamb67NopenSUSE Leap 15.1openSUSEBSD-3-Clause AND GPL-2.0-only AND LGPL-2.1-onlyhttp://bugs.opensuse.orgSystem/Librarieshttp://dpdk.orglinuxnoarchFg1#/    n3_ 6 u | | |  % w n n"# .  e 6 r 1 % J! n4  n Vm`IRN '4' gX3AW#;R&))'T6g:$`5mGU):xPOi !(dC.HKz|H0*&\T7Y',-sHs|QYOy:@"b,f?nG1;4wmm:R[I)ES[t\J }ZɌNpXJw;o4\[ 3~w|R)V}nv!3;'eH>/D!RZ| `Q"eHhU 1 P@`@ ?[ i46 Zg#K#P=2y ML#0,O`7?>a6K Zbg>#J"<wI #[ 7 :M6 \#~ `2q8 . $ 7 fBk  LR  0!  t/ 1 |@} )"K  9yN%F _b{ *f*%& L\4%3B-<mhX ^X{64'1_cjYA<>: =O7EMxP_,$6X-|[M!`:1,zG~)VnI'I)W%\p]DdI)_ )h`El;rBq)ig_yYN#]*0)2 -]_vp, c<Ǖ5uELhj3;;:{VMC 8͘r, V ) 4D(.CUö`kT; %,ټI"_qTQsiIkL7 H2; {}.w)47;~|C>0]6qS'B<i2!: Tu!,:)"Sun)5Y IO,5Y!Z QV'56$q Xj!HQJ3m)Y#*;va-2! [ f' %(nK@".q:<kD:]t6/6.$56Oo-;.I /.9&-* S%.O!!d%E1(! u#nZ%.vk e e 9 \ ?o+3 f,"!2!^N NL)] 8++m ) _(2u4#!| "6H4t(7 # M 8#J J37Avq/.S9d'8A_@+ 0v5!!'l" A i8g ; < 5 Ng$l#( ]X& !a.o~!& 5k#_w b%C;(DPO s&Jg1Y2."z#^$v-j'`((!3%qb pl>`;K{T^=? lo&,m+ } R/ b""whVJ'Pb8d I \ P g u x i [ 2_&UM$= Z2AA큤A큤_s_s_7y_7y_s_s_sy_sy_s_sy_s|_s{_s~_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s{_s_sy_sy_s_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sy_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_sz_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s{_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_sy_sy_s_sy_sy_sy_sy_s_s|_s{_s|_s{_s|_s{_s~_s{_s~_s{_s|_s{_s|_s{_s|_s{_s|_s{_s|_s{_s{_s|_s{_s|_s{_s|_s{_s|_s{_s|_s{_s|_s{_s|_s{_s{_s{_s|_s{_s|_s{_s{_s|_s{_s{_s|_s{_s|_s{_s}_s{_s|_s{_s|_s{_s|_s{_s|_s{_s|_s{_s{_s{_s{_s{_s|_s{_s|_s{_s|_s{_s{_s|_s{_s|_s{_s|_s{_s|_s{_s|_s{_s{_s{_s|_s{_s|_s{_s{_s}_s{_s{_s{_s|_s{_s~_s{_s{_s{_s{_s{_s{_s{_s}_s{_s{_s{_s}_s{_s}_s{_s}_s{_s{_s{_s~_s{_s}_s{_s}_s{_s}_s{_s}_s{_s}_s{_s}_s{_s}_s{_s}_s{_s}_s{_s}_s{_s|_s{_s}_s{_s}_s{_s}_s{_s{_s}_s{_s{_s}_s{_s}_s{_s}_s{_s}_s{_s|_s{_s|_s{_s~_s{_s|_s{_s|_s{_s~_s{_s}_s{_s}_s{_s{_s|_s{_s}_s{_s{_s}_s{_s}_s{_s|_s{_s|_s{_s|_s{_s~_s{_s~_s{_s{_s{_s{_s{_s{_s{_s|_s{_s{_s~_s{_s~_s{_s~_s{_s~_s{_s{_s{_s{_s|_s{_s|_s{_s~_s{_s|_s{_s~_s{_s~_s{_s~_s{_s}_s{_s}_s{_s{_s{_s|_s{_s|_s{_s~_s{_s{_s{_s~_s{_s|_s{_s~_s{_s{_s|_s{_s|_s{_s{_s{_s|_s{_s|_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s|_s{_s|_s{_s~_s{_s~_s{_s{_s~_s{_s~_s{_s~_s{_s{_s{_s|_s{_s~_s{_s{_s~_s{_s~_s{_s~_s{_s}_s{_s{_s|_s{_s}_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s~_s{_s{_s{_s~_s{_s~_s{_s~_s{_s}_s{_s~_s{_s~_s{_s{_s{_s{_s{_s}_s{_s{_s~_s{_s}_s{_s}_s{_s~_s{_s}_s{_s~_s{_s|_s{_s}_s{_s}_s{_s~_s{_s{_s_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s~_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_sy_sy_sy_sy_sy_sy_sy_s_s_s_s_s_sx8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8cea9eb2f4d9053bb4e954d3d80bc46c7de148923ed65e32b0a387aedec172e4b59e7ed0ef70f99bb7f763a48ddd95d5990e103bb145eedfd0a76d19c122374be2782b30d237bdbeddfde4aed01f007264cc116b2d4be2f398a7cb74ec7a5bc58b608d310735b82e7541b4b403ed26818e10b1af5fed92f7820027f8b42219f29cc98c02adc57337f58c40aae15bbac05a3ccb364e5adb1d610a16452e92f17830d62b18a760a0605d4429e0f80dcf36653d8a3bfa6bf8f7e046ca7fa4c8e22d332312526d7e9a4bb2c455706c40b52dd9727ba4400fef0b3194e59ce94a3e6c30c90b351d725c4505add2afaa492ea225ea5a2652d6d5b27b327f860cfdd4b253e7db457af7a262c46bc9ed1ab3b8d3840be17604c8648c106d84781bd94fb809ce487c910aefd20be2ebf9a996edde93062e4203357d32b3fa9cdc607583919cdfcc1b6ef2eb5e8324f2c59a62f549bc3f14780f7e33a32b09a56399274ac4bbfec9f55c166a3fe393124530a247e7403ffbafbf4a8dd53126ea029b5515d67dc9b02c2b419cfd0f31bee0d4fe1563de3f7cfc1295dbb71a6618015875e12e58d2be12bbb223e1820a6e94b2320978ced714ad80bd6685b294e753b84b0edb96ea93b3c52b52e6546a4548d7a2f21396c56b112b2e1bcc3576e10136e9597be2f90e10dfb01256ae1db6152500c8c10a656af73085e0cb8f44954bf4db5acce8ccefd4d62e840e0b558ac583dc321075489a381d051cd089a893620d53ffd906a73ef084458b494036b53fcdb39c14307e95a5356a44f3b28080b916fdd6cd47e7e7571bddcc60bed9133d80e97bcb7d0d9d6f9392cb0884b102971440d66a0d0b7db6073c1d3b76d39ce0685a73bdeb2d4418b046f765a49a7ab6c4c134a5e0bacff77aa5e2e196b09c4d22f1c5c121835d8ecb54123dfd3942a3a7cdf3046e0af396a72e2b44662cd61c6b51111facf2afae3fe2b944f95a540ea30798e733ac7dca116d4924116bb4c2336a579c243261a6af81c485b9f97eb93bede44adff8dee3a5847e06127b8574fac1fcfee84a928b7bb5b2ce4269b6d1a3238bf1d08a131844f0dd7ee2bcd08ab5ebd8e97aa601199921bbad6dd932844348c5f6d9fb5758c409606273ee7c6cd96a498c9ad6a3ac84f24584a717521d668ce7d806da68a27bbecc60454e768c90669a77c2474a996e58dedca93278f76e7479e59567efebcdfa96c777427cf0c9d0394dd6fda8f92a3d6a6714c43056e2b735a8b671b80c5a23accb5520c7aa3308bba1a0e038c98561142509f8b3fde26672a7f89fd24ab766ce6be28e4dfbc806bcda7a1b1afd8a8cc1a573742c83f5fcd372bf4584922e73e05801ea87434bb9366fff82c545c5a2263e0e29418176bd47a3ad316c2635f366149d87b1e4c8a9f73f53a01a279b72cadeba322fa7fa4793cee85e2bffdb9d07e07fd9a947b651cdf6b2d19263d5de565a3131af4d5e6a9887df06ec0e39c861d01e4b5bc188cab8fd1793850179019e9018ab0f8e40641312ee62a6477b548b2cb5cda88c3c5f6b67b120f09703a4181c7a0fe19a7b690d02b9e216126a4d1a8ebfdfc13a0ddc9e11fbf36ae4d7ad56d42d371d2c0d23b47700df8f9dd32618bfd235254b84226de8a23dd8a16ba3680399d12579ef67856b70f7626eb4a52669b1a83fc65e13cf64786307619a439f1448a5f787654ad27396221d5cb1679259276d4b113b8d01be58961fdf9759525c354db07a6835d76ecf9c11729bd249d96dae56041211c0805b37c065199a1b6751ba594ce53fc01dd95d6d2a3ee009e28d11cdbd806e3e85a0e3b534cc5752a34911a43ff8d117b39815c12344827eb3117f123aee8bbe05c8400eeffdfe9ea4a442d0788463c692430dc6aaf527ee4e047567d44dc39b700d72f6ad99a3056368d6e0f6854cb4d928adeb2b766db8dbd5439800be3055d804b093add15a35e328c744aafb44b603b395bf97ca8f23fd7ba5330b550375d79624ed3f4bcd94ce0c80e8bf6d0cb93118e3988476f04c2e055c084b2bffdf335b3e5c2a7869af271fa734014c40eaf5771b503ec6def66506d34504f654af5c8c46010de8e6cbe674389b9534456dd05fabd2f48323229334704b702757bbca5e1d3efe57e54d296831d1386f5222b61553698cfe9fa9d358b8f8cb8bdf3177f3d68cf0983a65ec972907f2f01cc72380ef49901db5646ff70bb85e358a32cec8f0ca4714edbbf16d3aa9d4d102005e0f28de36673bc74c37bc1c5483d46b7d154134bb0cd43aaf05fecca87999cd11121448fb4a4cacd36bba2147ad0d2596ec967fd51c76d481c1634bdd92ab78b635a926dddd9dd2629ffdb74006d878668be96d6b934ccdf2b8ac5728ac18fc4a946ec56d5956ee0db8aaa0af4b2a437073d7f080091f1987c320e9e1110875f18065728156ff298d63ae2062103f9f20c5e86f2de47e5c98073a3ebe2700740622afe387ba7e37d1d527cdb890d64aa556e78e6f0837ab887ab5f1d71fb0265a0813fdd3edc4f7122a82edb62a9e2f7c0322f06339c2778e2b4b911221903f946146c5f14bc519d7313c624368e4dc21b84d07307efadf183d1a8a83cc1f29819833954bd280a904efd416cbde497e02a6640647b6693e5aa34996404542ef5c86ec4f41297ede117789d2c23de370a6b546d2cb53b99b1573b7ffb2c10e99c97061abe38931968ee2f11a157068f238402a7c6a04e5f2e1b4376464166b9a7ce4a619ebb86d9a846d6d7ccf6565b9440387232b5a5de125604262da0f3e1ebfa6a6102588efa4fdae0996b41114884bf0cf60e0de9e951ffa4ae24278cef1ebd506ec4441e0ad9608bdaf8d2f545c2ba63412415dd6fc60772a1bd97160c9cdc2244a7b94e4754f31f6f245cb60a873c847ebf87d1e40284e974485f916c9ef2ae6cf31c6b7d6b51a56a3113306366fb5ac73db3b82a650a04fd552051411ae0ab113543b2648f8882ef03237ae3ee3915dab3c6e4f5c70e72b548ffadb9ac6e0a66a884f55cc97823eef404e1613f3b7ba4b463de4db8fb0ee8a81f00fea6f9fa9f1b36fe28e3a3c56ebcc8c90ae9725e8a810c063b774596a3e6ecac25ea354bb3452a08c8bc50cc2a9e8eea8dd55b444a9bea912c9158c7188ce0ecf8af15520d067909c60ba88358062f868b5ae46ed46e93ba86a7d5f76efc3bef18e38ee5cd4cb41607a30d7820cc20ea76b4a3b8f57d3d2b7d102b58c8e13ad95e83aa19fb5f21208e5f321d154dbecdfc7439003b9de399d9d300554d6ed0b60ef6ac730533c72de5c34df37037008cceff17f7669e21434befe144b87215744a36bb36973a2aae66bbb99f2b57f2ef160182825fa5305444511ca1eca4e1b0b38528bbc656bd8eabe7d3ba94dbffdf2670f5e3e10e16f058cb09cfafad55e919e4316ec500dd5559e9bcb84fe2b46fe5d71206a950277c465a0f52c1951d8c0bd154f7c5a815b0cce4e166a02e9ecedabd677f6b15146fc5a55621ac544ca7079a079915c964aeaab53ed863c7794041533152691b12342573d985fdc47e29db79d2996c265578304169c25faf92984724519926f894ad0987589c481f90aa2047f9191b573d75740faa2047f18e7b999242a0afe126b9364f3d1d285105d3aae926095d88733fa7697088926ec1d2a076e488425fc7496c7383d33d2b9bd3d2fa3c3f281ee08f3d836be245e5ad5bdce3ca22d88040c7c84c981041a5bf84836ddf754b6cbf9a20fff262786e942be331646fbddb9fbcd827bbb59d8b8c5fa009a182db44526231c6b6d125596489259f93f44e0984e2ba1fe102556ab02dddc08b75122f8648407d3d92fe14f9571170be290020ee0336b2bbe7c62fc1fb2ba5bab38c97ab104d311ef1732f99723e7970d0ef717218e2f35b518d14ace905b48919725839623e080d69f818ea620b92454bdd6cebb29268052054ad22f927e16f5ccc26401150cff644607d180c88c45987e7352d6f440243e47aace38327e497a7f2542161779e139303878fed35c012bd545d61261e033eefdc9859279b2ac46c4bae5d6c182f26462da8cb68148ae80954a92082edc9e8afd8000f9a4805d33cb915ca63ff3bd38747f82394f1787194b90cc2bd9729fea22f9956692b4efdfec4b6ed8c6a34adc2e6aa2d9cf51146cbdddee0216cb591a7b880c6f1842e71cd99172242a51db650967137ff0e8ccfed8808911b6f8ea5ed7b3fa0827bbf078c217b14df4d449530516e6939b6b48cfd520f48e6766dfbb36cc56ac83fa79de1f03652ca9a2991305d42f8f4dd7c86e1928da9e071f79dbdac0e761f0749c26f7d50ce250f83c81c7841858e368f70746f288157f0cd4c87540e3486cbf376e88bf00c621da8875d0412fb86a854c08039db466674561c2f436fc11291cd7b4b26eabd003f616e847caaeb6bcb3c3c4d7a53afa77c8b89f7008504133e2c36ad3c20de62f0828040d1b02b3f084025512459e2805b69c6c434e5ccfc940a9cef5cd51db17430bd6d7442c7c76e4062eb035629e0fefb4105f1a7b66f85dff5cfc516866a5eb3ca53f27e0d4ecff2a5f78c83a5bfeded19be06d7123f380e8f1de7f37c70dcea07149256fa738148892b3f38ff620f0f4f8178d8352c5738560f897cabefe13890ef8d820a0267942c9590702a76783dc38bf1848e2026d7609d9a20de6c2430b3182754d6e9a30eda9aabccfe7b68869ec63a97b77bef0aa1ad279dfb4e44cdbce51720d24be6367c92640d1283e810e84c3718aac5eacfa514f0ff1d1798f94d356b604593cff08ee6a88a9f9f3eb4468680406fa74b13a51833f5988a31000feabb5e60b1c25f942c206bce50acf359d46f833fdaa5979b6283fd31db98ba7995fbcdfc4ec3ded4b75f687042497fb09de1ccfe37099b8fdf26952050b80eaf51d8c66fcf29149928de1cef193322a60722908d166c27ee7b1abc121a95da2c3f855c735d677636c3bdac41e834e50610f8f8de83c2ec4b14070c372d9001d274a4242f4a57aab936ee89119d4c4f2cc333ce8c15407a165ee422e5318da35dda0031c3cb310efe0077df2fce98e6fe856a3e0836c0072e55b59940dc283622e7102b416e631e49cb11b577a94c366dc912c159e45faaa8125ed0ea016841b5fcffa525ee1c02067ad47d53ccf497c90a431ac7d9220a99106427e8b1fb5b2e7c4c69e0c757b4e07c186d1be34f9aa402455e212d831ea8fe83a5be0fafcb47c111170e82bc894cb6c5c719941194b8666fdd71d1750ed37a300bab755f680622c9cf02024ce05ac9ffe18290a1fc304ca56a0cb35e1bbcce814eb971b712874458bef6f7bc78f43b19322f57b389bae08f9e12b93e3fc108f683c84b2c33dc18949988b8d164a92e4795ab605c429fbd3158198674ac8258387975d0ce8b9292eb71a53190ab9bc3aaf390c71fa3c03d0c842fc08f813a77d1abe5c690b79d99929077b2f9b54708aa45b4152eafc78d73fe667a18d01911d052418219f9f75a5e2499aad6faf431e89c2bebd2ba29d9c9d2deab7c5b233a13fe499d3a80fbb333748ba59afbb22d5bf91b03f5f79540863851ce38e2635e4e7683e19ddd6b37fd9c8c2f0d517a6aeaeafc38239b5a3b2bbd02003cd02cd87a37a359934cc0717b653283e8e96f7c65f8027004afcacd6fecbd3628c292f8c9424d63d933bb3b4267b24c7bd3835e366af70fa19a9bc5b6b587616290a23ede988167bff6c24e309a854b52bf7753dda271218fe5b8fe63ed976a1d48641947c21d1efa7460973186086b528d059991b27495aa9f50a071c8d566be7e9e65a1252233004822a972c4bc4e88a196341ab2c7983a8fc37d15d2a6def55d88d92ccdd643a02f482ffb2a3e703d7e0aea5a0402211eb5670614557281096399708c49a88dddbe2f161f1f5acc7918d4f2331e7652556b705ae5a21eef3f5808cf64f2c4eca69bf7cef4d9ea24dcfb5404d77d3be7f7f4a9379464c52f292f23ab994ec737b538c16463143649f40e4eecf853357191ba71959d6e1bf4fbec8fa99adee939bf20874b4da5093010a2381f865913bd46945c1e32c2cacce9d818374021e53a96a308361dec93ff958c843d2ccbe04334c9953ef42f61563f94ee7b65eeda9be7ece83cca1f8a3a92178303e3eae44b507ea9981ae9914c00e201c4b30716cfb8867db8e85f5de0c3ea7b0f51114059177882e9226df567c7d6578746e8fd8e490b4c4975ce4d4f24d9fa0cbf9e48fc946e763980246e2ed761bff27c93bbf657103bf8c3b8c02f1ade35476f6662aa79ffcb66cb0f5a7e58d7c0661121f1f2e6f4909e1d40a009859988a502222be03fb6d055ca42e8e8aa9b2f5629860847b987e361d4c2deba8890afb935dee368ae29010ffde7c65dcaefe0476490ea95c4e0dfc35349f6aa7a7af788d79f399e7571c9a4a1086b0a4a15f44c706a8d9798d9cb9eb35b217887d8b8f6218b5c87e88d970a42002db4163df0ac04a80b8ffef4cca19654ab515639efc85503db36ab90a0bdd0e54ea0b49ce272a618feaef3f6465491579a2a930a7a50fcd8bf58458820d91272882bc80403009dc1b8888c0e76906e5740c3170276a50ca3734418572d715c2d4c6556c6b8c7de23c77e119b4cfe8536efb808f2eda75c1e5a0b30a81b6a9d84410b98e9b1ab278f0f074d4166f547e1f39151680fd33db60d6672e44146ca49da8ef10c4917411c3717cf9ad1499bb04c7c45da3c5d9975460ee2113a445e02efe92ccfb9bb30b3cb3a8dc7d49294cf5ccef168e30ed7c286fb0bacbcbf509a130aea6cad0df5d21546c63c9b0e91438c85fb96a5370e07edd5beffde95c8300b9fc4998a40b7c4723fcb7e7af8ead456d3210985d50ca940cb1df58b74d2cbb3b551aa77fbb7aedcc6bc3eced6ac165d90e6dbdacecc6607826bbf1401e943daaead53b144a4c787ef85f1a229c93fc3aca8859f5ad7ec6dd292adc4095255adbc6b4f5c8e58f1ed3605ab142c5c1977faa42428fc2769d2338c3b0505a77a8016770edd063746c33aea8a0b09621b6ab457c3d02c7eab6e90cb78d25dd351f6cb79e52289846db89e8d7366932123921217515abc2928f5147159fcd8c54c53c8ac278ab50a35b8ffd9667f4d2e15a3446d7eea3c2991a12f8f00cfd32362e4bb8a236f41abcc94eb2995b67010a3833b89880275b65db65afc058abac895f57a9f5b50da4eff4ed980e98aee663f3c691f010df7da91a0902516debe0cbd872980e7c258181fe103a2587d81350cf406f8ad84d794472f620b1029c74f31fabd45bb773dbbab50beac0d03309a6063d4e1d4a0cd0514c91740ec0385b94490c0f219664fe0e4d4e9769ce88400bb6ac399abd6630e3f94d399c7f0b5f465da60b8a0bbea76026723cd9aea3408809272ae67a6155e53568b6983e9811a0160b0eaea9f89f37f4d4c3b1ad0c2852bd47014477f57bad908a798d9d412f8ca2b39d412e25988148b9c216f591708e2fad03b2b14c6d6f0b7e29438f1e427608962c3e9162481351b48bd602d9e89691144f766028a35493b7a35cf165d100f8db33c6215d8d9d9ed8955b55f352b2401f1af1b440ab093a4fa39f02ed764e3644031149696f23a688aa7361a833692bd8ab310f066738bee41412048e363fd3e9dad1d9d06b55bf53f4ac14d3dcccc0811e87bedfc03ee43bdf35ce617d29232946d34634601d613c51edd40df3f3b53ebad8bc945742f1947680ccf7cd25a0e34cdc8a95834508fa9e2c314c371e38467d2d3627c26aa5ce73b21ad0e3280817f3c2cdd421b96bbc1ded4824285e4b666725ce496a61cffe01160561baf400d08ad75e964943df38d112a594a3aeb28d76a4b8dcd4dee8249e10026f56f8118fece9096c571ec593321ea52ded841bc773bf1e9b2a883b3f9393ebb29af843c907c57d060d0a7c1056fbd239e867b7ea80fbdefa3a13c51e7e421366ec415f62dda71ecea7979888948b82056d6f10824454d2f6abb9b0d818774a504b1739388b0c7890a421183670133faced2046312a7d9f432a43c309f48b42773fb9494764731abae3af556fcf8aec434af6d3af44da694bb0236d69e9f6429e81dd27b561f00fe1283a3a94078407a3f348ff7150bfd8a40dd2f05eac5f7a563d29d62da64e6f5ed7ce79dd12ff65d43dd42412236673e3791f6af9499e506c1863c3073ec172f85632a482f8f15796c888bd4a80b6dba4fd1b1ca3e1962a6eb319d8487fe514d13836e3819bdd09b799ff1c424a8c6822509790ebba9dd427811108c06703458581cceb21e057ed1a3a19cb4ad3655bd5254e997e56cf294933bd413058d4f150812b3fc1adfad33687bb27cc366345055220b1a5de41ea70c6deb500573e23aa774ec949495128851d5b7fd88d667e41324d73956bc4f22d6e886ae0738b694dfbd63a31330a31d23f95dc6a94faa25c6685db08e59259edabbf82b4ffa16341baef27b4a59e76c8f2309d88842e900b7be9cc61cae3d3be3212dfcd699813cdcd6031ccd48996bcee2c6b642de1cef2a3bb6448a8bcff6648271377c48d29532ad695471cca8d41d9426171f7cc9dfbd3f76ad0c910148b285894dfb413a3aebfec17fb43d91e5747ffb762ef35277544ba75db19712f7c8dd5b07b8349d3f42a051b20e6c06d4c02ef2baf112de69ad3541b2e785208a517f866122af6d08e1179691c0355721ee8bba10262a6f46f43ac99cde67ba89866bf345fd6fc60a4bd3e98b42ffc330b871bc0cf5dffb712da638fdc46bb3bafc72288e538530494c8484111a3c821f51a52bf9f9df6922c7dc2179628192035ba68c468f846a11f64616143eef0dd2bc7b6e28f7f8b8802487fbaf9703fcd7f8b8a7e3cb558dc3ea25a55389c0e51a6df52e383ce0b323cf77e88810d212de9e93df5f019c1e831fea223ceb09303d1e80b95436ea671f364983074bd626907460689e4ad1f31e29ebc0ac8c9c7e885ae7c2e20c454efc5676b1ca444748d8beffd16c36c8945d02d821c3c2a3b22e5f19af7b05805dbaf867157c938c8edebcb12a0dba97bddc98572d4dab34cbdf6b289f735ef9e839efb04725d2d272efa2f5827efb3ba1ac3deb18814d93d855fa5edc874f4c76060cc30bc159369853383f09912fd8b65d6fc44e3568aa51c7bb161fad9179b30d7fea00ef97b09c5aeceabecc2f827870c1924d66b146b56c95dd97d70864b6eb30d020adbcd9c086c54bea1872f1f43dc1b55c579f700e48feeed2d6912b1475fabc760cb76871357933e1a7b24c5460b243c8ffc1982fdc7ebe10a48cfd95393744da55313fdd12de747594eaac58ed7e6460c0833ce5cc24ef600fcfce7c3a3b660c419b4db5f610c115b35072240ee9f32f3323595ef810c97be7ee273f5457b70eac2c6996e5c53040f624939b15892c9d0d7ebfb5f901e070fe7d36d5ad18b3e31e42642f6e65803e638e8aea2431ca2367250cb6b83e102cc4106ce659b0e23ef045263bafccd9f7369b66ddf5a1801a11fcb05ef26674ad286a5d75bba08f9b90f427a968ba37fb95e4d76a61b0b3a6d1bfa7442617144dca412346734866015fce4e99277d9ad8ef17c1985447ddf49211be47f80c32d24f850a73b19b36531c2db12bdd505bf37f053a6ff8812a8210cf0ba42e98ca1b6cdea9bd0dba6925cb823a39e2e65515d87d1a46417228a579422700ca31bd7d1a1b4fb108a5c792dd3a41e11785f7b120d33adf2daf4e5c22e7d2c9e2fa59b3a9b4d17bf6bbe617aaafa26df8ff4eef94b6ee9e9a5a6ca13a1c87edcfbfc91317896452c31a9d49c4768f1b4b46ac32e0907e00a73680166339ff62595dd2d2eed3a79fb9fa0c2e8250e89539f6d678aa2e5e51e26442f494209b2aa8cf70a71ff69d262fd4045c3516b6a99bf82261fecafbdfd9088d23e2707a1f409bcf5503a885e44f1e6082f2e0f9104cc3214e012d788839432301b0d1adfa2bd8d038be7a17bd63a8690fbadf3753ba4cf1cb49050a4903fd3f820d6347062daadf2a36c0e6131540f6649741abdd82c7874bfaeab02a3f601be6acb55af4ae9a38736c8e76ac79a14dd31a18ed058622fe0b1633507385a1df8457d4de15b6195d9d167181b012af8a43e4525f914e358311d57edbcbe69374febf9df903226260ea7b3530f428b7b03ae34c0d9c84130bedf958ad83ac2d6fb454241551afca45a8a99a1fd228d64b580244b8be2cd9781e56117eb97a4b97331b65b92d43d667f282f1c60b257c98ad3744e190f79350eddb5631f41c088220c51ab0d029fce5b805bf7efd0584e6aff08813f5428e599a80a8dd54c65a552f58a8f0b13fcc665687c8cd35b8df4cac1ac02c7fc868cf7cb76b7f2c21baceb61eedc796877af5a2a4b8563e9ae2b909fbf47ca1c4ed7677e454b112650951e975e808567954d2d90ecb714f59de889aa524335f34fb9c717a9b2d4befaf4af80f82c491f50ed25d510d0fb3c1a72727ee1baeca79cfeabf2c0b3f4b994e2bd168005864d569ca5e7826f5163250e937cb12a52ea27e5e3332b600d0b5971c685dbe5ecf97bf9d49e0369b722f9bab3271797960f1236c63d69fbcd5d490424925fa848032053d930fe90d81273050ddd8e454806bb5d12708fa21bfa245334450fa554fa46551a00566cc0ddc0736804aabb0f5104e8e33de3fb5269f863643314ff89deebaff73d56e4bcba4a2ebed2046e316e406754e411c106e3b19ed91f0adb59e89b6f718a9e82529efd9b4372e919f52c8b3ce9aa061685aefb87d573f380eaec922c440db32255e3aaf742dbbbe6bae4b114b09a6528f956ce691f8ba210d7ed229422fd8b7217b6e00c43955588596abab198cf56c3bb421e73df3160da9a47da6b9ef784f3a5d3a0f80b11337699ef9615f65a162edf34efde31520d1d857f05ba8bd1046778c2a599029118011d54aa18e054122c8fccfa6339d37d6997661bd8540efc690b827cdd659a8378798edfd205c8be6ae8e3567c40fc698475bc9df1207d2e8fa678748009bf94f1477d00fd2217e338a15e5937ff87405ce915c54d685a01b723424674a1652a9f0ceb6db50279aa1ef9f4f82065f141c1f75f1edf5dcc1f148e9d69c8d2fa121db05aa1613e08f3ae4b947ae0d25330ea402ce7d0df995762e17869f497599fb9e2af5bd0aba6405086ef9c70443942572d7cbe85821bcb7bc74f5aac04031bdeefe3681ad1baa4ef82d59663882246d2b05da3a73491b534dab7d97f610fd08ae601fc49db09aa569abe89c0779a48dc1befa336769db260e2193c75ad33c999dd88534103a0c22ad59d34675c62b1b0fecd70dca0fae3c7252f32ffe30267b1b1df3172577ffe4962d1b4309314f9d1113072f0d6969cb96bd510cef73ed2c5db9774da627243c6f1c6a34b210e3b0b16b2eedd5d3f2eede9de0ad89992a0170c61f24be2470721f57a4fdff55633a0703b159febbecf0482b808e2c2fc8ad45646c47521cd1d007abe187d89c8c68e0c886214735671377a3d98674e1757b496194c4387bd6e4f70d210f541d5d46daf60f4224e6126dffb3860510e5100d14bf1cca3335d7f8beebd62162f687d625e4a582128d977ca02da55a9ee7a8af14e2429a38357014fbcad6fc0ddd045e21daeb372a2c989e7c5723f30a45d2a398f0b46c6d195656a1d54e7b95dbb67e1e7e2e11a92a7124252816ae9227712b5fbad0e787598b3bcea7ac8bf9132d3da5407ca369d3c43dd8f4dd570d692ad6ae632ed147b0846519d38c3463f2999990d78bb8cdb31ef3f263dc20391486e0e376997a59a9540be6c17a2ed89c00444a7d57089f88b0baf1a7e19141b6151c8e388d21b56e01877c2840087aadd206154c078e02241f27ff3cadd090f088a6d7f1406387dad7cb11549ef47b23e3a15f43207870c5a79b32c395c04aee9518bf739401689d43878ce583b015bb083e28970a9c0132ee928b1341870e641c47c394608643433396947ab3bde73b8cee86e8898ee53d3319f6a86506ad5f665ed387a4b0dba707fcbe1cd63bf9b2c2f54db42fc8b82ca0603f985f737b458e7a8e3584206d586c344d8e2904424e3c3329bdc4fa6ea5a36e3461ca04dacb84b9e3e60d0dfc89a9b3213e0fc744cd69cddf4276c48b1c3d837549e63f17f6eb27738083b50fe02982179b4fe1e961add246bb892d9691a15eaf3463dd52e49b50f096be08a85d95036fd364f164856f1abfdbf476c71040ab12a6347ec620e283ef712233f64e9e057e3545e34ffd6d072be6a17e34ed752b743dd6bedb680f0957bc507ac06869a58d9b7782071dca0f90d5a4c38c5b0b25951beec7ccc6921d370c834f1678b639c2861fce7426b856d6724aaaede08e133701879ced09c41bbfcf9b3d65b98cf0b710e7618fd20562a0081bd0a4e4bc195efe27999865e6afbd8bdae2e80d8dab18c0a599cc79253f6a7dfcc44a5889a854298917fd006ea745637c53b3e03e00caab30db826f840c534657260c2114784bed1bacc58c0d61d1a088f580c50e88c31a924b1febc7db15eb8fa0ad5fddb4614ddbbb9e58f43e78c1dfd64dc3ca2079ae78622d66ebb143a90b1f7f887d888ea9704bb8ed8d34e2de893bb2736ec9e2663822a2ce0500b60cc9b67d724590256f37ed65a669cd765e3b27c6bc7286a258c1bb1e39f9a64c90860ae854cc2109633ec8fdd3fefa781598d01ae9edfb763283a022d6041411c3ec2f99f785e250a6dcd4055c3a2c588f62b9f4cca4629b60e9938133d78fbf9474044e9982853a11f0a40e50d893f71e05d823b0f7a6275c7b4b2b4666095bbd0d9a0c50aa6247ac0d8287e12a2fd00d720e15a45b30cea5f1c764e0aafa5e216b2b7bad743f4826ecadb016bb1e5cb6fcb997f5ce3e6107013d3534494e1c34ef2d9bb9d93ebb0d822554d8e398f21da2b65afd584856fb394a5d9f218413157db6f7614e9a45b8d80d7449b301d2771f4569e90e1dfb65495d3d7dc2f752ff57aad4850bf1947b3d5d6a5bf1103bf12681202d4f77d3db151ea0da9c0073ec2e387e07b663ecddbc81f51d76bbbd28e574a63e97e48f6b91c508c9c35384dad12ef54fd1602b720e77dbc5753efce1adf62a0851611b36c0e6018f0df5b659553fc6dde6fec9c472009a147fe17ac60543d43918b6faae1420679cbea3bf385bb1bc750c50c4853e0b510177189e9675ee828eb797c802e30eda43fb71d41cea11aa67adbd70f2a1669d2d7dc5b7b73346b30f815d27e1923f5aa388df810fa68cf4614a5f0b96cebde1b9e25f97fb00c2d24e14f8834dafef04fa688f40a3b74d7bbd22354a68e151a67c8780c03f99cf51b936d15d8ec03be91bf3dd68cca0958603347b89436c445db37ad074b02f2a3abdc423283384d63129623b61710fed7d859a747b1e81abc459c5540449267698f9e3476d5d002538cb9ec7de29c5a00f9c860cb0d0fa042f92824d8e0e8d0f6460d1d373b2fbaff0f6076bf2244cbf175c080ff5f1f8ba1aa3bbb6e799b4217185c95aee8803a86af0799fc393071c68fe0401822cec4c0f27267cea420ae8459c98df23257d08049b3ec48974bc4c56c0ac4c205d4f25695d48c571d249a4f741d2eeb70fd4dc2ce6aaf607e660d77c9184727f76a0da1e00f5fbf7818f42d940ea4ac97454455c0f6dcd5b435257e9d44c59aee12b1c9d615abd2bcd2cd88b31d36007201d5aa550ad82c0afb51a32a344529c75a5517af7e604acb83c1231944e41bc8747674fa00c1da8d1e5f297d8ce6fe55e686d4a212fb24df9f800b02cba9a8611bba7d9b4b08ba1e556aa74a44fd0b009b6cf2aec47508339178685d49f72da0628a9b0d396d9cb83d8c75ae1f0b241244bd0ac2a93473db4747367aca69e1839c4c5326f73677f20f1dda72fb5e796730e3d9f1fb0277efefb18e58095ce6779cc2ecbe8de31c0c42afc3dcc73ef5637b928a4423f2910f18cbae110816b3bc18637f35c949f52048cda54e3c0c5f691084670ca84ecfeac8ce8f10dea143876d7b779cd9752fe9455243ccc6e4d446a6a8f62b6969ab4051d01b6af3d158d0508c91c39bb66cdcbbfa90527378e6d3bfa6296b4396b0ea493d4feee35d6fcc57a10d988c46b6c08550a5a71c1d6a48e2e5e995d9c5c5f5ebdfe4cd29ce04fac347be09e2d5e8ee4099cec953034a9de7c10160e57d74d20ab2d9d8944bae1fd24365e18d56a406215309178beed3257e9f54366308d4216a63a2c749b91d63eb6d8e151e0a93bc0f00f4f16c7e5df9fce037e7e4b94593edecf2c8c73ef3875c1e6342ebf31318d604a710d9cfe8b68140a6c95999244d6308673f6109c8277df63d4aa93a42af9a08e96e6c5dcf45eb96e12d96ca7b970c9d82bad494e0e1e1c12bb34f6ebfb3ef782d9c353bf2b7ebee06d5765f27e4a71e84251e33c5ae3e5b507d265f871f621cdc0876f6cbddc1c3034f5d3e274819108e40b1356d489a322c530c0fb49ab3f135051a6dc1097d987cb047ed4e17c5286a37190fec0b3fa431c7cc4a5aa8cd37d4111c8987c6b77796ac60386929ccf96fb5acf33c94195c271b1dea13f81902c719a340815c3e5d0b7356dd3b1e65ddc8d537365c46e060232f0d6e93f64d16a30b531808d3ff2a21f121d9f6b3c164306a6cb39e2f52a00cc01d82f7d1f85db9efcf22fd123c929e25d4c3911c3fddbbbdc4b4d2b78e30e5b2a6521377e5f4012c5f907e032569c20ba861cc624982393f7a03989b4d93b524ef23f8bd5a071dbbe734fd977f7f88891c3becb8f68c3759b8fa18112bd83dea8b3cdbf819dee5186eeab6833a30e03e22e580db32c176297f410d76889c172425659fbf22d7b8bfedb7f668e2c628c2718b3bbe471a45ae19205ed8fe81a19c4818046bf2968a46dd8da34cbe51381cf7462e9765592759b058d1111bcd35a6fcf7951a24a92209a4fa412a06021effa1781d599a6a600303bbdd5a1fce0025a66153ee01c705d8c412b426b07140511d2494e8d16427521a7d9b14e98801affb21350774cce0f6bfdb161ab423e7c09a6b516e7d4454a73462b0470c35df650d8a9e2393566309e45f9c857c6a1bca1b6e81a2b2be78facbcbdd3947c51ed3d1a1e382d8efc0a8360b09979f551c14e97e0e5ac12b85e8fa683e2846d94bdc6a72666e1b300fdfc5ecf102714c9fd57df76fdf47139f8dbf8ae59863643171164c16baa5953c17821a7ce5feac673c05a56b287453ce3a0bf5048f0999b7711604d6cdeaf3cdfd661fa21fc5bf18de929671c801f00415eaecd35abda3a04665e9dd0ef5ef2c6ddf02b4a12472984485adb027fd12ae6c60ffd203b1a4b7c7fee97536657da4bb605aeb65174707724ebc76521f8860a71e2edba10de033e8980a636f2de281609da252d54f4896a856ef9cc3139a98ca77f0523a8deff4b415f932b649495481809f6ef0681843dabf1239aedcdd8e32631ff09f2e69231c3a7cd9a799afc73e78a0c8f9fd45c19bad4dc0c863710eaaf026a58f3ccd7ecc6bc017740b086ddcfa7d573fdb6565ce38b547682a0d72d28a8ea9dd223589a3de2fe8c8069eeea78762f729160c368118e8eabc54855fd3d3e540f72f6b3d092a64054b3f09e15007c1773c4b8e630d386d26385594a0735ab3099407e804f242df18ccd25c54df5299c274720c8b0355ff5b81acea055c627e393a653619f78971ddfbb48658832571ede6347f7044626c33ca08f73ff68d63363b225c2f013aa82f4a4a97b5c977c3ab685381ef5a8486e7380f8860dbbde3c717d224428e6a8c25bbdbee087bf53285053238296d43c509cf2f0a3486728e30b30778ccda170546c49624c29a52dd7da687dc595d1614eab92396375a1137755f24348b4ff8026949e0fb48663635b97b0fd677b3b4650c46004ae0c7a00d6d4fe74471442c1edbfbe98ccb7ed82103fdfd41e5d85177c3e226cfacbab895cb813139025376e44e39928b481157a257832308faaae0b200d57d825062870a7060eb64698aff8aedaacf69e1568bbf4bda6235960f1daff4746ac1cdb2221e259eddb31871489f7fc33e4112c0f61455b661ebbebc0746694a1a8df6efa60f7ba8fd4ef10678a8fd2b725efa953c53a357014cf82c0780d6150085fef3566114cc1ae2a858885bc16636eae8746bbe0a61389e82df85bf2fb4d7d2992aa2527eebd29568a4b8157ebcfe238bc7f7e353b15da246baad208e27b6b70c73bdc6c7fd76f16297c80b0d00b692126dd64eab268e935d40f5e1ba080f677e343616182f02ad4c2def3171220c6d8887c6d23cb63b0667e9d6ff325595fdf6a2ef86dd9457daa1daef40f1f0c52c46213befe8548e4164aaa939d1ea18de00b2f614c81850794fde71e19b8fa2064829cbf297a6962be4788c86b7176438108ceb3e835462c5348ad094aa5fdc5515e22be3e344355569c572fdae9ea3d292de16fd70bd51cf35f5a0d11a8021d04992f89182266db2b624abf41bd2eddd6e90bfee50e2e3d16308b51d24a1f00a769ce7e6b6f15d12a41fed0d09cb9887b136d932a7eca99fe17c5975a4269b3cdfae54e9407895bf64a15b3fc4ecda0525ad80461b13cebeb43db2866dd6000c03eda35581c6159b5468c42d661995f62594b9961fcf18c226624402f53f93d2d56e7b3d8bf7bb0c190b2f55426a3c46fd06012f28d89873ded0cec6577f9bba690fd70fcc656293c4e851cad6479b613c73584764ec3718b5624068a0a42bba2b058834f3d8dcb7b3a94af33d0854b8b67a94038810095d65be96a916d38a68adab6be976dc81010a64e504a9679b55c37a166a4e72a23babbcdecaaf932a4b017df21b357c7bbf7370df5393b6034b7b3f9c12c28365b936c538abe5a95cf4afaa2c503feaa8cde83ea84fcb6cb58f1f491a61ab78a2511e904b3cafb7ec396b56bfe5f4b943cd06f3610fed6084b4035b23e1cfa19717e5ca818d7435cfaff474fa0510482e900945dd997f871fa68d08441365a1d4104fb0fedd1521a05ea6fba09ae68deedcc0988fc34adb2b82c6d8ecbd2d4c13eac9fdf17cc0aab11eb11147c2ec94d5e5e04be270aded6e2f234b19a45fac74d51f5d6ef4028010b58faff5e5e27f2c5e74bef97d3138cd3f4e7e6c88594cb19a5560cd787481335bcce0703084020a53f36b55720d38685ab774552b438fb71084a73826cd5665623e789151b6377217d0fe60521b43a2eb1e5a811ed1733506bcd2746edf1c50c76503dc12b2f0c8d313bd6526b3d6fb77810d72ca05990cec76b9690f87d0eb4a9487cfaab795df05d7e682af7e98f716948ba5ac51f51b9f58ae6d288c2cc17eaa7d5f6e897352f54411b5ac219249c404d3ccc0501e8849cc32aee598cd79901c35f5a9368ae26a86b4b776752e33d61ea17c10e55435773a65cd7ca306c9c4aa9039a70e506d58b11792fb59b785c61a96d2c6cbe2af7d1bd93c5c6dc69f8175337e3e109a04d156bbb11f75513742ec721ea100f067bbdd5f9727e4f24e8d546b4d2dd2ee54178559386f7551547ab3e08b23cc4c7a1817c9abf73bf5fdeb8bb4b6c7f507f532c3da5faae135fdb6873bf87c4924b2ae93f301bddeaf485438a014527c2664e52701e3b51575e6f30c6b623ecc59e42e664019c49c81f165976377acec8177b275877f87afe982ac4c6d87e90d0206569eec0899f1033850e56abcb0c72b8158948ec05715d683848692b2893eb30391d2a7e6460a205c937b1c8c7a817259958ff4569d26519dec8f979f23629a903501a335be98db07d559fa40850e2e80e558d6cced83d5bb9bb2f7231ceffb57c4cf9c515025dc71823d97e81a1c1efb5445341dd36606c8e38286bbad28c97eaa3a151d437f21fc1194309c9a9a962fb0c9a339b9cad138147d00e630b2d3e14565894079a3e07b798bcadae96ae433cd183666f7d4b943db51222f7da4df448a5457887db7dd3129d947910409d49221edcbc23d0676177431478ccc4bd9c705698bb7ee0a030231e40c479c9a95a4f9f6ad4438235b2f250a57a0aefbde3ddc1ac54271fd9769c4fb846bcdf4041de3b1575f9c478b73b435fd3b28bf32a4c228b88bb877468c7b75265316d1f7c2298cf3ae6ff497f92f1bf662e671245a794d14b400b3c6d5c6ba2e65cf545d461dc741d616f2a99cd9561e7d1f6dc55f0f19395c5f0ee4f092ed79b2e4508aeafbcc7de983a43114c8eb0139ca10403c4accef4ce9e860e38672d015c2ba1bf40b0d810536271370c2233847504050d5e561dab16bc165958196ce69aef401c6f5de108f327ecff6826022a9a672f12843a0e592857dcbc70bf67c8c472cfde70d364ac741fcdc073c0342ff63e72339e24d9dd42b218221c085d3cb1487e7cab9c26237b33a6389a3fe630b2511ca3ea67d29f90aba5c614e92ce90fda0d918fd3ec560990c1ad7914da969e002dfe0593366090a800092d76e986a5ecaad86270367d0e64a80dddcb6f6481a50380c743989532f47b99d3c2ff63660304b6bdfd93039668cc467209ea1784d9e82a6adea65446e4a802b749c09174bbb51505f7f93a7c24ec25d78afb89757b49445ee70598fee87b9669cc1cc21f9718dc6c5250982c7b8bc28919353f7c1230f93f871fe6e9dfc815d98cd3880ec5e4864b5160cadb593599f0fe578e55a29927d259a92d55e46700ac729c7c3dc5cc35429a861dc4edef9dd911142cad057b69c6aa33d8cc41a7ee6fba54a285d03c41ea63e29a1f741aa0ae95949b11ff53d34ed5f1512bad86bc790914ddd56c2ffe8f71ff42d9ffe64408ab0bedc326422873a242d18ef8944d0648f924d70a962b5df1639ec0637ce9392582b436865f4496e36be0407a2f24a6ceb09d2cd4bb2b5f8e46dd12b1528149b7753fe1494c11b13d9f3cc2a5cc8294d526422a48c6d6dea29f1fb3c6773a6f5ac263e20b1ccb53ba700585d7cc1b1338b61c7c0518dbd9665bb9674cf35f0334abeb4653b0b1ca517678dd457645500678b7aa0e1435e76a50571e13d307ea07aba31e589ceec58d93c6db555a696939c21a05a6c5b15f6b08f6fa3798f5b764b921671febb8db35b7a98a72707d9b36e1cfa27dae3014dac12b25a2ce91edd16fbe04817cba5d158ddd777b810006b31bddcb094412505b6c1494abb5829ab4feb36ee8e12c2aba99dc39b043614782e8f2b0c6f0c84c17775d71ff9a641913ebc01aa595800a8a0237da0d850846f7ea79d9e711ca4da606e0e277eedb11e93a602fe744f646580f8954bf4fbddab4066d73f4ee843dbffd86d38f953fd5adaf36848f4d9b469dcf4d35f518e8bc28a69d31999a67d84a7ad8c3d57405ee0953d3305b507bd6da048dc5a9898ffe4a068b0029ac9b22506c8c9bf644ad43b10d9eae4be1c1c76649fdf5c41e4067d9c80b51244a5116d626fc3271cd61336794832a0c654e32a06ced793a0825aaf1668489cacf7589e7c66075372e1abf545415bd5e08307fd223b013cdd6aa08f1d4ceba2f0f468be19cb3fbfbe0495672670bff9249aff475299b55e336bbfcd58a6ab26f4c30dd8c79ffeaa94944b47d5b67083d4f9bf5886c0aacbd83b7a5d4104b713051693d5469301da870a5e90f7d4c77524ddda1a4ec4012f5a635ffbef83b58a261df4eafd6a7c68e12fedd33a9635df548c9ef602efa7b3c4e69250797abf4e7a3600019f64df06abaaa5e2edaea5517e631cb51469e293ce61b40279d5e94519a4f70774fda36c474a14b5480302abb7c459d94c1e657da5c9ed9591fa3fe2bd7c7a8765cd20160ef877b8387e359600eb6054e9a09ec0d66b3f7849e2b00c5f30c8fc4c11d583e9827801c51ec7ed46dac4fe216a2fac08ec06607b9c490e5974f8b81425e03ef2cef94ed3d2e00ec37cf41fee67096d1de78f5372440c23c8bf475ec5f8d975ca044311b8c6a9ba6e1f589e95aebc9908a79a60901f5c18d97f5aa3b4032d73575789fc87668f071a739b66785bcded31751564c32db4fd091ce556edec2404256a80c067675ce93de90f4cc225d34ae80983c4ebc7b62f1e49998b28675306112ed69786d961b7426782685148ca6ef86261d6c09893fec7df097c57600b35c75965d1df7083888270459b1f876529f9ff0956b15e4f89bfcece77544b84343d4e7dadb492b732cf73507db6b97745612b8986bff7ab80845e0153aec48a25ccf7e627cad12cc3fa98c78fc58a6903a704ad51889236ca76f6e801fe4bd5795aaa71f6041a287807f210638f74b6078750b701fd590523f2c3e624b6001ff437180c0ed0e8066adaf691964c348722d28786a5a2cefc4ee5c4479457750fe98a3f3b06ac0636fd00e787e2ec4f66721089a41d636fe8fef2247fd2449c2836a9a64bc18fdc32060cf523aea9b55cf4ec4f79ea5e9e5f7033a25a984671e26a91c79bf543e98674adc118b677881aaaa7c48202504452f315b7fd8bc3942787e7a408a22be62caac62d97142dc09c96a1cb59560b9dfd280fa6e39e3b84ef15bd7e7830db44f8a881b191acb00f9a777c6d2e0c77e90575d70f224b4811f5392fda0a2558c7b4adf8515f9bbc29f3787c9680a35850d5725f2073564a2a3c3e4864dfd9da918f7b26b1ce51bd9e7031259974487692240be50a3e9d6151fe4fedaf56a0bfc067328ba33ef35e26441aa8a131ccb27d3bbb31142a55a8d7666cef9b9bbe67908868f63cb349b5525ddc7ff2547e98a1df9b3f2c588364e2f8c3608e05fb1ad2fe076f7bd77b31a763f867c3f15f3e2f8f25d775afcc09c4c6bc62e344218b8631b30d3c3f2c83403e055e1d088dbcfe7a645115e0066421fb4f8a7ea5da91c52e0e248b87318748e32e56e3cd5b13212e9b152160385314d1e45363bbee4306f49559f0db037672fd02365638d6303134012608504fbbaeb4f005b9c4760ae96822d6ccc85dfd077ef01df2b7803f84c56b38fb0dd2194064a70286d39b2f8f20c0ee5102a42699562de866b3b6ee9902565fc449e93dd0ce4773eb1d27a6702a6cc1d9e051b693daa0e77db742036d87e5f86eb8e4e2795dce291ab035fd070ad356fafdb6f935db5ab81e59c10057c8a8a86b6daa85c868390f4e0c6937ded134b991b7db50450eacf0a734bdbfa4e77a1ced5c31d32a3f8f4c5b828c00639f832c31769d433a4b73e45ed8cafb41d371fdca0d11ffa1d1d9467d045fb5df777704a29b4740eb42807fa426b9868d8b4c5507b52082fe78747f940f91acaaf42fb6f29e14fb9ec148eae0e7022922d330647a26b1669e0457021c764e91e99ffdff39a2aac5e171050c095a15444b40a140067a293199f8a121b1247e8338b7ba2a3d1c9664e1a2bebea60fe268e4d4f9db0f6e9d0f30ea3a49c5643b4e1fd16590b92fe3b7cd56b13cbf3d1b022a608bee519881ee676ddea2f1eb9d47ae7de75969cd10deff11a3a3c2214c5ae2388520441bf6b06bd75b2886e7851ac38fc749adca6d76ab87cea65c1fadc51fd0e2090e1f9246aa885532bd25d2005e1b08010166b079ef901ca73b889bd7ef24187b3080b5e33fbf360d8b2f111b9a37034569ba3c398cb4e4d49b775baf61db3d4a7f71cdc8a283d28b04f853fb8f673267f39ecce1fa6a69ef13d0f1193cb9951ef0de7d97ef8366cb7ff497ef9800a5989d3e6b8f54f357e200552dab428c48b44d1ff2c655d7ac95175b83c1c64e0810c27ad3a32f2a354bdd9072ab2871aee48e2516db25a37ab16216e0ae8f817f68e9806974ca609e79e27208410fd4af5a066eacc2f215b3cc0aa10a509fc7f1230f70f91d50ad98f06037b1c24b15b361c23f1680a6e4a93a552e2e9869749b9ec969a48af695bac9dd089393a6f051d240c8f43758bd6060d517842e42d793786b2d2db69602c29bad6cfd526a07074427c9c65b2cabb0603a8caa50028bb252f66cf40f0e6225d3c05c6a1735cf1bb18bdbd2967da3bb18550236b50a439659f99dd334dc48ac81443d985b3537421b170b7302f08ca213af0e30b7efa7a598067facf7758c757452d539ba6e5d3d87fbc678f075523d89e9f1748348012cd4ade151e5ef27180e30a2632745de8d5137f5f4c197195c1753f5495676d2f254e1075936aaf95b4de60a90ebaccd7092160eed34b79fd795a8eaa8855de498743d426e9417cdb516041e23888dfddda40d33526ac8df7ea9c3ee4b31a1edb02197568d3dfab0926b38fc72d7fd1012efd320a431be295f293c16e9ce10ce729ea8caba64ac6c2d79c9b1696f66f90087aeec069f396fe49fce6e3ec2b4afff2cf185d4dc26223dcc7f2baa21197500cb0df16540bf6b16bf369f5565fb834afe77e007f567ee694b59e7aace5465552c9df714c86cafa19d8d3fb23172942e6e1e37101d092de01df39e55353bdb65e94b963bc4a5e6ab14faf0939eef7bd3cf99ec6be0801531f39e687312432c53fd7924a03f37b936495104abe87d19d6344c54224ac345efc348d4b0ba1c0abceb5e9b8444bf51a49c9c7d1beda804ff0e7c156d07099ba847f638e072d7327930fea634c540475299767ee3f59d25d5962e9e87b9a79a5ba55a67b96a6b9c7878d62ebbf19400e3240f53e9a52c80b0e1d99be853e7b720bf2fa3bffeb9d05b328b52638bff6a1a4af84e7c966a724c4009950244942c3c24fbcab23f23be494f14b0e5fb04817fb940a8a1c3d60cb1a985a2bc5ae04b22dfdd69c3d971078d2f2a874e5670e73c97efd5878a04da3026237ac0803bddd6c5099165aee4fe4194822ac8ca5cbb1a623e7c59b1e8f0da3a5733cfe5ed9772009acffb88e5a1587c655a3c16a04a193caeca3aedd5b746ef16909bd65dbe42f50ad1d3efac9eae35b173dfc46afc1a5a310ed45c04fbd214befbccd90ac2b3eaae86fef8a511e0849dc971cd6691089d6eb4fe2ae02ab21edd28df9605807da9b498908c6b8a817efe63989df8eb58856f2d85100b72cb48e01d71f01d3aa35e9bf78c0e843a78e2ede0a2fdba390f18c7c6d5000b63702647bbd95bd1bd09f2e1131d9e77c0aa91856099177a57b88b8af29332819175cc8417272ce2dabafd8f62f669ca1455254058a2ce512c497500fe21b9ffc56dfe3ca34c2826a7ea8b2d139a08add6f8e612905bb542aa7ce62cdbdde5f1e1c251db81484a99bc264bb2913794aadee8d1b1281801bf54803fe562b83566fa762ec35069dfdc7b91765278c98aa53345d5be29adbf2804a513a56a541fd709cb9ba14e01421eaf05c9c4c2d68768722f7b129783777bbfed8fbdaf4b2fa13ed94e6c50bd927e38f186609e80f52e063cb8531451056af36674e2c0a908452c337c85b3640c1dfc009b02924156b12bb78a6fa40f9e4b8178b1efda4a268f646d22e7672086f395e6bdbd2dd872a42101bb3c6a9979456a14af6f406ea3074a26befdf82c26d0cbb23b33df0ad1101587b824b5e3e3315aeab948e9a299ee5bc1242cb3c20ba7a66b3f6aeec91ed38265c03824208ff09f9be534fb61054c746897a1fd96a8f20ad8c7be9cb9cca12aff2223cd4fc1aa14914ce8ef6d536d9df5a00f46274edd55543ff0bb337c86476eb1b918944fddba590c5c2f14d71118070892c8489e2615673493c1b157177a7f0cb70e8bdc09f24e11841a81d88c1945747e8eee659fe07cf773977ce119bdf202cc63f08654c2d3beadd6fb6cfc6bd9b081af4f8279c9602d120cd59d10c10908ad741032c721a006a4e5b4905e98641f1f63558beaed50a616c0b2a844bab7b24adec5257aacb57860f2ad0e5ebb793a50c65876eb1fbd378748d85f86e4db92cb10c40eb111e5d7bada1da72492a9df97925804705cdb7eda32c1b42f04a4d395253f9b54a68573cb6d8f10105cdd12c210271a954d11a213d03ebab29b3b4dd35cf0120dc302721d9a5ea6d1a9cf8691678da029d2870fcd02454d18c3e538a8d38774f17458908b02481fa192265a75a9dcf31ad8986191067c77f6baca78cdb2e19daffa3bcd60067ad7182d56acf90715f32d96cdcdd44e599feec61bccb5de9888d8a53317ef24742c47a8abc1e5234aafcb1f8dbe7dd75d1beaabb08c6af57af63753ee66b951e780175a95267859089a69933eec692dbb4f1b2c21ce9182c7a2a73aa196a7385daea1f59103bba9de7439261f00d5c6a14c59c2b5557ca34e3474347355914b61aead1b89aa0f0a2ed45a87092e70c779b5345572ce385c629f568759b26b7aa5d7b228102b689d674af018a230219ad0bb94c71b3df09d8ad8087272fba0e082050d0bc487b018dd3b311ef00eabf921655af03c5cee7dba8270990a73d448576f559def24fdcabe2c4969ae1e0ab3e28af8880d8f0f2c1f431120f7f35302a3b03871b43c7eefc9377e558bf70e7d16587f1c55a68984a9deb9673f9a9ae4a80d5a9a5257db119a3d1017ca9f6680209cbc8d4e3d8fb227934c9abee7f037f07b8c29375c7fab8a248fb941735353fa2fccd0fb8efb7a68a60d80821e1ab22c5265a86e8162b7f71b414e2a93d8c514618336feb17dadf4fb19c3ac25c14d9df844cb19002c3d575a979d324d3bf5c6a0d4ad1897faa08c81393869a3b33bb8e173571fde6915e125480f7aefa37862d81e26d2f4a69f890e8c803f3b32a25ab3ca71756716674967c0508a50a4c28060eb44bc4058530ca898bd6582f792fd6b28b1e2b2b0df1edc93e94d0f7e37f8a7600a0cb34442dcf4e7bc9d81857f398f2feb139d5e637bc9542285330d84e07abb998d433eac5a7185119e811cd209a4a66f9377812930db27aee2d1f7edc200582df682ec1e95d213cfd9d40446941cb98abfc24377f729b2fb67c9ca3e70c230aadc5ce57acab9abec468132d7edbc4b06e8473c5b7fba15aa19f95eb72360560bf162c62992650432bbfff6d6c2f51532980aac90c0995aee601d41311479fb76701f87323493c8043aa2cb3d543f523999f21733fc577848c484a383541dc2e587ec216deae0de58954d26f13ca61cfaf05d36fa31714746e4775d5a82089f1ead8e1e9a3a8d33a668bf98e13e4c66c5cc987f985b9ae8d89bb7c62687bf5583c001ba6a96d524f4341994caeecadb972d52c7a1f153fd9ec28adc6cdfc739e8fadaa38a53fd1d665324420d284a9dba560e66bd3cb3de4414a20155d789c6c8a4220f96c7a614eb8701bd0eabd2fdfce43a4c89a3d48b9af5e622509575ee2db754b5da820934895c388cf45221b3231b129e34054132ee1a2e2d5b8cffafea1d04c01f5120c7fcde3be854aebee2dfd2e4b94998146739178d97d050f845e6432fc6c507ba76e9378aa6ec78b0af346d9e3397ddbf6c6eac0f58109286f1bf226a124352d46edf6700baf8bf245c407a3c5bed9301d59158619859423f76a4ebaa0019d05f0182d4811cb09a17a2a5138ddf7a6381fe67ed68ee3b5ff2ca35da7aea6cf7f79a54de5794787e312fe187c6729ab05644dc5def4472f517d312f232882bdc66b0e0a1a49c5497203ce4c342e2a6331b45959e0d25f87a68a45940cbccc6ea8ff5f11ef10960748201ea68cb668ab7f2094bc07593eefc5eaaf7db622958d8233dd0bef16e8a60c86316fe20209642c89069ff45255f1aa55e30fed418c66143001821dbe832c42494dbe5b4b4f5108d507c799eeff5cba416030fedd439375369b399d9774dbe6f2aba6cac5a7a4ef29c764c79310101376721fed84fc9b64b61076777b45b7021abc9e9768813b555aef2e7dc0dd693b5abdc44c204a0daabb77c74e4a90483164877aa3c5c77e2189fcd91e1a82317dc39eac5e8bf7b0be6b44119e784fd0c181ad648ec0cb77410d02621ab3b59dab6745161d687c3bfcc9c98597afb17379844ac02ca485260c2bb59d581dbd8cd4025104c2bb485eb99178a327923ff91f2e98f9000e0e6fcf66d4f011405d69a14580b8d971b02e32e7e1036d877155e5db88fc86b6368aada5a8f89a6f00194a2c0eb93a4dbafa0d3e85ef61a891de98e55c0690fa1653c0baa0774ed30bb67bd42e7d9d41ac1dae3d7d7121bbfb5a602bce2265f9e5e67062934aaf10b7726fca8c0fc29a9da6e7cd4c19587f03abd2009d3acf5f8eec47b7cb55a024cf57d3cbc13677706f14212c4e6a3a4400199ece710e5a5c93d283e9b2e1c0d3eb5cd26e41e5a77e00e99b6f86be5f849e3126dc88a39345ce39904fb2a5235f38483d9fd5b14b8647db24df002117f46282cd4b6e3d53aa022f68a86f18c6802921175050ff1d37293773620dc49d305aecc7ddc49f04cc1b18c7f2fd71b3355ac194713c85d4af755efca457dd2836702ffb6c40d719cc81439e00802de5c07ae221e03558702e2c0940b10c7837fbac3884c9da80629171e8ff2d39889c899eb27b77a114315a8649bd1727c1274a24c69e9f5a4acce8676dce68ba892f3806b2c91c114811b6113889a1f4deae450b84c8c2843a56982977938b2edca8fbdfaf4cbd7f0bcc0cbeb4dddf0d2a8962090fb356a9032344b7f7b502eac90c78ac33ad65f8d2dfe222db3e3a6a6f4c067f4f11faa4fdceca0f58358ddeba4eb7d439bcfdf46afe4f908540c5e7a9636147cfce1ddca11896b82735dd9c41f3fd827abf77ca7f34497781deb70a8a0845482257d6f7fc186d311bc2766c1bdfabfc4c61c83feec5edea5114f8149fdc14e0ba0e3d191cb00e9d19bfd7bf87e4830a09962504fa48a9cd232e440d636259e4f8d868d756c5f7b1e32dd06787325d13f5be789f03cbea2cd1a7d049336bdfbc68f9ff90c34c9b90fadf489151f018248065eec2d7e1e9a72d86771575b8312698edb3a59baa856759b4d70fd4c935ea99caee40a4e2bac6cc0761384046f666e7bd60420036b981278fe1a843dbd18e52efe96da6ade7b07c1637b59d7aa036c43dc6ede95b34c902fb7ec10cc47e853d8c5d4ffcdf84963221e2e39c2b2b97cfb8e62d123d676aa70d54b0ed75ec56f6625e1c024cd3a366acc782264e7f40db0c5cb83aff8d948a586b6eb5920b652fa9e7937780443f7933936225c00a214441b4dec0dfe5227ac1edcdcc3f2490bb096454950a1d17a4f33012db79f297501f7dbf2827fc545b81b5c6e2e6b50d7e522d72cee65354be8c63f1e09be2537a495c2180b155c9d358265e4eaaf628af96a9571b87371c78ef361deaee86773936585bfb9481d0a7939c1fddd06cb2a23600d1a889bd559aa749ad3e3d8c5b73802d7aee0ed244e76da81ac882aaa80ffdf79270767bf95aba588e577d77746176bca55d424701e0ab38d860b7382aa98a3d78960039f3542a253bff144d7cf1be60cbccd75071a17c4fcd4f9f3b8effa0d5da3372dcd002e30d705c86815e08160b42a20d2024978989a4426e56bffbf5d7c313611b2df6c81b7354c8796db5633c35d2d60f585b5fb8d6c7bfb2f072bbd5a4973f89206398f2201e5beedeb43dd70088dcd8b5a3f8188e03ae8c9cb4611b1e2a7bb04305e0ca72ee2be28d7a7a96094466a5cbcd0450835abff348bdc0a7e7aaa19b6f19ee078ab683889370d56c7fe44f6d3c26c45a18cd2ca369909f9dd1aea8ad002ec37afa5c37e8e51af937a17556b20658a96938a41d0d944e2aca205c9860f0d3f13ac6fc5a74d76e550eadb867a472f293ad5b099ba6469593d7e5311ec4024bdb6f129162e470e5f8ccc0cf72a3fa103f715c5d839948372dbf54f5996390efdd00759921de6ddab8fd51b03d973256a664d4257513ce2ad2f4ba5f8ef186611cf5773d109756e51c71801591450fbcb454c775afbbb6ea95590c0be8d3ce2949988227db4bbbab1ff1d284f99d7f5301a0dd89d8cf14fb8c6791d8b944615dd6d97b0efcd750eaca9d193ea5a5e26f024170aa204069756e164576438fbeacd5d047e181737d9fdad209e5b49f72193a205c683e4db0fe9c96f27a8a6c9b5762f693a6c821504d16aba41a725b71482be4c5fd4912231bd5be0dbd26ff72c3d30052d42405b07bffdffc963edf2b043c225ed5cb495f3e9decdab490a83fca6d8303f8a7a24666bfa2ecc56264539894fbe7723d36ca031c5115664469ee110cd19a49b7c40facc07c3b0467bd384f30c891f5366e1e32742561842bb8173cfaf3a2ef8dff853be8366bda69b6d634c768bc419f51851bc0fb99269330ec1bb9e7d616da6a01e79d62098637ad51bf9ce0149d7fe431b298ef23a27348c6bc6152ba498bd70e67784e26fcc8db0499dd1dac32f14bc9122c866a2981612c73783c120f8f609a27327ec2f2c85921ea393778d8a474b8d576b05dfb2337340256d2644be08becb903870f1c11f9f5df5a61c154b973ebfa915fc1db779ca43e1fa3ba1d60f58ce9d3b23118237dfcc1e8af6d550e22cf03f10ab2e4ed3492f457a02f96ee7673b9dab6723845e198a68b7a23886474181772e6ec81e43398fc46552a9ec3f5f8c96490eb0c5cc4c76e0ccb166db46b032e7220b8cfcc32591ae1845dfe2b363630fd387847a5347f6addf34211b5e71d9a8e2cb04e58770100603f5c5c97983f23261db22304f579fc23afcaea3dd650bd73ec5768ccce580fd005228ea9aafbdf8fbf78bf06452925f2b95ec9ab6045a1b97657ca545898a7f444b6a49ec1c7b55816d2a6ef3f630d6c157c3de9141ae6617f34392c6e7b21cfb236f80506351a6987a08fde13452914e508289eeae7d4296ff0b6a43202d36ec91049b1b7d5b9e842c25c951d96077aada0cf6e9c7499208eb6e22beacacc9294c6d5a86b0f0c4beaaaf6084dea46e9d8a67e2fb3933115512db462daef8039fe01f2ce02db3b0a06f441a315c49bf24712d6ce5e00dc83f7b358e8338a8be33c42bf1e08b2f6cde7a5267c8a15adc07ed01cd3dec019e3e5e299d5def4206a035a3bd794f530da8bff46752f734449e98a6135cf223934f88205f98c5277e3e4d5dfe1f674a3faea5b58db214cc8afd8f5b1f1ddbfb29a380ec4abb6dd73c945fed9d2d4dae4830f81639a7b485101dd7f443c24dbe3e5cea68a1b37f1a7ffe65e122ef472d3c44bf2200efed16a050fb36e611b31af7d8677f774d59d4b5c18e6af373cc13560772dcce5fff13c7dd56b551d3c408e4a45ccb871da5860cd6259228a493a77d9adf7cfaa4c7792de78ebd22eac9cddb655eb98f2ba32058c1eb06c8c4d9edfa0160beb5017f7683133a1b47c2ec9553df1b6325651ba607f7cd1cdfb7fd575248e48b158db5d15cf764cba1a28a9cd404e99f516f5837f6fd5c5a094511ebd90397526968ba725338bb4f6414d338bf63322dad325c6dfd1e40dcbefab37fee5573ed22c47f8280aadcc9e30d09cbd387ca0a7af904042e55d0f32b4780b17029c35ae5eaa4f8fac1fdb404b4f591abf4b11597e304493d3045c9bc95132247065d6752d1c255d20187233b52501e1e8feb7cc86fe6a80b89a649fcf6a93ef0ff0102481a6e63952628aed9efc9a12f6563a69b21c6eac7f552df6723afdbcdf50d6f2eb1e6b1a07279c7503f5342afb50f2f1bfa85d6cf49a4f3b1c48895e818246d9c900b9130841d72d6d4e9d22365a9ddbe64881ab77e54407055cbb73ff30eb49a65ba299a873a52cfba76d19e31b7061d1ff1e7a1e8c09ea60aeeec8b3a675e1f7a2208e2d18f2bd80eb288cbc2cfa059dc030426fb65082bf4cc498b47fb7c8e0101442e51410e9ef1ad8b4d1e17f81f112a2b4ecacff1a8a7f13f17e035e9e165eab45fc807b74aed00c09eb225f9a048479cd7da2fb17ae13a0db33b62eae04c2459dcc6ad6bf9d27f01ba2712e8b9f8e3c07f5dc4e249a6cb7b1f8a7f44019f1d79ff00cb851adc6802f2250c50143e80d77b0a785d63457a462f47ed68ad6b64fbcd24799d64f357162cf25352226ee7002e09f09aff5e9909242776b30b991c3cb2faa83cac1b0a46abb902c4a4973b784d450a343fe91af53b4d51e88e30371fc47c936be0e66b8a9d0b523cafc2fe51c8d6a7e2bd9e891b4e8f544b6f66e6e6cd037628a0cc6aa31b1dd8a696b550b89572a2d84802d5a9019c6612a571b95c5411e9dcb627d34015d3389055f34c87678fa3d96a196a93293815af49cb55d934f3ddf1b21742158e566e151e281ac6ab7aaec2462fb41abccf298c923cd13eae4ae6b2123d3701ba29838d89c2bcc890d9489bbc62eca2edee70fcc73201138f625b5d214b14338591b626da577b2f021a0bb5e4f1db19d208d88d07facb0be359467700f47766fd93d89b165f0e9c266182b81b168951ae08c572f86d63c24da1fb2b2b86eb446e2785423d6b07e3e3d51eb42a0ac85f26978d5967bac88eabf2a314cd68107b80c7e4dbbdc53f0cbe9b9f92dff944a4c54b7d8b12ff9539495167dd9018f1c289cf4f0c7207dfd195c7f438fab966b77014a3f0c0535100e937b488ea4beff74781effa75b34d1c300ef9de8a8ef47d6f00c22021822804a62f3677c8013da368e0b552da1b0c817586002d46af18047a888e2a781a0d6cae18fb96f5ce21aad2c67e9fd8643979eaf471c027d2c76f1a583ac1fd8e25c123fc2c0d4f545d46b365cfa53deddef445f5dc5839534f74b2dc518ab2c2b70183f31198cfe5177b82265ddd72734ca97ffab06362bf666a7e4f2bab6ac8dc65022cea9535ab12345af1553a794a4a0edf15f34b8354ead97dae5a9ec3918a333dd48d81ae7255ecaa914275c8312d45a6db73399fada08bf3279b28e1651f9a6ceac0cfefb65e6ee9c26d7b9be5577730af6f34ebfefbdceac015309bbee7e751ae572005f1d42f6992148911ddbbc92d5542d2d3cae6781540f4b5eba5928b30a589d5c29a6337d40df8a2595c5d420ab37c2af0d2150852c74a1adb4cdfed9d0b6c292a60d1ea66407a80898d03098f3e460304d70b94fdc42c90ed2d7f5101c30fc53c8593a5ba1d515b948dc0a0b7f5b180a3fa8d639b317ed6679fe1ef463d483d8b292cfbcd61c94c3ddc90338fb815ed16979de4ced75de85778af456f8a188f28baa570a5843fadfc51110ad28be69e3ab2368398ca95326e6abd4fa1d4a5e7fe87488dc1a49a01ff9ad93e91dc1a93b1803066e6886111bc7b43e2b72721414be0aaaba595e59585aa2e484fdaae32d3c6450def8a72df330403ef61146eeda7c16b1de47fec484f8753e4a1d7b22046804b0e1cf70e37322e8d0101d03584f34168539d133045d7a0e21cb45dd0eb2a0ea1077b475a3753b6eae3277052bb06446ea11c53185648523a2125763aff46e20de2a045d0e386bdc05ab11bbe92e0e463557a70262213fec54c30cbb4d79536b815ef7cbd332bc67caa1e8ad9558c891daf9f2388c3f7b6dc23b7ecfd81cab6726c119ffc2d3295364f1558573c0772fffd0e77caf8e5827654961cdd5545dc72dd358a637e73f107298d21f1b90c09d175fd624607079ffb9a668c6a8bdc9e26f0e0c2ece791692edc87d52b6e3a66b7c0685f2dacc04beecff145ddd96f513aff5a9d8b8e8e61cf8d10e11001d05f5efa43e826706be43e09fb35ab2436c9399b5647816dac61346ec76310d34df572065069511465bf9eafd6b3be7823141bc406ec2f6a889917b12146cea1ca2d27bb634be2a6455d4396ee7e9a54d45ddf279b4db03677cd7ae024de52630e008f96b678f7a2f33694883f59c0f15ba9060a7ec61fe1284718b4ddf863dbff2cf4dc1d3c43f1cf57c16fc20e94dc71c5c03ee7125e289094aed9190547b5cf2580cd3259104082721b2986bad503b084d2ae42d81cfce8d76a6a6e70275a922e0cd6979179dae810f211164873d30de298950c9797c69799b490bff476aa068c3d6ea5a807aa76a74f193888c45903fbc1ca4ec8f255e8f61b75e6b2030f0e595e171f4850054a52828071dff6454b3167edbda3142b59333fbda04a1de26fbd3c988bf80d9b7fe751c79a8dd92b761ab3406229b8382b716b834010c0ff86439b67a14b6099fd7e5aecc801dfe1ed8304bb36b9c698f7e914a2fe9c02e21e72d43d3aa0e262740fbb6a22bc6080905defb5961269213b7763a11f33d0096cc3bfd2c30eb72d917ab4a7e29561bf322e6b8ab86a854c1171022c295b8543f0ceeca77a24b064353abb1e057b3ec42cd825c91ac93ccddcff1128495604f5796cebbebf52ac7d600bfc5e6e2f8984036d437723d0a54aa07624e1317d3b1dc6c90414fb4207f2062e5be8a9fa0dd91a2481ce72930ffec1b08f6629a738237ca5518503f95be6e2675570645b1f758f8fa3f3c24f96e66a24e7154b1c555557ca84ba3598f52c281780dd7e22655db21ac383712e62d4540a1bc525e6c410cea444220a0f9047c164d26b28e2182a9c453b6b6108f7a4a9f6451b6e337614c7a1a485b7713ad48db44be60c39d425190c7d9f20bd0193b24685d57535a660ab2f49d26eeac4255cd1dc47600ee2334d55d9de424fe4e8ae5de3072b7fae23b48f32dc4a77bb11d26ce485df52a0076bb021ae62755fd76e8a79cee2ef63502115861dbfeee035833a5fc19b3eae4b08729f211380bead80872ac2aa4d1e990564835b4d1b047af2a1f520f4e9284f7b300c595ead3030d0e5248d3dd8b2e673ce95af4893ca73213f29037ea0871c0cd2e5914ed5c0a2cdf6666423151c12bb0cceb50abb009ae141501758458d2fd6cedb4ed9ef3b186adb6d4fbf6fca09a18b50760c48f6aab17264d017f6d832b15394a770021a9ce358e311df099953e1787ae04ce383a27b4f4703f53a64376c0a74a1c94d14d5f412c21ae9b6bb8e54e52d82a7e6b995617248863d44fe407d5c1067fd0ccf1bd1798873861ca3ed9044c59501a7830c47697c523c6a5aced68ac1df95e6fbed8f900d5221d1524f2b84afd8cfd944929b6fe749b369db39abd28f6dd43fc493f5811f339c3402d8dbe213380afa432f8da0cfcfa92e0e8a5ca3a910f2a14f04a07244709c9e7e6dbd261f572cffaeb9a3b433f995840e1f74a665d9c0b1829fc185383b9d7de55deef07a01789d1fe33d34b6c67b2e121477b7176bcf6640b2849d3ce0ac235104412f7a4462f6346de477cf30afc5ba1562804b71b5a1a66980109517935af0b2672f037417abe602d695c8b9e16d8ae64ba71577294228072c9f786c1a624002d197126f934b0543d0c8cdce85010feaed82538739a024fda79b3f5d461f1c214bda3d55372f341f88694d835d887d101e0f45ef3fc8acdcd5316a3028f9e1a3185af36a54cd3c9a4e4c528987484434d829acbd44b6dad78ee3af067dc92665da7e8c7baf84ed5aaa864eecd1f4c9e8dea97d6c850200f599011e9e8c7f10d2084553cd4bfbea85d4a8e597d833c4b26bf9e2d911f85578c7f3fb59bfa60ff939c41db223532f7943bf7dff879fb2f50b19f621d4f597102ca0014a18283a7094e4be3f902a27a7330d6d67e350a0b75724b63c544eb3fff611a822d841eddf10b4b3c01dc887e3c305bc3fb969088f8675ba6accb8d21c6912ea1423c3048799e44b0176d5437f53b57060a45dfcb88d24f2f92f08b46f132db0b332815f12ca3bc92222428ebb545c689c9bbb0c830c96b5a3c13449a5da1742711ccd40c1583c061e547a1655ff02083418767dce4df03e31e0ef9a9dcc7ab4eb6931053b7206738500b43413fcb83787d81bcbdb59ae5d328f3e9c85f8c1bc8f51287e487328e9f3bf0189cdba716426e22688b61a8cc6453bcde3d336cd601698125c05442d54c169fb847b09e4411c831a1a3e690da6ca51867d6f828992ab9465976c5e69e5dde1bd16806e4f516a23640aae095eb14b1a95c517f8ea109e2ce48c46f055947fcfae4db349dff1230d29a7161e5f6830a502d43785bf5b864c08c951ccc7fc3c35439ea7ef69bbaf88fe0b35116056e1597cc4ae9c79a1b90cec7dc803b83a2cfa6430b31fef3f13d06e3df4e4ed33c3520e5a6469aa16b0739e85a7e6fd42b3f07054321df62d920fc9c86d3f1f8dd32cd89719836ad76ca8f6e87eed72a9d0aaca8697c2fd4d02757df80eeada90a657a1a3c09863d3270377740cfe68588f93c78ea41d7bd88685263dbc854ed8114fb308d54c980381da7814898f5a64720a1aa1dbe979c3f01ea6407641cdb13b518fb92883638cb7e161fe8cad2cdc5dd6410058118cf6edffa06b8733d183c64ff67684ba5d4e1219488eee1340147ab7db8ec46d8776216292c82391d4fecf335e1b8d43c2749251edafca1ba9c900703be57cba6572c012090c1e1c0fab64ec2e51982defed6307eb3ffd46c2adcd28c1d82bd70119104c8664547b423acb26c253480d3cfe10d2629d4ef9997e6fa6b03107dc00bd946bc2b38f64a211926ba280fe517a65714e1ecb39be55cba3acc093a72aa7f045ec9188c4385ee293a09a170c821ab05849b2f50cf3287a25b3ed642e06abbd247c21d4b9b7bc2eb8addb400aeba3125ff44883c839700832ec87aafa6b5ee523c1e8d69f8af8cc678f91313752c3651fd19c6d9fdeb29ed371737050ffef9d36164d5b591b217041e470ace1e5d574e85e8148c70f61aac68722a1cb724091ce62dfddc0a5b739caa277527546d1edc64f8c245007eb149eb5a2914e2c9889770fb4773e7ad76bc0ac4e1bc3e25aa3a19c61955854c465bc8fcf351d0d76e0948d78b7bde7ce60b3b97ba347f1d40b9860090b1d7cdd4814b3892d208e0e9fc456e2224509068ddc29f05860f9bd5f531438f7a78d4b6a5fb740e570339b4f7a6fe35bb53f7a8341c81c6fa1621c9bd86ee82e3c356d511d7b43d6b62fa30e124aaceadb8b074c399f85e59662f4b25ccd87e4c2099f68160160d47f134a7c4be7f03c4697ade4b613f08b81b528eebf86a3f3bdfe401cd444623cf2faf1d1d1e0f16d9a41c153e03a26dbc2d2c0c7af49571f0e7ebe97cb03012969aea5a3f392bf6ca2404081a2bf1d6573b47af96b3f4630242be2ccd3f8ed13dffc6fac6ead4ef2ec354ac15117d5d0e2260a582096491516b5787f6e683a01d202668bb590fc6ca1cb56b6c7de29c86c8324b34593cad230282548afa2732650dd0b4e6d5f4bfc68d7334b758dbf0703ac5dfd85433bff29f0483fe58a9a8e22156b56f2f03f92672908e9fa04c4871546c2b94ea52acff8297a9015166ca5488f84b4afe75090eedab5bad7b71c87d94049e71a98d3605a96d3c3c4e044e4d152a5106808f2967a3c7a6a4ecefbc14e803c86d4d836ec832ad9223fdf41eab6494119d15f192311c1e93cc154ca28ded26c7d3f92e18e0f33d98473a867229cc2a0e1ae3baf6f0474caf25cf0a74a2183e98f5b7e1aee7338c43308cc7f831edbe30de09453eeccc91b955e0bb67f157579bd377cc129df6797a358f121f144b84eb80a0f17e7f258faf285d4df531a1051a95eb025e64287d43a4d4239f76a307870574b76a2bf956f13f66e6d609be051cc1ab7b49adce81660e0f3e8ad1deb53097bfef246a59a912df0754c94ee030402154e7ca1be92ced0c6ae0a15d086f1a858b8bc5ee98ed4d1819116cdb6432e1f5842d8f30cff7b9c8f38fdc1fb2af8c6314d453c32e3946e61d884b3852e73fa7a1e74b946814319aa02fd7ede97536224b7cc0fd1ad87cb07609a35be6159bdd9c3650bde1712fe78e458e6c95084c36afcfe4f29e3ee990d32ba9a29afc0bcb4e76d997af078d8397fa685ad815cc4aa8980129c6a1ad0232a72faa98f429ed172c0a42f31d45ac42ad999de6a6d5030bba78c8b15a202f9f1e6a434f4c519f96cba8d1572efaf69259ab1712a153326b69a7bfde280457e3ed637bcdb0a6655863392d9ff484b6a93cbff00c644eaf8265eb7807153bf33543501a2b9e84205c4ef3cf6b61c93ddc878a557a5fbc38ce20493e47fac31084b5695225b2159282f1d5f602c685d04bb5db203ceee43f91fc62cc488a5d11d07b9ecd707fecb9c733d45d116d11ba11b3b1b7f125fb1ea1a94e6542e0adfca39a987ed19d6cf9b7b10f39fd7a7867df3de546d0ba2e9b45431015cbf90fcd5a370148f435bc207ca83477c013c9fd34fa47e4a3d98177fa40ece03aa0a222a329e7a681207fcfab9221e0b2c4705c4193cc657857d1aa1a77c51ed9c02531646bf3049173c495356ae1d3dac8e6c480bb8d7bb98ac5471be9e89a57b80427011173d894a672f77c309100bd3006a734d06b3868a0c24c363357908fe54f99e3a21095b291cabb3d0e92c2e525dc33cfe2a803b7b12ade5b9a7c40fffc5ba1b36699e32d82faa0c9121737f55187bfd88aa32f5215e83dbf392a89ef44ff35e9df7072bbcbf1aeb9964dc5dee9fe0ad03bbd5a625d015466f0b01482aae2a0d2ff0ff0cf2c614c0b8a36b2282094333f656d36fe8bc57f3e55779bcd8980e1ae032df83bf5a0aadd07c1e35dce56a5c43d5ca9deadabac589dae1344988b7f8bc5ec41f342e9ec86b1f5f11adcba82e4bfbcb51bcf807a066b04609ae217000b774496bf14f67b586a4e1eaa55b3cad5d5531bf2818633ef03e765fe6234eeb0f045ff4b20427613ed0d9ed6bac57f6c8d8f57f6feb75443c8535d17c60dc5dc900dd4eb907ffdf3cd52b5261d3a5113e6e3336b0c42ca7bc1ca028f99bdc3c79f7714283fa0fdd166bba8fb0b7b394616eac39e44e664b9df92b983488c854fe5ae86bd4a8a495c252b6a7b997f7c34103cbc7627e1652ef90c8a1d9127698574d487aa07f43fce327e3d41832ecd226d051407634fb47eb2c0e3d88e543a1088981cb7d3c21229af7414b4c0214e7ded5b093cbf8d5afe3294d519f37d3271a5b9a75fe4db45565d85ce822209be7f67f2e7e9ef9cf1abcbf70545d1fa747c83ff6b9e529c624edcaaf64ac684aeaa9439e010e0cc6544ecd56b0d70d23831fc5cb575064b5ae24f62d9b2dfac660890256ed0670f5bb2960cd089a69c9b6db0eceb3a09569bfa306488e42b1c7eb89e32a463a6c5e5beb8ff97dc692d113c437fc675dd667ca4665f271338f1df0028c4fb506aacfe81d814f95e058026c8019a84782632fc0806ac4e665b60702975f71998ac8166fdabe6d57bb1c3e1f0eeea806fd37cd1b50ff99a89c3dc9e267ef23b6712dbf47181bb5b886e6525e02af2bf00024887ce97bd0cedd625de251512eeaa5c1240be1508cf150fc0b2a4051aea67cd175591adb55c2df0504af53e41a10023902e28dde3d415c70be5514f022f654aee2cbb21de86af4c02af828f2c5401084a5968a3cf942e64a67019b50e4c9cf4e733cf86180eda808a74661dff5ccb916ef025b12994e265a1678e6da90f747256bcfdcdc08d2cc5614dbcd7647f96463f48b0b2a6633991ff48ba5a92eb2fc7680344efce1d0c4689a37a5f885bdfdb38db9f20e1dac42034e1e27150067eb761b06c239ec5b1c1aabbf881f4e816271bcceae66779c1b00fb65baee2a07e2a28141e3598c6a089541e16dc32b02c0ce28e519cdd9b6f71a715956478829d13a120bdcbdb28d1fc247d8b46df25e72b3f4fe1dcfdbc8704449836510123cf700d28d7c6153d73e2c0a1b1872e307274ef2dab9b3a37dfec99dc46e7d1183cabda4b8436336e3a290ec01a78ccb95ecf5b8ae673b169699a9faa018bdd4ea480e5be698b6eeda6bbe9974028c70460de73b4ad6ec51cc1c23e648dce237374cd3895284dfa4cd0f74cc95f5926760ec3485dc5a82b8316d0eed3beddcbefd0c91599752a46c5764b88241ff0406548324719c6e1cdb2f96dce347cc170edfabd5fe2a503309af56245f97f494fc84eaa2faedba6ac93a407207fe75257255f7af3b3e83d4dfaa29fa94eefd5bd8005a4656fda26ec4017baa8d315356af29eaf9f7c28f7bd59491cc4bd8164d17b106f06379ee0bbd4106d8e502e144c5e146b1fb87e4302069a8184d9588795fbbd91d0dac5cfce844efebd951f60cdd03c2952a9e0bf0396778268f1e2843b02bc371d7560bdf89eb6c256128fa00d9b3d2518cbc6427eb3119317d6bc39bfe566dfd89ea575f1ffbabd2040d4d533e48d9912a3c02bf2c5a59efcf05b395f6a27aef444c025902c2729a388dcce8561ba889d3a7884dbbb8333b341ee35b856c3d52eb3af50ce7a231e44ff45e49338d91816c12c82b324084afcb7a6db46cd77884d4841b86d8c91342b51f7043f74f8e61726745c8d63aac2361591285fba66db4f3b569e98a9378259dba5d13c4b3a32ebb553808985d387c4c9f80a90165f531dbfa72cda18ab1ee8121af3dd3cad7b9d0959709ba434484eab93aed4be17500648c910ef05e088e9e0b28e5c630424db4e92083828d6d333f926a8ccab45a66a5453c04e914a22791d924673480f3653f4d0fb0b29e1da509438ea27c6d98e8b19aae9a0554b369f68978e48a95f32802fb1d8232e0e36bba6167a52fa664549f2b61260863a97d7affe49571277cacad1f1ed0863ee5266e6ec7dc5c4f82a1e04bba9135421d6a3131a12ffdf52deaf13c163c6df8c885e260aa625cb60c0b1527e7c5ae3565bfc771ba438b9b1fe5a5dc32630b41bb75531794ba40057dd0ec8d8c46945262f640b4d480cad03d19ba81f5aeb1bb4a16944a5276877845d3f6304414f7d194423288518f206990b843b4097f850f4c73b0068ab47251bc4f7911163d74eb171ea7c71aba545425319756b1a94fbc8ce7c85cddb81e9d735ccccfa0b8f4994b131bc1b86828b4170edce0a8a139a222a7cee3bcf6d52eee2079fb5d9d57b69bb77d911282fd37c6a3799a00531a7ee5c16aade9fe9f23d4db3a64ae05ec6bdc30e4c129fb85ca13f0e2342943432b69ad4a6cc4d8c052033c6c9fc921dc4d30b0d5343504d4d4eabd9a3e7c5c653872e25ee1694b8e94314fa8ae57f0a3f2eed9ec19dd880d8ce9d3d35ffb51b003d49d4d7d50e7860fbacac4a1a79fe243193063c8d4019f481b97a0179812de27c078bf42e1a22e318213a9858547655c56221587aea5c9f1f989fa060dfde6ee039e245aab16b8b6a58673569321a25a5ccd41e92f4cf438c3c4983bf5185116ca11e35945344286c6b863662a79ae5e52a8192756f528a4fa7a4c9530ee5c65be5da80a13429d8dd7a5569655ff48e07646eda970f4c347c4ef4f89a3937da01aadf2125482f84d90e72870f1b91f6192891b389ad3bd1de1801d914776a7c71bef63dfaeece2c0af447545393a44916d6c30678916fdfa432aba4df3b695bae4c07412693223079e6e3034f4a74fe048beea88511bb5cd005688e2fbf9b30ca7ebe19e43c615d0763097e951635859f0ae94906c194224b65777f66429301c4abcb3474218741527ea8976e5c9e9ec00279d614bab0afef005a2a55bbb7005e80ac3adfddb381acd1e2b68f864cd9d44dfc20c6eccade3871083f084e495777b3ed2c670464d7c8b23ab3916062a8490e2a529eeb06c5618676b863b7bdef75f5c7c26039fa3a418fac9228a10382a2777c3a8151c7a787cde7b80b745c10e277e94938935f219d98ca05db40175f4df02521fd54f90934816177090d1939dc4250b8311f4ac9fcf8ed7af3eeb0c1e7932c0f1b12cfb61b01c33546484eaf6c9365852f5fcb50259b2d954dd444973a680ed0f13758d277afa897b7b69a99c376eb0e3fc38ce21655d5cee9e8c852ce622c87c4d39172dfdcb0b669af283db78498fd08d84493608a3d631ffce71c814adc8502bdb02ad17969b202ab04abbbaff989993c4fc87513266b6863ac11816f030f5affa250385c27600b43e5111e91078f4d861e5b7c48cf98d0ae156756e1ffd386f784c4c6a7e12ce365c54a33f99f1ce0bd5476c0ebec018ef423dfb4cf3967f66f1ac9b0eb5abc2f67325185f5387f912e10443e940aac1e5f81015db5d7e6e91e95449d95046cef45e2b4f788ea14a58b50c8c394d0651a06568e63b62be01e3a8af53b477a3d1fd67903d2187c67cf8a06f0fc0a284a6138be0155d50e7a262ff19a7c1f77719e4fcfd93a1deb8ebfd90fe9f24fd4839889b650a06de94156f4376494577e3d563b4414e434a787d4922cc7c7ee1c7b1b987fce8c58b2036dd66bce2b962bfac05f395b893274f58077c535b42a6aa96223e4123b851f5f1416de8db384c4640f03700160952f04ad491163345a258dfdef02e5b2e5b494bd40a04b2516296d292b803606984e9bed1070a6ba508dfbd3bff79a5a1b0c72939ae9b46102ce9e3cfde53ac2331cbcbaa8479ba178cd36e0f8212dceba3523b9166b4f86e42ac89828388d39631bcef5836d242c0ab21fe8275debb7a9fdb158169768eb6b906e259b0797549aa454c7979930ada998b0459ee98cae92acc98dcc978e9d0a3a0369f3c9e3e30e3616ff79f5933355f6373b810336b995d8fd4dea8132c68ff69cef39f447185f96d4eea00b4aec63b9d28ada67dc7aa6ed6a4e8c9c791a621cb3a34c3c709875151445535a783a36ed2be0075cadcd763f3b5f20b24428d2c3b0836a49382e059d4e73511e1f67ddf10c8a8cf962c0983ee0b068b79996f069bf44759d2e5fbd98ceb429a2324bd3f9bbae79d421b5fd0b3e9578200a7087180218cbcd36a6b751a3d05169df41d378d5a9d4558557c0f57d1b8fac69b8e271611375c610cd97b5090cbd83423e478596eb9149c01573550e7bed9e54174ad8743039f3e65544d41c03ed61e96401946f1b5466bf1e2b86c85304b3c7ed32872694dfdd04114cd3f4c1db6767eb7690a0abd5d6bf2d2a713d9fc141cae0e71c7467736fe7258d43dbc1e8c92a4cbf3bff0f613647c6024dc670aa8928dea9bfa336a779aab59921f8a4ba42c994a0a09dc88b4ef20366d9fb688bcb6352e8f97d513ffbeb852047fd2af4d3c852f812b1f92530d7463592510437824e061401adde3c41c474d5ba370cc1a2727431dac6eb1a9b0f666f2bd9297ff6f0f5b11dec04e185f5d612e6a881cf863836987e9c40e62843c4996d80e4e32b91c504d4b759fad75c8698e2375ed0e409fdcaa83c3c23c4f95eab685c223722b2001f0af9234619f63e19c13b8a907a4e6d7743d239ba828b4e3a47320a471577ffbeb646553b011907df11f7700a02e43224b694ed623dd4777cf4436cd65a110db03aa20ee5652f2c0cde388820947fff404c8db260349738572e18559064bae7a30ec8f8e2841e1cb1239744e974284df8b1d25b447bc864da47615daf7183e14f6964278cb102553abc9d2f393fe6170696c2c8f2d4b3c95e5ecdff511f1d4f1d4f53b33ffa7b1810e53e2cd091e9bf9b6705664f676a82b4bdde10233ec126f8898d2a9838671a93c54081ae9bfbb8da4f9ba9c4309503cb635e938b5683202abb8901630606b3201841c19ea922ba12af6a05ca1e2100697b1fd8f34f6375095c9db579a8035b42ff5263bb80573d923d7125a0a08d96e3c16a7458e0a81566738e142ed7263bb21675b49099843af9c598bc552136afe844385cee81cf05d3ac9e33a334e84bf36a5d8a0f2d0a892883d85cb6f87d2d9dc70efc1d3d880b74c8ed513896084e56381b34ec004087a9b61649b4e241af871d56f56b90ec4e4befe186569c47a01a101280c472c5728288f545fc6d8f49a6e7a5cbafc3f625e08941be23dd92cbc2596656e4f96a703e766c36f588d89b2d10cfd5edfc69a6543b43c663b4f35c55010fcd3a9555dc0df9ff7a1373aeb5f5564ea498795bcea34f3f4b0fd72eca4b877b98838ed6aea3ab5fa3a96b817666639a90f719934186234da488c0a055fa6cabc09b701e7fedcd71346b8c34956efdc416c844da4413446b9edccc345740a7d3dafa4ca3e8db53b482d0e2cad9e796984f61096e201d2c0eff9c9f684dd8e86f7917b689841afd8041aece299cb4c1e209606150b506ba7b9a8676b479b5bb1a257887aa1e0822c0ac879d6a1c143b42520e797101cd8c3438e72e596995e0434431f720261d0b9e604226a495cee9c84e195d01892811a72cc6b18f86bd2d19019c1c076830a3c98aa77b7daa65b30271c5b46698f2866bb40c22a91d5c6918e82e6fae79fa2fa456b0956f5113d0dd4670fe11899b0b52d1be064a476dbf50f062d1c092099a08d8cfd14c1ceafe007997b856ff1a5461e2778bac7d18fa31deaebc363fbfb4482d3a8c4c034578aeca700dac51814c4c94036f11873390da23f3c5afc3834f3a12cf800d851a82838180268d08b134360ffbfb77a114d4512917b68d0c740fed5078f89b94090048e6a4209859ad0ad3b979c65752aeb361dad6e01cebda01d6db95a61aa99cafae10dd740aa10742b52cb3d481035a0e1cb33fd536b0be228b148bc2757156da6ecbdd203b5a202c5ba26649b47d730705eca1f18595cd4b18b4276364236c5e4ffbeaa828ce62f8239fc41d8ff2d48aeeb01cae609c91bfd5065cd84376b4a14e490e8f4b71484d6304a8ad1b59b8cb0972ceabadcc3c78b8070e311327c56b6366ca5aa4dfa466c5900ccc98d86d51f0a2384888700427fa7d82502fc0a8b0afce52b3fd099772f603c1136f87ea772d92aaaf79ea1c991656221e7a43e8d0204a666e8e89bddb951e03bcb245420044a3eda3791c3a4972306d42c046d74bf7d912ba422a7b9541373ceb87a239b9d898139eeedcf31314630ca9cc0a5eee1ff72fbfa19cc2fac2fd2e2463a315608411cd527a7f10910c40cefafe195de108077138cd05a25930a0aa799165ce11593191a3b8e58456ba7abf54e33654a358fc4f66974e9627aa9c2deaf4e53625aecd530b4754f7935a415ac77a1e0aa100da6d824dd41945aec34c38fea3c748f672946c57b569547c5fb6dbc41dcd820b4829746e9145497509048be3184f1758f9c23c600230b697f2a95683a3f0cb58a44f8c3e6084bc71d98d74179a5f32d77a3cedefae8688b8e50ad9c8f873ad36f81764317e5b77434545ad6dc3e4167fc0abc70341b8c3ffaa7ad5f0615f4d5a4551d81011de7a47f2d7817b5d3196e93eaa5239fe1cff3f145938be74f603ab2e73fa621571ce52c1bf09aab50e4ee71737a803fd01b0a2ee57f956bcbc40d95637599c66203be570bf9794df66d9c5c43b4ad11eef1f68553bd6c924173e3b93ea8ba0ede618843f2dc61df0410ce6c64b134d7cbe8216d2dad05fe457ddeadc1a2b275a857e4c6d33e6b609c8100fb6d7d77fea4fc51171ec8c1748abbacc44895df7af0cdc29923bb19efb93bb1b7d6aa7b8601505c9c1a44deb1afb77c017a341383cc7fd72d1fae5cbf7a02b69ffabdbb65f4c5b1ce0a52e86c209054945e38919606580391d5548a0c786bf99b76039508b25fb4f4bea7a44a551f2c90a75915c5ddcc6d3ceb2235ca8230257328fa3ced661482f181b97009e413733dff1c0daa992cd80341dac75908b968e9f3ab953f8cc5fc8747c26d19962c4ae4711a65033e4dc0ea63450e7f76ccada5564d11dad49f149e93fa9d188f37faef1f2dfbe5ed71fe83cc6fea88c584965bb760cba7a5e94783ec997b30178ea0fd2576383dee0ce975da80052817e965f12fb79579991439e1a4773efff8f0f38018a211288b727e674713c58dbb201a2442f79dfd60c8a0bf2cbe48becb3223e2d4ab9f7fcc6da6114783d820b576ff4a4ff37080a32804163d1b1825429388b96e3a9e0af4ac22c5d7ae0bfad0042d095d3a4e242b27d90097c0bc7302c96b32fc446b53d66fbd011a875fd32e697a202e01b08ee7b222cff76854962609bc1b9ceb33325d61e79834cba463db807486828215f96ae8148a96b3400d2244cb25bf27d1c68c65cdb6411640f73d04ca467f7665c96d6f35eafcd81b4898330e055a6dc080bf87ab50782af9beca9af8ba218843ba759768e8e23a736baa6ad6dfae1e87760b70689a1c14b3392ce66fbab99d0e88803ddd3bead6c090140b482d7cc987c589bce7a927512678dc7d86dfaed6c40de132e4f5d2acc90512f7dc1c4fc592c9c064b041dc599ef5a17f78b810b03fe391cfdae50cc203d18947f9f411b58037d2a91a11bc9f06af7f014ea95960b29b9521fb444165090243d8191b6525395d3167e8320cd6a58f4ec5bd5936b30019ad681d5e9a5f1c32a2bbcea6881d7b974b464787754633d86953fab9b1928b35a1de18fc34a095569555bf145b7489046f13711bfb9f18c92d18c4162985c830b3fcb91e2509e15f5a196ee8c91db970048487ff5cdf08f245c2d05b2342bd845a328167423830b48916f992be819d69d54c49cf80e03f79214f264545f152e83b7914b804bdfc0cec6e95f73e5bf46f08474ab26a69fbab57583d87d93e072a3ad8b11a06d5978b137ef612ea5fd7e39dc6f9b87a2ee1c4667b788369df657e36c0d262c9250e049ceff6078f90642d4b31d3ec76939e3fef421e8decec83e346861f527ede276c3c6c07932c391b0645a0017b1c6a34f331a81b4097d49ff2fde36314e9a338a1819fbf01d452ee84fcfeb47b1bcb8581b2a29268d730159f4335ed3ce8cf2d4c5ac149058431ca29ea2ff9774e386b51a1d1323ab8e56377379903595320ae5be4567df799e752cf5c9f463fce38ab5a05397f15bc7fdc6424a1347e1fd597d34acc0de40bb5cf3af8dd2cefece1bf60426082d0b7494a350617f6e9eb25e102de1ff17ec059626c17014573fd2d150505bfbacc871dd3eac3936042a775b52a958aa93ef3fed747bab6ec1dab4df8dc7435183b15c324e7b209d172c03fda6222b18e1c12418541d9ebfa445daf80c5549a31bbeaa934d316ebee39a0b5bae60e5668106ab2c0c89ae85b972c5ba485bdb2340e57be981ef363d908e9403af628f7a91dd23ee1f4e61c33874f1fdd18dc18068a1128c873e052939299836cd146f600dec6e9791783930e2050a107971259f4e273327b7677726e56f7771e41ebabaf0b22e6bed0d6280ea96e045c6ee20815b5c4b389d1bfb687edb16d9f5e54579d3d68f0380e47d07d4660530a8ad5f87fd85d7438c9e361ef5c49873edd2cebbd70e3862b1759fcdf3247831209dbed121399fa389c59286384b7d91aba48b0d81a57acb217815f50d2145f53ebc1f3c9f87e42089622c3c5760a6710e24b738d4b85c9cc6960dc1b1bf4a776f3330fd7f7e779928b128959268a834b79ca522bbeb1d42bb5a6438019f166bfd7b153b8dd4f88b46895f6fd9b83bef11302ed552788f34bfbacb754f3d8f811d831283b61c012a3de2a34b318199e39e7a1074bff42e020b23e93838ef6b7dee52601e7293bc8ae4219b2f7546d35dd62d6cf7d37eb61df1367cbb8736c91e8cc35d926ff48ac22d1ab01377e1e98bb48679a636b013ea7f9185be67b72934ab8c9774cd80f088f08c010afa0597f2fcaa8048deae472d51ace77c427c3e58b7319cdfc9959cf693fb408e8974351e5cb616b79772216738b19be0b216e3d5bc31e4b0d85d0cbc78209e68c81379f5ebefa137f373e2a07d9856fef167ba6d3a8dca6d54b7a6a446320d07ee175c6f7d7895705a13e402c81256d35310c3a56b7a9740554120836ff3fbc384792b569b988555653819c7cae71d1f0dc10f1f9e08f2a176ddd3b20cd50809f4c1c41d4da4a9fe97c93edb08656b514184cb1e2a763c014f4702b641bc3fde60f716a91a8c7802ae48f90adea2abe13ffc8a61798e877ed91605b8f6666254e6fac0253cc07a4180f9401af6f7e509cc57d03f5cfee157c24ad181b79d57b8295f34a1b318aa07dc4441d6ab8d3922ea791f8f138612ca5397f611d80b2c6e35c357496c0baf91cc0095439d0a14d28d2829c3d792d08c62af7b9b0b865bf9c526e5d6126b9598a349b02ed8706f40b72c6544b2bce8b5322c0c8068f1c5904162b2c8037d3355a315db33f7ae989773523a6feb3a9d96c9606176f369c706f0aa99f7b200f67ef4400fa3b5d887c7b7262a2024511c77d60896a74eaab559ec09adfd6f4e081948d0e939c40f7df25d4f0e254e147e070ca03d0440228d8525a790718a5b02cdbdd71e649f9192643527bf2e2fbc11a0de77842703ae804c7d56b7aa2617fdf686ada85c1f4960752877f89a7f04d11f472e28cebc5d21c744e0b22771bd712d1f298408559f847023851977288157ee349564af59f33a37a8a18818d009a173b8c9c6f5f90bbf54bf04f219243fd168b8844a5efede97cf0cd3f31b44eac84fba56e83a7a806dda1a183a95cb16fbacdd2a6b1b0210dce4dae6ffac4eb0ad96b43510586f9859dc4f2be0cddaf42e6c14b13047e91c320f45dcd0a98965c6156e8b6155064c62164812a78bdef79e35b10c530ca59f26721400b2bfbce5e366aa11c94d6ad2c3419d72456e98c3309e70d97e1ef52ea6b5937bfd85707d61ae0a2eea92e3fd3e3f34996b6d81179039d9a8e0302e862e32e5e71bdb43e095156b239b894f483f34abeac958b6d93caff8ab94ca592d182f4911ca2366afd075590c7d0bc528a3a3e75aa68a83e18a443017f59cf1a16aaab12067cc6add445c06fe36b3b31a54cb06e009d4a580681c8f6d0e3fc8fb74a70fd92e12005878752994b9490b57935b96dcce5692afdf40b9d9cf208dc4e9ff35a10902e67fcf5003efc59c1bcbb93fb95817bd3806af2687db57e8f64d4e476165016785e4b777a845a383b9b9c6f23f752807f157ae59abb1ca62e158cb1f49d52dafe021f653f7e135f057b6755fd727ff0233dd28969b924a61f934aa55989b723bdfb74122958b2c8d97f902422d2b501fb1eee4ae6b4d957d7468d917fee7e03c7279ecf2e6f74d45256ee494750b7ac86a1c4e7ee1632b1a616307260c7c899073e418cdb5d0af2cd598206135fa8ed937f170ecf653df19d1eadd8fdaaa21897d2c885e0ae40a3ea68103cedeff2ccdc525b3fe08c8244a7b44be8438e8166999633f18ef984e52607eb3fdfdb852eec5f7ebdbca12f0fad9bb44af11824d79edde81aa9c8eee5bdb77ae0551b56fa4fb5dbd582283be957722b8e8667b479ab8be0a1fa9bf6ea7015f82995148eb858297229e6491317856af73c0fe9e1cedb7af9ffe90f1fd9c0e9e9108e965b27e3fe2ebf2e6b402a5f57eddcb9c66e58aab5aa6bba761bda2dc0efd3e814ee518a9e5a6d49e8a93b7912325050555d0d4b61110ced618190cf01fd509ae968f390e1a1f677215dd58c71b30303e9079052e24e16a45829645abf17a35abae0650f0e840d7b77dcf6579f21ed03ca3af84d5c73e68e2dd9e3f575dc41ff6179e180d8605e51363275522a13605abb18e177992014e7bed4ddc652c55025af3d21df7e0b90c6bc2340435b4eb399fc89329fe6f5822f5011866666030b7c25b7bf4180b1d080b01592c0f20656b299a8bf31705007455cf668cbc453c0dd6bca1d61600da4bcfbdf15658bc5392af2d8de6edaf8665587deb74375b0301c281e0f953696a644f68bc9eab7213cc0e0cb2cb51650c8d231903ad0395909a34180368569f7469a211781a44e21a945ec86e2bc762f0879e3aa6e0bbe4cbf872008efef834981ed476c98957a70d8346398fef3fe0fce2547570548720d114c1d3ccbd98d1b2f2f024c3b59990af6f92a930cefbc4a239fae6d0bc4372465c234516fc522b0d351005b5a84a5828e92f02ec49a28d3477e4b60f8e0bac827fef10efd51c438e58fc08d1de718805b3ea27cd014f02decec74f6ab5e361a19353e246fe3cb73ef799e12ec0012d13654bc829da2278ad403647fbc9863db2462007d0f70aa8c86274296ab150b8f61df824543774f353564149742e1f1b75dc46cdd602e0646fd117a08bd0f97461d33061ed7d6fb9f7a12ff771aa5fa0217e87a75ba6dbc0c5cba357f465db04d5d88bfc0b47d43655429943b598b7463f95a86998f48436709176a25052e42371bb962f5542f170ff6d5c9ce8d14823d82207bee9dccb474eae9f9ec576416aae786715d01669629d71d2259ac058187875b5fb61c210053e2a42a554ac5ce81a04ed3e65fb59ddde423b2857d772cbd10e1298132148e05ccac3d6872bf5b4001ab39b88dadbfeae8ebfced90de46e4ec8314b0f5be3f275eb90462729fb403fc105e8c09efbf0fbba4700fe3c04a3dd0fa0abeb283e4805a208670627613b4ce931ee6d9d443978d66d538acbb764c4101339dce3e02c71ed74fac114a6ea034a551666df10a40e69c7ee36cc05f369680776d359aed37cec9d5e718de388f2954342bb12bb58103c2390752db05ed91ebd27fe8c711f502c81f30e8aa0dc13882edc54a631691fe6bee3cc1f7d4c3e4e3b5ba117d7d95699a54ddc07c05b7c266e25be23148f9df1cfeee0bfb36cb1eb2fca391b8b4f5aad11e96d4dd7fdfcafa0c4972fa43974caf098476dd327ff73c3881af85370a14d757afd900946e5c21477c06696172d363840b51006670f0be94325872ae7c339c1b2ee922333cc0b58ed6c7409a8610e407d697d4128688529b9e48fba4a662895cc38af03d1fb00a7dbbaf605534e8373a7fe13b6c5580600e93c76ed6e4fd6ab3ee204c0f8469ff1ee792fc1403602da03de6bb2c808f42b6a02b9f366b2da675376d57035fff71450188cde11c1cf310c517cd40ff2a8d8d3f5a0326d3efa4acdf29e5c596a29632d7220645a076e36610f9dac72ad61847130532c700b047d9656602dab9d4eec041f978f4e92a4b07469bf3394e49e2fc972f61813f8cc33534f7b556e3a3b28993140396aac8ae91b0f64a6dbe01599a8e8a2936c90995559197df44997a9cc1c571772cdacc9cd0d66702c443fd33e0608314ac6417ffd8ea4f5ce088dc867c6c459942df47169930ccbb7f73e4e7137d2d8a38cb6ec125bb64f4533811272b38d65f1060d2117b21fa54c41d60f4f539f481309ab6b0ada353b2ab5e45f58a5f9003c9a980bd189ac1c8f1c6b028093254493ee5060040d16f2e473bac0cf457f21766b0bf8202dbec1f14f6b02a9fe7e5adde132a2dfcd473e31a426a3508590913a014bb869ab82504eb698d9c12f35f014a12351610335b104a73a25881fba6accccad27ae9a600996bccf91ffafd53a8c7acb6e6d092cc2cd735e9f25f0a23c419934b5ccdf2c07c543259ee6af1374fa0635af0db723d5fd5045bdf515e98bf5cd93d29cd9ddaa50f014a1b0dc14e8da7fdcb6ea69adda5e78530826353996f42a86bf87bffa7c2170d5e3d5a46b29eb234929169e3b707e6025348ab61d63615b4e16ac2822b415debd1278211ae07f81f0d45460cd97391eb2b2f728f933860da7698f572ba03d71e4b85b6631d814060bcc1af7a4c8e4453f8324d5cf4016211242ab99ad128b8fc0fe5c7ecd687d2acb63cf1852a3cdaff90ab2ed62b6b569400af5999674f0075392b7101740a8af56ba8880f0940a57e583a8e0ed3abf567f0a7d1ffadd9ba01d70e1ae56fc605a8b5e55eb6733ba87e0517070516b9f19b77597b29045bd0e3ffb8c233d51ec776249edc36010f653c3161c32da878641e5065390c01e5e6662e0d63631cdc1d9cb9fc43a80a8571db977c377848cc038d57cc51f540efb3785ee40f7220153d51bc078a16ce7e061f0a247d29b5aebaa260e5e289b43ca95f0c8f818d3a3ed5e5981bc46e3b7a2e557b906d0b8070e4e47a212775bf95e114f89108a9dbec336425d3b8a57e4f27989d140d6e0980ba4d208041bd1e5414238ba6bb3991267e3a498c9c45b874ea12de916483abd591bc210bf25a100a31d9d3d2f32b50757eb57661c9d06fe11204396b25fc69ae62ad04f03774443212145a7c2405c2b29e557e239a8457bf799b6f2b51c36f4cc1d662b6b38ef4346c489889b53c568d5022f1eef0ea31a7ca3fbe6a22e34b077e3fff0d3ded5abd040492b63ba997e379d505278f39d6ac9d3f9cae7b43f517bb394be0b6767f2709b746d0caf16600540b6fe3883cda5eb093823dfd443083e4dd42fbc79f9a3b669b59f922ba814e1b2886fc228dfbef18e5f3c664db3212714eb391094a558dee70d86fb291aed53da1a3213fe1b240901718dd30184ed23384c2edd3fb92c55d144da03d2e617155168d0198058c058ca8d9f500fa07360669eab1bea18411b9ba7d5589f069fb46e82e0f041466377c8d33dbe6d712c1ae34a4de06e2004e7f468e2095014db4fd41940fe826d954ae9540e7c3439e6e41a38240890cc4d64853d15779adbc9c0cfa3f402a19bc9e3bc7fa082f760d5255a15c99708e928ecae13804599a58273c0c96177f4091a43e89f4918145a7d887ba0302319a513c712a71887e74b7b2ecfef3542e301b0eabb557aa69028c820474f4841a23031de1712ad6c2bf08488bbc93880e049e1d8ef7504efac9d24ba75d7916f00aba1ace895f45e1e64d9dccd7a3c353366f24d4ea3b8ad3b42d608c8a29427a88a491e346778d83ed841a4e529c73e3688282f7b2ef25e3f81a923ba72e9289fae1ac8865d4fcfcbb8645919780cedc6fce68682e35c05fa4e691b2625a419effc7dace48c0c5c16baff6bc10a629165b9e49ba5675712d0df3efa622d711af799ccff1e67e7864351cf8f4c11cedf97cccf4cc8c475fd6e584634472f803d9e12901cebee1db2af16cbac82df13cfb7b332761887b08c2039da6b4f05d2a5d978c52dc9f6a05087671c87629edadbf9e2dcf4e96f569252c124148ef85c310b6bed9a602c5a1b3e38722cfa7ee6008e6a757f11f0c0f838e83d02846e2a5952ec57f9916f09c3d60620a612065e4696d6ce1788f8ba260693e9565bcebdf540e38991f8aac9088b7d73fc7a0aa3693d8678ff8fc874581c562260696f7085a8e26348281feec56a06d5cb1b452f11b87c6103778724e8ff6b75088bd2da82956b4a6a67ddfec60c6134774140288f2d0d8f2a0514a962ccc5ecef9b7ea45f9d1c05d46def14f4074df66e9c6fadb75649a5ce2e37b6b735d596274ba8e2522bff1b3da375969b900c81855bc96949fc5f3941c1a4644400b6121a0629a00607183b638abec36e6fff0172f8e9cbeba6c71291cd034defc0a963d746ff38a8b1dfe104657af3f0c1d778bbedf68d8e67ca590b988ff9c6cffd901c4ffea930077ff471255eddfd0263fad5eaa8f3ec195211d2305977397f19d3e041cef7b91c9dd4bc8e91df842171a4b7550408b13b9362af459d99aa7f2f381844eb75aac6d5e30b2ca1c67736c8147315b4b9149beeacff21d0db02bc8fa393f41fe64426e2595b30ca7d56bdc3de0fc58026a9be046d7e655d1cdc5c33354e7899233730b48a4e9874e1981f9e51fd3f1fcc77daee019d5c8dce23b689f047957edc7cb2793d6a905733bf2efd24f287ef3b1df6b5bf1cee85044c1a4536b765b2930d5471b997835271dd70915e7db34102a5fc2d3ae635d24d9c3dd2b88767c74002df8fd8c452615d51ca02262b16226d8d13787dc662aede6da0bffe20fd9a8366a862fe08943a0719799ca1d3a96792ba40c9df0cb2040f1501907f62adcd9664cbd34482d53c5dfd3ef71eb0005b419f0b651c60aa946b468770038ea7e2a451dca9a4c7822c0a0b7a07be6686668d00621611f286ad653b9040175d601119f016b44ff83eb0cff518299eea37545347af090db5d8f4df142103a88e5a12807271e01239f5f7d2d6595b51aadea36f0dd92639db630c1c0f85c8e9878de1f0a080c70314e00c95fad9138fea39bf143ae488a3ae1b8bae7c7f0419ef9634b7ed0f609639ea7075dd065cc2aac88a2ffbdbedb4f1601d57d28fac0fd3bb1f7be2e5d660c49d97d27db5cee5b27ad3213c53563a6dcc3612dcbec188dbb7eda307bc0e1e9e0d3366f7b2aee33e1be7c4e3ac7aa457e0b8886d658ccb5f0f1d64b926401537bf3643f4aa03227bbb15a834e81308aa5db7ed647d05598d975ffba848ef8bd6a267514a8c5070de6a02e94fe99f021497eb04ad5331a2605108f332a6013031950c3b001e7675052d4e3ea53abd227252c7209840f4f99203b79aeb0b0dfcc838e182a8bc99fc9853a43c97f73cc24ac2e02c2f842860fa7d9c53710a0ee4fb28d435662b3cf0c2728baf0b6617f1ba25a384e48d2ac9c7f8d04173c6cc123346af97e7ed0cb65616f10aedbf873489f756466d9d25e559658e8a58fcce78fb0f19ef03b99c9f8c5dd2c7200862162ad0360c217c6ad9e9ab38c9d961450690c2b188323565f4e6dd43dab1deec6f0877a4016254f040e1c6fc605ec9f58a8b38051cf8e060fd9098ee348d126d6797de3e90be33a01be9dfbad1d67093a0f5fac3ad724c85f44d16d1373e0fa3e1e453bc99d5a5689c220ff6a9f5f9fb9c18c7ac2abda337b54f75da563919a568737862f8c3cb61c36ebc3fbd61d46b350d0d71df87cc7099acb09a749a9249682a22bae944f99b3ed18bddca31884403ab68206c6294ca6372394631c539f14f32ac43af9f5bbf790203023020bab17eda9876521db5ea17b6e63dff9710145700db29fa0106134b2add5e0d7b2eb666c6698f42ef4c8e3cc1c0fc7156c338670dec1468cf8382bca18a0bb4e3c1bf2e2de58917bb897b682f0677edd60aa4b23aab8261f161a3d989a17ff7edbcccb71a0defff01e97d8929db920075707e6c662f66e5a5ba7494f29b955b23c7c1aafa0eed9bc50414fbe0e6bdc196a6d114c3f51ef994ca65723754c2e31336cf43b02dd90a7716934aa03c564dd17120eafdc38a42026b35cf2103fdcb9693ca7a07dfa385be165bb7842ab76dc9fe51338bc5b22536665b6868a5bb1203be5510dc1a4d0c04040ab6cb9a7eec4bb4f04755cd72c07ca472abdae00c1359481d80597972f71d563cf233c76be369acfd0b5d30dbd3f60017b280ea38559db7755e1051dd2a17eccbc4c5c0efdfe9ee127fedf39febad430d31bd282352f93bae32ffdeaa60748ac18091f4c87852bcf7078fbbcbfad857bf7503480cea9195ae47a99991fe52afbe445cabd2adfb9120d382b0d68c30d1074938a1ba1b37af191838367c7b35fdcd9a5a0126c40f96e485090e498b905608d25018372b48aafbe8b4f8aad1dcb4992734b1d709b1d6187e41090427c032b19040705ec4366b5959f861d7db3008114ef4b5ad12c023db10a97a53e5b8a11437450fcc06cc16bae35ea9d27b19a402d2995ff787f5ab72345203f0e770a043bf2fa3d621dd378537ef80cab22acb243312e50c8a0fbde4d64c11da63feffe5a16da0e65706137db89c65c371aff9d26f09fc16b56322e98e2ce5764664046ac0adc2365961a0e59351b1cf0aeef4bca6f96775dc97a4bb5f33fab2f03cb05fd054339f89ca02f29c0bfe4065a4d8f1a33f9d15a72624c4efc61b798f5d79f94682380cdb1ab1ace3c2fbaea45d32b626a393ab8c19e86d135cccb71029f3df6296e1889fc035a20f7c87e3ba8f085b5b5c6593c01a0804d31b9c4727ea0e05b809122a0befab8c659b5d9628c4e54edb8166dcf6f63716d7a985a8c2d3b9bc4efb9b5c2deb488c8dc942829fecef7cb0339cdcc5e0ea0b2838b4cd1ac228569dccf0051061fdc08c2c418a1af5689d992bda8d85ede7761cfe7f0b56fd3e15a27870db06dfc41af6b7ab51a700d136c3f4cfd8f6add8555648f74219bd4df22a4839d0a5bdafd9d5887f61f0248eb90f8e52cdc5bedbef3101a250c32a1aba68b44fe3b16851f2479a887df4bde8f577b63a86e64d5814f735b9b9e5be6fdc4cfa3bc845a5610f4c5a3b65d28d9a354a415d6d395917474d24e1b6a7a68fcdca28a3274473d2fcb7d6734f1fb6bc04b574171a3180bc971e9097becd3064c06bb200bb06b78f2d6246d58fbe8e577ca5b56374e1fc5319f9017a07febc2461124c057b21bd81be91d015399c4f6659cf65c9ae6df34e8b9ef3a8b9b9dc259a6907f048349f1e2dadbb81fbc44033ad277ed787b6e9a1c79aafa60ddc4a922ef6572e9706e41d4b63f953b68ab39607c5289e9af8526a2397384edbab3e5c49a9884bdf0ba1298dfc7c5c645ae874acada13c4b4002b3660c03cb104760bda51cdc3b7fb062361b734c47e0d39c1f042cf3e421e49a2e09b42919a8f25fb856c40432d059a61a8f59783b2b358f2e73c97158d608442a93fd5b33fa95a5ecbb4b25f5274370e35259d4d9679358e30565e477cd63a3c692b3b283e62cccd620d1b902e1a4400fba96d6404a138bfbad2c07d3d288a7404c44551e69e28746d6259d0ebd885a7f2ed5941787883ffe46a930cb8cb62b43da852f3651942867c34c62006e9174948d8a501e4bc6c90ff561bd29dead9dc0d0dad472f07ea4885ede5ffc332e24c7abe83f1c0c53ad3d0197e331b5304145fcb339c6e1a50a001ba24008a0615ebb6d03229abeee555cfa6881d26a87bebf3bf84c974a751261a8e697e993088f20d4b597b8374e1af749f56ad404bf04bb66fd8dfeaac6d86e5750738da8f1d41c0cc1558799ea2da70e40e83e1c0828ce8991c97c2702dbc3783e42f9423cf4024271e1c03ed8c764ca7aec57c24ec6fdf4428138f45a4b40fd7fccd12f9e8e1ec2c8d7cfa18605f3ccbfc96015e5a5778cbaa0c51d60b3ea6457467d8acae49dcf6afe2b7f9f872d913b6deaf9eb22e1b2dd4801273bce7f61730e81981fdcdd85e878ca3d4e8601339bcba0c183ec442cc90fe27a2dbafd4e1c791aff374b5326ba16880a16d98269abb731904dd1f8eb00aaea66bfef72d5252931d84cc01cfabde3bea854b5b145ddd37bdced843340e0679b6b4e7ed2fe318fd0cef76d160543722e0c3eac11f901ae15db25905dca7a17b81c6d51869fd12ea569fc4b072d217786b4b4d73bde4b9bd9425bc87b33d6b1911e6398673939aa2f15ac505b9a1ab029b8452dd0869f392daa28adc942272615ff2db16bcf084f01ec9fcc2f7f6a632b2bba8c468655e985a3b271c25952b7ba3a9142a23515947e79dc051e75d70f84249a4b15e53ab0db7671fc7d0ef947948b2a1b2acc5b018f4b8d08cafe6a3b7737e46342838d1f702e5cbbc74bb112359d8b8f34138863717dc062a9e4c804dc3b0836b1c341c5fc2b53497554b8878e8c81753b820601688326f26737d9b3c6a400a521c21d1d20957b78d01aece4196b731dd14a862add99cbce003b71811ecd1d9e43e4affa252035283e8b8a26fc31016366cd7c4ab57667ab5306bae436498188633964ea5556f12d762353af8157a9b09b8bddae4ad31f08979e1cb67706c8cb814rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootdpdk-18.11.9-lp151.3.8.1.src.rpmdpdk-any-docdpdk-doc    rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-1otherproviders(dpdk-any-doc)4.14.1_h^^.\mA@\I[["@[;e@Z@Zz@ZZ@ZZZH@Z\ZTZ@X6@WJaime Caamaño Ruiz Jaime Caamaño Ruiz Marco Varlese ndas@suse.deMarco Varlese marco.varlese@suse.comndas@suse.demsuchanek@suse.comndas@suse.dendas@suse.dendas@suse.dendas@suse.demarco.varlese@suse.demarco.varlese@suse.dendas@suse.demarco.varlese@suse.demarco.varlese@suse.demarco.varlese@suse.demchandras@suse.dendas@suse.demarco.varlese@suse.commarco.varlese@suse.comndas@suse.dendas@suse.demchandras@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.demarco.varlese@suse.commarco.varlese@suse.commvarlese@suse.commchandras@suse.demchandras@suse.demchandras@suse.dendas@suse.dendas@suse.dendas@suse.demchandras@suse.dendas@suse.dendas@suse.demchandras@suse.dendas@suse.demchandras@suse.dendas@suse.demchandras@suse.dendas@suse.demchandras@suse.demchandras@suse.dendas@suse.denirmoy.das@suse.com- Update to 18.11.9. For a list of fixes check: * https://doc.dpdk.org/guides-18.11/rel_notes/release_18_11.html#fixes - Add patches to fix vulnerability where malicious guest can harm the host using vhost crypto, this includes executing code in host (VM Escape), reading host application memory space to guest and causing partially denial of service in the host (CVE-2020-14374,CVE-2020-14375,CVE-2020-14376, CVE-2020-14377,CVE-2020-14378bsc#1176590): * 0001-vhost-crypto-fix-pool-allocation.patch * 0002-vhost-crypto-fix-incorrect-descriptor-deduction.patch * 0003-vhost-crypto-fix-missed-request-check-for-copy-mode.patch * 0004-vhost-crypto-fix-incorrect-write-back-source.patch * 0005-vhost-crypto-fix-data-length-check.patch * 0006-vhost-crypto-fix-possible-TOCTOU-attack.patch - Removed patches that no longer apply to the code base: * 0001-vhost-fix-possible-denial-of-service-on-SET_VRING_NU.patch * 0003-vhost-crypto-validate-keys-lengths.patch * 0001-vhost-check-log-mmap-offset-and-size-overflow.patch * 0002-vhost-fix-possible-denial-of-service-by-leaking-FDs.patch * 0002-vhost-fix-vring-index-check.patch- Add patches to fix vulnerability where malicious guest/container can cause resource leak resulting a Denial-of-Service, or memory corruption and crash, or information leak in vhost-user backend application (bsc#1171477, CVE-2020-10722, CVE-2020-10723, CVE-2020-10724, CVE-2020-10725, CVE-2020-10726). * 0001-vhost-check-log-mmap-offset-and-size-overflow.patch * 0002-vhost-fix-vring-index-check.patch * 0003-vhost-crypto-validate-keys-lengths.patch - Change constraint to ssse3 to fix build issues on x86_64 and i586- Add version to the PMD driver directory to avoid loading previous version drivers (bsc#1157179). - Update to 18.11.3 (bsc#1156146). For a list of fixes check: * https://doc.dpdk.org/guides-18.11/rel_notes/release_18_11.html#fixes - Add patches to fix vulnerability where malicious container can trigger a denial of service (CVE-2019-14818, bsc#1156146) * 0001-vhost-fix-possible-denial-of-service-on-SET_VRING_NU.patch * 0002-vhost-fix-possible-denial-of-service-by-leaking-FDs.patch - Changed to multibuild (bsc#1151455).- Added 0002-fix-cpu-compatibility.patch to address issue with older CPUs (bsc#1125961)- Update to 18.11; some of the changes are(fate#325916, fate#325951 fate#326025, fate#326992): * Added support for using externally allocated memory in DPDK. * Added check for ensuring allocated memory is addressable by devices. * Updated the C11 memory model version of the ring library. * Added NXP CAAM JR PMD. * Added support for GEN3 devices to Intel QAT driver. * Added Distributed Software Eventdev PMD. * Updated KNI kernel module, rte_kni library, and KNI sample application. * Add a new sample application for vDPA. * Updated mlx5 driver. * * Improved security of PMD to prevent the NIC from getting stuck when the application misbehaves. * * Reworked flow engine to supported e-switch flow rules (transfer attribute). * * Added support for header re-write(L2-L4), VXLAN encap/decap, count, match on TCP flags and multiple flow groups with e-switch flow rules. * * Added support for match on metadata, VXLAN and MPLS encap/decap with flow rules. * * Added support for RTE_ETH_DEV_CLOSE_REMOVE flag to provide better support for representors. * * Added support for meson build. * * Fixed build issue with PPC. * * Added support for BlueField VF. * * Added support for externally allocated static memory for DMA. all the changes can be viwed in http://doc.dpdk.org/guides/rel_notes/release_18_11.html [- 0001-enic-fix-Type-punning-and-strict-aliasing-warning.patch, - - 0002-fix-cpu-compatibility.patch]- Fixed a problem with ABI compatibility; API/ABI compatibility is guaranteed by DPDK upstream community across subsequent bug-fix releases. However, the .spec file broke it by defining the wrong version which included also the bug-fix release number. - Fixed a naming issue with library: did not reflect soname- Update to 17.11.4 stable release. Some of the fixes include: * app/testpmd: fix buffer leak in TM command, fix DCB config, fix VLAN TCI mask set error for FDIR * bus/dpaa: fix buffer offset setting in FMAN, fix build, fix phandle support for Linux 4.16 * doc: fix bonding command in testpmd, update qede management firmware guide * eal: fix bitmap documentation, fix return codes on thread naming failure, fix invalid syntax in interrupts, fix uninitialized value * eventdev: add event buffer flush in Rx adapter, fix internal port logic in Rx adapter, fix missing update to Rx adaper WRR position, fix port in Rx adapter internal function, fix Rx SW adapter stop * hash: fix a multi-writer race condition, fix doxygen of return values, fix key slot size accuracy, fix multiwriter lock memory allocation * kni:fix build with gcc 8.1, fix crash with null name * vhost: fix missing increment of log cache count, flush IOTLB cache on new mem table handling, improve dirty pages logging performance, release locks on RARP packet failure, retranslate vring addr when memory table changes * PMD drivers: various fixes fro bnxt, dpaa2, mlx5 - Fixed a syntax error affecting csh environment configuration(bsc#1102310)- do proper cpu compatibility test(bsc#1099474) [+ 0002-fix-cpu-compatibility.patch] - change %doc to %license- workaround kernelrelease error- Sync dpdk for SLE15 with SLE12-SP4(fate#324872)- use gcc-7 to remove EXTRA_CFLAGS hack that was required for gcc-6 in the previous change(bsc#1090668)- Remove fstack-clash-protection from EXTRA_CFLAGS as gcc-6 cant recognize it(bsc#1090668)- Update to 17.11.2 restrict untrusted guest to misuse virtio to corrupt host application(ovs-dpdk) memory which can lead all VM to lose connectivity(CVE-2018-1059,bsc#1089638). Changes: * Add deprecation notice for rte_vhost_gpa_to_vva() * Patch vhost-net and vhost-scsi examples * Fixes checkpatch warnings * Take VIRTIO_RING_F_EVENT_IDX into account when ring size (Tiwei) * Fix next chuncks translation access rights in Rx paths (Tiwei) * vhost: fix indirect descriptors table translation size * vhost: check all range is mapped when translating GPAs * vhost: introduce safe API for GPA translation * vhost: ensure all range is mapped when translating QVAs * vhost: add support for non-contiguous indirect descs tables * vhost: handle virtually non-contiguous buffers in Tx * vhost: handle virtually non-contiguous buffers in Rx * vhost: handle virtually non-contiguous buffers in Rx-mrg * examples/vhost: move to safe GPA translation API * examples/vhost_scsi: move to safe GPA translation API * vhost/crypto: move to safe GPA translation API * vhost: deprecate unsafe GPA translation API- The vm_power example does not work for ppc64le since it uses the IXGBE PMD driver which is not available for that platform(bsc#1082154): * Disable CONFIG_RTE_LIBRTE_POWER for the sample application; * Disable CONFIG_RTE_LIBRTE_IXGBE_PMD for the actual PMD driver;- Upgraded to latest stable release 17.11.1 (LTS): some of the fixes include: * location changes of the GPL and LGPL licenses; * net/mlx4: - fix drop flow resources leak * net/bnxt: - double increment of idx during Tx ring alloc - group info usage - check for ether type - size of Tx ring in HW - number of pools for RSS - return code in MAC address set - link speed setting with autoneg off * net/nfp: - MTU settings - jumbo settings - CRC strip check behaviour * net/sfc: - multicast address list copy memory leak - DMA memory leak after kvarg processing failure - fix label name to be consistent * net/i40e: - VLAN offload setting issue - FDIR input set conflict - FDIR rule confiliction issue - setting MAC address of VF - flow director Rx resource defect - warn when writing global registers - multiple driver support - interrupt conflict with multi-driver - Rx interrupt - check multi-driver option parsing - flow director filter * net/qede: - enable LRO over tunnels - reject config with no Rx queue - check tunnel L3 header - tunnel header size in Tx BD configuration - VF LRO tunnel configuration * net/mlx5: - Tx checksum offloads - un-supported RSS hash fields use - device operation type - pedantic compilation - fix pedantic compilation - flow item validation - flow RSS configuration - UAR remapping on non configured queues - secondary process verification - port stop by verify flows are still present - flow priority on queue action- Enable(disabled by default) MLX4 and MLX5 pmd(fate#322609)- Upgraded to latest major 17.11(fate#322609); some of the fixes include: * Extended port_id range from uint8_t to uint16_t * Added a new driver for Marvell Armada 7k/8k devices * Updated mlx4 driver * Updated mlx5 driver * Added SoftNIC PMD * Added support for NXP DPAA Devices * Updated support for Cavium OCTEONTX Device * Added PF support to the Netronome NFP PMD * Updated bnxt PMD * Added bus agnostic functions to cryptodev for PMD initialization * Updated QAT crypto PMD * Updated the AESNI MB PMD * Updated the OpenSSL PMD * Added NXP DPAA SEC crypto PMD * Add new benchmarking mode to dpdk-test-crypto-perf application * Added IOMMU support to libvhost-user * Added the Generic Segmentation Offload Library * Added the Flow Classification Library - Removed 0002-kni-fix-build-on-SLE12-SP3.patch since patch merged upstream and available in 17.11- Added missing supported broadcom chipset family Broadcom NetXtreme II BCM57810- Upgraded to latest stable 17.08.1; some of the fixes include: * net/qede: disable per-VF Tx switching feature * revert "net/virtio: flush Rx queues on start" * various fixes for mlx5 PMD drivers * various fixes for bnxt PMD drivers * various fixes for i40e PMD drivers * various fixes for crypto PMD drivers * testpmd: fix for non-consecutive ports * ethdev: fix ABI version- Add missing libelf-devel dependency- Updated to 17.08(bsc#1050250, bsc#1046598, fate#322913, fate#322608) Some of the new features are listed below: * Increase minimum x86 ISA version to SSE4.2 * Added Fail-Safe PMD * Added support for generic flow API (rte_flow) on igb NICs * Added support for generic flow API (rte_flow) on enic * Added support for Chelsio T6 family of adapters * Added latency and performance improvements for cxgbe * Updated mlx5 driver * Added NXP DPAA2 Eventdev PMD * Added dpdk-test-eventdev test application * from 17.05: * Added mbuf raw free API * Added free Tx mbuf on demand API * Added VFIO hotplug support * Added PowerPC support for i40e and its vector PMD * Added VF max bandwidth setting in i40e * Added LiquidIO network PMD * Added support for NXP DPAA2 Network PMD * Added support for NXP DPAA2 - FSLMC bus * Added support for the Wind River Systems AVP PMD * Added vmxnet3 version 3 support * Added MTU feature support to Virtio and Vhost * Added event driven programming model library (rte_eventdev) * Added Software Eventdev PMD * Added Cavium OCTEONTX Eventdev PMD * Added NXP DPAA2 SEC crypto PMD * from 17.02: * Added generic EAL API for I/O device memory read/write operations * Added VF Daemon (VFD) for i40e. - EXPERIMENTAL * Added generic flow API (rte_flow) * Added APIs for MACsec offload support to the ixgbe PMD * Added Solarflare libefx-based network PMD. * Added support for Mellanox ConnectX-5 adapters (mlx5) * Added ARMv8 crypto PMD * Added crypto performance test application * more details can be found in http://dpdk.org/doc/guides/rel_notes/release_17_08.html http://dpdk.org/doc/guides/rel_notes/release_17_05.html http://dpdk.org/doc/guides/rel_notes/release_17_02.html [-0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch - 0003-kni-define-HAVE_TRANS_START_HELPER-for-SLES12SP3.patch - 0004-net-thunderx-sync-mailbox-definitions-with-Linux-PF-.patch - 0005-kni-fix-build-with-gcc-7.1.patch - 0006-kni-fix-ethtool-build-with-kernel-4.11.patch - 0007-igb_uio-switch-to-new-irq-function-for-MSI-X.patch] - Use updated patch to enable HAVE_TRANS_START_HELPER for SLE12SP3(bsc#1031705). [+ 0002-kni-fix-build-on-SLE12-SP3.patch]- Enabled CONFIG_RTE_MAJOR_ABI: libs SONAME equal the DPDK release version- Split libs into a subpackage to provide multiple installable versions on same sytem- Do not use obsolete pci_enable_msix for() kernel > 4.8 [+0006-kni-fix-ethtool-build-with-kernel-4.11.patch, +0007-igb_uio-switch-to-new-irq-function-for-MSI-X.patch]- Updated to 16.11.2 which provide bug fixes as below(fate#321541): * mbuf: fix missing includes in exported header * eal: fix debug macro redefinition * net/nfp: fix packet/data length conversion * net/i40e: fix setup when bulk is disabled * pci: fix device registration on FreeBSD * net/i40e: ensure vector mode is not used with QinQ * nic_uio: fix device binding at boot * net/bnx2x: fix transmit queue free threshold * net/vmxnet3: fix queue size changes * kni: fix build with kernel 4.11 * kni: fix possible memory leak * kni: fix crash caused by freeing mempool * net/i40e: fix allocation check * net/virtio: fix crash when closing twice * net/ixgbevf: set xstats id values * net/i40e: fix hash input set on X722 * eal/linux: fix build with glibc 2.25 * net/i40e: fix incorrect packet index reference * net/thunderx: fix 32-bit build * net/thunderx: fix build on FreeBSD * net/thunderx: fix deadlock in Rx path * net/ixgbe: fix setting MTU on stopped device * vfio: fix secondary process start * net/virtio-user: fix address on 32-bit system * net/virtio: fix MSI-X for modern devices * net/virtio: fix link status always down * net/ixgbe: fix multi-queue mode check in SRIOV mode * net/i40e/base: fix potential out of bound array access * vhost: fix false sharing * net/thunderx: fix stats access out of bounds * net/virtio: disable LSC interrupt if MSIX not enabled * net/i40e: fix mbuf alloc failed counter * net: fix stripped VLAN flag for offload emulation * vfio: fix disabling INTx * net/igb: fix VF MAC address setting * net/igb: fix VF MAC address setting * net/ixgbe: fix VF Rx mode for allmulticast disabled * net/bonding: fix updating slave link status * net/virtio-user: fix overflow * net/i40e: fix TC bitmap of VEB * net/ixgbe/base: fix build error * net/ixgbe: fix Rx queue blocking issue * net/ixgbe: fix all queues drop setting of DCB * net/ixgbe: fix TC bandwidth setting more details can be found in http://dpdk.org/ml/archives/stable/2017-May/001809.html [- 0005-kni-fix-build-with-kernel-4.11.patch] - use default gcc which is now gcc7 (bsc#1042372) [+0005-kni-fix-build-with-gcc-7.1.patch]- Add upstream patch to fix building against linux kernel 4.11 [+0005-kni-fix-build-with-kernel-4.11.patch]- sync mailbox definitions with Linux PF driver(bsc#1035993) [+0004-net-thunderx-sync-mailbox-definitions-with-Linux-PF-.patch]- Enable HAVE_TRANS_START_HELPER for SLE12SP3(bsc#1031705). [+0003-kni-define-HAVE_TRANS_START_HELPER-for-SLES12SP3.patch]- Fix dpdk KMP build fails(bsc#1031750) - enable igb_uio kernel module(fate#322394) - update kernel version for SLES12SP3 4.4.59 for bsc#1031705 [*0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch]- Enable HAVE_VF_VLAN_PROTO for SLE12SP3(bsc#1031705). [+0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch]- Disable dpdk-kmp package for ix86.- Upgrade to LTS release of 16.11 which contains fixes below(fate#321541): * app/test: fix symmetric session free in crypto perf tests * app/testpmd: fix check for invalid ports * app/testpmd: fix static build link ordering * crypto/aesni_gcm: fix IV size in capabilities * crypto/aesni_gcm: fix J0 padding bytes * crypto/aesni_mb: fix incorrect crypto session * crypto/openssl: fix extra bytes written at end of data * crypto/openssl: fix indentation in guide * crypto/qat: fix IV size in capabilities * crypto/qat: fix to avoid buffer overwrite in OOP case * cryptodev: fix crash on null dereference * cryptodev: fix loop in device query * devargs: reset driver name pointer on parsing failure * drivers/crypto: fix different auth/cipher keys * ethdev: check maximum number of queues for statistics * ethdev: fix extended statistics name index * ethdev: fix port data mismatched in multiple process model * ethdev: fix port lookup if none * ethdev: remove invalid function from version map * examples/ethtool: fix driver information * examples/ethtool: fix querying non-PCI devices * examples/ip_pipeline: fix coremask limitation * examples/ip_pipeline: fix parsing of pass-through pipeline * examples/l2fwd-crypto: fix overflow * examples/vhost: fix calculation of mbuf count * examples/vhost: fix lcore initialization * mempool: fix API documentation * mempool: fix stack handler dequeue * net/af_packet: fix fd use after free * net/bnx2x: fix Rx mode configuration * net/cxgbe/base: initialize variable before reading EEPROM * net/cxgbe: fix parenthesis on bitwise operation * net/ena: fix setting host attributes * net/enic: fix hardcoding of some flow director masks * net/enic: fix memory leak with oversized Tx packets * net/enic: remove unnecessary function parameter attributes * net/i40e: enable auto link update for 25G * net/i40e: fix Rx checksum flag * net/i40e: fix TC bandwidth definition * net/i40e: fix VF reset flow * net/i40e: fix checksum flag in x86 vector Rx * net/i40e: fix crash in close * net/i40e: fix deletion of all macvlan filters * net/i40e: fix ethertype filter on X722 * net/i40e: fix link update delay * net/i40e: fix logging for Tx free threshold check * net/i40e: fix segment number in reassemble process * net/i40e: fix wrong return value when handling PF message * net/i40e: fix xstats value mapping * net/i40evf: fix casting between structs * net/i40evf: fix reporting of imissed packets * net/ixgbe: fix blocked interrupts * net/ixgbe: fix received packets number for ARM * net/ixgbe: fix received packets number for ARM NEON * net/ixgbevf: fix max packet length * net/mlx5: fix RSS hash result for flows * net/mlx5: fix Rx packet validation and type * net/mlx5: fix Tx doorbell * net/mlx5: fix endianness in Tx completion queue * net/mlx5: fix inconsistent link status * net/mlx5: fix leak when starvation occurs * net/mlx5: fix link status query * net/mlx5: fix memory leak when parsing device params * net/mlx5: fix missing inline attributes * net/mlx5: fix updating total length of multi-packet send * net/mlx: fix IPv4 and IPv6 packet type * net/nfp: fix VLAN offload flags check * net/nfp: fix typo in Tx offload capabilities * net/pcap: fix timestamps in output pcap file * net/qede/base: fix FreeBSD build * net/qede: add vendor/device id info * net/qede: fix PF fastpath status block index * net/qede: fix filtering code * net/qede: fix function declaration * net/qede: fix per queue statisitics * net/qede: fix resource leak * net/vhost: fix socket file deleted on stop * net/vhost: fix unix socket not removed as closing * net/virtio-user: fix not properly reset device * net/virtio-user: fix wrongly get/set features * net/virtio: fix build without virtio-user * net/virtio: fix crash when number of virtio devices > 1 * net/virtio: fix multiple process support * net/virtio: fix performance regression due to TSO * net/virtio: fix rewriting LSC flag * net/virtio: fix wrong Rx/Tx method for secondary process * net/virtio: optimize header reset on any layout * net/virtio: store IO port info locally * net/virtio: store PCI operators pointer locally * net/vmxnet3: fix Rx deadlock * pci: fix check of mknod * pmdinfogen: fix endianness with cross-compilation * pmdinfogen: fix null dereference * sched: fix crash when freeing port * usertools: fix active interface detection when binding * vdev: fix detaching with alias * vfio: fix file descriptor leak in multi-process * vhost: allow many vhost-user ports * vhost: do not GSO when no header is present * vhost: fix dead loop in enqueue path * vhost: fix guest/host physical address mapping * vhost: fix long stall of negotiation * vhost: fix memory leak- Fix broken dpdk-pmd/* soft links(bsc#1026804).- Do not disable cryptodev as EXPREMENTAL tag has been removed. - Remove CONFIG_RTE_LIBRTE_MBUF_OFFLOAD as cryptodev is not depending on it anymore and its removed from the upstream.- Enable rte_kni kernel module for dpdk(fate#322394). [+preamble] - Build dpdk-thunderx only for aarch64- Update to version 16.11(fate#321541). Some of the new features are listed below: * Added software parser for packet type. * Improved offloads support in mbuf. * Added vhost-user dequeue zero copy support. * Added vhost-user indirect descriptors support. * Added vhost PMD xstats. * Added virtio NEON support for ARM. * Updated the ixgbe base driver. * Added APIs for VF management to the ixgbe PMD. * Updated the enic driver. * Added openssl PMD. * Added support for new gcc -march option. Detailed changes can be obtained from http://dpdk.org/doc/guides/rel_notes/release_16_11.html - Resolved fixes in the updated versions are : * enic: Fixed several flow director issues. * enic: Fixed inadvertent setting of L4 checksum ptype on ICMP packets. * enic: Fixed high driver overhead when servicing Rx queues beyond the first.- Added gcc-6 as default compiler for CRC/mtune & other optimizations. - Fix possible parallel installation of dpdk subpackages.- Add pre_checkin.sh to generate the dpdk-thunderx.spec file- Fixed paths using %{name} to have the dpdk.spec aligned with dpdk-thunderx.spec- Added back in all the architectures to keep .spec files aligned * Driving thunderx platform architectural dependency via the ExclusiveArch tag- Added support to build code for Thunderx platform(fate#321960). - Introduced new dpdk-thunderx.spec file: * Removed architectures not supporting Thunderx platform (e.g. x86) * Added dependency on gcc v5.0 for armv8a-crc- Update to version 16.07.2. Some of the fixes are listed below: * ethdev: prevent duplicate event callback * hash: fix bucket size usage * hash: fix unlimited cuckoo path * lpm: fix freeing memory * lpm: fix freeing unused sub-table on rule delete * mempool: fix leak if populate fails * mempool: fix search of maximum contiguous pages * pci: fix probing error if no driver found * net/bnx2x: fix maximum PF queues * net/bnxt: fix bit shift size * net/bnxt: fix crash when closing * net/enic: fix Rx queue index when not using Rx scatter * net/enic: fix crash on MTU update or Rx queue reconfigure * net/enic: fix crash with removed flow director filters * net/enic: fix max packet length check * net/enic: fix multi-queue Rx performance * net/enic: revert truncated packets counter fix * net/fm10k: fix VF Tx queue initialization * net/i40e: fix Rx hang when disable LLDP * net/ixgbe: fix VF registers * net/thunderx: fix Tx checksum handling * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides-16.07/rel_notes/release_16_07.html#id2]- Update to version 16.07.1. Some of the fixes are listed below: * contigmem: zero all pages during mmap * crypto/null: fix key size increment value * hash: fix false zero signature key hit lookup * mem: fix crash on hugepage mapping error * mbuf: fix error handling on pool creation * net/e1000: fix returned number of available Rx descriptors * net/enic: fix freeing memory for descriptor ring * net/i40e: fix dropping packets with ethertype 0x88A8 * net/i40e: fix mbuf leak during Rx queue release * net/i40e: fix null pointer dereferences when using VMDq+RSS * net/ixgbe/base: fix possible corruption of shadow RAM * net/ixgbe: fix VF reset to apply to correct VF * net/virtio_user: fix error management during init * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides-16.07/rel_notes/release_16_07.html#fixes-in-16-07-01-stable-release]- Drop code for generating our own linker script. * Commit 948fd64befc3 (" mk: replace the combined library with a linker script") added upstream support for building and installing a linker script so we drop our code from the spec file which generated a much larger and possibly broken linker script resulting to linking issues (boo#1002534)- Update to version 16.07. Some of the new features are listed below: * Removed the mempool cache memory if caching is not being used. * Added mempool external cache for non-EAL thread. * Changed the memory allocation scheme in the mempool library. * Added a new driver for Broadcom NetXtreme-C devices. * Added a new driver for ThunderX nicvf devices. * Added mailbox interrupt support for ixgbe and igb VFs. * Updated the ixgbe base driver. * Updated the i40e base driver. * Updated the enic driver. * Updated the mlx5 driver. * Added support for virtio on IBM POWER8. * Added support for Virtio in containers. * Added vhost-user client mode. * Added NSH packet recognition in i40e. * Added AES-CTR support to AESNI MB PMD. * Added AES counter mode support for Intel QuickAssist devices. * Added KASUMI SW PMD. * Added multi-writer support for RTE Hash with Intel TSX. * Improved IP Pipeline Application. * Added keepalive enhancements. * Added packet capture framework. * Added floating VEB support for i40e PF driver. * Added support for live migration of a VM with SRIOV VF. * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides/rel_notes/release_16_07.html - http://dpdk.org/browse/dpdk/tree/doc/guides/rel_notes/release_16_07.rst - Or the doc/guides/rel_notes/release_16_07.rst file in the released tarball.] - Removed patches that are already avilable in dpdk-16.07 [ -0002-examples-ip_pipeline-fix-implicit-declaration-of-fun.patch - 0003-mk-fix-external-shared-library-dependencies-of-libraries.patch - 0004-54f9e32-vhost-handle-dirty-pages-logging-request.patch - 0005-d293dac-vhost-claim-support-of-guest-announce.patch - 0006-d639996-vhost-enable-log_shmfd-protocol-feature.patch - 0007-ixgbe-fix-VLAN-filter-missing-brackets.patch - 0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch - 0009-bonding-copy-entire-config-structure-in-mode-4.patch - 0010-bonding-fix-active-slaves-with-no-primary.patch - 0011-bonding-do-not-ignore-multicast-in-mode-4.patch - 0012-bonding-do-not-activate-slave-twice.patch - 0013-bonding-fix-crash-when-no-slave-device.patch - 0014-bonding-fix-detach-of-bonded-device.patch - 0015-bonding-fix-detach-of-slave-devices.patch - 0016-eal-linux-support-built-in-kernel-modules.patch - 0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch - 0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch - 0019-i40e-base-fix-driver-load-failure.patch - 0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch - 0021-i40e-fix-inverted-check-for-no-refcount.patch - 0022-i40e-fix-overflow.patch - 0023-i40e-fix-VLAN-filtering.patch - 0024-mempool-fix-leak-when-creation-fails.patch - 0025-pcap-fix-captured-frame-length.patch - 0026-port-fix-crash-for-ethdev-writer-nodrop.patch - 0027-port-fix-crash-for-ring-writer-nodrop.patch - 0028-tools-fix-unbinding-failure-handling.patch - 0029-tools-support-Python-3-in-bind-script.patch - 0030-tools-support-binding-to-built-in-kernel-modules.patch - 0031-vhost-fix-leak-of-fds-and-mmaps.patch - 0032-virtio-fix-crash-in-statistics-functions.patch - 0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch - 0034-virtio-fix-restart.patch - 0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch - 0036-examples-fix-build-dependencies.patch - 0037-examples-ethtool-fix-build.patch - 0099-mk-fix-gcc-5-version-on-suse.patch - 0100-kni-fix-build-with-gcc-6.patch - 0101-ixgbe-fix-uninitialized-warning.patch - 0102-ixgbe-fix-constant-sign-in-left-shift-operator.patch - 0103-e1000-base-Add-missing-braces-to-the-if-statements.patch - 0104-igb-fix-constant-sign-in-left-shift-operator.patch - 0105-e1000-fix-missing-link-interrupt-check-brackets.patch - 0106-app-test-fix-missing-brackets.patch - 0107-examples-ip_pipeline-use-unsigned-constants-for-left.patch ] - Created soft link for dpdk_proc_info and dpdk_nic_bind(from dpdk-procinfo, dpdk-devbind) to keep compatibility. - Added a new binary dpdk-pdump dpdk-procinfo- Add _constraints file to force build dpdk with sse3 enabled x86 machine(bsc#993462). - Enable compilation for ppc64le with the help of Rüdiger(ro@suse.de). - Enable example package for aarch64 using Rüdiger(ro@suse.de) changes. - Do not enable PMD_RING on ppc64le (missing rte_eth_from_rings). - Disable examples that need LPM which is disabled on non-x86. [+0036-examples-fix-build-dependencies.patch, +0037-examples-ethtool-fix-build.patch, +_constraints]- Added support for aarch64 compilation. [+0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch] - Disabled aarch64 dpdk-examples package for the time being as it contains lots of Intel specific code. - Added proper "Group" field for the subpackages .- Add upstream patches to fix building with gcc >= 6 * 0100-kni-fix-build-with-gcc-6.patch * 0101-ixgbe-fix-uninitialized-warning.patch * 0102-ixgbe-fix-constant-sign-in-left-shift-operator.patch * 0103-e1000-base-Add-missing-braces-to-the-if-statements.patch * 0104-igb-fix-constant-sign-in-left-shift-operator.patch * 0105-e1000-fix-missing-link-interrupt-check-brackets.patch * 0106-app-test-fix-missing-brackets.patch * 0107-examples-ip_pipeline-use-unsigned-constants-for-left.patch- Removed unwanted files(bsc#984437).- Added missing GPL-2.0 and LGPL-2.1 licenses.- Update tarball URL.- Applied all the fixes recommended by upstream for v2.2 stable release(bsc#981996). [+0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch, +0009-bonding-copy-entire-config-structure-in-mode-4.patch, +0010-bonding-fix-active-slaves-with-no-primary.patch, +0011-bonding-do-not-ignore-multicast-in-mode-4.patch, +0012-bonding-do-not-activate-slave-twice.patch, +0013-bonding-fix-crash-when-no-slave-device.patch, +0014-bonding-fix-detach-of-bonded-device.patch, +0015-bonding-fix-detach-of-slave-devices.patch, +0016-eal-linux-support-built-in-kernel-modules.patch, +0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch, +0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch, +0019-i40e-base-fix-driver-load-failure.patch, +0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch, +0021-i40e-fix-inverted-check-for-no-refcount.patch, +0022-i40e-fix-overflow.patch, +0023-i40e-fix-VLAN-filtering.patch, +0024-mempool-fix-leak-when-creation-fails.patch, +0025-pcap-fix-captured-frame-length.patch, +0026-port-fix-crash-for-ethdev-writer-nodrop.patch, +0027-port-fix-crash-for-ring-writer-nodrop.patch, +0028-tools-fix-unbinding-failure-handling.patch, +0029-tools-support-Python-3-in-bind-script.patch, +0030-tools-support-binding-to-built-in-kernel-modules.patch, +0031-vhost-fix-leak-of-fds-and-mmaps.patch, +0032-virtio-fix-crash-in-statistics-functions.patch, +0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch, +0034-virtio-fix-restart.patch]- Use fdupes to manage duplicate files- Create DPDK packages for 32 bit x86(bsc#977639).- Add upstream patch for the ixgbe driver * 0007-ixgbe-fix-VLAN-filter-missing-brackets.patch: Fix VLAN filtering logic by adding the missing brackets in the 'if' statement.- DPDK is most common vhost-user backend, Adding upstream patches to help qemu vm live migration with vhost-user (fate#320713). [+ 0004-54f9e32-vhost-handle-dirty-pages-logging-request.patch + 0005-d293dac-vhost-claim-support-of-guest-announce.patch + 0006-d639996-vhost-enable-log_shmfd-protocol-feature.patch]- Move the combined library back to the devel package (bsc#975123) Ever since we dropped the CONFIG_RTE_BUILD_COMBINE_LIBS=y option, the libdpdk.so is no longer a shared object but rather a linker script generated by the spec file. This means that it is only used during linking and the linker will add the individual DPDK libraries to the DT_NEEDED tag on the dependent binaries.- Fix shared linking against libdpdk.so (bsc#975123) * Restore the 0003-mk-fix-external-shared-library-dependencies-of-libraries.patch patch which sets the correct dependencies for the shared libraries. * Drop CONFIG_RTE_BUILD_COMBINE_LIBS since a custom linker script is used to create and install a more lightweight version of libdpdk.so. * Include the combined libdpdk.so library to the regular package since it is also necessary during runtime.- Removed unwnated patch and reformated patch file names(bsc#974903). [- dpdk-2.2-dtneeded.patch, - dpdk-2.2-examples.patch, - enic-pun-fix.patch, - dpdk-2.2-warningflags.patch, + 0001-enic-fix-Type-punning-and-strict-aliasing-warning.patch + 0002-examples-ip_pipeline-fix-implicit-declaration-of-fun.patch] - Added CONFIG_RTE_BUILD_COMBINE_LIBS flags to club all all *.so into one library- Intial version 2.2.0(fate#319169)  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~18.11.918.11.9-lp151.3.8.1dpdkdpdk-docgpl-2.0.txtlgpl-2.1.txtapiannotated.htmlbc_s.pngbdwn.pngclasses.htmlclosed.pngcmdline_8h.htmlcmdline_8h_source.htmldeprecated.htmldir_082fac248c5922c9b524b8ed4e70e149.htmldir_09939486c1591516b984494000c3f64b.htmldir_099d2d80b969e7fd740b685b10b04f52.htmldir_0c4a44b1891135ef8e3f51c114dfc40e.htmldir_0d8d734d473b3cabdef3fd977d50bf3e.htmldir_13eeac154bac823f6a128588ab25dbd1.htmldir_14bc92f4b96c8519b376567118ac28b3.htmldir_1cb3d74b2ac9573f839cf243cfa1bc11.htmldir_1e371fc4c61fbb916177b5ec80f09b33.htmldir_2154f83b08d9713661fee356762316ea.htmldir_2164e25561eabb34d2bd0b8fdda0aeba.htmldir_280cb7b638dc3c2b18b46d48e8ebb350.htmldir_2874bf55c2200dd42774d2ba99074e53.htmldir_2d618a55e588f156483774ccf7b84b21.htmldir_312e5f832048176c38c17335b02a769f.htmldir_313f6c18e163a6142a5a3b7a38753440.htmldir_3241a1b75803951af6cc6f4dc301eca1.htmldir_35ae03c0f35416b98825df846a315ffa.htmldir_38b2ae9befb282239df37d3eaa427f9c.htmldir_41189bc1b2cbbbf473cc198cfd351ef1.htmldir_425fd6afd4367244802c1f095c2bd91a.htmldir_465fee731b4650f251292c02a329fbe4.htmldir_4a8e137842b96fe670fd4b2985ac89ae.htmldir_4b8e6c0016b49edb5f37b579e2023f82.htmldir_4d32756cfe7396f6b5bd672081496d5a.htmldir_5035da364ebbdb660400f67ccee744ab.htmldir_5188debcb509bb3663f061cc199aacda.htmldir_537c65abdcc57b6687fa40a177fe2911.htmldir_57fc2e9d988df25248b2986356737354.htmldir_5dafd97c0d945e0ac41aa1317e88fadc.htmldir_5e14993b9b1571024c777dcdb495ae81.htmldir_605c07ae6e02b3d13cc3bf92b6c5e54b.htmldir_6242a765e90f02e6b399e351944e02df.htmldir_662763201df975e54664a452d4fba6a4.htmldir_68cfe39720133e98f6e3a4074209d013.htmldir_80017d03a93d1c6dc29fe032f2756a58.htmldir_85ecb587e53a4a73ea61471f0b12c7cd.htmldir_87f0c34ed8400daf07819036fa8c39bd.htmldir_88c81b6ae6213964a6a534ee00cb813b.htmldir_91ededd9c78ad866b6d26d7a496929b6.htmldir_97aefd0d527b934f1d99a682da8fe6a9.htmldir_9b3d03c4eb61cec62b5319e654017f5d.htmldir_9cc23110c523433deab11cddab39a876.htmldir_9dfdb91ab02719873a80bed01b3a1a5d.htmldir_9eeab561cdff5b79b69e3433d5c0167e.htmldir_9f54a0e5c0accd58ed9d59aeb0a494b6.htmldir_a837e178e589be76a266a59d671110cc.htmldir_a914dcfab5ff2d1bc9dd6b873a7b604d.htmldir_ab1cf081cc3a382f37f4faf4624bc98a.htmldir_af404d643d0129b0e925f84c76faf17f.htmldir_bab3158cba42af609928ad7bdc323e4b.htmldir_c546cd799bdd92435e34b0203cfe1750.htmldir_d5965c24693e7b1ab7ad0767cbd37f15.htmldir_da18e332567afad90ca07324c52c5833.htmldir_e4d91705e579e3718a61980d7fa2b542.htmldir_e6bf5b3b5611bc8c19dd42f833c7eb40.htmldir_eaabdb77807ddb33c9f95a20e00c6648.htmldir_ede7e24c7966ae13eacb9e9d5c8994f5.htmldir_f3c49864a69d49874faab6e12ff2e6f9.htmldir_f5e0cc2a752635854ee1050679b5092d.htmldir_f9bb17aa67306532eda035e0955b885e.htmldir_fd57c5f233fdd9e7da26a5e5f646d081.htmldir_fdd811c43070b66c424782ec94ee51d7.htmldoc.pngdoxy-api-index_8md_source.htmldoxygen.cssdoxygen.pngdynsections.jsexamples.htmlexamples_2bbdev_app_2main_8c-example.htmlexamples_2bond_2main_8c-example.htmlexamples_2cmdline_2commands_8c-example.htmlexamples_2cmdline_2main_8c-example.htmlexamples_2cmdline_2parse_obj_list_8c-example.htmlexamples_2distributor_2main_8c-example.htmlexamples_2ethtool_2ethtool-app_2ethapp_8c-example.htmlexamples_2ethtool_2ethtool-app_2main_8c-example.htmlexamples_2ethtool_2lib_2rte_ethtool_8c-example.htmlexamples_2eventdev_pipeline_2main_8c-example.htmlexamples_2eventdev_pipeline_2pipeline_worker_generic_8c-example.htmlexamples_2eventdev_pipeline_2pipeline_worker_tx_8c-example.htmlexamples_2exception_path_2main_8c-example.htmlexamples_2fips_validation_2fips_validation_8c-example.htmlexamples_2fips_validation_2fips_validation_aes_8c-example.htmlexamples_2fips_validation_2fips_validation_ccm_8c-example.htmlexamples_2fips_validation_2fips_validation_cmac_8c-example.htmlexamples_2fips_validation_2fips_validation_gcm_8c-example.htmlexamples_2fips_validation_2fips_validation_hmac_8c-example.htmlexamples_2fips_validation_2fips_validation_tdes_8c-example.htmlexamples_2fips_validation_2main_8c-example.htmlexamples_2flow_classify_2flow_classify_8c-example.htmlexamples_2flow_filtering_2flow_blocks_8c-example.htmlexamples_2flow_filtering_2main_8c-example.htmlexamples_2helloworld_2main_8c-example.htmlexamples_2ip_fragmentation_2main_8c-example.htmlexamples_2ip_pipeline_2action_8c-example.htmlexamples_2ip_pipeline_2cli_8c-example.htmlexamples_2ip_pipeline_2conn_8c-example.htmlexamples_2ip_pipeline_2cryptodev_8c-example.htmlexamples_2ip_pipeline_2kni_8c-example.htmlexamples_2ip_pipeline_2link_8c-example.htmlexamples_2ip_pipeline_2main_8c-example.htmlexamples_2ip_pipeline_2mempool_8c-example.htmlexamples_2ip_pipeline_2parser_8c-example.htmlexamples_2ip_pipeline_2pipeline_8c-example.htmlexamples_2ip_pipeline_2swq_8c-example.htmlexamples_2ip_pipeline_2tap_8c-example.htmlexamples_2ip_pipeline_2thread_8c-example.htmlexamples_2ip_pipeline_2tmgr_8c-example.htmlexamples_2ip_reassembly_2main_8c-example.htmlexamples_2ipsec-secgw_2esp_8c-example.htmlexamples_2ipsec-secgw_2ipsec-secgw_8c-example.htmlexamples_2ipsec-secgw_2ipsec_8c-example.htmlexamples_2ipsec-secgw_2parser_8c-example.htmlexamples_2ipsec-secgw_2rt_8c-example.htmlexamples_2ipsec-secgw_2sa_8c-example.htmlexamples_2ipsec-secgw_2sp4_8c-example.htmlexamples_2ipsec-secgw_2sp6_8c-example.htmlexamples_2ipv4_multicast_2main_8c-example.htmlexamples_2kni_2main_8c-example.htmlexamples_2l2fwd-cat_2cat_8c-example.htmlexamples_2l2fwd-cat_2l2fwd-cat_8c-example.htmlexamples_2l2fwd-crypto_2main_8c-example.htmlexamples_2l2fwd-jobstats_2main_8c-example.htmlexamples_2l2fwd-keepalive_2ka-agent_2main_8c-example.htmlexamples_2l2fwd-keepalive_2main_8c-example.htmlexamples_2l2fwd-keepalive_2shm_8c-example.htmlexamples_2l2fwd_2main_8c-example.htmlexamples_2l3fwd-acl_2main_8c-example.htmlexamples_2l3fwd-power_2main_8c-example.htmlexamples_2l3fwd-power_2perf_core_8c-example.htmlexamples_2l3fwd-vf_2main_8c-example.htmlexamples_2l3fwd_2l3fwd_em_8c-example.htmlexamples_2l3fwd_2l3fwd_lpm_8c-example.htmlexamples_2l3fwd_2main_8c-example.htmlexamples_2link_status_interrupt_2main_8c-example.htmlexamples_2load_balancer_2config_8c-example.htmlexamples_2load_balancer_2init_8c-example.htmlexamples_2load_balancer_2main_8c-example.htmlexamples_2load_balancer_2runtime_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_client_2client_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2args_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2init_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2main_8c-example.htmlexamples_2multi_process_2hotplug_mp_2commands_8c-example.htmlexamples_2multi_process_2hotplug_mp_2main_8c-example.htmlexamples_2multi_process_2simple_mp_2main_8c-example.htmlexamples_2multi_process_2simple_mp_2mp_commands_8c-example.htmlexamples_2multi_process_2symmetric_mp_2main_8c-example.htmlexamples_2netmap_compat_2bridge_2bridge_8c-example.htmlexamples_2netmap_compat_2lib_2compat_netmap_8c-example.htmlexamples_2packet_ordering_2main_8c-example.htmlexamples_2performance-thread_2common_2arch_2arm64_2ctx_8c-example.htmlexamples_2performance-thread_2common_2arch_2x86_2ctx_8c-example.htmlexamples_2performance-thread_2common_2lthread_8c-example.htmlexamples_2performance-thread_2common_2lthread_cond_8c-example.htmlexamples_2performance-thread_2common_2lthread_diag_8c-example.htmlexamples_2performance-thread_2common_2lthread_mutex_8c-example.htmlexamples_2performance-thread_2common_2lthread_sched_8c-example.htmlexamples_2performance-thread_2common_2lthread_tls_8c-example.htmlexamples_2performance-thread_2l3fwd-thread_2main_8c-example.htmlexamples_2performance-thread_2pthread_shim_2main_8c-example.htmlexamples_2performance-thread_2pthread_shim_2pthread_shim_8c-example.htmlexamples_2ptpclient_2ptpclient_8c-example.htmlexamples_2qos_meter_2main_8c-example.htmlexamples_2qos_meter_2rte_policer_8c-example.htmlexamples_2qos_sched_2app_thread_8c-example.htmlexamples_2qos_sched_2args_8c-example.htmlexamples_2qos_sched_2cfg_file_8c-example.htmlexamples_2qos_sched_2cmdline_8c-example.htmlexamples_2qos_sched_2init_8c-example.htmlexamples_2qos_sched_2main_8c-example.htmlexamples_2qos_sched_2stats_8c-example.htmlexamples_2quota_watermark_2qw_2args_8c-example.htmlexamples_2quota_watermark_2qw_2init_8c-example.htmlexamples_2quota_watermark_2qw_2main_8c-example.htmlexamples_2quota_watermark_2qwctl_2commands_8c-example.htmlexamples_2quota_watermark_2qwctl_2qwctl_8c-example.htmlexamples_2rxtx_callbacks_2main_8c-example.htmlexamples_2server_node_efd_2node_2node_8c-example.htmlexamples_2server_node_efd_2server_2args_8c-example.htmlexamples_2server_node_efd_2server_2init_8c-example.htmlexamples_2server_node_efd_2server_2main_8c-example.htmlexamples_2service_cores_2main_8c-example.htmlexamples_2skeleton_2basicfwd_8c-example.htmlexamples_2tep_termination_2main_8c-example.htmlexamples_2tep_termination_2vxlan_8c-example.htmlexamples_2tep_termination_2vxlan_setup_8c-example.htmlexamples_2timer_2main_8c-example.htmlexamples_2vdpa_2main_8c-example.htmlexamples_2vhost_2main_8c-example.htmlexamples_2vhost_2virtio_net_8c-example.htmlexamples_2vhost_crypto_2main_8c-example.htmlexamples_2vhost_scsi_2scsi_8c-example.htmlexamples_2vhost_scsi_2vhost_scsi_8c-example.htmlexamples_2vm_power_manager_2channel_manager_8c-example.htmlexamples_2vm_power_manager_2channel_monitor_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2main_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2parse_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2vm_power_cli_guest_8c-example.htmlexamples_2vm_power_manager_2main_8c-example.htmlexamples_2vm_power_manager_2oob_monitor_nop_8c-example.htmlexamples_2vm_power_manager_2oob_monitor_x86_8c-example.htmlexamples_2vm_power_manager_2parse_8c-example.htmlexamples_2vm_power_manager_2power_manager_8c-example.htmlexamples_2vm_power_manager_2vm_power_cli_8c-example.htmlexamples_2vmdq_2main_8c-example.htmlexamples_2vmdq_dcb_2main_8c-example.htmlfiles.htmlfolderclosed.pngfolderopen.pngfunctions.htmlfunctions_a.htmlfunctions_b.htmlfunctions_c.htmlfunctions_d.htmlfunctions_e.htmlfunctions_f.htmlfunctions_func.htmlfunctions_g.htmlfunctions_h.htmlfunctions_i.htmlfunctions_k.htmlfunctions_l.htmlfunctions_m.htmlfunctions_n.htmlfunctions_o.htmlfunctions_p.htmlfunctions_q.htmlfunctions_r.htmlfunctions_s.htmlfunctions_t.htmlfunctions_u.htmlfunctions_v.htmlfunctions_vars.htmlfunctions_vars_a.htmlfunctions_vars_b.htmlfunctions_vars_c.htmlfunctions_vars_d.htmlfunctions_vars_e.htmlfunctions_vars_f.htmlfunctions_vars_g.htmlfunctions_vars_h.htmlfunctions_vars_i.htmlfunctions_vars_k.htmlfunctions_vars_l.htmlfunctions_vars_m.htmlfunctions_vars_n.htmlfunctions_vars_o.htmlfunctions_vars_p.htmlfunctions_vars_q.htmlfunctions_vars_r.htmlfunctions_vars_s.htmlfunctions_vars_t.htmlfunctions_vars_u.htmlfunctions_vars_v.htmlfunctions_vars_w.htmlfunctions_vars_x.htmlfunctions_vars_y.htmlfunctions_w.htmlfunctions_x.htmlfunctions_y.htmlglobals.htmlglobals_a.htmlglobals_b.htmlglobals_c.htmlglobals_d.htmlglobals_defs.htmlglobals_defs_b.htmlglobals_defs_c.htmlglobals_defs_d.htmlglobals_defs_e.htmlglobals_defs_i.htmlglobals_defs_l.htmlglobals_defs_m.htmlglobals_defs_o.htmlglobals_defs_p.htmlglobals_defs_r.htmlglobals_defs_s.htmlglobals_defs_u.htmlglobals_defs_v.htmlglobals_e.htmlglobals_enum.htmlglobals_eval.htmlglobals_eval_e.htmlglobals_eval_f.htmlglobals_eval_i.htmlglobals_eval_m.htmlglobals_eval_r.htmlglobals_eval_s.htmlglobals_eval_w.htmlglobals_f.htmlglobals_func.htmlglobals_func_c.htmlglobals_func_e.htmlglobals_func_i.htmlglobals_func_p.htmlglobals_func_r.htmlglobals_func_s.htmlglobals_func_t.htmlglobals_h.htmlglobals_i.htmlglobals_l.htmlglobals_m.htmlglobals_o.htmlglobals_p.htmlglobals_r.htmlglobals_s.htmlglobals_t.htmlglobals_type.htmlglobals_type_c.htmlglobals_type_d.htmlglobals_type_e.htmlglobals_type_h.htmlglobals_type_l.htmlglobals_type_m.htmlglobals_type_p.htmlglobals_type_r.htmlglobals_type_s.htmlglobals_type_u.htmlglobals_u.htmlglobals_v.htmlglobals_vars.htmlglobals_w.htmlindex.htmljquery.jsmenu.jsmenudata.jsnav_f.pngnav_g.pngnav_h.pngopen.pngpages.htmlrte__acl_8h.htmlrte__acl_8h_source.htmlrte__acl__osdep_8h.htmlrte__acl__osdep_8h_source.htmlrte__alarm_8h.htmlrte__alarm_8h_source.htmlrte__approx_8h.htmlrte__approx_8h_source.htmlrte__arp_8h.htmlrte__arp_8h_source.htmlrte__atomic_8h.htmlrte__atomic_8h_source.htmlrte__bbdev_8h.htmlrte__bbdev_8h_source.htmlrte__bbdev__op_8h.htmlrte__bbdev__op_8h_source.htmlrte__bbdev__pmd_8h.htmlrte__bbdev__pmd_8h_source.htmlrte__bitmap_8h.htmlrte__bitmap_8h_source.htmlrte__bitrate_8h_source.htmlrte__bpf_8h.htmlrte__bpf_8h_source.htmlrte__bpf__ethdev_8h.htmlrte__bpf__ethdev_8h_source.htmlrte__branch__prediction_8h.htmlrte__branch__prediction_8h_source.htmlrte__bus_8h.htmlrte__bus_8h_source.htmlrte__byteorder_8h.htmlrte__byteorder_8h_source.htmlrte__cfgfile_8h.htmlrte__cfgfile_8h_source.htmlrte__class_8h.htmlrte__class_8h_source.htmlrte__cmp__arm64_8h_source.htmlrte__cmp__x86_8h_source.htmlrte__common_8h.htmlrte__common_8h_source.htmlrte__comp_8h.htmlrte__comp_8h_source.htmlrte__compat_8h_source.htmlrte__compressdev_8h.htmlrte__compressdev_8h_source.htmlrte__compressdev__internal_8h_source.htmlrte__compressdev__pmd_8h.htmlrte__compressdev__pmd_8h_source.htmlrte__cpuflags_8h.htmlrte__cpuflags_8h_source.htmlrte__crc__arm64_8h.htmlrte__crc__arm64_8h_source.htmlrte__crypto_8h.htmlrte__crypto_8h_source.htmlrte__crypto__asym_8h.htmlrte__crypto__asym_8h_source.htmlrte__crypto__sym_8h.htmlrte__crypto__sym_8h_source.htmlrte__cryptodev_8h.htmlrte__cryptodev_8h_source.htmlrte__cryptodev__pmd_8h.htmlrte__cryptodev__pmd_8h_source.htmlrte__cryptodev__scheduler_8h.htmlrte__cryptodev__scheduler_8h_source.htmlrte__cryptodev__scheduler__operations_8h_source.htmlrte__cuckoo__hash_8h_source.htmlrte__cycles_8h.htmlrte__cycles_8h_source.htmlrte__debug_8h.htmlrte__debug_8h_source.htmlrte__dev_8h.htmlrte__dev_8h_source.htmlrte__dev__info_8h_source.htmlrte__devargs_8h.htmlrte__devargs_8h_source.htmlrte__distributor_8h.htmlrte__distributor_8h_source.htmlrte__distributor__private_8h.htmlrte__distributor__private_8h_source.htmlrte__distributor__v1705_8h.htmlrte__distributor__v1705_8h_source.htmlrte__distributor__v20_8h.htmlrte__distributor__v20_8h_source.htmlrte__dpaa2__mempool_8h.htmlrte__dpaa2__mempool_8h_source.htmlrte__eal_8h.htmlrte__eal_8h_source.htmlrte__eal__interrupts_8h.htmlrte__eal__interrupts_8h_source.htmlrte__eal__memconfig_8h_source.htmlrte__efd_8h.htmlrte__efd_8h_source.htmlrte__efd__arm64_8h_source.htmlrte__efd__x86_8h_source.htmlrte__errno_8h.htmlrte__errno_8h_source.htmlrte__esp_8h.htmlrte__esp_8h_source.htmlrte__eth__bond_8h.htmlrte__eth__bond_8h_source.htmlrte__eth__bond__8023ad_8h_source.htmlrte__eth__bond__8023ad__private_8h_source.htmlrte__eth__bond__alb_8h_source.htmlrte__eth__bond__private_8h_source.htmlrte__eth__ctrl_8h.htmlrte__eth__ctrl_8h_source.htmlrte__eth__softnic_8h_source.htmlrte__eth__softnic__internals_8h_source.htmlrte__ethdev_8h.htmlrte__ethdev_8h_source.htmlrte__ethdev__core_8h.htmlrte__ethdev__core_8h_source.htmlrte__ethdev__driver_8h.htmlrte__ethdev__driver_8h_source.htmlrte__ethdev__pci_8h_source.htmlrte__ethdev__vdev_8h_source.htmlrte__ether_8h.htmlrte__ether_8h_source.htmlrte__event__crypto__adapter_8h.htmlrte__event__crypto__adapter_8h_source.htmlrte__event__eth__rx__adapter_8h.htmlrte__event__eth__rx__adapter_8h_source.htmlrte__event__eth__tx__adapter_8h.htmlrte__event__eth__tx__adapter_8h_source.htmlrte__event__ring_8h.htmlrte__event__ring_8h_source.htmlrte__event__timer__adapter_8h.htmlrte__event__timer__adapter_8h_source.htmlrte__event__timer__adapter__pmd_8h.htmlrte__event__timer__adapter__pmd_8h_source.htmlrte__eventdev_8h.htmlrte__eventdev_8h_source.htmlrte__eventdev__pmd_8h.htmlrte__eventdev__pmd_8h_source.htmlrte__eventdev__pmd__pci_8h.htmlrte__eventdev__pmd__pci_8h_source.htmlrte__eventdev__pmd__vdev_8h.htmlrte__eventdev__pmd__vdev_8h_source.htmlrte__fbarray_8h.htmlrte__fbarray_8h_source.htmlrte__fbk__hash_8h.htmlrte__fbk__hash_8h_source.htmlrte__flow_8h.htmlrte__flow_8h_source.htmlrte__flow__classify_8h.htmlrte__flow__classify_8h_source.htmlrte__flow__classify__parse_8h_source.htmlrte__flow__driver_8h.htmlrte__flow__driver_8h_source.htmlrte__gre_8h_source.htmlrte__gro_8h.htmlrte__gro_8h_source.htmlrte__gso_8h.htmlrte__gso_8h_source.htmlrte__hash_8h.htmlrte__hash_8h_source.htmlrte__hash__crc_8h.htmlrte__hash__crc_8h_source.htmlrte__hexdump_8h.htmlrte__hexdump_8h_source.htmlrte__hypervisor_8h.htmlrte__hypervisor_8h_source.htmlrte__icmp_8h.htmlrte__icmp_8h_source.htmlrte__interrupts_8h.htmlrte__interrupts_8h_source.htmlrte__io_8h.htmlrte__io_8h_source.htmlrte__ip_8h.htmlrte__ip_8h_source.htmlrte__ip__frag_8h.htmlrte__ip__frag_8h_source.htmlrte__jhash_8h.htmlrte__jhash_8h_source.htmlrte__jobstats_8h_source.htmlrte__keepalive_8h.htmlrte__keepalive_8h_source.htmlrte__kni_8h.htmlrte__kni_8h_source.htmlrte__kni__fifo_8h_source.htmlrte__kvargs_8h.htmlrte__kvargs_8h_source.htmlrte__latencystats_8h.htmlrte__latencystats_8h_source.htmlrte__launch_8h.htmlrte__launch_8h_source.htmlrte__lcore_8h.htmlrte__lcore_8h_source.htmlrte__log_8h.htmlrte__log_8h_source.htmlrte__lpm6_8h.htmlrte__lpm6_8h_source.htmlrte__lpm_8h.htmlrte__lpm_8h_source.htmlrte__lpm__altivec_8h_source.htmlrte__lpm__neon_8h_source.htmlrte__lpm__sse_8h_source.htmlrte__lru_8h_source.htmlrte__lru__arm64_8h_source.htmlrte__lru__x86_8h_source.htmlrte__malloc_8h.htmlrte__malloc_8h_source.htmlrte__malloc__heap_8h_source.htmlrte__mbuf_8h.htmlrte__mbuf_8h_source.htmlrte__mbuf__pool__ops_8h.htmlrte__mbuf__pool__ops_8h_source.htmlrte__mbuf__ptype_8h.htmlrte__mbuf__ptype_8h_source.htmlrte__member_8h.htmlrte__member_8h_source.htmlrte__member__ht_8h_source.htmlrte__member__vbf_8h_source.htmlrte__member__x86_8h_source.htmlrte__memcpy_8h.htmlrte__memcpy_8h_source.htmlrte__memory_8h.htmlrte__memory_8h_source.htmlrte__mempool_8h.htmlrte__mempool_8h_source.htmlrte__memzone_8h.htmlrte__memzone_8h_source.htmlrte__meter_8h.htmlrte__meter_8h_source.htmlrte__metrics_8h.htmlrte__metrics_8h_source.htmlrte__mpls_8h.htmlrte__mpls_8h_source.htmlrte__mtr_8h.htmlrte__mtr_8h_source.htmlrte__mtr__driver_8h.htmlrte__mtr__driver_8h_source.htmlrte__net_8h_source.htmlrte__net__crc_8h_source.htmlrte__option_8h.htmlrte__option_8h_source.htmlrte__pause_8h.htmlrte__pause_8h_source.htmlrte__pci_8h.htmlrte__pci_8h_source.htmlrte__pci__dev__feature__defs_8h_source.htmlrte__pci__dev__features_8h_source.htmlrte__pdump_8h.htmlrte__pdump_8h_source.htmlrte__per__lcore_8h.htmlrte__per__lcore_8h_source.htmlrte__pipeline_8h.htmlrte__pipeline_8h_source.htmlrte__pmd__bnxt_8h_source.htmlrte__pmd__dpaa2__cmdif_8h.htmlrte__pmd__dpaa2__cmdif_8h_source.htmlrte__pmd__dpaa2__qdma_8h.htmlrte__pmd__dpaa2__qdma_8h_source.htmlrte__pmd__dpaa_8h.htmlrte__pmd__dpaa_8h_source.htmlrte__pmd__i40e_8h.htmlrte__pmd__i40e_8h_source.htmlrte__pmd__ixgbe_8h.htmlrte__pmd__ixgbe_8h_source.htmlrte__port_8h.htmlrte__port_8h_source.htmlrte__port__ethdev_8h.htmlrte__port__ethdev_8h_source.htmlrte__port__fd_8h.htmlrte__port__fd_8h_source.htmlrte__port__frag_8h.htmlrte__port__frag_8h_source.htmlrte__port__in__action_8h.htmlrte__port__in__action_8h_source.htmlrte__port__kni_8h.htmlrte__port__kni_8h_source.htmlrte__port__ras_8h.htmlrte__port__ras_8h_source.htmlrte__port__ring_8h.htmlrte__port__ring_8h_source.htmlrte__port__sched_8h.htmlrte__port__sched_8h_source.htmlrte__port__source__sink_8h.htmlrte__port__source__sink_8h_source.htmlrte__port__sym__crypto_8h.htmlrte__port__sym__crypto_8h_source.htmlrte__power_8h.htmlrte__power_8h_source.htmlrte__power__empty__poll_8h.htmlrte__power__empty__poll_8h_source.htmlrte__prefetch_8h.htmlrte__prefetch_8h_source.htmlrte__random_8h.htmlrte__random_8h_source.htmlrte__rawdev_8h.htmlrte__rawdev_8h_source.htmlrte__rawdev__pmd_8h.htmlrte__rawdev__pmd_8h_source.htmlrte__reciprocal_8h_source.htmlrte__red_8h.htmlrte__red_8h_source.htmlrte__reorder_8h.htmlrte__reorder_8h_source.htmlrte__ring_8h.htmlrte__ring_8h_source.htmlrte__ring__c11__mem_8h_source.htmlrte__ring__generic_8h_source.htmlrte__rwlock_8h.htmlrte__rwlock_8h_source.htmlrte__sched_8h.htmlrte__sched_8h_source.htmlrte__sched__common_8h_source.htmlrte__sctp_8h.htmlrte__sctp_8h_source.htmlrte__security_8h.htmlrte__security_8h_source.htmlrte__security__driver_8h.htmlrte__security__driver_8h_source.htmlrte__service_8h.htmlrte__service_8h_source.htmlrte__service__component_8h_source.htmlrte__spinlock_8h.htmlrte__spinlock_8h_source.htmlrte__string__fns_8h.htmlrte__string__fns_8h_source.htmlrte__table_8h.htmlrte__table_8h_source.htmlrte__table__acl_8h.htmlrte__table__acl_8h_source.htmlrte__table__action_8h.htmlrte__table__action_8h_source.htmlrte__table__array_8h.htmlrte__table__array_8h_source.htmlrte__table__hash_8h.htmlrte__table__hash_8h_source.htmlrte__table__hash__cuckoo_8h.htmlrte__table__hash__cuckoo_8h_source.htmlrte__table__hash__func_8h_source.htmlrte__table__hash__func__arm64_8h_source.htmlrte__table__lpm_8h.htmlrte__table__lpm_8h_source.htmlrte__table__lpm__ipv6_8h.htmlrte__table__lpm__ipv6_8h_source.htmlrte__table__stub_8h.htmlrte__table__stub_8h_source.htmlrte__tailq_8h.htmlrte__tailq_8h_source.htmlrte__tcp_8h.htmlrte__tcp_8h_source.htmlrte__telemetry_8h.htmlrte__telemetry_8h_source.htmlrte__telemetry__internal_8h_source.htmlrte__telemetry__parser_8h_source.htmlrte__telemetry__socket__tests_8h_source.htmlrte__test_8h_source.htmlrte__thash_8h.htmlrte__thash_8h_source.htmlrte__time_8h_source.htmlrte__timer_8h.htmlrte__timer_8h_source.htmlrte__tm_8h.htmlrte__tm_8h_source.htmlrte__tm__driver_8h.htmlrte__tm__driver_8h_source.htmlrte__udp_8h.htmlrte__udp_8h_source.htmlrte__uuid_8h.htmlrte__uuid_8h_source.htmlrte__vdpa_8h.htmlrte__vdpa_8h_source.htmlrte__vect_8h.htmlrte__vect_8h_source.htmlrte__version_8h.htmlrte__version_8h_source.htmlrte__vfio_8h.htmlrte__vfio_8h_source.htmlrte__vhost_8h.htmlrte__vhost_8h_source.htmlrte__vhost__crypto_8h_source.htmlsplitbar.pngstructarp__hdr.htmlstructarp__ipv4.htmlstructbond__dev__private.htmlstructbond__ethdev__slave__ports.htmlstructbond__rx__queue.htmlstructesp__hdr.htmlstructether__addr.htmlstructether__hdr.htmlstructgre__hdr.htmlstructicmp__hdr.htmlstructip__frag__tbl__stat.htmlstructipv4__hdr.htmlstructipv6__hdr.htmlstructlacpdu.htmlstructlacpdu__header.htmlstructlcore__config.htmlstructmalloc__heap.htmlstructmapped__pci__resource.htmlstructmpls__hdr.htmlstructpci__map.htmlstructpipeline__params.htmlstructpmd__internals.htmlstructpmd__params.htmlstructport.htmlstructrte__acl__config.htmlstructrte__acl__field.htmlstructrte__acl__field__def.htmlstructrte__acl__param.htmlstructrte__acl__rule__data.htmlstructrte__atomic16__t.htmlstructrte__atomic32__t.htmlstructrte__atomic64__t.htmlstructrte__bbdev__dec__op.htmlstructrte__bbdev__driver__info.htmlstructrte__bbdev__enc__op.htmlstructrte__bbdev__info.htmlstructrte__bbdev__op__cap__turbo__dec.htmlstructrte__bbdev__op__dec__tb__params.htmlstructrte__bbdev__op__enc__tb__params.htmlstructrte__bbdev__op__turbo__enc.htmlstructrte__bbdev__ops.htmlstructrte__bbdev__queue__conf.htmlstructrte__bbdev__queue__info.htmlstructrte__bbdev__stats.htmlstructrte__bitmap.htmlstructrte__bpf__arg.htmlstructrte__bpf__jit.htmlstructrte__bpf__prm.htmlstructrte__bpf__xsym.htmlstructrte__bus.htmlstructrte__bus__conf.htmlstructrte__cfgfile__entry.htmlstructrte__cfgfile__parameters.htmlstructrte__class.htmlstructrte__comp__compress__xform.htmlstructrte__comp__decompress__xform.htmlstructrte__comp__deflate__params.htmlstructrte__comp__op.htmlstructrte__comp__xform.htmlstructrte__compressdev.htmlstructrte__compressdev__capabilities.htmlstructrte__compressdev__config.htmlstructrte__compressdev__data.htmlstructrte__compressdev__global.htmlstructrte__compressdev__info.htmlstructrte__compressdev__ops.htmlstructrte__compressdev__stats.htmlstructrte__config.htmlstructrte__crypto__asym__op.htmlstructrte__crypto__asym__xform.htmlstructrte__crypto__auth__xform.htmlstructrte__crypto__cipher__xform.htmlstructrte__crypto__dh__op__param.htmlstructrte__crypto__dh__xform.htmlstructrte__crypto__dsa__op__param.htmlstructrte__crypto__dsa__xform.htmlstructrte__crypto__mod__op__param.htmlstructrte__crypto__modex__xform.htmlstructrte__crypto__modinv__xform.htmlstructrte__crypto__op.htmlstructrte__crypto__op__pool__private.htmlstructrte__crypto__param__range.htmlstructrte__crypto__rsa__op__param.htmlstructrte__crypto__rsa__priv__key__qt.htmlstructrte__crypto__rsa__xform.htmlstructrte__crypto__sym__op.htmlstructrte__crypto__sym__xform.htmlstructrte__cryptodev.htmlstructrte__cryptodev__asym__capability__idx.htmlstructrte__cryptodev__asym__session.htmlstructrte__cryptodev__asymmetric__capability.htmlstructrte__cryptodev__asymmetric__xform__capability.htmlstructrte__cryptodev__capabilities.htmlstructrte__cryptodev__config.htmlstructrte__cryptodev__data.htmlstructrte__cryptodev__global.htmlstructrte__cryptodev__info.htmlstructrte__cryptodev__ops.htmlstructrte__cryptodev__qp__conf.htmlstructrte__cryptodev__scheduler.htmlstructrte__cryptodev__stats.htmlstructrte__cryptodev__sym__capability__idx.htmlstructrte__cryptodev__sym__session.htmlstructrte__cryptodev__symmetric__capability.htmlstructrte__dev__iterator.htmlstructrte__devargs.htmlstructrte__device.htmlstructrte__distributor__buffer.htmlstructrte__dpaa2__cmdif__context.htmlstructrte__driver.htmlstructrte__epoll__event.htmlstructrte__eth__conf.htmlstructrte__eth__dcb__info.htmlstructrte__eth__dcb__tc__queue__mapping.htmlstructrte__eth__desc__lim.htmlstructrte__eth__dev__info.htmlstructrte__eth__dev__module__info.htmlstructrte__eth__dev__portconf.htmlstructrte__eth__dev__tx__buffer.htmlstructrte__eth__devargs.htmlstructrte__eth__ethertype__filter.htmlstructrte__eth__event__ipsec__desc.htmlstructrte__eth__fc__conf.htmlstructrte__eth__fdir__action.htmlstructrte__eth__fdir__filter.htmlstructrte__eth__fdir__filter__info.htmlstructrte__eth__fdir__flex__conf.htmlstructrte__eth__fdir__flex__mask.htmlstructrte__eth__fdir__flow__ext.htmlstructrte__eth__fdir__info.htmlstructrte__eth__fdir__input.htmlstructrte__eth__fdir__masks.htmlstructrte__eth__fdir__stats.htmlstructrte__eth__flex__filter.htmlstructrte__eth__flex__payload__cfg.htmlstructrte__eth__global__cfg.htmlstructrte__eth__hash__filter__info.htmlstructrte__eth__hash__global__conf.htmlstructrte__eth__input__set__conf.htmlstructrte__eth__ipv4__flow.htmlstructrte__eth__ipv6__flow.htmlstructrte__eth__l2__flow.htmlstructrte__eth__l2__tunnel__conf.htmlstructrte__eth__link.htmlstructrte__eth__mac__filter.htmlstructrte__eth__mac__vlan__flow.htmlstructrte__eth__mirror__conf.htmlstructrte__eth__ntuple__filter.htmlstructrte__eth__pfc__conf.htmlstructrte__eth__rss__conf.htmlstructrte__eth__rss__reta__entry64.htmlstructrte__eth__rxconf.htmlstructrte__eth__rxmode.htmlstructrte__eth__rxq__info.htmlstructrte__eth__sctpv4__flow.htmlstructrte__eth__sctpv6__flow.htmlstructrte__eth__stats.htmlstructrte__eth__switch__info.htmlstructrte__eth__syn__filter.htmlstructrte__eth__tcpv4__flow.htmlstructrte__eth__tcpv6__flow.htmlstructrte__eth__thresh.htmlstructrte__eth__tunnel__filter__conf.htmlstructrte__eth__tunnel__flow.htmlstructrte__eth__txconf.htmlstructrte__eth__txmode.htmlstructrte__eth__txq__info.htmlstructrte__eth__udp__tunnel.htmlstructrte__eth__udpv4__flow.htmlstructrte__eth__udpv6__flow.htmlstructrte__eth__vlan__mirror.htmlstructrte__eth__vmdq__dcb__conf.htmlstructrte__eth__vmdq__rx__conf.htmlstructrte__eth__xstat.htmlstructrte__eth__xstat__name.htmlstructrte__event.htmlstructrte__event__crypto__adapter__conf.htmlstructrte__event__crypto__adapter__stats.htmlstructrte__event__crypto__request.htmlstructrte__event__dev__config.htmlstructrte__event__dev__info.htmlstructrte__event__dev__xstats__name.htmlstructrte__event__eth__rx__adapter__conf.htmlstructrte__event__eth__rx__adapter__queue__conf.htmlstructrte__event__eth__rx__adapter__stats.htmlstructrte__event__eth__tx__adapter__conf.htmlstructrte__event__eth__tx__adapter__stats.htmlstructrte__event__port__conf.htmlstructrte__event__queue__conf.htmlstructrte__event__ring.htmlstructrte__event__timer.htmlstructrte__event__timer__adapter__conf.htmlstructrte__event__timer__adapter__info.htmlstructrte__event__timer__adapter__stats.htmlstructrte__eventdev__global.htmlstructrte__eventdev__ops.htmlstructrte__fbk__hash__params.htmlstructrte__fbk__hash__table.htmlstructrte__fdir__conf.htmlstructrte__flow__action__count.htmlstructrte__flow__action__jump.htmlstructrte__flow__action__mark.htmlstructrte__flow__action__meter.htmlstructrte__flow__action__nvgre__encap.htmlstructrte__flow__action__of__pop__mpls.htmlstructrte__flow__action__of__push__mpls.htmlstructrte__flow__action__of__push__vlan.htmlstructrte__flow__action__of__set__mpls__ttl.htmlstructrte__flow__action__of__set__nw__ttl.htmlstructrte__flow__action__of__set__vlan__pcp.htmlstructrte__flow__action__of__set__vlan__vid.htmlstructrte__flow__action__phy__port.htmlstructrte__flow__action__port__id.htmlstructrte__flow__action__queue.htmlstructrte__flow__action__raw__decap.htmlstructrte__flow__action__raw__encap.htmlstructrte__flow__action__rss.htmlstructrte__flow__action__security.htmlstructrte__flow__action__set__ipv4.htmlstructrte__flow__action__set__ipv6.htmlstructrte__flow__action__set__mac.htmlstructrte__flow__action__set__tp.htmlstructrte__flow__action__set__ttl.htmlstructrte__flow__action__vf.htmlstructrte__flow__action__vxlan__encap.htmlstructrte__flow__attr.htmlstructrte__flow__classifier__params.htmlstructrte__flow__classify__ipv4__5tuple.htmlstructrte__flow__classify__stats.htmlstructrte__flow__classify__table__params.htmlstructrte__flow__conv__rule.htmlstructrte__flow__desc.htmlstructrte__flow__error.htmlstructrte__flow__expand__node.htmlstructrte__flow__expand__rss.htmlstructrte__flow__item.htmlstructrte__flow__item__any.htmlstructrte__flow__item__arp__eth__ipv4.htmlstructrte__flow__item__e__tag.htmlstructrte__flow__item__esp.htmlstructrte__flow__item__eth.htmlstructrte__flow__item__fuzzy.htmlstructrte__flow__item__geneve.htmlstructrte__flow__item__gre.htmlstructrte__flow__item__gtp.htmlstructrte__flow__item__icmp.htmlstructrte__flow__item__icmp6.htmlstructrte__flow__item__icmp6__nd__na.htmlstructrte__flow__item__icmp6__nd__ns.htmlstructrte__flow__item__icmp6__nd__opt.htmlstructrte__flow__item__icmp6__nd__opt__sla__eth.htmlstructrte__flow__item__icmp6__nd__opt__tla__eth.htmlstructrte__flow__item__ipv4.htmlstructrte__flow__item__ipv6.htmlstructrte__flow__item__ipv6__ext.htmlstructrte__flow__item__mark.htmlstructrte__flow__item__meta.htmlstructrte__flow__item__mpls.htmlstructrte__flow__item__nvgre.htmlstructrte__flow__item__phy__port.htmlstructrte__flow__item__port__id.htmlstructrte__flow__item__raw.htmlstructrte__flow__item__sctp.htmlstructrte__flow__item__tcp.htmlstructrte__flow__item__udp.htmlstructrte__flow__item__vf.htmlstructrte__flow__item__vlan.htmlstructrte__flow__item__vxlan.htmlstructrte__flow__item__vxlan__gpe.htmlstructrte__flow__ops.htmlstructrte__flow__query__count.htmlstructrte__gro__param.htmlstructrte__gso__ctx.htmlstructrte__hash.htmlstructrte__hash__bucket.htmlstructrte__hash__parameters.htmlstructrte__intr__conf.htmlstructrte__intr__handle.htmlstructrte__ip__frag__death__row.htmlstructrte__ip__frag__tbl.htmlstructrte__ipv4__tuple.htmlstructrte__ipv6__tuple.htmlstructrte__kni__conf.htmlstructrte__kni__ops.htmlstructrte__kvargs.htmlstructrte__kvargs__pair.htmlstructrte__logs.htmlstructrte__lpm6__config.htmlstructrte__lpm__config.htmlstructrte__malloc__socket__stats.htmlstructrte__mbuf.htmlstructrte__mbuf__ext__shared__info.htmlstructrte__mem__config.htmlstructrte__mem__resource.htmlstructrte__member__parameters.htmlstructrte__mempool.htmlstructrte__mempool__cache.htmlstructrte__mempool__info.htmlstructrte__mempool__memhdr.htmlstructrte__mempool__objhdr.htmlstructrte__mempool__objsz.htmlstructrte__mempool__ops.htmlstructrte__mempool__ops__table.htmlstructrte__memseg__list.htmlstructrte__memzone.htmlstructrte__meter__srtcm__params.htmlstructrte__meter__trtcm.htmlstructrte__meter__trtcm__params.htmlstructrte__metric__name.htmlstructrte__metric__value.htmlstructrte__mtr__capabilities.htmlstructrte__mtr__error.htmlstructrte__mtr__meter__profile.htmlstructrte__mtr__params.htmlstructrte__mtr__stats.htmlstructrte__net__hdr__lens.htmlstructrte__param__log2__range.htmlstructrte__pci__addr.htmlstructrte__pci__id.htmlstructrte__pipeline__params.htmlstructrte__pipeline__port__in__params.htmlstructrte__pipeline__port__in__stats.htmlstructrte__pipeline__port__out__params.htmlstructrte__pipeline__port__out__stats.htmlstructrte__pipeline__table__entry.htmlstructrte__pipeline__table__params.htmlstructrte__pipeline__table__stats.htmlstructrte__pktmbuf__pool__private.htmlstructrte__pmd__i40e__ddp__device__id.htmlstructrte__pmd__i40e__ddp__version.htmlstructrte__pmd__i40e__mb__event__param.htmlstructrte__pmd__i40e__pkt__template__action.htmlstructrte__pmd__i40e__pkt__template__conf.htmlstructrte__pmd__i40e__pkt__template__input.htmlstructrte__pmd__i40e__profile__info.htmlstructrte__pmd__i40e__profile__list.htmlstructrte__pmd__i40e__proto__info.htmlstructrte__pmd__i40e__ptype__info.htmlstructrte__pmd__i40e__queue__region__conf.htmlstructrte__pmd__ixgbe__mb__event__param.htmlstructrte__port__ethdev__reader__params.htmlstructrte__port__ethdev__writer__nodrop__params.htmlstructrte__port__ethdev__writer__params.htmlstructrte__port__fd__reader__params.htmlstructrte__port__fd__writer__nodrop__params.htmlstructrte__port__fd__writer__params.htmlstructrte__port__in__action__fltr__config.htmlstructrte__port__in__action__fltr__params.htmlstructrte__port__in__action__lb__config.htmlstructrte__port__in__action__lb__params.htmlstructrte__port__in__ops.htmlstructrte__port__in__stats.htmlstructrte__port__kni__reader__params.htmlstructrte__port__kni__writer__nodrop__params.htmlstructrte__port__kni__writer__params.htmlstructrte__port__out__ops.htmlstructrte__port__out__stats.htmlstructrte__port__ring__reader__frag__params.htmlstructrte__port__ring__reader__params.htmlstructrte__port__ring__writer__nodrop__params.htmlstructrte__port__ring__writer__params.htmlstructrte__port__ring__writer__ras__params.htmlstructrte__port__sched__reader__params.htmlstructrte__port__sched__writer__params.htmlstructrte__port__sink__params.htmlstructrte__port__source__params.htmlstructrte__port__sym__crypto__reader__params.htmlstructrte__port__sym__crypto__writer__nodrop__params.htmlstructrte__port__sym__crypto__writer__params.htmlstructrte__power__core__capabilities.htmlstructrte__qdma__attr.htmlstructrte__qdma__config.htmlstructrte__qdma__job.htmlstructrte__qdma__vq__stats.htmlstructrte__rawdev__ops.htmlstructrte__rawdev__xstats__name.htmlstructrte__red.htmlstructrte__red__config.htmlstructrte__red__params.htmlstructrte__ring.htmlstructrte__rwlock__t.htmlstructrte__sched__port__params.htmlstructrte__sched__queue__stats.htmlstructrte__sched__subport__stats.htmlstructrte__security__capability.htmlstructrte__security__capability__idx.htmlstructrte__security__ctx.htmlstructrte__security__ipsec__sa__options.htmlstructrte__security__ipsec__tunnel__param.htmlstructrte__security__ipsec__xform.htmlstructrte__security__macsec__xform.htmlstructrte__security__ops.htmlstructrte__security__pdcp__xform.htmlstructrte__security__session__conf.htmlstructrte__service__spec.htmlstructrte__spinlock__recursive__t.htmlstructrte__spinlock__t.htmlstructrte__table__acl__params.htmlstructrte__table__acl__rule__add__params.htmlstructrte__table__acl__rule__delete__params.htmlstructrte__table__action__common__config.htmlstructrte__table__action__decap__params.htmlstructrte__table__action__dscp__table.htmlstructrte__table__action__dscp__table__entry.htmlstructrte__table__action__encap__config.htmlstructrte__table__action__encap__ether__params.htmlstructrte__table__action__encap__mpls__params.htmlstructrte__table__action__encap__params.htmlstructrte__table__action__encap__pppoe__params.htmlstructrte__table__action__encap__qinq__params.htmlstructrte__table__action__encap__vlan__params.htmlstructrte__table__action__encap__vxlan__params.htmlstructrte__table__action__ether__hdr.htmlstructrte__table__action__fwd__params.htmlstructrte__table__action__ipv4__header.htmlstructrte__table__action__ipv6__header.htmlstructrte__table__action__lb__config.htmlstructrte__table__action__lb__params.htmlstructrte__table__action__meter__profile.htmlstructrte__table__action__mpls__hdr.htmlstructrte__table__action__mtr__config.htmlstructrte__table__action__mtr__counters.htmlstructrte__table__action__mtr__counters__tc.htmlstructrte__table__action__mtr__params.htmlstructrte__table__action__mtr__tc__params.htmlstructrte__table__action__nat__config.htmlstructrte__table__action__nat__params.htmlstructrte__table__action__pppoe__hdr.htmlstructrte__table__action__stats__config.htmlstructrte__table__action__stats__counters.htmlstructrte__table__action__stats__params.htmlstructrte__table__action__sym__crypto__config.htmlstructrte__table__action__sym__crypto__params.htmlstructrte__table__action__tag__params.htmlstructrte__table__action__time__params.htmlstructrte__table__action__tm__config.htmlstructrte__table__action__tm__params.htmlstructrte__table__action__ttl__config.htmlstructrte__table__action__ttl__counters.htmlstructrte__table__action__ttl__params.htmlstructrte__table__action__udp__header.htmlstructrte__table__action__vlan__hdr.htmlstructrte__table__action__vlo.htmlstructrte__table__action__vxlan__hdr.htmlstructrte__table__array__key.htmlstructrte__table__array__params.htmlstructrte__table__hash__cuckoo__params.htmlstructrte__table__hash__params.htmlstructrte__table__lpm__ipv6__key.htmlstructrte__table__lpm__ipv6__params.htmlstructrte__table__lpm__key.htmlstructrte__table__lpm__params.htmlstructrte__table__ops.htmlstructrte__table__stats.htmlstructrte__tailq__entry.htmlstructrte__tailq__head.htmlstructrte__timecounter.htmlstructrte__timer.htmlstructrte__tm__capabilities.htmlstructrte__tm__error.htmlstructrte__tm__level__capabilities.htmlstructrte__tm__node__capabilities.htmlstructrte__tm__node__params.htmlstructrte__tm__node__stats.htmlstructrte__tm__red__params.htmlstructrte__tm__shaper__params.htmlstructrte__tm__token__bucket.htmlstructrte__tm__wred__params.htmlstructrte__vdpa__dev__addr.htmlstructrte__vdpa__dev__ops.htmlstructrte__vdpa__device.htmlstructrte__vhost__mem__region.htmlstructrte__vhost__memory.htmlstructrte__vlan__filter__conf.htmlstructsctp__hdr.htmlstructslow__protocol.htmlstructslow__protocol__frame.htmlstructsoftnic__cryptodev__params.htmlstructsoftnic__link__params.htmlstructsoftnic__mempool__params.htmlstructsoftnic__mtr__meter__profile.htmlstructsoftnic__port__in__action__profile__params.htmlstructsoftnic__swq__params.htmlstructsoftnic__table__action__profile__params.htmlstructsoftnic__tap.htmlstructsoftnic__thread.htmlstructtcp__hdr.htmlstructudp__hdr.htmlstructvhost__device__ops.htmlstructvlan__hdr.htmlstructvxlan__gpe__hdr.htmlstructvxlan__hdr.htmlsync_off.pngsync_on.pngtab_a.pngtab_b.pngtab_h.pngtab_s.pngtabs.cssunionrte__distributor__buffer__v20.htmlunionrte__eth__fdir__flow.htmlunionrte__event__crypto__metadata.htmlunionrte__fbk__hash__entry.htmlunionrte__timer__status.htmlexamples.dox/usr/share/doc/packages//usr/share/doc/packages/dpdk-doc//usr/share/doc/packages/dpdk//usr/share/doc/packages/dpdk/api/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.opensuse.org/openSUSE:Maintenance:14292/openSUSE_Leap_15.1_Update/27546aefee0c6b9191afb4043092a567-dpdk-thunderx.openSUSE_Leap_15.1_Updatedrpmxz5x86_64-suse-linux         directoryASCII textHTML document, ASCII text, with very long linesPNG image data, 8 x 30, 8-bit/color RGBA, non-interlacedPNG image data, 7 x 8, 8-bit/color RGBA, non-interlacedPNG image data, 9 x 9, 8-bit/color RGBA, non-interlacedHTML document, ASCII textPNG image data, 24 x 22, 8-bit/color RGBA, non-interlacedPNG image data, 104 x 31, 8-bit/color RGBA, non-interlacedUTF-8 Unicode text, with very long linesPNG image data, 1 x 56, 8-bit/color RGB, non-interlacedPNG image data, 1 x 6, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 12, 8-bit/color RGB, non-interlacedHTML document, UTF-8 Unicode text, with very long linesPNG image data, 6 x 1024, 8-bit/color RGB, non-interlacedPNG image data, 24 x 24, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 36, 8-bit/color RGB, non-interlacedASCII text, with very long lines, with no line terminatorsutf-897cfcf2425c3a7285f42549fa4cf4378e2124be08617ca3abdb2b1e822144a14?@7zXZ !t/?]"k%r=3Zu-A"] $^NI~:e85N*sF{z{A*mv%!ԑ׫9%4 ǣ2`47LF/}ɔ;*xȣ\YN0!hxY.r[;]`- @cMh:,ǜڿiYBYM0#!f`k{y'FI(ێgEU0KDR05[qo4&4̶0SSzSRW ]3"Pyu>JzQM5pF:2:'kd1Wt!tH8Ny^ePa\4Ȓ| _KU *✊eia΍U# XjPP!KI.[_h[rX#dnQb8Ɍd`sGCcYXi̯N*x|p,+C뀾gO0o͇->cgRnKL\t$@rYԻ٘aL!u>ni84sxLn%_! Hs?0TNu Hzgl@FcNP;-tN,w[AMҏGaaяz-~#'~G&Q9k)k6gR?&4=cM|pb!7]YS4+O4kS@iݸQmLs4o[c;R *^Ƶ5iΒ}>M0RcelP_A/ 2yN(g+Ə

v',=W` L lqh˻ )v&rv.&r:U MفsK)Q@.@/Aٽ/v81s`{@w^lҸy M=2&~aH]5WQRSN%q"m'l_H=KZ. `;2aT쪜W^S,b2O> &M~8FBH[fZrW< y⛉%ʡ>uo,2!EPdm#^cRWd $DEtÛTyÌ63vж1\!ӇWuWyQ wPF87m\U~ m:У)+ŁطƄ||XԄ{C>e^F\c ZOA~ .7SȊm_@ڢaπS$LT&R1[-@?QX #|uw?y2#!ش\GOs쌳{ <)ƣ CY}doM5}g[yBwC,@gd_w;Җ +"'I@DxWbYQ^/Is8,;7l]ɼoU+>K[m px)@+GHzZn <ٵoցqmL`zO=&04} 5m}R%42SR22 ZOQ9lt{awlD 63ў.x4(5j)+\W /X]pqOvǧ]ufu m°'nZԄ-'D˯̥aȵh~(VJD[X[=2޲}=q;a T߭+scu2LU)>o]KDÅzglV=/z3Aao^F>Ug!k_?NWA.n Hc8/78^8(W'!tD1Ikbd(wBJ/dV0}EF :upfKrK;qMP Z$H r'u7 =$56 g62 r.fs6vsӻ)+Ѕ7\l#^GG:u->cM&ę|q_k][d=mvm˃Go c=һf`'>rg/nmImϷaC:ielh*d&hkwi+̉"@fKw$;O#uˇؾyy f?<5l-:睴Ɨ8TIۜRڳ66Xԍ-b*err!۰V"%lT_cN5@^~g;k4F Ct/~$ bƻҐHSV+>{S*0_L(h+FDqK.h\ i?cw j;lSJ1$ VnT?[;a$Mߠ )TzbJPћT[i]™R/'pΎqǬnBgS!:E£ŎMbewdf:jрp7xEnT!`]x 1US\>9Xi:9l y:ĶB OƃLoH7j' k9+5|ټi ܚ당]RAPWÈ)0-:W `|ߎI i׺i%C]/1 %JPF ^)+/Z(dF'nb*=Epン-xs_ 'aDAxJ"7Kٌ{ @;,b^lWuEX$L22f+e.PtQ@O3bnqc,rx,XMqlЌPm|YHrJ FD9A{~Lndt3\zɿy^}LW/NH-"*F ,OYA^RVmk\6ّ;/H{lV$XV9p>÷ߙ{,&Вb(Z,-=[t)s2e&C %Vj]d2]c֞lcfIuIpa3؊Pt&:$C#Kt@}-‰&Vo~lvg-"WQAV7堀cr@BCKn=$*1xiOKg "Ƶpmyij%ky4,mv5X/ѯMl ^drSlU hgy2`ie:yTß |y[<=Tzy ?3Nɺ6چvtTJv!'dEo\=3Jz5pCCNJ21)Ǣ_RnIdH3mAHlU`6;&b pT^-galb/r˲n ҄"Y1"P&ZpgSgxhٌs]m塚1XYSmb1FsQtцґHs\aʀ{>V|W,vr=, cxcO{%0xGf<{)o)MkLRdd|bKip.xOFco{@% µT| (Lw>FҜe ]d5ݠڮ9Hq!)(Vj_֎nW{w FlPPؿu0>` X<6oٔn8㻲w2[ uOR `TJoUnD/٢J鲞*mLi*N~-}+'G6@/)率˕`'n V¬ _MHM̬ sR^U^ou.χ8tgkX{^o %;ce{3\ /IP.tOpOHz=AsyTT$0 Or6" }hT󹸭3kr՜֙e"sm8nhI1`|. DX>CJ5=a f`O~R-Cn@Nj pyiBKa4,U,Q^0ߝ-/P]Vv1̦1WNT%62D`PM9z6.tƕpey`𚩺Q^%*4I^H=6h=a_U{IR3b^TE0/؉V60 5F6C_9ٗWbbflܒ͒赡 %V㦸5s6wRր{PVLޤdq=.Aє+>[Q ! sF:7=m6 06@78:%<*Hݜcʃ;(;^rEyf[%3 8Epd0ov[3I\@pUry|K)t_զ@ɛ2T · Й}y 48tZ>fHP0Bj+Hp1tIKe)qGEw>@[E#GP(\XwU%\ɟv2n/22  ek#4uW#ais#r\ yJre?\ؑ,Bv 4_BPz`k\[r0iiMIAk9WaI|()5"/+|!0+߻Hߛ'OqAP5gDDZQSRLQ0Fr`^lzmnVw1\cI"EKſW[5k6p%|L ak N+C (`ncZ奼)*LοK4bTRy ewnI~}pFy(goRNPoڤ&mTq$%Y&VUm vx+1u!t0"] ΁*ΈRteHUf>fIGw4Z 3Hg -JBS@]PU7g!T{ތm٧GWM(.G9J%jI" QYt[H(oSQ"GC}x8F#+Wư1׵6j)$ӚSRU.Φ{&0҄*J!zz3Hm"B[;ƻW`}:9~P#tiGB G,+n2:n s@ۂJ>ei+JmB/LB!_ɢ< ^-wL.->m4 K:V[`Gxߐ[ZPv@o3; cYKY~q:4 + 8)~!璢wQy?߷*a{ 6'ǿ.$Xz#'hcB LNNEw؛%ؖϮS\hNԃLV@;Dw*AR q->x]Vn=|͇̇ ۚA!YvĞ;/CTP=G :MѧbV39>y~.ͮrw2za|ߗRXݞ|4@*Zb&rwAԟ:H1B<\Y4nm@-,me+?H$hy*լ /9a+ qު%ߌOnOE̜,Eogu0!1Iy:(P 8>Gd;1ab"M(qJ>!qEbJ[FM̛>>-ʢw?PG+^ nD6ќNO0J -"lƥ}%)2!^~zQqg.i`v@Nhb-JaxoyP&i5ю %3f(8DE@eIkAbJT  ̳rD.{)wH/%m'JtVsZ$Wy.t!ۗLLdn)b_$zQc_3vۇg뮥ࢤIl%xwx@n"c|/*[ )J3R SkyJT[mԡbr`&L}sRBɶ P$4 7svTb>a!mm9b4W<8J>/ i+CWZUɼzm0Bsh:<D=feuc5qCTJE9\`$ iT0M `,]e7 Q"1CԊDĆiry6vs2 }+YVа 2k匏 ў,HG&ɽʹJGy C#`Rً,FabY$mEu ƞ3XҾq?OGHxKQh'vØPimUԹ3_r4L |6쎶 dW!]Yi\KAࠐ!6[t 9"-66Chݳ91(v2NrZV i8򘘫{\!TdϾahB,- Y.ݵe9/6l'?s%T0r`ȓS1Ю߆"cOm&HF8Xb)ڄ0~S4MPA1 C/]K7ojeo;KܙRڡ#w,hR}G VxQ|[1CO<rK"dﱴij1 y&˺|Mg?I$NB? 7p;U = ;e8ww)pb~o!dhe mp82WY"Ӹu6C=\ AMp^XIEכBq+d|*QL=~swڢ2p4:(-" TGO/ _eӽJgY_.&bUُxpm}'=v׷fV do L XC\F8vlղ%-LϟJs ѦQXWI[oW5n,R{THr p'IQ|+tj^@1NWhL!'p#q\`nqK<\EH @뇨w_=c wj;nϞ,"Ns/`f-s5^bqƌX#Sw \o _Gfd,iP2^ /c-P^duIk$\ <ը n oFtD\Б. U{1o-(k+p;6ğL|-#tk#V/.x3d9D΢u߈9OoG=w k8S<e91~7PvZɼ ~Oe {bk*Ce]'>}gg7p`KܽdcJ,NC{ ozw{W˩p$>A}L4(-( v9o+&KP ;j`jRȗ<2:kJ-mPf)%\;Jڹ("blSp?/p*G@:mTQmkQ.9)`Rݗua*fik*w FSIL(ހ=wPGDQ@A<)LLCm+?T@YSѭ}e3nL#rMj+={"`!ſEZ ɿna ZeR& 8VBL&,t,ubEs+U>Mm 0Vc^W=@nFvOd_" g~鬤ҵJS 8||4xպ5{~d2 Ik} BmޜJ߄"8A x/ o,X1c:J3sldZ+0Ihʂ{g Ba:tʴ>̙P1iINoj^6FOtPŬoq;1(ȏmN`cu 4*4d2)#E0ﴼ,݆DК=>[KZ}xKg%b[RSz}mOXy + Qf7DhE\9b]kfЬܘx1OWSr2o#k;'@`&qXIJ=;VL aA&(Ȭmзh2濏Ny_w < \|;ӧ ${ 'Jea*;K@oX K_=Wgun~'rMLW {t q"ZoZ%ϬC7ܖa הݙx~s빓[5U8g2Zf= [h{:w7w֎{J u{F7j7=H/q7Xn dZ.d0^>[f$v1?U|Q18-|xjr60*}likZQ|@`JjD9Àg@ogŐ֖Wo|Zeq,8 Uyh8G~,!UDȰJHrRrq ÜmaZ/!ʇ]VN bƫA4QƝͧC] Zbt vadǷq68 Z&?X.:ZOԈ'i4 7xw+;~pbQaiH69Zgi~ߚv1@&M/WR0Ylþ3? o3 fO{ {drRUr~6X7F]cԙ5^\+dqfFaNq{4A8ȸ2`g$8)`R0s[翸!KngW/D/Jn>#QRwO> L@Ëiq\Gw͔I.R~-E2&Y)x݋s&~DF4ш뗭0M hf33?הWn i /@':]dH~EНyhr?zmw}9heJ]`YPSma6܄K+p۴*n.LJ`VZm \K_8K#V$3%w9m 9l91oX}#Q]a1˫]NԸDkj0R!?,B6z'wxt RA4\ A>!ME#=,Pʳp_#+ Q TX0-[bȽ1?8(0zSz5z=>4u`^`s4T+o/cYEŀxI(ũC5*(֜yv%tėt2kˋ L3=xQ#Y]7yoإ{yS˭m ` RD RŁѷyAl$Z6`5&O](0LvS,SQ(rE%Qy߫h3k8.97/sɳQ`2-- 2jK~(&|ڏ)DTu!8yӿ='SdH5'$VE!4Rthέ̲va"nYj'UAuvA @50%6Wfd|KYοS+x*J2.1TxAS*.W2)@voMv_#ԱT'wB#>*hFOe&L]:{~2]W<?eUj]gDATlA#٣D!pv oQr}b'lVDeO]gFa?ttSw0WVl{c_[7++(.i%~OG91ݴHoHۘ8 RkjΞ+!Y|fW4Cmo~!C9Ƣ{Wx!AQLSV jI)Kّ\bŒj/52YD0̱(},aΦ3yQA2'̓lxX (iЄqYoANWDhoc-$]s#3Gfo=N2ۣѩvf kgl] ^gqWpK8P Eee (+[.O7a8k8šmjAFkCU/S)6H˻ҏ^n3ֺ%joT=V4?URk"6T$|_ }.ƽp2 .nT_{ҊWWG`gOnYЯPL4;6fڝ.@v*5=d\qQh:2,\Wv3K.vֈWnIJo >rn? -# qs.'~f;U>rYȮ>)l-ȩ2xk-{sd{R0D"sօ-^_n%MJujl'Mio  bLh"ryZc3AL+T_ƾkdzdrM-9eZED؈L!f^|ZVGɈ$nLڝ`ԓ/!2G0@oꗥIOt% ?9%] cxRvA6Ks& yr+ONe+a;4>8m9zW}@# 5>6UifROt2k}RGrBJ|ӹLazPvgë/EŞ*l2o΢%zzkP,EXfZ@ T3@i9C㞄 ԱN^]N?rS Qza)z)RȲDŽL9OlG}=qy^D96]#Goϐ`29ʇ 4JĮ4gkFU%W‘ :XeseB`g0gm m(pV uctg oH&(w zf\Z~SWPeUiethQHjNW+jnDO8P~Z6zTmx <O!! ]cZZ(o5-X,@XTkD4Z{YV:hN9OMHM"H- {D3ؗӜ[&]ۃg? Ln1lx] Kngh+EY9ׇ+UE\iSvtZ]a2XްQo ѤCGYnJ ӣ{Gh.^VU<\w+֔9t\풇ZǗOD0ТsI׌=jȽ>J.MM1/ ou0k(8WK_ʓ0T;`$qP~ DŽe/oD(3y+hP8Iɱ^L rjvI,TRmMmIx ]+(rP`bctkILsas -fa R6pבzlG9EbwQfS90@9!&Yje6دȾ%n؎$Wx =۴r%GbnYwL0o-HӠ4Wa4kMwSf AXs37!#s;PJ#%@Y퐝,[{}{|Խ "$':ΓЭ$y4w_Ay{׻z* iA *5qjc+ O崅XTHa/5)q!U޾O?%0%4Or47[ř+;ŵ3@A)|#12%b_o~t7M7sݼj&pK `qksZ@idTC)WlSף[j2`9AEڐ[=by [=!MmšLJd^C1^Y& MCJtemL2c dی!USN34FL0͎/ Qb,0/*g J!o0Ȅ8~VȔͲ3H>~//j,6oĘ!k@kw^4 uގEA^aL<)-b&e p8N%?[K# C]azAy]ޔpO767KfEI"j4NһO'\?SW~no_>Qe|}p? 8!N۸N?"'>آzg3|S"DwClu)drC2xMOP y})}}-ATɗE!y+|ti_^ Ç9Tex@rʰYhK5cei TFP-CJ\:<>)  ˻/ă/U2Y:q1;a=˵lrtDjH^YuH)!Y3@ ^PSq)F阊~`K=i (@3zw f=utKvgmamT57g|B6)֢\gҌxsb+A^V_КHU)Y&?i@*O۩ T[50hr7)!>iRڷ[_7Y+TXiXYw1QQgЮeruvsc3m/1tMcJ{tsk^"7,+BYeFfrcq<*IzE/f]wHO,:ٓ+M3h)a2 :J!zOzZsXGv,db}Hɔ9 gyM1ɇjJc.w?]ǣa:uPq_3 < Mɺ3|X7,ŠABW (_* ) E,Ungx0pTYS*~M'țjPk%>EsP ")-RJuC XY{A8`-i9HZ%P,Dtf^H4C bR"`Kna.hK< ho"7uh K"qq/R.K)ĝPeL V@x^t;灜8 ;)LєS.D{;C!qx㚡z#Q&˧t̞-';j7CHꔦ'Xfh[z󺲺heiP!]r^+ H];XʭTC|p%9K &_]3:Y~%W~CYiCjծ{vX[s-i)ԹYMp롶9ЋKxdXtCMc餘sYo`6J([[y|cmk;=c8q F]%N"G-yݷ\i-ieIFՑTxztQ"\`G;-M9nB WLFXfMϓ̘40bh/}rڸ帕iz2,5yc u$e&t v &)8s,R5jQ7uv1oS#MliX@n<6S~Em%!gÎ5_LY6\x!R_ 0}VjxA6gfw^Tr8H$RؖEGep?CN*%~~1Myvλ_}߯XÞ&D. 7[]?cgY%2J<,m'0Ք["鿞H3h`]u|0W`}.=\镖(L7|_@m.5)5}ˡqL6+^S-XƅxV5 ,-IP$NU+HDFߟȽ Xa^Cge<])Ʀ\> [Ԇ!:ho#b9}j'@T 7mJ}Z2˸^2)fؗ@ kID_dAc`)ge?SܞtlJVq| zNZhm[A E^4ܻq5YRSpq>N;ma{aO 2@$a)dS " B?L.i臑MaӍ&ube4a,x8~fyQ6*Ә$yόy[kDҫ2}\ZCS"l9Ŗi< x"3;7 *јq1\,"Q,xgz? s]leQKJ[aA4&}^PKLKҖ睂XθX>IZe`2>Ga{{+< XO@d#_!wQ]2 -)))PmC)f +& *Xb6殔@81͔!4OoB";g^b%RH'KD8k3m¬:{FZ݅둏%S"@g2(/5pZdjnaD o% ĽbMLA^9(Kfx.|anE9ޏ jc\)9ŌAFh7Gfvx>[ ^CQT6Ke1=J$nNfs)oҰMd.&ʲ+79;pxۓyp؈֕ݾ |D7,Qaph Y6Vm88(qx:i Rطg,v#jv{ &\J~6UmfKoS= OttiFO(+WT ^;\_,Hˁ~륾p]˴"ԣ{FcWC5]B%,C?'y`o_KGwcq$o%P"x j;6Sd|IuuvvvQCSyOETӷ)QN` %VA$ { k8Wp7y=(~uˁ yW|9*jgf9^0ī ZzĔwdř͇ EdeQ/t3} Չ~6ξR1Y >xd'HEĭ r=rc#WSidq |#%f{oF: k֜`#М0K2S{(2*dkؿwzv J‡$fisQzևB24B\!IB(%t|U}պ[H+Gsַ[#fa[a7yôW0d,vO?2SUO{|+["cxn9]EҾi=F4F9XlgOjo|%@.m-B3`|8V(oW!2VkA$t՛hrjjϟԎ&V YRX3.xy2_=>Vҏt5m_c~Qe^RBjM fNo}=0CزS4Nw7<݈=#>kYH?ji.\d n˗M26-jz48ֱ2[]I6Ig Q.ײt*[)8z>*:˻ i~GhN,WX?7q=94«M_pa,՛@Fa)]OzG̑ (k_$?:*zKAx~eʲpggatm`Ư6(f+hyoRܽ#E_=_IkYeA ̉/+r#{bB{m즾YIM.c:YCGH﫟*nPՉוfhޭ⋂4Ƶ`Hb.dtu=W:;X2eSOv z F59L{EuP\|ml&GD!݋gGEp+M 4QZ hQccaџfYqo]AR$%I)f}oq*R\4\u1Ƶ@>[*S6ol=#21jK2qԬmX$OVx5T //~ݩs?>8퇎"4֒¼Hn.uaQ 7wW|zPV_v4Q)[q$JUyO?r\~.}hNY%JrK+jD=دU gȌa"hȺ$pa 7f \/p0TSv¸^:b,[ID3>-kJV/)dmYX2syps, %!R6<䝄b1t){KٍZL5Sluu$Vߔ= 7m^2 .PW :VՇ=T_.+dʋ}]/if~AY'1:HdM]/\kHf *l3'iw|1HKp AG;WL$N8sD<سSʆ*݅k~7zo {t0=;қBwᅰ`\綸 ؠN0_|h8YKR8 ӴaEw(w sM_m(sl\w|3<ȧ>&q™Tm–yOƵ- U1?e9%:rEZZx~g$ +(!!\( D8IJ1G.>nMʋve&5VHf*!=RpK.hxEqΐfζ,f?w {5&2WP8n !,bP)L:Au$v25=:4p:SOh2(?V.r@b+|MRRmpa~Й'̥$z3ۭd>7aݯW M98sp'4G 5Gqҫ>%koX)Nb/&DXi4hu󛳶dlNǠ/}+d[L+tLD1ஃiDT+nAo*śWz=ׁFr^[2wפiZI>rZUݿbj SR TF*!CJX<~}KZXX{3#,4a$ְO/2/iNjr< 3p5I|xwgjG@&-H 21['K(j:^WrAΖX&, ˬoEmQe&5l/ Tr:2W5j` WJ7ꦪ\Eq5< Tj-wc1U~2]p&R e\2|o"> ݄6iyw0Vu*3 L} ^b+OZLt{%/~e-oſ{ӗpyW6(߅֮ )[O@GA@P(Ye~'f|`4L} `wO?.[C G,b?&sKU:;Vߒ_:ĚIߟcR\: l-I>iDn!giQ E{K!E#rb:R$Sbq}. W[{^g6;t)c;& Dkۢ!]ɔ*{EĔ7|, ="3oߔrBrXGKh *0o@KylC q*Ί2l@P] ɰDS%iU>rZGvx/}\:u)+7TEj_ߠ~iW⩕'I{攐; 7kuEٲқdP'kCmleZz[@q3/mk &`N#5MIlT"S"Kv._V@aJLq] hrD3K>B+S3͠¾&hwHU^TP}E`**|T(vҩ3q".וSY>\ƔK:2W|[0<(Ղ| [#u1'vNftCHtyU;PC :{HyiXܿ#X(m/oN`>s9n #^R}a<`#pj&L:Rb~d8`2 ƭ9 q_FGky'5uRi ͛PQfԖ,}&3pk 3foav,oAa'F^b" H,HtVV<*;PI+Dѫy]>cw3 V<%n2]#w3tI$"VL0\[bkyJqc~pgcH'@Ƴ:mM=ĽH$,!>R~Z?S +tBP e_=\_2B-lz*N gQx;<6'/Ԍ (v" M,ػ./,}4J{~7wD_XBӍɲu-}NdTTрsM a[E<6NJvB`;q|Xy$׹[J$@XEp}UnӇ*Au,P]YldHK=:Ĺ;k7}Of=t(ŧyuq? 3rCQץ"@Oh0, 1V EQ ]rsj׭:>K7D`>ܱ|pOLxu-TrZa *xYXqg> RL\:np6xU {'}9J۪fNP<x;p)еԏo9I?fF-+kN kuR,$'1MK1p\V44 2slLJ6M*w%Ke;Tg'?oIG mnrC􏛍]n0wt`B|XqcEB0Z#J+jn`ɍ3BŐ6umÑ! mfFuCʶr[3)\wv̯AZ]P2ߢJ.ԘLݿ řv9E?7<LiՔs/..P. xɨKqliFc%2Sm~0*gۯbMV~x32SI(ؗƗ$$czP@-;w0m21_%]Z$zB돹_>ȽlL0y,s؅ZF/BA9 ؂_2vCaF/T D\ȅ)4I bߢ[u[V(Ԯ`LOR Vҧ챌sEC?q@*p#pǑa3v`D"8( 3Y 9 G+&Si5J۲{%JAf.PƢmԝaODhH[C,073s"8Y(Qf 2/]G.u[#9Eek\KΗ_uuσo7k;GquV3-R,fl}Jۉ$^U ;pY%es0x9J0TyE#aDbmJ>2aYC^?1i#}PX\<%r;e!b4KYp^`LU̬>ik M -q3) b%^j1'0tZi*tɍm@tD 0:RS=/ZliB6!> qF'\%^J7&(XC`FDᚠ;J'z!)'AaZߝ"`{F`zO#\|NojP 9"CSpC!սV#fX'Of6 遞Ɛ9\A@_ }zA_{I{xS=#M*AkU6` Z\-V 7nL˽Qrkę9S\ #+)6oDĖXɶ̫oDk8B,Ve嘎&NG@E!SrcUϢLVti.xoeVt# cɏes.Ty>&a{ήۯZ/& mE@>khHYڽ!8'Ro121ۿ0vE3A`"rMڌ97t, _v~_ |P?ZL ^ y$A&QvWdEy(W}2gHgj;i5M2av3>*p U%w_e*y{!AZ( μH-L91KJwH ǧ*/'Q ~Q<' >Y-1VwBt:&̡!j{o~sHoݯ:eh:1Sֿscو"k>Hi4/ֽR9Rzt.pVzo˕n]tbQCPgY4!n2]RI@0GN&ugJs'sz[.^" Uv })f!N,1=9QsNLmzSrFBhNXrE1@ځ^VȞgUwۚ{}5W=mXPOxNJќXM-t)4]4ƛw8E~VGb%xՑp֘p>%Ā|*0 C[{[$"_)t~p SQycmM)wS\:I hԜKRO|;[EM]|6M^?'r"Pނ#{y O &1#8\$6s,;j 6sK=^0#j_9i?>aMjs[_15+9C!-Р7=e`PF"zʠ۶DQObӋ|D[ _{=- T&o0+bH%$ "qZH8݊c.ҞجhIt^ϫ̈́۶w<O\K|4V~_>돓K'9+J`0r8,.䕜V'SЬ#|ڹM/P3^Q{Z)~BTdWH|oc`a}~t7r`%--싷QGPSX&YnJ= F=$X_&-H3' /ЃL2X a XV>eR qQ]tX/GI\OAy+7$2lS6J{/HV[pU27|;͐F x` u˺O^mʚЙ(n{Q,dX?SGz{Y5ZF9=N!T$TJǞ0idU mTEHEU߀pxO&OrȔ/ݯDģ8̖w=Nƿe)^QԢBu.lB{o|y]ȉ秽[2N9|uW~y;-jq}F.@l+'G1 nw A;+/ɕ'04߂޾M0`ǝTaAT*z( PfOC+%J2禝,|dXk >r s[yQ eʈ$`ݚτ#8-DoPrLwi3IWyA.S{U,>'_  f&S<&`B3E+"DlDק3l1SUr$8o;vK5-spn?e!j|ݸdϩuVI}'UoP{&\k7fL y(zܖU3P~0d:ЯU;+pW`hs]ԕQѭ ˿kd}<#rj*\Btd!/Xe[t< Wyb8a؃q~y噳U#:sFt^qAD :ڠPRFSp3&8nAN.2xQ(@~Է-ƾhdh 1^_VU] k]4-OUsp%wEDTXlriXguyhKO=tkŘm-65dO4Pc^Ix);EcISZ#NL=X01%?4Zxob4D7A!H!HCW+*eOb`5.k~-|p4˃ur76״Mp:?x'w6ZTy)^~$kFWս㼑_"` !F).1lrr`|yXjzSm*h>/@$cb޺3X,8AYHZ.h0eD6m~vz<.Sȡ=\_ԗ*9ң2 eݛ 3<{NFA9]eiy)*SjD VlFBOfY \aK.\.+FRC"}~LN׃,^-ޑNb`',]i0MZީ(?qZ !U̺y'DC:Y%m$ÄTt~@~uM!/JmWhf?{m jjȬH7 =edsl4 R8Ȅ=dFcңE-Py:ӺxGBIjw:CPZihw6ODƻ}PvSƽ\iS jQZ9>+hFQ%M5XS 3+>~ovKz5hFI !%t' C;67|3T26w.`GJMp >`A N t* =^4M=lQuhr7cBz\/фf?EygVwLyyjwѐdOwҊVi[_爘Y<2*?c5*5P2AONj(nI]ForS*tT'U0P]1$& ty83`;*:*gaz:`EMHޡMt+iDsӴMPRo{!(Kdo +|jb&(&`֡{uíI7{kd@"vhfc#z+9RJ.AceL? EP-UBNz~OU)kǢpL ? vv=F69YjH]gɻn/,DJOHx}Ÿ~?,)?p/O1cX 6/F6ckp5|?Ar̟燼tgL?^d$.EmW2gz~Z V.!lfH?fV50| Q |3mJV4sS6#w 3Ui3>962%*a{ɴYyqz6I1a;/#"[#/[ҥXZj" :˜iR0+[uo,ӅK1E Ԍy膱1 Ps (󺉝ΥZJe_8Pݚ 3UީV2q)/f1eHHHƔ!jSAJԸo'?Y!۪v kС{ƀǔ\hnnv$y1,mO-%#3]iq\"64К.%Fg{MIn2d7$,bBFT O)z2s \A/'씨l=Hry5|=5e\h ,5ϤfU 䆁,JF)'؀=qp/KlV~7wOiB(2ټDB~ gwei <v ƓjKl_Gs#BM yU,CBfWmT7o߉m`SN0jKlMh_L{y߲)a Nuoµ+HF(k*p5yHK%aop6%8;߆[eTpj/b^ӓy ! SB H,o[ 5xV):Gl] LҬ^|5WO"8r@Q)'ȣLKg^%2~y+-rR5&1-ĝ;3%G7ǪO滊%,ML)6*HNXLnFt(^K%\ ]:a{F[i%39AJUmC! Kv+B&#{aCߵ{ҔAG`z?bhMh`1},D!kmY ^!d~O.p(LyH\\^G9q6?)h)_|=ٱS,*:Rnt{h#Nsu#NnvdBmϙq!H]'>:FuF{/ݝʷzy_Ćbԫ k!l:G72HF-a;Nj)^u?PiS0K%OBy(q %{+e?M؆B3r7hk^fHCs,U%.;tP+{:|{8g3ݬm\8f܋aܙU@ϱK߬ tЃ5Of-GhRAOoo(| ,r?hG(9֘ u`"~4_Ykπ<#ge^S>I?#quQ1 濭aCC̮ѥ GL`2^HKd)VڌVl1j1 uvX OTD>ޮp3)VrGI`)`I9F} ]N_vvJGנuc'n]xV܁ l i~dT'B:~2aIln 2x-ÑZDu%a17RK u|RlU|~>:D Uù jR(jۉp.%Kp\V5˺ÃsGuoJ'ܳU W~L'ߊW돓 f~t "`=J>0<-ʧrӖLyx07 )}RU1#9S'1FJ60@:]p+[Լ8/+N⋜]\2JMJhe &D JOs-ZrT]F65%ASLp>\i#WcT rs]bW @:W[ISS4 b(4E|C,{|KIs->6"22ǩNa9h3W lI&1utppgoޑS"‘;WZϞ\alA(9e}ArRS(fB$D1>hc80ǽ쇔1\&O弲GH @ ]-C"_G\)%f"iDl?_z\N{Ahf,`=aU7IJf `l,˰72<:H|-!gDmZ~P?E A;Ppg)5ϵ4ADŊWY!dÀ/ k2IL%"W`7o[t׃7xTD6o)N`j] ?C4]S7a2&3IL(4ioPGxgTկY쎶F9##vKXOVVY^'I;:B-"pt;4CG3Zx3yQ_1>kFX08L<7r4nZ-7 8C׈!:MZlz0I0< sW_0: 8 ^!sMkxn iX_QܹQV|uydZgh-}G{ F$#hyBc7HFӎ~7z7-ZU1FĮ1^R'iszXA>V}o`BiGSn)eK3Nu!rs#33ԠGU`N񷵃10  ZD&i@{Kp"+Q3>i,w-Ya 2"BϠfȨ,RzQTH5Um,A&5ZEZ`_ZMh̕f|1$b&/5<,AF01%9~c^|h1*Ή[0z6=F݌~Z6Ӊ7}COCj3lN[t jZp{V7TpaX)=ūxO<QLƟ" P(bwΗOV+}vZUD󁉡UkR%\.Uͤ+k2L!㰣}I'#Ϟ&O.`R L,9X3`P✫am591LqS`ҐקAmCpTm9~rı6q<*zܱ',B8W!KKwE`?^q@L# ,E]ѥ4~\ٔJk֛!{/素lN P9B6(-UM4Swt13+{|kyCluϖ]W#t-X޷fRl'@bӜ?Yj <>~ܜI.qCذ/ߤ z'҇ڛNq7 d[S縑φw9+!v2>lkk^j pÀRD^I⹖<|&La2qD)oBLp6vwU<}W|:W契 ^B\/-/@[UX ) |0}Kq 3U5;ffE+] BgVV Z)!}]{ 듡lLӎOmH}Pt>V;hG=Ĕlb`U^Hl XO y.&y'c@ kwEoQӈW9to^tLp0u!]n7cG 5JfQP-gl\VϗcܥqJ:£Sw~3 K#ojtfl:NiO/SqbK+MEޢ R=tf}1@`.?6 q54j58M/oa 0*EsqLp|ŝrINa+6yaa8״N/XUѼqsUqSu5K}SuN FJ2`Ȧ2lznCv{r }Wpbr?'=K8|Fe{,𤵻RJUUw9nfP3gY \BJN.HսG`՘|2:3k_nARm|UTP߀r\UY1ˆEVynC/KR h'ĉtJf&l, lջDHGu؄O\+)h\z1͠x qWMhf{q: ZJɋR k4>.)T_ډ5g + [erǧ"ål {bܬH)t*yU1[h+s - Y'\[9[َ[QGw=WEUžnXbI=0@S ݸwiy֍6//n[rWurYw)udrZ,X"a)n0 F-™fu֟$HT]X)bs%. 2~xד]Mkgf1T;;pKr Hsf .؇>Bzl~#15?aR~N,taskjo;S?,FI$.eix-E+K9b7L~pn٘ }"3׵eǦ4Nu}٣=<}6׼OY%R pz9lqNH7ƙ& eo2]D+8As ]QRSqO)2jńfb/K!A;l=E BmME<^e@?UEM'k`]:xgM>W\z+8ze55"1t3gVKOt|E\͹J5HO&/ l 5]#m\XkGp'=-,@4p*COꆪǛO/e TPWϛ1qXZ,nP^iFF%⺐3݈ }"B+#s }#PW5(h ?Mz7ے֫%=(qi1b}$QSw۶IVAbVT1BtBuhHF  m&S׽l^|CG8և`ƝjO#вϙ l-ڑ-'%/]>劐 >(|OP($sSo|vXIvm&}Y/j7Zw.p^:]}#UDsd* #[.I'B#QUv>q%jM]SbM5qI7F2+^  , &AsK'bs 7hmڿ\v8g -Ii3Ox]\0Qڞ#FSaU#-0D>¤r~˧7ӗ>cb &2o]dgW1>3M&WP:k֩Rѽ;?1RW,o-j7QɁv}ֻrܷ<13z #~?9j`"7K\ܒ $P?7.1zvQq.FZ PVav߾X*ē<}U˂9ս$M*`AV7Lh PsbSaVt,@7p:N N IH,%˻Ey= _SNe0 @L@e̦R{:D1i8T)*Ιnq:U8L̂~RX 9>v/{qIk#~.$F+Eg ڝ:.QZdB <rQEE {> =ܲs#N=+/ٕ;' >lQYJwp.2x8`%բ@ئM[)Z;xmEѢV 0^ D 2JO`:xODQ.7; XUgMrRWAS°ґJ^!dǓg%8ZH/51QQ0ɂ*6"ȯa;WV @fQOx