ceph-mgr-dashboard-14.2.16.402+g7d47dbaf4d-lp151.2.31.1<>,i$_R3/=„(Ccr=uX=-E@+ލN+ lqԣ}^kU vvΡUϩu;-xjqkyNKʳ\}Ɇ@Z gko06sREo0DWyio;)U>IV#ꮦCTFy`+wd.cDx`~ 8@Kxc RJܳN`  bFn9[[9+feQc`Z,>?9?9 d- : IHLTXkt  kX , 9 Uh  l'^IIeeef(gF8gP9jH:z(>~@ІFЎGРH(IXY\]*H^ܼbcd/e4f7l9uLv/)z88889Cceph-mgr-dashboard14.2.16.402+g7d47dbaf4dlp151.2.31.1Ceph Dashboardceph-mgr-dashboard is a manager plugin, providing a web-based application to monitor and manage many aspects of a Ceph cluster and related components. See the Dashboard documentation at http://docs.ceph.com/ for details and a detailed feature overview._R3goat03)openSUSE Leap 15.1openSUSELGPL-2.1 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and MIThttp://bugs.opensuse.orgSystem/Filesystemshttp://ceph.com/linuxnoarchif [ $1 -eq 1 ] ; then /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : fiif [ $1 -eq 1 ] ; then /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : fin?IlU^ 'Q6@h?R-! t% O?U6u  JGe;$D2XPn2J X: E "8!@t ~eVTFl\N[U!U 4)GaP~A2XPn2J X: E "8!@t ~eVTFl\N[U 4)G^&} ?2XPn2J X: E "8!@t ~eVTFl\N[U 4)GaB2XPn2J X: E "8!@t ~eVTFl\N[U 4)Gb_ C2XPn2J X: E "8!@t ~eVTFl\N[U 4)lG_c}@2XPn2J X: E "8!@t ~eVTFl\N[U} 4) GamB2XPn2J X: E "8!@t ~eVTFl\N[U 4)Gr< P2XPn2J X: E "8!@t ~eVTFl\N[UB 4)|GaB2XPn2J X: E "8!@t ~eVTFl\N[U 4)GatA2XPn2J X: E "8!@t ~eVTFl\N[U 4)GfFY2XPn2J X: E "8!@t ~eVTFl\N[U& 4) Gh{OFA2XPn2J X: E "8!@t ~eVTFl\N[U'~ 4)17 I{5Ax\wIz4i"2oD 3Vr8K#z"@fC!   )F6t Lo R? B.>C P9(w|  #Sh`2:.\M`kN/+ %8&3h  - !AJQ$V$ X 1|cRDy"?Ny %  i5 vmWc E  d5 G)*0-Y # +ni  ]*!T'3*O : w-e R*,oWVSs  uj  ' 8 cW"mCvf)l9n,(lvw zwMQ*\S?&SCtyG\ pH+ur 7 @  bw+`h,e" O i~fmG   z S3\k_)ai`P3_qu4Ww ?7Vx9j<.x !z+  + `qzO 4E`  L|> q B !. /ZPo KmiS|7qk Z#U"&S# ;"t\  &j% 6c*gk = V!%Jf  .b~Y+/C*@h6BPz),Y VAK 4 <ngL7I6 ( ?h] Eq=v)[ bca;jh\Nt<` 9;HcEY1 _ ! O = pZ 2Cay%-\ [Pn2J X: E "8!@t~1HNiMT=OfQwFhK79jw U%Zh} hYD _wC01YO#F W?Z# f 'pO=^&<#\Fp  G [`[  8 \ 5{VAdw8qA큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤AA큤AA큤AA큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤AA큤A큤A큤AA큤A큤AA큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤AA큤AA큤A큤A큤AA큤A큤AA큤A큤AA큤A큤AA큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܙT_ܛV_ܙT_ܙT_ܙT_ܙT_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܙU_ܙT_ܛV_ܛV_ܙT_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܘ_ܛV_ܘ_ܘ_ܘ_ܘ_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܘ_ܘ_ܛV_ܛV_ܘ_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܙ_ܛV_ܙ_ܙ_ܙ_ܙ_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܙ_ܙ_ܛV_ܛV_ܙ_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܛ_ܛV_ܛ_ܛ_ܛ_ܛ_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛ_ܛ_ܛV_ܛV_ܛ_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܜV_ܛV_ܜV_ܜV_ܜV_ܜV_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܜV_ܜV_ܛV_ܛV_ܜV_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܚ_ܛV_ܚ_ܚ_ܚ_ܚ_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܚ_ܚ_ܛV_ܛV_ܚ_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܜ_ܛV_ܜ_ܜ_ܜ_ܜ_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܜ_ܜ_ܛV_ܛV_ܜ_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܝV_ܛV_ܝV_ܝV_ܝV_ܝV_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܝV_ܝV_ܛV_ܛV_ܝV_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܚT_ܛV_ܚT_ܚT_ܚT_ܚT_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܚT_ܚT_ܛV_ܛV_ܚT_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܝ_ܛV_ܝ_ܝ_ܝ_ܝ_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܝ_ܝ_ܛV_ܛV_ܝ_ܛV_ܛV_ܛV_ܛV_ܛV_Q_ܞY_ܛV_ܞY_ܞY_ܞY_ܞY_ܛV_ܛV_Q_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܞY_ܞY_ܛV_ܛV_ܞY_ܛV_ܛV_ܛV_ܛV_ܛV_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_Q_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_Q_Q_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_Q_ܖ_Q_Q_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܛV_ܖ_Q_ܖ_ܛV_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_Q_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖ_ܖb933ba14712abee65122e3240116b3de125675c0bc45e6b7ec101a8a5172b77124b31e1375e6830b1ecb68743729d211597b00422aae32b165fcae7ec4f6d80234580a5591216b07eae15d2e6db17544e49f4dcd53b5814cac4786d833628004fa0e803054ec7e8d9e1fd3edb02a0139bb51fa29e24841e09ed114ddc57d4acc8a47a609b8af033a8d0fcda4f99242680dd54a14260b7120c67be7645463de373138eae01a9e55f5882884abc4453fcd386e76347a1b5a6cfe7d97f28055a3994f4eccb7d2c2803a9d56f4eff12a0b1c88a4721e194c3e555fc6ffd3cde858f58f9a8dc7a6587b769f8a4404c758232f3bf9e6df9b83a8aa23f9bda19caa59588d979ad0556f594ae780fd8cf9cdf44084d2838c5a37770e3e25632f73b8944d8f70158a961e671f63521e2bec18d52b0c99409fa14923f0ea71997b06e2ed3cea871d77a0e890366e11821f315ead72770ae45a70a07bf61112e4f94c075ff3e2134ff916618499261862cf0e43965496e183c1aba119134e138fb24005421f813465580fb25f8c49597679819545353c01c56ba6adebff3defb4e0b6b25110e5c9d8384729c8772b6891f694eb97781781de5c43104ac3b8701aba6a67ffd5b23d0b5da971bd7bf8c9dfc22401fcf7c983cbce673b8833d2529d1715aae2038a3ba163bb6f97d39cfd581f8b900680d4b5d4e8ac1fa04b5e95e0a15e92f6c3d1479d65c3c28e9de3d2abae2cb3b416797679946bd86348d3876293f3acf5031988ff706a61a88a606c18b9487235637234da0552aa0dbb1ccb861a67d6dae9bbed4ad0af89da6c10be090bba9554707b1ce5709815403227ecef50515a0ad0fa8c3a16a9fe399963bb63ef2211e9765b5028d7e9f87f942ea723765f5f815f20a5405ac0f3db1cd793e97737d50e541ca36145108e98459f615fea25645989f0ed7c6e3a68d2af26364b8cc3257b42c3e08567533346262a4da0ddb689f4db7ea9e01e216bbb9546fed8d20aa97ebc3295aed0bc58cd1f1cb6944caf9a4a31fe868f7d48c7f361a703aa8086c5ffcda082f2b957a88e0f5d5280be8f0c6ed31804e05a9632163aeb99a1b003bc62f19a2f18a174546f4f4a6d929e70ccff88155ca4eb6ba5365102ca7646ca5d1a77ee08562140cbe0b276391ca1c942fa9df8bfc58b943c2a33e81c20cef34c34485f44e1ccea1997524f5b1dd116506a02dc8a9c5c6b18d551c22df7e9c4f832d3a42f64c6e6272aeff5fa7d75aecc5ce604d5bacbec568f5887ae74491cfd0dcc4feeb988b1b79afb1f741fd4c752c1ad43a14a78744e30a5df664626938aa5070ea4c04e7430f472461687b32a5e14bf7684652815e94944c7f4f6c1fcd88d1906bc6f400cd7f833f708a378cb5b1e855791f2054be2e92bb5ea6c1e35d27d13cf34254bc878a16a01c905d3fd40bf45e77582c2015a6fc1ed2f997764a022bffc18e006bb7370b770545cadc6e37838c24919703c3146606aa09e48e2f044e00f50e3fc7fa72c4bd725b64b5c9b319607369a3062d6d8cbf9c77f762a8b713912bd2d8b42acf3f9235e612f65c149f60081983a8a1adb31bf911c9a66ad29d250c83e2ece1c53aa20615494a2d653d82307b6659f811f81d2df24f099c27e65d030a6a36e9c9f2e619e01e9451a43cb0a7ba9f78ae5d6c4d21a1d0c21c9c4b9e63e9705a707c872dc9405288194277bc46bfcabbe69b2984403c2e2b49c4d725a00fae9a665e36db665854acf58c54f8991c658639c78f7f692e4c11b245450c7ee69ca64b0a07e00d95413bdcfd6ae3a1e2be84f53d97e76afc253a86ef88b4c3381ee6e86ca274537a883a8c4ea8b3970ce473928bdf945236b8aa6c7cbf6b0022f5ce379b7b0ba8e7343d8fec451d602bbe856ef80e101210868601c19d9f27ab76e0994b2437e711542d8cbe835699170fb561840c568fd136199f53f01d0b9b50b4f58411d52a743639a1f6edd19ae0d558ca406d66ade698d41d039bd2ac81382076738195dd228c11d1a6ad9ed831cb3e3f86e243987cccf377f401163ef588130731b3b1e36cf908c17d3ee45c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c0520b1f4b526c40442a0854c27f75659822eabafaa3170efc829eb30c9263d8602f57949037cc6c288ebf40490ebc694887992201ad6a1a8e836d5b956fb7532e9d0299fd0f87a1cda59fe002b09eb0ae82975d7a0d2cf869ded7854fa9dee30c8c9d6a2f64dce46883caf6c7a7e98cbc8a9eb06815e9a01e8bdc5098aa72965246b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742101f228ee065ad050abe59afdc56feb59734fca48c528de1e62957fad74a8fd527bc51b3131c70b5985f4f2f76fc7b9bb8f20dd04cac445b9b42ce0387f3bcdf91c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea59931d584b21a25f6790762468d636e607241c6cb642d2b4c52e5687593c9ba1236f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59f7c002c3429c315f9ef823dbf2c6a25cdae01df0002015f72e6a34e6eb4e222f745c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c0522984e11bbfaffb7330056d95ec98f586a167045490026b1e2f649dcb4fe3a074ed55219a535d01cccf2ab87a9867cce201412139a9847b6087973e500d3b1e881b39075e5acf168b7be67eee0c2a5e136ebf4a7c4a04007bc832ffe55f4d4bfb4a15c09eb7bc61e8ec1036917f87be9713efd13b4e29241a5895a45023690466b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742946a541fb7e13765efab9f1e446bbd7d4317459aa32d91301fc513aed51ed9c8059297c96c5453591c3368cf48ca95151c03ab047d50439c1c97d75b26f2ac8791c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea56888837c9f302245fe1231d36d97736f974473f2c0a49cce2ae639f2a315b36236f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59f97cb9750e1d181a9c2a67cff82c1158df4d25f94620fcfd79df8bfa45f084bd945c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c05ceb97d0d347ff22cea7df036541d8a3f8f73c0c44eaaa88678a05632fba2735ec21e3e51425bd6414ca5038ed0a7a53c6bda294250b1f342c917a8d710c70f448343594b5d43c70e0aab209acb807159f166a286209a05cab8cbfa1594f3d4b251c6234a289f6ff64fed455e750e81cddfa9eb6574cc8443b35816a6cee951cb6b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742505820599a7e49fbe69d076bd3d1b534b1e418cc94f192fbbf5605a2db88bc1d10e476f7178d9934994f2ed3958933f389b418cc627f60cad1b84b58adbdf30e91c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5de87f685ce51a18c6b4d9a7370a877b58cd25e1d44f62087d8880bbe95d8f64136f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59f8e29acdaa685ffe8e66887436a1fb3876c055588f8ca3946a2509d27b43d1fb045c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c05c740b0456cefa56011af4f6ca725fcf7effd3473e232f69922862573496cce7778ded1001b60799fe8771c59f381419ea7ed77c4722d2b82d79b163400af28fb80af8392c68f732f47229a63d123ada15f27269119e210736549e3b2f35c0933e1bdd1d6293187ad4ca71a9d853ecee36e6348b0171a5367c6cc16433f06f8ae6b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742107a1143c71596e89eb6668c8798ce35e60119a0530a06a9dc828cdb319f7dd0fbd0d78485f63fd23bacecb45329941bef0cf85a6cbc16e42b097a32da66d08391c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea52c0f88ca420e4d084642a5a08776ac56deddb1a8891b0113c51539c87def10bc36f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59f69bb83e4c907e8ee4e377ecdf6d53a7af71a90ace6e324c091b33288e4f066c545c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c05f4d0bb14a0ca65f1f4faf8c8642b5791943a72cf8448be3436c10f78d14b1bea99064f29db74259627cd400ee8d6f26021cabdb9643161e7f7716ee78676484c1027ab215baa8a00b4d56e26ba1fdaf094491c67e7e55bef560d1dd877f0ed91be08132c2a7194cd66c1eadf587cd9d03f90309258ae65fc987b27dd5994bad86b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742b26c74c5dcf0bf0c8ac757c17bb61be149a9b36a1397c2d6cae907e31494b9c6f64de4575bb36af192ab4fb91cff2760c4573174484dcf2f384596daf3f2a7ae91c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea55098da84434184adfc1fa7b5056073757a1ab1905518c91debb175b9528e2fc436f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59fbd0ceb71de95b09b15dbf44252abfcbb2f8134f6b943bd660098deb6c8fdb0d045c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c05f15305b0471236c35ebc3deb52d036b938a6abad86e1432d6a78878298ef5eed389c9bd21125ffc8dad5ba12f4009a885b644efa0128b3790e04fbb14b7adb6efde03ebde4ffd2144165db5ccc57858089046901997060912edab4386c137c2a55433084ce236057efe534689eede7ca86a6614acc42d77b8a68fe12202de4d16b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a8074253dbb4e11499ead72ce34f566086399ce5c55d48f446ebc57da6e8eb7f5644b2ddd6629e427273983ccca58bc92f015c49944250ae6bfff1270b4fb9b960378591c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5e1de72f1f37af1cace035aefa37a662ff6e00cc8fc931a97af45744cfe458c3736f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59f73d7a217b483cfb0429e861cf683f555151eb478ac8523e767951d28a30b3cf045c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c05dfd7ed8284691e374f517a1130e43d62ae204f5c2b4481f4b32a4fc6f3519bf0ffab93de65773d31936e0c05cc8df888d8535b2a702b15c42507e660780e6fed785ce1a0a3f5113707ddca024ac632598a8adadcb47d061bc645099b157ecc81a1dcca3c21e14f864c2b24c4ec1d88e38f94423e4931792e2b637b9ecd6249a26b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a807421652a10917e1c6a5a771ccc9b009573ce0d6d3fe230e3ffb9dbdcfa0fd04a31f5a6d5ff44752cbc76e70fa2a51244085d86f557a8ccbd18264359239b6f6b74791c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea57f56c780143c88d5688d5f34f2b18331f03d96ec0c307d92c0585caf31e8523136f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59fe7a44baefcc7619bff8956882a2dd8c7805dcd415e66e56690b8c8c7dbbb0df945c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c056f1b17eddaae31e067675d7a2417ddbfa5ffb575f7d3227568708406ed64b15384e3ff349a10119b54b050c5d95aa8e0b52b5e2acf0ce2d71b9222a7a7cd5e99d2b38c20677cba1152f85d9b0c43a0c947ab81dd28e3c37315a1b609653f7c7a31483f24a3e7f5dd35c401e6f36fcd6c7eade7f81679bd7353862817df5f46fb6b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a8074266149cae91846a15bc22ee2fd518d2f9f04aa1b2b19c46c01b89911d551edbc7d6f33469ed4164fc0157f029c73bdd935387a9abfa2a20d3d0bdcf641733a0dd91c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5a22c9a03620d840086991ee5a4b3eca089e498b86f03f69b206cc6c4c87f14d636f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59fbfe86a8f0b5a04c7d82b0c40d49ae7cd628b44a741c9810abe4b013e641a4add45c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c05a4e98bff0adc659a33f72a2ecf053f62a5255884178de9f81f837637a37e0e54131e0e73287037d6e7af3b0824c11e31ecb7d6393bc19fc9bd18fd75806b9f76500592b9cc586e37951e1e947239cfed180a659c654f8a11bda5c0537e8eda36b83f4ab8ce3f92ab1b5f5813fbafa5b4dd0e263f74d78258f93250a8b6b857e86b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a807420a22ee6f6cd5c6b0dc1a23f98ee3430672fb40bd6ebba1363a9ad661ca05c1807ce606760f7cee210c6d2f02ce9030e20290ea1d7cd064c562e457f68ce5705191c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5dd3a04bbaa34444cf61b7fb56e7d0671adedc102bd583e7e358080ab2e5ef78336f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59f210f58a183b6bd2f51501fd7eba03132b7fef95975054fa7c7e374497e4328df45c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c0510551edc02cba7deae127fbb3292ca83d9c2b429027c18e7fc726efe55b6e7eac936984aaf5358742969a00755ae40b93e50b19f22c143514ad39071b5a2a70038933ee3a496b4e29a740112bbeba0fa52c4b59e302be86d1ed8d471b44a67529df966c0789133548f2555ac229bb60f561c1d0355755fe7c8e323f4d7f4c87f6b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a807421fb9f2048f698d353d7f4d6618f5cc985f8a9b1c181010a0f754c5002886bace104e16ff33c2a838ce84b6be47b5171d20233782e6efb12f3ab5892113365ade91c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5e16e9ac37152c8e63237f76fc3e1046853dfb42ca3c2bbc01a55c5157c7afed336f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59fd954119279f7d9067baad50d9019c3ab429658b8cbaec39e0564dec45c19bc6245c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c0594c441963a6cf304d3f3527a103bd6be4e8aa2a16cd94ef9d5bbb9bafc4db0d79d0ece2b17a39870d03690bba9139645abbf31f55d7cca6de671760e137f1657956c798f40868ad0c440ff27dd65300c1c0a1d7ab71530b5d485a916ceefaf730fd16a8fad206e5fbce0a5a9edc19fd105fa6faebda9aa937927e14eb74e89266b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742f215a0ae0d4c0a4ea26f7dc51ead0c8470d5453381e3ffef103e988b1a41fa63633aa7f684f36472e751f728dc32a69dd060af15fd5fffcadb468daafd16753591c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ca10c7fc3dc22e2fe1ec763fed49e582b38082c6489a55c45998f3848a61c78b36f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59ffd363adf358b289398c5e59d8e3a1d1bc1341122838c00c86bad81b9a7b1fa6a45c21aa38f275bd894e5d8e265217d215784e2848103ee731e4f94774c1b1c05658f03f27917d74e993e7678ea2d79a757dd533881fdb578d45b95d520755bc6220e1be513e175341d586da2cb540cdf103fd933e52808ce012175107bd02d9d0cdb07d94b7628a48c8e591ff82c453a75a75b31e5734c0051a08fd2002978c2221e94f87fa30d8320252bcb7c3ed63b088c958827cea085b14fbb5858e6b7906b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae20e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b68190e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8f7225ee740f608091ab6024b70ab22ed071532939f1ae81c349045b91c6b37dfa3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcd0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d506453ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba933e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af5745613634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a807423d0a7f2cb1f43e8762a2c32062ce9cf55bb90228b193257c5f32032fd8f927eb4bb045256b8f0f2279f17e58339b1df345834575f4906e98b1319e7b5cb7731591c62a55e9fb825d5a19d3d7961552e35ae091962b5044d288e51b05e5be8f3bcb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea55ccf0207032b1f790ef348b38725ea912caf808be703582b5e5077975c78aa1736f70b7927769498857d9e5d7964f770c41f268c3ea5729d4a65470e589237a997405a243b7342c5dad578b254948a1235caf31f1e6016569b56e8b235d43f204fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c9675c5026faaab8e0a04d2aa7fe977ac358a570db8fba246d6236e591c1e55bb089e3b75813ce9aa01cba6ac694726d1a9e8ab6e280e12f6c6c4bb734249b69cc59f4148fcb342e64fc27f30de9523b062f81e381ed445dcc75dc2eb03f5f1328191e8dce06a4213ee2e0798f2ada56b1db234db277430afb826505a3d6ce5441e32cf32b9487d615334f8b234f0789bc932f8b931924d1217315e8a777dbe83587a1754e29b0528525fb3bdc574cffb0e781c46db49410198dc0a6654aa528607b4e5a46ad1520b6c1c65772acfc7672f0730a2f871b7884de36965c73dbf5ae3dfbeeb39816b4a6d0ecb56efa0696ade414d455d07fd10d7886ed2a016c269fa29f565819817b4b0bce1287e1ab426d0f39db9138a8e19e0b4362cee30eb00539c5c124f70d5cd2369a2be23bb74300e379ef8d03a9c3d3acfd216e3ac31dde14f6c7f34944bd3a00f1b8692ec482ac92685938e653be99d73ea4acc754b07af8f8178d044de0d547fdc43906ceec62b914c30c325c5344366a11e5617335a6cb9e26b645b4b9f6cbca8931a95e77295c61853bf8d0e376933486db06f62c856ccb65318867d49e7268a2ced11803bf221bc1c8dfa247b8aebecc524de774bbcab153058303f9ae55cc3eee6c9a859bcdbf7de7d21beca3fea2db08f158aaa27c0fea4ec8e16d5487b5da883263e628deb07e93436ef728f2faccc4cd754f223fc6ccf5c7fc804927bfaa86e401ef4f7c2cf65d1cff6914b1d30a870dcf88d5dbc472665f8c4f69a4a0123cfae2c90134b8aebb680138e00e6b391354b846cc67d0ea812a40947f43e7fd2e664a5456719aae1027633dddb43b540b95cb461e36fc413140e8abcfd4059a4b7bd67a89bf570bda6c3b57ab73167068b3608ae6645b7f781c0b15d2f20bf2d689d43d2641922bcc0728719acee6bd958181c73ce5f932704ea5e1e27f6b59ef7399605bee4bbb8f3b55bd4140851203cb95df8ef55bdbbe7e4bf80e1011f6257a7ae1ade2e0ac63b143bd9edc33f976214425f637f4097de629a330ff52ce386cdaede25c5d0d89d636c8b19d738bf26058067388c849be301dd17440c14c40e9f592ff4fd327d93c53e91abedb392773ad92d6ab23a8a3a81c79646a3da4760708afaea02ae857ec4b241f3789224560116eb87544b187efc7e827db57c2df82e3d0da619677b9649423af303da160e709e4a0c78b5c96b0c1d4edf2dbaea003c2b92724f0420c859b3824534fd6ce1dffe1e51453df4cc09eaab8e79c72e9ae07762b4a8cdc4d6d2434e78084b0c5aa10e4642a796b28d5e08b717e611da4975f954503d6c80b3b300e867e347b4c56df62c692a4f452eee12eb70834c5f7838a6c000351bdad6f383693adab9ec7b977daae5bfa9dde66d0899d325246f9581494413090d5ff04fe0a1a413e3b20a4cc181e82dc02822ff17975f09d5a03987af10f3a0a36a85e1a2202e53824c1306dd1ad27151455185b21ff44deb8ae44d51680147bc4190e2acba62a1741fdbfa49bdfbd4ea7388dc269020fbde379c37406935305c6133ec7f323eaa96272174215d6fb6cbb99e85a32ee917ec94b02c9a568486d870621ff11930044bd9cad5d5bb881a47bed6a6bf8dff3e8ee9b28ad532034595c774a317f2502f429da7a6144a7242f5784dd4d3981599a966c8b3c1dc76b164afc59e124f01a30d0b2416b346edbc0ba04b33356d895cfda05f90aea3d7f1d0e55198e63339d8c56ed806a3d09d2ca9656d0f65c07f6494a564f9448c3108a0a3d5020d9d190254bec739613339b60950ea32de48895e558caee1d193f5a25c69548f861d3f08e8c1e069a6116a2e13647de5eb78aecfb0cc48ade735771ff7a0ec7116c1a7787f7156de59f6ca6272ddf95108eae068e749399e5844d63f42c5552346ca64b6c89f0ccbf84f59c10633dc1c6cad5cd512b8f6c8c585fd3f597a51e8cfc4d8f8b111c0b35646f2f6c8245cfbb76f88b112eba9cb2ad0116f7bc1f1caa408191b3c4b7782c5b47df4e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8551dca3810ccfea751f2dc099ed9a13c4fd2a88a1f9c675b460b4274f6991a86c14659aa1e8c32a7bbd0ef04d98d41f7fa9ff2da060af78643f3f36c17d976f395fef6053fc7e0a3345e16af5b4d08840687a37396bd63bd69fc4f78544885bbaae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8557f010183ef53e5e58c4e6d371593e2a0a78d6d5ca166e07f7351d12002efb514c6fa4ea9152cc200c4bf3e83616126e92a6939b7a9c2894f422b19372beb48efba15e4605facf18b24d1cb96e84293d622774c9e90c9a8143ebf64a16385a4d6a2a3082a82760635b989e09855137f375bfa8782e725d4fae17088cdd133f029c499ccc92e34421e3e79291c9b7d17b9234dfc9df352c9c0c165568082c073a75da4d4c3f05dbf473d1b27e2e80a6425e8c374096045c619d997f29bfc533f307373f08179094aa786e2bfed5caa8c04e0ef6cf23238c1a6a51c22a134cddbbee3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85582764e98c21bb120b3e929ae81d9b6e37fbce3b58d5be5684043b03506fa308f94d8b096e2c4ffacf2d89f955019270530228c4febcd37b39369b5c3e724122ab513d39cff4164aaf8541b06832c2ab506396f1a1f407ad50ec1b59a1862cd8e058fb23291bffcef1af4b538aeb1326cb1cbf10c3ddca1b661876bb28678fdde2faceff5c911aa9e9373d11b65ba67199fdc89325aee8e3f8d353a8654136a6a86f791dabdda26eed31d4a50068d7448f669d73a9bb9f749387d7fdba8c187266063b3dbe1d01df13567c267b88742b4503efa625930146b56913de74aa3091de3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85562d2c150f614f948d10878ce0fb4d920b0803f9d1e6ed1822aff156df41a467a27a30fae703b040732dafa3931d9e91cda06557d3eb810a3a64902b4dec6cb6f6f202a0ffeb0fe93c30bec6dff97c867c2beff4db7da6c81f442656f45e31b62e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855bff1253e4d0738015ab4379128063b48c386b9f6752b78aa0e9bd4ea9c78d467ae0c8bd3582a7af96e1e4ddc8328094e5c509c62ad006154c5d40110ac2e358b9c44e397c3eaf8e590ebf322d03e70253663c8179d7f59643a873aad6d048ce97d635f7f66a9a59b61ab2f294e6d1824badbba5d6947160d8e8a6562d54b2a74dd62246e0d25ef4fb4d96be69c0c41d22a412822eebc151859e0624a61c93ef898b59552715a77319ea0b38c8e72bf0eced9a5fa32e62e2de8761f6beda7f4282f9216ae852bf33085ad3fedc3089380da9cc95aafd49ceddf18566a9fea1db9e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855d2c92598a24850a2aa3ee62c58bcac5020ec0354fae895fd7ffd1b6d61a4eaa9890c852fa59c4d5536f8f541db819e3bdbef36db0d23761275683d51297f8edcf91c08ffdfe41894b0dff7341a6457fae1b8f7264bc54263af1d842594d317a2e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8557259b3db5fd64c73601bc6173ce9d53dc1001b81e671811b3bbcfc6e6c9dfa3fb77b3d6a93523b1aac0b74fe0315922f20e275e7dce736d83e224f32e85b563734ca210ed34f131c6abcc1d8568f3d1ba9b9b7c747e47b829063d64a2528dd9be3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b25546cdac6faaa5cf9b071939ed6c363e56e751201dd170b70432eb5bd714bb2330829f271e9c046faacefa17509ad7f296449745fc8a4efc96c89f30daf7808a13d3910373f21ec3ea9940559a22fc2a3cc64917ba236a285ff99f0df111d9b5deff55a2a0911fb4fb0ff08827cdcc5f53d6755acd0d074600d9b8d60f549e59117d22a422f997d5b28d30f2e2b2c11537e1e28f7c1de16c40ad4b6cb46e3792357825a30d67bf2d7523bb7b4ed3990e909cf8ee7a93e6a27f1c435c07892de3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8554c744b5a8378e59e0ac83521df16b14f74bec846fe5339446fc3cce26d0b68278086354e8d022d6f469c2b684a4336a45a6c8bd7215c26b5419b4715cd534c55622d52a6ba7c95f4a9fcfdec986ba311760f3eb511cce4d8be98b1f22ef94b91e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855bb95deb5bd8ef0f0ff36a273ab4d450dab282e8ce4c927fdb837fe31eb3d86ac8adb5e2f6e5a498d33ab5d372e5a3e9c6be1e79d672acad8f772041b00dbcc6bd3ccbc0c86e4109e90dfa786363ba0030f9e82a801af6454af2a116c4fee095887a5da7d83271928f0c8523914e631f47cdfac406fbebef55e8444bc6dcc66dce3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855279f079b678f8580c75ac4326544e8fd4a76fc11ac5d1253476122737c8468d0e18ff8863bcf1b3ad6fe946ab37f0592b5f070e15ac4da8d8ecf9a3c0ec83c81d5970cdec2f8b5e17c22f3f7337762822e02f921b2b5a385c3990fb23a5dd362a0cb2289af53abb8876982b56782f2ab0a42bfd51eba7d0485a6b580f8260592e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b3f29143ae5f13370d8544b6530683ac36ec5fbce07a9edb4bf6e5c719410fdb90220544e6a193722b7b110f08a7f469ad1dd395a61e1b6f22db583ce439cdc5ade1b9aeaf29a74db10f55f02ed00c870f95dbbb07f98463e051e3d85366089e41acde4175b7189c5fa754d1f7910afbfb6203d4d212c8909d0b1aec58de4e9c1ea14d00ab93e9fb1de49cf40d7432a4c8fd5ca32f63a97f222be09fd1083c7619d6bbe1c74909dc4bde3836f37f0fb4cbb5f06f42176075303750e9e2f2f6f85506e9f574e0186926030e9191cf57688fc059a86e2bfa523ff28bcf0752ba30e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c3b3c2e3d5fc10fb1b83bc6b4b08a27f052aaca17f45de46b04043ac4384dc901c69a0ef6523a0c5c587040ed23ce38089381ba87da3d947fc74965049137717b8c963860a8f979daf184bbcac9d5076e5140828e1975749ef062ea850012d04e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b8ea2f9af492b039da1fdbae890ab0ae541959a0d6e32cc2109de925dbb3534a2eb1549f9396d2f5e019254b63a37fd833bf361b128df70c2b0bf3483b4b2929628044d6fc3f4bd1f5943bee476bee3cb5c3a00a04a0dc52af0df15e2f636b13011a8c1aec5c6056671ecd839cb48d25fe8bc2d72e456531a756d7886a06f6c77203e7e7eaa4290e69b03cc6695c8aa2fcd186fb7d8417157e0c1d687284ef0f6b19c04d1ab3f27fecedce5de8f2d1818d74a67e3ca0ed360328c6195f628f2d38a75726fadce7b6c85cfcc8055bab75a5eff5beb5f78976d206e89463d8981d1ef01d68544e9fb6276f1972a0bba3d1e3c8e318549ca75045ced886a90e4198a5a72494b11a7a36a5286e08e1691650f639759e4de913f0ff8e41ce19aea0f8ccb70475032889f4520f7a6449661f4d0bdc2a06a82e4afdb35a25a38bb337abe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855fc4bcce5c1d3e562b680866ca6d95dc54b00861535eabc9aa90de4f4f6a7d75e593d9fe1144920f4ae2574d2bf008b748662e69ca03c7912f795c47526a3588e036198a690e9ca097abbc24101df2c38b7a6845f64e095d56a325827d9cd2133810aee234a82ae2e512723fe13a090661833af4034a32e4ae34d04efe580844f44caaadf3a238b5728b5abfb32557aa7f9977d5fa87303cb79f2962d8c7f1571e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e82c64498f892d09f8f23877ade0a55a1767c676e622c15eda879943426d20387dc21be2c092c83a676ab5063cc4653234e336c5d731f759ada80279fac51efe864c0264d5e92af935086a1eea5df8a44dc5991543008e5ca7b18cd5af3e7acde3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8555154568e941af7764f0f469b32e6904a56a769f0b39a23ac7594b20f87cbb1e36c3ec7bd9c06428933a5d2c029c9369bdfac046a948b9696fdaacbce872207e19ceb716f256a19e6b6b3468815930e3c1ce326d6dcd37b6ef279d925634a2aa0091c69cac3132417adad4f7bdad9bea2bb86fdb3cb880fb17ec68b8563ec76b8e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e3386c92c8807b26ac159b58c3de8a5cbe5a1b4e8b68e3e76901141c61be2fe8c72f668ae78ed15df4f678d9edd154695d58078160c0e9c503a23036d0de3df15763c0e22d50af68a8564eb384d5713c47f7b00732e558a7d3d00b2b1962c2243e1da1817e6906ff080f1c7a7d59aa1060be694a0d4d75443aa6af07738bc07be3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855129be4dbd7aacf1ce441ea7206abd65e0d939a61b47291dcedc7066f54467f8feb6206856f1cb563e6e0f38b2ada4fc839bd3036f6e71e61770edbbdd08b5b83018912f5ee5a75b6a066388cb9bec69345382a01bad00f0eedd611edeec4fe140dabb5eeb4ae2dea84fb32bc3a25fd2667b3cc5fa0da1b53588d42d7dafbe9b2e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8552dbd2625a91487c7b16b3ccfec50f274b7f21cabf96283fee50735424e96b78520f54d6e97f309e45601ab4a929af2792ccb838bfc21d8638a585b2a7623bc79be0dfdc63cbf51783aa2a3084cc256a1767859e9cf687370ea9d54bd02de80671fb822233a3cef0c2a930018f0371a0d8e65e46fac90ed4a654b1ea07fc8420cd2f2d788c8830c6b27a3ffa0d100f4dbcaf51ef19d992f9a60670f637911d14774bdeb373d65f005eaa7f04f286c1f374fd1530ecb31593db3165ab9ee2540528a31ab172c192df03055866eb9115785abe06aaefab3004db1656e58c2ff621ce3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8559b127072f40177de9c2081eb3a9401724354665842aede1ce0b572b243154a478e4dbbe8d7de748f7a817c96eccac7b61fce6d13c50a55d599cb9f98e600cc9ab4f1627b93cf264fdd7de8c7dc4a39c693414c27abb89f70053e1fea9cabc67ce3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550a52d3f701d955b051960631ef0961c1cc64425dbceada32a29ca8cd2e162a4842df435bcb0895b4a775fd389037be6eb9ed44a65403c32a0e6cca1e53efca37081a448ad97e696c42dccf75c641d72027dc3b1bbf7c6d3c9bb3c3715fdb2612e1af7e5db4a1f6195ef789621b7243dad452187e416b6e081a27eaa8cf5b21dc0b523c87c90c5e4fc26b19f2d1636cca40cd95510855523556de851ca23556d724dc34c9cf92c1c982fddfe710893969ac8457746ab822f3db9b2d3a71ec4f7b359db1b3ca72faa554c5af413811d5bf629f39035b01c8626cd3c23c55b48c6cacd2e3fa56be7025339ace0d0fe5bc53c9b23e3575b9b7c3d8760bd28bbe4493e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855fbc51b1df45334216185c74624d51cc091548a770d8fed6ce725440e4f1492894eb0b656bc84db6ed2e39a029c90400a8aedbe0ac8c40ef6c3d88673370e9cb0bd0d94af19c94dff2d3a218c683564f45b7a65d60760a7f313976e029535dd51478778d35a55a2fa31ae0d8e5ce9cb3b5f7ce70c9550ad96dc79236e53bf2ac4df8811c400be9a3af7c154370acbaee6c015acf1e1f194e567337500609778ba54b59a8ac3ea2fc3d85b17febed136b678b865e3211ff8a950944777f5e8651b7021c852697e9a4ce2e61ef231b525714f50bdce976f9e71362d26a4fa077531e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855be56de3feb9fe644942937a5026780d7c218985e1ddfba0c61fde36d52992cd3208f8dcd5b8554c7646da13a784523c693e73617e7bb4ce7daf8c30772f6f243c356fb1b3a299e6bf9cc995f7bbfe017923b39ebb0fbee5a8400c72362e0473f4af097f30dbda961aca4511039dc59cc3a93bfaf20b57ef6b0fd308e233761673e465faff9afa269ed89694606cb38ef56555edd43091bc7efb1c0024d22f43ee3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550de9c4bc6bdf899d1d0bc94e3f99532ad2e7e601bafc6d1da3e0c4d32fffaa4facbc7e3116b07fa434453fde2fd9398e129f927d1756944b0bb06dbf84d929d6a5288380f92abe68213412cdbabecb7fe5fe57a08cd9111454652e833fdea371820bb689385d5f3340c88f70e970718c95c10d0838c728ead4447d22fee2b71a6d06e806e20a79c760738b513d3dc906e5b05b7423c7034166457a64216987e896d060d5a53f14724154fd4ff443bd20c914d04b4c8268b94941b5213674ca1001cbdbfc5334772fc0d1a4e8c10f09105cb1e6b3de54cd755cd473d443730698e0141dde896e0f432f87e56058452fc874e5676cd62a6589b18558cecb069d9f9bf4224755ff8693896524714a9ee097efe891d840de3171657fdcc2046db05a9fd7ddc267b8dd5598db082417ff7a077fa632d77829856f16b008c560ac12045c76f46eb7e661c11e43541b068feeb75e90f62be190109b2229ba7071400a7950f4cc6f9e4cae1c4366e826cf05939050018cf35dfcb5ee411e552614e5e8fa7843f44fca6a91a8cd928ffafc570a5a8665251c9834a97490b58c7a1ed98c575e32d3b3b470f4538d15262b7d558b6d3d00b6981534e504dc2d3dff56133ad855bbcd8c91b9cd2c6749a6a5deda7c9e25d7fddff0e42cbcea0b88f52fc81f9049e4758d95e00ba4d56176e0f53f5c8b3f24eb24c1d008dcdecde67e7e7205b7e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85595481731a6662494b3cb24343f72f8c165ae97f3ab19a1a21e7a767424e65e48ed8f0182267f61d0e6d86ed2075b386dbbc90fef889652e07b4d01be7d2db9145e7b3eb61fd734d678c8bd27ed38f51d15ead412501a991e71ae4215fc134dd9e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c408c53b2b2f60eb7544bed9d83920d620e9acf3abcd787c6af68538be573f9de87061af27e921ebb3ea63834a8c9c54257722137d3a0b5d4857027ebb122b4e490ddf290ed6688a1aa7536537f20e755b2c35c4c1d2d386f577c51ad87dc75af447247e421a272cd3af16344a20810d2d36619d4aafdb103a0870fef6d10e731afa6dad5cdbddf82ee2eb28b7a75edbc3187f0347cc81553ea728ce3eea6f25a7ca95fd3324f321b6d16a9fe5bc3623f1c7e90129aecafcf9f9b4e455669f3b3d9900c21674822b100b3f77dbf534ed97b14882d43e010fcf725e623b7db2a2e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8551156b8c67920a7c8b0cd986e6e24ab94f06f9fbee7cc23a24aecf2afae56df17de486e8314b91282570f8f72dbd69de889dedea6ba89b130a1c52b5dba5b4a5fe9019bd62dc007a8e4658c9d84391c2d5cea93b9c4f391420a27c74e6c85e0d3e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8557f1feec45f0b1819c47a3fb7e79946511754e2b06639515c74de4370a4dc7c26359c2790c4ab10f37f9db3701362e7ea0acb90f316ce778cd2468e1c1fec64d380e359b10075651a8f4bffb964e3dc12584fc7dd2adeed76167f9fa141742f6ee3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855209e4040a775f85c916b7568a5873653bac631ae1c113d7c71914822ae23999b31c73b808ade05329a9b629b73cec2e590f2e6edbb11209a870f11513a2651e59aa780500fb09ee1144fda7c18769d50fd8adfabc107f4d2691719ce321c2580ac0739aaee85a8ac0cf5945f3f3d0639fec5f659841933d83fcdc00ae2d06d48e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8559b3793700d9ba944403aaea8fe67fff87c86543c4bff75443604369f37a6316a3940d08c39f04b05b19ac7bb48e450b720e98b9e737aa07b1d254d10ae68c2d8fe1a4c923b1028470cbfcbc0921c7501c04a3aeeeb107f3874c3af62ea735a9fe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855bb833f7a39f51e8118437741e94af5ad35d03512dbaa10347496d5ec5ad5af817c659576a846956553e17f4c335b75ec699512937cb93691d91fa069de8791c949d662160536f1d856530091048f2484e05c4c34b461773b988e976e398a6517c4bdbe48e048c4970532ee8dd8ca8c3b8e19ced1d9d2334c683f6788f18559406c41daa1a7bf5c25eea52721830c31cd9bbadfea464f11279b41f47e3899200fa2369e329826ec03bac322bc487e53867bbd229329acefa21f9673afbabe4b81fc3b9e32e43f2973928cbad9e0a01876194396e2d17a24979f72a61d6843606b2c061d0059e9407165a0457f2cae99cf646bbfbb852ef97a7c0b6575a3575215d54970b5d344914ab6b17e9ddec82f9b200e2aafb2bf322a1365a180fdc9161ca348f61d9f91b3e82b32a458f873b613177ae30ed618e68db4d5bcc0a45bcdb57f4fb9cec46a16eee1fd1d98db9997733448dd7d85227396184bab190a54a390e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855ba51813f347a8e1e03c2b02075006eb01eb99ae85992694e1b4efe2dd0d3969be7bee4ad8f5b429ce906f11a1f5267fe276b8f12326675ed8158b2315a92ba031777d7c3b3ba470c11d17de82acafef76383b2474e51108124f510eaaee0db8de3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a3ba02e8fe15af35b519bb540ebee2e78b9613b7c615582e057379e11008230c35ca72ffbe0f544db5a435a66922a31d85aac5d06abdd78cba70207e45c3b82ae9fa96096436329671b9c50f7c2cbf355ede018d2dbea9a430c15602021e41140f9e5fdbfb6f904b80f12a095ed8b0d2149d8a2be6a5595e93bf69e832d0bd7be3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8552cde28f6be49e48165ae1e4b0c5450d31d923be9eb6a5fa3ef8a9a3c40e680aa04cc49724ec4e80eaab6f328e96d61a05fafb686a50b5af7272d9d8e5ac7b162fd703263c74e6100bdb51603521e5e5d4a00c234e71a8563c4cedfe3e4f8f540e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855abdadae90b7571484b12f23e2b32f39cb52c4faf860fbc6b992fc704def534cedb932670b1be767430a66a651bebe2100e56c32d09c1081b70b76ba04d9378c9ce4a68afa2c40c9ddd9369db8ee29c62bd8443fad7e3a811800de0d598ba14c5e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85503df1998c12953693796155baa79bac5cad5eba5fcea5186a5e8c6b9428d446a431b4312eee026289eafb6199f0318ba26772575541cf1c6168b1ac9f9f3856dfe68aecb670b2b01eff976efb175844b321d6bf8e7ceda85f22d72f7938d6e5de3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8553bae9df9625fc7308f400dcea4ce264d9bd4d73f9a66d44bf72596420157bafa35b1c256f5d5075bb2d87ff615d42966cbbfba2621a339ffec0051202b38ea685673238aa2d574f2c9e903fef47194fa89a57d36bd585c330da5d12b2993e4e3e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855bec1115fa8db5ea0ab139b37172ab9d0d0c7cbdd69304688e898531f11e556a93ecfae1307b3d693c87aa4bed72658512bf1bbc33554c31b87f49bd7068190e9509189c5fce0c06d86b7864b306a1744e09ef13622332900249fc6e577e9967ee3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8554c88b187d11b2eda458eba20f84a9966741c16cd2cedfc3329ba866f4881dd9449dd0383b59a570fe41d5618b1fc9dd7088c2f2ebfbbd6729fb219dafacd301ba997d9c9ac1cc6b08c1c72143f775a8dc91fca87c888586fb723b143ca4aeb530d08d810b0499a233a9b7ecbc877d59ae1de7695952788456bbcd08a5a56ec61c9f2b52fc9d0c3f24ee9d0f80b07749e033a759ca2618db4f7568d281f85dab0d4b55afd1eb7254ed958f5112718db4e94b4b81bdb35c3a650f0e1ba601b1b975ce9858e461df98ace03721a3fb7c984b2da5283af6f50a97f6405a751b0d110e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85562d09039f320b2015486b41c28c00665dea25962c73558fc91b76b7a14875b306ef5b90201c834f12c06356fab83c250d35410c331cb8d5503d60c3b0ae38242878bf1b0ff5703d59f5d3bf8e369312de4862dd5b15b85de53622aee8becb4bce3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8559b423f997b9837440a3f656b081384ce5d55b8e6ed9eb748269671fcd386b3465fbf7df741e35033f36538a8f20b17a4740a8c1b50233b90ce7d491d1627ad6b96f06a7afe76e55aa68a42547c990ebb5f3d198e9392e93ca5af50caa7d58a4dbec82c757c5f6418f83d403a060d6b02dfdf431546f2d0cb3c3a86ea81b3ada0b7ebcf0fef0fe7ccbc7e1e5866e75d328b65b603a966b644746d87cc87b374d7bcea159dcfdf945340f56088bbaeb9d803ad0a0b9da8aa8f09b0941d57a67625f8463a88034a1d02d83cf3b0acbf4b2e515f3a3bbf3b8f5e7d3ed2cd5ede51452477c2569687f65798bccf5ec09c56357073bae59352867243ccd38f8035c0571e17da0b6da3548da86c99137584c9db7983e9178ba140eb5dd65a4f9986881def8ec34d64c875d941171b5b45c317c891ab4ec22ebd48462cdb06f139a8c0f58084ba9872238ac5d20cf25fcf474f62e57c8c2813fb196a102ea2a02dea2c74a688fbf60d155828dfc48ef38090313a20091c3a460a61dd1b7a050ccf74596726692cd9cf52c117c2b04d426001ea319feffe130fcf7be97b36c015bea71762f07e1740873f9bd586930289c225d7c9f444dbc1e472d47201054523d1e1e2dda4c9df2c768b35c184e10bb3b4afa5f58f430f2531f3bd6def3ca3a671f3866726cee78ceec7aaf327bd9ce60c82eb6c46871503bb03e6080afba0e7c640780589d9f8a14fdfb78c586f1def7997f778ab05f6883237a74d49c2a8d5c9d5c90e50d032f50af1ae59e960282c903268b27f4df234131eda0c449269a3a3294ea252f30e2b00d9a805c757c70df60673792d9401a8cc90ed8baa0c5893b94ddec07362e4df29d64fa98864dd2e4a646b2bedd08a10bd80f463737056dbc875c07f5e5ade4345cf6c071cac5197876ec33fc224b29e327d167100afa2039972a781e524ae43c6e94dbda8df9123c3a1a8fb3d2245d95f33fe664ce31b845350642edfe9fb72c10a0fd9e7783feae3c0e251e6b6e8f4ec94f2d5c5cfc8f4239c0eb780538703a23efb40ab0776d49be7e34a0c9ff517d025ec26ed6915f203d2db979bc35ccbe2c9e8d01fdd5de4d02640986bcb13bd58605a5e0b425c3b1dc3c0cad8519790f92ea13da31978dabb26c1af626914a7ed7c4757a6a6ae3355220e7df1335c7d79314211c000a475ece497009cb8f900245b55fbfc0cfac36efd19ccad414cbb9b12545136d8b55d47739b70bb686df32ed8810e324c5bdc491c41b5741a8903ecd9fb1f627155803ddaef1598bb0fed68cbe2ba2807e2fd026f6593c889beb369bed2b890cd3c4c0cddf16ed7586a99e73d490ac3c0d64edecc61be384c0a08f864819452ffbf3bdf41911b2a294c03cfbe7344e1c3d6e1a4c92b65c7a0e99037fe0e63818b78977e9e45726791f41d828ef10250051f3c7a3824b0f6b1294db5fb30c02a1725ad651f6893ea47f8e4b465b6a71fd9f054b9737361068db64ee27dcf6fce30fcf98283daba3f3adc71b78ee92aa71d7dc56294e005e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8553d69c392f0f74bfe374f04e51e3c2c13dbf054569028de7fff7f1468fc37738574a490659bdbbd6b66e5693ac3c0a4b953e3840e27b4d21b056550543db085d93c7ba3f6c1a080930364bc9e77099d4f7a02bafd308f01ec5d3b4a6af88af05be3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c42326b3ed266260b7da51682e2a993ba0990ac1d8d60b142fbaca83399e77453849edcb6bcd982b67e0a89d5279baa632fd2f4aeeb31aba19a1793f9b88f95484bef918bb2a3bf840bf2701c89425c4323c600ae939c6877c42b17d8a3a2a0ae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855dd766a4607ad45d29b7ad7670f5aaa0198b084d51321f2870d2d878b960467721253de6795dd8eeed9ba5e7e2d971a0e97b92a2c6dcaab9df7974e4fe9a04e00e602535713ec304ab54988b728869a4cd53cf234e073feb9daecd0a79bcf7057058fb23291bffcef1af4b538aeb1326cb1cbf10c3ddca1b661876bb28678fdde9b97a6a7af2e81ffb7185ed413586ed2087bff541a9867c1284eab5234340d580ddd1240d9641eadea2d69746887be9a240e7a0f0af2afdf01cdaf897c1868a2d491cfe20838fd3b29d8e1d3b0d301e9c7b40b2c54b32b1e29bd324c4c1ae938e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85568c8cffee3d33f8cd930c0b88ab19c5645ad9259ef0a053d41e0a6f8fbc52682519316996363bf7018c5f72f9031af9b6d86738e9dbbed44894b11f53a62fed2d755e8566bc324ddf152ab119703ac8a5683f38f2fdf6f1a8c0c8135350307688a45f964ddc90fc31612eab3e37bad6be8f62d5d399575e3b616b1a4573e7bb2bc309b4d6570c8e921db6a1f23c2992b1073396c12fc7f5033083bdaefc84c39e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855461de9d3f0b713d324a596f9ff5c651181bdeb40973cfcc1c26da89ade2dbfd8efdeeab1214f8fb08f600f2b0c5e2be6f5bc39e87fa7f8562455ed0e97a24713ff72df6badb35e00492132096606525e22f62e81364f6c817bc120e9f99f1a99e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8554bf24adb183412c347d9d9f28c86db0d1bdd9548587010f3b5c36fb025371d1b2f78ce85ef9d1ed6ef9dbc8db4b9f8f63e0394ab63f32c5b96751fbe62dfa6d3de01b0b74e2fcb0dfb7acc80edf16e3e44394875ed8f479e86be8cb3845a8efde3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8552d78be584551b13d2a90432747534ea71112f305f3777fcacd0ddd433980bb73281fd7179ceeadc788d70fc5c00c399cc1d8c1497218d8211aa2e862295f6d785288146780e4c611371023d98e88c2946c314385b70a033aa70b474e2acd7e78e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85564dc13a227f6712a8064c4b8111934781b38c95f90d6d785ac9692b4678661ddbdecc6eaac0a5c0e790ab263d68919c91fd3e8a02f86136dabfb9d88ddb6d4afaf2aecf7e289725ac5bf4bc9753676f46d273cb952bb5c74c81100bccc711cb0447a6464019774ae29bd1e958f03ccc61d838445b10789b23280a4f62182bec7529e51b7f758ef2dc15c46ef0e54685d38d6eb4bf55505237d868a7b09ab4fd49c76ba2c9a1b7635abe58019bd0bee372255db082d07f80a489ecedc2139807be67d2ade844651b9c4a1baa164f020d22d4ff5a1fe4e003d7c4841cf60d7bb622187cf94b18ba463777074d91f6e64d69c0b7e87d9c404a6fc7293f3c9ff62f4f7a6658a810a7fd5b1ab8ebece74e97618c8fa5b292126cfcef66e2d20528a6671688bbc1f2a10e6adb54ea742751593323604827622d7408744fe9738d9ddffb115ad083f5f859ce87ae22000d4debf267cf7208077ff6505b7d6bd397a318556c7a0d49e219fdd97b7168d48fe9c534c1e42d3d8482c4629514ff3e8180b9897fb5fa5ae4b07a61ccd4687c988ed641421dae042feedbf5ee422f7db48cb9958c29b6827bdc5181a5a69bbcf938aa21e963a283348879cdcb191a683679a55b3c47c63770c7254c5bf444af07970ca2eff0550a9d76b8fefe63a9c8b782b095242f2bfc20a91b50ef20baf57c8a70341c49ed50732af0b3ad498e6ee8c6098e4d93a193aac5be6306c865819848cb67ca54383bc5cd673645571fa2b151fac0c885096b5860b85954dc9ec76d7d6954c764c00362cbe716c7b46ddcafa632151232241385d53eac08a13428e973c8b720630e3d79278544999529ecfcea2f04c2252dbbc4b01f243bf1a53de34377597964add48201b6882528ef2cdd24037e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855932457808f27e69f08428a2537b2957415a6adce0b82d5a4bf8033f99c4472494c88eb6ac5ee5ed115cad058e3be1e1bb1111b6f961a68284ea5bd8d029efe2b15a1b6f13ba7353ec2f670158a2803f29bd594b2b0ffd5782d5480dd1ebd583dc06c8adf2593ba8023e2416e5643234831ebf3ad6693d83ea68c3b080a525888fe715298a9de235cad8cfa4c7b1d794aab3379659192a65476962464e2e51817bf18c48e7b18a8bd932ac4c08a286b93bdf3c4b0e8b4720094aa8b183b3f5eecf96b49fd60a2325bc53d947f62d82761d18ef3b375fde2871e339a91167b9841e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8553ef84598e112e632d9943c1899d4b28db1ad9c82ea6638b633abc42c409543aabe93048932afa33c0cf49aed0cb37448cd8c504160fb5d278f71ad9df1c34a7610cb3b7ade5d6397b58c08500c60dd8447719f192513ee6839f419632a582c2be3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e03114ca69362404c9185075bb7ec1c38f8484931b3628e83ea0ab9784481b2014af6db2a277937bb7c1c93967fc438e2a114b52e609f989ee767216b0952967a50ef1b1aecc326c2af854f54d47d7f999a6df7b573d5cfba7c5203e6972d7a2e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c3c83481fad7cb336a7459a614c583cda816bd9268cef0227099776bafa19aae80713622efff47fbd6cf19b069cb7c70b48558b5efd7d5233aa5057da42360e80b4a582e88f11eb7b4f0773afbf146f0e7c1edf3e92cbf86f19cba34f713f7cae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85578ae0fd46dec65520c6e23fe3250908e7fe4f1ea1579de5afcf3798e37ececb9686c385caa469124969f8b8ee01f33c94f34e12322857129e617055388db6ddae9f42a5b290de2bbf624015cebb6dfd7046f8f307a591005d9b25e8e52138153e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855f0dfc9b82779cfb923b3e643162ee936d49f593f584ead38e50ffecd68e3fa08020735e150cedcf02c34a345e733bcc89532b84159076966e4067735691b895fede0ddaed7f6033b1c4de8b142e3835ba1ee894fb7faea5b0bdb05027684f7aae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550fc0639072588425c3cb2808545dd4656dd78af22f8a606e0d7cca199f48b444ee1264c5bd7f56524bed97ada2167eba913e52498bed8b50975bd99019265a7e3b6d810d4bfcb893f40cd0115ec1b7200cee326635a79ae3100d4bdccf05280f3a2c3864fdfacca9d7e850df7cf7d1558958ad021702e8699386d449339c5f4740dece091ada677253742f7f75d7cc2b9233983b96c073af8c3e916e3a9ad19300c2e0256b3983b9b17002760477b4276996ce5621dda640cc24b8a5b8c564219d3db814477b18bf673bc81d81c08c652ac08cfa45d694645a2fb60385917aa9e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855fd9dc422af2e5df8672dac3c25d6fc741e322039f5a427193c6040c736c184874318d8fb33bdcf65ed291e1fceda08e09ffd743e9ab8c4916fcc18b7f0510a64562d2ff3f809e0138e68d11620df2a3c9ac7e59fe0eed032c06e0cd3a7ba7008e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e7086dfb82320308676126a309ed336b6ddcadb9ca08ee9d5f0925ab6adf7480c3520c169e22a15b54acf109cd1792ad8acc4fbba229c05d84954fc06db86156e21eecbffbc6623ecafc977b7247d979e2c95a862c8be18673c89ba1f7aa634ae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8553898e07ebfd1508eb6b927a9bde2ca82caacaa4b171f13c750bb75720ed8106f9b7b9e248ba1c6adc86b5f230902ab4dcc8f4843e0867fdafb2395c8d8c3fe51c1633897be4701e6aa8e3b63b4106cb91c8064e3dee1bb5ffea6d7c8c07a6ccce3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855da4f4fe0b9129302645f71441ada35a136657f2c3aedc1f80df78254049805145df5cdcd688bbd2ed83621a6cbeacd34601d7afebac8386fd02e5cfd6594cb78569653949ac271174b8fa68cc607bdd5c4f34bf3e7e887e7d0fa5a5384ea2c31d8e4e81c4f3fa34ecd22e15f7d05a6808b8b9ad36d5577a9ca46952a7fcdd5e9fb657b2bc0e39efd3f85d1edc18f81007d803ae93d22a8d6f957ea9a2b5ba5d393d306c0d6ca64c7eb24930dbdf87623fe3749f66980db1c5eeb80fa33f7306c3d95bc11b96537dde9eb8e07ed401ed2b817c561c549b84829d688f4e7b607b17117ced6b82e78d00d9e10915c2fbd5eb7cff691bfdcc9e33a020518dce4a48b3b23efff44af2db22303936f9ea972efa8618cfdfb3fc0bffd2cc3c4736c9d918bbcd46287ba89d56e2f95294d987f7f091c7da13f3ec30a2f788621bbc3cc26a8e311d6cc187341814d7dfd44cab9386faae4acc03af421c8a628f42079d4710461b0149d9efc84e9585e64927c08e9cad4dc851526e1ea5f143b886220242a3b800fd8789a0a25f6a796380b393ca38f4b94512f54bc5cd6bb9c432d77a720a011119bafa4b07b0984f8fba1905b6056ab1a96cb25b1345684827f93bb2cc73e2d680f94f727900e60d785c7d18631cdaa0f45f4088b5f0d38f2c6a79d15a62849da1d28db5197c54c60b6e88d9b04cd0ff06278f5f41c951749db38511edef43f05cee6b069fc59b33ee99a3ce917df4d51fb6169d1fe31fe0b1eb95f556916268ca1bc55dc3df4832eaffdb3f5f9e7da39e26075776ca4fad527a929184d7b3fe16e73b6a0c5c7ee610dba18c9a25d36d657c15144593a72a17b1e47b676a5b407ad34db69051efcf479dd26b03d0b0b5d73184bf4f3683fdb6c2c0e2b10c00c96ac7e2fc2f6997c67f1fb52e3bfcc8d069b3cd89cc428df30c6f30bbdbafd792fa9c4f0bfad87c7317b62b48839ae57c64fb2760c5d09744cf16cd7b041aaa5252a8124d3a8a95daa4e9cc04e0684d2ba88a56c0331265bb9f5c101ef9c7797aeb6f8a2757969a63164f1d06b4471095b8493764a4e487170ab315a0e6de3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b6ee243f5630ff007edda8834857dbdc60b70d9520308606b85571d0b493afd33efa0809e1c204b03df22d7337ca9d3643220aca2ce9f89d359dca4848dcc3b89d64f3fd827732a4da41334c43df5ef552ed28a0e1cf91d21c79029c2f7fa5e711d0278a85a62be09e6650ab87c9aae4d42b2b51f0035c1809e5947d6666f2bb9a8e7dbdab08c24dd26295bde306c8881b64c4365fd26e32caee93ea43e65aad94ec27958b35226eac97cbc33b56e032ae8454eceedced22eb18843bf259fbdbfb46f0a0b7d6558ba1ed320dbcc497fa0719508db2d7b0f3f83fa89ded639f09f764cf90d62af227cb4e21d361e71493ef2dc03833cc486066433f570d185a6cd20b17cdaa606352bbfa72e698b62e986dd06b08e71380ae302badcf4e6121d6e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85521ad1f4e760d93fc8d38f7aed2173dfd01d8d77901419361108d53c114a0612f0a8bfab783ff91399992404a0ed778929a8905b653d18202c791b40e1d639416324768a9c26ca04856b4ce1e0ed1f8a8381d49dc4da0e32bc019baaf53c2e04b142b6122d7498d59dbfa317dfec9054ed6072a63b899062064b2dfb79fec06b1e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85537b9d0e1f6692e28f4ba7bc9ef9a38ab009bf9914e0497b9ba9be477a08f92fff59603cc26c09b6ee0282e6bc7f160605ffd5e5ec2274255a8732be8a1987633a77f5ac79defd15f9628547848863837275ce032628a4d3c899ff9bcf4f986ade3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e5d321a53f5c34721ae8afdc1a9999f59e0c50b63040b6e4b5380dd321b216d2abf61ff30eb85c50528a531050a7fbf23013a855d45f67ea04e307eab1a6dabbd30a1666f32526aaf83eaf6bad3c172e020700beecf8f74990f6b08f39d7a4e7560fe239c931c55f6398cf00e244f53cd91530d5423b42c9cd62221ad70f90cd9d931029c9d23132d39513d3eb3a641908963362a24bfe3fd0bbaea034b8469a5d01664deddf7f5e417713a08176be0a60ffa6f21bf86863ff3d4f058062796742f51e3e163794385388224b108b82c19d8b69744524bc89ecdcc0a5f5420d2c4003f4dc80a07c60458646f09d3014a02016e83dbd832af69f4dacb22df5896a3b19dc8f46e44280aaeb9b5964c1086ba380d66e14e9e53c0729d053ff29c8f649834c27e0a24f8fdd3369c5734fdd9e8c33a58595585ec0528f29052c5798f8763285ee320f5bcf7af3ac69b707544edb13af4bd1ea3312ea94cfa27ea365c17dbfc0d11e4ba7d9cd86a91ad9c4c6af47a8da0c13b0f536747cd86dbaae64a820731a86e66d4e8a18dd6e519e0cd7031c0a1d7cc867cf2ea9486d3b71acbbdae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8557a65d7104f9b344c14604c02a0b6ba371e816c25df79c7e97d444b6b36097808a32e88af235ee58792cc9e0e923ed02a9ef8286575cf2327ae1f6479232b94540c22f6cc12f1417b2ca5f78442c84fb195b60e8a1903349c02de825fded5c7fc947097ec79dae8612e6cc6c46eac86c3cf622300e6e7c3a5c7f04312d4ae92e1994f92b0e8d2307513a0d098717dc5edda3a2673cc558b405d51af869aa5ee230af861eeac0de0472d94c28c3433a5a08bc0d9b96bae5cb9c82734923bbea2fb31195230d4ac757f473627f9fbca0a05743b59306f3d834837f82ae9744619c3e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855031cee3325369906710f4495fce70507c89596eae7d98c049f1d227f206085c94c2e259d20d51c3d60421d4d11d250fecbcd4e45862cea6cebf974d73fa4112c275d103f6fc29319d010d998be16813f2af5484db2a500d9e580fd490cfb8525e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8554f62db63f76d712e39073b6c4879d4bd483143d7a306fffdd7f83a8f112e072a5858738cd8f1deef1a465f5c9395b8bed3368997b69587ef31a9f6b8cecda7bf563b5722d7fa365df5cff5287144ef09f8eb4f3447f830e684a055a08b47ca69ebbc7aa8348df223b232b0899dc58f536fce31f12cd8fa08bc4bed56cb67ddda44735e9c2ea137a933398a63c4b5f2a818650d874421bbf8832376189006b1957b89ed2672400f448dfff18a17cb0c86dd5cd795e94aadcb8cac13d196640803fab30c33579bb2e1ddd2b9f66d50b663a776567e6fcc9c3f5687037b881360aeeb1799d7e4cca9432c0f0ddcdad93f3e2dcafbd7aef57e854d59e97a1107c76b9a535da3eb14fa072b1207fb116df53554db44bd8d40e262b58fbba14152716edddc5c0d887b8c8cb10a046548c4afbf7b6704a633f75aa853562ca79e07a784e94f40168421067e0826bd712a0bc629eeb6b6ba9e90d7e3d5db019aa854d3312595104d16e38d0c056882619deb0f8beab9e14270748ad8bfc1144d449ebd3f18f51aa75938412a9a9517e40093e1f4fab93559135947795ec0ed390e3d8680dddc5c0d887b8c8cb10a046548c4afbf7b6704a633f75aa853562ca79e07a78482818fe25ca4c65b375873d08c28b7d4dbf3df817ddd941941f09a8877a60980f0525a81cf4dc0ecf29c560fdfd28934fb9e938804e9ae4f01a5d1feb70fbaf9db7086de430a3766099d35e7d51207a2dc1f31e08ee5a93feb404231ce5ee0f111d0278a85a62be09e6650ab87c9aae4d42b2b51f0035c1809e5947d6666f2bb0143ed216e6f2c4fd6135a19432a5f10f709a3b441d25704033c62472387aa0c66c91c211828ede79a3d21b95de2ed1d8d0c120471111fa6a7cc0d4cbc212213fd71bf54b8af2c1b5235f0378803db74cb35a812a03842cf0aac7f3423d09d8cc1b85f89f69925c82a59d93b1dbfd10da584df3b2ebfca6d26ea1d43623245e49a08e7587ed3d51d03c66d61d7b53e684bd442cb3bab1052f1ef375e3fa8fb5d85cee48be071c868c401c0925c8565b7b407d12dc6fd0b81891c23728774fc985bcbb05450c42a1a0b9a9db0c8fc9a91540c5e6f4d438898beea97fea3ca36dc2d128b378f506b785e6ad45c53599e5c6b179baa69b40db0ac30c74c623f9beddd625cc6bbdf4ce58e6fe6359ab6291faa75f740e1af401b05796eb65fa4e77fce375b1a8f9dd1d7907fe171fca2269fbc53a55fa302e910dfaee903d68e91b47f59353a123e7c3f12f8d3842d3f873cd94f2e29180f7d7d5ff40af8338f471b1f58602f5dcca738c25c60b3c51222a9b569150c3206e2443e31b6f756c4c858d1f241df9e6bddfb49e8c85c1643f1b9d184f24eccb65477b363cbe9ecfde539848f16c1e4941270bff09a9bba0104cfe76d25f35bb2f137016ae780789264f9c645f1d4942fec38f5e990f8e0e0617257117ecfb562cc57f154504f8973d3050baf7f38868dcc05a2db3783f086891a310203da5130928e748e14492a89564de567d379705eee5301ef300072d7ef7f24f163c0cf48fa82fc47f9171c9fc0d39ad3e0a134a7131b84dd2895dbe0c77539633c95171c93f67988a41848ddb42156cde7422f583414b53588c8250b245e6405b619be66c428cce90c9c4909e0f57784010f6bbdac2a6325ea7a9bbcdbb8179c50b9ac72cbaff70003131e8e540002497da7238aa5c0f36fb08bffec20ed3bf57522035ce8c43ebe4793e0b26e77a425132590d38c3cf924b6315ae67dd7727a57567952910584465481a12a3dd0b3261a4abf36693f5202c2f7fb8453304782317ef17bfaef62b1fa64a83c66b215a2d11fbbb53999fdbb2674b663abb56a2efb51381b6df2e14eb323de1376b894efe3bd832d00fe70f9f0a05060bb5a762f6e49fc6c59979190d2a056e6672750f5034d7b895de205004f155cf4bd9f27e00fc691a570fec2023a4b3a97b56d13e09e87244c2a21d805074bdbc8086b8546958d3368f6c088acee6ebb45fb31a78df22abcb15bdbfb1e962c475306fde62d04612d74255fda601048a1fc0a692cb155062e6d128560aeef5917f79b63f7595de3edeafe7b2d60b646bf0ae8e78a188021fd9d1615e6f3b6c3c8ea47b61c79da7944e1c23b78eff59851ebe13fae556d7dd2b66c736712f0b10ec6b6a472e0549cd29bce3469c441c7cd56d7ce9319d6655bc578e8459570cac62fe8bfc77185fc7fd82ce729e87141084f10c641d2baa3fcda58b0e73642cad63db3450b95058e00eaf475fb158f1661d42c1366360ddea876004481fd99892badb479ea975a41fb8333cd9ad952f093899aee8cd0bf1517c1bfcbb1b5e31e8651c1f7ea2e2d3ef0848e5f7b3be8ff166c443cac05d0b9ac4010e8489e429ba677e9107eeefaeceb8de3bf986b8501aadc9f5833a8eef5d78e4cec117a5546899a95d9f8e07ccc705b43e4be5469e4950eb96bd7af196ed08e0faf75c7cbfb440ff3a8536d79354669a1db567fb9504cd0a16108d60b3819cbbba36d11ca08e38af74857292febf94aff7aca6515bab6e2103c260bad8af71bd42ee555b66fa38d872bc56b8f4ee807d0e2c78be5e08078c930726c8d9f0daad3189f49c8d94e78e3500904a218a9be9f9a983c48b66f3163723bc3fba658c914f0cc612857004071bc392a24fe1a850a1d450ad4d1b073521bb518c3e747ebf75a1c16c1320fa836f44a41f251cf1efd239ec82a8ea5e18e8f3c8c31ea9cd593993a4acffa13693b4ae4161a2ac3cbd66aa952da48039f59dbda820b5f957cbb00ad963011d4f7c0a5f7ad46b9faa6b70ead07d26ec714dc2b3eccb825667fe23227ff5b27bafc118199a35c0b3932fe50a7d21f65f712b9bb1831abe120e998cc7e20e27011edb7e9ed314f7160f0490c48d27ad7871deb61451f2421134adc74353cb8b5fb7f2ff8fcbf3471afc9df2edd14417dc61cfc6d37aa704af5bb089aa09ad051a4c572cd8578bcf6eeaec22167c1f8494c38b9aa9028d549e619a8dd9490456486c44da9d94c3d99e7310f145080bbf7e96aae177bd0e47cf7ca5b8e0a3a42265c5322cd9227313440f24ecd644bb9c69af525160bdb645b5e9b80f0fd39a790013a18c4adff016e586deb12458de39c50f157fe8fcdcc42dea56337c49f70515721b0af7282ca84945d1c01729ee35a58725e3943d0288bb64587b0938447316154e905d219b1909b522ea4d231e78b81e1935f9a3d4aa0151e25ef5c4677596de1a590ada656196cba988f410c865f4671a7f8e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e8b93e7e54b6e9eab576ec8bd13643c0cfdb324a2f1a9e05abee1f85a12d505a2582da36f1adf87df6729b4133249a83a1a5bdfd77d2152198adee3b99e9a6ddd087995ad33c9275d313f0a8f7c986ff43d8795dbb157c873e00529b225c3a92134017dbbc3f8ccc380a1db29cc626f659d586c7fd36407b55c43a903a5180eb345f919c17fe6fa5f0129a2340d62e67d00b46e3b65a84bdd5f80aaaffe56597d0092d18b3043512fde9e7d480ece7ac08d53c3d2c526eecc94a160d12c88f9f3527020584f21143fc314e39d0d1fe4b0bfdfaec89e3d9392109748fd70f1e71c10d98170a1077ed146bb6f2bce28c7aa98c73269cff1928e01429807044e7ee4e6fed6a4aae71640112ceb237c1a551f700c01133df2f7afe6be3aa20c8c2a0577986a00e9a042df0333711c377be70346a4cc72314e99514543ee59ce8bc09962d58029467aefc8fbee2ac127cb8b6db81ebf9483af35d84c127cc60449a46e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8555fab0e4b62a86e49ab57b29a4daa84bc90598c76c1494fc64235807250abcbbd51b5421bf98f6be9cd34d5321dc3b900232f09ccbe5972fddac0ee347f9564f45c9ae988190ed510bc305a00ba859c0d5d327fcf4b6d1d5c72ebc167d55620fd4a34ad38ecff176a03369d3cf5b5eb72e1a1ecbdf1b301f285d132b75da5f18dacedbdfd3d5f442d26c8baa14bcd2bc888c0763651ca6c04e78f3415613ad20f4b221aba2aff8b6a7c78d510c1f5e3554f7b87b8093dc29f129562f097588cd5711809364057ab300bf55af1d2522a4184faf81de9a89f2b2089cbd8de888ad5648b511573fd458877cbb05478f3016695ec0d888adc95e489074322049f30cabe177f269d574125190b2d61aba81c67de0331cc7a25b3bd0b69a55b62a05445192a9285dfda7aeea477f41b345ceafe3bfcec9b8dc307872c8f2da085e623da067841e085afd7d2a35d24da537899cf20d01911a9b53bfbad5e9b22ecf2fb3ec8731d66433bcaeb348bade8df41d180cfbf1f356e0726260ced21bf58a9272fd6524509e512ff1464b81deb26f21eed7731362bfc28005c595f17b5c51c35a55546f65f4b27b5730fc0abaf9029df0bc7af3d46cef6f97a87d9ec9b3e76c105d5d09455fecb25785d993b6578d51ad2b3db84bb1c2ace2a251842f6d060dda1299b2ad69f0e4cd03c274bb5db0db6f547c9b5012c1602d190cf0a5f57f72d1c3716a5b9b8c6b4e093e0d822d54cf37380dbeab66c185349546acb486e987661dc593a26aad4971f9dc1d85a298b6ce38928c7d713a160c095980698e196114b667af65aae03887f638d146f49ece8ed661f4f3e56f82dcefe4236d44fe6d28e3865d3afeb2044c0da4be18db89e839ff88ac5459ed52d262117b25fef70730381ebf7eaf9fd91d63a0837201e2c2fb28c4cbb3c672d9a6e910a3b42dfbc7016756190ce8f2cf058316c0712443129e3eaaf11f9260fb96e7b4d3c71b453b8ae834bd7173cdb5634a136d56752a7d98822c5c60845d9e7b15e7a9afd95406449e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c495d8a13b36fa864f7b89014571f316b754e46eb71615df17dd95dbc758967b6208bd3d07e16b04abf293f01f821ee6508ebdd346b1b291c9d6de306ca67a03fae495b8320f77e6c66aa13fb31b014b4400bcc08dd3829f7a5328e149d9f412260ce40c046ae90afbfcc5c78113e4fa3dc35ae7143156958c51f587b2bc63e3e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8551b74e52f5634be9e3ada0ff416f7a56fc4f12526410702f33428d545a87db8fd9a6fb2444204f1c97689679e3df7f465af823bb8732100da03a50a65eafdf54cd3f188555c7f5cfa047fdb7fc1297795452e4aa28819beaf5cfa6722e1ed9eb3f8a543e95a616e2bb90a4b9221d53f22baf5a628a2e6e5a65e85f943ddf10e1369bb8957973a28659d57e5352c397888f140935929e95fafd41cf8effd2565e0ef896ad722be8c9d0d186019c4e980f8dc669160690702c87e9369abb9ccd7ff411c6473b84595575e9f8a6dfef76aa6da6ed211154a25a8f802eda831930ee3e75f20f529911e0f9bc995d453d7662adf8c326d1ef722b44424b4e718e48dbd9ffcda155e171a1ce42f0472c5242fa054552423daeb62a444e260fe9815fcafe5779d0cfee7dc85850c20f1f6f525248e40c5ab1fb8c299e194c628705a0001a7023fd45769af846eb3ca2869c80e0f0a363a1a98e458348d7f13b2adc71846f98676e7374ab6df33579040a372a50f6b7c81d81c4600d7f70458b975959573b4fe387011fcc748514a64a4a366352024b7e58cf123c93aef713534858f613d1b935f1a2b5851fa143b6393c5061becfcca33c44d91f21e5255d465b356a321d9dc4e075565444ea01e73ad35532274279dab74f5ccf4f5b6bc0b3f0cddb7ec7d927e137ccda8bb61223c7e2cead50aa93fbc251afd04a064f352eac1c0b8c1ee47733b665eab51151eaa9b222ca5dcd5828b818654007ebbaab16b4dbc5105f122502c90edfb40d60329fb4a479695aff0ffe8310650c152f64f83e4ab2abb0868b925ddd787a0b45ddb99b0bc248adb78b908a897f978b2f04d03cde0d23058f78134d9d8e1ea4f9713dd0e77c4a276ca9a42a71364531ad5c07e351dd42fe62057747e3614cb8c5906d5aab3390518bb44b0e44e7e9c5fccc71162a54f668ccbebd5806e91debb5944b038a6c0163309d563dff17e9f3729f880c89a6b57765749f40c9b0e5db1153d2f5b0972ec820cc873a0181b235343f5dc914ddb191bd7f482cbda97673011dc2e00a1946818dab40210520d024baa42bcf62e0e7fceddb7e82d3f2050cd637e636afc989582b89606c7ae7848341d15f910df9dbde3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85582c825e65970511c40bee5c776454915cceffae93954cb328b18e9b4e9b85d4e9673f3ea33c77e20b62b8d91df69997f109ec844423e909f6f01d680705c460e356fe47ed84a0e0e2aa6b8abcac6cfb3547501005e1cc1f8c9dd3c70c0731128e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c5e75b9d57e6e5367bbf4109f4310d48649cb5d8d1368fb42e0fecbecfca776aec898c5382cdd316d7ed18a84d193083e4c4d8b3880aaee2bdc4adda4dbbd9f2b469a2cd1c46fd4991568708395a51e87047ac1fc0a7452f9fd339f8fc989037e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550f083180dbd3b19315aed2314e31f9e0a7c8f1e2d9bdbcdfc4cfc83629b3ee5c2308bf43f81995d9b7d8f3e1865938aea10101f3f4bcc60248f60e01c9d1658c02bf55b7bcde318654b68cd518ed6082ebddc8841dd7f1677301124238f6af7bae8fe032c9f41f481fbd9189b5f25e957feef13e655c2411b3f850978600a1c061f4bc95dff7412236d515c21e5ee3e7e30987572b994dc4d158c66dd0d280965a172cdd54272dae04e7fe00a844b9fbc9306ef07afe65e5f16648bfbc3ec40486b416d9f2cb1d143fe0973860dbe92f4ebb03420954ac24f76bf0c0d76b9859ce3f298e392c0c97268dfeff64376916181cfc6cd6f6008f4717dd94396e939c16652c11576db9f335179e0676202d8fb67a04469f1add0aab4da4aec4436e835f3f96424cdbeb36544a9ad7f5d3bfb3aa99a9457fe835828e59bc778d6f59ef56df3c321723b3e28fae3be1862b8a24ef7a4e3856012f056743e54ead529eb23e0007542418bf6bf72e61bda1654de9ce91bb7964ffcd765acdc8d3af6b44632729c358686c83a4672cb433b4e518920806a3dc621b9a96f76d88cb609ce6aee3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a30069dfa17d38c751cfe9bdcf6d1f877890b852c8a4c7ae485e254406ca71ce243af2fd9590b0762dec573a194f23c4b864a618153437632c68dfdc07faf9ec3b8b24657a65558586bc4b50824a52392836ef35b03f63e1b66d53a3447aff0450187c49e573c5f8f40d54d6ba9756e42d8b0ecbffdb80d8ff0c603ee794b046aceb4211eff57e49cfdcabc09b765f25b4534c40ba338db1c4dbd72527bd8a957aa9c7e73e6c8e0b8537f0e051949a7dc7010fe231b7231cc639e8fe83f2a3eb636af83f7a216171633d9f821f0710458afccbfabbdbf612441afd6e4e0d07650ed1b4e207f3b0807315e2c8d1dffab7351f7dd0db85d9c6b9bab29600c67dd855f17391d992687f497116de9dcf9f0ed79dc1b6e1de0933930d33a4cfb34f9da1cbb09da04ed16ffb2a9bfd4814b1e85bb02942a3e2054e274ec0961235cbb6e00a9b11d03717d5388c300a9f3b16b360631169d4e743e5c4e57b3730a2ebe0783318e045a0c95b06a2235ff100aac7be46b32ba554a2c888c5241e5b30119872ec8f2673be289f765b3d29a9eb91ab8fde5f6f6993b2d2037fddaf7893584472aa6cc834dd59fdb043e8a66b88a58bb05b23c26508880dcb7f26deb3cebd63312df8fb4b64b30f895df35a9b1f261f93c12f6f4c7674400a0905cad74ab7f476a7784104ab85c6e7a59ac4566bba2b68eecd21e8d4d53eba80927483030e70412ad99298338e1d7f550245af0f04d090e7c8df3d4ce76f0521e4c5f9164d6ac89d2c46318aa8471bdfc5b129e2a67c16d6307f3ac071e81f90fa937299879f141a2d3627ccbbeb61d942bc97fa76e6cc6412469f09e4d15ea23eef9173e3e1b7c4c51c7e4d3a614176500adc112fb898c2120d58399a299743b17206fc2af49085cae879ef8080e604c00963a3d62b7ebceff9dd071a1a05a620d793550143255fdd51fbd0a926b3d233630528bb38336d43a46832e651021fe83ac8697b2155b08be3f78fe0f2f58efd284f7237206c32a2166c11b53d49a5e251e635e2757e4c71335a8f0ecfd1ffac58dc843a1efcb5b4af0521e3206a3ee6519e503eb8ee9c0d13674bf68dedcebd2587e3739e19c1a7b0d36d12bb6f3e9010f758c3d6af1ffbe2a9e5d5244d251a8e12936c27a0b1d65aebdb1d3086cdc74751d5edf3073124898b20a26e719a02f1f9c424d81f5f2f0d8656109c7ad5766dcd7a2216acfaf3c8bf4c3c248cd89a4f931b4e98123189239bee3b78fff84fd8141b05f8c2e5f0194e2df5a991d91c96a34b4e4de7a2da8888e43ff864c3a9a37c1a739bc447ffdf10382476d41991dccfe2ac2adc9ee14ebfa595f4cdcf0bb7ddac53d3575da741b242f4741e289cdb82195b9e8302a47810158335a3d3ca70957ace43688fcadf99065c09733f1675b24ca53e499673e5af566f78f1052ff104dee3f9517a54bf1289a82ef579207fa854973c4f19f9d40c00d468462a15c51ca277841bff907ede6406120feb554875226dcea56050b78ba13d05ca9423d1eb336b08e4325822294b0950f390b7194de275f08395aa738fc709aa2e0a196847ebe72f4c3a08af6055b4c253363b14f250e910ebc10d9a2ab757f085c3f1be9d44f41bddc78543bfd9dbfaf73e2439a80207aadb3c393ca1ec46efff9c8a2391d54c4a1138d70bf2d0e24ba3e626164401b891be6e3e60961ff9824ae9be678b12b89aa7d471766ee9cdca12403d3d4aa4d7206b5404d2467121a3e360dc480a0ed5bac0c94815dbc63d31c1407037a2febb0e521ac2cdd8649f4eeff0b7d373f3a330beb1b6062e8d3e3c666f96913bdc27fcc500065a42866057720b7f3a0e444598c94bdadfd77208c448deff58a128183a52279475398ac4aa3ae0f4caff5456e7e1b71fad045fcf31414a29f70ce58c02c53ea55115dace06c6e532a55999e6c9ea089b54534e94ceb419eb70e81ebafcba414d77537745455ca699c32c9a0fd27f41c956bee8d578b8781d6450504bbf208820ba270d49981181211150cb1bb86d984b6da9a0808944378e79bf16b589b8d71df1df4859e02c4e565ccbed8837a989f896b854d05b9a93a4a926ba94c4139c72a635fb23949de15e8b2f0a6b70345ffb91cc82dc2d7c9ea37dcabbdffdc61a0d5a5faaa5d07576254af7746919ba97b7af4aa9897ad46f72d8fa0f01135fca9a48276c21cb5bab0811ab0458f5b56d419d7e40b5a7b8b5f5c46db2c5eda034f58f920156d19978abc7904ffa7176be4fddf2f2edfa2df63fded41121c8c3677a8bd8fb2f0e8d9fcb2b42654d4789f2b94f772b3c0ad7bc133eb79536fdc51305a755dacd79afcb13d27abda1f021fd228d375f12331edd099963e64d69334644ee79ecddf24c25fce7c0bcd70cbf1fd90161822c9acb13744ad7480bac268d2620bc9af3a1dcd64670c18702dc9d69751df847b24c124754ce58f430bf27183b4abe438461c82a838c319f1ada18edc9e095cfa8cd74ce9124b06b1f403bd7505737fc81b64f257daf10f481c7b795fcb13408a323fb9e991a41bf3f8a0728397bfd6caf14b8333c997860e1bc63fc1af49fb8825f8a4607e6fe64922d2d5ba9329a442ccbec99b0f0a99a0722f769d3f48a68d56a3e46ea7df3eab6ca467b9ede66fa4da146fabcf2a82d1bdd9f42d62e8a2f0c83a545fd1795382ac8d4f1d59c6754ba9ecd5623bace9b432f8eb3862c2b16747a3869dac662397ad8a5390d7dbf3041a63ba08369239212d63ec7c6ede85a564e558a5fd58f4cc2cabf200ad7f8f279f7745a07b6328a5cf08307cae5b5ba8cf7b3d561ef56ff232d0852b9f02fc1d10212e1d82bd5cd5376f6758bdd61b9661376293cc41f9a78267b9c22521ea2473b3d367bf835959ba9bd02168e847e57ca27ad549dadc94da575e44b1a9d62a8d8f7a8a2e94b72a3368915d5f48ed01356d14e741c7061cf6f50b042a832fd7ec526d9450de67f0f1a1cf96498ecc330210c23cf793ef8feae05d01b1b995a8802d42c85a1475e12cf935613f89316d3109eee8842a6c67be777a2fa1350f644fb9f59e8178650af86ad762b9713dcffa5c236b96360b44ce922b3cf25bbcdef677bbec2457e3119b37fc5519ffc44f41e731e8a5d4eff7e7e98c947a06113b35e9a9dceb42e4ced82d8807d13c9bcad0f703952496ecfaefd51f7f058d77cc15bea3b975c2e2f0eb0d2c0e1d0debd58f31f2c06c2b2e62d70c5e8c57371f6590a80809db8bc9b6264ad944303958dbbb21ed310592a4334edb3d5d2ab7d880c94ac01488e13c1c2be6e3bcc24c97e2ddefdb501a055295a017e1dd65b4ed6e61bcbd30628d707e85c6fe168959a423f181ed898cbf92ca92dce80671ca20fdc163de574c8bd84573c6358e4e4a083eebaeb47177d2cd046573f2e2db514334ba3f6078e26f088d350d02ddf5a2213aa21c44cdf5e3fd784d75e9a27d7a7ebdc61af115eb0b4e3e669b0c6c8e477732c48197887aaec8d28413551fb8f18398037d527887074e3f141d8afd01da6d23d5e2f22ac7200cfbecf6f11828d7df78c81f8f56ad6025009d05ed48f451f1f00cb3ef0350a526d947192c8fea94fb4654cf601a1ff7e1dc56ae4c9846f5f1fff6e7eb62450818113867c9c05cfb607e7b095c74aa82ab13d8f9f03e572dcb374334bbd409321fb76378299beaf030e6acdd9d85e06b6dc3634873e014071ca6d0a1cb183b991b7317b36dda65ab311c243d011951ed3416309cbe659cd3f5f072416e575bf45c75ef6bffe5d4f8c8dc19fbf4e5a0544a512a399fb7339a9ce1ffa6258c3b01967444a10e38afc5f7966083e9dd5e26bddef3c97924f9066fd4597974be81c2791843e68788d85170f8fb1b568edb5e965de4edbdd7f67826cf58fe4387402a0fb7f67807674cc6670cdfdda7b817294c00e2c63f3d64dfde422b736cacb35ee5b55db1267900d8670b836acf268b495a3b11add84b914e052e4940d55e777d972387cd552402832def198ff0cf2a096a914406fe09555ea87db4dc970e76a097327699dd173458b39a8d543e8cd1462feec2f2e49852d6af36516da429918d722f17e5cd3946415ea9b91d569ef4acc2e426af555eeec4c3251e8169f1750e29ba17bcc692891511e6d7484d95387e7113f163a0d4aef5be43ecdb012c8249f1b1a7a1b0139566c3964fa0c647f3ca85b9c9ccc2ef3e4c92fd4250c42b077d773c8660946ef9e0a5b5d082808e38c094b8a3634fe178ee86f7077ac54ac6551136dab5f38d08ab6d67985cff60297fd8c0c733c19a2b09354c2457a1f8ef2bda47704932f85bc4c74607ba65611b14cd3c005c8e7a9c8a71e588d61855bf546936b010dd76252654fd5ece53f23864fff50752df0037a83f4dbb5d492ddfc890d57652a3afaf1ea39d6b9bf7577dcd7dff0355d455607ea9d845c969fc8bbfc2f4be2ff9a295b3441979d1a1bfd2f4696b865a81673b5a96dabf9c21921e0dcdceeee7815f10faf32badf6e9fe94ea8f5327a6c8ae1e0c4e80628d37426d6c95ada10915836a8942b20b6db0fd9d0e8870127ab78f116ef75067c3cb2b8864fb71502090de5987e9fc5b156f900a526a83df3c5d58a0438257ee4196bc949f70ee00ee978800c6ac8169b0a99c7faa76b451067ab62db07c10dbfd3dc2d847e08bc562d394fbb5d9ba321a4fd70f2d4119411ef288f08e6a55c1663ed2bea5d33ac406fe77295ac09f3d8a6a6357489748983df4f04178f168aae401e4f27e466989da905cf1abf05a0c554c2a488047463d2aac724abdb3e42f5913b10b27ad94ef120c9dba79ecdfbfbad74453d09f55ae229f3b825782c79fdf05a672182eda129696d072a440677183544004dfb00bb493c7a9d646686a34a8d88e2ea5affcbc584c445aef5041504f7ac02e8eee53ee310e7ba8ab2ead6c4fde4dfefc79cccbfa82a259885cee5659a15bd4eecbcfd6040d8f763e45685e474c7940558853bb5dbb6570018dc7e8082fd76ae6426b4c5b4eceb87414af9e6d34cc937fe2979505775f868cda6951edd2a23b3119d2d5ab022ad2d4ca1291944e9aedb7ba2542e3cf001594d4d1059952ca85a936524d6350a25548219440d2a4892d66ff018b07dfb3acc6d8b68f15d013b9cb54e0f1532e537a0b2a159d2c0cb9c57da5d4aece6097944a7aba26398705981b7775eb55fec17a5c4b39c1774a5b087a21b4f1b14f5bcf964cc971a0ff4f6eac5f0010ee4dc7e5e1054b65f1c6ec8e6f913796d3f580eb1263e12b629a06e026f9362d4641b8b108a5602681ebc91fcb97f9bedf9cce36865f4998a5bb8b7d4e121889ca04c5196a14c9caa747e63299787e18ab42e1fad312144910cf58d42def04c1246ee04bb68d8b8455190cbd09937001560f9d6d3f796737232a7bea4eaa02dafb28b3f5fccd0530eaa3880cde4521ba5ab3d0561e9794c1c873ec9ae1927c954b4589d9b908234dd5d08fa1eb3a1a660c55adaed79ce5dda3bceeb8cd5c01613dd03d3bbc03e630fd46b6b507c69fcff241ad361f6c3e1f093cca94da33292b98418972a946e3909ab2936b27557273a0bf48e1f2b898cc52979330c6ba8105361b0fcae3fdbcb91f629444d02db394b3bc7ad868b2f4bde5d0e872b8f3c42549941fc35827c7916a787c41839c5c5d1033b1f5a98628d9aa77f2bb2767b8f992e862ae2e59d40a5def43e380fadb6cf4f209c4986da93dea538f11abb14d0f07f80b1ddab5f5a5ed7f9d57b1d71a3321ecdd2492c485eef94f9801612cbc02a77406c128ccc8f02eb35f6e608c21bfd1d2c4f7ddb5ecb11dcfe1595920f97b2e2980a811fa648318325f7e7d032d3b937d09fafcc64eb404708f1f2964ba50e65d3ceefa335224d33c01ba0a997e5c71f182ef17e52797cfda283f2ec20e133ad243767bd4ce6a089ed3598a8ffc36c7c163526f532f65d25da825cbab8dfffe5bc80e5e76b209acda245dc6c2daffdd404a387dcf1ca66c8a4abbbf21ab664090b12a6dd28146bfb340203893dc4e2f164e8f2f6f8d1096908a37fed0771c017a7cc121f4daf6b0a7ee70a95a9738ff13ab2834b7d1f9522794406aeae0302dfc4fb9068550349e54649fc0d4984fe6df149c47738998d05c0970dbf76a65d50d16fe39eefadead855e008b3ae6059074cb72a1ddbc00ed2774200bcc59276c62ae16aaba8f9b6d936672164affb017df502fcd47fe043155eb90410164345d0d51babfe67a08259fb1253f7d9659c2e6aadaa3a06192b2cbe4c96f67974b696bd937183c95f3e9e4fb304694746294bbf62a004719972ca5cd11dfbee7e313c07cc074320caa6235b5238c82328025a98caae1a04027a0912e831ffc8b69e40044c84f11e62d0192a82f988fa923a8234744d9017384f5fda4a88d6f6b6a086548c29ed852bf122d1aa132698cb76166365da7f43eb7a1bc9de30ed37c4d60dc16864954813fd551bfcd8a6791fe75b5c7bb6a0b706eed96a3eab006618d653d0c112ec48c00436e6119a7e88c263da865c11647de36cd3522d5ea3e0020589a7ba4ab070e64b44d2d1e376fa88d4557c99b693f58c5395a38750b2aaae398a55ad87483c7fe327936b484210b86de58858621a92116a76d34c22bad91149a76768f7fcdc480512fb82e7e2403ba3d252f85dfef411bbeeee9982e087bd4bde409ba34d6d0fdbdc76143ba37c2bc7d90eae0ca914e6ef95b23aabfffa7ceebcb22789df386e220dbee554b6f929d100448344749d3f591f1d29983393143fa57dd804d5e43338211f2cbce1d4c8b096d3e87f8150529d407f005819c3a7a1ec0a31b83606727aca8755030f14cbf6bf4e94432840ae6d48e9d4ba43d5d4eb67ebecc1ae113535f11e01183840d12fe9ad9155aa066861050399d7d8980e7f85498b64734515c5821615e4a33e92d260634ad8817c393b6db7e2226c1febda286973015e24c5d7e9488eb597f0999b6f53e3170e6c3c42e957e25c82d8d583b26d8a664977485c85597e329af9aeede6a744318d469bf922cd14bcccb3cd5e4cd17e62c3ed07279216c34baa27e14326995edd4927fd181e9a53e1299d8dfaf836896bec7f0bdf22ea8c223e031d2fcbf4acccfe0e1a25f77f26af8cdc3bd3bbe55b45ea85c763e9db7e3984db81780ef9de7dbed552b2ea592b1d89bd4093e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85590e6aaf89fea5a782641cbf91d8dfd9daa3ed036d4f37559e88687e4691b4ca694def7bb05a4b30fe2f160a76c7b8536cda7aed9232760e6e76598676b4a31b56b9362dc2e6e07b7ae3b9baf2be0ac4ede85931a93d0a917dfd2bcf2861340ae0c701dbd6e198e03e21e5eca562312ddd7ce70f811f8a3f7b1b3a6d643b733f8ba7a7a5b3269035aa6f35cbdf5cfc4c38b2f873253c87e905562bb5585136b3fb707ad0e8fab69a53a4dbdce08ca87ba2ccde4c274e6b216197a46c3edb4488220e4ae409ffbe8bfd2af14d7f717398408ae8b481005beccb83d62ef4052b6816741f623ef754261c88029202b29fe3b031d555129ca9bc3df5d2482b041a49ed7eb3cd89b5a0432117457add67d44f9188d92846abd723f2aa43c308b967ca0c49d1c8402bef6703551b2cf0bf7e846b72eeb65a4ad7b3e328cb7b6a18ead79cb3a90f7f2449b1696f6e253c03ba3eecefe174fca96b67a7f238e3b0345cea5ef46c527c2e890083d10b8d68d457c6bf6d7e22a28b4e48229d4a2bede551e1617f2c8ae5c3d4210743ff53ea684d35ee3303c731840e9be344e82ea174c66f6d0020e482a9c635c295e0d7c903b820cdf48b183cb5503dcf058c7e54bdeaa7d014ef1abd489a47778ad01a9c936f32e2b14927a4d502a5d684a7380266689d6daefd871914f9348ddadf8e7092b66cf1f34b9be08c2821836c44fe0a453afe04fc4e40f2b9aba2e9194edc44068bbd3e0e4f347881bd83ecb6a7190153c967504bd4025c2a02415d40178ed5d88f1784dedd6d97e7c2da48cfe63565e923b8fc1d92f36d73bfa490d9caa4fe964506d27d2f161b0b47b532e3447f7bb21cdf31a367c32340c23853e76506331de22c6fe2fd56e7924b6cbc576bcf294d3e50b3db088b4089dee70dfd305a4e200dc72c9ad7d78ffd28ffe36608eaf46591bcdb6f071f170eb48b146e98e74e5e5bf29fd334fa5b943059e08bd6c908f19a0c475884e9304c05e9940fd4c36af243b47de7086da45af44c08404e0c61d57981b751e91bd05a85274a1530015a3d6edee4ec1a42befd9062dd49ee7a974d12dcdc73ab098396b4440168b7cfd5c96d45f1bcd041900d8afa60702441a98cfe71fcd2697f8d3275d91bc4eb5e32b3317bef55ae147953c81f3d7153a20db000ca841edf10b65025d9208d3bd2b9ecff272d56c9ee3d17d73ae532fa065afc8cdbb8959b3c9525041fbd51797cf271967c2c7bbd53c8de65dbdd572feba83b1055a19951a6f9e93025f36992cb147a0e5ae85e091164ff261cfa4bd13fa3e4e3b2d6ce2347bbdf246b7eb70bacd6557658a51112284e4d62b85c19d8468ad1fd06028db99fbf428226b20694896466c413928284f399d3a17fa0aaec1898f1204d4b4393fc7ba9dceebcbac6f8e2b3fab4ca997ebb809b95d0db2fa34d94b8c6664488f2100ed422cd387e3b564c58a8550e3f9dcfad71090ba0f89a050148b8c92c7ea958f3ebd4b51766fda248e0fd9e9c430dafabd18288253927288a45812a5512c972c36ceea54c4d530e0083abaae291be941d98cb55027a5e205825217d066d6b9e79ae8a9b81902099e51ec79d1a93cc1f61c50230367685a69836bf7f22116e078d4de034c564b8da4ef355754d237ca078ca6ef3dbbcbf38f9c1567b4a39533ea64b33b357d6813c39bd73654937e694ec4739048b957746e4b3434ece26c78b3b29bac9a8167b39f7245a7bdba49bbb8dc06947112167329f81bee77499e0a01b3c922c5d63a530e181eeee04e945edc577599ccc75e85e77a04c2982d15950854c34ea234f18b09f7222f9ce3b2da09d03b58c97e1e95e5e5197abd83a29b397fc3ad7b321503be8545e28b3ecb4c63e29a6938ada557379e2a193a084ec5ae23646cfa6d4b2d27c77e7a7155daded690e7a6f213555f4216f34f304c64790291223492ae49edb9d2ee59565e849786893a8fe08354a0ef453cd7003752d0fe3928283e350963182d330589be61e4d898a79678c8e367f8858d8f565226681fc7583191e3373e0ad940364e2c616fb1157a81a84bbd959e7008f0ac500f1012c6d4e5a70d590055fd9b74599f4e4b246b09db80d2fe8a8a5556d3c4cb235fb8a686d35ccc45831a498c01d0515c213c5b52b1e39126aca2837a9ec868db029d91df4e72c80fae7bf871b92644798b52bb8e5fa55f6f74cdbcd0b9abd634df237e154789399f3dd6b6bc030f5d1e86a3460f4051eaa709ad7ec93589ef0458acd6aec8591b25aa753c60edd2b8f88c9e29f75f43c882066778bec1b1b0698660fe1ad60ca569fb9c637dd24076d296164263ae0c6105e08e7fc1111c26b634c3ba16a1a288cb15675dbcba4e13001029c6895f7c1bac461b22671a689955a6b03ee8ae111824de274992edfe26c72ddf872dc35c0d0439c8317c72ad7503c26020f85ba1d223b676bb0076d90024431245c00e3499f038266c3a079e1df56e2b52a69df077cef8b33c87c2dcf6692cc9f6d12c6e3c6c6f95dd4e9c14ba199601e614d3161e1edb10c94de441b0cff9d4287fdc271607038e9f0afd4090ece17e88157fbe65e92aed104c36f0a7271aac2695809d75045536ed173d22b5287ccfdbaf765808bdd7abe85ee614268651d0613a309b2ba5aff107387bc325ae2310f414b9e169d02f0b939d2724bad23ec7a7ab16d1953ddb864c5f3f34366725aa638e34696e47aa4100cbf6e687d46e6c07e58ad4a2e1e7c6d3cefb886fdd45c4cf33b30e5dff2fe7c35465a18762244f9cb1cb4cc66496198881dd6ef01069dc04678b23dd0825aa8ba6b544020bee4b2655b30476d467583841b1b437e87416928d945e278ff5e239ad1375711e671fbbf6555058a38426c3e152b15573108a699d8fe1a52002944f57a44bf9e68e7881ea41f904381fd38e8b5d8e7745da340c946f76e9ec3fa7e48b04871183093d4593c2b604e7fd5df0a447aa1aa9ab4b4f4254f81f97e54bb033679e8c2ac2fb23d01120484f73a96b42440cb789ce664ca4203d186ba1e6522aebec8ccaaef5b44e8c0ddc26f55267fa1785b5e67d86da4b8f86ab42e872a3573a126d10239c2c9e87812d3d29d5db387346927bdd563d28377ba19d2c2d4044b6b2ecf1c2645e248259ba555a3008179427003301e2217329ba94ab21ef6ba4a324af1e6c9699e633c93c6c2c498e7c2b0adb7acd9ec21a5526fe1b8f15d98ae5ded0200d6a25564546d3b02bf82a4c071acb02488267fb5a3a8021e319d696801cad416bc5f669fa39562a53fb12b46dab2b66d9b19f2cfa5163beb5d21bc53a2e4f732f5a3e4038e25406d8936edff98189900e99ab7fdab520e884ce5b36b67422ebf87c6924f3ad65d95b1d3afa4fde02c09d9fbaacd97c42ca124e99ec0212ecfc2c5be79ec2b1ee803413c6ffe4ddfd98f38882b65d743b60082c8feef199f941a26b4a93ba1541b9649e322c8d6a537ee7ef6f49605c886431bde477aa8c82b0b23d917d65170bc99d90af2c92c751645dbda7a36000b618f10f22cf42ab287f507d18b62b747c153da7f6da33c9c11c4485fd15a9691d2155821302eab747d6d8e48938d65406428f6462a3c35f450c76e4e61e7267fe8ff4cac2bfd77a164716eacbb69deff321bbaf00eac8a863945d052fdc76e15f28f9c77d84f00dab49988b8d04214458557c44f75c052b5f86886443205ab9721e233afeb624d1b503d9e7a706602ad863d00876cc6481477b5bc76489e5c2b87b03d715465421ecb9af36022e931a06ef36e4860c362f699a73f368daac4472939f8aca2cc178361d5188a31cd004f80760032e053c3c1519233714568c0f3a583b1ebbe7dbc30b6e979bd23daba0aad6fa4adb4a4d41a4fbe509dd508d188ce32497941b8796434fd15f692143420f0c49ceb1f8fffcf8843c280359376d915fb0bde6f3f13343ae2bef22e4e5395c6273a26c3a3b116c182a46badc125df790bd31cf3eb50642f3c52cbf6da3c4ef8f6a0e7469f1e5b754e89ac62d21a1d7f8e4ef2e939a517dedf34db0b2f51379b6d1eeed2db4497e729dafd6243adef005708585217835b7d7b2d01a17ec11e61e69689253d54392ff60a7c121dae6b66f1cc3d7f04ad7c9c5565e70edeb933948026a7da7d27ab7f989003929c6d382af27c78a67ea011584beb25b904dfe97f9e5d5eb751b30ea783113417e84d2764fa51ab2574e7f91acb8dfd92add022903dac051dbcb52cf7c272b7997783cdd7af50a6ce3d8298ec218cacdf6d883532a98b630e68ab8ab8a3d104b9047deec3b3f1e66941db188c32102ef2d96462e89949d453517b09f56c2fdc2592a53b6b0d582ff13ec7a59356086aef2312dfb04a1bcedd730420e380cc41eac170dc6beacb75de4036063e5bdc4b86cc9ebede648e05a6f8d2a08836f5e1d99f0b0f2f53bc5a71d0e3b13b0a327b9bfcdb620e808a00dee53ce8031e3d8ef93d61b2aa8168412b8fe819136509c3039ecfa578a71f1ce4593b9c0cf2e5e36794d73f3a4b6a0510e43b8619f417ecf7e75907273322a8135c2a15949556e377c773ec2d12c28dd3147488f9cac1a0219b8bd0c5f74a0bd352b63a8fbf877c0ae1ee800a4250c889a291a3139ed93d268f748ad1e18d7df8963ec0b108c05d4e968db251a9e14837d99836a3457c26084ee89b269dbd9680169f7d9eeeb478adcda5e4f7ac049410d608cb155762b9af5f8fbc5968346a01c1360de586a38697d1810733d49a161cab3a8e63e47908e69673fd639bed9dcba3e9852ffc1e146d331044bf469eba0ad453ed1445520a2c86d43de6f48afbf03ef1ea94818b482278f4ebc69da2407833f2d84f8589a6ee5b7c0bba98ed2a24c8fc2a314d299ee466853e806e11446e3114f1d4065bd5eb5ddc016f0edd8cb3d9e51ee1428bf7885de055bbe81f9a59610a7321ec679598e70dadf362f3bec62040b71b506f6b4be368a06ec7172d16f0426a081d20d2cc2c18531211cca7dce53840f0b3e4f647459a0cd42c2e6d6342d2c744964582c8dc09ec16305ff886aae1cf49b6a89f07c8661594eee0aa0b11023a820cb3cbdb81a09b4b365267f6441f46837349d36eccdf4585b7cac6f85d5e793b371939eea99ca93d8a8be3bfe9e4f4340c9970bcf89002bc3b31bff75aa053c8e77d394965b1d9aa4433e10848fc6464e20510d513f853a53ccafa9a854dc8f083c19eee0fa733bb61045c80dc1bf49a2f1a8e625ed686f03031ce1c58411f828d3956f0162fe9ee040a3ebaec8a908131f492370556585fbc844fc615b8f2dc7687f5eb897b312b33820d3a802db7c6f189fc532424fbc049c0fa556457be0ee6157270a7aceebdc3752e5d0ca8eb8fa6fe6d38b8676a971032273add25ae00e97c19ea45dedd5ba9fb17bd05e4fa50d65caf6f27f8f6001b5c5044fd0d0fd1d98369d0e672f353e0b8c3d1ec76035988af5cbf34955c0635ff26893e40c1184be5e785fb7ad3a189c367aa8ed02rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootceph-14.2.16.402+g7d47dbaf4d-lp151.2.31.1.src.rpmceph-mgr-dashboard     /bin/sh/bin/shceph-grafana-dashboardsceph-mgrpython3-CherryPypython3-PyJWTpython3-Routespython3-Werkzeugpython3-pyOpenSSLrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)14.2.16.402+g7d47dbaf4d-lp151.2.31.114.2.16.402+g7d47dbaf4d-lp151.2.31.13.0.4-14.6.0-14.0.4-14.0-15.2-14.14.1_ܙ_@_u@_#_F@_t@_6|^@^@^˳@^}^_@^.^^@]]@]]]]@]]]|@]Γ@]@]@]V]V]V]]p]g@]S]9](v@]@\\ \@\\9\@\\ڭ\\@\\@\s@\8\f\@\\e\\\|\\\}@\y\r@\f\Q\Q\P@@\J@\Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Abhishek Lekshmanan Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler Nathan Cutler ncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comGuillaume GARDET ncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comjan.fajerski@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comschwab@suse.dencutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comtserong@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comddiss@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comddiss@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comjfajerski@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comncutler@suse.comrdias@suse.comncutler@suse.comrdias@suse.comrdias@suse.comtserong@suse.comtserong@suse.comtserong@suse.comncutler@suse.com- Update to 14.2.16-402-g7d47dbaf4d: + rebase on top of upstream 14.2.16 release * (bsc#1179802, bsc#1180155, CVE-2020-27781) cephx privilege escalation possible via ceph_volume_client Python interface + (bsc#1180118) bluestore: provide a different name for fallback allocator- Update to 14.2.15-400-gee47c9760b: + rebase on top of upstream nautilus branch, SHA1 afdd217ae5fb1ed3f60e16bd62357ca58cc650e5 Upstream 14.2.15 release see https://ceph.io/releases/v14-2-15-nautilus-released/ * (bsc#1179139) os/bluestore: fix "end reached" check in collection_list_legacy Upstream 14.2.14 release see https://ceph.io/releases/v14-2-14-nautilus-released/ + (bsc#1178837) rgw: cls/user: set from_index for reset stats calls + (bsc#1179452) mgr/insights: Test environment requires 'six'- Update to 14.2.13-450-g65ea1b614d: + Fix CVE-2020-25660 (bsc#1177843) * mon/MonClient: bring back CEPHX_V2 authorizer challenges * msg/async/ProtocolV1: resurrect "implement cephx_*require_version options" * msg/async/ProtocolV1: resurrect "include MGR as service when applying cephx settings"- Update to 14.2.13-447-g4d9ac2b00a: + rebase on top of upstream nautilus branch, SHA1 04747f7b3800889f24311e0ef15e0531a2cc4d8d * rbd: rbd-nbd: don't ignore namespace when unmapping by image spec * rbd: librbd: ignore -ENOENT error when disabling object-map * rgw: radosgw-admin should paginate internally when listing bucket * rgw: fix expiration header returned even if there is only one tag in the object the same as the rule * rgw: fix S3 API KeyCount incorrect return * osdc/ObjectCacher: overwrite might cause stray read request callbacks * mgr/dashboard: redirect to original URL after successful login * mgr/dashboard: Strange iSCSI discovery auth behavior * mgr/prometheus: add pool compression stats * bluestore: BlockDevice.cc: use pending_aios instead of iovec size as ios num * bluestore: test/objectstore/store_test: kill ExcessiveFragmentation test case * bluestore: Support flock retry * bluestore: attach csum for compressed blobs * mgr: fix race between module load and notify * mon: set session_timeout when adding to session_map- Update to 14.2.13-398-gb6c514eec7: + Upstream 14.2.13 release see https://ceph.io/releases/v14-2-13-nautilus-released/ * (bsc#1151612, bsc#1158257) ceph-volume: major batch refactor- Update to 14.2.12-436-g6feab505b7: + Upstream 14.2.12 release see https://ceph.io/releases/v14-2-12-nautilus-released/ * (bsc#1169134) mgr/dashboard: document Prometheus' security model * (bsc#1170487) monclient: schedule first tick using mon_client_hunt_interval * (bsc#1172546) os/bluestore: fix collection_list ordering * (bsc#1174591) mgr/dashboard: Unable to edit iSCSI logged-in client * (bsc#1174591) mgr/dashboard: Allow editing iSCSI targets with initiators logged-in * (bsc#1175061) os/bluestore: dump onode that has too many spanning blobs * (bsc#1175240) pybind/mgr/restful: use dict.items() for py3 compatible * (bsc#1175585) mgr/dashboard: Fix many-to-many issue in host-details Grafana dashboard + (bsc#1175781) ceph-volume: lvmcache: print help correctly + spec: move python-enum34 into rhel 7 conditional- Update to 14.2.11-394-g9cbbc473c0: + Upstream 14.2.11 release see https://ceph.io/releases/v14-2-11-nautilus-released/ * mgr/progress: Skip pg_summary update if _events dict is empty (bsc#1167477) (bsc#1172142) (bsc#1171956) * mgr/dashboard: Allow to edit iSCSI target with active session (bsc#1173339)- Update to 14.2.10-392-gb3a13b81cb: + Upstream 14.2.10 release see https://ceph.io/releases/v14-2-10-nautilus-released/ * mgr: Improve internal python to c++ interface (bsc#1167477)- Update to 14.2.9-970-ged84cae0c9: + rgw: sanitize newlines in s3 CORSConfiguration's ExposeHeader (bsc#1171921, CVE-2020-10753)- Update to 14.2.9-969-g9917342dc8d: * rebase on top of upstream nautilus, SHA1 ccd9c04f88e53aef7e4f1068ce1221fa3b97450d * cmake: Improve test for 16-byte atomic support on IBM Z * (jsc#SES-680) monitoring: add details to Prometheus alerts * (bsc#1155045) mgr/dashboard: add debug mode, and accept expected exception when SSL handshaking * (bsc#1152100) monitoring: alert for prediction of disk and pool fill up broken * (bsc#1155262) mgr/dashboard: iSCSI targets not available if any gateway is down * (bsc#1159689) os/bluestore: more flexible DB volume space usage * (bsc#1156087) ceph-volume: make get_devices fs location independent * (bsc#1156409) monitoring: wait before firing osd full alert * (bsc#1160626) mgr/dashboard: Unable to remove an iSCSI gateway that is already in use * (bsc#1161718) mount.ceph: remove arbitrary limit on size of name= option * (bsc#1162553) ceph-volume: strip _dmcrypt suffix in simple scan json output * (bsc#1163119) mgr/dashboard: Not able to restrict bucket creation for new user * (bsc#1164571) mgr/dashboard: Prevent iSCSI target recreation when editing controls * (bsc#1165713) mgr/dashboard: Repair broken grafana panels * (bsc#1165835) rgw: get barbican secret key request maybe return error code * (bsc#1165840) rgw: making implicit_tenants backwards compatible * (bsc#1166297) mgr/dashboard: Repair broken grafana panels * (bsc#1166393) mgr/dashboard: KeyError on dashboard reload * (bsc#1166624) mgr/dashboard: Fix iSCSI's username and password validation * (bsc#1166670) monitoring: root volume full alert fires false positives * (bsc#1166932) mgr: synchronize ClusterState's health and mon_status * (bsc#1168403) mgr/dashboard: Add more debug information to Dashboard RGW backend * (bsc#1169356) rgw: reshard: skip stale bucket id entries from reshard queue * (bsc#1170938) mon/OSDMonitor: allow trimming maps even if osds are down * (bsc#1171367) Set OSD's bluefs-buffered-io param to false by default- Update to 14.2.5-389-gb0f23ac248: + fix Nonce reuse in msgr V2 secure mode (bsc#1166403, CVE-2020-1759) + prevent RGW GetObject header-splitting XSS (bsc#1166484, CVE-2020-1760)- Update to 14.2.5-383-geb21f1a807: + spec: add "bc" as a runtime dependency of ceph-test, because the downstream test suite now needs it- Update to 14.2.5-382-g8881d33957: + mgr/dashboard: fix improper URL checking (bsc#1161074, CVE-2020-1699) + rgw: drop the partial message check while reading messages (bsc#1161312, CVE-2020-1700)- Update to 14.2.5-378-g1387ceaf78: + Revert "rgw_file: introduce fast S3 Unix stats (immutable)" because it is incompatible with NFS-Ganesha 2.8- Update to 14.2.5-379-g202c110bf7: + include hotfix from upstream v14.2.6 release (bsc#1160920): * mon/PGMap.h: disable network stats in dump_osd_stats * osd_stat_t::dump: Add option for ceph-mgr python callers to skip ping network- Update to 14.2.5-371-g3551250731: + upstream Nautilus 14.2.5 point release, see https://ceph.io/releases/v14-2-5-nautilus-released/ * health warnings will be issued if daemons have recently crashed (bsc#1158923) * pg_num must be a power of two, otherwise HEALTH_WARN (bsc#1158925) * pool size must be > 1, otherwise HEALTH_WARN (bsc#1158926) * health warning if average OSD heartbeat ping time exceeds threshold (bsc#1158927) * changes in the telemetry MGR module (bsc#1158929) * new OSD daemon command dump_recovery_reservations (bsc#1158930) * new OSD daemon command dump_scrub_reservations (bsc#1158931) * RGW now supports S3 Object Lock set of APIs (bsc#1158932) * RGW now supports List Objects V2 (bsc#1158933) + checkin.sh: eliminate dashboard frontend build parallelism- Update to 14.2.4-1299-gd41e25301a: + checkin.sh: * bail out if make-dist does not create tarball * run make-dist with "set -x" + mon: keep v1 address type when explicitly (bsc#1140879)- Update to 14.2.4-1296-g250efec9f7: + doc: mention --namespace option in rados manpage (bsc#1157611)- Update to 14.2.4-1295-g7bb6db3bbc: + mgr/dashboard: Remove env_build from e2e:ci + checkin.sh: build all dashboard frontend languages (bsc#1148498)- pre_checkin.sh: accommodate upstream patch "nautilus: rpm: always build ceph-test package"- Update to 14.2.4-1292-gfd63c4e6a7: + ceph-volume: check if we run in an selinux environment- Update to 14.2.4-1284-g2c00724365: + qa/dashboard_e2e_tests.sh: Automatically use correct chromedriver version (bsc#1155950)- Update to 14.2.4-1283-g9ab65f8799: + rebase on tip of upstream nautilus, SHA1 9989c20373e2294b7479ec4bd6ac5cce80b01645 * rgw: add S3 object lock feature to support object worm (jsc#SES-582) * os/bluestore: apply garbage collection against excessive blob count growth (bsc#1124556) * doc: update bluestore cache settings and clarify data fraction (bsc#1131817) * mgr/dashboard: Allow the decrease of pg's of an existing pool (bsc#1132337) * core: Improve health status for backfill_toofull and recovery_toofull and fix backfill_toofull seen on cluster where the most full OSD is at 1% (bsc#1134365) * mgr/dashboard: Set RO as the default access_type for RGW NFS exports (bsc#1137227) * mgr/dashboard: Allow disabling redirection on standby Dashboards (bsc#1140504) * rgw: dns name is not case sensitive (bsc#1141203) * os/bluestore: shallow fsck mode and legacy statfs auto repair (bsc#1145571) * mgr/dashboard: Display WWN and LUN number in iSCSI target details (bsc#1145756) * mgr/dashboard: access_control: add grafana scope read access to *-manager roles (bsc#1148360) * mgr/dashboard: internationalization support with AOT enabled (bsc#1148498) * mgr/dashboard: Fix data point alignment in MDS counters chart (bsc#1153876) * mgr/balancer: python3 compatibility issue (bsc#1154230) * mgr/dashboard: add debug mode, and accept expected exception when SSL handshaking (bsc#1155045) * mgr/{dashboard,prometheus}: return FQDN instead of '0.0.0.0' (bsc#1155463) * core: Improve health status for backfill_toofull and recovery_toofull and fix backfill_toofull seen on cluster where the most full OSD is at 1% (bsc#1155655) * mon: ensure prepare_failure() marks no_reply on op (bsc#1156571)- Update to 14.2.4-387-g031cd69d0d: + mgr/dashboard: Automatically use correct chromedriver version- Update to 14.2.4-386-g73475e3ee1: + os/bluestore: consolidate extents from the same device only (bsc#1156282)- Update to 14.2.4-378-gac1bcd6547: + qa/suse: move dashboard-e2e to tier3 and add debugging code to src/script/dashboard_e2e_tests.sh- Update to 14.2.4-373-gc3e67ed133: + Support iSCSI target-level CHAP authentication (bsc#1145617) + Validation and render of iSCSI controls based "type" (bsc#1140491) + Fix error editing iSCSI image advanced settings (bsc#1146656) + Fix error during iSCSI target edit- Addendum: + upstream Nautilus 14.2.4 brings the following notable changes: * fixed a ceph-volume regression introduced by 14.2.3 (NOTE: SES customers were never exposed to this regression) (bsc#1132767)- Addendum: + upstream Nautilus 14.2.3 brings the following notable changes: * Fixed a denial of service vulnerability where an unauthenticated client of Ceph Object Gateway could trigger a crash from an uncaught exception (CVE-2019-10222/bsc#1145093) * Fixed bsc#1151994 - Nautilus-based librbd clients can not open images on Jewel clusters * The RGW num_rados_handles has been removed in Ceph 14.2.3 (bsc#1151995) * "osd_deep_scrub_large_omap_object_key_threshold" has been lowered in Nautilus 14.2.3 (bsc#1152002) * The ceph dashboard now supports silencing Prometheus notifications (bsc#1141174)- Addendum: + upstream Nautilus 14.2.2 brought the following notable changes: * The no{up,down,in,out} related commands have been revamped (bsc#1151990) * radosgw-admin gets two new subcommands for managing expire-stale objects (bsc#1151991) * Deploying a single new BlueStore OSD on a cluster upgraded to SES6 from SES5 breaks pool utilization stats reported by ceph df (bsc#1151992) * As of 14.2.2, Ceph cluster will issue a health warning if CRUSH tunables are older than "hammer" (bsc#1151993)- Update to 14.2.4-352-g2060e25d1c: + rebase on top of upstream Nautilus v14.2.4 release, SHA1 75f4de193b3ea58512f204623e6c5a16e6c1e1ba for details, see https://ceph.io/releases/v14-2-4-nautilus-released/- Update to 14.2.3-349-g7b1552ea82: + rebase on top of upstream Nautilus v14.2.3 release, SHA1 0f776cf838a1ae3130b2b73dc26be9c95c6ccc39 for details, see https://ceph.io/releases/v14-2-3-nautilus-released/ * ceph-volume: prints errors to stdout with --format json (bsc#1132767) * mgr/dashboard: Changing rgw-api-host does not get effective without disable/enable dashboard mgr module (bsc#1137503) * mgr/dashboard: Silence Alertmanager alerts (bsc#1141174) * mgr/dashboard: Fix e2e failures caused by webdriver version (bsc#1145759) + librbd: always try to acquire exclusive lock when removing image (bsc#1149093)- Update to 14.2.2-354-g8878cf2360: + rgw: Move upload_info declaration out of conditional (bsc#1137189, https://github.com/SUSE/ceph/pull/325)- Update to 14.2.2.349+g6716a1e448: + rgw: fix for CVE-2019-10222/bsc#1145093 for the beast frontend ("rgw: asio: check the remote endpoint before processing requests")- Update to 14.2.2-348-gf6da3d1d18: + rebase on top of upstream Nautilus v14.2.2 release, SHA1 4f8fa0a0024755aae7d95567c63f11d6862d55be + mgr/volumes: add CephFS subvolumes library (bsc#1135205) + mgr/dashboard: Warn that tcmu-runner backstore is tech-preview (bsc#1137261) + mgr/dashboard: Add, update and remove translations (bsc#1140737) + osd/PG: fix cleanup of pgmeta-like objects on PG deletion- Update to 14.2.1-475-g83b977ffbd: + packaging: remove SuSEfirewall2 support- Update to 14.2.1-469-g454d851f0a: + lvmcache: refactor argument parsing and add -h flag + qa/deepsea: expand testing of dashboard (branding and E2E tests) + spec: * package the Dashboard E2E tests * drop explicit systemd BuildRequires in case of building for SUSE (allow OBS to pick better candidates to shorten rebuild queues)- Update to 14.2.1-468-g994fd9e0cc: + spec: * install grafana dashboards world readable (bsc#1136110) * put "without python2" conditionals around python3-* provides/obsoletes (align with upstream)- Update to 14.2.1-467-g9e10776aa2: + mon/Monitor: allow probe if MMonProbe::mon_release == 0 (bsc#1132396) + spec: make python3-rgw replace python-rgw on upgrade- Update to 14.2.1-463-g99339b576a: + qa/deepsea: redirect journalctl output to a logfile + spec: install/package ceph-volume lvmcache plugin + common: make ms_bind_msgr2 default to "false" (bsc#1124957)- Update to 14.2.1-457-gb42e3171b3: + qa/deepsea/salt: * 1node5disks salt configuration * grafana_service_check validation test * Disk drive replacement test * use "ceph_cm_ansible: false" instead of "ceph_cm: salt" + spec: Disable LTO in spec when being used (bsc#1135030)- civetweb: fix file descriptor leak (bsc#1125080, CVE-2019-3821) (fix has been in since February 2019) - rgw: sanitize customer encryption keys from log output in v4 auth (bsc#1121567, CVE-2018-16889) (fix has been in since February 2019)- Update to 14.2.1-448-g1bd10a856f: + monitoring: update Grafana dashboards + mgr/dashboard: fix some performance data are not displayed + monitoring: SNMP OID per every Prometheus alert rule + mgr/dashboard: Validate if any client belongs to more than one group + mgr/dashboard: Admin resource not honored + mgr/dashboard: Unable to see tcmu-runner perf counters (bsc#1135388) + mgr/dashboard: iSCSI form does not support IPv6- Update to 14.2.1-440-g0ac6920288: + rebase on top of upstream nautilus branch, SHA1 1dc43a036fcc0121e3a0c1fe7ca6cd77cde1bf60 + client: fix vxattr nanosecond field padding (bsc#1135219, bsc#1135221)- Update to 14.2.1-431-gd032e5dd80: + ReplicatedPG: add CHECKSUM->CMPEXT req translation (bsc#1123360) + MDS + libcephfs snapshot btime support (jsc#SES-183)- Update to 14.2.1-423-g3df171fd28: + rgw: cloud sync fixes (jsc#SES-97)- Update to 14.2.1-419-gb72ca927c1: + rebase on top of upstream nautilus branch, SHA1 8e188313cf2f790f131e21a3a02094e32cf02087 + replaced ~25 downstream ceph-volume lvmcache commits with a single squashed commit + rgw: object expirer fixes (bsc#1133139) + rgw_lc: use a new bl while encoding RGW_ATTR_LC (jsc#SES-327) + rgw: beast IPv6 (jsc#SES-454)- Update to 14.2.1-426-g7a12897012: + nautilus: core: Give recovery for inactive PGs a higher priority (bsc#1133461) + spec: new subpackage ceph-prometheus-alerts + nautilus: librbd: re-add support for nautilus clients talking to jewel clusters + systemd: ceph-mgr: set MemoryDenyWriteExecute to false- Update to 14.2.1-345-g040ffffe0e: + Upstream v14.2.1 release draft release notes: https://github.com/ceph/ceph/pull/27793 + rpm: have pybind RPMs provide/obsolete their python2 predecessors (bsc#1125899) + ceph-volume: add lvmcache plugin (jsc#SES-267)- Update to 14.2.0-636-g19cfb53b0c: + rebase on top of upstream nautilus branch, SHA1 d947e804dd316c89c28d25948947927fa290e227 + downstream branding no longer displays Ceph logo in error popup (bsc#1131984) + mgr: make run-tox.sh scripts more robust (jsc#SES-478)- Update to 14.2.0-465-gdfed19b089: + rebase on top of upstream nautilus branch, SHA1 c09e90d1847fc4ffdd7384c9adf7f60c13479095 * dashboard improvements: [#] Add Polish language [#] Add date range and log search functionality [#] Add refresh interval to the dashboard landing page [#] Add separate option to config SSL port [#] Filter iSCSI target images based on required features [#] Fixed auth TTL expired error [#] Fixed error when trying to create NFS export without "NFSv3" [#] Fixed error when trying to create NFS export without "UDP"- Update to 14.2.0-345-g183e6fe4f5: + rebase on top of upstream nautilus branch, upstream SHA1 d4290f8edcbadbfecb9396a43a586afe0d0afd00 * common/blkdev: get_device_id: behave if model is lvm and id_model_enc isn't there * mon/Monitor.cc: print min_mon_release correctly * mgr/dashboard: dashboard giving 401 unauthorized- _constraints: increase x86_64 ceph memory constraint to 10G after seeing "memory exhausted" build failure on a machine with 9.8G total memory (including swap)- Update to 14.2.0-328-gf3638ba646: + rebase on top of upstream nautilus branch, upstream SHA1 41b9e7f94f1f08e8607ef574befaaaf6998a89dd * librbd: ignore -EOPNOTSUPP errors when retrieving image group membership * crush: various fixes for weight-sets, the osd_crush_update_weight_set option, and tests * osd/OSDMap: add 'zone' to default crush map * common/blkdev: handle devices with ID_MODEL as "LVM PV ..." but valid ID_MODEL_ENC * mgr/orchestrator: Add error handling to interface * mon/OSDMonitor: allow 'osd pool set pgp_num_actual' * rgw: ldap: fix early return in LDAPAuthEngine::init w/uri not empty() * mon/MgrStatMonitor: ensure only one copy of initial service map + drop downstream patch "rgw: dmclock: async scheduler: wrap yield_ctx around ifdefs" (replaced by https://github.com/ceph/ceph/pull/26634)- _constraints: increase aarch64 ceph memory constraint to 10G after seeing "memory exhausted" build failure on a machine with 9.8G total memory (including swap)- Update to 14.2.0-300-gacd2f2b9e1: + spec/ceph-mgr: drop "Recommends: ceph-mgr-ssh" + cmake: empty INSTALL_RPATH for libceph_crypto_openssl.so (boo#1129921)- Update to 14.2.0-296-g063d979413: + rebase on top of upstream nautilus branch, SHA1 3a54b2b6d167d4a2a19e003a705696d4fe619afc * upstream Nautilus 14.2.0 (stable) release release notes: http://docs.ceph.com/docs/master/releases/nautilus/ + rpm: fix "rhel <= 7" conditional (bsc#1129595) + rpm: refrain from building ceph-resource-agents on SLE (bsc#1129597)- Update to 14.1.1-457-g1411dbed54: + rebase on top of upstream nautilus branch, SHA1 98653b3db92f69023cb62526791d4d9aa5d6ec23 * upstream Nautilus 14.1.1 (RC2) release * mgr: Fix broken get_localized_module_option function (bsc#1127342) * spec: ceph-osd gets new runtime dependency, libstoragemgmt + dashboard: Update downstream branding (bsc#1129224) + spec: build ceph-test package on x86_64 arch only (bsc#1129274)- Edge ceph package memory constraint upward to address "virtual memory exhausted: Cannot allocate memory" build failure sseen in OBS- Update to 14.1.0-559-gf1a72cff25: + rebase on top of upstream master branch, SHA1 34f04be35bb9abcb5860b4c975b105adacc7a3aa * fix GCC-9 build (bsc#1121395) + SUSE branding for Ceph Dashboard (Sebastian Krah) + spec: * Drop use of $FIRST_ARG (Franck Bui) * fix ceph-mgr-diskprediction-local runtime deps- Update to 14.1.0-402-ga396e8bf3b: + rebase on top of upstream master branch, SHA1 1f909bc88be501e58cfbe1bab55efc20de10fa8d * upstream v14.1.0 (Nautilus RC1) release + see draft release notes: https://github.com/ceph/ceph/pull/26598 * rados: provide user with more meaningful error message (bsc#999643) * librados3 is dead: long live librados2 * several MGR modules (notably the dashboard) have been split off from ceph-mgr into dedicated subpackages * upstream v14.1.0 introduces an optional dependency on rabbitmq-c + disabled, for now, since openSUSE does not ship this package + rgw: dmclock: async scheduler: wrap yield_ctx around ifdefs (bsc#1126554) + arch tweaks (enable lttng build for ppc64le, drop ppc64 openSUSE, add s390x openSUSE)- Update to 14.0.1-3975-g14d8f3cab5: + rebase on top of upstream master branch, SHA1 24fcffb94ccda5cb11eeb74315c78e053fbb1c66 * Enabling and using the dashboard should be possible and strongly encouraged - see http://docs.ceph.com/docs/master/mgr/dashboard/ for the basics + spec: * enable s390x build for openSUSE * disable lttng build on s390x, enable it on ppc64le * new subpackages for the larger MGR plugins (notably, dashboard) * drop RHEL-specific subman code blocks- Update to 14.0.1-3346-g0364ec8d2f: + rgw: Fix for SignatureMismatchError in s3 commands- Update to 14.0.1-3344-g0834db3c15: + spec: drop arch-specific conditional around RGW crypto plugin libraries + make-dist: prefer Python 3- Update to 14.0.1-3341-gb471954ff4: + rebase on top of upstream master branch, SHA1 602c875bd68a091be485bfba7e2d62b3f08ba7b3 * msgr V2- Update to 14.0.1-3176-ge8d910619e: + rebase on top of upstream master branch, SHA1 cc26a67890b58c678d4bb26f6a408cf1742317b5 * spec: fix xmlsec1 build dependency for dashboard make check- Update to 14.0.1-2789-g6c941e4d76: + rebase on top of upstream master branch, SHA1 c70a3d8e30be84ea8db41e7329ed1577aeee9ab9 * MON now supports Kerberos authentication * MGR now works with Cython >= 0.29 * spec: add xmlsec1 dependency for dashboard make check * spec: change rbd-mirror and ceph-radosgw runtime dependency from ceph-common to ceph-base to address http://tracker.ceph.com/issues/37620- Update to 14.0.1-1555-g42662f72f4: + spec: fix libradospp-devel runtime dependency + spec: remove redundant "Provides: libxio" and "Obsoletes: libxio" + spec: explicitly require python3-Cython < 0.29 (bsc#1118611)- _constraints: Increase aarch64 disk space constraint for ceph-test to address build failure seen in openSUSE:Factory:ARM- Update to 14.0.1-1547-g08fca371b5: + spec file: make ceph-common remove provides for libradosstriper1 + use root:graphana for the dashboard directories on suse- _constraints: remove duplicated aarch64 ceph-test entry- Update to v14.0.1-1546-ge9be8525c8: + mgr/volumes: Fix Python 3 import error (fixes cluster deployment in py3 environment)- Update to v14.0.1-1545-g01bead277f: + based on upstream master 4d3cc9f9092d8a86d128192a811733ce23ad070a + plus two spec file fixes: * make ceph-grafana-dashboards own its directories http://tracker.ceph.com/issues/37485 * fix cython package version to less than 0.29 http://tracker.ceph.com/issues/37472- spec file: make ceph-common provide/obsolete libradosstriper1 (in SES5 ceph-common requires libradosstriper1 with exact version match, while in SES6 there is no libradosstriper1 at all)- Update to v14.0.1-154-g7588072b82: + based on upstream nautilus 5f51cd286b747b1729006a5b98fb08b1b646237a (v14.0.1 release)- Bump ceph aarch64 memory constraint from 8 to 9G to address an EOM build failure seen in IBS- Update to v14.0.0-4389-g4c34d15e48: + based on upstream nautilus a0b5445bc8400b9b1f398a414001164b2d8dd290 + First downstream nautilus build. Notable changes: * The 'ceph-disk' OSD deployment/introspection/management tool is gone. Use 'ceph-volume' instead. * Builds with Python 3.7 (boo#1113946) * The 'ceph osd rm' command has been deprecated. Users should use 'ceph osd destroy' or 'ceph osd purge' (but after first confirming it is safe to do so via the 'ceph osd safe-to-destroy' command). * The MDS now supports dropping its cache for the purposes of benchmarking: "ceph tell mds.* cache drop " * The 'ceph pg list_missing' command has been renamed to 'ceph pg list_unfound' to better match its behaviour. * The 'rbd-mirror' daemon can now retrieve remote peer cluster configuration secrets from the monitor. * The is fully obsolete and references to it in the docs have been removed or clarified. * The libcephfs bindings added the ceph_select_filesystem function for use with multiple filesystems. * The cephfs python bindings now include mount_root and filesystem_name options in the mount() function. * erasure-code: add experimental *Coupled LAYer (CLAY)* erasure codes support. * The 'cache drop' OSD command has been added to drop an OSD's caches: "ceph tell osd.x cache drop" * The 'cache status' OSD command has been added to get the cache stats of an OSD: "ceph tell osd.x cache status"- Update to 13.2.2-86-g62b49f06c4: + rebase on upstream 13.2.2 release https://ceph.com/releases/13-2-2-mimic-released/ + IMPORTANT NOTE: this release contains a regression in CephFS which was not yet fixed at the time of this build. Do not use this build on a production cluster! For details, see http://tracker.ceph.com/issues/36346- Update to 13.2.1-427-g6cd01d4dd2: + cmake: no libradosstriper headers if WITH_LIBRADOSSTRIPER=OFF- Update to 13.2.1-426-gd2d4852e84: + based on upstream mimic 510d48e10be716cf61b9ddd51e8bc847288ae15a + bsc#1101262 - ceph's SPDK builds with march=native + migrate DeepSea QA bash scripting from DeepSea repo- Update to 13.2.1-106-g9a1fcb1b6a: + based on upstream mimic 0323ca11569b183509129c180dcec427aecf2a0a * including upstream 13.2.1 release - for details, see https://ceph.com/releases/13-2-1-mimic-released/ + ceph-disk: let extract_parted_partition_numbers return a list (fixes a py3 issue)- Update to v13.2.0-210-g0e990e900d: + based on upstream mimic 4ed78ecf2f27aae1e9eb27f83611285ec7445ebd * bsc#1099162, CVE-2018-10861 * bsc#1096748, CVE-2018-1128, CVE-2018-1129 + increase memory constraint for build workers after builds started failing on workers with exactly 8G of RAM ("free -h" reports 7.8 GiB for these workers)- Update to v13.2.0-39-geb7f429568: + based on upstream mimic f38fff5d093da678f6736c7a008511873c8d0fda- Update to 13.1.1-173-g127c33d64e: + based on upstream mimic dda69eea663bcabc5ad99f5ca8370f43575f475d * fix GCC8 builds (bsc#1084645) * fix python3 module loading (bsc#1086613) * ceph-brag no longer packaged upstream- Update to 13.0.2-1874-ge31585919b: + based on upstream master 510762f51e346836492a0a8f83a056944ee6e046 * add liblz4 build- and runtime dependency * move ceph-disk runtime dependencies from ceph-osd to ceph-base- Update to 13.0.2-992-g418baeac64: + fix ceph-detect-init for recent SUSEs (bsc#1090072)- rewrite README-ceph-test.txt for clarity- Update to 13.0.2-984-g852d3f1411: + based on upstream master aaac83abb516f824f1caef470686b1bffeffa8b4 + fixes s390x build failure (bsc#1089291) + introduces liboath0 runtime dependency (bsc#1089302) + fixes RGW SSL deployment- Update to 13.0.2-819-gf64b021d4c: + based on upstream master 3ab655b55d2b363c0352dfbb90caed2ffcd42432- reduce ceph-test constraints for ppc64le and s390x- Reduce ceph-test constraints on aarch64- Update to 13.0.1-3204-g17e0216271: + osd: fix s390x build failure (bsc#1081526) + cmake: add chrono to BOOST_COMPONENTS (bsc#1086017)- Update to 13.0.1-3202-g7a60121a01: + latest master (dashboard_v2 MGR module renamed to dashboard)- checkin.sh: add interactive verification of Ceph version number sanity- Update to 13.0.1-3023-g71b0480e48: + mimic-dev2 (including notably dashboard_v2 MGR module)- forward port DeepSea integration suite from ses5- Update to version 13.0.1-2078-g85df538001: + spec file: * revert "enable --without-python2 bcond for all distros" (as of Code 15, Python 2 bindings will not be built by default: projects wishing to build them will need to provide --with-python2 explicitly) (bsc#1081836)- Update to version 13.0.1-1987-g4a523803f8: + py3 MGR fixes (bsc#1080758) + spec file: * test/bench: remove smallio bench tools- Update to version 13.0.1-1567-gae149ea5f9: + increment upstream version number to 13.0.1 (mimic dev release) + spec file: * enable --without-python2 bcond for all distros (the Build Service will control py2/3 build via this option)- Update to version 13.0.0-5171-g4d4101fe78: + spec file: * change version number format * define _defined_if_python2_absent if, and only if, building without python2 bcond- Update to version 13.0.0-5169-g26918cdcc9: + rebase to latest upstream master, including spec file changes: * eliminate Python 2 dependencies (bsc#1076403) N.B.: this has the consequence that we no longer build or ship Python 2 versions of the Python bindings for librados, librbd, libcephfs and librgw * drop lowmem_builder bcond and rewrite associated code to be distro-agnostic * move distro-conditional BuildRequires to appropriate section * use more recent toolchain on RHEL 7 * ceph-base: put runtime dependencies in alphabetical order * correct Group for python bindings subpackages * move ceph-volume to ceph-osd and adjust systemd macros accordingly * ceph-osd subpackage now requires lvm2 for ceph-volume * ceph-test: peg version of ceph-common dependency * drop deprecated scripts rcceph and ceph-crush-location * fix permissions of rbd resource agent- ceph-rpmlintrc: add lines to quash RPMLINT warnings + ceph-base.x86_64: E: devel-file-in-non-devel-package (Badness: 50) /usr/lib64/ceph/crypto/libceph_crypto_isal.so + librados2.x86_64: E: devel-file-in-non-devel-package (Badness: 50) /usr/lib64/ceph/libceph-common.so + ceph-base.x86_64: E: devel-file-in-non-devel-package (Badness: 50) /usr/lib64/libos_tp.so + ceph-base.x86_64: E: devel-file-in-non-devel-package (Badness: 50) /usr/lib64/libosd_tp.so- Replace references to /var/adm/fillup-templates with new %_fillupdir macro (boo#1069468)- Update to version 13.0.0-3531.g3692e00bab: + rebase to latest upstream master + Add "checkin.sh" script to automate the checkin process, along with a "README-checkin.txt" file containing basic information.- Update to version 13.0.0-3512.gb018e431a6: + rebase to upstream "Mimic" (13.0.0) development snapshot https://github.com/SUSE/ceph/tree/ses6 + drop OBS source services in favor of generating the spec file and tarball using the upstream "make-dist" script + new version number format, replacing timestamp with git tag offset + reduce tarball size from 114 MB to 47 MB by omitting unused parts of boost- Update to version 12.2.1+git.1511279898.8aa892202e: + bsc#1060904 * rgw: keystone: bump up logging when error is received + bsc#1067705 * rgw: set sync_from_all as true when no value is seen + bsc#1066182 * rgw: data sync: set num_shards when building full maps * dencoder/rgw: expose rgw sync status types * rgw: set num_shards on 'radosgw-admin data sync init'- Update to version 12.2.1+git.1510221942.af9ea5e715: + bsc#1066502 * mon/osd_metadata: sync osd_metadata table * mon/OSDMonitor: tidy prefix definitions * mon: implement MDSMonitor::get_store_prefixes * mon/mgr: sync mgr_command_descs table and mgr_metadata table * mon/MgrMonitor: populate on-disk cmd descs if empty on upgrade * mon/MgrMonitor: read cmd descs if empty on update_from_paxos() + bsc#1067088 * osd: make the PG's SORTBITWISE assert a more generous shutdown + bsc#1066182 * rgw: ListBucketIndexesCR spawns entries_index after listing metadata * rgw: fix error handling in ListBucketIndexesCR * rgw: RGWDataSyncControlCR retries on all errors + RGW fixes: * test/rgw: add test_multipart_object_sync * cls/rgw: increment header version to avoid overwriting bilog entries * rgw: disable dynamic resharding in multisite environment- Update to version 12.2.1+git.1509128342.9347aa6662: + common/common_init: disable ms subsystem log gathering for clients + spec file: add %{_sysctldir}/90-ceph-osd.conf to ceph-osd * ceph.spec.in,debian/rules: change aio-max-nr to 1048576 * sysctl.d: set kernel.pid_max=4194304 (bsc#1061461)- Update to version 12.2.1+git.1507910930.aea79b8b7a: + rgw: Remove assertions in IAM Policy (bsc#1063014, CVE-2017-16818)- Update to version 12.2.1+git.1507819941.856710ff58: + rgw: stop/join TokenCache revoke thread only if started (bsc#1059458) + systemd: reinstate TasksMax=infinity- Update to version 12.2.1+git.1507226092.b783a015b9: + Revert "SIGPIPE suppression for platforms without SO_NOSIGPIPE or MSG_NOSIGNAL" + msgr: add a mechanism for Solaris to avoid dying on SIGPIPE- Update to version 12.2.1+git.1507108986.dc637a73e2: + rgw: defer constructing keystone engine unless url is configured (issue#21400, pr#17775)- Update to version 12.2.1+git.1506764331.9e2e945bd0: (upstream luminous 9d8acf6f3f85dd1410629cc680474e38f3be9838) + upstream Luminous v12.2.1 https://ceph.com/releases/v12-2-1-luminous-released/- Update to version 12.2.0+git.1506009682.0e5b4307f3 (upstream luminous a931cf68120d99661b785cc794e2b6965d621f06): + ceph-disk: fix mountpoint check for systemctl enable --runtime (bsc#1051598) + spec file: * ceph-fuse requires fuse; make that dependency explicit * drop obsolete qemu symlink hack in librbd1 %post- Update to version 12.2.0+git.1505141259.1264bae1a8: + rgw_file: fix LRU lane lock in evict_block() - bsc#1054061 + os/bluestore: fix deferred write deadlock, aio short return handling - bsc#1056125 + mon/OSDMonitor: don't create pgs if pool was deleted - bsc#1056967- Update to version 12.2.0+git.1504118058.706f78da1a: + fix ceph --version to say "stable" instead of "rc" + spec file: add python-numpy-devel build dependency for SUSE + bsc#1053836 * Revert "osd: adjust osd_min_pg_log_entries" * osd/PGLog: write only changed dup entries- Update to version 12.2.0+git.1504013812.01ea30bcc9: + upstream Luminous v12.2.0 (first stable) release * increment version number to 12.2.0 + spec file * edge mem_per_process upward after seeing some OOM-esque build failures * package ceph-volume man pages- Update to version 12.1.4+git.1502953626.155adb5253: + ceph.spec: provide libxio 1.7 and obsolete libxio <= 1.7- Update to version 12.1.4+git.1502878199.4183317204: + ceph.spec: obsolete libxio (Note to reviewer: libxio was only ever used by Ceph (for an experimental IB/RDMA feature), it was never submitted to Factory, and its functionality has been integrated into Ceph in a different form. For all practical purposes, libxio has been replaced by Ceph itself.)- Update to version 12.1.4+git.1502871088.edf82a59df: + latest upstream luminous (a5f84b37668fc8e03165aaf5cbb380c78e4deba4) * increment upstream version number to 12.1.4- Update to version 12.1.3+git.1502698163.45fc586a51: + latest upstream luminous (6808af486d3bdce966232810004648502c967b13) * increment upstream version number to 12.1.3- Update to version 12.1.2+git.1501914637.59afe41c49: + spec file * ceph-volume added to ceph-base RPM, where it co-exists with ceph-disk- Update to version 12.1.2+git.1501865907.88dc8cdc9d: + latest upstream master (7350fa65d79b5f0ace427e609565f07be35cfe62) * os/bluestore: allow multiple DeferredBatches in flight at once (pr#16769, issue#20295, bsc#1043399)- Update to version 12.1.2+git.1501790037.82d6a9c37a: + osd: move CMPEXT response munging into completion function (bsc#1047244)- Update to version 12.1.2+git.1501684697.aa6b0153ef: + upstream luminous v12.1.2 release candidate + latest upstream master (e27a78c9ed3984b54a312ced3ad67fcc8f464fc0) * mon: add mgr metdata commands, and overall 'versions' command for all daemon versions (bsc#1050063, pr#16460)- Update to version 12.1.1+git.1501669490.04d0738487: + mon: extensible output format for health checks- Update to version 12.1.1+git.1501501507.6dd9e8fd8c: + update to latest upstream master (fa70335db25f2b661b329d5d8f37039b77f2d1ae) + spec file: * build/ops: rpm: Drop legacy libxio support (pr#16449) + Other notable changes: * osd: moved OpFinisher logic from OSDOp to OpContext (pr#16617)- Update to version 12.1.1+git.1501231943.67577225bc + Notable changes: * rgw_file: properly & |'d flags (bsc#1047977)- Update to version 12.1.1+git.1500447879.e5aac115d7: + upstream 12.1.1 (release candidate) + Other notable changes: * build/ops: rpm: fix typo WTIH_BABELTRACE (pr#16366) * build/ops: rpm: put mgr python build dependencies in make_check bcond (pr#15940) * ceph-disk: support osd new (pr#15432) * ceph: allow '-' with -i and -o for stdin/stdout (pr#16359) * cls/rbd: trash_list should be iterable (pr#16372) * doc: update quick start to add a note for mgr create command for luminous+ builds (pr#16350) * libradosstriper: fix format injection vulnerability (pr#15674) * mgr/dashboard: add OSD list view (pr#16373) * mon, osd: misc fixes (pr#16283) * mon/MDSMonitor: fix segv when multiple MDSs raise same alert (pr#16302) * mon/MgrMonitor: fix standby addition to mgrmap (pr#16397) * mon/MgrMonitor: only induce mgr epoch shortly after mkfs (pr#16356) * mon: Fix output text and doc (pr#16367) * mon: add force-create-pg back (pr#16353) * mon: skip crush smoke test when running under valgrind (pr#16346) * os/bluestore: use reference to avoid string copy (pr#16364) * osd: combine conditional statements (pr#16391) * osd: restart boot process if waiting for luminous mons (pr#16341) * rgw: S3 lifecycle now supports expiration date (pr#15807) * rgw: acl grants num limit (pr#16291) * rgw: delete object in error path (pr#16324) * rgw: drop unused find_replacement() and some function docs (pr#16386) * rgw: fix err when copy object in bucket with specified placement rule (pr#15837) * rgw: fix potential null pointer dereference in rgw_admin (pr#15667) * rgw: raise debug level of RGWPostObj_ObjStore_S3::get_policy (pr#16203) * rgw: req xml params size limitation error msg (pr#16310) * rgw_file: add service map registration (pr#16251) * test,rgw: fix rgw placement rule pool config option (pr#16380) * test/fio: print all perfcounters rather than objectstore itself (pr#16339)- Update to version 12.1.0+git.1500295948.39d2e5f424: + spec file: * socat build dependency only for make check * fix typo WTIH_BABELTRACE- Update to version 12.1.0+git.1500284183.1ed97736ab: + Spec file changes: * bump epoch (not relevant for SUSE) * add socat buildrequires * libcephfs2 now obsoletes libcephfs1 (bsc#1047020) * HAVE_BABELTRACE option renamed to WITH_BABELTRACE * fix a regression in ceph-base %postun scriptlet + Selected other changes: * Revert "msg/async: increase worker reference with local listen table enabled backend" * build: build erasure-code isa lib without versions * ceph-disk/ceph_disk/main.py: Replace ST_ISBLK() test by is_diskdevice() * ceph.in: filter out audit from ceph -w * common,config: OPT_FLOAT and OPT_DOUBLE output format in config show * common/Timer: do not add event if already shutdown * compressor/zlib: remove g_ceph_context/g_conf from compressor plugin * core: make the conversion from wire error to host OS work * core:" Stringify needs access to << before reference" src/include/stringify.h * crush/CrushWrapper: make get_immediate_parent[_id] ignore per-class shadow hierarchy * doc/mgr/dashboard: update dashboard docs to reflect new defaults * doc/rados.8: add offset option for put command * doc: fix link for ceph-mgr cephx authorization * doc: update intro, quick start docs * isa-l: update isa-l to v2.18 * librbd: fail IO request when exclusive lock cannot be obtained * mgr,librados: service map * mgr,mon: debug init and mgrdigest subscriptions * mgr,mon: enable/disable mgr modules via 'ceph mgr module ...' commands * mgr/ClusterState: do not mangle PGMap outside of Incremental * mgr/restful: bind to :: and update docs * mgr: Zabbix monitoring module * mon,crush: create crush rules using device classes for replicated and ec pools via cli * mon/MgrStatMonitor: do not crash on luminous dev version upgrades * mon/MonClient: respect the priority in SRV RR * mon/Monitor: recreate mon session if features changed * mon/OSDMonitor: do not allow crush device classes until luminous * mon/OSDMonitor: guard 'osd crush set-device-class' * mon/mgr: add detail error infomation * mon: Fix status output warning for mon_warn_osd_usage_min_max_delta * mon: add support public_bind_addr option * mon: collect mon metdata as part of the election * mon: debug session feature tracking * mon: do crushtool test with fork and timeout, but w/o exec of crushtool * mon: fix hang on deprecated/removed 'pg set_\*full_ratio' commands * mon: include device class in tree view; hide shadow hierarchy * mon: maintain the "cluster" PerfCounters when using ceph-mgr * mon: revamp health check/warning system * msg/async: increase worker reference with local listen table enabled backend * msg/async: make recv_stamp more precise * msg: QueueStrategy::wait() joins all threads * msg: make listen backlog an option, increase from 128 to 512 * os/blueStore: Failure retry for opening file * os/bluestore/BlueFS: clean up log_writer aios from compaction * os/bluestore/BlueFS: clear current log entrys before dump all fnode * os/bluestore/KernelDevice: batch aio submit * os/bluestore: Make BitmapFreelistManager kv itereator short lived * os/bluestore: cap rocksdb cache size * os/bluestore: clear up redundant size assignment in KernelDevice * os/bluestore: differ default cache size for hdd/ssd backends * os/bluestore: fix deferred_aio deadlock * os/bluestore: move object exist in assign nid * os/bluestore: only submit deferred if there is any * os/bluestore: reduce some overhead for _do_clone_range() and _do_remove() * os/bluestore: use bufferlist functions whenever possible * os/filestore/FileJournal: FileJournal::open() close journal file before return error * os/filestore/HashIndex: randomize split threshold by a configurable amount * os/filestore: call committed_thru when no journal entries are replayed * os/filestore: do not free event if not added * os/filestore: queue ondisk completion before apply work * os/filestore: require experimental flag for btrfs * osd/OSD: auto class on osd start up * osd/PrimaryLogPG solve cache tier osd high memory consumption * osd/ReplicatedBackend: reset thread heartbeat after every omap entry * osd/filestore: Revert "os/filestore: move ondisk in front * osd: Check for and automatically repair object info soid during scrub * osd: Preserve OSDOp information for historic ops * osd: check queue_transaction return value * osd: clear_queued_recovery() in on_shutdown() * osd: compact osd feature * pybind/mgr/dashboard: bind to :: by default * pybind/mgr/dashboard: fix get kernel_version error * rbd-mirror: ignore permission errors on rbd_mirroring object * rbd: do not attempt to load key if auth is disabled * rgw: fix compilation with cryptopp * rgw,test: fix rgw placement rule pool config option * rgw/rgw_frontend.h: Return negative value for empty uid in RGWLoadGenFrontend::init() * rgw/rgw_rados: Remove duplicate calls in RGWRados::finalize() * rgw: /info claims we do support Swift's accounts ACLs * rgw: Correcting the condition in ceph_assert while parsing an AWS Principal * rgw: Do not fetch bucket stats by default upon bucket listing * rgw: Fix a bug that multipart upload may exceed the quota * rgw: Initialize pointer fields * rgw: fix leaks with incomplete multiparts * rgw: fix memory leak in copy_obj_to_remote_dest * rgw: fix not initialized vars which cause rgw crash with ec data pool * rgw: fix radosgw-admin data sync run crash * rgw: fix s3 object uploads with chunked transfers and v4 signatures * rgw: fix the subdir without slash of s3 website url * rgw: fix zone did't update realm_id when added to zonegroup * rgw: log_meta only for more than one zone * rgw: rgw_file skip policy read for virtual components * rgw: using RGW_OBJ_NS_MULTIPART in check_bad_index_multipart * rgw: verify md5 in post obj * rgw_file: add compression interop to RGW NFS * rgw:fix s3 aws v2 signature priority between header['X-Amz-Date'] and header['Date'] * vstart.sh: bind restful, dashboard to ::, not 127.0.0.1 * vstart: add --rgw_compression to set rgw compression plugin * vstart: allow to start multiple radosgw when RGW=x- Update to version 12.1.0+git.1499090920.2c11b88d14: + With this update, Ceph no longer autocreates a pool called "rbd" with id 0 Deployment tools must take this into account! + systemd: Add explicit Before=ceph.target (bsc#1042973)- Update to version 12.1.0+git.1498654198.20d6a47cc9: + build/ops: rpm: put mgr python build dependencies in make_check bcond N.B. this effectively eliminates the following build dependencies: python-Babel python-beautifulsoup4 python-CherryPy python-coverage python-flup python-Genshi python-html5lib python-logutils python-nose python-Paste python-PasteDeploy python-PasteDeploy python-pecan python-pyquery python-singledispatch python-waitress python-WebOb python-WebTest python-Werkzeug python-WSGIProxy2 pytyhon-python-openid- spec file: + removed BR libatomic_ops-devel as upstream replaced it with std:atomic + removed defattr as they are no longer needed on sle12 and newer- Update to version 12.1.0+git.1498478524.117b171715: + include 12.1.0 tag to make "ceph --version" happy + tests: drop hadoop-s3a tests- Update to version 12.1.0+git.1498309403.f4fc02fff4: + upstream 12.1.0 release; for details, see http://ceph.com/releases/v12-1-0-luminous-rc-released/ + revert several pre-release commits that are no longer needed because the issues have been fixed upstream in the meantime + build/ops: rpm: sane packaging of %{_docdir}/ceph directory- Update to version 12.0.3+git.1498202776.b806032985: + Integration testing changes: * add DeepSea integration suite test definitions for teuthology * re-enable several RGW tests that upstream only runs on Ubuntu + ceph_ver_hack.sh: use git describe --match + ReplicatedPG: add CHECKSUM->CMPEXT req translation- Update to version 12.0.3+git.1497426468.6984d41b5d: + qa: add initial deepsea suite (task and test yaml) + fix "ceph osd df" (regression in latest upstream master) (pr#15675, issue#20256) * mon: move creating_pgs and reweight_by_utilization into new MonPGStatService * mon: move most PGMapStatService into PGMap; rename PGMon's to PGMonStatService * mon: mgr: move 'osd df' handling to manager * mon: inherit PGMonStatService from the PGMapStatService * move the OSDUtilizationDumper code into OSDMap * mon: mgr: enable "osd df" on the manager * qa: add a check_commands.sh script which looks for commands with no tests * qa: test 'osd df' in cephtool/test.sh- Update to version 12.0.3+git.1496909744.9f667dc335: + build/ops: rpm: one License line to rule them all- up memory _constraint for ceph-test to address ppc64le OOM seen in IBS- Update to version 12.0.3+git.1496902753.b18dc53186: + build/ops: rpm, COPYING: drop GPL 2.0 with Autoconf Exception (autoconf no longer used)- Update to version 12.0.3+git.1496754880.35cb2861ce: + merge upstream master (b1d06a6b54)- Update to version 12.0.3+git.1496494491.ba3c561a92: + merge upstream master (97d6e150e5)- Update to version 12.0.3+git.1496306960.2db336d85e: + merge upstream master (b19352eec3), fixes bsc#1041492- Update to version 12.0.3+git.1496147556.f1d6115861: + cmake: build boost::context and coroutine only with rgw Beast frontend + build/ops: rpm: reverse s390 bcond conditional block + build/ops: rpm: no rgw Beast frontend on s390x + build/ops: deb: no rgw Beast frontend on s390x + cmake: delete excidentail reintroduced line. + cmake: link radosgw with boost libraries (bsc#1040119)- Update to version 12.0.3+git.1495849076.4457d36178: + rgw: remove fastcgi from default rgw frontends + RGW: Turn off fcgi as a frontend + build/ops: drop libfcgi build dependency + build/ops: rpm: apply epoch only if %epoch macro is defined- Update to version 12.0.3+git.1495798013.23dd2b67dc: + ceph.spec.in: re-drop %{epoch}: prefixes- Update to version 12.0.3+git.1495787939.3f6446f64f: + build/ops: rpm: adapt License line to Release 2.0 of SPDX spec (issue#20091)- Update to version 12.0.3+git.1495675338.07282a4057: + upstream 12.0.3 release + osd/PG: Add two new mClock implementations of the PG sharded operator queue (pr#14997, bsc#1040103) + build/ops: rpm: make librbd1 %post scriptlet depend on coreutils (boo#1040230) + build/ops: rpm: move RDMA build dependency to distro-conditional section + build/ops: rpm: move python-prettytable to distro-conditional section + cmake: added empty RPATH to libcls_sdk.so + rpm: drop %{epoch} from new rados-objclass-devel subpackage + cmake: fix boost components for WITH_SYSTEM_BOOST + cmake: build boost::context only if rgw Beast frontend is in use + build/ops: rpm: reverse s390 bcond conditional block + build/ops: rpm: no rgw Beast frontend on s390x (bsc#1040119) + ceph.spec.in, debian/control: build/runtime dependency for cherrypy- Update to version 12.0.2+git.1494343993.7527e4f0b8: + ReplicatedPG: drop CACHE_PIN->WRITESAME req translation (bsc#1038063)- _constraints: up ceph.spec disk constraint to 28G after seeing a build failure in OBS- Update to version 12.0.2+git.1493341348.9148e53: + ceph osd: add support for new op cmpext + ceph_test_rados_api_misc: add cmpext tests + librados: add cmpext API + ceph_test_rados_api_aio: add cmpext tests + test/librados/c_operations: add cmpext tests This patchset is a straight cherry-pick of the upstream OSD/librados cmpext changes (bsc#1035937).- Update to version 12.0.2+git.1493291471.adb6a43: + rocksdb: sync with upstream (bsc#1025891) + build/ops: cmake: explicitly disable MSSE 4.2 if not supported- _constraints: set higher disk and memory constraints so s390x builds don't fail- Update to version 12.0.2+git.1493238434.71681fd: + cmake: added empty RPATH to libceph_crypto_isal.so- Update to version 12.0.2+git.1493227670.3396ca1: + rgw: use a vector for options passed to civetweb- Update to version 12.0.2+git.1493192333.3305a0c + merge upstream master (0d368d2c8544247a4aed9c71c74e77b0c6bbfb22) including 12.0.2 development release- revert commit a9a50f690085091bb4446095418237f9fef712c8 in preparation for rebasing against the upstream implementation. (bsc#1035937)- Add ibs_constraints.sh script to address s390 constraints tweak needed in IBS- Update to version 12.0.1+git.1491557762.4e47e9f + merge upstream master (2950ad91d25d0d6e2e3fb6842d5bbc36353ba2a5) including fixes for: * bsc#1030068 (s390 build) * bsc#1031311 (ceph-mon.service not enabled via systemd preset)- Mention bugs fixed in jewel codestream that are also fixed in the current codestream: + msg/simple/Pipe: avoid returning 0 on poll timeout (bsc#1014338) + build/ops: fix undefined crypto references with --with-xio (bsc#977940) + ceph-create-keys: add missing argument comma (bsc#1008894) + common: Improve linux dcache hash algorithm (bsc#1005179)- Update to version 12.0.0+git.1489432599.165c23f: + merge upstream master (0c2f5f7214d2410a7519f88e65ed5273d6480227) including fix for upstream issue#18694 "ceph-disk activate for partition failing"- Update to version 12.0.0+git.1489159457.410e200: + build/ops: fix Group strings for library packages- Update to version 12.0.0+git.1488553020.e902441: + Recent upstream master (3c0af07629dc661aba84e2fef696339ac7171914) + Builds with GCC7 (boo#1025891)- Update to version 11.1.0+git.1486588482.ba197ae: + Update to latest upstream master (3d740bd) + cmake: added empty RPATH to several executables + rocksdb: sync with upstream- Update to version 11.1.0+git.1484919552.9216e9a: + Revert "rpm: put distro conditionals around Source0 in spec file" + Revert "ceph.spec.in: revert Source0 line to upstream version"- pre_checkin.sh: add logic to remove s390 architectures from ExclusiveArch line in ceph-test.spec (rationale: ceph-test is not shipped for s390x)- Update to version 11.1.0+git.1484745543.7b08de5: + Update to latest upstream master (36874c8) - significant changes: * cmake: Turn libcommon into a shared library (PR#12840) * cmake: fix rpath on shared libraries and executables (PR#12927) + Fix build failure in ppc64le and s390x, caused by missing "-momit-leaf-frame-pointer" gcc option in these architectures: + rocksdb: build with ppc64 (PR#12908)- Update to version 11.1.0+git.1484659687.3472421: + rpm: tell openSUSE to never clean the spec file + Enable ppc64le and s390x builds in SLE + rpm: lttng only on x86_64 and aarch64- Update to version 11.1.0+git.1483528076.d86680e (latest master) + Merge branch 'master' into ses5 (Merge: 185bcce798 a7b78620f0) with conflicts: conflicts in qa/ where resolved with theirs conflict in src/osd/PrimaryLogPG.cc was resolved with picking ours plus a method rename int ReplicatedPG::do_extent_cmp -> int PrimaryLogPG::do_extent_cmp- Update to version 11.1.0+git.1481663255.bf42706: + Update to upstream 11.1.0 release; for details see http://docs.ceph.com/docs/master/release-notes/#v11-1-0-release-candidate + move ceph_ver_hack.sh script from build service package to git repo (bsc#1015419)- Update to version 11.0.2+git.1480437645.66595d3 + Update to latest upstream master (boost library is now included in the tarball, so the tarball is much larger than before and the build takes longer to complete) + ceph_ver_hack_sh adaptation (upstream dropped src/make_version script) + rocksdb: do not build with --march=native (bsc#1012553)- Update to version 11.0.2+git.1480105120.6b8e9e5: + Revert commit 8aee8db140bcbd1ffd2a7b571dbbade10bec9de3 because it conflicted with upstream + update to latest upstream kraken (11.0.2) - for details, see http://ceph.com/releases/kraken-11-0-2-released/- Update to version 11.0.0+git.1473684054.73e4b4a: + safe_io: Improve portability by replacing loff_t type usage with off_t. + mon: remove the redundant list swap in paxos commit_proposal + msg/EventPoll.h: add override to virtual functions + msg/EventKqueue.h: add override to virtual func + msg/EventSelect.h: add override to virtual funct + ceph-disk: Compatibility fixes for Python 3 + ceph-disk: Use true integer division in get_dev_size + ceph-disk: Fix bug in FileLock + ceph-disk: Allow ConfigObj to write in binary mode + ceph-disk: Use context manager with FileLock + ceph-disk: Use os.path.isabs instead of .startswith('/') + ceph-disk: Set space_symlink to the path, not file object + ceph-disk: PEP8ify + rgw: rgw file fix bug of rgw_lookup can not exact match file name + rgw: fix the wrong return value + rgw/rgw_coroutine: move WaitContext to .cc file + client: pass a mask parameter to path_walk + mds/mdstypes: add btime to inode + mds/Server: set btime=ctime on creation + mds/MDCache: set btime on system inodes + include/ceph_features: add FS_BTIME features + mds: pass btime in InodeStat MClientReply, if feature is present + client: keep btime in Inode and InodeStat + ceph: break up ll_getattr into two functions + client: move the device bitshift handling macros to Client.h + libcephfs: add a ceph_ll_getattrx and ceph_statx + libcephfs: add a test for "lazy" statx + mds/client: add btime to CapSnap and MClientCaps + mds/mdstypes: add change attribute to inode + mds/Server: set change_attr to 0 on creation + mds/MDCache: set change_attr to 0 on system_inodes + include/ceph_features: add FS_CHANGE_ATTR feature + mds: pass change_attr in InodeStat MClientReply, if feature is present + mds/client: keep change_attr in Inode, CapSnap and MClientCaps + mds: ensure that change_attr reflects metadata changes on clients that hold CAP_FILE_EXCL + mds/client: bump the change_attr at the appropriate time for files + libcephfs: return the change_attr in the statx.stx_version field + tests: add a ChangeAttr test + mds: make frag_info_t add_dirty() function take a pointer to touched_mtime + mds: add change_attr to frag_info_t + test: add test for change attribute of directories + cephfs: rename ceph_mds_request_head and _args with a _legacy postfix + MDS: allow the MDS to accept requests to set the btime + client: add the ability to set the btime + client: add a ceph_fstatx + client: extend the Btime test to cover fstatx as well + journal/JournalTrimmer: move C_RemoveSet struct + rbd_mirror/ImageSynceThrottler: move struct to .cc + libcephfs: add unmount function in cephfs.pyx + rgw: fix typo of "minite" to "minute" in rgw_lc.cc + rgw/rgw_lc.cc: fix sleep time according to the error message + crush: don't normalize input of crush_ln iteratively + crush: remove clutter + mds: remove max_mds config option + vstart.sh: add option to turn on multimds + rgw: right parenthesis is missing in radosgw-admin help message on caps + SQUASH: client: request AUTH caps on the directory during create if we'll need to check perms locally + SQUASH: Revert "mds: ensure that change_attr reflects metadata changes on clients that hold CAP_FILE_EXCL" + SQUASH: client: always take a change_attr update from the server if it's newer + SQUASH: mds/client: don't get clever with ceph_mds_request_head_legacy encode/decode + rgw/rgw_rados.h: remove unneeded class C_Tick + SQUASH: client: querying for stx_version field requires getting all shared caps + SQUASH: mds/client: add routines to copy to/from ceph_mds_request_head_legacy + client: properly set inode number of created inode in replay request + test/librbd/fsx: enable exclusive-lock feature in krbd mode + os/bluestore/BlueFS: fix async compaction txn + scripts/bdev_grep: parse bluefs style extents too + SQUASH: client: request all shared caps if ctime was requested + os/bluestore/BlueFS: factor unflushed log into runway calculation + osd/ReplicatedBackend: move classes to cc file + os/bluestore: honour allow-eio flag during read + CmakeLists.txt: use LIB_RESOLV instead of resolv. + osd/ReplicatedPG: move classes to .cc file + librbd: potential double-unwatch of watch handle upon error + cls/journal: add async client_update_state method + journal: allow to trim journal for "laggy" clients + librbd: optionally flag "laggy" journal clients disconnected + rbd: new command to disconnect journal client + rbd-mirror: decode_client_meta should return false on error + rbd-mirror: resync was possible only when image replayer start had succeeded + rbd-mirror: stop replay when client is disconnected + rbd-mirror: option to automatically resync after journal client disconnect + qa/workunits/cephtool/test.sh: fix omision of ceph-command + os/bluestore: use global compressor if possible + build/ops: fix /etc/os-release parsing in install-deps.sh + osd/OSD.cc: remove repeated searching of map + test/cephfs: add mount&&unmount test + mds: s/used_ions/used_inos/ + Add dependencies from ceph_smalliobenchrbd on cls_rbd, cls_journal, and cls_lock. + ceph_test_objectstore: add SyntheticMatrixSharding + ceph_test_objectstore: occasional umount/fsck/mount + ceph_test_objectstore: test shards for longer + crush/CrushCompiler.cc:884 bug fix: index out of range + Makfile: Fix rocksdb error when make dist + src/CMakeLists.txt: exclude parts not buildable on FreeBSD + src/pybind/CMakeLists.txt: conditionaly build cython tools + src/tools/CMakeLists.txt: conditionaly build ceph-client-debug + src/test/objectstore/CMakeLists.txt: conditionaly build tests + mds: trim null dentries proactively + cmake: include(SIMDExt) in src/CMakeLists.txt + mds: log path with CDir damage messages + hint in extent_alloc code + remove wrap argument and handle in wrappers + Hint argument in alloc_blocks + test case changes + os/bluestore: shard extent map + os/bluestore: make nid and blobid allocation less racy + os/bluestore: optimize compress_extent_map + os/bluestore: fix fsck used_block bitmap + os/bluestore: use block_size for allocator unit + os/bluestore: make blob_t unused helpers use logical length + os/bluestore: instrument big/small writes + os/bluestore: instrument transaction count + os/bluestore: instrument onode reshard events + os/bluestore: dump some stats after fsck + os/bluestore: assert shared blob cache cleared on split + remove autotools + test/objectstore/CMakeLists.txt: fix libaio conditional + buffer: clear append_buffer on clear() + os/bluestore: tunable prealloc size for ExtentMap inline_bl + os/bluestore: don't dirty onode if its size is already at desired offset + os/bluestore: remove never reachable asserts + os/bluestore: drop unnecessary separator between fields + os/bluestore: fix key+name sort wonkiness + os/bluestore: encode shard id in single byte + os/bluestore: small put_ref cleanup + os/bluestore: remove faulted debug hackery + os/bluestore: bits for unit tests + unittest_bluestore_types: resurrect blob and extent_map unit tests + os/bluestore/BlueFS: do not start racing async compaction + os/bluestore/BlueFS: fix Dir memory leak + buffer: implement buffer::list::reserve(n) + os/bluestore: do not waste memory on cached encoded blobs + qa/workunits/objectstore: fix test_fuse.sh + os/FuseStore: only flush if dirty + build: drop dryrun of autogen.sh from run-cmake-check.sh script + os/bluestore/BlueFS: For logs of rocksdb & bluefs only use directio. + os/bluestore: remove some copy-pastes + cmake: make py3 a nice-to-have + os/bluestore/BlueFS: only extend extent on same bdev + msg/AsyncConnection: add const to mem functions + msg/AsyncMessenger: add const to function + client/barrier: move C_Block_Sync class to .cc + osd/OSD.cc: remove unneeded searching of map + Set ARM_CRC_FLAGS from the CRC test rather than ARM_NEON_FLAGS + rpm: Moved ceph-client-debug from ceph-base to ceph-test package + rpm: Renamed bcond tests flag to make_check + rbd-nbd: fix kernel deadlock during teuthology testing + rbd-nbd: mask out-of-bounds IO errors caused by image shrink + librbd: invalidate cache before trimming image + librbd: ignore cache busy errors when shrinking an image + librbd: potential seg fault when blacklisting an image client + cmake: Use WITH_TESTS flag to guard the build of ceph-test scripts/binaries + rpm: Added ceph_test_package bcond flag to control the build of ceph-test package + deb: Moved ceph-client-debug from ceph-base to ceph-test package + ceph-objectstore-tool: add a way to split filestore directories offline + install-deps: exit non-zero when we cannot match distro + librbd: possible deadlock if cluster connection closed after image + osd/ReplicatedPG: remove class redeclaration + librbd: ignore partial refresh error when acquiring exclusive lock + osd/OSD.cc: remove unneeded returns- Update to version 11.0.0+git.1473424516.3b8b524: + Revert "ceph_disk.main: s/get_dev_size/get_free_partition_size/" + Revert "ceph_disk tests/test_prepare: s/get_dev_size/get_free_partition_size/" + Revert "ceph_disk tests/test_get_free_partition_size: New unit tests" + Revert "ceph_disk tox.ini: add tests/test_get_free_partition_size.py" + rpm: put distro conditionals around Source0 in spec file- Update to version 11.0.0+git.1473418476.095f67c: + ceph.spec.in: revert Source0 line to upstream version + ceph.spec.in: conditionalize %prep command- ceph.spec.in: enable cephfs_java build unconditionally - new (merged) commits from upstream master branch: + mailmap updates + rgw: fix the handling of rgw_swift_url_prefix. + rgw: ONLY improve code formatting around RGWRESTMgr. + rgw: add support for the crossdomain.xml resource of Swift API. + rgw: add support for the healthcheck feature of Swift API. + swift /info implementation. + rgw: settle /info implementation across other swift-at-root features. + compressor: isa-l extension for zlib plugin Signed-off-by: Alyona Kiseleva + mon: tear down standby replays on MDS rank stop + mon/MDSMonitor: move C_Updated class to .cc file + rgw_file: fix/update rgw_open flag arguments + rgw_file: fix/update rgw_create flag arguments + doc: remove btrfs contradiction + msg: make async backend default + msg/simple: wait dispatch_queue until all pipes closed + rgw_file: implement stateless write completion timer + rgw_file: add RGW_OPEN_FLAG_STATELESS as a synonym for V3 + rgw_file: log on write completion events at level 10 + rgw file: allow RGWLibFS::write_completion_interval_s to be set in conf + osdc/ObjectCacher: move C_ReadFinish, C_RetryRead + osdc/Journaler: move C_DelayFlush class to .cc + rgw: fix RGWAccessControlPolicy_SWIFT::create return value check error + librgw: add API version defines for librgw and rgw_file + make-dist/ceph.spec.in: Fix srpm build breakage. + ceph_timer: prefer using directive to typedef + rgw_file: explain semantics of RGWFileHandle::commit + compressor: Better arch ifdefs for isal code + mds/MDSTable: add const to member functions + os/bluestore: fix some #includes + vstart.sh: -b for bluestore + os/bluestore/bluestore_types: make blob_t get_chunk_size const + os/bluestore: use Blob const and non-const accessors + os/bluestore: avoid reencoding unchanged blobs + os/bluestore: decode blobs on demand + mds/SnapRealm.h: add const to member functions + os/bluestore/bluefs: avoid check "locked" field for newly created file + os/bluestore/bluefs: check against locked field during unlink + os/bluestore/bluefs: assert refs of file don't underflow + os/kstore: kill dead code + rgw: remove duplicated calls to getattr + debian: should dh_python3 python3-* not python-* + pybind: silence -Wsign-compare warning + test/ceph_test_msgr: fix -Wsign-compare warnings + test/unittest_alloc: fix -Wsign-compare warnings + librbd: API methods to directly acquire and release the exclusive lock + doc: add graphic for cap bit field + mds/MDCache.h: remove unneeded access specifier + librbd: skeleton implementation of client-side image cache + librbd: blocking parent IO completion no longer required + librbd: remove use of owner_lock on IO path + Revert "osdc: ObjectCacher flusher might needs additional locks" + librbd: support bufferlist payload for AioImageWrite + librbd: add internal support for scatter/gather IO + librbd: initial integration of ImageWriteback to AioImageRequest + librbd: consolidate IO clipping to reusable method + librbd: differentiate between image and object cache + librbd: C_ImageCacheRead bridge from Context to AioCompletion + librbd: integrate image cache hooks into IO path + common/Throttle.h: remove unneeded class + cmake: fix the tracing header dependencies + src/test/bench/CMakeLists.txt: RBD exclude + src/CMakeLists.txt: RBD|KVS|FUSE exclude + src/librbd/CMakeLists.txt: krbd and secret.c are LINUX dependant + src/os/CMakeLists.txt: AIO|FUSE exclude + src/test/CMakeLists.txt: RADOSGW|RBD exclude + src/test/common/CMakeLists.txt: BLKID exclude + install-deps.sh: initial distro detection based on /etc/os-release + ceph_test_objectstore: fix ObjectStore/StoreTest.BluestoreStatFSTest/2 on ssd + ceph_test_objectstore: disable statfs checks on available space + messages/MOSDMap: mark as enlighten OSDMap encoder + cmake: remove unused librados_api target + cmake: replace Findlttng-ust.cmake with FindLTTngUST.cmake + cmake: let librados_api_obj depend on librados-tp + os/bluestore: yet another statfs test fix + Revert "osd/ReplicatedPG: for sync-read it don't cacl l_osd_op_r_prepare_lat." + doc/release-notes: v0.94.9 + os/bluestore/bluefs: use map to track dirty files + os/bluestore/bluefs: update mtime of inode in unified path + os/bluestore/bluefs: drop redundant eof check for read_random() + os/CMakeLists.txt: undubble kv.cc usage. + test,pybind: silence -Wsign-compare warnings + test/perf_local: fix -Wmaybe-uninitialized warnings + os/bluestore: get rid off "isa-l" type in ZLibCompressor ctor + Allow compressor build without YASM + script/bdev_grep: update to use hex + os/bluestore: improve failed csum debug output + librbd: improve image state machine debug log messages + librbd: deadlock when replaying journal during image open + os/bluestore: end scope of std::hex properly + os/bluestore: don't over-gift if bluefs free is smaller than bluestore_bluefs_min + os/bluestore: use _setattr for SETATTR + os/bluestore: make object existence check robust + ceph_test_objectstore: assert umount succeeds + ceph_test_objectstore: clean up Rename test a bit + ceph_test_objectstore: fix TryMoveRename test + os/bluestore: add onode/buffer cache statistics + os/bluestore: end scope of std::hex properly + cmake: pass -DINTEL* to gf-complete cflags + os/bluestore: conditional checking label of bluefs devices + src/CMakeLists.txt: -Woverloaded-virtual is already included in -Wall on Clang + os/bluestore: don't overwrite type if it does already exist and at desired type + os/bluestore: trivial cleanups + os/bluestore: replace store with logger in Cache + os/bluestore: check iterator before using during fsck- pre_checkin.sh: add Source line for ceph-rpmlintrc - move Source line for ceph-rpmlintrc from ceph.spec to ceph-test.spec (see https://github.com/SUSE/ceph/pull/60 for rationale)- Update to version 11.0.0+git.1472455009.a17726c: + ceph.spec.in: drop ceph-rpmlintrc source line + ceph.spec.in: drop epoch prefixes- Update to version 11.0.0+git.1472384770.c9f3af8: + test/rgw: add --gateways-per-zone to test_multi.py + rgw: RGWDataSyncCR fails on errors from RGWListBucketIndexesCR + rgw: RGWCoroutinesManager::run returns status of last cr + os/bluestore: fix whitespace in bitset apply helper + cmake: do not link secret.c if not necessary + cmake: do not link against keyutils if not necessary + os/bluestore: fsck on mkfs (on by default) + os/bluestore: ensure block device size is a multiple of the block size + Revert "ceph.spec.in: don't try to package __pycache__ for SUSE" + rpm: force creation of Python 3 __pycache__ on SUSE + doc: add v0.94.7 changelog + doc: add v0.94.8 changelog + doc/releases: add v0.94.8 to timeline + doc/release-notes: fix v10.2.2 changelog link + unittest_bluefs: fix block device sizes + doc: do not list all major versions in get-packages.rst + doc: add missing PR to hammer 0.94.8 release notes + doc: release-notes.rst: move misplaced line + doc: fix two broken links in releases.rst + doc: add 11.0.0 to releases table- pre_checkin.sh: forward-port insert_line_before() function from filesystems:ceph:jewel/ceph version - README-ceph-test.txt: new file - ceph-test.spec: add ceph_ver_hack.sh as a source file- Update to version 11.0.0+git.1472202104.8999301: + rgw: add deadlock detection to RGWCoroutinesManager::run() + src/common/lockdep.cc Reduce logging noise if lockdep is not tested + osd: fix updating same_interval_since logic of project_pg_history() + osd: drop duplicated sched_scrub during tick() + osd: move methods which don't need osd_lock from tick into tick_without_osd_lock() + mon/PGMonitor: mark dump_object_stat_sum() as static + mon/PGMonitor: calc the %USED of pool using used/(used+avail) + rpm: proper packaging of udev directories + LTTng-UST disabled for openSUSE + ceph-disk: do not activate device that is not ready + osd: update reture type of get_pg_or_queue_for_pg() to PGRef + common/WPQ: add sanity check to avoid potential access violation + osd/osd_types: kill undefined_shard() method of pg_shard_t + release-notes.rst: draft 0.94.8 release notes + PG: introduce and maintain upset + mon/MonClient: should update sub_sent with sub_new + osd: set objecter.osdmap when starts + rgw: fix for assertion in RGWMetaSyncCR + PG: use upset rather than up for _update_calc_stats + rgw: do not try to encode or decode time_t + cls_rgw: fix the compiler warning + msg/async: fix compiler warnings + os/filestore: silence compiling warnings + test/rbd: silence compiling warnings + rgw: silence a compiling warning + msg/async/kqueue: avoid remove nonexist kqueue event + librbd: cache was not switching to writeback after first flush + mon/OSDMonitor: fix potential division-by-zero error + mon/OSDMonitor: get rid of snprintf when formatting output string + mon/OSDMonitor: avoid duplicated calls when determining osdmap boundary + osd/OSDMonitor: avoid duplicated assignment of oldest_map/newest_map + osd/OSDMonitor: drop redundant check of exists() + mon/PGMonitor: skip scrub checking if we can + mon/PGMonitor: drop redundant loading of dumpcontents + mon/PGMonitor: fix potential underflow + debian: replace SysV rbdmap with systemd service + os/bluestore: break down onode vs bnode_map size in log + os/bluestore/BlueFS: do direct io by default (not buffered) + os/bluestore/BlueFS: rename buffered_io option + os/bluestore: add multiple finishers to bluestore + os/bluestore: fix decoding hash of bnode + cmake: fix unmatched endforeach + debian: enable dh_python3 for python3 packages + debian: exclude python3* packages in dh_shlibdeps + debian: drop python-argparse dependency + os/bluestore: fix race condition during get_fs_usage() + os/bluestore: use bluefs_max_prefetch for log file prefetch + os/bluestore: use hex if we are running out of space + os/bluestore: fix assert + osd: bail out if transaction size overflows + os/filestore/FileJournal: bail out if transaction is too large + os/FuseStore: remove unneeded header file + os/Memstore.h: add override to virtual functions + os/MemStore: move OmapIteratorImpl to cc file + os/bluestore: include bluefs space in statfs result + common/config_opts: fix comment(radio -> ratio) + msg: kill unused macros + mon/OSDMonitor: add output field name of average/overload_utilization + test/librados: rados_connect() should succeed + ceph-osd-prestart.sh: check existence of OSD data directory + osd/ReplicatedPG:wipe off param op from generate_subop() + ceph-post-file: migrate to RSA SSH keys + ceph-post-file: Ignore keys offered by ssh-agent + os/Memstore: move PageSetObject class to .cc file + yasm-wrapper: dont echo the yasm command line + arch/arm.c: remove unnecessary variable read for simplicity + rpm: drop obsolete libs-compat metapackage + ceph.spec.in: drop trouble-making divider comments + rpm: do not unnecessarily spawn shells for scriptlets + cls_lock: support updating the lock cookie without releasing the lock + librbd: helper state machine to update lock cookie + librbd: store exclusive lock cookie instead of recalculating + librbd: exclusive lock now supports reacquiring a lost lock + librbd: helper state machine for asynchronous watch recovery + librbd: integrate asynchronous image rewatch state machine + librbd: image state machine now has hooks for lock requests + librbd: interlock image refresh and lock operations + librbd: remove unused refresh request logic + test/common/test_util.cc: FreeBSD does not have distro information + README.md: replace package build instructions with tarball instructions + doc: fix singleton example in Developer Guide + rgw: delete region map after upgrade to zonegroup map + rgw: fix period update --commit return error + cmake: use PERF_LOCAL_FLAGS only if defined + tests: populate /dev/disk/by-partuuid for scsi_debug + ceph.spec.in: don't try to package __pycache__ for SUSE + doc: fix wrong osdkeepalive name in mount.ceph manpage + rados-striper.sh: Use expect_failure and conditional stringmatching + Revert "ceph.spec.in: ppc64 build in Tumbleweed only" + jerasure: include generic objects in neon jerasure lib (like sse3/4)- pre_checkin.sh: fix package files path rewriting- _constraints: tweak values to pick up maximum number of OBS build workers- Update to version 11.0.0+git.1471969747.79ca12e: + cmake: fix declaration position of WITH_TESTS option- Update to version 11.0.0+git.1471959548.f013b97: + rpm: Renamed bcond tests flag to make_check + cmake: Use WITH_TESTS flag to guard the build of ceph-test scripts/binaries + rpm: Added ceph_test_package bcond flag to control the build of ceph-test package- Update to version 11.0.0+git.1471605408.9203335: + ceph.spec.in: don't try to package __pycache__- Update to version 11.0.0+git.1471601504.f312e7e: + test/libcephfs: add the necessary judgment + test/librados: add ASSERT_EQ & ASSERT_NE judgment + rgw: optimize the usage of string.find and some indents + rgw: patch manifest to handle explicit objs copy issue + rgw: adjust objs when copying obj with explicit_objs set + rgw: adjust manifest head object + rgw: fix the error return variable in log message + rgw: fix trimming object expirer's hints. + rgw: fix skipping some objects to delete by RadosGW's object expirer. + rgw: ONLY improve code formatting in rgw_object_expirer_core.{cc,h}. + os/bluestore: allow csum verification disable on read. + os/bluestore: add csum on/off test case + os/bluestore: add store statfs parameters to bluestore perf counters + os/bluestore: add perf counters for compress/decompress performance measurement + tools: fix the core dump when get the crushmap do not exist + librbd: request exclusive lock if current owner cannot execute op + src/global/pidfile.cc: Assign elements in structures individually + rgw: fixes for period puller + rgw: for the create_bucket api, if the input creation_time is zero, we should set it to 'now" + pybind: Rework rbd/setup.py for PyPI + pybind: Add BUILD_DOC env var to rbd/setup.py + doc: fix rbd map format in rbd manpage + ceph-disk: change ownership of init file to ceph:ceph + cmake: Also build Python bindings for Python 3 + pybind: Make ceph_volume_client's syntax compatible with Python 3 (just so it passes the bytecompilation step) + debian: Add packages for Python 3 bindings + rpm: Add packages for Python 3 bindings + os/bluestore/bluefs_types: fix extent operator<< + os/bluestore/BlueFS: do not op_file_update deleted files + os/bluestore: print bluefs_extents in hex + os/bluestore: do not track bluefs_extents via freelist + os/bluestore/BitMapAllocator: align to min_alloc_size on init_rm_free + rgw/doc: fix typo and indent. + mon/MonDBStore: fix assert which never fires + osd/OSDMonitor: count pg primed more precisely + doc: replace cluster name with cluster-name to avoid confusing + doc: fix typo maximum -> minimal + doc: fix command format + batch is_allocated bit checks + cmake: Move Python detection back outside of pybind + doc: format 2 now is the default image format + rgw: Rework of s3 v2 local authentication code. + rbd: bench io-size should not be larger than image size + doc/install: Use https:// for download.ceph.com + librbd: fix possible inconsistent state when disabling mirroring + os/bluestore/ExtentFreelistManager: move default create out of parent + librbd: new journal policy to disable initializing the journal + librbd: permit disabling journaling if in corrupt state + qa/workunits: support filtering cls_rbd unit test cases + os/bluestore/BlueFS: _should_compact_log + os/bluestore/BlueFS: _replay(false) to dump log file + mon/PGMonitor: move C_Stats struct to cc file + client: don't use special faked-up inode for /.. + client: add a testcase for "/.." handling + os/bluestore/BlueFS: add OP_JUMP + os/bluestore/BlueFS: allow log position to when doing op_jump + os/bluestore/BlueFS: move metadata dump (compaction) into a helper + os/bluestore/BlueFS: interface to get bluefs space usage + os/bluestore/BlueFS: init in header at decl + os/bluestore/BlueFS: assert we never extend log at flush + os/bluestore/BlueFS: use hex + os/bluestore/BlueFS: Add sync and async compaction + os/bluestore/BlueFS: Helper functions for the unit test framework + os/bluestore/BlueFS: unit tests for log compaction + os/bluestore/BlueFS: Cleanup unused interfaces + unittest_bluefs: make flush_3 test device larger + bluestore: initialize csum_order properly + librbd: fix possible memory leak when image open fails + script: improve ceph-release-notes regex + rbdmap: specify bash shell interpreter + doc: added rbdmap man page to RBD restructured index + librbd: always respond to "release lock" request if lock owner + rgw: fix radosgw daemon core when reopen logs + qa/workunits/rbd: demote/promote image on same cluster + rbd-mirror: include tag tid in bootstrap debug log messages + librbd: separate journal::TagData predecessor data into new struct + librbd: block RPC requests when demoting the image + librbd: normalize journal promotion/demotion events + rbd-mirror: demote/promote in same cluster results in split-brain + rbd-mirror: prevent syncing to non-primary image after failover + test: fixed unused function warnings in unittest_rbd_mirror + doc: remove the description of deleted options + msg/async/Stack: add abstract Stack + msg/async: add PosixStack support + msg/async/net_handler: let set_socket_options return value + msg/async/AsyncConnection: support NetworkStack api instead of posix + msg/async/Event: debug event address when dispatching and executing + msg/async/Event: remove event wakeup flag + msg/async/PosixStack: increase log level + msg/async/Stack: disable smart thread spawn now + common/ceph_context: add prefork/postfork wathcher support + msg/async/Stack: register fork watcher + msg/async: allow EventCenter::set_owner reentry + msg/async: readd set_priority call + msg/async/AsyncConnection: fix _conn_prefix racing when stopped + test_async_networkstack: add networkstack tests + msg/async/Event: remove global_centers assert + test_msgr: ensure wait for ms_dispatch executed + mon/OSDMonitor: add sanity check before setting use_gmt_hitset attribute + osd/OSDMonitor: drop redundant null check of max_failed_since + osd/OSDMonitor: drop redundant check of assert + mon/LogMonitor: remove "host" and "fsid" from handle_conf_change() + test: gcc 6.1.1 complains about missing include: . 4.8.3 does not complain about it + rgw: fix flush_read_list() error msg + cmake: Fix mismatched librgw VERSION / SOVERSION + cmake: Add -pie to CMAKE_EXE_LINKER_FLAGS + rgw_file: restore local definition of RGWLibFS gc interval + kv: delete store after pg destructor is called in OSD shutdown. + kv: fix iterator invalidation in memdb. + kv: fill 'm_key_value' after 'seek_to_first' or 'seek_to_last' + kv: fix iterator bug in prev + test/store_test: fix incorrect prompt given by stash callback + test/store_test: drop redundant transaction of callbacks + test/store_test: avoid dynamic allocation of trans + cmake: recompile erasure src for different variants + rgw ldap: protect rgw::from_base64 from non-base64 input + qa/workunits/rados/test_python.sh: Allow specifying Python executable (through an environment variable) + ceph.spec.in: specify local sources + ceph.spec.in: ppc64 build in Tumbleweed only + ceph.spec.in: add lowmem_builder_override + ceph.spec.in: add Prereq: permissions to radosgw package + ceph.spec.in: remove vim hints line + ceph.spec.in: remove all mentions of epoch + ceph_disk.main: s/get_dev_size/get_free_partition_size/ + ceph_disk tests/test_prepare: s/get_dev_size/get_free_partition_size/ + ceph_disk tests/test_get_free_partition_size: New unit tests + ceph_disk tox.ini: add tests/test_get_free_partition_size.py + ceph.spec.in: replace pwdutils dependency with shadow + Make systemd-tmpfiles create /var/run/ceph-radosgw at boot + rpm: fix ownership of logfiles in %pre + Revert "rbd: update default image features" + osd: munge cache-pin ops with data into writesame + ceph osd: add support for new op cmpext + rpm: make lowmem_builder code much smarter + rpm: add procps build dependency + rpm: modify optflags to make debuginfos less huge + Revert "ceph.spec.in: add lowmem_builder_override" + rpm: lean_debug_symbols bcond + rpm: use gcc manpage terminology for debug info bcond + Revert "Drop any systemd imposed process/thread limits" + Revert "systemd: Add systemd sandboxing to services." + rpm: be careful about build parallelism + rpm: divergent java, ocf conditional builds + rpm: fix _with_ocf + rpm: drop obsolete libs-compat metapackage + rpm: drop obsolete python-ceph-compat metapackage + ceph.spec.in: drop ceph-brag and ceph-post-file + ceph.spec.in: move cephfs-* fsck tools to ceph-base + ceph.spec.in: move ceph-dencoder to ceph-base + rpm: Moved ceph-client-debug from ceph-base to ceph-test package + rpm: add udev BuildRequires to provide /usr/lib/udev directory + rpm: Remove trailing whitespace in usermod command (SUSE)- Update to version 11.0.0+git.1470997027.9c9b8a5: + doc/radosgw: remove reference of purge-temp.rst + doc/radosgw: fix the table formatting + doc: silence sphinx warnings + global/signal_handler: use sig_str instead of sys_siglist + librados: use bufferlist instead of buffer::list + cmake: cleanup Findgperftools.cmake + cmake: cleanup Findleveldb.cmake + cmake: cleanup Findxio.cmake + rgw file: remove busy-wait in RGWLibFS::gc() + Lowered third example to keep PG count lower. + run-make-check.sh: pass args to do_cmake.sh + ceph.spec.in: specify local sources- Update to version 11.0.0+git.1470355272.6fed82a: + initial fork of SES5/bin/sh/bin/shgoat03 1609847347  !"#$%&'()*+,-./0123456789:;<=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZ[\]G_`aMcdef5hijk:;n=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZ]G`aMcd5:;=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZ]G`aMcd5:;=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZ]G`aMcd5:;=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZ#$]G'`aMcd-.50123:;6=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZUV]GY`aMcd_`5bcde:;h=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZ]G`aMcd5:;=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZ]G`aMcd5:;=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZ]G`aMcd5:;=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZ]G!`aMcd'(5*+,-:;0=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZOP]GS`aMcdYZ5\]^_:;b=>:@AB;DEFGHIJKLMNOPQRSTUVWXYZ]G`aMcd      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a=>:@AB;DEFGHIJKLMNtuvPxyz{|}~14.2.16.402+g7d47dbaf4d-lp151.2.31.1    !!""##$%%%%%%%&'''(((('))))'****'++++',,,,'----'....'////0000'12222133331111444415555516666617777'8888'9999'::::';;;;;;;;;;;;;'<<<<'====='>>>>'??????'@@@@'AAAA'BBBB'CCCC&&DEEEEDFFFFDGGGGDHHHHD&IIJKKKKJLLLLLJJJJIMMMMINOOOONNNNIPPPPIQRRRRQSSSSQTTTTQIUUUUIVWWWWVXXXXVYYYYVZZZZV[[[[[V\\\\V]]]]V^^^^I_````_aaaa_bbbb_cccc_dddd_eeee&ffggggffhhhhhiiiifjjjjjfkkkkffffffff&lmmmmlnnnnlloooopppplqqqql&rrssssrtttt&uvvvvuwwwwuxxxxxuyyyyuuu&z{{{{{z||||z}}}}z~~~~zzzzzzzzzzz&%%$$$$$$$$$$$$$$$$$$$$dashboard.coveragerc.editorconfig.pylintrcHACKING.rstREADME.rst__init__.pyawsauth.pycherrypy_backports.pycicheck_grafana_uids.pyconstraints.txtcontrollers__init__.pyauth.pycephfs.pycluster_configuration.pydocs.pyerasure_code_profile.pygrafana.pyhealth.pyhome.pyhost.pyiscsi.pylogging.pylogs.pymgr_modules.pymonitor.pynfsganesha.pyosd.pyperf_counters.pypool.pyprometheus.pyrbd.pyrbd_mirroring.pyrgw.pyrole.pysaml2.pysettings.pysummary.pytask.pyuser.pyexceptions.pyfrontend.babelrc.editorconfig.prettierignore.prettierrcangular.jsondistcs2.71d37bc76c6ab486a3cc.js3rdpartylicenses.txt6.6dc41b2a51837c1e641f.js7.6e52f1ac41062b3b98cb.js8.6d02ec1be937752e71ac.js9.e69f76e43c5f80c1d018.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.4b7236aee261d8cb28a3.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.60a83df801a46739562e.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.cssde-DE2.b3105be62239437c2123.js3rdpartylicenses.txt6.35de4f753c0e080ae734.js7.625a85a7bdb40e7f6811.js8.3720eb8746a9002d3907.js9.a817f3ce4539f6725b99.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.1eaa384dd0679e9ee345.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.e45bf00b82cfee693fff.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.cssen-US2.d3544230be5f4a8cc03f.js3rdpartylicenses.txt6.032880e1da763448397d.js7.9dadaa1a91a8ee8d1222.js8.d09d7b7d44ad469be562.js9.46c6f4deb8320d8976fa.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.3ea032f7228292d0fadd.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.dc438506f54ca6908897.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.csses-ES2.ffba0f2da23ae208ffea.js3rdpartylicenses.txt6.36c1f0a6928773b6ef2f.js7.bdaf9a1a8905a36de2bb.js8.1da94248867a1cf95cbc.js9.cb700e74776ad62edf09.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.a91746a616522d17ddd8.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.f8d639eac31054d06113.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.cssfr-FR2.e753bd38b7d9eff509a8.js3rdpartylicenses.txt6.bd833ceb744a39c0efd2.js7.9cd316cb863391d1acbc.js8.fbcc4d0ffe02ea687cfd.js9.0f08128d9279bef19e09.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.a004bb7e906adcb01982.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.5dfb7b4daac17c26ce8f.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.cssid-ID2.873d6783e37ddb283382.js3rdpartylicenses.txt6.0b0243da7de035b6a14c.js7.45f185efe1e4d9a23a8f.js8.bdb00a66bee2acf2845f.js9.e7f0ec109b7a29a27c9e.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.38b145de3e5f4f439537.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.221e271d936c6116f38a.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.cssit-IT2.025ec9e0f634923f24e8.js3rdpartylicenses.txt6.31764ba66b907b3906c3.js7.51d4c973f824f692c207.js8.c41fcd002d430dfb7844.js9.38a86ef75c1a26558a17.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.9ecb87ae8d3f57e8beb6.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.6a4ced6004d3c5f52145.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.cssja-JP2.a60c09bb3bcebec7fe93.js3rdpartylicenses.txt6.1cf58a73e6951cd193cb.js7.40d725669c26e17a8c12.js8.0535c50c166b57deb78b.js9.998d5a4cce517f111021.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.97d7d7f108c97bba33b0.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.9c0b218cd604f95f90e3.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.csspl-PL2.9857db4f41947c0fd2f0.js3rdpartylicenses.txt6.edbb60e344afec23353d.js7.ee7c5bb5404a7b72cabe.js8.df34d9ce170a89ec1cef.js9.cbc8c500090e0cf2a76b.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.eb33e7fc954a19c81877.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.d74163e2c466d9208a4b.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.csspt-BR2.0d625d8f9d4fc43fcade.js3rdpartylicenses.txt6.2d76b4ce8951b81b42ec.js7.788186d3647a488fed85.js8.d4155daddd2b4957a700.js9.351ab1009e37ff0d2838.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.c74f7251487ec9d4a035.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.9a6a111ddecab9ddd999.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.csszh-CN2.78c3ddb4d5aab053083b.js3rdpartylicenses.txt6.325592fb2eb28dd4a606.js7.d548dbafc8c2514e99d7.js8.58286d3f66115d2bb124.js9.e6cb8c534b3dda30992b.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.2825a3e737bf4c49ea01.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.0a95d6bc16f68c8dab56.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.csszh-TW2.3bb7185dcd4457420602.js3rdpartylicenses.txt6.bd93190c6100b5d8d4db.js7.d2ebdc181f58fefe6fee.js8.e97e0e9d72133c3277c5.js9.68d0a2c2a3b515efdbc0.jsCeph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.pngRaleway-Regular.580d0778ad254335be45.ttfassets1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgcommon.8a53d98b04768bd15706.jsfavicon.icoforkawesome-webfont.35e77a38ca9d85c4e897.eotforkawesome-webfont.3a9e014c2469ffa65a0e.woff2forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woffforkawesome-webfont.78dcc9c4999659b8026a.svgforkawesome-webfont.fc46f3dae03b2b2e1cee.ttfglyphicons-halflings-regular.448c34a56d699c29117a.woff2glyphicons-halflings-regular.89889688147bd7575d63.svgglyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttfglyphicons-halflings-regular.f4769f9bdb7466be6508.eotglyphicons-halflings-regular.fa2772327f55d8198301.woffindex.htmlmain.e2b11d4f13f6f5590556.jspolyfills.f31db31652a3fd9f4bca.jsprometheus_logo.074db273ef932a67d91b.svgruntime.e4d8597126c2c054a0c0.jsscripts.fc88ef4a23399c760d0b.jsstyles.8b34ba19f3a70f01fc22.csssuse_logo_login.35424d8d924fbd92fdc6.pngswagger-ui-bundle.jsswagger-ui.csse2eblockimages.e2e-spec.tsimages.po.tsiscsi.e2e-spec.tsiscsi.po.tsmirroring.e2e-spec.tsmirroring.po.tsclusterconfiguration.e2e-spec.tsconfiguration.po.tscrush-map.e2e-spec.tscrush-map.po.tshosts.e2e-spec.tshosts.po.tslogs.e2e-spec.tslogs.po.tsmgr-modules.e2e-spec.tsmgr-modules.po.tsmonitors.e2e-spec.tsmonitors.po.tsosds.e2e-spec.tsosds.po.tsfilesystemsfilesystems.e2e-spec.tsfilesystems.po.tshelper.po.tsnfsnfs.e2e-spec.tsnfs.po.tspoolspools.e2e-spec.tspools.po.tstsconfig.e2e.jsonenvironment.build.jshtml-linter.config.jsoni18n.config.jsonpackage-lock.jsonpackage.jsonprotractor.conf.jsproxy.conf.json.samplesrcappapp-routing.module.tsapp.component.htmlapp.component.scssapp.component.spec.tsapp.component.tsapp.module.tscephblockblock.module.tsiscsiiscsi-settingiscsi-setting.component.htmliscsi-setting.component.scssiscsi-setting.component.spec.tsiscsi-setting.component.tsiscsi-tabsiscsi-tabs.component.htmliscsi-tabs.component.scssiscsi-tabs.component.spec.tsiscsi-tabs.component.tsiscsi-target-detailsiscsi-target-details.component.htmliscsi-target-details.component.scssiscsi-target-details.component.spec.tsiscsi-target-details.component.tsiscsi-target-discovery-modaliscsi-target-discovery-modal.component.htmliscsi-target-discovery-modal.component.scssiscsi-target-discovery-modal.component.spec.tsiscsi-target-discovery-modal.component.tsiscsi-target-formiscsi-target-form.component.htmliscsi-target-form.component.scssiscsi-target-form.component.spec.tsiscsi-target-form.component.tsiscsi-target-image-settings-modaliscsi-target-image-settings-modal.component.htmliscsi-target-image-settings-modal.component.scssiscsi-target-image-settings-modal.component.spec.tsiscsi-target-image-settings-modal.component.tsiscsi-target-iqn-settings-modaliscsi-target-iqn-settings-modal.component.htmliscsi-target-iqn-settings-modal.component.scssiscsi-target-iqn-settings-modal.component.spec.tsiscsi-target-iqn-settings-modal.component.tsiscsi-target-listiscsi-target-list.component.htmliscsi-target-list.component.scssiscsi-target-list.component.spec.tsiscsi-target-list.component.tsiscsi.component.htmliscsi.component.scssiscsi.component.spec.tsiscsi.component.tsmirroringdaemon-listdaemon-list.component.htmldaemon-list.component.scssdaemon-list.component.spec.tsdaemon-list.component.tsimage-listimage-list.component.htmlimage-list.component.scssimage-list.component.spec.tsimage-list.component.tsmirror-health-color.pipe.spec.tsmirror-health-color.pipe.tsmirroring.module.tsoverviewoverview.component.htmloverview.component.scssoverview.component.spec.tsoverview.component.tspool-edit-mode-modalpool-edit-mode-modal.component.htmlpool-edit-mode-modal.component.scsspool-edit-mode-modal.component.spec.tspool-edit-mode-modal.component.tspool-edit-mode-response.model.tspool-edit-peer-modalpool-edit-peer-modal.component.htmlpool-edit-peer-modal.component.scsspool-edit-peer-modal.component.spec.tspool-edit-peer-modal.component.tspool-edit-peer-response.model.tspool-listpool-list.component.htmlpool-list.component.scsspool-list.component.spec.tspool-list.component.tsrbd-configuration-formrbd-configuration-form.component.htmlrbd-configuration-form.component.scssrbd-configuration-form.component.spec.tsrbd-configuration-form.component.tsrbd-configuration-listrbd-configuration-list.component.htmlrbd-configuration-list.component.scssrbd-configuration-list.component.spec.tsrbd-configuration-list.component.tsrbd-detailsrbd-details.component.htmlrbd-details.component.scssrbd-details.component.spec.tsrbd-details.component.tsrbd-formrbd-feature.interface.tsrbd-form-clone-request.model.tsrbd-form-copy-request.model.tsrbd-form-create-request.model.tsrbd-form-edit-request.model.tsrbd-form-mode.enum.tsrbd-form-response.model.tsrbd-form.component.htmlrbd-form.component.scssrbd-form.component.spec.tsrbd-form.component.tsrbd-form.model.tsrbd-parent.model.tsrbd-imagesrbd-images.component.htmlrbd-images.component.scssrbd-images.component.spec.tsrbd-images.component.tsrbd-listrbd-list.component.htmlrbd-list.component.scssrbd-list.component.spec.tsrbd-list.component.tsrbd-model.tsrbd-snapshot-formrbd-snapshot-form.component.htmlrbd-snapshot-form.component.scssrbd-snapshot-form.component.spec.tsrbd-snapshot-form.component.tsrbd-snapshot-listrbd-snapshot-actions.model.tsrbd-snapshot-list.component.htmlrbd-snapshot-list.component.scssrbd-snapshot-list.component.spec.tsrbd-snapshot-list.component.tsrbd-snapshot.model.tsrbd-trash-listrbd-trash-list.component.htmlrbd-trash-list.component.scssrbd-trash-list.component.spec.tsrbd-trash-list.component.tsrbd-trash-move-modalrbd-trash-move-modal.component.htmlrbd-trash-move-modal.component.scssrbd-trash-move-modal.component.spec.tsrbd-trash-move-modal.component.tsrbd-trash-purge-modalrbd-trash-purge-modal.component.htmlrbd-trash-purge-modal.component.scssrbd-trash-purge-modal.component.spec.tsrbd-trash-purge-modal.component.tsrbd-trash-restore-modalrbd-trash-restore-modal.component.htmlrbd-trash-restore-modal.component.scssrbd-trash-restore-modal.component.spec.tsrbd-trash-restore-modal.component.tsceph.module.tscephfscephfs-chartcephfs-chart.component.htmlcephfs-chart.component.scsscephfs-chart.component.spec.tscephfs-chart.component.tscephfs-clientscephfs-clients.component.htmlcephfs-clients.component.scsscephfs-clients.component.spec.tscephfs-clients.component.tscephfs-detailcephfs-detail.component.htmlcephfs-detail.component.scsscephfs-detail.component.spec.tscephfs-detail.component.tscephfs-listcephfs-list.component.htmlcephfs-list.component.scsscephfs-list.component.spec.tscephfs-list.component.tscephfs.module.tsclustercluster.module.tsconfigurationconfiguration-detailsconfiguration-details.component.htmlconfiguration-details.component.scssconfiguration-details.component.spec.tsconfiguration-details.component.tsconfiguration-formconfiguration-form-create-request.model.tsconfiguration-form.component.htmlconfiguration-form.component.scssconfiguration-form.component.spec.tsconfiguration-form.component.tsconfiguration.component.htmlconfiguration.component.scssconfiguration.component.spec.tsconfiguration.component.tscrushmapcrushmap.component.htmlcrushmap.component.scsscrushmap.component.spec.tscrushmap.component.tshostshost-detailshost-details.component.htmlhost-details.component.scsshost-details.component.spec.tshost-details.component.tshosts.component.htmlhosts.component.scsshosts.component.spec.tshosts.component.tslogslogs.component.htmllogs.component.scsslogs.component.spec.tslogs.component.tsmgr-modulesmgr-module-detailsmgr-module-details.component.htmlmgr-module-details.component.scssmgr-module-details.component.spec.tsmgr-module-details.component.tsmgr-module-formmgr-module-form.component.htmlmgr-module-form.component.scssmgr-module-form.component.spec.tsmgr-module-form.component.tsmgr-module-listmgr-module-list.component.htmlmgr-module-list.component.scssmgr-module-list.component.spec.tsmgr-module-list.component.tsmgr-modules.module.tsmonitormonitor.component.htmlmonitor.component.scssmonitor.component.spec.tsmonitor.component.tsosdosd-detailsosd-details.component.htmlosd-details.component.scssosd-details.component.spec.tsosd-details.component.tsosd-flags-modalosd-flags-modal.component.htmlosd-flags-modal.component.scssosd-flags-modal.component.spec.tsosd-flags-modal.component.tsosd-listosd-list.component.htmlosd-list.component.scssosd-list.component.spec.tsosd-list.component.tsosd-performance-histogramosd-performance-histogram.component.htmlosd-performance-histogram.component.scssosd-performance-histogram.component.spec.tsosd-performance-histogram.component.tsosd-pg-scrub-modalosd-pg-scrub-modal.component.htmlosd-pg-scrub-modal.component.scssosd-pg-scrub-modal.component.spec.tsosd-pg-scrub-modal.component.tsosd-pg-scrub-modal.options.tsosd-recv-speed-modalosd-recv-speed-modal.component.htmlosd-recv-speed-modal.component.scssosd-recv-speed-modal.component.spec.tsosd-recv-speed-modal.component.tsosd-reweight-modalosd-reweight-modal.component.htmlosd-reweight-modal.component.scssosd-reweight-modal.component.spec.tsosd-reweight-modal.component.tsosd-scrub-modalosd-scrub-modal.component.htmlosd-scrub-modal.component.scssosd-scrub-modal.component.spec.tsosd-scrub-modal.component.tsprometheusactive-alert-listactive-alert-list.component.htmlactive-alert-list.component.scssactive-alert-list.component.spec.tsactive-alert-list.component.tsmonitoring-listmonitoring-list.component.htmlmonitoring-list.component.scssmonitoring-list.component.spec.tsmonitoring-list.component.tsrules-listrules-list.component.htmlrules-list.component.scssrules-list.component.spec.tsrules-list.component.tssilence-formsilence-form.component.htmlsilence-form.component.scsssilence-form.component.spec.tssilence-form.component.tssilence-listsilence-list.component.htmlsilence-list.component.scsssilence-list.component.spec.tssilence-list.component.tssilence-matcher-modalsilence-matcher-modal.component.htmlsilence-matcher-modal.component.scsssilence-matcher-modal.component.spec.tssilence-matcher-modal.component.tsdashboarddashboarddashboard.module.tsdashboard.component.htmldashboard.component.scssdashboard.component.spec.tsdashboard.component.tshealthhealth-piehealth-pie-color.enum.tshealth-pie.component.htmlhealth-pie.component.scsshealth-pie.component.spec.tshealth-pie.component.tshealth.component.htmlhealth.component.scsshealth.component.spec.tshealth.component.tsinfo-cardinfo-card-popover.scssinfo-card.component.htmlinfo-card.component.scssinfo-card.component.spec.tsinfo-card.component.tsinfo-groupinfo-group.component.htmlinfo-group.component.scssinfo-group.component.spec.tsinfo-group.component.tsmds-summary.pipe.spec.tsmds-summary.pipe.tsmgr-summary.pipe.spec.tsmgr-summary.pipe.tsmon-summary.pipe.spec.tsmon-summary.pipe.tsosd-summary.pipe.spec.tsosd-summary.pipe.tsnfsnfs-501nfs-501.component.htmlnfs-501.component.scssnfs-501.component.spec.tsnfs-501.component.tsnfs-detailsnfs-details.component.htmlnfs-details.component.scssnfs-details.component.spec.tsnfs-details.component.tsnfs-formnfs-form-clientnfs-form-client.component.htmlnfs-form-client.component.scssnfs-form-client.component.spec.tsnfs-form-client.component.tsnfs-form.component.htmlnfs-form.component.scssnfs-form.component.spec.tsnfs-form.component.tsnfs-listnfs-list.component.htmlnfs-list.component.scssnfs-list.component.spec.tsnfs-list.component.tsnfs.module.tsperformance-counterperformance-counterperformance-counter.module.tsperformance-counter.component.htmlperformance-counter.component.scssperformance-counter.component.spec.tsperformance-counter.component.tstable-performance-countertable-performance-counter.component.htmltable-performance-counter.component.scsstable-performance-counter.component.spec.tstable-performance-counter.component.tspoolerasure-code-profile-formerasure-code-profile-form.component.htmlerasure-code-profile-form.component.scsserasure-code-profile-form.component.spec.tserasure-code-profile-form.component.tspool-detailspool-details.component.htmlpool-details.component.scsspool-details.component.spec.tspool-details.component.tspool-formpool-form-data.tspool-form.component.htmlpool-form.component.scsspool-form.component.spec.tspool-form.component.tspool-listpool-list.component.htmlpool-list.component.scsspool-list.component.spec.tspool-list.component.tspool-stat.tspool.module.tspool.tsrgwmodelsrgw-user-capabilities.tsrgw-user-capability.tsrgw-user-s3-key.tsrgw-user-subuser.tsrgw-user-swift-key.tsrgw-501rgw-501.component.htmlrgw-501.component.scssrgw-501.component.spec.tsrgw-501.component.tsrgw-bucket-detailsrgw-bucket-details.component.htmlrgw-bucket-details.component.scssrgw-bucket-details.component.spec.tsrgw-bucket-details.component.tsrgw-bucket-formrgw-bucket-form.component.htmlrgw-bucket-form.component.scssrgw-bucket-form.component.spec.tsrgw-bucket-form.component.tsrgw-bucket-listrgw-bucket-list.component.htmlrgw-bucket-list.component.scssrgw-bucket-list.component.spec.tsrgw-bucket-list.component.tsrgw-daemon-detailsrgw-daemon-details.component.htmlrgw-daemon-details.component.scssrgw-daemon-details.component.spec.tsrgw-daemon-details.component.tsrgw-daemon-listrgw-daemon-list.component.htmlrgw-daemon-list.component.scssrgw-daemon-list.component.spec.tsrgw-daemon-list.component.tsrgw-user-capability-modalrgw-user-capability-modal.component.htmlrgw-user-capability-modal.component.scssrgw-user-capability-modal.component.spec.tsrgw-user-capability-modal.component.tsrgw-user-detailsrgw-user-details.component.htmlrgw-user-details.component.scssrgw-user-details.component.spec.tsrgw-user-details.component.tsrgw-user-formrgw-user-form.component.htmlrgw-user-form.component.scssrgw-user-form.component.spec.tsrgw-user-form.component.tsrgw-user-listrgw-user-list.component.htmlrgw-user-list.component.scssrgw-user-list.component.spec.tsrgw-user-list.component.tsrgw-user-s3-key-modalrgw-user-s3-key-modal.component.htmlrgw-user-s3-key-modal.component.scssrgw-user-s3-key-modal.component.spec.tsrgw-user-s3-key-modal.component.tsrgw-user-subuser-modalrgw-user-subuser-modal.component.htmlrgw-user-subuser-modal.component.scssrgw-user-subuser-modal.component.spec.tsrgw-user-subuser-modal.component.tsrgw-user-swift-key-modalrgw-user-swift-key-modal.component.htmlrgw-user-swift-key-modal.component.scssrgw-user-swift-key-modal.component.spec.tsrgw-user-swift-key-modal.component.tsrgw.module.tssharedceph-shared.module.tspg-category.model.tspg-category.service.spec.tspg-category.service.tscoreauthauth.module.tsloginlogin.component.brand.htmllogin.component.htmllogin.component.scsslogin.component.spec.tslogin.component.tsrole-detailsrole-details.component.htmlrole-details.component.scssrole-details.component.spec.tsrole-details.component.tsrole-formrole-form-mode.enum.tsrole-form.component.htmlrole-form.component.scssrole-form.component.spec.tsrole-form.component.tsrole-form.model.tsrole-listrole-list.component.htmlrole-list.component.scssrole-list.component.spec.tsrole-list.component.tsssosso-not-foundsso-not-found.component.htmlsso-not-found.component.scsssso-not-found.component.spec.tssso-not-found.component.tsuser-formuser-form-mode.enum.tsuser-form-role.model.tsuser-form.component.htmluser-form.component.scssuser-form.component.spec.tsuser-form.component.tsuser-form.model.tsuser-listuser-list.component.htmluser-list.component.scssuser-list.component.spec.tsuser-list.component.tsuser-tabsuser-tabs.component.htmluser-tabs.component.scssuser-tabs.component.spec.tsuser-tabs.component.tscore.module.tsforbiddenforbidden.component.htmlforbidden.component.scssforbidden.component.spec.tsforbidden.component.tsnavigationaboutabout.component.brand.htmlabout.component.htmlabout.component.scssabout.component.spec.tsabout.component.tsadministrationadministration.component.htmladministration.component.scssadministration.component.spec.tsadministration.component.tsbreadcrumbsbreadcrumbs.component.htmlbreadcrumbs.component.scssbreadcrumbs.component.spec.tsbreadcrumbs.component.tsdashboard-helpdashboard-help.component.htmldashboard-help.component.scssdashboard-help.component.spec.tsdashboard-help.component.tsidentityidentity.component.htmlidentity.component.scssidentity.component.spec.tsidentity.component.tsnavigationnavigation.module.tsnavigation.component.brand.htmlnavigation.component.htmlnavigation.component.scssnavigation.component.spec.tsnavigation.component.tsnotificationsnotifications.component.htmlnotifications.component.scssnotifications.component.spec.tsnotifications.component.tstask-managertask-manager.component.htmltask-manager.component.scsstask-manager.component.spec.tstask-manager.component.tsnot-foundnot-found.component.htmlnot-found.component.scssnot-found.component.spec.tsnot-found.component.tssharedapiapi.module.tsauth.service.spec.tsauth.service.tscephfs.service.spec.tscephfs.service.tsconfiguration.service.spec.tsconfiguration.service.tserasure-code-profile.service.spec.tserasure-code-profile.service.tshealth.service.spec.tshealth.service.tshost.service.spec.tshost.service.tsiscsi.service.spec.tsiscsi.service.tslogging.service.spec.tslogging.service.tslogs.service.spec.tslogs.service.tsmgr-module.service.spec.tsmgr-module.service.tsmonitor.service.spec.tsmonitor.service.tsnfs.service.spec.tsnfs.service.tsosd.service.spec.tsosd.service.tsperformance-counter.service.spec.tsperformance-counter.service.tspool.service.spec.tspool.service.tsprometheus.service.spec.tsprometheus.service.tsrbd-mirroring.service.spec.tsrbd-mirroring.service.tsrbd.model.tsrbd.service.spec.tsrbd.service.tsrgw-bucket.service.spec.tsrgw-bucket.service.tsrgw-daemon.service.spec.tsrgw-daemon.service.tsrgw-user.service.spec.tsrgw-user.service.tsrole.service.spec.tsrole.service.tsscope.service.spec.tsscope.service.tssettings.service.spec.tssettings.service.tsuser.service.spec.tsuser.service.tscomponentsback-buttonback-button.component.htmlback-button.component.scssback-button.component.spec.tsback-button.component.tscomponents.module.tsconfig-optionconfig-option.component.htmlconfig-option.component.scssconfig-option.component.spec.tsconfig-option.component.tsconfig-option.model.tsconfig-option.types.spec.tsconfig-option.types.tsconfirmation-modalconfirmation-modal.component.htmlconfirmation-modal.component.scssconfirmation-modal.component.spec.tsconfirmation-modal.component.tscritical-confirmation-modalcritical-confirmation-modal.component.htmlcritical-confirmation-modal.component.scsscritical-confirmation-modal.component.spec.tscritical-confirmation-modal.component.tserror-panelerror-panel.component.htmlerror-panel.component.scsserror-panel.component.spec.tserror-panel.component.tsgrafanagrafana.component.htmlgrafana.component.scssgrafana.component.spec.tsgrafana.component.tshelperhelper.component.htmlhelper.component.scsshelper.component.spec.tshelper.component.tsinfo-panelinfo-panel.component.htmlinfo-panel.component.scssinfo-panel.component.spec.tsinfo-panel.component.tslanguage-selectorlanguage-selector.component.htmllanguage-selector.component.scsslanguage-selector.component.spec.tslanguage-selector.component.tssupported-languages.enum.tsloading-panelloading-panel.component.htmlloading-panel.component.scssloading-panel.component.spec.tsloading-panel.component.tsmodalmodal.component.htmlmodal.component.scssmodal.component.spec.tsmodal.component.tsrefresh-selectorrefresh-selector.component.htmlrefresh-selector.component.scssrefresh-selector.component.spec.tsrefresh-selector.component.tsselectselect-badgesselect-badges.component.htmlselect-badges.component.scssselect-badges.component.spec.tsselect-badges.component.tsselect-messages.model.tsselect-option.model.tsselect.component.htmlselect.component.scssselect.component.spec.tsselect.component.tssparklinesparkline.component.htmlsparkline.component.scsssparkline.component.spec.tssparkline.component.tssubmit-buttonsubmit-button.component.htmlsubmit-button.component.scsssubmit-button.component.spec.tssubmit-button.component.tsusage-barusage-bar.component.htmlusage-bar.component.scssusage-bar.component.spec.tsusage-bar.component.tsview-cacheview-cache.component.htmlview-cache.component.scssview-cache.component.spec.tsview-cache.component.tswarning-panelwarning-panel.component.htmlwarning-panel.component.scsswarning-panel.component.spec.tswarning-panel.component.tsconstantsapp.constants.tsdatatabledatatable.module.tstabletable-actionstable-actions.component.htmltable-actions.component.scsstable-actions.component.spec.tstable-actions.component.tstable-key-valuetable-key-value.component.htmltable-key-value.component.scsstable-key-value.component.spec.tstable-key-value.component.tstable.component.htmltable.component.scsstable.component.spec.tstable.component.tsdecoratorscd-encode.spec.tscd-encode.tsdirectivesautofocus.directive.spec.tsautofocus.directive.tscopy2clipboard-button.directive.spec.tscopy2clipboard-button.directive.tsdimless-binary-per-second.directive.spec.tsdimless-binary-per-second.directive.tsdimless-binary.directive.spec.tsdimless-binary.directive.tsdirectives.module.tsform-input-disable.directive.spec.tsform-input-disable.directive.tsform-scope.directive.spec.tsform-scope.directive.tsiops.directive.spec.tsiops.directive.tsmilliseconds.directive.spec.tsmilliseconds.directive.tspassword-button.directive.spec.tspassword-button.directive.tstrim.directive.spec.tstrim.directive.tsenumcell-template.enum.tscomponents.enum.tsicons.enum.tsnotification-type.enum.tsunix_errno.enum.tsview-cache-status.enum.tsformscd-form-builder.spec.tscd-form-builder.tscd-form-group.spec.tscd-form-group.tscd-validators.spec.tscd-validators.tsmodelsalertmanager-silence.tsbreadcrumbs.tscd-notification.spec.tscd-notification.tscd-table-action.tscd-table-column.tscd-table-fetch-data-context.tscd-table-selection.tscd-user-config.tschart-tooltip.tsconfiguration.tscredentials.tscrush-rule.tscrush-step.tserasure-code-profile.tsexecuting-task.tsfinished-task.tslogin-response.tspermission.spec.tspermissions.tspool-form-info.tsprometheus-alerts.tstask-exception.tstask.tspipesboolean-text.pipe.spec.tsboolean-text.pipe.tscd-date.pipe.spec.tscd-date.pipe.tsceph-release-name.pipe.spec.tsceph-release-name.pipe.tsceph-short-version.pipe.spec.tsceph-short-version.pipe.tsdimless-binary-per-second.pipe.tsdimless-binary.pipe.spec.tsdimless-binary.pipe.tsdimless.pipe.spec.tsdimless.pipe.tsduration.pipe.spec.tsduration.pipe.tsempty.pipe.spec.tsempty.pipe.tsencode-uri.pipe.spec.tsencode-uri.pipe.tsfilter.pipe.spec.tsfilter.pipe.tshealth-color.pipe.spec.tshealth-color.pipe.tsiops.pipe.spec.tsiops.pipe.tsiscsi-backstore.pipe.spec.tsiscsi-backstore.pipe.tslist.pipe.spec.tslist.pipe.tslog-priority.pipe.spec.tslog-priority.pipe.tsmap.pipe.spec.tsmap.pipe.tsmilliseconds.pipe.spec.tsmilliseconds.pipe.tsnot-available.pipe.spec.tsnot-available.pipe.tsordinal.pipe.spec.tsordinal.pipe.tspipes.module.tsrbd-configuration-source.pipe.spec.tsrbd-configuration-source.pipe.tsrelative-date.pipe.spec.tsrelative-date.pipe.tsround.pipe.spec.tsround.pipe.tsupper-first.pipe.spec.tsupper-first.pipe.tsservicesapi-interceptor.service.spec.tsapi-interceptor.service.tsauth-guard.service.spec.tsauth-guard.service.tsauth-storage.service.spec.tsauth-storage.service.tsfeature-toggles-guard.service.spec.tsfeature-toggles-guard.service.tsfeature-toggles.service.spec.tsfeature-toggles.service.tsformatter.service.spec.tsformatter.service.tsjs-error-handler.service.tslanguage.service.spec.tslanguage.service.tsmodule-status-guard.service.spec.tsmodule-status-guard.service.tsnotification.service.spec.tsnotification.service.tsprometheus-alert-formatter.spec.tsprometheus-alert-formatter.tsprometheus-alert.service.spec.tsprometheus-alert.service.tsprometheus-notification.service.spec.tsprometheus-notification.service.tsprometheus-silence-matcher.service.spec.tsprometheus-silence-matcher.service.tsrbd-configuration.service.spec.tsrbd-configuration.service.tsrefresh-interval.service.spec.tsrefresh-interval.service.tssummary.service.spec.tssummary.service.tstask-list.service.spec.tstask-list.service.tstask-manager.service.spec.tstask-manager.service.tstask-message.service.spec.tstask-message.service.tstask-wrapper.service.spec.tstask-wrapper.service.tstime-diff.service.spec.tstime-diff.service.tsurl-builder.service.spec.tsurl-builder.service.tsshared.module.tsassets.gitkeep1280px-Mimic_Octopus2.jpg1280px-Nautilus_Octopus.jpgCeph_Logo_Stacked_RGB_120411_fa_228x228.pngCeph_Logo_Stacked_RGB_120411_fa_348x348.pngCeph_Logo_Stacked_RGB_White_120411_fa_256x256.pngCeph_Logo_Standard_RGB_White_120411_fa.pngRaleway-Regular.ttfloading.giflogo-mini.pngnotification-icons.pngprometheus_logo.svgsuse_brand_bright.pngsuse_favicon.pngsuse_logo.pngsuse_logo.svgsuse_logo_footer.pngsuse_logo_login.pngsuse_logo_login.svgdefaults.scssenvironmentsenvironment.tpl.tsfavicon.icoindex.brand.htmlindex.htmljestGlobalMocks.tslocalemessages.cs.xlfmessages.de-DE.xlfmessages.es-ES.xlfmessages.fr-FR.xlfmessages.id-ID.xlfmessages.it-IT.xlfmessages.ja-JP.xlfmessages.ko-KR.xlfmessages.pl-PL.xlfmessages.pt-BR.xlfmessages.zh-CN.xlfmessages.zh-TW.xlfmain.tspolyfills.tssetupJest.tsstylesstyles.scsschart-tooltip.scsspopover.scsstestingactivated-route-stub.tsunit-test-helper.tstsconfig.app.jsontsconfig.spec.jsontypings.d.tsunit-test-configuration.ts.samplevendor.overrides.scssvendor.variables.scsstsconfig.jsontslint.jsongrafana.pymodule.pyplugins__init__.pydebug.pyfeature_toggles.pyinterfaces.pylru_cache.pypluggy.pyplugin.pyttl_cache.pyrequirements-py27.txtrequirements-py3.txtrequirements.txtrest_client.pyrun-backend-api-request.shrun-backend-api-tests.shrun-backend-rook-api-request.shrun-frontend-e2e-tests.shrun-frontend-unittests.shrun-tox.shsecurity.pyservices__init__.pyaccess_control.pyauth.pyceph_service.pycephfs.pycephx.pyexception.pyganesha.pyiscsi_cli.pyiscsi_client.pyiscsi_config.pyorchestrator.pyrbd.pyrgw_client.pysso.pytcmu_service.pysettings.pytests__init__.pyhelper.pytest_access_control.pytest_api_auditing.pytest_ceph_service.pytest_cephfs.pytest_controllers.pytest_docs.pytest_erasure_code_profile.pytest_exceptions.pytest_feature_toggles.pytest_ganesha.pytest_grafana.pytest_home.pytest_iscsi.pytest_notification.pytest_osd.pytest_plugin_debug.pytest_pool.pytest_prometheus.pytest_rbd_mirroring.pytest_rbd_service.pytest_rest_client.pytest_rest_tasks.pytest_rgw.pytest_rgw_client.pytest_settings.pytest_sso.pytest_task.pytest_tools.pytools.pytox.ini/usr/share/ceph/mgr//usr/share/ceph/mgr/dashboard//usr/share/ceph/mgr/dashboard/ci//usr/share/ceph/mgr/dashboard/controllers//usr/share/ceph/mgr/dashboard/frontend//usr/share/ceph/mgr/dashboard/frontend/dist//usr/share/ceph/mgr/dashboard/frontend/dist/cs//usr/share/ceph/mgr/dashboard/frontend/dist/cs/assets//usr/share/ceph/mgr/dashboard/frontend/dist/de-DE//usr/share/ceph/mgr/dashboard/frontend/dist/de-DE/assets//usr/share/ceph/mgr/dashboard/frontend/dist/en-US//usr/share/ceph/mgr/dashboard/frontend/dist/en-US/assets//usr/share/ceph/mgr/dashboard/frontend/dist/es-ES//usr/share/ceph/mgr/dashboard/frontend/dist/es-ES/assets//usr/share/ceph/mgr/dashboard/frontend/dist/fr-FR//usr/share/ceph/mgr/dashboard/frontend/dist/fr-FR/assets//usr/share/ceph/mgr/dashboard/frontend/dist/id-ID//usr/share/ceph/mgr/dashboard/frontend/dist/id-ID/assets//usr/share/ceph/mgr/dashboard/frontend/dist/it-IT//usr/share/ceph/mgr/dashboard/frontend/dist/it-IT/assets//usr/share/ceph/mgr/dashboard/frontend/dist/ja-JP//usr/share/ceph/mgr/dashboard/frontend/dist/ja-JP/assets//usr/share/ceph/mgr/dashboard/frontend/dist/pl-PL//usr/share/ceph/mgr/dashboard/frontend/dist/pl-PL/assets//usr/share/ceph/mgr/dashboard/frontend/dist/pt-BR//usr/share/ceph/mgr/dashboard/frontend/dist/pt-BR/assets//usr/share/ceph/mgr/dashboard/frontend/dist/zh-CN//usr/share/ceph/mgr/dashboard/frontend/dist/zh-CN/assets//usr/share/ceph/mgr/dashboard/frontend/dist/zh-TW//usr/share/ceph/mgr/dashboard/frontend/dist/zh-TW/assets//usr/share/ceph/mgr/dashboard/frontend/e2e//usr/share/ceph/mgr/dashboard/frontend/e2e/block//usr/share/ceph/mgr/dashboard/frontend/e2e/cluster//usr/share/ceph/mgr/dashboard/frontend/e2e/filesystems//usr/share/ceph/mgr/dashboard/frontend/e2e/nfs//usr/share/ceph/mgr/dashboard/frontend/e2e/pools//usr/share/ceph/mgr/dashboard/frontend/src//usr/share/ceph/mgr/dashboard/frontend/src/app//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/iscsi-tabs//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-discovery-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-image-settings-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-iqn-settings-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/iscsi//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/mirroring//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/mirroring/daemon-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/mirroring/image-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/mirroring/overview//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-edit-mode-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-edit-peer-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-configuration-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-configuration-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-images//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-snapshot-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-snapshot-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-move-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-purge-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-restore-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cephfs//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-chart//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-clients//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-detail//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/configuration//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/configuration/configuration-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/configuration/configuration-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/crushmap//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/hosts//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/host-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/logs//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/mgr-modules//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/mgr-modules/mgr-module-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/mgr-modules/mgr-module-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/mgr-modules/mgr-module-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/monitor//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/osd//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-flags-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-performance-histogram//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-pg-scrub-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-recv-speed-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-reweight-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-scrub-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/active-alert-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/monitoring-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/rules-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/silence-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/silence-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/silence-matcher-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/dashboard//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/dashboard/dashboard//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/dashboard/health-pie//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/dashboard/health//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/dashboard/info-card//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/dashboard/info-group//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/nfs//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-501//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form-client//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/performance-counter//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/performance-counter/performance-counter//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/performance-counter/table-performance-counter//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/pool//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/pool/erasure-code-profile-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/pool/pool-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/pool/pool-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/pool/pool-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/models//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-501//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-daemon-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-daemon-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-capability-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-details//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-list//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-s3-key-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-subuser-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-swift-key-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/ceph/shared//usr/share/ceph/mgr/dashboard/frontend/src/app/core//usr/share/ceph/mgr/dashboard/frontend/src/app/core/auth//usr/share/ceph/mgr/dashboard/frontend/src/app/core/auth/login//usr/share/ceph/mgr/dashboard/frontend/src/app/core/auth/role-details//usr/share/ceph/mgr/dashboard/frontend/src/app/core/auth/role-form//usr/share/ceph/mgr/dashboard/frontend/src/app/core/auth/role-list//usr/share/ceph/mgr/dashboard/frontend/src/app/core/auth/sso//usr/share/ceph/mgr/dashboard/frontend/src/app/core/auth/sso/sso-not-found//usr/share/ceph/mgr/dashboard/frontend/src/app/core/auth/user-form//usr/share/ceph/mgr/dashboard/frontend/src/app/core/auth/user-list//usr/share/ceph/mgr/dashboard/frontend/src/app/core/auth/user-tabs//usr/share/ceph/mgr/dashboard/frontend/src/app/core/forbidden//usr/share/ceph/mgr/dashboard/frontend/src/app/core/navigation//usr/share/ceph/mgr/dashboard/frontend/src/app/core/navigation/about//usr/share/ceph/mgr/dashboard/frontend/src/app/core/navigation/administration//usr/share/ceph/mgr/dashboard/frontend/src/app/core/navigation/breadcrumbs//usr/share/ceph/mgr/dashboard/frontend/src/app/core/navigation/dashboard-help//usr/share/ceph/mgr/dashboard/frontend/src/app/core/navigation/identity//usr/share/ceph/mgr/dashboard/frontend/src/app/core/navigation/navigation//usr/share/ceph/mgr/dashboard/frontend/src/app/core/navigation/notifications//usr/share/ceph/mgr/dashboard/frontend/src/app/core/navigation/task-manager//usr/share/ceph/mgr/dashboard/frontend/src/app/core/not-found//usr/share/ceph/mgr/dashboard/frontend/src/app/shared//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/api//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/back-button//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/config-option//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/confirmation-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/critical-confirmation-modal//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/error-panel//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/grafana//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/helper//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/info-panel//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/language-selector//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/loading-panel//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/modal//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/refresh-selector//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/select-badges//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/select//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/sparkline//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/submit-button//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/usage-bar//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/view-cache//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/components/warning-panel//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/constants//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/datatable//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/datatable/table-actions//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/datatable/table-key-value//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/datatable/table//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/decorators//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/directives//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/enum//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/forms//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/models//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/pipes//usr/share/ceph/mgr/dashboard/frontend/src/app/shared/services//usr/share/ceph/mgr/dashboard/frontend/src/assets//usr/share/ceph/mgr/dashboard/frontend/src/environments//usr/share/ceph/mgr/dashboard/frontend/src/locale//usr/share/ceph/mgr/dashboard/frontend/src/styles//usr/share/ceph/mgr/dashboard/frontend/src/testing//usr/share/ceph/mgr/dashboard/plugins//usr/share/ceph/mgr/dashboard/services//usr/share/ceph/mgr/dashboard/tests/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.opensuse.org/openSUSE:Maintenance:15476/openSUSE_Leap_15.1_Update/2295e0d44047bf6fd7a9826b992f652f-ceph.openSUSE_Leap_15.1_Updatedrpmxz5x86_64-suse-linux                                      ! !!  "        " !   !     " !# #" !   !  "  " ! !    "  ! ! "$"  ! !     !" "!    ! " ! ! ! ! %!&!# "! #   #  !!"""  #""" ' " "  " !######""##    ""''''''''''''$((((((directoryASCII textPython script, ASCII text executablePython script, UTF-8 Unicode text executableASCII text, with very long lines, with no line terminatorsASCII text, with very long linesPNG image data, 228 x 228, 8-bit/color RGBA, non-interlacedTrueType Font data, digitally signed, 17 tables, 1st "DSIG", 22 names, Macintosh, Copyright (c) 2010 - 2013, Matt McInerney (matt@pixelspread.com), Pablo Impallari (impallari@gmJPEG image data, JFIF standard 1.01, resolution (DPI), density 180x180, segment length 16, comment: "File source: //commons.wikimedia.org/wiki/File:Mimic_Octopus2.jpg", baseline, precision 8, 1280x957, frames 3JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 1280x854, frames 3PNG image data, 348 x 348, 8-bit/color RGBA, non-interlacedPNG image data, 256 x 256, 8-bit/color RGBA, non-interlacedPNG image data, 246 x 67, 8-bit/color RGBA, non-interlacedGIF image data, version 89a, 64 x 64PNG image data, 50 x 49, 8-bit/color RGBA, non-interlacedPNG image data, 144 x 36, 8-bit/color RGBA, non-interlacedSVG Scalable Vector Graphics imagePNG image data, 324 x 25, 8-bit/color RGBA, non-interlacedPNG image data, 32 x 32, 8-bit/color RGBA, non-interlacedPNG image data, 181 x 101, 8-bit/color RGBA, non-interlacedPNG image data, 70 x 33, 8-bit/color RGBA, non-interlacedPNG image data, 251 x 128, 8-bit/color RGBA, non-interlacedWeb Open Font Format (Version 2), TrueType, length 91624, version 1.0Web Open Font Format, TrueType, length 115148, version 0.0TrueType Font data, 13 tables, 1st "FFTM", 14 names, MacintoshWeb Open Font Format (Version 2), TrueType, length 18028, version 1.589TrueType Font data, 15 tables, 1st "FFTM", 16 names, Macintosh, type 19 string, www.glyphicons.comWeb Open Font Format, TrueType, length 23424, version 1.0HTML document, ASCII text, with very long linesJava source, ASCII textASCII text, with CRLF line terminatorsemptyexported SGML document, ASCII textHTML document, ASCII textC++ source, ASCII textassembler source, ASCII textexported SGML document, UTF-8 Unicode text, with CRLF line terminatorstroff or preprocessor input, ASCII textUTF-8 Unicode textBourne-Again shell script, ASCII text executablev+XWB,G\iutf-8fa90fb353009a120e0db53ff41a18971b85b62288efdf79609afbeed49ad2cc3?7zXZ !t/ྎ+]"k%D5vɀXAG vGɮH6&Y3t) 2:雬ǜXY#Ry'G(P"'%eb51S4/qji@IѼI./QME-Q)ANݽbt[[-;Дƾ}6P.ۙ!i$8KeK.wkbV&kMw \pझ|T%J0c>5^Hj$r5&62[8/u#V< t*7ኗ(CX7Uk9HR,vIW?^xw£%"#ʔޛ aE װFa(H Z 6?/I, 7z@͈|##[0# j10Y&2>N8/٫o]IdU``wwdߦ^8F-G+UcnѩOI? cL[1z(v5WNߚB[䆸pu٫3(cqv,Nn͛x'phj{uLl rfUdAЯ_[q$SNT9q|17 I:/Ղm~>ɑ_6\[Z1^VF!K|@߇a^+4EE|Xe!;X_seH:iw@CtSg2#w'B`p.۽ۛ+ˈRC7V\)9۪W9>Gs$R!a ш}fh( aap>+%j'%1Kk3ej7~Viy]KČXHq?qo߅%63PނaҺ#S!oblpb65Tp FtQ.zb`OH6nؙN+ kml̡ZsK+aq t}5@ck#9)#o̿ɢYT{{oi TsʢRXX1vl3Yzu 08%| n t$33u=EugcWÿ Q{\`!hڜ~-Ժ6+0Bt{cqɦD؂of5E{0o- s;6)&)nu /ZRynza_bgΡۙѬeHez'н:ċ`#h9M"Zd2 j⹄lE@>T>e!{UB+Ŭ?"gp#Pր ѤSæ?$d0!сQ|?0)-=~9Sbx~% gB=yhQ"mh7Nn/GYvojݴ&\Y򙵟?WD<  Lzc|kJtܺC1hxzlu?۸K$]tR^}"_5 nje 鿌^.*_0zc2;Q;8"ǫa(,+ t{:n%Td-F)*)2pp9 Ιn^?a%z^odB~06,;a} !WT΂_ݐX暬9CjBEr]4f`.mVIznn˝R }B _ v;0="8~dQ #dJ|hjUqWICZΦ|ښ BŲgV O׿BuiPf_=C/=㾽!plMNLKm+s1u%w 5Ń45XOVB8,3Y+\y3̓%nyǫ?6A;^ 'sjV${UU Yb.ebbjD/.uKP2i5a jL`xOJM6]"iTj%^@*F lA(P@~ǂ3s'(L{VY>{7d%;jdMn³~(f6e֙)-ojZ:0L".DX<|nT2fA#aJM8JT@VBkoxLma?o\fSY,SFÖi17y $qJN` 1&~:qWr?;4d û6ZܔV@9-\蔿2잕 =Ԓ7`. cDjFYoGG }h^*fo>T n5ZM[ ڏEIsXZ%* `'Kp"֩+)&9?릫.S]o(!$):0j}QT%Ph@OT9J\a3~+ Ct>#n_6!RsDZb"/0޷@0PػJ,{(&`+deGׇ7Duu$8RGERYMf0dTޡ4+oTNզ@T d \ܴ\i R &_u ϣRIdNk|kW AE1fꑌ7˗k!dte;メCdUy'CP(M+0;mWVWo^ɦkxI^\kJ#*CՋ5\PE>s'G'$r͆$&zvw?kA˸h w 0, dhd~Sob~vrv0 ?z-oilW D 1rPS{>4S=R{Nh+7%s"ϹI/A\|޹ s)\&x`a1Edخj{c+Mn܅\BODzt2+ K{|beYS3=P.46+-9a髵8ˑ|o23#-1<Ɖvt"]?ʺI] E\cD&brkՇ .zR~Bn;HDN !O3CE,טkwQ]Q޾/ Lw}D *pK )#q }4uID̈s$guMW O/y]H6T6FWMHObMzJ_hEv?wL(>< u3'a>wTB]^/עAvDqq: YӖ#%/῿G:%y,)bQjs O W +\+KDJ^9^X XG&q,Gs86y$R+}F W2ˀy i#?I|/u:]P+!9݃Vg1ct0Ka9 YMiE$R65b( UStAmK镤Т)R_lúkyZo*X(=~%*?US+Jц]8ZS' K?XdoD)n\ŏJY njV0&+SW~S)o(6o4&Gy }}+ю`% rh_`ʝj&ۘZ^nl7wrzlϋ^"x$]˵7B8~BI,x ]<<?p$: I BZ8f[ H)-6hsm8 V W-@SzvAzdxL_:v^1[mE?$ ,tKTndm/M>y 7A4wuv E8F"=J7V0of;vغ8?^!c|%LEbv&\FH *] iׅ|zk7UY\*>5!hm[o ~8`|ZgoJůc3c iWr*Ϫ1^VaUr_`{En.(+ 2XR^9lt*u~L͚Ĵ#0u 0Ы]yGIRjALZz1vMТ,g6~7wkYdS`< J2v u׏f|!/k˓nAE SA \ Vej`pgk#敞GT_i*kCRfi Pp+95 }$%V5WuUYVYG6An[, ^lŘb#O;ǐw'Nى4&x@~[f-^ F}<uiaE#vloGN+b;6IyyurDV&|L@(Qz&1A-dsAJ% e]LtN5OPAm_Bu|;PV8(.WNrR?ڒ_FYeC}TEMQ#wgKţ&DB8Χ(qLsFH{ƀ)|kyh⋨:XH;I3\G]',ZO1 _!٦!V+6*\R+25ڬ*V]a_WdUi)8a珰oAʘh8nbuix۞{]'s}Ǿ\u <9wh:R{zJ~FsSum?*$!g?HIۅg}~5fe _y OYM|7en̊zH51KEq5x_$z:YzDH:,ߜ(_g+= _l&.Ӑ;%®V,CbVQ1~Im78sΫjvO:{y)`Ƽ(p~_~Į?k xMR\\98(ZYp P%Z:VL뚬o ;7=vGٜ} Һ},WQbRja_E؅>޽T"<_r:gwǏ*dl bb*<]}kL}ͱf(Qsnuwgtvoy=5ST҃>bU|O ˢ3p74qh-75ʛ!T`Ǟ#,8Z*_rgxKUw 'R_)^݆aDIGrq$`T~)H֛2jČOG3H։_IM嗯vs^%|mɉ/c|F'؞v!Z:O2)?SmCo ́'+ԏ2?êdb&-D .:;t٥F'eTݱj'p]Ȳ}> 0$Y#(jd6yܥ͑N* 5"Jw DR:k芰e{3z~*'6XcT ,=-0iݾݚ'JaGAyp'6&4'&|?0MZBRt0ɋXDᒩ L{0jTg]$FS-uA~~fnhi~BxH L\ܚwT՞wdz_#XS0N5yp=z0jnkAنߍ*8)ġy;Mh$`k (Or'Mn* @->cG&QLCzO~5Y NN,gM95l} Phb [eV(U̲GiYA~E}"| ǃkbH&&J#Q^hZH(,N!7|pKvb&T8nEcf×\d:uzCEd(3:!.е1w]HZ;C{3$o۪6Qg="m$g[S jzY&deh={10x?q ;Dۄ'X-MvB399\]Qm+,io^DxA9mԅI2'l 01[?yG 7gHŲNpO+Խ+{Ǫk+`G8DR,VHr4\3ʘ3}!&^S R^ l7HFP/EņDԺ7r0k[L݄6Mu{$عtO);̻Rgv7% 2]:u_/bw5^޷\;76C.3 t-?BL~(mi GŽhI @9w h#eZLɲ;S$BoQ*+ilDpB(BW+VNZ%^{۝Ĥ|:QhzAXn\iFa5/8V,k~@0,N_q5Ҽ/Gz ;mM_8d֤P!a4;F3 Gq)>s2,MT@ $!VJm2Alhy+'?Ad 4j&LwDž8mxPP5^z|Gt7r\Pѓek} uymQX*ĵLMBᾢFX넊I.  o}1Ax#MpY=Fk'zxug汔x8(z?qd:]Npywt69X>R+T'Jʙ*5Lœ'4⭈^J0]\A݁b9\)nc",6g ~Tu9>Z{ &j떏Ohe礲F-|&FD9CQ;w*/!ƾ}AQ"]/`=#N(x \x{LgAYk@j J9+؂Wt0S^ ${6eˣI.>R2-I|gF̜rQ)Mu!@P|X{lgP&4ӏ6TOJ 4ecjܷ^Ƹr&7A S b A8{)W- O1 {~oGK Q'05B/0t'-Y5=?M7q$oN.UOI9.q8&KO_[Hߨ&h*.rFTJ Q65$SP^嶹!JQ<.%~PN9 bLFHIQcT+$0q>E [$v~]ɉ>43Xc]7(o As2{zwN(5k7[t;e5 á=A/mEFff܌uM _ 6dz7^0c|-GYN`kb++0ݞXRG! 7"蜄w̫A92U'Ɛ+ J1m܇K!QsfM-Ԃf/Qu650 > }b;+u(`HGZKܔHrbDfR<;hP/,%ٸKwX,CNҥUAI{5 2\BpۮL˚.>1gt.yD%2>B:,25E69v1kNEJtFCLsbJYm }>TMT}%H!ZuN<  f&UVZtF_+ hebeR\ATNG?18{pC]$4g+|#͝?݆r)5q4нkL>NMIQxOnXo.&'<*s2_y@- W]¹U%2 +2e]'Y/0  cWF YZ