namespace = 'wp/v2'; $this->rest_base = 'statuses'; } /** * Registers the routes for post statuses. * * @since 4.7.0 * * @see register_rest_route() */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_items' ), 'permission_callback' => array( $this, 'get_items_permissions_check' ), 'args' => $this->get_collection_params(), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( 'args' => array( 'status' => array( 'description' => __( 'An alphanumeric identifier for the status.' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), 'args' => array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } /** * Checks whether a given request has permission to read post statuses. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_items_permissions_check( $request ) { if ( 'edit' === $request['context'] ) { $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( current_user_can( $type->cap->edit_posts ) ) { return true; } } return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to manage post statuses.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Retrieves all post statuses, depending on user context. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_items( $request ) { $data = array(); $statuses = get_post_stati( array( 'internal' => false ), 'object' ); $statuses['trash'] = get_post_status_object( 'trash' ); foreach ( $statuses as $obj ) { $ret = $this->check_read_permission( $obj ); if ( ! $ret ) { continue; } $status = $this->prepare_item_for_response( $obj, $request ); $data[ $obj->name ] = $this->prepare_response_for_collection( $status ); } return rest_ensure_response( $data ); } /** * Checks if a given request has access to read a post status. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access for the item, WP_Error object otherwise. */ public function get_item_permissions_check( $request ) { $status = get_post_status_object( $request['status'] ); if ( empty( $status ) ) { return new WP_Error( 'rest_status_invalid', __( 'Invalid status.' ), array( 'status' => 404 ) ); } $check = $this->check_read_permission( $status ); if ( ! $check ) { return new WP_Error( 'rest_cannot_read_status', __( 'Cannot view status.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Checks whether a given post status should be visible. * * @since 4.7.0 * * @param object $status Post status. * @return bool True if the post status is visible, otherwise false. */ protected function check_read_permission( $status ) { if ( true === $status->public ) { return true; } if ( false === $status->internal || 'trash' === $status->name ) { $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( current_user_can( $type->cap->edit_posts ) ) { return true; } } } return false; } /** * Retrieves a specific post status. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_item( $request ) { $obj = get_post_status_object( $request['status'] ); if ( empty( $obj ) ) { return new WP_Error( 'rest_status_invalid', __( 'Invalid status.' ), array( 'status' => 404 ) ); } $data = $this->prepare_item_for_response( $obj, $request ); return rest_ensure_response( $data ); } /** * Prepares a post status object for serialization. * * @since 4.7.0 * @since 5.9.0 Renamed `$status` to `$item` to match parent class for PHP 8 named parameter support. * * @param stdClass $item Post status data. * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response Post status data. */ public function prepare_item_for_response( $item, $request ) { // Restores the more descriptive, specific name for use within this method. $status = $item; $fields = $this->get_fields_for_response( $request ); $data = array(); if ( in_array( 'name', $fields, true ) ) { $data['name'] = $status->label; } if ( in_array( 'private', $fields, true ) ) { $data['private'] = (bool) $status->private; } if ( in_array( 'protected', $fields, true ) ) { $data['protected'] = (bool) $status->protected; } if ( in_array( 'public', $fields, true ) ) { $data['public'] = (bool) $status->public; } if ( in_array( 'queryable', $fields, true ) ) { $data['queryable'] = (bool) $status->publicly_queryable; } if ( in_array( 'show_in_list', $fields, true ) ) { $data['show_in_list'] = (bool) $status->show_in_admin_all_list; } if ( in_array( 'slug', $fields, true ) ) { $data['slug'] = $status->name; } if ( in_array( 'date_floating', $fields, true ) ) { $data['date_floating'] = $status->date_floating; } $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object( $data, $request ); $data = $this->filter_response_by_context( $data, $context ); $response = rest_ensure_response( $data ); $rest_url = rest_url( rest_get_route_for_post_type_items( 'post' ) ); if ( 'publish' === $status->name ) { $response->add_link( 'archives', $rest_url ); } else { $response->add_link( 'archives', add_query_arg( 'status', $status->name, $rest_url ) ); } /** * Filters a post status returned from the REST API. * * Allows modification of the status data right before it is returned. * * @since 4.7.0 * * @param WP_REST_Response $response The response object. * @param object $status The original post status object. * @param WP_REST_Request $request Request used to generate the response. */ return apply_filters( 'rest_prepare_status', $response, $status, $request ); } /** * Retrieves the post status' schema, conforming to JSON Schema. * * @since 4.7.0 * * @return array Item schema data. */ public function get_item_schema() { if ( $this->schema ) { return $this->add_additional_fields_schema( $this->schema ); } $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'status', 'type' => 'object', 'properties' => array( 'name' => array( 'description' => __( 'The title for the status.' ), 'type' => 'string', 'context' => array( 'embed', 'view', 'edit۶60_WRvVv:3\߸l3]KCI"s[ߞ517wF?n!8GiOsu4HA`~'?v^Gދi4;K" X! )D0PΏӇ:$8^ n*}k:j~_q(@0=7DFPWdd5- kкﭼ?ˡ`72Xr+"6Go׃u/~|!o:ЋoYn}s]PHh YJ7ÁPSLNlvTw饞XuOy iv;ry 2\__v|c㹷[w^:&pߥk6FߟN  rw 2T'|9TDmTvu;A20rչ>F?'#ap<6'Wד>1Z7IQ;v%Awm5黝9r"oM:ET FEE[~ 5TeNSC#,h9ؿd(}$icV=K cL IwaI?C- B-4:bm %d~3~?iA`d1(>aJ.916H,d2F|{b]`ż &o.Y ?%/ iiw3K9dv-U½z/@P ha׸9QJdrߋ;Z@T `BQF-@{h4jn ٰۜ ymRd+0^=(=.q]/?uc[M9u nJѵ3>kgt>(4BBClnX`^b'^;W烩RlQ[ve A]˅ +~ʬev^;`M,wq..ePnC__.OEUbPc(+S:L,* |K/|RT_/U‰_jQ[,ݟ^|Øһ} |2>.n)pyqV`4Yvb/řFRIrI3g?;37oXaIw~wؿF5xd(L9CORj!A@fBiY;EwYeM.O>+ ĸ;T5g7 ^1j`#~u E < )WL1]Y40^TT&8Pz0,'Mhk(^]EK`:q܅R&qR;Z3r; .^],\ .qV5Mc+iwL۽Dri 4=TU%$cCa FdJ6-9.m T^e K+ ~AـJzh\/|~Y)bmfZV/6%;o$(ƙߐ]<"K2aVB2ɋ2;;aB9[:h(+@FX1ii` [0Zѝ޶`,e6Cnh]0lGhqCRg݂(1+o` M٨I8J=uPC [+%-p酿qґFQkJgαE vm} \M@[{ *QbM@ɓ aOKpj5 dbGj`d,K8Yy lko ++֭nJ5AZP AЕjFZ׆V3qDn3Y%#u*pPZEyUjF1TKcɒcZ/ai(b6Ȩㇲ:5ȳf-oJQm>Zy ˺-d\2A+ɲaMj"U-Քjɪ]Q0ʦ!dԵk}PlÇ#ޣPiv>CNKֲJ8m Hbz{wV/8|_=t5s=Nvjsp$a>\ߡSqi /A;bg{6'owѵ~,ᛯ?&w]\XRnA2I.5@!:6ϟÏr.C|_v^8=篡;s+zawr&JRg1d9-':@g)=hq/)!',' @o[ 9wC^v!Oow;¨!O`dx]o>"\.^U;n(xD٥E hwն $.g7UK.!]dz]Qw='tna` v](:uMu&;ofo}'viwaV7~'yׁ_a7&q Y%{6H 0`"3_ϽnŅ JO#vBZL4QȿqpCX?Yt:7 ۜ3e&HN0XǣXz-!##A=#%}N@#!ʡ5qC5@vg(S&O}KU!10jnnBpvOAGH+t>g 0c "`’)>cV?2t]ӑYPK|)s8Ջ@)TgMPrØWDaz1K+*V["a*OA.,.TwAZl8[0_! } M#ٻ9?=/L{ʰ`=|CƫKA -VЌ_oPϘ@lYR'֌T R/Yw3Gjɛ*%]\ɨc$-7HOgksODpA^Xk9{^rFcr3ŕdA\ Q* ;PayMg`"7DKеԌs)Į2h/m(Li^Fb  le#jB2ۈtL;,*9v(`lWpe%\4ӥg2T1?V͋L#/>ş.YUf4(qRfF) %.n+*}cL0wGqHE%րjᰃ.T',mYmǐdrhjc `T\vy)/Pz萔 ]t/$ХБ,-0FRȯ҆h.QH%RqT\" ."䍐mNR,Za: W;1JĬrrF#ڑ,$&ߞ&K$bF zC\Q>1!+#&$lr$k(YȅPSeT")utF_~z(m\pgz?(/#(Y"50*>DEc5[ Lg' 1HRÆtrE9*nJ1*jݸߧvDw˰4c Y"QpJuCmJD&e>Dh$b7DbEJ(`\B0`Ҧꎵ"HF <_asC|'Gɼy7; %l+S-pWH]Kb(wTKRGxRIFKX.Vi#Ock6Wgd޲p3I*bQzcS_HAbH:Ԗa<r#Ja.1!5R6۫D`P<=ɃElV6*_[=J Lş}fi0XgTꦟ(`FzЭW~Xfqʎd:v-Mah:SN,ኰ4 `JL!VxjwA-yoL~ 2쐯L gzcI8t^orj7<)͒`<,.k7fe(w jP6N[g+,Ԗr @Kflsӹz-O=e9h Tt4Pɽަkwb%ZbXK# Ue0bO|.H^9xuQ x%t8@ nx31 gj$QjtÎ[q3W I?*V%R͗}ih4#Uˬ3(~Py571G9o:ۘRDd8 lE{|Ô1aӛhl {EXaxL'߳E c)zGQG(0*@}RVi*UU*qR ߇^0lwGYI4!F8w /z0& tACL0B #@3RGBN쨊lz)-خ"r,*Gos+(1GWVrvsX]쟵3H%^Xb ә)B4D9dci:EZ cJWLQbof4wfdǍ2L#jH~A={4 ̭xn5wc_!D (G 'A13wŒ3R5{qװ3ZYB8RkJfr(Q tFpB9ixk=YVgo J 1ְM̠[H[r4p7Ơ)]Y<-J'iVr֏'U +UY6C=N? c15STAr s1Q;SH:XG`7tı.qK9iwk8%N]c}owk8%Nݑr-&Ntb"i}iwk8%N݂ݩbD8-&v\.mQbjД12eMSToֳؖ".<':ܽVԣ'B5\FX~L, wwroU7lt7 37Z]@߰掽8?,j :xdNʼ0 I2fvlH>؍d$l [X֊|Ar!ԐU> *TҚ6#@f+!NcXJZf4m; l<3ZWl59㜬l%ȓwZS)G1FN oHG0Pz]S3LL- 4[ GNJٺqb,ag4}8|-|J<˄u1a:F^A{'7YM5xd|\Τ^)3"e*wfSUi^kN6;z6[iLXSD[k&+#a&^;3"\UI*Qkh) "U<}?+>^WiGZ0ىgzɦ//[H'C% :0X!ȹZ%nZa G:eNTrt ̻! "`'^NIVra,+:EiA~HyMe"$,Ng^-e_/1|\C`/ ecu0GqSs4ڢ/\,0 :BSkbn֌QO7Ѯ\2d_&zz~ys¸{D; PaI΄ƫKm?1y>gڤ鿲KƑ+ Ok-] dC]i}{0*}VQ̶eBgUvPZl Z&L"wRZCgqӏ2#{Sس@Wo +֠A5# aᙲZYQɠiS:L(NoA.w hB. 4C8)ؖUABit1)op8)op?)R]녢TŒVSF8cxH Cj0SlFSύv= Y/>YS]EI e*R T>$wiE Z-Bbkt;%nrQ態-o\XqbEfE٪Ɗ%0>ϼ^ .fV+3lZf UP)#0֖ߑu pG)l5vy4?dV% 3Z`^-0' ?]mFPnFvпcJwv-ؕ50SiS Įh$^ D `&eu{}]uCHƍDTzamqD^A(}$cGaI .M 0Ixs5 `8/:Ɇ%h@l1Vz/ͦ* il99+\*\z|Re+ݣ b ɳr訡Z>'Yt}]],\VUrbA" ?Q #Z n]M:!7*gc[X Řwi \եQ..\a 5kh8YeYtzQ+(߰WiRޫJ΃irTu[P7T6Qfmγa6F Qf1Kl.FzNBݲzLib=:N j cdjz{4֔(ƫ8 nڭin)=jb8}' xk`AY7#6+I g _1`ۖk1pg^I + %QP&ȝC)*ʈAe Ŏʤz=bXV1meHzkLSŠ&CjJBVRd>.5#Jf=t +OuKPVLgqؚL20pehU{oԦp';[E)Ҽ[4oDj3&D,(CJv Ca_a71 pʛeGƦگ[D3Nig FKeDnyt}{y2:<5'6}|yRW)՜+#7nہ;<QNy"Tis`k>T><)f59bh]`Z29^K`STk4sD\hg 8)BbBRt溓D$֜$6}|IRW[D$x؁o4Iꃮ$f$۠J}+l둢opߠjW(7'IAR(?mZ\1< W  PM"+kIc &$;R <n#m*d'求t#mm:وzʧw^Jь`q *}V>5=cjBym#5[" aӜ,o4Aj5~LҰVIҐQAz=ے%Qٝg;Ii9nBmg`>kp\#i#&3-~İiNGzlی6һjFC:5BM6'"N^m"tpTLJyi#F8M6bq#+46[$MsG%ΰ>R-X /RE&|Q ^ IFb㔂i{Z+eZ)Ql(DGnj*Qmi[ţy jM6rR l,uVicd@zESH\~if(TWדۅL ꚾԩ^ƾ~nooґт׀hzP-9P:5ZZmVEP#JF VZ^kZͪӉFZm䈤A;T t֠e!?}¶5h@; }1۟?LoyМ~v,F;5ԖFC~BK)GAmo۱K :Ӭ?}ue95ڪ95 j^ tRmJZONh3? j[ޖ\yy rf֣nl<۰7xm'`LveنƳ\Dax h8eb׳*hG݉RsM*8mq`Fˋ HRKvߌ):&,6m0E$n*/[ Oi4[y7TJ) 5G4*kJ FT>͔)jQ~Q?ȶB].@87:AevYǛ>bԱMLBrL <7^'&d\uWZ F:]5W>T>ңn4 .t7}lycʧ7~y3]/~SuDlc؁kztǛ:\4mĦFVjimH "KKa}[ꉱ&,-A^k@ M t[MhF-@m)GWʴLSPNWzcX9yuGc,Øu}M9J)i6߇RRA{X2[ IV[~ڢ)Yi{G.?Z4 +Bz&BuM_T/`֨d5ů% M]–GzlۊͨAS[N[G;mu dNՌĶ:i^'[3ozxK$hmfom _߮Ӧ/Mh;xz[5.Bg}fs@ Qס\{+΁4~RŒnC?=}Bvh P]>lMP>A0ڏ4wR *+t"ўF=/LlVd$"&&HPu5Kħt5zI cie KTXʚU#_=++qXC-T/NgUmɃf|FK@c:4vzl j2DyHcoK!z @0C_޸'7Jީenc!Yx/( 3`E@?4~RhwY_gYHbo#i0Yd ZC ֻsz ~8-~ C.MHd:n,5Zw85[Eh#MA~@qhw=7 hw0ܽsECH2'lzbb!IQKhd"ooh]^?]]B&o].lK) @Ю!šP N)tT-[@&Ӑ.pjg^ X9{F~/FӋ+%G [b-V+u&eU]X.%/1-:PZV4zΝ_K'įQm0$jv*)ȚNX ,.ciax*x,i#d}k2n^Eᕇ}hx9\{MHozズḠ-8{Y5WW-[ mz߾@( -D[O0X:΋a*s Е;OĠl0ݍ;a} qDk>$hd?hcO(1{n!">o.|ئůBx6;( kX6IGh%Oȗ@ޮS[R^lnD`M ,aa=B4͈=SΝCP7!Ҟ>L:3B <~$;OQ¹9,[.ypmUjWt+ʓcJҶR_K`β 3K^ {0TtL3(3b(-`qUkU5:.u$''t0/\qamSo$$(a4b(t}* ^f@0fBx9,' Jڧ~I{!9 rQF}ҧvؒSX^o4Np/ixyJ*lְxfKǙX02Em7~-.EL:"C z+/ PK>N`vQQY(A篎yCzWWW7~@}}A ~,ܹS/`:^Ѕ7tMӊZX6ep3Y0PR_*p 6_ӆQB(IF;-b600 Ź,S)"̋4ϳ7\>~|^8gxns\Pju4 1 Rn|!|P^IFu_/փ{h V8Ҫ;xDdT.IQ8q$aк@P2:3h 8+t;`2oFuvYk@OWPURQGMCa1ls|=Sd,|ZCm0d&V'nB+H,5D# IS2#IڕS3(4-ATۭ߯R4ryܚ@7ˆcBH3U`[jM-,9zm,ڪv)C Zx$l)3Z(]HtLYsO9SCQqcsNF;I%CATd #S͚pxD *.EsK&IՃAF)<HrPl+[z Y;u +kj~< 7@#IggҦ?:z8~ +_.LE׾J5^ZCX@dxfox*v H1iqCĞ@Y&91ں@ ^ѡF y\0W'dvvcvw.3|d&%G EFP8{,E^Nm|z V'_V=/4/ҫXN6ISNjұꜟDJ4;M4]Ȟ 6ECM&u+|\}kJ522ѕq]I+겉 iU䳑 mci_vPz˧Va(q~ 57ct I,٨)1y_ZɶJձXud}s25qZ]Ħ-uQf9z8%d,X~M,RH#EٙoWwK h7vŬfGn6G8D2(3A϶F^2eJKf"!b-٪x);O"_ Y-~c H{Gutsg.gJ6| |Ybv0آ[e`ϴhOjTz9tQ=?mKdCd,1[zxᜊ)"uU[7ۓj(Bܚs EDd,hB}7nD]&t'dM'$GsޡiV&No BrBU ,\TĪg̫lE`nhdb\LTWwq[Mv(Z5EL'11h 3*=!WKDSzQa3$/M/>VE5ghʨ~ohT0o⅗bl-ΫKY[d=%2;teHM &Q"G\K=不U1мzAb$qIvE ӝ?S(O\ ꆻfIҗjou{lU|Hq$ĖIDl76Ytj7&VfwOl8|)0aޮ0,(8t J^v; C rE( ;o;?+QD~BvJT6zW9a)#/Sr`SZ^,Q)1ߩ4]"j֢Ң5D^YT*0vޭE#$bX|$Ko7ڌfE ŋ~"Xu+lʯǦy WGƭV[[E{Tk/_QYs]g("jNx^ycNG敢X~CYxUk'kHQv**e?e%4Kr?#}-7y22ǻNc`Hl8Bu l!\7[^ᎰfL0c3O.JxF*RtW3/hFXJsv'S%0'R2#y9۸۴"==>Hr#34Sp܆H^-<+?ĠJWLF)J'4e! f%ⱷ .|Ek$^eGC^ݱrTCzV-F!=Ip2?YaC{YjO ew<Ӿ]:R!gxΏp Fk 0QT#l=)q KH)]GJV"Zr&ʊL?Eo +þP3ޜ](_daK6_=`E 21_*aW_.N:> ]{[ZH/î h3 (PSG wYj$'A,K#bޭ7אnqƟ<ۘd Zҳ_͝8@l|N Q,oBWCd'v.Xcx&$!FU*jקAFL{Eaa6&z};d!36 3CF~2#=2j9CHqBC=BˡRLըqFl6 W.&nw[ j+G=&FV6 `(N{0D{U?X=9H[+G3 41z-ma#Lhn"kGK'G~tVs)y4C!ƺ䉐FttFBIs4m.NpiQo\+'G> 0?z.A\䉐 s4<,kxPl`lCj jmhk3 v2[DHK`\"sŽhnNQ>Y>y tj-8a GG `[Pp9 G5>:ZqkFICLE ]KHg\zu_j:^CCgPlV@onj uFpbl]m$u)o— ޽. ^h/UDEx787|a1]ƂSwR(^޺(U6>,x SO/B)-&l7Ūf27ayQO)W/s?kJOJ9*Yvl6 Ip"E2敖^\wEhQ5WFIOt7}ʹ%j& uv]@`dE"%SʸjSyʜ ֩!Y!+o ϺKR0S`L=t Pףk01f;,:DմRPF]4]B{ 5@+rve) --HhK>3k)TdGB۵[5!tdkQFuj|V}VJ@X #5e=!!yH_;!qFһT} w=!y:i,F,L$EV2A(X&uj|a/*7gvd[UfDAze=PtFܲ 0*xT2Ϻf%ťv,]!3eh.D4Ϝ\f7y,R8?>_㭮Y41q5%lQmr˶&5ˌqtg1 _]>ύ 64c s$4g#D *)kKD!^mh_׼;h,j4nRǛ MW8\uڟ-j no2`S;21 w,h2Y+ "|!1Ee/J>L-y%,1@H ۆje@LGb{*U&c>tҔju:?ڜFOLMLMI QTJו2n JTwRFՑ>vrĨ) ̴wjqr -k׫aշy:TCP.4bL҄A2Qє)b&Y$yBidS\`anKeK:RiM]Tj˵*n5ƫ|r˵UkVqLM&i M(hG1D-k 8{#ZR}4Z[ĵ"&?m,pWH>f=2 +pk.ʏۈ,ҷzNm7{[֬y$rJ㣓H? i㍖1jX4;hvqYCCpp῾X17GVӥxъNVѺSiҔhs:3Z-OSˬ :m"١p\TKFSfi5d!5k!y-6ZG<[>FkF(%򵒝RS6B 9m`cم< *QT[?+hͦ"Y-FK R|;N5iI3[9VkU}Y7F|m[i T9'j`۬V}Ӎ9=o١`@B|^g̦Ts,2DzqV is-X.OTIkJzJvJjDµ4ӶM-u۶I]rr<;;;;t+_w@=N%(kaB_wlNP%IFVl%.?aefn[fbᢲ̔XQ`-$6ֶY٣jh-7^,9S,Gh8%Vlאafvbmב[q 5Xmfp rػהx5Ѱ'j"Q$VjٚTV<]gchm=O]OƋ6 ffZc5ʤz5uD[[[SyųmMN[|Oj[*u'W d:D:$::D@㮷7 ZC"~ғ]=p1-v>Ĵ`?.G[.IGަy|~wn`Hc^Gڽ7C|Y$#x9{<8xZ=uhvz)8=+ڂxSa^| hM|ƴ>E 8H&)mw_(%<-Lzl @$X}ߦA,>/=> )j_fJ`TWg?+p>.IBZzub<ޖ;Xo] YEM[*I3u7Z {=T:){iֻ,.> gj3*P6+OQ,<$c8asͭBIYbs }dg޲2OH=Qf&&i;PDyzG yo4z]YdFD_? ]bpWBuܬ9L|abOz=l F_m)ؒn0 j\T(Ό^&zI\HmA_wt5%T4?ۣ)uXd/3MF;X,.&Xú!WiĞ*zFގìj nt>| f*۳ &s@8d5ǰ)Qy^\+W5D>+8+ÑįeIɥT2.) y,j4Ϙ'srrAM\¿0܌Ϥ.mTn)뒮<W٦PGݪiyk\`o(ޝ.E*VɷQ'=GdG8Q]j^ߖ{:Asu>îO`g2j[.lI^!qlʶ[OeS_Nʕ,{H u\̀@B=X \Z! }_HțWN\T.gm\bZQ;Ds;wE7h*Ye*Ǭu5W^I B݂:u(* R:@sQ(ÿ8g+bW@P:l~lK+V EGA=彩ZQTy"DKl239{ۅ3fhWL YSFxuS՜U"1&7hec%ZL"'>kfX+mv+ͨUڌhNVSժ{IުlZP]Zi5YΚ[ XNXА\iҨ >KF>g-alm^ Y#TscO`OF5[daМXoVb 4**fWP$cكZպ_>+ir*,$dO,8 RQ\ݸFd5T;M1`2[#j`.cpç"+S3cugν*G-lr(oZO cܨY!-Th tn/k7·6P±I;-D8qԜo~˄Yq* iUܵ*Asp$ං:@-og h Mcg_{cޗ4ĺvCڑL=wLȾeRPP/SV=qP9l)>2LxY6g{d eKp;.sv۞w神CQ}>v]2 Yo;VА|h(Ǫf̆:J9m%A5(ݥr"cKPjPKPjPSKPwd~GyG^)3)>ʅnnY$nHw9kWw _DnC:#&5Gu1T&3%#Yw]c`@?9AC nr͕.~0bf.Do5B܊naN{>k q d'Jަk7Z1ޞfRFiTk: Į9I^ߔSSSt|FMz¢]k UbҡB(獿 <x0^Kr4&W ,tETquK!#W!l/>0dҝ2'. ¨gc,kY7[U3cڭE!wc>ܮSI18'P=<:Fᔜ9 0]>{lKO〮j-l+$L c04h[T4>n)8V6,}-+_px]1w5,t*"Tnh'â sq.mExjA-̱&]KrgqUw GfŐ4Qƙa%s-8v@M ;d ew1y6HB , .m %aĚȝ4GՉj$zeg[!ɝSFFy/xdFFPq'}_g' sXK•J#\Nb!F1Ω7e+sbK [fU% R*(tzp$.Qnuy췮A6X:C*-TgKpCW,cDŋ`c31#!zΗb `=#֝6O Ha'{/]׿8-[\ 8 ,Y_LA9sd u|/uln)1vQt];pQ^%ɖt1'ƙ/՝!*♽)rWsBq%BC|>cc#T ~U5 ׌cvLfG"7g>۟179¡+]mG!Zeŏv+e&9PYd7jXUrzFl!y?.Vn խDYY dNCLzbjcA_f_+4\cv4ARcZD+jA *D g[?ⷳ0ؾut 5qV9PŒʋW7OAT3Op{| NW\G3!ݝ$0sRK*D%()@Y{)*8~'oqݐ&>%hNьːr7RYPq,w3O&[QrZh", B!: |z>krӥO'2WoŁV{}* yBW&mw~|bɵbңg1OafVPHrqxЮ9+O"REˏ4o=)Mn05)WJP,0-ɮJ,67=f­ +EaH."}׃`bU=bz f+,%E]M*r;/{W< (ca+U&ф1l_]޵KEh6v ̮e.F\g8{@Si0*uU\&fC匃BTᕮeZALFw9tGmbLGT)q-m[+˲ƊsSbidDž UU|lrљ^L^Nr2X(P Xÿ?aP'ٱ`g^Yѽ˳YJz US ];X3Yo *fobuqteC!(g^7/g6X;FS/aUs~6pg)#giJٟQ2aN3Z`dͥ$k@~32 ^M~jo(CEq~'^5ZDlЪ`g\[m hyVfXجQa, ٕ#V23φvnl5?qW0j{%'%ŭ#m~MJM46mؘO=+80}[w̨/Kɏ׾G_ģbekC ۈǾs(;dQ+*[Oųh&PΒOgt}oBFdkv,uSynKCݓ[IFS_ ls~nE Nm{[[1^y]Tq mX(XcQL4D}~sv `'UH+bF!f$ﱈL(f4 fY,)%K-L`FN-L1?XqXۨerQ-`M82F>ͳ=Gɟ ->>`h>*naJ/ӪEG YQrmt[H"XLVd$*_T(! $`$Kabʔ5e`T-$5^/[Gt('av~aczIhY4^On %3`dKjlhnp&bǯ^eu< e#V<n@v'P[Ǿ>[@ M$Qia^4--jQ_b'I%CNe=N".DTR.S}}ePG3#/n:X'ü΂~/Ql 8K·tcy՞9"zll 38(f'w57 ҆Hk*Qc-*+ߤ[65EHAl ب!uv+vq js*{ҢM/uqyxUQe`*uH卟z<ZdPZ$)9`p|׉M2PSb*bbIUaGcKO_GL@*ζjU]+%bjw@ Vx&G0  :Atb/{Rfy1RZ oU?ᢿAD f*1 Bb$V1ܓx3I-fZ%yK#LC)SE.nY$ $g ^ &:viťauZ?aD(wD/)&Φ ~[j pʼ5hU /*E3Òf 3 fĚUѩFÉ8ytAK7yPB{}1V]kXh$|l(hPx()>FhPrH\OIN^ŤZ.4U[ZkUGIA4'ISd>'el_#Gs haTmeֻ fa)ܹgUǖdT\m5M L̜3i6]VͦiwU81tESFb^܈1شh5^rXi}l!XD G8q8lv$ӠL4ߚؚH{e Rc鎓1^jzĔ*eV>RaAwɍZָ{YuLp@nQ$^O=j@%Q SShՉDaj[M0SuKuWh0[D]]O[FEb :4RSR.W:\ZU~_x(>ms?Uél'*W(.#IoU%o? 1 2YaQ}H{o]no#7./&2Wշ) L} mc}Zr HCr?߃rU{ndS|Ys3!摩q40tzFT|T10MwiY>5诼pAқ7%Y6/ ħy,p5M'}Kk2eBT!ɯK._g7KY a\qB@vIn?eQnT48yeCbCZoi_HP R{.|j!mwr} (籑s}-Dw)!#3IDv5ƽnT7sỴx,u_fI!{A(~J,K1p8YAҊX:FK 'r+"8BͰ(u%cےtAZ :HޡԵȘFQUB`J[2'נqF#W\_wlq0[ep-mK)HH_sĬ"/֍ŀ& Uo#f*n6;Q Ja=ϴҮȤ!XT/ȓ육bxՁJׅzb~gip2wi| yk}lQfRYf#hS}Zpr.#஽HPr٠K. Wm\ ВffT |'&UD*x $y\˙YI]rՐ]&W{\VTx+I]\%7eݣ[E E`wzR_Mt$ocs&u]Eb(3GFr0tYV0:OG%< X$)7JR)1W$#Mz!5N;v2"v8&,.jj#%$1#h/S8f 4vZdMX)ŔlMp1l?^2C,짜Ο|xNՓ1$%Y~ /\aؽ[&@#q蹳4%$Gz -9=~5숮G~7ow'{ .% `eLi"uϏ¹u+3 _M@G7~KvA<6^&1^>9!+aa' -{t?kχB[b2|wCz)/h@Ɲ;ۗz">bakG,_9Nxt={qv/b3-^x nA"v^19pd|aEHr6> t%0-aC!3q}~ z^•;K:Ba $)28[v]zAo.vFrt5({)%MtGX\wuNv1[3s3$^SϞA`p^% >QkቅBkPڡУ:#tLUL-l=$:rG_u%W,vG+B! KaLϋS?֓ Kŷ@$BW\/Iw4HCxFgo=ϱv6wwscOAןڌm _R8:DO!ϫ o<!>U:]Fu;eu TъiH\E.q$@Tt Il钠H/ZoĤ}3~%Awn#ƆR'x-zp8y'Ź $ċ}FW4C֫'°WtN|/hÍ?v_Gދ12mhmoA?IQXg@lp5|$XNKY_ݟ;CU&D&0d03Ë;HnruJ=zLhG vHa`5fo+|9[TU%d nH/}PRJpQxp\ptv{GE67w=讇wדzUd% K]0'GU0Y/.r1\q,7c| tf lAqsGvEP82k̿+x!m?@.krms =Ƕ|J]o4%!B_6C"ng:IVݲ1]N/JZm(Z.Z^2NCv^ q=4}F4ng=(Js۝N_WrwP7 tҲgܩg|+౿bOxG (ܻo—nFA\-XDv׭oDE&.]`CZqR1d_L ԩx)/Ȼ^hQڽiqm-nC/I*&w%u'q%qk(P=V.WCX ;6FڜǚUc:gx]|eWY%R5v|ha./dXMzhΏ BӪP&Y ur֢Yh֩af5jdC[9Cj76Ua5Po_Qň!fr\Uy.uf)ICpB6*="YK] sA] {+Ƚ-;$̏GB`r9{J&3 ܑWgpA h'LMx3 cCR]R"Z׮f4 2P>/b0lRhIjѬKu~"CEH#g9_7@y*-A))L!1LKq=7l+6}% ^lɤ `A*)#Y8CquRYIz4<&;kI^Gog׃+E+##4Ndl- Юd--4e:=x[|9s0|G/Gq`uȄt#.qM\'=mG Hi>{K¥fF8w\a8 KC94noa&3R Nf40]dc(p 8Dp:gcμ.CC˺WN_ Y$I&>_ fp%0ÂY?MITRj~$Gڴn0HŸnBC\UG5wu\bo1M@aCނF1]Gz@p'q,C*D7 1 D0\Q\7],!rj*i}7{ʂEw}RQcH@Oˋʂ@IpEew-0ߘ3qwdcp5\0F0Q1Fgn'?L:tN{{*4gA `_U{RQ .XBIŃ45>YZbl r^zo ^љncصEOM`5w&gݧ|\RSk'$i;+[xݧKolX{߰kLA›^ $^(⾷i ~p4JEW>@`\$` ۈ{%exy1^q _ln{PDBYh򼄸gD% A؁h {ᄗhe3 k1{. 8+D_~ WR$[S\vnt (mL~4: >Sq*GP\^;B ZSF-N{mzS,Oj=)GwnLjB@h]o@Y@NY?},{9QtM<~gW1|""Re\@3JtwB󷃷^]ZZxbN7s}ca^zlJ}PfR%+vR&&Y&̥֧%MKW!4?4R6M(h@9B)w/qtA*>}p}x9H`LTV ]^.Z@K(ŭ'^N=RPB5|Y~GY2gwԻ_/GsE] Bs 0 2R/;* qçlۇ)IY5c]'Z;OG{T03/FwqAxq[FۙD$lT,z2Sqgd{vHG2`EF$X ];I$b٩>d7,$Yp~nE`Gp.:D#6r0ZwJMmHE(g EPL6?59->} ? MyݏH0!,X9޽|އ3ĿWϟ>XX~16|AP-F!i<q wxyzI,ʭCާ!)=sFyLYk(EKp_<=F ,E܋a#NR0\ƕ;6%dDAGy:ڈ7< QA{0lkPf1Nr+Ox tYP1NG(1ȯsҟVw.^ bك2| C8OߝW8;!>ca!abxxG{NdEL~ c􆥕rŰ͞ 7I9vǗy_U8O- bКŘi\SpAvdTj]`aQey( sCxU3lu ڃ)dkv%k%q!(*BBѿ*BHC >dE}wo]V|Ӝﺺ+u<8a'؁xdC籗1]&#O+Ity$kPh0=_A nqHTiQ187մ6?VsRQ{;׬B9^Y[;Ϋoƿ>֙{t62H|KbXSiIQ~;f0uH }{HY]%Pj=Pzw)|&eIb`A1ԊEdGa(B9F@Z–B;ٯY_#vE7GrrBI2fsp}?]VvMf(µY[O#Ia oObt:vd@!Y܍sqs^p2]CxCFC&jo[/Dv_we?:ds-6q 4= Cp3!lW~X0J|peC}b^LNc@/d | ?<.ndŁvH0k /9V>\a!nI}'UAwZW:yt @]6ސï(Hz=Fv^4Wu2Bl"s.+Ncْiq WwNEo`Fhnt^1>G@ Ih>]BVO5|f-E :o6~,mcnC|3'H,^>8v/ @x:5x?t! [!t^t66t%NyqR9 \S(d3M JD]*!y /A@,n~XkrlTD*JtʳɄpE`Ţ}1d7;aQ* 6r w./VGWU&5? u]%vJct8޾Ogo|K/|'}o_~oO;$O_v7_|}>{|7}(ћϾI;ق=/.Y_r:sUQ6Rل|?G8JOK)0"_3^Kf';CYAԹСU2ZQ9t;s}B !f əuAos$UjRo~LM'D9:_ѼO/z<( GϺX.Pdat}NEhޜl]Gr|5/tM c>%.M.';D|z: (l|0toHmqaK3DC{sưX !Lz9P`ѮCÚz~ ] 8 iI ڡ2,k VULf9d?NHXѯ;x=9T(99`QpyQ lVLS Kp> 4ڄͯ2yc@l-Yj2M@gQ8f+/}X:_]J̿s+xo}'Ǿ#Xrj]8=R=7ǐ9>*/chYAgL&yD,5h \C5TΏc\m4)uIIR7yar] z;X<D&*|fY[P$ߡщd/AZS"cŶD`ͪ , v]Z*]^fZ9j98 Ke'6J_C&O^r" HsÁen뀨Q,W8d/(IG)=M>O@l,MDO`a%viGz_k%Xr|}__cG1zz"z; t"\uٝőb)`JV*H,olsHp%bwZD%cZILg)v'{o.$3|+deҏ\:fX?'+B;E>On ė#aSL<%Aۡ;E̖Zz8"8xy|rG'ϊ9Y`>?Xg[*_,Go1'z k\y$音_hK{>>?,{LĔ"w+Ka}+.9$+gDDVD6UaY52`ӌ;5!$oNqɽ Wj ~΃ 31I-k[A& ~ {aJ, 'ć`*j%{Е6g)¬.N1zܢ=SDj`̊&Wg;~},TKIJn}ݤ/aOʿrg7a8&A6)Q@nQ}$)=D|j6e)FƂ0e劉A_lZ@H u3Q $~o^]lnTZaO-A% / ١utúO%@N#5jwڭPqn/ e6&38#H-OZ9cɰ9Z?{|XO2rqhM#(~f0o>