fwupd-doc-1.8.6-150500.4.3.1<>,ЀeȘp9|tB@b]Lln+`ΉeLW/v=ѐG RIyV4epyd/{Edn*;N;x°?ܱ p l:੃caMJWmGrEq93͉pEC: ÔY'Vk^N{pM!ppE^ldDL3ZH`ĩ]R&Y"ck3x>̫ibf$o~+>=xŽXfQy9+B}>;?td   Adhtx $$  5 F i  H0tAAAA(B8B$d9Cd:K3dFrG߈HpI%XX.Y.\.,]Q^uNbucvUdvevfvlvuvv+z$(.pCfwupd-doc1.8.6150500.4.3.1Developer documentation for fwupdDeveloper documentation for fwupd.eȘh01-ch5aESUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Managementhttps://fwupd.org/linuxnoarch, # ,o)Xr=8qu8tA4ros9PpI,o}r!rqysn L 8 11;=ZX >yS O ;W0 .  0` ] ^ M /   \+  R  !/ > > >^C M%  R?   T  TA ]J   U 1 ?    6qE E C>#oy{S^ /"n" @DQ--7)5J]  >y3on?g( DtZDH 1(S!QvzG[{v y$`;3aJRJ: O#O*L K1NNL:L^MvLHURSLTGMMMLFFM3LM5MLMCGGOOmNM9POM0LLPPdM<LOOMLLLGwGGMRM'MmO8O MvGGGFFLLLOOLP1OHMCMLLLMM OOMFFOOLHSTSTL:LSzUVTLLO\OcLpQQL:UhUL:UTL:NOLCR:QMNNLNNLyO>O L^HFHM#NNKUUVLX,Y,LNNKOO L:7w8'67787777+79w;Q66666867 56D7'6E666l666667657666666=67787!6n68667D66g67<66D9#:A::9Q:(:~7j76757P778a676676677}8768f767788778787L7 7'87$674966:&7!o J(,,,,-',m/,,,8+++,|,,,,E+u,F,w++,>,+0*,#,,E,+=,,>++,z,n+,,5,</v/^./@,6--,%-X-v-z-j,,1->-i,K-,--4-<+-s-,\-S-W,P--",,,J,'v! !3!Y!J!Y u 2!>!d #!!1!o (%%!!"("2! ! !5 I6P %uX $ &#L$$#&$e#'#n###"R%"n#"'q# #V#)"###%&1&P#f$w$$F$X"$&#/#########."( 5U+D"*2"9vCw%P SOCug`NV GSNtKQjp~~$%*+#$)*%&%&+,&' !&'"#"#()#$%*+Y`em(^E&'>vY%Z!jg]"4m(IIGD d@-;X=1IR@+c's(h 9:{v;2D?a="W#&DY9S[x=K7p 0 '  .   J`}a 1BTfM TI]N&qpilL886 A     --$?6HHHQH  .8 d   t GHG* #F E** << ++d  [d'@I q q q0!q },f[SPTnfqEq!7 p p s ^ ^ y  y  H& ' Ky~ Bzn4AOU"_1CVvx38ki7KKnL%%$6B#3a9\rgQ"cGNc\j*GGxcjU\xNcUU\xwZZ) ?F#YTs% ! ! ! !ssssr +AFF[]Q ^;">?`P4=`F.L7,_fY4Vb*!! 2s:_Nt h?W #P2" `OwlFz%}"%}!`"%x"! !g!+%!!"%+!!(&4!$''!w#$%!#%()!U!l"!"2!"-KFHGIF(H J_H:IJJEJ7IIIIGHHHFoGG2HEKNZQ7OMEH\E=EKLFFAFGFGF+EFyFFXFFEEEG F8GJlIIEGFGGxFEEGGFF|EIF(GEG'IIII_IJ+HGHKvHEGM?OF`DMIsFFFBG&G5FGG-G&FOZK:QUFPKGGHH'FG0GGGF{FeFFHFGIII]G0FOHI=GXFQFoGGBGMGGFGGGFGFhFFHQOdXs`W"&dO}$V$$&23a*&)##%$)1$$M$A#!*n*a*()$#!##$2$S&j*E*i,P()($#$o$p%:$M##$#%#$u$C*$&+(d/v!g!1$MK#T i?{BseB%(*+A+)(J*)q*''('p+ *&'>'r&&1&8'I*L,I&C* +*-.!'..{, /++,,.'+''+#/+++02w+.''o&&'0 g  ;0]#/x%-;HUu/4#FT/8#6#F!:B$'*:*&s'"bd$}%&Jpg&? PL`z;%QW2&HZ[16SWiivASYokcfYU  FB6O"A"C"E"3"51@jO  @t$Apec[pi"" ${ S : c c"U Zx E${ 3 "$&dA큤A큤Aeȇc@Gc@Geȇeȇeȇeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeyeyeyeyeyeye{e}e~eeeȀeȀexeyeyeyeyeyeyeyeyeyeyeyeyeyeyeyeyeyeyeyezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezeze{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|eye{e}e~eeeȀeȀeyeyeyeyeyezezezezezeyeyeyeyeyeyezezezeȁeyeyeyeyeyeyezezezezezezezezezezezezezezezezezezezezezezezezezezeze{e{e{e{eȁeȁeȀeȁeȀeȁeyeyeyezezezezezezezezezezezezezezezezezezezezezezezezeze{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȁe}e}e}e}e}e}e}e}e}e}e}e}e}e}e~e~e~e~e~e~e~e~e~e~e~e~e~e~eeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȁeȁe}e}e}e}e}e}eȁeze{e~e~e~e~e~e~e~e~eeeeeeeeeeeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀc@Ge}e}e}e}e}e}eȉeȈeȈeȈeȈeȈeȈeȈeȈeȈeȈeȉeȈeȉeȉeȉeȉeȉeȉeȉeȉeȉeȉeȉeȉeȉeȉeȉeȉeȉeȉeȉezezezezezezeȆeyezezezezezezeze{e{e|e}e}e}e~e~e~e~eeeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȂeȂeȂeȂeȂeȃeȂeȂeȂeȃeȃeȃeȃeȃeȃeȃeȃeȃeȄeȄeȄeȄeȄeȄeȄeȅeȅeȅeȅeȅeȅeyezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezeze{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}eze{e|e}e}e~e~e~e~e~eeeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȂeȂeȂeȂeȃeȃeȂeȂeȂeȃeȃeȃeȃeȃeȃeȃeȃeȃeȄeȄeȄeȄeȄeȄeȄeȅeȅeȅeȅeȅeȅeȅeyezezezezezezezeze{e{e{e{e{e{e{e{e{e{exezezezezezezezezezeȉezezezezezezezezeze{e{e{e{e{e{e{e{e{e{e{e{e{e{e{e|e|e|e|e|e|e|e|e|e|e|e|e|e|ezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezezeze|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}ezezezeze}e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~eȉeȉeyeȅeȆeȅeȉezezezeze{e{e{e{e{e{e{e{e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e|e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e}e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~e~eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȀeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȁeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȂeȃeȃeȃeȃeȃeȃeȃeȃeȂeȂeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȃeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȅeȉe|e|e|e}e}e~eeeeeȁeȁeȁeȁeȁeȁeȁeȂeȂeȂeȃeȄeȅeȅeȅeȅeȅeȅeȅeȅeȅeȉeȉe|e|e|e}eeȁeȁeȁeȄeȄeȄeȄeȄeȄeȄeȄeȅezezeȉexe{e{e{e{e~e~e~e~eȁeȁeȁeȂeȂeȂeȂeȂeȂeȂeȄeȄeȄeȄeȅeȅc@Ge|e|e|e|e|e|e|e~eeȂeȂeȂeȂeȂeȂeȂeȂeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȄeȅ4a97701658bd544550bea5ae72b5665e5c17b9c6d17221bcbdcd08c51135e33ea7b0a3234b7de848d77d2913983b137f581d4a75bfd2c9ab225ba0bb7a97c8747b6e15782bc2d9d3eaad2e65fc7f3f11f3a5f35d71c1ddc5638a8559ccaa89939d4cdf29505b800aebcbaddbd1e20291a578b453a145088939ced77cf3469079075c00685a051b600f4b1af8545c3b7ade61ca39f8ed079682dbdbaa8b7757059a504ff42d94ab33c861dbf5a5e17501e77662d4c125cdc92cbb8aecb27c8d1b44214a551857e20ca2873c118283c54c627696c4bc04b345f1dc789938666670ca18645c5c904eaf7f5870535740fa9da442094ca11ae8389993ca294928b7c83c4ecb6192a81d83e008c291d7984008a101f96dfc5d772f188546280545ccf3532af7ce79713e532f44b8111514938e19c3e5c2c819c9008f606b8e710f9df4be9cde8e99386eef60d3dca10116fc4acc5b3022e9cccc6812cf576d69e55becdadb25ff3e81ff6e027daabb8df17587ff040f74532d31a953f7ad164473b4616ccf21587b875a84a2567146f41f12d46f803950edb507ac81b83b19e44c9f7c6d3ccc0f1407d9ff46ec4f88534a49f866b738fe8c944e704cc1eb42facd9932fb0677212a385249165bb4ab5e1943c963a778d25fb2d0ef53c391ca216b93703d177f5e1e892759bd366cddf4ed9a9d927cbd8f04d490d375f7f262b89e72271b99a560426daefadd2f11f36c6c7d6b80e8e326f9634820e7fedeb72d18ec7ae6fb83d978a35a0b5412444bafafe9307e211dca7c43d82a6dfd5eb1e675799b3064de68322d0032107c77bf19def1379e1b3fe2447321e6297a5616f1dbc361c6ff17e9e37c0a21c0da7a230a44239e5dc7091e9ee6594df90c80017a341951988864fb81d423fb0b94f0534616968097d8a974e43460deb19413098debaeb59dfd94e91e8eb6ddd8d8d3688fafeaad1573770099fbd4b0bae816b27a4cc7c7e3dc82991454d793c19763f186759b3419c75d946872d50d6012581a41936b0e1dc72b8a524c4811e7f2704c80fd85322bd333a29d6db0ba301848e40960d6ec702e86ff5716146680c57542863ecd7f3c896306199c2b1d3d6ae00ac62ac96deb14b0467b18c0fd07810db7ab630a8eeb382353cdde440c7fc4bed3f901ceb023f3edf5e57199ef7e5cd226d0b42e6017c6a16d1e76b573c1a80467adf2a0d2cab808dba56a6f7153326af523dfd4457738a487266429ba35e5d09b7b68a32bdf36d7d048d973a8990a2218f3c425ffbb077c8676fd8260178a3769fb34e76e542423d086114efc78287af567bfc3124c2d87022cbbc16fde1241e01f97757f7f9d7db7a9a6b74b6d5eb5df2299abfb17c3dbae8276a4fe1328bbbf11a79f1282462603fa5bdb2e51d8a9872bfd3b3b9edcd116c68c9c4e75baeeab3f57e4ef342911ba872dda8d0363aa962f11e1cafcacdb40e83a08c87dbec36eba57764e00932392c44aadf2a30a7da63ca09c1d43cfc99f6884ff87bb516b7640fdf2080101d6d23515205f2bcc6933d3fcb87589a1e31c16ceb5c8e116ef064299a8b7177a15859335eece2ad163274ed129c444cb8840e5a6404573b7f253d4255031ffc5ed895d7fe666f6a015e9030bfc9d7135dddf3727eb364662b22ccfe9f0b3c55357271072f2659e9982dbd5ad7d5b9f02f4c1762349a50bb9b9d428e33bf80e6d482b5124f45e8bc2be2c51f0d6e000d4932422224f7c69a9f0e45739deca614b6d687d85426bd542d6535c7226274ce330454f93d2ed9e0f9845cc90446c594c46a83765e577f27fe27ed2205a327233401ce95f82e05dff3e130fc26a387548155aa966d68c0a371c1bda58ac8129806c26e4c07f5c6096c0d21507c8d5682b91c913634330aeec0d13d3f5ade15dcad602bf9d97404ba4e572c56764d3724b22b5c8bce4b1e6b45b7b4e389b79dc3af3313c8511d468ee1aeabfd68fc8ac728108bdfa48f608af5c38bba771aa58edfd279c59442552a1baef79d0424adc35373dd8552e3a93e73f1cc1b36f290d9c0349d0fb1a09f80d6ba6597e76f711c7414a8901a43863f884b631dfd6958bafc88aeb1b83fc52126d2559c1a7434a16a063c540c746c59321bb35605478bdc17287436c2ef14d0acbf2b9a457657753e439443bf5164f8c76fbf36f23e3bb718ca0466a680f48ab60f37433e563fe6e6e1163b6e81f5bb455ab1441c49ddd34b395cda0cd73f8b6f350faaaafb829f2d8dfc1f539340457530027cfd44cd047c4279e13b4267aa89eaba1d6457bebbcc60e3699a61b3661d138e5a98d95d98d91196bb7380ee512ca3e1cfff6ed0886608be68cb4c8138cf4efd09e802e7e686b9010d6547c04744598ebc6e7da4a2c7d10dfebef8d44741ae74d32ca5eb8d254679bec7566bf7161b5991c93a56f884db2451fed2294baac6d4000d06c0fccddea2aed63baf5d0356a574efd7eec63dc8a3fee504ef6fb6d45eb758db1f0daafe38bbefb50e2f7e21a8c9da32c3079b611d3670a1ea9672aa693d3a2b76e5939eb4de113ff45e85018ba25b0a439dec8d1e0caf9a0140d0ba99a586c1cd89b6bdfcf033228cc7e8f6cb3ce13157a6386ba0ce65e3a62cd4fb570b323e23b0b07562db0be0f45797a9ca25d34f8278afcf5dd32d3a753cf04a921e379702570b2be8ee3155b277a110182701ab8cd6b46681dac14a917abeadca7174ddc106ad86420b40bf3ead0b23b4998f2cea677663d76fdc4e2d969c267c65f567ad4f600f13959ec143c8bc636151634198858e7577150284a68aa929b3d68997dbd78c8c37fb1ff130907b63ffc2e5e6d22c70a29b7c911e33214dcb5d9cf8367ee074830c373250951ca3115c5398192afe13778606f32ff88419f2e10ed2ad11dc5c9c521f7514e61e1458905216184fb557a632b41f8b4c22b02ea50b59dc49952328666c8442165e7ae88fdccc6f36ae40231f072d45b02508ea73a2ea4b357f067cf6c1b6f23a70ca409a0444c6783ce29b987da71b5036654ba0b90bc7dcdaebea2de6f7953a21bb8b5f23858b1ba70a77cea979156280122bd6dddc30a7ef346ba6c014a6f9303745dd41897cc7cb6e9aa295edf8bafebe27ff798be22a6704c9e37bfc8a90a35e3ea422c4e6e4d2bafe5a049b2360fc37e6b5031648005b312a0ea18324392d4bc9f6940f75e379e019e0c19a861770b65ba77ec239103301ad5e2f699c7c2633511fd8ce93a551bd8dcdceccf0078cfd6793b9483c8f3bffb6b1b4df8a5c60494be83cda6ef229f6c618990b8fdf81f9551aa52895bee209c0461b6f13a3ebce049fd52f3c12ab931408e362330cda75f8f4719cb7f13a7e59deda94d27f9b80d99e30e253092c3dc395609171dc043b60ac30b3c09961a55024e3a7337d1c59fd7cc33a9427e058c13db115b4c41b0eff75a36b626649ac65897bcdc2f24e94b8cbfbe2f6b46c71cd2ff7933e9404845b81bfbe16e16495a72545018b87cb45b9dee800a2f62ca8881349fd46ff361d50cd4766bf67b41c7e1c6e249d31c0e161308000a2db0766581321b088b136397b9736b57b662aa887bc5b67628fd90dbd7347b154fa86642a2abdd23c699ae2b05fd6151ddcec2225b9e5056278b7a559c5f1d6fd3c5ecda773f1acf340150d837c7de463c357592bffb6a0f35b2846dc26396fc0ea209c75657a6424e53eb363b2e4bf69e1c37186bdcfe6ca95e3b94dba869af9c85b4613503e43c8f629028720b10cc27a2756cb53130bdd405cf265a969b95179eaa85b79cd2a427952089fd99ba631b071242fb5f4809b5747116085b1f580031a230e48e3c09d3b81a64fe4e2032f79e82338b71ffe72867a143d5e9eb49f6cde82b9ca8c3c90fede1d08449983b4e12e9425843c6e373cb7771fe6c8575aa4e3908dee8c785387ec79b1f89b5f4ca42ee27ac89fe99b8a0722f4b0bba14d1a011bcd9531210fde7168431394222de2a223c8f01f99c0345f1bfe05d1667cb1a73eee2e97fb20b319a7f64fe7fe12cee1a387c7ebe68bf8d551cde245bdf02fe33268f77f81f89a737dc82fdd94aa33c705a342ac23fd41338cc1159310c69db278dd404aec7eaf1bf28fc90ff77288beec94bf287cd44892b5d59b362e3387141e1c3e8b0493765cad432d9e7ab68ddbb3e8f345c821e2e3cc7bff75440f339b451c47ad1620df1881cd077c00e7b23f4aee6031e6cee0233dc15869947202fd51cb23e1b8c962ecd2f4ac4bef703ee1aaa355883aa7bdc73445e025ef2ae766bbbf4a8778e29053a5d9284022d39fbb2362067449ff0652681a30033f6269b920c83e7fc844e61a2fe818230bb601bec67b45b385ced92cd3b4a06b2c772c2cc1bc392ee3e43ad9b12ae9e655eb6a5492421a915c81d427151729aa5784831e1a996440544810d2ffba887b4cf40e42123d5f46481f37aa5c023761023914e67ee0f36fa50da1f799d8134b8f3740d1ae3755a9811356e5d7b63183261624bee31b1037f0b740095416efde6183576c2bd88202239e748427caf6e2d4561657888e5f99d35b2a6c51ec3e25b6ad10799ac545887e5b127a6c463785a45463c710c3a91959b275bd94e3f63832772fdbd25c3233aa43e122419af14e6d0e7e8b01914621bbf35c6ee30e6e7e6b5ce2e550c85a91adfdc1009ce1330c25fdb382e6505d37936ce38751568983aedc87e35150ea5d361127ede550e8c59fab79401e695152382dc26d6a85a917d0d014fd2249af6b185ac59dcbf7249dd6ccf661efc175918cb71dd5faf45bf3a1a63c9a5591add681a92d439f72386d6b8061a766d90e75e22ce221a0a2aa7cc19d1180235b0903d107c6fe0ea88da74e97944c2adbf51a93d56db51a1245ccf94046c8f50ba8971a0f03a47e0af654e206fa4d8ca1a58c8226cd60978fa434204d6b2db7e23593a3cd9f33c47636c427eb4f61919a380dd9d3f9c997a51e95f78fe18d5be9383026537fea410669bce3f1eac475e77a33ccc2d8a7cdef4816aab5de4e6aeefa47579d25697228b71526b1e3b7fc7747c0fca2c757613b18842736fdcd7db630fcbf654ec36fe231ad21cf91080ac7362ddccb527810dfd92d0871378434c3af6ec21c98ec96e1fa7264a300c27e37cbfda3359618904a0f80f406bb730a85deb9494060c50730a690f766bfc5b8314180091db4d876782993d9a0a6a4f4303371a9718524e32fcf10a82d86b41dd2afd6b170f7f730b022e99f04f89cc72dca2a35540aaaa7712ed5cefca16c1b0c54e5c89aa7be9e06682741f297a4364bad9a591c19b2fd5d9e7e2c8b2273382a11754b581d6e670c429e7567add642a303e346341223555e5d55c2f268865a75cf7d4b4e3ea185cbb6a6bcc6de7195ef1e078e38d795a2bdc787a07a483674548fa013c37c8c41ceb64e6533fc14e560fda5d5085a84c73aa04a383060d24bf601f8b1189e2a5f606321d70660d73e78e7f77490b0fe02359949f5c1fb2feb355d03c518a90dcc04d42e51f3f1dea16dcc8da29a014c9f740ab0ab93c0579cbb0b2e671a1e2519b1693e428617eff1270597022d37d402ca73edb5881ea191132f171acccd54da4e1c24d786ab72b39161d119bd0ebb356c526be24177b30abac38a08f6e8b675836552d2810fc0f0442fd96fe5ad14bd105030b124d5da17f0125ac3a55b3ef3990508308c179043e7db2742716e4a4d6ff59def17821f3d2773651eef6b5cb5d858d837667d087253b30c9fb39a09a729da1fec4004944b30824495803963473bd54e2b6674fff6d3b76f31cc8dca56be9d2e1bedda9f1341b1c9eef5b1a556b31a275ed88118fb011c9cc16c67dbd143c7c284e9db2ed7b5d9f0f5f73e0350d8a696455bdbe3161108f2ff789d7034a187a11060a6cc074c22b5a0b52d4164ec3893fc23abddc554175fb75c40788d006ce465f4fe8374153785909e080d5c90d45fdc70fccdeb5eb68cffa1b378dcb15c6f516fc1a7ef60ff4969ca449f7bd810ed2e24392a4f2c3c0e9711d55b7bfb278ff8b179e915d6282c7fb104f44f165c099cb9934624f16cfc43552a0c6a216085c1744b8a5a56579bc8bf1aa92788463fba4512b1afb14fcf4783cd474bb68d71f4e3f5d4fed5b72cfa1e21584a57fa1b2a424cbc781e16b5858b80579688c6612e4f9ade674dd064ccd5ff6cab33582f8982dfe6fe2f3fcc066d1c647298f407f6606d6c815c6156d8aee5e965c22a7696e4a8c44ab56147fe9b1d717552fbb7f61dfa1cb132db4ed6dfdc2725a4a21f4e2ab503fb4604846e1b75313ea033013c94eb56849361bfc0bad696df600e914170ae6a59da456d8208a3aa70dfb41ad6b38fdf0652f79006fa2d585b439dd708d4a4fa9f1d46d5be301f40353b58d2877f45db2642ed699715906e162ade3fb4786543e3ee700da8fb9aed2ecdf190c11f9f35d87291297ac1d2b1ee9a80c0b25c47ed367ab2b27167881e2e99729d58249af13364c0ea4aa667f450ecec6dba4d6edd6e76286f2ac01462ee1808f65d9281015d1d4207c3fed24601fdeedf62bc1b9aba90a857b6d20de4e851fc1b206f45f5152a118a3ca2eef929092503a61d0b7e2f707e2b41d8a2f9c616cc7663ad82eff9372795e300ee5079ca8824fe6cfc505d00fc0894c5c1f7288c29e20a1f7de1e07a4d8591fc3ef8e1874c736ae9dfc7ab1b14f352db1bd57d14593538e13a486cc9d15c4ac597ce1ddd29cae7f19856cb58f38babbb1726daa0ca9a4cbdc76841cdc06b2aba6cb313d855cb57c92304adaccbfad8c59927933dfb08dd5d4f09a539464a017badaae43bcdad792a2f12b59ad03696b6084d98babb1cae48386a105cf2b660de6ac6a24d3b9beceaf7b6ae86a2ddb8d64a73688cb4d35ba726a0af1dda00093f742d855cca1057fcce5e338d36b43f47d22e6bb376fe5db0aa35a33d41aba3911248051b07d088855df48586db63ef452fcc70ea9cd6334d61fa71405f5de0835013c965ee86077cb66911f1dee085836c136c33cfc64ea6eff0ad3a69dc373240d003eb85f15429212d4967d2cdf2c7252255d09fd392d91ddd398c01bcbca1f2cb71f42c38519696ea721fefe66f33e078608bbeb0cc72a8a87b82441091133c3598b91101b30284cffac9e74b7032ae3eac929c856542339aa44905f96a700c10238c4c5199c20359ef1ac535062be736f0c4e1a131ef5faf1d95d516f57b535d53d64cd19de145fa2dcc61da017c6517b1849d8f83b4274d50755363cac978c181a3b1f235347e83958ea3bead4b3efb29ebc83f624df856afb13dbfec959eaf3b7b48a10d3841105e00da1cd92e820eff98ba666343cdae29695e6249289ad5bab37c4d19a9ed81377ae0818a4f27c1ac166fca02bdbbf32b8c3905693da363379d2f94c6d5043703e2bb7b1430b8df72f6a67ab2f7c9916a459e16be6f47dbb54a2f75e6d5d3a128f8b51df0088316115512f275283705d1187419435ee38c101bd8fdbc251419f004f830cf05099d4f3a18fa4323a1782ebf3b31c144bee19edc5558b66ded0538eda5577319818459de187414cf4f0cca79d5c3db435902f0b883297fa27a47c6ffd86ac62c0ffafef24c2e440bf300bc68abb4e52c1c71b02ecf6f75c418e1d1a8ec70e589239c2c8038785f17543617ca3d8dade071c5208f614d6844030f187a78868f724b697c970c1e4df92773a12a4afcd8f7bb55e16dfce0a1c5f1901326339bb893728951a80e4f25d138cb555018b421b6fc6b6fed55a4e900a9b13f33a56610c2622f8c8caf01e414626b80c96d5804725a7616146e75eecafe96c79d458964b9c315312a308e8e2242a8b6db4c2c7091e1a6d8aca5abc0088acea8afdb7a2122b5b97f6fe679bdaaaac4a459484454b7d024da151c1e9a76f43a90a5d44d6fbba0756722d529dd1022915a3f5b691a3151fee76939b95ab6f2c3751769d2c0690d3b693b42aaf6931dc1e4e98863acc62e223da51ddfdf3742d519b5ef896b33d2a3c6c44f664528cb9b887363b0dec9daacc55fd9b01d1ab7c9fd34ba20a5cbbf776c718d473add1d3a0c82dd1356cf5d790638ce81e3d7bb03a4e7140a1c69531b3a27d2727a813d50b4a95bbdf36fad2839754e3cfa87944860d1b6c470162b4550e0a7b67b77588e982a3d59c344bc18dbcfc6a0fceeefa3b064aab4b81de548552020ad5c8a3a027b4b792a136e522b5206c9032ae836e6029ddbe0f40eb42c3edaaebc8e3ac30bc51d6bdd4242c71756e370a39b592850de218dca51f9d0d8c55911aadaed9cd39327806f1ac1cc1145285399cff5b030cff00ba49c26b2499f279ba20aed16e0d3d7372e802bbeae1310996980f1f961f8e4f460d289bfcdd680a652b23f0bac3294aa679146405cdd1b08b204318c53cb35af5f4194a51c13627ab47f048aa115d598856e36b45b2e5896fccbb881681ab93cf7f7c9f95dd71511af9af320609550b45549ff4f22b668d07ade27ad8476450e214058e6c2d9643657798f472c920238791e7079b805aa4ced9e71791001099687fdd2318d15f07acaa408948e1a08f3a25734b4206548d923b307aaa1c3561836c33ab7111bb01841627c089fef13cce9f30878488c5a51e1f83a7568d3bb36e892f80ced2676cab1ccd8b6946024205971d93d88334c2664007fa70acac8b8c8ab071e496036738cb325a9061f5857f484eb55d2ab318cc173c2afd2378a64c53babab85c6e29eaa47e69d72618ca6d9655721df903525dd914f8f6f844f65c2513869a44a7418d057e605a8bc497fc50ac3496e1f19af164bd253a92da7d6704b2eb643a41eca9361dbe9d378a0e017322ccaa29776783708f6dfa9adf4df106f3489c030637ff5f58d81bce923f663007015f044b4255060c49e163c170df16706b1a85586c5ab15d30cc03299ab0def2a7428d88483f91c297bb142121c280d15efa839142b9e46caeaf5d5427d4b10f78ee3216b479fd44f1b2173631f706660fab55f08bf2e9706dcc8b98ffff35567532595ea4bcaa16624b1195c3bf7a62892088e48f42e6abcf99f7ae8983dfa09f4add1fcf11444ced31930c0e0bebf8dda28b83d60f82fdb01c53c9022d150440f4228ef5ce229e58a82b983e71e67460afdf4f8b4759445951bb19045fb23dd7b98dd7a653cc3ff535820503db4b99a822efdfcb968dbbd0b1ebf347a898a43b838f0cc7b77e50fee7bbb0fa4662531984981e900cf8fd8ff6fb4e41ebe6eb1d5b94bbe95580adf5bdb43f246e93f2408148f726668111ecdfd26f844d0bf19c290dc163355609037cf7deb092e9af260a395a676b6a9d2daecc62718397801d68d6cf9d6db1832baa41a80971a83aa6f2186959131c2fae640ea9ed67a28feabbab342f6db3ecf2c7a8c29798bc5f18b5bc5ced7e8b76e3194b3a455d85e924de4f07adf0d11e693ecb0b8e2e52a8b545be7f4a4af9ef8886c1862dc5c3dfa78e50cfdbdb7ffc89a4e472b6dbfe5679f8cd801447b86664a3f75686231759b0c3ae73eafab2094d1f5f6dbc695902903a055b41cd5019620725665d0ff1f3769bb66c5cacb0f5f658d93e0a9d89d717e580f37ea625112861fa5b2d75b3148e4004996e87eb8ffe7c5df6b5c9abd7c06520e555d2a8ce7a284469ecf602012aaf401eae33569b79f3bc18a35fe225bde5336dc35556109759c0b392baea28bb76fa7fa7506060d3feee7803e6a5bafa87c161f94bd677e8686299f15e61b1e47d0d846d17ec4547e2700fe4cdcd3687d9c4f55f671a3ab39ee045217e18d0e64047c946ac0a568362f67ef605bf79b12e31ce135fc5adccaa4522eac5c0416b28d5888d999be7283b6ff7e94a4fa8396d46b8cdf8db5aae1b230aaf74ec58b235a13b5e42f96843d5e8c296a82ed21eca43eec698e14246d4282bd7b324e091ce589772e261dd9d7a1aee36f22eb39ff47b3eb4ee30ed6056b7dce8851287274686281e9b59ecb097d0c6815a9b242c27a99669bee801e65c42de666c9c83b4c9012fdcafd87357a41788558c4ddf7b68a55a0c4e8874c177edbd14e3f34490320e97822baa0bbd38a2f93d00cc1430c8a3c2abb58256502b63ab6d95000622e149e5464f619bc41d8fd4359cc4e212033b8a927e5f20333a7eda849e61a038ea20007abd1a9bcb4557db8338d18d33177fa33fb981664d6fd814025f5323f22ec437498f998f31845f6f44103873796afe9adc5cdece5c196a9a4f29da2e82094586327420de9f3fb5639ee6be7a55e35d58d211bba585a6ed474f428f563d575854a9c29dc3982f2f02c669a29a912139a00d6cc4f6b4ac98194eb6962c72e901c8b7ce36e4fe63997e29cad44986fa766e023ee8d683dbd8567c6c34b3530aa0c4383a4afdf756c9dd31ba31fd931e0ce7fdb3132a44eab3db54f7b1beca7463e2cd35f189b2f8c901eccd4ce8c8397cc3b271d54d06c35edeeaa4ba49cc63021b74374273a61a5313e727730fc76d54a33655327d54974e38d81f8eafb542b7fe0370f63f44d20928cb4c2645b2c69419336c98e0a46651177856944d587df6cbb56924fd77c144cf42342419705e3f23fd910d015b69b7963b8d9411cb95de37813648baee613de3182cef42162953a7c1704722624cae41b0b9afe2ae2164bf8b83e39cb2db38f8c9d042bc1bb3307d909b55c3ad8f6c336e0716c3372ab775879aea9954827424f747aa59a5caadd94082e3f57bb1c51c0fc2ae4ef1ed54442465043b2e75c4a7b3b71de6c97dd83f5edf963857ade30ee75388f08b016f7a31e2b85bd9102a5231bab97995eba006bb245cd0e104a9dcbbb75e4963e11495625a14ec784dad319b78f56710a8f48db7acf1c9809a2457a610f6c00614d8222bc66d4b5b6529f10142e950e592387793fe753b3bf7bea99524a6de7e4cfc401a2c807cf6d2c7237aa959041806336eca88d237f7730d8acae0bc5e18ed5fbd3738fad7c606084bc0c74e6c1f8b2dbb04aa4b161a7936bcb3312f482a3f80e6cb2a23fdd50e48f13352a73d203694013dc6905e67e8f41ca8140ec13d2cf2cf350c325e1e5276d29b48bdee89086fac664e4e9a714c5bf8d5242a999cdabfabd540f8177d00ba0d0fe1869c3d91ca2d6620b4cfd29fa65937e6247671a892e71780afeea1f0ec1c21aea618c4c67dc76eb357bf04a69f6691e7880aa39fe2513ebe8787048bbb810ff816770a3f4564ddf19fee2907a6fa4d885d6ec5d35a9abe2e5161ce8c302bb8cca93682de254371a07e6eecff30355fc3f501279903ec8c6e62be0c0fdb7381a3304af1b5b7ac414a941f8dedf88666a04a0471dac7d836165ff27de85879b5f2243d34c34a7585a2d98712af20574fa3c7983758d6caf367954c3e079523adadf76c9eab576ee22dab143ab781a9ebcd400be1f1cd31e0c33cf3644f197b49fbcad942b9747e52a992245a806f8f17814765eba74a91df95d0f23eb82eeff15a0ce2e88646e8a0265bf85b4a6f2f3c1c30412570643c6c2e7609c415b2c13dedfc5d608ef29531e120ace3a05bee8e7f94427757a540aa00f9b66a58e449fe596f7c6de2af6a825e8af5f656611f40a9093eb7ce0993a96b5f685746baebb6507fcac619e76299fe609cdbbd56ecf08ab333c67ff7a4d1e37014f354c441c9cb60e160b46e105cd3c36fd570a469d90af0b228c6b22791f64a6296d467887515101bf3e13204792512c878d72e0c286b972706b5f1e44961ebfa12120b3eabccc33d0d688da4bd00061ed776756a4e85d98eb875778dea4d1ef6cef835614127d778a6c03cf662b83f68af404fd560e5e0c1b6fb3dcde34a065909b56e75ad50666ae9a18243e81109cfc85f9fab7bf7e1dd7fe61ac4fb796be2a791509e95d5ca4a40f9104b7ef78bd011119a5e39b603a74aa831a773b63a1330b035c38a5c5074b8ce289ecace22ef45d83b9d6bdf58faba93f71c5e3a31900119c352fe360e3efefe5cbfd01dd8b831044a3bbf4c8290b10bde96db6a363c7adf8ed990ac5a09a56978c3ea2ce6aed4e47e2bea421aa3050fe5f6aaeae6f78946d7640759ea9c7175a4a892ea9a9996dbf67c4a43c0016f4eb22168ab203d696c6ec90778eddcb9aed300b0f8f42a3fcab1ece65d97ee8625dfd4f095548c7b7d3c6222b063bd99f2647d275f9e7d33bc66288bd60b0fc0e0e6c419b08d937d632720b6f93fe159d0d7ac95faa0c12a1a6e95cf7895e8de226487ca6c5a05d633b1c03e24ae6b81a344730183b90f25271696b93c0db87964f18d02f801c72232301ba0cdb543d2156442b75da073d2e91f4159dcb65254270b2fa0703260e1d13b6d19e9c98a059bdc5dbb140f7cee9bff5ebd98012a229c253041d6432d6721f7151aa67b14498b3c89c807ad7464447bb1cb9eda7f3e337124cd63fc8a3ab6da0bcae12d0fd0ec116af77a1b526d564bd790a78a420acfc39d6d038fb148a12511db8bd42a296936b7f3bd39565f7e30e916176d8414d34bf11a08eef7a248c5075ea07bbfd250f63f05ae009fa0d9261da0de1fbc173f543f06b0753a244f8379c398907768e3bb5d474b875e35fc5601b7b5af7bf8b835891ad1a2c5e9e35f22afc02aef5604ee59b7d07f4cc4c56e670290a6da0094ec6c6bdccce65cf615bb435cbd48af54f54d02c9691a2c02aba0e7902dc20f511691f21ce9a2d916f51d897f96ed4dee91aa7245f491760f0d3aad006f41d4fe7b1c685f6487b2f006138477681a94fac1be878c40ab06b356878fab9bd5e46ae15c78baff11ed41c98646b7e9efcfc1805cc9d6556b08804dd09466b330a6b8f78bb9ae3dd46fa7d7cff58b32a909408138042b99d08d4c2f0cee84c5913b15ba24d87d575502dff7f9f5965db5032c5816c8085f2d05d917a9c8a2758dfdaf69fd634976461b573013292c6475939319531ee9e081ec7c15fb0da289d4b70ed977a1a065235ba0ba2b4e51343bfb7674da4490bc99cbff46008df7de6ebdf1cdaff13c70759bf4340cdf2d9b71fdb7ed354e466607555021fd2db3eecf18247888b6617bb023a7fa19963051ea47c417ea3588c0cd8c6c1f5e97f4904933e6a850542a54595c37b62ffeccbc0bb329fabb66fbf58e2901524403b568c3d8d92f002b36694d214f6ec25747395290eeb5bb5ab69172d29ac568b62c90dbeff951f0713100a4e5670dc1f84b12f8ecc91c41ac308c8364f9cf632e89a13770a788c6a669379fd1f3fc26592fef0b11a52740ca29e1fca0df7895cd21480b3ed4c9eaf623182d9f182434c1eb262ff7a8233b88e9d9e67677ba8691d26b8ed94e6c0b9432902e29ed71e9a86dbabc1b1a9878d5c7443ca30ff6b48d93c9902a1607eafd93a5438b1e59409f6e7ae3fb8d3b2ec76cb5deabee8d5d5bfa0d256a4dd6d701c21fecc11888946091e80dcf8fb2610064169f41d5d4c159fa194626f803705fb60fbfde0edd06d8c460fd03cf126a98163757189eb56de4b7c8c0fa4b304b951c9ed635262e391f1f7d1d51400b9852fe5c55761699af723ada83105e35225fea72e06c566cac0bce9914cb79cae16d58be2736af297016f5ef05a3c59e7ef98431d7754da8c032dfae42ca60088669d389ac99179cfb8e252e53357a28b4a91f5934eef7b0ea80fe1e3df01c6b10f88971ebc288a53426d634582e1176b6d53964c60ceed61a556782e428793f146f24edecb2141f6142060e227de1c4ce65ee04488a54cb4abcd91277d2baa34e59037b853ae763c9e12ff128da6205df5f9c00ae0ce2829964ec353dfa4ca20e59cb4648a061bb749fb9bf4be5c8673ee8598c85da5a407ab5807da4abdd03e750531e9da9e5e4412187c5feb6be78ed79c88e7c89f6de6ee9d560afe1be356e678a2d4a4e6639271d3ebaa33efb4dcd2bd4187602a21e04760a610a690c28f083caf4c85983297617ef84790d9762fee77868a7fe9d908c95dc19f1e539f8f7d1b70ace79b35cc12d6a665676f499c0ffe1c1821c372cc8d6a6a16d98323cbd95b85ea164c01922ee0be702f88ef4b3165f8a64898ab4556d190ab0b23e0d3f79c1dfd05bfcd5b47e88b815b3525a4dcc116c9ab87dfc21fb004d9fb709f883a536afe467a1d016aba511a1668a94194cd5a9ef0344ff3dd4b5adf1199775f76fe19a88a5b7d2ea7a522475914b643a56a5e3c1a13545c4f8e4c7c486b02105e67c47e58a06b8a4dad2a0b34af54f8594983f45ed60d26022d68bd3dc5d685c052db96437f0a68e671c2283159a7a3fd8f59d0983035bd27d0a63d5e09a808390d947ca946fe49d869fe92db8c062c00064483eb319ad41b0ce2d43ac4cb19d64665a0be66daed342b38d6a68ce1e14e4799f3a02a9f44aa9bf3527f6c89d15ef7ca4fb36a62454c1a2ed6ef42e2fb58fd4b44125f31e18819df5314c04711132b5b5254cd8f06efab2642e019bc7efb8c8ffc2b4bf18ad8adbd58b9bcfad20e17d01b3ffab063ab8a91669246f31fdac9be49c871d74111c264a058ebc953974c8479cdf1afd6759ce0175c729ac83e2ae171a6ad137746461f2eaf6e5bc2933b1946fd2b78268fd02d23cdff21f4e0dadf11162441983b777b8f73461b4459ed2b9617568bc4458b59709c9ac54064e16da1e0192e3f1093fed9edcb4167fa3cedafb3470daa46180dc66fb03ce25e7a3d7b113e0dad18cdeb474ebee5114008cf08ea06e38e56b8e44ebe44b58b7dccbc9a74cbccf8323ea92f563df248eccc1ffd6540e9e373c6ce65f9685953803b1b4092f4fceb97f2b14458ceea479e5e9ecaf18d4bfce2f821ceaf3ddd402e68a9a4ea83824fca2c60118477304776a121dac3cb9224028a129d7b24fa1bdb9b0ee03de13e91dd39ed86b32f383759fcfd15146706c93a5aa11cb6b7fcc432f10e8d16efb3f24a9cb7583957e169e16b917cf9beed1147b804f74d933585c4a5d055d0520eb238ad7aabd20568c8d13c19ae15745b1168e1d5739af7bafde9b7cbaf1b43593dae06e951d3f399acb63b8b30ee5b736778e42ab4b783b36955cd0591c4fba277be4a4b939d1fa356af5b11ad89f97bd6322b67c3255da69574c4496e50d1ad729b96cd30de5f752b80856c2eea0392e11e5145872c9a2e11bdab91d67f52d3ba930b133a8ae9ae1519dc9535ac3928333197b2c122c42828473a337761bc7263035d888122d62daa6c4f4200a19353966980daf877a900d6c9e7464b627ee0979bcc3d34f2defe90a33e8c923a17ec8ee1d1592917245098f8d3370465f5a9c4edebf536a9f7f93b20d12d15d24101b51b87d993af4849143919c61be2d95cbd2bce137a5e49cf41904c3390b177b307b6a4a0b2676c30dfe6640effa3025c2dde4dfd0a549ebe4a79548ebdc9a5fe4b8d1230389946728aed6cea1d968db1949857cdcc3c63181f4f529f17f7cff701f2077acdbbfb9fe386dde476b4eb8e4aedfcd7037128955c3274add85a2e5260f5a2d87a77b6cebcd8db45d5173db7f14dc6be2f9679fe706ba95c05478e68c831054d24fc20d27fdefe305ef5b37cf6d6e4d68d4a8174c3e020f0c89546d90744379476753d95a197f5b565137d6e48ad58274f34c75c6222dbd3bde1a3a0b8555fc958d2e07b930cc192927a357a5af0ea880bce72e563fd479b905ec1b11690a5016f506598b34ab1b11abf0f6a342efcfada5f84a1485bfa2aa199a7a10c4080fea587199c7343549d521dfffa095adcc5a699a510ee49d72d7be32ce97220e049a7eb88847b0f6103370da9735a64c623048fe435546c84b6f4b01001a7e6f48d1d8c5f0a9a0941fe32f1ca1544f15e832c9398f952af553bdf981232bddce739c6e5e057be90f0b448394d74dc6012401091a0265a286c5471fa1715bdaaf0705beed628bc63459f25405dbc650d5fcf45b04fbbb2c92f1757027f5b4382e240063b6e24945a4058a20304a16dffd752dfbca79209bcb2a74a778df83fb39d870045d4ebfc7559e9e938c04cf8089ed05066d0462367ca84109c3f22649ce998d746e3a5749d8ed4f20c7f40a4e6a31254eb52f405316f6591c7cbc7c16ba73e2383f313e50864227296e56736523abcc5ab23ceba5121723595431ed6e003c087bcc6e31856b1e604159b30daf750e01d009a3b6c564e22609160620a44458f08bb3c4980a1d50f3e796d7158028630836f2136c321908e9cb7209d03e35559dbd3d642ab51cc323a8f379094449f4d6d9118b291d1771ef281414cb1c29c3d195e1e2d578f90e2a184a086ac24129dd486040ca2eee104ed37e564889ec067225a775e836f2d879c9858998fd8d220f2c675f7d596e466602acd5288f07511c3bc73f29263092825d4b018d0f5b4873bd705156952fdd1f7f99306e80d576015aeca4c00c799730a2e38255aff3a947bda557f4fd79e2ee525ecdaf1efc7830eb8e12d37bf66644913c0fceff9cd456023e03a412e5331d106f3422fa75b2e45bbaf6af2c9364fcb4077b26411efde0511c7185a764944f91762559896f4d1933dd4d059b950a0f394b132c1d7ac04b3b45aa22bb93f83f68ffd55fb91907e7f7aaa897fafdec3699f622fc837a07983a2f2b080256c78d27c2442209a10649e60e196f7ca57e590b48f8154d0e3c7aa8ed3598b384850ac4ffa7c0586c6d1b049cd2957b140c23a32105feaaa89d941e7da966e42e373c62261fae0e0a0bbd0b48709b83ff02512f4639937adb2b1228d4f560cb567fcefb86bdc69b6133a0945c4959e8b32c60b81931369f11586208b5ea9adb5c07b43d148e37d1eb9609c47d74fd0448c6d69c740b7368be75675552f9aae4e9feec2c9852de72b89f5dd5f13f6b9878cabc72410492837cbbe0561128f45198de51637290253a93981bd5ccaf50e55c9c6aff7c5b52e5a8694a0dbb5586612183dd8d58f549cf16136b97203ba674b44b864bf6b7d4fb481f84c60cc84fe9a7603fafbaecb7fad6984a5727ebb9cc525bfe1232a2dbf20c2347cc7b9c0e439d9a2a6102f938b2a39c0404a7e1494ddd69ffbeaa7f2b244a773a09565c33f652c9d4fee19aa20f9d015ede85eb282b67a0b0c78cfb9a362a03b790362cac9d0cfc3fa2ca4fc3e852fc6d1f89df628e6166371e2c156e29fd1cdc34b9b02cf63cadde8a40ace566bbc63cf6ed53a46888d1e34094f83296ab3b7351af0b643a577424429141ca601de6823b783c7d0cd379d6b8b76ffae090cc650239e8cffe7232b94dc7e8dbe4ab968c6e8a866202a4f27d69674ae2aa61df7432cbf09df9054020512167afd1a69c7cd8ff92514c388fd31049489b4d12f617b83f99cfb5be9599834d63bd439fa5e662cc676985c15e9171159a039a91634c09cde655347021300cf22281f5c889089be184bcb4375da0338a6e51c14f7642d4dbe34b2a237785224b69445e23a066dcbd54d2b90902427e30a5990645da14d8a37de7ab3ad61f8cac0292cb2e83554b7dcd653b8bdf70fef86c3fa16602b185f536b27654b232abaeac841e5b0bcad0954d869fc7d610bb7f2e594eee160feb2b6c72bf7641ba70372daf8100ea5d6ae2d676b6ac7ff8ca46abd4db975fafe816f8a01a424568be6252679156b0b7b07dac15f9dee08fc9f37d3bca251f8199bce8718bb7f72319ca83b5e2fe23d767bdc4970ebd2d4db132f3920870129b5a32dadc1347186696cd4737992d20157d6b43cb47fbf36023d30c0adb17250221086ba84e6ef2177bab40002fb630efc9dca0c58bb5386c1bdd6098ff749512dcba1f22ab676192358b390756b318fa8dcad3f43eb73752815f1a51f8d346be5538ff00da8607620a513e4f274775d8f37dea33fbad294fb7b91cc9a69a5adc518e0de711b3d407bd355e914294c5b93473c5637c0972c5ff4619654338f0804006e0944dce46c13a5fc12343a256caaecc5188485187d334a89b453734b3f848d42b2140ed8e97629b4b88a109cd385adbf4e00c6b676f1f8e36d0e26f06b1b830031c280fb2dd79d0a584ab3a353b76da79aaabc3286294162441196445fd509cdba620e1c39490ff303b315a5e638c399182a1ae7bc6b8cd31507443959b6f3ee67e9509111567754015189206a6d174689855821a546c8402a1b20a90e427ab4363a95142baaca7ee16420653c55c553d47ce3128ab770e8fe5cf1d9f87f3c10f6dc713bfba2512c3ec371a03de6b68ffe83884ae0ad2ac13cd6b8f9568c79d97ba9e6499c3e058ecf963ef2a42f92bc596c1784327fc80603557a552dc8fe16aa96f2eddf312cdaf55355d760adbc9b15e2c1fc0ba809c907b3cba3e564ab411970ac54ebe1b456dd8fae57b32e289c63c6744f8d2ceb3a73ecdd14b6f49bd8b4bdfa3f460412baa7900649e03e1c2d4de0f43702faa9a496a19904357a235d68da833cf786199639284864c951a4ce0eb08fc24c189cb5dffb42fb3074ca24d7a4a0495772e831260f6073d5183bbfa6dd5c6c4a0e2e289f2b8616e130110cff31b503778fb774f2184a43331deb8ff5524af775441cb36923339837db9315acd60ef3ca5d9352c56823623c6ddbcce4336323fbe09e82812da46b1690405d9738397b0745610c6fb7436db4a1e49fae8479ba5817107f82390b9b29177d65950c78c298bc9c76fa2578710c49eca7fc1d81fbd24444b3021f9ed96fb7838d1679d4f5e455817e65360ec5ecf4c06fd3258bc0778abdda92207fd03ac2be0891a171b8ed67c2a10bdcb5df7314535b3e2ec67e1829b9a55c153ae6c1e510bebee060d43d6621d1f4e83983a023d5de96670c0bf48de7d478dd56b995a5119e2627bcbddf557f1ea2cfbd1431d416cfcffcff4ad8cebaf607dd7dcc36e55b011cdfb02e36d89c59e5877ca1ac84a132abddd469f01e18ee103d0914487a71f46c8f74a4211f288b98bb001ec6f9ec2b33f4dc248b98b9efe0987eed917cd1a5f4b06aba3c1c7032765f529ecfbf96060dd4e5e4242b20ef311477a5451624132eb73199cbfb4b34ce5ff3b96f95cb00808424f6752718cf376705de6d6518909bcf54c8b23b7db1223cb86d1efbaa464a60ac799e9881670cf1bfec77b40d94937c164917960888468131cd662cdc1c6f0d0b9996b6e5656ef87ffafb87bf78f00bf67e105f2adde7f1c35bacb38d636e27f2ab9b5a80898b523a4ff3a2b97e9b6feb5e0723b1252a3062fe9796a0d6363e67347655a484e2b65b1f0c30e9354a95adf6745d0bd2539fec31d67980eea3b33bda8e4e6f8a9e15b2c5d6466b5c7acc7ca9f708a5e8187913ba7335290b28747c7e90e70963e693b0da49c42a8bfc5af32e273a6219f6cc707bf6b6fbe799eaf775c6aaa8d5dfd6917f30e60c74feddcd9a7a0a91ca4504dfe1bc467a4588e5c4de3202ba0d9db039b24baadcc7772b896051e445a38c3aa29882828c9551f0d590bd0ae2627039168e2fca49305396a0cf0477d92b808c16f09306f0f4ba34a2cf4b21ded4a4b46bfc080dc22159a201fb182141d0025d79fc9c5ce5b87daab6a9ec52186e6dc7ab8cf52906b14c9e2a5447453e64bad4fe04c83eb9106e3ad14edd18e8b6f8d46359a14cc9456d41f0201d613f40a503f1b3f7bc5ee716ae7605dc4f4805ec25547650658c6a03350d4fe13ecfc3b6c33f5bef367b44185045dcf12600f7ae0ae63aa6b03daa764b03d520904bc2c9d1b26b17b734f993c3a6b172f8f0e7120b8335b5da34b87af2e64ad7b6f9c7f79d9d1c2712c4e78a0517c09a8180323d2b77a7083ee4be18425fa907b94a32e04b957612e4441bb6339b7174523f628e41d647abadb6c755747ca05cc96a9fba875ae7a5b713bddec0af21667b92e7215c23cd43f42dc312278f7fa54481145d9717b701bd9048c1579f50d58665ad7f3ef7843ccee7156dbc5b39c0d53da5a9aab113692de452ff2f07a6436be99e1db74704aa0ae48370d35b8f72cabb4b642472fa64ab755d000982adcbe3a825e36bfd65624209f8b5c651a5d334e119fa7197e28ce57f8d0d220ac1b6a5ad3772bd9c8685aed2cb81907d378c4927c00ffe35e665477b34d658d4a86591c5fc58465c52d0ee69827905284942b22f94272c4438784093852f7ba37391503536d54bf22d6092293228092669883909c0ec7b9cfeab4116fcbafada3e198980687d89a9fb65fbd461d14f3fc808de5c51329a1010cfbca89df396dc79e4dfa9bb4f092ec3dcdfac8ae09a8dcfe7ad742dd6a03d97f7ac152712ac03d803244cf40218277ea187edd9309d69a31befb268508bf8471c48d430756c622665dbd9f31c68fc4cfd81142f0c0039254946699225fa38abf328b3564e33737106d16471871d9ee000db8ba7e566055126b3d18bc3799a56b7fd0010ae87a5f3b11b56817eb78f475db233d5adf5420b68dc3dcbd14e6377469cf84de61af0692c466726de0cf9f879426e3b72848eedbc279a7bd536537c1e6a921fb6aad564e49c55c566d61b293a254501ce9bb89480c1912a07c85d0007f4b4c6466a1f25fedfdddc429ed62a5740ce6ab9e949a6561a3661578461cae9079137339cc1f3a6f864f53e4f305fc78113307cd2c72eda764b134d52356ea5928380df416ffb4f185248733322d8fdee64e5cd7a0c90ff6d750d2532213193518a99f311cefca1fefb58ac937f6468b9af34b95e287a066f82284636387de63493d0f5d600d68abac42bd633b0d224d07b35e982c807b0db507836cdfe40d28f0503555cfe8a2bf875f3fcf37fcab7a8e43e76f72c38486d519a2e6df091ac04dfe321ac275cf5503afea56ad8433d28d6b85020bb8b7aa33b7e0f400053c8cd0b0ae0d5681f4e64d4a8d8df90271514fcf3182ede79e3ebdb61daa7069826b5aa7e9233b28f1e1d76e84718517d288ce9c3b8112aea5931dc81f2b5a3d5dd8ae96cf25ac42679c900a9f69865bb6e642ba9e3bc7ad1926d63220153c9a5dcdb13060f07c79c375da60a63e373d300a2c91ce46384ad7e8ba45931a2c7328517d59136972e5e214aeb850828d86e6e0dca7553e6b53ac2f2843ba36c5675e34233333a30e2650f674e250e3b7f96ae269a37bc50cb374f01394b5181a5a7ed37742a13c950b062a6b0fd2f4665389508fccf42930e46568dcd92b434024040b346019ee50484b4ab94816b005960df53e56109384cb96f6960ec6c432f898bfa6e4587f1a7c28efdfed597c12ed19dab84a1bb90c456a27c7f0dce87abb71da09fe7a4ed54b1273ad91dfa3994be73f6b0f35ed65705e999f02f60ebf08df8fd8c1330e83948ba9ce15eb9f1fb760e31b3883c07caf18c25055d2d1ad8e10b8c43c8560e37be0cb20287eb65b54e3e6faf549e579b83bdde2a30c95f1889f74f4a630edc6fb55459c911b6df456c3c394c8c01dd4ed66f02f55e0a0b3541d98edd5829f419daa35ab95cc5acc01f3ce4a4263c4423947a52c7b56c6ab8f7375d9dd3b48dbc6fc8f027cbffccc63b52736f7098cb2125a6aea6513e55813c0b901e9dd8bc9a025cd82b8d73f713f305cdc6859e8db4b92c40db404986a9510acfa84a4a7c6b9b2f967801d7d0c1080cd4b2064578b05f79ceecb051aa5de8b1fbdc5ed9ee59b82a4676db93b6e4023de0ed6baa4bd3c5bc294dfffd086ec31b58300f8bf2bafb9273d468ed4e2effe71e34b8a971fc7897955f2fb9ef721c355a55b4101e34968c27c5240fe92629ae9d6b857641435995b7d19bcdf34726aedf5822cc2532f9bf2e9d249114dd828b7aa7507da16754a16c31769744fc8ec669a73b9770a2a1bf591eb38a5a939058e96bb0214f714840e9201452feaa286924e4fe6564b9d79758fdf22b2e678e2a1acd2febcdb1a7b450c53e1dc37603ab6aabb79643a5f441472b050d429463ff328539340f97569acacef9f9a76fb658eb6b5c34e4eeb36d4b314816d5ffa323a433484032b53c44b939fef58b3cfac2be66bbb437d4dce5c54f9d2e1a9990a69e73a966f4f6c9fe0c4550e0ece10971dbbbe724b709d2baad6c8cb157720898443df8e49c30e56bf9a2557ae5ecd401c5dd09f71160b8425c30871444a94940856b83b5a35bac1f9396aa50c8bc65700f1ef6a9963fa174bddac1bc8f1689a424a55ed3c6bdd8971630240ec923baba8f9f9ef83340c667a3693cb8dcdfc7b4c2b6d217008fbe2aab801e0ac691110d8af7dc5860f6cbac24e39ce51b7861c050a7950d5db97c8ae95e61691d9ed131d77b0214c94cf28fb9dd7c2fac9da85c7cfe664b65c77af816f57a6019f680b68547bad96303fdbef7b2922956d7eb9dbae6e8db19e7d6a500887949f183d6b21e1ddd6640d1d76a4e98b96608c49c48c95cba35f90e1b26b8b0aeb8c509b613895b99251ef790311b66bb23d9a87452b2b4dc795ec9402a57a384e686375892731b55804aaa0eaa725b190164eb70d4949a6a797ffa69bbdf9ac1532e0d17f86449644482508778899412f72882817b80566e89cc36726a4db161a5974060ba744a9a85dc43fefd88ca09bff89aef5287778cd38192a6275808d5e2f09c0ed9bd63d899fd59c52961a4eebc1bcee0ddd3f3cc843c031b8e8df27dbcaace0cbbb8cb38c8dddaa02956e6932cef6f1ef940bb8df7a836e688f3dfcb6ebc4747cf683b0c9c13120ba48aaeb37762bf1aba134eac70d77ad25fe9fd31afc5193c9f617d27d3e9e87b1f956943880b72999a37f6ab8922af997ccf9397c1253ceb132517edfc997d266d8182feffbaad5b3a7b800d90b75eb7dffe5686732ca5802e8dbf7a3f91be48fdec2044743745960ec719e6651e34e3400420787d4d1d98dd5f2f6c0482f7f96721a7f8979d28de3656d9f6fa916a1dd1e76c1eeb3e10397780d5134e2714eb0e3e2f7492aa3542fdfd125e0a7f8e06137bddc334d9528ac6f77b167896ff51c3833d0a1d15ad0a5a64c55dfb9fd18cbda0b014f1d6b618f7e8c19fd73617b4b87c9b85ac878bae95d3ce52173d78891e1757c3fbedb0b87dba775aee8318270d463163863bab4a6bbce673f194e79de8a7686569b67cd9e4b5a3d620649aa999f08ff2f0fdbc62e272f72c7e403ddacd276abed3c57d06bcd930d743d3bb52b1df09160ec2cdf5f9fa097257a0b57b9c460d819343b6b804162fba8aedfe857ddddc190acfcea7f9549bd8c1eb753b0ade5a2dd2aa6e157bc60436d3af571298cb55e525f840b8e81514a084362848c6df2528028f7bce3ff9685d7cc191459bfd71213a911ca55e588f536a055db55c4f563c9ef3254e1a96c1a67266d9d5851ad494be9854fa1912adc8d7bf07c9b5b40b67901855a9b94badadb3ccba5d7ceab33e406b4bc7022003d64ea8f82f1e7975bb560ec1b1ec244c9690df655627afb8db5252e4de88180c9b1e9f895a2d45f54b59560f254a78804190d4c890e586b5b416b83146d1639f16087ce300dd5d04d4d01f35faa9bf6f884576eda989c77e7efdf9d13dc38eabcf355a86abdcd986155e3940b03758e27ad607949609ba264ad33d2e84ea202b1d60ce64113c9c3c5ce9b17462fc339ddd8e8f0600da9fd8a359bca49f4036e639330cf8a66624b6a5fb42749cfcb9b04bd0ff55c0df4697fe437e44d8a27bb825ed9c9f6401369c84479167448c217a9b7526f3aac8d06f7205d2c979428ec4b741510c0978b25479ff5e9b2137095fc0e5584f26476942bd5017b5c55bb28266cdd4ea6639f90566e97f3e1e89609823ca927a1209bec0bcdfb91c22429bac5d8b6c1af03d98dca25691838bc3742f512218204ace8632b7bad8eac2d701fbcc489e762735e6990875dcb0997a99c9582ae5406d57711d153a8f3646a0b1f46ba09481d3143aa72557c6a53d19b89896a9aed8ef8827a4197ec304b198ef3095d15ab8bebbaf2ad9bb8a97eb4d5120214199634bacfdf342765afee56ec456021c1ec63a1511f4db97b80d3dd6c435b1a4b6c4c2bfa8f5a9e9749c77f1ec8d770e5f08cc27ab6af72147f0873a518cf5fc1c68b8f2ff7eb0116c4a77e694d306389cf0397174fd9478f8ba1513daf8452320c096200aeeb5e5dd53f952820f7701c264b2e1270d0abc0f6c643371e19ab67298e3c01864eb2a2db5d2109a0bdc55ed5fea4b4345942e4c66ea86d1906e7ff342417b0f5834c3676b3d13f17bc6cff8576a54b5c844df0fec5a1a94644979b76c320940e2ac0f92eb76a3bd3689d194cf1f8d4ab4c9efaa122b4944139ce5238d3e0dc5ff9f4e0e540375f3a20240f1728e090855fe2afca7fb82a059e0c6e4fe62a40c02aa4278aaf56d8aac2e88595d7a5f22304093ec064f811954f3e50a0fd83d5a47af71fa1c1a174e000cdcbe4364ec1140037ec55061512465eed6e87b22d986299e434fb172587794fc86003a0edcf23f82ed0505e74e400548b9cc96a1383b0bff90e487c4f89e3421a84dd9d3a2a8f93ca80095a20da891ca9b3605b76522d5e43b7649f97262a07a91e346fc43c35e9eff25a9a9eb4a5f81e18fec96f9640da72239df7f09745101f97e878ec580dfed746279f02cfd0134681d65509258275c470e234119d046fdc5af1e24e1cccc79b778f9d85dc06f2eca7d1891d9b5a833eafc2ab3c577c5823a070e824ef8bc2a75008c065d8389da00370d270980239fa3ae45ba546e74bcd8436c07faa3ff1f518590951512c7895c911915ebea37af4da4a12c50b41512f07156fc756c0dbf85a3dfb83ac6b3960ac4fee9ce5dd032a139f6b9ef435bbd1e7dbff8998cd981bf3a5bbdce17e410fa803f800de12a4b88fbb6e87d0c716d3428aa7dea6cc95504271e1a2aa3a1cec5da97593276d408b1ae06939d0c4afeeb686f5583d6aad793059308c5dede1201828bffc535453a00c8959851a9ebf01f6134a92a50f1b5981ae0704c9281e01ddc8d7d775d892ad9a822655d610b2aac47a9cf7f9797411463e3720aaa31c03ab3c97184116e74ab7ef9c2db43177e5ef307f5d97b1beacedb7c2571e41302af9d38ea09e33e0cb684c79538a047badeb453f8170d6bb7b46c193e08ad61204de236e8b7d359dd3b816a5e3904714815246bd13feebc86b841545c52282981ea5fe14f4bcf8e4f9aa76dd6d91c5e7b5d4ead7c4054a61363576a60b00ee40d980525732c063e59baee13e3a1adedfdf7916e594c2ef59c8e32d24ffda3ede8ef675713bff545c51ad30b88633b94ac935b012e9bfc910f319f4538ee65ee724c848e64992fe32de916645932c5ad04fbd522374f98bef28fce632332b8e112be95d3a36a5af5f6e0f2cbbef216b48031d7a049e460fb5627548fdd743ed81b8ae2b4359a2629bd1c04eb3b211050c3ad05aa50cfe1393a0886b8da2b47e544050ac4dbd58f9be71fa5fc04c972a253d666dd7ef56bace1195e165280f976f632e2580e1388ffb83b62ee257d166fc439d69d138d267a6466fbd7da9a6a4a7c5e2a76c7c810d9f2dfcfa89ce75307403009b718c8850273e9b82d57e5c8f1ab556496447d8f55c18eba2ba43420a9e7b1b9a25fbe16b8d6e2b72d37e6c5e3483ff3c6bb7db0144c62630dc5e5bcc421a193c413a61f8f100aa209041a553b4f77f6d4342065b446acc0aed5b1b05bd690c9a886a199adec5f67d9d3c1fcd38d73640e441d9564c85caae88a5656b1b7abd1930710ff54191e36e7d93527752c97fdb8a20152be16ab75c89cb20bc57fd7f8a78b3ad4b5829d6d36ad54887d47421382ab62aeb97a03711057cff73337f02c440885425435886805c8f5f2452eb7a0fc5d92e3fee1d60e28ea3d587a3439ac49300cf96003017df03391ad6c7d56c067d760a84ed0a9083b1c9c2d593a8d4abb037d5f40b87a6c246ba9732bd513d180655c7536be50f0f5fbeae9a0cb630fac38d8b485099337f97c97e51c90a67c2afc4208d92810cf11a8ed576e6a1505fb891894ec61ae3a558ee39180f0006e22543145bb613198fd1dd85f4c4bfa4c16c1e9ed8793ad969b1889d6a5c229ba461f12e8a8ac8e50f8c8fb71553dc53cbf7fb6afa47c64f33b99dd85e949830514b75acc87cbab3c0fe7042e1bcf7f3ee4d270851af32584c4b6970bf2657cebb46d8a3d17b7639f2941c3fbe9cc7c0ea3f343a32552b4d669a7a2ba053b380e96f24736baae09963ada74de51f96d26049bd02dcaad04d122ad6fd49b88389e5e0dca3642f465dc39ec63c60a6ea66573271f0d8ba95fa17421c3b61630f09672bc71483eabeea731c50a6432ce68e663ec99e850af531d175a0cbe3ff1db891821dd928169d211e8bfd50a090ec5754f0528e36ed1c5435ed5eec819a308370b22f5f96a983037aa84f765d3ba06b748edb68029e2bc8c4dd625b0595f853e8c13c93f655aa7cd687c38cde3bdc6d874d057f637f0b50eeff98652e05e99ebc3a648069d49e3fcde87c113b41844be65bef7937d0c3f727fe1b44e0590216f4ef2f75875d6fa9b4acdc6e8dbf4fe09709e33d731140e5120b6354adeaf89fcf6ab831fdf128feeb69caadd7fe5e9ffb2b8658154e148ae7420ff77ec4e24844ae5022085457983c19bb46f70f8d0bdafecb71f5a888dec9ad3e87a817452f592e8773660ac2d882c21249db1eee16e8dbdcfcf14136cbd88debfaf3b6ebf681c6cc58e6f45ad406762b49b976cc501597a42e6f2671dc7d8b56e5d2822bf150f66aaa0c16b6673c982c4d6878a0efd8842f12de705801dc59213e102875126d6b810e0366dedd0dc037d5f9fb3b71892536a4c319db59d48b65c2cbaa49bbc51181bb1e3495ca62738bd2597663b94159ab4323304276d2fb5a59886861ca1928abdb12b320f2417f25a5ac54de021af09d1724b5bec586d7dadb36f746134f36710858be6813347c39af80d0b72f760bee161ed69389df96d710e9a12e1c55adece91519150e64b07f1b0b20430502a995217182cb445278487f656289a98f17fec0b640573bab0bf3dd203d40c6d8d027e2e131409e492680344d7febec563dfd87c84fca60bd34d63b9d699c77f4924f33415bd74c2b0042bc50344649e89997566ab4e0567f7788bab0e9bdcfbc4ea4826ef118e6d5f412d3badfc7b5e46cbd4587633726aa8c3a73644f346a1c9cf3a1bd49ef26671633e0883477195df67d18c7307fb86015d574d3db660609721ea96ab0769a651bc947af65857bd978c5a39efa3ef7deb082e2747ce381ccbcc4d172c36947532af6632fbef2b661c5b7c922282b846718494d5978b277502fa15dd557162dc73fb3ee637cb3693af10697d62cfda6f1a634bccaab426ef08371c5c65ec29d2cec6a94d57ce8ed6fa2b13be0c32e1ff0ef089bec50ae02f14df3bd56785f35eb9bc47b808ddf1a73a449bb87deee86d2a1601a8e654deac058f69b30e85a37ba169eeea3f63135b8ce74215e3ee99bbe0472c4358d5059cc48080768f1ed496f2ab2b932db4c46de2da7452b505292f652f8ea702f2dd92c2483865d45db9df7ce0e0413bff499aad7e3a79119778534c396660394404a2095c5bb02f9667170d3c9e19f68b88a7bd996665c8e8b609dfc1534b21750aa23a61327af41a5ad8b38a0f890a0a5eb4d8f15cf22c04d380d15aa2bee13efaa9e801b4ece4127224292da1bf5e33fe9ab14481f6195492c3dcdaa8ce288694ff5782345736409e292b94febb102c2249ab942abac4c6593507c82a69680005bd68129e5940da8d457d41097c9895792958f42ebcb94d3c136479b89533c69a8120173ccb2abe315f157f2c47901463ee513b9815905025ab79524de45888941be24a6bfa4c7b0a8ab911212135b57221796ea580151da8c205b36ec827a4abd16fd5a6ff85765f77fdb36091505e5e0c06aebf78a834e83f13bd924e8141db8aad8c84a4f2a7efe3c1eb5b6036b48dd43182d3045d47e870ae9e57825f1905c27eb5a8ea2e676d3bd069b76ee85e39e8840d0cfafd5c24a075612e45e6f42464c2c69dc04e62ab58649ae6d54630059ddb358626666c96789629c9dda9992468ab403b0ff80f179cb3d1b9a8a370477670186cc32c9cbb35f6eee4a04932832fd41490f94f803da109ca145bc1ff23bcf9bbcac271d82541c64bf1ceec254b4268c3b4810e360a0b8fb288f1c9131f7b9920b101f77463836a685d12dafbda6a4c3c33d067288ae77b3fef0c25e35bfc10d9e1f679a238237fae5520fdca327f8c74a8ee22e0108e8813534d922ecfdf18494c8716b8cc03e3cfcc86a709a467eefd6b85647e6fba677f53befb40e9f68023cfe6c6fced21f1dd79235b16c92fdcdf5fbb2e010f0e5bd9f1ba69867c4ac757d04668ebf3ae5d008f07fa5a5d9886efff46c945f5c4a29029ae959426cc228bcd1aad1890e8f543a35d539bf0c1514d6fce4288491591dad02ee8684248e248da3e7cc94813938fe6b9cb14e7fe545b8d1dc4d03e30d5ffb2a3e8a251c08d5ccfc4506085c4cf7dac23755a289b6cc8b65dc3d0b3a16b179facceced7c47c8acc86ced914ac1954856e89dd3c58df90097e1a258b949c6b8bb3231f3768e725369e93cae69ba0f2d88cdb36fb1afeddc47b3def7ac04c95498a85f7eca56140700e08461575c6583ed8d1c88b9ce4667e2b43a1dab1c11130a69c9eba4285873eb2a3ad76d275ace41f34302a31c4c0a92674767afdb13971480c5b3ad734c6e7a6b9dbf8d59b93293d4bc3323e6aea66da358476e2d336f10fe6bcf4940639e5f802e98394796ff363217f67f016bd4ed37292bee3099ca6006e6c0ac075c8edfc7e981d44b27d20f86033f8ac520ed095dd1f62ea6a2ca6b439f639629af68bf08960a8d5c70ec63e60c52a666322cda44f3c9ca97814aa3d00b3896c74deb87e6e536d4d51604f8716bcc333870e56f265c685f490f6c7e1d7df78bc72d60a94e3f4f1c772bd13a69e8c08937fb3f72f5d204c02a07bd2ef71236e572621d9bd5bab88fd802bbf94de4a4d4a2e91676815d1e101802bc4b3bbb88a7558fd3b8f1f5986d628b0f188c0f627225f8c4ef7f51953f53e5165b68674bc800ceba611ed1d4f83afed8f7284f3909ca2e7b00dc8690c54b383d73474b351d378b3c9355d2bf26f0ca5ee3c3541035cae413228b0e24c356656477ef553f4100f44286f43b749fb80e12fd9acc1c82a6007664c2b2d2151b0025cc9609a4ba3570171595a81bc9417a01700773693b7672b52c75a05865c13a9b8df25d3d9382425d4151b9b92d48ae847edc7fdb21658b88dbe790aa8d126381e27dfd7d5850f46f9a099441f5b582168069ff191dbf916958723966ecf150d0bd5921a109ef95508febbc788db9bf8e52140914ab6d858a27aa7896e6839105c7024d3a472e2304453af2b518448dbdd4d9288c43c8d3da04242fb6870e73313ad1c0cd5f09c3848173e84ba8967b70a4e411a1abc635216e87c1965f5a65c630cf7f649e78513638f970bafbb8ec07d2bfbc40f7ccd3d5f9847fcdb1409a4585ad64cc4ecf142dd07f7af6aa6265a093b7d5cc6c0b4ef4f29c319cd982d3eb4b5ab2f71b24ed3e2c9c17592d80f5e9313fa0925b15d9f17c3404367e8e79fd9ea015fa232b0fa9f0772b4ac6ca72f6bfa814214b9e323147a6c1135edb5379b20675e57a68a6e4adc565f0df9ea38eeb340e5ebd56538cf0b7e601f87d709f31ea7e78af4233ae4f28aefcde87961259f32b6102493c6022c68c8827d1bdcd5e709856ffdbd9138ad8bf5bac633d8b9916de9724059824ff7e16d3c2a2aa16c701d2c415fc1993eb4b031114ff0c96c34ea0df4eb00ecaba8b9724d399036503ebf3a949e61eb40ffe46490cba286af26b22640d95f6960bf3eca61205c31aeca27458b6a6738b478239261a2caba4786d8f3d508d15882c588f20e4b7e65def31b7b8acbe65450c5663becaf0a8473b5d4ec676c4f1022a27a7012ccc7a37454fcac7bcb0154993cf78bd20d0b9c0b23ffa603af7d7f7f044e82951dfa59d10151d25727cbb1661c9c92ef0e9475d9d40d6b4cca23cab8bfa7600015cec380e62d8760a63f14044d6e8aca360eeba94e7e6eb40909e724e55a2de9a187bf416c77c48791352b1f4a1a2535cd11797a275312aeb11bc57e582a2987fd4210ede7eb62bc18b921ff0cd743d17f02bfa0fdc9a124a27dffb7735835aabf396aab167287c9277ca875c66d8619a0a8c8fe7c3919552e6f796c7c695dc347781dac1a28dee58fd22663a30f5edeae01ff9fa355af8f62f1afbca9a787dd17846c8172928e2f25a14dc887b4cfdff5aed844bd960eccce64e8c369469ec70b3ba0922bd14257cccf6a72e3c95dbdca878697ef1b2ec9b5afe1bf7c66c78b8ae01eee225f717fce09e22b2dc49cc959bb1a6f55264f81ca2e210246bd3989668d44c2b90ac07e4c4c1ed3a3e86ed6ff9870a7cb0c6aa1f3c976f55d4f7b6b1a8558ab6d65d1cd2362b538d84821e55759e2fe9e3d1659cf0bf19dc2b58951a5aa4b79ba779227e999507bd37add046b9446aeb2820bde65423317c1fe9f0fe35957307a5c1c5afd64b87aed3e1732a773a91068e0590ace6be0ec6a4d45a1e46c3835a0a6d3455dd5b17aeb41dc39c9e1b8361c492fd1380b89f9071aad4171f75beb70508428ba77b1345aa7781c762db01990aba2c1e84c1096d871f4beedd7e8d17fc9c6dc6d74327f0ab47ca294d3affbb4997fc7a0094d8fbc09c56c15d6a8bbfa32fc2569997754bc5cda3e2508a9a030650b9b7d2386f0b1e185c0efbf189c82696ebf222bf1d731c6aaf60ea0a34b45a330ac0d25336be038f98ac460bf2296c0af54a7b120a46ce61b36fdf30a10cf810f2dfddccd1625050e967839f4ae9aeb1d619a11dc8f0377de9a73ba3f9afc9e9ff50f303ae0d395b7ba5756ed27d57b161367f618484708ad0c9c61404a392f87fb4e4b460a6af2188645035c6ae12d6a06d375bf403b7149262956e4a9d7bad19ec6ac3297722a66e6fa6488a0921780d8f92a6b296dcd488a4be3cd01d98d06c8db2729788274f9309463a2aa931d54c40dd253ee2d3538e219f1fd8ecd938cabadcc095bdec9e33dd8a4a2e15c1c701318c88bffdf46d67ba00e85b5bc86a33d0d51703bb14dd447012a72d20add45159f3f7915b3630674d8f9297d4014e0174efd8bb5542963415182bca965ee81b4ad67304a02792e338e650030aa56eadeea11522a0b6a5821fc0807eb491b8761211ff4c09f761cc64dc1c617c9cb120fd7e44d1f2c22df8681eb1292a067180f653df560f15b7e3a11e1beb93d41d565e1cd52dd65204ffe3b0230de40bcd5885061dcd4db9e6079cf5647abb9ed91e2d5a49c956fdb8d49b91f6c3dacb334cacd4ef974cd8ce30bb8e0d8fb3355806976de92e4be9c0a528dba964002690e4d4f6485717fd2b1544641efef612efe06f0b37bc3ddf31bb6f5991d2b214a8e96c074a22e1d9943b1d42645ee20cc4dce25ad06c77222efcd930736ff18d2e91931404429607420564411328209bf037e395de544e861cc64e6d36ac96db38faab4d084be0610e931500e810b2955fef59e671c0cb6ae499829b21b9f27325db42f8c3ab739d0c259b8ec1788ec658203ca512eaf3640a9c5eaa5f246bcadcb7dff5bff217e26b6764e5b3bd9daf8a7516f1b40e0814ce3262ef632bff667e2ba06d4beb551f56e539bf2c3ed02955ffa42df071be06d3f8014c994b47f9f6e7c3aae58e32e8943fca3c3bb4d23cd0789498a6adddab4c0eb794629be8e3ae62278e03294f1753dfdd9c4c1b58c76e9c7da348627f0b9d88d9e77e2da612d7ba03e17f18e06b8cfa201297c23d7f28eb3a1c04ef379d2c2b5db20089ab259c0537b42ce00e7e094989bba8171b9a126e7a04d5c89d410dd07a3737545474e3ae47c6a7865506b284969c17a60a3730f6ed342279c7c33e35ee7b795c46db42e1c686a1b1a5c89e7044abccf1ecbfe438e5a0166588974c55dfd200b3b85a1c32586f63167a35b62987c83c94ecef885e46114429a670b905daa7f806aa7c5c86b5b49bc99f09f4229ecb0fe258a488822f5746fc8159cecbecf3b2f5984fd0fecd25ddee1b378c8ec38fa1370574436a6323761c42b54bcae49edb76accc77022137214b85224738eaf7cd39f1260ff815f98cc350eaee41d745ed9a6b277c8f395c577b73bfa547c89f5629e0a8af898208badd8087109839f3cdc3b7a29b9c414af0f151364d584a08c02229cf12829a67d56a2dc9f8ad1270f6e7a1ce52c202d2eef7ab17af37ad346b838184c456baaf26be50af8d4f348b1a0610b6d8b3d60e33620ee979b930ac11a120b32f23c388a7457c534e3424c88a97ef45036e92b55f59fefb6266b937997c0c8cbc2362881921eefcacc745596544242f64e36dbc57b1b2884e650191fa7df541f516293614fed613662bf5da3c407d01f6de845cb7c33c0e18a3eea58d73a269c703dbab04420daae52a3a592c683a34da2c3bc62c2ea8f64346a146d47b6efc1fa2d597bdf8bc0fdf17cd0d49b70c1d58aef25762c94d874ceec06b714c6d486e59e6b48cfea0791f08301d4d6e1c87199baf886010d696a181ddddd2b784dac69f3dcf68b900921f6849a8ced3e981094cb61aba21f03e215cb45e3c04092cff039b6762ada300605163af2febd87bc1cda5013c3c34fd4a922d3858f1e1a12d49f1e9907dcaba4980d24a6f8d4946111a3c791fe0e5dd235975e0b054cc2c2c59b4b0cd6347096648c44508650f209e03243fe2c906a43bfb6c2fc71aeb81cfa9a446db570074abbd1d2076d1eb986e0e3bf54a6ba71c95a0c1641b1046f6f4c1d5ca3cfa5b168161e95189fcbdbfbf383da5439c6d651c1d53a952950348e5e77980c07b60b9b26e01b846eab53dfaac2c27364a5393c763287870fa47e9f54817ee8891be3691aa488b1faef551f420f932a81dbb7b0e7aea227f2a7ebb70a142bd7ee837500c132021cff09e1a4ed7020005f2679ecf8837284e890f210dbbafe06a4f87f26164a7cfec1ea034cb096013345b6664c40636d3d12ccc541a293a114792d08cf91979bda738df9c6a779798c773b36c7c178f1237924cd9299a53f2336995b318197b6667bbdeb72fa73cc03a4554abaee0eda91a372de9ee01b252080a3fed2c67eed01028288c2068246066d263ee764d24335a6a18d0b6d86b7bff17d23a6d17cc25df51407d453ab5d180aa958b0eaac060c939102fdb4c7c32417d791112635e040cee65d5d2a05f862581e1198f4f7eb5d16ff660bf237ac839cf06797a66c2cc9b43a35f733fe1fdbd639a4be13d50eb3b2d656a4ec8bad106acd1c71c3cd057eb7f9de077c3eafb47c0a16ea49655ce4dbc40a12355b502c611a11ed529521525f841ef2534a4e609426625c36f39a5444dc465771c68e8dc7b1490b32477f112db09c2c573db15405a0b3d73007334f00f6953960a144350d5fe37dbc0ca971ef61091f4a4e04cfcb53e665c43f51a75c2bc878427a6826e22d49fd0eba606ecaaf7569eefd7265d833cd09f64f19634b79d448f39e5d848a510bf2a24123334cfa2422fc8d86c6f5436f2710f88e55fd7de4badb3b774c8af489478aa3f24fee3f7a8ebc5c850854b49ee353e3a1e58682a19e8f7ab1574398700fc66dad8b3163fdfc407eaf8f52b3616c58ccc63de696135780dc9990cb4e05170cab5eb43c0c9e2b630866d2977f23d40d7415092f5216efa5e2fd54a36c99cd6f9a925a64f5cabf496ba319979b6d227b88cad013b25caa25ffcf4c1255b4012df63e23ae886468e45d95f52fed43c45614e706657108a5d02da8e1cd6c3ec87ed25c2db96c8954061237bfffa9863f2b5f3f1a5d03a91852b22e4f48af4bd0a394ba8ab697566cb0fdda3041d7509b5ae57a89e971552d503713f77cf647c6ea31f3bf0b5b00f602f7a7b3c384d2307df6c75ccefa1ed580a7ee1e4391b29a702f229be01075242f17830405a5dcd5c2e6e4c97392d2dd92db1b92a4843759d1863b0625af329267e886fa3389d32d3404252b8fb7cba3529753dfb62a6f501af031333877b786f8dec55cecae7c726ed7bad2fc96afee53d7edab38c1a75924771cc83f6c3f081e3a941f8a3b26ec21b30a17de08e7c062b6111d7dc18507e73413afbe7df70e331a2f8105e35b8b3fe2611d5910f49d3c71272b4801373cf51fd73c6d287223139c0c64dab465c417dc8c05f29f329c68c97555794f24522fe01f75a8ad6b72528bd2b47c8eb4113950960604b2f73bc5436537c4946b04301f5a6a08686cfb89043d6784b16ee3436a24f8339220822b5816ff230b829fc83fde802c823eebe47872ba1ee045075a992b3093a7f1852d11d1835160d8aa018af2469ca543e8a5a7ac2481d2a4efa10f9f1fdad78d46aca9e3411e033d008d50211528f261e14136eb0896291aab4ae87caa65264dcd23138de6341a943e83de3d76373e64f6e2f7b2338768010a6f58ff53001ae1d2f584aa16de187b9fdc532d3b0a19b9e68fe7d49a7ba9195e018e6c89807784ee71fb4235ea2716365d1ef2be45131cb310ae49c2d9366c4d7c044d31b2b9cef8f5a1a696f17094ee2ee4f363f74e6793518ad039d9a0ac2b42bc7c2ca1edc3523102edecd14d7e8e7536a3b10a51b7ae64a457d048fa5e3d099a1fcfca4b0f252fd8db7573a66eb3f8a2f06e9cd27a737733d67b37957dfa335aac36fd490781d3af03f3594bf6fee6ec693fd73b0a1a68bfd8d9e6e56f29ba720e3b8c40865802544f9fb460be04d30a42f4519cddbc5d00fb0d75ed58beafc8cc416eaa7f5eab8b48b3c9f50306a3bd358edbb20663e97a26edcb876665fb5d1bdb814f05b8477f41b04c9b7b09ecc01865e01de34658ca5f017d7c793f58461f1bce8df7c5a6a8593d2a17d7e4ef93b8c90ccf69fee314019586423db59ffff48967381dc3d0801b9ce8dac8c6993af35b3ae7dd54955d1b55e1cee90c91189bc64a4beb594e6637d2f29ac87ba7b1066ad3e09cfe19fe4ef8d4055658165f49dacc2b80906e1512415fef3e9cd69d4ea2cc5057d1a0ccf43cda979c4be8ac94629bf7fc54978c2e257accb9ca28bf693dc9d551b94494b1c88442e0fa678bc8a1a8723f2786e2c0fb5b73b787b027cf60566c2b04426f8b6f7c880ef46ad2661c7add066a4393dd9963aaea35059cc8728d503f310483dadf639b4e66f4781077f35d17d2c48bf686694e56ec589237463001f51de1a47f6d1422e1ef01f37a77ff3681dca41e7e723e5e50fb1618da21205ace72f0e54c48eb89ec7d8ba38919c4f67b4a0afd5893c0190b18f35d84320b26ae11cf724ea29fd0fb5b78e39204a948dc8d435a294430b0d938095ac9a7746ffa3bcd2fb1e895c73cc8be4017be8adfc32050485e1d9e150158bcb927bbadcd9214e5c21f45e6e88f5ea22a5f3145ed0612db263b2713044336d90be12aff19e41c2d93fcba4a1df6f0f456894bab2b8e644abd84346f05c2bd70efcd1863ae6b861d6887a81f55625e0fddf883276de5f1125691f098a923a4dbb3620606c20359217e0f159df9df568c37355ab68ac08c976a318d3d73a5f306f299331d05fb550c7e11b3792a5a5ce09be505afed944ef12ede18d7ee8a04bf86d4ae9e7fc4213b6c54de989057de538b1dded88f833ac883628693aee9a38d5d78cc0266b886e5d065275e2e5474e62ede3527d92965aec4c551280e09cd540c99d2af171f60d95f8568076bf5a657ec4ed89caddc4b0c33bfdfba48ac1beea8bd1da828f841c4835c6ff5cea041189f04e1dc78f4ab92e67e081417ffbae98a1b52b7da33ff3ef48ed569707ef3899ed4058237d1e93a5f3131c6c88d6cfac74f23c4b472a3a5cf9d24348c34806dd9a191f25ddaa42657c2820e0bde2a7f3ae21d79eb564f174e4e44baf459f18b3c1cfb74facb2875ca791568635772302df5413b02df7bcc11c63f0e581e90bd9222c786501cd0c20f75a4587f79e814e2e51706933b53d9be83c3f5262194b7cfa4b36cff4669c1872a19a8b6ec0db0877d23a7d332ba531fb240e9fc3f21ff5aedf458e5293e5328dbc8de49e967c3f46c47e3f2f292eb493c7b260c31009bc3955338468538e3b93065cf233861fd5783931f70a67649d8a63fe0a01d71e45e4c341997074b0cec0d9e91ff48e0d219de477ef415ddcc6813ce41503d3ca5bfd0ecec1847d7f31ed535d4d42b6d78ce35919f4fc5d0cb160375015ff995fb8ec137d22ddc01ab8839e68b80a84905262b93c1eaa52467423c59f846b2ef70d06bc110e8e22dfc1f80d92e3933d8fc676bbb5e7446d41acc9357d0b5b87c20261309a0c1569d8cafd0c167b1a4a23ec8db2afe286845d7a8871eaeec7946eb22c7c6b0a26ec233939001f1fe728a22de29bebfd38438a64a54665096fa5dd39e784e49cf5da441c94eb48e3d0b8db10f12bffca12be2ead149ff8c86c9ae2cfb431bf7b7505cfd63ac3d73928d5c8e1abf47c1dbb34dc62d74fc829acc8df577c553fdf709d3a517ad7338731ea725f64ffae893476718982396f8a63bb09120b5ff454f5e580bcff6aaa7781000139b1b10167c526497442ff8e8a101691f1d2ff9b611999f7f6418d18d9d88e110b570ff412ee8bc904626e39dd6129a3edb405bf488bbd0103469102898bb42fbc69630c427e7a2e6e2818253f5660f133bd3298cfb6e14fe1ce87b31d846c8bc8b5093b11a6615b651a90f4debcb7a5a40ba54747c658ef1e3e4412d4a719a796dbd26d953db8e3aa0e0480f44881ab026a1250aa995cf1b8e67272e3c9502475d03e0cf7830f27650a6192a148a8135d754bb21371524ff20e305aad699a0708f1e405eb98b9aca319ac31bdfc3f5eabcae2a041aa268b174c387b3611842abe9df508873330074af63cc955642b650e60c1019bdb9f114a97d73ceceddb8c04e3baa1f296c75ae4a042be0a0e0d85e818d8fbcdccfcbcd380e798cbd2b94a873de6777050090820c7d1446bb52b268a19e5810a5b4a7eb05a4579886e28f92d206070bd264477f6b0b73ce5754296282bc266434e3259ff3a2460d327335a6c4fa5e8871924f92439a9d2636535a6306d4c447edc0158364545199ec78697b268329ece6a19090051f9a72e287ef602a68d2e6b8aa58f2a75fbccbdb2a756fc18ecc5e16b95cf01721aa56acebac0ba1a0511347ba32ef98fe90df4d22294ba6243249c6a154932d4a22cc5631f46a4e2fec997ca7cf5536833da3700ca868d83bfbf9d27b49b482b695ee85adca2ce79d06f82f5225deba35cdadc2d10b5c23d1f811c8abc35328bd5111dfb20203bcdec4c46d9c7e0c751d57caec48824d4d1716a760ccefbad26d37eea6f4f3ceca9fbe6c4373fe005fc70ac0eab7323126b1795075b9606b8f5bc58c3052ea4c1fc39b1b5c494e474138cff5a085e6d18a4848006ad82a2c18904a27d45117cbd2b44c4767f6f21d29cf40757767ff792764401819a9545f1cb9e970502cc9ad4c59d705ca22436d68f4af060b3e70992720ee7b5328af45ad91090601475f707fe3623e3f903dabc431b6d8f1fb6704a9ab352c819aef34004dd05210e39dbe8634f621c10582576c2aa5c1da4336343281e6cce807a4e4b754bbb4ca1e6e338933e8dcc02eb2c82903d67a224054a6e507b9540d0f9c2327eb2686e7e7eb24736d1b4cd183a5f1c176497c6516bb099d6f0194006fdf6ad0e3563926f0563da4bbcb35a2c543337f3c6c538d2f2a1ffce8a70fff6db5129c7a4763f5b6e0ad918cbbef1ca62ebbd72bf432589e0d05078253ba51cc3630528b87f83622905d927fc5da0f2982a9866f7b68d32ba53751e6b72cdbc0cbf0ea674c86cf9c1e80dcbea71810dcb5b6734792837882a67edbcac0b60dc518993c8cdca4ad63f801d711bedc6fe6ce2a43249a09223c9be282c95777b5163449031aba7e52cfc9f601d004f67a6a740f80a8222978fffc872c1948ec053b6a3e1cc8d6fb1c94f6b1126ca95cb676bfd640744d28319195ef6baf345ebd6d1bcd7b718464712fa9206dd5da60e539c2943db06c6c710d04c79f675a5bdf3f721a5687f0d7b1a1ec690ce078a67e86c59d93dc8c48cf5ce89f75e954e835ead40275422b1ac4ca641706a42bab275498e2159f777036ba0cd050bdddee0778937490fe4f2ba7534cd1d7c008590a1dd2671f9b74c72354c213c42d9611b69d441360b44d94f95a2f649fbdf83e24709db54a28f205d28208656572438b16ff042c78a5d7209aec52f067f827e0b4e0d0b2287202efba009c37952a5d6d75b1b959e1ea9c32a3f0c0bdec79a0ff47787539d510c9489fe74f458761d5af5781e0a5a8f08208857cf4e16680a67296fc1664fa2b6d622ee56311b839e2088f3598f9c824cff7c0a93ec2ffce1deb8ac5837f1e355db67c170c984d585bbd8fa8688d60cdf7d4838301ffd51a3935e45d9c6adf6d459e2822158678587b902fb836d6e5efcc3dd2c6c61d062514d55faf83c4f793c3579197db160ece60b86889bdeee50c2fa12e1cd9d2a9709cbbea223e55cec12b0be0ca2427ece48f2f18df987959437f347171d6c40691036ef4fc910b93ce8d11acf152c274825989482ffddb4213f5970856e6f30c5fb01f116260a0ff1c812779d4d69b9d4374576ccd9ce8a4d08265c651dd813ffd55f7139a94bd6b25269c08cb2299600a81c7782d8edd9246224c82cb051094be0ab2f06379c9ff2d105997348d36d29b6402f6a718f7b4d08a090e213d1014076eb8d71672b3416fb4b8510d4b228adf614a6c1783907184ce6bd0237353d9007613aeb445d73b07a2075ca38ead066bf28e788c29e0e8e630b113cf5bb7654c4cab7711bffadba28dc0ae69809218ac7053ac58d6ae1d32fdc29f508a21e9779c00d47133bb2b8aed8eea83fecb12e3be6764f2cc17e8c6147c8e579a0d73e46d0440551830e2d1ce2cc3399727e7acafea91a48d5c42a5f29c7d89cd262d861e678bb81d4005cb06440a214e20dc27a65b90f7105265264bfb9d82c9fba68105954300abd40c310dbc3d35b06878b7b11200fd9feb79da3ff42ee86c25f7a2890f7af4c5efff03a009f52334cbe0a8e9fa6e51451864b17546916663ff0a144e8e113208e239427f79452d58126beaf2d2c6d11497c9bae9bd99026a21f4d084ad1c26cbb74573804e43dca4b4e92d21f7da6f896c1cc740662b9b38850de2a9f5d842b758ca67f1444ebede84a5f074ddefb52cc9f258be2012f5fc2c6bc367973c5be070abad3693600df9fcb21ecb40a9e8971aacb1e53177078a1ea1a03797bec52218b04377af1a45ed9349069c8d22d3b467ed83137715040a911c645d7757398e89c7ca369033f1588dd0fbad640fdaf325773ac0abd0101e1c9076ffa17f1d3f80e47af38ac27526a2ef2646edff80af03a53917180029323cc3652c5366d6e5d132ffdd329422663afe982ae693c06538904274e659297a56d6e80ca2039502953f716a15eab12353fb1fa426cd58a286927ac75eb8a3f46f312ed55460af2d8dcb7040883279a843a6319829156e0f90065a1d2e62567891af40904ad5664eee2dfb7b7ef6f3bdeb878383ab22b17bd97b50f9d70e416a960a3cabcbdfae67acd9771da5e475cf64de6397810934737cb70a48747d921412bc28c565eee7654b5fbf0c97caa7147d94a9f00d9c1ecf5a74b597a8cc6b800ca375f433a3559ae25251cbc133d568bea6ad798a1031e1fca5ea10c23949aacaa68b2d4e874b44be573c5bdf52776743d04a3ba44f6129f95c0afbc930de46091b895cfd28880eadb9dc2928d07d19683701df7fe73cf9402ecbaee9614836e2e8d4cad1babfa14846e2bc8f3ff3d5e225dee289c636ec165a80b350b86d200ce08557db574bbec46aebc18c722d2703b6b83d1da50bf1e4dd8f0a6d7a3de369dd294060df6d05b0f99187d2ba339cd6cba5baebc96b36691ea3e5b10a4485529b586d22f7f389e5ccbef41dfad3cb206bc53584ac5993b2896405a120cf33f6889fc6c5feeaade39084630813c595b18821a8cccb3b376f0f62e9332c8be022a712281bac27d480abd3e3e3772cd5f3c4e7ffd7dcfee60b8d853bac582e7e727aebccead1bb29fb1414ca6acdff9bb931a9581171030f1508c930303933623d191baeb84277667df30fcc4d4b65a40bd4b17ea35d4449f483110a6917f5c90a143b80cd0af6af2ecd3981caf8c6af158dee2621a92c94c9b76ee51b0eb2c95cead128e6af1721e75690e40cde3c088c6b49fb7650024860d799721705c6a93127e1cc8ac885a4d2dec97cef3c1e3be551becebb12d243b0fa2770111c05e078aa3d88848944357e2575d163765f6d12f265bd364777c7e676017211e9d441d2880aba1e5975f5a25368f27cf1f3fea2b7a4114a46109aa1591c1234abf08356788fc26b6f0addbd88c263056da97c8416ea6cfd72099849ef21b6cbce9ce5d801b248832f88ffa2bb57d2c9f00ca08ab59c8c452fb2f1ca20f3938321ce3c6a2befcc0f2974ead46a3816364e80ff164a8de8e01eb6c0ea8ed8a7fbe080e4b909f5548bd02023138c2e07c33c4c2e43a5a87d22c6ff3fdca11d0688cd322b1dc2f2bb5c0f2c1a298d2754199b3153dc98d6c3aba92e7fdaa163db7558a0582468d676c06e873a1b525691395406b8afc83a90a03dcde50b271196b16f297c90f7ba6ef953bd8a8af282b159446b0091c78ae1431c49d4fcc8c0400b3094ae1e92e3025d6c5d9bdc50e87c05cc5d3bc7f84e19d62e3cbdd282d61cc75d7d8bf54374c8c8521cc6769c2d9e1ab97738ed570e43f9795b904139172943283c4ee414cace217111dbeccbb94126258d9b5920ed7bb1b2130c1a37d2fcd98ca461a6c4b7adc775e57fafd4ec5fdeb4fc819f44ec2a17d5e7c30c6f7bf2c028fcbb7c0fa0686d4a47ac542f037e456875db507437f7d1a533c7409df917d9758dbaad6cbf5f5e703b7f7b18dd61c8bc16d8ef411d70a779d68bc0b6b536382dca18fc4a153dd6d6c831d315de7a78b7fe73e48cbddaa1bd4591bb544e474d7b4e2a659997b06e4c64ecbfe20675569cbf2a3e1ba377d0dc2b58a7bc6ac4a4da2a8c160158bbf1ac259a21d67e0c9193a5721c990ff1984a289cc9cc3f6c2414b3cd721bc5a0894d0cd93782ee56953496fbb565d41d053aeffe9ba4cf09a9569d301fa6c903e29e0b0bb0ed98e567440470fa6ab89290cf415138a74007cbc1ab3933c843e18dc4f768bdab1fd65cef7c72685e964ebe16bf731b60ed6ea9c4db4020a7b27fca18bce14237f9807fb4d50de649515d949a73ef6fcbaf5cc6bab691e1cf39862af9c2ae2b91539f16a71e069c73aa4a388edfc024f8720472ca8021b5ea5eea30a6a8571a21de7d741a6f735eb4cabb1b5ac2701e6db067ae9d401094982cb436a42dc770a3416758340e0a479de8cea774726ffc37385c0cffdef1a9553baa067a1f0cfa45cc1ece5ce00e2c12e5adbe639986baefbab0b47ca726fe7bdd91d012b449bd58466822f234108635ce0f6bcdd9d7c34264c619b69cd684f5abe0807a68f49b4f7adf078bfe2db83cf36ef059fdf7729f9455b0f0b4f9bec6715f1321047610dcb5ef8b0b9677b276cfb27556af3b972efabeab6ba84c69c6afdc30b9a04c83dce3a40823296275c86f1bf9bd09d4e979584c20c40365f57803d9ec04d2a54e7ce2727755006562b53c4bd5855c78774aa21df5043239daa8e408adde74a7768a74482375c75f234e4eba7a314e09c25771172031c5aebd13b0c4bfc5c71965d20c3b1fe28e5c4e62cfd9b97e72dfe40df7f47bc62117a9a8043ff7f304106ee2b643620f3fbc13ea595fa2008987ee22b26d2061e2bab65407052589911b69aa1ab6f17493cb305a24c4c656f90a4cbd0ba30a72a1a9d75943cd585e6356989fd4fbe133967b6e631c13ce89421f13d83efd588a1fac0090c466cec0f8197a4152a78bba1abbe25d40674722be48e20f95c79de6c2433f7ae5c04250dbc78b73efaec7f13bfd6249070a0cb706c76446e3564022e024b183b89583c4fc1f51a8a3dfb79a251c10b41d7595795837172655d93165d3a8da38e4939d3e291102d97c138700b134984e9c0347f03601bb1a9d6da8b39d815ecf9d002b4f32b7c5d33eae94a825781897b74445c090dbd91d5bf864a3a396c4d89112434c0b569605c4edfb41baafb1dd5d907fc6caee6ef7344207e45d7ac35547791badc74386a671e334ce8c0684bd78284b86844090c2ad7007f92976f9c0a8eb990e5a0a8ea12ba22fdec036e46d4fd4da17287f2dd3dd5150667e6a37f3f0d5c3d2c94dee11044944c52d537252b89a5b107a3bebdb7fe60475b6e0678234e10daf4cc9571a5ffa10d1de70bd08f54756129d7b62f047360b0fa1b4b90d867ae8b26cb5b6eec6b2aede61c7c295abb36c029c1f0c1d8e280e2723abb542e1e33df7aacd337cfa21ec96a8c6f09ba05a57cd16a1d3f6606c4d05e0ed2947c844a6e9ae10a42920fecdb6218df80b4ae7652c0024760f3dc0b47ee85dc4cb8e45eca25c7f12338037da6e2011f36720ddf61f98b84ee0914f97ef67ea65318f1742c0b8df633c4eee87f502f623a902710173cc965ef89be0b6f2ae7374b91fa39870aa1f3fd2e65dc725d4291de17e8c48bf10d8d06dbea5ff51e5eb0b15231ad227bfaff6b6914066587018f1a581906e337cc4b407e0fe9a16fdee0aa4c7474227f1adaa414190fe6068e816722dcfc85c11ae22950e6c1c38a2c9bca67b9eab114c63d16aad3e4bb61849926a4f9dec829657a602d3fb90cf01a000eef8a7495d37c9ac95ac5b296ea867fdb2255b0429ad1a1272186f69cb5e0d15191b97c099a2883b884d0fdd9a50fee5095e3d3e9b13d7f0c2e2bf7819ddaa16ebb18b101057e918fda59ba2e3b0b09bb6b1d5dab561c17533fbb27ec148e4f091684d0f3da7573f6afebb8bf5db9f2bfbe2cafaefaf3cad76c5cd4defd3e9b35110747f997f0f5eff25f30d6e1f06d33cf55469078283ad0e59a8045f962705aa1976095f895109c56f0812799c601dbfb8b07f8d81e4b824e25f7d9eddee34713b163af2bc73f3d240f4aa84900b55845d3f7468c185f5d11e058448eea107fbfd760807efe6c46a0136f080bb1b07906ea2ab50975e4c2b87fab87a53e958c3f266bcb23ae5e242ede3df438df9c177e40d4bc545bc7cac1e9071837a5bfb3d569fdc4555bdfc6e715a37ca37755f027d148a16e453acd584e9149030d82d27d2a20bd6a4366c6052d5f3b2fdc717c6926ae9e3e085275d7e764b06ddd8956543fd837745be9f38b1089591ff1472e4f1ff7baeb1228984a0beeadf24c23a91e0e7eb77fc7bf4cd26c54b36ba5393dffa61510731859425a9619bb864f046d244d0f6783301742ba2d40e20570eb41f2f16526f307c5c82b156fc99d4fa4d75e4b3ebe000990c9601488551d1ea79e4cebe4d9504f9065a720931469d71f6f352e48cb0cae30baa2ddcee4f4e58f3f2fa9cf70eea7559451980fccd225339d8433d7d6e75bf017d134f36e6d1039a8f7cb58f2ccd58d2e174c79fab35f9f06ec1a5dc83fb85e53757bb9ebd53532de019bf2af799a8503b8b2f3fa5dc82e27a844d28937b3b84ab7cc895b23832bef3baf7354d20f0dad60633b69076254372a586eaabc27d373335af42623b9c4b38d4ea7fe54bf9f4be0434da5cd0e668473a18ce1c6e578b08d3d2fe2c67006497e93aa53d28be6d945af2f7d4b6a709406abece8edb146a38f7d0bb9ade924678f2ca06f5473f34d8bd1845bff8ea51b0c261297d2a735a40c9d7a532a7e5987104a24b40ffada60486fbd362df097a6859656753d725797fbc23443d36b1212387df413ba28e4d15a97d5ad25ff36a586680f9ff00975cc84da5a3c9dd2b915dffe032c350be6a5e7ee63deec4b56cfbcfa2f658b0682c08cdde3153755b492dd963d7aa0475a0376e1cc827f58536e54f08bad3428d7af9f9676a2a3b425ff97d4c02197a103df461ee23f1338fed2571d28b6e8e6bd0bb00685d17aeb388a95a87d72ad690ece2aba7b1c7e022bbbc1e47ca31cff6f47038679da85804a83d3639edff7979a39823623c69da4225d1611d1a6c4ce965fd98397714e79987f1e4f994367fb88e002d96f234d5cf0726b8818ca44b633af4f1fef360bdbefd547156edd995a1d6cda1522b6072422374bd091f104e09294d7c047a9dfe4ca211af46bb5786d94df91fd0d7024f73d3198e6925389ec03819e1e417d4630abd13a8c59d48baf0779274a3855120867415ad4239477705197192630650e4d1dd2e48bfea27f383ee4ee2ae794a59537f5ce3e734133a35bfaf50c43ce70ac1d1342b038fd9f5de062a5f46623336056b437bdad93b2a9949d7df145807a8579603df3578b99ea3e179cbceb3f7f04bd1f9b08f84300c90efce37258b2e7c85d8e9bc85c8037bda5a0900c8eb731c3f061d4112d00c6c525a629dcb1b38408f5dfaadc48f6f4b2853b4ccb0c69bc8425648e560d7d569c534f45a4543302d8821143411d28f4fc54b6291ac40d7e4a3de85e252adc2c978b3b53303086d1100f4c0e1cbea6c073171d28866aff4b38a9e6da86f6a2d5e68e21b1a9ded061b2e7287d51ca2371eb08227578b1aa917f27a335595b4e5c54bbb13e1bc460bfe9ed084d165ab0f5c346053fb844d46e3fc5450e6002ae31fd7cb7373f9431cd516b6a352b201380ac1230edfd395b5af5ba5fbf6ac37726265c91137550f5a3fea6d71107b1193e04c4ce7c125bf2a67912c69e53ad4da00f80b9ccc519d711e477c68e7cc5b2762ec648ef47d414b493fcdac09eebda6146c7009ac62bb635064f74e79a15673ef648046329cc7be766c6d75e3b51bcda8666657447b78543fae88977c3629d99d6cba67d5b3680c48607e72feccd5219da2c183a55c4ef17e869b26ac737fea10eb9e4753fcd0723ef5cf78759aa6cc22b5b77dbcb686abf824962d53a7eb600bd5a0f6efaae3fd38202d2061702cea738cc75dc95092b112da0e04d84657259c61deba48c7d9ad45af6e13881d544ce6cabe21283a486a2ac9dddadb7ee7cc00894b852497c434fca3bb9bff02e7ccd324f9275ff016f6cde9cc28c34121f547b1956acf9a632f2a24353a87e1f7a4cc7ea0198d072994fc32ca6bba15ede31ed79113c951ae6783aebb5e95c421e3d535d7681e23ae5b2386b696f7e56f9c1c060b044cf0861fd1a35eb068b45bde1bef3a7c72cb406d77ce8d7348827401617f8b6f5a422ccc3bd36db099363a1faba41767fa24cccd8fff9d52779883f1511f747cab8c9031355d7ac293f8b34e67075073991ce7e7f8e1d998c30c6b31f68ff19912bb977a911c5233fdf843a90279b90625588570ac05f8462f065bec68dcca675068ff68afc097760956e62c60abc884f629a39afd6170d4b8a89b29d64527f027ee401bc2be8b76c8c5c9d988b41a0ccb9047f19c55b9cbe40db71dd77c8fc70df0926e7ef2e6121ad58bc6d167741803c4a405e7890a37ebebccbb73badeb835e930fa2cc6bafecd31159fc8a9dbe738b8a0c0ced3df0a983b61f907f06bb2031e71e2dfc2ca85d9716ab15904d4d6a33a626925316afe32582c6543dcd731a7622206db7b1ea7c798ddf935ef50f7d0e7794ec0615b7b79d3a258428440e7426420d350f21d749bebc71bb3b0d322ddeec6be1f49874d9a23568bcc981e966a0b95bc1eca64561d9e47372be1265f3407fb81fac004e79d440415c9b9e3fd96e61c88e8ff7a82da75bcffd0c14d1d7736702a73f113ad010a90046c27c92bc99c536b9abd0087676dfd48a23958a1fd3b18551fc95d00cd14b4dac624361c4a80601cf3756df4b4eae3deae5a25d4f9bb78d0e8f400964e8c88e2993dea3911abeeaac10faa69be5f3d7dfcf15882e0e75fe9cc4da3c5feb42a62f764519c175949128b6a92699c0ad61b05ec2b0c14daa40ee20d608656bdbff3333a9370b2a64fb6acd78a0a20a706128e2c4ae23d4095eb5c6de05f3536d0dc37d9d6e430645d4cfef6e28c830855043068c0a563351bd2a75c82311436666848211adf722b48e648e235bd3efc5ce871c6c9b83f310c2ba52f7064dba4a4fcceeb8b8aa4d1a8b07b491d038736be99df1a6e591b695c81902c2eb3d0178515a8827799c0c63558c8e1a366128939ed962ee98b33dbe82aa7cce71a21ce8f3ec17f5d40025689e798de22f348d0a4be68a4c383bb4e7e08495d74779fb19a8583822ef05579f7301886be1ff7c05115c9b38840c3d33e5309567a32ce42e6cd3f66b7e0fb7b5c98f316d0b2009bb8a394db1960b97922673af6bc46175d1ed4de18b6086e6262023e87a4e7eb222b9db77cc22ed5100903bb442c10a02653af22583c55ea2abc4c5bb88710517f3612fa22be03bbdac337d026e675dc0c53b73fe6cc5031efa2803cf069f86974a174bdfdd98a7bb38d68b9bce4cdd2974a40932a4e9928d6073a5ab23a411a92062b9bff460dfa14c8187fb903354408ecf6d20f56bec5dff118e9ff3dec84c0e717e46369a8e367ddcaec7d09811dab248a52926022dde71467f77bd5b7228d3e18f22149b893b6b1efd6f578e44b7e03ad5181551602374fad3f3cf4375b175e54385b0d78cc5ea28e18f72935b3f7ae64767287ba5fdf9b302b3254efc8ee3afa1d1806608f48a0db583e05c4971b75f5a5672a6e2a6aa2b35402e4fdb19729ac1d1567108febbf8e712577a87fffdd2e9b90a68e3eeb69e49c6219692c547c5acf7932b898152d29391415dc989058f7e9a8c3852e0d49696f069406ba4cb872fa7dca6c9c20e7d040992e5b46f1bb7d656c834b0bb8d469f8ce50583af90302a0ab5fc236cd785c9649a7b84939922fe7e71bcc8784ded51ae4ac263b7b7809befbdd75574fe4bec2ab3130f038ef1572f12283c1685b791b7ac4f2dd8f5aaee70daa3fdeff8e27c86821161742a076a2e18549bcf9112cbf04bb8276983c12e4de23cf920b87f023f43e8ad10a33803bd8c803e7ecf5b5ea236f876ecfac9a2aeff8e78ed51acd60e41bc78b1e1dbfdcc797b4421636572d2e6d94feadb3151e5c3dd26c6e72390d15eff5b66e1803ada610fcdc9c76e9c1380bdaaa0a9400e9cde53741738cc078b423ba4d50cebaed2e0c14921c28e9dd4abe39bdcba4108c51164bdea516c3a63065eddd02df06126ccf5856ff274657bb4d0aba0b5cb17a686f37be0c9466a7a488c9d8ecfc876d10925a0b3c43c680287f4a0c889cfb59028c1a0683cad8832f68c5b4a3313466b67dab7f439f51f673d7c4f24009cdd9b466a8226b8529c181408c0b1caa2c62e28763028cdbac99c6919597c7c848e86f658ae6afb8ea778e995154c8c2bde62a05be4508930de9b4b73680ba2c2fa8313a574cbb7f1eaa78b1dd1a06b3f4719786e74507addcc6a4207afb99b93bf11101621f89d4a22f21a9d57b4e37630bf76d71cc41c0c46248aaaa0b35fc8ce04531fa1f98ec46625d0b27c559b47f59c4ec0e99a3f636aabb66c261588e3ea8c6fd348cc1421e2421243a42c58f922344a5b3b3b36bce6216b464a75f84a514db7304b334edf06546d22ce51c2ec188d051a63f9e4a8f35a5a570eb99b12493da9c0656125d83ef3e70ac9e933e5b5e131b237e0940546c57c4d94d5c4310244535a0a5ff300e9b9b874b163000254638ab923d2a1399c8ba3ed202c29cbdaf0652db8e2ecfd34fdab2ada5dc78d3b7714625a86afcd09f1715cd6eacdb4b680357481781abfc0e66a397434f1221611532f9878caf24f32cbcf860417ecfa89527dd11531da323016285484c077c73da96dc29bfbca842509296314c3821e67724981ca92bdc66e7d109f3f0fafdb3acae61bca48c1912def899977e479b11134d053f6718bd49c4e22a1e2cdfce3ae27706c0779c351e9f7f148b0f5dcbfd4dfc9bc165df60ab0658e1a3a5bad297cc8895f48dd146adaa8d6a91e5c072124a79156fbc32f84c36d051275cc2b39cab6cd450a4c7eb492baa51d41b552573c48b3dbeaa79c997d207a1240c3f24a635128e272177cead533329c73648cb4169f3a2d77bc0002d8126e36d6393364a3c6b8dd46a1b2ec3386078656a202aed6fc9922b28f27bd42193bfa3b19752c4d5ba91f44e27048eb03302b187d7e1e6dca4f922204032a4fa312762489f24a699ec27e1cd15297a75008e4d6553b2e46139384223f88631287893d492f5f8add0f355fcd00d0c9a305497c6b949900109adf3defd5ec38cfe08258400d3f0578e401549d55347053db85f8fd08a6348bd56f5fb1c0edc58873d50efa3a81960731fc554d67fbec8a21b62c53d96aa326a4bf542589ef81bfc6aa6942172cc5a18a39afbda5061e0931907fb7168d02f8140c28c1b3dd50a1a1f9d6e12c0e5a347e9d20c1eccfc7706c73a2bd6a397ed3ed73093c8e320257185fbd15367c7c0159ac17c5d10199b0c12369d992880981030d820b612b78ed01dd2f06e0b656fbe1c2e7363f638115c088bc4772bd4ba0ac6fab7f270da1d6f3aa215b3d57b41d84583caf8ba44b55f83c73a77550f68c835ae02ab3250c41e7dcb5f35fbb5931b762c2a82458a862300b85fba930b7718943c7a1c7e191e3f9ca6d4d6afaaece7c7cd8e7ce8e663aabc3edd4f5cb4fba00b42758dc057b073264dec908f8b91e5f01657ad84e15bbf3aaa88f2232de2a0cb0c7b9604620b99a163b39afe02dc0f8c43d7efc7277bb8a1cf66ea92542d52ade4f36d2a6cdca8e1ab606509b963006ded7c31f161ebf765dce96192b51db37bf2856ae14eb006e74fdee6923ac1e3eb54d8f5257721736ba8b829c4fadc5d8a7c051cf6141830965607b20f3cc81f0f6cac8f8dd93d81a7312c6bdc4433b8eb8a85b937b3d0b1613ea2014e56042ddca2e02798151a917df78b91789217d3b208538d1a9911f8a237df9399808ccef75e80b3359efaa978c9ebf860638305195126064532472cb75337e5df8d69a9db3d617b26fab4a592135bd5a9bead98de2aaec31945abd60760290d57a43fec6241a4043aad7d54aca4148d8e4aa9ee21d62213351e1091fa89269e6a017dadd9371762364a3a3f016099101ec036bc9aa153d494212948efa908c2722f069c985012bf33fba8777834318a12c4c67745d476150a7a4abd058773cc9025b12103a1850f48cf604893239968b21824426a23ac5bf2e0e69cfeb54d8c2b7e1bc275023ef734ee01acb4bbbdde0817f1659c6d890db455fb0449ac6b9a79b590a50fd4fa1c20e047ff888b0ef7818f0517611df427940e77338b262a338f1838efb9ff63e5ea42b3f5c21519086f704d5949accbb43e42c01632c4680bbdf4c3b7b516ae51cddc8c27091431ba48ac7461e713b8566acef05f7439d09c2d71f615bd25aaf12f6a4d72ad02760937c0af502bf211494fd14238e1983f65102933f97d43a996c82b49f652e8fe83e302ee3130be5daf42d0336ac55c10e829b4b490892f44324e1f084895537765e316663020b4fd34e5438ad33e929abdfbe7a901aee68666a1ddc7fb3f1bffac812905fa98e6861e142a13a203f62ddb0b5b104eda375fb0f74d1736cd62d2cfdb520ee156de7010af18397d656bfafbba23f78618d2334c25dbe3967eaf7377a222b188c03dced754acd18dedf26f45fbeee90200ac36c6f72d5a269347db81644b7bbf5300903f276cca20ddd2b019efb1e7711a1d950896736c579136436a6d47f3eb4c543a0de0a2184105116112c966cb7cfe129811011ec2d5b488f67ae2c849c373fbba8fdc6cd1227d9b15e56bc24238aebfe30db889397ede8949f047d39896078d99f8eb531436d0a83acfc843bbf8365206229a65146096fb295d6cc9cf3177fafbcc9449ee57e583bc6aa899c63bf6c8260af270b2a11d6e7c7923d04d9a803cae342bdcb677b8de4b8002e1f513124ae1573246ac6998e4ad33c5dd780ad5f63446ee7227e627d17b224741bc80d80ec0f7289d421e3c7de9f8ebe8651085cf9a190f23a5173c415bb68494fe2aba2370d644385890bd20c8962fb5313e097a6a823714f0dddce58c9921243f4f2b2098af8710a33309c3ace20c59a76e26ccf37a9c40910722f8afcfc453832dd123b4d69018ec94f812644aaa94d55df1a90d0e74e7f32049526c8174e6e7f7e43c0c923c5357956ffe251d3d03cf9ca9e9f010c249dbcf05f7571dc2ef34362653279c798263bc611832c514e57217aa3f7381c215d11334cce0c9d2765f013a6979420d1bcc77d7ab93a9261b3ff81fa8c81e524690e1da06c5fb581651cf1bb9b023c942d3dad457f1334483470bb405e1fa1eb55b703eba221e18c1f27e8d367e1eec6f8c99c2db941e04c6ea59f6c0fa3bf5364412fb52940b389155033972a1b3e08bbb1330a7f9a6cd538e84e717293445500672a53396d685f0f72af77621cc59f5cd23ccffc9b007684107881e62ffdde349cf3c79c5cb330239f61dde1b9ba89bf9b5af52a5257b035ae3f46e98f4dbe019cd77a32f18acf61c6feef6cf23c1af1a3fac6fe2fc33962e3be7c1cd798077054d15099283ee673580f21502493fa23059cfb7fb2e3d738322a9f3c678489b84151d7e1e878edf03bccd438c04cfbf738cb70a044bfc5e44fb0744f48a23da21855cae15b3e6edab8d707d24c30e99c721d1c9156cb06f85367a2c54697f7330e2e5f83decdb27891e3f76e1d107e804aa41ef8c6f8d3e7c7a2591b1d52fe74e51b75fff3ff646a824d120e2552f5d2cea36e9ef7757b67bfa1e7828b67c3b82276b4d57edda9bfb4dca2deff62af81e629f24a405aae3e78989bd2b77702617c06bfb2c167356e9b98c408ba6bfea906dfd6d0db831494c30e39723faf657970afb7ce15d6d6d6003596918a63def1fe83de228f861602c2028b64a0b316b8aac0b2a2aa7da81dba1ddb107fda52f097e4b83f4ea2c1b15a3d3dbbd75eee0ecbe6c24ec05717c3d27efb121dbdf065b6f8ab9040efa70b3b4f14a834500881837099423786612976339fe8c9405421877109b12173aa293ff3546d26a8bd81cc04449f58b9f082cc6804f3572795e1fb2b111168e27b44e1b354ccdf990282e537737b2d583538d444cc617e8c5e6f827aaeaacf160d758cefc6cd7021d2c7508a9d04b5bd81363599de5158d44db1cde0e997a044aee1495f80a0060d6023154236b4433fa861bb29a60767c083f72d4d9e865674b33da1864ea8daaab0c7366950ab061d19e883665960b1e8aca5d627df7683823f39468ff2a3674b65061a682b6e0e2b6342cfe5841532fb4ebfbba35ffde2277a24f3cb51fc501e65bdc3bfc18b72eea1c9e3d3fc0bf39c144f9a124ddebce4513d80c5e6a19a6e073a8f84ad762c615f03d1053ac3f9ea433657c885c0b370a40431348cb19188266fc3f620b3a2df58e589f78e3ebe2b8905c3c27e541e7a95a6babc941a480e4ea616078f2d7a3ac1b48764c799f0de95cbe5fbcaa68c24736099dff2b6a92a5cd359f8b28884319d7adf908648a3037b802ff3ac189eacee546d66a6d4054cd151361f010497a334f1f8b5fc7bff1f564dbe4a4ed68d209be36e86f2ce133af8a24f09a2a3aad488fd52c814996fc02687a30eb68c656a3bfadb11bf63f9de9be659848f95026c246218809a4eab0b47c8ce37fc049ba93e8cda8239b11f8bcfd1916452f5cec47f5fd50b6ce4756691c0effb65fd1f1c5197dd21736e7bd64fef5b4677340e4c0b04c80798c8b8f32e61eea85370c0d1bd77de7b42e22d925ba1d0a865e5ad9c96b809b7427df3f748e6b53cf8514177f5e85d972323f4cda3d11f64f688a58d8091ca2f187ab392d21c2eb438b2900f858d63472217d9b681c5d130ec124c13ae8d1e2192a30ef8da00de577989804dbdfdb7050228f00b00230d059eb047639d959dedfd79f008f49d8e805d74795626a7f99e400b40a1d1db8d16ccac3465d04d21cf665cb3507e6fbf6987c023a2638c5e1fafa922aa7128394be09c896881377fffe76229a47bea6b20807e9e3bf00a6df9bba6a711e7b211c3ae993a295b52f5b074b8a137517afa0c6439fe65bd0949ab69a36ea66a895a69ade67402a92b286627f11a1ea708325969722e9fbdc930e9535b368d7ddade1f8065c881a7e8dea90002f949231f9fad8c15f484656be8ba511a5cf5b463f6f4437be9280f06602709188183e130ab42074a60455f93fef04e6eb64faba56c066a5b54da7c25346c638b8fb00a52ea1343edbe248c798b27e0272e6565d0e8237f28c72244490cb0fd43bb17875277f06c59e17c7fb52ad479b8501566a92f3b1ca9e1d759c0d54c4a1652537eaa5c6479d153d60870016f11e864ade3353e23a868608fbfdcbbf8b047a4caebcc9bff0b4686c8719a7fb72776a096a4dd70ad8d8697a56da6d5ed5557a70ccbc9b4d71e29c55b6a35c85fbce3c44cd336f22a6682c5e4ad8eb93c678a3c735c4c16f7a0d6075801549ed1284b69b77b27951072c64addeb6ea9a10d626356dcc304b2e92ea0769821bbfcdbc9ef3edd8bd7fcf50b1931acbf7cc756c419889d5969bf1358a10f4bafe5e92fbfa03e8e33a412a46bc51910c6eada701f6849d1e851e6d80ab85013c35a068931aed736f514ba4afb2a71c285f83ac54df9ae739812a916f6303bf95a19763b6248cb1f43c83f91a30c1140e17a7eb877bbc5ead9c1071be831ff32f55cf61c6aca6192c8de9fa1447fc828e7e8127fa53da7befa05f9548c0241bcb4019fdc65f417062af22d1c22c2662b1d5a48f9808500e9645e94cf9cae08ad2d22d53cb5d2ebd60bba4531311e39a19f1291f645e4c424fbd4d585a91dc23b15e976de958b29c6b052b38adfbff51f06b22a62c467dad7775d2b299835f5f053a17f5d172476703c17683ff6bf4bb9238c7f4c35dce259154c9bfb24f78e040d8ae6699a3a3ba789deb0d22c0bda1ffc3f3134591bc686f3bad1873d3528b84689bbf93723602406a247475d9f03aafd2ee0dd9da3e56e4d0313803c93e96b098aed6330ef47ec0b94d4906f83037d2e19c6b8ed25008067ca6cc01ce04db8fa62fdb8b15489dd75120d0c09f43ae6b68cdc725ee6f30c4a5f2fe0520b976ce58b069aac8e21c6134de935bc3b0a4c895e250651a5903fa6af29d90c1b8ea52efbb938b336e960702c84a487b20672c9e6458c8effe3f67957b6e66deaf5a7a083e586473a5f5d57b45a72fbe703c55d89a88caf50cf641c10f7bfc2261b6c46f649617096a0d7ab87f7846dc3258eb6e8bf65c446dd1c644145074d982538b19ede860e2fb85daaac33dd53e3f8406ebfe1d73352dc8405e653e383dccfe4fdda9f8e29e07b73334f5a44d376d35cba02c2a7370c8e50938be9d959097dd821ab5f409a21838ee2db9fafb9e7f965c580b0299133d3312ec6e5ed7d543904278b60cb7d8bded2efc45f66614fa16c70f476a632cc8870952006765126dcc35c75d4b26ededf0d8516bfa2d87e58283af7561a35d007b967726ed515b66f2bef7b5b66ead67aa1ba05aabd84a07013600514c11e83cdf2050c549878d64f7f813caf766d7dc294a665dd1ca9b038fe63ce04d4903dfe918206c22a0107c57f97a19b1acde74d0b6a349f2a0e11b0915913ad6d3d17b7c0a29847c53377a4181c5e2f88c4d973631993bb19b771b7e876e4dc3344198f602cbeb9c269c107c2b16f31d40ecd9d0942780683157f5b805b4f60c6537064fade6dc4ac461bd30aaf931a075c747cdd12d962dd518a1615fea06ddc969876551242c19315cb1b57a55c24a5858b50d1cbdfe671fbcd28560065feec2103962d9b0b6541ed68451a7a9bdc11556acdb64e4abfba65a344b88d1f58bd351ce9d89c742eeec5488bb52049387523fbe96c9a97624ea8f19da9161f88a095deb9867c736ee9ddcd42cca3ec04270b9cd5c333536a020f427a7b6eafd806429960c9283399d04905fb86c3a36db71fe68bb6d59802b6114a1a74f91629a31a70499ef74cc4b2378f22b8812ac478a0231b7f7c81159f4e26f53997ea5b059af029edc3144ae5d70ea67ea30097e8ca0df8170755a9f68721cb7695a30ecf68ef70e646d219ef1d7ba78e7c8b762a19f85e6271a31b1e35879f0c6e71b1161aab025cb13eed43b0afa3fe98cc9e82886dfd8554cbee325ec9e94899e9b9560586f8b0d491a6078c498c23f9c55547f15ca15274b914281d2071d246e37f4a29365d5b48f40109a28a52d584302a413c9da2f32b454b4f400d98cdbf32edcf002b654b6c5baba0ffbf045c09d8da0852ff000eaf7faa31ce4bba328308d683043c8c37f57392e9cda5b32e6dab3a6af7ba819051f8965b9313905195eeebfe52a19ab9628201f24a8229c44dd7b47d879d2cf5926aedab8d2e67ed9cfb49019ceb48aae8d00c60b61659f9883d888e61efa190f46dfae26089342746b0f739012728d2d6d5d72073317af86689e8146671132ac7aff67893fd5bcca790fabb93534cc3ce4eb642d773def17e759a1815c383549651b177485e9cc5f3f4d3fe5ae8953e3dd557929ffa0b61fce8df0ac51b813ed541c42f372d081f83803e6c56d86d08c726a2e484665aab6ba7c71c2dfc33faee1c9d4aef69e095c8db402306cad82ba0a772e8d38fcc1e66f66c51378d10f45abe5faf91845681626822f31f53fb9396617abfca7f0b37a5e97c110e91bcf0ba1fc1a6024ee109242fe301895160ad8925631faf1cb9f90d9158382512d580f6d8be98789ef23c7a50e039ef284ea026cb36d2196ab1928784244770b40f4f4ae72390156bacf36b39482c6d18db8013a685003f55418cceef49d37791d4fb4eb7f37e8cc1a3baa6ad837d00dfac04a7a9d24438e4127b3be627b5e599f31f4f1976f32fbb17f72002ff6f969b953daeac9d2564bdc3a2d0a1fc0462512c3baa5ad5a5b1ec0460749de54b00c662419fae87061bfdb88ad31a4dabed82ac7fb31898e49afac135df10fbdc2eee87ea042ee078e740d29c3042d27b0e8355ed054f11fbf22a504d2e077f97f12dc0c32d611b827a575e2ff8142c7d9470262a28ff08e4333af97b9232f44ed4a52be92f76d74a21ed0dfd258c4e21d5995cad9ac552a6d600b7a98fb2acb326165cd9a805a29e065e701492bfdef500728c68e36fefdbd6d41265ff14bb87f17f87eb79fd3ad11b9894404541352e39ebff1c690b9d5f678d79bf8e7328ae23263dd398adc9f94fd002531e6775ea653483a26120f3779c20fb35a7f97129039ce17ccc696be94345ad4ba40b22316278ed98ba463a2f59d7e47d0c2aef38ce377a295a5b98cc7d67354168d0439a3672acb91d13b698ecffcc6a838b9f51ef16d60d70b5936a7c8836a8b7c75c755b5f9ecdc38827743dec323d85b76ba274e958804deb2a5a749bfbf61ac54d80292d232bf3d7198fb27390e164167053590550619ad3ec040336e99350be6ddb24f096bf4dc9407aad4f39e233fb2a8ba263007b0273a74543a9ff280e11b4b8c2b7316a4333fd94a028527ff6b3e1b11e4a6b74a4ba3739b170f995e1993b682684edf9fb16806469fba212dcf4be42b7816d23836feba4ca7dee14f1bb5b6d4670372274d29352c216f6891f68b0ee6ec04426ed463dbe6c4a7f77389a36abf6072f330dae24fbd011b689d6b01fb25004cd2c8c59d90b2c12fad68540bce5c7e15b0166abc75786a630b2c5c09215d0b1c8eebf577cb3f96a06c9c366e8982c5f888aaafbdcbb37695b2f7c701727fba6b31877d89a952c08ce33eeb6ff31a81e215b99be79a3cd46fd9e35e22e1ff16376d23c22f205510631264e73806c64a05ee7bf12ba6049bdfe2f5561dc4393e1b9f8d2b57860635519e5b5e80b2ac4c83e646024264796a8161e11080c2dbb1b2e318599eea7abbb60151aab091fd85ba14d750fdcb3ba918747f7705586e76139a79d406a785a1338079ad70696323b1e939649874d77330d03634106c8c570adca73ed7033b9da69ccd733921839152768aa19749fc4bd88777074513656a386df45c09de4755f566617beabfeb955e16aa35e6ad5315ae815483cebe44b598011a70da3d71773efba87087cf5fee80a2007694291954fc36903e29d1270ada2f14a9e227733bcd40759bbf19f9a42f0d4c36923cc73b81d63af4a136b2b95fbf2562793669a6f74c34c4324df6c4c800d50efc44ff093e4e65a2a4420482a7b727f9585086703dac0d1ad14079232689301a90f10f53898a8d3e3e8503834dd4a59fb5f30977ce4f75ccd204634460cb02d3a632b790035719ac0e37eb3fa3bab29b3ae2f20cb7f02636fffd7aa39b4eef8c57b7d2d256799bc26d5ad50633466812c93c7acb3598e3912f1c9cdcb46effc47e882b8ca61405ff21ab3584b9b339d3eaeb1293f605695b9a4332849f2f9f578bd3dd7ba1160e496bfab859af35e5f82bc6e3133c0f673d08dbf79f6e08919d6210fd3dd6d01dfb7b08fa6b456fc9d357645e550edf8382c98cf9263d06e4cde353da3322ae755dc7bd5e751e89f21afba2fd4c1adab4d26b32ff926aa70505cf599265d2fad0847f46a8032bf646f27991f2cbbbed3fe320fa1686f5d31bf42469839b90d8b0f3fdcceaeaea36a0fa49d4ed26decd7e9a267d5b3be018c0350da51efbfdb0e549271f41c6b7fde738ff46ebbe076de4e3cfe4d3494defe820457aa07a4cec3c11620fd6ad3bdac68dc61221194a2885b8c0325c13f6b3f9883d792b04777db46e07b3787bb4c5c84249ed2612f041e9a881a457817903462c2593e6d09207e037acde50593018ec73eecfb5ec896808d96ee8a8c016ddd0a456e2e3fe0e6baf14a94387fd84be77c1896add0f36acf3be5ace47c0800fe429f2e5d87c7c6b325596726d13dbd3b6d0400c5ad3633bfdf7244e049ed8ba34f994606945f81adf656dc8ecade469d620b768ea39ca015523bc6ea11a9adec491cf2707dba30db9343dbab7ef2966d0e9fd2d41a443d54cb1d55c95302d46670c325f382cede18591e5390b5c2f72c00e8227ea3f5153df92b887e8997903000ffb8d723bd1095f2288199958cfae6eaf91596dabe7db297b8fb5975a892d95480e03aa04c288cf25e197132be716ed86c1284c08456234de4035c439a126b75f106a44db2aa7835fd76f1191699071b88dc1012f36d031817f89bfcbeb2efca4cf62330e2079f8857fd3a85f3be609fccb498af077e650a496e60121ab4070af9d21b1d262508e822f97bf09dd11aec46776f80eb9814df0b79c29b1ec1a8b9f5e8474dd2b9172beb7f78ee5985f58e74a40a7b49c6580465232dce937b84c128e69cbda2574b92a074cd87626cfcec5fab9b6994bb8a7632df07a57225d08b46443cf8ff612c1e04c39381284bdd20049536a87d770664830cd36692b39e6064d2ce5bfa633eb68b5278539185c73744b1f610c1902c1e05fa0f346a2cbeb13baa6225224eda7ec06808eddfad10d7746391d8ebf104e06006de7fc4dbe099357728672b537b719c8105f3154272364cbad618bf1fdb7bbc55604b83230d0f740329de250e85b1c28bac4ca0e1509f3852833fae089968974580ec7a5ebbd1702524897a759c68eca9763a46cac05a27471f93ca14d309ba52c74e18275dfe2eaf192727bc455469f6e87e5a9602773186c6fa2ff26b5cfba81ac80ece52e4e7aead8aa50b80250f9218681f221993b55fafec2daf19a6ec3bcba7cea5b38fd11926117b18043d6104fac2b1780a0bdaa68bfb5deec4ab0e4f2f8fee386450047f45ed70f5172b7f20841faa6910ac8eb71a4752e52b59c8c7052722a91cd061ae3ca62d81e7efaa564a6cf8b0eb1550676a4dd71007f511fa2839022a2ba821e50791b65ed166af8d0113ebb5c57678ccf1f23e753e82808e3ac76a27c182e89d237058c7ca6441e3cbad7fecfb444371e59be443cee8fbcdbaf88dfe81d06c598b7b6bb72ba870ab04dc55add8d9b84c85e8873b0e172c60a7287bdf3fabc15b7e02960efaf2906dc47355163b3ee0fb82aa4ad43b49708bfa762fb268fbe7c8e9d2a641c8aca3b97c4570471912d815231edab4990099f3955cb03aa34a1ef1d96c730be590d6eee477fdece9017483d9d4e736bfbc25824abc1206a2a033f9f9bcfd05e5f87101d2ffe2b27da1021082ad77467b62ab5a5d904625f87992a647524007ea241f09a1e29b9a85a40bf7d2ed1622a79e469e47be501196ac097e375f31308f305d55e3c22bd784524516511357599dbd13bcd359e4e864aa6bf712462c386f4dfe54b8cdf53d5d9fadf2bc8d58ed4bbd1ae8222ad59825ac5c4d95713b1b8ea760e4f4a1aa0e3f06fb8994ef697923e529460e57e2df9283ceaff2a5fab9388146331b54ae182e5638e3ec0f9e5c2b4ac099c1528620d8f4827b748f768d40067249c39386504626efa9b27534f0558b6ec1bb71f1f5911cc3ab21fec1f58e665d61e7f201d8441dd511b79299eef5df6712eacde64aed6f7b826fab85a680682b18af4a9330815968ef025d4f18442c796f14f020fe956919e2344384fa5389a3acfe7173a56b96c052d964cc1930c6f92f60944ab6a3a4fe1bdde9377b8f7881ffc246046da5cd9b2532e7cee9f063ad7cad52c78be848ec9a45ce443b60722eb2f2f9e0c4c73bc3a395212c99ddf1798ba4805475fdead731dafbe96efdc56231f985b3d0c1096110f2e5fc6295a4a2016d54795b65f4833c16cbb15ff1313559b9508154847f7177199ae14f87b431f170daa565cb1c263693b277aa36b0113d78cf4f463c49acefa50ab8f23993536585e5e7cadc6965db64dc330cb3243cef16757e7acb00768db0e58ed78073700fad03daf8c94e3cb7be42558beb664cb916266db346801f851f0613e18e63074c936a488276c363d3921059eace6883aa87d4b91350f8524275b0435cc3de4435ef01ed4ca8324c4bedef57623ec949aa252467873dd779703a1550dd4f5348964cc85e6afdc4d8e433031e0106adc5baed82aadd10baf003e956a3dfb0f9375a42ec235556fa8f96063603d5afcbddb647ae15824617b4bee123360b2b9452e76f01b8a04f5fd74bef89ae5c521b8af7a6a2e927f874ef0341e5ec22d7617591dcc5957dbfa5597c804ce1bf04ffa47f98c0f0ffa3faae6487cce2451da4b0af835f2887f2a6efce3265f54ed7e755d7400c848c3d054a9da6c955d974ab2e04f31116c1edcb3e2bcc0291ab7f18a3b2197ff299980367f66f1301378a591e4d8fa324c7948995e3b9864cf28902f088d27d5c7ba15bd23edaebe9e609226c702f51d489663d9fd89df4af6e53a7091a8f1f8b9afcc7e8fbff80822fc30fb2677216ef2e522d7384fb4fa75ee62bb419d3be9de482d99d7da3667f652a37db94f7be454d42dae20247d02da985d57bd4773739c658c4780433f6736c1ef94d2d90dcccbbfc059fc4829dacfa03f4579b48b4922c424183ce7d547a5739426ff41fb80bd7c79ad0980ab03ff7766a97b17b0c0dad287da1526f24b8bcb95ec9b0e012ae4b4d3c15788d4449c5f54932fd315da1d88ffb11776051692b5e57b1d9b54f2d623922a018440883718b0a13cabaa8d84100156340b84666a8d7f329679197a058f0f12cbc9c9a2c5ec2b4d2d7964af72943e139be89bc6d3b7baae4326740bab24cb53f8615682955657c42d115d608f90e176300eec2b11137e685fa0cc7b6300d8911886d1f6cc33b38e634ae4d23a7d81d6e1b007289b052bdb032da3124c2972d4f15b5700f4276a6ba47b95fe48b73295247a7457c78c7ab6e1d950c6bc7f4f8e4eff4f66cc9978516cf7e91a116269f6aa57b7bf5cb686cf1b4fcf019960af63a7d39a7d8548f488c6b6e4924c354a5b31a232c5e9680b22ea6c3dbfb136077e2586f470ed2fb9cd7cf985a2a788558903873656a5ba88b81550bbb850f0ecda4af936122f61789aa90932f388fe531c2cb4bd47aa31b2995396f1883a31e3e478efeea14c9b037c5fce6bfb436782332071430bd9c8a478cfd96741ed4753955013dc82affe5581bc7db7232230b5c005591b4c79547891ac7756ab6a3ff16b77340695f0fc769c39b73d5577039028f0a930d3cf59c1fd349a80c83ce3b8c84b21fd91845f72cae821a271abae0323d9fd9f70c9cf593c19906daf6dfebccff17fda347f08bbfd61f3dbfcc1a0e4faa8efd4d93a9e6fb7f3a0083f7c56ca2d97b0c71af1b971e4ed97987fb6332a5903f0fa087affa7a55231ab7a1f889a02142620627382885d288dc6470b218f7f942c381ffd0817f0eaac3e2cbedb7da631f7893e4d981dbfa665b11d5b37201f7c18254da74fcfa51eda59e9fd1a49536095559411c2cd315a0e67f5d953dd2c13102e6bb41a5c39446a8e26a4d3a8dd2697b7523cea7024522142a055630276f726774f2caed7cd30464cee2046ec089d3b20353593ca488162ad776a6f02d70851ee88168d506281de4e5c210fc4bbe21ec31a3abf1051c9cc878c1510d2e17ec56ec6b138a528d74c40acc6bfcd086cf9875f01a9f79f4039481ed3e76d129b8e1a961a0224b69156f7984f160d7fa43e04155080a1d8c9c99aa96ca2ae08909abf39c478ecb696b873484874fddd113c29603eb41d3483bb9dd7e18751c52f45910acdc371adcfe24b9e6f4a6ce5dcf00f2435a418cc63ebf44b13c5928eb7a1c61f7d547de7e037857b55e9a7ea15b4247003cecf2615d4294983410406244da2ab7c161c3dc734761c1b8964579f9e437568db87f37a9a133890173fb25619162e99d80642e5291fcf8895e9d21e55c13d0aa5020dcc63abac85290fefe8ef9ecf4bc57f127c1f602693b993466d6204d7a110af6b672a16f3123da60fcd7c0c8f6188e37ac85172bb71c72ab1e17e3875c48a9340849f12507b1ab068a01d751aee68bdb32d7465022c3d66cb454c6ade443b6491e7d3dae34d1d84b5934172c2f542cd74a822e73970f72896f0e01c5104696086c21b40b6c3a0b869bc666cb6da199be42e98141e354b8e2ece63f349da86f53fd8400574a267915d6258be319930f2028dcd6aba27e7b4e2ba1217c30adb68100a85c797d432d68df8a6386b2f64733899c8e275aab45392dedcbea196c4ed317a290c3b6e49b9b71a96528dcec8c7a288c70574b36b58858c0ec92d3227a6a3b4f185c86385908c5b2ed6a41b110a92d411f5559f504a60d647396e2815bf12c5442b8d74d431c843585e7d21a3300e2ab425da4d9140825aed9e0a94d072b1436512e03254bc7f46c1b66d63783e1e6a66532b9b6e61801354b98eab5bb206ad018309f414f8ecb766e4f774d434746b848565d254428134be73251924eb973045ad0472ce291b298fd199f81b1ee6b79feb33c09ddd0c28038ac7f72801fd9676852fa21e0d52c8f342545f027b56863ef6dde1712dfc9dda0e18c52e3ae495f73a4d47a1d5baa0dd9a3daf1cced1bd8aec8c964899593285a78913efeb9dba2b88490527422839f68eb9d81816c708e413e496249decead6f5769608106821caab083dd211e844f9d44ae8fdb11fdf5ca7ca732d511101fabd3aea761aa10523570d2e4312e81d2fbffec40fc1c902bd96111c4bb087ab2f9548fcce5e06fbbee8a626d6b6a45c8043fa930827c32fac6e02bc48f4da17b0ef86b6aa5da68d242b67438d6bddf97f8f3fd6a434bcaa6951da74484a5d31409315e992870c1e30eb5f0c2b21fc33f8ca77a5a703ab48c8a5fa4c7a2112c784fca30a8187b5ddabb191dd961f1dd2ea66625a9c1b797096ab7a869c456e2e6984007f095f4d89dba9fa0053eb618f643ac534b4199f5ceb3dd76ba043a0268d97f44448235ccefa120d40c481a5bfde189a3a9182b437d5cf77c0e3f671b1aeb333ed508d14536713fbb8b215b4e83923cf9f2d7ba1c19d48c7b46510662397ae323e75bfc9476cfcaaa7a50d4d1233d42ca3e9361b55928b693d92c885e6dfa7357336dea8df895404c98d9196e274cd67916bef7754fe4dd36d5ce64531a51190635bae182e8a89022abeeeab811bb1c99a01f8f47f78ee92e18053932de2dc8d19f0eeb4dc9962410909ae68cd4f0a40eea8f456c081caad5d72c9840985ccba00adf6806bedeaaf84df11fdfe1fc98b54ac514026d94cbf46ccd9f2690a3e9c133f48960a1c2bfe1e642f683a0ad9298a2e5316501e863957988c111e8003b43fdd819a3674779fe517f392f93bf0963a73102ef7b8ce24f6da5c629a2410acda02ad1244a6da1aa3de3973f8e90b0726d03cb0449b2fa2274d4fa1bd1e6d616a243b148c731bc4d4aa44278d481ec8e13d14fa89e87ebdb471f1130409dbff63bf22e53e52b9ffdfffda5dd5f24899043f283ebabae2092b2fb6248637248ecfd2d5db91a2630227cde80e1b6d1b2c4a20bd4a6ebd1fd3a9a72a9690d0ee2785ccfb051ed5bdb29304fd7f890501eae3ef35abc715818ad336b9652a4f4b3909a20842ca5aa5ee5c44818b063e612e2de67a14b07afcab49e5ccafbb3ac2732aac6709de61b9bf02b1e4e0d254c7a392d5788563eb69502e5845b1c86c6a4975cfc92201b17047383d958b5a43c79c641c49c04b03f80ac7554fe78950e34b3a7fb63a4081dc80799859df1080a99fc527e964e11c008331cd37bbb6fbec5917f429a660daa1a2d38ca827f26bbf54f05dd40c249c2e72b385a99f050f11375e53e27a0c4c46f1a2a48243f24b1ad165284fdb417a711bedebcc0295b909302771c340ef6810ee15f608d07b272d5a211f4fc72b6ab1883fb83819d251f395d8a53be2141eea529e5afdff222cc164c2ff736bd2918a3f5364e6095d0e9629908f6b59cf3d56002008c5ff3769c1c8f4a91c8bc23ee8a3bd76cff8be0c700f1fdfd4b172ccf38b120499cd10657ec9b8d48826acf31e465c8d209996b02c8097ba314807d4e739027c1016e76a6311b3759d156a220022261ba91a0205476059dcc698f69a18d4fe99e699efb142a52bbb0763e9ade843a88fb50b04a0b0bf5b7d13b87d320544b3367a2512faee635ef8b61ae80a85a0fca2a185cd2e9cc33523631c190e66165f12bba6399f8d3f296c36eab69700f3a91ca228c2342732f3c9c1588b759238e5db8e45996cbcf2b21f6dda6ecb819bacc23f1d2dbb9c4b8fca3e527108012fa4659a84b9c226f21db528996b011213377e2c6af990d4b68feda325f5369e76907da8a22daad16ef47380d83da217c38564b3744930a62bb5b13b71723f1f93acd2e3d706d9febfd45574a6b82034698c43f6ce3d7f7451fb1561dfbf382e21dd64b28bdd2bec1df9c051d14726c2b2c908fb09529266c31ec666123e55945ad50d67b180b82776ff45583ef9b0dd8ad657bf956957fe38f76e7d6ec86601ac8abf31fb99a5821f82f45aac4b94ce662e9787ee9f9d4b685ac63880ae3d26d36a189166d153cca3dd36dda244f8500ab7e64d9662c6823b9f6c324e77ed9597cdd524a919a131fa5ebf12ab04398d71ee588353bc5a7d16a601c31f7712243173f389a224be4130a0d3ddd0b4710b337ee7857b304ef686db2c53728ca4e45f3cbb4df32d6fd4c11fc7be01cf48dd382c5afb98d6529b9e90f9cb1481942e4796c3c10f62b8657389a18638b9b0eb4a435eec60e186bd0f31d9ae42c5f692dcb548ab32b84b8a4e2ec2a9f35951fe85104ba7b1a1a219048bf98a31e4b47904ee2605a2f332d1a8bb6172573109d36280b66daa08bbc5876f87024fd0da16cffc4322fa905e2653ba33707bb51cbc6967592175389dccf705beb15bc03b0da052cd945e952d7c8b199e1c757c5ed626c07ce81d8ee638af244e71d60c9fb9a372d0b3e615be63a96640874e2e798822ccb916d211e4d95727e74f83bda0000a3654d01dd19076ee25d9ae5eb71f0a9ad4bcd62500c2bc3a86cb872cb18d0dda9d2ed3940c65bd748855e8b5c482ef584d28fc94e77bfafc7a5b9cb89dba27bdd3ea886f65ee00d1b1abd283f11a1bf63bee9cb518766ae15225613ca44ec3dbec15abb2f634354008fac9192d9d8d14c7f614c5dcd3ea4654a1da8884deb2d84a2de4257719dc8ff2a97a9cfa70431bda55a425fb047ff8ea62aac24dfc87cb263acd2bd8a5025e96f175049f1fd1a987389b479e0890ce7d20359c8b3ad183c7e72d1cb06ae1f06615916b146751550e75333c468dfa0df38fb00de15af6f6582494f1ae19c8e78b7f206984fbe1ce9742be98a6ab8ba47eff8e08cd782b865df5f2a7dad51b61da8f1860481ae085c63d740b23da7e9a591e2011c5e212b8f005d91c18d04e04eafd362a8ca3e5d3bf9a1976917d270e3e02bbc4dca24d97fbc3a5e01f944eabdd0f2ce9170a67ab46502b82c549d295607a3f05d3d31380b6d1cd17045eba4c43243e000276349ed687a30609c8b0e589d76270b62af55d9b0077c0ceee1605da5118265f78e379158655834c101618da8cf3e839b1a52832627ebbe18e82902cd27014bca18d1496b7415a1a6b6bedd4016d20a3bb9ae406ed0cf8e6c9c2fd434891b2a7d15922ce88970df5aa3932246d4b21510905488794158b76999b75807842caf8e93fbce6a6d0d33bbe1f2abe6ae8dfc6c1a7991946d8dd70f3803f0190aafd32d71cca0f828294d991acc85b0e6babbafe0fed4b042424e9593276ef36c1d4f15eeedbe952ac555808dd9072e22e69b2eef88673f75a890196df1a41019d59a35d14e64478618dbf24c87e0c31819f4bbe44622bab57d1da9b2ae0971cf5024aa99355c87905e4d7b2156d9f942bde14ad5b693958e0cbf022dfa06a8c020ce21da5c83cb7739d8f609f5900931ad8a5151ffddabfd893fb34ab74b567e3d176f97d66b0b11208120698acdcf9c67ad46ec1a0e8b61a8349e2a268b043deadccd4365ccbbe472238b5efa5f94ed1eed5d97328e32f03fe9f6f225e8e8e5974ed209933c8fff5898622a01b2f5edebcb4ecb4fe4465398c8272944384da342b4644e22656fef00c8ab680ae223e4929491774065a6202d81698aa226e56f335c88136e1ee572f5edf8c7426a9577af849aa40723ba115c1152ac3e894d2f92039890c69ab287971b20a173896a5b95769b3e77cab6ba2bc0680fc6cca648bd3cce38d4e63b5c1790b2a878c7e20a7be6ab358e276fdb356bbc67ea76e34beb636b53c21d22e4096e826d063ebdac434b602c9c143f93754f49814f8deb0793c9960e7dd042f167e3cfd0e1f121ef596aa0c63c4da301f85db1702d156ca85af6e2b51795a9fcf8b67afbe36e086893c10d07f0d97b95926d1a16460f89c9e1851a0b78c195231e4c44b96036933866bda763d9e0fa9afa613a567814af2d6898b1b028b04f0b5b5d46c0023df4ce62f0789e1ddc58368d2b40f51da246377d5b11b0dc0323af53051014ff4fee784443dcc466c201041ba57b715fce14ea996f73a1d0a3e9d5c857e6a093ca45b2481128c3b34e5a052606aa2919dbaa974abd30c017f597e94eb88d009d7646772ab7b362836adb14ce15efd12ac68b51188dde5b4f0c62cb73609b45843c9c61c2f04e9615b18f7d0b26509a1b82085aa1e7f691c983b30d48c0a5b5f093c9c6cf8a0cbd64dbdb1b01ceaff06bd6f8761763e02760129d97427e7e481a3b45f42fdf74b401ee72d2564daf7dcf5bc53df8340f4a457aa4399a892f449ddd51910ab893085d9702a391fc8eabf433f83dbd6113821aa9e5e52d43910ecb338a14ba007055a730f361cd3fd015bd8227cce1b5ecf670c142dea6a2727d9f3772e1c6dcfb3d363710ded5adcd3edd26bba0f12ef3d3acb3aaf3139638fdb8cfdf22c8a73f6f5f40bea488c6f3373ffc483a39201e8a718606fe588d624731c5da63e05d9a6ddd96f98090971cac25af7aa91dad674402e194c3c4a9b0329e52eec03b2a4cd458973460a2a7e90391f69f46034e11a0e84d1f6635639be7253d613fbc12edf5521db3c8667267c6a17c6bacf29115c42cfcb2fbb2558e4f6ff91200cf11ca91171b1e1e027abc369ba1e2b807977e359918b0783bd8abd5bb786d689d5da96330b272440c005a3e674d3fa2192b65d539a8de7501a05d4ca414f043e82931bab2948a8a14308d91606120269546177c7a694fecbdf6d6636f82d53f3226ec4b1c238d513c7c10a1ad873343815ada463c5fb71778be2205d84e4d03fc67b9dae9eb7eb0e90aeddc6e07af807c50760a9db1b63206fa5100c0d5c8c161d0de85b5b8b825d097d82793f974b5738b94e2d47cb8dedc10e32d8a5193767842e102dcf76faebdead36899f03347ecfb3291ef015cdb5ed8c839649e8abfc823b5a4a5e7480a561e1f33beeb34626acb5ffd0fc87b697a5c4a9248c02feb5ef1467e9a38e114f2be140c4e0e04e55b5edcc2ab5d0887bd5d0f53109abcffe63f3b6386619698487508d138832073b2243914a6acdf0665d7868d8a1cbdf64529b7009dbbf0e2f55579a2ffeb87b345f0861c901438af828d8b3268efb1f7b250807c7bbc9cbd6007a46262e41d97c06c3acdfc41cc0ceaaf92326aeb9179112921d225cb3040907c24e6364f546ab0314707abbe6bd49362fe71742fbde914393b687addc2979414bc6678a84b69cdaa2429781356e800c98448ac5156673f30c452cd420674a388bd93016762402957995b8286a2804b2477f2d1d57f4ffee814df634ad73a74db78953390bfe7603a7a9c0ab5226d91dced5a29c9023d992ec0f18adc4268c89805d0711ee65aca42b5045f22cbf73a4a57ea8028020ff0efa8cd0f2ab44a83d0134d6ed0d6b5f70de00d3302ce8965e36b80c978d45312d466785207233c735172393de6075f916f405975582f232a3f76b326cce21e967d1388f252c43f14f09cf205b30311d33c266ef2c64baae2c6708ad1294b717731ead6f1da419cdc5c2970428d7845dcf23b19d8c71a5ddcc942cff74c86ed5c1a0606eff6b9f6ccf481e38bf0fdf9b05e8bc25d1df9bf822b0c88bfe60e60b021b28aba572d789ee3a3062825f67f620ec7512d6e7e3131bf20b742777731b6951db3eeb779a4a110677b457d1b9c6e1a51076d8b1e0c8645ccfb62caddd70300916e4db8cdeef456fbca298d55b24c444b11917edffb6bd879e73b27c0bebb70bbbf23973491daf5cdd3ed5c1d0d0ae5bbe0e21d51a3a9761507090da587619c7f97d094ac2c4fdb6feb882cc5056ab87c6e08970d42096ece46e13f6fa145e04013e862e781af24d62ab053b1aa283cfffdec84f8fcb512f445593ab407d9645b25302caab11272b24fd2c3b73763ba5d1fa7b1068ccb3331b87fc279785baa52616b78783e09ef62b0e0487da615eeb54b2fc7dca7d68a2194f9e9ab4b5d020fd7bf13315a3cf450b3e9597376e7f52fbee9ccc529897617d0280611349a797f0226ee9c050f4677ab81d5b0e5697b2d4580736a48aec9b61b7771dbffaa408871dddc2831745e2a2837bcf0d27d062187fb36c006b8a8ac149f62dcd0e63c096744292a7e59cd5ff9bc54a3a2328a333e6f276bae033268e746576f1b72d0045b58f99932189190b9315d12ba0f71ff4984f6bd7f25268895b553e32c084f07f7c94cd00591c14abee2626e6cb11ad646bf94cf6d41ed68898563524f34f4e09b3239f8bb4e901afe973b2fc86e8bd6064522591ee63b90c18485baf7f069fb9274b690ebed5e2bf8268a904453533b8b1794fea3152a5dae578c9776e823d31014fa38387f99d3ecba3b3d22d732e9005b2b3edc11aa7ee6c03b59feabbfcb0da283e600358da6e81a24e497c86052a3c74224f8d56fcde6cd07a5fcdd01bdb38543989d95817700acc4eca6dd3249a67832c3729d494c48d212061cb94dad99064f07f04ca5bb317541828b4a481cad54e66882ca1201869900bbf41f27b5f5845bd9f663fdca5356a735f3c27e0e8af49c12697e68349c7636fdb089b868b8c08827c9ce1c92ed7d5e0053c701c48e5e243e77e7d8409a939e7c63037457e6e75afe22f69fc087a63c750ea179c1098030646ddc549942acd5fc049e5f9ad3c0942802465d6392ef15ffe5ffe2f7dc2a19b1f2cc56afe335c8745f225076e4b2e508d4443a896a1e9b5d6708bac019b5b11bd6012d8cf0c98a53bf52777885381144fd858a37c5561349a0464ffdaabb0f2dbd3084361d98986b7285762050e95c077a124b7bddb009af0cab0c433aed78732ebc99fb4f0c5c47fd5f529f0511f9e868ec4dc08afb5097655727b0e3d4f42bb04ebda97e453ece1d0ba1c2abb95fe7d5df620b3196e2cbac6e2679f0f11d7a7205efe6a3b05eb69a51150cba1c3216093edbc6401650517280e4c9d2683756329d6a3cf609edd7e2a0094c91cd7591a81b6125d2df7073bb4762de7e1f9e4227b523e54762c67a8f7faa2264dce9b7f4ad4e8fb2a2180733a7b449b099b0a26d5bbc17a94a6a3e1b9652b63535eb7c127175214e178e51e81a4cefa6338b54308eadb4c1a4170784ac91655b4e984e30724ffbea82dedcf131ba1b9641bc60321b5cd47c5c4c61a562d0d07bb7f011e2423dc46e9120d6b985a7cf892e40a0e466323f3c69b44467346261dc94b6b25adae7b9e600ca3ed06e87e675079e149916c390bcf4d716b78cdb511da2117f4d98664eaefa1302dc2833877ac456ae65c66695f9e8c68003a9c209524ce78fcc35161ab41e3c1233d67ff25099bf8801a5ed592e3e3d4791cdaa8c2254b502f2320219e9c79753c05cc6bbe9d9304f5ddae1d269f174c292a2e193d86987badcde68a7bdfd889712741c1e1d8d7054d9d838d64cab102886bfbea00003125f064b9f8e6d44a6f2461432b3959c1db9276930936c3fe679ea2f4dca920d16a13ea0431e654e5d8a7f30c1ce6cd928159bcbc9e4395f1b580b356b28faa6634614e0e9741b66ec059b8e7ef359b0d10c8291984af4b5a6a086243f874e0752befd38e8350596c83e91c2b4fe329cefb6d2d562551ef14b57006465658799d551080facf78ea89d770e98ae4b373970ba2f7a81d4758f32851c7cf1a997d9c7fc180e7958e999b97d8b5d6f7d0b631ccbf5ff263e701a277e1324aebeed32e14792a2d19455971e3c3326c9f772404046a287a853b2ef25f79b28281db902754aa2d8aa6a02b7cc529c2edcdaabc618519aa36f3ce827b0d87a39e841418d50ede31f8360a78dbbdcc1884acfd6e252ac97fdba6f5302da5aa82d0a18c491ad41037f71a7c5cc818252b22cf764693402d83509b1489b58044444e39acc8c0d61ef133ee503fb06f06655d4194acf778389069040e509fed4b734287d40e892affb7a26bf6d32ec98682b2f4ae679ef449889e91beb90d2f39d0a808b8b0904e8e9b5993c24544d2a881cf29796a15ee7e7a3280d9710afccae9e780108ecf7c006890e2575609bfee01e00387f352ad868be5061a2d3ee36eabeea9fc99790eb6aa3eb81c422257f05118b12a40e5bf2776afc2f3cd26388ba281a55b37eeddc239bb9854c0f18df9bf5aca1e44563dd8ad80ba2994b655b83e38f715beaa2bda653de356a3d5e086a1866a9c05d1fa3200b80c5e93c5a812e44062cd8642c08036895ba2a8215c875243790b72fc1086aceb39d22ea9e89cc10c3bca4bc613a986ced51ec1a5c71174fadf0713f9d86145bee7ccfd613a5b5ad5ac00f38a11fe769cd69e2f2adbbdc16d6929f32201deebce5688f03e12ce0ea5f03d8ef05ab0c0972e54cbe934c538d84ad18d3efc8e8ddfc5c7a69f14cb618f5d0e6f1e7f6ed6540c6d0c0f07bee6bfcc2c56dc347e40936cf880614e3e7541a3b8b432bfd161d3b388e6beaad4cf6a704537ecc281c692a27b34e01ec9fdedd1b7a5e18430601a9f1e299e15f488212b0e433dc3089d805a8bf0dfb97c9ace823eb1de8008ebd1e33cdbabbb405d241688c8f1ede85af45b74b9f085a395881b9d82581aad2cf9f371af6fc4858bd5de9746ed8bcfb45fba1be22e2c6788c069f2740fe35e7cc8ecc9d6604920ff8525ab432dc59bb768aecd82e9a0a8a2def529773c8126a299e189d333f8a9b40b9132e2d85467b434bc3a63a886a805998a8ee74b8e255ff09edcdd82fb84dc6d634e17e089fa23f26e031e272191653907f33899a0fd1333fe87119bd856b36a11ce90073a3365ac6aeee02bfad3baccd320b535eeb20e540b77a277b17eefe66d52e5cf53739da320c871ff9ef65f6ae2131708c06153438fc9d65c05f07ed7814478f308889a8756689bb55cd011b0786d3670953dc82ca4072fbe00604f56717647e6f112849133c02026a6c1cd542d11f5c8f77525c937b92aef681305ebe88b47b0390522748d81d4ca7b2ae624193760054efd92df7b0b0661a6b7f00b715b0f613f388e39864455657b822f8cc27228cb9917b37f05af55bc893376b0c930e6f7e7fa5f578713c62cf0f5837670cdafed8343984dec0dcef70ab5ddebf586c0920ff19a7beedae4fdd80d8a485a3c445d42931fb1c23f8442b5e54d51d57914a82b4156673b8f961afd62200fd075b8439d87d47a09dbef04b163647ad91fe4e7c976b27d548ebb53e858310b5136945e1dfb4ec0dff2542c06243c1597a80ba1cb301dbc3d0c585102c747e3bde6f17395f43b0f517dd979807a7a293098e2a2e09782c2b671bf373e10f8a9c13b7ae42667788c3d79c382ed25e67e5e58c28b23a524977e43fe74fc699f95070b059186d922a6e2f01cc97f20a70aec82d65c027e86d1e495fd1c3053ff99484ddb002a42a55f03c79994d4e67e39c739f82573f6abff482d709a617b4d0ea0c3022ffc58fb97b854ac4d9ed33d1d1880fa69e1b7f3f7b664715ffd75b56c0479ece389c2d189227154de48b01c0040f90684c2c8c6cd1e5fb6eef0b613df7768d6d6d31ac2462eb300695d909bcc3b632e078dc2881282edbb8cdf259e760860d0a1dfc02004ed9785f7bfdf42573264fb4bcaab5d13cf4a24d6fc84129cd5ddbcf07ec036174a8d045b8016b7e62020e864af2f8e6e21b9b3d8de491a6e6e1ead5d14f0750439b2233f8ff09c04e3a8c5ee1cd29eb0c8b757c2a23ae118d2768e006b5783d5e425ac820115cd2bdbe236610ff9bb8383b48449e8c526263a8cd3c6730d46415622df377d8b7989b9a1dcf8d4c0e305dd694794a70cdcf525adfc8fd60f8c7a55744089dc6f26a930b595c177b15a8e2197caa45f641775be3909d24a9e6c8c1ae186fa158a3ed5a2f1f8aafd6139fd0208ba4541e49f4e98e1048127a64c9222b652591e06bfd21a63ecb8dbc2d627f2f332954aaf02b0de4c113fd7ee96974ce990d57be30856c847041a00640c0774eb8972bc65064e842b781d7c9b870187f3dd6ac2da14699de9d03b606cd4e138ced9d704e82d83f6ef475a05d5b210c49098c2be14ed5ec675a67c19ba06c84b86df82586cf12f953b82e788e1b1b4520a855d313be495d6888b0827d0ba81c986e67dfacecbb8641cc316dd790dfcfdbc006f4bcf5c87035a0cf57df2baacfc8195b4ac9b6735f36b3cb2f9b2ad66e7a8485dcfe6534c2125dd065e9c331b7226cf547be50bb68334f7d638aaa678c4b3d0b7bee52bc9c945817cb27e4e643f21a249ceec9c3892a4feb71bebd46c71e2de564a80311260b3544cf7ef0ff4b91ca572055406f061cf6c7dd88ce2885053cf9d80c8a019dbaeca0315eb7d6f415c045c1381ca8feb613022e3e66277b26734eb5f3556485ead4c33a095e6cfbdea4f73c916942fcf47f00e53238e360c8961a26e94b25f20836a7ed7ce21e83fbff6ffbfc12266bb44950c12949b629e79d62b44a5dc092c57641f0139951ebfcaa680fd55fd2b5c6731226ebbf563be01f1b8eb2593bc2410e42a550056d90842186c9d8bb36cfcc4694d6f7cb595f22935caf314b35ce29d56aff22157769c01ccbdfecc434279956699b0908253c216dc9c31e9485abbf0e242f217e284aacc83df52e242bcaafc769cfefc9eb0aa45d657db0de4cd5148e943a44064b86e6c1b185b14c9098f3265076cfb81c5a642c828ad773ae6d9736fefde2bff6dc303e9b8ff4585ebfd903ec88a2ff16d30d41e1f399ed897878134919daf56acb5d5f468b8b076aff6dcd9709f8f112d3466cafbd8aec4b09816503dc899310b918aadc7379cfa26bc1f45496da0f92bb22da6c8a9c4b0542cf22f0e14ea4ddde4dfdba87cf1aca1ded88e6e4801b327b40ef786c61bb24bbffd704e2f5be8069c31eb16235441ebfc214621752a96d233c4bea3c280da4e495d800f36711e03a0d3a5fd4f93b521bd8e2777c01ec5acdfb6f5558ff65e8dcd9ba9b90b845a8ecd2434c203d123b9d3765a70b0f332bfce667c34b3115ea79c2d1501379fb6adc5825ef85f0c11e0dd679a43d0d2a72e2dac65f85fe1997253b1643b71ec5c45139cf49dc8f301381c21a82fd54598f9315b049921459c95b5473f9c50d81d398ec94e97630ca98d37ac4fd1a51632a79276cad50da9f600ad299dde5544ea364672c04e10f203a73599ac59e0b241d73b1c25f3ecf4e456b47f2e430630bb5d16565fa8798a58edcc1c132d68e108998942f60bc6f8eb2b73eddd82ef4fa7106b217fcccfd8e5d128b6482704d4a983006d902fcb395cbf55cd1bcf57b235b957b1ac11b6778314f50f1ed12c2b5b960091a19da0c5c4e1a3b6c66e5a414a41907f43299f71ff177bdb803d2e32e29d2d50944197e9f6219ed14c5524611710d0bd5eebfebb53cbdce5158df44dc584fc3cdb6cde416b8498af3e72854d42a4ac935ddc13dd6496cbf9a0b87c0d78cc38b366c77ef16d9433ea58fadbba08967db7b43b7e59fe09ad0d0abf3d637381a7ea8429b854a666d31bbcc271a0df51e772a161db59f5a78276c6c9685bd8c4015cca570e51b37568e22cef2646b7c529a4eb5c06576edbd2a0251e8b8601758e754bf427256d138eaa9d80d57ec3f008ec9f02c70386a30af1f0c5a6ecaa062f8e66402b57e70b6d4f035f77803a0a391cc112f1e127b8fc02bc2dc2ce08fd170f177d611c3d1b0d0478fc836ac736817ee96c25c0717110438d8fd39afebcdf87b49500596826bcd4d76cb1ae802a91f906309aeba7c45dc67c8db92d08541ff9a608d6e32696bf100ba6c25467466ab3524b552c1ac0aa25e100c090195f4dfd60d1266e7df6d8a43c821b74d0507198b2a8ce29ca04a77eec5fc55aa696b873c8ee3959e368f0eae1a29a780bb8d317e408995ede5566c7333d981f8d233f0b7b420370c2b4dc39209ce3c7eecb4e9790454ae0dcce2cd8d0589bd68eea008035998395fc6a0c93173cc90c7216a4d68a06add29f33e1678176b360712beee300e0abd1ebce1b56966eceade788271a4b3a690de7db141565c3c64e0880fbaf547d50386db5c77634be7147567e2a134bc19b76ebaae68fb8a1c04b5ff0c769303d743101a46d08256ce4902e9a78845a37ceb5ae831386a8cf865121caf001cef49b9f65f43c7a2f0afaaf09a9c829ba34b4c67e6aa719c64c9d456d2d3a29367908818202f6ffb3779ecab9cdc0d647cf78575bab9ed4dedb39f9a114c50365f7c034697c6d5b1a81db772e55a1632e31855436fcdd9680913de528daee55a2e52630e18f3216a6438f1f0a32536db4ab59eec7e3620102ccb2fa5a215c71e44b01de5a8dd9d4a80a22a023ebb501a9919ff5e86af66590daf20b76560615707dd2cb0770877f9b60a91abafc02bc297de92ffcb28ab6b9c66ffcb982a4dcfa14313cfc738f9231dd214cf0208cedb875c1689db6469b94abd6f2456a8bae49822a701aff4886d4ebc19713218e914f2724bc72a467a7d639ea8fe840c5639c9cfafc8741d872e9e79b95040c846fd17787d9fe5fd38681075700db9d095b4f7d97958ccff09e6ecfa91b88293828c23917a14f25d4b91e1dd3350777694f52322fa5ed5734ffb9799b62cbdf907dc97b49785af19bf57dc043db99674cf3a1c4a64e1c55ad556cf4d19f560b016b3c4637b951095fef11341e5575587b70637b8a04828c53fcb46c6d534dc8124955c0bcfaece435b76f68f39d9c50d9327b90ebd4a8cdfd65f513129e0a1ff4d38644cf229f5d1dd657396364ffeff2e808a3cf5dc22bf116dc960e349cfa39f6496a02fb38ab3f5b502d29af80efdf113e123507e60ea44a724d3f2a5a9bd537b5390fc294acd0c50468c58d98177c00ec4e42fb44e0ede9563a400730bfe1f62456ce5752d4df5d1db74e938f75b52d73c44a36ffe897d1ee6c008adc1f63b83836c0c507ed261a8c450dbc26be9f7593b8911ffc36b185b813405f0453412fd5beb1d705ca6be479163132c60be25d21073edd0ef5ad06b33bbd8c7ba47da252de387557b401f24d3ebd3bb6a880907ce657296a3864d8e0ba63f963c722a6f645b8d9ab1b8b89db1c76b849226025f6c09bbbf255a839cee4c9cf7279a13f19a6f247ba32399fc001ec7c9087477fb9448ea186286f3863267f2c06c558f57f4335859da3de6f5f5959cacb7dfe6e69c45209c620d8f20ee1d83814af2c8e92929c8c27660fcc2cc33c6cc39e5dff6e01b836ba30da346c493e36758aa141f9bf314649d0338835c7400d78aa570f5cd9bb267a5b37966162b3275ba5da5a07f2c7f83931bdf907db722c976e2c725169a6cd4ac83534a2bb8b0c9b2948ac84fdd3c7434e5315f241037aff96be3604720b7fd35421dafc4b56bbabe8be4e7003837b2979196aa1d064b179f0bb3d2ed0514f5d1d269311f22c7fdb9356022785ae8d5058b742ea0d392c9ce3b7f80e1e5458d7b2e331dd61283e18d77e6cd8f560d23d8bee28bfad3a7489e0e2e539e6b2e67cd7b91f0f05812bb074ab20e1118595e5acdfdf52fe09f22410dca092adfd888a167b678dce0b71bfd2954072b518f78382f6eaac5548e775826e137e75ce63117421e344dd5e546b88c33e64c003304870041b539f3bbeb6d5628b80a1df6259d5ee0cfea1bb6062551f5d35dd8e295fab71bb3c9378eeb9523aff7948332e8eaecce9d6aa9099da6777afa76cbe26eaf552fde25813bea25c6808103ece2a288360d3614f7e9a4e2babda2211724071409e74e6234c26900ce5d07b3b83aada3971a415bf2f68a49fb56573442326f5de3520392d740a9504d6b2e2af565c30c4fee6d49cd8bfa51c1d44d35668a4f326342c8a2d3ecf1dc804a76da06c334d6a4003eff34599c81cf20e52043b4fb7f3f8b7598ff8cb9be30c22cc1982beb8973a3ad4e17f3fa3985f2579bd5ed6af346d503f5df391c208d69002db57784696da38bf155f5d4093432fab6e541a2814cd413b2a279afa74dc40c9983d3c1acd1c96447c4b0637270c1f08f2f4d8d600f1e837ca60dcd9ed1335c92003969fcae72e3c632ca97387832fc7b75fae6d934409ce50c502bbad3c55827e2f4e599ceb38ef07953004feffec6687e56895bb6a2f893290ade098e712d4b28741887197a90157c2080128013ddd2f6322ac741bd41b1b98cfa5686605683e3b8bac53a3560589f60a8b065ab001ded200597a080f4e23752bf626201f9657419b29671bf0705d89407c989a1f705a755383f08fadd5b0ab303d5a3cd3384a9e150922ac73c0745146b23b4e66d9fbf318bd5ec4fd90ebbf5a6aeffa925e44f7910d0237ed07513867c22382cfae50ad3f06b041f01bb28ea0271d352eabf7d03fe5bfe876767426bbc2295ae25d9b48fd66c6488dc31e51314fb4f0d14aba1d1f6aa63653853f89bb750607b16b874346d4bdeb9735712e56c7a077eed7835b663602ff54ffe23134db9fd51479d38d4f00ffabed741732e8d1d92b3c99d076602b2cd0705d0103c01ab2ddbe34f58f2bb7fcfa524188845cd4e3046510aa8121a7aae882c33e2a7f180b36ce96a084acd2d70922c46ec74ca4857f1e8ad94a3475850fc466d4371adf2249d42fa1e648c5c63e02ede2e5a38b4392c0cf3bb6968ca658e425130af653ecc7c925e0a6aae82a82c6f00f1748fec23b70099a3c30cbde0b40eab9a78dd9b5b13070c3267fde76fa9eebf9a9c40c0725734142f7c5c64b8911a6b0d2075c75ae433af416530e513775629612c959a41db5675d623136407a7042b14285432eaa2cc4b971a44c21b52aad2d8778f33dee51249638c4aba2c8ac327e6c77d3f193744290db5b703df929401c87c121b6ad8b5bb8d2cab29e72a1beb54e4d47ea45cdfcaf6d2442573127cf6895416726ac840e06a5c8ce656ee5c6da1411abc622472b4e6bb8d032f466a0738d69f50390867d56b4c6aadc6050c2381984c951ed26f686592c02cbe817ebd674f5cc27a601ef83616d49f8e2af0bbded9a36859b03b72fd4e3d6a323812427621e8872cce9369658db81e41e99435133476ce238150f98f781429194156a54000e7fdcea801ebcd9e647dddb320c7f5117610fb7b7e54ca850c86e85c7b7fd9185fa5384b896bf89573d7b0c7a9fadc52f8c4755a345faafe839a0a39728c6c566807d18d8a960ee747c317d782e6a82b63f9707276d297408a72f97e40d4043e74385241eb9403284ed783a839f5415bc37215d220151dcb519afc9673a3d256ae3a6a74bcb81da1987e0bc85a771b3fe6fd0fd052e80cc65fe4f93813a70b1ab7311218b9a816cddd45b8a374ad528b13ddbd04e44cd400ec1fd3658aa9c98c6d1f428d4e4b91562452c5e68d02419a623be93ae2e1268d8902af5d460aa4209ed41fc5fa85b5f74a7a4e1bcb9414300613c98ecf631f27fc009a37b4a2e3478ba4d2a6d5df2fd606c53e7f8b7cd05ced6dbcff0b0bc2ee725837886f70832fc7efd31b1a4e1be9fabbc9aacf7b6263525557bc893b01b3d115125e256c6ef45f7ccc7d0a888b8f07fb8956018c1e284ed84223b1b7184c1135579a2f37930c2771f2331728901ca523ae0c9fabf2cf59459ede094d50bb069de32e21a02e33c266ae3d6ea2c25aa8724350e227b8ffb091e5bd7be7f34ce3ecb92b833f9b804acdd1d9295b1f195ff22a37072940ea33be9838184784e9616d62e098fec36259b22527694127a100fac0717132b71085ed89071df33069a1e6d9fb8b2947f265832e5a0d543bbf78737b64ece49c11329fc59c79189645e290aa2e08e25db8d2d53ca6d1c036cde996ebb16acab450fec1982d5bc6b41e4bce1e75d451eb292dafaf59d2932f1bb1098cd22e27cea7eae1e96b4bee360886688e1650f06f4af91bd507f0c74e3ed3b9757362726e7cf8c9ceb3d1af931a205a46b15a8c126c8dfc5b2259a34e3e2c0849df5db921a3486e6e3360e01107d52a2f927cdcc8a18c642401545c0dfb4a6f31e3ef8ecb2f6a6b6a5a367dca06c53fa0f6f42bd8da7724bda5e3706af1682cfaa3e991d4112b4e7c8adfb1378d70568c2a906ac250690a8b00aaea3fb13ffb56852e56639aacf0199070d3c90feae675601410488751a586ba12d05f422ee4e440d4e4ff70f43ac815b1ad9ed263991e238f4a9c4c6e95eb67e5abb0bdd898f0f11c6bc1c0bfad8c18b52d6601e20e68ee19dee9c81c91dc201cc57f05e5a6d110f858fb57b5962008499903141fb1676a8d1bb49bc9cd055e8fc119d5692bc80143a8c295074de1ff891169ebc2303b7364eec7e6510c427a5b5553a5e8e1093e652b6c83554383cbad70e7925d695fbb05c48f9d604fdd94406c78962a46f4746f9ab174ee16cac84e52526ab6618dca4339827a51f2afa709995a285f9986b2c55f6a868c6f6437def888366a7447e0e942df806f75e06fa044ad8526ba5e234388e6c4f489c0ebbaca79fc6ebfbd673e46a9725e936bfc3ab4c5dd2f75c97777ca2a5e59ac51b9178377cb3f1e6841553b0e56914307b24f0df411ea332e1f4fc8b1ee836ca74618d7e82baeeb13cdfb7b2c1bdf6cd8acd04118c9813f7310b9c7eaf5eb03f71871c4c79e4f08f593175ea86602b0ccc2de73a08b6744bad9238a9385e736dfa0cd3801b468bbdebe60ebe5eefba6d713298ecff890cfdf79997e44c1e49b92a4d4552dc27b1cbbc8ca43464edd20187ecd9304b7cbef81db038dbb35e62458d9450b82a0e14091a2c14ff187c2586fe0fc06029510ebc58a7eeac2fb82a1aa1cd1d61c5d9c5629ec92245ca4a509f9bdacc6169da74b26e669a6cf708f48c5fc099def4c81bfc1dc81a2c711d31ab4c68a871ba63b17ea34964e38bacf2c2d2421cba25b6bac5a61baff7141e1950543785fc2eb9ec6302ff3d3a0c79887608734898870bf987ea11e5b10ebfff1c719b0ff89f324ee30440b4fa018e3849a06d0acb20c69eb261315eb86cd2f7fe3afd724a8075774dcd48faef40b71fb095c20080e27e854a25d4a785cc893f694518b72d25ae3413263661bc84ed09296835de54d8b5c998c1d5b8705fa7d9b1cf1a7923c22c9f14d42d803bfc455b3682f8796a538345e05e0e27b9111e1d2c05f18149cae0872d2c9b920ec9c5a9a2c1c1b8ab87da1aaefc2a40aa8550428565bac84b5a4c788d4e555490b2e487567f6203905f485ff62317d33bdf32c789236706c5ffa6c97d7226f7e232a4a44bc27a4814767fe1f17ee84fbfe4b71f5a382552ff4e34cf7a6433ddca9452f02932864e3c4bac7b07d49a539a15a56867124a7ea1e245286bcaf8e8659e164331772d7f68320e4f26a2581b96ef94a91b55655ee5975a8e9fb70aef12f7369287595d6ef57d93f2567c6c3decdafd117e87d7b8eeab7a4a91439f9a172661c52efbbdea81b88d9469e6bbca1eb5452338c4b3c7584b9c684e1cb2858535ac9a4b3cc495ca2ad0126f3735e5dda5721dba6336fe6a91aa992c500aca7fb4f97b6db2f09284037566fe52918089967e817c69c2649bdae919347ce99c5da7e43dd9ae494bc3f5f927eecfce28284032b1287bd944ec009bdbddfbba5fc0cd9af5470fbcab0b2e9f5da412568154815f13a9fe9a497560833bfbe3237b8de27c2a6032b556d70e592fe2f299cf9d5aabead7c24c0e25a6bd9e1aa44c118aaeec945df9f59fb4c39fdccdf5bb666081f41a5b16757dca7c84b186ff0b1577270f87e75525fa866aea415df069165066ed7f67b8c8faeac7ac8ec78dbaac33e79ba076774b4f4abfa8ac43e3aad67fc3292637737258c09b29bd82195b21bb2b1bcdfe21c395e70117b0a796a43317f00fcf5aa9d114fdfba816179da5c22d7ebb8e9a6931f4988ee495911beb9f95e9feed768c98ebbc321e675020e3c65d78bdb13d32807ba82464f0f0ada2c175cb2c89a00aa9aae438d00fadf5e5b1d38f1a6b6690703d954c138e547c2d44b00af906ac8c639e32f15c04ae2e348607312fc9dca38b8bf4a2d5e911efe5add2297e671c1b5c9fe5f17cad9a1e29461bf263781d5ff1325f77155cc7b24d9f4748a5ed9455ec94befe67ce8d248cc9873ca7799b26820b127fc6f88ded8e06323acda97053e45b18693e34a93f424525c52613fa4c870dbf574076ad3da63658b2a55de87048d19f637602e105796b37f50481c86d66264fdc2b973a98a4a59af8bc7fabc528b51dcbbee56b1cc78e372fe62951e3f75046986f38a4726e7b648538132a79a186d2a1d6717dc62224c65315933ac8f81192c044821bfa94a98d8cbe3e28a94ef96ad10d06b6a751cac932e9ddff4646c2d3123bb8f313bdde1428e2c1acb97c17fa1c9eafea1a581727a9e2bba0bab99f98a2dc4cc4e9702e4c4ae4062fcb6058c6b9789a97a21a557880199577f79a35b39f9c8ea1df464eba1edc7e17f800440227be299970c2602e9f7a5d99ae266831bd0b9e9f1529830f4e0e2b2a243678212a84bbdcb862564cc7d2707314758d916c67e32e6c60a85802818e76869d34b44fb497ac9196e68d0eee2c72c31d8f7dff97bbf655bb85190eaa79adf3cb6530d0d0996c3371539d6fb33582f47678edc54902a281fa955e0ad1f9c9986bcd9976b5037cad48a10bf84b6934e475925babe6e88270ba4c25b4faefff83133489079e08b3f5cc8a2dd83cbb99c60205c032813b53a743b4fa96bc859eaa3e5a3ac0aabff4574e92154c4dd2e3451f98fa85bb30c59091068571a8bf910cfb558d374c14daeac911dcd7312a3693e54a1f4552f5fafe305d0d4fc75d30f26513a3c5c80957750e5e95958158d1ee898141b9eb0b3fcd75c3b329bb669737b585aaf6e015c0cd61e634fd620c64c36b2ff4d87ba64b468c8b53df6b899cb53792b783078981edc94f34faebff9eaa133ea4d71571a3c53e4967103287af3e1edc26eed069d2045c2eb6bfa890a84bc173b0d3f7d1501bb928b6ed5cffdd9d17ff74a26e6c1418ee420db79fd898d530b97421df03b143f357fef242d1ab28340465fa235da601b9a015e32b48d60327265f60e5910fcd82cbd03957d41790ee2881dad926456dbd8d3352e9a5d54c1af98ba6fd7e3edbbdf3df998ece400858096e34c021dd06f76eb3daafa937ed2181f7d4b4a7b3851fc045787f348769042208c3367c7b7193b9f4abd9ec6c52ff997cba5e1ff080f4a0c8e0dffd3f326d952eb0068336b29e19e5745eebee7d350d7ac32d2dcd23f420e426fbd2162259c457c23479aca8434ea2c72fd11f8c983bfbe67c7a9de703a328b832b1090a840db4d765e33ba889d24953828f8dc0ae7ffb3c8e33649bd583db2139724d987baf5d55af314657d14115c739f23bc2e6f1c1a4d991fbe0f1534e0be97359f9242ad263fbecf36988c369f5fbf6ad4fba3d6512ad4d4ef987eaab045b71f4e4495174076d3b37f480876037bf498d45eaa89f561ae209ca0aba91bcf32c529f4384de214e30fe3e4fec9fe5bb4222fb179520cd2e0ba530e9d25fa16b2603ad18bc1df69b5c13e745515eab1294fdd7411ad1cc2adbf9b16317b9af6acdd29d46c6f9d8344e858b2bacb29ea9f60652588eec71226de016cc57d15572823015c13e6584433db71ef73764652b370726176eeb63940ecece38f9b4d22f1ec2ca396aad1765162f7ac9dd1ea6a1e90f440bf75d67a7e5c323bec0f72bc6e3d2ab92fc5cf91199b3a41659abb43e86e504559f1696267fcc4c4b8adbf3442b7c137aa52455997bb56c8fe63a87415c41dd9a945d1cd25e2b653484d5bee7b3c63d656f67c927fa0ddea941a513a0502fb55f5d668b642e033de69148edfdf7c8ab5a24c16db94afa410e2819f6a5bdbbc4ffec0c56048db05e9811fdd4291290257cfe19275c24676d6fc0a1618fc82666ad19e1811b4ba2e0319114298629b8dcc961b236b4f0ff3a62e02864eafc8f613952e7aac41c01e48f3e377d6ca02292548353f10aa5d6db412cffcc011df4f5c7221d5c2104f324fff21e964775c7678d562c59535f60edb3951590a6f0ec452ce39193e7cf8ac51cadab831669fd2bc542d89b420465996090a0f082740fcc10d16d4414257c285818471be3a261f129cee6358a06d47593be94a6d0b6099512f433513c85d9ca73e9e5707a738caaed6213666b6bd4fa0bbc3a174834ec55a49998810fa0db165c3a3fd0948675f1d868661f8bfa62f9f2367508db4551980f31cc08cf70170178c87648da83618a8f676d800723d08ec19c8f1a434d0b6a971e0c00023113f3aa0a2d60b74bd944a176c1a25fd0b468a8e9ad735fc3c42341a472ded94a54d0f44e4d48309e1a3038fb98bed1279d690bc7d2610318088f55920bb663f258aaabe7e53674a599629c846472dcde3d5d7da60bac2a6520443dbb30eb876a19afcfad62b9045de7dc81bac523b3238df6292dcd3c26374b8745547f3dcbd1436ea1f27b588fcb00f3ec9a033aca78baf3879c413a63f6585ce43f1e0e3b9f66027d33e7edac7c4ae1acfd42c97a886c3ff4a8b59a89ad8bd273237087603cb71ba1b9673bb3db6280010e5744dc631aa63986b922d8e63824a9eabb9004bbfea2b662afcdd29b8d922d0c375d33b1f3f5d90cff7f667a11bc69ef628f6f1f94c1a473af030885973a8b99f640a3f2672a0125476c685cfc1a05e59a4d489a69ccabd8c81321f02479b59750d0a0eaf3be0c8e6e63139c0113b6d92fa6b952848f7b3fc16d4dbf70739e75c8c30be9d11dbfb77dc840de3c34a71fd17e836586c6fcd6a19b15fa40251896fd0a0babafb0706141370a70aa813440b9e889486091fec6c593b518a90d7fc201222332fa1b7e633e8946963fe9b58ad8aee3512452a5bec99077755259ea84cdf65d007c73b01cb63272588cb3b36b5398cf3c6308ad12337f49adc9d8e92e44956679dfe2c7f2f04b695c72235fc00b8ebd0f4f0fefc0aede7955c448281d9d2f1d901e4ef7583e8a866ebe9e6e0e5ebdbc748a6b4a43e6ffde730b6cf581d2551c13dc870a63991d1c7f99462331a6e86bba6caa92a483d00b35c67a4c52ffe269784907325b9af30982e394b1cec3e1e2faf23097e3aa5bafd01cd5e84a7288ae2810095532243933ad7307ce0118bf2a5ea4a9dd1fa9ac1babb6abaf1d097fb0d4c2131f7af625d0cdf9156a347254faf7215d438bd2bb9e1c743041b6f3300d47317eb7fc56c812c87b01c20e2f31ccc5b04dda9fc19f46e104173906b11955bcc00e358c03b6cf449d1e96f176a7941300db989c8086cf76232bb17d528a53be265f384195f67a51a9fd18afb4d649ba953dd406a437f7e412096a8ef0c51c741d977e0eb75f7bf6f2a293477f62b9321b312e51ce4e77ac8c5271f8fa3c55c7462e0f50ae3000a5ad026ad0f2521711b21ede3f6db69999e543fb0c0e134b998c18ca1110d27c564fb5e69cf4e16c5db05f957902352973214242bc92d33d135301a61cdbe1bf661606c037340a76acbd79d60b88a13fd312757c50491dfc7e5cc99af4bcb008487cf5267c0d5b59361b1730f3c010ed48cf20082a5e47766a73ee1617c016c04226f99491c52fdb7d8a199752115edc4ba15ec4e82e89cb0db11c142026d59ef919250b8215338ef1d640272c3dfc7e59113eb959f8039d3288e1adbfef5127585b0fdeb1daf7015aa0230b6c1ee7a15f75f0aaf2634ec32641af342c1e5a1bc27fc9e39c99cbc16c1abf4fe972486ba0d7ab52f65327240a1cf7c6cc0775ed77f943c6d7c495cf5a76e8d4989d5e48ba2eb6d5f3b615c70ce0512ef624088317909389bb7cb98c6e5265a679518c50d5f3df1c097e0486672299dde9ec7416023961cb09f61a4fcca589474f5ec6428ca36e34510c94cd4280df2f1cf9575e6719fb3da825d5861bfd57b6c5ba23c396cb7740a5bee584267f2545ff284950a92ab4f876d19814932dd4d1583f8bb550ecee6e239c1414acb5397cb82458d6151b7c8f8112425d88e949165fdb6d28a289aa0702ef14359bf3152147f39d72b979c65bfc5b8a0d5a49b75c147c52590bcaea1f033ae5a45e37ab0aaf87968cf820010a7d7b798879a18764ab2740ffb7faa545b60eb102358f1488ebd66db8a96bb6030f7e173781a964ef2620a98d492cd2ebadfc5e4d66784f0709a8e8702a76a3134b4f986a2706397b09df44f2d02b7982b4d689ee261abe4892a398429808850bf77d6a449d5229f656a74ac6c13ec2b5e7aede246f06833b5c44327f8828058992e4128385dd679791a11d05647be001cfce4d377386a1e750415a411d1db2689b2fad024ea2799e7ee7d78655014153dbe3cfb5ff1a3b0ae00e40c0dea35ff715ecee8ce931571ade57458d6e29e4a356ec00c23c32b5211ba6b5d90995690ebef2fe3ea6f1f5981a9ca464fc18a1cb3c9d2db4d8a38a24cf19be66f604776fb17a7a047d5cac5ce86b30691bbf0b349664b95dc133598fe8c579ac9b3f4cd8665ededb76f7968b57e15b2c8924b174f88f147780f1f36beb1a988e6d0fa1416f917a633bc5eb51789b5d31377e21993ba0ee180cfcc325633c3d745da6d02fd695337326c3adb09bcd4a4987c131cc504cf28c18d2f6f9e5c6f0cbfc2731f56e29f5116c4dd89239b916396d14028b3fae851eefd5b715f0329866c11a6e9c115d34f9a1acc1ff6c87d675ce2b7a4b2d3b781cf231241d33ae7d0a7f51f92b57283562a210ed24bfdc65e28e7366effac7f43e8d90d169344545f9f9caff4e1d0c935bb6dcac06430db3cb76f12e0b47c79bc36f09bba56a80139a24874759ce1b140b6e2a2ad5baac60b6ebaf723e9462df94b1efc3ec53326bb34664ddc927dfff40d05424b0298789fa7b94c6a6d8ee78cb739f42d5c1d59cf96ce5446be9ff1d5da029a864757a61ccc45ca18baea41bb6fda9d2715037db548067d88884d815dbfefbbe935665283a03c4c12cb8cdbd5dbceeef2bec0598fa95a46551f161a8425a5e4c39e6cecf43a95c97fa58994237103115be4af69879dab466735632d25e10f272d4bc033435fc1bc5f7de16701d32711a81fbbeec1aa9668f7f242cfd2dcc8627b35f80fd6b23d93daa450e51f8664cabdc422edeecc0c81e4d0492f8f5409f6e5138160c71b3e8293521a96429c5002f8af3c62f99f286913d90544b86333e93af9d70c702f4431e16fb2b51ad92f21ecd87a01b172626caa3e0337297707cd453985acbb504ae3650f3aedb2892512a4c519d64a102b707e12d7db526ed259f2b312f019ebcb448d4f57fb3912058aecd28be510827401d4fc97f7a9e456bd9188f1d18f0992af847a516c5be887c61e9db85fa110eb3ae5202580682a635a32be921f52471a86d7bddf530876fef64b2c373975d6917cd98b27095e200a0c0f7f691ca6073b1536fa51d9c5ae2d768ea1c340228933ca087289a891b8430f9ed88b123d6f0086e1b99a4f015cc45172df28ab828e831463e8b88b9be38dcdaf3d8414d82a34bb1a141d49bcfa8b739be887b07bdf2378a91a70c47df37fae7210130eb098490d08ad56e0e738207ce1ebecf7b3dd740348b56fb3daab3fc1b01121056511114c514213e2fbd4b21fc1fa95bddece38780dd3b0e7264cfeed46075ece7b276ea71af9d14da2ffcb7c2c83cc26f446a91ba726a6cf7801c0b858d2e0492865472c419c4bb8a3929598636fade63c57f8bae3f1efffb6499e2c2546823fa6057cec27fb28199a1e7460a71590dbd0f2412384a4a35d46d968f56453f7633897790a61f4bf974abf141f3f52b36c42d996ad4d120b85f4b417d7baaddb01add7410bccadb6330fbe1a7c4e46008735aad73e9d0d39931c2d1f60188810cbde16cefe3e7dddbbac23fef2eaf0c5593e994035c9eb831734d525d7d8190d17a4491c03263018f8a7239c539e944e72825c26be84d5eba0d81a38c97525e7f1b1a67822545dda860d659f99f51334d8e4a1689a75235a5022abe0768dd450b3bb0f9fdeca9f1219cbc1cad9aaa4f360a6828b6fd44a1e608ecfa639c894670ac123814c28eb4349bf1d1f445387523ee2f7471618ab039b77c9100155ee85ff33c00031bac80ae64e58f8deea4bfabe118c73a49f7fae7b033582a1ebce9742de11e037aea387806f34ffe2d8983b8b713da305aee77d22019bf2a628256418584795107150b6071cbba64851b4473fc72306e348da4027626c241f1968f1354b68728c45e3b8501cdee67a5c02eb4783c4a36a94310538634e883f057188ef323c1f47b50e0e28c527e998e20d4859bd7f338efd5a65d782437f2c95502ef0a8105e42d531f3c930f1acb1c6138cb6a78fb839a87d0a0a771a7035a1fcba7e8c90fcb11b8568ee516ca936e32e5363de747bec1a4ee3e9c5c3f2af30a7f115d9ca9251e5590898695afc4af48dd0f9e6ce1c11eaa3f3f1b1390aff627f27eeb4ca84668de2c1cfe724430798c9b317797220478bd56eeb8b66443af576025f82e77b187fc99ccb824c5856add4aa739b714a47921ef7a7c5983c4a3eaef42a5ab7b4b93d9e61efc5dc8ec1b5b42c045ec17afec38ff04b15c84b9174bc38a72fe2755bc5ca0e1b0011c7d089f51db153344e5093ab9ffcb84276f0c1ff305927b39420ce7facd3cad536662e97679ae3490111364e42dc9791428b4aac09a71af070ffcd50baf6a2beaabe42706aa515bb6e0b4d818374595cd27ab6eeaa2979239d3de7a0de40b0710e465f8fab6569821764c787a6b09c822f03de7a0eaa6b1cda202f30599b56c88f716e4c41152ad8faa5a9a514bf2b58870058949739a2af84317298f9d317c88879ce46ae5ca4284a9b714f959b9a9d222196fe99b06a73747fc75be1615603fa70c0e39ef8d8b801bf54794271ad5b0bdce586324da40d9c2f59c695de18bcde87a7dcb79fffd0fad902588f907c1ddd1223e30c7aad3049a83a786eac674ee4c2b481e185f183e1b99f77c5e75b944d01b8ba8dd78682eba53651b078bbb72ecbec8b5aa597e3235143024db26631f31a5cb37b1f25fe9db3f01aec978c6cadcf30dc487b5b1342aca368914be726ca00c735acdc4faaed9341b26ebe1dc49fa8d213b53cfd9a0f356dab5862d8fa9d39bc67515b4f861dc7b08aa9d847f4dcd993a48df05be9fa35b6094f31ffd9a2a5812d8ba9dfb7886447cfa0f1bb76e1d69ecd60c3575a0b809ffcd05834dc72562551ddf531eb2a59917ed766b792afa232e05c0f46a566c42cd2ff48b21c7f9cdd3a0097c441fa91bf291b9b039f89634d4e108e6e96bf3e8ccf62025986191973c2723bc8f175d90f8e54ff067ebfd1ea7dbfa150b6c4ca37e0c579718d9264ad60987d8ea631b182b48a20a4bc3070c4cc8179f0c97321091f3d2720c158c0ec28e3248f27cf06b9d8a6c93bcf08545abc283197519ada0b85414ef7d3165fbd3cef612bfed3c290d0c47cafb6de8c22c702626d24a3acbee7a1f73d2394394bf7fc5e6a5b7a8d8b34c7210ea14b5f010a5cc9d49778e224397a83ea33e95050da9e5e86b3de4b58647533c80d6aae6815e5be8737a1723bd6ba9c96f5c211429fb2f623536804541cdbec2dce36c782599ed7610290e603109e61c44f6b7adcd7d79230f184142ebf927f1cc3d950a9a213c310decf2c1ca047da3633751ad26b48d624fb4cc003e2b138f924d5616062411f5c4c81515c145af46814f7bea000d900919aa800ddd4e9cb881068495973b78cc97b49394154b7853c47629497c2728f7b655991507f89535e070e20f2851451201c4efb45cad41bba9dbc057e6914e999df0a020582164b9af4c0aaf872a9a312147705ae3d0ed53a7abfe75f962bbaa854dea0ea1af868f020123e5b273d0c91812b02ed7a4a1f88d2a9c49b8f9930dc10f82578b790f0c4cbbe92dafbb88b3e0403f4ba06a9ec3f9e7f9ff3f2903e00da6dc6b024f36c9d5f3274b2d1d672c73178a7c7f05e9a331493b7247e0ef5a023ae9fa5b8cd35bd8ed7f620f256b46d6e17860b111d5803c0db51cec92f8cbd60b47f4c33ca2f44abbc40d0b83407216acd4286b07c0eb2e7d931281999239e8f77a5fe35f227a8a7c098f8614bbbd50fbf3d05007cc3a20b9ae48287b5535aae4b4e26c46935bcb26be71646e107997c7eacf4576a9f8f388d447df14962bd03ed5340afc64ce2a881e3a95e156353b075c528c6895bbb0efe5218086088e7f664d0b09a1151343d2f3efbcca2aca34ce2af0b978c725258933837303f7380c0f52645cf35324c138a3f446a74fddd5b2bb32434eb876d1ba127389002b23630ab904e01f87df6e8d9575dc35e06a3fe4e900c24cbf47c24e7271e6c9f8943dea43e198d39cae39727f924938a72f1cf291168626826611424f7b2e0f295f7ee5d0366ea75d4e681841562677b2e3789bf4f4823075e044cf4a390330e084a7cbe7e78c7facd978fce5e6122345c0402fb4593961e32414927ae591854da088315c5eace9a39fefcda24cd51681cd7df00798ac093472beaadbef72b7239debe999ac4162d1fb44e03912d79b4ae18d7910f3b3f21f9b0cbfab6ae4abd038a4e33cfdee4f15134211b693f0a64931430bc742e962e748f3df4c832f9086adcf234462f94d2fd14ab597140b879c09faf63e82fb6b3ddcdc734ba7ac95798f80df3261012b7b048c048debe0a7e863ca816bf5a549c5b1bd901dbb35d0e961fa1a7c427dcb8e38efae6636d1514e0b51fec9c4b800c479ff4107a12b64ab647ef1b6d0f8de4edad1a73e4958c6491a03ae533443987bcc34651e711764033bb2408cdf25f0e83fddae80a347bd0182abc1061054242ea1ed7d5b28bf24cf5f21fc6a7c6e428bc819e23a64c0be6fb6b0fe71e71a3e192f672112e462387ad057f879f6f99275a7f20a0dfe24501c953ae8061b932e6fd2bbed65546f60b4787518ec84febf4dd256bd46e7bdb866189d9662f0ea64deb19a52e2477671e25fb969407a44f8577b3533e5c4d4d7bd5bce02757df5fe0546f80e24e489f5da61b1ab1f66ae7d478b075d190917ab01793d7385cc8ff4185d5f42d803e6596b351030852b1f3eef0d114c390224023e1d320e4ba4a1cb7769294ca71f0fe4808ebf42ae7a8733fd8d291b3fcec266d7d6c983a9fa9aeb47af5d0ea44a4a0aba66f56e58866e8ec6b3511f4f22094a76b8225589584af46a0fb6b48e424d03626111edff388250c0871952e03cbaa554ebf6f3fca83ae7b9cfdda6de51dde6a1f7d47b857b5d9a84f7ffb0ddad5b85649a3fba2c640fe1c45142d3db3e64934a554015363a35c00d83f5ee5544dcab9b7376264d11a3c4701b7eb88c86064eddceb46fd21fd785c69a63b37379c209a83ba4b90938a4f1a91945a9460d092c6e1287ef503e64215b420fd9e96a3f034f3817155c613a11e5a770a6467b55c7837ef262a9c42252af866d5a9b9070e68ad12f9b5153e989dadb92f0e37612a4c153a5ef988bd3cf4cabdb3a6d855ed7337fd155acfae0d8a3fa5f19a0852d3f01732c7069c0e4cb2777d6a40f082202cd4d488c28867b824c4851832d6767223134c7128d6e05aa171c86170fff57d14c5ca73db2135d1b67ef275d8710eda76723ce588378bc277c55636a112cb271e6f0f4f82e7c941e226541ae76cddebf8aa1456acf530c0ea1eaf5e4675982cb523175d07834eeb465fad74af0e75e683fb5ca9bb1f8ceb140920e7fcedfe81607eb0735d6c64e67f544f10542c4c27af935bcc32488b45cb8942909a0589f4b87842a1606a5eddc77d37998c65853bd5265fd4df815bee7133633a3888c2813305b4bad5ea80938c1b7ecbe912de4d7e0dc0809cdaddb1bf61e5838de2a76ce536775778c1df1e055c41e09bfe6479d14dc623286ec8ae7f5ee29acb52aa5d1d7c83e5703dcc595948e10b8016af463d82914e9fda2f817655af11a05183bd8a2545843318a92a287c5f45ee932761fd3ff6658df863c005941673fba3340690cca6cf6feb4dc3a2fddaa861f1007faf39c1d13c0b6c5da3314a07e8ca4fa57563dbfc4868d0116da0386d5a5fe084ea46b09fb6e531a5424d3c779184da875b1890e274911e3637cc5fc0fc923fc145b4333c3090be2dbf7202e2f173155ed2fb68ef28c53e4fd95d7dd87d6ebfe381ab90d25eda3ca164184138f74ec37f19d2c0dfe9316a3bae35386a3366a9781168f9ccaa257183dfdfb4068b842e9d3816e70b569bc3f29dd9669b6cf7d5038b42e3ca2aaeb8f37e57adeae663b08cbb0daf4951763a2e35cc6a2fafa4c8c5dabee9e78dc64a13a7d17e4a0ccada8084201637a2ba8f2ad6336ff03a8ab2590700187b593cfec368c2809739b335a2a512f58e6ae80095a901e147b280915faff53996e6e75ef08a6fb585815d64b7921dee0197085041293c72fc0ebd8bd58395015f69755c26993dcf9219a27fb3cfdb9960b185beafd8498f81108c52a17db82084a5d1f1490feb8afaa353b7fa506776ea6de63cf2ce9de8c6fb13ddd2433189ceb75a14f001d82faa545ba16d7673b093e2c8de7958a0fae32bf41cbbc11581668a8c7d8cd9daedf0f679296591e44d43df6472e7d8d559035259ffce7cc84b541ec200c30cc1128a90a951f5dc829e24e263d0620ea25c58167cdd51b9cedf398cd0bc5aef0b9c81fc8d8a409cc805734eaf1cedf1c27fe0c6f1b418af828b3c553d17923af4f7dea9d2fe8af980839c24a78706b67528ed1dd4702265a59779d224a9fe7fc2b1b30a6c1242838a478d0953c454e993d8c2efb4caf246026703f76c20542e0a389b6881cde57cd6f3a515de93086970db6c1fbc58917f208ce3db1a7ef78aeddc6cb57b38711511d126480a1c2e37745f44647c445d94f81e37235cda24dcd7563166a5439d219c58e6723b3fa1bf7a3d2b8fe4bf84aa795518be0ac683613e9517f01edb72742f57f36e28043001dc846f97efe6172d45e2d036c088125f23126897b842f9286c5ebbe0aa788ee1e9ae5a0d64b4991a9a0b3e75d19f013505a52205f8884bb85895feb15bb6235e440965d11b33a73feb6a0e52434d59d41aa81a03f7f182f14bfe6be6357282b9608469aaf08673d9f272e5dd7ccf1aa992b88ce26fcdb13a511d716ceca8687b3e147956224c1b2ec372129b4c4879abc1a70cc84bac0db12b0e04851f27612003166af7cfa17f241745782395d0db48a198c59363dbd6b68c4f74343145a821bbc866c7d77c610900474d91b67b767d1542022f67c5547fa45d43656217f4735c1682130d0016c1d26f766e6e01aed867a75f5b46013a21e706c9acf81a2aa3f19b18c1e983577f473c85cea40bff1c77baad92ab2ddda1a6bf331ff18b2357d66f584565f936eb85f068de636b75bb267c4a948c3eab9150d8d6fa5c208790310062c409d69831846fa30c0e3d3d7bff57e45a5edd2cd86f6ae9d08af02851942b4dbcb78e5b07a075c97511391c7c4baf8b83f0cde67ee82e4fb601e39f4a3e4e8e3fffcc203f29212baa144c4fc86b8949bb99612366b055c9e08f50564661ff00b7ba03a31f1fe4af20c5973c0583f7922c23653cce2578e032beb20f3af573663291f0ecad0405b478b2981db8b4042e1f8c9252131b03b5daf7893ebf074b839ecb4593764f79fe2171913906938fbea9ed9804a56bb0d1007408b43bb85bfb42e6f4b3c8abd853a4097a9467cfd91989e6737cdedc9bcbb5d1eff7d33cab67d5f47f9f1c7b3c418fbb9aa41193d5e6e0a767cecc1c415bcf45155c83c68964b2e7d6d5bdb8049e37b607f7af4607e9b1ae4a06f7a1d6a882213e35acd538e1adccbef80035bd09f64efb1dda576877aa5f937493b65a3e6a66b8369b6cdb294bc4ddfff62befbfe4426b5366bcaabe0d0720142a1ad30182cc04af09cc7f474c706d216d61914e80881cd53ec1c0458e0fb1ad1a13157abea66f77fce5bd736ef5370d8909191de8a48825111909f99a7ab59bb8d91ecbcef003e379a43d4ee19c4b61d0e385fc24fc3bc122779d6d7a67dfcb3cd5703584f3c5807969c30b771a6f33e207ae5eba2691ae070605c351828e55faca01398b74449fe7477ea86b5dd3f72466736b51080b733ce36c9fb259483017cc27ae1374d8f459ffa657b6b43eb4bffa25ee833bca1ebd2c98179bebf8b147d8bcfdd853b204f273c887f890dbb4ee8c75c7e214b85bfa8086e7c87889ef371208fa6f6263a0254cef87a9a2cde1887507aaf746e89bd3f2a8c508cb3d54240214c52a2c69b8df5f156953e57e41823538dac2c3dfb395d5ca08e57506e64ee406fe43b70267d4242061003e64a4ae162bfa499c3c1f7e15e275870abc06d65f5bd1b8c09a095abd9ca99b2fc48870f993d535f9715202a5caa69eb91ea8df895224775e95a588843bc96ab4ee324bce67b66ad840e061aa449c3c064569299ec5b74ca6f0a671e4e29d9e2fc8798f4ad27119b0c032b7d769c95fba9e7905fb691ede062d55d1927b3fe8a47544d44e2ef2b442100c12f455981d47c906ad1e3490c55994f4c8483bc0f0d1d2c259ddafb43cdca698d8c99865c2902ff116c6e8d50cb3b97be23d5019f5a6ef22804773fe01db251f152f81e23ffefb260afaa611ebaf0ec80d1553176554a3a41ef4c8bddf9354d401ddfaae6b2f44279ed5da773faf1330ff53106fd860a3d55ce60c67a0ea172d8d500ba1d636c7214fe6efc85f91cb0ffb3318c182a66175fc630f4289af1eddf1834f99d97c5e2c712de9656858eba5f3ac09e9c021f321a750b62e42f435af830df32d23c66bad5f9581a52d9c22580e4189367210e7f18425e5f550cdeb61064fbfa3009506b1bc67625156e938af5ea37641d8dde1411bbf7e4a192703ca83f5bc78367a1f18f494a282a84c5e010198628c127f6fe2f5336cc0b5bf67edf6e4aebc09bb6debd94167119cb51d0cb7a461faf6fe4872e64679d58359dbffa7f0e7d48258d3133f5285df9ed37201f743b6c0239742357f4b6136779b586656f18b4ef574394c5652dad91329eb43e7a71f33e2fc82d127dd2989315eeacd8ce12cb0d2ae9cd2103883fe5198e6e4cb9aca271492062d32a16ae1bd890564f6477fea7843b5380ce079e2747abcc51302373656deaea7aa6078be6647237e39c6c69881d06d63ab7ba533ef55bf5a2b554f9bb22ce9f2c43abe3ae58ee291149cec3128e1db992cc8457691f0460f7089ec0dec5f583d326b65f758a9ed4a65662dddda6aa2403a310e444752b2c76edf3c69895ee034770d9a3843be4d6ace459848ad204fc4e92e93d0eb7c4bad40bbf4f510a651f9652689f389bf4ea8b82f0dd77b9a49eb1abfed19be0309485712c0306eaf4db8101d46387b509ec1637f959004050aa028a999d0eb3dd55ab9b193b048d0d94b27a88966ea7a6af1591135af460748f296321d16d2073e6635e410ae30b944f0f38aa5646a62524e50e5913009fde5070ad9a2b1a9d6b1a95e88860c53f04f4b819ca0e2d091fec2649ff70f8301a7539b9e9b48d212485e19615b5d7a14f4b812f5840637ea3bacbe99d4f3b26e2fbcac74e0809e4a65b4ff4ff42c7e6d081e60211addadaf9daf4d9812b606829d6a5fe0887080e25ea7af9b7b8224703f4c954fec49dc836eef6a9001ba02716acbc9fc95c643712952ada9f17facae6cef5736bd6f9a0d32af7eaba7ef60eaedf5400af5c9007a3e1284daba52fd84c590ea7d26d91adecf7946a34fd2090fc899b50705b8d9e9c2baae48f27f2d9a1aefc5d37f0fae14dae0e89f794e939833dba5479dcb8f25ae4be5bbf61a12c8be48a2b656b979c2763ea89ad61511b5bbf64ae61fcf03b4bc166df4c46462759fc1df4520b1d63d1327a926a67ec26836f19f2d4f1a94d9cfb42b2aa2f21d8b5bd5775d902a330436ec1fbf36b8570321947991da31696719ec95266b0a1a40d98a9d9f2fdadb9eedc9c2931a1b9ce8620a2453033fd959f7324598b4c442026c36325bf26e99ff620145525850d6589cfd6d1c66c301985bd7607130276cc76c5b457ffeb0604273fffb4b3e3668208a285c7e5d8a3af76cce0ec4a5fa41e0fccf289a4f9f54475574574bb7bb3d688b445b107536354b283c5a8592a1e29c23204f406fe59a2c369a45fa4d4a6f197a19854265440e32cea00ae7b0531b633154727ebc77290fd7a42b6e8bc1da99f802c8435afb1cd94290d9e31746d906655dab6866e83f6a7cb95b8ed7974dde320468b42550270a5ae9644b956a693b197b6defae5ed33005a36e631c9d27a4d27950abc49a1bf6523f2c337a331ce470fe0a6855c65833a5e28c534d2a74983790b167a8e4a68c42b9dca9daff1ef7ee5e4cf8a43101b0d5a84f63b69fbf32577f96f403a9f930e0af4c7dcef10804f6709d6b663a69ed90b7aefdc52331e10a1e533d94b9d0e173f440a72b07001c8f0c7a43b31cede40f0175c25321ee177c72561b294fc80c4ad1ea4ee8016158076c0949c81333cb726454277d01bce6bb690511c277841924f31c1aab5d6a36253ba2a3ad08e076596a025350e4274bf5c4b11078b88f2ed3809ac62fcbe7eb367c0b48dc7b33a3bc0047238cbe085f7ab0a204238ac3f43ce69bca11b12b4f01c6e7ae2137579cd2fa1fed2bec53eef43e456b757e9424ac8664f6c196d070f3aae892602c92b07b9af1549cb6dfe14893b7361d4f4ea5b22623206a2bb72da91e83eb67b7b9d18c4f58174b4c8970ffed74b7df2033f953b24ab289107eca30dcf640d3ba8bd3fb064c2f5668690f2c6abf1735f1e73bfe0d6cf6b441e574fb8fc9c68cf56a7870346d1b8c476172096049a42b38171ca9cac61c7a40fb90169fa394f5f8ccb5447a8924e6214095c3e2ea55a61f89795a05f25068bda9eb85006bebda319b82ee2db7a23e346a45e339dbcec27b715df38e2c6a8a477f2fcea3c3f252c1c65011eace4d6cb8eeef8013cda171068503c85a05562be3d0645da4e3f1b87028e818abcb49771d6e4f46b0470bfc60a9d799d6eb3281947af7ba9e19613a4d420a79fb82d9598780f472fcabbc750a23381d1baaebd18d7e946f0f485e6430fe750460cf5b7ca3be4de348ba8ab6f7567729d9b3f492c45288997168c08824bed17580373dbda0a3fe1bf0f1ba6b60e6eb7c80cf85916b7bbd3f3fb638fed08d631fcd1f831aec155ece033a3625912beb7cb9c570d8c9494fc039ba198d8865e345ccea7c5c34689ec8c61fe9245d1c46625787326774d2ea5614cea194a9e802e9e493605495c561daeda26e263addeb232ce655ca8b20b4645ca1d546bc32bdcf161fb25c491cede6aa7445d97664fb2840846f9e8afc2293858c20358993dcee9b3f211ff62805eda073f925e84fb8e1f0db73762735ce1c3499ade55e3e68afb88057804f88c82d59c9baa9294fb9b7f75c2db8a82086af7426b9cc2d1cd95aed9fc89e69e7ac488d35b0156e97fe0ba0b877be70283fc162a0d88270c2d7af4a6789a786990540c04cd8949d3569c90bb6a1c9cfd21f1a04a2338323e1928da76b8f66715e06871dc9298c727155b0074efc264ecf42ae699b3335cbf4f1f7a2136cad825aaf5b385e210406730eade667bbd61762016e75554091a730c639f9390e56c2c6ee5eb39de8e553cd6051102b70b460d7a7130658c6e7a2ca8005fa6ccd0bbd586f4bc52bbdee99a519a510a6e080b028b9b4474987279b51f392b2929c0f3c19300395f7a6911131b18f97add40b7a94609f0d9e53609fca1588fa1e5deb181931ac0ff35a0adc5e653f99b637d0e0b8442ff65f24bacb52d83e986f9435e1563075e1f2a92b29681004335cae74b6210a2fbe4062903d673698e347ee80a54992db1e85965183bfddc8e8aa0008449a3bc7af6a1ba5c204abe729d158e3e21bd3476af645d2ee21aa19249d30994ec1327d580e6db0ec53957483f057c700a509291b825451e7962baba6a170fad8782ac3132b5092b9e4c266ec38d216b13d53dfe98ca5d5ed31aedf150ba196989ab21426b2f06d32217cf433b718a75f5af2264d9ac5a80fd56db7f6f954785d410e31bdd6f68c9e0fbd7dfd6960fc38777bd23903af6b213b5c0ed77552a59c2dd2df74b79a230d0439fb6e7af80e4c121fe3ddefa5213e71ca991e3361f35c6c6b610ff35ef8ea79f9fe669ac1feff0e2df6b5744836b26402323f3bce9edbe79c16ebeeb7d5767b6a1b560a1d57b446481c641515509d2de1fe4d749ddb4cabd45addb44fa5348c41db6696d644410bfd2deb0ed3ab2ede38f6bd37e8b1e5c85dfec8914e6d73b8fa0c3ab3e6d650b5c796ecd73e6fae76a7aa05501e572f01d6d243984a810d416462fd806ab76338da3286163659aed9cd5ddf4a0f26a9a118c84f33deb5c4ff55c667daf167d31f8614d75ca26f5a738a9e98b90a295dd9d6abe8b7179885d26b5ebc8953625998851d68e5fa6ac08aabf38c8276d2e9dde40c5b0ce5e904f1f158588edbacd9c2e515483789197bc0cd7ceac66ebba766d16cf888d21ae75984e8ddb8b0d41c5a5c18a25b9fcf097ba5fe6514e97e314a8a0c80147ac395c96fe6b050b8e4cf3dbf1c729ca9aceff900c71684ba0ad6325d80dc7310f009a627a975e4b3a74ead744eae442c4894481596de2f90c3a16873f24031240189c46555e617908978e7818a8148d2f7a3923178ce8e7708b76413cb6cf1d56f4711298b84d7fb9410628b86e1d6a1aaa9c415141eb5773d21e7412b41d2e4255025757b0716ac710b31b98387c17d13ffc4b42edabfe099951bb8a02a2556e4518d819b497669426265855f1fbf35b5b4ee2d37a16d4c0c6335045624af94830d905d7b057ac45f7043846505224c7a1b0970983b74484faa65d0f81e596ea8db10ec20f8b31f43120cbf5277eda5c3272a4a124959eec81f52f95eb4696d2ab7ecfade797a4e5e0abff9dd1cf9cbaa735735955efe47d0c1a2564e54a30aa54ff6c7ded9b53411996c3aa480e1d8ac0b347d9d8fb0d4f7dd58b033d0732e46635db0e9d03ee7ae4b55b8f141d20cd230891ab14ab0a90abaccf0dedbef1ad38df90cd479956f3052a4d76193171e5fd13c978fb2d4ad2d1dbd049673f1d807d2c7bec61bc30fe5a91089d137319d1b39d765ff2de039a982cb0610cfb0eceff2183b40f17dbce076b027c315422414186eb1e4662020ff7999a5d61d424df023343cd630c91ff5cfacd06008f80541f6cd2f483ae2aaa3cbfe3ce435f1830962f6540bed62e2bc76ed3d689f829f244ad21abc7f93608afe04b871f92a23c8e25c595da58a352633c3aa2cb4dc9fe3717f1a6be524056052b720ee3cec3cce8f022e35e39cdd7fbd7adfe1504d9e3d979dd5ccac43de14bf5d63839b7cf83be3a8b23c605c71fd31214d8722c006fed9a6633d1e8d60424ad95cc672ff60db78fc3e29b1e48a19d3a9938228802e0e60abd89049702d862857cfa7d0320ebc26f8948ec28e3c4dc13d042700a7c12fe5a6e3ef98751dd4153611bcf9a934af47dff6ffe7455d27b3bfe9b3772d89d6484a5367b960199716fbc8d67639505db1f063316e2399f716378a4206e45bd4c0f6f41dd94d1157d6d4a555e22dc210209bb54be7d9afeb0239e59426b33a9790229ca32c54f52182f7b54a2ef79840de9a42ac566f19a4904732626da163f4b891ccf20b4fdf242fb797a79d5b492a87df2217aa7f2d160902224b8e8601d7eddfbc58fac7c9505973817466f387ceb0f4eda7d72a1ee1746f08ab2bf16b2ff2de6e9401529a36fb0e297ca557fb719978d03d323d0e86c740b509286f6b715ddb978616c5a7629a3a98bb72c147afae6aa216c5616666fb0c807ef6c52830d47569994f5e1f793df95eabc4711070703177ff4503533d27fa2aa0bcdad4c109f47e3a66c11be467b76146152338ac7b7ab3abecc6d23a976d1482dfbb8f291024dc53178cd8e927126e3e588f6b0e0971fb2af827eef87ec66ffb7bf4ce659a0509243dd85f22415ebd21f0dfa1bf409ff3404fd70ed6bfbc4d87ed4ca6cd779ccafa420e9c5534576e10dad4742081c0c2988ac4cd0f055286b884177590d3446b749d8678c34970cbca260f2ac796cd92326dcdfb9030dbee357d9e51b4d9473b63a1c33d02355a0d1e1e4ff971ca57f417fc6d55937c2de246bad0cbe6ff71ac3db1c54de7e629ba1f83fc34cf4b8d333aaac4e0bfd0410d12783a03428be63c6cf8e5cf72093c372dc5a6686d346e7566ae80e54df00a621b8ea17f0ea1b841069b4c92c822ec8d7d6c13053e96c47033d5b071aa1a42517db4fcc22742dc97707fbdfebc6f6179ffebb0fbe7ab698ebdc85950891c3e3a804ae75bda34f2583250a418af7f0f58e51d87264e10cb3c7e70f4edca3475008e755ace33dc2383a74737222b4776894b9f1c34219d340fed6a31ef9f0997343786d08d7893a85d69c2b72f7d93f9dcedf1054385e4f10f23a9579ad5da4612420b1829937e31383503dc5bd5f80309da42a76a7becb8eb231df5faeec33430e3528b0e85b8ab27467b6de2943a76a0d59c344e90c53f6765ff1e68c50d68eadeb671dd5b2005e811195f3994a050182cbea5fbdb40e96358371141ce654cb989ac6f732606bc818863516702d705ff709b03bd15b7ae9a79f0250b2b4eacfd4009b4e3a8a0069f18c0af166977f89585f55553caa4fd81e43df7e89eab511fafd48f65159c529d2821399279be7d67c6a3b6d36eb3bf4a056d76148a6f1f815ba096450aaa7a66b603939fe0dce8638b4e181eb901e2d5ba37bf99f15d58a8471e8d8b87ccfadfc20dd6fef54109e16b1695182d5b3e74ace339a4b1e09291dd5684049742f6d99c514bb1055d63cbc1593d259427e6601d5f36d869753694f6ea97db46e56397be4849741b0d5313bdf320fba2034deac1bb72aaa586cda5b790ea3823c011afe4d981c74457d769ef146c3ff015d4e236832149c003aff6e80498877ddccc9bdbbf30d9d63db387e7bece1f1c73ead5c39106e56d355baf59f3e3a72943a370a2f60381f1175859825ce43af7c39350a8b93c7e2cfc25352ec790aa8cca072076c436b9269465ec9cd3e0f05be1b9e052c72d0f426552febbef988496572aed9613407e38133bbe569556a839fb1aecf72abe20ebd02dbb9e96432eda29442d679e45b52f85b42f33c8ffa71b8c5a85daafe35bf662f1070625959909419101af2929b491a0d03c580469040d3412dc6887daba8e0601b1cc76405d7ed94b41805c6d1fcf4326fb36af3cdec4ec9d67e4a68679108be9de01590d73c550f06602c2332c676182f841df0a012aa2074c7091ebbdf2b3920672cdad95681ca131ad81664542ef48480ecd5ba8a746320d8bdecd97cc2794aaf8a50bdd07fc395016457410c07fdf94bac8d7916510cf46c3b55dcd5caa712fc5344fdc14d9ec0cf21e991f0d9c56d261289e6b1c72b04c3e7937c07e2ff11a78209844d08aa52b4c34c1c96bb70a6bf0032bab63a98e1435f3f28993ef95b808df682a788bf77e92be940be53a56ed35aa17ca96d88e73927f4d05bf1b1d1bb3101f7c0e05877d39../libfwupd../libfwupdplugin../libfwupd/RedHatDisplay-Black.woff../libfwupd/RedHatDisplay-Black.woff2../libfwupd/RedHatDisplay-BlackItalic.woff../libfwupd/RedHatDisplay-BlackItalic.woff2../libfwupd/RedHatDisplay-Bold.woff../libfwupd/RedHatDisplay-Bold.woff2../libfwupd/RedHatDisplay-BoldItalic.woff../libfwupd/RedHatDisplay-BoldItalic.woff2../libfwupd/RedHatDisplay-Italic.woff../libfwupd/RedHatDisplay-Italic.woff2../libfwupd/RedHatDisplay-Medium.woff../libfwupd/RedHatDisplay-Medium.woff2../libfwupd/RedHatDisplay-MediumItalic.woff../libfwupd/RedHatDisplay-MediumItalic.woff2../libfwupd/RedHatDisplay-Regular.woff../libfwupd/RedHatDisplay-Regular.woff2../libfwupd/RedHatText-Bold.woff../libfwupd/RedHatText-Bold.woff2../libfwupd/RedHatText-BoldItalic.woff../libfwupd/RedHatText-BoldItalic.woff2../libfwupd/RedHatText-Italic.woff../libfwupd/RedHatText-Italic.woff2../libfwupd/RedHatText-Medium.woff../libfwupd/RedHatText-Medium.woff2../libfwupd/RedHatText-MediumItalic.woff../libfwupd/RedHatText-MediumItalic.woff2../libfwupd/RedHatText-Regular.woff../libfwupd/RedHatText-Regular.woff2../libfwupd/SourceCodePro-It.ttf.woff../libfwupd/SourceCodePro-Regular.ttf.woff../libfwupd/SourceCodePro-Semibold.ttf.woff../libfwupd/fonts.css../libfwupd/fzy.js../libfwupd/go-up-symbolic.png../libfwupd/main.js../libfwupd/org.freedesktop.fwupd.svg../libfwupd/pygment.css../libfwupd/search.js../libfwupd/style.cssrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootfwupd-1.8.6-150500.4.3.1.src.rpmfwupd-doc    rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3e d'@cc@cIO@c6@c,N@bb\@bb[@aaA@aaaaaaim@a^@`e`c`KW`6?`.V_S_м@_$_i_F@__@_O@_"@_"@_"@_@^א^א^1^@^h^)^ @]@]@]c]8H@] \\-@\@\Yz\73\\U@\ @[k@[Q@[\[h@[Xf@[GB[E@Zľ@ZlZ@Z`@Z1@Z1@Z1@Z;@Z8@Z2gYYYX @XX*X*X*X*X*X*X*X*X*Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@UeU+U+dennis.tseng@suse.comdennis.tseng@suse.comdennis.tseng@suse.combjorn.lie@gmail.combjorn.lie@gmail.combjorn.lie@gmail.comdimstar@opensuse.orggmbr3@opensuse.orgbjorn.lie@gmail.combjorn.lie@gmail.comgmbr3@opensuse.orghpj@urpla.netbjorn.lie@gmail.combjorn.lie@gmail.comjlee@suse.comdimstar@opensuse.orgdimstar@opensuse.orgjsegitz@suse.comjlee@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.cominfo@paolostivanin.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comdimstar@opensuse.orgdimstar@opensuse.orgqkzhu@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgyfjiang@suse.comdimstar@opensuse.orgdimstar@opensuse.orgglin@suse.comglin@suse.comhpj@urpla.netstefan.bruens@rwth-aachen.debjorn.lie@gmail.comschwab@suse.debjorn.lie@gmail.comglin@suse.comglin@suse.commpluskal@suse.commaurizio.galli@gmail.comdimstar@opensuse.orgglin@suse.commail@bernhard-voelker.debjorn.lie@gmail.comglin@suse.comschwab@suse.deglin@suse.comndas@suse.denico.kruber@gmail.comjengelh@inai.denico.kruber@gmail.comtchvatal@suse.comoliver@getspam.deoliver@getspam.dedimstar@opensuse.orgmpluskal@suse.comantoine.belvire@opensuse.orgfcrozat@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgstefan.bruens@rwth-aachen.defcrozat@suse.comstefan.bruens@rwth-aachen.dedimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgmpluskal@suse.comzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.org- Fix Bug 1212211 - Partner-L3: There are fwupd/FuEngine failure messages in /var/log/messages in SLES15 SP5 + add fwupd-Do-not-assume-a-file-descriptor-of-zero-is-invalid.patch - Remove protobuf-c BR: SLE now matches TW package layout(Callum Farmer) - Remove gnu-efi BR: efi binary is in fwupd-efi(Callum Farmer)- Change version 1.8.6: + Fix compiling error when building s390x ppc64le - add %ifnarch conditional to spec file + Recover one changelog unexpectedly removed when first pushing fwupd-1.8.6 to 15-SP5 - Thu Feb 24 06:29:53 UTC 2022 - jlee@suse.com - Add fwupd-bsc1193921-nvme-ignore-non-PCI-NVMe-devices.patch to ignore non-PCI NVMe devices (bnc#1193921)- For pushing fwupd-1.8.6 to 15-SP5 (fwupd-1.7.3), sync change log: (jsc#PED-1232) - fwupd-bsc1193921-nvme-ignore-non-PCI-NVMe-devices.patch be merged to fwupd-1.7.3- Update to version 1.8.6: + This release adds the following features: - Reduce the installed package size by more than 30% - Translate more interactive messages + This release fixes the following bugs: - Allow disabling a DFU device when required - Fix a regression when getting the i2c bus number - Fix a small memory leak when reloading the parade-lspcon device - Fix installing the dbx update when using fwupdtool - Improve writing CoSWID and uSWID metadata - Only include the last 5 releases in the installed metainfo file - Only request the BOS descriptor for newer libgusb versions - Prevent high memory usage when loading corrupt SREC files - Try harder when trying to find the default ESP volume - Use a higher compression preset for the UEFI splash images + This release adds support for the following hardware: - Focaltech touchpads - FPC fingerprint readers - Supermicro machines using Redfish - Drop plugin_sover define, and sub-packages libfwupdplugin7 and typelib-1_0-FwupdPlugin-1_0 following upstream changes.- Update to version 1.8.5: + This release adds the following features: - Add a new android-boot plugin to update specific block devices - Add new plugin to display SMU firmware version on AMD APU/CPU - Add support for platform capability descriptors so devices can set quirks - Move the generic Intel Goshen Ridge code out to a new plugin + This release fixes the following bugs: - Allow specifying the ESP when applying the dbx update - Always check the BDP partitions when getting all the possible ESPs - Correctly update Wacom AES devices - Disable changing sleep mode on Ryzen 6000 systems - Do not show the 'may not be usable while updating' message for DBX updates - Expose Pine64 PinePhone Pro MTD as Tow-Boot - Fix a critical warning when issuing Secure Boot modem AT commands - Fix a fuzzing crash when parsing malicious FDT data - Fix aligning up addresses greater than 4GB - Fix a possible crash when dumping VBE firmware - Fix a possible critical warning when parsing cabinet archives - Fix a regression when parsing pixart-rf firmware - Fix a small memory leak when parsing UF2 files - Fix checking for invalid depth requirements - Fix parsing the coSWID firmware ID when encoded as a UUID - Fix parsing uSWID uncompressed metadata - Fix uploading to DFU-CSR devices - Limit the archive size to 25% of the RAM, or 4G - Load coSWID metadata from a uSWID MTD block device - Never save the Redfish auto-generated password to a user-readable file - Only create users using IPMI when we know it's going to work - Write all the CCGX metadata block as intended + This release adds support for the following hardware: - Corsair SABRE RGB PRO Gaming mouse - More Sonix CAM devices - More Intel Goshen Ridge USB-4 docks - Changes from version 1.8.4: + This release adds the following features: - Add a translated title and long description for HSI security attributes - Add support for loading a machine-default BIOS settings policy - Add support for reading and writing BIOS settings - Allow loading BIOS settings for host emulation - Prompt users to fix some BIOS configuration issues + This release fixes the following bugs: - Actually show provided AppStream security issues - Add Quectel secure boot status AT commands - Correctly detect CET IBT - Do not assert when running with no plugins - Do not require UEFI capsule updates for checking TPM PCR0 - Do not show HSI events where we changed the spec result value - Fix applying the latest DBX update - Include vfat in the list of possible BDP partition types - Install all devices with the same composite id in fwupdtool - Only fail the kernel HSI test for specific taint reasons - Only show changed events in fwupdmgr security - Update vulnerable CMSE versions from CSMEVDT data + This release adds support for the following hardware: - Elan non-HID touchpads - Google Prism - LabTop Mk III - ThinkPad Thunderbolt 4 Dock - ThinkPad Universal Smart Dock - Changes from version 1.8.3: + This release adds the following features: - Add resolution flags to each security attribute failures for the user - Allow loading in emulated host profiles for debugging - Check if Intel TME has been disabled by the firmware or platform - Wait for the system to acquiesce after doing each update + This release fixes the following bugs: - Do not use CoD even when advertized on non-aarch64 platforms - Fix a crash when updating the Logitech Bolt radio device - Fix a critical warning when parsing an invalid PHAT record - Fix a critical warning when parsing invalid FDT firmware - Fix fwupdmgr security when plugins are added to the blocklist - Fix parsing SMBIOS data to correct the device hardware IDs - Fix uploading signed reports by sending the correct checksum - Use the correct protocol attribute name when exporting to JSON + This release adds support for the following hardware: - Additional Startech devices - Additional Elan fingerprint readers - Changes from version 1.8.2: + This release adds the following features: - Add startup profiling which allowed us to speed up daemon startup considerably - Add support for OptionROM, CPD and FPT firmware formats for future hardware - Add the HostVendor to the D-Bus interface - Break some internal ABI and add a conversion helper for out-of-tree plugins - Optionally build the quirk files into the daemon binary to reduce installed size + This release fixes the following bugs: - Allow front-end clients to read the percentage property - Allow more quirk entries to add multiple items - Allow to force install Genesys firmware even if the public-key does not match - Allow UFS disks to define the signed status in metadata - Autoconnect the Redfish network device when rebooting the BMC - Copy the instance ID strings when incorporating devices - Do not generate a capsule header for the FMP GUID - Ensure more firmware formats can round-trip to and from XML - Fix a regression for devices using the Atmel FLIP Bootloader - Fix running fwupdtool security with a user-specified plugin allowlist - Handle ENOTTY with the correct error code for ioctl calls - Increase the self tests coverage substantially - Modernize the AMT plugin and split out common MEI functionality - Only move the logitech-bulkcontroller progressbar forwards when writing - Set the device ID on the FwupdRequest to allow better UX - Show the get-details output when the device requirements fail - Simply quirk matching for i2c devices to speed up daemon startup - Support SHA256 fastboot hashes if specified - Use force-detach to bypass the DFU streaming check for camera devices - Use the SCSI target to correctly set the physical ID - Wait for the System76 launch device to re-enumerate if already unlocked + This release adds support for the following hardware: - Corsair HARPOON RGB Wireless mouse - U-Boot devices writing simple FIT images - Genesys M27fd AIM101 - More PixArt wireless devices - More Steelseries HID, Sonic and Fizz devices - System76 launch_2 - Changes from version 1.8.1: + This release adds the following features: - Add archive writing support for devices with composite firmware - Add a way to read device composite firmware in fwupdtool - Allow clients to opt-in to showing updates with user-solvable problems - Allow the device to pause polling when writing firmware - Export the system and device battery levels on the D-Bus interface - Log errors and warnings to the win32 eventlog when required - Add X-UsbReceiver as an update category with icon usb-receiver + This release fixes the following bugs: - Accurately return the last-set status to client tools - Allow dumping flashrom firmware using fwupdtool - Allow specifying a non-file D-Bus transport - Allow to request post actions from fwupdtool - Always be arch-explicit when installing OS deps - Be more resilient when restarting the Redfish BMC - Do not mark all Redfish updates as UPDATABLE - Do not use 'dongle' to describe USB receiver hardware - Download in-process when using fwupdtool - Fix a critical warning on failed modem update - Fix regression when probing PS175 devices - Hardcode the Redfish filedata name to firmware.bin - Set the Bluetooth version if REV has been set - Switch the Windows installer from NSIS to MSI - Use StartServiceCtrlDispatcherA for the daemon on Windows - Use the native certificate store on Windows + This release adds support for the following hardware: - Corsair KATAR PRO XT, SABRE PRO and KATAR PRO Wireless - HP Thunderbolt Dock G4 - Lenovo ThinkPad Universal USB-C Dock - More PixArt wireless devices - More SunplusIT USB cameras - Some UFS devices - Steelseries Aerox 3 Wireless and Rival 3 Wireless - Changes from version 1.8.0: + This release adds the following features: - Add a new attribute for CPUs supported by HSI - Add coSWID and uSWID parsers to libfwupdplugin for initial SBoM support - Add new HSI attributes for the AMD PSP and various other system protections - Add the runtime fwupd-efi version as a firmware requirement - Allow 'fwupdmgr install' to install a specified firmware version - Allow overriding the detected machine type for debugging and development - Restart the BMC after installing BCM updates - Show the device serial number and instance IDs by default - Support dumping the MTD image to a firmware blob - Take a device inhibit when updating a device - Use the CFI manufacturer ID to set the vendor - Use the correct icon automatically for more hardware + This release fixes the following bugs: - Add signed-payload metadata for more devices - Allow Capsule-on-Disk to work in more cases - Allow quirking the detected flashrom flash size - Check for os-release on FWUPD_SYSCONFDIR - Check the alignment when parsing raw firmware - Check the update protocol exists when checking requirements - Convert the build system to use meson tristate features - Correctly probe USB-2 hubs with more than 7 ports - Do not add the Windows compatibility ID to capsule devices - Do not allow the DBX update for specific motherboards - Do not expect KernelCmdline on Windows - Do not export USB4 host controllers as updatable if they don't have unique GUIDs - Do not fallback to audio-card and use a more suitable icon for USB hubs - Do not hardcode the libexecdir to /usr/libexec - Do not leak child processes when canceling - Do not show unconnected or unreachable devices in the client tools - Do not throw away the TPM eventlog when uploading to the LVFS - Do not use /var/run for the socket - Export the version_lowest_raw value correctly - Fix build for MacOS and add to the CI matrix - Fix eventlog replay for Intel TXT machines - Fix several small memory leaks - Fix writing large mtd images than 10kb - Ignore MTD devices that report EPERM on open - Mark the ME region device locked if it is read only - Never send the DeviceChanged signal with old data - Only show the CLI time remaining for predictable status phases - Respect the NO_COLOR env variable - Return the correct error when there is no GPIO device to open - Support the new UPower PENDING device states + This release adds support for the following hardware: - CH341A SPI programmer - Corsair Sabre RGB PRO and Slipstream USB receiver - Genesys GL3521 and GL3590 hubs - Google Servo Dock - Logitech M550, M650 and K650 - More ELAN fingerprint readers - More integrated Wacom panels - More NovaCustom machines - More StaLabs StarLite machines - More Tuxedo laptops - Quectel EM05 - FlatFrog devices - System76 launch_lite_1 - Rebase patches with quilt. - Use ldconfig_scriptlets macro for post(un) handling. - Add shlib_sover define and set it to 2, ease future updates. - Add plugin_sover define and set it to 7, ease future updates, and rename libfwupdplugin5 to libfwupdplugin7 following upstream changes. - Drop gtk-doc and pkgconfig(gtk-doc) BuildRequires: No longer needed nor used. Following this, stop passing docs=gtkdoc to meson, no longer recognized. - Add pkgconfig(gi-docgen), pkgconfig(libcbor), pkgconfig(mm-glib), pkgconfig(mbim-glib), pkgconfig(qmi-glib) and pkgconfig(umockdev-1.0) BuildRequires, and conditional pkgconfig(flashrom) BuildRequires: New dependencies. - Update options passed to meson following upstream changes. - Replace false for plugin_nvme and plugin_redfish with enabled, build nvme and redfish plugins. - Split out developer/api docs in new doc sub-package, add fdupes BuildRequires and macros, remove duplicates.- Update to version 1.7.10 (CVE-2022-3287, boo#1203852): + Always check the BDP partitions when getting all the possible ESPs + Correctly detect CET IBT + Do not show HSI events where we changed the spec result value + Fix aligning up addresses greater than 4GB + Fix applying the latest DBX update on machines with 20200729.x64 installed + Fix checking for invalid depth requirements + Fix getting the new version number of the USI docking hardware + Fix HSI prefix for invalid chassis + Never save the Redfish auto-generated password to a user-readable file (CVE-2022-3287, boo#1203852). + Only create users using IPMI when we've tested the hardware + Only fail the kernel tainted HSI test for specific taint reasons + Only show changed events in the fwupdmgr security output + Recognize CSME version 16 and update vulnerable versions from CSMEVDT data + Write all the CCGX metadata block as intended- Update to version 1.7.9 (boo#1201311): + Do not generate a capsule header for the FMP GUID. + Do not use CoD even when advertized on non-aarch64 platforms. + Fix a critical warning when parsing an invalid PHAT record. + Fix a regression for devices using the Atmel FLIP Bootloader. + Fix parsing SMBIOS data. + Set the device ID on the FwupdRequest. + Use the correct protocol member when converting to JSON. + Wait for the system76-launch device to re-enumerate if unlocked and reset. - Changes from version 1.7.8: + Add the bootloader VID/PID used for the first batch of ColorHug devices. + Also check for os-release in SYSCONFDIR. + Export the version lowest raw value correctly. + Fix a Wacom timeout when parsing very corrupt firmware. + Fix Genesys device enumeration failure by not claiming the interface. + Hardcode the Redfish filedata name to firmware.bin. + Install D-Bus introspection data even if introspection is disabled. + Only set the flashrom BIOS size if not already quirked. + Read the SynapticsMST firmware size in a more safe way. + Restart the BMC after installing BCM updates.- Update to version 1.7.7: * This release adds the following features: + Add CCGX trigger code to support future hardware + Add signed and unsigned payload metadata to more devices + Allow overriding the detected machine type + Allow quirking the flashrom flash size + Do not allow the DBX update for broken firmware versions * This release fixes the following bugs: + Do not add the backup BMC device as it shares the same GUIDs + Do not hardcode the libexecdir to /usr/libexec + Do not leak child processes when canceling + Do not throw away the TPM eventlog when uploading reports to the LVFS + Don't export USB4 host controllers if they do not have unique GUIDs + Fix build for MacOS + Fix the TPM eventlog replay for Intel TXT machines + Fix writing large MTD images + Never send the DeviceChanged signal with invalid data + Return the correct error when there is no GPIO device to open + Show the update message and update image in front end tools + Support the new PENDING upower device states * This release adds support for the following hardware: + Logitech M550, M650 and K650 + More Elan fingerprint readers + More Star Labs StarLite laptops + More Wacom panels found on Lenovo laptops - Split bash and fish completions to separate subpackages - Remove un-needed BRP_PESIGN_FILES - Set GNU_SOURCE so meson detects F_OFD_SETLK in fnctl.h support- Update to version 1.7.6: * This release adds the following features: + Add a flag for UEFI devices that never want a capsule header auto-added + Add a flag to indicate the device has a signed or unsigned payload + Add a plugin to set a GPIO pin for the duration of an update + Add a simple plugin to enumerate (but not update) SCSI hardware + Add two more instance IDs to the MTD devices + Add X-BaseboardManagementController as an update category + Allow assigning issues to devices for known high priority problems + Parse the MTD firmware version using the defined GType * This release fixes the following bugs: + Check the IFD sections have non-zero data length to fix a critical warning + Modify the AT retry behavior to fix getting the firmware branch + Do not run fwupd-refresh automatically in containers + Do not show a warning if the TPM eventlog does not exist + Do not show TSS2 warning messages by default + Fix a critical warning when loading an empty TPM eventlog item + Fix a logic error when adding the community warning in fwupdmgr + Fix loading flashrom devices in coreboot mode + Fix the error handling when updating USB4 retimers + Show the user when devices are not updatable due to inhibits + Skip probing the Dell DA300 device to avoid a warning + Try harder to convert to a version into a correct semver + Use multiple checksums when there are no provided artifacts * This release adds support for the following hardware: + HP M2xfd monitors + Star Lite Mk III- Update to version 1.7.5: * This release adds the following features: + Add a flag to indicate the firmware is not provided by the vendor + Add support for showing dependency versions in JSON format + Allow fwupd to operate in socket mode without a D-Bus daemon + Allow marking a device as End-of-Life by the OEM vendor + Allow specifying the machine Best Known Configuration locally + Fall back to the ARM Device Tree 'compatible' data when required * This release fixes the following bugs: + Be more robust by retrying IPMI transactions on servers + Change the expired Redfish password when required + Fix a ModemManager segfault on startup for some MBIM-QDU devices + Fix a possible dell-dock segfault at startup + Fix compiling with new versions of efivar + Fix the Nordic bootloader type detection + Fix USB4 retimer enumeration + Get the SMBIOS table and host machine ID when running on Windows + Show results when calling get-details if failing requirements + Uninhibit the modem using ModemManager after upgrade * This release adds support for the following hardware: + Future Analogix devices + NovaCustom NV4x - Changes from version 1.7.4: * This release adds the following features: + Add firmware branch support for ModemManager devices + Allow firmware engineers to patch files at known offsets + Show why more devices are not marked as updatable * This release fixes the following bugs: + Allow fwupdtool to be run as the non-root user in more cases + Assign the Logitech bulkcontroller update interface correctly + Do not allow UEFI updates when the laptop lid is closed + Do not autoload ipmi-si to avoid warning on non-server hardware + Do not show a critical warning for a weird TPM event log + Fix waiting for USB devices when using Windows + Ignore non-PCI NVMe devices * This release adds support for the following hardware: + HP USB-C G2 Dock + Many UF2 devices, experimentally + More PixArt devices + Nordic HID devices using MCUBoot + Quectel EG25-G LTE Modem + ThinkPad Thunderbolt 4 Dock- Update to version 1.7.3: * This release adds the following features: + Add a sync-bkc subcommand to ensure a known set of firmware versions + Add FuArchiveFirmware for plugins that use archives as firmware files + Add quirkable page and sector size properties to FuCfiDevice + Make Upower and powerd support optional * This release fixes the following bugs: + Add some sanity checks to the elanfp firmware parser + Add the CFI JEDEC instance ID if using the vendor-extended version + Check the value range when parsing the quirk keys + Do not wait for a USB runtime if will-disappear is set + Enable the MOTD integration when using pam_motd + Fix DFU regression when merging the FuProgress work + Fix running the tests when fwupd is not installed + Fix the GLib error message when inotify max_user_instances is too low + Fix VLI VL820Q7 detection to fix flashing of the Lenovo TBT3 dock + Ignore a USB error for STM32 attach when the device goes away + Make the HSI tests optional for embedded targets + Make the plugin startup order deterministic + Set Thunderbolt ports offline on host controller + Use endian-safe version functions when enumerating Logitech hardware + Use lowercase flag names in intel-spi to prevent a runtime warning + Wait for the System76 Launch device to come back from DFU mode * This release adds support for the following hardware: + Most Nordic Semiconductor nRF Secure devices - Fix build when not on TW: add BR protobuf-c- Fix build issue in spec (references to libfwupdplugin2 -> libfwupdplugin5)- Update to version 1.7.2: * This release adds the following features: + Add a new HSI check that PCR registers 0-7 are not empty + Add several compile flags to reduce the install size by over 300Kb + Allow overriding HwId data from the daemon.conf config file + Allow overriding the firmware GType from a quirk file + Export the component release ID over DBus + Remove support for the SoloKey and ChaosKey devices + Show a daemon warning if quirk flags are malformed + Speed up the daemon startup by ~40% by doing less at startup * This release fixes the following bugs: + Be case insensitive when fixing the device model + Fix a critial warning in ccgx found by the fuzzer + Fix a DFU crash if the attach failed due to a hardware fault + Fix a Redfish crash when specifying a URL without a port + Fix CLI downloads when using fwupdmgr --ipfs + Fix critical warning when /etc/machine-id does not exist + Inhibit thunderbolt devices to correctly use UPDATABLE_HIDDEN + Set SSL_VERIFYHOST=0 when using Redfish to fix OpenBMC auth + Skip UEFI devices that fail coldplug * This release adds support for the following hardware: All exported MTD block devices - Changes from version 1.7.1: * This release adds the following features: + Allow specifying 'fwupdmgr device-test foo --json' for unattended testing + Allow using a filename when using set-approved-firmware + Inhibit ModemManager device in mbim-qdu + Share the Common Flash Memory Interface quirks between plugins + Show changes in HSI attributes when using 'fwupdmgr security' + Show the user a warning if updating may affect full-disk-encryption + Show translated firmware release notes when provided + Support loading remotes from /var/lib/fwupd/remotes.d * This release fixes the following bugs: + Fix a CCGX regression when loading firmware + Fix a potential crash when dumping Parade devices + Fix build error when sys/io.h is not available + Fix building the Synaptics RMI self tests on s390x + Fix the CSME CVE detection for new generations + Handle EPERM when running the self tests on systems with IPMI + Mark as SUPPORTED even if on battery power + Only save the HSI attributes to the database if different + Raise the client timeout value from 25 seconds to fix Redfish startup + Redirect the old HSI links to the correct place + Relax the ITE SuperIO signature checks for new hardware support + Set device time and timezone for logitech bulkcontroller devices + Set the verfmt of the returned device when the daemon device is unset * This release adds support for the following hardware: + Dell Atomic Dock + HP Thunderbolt Dock G4 + More PixArt devices + Steelseries Stratus + Wacom 3rd-gen Intuos BT - Changes from version 1.7.0: * This release adds the following features: + Add FuCfuPayload and FuCfuOffer for future usage + Add support for an 'unreachable' device flag + Add support for Logitech devices supporting the Unified Battery feature + Allow adding GUIDs to each HSI security attribute + Allow installing the LVFS remote, but with it disabled by default + Convert security attributes to JSON and write then to the database + Convert the device test script to a fwupdmgr subcommand + Create Redfish user accounts automatically using IPMI + Use an interactive request to restart some Logitech DFU devices * This release fixes the following bugs: + Abort on invalid SREC files early to avoid a fuzzing timeout + Allow using interrupt transfers for HID devices + Allow waiting for multiple devices to replug + Fix a critical warning on a Unifying flash failure + Fix a regression in flashing the Dell dock + Fix Thunderbolt host controller probing + Forcefully set checksums found in cabinet files to lowercase + Force UX-capsule over full size BGRT + Make the SuperIO ports and timeouts specific to the DMI model + Only probe SynapticsMST devices that have opted-in + Remove support for --ignore-power as it did not work for UEFI firmware + Reset the CMOS as required when changing system firmware branch + Restart the daemon if any of the the plugin config files are modified + Show HSiLevel=0 attributes in JSON security output + Update the child composite ID if the parent changes + Use a per-device global percentage completion + Write the BMP image upside down to avoid using a negative bitmap height * This release adds support for the following hardware: + A huge number of Synaptics CAPE devices + Elan fingerprint readers + Logitech Bolt peripherals, receivers and radio hardware + Logitech devices supporting the bulk controller protocol + More supported PixArt devices + More supported StarBook coreboot devices + Union Point SPI hardware - Add pkgconfig(libprotobuf-c) and pkgconfig(protobuf) BuildRequires: New dependencies. - Refresh patches with quilt. - Drop sub-package fwupdtpmevlog, no longer built. - Update URL in _service, new home.- Update to version 1.6.4: * Allow overriding the quirks directory at runtime * Fix a regression in flashing the Dell dock * Fix probing the Dell TPM * Show HSiLevel=0 attributes in JSON security output * Abort on invalid SREC files early to avoid a fuzzing timeout * This release adds support for the following hardware: + AVer ATLAS CAM/CAM520 Pro2 + Cayenne/Spyder Synaptics MST + VL819 USB devices - Changes from version 1.6.3: * This release adds the following features: Fall back to the parent if the child does not have a battery level set * This release fixes the following bugs: + Disable the uefi_capsule plugin if Redfish coldplug succeeded + Fix an elantp crash when starting the daemon + Fix compiling with old versions of libxmlb + Fix detection of 8Bitdo wireless usb adapter + Fix the 8bitdo N30 Pro 2 install duration + Fix the modem-manager report that failed to get device after update + Fix writing large redfish firmware files * This release adds support for the following hardware: + Poly Studio P21 + Realtek RTD2141B - Switch service to obs_scm, and recompress to buildtime. - Drop automatic changesgenerate, upstream have perfectly fine and human understandable release notes at https://github.com/fwupd/fwupd/releases that should be copied into .changes.- Add requires to udisks2 for dbxtool update. (bnc#1192344)- If the machine we install onto has shim installed, it is likely an EFI based system. Require fwupd-efi in this case (boo#1192206).- Require libfwupdplugin2 by the -devel package: the -devel package installs the .so symlink, thus we must guarantee the target library to be present.- Added hardening to systemd service(s) (bsc#1181400). Added patch(es): * harden_fwupd-offline-update.service.patch * harden_fwupd-refresh.service.patch- Update to version 1.6.2 - The fwupd efi program be separated to fwupd-efi package. - Removed pesign-obs-integration, moved needssslcertforbuild , SBAT and EFI signing stuff to fwupd-efi. - Moved libfwupdplugin1 to libfwupdplugin2 - Change log from upstream: https://github.com/fwupd/fwupd/blob/main/data/org.freedesktop.fwupd.metainfo.xml - This release adds the following features: * Add a plugin to check Lenovo firmware settings * Add initial support for the powerd daemon * Add support for CapsuleOnDisk * Add support for installing UEFI updates from GRUB * Add support for soft-requirements that can be ignored with --force * Allow devices to only accept version upgrades * Allow discovery of Redfish BMCs specified by VID-PID or MAC * Allow the daemon to request interactive action from the end user * Automatically connect the BMC network interface at startup * Show the build timestamp if set on the device * Show the user how to switch out of Wacom tablet Android-mode - This release fixes the following bugs: * Add the alternate vendor name into the 8BitDo allowlist * Allow multiple devices to set WAIT_FOR_REPLUG * Allow the client to watch for more property changes * Always ensure the SuperIO version string is NUL terminated * Automatically clear the update error as required * Disable all UX capsules for Lenovo hardware * Do not assume the metainfo file is NUL-terminated * Do not save invalid files on LVFS server error * Fix a VLI regression in enumerating the PD device * Fix a VLI regression when installing VL820Q7 firmware * Fix enumeration of the Synaptics Prometheus config child * Fix parsing Redfish USB/PCI network VID/PIDs * Fix the fwupdmgr progressbar spinner to actually work * Fix version number for legacy Wacom Bluetooth modules * Ignore virtual M.2 ATA devices * Preserve NEEDS_REBOOT on successful update * Prevent a corrupt PHAT table from allocating lots of memory * Read the Redfish SMBIOS table when required * Remove the vendor string from the device name where required * Save the update state to the database correctly all of the time * Switch from sysctl to ioctl for ESRT on FreeBSD * Try reading from /sys/class/dmi if SMBIOS direct access fails * Watch for children added or removed after setup has been completed * Work around a XCC-ism on Lenovo hardware - This release adds support for the following hardware: * ModemManager devices supporting Firehose or MBIM QDU * More models of RTS54HUB * More Poly DFU devices * Parade LSPCON * PixArt receiver and wireless hardware * Realtek MST with RTD2142 * SuperIO IT5570 * USB4 Dell dock- Remove valgrind from BuildRequires since it's not a hard requirement anymore. (bsc#1184248)- Update to version 1.5.8: New features: * Add a new internal flag to opt-in to GUID matching * Add D501 Baklava device support * Add fu_device_set_battery_level() * Add missing uint64 read and write helpers * Add Qubes wrapper source and create packages * Allow enabling plugins only matching a specific HwId * Prompt for unlock keypress if reset command is blocked * Remove obsolete dell-dock non-passive update flow support * Remove the Hughski public key * Show a warning when parsing invalid quirk files * Support for GATT characteristic signals/notifications * Support more than one protocol for a given device Fixes: * Align the CCGX DMC firmware to 64 byte chunks * Be more strict for custom quirk keys * Check pixart firmware compatibility with hardware before flashing * Correct a thunderbolt assertion if kernel failed FW read * Correctly erase STM32 devices when transfer size is less than sector size * Detect SREC overflow to avoid adding ~4GB of 0xFF padding * Do not show a critical error when flashing footer-less binary files * Don't allow device updates while needing activation * Fix a regression in the elantp defined IAP start address * Fix a regression where activate stopped working * Fix firmware update of pointing device on Lenovo ThinkPad Nano * Fix the HSI plugin 'Disabled' state * Fix the quirk key name for the Lenovo HDMI with power * Fix writing to the GD32VF103 bootloader * Only call elantp->detach() when writing a firmware blob * Updated StarLabs GUIDs * Wait a few ms for the Logitech hardware to settle after detach - Remove GPG-KEY-Hughski-Limited from the filelist - Drop upstreamed patch + fwupd-bsc1182057-fix-sbat-section-copy.patch- Add fwupd-bsc1182057-fix-sbat-section-copy.patch to set the proper section flags for .sbat section so that objcopy can copy it into fwupd*.efi (bsc#1182057)- Update to version 1.5.7: New features: * Add initial support for Bluez bluetooth devices * Add more supported pixart devices * Add support for the RTD21xx HDMI converter Fixes * Convert MBR types to GPT GUIDs to help find the ESP * Do not allow updating a synaptics-mst device with no customer ID * Drop unused heap pages after startup has completed * Ensure SBAT metadata is added correctly * Move the plugin build logic to the plugins themselves * Only allow verify-update for plugins that support CAN_VERIFY - Specify SBAT metadata for openSUSE/SLE (bsc#1182057) - Adjust the meson options + plugin_uefi => plugin_uefi_capsule and plugin_uefi_pk + plugin_synaptics => plugin_synaptics_mst and plugin_synaptics_rmi + Disable Intel AMT plugin in non-x86 systems- Update to 1.5.6: New features: * Add SBAT metadata to the fwupd EFI binary * Add support for GD32VF103 as found in the Longan Nano * Add support for RMI PS2 devices * Add support for the System76 Keyboard * Allow downloading firmware from IPFS * Install the UX data into a single .tar.xz file * Add a plugin to update PixArt RF devices * Add new hardware to use the elantp and rts54hid plugins * Allow specifying more than one VendorID for a device * Detect the AMD TSME encryption state for HSI-4 * Detect the AMI PK test key is not installed for HSI-1 * Add Maple Ridge Thunderbolt firmware parsing support * Add --no-remote-check to ignore checking for download remotes * Allow creating FMAP and Synaptics firmware using builder.xml Fixes: * Add support for the Starlabs LabTop L4 * Allow using an external ESP again * Ask the user to reboot when required if downgrading * Be more paranoid when parsing ASCII buffers and devices * Check if the fwupd BootXXXX entry exists on failure * Clear the pending flag if restarting the system * Do not allow flashing using flashrom if BLE is enabled * Do not allow Lenovo hardware to install multiple capsules * Do not parse the OptionROM image * Do not show Unknown [***] for every client connection * Fix dnload wBlockNum wraparound for ST devices * Fix OOM when using large ArchiveSizeMax values * Fix several crashes spotted by AddressSanitizer * Fix several places where the Goodix MOC plugin could crash * Include the PCR0 to the report metadata * Report the lockdown status from UEFI and SuperIO plugins * Show a console warning if the system clock is not set * Fix flashing a fingerprint reader that is in use * Fix several critical warnings when parsing invalid firmware * Fix updating DFU devices that use DNLOAD_BUSY * Ignore the legacy UEFI OVMF dummy GUID * Make libfwupd more thread safe to fix a crash in gnome-software * Never show unprintable chars from invalid firmware in the logs * Allow using fwupdtool as non-root for firmware commands * Do not trust the Block.HintSystem boolean for ESP filtering * Fix a memory leak when parsing Synaptics firmware * Fix a possible crash when reading the Goodix MOC USB request * Fix crashes when parsing invalid FMAP, DMC, Solokey and Synaptics images - Deprecate fwupd-bsc1179790-disable-hintsystem.patch- Add fwupd-bsc1179790-disable-hintsystem.patch to remove Block.HintSystem from ESP filtering (bsc#1179790)- Update to version 1.5.3: + Lower the CURL version required to fix build in RHEL + Do not use meson ternary operations to avoid bumping the required meson version + Added Lite Mk III + Allow setting the GMainContext when used for sync methods + Fall back to the misc device for serio devices + Actually implement rescan in FuUdevDevice + bcm57xx: Refactor CRC code to remove extra byteswap + bcm57xx: Fix CRC check + synaptics-rmi: Don't crash if calling ->to_string() before - >setup() + Fix a possible critical warning due to missing retval + Add the serio->firmare_id for UDev devices + Export the driver name from FuUdevDevice + Allow the client to send PKCS7 and GPG signatures + Force the remote kind to JCat server-side + Only parse the signature if the remote is JCat + fu-main: Fix sender_features insert with wrong size + make platform integrity plugin optional and disabled by default + Add quirk for Western Digital + Mark more user-visible strings as translatable + modem-manager: validate firmware update method combinations + modem-manager: remove unused byte counts in QMI/PDC update logic + modem-manager: make sure the correct interface number is used for QMI + modem-manager: udev monitoring only if device switches layout + modem-manager: plug udev client leak + Restrict loading component types of firmware - Enable supported_build to clarify that this package is supported (bsc#1179790) - Drop fwupd-platform-integrity.conf since upstream disables the platform integrity module by default now due to incompleteness. - Address fwupd-refresh.service in %preun, %pre, %post, and %postun and provide a rc link for it - Version "Obsoletes: dbxtool" and "Obsoletes: fwupdate"- Update to version 1.5.2: + ata: Add OUI quirk for Toshiba + libfwupd: Restore recognizing gpg and pkcs7 types still + Register the SoupSession gtype when required + Switch from libsoup to libcurl + Fix sync method when called from threads without a context + Move ABI check to Github actions + Enable github workflows + libfwupd: Add fwupd_client_download_file() + libfwupd: Add fwupd_client_get_user_agent() + Only download the remote metadata as required + Add breaks for fwupdate 12-7 (Closes: #960688) + Install modules-load configs in the correct directory + vli: Do not be clever replugging the MSP430 device + vli: Make some trivial debugging more specific to help debug an issue + make gcab optional + Fall back to FAT32 internal partitions for detecting ESP + Add a flag to indicate if packages are supported + uefi: a new option for uefi configuration to use UEFI removable path + Add a section to man page on scripting + synaptics-mst: Improve reliability by waiting 2 seconds after writing data + hailuck: Add an plugin for the Pinebook Pro laptop + Allow setting global flags for FuHidDevice + Set the SMBIOS chassis type to portable if a DT battery exists + colorhug: Don't set the version format to triplet at startup + Allow components to set the icon from the metadata + colorhug: Fix detection of version on older firmware versions + bcm57xx: Fix reading vendor/device ids from firmware. + Remove HSI update and attestation suffixes + trivial: make dbxtool executable to fix snap build + Ignore an invalid vendor-id when adding releases for display + Notify the service manager when idle-quitting - Refresh fwupd-bsc1130056-change-shim-path.patch - Changes in BuildRequires: + Replace pkgconfig(libsoup-2.4) with pkgconfig(libcurl) + Replace pkgconfig(systemd) with pkgconfig(libsystemd) - fwupd-msr.conf and fwupd-platform-integrity.conf are moved to %{_modulesloaddir}.- Obsoletes and Provides dbxtool since fwupd 1.5.0+ now embeds dbxtool in the dbxtool plugin- Amend the spec file (jsc#SLE-16818) + Only enable fish support for Tumbleweed + Only enable the MSR plugin for x86 + Only install dbxtool in the architectures with UEFI support- Update to version 1.5.1: + Use UDisks to find out if swap devices are encrypted. + Show a link to discover more information about a specific plugin failure. + updated fish completions to 1.5.0. + Remove the duplicate parent-child data in FwupdDevice and FuDevice. + Show a less scary fwupdate output for devices without info. + thunderbolt: recognize authorized value of '2' as well. + bcm57xx: Make hotplug more reliable. + Use a different Device ID for the OptionROM devices. + contrib/ci: switch TPM simulator from ibmswtpm to swtpm. + Delete unused EFI variables when deploying firmware. + Fix probe warning for the Logitech Unifying device. + Include the amount of NVRAM size in use in the LVFS failure report. + Add external interface messages.- Update to version 1.5.0: + Add a compatible re-implementation of the rhboot dbxtool. + Add async versions of the library for GUI tools. + Add commands for interacting with the ESP to fwupdtool. + Add firmware-extract subcommand to fwupdtool. + Add FwupdPlugin so we can convey enumerated system errors to the end user. + Add plugin for Goodix fingerprint sensors. + Add plugin that can update the BCM5719 network adapter. + Add plugin to update Elan Touchpads using HID. + Add support for a delayed activation flow for Thunderbolt. + Add support for ChromeOS Quiche and Gingerbread. + Add support for Hyper hardware. + Add support for the Host Security ID. + Add support for ThunderBolt retimers. + Add switch-branch command to fwupdtool and fwupdmgr. + Allow blocking specific firmware releases by checksum. + Allow contructing a firmware with multiple images. + Allow firmware to require specific features from front-end clients. + Allow updating the dbx using the LVFS, validating it is safe to apply. + Include the HSI results and attributes in the uploaded report. + Support loading DMI data from DT systems. + Support LVFS::UpdateImage for GUI clients.- Add fwupd-jscSLE-11766-close-efidir-leap-gap.patch: Set SLE and openSUSE esp os dir at runtime (jsc#SLE-11766) - Drop _multibuild and build option -Defi_os_dir="%{efidir}": with the above patch fwupd can detect esp os dir dynamically - Update the efidir related %post and %postun scripts in spec file- Update to version 1.4.5: * Add XB_QUERY_FLAG_FORCE_NODE_CACHE * Add support for a delayed activation flow for Thunderbolt * Allow firmware to require specific features from front-end clients * Allow multi-byte FuUdevDevice preads and writes * Be more defensive when remotes are missing required keys * Disable the SQLite lookaside cache * ccgx: Add more hybrid dock support * ccgx: Modify readme to remove customer info * ccgx: add new protocol for dmc dock * ccgx: remove verify flag in plugin * modem-manager: read the vendor ID directly from sysfs attribute Fixes: #2209 * thelio-io: Add the DFU instance ID as a counterpart only * thunderbolt: Add a new subclassed thunderbolt firmware update type * thunderbolt: Allow quirks to skip the authentication step * thunderbolt: drop support for force power * tpm-eventlog: fix PCR0 calculation * uefi: check for free space after cleaning up ESP * vli: Add dual-image feature for VL103 backup firmware * vli: Add the project ID shared SPI PD controllers * vli: Allow chained usb hub devices where the parent needs GPIOB reset * vli: Do not modify the class vfuncs depending on device type * vli: Do not use GUID matching for the MSP device * vli: Rename FuVliUsbhubI2cDevice to FuVliUsbhubMsp430Device * vli: Set FuQuirks on the shared SPI object * vli: Set the i2c instance IDs in probe() * vli: Use the GPIOB reset for the MiniDock VL103 * vli: Wait for the root device to be replugged when updating the MSP430- Update to version 1.4.4: * Release fwupd 1.4.4 * Fix regression when checking for downgraded metadata- Update to version 1.4.3: * Release fwupd 1.4.3 * ata: A OUI quirk for Kingston * ccgx: Fix a potential division by zero * Check the device requirements when returning from GetDetails * fu-engine: Allow --plugin-whitelist to use dashes instead of underscores * Always enforce the metadata signature has a valid timestamp * ccgx: modify install duration for dmc device * ccgx: Add support for HP DMC dock devices * dell-dock: prevent updates to occur via synaptics-mst plugin * dell-dock: Capture the dock SKU in metadata * synaptics-prometheus: Force the minor version from 0x02 to 0x01 to make sure the devices can be updated back to 0x01. * Generate a body for github releases (Fixes: #2034)- Build the package separately for openSUSE and SLE using _multibuild (jsc#SLE-11744).- Update to version 1.4.2: * vli: Add no-guid-matching for all VLI devices * vli: Remove a copy-and-paste mistake * Add two OUI quirks * ata: Add WD OUI quirk 000cca * synaptics-rmi: Essentially blacklist Dell K12A * dfu: Avoid communicating when bitManifestationTolerant is off * ata: Add OUI quirk for Western Digital * dfu: Support MATEKF722SE quirk * Fix various build issues with -Wdiscarded-qualifiers * thunderbolt/dell-dock: Delay activation for Thunderbolt updates * Switch the default of EnumerateAllDevices to false * Add OUI quirk for SanDisk * vli: Add two standard USB instance IDs for shared-PD devices * vli: Use GPIOB to reset the VL817 found in two Lenovo products * tpm-eventlog: Correct the display of final calculated PCRs * wacom-raw: fixup switching to bootloader mode- Update to version 1.4.1: * thunderbolt: Don't show safe mode errors for USB4 host controllers * ep963x: Various changes to make the plugin actually work on real hardware * Make tss2-esys conditional * ep963x: Remove some dead code spotted by Coverity * ccgx: Only update the FW2 partition of the ThinkPad USB-C Dock Gen2 * ccgx: Expand the FWImageType for future hardware * Allow specifying the device on the command line by GUID * Fix the DeviceID set by GetDetails * wacom-usb: Fix a theoretical buffer over-read to make GCC happy * vli: Only show the i2c devices on the USB3 hub * Allow devices to be updatable, but only when upgrading a proxy device * Reset the progressbar time estimate if the percentage is invalid * ccgx: Always report 100% when finished writing * Add a device quirk that forces an explicit device-id match * ccgx: Set the device name and summary from quirk files * vli: Only do the APP5 FW bug fix on affected hardware * vli: Show all the buffer when debugging with FWUPD_VLI_USBHUB_VERBOSE * fu-engine: Refresh device name and format before setting supported flag * Allow a device to set the logical or physical ID during ->setup() * ccgx: Split out a trivial helper to set the instance IDs * ccgx: Set the device name to be more useful * ccgx: Set the logical ID as the FwMode * ccgx: Split out a trivial function to set the version * ccgx: Do not reboot the device write after installing * ccgx: Do no show the flash parameters when unknown * Allow devices to match the proxy device by GUID * Do not skip attach() if the device is marked _WILL_DISAPPEAR * dell-dock: Port to using fu_device_get_proxy() * Allow adding a device 'proxy' device that can do actions on it * vli: Do not show the USB 2 recovery devices for USB 3 hubs * vli: Add metadata to identify which is the same physical device * uefi: correctly format firmware version of Dynabook (né Toshiba) X30, X40 and probably others * synaptics-cxaudio: Use the ->attach() device vfunc * synaptics-cxaudio: Wait for the device to reboot after writing firmware * logitech_hidpp: decrease verbosity of messages that hid++ ID is missing * Prefer to update the child first if the order is unspecified * Do not modify the device priority for child devices- Exclude fwupdate from the architectures without UEFI support.- Update to version 1.4.0: * Release fwupd 1.4.0 * Allow removing device flags from quirk files * Use black to format python source in a consistent manner * Define SOURCE_VERSION when building a package * Only set the parent when adopting children * Do not conditionalize attach() and detach() on IS_BOOTLOADER * Do not crash the daemon if a plugin does something dumb * wacom-usb: Add more sanity checks in case the daemon goes crazy * wacom-usb: Use a per-device cleanup function * Add some more device regression tests * wacom-usb: Add a lot of missing metadata about the devices * wacom-usb: Hide a lot of debugging behind FWUPD_WACOM_VERBOSE * Only auto-add counterpart GUIDs when required * ccgx: remove update message * ccgx: add parent guid for hybrid dock * ccgx: Use a smaller timeout for i2c read and write operations * ccgx: Retry the register read and write with a i2c reset * ccgx: Fix buffer overflow when reading out i2c status * ccgx: Retry the HID disconnect up to 5 times * ccgx: Show a better error message on failure * ccgx: Allow forcing firmware of the wrong app_type with fwupdtool * Modularize the hardware tests * Ignore indirect devices that replug during the composite firmware update * Export the device state as part of the D-Bus interface * Fix devices that use CounterpartGuid when more than one device is installed * Use the GUID as a fallback rather than the connection ID * ccgx: Fix critical warning on i2c write failure * logitech-hidpp: Do not add peripheral devices for receiver in BL mode * Install the installed-tests only if tests are enabled * Load the signature to get the aliased CDN-safe version of the metadata * vli: Only reboot the USB hub once * synaptics-cxaudio: Only use the PATCH2 address when the patch level is 2 * add STM32F745 stm dfuse quirk * dfu: Add a way to set the timeout from a quirk * Export the release urgency * Export the release creation time * Check the firmware requirements before adding SUPPORTED * data/motd/fwupd-refresh: Only order after network.target * ccgx: Do not add the HID device that will disconnect * ccgx: Use Silicon ID and Application type to set flash parameters * Add a new daemon configuration option to control EnumerateAllDevices * logitech_hidpp: set the bootloader protocol * Install meson from pip for LGTM * bash: add completion for fwupdtool reinstall * fu-tool: add reinstall command * fu-engine: export fu_engine_get_releases_for_device in header * vli: Wait for the VL103 to timeout to fix detach * ccgx: Show the UpdateMessage in the correct device mode * ccgx: Add extra instance IDs to match specific firmware * Use a static version number * thunderbolt: Rather than hardcoding to PCI slot numbers, use domain in GUID * Revert "thunderbolt: Create a unique GUID including Thunderbolt controller path" * dell-dock: Port to fu_device_retry() * nitrokey: Convert to use FuHidDevice * nitrokey: Port to fu_device_retry() * vli: Port to fu_device_retry() * Add fu_device_retry() helper functionality * ccgx: Implement writing firmware to flash * ccgx: Add i2c status check when reading or writing registers * ccgx: Add 5ms delay between read registers to avoid an i2c error * libfwupdplugin: Use fu_device_locker_close() * synaptics-mst: Use fu_device_locker_close() * Add fu_device_locker_close() * ccgx: Do not store the silicon ID in the image address * ccgx: Add device quirks for the Lenovo Hybrid Dock * ccgx: Switch HID mode to HPI mode at startup * ccgx: Clear the event queue when in startup * ccgx: Wait for hardware to settle when coming out of reset * ccgx: Do not mark the device as updatable when in boot mode * ccgx: Verify the firmware app type when preparing firmware * ccgx: Set the update message when running in backup firmware * ccgx: Read the FwAppType from the hardware * ccgx: Set the HPI version number for the current firmware * ccgx: Get the silicon ID to map the flash parameters * ccgx: Read the HPI device mode at startup * ccgx: Set up the HPI I²C config at startup * ccgx: Create devices when in HID and I2C modes * Add a new ChromeOS CI target to build without GPG and PKCS7 * Use Jcat files in firmware archives and for metadata - Removed fu-keyring-gpg which caused CVE-2020-10759 (boo#1172643) * csr: Allow truncated HID reads * vli: Only consider the high nibble when building the sub-version * csr: Parse the firmware as a DFU file * Add support for EP963x hardware * Add FuHidDevice abstraction * vli: Correctly attach VL103 after a firmware update * ccgx: Parse the metadata block in the firmware image * ccgx: Add a firmare parser for cyacd files * logitech: Correctly set the protocol * Add the optional device-id to the update --help output * Fix a difficult-to-trigger daemon hang when replugging devices * vli: Remove a dock device from the whitelist that is never going to be updated * vli: Add some trivial debugging to help track down a bug * vli: Never add USB hub devices that are not upgradable * uefi: Don't use shim for non-secure boot configurations * Start fwupd-activate.service after snapd.service * dfu: Actually reload the DFU device after upgrade has completed * dfu: Add one more m-stack device requiring a quirk * Apply version format to releases and devices at same time * Ensure that the DeviceID is set for child devices * Fix a daemon crash when removing children * Allow waiting for the parent device when replugging * Add fu_device_get_root() shared API * vli: Fix an error when detaching MSP430 * vli: Fix a critical warning when getting the USB speed * vli: Fix the error enum values for the MSP430 * Do not add blank lines when tokenizing Intel hex files * vli: Fix the version calculation for MSP430 * vli: Ignore one more error when attaching * vli: Always expect the VL103 header at 0x1003 or 0x4000 * vli: Do not fall back to the recovery write for usbhubs * vli: Only show the 2nd header if the device ID is valid * vli: Fix VL103 reboot from ROM mode to FW mode * vli: Add some better comments for writing GPIOs * Add a helper script to add a DFU header * Add 'firmware-convert' subcommand to fwupdtool * fu-engine: Make two passes of requirements checking * fu-engine: Copy the VersionFormat from the CAB if specified in `get-details` * Add a new plugin for CPU microcode * Don't build/install fwupdagent man page if agent build is not requested * Introduce a new VersionFormat for `hex` * Drop UEFI quirks we now inherit from metadata * ci: build Debian using libflashrom * When TPM PCR0 measurements fail, query if secure boot is available and enabled * fix fwupd.shutdown.in according to the movement of fwupdtool to bindir * ata: Add OUI quirk for Western Digital and Intel * improved fish shell completion * vli: Set the MSP430 version format to pair * Always return AppStream markup for remote agreements * ata: Add trivial OUI quirk for Micron * added completion script for fish shell * Do not fail loading in /etc/machine-id is not available * Use xb_builder_source_add_simple_adapter * Create FuCabinet and untangle a lot of legacy code * nvme: Do not try to handle integer version numbers * Allow server metadata to set the version format on some devices * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * Decouple the version format from the version itself * Add raw versions for bootloader and lowest * Allow server metadata to set the device name on some devices * Remove support for GCab less than v1.0 * fu-device-list: Check protocol before de-duping devices * Do not allow devices that have no vendor ID to be UPDATABLE * ata: Include a vendor ID for ATA hardware * ata: Switch off the verbose logging by default * Always check for PLAIN when doing vercmp() operations * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * Use the system provided flashrom on Fedora * Add a plugin vfunc to run after subclassed FuDevice creation * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * Generate an additional UEFI quirk file using the stable LVFS metadata * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Refresh fwupd-bsc1130056-change-shim-path.patch - Add new dependency: jcat- Update to version 1.3.9: * Release fwupd 1.3.9 * Always check for PLAIN when doing vercmp() operations * improved fish shell completion * vli: Set the MSP430 version format to pair * added completion script for fish shell * Always return AppStream markup for remote agreements * Do not fail loading in /etc/machine-id is not available * fu-engine: Fixup broken-ness from 0c0fada18fc9cb2a0efec351db67f0867bf045cd * Use xb_builder_source_add_simple_adapter * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * fu-device-list: Check protocol before de-duping devices * ata: Switch off the verbose logging by default * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * fu-util: fix a logic error in report uploading introduced in e076d48afb74d1447936d353f12781755f13b047 * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Update to version 1.3.8: * Release fwupd 1.3.8 * Do not use fu_common_vercmp() when the device verfmt is PLAIN * altos: Output raw buffer data when using FWUPD_ALTOS_VERBOSE * altos: Prefix an error to provide more context * altos: Add a trivial _to_string() implementation * synaptics-cxaudio: Make the verfmt match that of the existing Windows tools * synaptics-mst: Allow MST to fall back if no PCI device is marked as parent * Allow specifying a list of subsystems when setting a physical ID * synaptics-mst: Fix trivial thinko caused by the wrong dock connected * vli: Invert the logic to reboot the parent FuCliUsbhubDevice, not the child * vli: Switch around the hub tier values * uefi: Fix a build regression with Fedora 30 * logitech_hidpp: Ignore detach failures (Fixes: #1183) * logitech_hidpp: When detaching to bootloader use non-blocking IO and wait for timeout * vli: Show erase progress when doing a v2 recovery * uefi: Do not remove the 'Linux Firmware Updater' boot entry before update * uefi: Do not rewrite BootOrder in the EFI helper * vli: Add support for the PS186 device * Set up more parent devices for various Lenovo USB hubs * cxaudio: Set the update protocol to prevent a daemon warning * vli: Add support for Lenovo Modularized dock * Add an extra instance ID to disambiguate USB hubs * vli: Remove the unused tierX custom flags for each device * Revert "Correctly delete UEFI variables" * uefi: make debugging output more readable * vli: Fix a potential buffer-overflow when parsing firmware * tpm: Optimize the string parsing and fix the boolean logic * synaptics-rmi: Add a missing error enum value * synaptics-rmi: Correctly identify a checksum failure * synaptics-rmi: Fix Coverity issue that is impossible to hit in reality * solokeys: Parse old versions of the bootloader string * Add a plugin to update PD controllers by Fresco Logic * vli: Set the device progress correctly when erasing a PD device * vli: Use the correct command to get the device firmware version * vli: Correctly reset all VL100 devices * vli: Set all standalone PD devices to not do SPI auto-detection * vli: Mark standalone PD devices as updatable * vli: Set the protocol for FuVliUsbhubPdDevice types * Support the new gnuefi file locations * Cleanup ancient fwupdate-* EFI variables too (Fixes: #1739) * Detect kernel lockdown status * vli: Add the DEV instance ID to all devices * tpm-eventlog: Replay the TPM event log to get the PCRx values * tpm-eventlog: Store the eventlog hashes in binary form - Update to version 1.3.7: * Release fwupd 1.3.7 * Correctly delete UEFI variables * ci: allow working with podman w/o aliases * ci: fedora: force correct rpm package version * src: fu-engine: check version was updated by checking version * Correctly import PKCS-7 remote metadata * Add 'refresh' to fwupdtool * Add 'get-remotes' to fwupdtool * Generate a win32 setup binary * Fix display of UTF-8 characters on Windows * Move MOTD population into the daemon * fu-util: Discourage metadata refreshes more than once per day * Disable the battery percentage checks if UPower is unavailable * Allow getting the list of updates in JSON format from fwupdagent * Revert "trivial: Attempt to fix Debian CI" * fu-remote-list: emit a changed signal when modifying a remote * synaptics-mst: Skip self tests for systems with amdgpu * Allow applying all releases to get to a target version * Split up fu_engine_install() into two halves * logitech_hidpp: use the correct timeout for IO channel writes * Allow quirking devices that always require a version check * Shut down automatically when there is system memory pressure * Show the device parent if there is an interesting child * Allow the client to get the list of FwupdDevice children * Set the FwupdDevice parents in fwupdtool * Don't always get the vendor ID for udev devices using the parent * Add a runtime warning when adding a device without an vendor-id or protocol set * vli: Set more of the firmware max sizes automatically * vli: Add a SpiAutoDetect quirk for some of the PD devices * vli: Use a different protocol ID for i2c devices * vli: Add support for standalone Single PD devices * vli: Move generic SPI functionality into the FuVliDevice base class * vli: Remove the PD emulation code * vli: Use a more standard GUID for the child i²c and shared SPI devices * vli: Allow setting the device kind from a quirk * vli: Make more function names match the docs * vli: Move the SPI command quirking from FuVliUsbhubDevice down to FuVliDevice * vli: Rename FuVliUsbhubPdFirmware to FuVliPdFirmware * vli: Allow the device to specify the PD firmware header offset * vli: Add a FuVliDevice as a subclass to FuVliUsbhubDevice * vli: Define the device GType in the quirk file * vli: Move the CRC calculations out of usbhub scope * vli: Have one 'DeviceKind' for all objects * vli: Rename the `vli_usbhub` plugin to `vli` * Capitalize GNOME - package has grown a few new binaries: fwupdagent, fwupdate, fwupdtool and a tpm event debugging tool, that is packaged separately: fwupdtpmevlog- Drop docbook-utils-minimal build dependency, manpages are generated with gtk-doc.- Update to version 1.3.6: * plugins/coreboot: Add missing fu_hash dependency * trivial: synaptics-cxaudio: Add Google type C <-> 3.5mm adapter * fu-engine: don't expose bootloader version errors to users * trivial: dell-dock: drop unused quirk keyx * trivial: rename synapticsmst to synaptics-mst * trivial: actually set vendor ID for synaptics * fu-remote-list: Drop fallback path behavior * libfwupdplugin: Make sure systemd created environment variables exist * trivial: fu-remotes-list: drop usage of `FU_SELF_TEST_REMOTES_DIR` * trivial: synaptics-rmi: hardcode Vendor string * trivial: Set vendor ID for Dell WD19 to USB:0x413C (Fixes: #1653) * trivial: Document the use of vendor-id in each plugin * superio: Use the baseboard vendor as the vendor ID * uefi: Use the BIOS vendor as the vendor ID * coreboot: Use the BIOS vendor as the vendor ID * flashrom: Use the BIOS vendor as the vendor ID * dell: Hardcode a plausible vendor ID * emmc: Set the correct vendor ID prefix * fu-util-common: correct the default prompt for reboot/shutdown (Fixes: #1617) * Split out the remote loading from FuConfig * vli-usbhub: Fix the quirk for the legacy VIA 813 chip * Clarify error messages when no upgrades available * trivial: Don't handle a vendor-id requirement error that cannot happen * Only check the vendor ID if the device has one set * fu-install-task: Enforce that device protocol matches metadata * Add a new plugin that can parse the TPM event log * Allow other plugins to contribute report metadata * trivial: dell: hardcode the physical device ID for tpm to match the tpm plugin * Add a new plugin that exposes the system TPM device firmware version * Add fu_udev_device_set_flags() * trivial: Render large values of VersionRaw in a more portable way * trivial: wacom-raw: mark all Moffett SKUs as self recovery * Throw exit status 0 (instead of 2) if there is no firmware to be updated * Add a `dell-bios` version format * Add support for multiple LVFS::VersionFormat tags * Do not do semver conversion in fu_common_vercmp() * trivial: Deprecate fu_common_version_parse() * trivial: Support 'plain' in fu_common_version_from_uintXX() * Add the sysfs 'description' as the one-line device summary * trivial: Also print the parent keys when using FU_UDEV_DEVICE_DEBUG * trivial: Add fu_common_version_from_uint64() * trivial: Convert the VersionRaw value to a uint64_t for future use * Allow building on Windows with MinGW * synaptics-prometheus: Allow incremental version major and minor number * Replace 'scheduing' with 'scheduling' * Export the raw device version to the client --verbose output * trivial: Only dlopen the test plugin once * Export the device protocol to the client --verbose output * trivial: installed-tests: try to display journal for failed tests * trivial: ci: debian: enable verbose daemon logging for failure analysis * trivial: installed-tests: explicitly choose webcam device ID * trivial: debian: remove obj-* built files to fix back to back builds * trivial: ci: don't let bad symlinks cause debian build failures * trivial: debian: correct a dependency for libfwupdplugin-dev - Changes from version 1.3.5: * plugins: Fix potential use of NULL pointer in fu_dell_dock_mst_write_register * Fix shifting integer by more than 31 in fu_util_filter_device * synaptics-prometheus: Reload the device version after IOTA update * synaptics-prometheus: Reload the device version after update * trivial: wacom: remove coretronic config from Moffett scope * trivial: Fix a NULL/FALSE confusion * trivial: Add a BR for Fedora * trivial: Fix coreboot commit to fix CI * trivial: libfwupdplugin: clarify name of self test * plugins/coreboot: Improve version detection * plugins/coreboot: Get rid of FU_HWIDS_KEY_BIOS_VENDOR in coldplug * trivial: Move progressbar out of libfwupdplugin * trivial: Unexport fu_test_get_filename() * trivial: Unexport fu_test_compare_lines() * trivial: Unexport fu_test_loop_run_with_timeout() * trivial: Do not include non-introspectable functions in the GIR * trivial: Fix up a few introspection problems in FwupdPlugin * trivial: Include the Fwupd GIR in the FwupdPLugin GIR * trivial: Never add duplicate symbols to the map file * trivial: Properly namespace the defines in the exported header * Install development files for libfwupdplugin * Convert libfwupdprivate to a shared library libfwupdplugin * trivial: Allow building GCab from a subpackage * trivial: Fix under-include to define O_RDONLY * trivial: Allow compiling without * trivial: Do not use FuProgressbar in dfu-tool * synaptics-prometheus: Manually set the bootloader mode when attaching * trivial: Split out a new helper funtion * trivial: Add some optional debugging when hotplugging devices * trivial: Include the correct header for S_IRWXU * Always use the more portable 3-arg form for open() * trivial: Untangle FuHistory from FuPlugin * trivial: Allow compiling without * Revert "synaptics-rmi: Use the build ID as the version number to match the vendor tool" * Add missing documentation from the plugin interface * trivial: fu-udev-device: remove a prototype that was missed in b3d4d2ff * trivial: add missing gtk-doc fields for many files in src/ * trivial: fix compile failure without gudev * synaptics-prometheus: Mirror the _IS_BOOTLOADER from device to config * Allow setting the device flags using GObject properties * vli_usbhub: Set the composite parent at construction time * synaptics-prometheus: Set the composite parent at construction time * Allow plugins to set the parent during construction * vli-usbhub: Whitelist the PD and I²C devices * Set the protocol per-device not per-plugin * synaptics-rmi: Use the build ID as the version number to match the vendor tool * Create a REV_00 instance ID as this may be what the vendor needs to target * fu-util-common: Invert default behavior for reboot and shutdown prompts * trivial: fu-plugin-vfuncs: Add GTK documentation for all vfuncs * Make gudev a compile-time option * trivial: Set the offline trigger using an environment variable * trivial: ci: pull lintian from unstable for now. * trivial: stop including fu-hash.h as part of fu-plugin-vfuncs.h * Fix shebangs on scripts * trivial: Use prefixes for DATADIR in config.h for portability * Allow compiling GUsb as a subproject * trivial: fu-udev-device: add a to_string func for debugging * trivial: Don't assume that plugins end in .so * trivial: optionrom: remove unneeded includes * trivial: debian: ci: ignore library-not-linked-against-libc for more * trivial: remove version-format.md * trivial: Allow compiling without pwrite() * trivial: Allow compiling without * trivial: Allow compiling without realpath() * trivial: Allow compiling without HAVE_LC_MESSAGES * trivial: Allow compiling without getuid() * trivial: Allow compiling without * trivial: Allow compiling without * trivial: Allow compiling without * Ensure the _get_type() gets the same ABI version as the constructor * Use the correct unlocker when using GRWLock * trivial: plugins: only build coreboot when option set * fwupdtool: don't show a warning when calling `get-plugins` - Changes from version 1.3.4: * trivial: Don't force specific linker flash when cross building * dell: Use the more portable g_usleep() * trivial: Fix unused header includes * vli-usbhub: Make erasing less verbose and writing more obvious * vli-usbhub: Correctly print the 24-bit USB3 offset * vli-usbhub: Print the PD firmware offset and size for debugging * vli-usbhub: Open the parent device before attempting to read or write from the child * vli-usbhub: Set the install duration for the PD device * trivial: Fix a failed error prefix string * trivial: wacom-raw: Remove embedded from device name * wacom-raw: Correct HWID support * uefi: Just use a uint16_t for BootNext processing * uefi: Use a simpler entries set algorithm * vli-usbhub: Add support for writing using I2C passthru * vli-usbhub: Support updating PD devices that share the hub flash * vli-usbhub: Support the PD file format * trivial: uefi: correct a NULL pointer dereference * uefi: fall back to `ID_LIKE` when the path for `ID` doesn't exist (Fixes:# 1566) * uefi: Make generate_binary.sh more robust * Tokenize the Intel Hex file before parsing * trivial: Detect the USB version automatically * trivial: fu-util/fu-tool: explicitly block unsupported flags * Add support for matching requirements on device parents * Skip cleanup after device is done updating if `will-disappear` is set (Fixes: #1529) * efi: use a wildcard section copy for final EFI generation * modem-manager: explicitly use plain version format * modem-manager: add quirks for the Foxconn T77W968 modules * Allows confined snaps to activate fwupd via D-Bus * trivial: thunderbolt: clarify error message * Add a new property `Interactive` to the daemon * trivial: contrib/get-version.py: require git less hard * superio: Never read from port offset zero * superio: Fix regression when coldplugging superio devices * trivial: Fix Fedora CI build * trivial: Fix the autobuilt spec file with the new tarball version * Dynamically determine release version * trivial: synapticmst: allow missing `/proc/modules` * synapticsmst: filter invalid chip IDs * trivial: Provide some defines for common image names * Allow aborting early when using fu_archive_iterate() * Add fu_firmware_image_set_version() for future use * modem-manager: increase re-enumeration delay to 20000ms * modem-manager: add counterpart GUID for the DW5821e/eSIM * Add versions formats for the Microsoft Surface devices * usb: make loading vendor/product/serial strings non-fatal * trivial: Fix the protocol ID for VLI usbhub devices * trivial: wacom-raw: add more device IDs for Dell devices * trivial: contrib: don't require TSS for debian archs without EFI * fu-udev-device: Adjust bounds checking to be safer * fu-udev-device: Don't assume all devices have `device_file` * synaptics-rmi: correct an error cleaning up on probe * trivial: fu-udev-device: add some safety checks for fd * udev-device: fix offset of vendor id of hidraw devices * flashrom: switch to upstream source * trivial: fu-plugin: only show an error once "failed to open plugin" was being prefixed twice * trivial: debian: only use mingw-w64-tools in archs with UEFI plugin * fastboot: Fix a regression when updating modem firmware * trivial: conflict with old unifying plugin * Rename unifying plugin to logitech-hidpp (Fixes: #1329) * Add a new contrib script for installing a Dell BIOS from an EXE file * trivial: add-capsule-header: rename to make it easier to import * trivial: simple_client: make it easier to reuse code * trivial: firmware-packager: make it easier to reuse code * trivial: add-capsule-header: make it actually work * trivial: fix some gtkdoc sections * Bump the required gudev version * trivial: Fix a compile error with older versions of gudev * trivial: wacom: add vid/pid for panels in Moffett * trivial: post release version bump - Changes from version 1.3.3 * unifying: notify users to replug when using dfu control (Fixes: #1383) * trivial: 8bitdo: set a transient failure while waiting for user action * libfwupd: Add a new error type for user action needed * trivial: 8bitdo: show the same message for SN30pro and SN30pro+ * trivial: Fix up some typos from codespell * trivial: Ensure config.h is included in all source files * trivial: Fix up some NULL/FALSE confusion * trivial: Add all the _LAST enums that shouldn't be checked for ABI * trivial: Fix a typo that means that UEFI results were never cleared * Always report the update-error correctly for multiple updates * trivial: Fix fwupdmgr get-history if the firmware was not installed from the LVFS * trivial: Do not emit a warning if a child has no version number * Move the file descriptor lifecycle into FuUdevDevice * trivial: Fix some GtkDoc annotations * ebitdo: Modernize the plugin to use FuFirmware * nitrokey: Use fu_common_dump_raw() when debugging * thunderbolt: Create a unique GUID including Thunderbolt controller path * Use device safety flags to show prompts before installing updates * trivial: Use the new possible_plugin support for USB devices too * jabra: Move the Jabra-specific detach out into its own plugin * Ensure the device is open when doing the subclassed prepare() and cleanup() * vli-usbhub: Add support for updating V2 devices * Allow verifying the device image itself from fwupdtool * Use XMLb to query quirks * trivial: ci: disable pulling libxmlb from unstable * synaptics-prometheus: Don't add a config-subdevice in bootloader mode * dfu: Use the VID/PID to identify devices without download capability in runtime * trivial: debian: remove some unneeded lintian * trivial: debian: bump compat version * ebitdo: Add SN30Pro+ to recognized quirk list (Fixes: #1503) * dfu: Add several quirks for Realtek camera hardware * dfu: Always mark devices as UPDATABLE * uefi: use `genpeimg` to mark ASLR and DP/NX on EFI binary * trivial: solokey: correct a typo * trivial: fu-util: fix typo * uefi: rework ESP path detection and lifecycle * trivial: uefi: show more metadata in to_string method * trivial: fu-device: add new method to remove metadata * Add a plugin to update VIA USB hub hardware * trivial: Add fu_common_read_uint8_safe() * trivial: Fix two typos in fu_common_read_uint16_safe() * solokey: Allow parsing firmware with fwupdtool * Allow fwupdtool to dump details of common firmware formats * trivial: Do not do system coldplug when using FU_ENGINE_LOAD_FLAG_NO_ENUMERATE * trivial: fu-self-test: set polling self tests to slow * trivial: fu-tool: Allow `detach`/`attach` to prompt for device * Strip trailing whitespace from USB descriptors * trivial: Add fu_common_read_uint16_safe() * trivial: Add version to the FuFirmware->to_string() output * Add fu_firmware_set_version() * Add a systemd preset file for `fwupd-refresh.service` * trivial: dell: work around a memory leak caught by address sanitizer * ebitdo: if the device has the will disappear flag, don't wait for ack (Fixes: #994) * Add a new plugin for working with eMMC devices (Fixes: #1455) * fu-engine: Check multiple plugins if quirks match * trivial: don't try to enable LVFS from systemd * trivial: coreboot: fix a clang compiler error * fu-util: Add user friendly strings for all device flags * Add new device flags indicating update resilience * plugins: Add coreboot plugin * fu-plugin: Add fu_plugin_get_hwid_replace_value * trivial: Increase verbosity when actually updating devices * trivial: Allow plugins to use WAIT_FOR_REPLUG in prepare and cleanup * Add FuDevice->prepare() and FuDevice->cleanup() vfuncs for future use * dfu: Implement FuDevice->to_string() * trivial: colorhug: fix a crash that occurs when flashing sometimes * trivial: fu-util: break out of automatic reports if one is not automatic * thunderbolt: some more clarifications when using ICL * trivial: fwupd-refresh: activate motd if using systemd v243 or later * trivial: fwupd-refresh: allow exit code 2 for success * trivial: synaptics-cxaudio: Add Google Pixel buds * trivial: arch: ci: Wait some time for tpm_server to start up * Allow a custom FuFirmwareImage->write() in superclassed objects * dfu: Remove two completely unused helpers * dfu: Make DfuFirmware derive from FuFirmware * dfu: Make DfuImage derive from FuFirmwareImage * dfu: Remove private headers that do not need to exist * Fix device flag filtering * trivial: fu-engine: Don't compare device and content checksums * fu-engine: Read all releases and convert versions when comparing * Add new flags `can-verify` and `can-verify-image` * trivial: make verify and verify-update safer * trivial: test: add checksums for "stock" 1.2.2 * trivial: fu-udev-device: use parent udev device to indicate `internal` * trivial: fix TPM2 simulator tests for arch * trivial: uefi: don't add PCRs with all 0's * trivial: Fix a recent regression causing a double-free * synaptics-cxaudio: Support the ThinkPad USB-C Dock Gen2 * trivial: fu-util: add some extra checks around automatic reports * trivial: fu-tool: typo * fu-systemd: Use correct method for stopping units. * trivial: fu-udev-device: Use ID_PCI_CLASS_FROM_DATABASE if name not set * trivial: fu-plugin: quiet down debug output for optionrom plugin * 8bitdo: use will-disappear flag for sf30/sn30 controllers (Fixes: #783) * trivial: ebitdo: don't dump out firmware header unless plugin verbose * trivial: ebitdo: don't use local errors when writing firmware * Add a new device flag for indicating device won't come back * wacom-emr: Fix a regression for EMR devices * Add a generic DFU firmware object for plugins to use * dfu: Use FwupdInstallFlags rather than a DFU-specific version * dfu: Remove functionality for modifying DfuSe files * dfu: Remove functionality you can do now with fwupdtool * dfu: Remove the merge command as it's unused and broken * trivial: Add fu_firmware_parse_file() helper for future use * trivial: Remove the fuzzing details for DfuPatch * trivial: Add klass->to_string for superclassed FuFirmwareImage objects * dfu: Remove DfuPatch as no vendor actually uses this * dfu: Don't wrap provided VID-PID functions * dfu: Use the standard FuDevice custom flags functionality * dfu: Use klass_device->write_firmware() directly * dfu: Use the generic fu_plugin_usb_device_added() function * dfu: Use daemon flags to ignore devices rather than a special flag * dfu: Set the device state directly to avoid proxying signals * dfu: Use the built-in detach() and attach() vfuncs * Read firmware back from the device as a FuFirmware * dfu: Remove a pointless function * dfu: Remove support for the Metadata Store Proposal * dfu: Remove XTEA support * dfu: Remove the SREC and IHEX parsing out of the DFU plugin * ebitdo: Use klass_device->write_firmware like other plugins * trivial: Remove G_BEGIN_DECLS from all private headers * Remove FU_PLUGIN_RULE_REQUIRES_QUIRK as all the plugins now use it * Set all FuUdevDevice plugins to use FU_QUIRKS_PLUGIN * thunderbolt: recognize new 'generation' sysfs attribute * Rename and modernize the udev plugin * synaptics-rmi: Also add the product ID as a GUID without the minor version * synaptics-rmi: Correctly set the payload length rather than hardcoding it * synaptics-rmi: Write the core config correctly * synaptics-rmi: Decode BL7 status failures as actual errors * synaptics-rmi: Add some trivial debugging to help debug a write problem * trivial: uefi: Make efivarvs errors clearer (Fixes: 1330) * trivial: uefi: don't prefix efivar errors * trivial: Remove some now-unused vfuncs * altos: Modernize the plugin to simplify it * Create the custom plugin GType in common code * Reduce more boilerplate in plugins * synaptics-rmi: Check the correct register when querying bootloader mode * trivial: fu-engine: fix never reporting remotes * trivial: fu-util: don't show warnings for no reports to upload * trivial: debian: remove more conffiles from transitions (Closes: #932617) * trivial: debian/control*: Update for fwupdate transition * trivial: Fix a tiny memory leak when starting the daemon * modem-manager: Fix a tiny memory leak when starting the daemon * synaptics-rmi: Copy the behavior of rmi4utils for BL7 detach * synaptics-rmi: Simplify fu_synaptics_rmi_device_read() * synaptics-rmi: Set the version after ->setup has run * synaptics-rmi: Use the correct mask when getting the bootloader mode on BL7 * syanptics-rmi: The build_id is 3 bytes long, not 2 * synaptics-rmi: Read the config partition the same as rmi4utils * Provide a default implementation of common FuDevice actions * thunderbolt-power: avoid checking for bolt support * synaptics-rmi: Add some debugging for BL7 devices * Fix usage of incorrect type for return value * synaptics-rmi: Do as little as possible in device setup * synaptics-rmi: Speed up reading the PDT from 900ms to 30ms * fu-util: add support for a reinstall command * trivial: fu-util/fu-tool: update re-install help text to reinstall * trivial: fu-util: remove double printed message about succesful firmware update * trivial: fu-util: show no updatable devices error for update command * synaptics-rmi: Ignore the ATTN reports from the hardware when reading DATA * synaptics-rmi: Move the fuzzing instructions to the toplevel README * Fuzz the SREC and IHEX file parsers once more * Use parallel fuzzing for the SMBIOS checks too * synaptics-rmi: Fix the packing of the partition table * Add a plugin to update Synaptics RMI4 devices * trivial: Add a parallel fuzzing script * trivial: fu-util: output newline after prompt. * trivial: fix %u output in report upload * Add a --no-domain logging option * trivial: Fix compiler warning for impossible-to-hit condition * Add support for automatically uploading reports * trivial: motd: disable updating motd for now * trivial: fwupd-refresh: fix a clash with fwupd.service (Closes: #941360) * trivial: Fix Fedora CI * trivial: fu-udev-device: fix some assertions * Search up the tree for a vendor name rather than (ab)using the HID_NAME * Add some success messages when CLI tasks have completed * trivial: Put the boolean prompt on the same line as the text * Never show LicenseRef-proprietary to the end user * trivial: snap: correct install hook root directory * Export the instructions for detaching the device * uefi: detect unmounted ESP partitions (Fixes: #1405) * uefi: stop recording efibootmgr output after flash * trivial: post release version bump - Changes from version 1.3.2: * Add support for '' to disambiguate some firmware * thelio-io: Add a plugin to detach the Thelio IO board * trivial: uefi, dell: skip self tests with TPM if non-root (Fixes: #1396) * trivial: dell: quiet the TSS output * trivial: uefi: allow forcing to TPM2 via environment variable * Do not ask the user to upload a report if ReportURI is not set * Do not enumerate physical devices when running the internal self tests * trivial: libfwupd: skip tests if machine-id is empty too * Add a new plugin to update Conexant audio devices * Export the salted machine ID as a daemon property * Fall back to /var/lib/dbus/machine-id when required * trivial: add stalebot (Fixes: #1393) * trivial: dell-dock: correct another write_size error * Align the key values to the text *width* not the number of bytes * trivial: Move dbus directory location for snap too * trivial: Fix some NULL/FALSE confusion * synaptics-prometheus: Fix tiny memory leak when using FuSynapromConfig * trivial: Fix tiny memory leak when using FuSrecFirmware * snap: switch to core18 * trivial: Return the correct property when getting the host product * trivial: fu-util-common: fix description wrapping (Fixes: #1378) * fu-util/fu-tool: Map out changelogs from remotes * fu-util/fu-tool: Better display historical information * fu-history: Update device_modified in sql database during updates * unifying: Use the instance ID to check for supported devices * unifying: Ensure HID++ v2.0 peripheral devices get scanned by the plugin * trivial: Add some more defines to the srec parser * trivial: fix wget command in fu-tool.c * Allow parsing a raw SREC file * trivial: wacom: Add support for second vendor ID * uefi, dell-esrt: Show firmware version when capsule updates unavailable * Add some more debugging to the SREC and IHEX parsers * Print the instance IDs if the GUIDs are unconverted * Add fu_common_bytes_compare_raw() for future usage * Call the set_quirk_kv() vfunc for the superclassed object * uefi: make the TPM optional for runtime again (Fixes: #1362) * trivial: uefi: Make the TCTI output less verbose * Support in AppStream metadata * Include all GUIDs when uploading a report * Do not crash when starting tpm2-abrmd * trivial: Update DBus conf path for example Fedora package * Move D-Bus conf file to datadir/dbus-1/system.d * trivial: Add fu_io_channel_write_byte_array() for future use * trivial: post release version bump - Package new sub-packages typelib-1_0-FwupdPlugin-1_0 and libfwupdplugin1.- Fix file list- Update to version 1.3.1: (jsc#SLE-10751) * Allow disabling all plugins * trivial: Specify the tpm2-tss-devel version in the example spec file * Move to CI Fedora 30 * modem-manager: Fix two build warnings on Fedora 30 * synapticsmst: Add another name quirk for the ThinkPad USB-C Dock * Re-introduce GUID support to fwupdmgr and fwupdtool * uefi-recovery: Add a plugin to add a fake ESRT entry for device recovery * Add a DMI quirk for the Minnowboard Turbot * trivial: Make it easy to disable or enable libflashrom for distros * trivial: Don't use Recommends for RHEL 7 * unifying: fix timeout metadata * ci: arch: minor improvements * unifying: fix timeout * Allow disabling SSL strict mode for broken corporate proxies * trivial: Allow ignoring the daemon version check by using --force * Try to only show DMI product name once * trivial: fu-util-common: Show unknown devices as interesting devices * dell: Use TSS to query and build TPM vendor strings for GUIDs * trivial: dell: show reasons for lack of updates in `UpdateError` * fu-util-common: strip all trailing whitespace in XML description * trivial: fu-common: match all whitespace not just ' ' in `fu_common_strstrip` * fu-util: show release output in get-details again * unifying: use fu_firmware_strparse_uint16 to read be 16bit values * unifying: fix incomplete hex file parsing * fu-util/fu-tool: Print devices, remotes, releases using a tree * Add aliases for `get-upgrades` and `upgrade` * trivial: UEFI skip self tests if library fails to initialize * libfwupd: Add a new private function `fwupd_remote_set_remotes_dir` * trivial: add libtss2-dev into debian/control (Closes: #1324) * trivial: Fix up the GtkDoc Since lines for API only available in 1.3.x * trivial: Post branch version bump * thunderbolt: Add support for kernel safety checks (Fixes: #1312) * Include the kernel release as a runtime version * trivial: fu-util: Drop GUID support from get-devices * synapticsmst: Partially rewrite the plugin (Fixes #1105) * Remove replug flag after the device comes back from reboot * trivial: Fix running the tests on devices with the TPM in v1.2 mode * trivial: fu-util-common: more cleanup related to topology * trivial: fu-util: cleanup fwupdmgr get-details output * trivial: Don't use topology printing in --verbose mode * Make get-devices and get-topology aliases for one another * trivial: Adjust daemon device sorting * Make get-topology more useful by showing all information * trivial: Fix fu_common_string_append_kv() to align properly with idx > 0 * trivial: dell-dock: correct an error preventing write_size from being set * trivial: Do not warn about deprecated declarations * trivial: Update BRs for the example Fedora package * uefi: add test for TPM 2.0 PCR read function * uefi: use tpm2-tss library to read PCR values * fu-common: Use environment variables for systemd managed directories * Use more systemd directives for directories * trivial: fu-util: fix debug output for devices * Allow turning off the timestamp prefix for debugging * Add a ->udev_device_changed plugin vfunc * Add fu_device_rescan() and a FuDevice->rescan() vfunc * Remove the duplicate files in meson.build * Hash the source files when generating the daemon hash * Split up source files in the build script * uefi: add support for tpm2-tools 4.X * trivial: plugins: clarify stance on afuefi.efi * trivial: plugins/: Update README * trivial: disable gtkdoc by default * trivial: update references of hughsie/fwupd to fwupd/fwupd * Publish docs to fwupd.github.io using CircelCI * Add support to integrate into the motd (Fixes: #1270) * Simplify get-devices output to not show un-useful fields * fu-engine/fu-config: Reload metadata store when configuration changes * trivial: If no devices support updates, show messaging (Closes: #1295) * trivial: uefi: set vendor name for system firwmare from DMI data * unifying: update Solaar url * thunderbolt: Fix logic to work properly with ICL thunderbolt controller * Add fu_udev_device_get_device_file() helper * trivial: Fix regression when using fu_device_incorporate() * trivial: Fix a potential crash when using FuPlugin in the self tests * synapticsmst: Make FuSynapticsmstConnection an actual GObject * synapticsmst: Use the same style as other plugins * trivial: Add some helper functions for GByteArray * Do not use FuDevice metadata for the physical and logical IDs * Use fu_common_string_append_kv() in subclassed device * synapticsmst: Use G_DECLARE_FINAL_TYPE to simplify the object * synapticsmst: Add a SynapticsMSTBoardID for another Lenovo dock * trivial: remove unnecessary CUSTOMERID_DELL define * synapticsmst: Add a SynapticsMSTBoardID for a Lenovo dock * synapticsmst: Display the board ID in non-hex form in the error message * synapticsmst: Use a more suitable icon for the device * trivial: Remove unused variable * Never use memcpy() in a possibly unsafe way * Add a ->to_string() vfunc to FuFirmware * Use FuFirmware as a container for firmware images * Allow filtering devices when using the command line tools * Be more accepting when trying to recover a failed database migration * trivial: Add translation for X-ThunderboltController * trivial: fixup standalone installer * modem-manager: add counterpart GUID for the DW5821e * solokey: Release the interface and rebind the kernel driver on close * fu-tool: Port ability to update a single device from fwupdmgr * uefi: Actually write the new device path if different than before * Allow setting custom flags when using fwupdate * trivial: Do not show a critical warning if no firmware is specified * trivial: Fix overzealous search-replace action in user string * Verify we don't break the ABI * Fix a crash when stopping the fwupd service * Relax the certificate time checks in the self tests for the legacy certificate * trivial: add cache directory into systemd unit rw paths * Never show AppStream markup on the console * Do not segfault when trying to quit the downgrade selection * trivial: Update icons for Thunderbolt and MST devices * Add support for the SoloKey Secure * trivial: Allow a device to *clear* a firmware version * trivial: debian: For signed package fill out Built-Using (Closes: #932757) * Allow specifying GUID to check any version exists * trivial: post release version bump * Release fwupd 1.2.10 * Disable the flashrom plugin by default * trivial: thunderbolt: catch failure setting up device * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using --plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * trivial: uefi: use UEFI-dummy for device ID instead of just uefi * trivial: fix error handling for non UEFI case (#1220) * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * trivial: ci: debian: Only turn on flashrom when running CI * trivial: Fix typos in error messages * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * trivial: Fix the version script to pick up boxed types * trivial: Correctly order the map entries according to vercmp rules * trivial: Fix pylint issue in the version script * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * Revert "Allow SuperIO updates to be done live" * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * trivial: uefi: use the path for efibootmgr that was detected * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * trivial: Add some parameter guards to FuDevice * trivial: snap: make polkit directories if they don't exist (Fixes: #1205) * trivial: fu-main: clarify missing PK file error * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * trivial: circleci: try to fix automatic snap deployment * Allow SuperIO updates to be done live * fu-util-common: Support empty proxy strings (Fixes: #1199) * trivial: uefi: clarify error message * trivial: Fix non-systemd build * trivial: Sync example spec file with downstream * trivial: post release version bump - Drop fwupd-bsc1143905-hash-the-source-files.patch: Applied upstream. - Add pkgconfig(tss2-esys) BuildRequires: New dependency. - Add gtk-doc BuildRequires and pass gtkdoc=true to meson, build api docs even when using source service.- Add fwupd-bsc1143905-hash-the-source-files.patch to hash the source files instead of libfwupdprivate.a to avoid the checksum change due to the random naming LTO profile sections (bsc#1143905)- Update to version 1.2.10: * Disable the flashrom plugin by default * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using - -plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * fu-util-common: Support empty proxy strings (Fixes: #1199) - Add python3-setuptools to BuildRequires for generate-version-script.py- Update to version 1.2.9: * Release fwupd 1.2.9 * trivial: Add two new translatable strings for new category types * Check if the system is offline during install, rather than at startup * Prompt the user to shutdown if requried when installing by ID * Use the correct file extension for the offline updates cache * trivial: Allow using --force to use the wrong daemon version * trivial: Display the correct expected command * standalone-installer: Be smarter about existing installed fwupd * Add a plugin to update Synaptics Prometheus fingerprint readers * trivial: standalone-installer: rename uninstall argument to cleanup * fu-util: Check the daemon version is at least the client version * fu-util: Check that daemon is started by expected unit * fu-util-common: when stopping a daemon, check for snap too * Allow using --force to trigger a duplicate offline update * trivial: Allow using FuUsbDevice without a GUsbDevice * trivial: Copy the icons if unset for the device child * trivial: Copy the physical ID if unset for the device child * trivial: Ensure the parent ID is up to date if the device ID changes * trivial: Fix typo when setting the parent ID * trivial: Disable the flatpak CI build * Allow handling FORCE for devices that subclass FuDevice * uefi: Fix a libasan failure when reading a UEFI variable * trivial: Fix a memory leak found using libasan * trivial: Fix an libasan failure in the dell plugin * trivial: Fix some dead code spotted by coverity * trivial: Fix a typo spotted by coverity * trivial: Fix a missing config.h include in a new source file * Dynamically read path to use for /system-update * Display the remote warning on the console in an easy-to-read way * ata: Set version format to plain for devices obtained from udev * trivial: Only apply SmbiosManufacturer to release version for internal * trivial: Fix two bugs in the hardware self tests script * Never guess the version format from the version string * Only force a semver when the device opts-in * Export the version-format to clients * Add missing gtk-doc documentation * dfu: Add some trivial, but useful, debugging for AVR DFU devices * dfu: Correctly identify DFU firmware that starts at offset zero * dfu: Don't keep showing trivial debug output * dfu: Reset the forced version during attach and detach * ata/nvme: For devices running Dell firmware, set `VersionFormat` (Fixes: #1169) * fu-engine: Check if VersionFormat is ambiguous when adding devices * trivial: Fix fwupdate --apply * Only use class-based instance IDs for quirk matching * trivial: dell-dock: set minimum board to 6 * trivial: post release version bump- Update to version 1.2.8: * Don't upload reports when the user has configured their system in a broken way * Allow setting the daemon verbose domains at runtime * Allow fwupdmgr to modify the daemon config * Do not compare version formats when the release format is unknown * Do not fall back integers to a plain version format * Use the device version format when converting the release version * Set the VersionFormat using the metadata or the UEFI quirk - Changes from version 1.2.7: * l10n: Create Lithuanian translation file * l10n: Update LINGUAS * Updated: Add support for 8BitDo M30. * modem-manager: increase the timeout to wait for modem after uninhibited * modem-manager: implement qmi pdc active config selection as attach() * fu-engine: When removing activation flag match the correct version * Require --force to install a release with a different version format * Match the old or new version number when setting NEEDS_REBOOT * Make an error message clearer when there are no updates available * Add support for the not-child extension from Logitech * thunderbolt: Set require-ac for Thunderbolt devices (Fixes: gh#hughsie/fwupd#1142) * Fix some typos spotted using codespell * Add a component categories to express the firmware type * fu-tool: Port get-history command to fwupdtool * Recreate the history database if migration failed * Move the core built-in 'fwupd' remote over to the dell-esrt plugin * snap: Add a custom systemd unit to call activation on shutdown (Fixes: gh#hughsie/fwupd#1125) * ata: Flush cache before standby and activate * synapticsmst: blacklist plugin when using amdgpu (Fixes: gh#hughsie/fwupd#1121) * uefi: add a new option to specify the os name * Return the newest device when using fu_history_get_device_by_id() * uefi: More carefully check the output from tpm2_pcrlist * uefi: Don't overwrite CustomFlags if set from a quirk * Shut down the daemon if the on-disk binary is replaced * ata: Correct activation functionality * Fix version comparisons after reboot for some formats * fu-tool: save history from stuff installed with `fwupdtool` - Changes from version 1.2.6: * ata: send ATA standby immediate when activating firmware * offline: Be more graceful when dealing with Plymouth failures * Save the new version in the history database for offline updates * Show the DeviceID when showing the updates list * Allow forcing an offline-only update on a live system using --force * Do not schedule an update on battery power if it requires AC power * superio: Add InstallDuration default value * superio: Add support for writing new e-flash contents * superio: Fix reading the attestation checksum * superio: Add support for reading the device checksum * superio: Use the chipset ID in the device name * superio: Move the device flush before getting the register map * superio: Move all the IT89xx code to a subclassed device object * superio: Move all the IT85xx code to a subclassed device object * superio: Split and export fu_superio_device_ec_writeX() * superio: Remove the port from fu_superio_device_ec_read() * superio: Move the register read/write into the FuSuperioDevice object * superio: Check the IOBAD0 is usable during setup * superio: Use fu_device_set_firmware_size() * superio: Move some constants out to the common header * superio: Use GObject properties in FuSuperioDevice * superio: Convert FuSuperioDevice to be derivable * Update Plymouth when updating pending firmware * Ask to reboot after scheduling an offline firmware update * Do not fail when scheduling more than one update to be run offline * Allow running offline updates when in system-update.target * Fix the location of fwupdoffline in the service file * Add optional vfuncs to allow detaching and attaching verify() * superio: Add list of SPI commands for future usage * Add a verify-update command to fwupdtool * uefi: Actually upload the UPDATE_INFO entry for the UX capsule * superio: Get the chip size from the EC rather than hardcoding * uefi: Check the error code of QueryCapsuleCapabilities() correctly * Update the UEFI UX Capsule Header checksum when needed. * uefi: Copy the shimx64.efi binary for known broken firmware * Correctly get the check the new version for devices that replug * Add a simple script to add a capsule header * Ensure the PKCS-7 client certificate exists at startup * fix makecab directive options * fwpup.service: use display-manager.service instead of gdm.service * Allow signing the fwupd report with the client certificate * Add a D-Bus method to generate a signature using the self-signed client certificate * Allow signing and verifying data using a PKCS-7 self-signed client certificate * Fix a critical warning when loading a PKCS-7 certificate with no DN * Include all device checksums in the LVFS report * modem-manager: Fix a trivial build warning * superio: Fix a trivial build warning * Move out the offline update functionality to a new binary * Do not reboot when failing to start fwupd during offline updates * Do not write the schema version to the db when loading * Do not recreate XbSilo caches when running on a readonly filesystem * Add the fwupdagent binary for use in shell scripts * Allow restricting firmware updates for enterprise use * standalone-installer: new --allow-older and --allow-reinstall options * Show the upgrade and downgrade flags when getting releases for a device * Rename FwupdRelease:trust-flags to FwupdRelease:flags * fu-tool: Save device state to @LOCALSTATEDIR@/lib/fwupd/state.json on actions * modem-manager: implement support for qmi-pdc * Add a plugin to support ModemManager hardware * fu-tool: Don't let failing to find dbus prevent engine from starting * ata: Support delayed activation * dell-dock: Use activation when calling fwupdtool activate * Add a support for delayed activation * uefi: Fix the self tests when running on Fedora SilverBlue * Do not fail to start the daemon if tpm2_pcrlist hangs * po/make-images.sh: quote LOCALEDIR and PYTHON3 * meson: print stderr of python3 command instead of stdout * Revert "contrib/debian: Switch to debian unstable" * Add elogind support - Changes from version 1.2.5: * uefi: fix segfault in fwup_set_update_statuses * Show in Flathub correctly * debian: explicitly depend on shared-mime-info * superio: Implement detach() and attach() * superio: Correct the names of some constants and improve debugging support * dell-dock: Filter the last supported payloads of certain board 4 SKUs * circleci: Manage the lifecycle of the snap * Add support to run snap build in CircleCI * wacom-usb: Use the correct buffer format for the touch module * wacom-usb: Set the install duration for each device type * wacom-usb: Return with an error if there were too many retries * wacom-usb: Make updating less verbose * Convert all child instance IDs when converting the parent * uefi: Allow devices to create more complete fake UEFI devices * unifying: Fix regression when recovering from failed flash * Ensure libxmlb dir exists for LGTM.com * Add C build configuration for LGTM.com * Use G_BEGIN_DECLS correctly for internal headers * standalone-installer: Fix issue found by LGTM * Use '#pragma once' to avoid a lot of boilerplate * Force LGTM to see Python 3 * fwupd: Hide firmware-packager behind meson option` * fu-common-cab: Correct handling of CAB files w/ nested directories and older libgcab * Fix a regression in using the InstanceIDs for quirk matching * thunderbolt: Convert the instance IDs as we never open the device * udev: Manally call fu_device_setup() to convert the instance IDs * fu-tool: Correct a crash caused by calling fwupdtool update * fu-tool: Don't fail if dbus is unavailable * contrib/debian: Switch to debian unstable * wacom-usb: Record the block number when failing * wacom-usb: The touch address is big endian * wacom-usb: Accept a non-binary IHEX file for the touch update * wacom-usb: Only poll when the device status is 'busy' * wacom-usb: Only reboot the device when all composite devices have been updated * wacom-usb: Fix flashing failure with latest Intuos Pro tablet * dfu: Fill holes when reading SREC files * Add fwupd_guid_from_string() to drop dep on uuid * wacom-raw: Check the InstanceID rather than GUID * Defer the InstanceID->GUID hashing until after setup * ata: Check for USB enclosures as well * Do not use efivar just to print a mixed endian GUID * Add fu_device_add_instance_id() and prefer explicit conversion * Report the DeviceInstanceIDs to `fwupdmgr get-updates` * Export some of the GUID functionality * Allow a plugin to set _ANOTHER_WRITE_REQUIRED to run more than one plugin * nvme: Add an extra check for Dell plugins to avoid false positives * ata: Add support for detecting Dell GUIDs * Fix the self tests when using glib2 >=2.59.0 * Add support to call composite prepare and cleanup using fwupdtool * uefi: Disable -Wno-address-of-packed-member * uefi: Don't unconditionally enable Werror for the EFI binary * Disable -Wno-address-of-packed-member - Changes from version 1.2.4: * Remove the autogenerated headers in the gettext files * ata: Default to the non-activation 0xE subcommand * fastboot: Use a much longer timeout as the removal delay * fu-progressbar: be more quiet when running non-interactive * fu-tool: Show UpdateMessage if applicable for install command * dfu: Simplify the SREC parser to avoid a crash with an invalid file * wacom-raw: Use the correct error codes when the panel is not supported * wacom-usb: Add some more information to the README * fu-keyring-utils: Don't fail missing PKI directory when compiled with GPG/PKCS7 * dell: Check that the flash interface command is available * wacom-usb: Fix the plugin name to allow devices to be updated * fastboot: flash the partition after downloading the file * uefi: Add a quirk to use the legacy bootmgr description * ata: Mark all devices as needing a reboot * ata: Add a new plugin to upgrade firmware on ATA/ATAPI hardware * udev-device: Add a utility function for debugging * udev-device: Set the firmware revision automatically * udev-device: Set the serial number automatically * udev-device: Fall back to non-database model and vendor values * udev-device: Fix critical warning if the device has no parent * dell-dock: Add support for a passive flow * Add support for an `UpdateMessage` and display it in tools * fu-tool: Port the `get-updates` command over * When using `directory` remote type automatically generate metadata * libfwupd: Add support for new remote type "directory" * Ensure cabinet archives always have a container checksum * Add support for a per-release source and details URL * When generating a CAB Silo use the prefix "components" * uefi: Add a trivial debugging statement to debug a UX capsule failure * uefi: Use fwup_new0() to allocate the updates table array * nitrokey: Correct Nitrokey Storage invalid firmware version read * dell-dock: Add support for flashing Thunderbolt over I2C * wacom-raw: Add a plugin to update Wacom embedded EMR and AES panels * fu-util/fu-tool: sync up reboot and shutdown behavior * dfu: Ignore the SUB ASCII value * dfu: Fix the parser to support extended segment addresses * dfu: Support ihex files with leading comments don't show an error * uefi: Correct a boot order creation bug (Fixes: gh#hughsie/fwupd#956) * uefi: Remove all variable length arrays * uefi: Fix a logic bug in fwup_search_file() * uefi: Use _cleanup_free in one more place * uefi: Do not pass required attrs to fwup_delete_variable() * uefi: Delete the old Linux-Firmware-Updater boot entry * uefi: Use the GNU-EFI BOOL type * Check if plugin changed after the device attaches or detaches * uefi: Refactor and simplify the EFI loader * Show a console warning if loading an out-of-tree plugin * UEFI: Do the UX checksum calculation in fwupd * wacom-usb: Add two more Intuos tablets * nvme: Add the needs-shutdown quirk to Phison NVMe drives * Add _NEEDS_SHUTDOWN flag for devices * Use GCC __cleanup__ features in the EFI loader * nvme: Add flag to support manually aligning the firmware to the FWUG value * nvme: Support FGUID to get the SKU GUID * nvme: Support FWUG to get the write block size * nvme: Add trivial comment to clarify address bitshifting * uefi: Do not check the BGRT status before uploading a UX capsule * dfu: Fix flashing various Jabra devices * upower: Add support for checking battery percentage * nvme: Check the return code of the admin passthru ioctl * fu-tool: Add support for an 'update' command to fwupdtool * dell-dock: Set minimum board to board 4 * dell-dock: Workaround a manufacturing bug for board level 4 * dell-dock: Wait longer for re-enumeration on TBT SKU * superio: Support IT89xx devices * fu-main: remove incompatible locale error message * Add a new plugin checklist (Fixes: gh#hughsie/fwupd#899) - Dropped obsolete patch: fwupd-bsc1130056-change-esp-os-name.patch (upstream PR: gh#hughsie/fwupd#1119 - Fixed fwupd-bsc1130056-change-shim-path.patch so that it works with the new files - Cleaned up changelog- Stop shipping polkit rules, as we have the distro specific setup in polkit-default-privs (boo#1125428).- Add fwupd-bsc1130056-change-esp-os-name.patch to change the OS directory in ESP (bsc#1130056) - Add fwupd-bsc1130056-change-shim-path.patch to set the default shim binary for openSUSE/SLE (bsc#1130056) - Link fwupd*.efi.signed to fwupd*.efi as requested by fwupd (bsc#1129466)- fwupd.spec: fix shell syntax error in %postun section (boo#1120363).- Update to version 1.2.3: * Correctly migrate the history database - Changes from version 1.2.2: * Log an error if started with an incompatible locale * Fix building with -Wl,-z,defs * ebitdo: Fix the reported version number if the daemon locale is not C.UTF-8 * Add Dell TB18DC to the known devices list * Allow replacing the last byte in the image when using 'dfu-tool replace-data' * Check the device checksum as well as the content checksum during verify * Submit the device firmware checksum and update protocol in the submitted report * Include the device checksum and update protocol in the historydb * uefi: Add the PCR0 value as the device checksum for system firmware * Add new API to get the release protocol from the metadata * Allow plugins to define support for a 'well-known' protocol * uefi: When adding headers set the header size to 4k * uefi: Append the header on capsules without headers from Linux * flashrom: Ensure the quirks database is set on the new object * uefi: Do not add devices with invalid GUIDs * Do not allow a GUID of zero * Add shared functionality for reading and writing with O_NONBLOCK * Only run attach and detach if the device is in the wrong mode * Sanitize the version if the version format has been specified * wacom-usb: Remove the DTH generation hardware as it will not work with fwupd * thunderbolt: Remove a superfluous boundary condition when verifying update * Add a plugin to update hardware that supports fastboot * Fix a regression when doing GetReleases on unsupported hardware * dfu: Require a specific USB class and subclass for DFU mode * Correctly parse format the version numbers correctly using old metadata * amt: Fix a crash if AMT returns an empty response * Check plugins set error on failure * contrib: Add a simple python3 client * installed-tests: Adjust to actually use a remote for installed tests * Add more standard USB identifier GUIDs * wacomhid: Rename to wacom-usb * Provide a way for plugins to decompress a custom archive to ram - Changes from version 1.2.1: * Remove DaemonVersionFormat=quad * Shut down the daemon after 2h of inactivity * Create a silo index to speed up GUID queries * Fix flashing the 8bitdo SF30 * Speed up fwupd startup by loading less thunderbolt firmware * Query the XbSilo when calling fu_plugin_check_supported() * Guess the version format when it is not provided * Fix a use-after-free when using valgrind and --immediate-exit * Add per-release install duration values * Fix showing the custom remote agreements * Be more explicit setting the update state * Include the os-release information in the release metadata - Changes from version 1.2.0: * ebitdo: remove SF30/SN30 pro device ids * dell-dock: Drop delayed MST callback routine * synapticsmst: Adjust EVB board handling * synapticsmst: Remove the content checking of firmware * synapticsmst: Access Board ID through memory instead In firmware images HDCP 2.2 will be enabled by default,so access to flash region will fail.` * contrib: Adjust flatpak build for moving to flathub * dell-dock: Prefer to flash VMM5331 via I2C instead of DP aux * Use HTTPS_PROXY if set * firmware-packager: Make it clearer to use * Sort the firmware sack by component priority * flatpak: Update gnu-efi to latest version * amt: Set the full device version including the BuildNum * fwupdmgr/fwupdtool: Move monitor command to fwupdtool * fwupdmgr/fwupdtool: Move firmware builder from fwupdmgr to fwupdtool * Add version format quirks for several Lenovo machines * uefi: Set the quirks on created devices * dell_dock: Use correct offset for finding version of MST * dell-dock: Add missing unlock call for MST via dell_dock plugin * Support the Intel ME version format * Port from libappstream-glib to libxmlb * Bump requirement to meson 0.46.0 * fu-main: Catch SIGTERM while update is in progress * fu-tool: Stop any running daemon over dbus before loading engine * meson: Bump dependency to 0.44 and adjust sysconfdir handling * dell-dock: If marketing name is invalid don't fail initialization * Readme Updated: Added KDE Discover as one more graphical front-end available for fwupd. * dell-dock: Correct a situation that error wasn't propagating * Don't segfault if a plugin returns FALSE from UpdateFunc with no error set * dell-dock: Use different debug strings for each device type * dell-dock: Don't use the VLA feature in the new dock * Add a plugin for an upcoming Dell USB-C dock * contrib: Add information on how to use debugging scripts * Allow setting the version format from a quirk entry * Don't use AppStream-glib for string helpers * Don't use AppStream-glib for version helpers * Don't use AppStream-glib for the GUID helpers * fu-device: Ensure that parent ID is created before creating quirked children * Update all sub-devices for a composite update * Stop showing the current release during updates in fwupdmgr * uefi: Move the TPM unlocking functionality from the Dell to UEFI plugin * Run the Dell plugin initialization after the UEFI plugin * thunderbolt-power: Fix possible linker problem * Allow firmware files to depend on versions from other devices * fu-debug: Redirect all debugging output to stderr instead of stdout * synapticsmst: Adjust panamera ESM update routine for some reported issues * fu-engine: Optionally wait for replug before updating a device * fu-device-list: Use delayed device removal when removing the tree * thunderbolt: Use replugging from the daemon * Add support for devices to show an estimated flash time * Marked some CL options for translation * ci: Run clang static analysis for Ubuntu build rather than just clang compiler * nvme: Initialize the buffer before reading the contents * contrib: Add a standalone installer creation script * rts54hid: Add support for Realtek USB devices using vendor HID commands * fu-engine: Don't show devices pending a reboot in GetUpgrades * Add FuMutex helper to make various parts of the daemon thread-safe * rts54hub: Add support for Realtek USB devices using vendor HUB commands * uefi: Check the amount of free space on the ESP * fu-tool: Import debugging options from fu-debug like fu-main * superio: Set the physical and logical IDs - Add pkgconfig(xmlb) BuildRequires: New dependency.- Add pesign-obs-integration to BuildRequires and add fwupd*.efi to BRP_PESIGN_FILES to get it signed - Add LC_IMAGES and use efivar only if %{with efi_fw_update} + Also update the version requirement of efivar - Disable Redfish and NVME plugins if %{without efi_fw_update} since those two plugins require efivar - Remove fwup from BuildRequires since fwupdate is already merged into fwupd.- Use gnu-efi only if %{with efi_fw_update}, always use pkgconfig(efivar) - Fix file list- Amend %post and %postun to install/uninstall fwupd*.efi to the EFI system partition + Also add shim to Requires for fwupdx64.efi - Mark fwupdate as obsolete + fwupdate has been merged into fwupd since fwupd 1.1.0.- fwupd is require for thunderbolt firmware update in SLE15-SP1(fate#322681)- Update to version 1.1.2: + New Features: - Add a new device flag "ignore-validation" that will override checks - Add a new plugin to enumerate EC firmware - Add a new plugin to update NVMe hardware - Add a plugin for updating using the flashrom command line tool - Allow the device list to take care of waiting for the device replug - Allow updating just one specific device from the command line - Allow upgrades using a self-signed fwupd.efi binary - Download firmware if the user specifies a URI - Include serial number in daemon device output when trusted - Notify all plugins of device removals through a new vfunc - Use boltd force power API if available + Bugfixes: - Add an install hook for classic snap - Allow forcing installation even if no AC power is applied - Allow using --force to ignore version_lowest - Always use the same HardwareIDs as Windows - Check the device state before assuming a fake DFU runtime - Copy over parent GUIDs from other plugin donors - Detect location of python3 interpreter - Do not add udev devices after a small delay - Don't fail to run if compiled without GPG/PKCS7 - Fix a segfault in fwupdtool caused by cleanup of USB plugins - Implement the systemd recommendations for offline updates - Improve performance when reading keys from the quirk database - Remove children of devices when the parent is removed - Rewrite synapticsmst to use modern error handling - Rewrite the unifying plugin to use the new daemon-provided functionality - Show a time estimate on the progressbar after an update has started- Use noun phrase for summary. Trim request for comments from description.- Update to version 1.1.1: + New Features: - Add support for the Synaptics Panamera hardware - Add validation for Alpine and Titan Ridge - Improve the Redfish plugin to actually work with real hardware + Bugfixes: - Allow different plugins to add the same device - Allow flashing unifying devices in recovery mode - Allow running synapticsmst on non-Dell hardware - Check the ESP for sanity at at startup - Do not hold hidraw devices open forever - Don't override _FORTIFY_SOURCE when building the EFI binary - Don't show passwords in fwupdmgr - Fix a potential segfault in smbios data parsing - Fix encoding the GUID into the capsule EFI variable - Fix various bugs when reading the thunderbolt version number - Reboot synapticsmst devices at the end of flash cycle - Show status messages when the daemon is initializing - Show the correct title when updating devices - Show the reasons that plugins are not run on the CLI - Use localedir in po/make-images- Run %udev_rules_update in post as package install udev rules- Update to version 1.1.0: (FATE#326702) + New Features: - Add a initial Redfish support - Add a tool to mimic the original fwupdate CLI interface - Allow devices to assign a plugin from the quirk subsystem - Change the quirk file structure to be more efficient - Merge fwupdate functionality into fwupd - Run a plugin vfunc before and after all the composite devices are updated - Support more Wacom tablets + Bugfixes: - Add release information for locked devices - Allow building with older meson - Detect the EFI system partition location at runtime - Do not use 8bitdo bootloader commands after a successful flash - Enable accesing downloaded files in flatpak and snap - Fix a potential buffer overflow when applying a DFU patch - Fix downgrading older releases to devices - Fix flashing devices that require a manual replug - Fix several small memory leaks in various places - Fix the retrieval of Redfish version - Fix unifying failure to detach when using a slow host controller - Set the Wacom device status when erasing and writing firmware - Show errors in the CLI if unable to access directory - Use the parent device name for Wacom sub-modules - Removed enable_pkcs7_when_testing_only.patch- Update to version 1.0.8: + New Features (including version 1.0.7): - Add an plugin to update some future Wacom tablets - Add 'fwupdmgr get-topology' to show logical device tree - Add support for creating a flatpak - Add support for creating a snap - Add support for Motorola S-record files - Add the Linux Foundation public GPG keys for firmware and metadata - Show a translated warning when the server is limiting downloads - Add enable-remote and disable-remote commands to fwupdmgr - Add fu_plugin_add_compile_version() for libraries to use - Allow requiring specific versions of libraries for firmware updates - If no remotes are enabled try to enable the LVFS - Show a warning with interactive prompt when enabling a remote + Bugfixes (including version 1.0.7): - Add a firmware diagnostic tool called fwupdtool - Adjust all licensing to LGPL 2.1+ - Allow installing more than one firmware using 'fwupdmgr install' - Allow specifying hwids with OR relationships - Do not call fu_plugin_init() on blacklisted plugins - Do not require libcolorhug to build - Fix a crash in libfwupd where no device ID is set - Fix a potential DoS in libdfu by limiting holes to 1MiB - Fix a segfault that sometimes occurs during cleanup of USB plugins - Fix Hardware-ID{0,1,2,12} compatibility with Microsoft - Hide devices that aren't updatable by default in fwupdmgr - Search all UEFI GUIDs when matching hardware - Stop matching Nintendo Switch Pro in the 8bitdo plugin - Check that EFI system partition is mounted before update - Disable synapticsmst remote control on failure - Don't recoldplug thunderbolt to fix a flashing failure - Fix SQL error when running 'fwupdmgr clear-offline' - Improve the update report message - Only enumerate Dell Docks if the type is known - Only run certtool if a new enough gnutls is present - Prevent a client crash if the daemon somehow sends invalid data - Reboot after scheduling using logind not systemd - Use the right encoding for the label in make-images - Added/backported enable_pkcs7_when_testing_only.patch: + needed to disable pkcs7 test during build (can be removed for fwupd >= 1.0.9)- Update hasbang in installed files from /usr/bin/env python3 to /usr/bin/python3.- Update url - Small packaging cleanup with spec-cleaner- Update to version 1.0.6: + New Features: - Add bash completion for fwupdmgr. - Add support for newest Thunderbolt chips. - Allow all functions that take device arguments to be prompted. - Allow devices to use the runtime version when in bootloader mode. - Allow overriding ESP mount point via conf file. - Delete any old fwupdate capsules and efivars when launching fwupd. - Generate Vala bindings. + Bugfixes: - Allow ctrl-d out of the prompt for devices. - Allow to create package out of provided binary. - Correct handling of unknown Thunderbolt devices. - Correctly detect new remotes that are manually copied. - Fix a crash related to when passing device to downgrade in CLI. - Fix running the self tests when no fwupd is installed. - Fix Unifying signature writing and parsing for Texas bootloader. - Only send success and failure reports to the server. - Use a CNAME to redirect to the correct CDN for metadata. - Use a longer timeout when powering back the Thunderbolt device.- Ensure library package has a dependency on main package, otherwise it won't be usable.- Update to version 1.0.5: + New Features: - Offer to reboot when processing an offline update. - Report the efivar, libsmbios and fwupdate library versions. - Report Thunderbolt safe mode and SecureBoot status. - Show the user a URL when they report a known problem. - Support split cabinet archives as produced by Windows Update. + Bugfixes: - Be more careful deleting and modifying device history. - Clarify which devices don't have upgrades. - Ensure the Thunderbolt version is xx.yy. - Fix a daemon warning when using fwupdmgr get-results. - Fix crasher with MST flashing. - Fix DFU detach with newer releases of libusb. - Include the device VID and PID when generating the device-id. - Set the RemoteId when using GetDetails. - Stop matching 8bitdo DS4 controller VID/PID. - Use help2man for dfu-tool and drop docbook dependencies. - Use ngettext for any strings with plurals. - Use the default value if ArchiveSizeMax is unspecified.- Update to version 1.0.4: + New Features: - Add D-Bus methods to get and modify the history information. - Allow the user to share firmware update success or failure. - Ask the user to refresh metadata when it is very old. - Store firmware update success and failure to a local database. + Bugfixes: - Add a device name for locked UEFI devices. - Allow each plugin to opt-in to the recoldplug action. - Fix firmware downloading using gnome-software. - Fix UX capsule reference to the one specified in efivar. - Never add two devices to the daemon with the same ID. - Rescan supported flags when refreshing metadata. - Add pkgconfig(json-glib-1.0) BuildRequires: new dependency.- Update to version 1.0.3: + New Features: - Add a new plugin to add support for CSR "Driverless DFU". - Add initial SF30/SN30 Pro support. - Support AppStream metadata with relative URLs. + Bugfixes: - Add more metadata to the user-agent string. - Block owned Dell TPM updates. - Choose the correct component from provides matches using requirements. - Do not try to parse huge compressed archive files. - Fix a double-free bug in the Udev code. - Handle Thunderbolt "native" mode. - Use the new functionality in libgcab >= 1.0 to avoid writing temp files.- Unbreak compilation on non-x86, upstream renamed options to disable plugins.- Update to version 1.0.2: + Add a plugin for the Nitrokey Storage device + Add support for the original AVR DFU protocol + Allow different plugins to claim the same device + Allow quirks to set common USB properties + Move a common plugin functionality out to a new shared object + Optionally delay the device removal for better replugging + Set environment variables to allow easy per-plugin debugging + Use a SHA1 hash for the internal DeviceID + Add quirk for AT32UC3B1256 as used in the RubberDucky + Disable the dell plugin if libsmbios fails + Don't register for USB UDev events to later ignore them + Fix a possible buffer overflow when debugging ebitdo devices + Fix critical warning when more than one remote fails to load + Fix DFU attaching AVR32 devices like the XMEGA + Ignore useless Thunderbolt device types + Refactor ColorHug into a much more modern plugin + Release the Steelseries interface if getting the version failed + Remove autoconf-isms from the meson configure options + Show a nicer error message if the requirement fails + Sort the output of GetUpgrades correctly - Changes from version 1.0.1: + Add support for HWID requirements + Add support for programming various AVR32 and XMEGA parts using DFU + Add the various DFU quirks for the Jabra Speak devices + Allow specifying the output file type for 'dfu-tool read' + Move the database of supported devices out into runtime loaded files + Support the IHEX record type 0x05 + Use help2man to generate the man page at build time + Use the new quirk infrastructure for version numbers + Catch invalid Dell dock component requests + Correctly output Intel HEX files with > 16bit offset addresses + Do not try to verify the element write if upload is unsupported + Fix a double-unref when updating any 8Bitdo device + Fix crash when enumerating with Dell dock connected but with no UEFI + Fix uploading large firmware files over DFU + Format the BCD USB revision numbers correctly + Guess the DFU transfer size if it is not specified + Include the reset timeout as wValue to fix some DFU bootloaders + Make the error message clearer when sans fonts are missing + Support devices with truncated DFU interface data + Use the correct remote-specified username and passord when using fwupdmgr + Use the correct wDetachTimeOut when writing DFU firmware + Verify devices with legacy VIDs are actually 8Bitdo controllers - Add help2man as BuildRequires.- Fix dependencies and build options for non-x86 architectures. At least FW updates for USB are arch independent, and EFI FW updates can also be applied on Aarch64.- Update to version 1.0.0: * Add the plugin documentation to the main gtk-doc * Add a waiting-for-auth daemon state * Add fwupd_remote_get_checksum() to use in client programs * Generate the LD script from the GObject Introspection data * Prevent fwupd from mounting filesystems * uefi: Do not use system-specific infomation for PCI devices * uefi: Support uploading the firmware splash image * dell: only set coldplug delay when we know we need it * dell: only run SMI to toggle host MST GPIO on systems with host MST * dell: add functionality to blacklist HW with problems * dell: only run on intended chassis * thunderbolt-power: always run after thunderbolt plugin * Allow plugins to depend on each other * Add support for SMBIOSv3 * dell: prefer to use hwids to get DMI keys and DE table * debian: remove /etc/fwupd.conf on upgrade * unifying: Use fu_plugin_check_supported() * Add fu_plugin_check_supported() * unifying: Use a device whitelist to avoid breaking devices * Fix various printing issues with the progressbar * dell: Fix a trivial whitespace issue * Do not fail to load the daemon if cached metadata is invalid * Do not store the newest release as part of the FuDevice object * Add a method to return a list of upgrades for a specific device * Move the downgrade calculation to the daemon * Make FuDevice derive from FwupdDevice rather than FwupdResult * Add a command 'clear-offline' to fwupdmgr * Merge releases where multiple remotes provide the same firmware * Remove the UniqueID property * uefi: Do not set the release version * udev: Do not match USB devices, even with a GUID set * Use the intel-wmi-thunderbolt kernel module to force power * dell: drop thunderbolt force power code * unifying: Add hardcoded summaries for peripheral kinds * Create CODE_OF_CONDUCT.md * Ensure more devices set the device summary * Add an 'Summary' property to each device * Add a human-readable title for each remote * unifying: Disable if the kernel has no CONFIG_HIDRAW support * Move deprecated symbols to a new header * Introduce an s390x cross compile target to CI * Add ModifyRemote as an easy way to enable and disable remotes like the LVFS * Do not auto-open all USB devices at startup * dfu: Use FuDeviceLocker * unifying: Use FuDeviceLocker * colorhug: Use FuDeviceLocker * ebitdo: Use FuDeviceLocker * altos: Use FuDeviceLocker * steelseries: Use FuDeviceLocker * usb: Use FuDeviceLocker * Add FuDeviceLocker to simplify device open/close lifecycles * dfu: Remove DEVO support * dfu: Remove the now-unused symtab support * Remove the ELF support from libdfu and move the code to the altos plugin * Use -Werror when building in Travis CI * Do not install the libdfu helper library * Parse the SMBIOS DMI table directly * usb: Disable the fallback USB plugin * Test for missing language translations at build time * Fix the libdfu self test failure on s390 and ppc64- Update to version 0.9.8: * Add a command 'clear-offline' to fwupdmgr * Do not fail to load the daemon if cached metadata is invalid * Fix a crash when using fu_plugin_device_add_delay() * Fix the libdfu self test failure on s390 and ppc64 * Format the BCD USB revision numbers correctly * Never fallback to an offline update from client code * Prevent fwupd from mounting filesystems * dfu: Allow flashing when the target does not specify an alt-name * dfu: Do not try to verify the element write if upload is unsupported * dfu: Fix uploading large firmware files * dfu: Include the reset timeout as wValue to fix some hardware * dfu: Set the vendor ID to the runtime USB VID * dfu: Use 0x0101 as an alias for 0x0110 * thunderbolt: move test for mock environment (gh#hughsie/fwupd#280) * udev: Do not match USB devices, even with a GUID set * uefi: Do not set the release version * unifying: Disable if the kernel has no CONFIG_HIDRAW support- Update to version 0.9.7: + 10 months worth of bugfixing, integrating more vendor specific Firmware update paths.- Update to version 0.8.1: + Delete duplicate translations (gh#hughsie/fwupd#89). + Do not hardcode docbook2man path. + Fix fwupdmgr timeout with missing pending database. + Fix compiler warnings. + Fix a crash when enumerating devices on a Dell WLD15. + dell: don't initialize libsmbios on unsupported systems. + Do not fail to start on Dell hardware. + Adjust systemd confinement restrictions. + Do not dlclose modules when running under valgrind. + Really remove the NoNewPrivileges systemd confinement. + Release fwupd 0.8.1.- Update to version 0.8.0: + Show a different error when checking for updates while on + battery power (gh#hughsie/fwupd#68). + Clarify the test in --help and man page related to offline + (gh#hughsie/fwupd#69). + libdfu: Use a heuristic for the start address if the firmware + has no DfuSe footer. + dell: Don't return the address of a stack variable. + dell: Fix a possibly-impossible-to-hit buffer overrun. + close USB devices before error returns (gh#hughsie/fwupd#73). + Make libelf support optional. + Always make sure we're getting a C99 compiler. + Fix redeclaration of polkit autocleanup functions. + Uncomment SystemdService parameter in the dbus service file + (gh#hughsie/fwupd#74). + Make all providers and plugins share a GUsbContext. + Unexport libebitdo. + Move the plugins into plugin-specific directories. + Convert the providers to plugins to simplify code and for + future features. + Add support for Logitech Unifying devices. + Add a set of vfuncs that are run before and after a device + update. + Return the pending UEFI update when not on AC power. + Move the UPower functionality to a plugin. + Fix udev plugin loading. + fix dfu plugin loading. + Disable PrivateNetwork on systemd service. + Use more restrictive settings when running under systemd. + dell: add a new method for forcing a controller to flash mode. + Add VerifyUpdate to update the device checksums server-side. + Move the Option ROM parsing to the Udev plugin. + Move the device add delay to shared code. + Add initial skeleton for Intel Thunderbolt support. + unifying: Use the actual bootloader VID/PIDs when in firmware + mode. + Allow the metadata to match a version of fwupd and the existing + fw version. + Add fwupd_result_get_device_version_bootloader(). + Fix the appstream-glib version guards. + dell: Add coldplug methods to let other plugins turn on + TBT/GPIO. + libdfu: Don't read data from some DfuSe targets. + Add the ability to run a prepare->exec->cleanup on coldplug. + Allow plugins to request that all plugins re-coldplug. + thunderbolt: Detecting new devices and add an actual device to + the daemon. + Add support for flashing the ChaosKey. + thunderbolt: add some guards around empty arrays. + dell: Adjust the coldplug preparation and cleanup sequence. + dell: Fix possible linker problem. + Revert "thunderbolt: add some guards around empty arrays". + Add fu_plugin_set_coldplug_delay() to allow hardware to + initialize if required. + altos: Add error checking when using termios. + ebitdo: Subclass FuDevice like the altos plugin. + altos: Set the flags in the init_real so they work for the + cmdline tool. + unifying: Subclass FuDevice like the altos plugin. + Include all debug messages when run with --verbose. + dell: introduce a standalone (noinst) tool to force mode + flashes. + Introduce plugin for Synaptics MST hubs. + synapticsmst: Add cascade support. + Only register the D-Bus service when all devices have been + added. + synapticsmst: Refactor away the global state. + synapticsmst: fix cascade support in the plugin. + Updates for thunderbolt plugin. + thunderbolt: Add special handling for safe mode on Dell systems + (gh#hughsie/fwupd#84). + synapticsmst: Iterate all nodes rather than hardcoding to 3. + synapticsmst: build GUID using dock type. + Add a new function fu_dell_supported to fu-dell-common. + synapticsmst: add a test suite. + synapticsmst: Fix up some trivial whitespace issues. + Fix a refcounting issue in the udev plugin. - Add rpmlintrc untill security review is resolved- Update to version 0.7.5: + Clean up PO files + Verify devices support updating in mode they are called. + Fix an assert when unlocking the dummy ESRT device + Don't create the UEFI dummy device if the unlock will happen on + next boot + dell: Match on TB16 as well + Fix a -fstack-protector-strong crash when uploading firmware + Enable the stack protection in local builds + dell: If running in test suite, don't try to get product ID + from sysfs + libfdfu: Show a warning when getting the alt-name failed + dfu: Fix listing devices using the ST reference bootloader + Show the nicely formatted target name for DfuSe devices + libdfu: Fix two possible critical warnings for corrupt USB + descriptors + libdfu: Correctly offset addresses when one zone has multiple + sectors + libdfu: Do not do GetStatus on dfuse upload + libdfu: Fix uploading from DfuSe devices + libdfu: Use the device offset when writing DfuSe firmware + libdfu: Add DfuAction enumerated value to represent a device + action + libdfu: Use an animated progress bar when performing DFU + operations + libdfu: Do not do a zero-byte download when in DfuSe mode + libdfu: Fix verification of written DfuSe firmware + libdfu: Ensure the device is open before claiming the interface + libdfu: Ensure the mode is set correctly when faking a runtime + libdfu: Re-get the quirks when the DfuDevice gets a new + GUsbDevice + libdfu: Add quirks for HydraBus as it does not have a DFU + runtime + libdfu: Match the device booloader or runtime VID and PID when + checking firmware + Add a 'replace-data' command to dfu-tool + string + libdfu: Add dfu_sector_get_zone() to get the continuous memory + zone number + libdfu: Wait for DNBUSY to be cleared when checking the DfuSe + status + libdfu: Correctly erase DfuSe devices + Enable hardening flags on more binaries + libdfu: Correctly set the element address when uploading from + DfuSe devices - Add pkgconfig(gmodule-2.0) BuildRequires: Align with what + configure checks for. - Add pkgconfig(libsmbios_c) BuildRequires: Support dell bios. + Unfortunatly, until we have fwup packaged and enabled, this will + not work. - Add disabled pkgconfig(libtbtfwu): For future thunderbolt + support.- Update to version 0.7.4: + Add a fallback for older appstream-glib releases + Write the ELF files with the correct section type + Fix libfwupd self tests when a host-provided fwupd is not + available + Add dfu_firmware_add_symbol() + Add the Altos symbol table to the DfuFirmware + Use the symtab to set the VID/PID from Altos IHEX firmware + images + Show the human-readable version in the 'dfu-tool dump' output + Allow specifying the argument to 'dfu-tool set-release' in + major.minor format. + sections + Support writing the IHEX symbol table + call + Load the symbol table from ELF firmware + Load the Altos USB descriptor from ELF files + Add DFU_CIPHER_KIND_RSA + Fix a possible crash when uploading firmware files using libdfu- Update to version 0.7.3: + build: Fix gtk-doc build when srcdir != builddir + In get-details output, display the blob filename + Ensure the update ID is set when getting local firmware details + Use a private gnupg key store + Add support for installing against multiple devices from a CAB + file + Use the correct firmware blob when installing a composite + device update + in get-details output, display update_name rather than Unknown + Device + statements + Don't make failures critical while checking versions or locked + state + Show a more detailed error when installing firmware on the + wildcard + Add Dell TPM and TB15/WD15 support via new Dell provider. + file + Allow blacklisting devices by their GUID + header file + Add XPS 9250 to Dell TPM modeswitch blacklist + Only display flashes left in results output when it gets low. + Add a small library for talking with 0bitdo hardware + Add another compile warning and fix up any build failures + Embed fwupd version in generated libfwupd and libdfu + documentation + Update fwupdmgr manpage for new commands and arguments + build: Fix gtk-doc build when srcdir != builddir + online not offline + Get the firmware version correctly from 0Bitdo gamepads + Switch to the Amazon S3 CDN for firmware metadata + Fix writing 8Bitdo device firmware + be updated + Show the vendor flashing instructions when installing + Split out the DFU file formats to separate files + Add fwupd_result_remove_device_flag() + Add FU_DEVICE_FLAG_NEEDS_BOOTLOADER + get-updates output + Allow providers to export percentage completion + Add fwupd_client_get_status() + Handle the 8Bitdo bootloader in a better way + Show a progress notification when installing firmware + Add fwupd_result_get_unique_id() + Use the SHA1 hash of the local file data as the component + origin + Use the correct define prefix for FwupdDeviceFlags + libdfu: Fix hang when parsing corrupt IHEX files + Add a set-target-size command to dfu-tool + Support the 'DEVO' cipher kind in libdfu + Add a set-address command to dfu-util + Disable the Dell specific code by default + Conditionally enable all providers based upon what's installed + Add a summary of providers that are enabled from configure + Do not use the deprecated GNOME_COMPILE_WARNINGS + Ignore devices that do not add at least one GUID + Do not attempt to add DFU devices not in runtime mode + Save the unique ID in the pending database + libdfu: Add initial ELF reading and writing support + Add dfu_firmware_format_from_string() + Normalize the DfuFirmwareFormat enums- Update to version 0.7.2: + Allow devices to have multiple assigned GUIDs + Only return updatable devices from GetDevices() + Add fu_device_get_alternate() + Allow metainfo files to match only specific revisions of + devices + Re-read flags for a device after a provider's unlock routine is + done + Test for a locked device when trying to install firmware update + Enforce allowing providers to take away flash abilities + Support returning multiple GUIDs from GetDetails + Add a GetDetailsLocal() method to eventually replace + GetDetails() + break + libdfu: Add DfuVersion enumerated values + libdfu: Show the DFU protocol version in 'dfu-tool list' + Only claim the DFU interface when required- Update to version 0.7.1: + Fix libdfu CRC check for big endian architectures + Add dfu_image_get_element_default() + Fix libdfu CRC check for big endian architectures + Fix big endian issues when reading and writing DFU and DfuSe + files + Remove non-interactive pinentry setting from fu-keyring + Set the system's DMI product name as the DisplayName for UEFI + Re-order output of get-devices to be easier to read + Make the device display name nicer + update version + Return all update descriptions newer than the installed version + Add summary and name field for Rival SteelSeries + Fix a critical warning when restarting the daemon + Add a 'supported' flag to the FuDevice + Add fwupd_client_connect() + Add a 'monitor' debugging command for fwupdmgr + Add device-added, device-removed and device-changed signals + Match the AppStream metadata after a device has been adedd + Re-match devices when the AppStream metadata is updated + Show 'Unknow Device' in fwupdmgr when a device name is not set + Set the device description when parsing local firmware files + Add support for a new device field "Flashes Left". + src/Makefile.am: reshuffle so enableable bits are only + referenced when on + Add support for a --force flag to override provider warnings- Update to version 0.7.0: + Use g_usb_context_wait_for_replug() + Run vendor plugins as required + Add a plugin for SteelSeries hardware + Add fwupd_device_flag_to_string() + Return the device flags when getting firmware details + Show device flags in 'fwupdmgr get-devices' + Add fwupd_trust_flag_to_string() + Export FwupdUpdateState in libfwupd + Export FwupdUpdateFlags in libfwupd + Add FwupdResult to libfwupd + Add a self test framework for libfwupd + Add FwupdClient to libfwupd + Use FwupdClient from libfwupd in fwupdmgr + Use libfwupd inside the daemon + Emit a FwupdClient::changed when the daemon emits this signal + Rename some of the new libfwupd API to align with the D-Bus + names + libdfu: Fix up some NULL/FALSE confusion + libfwup: Fix up some NULL/FALSE confusion + FwupdClient + Allow other checksum kinds in FwupdResult + Allow SHA-256 hashes when verifying + Show the checksum kind in the fwupdmgr output + Add Alienware to the version quirk table + Do not use /tmp for downloaded files + Add fwupd_result_has_device_flag() + Do not return updates that require AC when on battery + Connect to UPower at startup + Test that GPG key import actually was successful (or didn't + change a key already in the keyring) + Use g_auto() in FuKeyring + Return errors of the correct type when using libfwupd + Allow overridding the location of the pending database for + test suite + Allow overriding the location of the provider offline files for + test suite + Validate that the dbus system bus is available before running + libfwupd tests + Update README.md for changes that have happened in the project + Add some basic explanation of how to use fwupd with various + frontends + Split out the libdfu-devel package + Revert "Allow overridding the location of the pending database + for test suite" + Revert "Allow overriding the location of the provider offline + files for test suite" + Allow the test suite to run in %check + Generate gtk-doc documentation for libfwupd- Update to version 0.6.3: + Require AC power before scheduling some types of firmware + update + Install the hardcoded firmware AppStream file + Correct the BCD version number for DFU 1.1 + Add an unlock method for devices + Add ESRT enable method into UEFI provider. + Only read PCI OptionROM firmware when devices are manually + unlocked + Do not use deprecated API from libappstream-glib + Ignore the DFU runtime on the DW1820A + Export the attribute and quirk values in libdfu + Show ignored DFU devices in dfu-util, but not in fwupd + Allow defining update vfuncs with no runtime support + Revert "Allow defining update vfuncs with no runtime support" + Add a simple plugin infrastructure- Update to version 0.6.2: + Add 'Created' and 'Modified' properties on managed devices + Fix get-results for UEFI provider. + Support vendor-specific UEFI version encodings + Move quirks directly into a single table and file.- Update to version 0.6.1: + Only dump the profiling data when run with --verbose + Always persist ColorHug devices after replug + Do not misdetect different ColorHug devices- Update to version 0.6.0: + Add support for updating USB devices with DFU + libdfu: Add support for DfuSe firmware + libdfu: Generate gtk-doc documentation + libdfu: Don't rely on specific hardware to be present + libdfu: Move the VID:PID checks from the tool to DfuDevice + libdfu: Use a custom error domain + Use the same device identification string format as Microsoft + libdfu: Fix crash when setting a target size + libdfu: Allow setting the alternate settings in DfuSe firmware + libdfu: Add a merge command to dfu-tool + libdfu: Allow choosing a different alt-setting when downloading + libdfu: Fix a crash when setting a NULL image name + libdfu: Correctly implement auto-boot in dfu_device_download() + libdfu: Check for extra args to dfu-tool convert + libdfu: Call the progress callback when doing detach + Ignore the DFU device detach:attach when verifying + libdfu: Require a --force flag to flash wildcard firmware + Use new API available in fwup 0.5 + libdfu: Make the element address 32 bits in size + libdfu: Support the ST-specific bitCanAccelerate + libdfu: Only do a Detach notification if we're actually doing to do it + libdfu: Use the progress bar for all uploads and downloads + libdfu: Improve the output of 'dfu-util list' + libdfu: Support download and upload to ST DfuSe devices + libdfu: Fix multi-interface devices like the Neo Freerunner + libdfu: Add a pkgconfig file + libdfu: Use signals to propagate device state + libdfu: Add a context object to handle device hotplug + libdfu: Add an example showing GObject Introspection + libdfu: Do not ref DfuDevice in DfuTarget so the auto-close + logic works + Close DFU devices as soon as possible after the transfer has completed + Emit the changed signal after doing an update + Rescan the DFU device after replug to get the new version + libdfu: Add dfu_context_get_device_by_platform_id() + libdfu: Add dfu_device_get_runtime_release() + libdfu: Add dfu_device_get_display_name() + libdfu: Fix self tests after recent API change + Split out the DFU provider as a new file + libdfu: Copy the platform ID and invalidate the GUsbDevice when removed + libdfu: Accept multiple spaces after the DfuSe sector name + libdfu: Verify the GUsbDevice is set before using it + libdfu: Remove the weak pointer when destroying the DfuTarget + libdfu: Fix dfu_device_wait_for_replug() so it can work with a DfuContext + Export the AppStream ID when returning device results + Rescan the DFU device after firmware has been updated + libdfu: Handle cancellation with ctrl+c in dfu-tool + libdfu: Add a quirk to support DFU runtime-less devices + libdfu: Add an explicit 'attach' method + libdfu: Add dfu_firmware_get_image_by_name() + libdfu: Make reading and writing to targets easier to + understand + Fix compile with --disable-shared + libdfu: Display all the files shown with 'dfu-tool dump' + libdfu: Fix a few crashers found using afl + libdfu: Fix another bug discovered by the fuzzer + libdfu: Add commands to encrypt and decrypt firmware images + libdfu: Show better device errors + libdfu: Add DfuCipher which is a property on a target and a + firmware file + libdfu: Add support for the draft 'DFU Metadata Table + Specification' + libdfu: Only enumerate the DfuContext when required + libdfu: Fix several reported crashes in the inhex32 import code + Release fwupd 0.6.0- Update to version 0.5.4: + Fix compile error against fwupdate git due to dropped + functions. + Use strerror() when printing errors from libfwupdate + Use new API available in fwup 0.5 + Release fwupd 0.5.4- Update to version 0.5.3: + Avoid seeking when reading the file magic during refresh + Do not assume that the compressed XML data will be NUL + terminated + debugging + Use the correct user agent string for fwupdmgr + Release fwupd 0.5.3- Update to version 0.5.2: + Ensure D-Bus remote errors are registered at fwupdmgr startup + Show the dotted-decimal representation of the UEFI version + number + require appstream-glib 0.5.1 + not found + When the version is from the 'FW' extension do not cache the + device + Support cabinet archives files with more than one firmware + Add the update description to the GetDetails results + Add profiling data to debug slow startup times + Fix verify-update to produce components with the correct + provide values + Clear the in-memory firmware store only after parsing a valid + XML file + Release fwupd 0.5.2- Update to version 0.5.1: + Fix the error message when no devices can be updated + offline update: Use glib api for for reading symlinks + Release fwupd 0.5.1- Update to version 0.5.0: + Do not merge the existing firmware metadata with the submitted + files + Raise the dep on GLib to support and use g_autoptr() + Do not reboot if racing with the PackageKit offline update + mechanism + Release fwupd 0.5.0- Update to version 0.1.6: + Install fwupd and fwsignd into /usr/lib/$(triplet)/fwupd + instead. + Use the new secure metadata URI + Update the offline update service to invoke right command + Don't apply firmware if something else is processing the + offline update + Remove fwsignd, we have the LVFS now + Depend on appstream-glib >= 0.5.0 + Add application metadata when getting the updates list + Simplify the version properties on devices to avoid complexity + and bugs + Release fwupd 0.1.6- Update to version 0.1.5: + Allow fwupd to be autostarted by systemd + Sign the test binary with the correct key + Do not pre-convert the update description from AppStream XML + Devices with option ROM are always internal + Prefer the GUID from the firmware than the device + Allow no arguments to 'fwupdmgr verify-update' and use sane + defaults + Add the ability to remove a vendor on the LVFS site + Fix validation of written firmware + Move the verification and metadata matching phase to the daemon + Add a simple config file to store the correct LVFS download URI + Make parsing the option ROM runtime optional + Add a Raspberry Pi firmware provider + Use the AppStream 0.9 firmware specification by default + Generate the ColorHug test files at runtime + Release fwupd 0.1.5- Update to version 0.1.4: + man/Makefile.am: Add --sgml to docbook2man invocation + Make statements about storing private keys stronger. + Provide a way for clients to add new firmware metadata to the + system cache + Fix fwupd-offline-update.service + Revert "man/Makefile.am: Add --sgml to docbook2man invocation" + Add a Udev firmware provider + Extract the version string from the ROM in PCI devices + Add a 'verify' command that verifies the cryptographic hash of + device firmware + Make the ROM parsing more robust and add self tests + Get the version number out from Intel VBIOS too + Provide a way to dump the option ROM using the command line + build: gusb is required even without colorhug + remove unused variables + Do not return NULL as a gboolean + Fix Intel VBIOS detection on Dell hardware + Do not use the subsystem information when constructing the fake + GUID + Actually parse the PCI option ROM + Accept multiple files at one time when using fwupdmgr dump-rom + verify run + Add a 'verify-update' command to fwupdmgr + Fix trivial bug when parsing firmware versions + Keep hitting the hardware until it gives us enough ROM + Make the version parsing more resilient to corrupt firmware + Fix the example .inf file to reflect reality + Fix ROM PPID searching to work for all ROMs + Move the LVFS website to the fwupd project + Add the ability to create detached signatures + Allow cab files to be saved + Add a simple signing server that operates on .cab files + Automatically download metadata using fwupdmgr if required + Don't call efibootmgr after fwupdate. + Associate the contact email address directly with the vendor + key + Use the actual LVFS GPG key + Allow running fwsignd as the non-root user + metadata + Do not merge existing LVFS metadata + Do not use the file hash when storing the LVFS submitted + firmwares + Move GetUpdates to the daemon + Change the DBus method for installing firmware to 'Install' + Allow installing an offline UEFI update without --offline + Add a 'fwupdmgr update' command to update all devices to latest + versions + 'update' command + Increase the size limit of firmware to 50Mb + Only sign files when the entire file has been copied + Fallback to offline install when calling the update argument. + Reload appstream data after refreshing. + Release fwupd 0.1.4- Update to version 0.1.3: + Coldplug the devices before acquiring the well known name + Add an UNKNOWN status so we can return meaningful enum values + Run the offline actions using systemd when required + Get the firmware version from the device descriptors + Added syntax highlighting + More markup + Support OpenHardware devices using the fwupd vendor extensions + Move boolean properties on the device to a set of flags + Release fwupd 0.1.3- Update to version 0.1.2: + More markup + Fixed typos and markup for executable + Add slovak translation + Add helper code to validate public key signatures + Decompress any firmware signatures in the .cab file + Verify firmware if a detached signature is present + Show the firmware trust status when doing GetDetails() + Only allow signed firmware to be upgraded without a password + Add some guidelines for vendors to README + Small grammar fix + Extract the .cat file alongside the firmware + Release fwupd 0.1.2- Update to version fwupd_0_1_1: + Do not crash when there are no devices to return + Add a 'get-updates' command to fwupdmgr + Add and document the offline-update lifecycle + Create runtime directories if they do not exist + Create a libfwupd shared library + Export the status as an enumerated value rather than a string + Release fwupd 0.1.1- Initial package.h01-ch5a 1696516248  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1.8.6-150500.4.3.1fwupdhsi.htmlindex.htmllibfwupdlibfwupdpluginlibfwupdRedHatDisplay-Black.woffRedHatDisplay-Black.woff2RedHatDisplay-BlackItalic.woffRedHatDisplay-BlackItalic.woff2RedHatDisplay-Bold.woffRedHatDisplay-Bold.woff2RedHatDisplay-BoldItalic.woffRedHatDisplay-BoldItalic.woff2RedHatDisplay-Italic.woffRedHatDisplay-Italic.woff2RedHatDisplay-Medium.woffRedHatDisplay-Medium.woff2RedHatDisplay-MediumItalic.woffRedHatDisplay-MediumItalic.woff2RedHatDisplay-Regular.woffRedHatDisplay-Regular.woff2RedHatText-Bold.woffRedHatText-Bold.woff2RedHatText-BoldItalic.woffRedHatText-BoldItalic.woff2RedHatText-Italic.woffRedHatText-Italic.woff2RedHatText-Medium.woffRedHatText-Medium.woff2RedHatText-MediumItalic.woffRedHatText-MediumItalic.woff2RedHatText-Regular.woffRedHatText-Regular.woff2SourceCodePro-It.ttf.woffSourceCodePro-Regular.ttf.woffSourceCodePro-Semibold.ttf.woffalias.DeviceFlags.htmlalias.DeviceProblem.htmlalias.PluginFlags.htmlalias.ReleaseFlags.htmlalias.RequestFlags.htmlclass.BiosSetting.htmlclass.Client.htmlclass.Device.htmlclass.Plugin.htmlclass.Release.htmlclass.Remote.htmlclass.Request.htmlclass.SecurityAttr.htmlclasses_hierarchy.htmlconst.BATTERY_LEVEL_INVALID.htmlconst.BIOS_SETTING_DEBUG_CMD.htmlconst.BIOS_SETTING_PENDING_REBOOT.htmlconst.BIOS_SETTING_RESET_BIOS.htmlconst.DBUS_INTERFACE.htmlconst.DBUS_P2P_SOCKET_ADDRESS.htmlconst.DBUS_PATH.htmlconst.DBUS_SERVICE.htmlconst.DEVICE_FLAG_ADD_COUNTERPART_GUIDS.htmlconst.DEVICE_FLAG_AFFECTS_FDE.htmlconst.DEVICE_FLAG_ANOTHER_WRITE_REQUIRED.htmlconst.DEVICE_FLAG_BACKUP_BEFORE_INSTALL.htmlconst.DEVICE_FLAG_CAN_VERIFY.htmlconst.DEVICE_FLAG_CAN_VERIFY_IMAGE.htmlconst.DEVICE_FLAG_DUAL_IMAGE.htmlconst.DEVICE_FLAG_END_OF_LIFE.htmlconst.DEVICE_FLAG_ENSURE_SEMVER.htmlconst.DEVICE_FLAG_HAS_MULTIPLE_BRANCHES.htmlconst.DEVICE_FLAG_HISTORICAL.htmlconst.DEVICE_FLAG_IGNORE_VALIDATION.htmlconst.DEVICE_FLAG_INSTALL_ALL_RELEASES.htmlconst.DEVICE_FLAG_INSTALL_PARENT_FIRST.htmlconst.DEVICE_FLAG_INTERNAL.htmlconst.DEVICE_FLAG_IS_BOOTLOADER.htmlconst.DEVICE_FLAG_LOCKED.htmlconst.DEVICE_FLAG_MD_SET_ICON.htmlconst.DEVICE_FLAG_MD_SET_NAME.htmlconst.DEVICE_FLAG_MD_SET_NAME_CATEGORY.htmlconst.DEVICE_FLAG_MD_SET_VERFMT.htmlconst.DEVICE_FLAG_NEEDS_ACTIVATION.htmlconst.DEVICE_FLAG_NEEDS_BOOTLOADER.htmlconst.DEVICE_FLAG_NEEDS_REBOOT.htmlconst.DEVICE_FLAG_NEEDS_SHUTDOWN.htmlconst.DEVICE_FLAG_NONE.htmlconst.DEVICE_FLAG_NOTIFIED.htmlconst.DEVICE_FLAG_NO_AUTO_INSTANCE_IDS.htmlconst.DEVICE_FLAG_NO_GUID_MATCHING.htmlconst.DEVICE_FLAG_ONLY_OFFLINE.htmlconst.DEVICE_FLAG_ONLY_SUPPORTED.htmlconst.DEVICE_FLAG_ONLY_VERSION_UPGRADE.htmlconst.DEVICE_FLAG_REGISTERED.htmlconst.DEVICE_FLAG_REPORTED.htmlconst.DEVICE_FLAG_REQUIRE_AC.htmlconst.DEVICE_FLAG_SELF_RECOVERY.htmlconst.DEVICE_FLAG_SIGNED_PAYLOAD.htmlconst.DEVICE_FLAG_SKIPS_RESTART.htmlconst.DEVICE_FLAG_SUPPORTED.htmlconst.DEVICE_FLAG_TRUSTED.htmlconst.DEVICE_FLAG_UNREACHABLE.htmlconst.DEVICE_FLAG_UNSIGNED_PAYLOAD.htmlconst.DEVICE_FLAG_UPDATABLE.htmlconst.DEVICE_FLAG_UPDATABLE_HIDDEN.htmlconst.DEVICE_FLAG_USABLE_DURING_UPDATE.htmlconst.DEVICE_FLAG_USE_RUNTIME_VERSION.htmlconst.DEVICE_FLAG_VERSION_CHECK_REQUIRED.htmlconst.DEVICE_FLAG_WAIT_FOR_REPLUG.htmlconst.DEVICE_FLAG_WILDCARD_INSTALL.htmlconst.DEVICE_FLAG_WILL_DISAPPEAR.htmlconst.DEVICE_ID_ANY.htmlconst.DEVICE_PROBLEM_IS_EMULATED.htmlconst.DEVICE_PROBLEM_LID_IS_CLOSED.htmlconst.DEVICE_PROBLEM_MISSING_LICENSE.htmlconst.DEVICE_PROBLEM_NONE.htmlconst.DEVICE_PROBLEM_POWER_TOO_LOW.htmlconst.DEVICE_PROBLEM_REQUIRE_AC_POWER.htmlconst.DEVICE_PROBLEM_SYSTEM_POWER_TOO_LOW.htmlconst.DEVICE_PROBLEM_UNREACHABLE.htmlconst.DEVICE_PROBLEM_UPDATE_PENDING.htmlconst.MAJOR_VERSION.htmlconst.MICRO_VERSION.htmlconst.MINOR_VERSION.htmlconst.PLUGIN_FLAG_AUTH_REQUIRED.htmlconst.PLUGIN_FLAG_CAPSULES_UNSUPPORTED.htmlconst.PLUGIN_FLAG_CLEAR_UPDATABLE.htmlconst.PLUGIN_FLAG_DISABLED.htmlconst.PLUGIN_FLAG_EFIVAR_NOT_MOUNTED.htmlconst.PLUGIN_FLAG_ESP_NOT_FOUND.htmlconst.PLUGIN_FLAG_FAILED_OPEN.htmlconst.PLUGIN_FLAG_KERNEL_TOO_OLD.htmlconst.PLUGIN_FLAG_LEGACY_BIOS.htmlconst.PLUGIN_FLAG_MODULAR.htmlconst.PLUGIN_FLAG_NONE.htmlconst.PLUGIN_FLAG_NO_HARDWARE.htmlconst.PLUGIN_FLAG_REQUIRE_HWID.htmlconst.PLUGIN_FLAG_SECURE_CONFIG.htmlconst.PLUGIN_FLAG_UNLOCK_REQUIRED.htmlconst.PLUGIN_FLAG_USER_WARNING.htmlconst.RELEASE_FLAG_BLOCKED_APPROVAL.htmlconst.RELEASE_FLAG_BLOCKED_VERSION.htmlconst.RELEASE_FLAG_IS_ALTERNATE_BRANCH.htmlconst.RELEASE_FLAG_IS_COMMUNITY.htmlconst.RELEASE_FLAG_IS_DOWNGRADE.htmlconst.RELEASE_FLAG_IS_UPGRADE.htmlconst.RELEASE_FLAG_NONE.htmlconst.RELEASE_FLAG_TRUSTED_METADATA.htmlconst.RELEASE_FLAG_TRUSTED_PAYLOAD.htmlconst.REQUEST_FLAG_ALLOW_GENERIC_IMAGE.htmlconst.REQUEST_FLAG_ALLOW_GENERIC_MESSAGE.htmlconst.REQUEST_FLAG_NONE.htmlconst.REQUEST_ID_DO_NOT_POWER_OFF.htmlconst.REQUEST_ID_PRESS_UNLOCK.htmlconst.REQUEST_ID_REMOVE_REPLUG.htmlconst.REQUEST_ID_REMOVE_USB_CABLE.htmlconst.RESULT_KEY_APPSTREAM_ID.htmlconst.RESULT_KEY_BATTERY_LEVEL.htmlconst.RESULT_KEY_BATTERY_THRESHOLD.htmlconst.RESULT_KEY_BIOS_SETTING_CURRENT_VALUE.htmlconst.RESULT_KEY_BIOS_SETTING_ID.htmlconst.RESULT_KEY_BIOS_SETTING_LOWER_BOUND.htmlconst.RESULT_KEY_BIOS_SETTING_POSSIBLE_VALUES.htmlconst.RESULT_KEY_BIOS_SETTING_READ_ONLY.htmlconst.RESULT_KEY_BIOS_SETTING_SCALAR_INCREMENT.htmlconst.RESULT_KEY_BIOS_SETTING_TARGET_VALUE.htmlconst.RESULT_KEY_BIOS_SETTING_TYPE.htmlconst.RESULT_KEY_BIOS_SETTING_UPPER_BOUND.htmlconst.RESULT_KEY_BRANCH.htmlconst.RESULT_KEY_CATEGORIES.htmlconst.RESULT_KEY_CHECKSUM.htmlconst.RESULT_KEY_COMPOSITE_ID.htmlconst.RESULT_KEY_CREATED.htmlconst.RESULT_KEY_DESCRIPTION.htmlconst.RESULT_KEY_DETACH_CAPTION.htmlconst.RESULT_KEY_DETACH_IMAGE.htmlconst.RESULT_KEY_DETAILS_URL.htmlconst.RESULT_KEY_DEVICE_ID.htmlconst.RESULT_KEY_FILENAME.htmlconst.RESULT_KEY_FLAGS.htmlconst.RESULT_KEY_FLASHES_LEFT.htmlconst.RESULT_KEY_GUID.htmlconst.RESULT_KEY_HOMEPAGE.htmlconst.RESULT_KEY_HSI_LEVEL.htmlconst.RESULT_KEY_HSI_RESULT.htmlconst.RESULT_KEY_HSI_RESULT_FALLBACK.htmlconst.RESULT_KEY_ICON.htmlconst.RESULT_KEY_INSTALL_DURATION.htmlconst.RESULT_KEY_INSTANCE_IDS.htmlconst.RESULT_KEY_ISSUES.htmlconst.RESULT_KEY_LICENSE.htmlconst.RESULT_KEY_LOCATIONS.htmlconst.RESULT_KEY_METADATA.htmlconst.RESULT_KEY_MODIFIED.htmlconst.RESULT_KEY_NAME.htmlconst.RESULT_KEY_NAME_VARIANT_SUFFIX.htmlconst.RESULT_KEY_PARENT_DEVICE_ID.htmlconst.RESULT_KEY_PLUGIN.htmlconst.RESULT_KEY_PROBLEMS.htmlconst.RESULT_KEY_PROTOCOL.htmlconst.RESULT_KEY_RELEASE.htmlconst.RESULT_KEY_RELEASE_ID.htmlconst.RESULT_KEY_REMOTE_ID.htmlconst.RESULT_KEY_REQUEST_KIND.htmlconst.RESULT_KEY_SERIAL.htmlconst.RESULT_KEY_SIZE.htmlconst.RESULT_KEY_SOURCE_URL.htmlconst.RESULT_KEY_STATUS.htmlconst.RESULT_KEY_SUMMARY.htmlconst.RESULT_KEY_TAGS.htmlconst.RESULT_KEY_TRUST_FLAGS.htmlconst.RESULT_KEY_UPDATE_ERROR.htmlconst.RESULT_KEY_UPDATE_IMAGE.htmlconst.RESULT_KEY_UPDATE_MESSAGE.htmlconst.RESULT_KEY_UPDATE_STATE.htmlconst.RESULT_KEY_URGENCY.htmlconst.RESULT_KEY_URI.htmlconst.RESULT_KEY_VENDOR.htmlconst.RESULT_KEY_VENDOR_ID.htmlconst.RESULT_KEY_VERSION.htmlconst.RESULT_KEY_VERSION_BOOTLOADER.htmlconst.RESULT_KEY_VERSION_BOOTLOADER_RAW.htmlconst.RESULT_KEY_VERSION_BUILD_DATE.htmlconst.RESULT_KEY_VERSION_FORMAT.htmlconst.RESULT_KEY_VERSION_LOWEST.htmlconst.RESULT_KEY_VERSION_LOWEST_RAW.htmlconst.RESULT_KEY_VERSION_RAW.htmlconst.SECURITY_ATTR_ID_AMD_ROLLBACK_PROTECTION.htmlconst.SECURITY_ATTR_ID_AMD_SPI_REPLAY_PROTECTION.htmlconst.SECURITY_ATTR_ID_AMD_SPI_WRITE_PROTECTION.htmlconst.SECURITY_ATTR_ID_ENCRYPTED_RAM.htmlconst.SECURITY_ATTR_ID_FWUPD_ATTESTATION.htmlconst.SECURITY_ATTR_ID_FWUPD_PLUGINS.htmlconst.SECURITY_ATTR_ID_FWUPD_UPDATES.htmlconst.SECURITY_ATTR_ID_HOST_EMULATION.htmlconst.SECURITY_ATTR_ID_INTEL_BOOTGUARD_ACM.htmlconst.SECURITY_ATTR_ID_INTEL_BOOTGUARD_ENABLED.htmlconst.SECURITY_ATTR_ID_INTEL_BOOTGUARD_OTP.htmlconst.SECURITY_ATTR_ID_INTEL_BOOTGUARD_POLICY.htmlconst.SECURITY_ATTR_ID_INTEL_BOOTGUARD_VERIFIED.htmlconst.SECURITY_ATTR_ID_INTEL_CET_ACTIVE.htmlconst.SECURITY_ATTR_ID_INTEL_CET_ENABLED.htmlconst.SECURITY_ATTR_ID_INTEL_SMAP.htmlconst.SECURITY_ATTR_ID_IOMMU.htmlconst.SECURITY_ATTR_ID_KERNEL_LOCKDOWN.htmlconst.SECURITY_ATTR_ID_KERNEL_SWAP.htmlconst.SECURITY_ATTR_ID_KERNEL_TAINTED.htmlconst.SECURITY_ATTR_ID_MEI_MANUFACTURING_MODE.htmlconst.SECURITY_ATTR_ID_MEI_OVERRIDE_STRAP.htmlconst.SECURITY_ATTR_ID_MEI_VERSION.htmlconst.SECURITY_ATTR_ID_PLATFORM_DEBUG_ENABLED.htmlconst.SECURITY_ATTR_ID_PLATFORM_DEBUG_LOCKED.htmlconst.SECURITY_ATTR_ID_PLATFORM_FUSED.htmlconst.SECURITY_ATTR_ID_PREBOOT_DMA_PROTECTION.htmlconst.SECURITY_ATTR_ID_SPI_BIOSWE.htmlconst.SECURITY_ATTR_ID_SPI_BLE.htmlconst.SECURITY_ATTR_ID_SPI_DESCRIPTOR.htmlconst.SECURITY_ATTR_ID_SPI_SMM_BWP.htmlconst.SECURITY_ATTR_ID_SUPPORTED_CPU.htmlconst.SECURITY_ATTR_ID_SUSPEND_TO_IDLE.htmlconst.SECURITY_ATTR_ID_SUSPEND_TO_RAM.htmlconst.SECURITY_ATTR_ID_TPM_EMPTY_PCR.htmlconst.SECURITY_ATTR_ID_TPM_RECONSTRUCTION_PCR0.htmlconst.SECURITY_ATTR_ID_TPM_VERSION_20.htmlconst.SECURITY_ATTR_ID_UEFI_PK.htmlconst.SECURITY_ATTR_ID_UEFI_SECUREBOOT.htmlctor.BiosSetting.new.htmlctor.Client.new.htmlctor.Device.new.htmlctor.Plugin.new.htmlctor.Release.new.htmlctor.Remote.new.htmlctor.Request.new.htmlctor.SecurityAttr.new.htmlenum.BiosSettingKind.htmlenum.KeyringKind.htmlenum.ReleaseUrgency.htmlenum.RemoteKind.htmlenum.RequestKind.htmlenum.SecurityAttrLevel.htmlenum.SecurityAttrResult.htmlenum.Status.htmlenum.UpdateState.htmlenum.VersionFormat.htmlerror.Error.htmlflags.ClientDownloadFlags.htmlflags.ClientUploadFlags.htmlflags.FeatureFlags.htmlflags.GuidFlags.htmlflags.InstallFlags.htmlflags.SecurityAttrFlags.htmlflags.SelfSignFlags.htmlflags.TrustFlags.htmlfonts.cssfunc.CHECK_VERSION.htmlfunc.build_history_report_json.htmlfunc.build_machine_id.htmlfunc.build_user_agent.htmlfunc.checksum_format_for_display.htmlfunc.checksum_get_best.htmlfunc.checksum_get_by_kind.htmlfunc.checksum_guess_kind.htmlfunc.common_json_add_boolean.htmlfunc.common_json_add_int.htmlfunc.common_json_add_string.htmlfunc.common_json_add_stringv.htmlfunc.error_from_string.htmlfunc.error_quark.htmlfunc.error_to_string.htmlfunc.feature_flag_from_string.htmlfunc.feature_flag_to_string.htmlfunc.get_os_release.htmlfunc.guid_from_string.htmlfunc.guid_hash_data.htmlfunc.guid_hash_string.htmlfunc.guid_is_valid.htmlfunc.guid_to_string.htmlfunc.keyring_kind_from_string.htmlfunc.keyring_kind_to_string.htmlfunc.pad_kv_int.htmlfunc.pad_kv_str.htmlfunc.pad_kv_unx.htmlfunc.status_from_string.htmlfunc.status_to_string.htmlfunc.trust_flag_from_string.htmlfunc.trust_flag_to_string.htmlfunc.update_state_from_string.htmlfunc.update_state_to_string.htmlfunc.version_format_from_string.htmlfunc.version_format_to_string.htmlfunc.version_string.htmlfzy.jsgo-up-symbolic.pngindex.htmlindex.jsonlibfwupd.devhelp2main.jsmethod.BiosSetting.add_possible_value.htmlmethod.BiosSetting.from_json.htmlmethod.BiosSetting.get_current_value.htmlmethod.BiosSetting.get_description.htmlmethod.BiosSetting.get_id.htmlmethod.BiosSetting.get_kind.htmlmethod.BiosSetting.get_lower_bound.htmlmethod.BiosSetting.get_name.htmlmethod.BiosSetting.get_path.htmlmethod.BiosSetting.get_possible_values.htmlmethod.BiosSetting.get_read_only.htmlmethod.BiosSetting.get_scalar_increment.htmlmethod.BiosSetting.get_upper_bound.htmlmethod.BiosSetting.has_possible_value.htmlmethod.BiosSetting.map_possible_value.htmlmethod.BiosSetting.set_current_value.htmlmethod.BiosSetting.set_description.htmlmethod.BiosSetting.set_id.htmlmethod.BiosSetting.set_kind.htmlmethod.BiosSetting.set_lower_bound.htmlmethod.BiosSetting.set_name.htmlmethod.BiosSetting.set_path.htmlmethod.BiosSetting.set_read_only.htmlmethod.BiosSetting.set_scalar_increment.htmlmethod.BiosSetting.set_upper_bound.htmlmethod.BiosSetting.to_json.htmlmethod.BiosSetting.to_string.htmlmethod.BiosSetting.to_variant.htmlmethod.Client.activate.htmlmethod.Client.activate_async.htmlmethod.Client.activate_finish.htmlmethod.Client.add_hint.htmlmethod.Client.clear_results.htmlmethod.Client.clear_results_async.htmlmethod.Client.clear_results_finish.htmlmethod.Client.connect.htmlmethod.Client.connect_async.htmlmethod.Client.connect_finish.htmlmethod.Client.disconnect.htmlmethod.Client.download_bytes.htmlmethod.Client.download_bytes_async.htmlmethod.Client.download_bytes_finish.htmlmethod.Client.download_file.htmlmethod.Client.ensure_networking.htmlmethod.Client.get_approved_firmware.htmlmethod.Client.get_approved_firmware_async.htmlmethod.Client.get_approved_firmware_finish.htmlmethod.Client.get_battery_level.htmlmethod.Client.get_battery_threshold.htmlmethod.Client.get_bios_settings.htmlmethod.Client.get_bios_settings_async.htmlmethod.Client.get_bios_settings_finish.htmlmethod.Client.get_blocked_firmware.htmlmethod.Client.get_blocked_firmware_async.htmlmethod.Client.get_blocked_firmware_finish.htmlmethod.Client.get_daemon_interactive.htmlmethod.Client.get_daemon_version.htmlmethod.Client.get_details.htmlmethod.Client.get_details_bytes.htmlmethod.Client.get_details_bytes_async.htmlmethod.Client.get_details_bytes_finish.htmlmethod.Client.get_device_by_id.htmlmethod.Client.get_device_by_id_async.htmlmethod.Client.get_device_by_id_finish.htmlmethod.Client.get_devices.htmlmethod.Client.get_devices_async.htmlmethod.Client.get_devices_by_guid.htmlmethod.Client.get_devices_by_guid_async.htmlmethod.Client.get_devices_by_guid_finish.htmlmethod.Client.get_devices_finish.htmlmethod.Client.get_downgrades.htmlmethod.Client.get_downgrades_async.htmlmethod.Client.get_downgrades_finish.htmlmethod.Client.get_history.htmlmethod.Client.get_history_async.htmlmethod.Client.get_history_finish.htmlmethod.Client.get_host_bkc.htmlmethod.Client.get_host_machine_id.htmlmethod.Client.get_host_product.htmlmethod.Client.get_host_security_attrs.htmlmethod.Client.get_host_security_attrs_async.htmlmethod.Client.get_host_security_attrs_finish.htmlmethod.Client.get_host_security_events.htmlmethod.Client.get_host_security_events_async.htmlmethod.Client.get_host_security_events_finish.htmlmethod.Client.get_host_security_id.htmlmethod.Client.get_host_vendor.htmlmethod.Client.get_main_context.htmlmethod.Client.get_only_trusted.htmlmethod.Client.get_percentage.htmlmethod.Client.get_plugins.htmlmethod.Client.get_plugins_async.htmlmethod.Client.get_plugins_finish.htmlmethod.Client.get_releases.htmlmethod.Client.get_releases_async.htmlmethod.Client.get_releases_finish.htmlmethod.Client.get_remote_by_id.htmlmethod.Client.get_remote_by_id_async.htmlmethod.Client.get_remote_by_id_finish.htmlmethod.Client.get_remotes.htmlmethod.Client.get_remotes_async.htmlmethod.Client.get_remotes_finish.htmlmethod.Client.get_report_metadata.htmlmethod.Client.get_report_metadata_async.htmlmethod.Client.get_report_metadata_finish.htmlmethod.Client.get_results.htmlmethod.Client.get_results_async.htmlmethod.Client.get_results_finish.htmlmethod.Client.get_status.htmlmethod.Client.get_tainted.htmlmethod.Client.get_upgrades.htmlmethod.Client.get_upgrades_async.htmlmethod.Client.get_upgrades_finish.htmlmethod.Client.get_user_agent.htmlmethod.Client.install.htmlmethod.Client.install_async.htmlmethod.Client.install_bytes.htmlmethod.Client.install_bytes_async.htmlmethod.Client.install_bytes_finish.htmlmethod.Client.install_finish.htmlmethod.Client.install_release.htmlmethod.Client.install_release2.htmlmethod.Client.install_release2_async.htmlmethod.Client.install_release_async.htmlmethod.Client.install_release_finish.htmlmethod.Client.modify_bios_setting.htmlmethod.Client.modify_bios_setting_async.htmlmethod.Client.modify_bios_setting_finish.htmlmethod.Client.modify_config.htmlmethod.Client.modify_config_async.htmlmethod.Client.modify_config_finish.htmlmethod.Client.modify_device.htmlmethod.Client.modify_device_async.htmlmethod.Client.modify_device_finish.htmlmethod.Client.modify_remote.htmlmethod.Client.modify_remote_async.htmlmethod.Client.modify_remote_finish.htmlmethod.Client.refresh_remote.htmlmethod.Client.refresh_remote_async.htmlmethod.Client.refresh_remote_finish.htmlmethod.Client.self_sign.htmlmethod.Client.self_sign_async.htmlmethod.Client.self_sign_finish.htmlmethod.Client.set_approved_firmware.htmlmethod.Client.set_approved_firmware_async.htmlmethod.Client.set_approved_firmware_finish.htmlmethod.Client.set_blocked_firmware.htmlmethod.Client.set_blocked_firmware_async.htmlmethod.Client.set_blocked_firmware_finish.htmlmethod.Client.set_feature_flags.htmlmethod.Client.set_feature_flags_async.htmlmethod.Client.set_feature_flags_finish.htmlmethod.Client.set_main_context.htmlmethod.Client.set_user_agent.htmlmethod.Client.set_user_agent_for_package.htmlmethod.Client.unlock.htmlmethod.Client.unlock_async.htmlmethod.Client.unlock_finish.htmlmethod.Client.update_metadata.htmlmethod.Client.update_metadata_bytes.htmlmethod.Client.update_metadata_bytes_async.htmlmethod.Client.update_metadata_bytes_finish.htmlmethod.Client.upload_bytes.htmlmethod.Client.upload_bytes_async.htmlmethod.Client.upload_bytes_finish.htmlmethod.Client.verify.htmlmethod.Client.verify_async.htmlmethod.Client.verify_finish.htmlmethod.Client.verify_update.htmlmethod.Client.verify_update_async.htmlmethod.Client.verify_update_finish.htmlmethod.Device.add_checksum.htmlmethod.Device.add_child.htmlmethod.Device.add_flag.htmlmethod.Device.add_guid.htmlmethod.Device.add_icon.htmlmethod.Device.add_instance_id.htmlmethod.Device.add_issue.htmlmethod.Device.add_problem.htmlmethod.Device.add_protocol.htmlmethod.Device.add_release.htmlmethod.Device.add_vendor_id.htmlmethod.Device.compare.htmlmethod.Device.from_json.htmlmethod.Device.get_battery_level.htmlmethod.Device.get_battery_threshold.htmlmethod.Device.get_branch.htmlmethod.Device.get_checksums.htmlmethod.Device.get_children.htmlmethod.Device.get_composite_id.htmlmethod.Device.get_created.htmlmethod.Device.get_description.htmlmethod.Device.get_flags.htmlmethod.Device.get_flashes_left.htmlmethod.Device.get_guid_default.htmlmethod.Device.get_guids.htmlmethod.Device.get_icons.htmlmethod.Device.get_id.htmlmethod.Device.get_install_duration.htmlmethod.Device.get_instance_ids.htmlmethod.Device.get_issues.htmlmethod.Device.get_modified.htmlmethod.Device.get_name.htmlmethod.Device.get_parent.htmlmethod.Device.get_parent_id.htmlmethod.Device.get_plugin.htmlmethod.Device.get_problems.htmlmethod.Device.get_protocol.htmlmethod.Device.get_protocols.htmlmethod.Device.get_release_default.htmlmethod.Device.get_releases.htmlmethod.Device.get_root.htmlmethod.Device.get_serial.htmlmethod.Device.get_status.htmlmethod.Device.get_summary.htmlmethod.Device.get_update_error.htmlmethod.Device.get_update_image.htmlmethod.Device.get_update_message.htmlmethod.Device.get_update_state.htmlmethod.Device.get_vendor.htmlmethod.Device.get_vendor_id.htmlmethod.Device.get_vendor_ids.htmlmethod.Device.get_version.htmlmethod.Device.get_version_bootloader.htmlmethod.Device.get_version_bootloader_raw.htmlmethod.Device.get_version_build_date.htmlmethod.Device.get_version_format.htmlmethod.Device.get_version_lowest.htmlmethod.Device.get_version_lowest_raw.htmlmethod.Device.get_version_raw.htmlmethod.Device.has_flag.htmlmethod.Device.has_guid.htmlmethod.Device.has_icon.htmlmethod.Device.has_instance_id.htmlmethod.Device.has_problem.htmlmethod.Device.has_protocol.htmlmethod.Device.has_vendor_id.htmlmethod.Device.incorporate.htmlmethod.Device.remove_child.htmlmethod.Device.remove_flag.htmlmethod.Device.remove_problem.htmlmethod.Device.set_battery_level.htmlmethod.Device.set_battery_threshold.htmlmethod.Device.set_branch.htmlmethod.Device.set_composite_id.htmlmethod.Device.set_created.htmlmethod.Device.set_description.htmlmethod.Device.set_flags.htmlmethod.Device.set_flashes_left.htmlmethod.Device.set_id.htmlmethod.Device.set_install_duration.htmlmethod.Device.set_modified.htmlmethod.Device.set_name.htmlmethod.Device.set_parent.htmlmethod.Device.set_parent_id.htmlmethod.Device.set_plugin.htmlmethod.Device.set_problems.htmlmethod.Device.set_protocol.htmlmethod.Device.set_serial.htmlmethod.Device.set_status.htmlmethod.Device.set_summary.htmlmethod.Device.set_update_error.htmlmethod.Device.set_update_image.htmlmethod.Device.set_update_message.htmlmethod.Device.set_update_state.htmlmethod.Device.set_vendor.htmlmethod.Device.set_vendor_id.htmlmethod.Device.set_version.htmlmethod.Device.set_version_bootloader.htmlmethod.Device.set_version_bootloader_raw.htmlmethod.Device.set_version_build_date.htmlmethod.Device.set_version_format.htmlmethod.Device.set_version_lowest.htmlmethod.Device.set_version_lowest_raw.htmlmethod.Device.set_version_raw.htmlmethod.Device.to_json.htmlmethod.Device.to_json_full.htmlmethod.Device.to_string.htmlmethod.Device.to_variant.htmlmethod.Device.to_variant_full.htmlmethod.Plugin.add_flag.htmlmethod.Plugin.get_flags.htmlmethod.Plugin.get_name.htmlmethod.Plugin.has_flag.htmlmethod.Plugin.remove_flag.htmlmethod.Plugin.set_flags.htmlmethod.Plugin.set_name.htmlmethod.Plugin.to_json.htmlmethod.Plugin.to_string.htmlmethod.Plugin.to_variant.htmlmethod.Release.add_category.htmlmethod.Release.add_checksum.htmlmethod.Release.add_flag.htmlmethod.Release.add_issue.htmlmethod.Release.add_location.htmlmethod.Release.add_metadata.htmlmethod.Release.add_metadata_item.htmlmethod.Release.add_tag.htmlmethod.Release.get_appstream_id.htmlmethod.Release.get_branch.htmlmethod.Release.get_categories.htmlmethod.Release.get_checksums.htmlmethod.Release.get_created.htmlmethod.Release.get_description.htmlmethod.Release.get_detach_caption.htmlmethod.Release.get_detach_image.htmlmethod.Release.get_details_url.htmlmethod.Release.get_filename.htmlmethod.Release.get_flags.htmlmethod.Release.get_homepage.htmlmethod.Release.get_id.htmlmethod.Release.get_install_duration.htmlmethod.Release.get_issues.htmlmethod.Release.get_license.htmlmethod.Release.get_locations.htmlmethod.Release.get_metadata.htmlmethod.Release.get_metadata_item.htmlmethod.Release.get_name.htmlmethod.Release.get_name_variant_suffix.htmlmethod.Release.get_protocol.htmlmethod.Release.get_remote_id.htmlmethod.Release.get_size.htmlmethod.Release.get_source_url.htmlmethod.Release.get_summary.htmlmethod.Release.get_tags.htmlmethod.Release.get_trust_flags.htmlmethod.Release.get_update_image.htmlmethod.Release.get_update_message.htmlmethod.Release.get_urgency.htmlmethod.Release.get_uri.htmlmethod.Release.get_vendor.htmlmethod.Release.get_version.htmlmethod.Release.has_category.htmlmethod.Release.has_checksum.htmlmethod.Release.has_flag.htmlmethod.Release.has_tag.htmlmethod.Release.remove_flag.htmlmethod.Release.set_appstream_id.htmlmethod.Release.set_branch.htmlmethod.Release.set_created.htmlmethod.Release.set_description.htmlmethod.Release.set_detach_caption.htmlmethod.Release.set_detach_image.htmlmethod.Release.set_details_url.htmlmethod.Release.set_filename.htmlmethod.Release.set_flags.htmlmethod.Release.set_homepage.htmlmethod.Release.set_id.htmlmethod.Release.set_install_duration.htmlmethod.Release.set_license.htmlmethod.Release.set_name.htmlmethod.Release.set_name_variant_suffix.htmlmethod.Release.set_protocol.htmlmethod.Release.set_remote_id.htmlmethod.Release.set_size.htmlmethod.Release.set_source_url.htmlmethod.Release.set_summary.htmlmethod.Release.set_trust_flags.htmlmethod.Release.set_update_image.htmlmethod.Release.set_update_message.htmlmethod.Release.set_urgency.htmlmethod.Release.set_uri.htmlmethod.Release.set_vendor.htmlmethod.Release.set_version.htmlmethod.Release.to_json.htmlmethod.Release.to_string.htmlmethod.Release.to_variant.htmlmethod.Remote.build_firmware_uri.htmlmethod.Remote.get_age.htmlmethod.Remote.get_agreement.htmlmethod.Remote.get_approval_required.htmlmethod.Remote.get_automatic_reports.htmlmethod.Remote.get_automatic_security_reports.htmlmethod.Remote.get_checksum.htmlmethod.Remote.get_enabled.htmlmethod.Remote.get_filename_cache.htmlmethod.Remote.get_filename_cache_sig.htmlmethod.Remote.get_filename_source.htmlmethod.Remote.get_firmware_base_uri.htmlmethod.Remote.get_id.htmlmethod.Remote.get_keyring_kind.htmlmethod.Remote.get_kind.htmlmethod.Remote.get_metadata_uri.htmlmethod.Remote.get_metadata_uri_sig.htmlmethod.Remote.get_order_after.htmlmethod.Remote.get_order_before.htmlmethod.Remote.get_password.htmlmethod.Remote.get_priority.htmlmethod.Remote.get_remotes_dir.htmlmethod.Remote.get_report_uri.htmlmethod.Remote.get_security_report_uri.htmlmethod.Remote.get_title.htmlmethod.Remote.get_username.htmlmethod.Remote.load_from_filename.htmlmethod.Remote.load_signature.htmlmethod.Remote.load_signature_bytes.htmlmethod.Remote.set_agreement.htmlmethod.Remote.set_checksum.htmlmethod.Remote.set_filename_cache.htmlmethod.Remote.set_filename_source.htmlmethod.Remote.set_keyring_kind.htmlmethod.Remote.set_mtime.htmlmethod.Remote.set_priority.htmlmethod.Remote.set_remotes_dir.htmlmethod.Remote.setup.htmlmethod.Remote.to_json.htmlmethod.Remote.to_variant.htmlmethod.Request.add_flag.htmlmethod.Request.get_created.htmlmethod.Request.get_device_id.htmlmethod.Request.get_flags.htmlmethod.Request.get_id.htmlmethod.Request.get_image.htmlmethod.Request.get_kind.htmlmethod.Request.get_message.htmlmethod.Request.has_flag.htmlmethod.Request.remove_flag.htmlmethod.Request.set_created.htmlmethod.Request.set_device_id.htmlmethod.Request.set_flags.htmlmethod.Request.set_id.htmlmethod.Request.set_image.htmlmethod.Request.set_kind.htmlmethod.Request.set_message.htmlmethod.Request.to_string.htmlmethod.Request.to_variant.htmlmethod.SecurityAttr.add_flag.htmlmethod.SecurityAttr.add_guid.htmlmethod.SecurityAttr.add_guids.htmlmethod.SecurityAttr.add_metadata.htmlmethod.SecurityAttr.add_obsolete.htmlmethod.SecurityAttr.copy.htmlmethod.SecurityAttr.from_json.htmlmethod.SecurityAttr.get_appstream_id.htmlmethod.SecurityAttr.get_bios_setting_current_value.htmlmethod.SecurityAttr.get_bios_setting_id.htmlmethod.SecurityAttr.get_bios_setting_target_value.htmlmethod.SecurityAttr.get_created.htmlmethod.SecurityAttr.get_description.htmlmethod.SecurityAttr.get_flags.htmlmethod.SecurityAttr.get_guids.htmlmethod.SecurityAttr.get_level.htmlmethod.SecurityAttr.get_metadata.htmlmethod.SecurityAttr.get_name.htmlmethod.SecurityAttr.get_obsoletes.htmlmethod.SecurityAttr.get_plugin.htmlmethod.SecurityAttr.get_result.htmlmethod.SecurityAttr.get_result_fallback.htmlmethod.SecurityAttr.get_title.htmlmethod.SecurityAttr.get_url.htmlmethod.SecurityAttr.has_flag.htmlmethod.SecurityAttr.has_guid.htmlmethod.SecurityAttr.has_obsolete.htmlmethod.SecurityAttr.remove_flag.htmlmethod.SecurityAttr.set_appstream_id.htmlmethod.SecurityAttr.set_bios_setting_current_value.htmlmethod.SecurityAttr.set_bios_setting_id.htmlmethod.SecurityAttr.set_bios_setting_target_value.htmlmethod.SecurityAttr.set_created.htmlmethod.SecurityAttr.set_description.htmlmethod.SecurityAttr.set_flags.htmlmethod.SecurityAttr.set_level.htmlmethod.SecurityAttr.set_name.htmlmethod.SecurityAttr.set_plugin.htmlmethod.SecurityAttr.set_result.htmlmethod.SecurityAttr.set_result_fallback.htmlmethod.SecurityAttr.set_title.htmlmethod.SecurityAttr.set_url.htmlmethod.SecurityAttr.to_json.htmlmethod.SecurityAttr.to_string.htmlmethod.SecurityAttr.to_variant.htmlorg.freedesktop.fwupd.svgproperty.Client.battery-level.htmlproperty.Client.battery-threshold.htmlproperty.Client.daemon-version.htmlproperty.Client.host-bkc.htmlproperty.Client.host-machine-id.htmlproperty.Client.host-product.htmlproperty.Client.host-security-id.htmlproperty.Client.host-vendor.htmlproperty.Client.interactive.htmlproperty.Client.only-trusted.htmlproperty.Client.percentage.htmlproperty.Client.soup-session.htmlproperty.Client.status.htmlproperty.Client.tainted.htmlproperty.Device.battery-level.htmlproperty.Device.battery-threshold.htmlproperty.Device.flags.htmlproperty.Device.parent.htmlproperty.Device.problems.htmlproperty.Device.protocol.htmlproperty.Device.status.htmlproperty.Device.update-error.htmlproperty.Device.update-image.htmlproperty.Device.update-message.htmlproperty.Device.update-state.htmlproperty.Device.version-format.htmlproperty.Plugin.flags.htmlproperty.Plugin.name.htmlproperty.Release.remote-id.htmlproperty.Remote.approval-required.htmlproperty.Remote.automatic-reports.htmlproperty.Remote.automatic-security-reports.htmlproperty.Remote.enabled.htmlproperty.Remote.id.htmlproperty.Request.device-id.htmlproperty.Request.flags.htmlproperty.Request.id.htmlproperty.Request.image.htmlproperty.Request.kind.htmlproperty.Request.message.htmlpygment.csssearch.jssignal.Client.changed.htmlsignal.Client.device-added.htmlsignal.Client.device-changed.htmlsignal.Client.device-removed.htmlsignal.Client.device-request.htmlsignal.Client.status-changed.htmlstyle.csstype_func.BiosSetting.array_from_variant.htmltype_func.BiosSetting.from_variant.htmltype_func.Device.array_ensure_parents.htmltype_func.Device.array_from_variant.htmltype_func.Device.flag_from_string.htmltype_func.Device.flag_to_string.htmltype_func.Device.from_variant.htmltype_func.Device.id_is_valid.htmltype_func.Device.problem_from_string.htmltype_func.Device.problem_to_string.htmltype_func.Plugin.array_from_variant.htmltype_func.Plugin.flag_from_string.htmltype_func.Plugin.flag_to_string.htmltype_func.Plugin.from_variant.htmltype_func.Release.array_from_variant.htmltype_func.Release.flag_from_string.htmltype_func.Release.flag_to_string.htmltype_func.Release.from_variant.htmltype_func.Release.urgency_from_string.htmltype_func.Release.urgency_to_string.htmltype_func.Remote.array_from_variant.htmltype_func.Remote.from_variant.htmltype_func.Remote.kind_from_string.htmltype_func.Remote.kind_to_string.htmltype_func.Request.flag_from_string.htmltype_func.Request.flag_to_string.htmltype_func.Request.from_variant.htmltype_func.Request.kind_from_string.htmltype_func.Request.kind_to_string.htmltype_func.SecurityAttr.array_from_variant.htmltype_func.SecurityAttr.flag_from_string.htmltype_func.SecurityAttr.flag_to_string.htmltype_func.SecurityAttr.flag_to_suffix.htmltype_func.SecurityAttr.from_variant.htmltype_func.SecurityAttr.result_from_string.htmltype_func.SecurityAttr.result_to_string.htmlurlmap_fwupd.jsvfunc.Client.changed.htmlvfunc.Client.device_added.htmlvfunc.Client.device_changed.htmlvfunc.Client.device_removed.htmlvfunc.Client.device_request.htmlvfunc.Client.status_changed.htmllibfwupdpluginRedHatDisplay-Black.woffRedHatDisplay-Black.woff2RedHatDisplay-BlackItalic.woffRedHatDisplay-BlackItalic.woff2RedHatDisplay-Bold.woffRedHatDisplay-Bold.woff2RedHatDisplay-BoldItalic.woffRedHatDisplay-BoldItalic.woff2RedHatDisplay-Italic.woffRedHatDisplay-Italic.woff2RedHatDisplay-Medium.woffRedHatDisplay-Medium.woff2RedHatDisplay-MediumItalic.woffRedHatDisplay-MediumItalic.woff2RedHatDisplay-Regular.woffRedHatDisplay-Regular.woff2RedHatText-Bold.woffRedHatText-Bold.woff2RedHatText-BoldItalic.woffRedHatText-BoldItalic.woff2RedHatText-Italic.woffRedHatText-Italic.woff2RedHatText-Medium.woffRedHatText-Medium.woff2RedHatText-MediumItalic.woffRedHatText-MediumItalic.woff2RedHatText-Regular.woffRedHatText-Regular.woff2SourceCodePro-It.ttf.woffSourceCodePro-Regular.ttf.woffSourceCodePro-Semibold.ttf.woffalias.ContextFlags.htmlalias.DeviceInternalFlags.htmlalias.EndianType.htmlalias.FirmwareExportFlags.htmlalias.FirmwareFlags.htmlalias.ProgressFlags.htmlarchitecture-plan.svgbios-settings.htmlcallback.ArchiveIterateFunc.htmlcallback.ContextLookupIter.htmlcallback.DeviceLockerFunc.htmlcallback.DeviceRetryFunc.htmlcallback.QuirksIter.htmlcallback.StrsplitFunc.htmlclass.Archive.htmlclass.ArchiveFirmware.htmlclass.Backend.htmlclass.BiosSettings.htmlclass.BluezDevice.htmlclass.Cabinet.htmlclass.CfiDevice.htmlclass.CfuOffer.htmlclass.CfuPayload.htmlclass.Chunk.htmlclass.Context.htmlclass.CoswidFirmware.htmlclass.Device.htmlclass.DeviceLocker.htmlclass.DfuFirmware.htmlclass.DfuseFirmware.htmlclass.EfiFirmwareFile.htmlclass.EfiFirmwareFilesystem.htmlclass.EfiFirmwareSection.htmlclass.EfiFirmwareVolume.htmlclass.EfiSignature.htmlclass.EfiSignatureList.htmlclass.FdtFirmware.htmlclass.FdtImage.htmlclass.Firmware.htmlclass.FitFirmware.htmlclass.FmapFirmware.htmlclass.HidDevice.htmlclass.Hwids.htmlclass.I2cDevice.htmlclass.IOChannel.htmlclass.IfdBios.htmlclass.IfdFirmware.htmlclass.IfdImage.htmlclass.IfwiCpdFirmware.htmlclass.IfwiFptFirmware.htmlclass.IhexFirmware.htmlclass.IntelThunderboltFirmware.htmlclass.IntelThunderboltNvm.htmlclass.LinearFirmware.htmlclass.MeiDevice.htmlclass.OpromFirmware.htmlclass.Plugin.htmlclass.Progress.htmlclass.Quirks.htmlclass.SecurityAttr.htmlclass.SecurityAttrs.htmlclass.Smbios.htmlclass.SrecFirmware.htmlclass.UdevDevice.htmlclass.UsbDevice.htmlclass.UsbDeviceDs20.htmlclass.UsbDeviceFwDs20.htmlclass.UsbDeviceMsDs20.htmlclass.UswidFirmware.htmlclass.Volume.htmlclasses_hierarchy.htmlconst.CFU_DEVICE_FLAG_FIRST_BLOCK.htmlconst.CFU_DEVICE_FLAG_LAST_BLOCK.htmlconst.CFU_DEVICE_OFFER_ACCEPT.htmlconst.CFU_DEVICE_OFFER_BUSY.htmlconst.CFU_DEVICE_OFFER_COMMAND.htmlconst.CFU_DEVICE_OFFER_NOT_SUPPORTED.htmlconst.CFU_DEVICE_OFFER_REJECT.htmlconst.CFU_DEVICE_OFFER_SKIP.htmlconst.CFU_DEVICE_REJECT_DEBUG_SAME_VERSION.htmlconst.CFU_DEVICE_REJECT_INV_COMPONENT.htmlconst.CFU_DEVICE_REJECT_OLD_FIRMWARE.htmlconst.CFU_DEVICE_REJECT_SIGN_RULE.htmlconst.CFU_DEVICE_REJECT_SWAP_PENDING.htmlconst.CFU_DEVICE_REJECT_VER_RELEASE_DEBUG.htmlconst.CFU_DEVICE_REJECT_WRONG_BANK.htmlconst.CFU_DEVICE_STATUS_ERROR_COMPLETE.htmlconst.CFU_DEVICE_STATUS_ERROR_CRC.htmlconst.CFU_DEVICE_STATUS_ERROR_INVALID.htmlconst.CFU_DEVICE_STATUS_ERROR_INVALID_ADDR.htmlconst.CFU_DEVICE_STATUS_ERROR_NO_OFFER.htmlconst.CFU_DEVICE_STATUS_ERROR_PREPARE.htmlconst.CFU_DEVICE_STATUS_ERROR_SIGNATURE.htmlconst.CFU_DEVICE_STATUS_ERROR_VERIFY.htmlconst.CFU_DEVICE_STATUS_ERROR_VERSION.htmlconst.CFU_DEVICE_STATUS_ERROR_WRITE.htmlconst.CFU_DEVICE_STATUS_SUCCESS.htmlconst.CFU_DEVICE_STATUS_SWAP_PENDING.htmlconst.CONTEXT_FLAG_NONE.htmlconst.CONTEXT_FLAG_SAVE_EVENTS.htmlconst.DEVICE_INTERNAL_AUTO_PAUSE_POLLING.htmlconst.DEVICE_INTERNAL_FLAG_ATTACH_EXTRA_RESET.htmlconst.DEVICE_INTERNAL_FLAG_AUTO_PARENT_CHILDREN.htmlconst.DEVICE_INTERNAL_FLAG_ENSURE_SEMVER.htmlconst.DEVICE_INTERNAL_FLAG_INHERIT_ACTIVATION.htmlconst.DEVICE_INTERNAL_FLAG_INHIBIT_CHILDREN.htmlconst.DEVICE_INTERNAL_FLAG_IS_OPEN.htmlconst.DEVICE_INTERNAL_FLAG_MD_SET_ICON.htmlconst.DEVICE_INTERNAL_FLAG_MD_SET_NAME.htmlconst.DEVICE_INTERNAL_FLAG_MD_SET_NAME_CATEGORY.htmlconst.DEVICE_INTERNAL_FLAG_MD_SET_SIGNED.htmlconst.DEVICE_INTERNAL_FLAG_MD_SET_VENDOR.htmlconst.DEVICE_INTERNAL_FLAG_MD_SET_VERFMT.htmlconst.DEVICE_INTERNAL_FLAG_NONE.htmlconst.DEVICE_INTERNAL_FLAG_NO_AUTO_INSTANCE_IDS.htmlconst.DEVICE_INTERNAL_FLAG_NO_AUTO_REMOVE.htmlconst.DEVICE_INTERNAL_FLAG_NO_AUTO_REMOVE_CHILDREN.htmlconst.DEVICE_INTERNAL_FLAG_NO_LID_CLOSED.htmlconst.DEVICE_INTERNAL_FLAG_NO_PROBE.htmlconst.DEVICE_INTERNAL_FLAG_NO_SERIAL_NUMBER.htmlconst.DEVICE_INTERNAL_FLAG_ONLY_SUPPORTED.htmlconst.DEVICE_INTERNAL_FLAG_ONLY_WAIT_FOR_REPLUG.htmlconst.DEVICE_INTERNAL_FLAG_REPLUG_MATCH_GUID.htmlconst.DEVICE_INTERNAL_FLAG_RETRY_OPEN.htmlconst.DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_BATTERY.htmlconst.DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN.htmlconst.DEVICE_INTERNAL_FLAG_USE_PROXY_FALLBACK.htmlconst.DEVICE_METADATA_TBT_IS_SAFE_MODE.htmlconst.DEVICE_METADATA_UEFI_CAPSULE_FLAGS.htmlconst.DEVICE_METADATA_UEFI_DEVICE_KIND.htmlconst.DEVICE_METADATA_UEFI_FW_VERSION.htmlconst.DEVICE_REMOVE_DELAY_RE_ENUMERATE.htmlconst.DEVICE_REMOVE_DELAY_USER_REPLUG.htmlconst.DFU_FIRMARE_VERSION_ATMEL_AVR.htmlconst.DFU_FIRMARE_VERSION_DFUSE.htmlconst.DFU_FIRMARE_VERSION_DFU_1_0.htmlconst.DFU_FIRMARE_VERSION_DFU_1_1.htmlconst.DFU_FIRMARE_VERSION_UNKNOWN.htmlconst.EFIVAR_ATTR_APPEND_WRITE.htmlconst.EFIVAR_ATTR_AUTHENTICATED_WRITE_ACCESS.htmlconst.EFIVAR_ATTR_BOOTSERVICE_ACCESS.htmlconst.EFIVAR_ATTR_HARDWARE_ERROR_RECORD.htmlconst.EFIVAR_ATTR_NON_VOLATILE.htmlconst.EFIVAR_ATTR_RUNTIME_ACCESS.htmlconst.EFIVAR_ATTR_TIME_BASED_AUTHENTICATED_WRITE_ACCESS.htmlconst.EFIVAR_GUID_EFI_CAPSULE_REPORT.htmlconst.EFIVAR_GUID_EFI_GLOBAL.htmlconst.EFIVAR_GUID_FWUPDATE.htmlconst.EFIVAR_GUID_SECURITY_DATABASE.htmlconst.EFIVAR_GUID_UX_CAPSULE.htmlconst.EFI_FIRMWARE_FILE_BIOS_GUARD.htmlconst.EFI_FIRMWARE_FILE_FV_IMAGE.htmlconst.EFI_FIRMWARE_FILE_MICROCODE.htmlconst.EFI_FIRMWARE_SECTION_ACPI1_TABLE.htmlconst.EFI_FIRMWARE_SECTION_ACPI2_TABLE.htmlconst.EFI_FIRMWARE_SECTION_ESRT_TABLE.htmlconst.EFI_FIRMWARE_SECTION_LZMA_COMPRESS.htmlconst.EFI_FIRMWARE_SECTION_SMBIOS_TABLE.htmlconst.EFI_FIRMWARE_SECTION_TIANO_COMPRESS.htmlconst.EFI_FIRMWARE_VOLUME_GUID_APPLE_BOOT.htmlconst.EFI_FIRMWARE_VOLUME_GUID_FFS1.htmlconst.EFI_FIRMWARE_VOLUME_GUID_FFS2.htmlconst.EFI_FIRMWARE_VOLUME_GUID_FFS3.htmlconst.EFI_FIRMWARE_VOLUME_GUID_NVRAM_EVSA.htmlconst.EFI_FIRMWARE_VOLUME_GUID_NVRAM_EVSA2.htmlconst.EFI_FIRMWARE_VOLUME_GUID_NVRAM_NVAR.htmlconst.EFI_FIRMWARE_VOLUME_GUID_PFH1.htmlconst.EFI_FIRMWARE_VOLUME_GUID_PFH2.htmlconst.EFI_SIGNATURE_GUID_MICROSOFT.htmlconst.EFI_SIGNATURE_GUID_OVMF.htmlconst.EFI_SIGNATURE_GUID_OVMF_LEGACY.htmlconst.EFI_SIGNATURE_GUID_ZERO.htmlconst.FIRMWARE_ALIGNMENT_1.htmlconst.FIRMWARE_ALIGNMENT_128.htmlconst.FIRMWARE_ALIGNMENT_128K.htmlconst.FIRMWARE_ALIGNMENT_128M.htmlconst.FIRMWARE_ALIGNMENT_16.htmlconst.FIRMWARE_ALIGNMENT_16K.htmlconst.FIRMWARE_ALIGNMENT_16M.htmlconst.FIRMWARE_ALIGNMENT_1G.htmlconst.FIRMWARE_ALIGNMENT_1K.htmlconst.FIRMWARE_ALIGNMENT_1M.htmlconst.FIRMWARE_ALIGNMENT_2.htmlconst.FIRMWARE_ALIGNMENT_256.htmlconst.FIRMWARE_ALIGNMENT_256K.htmlconst.FIRMWARE_ALIGNMENT_256M.htmlconst.FIRMWARE_ALIGNMENT_2G.htmlconst.FIRMWARE_ALIGNMENT_2K.htmlconst.FIRMWARE_ALIGNMENT_2M.htmlconst.FIRMWARE_ALIGNMENT_32.htmlconst.FIRMWARE_ALIGNMENT_32K.htmlconst.FIRMWARE_ALIGNMENT_32M.htmlconst.FIRMWARE_ALIGNMENT_4.htmlconst.FIRMWARE_ALIGNMENT_4G.htmlconst.FIRMWARE_ALIGNMENT_4K.htmlconst.FIRMWARE_ALIGNMENT_4M.htmlconst.FIRMWARE_ALIGNMENT_512.htmlconst.FIRMWARE_ALIGNMENT_512K.htmlconst.FIRMWARE_ALIGNMENT_512M.htmlconst.FIRMWARE_ALIGNMENT_64.htmlconst.FIRMWARE_ALIGNMENT_64K.htmlconst.FIRMWARE_ALIGNMENT_64M.htmlconst.FIRMWARE_ALIGNMENT_8.htmlconst.FIRMWARE_ALIGNMENT_8K.htmlconst.FIRMWARE_ALIGNMENT_8M.htmlconst.FIRMWARE_EXPORT_FLAG_ASCII_DATA.htmlconst.FIRMWARE_EXPORT_FLAG_INCLUDE_DEBUG.htmlconst.FIRMWARE_EXPORT_FLAG_NONE.htmlconst.FIRMWARE_FLAG_ALWAYS_SEARCH.htmlconst.FIRMWARE_FLAG_DEDUPE_ID.htmlconst.FIRMWARE_FLAG_DEDUPE_IDX.htmlconst.FIRMWARE_FLAG_DONE_PARSE.htmlconst.FIRMWARE_FLAG_HAS_CHECKSUM.htmlconst.FIRMWARE_FLAG_HAS_STORED_SIZE.htmlconst.FIRMWARE_FLAG_HAS_VID_PID.htmlconst.FIRMWARE_FLAG_NONE.htmlconst.FIRMWARE_ID_HEADER.htmlconst.FIRMWARE_ID_PAYLOAD.htmlconst.FIRMWARE_ID_SIGNATURE.htmlconst.FIT_FIRMWARE_ATTR_ALGO.htmlconst.FIT_FIRMWARE_ATTR_COMPATIBLE.htmlconst.FIT_FIRMWARE_ATTR_DATA.htmlconst.FIT_FIRMWARE_ATTR_DATA_OFFSET.htmlconst.FIT_FIRMWARE_ATTR_DATA_SIZE.htmlconst.FIT_FIRMWARE_ATTR_SKIP_OFFSET.htmlconst.FIT_FIRMWARE_ATTR_STORE_OFFSET.htmlconst.FIT_FIRMWARE_ATTR_TIMESTAMP.htmlconst.FIT_FIRMWARE_ATTR_VALUE.htmlconst.FIT_FIRMWARE_ATTR_VERSION.htmlconst.FIT_FIRMWARE_ID_CONFIGURATIONS.htmlconst.FIT_FIRMWARE_ID_IMAGES.htmlconst.FMAP_FIRMWARE_STRLEN.htmlconst.HWIDS_KEY_BASEBOARD_MANUFACTURER.htmlconst.HWIDS_KEY_BASEBOARD_PRODUCT.htmlconst.HWIDS_KEY_BIOS_MAJOR_RELEASE.htmlconst.HWIDS_KEY_BIOS_MINOR_RELEASE.htmlconst.HWIDS_KEY_BIOS_VENDOR.htmlconst.HWIDS_KEY_BIOS_VERSION.htmlconst.HWIDS_KEY_ENCLOSURE_KIND.htmlconst.HWIDS_KEY_FAMILY.htmlconst.HWIDS_KEY_FIRMWARE_MAJOR_RELEASE.htmlconst.HWIDS_KEY_FIRMWARE_MINOR_RELEASE.htmlconst.HWIDS_KEY_MANUFACTURER.htmlconst.HWIDS_KEY_PRODUCT_NAME.htmlconst.HWIDS_KEY_PRODUCT_SKU.htmlconst.IFWI_CPD_FIRMWARE_IDX_MANIFEST.htmlconst.IFWI_CPD_FIRMWARE_IDX_METADATA.htmlconst.IFWI_CPD_FIRMWARE_IDX_MODULEDATA_IDX.htmlconst.IFWI_FPT_FIRMWARE_IDX_CKSM.htmlconst.IFWI_FPT_FIRMWARE_IDX_FWIM.htmlconst.IFWI_FPT_FIRMWARE_IDX_IMGI.htmlconst.IFWI_FPT_FIRMWARE_IDX_INFO.htmlconst.IFWI_FPT_FIRMWARE_IDX_SDTA.htmlconst.IHEX_FIRMWARE_RECORD_TYPE_DATA.htmlconst.IHEX_FIRMWARE_RECORD_TYPE_EOF.htmlconst.IHEX_FIRMWARE_RECORD_TYPE_EXTENDED_LINEAR.htmlconst.IHEX_FIRMWARE_RECORD_TYPE_EXTENDED_SEGMENT.htmlconst.IHEX_FIRMWARE_RECORD_TYPE_SIGNATURE.htmlconst.IHEX_FIRMWARE_RECORD_TYPE_START_LINEAR.htmlconst.IHEX_FIRMWARE_RECORD_TYPE_START_SEGMENT.htmlconst.MAJOR_VERSION.htmlconst.MICRO_VERSION.htmlconst.MINOR_VERSION.htmlconst.OPROM_FIRMWARE_COMPRESSION_TYPE_NONE.htmlconst.OPROM_FIRMWARE_MACHINE_TYPE_X64.htmlconst.OPROM_FIRMWARE_SUBSYSTEM_EFI_BOOT_SRV_DRV.htmlconst.PROGRESS_FLAG_CHILD_FINISHED.htmlconst.PROGRESS_FLAG_GUESSED.htmlconst.PROGRESS_FLAG_NONE.htmlconst.PROGRESS_FLAG_NO_PROFILE.htmlconst.PROGRESS_FLAG_NO_TRACEBACK.htmlconst.QUIRKS_ACQUIESCE_DELAY.htmlconst.QUIRKS_BATTERY_THRESHOLD.htmlconst.QUIRKS_BRANCH.htmlconst.QUIRKS_CFI_DEVICE_BLOCK_SIZE.htmlconst.QUIRKS_CFI_DEVICE_CMD_BLOCK_ERASE.htmlconst.QUIRKS_CFI_DEVICE_CMD_CHIP_ERASE.htmlconst.QUIRKS_CFI_DEVICE_CMD_PAGE_PROG.htmlconst.QUIRKS_CFI_DEVICE_CMD_READ_DATA.htmlconst.QUIRKS_CFI_DEVICE_CMD_READ_ID.htmlconst.QUIRKS_CFI_DEVICE_CMD_READ_ID_SZ.htmlconst.QUIRKS_CFI_DEVICE_CMD_READ_STATUS.htmlconst.QUIRKS_CFI_DEVICE_CMD_SECTOR_ERASE.htmlconst.QUIRKS_CFI_DEVICE_CMD_WRITE_EN.htmlconst.QUIRKS_CFI_DEVICE_CMD_WRITE_STATUS.htmlconst.QUIRKS_CFI_DEVICE_PAGE_SIZE.htmlconst.QUIRKS_CFI_DEVICE_SECTOR_SIZE.htmlconst.QUIRKS_CHILDREN.htmlconst.QUIRKS_COUNTERPART_GUID.htmlconst.QUIRKS_FIRMWARE_GTYPE.htmlconst.QUIRKS_FIRMWARE_SIZE.htmlconst.QUIRKS_FIRMWARE_SIZE_MAX.htmlconst.QUIRKS_FIRMWARE_SIZE_MIN.htmlconst.QUIRKS_FLAGS.htmlconst.QUIRKS_GTYPE.htmlconst.QUIRKS_GUID.htmlconst.QUIRKS_ICON.htmlconst.QUIRKS_INHIBIT.htmlconst.QUIRKS_INSTALL_DURATION.htmlconst.QUIRKS_ISSUE.htmlconst.QUIRKS_NAME.htmlconst.QUIRKS_PARENT_GUID.htmlconst.QUIRKS_PLUGIN.htmlconst.QUIRKS_PRIORITY.htmlconst.QUIRKS_PROTOCOL.htmlconst.QUIRKS_PROXY_GUID.htmlconst.QUIRKS_REMOVE_DELAY.htmlconst.QUIRKS_SUMMARY.htmlconst.QUIRKS_UPDATE_IMAGE.htmlconst.QUIRKS_UPDATE_MESSAGE.htmlconst.QUIRKS_VENDOR.htmlconst.QUIRKS_VENDOR_ID.htmlconst.QUIRKS_VERSION.htmlconst.QUIRKS_VERSION_FORMAT.htmlconst.SMBIOS_STRUCTURE_TYPE_BASEBOARD.htmlconst.SMBIOS_STRUCTURE_TYPE_BIOS.htmlconst.SMBIOS_STRUCTURE_TYPE_CHASSIS.htmlconst.SMBIOS_STRUCTURE_TYPE_LAST.htmlconst.SMBIOS_STRUCTURE_TYPE_SYSTEM.htmlconst.VOLUME_KIND_BDP.htmlconst.VOLUME_KIND_ESP.htmlctor.Archive.new.htmlctor.ArchiveFirmware.new.htmlctor.BiosSettings.new.htmlctor.Cabinet.new.htmlctor.CfiDevice.new.htmlctor.CfuOffer.new.htmlctor.CfuPayload.new.htmlctor.Chunk.bytes_new.htmlctor.Chunk.new.htmlctor.Context.new.htmlctor.CoswidFirmware.new.htmlctor.Device.new.htmlctor.DeviceLocker.new.htmlctor.DeviceLocker.new_full.htmlctor.DfuFirmware.new.htmlctor.DfuseFirmware.new.htmlctor.EfiFirmwareFile.new.htmlctor.EfiFirmwareFilesystem.new.htmlctor.EfiFirmwareSection.new.htmlctor.EfiFirmwareVolume.new.htmlctor.EfiSignatureList.new.htmlctor.FdtFirmware.new.htmlctor.FdtImage.new.htmlctor.Firmware.new.htmlctor.Firmware.new_from_bytes.htmlctor.Firmware.new_from_gtypes.htmlctor.FitFirmware.new.htmlctor.FmapFirmware.new.htmlctor.HidDevice.new.htmlctor.Hwids.new.htmlctor.IOChannel.new_file.htmlctor.IOChannel.unix_new.htmlctor.IfdBios.new.htmlctor.IfdFirmware.new.htmlctor.IfdImage.new.htmlctor.IfwiCpdFirmware.new.htmlctor.IfwiFptFirmware.new.htmlctor.IhexFirmware.new.htmlctor.IntelThunderboltFirmware.new.htmlctor.IntelThunderboltNvm.new.htmlctor.LinearFirmware.new.htmlctor.OpromFirmware.new.htmlctor.Plugin.new.htmlctor.Plugin.new_from_gtype.htmlctor.Progress.new.htmlctor.Quirks.new.htmlctor.SecurityAttr.new.htmlctor.SecurityAttrs.new.htmlctor.Smbios.new.htmlctor.SrecFirmware.new.htmlctor.UdevDevice.new.htmlctor.UsbDevice.new.htmlctor.UsbDeviceFwDs20.new.htmlctor.UsbDeviceMsDs20.new.htmlctor.UswidFirmware.new.htmlctor.Volume.new_by_device.htmlctor.Volume.new_by_devnum.htmlctor.Volume.new_esp_for_path.htmlds20.htmlenum.ArchiveCompression.htmlenum.ArchiveFormat.htmlenum.BackendLoadFlags.htmlenum.BackendSaveFlags.htmlenum.BatteryState.htmlenum.CabinetExportFlags.htmlenum.CabinetParseFlags.htmlenum.CabinetSignFlags.htmlenum.CfiDeviceCmd.htmlenum.CpuVendor.htmlenum.EfiSignatureKind.htmlenum.FirmareSrecRecordKind.htmlenum.IfdRegion.htmlenum.LidState.htmlenum.PathKind.htmlenum.PluginRule.htmlenum.PluginVerifyFlags.htmlenum.SmbiosChassisKind.htmlenv.htmlflags.ArchiveFlags.htmlflags.DeviceInstanceFlags.htmlflags.DumpFlags.htmlflags.HidDeviceFlags.htmlflags.IOChannelFlags.htmlflags.IfdAccess.htmlflags.QuirksLoadFlags.htmlflags.SecurityAttrsFlags.htmlflags.UdevDeviceFlags.htmlfonts.cssfunc.CHECK_VERSION.htmlfunc.IFD_FREG_BASE.htmlfunc.IFD_FREG_LIMIT.htmlfunc.battery_state_to_string.htmlfunc.byte_array_align_up.htmlfunc.byte_array_append_bytes.htmlfunc.byte_array_append_uint16.htmlfunc.byte_array_append_uint32.htmlfunc.byte_array_append_uint64.htmlfunc.byte_array_append_uint8.htmlfunc.byte_array_compare.htmlfunc.byte_array_set_size.htmlfunc.bytes_align.htmlfunc.bytes_compare.htmlfunc.bytes_get_contents.htmlfunc.bytes_get_contents_fd.htmlfunc.bytes_get_contents_stream.htmlfunc.bytes_get_data_safe.htmlfunc.bytes_is_empty.htmlfunc.bytes_new_offset.htmlfunc.bytes_pad.htmlfunc.bytes_set_contents.htmlfunc.cfu_device_offer_to_string.htmlfunc.cfu_device_reject_to_string.htmlfunc.cfu_device_status_to_string.htmlfunc.common_align_up.htmlfunc.common_check_full_disk_encryption.htmlfunc.common_get_memory_size.htmlfunc.common_guid_is_plausible.htmlfunc.common_is_live_media.htmlfunc.cpu_get_vendor.htmlfunc.cpuid.htmlfunc.crc16.htmlfunc.crc16_full.htmlfunc.crc32.htmlfunc.crc32_full.htmlfunc.crc8.htmlfunc.crc8_full.htmlfunc.device_add_checksum.htmlfunc.device_add_icon.htmlfunc.device_add_issue.htmlfunc.device_add_protocol.htmlfunc.device_add_release.htmlfunc.device_add_vendor_id.htmlfunc.device_get_branch.htmlfunc.device_get_checksums.htmlfunc.device_get_composite_id.htmlfunc.device_get_created.htmlfunc.device_get_flags.htmlfunc.device_get_flashes_left.htmlfunc.device_get_guid_default.htmlfunc.device_get_guids.htmlfunc.device_get_icons.htmlfunc.device_get_id.htmlfunc.device_get_install_duration.htmlfunc.device_get_instance_ids.htmlfunc.device_get_issues.htmlfunc.device_get_modified.htmlfunc.device_get_name.htmlfunc.device_get_plugin.htmlfunc.device_get_protocols.htmlfunc.device_get_serial.htmlfunc.device_get_summary.htmlfunc.device_get_update_error.htmlfunc.device_get_update_image.htmlfunc.device_get_update_message.htmlfunc.device_get_update_state.htmlfunc.device_get_vendor.htmlfunc.device_get_vendor_ids.htmlfunc.device_get_version.htmlfunc.device_get_version_bootloader.htmlfunc.device_get_version_bootloader_raw.htmlfunc.device_get_version_build_date.htmlfunc.device_get_version_format.htmlfunc.device_get_version_lowest.htmlfunc.device_get_version_lowest_raw.htmlfunc.device_get_version_raw.htmlfunc.device_has_flag.htmlfunc.device_has_icon.htmlfunc.device_has_instance_id.htmlfunc.device_has_protocol.htmlfunc.device_has_vendor_id.htmlfunc.device_set_branch.htmlfunc.device_set_created.htmlfunc.device_set_description.htmlfunc.device_set_flags.htmlfunc.device_set_flashes_left.htmlfunc.device_set_install_duration.htmlfunc.device_set_modified.htmlfunc.device_set_plugin.htmlfunc.device_set_serial.htmlfunc.device_set_summary.htmlfunc.device_set_update_error.htmlfunc.device_set_update_image.htmlfunc.device_set_update_message.htmlfunc.device_set_version_bootloader_raw.htmlfunc.device_set_version_build_date.htmlfunc.device_set_version_lowest_raw.htmlfunc.device_set_version_raw.htmlfunc.dump_bytes.htmlfunc.dump_full.htmlfunc.dump_raw.htmlfunc.efi_guid_to_name.htmlfunc.efivar_delete.htmlfunc.efivar_delete_with_glob.htmlfunc.efivar_exists.htmlfunc.efivar_get_data.htmlfunc.efivar_get_data_bytes.htmlfunc.efivar_get_monitor.htmlfunc.efivar_get_names.htmlfunc.efivar_secure_boot_enabled.htmlfunc.efivar_set_data.htmlfunc.efivar_set_data_bytes.htmlfunc.efivar_space_used.htmlfunc.efivar_supported.htmlfunc.ifd_access_to_string.htmlfunc.ifd_region_to_access.htmlfunc.ifd_region_to_name.htmlfunc.ifd_region_to_string.htmlfunc.kenv_get_string.htmlfunc.kernel_check_version.htmlfunc.kernel_get_cmdline.htmlfunc.kernel_get_firmware_search_path.htmlfunc.kernel_locked_down.htmlfunc.kernel_reset_firmware_search_path.htmlfunc.kernel_set_firmware_search_path.htmlfunc.lid_state_to_string.htmlfunc.memcmp_safe.htmlfunc.memcpy_safe.htmlfunc.memdup_safe.htmlfunc.memmem_safe.htmlfunc.memread_uint16.htmlfunc.memread_uint16_safe.htmlfunc.memread_uint24.htmlfunc.memread_uint24_safe.htmlfunc.memread_uint32.htmlfunc.memread_uint32_safe.htmlfunc.memread_uint64.htmlfunc.memread_uint64_safe.htmlfunc.memread_uint8_safe.htmlfunc.memwrite_uint16.htmlfunc.memwrite_uint16_safe.htmlfunc.memwrite_uint24.htmlfunc.memwrite_uint32.htmlfunc.memwrite_uint32_safe.htmlfunc.memwrite_uint64.htmlfunc.memwrite_uint64_safe.htmlfunc.memwrite_uint8_safe.htmlfunc.path_find_program.htmlfunc.path_fnmatch.htmlfunc.path_from_kind.htmlfunc.path_get_files.htmlfunc.path_glob.htmlfunc.path_mkdir.htmlfunc.path_mkdir_parent.htmlfunc.path_rmtree.htmlfunc.plugin_add_flag.htmlfunc.plugin_get_flags.htmlfunc.plugin_has_flag.htmlfunc.plugin_remove_flag.htmlfunc.string_append.htmlfunc.string_append_kb.htmlfunc.string_append_ku.htmlfunc.string_append_kx.htmlfunc.string_replace.htmlfunc.strjoin.htmlfunc.strsafe.htmlfunc.strsplit.htmlfunc.strsplit_full.htmlfunc.strstrip.htmlfunc.strtobool.htmlfunc.strtoull.htmlfunc.strwidth.htmlfunc.sum16.htmlfunc.sum16_bytes.htmlfunc.sum16w.htmlfunc.sum16w_bytes.htmlfunc.sum32.htmlfunc.sum32_bytes.htmlfunc.sum32w.htmlfunc.sum32w_bytes.htmlfunc.sum8.htmlfunc.sum8_bytes.htmlfunc.version_compare.htmlfunc.version_ensure_semver.htmlfunc.version_from_uint16.htmlfunc.version_from_uint32.htmlfunc.version_from_uint64.htmlfunc.version_guess_format.htmlfunc.version_parse_from_format.htmlfunc.version_string.htmlfunc.version_verify_format.htmlfunc.xmlb_builder_insert_kb.htmlfunc.xmlb_builder_insert_kv.htmlfunc.xmlb_builder_insert_kx.htmlfzy.jsgo-up-symbolic.pnghsi.htmlindex.htmlindex.jsonlibfwupdplugin.devhelp2main.jsmethod.Archive.add_entry.htmlmethod.Archive.iterate.htmlmethod.Archive.lookup_by_fn.htmlmethod.Archive.write.htmlmethod.ArchiveFirmware.get_compression.htmlmethod.ArchiveFirmware.get_format.htmlmethod.ArchiveFirmware.set_compression.htmlmethod.ArchiveFirmware.set_format.htmlmethod.Backend.add_string.htmlmethod.Backend.coldplug.htmlmethod.Backend.device_added.htmlmethod.Backend.device_changed.htmlmethod.Backend.device_removed.htmlmethod.Backend.get_context.htmlmethod.Backend.get_devices.htmlmethod.Backend.get_enabled.htmlmethod.Backend.get_name.htmlmethod.Backend.invalidate.htmlmethod.Backend.load.htmlmethod.Backend.lookup_by_id.htmlmethod.Backend.registered.htmlmethod.Backend.save.htmlmethod.Backend.set_enabled.htmlmethod.Backend.setup.htmlmethod.BiosSettings.from_json.htmlmethod.BiosSettings.from_json_file.htmlmethod.BiosSettings.get_all.htmlmethod.BiosSettings.get_attr.htmlmethod.BiosSettings.get_pending_reboot.htmlmethod.BiosSettings.setup.htmlmethod.BiosSettings.to_hash_kv.htmlmethod.BiosSettings.to_variant.htmlmethod.BluezDevice.notify_start.htmlmethod.BluezDevice.notify_stop.htmlmethod.BluezDevice.read.htmlmethod.BluezDevice.read_string.htmlmethod.BluezDevice.write.htmlmethod.Cabinet.add_file.htmlmethod.Cabinet.export.htmlmethod.Cabinet.get_file.htmlmethod.Cabinet.parse.htmlmethod.Cabinet.set_size_max.htmlmethod.Cabinet.sign.htmlmethod.CfiDevice.chip_select.htmlmethod.CfiDevice.chip_select_locker_new.htmlmethod.CfiDevice.get_block_size.htmlmethod.CfiDevice.get_cmd.htmlmethod.CfiDevice.get_flash_id.htmlmethod.CfiDevice.get_page_size.htmlmethod.CfiDevice.get_sector_size.htmlmethod.CfiDevice.get_size.htmlmethod.CfiDevice.set_block_size.htmlmethod.CfiDevice.set_flash_id.htmlmethod.CfiDevice.set_page_size.htmlmethod.CfiDevice.set_sector_size.htmlmethod.CfiDevice.set_size.htmlmethod.CfuOffer.get_bank.htmlmethod.CfuOffer.get_component_id.htmlmethod.CfuOffer.get_force_ignore_version.htmlmethod.CfuOffer.get_force_immediate_reset.htmlmethod.CfuOffer.get_hw_variant.htmlmethod.CfuOffer.get_milestone.htmlmethod.CfuOffer.get_product_id.htmlmethod.CfuOffer.get_protocol_revision.htmlmethod.CfuOffer.get_segment_number.htmlmethod.CfuOffer.get_token.htmlmethod.CfuOffer.set_bank.htmlmethod.CfuOffer.set_component_id.htmlmethod.CfuOffer.set_force_ignore_version.htmlmethod.CfuOffer.set_force_immediate_reset.htmlmethod.CfuOffer.set_hw_variant.htmlmethod.CfuOffer.set_milestone.htmlmethod.CfuOffer.set_product_id.htmlmethod.CfuOffer.set_protocol_revision.htmlmethod.CfuOffer.set_segment_number.htmlmethod.CfuOffer.set_token.htmlmethod.Chunk.get_address.htmlmethod.Chunk.get_bytes.htmlmethod.Chunk.get_data.htmlmethod.Chunk.get_data_out.htmlmethod.Chunk.get_data_sz.htmlmethod.Chunk.get_idx.htmlmethod.Chunk.get_page.htmlmethod.Chunk.set_address.htmlmethod.Chunk.set_bytes.htmlmethod.Chunk.set_idx.htmlmethod.Chunk.set_page.htmlmethod.Chunk.to_string.htmlmethod.Context.add_compile_version.htmlmethod.Context.add_esp_volume.htmlmethod.Context.add_firmware_gtype.htmlmethod.Context.add_flag.htmlmethod.Context.add_quirk_key.htmlmethod.Context.add_runtime_version.htmlmethod.Context.add_udev_subsystem.htmlmethod.Context.get_battery_level.htmlmethod.Context.get_battery_state.htmlmethod.Context.get_battery_threshold.htmlmethod.Context.get_bios_setting.htmlmethod.Context.get_bios_setting_pending_reboot.htmlmethod.Context.get_bios_settings.htmlmethod.Context.get_esp_volumes.htmlmethod.Context.get_firmware_gtype_by_id.htmlmethod.Context.get_firmware_gtype_ids.htmlmethod.Context.get_hwid_guids.htmlmethod.Context.get_hwid_replace_value.htmlmethod.Context.get_hwid_value.htmlmethod.Context.get_lid_state.htmlmethod.Context.get_smbios_data.htmlmethod.Context.get_smbios_integer.htmlmethod.Context.get_smbios_string.htmlmethod.Context.get_udev_subsystems.htmlmethod.Context.has_flag.htmlmethod.Context.has_hwid_flag.htmlmethod.Context.has_hwid_guid.htmlmethod.Context.load_hwinfo.htmlmethod.Context.load_quirks.htmlmethod.Context.lookup_quirk_by_id.htmlmethod.Context.lookup_quirk_by_id_iter.htmlmethod.Context.reload_bios_settings.htmlmethod.Context.security_changed.htmlmethod.Context.set_battery_level.htmlmethod.Context.set_battery_state.htmlmethod.Context.set_battery_threshold.htmlmethod.Context.set_compile_versions.htmlmethod.Context.set_lid_state.htmlmethod.Context.set_runtime_versions.htmlmethod.Device.activate.htmlmethod.Device.add_backend_tag.htmlmethod.Device.add_child.htmlmethod.Device.add_counterpart_guid.htmlmethod.Device.add_flag.htmlmethod.Device.add_guid.htmlmethod.Device.add_guid_full.htmlmethod.Device.add_instance_id.htmlmethod.Device.add_instance_id_full.htmlmethod.Device.add_instance_str.htmlmethod.Device.add_instance_strsafe.htmlmethod.Device.add_instance_strup.htmlmethod.Device.add_instance_u16.htmlmethod.Device.add_instance_u32.htmlmethod.Device.add_instance_u4.htmlmethod.Device.add_instance_u8.htmlmethod.Device.add_internal_flag.htmlmethod.Device.add_parent_guid.htmlmethod.Device.add_parent_physical_id.htmlmethod.Device.add_possible_plugin.htmlmethod.Device.add_private_flag.htmlmethod.Device.add_problem.htmlmethod.Device.add_security_attrs.htmlmethod.Device.add_string.htmlmethod.Device.attach.htmlmethod.Device.attach_full.htmlmethod.Device.bind_driver.htmlmethod.Device.build_instance_id.htmlmethod.Device.build_instance_id_quirk.htmlmethod.Device.cleanup.htmlmethod.Device.close.htmlmethod.Device.convert_instance_ids.htmlmethod.Device.detach.htmlmethod.Device.detach_full.htmlmethod.Device.dump_firmware.htmlmethod.Device.emit_request.htmlmethod.Device.ensure_id.htmlmethod.Device.get_acquiesce_delay.htmlmethod.Device.get_alternate.htmlmethod.Device.get_alternate_id.htmlmethod.Device.get_backend_id.htmlmethod.Device.get_backend_tags.htmlmethod.Device.get_battery_level.htmlmethod.Device.get_battery_threshold.htmlmethod.Device.get_children.htmlmethod.Device.get_context.htmlmethod.Device.get_custom_flags.htmlmethod.Device.get_equivalent_id.htmlmethod.Device.get_firmware_gtype.htmlmethod.Device.get_firmware_size_max.htmlmethod.Device.get_firmware_size_min.htmlmethod.Device.get_guids_as_str.htmlmethod.Device.get_internal_flags.htmlmethod.Device.get_logical_id.htmlmethod.Device.get_metadata.htmlmethod.Device.get_metadata_boolean.htmlmethod.Device.get_metadata_integer.htmlmethod.Device.get_order.htmlmethod.Device.get_parent.htmlmethod.Device.get_parent_guids.htmlmethod.Device.get_parent_physical_ids.htmlmethod.Device.get_physical_id.htmlmethod.Device.get_possible_plugins.htmlmethod.Device.get_priority.htmlmethod.Device.get_private_flags.htmlmethod.Device.get_proxy.htmlmethod.Device.get_proxy_guid.htmlmethod.Device.get_proxy_with_fallback.htmlmethod.Device.get_release_default.htmlmethod.Device.get_remove_delay.htmlmethod.Device.get_request_cnt.htmlmethod.Device.get_results.htmlmethod.Device.get_root.htmlmethod.Device.get_specialized_gtype.htmlmethod.Device.get_update_request_id.htmlmethod.Device.has_backend_tag.htmlmethod.Device.has_guid.htmlmethod.Device.has_inhibit.htmlmethod.Device.has_internal_flag.htmlmethod.Device.has_parent_guid.htmlmethod.Device.has_parent_physical_id.htmlmethod.Device.has_private_flag.htmlmethod.Device.incorporate.htmlmethod.Device.incorporate_flag.htmlmethod.Device.inhibit.htmlmethod.Device.open.htmlmethod.Device.poll.htmlmethod.Device.poll_locker_new.htmlmethod.Device.prepare.htmlmethod.Device.prepare_firmware.htmlmethod.Device.probe.htmlmethod.Device.probe_invalidate.htmlmethod.Device.read_firmware.htmlmethod.Device.register_private_flag.htmlmethod.Device.reload.htmlmethod.Device.remove_child.htmlmethod.Device.remove_flag.htmlmethod.Device.remove_internal_flag.htmlmethod.Device.remove_metadata.htmlmethod.Device.remove_private_flag.htmlmethod.Device.remove_problem.htmlmethod.Device.report_metadata_post.htmlmethod.Device.report_metadata_pre.htmlmethod.Device.rescan.htmlmethod.Device.retry.htmlmethod.Device.retry_add_recovery.htmlmethod.Device.retry_full.htmlmethod.Device.retry_set_delay.htmlmethod.Device.security_attr_new.htmlmethod.Device.set_acquiesce_delay.htmlmethod.Device.set_alternate.htmlmethod.Device.set_alternate_id.htmlmethod.Device.set_backend_id.htmlmethod.Device.set_battery_level.htmlmethod.Device.set_battery_threshold.htmlmethod.Device.set_context.htmlmethod.Device.set_custom_flags.htmlmethod.Device.set_equivalent_id.htmlmethod.Device.set_firmware_gtype.htmlmethod.Device.set_firmware_size.htmlmethod.Device.set_firmware_size_max.htmlmethod.Device.set_firmware_size_min.htmlmethod.Device.set_id.htmlmethod.Device.set_internal_flags.htmlmethod.Device.set_logical_id.htmlmethod.Device.set_metadata.htmlmethod.Device.set_metadata_boolean.htmlmethod.Device.set_metadata_integer.htmlmethod.Device.set_name.htmlmethod.Device.set_order.htmlmethod.Device.set_parent.htmlmethod.Device.set_physical_id.htmlmethod.Device.set_poll_interval.htmlmethod.Device.set_priority.htmlmethod.Device.set_private_flags.htmlmethod.Device.set_progress.htmlmethod.Device.set_proxy.htmlmethod.Device.set_proxy_guid.htmlmethod.Device.set_quirk_kv.htmlmethod.Device.set_remove_delay.htmlmethod.Device.set_update_request_id.htmlmethod.Device.set_update_state.htmlmethod.Device.set_vendor.htmlmethod.Device.set_version.htmlmethod.Device.set_version_bootloader.htmlmethod.Device.set_version_format.htmlmethod.Device.set_version_lowest.htmlmethod.Device.setup.htmlmethod.Device.to_string.htmlmethod.Device.unbind_driver.htmlmethod.Device.uninhibit.htmlmethod.Device.write_firmware.htmlmethod.DeviceLocker.close.htmlmethod.DfuFirmware.get_pid.htmlmethod.DfuFirmware.get_release.htmlmethod.DfuFirmware.get_version.htmlmethod.DfuFirmware.get_vid.htmlmethod.DfuFirmware.set_pid.htmlmethod.DfuFirmware.set_release.htmlmethod.DfuFirmware.set_version.htmlmethod.DfuFirmware.set_vid.htmlmethod.EfiSignature.get_kind.htmlmethod.EfiSignature.get_owner.htmlmethod.FdtFirmware.get_cpuid.htmlmethod.FdtFirmware.get_image_by_path.htmlmethod.FdtFirmware.set_cpuid.htmlmethod.FdtImage.get_attr.htmlmethod.FdtImage.get_attr_str.htmlmethod.FdtImage.get_attr_strlist.htmlmethod.FdtImage.get_attr_u32.htmlmethod.FdtImage.get_attr_u64.htmlmethod.FdtImage.get_attrs.htmlmethod.FdtImage.set_attr.htmlmethod.FdtImage.set_attr_str.htmlmethod.FdtImage.set_attr_strlist.htmlmethod.FdtImage.set_attr_uint32.htmlmethod.FdtImage.set_attr_uint64.htmlmethod.Firmware.add_chunk.htmlmethod.Firmware.add_flag.htmlmethod.Firmware.add_image.htmlmethod.Firmware.add_patch.htmlmethod.Firmware.build.htmlmethod.Firmware.build_from_xml.htmlmethod.Firmware.check_compatible.htmlmethod.Firmware.export.htmlmethod.Firmware.export_to_xml.htmlmethod.Firmware.get_addr.htmlmethod.Firmware.get_alignment.htmlmethod.Firmware.get_bytes.htmlmethod.Firmware.get_bytes_with_patches.htmlmethod.Firmware.get_checksum.htmlmethod.Firmware.get_chunks.htmlmethod.Firmware.get_filename.htmlmethod.Firmware.get_id.htmlmethod.Firmware.get_idx.htmlmethod.Firmware.get_image_by_checksum.htmlmethod.Firmware.get_image_by_id.htmlmethod.Firmware.get_image_by_id_bytes.htmlmethod.Firmware.get_image_by_idx.htmlmethod.Firmware.get_image_by_idx_bytes.htmlmethod.Firmware.get_images.htmlmethod.Firmware.get_offset.htmlmethod.Firmware.get_parent.htmlmethod.Firmware.get_size.htmlmethod.Firmware.get_version.htmlmethod.Firmware.get_version_raw.htmlmethod.Firmware.has_flag.htmlmethod.Firmware.parse.htmlmethod.Firmware.parse_file.htmlmethod.Firmware.parse_full.htmlmethod.Firmware.remove_image.htmlmethod.Firmware.remove_image_by_id.htmlmethod.Firmware.remove_image_by_idx.htmlmethod.Firmware.set_addr.htmlmethod.Firmware.set_alignment.htmlmethod.Firmware.set_bytes.htmlmethod.Firmware.set_filename.htmlmethod.Firmware.set_id.htmlmethod.Firmware.set_idx.htmlmethod.Firmware.set_offset.htmlmethod.Firmware.set_parent.htmlmethod.Firmware.set_size.htmlmethod.Firmware.set_version.htmlmethod.Firmware.set_version_raw.htmlmethod.Firmware.to_string.htmlmethod.Firmware.tokenize.htmlmethod.Firmware.write.htmlmethod.Firmware.write_chunk.htmlmethod.Firmware.write_file.htmlmethod.FitFirmware.get_timestamp.htmlmethod.FitFirmware.set_timestamp.htmlmethod.HidDevice.add_flag.htmlmethod.HidDevice.get_interface.htmlmethod.HidDevice.get_report.htmlmethod.HidDevice.set_interface.htmlmethod.HidDevice.set_report.htmlmethod.Hwids.add_smbios_override.htmlmethod.Hwids.get_guid.htmlmethod.Hwids.get_guids.htmlmethod.Hwids.get_keys.htmlmethod.Hwids.get_replace_keys.htmlmethod.Hwids.get_replace_values.htmlmethod.Hwids.get_value.htmlmethod.Hwids.has_guid.htmlmethod.Hwids.setup.htmlmethod.I2cDevice.get_bus_number.htmlmethod.I2cDevice.read.htmlmethod.I2cDevice.set_bus_number.htmlmethod.I2cDevice.write.htmlmethod.IOChannel.read_byte_array.htmlmethod.IOChannel.read_bytes.htmlmethod.IOChannel.read_raw.htmlmethod.IOChannel.shutdown.htmlmethod.IOChannel.unix_get_fd.htmlmethod.IOChannel.write_byte_array.htmlmethod.IOChannel.write_bytes.htmlmethod.IOChannel.write_raw.htmlmethod.IfdFirmware.check_jedec_cmd.htmlmethod.IfdImage.get_access.htmlmethod.IfdImage.set_access.htmlmethod.IhexFirmware.get_records.htmlmethod.IhexFirmware.set_padding_value.htmlmethod.IntelThunderboltNvm.get_device_id.htmlmethod.IntelThunderboltNvm.get_flash_size.htmlmethod.IntelThunderboltNvm.get_model_id.htmlmethod.IntelThunderboltNvm.get_vendor_id.htmlmethod.IntelThunderboltNvm.has_pd.htmlmethod.IntelThunderboltNvm.is_host.htmlmethod.IntelThunderboltNvm.is_native.htmlmethod.LinearFirmware.get_image_gtype.htmlmethod.MeiDevice.connect.htmlmethod.MeiDevice.get_max_msg_length.htmlmethod.MeiDevice.get_protocol_version.htmlmethod.MeiDevice.read.htmlmethod.MeiDevice.write.htmlmethod.OpromFirmware.get_compression_type.htmlmethod.OpromFirmware.get_machine_type.htmlmethod.OpromFirmware.get_subsystem.htmlmethod.Plugin.add_device_gtype.htmlmethod.Plugin.add_firmware_gtype.htmlmethod.Plugin.add_report_metadata.htmlmethod.Plugin.add_rule.htmlmethod.Plugin.add_string.htmlmethod.Plugin.add_udev_subsystem.htmlmethod.Plugin.alloc_data.htmlmethod.Plugin.cache_add.htmlmethod.Plugin.cache_lookup.htmlmethod.Plugin.cache_remove.htmlmethod.Plugin.device_add.htmlmethod.Plugin.device_register.htmlmethod.Plugin.device_remove.htmlmethod.Plugin.get_config_value.htmlmethod.Plugin.get_config_value_boolean.htmlmethod.Plugin.get_context.htmlmethod.Plugin.get_data.htmlmethod.Plugin.get_devices.htmlmethod.Plugin.get_name.htmlmethod.Plugin.get_order.htmlmethod.Plugin.get_priority.htmlmethod.Plugin.get_report_metadata.htmlmethod.Plugin.get_rules.htmlmethod.Plugin.has_rule.htmlmethod.Plugin.is_open.htmlmethod.Plugin.name_compare.htmlmethod.Plugin.open.htmlmethod.Plugin.order_compare.htmlmethod.Plugin.runner_activate.htmlmethod.Plugin.runner_add_security_attrs.htmlmethod.Plugin.runner_attach.htmlmethod.Plugin.runner_backend_device_added.htmlmethod.Plugin.runner_backend_device_changed.htmlmethod.Plugin.runner_cleanup.htmlmethod.Plugin.runner_clear_results.htmlmethod.Plugin.runner_coldplug.htmlmethod.Plugin.runner_composite_cleanup.htmlmethod.Plugin.runner_composite_prepare.htmlmethod.Plugin.runner_detach.htmlmethod.Plugin.runner_device_added.htmlmethod.Plugin.runner_device_created.htmlmethod.Plugin.runner_device_register.htmlmethod.Plugin.runner_device_removed.htmlmethod.Plugin.runner_get_results.htmlmethod.Plugin.runner_init.htmlmethod.Plugin.runner_prepare.htmlmethod.Plugin.runner_reload.htmlmethod.Plugin.runner_startup.htmlmethod.Plugin.runner_unlock.htmlmethod.Plugin.runner_verify.htmlmethod.Plugin.runner_write_firmware.htmlmethod.Plugin.security_attr_new.htmlmethod.Plugin.set_config_value.htmlmethod.Plugin.set_context.htmlmethod.Plugin.set_name.htmlmethod.Plugin.set_order.htmlmethod.Plugin.set_priority.htmlmethod.Plugin.to_string.htmlmethod.Progress.add_flag.htmlmethod.Progress.add_step.htmlmethod.Progress.finished.htmlmethod.Progress.get_child.htmlmethod.Progress.get_duration.htmlmethod.Progress.get_id.htmlmethod.Progress.get_name.htmlmethod.Progress.get_percentage.htmlmethod.Progress.get_profile.htmlmethod.Progress.get_status.htmlmethod.Progress.get_steps.htmlmethod.Progress.has_flag.htmlmethod.Progress.remove_flag.htmlmethod.Progress.reset.htmlmethod.Progress.set_id.htmlmethod.Progress.set_name.htmlmethod.Progress.set_percentage.htmlmethod.Progress.set_percentage_full.htmlmethod.Progress.set_profile.htmlmethod.Progress.set_status.htmlmethod.Progress.set_steps.htmlmethod.Progress.sleep.htmlmethod.Progress.step_done.htmlmethod.Progress.traceback.htmlmethod.Quirks.add_possible_key.htmlmethod.Quirks.load.htmlmethod.Quirks.lookup_by_id.htmlmethod.Quirks.lookup_by_id_iter.htmlmethod.SecurityAttrs.append.htmlmethod.SecurityAttrs.append_internal.htmlmethod.SecurityAttrs.calculate_hsi.htmlmethod.SecurityAttrs.depsolve.htmlmethod.SecurityAttrs.get_all.htmlmethod.SecurityAttrs.get_by_appstream_id.htmlmethod.SecurityAttrs.remove_all.htmlmethod.SecurityAttrs.to_variant.htmlmethod.Smbios.get_data.htmlmethod.Smbios.get_integer.htmlmethod.Smbios.get_string.htmlmethod.Smbios.setup.htmlmethod.Smbios.setup_from_file.htmlmethod.Smbios.setup_from_kernel.htmlmethod.Smbios.setup_from_path.htmlmethod.SrecFirmware.get_records.htmlmethod.UdevDevice.emit_changed.htmlmethod.UdevDevice.get_bind_id.htmlmethod.UdevDevice.get_children_with_subsystem.htmlmethod.UdevDevice.get_dev.htmlmethod.UdevDevice.get_device_file.htmlmethod.UdevDevice.get_devtype.htmlmethod.UdevDevice.get_driver.htmlmethod.UdevDevice.get_fd.htmlmethod.UdevDevice.get_model.htmlmethod.UdevDevice.get_number.htmlmethod.UdevDevice.get_parent_name.htmlmethod.UdevDevice.get_parent_with_subsystem.htmlmethod.UdevDevice.get_revision.htmlmethod.UdevDevice.get_siblings_with_subsystem.htmlmethod.UdevDevice.get_slot_depth.htmlmethod.UdevDevice.get_subsystem.htmlmethod.UdevDevice.get_subsystem_model.htmlmethod.UdevDevice.get_subsystem_vendor.htmlmethod.UdevDevice.get_sysfs_attr.htmlmethod.UdevDevice.get_sysfs_attr_uint64.htmlmethod.UdevDevice.get_sysfs_path.htmlmethod.UdevDevice.get_vendor.htmlmethod.UdevDevice.ioctl.htmlmethod.UdevDevice.pread.htmlmethod.UdevDevice.pwrite.htmlmethod.UdevDevice.seek.htmlmethod.UdevDevice.set_bind_id.htmlmethod.UdevDevice.set_dev.htmlmethod.UdevDevice.set_fd.htmlmethod.UdevDevice.set_flags.htmlmethod.UdevDevice.set_logical_id.htmlmethod.UdevDevice.set_physical_id.htmlmethod.UdevDevice.write_sysfs.htmlmethod.UsbDevice.add_interface.htmlmethod.UsbDevice.find_udev_device.htmlmethod.UsbDevice.get_dev.htmlmethod.UsbDevice.get_pid.htmlmethod.UsbDevice.get_platform_id.htmlmethod.UsbDevice.get_spec.htmlmethod.UsbDevice.get_vid.htmlmethod.UsbDevice.is_open.htmlmethod.UsbDevice.set_configuration.htmlmethod.UsbDevice.set_dev.htmlmethod.UsbDeviceDs20.apply_to_device.htmlmethod.UsbDeviceDs20.set_version_lowest.htmlmethod.Volume.check_free_space.htmlmethod.Volume.get_id.htmlmethod.Volume.get_id_type.htmlmethod.Volume.get_mount_point.htmlmethod.Volume.is_encrypted.htmlmethod.Volume.is_internal.htmlmethod.Volume.is_mounted.htmlmethod.Volume.locker.htmlmethod.Volume.mount.htmlmethod.Volume.unmount.htmlorg.freedesktop.fwupd.svgproperty.Backend.can-invalidate.htmlproperty.Backend.context.htmlproperty.Backend.name.htmlproperty.BluezDevice.object-manager.htmlproperty.BluezDevice.proxy.htmlproperty.CfiDevice.flash-id.htmlproperty.Context.battery-level.htmlproperty.Context.battery-state.htmlproperty.Context.battery-threshold.htmlproperty.Context.lid-state.htmlproperty.Device.backend-id.htmlproperty.Device.backend-tags.htmlproperty.Device.context.htmlproperty.Device.logical-id.htmlproperty.Device.parent.htmlproperty.Device.physical-id.htmlproperty.Device.proxy.htmlproperty.Firmware.parent.htmlproperty.HidDevice.interface.htmlproperty.I2cDevice.bus-number.htmlproperty.LinearFirmware.image-gtype.htmlproperty.Plugin.context.htmlproperty.UdevDevice.bind-id.htmlproperty.UdevDevice.device-file.htmlproperty.UdevDevice.driver.htmlproperty.UdevDevice.subsystem.htmlproperty.UdevDevice.udev-device.htmlproperty.UsbDevice.usb-device.htmlproperty.Volume.mount-path.htmlproperty.Volume.proxy-block.htmlproperty.Volume.proxy-filesystem.htmlpygment.csssearch.jssignal.Backend.device-added.htmlsignal.Backend.device-changed.htmlsignal.Backend.device-removed.htmlsignal.BluezDevice.changed.htmlsignal.Context.security-changed.htmlsignal.Device.child-added.htmlsignal.Device.child-removed.htmlsignal.Device.request.htmlsignal.Plugin.check-supported.htmlsignal.Plugin.config-changed.htmlsignal.Plugin.device-added.htmlsignal.Plugin.device-register.htmlsignal.Plugin.device-removed.htmlsignal.Plugin.rules-changed.htmlsignal.Progress.percentage-changed.htmlsignal.Progress.status-changed.htmlsignal.UdevDevice.changed.htmlstruct.PluginData.htmlstruct.PluginVfuncs.htmlstyle.csstutorial.htmltype_func.Archive.compression_from_string.htmltype_func.Archive.compression_to_string.htmltype_func.Archive.format_from_string.htmltype_func.Archive.format_to_string.htmltype_func.Chunk.array_mutable_new.htmltype_func.Chunk.array_new.htmltype_func.Chunk.array_new_from_bytes.htmltype_func.Chunk.array_to_string.htmltype_func.Device.internal_flag_from_string.htmltype_func.Device.internal_flag_to_string.htmltype_func.EfiSignature.kind_to_string.htmltype_func.Firmware.flag_from_string.htmltype_func.Firmware.flag_to_string.htmltype_func.Firmware.strparse_uint16_safe.htmltype_func.Firmware.strparse_uint24_safe.htmltype_func.Firmware.strparse_uint32_safe.htmltype_func.Firmware.strparse_uint4_safe.htmltype_func.Firmware.strparse_uint8_safe.htmltype_func.Plugin.guess_name_from_fn.htmltype_func.Progress.flag_from_string.htmltype_func.Progress.flag_to_string.htmltype_func.SecurityAttr.add_bios_target_value.htmltype_func.Volume.kind_convert_to_gpt.htmltype_func.Volume.new_by_kind.htmlurlmap_fwupdplugin.jsvfunc.Backend.coldplug.htmlvfunc.Backend.invalidate.htmlvfunc.Backend.load.htmlvfunc.Backend.registered.htmlvfunc.Backend.save.htmlvfunc.Backend.setup.htmlvfunc.Backend.to_string.htmlvfunc.CfiDevice.chip_select.htmlvfunc.Context.security_changed.htmlvfunc.Firmware.build.htmlvfunc.Firmware.check_compatible.htmlvfunc.Firmware.check_magic.htmlvfunc.Firmware.export.htmlvfunc.Firmware.get_checksum.htmlvfunc.Firmware.parse.htmlvfunc.Firmware.tokenize.htmlvfunc.Firmware.write.htmlvfunc.Plugin._check_supported.htmlvfunc.Plugin._config_changed.htmlvfunc.Plugin._device_added.htmlvfunc.Plugin._device_register.htmlvfunc.Plugin._device_removed.htmlvfunc.Plugin._percentage_changed.htmlvfunc.Plugin._rules_changed.htmlvfunc.Plugin._status_changed.htmlvfunc.Plugin.activate.htmlvfunc.Plugin.add_security_attrs.htmlvfunc.Plugin.attach.htmlvfunc.Plugin.backend_device_added.htmlvfunc.Plugin.backend_device_changed.htmlvfunc.Plugin.backend_device_removed.htmlvfunc.Plugin.cleanup.htmlvfunc.Plugin.clear_results.htmlvfunc.Plugin.coldplug.htmlvfunc.Plugin.composite_cleanup.htmlvfunc.Plugin.composite_prepare.htmlvfunc.Plugin.detach.htmlvfunc.Plugin.device_added.htmlvfunc.Plugin.device_created.htmlvfunc.Plugin.device_registered.htmlvfunc.Plugin.get_results.htmlvfunc.Plugin.prepare.htmlvfunc.Plugin.startup.htmlvfunc.Plugin.to_string.htmlvfunc.Plugin.unlock.htmlvfunc.Plugin.verify.htmlvfunc.Plugin.write_firmware.htmlvfunc.Progress.percentage_changed.htmlvfunc.Progress.status_changed.htmlvfunc.UsbDeviceDs20.parse.html/usr/share/doc//usr/share/doc/fwupd//usr/share/doc/libfwupd//usr/share/doc/libfwupdplugin/-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.suse.de/SUSE:Maintenance:30945/SUSE_SLE-15-SP5_Update/3847439650ba3a48be0afa7608c74a3e-fwupd.SUSE_SLE-15-SP5_Updatedrpmxz5x86_64-suse-linux  !!"##!$%&!$'(')(##(((((*!directoryHTML document, ASCII textWeb Open Font Format, TrueType, length 36396, version 1.0Web Open Font Format (Version 2), TrueType, length 28457, version 1.0Web Open Font Format, TrueType, length 37464, version 1.0Web Open Font Format (Version 2), TrueType, length 29245, version 1.0Web Open Font Format, TrueType, length 36920, version 1.0Web Open Font Format (Version 2), TrueType, length 29045, version 1.0Web Open Font Format, TrueType, length 37944, version 1.0Web Open Font Format (Version 2), TrueType, length 29761, version 1.0Web Open Font Format, TrueType, length 37172, version 1.0Web Open Font Format (Version 2), TrueType, length 29201, version 1.0Web Open Font Format, TrueType, length 36532, version 1.0Web Open Font Format (Version 2), TrueType, length 28661, version 1.0Web Open Font Format, TrueType, length 37568, version 1.0Web Open Font Format (Version 2), TrueType, length 29497, version 1.0Web Open Font Format, TrueType, length 36432, version 1.0Web Open Font Format (Version 2), TrueType, length 28745, version 1.0Web Open Font Format (Version 2), TrueType, length 28541, version 1.0Web Open Font Format, TrueType, length 37384, version 1.0Web Open Font Format (Version 2), TrueType, length 29217, version 1.0Web Open Font Format, TrueType, length 37348, version 1.0Web Open Font Format (Version 2), TrueType, length 29381, version 1.0Web Open Font Format, TrueType, length 37096, version 1.0Web Open Font Format (Version 2), TrueType, length 29049, version 1.0Web Open Font Format, TrueType, length 37888, version 1.0Web Open Font Format (Version 2), TrueType, length 29621, version 1.0Web Open Font Format, TrueType, length 35980, version 1.0Web Open Font Format (Version 2), TrueType, length 28169, version 1.0Web Open Font Format, TrueType, length 58444, version 1.58Web Open Font Format, TrueType, length 68152, version 2.38Web Open Font Format, TrueType, length 68080, version 2.38ASCII textPNG image data, 27 x 27, 8-bit/color RGBA, non-interlacedASCII text, with very long lines, with no line terminatorsSVG Scalable Vector Graphics imagetroff or preprocessor input, ASCII textUTF-8 Unicode textHTML document, UTF-8 Unicode text, with very long linesHTML document, UTF-8 Unicode textHTML document, ASCII text, with very long linesC source, UTF-8 Unicode text, with very long lines7Tutf-8b813e3c46b262a9c303e612630573c2a63c782a343acdf512c77283105f9e196?P7zXZ !t/:B(]"k%w X9ikd.$&fk{Kq3ؽuImʸ0@!ҨYܛWIrbZA}}1piep9Ch8At$m<)qM!:]bԹH/?&6\}wNA[ˋ ,;͐ Ug sދycR%;YrY{=!=CU?I-D{~n! jt)dۿԃj&WH_Aw 9HȾQ G/tmے|䨴a}V99wJ.bCA~6k7![7H q[9{+U}~E]Auw-yd$6g>kddn% g^.7O`#A9,*:d0Wʤ9A,IB uB|R9>᳡_ǝkhTH_̚bjA!UhS'c{tiĿLˋ ,;X<m]yp s*09!BKkBNL~ls ~`^1%.'޹;\|)=u׆[iuc~o P؁?k4зq[d6EAxEw;44Ti\@[[+cyW缰(NKMg[H #iAoI T^t>ֵ OH->r3IjrM5?֊qzߍS/fRUCYņS戮ʷĨsMs{3\ /ecJOe~şQ6(-gsp#@n 1^ZڥABVQ>PhA_ nqOx$@Q(յ"?{*0Y@R Lu'Zmz 39XZ00߳XFq(uc9cx 6skR;MW:ÛLs ƙ4,YY߂\ 7;V3OnZ$2`W0I,khIs92I_ \p4QV歯$NvoC-wCBYȷs5Vb`{us;?a~ݩg$ۼ nčQ%L ]c?ՇqX]SupmKz՟pKǝּ?ib!b(x3IX ]d"v{;.xA|r)a:{pM^=i'^ Ոd|E$ǖ111ufld1`~יuewo ǂܻ !&U, IVIC| 4XCL{4? C;^&6Ўrj)! |ϖmpxs(CgOuFvR5Gʡ}E>nbO(d==,|/nHBk`;|FJ'<;rt}`zYU@sb́,MHS:`q@N᎓"&Bo. ::ik'<ܐ]͏JtpɆ3<!8?XkM80Ot@\;${c D#o|LƘ!q%DV\{n+lG;R_GFߊ8YP[RԠ'o)+-Ii["tU彨aNӍQTV0/7oISTBZZKT[z+{Wђ.C H~#\*JR}' JukuzWn\ 9L- > ӊSG?tL/-x8:՘:Q49@`9;g\Un&&pCD/7Su?CJec- $VS)y]l6Fߡ Fpfjp WӇ9:3#[o~k}RȓкO"C)N5Q6#s0t/ѷT3=+f %ogŪbKcB\Ɇɰ}~Lϗ8xX?:gJV$28p'SPֽ2E;cy.*,?C"!ާp @ = H' ّ,gWՏ?e!!q|dƥ N0󓊟Cfz-.ǃ\zaf޾GrM(,=vg=ټ 'mõꑈ @G6`"򊻳cÂ_04@ñw94 m&ߣ0yP G'99dQmA;0$cUI 4eة$6 "Ǝ8˩?!_Ωׁ?24@o:O9'ΰNYΉK;"D9ͩihoG4lhR+A c~PAt)[Bioc~c~x6Ln)5i.(]aZQ&kE )F϶S[]Zja(plGJh}1! j- L"Y .x-F$L^ͮ1VZ[<#S D"¯G b,T(!ýt+a9WD̞Wg\cR sҺ j6g4=ǐBL%t2o߰Pf{7ϧƪjkّdVꕧGwе3_˒rTK#p[1yxrLԫܢ¹'J0ۙGm"D yZn$cݟzin‚<+l lgu`]!<V`sSH0A,!*O%ey!!2lL0y"nf юnU|_&zި$K3wƟ967._]@<Ұd(A! ^ o8-H#7 1qW]MȚ, ,Wn#-&\&h *Mf)>5y%AjNm${gG sl Ȟ#rog/|! HeMۛ/{Bof0AhcًLіueɅa>DPU^~yBUƺpٻ*<Ʌ9o ۥLXW`i:eJr)TCI?@qѧi,f{{I!9MDgZ`?t#Ph+!T\hs]zgīJGfAlTDO<7Qgeകl^W9V{u\8їXt3 鬚h Y:qSM'^I͔P3.uw&Z}g$.N8ֳsQɾw#*zE)'O'D[)pIb11~׶7Vd|MYÚN~[]*`kjHCI*(^(`ě\T:̷BVR\Eet6kOb@hĀrgM3{ dLqmFm+ ݫ .qE#V4ͮ/w@TU9ĝ3SR!܄^ 0+iG wylP xPd5TcD'Rzݭm(%o ;\V: ˢ|,#H)d)O‚)އޱrp=Et\[!ڤρ)@kxqY\R@mͽg , ڵa) Wх`Yg_\ڗ8Awb3L3G,1aY,,2sFIF貟pK'cooe)4{v~(zjDc誳Ͷ4t+"PPn ۋȻ$ E&2}gG+:}  3rtLAhO#+k3;4ǁ8tI-9 1FwËwuKgḚ2nvVlJ ~e4\<0OL-!! ?[+`i)J8 &ޥȀyɈ Ҝ;kej)-x0]hd23ZY$8 qK= d| ثDBL! m%cHSʻb(IMߌ[r3QV[E>um8S#.q(9R}o+"<7Y1<-Im 2ePbF9KByxU\Ɇ7 ͳu0q.zylh8NWu1j%gaLBЯ4,@fA RE3m #&#y;-Z s'$ݨ W<88s?_|>7g#@7 08kX9NW߱5׺:;p/kdWAR-3GXK8&Ո#yTWnFrL,Aަ^PwlzOK;RLrzB?a@M("q1tsL [/(m۳qYit̗Q",>.7 6xnG =mo.)]^SKY~D [yw\Ђc趏h&*2c`f0Ch&y䂒m&pul?c"o:'ԡ'PF|J1] &6wQ-Y[tju']}*2Cǖ0ջ6l,O僖1oot$9ŇqNY,ꄸvFۡS;ׂ E.'{oZѵz_+Fkp;evњ]%2rK)$!f/[p Ju=O A+o~=dLf[ze֠js"oɰzFfX22tnSg xJ+ "enM )=;0߶d`*w>5q'tp "HHx2ްU`7m4^,D1AٝcujaNqb_]zGAG5Y'V@]n~صIܐ[yM(mJ1;9ܬERk3_1H>*!݆֤g(Ai"-)t ׈u<M{jʩTYidUJgfwBMʸ/< D%4g-^U330b53UsUs,^?PRi^T?{Fdx2]vf$<,7SOTzX+ 6 )0ЖES@JW% Xww?]J8r?Ux$'1B5}v9uYfb>Z6sHVA;Qf1* 73抇 e;#@&cxkiK[l*x4g`:mJL;_c8fcbord/LwT%!L976.(<_@V[e5NJc+Rx5R/kGԲPB rUïxb .p+`N.!m5<[/Z #LGï”S`+Ʉ$8cǸ7W6CrCSi'voZC}t"g+fCI"U}wZןJVQu{t\\@%F-)ŦR`u!tp+{tRJAb I(5tb(U3`G>A~jw*FWV> bq?\kszoJ" (.m^ r%ȋ捌p7(pEC7m $Isz]qv^SÐ;)Ea:MBOl\p"S2.a[pk45KpO/Hb~Un"w'-^(afGRʅ7BF ,r,e0WxSmg2_D_B?ꯥA톲DuOoBx R^%ٯN+[sV`57H qs2#@|ph)vILL(ύ"UOixrh.^W^:_/[Xz1N+^|dW:TB"Pfмð r;Q'I|f;5}i̺]l^* Bh-CL<G"Թj@{iݻ~@26}h9qoKqW0:-z=LԾ79M9. ''o@^A=SHC ?+F 1*6 [!AsD /׽}iWa_?Rւ^;q`Ћ/!6Xj̃h֏5/9vќke1@UD`2$[AFN PE3q1:|﮻6Ôr׌"9/9Gx▶g )<@R_ĝ5]ތ9[S~.5$ fI,ϟdˈ@-vUtZ{o>?M@욄 g #>Š( _͹xSX)#|]bs"P"1]"N{(??WdhhXnJ$bW{ӂu+:w= GO`)0>|:JJ^X{5pqr? gqzUSTV#@-_@ ӎRv蒿_Ф$mCG:8fp`j\HF-bpS-{TS[k%jO0I@؎S(>Zx]YB7H} uDP<]@E]( y\3nLb~2OצWI0߂#u'JѸߛs"d?ʶYZԸT|1 c]IN16MuOp}8i&7 }