QFI phWdirty bitcorrupt bitexternal data filecompression typeextended L2 entrieslazy refcountsbitmapsraw external data  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  ?UEFI PART\?"?uf9?ONsy'rxl#(s*K>;41MB^EFI=rGy=iG}C%GbHzr ?/>X@@RR?s"@"@Ѿ4>,@b@@  8fot@`@_ @T!@!$Q {S@@SA{¨_a@; 4s:@{S[R@t@y|@y|`  @z@ykT@SA[B{Ĩ_`@4v@ys@_kaT@_@{ @b@ @{¨\A@R, @R{¨_ Վ{S[* A@@SA[B{Ĩ_`RR"rw vu@95!A ?R"AA xabx!R! հ {S@` @` SA{¨_ր@@R_ {S@` @Q` SA{¨_ր@@R_`@_R{S[c@q,T`@@?B@!Ta:@A ?@"aTt @`2@H`@FD RSA[BcC{Ĩ_"!8@@@T@42@)R{SckMRF["FsFTFRb *5v"@yqTF@RY [BSAcCkDsE{ɨ_a@ைҀɨ?T`@9qT`@qTF|a@`v@ybz@yTFR "F FPRFMF@F@R @4] @`F@F@R 5 F@ @!F`@5F `@;bz@y`k T#o*5H#}}`#2 F@5b@Rcz@y`?kTATu@u`z@yk"#T@$qDz T`v@y@!F`@4@!F`4@F@R@c Av_T@9@4F@55 @\ @ZѵZZ@{#av@yZ6Rv@v`z@y_kCT}VC@}V@6 @@@˵ѻuqT qT@@`v@yZ@aR@qTdv@y!u(@Rav@y@A!|!a|! @jZ@7ww@kT@9_ q TrT7@~S@_q6@ @yvT4a5RR#r _q` TF@R !"@95@ ?R!F@! "x`F@R 4@@??@`4B@@@@@4S 9{@@4R`4F@@@4"R@5F5@F5@@@y@Ca@.@?k`Tc@@ F@R 5F"FGRFFFSR@F"FFSR@F"FFd4~4w<Vhq0>Le{  @A ?G@a: @{¨_{!RS?  @  @SA{è_ 5T  3` @Q` {[GS_ tGGR SA[B{è_G@`5G@R  G G@~{@ @R{_  R,@0@4@ (ORRR RB_AT_$@x4f qT d( |S#|S@cl28#DL!c`2`2!`2888R 8qhT8qHTf|Sd2cc`2&$89a ?qiTa ?qTR8a| S !h28a,Fc!`2c`288*{"S[5@yRQA*S`@yPqTSA[B{èAJajt8AFkhTsRZnp{B@y3`:@y+`6@y#`2@y`.@y`*@y `&@yg"@yf@ye@yd@yc@yb@ya @yB}bAd@a"@9 BvdJ@9a@cF@9bB@9$Bnc@yb@ya @y(Ba @y,B0B#4B? qTT?qT?q@TTB?qT?qATaPBX`@9+`@9#`~@9`z@9`v@9 `r@9b@gn@9fj@9ef@9db@9a@8B5a@b@Eb>EC@E@RuSA[BcC{Ȩ_**DE#*@0@*@?HE`R]'@@#'**?ґ@'@0@ @@R`?@7@!LE"@L '@PE- CR"RCR*{[6ES @4A@TR @t@s@au2@@SA[B{ƨ_֍ RBCU3Sc!E!@!0@%@?a@aaZ R{S[cs\k8F@C1TF @@?bTFRSA[BcCkDsE{ǨB`F@SA[BcCkDsE{Ǩ_Cx*qT@>aFo@F!@@!0@#t@@`?o@@?T,F'Fn  t @Aw@v@uR3@l{cC *1T0GRF{¨_ @t {S[c*k+`+@SA[BcCkD@`R{ʨ%75ZF 7?L@`R +@SA[BcCkD{ʨ_1T@FHT;@_Ts?sLC T @`RZ@qT@(T@0DTc@O@?T@ˡ@ 0@ˠҠ@@@?L 0@iTAAZT`TSOK @@_"@@T4TZ3#RBR *@`R5t|s!TRs5_{ `@@ @{¨_@ {R@$4A Ab {A!A_ִ/@hn{Sq!TBb?TRSA{è_ @6@ @!`RR !<?q(T  ??TEҀ?T@R`R_AR2{ASҶARSA{¨@*@?֠ARSAR{¨_ `Sp{SB/BtBT3R'@q#@o@m qTqBB!RBBB *SA{Ũ_B@@94#@@9q@T#Ba/@@7'@@9qT!B 9SRsRB Ճ`<{ 8C' E@t'@6q!T@SA[B{Ũ_ @5a@@@q T@`s@{StE"4xE@@SA{è_TR{ E5!R8R @{¨_ {S*4EC+[!EF"@_@?D E. *SA{ɨ_ հX{ 4FbA_$qTC|@ d"c|%D@h#@  ҀV`A` @{¨_ R`2 lFA_qmTBQ  {C|@c|hcDA  ҁ6 R{_R_ְ{S[F`@@4F@F ?a `6K`6 `5`2K4Fw 2 SA[B{è_ հX){S@9?qAT!RV"RGRe@SA{è_ bѓ8 Q{S @ @ITdG`RD@SA{è_B_TBAtEchG@`` @@`?t Ta@!aTe{@!@ A ?`@@T`@  @G{¨@_ հ{c*S7t@[#@ 5@9qT ҅ @t@9qTp@` @@?5`!{@! "xu*@?STCzTS#@SA[BcC{Ũ_!R` P tJ  @BT{@`R{_@ @A _֊ R_{S[ck @ @(@˟wIӔs"@B@BSA[BcCkD{Ũ__ TBA@_$@@Uwӵ2@@5s9&Ss"@ZC{SR[ck@@+7wR%` 7 R+@SA[BcCkD{Ǩ_*7P7@ @$Q"#7aT*`@9:AqTR`@@@4BR  @@7@`@9qT`7a@9?q$@zAT`@A@`57@@9q@z`T4a@sB`_?ITBRR"@7@ $"c հ{S[ck@ B@@@5 R@?5@Q CRId @R#BBCd@CBC? C@`4C@C ?B$C RC Rd @CBC@x$qTs@@ Cd@C?C @`5@QSA[BcCkD{Ũ_x$qT@Q?@ @@X {S*?TSA{¨_{SSA{¨_` @ 4s@@ BA"_@a@"@BA|_ !<?qhT@UҀ$@R`R_ R{!RC CCC`C`C @{¨,=?C@_,{ Ca@9?qATa!_8?qT` @{¨ @{¨,D@@-Rr_kaT@_{S[ci:F@a"@-Rr_kT3@3s @ Tb@)_qT}s3 TF @ a@-Rr?k T`@s@ @ # T "@-Rr_k T @ "@" TFF>##@A'@bFF FZFH `@9qT!RG`@9 4t#@ #@@9?q$@z@ T_b@a"B @a@8Ҫ`@5a@`"! FF5F@@4`@}s@_ qAT @BB}Ҡ`!_pqT"@9_qT!"@9"5F_q@T!h!8(!F#@'@H'@ Tbha8_q T IT$"F``5'@h38'@tFFbeFeF`^FF@@:F@@' `FaFFF@f@R`?7 Z0[Ї^cjr|8_@@T_#T!"c T%hc8h#8$hc8h#8c_T_#hb8h"8B5_{!(G!@ ?ARSy3,Ga@ ?a@ ? @ R{è_ X!_aTRhd8%hd8kT`K_hb8#hb844Bk@TK_Bhd8%hd844TkT`K_R@9_kT5_C@9kB5_q!!$! 0_{* 5_q,T_qT$š{__q{d@9*55Rccd@9D4*5@9kT*@4@9`44{_cd@9*D4`4d@9*4c R!_\T_T_*R Úc qTd@TFTeh$ a8BTDC|Bcah$8"@9b5 _!{  A!$A*`4 @9 4f@9B4 @94!kaT$hjd84@hd84k@T!R**@he8q@z`T[ 4TD_8q T*S*5qT_ T@_8qTHR! R @*{¨_ Տ{SSA{¨SA{¨_{S`h38SA{¨_{"@T*dC_R҄C@c?hT@˥qT"D{x?`qT߼qARR!ߐq@ T?@qATq! R"R!!(Q DӃ c(qB089>T !0L6@95d5{Ĩ_RR9? qTC!8Ac@!8@"@9@98 8@_IT+i"8@B!?T@_IT"i#8@B@_IT+i 8@!?T{Sc@9*|5qTa@9?qAT_xraTs RA|@$sb5!QR!? qARB0_qARBQ|@(T$ T5@C@R\TSA{¨_'s Rf@94Q_dqT@Q|@Ɯ? T&*T*}f@q T TQqT!47`.*}f*fh""qT`.}47`.*}f@"qT`.}4"qT`>}4[{S[cks3A@9N753@"0Tj 8SA[BcCkDsE{Ǩ_?q`T3@ITj 83vR@9qT:R7@9Q$qTqBR!*7@@9?qaT7@9!Q?$q(TBR7@@8ߐqaTQ7RR߰q T7ߔqT3@iTj 8&@9.7߰qT. &@97@? T@/x|qHTߌqT`qT3@ߌq T qT3@Tj 8Q!! š"B!TqTq!T@9qAT@RRRP3@iTRj 8 @yRRR3?3@iTRj 8 @yRRR3/3@iTRj 8!@9RRRC3%@9RRRC3@iTRj 8)@9RRRC3-@9RRRC1@9RRRC5@9RRRC9@9RRRC=@9RRRC3@iTRj 8iTRj!8R3***ITj 8*q Tq)TRk)Tk(TRARTd$*j 8!QR3!643RRRRRRRRRTb$BB`2j 8!Q"R*B AiThb85F:53@RTE433@R_Te4B343@R?TB43BITj#8c%R%iTha8h!8!%RITj!8!"Rj38{S[$@" AAV|@iT AŅRrA@ ?֟`T@*SA[B{ר_2*8{CC#KCOCDG{ɨ_{CC#K!AGO!@ ?CCD{ɨ_X{S[*@4*RRR@Ts@84qaTQ*qT?|qTD@T qaT?<q87*4_T?kTU`A?qT r`T%R ?qT ER?qTeR5%<?k T$| SQBф$ *Dx$ *dyRRBa$x n{@T@Eg!DE#@CHEaTd@diTc@_ҡ_TLE_TPEB{_ ~8{[VFSck@T(TE!|!Eӕ:R򙧥@&qTqT5`zTD @ Ts?stH T@!R@?4@ R@?@R R@@?@ T@#C@TˁF"@_TF"@G_#TDˀcT_aT @:_T@?AT SA[BcCkD{Ũ_֟TG_T$! { cB"@"h(?T!h(#!T!@@V`RF`R 8{S|| S`SA{¨_F`RrR>{S7RSA{¨_` {cCA@b@_T{¨_a@҅?iT"@_T @F@ET@E"@ @?T"@??B "@_TG!"@?T?T_T_ @!{CSk3AR@A[bAc T`@cT4A@UA"RbA A@A`~{!?T!у(#EB "{!@3 @@AAbAR @@`TbAA@As~s{RJ` @` EӢa@b{!@` `a=3@{ASB[CcDkE_R@A@R#AbAA!TbAgA@AR@`!"E>#{!@@B{ASB[CcDkE3@"@s#@_T6 !@83\dn{S@SA{Ĩ@SA{Ĩ_@~Eӡ@?"T`@B{Ӭ Q$Q?qAz_{@BT @_cTAA`R{_@ F[{@@S@RSA{è_AR@as{S[ @tT* 5c@`@`Xt @SA[B{ĨDB`RHB@@*SA[B{Ĩ_ F{SA!T!ѕ@94"94B@SA{è_ր@R հ{S*q5R@SA{Ĩ_*i 5"94B@aSA@{Ĩ{[*G RS4zOQcPCQ`@4k`TsB`"@9kT`@4`@q9`@[BcCSA{Ũ_44fqT'qiT~qT`"@95 `{S[cks3?`SAD[BcCkDsE@{Ȩ_7Ry @95?@`T?3@!R`??@?@*#Rd` 5@ 5@@5D?@@T*|***H4D@59*!@95qT*`4*A94A49"_qT q@T*oo@44"9|@"Ҁ@kTw҉`@>!Ұ`4@ 59X7 հ{S@SAD@{Ĩ_RzD@gxa_{S[cks@7`@9` 47@94!x!Q!?dqTR]QE@T@Es?`?aE?@"@4-@ @LqTSA[BcCkDsE{Ȩ_ @5 @hz84@7@sa@9?qTs?@Hн{S[E;@ ;@SA[B{Ũ_c@E`?`4F;@@5s@H<F{S[c#@@+@pTtSh58R"Fac@CcCC:`@@`@@08s@)#@SA[BcC{Ǩ_mn{S@!@!@? Te@`@@R@FFFR@SA{è_ Rq{SC@"@kTR@*SA{è_*4{S[*`4`@7@`? 4 R@*SA[B{Ȩ_'@7@@`vG@@G`?`4G@5@ H<{S*@5'@?qT0@@T*SA{è_?qAT@R?8@@R`9@@@@@`@944@@@@'@B !Q`?8@<@@@@@8{?q[SR@@@ R@(q`T4q!T@@@ ?P@RSA[B{Ũ_Q?xqTqlT38@#9'9w*@# ? qTqmTBKsQ@38@# ? P{$ASJ*AR@`@94.AC {S*RZ3# R9&qAT! @ ?RKQ1TSA{Ĩ_Rb@@?֟*qTR{S[R@95@SA[B{Ĩ_A?q30@u*@P{ Aa@aR ?` @@?s@R @{¨_a@ ?@5s@P{S Ba@aR ?s@R*SA{¨_a@ ?֔*s@ PlqRrAzT{@{_ R_{`B @ @{¨_a6@a ?s@P{4{_ B@ Հ!B _ր{a(@$@a @  @{¨_{S(@@Y@~B*SA@{¨_ְ{*S[c* R@8Dq^zT[BSAcC{Ũ_77@@@@qMz TRDD@t4@HDR9 d@G#*?4G@77 Ҽ+4Rs@ JLD "@PDRҥ@"@ "@"@_TTD@5@XDRa@a'@ ?ֵ@@c@'@`?@5a@!a@as@Rs*'@ ?4'@ ?d@G#*?5G@j`Ts@@c@"@'@`?5a@a@'@ ?'@ ? 4 /6Gs{*S*DRDDD@sR b@bs@*@?`4@SA{è_ֵ/6D!D_|S<rT"Q*B<_xq$IzT?4qTB$b7! 2_4qT?4qT*\qT|@!E x`"Q QB<<_|qBz)T?4qTR 8R_րRSA[B{è_{ShE[*`@5@@?@`@b@a @ u5R!E!@4R_R{è_{Rs@5'@6 A(62A 62A6262 E@E5@_q`T_E@ @?qT?qT5@!E!@9@!@!F (F@,F5@_q`T_0F@ @ @`F@5dF@qAThF@ @$@ @y! @y@*_RR F@5F@qT{FS@ @b@`&@@@?a@ ?b@~@SA{¨_ { F@5`@`BRFF!0@@j` @R{¨_{ 3Ga@?qTR}Ro` @R{¨_{StG@5xG`@1T@5RSA{¨_ RS5|GR,a @?1`TSa@?1`T" R`R { *5b~Sa>@G @@{¨ @@ @{¨_{!G!@ 3 @`4  @S@y @ <3{è_`&@d@?{S@5Rc@@@ @`X@kTReshMjbRCy"RkTF_|qTZ"xq( TM T@@?SA{ƨ_aRkTTA2RkTHT2RkT!2Rk`T*B<a2RkT!RkTRᢄRk T(TᡄRkTaRkTRaRkTRBRBRRBRRRRkThqTd@Xa$Y"x*!  @@? {!?@ABCDWXclosing %s efidiskdisk/efi/efidisk.copening %s not a efidiskno such devicem = %p, last block = %llx, block size = %x, io align = %x invalid buffer alignment %dinvalid sector size %dopening %s succeeded hd%diterating %s fd%dcd%dd%dwriting 0x%lx sectors at the sector 0x%llx to %s no media in `%s'failure writing sector 0x%llx to `%s'reading 0x%lx sectors at the sector 0x%llx from %s failure reading sector 0x%llx from `%s'%s,%sRSDTXSDTFACPD$ line size: %lld cachekern/arm64/cache.cI$ line size: %lld Unknown cache line size!invalid arch-dependent ELF magicreloc offset is out of the segment reloc_abs64 %p => 0x%016llx dlkern/arm64/dl.ctrampoline out of rangerelocation out of range reloc_prel32 %p => 0x%016llx reloc_got %p => 0x%016llx (0x%016llx) HI21 out of rangeADR_GOT_PAGE without matching LD64_GOT_LO12_NCLD64_GOT_LO12_NC without matching ADR_GOT_PAGE%lxrelocation 0x%s is not implemented yet reloc_xxxx64 %p %c= 0x%lx dlkern/arm64/dl_helper.crequested buffer size is too largeoverflow is detectednew read is position beyond the end of the written data%s: the command is not allowed when lockdown is enforcedone argument expected/%s%s (%s) unknown invalid argument(%s): Filesystem is %s. %s='%s' not an assignmentSet an environment variable.[ENVVAR=VALUE]setRemove an environment variable.ENVVARunsetList devices or files.[ARG]lsInsert a module.MODULEinsmod%s,%srootvariable `%s' isn't set%s read failed diskkern/disk.cClosing `%s'. Opening `%s'... disk `%s' not foundsector sizes of %d bytes aren't supported yetno such partitionOpening `%s' failed. attempt to read or write outside of partitionattempt to read or write outside of disk `%s'Read out of range: sector 0x%llx (%s). `%s' is already loadedmodule at %p, size 0x%lx moduleskern/dl.cELF header smaller than expectedinvalid arch-independent ELF magicthis ELF file is not of the right typeELF sections outside corerelocating to %p .modnameno module name found.module_licenseno license section in module %.63sLICENSE=GPLv3.moddepsLICENSE=GPLv3+LICENSE=GPLv2+incompatible license in module %.63s: %.63ssymbol `%s' not foundgrub_mod_initgrub_mod_finiunknown symbol type `%d'relocation without symbol tableflushing 0x%lx bytes at %p module name: %s init function: %p prefixvariable `%s' isn't set%s/arm64-efi/%s.modmismatched names.textdynamic_load_symbols %p Print infomation useful for GDB debugginggdbinfo/%sVendor(%pG)[%x: ]%02x set_virtual_address_map failedcould not set EFI variable `%s'section %d is last section; invalid. sectionskern/efi/efi.csection %d has bad magic %08x, should be %08x returning section info for section %d: "%s" malformed EFI Device Path node has length=%dmalformed EFI Device Path node has length=%lu/EndEntire /EndThis /EndUnknown(%x) /PCI(%x,%x)/PCCARD(%x)/MMap(%x,%llx,%llx)Hardware/Ctrl(%x)/UnknownHW(%x)/ACPI(%x,%x)/ACPI(%x,%s,%x)%s)/UnknownACPI(%x)/ATAPI(%x,%x,%x)/SCSI(%x,%x)/FibreChannel(%llx,%llx)/1394(%llx)/USB(%x,%x)/USBClass(%x,%x,%x,%x,%x)/I2O(%x)/MacAddr(%02x:%02x:%02x:%02x:%02x:%02x,%x)/IPv4(%u.%u.%u.%u,%u.%u.%u.%u,%u,%u,%x,%x)/IPv6(%x:%x:%x:%x:%x:%x:%x:%x,%x:%x:%x:%x:%x:%x:%x:%x,%u,%u,%x,%x)/InfiniBand(%x,%llx,%llx,%llx)/UART(%llu,%u,%x,%x)/Sata(%x,%x,%x)/Vlan(%u)Messaging/UnknownMessaging(%x)/HD(%u,%llx,%llx,%02x%02x%02x%02x%02x%02x%02x%02x,%x,%x)/CD(%u,%llx,%llx)Media/File((null))/File(%s)/Protocol(%pG)/UnknownMedia(%x)/BIOS(%x,%x,%s)/UnknownBIOS(%x)/UnknownType(%x,%x) found registered FDT @ %p linuxkern/efi/fdt.cnot found registered FDT mods%lxinvalid memory address (0x%s > 0x%s)out of memoryCould not malloc memory to remember EFI allocation. Exiting GRUB won't free all memory. couldn't retrieve memory mapmemory map buffer is too smallcouldn't terminate EFI servicesTrying to terminate EFI services again cannot get EFI memory map sizecannot allocate memory for memory mapcannot allocate memory for new memory maperror fetching memory map from EFIMemory starting at %p (%u pages) marked as free, but EFI would not allocatecould not allocate all requested memory: %lu pages still required after iterating EFI memory map%sprohibited by secure boot policyshim_lock protocol not foundbad shim signatureDisabledUNKNOWNEnabledSecureBootSetupModeMokSBStateUEFI Secure Boot state: %s efikern/efi/sb.cyshim_lockshim_lock_verifier0falsedisablenoerror: %s. assert: error stack overflow detected! missing `%c' symbolattempt to read past the end of fileattempt to seek outside of the fileinvalid file name `%s'beyond the total sectorsDetecting %s... fskern/fs.c/error: %s. %s detection failed. unknown filesystemblocklistylockdownlockdown_verifier%sroot(%s)%scmdpatharm64-efiprefixnormal%s%sdebugalloverflow is detectedunrecognized numberpositional arguments are not supportedunexpected formattoo many arguments(null)%s:%d:%s: invalid formatarguments types do not match Aborted. Press any key to exit.string too longunaligned pointer %pout of range pointer %pdouble free at %palloc magic is broken at %p: %lxnull in the ringfree magic is broken at %p: 0x%xout of memoryoverflow is detectedUsing memory for heap: start=%p, end=%p regionskern/mm.cCan we extend into region above? %p + %lx + %lx ?=? %p Yes: extending a region: (%p -> %p) -> (%p -> %p) Can we extend into region below? %p + %x + %lx + %lx ?=? %p No: considering a new region at %p of size %lx overflow is detectedpeek out of range%dsub-partition %s%d of (%s,%s) ends after parent. partitionkern/partition.cUnknown command `%s'. helpTry `help' for usage > grub rescue> Entering rescue mode... file: %s type: %d verifykern/verifiers.cverification requested but nobody cares: %sbig file signature isn't implemented yetpremature end of file %sstring: %s, type: %d verified_readcannot set text modeconsolegrub_abortgrub_acpi_find_fadtgrub_acpi_find_tablegrub_arch_sync_cachesgrub_byte_checksumgrub_callocgrub_command_listgrub_current_contextgrub_debug_enabledgrub_device_closegrub_device_iterategrub_device_opengrub_disk_cache_tablegrub_disk_closegrub_disk_dev_listgrub_disk_dev_registergrub_disk_dev_unregistergrub_disk_firmware_finigrub_disk_firmware_is_taintedgrub_disk_native_sectorsgrub_disk_opengrub_disk_readgrub_disk_write_weakgrub_divmod64grub_dl_headgrub_dl_loadgrub_dl_load_core_noinitgrub_dl_refgrub_dl_ref_countgrub_dl_unloadgrub_dl_unrefgrub_efi_allocate_any_pagesgrub_efi_allocate_fixedgrub_efi_allocate_pages_realgrub_efi_close_protocolgrub_efi_compare_device_pathsgrub_efi_duplicate_device_pathgrub_efi_find_configuration_tablegrub_efi_find_last_device_pathgrub_efi_find_mmap_sizegrub_efi_finish_boot_servicesgrub_efi_free_pagesgrub_efi_get_device_pathgrub_efi_get_filenamegrub_efi_get_firmware_fdtgrub_efi_get_loaded_imagegrub_efi_get_memory_mapgrub_efi_get_ram_basegrub_efi_get_securebootgrub_efi_get_variablegrub_efi_get_variable_with_attributesgrub_efi_image_handlegrub_efi_is_finishedgrub_efi_locate_handlegrub_efi_locate_protocolgrub_efi_net_configgrub_efi_open_protocolgrub_efi_print_device_pathgrub_efi_set_text_modegrub_efi_set_variablegrub_efi_set_variable_to_stringgrub_efi_set_variable_with_attributesgrub_efi_set_virtual_address_mapgrub_efi_stallgrub_efi_system_tablegrub_efidisk_get_device_handlegrub_efidisk_get_device_namegrub_env_exportgrub_env_getgrub_env_get_boolgrub_env_setgrub_env_unsetgrub_env_update_get_sortedgrub_err_printed_errorsgrub_errmsggrub_errnogrub_errorgrub_error_popgrub_error_pushgrub_exitgrub_fatalgrub_file_closegrub_file_filtersgrub_file_get_device_namegrub_file_opengrub_file_progress_hookgrub_file_readgrub_file_seekgrub_file_verifiersgrub_freegrub_fs_autoload_hookgrub_fs_listgrub_fs_probegrub_get_time_msgrub_getkeygrub_getkey_noblockgrub_getkeystatusgrub_gettextgrub_is_lockdowngrub_is_shim_lock_enabledgrub_isspacegrub_key_is_interruptgrub_list_pushgrub_list_removegrub_lockdowngrub_machine_acpi_get_rsdpv1grub_machine_acpi_get_rsdpv2grub_machine_finigrub_mallocgrub_memaligngrub_memcmpgrub_memmovegrub_memsetgrub_millisleepgrub_mm_add_region_fngrub_mm_basegrub_modbasegrub_named_list_findgrub_net_opengrub_net_poll_cards_idlegrub_parser_cmdline_stategrub_parser_split_cmdlinegrub_partition_get_namegrub_partition_iterategrub_partition_map_listgrub_partition_probegrub_print_errorgrub_printfgrub_printf_grub_printf_fmt_checkgrub_puts_grub_real_dprintfgrub_reallocgrub_rebootgrub_refreshgrub_register_command_lockdowngrub_register_command_priogrub_register_variable_hookgrub_snprintfgrub_strchrgrub_strcmpgrub_strcpygrub_strdupgrub_strlengrub_strncmpgrub_strndupgrub_strrchrgrub_strtoulgrub_strtoullgrub_strwordgrub_term_highlight_colorgrub_term_inputsgrub_term_inputs_disabledgrub_term_normal_colorgrub_term_outputsgrub_term_outputs_disabledgrub_term_poll_usbgrub_unregister_commandgrub_utf8_to_utf16_allocgrub_verify_stringgrub_vprintfgrub_vsnprintfgrub_xasprintfgrub_xputsgrub_xvasprintfgrub_zallocmemcmpmemcpymemmovememsetT(0![NYd9ir;0--'?Mqh"XNhEC@DTD)C7jSjkiSd\e[n6kTXhhp[YhfTj0rs X'hVMcxR@RhS\S`VW;Ua8UhT(|zpxx8wXy.yIamxP{p|{Tx~}8~)8LV lyxXv8H%4؆E<SOpO`*`\H@8|3@A`ZеtxHȹ| t,*5GHTT`m@-H,zP '4A,O\vhpPxX-)< IXإgrL----LICENSE=GPLv3+mimg`RELF0@@ {S*@@@SA{è_ց@szTR{  @`@ !@`@@T @{¨{ `@ @{¨_{S[c+ko; @9qT4z@9_qD@zTb@C@q@T@R!scaTq`T9`@@4?z9`4+@SA[BcCkD{ɨ_TqT @9qAT@@@!@G?ր4z9;@o@va@ @ qT`@` q!T@ R@@ @?@@@9qTa@BRT5@@4`@@ [Rb@+@SA[BcCkD@R{ɨ{S[c#c7@9qT@R**C7/@CBR *5`@@#@*SA[BcC{Ǩ_C**4C7@@@CkqAzT@RqBzAT@ {S5R@SA{è_*`@@74ha8ha8Q4*Qd4iqc0*dqHT!?kTeqHTdqHTkT@ @ RR*i*d{ @[U$&RS cksK@_TqT@`RSA[BcCkDsE{ɨ_֟T@_ITt3zQ&՚ѕ$՚C` @ ?cT3@?@@?ֈ@@5cB9 C@T@jB?AT@BKB|@FS@@!@@ 5xK98*RR not a directorytoo deep nesting of symlinksfile `%s' not foundinvalid file name `%s'not a regular fileblocksize too largeattempt to read past the end of fileLICENSE=GPLv3+fshelp`h8@HPX`)FU`l$x$dgrub_fshelp_find_filegrub_strdupgrub_fshelp_find_file_lookupgrub_disk_readgrub_errnogrub_memsetgrub_fshelp_read_filegrub_strcmpgrub_mallocgrub_errorgrub_free (`,``@T8X8`@PPTP`HdHHHHH X(X48@HPX-<AX (TX08<tk.symtab.strtab.shstrtab.rela.text.rodata.str1.1.data.module_license.bss.modname @@0 &25|;|KP   Y,ELF)@@ {(@@@R{_ {S[ckW@A @+a 6*[aRR8R@x?kAT@y@yA 4_k T"Q5+@SA[BcCkD{Ǩ_#d|jd_kT@@y@@(#`@("@#`4@ R%|$heT_k,T"Q4RA|haA@y?iTS @y@@s`T҃R@ R.TBS(@@3R2ѡ*a" |S!|S?T@X@R"6Ro"Q~~@o@A4@*&ؚB~! ٚ5sQK1!To@|˟bT@\@ T@`@SR@{@ @  @t@ǀ@@{B_  @0@E{S[5Q"R(@@PA( B BQE|@ $db@D 6dATKaf@` c"@c|!6T@6T!|T!TT`@a@!! ƚ@@5c@ Ra( aN@4b@ya*@eRA  ;@qmT[@B|@!`@aҡ @4@SA[B{Ǩ_cR {S?`*A@@5ar@y`R?kT`@<qTa*@A4aN@4b@y4(!R kT@ R@,qT@ R#`b@"RrjT@86cAy4`QjATrT$R*B kT@b aRtARs`H@5@SA{è_֡R {S@@@0@@@@SA@{è_ {CS@@@n@@y@y@yZ@yZ@yZ@yZ@ycZ@yBZ!Z<Z<<<<c<@B<!<@@@{ASB@_{S@@@/@@@SA@{è_ {S[ck@4`*@X7`@kT*ct:@@@`5@y 4[@ 4{A9 4"e@@5 `@[@{A9k"8A94_qTAR?4 RSA[BcCkD{֨_`@b"a@f@@4R@R_qaTaR_q"R@@4 R@y @q T(@qT @q@y {S@@'@'4@ ER$@#@@5@@h'@@!@T'@@@@SA{Ũ_{[S@'@@@V@@'@@T@-#%R@@*5'@@a4'@ (@X6@R*@ * 4@! '@@ l@!@* "@*SA[B{Ũ_{S@5`@b"a@@@5`*@@X6@RSA{¨_`@a@*?qTa`@j 8U@@`4 {S[*R`@4@929`@#@9 q 39 @`?SA[B{Ũ_ր @b"a@E@@a5!Ra`@4 { @@@ @{¨_ @ invalid extentsomething wrong with extentext2fs doesn't support quadruple indirect blocksnot an ext2 filesystemfilesystem has unsupported incompatible features%04x%04x-%04x-%04x-%04x-%04x%04x%04xdirectory is encryptedfile is encryptedsymlink is encryptedext2LICENSE=GPLv3+fshelpext208x(08@H08@H   x               < (#9HUdp{$x$dgrub_mod_initgrub_mod_finigrub_fshelp_find_filegrub_xasprintfgrub_memmovegrub_disk_readgrub_dl_refgrub_errnogrub_memsetgrub_fshelp_read_filegrub_fs_listgrub_mallocgrub_errorgrub_list_removegrub_freegrub_strndupgrub_dl_unrefgrub_list_push G00I0G$DP>\G`dlEGE>+<xDxdBx8|>((>(@HDh>lpEEG@\s88?I G@@8@@`0h0p?88<IG@@08@@\dl?HIG@  D  D    $  , Ed G @  x x ?          ;(  0  P GX G` Ix    @    ?   G G I  (  ,  0  8 ;`  d  l E = G  @   0  4  H  L  T Et D =   G @ AXG@JC(( F(  (08H@HH.symtab.strtab.shstrtab.rela.text.rodata.str1.1.rela.data.module_license.bss.moddeps.modname @0@` &2p :P5@`( @PU^ ;  )g`ELF @@ C@C{S[cks 4@@{@*SA[BcCkDsEC_GyJR_kT@`R*C"G9_qT!@qAT@R5R"!|@ *5W@4qT@C@ 5@C4SaRb@*sG Ԛ@ Ԛ@@@ F`?֠5A qaTR9AkT R@"b@R@@R@"Ԛ@@! @ no signatureGPT entry %d: start=%lld, length=%lld gptpartmap/gpt.cno valid GPT headerRead a valid GPT header no GPT partition map foundEFI PARTLICENSE=GPLv3+part_gpt (08@HPX`hh#;JUt$x$dgrub_mod_initgrub_mod_finigrub_partition_map_listgrub_disk_readgrub_errnogrub_gpt_partition_map_iterategrub_real_dprintfgrub_errorgrub_list_removegrub_list_pushgrub_memcmp8@D  ``((!PP8@0L!\@88HX@HX@H0 (08 @4H8PFXZ`shlpt| 4 .symtab.strtab.shstrtab.rela.text.rodata.rodata.str1.1.rela.data.module_license.bss.modname @@ &.2B(=@ 0 HX] 0   f (,gpt2)/boot/grub` (x08@HPX`hpx (08@H  `آУأx (08@HШبPX @08Pخ08@HPX`hp08@HPX`hpx`08@H (hا08@H (@h (08` (08@HPX`hpxȭЭ ȯPP (X`h(08x`У`0HPXX`hpxh`hpxȣУأ (08@HPX`hpx`ئx08xȭЭح`px`hpx (@ȣУ08@HPX`hpxpx0`h8@HPةxHhج`hpxȮЮ0`8 (08@ȧX (08@HPX`hpPX@HxPX`h8أx `hp৸ (08(H (08@hpȥH`hpȭ(08`hpxȡСHPXpأ@px@HPXx0ЪPPX`ȬЬ`hpح8Pȯ x8@HPXxȤФؤऐإ(0Xا0@HX`hpxȨب (8@PXhpȩЩ(0@HX`pxЪت 08HP`hxȫث (8@PXhpȬЬ(0@HX`pxЭح 08HP`hxȮخ (8@PXhpȯЯ (0@HX`pxРؠ 08HP`hxȡء (8@PXhpȢТ(0@HX`pxУأ 08HP`hxȤؤ (8@PXhpȥХ(0@HX`pxЦئ 08HP`hxȧا (8@PXhpȨШ. |(Z(Z(ZO.. |(Z(Z(ZAbootaTa64.efiBOOTAA64EFI |(Z(Z(ZPPMZ@ !L!This program cannot be run in DOS mode. $PEdT `P @.text `.data@mods``@.reloc@@@BBX@XABX@`$@zT?q_@!Q@ACR<@@@D@$@_{ @S' @{¨_{ @`@`@` @~ @{¨@q {S[cA>X@@RR?s"@"@Ѿ4>,@b@@  8fot@`@_ @T!@!$Q {S@@SA{¨_a@; 4s:@{S[R@t@y|@y|`  @z@ykT@SA[B{Ĩ_`@4v@ys@_kaT@_@{ @b@ @{¨\A@R, @R{¨_ Վ{S[* A@@SA[B{Ĩ_`RR"rw vu@95!A ?R"AA xabx!R! հ {S@` @` SA{¨_ր@@R_ {S@` @Q` SA{¨_ր@@R_`@_R{S[c@q,T`@@?B@!Ta:@A ?@"aTt @`2@H`@FD RSA[BcC{Ĩ_"!8@@@T@42@)R{SckMRF["FsFTFRb *5v"@yqTF@RY [BSAcCkDsE{ɨ_a@ைҀɨ?T`@9qT`@qTF|a@`v@ybz@yTFR "F FPRFMF@F@R @4] @`F@F@R 5 F@ @!F`@5F `@;bz@y`k T#o*5H#}}`#2 F@5b@Rcz@y`?kTATu@u`z@yk"#T@$qDz T`v@y@!F`@4@!F`4@F@R@c Av_T@9@4F@55 @\ @ZѵZZ@{#av@yZ6Rv@v`z@y_kCT}VC@}V@6 @@@˵ѻuqT qT@@`v@yZ@aR@qTdv@y!u(@Rav@y@A!|!a|! @jZ@7ww@kT@9_ q TrT7@~S@_q6@ @yvT4a5RR#r _q` TF@R !"@95@ ?R!F@! "x`F@R 4@@??@`4B@@@@@4S 9{@@4R`4F@@@4"R@5F5@F5@@@y@Ca@.@?k`Tc@@ F@R 5F"FGRFFFSR@F"FFSR@F"FFd4~4w<Vhq0>Le{  @A ?G@a: @{¨_{!RS?  @  @SA{è_ 5T  3` @Q` {[GS_ tGGR SA[B{è_G@`5G@R  G G@~{@ @R{_  R,@0@4@ (ORRR RB_AT_$@x4f qT d( |S#|S@cl28#DL!c`2`2!`2888R 8qhT8qHTf|Sd2cc`2&$89a ?qiTa ?qTR8a| S !h28a,Fc!`2c`288*{"S[5@yRQA*S`@yPqTSA[B{èAJajt8AFkhTsRZnp{B@y3`:@y+`6@y#`2@y`.@y`*@y `&@yg"@yf@ye@yd@yc@yb@ya @yB}bAd@a"@9 BvdJ@9a@cF@9bB@9$Bnc@yb@ya @y(Ba @y,B0B#4B? qTT?qT?q@TTB?qT?qATaPBX`@9+`@9#`~@9`z@9`v@9 `r@9b@gn@9fj@9ef@9db@9a@8B5a@b@Eb>EC@E@RuSA[BcC{Ȩ_**DE#*@0@*@?HE`R]'@@#'**?ґ@'@0@ @@R`?@7@!LE"@L '@PE- CR"RCR*{[6ES @4A@TR @t@s@au2@@SA[B{ƨ_֍ RBCU3Sc!E!@!0@%@?a@aaZ R{S[cs\k8F@C1TF @@?bTFRSA[BcCkDsE{ǨB`F@SA[BcCkDsE{Ǩ_Cx*qT@>aFo@F!@@!0@#t@@`?o@@?T,F'Fn  t @Aw@v@uR3@l{cC *1T0GRF{¨_ @t {S[c*k+`+@SA[BcCkD@`R{ʨ%75ZF 7?L@`R +@SA[BcCkD{ʨ_1T@FHT;@_Ts?sLC T @`RZ@qT@(T@0DTc@O@?T@ˡ@ 0@ˠҠ@@@?L 0@iTAAZT`TSOK @@_"@@T4TZ3#RBR *@`R5t|s!TRs5_{ `@@ @{¨_@ {R@$4A Ab {A!A_ִ/@hn{Sq!TBb?TRSA{è_ @6@ @!`RR !<?q(T  ??TEҀ?T@R`R_AR2{ASҶARSA{¨@*@?֠ARSAR{¨_ `Sp{SB/BtBT3R'@q#@o@m qTqBB!RBBB *SA{Ũ_B@@94#@@9q@T#Ba/@@7'@@9qT!B 9SRsRB Ճ`<{ 8C' E@t'@6q!T@SA[B{Ũ_ @5a@@@q T@`s@{StE"4xE@@SA{è_TR{ E5!R8R @{¨_ {S*4EC+[!EF"@_@?D E. *SA{ɨ_ հX{ 4FbA_$qTC|@ d"c|%D@h#@  ҀV`A` @{¨_ R`2 lFA_qmTBQ  {C|@c|hcDA  ҁ6 R{_R_ְ{S[F`@@4F@F ?a `6K`6 `5`2K4Fw 2 SA[B{è_ հX){S@9?qAT!RV"RGRe@SA{è_ bѓ8 Q{S @ @ITdG`RD@SA{è_B_TBAtEchG@`` @@`?t Ta@!aTe{@!@ A ?`@@T`@  @G{¨@_ հ{c*S7t@[#@ 5@9qT ҅ @t@9qTp@` @@?5`!{@! "xu*@?STCzTS#@SA[BcC{Ũ_!R` P tJ  @BT{@`R{_@ @A _֊ R_{S[ck @ @(@˟wIӔs"@B@BSA[BcCkD{Ũ__ TBA@_$@@Uwӵ2@@5s9&Ss"@ZC{SR[ck@@+7wR%` 7 R+@SA[BcCkD{Ǩ_*7P7@ @$Q"#7aT*`@9:AqTR`@@@4BR  @@7@`@9qT`7a@9?q$@zAT`@A@`57@@9q@z`T4a@sB`_?ITBRR"@7@ $"c հ{S[ck@ B@@@5 R@?5@Q CRId @R#BBCd@CBC? C@`4C@C ?B$C RC Rd @CBC@x$qTs@@ Cd@C?C @`5@QSA[BcCkD{Ũ_x$qT@Q?@ @@X {S*?TSA{¨_{SSA{¨_` @ 4s@@ BA"_@a@"@BA|_ !<?qhT@UҀ$@R`R_ R{!RC CCC`C`C @{¨,=?C@_,{ Ca@9?qATa!_8?qT` @{¨ @{¨,D@@-Rr_kaT@_{S[ci:F@a"@-Rr_kT3@3s @ Tb@)_qT}s3 TF @ a@-Rr?k T`@s@ @ # T "@-Rr_k T @ "@" TFF>##@A'@bFF FZFH `@9qT!RG`@9 4t#@ #@@9?q$@z@ T_b@a"B @a@8Ҫ`@5a@`"! FF5F@@4`@}s@_ qAT @BB}Ҡ`!_pqT"@9_qT!"@9"5F_q@T!h!8(!F#@'@H'@ Tbha8_q T IT$"F``5'@h38'@tFFbeFeF`^FF@@:F@@' `FaFFF@f@R`?7 Z0[Ї^cjr|8_@@T_#T!"c T%hc8h#8$hc8h#8c_T_#hb8h"8B5_{!(G!@ ?ARSy3,Ga@ ?a@ ? @ R{è_ X!_aTRhd8%hd8kT`K_hb8#hb844Bk@TK_Bhd8%hd844TkT`K_R@9_kT5_C@9kB5_q!!$! 0_{* 5_q,T_qT$š{__q{d@9*55Rccd@9D4*5@9kT*@4@9`44{_cd@9*D4`4d@9*4c R!_\T_T_*R Úc qTd@TFTeh$ a8BTDC|Bcah$8"@9b5 _!{  A!$A*`4 @9 4f@9B4 @94!kaT$hjd84@hd84k@T!R**@he8q@z`T[ 4TD_8q T*S*5qT_ T@_8qTHR! R @*{¨_ Տ{SSA{¨SA{¨_{S`h38SA{¨_{"@T*dC_R҄C@c?hT@˥qT"D{x?`qT߼qARR!ߐq@ T?@qATq! R"R!!(Q DӃ c(qB089>T !0L6@95d5{Ĩ_RR9? qTC!8Ac@!8@"@9@98 8@_IT+i"8@B!?T@_IT"i#8@B@_IT+i 8@!?T{Sc@9*|5qTa@9?qAT_xraTs RA|@$sb5!QR!? qARB0_qARBQ|@(T$ T5@C@R\TSA{¨_'s Rf@94Q_dqT@Q|@Ɯ? T&*T*}f@q T TQqT!47`.*}f*fh""qT`.}47`.*}f@"qT`.}4"qT`>}4[{S[cks3A@9N753@"0Tj 8SA[BcCkDsE{Ǩ_?q`T3@ITj 83vR@9qT:R7@9Q$qTqBR!*7@@9?qaT7@9!Q?$q(TBR7@@8ߐqaTQ7RR߰q T7ߔqT3@iTj 8&@9.7߰qT. &@97@? T@/x|qHTߌqT`qT3@ߌq T qT3@Tj 8Q!! š"B!TqTq!T@9qAT@RRRP3@iTRj 8 @yRRR3?3@iTRj 8 @yRRR3/3@iTRj 8!@9RRRC3%@9RRRC3@iTRj 8)@9RRRC3-@9RRRC1@9RRRC5@9RRRC9@9RRRC=@9RRRC3@iTRj 8iTRj!8R3***ITj 8*q Tq)TRk)Tk(TRARTd$*j 8!QR3!643RRRRRRRRRTb$BB`2j 8!Q"R*B AiThb85F:53@RTE433@R_Te4B343@R?TB43BITj#8c%R%iTha8h!8!%RITj!8!"Rj38{S[$@" AAV|@iT AŅRrA@ ?֟`T@*SA[B{ר_2*8{CC#KCOCDG{ɨ_{CC#K!AGO!@ ?CCD{ɨ_X{S[*@4*RRR@Ts@84qaTQ*qT?|qTD@T qaT?<q87*4_T?kTU`A?qT r`T%R ?qT ER?qTeR5%<?k T$| SQBф$ *Dx$ *dyRRBa$x n{@T@Eg!DE#@CHEaTd@diTc@_ҡ_TLE_TPEB{_ ~8{[VFSck@T(TE!|!Eӕ:R򙧥@&qTqT5`zTD @ Ts?stH T@!R@?4@ R@?@R R@@?@ T@#C@TˁF"@_TF"@G_#TDˀcT_aT @:_T@?AT SA[BcCkD{Ũ_֟TG_T$! { cB"@"h(?T!h(#!T!@@V`RF`R 8{S|| S`SA{¨_F`RrR>{S7RSA{¨_` {cCA@b@_T{¨_a@҅?iT"@_T @F@ET@E"@ @?T"@??B "@_TG!"@?T?T_T_ @!{CSk3AR@A[bAc T`@cT4A@UA"RbA A@A`~{!?T!у(#EB "{!@3 @@AAbAR @@`TbAA@As~s{RJ` @` EӢa@b{!@` `a=3@{ASB[CcDkE_R@A@R#AbAA!TbAgA@AR@`!"E>#{!@@B{ASB[CcDkE3@"@s#@_T6 !@83\dn{S@SA{Ĩ@SA{Ĩ_@~Eӡ@?"T`@B{Ӭ Q$Q?qAz_{@BT @_cTAA`R{_@ F[{@@S@RSA{è_AR@as{S[ @tT* 5c@`@`Xt @SA[B{ĨDB`RHB@@*SA[B{Ĩ_ F{SA!T!ѕ@94"94B@SA{è_ր@R հ{S*q5R@SA{Ĩ_*i 5"94B@aSA@{Ĩ{[*G RS4zOQcPCQ`@4k`TsB`"@9kT`@4`@q9`@[BcCSA{Ũ_44fqT'qiT~qT`"@95 `{S[cks3?`SAD[BcCkDsE@{Ȩ_7Ry @95?@`T?3@!R`??@?@*#Rd` 5@ 5@@5D?@@T*|***H4D@59*!@95qT*`4*A94A49"_qT q@T*oo@44"9|@"Ҁ@kTw҉`@>!Ұ`4@ 59X7 հ{S@SAD@{Ĩ_RzD@gxa_{S[cks@7`@9` 47@94!x!Q!?dqTR]QE@T@Es?`?aE?@"@4-@ @LqTSA[BcCkDsE{Ȩ_ @5 @hz84@7@sa@9?qTs?@Hн{S[E;@ ;@SA[B{Ũ_c@E`?`4F;@@5s@H<F{S[c#@@+@pTtSh58R"Fac@CcCC:`@@`@@08s@)#@SA[BcC{Ǩ_mn{S@!@!@? Te@`@@R@FFFR@SA{è_ Rq{SC@"@kTR@*SA{è_*4{S[*`4`@7@`? 4 R@*SA[B{Ȩ_'@7@@`vG@@G`?`4G@5@ H<{S*@5'@?qT0@@T*SA{è_?qAT@R?8@@R`9@@@@@`@944@@@@'@B !Q`?8@<@@@@@8{?q[SR@@@ R@(q`T4q!T@@@ ?P@RSA[B{Ũ_Q?xqTqlT38@#9'9w*@# ? qTqmTBKsQ@38@# ? P{$ASJ*AR@`@94.AC {S*RZ3# R9&qAT! @ ?RKQ1TSA{Ĩ_Rb@@?֟*qTR{S[R@95@SA[B{Ĩ_A?q30@u*@P{ Aa@aR ?` @@?s@R @{¨_a@ ?@5s@P{S Ba@aR ?s@R*SA{¨_a@ ?֔*s@ PlqRrAzT{@{_ R_{`B @ @{¨_a6@a ?s@P{4{_ B@ Հ!B _ր{a(@$@a @  @{¨_{S(@@Y@~B*SA@{¨_ְ{*S[c* R@8Dq^zT[BSAcC{Ũ_77@@@@qMz TRDD@t4@HDR9 d@G#*?4G@77 Ҽ+4Rs@ JLD "@PDRҥ@"@ "@"@_TTD@5@XDRa@a'@ ?ֵ@@c@'@`?@5a@!a@as@Rs*'@ ?4'@ ?d@G#*?5G@j`Ts@@c@"@'@`?5a@a@'@ ?'@ ? 4 /6Gs{*S*DRDDD@sR b@bs@*@?`4@SA{è_ֵ/6D!D_|S<rT"Q*B<_xq$IzT?4qTB$b7! 2_4qT?4qT*\qT|@!E x`"Q QB<<_|qBz)T?4qTR 8R_րRSA[B{è_{ShE[*`@5@@?@`@b@a @ u5R!E!@4R_R{è_{Rs@5'@6 A(62A 62A6262 E@E5@_q`T_E@ @?qT?qT5@!E!@9@!@!F (F@,F5@_q`T_0F@ @ @`F@5dF@qAThF@ @$@ @y! @y@*_RR F@5F@qT{FS@ @b@`&@@@?a@ ?b@~@SA{¨_ { F@5`@`BRFF!0@@j` @R{¨_{ 3Ga@?qTR}Ro` @R{¨_{StG@5xG`@1T@5RSA{¨_ RS5|GR,a @?1`TSa@?1`T" R`R { *5b~Sa>@G @@{¨ @@ @{¨_{!G!@ 3 @`4  @S@y @ <3{è_`&@d@?{S@5Rc@@@ @`X@kTReshMjbRCy"RkTF_|qTZ"xq( TM T@@?SA{ƨ_aRkTTA2RkTHT2RkT!2Rk`T*B<a2RkT!RkTRᢄRk T(TᡄRkTaRkTRaRkTRBRBRRBRRRRkThqTd@Xa$Y"x*!  @@? {!?@ABCDWXclosing %s efidiskdisk/efi/efidisk.copening %s not a efidiskno such devicem = %p, last block = %llx, block size = %x, io align = %x invalid buffer alignment %dinvalid sector size %dopening %s succeeded hd%diterating %s fd%dcd%dd%dwriting 0x%lx sectors at the sector 0x%llx to %s no media in `%s'failure writing sector 0x%llx to `%s'reading 0x%lx sectors at the sector 0x%llx from %s failure reading sector 0x%llx from `%s'%s,%sRSDTXSDTFACPD$ line size: %lld cachekern/arm64/cache.cI$ line size: %lld Unknown cache line size!invalid arch-dependent ELF magicreloc offset is out of the segment reloc_abs64 %p => 0x%016llx dlkern/arm64/dl.ctrampoline out of rangerelocation out of range reloc_prel32 %p => 0x%016llx reloc_got %p => 0x%016llx (0x%016llx) HI21 out of rangeADR_GOT_PAGE without matching LD64_GOT_LO12_NCLD64_GOT_LO12_NC without matching ADR_GOT_PAGE%lxrelocation 0x%s is not implemented yet reloc_xxxx64 %p %c= 0x%lx dlkern/arm64/dl_helper.crequested buffer size is too largeoverflow is detectednew read is position beyond the end of the written data%s: the command is not allowed when lockdown is enforcedone argument expected/%s%s (%s) unknown invalid argument(%s): Filesystem is %s. %s='%s' not an assignmentSet an environment variable.[ENVVAR=VALUE]setRemove an environment variable.ENVVARunsetList devices or files.[ARG]lsInsert a module.MODULEinsmod%s,%srootvariable `%s' isn't set%s read failed diskkern/disk.cClosing `%s'. Opening `%s'... disk `%s' not foundsector sizes of %d bytes aren't supported yetno such partitionOpening `%s' failed. attempt to read or write outside of partitionattempt to read or write outside of disk `%s'Read out of range: sector 0x%llx (%s). `%s' is already loadedmodule at %p, size 0x%lx moduleskern/dl.cELF header smaller than expectedinvalid arch-independent ELF magicthis ELF file is not of the right typeELF sections outside corerelocating to %p .modnameno module name found.module_licenseno license section in module %.63sLICENSE=GPLv3.moddepsLICENSE=GPLv3+LICENSE=GPLv2+incompatible license in module %.63s: %.63ssymbol `%s' not foundgrub_mod_initgrub_mod_finiunknown symbol type `%d'relocation without symbol tableflushing 0x%lx bytes at %p module name: %s init function: %p prefixvariable `%s' isn't set%s/arm64-efi/%s.modmismatched names.textdynamic_load_symbols %p Print infomation useful for GDB debugginggdbinfo/%sVendor(%pG)[%x: ]%02x set_virtual_address_map failedcould not set EFI variable `%s'section %d is last section; invalid. sectionskern/efi/efi.csection %d has bad magic %08x, should be %08x returning section info for section %d: "%s" malformed EFI Device Path node has length=%dmalformed EFI Device Path node has length=%lu/EndEntire /EndThis /EndUnknown(%x) /PCI(%x,%x)/PCCARD(%x)/MMap(%x,%llx,%llx)Hardware/Ctrl(%x)/UnknownHW(%x)/ACPI(%x,%x)/ACPI(%x,%s,%x)%s)/UnknownACPI(%x)/ATAPI(%x,%x,%x)/SCSI(%x,%x)/FibreChannel(%llx,%llx)/1394(%llx)/USB(%x,%x)/USBClass(%x,%x,%x,%x,%x)/I2O(%x)/MacAddr(%02x:%02x:%02x:%02x:%02x:%02x,%x)/IPv4(%u.%u.%u.%u,%u.%u.%u.%u,%u,%u,%x,%x)/IPv6(%x:%x:%x:%x:%x:%x:%x:%x,%x:%x:%x:%x:%x:%x:%x:%x,%u,%u,%x,%x)/InfiniBand(%x,%llx,%llx,%llx)/UART(%llu,%u,%x,%x)/Sata(%x,%x,%x)/Vlan(%u)Messaging/UnknownMessaging(%x)/HD(%u,%llx,%llx,%02x%02x%02x%02x%02x%02x%02x%02x,%x,%x)/CD(%u,%llx,%llx)Media/File((null))/File(%s)/Protocol(%pG)/UnknownMedia(%x)/BIOS(%x,%x,%s)/UnknownBIOS(%x)/UnknownType(%x,%x) found registered FDT @ %p linuxkern/efi/fdt.cnot found registered FDT mods%lxinvalid memory address (0x%s > 0x%s)out of memoryCould not malloc memory to remember EFI allocation. Exiting GRUB won't free all memory. couldn't retrieve memory mapmemory map buffer is too smallcouldn't terminate EFI servicesTrying to terminate EFI services again cannot get EFI memory map sizecannot allocate memory for memory mapcannot allocate memory for new memory maperror fetching memory map from EFIMemory starting at %p (%u pages) marked as free, but EFI would not allocatecould not allocate all requested memory: %lu pages still required after iterating EFI memory map%sprohibited by secure boot policyshim_lock protocol not foundbad shim signatureDisabledUNKNOWNEnabledSecureBootSetupModeMokSBStateUEFI Secure Boot state: %s efikern/efi/sb.cyshim_lockshim_lock_verifier0falsedisablenoerror: %s. assert: error stack overflow detected! missing `%c' symbolattempt to read past the end of fileattempt to seek outside of the fileinvalid file name `%s'beyond the total sectorsDetecting %s... fskern/fs.c/error: %s. %s detection failed. unknown filesystemblocklistylockdownlockdown_verifier%sroot(%s)%scmdpatharm64-efiprefixnormal%s%sdebugalloverflow is detectedunrecognized numberpositional arguments are not supportedunexpected formattoo many arguments(null)%s:%d:%s: invalid formatarguments types do not match Aborted. Press any key to exit.string too longunaligned pointer %pout of range pointer %pdouble free at %palloc magic is broken at %p: %lxnull in the ringfree magic is broken at %p: 0x%xout of memoryoverflow is detectedUsing memory for heap: start=%p, end=%p regionskern/mm.cCan we extend into region above? %p + %lx + %lx ?=? %p Yes: extending a region: (%p -> %p) -> (%p -> %p) Can we extend into region below? %p + %x + %lx + %lx ?=? %p No: considering a new region at %p of size %lx overflow is detectedpeek out of range%dsub-partition %s%d of (%s,%s) ends after parent. partitionkern/partition.cUnknown command `%s'. helpTry `help' for usage > grub rescue> Entering rescue mode... file: %s type: %d verifykern/verifiers.cverification requested but nobody cares: %sbig file signature isn't implemented yetpremature end of file %sstring: %s, type: %d verified_readcannot set text modeconsolegrub_abortgrub_acpi_find_fadtgrub_acpi_find_tablegrub_arch_sync_cachesgrub_byte_checksumgrub_callocgrub_command_listgrub_current_contextgrub_debug_enabledgrub_device_closegrub_device_iterategrub_device_opengrub_disk_cache_tablegrub_disk_closegrub_disk_dev_listgrub_disk_dev_registergrub_disk_dev_unregistergrub_disk_firmware_finigrub_disk_firmware_is_taintedgrub_disk_native_sectorsgrub_disk_opengrub_disk_readgrub_disk_write_weakgrub_divmod64grub_dl_headgrub_dl_loadgrub_dl_load_core_noinitgrub_dl_refgrub_dl_ref_countgrub_dl_unloadgrub_dl_unrefgrub_efi_allocate_any_pagesgrub_efi_allocate_fixedgrub_efi_allocate_pages_realgrub_efi_close_protocolgrub_efi_compare_device_pathsgrub_efi_duplicate_device_pathgrub_efi_find_configuration_tablegrub_efi_find_last_device_pathgrub_efi_find_mmap_sizegrub_efi_finish_boot_servicesgrub_efi_free_pagesgrub_efi_get_device_pathgrub_efi_get_filenamegrub_efi_get_firmware_fdtgrub_efi_get_loaded_imagegrub_efi_get_memory_mapgrub_efi_get_ram_basegrub_efi_get_securebootgrub_efi_get_variablegrub_efi_get_variable_with_attributesgrub_efi_image_handlegrub_efi_is_finishedgrub_efi_locate_handlegrub_efi_locate_protocolgrub_efi_net_configgrub_efi_open_protocolgrub_efi_print_device_pathgrub_efi_set_text_modegrub_efi_set_variablegrub_efi_set_variable_to_stringgrub_efi_set_variable_with_attributesgrub_efi_set_virtual_address_mapgrub_efi_stallgrub_efi_system_tablegrub_efidisk_get_device_handlegrub_efidisk_get_device_namegrub_env_exportgrub_env_getgrub_env_get_boolgrub_env_setgrub_env_unsetgrub_env_update_get_sortedgrub_err_printed_errorsgrub_errmsggrub_errnogrub_errorgrub_error_popgrub_error_pushgrub_exitgrub_fatalgrub_file_closegrub_file_filtersgrub_file_get_device_namegrub_file_opengrub_file_progress_hookgrub_file_readgrub_file_seekgrub_file_verifiersgrub_freegrub_fs_autoload_hookgrub_fs_listgrub_fs_probegrub_get_time_msgrub_getkeygrub_getkey_noblockgrub_getkeystatusgrub_gettextgrub_is_lockdowngrub_is_shim_lock_enabledgrub_isspacegrub_key_is_interruptgrub_list_pushgrub_list_removegrub_lockdowngrub_machine_acpi_get_rsdpv1grub_machine_acpi_get_rsdpv2grub_machine_finigrub_mallocgrub_memaligngrub_memcmpgrub_memmovegrub_memsetgrub_millisleepgrub_mm_add_region_fngrub_mm_basegrub_modbasegrub_named_list_findgrub_net_opengrub_net_poll_cards_idlegrub_parser_cmdline_stategrub_parser_split_cmdlinegrub_partition_get_namegrub_partition_iterategrub_partition_map_listgrub_partition_probegrub_print_errorgrub_printfgrub_printf_grub_printf_fmt_checkgrub_puts_grub_real_dprintfgrub_reallocgrub_rebootgrub_refreshgrub_register_command_lockdowngrub_register_command_priogrub_register_variable_hookgrub_snprintfgrub_strchrgrub_strcmpgrub_strcpygrub_strdupgrub_strlengrub_strncmpgrub_strndupgrub_strrchrgrub_strtoulgrub_strtoullgrub_strwordgrub_term_highlight_colorgrub_term_inputsgrub_term_inputs_disabledgrub_term_normal_colorgrub_term_outputsgrub_term_outputs_disabledgrub_term_poll_usbgrub_unregister_commandgrub_utf8_to_utf16_allocgrub_verify_stringgrub_vprintfgrub_vsnprintfgrub_xasprintfgrub_xputsgrub_xvasprintfgrub_zallocmemcmpmemcpymemmovememsetT(0![NYd9ir;0--'?Mqh"XNhEC@DTD)C7jSjkiSd\e[n6kTXhhp[YhfTj0rs X'hVMcxR@RhS\S`VW;Ua8UhT(|zpxx8wXy.yIamxP{p|{Tx~}8~)8LV lyxXv8H%4؆E<SOpO`*`\H@8|3@A`ZеtxHȹ| t,*5GHTT`m@-H,zP '4A,O\vhpPxX-)< IXإgrL----LICENSE=GPLv3+mimg`RELF0@@ {S*@@@SA{è_ց@szTR{  @`@ !@`@@T @{¨{ `@ @{¨_{S[c+ko; @9qT4z@9_qD@zTb@C@q@T@R!scaTq`T9`@@4?z9`4+@SA[BcCkD{ɨ_TqT @9qAT@@@!@G?ր4z9;@o@va@ @ qT`@` q!T@ R@@ @?@@@9qTa@BRT5@@4`@@ [Rb@+@SA[BcCkD@R{ɨ{S[c#c7@9qT@R**C7/@CBR *5`@@#@*SA[BcC{Ǩ_C**4C7@@@CkqAzT@RqBzAT@ {S5R@SA{è_*`@@74ha8ha8Q4*Qd4iqc0*dqHT!?kTeqHTdqHTkT@ @ RR*i*d{ @[U$&RS cksK@_TqT@`RSA[BcCkDsE{ɨ_֟T@_ITt3zQ&՚ѕ$՚C` @ ?cT3@?@@?ֈ@@5cB9 C@T@jB?AT@BKB|@FS@@!@@ 5xK98*RR not a directorytoo deep nesting of symlinksfile `%s' not foundinvalid file name `%s'not a regular fileblocksize too largeattempt to read past the end of fileLICENSE=GPLv3+fshelp`h8@HPX`)FU`l$x$dgrub_fshelp_find_filegrub_strdupgrub_fshelp_find_file_lookupgrub_disk_readgrub_errnogrub_memsetgrub_fshelp_read_filegrub_strcmpgrub_mallocgrub_errorgrub_free (`,``@T8X8`@PPTP`HdHHHHH X(X48@HPX-<AX (TX08<tk.symtab.strtab.shstrtab.rela.text.rodata.str1.1.data.module_license.bss.modname @@0 &25|;|KP   Y,ELF)@@ {(@@@R{_ {S[ckW@A @+a 6*[aRR8R@x?kAT@y@yA 4_k T"Q5+@SA[BcCkD{Ǩ_#d|jd_kT@@y@@(#`@("@#`4@ R%|$heT_k,T"Q4RA|haA@y?iTS @y@@s`T҃R@ R.TBS(@@3R2ѡ*a" |S!|S?T@X@R"6Ro"Q~~@o@A4@*&ؚB~! ٚ5sQK1!To@|˟bT@\@ T@`@SR@{@ @  @t@ǀ@@{B_  @0@E{S[5Q"R(@@PA( B BQE|@ $db@D 6dATKaf@` c"@c|!6T@6T!|T!TT`@a@!! ƚ@@5c@ Ra( aN@4b@ya*@eRA  ;@qmT[@B|@!`@aҡ @4@SA[B{Ǩ_cR {S?`*A@@5ar@y`R?kT`@<qTa*@A4aN@4b@y4(!R kT@ R@,qT@ R#`b@"RrjT@86cAy4`QjATrT$R*B kT@b aRtARs`H@5@SA{è_֡R {S@@@0@@@@SA@{è_ {CS@@@n@@y@y@yZ@yZ@yZ@yZ@ycZ@yBZ!Z<Z<<<<c<@B<!<@@@{ASB@_{S@@@/@@@SA@{è_ {S[ck@4`*@X7`@kT*ct:@@@`5@y 4[@ 4{A9 4"e@@5 `@[@{A9k"8A94_qTAR?4 RSA[BcCkD{֨_`@b"a@f@@4R@R_qaTaR_q"R@@4 R@y @q T(@qT @q@y {S@@'@'4@ ER$@#@@5@@h'@@!@T'@@@@SA{Ũ_{[S@'@@@V@@'@@T@-#%R@@*5'@@a4'@ (@X6@R*@ * 4@! '@@ l@!@* "@*SA[B{Ũ_{S@5`@b"a@@@5`*@@X6@RSA{¨_`@a@*?qTa`@j 8U@@`4 {S[*R`@4@929`@#@9 q 39 @`?SA[B{Ũ_ր @b"a@E@@a5!Ra`@4 { @@@ @{¨_ @ invalid extentsomething wrong with extentext2fs doesn't support quadruple indirect blocksnot an ext2 filesystemfilesystem has unsupported incompatible features%04x%04x-%04x-%04x-%04x-%04x%04x%04xdirectory is encryptedfile is encryptedsymlink is encryptedext2LICENSE=GPLv3+fshelpext208x(08@H08@H   x               < (#9HUdp{$x$dgrub_mod_initgrub_mod_finigrub_fshelp_find_filegrub_xasprintfgrub_memmovegrub_disk_readgrub_dl_refgrub_errnogrub_memsetgrub_fshelp_read_filegrub_fs_listgrub_mallocgrub_errorgrub_list_removegrub_freegrub_strndupgrub_dl_unrefgrub_list_push G00I0G$DP>\G`dlEGE>+<xDxdBx8|>((>(@HDh>lpEEG@\s88?I G@@8@@`0h0p?88<IG@@08@@\dl?HIG@  D  D    $  , Ed G @  x x ?          ;(  0  P GX G` Ix    @    ?   G G I  (  ,  0  8 ;`  d  l E = G  @   0  4  H  L  T Et D =   G @ AXG@JC(( F(  (08H@HH.symtab.strtab.shstrtab.rela.text.rodata.str1.1.rela.data.module_license.bss.moddeps.modname @0@` &2p :P5@`( @PU^ ;  )g`ELF @@ C@C{S[cks 4@@{@*SA[BcCkDsEC_GyJR_kT@`R*C"G9_qT!@qAT@R5R"!|@ *5W@4qT@C@ 5@C4SaRb@*sG Ԛ@ Ԛ@@@ F`?֠5A qaTR9AkT R@"b@R@@R@"Ԛ@@! @ no signatureGPT entry %d: start=%lld, length=%lld gptpartmap/gpt.cno valid GPT headerRead a valid GPT header no GPT partition map foundEFI PARTLICENSE=GPLv3+part_gpt (08@HPX`hh#;JUt$x$dgrub_mod_initgrub_mod_finigrub_partition_map_listgrub_disk_readgrub_errnogrub_gpt_partition_map_iterategrub_real_dprintfgrub_errorgrub_list_removegrub_list_pushgrub_memcmp8@D  ``((!PP8@0L!\@88HX@HX@H0 (08 @4H8PFXZ`shlpt| 4 .symtab.strtab.shstrtab.rela.text.rodata.rodata.str1.1.rela.data.module_license.bss.modname @@ &.2B(=@ 0 HX] 0   f (,gpt2)/boot/grub` (x08@HPX`hpx (08@H  `آУأx (08@HШبPX @08Pخ08@HPX`hp08@HPX`hpx`08@H (hا08@H (@h (08` (08@HPX`hpxȭЭ ȯPP (X`h(08x`У`0HPXX`hpxh`hpxȣУأ (08@HPX`hpx`ئx08xȭЭح`px`hpx (@ȣУ08@HPX`hpxpx0`h8@HPةxHhج`hpxȮЮ0`8 (08@ȧX (08@HPX`hpPX@HxPX`h8أx `hp৸ (08(H (08@hpȥH`hpȭ(08`hpxȡСHPXpأ@px@HPXx0ЪPPX`ȬЬ`hpح8Pȯ x8@HPXxȤФؤऐإ(0Xا0@HX`hpxȨب (8@PXhpȩЩ(0@HX`pxЪت 08HP`hxȫث (8@PXhpȬЬ(0@HX`pxЭح 08HP`hxȮخ (8@PXhpȯЯ (0@HX`pxРؠ 08HP`hxȡء (8@PXhpȢТ(0@HX`pxУأ 08HP`hxȤؤ (8@PXhpȥХ(0@HX`pxЦئ 08HP`hxȧا (8@PXhpȨШe!t3 ~g~gS~g <BkH) ﮭ//mntlFGBOR ~g @@ )?W#Sؠa] {Y { | B  / 1 >" > f),1]na@ *ԃ!""!C  }u|UN?W   cj `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  ` ! !`!!! " "`""" # #`### $ $`$$$ % %`%%% & &`&&& ' '`''' ( (`((( ) )`))) * *`*** + +`+++ , ,`,,, - -`--- . .`... / /`/// 0 0`000 1 1`111 2 2`222 3 3`333 4 4`444 5 5`555 6 6`666 7 7`777 8 8`888 9 9`999 : :`::: ; ;`;;; < <`<<< = =`=== > >`>>> ? ?`??? @ @`@@@ A A`AAA B B`BBB C C`CCC D D`DDD E E`EEE F F`FFF G G`GGG H H`HHH I I`III J J`JJJ K K`KKK L L`LLL M M`MMM N N`NNN O O`OOO P P`PPP Q Q`QQQ R R`RRR S S`SSS T T`TTT U U`UUU V V`VVV W W`WWW X X`XXX Y Y`YYY Z Z`ZZZ [ [`[[[ \ \`\\\ ] ]`]]] ^ ^`^^^ _ _`___ ` ````` a a`aaa b b`bbb c c`ccc d d`ddd e e`eee f f`fff g g`ggg h h`hhh i i`iii j j`jjj k k`kkk l l`lll m m`mmm n n`nnn o o`ooo p p`ppp q q`qqq r r`rrr s s`sss t t`ttt u u`uuu v v`vvv w w`www x x`xxx y y`yyy z z`zzz { {`{{{ | |`||| } }`}}} ~ ~`~~~  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `   `à  `Ġ  `Š  `Ơ  `Ǡ  `Ƞ  `ɠ  `ʠ  `ˠ  `̠  `͠  `Π  `Ϡ  `Р  `Ѡ  `Ҡ  `Ӡ  `Ԡ  `ՠ  `֠  `נ  `ؠ  `٠  `ڠ  `۠  `ܠ  `ݠ  `ޠ  `ߠ  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  ` !a!!a!!a!?????0???~g~g~g-A~g~g~g  s4~g gn]0~g~g~g U #~g@~g~g~g  @ " ~g&f(A0~g~g~g  s ؜~gA~g~g~g ͚P 8dHdHro~gA~g~g~g y(D L  ݜ~g A ~g~g~g   LjN  J1Ԝ~gA~g~g~g (B "d"d؜~g~g~g~g  &m BF~gA~g~g~g iV s4s4&4~gB~g~gErg &jovA TBs4~gB~g~gErg &t=0 ҭBs4~gB ~g~gErg &lkc Bs4~gB ~g~gErg &Km Bs4~gB ~g~gErg & Bݜ~gBC~g~g~g %mqtl  V!V!ԀÜ~gBA~g~g~g 0 f~gB!~g~g~gȗ VBBB~gB!~g~g~g[ BBB~gB!~g~g~g^LD 9:FFF~gF!~g~g~g =в FFF~gF!~g~g~g ]Z FFF~gFA~g~g~g BR %V!V!f~gFA~g~g~g 9# ~gFA~g~g~g xOK* =ff~gFA~g~g~g  #. 6XXۜ~gFA~g~g~g \Q @FFXXۜ~gFA~g~g~g V FF ~gFA~g~g~g t +FFXXۜ~gF~g~g~gD "kU Afff~gf~g~g~g iW Jfff~gf~g~g~g HzL LKFFF~gF~g~g~g & c FF~gFmA~g~g~g ~(Հ FFXXۜ~gF~g~g~g 3\!T ؒʚ;ʚ;p89~gp89 ~g~g~g/bin/busyboxJC lϞ~g xg~gxg &QCW )&4~g&4Oxg~gxg &]e< Eo&4~g&4~g~g~g 4\K&RN ~_@~_@~_@~g~_@xg~gxg &1!. &4~g&4~g~g~g../proc/mountsu 6&4&4&4~g&4xg~gxg &,2!4 &4~g&4~g~g~g~g* -q 5" U~gN~g~g~g/etc/init.d/devfs ^_^_^_~g^_H xg~gxg &$`k d&4~g&4 2xg~gxg  & md &4~g&4Ef~g~g~gg *Ep r2$EBXX۠~gB&xg~gxg ,&ҧ N&4~g&45xg~gxg -&VG9 &4~g&4 ~g~g3/Og " [Z n~g4[~g~g~gld-musl-aarch64.so.1-e MNrS~gA ~g~g~gz }d >tnnXX۞~g~g~g\g 0Id12t n~gA~g~g~g Kh  ֞~g \g~g\g .&F<  ~g A~g~g~g و.H b2b2֞~g \g~g\g 2&@N#  ~g A~g~g~g '6 K66؞~g A~g~g~g  ؞~g A~g~g~g  i v ؞~g A~g~g~g  +/^' ؞~g A~g~g~g  |. 9 ؞~g A~g~g~g  bS/ ؞~g A~g~g~g  < ؞~g \g~g\g 3&@ ~g \g~g\g 4&@lTc K ~g A~g~g~g zem) w? J1Ԟ~g \g~g\g 5&^BN" j= ~g A~g~g~g Klȃ <"d"dXX۞~g A~g~g~g 5hl We  s4~g A~g~g~g  h T*T*.Ş~g A~g~g~g  H CT*T*EȞ~g A~g~g~g WC  EȞ~g h\g~g\g 6& < 7 ~g A~g~g~g 09Z/ ~g A~g~g~g yB uf~gA~g~g~g _W~[ T*T*.Ş~g2 ~g~g~g/bin/busybox 1lM 222~g2 ~g~g~g/bin/busybox:_ w222~g2 ~g~g~g/bin/busybox'N 8222~g2 ~g~g~g/bin/busyboxY \222~g2 ~g~g~g/bin/busyboxDI  22Y~g2 ~g~g~g/bin/busybox4)I 22z~g2 ~g~g~g/bin/busyboxI %222~g2 ~g~g~g/bin/busybox`V >G222~g2 ~g~g~g/bin/busybox* T[222~g2 ~g~g~g/bin/busyboxxJ .222~g2 ~g~g~g/bin/busyboxeu r222~g2 ~g~g~g/bin/busybox.ln p22l~g2 ~g~g~g/bin/busybox!` 222~g2 ~g~g~g/bin/busyboxdY! !V22$=~g2 ~g~g~g/bin/busybox= R} R222~g2 ~g~g~g/bin/busybox| 222~g2 ~g~g~g/bin/busybox0E%7\ 222~g2 ~g~g~g/bin/busybox9 j222~g2 ~g~g~g/bin/busybox]0x] i222~g2 ~g~g~g/bin/busyboxM1X 6222~g2 ~g~g~g/bin/busybox& 6k @222~g2 ~g~g~g/bin/busyboxp/ Dz j222~g2 ~g~g~g/bin/busyboxi/OS J222~g2 ~g~g~g/bin/busyboxy& H222~g2 ~g~g~g/bin/busybox6 #222~g2 ~g~g~g/bin/busyboxtSB :(22~g2 ~g~g~g/bin/busyboxBwO P222~g2 ~g~g~g/bin/busybox W[ H222~g2 ~g~g~g/bin/busybox W222~g2 ~g~g~g/bin/busybox͑M \22؞~g2 ~g~g~g/bin/busybox[È &22B~g2 ~g~g~g/bin/busybox>0 d{222~g2 ~g~g~g/bin/busyboxo!*s m222~g2 ~g~g~g/bin/busybox<&D Pq222~g2 ~g~g~g/bin/busybox0hR1 222~g2 ~g~g~g/bin/busyboxqq V222~g2 ~g~g~g/bin/busybox>:Xg, 222~g2 ~g~g~g/bin/busyboxjQ :22I~g2 ~g~g~g/bin/busyboxMZ ("22/~g2 ~g~g~g/bin/busybox2 222~g2 ~g~g~g/bin/bbsuidF(bZ nnn~gn ~g~g~g/bin/busyboxv| vm222~g2 ~g~g~g/bin/busyboxM0nڒ _)22y~g2 ~g~g~g/bin/busybox %222~g2 ~g~g~g/bin/busyboxQ 8. ;222~g2 ~g~g~g/bin/busyboxa7 "222~g2 ~g~g~g/bin/busyboxo 222~g2 ~g~g~g/bin/busybox&uq a222~g2 ~g~g~g/bin/busyboxH q (222~g2&~g~g*c  ~]j!o Cs4~g ~g~g~g/bin/busyboxs 222~g2 ~g~g~g/bin/busyboxUd X222~g2 ~g~g~g/bin/busyboxh}] Y22~g2 ~g~g~g/bin/busybox'B  222~g2 ~g~g~g/bin/busyboxP 222~g2 ~g~g~g/bin/busyboxX* \222~g2 ~g~g~g/bin/busybox/ 222~g2 ~g~g~g/bin/busyboxaI7 wl222~g2 ~g~g~g/bin/busyboxFax l^22~_@~g2 ~g~g~g/bin/busyboxˆ 2222~g2 ~g~g~g/bin/busybox@' ^222~g2 ~g~g~g/bin/busybox&I a222~g2 ~g~g~g/bin/busyboxD+ 222~g2 ~g~g~g/bin/busyboxƿ p222~g2 ~g~g~g/bin/busybox   222~g2 ~g~g~g/bin/busybox#'2? U222~g2 ~g~g~g/bin/busyboxf@H 222~g2 ~g~g~g/bin/busybox" v 222~g2 ~g~g~g/bin/busybox# g 222~g2 ~g~g~g/bin/busyboxOrf q g.222~g2 ~g~g~g/bin/busybox) i222~g2 ~g~g~g/bin/busyboxς=o A222~g2 ~g~g~g/bin/busybox7 222~g2 ~g~g~g/bin/busyboxAu)j 3222~g2 ~g~g~g/bin/busyboxڽD *22/~g2 ~g~g~g/bin/busybox!"B!b /U222~g2 ~g~g~g/bin/busybox*{9 222~g2 ~g~g~g/bin/busybox], s222~g2 ~g~g~g/bin/busyboxȖk e222~g2 ~g~g~g/bin/busybox< w222~g2 ~g~g~g/bin/busybox); N222~g2 ~g~g~g/bin/busyboxSυ lI222~g2 ~g~g~g/bin/busybox= A- O?222~g2 ~g~g~g/bin/busyboxjy6 d22s4~g2 ~g~g~g/bin/busybox;C 222~g2 ~g~g~g/bin/busybox&րV 22z~g2 ~g~g~g/bin/busyboxOH U 222~g2 ~g~g~g/bin/busybox4d P222~g2 ~g~g~g/bin/busybox]& #522~g2 ~g~g~g/bin/busyboxeW 222~g2 ~g~g~g/bin/busybox_!K% 0222~g2 ~g~g~g/bin/busybox%z w222~g2 ~g~g~g/bin/busybox Yj +222~g2 ~g~g~g/bin/busyboxKd ~g ~g~g~g/bin/busyboxƞJ (~g ~g~g~g/bin/busyboxGr<{ 14~g ~g~g~g/bin/busybox\~ ,~_@~g ~g~g~g/bin/busyboxXfY ~g~g~g~glibcap.so.2.710 ~g ~g~g~g/bin/busyboxw -~ghS;g~gS;g B5WlE [~g ~g~g~g/bin/busybox \.-A dt~g ~g~g~g/bin/busyboxf11к ~gH(~g~g@g KҐaw 4\~~g ~g~g~g/bin/busybox!m vn~g ~g~g~g/bin/busybox;Ǟ ~g ~g~g~g/bin/busyboxAh5 h~g ~g~g~g/bin/busyboxg]4 f~g ~g~g~g/bin/busybox] Y~g ~g~g~g/bin/busybox 4~g ~g~g~g/bin/busyboxz-I n~g ~g~g~g/bin/busybox(ժ%I Gu~g ~g~g~g/bin/busybox" ~g ~g~g~g/bin/busybox g0; ]~g ~g~g~g/bin/busybox) ~g ~g~g~g/bin/busybox ~g ~g~g~g/bin/busyboxG*@v >~g ~g~g~g/bin/busyboxl2] ~g ~g~g~g/bin/busyboxy ~g ~g~g~g/bin/busyboxf ~g ~g~g~g/bin/busybox" p~g ~g~g~g/bin/busybox#7g ~g ~g~g~g/bin/busyboxE,:. f~g ~g~g~g/bin/busybox%} q~g ~g~g~g/bin/busyboxS& R ~g ~g~g~g/bin/busybox9WKk ~g ~g~g~g/bin/busyboxdw Z3~g ~g~g~g/bin/busybox"ul" ja~g ~g~g~g/bin/busyboxD) ~g ~g~g~g/bin/busybox^د 5~g ~g~g~g/bin/busybox]g ~g ~g~g~g/bin/busybox]\;^ >[~g ~g~g~g/bin/busyboxr' H~g ~g~g~g/bin/busybox 3g-K ";~g ~g~g~g/bin/busyboxM 1~g ~g~g~g/bin/busyboxS(d T~g~g~g~glibjson-c.so.5.4.0`w 1FFV!~gF ~g~g~g/bin/busybox Q e!~g ~g~g~g/bin/busybox)k/ ~g ~g~g~g/bin/busyboxlaw* oY~g ~g~g~g/bin/busyboxanL 'q~g ~g~g~g/bin/busybox#NT ~g ~g~g~g/bin/busyboxMm ~g ~g~g~g/bin/busyboxtSFc( N~g ~g~g~g/bin/busybox. 5/~g ~g~g~g/bin/busybox,d z~g ~g~g~g/bin/busybox'  ~g ~g~g~g/bin/busyboxR *~g ~g~g~g/bin/busyboxҼ) 2X(~gp( :f~g :f KxURvhfz ^_~g\ ~g~g~g/bin/busybox!; $-~g~g~g~glibeconf.so.0.6.2#K G^_^_I~g^_ ~g~g~g/bin/busybox+ f~g ~g~g~g/bin/busyboxOsD c)~g ~g~g~g/bin/busybox`m ~g ~g~g~g/bin/busyboxs>Y ދF#~gx~g~gg CWX3}? F~gFA~g~g~g o-8 p J1Ԡ~g ~g~g~g/bin/busyboxnE3 ~g~g~g~glibnvme-mi.so.1.11.1d'- i^lll~gl ~g~g~g/bin/busybox`Qj$ ~g ~g~g~g/bin/busyboxV9 -~g ~g~g~g/bin/busyboxMj& %F~g ~g~g~g/bin/busyboxt}Cl5 *w~g ~g~g~g/bin/busybox-Eh~ KH~g ~g~g~g/bin/busybox#( }5~g ~g~g~g/bin/busybox# %~g ~g~g~g/bin/busyboxZK~ c~g ~g~g~g/bin/busybox^|90 x~g ~g~g~g/bin/busybox0! '~g ~g~g~g/bin/busybox_w> $~g ~g~g~g/bin/busyboxow ~g ~g~g~g/bin/busyboxTy3 ~g ~g~g~g/bin/busybox_ ~g ~g~g~g/bin/busyboxo W~g ~g~g~g/bin/busybox':&s ]>~g ~g~g~g/bin/busyboxc=na D~g ~g~g~g/bin/busyboxYvw {~g ~g~g~g/bin/busybox <A <)~g ~g~g~g/bin/busyboxÙ* q~g ~g~g~g/bin/busyboxA6 lzlll~gl ~g~g~g/bin/bbsuid* f nnG~gn ~g~g~g/bin/busyboxH4T phlll~gl ~g~g~g/bin/busybox2[ lll~gl ~g~g~g/bin/busyboxY"k %lll~gl ~g~g~g/bin/busybox8]~o @lll~gl ~g~g~g/bin/busyboxo~_ Qlll~gl ~g~g~g/bin/busybox lll~gl ~g~g~g/bin/busyboxy2 lll~gl ~g~g~g/bin/busybox a Alll~gl ~g~g~g/bin/busybox6_Xf lll~gl ~g~g~g/bin/busybox1a< lll~gl ~g~g~g/bin/busybox%*66 Hlll~gl ~g~g~g/bin/busyboxya |rlll~gl ~g~g~g/bin/busyboxŃ ;*lll~gl ~g~g~g/bin/busybox:wM lll~gl ~g~g~g/bin/busyboxI d lll~gl ~g~g~g/bin/busybox%3 tlll~gl ~g~g~g/bin/busybox8ڲ( lll~gl ~g~g~g/bin/busyboxMY lll~gl ~g~g~g/bin/busyboxj hlll~gl ~g~g~g/bin/busyboxs;$ ^lll~gl ~g~g~g/bin/busyboxH8Y glll~gl ~g~g~g/bin/busyboxmk5o{ Rll֞~gl ~g~g~g/bin/busybox$Tz lll~gl ~g~g~g/bin/busyboxwI" blll~gl ~g~g~g/bin/busybox@B_ lll~gl ~g~g~g/bin/busyboxz #lll~gl ~g~g~g/bin/busyboxg&o :lll~gl ~g~g~g/bin/busybox lll~gl ~g~g~g/bin/busybox:hS klll~gl ~g~g~g/bin/busybox?܊ !lll~gl ~g~g~g/bin/busyboxl 7lll~gl ~g~g~g/bin/busybox>[v ll%&~gl ~g~g~g/bin/busybox^YxC lll~gl~g~g~glibcryptsetup.so.12.10.0dmI. Ln p~g ~g~g~g/bin/busybox门 { lll~gl ~g~g~g/bin/busybox] nlll~gl ~g~g~g/bin/busybox? ll(~gl ~g~g~g/bin/busyboxCdpy lll~gl ~g~g~g/bin/busyboxSJep6 :lll~gl ~g~g~g/bin/busyboxlc Nlll~gl ~g~g~g/bin/busyboxBZ| lll~gl ~g~g~g/bin/busybox " lll~gl ~g~g~g/bin/busybox Ulll~gl ~g~g~g/bin/busyboxh 3lll~gl ~g~g~g/bin/busyboxJZ> (lll~gl ~g~g~g/bin/busybox:9 lll~glA~g~g~g 8,Q. jf~g ~g~g~g/bin/busybox‰ Ulll~gl ~g~g~g/bin/busybox[0 `lll~gl ~g~g~g/bin/busyboxaf' dxlll~gl ~g~g~g/bin/busyboxj<j ūlll~gl ~g~g~g/bin/busyboxŏfj 8glll~gl ~g~g~g/bin/busyboxKZ[ 58lll~gl ~g~g~g/bin/busybox n 9lll~gl ~g~g~g/bin/busybox5| Aglll~gl ~g~g~g/bin/busybox4tY_ ؃lll~gl ~g~g~g/bin/busybox9" llT*~gl ~g~g~g/bin/busyboxm ~@lll~gl ~g~g~g/bin/busybox*QA Dlll~gl ~g~g~g/bin/busyboxT& :ll$=~gl ~g~g~g/bin/busyboxm lll~gl ~g~g~g/bin/bbsuid. *nnn~gn ~g~g~g/bin/busyboxU$x lll~gl ~g~g~g/bin/busybox WR{ @clll~gl ~g~g~g/bin/busybox, 4lll~gl ~g~g~g/bin/busyboxe lll~gl ~g~g~g/bin/busyboxd llf~gl ~g~g~g/bin/busyboxXFp lll~gl ~g~g~g/bin/busybox;+g lll~gl ~g~g~g/bin/busyboxEfJ lll~gl ~g~g~g/bin/busyboxCu} bllT*~gl ~g~g~g/bin/busyboxLp? 5lll~gl ~g~g~g/bin/busyboxeE ѕlll~gl ~g~g~g/bin/busyboxE;] /alll~gl ~g~g~g/bin/busyboxIk9 lll~gl ~g~g~g/bin/busyboxBB _lll~gl ~g~g~g/bin/busybox @ b=lll~gl ~g~g~g/bin/busyboxGtm Alll~gl ~g~g~g/bin/busyboxF 9Q vll$=~gl ~g~g~g/bin/bbsuid?r -nnn~gn ~g~g~g/bin/bbsuidݱ_4 >nnn~gn ~g~g~g/bin/busybox :lll~gl ~g~g~g/bin/busyboxY1= 2lll~gl ~g~g~g/bin/busybox94y lll~gl ~g~g~g/bin/busyboxTv lll~gl ~g~g~g/bin/busybox/A&i j0lll~gl ~g~g~g/bin/busybox\`X Hlll~gl ~g~g~g/bin/busyboxΌ@o9 !lll~gl ~g~g~g/bin/busyboxv= +lll~gl ~g~g~g/bin/bbsuidx nnn~gn ~g~g~g/bin/busyboxp \llro~gl ~g~g~g/bin/busybox fDlll~gl ~g~g~g/bin/busybox/: Vlll~gl ~g~g~g/bin/busyboxoG/[ Aolll~gl ~g~g~g/bin/busyboxm@ 0lll~gl ~g~g~g/bin/busyboxY] KHlll~gl ~g~g~g/bin/busybox' {lll~gl ~g~g~g/bin/busyboxn- lll~gl ~g~g~g/bin/busyboxhI lll~gl ~g~g~g/bin/busybox2}( lll~gl ~g~g~g/bin/busyboxGV% lll~gl ~g~g~g/bin/busybox lll~gl ~g~g~g/bin/busybox  Dlll~gl ~g~g~g/bin/busyboxd,$ lll~gl ~g~g~g/bin/busyboxDF alll~gl ~g~g~g/bin/busyboxۻm lll~gl ~g~g~g/bin/bbsuid:Ӂ cnnn~gn ~g~g~g/bin/busyboxu _lll~gl ~g~g~g/bin/busybox llll~gl ~g~g~g/bin/busyboxF 2J lll~gl ~g~g~g/bin/busyboxYSYt lll~gl ~g~g~g/bin/busybox3Kʛ lll~gl ~g~g~g/bin/busyboxX% 0-lls4~gl ~g~g~g/bin/busybox{? 5f~gA~g~g~g 4nqQ s?XX۞~gA~g~g~g 5jl $8XX۞~gA~g~g~g 6=:W6 J1Ԟ~gA~g~g~g 7C$̤ WJ1Ԟ~gA~g~g~g  8_Fxz' //lϞ~gA~g~g~g 9  3lϞ~gA~g~g~g :>(4' lϞ~gxg~gxg F&<8 '~gA~g~g~g ;YrKus s4~gA~g~g~g <m ocԀÞ~gA~g~g~g =:&+6 :ԀÞ~gA~g~g~g >^k ԀÞ~gA~g~g~g ? VEȞ~gA~g~g~g @, lϞ~gmA~g~g~g AE8 'jXX۞~gA~g~g~g Bk( F1. :4[4[XX۞~gA~g~g~g CX ݞ~gA~g~g~g D땠V4 +XX۞~g ~g~g~g../run/lock6t ֞~gA~g~g~g E((ԩ L-L-XX۞~gA~g~g~g FMQ fXX۞~gA~g~g~g GP 2XX۞~g~g~g~g../runޙ %&~gA~g~g~g H{5g ;XX۞~gA~g~g~g I^#C iXX۞~g~g~g~g../../../etc/crontabsomx b3֞~g~g~g~g../mailj @ ֞~gC~g~g~g Jd s]XX۞~g~g~g~g/sbin/ifupdown˕l ip   ~g ~g~g~g/sbin/ifupdownv8J ?   ~g ~g~g~g/sbin/ifupdown(21 R   ~g ~g~g~g/sbin/ifupdownR}.    ~g ~g~g~g/sbin/ifupdown{ C   ~g gkrf~ggkrf E4+D^ ~g A~g~g~g My A''.Ş~g A~g~g~g N@f %  .Ş~g gkrf~ggkrf H&ɍT " ~g ugkrf~ggkrf I&E ~g gkrf~ggkrf J&ĬΞ[ Kg ~g gkrf~ggkrf L&\4!.  ~g gkrf~ggkrf M&[ ~g  gkrf~ggkrf N& ~g 6gkrf~ggkrf Q&k#[ ] ~g ~g~g~glibpsx.so.2.71D,%P ,~gS;g~gS;g BP5'@˯ {D~gX^g~g^g B5{mX +v~gA ~g~g~gO O>ToE ((J1Ԟ~g^g~g^g S&`Puov v~g'^g~g^g T&u_] v~g\^g~g^g U&L> 8%v~gu^g~g^g V&~TK ~g6^g~g^g &n ~g^g~g^g &  f~g^g~g^g &I>@ qz~g^g~g^g &BWq |~g^g~g^g &*+Fb q~g^^g~g^g &aq -~g\^g~g^g &0 ~gg^g~g^g &4d 3A~g^g~g^g &NJY?o e~gg^g~g^g &̲Q >c~g^g~g^g &b i~g^g~g^g &KjhX G~g^g~g^g &9Dϑ ao~g*^g~g^g & R T[~g#^g~g^g &|\ ~g ^g~g^g &Ok Y~gZb^g~g^g &YQ; ~gZb^g~g^g &\ R~gZbA~g~g~g W/G FG֟~gZb^g~g^g &—  ̕~gZb+^g~g^g &6S >$~gZb4^g~g^g  &SKM v~gZbA~g~g~g X޾ A< KcZbZb~gZbA~g~g~g Yس ֟~gZbA~g~g~g Z+ فPP֟~gZbA~g~g~g [B ZbZb~gZbA~g~g~g \3 ~gZbA~g~g~g ]p a "d"d~gZb^g~g^g &$h@J E~gZb^g~g^g B5p9Ng ~gZbp^g~g^g B6gy 5~gZbp^g~g^g BX6! =~gZbX^g~g^g B6BJ 0O~gZb'^g~g^g  & l} #A~gZbX~g~g^g B6tep c\~gZb ~g~g~grc-serviceg*) 6ZbZb~gZb`^g~g^g B!7JU , ~gZbx^g~g^g Bc7Y5TQ E~g~g~g^g B7گ"0S 1\\~g~g~g^g B(دt 0$\~gA~g~g~g ^+6 .ş~gA~g~g~g  _HSN 0Eȟ~gX^g~g^g BC(jFJ ~g^g~g^g B(W Fs~g^g~g^g B(d ~g^g~g^g B )[$X ~g'^g~g^g BK);[1 ~g'^g~g^g B)>.[ k~g'^g~g^g B)jo h~g'^g~g^g B*8i R~g'^g~g^g BS*̰O ~g'^g~g^g B*q6- T~g'^g~g^g B*ߺFp ~g'^g~g^g B+Ћ I~g'^g~g^g B[+bA . ס~g'^g~g^g B++g Q~g'^g~g^g B+r]! $~g'X^g~g^g B!,j4S/ ~g'^g~g^g Bc,7 ~g'^g~g^g B,䤡.P ~g'^g~g^g B,k}O 9~g'X^g~g^g B)-6& ~g X^g~g^g Bk-U) :~g ^g~g^g &0зVy ~g X^g~g^g B-<0 a~g ^g~g^g B-n5 c~g H^g~g^g B1.w(ܤ 0~g ^g~g^g Bs.. ~g H^g~g^g B.P Z~g H^g~g^g B.H%yI X~g ^g~g^g B9/R) ~g H^g~g^g B{/}u y S~g P^g~g^g B/qF~ ~g H^g~g^g B7i-@| u~g H^g~g^g B)8g5 ~g H^g~g^g Bk8-Hn R~g H^g~g^g B88ZH I~g ^g~g^g B8|MWPv( ~g ^g~g^g B19e M~g ^g~g^g Bs9 C~g ^g~g^g B9NJ T~g ^g~g^g B9( ~g ^g~g^g B9:76 ~g ^g~g^g B{:* ~gN^g~g^g B:Z4 N~gNA~g~g~g% ddk *u*u.ş~gNH^g~g^g B:Ǐ Y~gNH^g~g^g BA;'a D~gNP^g~g^g B; tA Z*u~gNH^g~g^g B;pi3 sH*u~gNH^g~g^g B<@ *u~gNH^g~g^g BI<9 G*u~gNH^g~g^g B<K2~.` @x*u~gNH^g~g^g B<hc? %*u~gNP^g~g^g B=+( *u~gN^g~g^g BQ=- *u~gvX^g~g^g B=UY v|*u~gvX^g~g^g B= B\V ?-*u~gvA~g~g~g+ eU}$ *u*u.ş~gv ^g~g^g &o _*u~gv^g~g^g &.9P *u~gvK ^g~g^g &es A*u~gv ^g~g^g &vHH *u~gv^g~g^g &N^2U *u~gv ^g~g^g &x? _E*u~gv$^g~g^g  &2c ɖ*u~gv^g~g^g &$NsB Z*u~gv ^g~g^g &s}e *u~gv^g~g^g &uj l*u~gv^g~g^g &o *u~gv^g~g^g ' *u~gvT ^g~g^g 'f S *u~gv ^g~g^g ' pa a*u~gv^g~g^g  'h$ X~gv~g~g Kf  ''z 8F#~g8A~g~g~g fׅ 88/~g8d~g~g Kf 'PK@ R8 ~g80~g~g Kf  'A  8l~g8l~g~g Kf 'чr i82~g8~g~g Kf 'wCw lG8n~g8\g~g\g 'x F#~gF#A~g~g~g gw+) ƚL-L-؟~g(,Yug~g,Yug 'mg* "L-~g(,Yug~g,Yug B> A6 L-~g( ,Yug~g,Yug 'o #L-~g(=,Yug~g,Yug 'ǘp L-~g(',Yug~g,Yug %'n )L-~g(@,Yug~g,Yug" Y>y L-~g(~g~g~glbu" ޣ LK =L-~g(,Yug~g,Yug N'd 7jL-~g(,Yug~g,Yug P'hEɡ jcL-~g( 9,Yug~g,Yug R'g#n L-~g(0,Yug~g,Yug a'g~ L-~g(,Yug~g,Yug  e'>YI ITL-~g(8,Yug~g,Yug j'45vG jL-~g(,Yug~g,Yug l'|0 L-~g(2,Yug~g,Yug n'vn CL-~g(,Yug~g,Yug p'Ƴ *L-~g(( ,Yug~g,Yug t'_L L-~g( ,Yug~g,Yug w'G7 I? Ohʚ;~gʚ;~g~g~g../usr/lib/os-releaseJ+m ʚ;ʚ; 懟~gʚ;A~g~g~g zKLK^ &ʚ;ʚ;J1ԟ~gʚ;a[~g~g[~g ':9Iq ʚ;~gʚ;A~g~g~g lq] b2b2Eȟ~gb2A ~g~g~g A mooL EV 's4s4Eȟ~gb2A~g~g~g nn}p }s4s4Eȟ~gb26~g~g~g../alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub[Vז s4b2b2~gb26~g~g~g../alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub쵩v s4b2b2~gb2\f~g\f 'ar (s4~gb2\f~g\f '[pnV s4~gb2\f~g\f ''0*v Js4~gb2\f~g\f 'U(n ` Ls4~gb2\f~g\f ';D Qs4~gb2\f~g\f 'qga s4~gb2\f~g\f 'σv ls4~gb2\f~g\f '5#{{ s4~gb2\f~g\f '[I Es4~gb2 \f~g\f 'Z s4~gb2 \f~g\f 'R (s4~gb2 \f~g\f 'i+S1 6s4~gb2 \f~g\f 'ԱF s4~gb2 \f~g\f '4 Ls4~gb2 \f~g\f 'I\ $s4~gb2 \f~g\f 'I= s4~gb2 \f~g\f 'vI  s4~gb2 \f~g\f 'Ď - /:s4~gb2A~g~g~g q] #i s4s4Eȟ~gb26~g~g~g../alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub5Z, Ps4b2b2~gb26~g~g~g../alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub- s4b2b2~gb2A~g~g~g r%ib s4s4Eȟ~gb26~g~g~g../alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub ;z s4b2b2~gb26~g~g~g../alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub & s4b2b2~gb2A~g~g~g s4|Cq s4s4Eȟ~gb26~g~g~g../alpine-devel@lists.alpinelinux.org-66ba20fe.rsa.pubc s4b2b2~gb2A~g~g~g tNy2n ڸs4s4Eȟ~gb26~g~g~g../alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub)X s4b2b2~gb2A~g~g~g u2v s4s4Eȟ~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pubȈZu @Cs4s4s4~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub+o% (s4s4s4~gs4A~g~g~g vg= Xs4s4Eȟ~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pubKo ;s4s4s4~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-616db30d.rsa.pubsNz0[ ;s4s4s4~gs4A~g~g~g wOy%o cs4s4Eȟ~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pubK Js4s4s4~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.publ_ s4s4s4~gs4A~g~g~g xh>; rs4s4Eȟ~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub=% ۴s4s4s4~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pubiF s4s4s4~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub?Us As4s4s4~gs4A~g~g~g y{| ]s4s4Eȟ~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pubyF s4s4s4~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pubD^6 s4s4s4~gs46~g~g~g../alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pubJC@ 8ns4s4s4~gs4~g~g[~g '[$ ~ʚ; 懟~gʚ;A~g~g~g {ک, ]jaja֟~g~_@~g~g~gcerts/ca-certificates.crt"I B~_@~_@~g~_@A~g~g~g |)[k 3BBB֟~g~_@eK~g~gK~g 3V_ B~g~_@A~g~g~g },bo cBB֟~g~_@~g~g~g/etc/ssl/cert.pem&  ~B~_@~_@~g~_@~g~g~g/etc/ssl/certs~L iB~_@~_@~g~_@~=f ja~gG`~=*)Q 8ja~gGp ~= ~g~g~= .Š~glZQPg~gQPg ~w&I  ~gl QPg~gQPg ~ג \ ~glQPg~gQPg ~[c ~glQPg~gQPg ~t W gv ~glQPg~gQPg ~^a ~gl~g~gQPg ~H.h b2~gl~g~gQPg  ~%ٲc1 < ͠~gl QPg~gQPg !~ oa ~glQPg~gQPg "~1 FX ~gl,~g~gQPg #~ һ [ J1Ԡ~glQPg~gQPg $~ ՟x v8 ~glQPg~gQPg %~Nt # ~gljQPg~gQPg &~,DM ` ~glQPg~gQPg '~'K|} j ~gl3QPg~gQPg (~;ͤ ~9y H ~g  ~g~gQPg  C~ʻv 5 F#~g ~g~gQPg CvIi=*  %&~g A~g~g~g  j EȠ~g }~g~gQPg L~Uvx w ^в~g ~g~gQPg M~*=c  2~g aj~g~gQPg6 WN<& IB n~g s~g~gQPg N~+g ^в~g ܕ41vg~g1vgL & &^L# ?~ge1vg~g1vg  ~yak )~g1vg~g1vg  ~_8h ~g1vg~g1vg  ~Q X~g-1vg~g1vg  ~Вc ^,~gp1vg~g1vg: }.mA l~go1vg~g1vg8 Q]W B~gp1vg~g1vg: g @~gp1vg~g1vg: 3iY- ~g0j1vg~g1vg6 Pl=?6 I~gi1vg~g1vg6 k; ~g!1vg~g1vg  ~Ԟ&t= ~g(,1vg~g1vg  ~4 ~gA~g~g~g B٤ *ݠ~g1vg~g1vg ~4 $~gg 1vg~g1vg ~C=K D~gA~g~g~g (u nݠ~g1vg~g1vgV +v)f ^~gRh1vg~g1vg6 ^1q M&~gXX:1vg~g1vg ~$UEa ͪ~gXX1vg~g1vgP (̝gƆ H;~gXX&1vg~g1vg ~HRqm 3~gXX?1vg~g1vg  ~7* f~gXX1vg~g1vgD "]O ~gXXA|~g~g~g>+ ?٢B roro ~gXX1vg~g1vgp 8#g0 ~gXX 1vg~g1vg IN:F ε~gXX 1vg~g1vg I!IW< &|~gXX[1vg~g1vgj 5^ {~gXXٿ1vg~g1vg` 05/ S~gXXe1vg~g1vg4 E=Va } ~gXX"1vg~g1vg I_j2D * ~gXX)1vg~g1vg AήN 2^ ~g 1vg~g1vg ~%n4 x ~g 1vg~g1vg  ~  ~g&1vg~g1vg   ƕ ~g(1vg~g1vg  Xm R ~g)1vg~g1vg  "> Df ~g&1vg~g1vg  $x4tD  ~gJ1vg~g1vg& o} J ~g P1vg~g1vg* =i  ~g 6H1vg~g1vg& 2(K  ~g 6H1vg~g1vg& C6 s ~g H1vg~g1vg& )6:_ @g ~g H1vg~g1vg& <,xj  ~g BF1vg~g1vg$ OW9[f  ~g BF1vg~g1vg$ a$٥  ~g BF1vg~g1vg$ s rI  ~g _1vg~g1vgn 7l`jI  ~g H1vg~g1vgh 4CO  ~g 1vg~g1vgl 6gu< 8 ~g Y1vg~g1vgh 4&$> 7 ~g 1vg~g1vgh 4Za3D  ~g 1vg~g1vgh 4ʚj  ~g s1vg~g1vgb 1¢5|m  ~g 1vg~g1vgh 4H   ~g 1vg~g1vgj 5'&~{ iH ~g 1vg~g1vgj 5\N9ć8 O ~gff1vg~g1vgh 4/  ~gf1vg~g1vgf 3ţ$Zv> Ǣ ~gf81vg~g1vgf 3~OBK a2 ~gf1vg~g1vg` 0+G ~8 ~gf)1vg~g1vgr 9[HL  ~gf1vg~g1vgp 8H G ~gf}1vg~g1vgp 8̤qmG&@  ~gfo1vg~g1vgp 8|k' U ~g'1vg~g1vgn 7<- u0 = ~gH1vg~g1vgp 8s  y % ~gc1vg~g1vgn 7NA  ~g1vg~g1vgl 6(F 4 ~g|1vg~g1vgl 6=T)uJ  ~g1vg~g1vgh 4Nkʙ F ~g1vg~g1vgh 4$x JU ~g1vg~g1vgh 4AB 6 ~go1vg~g1vgn 7f   ~gD1vg~g1vgn 7!/B T ~gD1vg~g1vgb 1Xn0C4 .b ~gDN1vg~g1vgb 1띝## ] ~gD1vg~g1vgh 4z: * ~gD1vg~g1vgl 6.hk : ~gDn1vg~g1vgj 577t  ~gD1vg~g1vgb 1le0&3 J^ ~gD>1vg~g1vg` 0jQs x ~gD(1vg~g1vg^ /ͰEǤz  ~gt1vg~g1vgb 1\*n$  ~gtU1vg~g1vgj 5-HMS U ~gt1vg~g1vgZ -bB+ _ ~gtf1vg~g1vg` 0@K e ~gtn1vg~g1vg` 0b=̈́ t ~gt1vg~g1vgN '{i0  ~gt 1vg~g1vgN '&rin  ~gtW1vg~g1vgN '=#+QeU  ~gt1vg~g1vgN 'dँ p ~gt1vg~g1vgP (}9w t ~g71vg~g1vgH $l  ~g71vg~g1vgH $ײbP$t T ~g^1vg~g1vg0 lì?  ~g^1vg~g1vg0  9_  ~gj]1vg~g1vg0 +^U ^ ~gx1vg~g1vg> C X 2 ~gb1vg~g1vg2 bk@x  ~g{I1vg~g1vg& X N ~gjy1vg~g1vg> {ؿ8- dS ~gg1vg~g1vg4 Yҡ ^ ~ge1vg~g1vg4 KNt < ~gg1vg~g1vg4 γ:D : ~gg1vg~g1vg4 wĤ iu ~gg1vg~g1vg4 V^X & ~g1vg~g1vgr 9  , ~g1vg~g1vg FU  ~g1vg~g1vg FFeI  ~g1vg~g1vg G/ # ~g{1vg~g1vg G(?  ~g1vg~g1vg Go8 _ ~gZbg&1vg~g1vg J 4l " ~gZb#1vg~g1vg I1vg~g1vg i1 V ~g'51vg~g1vgF #^Dc  ~g'Ĭ1vg~g1vgX ,e#SN  ~g'e1vg~g1vg @A\"E Q ~g'1vg~g1vg ]K$ 4 ~g'C1vg~g1vg ߔ^  ~g' 1vg~g1vgD "| " R ~g'*k1vg~g1vg [;KJ  ~g'1vg~g1vg fAEd  ~g P1vg~g1vg ed]!.  ~g x1vg~g1vg _ɭJ\*w ' ~g x1vg~g1vg _(6}$  ~g g1vg~g1vg Z  ~g O1vg~g1vg Tu]  ~g 3}1vg~g1vg `56- * ~g }1vg~g1vg `,  ~g ~1vg~g1vg `Y 1N ~g _~1vg~g1vg `B"Wl  ~g 1vg~g1vg aX7m  ~gN1vg~g1vg a57`  ~gNr1vg~g1vg adJs O ~gN[1vg~g1vg `Ź|܃  ~gN~1vg~g1vg `%4 t ~gN}1vg~g1vg `K^0 , ~gN,~1vg~g1vg `./k " ~gv~1vg~g1vg `E׶  ~gvf1vg~g1vg `. ) ~gv~1vg~g1vg `N[=M ї ~gva1vg~g1vg `eb  ~gv~1vg~g1vg `żQ 6 ~gv~1vg~g1vg `%c  ~g~1vg~g1vg `a! .6 ~g1vg~g1vg ` H~ ~g1vg~g1vg `EMP J ~g}1vg~g1vg `Z8  ~gL1vg~g1vg `n L ~gX1vg~g1vg `D74 WJ ~g*u1vg~g1vg `.o " ~g*u1vg~g1vg `X<qP  ~g*u1vg~g1vg `s L,|y0 8 ~g*up1vg~g1vg ` ERy P ~g*uG1vg~g1vg a3} g- b= ~g*u1vg~g1vg `)@  ~g*u1vg~g1vg a;\ U  ~g*ug1vg~g1vg `71j  ~g1vg~g1vg a+/T p ~g1vg~g1vg a/4` շ ~gM1vg~g1vg a7 K#  ~g)1vg~g1vg aJ8[<.j  ~g1vg~g1vg a80*.  ~gr1vg~g1vg a 9/M8 ) ~g961vg~g1vg am9o" ^ ~g91vg~g1vg a95'h / ~g9*1vg~g1vg `/::,u  ~g9}1vg~g1vg `:!:k[ W ~g9~1vg~g1vg `:sr@ ro~g9~1vg~g1vg `O;jM SEro~g8/1vg~g1vg a;t & gAro~g8&1vg~g1vg a<# ؜ Xro~g81vg~g1vg aq<[D nro~g81vg~g1vg a<O+ ro~g81vg~g1vg ~3=:ßt ro~g81vg~g1vg  `ԇ" ro~g1vg~g1vg  kC4@ Аro~g1vg~g1vg  kÿ ,Lro~g1vg~g1vg MP ro~g`!F1vg~g1vg  t 20 pBro~g`! 1vg~g1vg  cro~g`!1vg~g1vg  }c ro~g`! 1vg~g1vg n  !ro~gF#g1vg~g1vg  T< ro~gF#g1vg~g1vg   &p? >ro~gF# 1vg~g1vg N < wro~gF# 1vg~g1vg ؐF ro~gF#1vg~g1vg |=xe1 Gro~g(O1vg~g1vg }->k a ro~g(>1vg~g1vg P: Q(ro~g(D1vg~g1vg RUc ro~g(1vg~g1vg l> UB` ˆro~g(1vg~g1vg u?9z ro~g(1vg~g1vgb 1|Gu G'ro~g(ޘ1vg~g1vgN '&)NK- *ro~g(T1vg~g1vgL &M_fC Iro~g(w1vg~g1vgd 2xI g9ro~g(1vg~g1vgd 2+ iro~g(1vg~g1vgd 2?-"S ro~g(1vg~g1vgd 2&hQ ro~g(1vg~g1vgN 's 5v }uro~gT*P1vg~g1vgH $ ro~gT*1vg~g1vgf 33~ Xro~gT*1vg~g1vg` 0f}N݋ ro~gT*1vg~g1vgT *?V|7 Zro~gT*1vg~g1vg i G Sro~gT*61vg~g1vg ikC/6 ro~gT*1vg~g1vg ihu L(ro~gT*1vg~g1vg o+k Uro~gT*1vg~g1vg n@KdB -ro~gL-1vg~g1vg e ro~gL-Y1vg~g1vg eñC1 ro~gL-1vg~g1vg gx ro~gL-C1vg~g1vg kw cro~g/Ѩ1vg~g1vg kJG1 ro~g/1vg~g1vg aro~gb21vg~g1vg| > S 5ro~gb21vg~g1vgp 8@ǿy ro~gs41vg~g1vgB !xoU >ro~gs4u~1vg~g1vg@  b55E ^ro~gs41vg~g1vgp 8 )/ ro~gs4M1vg~g1vgZ - O| Uro~gs4iJ1vg~g1vg SR  @ro~gs4uJ1vg~g1vg SQRE $ro~gs41vg~g1vg Gڞ _ro~gs4Ut1vg~g1vg ^*D#K ro~gs4Dp1vg~g1vg ]I6g $ro~gs4k1vg~g1vg [2 Fro~g6~1vg~g1vg `| sro~g6~1vg~g1vg `a5UVخ K ro~g61vg~g1vg ur :ro~g6`1vg~g1vg {6&!U @ro~g61vg~g1vg |(f Nro~g61vg~g1vg z-&S ro~gp891vg~g1vg xYMfN wro~gp891vg~g1vg x缦[ ro~gp891vg~g1vg w0{T Pro~gp89H1vg~g1vg S5C ro~gp89.1vg~g1vg Liwhe Ecro~gp89.1vg~g1vg L.H*\ ro~gp89G1vg~g1vg RIq? -ro~gʚ;~K1vg~g1vg SS6t_ Bro~gʚ;1vg~g1vg idf A*ro~gʚ;e1vg~g1vg a3~ 6ro~g$=}1vg~g1vg gp\ ro~g$=1vg~g1vg fyڣj rro~g$=71vg~g1vg s=l^ ro~g$= 1vg~g1vg p,F \ro~g$=f1vg~g1vg s  G " ro~g$=1vg~g1vg f O* mro~gBڦ1vg~g1vg j3= ),ro~gBA1vg~g1vg" t) ro~gB<1vg~g1vg  '׃q ro~gBl1vg~g1vg lc bro~gB1vg~g1vg q k Dro~gB1vg~g1vg v@}qw ro~g2$E1vg~g1vg t (ro~g2$E@1vg~g1vg |*ۻmy 55ro~g2$Et1vg~g1vg x$ aro~g2$Eg1vg~g1vg vbi9 Gro~g2$Eg1vg~g1vg v`9| ro~g2$E1vg~g1vg xN : Tro~g2$E"1vg~g1vgI     v(, ~g2$EA~g~g~g }C V!V!^в~gV!A ~g~g~gQ W ) F#F#f~gV!A~g~g~g  ;> |<2~gV!~g~g1vg 9ǡ roF#~gV!A~g~g~g י_yC V!V!~gV!A~g~g~g XO V!V!~gV!A ~g~g~g: F \&4&4~gV!*~g~g1vg  :LI wrolϡ~gV!'~g~g1vg  Ef\i rolϡ~gV!~g~g1vg KFK& . rolϡ~gV!)%~g~g1vg  O.3m h&4lϡ~gV!~g~g1vg Y^[& &4֡~gV!N~g~g1vg a,b B &4J1ԡ~gV!~g~g1vg  hP s&4< ͡~gV!!~g~g1vg  mxJc 2&4< ͡~gV!X ~g~g1vg vr L &4֡~gV!H~g~g1vg zpɟ &4֡~gV!~g~g1vg  9Je &4z~gV!d~g~g1vg  dʴ %F&4.š~gV!!~g~g1vg   3r&4J1ԡ~gV!(~g~g1vg  l2 n&4Eȡ~gV!:~g~g1vg nc 7&4J1ԡ~gV!|~g~g1vg  ߙ &4.š~gV!~g~g1vg  MEN &4Eȡ~gV!~g~g1vg 8 ?&4Eȡ~gV! ~g~g1vg %A" &4< ͡~gV!A~g~g~g }yy &4&4~gV!5~g~g1vg H ,&4~gV!A~g~g~g  d_gg #&4&4Y~gV!\~g~g1vg B`G S@&4 ~gV!n1~g~g1vg  I &4Ԁá~g>5~g~g1vg )M "&4ݡ~g~g~g1vg #% &4f~g~g~g1vg x̧! OI&4 ~g~g~g1vg  ʸ &4f~gx~g~g1vg c- &4 ~g~g~g1vg  0u -&4XXۡ~gA~g~g~g \p &4&4Y~gU ~g~g1vg F@ x&4t~g~g~g1vg ni- N&4~gK ~g~g1vg vL &4~g~g~g1vg  9^ X&4t~g~g~g1vg  ` B &4t~g~g~g1vg  \* &4J1ԡ~g ~g~g1vg   d&4ء~g S~g~g1vg "N,  &4l~g ~g~g1vg )[*jQ '&4Eȡ~g  ~g~g1vg 11  &4Eȡ~g 0~g~g1vg  5SG 9&4lϡ~g x(~g~g1vg  B]Q g&4lϡ~g R~g~g1vg  MFZ \&4lϡ~g j~g~g1vg Sa|a &4lϡ~g "~g~g1vg  Z6 &4z~g ~g~g1vg ce ^&4Ԁá~g ~g~g1vg jO &4ѡ~g ~g~g1vg  n= W y&4^в~g ~g~g1vg s% &4J1ԡ~g ~g~g1vg v' &4J1ԡ~g ~g~g1vg y6 k'&4^в~g ~g~g1vg 0Yz"" vn&4 ~g(~g~g1vg  4˂V &4D~g ~g~g1vg :g&yU &4ء~gA~g~g~g,+ ߟ Hk  2~gA~g~g~g  &4&4~g"~g~g1vg  = 9&4F#~g#~g~g1vg  F{2 &4(~gY+~g~g1vg  Oi n&4(~g ~g~g1vg ZmzGJ? v&4F#~gA~g~g~g  W&4&4~gt~g~g1vg< >u &45w~g((~g~g1vg  ] WK &4H{~gH~g~g1vg& El|] ,0&4H{~g~g~g1vgB !d4 t/&4H{~gҜ~g~g1vgP /51 W&4:t~gA~g~g~g %@ .  2~g A~g~g~g 5 @&4&42~g Q~g~g1vg* ?f &4\~g A~g~g~g | &&4&42~g A~g~g~g ^ߠG` &4&42~g O~g~g1vg 4p@ &4ja~g N~g~g1vg( ,%Q &4\~gros~g~g1vg:  &4\~gro,~g~g1vg H. ) &4"d~gro5~g~g1vg h8{k9 &4ja~groA~g~g~g Rs ʙ&4&42~gѓ-E~g~g1vg$ I[| {6&4"d~gѓA~g~g~g M z&4&42~gѓy~g~g1vgF #[9" ַ&4ء~gѓA~g~g~g 챐" ѓѓ~gѓA~g~g~g @({ Z&4&4~gѓ ~g~g1vg v9<` \&4$=~gѓ~g~g1vg  z5 &4$=~gѓy ~g~g1vg x :N&4ʚ;~gѓ~g~g1vg  1# &4$=~gѓ~g~g1vg df &4ʚ;~gѓ ~g~g1vg  D o[&4ʚ;~gѓs$~g~g1vg  N !&46~gѓ~g~g1vg  &ǵ 3&46~gѓ~g~g1vg  TM ~&46~gѓ~g~g1vg  " E&4ʚ;~gѓA~g~g~g '?T &4&4~gѓ~g~g1vg  )%x ɓ&4Q~g&4x ~g~g1vg DʼQ~ O&4Q~g&4~g~g1vg <' x&4Q~g&4A~g~g~g v@ &4&4~g&4A~g~g~g  \5. ^"&4&4~g&4A~g~g~g st &4&4~g&4&~g~g1vg  M*\ }&4\Z~g&4E~g~g1vg$ ~i &4\Z~g&4A~g~g~g $04 y&4&4~g&4%K~g~g1vg& l r&4\Z~g&4~g~g1vg^ /mqu c&4\Z~g&4;~g~g1vg  u &4^_~g&4A~g~g~g y &4&4~g&4xE~g~g1vg$ eID R&4^_~g&4A~g~g~g e Y&4&4~g&4A~g~g~g Xux< 7&4&4~g&4~g~g1vg \hL% &4T*~g&4@~g~g1vg"  5 6&4T*~g&4{~g~g1vg  $B C&4L-~g&4A~g~g~g  Kb&4&4~g&4@~g~g1vg" eT c&4(~g&4@~g~g1vg P EW&4(~g&4A~g~g~g &2\ :&4&4~g&4+~g~g1vg  I &4U~g&4#~g~g1vg  t3q &4U~g&4A~g~g~g gur 1&4&4~g&4~g~g1vg  Ζ ]&4U~g&4}~g~g1vg `c> &4U~g&4A~g~g~g Ƥoh &4&4~g&4~g~g1vg մIm &4*u~g~g~g1vg UBɡi &4*u~gA~g~g~g Alp) ~gA~g~g~g HS} 3&4&4~gfW~g~g1vg, )'M ,&4B~gԘ~g~g1vg gDq 8n&4N~g~g~g1vg   )s`M+ &4G~gl~g~g1vg8 ̴USh D&4@KL~gZ~g~g1vg. dv/ t|&4N~gEV~g~g1vg, (C^ <&4@KL~gA~g~g~g   B&4&4~g^~g~g1vg0 >N<` `&4\~gA~g~g~g o2 6&4&4~gn~g~g1vgp 8VZyZa S&4U~gA~g~g~g ď y&4&4~g4[c[~g~g1vg. Ej |3&4B~g4[Q~g~g1vg*  b s&4B~g4[*b~g~g1vg2 G<) &4B~g4[A~g~g~g ӛeq F&4&4~g4[c~g~g1vgT *hQ V&4NrS~g4[A~g~g~g & Np&4&4~g4[~g~g1vgr 9X t&47X~g4[A~g~g~g  R S&4&4~g4[t6~g~g1vg !0)B &4NrS~g4[A~g~g~g XD &4&42~g~g~g1vg  O 5&4"d~g ~g~g1vg  @2 &4"d~g }~g~g1vg `5 @ W&4^_~g(,~g~g1vg  s6rqA &4"d~gA~g~g~g "rv +&4&42~g^~g~g1vg0 +C&q &4"d~g%~g~g1vg  (0@ p&4xh~gm~g~g1vg 2 +i x&4xh~gA~g~g~g OB ?,&4&4~gMD~g~g1vg$ M@`| %&4p~guP~g~g1vg* Cˈ/eH 5&4Ik~gA~g~g~g )X ^&4&42~g-$~g~g1vg  :d T&4ѓ~g@~g~g1vg" X%\FO$ n&4ѓ~gA~g~g~g $ d(&4&4~gA~g~g~g 5+v &4&4~gC~g~g1vg D{5Ix &4v~g~g~g1vg KmXB &4v~gA~g~g~g O^7 &4&4~g~g~g1vg Rd &4~g~g~g1vg  Y5ڳ &4~gZ~g~g1vgb 1iϼO db&4~g(~g~g1vg  _5p A&49~gE~g~g1vg jKim &49~g~g~g1vg q@oz'k B&4~gA~g~g~g `G{) {&4&4~gB~g~g1vg  x'N k&4~gB$~g~g1vg  ~K} p&4*u~gBF~g~g1vg  IV &4*u~gBA~g~g~g F &4&4~gB.~g~g1vg  =q &4Zb~gBA~g~g~g *r5 0&4&4~gB0~g~g1vg  :Q@, K&4Zb~gBA~g~g~g  h&4&42~gB,~g~g1vg  #xx J&4$=~gBA~g~g~g @9] O&4&4~gB~g~g1vg 1 &4xh~gB~g~g1vg  1&` &4xh~gB~g~g1vg Д^: ,&4Ik~gBA~g~g~gg &< %i&4&4~gBA~g~g~g aTflM &4&4~gBS~g~g1vg* NjW! ?&4%&~gB&~g~g1vg  dQ L&4L-~g ]~g~g1vg0 cew t&4L-~g3:~g~g1vg p? N&4I~gk~g~g1vgP (w O8&4I~gy~g~g1vg> o+ w&4L-~gu~g~g1vg ߵB &4/~g=~g~g1vg  V &4@KL~g&~g~g1vg  Zw &4b2~g~g~g1vg\ .j$ x&4@KL~gY~g~g1vg  +tm *&46~g0~g~g1vg  : &4~_@~g+~g~g1vg  \d &4@KL~gp(~g~g1vg  'Z+cb1 R&4$=~g(>~g~g1vg  ٗp+ &4p89~gFW~g~g1vg V'T]9 Aj&4(~gFT~g~g1vg, }zZ p&4b2~gFA~g~g1vg  -d"upp &46~gFn~g~g1vg8 #]i9 &4~_@~gF(~g~g1vg  3)]@K &4~_@~gF~g~g1vg  >p,ۡ ,&4b2~gF~g~g1vg  CN,d t&46~gFv~g~g1vg< 8Q "&46~gF~g~g1vg Id>R= V&46~gP~g~g1vgV +*bB ?&4B~gPt~g~g1vg  Q* &4L-~gPA~g~g~g %>Ό2 &4&4~gP~g~g1vg  0 aOA &42$E~gP]~g~g1vg0 _S W&42$E~g OT~g~g1vg, R;Ƅ N &4Q~g ~g~g1vg Wtt Mz&4~_@~g ?~g~g1vg  [/(8x #e&4%&~g A~g~g~g &>d u&4&4~g ~g~g1vgX ,&? b -&4p89~g J+~g~g1vg  k]6 0&4~g vw~g~g1vg< ReMY &4`!~g ,~g~g1vgN 'p5:c &4`!~g ~g~g1vg jG &4`!~gnA~g~g~g %+KN Vnn~gnA~g~g~g %,Q ~gn ~g~g1vg vT &6&4f~gnS ~g~g1vg yH& 0CIk~gn~g~g1vg  | a6) f~gnA~g~g~g %]~ y2~gnA~g~g~g %ZͲ)8 ڼ2~gnfP~g~g1vg* {$4 懡~gna~g~g1vg2 NRT / 懡~gn}7~g~g1vg 5fa; ~gn~g~g1vg  H!2 ]V!~gn ~g~g1vg  N", /~gn~g~g1vg  ڢOQ5 $V!~gn{~g~g1vg 3 G 懡~gnA~g~g~g %mn ]2~gn0~g~g1vg [t" dH~gn~g~g1vgV +/v ~g^вi%~g~g1vg  ,' 'b~g^в~g~g1vg C  ~g^вA~g~g~g % b2~g^в~g~g1vg y̤=R^ #V!~g^вA~g~g~g & o2~g^вp~g~g1vg ]ZGi>Q  ~g^вA ~g~g~g: &%^. ~g2.~g~g1vg  r* Cʡ~g2A~g~g~g &E Z=~g2Y~g~g1vg m𵄦 =5P~g2~g~g1vg  ̋ Bn~g2A~g~g~g &M)qa 28ll~g2A~g~g~g ]4œ 22~g2A~g~g~g ^4O? ~g2+!~g~g1vg I$*n z~g2A~g~g~g _4a @22~g2A~g~g~g `48G I~g2~g~g1vg Em^!5 Ɣ~g2A~g~g~g %"ճ Bll~gA~g~g~g %+ܛ I~gO~g~g1vg T{1ϖ 3~gA~g~g~g %M| ~gE~g~g1vg$ < v4[~gA~g~g~g %XR I~gl~g~g1vgV +N w~glA~g~g~g %Y8^ YY~glA~g~g~g %A 7~gl~g~g1vg }?lW Y~gla~g~g1vg Y1F4 䦡~gYA~g~g~g %Fa YY~gYA~g~g~g %Tq~ q~gY9~g~g1vg  ?澡' 䦡~gY S~g~g1vg* " w.š~g A~g~g~g %w |~gzy~g~g1vgx <wo( `ء~gz~~g~g1vg ُ> ^в~gzA~g~g~g %,xA L~gzM~g~g1vg( ծM] n~gz~g~g1vg  9TE n~gzw~g~g1vg< >y> ~gz(?~g~g1vg  ' } S~gz~g~g1vg  #z ~gzA~g~g~g %Lf( H~gz ~g~g1vg ; z` 'v&4~gzB~g~g1vg jjK s&4~gz~g~g1vg D FJ&4~gz!~g~g1vg  픸] bء~gz1~g~g1vg  $k& a2l~gz ~g~g1vg "7h{ ʡ~gzA~g~g~g %-% ܜ~gz6~g~g1vg &'`( ѓ~gz~g~g1vg  4ơ 1ѓ~gz~g~g1vg G 6[4 Pro~gz ~g~g1vg ::  ~gԀA~g~g~g %p B~gԀ~g~g1vg =0Nϭ-d E< ͡~gԀ&~g~g1vg  DVn> '< ͡~gԀw~g~g1vg  Nw%X ѡ~gԀe~g~g1vg4 T$Ǻ A:ʡ~gԀ~g~g1vg T7( ѡ~gԀ& ~g~g1vg  [*HN Mѡ~gԀ~g~g1vg  da'@s` ѡ~gԀ"~g~g1vg  i܍ ѡ~gԀA~g~g~g %_Dm a~gԀ~g~g1vg  r,G & J1ԡ~gԀ /~g~g1vg  x; J1ԡ~gԀ ;~g~g1vg }w9 UԀá~gԀA~g~g~g % H~g.a~g~g1vg2 n3!* }l~g.N~g~g1vg  =%:k} X ~g.~g~g1vg $h. (sY~g.E ~g~g1vg  D1sqr O ~g.~g~g1vg f)O Y~g.~g~g1vg M= Y~g.~g~g1vgB !\;E hE ~g.)E~g~g1vg$  KR^ Ԁá~g.~g~g1vgh 4^& 0Ԁá~g.A~g~g~g %vr ֑~g.Y~g~g1vg` 0vl!= ڌJ1ԡ~g.G>~g~g1vg   nʡ~g.A~g~g~g %+)sW ~g." ~g~g1vg C1)b x.š~g.A~g~g~g %p 7~g.;~g~g1vgj 5t P^в~gEA~g~g~g %vf )s2~gE~g~g1vg &E Ik~gE ~g~g1vg  }> %Ik~gEA~g~g~g %1Ŷ y2~gEA~g~g~g %|P 2~gEQ~g~g1vg UL~ @ 懡~gEK~g~g1vg& . l~gE~g~g1vgF #F dH~gEA~g~g~g %g(` J\2~gTA~g~g1vg" $A0 % ~g~g~g1vg~ ?5&@ ~gA~g~g~g %xc* {~g ~g~g1vg yk9h p~gA~g~g~g %_s ~gA~g~g~g %Ps h~g, ~g~g1vg , i8~g[~g~g1vg. t7]Q )~gA~g~g~g %RP34 2~g5~g~g1vg fH0 ~g ~g~g1vg 2) d8~gB~g~g1vg < 8~gA~g~g~g % b} 3I~gm'~g~g1vg  k5 Lp~gA~g~g~g %U0k 32~gA~g~g~g %O̽b p2~g~g~g1vg e @L-~gA~g~g~g %a*E= k2~g*~g~g1vg  u%9l ro~gA~g~g~g % c2~gFK~g~g1vg& ! f9 .9~g~g~g1vg  yf 5~gA~g~g~g % _B S~gA~g~g~g %SM ~g> ~g~g1vg ~n s4~gA~g~g~g %[,d ~g< ?#~g~g1vg  4D ,4[~g< ~g~g1vg  zhk 6n~g< +~g~g1vg  R{ ~g< A~g~g~g" %:` 2~g< ~g~g1vg  h &~g< h~g~g1vg  M ~g< ~g~g1vg  !2J:P ~g< o%~g~g1vg  'b t'~g< ~g~g1vg  12 h ~g< T~g~g1vg 6$is h ~g< ~g~g1vg : h ~g< 7~g~g1vg > :q ~g< @~g~g1vg  EgM0 f ~g< ~g~g1vg  JH 5 ~g< ?~g~g1vg  OU%} ?v~g< A ~g~g~g4 %%,x L{~g< A~g~g~g % =U \ ~g< G~g~g1vg DQw( k\~~g< 1W~g~g1vg, l8 *V!~glX~g~g1vg. hpG \~~gl~g~g1vgX ,ˀ6 ;y~gl[\~g~g1vg0 ~#SW+ y~glA~g~g~g % P~gl~g~g1vg A2= G5w~glA~g~g~g %Sp ~g~g~g1vg wP3{ Jb\~~gL ~g~g1vg  U2 4 ,m~g~g~g1vg  ^\+Mv @,m~gj~g~g1vg qǁ2U;)b 'Ik~g~g~g1vgN '8|I wFpr~gJ1k~g~g1vg| >_rqc ?pr~gJ1QZ~g~g1vg. ;:t Z5w~gJ1-M~g~g1vg( OXE 4tpr~gJ1L8~g~g1vg c&~ 5w~gJ1i~g~g1vgJ %Ȃçs %V!~gJ1m~g~g1vg8 )7| 1 懡~gJ1gK~g~g1vg&  A*X  懡~g?~g~g1vg  rZh QlV!~gA~g~g~g %F A2~g~g~g1vgp Q86$ c:\~~gA~g~g~g %s 2~g%~g~g1vg  C4< ~gA~g~g~g %$6m 2~gA~g~g~g %#LG  4[4[2~gp#~g~g1vg  Y t"4[D~gA~g~g~g %Uz >4[4[2~gD~g~g1vgV \>|z T4[~gA~g~g~g %# w4[4[2~g~g~g1vgx <YM o4[ݡ~g2~g~g1vg  S o4[ݡ~g@~g~g1vg" X4  s4[ݡ~gXX~g~g1vgN 'izc 2d4[ݡ~gXXr*~g~g1vg  s: L4[f~gXX3~g~g1vg   4[f~gXXĉ~g~g1vgF #y` 54[f~gXXO~g~g1vg( i s} 4[f~gXXE~g~g1vg$ BJ w4[D~gA~g~g~g %7 4[4[2~gW~g~g1vg, Ń:+ V(4[~gA~g~g~g %p >4[4[2~g8\~g~g1vg0 ۃwA# 6V4[~g8~g~g1vgf 3!7 k4[Zb~gA~g~g~g %q b x4[4[~gA~g~g~g %#J 4[4[~g7~g~g1vg *e J4[pr~g<~g~g1vg  rb z4[p~gA~g~g~g %Ѳ/G C4[4[~g$~g~g1vg   4[pr~gA~g~g~g %&]P |4[4[2~g>j~g~g1vg6 &N 4[4[~g~g~g1vg  ]t N4[4[~gC~g~g1vg" A}ae, G4[&4~g~~g~g1vg@  m@ 4[&4~gZ@~g~g1vg" RJ~g~g1vg& TP f4[p~gh A~g~g~g u4<  p4[4[Y~gh Ii~g~g1vg ==6 )O4[4[~gh A~g~g~g v4 7Jp hX4[4[z~gh .a~g~g1vg2 < _F 4[B~gh A~g~g~g w4Eagi 4[4[Y~gh K!~g~g1vg I-oK k4[6~g A~g~g~g x4h@^ 4[4[Y~g 8~g~g1vg y#AW {4[pr~g A~g~g~g y4×> y!4[4[Y~g ?~g~g1vgl 6>X 4[\Z~g !~g~g1vg v$j h4[(~g A~g~g~g z4wN n4[4[Y~g ~g~g1vg q| 4[T*~g A~g~g~g {44 4[4[z~gNA~g~g~g |4] J Z4[4[z~gNj~g~g1vg6 `  ,L4[Q~gNA~g~g~g }4*] t;4[4[z~gN=K~g~g1vg& q L 4[N~gNA~g~g~g ~4EXtr2 b4[4[z~gNӂ~g~g1vgB !r9U{ 4[Q~gN&~g~g1vg  nT )4[2$E~gNV~g~g1vg,  $5 *I4[G~gv'+~g~g1vg K 6Y4[@KL~gvA~g~g~g 4D 4[4[Y~g1~g~g1vg ~ȿ` 4[آ~gA~g~g~g 4 ϕ4[4[Y~g~g~g1vg A .p 4[U~gA~g~g~g 4pceOď 04[4[Y~g*ue~g~g1vg  N?| d4[V!~g*uA~g~g~g  4gbVi W 4[4[Y~gu ~g~g1vg Jw :4[~gb ~g~g1vg Aq K4[9~g ~g~g1vg ˽ p4[9~g> ~g~g1vg DV+ 4[9~gs ~g~g1vg 8T8 K4[~g6 ~g~g1vg   4[~gw ~g~g1vg U x4[~gz ~g~g1vg ob GS4[~g ~g~g1vg c^ z4[`!~g ~g~g1vg #,Eq#M Զ4[`!~g} ~g~g1vg  V4[`!~gP ~g~g1vg $i h4['~g~g~g1vg %O\ @4['~g ~g~g1vg cu fc4['~gZ ~g~g1vg /8: 4[N~gI~g~g1vg /q% 4[ݢ~g ~g~g1vg 2R%_ U4[ݢ~gV~g~g1vg Y |@4[ ~g ~g~g1vg 6&4 @{4[ ~g_~g~g1vg "/e! .4[f~gC~g~g1vg @ 4[f~g ~g~g1vg ;W# |F4[f~gB~g~g1vg [zY _4[~gB~g~g1vg *g 4[~g0~g~g1vg k p z4[D~gW~g~g1vg "gm677 gG4[D~g9~g~g1vg @ L4[D~g9@~g~g1vg 3m&< D4[D~g9 ~g~g1vg byaq 4[~g9 ~g~g1vg = ȏ4[~g9 ~g~g1vg MP V4[~g9c~g~g1vgN '6V 4[~g9PY~g~g1vg W"ax (4[Zb~g9;4~g~g1vg N' Xc | R4[Zb~g9 ~g~g1vg @eR R4[Zb~g9~g~g1vg  l(~' =4[Zb~g8 ~g~g1vg 2,Q 4['~g8 ~g~g1vg Yձ 4[~g8u ~g~g1vg  L Ah 4[~g8: ~g~g1vg B5)q 4[~g8 ~g~g1vg =;3 (4[ ~g8} ~g~g1vg I\+ q4[ ~g8 ~g~g1vg w iW 4[ ~g8 ~g~g1vg WS 4[ ~g8 ~g~g1vg #S J4[N~g8: ~g~g1vg '"r S4[N~g8 ~g~g1vg +`IǥG /4[~g8 ~g~g1vg /}T l4[*u~g8 ~g~g1vg 3-C>oe 4[*u~g8 ~g~g1vg 6"/a 6O4[*u~g8~g~g1vg :SZw @[ d?4[F#~g8v ~g~g1vg =B w4[~g8A~g~g~g 4You jy4[4[Y~g8Mf~g~g1vg4 &f 4[f~g8A~g~g~g 4?:?p \4[4[z~gA~g~g~g 4gW /4[4[z~g~g~g1vgt :WZ S4[ ~gA~g~g~g 4eeP ~4[4[z~g~g~g1vg o5 l N4[ro~gA~g~g~g 4?8? `4[4[z~g7~g~g1vg @9 24[ ~g~g~g1vg ,gHG -4[~g~g~g1vg Nl1T Qk4[~gF#)~g~g1vg  U(p6 4[ ~gF#'~g~g1vg  `~G x4[~gF#A~g~g~g 4oW 4[4[z~gF#Y~g~g1vg Wj'\ p4[p~gF#A~g~g~g 4Ѫy~A ̴4[4[Y~gF# @~g~g1vg" $͇ _!4[F#~gF#A~g~g~g 4gK i4[4[Y~g%&h&~g~g1vg  jh"V+ 4[ݢ~g%&~g~g1vg  tbB'= e4[آ~g%& ~g~g1vg y)C]~DG 4[ݢ~g%&A~g~g~g 4YN~ !4[4[Y~g%&x~g~g1vg> 4{; >:4[/~g%&A~g~g~g 4F B4[4[Y~g%&"~g~g1vg  X j4[xh~g%&A~g~g~g 4P$ L-L-Y~g(A~g~g~g 4zz 4[4[Y~g( / ~g~g1vg L2% 4[^_~g(A~g~g~g 4a A04[4[Y~gL- ~g~g1vg \!` 4[\Z~gL-~g~g1vg L A4[\Z~gL-A~g~g~g 4E w4[4[Y~gL-U~g~g1vg, W[G E4[ja~gL-A~g~g~g 4Oy3 4[4[Y~gL-~g~g1vgH $v $74[ʚ;~gL-A~g~g~g 45 ͒4[4[Y~gL-~g~g1vg G_ | ;4[pr~gL-A~g~g~g 4GX` T 4[4[Y~gL-~g~g1vg $?w 4[5w~g/A~g~g~g$ 4gr# #4[4[z~g6) ~g~g1vg JTi B4[h ~g6+ ~g~g1vg ?F `4[N~g6 ~g~g1vg ++lI ^4[h ~g6 ~g~g1vg x@0 4[N~g6I ~g~g1vg -s H4[N~g6A~g~g~g 4n и4[4[z~g6 ~g~g1vg k C4[~g6 ~g~g1vg ;S W4[~g6~g~g1vg  ӷH 4[~g6M~g~g1vg( =o q4[~g6~g~g1vg E\DP o4[~g6 '~g~g1vg  0VBI L4[~g6g~g~g1vg a?<kX 4[h ~g6k ~g~g1vg Dy ZH4[N~g6x~g~g1vg NP 4[*u~g6A~g~g~g 4B6 4[4[z~g60,~g~g1vg  Ujw 4\4[h ~g6 ~g~g1vg  Gn 34[h ~g6A~g~g~g 4 F4[4[z~g6~g~g1vg  U$ 4[~g6A~g~g~g 4خ 4[4[z~g6H~g~g1vg SQ{15 4[v~g6A~g~g~g 4dZ 4[4[z~gp89~g~g1vg u+n 4[v~gp89 ~g~g1vg ME~ V4[*u~gp89S~g~g1vg ĹI @4[*u~gp89 ~g~g1vg 7* 4[v~gp89A~g~g~g 4R" #Y~gp89A~g~g~g 4M` )H4[4[Y~gp89~g~g1vg F} 4[ ~gp89"~g~g1vg  ww 4[ ~gp89d ~g~g1vg 1w 7 fp4[P~gp89~g~g1vg   [ q4[P~gp89> ~g~g1vg N \U4[ ~gp89A~g~g~g 4ܲ n4[4[Y~gp89Q~g~g1vg* J_X h4[p~gp89A~g~g~g 49b3 m4[4[Y~gp89֯~g~g1vgX ,Tpa] 4[2~gp89*~g~g1vg  k0,q ^4[2~gp89+(~g~g1vg  XTU ~:4[l~gp89A~g~g~g 4Ɔ: G4[4[Y~gp898~g~g1vg )grz 4[~gp89:~g~g1vg P 4[&4~gʚ;A ~g~g~gF 4,M G)Y~gʚ;s ~g~g1vg 8B 4[~gʚ;j~g~g1vg  <Ql 4[~gʚ;~g~g1vg A!Mv( 4[ 懢~gʚ;^~g~g1vg E m4[ ~gʚ; ~g~g1vg I=}Lm |4[ѓ~gʚ;~g~g1vg Msd,; Z94[ 懢~gʚ;~g~g1vg Q|un 懢~gʚ; ~g~g1vg UU[# ~gʚ;u~g~g1vg  Y= ѓ~gʚ; ~g~g1vg 39|V t ~gʚ;v ~g~g1vg ^ fi |~gʚ; ~g~g1vg a.q2e j&4~gʚ;U ~g~g1vg emKP ~gʚ;r ~g~g1vg hbi ,ѓ~gʚ; ~g~g1vg l=}W Xqѓ~gʚ; ~g~g1vg  p:v3F J~gʚ;~g~g1vg  uY[  ~gʚ;r~g~g1vg zڣǎ b>~gʚ;~g~g1vg ~Ud V!~gʚ; ~g~g1vg  V!~gʚ;D~g~g1vg$ gJx p~gʚ;R~g~g1vg  ✼RZ {~g$=~g~g1vg  2 L~g$=A~g~g~g 4F& Y~g$=~g~g1vg p!p Jtl~g$=A~g~g~g 4{ul& Y~g~_@N~g~g1vg  i\q;&& P~g~_@=~g~g1vgB !S.g ϘF~g~_@E~g~g1vg  61e IF~g~_@A~g~g~g 4 $U9 c gVY~g~_@C~g~g1vg D"E ~F~g~_@~g~g1vg  ez" ~g~_@>~g~g1vg  !ϕ & ~g~_@v?~g~g1vg  YD ~g~_@A~g~g~g 4pl ^[Y~g~_@~g~g1vg >2  Rl~g~_@A~g~g~g 4#" Y~g~_@ ~g~g1vg (=  ~g~_@A~g~g~g\ 44k]Ec 2*Y~g~_@~g~g1vg >$ R %&~g~_@.~g~g1vg  &ɪp! R(~g~_@x3~g~g1vg  S0 ć`!~g~_@~g~g1vg  4X9 ;`!~g~_@8~g~g1vg Ɛg [L-~g~_@A~g~g1vg" fTw F#~g~_@A~g~g1vg" wԋH& s`!~gB#~g~g1vg  vF x%&~gB~g~g1vg   [g| #,(~gB~g~g1vg 5Z ߥ`!~gBA ~g~g~gI 4u## Y~gB,1~g~g1vg  TId 9~gB% ~g~g1vg & 8~gB~g~g1vg *#c 8~gB[6~g~g1vg .7 Y"N~gB ~g~g1vg  < ~gB~g~g1vg A. [@ ~gB~g~g1vg  EdW "9~gBt~g~g1vg J+dp V*u~gB~g~g1vg  NPH6 .*u~gB`~g~g1vg  Swk b~gB6~g~g1vg X#EE "~gB~g~g1vg \N ~gBv~g~g1vg `)& ~g2$E ~g~g1vg di\& s~g2$E ~g~g1vg hİs 08~g2$E"~g~g1vg  ld=jL Zh ~g2$EH~g~g1vg u{ <h ~g2$E~g~g1vg  }BNNY ~g2$E~g~g1vg  iS '~g2$E; ~g~g1vg +R=3 Tb'~g2$E4~g~g1vg  ֯,) '~g2$E~g~g1vg  I A;N~g2$E~g~g1vg  KeY N~g2$E6~g~g1vg  z n ~g2$EH ~g~g1vg  Rjp O/~g2$E~g~g1vg dp ab2~g2$E~g~g1vg  3} \b2~g2$E~g~g1vg  T; as4~g2$E ~g~g1vg  +7 L-~g2$E ~g~g1vg 0KHU J6s4~g2$E~g~g1vg  كZ _6~g2$E"~g~g1vg b" 6~g2$E~g~g1vg  aa $=~gG ~g~g1vg &-Fl ʚ;~gG#~g~g1vg  c#F boʚ;~gG ~g~g1vg bvNx ʚ;~gGA~g~g1vg  CJ0 ; Eʚ;~gG ~g~g1vg bԅYx ʚ;~gG~g~g1vg 0 ;J5 ks4~gGH ~g~g1vg ZYE Z$=~gG&~g~g1vg   )T*~gG~g~g1vg  /WQo /~gGW4~g~g1vg y 1F#~gG ~g~g1vg #'`3; xT*~gGA~g~g~g' 4§ ,Y~gGl ~g~g1vg  c < ^_~gG/~g~g1vg  k1 "d~gG~g~g1vg (4 4H V(p~gGA~g~g~g 4D A Y~gG54~g~g1vg ,`+e f~gGU~g~g1vg, 3g[ Ik~gG8Y~g~g1vg. uc Ik~gG!~g~g1vg  :$?! ȭp~gG3~g~g1vg  ?:\s Ik~gGV~g~g1vg  L2 ? e"d~gI~g~g1vg  Q=D_ f~gIA ~g~g~gL 4<b %,Y~gI{6~g~g1vg Wxu z2$E~gI~g~g1vg  en Ύ\~gI?~g~g1vg jVm w\~gI~g~g1vg  nSO ^_~gI(~g~g1vg  sJm /U~gI& ~g~g1vg x67 ۹U~gIB~g~g1vg  |Avla .(U~gI~g~g1vg  5 z 57X~gI ~g~g1vg ?: f7X~gI~g~g1vg #>MM\ 7X~gI~g~g1vg  lM \~gI~g~g1vg  I± ?\~gI~g~g1vg  K\+ \~gIx~g~g1vg  T> CG~gIm~g~g1vg q $I~gI ~g~g1vg  c I~gI~~g~g1vg  IUG KI~gI'~g~g1vg  v};p @KL~gI% ~g~g1vg ! ŃQ~gI~g~g1vg V FQ~gIA ~g~g1vg / @KL~gI~g~g1vg  W&8oG @KL~gI~g~g1vg  @6 [Q~gI~g~g1vg n%hh0 1}U~gI=~g~g1vg  HF Q~gIF~g~g1vg$ u0N SIk~gI~g~g1vg  oLHl "d~gI~g~g1vg  nM "d~gIA~g~g~g 4b@ mY~g@KLc~g~g1vg2  ʉ {H{~g@KLA~g~g~g 4 Q$ Y~g@KLf~g~g1vg4 L^;Hg M~g@KL>~g~g1vg 9+ փF~g@KL*(~g~g1vg  $` B~g@KLA,~g~g1vg  M)} F~g@KL5&~g~g1vg  Mo0 F~g@KLV9~g~g1vg 2ke B~g@KLA~g~g~g 4 j jqY~g@KL~g~g1vg  "h g:t~g@KLR~g~g1vgh 4k# zy~g@KLA~g~g~g 4J* 1EY~gN ~g~g1vg (Dś Xp~gNb~g~g1vg  +W. }:t~gNtV~g~g1vg, .$ Hpr~gNA~g~g~g 4~ 4q# Y~gN~g~g1vg  1/Fvf :t~gNA<~g~g~g  >47 /_] ;BBY~gNA ~g~g~g4 4>f q-BBY~gNn~g~g1vg8 D*;~ 2Bl~gN+~g~g1vg  6S lBz~gN*~g~g1vg  A< rB.Ţ~gNx'~g~g1vg  L$$ B.Ţ~gN5a~g~g1vg2 `l}C P Bʢ~gNI^~g~g1vg0 y"FZOH Bʢ~gN_~g~g1vg0 vyb mRBѢ~gNe~g~g1vg4 ?)M BѢ~gNZe~g~g1vg4 Й BJ1Ԣ~gQn~g~g1vg8 Z޵ B֢~gQ+E~g~g1vg$ #L9$ B֢~gQi~g~g1vg6 3q4 Bآ~gQi~g~g1vg6 .J$ BXXۢ~gQxq~g~g1vg: I kBݢ~gQl~g~g1vg8 fEU q .Bآ~gQ:r~g~g1vg: ɜ'' GBݢ~gQ*~g~g1vg  Vń UB ~gQA ~g~g~g1 4* yxBBY~gQ~g~g1vg cM}8 &B ~gQ|~g~g1vg a] nB~gNrS~g~g1vg i2!} BD~gNrS{'~g~g1vg  p1B-ڛ 1BZb~gNrS&~g~g1vg  zKHF Bt~gNrS)~g~g1vg  E>RM fBt~gNrS~g~g1vg > 4(BD~gNrS#~g~g1vg  ;] ߇B~gNrS'~g~g1vg 򠰇 CBZb~gNrS~g~g1vg EO Bt~gNrS~g~g1vg Ճ?e "B~gNrS~g~g1vg .Q9 B{Bf~gNrS#~g~g1vg 3I^ BZb~gNrS2~g~g1vg  B~gNrS-~g~g1vg Qe NBD~gNrS~g~g1vg Q?M p;Bf~gNrS"~g~g1vg   RR# )%&~gNrSB~g~g1vg Qx eN~gNrS5~g~g1vg  KB 6*u~gNrS ~g~g1vg ȵ` 7~gUf%~g~g1vg  7 *u~gUB~g~g1vgF #Sda-kXM A*u~gU~g~g1vg Ej! J~gU! ~g~g1vg =@  s>~gU(o~g~g1vg8 v!ׅ v~gU*~g~g1vg  Y+C; 8~gU5~g~g1vg   vt 8~gUoC~g~g1vg" d 8~gU ~g~g1vg p ~gU~g~g1vg  r3E ET*~gU_~g~g1vg0 I1s VI~gU~g~g1vg  W;cdV I~gU(~g~g1vg  $/26d ~gUf~g~g1vg4 {%C ~g7X ~g~g1vg /+muX `!~g7X~g~g1vg  3jc S`!~g7X~g~g1vg  8e,L> >%&~g7Xp%~g~g1vg  =_4]KÕ S%&~g7X ~g~g1vg GH %&~g7X_2~g~g1vg  KQ߳Oq K%&~g7XL~g~g1vg( (] T*~g7X:%~g~g1vg  XCf '~g\Z ~g~g1vg  bW.D h ~g\Z!~g~g1vg  kGU -v~g\Zh!~g~g1vg  t1K4 v~g\Z;,~g~g1vg  }/a kN~g\ZL~g~g1vg RLo {N~g\Z8~g~g1vg $J th ~g\Z~g~g1vg JJ ;2$E~g\Z.~g~g1vg   L-~g\Z~g~g1vg  Ĉ( IL-~g\Z5~g~g1vg OR /~g\ZV~g~g1vg  O]o I~g\ZR~g~g1vg  Ԁa< h $=~g\Z~g~g1vg  C0CuQ c~_@~g\Z<~g~g1vg   &: R~_@~g\Z#~g~g1vg  *Q  /~g\Z~g~g1vg _ zS 0I~g\Z~g~g1vg h $=~g\Z~g~g1vg <H Ms4~g\~g~g1vg  Mip89~g\~g~g1vg  |>[ xʚ;~g\Q~g~g1vg 1n gs4~g\~g~g1vg   Ra%g* L-~g\~g~g1vg   %) B~g\~g~g1vg  =g s4~g\~g~g1vg >.v s4~g\}~g~g1vg  %yc ʚ;~g\~g~g1vg  +uR#e2 .6~g\c~g~g1vg  0f6 6~g\~g~g1vg  5{* Tp89~g\~g~g1vg :?W3 zU~_@~g\~g~g1vg AZ3Pk 02$E~g\~g~g1vg  Ix?i )B~g\#~g~g1vg  O>: 3p89~g\~g~g1vg  g q4 2$E~gjaI~g~g1vg&  [ I~gja~g~g1vg  m»(zv NrS~gja~g~g1vg r{@_ =NrS~gja ~g~g1vg vtjM U~gja~g~g1vg  y 1H{~gfh ~g~g1vg .`< H{~gf.~g~g1vg  2@ӱ7ĭ kH{~gf~g~g1vg  7^*v T~gf!~g~g1vg  <vGuG )R~gIk~g~g1vg  E+ 7H~gIk? ~g~g1vg KnhO9 ;~gIk|~g~g1vg O)P 2V!~gIk ~g~g1vg S2)  懢~gIk ~g~g1vg V.r N~gIk~g~g1vg  Z]^I  懢~gIk~g~g1vg  _ [ 4NrS~gIk ~g~g1vg dgz 5u~gIk ~g~g1vg h?g>@ !5 ~gIk_~g~g1vg l{oy t$ ~gIk~g~g1vg p Pѓ~gIk ~g~g1vg t芧 7:Bѓ~gIk~g~g1vg  w} eB~gIk ~g~g1vg |?2 LB~gIk~g~g1vg A B~gIkS ~g~g1vg Ԍ #B~gIk+~g~g1vg  GY ؈B䦢~gp~g~g1vg  N)6} EB䦢~gp^"~g~g1vg  0D~K |eBN~gp~g~g1vg  VwGߎ HBP~gprT ~g~g1vg ^ )NBP~gprA~g~g1vg  }8Bn~gpr@ ~g~g1vg uc7 JBn~gprk ~g~g1vg |H4H iB2~gpr~g~g1vg  Δ+ KBN~gpr~g~g1vg  _Dq 9Bl~gpr~g~g1vg tX+sV Bl~gprA~g~g~g ?&] IBBY~gprO~g~g1vg  xO B'~gprA~g~g~g ?lO \BBY~gpr~g~g1vg l} +B< ͢~gprA~g~g~g ? Lk DBBY~gpr~g~g1vg dTC B ~gpr~g~g1vg  R 4BԀâ~gpr~g~g1vg  +A iBԀâ~gprY~g~g1vg J]ژ d&BԀâ~gprA~g~g~g ?# FBBY~gpr݌~g~g1vgH $e'W_ fBy~gprK~g~g1vg  qN BH{~gprA~g~g~g ?P$s, Y~gprQ~g~g1vg 0C Bl~gpr~g~g1vg  :v8 ,Bl~gpr~g~g1vg fN+ Bl~gprq~g~g1vg I ZB^в~gpr5*~g~g1vg  = BY~gpr ~g~g1vg   - BY~gpr ~g~g1vg  $ ((Bz~gpr ~g~g1vg ~(Ӿ hBz~gpr&~g~g1vg  I b B~gy~g~g1vg {CP B~gy~g~g1vg RF B~gy5 ~g~g1vg  LSݞ mB~gy:~g~g1vg  3Bf~gy ~g~g1vg S B~gH{u~g~g1vg  8 Z'~gH{~g~g1vg  - \'~gH{~g~g1vg 4-sr TZb~gH{ ~g~g1vg hi' (~gH{~g~g1vg aS7 `Zb~gH{ ~g~g1vg C 9~gH{XW~g~g1vg, 0=,1 XXۢ~gH{C~g~g1vg : ~gH{?~g~g1vg Yt[r 6 J1Ԣ~gH{b~g~g1vg  !آ~gH{N"~g~g1vg   Ѣ~gH{~g~g1vg ,; Vf~gH{(1~g~g1vg  y {XXۢ~gH{(~g~g1vg  PǛ gآ~gH{ !~g~g1vg  n7K ~gH{.~g~g1vg  5)d .Ţ~gH{4~g~g1vg !:* {X.Ţ~gH{~g~g1vg /i)`p XXۢ~gH{N~g~g1vg(  P z~gH{~g~g1vg 6Iyu 2.Ţ~gH{r"~g~g1vg  =/ uJ1Ԣ~gH{ ~g~g1vg FmX yJ1Ԣ~g\~~g~g1vg JK;l Uf< ͢~g\~9.~g~g1vg  Q񻳩jR 1Y< ͢~g\~\~g~g1vg ].B6 ~g\~~g~g1vg e ]H 1XJ1Ԣ~g\~B~g~g1vg iݗx! 1< ͢~g\~X7~g~g1vg qnO uآ~g\~%~g~g1vg  LP .Ţ~g\~9~g~g1vg Fl |EȢ~g\~)~g~g1vg  y/B6 [EȢ~g\~~g~g1vg  nS ^J1Ԣ~g\~Q!~g~g1vg   % P5ʢ~g\~3~g~g1vg Mj m ʢ~g\~A~g~g~g ?> sY~g\~e~g~g1vg IAP n~g\~9<~g~g1vg  k`D ^в~gV!A~g~g~g ?" <Y~gV!A~g~g~g ?.T:m iY~gV!~g~g1vg C[[ ~gV!:~g~g1vg ’8 ~gV!~g~g1vg  UNlq Z~gV!A~g~g~g ?{' s#Y~gV!!~g~g1vgT *u y~gV!A~g~g~g ?¤ R Y~gV!|~g~g1vg  ђҠ 2$E~gV!A~g~g~g ?-1 Y~gV!%~g~g1vg  ג{sgtO eEȢ~gV!E*~g~g1vg   ' .Ţ~gV!R~g~g1vg* $m xEȢ~gV!\~g~g1vg0 9i qԀâ~gV!~g~g1vg  Ɩr \.Ţ~gV!~g~g1vg  I }hEȢ~gV!A~g~g~g ?r Y~gV!N~g~g1vg  ηHM /B~g58~g~g1vg =/Zc |zB~gT~g~g1vg  ˡ\ tB~gUk~g~g1vg6 Q{m[w] B~gA~g~g~g ?Գ7 SY~gA~g~g~g ?CHK< Y~gA~g~g~g ?%[s =Y~gf+~g~g1vg  [Kd P~gA~g~g~g ?:{ 62~gA~g~g~g ?M 2~gS"~g~g1vg I5v$ =B~g\~g~g1vg0 l ~:.g Vroz~g 7~g~g~g Y> !~gn~g~g~g8 R v D~gD~g~g~g  Z?L5 ovvv~gv~g~g~g E ~gA~g~g~g ?F[y {{EȢ~gA~g~g~g ?EǪ %EȢ~g1vg~g1vg #:ݧ>i ~g~g~g~glibmount.so.1.1.0)jm ~g 8 &<;(f [ ~g :?;g~g:?;g 8Be/ 2 ~g A~g~g~g SWEӗ J1Ԣ~g.3g~g3g $f*R j~g.A~g~g~g TWg֋ ..lϢ~g.A~g~g~g UWjQW -lϢ~g.D3g~g3g %yF>J g ~g.A~g~g~g VW!= u%..lϢ~g.A~g~g~g WWEo ?lϢ~g.v3g~g3g &– /~g.3g~g3g 'D 1~g.3g~g3g ))ӡ5b }e~g. 3g~g3g *P/' ~g.|3g~g3g  hq> e~g.Og~gOg ͷ"F ћJ1~gA~g~g~g  XWe" D֢~gA~g~g~g _Ar ֢~g12g~g12g +J0 ~g12g~g12g / W ~gA~g~g~g _`r ֢~g412g~g12g 1X O~gA~g~g~g _u]PI [t֢~g 12g~g12g 2UL ~g 12g~g12g 5Rj# ~gA~g~g~g _ a֢~g12g~g12g D[.o >~gA~g~g~g ZW2[* Z֢~g 12g~g12g FF I~g0 12g~g12g I|% d~gA~g~g~g [W/TYL] ֢~g12g~g12g LQЋ t~g 12g~g12g OHm3 ~gA~g~g~g \W"\ T֢~gG12g~g12g R+4 ~g12g~g12g Tr5c x~gl 12g~g12g Vn ~g 12g~g12g YZ~9 e~gM 12g~g12g \"V ~g 12g~g12g _1 d x~g 12g~g12g bg ~g 12g~g12g eY>Ì ~g12g~g12g hٟ]B '~gA~g~g~g ]WT[q ۣ֢~g 12g~g12g ig 75~g 12g~g12g k5B6 q~gX 12g~g12g oفDq ~gq 12g~g12g r8:'+ /~g 12g~g12g v :+ ~g 12g~g12g zdFX E;~g 12g~g12g ~ ~gA~g~g~g ^Wl ֢~g12g~g12g .zx )~g12g~g12g F C~g~g~g~gvt2206 Sآ~go12g~g12g F+Qh _~gG12g~g12g R*95 ~W~g 12g~g12g ' U~g12g~g12g )Z 8~gA~g~g~g _Wqǥz ֢~g12g~g12g -'U ~g12g~g12g h ~g12g~g12g w`.\ ~g12g~g12g :y)g) T~g~g~g~glibncursesw.so.6.5oڴ p 1   ~g  12g~g12g r f~g ~g~g~glibedit.so.0.0.74m9 \.DDD~gDHf~gHf  ( kD~gDA~g~g~g `WѷM `!`!أ~gDOg~gOg$  \ G ~gOg~gOg 6WUz a: ~gA~g~g~g _(gN q`أ~gOg~gOg  }U ~gZbOg~gOg  q ܡ ~gZbOg~gOg  I ~gPOg~gOg !)Cf R ~g8Og~gOg "G ~g'Z7Og~gOg z,! ~g'H Og~gOg  ${ 0 G[ ~g'0Og~gOg  &: ~g A~g~g~g _c $=$=J1ԣ~g Og~gOg C08-j ~gOg~gOg D33{, G~g8 Og~gOg IW !*`!~g`!A~g~g~g _)M9 4Y`!`!أ~g`!Og~gOg Vk (~g(jOg~gOg sL+ ϭ(~g( Og~gOg 4-#.Y 6~gL- Og~gOg ' 6~gs40Og~gOg ){ lf _$=~gʚ;۸f~g۸f Bsu)K :I~g2$E۸f~g۸f BmZ ۾I~g2$E۸f~g۸f BA^ xI~g2$E۸f~g۸f BCF;3 I~g2$Ep%۸f~g۸f +Ȩ AI~g2$E۸f~g۸f B@&H RI~gG۸f~g۸f BǔU?17x 8I~gG۸f~g۸f B pq2| iI~gG~g~g~gtune2fso\ jIGG~gG~g~g~gdumpe2fs 7IGG~gG۸f~g۸f O ,WI~gG۸f~g۸f  ēWY :I~gG۸f~g۸f BK|p I~gG۸f~g۸f Být (O@KL~gG۸f~g۸f Bϕ.% T!@KL~gG۸f~g۸f Bh d@KL~gI۸f~g۸f BS02 S@KL~gI۸f~g۸f BS f @KL~gI۸f~g۸f Bז [R@KL~gI۸f~g۸f +1 6@KL~gI~g~g~glibsmartcols.so.1.1.0* \QNN~gN&<pr~gprpOg~gOg ԓ` _Ypr~gprA~g~g~g _br K?prprlϣ~gprOg~gOg Փ: pr~gpr0Og~gOg ֓`<& 'pr~gprOg~gOg דK'= pr~gprA~g~g~g _H@ prprlϣ~gprjOg~gOg ؓ[YIs pr~gprOg~gOg ٓ]g& #Tpr~gprA~g~g~g _S Uprprlϣ~gprOg~gOg ړ[G ,pr~gpr Og~gOg ۓQw pr~gpreOg~gOg ޓBl=F pr~gprA~g~g~g _8 Jprprlϣ~gprOg~gOg nq; epr~gprWOg~gOg 7p% hpr~gprA~g~g~g _ak@ hprprlϣ~gprOg~gOg X;5> 9pr~gprOg~gOg  H Mfpr~gprOg~gOg yv >pr~gpr ~g~gOg ь pr~gprSOg~gOg +. pr~gprlOg~gOg !N̰ Kpr~gprA~g~g~g _"% *prprlϣ~gpr Og~gOg E!^ hpr~gprJOg~gOg JQKr Jpr~gprOg~gOg 9 Ypr~gprOg~gOg yX: zʣ~g4 R|f~gR|f z@H >~gC R|f~gR|f  uJ 5~gR|f~gR|f+ aǎ ٳ~gfR|f~gR|f P3s \~gA~g~g~g( hW\5 ʣ~g&R|f~gR|f Jx Uo~g&R|f~gR|f  +Vv e~g&R|f~gR|f "8 +~g R|f~gR|f $5{ ~g4R|f~gR|f & k~g&R|f~gR|f (X u~gV!&R|f~gR|f * ' sV~gV! R|f~gR|f ,{s ~gV!4R|f~gR|f . D~gV!@R|f~gR|f 0KPR` ~gV!BR|f~gR|f 2:~x ~gV!&R|f~gR|f 4: w~gV!R|f~gR|f 6 r~gV!R|f~gR|f 8KJ '~gV!R|f~gR|f 9ע N~gV!LR|f~gR|f :I{L cD~gV!R|f~gR|f <\3W E~~gV!2R|f~gR|f =$s1f 0~gV!NR|f~gR|f >9*h O~gV!jR|f~gR|f @EN ~gV!R|f~gR|f A!)+ ~gV!j R|f~gR|f Bx #~gV!R|f~gR|f EJLEEo@ ~gV!R|f~gR|f H5 ~gV!`R|f~gR|f JDlU U~gV!R|f~gR|f K yV A=~gV!R|f~gR|f LgY? ~gV!R|f~gR|f Mb: ~gV!NR|f~gR|f Q4ȓ M~gV!R|f~gR|f Sq1 N~gV!<R|f~gR|f UCd ~gV!hR|f~gR|f V2 @]~gV!zR|f~gR|f W2e R-~gV!R|f~gR|f Y~F( /~gV!NR|f~gR|f Zq5 ~gV!R|f~gR|f \[Q m~gV! R|f~gR|f ^NJ< a~gV!R|f~gR|f aͰ D~gV! R|f~gR|f dԉ)F B~gV!R|f~gR|f g&h# ~gV!R|f~gR|f h:K ~gV! R|f~gR|f iŠ=Zz ;~gV!R|f~gR|f lB5* U~gV!R|f~gR|f oa'G 2~gR|f~gR|f q F/ `~gR|f~gR|f r^3 ~gaR|f~gR|f u/| a~g R|f~gR|f wpІ8b Gp~g*R|f~gR|f { ~gR|f~gR|f } >T~gR|f~gR|f ~aL+ r~gR|f~gR|f p P~g` R|f~gR|f e` FLB~gp R|f~gR|f !2~e U~gR|f~gR|f ʹ(e ~gA~g~g~g nWva9 "< ͣ~g R|f~gR|f ? ]s~gR|f~gR|f \+ p~gR|f~gR|f Ǚw N~gR|f~gR|f 5 ~gR|f~gR|f -_u \~gR|f~gR|f ͞ S~gR|f~gR|f p e~gR|f~gR|f {F, b~gR|f~gR|f -ߘ ~gR|f~gR|f 7D. ~g1 R|f~gR|f Is RU~gA~g~g~g pWpZ 2P< ͣ~g R|f~gR|f Me ٱ~g@ R|f~gR|f b Y~gR|f~gR|f Gf~S ~gR|f~gR|f vh\5 ~g$ R|f~gR|f ُ B 6~gR|f~gR|f r)*io X~gR|f~gR|f  i"# ~gNR|f~gR|f ŏ>ڂ BGB~gR|f~gR|f i ~gR|f~gR|f ~s Г~g$R|f~gR|f jj6 K~gR|f~gR|f m d ~gR|f~gR|f Dj F~gR|f~gR|f CN ~gR|f~gR|f K C~gtR|f~gR|f eWRk 6~gR R|f~gR|f i? !~gZR|f~gR|f ˆG7 @~gR|f~gR|f Ĉ3 A~g R|f~gR|f ƈ46JsM B~g R|f~gR|f ʈBu 4~g? R|f~gR|f Έ"z`< ~gR|f~gR|f шom B~gA~g~g~g uW=c:/ @< ͣ~g\ R|f~gR|f ҈3 ~g\ R|f~gR|f ՈJuT& ~g\ R|f~gR|f ؈+5h ~gR|f~gR|f ۈf} ~gR|f~gR|f ݈m ?~gdHR|f~gR|f ވ{܎ Ap~gdHfR|f~gR|f /J\2 OZB~gdH2R|f~gR|f Sdv{ ~gdHnR|f~gR|f ݶ? C~gdH4 R|f~gR|f yY*| >B~gdHR|f~gR|f thF0L ~gdHR|f~gR|f HK9l 1Q~gdHR|f~gR|f '<Q B~gdHR|f~gR|f Zj i~gdHLR|f~gR|f fH_ ~gdH R|f~gR|f 1vwb EB~gdHR|f~gR|f >7FdJ ~gdHR|f~gR|f M 1B~gdHR|f~gR|f ) ? ~gdH R|f~gR|f @ HU~gdHGR|f~gR|f yBI `.B~gdH0R|f~gR|f [E&e ~gdHR|f~gR|f l7H ܜ~gdHR|f~gR|f J2H ~gdHL R|f~gR|f  > B~gdHNR|f~gR|f >' fB~gdH R|f~gR|f E| ~gdHA~g~g~g% yWA B i2ʣ~gdHR|f~gR|f  T %~gdHR|f~gR|f  0 h!~gdHR|f~gR|f  LQ ~gdHR|f~gR|f /+t 5~gdHR|f~gR|f g)# y~gdH R|f~gR|f A }~gdH|R|f~gR|f r3_ e~gdHR|f~gR|f j5UH ~gdHR|f~gR|f % \2~gdH|R|f~gR|f ON[ |~gdHR|f~gR|f FѲ x?~gdHA~g~g~g zW} ʣ~gdHR|f~gR|f k o3 ~gdHA(~g~g~g* {W_'y BB< ͣ~gdHR|f~gR|f ?!= Ѭ~gdHR|f~gR|f  Vq ~gdHR|f~gR|f "Z ST~gdHR|f~gR|f $R| ~gdHR|f~gR|f %l^B ~gdH]R|f~gR|f &5O w~gdHR|f~gR|f '0s ]~gdHR|f~gR|f (e ~gdHR|f~gR|f )P͉Q V~gdHR|f~gR|f **' ~gdHR|f~gR|f ,=\#' W~gdHR|f~gR|f -U@K ~gdHjR|f~gR|f /WtIc %~gdHR|f~gR|f 2Dy 5~gdHR|f~gR|f 3  ؉~gdHR|f~gR|f 4$?\ ~gdHR|f~gR|f 55iEvZ U~gdHmR|f~gR|f 7w ~gdH1R|f~gR|f 8a\ q~gfR|f~gR|f 9zcq 0~gCR|f~gR|f :6 %C .[~gQR|f~gR|f ;}Z ~gR|f~gR|f =KU m~gR|f~gR|f >[u !~gAR|f~gR|f ?CαBo Ԗ~gR|f~gR|f @A" l~gR|f~gR|f B*4O /~g R|f~gR|f F5ݼ g~gQR|f~gR|f Jᢨ ~gR|f~gR|f K\d ~gmR|f~gR|f M2k4 ~gR|f~gR|f Ntz +~gR|f~gR|f P,!2 dB~gR|f~gR|f RK g~gR|f~gR|f S c~gT R|f~gR|f Tg ~gR|f~gR|f WڑO ~gR|f~gR|f X;c= ~g{R|f~gR|f Z"Vhi U6~gR|f~gR|f [:f3 F}~gR|f~gR|f \ Zf~gR|f~gR|f ]}! W~gR|f~gR|f _io^ ~gR|f~gR|f a%@$ e%~gR|f~gR|f b1 :~gR|f~gR|f d˝eK7 ~gR|f~gR|f fJL Rv~gHR|f~gR|f g> ~gR|f~gR|f hN\;< ~g 3R|f~gR|f y ?rt ~g iR|f~gR|f z~N O~g R|f~gR|f {͎ ? Q~g R|f~gR|f }mV1 7~g AR|f~gR|f ~>?-j ?~g R|f~gR|f fq ~g R|f~gR|f u D ~g R|f~gR|f  G'~g 5R|f~gR|f V l~g R|f~gR|f " 7~g R|f~gR|f N; o~g R|f~gR|f Ϳ798 ~g R|f~gR|f y j;B~g R|f~gR|f *sq B~g qR|f~gR|f G *B~g A~g~g~g% _,욤 "BBʣ~g r R|f~gR|f Wl B~g \ R|f~gR|f j- }B~g iR|f~gR|f Ћl} B~g R|f~gR|f o B~g R|f~gR|f YþH GB~g 1 R|f~gR|f  H+B~g R|f~gR|f :/ *PB~g R|f~gR|f \"ў B~g A ~g~g~gF _ol, b&BBʣ~g R|f~gR|f '@F РB~g R|f~gR|f jpw B~g R|f~gR|f Fg}A B~g R|f~gR|f k V[B~g 6 R|f~gR|f  KpB~g ER|f~gR|f 9" YB~g R|f~gR|f ý 3B~g 6R|f~gR|f ~iܗ yB~g R|f~gR|f H EB~g R|f~gR|f Y4NJ YB~g R|f~gR|f -z B~g A~g~g~g _?]dJ( BB< ͣ~gѓu R|f~gR|f pt ~gѓA~g~g~g _y# BBʣ~gѓA~g~g~g _e, BBʣ~gѓR|f~gR|f ȸd I|~gѓR|f~gR|f 1mO B~gѓ R|f~gR|f ‰zVo_ W&B~gѓA~g~g~gj _\ crBB< ͣ~gѓrR|f~gR|f  Ɖ2] QoB~gѓtR|f~gR|f ljɌp B~gѓuR|f~gR|f ȉC +F B~gѓuR|f~gR|f ɉl` ]B~gѓuR|f~gR|f ʉ?n B~gѓtR|f~gR|f ˉF DB~gѓtR|f~gR|f ̉@gܼ B~gѓtR|f~gR|f ͉ VB~gѓtR|f~gR|f ΉfT ZB~gѓtR|f~gR|f ωRG/~ B~gѓtR|f~gR|f Љ•& '6B~gѓtR|f~gR|f щGc B~gѓtR|f~gR|f ҉2\ B~gѓuR|f~gR|f Ӊ#^V B~gѓvR|f~gR|f ԉ&v ͕B~gѓvR|f~gR|f ՉL FB~gѓvR|f~gR|f ։- ZB~gѓvR|f~gR|f ׉֐ B~gѓvR|f~gR|f ؉Vb~ >B~gѓuR|f~gR|f ىauӦ B~gѓuR|f~gR|f ډƄIa8 B~gѓuR|f~gR|f ۉz WB~gѓuR|f~gR|f ܉k?O B~gѓuR|f~gR|f ̵݉ eB~gѓuR|f~gR|f މe 2B~gѓuR|f~gR|f ߉xY {jB~gѓuR|f~gR|f [s' B~gѓrR|f~gR|f H |zB~gѓA~g~g~g  _s@ ʣ~gѓR|f~gR|f `$K B~gѓR|f~gR|f I5 tB~gѓPR|f~gR|f Hl 7 ~gѓR|f~gR|f z8_p ~gѓR|f~gR|f  : B~gѓR|f~gR|f  B~gѓ@ R|f~gR|f }* 4B~gѓuR|f~gR|f ꂆU Ζ~gѓV R|f~gR|f &O b:~gѓ R|f~gR|f Ϭ a8B~gѓlR|f~gR|f QAK. =~gѓR|f~gR|f q ;B~gѓHR|f~gR|f  v~gѓR|f~gR|f -4 ~gѓ R|f~gR|f & `: FM~gѓ6 R|f~gR|f  }y7 X~gѓ< R|f~gR|f  O @~gѓR|f~gR|f e 1~g&4 R|f~gR|f D)q H~g&4R|f~gR|f x ax~g&4R|f~gR|f (8 +~g&4Q R|f~gR|f \0m &~g&4R|f~gR|f RP ~g&4R|f~gR|f 0N_ ~g&4R|f~gR|f !@t _~g&4R|f~gR|f #yn S ~g&4dR|f~gR|f & 6~g&4$R|f~gR|f )b!T (~g&4R|f~gR|f ,e Z#~g&4R|f~gR|f .6 h;~g&4rR|f~gR|f 15Rps H~g&4R|f~gR|f 4 " d~g&4^ R|f~gR|f 6Aҡ ~g&4tR|f~gR|f 9~Ҍ[ ~g&4IR|f~gR|f :؂ i~g&4A~g~g~g" _^u lϣ~g&4R|f~gR|f ;nz (^~g&4R|f~gR|f <?d |~g&4R|f~gR|f =r ~g&4.R|f~gR|f >{ ~g&4A~g~g~g _rca. ʣ~g&4R|f~gR|f ?Z[H:E x/~g&4A~g~g~g  _.;[ < ͣ~g&4VR|f~gR|f Bv}^3 ~g&4R|f~gR|f C,ub ~g&4 R|f~gR|f Dn\O '3~gR|f~gR|f EJ~ ~gR|f~gR|f F ~g4R|f~gR|f GM]Q ~gR|f~gR|f H -~gR|f~gR|f I,n 27~gR|f~gR|f J~H4 ~gR|f~gR|f K/ %~gR|f~gR|f Lo ~gR|f~gR|f Mo ?~gQR|f~gR|f N h~gR|f~gR|f Ok$8F ~gR|f~gR|f P[\& J~gR|f~gR|f Q]i j~gR|f~gR|f RM` Q~gbR|f~gR|f SY? ~g"R|f~gR|f T&U} (a~gR|f~gR|f U&R F~gR|f~gR|f VW# X~gMR|f~gR|f W= p<~gR|f~gR|f X5C7h L~gfR|f~gR|f YwA ~gA~g~g~g% Wqƺc uʣ~g$R|f~gR|f  Z@v ~gR|f~gR|f  _wI *~g$WIR|f~gR|f&  }~g$fDR|f~gR|f$ { d~g~g~g~g fyR{ &F#F#F#~gF#`~g~g~g Y* 2 J1J1l~gJ1~g~g~g.I;{ Cfff~gf~g~g~g~g 1/NW W ~g A~g~g~g W*!!e %p89p89J1Դ~gz+~g~g~g \0h%, $=p89pr~gp89A~g~g~g Wўl 7X7X5w~gz"~g~gug  lv n !T*5w~gz|-~g~gug  uDb} T*~gz78~g~gug 4CP T*~gz0~g~gug  #p eT*`!~gz~g~gug jW :T*T*~gz~g~gug /\G /T*L-~gzug~gug Yζ" T*~gzHug~gug E-v*;! ]T*~gԀ\ ug~gug XrwE\ |T*~g.? ug~gug y˻V uT*~gE ug~gug |&P1# T*~glug~gug } &T*~gl ug~gug CeDj |T*~glug~gug E}% oT*~g ug~gug b~rvG 8uT*~gJ1`ug~gug  =Z*< {T*~gJ18 ug~gug 5d$ vT*~g ~g~gug %%1( T*~gf ug~gug Z[M T*~gPFug~gug$ [m8 uT*~g ] ug~gug X 5T*~gf8 ~g~gug Ean T*L-~gDP0 ug~gug M{yť+ 0T*~gD= ug~gug  Nپp^ (T*~gw~g~gug ȧ/è T*~gh< ug~gug  S3W uT*~g !~g~gug   dT*$=~gug~gug CkX* >T*~gh= ~g~gug  ^@w4 &T*~_@~gug~gug  y5x T*~g ug~gug eU ]T*~g= ug~gug Pnb\ ,T*~gug~gug S 3T*~g8A~g~g~g WHa% AT*T*Eȵ~g8ug~gug  Ғ~p T*~g8ug~gugh 4j- {T*~g8&~g~gug   4& T*$=~g8R$~g~gugj 5 5}Tz T*L-~g8A~g~g~g Wdt" qT*T*Eȵ~gT*~g~gug Ċf 7X~g/_~g~gug Ŋzj p7X%&~g/A~g~g~g WiI t//lϵ~g/A~g~g~g`S }o 2P :"d"d~g/h.~g~gug  NJ5 7Xݵ~g/@ug~gug  ӊ$u "[7X~g/~g~gug ي 7X~g/ug~gug ܊I .7X~g/ )~g~gug  ݊98 l7X~g/ug~gug  cXZ S7X~g/"~g~gug  Q# 7Xf~g/ug~gug  VU6 A7X~g/~g~gug L; 77XEȵ~g/pug~gug ؿ- ٷ7X~g/~g~gug du [7Xl~g/Pug~gug W;7- ^7X~g/~g~gug  X6 w7Xf~g/ ug~gug 4 AH7X~g/'~g~gug  gM%% 7Xݵ~g/ ug~gug  ʄ ]7X~g/~g~gug [0 (7Xֵ~g/ug~gug  ! d k7X~g/~g~gug   t 7X`!~g/ ug~gug &~X v}7X~g/~g~gug  * G7Xv~g/Hug~gug /VɆA) ˞7X~g/ ~g~gug  1_j 7XEȵ~g/ug~gug 6T 7X~g/H~g~gug  8=&B 7Xlϵ~gb2ug~gug =k|3 7X~gb2~g~gug  ?ם[ 7Xh ~gb2ug~gug DQ o c7X~gb2~~g~gug@  U)uZ (7XY~gb2:ug~gug F%/ b 7X~gb2 ~g~gug U`x% 7XԀõ~gb2ug~gug X 7X~gb2~g~gug  ZAr p7XF#~gb2ug~gug `>: NO7X~gb2P~g~gug  c l7X ~gb2ug~gug i|66 uc7X~gb2&~g~gug  l͂K7] P7X%&~gb2ug~gug v. C7X~gb2H~g~gug  z8 :R7XN~gb2ug~gug w3q" 7X~gb2~g~gug  OV c7X(~gb2ug~gug pAU ru7X~gb2#~g~gug  IR 7Xݵ~gb2ug~gug O<M {\Z~gb2, ~g~gug ^ h\Z(~gb2~g~gug  y \Z~gb20ug~gug ߶B \Z~gb2~g~gug  x|~N \Z~gb20ug~gug p , !m\Z~gb2~g~gug  j ,\Z.ŵ~gb2@ug~gug sj ţ\Z~gb2 ~g~gug W_eE O\ZXX۵~gb2Hug~gug @O7 \Z~gb2~g~gug  %% j\ZT*~gb2"~g~gug  b G\Zt~gb2ug~gug Q2G9 L\Z~gb2pt~g~gug< .ڃ 8\Z ~gb2.ug~gug  ŋn ,\Z~gb2 ~g~gug ыV%s& (\ZEȵ~gb20ug~gug ՋAO '\Z~gb2~g~gug ׋4#v \Zص~gb2ug~gug ۋ/W \Z~gb2 ~g~gug ݋B-( 1X\Z~gb2ug~gug S q'\Z~g6`~g~gug RjV \Z~g6ug~gug .0c 9\Z~g6~g~gug I7( z=\ZԀõ~g6ug~gug [Z \Z~g6C~g~gug" FSe U\Z ~g6pug~gug è`l \Z~g6~g~gug ٜ' \Z8~g6ug~gug 5 U \Z~g6,~g~gug  z %\ZԀõ~g6ug~gug  Ԍ_V \Z~g6 ~g~gug  * \Z(~g6ug~gug -V] \Z~g6X~g~gug =_ \Zֵ~g6Hug~gug q7 t \Z~g69~g~gug uqw ˚\Z8~g6ug~gug  &J; E\Z~g6 ~g~gug , \Z< ͵~g60ug~gug 0^9w ֍\Z~g6~g~gug 2?5~ z\Zv~g6 ug~gug :oBf+ \Z~g6~g~gug  >:$ Tn\Z'~g6 ug~gug D@g! \Z~g6h6~g~gug GcbD c\Z~g6ug~gug  UN,= \Z~g6 ~g~gug Zbh33 (\Z`!~g60ug~gug ]ܘ \Z~g6+~g~gug  _3K\ >\Z9~g68ug~gug  j@l< \Z~g6 ~g~gug pN/( o6\Zt~g6pug~gug sa; \Z~g6,~g~gug  uiG <\ZEȵ~g60ug~gug  5]~ j\Z~g6(~g~gug   Q; \Z8~g6`ug~gug  Y \Z~g6/~g~gug  a6 -\Zʵ~g6ug~gug  - Ii\Z~g6+~g~gug  Ժ V\Z~g6ug~gug  - \Z~gp89ug~gug R) ʹ\Z~gp89H)~g~gug  z.H-ފ If\Z ~gp89ug~gug  ļw/V \Z~gp89H~g~gugB !%@ (\Z.ŵ~gp898ug~gug ʼ:V_ a\Z~gp89V~g~gug, ߇1)7S D$\Z~gp890,ug~gug  ټBnR \Z~gp89~g~gug %Ʈy 9\Z(~gp89~g~gug  X1 $8\Z.ŵ~gp89 ug~gug 9. \Z~gp89~g~gugf 35c+Q M\ZZb~gp89pug~gug: . 1\Z~gp890 ~g~gug kB9R (\Zt~gp89ug~gug ?l&F m\Z~gp89#~g~gug  v 8s \Z9~gp89ug~gug GLjMJ h\Z~gp89(h~g~gug6 ڧtSf {\Z'~gp89XYug~gug. hl=Y \Z~gp89<~g~gug  OP[ P\Zlϵ~gp895ug~gug q :\Z~gp890~g~gug  #D 2\Zѵ~gp89'ug~gug  07d v\Z~gp89<~g~gug  :P㒙W {\Zf~gp892ug~gug  JE3,v @\Z~gp89~g~gug Wi3 \Zh ~gʚ;ug~gug [ \Z~gʚ;~g~gug  ] Pz :\Z~gʚ; ug~gug bZ \Z~gʚ;~g~gug  e(րQ \Zֵ~gʚ;` ug~gug jBl< 7\Z~gʚ;~g~gug  mB; -\Zʵ~gʚ;ug~gug s}d @a\Z~gʚ; ~g~gug wA h)\Zt~gʚ;0ug~gug {-DAm \Z~gʚ; Q~g~gug* 9N  \ZZb~gʚ;PEug~gug$ ;12 \Z~gʚ;X!~g~gug  ~]@aG \Zz~gʚ;ug~gug '+s %\Z~gʚ;p ~g~gug 4 c\Zf~gʚ;ug~gug h q\Z~gʚ; 3~g~gug  E e\Zz~gʚ;h+ug~gug   \Z~g$= =~g~gug  I? \ZJ1Ե~g$=H5ug~gug  ! *&\Z~g$=~g~gug ʽS#z \Z ~g$=ug~gug  ҽ`Ͼ \Z~g$=~g~gug  ؽr} 8\Z~g$= ug~gug ݽ,n \Z~g$= ~g~gug  u a\Zf~g$=ug~gug MjH[ U<\Z~g$=4~g~gug C}" \Z~g$=X,ug~gug  }I \Z~g$=؉~g~gugF #NN5a3 \Zѵ~g$=ug~gugB !qgM1: >^_~g$=W~g~gug, ^z ^_D~g$=xOug~gug( $X! :p^_~g$= ug~gug  > +^_~g$=ug~gug  k !^_~g$=+~g~gug  j e^_~g$=(ug~gug *l! b:^_~g$=`.~g~gug  S, ^_N~g$=ug~gug +J29U a^_~g$=C~g~gug Q?q ^_%&~g$=8ug~gugD " 16t \^_~g$=?~g~gug  /[Ȗ ^_h ~g$=ug~gug ?ɵD 7^_~g$= ~g~gug  F֗u W ^_Eȵ~g$=(ug~gug L|V ^_~g$=%~g~gug  N%! $^_~g$= ug~gug Xiװ  U^_~g$=P~g~gug \ZmZC ^_~g~_@ ug~gug c7bA g^_~g~_@P4~g~gug ftSTk ^_F#~g~_@ug~gug tCM2 ^_~g~_@0 ~g~gug |jF - ^_~g~_@ug~gug Ě$) ^_~g~_@ )~g~gug  X_> E^_h ~g~_@ug~gug PH. \^_~g~_@ ~g~gug l!3 I^_Y~g~_@ug~gug Ќ! p^_~g~_@`~g~gug  '. ^_~g~_@ug~gug U; ^_~g~_@~g~gug   ^_~g~_@ug~gug Q 2^_~g~_@2~g~gug  4k ށ^_z~g~_@ug~gug wN 2^_~g~_@8~g~gug | ^_l~g~_@hug~gug ǾZOQ Y^_~g~_@(~g~gug  ξ  3^_lϵ~g~_@ug~gug Ծ 5fh ,^_~g~_@0,~g~gug  ׾ufa "^_D~g~_@ug~gug   H^_~g~_@(D~g~gug$ /){âpV a^_J1Ե~g~_@8ug~gug b{ ^_~g~_@)~g~gug  1oT ;^_~g~_@pug~gug  1 ,F)fɄ o^_b2~gB~g~gug  ކO O^_9~gBug~gug $sG 9^_~gBp"~g~gug  &/ b^_%&~gBHug~gug  /VU١ ^_~gBX~g~gug.  - ^_'~gBug~gug 4*~j ;^_~gB-~g~gug  <U3ط ^_Y~gB8ug~gug  HLqL Z*^_~gB~g~gug MR2 ^_f~gBP ug~gug T| ^_~gB"~g~gug  W۬- %^_`!~gB( ug~gug ` ?M m^_~gB+~g~gug  cm k^_~gBug~gug nyF ^_~gB0~g~gug r4^k" ^_~gB ug~gug yYb+ ^_~gBX~g~gug |N &^_N~gBHug~gug F#]~ L^_~gB(~g~gug Òo +d^_ ~gBp ug~gug -e@c ^_~gB~g~gug ,*2 ^_XX۵~gG ug~gug  s^_ص~gGug~gug X] mb^_~gG~g~gug J6^? d^_XX۵~gG ug~gug {y+ ^_~gGn~g~gug8 ջ9keHA ?^_Ԁõ~gG)ug~gug  S%J ^_~gG 6~g~gug q:4 h^_ݵ~gGug~gug ÿQG  ʪ^_~gG~g~gug ʿS "^_D~gGug~gug ҿ@V} \^_~gG8~g~gug ֿ88 Q^_%&~gG ug~gug ݿ;V:: ^_~gG(:~g~gug hTb% Z^_~gGug~gug a |A^_~gG0 ~g~gug [?QH ^_~gGug~gug [: , ݋^_~gGX ~g~gug 5z )$^_J1Ե~gG ug~gug ։b G^_~gGX ~g~gug (? ^_F#~gGug~gug 1N 9^_~gGp~g~gug  V ^_~gGug~gug  7 R^_~gG~g~gug  " 5= .^_~gGug~gug '~ |^_~gG%~g~gug  . ^_ֵ~gG ug~gug #}V0s* 6^_~gGH~g~gug &o E^_`!~gG` ug~gug -ƯY x8^_~gG~g~gug 1 uw do^_ ~gG ug~gug 8(:c ^_~gG~g~gug <UW ^_ѵ~gG ug~gug C~R* @^_~gG~g~gug G tr ^_ѵ~gG ug~gug N ur z!^_~gG~g~gug R>aA ^_~gG ug~gug Yؠ(. K^_~gG~g~gug ]; q^_Y~gG ug~gug d٩Q ^_~gG/~g~gug  hb'q !X^_ ~gGug~gug  tEt ^_~gG~g~gug  y} y^_(~gG ~g~gug ~@ER ^_dH~gGH~g~gug` 0T” d3^_~gGfug~gug4 1,-(# ^_~gG~g~gug  # :p ^_l~gGxug~gug jz c^_~gG0 ~g~gug > ǿ^_ص~gGug~gug #Il? 6^_~gG~g~gug nA n^_`!~gGTƘ~g~g~gdL 0H 2` 2`X .prprP~gP`ug~gugX ,KG B^_~gI0~g~gug  Ig n^_~gIug~gug {b ^_~gI0~g~gug  mX X^_ʵ~gIug~gug  xe%? #^_~gI8 ~g~gug !G[t d*^_.ŵ~gIug~gug d1@5CP ^_~g@KLM~g~gug( wuȚ d^_ ~g@KL$ug~gug  ݗ#M i^_~g@KL8~g~gug ^]1 2K^_8~g@KL ug~gug >MV= x^_~g@KL~g~gug  #qB 3^_ݵ~g@KL8ug~gug Ś{w M^_~g@KLh ~g~gug ȚV%X W^_%&~g@KLug~gug ˚Y8LD `^_~g@KL ~g~gug ͚U s^_~g@KLug~gug К~HZa -^_~g@KL ~g~gug ҚY yY X^_J1Ե~g@KLhug~gug ֚taw% (^_~g@KL~g~gug ؚ$V/ PU^_t~g@KLug~gug ܚ@]! x^_~g@KL@~g~gug  ޚR0 ^_v~g@KL0ug~gug um H^_~g@KL ~g~gug 1J' ׼^_ ~g@KL8ug~gug  ^_~g@KL ~g~gug %"Q7 ^_%&~g@KLpug~gug ! ^_~g@KLX~g~gug  s07 ^_~g@KLXug~gug ..x p^_~g@KL~g~gug _! ^_lϵ~g@KLug~gug JI~K ^_~g@KL@ ~g~gug  -^_ѵ~g@KLhug~gug OQ ^_~g@KL ~g~gug Wܒ q^_ʵ~g@KLug~gug ME r^_~g@KL ~g~gug  J? ӥ^_J1Ե~g@KLug~gug  r u^_~g@KLo~g~gug @,O ^_T*~g@KL~g~gug \H~$ ^_T*~g@KL$~g~gug  R@ ^_~g@KL ug~gug  sC^_~g@KL~g~gug 峆% y(^_~g@KLug~gug #(7/ <^_~g@KL~g~gug  %[!W *^_ ~g@KLug~gug +B7SL "^_~g@KL~g~gug -}/i 8^_ ~g@KL ug~gug /u_)| h^_~g@KL~g~gug  1Y:l $^_ ~g@KLug~gug 66tD ^_~g@KLHd~g~gug4 vI -^_N~g@KL$ug~gug  8d` 2 6#^_~g@KL;~g~gug Bi ^_ ~g@KL(ug~gug  Qmr ^_~g@KL 1~g~gug  WgX1 K^_h ~g@KLug~gug dMHn $^_~gQ ~g~gug k/Cc| e^_~gQug~gug nod N^_~gQ(~g~gug pj8 ^_ص~gQ ug~gug x1V ^_~gQ(~g~gug  {% u^_l~gQug~gug \d& ^_~gQ8~g~gug soO H^_< ͵~gQug~gug &enR ^_~gQ ~g~gug 3~T  ^_N~gQug~gug {\zr d^_~gQ~g~gug w^{(D $^_'~gQ`ug~gug V /^_~gQx ~g~gug Qz Ao^_*u~gQug~gug //EW ^_~gQ~g~gug m6  ^_t~gQHug~gug  ^_~gQ~g~gug EגCb '^_Zb~gQug~gugb 1e!Ci h^_~gQ@~g~gug" 䲯w ^_< ͵~gQ(ug~gug I ^_~gQx~g~gug 7 ^^_< ͵~gQh ug~gug ;QI ea^_~gQ0%~g~gug  A_HT (^_F#~gQ(ug~gug 'v} ^_~gQ~g~gug v ^_N~gQ ug~gug śtl s^_~gQx~g~gug ɛڴr& 9^_Eȵ~gQP ug~gug ЛƱ& x^_~gQ~g~gug ӛS I7^_9~gQ ug~gug ڛ?$ ^_~gQ~g~gug ݛWOC Q^_*u~gQ` ug~gug /Y ^_~gQ7~g~gug GHg .^_z~gQug~gug  d$ ^_~gQ~g~gug " D^_'~gQug~gug =* }^_~gQ ~g~gug { v^_ֵ~gQug~gug _g ^_~gQx&~g~gug  Xp "dv~gQug~gug   u}Uy V"d~gQP~g~gug  ŊZ ;"dص~gQug~gug  "d~gQ(*~g~gug  28| n"d8~gQxug~gug  %yןۅ %"d~gQP~g~gug  + pt"dص~gQug~gug 0ߦr{ 5O"d~gQ~g~gug  2u| "dֵ~gQXug~gug 72- w"d~gQ8+~g~gug  9y R "d ~gQug~gug  D}*'' :"d~gQ.~g~gug  I2U  "dz~gQ`ug~gug  U u z"d~gNrS~g~gug  [[3W $"d ~gNrS8ug~gug `i4 ?"d~gNrS~g~gugN ' ˞c `"dֵ~gNrS@ug~gug  bsvu <"d~gNrS~g~gug  rGXf $"d*u~gNrSp ug~gug xش L"d~gNrS6~g~gug ]= "t"dT*~gNrS8(~g~gug  { `I +"d.ŵ~gNrS0 ug~gug ^bW& "d~gNrST~g~gug, ̯'H! "d`!~gNrS8&ug~gug  w] "d~gNrS,~g~gug  Y& & "dD~gNrS@ug~gug  3r "d~gNrS ~g~gug &bI[O "d*u~gNrSug~gug ֥=p ~"d~gNrS~g~gug  cL| yd"d~gNrSug~gug ТT/ "d~gNrS~g~gug  s` "d~gNrS8ug~gug K gm"d~gNrS8&~g~gug  Bƛ "d~gNrS8 ug~gug ž=cvc "d~gNrS!~g~gug  ƞS,We "d*u~gNrS ug~gug Ϟ O k"d~gNrS ~g~gug Ӟ "dJ1Ե~gNrSug~gug מ3߸}{ 6"d~gNrS.~g~gug  ٞG "d~gNrSug~gug ߁hs Cp"d~gNrS ~g~gug  yѽ1 ZM"dʵ~gNrShug~gug JΠ "d~gNrS~g~gug k21# m"dԀõ~gNrSug~gug  z2"d~gNrS0 ~g~gug N'! q""d~gNrSug~gug u6|~ "d~gNrS?~g~gug  ,.p %"d9~gNrSug~gug qq 9-"d~gNrS$~g~gug  B#C }"d8~gNrSug~gug  ]"dlϵ~g7XPug~gug o7= "d~g7X~g~gug  $ dS"d~g7Xug~gug $x F"d~g7XI~g~gug& '(- "dXX۵~g7X2ug~gug  a w"d~g7XP%~g~gug J2͗ T"dZb~g7XȂug~gugB !Üq qK"d~g7Xh)~g~gug  ğȁo "d< ͵~g7Xug~gug  ϟUD hD"d~g7XXB~g~gug" XEp N"dXX۵~g7X(ug~gug  ԟ)CO 2"d~g7X~g~gugr 9.m )"d~g7X`ug~gugR )n氝h> ""d~g7Xq~g~g~g hf]- "d"d$=~g"d#~g~g~g ۟nD gdH~gW~g~g~g jLlP@[ l~gA$~g~g~g =~wv b2b26~g~g~g~g  {B+%z Mg~gp#~g~g~g  BA̧" lll~gl~g~g~g  BI lll~gl8~g~g~g B<^< 4lll~gl(~g~g~g  BFn lll~gl~g~g~g B,= 4lll~gl-~g~g~g  BV hYYY~gY ~g~g~g B0.E= cYYY~gY$~g~g~g  By3 y^YYY~gY~g~g~g BA GgYYY~gY~~g~g~g@  ABK8~VB eYYY~gY~g~g~g  B mH& ~g H)~g~g~g  Bkr޹ { ~g ~g~g~g  B1't A ~g 8+~g~g~g  BG@  ~g M~g~g~g( BDztu ~g ~g~g~g B.9 ~g 3~g~g~g  BS0= ~zzz~gz7~g~g~g BhH =zzz~gz2~g~g~g  Ctm #zzz~gz.~g~g~g  CjF5 zzz~gzX!~g~g~g  C^Q Yzzz~gz ~g~g~g )CrZ-^ ZԀԀԀþ~gԀ~g~g~g ,CH1 54ԀԀԀþ~gԀ~g~g~g .C YԀԀԀþ~gԀn~g~g~g8 !B2< 5ԀԀԀþ~gԀ,~g~g~g  2C"Q& pcԀԀԀþ~gԀ~g~g~g  >C ...ž~g.~g~g~g  DCͳ5N A{...ž~g.8(~g~g~g  JC ْ A...ž~g.8 ~g~g~g @@ # ...ž~g.H~g~g~gB !AlO VF...ž~g. ~g~g~g UC EEEȾ~gEx~g~g~g YCX EEEȾ~gE ~g~g~g  `C{K KEEEȾ~gE ~g~g~g  eCHs<& ӋEEEȾ~gE,~g~g~g  kCdR jEEEȾ~gE~g~g~g wCS(d WEEEȾ~gE~g~g~g  yC_" ʾ~g ~g~g~g C/=ʱ ʾ~g0~g~g~g  Cd * ʾ~g ~g~g~g  C_ ʾ~g/~g~g~g  Cd>qד /ʾ~g8~g~g~g C7l| zX< < < ;~g< h)~g~g~g  C,cA; #.< < < ;~g< @~g~g~g" @. < < < ;~g< ~g~g~g Cr +< < < ;~g< X~g~g~g CZ{u6 < < < ;~g< x~g~g~g C)d :?< < < ;~g< <~g~g~g  CYL f lllϾ~gl(~g~g~g  Cb zlllϾ~glX~g~g~g  CgG T/lllϾ~glH~g~g~g  Cp# lllϾ~gl~g~g~g C7^ VBlllϾ~gl~g~g~g C-: Ѿ~g؉~g~g~gF #AAH& 9Ѿ~g0~g~g~g  C1 Ѿ~g~g~g~g Ca 3Ѿ~g@ ~g~g~g D Ѿ~g ~g~g~g D8 8 J;J1J1J1Ծ~gJ1(D~g~g~g$ AJ (qJ1J1J1Ծ~gJ1 ~g~g~g  D *J1J1J1Ծ~gJ1X ~g~g~g  Dtoi J1J1J1Ծ~gJ1 ~g~g~g Dh,_ J1J1J1Ծ~gJ1 =~g~g~g  D, SJ1J1J1Ծ~gJ1X~g~g~g $D" ־~g~g~g~g (Do`Sl d5־~g~g~g~g  ,DP> ־~g ~g~g~g 1Dy ־~g~g~g~gN 'AɃ E־~g%~g~g~g  5D3k)F ־~g~g~g~g  ?D5l X־~g0 ~g~g~g DDnH ]ؾ~g~g~g~g HDl8B Sؾ~g(~g~g~g LDS+VI Yؾ~gP~g~g~g  TDĖ Mpؾ~gP~g~g~g  YDKVt{ ؾ~g0~g~g~g  ^Ddy oؾ~gI~g~g~g& AXOZ XXXXXX۾~gXX~g~g~g dDh z<XXXXXX۾~gXXXB~g~g~g" F0bQ \XXXXXX۾~gXX:~g~g~g hD7\1< {XXXXXX۾~gXX 8~g~g~g wD` `kXXXXXX۾~gXX ~g~g~g DbL XXXXXX۾~gXX~g~g~g DEs ,XXXXXX۾~gXXh.~g~g~g  D Kݾ~g#~g~g~g  DFADt ?ݾ~g'~g~g~g  D  ݾ~g 6~g~g~g Dө ,_ݾ~g~g~g~g  D: ݾ~g~g~g~g DgH I%   ~g  ~g~g~g Du9:5H    ~g X(~g~g~g  D"   ~g P~g~g~g  D{l 5   ~g pt~g~g~g< !F#ϒ K   ~g ;~g~g~g D o   ~g  ~g~g~g  D9ť2 fff~gf~g~g~g DFT Wsfff~gf<~g~g~g  DL( fff~gfp ~g~g~g  Eo؂ 4fff~gf~g~g~g  Ez˃ Ufff~gf"~g~g~g  E: 6Wfff~gf(:~g~g~g  E&= ~g~g~g~g  /E9* n~g%~g~g~g  5ES4T ~g+~g~g~g  ?Exm~D R6~g)~g~g~g  JEgjN* [~g$~g~g~g  UE1bc$ ~g~g~g~g  _E o~g0,~g~g~g  dE'5F DDD~gDW~g~g~g, AF` _DDD~gD~g~g~g pE2g p$DDD~gD,~g~g~g  xEz,- _DDD~gD ~g~g~g E^; Mgttt~gt0 ~g~g~g E:M ttt~gt"~g~g~g  Ez Au) Gyttt~gt~g~g~g En ttt~gt ~g~g~g E1e -ttt~gt~g~g~g Emʔ `ttt~gth6~g~g~g Eiy% ~g0 ~g~g~g E$ C7~g~g~g~g  EBL z]~g~g~g~gr 9Fn]M' a~gX~g~g~g  EtE\sB B~g~g~g~g  EmY.C .~g8&~g~g~g  Eب@Q g~gV~g~g~g, aF%Xnd X~g~g~g~g  ER_/ ~g4~g~g~g E#0q -~g0 ~g~g~g EV* %q~g~g~g~gf 3Fޠrڱ P!ZbZbZb~gZbP%~g~g~g JGX]E=F HRZbZbZb~gZb~g~g~g EGhQ/G ZbZbZb~gZb Q~g~g~g* aGi 2PZbZbZb~gZb.~g~g~g  EɜTA ~~g )~g~g~g  E< ~g+~g~g~g  EV: o ~g~g~g~g  X_qe Ģ~g`~g~g~g  X} C~g ~g~g~g  XX N~g(h~g~g~g6 G<߂ h'''~g'~g~g~g XEaP8 F0'''~g'X~g~g~g. ZD '''~g'~g~g~g  X F'''~g'~g~g~g Xvvv~gvx&~g~g~g  Xj4sy vvv~gv~g~g~g X%E3k 1vvv~gvg~g~g~g4 aZw5 ;vvv~gv@~g~g~g  XgN vvv~gv2~g~g~g  X+?) &~g`~g~g~g Xp ~g~g~g~g X3>8 Dw~g~g~g~g Xa }~g0~g~g~g X83 "I~g~g~g~g Xqڛ ~g~g~g~g  X[* *u*u*u~g*ux ~g~g~g Xx` w*u*u*u~g*u ~g~g~g XekEY S*u*u*u~g*u~g~g~g XPYNK C*u*u*u~g*u~g~g~g X,TXS *u*u*u~g*u!~g~g~g  Y .*u*u*u~g*u ~g~g~g  Y3zrf8 x~g~g~g~g  Y _~g ~g~g~g Yc} R ~gP~g~g~g Yd, O~gH~g~g~g` 0Z !~g+~g~g~g  YmG OC999~g9?~g~g~g  (Yw g t999~g9#~g~g~g  8Y5"H 999~g9~g~g~g AYb s999~g9~g~g~g EY<]v 999~g99~g~g~g LY^D ɿ888~g88~g~g~g [Y]ߛ( 888~g8(*~g~g~g  bY: Lx888~g8$~g~g~g  mY4k} 888~g8(~g~g~g  wYZ 888~g8~g~g~g Ytgi 888~g8~g~g~g Y/_= 2~gp~g~g~g  YË# ~g+~g~g~g  Y0Ud &~g0 ~g~g~g YC ~g0~g~g~g  Y t- N~gH~g~g~g YjY p`!`!`!~g`!T~g~g~g, Z \ `!`!`!~g`!~g~g~g  Yv2q `!`!`!~g`! ~g~g~g Y P, N`!`!`!~g`!"~g~g~g  Y?, `!`!`!~g`!~g~g~g n[AE %&%&%&~g%&8~g~g~g YtA `%&%&%&~g%&&~g~g~g  \Ȉ^? %&%&%&~g%& ~g~g~g Y! (((~g(~g~g~g   \fN S(((~g(~g~g~g  \.//l (((~g(, ~g~g~g Y? Ⱥ(((~g(~g~g~g Zy${ (((~g(o~g~g~g \N(& #T*T*T*~gT*~g~g~g \7߂ T*T*T*~gT*~g~g~g \$7 7T*T*T*~gT*~g~g~g \.х ȃT*T*T*~gT*6~g~g~g \'P NT*T*T*~gT* ~g~g~g \^ kAT*T*T*~gT*A~g~g~g J VL-L-ݿ~gL-R$~g~g~gj 5 h5pp96 //L-~gL-~g~g~g \SK#u eb2b2b2~gb2P~g~g~g( ga6m~ b2b2s4~gb2t~g~g~g 2\j3 666~g6 ~g~g~g /\4@N {{s4s4s4~gs4B~g~g~g !\l d$=ʚ;ʚ;~gʚ;~g~g~g~g TK ˭ NrS~gNT~g~g~g *\9+ bNrSNrSNrS~gNrS~g~g~g/etc/init.d/dmesg %~ U^_^_^_~g^_~g~g~g/etc/init.d/hwdrivers9 [sjajaja~gja~g~g~g/etc/init.d/mdev> W"d"d"d~g"d~g~g~g/etc/init.d/acpid|x =xhxhxh~gxh~g~g~g/etc/init.d/bootmisc  Sxhxhxh~gxh~g~g~g/etc/init.d/hostnameç@ .IkIkIk~gIk~g~g~g/etc/init.d/hwclockD ,m,m,m~g,m~g~g~g/etc/init.d/modulesN7 3ppp~gp~g~g~g/etc/init.d/swapœP$ DRprprpr~gpr~g~g~g/etc/init.d/sysctl` :t:t:t~g:t~g~g~g/etc/init.d/syslogMj ]P5w5w5w~g5w~g~g~g/etc/init.d/chronydq\ yyy~gy~g~g~g/etc/init.d/networking,I/ݲ H{H{H{~gH{~g~g~g/etc/init.d/sshd\@z ,\~\~\~~g\~~g~g~g/etc/init.d/killprocs@դ HV!V!V!~gV!~g~g~g/etc/init.d/mount-roy( ~g~g~g~g/etc/init.d/savecacheO8 ~gk~g~g~g 5\Dț B \~g~g~g~g/etc/init.d/tiny-cloud-bootM>F BB~g~g~g~g/etc/init.d/tiny-cloud-early qdp{9 ;BBB~gB~g~g~g/etc/init.d/tiny-cloud-mainx` SFFF~gF~g~g~g/etc/init.d/tiny-cloud-final{ PPP~gP~g~g~g~g Qnz >~g~g~g~g~g .!W ~g~g~g~g~g L ~g~g~g~g~g .8 !~g~g~g~g~g r P~g~g~g~g~g |Ͳ< ~gl~g~g~g~g O%K ~gl~g~g~g~g E7 3~gl~g~g~g~g  iy 1~gl~g~g~g~g Katz >\~\~t~gl~g~g~g~g qHs %\~\~t~gl~g~g~g~g   t~gl~g~g~g~g l+Zǯ ~gl~g~g~g~g ԥ? yt~gl~g~g~g~g l 9v~gl~g~g~g~g  H0 K~gl~g~g~g~g R ۰~gl~g~g~g~g  j~gl~g~g~g~g N2 s~gJ1~g~g~g~g FX P~gJ1~g~g~g~g 6<d R~gJ1~g~g~g~g ol[ ~gJ1~g~g~g~g ǟxl ^~gJ1~g~g~g~g ?c x~gJ1~g~g~g~g Pj ~gJ1~g~g~g~g vzK Y~gJ1~g~g~g~g հh 2~gJ1~g~g~g~g .D \~\~'~gJ1~g~g~g~g 18n' ~gJ1A~g~g~g~g , CV!V!V!~gJ1~g~g~g~g sr6 V!V!9~gJ1A~g~g~g~g  #4V yYV!V!V!~gJ1~g~g~g~g &1 RV!V!~gJ1~g~g~g~g Tz LV!V!~gJ1A~g~g~g~g $A C7V!V!V!~gJ1~g~g~g~g Xڰ FV!V!~gJ1A~g~g~g~g 3 \~\~\~~gA~g~g~g~g =r }e\~\~\~~g~g~g~g~g   \~\~ 懷~g~g~g~g~g W $ 5w5wݷ~g~g~g~g~g x TV!V!4[~gXX~g~g~g~g  K7 CV!V!4[~gXX~g~g~g~g @u V!V!5w~gdH~g~g~g~g uW; 5w5w5w~gdH~g~g~g~g 8 G5w5wf~g~g~g~g~g  V!V!xh~g~g~g~g~g L 7V!V!y~gro~g~g~g~g 9e V!V!dH~gro~g~g~g~g j! 6V!V!y~gro~g~g~g~g ub9q !V!V!~gro~g~g~g~g TDe V!V!Ik~g4[~g~g~g~g \ pV!V!Ik~g4[~g~g~g~g իV V!V!y~g4[A~g~g~g~g 'FN 6V!V!^в~gA~g~g~g~g jM в5w5w5w~g~g~g~g~g \z K5w5w'~g~g~g~g~g  N ;5w5w'~g~g~g~g~g Cyd -5w5w'~g~g~g~g~g ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ . .. eficonfig-6.12.8-0-virt vmlinuz-virt initramfs-virt boot,grubT dtbs-virtSystem.map-6.12.8-0-virt & . .. ޣ\ ...{e! 6Do" . .. repositories keysz world( archprotected_paths.d X . ..<3alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub<3alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub<3alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub<3alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub3alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub Ii ... wT` . .. null zerorandomurandomconsoleS pts9shm ,/ . .. apk: libc.musl-aarch64.so.1firmwaremodules-load.dsysctl.dt mdevmodules9Pld-musl-aarch64.so.1 .n . .. dbRexec  . ..`  installed'$lock% scripts.tar&triggers kPo! . .."cacheempty liblocal@run log mailLoptspool tmplock ޷V" .! ..# apk$misc ]!,# .".. ?X$ .".. h@, ) ... ޾; ...{ed S#= .L..>busybox ާ1A? .L..@acpidopenrc(|chrony ䷲A . ..B if-down.dCif-post-down.dD if-post-up.dE if-pre-down.dF if-pre-up.dGif-up.dg` interfaces 5rdB .A.. HC .A.. /8_D .A.. ޥg0E .A.. .OF .A.. |SG .AL..Hdad :J .L..K udhcpc.conf ɺ9L ...{lw< iM . ..N sbinOshareT bin liblocallibexec 8ZN .M..{U_4X  HmO .M ..Pudhcpc man misc apk9dhcpcdmkinitfsf kernel zoneinfo grub \locale zP .OL..Qdefault.script ފR ... |/T .M..{TK bt"7%&' Pdd bcvcksum deallocvtdos2unixexpandfactor id nc'resize:sha1sum>showkey?shredDsplitI sumQ tailouptimeruuencode~whoisxargsgetconf  grub-mknetdir 򣎯lzopcatkillall freehostidnslookupnprocV [[dirnameeject dc expr lzmabbasenamemkfifo envgroupsfuserlogger lesskbzcatpscan 8setsid4@ shufU timeW top{which)chronyc  grub-glue-efi  grub-mklayout grub-mkstandalone  grub-editenv  grub-filehuf  grub-fstesttop{which)chronyc  @ h5.apk.0a217f4f583727ba0cd5a6d1f72e7d595009e92e6c8eb8e2 \ arch_ ashabase64pchgrpz cp date dfdmesg echofalsefgrepfsyncgetopt grepgunzipionicekbd_modelinux32loginmkdirmknodmktemp morek mountmpstat pipe_progressprintenv# reformime( rev* rm. run-parts/ sed+ shE statG sttyR tarXtouchbbsuidj kmodnrmmod 'i mountpointfdflushlinux64cbbconfig lzop mvochattregrep ddipcalc<busyboxhostname dnsdomainnameiostatmakemimerchown+rmdirping6 link nice pidof ls psfatattrqchmod lnnetstatdumpkmap pwd gzip kill pingn catlsattr6setpriv7 setserialBsleepq H suM sync] truedumounteunamepusleep wwatch  zcatklsmodlmodinfom modprobe rc-statushdepmodi4insmod  fold ipcsFstrings lastx cmp\ treelzcatkunlzoppkilliunlink}crontabf blkdiscardipcrmwclearu chvtVtimeoutT testC sort pwdx diffy commlbzip2lunsharenunzipj uvlocky wce| who"}whoami )xzcat yes3scanelf  ldd"scmp_sys_resolver  ssh-copy-id yx grub-menulst2cfg grub-mkpasswd-pbkdf2 chattr \ grub-mkrescue  findssl.sh scp 0sftp L;S ... ދ}{9 ... =s .L..root S'9 . ..blacklist.conf i386.confkms.conf aliases.conf %C ... 7s# ... q . ..15mindailyhourlymonthlyweekly 8 ... S(6 ... މkT ... F ... ސ ...  . ..READMEcolor_prompt.sh.disabled 20locale.sh D5 .L..README 8l . ..alpine ބqg ... , ... *݂ ... ?6C . ..cdromfloppyusb -e ... wc C functions.sh machine-idmodloop mtab net-online networkingosclockprocfs  savecache termencoding @tiny-cloud-main tiny-cloud-bootdmesg8fbd firstboote42116ce18a4d6210fc1ecd4cbd0@@@5.apk.02dcfea2239f89c62ac17949d96765c3497d2a956bc9c03at ޷ localmountmodulesswclock Lsshd consolefonthostname Ptiny-cloud-early ސXhwclock killprocslocal  swapcgroups fscknumlockrunsvdir s6-svscan save-termencoding  staticroutesysfs sysfsconfy mdevcrondloadkmap ntpdrdateacpid @tiny-cloud-final.chronydbinfmtbootmiscp@'@l  @ n%@Nо%@0^-`@y1@23P@%<0@~kF@MU@\RRe@5n@@ln l]4netmount root save-keymaps seedrngmount-rosysctlklogdsyslog hwdriversloopbackPwatchdog?Ldhcpcddevfs ޴UM .L..README X . .. bootdefault nonetworkshutdownsysinit  . ..oacpidpbootmiscqhostnamerhwclocksmodulest swapusysctlvsyslog~`tiny-cloud-boot ~= . ..wchronydx networkingy sshdtiny-cloud-earlytiny-cloud-main|tiny-cloud-final aa ... އCa . ..z killprocs{mount-ro| savecache u&7 . ..3devfsldmesgm hwdriversnmdev Dpp() . ..* binV sbincLshrxversion s p* .)..{`{Dc ޤ]1einfo3eoutdent5 eval_ecolors6 ewaitfile7ewarn: fstabinfo? mountinfoDservice_get_valueFservice_inactiveHservice_startedI service_started_daemonJservice_startingKservice_stoppedLservice_stoppingOvebeginPveendS veoutdent kill_all@ on_ac_powerA rc-dependGservice_set_value aQveindentRveinfoTvewarnUPvewend4esyslog90ewend-4eend@X{tN@?ж @ 0@@@@ @6Ȱ@VP@4: .9 ..< 15-timezone=29-lookup-hostname> 50-yp.conf;10-wpa_supplicant iF5A . ... wheel.conf ԉ"! rc-serviceklogd apkodepmodJmkfs.fat_ fsck.ext4b mkfs.ext3Aslattachsvconfigiprouteifparsepinsmod@ nlplug-findfsT pivot_rootPipneigh halt&supervise-daemonxwatchdoglwz q{ (| y}V },Kʄ836R~`#,' DI*[`vt5@}`+r`.(У26a46x$z3:̸>H2BĎ< F ̋ J  n& jfs.modules lvm.files nvme.modules xfs.files{4 aoe.modules06cd288e557feb936ba9c846d4f81f406a860984a8@@@5.apk.fb1e01ab353e2666a8c4d27114f090b59dc0debf69bab969@@@t5.apk.da041ecb5c75d8a9ed0492a7540c0d7a04ab27aa157cf0be ^cryptkey.files(cryptsetup.files~ base.modules usb.modules zfcp.modules ޏ.cryptsetup.modulesdasd_mod.modules gfs2.modules lvm.modules$ scsi.modules ext3.modules,floppy.modules| ata.modules cdrom.moduleswireguard.modules{ 8gpio_pl061.modulescramfs.modules8b04b02bdb57dee4c9a6ac1c919e64c2fbb8b62@@@@5.apk.35e6100f40f3f5e95ec1c30ca0290d2270154a44dabd5063t5.apk.ca4d9d6271037cd3500efcbdf57ca06c40124c23c4caf270@źq`@,\$r@/քp@>ɦ@|ۤ@dP@  ena.modules keymap.files mmc.modulesnetwork.modules qeth.modules raid.filesvirtio.modules xfs.modules zfs.modulest btrfs.files$@>@ h @@$: @Ѱ@fat> 0@J4נ@fV@@~@4P@p@@ ްɩwireguard.files(xenpci.modules ext4.modules https.files nbd.filesD zfs.files btrfs.modules dhcp.modules nbd.modules@squashfs.modules network.files nfit.modules phy.modules@reiserfs.modules ocfs2.modulesz 9p.modules`bootchart.filesf9@^a`@p @1@LM0@TQp@Ht@@@4@6 @&K8@hnKP@b rZ raid.modules, ubifs.modules f2fs.modulesl kms.modules dhcp.files ext2.modules}t base.filesźq@,\$r@d.@r@b"u@/ք @Ģt>ɦ0@i@|ۤ@@ç@dP@`@z@z H .O ..groupinitramfs-initpasswdfstab k . ..amazon amd apm armcavium hisiliconqcom ˭B . ..alpine-v3-evp.dtb\alpine-v2-evp.dtb  . ..amd-overdrive-rev-b1.dtb\amd-overdrive-rev-b0.dtb ~-6 . ..apm-mustang.dtb\apm-merlin.dtb   . .. corstone1000-mps3.dtb$foundation-v8-gicv3-psci.dtb foundation-v8-gicv3.dtb foundation-v8-psci.dtbfoundation-v8.dtbfvp-base-revc.dtbjuno-r1-scmi.dtb juno-r1.dtbjuno-r2-scmi.dtb juno-r2.dtb juno-scmi.dtbjuno.dtbrtsm_ve-aemv8a.dtbhvexpress-v2f-1xv7-ca53x2.dtbcorstone1000-fvp.dtb  . ..thunder2-99xx.dtb\thunder-88xx.dtb >" . ..hi3670-hikey970.dtb hi3798cv200-poplar.dtbhi6220-hikey.dtb hip05-d02.dtb hip06-d03.dtb< hip07-d05.dtbhi3660-hikey960.dtb bu ...{c 2s!/n;V]/FJnR!YrIa Zd*q ~Lxost"9 >5.t@G NֻN8I$ p1K- ޓ[Z& msm8953-xiaomi-vince.dtbVsa8155p-adp.dtb[ sc7180-acer-aspire1.dtbn$sc7180-trogdor-lazor-r1.dtbr(sc7180-trogdor-lazor-r3-kb.dtb8/sc7180-trogdor-wormdingler-rev1-inx-rt5682s.dtb0'sc7180-trogdor-wormdingler-rev1-inx.dtb$sdm632-motorola-ocean.dtbsdm845-lg-judyln.dtb sdm850-samsung-w737.dtb,!sm8250-sony-xperia-edo-pdx206.dtb$sm8250-xiaomi-elish-csot.dtb8x1e80100-asus-vivobook-s15.dtb ޺L msm8916-asus-z00l.dtb!(msm8939-wingtech-wt82918hd.dtbF0%msm8998-sony-xperia-yoshino-maple.dtbw$sc7180-trogdor-lazor-r9.dtb(sc7280-herobrine-evoker-lte.dtb sdm670-google-sargo.dtb sm6115p-lenovo-j606f.dtbx1e80100-lenovo-yoga-slim7x.dtbmsm8916-gplus-fl8005a.dtb]@5.apk.71cc764b40675ff3a8f805a2d68e10e8736e84a48586ed47^@5.apk.ce47b95fa7a5b378510e3e17a3c0d99a6c1c3b47053cf210e@5.apk.f4da05af3705e94f2c377e44f3ba6014637fc2262cc9e6ce@@t ޹6hNqcs6490-rb3gen2.dtb( sc7180-trogdor-pompom-r2-lte.dtb,"sdm845-xiaomi-beryllium-tianma.dtb!x1e78100-lenovo-thinkpad-t14s.dtb Iцipq6018-cp01-c1.dtb msm8916-acer-a1-724.dtb msm8916-huawei-g7.dtb msm8939-samsung-a7.dtbC( msm8998-oneplus-cheeseburger.dtbYsa8775p-ride-r3.dtbi0%sc7180-trogdor-lazor-limozeen-r10.dtb sc7280-herobrine-crd.dtbsdm845-cheza-r3.dtbsdm845-lg-judyp.dtb( sdm845-xiaomi-beryllium-ebbg.dtbsm8450-hdk.dtb <؛ ipq5018-rdp432-c2.dtbipq8074-hk10-c1.dtb ,!msm8916-samsung-grandprimelte.dtb(,"msm8956-sony-xperia-loire-suzu.dtb+msm8992-lg-h815.dtbMqcs404-evb-4000.dtb\sc7180-idp.dtbs(sc7180-trogdor-lazor-r3-lte.dtb( sc7180-trogdor-pompom-r3-lte.dtb(sc7280-herobrine-zombie-lte.dtbsm6115-fxtec-pro1x.dtbmsm8916-samsung-gt510.dtb@t ܽN$ msm8953-xiaomi-mido.dtbe4*sc7180-trogdor-lazor-limozeen-nots-r10.dtb$sc7180-trogdor-pompom-r3.dtbsc8280xp-crd.dtb$sm4250-oneplus-billie2.dtb@sm7125-xiaomi-joyeuse.dtb ޞc/T msm8916-thwc-ufi001c.dtb5msm8996-mtp.dtbQqrb2210-rb1.dtbh4)sc7180-trogdor-lazor-limozeen-nots-r9.dtb0%sm8150-sony-xperia-kumano-griffin.dtbsm8450-qrd.dtb4 x1e80100-microsoft-romulus15.dtb,!ipq5018-tplink-archer-ax55-v1.dtb99fipq5332-rdp468.dtb$msm8916-longcheer-l8150.dtb'"msm8956-sony-xperia-loire-kugo.dtb74e8b6463e0ebe263e196a2492dd2f9ce45d00e @i msm8916-samsung-j5.dtbv(sc7180-trogdor-lazor-r9-lte.dtb}8"sc7180-trogdor-pazquel360-wifi.dtb ( msm8916-samsung-gprimeltecan.dtbL sc7280-herobrine-villager-r1.dtb q&j;$msm8996-xiaomi-gemini.dtbsm8350-hdk.dtb0,$msm8994-sony-xperia-kitakami-ivy.dtb40(msm8994-sony-xperia-kitakami-suzuran.dtb8,!msm8996-sony-xperia-tone-dora.dtbK qcm6490-shift-otter.dtb]( sc7180-trogdor-coachz-r1-lte.dtbo(sc7180-trogdor-lazor-r10-kb.dtb$sc7280-herobrine-zombie.dtb$sc8180x-lenovo-flex-5g.dtb$sdm845-oneplus-fajita.dtb,$sm6375-sony-xperia-murray-pdx225.dtb( sm8150-microsoft-surface-duo.dtbsm8650-hdk.dtbpsm8650-qrd.dtbipq5332-rdp442.dtbipq9574-rdp454.dtbmsm8916-lg-c50.dtb(msm8916-samsung-serranove.dtb msm8916-thwc-uf896.dtb$sdm660-xiaomi-lavender.dtb&sdm845-db845c-navigation-mezzanine.dtbt5.apk.10ffbd4a4e36f0ada8c75c56e8bfa6dab1e58819301a4804@@P@Ǻp@@@2s!@) b7 msm8996-oneplus3t.dtb$sc7280-herobrine-crd-pro.dtb<$sc7280-herobrine-villager-r1-lte.dtb# msm8953-xiaomi-daisy.dtbTsm8550-qrd.dtb pipq9574-rdp453.dtb$msm8916-motorola-surnia.dtb$msm8916-wingtech-wt86528.dtbZsa8775p-ride.dtbk,$sc7180-trogdor-lazor-limozeen-r9.dtbx%sc7180-trogdor-pazquel-lte-parade.dtbapq8039-t2.dtbipq5332-rdp441.dtb@@@@5.apk.0c67c243ec5a352ee7ae810b142bae80d4dba448b4e129c9@@5.apk.1129be5067613c94949a4cdfe6e04b5d36b67540c6c9803ft 85c(sc7180-trogdor-homestar-r4.dtbm(sc7180-trogdor-lazor-r1-lte.dtbq0sc7180-trogdor-lazor-r10.dtb,$msm8939-sony-xperia-kanuti-tulip.dtbHx1e80100-crd.dtb Y !<(msm8996pro-xiaomi-natrium.dtbt$sc7180-trogdor-lazor-r3.dtbTqrb5165-rb5.dtbS( qrb5165-rb5-vision-mezzanine.dtb$sdm450-lenovo-tbx605f.dtbsdm845-mtp.dtbsm7125-xiaomi-curtana.dtbipq5332-rdp474.dtb>s,#sdm630-sony-xperia-nile-pioneer.dtbtsm8250-xiaomi-pipa.dtb@5.apk.cfdf86291ee1c2b17db11ab927de0c45d2e5d2e4a75b74e9@@@5.apk.0b83ec2d4fab994039444579e79bfc851f2a7a5570041047@5.apk.8303c309bf7c207c5cc228471ac53024611699a19835e478@5.apk.8f60f301fc9193db51b1345596b45753a4c97a253b7da3af@4ipq5332-rdp474.dtb>s@6t@@y@|Ufz ޅL $msm8916-samsung-grandmax.dtbsda660-inforce-ifc6560.dtb ހ@#sdm630-sony-xperia-nile-voyager.dtb$msm8916-samsung-j3ltetw.dtbJqcm6490-idp.dtb`$sc7180-trogdor-coachz-r3.dtb x1e80100-qcp.dtbmsm8916-lg-m216.dtb- msm8992-xiaomi-libra.dtb~( sc7180-trogdor-pompom-r1-lte.dtb\"sdm845-sony-xperia-tama-apollo.dtb*tmsm8992-lg-bullhead-rev-101.dtb ޑ{(sc7180-trogdor-pazquel-ti.dtb,#sc7180-trogdor-quackingstick-r0.dtb,$sc7280-herobrine-zombie-nvme-lte.dtbsc7280-idp2.dtb sdm632-fairphone-fp3.dtb,!sdm845-sony-xperia-tama-akari.dtb!sm8250-sony-xperia-edo-pdx203.dtbapq8096-db820c.dtb$msm8916-alcatel-idol347.dtbmsm8916-motorola-harpia.dtb@@5.apk.c05cf973818beffb595b5b5987d132c79b67858e5be55959@@@5.apk.3b592888bc73a4b573fa65a33ebd56154c92a2fd4dd969c8@4apq8096-db820c.dtb߰@n`@ijb@4^ kӦ$msm8916-motorola-osprey.dtbLqcs404-evb-1000.dtbsdm845-cheza-r1.dtba(sc7180-trogdor-homestar-r2.dtbbXsc7180-trogdor-homestar-r3.dtb msm8916-samsung-j5x.dtb)Tmsm8992-lg-bullhead-rev-10.dtb/@*bN40@L4@\5tVx5@@(]5@Q8P@n;@0?@"KA@EB@LB @jC`@E ,@&msm8992-msft-lumia-octagon-talkman.dtb msm8939-huawei-kiwi.dtb9,#msm8996-sony-xperia-tone-kagura.dtb@ msm8998-hp-envy-x2.dtbBmsm8998-mtp.dtbj,$sc7180-trogdor-lazor-limozeen-r4.dtbsdm845-db845c.dtbsm4450-qrd.dtb0%sm8150-sony-xperia-kumano-bahamut.dtbsm8250-hdk.dtb,$sm8350-sony-xperia-sagami-pdx214.dtb\"sm8550-sony-xperia-yodo-pdx234.dtb WFH msm8998-xiaomi-sagit.dtbW sa8295p-adp.dtbmsm8916-mtp.dtb$msm8916-wingtech-wt88047.dtbz,!sc7180-trogdor-pazquel-parade.dtbsc7280-idp.dtbipq9574-rdp449.dtb$msm8939-longcheer-l9100.dtb $msm8939-wingtech-wt82918.dtb0%sdm630-sony-xperia-nile-discovery.dtb,sdm845-cheza-r2.dtb"$msm8953-motorola-potter.dtb^$sc7180-trogdor-coachz-r1.dtb$sdm845-xiaomi-polaris.dtb sm7225-fairphone-fp4.dtbsm8550-mtp.dtb ިbn$sm8450-sony-xperia-nagara-pdx223.dtb /"apq8096-ifc6640.dtbipq9574-rdp418.dtb,#sm6125-sony-xperia-seine-pdx201.dtbsm8350-mtp.dtb|@!sc7180-trogdor-pazquel360-lte.dtbd(sc7180-trogdor-kingoftown.dtb0'sc7180-trogdor-quackingstick-r0-lte.dtb( sc7280-herobrine-villager-r0.dtb$msm8916-samsung-a5u-eur.dtbsc8180x-primus.dtb@$sm8450-sony-xperia-nagara-pdx224.dtbO@qcs8550-aim300-aiot.dtbapq8016-sbc.dtb$apq8016-schneider-hmibsc.dtb(msm8929-wingtech-wt82918hd.dtblsc7180-trogdor-lazor-r1-kb.dtb@@Ǻ @>Uzt0@@@@2s!P@ %@$`&@q'@d'@)`@-* DKsm8250-mtp.dtb(sm8250-xiaomi-elish-boe.dtb30'msm8994-sony-xperia-kitakami-sumire.dtbPqdu1000-idp.dtbg4)sc7180-trogdor-lazor-limozeen-nots-r5.dtbD!sc7280-herobrine-herobrine-r1.dtb$sc7180-trogdor-r1-lte.dtbsm8650-hdk-display-card.dtb apq8016-sbc-usb-host.dtb:#msm8996-sony-xperia-tone-keyaki.dtbt"9@:@D1@Y@)' @n0@@@t6_P@)p@X(@Ј@}*@t >6@sm8650-mtp.dtbD$msm8998-oneplus-dumpling.dtbsc7180-trogdor-pompom-r2.dtbmsm8916-yiming-uz801v3.dtb ޟ(p_( sc7180-trogdor-coachz-r3-lte.dtbsm8150-mtp.dtb ޙfy,!sc7180-trogdor-pazquel-lte-ti.dtbTsm8550-samsung-q5q.dtb@ sc7280-herobrine-zombie-nvme.dtb sc7180-trogdor-r1.dtb`!sc8280xp-lenovo-thinkpad-x13s.dtbipq8074-hk01.dtbN8@xԘ@h`@\ @p@@ɀ@8uP@I@@DtV̰@B̐@@i %% sdm450-motorola-ali.dtb sdm845-shift-axolotl.dtb sdx75-idp.dtb(sm8150-hdk.dtb@%sdm636-sony-xperia-ganges-mermaid.dtb/0&msm8994-msft-lumia-octagon-cityman.dtbP!sm8350-microsoft-surface-duo2.dtb@sdm845-samsung-starqltechn.dtb20(msm8994-sony-xperia-kitakami-satsuki.dtbP$sm8350-sony-xperia-sagami-pdx215.dtb4,apq8094-sony-xperia-kitakami-karin_windy.dtbipq8074-hk10-c2.dtb(msm8216-samsung-fortuna3g.dtb msm8916-samsung-gt58.dtb$msm8916-samsung-rossa.dtb=(msm8996pro-xiaomi-scorpio.dtbA$msm8998-lenovo-miix-630.dtbE0%msm8998-sony-xperia-yoshino-lilac.dtbUqru1000-idp.dtbf4)sc7180-trogdor-lazor-limozeen-nots-r4.dtbp( sc7180-trogdor-lazor-r10-lte.dtbuHsc7180-trogdor-lazor-r9-kb.dtbd@>e@@Kh@ji@9m 2.!msm8994-huawei-angler-rev-101.dtbG0&msm8998-sony-xperia-yoshino-poplar.dtbRqrb4210-rb2.dtbXsa8540p-ride.dtb#apq8016-sbc-d3-camera-mezzanine.dtb$@D[@@nt @9ՠ@\^p@p1ְ@<@`׀@j0@Ƭؐ@p$@@{ $sdm845-oneplus-enchilada.dtb,$sdm845-sony-xperia-tama-akatsuki.dtb0sm8550-hdk.dtb/sc7180-trogdor-wormdingler-rev1-boe-rt5682s.dtb@sc7280-herobrine-evoker.dtbipq9574-rdp433.dtbdmsm8916-wingtech-wt86518.dtb64msm8996-oneplus3.dtb -* . .. 6.12.8-0-virt 6 ...{Xy TO . .. arch cryptoOdrivers fs| lib netM securityQ |sound +G . ..arm64  . ..crypto lib ހ ...{`Z %Vaes-ce-ccm.ko.gzaes-neon-blk.ko.gzaes-neon-bs.ko.gz sha1-ce.ko.gz sha2-ce.ko.gzsha256-arm64.ko.gz sha3-ce.ko.gz sm3-neon.ko.gz tsm4-ce-cipher.ko.gzaes-ce-blk.ko.gzd4ef9d4579931aac959ab8afe1e0514476a04@5.apk.f5abddc66cf99037384e0c13ad88a93d2cc077fad89751e9@5.apk.a604b2098ae1b97cdd85b405f12522c706804ed6454f940a@5.apk.69175f7dac4900d8e3c77601509be9e670a6c75cded2e6c5@5.apk.3a681cd2f3320ebe4d76017ee8f0d1cfda0dd6cef5fccd14t pQchacha-neon.ko.gzcrct10dif-ce.ko.gzpoly1305-neon.ko.gz,sha512-arm64.ko.gzaes-ce-cipher.ko.gzghash-ce.ko.gz nhpoly1305-neon.ko.gzsha512-ce.ko.gz sm3-ce.ko.gz X=  .L.. xor-neon.ko.gz I  ...{jgf'R[b,m ޺y .  ..async_pq.ko.gz async_raid6_recov.ko.gzasync_tx.ko.gzasync_xor.ko.gzasync_memcpy.ko.gz p&aansi_cprng.ko.gz blake2b_generic.ko.gz  blowfish_generic.ko.gz#cast6_generic.ko.gz.des_generic.ko.gz/ ecc.ko.gz5 hctr2.ko.gz? poly1305_generic.ko.gzA rmd160.ko.gzNxxhash_generic.ko.gz "cast5_generic.ko.gz+$crypto_engine.ko.gz authenc.ko.gz- curve25519-generic.ko.gz2echainiv.ko.gz> pcrypt.ko.gzE sm4.ko.gzPasync_txaegis128.ko.gz37algif_aead.ko.gzalgif_hash.ko.gzalgif_rng.ko.gz21b32d2dcaec224a948327bdf8796f@;d5.apk.34a43a71d4f0be58b426d5a723f14d6d1d3bf7dcb949913c@f˴@|̀"7@6@" u&algif_skcipher.ko.gzauthencesn.ko.gz'chacha_generic.ko.gz0ecdh_generic.ko.gz3 essiv.ko.gz! camellia_generic.ko.gz6 keywrap.ko.gz9 lz4hc.ko.gz;michael_mic.ko.gz<nhpoly1305.ko.gz= pcbc.ko.gzCsha1_generic.ko.gzI vmac.ko.gzK xcbc.ko.gzLh xctr.ko.gz4adiantum.ko.gz@Qm0@>@ف@~^9 ޑ{8 lz4.ko.gz: md4.ko.gzD sm3.ko.gz)crc32_generic.ko.gz*crc32c_generic.ko.gzB serpent_generic.ko.gzJ( wp512.ko.gz blowfish_common.ko.gz$cast_common.ko.gz% ccm.ko.gz,0crypto_user.ko.gz af_alg.ko.gz[@d:@D@2B@f @|0nɑ@b,mդ@t@ڔ@"74@6D@ @" Fj & chacha20poly1305.ko.gz( cmac.ko.gz@ polyval-generic.ko.gzF tcrypt.ko.gzM xor.ko.gz1ecdsa_generic.ko.gz4 fcrypt.ko.gzGtwofish_common.ko.gzH4twofish_generic.ko.gz7 lrw.ko.gz 4O . ..P acpiU ata[ base^blockgcdromi charucpufreqycrypto dmafirmware gpio gpu hid hvhwmon i2cinputiommumailbox md misc mtd net`nvdimmc nvmeknvmemm pciu perfwpmdomainz pps| ptpresetrpmsg rtc scsitargetthermal usb vdpavhostvideovirtio P .O ..R fan.ko.gzS thermal.ko.gzTtiny-power-button.ko.gzQ button.ko.gz 'U .O ..Wata_generic.ko.gzXata_piix.ko.gzY libahci.ko.gzZ libata.ko.gzV ahci.ko.gz c5B[ .O ..\firmware_loader  \ .[L..]firmware_class.ko.gz 6^ .O .._ drbdb nbd.ko.gzc rbd.ko.gzdvirtio_blk.ko.gze zrama loop.ko.gz hܭ_ .^L..` drbd.ko.gz %we .^L..f zram.ko.gz 4|g .OL..h cdrom.ko.gz \3i .O ..j hw_random ޯ|Dj .i ..lcavium-rng-vf.ko.gzmcavium-rng.ko.gzncn10k-rng.ko.gzohisi-rng.ko.gzphistb-rng.ko.gzqrng-core.ko.gzrtimeriomem-rng.ko.gzsvirtio-rng.ko.gztxgene-rng.ko.gzk\arm_smccc_trng.ko.gz \u .O ..w cpufreq_powersave.ko.gzxcpufreq_userspace.ko.gzvcpufreq_conservative.ko.gz sBgy .O ..zcavium~Lccpvirtiopqcom-rng.ko.gz ޞz .y ..{cpt ޣd{ .z ..} cptvf.ko.gz|\ cptpf.ko.gz ݈G~ .y .. ccp.ko.gz\ccp-crypto.ko.gz #L΂ .yL..virtio_crypto.ko.gz z .O .. dwqcom hSp . ..dw_dmac_core.ko.gzdw_dmac_pci.ko.gz dw_dmac.ko.gz D# . ..hdma_mgmt.ko.gz\ hdma.ko.gz H .O ..dmi-sysfs.ko.gzhqemu_fw_cfg.ko.gzLefiarm_scpi.ko.gz ޷%} .L..efi-pstore.ko.gz -u .O ..gpio-virtio.ko.gz\gpio-pl061.ko.gz K# .O ..drm /Ö . ..drm_kms_helper.ko.gz,"drm_panel_orientation_quirks.ko.gz drm_shmem_helper.ko.gzdrm_ttm_helper.ko.gzdrm_vram_helper.ko.gzhyperv qxl tiny ttmvirtiovmwgfx drm.ko.gz ݝ .L..hyperv_drm.ko.gz f5珟 .L.. qxl.ko.gz Ut . .. cirrus.ko.gzsimpledrm.ko.gz bochs.ko.gz 0* .L.. ttm.ko.gz ޸B .L..virtio-gpu.ko.gz E^ .L.. vmwgfx.ko.gz r .O ..hid-hyperv.ko.gz hid.ko.gz uhid.ko.gzusbhidhid-generic.ko.gz ު}= . .. usbkbd.ko.gzusbmouse.ko.gz usbhid.ko.gz /}K .O ..hv_utils.ko.gz\hv_balloon.ko.gz ߭ .O .. hwmon.ko.gz\acpi_power_meter.ko.gz >  .O ..algosbusses i2c-dev.ko.gz i2c-mux.ko.gzi2c-smbus.ko.gzmuxesi2c-core.ko.gz ػ . ..i2c-algo-pcf.ko.gz\i2c-algo-pca.ko.gz  . ..i2c-virtio.ko.gz\i2c-nforce2.ko.gz ae[ . .. i2c-mux-pca954x.ko.gzi2c-mux-pinctrl.ko.gzi2c-mux-pca9541.ko.gz Ti .OL..serio evdev.ko.gz M3z .L.. serport.ko.gz Y .OL..virtio-iommu.ko.gz Ah .O ..arm_mhu_db.ko.gzmailbox-xgene-slimpro.ko.gz arm_mhu.ko.gz ޶9$ .O..{lq |  .L.. bcache.ko.gz ܼ?|bcachedm-cache.ko.gzdm-flakey.ko.gzdm-log-writes.ko.gzdm-mirror.ko.gz dm-mod.ko.gzdm-region-hash.ko.gz dm-service-time.ko.gzdm-verity.ko.gzPdm-vdo37Tdm-bufio.ko.gz@dm-vdo37@@5.apk.ec2fc7ea82f73d70f57f807f58e58568bc0813375effbc1600cT5.apk.c7020817748f0f47ab8e12cbf9c04adf202342cfbb15159c Ja# dm-log.ko.gzdm-multipath.ko.gz dm-queue-length.ko.gz dm-raid.ko.gzdm-switch.ko.gzdm-integrity.ko.gz$dm-io-affinity.ko.gzdm-crypt.ko.gzdm-delay.ko.gzdm-round-robin.ko.gzdm-snapshot.ko.gzdm-thin-pool.ko.gzdm-unstripe.ko.gzdm-writecache.ko.gz dm-zero.ko.gzmd-cluster.ko.gz raid10.ko.gz4dm-bio-prison.ko.gz@մ@kkd@t 8e![ ~gS~g <BkH) ﮭ/lFGBOR ~g @@ ?4# ss`. Hb  ;4  y>   ? $ f   Tc  s! "!   'q "F 5   IELF̖@ @8@    4h h h $$Ptd   QtdRtd GNU8I@S1җo0HO,:6AVwV!OK0W?.)h9U 6q-]c$H3|u &rbqiGs5It',ul]>^H<, !bH@G~ 5LfXMY<bfRn> pn0  ,!x>CMh.  yqd&e2^p/#M'tJZ79O9 G_4C l2Qg-Z-,GFxakxIVvu(E. _ll5  AL[?^(8Ef/27'@+'  "N.z "o%P%a hdjTy1$_z3+/a[XNS8"/l#7kJKN\os?Kp}OBp*oz"[<Z:0+]  W}*1s4}%RBt'Rw-F~:R>_6 !zI\#AIfTbQ9AyAQ#699e6~K4\aT`USS4LDkCSV_Yv@I;T/{ ]$AJBDyCR1%`T;1xtZY]-c ){/$mQ;S<}ij`sX+mn8F?3ENW0rD<nonP T"C\`~ i,HRPk 8,E0f7BO(<LDn{$eH}aW`3q\M &W=U:j@(X Gs \.@xEp-|vJ)D5&Pt/u= c=YXgO*h Qf~w<5 R_p3$hUT2aMk(BP*=;g?CL*wmjFjD@=Zy:BU=(Eis+o7c^Y&Gr +0kc m&VG;qI$4Wu`SoK;dPj}N{g?J9 [Z|7A")FK:Sb^\4)O Yvy|.h*f4LY'rNl8wXg#?#{PE 37J>J{&%2@1dlB tek`5Qm_Vvi!e F8edg>HX"md-]c[!2F1eL8^#Z]6Imjw[3vb ^ah>VMN~|q:M+(*U|=)QC)W1zn2dz5;xbic'[rUD!6%gri%uK.   E@B< N&18 b#$!@$AX@@  B He@ HHLB R "8PL@`HH`  @ bAB@@  ` c1H@ @ *B@ @B aD @@ B $b4J  `( bKX( !  @D@ )h@   }2 P% $H0@ H@A*" KĠBy eP@L1@$"& `R$@P H@A& @DbAX"`   B9 PH@R D A(@ A $9$0$ `` 4@"TEH@C9 &40 8@ pA P`pAA@ X@hA)A(`&"@@!  @P@( @+Q Ԁ0d@H0  @@`H ( @0 `9 Q@  @FHA A@ 2 qP!`a a "A   @@   !`0RjR `D @q D6@P)AB  9@`P @hEa`A@ H ,B`@`* d@A H DB!@@@ DP"B@(FEh&B@0 @I0  0 ˆ RE((@PAPJPD!F P@@ex0zr` "!g2@TN@ HdFÀ3   t 0"  .)GA )$<@0)c7"phD: PB `E JFQG #d q $&"AA 10H(@@ B TNH@4R ($ ED "@ HF@B " P  A0$b@86) !0H@!$@H  %$"  `D  " Zd  aB4@D10g$@b@B0@ @ H  숁@B@0 C-  `0U !"#&'()*+-/1246:<=?@BCDGKLNPRUWY\adfjkoqtvz{|~  "%&'),.12567:=>?@BCEGIJKNPTUWY[\^_abcehijmoqrvxy{~  !#%'(+,-27:=?ABEFINPRUWXZ]`abcefhjlmpqrtvwx{     #%&(*+,-01358:;<=?BEGHIJKMRUVWX\^bdegiloquvy| "#(+-/345679:;=?CFJKLORUX[]`acefimqrstw{}   "%)-.37:=>@DEGHJLMNOQSUWYZ[]_acfhjkosvwxz|~  !#&()-157:<=ABDFJMOPSVWXZ\_abegklm*s<|t#ZuV4[_̦ #rx3h[YYr/ :ns:3R/13Ĉ QyË{-8RG|:=O)Va6'l[{T r1:=O+A~zk-4_](B"=5|.G|s=4-2@ʖ:_8-|l·G|.<#=tgV+ì'|KT _ʖ8f|{K.|gY(Gs|?~|V3f^3<KwNuE׈j$PzVYȈ%=r>Qw8ybUt(9AtK eZiƒ`3f rG|Ñ|./A%9H`[%Kcc"Zb@(k8|RqEE!1K0鼽Pvi@c?Lٝʼn,+#$cPl5y>Mv`\zY* دzYVpA>4Btu7[-̎m&J6߲:o* w#6:zk䚥fHAKn`|i.ɝ= |wH: k|L;^p#ua{|1cf qWm!t~2 S hΩa9 >Ϯ ܷ^LFTAt4NWc5|v24ܢKq#8@ =9?fQE{|- o9|g~2&KqÝH{|\Ew|u"?wqIN7V~.rroI>{𦿋$uuCȕx|m"HE(LzYw-^uk:Uk9@d9m7s[fv@a'"OH*3|@y s$qw|%] ^7vZ=XMW[e-M־6zfiugQ;#mˁ"|gUaVI7 0||`uDe=U:yO7t Ij Һ2(ٽ%T -|(IQ1bD/Î_|>z8oNړעÛPS;#|)]wT< |i|SL2|GF3EpN_9M ;ϝ|JEKP-+k޶Baw )$@@Eqq9ܭP129K39Y:|1 ,GX] ޓvTpN2^?r=ޓ@橉5dr KPT[fޓjޓmj(c$ p|c2(}`,\ TnElsu* H􆳔uJ؄|qbmcٴr0>KωEj2@9ozKD} LZOz}L\tB1kΪ8͓н"Ym\{,*&˂T |4,4Fní qk&`I'b;UŦ̇,3&|O=i |m!UYU`I bn |O=bhѾ nw)ThX9AL5hhZwx# ,ӅyRLnJiQ׋=qј;R+cs? IU Tf $$LR8 y=vט;ue{ 2w{ Y±3~aC+`J)9] Gf9ӛݯڋ;;\Jab AÈʙO۝|ZVvްb>d,)(ϴG@8pFÈ̈́|WH kS|1 o_%t4V.ac1O$sAr]|T|9Kd|Wۓ q߽_| JbYws4/u~|1BfK#♔|ca3u(r89݀AM|z!%u 5sR^_&+\43BE  Z[VGДI-8zRȑ6P QG}Dmw?|7G)1UEHcVs zVؽx+ ]co\jב]TzDuE|ͫbW5r ?]|nE|ݣkB ut.]5r<U+|lsmũl󼖍iN}>|aFs`Y旁B}`|Jm}/&ʃY  @Η;?M%O7+%N+} |1Վ+LBlfV1'*,ږ|Ed|99!X|p7|oc;8/)>Hd|^i;U(Msmږ|9H0/tOd|\ӮKu!Ţ|9NM| -R . ږ|͊>rrfk:>]8/tٽ˜V~vjrO>Fx릮e e K(8!8s sӏhn^-o,vu ;O RJZ[ח^(ĩ! 91A!D=|Ĉ߁i>1$$;Ӛ7Q|{'Si7ѣ"h; |=8X3&N(GiֶOţu=9 \Gy$s`p[!>D|_*EמFG( N_֔ GN$; 70c6;`J|j9Ij0.9D,5? y rt,ap_cĔ84 |Mv+63#ӳ݅x1{`^?ۀA|+67-ʚxh׻dvƟ\,P(]]'2P|kcv88zS@̰umzmjq@|Odr@|o_wope/K)Æ1w@|ke-oĹ@e i5;`Jޔۍ7gII";yhno5৖|h=kQj-j% G>-|!䲢s+o S!C#~}LA΂|9RiVmD{`CƤ-g];-i[)o #x+rk$mDTn7V|V|3aoT-iWҊ|-# CZtb7V|bX=~]0ratE LJ*0k.%$ `k oQ(>Ja. 8|/`VfcM(Rj%F/ Qn?ZL퐗+&{J`f`Ȫ"yiJxY xYğ,ߣ_Ws)o'1aD>W_y4=vhKG#=Yџ,W70|qHΚD%ō=i[v 02Z\0V̷>SAM|,R'A`,p+G2f.9VAJ)LyFauշ>hƏ򽋨 PP)L|,fqD> U|$)~ +W|֌`ςZ|i68^ gIo/(%mc`.̎[&7vRQZke]2ľ^5%V6d!9!R(!8yOei9EHry?`:iJrfBYnr,cr^]xY:4)?Nb voPhE=2vnFu>J3KYfHVrٿ͒},>GX7G3q,:_a.#VrH0J\e)[zsZg3eyA5)txR.v Kon<|(f8~Uq"$Aۖ|~x$Z5s<|@'kaBw)t<|^؄ROZ#' gutZ5Ó VRCB4M[;as6F@h$K?B'iG)uuwכ|J.f|X7t uŨU_x,z'63䉠rM iReg ៩3TGn%")VRo?fm7e)Y]r\ /fmkwz%w>1u!%ٔVL C?o!8h|PK-7ws`fkEe=Zp*ÛbAT?s@iǗlky<ya|򢒱46j4ksp y87$?O/('Z"p.W#P4a| LX4ɤXVӦ0+ }m\P!egQSr~58" #,zu #sUemotBYz8ºe| \&})fRS{C"6pzrDn%o796Xձ/xzxN+G116KK4cKbN!t!9K]Y /Pb]l"i$$X&| bd c Bo͕w94PnrH5 )$(ٜ o{ČK=G>| Wnr&|I˵ LSy|&p4 >-ئVLWd*慽,W6z1?eT3?\ W22lvxMc<X7?X=n]Ée|dPJֽ/lW>ݲĥ9m$H3R;m$Ps^{f[@m$wAm$c(>B\Q)f9QaXTJKgٓו| UhʿaȜ1^t;ŧZY{%%v6% {;/%c0|F|pźO s;Pev J k5%ܖ|O</^َLN؋SyvbI4|_{BnN] > -^4 uծ7w0n5/N=-L"|)"BYF%: w V17w~ )Y2"\H90TsY?|V?;H2vըK7 fB;V? PJ)%~" XsV?8|LI$|7I;lU'ාjK" &oXs*r `}.@Z+}2 w[`y^bM2*_jԿw[ ,X6L52*S@dkNº҈,_,hv.a|߈n$'!gi PTK6MxmOi$|8maʊЪ5 s8(&$ `5 W c* $n  |  D(:$  z F$ 4b' 7`] : ĒR L  A& +$M8!. 8 (i 2 `c5 8(% x:" @G- d 4\  O h  B88.  u\6 ,> @" r pDh Я4 ĵ`" X_b9" |(* \k@t' :tB <$8 d$ Xc hh  4,"& x%4) $`47 $X% h DP BD" F\%. < F$ jW4" .<' v& &" jT) Dq. T4J t^ d,& &@"  Pv9 X2 `5$' 44 J  PB  O'" ,7T# " |S ]2 dt  Z $8 N(" 8:L  A& $P $ \Z z% 5 7s/   >' p`*" jh" )4" LnK  H5 @ t, <l " $O  D~" ,u 4 02(" A Ti : <: Ȕo  Fp D 8 d^p- D% 0 |D  9  4 \Yl" `j/  T(" 0 (7 I |X  Hh6 /   }0- ,'  }/ ph { wL) en8 @fL2 d 0t | [!- 0 O$l <P x7 G3(" :t + 4* o/ " H 0X? y y d+ r0(7 B4 8#  % T5" :0:  %: $D i3 ` ( <' P,Q7 |B  |^: P/ |TF  4, t. <  4  hfH `/ N +78&  h*" p`? ]h"  x, " p/ L (!   h@. 4'  O$    =5 8 H8S. 84K%  4 TZ6 P E|(" `B\    / T(  |?`T% 4   |p<0-" @P  K XZ# %+ u8)% h  D(a C\  G"  J   3t `6*" \k@d ,P  94G C4o" `: $  4 d4 0Hi !Lh" 8^4 d* jh $8 l09 DxD   r( J( U" x  (" 9L& P+0H  ~  >xS" h4% !`p eH  D( N`' D+ P) TT *" od~ T}! $"4w/ X"X $ : ď Tt TI  ,mr n |  y"  D4c }p d^* m,/ (,/   :d \4  `?+ 4  L( tNj# 0#8 P   ^$ L^ ! # <A D # 8 !  ;T_8 8}4% etb @& "{:  DT  ,6+ h " $" `   |S-   (8& p&  0  ,H  4(i hF$F 47 ȕ(E* |ll  -X" " 18  ,|8 ĪL $'4_(" >  (38D% " hZX \ -[ & *(" 0- \J  4~ '" +8n   |Y 4" l D," h  4% 8J$0 e \,^/ |% `  |*@ " i, `, H|, 2  (" 9L I$* 0" P*h& H& \ <" <L. + " $-" 8  - l0 $ D8* g @ Q *" q`5" ,;   B2 $93 F+" ظL 3" * s H !`" + 9/ ( X " 0 $ A" B- | ?8  HH d f8 h<" "' ,' 8 \' 9L" 2 H  N: ̖^-" l! l( `  C! x " ;A) S ( L(: $9 rc } P9 `   , \  p<  h\m9  /  4!. . + 0 $ 1  C( <H tOi K0Q ?  ~  D x (  ą4- ,, X_ X|  P" ' < 4 xD4" T-d d| L x,  d 0 X! > 8_% " P ' 8$8" gxT #  i+ X4 p8S 09  J 40: $   8*d8" e L\1 8 =! 0hd  x j 8^45  \P( t ( U L?  <  i,  T 8 `N  0p+ 4s> \<   pI" y/% +" H h9 H@! h P(  e  L7X I@7 B L' 7   `N O )" pO M- AO  "  Y % @ p+" x dwLv# ! M,t"  |% $jx}  ) [(^ |,] wp| D.  ly 8 0. 0 e 8(!1   " \@)" Z$* Dq`) [T  \:d " h@  0 # W D   l4 >+ < ` -/ |   >  -`7 M+ " 89: (<    0<  4G |Sd 9  Il  4) \` r. 0  <  <4 1S ]( n CL$*" \k@\8 e - P tH g" d,Y p D 8  \B H2 ,8X 0  D( 0 3 +) \D L< P 7  ~ y : |L | L - p$H u  d` АO " @$! , 9 |`V) ̶8" $" |X/  7 M4  3$y) LY`7 & X'|8! ha 0F' ,7T9" 8! & 4M" (00 Y n   m"  tP/ tU  ~D/ ԑH   8  a ; L%   88 w [4 M$[  <U% >% x  d L  |  ܴ @< 0I$`# \- ^8 hh E5 7 (c,"  D-Xy eD3" <6_  A  0 L   o(2 X!  L4" 68 X9  `3 + -  4" 82\7 At  2D ,d T]% <7 tB . +" d*H E l!(02 lP L   8Lh $  h&t%  X  (:4 Q ?9 4 PC / $ *)" Q`S  L58. @ $# @ P2  @$ 0@) H0" !," H| (<: D3" P*h LH(  LL! 44-  pt  T  '" 8 <7 M0" # < 48/  }  YH" ) D6 >g: d% ( `8 hX ( X`8 $N  \>,?!. z" 8[  9   ;:  P  T~,C% xXH. 6 ?T: <$ ( i L," H T D3 G," H| lj4" `/ TX`9 | $" 86 Ao u  EX & "D rX+ $4 [4m" *  <`% L"  D p K$ Ыl% "^" ]Hs% , ؄`" <X+ 4 $+' p- +" D C    ,j0 ` ^ * ylI)" hTT8 l}t?: f  P Ф D  L X ~* 0nL$ M9 (40 (V: $ x$.  G $,  U 2   &tj' 7M  4Q  px" 9 ȋ n( ?x=' 6`V8" b0U P'5 F {" xD5 L" h9 H,A  " p@  6L8 lN  4u1  $ DI  " 4v E  < 8M 8 f  J& T$3. $XE 8X  / t T, 0  3 +  3   r @  BT.  H X# P  * p`: 0q: | P hX \C< lw y- d# |: r i%  QH#   t lS$i t|H" x=S P@' 8  d  2(*8 S !$% \ D) xD 8O  = ?X: tD9 X, 4B@Z O# |J  |, $p(" L(. l  @8 N@ |   /8 N4    :   d& P& 3 *  $  x- \ ,  @Z" : h01   8,' @8%" X"X  ?|5 P9()6 >," ܓ4(" L(+" 0  } ( `B\  * fX6 ?3" *  $9 |  P: T7 dCT 1 z& d$9 ԅ4` M   8~ )" \D  D(  s P `" ( 8 Pz" x  2   ^ @P+ q`4  @/ X/ B pO 8]" 8 HjX u$n  @6 l B ' 8w  X* |n, L8V#"   `   xL   @(  0 Ț(r2  @u _ \? lJ `=. 8    x` l$ 8!  G  8~  LO v <  '# 4 D2  $ W DF$?" \  p@U v   8 4/   $ 8" DTz6" H> Q , $ (  dD<X  @=   `@ = )" tN P   b& \$ ` H  \ <L T-& # c 0|-"  ؐ/ ,z  th-" Px* olx xt xy+ xK `2 0. 0^4 }  AR l ,J XQ @,i * " x@   t " `@" >" 4" dh /  p  5 :." \L @N ( pc. P l +  . \L PV8- ( pVS d( 4: D  $#. . D+ l}4 T1P&" X"X< n" t D  $Q$ 0 M0s  @$(+   C Pp = 0q `x 4&" H*| Ѝl  8 t*  ,a' pwx8 B@{' 7" 4` & |& _" i , c Է& ** od ~ P    D<, H`  l<. y} LT9 ~X P @  |;X:-" K. ,(. H( `?1 7 4JX, XB# `+" X4, <+ @ \ d" & %\y. " H> , + D1 8  [2 D{9 Lf ȏ8 dy (@19 0l 08' 08. 4 - L" H" ." @  ȂX % |W+ E4  ,,  d  |`1 h  ! )" \ZH - & \& h' `8  $,   ,  " XO $h<f q(" ?xO:  НX) 4d x ( ' 8+ I  m$ d  z " * oO3 0 0 (`)" X  = ," " ^" I( <j C|t  U  XP  : , ! :( PTp(" ?x=   " E,="  o,  L4 + d& ,yx= \, 8:L )-" p=% 0H" (U PZ6 DT2 W) \W`+ 4D t,!   (c! " 4u" > d$ ]@  h4 q @ Hr $8X T < Y ( \  t    " (  x:)" Sd" `, H   s]    \L# PI $ H s  H? @B) `:  \ <J T;. |< |  \ P1 A HB\  $p`1' 1p)" LY`4," Q XX. L <u7 B$ X |@& & \T [ @"  $ 4(" LLl*" $n  4@  {Dj. # K8. [. lL  020 8  =  9 4v - X0pthread_mutex_locksem_post_pthread_cleanup_pushpthread_mutex_unlocklseekfcntlpthread_cond_waitpreadpwrite_pthread_cleanup_popfdatasyncpthread_rwlock_rdlockpthread_rwlock_unlocksigfillsetpthread_sigmaskpthread_rwlock_wrlockpthread_mutex_initpthread_cond_initsem_initpthread_attr_initpthread_attr_setstacksizepthread_attr_setguardsizepthread_attr_setdetachstatepthread_createsem_waitpthread_cond_broadcastgetpidgetuidaio_readaio_writeaio_fsyncaio_returnaio_erroraio_cancelpthread_cancelpthread_rwlock_tryrdlockpthread_rwlock_initaio_suspendpthread_testcancelclock_gettimelio_listiomalloccabshypotcabsfhypotfcabslhypotlcacoscasincacosfcasinfcacoshcacoshfcacoshl__signbitlcacoslcasinlcargatan2cargfatan2fcarglatan2lcsqrtclogcsqrtfclogfcasinhcasinhfcasinhlcsqrtlcloglcatancatanfcatanhcatanhfcatanhlcatanlccosccoshccosfccoshffabscopysignfabsfcopysignfccoshlccoslcexpcexpfcexplcimagcimagfcimaglconjconjfconjlcpowcpowfcpowlcprojcprojfcprojl__fpclassifylcopysignlcrealcrealfcreallcsincsinhcsinfcsinhfcsinhlcsinlctanctanhctanfctanhfctanhlctanlconfstrfpathconfget_nprocs_confsysconfget_nprocsget_phys_pagesget_avphys_pagesgetrlimitstrcmpstrnlenstrncmpcrypt_rstrtoulsetkeyencrypt__ctype_b_loc__ctype_get_mb_cur_max__ctype_tolower_loc__ctype_toupper_locisalnum__isalnum_lisalpha__isalpha_lisasciiisblank__isblank_liscntrl__iscntrl_lisdigit__isdigit_lisgraph__isgraph_lislower__islower_lisprint__isprint_lispunct__ispunct_lisspace__isspace_lisupper__isupper_liswalnumiswalpha__iswalnum_l__iswalpha_liswblank__iswblank_liswcntrl__iswcntrl_liswctypeiswgraphiswloweriswprintiswpunctiswspaceiswupperiswxdigit__iswctype_l__wctype_liswdigit__iswdigit_l__iswgraph_ltowupper__iswlower_l__iswprint_l__iswpunct_lwcschr__iswspace_ltowlower__iswupper_l__iswxdigit_lisxdigit__isxdigit_ltoasciitolower__tolower_ltoupper__toupper_l__towupper_l__towlower_lwcswidthwcwidthtowctrans__wctrans_l__towctrans_lalphasortstrcollclosedirdirfdfdopendirfstatcallocreaddirreaddir_rrewinddirscandirreallocqsortseekdirtelldirversionsortstrverscmp___environ__progname_full__progname__libc_start_main__stack_chk_guard__stack_chk_failclearenvputenvunsetenvsecure_getenvstrlen__errno_location__strerror_l_Exitabortraise__assert_failat_quick_exit__cxa_finalize__cxa_atexit_finicreatopenatposix_fadviseposix_fallocate__flt_roundsfegetroundfetestexceptfeclearexceptferaiseexceptfegetenvfesetenvfegetexceptflagfeholdexceptfesetexceptflagfesetroundfeupdateenvscalbnfmodlscalbnlfabslprogram_invocation_nameprogram_invocation_short_name__uflowftokmsgctlmsggetmsgrcvmsgsndsemctlsemgetsemopsemtimedopshmatshmctlshmdtshmgetdlsym__tls_get_addrdl_iterate_phdrdladdrdlclosedlerrorvsnprintfdlinfodlopencuseridgeteuidgetpwuid_rdaemonsetsidvwarnvfprintffputsperrorvwarnxverrverrxeuidaccessfaccessateaccessnftwfutimesfutimensgetdtablesizegetloadavgsysinfogetpagesizegetpasstcgetattrtcsetattrtcdrainendusershellfclosesetusershellfopenfmemopengetusershellgetlineisastreamlutimesutimensatulimitsetrlimitendutxentendutentsetutxentsetutentgetutxentgetutentgetutxidgetutidgetutxlinegetutlinepututxlinepututlineupdwtmpxupdwtmputmpxnameutmpnamevallocadjtimexclock_adjtimecapsetcapgetchrootclonecopy_file_rangeepoll_create1epoll_createepoll_ctlepoll_pwaitepoll_waiteventfdeventfd_readeventfd_writefanotify_initfanotify_markflockgetdentsgetrandomgettidinotify_init1inotify_initinotify_add_watchinotify_rm_watchklogctlsem_destroymembarriermemfd_createmlock2mlockinit_moduledelete_moduleumountumount2name_to_handle_atopen_by_handle_atpersonalitypivot_rootprctlpreadv2prlimitprocess_vm_writevprocess_vm_readvptracepwritev2quotactlrebootremap_file_pagessbrksendfilesetfsgidsetfsuidsetgroupssethostnamesetnssettimeofdayclock_settimesignalfdstatxfstatatstimeswaponswapoffsync_file_rangesyncfsteetimerfd_createtimerfd_settimetimerfd_gettimeunsharevhangupvmsplicewait3wait4lgetxattrfgetxattrllistxattrflistxattrlsetxattrfsetxattrlremovexattrfremovexattrbind_textdomain_codesetstrcasecmpcatclosemunmapcatgetsbsearchcatopenstrchrstrcspnbindtextdomaindcngettextdcgettextdngettextdgettext__duplocale__freelocaleiconv_openiconvmbrtowcwctombiconv_close__nl_langinfo_l__nl_langinfolocaleconv__newlocalesetlocale__strcoll_lstrfmon_lstrfmonstrtof__strtof_lstrtod__strtod_lstrtold__strtold_l__strxfrm_lstrcpystrxfrm__uselocale__wcscoll_lwcscmpwcscoll__wcsxfrm_lwcslenwmemcpywcsxfrmaligned_allocmprotectmalloc_usable_sizeposix_memalignreallocarray__fpclassify__fpclassifyffloor__signbit__signbitfceilceilffloorffmafmaffmaxfmaxffminfminfllrintllrintfllroundllroundfnearbyintnearbyintftrunctruncflog1plog1pflog1plcbrtcbrtfcbrtlceillexpm1expm1ferfcerfferfcferflerfclexp10exp2pow10exp10fmodffexp2fpow10fexp10lmodflexp2lpow10lexpm1lfdimfdimffdimlfinitefiniteffloorlfmalfrexplilogblnextafterlfmaxlfminlfmodfmodffrexpfrexpfilogbilogbfj0y0j0fy0fj1y1j1fy1fjnynjnfynfldexpldexpfscalbnfldexpllgamma__signgamlgamma_rlgammaflgammaf_r__lgammal_rlgammalllrintlllroundllog10log10flog10llog2log2flog2lnannanfnanlnearbyintlnextafternextafterfnexttowardnexttowardfnexttowardlremainderremquodremremainderfremquofdremfremainderlremquolscalbscalbfscalblnscalblnfscalblnlsignificandsignificandfsincossincosfsincosltgammatgammaftgammaltruncla64ll64a__xpg_basenamedirnameffsffslffsllfmtmsgpthread_setcancelstateforkptyopenptypipe2login_ttywaitpidget_current_dir_namegetcwdstrdupgetauxvalgetdomainnameunamegetentropygethostidfwriteoptind__optreset__optposoptargmbtowcoptoptopterr__posix_getoptmblengetopt_longgetopt_long_onlygetprioritygetresgidgetresuidgetrusagegetsuboptinitgroupsgetgrouplistioctlissetugidlockfsetmntentendmntentgetmntent_rfgetsfeofferrorgetmntentaddmntentfseekhasmntoptstrstrlstatptsnameposix_openptgrantptunlockptptsname_rrealpathreadlinksetdomainnamesetprioritysyscallgmtime_rstrftime_lsocketconnectsetlogmaskcloselogopenlogvsyslogwordfreewordexpfdopenexeclmincoremlockallmmapmremapmsyncmunlockmunlockallposix_madviseshm_openshm_unlinkmq_closemq_getattrmq_setattrpthread_selfpthread_detachrecvmq_notifypthread_joinmq_openmq_receivemq_timedreceivemq_sendmq_timedsendmq_unlinkc16rtombwcrtombc32rtombmbrlenmbrtoc16mbrtoc32mbsinitmbsnrtowcsmbsrtowcsmbstowcswcsnrtombswcsrtombswcstombswctobacceptaccept4binddn_compdn_expanddn_skipnamesethostentsetnetentgethostentgetnetentendhostentendnetentether_aton_rether_atonether_ntoa_rether_ntoaether_lineether_ntohostether_hosttonfreeaddrinfogai_strerrorgetaddrinfohtonsgethostbyaddr__h_errno_locationgethostbyaddr_rgetnameinfogethostbynamegethostbyname2gethostbyname2_rgethostbyname_rfreeifaddrsgetifaddrsinet_ntopstrcatif_indextonamentohsgetpeernamegetservbynamegetservbyname_rgetservbyportgetservbyport_rstrtolgetsocknamegetsockopth_errnoherrorhstrerrorhtonlif_freenameindexstrncpyif_nameindexif_nametoindexin6addr_anyin6addr_loopbackinet_addrinet_atoninet_networkntohlinet_makeaddrinet_lnaofinet_netofinet_ntoastrspninet_ptonlistenstrtoullgetnetbyaddrgetnetbynamens_get16ns_get32ns_put16ns_put32ns_skiprrns_initparsens_name_uncompressns_parserr_ns_flagdataendprotoentsetprotoentgetprotoentgetprotobynamegetprotobynumberrecvfromrecvmmsgrecvmsgres_initres_mkquerysetsockoptsendtosendmsgres_queryres_searchres_querydomainres_send__res_statesendmmsgendserventsetserventgetserventshutdownsockatmarksocketpairfgetgrentfgetpwentfgetspentfreadgetgrnam_rgetgrgid_rsetgrentendgrentgetgrgidgetgrnamgetpwnam_rsetpwentendpwentgetpwuidgetpwnamsetspentendspentgetspnamgetspnam_rulckpwdfputgrentflockfilefunlockfilefputcputpwentputspenterand48drand48lcong48nrand48lrand48jrand48mrand48srandrand_rsrandominitstatesetstateseed48srand48_Forkvforkexecvexecleexeclpexecvpexecvpefexecvesigismemberposix_spawnposix_spawn_file_actions_addchdir_npposix_spawn_file_actions_addcloseposix_spawn_file_actions_adddup2posix_spawn_file_actions_addfchdir_npposix_spawn_file_actions_addopenposix_spawn_file_actions_destroyposix_spawn_file_actions_initposix_spawnattr_destroyposix_spawnattr_getflagsposix_spawnattr_getpgroupposix_spawnattr_getsigdefaultposix_spawnattr_getsigmaskposix_spawnattr_initposix_spawnattr_getschedparamposix_spawnattr_setschedparamposix_spawnattr_getschedpolicyposix_spawnattr_setschedpolicyposix_spawnattr_setflagsposix_spawnattr_setpgroupposix_spawnattr_setsigdefaultposix_spawnattr_setsigmaskposix_spawnpsystemsigactionsigaddsetsigprocmasksigemptysetwaitidfnmatchglobglobfreeregfreeregcompregerrorregexecsched_setaffinitypthread_setaffinity_npsched_getaffinitypthread_getaffinity_np__sched_cpucountsched_get_priority_maxsched_get_priority_minsched_getcpusched_getparamsched_getschedulersched_rr_get_intervalsched_setparamsched_setschedulersched_yieldhcreatehdestroyhcreate_rhdestroy_rhsearch_rhsearchinsqueremquelsearchlfindtdeletetdestroytfindtsearchtwalkppollpselect_longjmp__setjmp__sigsetjmpgetitimerkillpgpsiginfopsignalstrsignalsetitimersigaltstacksigandsetsigdelsetsigholdsigignoresiginterruptsigisemptysetsiglongjmp__sysv_signalbsd_signalsigorsetsigpausesigsuspendsigpendingsigqueuesigrelse__libc_current_sigrtmax__libc_current_sigrtminsigsetsigtimedwaitsigwaitsigwaitinfo__fxstat__fxstatat__lxstat__xstat__xmknod__xmknodatfchmodfchmodatfutimesatlchmodmkdirmkdiratmkfifomkfifoatfstatfsfstatvfsumask__overflowvasprintfclearerrclearerr_unlockedvdprintf_flushlbffflush__fsetlocking__fwriting__freading__freadable__fwritable__flbf__fbufsize__fpending__fpurge__freadahead__freadptr__freadptrinc__fseterr_IO_feof_unlocked_IO_ferror_unlockedfflush_unlockedfgetcfgetlnungetcfgetposfgets_unlocked__fgetwc_unlockedfwidefgetwcfgetwsfgetws_unlockedfilenofileno_unlockedftrylockfilefopencookiefputs_unlocked__fputwc_unlockedfputwcfputwsfputws_unlockedfread_unlockedfreopen__isoc99_fscanffseekofsetposftelloftellvfwprintffwrite_unlocked__isoc99_fwscanf_IO_getc_IO_getc_unlockedfgetc_unlockedgetchargetchar_unlocked__getdelimgetwgetwchargetwchar_unlockedopen_memstreamopen_wmemstreampclosepopen_IO_putc_IO_putc_unlockedfputc_unlockedputcharputchar_unlockedputwputwcharputwchar_unlockedremoverenamerewind__isoc99_scanfsetbufsetvbufsetbuffersetlinebufvsprintf__isoc99_sscanfstderrstdinstdoutvswprintf__isoc99_swscanftempnamtmpfiletmpnamungetwc__isoc99_vfscanfwcsnlen__isoc99_vfwscanfvprintf__isoc99_vscanf__isoc99_vsscanf__isoc99_vswscanfvwprintf__isoc99_vwscanf__isoc99_wscanfatofatoiatolatollecvtfcvtgcvtimaxabsimaxdivllabslldivqsort_r__strtoull_internalstrtoll__strtoll_internal__strtoul_internal__strtol_internalstrtoimax__strtoimax_internalstrtoumax__strtoumax_internalwcstofwcstodwcstoldwcstoullwcstollwcstoulwcstolwcstoimaxwcstoumaxbcmpbcopyexplicit_bzeromemccpymemmemmempcpymemrchrrindexstrrchrstpcpystpncpy__strcasecmp_lstrcasestrstrncasecmpstrchrnul__xpg_strerror_rstrlcatstrlcpy__strncasecmp_lstrncatstrndupstrpbrkstrsepstrtokstrtok_rswabwcpcpywcscpywcpncpywcsncpywcscasecmpwcsncasecmpwcscasecmp_lwcscatwcscspnwcsdupwcsncasecmp_lwcsncatwcsncmpwmemsetwmemchrwcspbrkwcsrchrwcsspnwcsstrwmemcmpwcstokwcswcswmemmovemkdtempmkostempmkostempsmkstempmkstempsmktempcfgetospeedcfgetispeedcfmakerawcfsetospeedcfsetspeedcfsetispeedtcflowtcflushtcgetsidtcgetwinsizetcsendbreaktcsetwinsizecall_oncecnd_broadcastcnd_destroycnd_initcnd_signalcnd_timedwaitcnd_waitmtx_destroymtx_initmtx_lockmtx_timedlockmtx_trylockmtx_unlockpthread_atforkpthread_attr_destroypthread_attr_getdetachstatepthread_attr_getguardsizepthread_attr_getinheritschedpthread_attr_getschedparampthread_attr_getschedpolicypthread_attr_getscopepthread_attr_getstackpthread_attr_getstacksizepthread_barrierattr_getpsharedpthread_condattr_getclockpthread_condattr_getpsharedpthread_mutexattr_getprotocolpthread_mutexattr_getpsharedpthread_mutexattr_getrobustpthread_mutexattr_gettypepthread_rwlockattr_getpsharedpthread_attr_setinheritschedpthread_attr_setschedparampthread_attr_setschedpolicypthread_attr_setscopepthread_attr_setstackpthread_barrier_destroypthread_barrier_initpthread_barrier_waitpthread_barrierattr_destroypthread_barrierattr_initpthread_barrierattr_setpsharedpthread_exitpthread_killpthread_cond_destroypthread_cond_signalpthread_cond_timedwaitpthread_condattr_destroypthread_condattr_initpthread_condattr_setclockpthread_condattr_setpsharedthrd_detachthrd_equalpthread_equalpthread_getattr_nppthread_getconcurrencypthread_getcpuclockidpthread_getname_nppthread_getschedparamtss_getpthread_getspecificpthread_timedjoin_nppthread_tryjoin_nppthread_key_createpthread_key_deletepthread_mutex_consistentpthread_mutex_destroypthread_mutex_getprioceilingpthread_mutex_setprioceilingpthread_mutex_timedlockpthread_mutex_trylockpthread_mutexattr_destroypthread_mutexattr_initpthread_mutexattr_setprotocolpthread_mutexattr_setpsharedpthread_mutexattr_setrobustpthread_mutexattr_settypepthread_oncepthread_rwlock_destroypthread_rwlock_timedrdlockpthread_rwlock_trywrlockpthread_rwlock_timedwrlockpthread_rwlockattr_destroypthread_rwlockattr_initpthread_rwlockattr_setpsharedthrd_currentpthread_setattr_default_nppthread_getattr_default_nppthread_setcanceltypepthread_setconcurrencypthread_setname_nppthread_setschedparampthread_setschedpriopthread_setspecificpthread_spin_destroypthread_spin_initpthread_spin_lockpthread_spin_trylockpthread_spin_unlocksem_getvaluesem_opensem_closesem_timedwaitsem_trywaitsem_unlinkthrd_createthrd_exitthrd_jointhrd_sleepthrd_yieldtss_createtss_deletetss_set__tzname__timezone__daylighttzsetasctimeasctime_rclock_getcpuclockidclock_getresclock_nanosleeplocaltimelocaltime_rdifftimegetdatestrptimegetdate_errgettimeofdaygmtimemktimestrftimetimegmtimer_createtimer_deletetimer_getoverruntimer_gettimetimer_settimetimespec_getutime__wcsftime_lwcsftimeacctctermiddup3getgidgetegidfchdirfchownfchownatftruncategetgroupsgethostnamegetlogingetlogin_rgetpgidgetppidisattylchownnicepipeposix_closepreadvpwritevreadlinkatrenameatrmdirsetegidseteuidsetgidsetpgidsetregidsetresgidsetresuidsetreuidsetuidsymlinksymlinkattcgetpgrptcsetpgrpttynamettyname_rualarmunlinkatusleep_dlstart_dl_debug_state__dls2b__dls3_dl_debug_addrlibc.musl-aarch64.so.1h gx ~    *  D   +    |0 W8 %@ ^H ;P X f A? |Dh9^{pG<    pG< pG< pG= pG"= pGB= pGb= { *4bk*S4       <#"#@ Z!?@ ;<a+:  d!T8 ' #>mT'd#>ǟ">!R<"ǟ@ "R"..T` #]  T#>} T#>.ǟR"d #9..T#?&T # ">"?R' ! !_">T` #.F T} '#>T.X w #>T">.ǟR"">MT #>T #9T#?FT@ "T` #'Td. #>MT{ `#>MTZ @#>MTd..#>.T.d.d.d..   <cbc@`Za?@`;|a+z ` daGT8`g`#~TOg#~nǟ"~Rbǟ@ bRby..T` c\`F T#~}`T#~nǟRbO #yn..& T#FT c b>b?Cg a a_"~T/` c.T}`g#~T/nX`w`#~T"~nǟRb"~MT`#~T #y&T#FT@ bfT` c'TO/n.`#~MT{``#~MTZ`@#~-TO/n./.#~/.TC`nO/n.O/n.O/n.     { AN=+= =/=B3=A7=E =F==NN]q= NXqjT+@C@K/@@G@#=@O@2=E5@2#==qT@2'==8 5@2'==qMT@2#=3R=*4`R3RЄ@2f'==/@$@4`R@f=$@ N 5@3@=@7 N&5@2==#@;'@@? `5@2==q T@2=3R= 5@2==qǟ`R@.=ff@'@@=&@ N 5 = N `5=== ==N=+ @0==B== =N=@0== @C{Ψ_@2'==oqǟ@2#==gqǟl@o@ === N 5#@;'@@?@2== @5@2==IqmT@.=f@C#@K@@G'@#=@O@2=` 5@2#==*q T@2'=3R=R 5@2'==qǟi@2'==D 5@2'==qT@2=S@CW@@G#=2 5@2#==q-T= N' 5 = N# 5= N 5= N 4'@o@ ==N@2=[@C_@@G#= 5@2#==qT@2=c@Cg@@G#= 5@2#==qT@2=k@Co@@G#= 5@2#==qlT4/@o@ == @o@ = ='@o@ =@2=== @5@2==qmTB@._=f/@o@ ==@o@ ==@o@ = =v      f f! D;$F)p@pH}'} KE BpC}i}_` TqT_ !TqLTMql2TR!K$%)!? !$!ˡ ?@ *TdjRPT``"T$ @T!c4dM4R   DBdj_aTR*DPT`6Tg!%  T% 0 *@B4ҟ6TqM%T!?ڣqmTD q2T_`Tq Tql8TR!K$%)!? !$!! 5B_@4T @dLAAӢ q/T_Tq-Tѿc@dڄ0Q|@RKc Ě $! Ě_L TKK#$Ě! Ś?! Ś!$Ě ?@@Tdj RPT*dMRA!4!T "$*/+ @C!  eM_ TqlTMQdM5$BҀR_ TR B8a  *cCF4T`0T Aɓ? TdjPT   ՊR *a cC_Tc@B8B< *e@ gE) џƔTR!K#%К)!? B$КB_@TR!KQ !)$К?!(C?@!TR_6R)!$R4٧jRD) !=1 cG!Q$!@j2P T`@T" @_`T!7 RI@)@_(CRҊ! 7B 4JR “C@'7   f$f%D;gӦhpa@Ӭ@Ӡp T TT R_֋ @@(T{ R R{_? BTRkThJ__J @?ITT T k_  f$f%D;fpl@aӨ@өpӠ T? `Ti _f ?!T?_և?T? RZ_'I?T TThTqBTTqRB(T_R_ ?!T R{ R {_?T   f$f%D;gpl@aө@ӪpӠT_`TG+_) g ?T? RZ_ֆ_!T+k{ R @R{_?T lTT TqBT TqRB)T?_R_?aT R?T    {f$f% D;*H!@Bp4R_kT!*!MC}Rӫ@Ӈpb4R_ kT*B c)LTJkē@bM}  T-ҥ!ΚaTHҿ$TҿT`Ӓ`Ӆ|S4`Ӈ}[QV`Ӑ}|@~%E}B|.҄~q|3B|}LVF R~|@G~1BA|@ƀ ^ BŀER̓M!eЁ! 7'|@! 7@@&`LL7! 7!75@@BD4A8@d@BFF!Aӟ*TSA[B7Fӫ@ӇpRO5bb mڥ=Ѱ RBKk!К$šB Кm  ) TJ@ LT     T T@ Td@HmTc@T"j2_P@%T_`@(T @H_`T!4a!Kd@ҟlT8& Ɠ!C8bc(TJ@ P>&'<f RBK! ƚ$šA ƚcRҎ/R@)LTJ@ 0 lTHR҄<*#@g  X6R4"TB CГBA T$jRP!T &RC ÓBC?@TB@!8!<*E@`g%gR~f0Z@RfC(5S@R(LA"LS@R(LAFCRQ(L @=CӄX6RH3`g @{¨_       Հ6?!D;ՠ6.=!D;6µRr?'^'+>!D;Հ6D <!D; 6.';> D;_$_T_T_@T&@44?_6&@__ 6&@__NA&@9_8(hn89h.88_ &@($A,~4_T$,>4?_ .4?_ ,4@ @|!B&A 4($B*,C,4ĩB@iTf&Ah$($Bj,*,Cl4,4ĩBT<|f}h$$~j,,l4<<=$>,?_  N_T_@T<N6_ Ղ6_ւ9B6x_=07?_ւc@B@``BT>?_{S[cksl@@uc@C@gA*RX0a;@$RR@; s S)_A< `@|;4!:#t4qT` @5+` @4*CA"R*A "R!a Rb `*aR (J!@"0@_qT` &K@+`@4*A+@qTDq TqAT*A * B*@|@_R3!Rp#SA[BcCkDsE{̨_*o@|@k@{[7UkB?s\S**c,Gw~x^Pz>H{ Xw}haA}ha a}hab%*-SAcCkDsE ?!R5B?,SAcCkDsE[B{֨_ֶB?,*!R @7R.V-G@G~}jwGhw}jx@GhwhxZ}jzGhwhxhz{}h{b)B?,OSAcCkDsE` Y?B?Ҩ,8 O?j7G6hw G?j8G hwhx >?j:G hwhxhz`!4?G hwhxhzh;)#A!9 _ 5)B?p,@R-SAcCkDsEv{S`[*UB?,y)`@qaT`@ABB9!G|\P@rB cA!G!RCCR-`RrBc%5@R-/5cC#@SA[B{ݨ_(`@q,Tb cRr>@R,cC#@Q`){R[SĢc@@b~=]@t^ =t@uLE)x@e<_57.@c`_a5qaTCc9R`_a55b( @@ @@ !@qT4 qA T@;տ;@;#@[BSAcC{ШH !{@T!H !{@T!H !{@T!:Qx)OaC<?= ?,?#@*HჀOSA[BcC{Ш_R!R*Ax ?@qaT*{_R{_<@_ֿ;p@x_{S*[c @kTC#CWRR,,>R* 8@3R'@$qZb__qTt5@ #RH.@q;Ղ5 @v@?T @c(@R+#@*SA[BcC{ը_{ *;A!|N5* @{¨_ҢqTT{A?| S`B?*5@G`B? @{¨)@@?*@@?*@ @{¨_ք T@c  T@ hc`B _ T@ hchb@!hc!hb?h  `T@{S*[co+7N4RRus" T`@CqTx@k R4@?GBs!;T?RR?!;s"T`@ q TkDRSA[BcC{Ȩ_ֵ4qTbRr_?qT5;yRr+z5@;U[`9_55*;s" T`@q T+@kD`9+@$Rc***qTqTqTsR/kD{S@[R@kT*i 5skTzsqTqz3*5*SA[B{è_R{S@@4qT@ @ ?OaC44@qT@#=t@@ =~v`d*?[BcC' #A!TAC!R R]*B"@5@RR*[BRcC*SA{ب_{!?@G3m+@`8 *;m[@``A`f @!t$K!Q g  |@ !|K!!, S?g, SW`_gW`_>W @``A` l n o|@` @A`!l3Bm!n;Cm!o@{Ĩ_{wRAdr?'3m+@ 8? *;m]@ `A & X!|S2!LQ '  |@ !|K!?'W7'W7:W @ `A  , . /@  @A !,3Bm!.;Cm!/@{Ĩ_[ccc{m !@a{DG;`_{{`R!@! r'{; _{ 3f>@`@a @C`C`{¨_>@a@`{ 3&6>@ @! @C C {¨_>@!@ {  NIA*s4@#@ NA'= @{Ũ_@#@ =A'={Wx>N.NN=fsA =WA{è_?@`@`C`P?@ @ C LQN NNQ(a8a{pn |?m.@`~@`;!n8n!(o@`?Am @`{¨Ca_{p.?m.@ "@ (."8.!{ <!};?!@b28.!(/@ ?Am @ {¨C!_@` @a{C`@`{ @`Ca_@  @!{C @ { @ C!_{ =N@ @A= =@ @ NA={è_{=@N=N@.==.== =N=<= =N===N=?f N A={Ĩ_{n?m`/@`!a(`;n;aDPl }HG#`JT +}n^ 9{){LG a^PG ` oTG | })n(n {;|`;};r@`jA`?Am!{¨_;}{.?m /@ !!( ;.;!P,`R r'>?# JT%+>8.9?)? g">" = /g "XG+.). { |  z;{9}9~Abv@ *A ?Am!?{¨_;>@` @a{C`@`{ @`Ca_@  @!{C @ { @ C!_{ =N@ @A= =@ @ NA={è_{ =N=@.NN==0= = NN=)N==NN#=P.==/=p=o= 7.==@/=N==/==N=N/====@. ==N==@. ==NB =x@  = N==0uNA  ==0 ==dN @={Ǩ_ր.=@` @aC`@  @!C f$f{"`Ӏ`_k?mǟq@`.@`Cz, T*`47m@_kMT ȅRr_k T uRr_k,T=JA`c-@`@`A`nT@`A` a7AmCU n@U @`A`T@`A` ~@`A`|@`A`7Am a?Bm{è_JY @`lA` T @`A`A` l~Tg @`  oT@`A` 7mG*G5k T o9n)o n n7Am.8a/ ncT@`7AmA`&`*5 `_kTL*&5A`/ST@`A`7Am!n(`/ aJT@`A`7AmqCzT 8a7Amo_k TL `*5kT.8aA`7Am o @`HT@`A` m!&&{"xax?k;m䇟q@ /@ B@zH TB4޷?kITBR Vr?k T{S@"@C`9qHTRbBKR@B}ӂ*"cB@!"8@B|S"8@y"8D@B|S"8T@SA{è_RBKbRl{k!҄RkhT[bG@!6S*I5csSA[B??@? `TC@ha8!q@zT{@ O`Oz~@=@gz 7[<~7@_AT7@b@#3;GJFs[=<`aTF*;@G@O@0BQ-BqHTqbQBlZB "9~S4"T7|UR\Ur@.F;@y 5V52qTHO@hhRe1$A`j48.3@[YS 5 5R~ ?=sapSs K<KK6[ T{Hb8"8|S?aTc a`T@9@9@9b8`8f8B\S@@**B9!A]9CB|SK@#Hc8!Hb8U9Y9SA[BcCsEkD{Ѩ_GG{S! 2@TsB4SA{ƨ_ց!b4&@9ߐqT&@94'@94qTqTqTqTbqTX& @9ߐq!TqRGzT&{' S[$@9!"_8#_8&_8<S`* *B*DTC@L)M)N)@ @*EHJ BJ! ! 8*M aL!DJ *!(CJ*****aTLA)HB)@C)*8D)*******B__B B * **d  ***C J,b*av J !4JB B*fJJ!XJ!  Tc  ) k    J ) ,) )()@SA[B{Ԩ_{S[@rTRsK*T7˵qz shaT@@SA[B{Ĩ{S@"@C9qHTRBKRm@B}ӂB ڂ2@"c @9!"8@y"8@B|S"8D@"8T@SA{è_RBKRL${S! c? `qTb!6k*(5x!7!5`*@9Q$qhTC`*BR*@@9?qaTTϒT[@c! 7}R[qR[BTkv8q@zTqJzT[BkDSAcC{ب_ր~@s[gz =C=7<<7@_T7@@;Cr I ==<<T{F*C@SqT{QQqBhZB ~S4T6R ==<<kT{CR ==<=a |? = kATR`a= /==ao>=a |? = kB9c@kTCQYqHT*S755Mz@k`T!/RowUR!WUr |a~?=apSa9K`_= K?=oKc==`g= =k=T7;@ 55***QqHT*o@5Q qHT*?@@c!7h ЉХ a$$c a T@9@9@9b8`8f8B\S@@**|S?THb8"8C9!$Y9CB|S?@#Hc8!Hb8Q9U9cCsEC@|C@{S;Ѐ!#$3@TsB4SA{ʨ_ց!!v4{!c  a@8!! B*B9KT!  TR!@{¨_{*RS~R[KKTb@8%RB B *%4Kv~RROK Tb@8%RB B !*Re4O4C@B0 RE@cD@@Bed<_!T@3#R$RK@KT$!8O@KT $`8@SA[B{ͨ_._@;]!@?_._/_2!Q?dqTQ$q_ R2Qdq_q_qIz_q_z_Q$q_Qtq_Qdq_Qxq_Q?tqiTR_{q{_q$QDz_Qdq_Q?$qhT R_{q{_kTRArk_|S!+C"Hb8b !Hb8 (*Qq R _zIT" R_kT! ?q_!?,T?,qTB`BHa8a""@Q$q_+:DdtR{S4Rs(sa@9A4@9_kAT5~@@SA{è_Q$q_{ *I4R @{¨_*q{ *k @{¨_*q)T" R_kR R BzT#8@QRk)T`bR# rRkHT!8R?k!?q_kiTR_|S!*C"Hb8b !Hb8 (`5R_{*({_{ *wk @{¨_Q?$qT2Qq_ RQ?$qT2Qq_ R_Q2_hq 0_Q R_hq 0_*kTbURBUr|S@} R )a2Hf8caӭA?nA0l   KIf8*'ygHc8c|c| Sb|BbB bK ybC|DaN @{¨_{Bk! S[c6`B3A  "T# a@a@`@s@9 !@j8bSA[BcCkD{Ũ__{&SRGczbB b"@@T@x3@s@"8` , K@4!GBG4T@_84?qT@0@wK?T#'R/FR( aS[!@8`6L?aT@ s"bT @y`/6` 29} Ե R 9@SA{٨_{[V!"S*{0*?E{S*B!@ a@q*cP@SA{è{[V;"b@@S43DAa@xtbARb)s@cTb@SA@[B{Ĩ_{GGA;9@ {_G͉8|9A;@ _9} {G @s`@s" @R{¨_{RST@95G@@SA{è_s"a@@5`@hu8?qT{cGS[5@Sa@4s"# `@vL# @}С@?T~@}T@vj9z43#@RSA[BcC{Ũ_m }@"#@m#@{R +`T@95 @{¨v @{¨!I9A5y_{S@@S@SA{è@B @TD@cT$SSs}#@"x!@SA{è_{@S*[RT@954 @Rj58@[BSA{ĨCSA[BDR @SA[BRSA[B*{Ĩ_{R[@T@95GS@t!R"~s"a@5`@hv8?qT`T`@"@TSAR[B{è_@;_ q(Tc5B9``x!@9A;!]|@  {R~6@;Hc 9} {*!8@{SsД:[ BbJ?@"Q?qTSA[B{è_{SЀ@NqT!@RC3 **@SA{è_{SД[c&@s":RAUhc8@?&@a@#Qc#|}?q,TB@&wSA[BcC{Ĩ__{S[b&@bТN_q`Tc&@@b"VWR@SA[B{Ĩ_@`&!AҜa&@R Rc&a@!_{ *b*-*!HR]{*C|@)'q TqT$qTc(X1T5C)?qZCo(Y {Ũ_ ҟO !|@G q!T(X1@T|@7A"6 X1T7|@(Ԡ* |@{ *'07!!Pa ?PqTK@C)c2a c|@V|@76(A" @{Ũ_{*07dPe PqT;@)c2|@c|@/{Ĩ_|@c|@K_|@K_{`qT* T R4?Pq@RZ{_pqZ`RD; _D;!t!*DR_!D; _!D;! !DR_!D;!*!DR_D;"D;)R_@T@)D"DR_{ **Ra @{¨_{RR{_{S*@ @` RSA{¨_tr`T_ֵ{SR**RSA{¨_{S[*@\@_T@S@9`QxrT@^@T@9Q_$qTq***U4b@@рOaQ?$qTRwRRr b@@*aQ?$q  WzlT@` ^@Q#?@T3@9ҵ~@7\(*aQ `~@?$qWT@Uс^@ T@9*aQ?$q(T@^@T@9b@@р@qSA[B{Ĩ_ c,{S*[*cksRc);Rq!T@^@T@9RqTRRR'@^@T@9|;RqAT@^@T@94RY54R@^@T@9qQ IzTq T?qTq4%~Z;Rje  j%_'qT9;RR:R*9q`T`R2 >q42?q T7b@@@4 IT@xqT&4c@#=`~S K T`Q +TZ4_#qT!~#@jaT_qT_q@T_qT_qTA_qT?qaT Rr|z#9#qRӖ*kQzT9@9zy47R* kT&qR!K @RR RRaJsrkT@F  +Iz|T)'Q))@`T@@5ҹ @D6RCoc@/b{@ SA[BcCkDsEc,_c@|=*N=dbB@2#=ARA=`@2=WbB2#=ARA=`2= xSj! R|j!}}R|j!yR|j!uԐR#r|j!pHRr|z#kВRr|z#f@'q T#qT'Q@ K xqlT& 5+Qx*=*G#=N=*?#=*:#=K=vN=/h4\"K *'jJ Rj@RrHs3 )z'&Qk`T?k`T( (~*'|@Rj`t* TIӥ|ʛK*?k T(5* Q**b5qTw kTQ{wQ!)RQ'*kT7qTqT R̪RRRRrWrNrm1rrQ(~* (~jej`!*j kTw9+op?kT`29+~ +='=jy'=bk`T`2+~='=jx+'=Tk@T`2+~R='=jxxK'=E#=@#=_kT:7*4R?qLT R!RK5Kn _{#=L7N*n+=_sN#=BN'=#=$N+=!#=(kT(~៌Rrj`k(T5(kTc@BVN'= '= RKqT@KDsK+=NaQ{?kMT{@*SA [BNcCkDsEc, _<+Q w|(Q y|(Q |(Q *?R(R14(kT<*k Tw kT kT +k T(~j` kTkT (kT(~j`kiTkaT(kT(~j`khTqTq T)R* *{ *R"|~&?k@Tjb $+j" Wz| (T7+'QQ(~j`!2j R5R R4RTogc@!_bkTm `pl(k!T`@.'== Bo9`5`@.'==k'=d=>`3s=j=`6xkMTo'==!q=j`T=z=ARU`.N{=N_kR*4kTF4R5b@@?qZT{*S*2B2[cUxac^@xa q*$QDzTc^@`@Ta@9?q $QDzT Q7RxraT`@?qa^@K Ta@9 2qIT`@a^@ Ta@9!2?qOT`@a^@` Ta@9!2?qaNT`@a^@Ta@92qOT`@a^@Ta@92qKT`@a^@Ta@92qaLT`@a^@Ta@92qKT`@a^@ Ta@92qGT"R'?SA[BcC{˨_** *`b@ `@b?@T"?@T_`b `q`b@@`@`q,=TqT`b@`@`55`ѿT@@3=ss@`@a^@Ta@9R **$R?q!T`@a^@Tb@9R?q@T@@.R=#=2`@a^@Ta@9 s*s@|*$R?q!T`@a^@Tb@9:R?q T\Q?q T {$R`@a^@Ta@9<Q'qIT 2Qq)T?qTz5:Rs T@3#==#=*#=N==@qR?jT@.#==N== R)*@$4_qT9oSaT`b@@`@45` @5`/bkDsE9oS9_S9OS9?S9/ S*aT@`5kDsEBR*"@@2=6@@2=2kDsEv=s@.==97v9{S=NN`7@@.9=dN=a=`65TvKՂ1Tq,T3nRK)\@`*NA`#=#=c4#=o=~qǟ qj@T973@9R3*k=='=*=#=)'='#=%=o5HAR=*kDsESA[BcC{˨0\3@4T9oSaR T?`T?`T?`T?`T"? @T#S_yqT`b@`@`4#K!,TQ JTBR*"@2=@2=kDsE'`b@@`@4 `.ks?qT`@b^@Tb@92qT`b@`@`kD*sE***cC[BSA{˨iqqT`@a^@Ta@92qT`@a^@Ta@92qAT`@a^@Ta@9q55`@a^@Tb@9QqmT_qT!$ša64Լ5`b@`@`RCoT44`b@``@`o_{?q$Az`TS*[*ck\@wR{ƨ_q$Q DzTb^@`@Ta@9q$Q DzTQR?xrATa@q`^@Z?T ` @9zr Tq@TB! #@9U 4<qh T+RRB}`@a^@Ta@92?qTB +@95yRRg`@a^@Ta@9B RR@9<qT+S`b@@`@4`SA[BcCkD4SA[BcCkD`1SA[BcCkD$qHT3R43r)B! #@9k"T*qT8RQҚrjTR! 3+~E9H`8`b@`@` RSA[BcCkD[   Q$q TzT`@5Qa^@`Tb@9R*53Q $qb|@U!ӈTBT`@a^@Tb@9$qTB @9$qTUR*` @9k"2ZzHT`@4*a^@`Tb@9BZ'ٚ` @9*k T_cT`@"ٚb^@4 Tc@9+@B- @9k2ZzHT`@a^@Tb@9*B@ @9~ٛ*!kT"Ta@`^@"?Tb @9 @9k"T`@a^@Tb@99@R bb@V6"`@R`@`@`4SA[BcCkD+@`b@`@`"T@SA[BcCkD6IT BR"SA[BcCkD5SA[BcCkDRyR_`G͌RŬr89*Rr4E|*c$qhTRH$8r#|Q*ccb "K*BH$8$qT_Ry@,@c BD\_{SL@,@4˔`T Ta@b.@7cb@d @c˅˿#dCd^ccf?HT 8SA{¨_BB*a bf{ @T @{¨_֐K"{d@Ac7xbTBcC{Ǩ_[BSA[BkDsEBxbf[@p@yu@l@yc? Te@qTqTb@_AT0Sks@TB@S@3C@TTT9@d@T?`@ZRԀRC@B@#4@@y7@@y J8@TA @7@Aha5@SAkDsE[B`@sbT@9C +#6B|S*6@y4@5A{sx{ *> 7@S@yS*`* @{ʨ_{h|@!|@|@I{_{H|@!|@@{_{|@|@ҁ{0d|@|@{t${_{_PqT$še7|@!|@B|@|@{Ĩ_){R?k,T|@!|@B|@{_֠{(|@{_{|@{_ֈ|@B|@{h|@!|@|@{_{{_{?|@!B|@H{_J)@_ A;@@B!_!x`  _(A;"V8! "6 T@c 9Bx"9`_D;Ձ^ "_ T ;ՁT@pA#T@ !_T A5_{S[c;fpA` _AT` E5s@V;՟z@^"z@T~~@0|@_B S~@!@9V29SA[BcC{Ȩ_{CC#C#' ) A=={Ѩ_{S*;(5 qT@SA{è_* :!{ @9@@ғP T@B@S{@ @!_{ * 45AR@8*7R6 qlT @{¨_M4*!R|@7*ARx7 qT61`T5x701T4R*G*D{BGSsBB@!:t~@=_=1:@SA{Ũ;{BGS[BB@!:T~@=_=BSA@R[B{ŨA{^|@ * ==*Ͼ{^|@ * ==*¾{CC#C#' ) A=={Ѩ_{CC#C#' ) A=={Ѩ_{C#C#' ) A=={C#C#' ) A==*@R` #Rd{CE @DAcBcBcBc}B} {è_~{RCWa @{@{¨? _?q-T{S*q`R`Ҁ>gZ_?@a~ ~z"Bk,T@SA{ڨ_B_{A Rr[: 7S*t'=s@!@v@c t =2* k9TwS?qT7@5 k@`8T!<R\RX8+@?qT\R+@XҌm R)RR[R㭁R_kTqT_k TD *c|Sy`x\4cABT 4@I95 >@kZsR@9q@9ARB4_IT;k58 c3B_9`" 7@@B9AkDcCsE7@SZkDsEkDsE, @BB9AcCcCV4SA[B{ר_cC/_a"B!@AB,!A` _{cCS[* k|! s T*T*7tzsssS C@V,U?jTT4N4N4SE43C?4Ҋ` =v@=t =v@ =v vSA[BcCkD{Ȩ_*z3sAT@C k RҔBq T{Ssa@9?q#$Q`DziT Q$qT?qT?qT?qTSA{è_BRo@$AaT@9?q!$Q DziT@`@9?q!$Q DziTa@9?q!T@9?q!$Q DziTa@__{[uQc#**c@4ҟ,T@9ahd8k`TS*q T! 4@9|@!d8_k`T qTSAR#@[BcC{Ũ_4"hc8 4"t84֢a?@t8_kT@*@2qHTJt8bT4$@7ᇟᗟ'aaa~SAb A!a SA4{STQ*R@9?qTSA{è_[*u@@9?qT[Bv@*Uv@v[B_{Sc RR#T@9?qT?qaT@ b R@@9?qTSA{Ũ_b R@@5@@9{Sq( T[ж *qT*T! 44@s= s [BSA{˨_cks`ȅҠ?j98@8q*]T *aRT?_T [BcCkDsE=a |@"=<_{ V=RyR"a@@?@j48T8 ZqS[BcCkDsE[B 4@B;B]{S[>ck9+z@{@s8X e@9 4q!Te@9bqTR!BE@9BQqT ĚTpqT0qT(RE@9 FQg $q TqT!RDRqT Rkןjc7A?:}@#|@TRA $ @8Q_$q)T!RR @8 Q$qiTaC?qTB?*Z} @;*R"+@SA[BcCkD{ƨ_{C#C#' ) A==b{Ϩ_{C#C#' ) A==J{Ш_{[STSA[B{è_C;c]Р>!A?_֠{STРAA@SA{è_R Ҵ@B;C]B Ѡ$ @L! `_,B;B]{S[dTsSA[B{è_b C;c]{a"|S3|k!N!4?Tb.@RSA@{è_4SAB@_TC!aB`Rn?T@@RSA{èaq{a"|S3|3!N!4?Tb.@RSA@{è_ָ4SAB@_TC!aB`R1?T@@RSA{è${b#TSA@B0AT!N4!NA4@B l  @AT_8_8_x44_9} 6R{¨_SA.RSA_RkTlS!"haC@T9} D@kLTA@!$7A@!$7Bt!CB@_T,S_q(T!@(!bx|kT! kJT?)Tt'D&cT!@џ@T!@(!bx!<|Ӣc@B@*sB  B`TRcDkHTf<R8C8akx TK_#8?qLT_8BC e88!DӁxSAz??TA!k TK_#8?q T_8BA %8SA_8A_8QR!R_8A_8Q{c @"S[5Rc8|RkZZC(@b?9} ԂA(@!@ @ qW T@{vx@|lS?TzsRQ@?09@"49@33B9@9} @(SA[BcCkD{Ũ_ @T_8_8_xB4c49} _RkmTdlS!$ha@?T9} @$kKT@$7@$7tC@T$,SqHT@(dx|_kT kMT??T!t!D!?#cT_"z_?T{"RA S@Rb@c@e@D@F,Sc* $ QkT#5߼qmT9} "/6e@߼qTG_@ T_?)T@(@t@тfxB<|TE|@(xa Tc@(ec@#xb T~ T`@,S߼qlT|@!|@bxa@`x!`@?T"@N9@_q TQ @9_|qhT""@@ 9a@` @!t~~ @" bB@bSb@S_?TT|@(xaQ_|qIT|@(xb(?x""|@@M9qiT}ӂxb_cTMqMT# 5(zfTKec@#x"(xaD@5@ERp@@ӥ QK;Ճ@a @_kaTA5 ! @,8T Rf @_8!6sN |@(xf_Tc@d@d9} "b@@``@`r_"*5SA{¨_sNx& { S_8BR Rc@!8x c@F Qe@b@*jT9} ԥ4 _k@T @9 _r@TbrD_kTC5SA{Ĩ_c;  @9raT @S@ ?3?@_qT`T8_ @9r`T " f{S@ 43@`@Tb@@b@ @!T`@ &͉[#8ҵ ~'sB@ hs@daT!!@!!R'@[B @3 @єa~SA{Ũ_?[c"@TA 5ATT@VCRR@"~RTL@~B'aTbRR4N@q@T[BcC6aT ACRRRL 6 $@ѿ5$@ѿ5@@$ @!BU RC 5 " @C3 @[BsbcC{c|@[k+xab@5b@`@4x!@AR@C@! !Qk T@AR@CB@! !Q?jT@ T+x!@ 5@GRp!@!@ QKUTb@@b@xaT+|xas{`C(SuxnS>|`7xaDTA"q Ta!'"3h`8`~ TS@9`~I TS@9``@x!x!b/6+@ x"@@`@(c,SaxlSa|!@c* @QJ?qMT @9kЃQ3 9;@ _kaT5 5Ss9} @!,S!Q?|qTa!#M95KA ajTZZ[BcCkD{ƨ_cQ# 94a8s~7`vS TO@s~~TAz~@qT@?iTfvS|@Q"@N9|qhT @M9M95qᗟ臟B?TZ*AK?$q,Tq! !  9R(R@_q T@@9u7~qTq@ @cbFTqT TT"R* B@,_8_T RqbFTqbFC Tq`~@ǟ!RZ@ZZ_ja TCRbRKQTFLӅ@AךcQz~@t!Q @?k!B "| AR$ Qzf! cz&c2 c*@!K!Q @ @9A3 9B@y@L@`*By QB9} ԠqT iT*SRZ@ZZ`9SBTTazS!|@?Zs)T`"R*3RR }Dӡ0*@TBcC(@|SB*@*@* @*@@*9Z9Z9Q9wS%$ cex_뙀yx_9*X*1 T{C(9eyx(@lSQ@|@?@`@ T,Sc`xc<|@ |@bhф@BFD_8# 4_xcc _85#bTBBBBBc #TcKcQ##T#4blS8x"8@@!8BDxbk TK!8_qT_8!" A80R@c,@_8ccd28!~~ @@@SAsEt@Ѯc0@98_8!!Q!!_9BkTcQ*@`_9} +zx`@@SARsEyRz8{! TS[`c k T D*?|Ta!@(|SB@*BB*BB*S B*ssZsZsQsvScb #cxS!sxs  @9raT`~@(7xbd CzT~qdFzT7 x`b2@|@(7xc x` @ 40T**1`T|@3@w*@dRҴRCRbRO@T  @9r!TЁ"@N9@_qT@C9  `wtB@{RTT3SA[BcCkD ! B@,_8?T R &PSA[BcCkD @A5  0s@K!j T6ZZK@~@ @?`@@@Tc,S`@(cxc<| @ea˂@!&D`_84_xBB_849} * SA[BcCkDyctc@"bTA!A!AB "TBKBQ"T"4AlS8x!8 @@8b˄DxBk TK!8_qT_8!" A8SA[BcCkD{Ũ_8b_8!!Q! @T_8_8_x!4c49} _RkmTdlSB$hb@T9} @D?kLT@$7@$7tЄC@TD,SqTeР@(dx!|kT kJTR_?TAt D#CTR_@T@(!@Ѡdx<|?'@z?T_?hT R_@tD#BT  @T_8_8_x4e49} _RkmTlSB#hbC@T9} D@?kLTG@$7G@$7BtCB@_T,SqTbB@(Bgx(|kTB kJT?)TtHD%cTB@џ@TbB@(BgxB<|Ec@|S!b|q TqaTD_ TE_85E˿cTBD@95aha85@_ւz_?!T{S` [?Tca@k!T`_8i_8b_x&44?9} SA{Ũb_R_kTAlS!avj` @?T9} @#kLT@c$7@c$7tЄCc@T',SqTcc@(cgx|_kTc _kJT??)T$tDc"cT@?@TbB@(Dgx<|@*%}SB H ?}qTqAT_T_84#z?!T*˿T@9$5Xhj85d$멐 TqDI T$z?aTubҙ!t9:t? T@ZS9L @b!th:8ku TKS_!8qTR_8@_8 8cCkD1jҁR,D"| T!cd@( |SA*@*@* @*ZZQtSbx?iT c@(``x?BkmTp_BcCkD[BSA{Ũ_֥k TK 8qLT`_8 f8cCkD8f_8ƀQ#RMT@cCkDŢ?IT{ Ra @{¨_@R_bC|cA|{R{_ր`lndGahG  }lG ~ zpG+v{ {tG;y;zxG } };y;w+x;z { }+~ };`+|+y_ր`n|GG`G~G| }+z;{+} `+~@b_{=N=?.==:N@.N=={ =3==-4=q='@4=k=!4=e=4=_=5=Y=@5=S= 5=M=5=G=6=A=@6=;==N===NN=.=@. ==(=N%N=" = {ƨ_{G /@`8g  @{¨ `_{wR@dr' /@ 8?_g ? @{¨  ?_f"tӢ4R_qT_3&"xWӢ4R_qT_k'kfd@ap4RR?kT_ք6{==6=Ĥ=z7==t@7==n7==h7==b8==\@8==V8==P8==J =9==D@9==>9==89=|=2:=v=,@:=p=&:=j= :=d=;=^=@.=XN ={è_q~n~/`_q>.> _8``_8  _{N;N{_ gf  gf@aq`_@!q ?_f{DORrS"`4_k(T#``?RcL rkT/R@r_k(TGGT R8;};~;}~~mSA{Ũ_ GGt@R (+};~+}~~m`LjRr_khTRr_kHT/R@r_k@ TaG G8`R;~;};~}~m(@+;}+~}~m`?R r_k TGGtR`@?R 'r_kT_k T!@, g.gxcRb;} ~xb;} ~#`mTqcB|SBXQ$R[ = =GggGG+~G;~ { zx8~;|#ydT9G#yTfB|S!tAK?@qT=G_ ~(~kJTc B kT/Cҁ7 g!.*h gWm]@x>b l8+}xaD?qlT*7@`ovdqH9xb9mT~R!KRBKjn`( cKj.c(qT!`ATRLaTzlc|q T_qTqaTEl!'TRR_qT@R!4 RKAa@Kak_kLT!RqTqT q@TqTn8n4*Y7@9`@k_kMTa@ ~ӀjlXj,~ӀjlTj,A@*с kMT5W@ R"_4@JD - [@ S@ _@+*a!@+ --k {`=_ }+kJTc y"B@ k Tyb/?bx+*YQzX@,@  T:bQ9QbQ_4,@n*O6O@@`@@  =g&A`K6.g@ }@TxL@ z8gYb~,@xb }8~xz89 !@?b ~ }_1T b} *B@*RPx`x` g1*gkkTk TQ! 7/@qTq,T/T@ qT  *: @s*r1eTeBaqc@s{@ SA[BcCkDsE7Fm?Gm _ @*u1eTBaqc@@ Rv:vD/"@*b?kTBaqc@tt9`@mBQ7+x9;w9+x7dm! _q Tl@m9Q+{;z+{pm ?q T/=@+}! qLTK=5c@=c@Can=CR_qTn;n{AR!rS&zkiTkIT8 R"`SA{è_ր"Gggп GG+~G;~ | {x;`8~ zT>G ~LTn+~ | {;|;nQ;~ | {;|;|SBXQR#R\K'"@6@aK{CRrS='@c[pӂ`Ӕp;S*kTRkTD^g~sN`T=b 9=NN==N@;=;=ߠ;=۩=Qx;==N=Щ=<==N=N#=ũ=@<= 7<==¦q T/@pӀKqm T<==fN=N=N=N==N====S=N#=N==/@pӀKqT@===AN=N=N=N==N|=N===-=sN#=N=n=$@.=sQ=f;==N=^=<==N#==T=@.=s=L==B=F#=D=3=R?.g#R?_#`aTcQdR cC*O@r=S@o=%=K@j==f=N=fx7ggz*SA[BcC{ͨ_AҡAKf_&|S_C=@Cp|S_ց`%G$G e ~'G~&G g8d ~=G8f~ f(}(} 5 }G8 |+`C`_l |"bG]8} { ~;a;{8{`GG ~G ~@ y;z |;{ | ~+`+`@b_{ *==NfN=N =a=> ==[@>= =U>= =O>= =I?= =C@?= ==?= =7?={ =1=u =+@=o =%=is4.======NN=Z ==VN= ==N =LN=I @{Ǩ_N ==?==;fㄒR@`r"`Ax?kTD|Sd4@a!@a_G^@;{;a/+z {_@] zG @y z^@п P@о ~Q@+gR@+pS @ }T$@ }U(@+qV,@+rW0@ }X4@ }\8@ℒR+sr+t< | } }+u+v } }+w+x z+~ y+a z+a+a`+?k(T4~on`:;{;{: ` `+|+~ }+`_!R` Kqb(}`;~+{(`;`@a``><@8@@о ~ }RAŧrr:''.-R;9} =@tr'@R r' ;+8+: ;= ;>8>; _{,?m.79 ?A %`mRNRr'@wRAŧr ?१r'Rr;'';=/ > /=+.+; <(< /9=>: (=(<( ?Am{¨_(.?A `mRNRr'@wRAŧr ?१r'Rr';'-R >;<@tr'@R r' /+.+; /= ;<+ ;>( {f@`t`P6(?`qIT2&@{è|@(_n8)o o()`@{è'`;mn)o8n(o@`9`;Am{è&{&@ 6PkiTf)CR@ r'{è(?_.8?)/ /(?) @{è' ;m.)/8.(/@ 9 ;Am{èH){-{_{R=@p?kT@.=mo4 = ==eo5@*= N= = N =NNN@T@*R=?kHTN@ =NN{Ũ_= =0=-@)=q=oN =NkNpx7@.==b.= =}3=Ag>NN= N =P=N=KN=N = =v= =@=N=N;N@.=5.==P3N@*==Z=ޡ@)="= N =NNnT@X@\@`@+ud@~h@ `l@;vp@;wt@ `g `+x+y ` `;z;{ ` `+|+} `~_f{@`S`kiTRs s*s5DGg~*SAB`{è_8`/t`kHTsDQ8k)T`t(tfnl9` A`@`A`@fRrkT `x@+sDG(`8~:`Baq@to~*sx@? `G s*+9|:s)o;o;};:{ &`zkiTRkT8   @{è_ր"DGg~(@b kT`QkT `mRr'@wRNR१r' ?RAŧrr<''.;; > =+:+< => + ?m.,9  ?")`mRNRr'@wRAŧr >१r'Rr<'';;q =DG /+.+< /?Bm=" `+`(`;`@b@! f{ @/gt?`q(TtbP7?qTg)A`R$|@(Aa @o@{è_ o;mn)o(n(o`(m>$@`;Bm;m o n)m(m`(o%@`;Bm&{P x|S/'?k(T7и?kTpR')?A u'CR r'(?A!q @/@{è_ /;m.)/(.(/ (-`'@ ;Bm;m / .)-(- (/%@ ;Bm{6{_{RS =@`pkiT@.=uq ==nqs*6@* ==U@ = = = NNo = TRkHT =#= =SA{ɨ_ =8 =5 ={ =N@.tps`=q.=%=1N= =@)A!*⿝R=<==kTN == =WNU=SN=NO =?TkT BAABB.=NA== =NN:=N== NN=0NA =,N =N'N=$N=!N= = NN=N =N= =f{@`~S`kT@ Tgq>DG+@a`E`Ӏk T8k T ~?@| {2@=@ 4@ }3@+r6@;s5@ |8@ |7@+t:@;u9@ | |+v;w | |+x;y | |+z {+} ~1TbBa!@q\`=`;|;~;`@a`SA{¨__(lT@bPkHT@k(T(`n`R(};`n R8(` Dk(Ton@R8+}~~`R`; f@`@?Tf#@HT`RB #`B*4{b|Scxa* |Sss*5 qTq@~ @{¨_ (_Sx*4RkTR _kd @zT6c kT/ q@T@`HG8~8sQkT/ qT4Xs qT@5XsS7`DG`HG`G@a qT@`HG8~;`a@aq` &@ Rxk(T&DxkTRkT{|S |B*5 q Tq`R r'> @{¨_ (?_D4kTRb kAz Ts 6 kI T q TR`wr'`R(> r'8?@`RaR r!r'?'?k TbQ_qT5Xb qTq@Tq`RaR r!r'>'>`R! r'* = >`R1 r'* = >@`RaR r!r'>'>`R r'!F qTR`wr'`R(> r'; !8@!q { N5A=={Ũ_=4@.==C4oS='@@spӔp`~S~S*6 5 q`Tq@T=@SA=={Ũ@*= N\@=SA@*!.=!= =@SAo= 4:s:Rk T?kd@z` T6sk- T q T@)= N4N=1=@*= N+N=(=@SAk`T qTqTq@T@SA@*== q TqT.=qTN@=SA@#@A'==@SAu ===@SAl @*==56 C@SAAA^@ @=SA=WA2Y D= qT@*= NЖ@)== NʖN=ǟN=ğ=@SA;A= (=q T@SA1&{pSx|SkTRk T@RpR r?''q(?@! \$kTиkT Rr'R §r'| ;HR@r' UR@էr' > =SRɧr'+8;9 < <+: ;+= 8>9 rT 5 kTk(T( . !RgR5r(?ݧr;>7''? =Rr'Rq §r'| ;HR@r' UR@էr' ? >SRɧr'+8;9 < <+: ;+> =;7;=8?@! SA{¨_.-R@RAdr8?(? r7''?kT/.R R?8?br`r7''+>=>-R@RAtr  r7''f{ @ gt?qT?xqT5@b(`n;` `(~!ln;`(`!l@a @{¨`_&{  x|S '?kHT?kT rT ( .;  ?(>!,?.; ?( !,?@!q @{¨ _f{#p"p aR>CUr"ʤr&x!|!a! ( cURB>RCUr"Jr!|!a! "*'"+ ~ ~(|+| ~}+|} ~ ~(}+}~+}@b_{RS='@DpkTp4*_R` r^g||!~!`!K! K?q T?qT?1T?1!TN=lN` |Nk =`f=`p@ 4Q_NNN`@Q|RBrN=|!R`K *RCUr"Jr)ox g|a '" { +{){ \+{|  +|)| )|o+`@=c@=_N==NN==U==NNP=NN===Gg_B@SA{Ǩ_{ Ro=@Sppӟkq=*5==x7'=#=!NRkIT=N=No==Ns=`7@NSA{ƨ_ ==NRkT@ ==@.==@.N=Nf f @g_& & x3'_Cf=@"pgCcpc@B*A

._"{"zR!|SbrkTb|R"rkT`DGA4{¨(`HG4(@!{¨_8:RBrkT⻝Rrk(T!4@!`@{¨";``"@4({¨8`"@{¨;`kiT8 c@qTqT5@af{!ȅ@g`HT6Tg(n{_Hn(~`+(~!hT{n nl`+`~&{BR!rx'kHTиkTpR'(?.{_.(> +??(>BR!VrkT{.., + >{p>{_{R =B@spa>PkTg = =B =6RkT@.=ّ = @ ={Ũ_NҚ = @{Ũo@AqTqT56 = f A, R ={k) T *7m?mK`nmR@`rkT` A`A` ~A`A` o+{A` A`9| $A`(A` +q,A`0A`9r4A`8A`#r':'ࣈR / [r+<'`!R\Rzr'9: R ?gr r<''R ?@dr+;' R R {r'9<` R ar ?'R3r' ?R!Or r+36''AR94`R%r r8'' ? ?P,+596 ? ?+798 ? ?+99: ? ?+;9< ?+=/?A! -; 9.,)- @  ?(/  @7Bm.?Cm{Ĩ_a.aTR8Rr87ar>''`R`Rr' > ?`6R!r r'@R3'+;+<`r'\RʟRar@ԧr = =5''RARArקr+3;48''!fRRڧr!r = =':'R@cr'+5+6Rçr' = =+8;9 = =+:+; = =+7;<>8?@RaaR`6r'tRr}r'NR > ~r'R:'ࣨr /'`Rਨr+<' R9:r'@]Rdr ?!R' Rშr@tr ?<''a R R1r@>r+;8''R@R9<r r:''_&{ x3|Sk(Tk TйkTR$`r'?(=+><. RK ?"+  @{¨_ @CRжr' ɝRQR@!r' = ֊Rr'"R!rtr ?+:' R7'wr'`LRa}R <;;r'yRԧr`٧r9'+6 <'R.`r' <;7+8 < <;9+: < <+;+5= + k)TpR.'8?@!q .; & x!|SkhTk TkT BCRжr]'"ɝRQRB!rZ' ="֊Rr_'"R#rtr ?+:V'"Rw'wr['bLRc}R <;;rX'yRԧrb٧ry'+6 <Z'Rbr.['0 <;7k*+8 < <;9+: < <+;+5= 4+ :?_.?' W!!^(>_.; _,8?+=;>_ķkTpR4' 8?_4{F {; _A' _{z{_{ޝ{_f#t`$QqT@l@m`Am}|BmpCm+{;{f~ ~{ x"D8B<+`xdxb+{  ~ |+x(y }+z} |(~(4g(_`7 qT?TqTRn(R6gn+{#|Tg `gg(~+|;}/;z+{+}++z;|#`Tg `gC` ~/{ @`@t?T `ATg@x!<a @{è_`Aj@@x!<aA`d{ @ /@xW?q(T AT'A!8 ` @{è_OR r'?/@A!8?`?`"A7@b{C==AR= =@pkHTo g`5 =Ssb<` @={ƨ_=Ss=EN= =P< =` =; @@==Gfta$Q?q(T@tDm|Em+``Fm;|f8|"D8B<`xd}x+y |xb+z({ |}+~+`4g ~+~_!7 qiT@Tq@TƒHTA#?c n(R R 6gn ~+{#|Tg `g ~(~(`+|;}/;z+{+}+~+z;|#`Tg `gC` ~/&"xT?qTA!&n=Pm;hQm+;}f;}@!xb `  z ({+|~(g@b_`1T?qHT LTbR' >ITR( R{R =@p?kTpӢ "R_ kTR?k`T=1@6 ==+qT@ ==[o=u{Ĩ_ == === =r4@ ==; ==qToR?k T =S=f=sts~N = =*@|3A!+= xb=rN =w ==*@=n =$=h ==b ==\ =@=V = =P ==J ==D =@=> = ==N ==5*SA{ĨL!@.=-p&"xT?qHT@&nxRmlSm ~@+;}f;}"@xb `  z({+|~(?g@b_`1T?qTBR Vr' >lT6RYr' >DTR( R{l:{_f"R@`br``?kI T@T~`A# T`lA +}`A`Axb | };|;;~;lana w?Aac3Aa z4Aa5Aa 6A+s };t }+u };v }+yZ {;z {;{;z{ }@4;| ~;|;}1Tq@T=gWt_q( TR!K=gWt_Lq T;=;}(}|-g )@ȅRr?k(TnR?khT(lT@b VRr?kT`Aa8| R?Aa(|?A`Ac|l ;};_;w8wz#}T;(`(y+wp;w~;(yqT n8+g ~+};(y|&bR@ 2r x#|Sk) TRk T> 5BR!VrkT`GR,r' =+=0R r' Rr'8;"} ={ <;=;;,R.Yr' R! 5r';># 9;; ?;7 <+69 ?[;9 ;;;;:; <A4;= >;=;<?1 T?q@ T 'W7?q( TRK'W7?Xq T;?:=(=<%g ?"CR"֧rkTk T,RYr'= Rr'.!#= ?;9 <+8 ?};==;=];;= < ?;<;?_!RrkT0R r' R5r8=!R'r(='`GRr'=c4<,? rAT ;?585:#=T;?( (6+50;5>;?(6?qT ?.8?+?g >+=;?(6<{˘{_f"pgA

N{oS[cN_EWF%@5BNSA[BcC{Ȩ_7@=xpspmqRd@zT/@gg#u>Pp=7?PN=q=,T= 5o=#@35 =fpsQ*Y5 ==ڍfpӄQ"&`sQAkmTӢe!ڡ  !ڡ BT"sQ`>qT*g#@?P!@ g*!=?P#@#@={f Ata4?qTBA!Q@ Kga @{¨_ `aT~?g`@Q`{& AxWa4?qTB\!Q@2'a @{¨_ aTR?'?`@Q`{SfpA4R?k`Tp@g02! a>"" `+`@b/ @{¨_л.kHTR'PR' >>_!f f{ep$p_ggS**kT**{Rk`To=`4`KqlTRkT ==~ ===x=@== ==nN ===N =N#=N = = N^===XN===N=N=N== NH==NN=B=N==NN=8N=}N== N0N=u=#=NN='=mN==NNg =N=bN = = NN =ZN=W=U=Ss= = =SA{ɨ_=hq!T= =AB =!@.R?==kT@ == =@=====nf"tb5!tӡ!K_?R@Q_q!T?3Z&"xWb5!XS4!ZK_?R@Q_q!T?'kZ{SR =* =@tQo =!p5! =!=@5>R` SA{è_BR ?kT?oc@@g`qZ{?m@`S**7m3 @`A` @aq`)lkT`A`@C 7Bm`SA?Cm{Ĩ_)n l@a#`T okTfAaq`lkhTAхRArkhTmRrkTa>Aa4Aa6Aa8Aa?Aa3Aa5Aa7Aa;Aa9Ba:B9mlYb!;gA/^B4 BA6BA8BA?BA3BA5 BA7$BA9(B nn}  ~+s+t } }+u+v } }+w+x } }+{+y } }+z+|~+| ok TAхRArk(TmRrkT@B@B@B@B@B@B@B@B@B@B@B@BFA>,BA40BA64BA88BA?XBA4\BA6`BA8dBA?hBA3lBA5pBA7tBA;xBA9|BA:B@/B@B@B@B@B@B@B@B@B@B@B ~ onh+q)r } }+s)t } }+u)v } }+w)x } }+y)z }+{~9|n l;o @B@B@B@B@B@B@B@B@C@C@C@ C@C@C@C@C@ C@$C@(C@,C@0C@4C@8C@+3+4 = =+6+7 = =+8+9 = =+:+; = =+5+<>+< /?k(T@}R r?kT"Rr?kTkRSR rjr'1' ER|Rr`r3''ᑕRRpr@0r:''!RR?r,r2''AŞRRrr';'`;RRA>r r<''eRRr'`R¨r`r' RT'urRBr'qRW'rbRtr'RS'`Nrb/RPr'@RV'rN'Z'RRer'@9RrvrT''bnRRr`?rW''B"RRMr@rS''BJRR5rArV''R`Rⱷr%rZ''t mR!kRr'`RR)r`r'ԒR1'rڃR(r' cR3'`rAXRr'`RR:''rARAr'@՘R2'`drR';' > /.(+1)2 = =+3)4 = =+5)9 = =+:); = =+<)7 =+6>98. ;/WR!Rസrr'҇R`Ҩr1'R'r`Rr3'᠛R'!rR`r:'R'rR@r2'AM';' RR rTr'<' R᪈Rbrr'1'KRlR!rନr3''R|R!rdr:''ۙRRAer@Er2''R`R rr';'`R"RaHr2r<''{S&zkT .?SA{¨_@ 7kTлkT*??.;>*RSA{¨N Rr'TRR3r!r =9''ёRr' ?҆R+9r'R(r,+:' <6R.r' <R+7';;+: <^;><+8~ >(9 <<+:?<(>&x@`T7{;m@ kHTkHTkhT}`0R@r'քR>ಧr'8?;Am{è_>?_ _. ;Am!R{è `=Rŵr '@WR-RUr' -RϦr'@Rar@r')< MR ?='6r'RpR >@r+='Rrr'97R >:'Ƨr'քR. >ಧr+8')9 > >+:9; > >+6)< >9=?I@ A ' `0R@@r'?(-{?m@`S***7m@`qA`Ca9`k TAaq@A`@Co H@`SA7Cm?Dm{Ũ_ @`)n l#`LT.Aa9lmkTfAaq`mkHTAхRArkHTmRrkTA>CA4CA6CA8CA?CA3CA5CA7CA;CA9CA:C o!fBС;gA/^C4CA6CA8CA?CA3CA5CA7CA9C nn}  ~+s+t } }+u+v } }+w+x } }+{+y } }+z+|~+| ok TAхRArk(TmRrkT@4D@8D@CA4CA6CA8CA?CA3CA5CA7CA;CA9DA:DA>DA4 DA6DA8DA?DA3DA5 DA7$DA;(DA9,DA:0D@/dD@hD@lD@pD@tD@xD@|D@D@D@D@D ~ onk+q)r } }+s)t } }+u)v } }+w)x } }+y)z }+{~)|n m;o@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@Df{@`S3`tzkHT7@`kT@`nD@D@Н }D@D@н+tE@П E@н |E@;u Eҽ+vg | |+w+x | |;{+y | |+z}l+} ~SA{¨_`n~b_*SAR{¨xf `!*a47{?m@`HTw@TnT@E` /~_/`_n`?Bm{è_?BmR{è!RQ@`7m nE@ E@E@+v E@ n$E@ ~(E@)w,E@+x0E@ ~4E@ ~8E9y+z ~ ~){+| ~ ~9}+l `h @`A` `o@G9l )n7Am{7m @ S***?m@ qA "Aan " 9lkITAaq@РA +3+4 = =+6+7 = =+8+9 = =+:+; = =+5+<>+<" o?k(T@}R r?kT"Rr?kTRA^Rracr'1'RA%Rrr3''hR@6Ror@5r:''ᣉRR!Er3r2''R`Rr!r';'@&RR=rr<''e0R°Rr' 6Rrr'RT'rbDR⴨r'`RW' rR"r'RS'MrBR[r'gRV'rB'Z'mR}RYr'3R‹rurT''b|RRBr@HrW''BR༖RVr`rS''HRIRAr`ArV''bR!R⽧r)rZ''siRҗRr'RA$r@r'`ІR1'rSR%r'`МR3'rbRr'R:'@0rAR!Ǹr'ঌR2' drAR';' > /.++1)2 = =+3)4 = =+5)9 = =+:); = =+<)7 =+6>)8-" n;o/RR`rAۨr'1'RmRArѨr3''1RRr`r:''aƔR`mRarfr2''RR r!r';' CRRATrඵr<'' pRzR`rr'1'@NRRr`r3''R`Rr`kr:''AӇRqRlrLr2''aR@R`r!r';'੏R#RGr5r<''{@ S&tzk(T7,k T ?ϊR r'RAR5r' >@Rjrr'7'ƅR.+; =r'VR@(r' <;:RWr' R+7 <r'R' <+8+9 < <;:+; < <+6>+ ?SA{¨_ .?fb~S*SAR{¨&x@T7{?m@ khTkTkT`0R@r'  >?_ _. ?Bm{è_?BmR{è!R 9R@r'`RAR:r' ?`Rxr'ZRA_r .r+<'R9'r'`RǓR >)=*r'@ Rr`r;'+8 >' fRɧr'7m . >99+: > >);+< > >9=+,? X @ A  /`0R@r'9, ?).7Am{@`RSf[Ku`!*~A*?kTq@4b`QB|SKT4C`T *7m @`qR/@zTCaq7DmSAC`[B{ƨ_SA[B{ƨ@aBR *SAC`[B{ƨ?mb!`T>k T߂q, Tl n@R|C`b | }kaT~?EmkTq T qTv5h@`A`!9`@A`@C ~`?Em@`A`XAa9`@`A`Q9` @`A`K)`H@`A`RC`b+m `;o@`kT?Emn` R)~9Z`;g/m)lm(z@`};~+z };|C`C`#{$T/nbQ+l+m;oo1THl@A TA`g n&A` nblA`)nq lm9A`TA`@`A`C`>@`A`( @`A`%P!`T n/Cm?EmlJl nq Tb)n km;l#~TlA`C` m?Emk/Cm6f{R?m@`K!*C`a|A*?kH TE`SETc*#5q4 TqRTA` @`A`FfRR!`R/SA`0k Tq@4TqRTSAA`?Bm{è0SAA`?Bm{è *4kiTA`qT q`T5@`A`HAa9`@A`@C `@aqSA`?Bm{è_8@`A`y9`v@`A`/)`p@`A`)9`b+n `;o@`fC`!`ӟk$BzTSA/ *t5A`@aSA&{@ R5xk Tq 4S!|SQ Ts4C 4 7mu @ qR@zT?mn"! DTPk(T,"qRsҀ<s .@RC " < =kaT>?Em@{ƨ^@!!R *@C SA{ƨT@ A RC "+?- ;/@ kT?EmC!qSA?7DmC @{ƨ_. R R)>èrZ ;'/m),-(:@ =;>+: =;<C C #;$T."Q+,+?-;//1T ,0R Vr' ?TRA ' .%A  .n"lA ).sq ,-9?A TA @ A C C@ A  @ A P! T ./Cm,?l? .sq@Tn"). +-;,#>TlA C  -?Em+/Cm&{R?m@ Ax?kT?q|BjT?kTq4S TqRTSA?Bm{èU ?Bm{è_?Bm{è  *5J@!SAA @ A A&RR "+?/ ;.@ &C k$BzT@!qSA @G{!RSf[7m` @`?mak Tk T`6 R x rT/4747@R`rk(Tn/9@E@E@ E@E@+| ~E@nE@+} mE@|E@ m+uE@ }E@+v mpE m+w+x m m+y+z m m;{+| m~+}+o`A`SA[B7Dm?Em{ƨ_֖ @a`A`@a @al oA`9`@HG)oX|@ |"9 ~q@ T/ q@ Tq` TRi ` T `LTa`@lHG`@`R x r T4(4A`6xAnl/EA2EAb?EA3EA9~4EA5EA o 6EA }7FA)r+s8FA9FA ~ ~: FA;FA)t+u@a/9@a9mn@ms@aA`w7Rrk T@R`rk T`/;m@ |lHE@ {LE@ PE@ ~TE@+qXE@+r\E@ }`E@ }dE@+shE@+tlE@ }pE@ }tE+u+v } }+w+x } }+y+z | }+~;{+o@9o,A`@a`(RrkTn;m̔RrkiT@@E9x `R`rk T@/DE9x x@xE@< x|E@E@ ~E@ }E@;f E@+g  E@ |E@ |;lE@+mE@;p |E@ |E@ |+qE@;rE@+s |E@ |E@ |;tE+u;v | x+w+} y |Z;~;z;{+okTA`kTn@lm8}F@9~F@F@ ` F@$F@(F@,F | )v }9w })x }9y })z |){)~sqTqTc+b+`b+ `a+``+ `K)`^@`Fn8 mW/V@@G{!R[&S?mz@ ak T~S`k T7m 5R xr=T)7̌RrkT”RrkT ;/ <@tRR`rr'>'R ?R >,r@r:''!R+:ƖR+;Sr@r3''OR =@~r ='؍R!Rgr'+3"R+4!rr7''gR =LR =rԧr9'',+5+6 ; = =+7+8 = =+9+: < =+>;;+.6449.7Cm A SA[B?Dm{Ũ_֖4@!`A  @! @! , -A 19  HG).|@ |" -9?" ~qT qTqT @T LT`,`R r'  @ R xr@,TA u@a@!9/.7Cm/@!A @!CR`rkT.;/i`Rͧrk TaRݧr'9: ÔRrk T`؂R`r'9:[ :>R5r'R$RAr`4r| :5'' RLr'!ӂR`mR > =4rbr'7'RR;5+6 ?Vr nr9''R < <;9r'Rxr'+7;8 <R`r'BRᨉR < <+9r''R§rr;2+3 <'4'+Rާr' < <;4@R;>;>;8+.A.9?RR`r'`RAͧr ?@jr;''UR. >r+;'@vR@r'+<R /r'\R@r' /%R+=r'R@r'+7ׅR /r'gRr' /<+8 =+9 / /+:+; / /;<+6 />+=+.k( T8Rr'RRަr"^r'S'>"ڝR`Ir'R.@r'9>Rr'R§r' . ?RƧr'@R)3+=ԧr'R,r' > >@R =˧r'`R)4+5@r'gRr' > >)6+7 > >)8+9 > >):+; > >9<+  >?)=?q TT? qT@ ?qT?qT?q!T#+?"+ ?"+? !+ ? +? ) @ A pkT.RZr'/8=@R,`Kr'ˀR9>Cr'RJr' lR fr'`UR@r'Rڧr'} ; ?)6 =97 =)8 =99 =): ;)<)>g.8? /ba7Cmc{ q> @{¨_@G{R =Ǩ =* =5={qT ==:|`6R =M @{è_{ F{_f@ޒc@ApT#@QRk TAA @ #m$tc$!,LB˜ba|Ygh@mha~@ {@{Y z\Bm+{`Am+ ` ~ }(w;y+x[ { zz+~(}+|x+{((y__T @ n4>g8D@GmFm`~EmzW w+}(~{8 x;~+w^ |{+vDmCm+x }{+~|8}Z u(} y w+v w+{(x+z } y8{+|(x y+`+`+ T_T?qT!(R?k@Tfgf R /f`#DQk) T TA 7jg@AR0Frf?4F`!TB!="L!|SB !QB|` bz|@ng`l;~@oAHF@?8FA+{ xLF@' R8 ?Nk TRk TRRaR4,rX.B ^' ,;?ēRϧr|S='Qa™R +: 9٧r5'![R"rR:9 <3'aRr@ӧr2'';9=R 2 7/#ҧr{'BURBrT'R7ۧr8'V :;? 8 6;9 ; ={+4+5{ 6 7+;+9 :+<+= 83(2(=(1(>_{ڃ{_fRrR@`r!` kT?iT~ T/~a8`/]"xSذ_k Tؗ@?hT/C`)?(l T@bN?h Tn/+|f@`TB=|S!Q?qT?qT;~;}8b!LB|@9ARr !n y@=A }g9+;~` l+|8F  { ?T>W8 ?S kT ÞRҷr?khTC (? rT E?kHT.+<&R!4, |SQ`qTqT;>;=?" Rr'`R!Xr! 90R. r;''~;> <9+= =RēR!ҧr+;ϧr=''AUR`™RAr٧r;5'', :Z >w ; 7 = ?+5+6 7 8+=+: ;+9;:+>(<_;<;<{{_f j ݒC@ApiT#@QRkh TAA$,L#n5c$B[g~d|!tBm=bhd@{[+}p@mtCmlAm ` ~8 ~ } {9~ |(vV z+w+{+uz v;w+y({+x(~+}z((w__T5npDm8|HmtFm|`T@m}+zhGm+{lEm `z y+t y{`uZ+v6 y y{+w+|+z+{(x;w v+|+}+` v+~+w T_T?qT!(R?k@Tfgf R/&RkT`Q _k(TR D !CXS!K'd|n"B|>tPm#;hd@by@ {;hQm(y;|  } z ~+{(+} |(@b_xS4Rk`Tq "@z(T~eR>&  Rr{{/C{_f!@?T `T`~_`_{|{b_&!x?kT T >?_ _{{"_{=qTo=Lx5= N8y N=u{¨_= N.y=x&RkT`Q _k(TR D ACXS!5K'd|B|"#&  R{fx{_{R = =* =5='xqT ==xx`6R = @{è_{ {_f@`At!Q?q-T?qaT3aTAA g_A7a$?TA!>g8~C`BA_g&@ AxW!Q?Xq-T?qaT'kaTA '_A7a(_jTA! >'8>C B_'{ =@S p!p! |S?qLT74 ==z=z =q=ow4o=wqT@.==z=@#@A' ==q`==SA{Ũ_`= 452o4@ =~= == ==@ ===q=z =z=oDw@4o=wqT@.==qz=#@'@A ==g_R'_֠@3=_{R =3 =**4 @{è_R =- =f@`#@(T f@T @``Tc$A@g `+~+a_T B tg?qaT+a5&@ R#xk(T &xkT @ k`Tc5$42' ? +>+!_kTJ B6 Q 'R?kaT+?A5{5BpNN{Ǩ_=4Bv=4o=S[WDv 5/@4Ҟgpq2'>  /)?q`Q)/#f#f@`tet QqH T(R"Q_qTbU"!.E,LCmӄBtg%~_b> @;p@m$@6PCm {=wZ |Em?TAm{+z+x7dBm  ~+{ v w +t{;z*y*u x_+x{+} x+vZ;+{ xZ+x+y+wZ+| }+z+~;};}=}+~bf aDtӁ$Q!(}?qT!?p@m=`Am 9Bm:xCm+|;|f } xC@@ e8c<+{8xe!xc+| !( `=a?~!(x(y }+z} ~(a(d4g(_`"T T(d _q T_q T`RK & T`$SCQ@&(qHT5f>g ~f!@$xnBBT+a__`*TҟT_qTnIT (`_nBT!TҟT#/ᗟ?kT a_`d#_֥(QqhT`RK! !T@a`$@`n`_@Qq(T*RC`R8a_֟ᇟ?kRT7 q)Tnq`+`@a`_RMB7gg(~_{ ;mng n)mA`n ~$Tg @ @;Bm{è_!`~9o`AggO~)m~C`)|;z+o+n+z;|!` {n_"&& @ %`QCxSkdQ TRk TR# d "cXSB/!K?'e|n"C|[@_he!"by@ _hQm+yXdPm;|  ~ { x+z |+{+y | z+}+~ afBo_HT!&n=Pm;hQm+};}f;}C@@@ !xc `  z ({+|~(g@b_֟k"T xSQkTR7?kT~eR >&BxA .4!xSk"EzT+!qR.$@zT!xSkT?kT "*?k|Bk!T ! 76. @xWQ?\q(TR!K R Q?jAT@!j CxWqTXqhTRK R QjTj<S!xC !>\F#~ TA >g#~IT { = N}@` =}A` r| @{è_{s{¨_{s{¨_{s{¨_!f`Tf#@t_qbDTT)t'B5tӄڈ Ț4(RK?kT?@aa$Ț ga(`R0 DT8a@akxZ`a`_@cLi5$tӄڅK! ŚR %tKK?kT!R!K?kT_ kjTA?kTa! gR&!@!L! ŚcӄxSe?kTBQEe/ *cBQCT%RҥKa_q!c$Ś! gG!@a?k@TB?k!T(`#aT#aT$7!&kT&"xRyWӟqBCzTkT5YS#xWӄZ!4%RKkT'|SR?@!q!R!KA$ '!( R#!LT8!}S@!?kxZ?q ! _Y*B 2%xWӥ5&XS'|SZK! R"%XSKZ'|SKkT!R!KkT*'|SkJTkTA`Q!\* 'G4R%!X! 2! BxSxSEKkTcQE7*e7**5BxScQ_BkTA`Q%RKq!\*B$! 'g4!@!'RkTckT( #!T#!T7{>NoS[ksNoFWGr5CsNIp==SA[BkDsE{ɨ_cC?@c=ppqR@zTo=r47@8p9pS4*5 @g{@=`syp9QkJT>PWR4 FAAkT= Nl=#=rq, T=#=yr 5 6ck T?PWRX4 g@=Xsfp Q*5 @g{@s`=Iss@*yp9Q?kTRqT<*' RzScQ$kT?&!ӆBڂ?Bڂk"KB\ %R@ g5PN!|q@SA{è_N*kT@=oqNR kT@=fqNAR ks{ @`|A` @K{¨v{ @ A  @K{¨fb?R@`"r` xkHT6kT?(lTg~C`_g(~/RkiT8`_{CPAmqTqT`5 Rs{¨_֞ Rm@a@a{b?R"rSf@`` xkTRȧrk(T?(laTgn@SA{Ĩ_g(/RC@`/A`l`kT8`o*Cm R.@`CmYqTq`T5`@Aao@Aa@a@ao@{BR@ "rS& xkTиkT?( rATpR'>.~SA{Ĩ_pR'(>"A`@ A`B`@"zR!|Sbrk(Tb|R"rkHT 4DG+~A`.@ A`C!`@DG9A`"@ A``@ HG4+~A`@ A`C!@!`@;~:RBrkT⻝R"rk(T @4+~A`@ A`@!`@;~ @a4+~;~kT8 @*@ @q TqT`5`@@}A!@@wA!@!`@@p@!o@@j{RS=D['@spc>PkT@g=`o6RkT5@ ==o=@.===7i=SA[B{Ǩ_N0r==o=RtNo====C *B RefBf`qTq`T5^@AҖ@AҶaA҂@aAҢ^@&BR@ "r xk(TиkT? rTpR'>C _pR'(>"{"zR!|SbrkHTb|R"rkT DG4(0@!{¨_{¨8* HG4({¨@a8:RBrkT⻝R"rkhT @4{¨(8@! @4({¨8kiT8 c?@qTqT5@a@!f{l!ȅ?m|@ @``νghT@`TA`6Tn ++}9nn(oo)`n @?Bm{è_ @)n?Bm{èD{,BR Vr &?m<@ qsz`'ν?khT@ kTA иkT. ?+?+=?9?..(//) . @?Bm{è_ @).?Bm{è%{wuv{_{R =B@spa>PkTBgA= zn6RkT5@ ==n= @ ={Ũ_N q = ==h @Ro ={ŨF =AqTq T5 R: =` = R3f AUf{#phT“'ABqc6“Aӄj4`J`xdxc!<ScA }`|@|`xS|`$`|(H` }|$|``ӄD ! _$!_ӄ|(|!`ӄH!(`!|}!` @_$}|||@M|@,+|@AG}`ӌ`k!`ӧGDJ-) $`}` } |`|`l}@0|@| B-AK@ k` 1-  !!$˥˥˫` `-}||}@E}`|@! }ƀH`ӧG||``ӥ@(`ӡAD&J  $!!$?4ēMӉ`7||%|`ӧ`EE%! ˧|`EE@&!_)T!(%"EBʿBA@"BggGC _pR'(>"R"zR!|SbrkHTb|R"rkTDG4( RHG4(R:RBrkT⻝R"rkT @58 @58kiT8 _{c@{¨_f{B}" @ g `TiT/n`;`@a @{¨`_(`l`n(~`;~TO@(T@b(`[`(pT@a`(~`&{Rr x|S '?kT$R?kiT. (?@!q @{¨ _(  .(> ;>RBЧr?kT r!T (  (??0?@! (> {}uKt{_{R =B@spa>PkTBgA= Pl6RkT5@ ==lN == @{Ũ_Nn ==eN @Ro ={Ũ( =A"f{S`+@`kTnkhTn`g(+@SA{ƨ_;mU oTSf!iT kT +m l`F9m3mA`)N9o9/B@=!;C`k\h`k=h` +|+}TI/;Dm`x8;Dm!Qa k)TsgoCbA`@`l  !`/g;Dmg;Dm 3mAa +mko`Fp!nj)nTN9n9kd lp!m9mDT/B@=!; C` ~ ~\h`=h` +|+} T~@Aa!`lT l@A`dF a  oj)n `+Bm3Cm `;Dmx_9k;n ll iA`9`HG)lX|@ |b i9 ~q@T/ q@Tq`TRk AaAa@ oo@@a/;@a"{5@b{_{ot.=s{_{ R=@p?k(TR?kTp?@kAT=d=m=m =ojqT@. ==m=d=  =dNo==|k=={Ĩ_@d===m=m=d =oj =qT@.=m=mf A{SR[?R@9A4*˔! s*qT~@SA[B{è_DЁ c?bHb8|S"85 ?9_{ @95`> @{¨_`ja8qTj!8! ѡbj`8_qaTs`>_{ @95`> @{¨_׎`ja8qT!a!`ja8qT!`ja8qT a?9`>_֠4|@_֠_R_R{CS[Cc*ks? "B3 R_=^t@ =v[q@T q Tq@Tqsb?ss>H7 @7@H@{ASB[CcDkEsF_s?s"?!R?FR*74c:q'?vƀ?!@?_ !! *#a*?q*ǟwS"Bk`8q@zTe#*AR;@94R @Cah`8A4k`8_q Bz@TRj!T4 BCD73sR;R5T R**c:q!!3?!@z!9D@zaT_"@z@k!! @R`qLT@8RqZd4 R**c:ƀ?!@?{S?@ 7CCZRA R#Rn`55*57@*K@(;@O@**s5!C@q@R%@*SA{ը_;@7@-*#Rϳ;@O@K@ҥ TK@7@q-TR*g8?@K@"{ @ޒ @95 @{Ҩ_@]5`>;]`5@S@?T@W@?aTʌ @{ \ T!!@A3@ST!@ I93@ғAR @{¨_{S%"Tj@RSA{ܨ_@R"{?(TS R١sRu* 7 s R @qT?@áSA*@{Ĩ_R_{S[5BcB@A6d6SA[BcC{Ĩ_^**d6s4SABcC[B{Ĩ'^"g@!gaT@Ril"g@!gaT[BcC@RSA{ĨRl{c7GS[*@#cG5!!G"R*?k T`a@9?q@Ta@9?qT!!G R#SA[BcC{Ǩ_a@A4a@94?q@Tk99G+!@A4!|@aҀ *7@:@B "`"b8::5?`@9RRQojsa@95 R! R8Rk{TM)k Ta;S qT{ *?q* BzATb{8{@_q`T+@kD M) G`@9qT G@5+@RkD@@!!`"$G{@#@e@9q`TbBC5?kT"BG@RAa@9?kT G@@4@@!!4bB#{c7GS[*@&Gt5 G!R*kmT~}~@x`j`@@9RQjTs*<G`{@9?qT*kT@c"RQK|@g'@4kTazfA'@9q!T @94s*@94?q$@zT?qT@9F4kR F@9 ƬQ j R?q)ZHf8qjAT*qTvi@9q TkDkTFi`8ha8k Tk`T@944"BG@@_q T G@4uhav@O!!`9bb) k"BG@@_qT G@ 4uhav@4!!EKR G_qT G@ 4q y@ 5@b*@)kDR[*kDXkDVaxbaz"BџkTkT@ sESA[BcC{ɨ_*6  G GFG@@G T"!{`@9@q@Tq TD@@A RkD@9*`4k|{`h` @9?q$@z`T@9kTsER%R{*|@԰qR!K{_{ԥ{_{Ԟ{_{ S|@ԏ`4*%@qTSA*@{Ĩ_hCR{|@|@q{_{S[cR@_k`@a9Ҡzs*Vzss5jt8qT@5*SA[BcC{Ĩ_C`{R /5)7/T @{˨_{|@!|@)|@{Ĩ_ I9_{|2C#*??q@T T4?qTR? qTRCy7CyqT ;@1kT @R R @ @RCy*Rh{Ĩ_{R{S*|*R5R**k!R*h*ARe qT*SA{¨_*=!8#@94pqAT"@9_pq T('RS?T"@9BQBD _qT!!q!9_P`{\ R{_ R_{S[c8ks*;<{ Z?*Cf@+!@b AR{BSC[DcEkFsG_NSC3#jj`8qTTT*]\`5\5ARKa<sc{@Tj 8j 8j 8j 8nዀjᓀf ᛀb"!B!@ R{BRSb4 RSA{¨_b@dAfD)!``|S @{S*[c*ks`jv8q T6X4{@?4qATRR/=K<aC)!q` T4 6 K`X6b@?qTqX@4!@@ @qTR(@qT9R @ @qT(@q!TR}YRR9#{6[@;`@T_@#{ S_@#{ S)рaj`8?qTѠbja8_qaTRRb*k@qsaRMz9W5*#*?*@4 {@`@T` @!TRSA*[BcCkDsE{Ө_q {Bz@Tj58\4*#?*k@7k@m`? ;ێs@*7;F?@_TRbj68}C*Q2*@5`CL@9ALqTCP@9ң4B@B<`_TR"(k#k@k@ c,{SR_qT*[*@hTm R***7@Ҵ[B*{@ SAc,_wR[B{S[cA R#S`7*S RC!R*r`5R*r*5S@cBүhA R*7R*RvW@4h#@*SA[BcC{Ǩ_* W@\{S3s-+5SA{¨_*4{*@ Q*7* @{¨_@?pq!TaRR_{!Rrs3{¨_{|@STK4*SA{è_/@*BCh ARs c,{G !S?"Tkc"s{ [cc mc#7c$R;_RRARSAzc9 kz8qTR3CzAc!CR3!h{8?q@TSg9o k{8zq` TzlRg9u?(T!lj58z AT;@Rhz8qT_TTߢ T7@hb8q T[ ф k{8qT5RӅ @z T T?@hs8q@T{R k;87@hz8q!TC@T48RC@CR5ARSA[BcCkDsE},@XqT57kz8s" `Sj`8?qaTT TRcB9R?qAT Z@8?qTR@9?qTcj38cB9qTG@`bWlSA[BcCkDsE>! L ! !C@CTT"k`8_qaT? Tc ht8qTR k48sb?T4s!l[BcCkDsERSA{@ c,_{H{_{|@B|@*{_@qT K _{*|@  1T|@** @{Ĩ__=` ) =7@qS4mTq{+) +/{ƨ_{CcS*[k3JC@ 7rTCs*8SBЄB"N 7D!d*s.Bf*~@|@===|7 Ts `Q`8(qT@R38sCv~@R N(73@{ASB[CcDkE_ARRr RZ!7R!`: 4@!`RR@qTQqHT! $6CR!`:`6N 6! Rr? * 7@! bK#W*CR @@@R! bK#W{S*4"CS4"=*@SA{è_{ RSș3s"Cn'/@ҺSA{è_{S*3 R[*c8#͊\.jj68!46`C7#O@ҐSA[BcC{Ũ_.9ARRr R `7R!`:z{S*`Cc (`6qTSA{ƨ_[s R6g"~@*=_=Ŋ_@X[B{C#C#' ) A=={Ш_{k{_{S@ @asxaV@@TV~SA{¨_{S* R[|B7 7cso 6R@ 4 @TR 7kd5`j`84q R?qRB Bф *|@cjd84(qTcQflqTlqTHc8`#`ր5cj`8q`T`@9q`TRfB !5'RRo@`4 @ TR 7k R7k  R7kCO$+*O?qkT@`T:{@!3T` #R_C@ UW 4V*R.69@qTcCkDsER {@@kD\5~3RcCsEw@Y*SA[B{Ѩ_q@T!RЄcB @;) RRAR{@#*!RQO*RS. 6@qTz3RP_C@#T*6V}ӋU`V*|V*R,.6Չ@?qTRo@4 @ mUo@4@?x T@ @˷qcCkDsESR{(B|@{_{ {_{{_{|@{_{,@TS?(T* 7B|@|@c~@ԟATs`qSA{ĨyR{Ĩ_sRSA)|@@F){$H҄TAB|@`a!!Ծ{_{ *7_HT7c~@Ԯ @{Ǩ_CR"L@7@B+ )C|@{`݈{_{Ԇ{_{{_{S!rSA{¨__qTB|@(K_R{Ssb@9_qTRm@9?qd@@T˿ lTa@9?qT"!`Fh&Bh@SA{è__8qT@ԈR T͈R@{S** RR*r**?@@*SA{ը_{Cw{Ҩ_{(|@{_Ҿ{ERCS[c@@ @$@+@ )KS(4SA[B{ɨ_jk R**QT?A9qT?{S*C @q`T~@Լ**SA{ܨ_aRRrR[*7S)a@#!?=>t@ @`~v =R̉RRCZNR#B5@R RT!9{@5G@K@[B~@(@RaR@[B~@('@G@.{@@{@9_q!07!|@N{Ĩ_3@) {(|@:{_{|@z{)*|@*{k{_@9?q@7_{1R Z3 @{¨_`87_A;"]R! B@_A: Z_#c:bD@@#<*5d qTT5 _c cTSC_! ?qT! _{_m R"{_9_$:V{S#c:sa`@qT"CT/@R?k T"$Ra(A RB b/t/@ya@?q T@y@SA{è_{ C!" @{è_$:!"DHT/@a$:$:{d@Asb5 @9`86E;ե]@eQqT!FX`Td 4߆ R"{¨_qR ҄  @9|Sh @Q*qT%@8ѥQ*6%@9QqT@@q_ R{S[cks<@7`ҟbBӄ@TBhT낒<@T`T 7@{"sv7@{@SA[BcCkDsE_ 7@[T7@es?T7@{ 7T`7{S3@e@E4a@9 |Sh @Q*qT!Q%*e7sхD@;]@$ c@9aQ?qH T@@ TsуDRSA{¨c De@9s%5@˟hsc@a !*?r`Ta@9#Qq T!Q?qTc@9Xaa|S#@Q!h !*?q Te5a@9 4 RGsfa@9!Q?qTe7s aa @9!Q?qTs[6ߟR߿r a @9se_8@>)сc@9a_8Tf@ *rTaQ?qTsуDaQ?qITcQqTa@9Xc#|Sf@Qch c*qhTswe5a@94 RSA{¨_a@9!Q?qTsс R%*e7s ca @9!Q?qTs%*\@sqTe7sa@9#QqTߟR߿r@Ts{c'{¨_A {" @9s@86E;ե]@eQqhTЄX`_ TB @xSQ  7"@9@|Sh @Q*qHTBQD*$6 @9QqhT*6 @9QqT*Rdq`{¨_R R d@Rd`Rd5 R"R_֠?q)T{@;]@@?q T#8@QRkR @zIT#@@Qk)T R qT A9{_#|S!cd2!`2@C9A9$| S#,F!h2c`2!`2`D9C9A9%|S$DL#,F!l2`2c`2!`2E9D9C9A 99 _{S[vckc4@ˀ@є 4@`T@@3`TTT!dU4SA[BcCkD{ƨ_{S["3@# cCSA[B{Ũ_sa@4?qiTeT98cҟT@d@Q*q)T4KT@sc#9˿cCcC8c@d@Q*qIT$4) TT@s!@@cC{c{¨_qITA;!]!@ ?q0Z_{{_R_|@{@у{_#4{d|@S*[|@*@Ҽl*6@!XQ?xrATRrjT**7|@37(ҁ@*SA[B{Ĩ_R(A"_6{*|@8{_*|@{`z*{_C {S*GOWc}Cq TO@ R?9{@SAC _ H@?qǟ`D[Bh`8_qT @zATH[C@"RRwK @zTCw@K%QqHTK@&8kT@w*BkTG@h`8q!Tw@K$QqTK@w@%8W@ @@C@[cksCg ?GqAT @9c*c|@!"@9%GCSBqhT4lT!e[3xs4o@s~@sw@R[@sB ˔K@Es`jv8xo8`8 kT|y@5  Tv5@@o@q!?@ ??@@W@R@s@o@kJTC@<To@o@QCC@@ QA!Cg@[BcC? kDsEC@@@!TG@O@GbK@R?W@?O@A@8a 8! C@|@?T@4O@@|cd2h!8"8c@?W@$@Bz-T!@?@c ?A@ac@?TO@A|*O@_h!8qDATqRЀ+ n$ R_4T8@9&˟T ˟*Thf8Hi&8aT)  mT@9qIT?T@9Sq*|@ jTKq9&_TE@9|@4q(TBjT_B@@B?Z?,q- T{S @9 @ T[ |@s*у@9@92#  T@9Qq)TT@9?qBcQ1Tcky@73ќ@9@9  T@9Qq)TT@9qc"@9a&@9#  z(Z@_LTa@9*b*?`7fQ1T[BcCkDsERcCkD[BsESA{ƨ______{S[ vsc@_hTb8@TR@9qT@95 @y3@ ySA[B{Ĩ_!@{S[cjs8s(\ TSA[BcC{Ĩ_!.___{S3s@y R!2ހ@y!K!<y5@SA{è/MSA@{è ! R@95A@9c4!505{S [?cksbZ\@)VTA)TjT*qT$ך6XZ(7c77@*** *7** *75~ Rz ~!!3L;S 5RRRfc9hF! ;7lF: m)Gb! @!@*B@:@@G5@*ߠ@4G@[`Q@qhT! $6s@k**97@ QR;~"R'ARr?T7@x`k@T_sH*S R6ր@cCUkDsEm*RRRRR}bB|@%``by@y!`fy``sbbkTty _@9 @9q~~~`)d)bT4s _q@T(qT`by@y`fy`$_dJ_9s*?TF R*z sGR AyycCkDsE5cCkDsEcCkDsEcC*kDsEcCkDsE cC5kDsEcCkDsE*{@SA[B_{[c**kcSҚӠATLKyEd**qT/@`R[BSAcCkD{ƨ_{[*yKSck*s_|#y*qT q DzTw_Rh rR*o}@"Tca@zzj ֢р@@\_@Bo@*R*R҇@@ 1T1T01T,1T`R@?@qT:_RaRR@RSA[BcCkDsE{ɨ_`5@f)!@AR`RaR@ RAR{c*#cS[ЕA\KFK~c*qT/@`R#@SA[BcC{ƨ_{kS*[*csDR *`7*q @ҁRRB )7xx7@@RTa~} `L5ҁ& 1T1 T,1@T1TR1T R-AR`R*aR@ R&`R8@!h3r@hss"^@Th3@Uw@x@w@5_@4R{@SA[BcCkDsE_sU@@w@@ixARm{*S?q`T?(qTa@9@ ?qT?qT@_TSA{¨_a@9!?qTea@9! ?qTfy6^{S[ @y@q`T!@ @z`!@?kT@kB"A? T@y@yqaT!! !8~k LJ c @y@qT+W#X@@Yc@U@dAq@@U#@@aBqATU"D@xB]`@y@`@y 8~s T`@y q@THTqTq!Tb@yB_`T&@y#R@W#CyAa@#y@SBO9]W`@y@b@yB_@(TWa]W`@y@b@yB_`T&@y#R@WCyAGa@y@3B/9]W`@y@@@ @@}@AwqTB@9@dD@x3c@y@c c8~s!? T`@y qTHTq@TqT@@^BC#Dc@[CDR^<_<]B@9@c@yB@9@@dD@x@c@y@B@cc@y@b@yB_@hT[aK][c@y@@@@F@9UWB@9qTR]y~bCR]?CqTs R!KR 98*R+@@@@@@@cCkDRSA[B{Ǩ_+@^IcCkDkD{ s@QI @{¨_BR{SV]RRB-% @*5{@*SA_?0q`TR_{%  RqT @R{¨_9${CS[*c*k*s@y? qT+qT{ASB[CcDkEsF$_C?<qTe@9d@9c@9!b@9RKW@zTc9 6+7C@c* R4@6R/r/9~*Bc@ K* 8$qTR"8uv@7"Tu?@D@zTR C?lq)T!`;_s 4d^BRK_88% !|SEe8Aa8888T!`uu@eR@9dV@9cZ@9!b^@9KgWcWHG C@O qTc GKcH95c K@ RR҃R"RRC *W@@Ro 9ic9qTq@R0cW@BPfcH95y\!`; \O @99$Qq@Dz4(TG@?9RqT@#qTO@r5@kT@RfJaRt`ARySS[S@!`;[S@9 @9$Qq Dz@4IT! @9$Qx`4_qHT"?9_LTBc[0FcH9`4c4C@@9q TqTC@@9 qTC@@9q!Tg*@ ``@y' c9<6R/r/9b~*Bc@ `K*8?$qT<cc FWRRIaRt@yA@9[ $Q?qDz4(T_9BRp@3T[@`T64Ђ! u5b_LTcQ[EcH94cKu@:T?@tЂ!@ u 4 {|@6{_{ sc/q` @{è_{S[cBRc/|p/@@9`4Kk@AC@R?(TV!` @tR@5CRR6,RkD?qIT@RSA[BcC{ƨ_! )t"R*R4kDRzjwJ9@y@?<KA9c` q! !RkD{ s"c@/q` @{è_{FRS[c<ks*yyCowr T~@!˿Tsеb!` s"s`5SyB[ TYB@YsqR lSRҷ*$1TR?,1T?01T@RSA[BcCkDsE{Ǩ_!` 4*! 5BRo* " `TR s*R!4@R{|@E{_{(|@!|@B|@|@9{_@;XG__{S :@SA{¨! @KsQ  R@95A@9cQ4!5j5Z_Z_NF{R[ARrS* R7*"RK(*`~@!7OtSA[B{ƨ_zz@?Lq`TR{Sks; @y9@@q@T;` @!  T`@yt@y q!TQBq, Tk [DZcR\<@ @*@x:~{a@3Q4sa@?k!Ta"@9?kT`&p 4@ @C@)kT4!xSR"3A|EC@S@ Ra~@s|`$yt 9Y@ @A@ !A@ @j3@@cCRSAkDsE{ƨ_[BcC[BcC{ RS#c/#RYB2ARR7K@S@ P E [K@/@|&T_Br2^88Y2^8s8j8[BG@/@zEy" R"SAcC{֨_{ARrRS R!@7*}s*a&R(*`~@a7;@RSA{Ũ_{cq@{¨ Z_{S cC#[@LRLRSn'@"T@9_qD@zATc@9`Q$qT4qaTRq`T qT5+@\@X+ @@ <@!P@H !_?Tj 8!T RSA[BcC{Ǩ_{{6qhT `*_"@*Rk *|S6?q<_\*|S6q |S!|S _{*|S s/\P@9b:@9`4H! "! #  B ;S9 RXRR#  #B` )Srksd@9q@zd4Tq Tr@6cTcFkGxR{CSD[E_քKBK@@CR8"8|@:8p=qcFkG{S[qT(qTx" R"YaQ#  @Tdj`8Q _$qT 4qTb@9_qT?qTb`8|@j&85 q?_qaTsTR @9qTcR6 @9qT3c a@9sj xa4qT*R* cT`jc82Q%Q$qTqhT \Q#4 ac8qc|@j x!5A:TcCRSA[B{Ũ_@T?qTcs`@91qD@zTR?qAT_qEzT8R j xR1TB*R|@BK4F&BxSB|@eoR!Kz x?kT&@x"|S$88aT Rx5cC2@RRqcC{(|@!|@4{_{[*S,q-T*qT`"W@` RSA[B{ʨ_cCRcpTC@R*R?qT q@T`"VBRb5@9Q$q T'@9`5R`cCVk78# l'@!@94CA9q`TqTGA9 q!T5GA9q TcC @)TcC@9_qT_qT#@R5#@5#@C5#0@95#4@95#8@95 <@9qT_qT#@9`qRR_@9 @9`qT$@d5$@$5$@5 0@95 4@9@5 8@95@RR@!@ K_ c,{C[C kb<XStRRcs*##c  kRos"qT#R@w~@gfR"RRk@T@q1~@ck!} Th!_h%84C9!ke8kT k%8C*XR@7c~@c!XҀ ?T_! q T@ @9B q`T q@T@4`'uQ` QXRJ3c|@Z7>fWsѵ$  1 T@a_?k)TXRw@q@@{A SB[CcDkEsFc,_{Ss<R[sRbB@9l~~B45 `F@9u8! @u8!kT@SA[B{Ĩ_{ UpTR @{¨_aTs`@9Qy! AzITp5`@9q{Skk?o @[cRRs\Ro=.v@?PqT$ 6oi@RD` aRn@y-q@"_8_qB$Q@DzT!ht8?q!$Q DzHT@@9Z$Qx`4?q(TRk@9f2 4qaTo848R@RC qT?[BosEcC)Z@@9$Qq Dz4IT! @9$Qx4_qHT?9;b*;@@4?@"B+U?o@q[BsEocCo@{@SAkD_@o{*S?qT@q,Tb@_kT_qT_pqTRb|@c@|$gh c@`@ $c@`@e $ TRSA{Ҩ_% RqT@4`@/nqTGR@qaTGR{S*[cks*?9Po?TT6*q`T{#Q*q4 :T q*`@ 4; 7R"A_(qTkaT3SRZR>O6(q@T7{7(q TR?AR r! ? ?kT sBR!R|?"!9?7-6|AR|#RXRp?!RCRR#"#9!/9? ?|?3!9?7(q@T?@R ? ?k T sAR|!??7XR Ro|#i|R R? 8R# _9?q Az+TR"A_qTkaTVR~{6 Q**q4 )T q`y Ҡ 7@k|8q4!3ABk`8?bT_qT9\_8?qT9_qTTSRD9ˀj<837%@8$Qq`DzT@8$Qx@4qhT?TT?TT57@*9IqLTT3@S*h68:q@5@9kTKR! Rd"}B" p T@?(qaT=<#>k<<sr`T`^qaTt2тSҕSzC RaRK{3#G`>COҁSR3;q;@*SckR*c@k@`5_ q TckRRrL@9@b2c@RkR[#|S (BKc8Jc8BJB_jT!?qTR s3cJSc@#\S*c“c@RKe*srB*QP*{@*tBk Tz)# ?| g7;_+q@TC@ SSSSSG@R3c;CAR*L@9rH@9"R* kRR73@**k@4R@c'g@Ҹ*{@SA[BcCkDsE_{S*[*cGq@TqT4 y 9 97Rb4_q TR Rb4_Dq T6R7RRt@94s#BRhG@!@95TsE<FqT RyyqTWR!BRyyR7RwsP7klC=Fq C7@ w?4s@W?Pq T$@ 6kDsEX9 @9$Qx`4?qHTBRgTG@T7@Ҵl 5qT~~"BRj x"y?@G@lqw@@zTqǟR@$@z`TaRHk`ARym ?T"_8_qB$Q@DzT!hz8"$Q!xa4_qT~~ Rj x"y<q TkDsE*{@SA[BcC_sE7 c,{cC*S**R[#*^RR$`R*RSyy[9T7*RҸqT _<iTb @y_ q`T_qT?5a@! !t~s#@ {@SA[BcCc,_R{[*aRrSR*R7**BR!R*@4`~@(@*SA[B{Ĩ_**RAR*__@yZ<_@Z_Z y_Z _{S[*c*Q4@7|@?"Tsw4x`T|@ TrB R"SA[BcC{Ĩ_`K{[! ?,qmTScR"y 2&y&xv ATz3*`7 s@T{sx5z3?ATaR~SAcC[B{Ĩ_SAcCqA RSAcC{ *7* @{¨_֪qA R{? qhTS*[*@@kT*a~)`z``&1` T 7wF4**@y?k- TcF@kl Tb&@kmTa@K*[ 7a&@uF" b&`@$` 7b&@a@@ `&!? Ta&:y`&@a&5 y4a@`&@!?- Ta&/ `&@a&&<@yb@a&@BLT !a&`F@`F*@ykTtBqT`F&uF@FRbz`b& y `F@`F*@ykT R`BFSAR[B@{Ĩ_SA[BSA[B@ qaR @SA[BqA RSA[B@Z_Z___{SЂN_qhT! @s"b8 a`bXjNB! SA{¨_{Sa@i@5SA{¨_{ *@?kT @{¨_{*|@|@sp{"{{G|z*'*T*|@`]p {{_{C|@S|@v@ҟ =~v@6`4Ni@3@5{@@?T3@"}; @"@!|@?T1T@!}4@!|@!@4ViR@B!a@"@C_TD@85"X @#@c747@@3@54?X @?k T3@R5@7w"@ೀ@ @_85㷀_8`5a5w_kaT555`@@whSA*[BcCkDsE{̨_{cS R[*sv*@*a?@7@A} T @v3@N= H3@=N=nN=;@TRO43@M4_@vh3@!ˡ;@d@!hcc ;@:43@84_@Ҷvt5[B*SAcC{Ȩ_R*{ `zB@5z @{¨_{ `zBB!0@ @{Ĩ_!; a8`z{*ccBF@{è_{RccB5@{è_{Ss[ RckBv<>`b@AR@8`@p``8ARk`R_84*`4g@`@3_@v? 4gEQZA@9 "Q' _$q)T@@9qT8A@9?q@94?qT@!@{3@!g3A@94!g@`@l3@9"}@4qaT!8@`h"@h"@_@u4R[B*SAcCkD{ƨ_{S[c*`@G [qMTFSR@ 4ˀ3`ˀ!~ӡ@4"Ҫ9 X4 5hgRcz`!Zz ˀ?LT3!; s7c7;C36ks?.Cg@qTzT6t @qm TG@*5ˀTz`@_kATz ˀw@!hy_!# 5w@hy?@kT@FF;@5O@ cgc@kDsE32S@2W@2*SA[BcC{Ϩ_tkDsE⇀ˀMTz`?k`TTaD@* TG@kDsEG@G@ҟZ{S[ Rck*t!; 6`f@g@ts4@kT>*S5@U@?_@583@g@tRRqT$Ӛ 67y9`Tc @A 4@! 4@ 4@ 4@f 4@% 4#**c*c* 7! ! ! "@! @!|@_#T"җ8@Pi$RiG@b@ _85c_85B_85⛀_85^5R*r|*ccb K*B"8$qT/1/@!@34#f@2p_kT2g@ҳRLt22Rg@Dt2@`g@Hq(TRr:eg6@qTzTsEAR*sEOR<=p,g@5@  @qT Rgrg@*w@r@sE*!`;g-g@@!; 3 ! ggR @sEqTzjc8(qg@1!]cc57T]7@*@5ju8_qTjc8_(qT1@T!R{gRsEt!Rtg!RpgYR*R_R_{[*STR ckcs9 )I]OBs =ZG\KWHc@RRC@R!RRr R*7-*Rs@qT^**R7@"\5 0*5@a5/7@!Rs@ .Zs7`@qaT!@8%3 `@qMzBzAT| @ 5@qTR`/[BSAcCkDsE{ͨ_~?T"@BZ"D{[1@@!@37S@Bc"#Cxt!c3*7@6 cC#@@R 4*6`~SA[B{Ũ_#@cC!{C @AB)@3|{A_{C @ @_@T @ T @T @_T @?T@ ?T!@ T#3C!'3|{E_RRR R R  R R@y%@ @yf@$ @y!a @!`ay_{!|n$Lg{;`_@ҊA{!{Q_{!{P_Q _Ң B" | a_@͉R8r$RЊRRr! ,AJa JA< JH@J|S_CC$`@#4|qdGzbRB𥒩*?% `ӂx!!|kLT@2_{Ssb*"a*SA{¨ba{_TS[*baCaCD`@\SN@*!*~T T)TRRR0R1RR*A`eCbNA *!*+aSA[B@{Ĩ_RRRR{SДb`ЂCaCh`@B\SNA@*`!*a@""cks^_CRc@94R1XSA[BcCkDsE{Ǩ_ YTRҏYo9?9|c9ARX_T@95o@4R3>3@Rk"8@$c >@4qTPqTqT Ro@8 4BGB@{|@(#S!1T|@iSA{Ũ_*Wi@hE_@?q`T!R{S[cCk`j$ @9q,T=*)_@qNis-)BuB_"T@@`j^8X;#ќe @*_@64eq*(" @TFs"^`T`@@@s"T`@@`v5s"Ta@ @@v_65*h*$*_v7SA*[BcCkD{ͨ_RA:O{Sc3R[cckJ`@)~:WI~~~""=~g$*% 4`Qq T*_$o@T*oV$s@q T6*|%4#A8777Z@@@O 7W@H 5W@W5H`5W@KWS҂qCzATR~@W* 7(W@q`TqT@k`T@|@?k T!|@W*6G(ҀԄ@@k T@ qT-Tq`TqTHW*60(!bxAWB|@W*6!C)` B2B|@W*7@?k T|@!|@W*`7((W*6@KW@(A"##@R$H}al@! JG G@c`?]@W`4q@ ̂c,{S[ Rc#GkoC"Rs=l ]R5""R̂-c! ^*g@}B]qTKGc@}G@q @AT"@RlK@kG@ ̂{@SA[BcCc,_C*RM=!]]@Gc@`TG3*RO{SV ~`tF` V@`@R@SA{è_րR7{S*} R@L)@@@_RSA{¨_ R_րR{S*!*7*} @R`P)s@`@R@SA{è_ R@R7{S*Ҳ}R@L)@@@_RSA{¨_ R_րRa7{S*[c**SV}`R`R)w)`U@`@RSA[BcC{Ĩ_ R_րR{ @s@ @R{¨_R?_R_RB@"y_RB@"_ R~<]@>t]A?t]B>t^=?x_ R~<]@>t]A?t]B>t^=?x_{*R`<R{_R_R_R_R_!<R?qhTRA_RA_?x@ R<=|A^=xB_=|C^<_?x@ R<=|A^=xB_=|C^<_{S[*;Ɛ{@SA[B{٨_* <OC{S[5Oc=Mk* C@RcM" `RH"!Rq"RE#" ATARd"WATaR^" lRsGЦ @!@C#**)53K@R:6[@qT@R"`R!@R#cCO@{@SA[BC_@R!`R!@R"[R*d|@**{ e[f{_C|@|@{ X[f{_{Sck**@9"R?xq$Bz`TR?tq`T?q`T[*_8 @94R?wq`T[@96o?qTR.@9?tqATo?kT_k`T`@9xtq Tq@TlqT@?6 7|@o@s7M)?kTBK#KkTAK_k#T[BRcC*SAkD{Ȩ_|@s@9Qc<qT&Ú6 @9s*`@9kTtqATqT `?lT+:k88(V* V5"V*V4+@R[B+@R[B{$SD@9pq`Tlq@Tq Tq TR` 86~` 7 /@!|@Y@9 4 7@Ҁ*@9? T@9"RxqBz?IThd8"tq?Thc84c?Thd8tq@z T?Thc8lq@z`TŸQ<qTE$Ś6?Thc8 ѿq?Thc8tq4hc8Fz@TcD?T` R@  `hd8` RA5SA{è_{S*[c6@@9q@T`@9`4kc*r*1@TkD1T`@9qaTROk:@9Y87?q Tt 71T?kD: TkDssIT{3*aT@94D1T1ATkDsE8RSA*[BcC{ʨ_S7@|@kDq*7V*?kT1T?kD:DXz!TO@skD$V***@4OO@3O@ST;B;ZZT@8@6@]@A_8!Q?q’ZTXS3@G{R7O;@`T@9#587qT{@51TkD:!T7@a`T@9 4*O@*7G@Q7@|@X5k3@TSC-*CU*C@kT1`TkD:DXz`TbU*C@**CC@5VROB T@9'Ҝ874k@51TkdD:!T3@T@9@4*zO@*1TC@;@7@|@?@*qUG*kT1`TkdD:D[zT cU*G**G 5BT@9 ҡ87?qMTS*@|@6SB T967@7xkDsE{S[c*k+6ZY*sc@9qd@zT7@@9*d4 *4qT`@9qT56`@974R94*co@547@{7SA*kD+@cC[B{ǨZs`@9@4qT*cO5R*cF4+@*SA[BcCkD{Ǩ_`@95R_@!@oQ{S[@(c*_$@`8j@T_8qTtxR"9#9RSA[BcC{Ĩ_{Sks*e@957qBpS 4_qBtSh&8%@8F?hTq T RR RBM 59Z k:8; @9@5{ 6_qDJz_q 4[k!k@`5@[B @qA07a%ka8f55/tqTGZ_?Tk@9 R @_?T"5&R%ka8!J"k 8E@9RqLzTtqRc*C44lqTpqTqaT4RSA*kDsE{Ҩ_"5 "4RPq['!`5[B X@R?q`T?bSq[B@RBR[clPRU06_`>T7W@W`GxRa *)4?T_8?pq`TR@6 R*?bS@5[BcC!@`*[;@b? 7?@AB99K@9**57@pT K@94q`T(q! TOQB" T@9?_@5@?@ 4O@9qTS@94 @<`T@?2K5Gb6?@7@sSs@[BcCM7@4T@)7@-T@O?P?@@BT?O#?@O@`5;@b?6?@K@9A7@ T@uB997@S5@[BcC@?d*4[BBRcC @_?T!&R"*[B c,{S[c*ksW6v@! 3w(7~ !@9Ra5iO9Rj T@9q`T*RR*"?@qTGR7_O@9\48@947@#C 40q`T"?@tR`U@9 5vx#CG@ [@m"?@! 8bha8??TB5h!84!h!85Үs@V"#@sCsw 7 44@b!!!}9"@?@}C0CO3R44R-?@s@+"}"_Tx"B@?@s@"C@B C@@B@C T@w6{@*SA [BcCkDsEc,_֠@c@ JtR{S @asxa !@?T!~SA{¨_@ @A@@ K_b@|7&@g|7h'_{[cSksRsc@"@` @``{`h<`\`B^?@BpS!*@**`"2@72`"a*@ @]`@@!7@`B !Txa!|}l!` @!ht"`@SARkDsE[BcC{ƨ_c!`xa6]*@R!@xa6 `@@W!t5*\7?k`Ts{`sj<~4!` @CR]h" @`@"|~%chb6**I|~!@7SAkDsER~ah`!ah @@B 6@7x'G]`@id7 TeD@kT{S[ @@@5@@q@T qTqTRSA[B{è_@@!@@5@4@@1`T@@B4R{S@ @kjTa @5 `@`R@SA{è_a@_kTc @` @B _kTЁ~} t` R{S[c @$7? qT@A@#@#5A@"@"4-@A@? T?AT5B@@!*$D@D@!"@7c!"aTc$z#RSA[BcC{Ĩ_֡@!@"@45a@kJTe @!Qaa@?qTT4@@`5@{SB)_kKTR?k,T`@!xSa!|}+ @b@``@AaS|}#RRj3SA{¨_@{SR[*cks3R dx`C7*#C6Rc"C6 R#R3@҄|R7~~R%77@SA[BcCkDsE{Ǩ_Ba@xa7*" @Bhah!!?aTH:jaBk!!?TAk79 @`7 @ @ @* @ @ 3@3" @@R3@D RR~?s~~7@R b @Bhah!!aTh6{s``@7``@`` @` `@``@``@``3@`2` @xa!63@R҄~R ~~`?'{_ NRS *#R=#RRd@T/=u=@SA{Ĩ_{RSR[*`*A``RR``@"Rc@R@dc@ac@aa@?a@?a@?a@?SA[B{è_րR{RSR[*қ`*A``RR``@"Rc@R@dc@ac@aa@?a@?a@?a@?SA[B{è_րR{SR[*c**#R_#RRXd@@T/ARaB@9twb)3aB9@SA[BcC{Ĩ_{#RS[R6#RR/d@T/!RuR@@! SA[B{è_{#RS[R#RR d@T/aRTuR@@! SA[B{è_{kS[csT@W*!RoX4R@*o@! SA[BcCkDsE{˨_!cQC3_C@kTbQBA @B|}$hb4qT!cQC _@?qTT! 4@ @obbA@?|@Q5G@|`GJ5a"F 5!<|@@`5@<5O@|`O5*? qT@ @gb@S@%5C@|`C 5a"5!;|@5@`5K@|`K *@@@*D*T@o@9 co*;G`;@@ @ @@?k Tv T@c7*C4@4W@ R %A**@k TN@!@ 5?@|`?@5!@"A)$ @`@@I {c SR@Sb([3kRs`@9xq)`!?qR@Rsn?@?T @*@9q`TW W@@a@b~@ 7@@`T;@@9qMT?tqT?q!T?@?T@9?tq T?qT @9?tqTsR@`53/R?lqT@9R?q$BzT ?qT:@Tks8t4q`TC038ZL kt8tqT@s 4@?q T"!R/@ /[BkDsE*{@SAcC _ր@9tqT;@@q`Sz,T *!M**kTMkT{{*kTMk TWwW@@Q'? N =kT**4L{5*{L4*L*sRRҮ7@ 7~@c7AEWMW@@ @==@!53^W;W@ @?==@!R$|}RR`⿀3B}0࿀z =k@ZkT@zz`4`@!kT'Q* N =/@`y#RR@3@RERC3@R@RG{S!@94@?lqTDH T?q"TT?qT,@@a6["R.R@.@a.aR@$T@{[B5@**T?qaTR$"5[3*"76@@6O@K4O@c@5L*O@2L*.@*iO@@'L*O@$L*.@*]@T.@.[BcCR!Q!?qT?xq@TT?qT?qT$5?pqATR1aSA{Ũ.B@9@4c@9kAT1"A@a@9b?q`TT?qTTR4?q TR5s e?q!T@!Rs ?qT ?qT)T?qT?qATD4[?qT@!Rs @!Rs ~@!Rs v` @9qTf ERRfR* ck@GzLThc82Q$\Q!Q$qT?qiT qThc8 R?q Ts.@*@d.K[$5 Q qT.@5Q@d.*as 2@_kB2[B6.Rs/5@T@!"Rs#D5`@94pq!T` @9RqAzT@!BRsO@|J`5@O@.@*z.@s5.[BRNSA{Ũ_[B@ScC[B@R{S[cks: @` @P7@x}Ӱ7@~Ө7@}ӡRRj!wk"7@"|}kbTR* R* R )oe?qJT?qT?qTQ! QA_ B_oaw7*_k KT6Q O_!N@6ySNZ!h`6L @_kGT!H@6zS@Z!S;@@"|@?K?@@@4RAg@ )SDB@SA*[BcCkDsE{Ԩ_ֈy`6@~|4@{~{@@`R@HB@h!!ja6h!W@{"|@GWD{@@5H @qTT>5@@D!T@R@?7 Ro@*o q@MTR *?K@*@ @k@?@ )K@e6#@!N@6g@|~I!g#@%h *#@  BA@ |7@|7i0c@{R"|@cH {@@55_@{H {@@35@{|`H {@@25O@{@@o@ "|@H {@@/5O@@q-T_@@qT*o{@{|@{H {@@,5w@{"|@wH {@@*5O@{H {@@)5s@{|`s}H*{@ @?@O @ R 7[@{|@[hH {@@@%5?K\?@ K@@@#5o@!{"|@oLH {@@!5O@{@AH {@@` 5@{|`4H*{@ @5@7so@*! )@@@9g@{ }@gH {@@ 5O@{@@!@"|@O@@@97k *?KpI*@ @k@!@@9@!!*A)?@E6 *k??@k@#@!za6|~g@!gi #@!%*#@ o@ * *?;@*@ @k@?@ )K@E6 *{CC@{@#@!za6|~g@!gi #@!%*#@ Q/ QO@A_ @@@0io  @_kJT. @'0Qio 5_kk2T E^_k TkQ _kTA_ @@@B@ @6 @_kJT5. @Q"B|}ib? q T,T?qT?qT5Q O_@p6@?qTTA4@?KB @O_@?@ K@@@`4R@/7!N@6OZ!Q! QQ QA_0C_/O^-3$@@B^4@?qן@@    @. @Q! Qa @?q #T _k"T_Rk{ k@@.R@ @."I4@ R{@ k "{@kG*G@ k@@ BA@ |7@|Ӏ7h&7#@!D@6g@!|~Ig#@h!#@=? qaT@@@O_!7o@S@{|@SH {@@5k@{@kH {@@ 5{H {@@5@@!*{!|S"|@H {@@5?z?@ K@@@`5_@{GnH {@@5O@{dH {@@5@a{"|@VH {@@5_@{LH {@@5@{|`?H {@@ 5@A{"|@1H {@@`5O@{'H {@@ 5@{|`H*{@ @`5@ 7o@*o@qTo@ o_kT}Q"Q QB|}ib1_ @qTk͍T!Rk{S@ [RR@ @ @su~kTA @@ @@A @@@ @b @ s`@`@` @@6@R@6@s P3kT@v@@s@@p"@@m[BSA{èhSA{è_{[sGH@kScA =R?= C`CRSZ*C@@gut5a@9 RRWR5?pqT`@9qTqaT@ @'%SAcCkDRV5R`5W@@~@WJ`54`sa@9?qT?qd @zTS@*5@@` s!a @9?pqT4R5`@9RaRqBzAzT{@`T`@9qTq TR<RqTZ`_8xqT@a@9a@9 Q$q(TeR  @8 q QIz)T*?qTqT?q`TVR?` @9Q$qhTe @9EQ?$qhT@9R Q  @8 QqIzITkJT6qT@95pqT@9qaT@ 5 ** qT4qT@[ W6RPRC@ @pn>@@a@9?q`T?qd @zAT5R@ @sQ" @Q |}@Th` 6@q!)?q`~S@z T?q@z T!@" @ Q !Q|}CZh`!t_a@9?pq$WzT4?qR$@z`R$@zaT?k T?qZ@{@ #RR? ?@#R R; ;@@`T/AR@@9!xp)@9@@@@Ha@9?pqT`@9qTq`T R@Ru@**n@- @G@@A@Q{|@bkJTC@RL @ ҵ`yA{A!*b6|S` )a6K@ 7`5`J@qT~Ӛ`bJ@`BB|~(`J@xS`"{AҊ`C@@4C@R @[ @;?5ҷ5!@@kJ%T Q # @|}"Qdch`"_?4qT?@! Q@!_ @;qT@qT@qT@;?@@q THT`4?@@@5@|`}5@y@5@|`r qT?@@@j`5@|`c5@_5@|`X4A@?A@ k?@@ @DT @;A?A kT?@;A?@"|@@7535@!"|@+5@'5@|` 5 @qT;@d@q,T@#RsO @k T@O@kC@㷟;AcsV*5@@_1T#O<@C@;ARs95@R@R *@;C@b?@@@@`s@KA@@a@ $C@**C@@ kJT@O@C@;ARs*5_Ts@;@AR@R?Ac kcC@d 4@o5k*5#!@; qa#T@@!R@4@!@?qA@!@A@@@!@ @@q TT 4H5k@A"|@k@5A@!@;5o@|`o4 5A@!@/5s@|`s(4\ qT!5_@!"|@_5A@!@ 5c@|`c @5A@!@5g@|`g 45\@@T _C@#R/@Ҍ@R{ EO@3{@/ 4)S@|#R0RC@OV G+@@+ A?)?@+J@  0) 0/6@3@!@~C@_#R@R /| @0#RC@ GR@@/@|0??@!@R_C@#RCR`3/#RRF @3@!@4__3@r5w@a"|@wj5A@!@e@5{@|`{^4@RC@ @!@B@@ @R@B@@!@?kT Q " @|}!QC@h`!z_qTT 4qTV@@!@5@@q\@@@4@@q@@ @ 5 @@@ @5 @@; 5CA|~`;@@K,5@C@KA!@B@@@@@-5CA|~ ;@@K 5 @C@KA!@B@@@@ ~ӂ`~}{ A?kTҁz a{`{ ! A?k Te zu j* 5R@"@!6O`` R@  G@%;@^@`7Z`h8@@bB Ax`6|~ )`C@R @6420G@zSAcCkD*[BsE{٨_֟Ru C@@!za!h"@aAa ) @G@SAcCkDC@ @C@R @C@Ru @@``a@94@Sa@9?qT~4{ R` a @9@>{6Ro{ RSs*sB[k>sd@9T4Q$5sWbB 4_SA|@[B{è_D5TkTk-T'xdFxdexd5TTR_ R7k@Ro=Ro'ET4oR_=&Ye||f7&hg*H@TG@F@Tf4@*kTTeB|ө@"R*?h<C|_cT_E %h&B@hP@k@TbB_AT?h<f4@kIT*_TF|iP@b*hif k Th(h&B@iP@_ kTbBT{S*@Ab4*z@a@b?**5r@a@\?5`@  RSA{¨_*R?@5a@R{S[c@k[@ u6_@ 5w@cW@` 7|@sRK@qmTc@!|}`@sK)w5W@K@|z|@@~aa7}Ӄ|c8||!cT|g@`g@@@U# @ ˀRC@ ˀ @! R_@5w@cR?MRR-`kK@@57@[5W@C5 BRs@G_@KS 7K@qmT@38sE?@R|}X?@kD2||P[?@]kD'|~EC?@:R[@@OkDR[@`kDB{ bz K@?klT B{ K@?kTC@?x W@?klT7@K@S@@|@7T@@ @ @zK@{ K@q JzwT 74R?@z [@@ C@>64w@57 7A6@5@5@_qJzATA 6~qT*=5@|qT"@!(6*=5k= 5h!(6~qT@|q@ T= 5"@06@`4~qT|q T!R=@qk T"@@ 86*=*@|qa4TT"@86*=*@|q4T 87<a86@`4~q!T|qT!R=@qkT&T@@!?@RR%`*R?@RKO}O@(@B{`"X K@?kLT@@"@A5@%K@@@@@UX!@6|/K@X @`79U[ G@T`@aT@K@*`5G@ . @#@@6C@?x @ҁ@^@`K@A{`az K@klTG+@[@[@}||@ Bx Ѣil@_@v'<@5C@"~a`hb`5 R 7@[@{T 7A6w@4@q JzT7 7A6@5@5@qJzAT 6~qT*OC{_{ G*5* @{¨_8{S*R[*҃3;'gZ*GSZ*~@~@HCC*SA[B{Ө_{S*9*7 RSA{ʨ_R_`R_ {[S**7 T#*@7 R7*Oq@@ #*҂7R6{@SA[B _*d4@*_{7B{_{S 71T|@B@SA{è_{ 7#@Ra @{ʨ_***H*b@/**@6{*` UB{_{|@S*$1!T(!Ԁ*A` 8B`|@5BSA{Ĩ_{S*[|@c4*c|@81ATqTB*SA*[B{ͨ_B*|@B*C**B`5c@ (@qT `61T|@A* A**A*5c@ (@qT` A*~@(Լ A*7Ra!{A{_{|@@q@zSCT @9@5 *$1!T(!Ԁ *X1T*GA@ ` *c|@ *`|@c5BO@~D=/=|n;@aC@cc@b:a:~v=ASA{ͨ_R{C@GTcD @cF@cc}TC@C}R{è_֠XA* R` ! R` {*H` EA{_{*H|@Tc@TQc@~@sB{a@`$!07`xca``{¨_{ @@AQ@!*T$@`?`@~7aED!a @{¨_2a@@@Q* 7"ER?"C#_c2#{ 5c"@"`?T@9 @{è_{C#C#' ) A=={Ш_{ @6@t` @{¨_da@!ta 4 @{¨{C#C#' ) A=={Ш_ҨR_@7@_ R@7@_ R@BR_@ CR_@ *|S_0@_@@@ _OR??==_d@DqTA@!#_{![UK RkS҂B|@*@sQq T5 ;@4SA[B{Ө_@0 c,{S*[*ck*=Q4BBG FAA"Rs=LqMT=3s82jN=oY@q 5Tqk2T:ǑRzrz~ZaZ[~hUX7r@A!s G@G Rs= NY(66Sqs@ss@ @ks @z`T@(6v @q @zT@kࢀ{@ SA[BcCkDc,_Sqsb@@s*Rd;@@G@@/7aҬ@*RR@Tq%T:ǑRzrz~ZaZ[~Ӡ=wQ==q#c#=FiN=2==o@5hJ @h*RIs QG@;rs@ $BGjqhTwRK=NQN=1TG@@9qT===N=qCZC3B|@3@;7@N+=A?=N+=Nf3 A7CA `8@|ě"@3TqR`RaqSן<{`8s!?Ra8*R`8C/o_qs@* 56 R9S@Y39b~@_T4_Ts ; s " 8o==4=9`8b*8N=j==@TsE; *@z R rjAT@_kT@ (6bK_qmT@_kRRg@(7S@v @q @zT@sE_k@**RRG@@t_k@@q @zT@*RR?@@(7bK_q T@a/6@_kR?j @zTbK_q-T@*R# R* R*A@! ƚ!@# I|țK* @T4ѣiT_4K RqTtqЊR4 @RR*RKsr*KR @ $ Db| ?#TD@?q4Dq"R_ g6$1T$(RF!QRi)B4Tˢ@@R{B{  xS{ _kTq``K@q!BD@z!K! ? T@!ǑRar\R|!!a!|K"  !Kb:*RR!C"bA8a|؛#;8?T@!(6s&QqVT@&&q!Raҁc !|@0b&_$q T#RRWT@RcT4*@5g'R8;@"8?Ta! (˃4sKqVT@`'a|؛c!C"bA8!3G@3@*G@c`45 !`>3G@3@cG@a~@?!К33@bJ_HqT@ (6@v @q@z T@sE?k CRRnS@s!˼@*Rb@_6@==.='=s@4G@@9q T='=[)=[@@5D֒{&[5R5rSckRsR;@8_qD@zTs `@9qT`@9q TK˟#LT*x@(64Kk TB@99 [4~@{C\C@{@`@9Q$qTa @9?qTsR%R `@9!Rs`@8 *Q_|q T&!7qa T`@9Q?$q(Ta @9?q T@ X5s** b8_ P !R;@6h`ER H !R*7@%h `@9?@T5s*X3@@@73@,!}A@`@962K+3@" _q,T3@@!6 K`@8Q?$q(TkHT~@ ?kT`@9Q$qT`.@8Q$qTa RsR*r% 1Tq T`@9qT` @9Q?$qTa@9?q T@@K53@@@a73@,!}A @+*}Ss @8_ P ;@+h`+*}Ss7AR@H *7@-RAh 3@" _qLT3@@!*-RRs*r%  K `@8Q$q(TkHTk}a kT`@9aQ$qT`.@8Q$qT-R*  R-R *`@9QqH@T *}}ӥs%`8 QqIT>4?lqT1@T;@P$@ @=(7d_84 x? qszQ7q,TA! !X`x`! ֟1;TX7@X$3@{OHO@{@@@@R[@[@"B =[@|}@CTa@a4C@{?57|@?@(T q@TTq@T qT[@q`Tq TqT[@9[@y[@!@AqR2k!RR @DAha8*A8`w6D DR@[@  !C@8w6+T< *-[@X776<$R <$R[ [@<*<$R<*A|ś!C @@8"<*}KjTqzq@zATk}@- !K Ѝ? kkT| kۢkTt 5kT@(6 * k Tkǟ{G-@;G@{@@{C 7a}@C@M{@z*%lT **[@ _{@M@k`8C@{@4k[@l<R z**-9)[{@Tkǟtq @zTҟTA@A4?|@Z?@(T@@/7??@**R??@@)u? @q@zT@kۢ@*R??@?}Kj!T/=* ***?@1aT<* * *_* ˿+mT< * *U** P  *L**R?GO~@?@G@O@@@/7@`(7|@?G?@G@@ktǟ@@q @zT**R?G[?@G@@ * kT *RPG@(6)u? @q @z!T**R?B?@) ??@@4;@3@7@xsa43@sB*T9R s*T7@xs`4%RSA*[BcCkDsE{Ψ_{S[ck#x@z W 7`@R`6`2@b@AxaW + ~{.@a5*c&@`?`@~{Z+@b@A*a_{Z5[B*SAcCkD{ڨ_g*`@ |*4+@x@R=f @*?qT6B !Q#R_q-T<}?kT<!Q}?qTa4 c4*+7<} @_R +qLT@%+{S[cks@W@X@A6@aR ;@ *@R@@94q$Q DzITqTB@9_qA T҆$B@9@_@_q`T T@9_k` Tc@@!с ^7^5[B*SAcCkDsE{ߨ_@`@@9Zq$QDzIT[$@b$@q$QDz(T_@T" @9c@`!с/@g@!!zY @9q$Q DzT@_@T;$B@95$B@9@/@g@_qTAQ?$qT@ @9qT87>w}@@R$B @9@ AQwx~~@/==B@9@AQ#qT>*}`@8*c C @9cQAQ?$q Tk_q@T_q T_HqTFLQ!'$ ! ƚ? T_q T_q`TqZk@4;@SC@Q[?@9k;C_0qT@9@RoT_ q TT_qaT*ol*_q`Tof@9 RoR@  q T*_q@T_qT_lq T`|@{G#@_@{@@Tc@@р@Qq3T!! !X`x`! RA ? qT_q T*oAQ!?qHT*AQ!?8qT&҇S ?!T ?Ta6@9_q!T@9`Ro@9`Ro@9o_qT@9 o@2q@Tq`T* Ro{F#@{@-Y6Y6 Roo Roqz Rcğo@qT1 T6yo@qT q@T69{(#@{@q$QDz(T_@T" @9c@`!с/@g@ e{ #{@6)@{{qaT" ;9;@_qT{@ho@q Tk@5ҹ@#9'9`@9xq`T{R" {Kl9`@9K@q{@Ttq`T&R${ !R`@9"R{[9`@9"R{9?tq$@zT[9?tqaT{`_8*?kTf9` @9{A{!8tqT4a@9qT**Ұk@C5OoSsWs@_@T@9a84Io9W@"#KMK@#GTTC@@ x&k@jTC@h~KK@CG}~CGC;t5#Kb"K@#GO@;g;@4@;D;G@_@ T@9a8A4;@ h&8!Th? C?@;IK."K@G@C%"Ga8a4 k&8@_@T@9@;Cc@`!с/@g@ T_q`Tk@4o@qT;@ C@@x&;@`;@h&8@/@g@9;;!@;@`8 4_@T" @9;CG@?롿Tk@4o@qT;@ C@ C@ RR @/@g@!!T_q$ @T @/@g@lo@_qT_ q`T 9 o@R@/@g@`TYo@?q T?q@TA5 K  =DqZ; RARR@/@g@!!`T9o@_q"4T_1T yqZRR@/@g@!!T!$Q?DqT#c` cXaxa##`C@A@7#,c}C!_d DqTA@!#C@A@7#,c}C!@_d DqTA@!#C@A@7#,c}C!y_d DqTA@!#C@A@7#,c}C!@y_d DqTA@!#C@A@7#,c}C!9_d DqTA@!#C@A@7#,c}C!@9_d DqTA@!#C@A@7#<c}C!@_d DqTA@!#{C@A@c7#<c}C @@={¨_d@DqlTA@!#C@A@7!<!|#@C>==_d@DqTA@!#_C{Cc7RR7rS[RksC &8R#bN@_qD@zTsZ#@@qT@@q TsKsB T*t~@ {|7`T`@ /6s4Kk T"@ "G4A@$Q$qT@ @qTZR#RA@ RZ3AO@* Q|q Tb & 7?qa TA@ Q$qTA @?q T@5Z**K@ARZ3AX R@_O@Q|4@ـ"0K@ـ"G0@xqTtq4@tqT5 @"@5q &T@5K@Gـ"@qTq (T@4??@G cW@kG`?@&٠q,"T@4Ҁ?`G`@&٠?~G75K@G* 7"@_qT_tq!T R?tqT  R?qT"@#c*?kTb@c_tqD@zT_qT`@tq@zTb_kT?kTBR R@kTA{<?@@j!Tq!Rן{kT`@T9a7a@9?@!?!~Ӄ@qTG@W@@ 7 @@4?@T?@G@!?i@G@@5@q T` @?qT`@`*u@q@R *`5@5Z_{NKk,T:qRsҀ!3!R@@{@SA[B_Ѐ!A``K{* !  @{¨__ __ __ __qT{cA|}SC[O"# k! `@b@Bb!T7@@#@SA[BcC{ը__{S*[ck9Rs? 9?@7sQ[O3tqT3@aha{?*7?77@*{@SA[BcCkDsE_s Q{S**[cks?G˖h@C!RwO R"K&B#šVZ'"R`T~}7?@kc?qMTqsRן7@jTC@s_˳?`6?6w@wBB*5BBB*_qT _qTBQ"RV'šT34{@SA[BcCkDsE_w@cG@,{@[B*kDcCSAsEHE|Eѩ {sC[kScod@CT3**$7@#Q_qTRK"ښ8R`&z"ښS@9? BT`@ `TQ&7*z_TRS?7@qT`9Rӓ@?T* ӓ7s@7@B 9t"Ț8R3?hT*RSU*9qMT QӓsQAs@Ҁzs` &R#`ӔS*@&RS_qATa!!*5!!*?q T"Q ?qT&š9qT*AT{@SA[BcCkDsE_**RAKs&*"3&9*qTAT*_/{[*S K*"R/#@K@@sSA[B{Ҩ_{R{_{"R{_BR{S#[*_S*"R+@S@@!!s@SA[B{Ө_{[*S Ks*"R#@K@@!!sSA[B{Ҩ_{S#[*_SS*"R+@S@@!!s@SA[B{Ө_{[*S K3*"Rv#@K@@!!sSA[B{Ҩ_֡%L@R@q,@c0h$80@T@q5,@LD@dÐAT_` b@9"9{OS[r~!0+*~co~~s~~~s`@ 5*"RC6G@o@@BBb U@SA[B{ר_{R{_{"R{_BR%L@R@q,@c0h$80@T@q5,@LD@dÐAT_` b@9"9O{S[c~!1*~rco~~s~~~s`@5i*"R6G@o@@BBb USA[BcC{ר_ҿpR{R{_z$B@`T?@ T$@9c9!kT! #? T%@ʆ $T#$@9c9!k!T_H|@g})'}ߟ!cB@ T`@9k!T`@9kT&|@@}g`|ߟbc @Td@ʅ$T@9BkaT_B@9B$@9!k T`KR_!$&{@LS[CckޢL_`Tjb8BF} zah$z!8 `T BA?bTdhy8ja8kT8T8# `T BA?bThe8ja8kT#T#:?Z9f4` #T_8Fzac$6}@h``T Ҕ "Tjd8jd8k@TҔITѣj`8j`8k@T{@SA[BcCkD!_{[C S( TA@9A@ Ts˟T TT@T[BSA{è<@y$@xBZZB<<TkT@8 *<kTSA1@9@9 @9@9<S @9<S@9`*`* *@ *"@8@*\S?TkATSA$ kTSA@D@BZZTkT@8 *kTSA[B{è_SA@T&T @bT`#@@T@T@88f}hah!! ?Tc@h`8"h 8T_@TcѿThc8ѡh#8b@ сh`h Tc@cрhc8h#8{  @{¨_B!_T@9BkAT_4"_@T?@T"@9!9b4ߟ! #@bB#_@T"@9!95_{# @T"B!?@T#@995b#@9#4E}&%ߟ! ?T$@c$TBs @9!`9@5R @{¨_{Ss@9*4a@9A4_kTq*`@9nk@T@9*i*`@9*e`K@SA{è_{Ssc@94" 5@SA{è_{S`DSA{¨_{ *@9?3k @{¨_{!r  T @T`@94kTss @{¨_&|@ߟ|`@D "Ts"s`@9@4kThb8#hb8BkaTc5RK_{ ! @{¨_{S!@9a4`@95@SA{Ũ_R$a@9s#Fӂ 4zcBz#ca@9"FӁ4zbA$A6`{S~SA{¨tSA{¨_{SiBTbR@SA{è_s@RsUj38{S[`T SA[B{è_={ !B?@T"_T@9#9C4!B!@TB@9#95@94F}ߟ %T@c%T3?9 @{¨_!?@T"@95ߟ! "@Cb"_`T!"@95 _"{S[Vsb@9?*4@9$@z@T_kT*@9kTb@9* *@9 `K@SA[B{Ĩ_R_{Sba8Ta@9sa59@SA{è_Ehc8$hc8q@Dz4Cc!T@K_RR{  @{¨_{S~j48@SA{è_{SR4`SA{¨_{ a`j`8 @q {¨_{S*Y*SA{¨{S@sbj`8cb4aj 8SA{¨_Q$_qT@85BQ_1TB/#@9^@LLC4"@9B4&"@9!EF š4xecx%!"@9_kT ca@9"FӁ4xbA$A7`_C"B/C${^@LsSckL{bh#!{" kx8F}Ӂ 4`kx853@?`T!!@#Tdha8#k`8k@TT3 B3 [3# `T BA$?bThf8$ka8kT#T#?3@33!74 @CRT?#T{`T`_8AFӁ{a!$š6B}ӡjbT_A#s_B#B#kb84djb8k`TBs_TB!kb8`jb8?k@TkFs[B[B{@SAcCkDsEC"_{ !@95 @{¨_P@c@94@94d @94@9A4f@9&4 @94a@94 @{¨(c@y@@xcZZc<<A@8 *<A@94kATBf@9c<S@$@8<Sc`*`*d * *A@8 *\SA@9A4kATB@4@c@ZcZA@8 *A@94kaTB ѹҷ{S[u`j`8@4Bj`84!j 8SA[B{è_Bs{S[v`j`8@4j`84!j 8SA[B{è_S@s'R'Rhc8$hc8EQ*_k!Tb4c$qT_q hh8Q qT hh8Q qTjT@QQ$qT?$qIT@K_*hc8QcQ$qT$qHT%hc8$qHT!K R@9!$@8$8#8C,T_{SDz` SA{¨_{S` SA{¨_n{S_` #SA{¨_{ 5R` s`@4kT @{¨_hb$hbBkATc5k'Z_#hbh"B5_{S!@4@4a@4sB@SA{è`B@SA{è_{S `~3SA{¨SA{¨_!"@5 B_{ST[sѢ@*4a@?q@@T_kTl*`@ikT@*d*`@*``KSA[B{è_R_{S AD@sєa5_@SA{è_֢@B$@q!CzTk Z_R{ BD#@!c5RC @{¨_{SR`BSA{¨_{ R~`aja @?q{¨_{S*w` T@_kaTSA{¨_{Ssa@a4``@BSA{è_{Sc!@4@4@4`@ 4s{{4`z{{5sE҄[BkD?`T!! T{c{`k`TiT4B4[k# `T BiT{d{akT#T#? ~rt4` ~`@3~73@RS (T7@ B{b4dzbk`TBs  T?"#c?"TA{b`xbB?k@Ts[BkDsESAcC{Ǩ_{S[?v `z``4o~ ja4j!SA[B{è_S@S8@BkaT_b@B#@!k T ZR_$xcx#c_T_`TT #xbx"B_T_$xcx#c_Tx#c_T_{ RBA;"U2eB#C AcBEa 8!T @{è_{["TSѴB 5 R8R4sqT@?DqTBSASAR[B{è_SA*R{S*[*)Ta~@?TҔB@5v@Rz  R**0R`6sqTj@?DqTB@@^R@SA[B{Ĩ_RRR{[hTIR9[B{˨_SASѴ!@ҏ5 RWy 5sq!T9+!RSA&@qT9SASA@R _ R,yA)&@! f!2d cB )_?jTRb@B A*a_{R"{_a5R_|@{#"ҟO {_*AR!p*aRp{!RpqZ{_{!Rsp7@{¨_{|@a+ {_R!Ro?qTCR! o{R{_{|@ {_b 2B @9B4_55b6c  9;բ7cR2c  9 *;cq@T@7 *__kT5_օ_5|@H `T ;*7 _kAT5@@7_a_  `52?kTH !"!T{S4|@[*cCa@?Xs?(T*d5`@ D!qBy@ *1T?1$D:T?1RRSA[BcC{Ũ_!@ Ҽ*?1`T RNqtS{S* R3[**"****O@@*SA[B{Ũ_@A;!_!xb _* R@5@kT;q!T_5q|@)yӇ@  H kTT@?kAT;qaT_Q5_@R_Ԩ !| *@_ ?֨ @@5_ s_R?|?|?|_!Rj{4qARR{_M  " _!R_|A_|__@A5R"_5#5R_ֿ;{9 4qARR{_@b5R _5"5_ֿ;D_{ 4@q{_ {SГCqkT T`zC?֓s@3`@`s@`@?s@` @?֓s@sSA{¨`SA{¨_{S[ҜbJuZt~ C`@ b3@RSA[B{Ĩ_րRR_RB@"_RB@"_RB@"_RB$@"_RB @"_R?_@@RDc#_RRB@"_RB@_q"_RB@Bx"_RB@B|S"_RB@B C"_RB@BG"_RB@BB"_RB@B"_RB@"_O{ |=C!C` @R{¨_R?qhTRA_?TRA_RR?qhTRA_!@RA$_RA _R4?q RR_D T!Rba_R# TRA__R{ @7 @R{¨_`@`55`_2`5Gb@R_x@AT_qMTBQa @B*|Rb|_R{S[@"4q4RJTz !4;Rb_B5u5`@ak T;;`@5u2wB;;`@u2`5H !{@T!H Tb@R_qLT_ Q5wB?+!T;;`@ 4H !{@ATb@Rb52;b@d@_k@Qa__kT`52_kTq@AzT!H T@$#R*a_t55u@u@kT;;`@ 5"#RR_ Q5?q T[B*SA{Ũ_`;;`@`5 R H !"T;q`TO@43_3@a5O@H "ҿqTT;;`@`5; R;ՠ @@4H !{@AT!ԮH !"TH !"Tԓ2_ 54H !"!TԍR_R?_R?qT!SRA_{SS;s"U@;`.@ 4`@9qT@@A`@`@9r!T!T!TH!`"@SA{è_@R `@9rT`@9rT R`9!A; V8! rT @9rT"R"9_{|{SS;hV8s"rTAzT`DT`.@`4a@9`!?q TA; V8! rT @9rT"R"9SA{¨_D`@;@V с4@9?r@T_@9?rT@9?rT!R9_{-{SN4; R`.;,  T!RSA{ͨORc@ r === R@ R`@9rT`@9rTSAR{ͨ_{S*4a@SA{¨SA{¨_@! @c 4`_`5H !{@TR_{S@@42a_!2a5"a_!a5H !{@T@R_x@ATSAR{¨_|||!@"xa7R_@! @c 4`_`5!H TR_!R{S[c @ @T@3RA;!Uxka)T@?@sR?(Tk+@ @ @"2_5;RZ@R o@q` T***A@*?kaTxrTq T 5AR_`5A`5!R`_5a5!R`_5a5;AR`_qTa5;TR;#RBRZ`_ 5t5@@R@? Ra_`5?qT3RYRH !"T> R;42_ Q52?kT*@5*o@+ qAT  Rq!T @k!H T;!R_` 5A`5i;AR`_qTa5;VR;#RBRb_"5v5@?T;@a?@"@? T?@`;@Rb_`5_q@TG@"_@Q 5_qTG@H !"T?@;@H !"!T;AR_qTA@5;SR;#RBRҟ_53`5K*@5*?@;@#L@b2qMT _kT"5;@ @`7" _ 5;;@R@! ;L;5H a# To@q TokD+@*SA[BcC{ɨ_H !"Ta@`7"_Q5OR+@kD;@+@kD{S[*!R?`_5a5;@Ra_?qT`5;TR;#RBRb_"5t5@$R;?@ ?@q@@T@C_5D5Q@@Rb_`5_qTH !"T?@#Rb5RRb_`5_qTSAR[B{Ĩ_H !"TR_R?_?q QAzRTb@RBA*a_R?qTC@Rcxa|*A_?q"H !y!@T_{@;SU`NkTs:b;  N  ;Rb_B5t5@SA{è_ N@5;:;N5_Q !H T;NB5_{RS:b;SN5SA{¨_!H T{!RSS;s"[a99`2"@!@a6@?a6@acu; R_ qT5wS` @`T" eRa>@a? T&^#^aFD^a>_5F_q`@zT&*!^;՟qT`@@ pt*R n @!Qa5 9`@ a @sq`T;*;!R6 `@ܽ`B@h `C{S@4BARc_qTa5BRҼ;Հ@4 Ԩ b@ԁ@ ?e{@ ?|@_A;"Z _@A; _O{S[RdI9? =~d4` ckW;s"@94 hTv@ =v@ =C@x K@@VЁC|BAB_ BT@˔CRbRҟn T` CA @<v ZY@[X/\;@O4`R@+@@?v}^@@_܂@A7@;@@?q>"f@_` @"a5!R 9!0RE#:DrJ7@ 4@#ᣀqaRB_5q@T5 @WR@@ e?@cCkDsE*SA[B{Ԩ_:@8@@6:@`@a7TA`@7d@`@7d c@*:` !R9B(C4C@CAR|˛M|@ҀX@G@&8ACRT RmTbRm@5A<`  @0V@qT;nuRcCkDsE@R@+-H !"!TeRbR_6KuRs `@Q`4incCkDsE[9bR҆mTA<cCkDsEH{cR "__qT#5 ; R2/@, @R{è_?_O{S??|?=(@?qן,@$@ (@RSA{è_[ @@a @@s`"ӠRrmT@0qT[BR_RB @"*BpSB"_{STR_<T@Tc"@B`A RR*6@7@@*SA{ƨ_RK*`4@@TR?8*Zv@@{S[w`"@4|@(K5`"ԠtR@*SA[B{̨_A;!Z X`_{S[\3 RqO@4R j$RR**@!4qdVzT?qT9} O@VqdVzT@*SA[B{Ũ_w2@@`"@lR(@_q`TҿR__qTTO|=_!{B;S@Z9@'N**ExckAT`R @*@"x#R@SA{è_{[ST;*L"~}8@?h"@Tc!@?x7k@RSA[B{̨_{S[V;"cCkR9+Q?s"@T:@kshsh3W@TZ>_q@9?j T@9w9x9+@SA[BcCkD{ƨ_{S*[vs"@4`~@~@HK*SA[B{˨_֟qR3@A@~R#td@zTa6@;U R?kTBA_!xA5_@qlTR_{AR{_R_||a!@R_@? @ATR"_5#5R_ֿ;R_{S[k@@TR_55SA[BkD{ƨ_ֿ;U@@qT Ru7cAF@E;&* `87@D2D!|@H 1@T4D1 TT1TqTs$RRR_qT R7@@`7@ @ 5@SA[BkD{ƨ;@ ;H 2ԿD;qTA@a4A @A45*YX;U?kaTcC`R;*Rb_BQb5xrTt@qTC@`traT#45 qTS#b_Bb5a2"_k!T!5cCzF;@ÀU @tkTk`T` 5D4' 686@@bh @Ԣ@a2D_q#!*C_kTA57"G ?@T@<D5R%g6@7?qT@w2`R?kHT!@@4'*!yH !@DG6`R ;D0qaT@5R_@R@_ @aTR _5"5;_֗{S[ck@@3*yr TW;ո@""@ Rw_kT`qTR6b4@@A?@T"3687`_kTt5@ 4QF;մ4; ; 2H 5F Ra_t5_q!@z?q@z T5RSA[BcCkD{Ũ_F!4G!y!@H "TR_R?_?q`T R?q@TR5@R!x_C75@!2_CH 3K;ՠ;Հ5@!2C__R?qTC@Rcxa*A_?qT!4D75a@!2a_Cш #K;Հ;Հ5a@!2aC_a@R!xa_R_R?qTb@RBtA*a_Rb_a5_ q@T_H !{@!T!{S4R ;q T qTbRqT`_qTb5 H !{@T!;#RbR3`_5t5!%?R@Rb_`5_ qT@RSA{Ũ_@_qT{R{_ֿ;R_R_O|=!@!`SR_{Sm@q!T R[;qTa@a4a@A4;d @RR_BQ5xrTN@q!T`@`4x?kTt_B5a_kATu5[B@SA{Ĩ_{SF@qAT R;q`T@!4@A4;Մ @RRb_BQb5xraT+@qT@c4a2b_Bb5_kT5@SA{è_w2;#@`xk@Tk@Tb _kT"5_R`R _5"5;R_@;d@f@xQ_kDAz!`_kTa55q@zkTR_qBx@H !y!@T!҄R_R?_R?qhTRA_@; _{OS~@?|Rd@~?=?3P5*uN@뵒saC@C?k! k a@}@*SA{ʨ_{ pOC!C`j @R{¨_qhTB;B сC@9c#RA9_RB;q(TB сC@9c#A9`5R_{R{_R_qaRR _{S҈<T`Tc"@B`A R!Rr*6@7@Ҵ@*SA{ƨ_R7*@4q@@Rd*Ie@TR@{S[*w`"@sR4|@~@K@*SA[B{̨_{Su?l`"@sR4|@Kf@*SA{̨_B;CZ|}B dh`Tah @@92@9R_?BzT|@kD@TA@!^A_RR_R?_R;տ;@5_a55R_R _5"5;_ֿ;;R_։R_RB@Bx"_B7?qRb!`Sa_{R"{_ {c*k[_gS[ӂs g7C RR `7DSA[BsEF@EAc @z!?1qTqd@zw TR!|5R?%3 R_q TR)w` 5{!RwR"SA[BsE7*#RbRfT*A*>dZR`P*T**#RbR 7f*?@ T$ @ 4=<@  4 gw@q QzAT_q`TRARrp*`6'@qT0654B B   6R s[)b7!R8C77@R7@ns@ARrF*6@DqT@ւ)K?@a7C!?SA[BsE{@cCkD _*2d7CR@A?TsqaT?@ya@@!cad@SA[BsEҦf?@R`7Cs?y@{SЀ4C !`"__TAT`@Q``5|8ҁfSAR{¨_ր/@ {a R*{_ֿ;Ղ@@@xk@TAq x__kT5b7*_qq{@H !yBԟ!@aT!_!Q5_{S[q? 4 Rc#;!qT`@x@aT`@ 4t$R;c0*RR!R*(5@4x @_B5`_5u5!8#@cCcC#@RSA[B{Ǩ_;#@x@TbQ _k!T"5_{bR"{_Sfҡ_A;N!U?k@T_{Ss:@Z@;8C!8 @{¨{S"3@1+ TG@? T@T`C BPC!LCc! "[SA{¨_s_  TccCѣG?z3A|CccHc*d*$TAT RR#R( Rp'<0RB$&r|#BKB C@&_QB|@TBQa#R#0RQ#rpR!ccaz# X@!d@xa%`@&9?d_T$X@xbB9D4B"daz5Tazcc%L}"j!@?9_TB2<Ҹ@Tazt h@` @ 6!@A@?@ 4!RE7cCSA[B{Ũ_{ OC#+ ) C 4AC=?={Ѩ_AC@R=_=D@R!,D!R{S@`@ysb)T A @A@@P@@ySA{¨F@`J@SA{¨_SA{¨P{kwS["cCss|*@(T"|@hTR@6@qhT@' 7 SA[BcCkD{Ũ_{RS*[ @9 52Ҵ}SR"͚RՀR R!4*$`AJ@9  e5m@@9# dqaT!|S*6SA[B{è_*7B4@bA(@* * @y55@9# qT@{kS.R[csA@[V#@S3@_ T 2<~}k_4RFx@ T{,Td@Qq(T`*q"T@} @`47@kE.BF!|}TKhak@k`ӤR| jdy hhKh!d@hh R|!j`y q`T@9|Sd5@@@qTqTT qTq TqTq"T"@ F@9|S5@qE4@Eqs{/# S'S@/H#Is@{@!kb84B_D T@8`1!@9@9?kTA5!"Rs{/# S.S@/H#Is@{@_)T^ k~8qT _8q!TRB2?h>81B>@9@@9k!T@5"Rs{/# S@@9B5 @94 @yqBz T@?@QqiTРA@DA?֠@ 4=AC@b@!x!BGa@@ AG @C@@CRA@lE?HT@@B h({<d@t5xr@TG@h@T`k @*D4РC@A@A?!RE!q TqTbh( [@ h(@@h( TD@lEhT`h(b@@B@7K# SS@7GKH#IA@@kD@, h(@@CAA `?!REۜY*A@A_@?֠@4SA[BcCkDsE{ͨ_Cx{SCkg<`&i%TCAyBQB<_q$TAyAyc|7|@?qT[@;asT[JR*:GrLQ 7?=6`#[@g@! TAyAy[;g@C !TAyAy[`@7`@e@ ?`@ `@ `@qT`@"Te@t@BӥSZ *Z*e@_B !cA`@qTqT k T kT O@5`@C T` `@`@ `@e@ `@7@kg@k8 ) 4*CRGM@TCAy: qTZTsTAy??3)R~[@#Ta@_Ta @AyAy"3 !e@aTg@*CRaM Ta@ TAys`@qAT @e@c @a@`@:G BjB *S{ cU*{T`@bTa@!6b @R:GecCbBC@`Ta@T*CR!M7@@@?XTG@RBM5 @46 ;@z[BcCsE{@SAkDC_֗@qTsE[BcC ?@){cC;R;@\cC;[BcCcC;[BcCcC{S[@0 @ Ta ,@A@:Gc @ˤ@$@c ?cT?! ?T@s4`@qAT`@qT:Gc @ˤ@`bTT@T?T`@Ac!!T?T@?"T@SA[B{è_{ESR@T[cRAT[c: @ @T4R[c!BA@?/ D@9 B53ҵ}Ss"͚T4Y@RրR R'4*r*`AJD@9B  d5o@#_q!T!|S*6@9 q T@[BcCSA{Ũ_*"74@)@* *h @y@9" 5_qT@5@@[BcC@"BA@?[BcC{S"[#.HB@A@a hT'@ C@'z!w@@?/@@c! M@Cҁ HcҤ@@@T@f4ETR`T@!H"`A T@BA@?֠ O5 R9@B95 @?T%ҰB!A6dzbdz"sc Ta@!7@has"h!!RE)@SA[B{ר_{S[U;*"c;k * obj@_DUAT@5#@s4*`B9@5a @cuj_T$!@ @у _HT/@%@B/x /@6sfEa *47 * R`9jt@@@Z}@?֟TSA *[BcCkD{ب{ C@?_T(B@A@a$џhT@!E@x!bc@a@?`Ta@!@@w@B}BA @{ը_7@dU_@B|ě@BABCA@`>Ea:a@#BA@?֠!REx@#?T&c@a@$ !HT@g@y!C@@ 0 6@$x6C@$l6{@!l6@ޟ#@T!@!@(A@?TB@A@,_.{SR[cks`@9`4qTR.@`ka8bha8!_kTb5.@ ӂ._RZ`@9q!T` @9qTv51Rd4`@95@9`4O 491 RN j`T$R‚.c*!$D @5R=R*7*X(7 G!E3 @0AE@ E @s@c@bha8`ka8!_kTb5{@SA[BcCkDsE_TE *%9#%`n@R`n@`r@R 74"2@4`r@s^@A:A T`r@ *T`B94 @9 5 `%@TT_k 83L@`r@?PqhT'{2`@33@ RB @9)ˡ43@@9qAT`n@`r|n@|ˣ73@7@!`@9q|R#8 1!TE #*8ւ.@@9qTaR <|B%c VR0*6@q T@"!#@9qc5?T*lRa\5S@  ch<8@qTA*T4T`TsE}*E!@$E`@R` s@aN@?TaR@?!T`@[T*cO4*]x**V3"R! &!&"R@ O 4Ov4@R_tE|B c` ~@Ba! ҳ .ҩt^=`O`a9<T`@R>`bz@fP qE~@vEB A!! bt@a qvvE vX!}CxE aC``@x E3AO `4d@ R!$>V&N` D!5:`>3{[X@[B{Ũ_SEck_`T @ A @! @!@3@_A)T+Z@E`T @b'3<>Z@@&BA@?֠ O4 Z@ x6 @Z@ x6 @sBThsTz"2@@hz`h @2@#A!hz`?@`4!REZ@x6bSAcCkD{Ss,Д*[cRK*"R"%U;E"`B9`5s@3bj@_DUTa @#T$!@ @у _HT'@%@B'x '@6@@}x@W!C {w?TSA[BcC{ר_{7*{,,{*{ `>EN5`>E!@>@T> @{¨__{S[3@s 3 b@cGС.B& "dp@y$0dl@yc@$ B@C@`TA@8.k@_T&c@b@bDџhT@ š`@x"LРE Td@c@x@ B_?T9} B.СB}B<B||c"v" ߢ9R!@(Ec@B@?ֿSA[B{֨_{SB@C@@`TA@8! *A"43;@7R.!`(E@SA{èc@B9} {CS[ckCs@cG@;Bb?T&@@u?xhTK@ ՚@!Kx5@_Tb@,A@ ,K@! c@D;Հ #@T !R9.W@@p7@? Tc"$K ha0fN_TO_AT@(?9Ѐ)"@b!A@_qT_ q`T_qT@ @b|@b@b @`"$@aD! x`D!. 7@`"$?b"$C@cй7;`"$Qз  H.D@[V@98@!@)f4@G T с`!(!@9#@9_kTB5!R`)7`)B @< @9q7T @9qa7T3 @947@5!Ry@;@`y@ `9C@һ5 ;@9qT4;@ ˀЀG@!O(?qB`3!*@R R!?y@`@{Cy@ !)Ҏ5 '@9qT5v@vy @{C6+y@!){5 @9qT 5`@? #?y@@s@"G@!+@RK Rc@G@!+@RC R_T@? qaT@a.!,@ R0$F@ A@x@˥!@ ˹Щ@!' &c&wp!y@`"$X@aREE$|@94qTITqT9ғ|9<4QcqT'ܚ6@8'QqT{@ @ 4@`T#R@4C4@@TZCC@C``@bl@yap@y`bp@y0 @!@al@yBb@?qT?qT@a!ˁ`!@cB,$R9XТ!E@ c"$B+`@ "h!`@huhah `@BhuVTs"$< F$wE<"AcpEC` @BH T!ҝ`@"wE"l4_ T 7O@5O 4R@@!-@RUR9} ԷRЁ"R!-Ed.T!R"R!.X.T!RУХ`+DE"R!-b ?@@"o@ `@$l=;С5 *4S;շ@a" T9} ;@` `R*7w"$*.G@@cD!Ob@`o!4@R2@B!D {S[cksc;c R,r"!R _N4/!A ?֠ _@ E ,2c@c@Tc@G@Ҡ_@{@SA[BcCkDsE _֠E!xEBEc@!pESAWEO)uE#aE7GY7@*5;@!E__@ _@`Z@` _@N 5[@>?B95c@#Rf 4@?4?@7@" @_ _@_@!@@3@_@_@@_@@_@_@!p@l@?T_@p@_@X@_@_@__@_@ @c@cC@C@xA?G@tS@dpW@CO@"?@_? \DB.$O;@qcA@.@`?Ls@B95R4C9[@ha! "0:RbZ@Bxa!BB9_qc?!Ta!}ӵ4P@BA@?֠ O5[@9#hy3db@b@ !RE[@}}TbZ@}BhaCB95Z9cZ@[@ahaAh$eb@[@*h$!R9E9 @s*G_@3B9T4_@B9 4_@B943@@7_@7@B9 5_@K_@c3@6_@ҏs"_@X@hs_@X@hsB95_@X@hs_@&_@#E4@R%R`T `4 _@!X@!h`_@!X@!h`"4@?T*a4d6_@B9 43@@6E`6@67@7@`>@~`B@BuGcB}Ӡ`B@@E`:cwE! A`pE}#D  G@TW;"ѡ#"xEb@V$@!@Kz]Z} ab@)`wE 9s @STEZ@K@@@?T[@A OS@s ss @@{ @P{TA@ wE?TRR`!@?@AT@#͐ BEB @_TR_{!BA@? R{_{[,S'RS bD @R RRh*@ @@ H!D@c TRC@ cxc6*B`_ TD@C@9e c|S(6#(6c@c CT˟aT`@ @!?CTa2@`F@@!`@`F@ R@SA[B{Ĩ_{Ss,[0SA[B{è_{S,SE[c#C O?*5s@a@c@`@;a2@EyKR#@*SA[BcC{ʨ_ŌiBD???ŌiBD@hBD@9Ō?1]c>SDpH~??#EgܺvT2g jgrn<:ORQhك[ɼg j;ʄg+rn<6_:OтRQl>+hkAكP@p@?e'?h ?pB?;'h?v˨%7H;s>?KďJ?Y.Q{?*.w'?=?\llll?HUUUUUUUUUUUUU?$/@M,!!9ڍ1췃%/?y\AxD"?7 ݨQ͉֗?xiKt YoRP?'`h]D Ѽ?ܣu vz>((S?}LW7Ng[W?A./6)C  >@P\u<36@j꣯NS*E?o@iBD?"@J47࢘1?ŌiBDŌiBD?@J47࢘1?͉S:3E'q?:3E'q?"qdY(@=?'&v?ດ q?0gI/?px# w,?*܁;s>? e= ŗІ:a$a?tiBs8NTVd?gqU8slU:q???UUUUUUUUUUUUUU?UUUUUUUUUUUUUUĬCY?` @|$͋?CoG?@U)/?f? &*pl?!#?Rq1/?Wp +)Z*?g8^?PzU9- ?lQB˯~?d&}Gt6$X5?7{ℎ_W?͋2HOf??wlQ&E;v.?`VΞ?R$]8?w)Y?1}5u?&f͈I#w?3-?y[!}I? ne4w}?._+^Rd}?"#v#l^5n"?Li?SUUUUUUUUUUUUU?@?w@?ŌiBD@^3}'F?[u-O?Nax?7N/8 ?#n#tFȃA?)EXKh/?K)6lv,d? q{k(?8W?u]A]tE]t?bCy$I$I$I$?QUUUUUUUUUUUUU?,ـb΅q@KReI7zk;;?W=oM aS)?o!=h|?cG9٬yCV-x? ֔aQ@{?KɛXuG?-\x2a?0L?u;;;?#qqq??@;@o@BD?_W74@@@  j h@ ④V?0qYA%?p|\:"b?X?_r ɚ;@@p@@d  cc  (  i1D709vfamulimlGcq0qq3UvuUasvEaUVUrPmXD6q/nVSSp7pNDhCR9071IfIReU@@@@@@@@@@@@@@6789:;<=>?@@@@@@@ @@@@@@ !"#$%&'()*+,-./012345@@@@@./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789hprOBnaeloheSredDyrctbuo./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz          @@@@@@@@@@@@AAAA      $$  $$ " "@H@H@@@@  @@@@@ @@ @ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!   !!   !!! !!! !  ! !!!! !                                                                     $1$abcd0123$9Qcg8DyviekV3tDGMZynJ1Xy01@# !./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzxjVp $ν|*ƇGF0FؘiD[\"kqCy!Ib%@@QZ^&Ƕ]/SD!7Ç ZEogL*B9q"am 8D꾤K`Kp~('09|eVD")*C#9Y[e }]O~o,CN~S5:*ӆ    $5$rounds=1234$abc0123456789$3VfDjPt05VHFn47C/ojFZ6KRPYrOjj1lLbH.dkF3bZ6$5$rounds=1234$abc0123456789$Xy01@# !./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/BD7q۵[V9Y?^[1$} Ut]rހܛtiGƝ̡ $o,-tJܩ\ڈvRQ>m1'Y GQcg)) '8!.m,M 8STs e jv.,r迢KfpK£Ql$օ5pjl7LwH'4 9JNOʜ[o.htocxxȄnjlPxq*+,-./012 34 5 !6"7 8#$9%:;&'<(=>)$6$rounds=1234$abc0123456789$BCpt8zLrc/RcyuXmCDOE1ALqMXB2MH6n1g891HhFj8.w7LxGv.FTkqq6Vxc/km3Y0jE0j24jY5PIv/oOu6reg1$6$rounds=1234$abc0123456789$Xy01@# !./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"(ט/Be#D7q/;Mۉ۵8H[V9YO?m^BؾopE[N1$} Uo{t]r;ހ5%ܛ&itJi%O8GՌƝew̡ $u+Yo,-ntJAܩ\SڈvfRQ>2-m1?!'Y= % GoQcpn g))/F '&&\8!.*Zm,M߳ 8ScTs ew< jvG.;5,rdL迢0BKfpK0TQlReU$* qW5ѻ2pjҸSAQl7LwH'Hᵼ4cZų 9ˊAJNscwOʜ[o.h]t`/CocxrxȄ9dnj(c#齂lPyƲ+SrxqƜa&>'!Ǹ}xnO}orgȢ}c ?G5 q}#w($@{2 ˾L*~e)Y:o_XGJDl     `  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy P ߼@0?YmÇ^?=``@]/_ ? ;_ ? ======?? ???o?????_/>PCx >??|/?8<~~~?_????>????7?o?????pG@??? {? Cd{_??C ꖪ^alnumalphablankcntrldigitgraphlowerprintpunctspaceupperxdigit !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|x< @@@I<` N 0 o @     `8p0/1? @ !`{B ???p@?C80?0?0`?? 8?`? DhL>4?0?? p?????{??        ( ) _ 00 1 x !"###$#%& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\e?f@hAiBj@kClDoBqErFuG}HIJKLLMNOPEW{|}XYZZZ[\\]^^^_`aabcdefghijklmn---PiQiRiSiTiUiViWiXiYiZi[i\i]i^i_iuvpqvwxyz{|}â̤ڦۦjn&*+Nbcdefmnop~}ύДѫҬӭ԰ձֲ y$9Oa8($3&~+*](*?*=EG***.265OK1(D/-)A)+*)C*'%$L Tt&%@?p P0 `З@‰8AVJdp~ A 0  ZuZ0ZZZZZZZu0h` (@  "'Qow|  $++++++++TVVVVVVVV+++++++++[VVVVVVVJVV1P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1N NN$nN1&nQN$PN9S1P1P 1P1P1PS$P1\{\{\{\{\{y\{\{\-+IHx\{ +(***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++F+%+UVVVVVUVV$+ѲѲѲ׃1P1P1P1P1P11P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1*++++++++++++TVVVVVVVVVVVVTVVVVVVVVVVVV *+++++++++++++**++++++++++++++++++++++++++VVl++++++++++++++++++++++++++++++++++++++++++lA++VVVVVVVVVVVVVV,V+++++++++++++++++++++ l%%%%%%%%%%%%%%%%%%%%%%%%%Vz&%%%%%%%%%%%%%%%++OVV,+VV9++UVV++OVV,+VV7u[{\++OVV9++UVV++OVV,++VV2Wo~~-~9oW~~+++++++++++++$++++++++++*+++++VVVVV9*++++++++++++++++++++++++++++++++++++++++ɬ N1$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1PSG++++++++++++N1P1P1P1P1P1P1P $P1P1P1P1P+++++++++++y\{\{O{\{\{\{\{\{\{\{\{\{\-++y\{\-y*\'\{\{\{ \{\{O*++++++++++++++++++H*++++++++++++++++++++++++++++++++++HVVVVVVVV+++++++++++++UVVVVVVVVVVVV$+++++++++++VVVVVVVVVVVV$++++++++++++++++VVVVVVVVVVVVVVVVV*++++++++++VVVVVVVVVV*++++++++++VVVVVVVVVV+++++++++++UVVVVVVVVVV !"#$%&'()*+,-./01  `0 `0@,$ P!?@??x`?'{? !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV?= >!  @9#!  @  =` @0  \?@fd  ?@ x` @<;@!|<?D`0?3 ~f0@ !@ n`x& @\@ <0( y~m~`< m  1%[B/SETdQsNFe]+8l{!5GVo /F`n 8La9I^No error informationIllegal byte sequenceDomain errorResult not representableNot a ttyPermission deniedOperation not permittedNo such file or directoryNo such processFile existsValue too large for data typeNo space left on deviceOut of memoryResource busyInterrupted system callResource temporarily unavailableInvalid seekCross-device linkRead-only file systemDirectory not emptyConnection reset by peerOperation timed outConnection refusedHost is downHost is unreachableAddress in useBroken pipeI/O errorNo such device or addressBlock device requiredNo such deviceNot a directoryIs a directoryText file busyExec format errorInvalid argumentArgument list too longSymbolic link loopFilename too longToo many open files in systemNo file descriptors availableBad file descriptorNo child processBad addressFile too largeToo many linksNo locks availableResource deadlock would occurState not recoverablePrevious owner diedOperation canceledFunction not implementedNo message of desired typeIdentifier removedDevice not a streamNo data availableDevice timeoutOut of streams resourcesLink has been severedProtocol errorBad messageFile descriptor in bad stateNot a socketDestination address requiredMessage too largeProtocol wrong type for socketProtocol not availableProtocol not supportedSocket type not supportedNot supportedProtocol family not supportedAddress family not supported by protocolAddress not availableNetwork is downNetwork unreachableConnection reset by networkConnection abortedNo buffer space availableSocket is connectedSocket not connectedCannot send after socket shutdownOperation already in progressOperation in progressStale file handleRemote I/O errorQuota exceededNo medium foundWrong medium typeMultihop attemptedRequired key not availableKey has expiredKey has been revokedKey was rejected by service d'@B  !"#  !"#/bin/sh /bin/csh LC_CTYPELC_NUMERICLC_TIMELC_COLLATELC_MONETARYLC_MESSAGESPQW+J= X>?      !"#$%&'()*+,-./01234567      012345789:;<=>?@ABCDEFGHIJKLMNOP6!%&'(VW$#RKLMQ    ,-.>/?<DFF;)* HIGGEAA@DEBC<=     ]Z\[]YXIHUTS123456789: +,       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUKY"[*ED3(,/M/!15)F-!)/E"/Y/<"F///&6&B%"*(H /G /DOH+5O,\% / /-,G /UR%/>=E*.).///*/QFQ*[\]A#-///,-///7O//)%$!/4(F/!/D!@-) /#F"N"/&J#/*?KY('8PF/ $K&%/'A- &V0#")/+B#,-!(/,$/&/M'/4//2/0/!)*/./R'3/+/B-W,/1/4/-/, 4X*M(S-7)!C28/=/;/6/!9//?/L//&(G/O)K/E/N/1 #;&&?M/<$B/UT@/9H/N),"D/PA/I/C/0-J/ .EOO/P/T/-/)S/R/V/U/C#QW/$!D#UX/Y/[/*EV'Z/$",]/0\/#\0.00%[ ,*0-000- 0 0 0 0') 00 0S0005/0]0,8+000000SZ"GVM0'+%$X00=$T0]% 0 0 'W.!0)!P$R"0#0A%>&0\%0%'0ME(0 *)0*0+0H+.0,0+-09(/00010>$50304020B60I+C-7080990["-?$$1:0S$;0=*G[!=0C%>0?0 @0+%Y/'A0@$.B0 )9C0E0D0R-H'+)F0W,G0H0]$I0]SJ0(NE#L0!NM0N0 K0P0*CO0T=L&S0Q0Z(IZ0CT0R0. V0U0#?[0 -W0\0Y0X0.-X"S-T7$D11D- .1Y115*#,8)14O%1 +1F) 1  1/ 1   1111:Z=+G+V%P)111111+*[18 1:'1111(GD%1H 11@"1'#1;'!M!M%"M&-*%1I&1'1 TL!0P,*1)1 +1P+,11-[-1/1.1>=011121M31S*9,/ '\&GTU'61"0 \$F:1"]! ;191#E!*OE)<1=1(%F'>#%+X,&$]F1B)*<'E1=@1A1C1D1:@ )B1>1B?1.Q)G#AOG1<%K1]UN1L1+I1R1M1P1%+Q1S1U1O!.J1H1T1O1W12Y1]12Z12HX12U2)(2[1V1\1'2V222H* 2 2$ 2 22A$ 22,222"!2N!22C+22222 2%2!22&2 (22\""22 MD#22U)2'22 ) $2S#-2+2302*2.2,2+/222725242"$123262=A2[=2;2<2>2 8292Y@2NC2?2B2 )4%'E2D2$F2I2H2G2&J2K2M2L2O2R2P2N2Q2S2T2U2V2W2$0[,RW#"X2.=Y2&P[2Z2?)\23]233V?33339$3>." 3 3 3 3C0* 33 3"39#3A33333333333C*J333!3&G5("3\<&OJ8*%W.! 3#3#!$3%3'3H# S@R)K'$E-3)<-S)3 ,3B$($C$',#((3U$*3&3/.3- /3G)\ %#13.*2373)63033353()83$"TL:393G;3=3<3?343A3@3>3-03 B3LC&:#D3C3E3F3G3H30)I3%J3,(1'!K3J++M3F!$!6(N3O3ZP3/Q3R3AP?%S)V34 U3:*T3D$X3W3Z3Y3[[3]3"\3)V:$44&='0+& 4$,+ 544$!*)$4D*) 4/.' 0 4 4 44$+(X0144+444 49)C44 4 .+&447(44+=&4(444&44X+4$4!4C" 4"4#4%4&4Q(4'4)4M,4;#$*4-4.414/40412434Y!445491+(64774!84594:4;4=4>4?4O!H!6 E$G"I#T)!1J,@4;*B 'A4%,(CB4R1%+C4D48(F4VE4J4(I4G4K4H4 &,;L4-M4O4]"N4Z/!VT(K,P4 Q4R42!1S4% T4LU4V4?+W4%X4Y4; S%3W'&(Z4N[4].%2\455\]4$!*$'7 Y,555%555S 5 5  C 5+1!855> 555555% D555V)U)F$535Q5I!5"555&5%5$5 55#5W)*5'5)5Q,(55R+5,5-505/5.5G$5652515354575E-855595?:5<5;5=5>5MCB  O?5)@5+"&A5  "13:( 'B5TE5#D5C5F5J#B4)2!#G5H5N*K5J5I5\(R59*L5N5J*M5O5'P5)Q5)&S5T5 U5#,,UW5# >'WK#X)$ ;(X58$!*L#"M&,Y5Z50&[5V- .]5\5&6666(66666 6 6 6 6 6CM#6YU&6Z%:)6 .6)6//T%6<#Y6)/"N#N++666D#6 (%"66666U$ 6!6"666#6 (+(#*($6%%6&6Q+?')6\ (6'6!3!-6+6*6-DX,6+$%06/6.616E26[(:36X' %#$46  (V&565**]:6H"76V 796&8666Y<6B6H6@6;$E6<(?6D6F-64!=6=G6 DA6WF6C6I6K6U6S6P6O6W-Q6YX6J6N6>6YR6T60"L6W6V6!E"M6Y6\677O#Z67X77]67F ,87& @';6 77D+7H$ 7O76%&. 77Z*3 779 [6%!7: 777E77777[+Z+7747Q7"7!7&7'7%7(7 7$7)7*77[#75!777H)-7.7/76757\*37$07-27547+71787#,7<, ,;7?7] X-@7=7:797>7)%%A7<7B7ZJ7H7I7G7E7D7K7C7M7ZO7N7#R7P7F7[Q7U7T7V7S7W7X7Y7I)[7Z7 E[\7+]7"K8@8N888886!,@+*I8OMA'I,8&!)P! 8 8 8 8 8)=(B'88888#&=,888I$8=%8'Q!C' 9Y)P#T*8I"#8"8$88&8"8!8N&8\8PR!88: 81&Q'F(8-8)8\.8H8\+87,8#'8#R*8"Q#3'08= ! 1838/8@)#; Z)-?8>8W]88G%&68< W;858:82&48<<8 --"98;CE 78$&.#=8> @8B8!H8C8E8 (R#F8 ,', D8A8WFG8(,K8!R8L8I8P828M8Q8!'J$J8N8'P<V8$S8?*T8U8-+A\8Y8X8&%$Z8[8N($&P/*(9]8),999? 9899 9 9$ 999999999P9999O899W89989999 9][)-"9%91(>$9#93&&9(9'97%(S)9$>(*9+9,9)<4%+(7D'"',$ -.9//93,?(09!&":19\)V;492959-39Z69!79Y9989:9;9Z[%"K<@ ;<9@9?9 >9+ 6-E9&4E*QD9B9C9J":I9]G9H9F9K9J9O9P9L9M9N94'@()Q91"&R9V9*S9U9T9J'"$W9X9 #P-"J)*:Z9]9\9Y9:=%[9:K:*,W&::::)' : :PA 71  7!&Q/M ,])]( :R# :.* # :[::9++U*;*:J0*:::X?:::XZ,(?!<R:-$: !:Q<+::G,!:4&:K$=9A9.&& :#'&:Y':#:":.L*2-F*+='.%:T$::.+:):,':-:3:'! )5:(4:O&*V2# ,0:/:1:.:6:,:*:2:(:K"W+%SN* -#)%(Q 8:[::S@:=:R* ).;:D*L$9:%<:>:, *A:XP*B:(N:C:T:D:!-K:>&S:F:H:J:I:E:P:L3G[,G:S# ?:O:@M:Q:M$];(+V:\]:*;;;X: "N$ ;[:;; ; ;/.U:;7W:+\:&#R:;Y;P;Y:;;Z: ; ;;-%;;;7#+,U(;)!; ;!; ;N%;I%#;;';<?&;*;;;.9;";F<3;.6;5;4;1;%;B;$;7;/;*;';(;0;S-;'#C +;&;);,,I*.;8;@;9;F;D;?;>;/#D <;:;A;G;T'M;H;K;E;S"(;;C;.+W;J;>2; O;V;XQ "L;Q;U;+S;*%R;T;N;P;?("[;Y;HX;<7:Z;\;]; <,<<<5<<<-"< <O(A)#.T/Q-$<%<=<@<@+A) =(=$H0#=!+=1=L@=:=S.$5=>=7= !.=0= A=<=4=;= +9===/$"3=,6=/=Q$2=8=0.]*B= 'N=?D=-!Q=MO=C=I=K=.,F= $H=P=J=&+E=]=IG=L=M=K!9!U=[=Y=$>V=W=?=X(V.S=>HE X& Y-+1#Z=\= >X=R="H> >WB@> > #>8#+>>> >>> >>>>!>>>>"$>>BX!>&>>>>!>>I&=S,> >T!> >HN$>(>&>">#>'>%>-(->*>)>,>3%.>T"L!/>1>0>T=2>F%3>/S$C=1.EI5>4>8>";>6>:>9>$8T-=>?>>><>7>*A>@>JC>)B>+& %Z-I>XE>J>KH>@&D>G>'0'K>0YN>F>L>/,O>S.P>Q> &S>T>&T$V>X>4-U>W>LR>:2Y>F [>Z>81\>?M>]>?Y&????=#??? ?>B(K+ ? ?5  ? ??1)&'?6& #?FL%++.1* )?"%?3???????''?T?????0 ?H \"?#?!?L'%%? "$?.A&(?*?'?3+)?+?#-/?.?U" &-?,?,,0?MUA1?2?4?"6?5?7?,9?8?;?:?-+I@G-=???@?0?C?MA?('B?]?H?DE?\,-U!G?I?5-6[')&J?L?O?K?N?I,P?OM?;-S?SQ?T?F?R?U?V?],W?X?D?Y?#Z?[?\?@(@@@@@@@2( @@ @ @ @ @@@X@@$2$@X@0,B)@#$,"*"1 #G@@@@@!9@9 ')'-@@;" ' (@ -,@@5' @!@:U&@#@L%"@)@$@%@(@'@(! *@+@,@.@-@56@G'0@2@4@5@3@/@1@!((8@7@9@V$:@*#<@-;@H A@C@D@3"B@?@=@>@@@G@E@F@H@J@K@L@M@I@O@N@P@$-S@Q@R@A]+))U@T@V@W@[@X@Y@Z@\@]@AAA'/$AQ&(AA $#AAA A A A AH' AAHRAAA A5&>*-6AAAO$<A +A%6'AAA;+4+#I AA)AAA\'&%A"A+!A#A$A A&A'A#BD"(A)A,AF#%-A2**A+A0A/A.A2A1A3A5A4A,)5%-6A%7A8AA?A@A+AAO+BA-"I&J"CA/DAEAFA4HA5$5-**&6$;JA*-$'LANAJMAU#PAKAI'K1.OAQA*)8SATARA-ZAYAVA\AWA7'UAXABB@*]AJBB+B" BBBGAIA BBH-1 BB,BB# BB* B B &,(6W$BB(B7. B1V#)BYBBB&BBB82$%CB)"(BJ'$ B!BH& B@"B-;"BW##B& +($B%B4"&-'B&BN)BO,B*B3-+B%QE)-B3*/B0. .B0B1BV2B.4BIE5BT6B[,%?T7BA"J 9B;B8B:BB?B BBUAB@BDB=BEB-FBGBS3IBHBJBKB-LBNO.MBNB6%OB"PB"QB0<"'RBCUBGTBCSB/WBXB $YB=9C([BG!VBZB\BZC ('X$9CC']B="Z$Y$UCC C C C C CCCC.)4CCCCR&+CCCCCC("\'C'@C.'C2):"CCCC#%%$C#C C.)C-C*C&C'C,C!C41(C"C+C1C).C/C0C3C2CU'4C[-L)9C6C5C18C:C7C>C;C-8D! D1D ' D DD/ DDJ DD)L,DJDD\$D DCDDDD0!DM %D!DDDY<D"D&D*5+5#D$DD"D)+D:K'L /-NMD'D]#D(D*DX#-D)D3)**+=,D\-+DNK%.D5D/D6D2DZ&)4D1D7D0D#*+3D?D;D>DE]-AE@E?E#BECEDE.EEFEHEGE'X%.'JE2 (KEIE-3GM' "*NELE-.HG8&>SE"7&:!UEQETEOERE*4\PEWEXE%F&H'%. +VE32YE[EZE\E"&#FF]E4D(FF/2.FF FOFWF F#) ;!FF F F F0FFE(K*(FFF#*FF FFFFF&FF$FF F!F!#F"F%F&F'F"H(F6-  I6")F*F+F,F-F.F/F 90FD1F*2F/3F=); 7P( 4F15F+'CF7F(!T&6F 8FY#:F9FF.@FAFBF(-DFOEFFFGFQHFIFF(&KFJFMF-&#5*<;LFIPQFI-G]AG/G4GM,=G4, -W"JQ(CG%"MG5,BGHGKG +NGGGJG*.RGYGQG"0G-)+XGWGSGTGVGPG4#UG]!")ZGH8']G5(HHX(\G5G[G..%R( HHHHU&HHHHH HQD% HHH H$S+X+QHH-.HT,HHHHH%H,' HRH!HS HH"H( HHH<<$H#HU,A%H&H'H63)H<0T-R*H+HM",HY%B1H2H-H.H!&/H0H:H4H7H3H5H6H78H "5!;H@HH'(9'AH\!KHGHJEH *FHCHDHIHLHJHHHBH7"SH +QHRHMHOHPHNHE.WHXHI ZH]HUHTHI;[HI\HYH#VHG&I,II IIIE,I I IIIII IIIIIII !IIIIIIII!I I9H%I"I#I$I&IK(I'I3=)I0*I16+I4,I@(-II4I1IN"2I/I=.I5I=!;I7I!6I9I0I:II:U-@IAIT -BI,CIDIC)EI-JIKI7IIF,FIHI]GILI)NIMIK *OI[IQIRISITIXIYIWIUIPIVIZIO]I>\IJJJJJJJJ6,J)%& J J   JJ & J/ JJV,J%JJJ0JJJJ0JJJQJJJZ#J65 J%JJV! !J"J8L#J *>UT+) $J&O"9%J(J)J!!'J:(&JK2-J7ML,.,J+J ,".;*J/J0J.J7,N&3J!",6JK2J7JL4J5J1JA(%"<O'"#:J8J+" 19J:)-.;JFJ#EJBJJJCJ?J[#>J-'$K24#K(KX"B+&K'K )KB&>!P'$%K&*K+K.!#$.P*K!;K W%/(.KQ=D& -K,KI( 1$0K1K7/K2K3K5K!4KE7K6K8K:KK1?KU @KAKJ(BK#:CKPU !FKEKDKLKJKGKIKHKKKVOK6PK8MKNK.# QKTKRKSK8,%WKUKVKXKL[K\KZKYK\#LLL]KLL LL7L LL L L LLLLLLLU+LLLLLL'LLLLLLL L5!L "LO%$#L&L%L$L9'L2)L;(L1L+L-LD)*L,L0L.L/L2L9&7-3L,5L4L8L ,7LL6L;L:L9L$LK?L@LAL(BL CLDL1]0ELODFL" &GL4)3#]" W*6=@5)HLJLIL?U%KLV&$LL1NL!+]LPLQL(#?!V %OL4XLULM%?"RL]#2$SLWL?F&+#!VL !!TL.YL@!)[LZLN\L(M:%J8"WM,6)@MMMM%"BMMS! MR+ 9, M $W 6 MMD M C*-MQ'MMMCB3MLMMM,@% *M8MMM$I8.MMMS(3,3$MM M$"M!M2%#M?:&P"QK$M%M<&M'M(MN,*M)M9R-ME,M+MH!N"'.M>1M/M0M3M2MY4M5M6M/'2@7M8M-$M++-9MA:M$=MW*;MMBM>%"FMCMEMAM.NDMJ-9NM$IMLMJMOMPMHMUMSGM 'KM?:'*C%% SMMMRM"+#TMQM XMWMVM*ZYM>)3%(Q"W[M< ZMLMNNZNN2$(A.]MW.NNN\MH%4$6# N""NN  N N@XNX )# NN"# NNNNN $NNNNNNNNN NNNA %N$N"N#N!NW!%N&N(N4'NY+3N)N,N*N+N-N/N0N1N4N2N5N7N6N#F+8N 9N#):N 65;NN?N74='AN@NBN;ENDNCNFNIN&GNKNJNMNLNNN %ONPNRNQNK(SNTNDUNVN(** *!WNL(ZNXN>YN!$)\NO]NO7[8OE&OO##,- %[N-:,X-A!FO N5OOOC<B8- O M O O O OOOK-OO('\F,L:OOROOO I51VO-P% B)L-J,O$$ZOO+OM-OO!O OO"O#OY A$O+%O&O .:'O(O)O-O*O+O,O.O#V+$/OR'0O2R++1O2O3O65O86O7O;O9O:OR8OO?OC@O&COBOAOPJ;)DOEOFOGOHOIO9JOKO&MOPOOO &)#?F;ROQO!,G1';%[--:UOTO** %/VOSO0(I,WOXOZOI!:;YOHI$?-;[O\O]OPPPV(PPPPPP PS'+E P P 1<2'ZS*] P>+ P;,! PMPPPPPPP:PPPPPPPP!PPP P"P!R#P$P@%P.&&P'P9"J%(P\&+!7MNR"-PON,P*P+P)P7P.P/P0P1P3P2P84P6P5PZ 8P,!9P %:P?P=P

P;PAP@PCP"BPDPEPGPFPHPJPIP[KPLPMPNPPOPPPQPRPASPTPUPVPWP'YP(ZPXP\P[P]PQQQQQQQQQ Q Q Q Q Q<QWCQQ+QQQQA*QZ.QQQ )QQQQQQM* Y Q"Q Q#QP!Q$Q%Q&Q*Q C!+Q(Q'Q)Q>/Q.Q-Q9Q5Q6Q2Q8Q4QA+.7Q3Q1Q0Q;Q>Q=QR?R@RARBRCRDRERFRGR$<IR, JRKR(LRMRB9KLONRORQRRRSRO-PRTRURWRVRYRZRXR-[R\R3B]R SORT)*U;B@CV !"#$%&'()*+,-./0123456789-. @ABCDEFGHIJKLMNOPQRSTUVWXY/"0N000% & 0 %"<<"    000 0 0 0 0 00000`"d"e""4"2 3 !+!B&@& ""#""a"R"; &&%%%%%%%%%%%!!!!!0j"k""=""5"+","" """""*")"'"("!!""^.""" !0 %%%%d&`&a&e&g&c&"%%%%%%%%%%%h&&&&& ! !!!!!m&i&j&l&22!3"!33!!   !"#$%&'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~11111111111111111p!q!r!s!t!u!v!w!x!y!`!a!b!c!d!e!f!g!h!i!%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%B%%%%%%%% %%%!%"%&%'%)%*%-%.%1%2%5%6%9%:%=%>%@%A%C%D%E%F%G%H%I%J%333!3333333333333333333333333333333333333333333333333333&!3333333333333333333333&2?ARfJ`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2$$$$$$$$$$$$$$$$$$$$$$$$$$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$S!T![!\!]!^!'138@BSgKI222222222 2 2 2 2 222222222222222$$$$$$$$$$$$$$$$$$$$$$$$$$t$u$v$w$x$y$z${$|$}$~$$$$$t  A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO  $,-/0189<@KMTX\pqtwxzĬȬ̬լ׬  ),-458DEGIMOPTXaclĻȻлӻ $%')-0148@ACDEILMP]ļͼϼмѼռؼܼ $,@HILPXYdhԽսؽܽ DEHLNTUWYZ[`adhjpqstu{|}оѾԾ׾ؾ @ADHPQUſ̿ͿпԿܿ߿DEHLTUWXY`dfhpų̴̵̸̘̙̜̠̩̫̬̭̼ $(,9\`dlmoqx͈͔͕ͤͥͧͩ͘͜Ͱ  !$(0135XY\_`ahikmtux|΄΅·ΉΐΑΔΘΠΡΣΤΥάέ $,-/018TUX\degipqtxπυόϡϨϰ-458aha9eiouvv{˄U[QW|(PSE\]bncdd np[yݍ}E~NNeP]^aWiqTGu+^NPpg@h QRRjwԞR/`HPacdkLp/tt{PŃܕ(.R]`bOIQ!SX^f8mprsP{[fSckVNPJXX*`'abiA[}_NPTU []]*eNe!hKjrvw^}N߆NʐUNEN]NNOwQR@SSSTVuWW[]^abQeggiPkkkBlnxprstwwvz}  ߂b3dҙEם W@\ʃTzو͎XH\cz[_yzz&P8RRwSWbrc km7wSWshvՕ:gjpom̎Kwfxk<S-WNYcisExzz|us5RGWGu`{̃XjKQKRRbhuiPRRae9hi~tK{냲9яI NYdfj4tyy~_ & OS%`qbrl}f}NbQwOOvQQUhV;WWWYGYY[\]]~^_beegg^ghh_j:k#l}llms&t*tttxuuxxAyGyHyzy{}}-OHw!$Qe}vO TbThёU:Q Za bbfVq OczcWS!g`isn"7u#$% }&'rVZ()*+,CN-gQHYg.sYt^dy_l`b{c[[R/tY)_`012Yt345678љ9:;<=>?@ABCoDE`FGfHI?\JKLMNOPQZ%{g}RSTUVWXY<\l?SnY69NNFOUWXV_eejkMnwz|}ˆ2[dozsuTVUMWadfm[nmoouCANJZlSuT{]UXXXb^bdhvu|NWnW'Y \\6^_4bds۞[_`PR0RW5XWX\`\\]^_`ccdChhjm!nnoqvywy;zHSMvܗkpXrrhscwy{~X`feeflqqZmNzNQQR TaqgPhhm|ouwzc\Qe\gguzsZF-o\Ao _]Yjq{vI{'0Ua[iv?\mpsa}=]j^NuSkk>pr-LRP]d,ekoC|~ͅdb؁^gjmrtotސO ]_ QceuNPiQQhj|||oҊϑO7QRBT^na>bejo*y܅#bjΞRfwkp+ybBab#e#oIqt}o&#JQRR mpˆ^eko>|usN6OV_\]`s-{F4HaOoyR`ddj^oprv\2ouxy}Ƀ֊X_'g'pt`|~!Q(pbrxŒڌNP[^eqBvwJ|'XAZb\jmo;v/}7~8KRegiAmnp t`tYu$vkx,^mQ.bxO+P]m}*_DahaRQQ^iz}uO)RSTUe\`Nghlmrrttbul|yψ̑БɛT~oqtWgm3t,xz {|idjtuxxT[U^ oNMS)Z]N_ba=ciffn+ocpw,;E;Ub+gl jzNY__g}T+WYZ['fghkdqu㌁EL@_[lsvv QMQQRhlw w}}bnQ T}Tff'invw„iOQRY=^Uaxdydfg!jkk_rarAt8ww((glgrvfwFzkl"Y&goSXY^c4fsg:n+szׂ(R]aa bbdeYifkk!qs]uF~j'aX؞PR;TOUevl } }^RlirsTZ>\K]L__*ghcieee fginx!}+*2 POcW_bcogCnqv̀ڀ)Mj/OpO^g"h}v~vDa^ jiqqjudA~CܘOO{pQ^h>lNllr{l:tPRXdjtVvx9e^S_%RwINPuQ[\w^f:fghpuuyz' O!X1X[nfekmzn}os+u܈\OPS\S[_ gyy/9;,gvNOIY\\\gchpq+t+~"Ғ NNOPVRoR&TTW+YfZZ[u[[^fvbweenmn6r&{?|6PQ@tܑDٙSR)TtVXTYnY_anbf~lqv||}g[O__b)] gh|xC~lNPS*SQSYbZ^`aIbybegikkkklh5tuxxyy|}>船l^ۘ;V*[l_ejk\mop]rsӌ;a7lXMNNNN:Oy@y`yy{}r} фdž߈P^܌fߙJRigjP*Rq\ceUls#uu{x0wNdk^q NkIghnkco NPPQFUUV@[\\8^^^^`QhajXn=r@rrvey{saތ^XtUlaz"}rrru%um{XX]^^_U`bcMefffhhr^tn{n}}r͞ YmY-^`fsfgPlm_owxƄˑ+NPHQU [[Gb~ee2n}qtDtttlvy}U~z9ux%MhSQ\Til)m+n ;-gaRfk~ ]emqnWY['``bf_f)ssvwl{VreNRrkmz9{0}oS/VQX[\\]@bcd-fhlmnppq&uuuv{{+| }9},m4 a7Ol\_gm|~k[] d\ᘇs[`~gm 7RpQpxpבOSUVWXZ[\\%^a bKbcd6exe9jk4lm1oqrxstt&vawyWzz|}}a~)1ڄꅖ8Bl֖ӚS~XYp[[mZoq!tt]__B`ehoiSjk5mmsvwM{}#@cbĊ bSe]']i]_thob6rNXNPRGSbfi~^OS6VYZ8\N\M\^_C`e/fBfggsw:ÿ́fiUzW[_o`b ik\nq{UXߘ8OOO{T Z[T3TUbXXgYZ[`aVeedfhZlopqRs}{2K\lDss:netviz~ @QXdtupv͖T&ntzzنxIZ[[hicmst,tx}UL.f_egjls-PZjkwYl]]%sOuPQ/X-YYY[]bdddfHjqdtzzG~^~p YR~a2ktm~%OPQRWX[^Baimgnnqbt(u,us8Ʉ ޓNQOvP*QSSS[[$\aae[rs@tvPyyy}Յ^GꑅRg_e1f/h\q6z NRjkoqSK1NqĖCQSTWWWZZ[(`?acl9mrnn0r?sWtтE`bXg^MOIPPqS WYZ \paf-n2rKt}Àf?_[U˗OsNOQjQ/UUz[[|^}^^``a ac8e gggaibil'm8no6s7s\t1uRv}8Ոۊ0BJ>zIɑn XkAQkY9\dosbph}Wi`GakYNTm-pclQaOPQ[aadikuwdcpNN O7YY]_[_!`>rspuuy 3Q 7pvNNRpSTVY[__nnj}5mwNZO~OXen8NXYYA`zOÌeQDSNiRU[N:RTYYP[W[\[c`Hanpnqstux+}(Ʌnj̖\ORVe(f|pp5r}Lrq[hkzov\f[o{*|6ܖNN S4XXXlY\3^^5_cfVgjj k?oFrPstz|x߁灊l#υ݈wQT(W[MbPg=hh=nn}p!~ KN-r{͊GONO2QTY^bugnijlnr*su{5}W[Ζ_R TZ[XduenrvMz{M|>~{+ʌd_iѓCOzOPhQxQMRjRaX|X`Y\U\^`0bhkloNq t0u8uQurvL{{{{~n>I?"+ZkR*bbYmdvz{v}`S\^8op|ޞczdvNNN\PuPHTY[@^^^_`:c?eteevfxfghijck@lmmn^nppss:u[wxy z}z|}Gꊞ-Jؑf̒ V\6RR|U$X^_`chomy,{́Dd=LJOFQQR2V_k_cdeAfffghhionogqq*rt:wVyZyy zz||D}p~T m;Ֆe|ÓX[ \RSbs'P[_`kahm.t.zB}}1~k*5~POPW]^+cj;NOOOZPYĀjThTUOY[]^]f1gg*hl2mJnopsuL|},}}ۆ;p31NRDЙz|OQQW[\Yf=jZmno qouz"!u˖-NNF͑}SjkiAlzXafbpuuR~IKNST0W@W_ccod/eezfggbk`ll,ow%xIyWy}󁝂rvz7zT~wUUuX/c"dIfKfmhik%mnshtt[uuvwwy ~~/:ь뎰2csOSYZ^Nhtuyz̍폟egWWo}/Ɩ_aoNOPSUo]]!kdkx{IʎnIc>d@wz/jdoqttz|~|~ }L9R[d-g.}PSyXXaYaaez P!PuR1UUXY`Sbb6gUi5@ݙ,PSSDU|WXbdkfgoo"t8t8QTVfWH_aNkXpp}jY+cw=TX-di[^oniLQS*Y `Kakpll{΀ԂƍdodeNQTW_avhuR{q}Xi*9xPWYYb*]ayr֕aWFZ]bddwgl>m,r6t4xwۍ$RBWgHrt*kQSLciOU`WelmLrrzm_opaOOPAbGr{}MjWs^g U T[c^^ _e=[HOS SSTTW^`bbUclfmu2xހ/ނa E^ffprO}Rj_SaSgjothyhyǘĘCTzSiJ|_buvB9S<__lsbuuF{ON< NUOSY^0flUtwfPXx[P[h``eWl"oopUPӗrRDQ+TTcUUjm}fwyTTv䆤ԕ\N OYZ]R`bmgAhl/n8* NUPTWZYi[[awiwm#pr犂홸R8hPx^OgGLNTVs WSVX[1aj{sҎGkWUYrkiO\&_a[flpsss)wMwC}b}#~7R IoQ[tz@ZOTS>Y\>cymrϒ0NDQRWb_lnpPppqsitJanQW_`gafYJNNN|TXX}Y\'_6bHb fgfkimmVnnooo]pr%tZttv\y|~ဦkN_twje`bwZZfm>n?tB_`{T_^ll*mp}y ;ST[:jkpuuyyqAt d+exxkz8NUPY[{^`cakefShneqt}i%;mn>sAʕQL^_M``0aLaCfDfil_nnboLqtv{'|RWQÞ/SV^_b``affgjmoppjsj~4ԆČRrs[kjTV][Heefhmm;ruMOPSTa?MfV}Y=4{[^Z%6Z[\ngEattu8S6!`>X:zaA 1 ^2 C/0IXJy2z`f)jLt{g,zORF4s]tǟW/ILT1A6Xrze{FnA]{$ȟ$$$ɟ5@ʟDbnp˟11111 1111111111LܾQ+Mkܿ a##E e=NnNߑ5wdO(OOVQtQQQRR;SNSSSVXYY2Y4Yf[[[\^;`eghehNmp5u~~~~~~7zςoƉfgnt|}Fiz'Rx^ ǞLɝ >Lp 35n>uIlyl*$NNNNNN7OL4OH>PP}444QYQQRNyRR'S5SQ5SS5S#Tm5r56TTTTTTU#U(U5?U55U5}%UB  +QU,9AFMS@zw8,4:G]iMd|  d~ d,VDF MGN,g:?5RԗxD-nC`dTL-+w9ofgydRPC h!L1 H?sX-E`L yU@CJf* yc9u'V|dC> *,99:x5I^ RV1, 4=l;Ntu."[͌z4 h(9)5Q?0G OL H =?&2d39v+~  Q,U,:.2PkҌʌTĂUÞ&^w-@qm\re47_Sw5M 6 V'xxHUyPN-TZWv͂{~Q7RI:wA|XhR6=W{h[H,K'It[=1U5V(NYxQ[NN>5#\Q__8Lb5ezk5l:llp+r,NrHR;y|Sjb4KcfQi]SdxxuΘޘc|Ğok7N7b;Pms=NAwp\ KQY50]"a2qgs2<KxtQ @cj#Bo *zGUMp$S~ v㉧wNOP/NO4T}XX^^_'e3iCjcJ[t\Vz{|l~Ϗ_!?q@BZhkgvB=Wօ{I qLtm{]ko[f[~Wny=DV2'C6E\;x\=Q5x]WqXE@#wLx9J4Al̊O9YlV;_ !mAFy?@7FFl|AsmE8TaEEM{LvME?Ka6DDA>]H]V]=8]] 888B^^%__99?9M9`=a\9aaa9,bbbc9V:ccdZdK:d]!V:e:eSf:f";gB;ghX;Jhhr;q;{; iCi\rdiii;i;ejtjqjj;j;jjjjkkkull<mm&mmWn>qWN6it[IzXٔez}zYzzzzqdAzzzAT\ {U{){S\{o{[l{!{ ]=e\{5|\D||H|}fxE|||t|||g~EDn]}nt}}5q}W@)`}=}}m!aZan~~+Cl'~@AG6ybᙗQcah\Ef7E:d/l;mkk5=U EmӃ~4nWjZ4Bn.X[q=DjJI|; qzÎԒ-eP *Iމ==^b2%#9n7Il{lAnaxSIltdJ 31B6J=EEJupA[ՑWJ[_%P00җlTt3zyJ43Kf;uqQ=0\AWʘȘǘJ'mUx9)JrKW ;X%W6՛L-4P4i8}0P@>EZcKB hԝ#ߡ~4hĝ[! ;394MdC`;9=2O7+K$m9VVEbizrKuIIwqIHCQJsڋy~6iD쒁˓lDr>rwCzpsDC~qp5>/T"796tK_#7[W%J6UIeq1>\U>RpD6&og37<=lX"hW@?7@@A!lTVfV ƓN+Q86DNeKOOQVhZ9 54)Ouڊ NP QOOJ>BO.PlPPOOXPPvn59>>rm>QQDzYRRsRzFqC Ii>ttVtsKJ@S5r@UET W]fWWW>6XZFo,ZY~ZZZFYaB6mCt!Z^Z׋tqrI7\\^^H^|:^O[766*Gr4 __'kZ;D[u`~``(+&_>%%soa>F&aau`,-FMqdeFj+):"+P4x.7c[d1ccIg-b,;dkeri;02I2 U2?f21:AU"U[U%Tx1*42d421Bf$mkfK0fpxcf22frX8:87;73t;g*Fhh;jc87D3jRjjkehLj;zjWk?<ˊ܉gm oI?=n<@=Z nGX$mBx;qCvBpPrrrG%GyQJzt>_6JJI_?>J#5?`>tIH2WBdP!RQxw22ww{wF7^:H8tt>JJ@JaUxxxxsYyAwVAy-j>:zynA2A5yL I=n5kUp56 zYZ&ZZ Z[x*Z[zA]|m|B[^^|I||||j}~}Nab\aH{}^jBuk gN5WdcbI'{,ZC] {^Ecj?49Iee'qlD7Dƀ BgØBjbeQjSmrZA@+[Z=-"tZnEOeMVTwwً>FF7=HM_+Be)qpEm}YwYnC6* L0JBXlo!#Hyon雵6/IqUIKb@';+4Et>HBJC>%2fe>IxJ?tkt>AGhJWh&/c[itc>Jjss>>JJfJ$IHtIpvIs_1ΊU5IkqCI V Uy}PJR.E 7IYtZ6[=6_yZbt< J9Pi=L=uqBnDWmO~gpln oo=Qu64F>qHYn>IAkXW6RpbCqJ/#hgi4{673Lj6l>DD&mQmloo q=:타lSpYZaZqZA-7Y<6qfBnZ+ZB+j>6w[DBqYBተO(m\DM~C jVBp3qC=l%OJe~Y/]=\_]J}&T:3~W?p[p]s|Y Orsz8s9sVAsHs>{lqHs> w>lVttt>>>>t?S?Bumuruu|?uu?Mv?tv?zv\Oq#ViX@Cw9@agE@5wj@o@^\wwXxpx@9xGxQxfxH5U3yh2yA AyyzgAzAzyAzzA!Nb{l{{{||`BzB{||B|B|p }}}}rC %9{.1T=WpC *s`uD9;VYZD:X|%D-DWTDvʂ؂DWiipd`E8R;EopwErEFF$Ggy)8QԌG_XÍGN:UTWqU7HΎ򎷏ʏ̏3ęHI(XkCEIQIS->jITy-I3Ig$J@5J—TVJ`KDXQ7B]bpKřK<ziݛmL o7I:PV{ƞܔzDiÔY@X7vWWsq jT; T ; S e | ` zV o Ui/-s \ ^\Ovg{G6/;dSu6wxNp-j-E*pbqUhE i6|"##*'q(O)g))**+?+GL,,,[----B.t//30f033_Hffyzg55I67FXgi:Wv_>>u HJAB C;@4CCEJQY;<DDWtF9/Gəb7!^NHHJ rJx eYNOyڎ,PR?WqqRTJ?JUFTnTRks4?U2v^UGbUfUW?I]XfP43Y|GHZ[\WQqa|VaObdJd[]kdId?eKef'eWa'ZV!EfjN4IVml6wgnhd^hhB{ &i9iEzi&-j_6id!y4j[k,]5kFl;uemX7%KpqTzf=Uv<5VVYN^XbVmm[>Lc{0e-VJ\TS=}L"VVI^uY@=pNI 6^;vENvwE2TH%V2UbyCVT5VUf-64uUUTrUA ^HQvb,Z}UubmT͌qvccciUC+r.Q4 QMTUUfv-huLjDsG[ h{V&/}As}nrp<frNGO@]e-HG| uH`q~PNNw5 [lgS69}S6FXnK-KTWZy R:e$ts M<0[LOޟ\=rg 7.c%}>,>*:Rt>z6E@vZzx.X@|Vt]Tv4L7a0C]VWcI4Rp5|V|9WlS\dД5cdq( "mJq Q]L{\{hb5c{*~|B||{ >IZsU[OO`R>RgWVPY^ȗ\iT@,S0a,iS ;LAiPFumڙsRY\Qc#mjVzubOsp|!\<Iv*N BJ\izWR]N1l9OTTR55Rk|.zq{kx VJwSԍOb}(uzwJ>zxlgvZ&lևuSx@ rqs-st댻J/_D;n~%`gvךDn,s!5rLQ|JYaYaL}a_Woab9b\:aS3dch5W]‹ڏ9PFy2S8;e@w|_|-zfcM}ut gbt[t$wgSun·ȁIC+wtڄ56im@t=vq`a<w`q-`~K R<<^Vv1UDmp\aw6FhObE[LcPkbGے?LBsQI6BID<i-7{_ R&R8qDmStS~SwSSSSsrWY?sSSIlINWS: S?-Sw Typ+UWf[mmTSkt ]UTTG =M &GUL/TtUU:@RE5Df7Vf2ffMVOVxVSWVVf#6OFWAnlpBW6~lWXTcC&XK\XXa5XX<X[CWPxBӓ5Yh6Yn>$ZSUYN l*mYmqm(YEnZcZ6I7ZetZoT%=27^Rv[e|[z@]H[`a4Y[[M\D\s\(kI\H\\\]7]]F]\]-8II s!68;.^jz^D SNSq ^^^^8^>h _:H::_h#q$c_nnr_@6_]_=PRjph&֑)1`fwc9=96W'qy@>``IISztPZda$BanaQVa[?_(a]a29)(#`\aecbpb .lcI:8dco6.@Wdd{f::dW:Meo(J#Jeme_e~0e@I7Ke@)ee_4f11Df11KfugfQsf=121Sw(gC!J+;i7ggbgAgD"hPn<h3m]ho4i jߊsih5ii2=:<6;gaiJB6ii;cPiY6*!Ej7j;gj <k# `5ktk'n:X@7!TZ;k>k7l$HQkZl&yl=D=A II<6<2 1$7h%mmmm\m|noI@rn3toQ.!/>St?yOnZK0o 7o0>n=@UEDo\oN=top;=oDAo@UA9@???AQVAWA@AaKp~pppppppA=qqwB+qEqZJq\eCOqbB,qZD'J"Jq苽prBrYC$rAV.r@rtIhUrWrU>D0 h=or+s#H+H(s.sss: .jsItA$J#f6IIIsti&J9t>(`tGtsvtlt07tt,jtSIJ_AyJF[tuuَK[MuJugunuO?Mu]tuuv,vQvOvovvvcv7iivvvvobP}Qw&w@wd RXw2wdhwvJhxxx.yUx4yx v+`&yiyWXy9{y y _DR@ N4  @X<\C&v2D`! `!i$D@5C1Qh@d@P`*h5O Ă(u8@qM ^[Cx @ RO|! nwO6 n /`Txh"pV% w[1r[, \΅@T HD@ @;dD+6[ڐۇ %FFɄM   xn_?~=k翺nܧ>wɒץJnMgTboR6)EeB9B`@@ү{R =   LDA@O6Xg@PNAȄZ`+P@n 9 ěl*Fm!ri*{ ,9J @  DE0 00' 0& % PQRTUVW\ 1 3t%4O 56[]78009:00;< 0 0=>0 0?@ 0 0AB00CDYZ[\]^    005 2  ; 0%%%%%&&%%%%%%2!?IJMNKL_`a "f"g"`""R"a"bcdef^)"*"" """33+"."5"4"@&B&""!!!!!!!!%"#"<"h0 ! !ijk333333333YQ[Q^Q]QaQcQUt|%%%%%%%%%%%%%%%<%4%,%$%%%%%% %%%%m%n%p%o%P%^%j%a%%%%%q%r%s%`!a!b!c!d!e!f!g!h!i!!0"0#0$0%0&0'0(0)0ASDSES!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ1111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$!$ NYNNNCN]NNNN?QeQkQQRRRSAS\SS N NN N+N8NQENHN_N^NNN@QRRCSSSWXY'YsYP[Q[S[[\"\8\q\]]]]]]r^^ __MbNN N-N0N9NKN9\NNNNNNNNNNNNNNNCQAQgQmQnQlQQQRRRRRRS9SHSGSES^SSSSSX)Y+Y*Y-YT[\$\:\o\]{^^___b6bKbNb/eeeeeefg(g kbkykkkkl4lkp*r6r;rGrYr[rrsNNNNN;NMNONNNNNNNNNNNNNEQDQQQQQQQ RRRSSSSNJSISaS`SoSnSSSSSSSSSSSSSSSSSSSSSVVY.Y1YtYvYU[[<\]]]^^s^|^____ bSbTbRbQbee.g,g*g+g-gckkll8lAl@l>lrssttuu(u)u0u1u2u3uu}vvvvwww:yytzzNNRNSNiNNNNNN OO OO OOOONNNNNNO OIQGQFQHQhQqQQQRRRRRRS!S SpSqS TT T TTT TTT TTTTTTVVV3W0W(W-W,W/W)WYY7Y8YYxYY}YyYYYW[X[[[[[[\y\]^v^t^____b b bbcb[bXb6eeeeeff g=g4g1g5g!kdk{kl]lWlYl_l`lPlUlal[lMlNlpp_r]r~vzs||6 3 nr~k@Lc!2NNMOOOGOWO^O4O[OUO0OPOQO=O:O8OCOTOT&TNT'TFTCT3THTBTT)TJT9T;T8T.T5T6T TWPWOW;WX>YYYYYYYYYYYYY][\[Z[[[[[[,\@\A\?\>\\\\\] ^^^^^__d_b_w_y_________bbbbbbvbbmbb|b~bybsbbobbnbbbbb9e;e8eef_gNgOgPgQg\gVg^gIgFg`gSgWgekkBl^llllllljlzllpllhlll}llrl~ltllvlllllvp|p}pxpbrar`rrrs,u+u7u8uvvwyyyvz|Uo҉7FUdpʎƏŏď]IƑ̑2.1*,&NVNsNNNNNNoOOOsOOlOOOOOpOuOOiO{OO~OOOzOTQRQUQiQwQvQxQQQ;R8R7R:R0R.R6RARRRRSTSSSQSfSwSxSySSSSsTuTTxTTT{TwTTTT|TTqTvTTTbThTT}TTVWwWjWiWaWfWdW|WYIYGYHYDYTYYYYYYYYYYYYYYYYY_[d[c[[[[[[[\H\E\F\\\\\\\\^^^^^^x^^^^^^^&_'_)____|______``/`5``*``!`'`)`+``bb?b>b@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb>eeeeff fffffff ff g gmgggqggsgwggggogpggg~gguggg|gjgrg#kfkgkkllllllllllllllllllllllllllllllllllppppp,r-r8rHrgrirrrrrrsssss=uuuuvvvvww>y@yAyyyzzyzz|T NqRhˎΏԏяǑёw@?;DBR^NNNOOOOOOOOOOOOOOOOOOOOOOWQQQQNRCRJRMRLRKRGRRRRR SWS{SSSTTTTTTTTTTTTTTTTTTTTTTVWWWWWWWWUYQYOYNYPYYYYYYZYYYYZYi[[[[[[\N\O\M\K\\\]^%^^}^^^^_-_e________`` `%``(`M`p`h`b`F`C`l`k`j`d`Abbc cbbcbbcbbbbbbcc?eEeeee%f-f f'f/ff(f1f$ffgggggggggggggggggggggggggjkkkkkkll m2m*mAm%m m1mmm;m=m>m6mml9m'm8m)m.m5mm+mppppppppp0rrrortrrrrsssssssu-uOuLuNuKuuuuuuxvvvvvvvvwvv w wvvwwxx x xFyIyHyGyyyyyyzzzz}|}}} }}}}8 6րڀÀĀ̀ۀ΀ހ݀"ۂ ҂ׂ܂Ԃтނӂ߂Py{zMkԉts͎̎ʐΐÐKJ͑PKLMbi˗ۘߘXNN P P#PO&P%PO)PPPc/cUcBcFcOcIc:cPc=c*c+c(cMcLcHeIeeeeBfIfOfCfRfLfEfAffggg!h8hHhFhSh9hBhTh)hhhLhQh=hgPh@hSSfFUjUfUDU^UaUCUJU1UVUOUUU/UdU8U.U\U,UcU3UAUWUW W WWX XXWWWX5XWW YbY6ZAZIZfZjZ@ZwUUUUUU~UUUU W/X*X4X$X0X1X!XX XXX`YwZZZZZZs[q[[[[[ \ \1\L]P]4]G]]E^=^@^C^~^^^^^<_m____`````a#a`a```ha`a` aaabIbcccccccccccccccvccccRdcc^efebeceeeenfpftfvfoffzf~fwfffgghhhhhihhhhhhhhhh iiihhnih>k:k=kkkkk.l/l,l/n8nTn!n2ngnJn n%n#nn[nXn$nVnnn-n&non4nMn:n,nCnn>nnnnNncnDnrnin_nqq&q0q!q6qnqqLrrr6s%s4s)s:t*t3t"t%t5t6t4t/tt&t(t%u&ukujuuuuuuuu{v|vvvvvOww]xlxox zz zzzzzzzzI{V{F{P{R{T{M{K{O{Q{||^}P}h}U}+}n}r}a}f}b}p}s}U RUTKQN9F>LSt Ń W ̃ʃ8܃ԃ߃[߆نԆۆІކWˆ;`U^a4a'a aa7a!b"bd>dd*d-d=d,dddd d6ddddleeeffffffffgimiZiwi`iTiui0iiJihiki^iSiyii]ici[iGkrkkkkknnnnnnnnnnnnnnnnnnnnnnNqYqiqdqIqgq\qlqfqLqeq^qFqhqVq:rRr7sEs?s>sotZtUt_t^tAt?tYt[t\tvuxuvuvuuuuuuvv[wkwfw^wcwywjwlw\wewhwbwwxxxxxx|xxxxzyyy,yzz zzzzzzw{{`{n{g{|||}y}}}}[}nijrVXqpxenskyzfGw=1ufkIl[<5acimF^\_ Y߈Ԉو܈؈݈ʈՈ҈krsfip|cqmbnly{>hbʌnjȌČ̌Ōߍ捲 KJSBTAljiɑ7W8=@>[KdQ4IME9?Z͖˖ɖʖVtv  霂 PPPPPPPPPPPPbQQRR1SSUVVVUVV V VVUVVVVUWWuX~XXXXyXX}XX%Y"Y$YjYiYZZZZZZZu[[[[[[[[[[ \b\]][^c^U^W^T^^^ _F_p__Ga?aKawabaca_aZaXaua*bdXdTddxd_dzdQdgd4dmd{dreeeefffiiiiiiiiiiiiiiiiiiiIkLk3l3oonon)o>o o,ooo"onno1o8o2o#oo+o/oo*ononnnqq}qqqq>rrrDsPsdtctjtptmtuu'v v v vvvvw}wwawxxxxxxyyy.z1zzzzz{{{u{{{{{{{{|||}}}}}}}}}}}}}}}}}}}p^ZPKɄƄĄ˄ӄфʄ?;"%4U7)jӌьҌk`X\cY^b][uxwtx{|̖Җ| AB󜼞;JQQPPPQQ QQQRRRRRRS.V;V9V2V?V4V)VSVNVWVtV6V/V0VXXXXXXXXmY [Z [Z [[[[[[d\e\]]b^_^a^^^^^^^H_q___vagana]aUaa|apaka~aaaaaaaaaa.bidodyddddddddddddddddddduewexeffff#jjijjji!jj jijjijPkNkkkk?o|ooQofoToomo[oxonoozopodooXonoo`o_oqqqqVrrNsWsittt~ttu v)vv$v&v!v"vvvvwwwwwxxxxxxxx?z~F~7~2~C~+~=~1~E~A~4~9~H~5~?~/~DqrposƁÁɁ q~gч҇Ƈȇˇ;6D8= A?sIKHJD>BE?}9M(uJeK~l[pZTʕ˕̕ȕƕ֖ӗF5;?Ϟޞܞݞ۞>KSVVXX8[]_a3bdddedddef&gjjjjjjjj_kxkk p popoppqqqqwsusttuVvXvRvwwwwyyazbz`zzz+|'|*||#|!||T~U~^~Z~a~R~Y~Hwv́ρ υͅЅɅ(9,+PYcfd_UIMБԕ֕ЕՕܖٖۖޖ$MOLNS>?=.ONMʛɛțQ]`,3QVXXX[^aaaaeeffjjjjpp(pppppr rXrrxszstttuu_vavwyykziz>|?|8|=|7|@|k~m~y~i~j~s~؁݅Յ `_V^A\XIZNOFY |rvlztTNѓߓÓȓܓݓ͓֓ؓדܕ*'aܗ^X[EI ֛ۛarjlRVVVVVX@[C[}[[]aaeeef'gj>p0p2pr{stbvev&y*y,y+yzzL|C|M|||}~|~~Lځf  dplfo_k ˑ0ĘRQ+075 y/_ca7Q8QVVVYl\]aaeeefjkjkLprrttivwP|~~-#"!jltw}_.35:82+892geWEC@>ϚTQ-%\fg×kUUMҚI1>;ӝם4ljV]b#e+e*efktzd|c|e|~~~8?1c`dho\Z[WӚԚњTWV坟VX,e^pqvrvwP69bwjBHDƗp_"X_|}wr^kcpl|n|;rpq^֚#̞dpwwɗbe~ő}~|wxT(rj1r|`$a$b$c$d$e$f$g$h$i$t$u$v$w$x$y$z${$|$}$p!q!r!s!t!u!v!w!x!y!6N?NNNQQQR8SiSS Y[]z^^^P_a_4eeuvv00000000;=='A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO!!!1ZNRDQv12!!!00............................P[TuSKjBN\NQSSN NGNNV n\s_NQN.NNNNNQRlSS WY,Y\]ekkl?r1Ng9g8g;g:g?gOgORO_OAOXO-O3O?OaOQQRR!RRR ScSrSSS0T7T*TTTETTT%TT=TOTAT(T$TGTVVVAWEWLWIWKWRWY@YYYYYYYYYYY[[(\*\\\\\\\\\\\] ^^^^^^^__x_v_______________`_:bbbbbbbqb{bzbpbbbwb}brbtb7eeeeeeEgGgYgUgLgHg]gMgZgKgkllxlglkllllqlolillmllllflslel{lltpzpcrrrrrrrrsssss:u9uuuv=y4xɏ0(/-3NO|OO}OOOvOtOOOwOLOOjOOyOOxOOOOOOOOkOnOQQQ5R2R3RFR1RR S SuuuvvvvvwwwwwwBy?yyxz{zzu||5 ‚ÂpomnVҏˏӏ͏֏Տ׏9=<:COOOOOOOOOOOOOOOOOOODRIRRR=S|SSSSSTTTTTT TTTTTTTpTTTTrTTTWWWWWWWWWWWWWWWX YSYYYYZYYYYYYYYYYYYYYYYY[L\\\\\\\\\\\\\\\\\\\\\]!^"^#^ ^$^^^^^^^_._V__7`9`T`r`^`E`S`G`I`[`L`@`B`_`$`D`X`f`n`BbCbb c cbccbbc cbbcccbcbbAeCeee6f!f2f5ff&f"f3f+f:ff4f9f.fgggggggggggggggggggggggggggggggggggggggggg(kkkkkkk l!l(m4m-mm9/%3-DQ%V?A&"BN*ZMZ9ZLZpZiZGZQZVZBZ\Zr[n[[[Y\] ]]] ] ](] ]&]%]]0]]#]].]>^4^^^^^^6_8____`````````````````````2ceccc}ccccccccocccnccuccmcc|cc;ccxcccccpcSeeefaf[fYf\fbfgyhhhhmhnhhhViohhhhuhthhhwhh|hkhrhhhqh~hhhhhhhxh{hhhh}h6k3k7k8kkkkkk*lmmmmtnmmmmmmnmmmmmmmmmmmmmmmmmmmmmmmmmmmp qpqp qpqpqppqqqpp qqq~r{r|rrsssss ssrssssssttsttsss t tstducuuuuuuuuvvv9w/w-w1w2w4w3w=w%w;w5wHxRxIxMxJxLx&xExPxdygyiyjycykyayyyyyyzzz5{G{4{%{0{"{${3{{*{{1{+{-{/{2{8{{#{||||5}=}8}6}:}E},})}A}G}>}?}J};}(}cGCH%-,!'"83:42tzstu}~vYV†ņȆ̆ÆR։ىՉ0',9;\]}}{y؎ގݎ܎׎$  !ԐVXZSUz|mkqoj嘗PPPPPPPPPPhPPPPP_QQSSSSUUUUwUEVUUUUUUUUU}UUUUUUU W)X7XXX'X#X(XWHX%XXX3X?X6X.X9X8X-X,X;XaYZZZzZZZxZZ|ZZZZZ7ZZZZZZZ{Z}ZZZZZZ[[[[[[[ \0\7]C]k]A]K]?]5]Q]N]U]3]:]R]=]1]Y]B]9]I]8]<]2]6]@]E]D^A^X____``````a` aaa`a````aaaa`a aJbccccccccdcccccccadccccccccccccccc2egejede\eheeeeeeeee|flf{ffqfyfjfrfg ihih*ihhhihhhhhiihhihipihihhihhhhh i iihhhhhhhihhi%ih9k;k?k?efQOPԀCJROG=M:<=?u;σ#ƃȃヿ݃؃˃΃փɃ ރƒՃǃуÃă׃ۃ؆ӆچ݆܆׆цHVU׈Ɉ݉ډۉNM9Y@WXDERHQJLO_؍Ӎ͍Ǎ֍܍ύՍٍȍ׍ō-4/,ad_b` %& '${~–ȖÖlpnNNNPPPPPPPPPPPPPPPPPQzRxR{R|RUUUUUUUUUUUUUUUUUUUUUUUWSXhXdXOXMXIXoXUXNX]XYXeX[X=XcXqXXZZZZZZZZZZZZZZZZZZZZ[[[\3\q]c]J]e]r]l]^]h]g]b]]O^N^J^M^K^^^^^^@___`IaJa+aEa6a2a.aFa/aOa)a@a bh#b%b$bcccdd d d$d3dCdddd9d7d"d#d d&d0d(dAd5d/d dd@d%d'd dcd.d!ddoeeeffffffffxf gfi_i8iNibiqi?iEiji9iBiWiYiziHiIi5ili3i=ieihxi4iii@ioiDiviXiAitiLi;iKi7i\iOiQi2iRi/i{iF 2*-<:15B&'8$0눝艫=hiՌό׌   # "$!zrysvzy}~-X}z~{Η͗ٙǙ>?`a_PQ0QPQQPP Q QP QRRRRHVBVLV5VAVJVIVFVXVZV@V3V=V,V>V8V*V:VWXXXXXXXXXXZZZZZ[Z[Z[[[[g\]]]]]]]]]]]]i^]^`^\^}^^^I__aayaaaaaaaaaaaaaafaa-bndpddddddddddddhdddvezeye{eeefffffffjjjiijii jiiijji'jiijii@jjii jii jjj%jji&jjijQkkkkkllklAo&o~oooooooboOooZoovolooUoroRoPoWooo]ooaoko}ogooSooiooocowojo{oqqqqqqqqqqqqqqqqqrrXsRs^s_s`s]s[sasZsYsbsttttt}ttt|tytuu~u%vvvvv#vv(vvvvvvwwwwxxxxxxxxxxxyyyyyyvk9zzzz{{{{{{{{{||||}}}}}}~}}}}}}}vdgOSRPNQ$;)  '+ *(.1& 0 /bVcdwsXT[RaZQ^mjPN_]olzn\eO{ubgiZ   ϊƊӊъԊՊ׊Ŋ؊Êي>Mߌٌڌ݌猠 #%$.&',$ #spogk/+)*2&.ВÒĒْϒߒؒגݒ̒’ʒȒΒ͒ՒɒޒђӒƒ|ӖZЗϗ&)( 'ܙ͙ϙәԙΙəؙ֙˙י̙FCgtqfvuphdlӞQQQQQQ4SSpV`VnVsVfVcVmVrV^VwVWWXXXXXXXX[[[![[[[[([[ [[[]]]]]]]]]]]]]g^h^f^o^^^^^^K__aaaaaaaaaaaaddddddddddd3ee|eeffffffffff#g4jfjIjgj2jhj>j]jmjvj[jQj(jZj;j?jAjjjdjPjOjTjojij`j[qNnuUg`f]Telcedy&0-.'1")#/,݊ߊȊފln3>8@E6<=A0?6.52974vy{356'z8<#F- ˒%4$)95* ͕Ԗ 5/2$')癹3|~{z}% )"՞֞=&Q%Q"Q$Q Q)QRVVVVVV~VVVVXXXX-[%[2[#[,['[&[/[.[{[[[]l^j^__aaaaaaaaaddddddeeeefjjjjjjjjjjjjjjjjjjjjjjj[kk looooooooooooooqqqqqqqssnsostttttttttuuuuuCvHvIvGvvvwwwwwwwwwxxyxxxyxxyyy\z[zVzXzTzZzzzz||{|{{|{ |{| |||{{|{{| ||-~<~B~3~H8~*~I~@~G~)~L~0~;~6~D~:~E~},ā́ʁŁǁ[Z\{w|zxWyvhŇɇLJ̇ćʇއ53<>AR7B " OprqooNMSPLGC@~8dVG|X\vIPQ`mLjyWUROqw{a^cgNYǕɕÕŕ ՗ԗADJIEC%+,*32/-10H3Ag6./180EBC>7@=-Ȟڞ$#"T1Q-Q.QVVVVVVpY<[i\j\]m^n^aaaaaaaaaadeddeedeefffjjjjjjjjjjj^kk lp p pppppopo&poo prqqrqvsttttttttuu\vdvYvPvSvWvZvvvvwwx yyy yyyyyy_z|)|| ||-||&|(|"|%|0|\~P~V~c~X~b~_~Q~`~W~S~uсҁЁ_^ƅŅDžą˅΅ȅŅ҅$iۇ߇ԇ܇Ӈ؇㇤ׇه݇SKOLFPQI*'#305G/<>1%7&6.$;=:Bu\b`WV^eg[Za]iTFGHK(:;>ҕӕѕזږ]ߖؖݖ#"%חٗ֗ؗPQRA<:  ܚ)5JLKǛƛÛӛě\SOJ[KYVLWRT_XZߞ%+*)(LU4Q5QRRSVVVVVVXXXY=[>[?[]p^_aee e e eeeeefjjjjjjjjjjjjj`kk lp'p pp+p!p"p#p)pp$pp*p r rrrrrrrrrttttu`vwwwwyy!yyyyygzhz3|<|9|,|;|||v~u~x~p~w~o~z~r~t~h~KJxׁՁdacمڅׅ؅߅܅хޅ  bZ[Wa\X]YPHJ@SVTKUQBRWCwv mxsjo{ŽRQOPS@?ޓǓϓ“ړГ̓ٓʓԓՓēΓғ}ڕە)+,(&ݗޗߗ\Y]WHGC%$" '#š  7ޛԛכܛٛ՛ڛwqx}ktupis{oyh-@AMVWX7SVVVXE[]]^^__aeeeeefffjjjjjjjj02.3vtsEdcbU]W^ėŗVY RXPJMKUYLNžО876COqpnoVVN[m\-effk_pap]p`p#rttw8yyyj|~mC875K‘khiFCGǗ^՚Ycgfb^` FtuvV.eekkkkbp&rrww9yi|k||~~~~FGHyz|{nmoqsIr_hnm  Gx{zyWfpo|<Ñtxvu`tsqu hpep|j>=?ɎKst̘adfg$Hbk'rLih.)rKyuvkzipjp~IxψXR`|ZT%f%W%`%l%c%Z%i%]%R%d%U%^%j%a%X%g%[%S%e%V%_%k%b%Y%h%\%Q%P%m%n%p%o%%NNNNNNNN N!N#N&N)N.N/N1N3N5N7NO?O@OAOBODOEOGOHOIOJOKOLOROTOVOaObOfOhOjOkOmOnOqOrOuOwOxOyOzO}OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPP P P PPPPPPPPPPP P"P#P$P'P+P/P0P1P2P3P4P5P6P7P8P9P;P=P?P@PAPBPDPEPFPIPJPKPMPPPQPRPSPTPVPWPXPYP[P]P^P_P`PaPbPcPdPfPgPhPiPjPkPmPnPoPpPqPrPsPtPuPxPyPzP|P}PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQ Q Q Q QQQQQQQQQQQQQQQQQQ Q"Q#Q$Q%Q&Q'Q(Q)Q*Q+Q,Q-Q.Q/Q0Q1Q2Q3Q4Q5Q6Q7Q8Q9Q:Q;QQBQGQJQLQNQOQPQRQSQWQXQYQ[Q]Q^Q_Q`QaQcQdQfQgQiQjQoQrQzQ~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRR R R RRRRRRRRR!R"R#R%R&R'R*R,R/R1R2R4R5RRDRERFRGRHRIRKRNRORRRSRURWRXRYRZR[R]R_R`RbRcRdRfRhRkRlRmRnRpRqRsRtRuRvRwRxRyRzR{R|R~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSS S S S SSSSSSSSSSS"S$S%S'S(S)S+S,S-S/S0S1S2S3S4S5S6S7S8SV@VAVBVCVDVEVFVGVHVIVJVKVOVPVQVRVSVUVVVZV[V]V^V_V`VaVcVeVfVgVmVnVoVpVrVsVtVuVwVxVyVzV}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWW W W WWWWWWWWWWWWWWWWW W!W"W$W%W&W'W+W1W2W4W5W6W7W8WX?X@XAXBXCXEXFXGXHXIXJXKXNXOXPXRXSXUXVXWXYXZX[X\X]X_X`XaXbXcXdXfXgXhXiXjXmXnXoXpXqXrXsXtXuXvXwXxXyXzX{X|X}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYY Y Y Y YYYYYYYYYYY Y!Y"Y#Y&Y(Y,Y0Y2Y3Y5Y6Y;Y=Y>Y?Y@YCYEYFYJYLYMYPYRYSYYY[Y\Y]Y^Y_YaYcYdYfYgYhYiYjYkYlYmYnYoYpYqYrYuYwYzY{Y|Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZ Z Z ZZZZZZZZZZZZZZ!Z"Z$Z&Z'Z(Z*Z+Z,Z-Z.Z/Z0Z3Z5Z7Z8Z9Z:Z;Z=Z>Z?ZAZBZCZDZEZGZHZKZLZMZNZOZPZQZRZSZTZVZWZXZYZ[Z\Z]Z^Z_Z`ZaZcZdZeZfZhZiZkZlZmZnZoZpZqZrZsZxZyZ{Z|Z}Z~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[ [ [ [ [[[[[[[[[[[[[[[[[ [!["[#[$[%[&['[([)[*[+[,[-[.[/[0[1[3[5[6[8[9[:[;[<[=[>[?[A[B[C[D[E[F[G[H[I[J[K[L[M[N[O[R[V[^[`[a[g[h[k[m[n[o[r[t[v[w[x[y[{[|[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\ \ \ \\\\\\\\\\ \!\#\&\(\)\*\+\-\.\/\0\2\3\5\6\7\C\D\F\G\L\M\R\S\T\V\W\X\Z\[\\\]\_\b\d\g\h\i\j\k\l\m\p\r\s\t\u\v\w\x\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]] ] ] ] ] ]]]]]]]]]]]]]] ]!]"]#]%](]*]+],]/]0]1]2]3]5]6]7]8]9]:];]<]?]@]A]B]C]D]E]F]H]I]M]N]O]P]Q]R]S]T]U]V]W]Y]Z]\]^]_]`]a]b]c]d]e]f]g]h]j]m]n]p]q]r]s]u]v]w]x]y]z]{]|]}]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^ ^ ^ ^ ^^^^^^^ ^!^"^#^$^%^(^)^*^+^,^/^0^2^3^4^5^6^9^:^>^?^@^A^C^F^G^H^I^J^K^M^N^O^P^Q^R^S^V^W^X^Y^Z^\^]^_^`^c^d^e^f^g^h^i^j^k^l^m^n^o^p^q^u^w^y^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___ _ _ ___________!_"_#_$_(_+_,_._0_2_3_4_5_6_7_8_;_=_>_?_A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_Q_T_Y_Z_[_\_^___`_c_e_g_h_k_n_o_r_t_u_v_x_z_}_~________________________________________________________________________`` ` ` `````````"`#`$`,`-`.`0`1`2`3`4`6`7`8`9`:`=`>`@`D`E`F`G`H`I`J`L`N`O`Q`S`T`V`W`X`[`\`^`_```a`e`f`n`q`r`t`u`w`~````````````````````````````````````````````````````````````````````````````aaaaa a a aaaaaaaaaaaaaa!a"a%a(a)a*a,a-a.a/a0a1a2a3a4a5a6a7a8a9a:a;aa@aAaBaCaDaEaFaGaIaKaMaOaPaRaSaTaVaWaXaYaZa[a\a^a_a`aaacadaeafaiajakalamanaoaqarasatavaxayaza{a|a}a~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb bbbbbbb b#b&b'b(b)b+b-b/b0b1b2b5b6b8b9b:b;bc?c@cAcDcGcHcJcQcRcScTcVcWcXcYcZc[c\c]c`cdcecfchcjckclcocpcrcsctcucxcyc|c}c~ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddd d d dddddddddddd"d#d$d%d'd(d)d+d.d/d0d1d2d3d5d6d7d8d9d;dd@dBdCdIdKdLdMdNdOdPdQdSdUdVdWdYdZd[d\d]d_d`dadbdcdddedfdhdjdkdldndodpdqdrdsdtdudvdwd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeee e e e eeeeeeeeeeeeeeeee e!e"e#e$e&e'e(e)e*e,e-e0e1e2e3e7e:eg?gAgDgEgGgJgKgMgRgTgUgWgXgYgZg[g]gbgcgdgfgggkglgngqgtgvgxgygzg{g}gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhh hhhhhhhhhhhh h"h#h$h%h&h'h(h+h,h-h.h/h0h1h4h5h6h:h;h?hGhKhMhOhRhVhWhXhYhZh[h\h]h^h_hjhlhmhnhohphqhrhshuhxhyhzh{h|h}h~hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiii i i iiiiiiiiiiiiiii!i"i#i%i&i'i(i)i*i+i,i.i/i1i2i3i5i6i7i8i:i;ii@iAiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiUiViXiYi[i\i_iaibidieigihiiijilimioipirisitiuivizi{i}i~iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjj j j j jjjjjjjjjjjjjjjj j"j#j$j%j&j'j)j+j,j-j.j0j2j3j4j6j7j8j9j:j;jl?lClDlElHlKlLlMlNlOlQlRlSlVlXlYlZlblclelflglklllmlnlolqlslulwlxlzl{l|lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmm m m mmmmmmmmmmmm m!m"m#m$m&m(m)m,m-m/m0m4m6m7m8m:m?m@mBmDmImLmPmUmVmWmXm[m]m_mambmdmemgmhmkmlmmmpmqmrmsmumvmymzm{m}m~mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnn n nnnnnnnnnnn"n&n'n(n*n,n.n0n1n3n5n6n7n9n;nn?n@nAnBnEnFnGnHnInJnKnLnOnPnQnRnUnWnYnZn\n]n^n`nanbncndnenfngnhninjnlnmnonpnqnrnsntnunvnwnxnynzn{n|n}nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooo o o o ooooooooooooooo!o"o#o%o&o'o(o,o.o0o2o4o5o7o8o9o:o;op?p@pApBpCpDpEpFpGpHpIpJpKpMpNpPpQpRpSpTpUpVpWpXpYpZp[p\p]p_p`papbpcpdpepfpgphpipjpnpqprpsptpwpypzp{p}ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqq q q qqqqqqqqqqqq q!q"q#q$q%q'q(q)q*q+q,q-q.q2q3q4q5q7q8q9q:q;qq?q@qAqBqCqDqFqGqHqIqKqMqOqPqQqRqSqTqUqVqWqXqYqZq[q]q_q`qaqbqcqeqiqjqkqlqmqoqpqqqtquqvqwqyq{q|q~qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrr r r r r rrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r)r+r-r.r/r2r3r4r:rr@rArBrCrDrErFrIrJrKrNrOrPrQrSrTrUrWrXrZr\r^r`rcrdrerhrjrkrlrmrprqrsrtrvrwrxr{r|r}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr  !"#$%00000 ^ &     000 0 0 0 0 00000006"'"("""*")""7"""%" "#"+"."a"L"H"=""`"n"o"d"e""5"4"B&@&2 3 !0 !&&%%%%%%%%%; !!!!0&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~p!q!r!s!t!u!v!w!x!y!fghijk$$$$$$$$$$$$$$$$$$$$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$`$a$b$c$d$e$f$g$h$i$ m 2!2"2#2$2%2&2'2(2)2no`!a!b!c!d!e!f!g!h!i!j!k!pq  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEA0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000rstuvwxyz{|FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~00000000000000000000000000000000000000000000000000000000000000000000000000000000000000}~569:?@=>ABCD;<78134  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO  % 5 ! !!!!!""#"R"f"g""P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%%%%%%%%%%%%%%%%%%%%%%%%% &"000+MkQDHa1111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1!0"0#0$0%0&0'0(0)02333333333330!!12 00000000IJKLMNOPQRTUVWYZ[\]^_`abcdefhijk>0////////////0%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K% rrrrrrrrrrrrrrrrrsssssss s s s ssssssssss s#s$s&s's(s-s/s0s2s3s5s6s:s;s?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]rssstsusvswsxsyszs{s|s}sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss^_`abcdefghijklmnopqrstuvwxyz{|}~sssssssstttttt t t ttttttttttttttt t!t#t$t't)t+t-t/t1t2t7t8t9t:t;t=t>t?t@tBtCtDtEtFtGtHtItJtKtLtMtNtOtPtQtRtStTtVtXt]t`tatbtctdtetftgthtitjtktltntotqtrtstttutxtytzt {t|t}tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwtttttttttuuuuuuuu u u u uuuuuuuuuuu u!u"u#u$u&u'u*u.u4u6u9uw?wBwDwEwFwHwIwJwKwLwMwNwOwRwSwTwUwVwWwXwYw\wO!Xq[bbfyrogx`QSS̀ PrY`qTY,g({)]~-ulf<;k{|_xք=kkk^^u]e __X[,AbOS^SMhj_h֜a+R*vl_eon[HduQQgNy|p]w^w_w`wdwgwiwjwmwnwowpwqwrwswtwuwvwwwxwzw{w|wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwuv^sdblZSRd”{/O^6$nlsUc\STeW N^ek?|`dsPgMb"lw)Ǒi_܃!Sk``p͂1Nlυd|ifISV{OQKmB\mcS,6gx=d[\]bgzdcI N fswwwwwwwwwwwwwwxxxxxx x xxxxxxxxx x!x"x$x(x*x+x.x/x1x2x3x5x6x=x?xAxBxCxDxFxHxIxJxKxMxOxQxSxTxXxYxZx[x\x^x_x`xaxbxcxdxexfxgxhxixoxpxqxrxsxtxuxvxxxyxzx{x}x~xxxxxx:W\8^PS^eEu1U!Pbg2Vno]5Tpfobdc{_oば\hf_lHldyWYjbHTXN z`oڋbyTucS`lߏ_p;O:\depEQQk][bltu zay{N~wNRQqjSϖndZixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyy y y y y@xPwdYc]z=i O9U2Nuzb^^R9Tpvc$W%f?iUm~"3b~u(x̖Hat͋dk:RP!kjqVSNNQ||O{zgd]Pv|mQgX[[xddc+c-dT{)vSb'YFTykP4b&^kN7_. yyyyyyyyyyyyyyyyy y!y"y#y%y&y'y(y)y*y+y,y-y.y/y0y1y2y3y5y6y7y8y9y=y?yByCyDyEyGyJyKyLyMyNyOyPyQyRyTyUyXyYyaycydyfyiyjykylynypyqyrysytyuyvyyy{y|y}y~yyyyyyyyyyyyyyy `=b9NUScƀe.lFO`mދ9_ˆS_!cZQachRccHP\wy[0R;z`Sv__vlop{vI{wQ$XNOnLe{rmZb^0W,{^_cnxpxQ[W5uCO8u^``YmkxSՖQRc T̍9rxv Syyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzz z z zzzzzzzzzzzzNvSv-["NNQcaR hOk`Qm\QbeaFucwkrr5XywL\g@^!nYzw;keXQQ[X(TrfeVvAcTY:YW5g5AR`X\EO%Zv`S|bOi` ?Q3\u1mNzz!z"z$z%z&z'z(z)z*z+z,z-z.z/z0z1z2z4z5z6z8z:z>z@zAzBzCzDzEzGzHzIzJzKzLzMzNzOzPzRzSzTzUzVzXzYzZz[z\z]z^z_z`zazbzczdzezfzgzhzizjzkzlzmznzozqzrzszuz{z|z}z~zzzzzzzzzzzzzzzzzzz0SZO{OONls^ju jwA~QpSԏ)rmlJWe?b2YN~>e^aUޘ*S T^l9Z)TlR~_Wq~l|KYN_$a|0N\g\ Θup"QIYQ[O&T+Yweu[vbbE^l&{OO gzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{ { { {{{{{{{{{{{{!{"{#{'{){-{nmmy_+ubOܑe/Q^PtoRK YPN6ry[DYTvVV9eivnr^uFggzvaybecQR8~\/n`g{vؚ|dP?zJTTLkdb=urRi[|B|i[wm&lN[ca+Tm[QUUdMcea` qWlIl/Ymg*XVjkݐ}YSimuTUwσ8hyTUOTvlmkd:?Vўu_rh`TN*jaR`pTpy?*m[_~UO4ssn;uRS݋i_`mOW"ksSh؏bc`$Uubqm[{^RLaĞxW'|vQ`LqCfL^M`pp%c_b`ԆVk`gaIS`ff?yOpGl~dfZZBQmmA;mOkpb` 'xyQ>WW:gxu=zy{|||||||||||||||||||||||||||||||||||||||||||||||}}}}}}}}} } } } }}}}}}}}}}}}}}}}}}}!}#}$}%}&}(})}*},}-}.}0}1}2}3}4}5}6}eo!Y~  TghM|ƖS%`urlsSZ~$cQ ]߄bQc[OmyBR`Nm[[e_EY~~ Vg9YsO[RZ>2uGP}?}@}A}B}C}D}E}F}G}H}I}J}K}L}M}N}O}P}Q}R}S}T}U}V}W}X}Y}Z}[}\}]}^}_}`}a}b}c}d}e}f}g}h}i}j}k}l}m}o}p}q}r}s}t}u}v}x}y}z}{}|}}}~}}}}}}}}}}}}}}}}}}}}}}}}}}}eP0QRonnm^PY\Fm_luhhVY SqMIiy&qNʐGmZVdwOr҉z4~RYeuSzccvyW6*bRThpgwckwzm~YbɅLuPNuJ\]K{eёN%m_'}&N(ۏsKfyяpxm}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}=\RFbQ[wvfN`||~NfofYXle\_uVzzQpzcvz~sENxp]NRSQeeT1\ubruE\yʃ@\Tw>NlZbnc]wQݍ/OS`pgRPcCZ&P7wwS~d+ebcP5rɉQ~GW̃QT\}}}}}~~~~~~~~~ ~ ~ ~ ~ ~~~~~~~~~~~~~~~~~~~ ~!~"~#~$~%~&~'~(~)~*~+~,~-~.~/~0~1~2~3~4~5~6~7~8~9~:~<~=~>~?~@~B~C~D~E~F~H~I~J~K~L~M~N~O~P~Q~R~S~T~U~V~W~X~Y~Z~[~\~]~OzZmᐏUTaST_cwiQha R*XRNW x w^wa|[bbNpbp`wWۂghxyXTS4nKQ;R[CUWs`QW-TzzP`T[cbScb[gTzw^8YWcWWw{O_[>k!SP{rFhw6weQNv\zuNYAP^~_~`~a~b~c~d~e~f~g~h~i~j~k~l~m~n~o~p~q~r~s~t~u~v~w~x~y~z~{~|~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 79;<=>?@ACFGHIJKLMNORS'andWfFcVbib^WbU!JfUegV݄jZhb{pQo0cȉapntir^ΐgjm^cRbrlOYjpmRPNm~x/}!QWd{|lh^iQShrΞ{ryotNg̑xS)RPOOVY[\]^`cdefgklmopsuvwxz{|}uz|lRtTOTޏp^`m^[e8K`p~|Qh|o$Nϑ~fNdJPuq[foNdc^eRˆpRs3tgx4NޜmQATbsÔ6OQupu\SNn tikxYuR$vAmgmQKT<{z !#$+,-./0249:<>@ADEGHINOPQSUVWY[\]^_`abcdefghklmnoprstuvwxyz{|}WbG|iZd{oKbS^pcdSOx2B^oyU_F.btTݔOee\a\Q/l_sn~\cj[nuSqNceubn&ONl~W;#{=m~YsxlVTWpNVSȏ wnfba+o~ŀǀȀɀʀˀπЀрҀӀԀՀ؀߀  !"#$%&'()*+-.034579:;<=?)+vl_+skwƔoSQ=^8HNsghv dql wZAk'f[YZN jv0sh_[/wa|%_s|yʼnl[B^h w~QMQR)ZbׂcwЅy:n^YmplbvOe`f# T}T,xd@ABCDEGIMNORVWX[\]^_abcdfhjklorsuvwxāŁǁȁɁˁ́΁ρЁсҁӁyd!jxidTb+gX؞l o[L _rgbarNYkXfU^RUa(gvfwgrFzbTPTZ~lCNvYHYWS7uV c|`mbTQZY*Pl<\b`O?S{n+bt^xd{c_Z?\OcB}[nUJMm`grQ[ԁՁցׁ؁فځہ܁݁ށ߁  $%&').2:<=?@ABCEFHJLMNPQRSTUVWY[\]^`abcdefgibl[rmb~SmQ_tYR`sYfPu*ca|T'k%kՅUTvPljU,r^`6tbcLr_Cn>meXovxvTu$RSSN^e*րbT(RpэlxTڀWTjMiOlUv0xbpom_h|x{ gOgcxoWx9ybbR5tkjklmquvwx{|‚ÂłƂɂЂւقڂ݂  !"#$%&)*.027;=dU>uv9SuPA\l{OPGrؘothydwb+TXRNjW s^QtċO\aWlFZ4xD돕|VRQbNa郲W4gWnffm1fpg:khbYNQoglvQhGYgkfu]PeHyAyw\^NO/TQY xhVlď_}llc>?ABDEHJKLMNSUVWXY]bpqrstuvyz~ƒÃăƃȃɃ˃̓΃Ѓу҃ӃՃ׃كڃۃރp`=murfbŔCS~{N&~NԞMR\ocEm4XL] kIkg[TTX7:_bGj9re`ehwTNO]d\OzRN/`zONy4tRdy[lR{"l>PSndtf0l`w^?@ABCDEGHIJKLMNOPRSTUVX]^_`bdefghjnoprtwy{|S6ZSWCglhQubr8RR:p8vtSJinxو6qqQgtXeVvpb~`pXNN_NRY~TbNeb8Ʉcqn[~Qcg9Qz[YsN]leQ%o.J^tm1_dm(nÜ^X[ NS}~„ÄńƄDŽȄ˄̄΄τ҄ԄՄׄ؄لڄۄ܄ބOceQhU'NdkbZ_trmhPx@g9Rl~PeU^q[{RfsIgq\ R}qkUdaUUlGb.X$OFUOLf N\hNc zpR\T~bYJdž fDd\Qam>y7x3u{T8Om Z~^yl[vZuNanXu%urrGS~  "#$%&'()*-./0123456>?@ABDEFGKLMNOPQRSTUWXZ[\]_`abcefgijklmnopqsuvwx|}wviR܀#W^1Yren׋8\qASwbeNߘ[ƋSwON\vY_:yXNgNbR/fUlVNOʑpl^C`[ƉՋ6eKb[[c.US&v}Q,ghkbSmufNNp[qffr͞ ^\/gh_g bzX^pe1o…ÅąŅƅDžȅʅ˅̅ͅ΅х҅ԅօׅ؅مڅۅ݅ޅ߅U`7R Tdp)u^hbS=r4lawz.TwzUxgped6V`ySN{k[UV:O?@ABCDEFGHIJKLRSUVWXY[\]_`acdefghijmscK΀ԂbSl^*Y`plMWJd*+vn[Wjumo-fWkxcSpdlXX*dXhU|Pmpcmn~ChmvWYyr~uhTR"cD|USOfV`mCRI\)YmkX0uul`Fcag:w4^S,Tpmoprstuvwx†ÆņȆ̆͆҆ӆՆֆ׆چ܆݆ @l^\PN^:cGPhnw Tܔd_zvhEcR{~uwPb4YQyzV_m`\WTTQMnVc*To\bXb15@n|-iYb>UcTن\~*gsTOuÀUOMO-n \pakSv)ne~;T3z }UtcmzbegScl]\TLNalK\eh>T4TkfkNBcHS OO^W bdfirRR`fqgRxwpf;V8T!zr‡ÇćŇLJȇɇ͇̇·χЇԇՇևׇ؇هڇ܇݇އ߇  #zo` ^`Y`qpnPlrj-^`NZUm|b~w~#Sf\Or NSYTc(HQN~T$T7m&_Z>fis.sSz[wP~vSv{DXnaNey`TNy]ajPTa']xJRTVm[mSf$%&'()*+,-./01345678:;=>?ABCFGHIJKNOPQRSUVXZ[\]^_`fgjmoqstuvxyz{|\][!hxU{HeTiNGkNOSc:deQhxSall"Q\ #ke__OEfe)s`tQRWb_Lx^Og'`YDQQSylĖqOO=gUy~X bZV{_ĄWSe^\ud`n}Z~~iU[`esÈĈLjȈʈˈ͈̈ψЈшӈֈ׈ڈۈ܈݈ވ  "#$&'(),-./12357 cv)w~tf[tz@Rq_e[o]k[l ŏSb&-@T+NYr]YmŖTN qT pmv%Nx\^plDYcopYvt89:;<=>?@BCEFGHIJKLMNOPQRSTUVWXYZ[\]`abcdeghijklmnopqrstuvwxyz|}~Gd'\ez#YTo0iNV67rΑQ_NucNSfKYmNX;ScO Oc7YWyNul[Y]_iP]YNwNzbfy\Ny_Ɓ8uNԈak_INvn㋮ ы_~5kVk4YTm[n9\_É͉ӉԉՉ׉؉ىۉ݉߉ pS1jtZp^($%gGΏbvq_lx fTbcOÁu^͖ Tlm8l`R(u}^O`_$\1url8nI gSSQOɑS|^mNvi^aYOO>| annN1ZN\y[틽sWTGU\_a2kr !"#$%&'()*+,-./0123456789:;<=?@ABCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~tm[Ոkm3 nQCQWScVXTW?sn܏т?a(`bf~Í\|g`NShAQЏt]UfU[S8xBg=hT~p[}Q(WTef^Clm|QgeojV vvpq#bRl<`Xaf`NbU#n-ggŠÊĊŊƊNJȊɊʊˊ̊͊ΊϊЊъҊӊԊՊ֊׊؊يڊۊ܊݊ފߊ(whiTMNpȋXde[z:P[wky|lve-]U\8h`Sbz[n~jzp_3o _cmVgN^&N4vb-f~blugqiFQSnbTُYmsewu'xOguʋ/cG5#cAw_rN`tebck?e  !"#$%'()*+,-./0123456789:;<=>?@ABCDE'^uѐg/e1TwAlKN~Lv ikgb?@BCDEHJKMNOPQRSTVWXY[\]^_`cdefghilmnopqrtuvw{|}~N N@QN^ESNNN2l[iV(Ny?NSGN-Y;rnSlV䀗k~w6NN\NiNN[[lUVNSSSSSe]SS&S.S>S\fScSRRR-R3R?R@RLR^RaR\R}RRRRRQTNNNNNNNNON"OdON%O'O O+O^OgO8eZO]OŒÌČŌƌnjȌɌʌˌ̌͌ΌόЌьҌӌԌՌ֌׌،ٌڌی܌݌ތߌ _OWO2O=OvOtOOOOO~O{OO|OOOOOOOOOOOOO)PLPO,PP.P-POP P%P(P~PCPUPHPNPlP{PPPPPPQPPPPQ QN=lXOeOOFlt|nQ]ɞQYR SSQYUQNVQNnN҈y4[QQQQ QRW_ehijlnoqrxyz{|}~ōǍȍɍʍ͍ЍҍӍԍQQQQ‹Ëˋϋ΋ҋӋԋ֋؋ً܋ߋ  !%'*+./2356iSzS"!1*=?CEFLMNOPSTUVWXZ[\]^_`abcdeghjknqϐŐАĐǐӐܐאې"#1/9CF RBYRRRRTRRRSqw^QQ/S_Zu]LWWW~XXXX)W,W*W3W9W.W/W\W;WBWiWWkWW|W{WhWmWvWsWWWWWWWWWWWWWWWWWWWWWsuwxyz{}~ŽÎĎŎƎǎȎɎʎˎ͎̎ώЎюҎӎԎՎ֎׎؎َڎێ܎ݎގߎ X XWWXXXDX XeXlXXXXXay}Ȃʂ゘˂̂Ă΂ ܂҂؂ ӂՂQ[\<41^/OGC_@`-:3fe  !"#$%&'()*+,-./0123456789:;<=>?@ABCDhiljmnx|}{؃X ݃փ8ԃ߃Ń&\QZYszx?@ABD7UVUuUvUwU3U0U\UUUUUUUUU~UUU{UUUUUUUUUVUUUUUUUUUUUUUUUUVV VV$V#VUV'V-VXV9VWV,VMVbVYV\VLVTVVdVqVkV{V|VVVVVVVVVVVVW W WW^^^^1^;^<^EGHQSTUVXY[\_`fghkmsz{|‘ÑđőƑȑˑБґӑԑՑ֑בّؑڑۑݑޑߑ7^D^T^[^^^a^\z\\\\\\\\\\\\\\\\\\\\\\\\]]']&].]$]]]]X]>]4]=]l][]o]]]k]K]J]i]t]]]]s]]s_w____________ba_rrrrrrrrrrrrrrrrsrsr  !"#$%&'()*+,-./0123456789:;<=>?@ABCDErss!s ssss"s9s%s,s8s1sPsMsWs`slsos~s%Y$YYcghijkltw}^^^^^^^^^^S^^^^^____`_`___``___`5`&``` `)`+` `?`!`x`y`{`z`B`FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsuvwxyz{|}~j`}````````````````` a&aa#a`aa+aJauaaaaaaa_ ,N?rb5lTl\lJllllllhliltlvllllllllllllllllllll’ÒĒŒƒǒɒʒ˒̒͒ΒϒВђҒӒԒՒ֒גْؒڒےܒݒޒߒ 9m'm mCmHmmmmm+mMm.m5mmOmRmTm3mmommm^mmm\m`m|mcmnmmmnmmnmmmnm nm+nnnNnknn_nnSnTn2n%nDnnnnn-onnnnnnnnnnnnboFoGo$oon/o6oKoto*o o)ooooxoro|ozoo  !"#$%&'()*+,-./0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghikoooooooooop#pp9p5pOp^p[[[[[[/u4d[[0[GӏՏ & !56-/DQRPhXb[ft}P_W_V_X_;\TP\Y\q[c\f\*_)_-_t<_;n\YYYYYYlmnopqrstuvwxyz{|}~“ÓēœƓǓȓɓ˓͓̓YYYYYYYYYYZZYZYYY Z Z2Z4ZZ#ZZ@ZgZJZUZusssssssssssssss| tssssst*t[t&t%t(t0t.t,t/0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijlmnopqrstuvwxyz{|}~ǔϔӔԔڔ ttAt\tWtUtYtwtmt~ttttttttttttttLgSg^gHgigggjgsgggugggggwg|gg hg hgg hggggghggghgg2h3h`hahNhbhDhdhhhUhfhAhgh@h>hJhIh)hhhthwhhkhhnihi ih'3=CHKUZ`ntuwxyz{|}~•ÕĕŕƕǕȕɕʕ˕$ih iiWihiqi9i`iBi]iikiiixi4iiiiiificiyiiiiiiiiiiiiiii/jijjejiDj>jjPj[j5jjyj=j(jXj|jjjjjj7sRskkkkkkkkkkkkmqrsuvxwyz|~͕̕ΕϕЕѕҕӕԕՕ֕וٕؕڕەܕݕޕߕ #$%&'()+,-/0789:>ACJNOQRSVWXYZ\]^`cefkmnopqsxyz{|}~Ύ bbbb"b!b%b$b,btttuuu4eeee ffrgfffpff4f1f6f5f_fTfAfOfVfafWfwffffffffff236;=@EFHIGMUYljʉˉ̉ΉωЉщnrr]rfror~rrrrrrrc2cc–ÖȖʖ˖ЖіӖԖ֖זٖؖږۖܖݖޖߖ  ?ddkkkkklll lllll!l)l$l*l2l5eUekeMrRrVr0rbR gۀ€Āـ̀׀g݀ gZ6,2HLStYZq`i|}mgMXZń&gʁ!"#$%&'()+,./134567:;<=?@ABCDEFGHIJKLMNOPQTUWXZ\]_cdfghjklmnopqruwxyz{}~$k7k9kCkFkYkјҘӘ՘٘ژk@_keQeeeeeeeeepppppppppppqqq/q1qsq\qhqEqrqJqxqzqqqqqqqqqqr(rlpqfqq>b=bCbHbIb;y@yFyIy[y\ySyZybyWy`yoygyzyyyyyy__—×ėŗƗǗȗɗʗ˗̗͗ΗϗЗїҗӗԗ՗֗חؗٗڗۗܗݗޗߗ <`]`Z`g`A`Y`c``a a]aaaaabllmwwx xxxxe-xxx9x:x;xx?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnbwewww}wwwwwwwww:u@uNuKuHu[uruyuuXa_Hhtqy~vv2ĔȔɔʔ˔͔̔ΔДєҔՔ֔הٔؔ۔ޔߔopqrst˜ØĘŘƘǘȘɘʘ˘̘͘ϘИԘ֘טۘܘݘ "*+),124678<>?B5DEFILNORSTVWXY[^_]abdefghijkloqrs:wwɖyyyyzG]zzzz  !"#$%&'()*+,-/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSVWXYZ[\]^_`abdfsxy{~9z7zQzϞpzvvvvvtt,u "()*+,216879:>ABDFGHIKLNQUWZ[\^cfghijklqmsuuuuuuuuuuuuuuuuuuuuuuuvuuuvvv vv v%vvvv™ÙęřƙǙșəʙ˙̙͙ΙϙЙљҙәԙՙ֙יؙٙڙۙܙݙޙߙvv3vMv^vTv\vVvkvovzxzyzzzzzzzzzzzdir}ƈɈΈ! 4+6Af{u倲vvw "%&')(1 5CFMRiqx  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYMTlnz|{ĆΆɆφІކ߆؆ц #;%.>H41)7?"}~{`pLnSc|dYe҇Z[\]^_`abcdefghijkrÚĚƚǚȚɚʚ͚ΚϚКҚԚ՚֚ךٚښۚܚݚޚƇ凬ˇӇчʇۇ !9<6BDEzz{{{{ {+{{G{8{*{{.{1{ {%{${3{>{{X{Z{E{u{L{]{`{n{{{b{r{q{{{{{{{{{{{{{{{{{{{{{{ |{{|| |  !"$%&'()*+,-.013456789:=>?@FJKLNPRSUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|*|&|8|A|@|D!"#-/(+8;34>DIKOZ_h~؈߈^||Ie||||||||||||||||nf|w}}}G~~sgmGIJPNOd|}~›ÛěśƛǛțɛʛ˛̛͛ΛϛЛћқӛԛ՛֛כ؛ٛڛۛbapio}~rtyU~Yič֍׍ڍލ΍ύۍƍ ,.#/:@95=1IABQRJpv|otxe։މډ܉ܛݛޛߛ  !"#$%&'()*+,-./0123456789:;>&S*-0> ΖҖwȒ>jʓ>k#zĜŜƜǜʜ˜<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{}~œȜɜќҜڜ̜ۜ͜ΜϜМӜԜ՜ל؜ٜܜݜߜ|XŚš˚̚њECGIHMQ .UTߚ#;~֓۞ܞݞߞ",/97=>D  !"#$%&'()*+,-./0123456789:;<=>?@AB456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~⣝ÝĝŝƝǝȝɝʝ˝̝͝ΝϝНѝҝӝԝ՝֝ם؝ٝڝ۝ܝݝޝߝ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM $'.04;<@MPRSTVY]_`abenortuvwxyz{|}NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~㫞žÞŞƞǞȞʞ˞̞ОҞӞ՞֞מٞڞޞ !#$%&'()*+-.01 234568:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg  !#$'()..s4G4..566..n99&99s:9+,N;n<<.12.V@_A.7C...;CC.CDaFLFC#G)G|GG.GIzI}IIIIIIIIITULLLLwLLMMMMMMMMdhijklmnopqrstuvwxyz{|}~000 000@>?00000N0000  \0 \& %      00;=[]0 0 0 0 0 00000 "`"f"g""4"B&@&2 3 ! &&%%%%%%%%%%%; 0!!!!0" """""*")"'"("!!"" ""#""a"R"j"k""=""5"+","+!0 o&m&j& ! %!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZA0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%B%NUZ?Ta(cY"uPz`c%nefh'Weqb[Y{b}}b|[^ cfHhǕOgN OMOOIPV7YYZ \`apafipOupuy}}ÀcUz;SNNWxNXn82z(/AQpSTTVY_m-bp TS[poS\zNx&nVUk;YSfmtBVNKO SU0[q_ ffh8ll)m[tvNz4[`풲muvř`iSQW0XDY[^(`cclopqYqq?s~vт`[iXeZl%uQ.YeY__be*j'kksV,Ğ\l{QK\aƁvharYNOxSi`)nOz NSNUO=OOsORS VYZ[[yfggLklkpsyykSkWl"ooEotuv wz{!|}6f̊Qeӗ(8N+T\]sLvT/Z__`hjZtxw^NɛN|OOPPIQlQRRRSSTTUQWW}YT[][[]]]x^^^^_R`Labbc;efCffmg!hhi_l*mim/nn2uvlx?z|}}^}}T*RLaʐuq?xMؚ;[RRSTXboj_KQ;RJTV@zw`ҞDs opu_`rdkNVdWXZZh`aff9hhmu:}nBNPOSUo]]]glstxP߈PW^+cPPQgT^XY[i_Mbc=hskn}pǑrx&xmye0}܃ dR(WPgjQBW*:XiT]Wx\OJRT>d(fggzV{"}/\h9{SQ7R[bdd-gkіv֛LcvRf NPSq\`dce_hqs#u{~یxefkNN:OO:RSSUVXYYYP[M\^+^_`c/e\[eeegbk{klEsIyy|}+}󁖉^ifnj܌̖okNrtux:y 3ꁔPl_X+z[NSW1YZ[`nouꌟ[{rPga\J~Q\hcfenq>y}ʎndžPR:\Sg|p5rLȑ+[1_`;NS[Kb1gkrs.zkRQSjT[c9j}VShT[1\]Oab2myyB}M~Frt/1KlƖNOOEQAS_bgAl ncs&~͑SY[m]y.~|~XqQSO\%fwzQ_eoikmndov}]uQR@bffn^}rfRSsY^_U`dPQR SGSSTFU1UVhYY~ d_xRbcBdb-z{v} INHQCS`S[\\]&bGbdh4hlEmmg\oNq}qez{}J~z9nΌxwMRU8o6qhQyU~|LVQX\cffZiruuyVyy| }D}4;a PuRSS PUXOY=r[d\S``\cc?ccdef]iioqNuvz|}}aIXlňpmPXaӁ5 OtPGRsSo`Ic_g,nO^\ʌe}RSvQcX[k[ \ dQg\NY*YplQ>UXY`Sbg5Ui@ę(SOX[\/^_ `Ka4bfln΀Ԃ.۞ۛNS'Y,{Ln'pSSDU[Xbbblo"t8o8QSSFOTjY1]zh7rH=j9NXSVfWbceNkm[npwz{}=ƀˆ[VX>_efjk7uNJ$Pw0W_e`zf`luznE{\uzQ{Ąyz6Z@w-NN[_bm6t4xFZuO^bcWeogvLr̀)M PWZhsidqrXjyw)/OeRZSbgl}v{|6f or~Q{rx{H{ja^Qu`ukQbnzvOpbO{zVYX䆼4O$RJSSS^,deg>lNlHrrsTuA~,酩{Ƒiq=cifjuvxC*SQS&TY^|_`Ibybbekluvxy}w^ۘ j8|P>\_gk5t w;gz9Suf_񃘀<__buF{ee gllp2x+~ހ *JҒlONNPVRJWY=^__?bfgghQ!}~2 T,SP\SXd4ggrfwFzRlkXL^TY,gQvidxTWY'fgkTiU^ggR]hNOSb+glďOm~Nban+osT*gE]{\[JnфzY|l wR"Y!q_rw'a iZZQ T}TfvY]rnMQh}}bxd!jY_[ksv}2Q(gٞvbgR$\;b~|OU` }S_NQY:r6Α%_wSy_}3VgS aalRv8/UQO*QRS[}^`ac gggnm6s7s1uPyՈJĖYNYON?P|^Y[^ccdfJii mnq(uzIɄ! e} ~ab2kltmmeg<ma}=jqNuSP]koͅ-)RTe\Nghttuψ̑x_szNceuRAmn tYukx|zOnae\NNP!NQ[ehmsBvwz|oҊ|ϑuR}+PSgmq3t*W`tAXm/}^N6OOQR]`s|}o#,BTojpŒ2RAZ^_g|iijmobrr{~KΐmQy2֊-PTqjkČ`gNNkhi~nxU _NN*N1N6NYzUYPYNYZYXYbY`YgYlYiYxYYY^OOYYYYYYYY%ZZZZ ZZ@ZlZIZ5Z6ZbZjZZZZZZZZZZZZZZ [ [[2[Z*[6[>[C[E[@[Q[U[Z[[[e[i[p[s[u[x[ez[[[[[[[[[[[[[[[[[[[\\\ \\ \"\(\8\9\A\F\N\S\P\O\q[l\n\bNv\y\\\\Y\\\\\\\\\\\\\]\ ]]]\]]]]]"]]]]L]R]N]K]l]s]v]]]]]]]]]]]]]]]]]]]]] ^^^^^6^7^D^C^@^N^W^T^_^b^d^G^u^v^z^^^^^^^^^^^^^^^^^^^^^^^^_ _]_\_ ___)_-_8_A_H_L_N_/_Q_V_W_Y_a_m_s_w_____________________`_!`````)``1```+`&``:`Z`A`j`w`_`J`F`M`c`C`d`B`l`k`Y``````````````````_````Maaa``a``a!a`` aaGa>a(a'aJa?acMcdOcccccvcccccckciccccccccccd4ddd&d6ded(ddgdodvdNd*eddddddddddddddd ddbdd,eddddedeee$e#e+e4e5e7e6e8eKuHeVeUeMeXe^e]erexeeeeeeeeeeeeeeeeeerg ffesg5f6f4ffOfDfIfAf^f]fdfgfhf_fbfpffffffffffffffffff?ffffffggg&g'g8.g?g6gAg8g7gFg^g`gYgcgdggpgg|gjggggggggggggggggggggggjhFh)h@hMh2hNhh+hYhchwhhhhhhhhhjhthhhhih~hihih"i&ih ihhhh6iiihh%ihhh(i*ii#i!ihyiwi\ixikiTi~ini9iti=iYi0iai^i]iijiiiiiiiii[iiiii.jiiiiiiijji kiiijijiji jjj#jjDj jrj6jxjGjbjYjfjHj8j"jjjjjjjjjjjjjjjjjjjjjkjkk1k8k7kv9kGkCkIkPkYkTk[k_kakxkykkkkkkkkkkkkkkkkkkkkkkkkkkllll$l#l^lUlbljllllll~lhlsllllllllllllllllllmM6m+m=m8mm5m3mm mcmmdmZmymYmmmommn nmmmmmmmmmmmmmmmmm-nnn.nnrn_n>n#nkn+nvnMnnCn:nNn$nnn8nnnnnnnnnnnnnnnnnAooLpnnn?on1on2on>oonozoxooooo[oomoo|oXoooofoooooooooooooooo p popppopptoppp0p>p2pQpcppppppppppppp qpqqeqUqqfqbqLqVqlqqqqqqqqqqqqqqqqqqqqq rrr(r-r,r0r2r;rsNsOs؞Wsjshspsxsus{szsssssssssttot%ts2t:tUt?t_tYtAt\titptctjtvt~tttttttsttttttttttuuu uu uuuu&u,uz7zCzWzIzazbzizpzyz}zzzzzzzzzzzzzzzzzzzzzzzzzzz{{ {{3{{{{5{({6{P{z{{M{ {L{E{u{e{t{g{p{q{l{n{{{{{{{{{{]{{{{{{{{{{||{{`||||{{| |{#|'|*||7|+|=|L|C|T|O|@|P|X|_|d|V|e|l|u||||||||||||||||||||||;|||||}}}} }E}K}.}2}?}5}F}s}V}N}r}h}n}O}c}}}[}}}}}}}}}}}}=~}}}}}}}}}}}}}~ ~#~!~~1~~ ~ ~"~F~f~;~5~9~C~7~2~:~g~]~V~^~Y~Z~y~j~i~|~{~~}}~~~~~~~~~~~~~8:ELMNPQUTX_`higxqܘ !(?;JFRXZ_bhsrpvy}Qۀـ݀Āڀր )#/KF>SQqneft_Ɂ́сف؁ȁځ߁ )+83@YX]Z_dbhjk.qwx~߂҂ނ܂ ق5421@9PE/+#|su΃؃  " 8m*(ALONIV[Zk_lot}:A?HLNPUblxz|bȌڌ  N͌gmqsύڍ֍̍ۍˍߍ B504JGILPHYd`*cUvr|ƎŎȎˎێ  &3;9EB>LIFNW\bcdڏ!  '659OPQRI>VX^hovr}Hbې20JVXceisrɑˑБ֑ߑۑ,^WEIdH?KPZϒD."#:5;\`|nV֓דؓÓݓГȓ6+5!:ARD[`b^j)puw}Z|~ʕoÕ͕̕Օԕ֕ܕ!(./BLOKw\^]_frlΖ˖ɖ͖Mܖ Ֆ$*09=>DFHBI\`dfhRkqy|z×Ɨȗ˗ܗOz 8$!7=FOKkopqtsĘØƘ !$ ,.=>BIEPKQRLUߙۙݙؙљ+7EB@C>UM[W_bedikjϚњӚԚޚߚ"#%'()*./2DCOMNQXtʛƛϛћқԛ:   .%$!0G2F>Z`gvx *&#DA?>FH]^dQPYrozĝƝϝٝӝuy}a̞ΞϞОԞܞޞݞv!,>JRTc_`afgljwrv/XiYdtQq      !"#$%&'()*+./01456789:;<=>ABCDEFGHJKLMPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ #z     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOQRSTUVWXYZ[\^_ !"#$%&'()*+,-./0123456789:@ABCDEFGHIJKLMNOPQRy~      !"#$%&'()*+,-./0123456789:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[  @AVW`ajk             ! " & 0 9 :  !"!""")"H"a"d"e"# #!#%% %%%%%$%,%4%<%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%%%%%%%%%%utf8charwchartucs2beucs2leutf16beutf16leucs4beutf32beucs4leutf32leasciiusasciiiso646iso646usutf16ucs4utf32ucs2eucjpshiftjissjiscp932iso2022jpgb18030gbkgb2312big5bigfivecp950big5hkscseuckrksc5601ksx1001cp949iso88591latin1@iso88592(WN)T5UVn"\N_XEVo 6W\I#@d1 %c25C4e5MMYts7J#@t9 s:C<e=NY`iso88593(( )4G.\$,2-DUG/@\# (1$243D#4xd5e6܄7#,9褣:;#<|d=>%`iso88594($RT)T%H["+Sd_X5QH\5P#0cJ %c25 J4LTc5؜6t7#8cJ s:NJDTLc=>x`iso88595(D'tUguevܵҝw߁xWy硗zמ{|W}ᗟ~ןX" 2ؠBRXbrء&b"Hb&b*"iso88596(bihlp)tix|'Z"2ڨB)iso88597(LL($l)*@İ",--9.dQVeafq֙gh@iZjZk[lF[m݆[n[o\p G\q\r-\s=iso88598( (b)r*+",b-r. BIdFdJ.dN> eRNIeV^eZn%40iso885994E#4Tc5d6ܰ47#8c9褣:;#D?iso885910($H()5ATVrUP4QH)-6EdWsE P#0cJ %c25344TcMW؜6t7#8cJ s:;DLiso885911tis620(x):*z***:+z+++ ;,{,*,:,J;-Z{-j-z-;.{.骻..;/iso885913(\,(`l)ؤ*1",b-.9AcD %E RMU4CUc5gW%7AsD VE!ŔMV?iso885915latin9)$R)V*+",rb-s.G!/#0c1$243D#4Tc5d6t7#8c9褣:;#?iso885916(TPN$c\)V*n\Nr]l-s5.G!V\#@d1$243$4eSee6X7#@d9褣:;$<eTf>\?cp1250windows1250 $P1st\Oe%[LLo0lPi5[WNd)2* \Nb-D.7 S\I#@d1 %c25C4e5MMYts7J#@t9 s:C<e=NY`cp1251windows1251 MWqs$wqw NLo0|("t"vh)ѥB*ub.b-,.&V7b߁xWy硗zמ{|W}ᗟ~ןX" 2ؠBRXbrءcp1252windows1252 $P1]s}u\G LLo0ĂlH0W["(b)*+",b-./#0c1$243D#4Tc5d6t7#8c9褣:;#?cp1253windows1253 $P1]st LLo0 ,(b)*Jİ",b-9.dQVeafq֙gh@iZjZk[lF[m݆[n[o\p G\q\r-\s=cp1254windows1254 $P1]s}u\GLLo0ĂlH@["(b)*+",b-./#0c1$243E#4Tc5d6ܰ47#8c9褣:;#D?cp1255windows1255 $P1]s}u LLo0Ă "("b)r*+",b-r.//3X7@:c>d]z%aBIdFdJ.dN> eRNIeV^eZn%40cp1256windows1256 $OZ1]s}u,GQziNLo0ĘlH-̰)(b)*+",b-2. ihlp)tix5{٧ *z9褣:&;.h8=>4pcp1257windows1257 $P1st .LLo0  (`)ؤ*1",b-.9AcD %E RMU4CUc5gW%7AsD VE!ŔMV5?koi8r 3\7㜳;\w`-vc2. ̰r=> A =4E}4I+4M;ttPG-TWmXgu*`8` .`z JX`jhbha}^}7x^z^{|W^xg}g_~koi8u 3\7㜳;\w`-vc2. ̰r=> " MbE}4I4M;ttEmuTWmXu*`8` .`z JX`jhbha}^}7x^z^{|W^xg}g_~cp437 8S9ꬃ;CL1ɘc =ȳO>XÍ(2]3>D.J/.`-6:? 5CGsK+7s3tH }5NuVK=FtX\s\{ֳ}cpWqmm*#w-1|˰|K 26(cp850 8S9ꬃ;CL1ɘc =ȳO>X >`s ]3>D.J/.`-6:# 0DsKR7s3<0H }5N5)@2ȴԌ3\s\|C4TS?hM6t -"/r.rK.26(cp866 ߁xWy硗zמ{|W}ᗟ~ןX" 2ؠ`-6:? 5CGsK+7s3tH }5NuVK=FtX\s\{BRXbrء}Hו݊|K&26(ibm1047cp1047$`4 4D !d #t" (p$"`Db$Tb d&T "93N9# <&:;| *- 13L1Dc %|$243̀@Ѓ؄!dah.O,mqȡ.b )1uqy/l+R-b / *tA5{!DaH$ =3O=}(M8QH>?\3UXqYh! 5H3M50 4` 806d'^[yY]^[nN]yesnoSunMonTueWedThuFriSatSundayMondayTuesdayWednesdayThursdayFridaySaturdayJanFebMarAprMayJunJulAugSepOctNovDecJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberAMPM%a %b %e %T %Y%m/%d/%y%H:%M:%S%I:%M:%S %p%m/%d/%y0123456789%a %b %e %T %Y%H:%M:%SLC_CTYPELC_NUMERICLC_TIMELC_COLLATELC_MONETARYLC_MESSAGES    $*2?HTf$TH2Te$ HTd @|$͌?ŌiBD?@!?-Dt>F<`Qx;9@ %z8"6i5DNn)W'4b<ACcQޫa:n$MBI .)>5D.&pA~_֑9S99_(;/ Zmm~6 'FOf?-_'u={9Rk_]0V{Fk 6^ae_@h'sM1Vɨs{`kGg Y*vDW>3~?2O}2&=k^5:|!j$|n0-w;C,MA ]}Fq-ƚ3b|7U>Mvd*p׫c|zWIV;8$#֊wZT# 1fjWaG~"e2`l6 ]?X;ޛ"((XM2}P[.4bH[HJCg_Bja (ә\wƒa<sxZo׽-c&gUE6(aw&FYDMC)Ip>(q>. E {.G{2/ Umrk1˖yJAy߉蔗1k__6HglqrB]2 1%t90 Kh,XGt$}nHrSQ 3K~ch>_@]UR)7dm2H2[LuNqETn *if']P;vIk}'i)̬Tjى,rPw0p'qfId=݃?C 1A9p;7+\ZlK8Yvba˻lj@Iu'" &/dv ;3Q:\&mM-zV? +@m19 [ƭKNʥ76BhcvhR71 dMf)e0WVG:ju(0f"=W6 NB3#Oe ?[x#v{rƦSonJXڷfv-íwH]ƀ/?\m*۶%:SW)-K~v{Y*ܷ-vl>pn(>ag3*Mmng91[H0-C%a5p0˸llZݠ!oGb\paIkVRPU7շ3n_]0.26!i'w @-O͠ /] B}ʢj\.U'U dA*k%{4hjOJ*OZ-ZǕ M :W_?8 q݆޶`MekQUHr;@5{EN)A|ddپ1wXi:<FFUu_ҽn.]D>Bać)"|o5׍nj|]tkn>r{jϩ)sɺQ t$}`t؊ , ~f)zvVE~6ė1'n6بV-oW4,V k^>*_ J;m,Ԅ.5/9a8!D Jj/SNT"*U pid&Z`?R4-4]^`g3aXWQ>qH-!,FYzTOVy"68"gU&8Q 3iHeL6!{J!@GUt:gB^_{gzU+#AUYn!*9GI@VY+ZGņCb!;,ya*L{,C&x<{:&g e+=| Q'ci)h( D Npc~|#2V!*o~MQa6:rm9zk2\F'[4wUYMqe/"+z<\3&:0yE>Hz>ư>h㈵>-C6?MbP?{Gz???$@Y@@@@j@.AcAחAeA _BvH7BmB@0BļB4&k C375'78o: #<=? ABzD@FPG$tIKn:Yau: ?= jIh?a KP&h&\?]ny?t*JUI_?j}{ͷ?*b.Kim?umV#W? ezxʫ)?4Lk^ zo ?fF6XO?&†W2ı.n?bX9v/$?{GzGzG???@@@@8 @@H@-1@@x}@P@* @nt#@ J&@T #*@Ak-@@cR0@?tӰ?lX?Q[?{Q}?Z?G^v?Rݛ?i 7?X?_{3|?ڐ?@En[v?B#Kj?Pο?R B.?8C+eGG@#Kj>Pο.?R B.?(.H ) # jX 5 Ob p N ʊ4 蔍0& Љ -  n ` C Sv ऌpPC  ډ@ lq@Xx` Ӎ( 3 pb  / 7 `0L ʉ_@ 0j0 V pA  0   0 l h8X o JW 78 X ҋ 8p I `*  0Ѝ @  g x  $ X ӋP0 ` x upc fɼg j?NjP'l?,"Q#m?>O~Gz?xE4' |?VW+!l3/~?B8dg`CuB?(I(̔X?LDƗk/z۟W?if 7?6?sMs:?N߬BYfۘr?A{k_+:?8d㘓U(??{n/o?Lj<@d [?lгEG"? %p@q%,? * ")Uؽ?} MѦ ?&*}?Q{n@? ?ݑ #1j?2ٮN %0?oM2+ܫ?XC4ݒ)?b=W HX?bͭǃ+?&< Ȉ?8 -iiS5?Br9E@? ([sH?aˑ/?P)c(c ? /Ub!?Yl#V禇#?b޷*Xc*%?h0(sW'^V&?<\l 8VM(?"P]Q)?$ʏSF +?>s6Ց0@nZ(-?9R]a.?c0FZRqo0?0S2?h aoA&3?;7v4b )Ul5?*EE/PEqss7?0վٰZX]8?nYN}:?(@H:12"A[#B#d=?{A JP??ʺ=[2r`A?(Cm ]C?$ 61ВD? "Y%wF?&/i;<\+jH?or=} 2J?6.z9qbSK?6;ݟ)M? i=ji'O?f`MR/d,mQ?kI<iBS? TCbR ٥LU?dGn}RksV?TCs+R|I-X?QB}Z?~iKpkh\?9 LZv^?fpH*Yom^`?oKXGb?"NLqv1Lc4d?.)}I"R%#f?'rŁ0D]h?+eGg@8CB.v:; ??fz^n?g5RҌ?m{]<lX?<2? n4jf?/*RVQ[?UNP1l?չ#ɑ-?U\Ӏ ?MuM<1 ?LtB<1Lp?J]9ݏ<d?[;_?hPKJ˩:7?-Qfm?6>q4?γ-?mL*H<"4L?i(z`E?[HX*.! ?Ig,|P?`cC<-a`?d; fZ~dxt_u?}JtH?U2gBV? ^˜T'?47;iL?:^#F?nWrPԔD٨?[g?11̐!Ղ_{3|? G;*)F?ӈ:`tF ?3ƿݣ?WĿ09 XJ?$¿"S?ZYb<n?uG_H?[W{хX#?`'"S?GL:w ?@x?ـY?B}8@{>?o;%s?wOz\ Q? Ũ# 0?x)&j!~%? wk~?PS?eD???M?Z:W?@W2?=?Р?8w?@r?CMr ?`P?cuܲ?v?Q?? wC?L O+?@ގ?`l}?j ?3.n6 ?ί ?9P)&p?g y?1'm?h????gI?NF?|p?: -?9 ?P Q?Y?q?m?}?XҿEB*?')ѿ߽"?H+mѿ4G?gAѿ@(C?пȣx>?п%?cRGп4$?E"Ͽ -m?uJGϿT9S?0=DοZD':?D οA ?w)`Ϳ>ڂ?̿W]?V) ̿L ?˿+`?ʿu+$?.@EʿП"?hwɿz[u?0Him ɿ6I]?E qȿ@MyF?0ǿ$\/?pb<<ǿI uw?`7ƿ9>7?T1 ƿAN?0$v}sſѩ ?0{Ŀ*?Q,FĿ z?ÿ0`r?IkÿWW}?@T¿;h?yS?,%`;ɪ>? W@+*?I<2A̖y?KW ?@@7 HMI?@>ieR?Ng|~W#?`/ yܺ&t|?(, ?rFp{?%w?8Et1L5d?m^_'Q?\HL2??jM3r,?`y 1(0? bF4?jlkN?@wJڭΟ*]?켫!,cD?@|?3X6ƃ/?g^q9۝?eI\R?@dI(N/{?r5j?RRU,Y?b=,II?(8? {12ye(?]5Hs'$?x?$y `&?o?ta?=5A܇?.c?ģΓ?ͭ<%???ذ?x?[? t?@\? :?Wj'?V` ?u?w? S?| ?8.?\f\?WY?^,'?j5vڷ?,k>n?`NC?ym?` x?m7m&? 2C?X]X?`q1 ?3&?@+g???G?u?0n&?(J ?PŦ?,>e?3eI*??`?hc_Y?)c%? 0?w?`Cr?%g?m&w?Wy?0O? V?/2?8B.?0gǓW.=`UUUUU?NUY?z)UUUEH[I?&+??ȹ,ֿV7($<?Xտ `?XEwvտmPդb#@?-տg ?xw_Կ>)i?`‹aԿ̄LH/=?0Կ: B<?HiULӿ`QƱ =?GӿMY%=? ҿ+{&=`?Zҿ?϶=`?Zҿ?϶=@?xA)ҿvS($Z ?iѿTh?\gѿ3=?HѿfZĨ&?s$п~k ?д%@п-6?д%@п-6?@^mϿ<*W =`?`˭ο$&+=@?*n'ο?TO/ ?Ok!\Ϳhʻ!=?̿4hOy'=?̿4hOy'=?-t˿1N=?Nʿf?cN<?#ʿFd%?#ʿFd%?PZRɿ*`? eȿ +=@?ǿXJSr+=@?ǿXJSr+= ?ƿfⲣj?p0ſ9PC?p0ſ9PC?&ſ[ ?l+MĿ?`F;? V]2%?ѧ?Nۥ^,=`?MZ?]<i,@? ?2흩<?@Y]^3?G:\#=?`j?h+?@X?ӬZF&=`? 9Ǿ?Eh-@?9? O4%?'?-x!=?#~+?48D,=? a?l=?e?rK#/<@?3=?xTy%= ?'?}i3&=?NW?x.<,=?pu?!%?PD?Cpf`?9믾?,T=@?ZZ?oX(=?nE1cbj2y/proc/se8>ı!>wQlV?RO~>LUUUUU?^ ߿iPB>B:SU?'V?f @@T!?1cba=@T! @1cba=0|@@T!@1cba=m0_?-DT!-DT!?`a=sp.;.;I %{9P!?cbaQ>`!`!?}W>a*?|Z:=+Z>?IUUUUU?IUUUUUſn?wTUU?F;>t*?\3&2?sS`u󾦒7~?h&0?eDC?W?(V"mm?n&?7d?A?z?cUUUUU?b?N]h?3?r8?ZT?4MU? =?uI?;h(?.Ÿ?Yl?UDU?ȊY*@}o?K-':@\3&<9B.?":? v$K{?/lj,DQ=Рf ?R-ޭ?n LE?mt?$I?q#q? UUUUU?똙?-DT! \3&<-DT!IJ`?? $(?QD?a?-DT!@!3|@5WT?? 8aQk?땗Y6*?5c`&?(>=c?\c? Q_?3oJ?ø@?#f>?M?8uYc??bt﮿JHG@\š#,H([@WeRT@pW!z@\g@h(!+@f"(Ld@q ){@ 0O@!jR 5a@&A%@vp3@`s4?5d `4?b-qBp6ct}@?8ܛN8~;@Y.ja@j$h@(u@Q@C]d@ "\t@Z_U 1@Q&V>@ޅp?Jo94?in? aBCо"]!?k"t?hf#w?6UL?OQ*? yw?i}?hn?qy O @9B.@B.?v۪?UZ?? 9DP-@:eSj@\|@""Ef@@Kp@Kq@0@J)?@o,@w'?4>>ž?z]>@kT;1>0,m= (k)AC+ڃ(A?TRfAckNX@f@m>M@%0cm@4[R'@,?9[6xd@ ۾WTz@r#@mY{g@!ڠ;@S@ȝ @鈇 `@=W@Lr?C^T@ٌ)== bO٪@(jl<@cMK@NT-@!|d@^Ye@ݮ-OE@a @B?C"aH@j2>mBP ?]t>ՄT;>?s39P ѱ>WҦ?(?Ȃ?ȳ?i=ŽԫN;WU>\s>;P=k M6?-d>lL?x??ɑp?˙?QN @zk]@ۢm@,R_@tIK@1@dq7|(@@ vB?Պo5@DU|>- zi@,@ŗ @O'M܅@݂'z@2}E@.ey@5z*@leE\@Q^o0@@WD@g6@ ~@IR-@&E[@cn6@C?=cM@}g=S.|mY@1.}֋@#7P|[@_3 u@>GH@7,MV@)ѦHA@^v@{![?4IeA@ݞ!)>k><^~c@)H%@I@ho@Rn96_5Jޣ)Eh3NiH>dx=@&D&i\wW$ArS%A^WAb@jeЦt@$vSмygE0?[ަ,d@.oK6|K@ѺmW@)d @9{1@hOs1itlmfK Y?ZQT@C1 )p`K z@T@|DNh@>1@\_fk_GӇl]qL3pTQ?g#G@Oȏө5~*=,}Ɉ5>?3> Fj>h>d͹V_(?a,G W?S~c ?m0_*w9P=[:>VxNZ>>dw%l*?DHU_?M? e?,)vө?<f?` ?Za??Vcb?RBtp>7X?M,?}P?]?oS?ƶ@?O@~?kحg?bU>?{T"?Ȱ}gij?L?>5?sA?8$4a L?lm4?.ӂb?-V?.n?j쑺?Dpx? f?AՔB?5ߨɠ? ƍ'?8+?PBü? +g?$ N?aWZj?|SU?PDvI?PP?o\G?+%@]@?aץ@E?9hs&^?@>[A}I?a~H?u.t?徜?'?YO?ӓ?x6?tbE?C ZLgK?AˀC?8ϘJ?\.lf?;UUUUU?i}ɐ?6+Y=`PD?DR>?˖dF?x ?Y"$I?xq?UUUUU?? {?խ8=q_@E@E@  /bin:/usr/bin%s*$2a$00$abcdefghijklmnopqrstuu8b 34345_0.../9ZzX7iSJNd21sU_0.../9Zzx22/wK52ZKGAx   test$1$$5$rounds=rounds=%u$$5$%s%.*s$$6$$6$%s%.*s$touppertolower/dev/nullAssertion failed: %s (%s: %s: %d) Dynamic linker failed to allocate memory for error messageUnsupported request %d%s: : /dev/ttyrbe/etc/shellsrbUTF-8%NLSPATHLANG_.@.@n!=1;Plural-Forms:nplurals=plural=utf8Ê̄Ê̌ê̄ê̌ASCIICC.UTF-8LC_ALLPOSIXMUSL_LOCPATH.%*.*fmessagesHALT: ERROR: WARNING: INFO: TO FIX: MSGVERB/dev/console%s%s%s%s%s%s%s%s labelseveritytextactiontagPWD: unrecognized option: : option requires an argument: : option is ambiguous: : option does not take an argument: %*[^ ]%*[ ] %n%*[^ ]%n %n%*[^ ]%n %n%*[^ ]%n %n%*[^ ]%n %d %d%s %s %s %s %d %d /dev/ptmx/dev/pts/%d[]%b %e %T<%d>%s %n%s%s%.0d%s: %.*s2>/dev/nullsheval "printf %s\\\\0 x $1 $2"-c/bin/sh/dev/shm/%.2X:%.2X%d.%d.%d.%d.in-addr.arpaip6.arpa/etc/hosts/etc/services/udp/tcptcpudp%s%s%s %d.%d.%d.%d%x:%x:%x:%x:%x:%x:%x:%x%x:%x:%x:%x:%x:%x:%d.%d.%d.%d:0/etc/resolv.confoptionsndots:attempts:timeout:nameserverdomainsearch127.0.0.1/etc/group/etc/passwd/etc/tcb/%s/shadow/etc/shadowre,%s:%s:%u:%s%s%s:%s:%u:%u:%s:%s:%s %s:%s:%.*ld:%.*ld:%.*ld:%.*ld:%.*ld:%.*ld:%.*lu /usr/local/bin:/bin:/usr/binHOME [[:alnum:]_][^[:alnum:]_][[:space:]][^[:space:]][[:digit:]][^[:digit:]]rwa/tmptempw+/tmp/tmpfile_XXXXXX/tmp/tmpnam_XXXXXX-0X+0X 0X-0x+0x 0xINFNANnaninf-+ 0X0x(null)#+-0%*s%%%s%s%s%s%s*.*%c%c%*%.*s%.0d%s%c%%lln%.*e%.*f000000000000000%.*gXXXXXX/proc/self/task/%d/comm/dev/shm/tmp-%d/etc/localtimeTZUTCGMTTZif%.3s %.3s%3d %.2d:%.2d:%.2d %d __kernel_clock_gettimeLINUX_2.6.39DATEMSK%m/%d/%y%Y-%m-%d%H:%M%H:%M:%S+%lld%+.4ld%lld%*lld%0*lldLOGNAMEError allocating constructor queue: %m State of %s is inconsistent due to multithreaded fork : %.*s/%sreaddir64_r(local)readdir_rError relocating %s: %s: symbol not foundError relocating %s: %s: initial-exec TLS resolves to dynamic definition in %sError relocating %s: cannot allocate TLSDESC for %sError relocating %s: unsupported relocation type %dInvalid library handle %pSymbol not found: %sError relocating %s: RELRO protection failed: %mError preparing lazy relocation for %s: %m/lib:/usr/local/lib:/usr/lib %s => %s (%p) $ORIGIN${ORIGIN}/proc/self/exe%.*s/etc/ld-musl-aarch64.path__libc_start_mainstdinlibc.soError loading dependencies for %sError loading shared library %s: %m (needed by %s)__dls2b__dls3ldd [args]LD_LIBRARY_PATHLD_PRELOAD/proc/listlibrary-pathpreloadargv0musl libc (aarch64) Version %s Dynamic Program Loader Usage: %s [options] [--] pathname%s %s: cannot load %s: %s %s: %s: Not a valid dynamic program %s (%p) linux-gate.so.1%s: Error getting %zu bytes thread-local storage: %m mallocaligned_allocLibrary %s is not already loadedError loading shared library %s: %mCannot dlopen while program is exiting.Error recording dependencies for %sj?$.Dsp"8 1).lN!(Ew8fTl 4)P|ɵՄ? Gy 1Ѭߘr/Ḗ~&jE|,G$l iciNWqX~=t XrX͋qJT{YZ90`*#`(yA8۸y:`l>w'K1/x`\`U%U攫UbHW@cj9U*4\̴ATr|*oc]ũ+1t>\3֯\$lS2zw(H;Kkē!(f a!`|H2]]]u#&܈e>#Ŭom9BD . Ji^Bh!la gӫҠQjh/T(3Ql n;zP;*~ev9>YfCoEå}^;uos D@jVbNw?6r=B$7H ۛIrS{y%P;LylO`@ž\^c$johSl>9oR;Qm,0DE ^J3(fK.WtE9_ ӹyU 2`yr,@%g̣饎"2u<kaP/R=2`#H{1S>W\o.ViB~(2gsUO'[iXʻ]=!lJ[-ySeEIҐK3~ˤAb Lw6~д+MەqՓkю%ǯ/[{AI~-%^q h"W6d$ cUYCxSZ٢[} Źv&ϕbhAJsN-GJ{RQ)S?Wƛv`+t恵oWk *!ec.4dV]-SGjnpzKD). u#&İn}ߧI`fqilRdVឱ¥6)L u@Y>:䚘T?eB[k?ҡ08-M]% L&pc^?kh >\D}W7: P tAu8/;21>8TNmO Bo ,y|$ryVw.?rU$qk.P̈́GXzt}K:zfC cdG27;C$CMQe*P:qUN1w_V5kǣ;< $Y,n<pEㆱo ^*>Zw=Ne)։>%fRxL.jxS<- N=+6&9`y#RnfE{7(2åZl!Xeh;/ۭ}*/n[(!pa)uGa0a4c\s9pL ު˼,b`\ndi#PZe2Zh@*<1! T_~}=b7w-_h)5ǡޖXxWcr"ÃF T0.SHُ(1mX4a(s<|J]d]B> EꫪOlOBBǵj;Oe!AyMjGKPb=bF&[$ti GV[ Htb#*BXU >ap?#r3A~_;"lY7|`t˧@n2w΄PU5ai Z .zD4Egɞs͈Uy_g@Cge48>q(= m!>J=+hZ=@&L4)i Av.khq$j 3ԷCaP.9FE$tO!@MpE/f m1'A9UG%ښ ʫ%xP()Sچ, mbhiHפh'?Oz|Ϊ_7әxB*k@5 ٫9N;VmK1f&tn:2C[Ah xN جV@E'H::SU kKмgUXc)3VJ*%1?~^|1)p/'\,(H"m?H܆AyG@n]Q_2Տd5A4x{%`*`lc´2Of#k>3b $;" r(-Exb}doITH}'>AcG t.no:7`L knU{7,gm;e' )̒9 i{f} ϑ^و/$[Qy{;v.97yY̗&-1.Bh;+jLu.x7BjQ满PcKkؽ%=YBD n *Ngd_ڈ鿾dW{x`M``FѰ8Ew63kBqA_^;Z4ٷ,Q+:Ֆ}}>(-}|%rZLZq)GW;()f(.y_xU`uD^mm%adâW<'*:m?!cf&(3uU4V<wQ( gQ̫_QM08bX7 z{>d!Q2Ow~㶨F=)iSHd$m-if! FEdlX [@X̻k~jEY:D 5>ʹrdfGof,ҏ"W##v215VbuZ6ns҈bIPLVq z2E{Sb%ҽ5iq"|˶+v>S@`8G% 8vFšw``u N˅؍芰z~L\HjiԐ\-% ?2aN[wߏWr:    $1$abcd0123$V9k5q1.2.5  %s/%.*s%.*s/%s/%s.mo.|&====|&=!><+-*%/ -DT! @-DT! -DT!!3|@!3|I@Iya?ު{տ=Jq?mҿ9?g:Qп?$1˿d  ?Xw OWƿ {"^?+?4JJ?^vNX#?aZ<A?? 8R?G`?Y]?j?.6S^?jW6 ? w&?-c?pG" ?Ax?~ȋ?bHSg? W0?9B.?4Hпj [W?#A ߿/dev/log  2 #   (x   @ /var/run/nscd/socket@UTC {FF{FFpF\KK^qJ6#W6i@@@@@:m!A````GwcGppp]S>ow $```` 0@P``````pK__KKK___________"____________K_zKKK_z___8gR_____ #  ```` 0@P``````p>#Z4_cw4 T04kq{W$$$$$$$$$$$$$$$$$$$$$$$$$$$AO$$$W\$$$k$$$$$$$$$$$$%CC$$$a$$fq$x$$q$$ =EJY 11 OT_f_w_[[_ ~; @"$@,(9H`Cx`DE G@P^`_`` aa( b@`ch d`ef jn@zRx $4,P!L$D#AB A l+T H E,P8 A  A Z A A]EBTLEDPlE@E A@COA A eQAI A EAA{CAVC AA ABZBBSA AA AAM<m E[nE$\A DO A $,p]A DO A T^xlp^d$^<A DO A _`0A Ja0u F<bpA D` A Y A q A ` A <DfA Da A V A t A }ip0 pgC.UTF-8 X P 0 P ` H 8 @ # # 0# # % t n( r( f0 a8 e@ wH WX sh Sx d D %   `& & & ; 8 o+(] (;   42h o$4#0%444444h . -QXόF)1[p0] xY)PhHVl͈?w+pAoz/-t ^v,p@,oWAtߠXdJ dp83640.ko.gz 2 [B . ..Dppp_async.ko.gzEppp_deflate.ko.gzFppp_generic.ko.gzGppp_mppe.ko.gzHppp_synctty.ko.gzI pppox.ko.gzJh pptp.ko.gzCbsd_comp.ko.gz :K . ..M slip.ko.gzL\ slhc.ko.gz kO . ..Q$team_mode_activebackup.ko.gzR$team_mode_broadcast.ko.gzS$team_mode_loadbalance.ko.gzT team_mode_random.ko.gzUteam_mode_roundrobin.ko.gzP\ team.ko.gz 8PTbondingethernet-hyperv4 macvlan.ko.gz5( macvtap.ko.gz0ipvlan:net_failover.ko.gzN tap.ko.gzV tun.ko.gzW< veth.ko.gz6 mdio= phyBLpppOteam\vxlan^ wireguard, geneve.ko.gz/ ifb.ko.gz@= phyB ppp N@5.apk.5a7b229c94fe8af9f425c3910e2252b2e409b64232568b35O team@Wx5.apk.eb8dbdec9f1dc670ddebb715ab0100a8e101efd0a9c01154 œ dummy.ko.gz3 macsec.ko.gz;netconsole.ko.gzXvirtio_net.ko.gz[( vrf.ko.gz<@ nlmon.ko.gzKLslipYvmxnet3 bareudp.ko.gz ՛n+<@;L^jF@ The Registered Ports are not controlled by the IANA and on most systems #> can be used by ordinary user processes or programs executed by ordinary #> users. # #> Ports are used in the TCP [45,106] to name the ends of logical #> connections which carry long term conversations. For the purpose of #> providing services to unknown callers, a service contact port is #> defined. This list specifies the port used by the server process as its #> contact port. While the IANA can not control uses of these ports it #> does register or list uses of these ports as a convienence to the #> community. # socks 1080/tcp # socks proxy server proofd 1093/tcp rootd 1094/tcp openvpn 1194/tcp openvpn 1194/udp rmiregistry 1099/tcp # Java RMI Registry lotusnote 1352/tcp lotusnotes # Lotus Note ms-sql-s 1433/tcp # Microsoft SQL Server ms-sql-m 1434/udp # Microsoft SQL Monitor ingreslock 1524/tcp datametrics 1645/tcp old-radius datametrics 1645/udp old-radius sa-msg-port 1646/tcp old-radacct sa-msg-port 1646/udp old-radacct kermit 1649/tcp groupwise 1677/tcp l2f 1701/udp l2tp radius 1812/tcp radius 1812/udp radius-acct 1813/tcp radacct # Radius Accounting radius-acct 1813/udp radacct cisco-sccp 2000/tcp # Cisco SCCP nfs 2049/tcp # Network File System nfs 2049/udp # Network File System gnunet 2086/tcp gnunet 2086/udp rtcm-sc104 2101/tcp # RTCM SC-104 IANA 1/29/99 rtcm-sc104 2101/udp gsigatekeeper 2119/tcp gris 2135/tcp # Grid Resource Information Server cvspserver 2401/tcp # CVS client/server operations venus 2430/tcp # codacon port venus 2430/udp # Venus callback/wbc interface venus-se 2431/tcp # tcp side effects venus-se 2431/udp # udp sftp side effect codasrv 2432/tcp # not used codasrv 2432/udp # server port codasrv-se 2433/tcp # tcp side effects codasrv-se 2433/udp # udp sftp side effect mon 2583/tcp # MON traps mon 2583/udp dict 2628/tcp # Dictionary server f5-globalsite 2792/tcp gsiftp 2811/tcp gpsd 2947/tcp gds-db 3050/tcp gds_db # InterBase server icpv2 3130/udp icp # Internet Cache Protocol isns 3205/tcp # iSNS Server Port isns 3205/udp # iSNS Server Port iscsi-target 3260/tcp mysql 3306/tcp ms-wbt-server 3389/tcp nut 3493/tcp # Network UPS Tools nut 3493/udp distcc 3632/tcp # distributed compiler daap 3689/tcp # Digital Audio Access Protocol svn 3690/tcp subversion # Subversion protocol suucp 4031/tcp # UUCP over SSL sysrqd 4094/tcp # sysrq daemon sieve 4190/tcp # ManageSieve Protocol epmd 4369/tcp # Erlang Port Mapper Daemon remctl 4373/tcp # Remote Authenticated Command Service f5-iquery 4353/tcp # F5 iQuery ntske 4460/tcp # Network Time Security Key Establishment ipsec-nat-t 4500/udp # IPsec NAT-Traversal [RFC3947] iax 4569/udp # Inter-Asterisk eXchange mtn 4691/tcp # monotone Netsync Protocol radmin-port 4899/tcp # RAdmin Port sip 5060/tcp # Session Initiation Protocol sip 5060/udp sip-tls 5061/tcp sip-tls 5061/udp xmpp-client 5222/tcp jabber-client # Jabber Client Connection xmpp-server 5269/tcp jabber-server # Jabber Server Connection cfengine 5308/tcp mdns 5353/udp # Multicast DNS postgresql 5432/tcp postgres # PostgreSQL Database freeciv 5556/tcp rptp # Freeciv gameplay amqps 5671/tcp # AMQP protocol over TLS/SSL amqp 5672/tcp amqp 5672/sctp x11 6000/tcp x11-0 # X Window System x11-1 6001/tcp x11-2 6002/tcp x11-3 6003/tcp x11-4 6004/tcp x11-5 6005/tcp x11-6 6006/tcp x11-7 6007/tcp gnutella-svc 6346/tcp # gnutella gnutella-svc 6346/udp gnutella-rtr 6347/tcp # gnutella gnutella-rtr 6347/udp redis 6379/tcp sge-qmaster 6444/tcp sge_qmaster # Grid Engine Qmaster Service sge-execd 6445/tcp sge_execd # Grid Engine Execution Service mysql-proxy 6446/tcp # MySQL Proxy babel 6696/udp # Babel Routing Protocol ircs-u 6697/tcp # Internet Relay Chat via TLS/SSL bbs 7000/tcp afs3-fileserver 7000/udp afs3-callback 7001/udp # callbacks to cache managers afs3-prserver 7002/udp # users & groups database afs3-vlserver 7003/udp # volume location database afs3-kaserver 7004/udp # AFS/Kerberos authentication afs3-volser 7005/udp # volume managment server afs3-bos 7007/udp # basic overseer process afs3-update 7008/udp # server-to-server updater afs3-rmtsys 7009/udp # remote cache manager service font-service 7100/tcp xfs # X Font Service http-alt 8080/tcp webcache # WWW caching service puppet 8140/tcp # The Puppet master service bacula-dir 9101/tcp # Bacula Director bacula-fd 9102/tcp # Bacula File Daemon bacula-sd 9103/tcp # Bacula Storage Daemon xmms2 9667/tcp # Cross-platform Music Multiplexing System nbd 10809/tcp # Linux Network Block Device zabbix-agent 10050/tcp # Zabbix Agent zabbix-trapper 10051/tcp # Zabbix Trapper amanda 10080/tcp # amanda backup services dicom 11112/tcp hkp 11371/tcp # OpenPGP HTTP Keyserver db-lsp 17500/tcp # Dropbox LanSync Protocol dcap 22125/tcp # dCache Access Protocol gsidcap 22128/tcp # GSI dCache Access Protocol wnn6 22273/tcp # wnn6 # # Datagram Delivery Protocol services # rtmp 1/ddp # Routing Table Maintenance Protocol nbp 2/ddp # Name Binding Protocol echo 4/ddp # AppleTalk Echo Protocol zip 6/ddp # Zone Information Protocol #========================================================================= # The remaining port numbers are not as allocated by IANA. #========================================================================= # Kerberos (Project Athena/MIT) services kerberos4 750/udp kerberos-iv kdc # Kerberos (server) kerberos4 750/tcp kerberos-iv kdc kerberos-master 751/udp kerberos_master # Kerberos authentication kerberos-master 751/tcp passwd-server 752/udp passwd_server # Kerberos passwd server krb-prop 754/tcp krb_prop krb5_prop hprop # Kerberos slave propagation zephyr-srv 2102/udp # Zephyr server zephyr-clt 2103/udp # Zephyr serv-hm connection zephyr-hm 2104/udp # Zephyr hostmanager iprop 2121/tcp # incremental propagation supfilesrv 871/tcp # Software Upgrade Protocol server supfiledbg 1127/tcp # Software Upgrade Protocol debugging # # Services added for the Debian GNU/Linux distribution # poppassd 106/tcp # Eudora moira-db 775/tcp moira_db # Moira database moira-update 777/tcp moira_update # Moira update protocol moira-ureg 779/udp moira_ureg # Moira user registration spamd 783/tcp # spamassassin daemon skkserv 1178/tcp # skk jisho server port predict 1210/udp # predict -- satellite tracking rmtcfg 1236/tcp # Gracilis Packeten remote config server xtel 1313/tcp # french minitel xtelw 1314/tcp # french minitel zebrasrv 2600/tcp # zebra service zebra 2601/tcp # zebra vty ripd 2602/tcp # ripd vty (zebra) ripngd 2603/tcp # ripngd vty (zebra) ospfd 2604/tcp # ospfd vty (zebra) bgpd 2605/tcp # bgpd vty (zebra) ospf6d 2606/tcp # ospf6d vty (zebra) ospfapi 2607/tcp # OSPF-API isisd 2608/tcp # ISISd vty (zebra) fax 4557/tcp # FAX transmission service (old) hylafax 4559/tcp # HylaFAX client-server protocol (new) munin 4949/tcp lrrd # Munin rplay 5555/udp # RPlay audio service nrpe 5666/tcp # Nagios Remote Plugin Executor nsca 5667/tcp # Nagios Agent - NSCA canna 5680/tcp # cannaserver syslog-tls 6514/tcp # Syslog over TLS [RFC5425] sane-port 6566/tcp sane saned # SANE network scanner daemon ircd 6667/tcp # Internet Relay Chat zope-ftp 8021/tcp # zope management by ftp tproxy 8081/tcp # Transparent Proxy omniorb 8088/tcp # OmniORB clc-build-daemon 8990/tcp # Common lisp build daemon xinetd 9098/tcp git 9418/tcp # Git Version Control System zope 9673/tcp # zope server webmin 10000/tcp kamanda 10081/tcp # amanda backup services (Kerberos) amandaidx 10082/tcp # amanda backup services amidxtape 10083/tcp # amanda backup services sgi-cmsd 17001/udp # Cluster membership services daemon sgi-crsd 17002/udp sgi-gcd 17003/udp # SGI Group membership daemon sgi-cad 17004/tcp # Cluster Admin daemon binkp 24554/tcp # binkp fidonet protocol asp 27374/tcp # Address Search Protocol asp 27374/udp csync2 30865/tcp # cluster synchronization tool dircproxy 57000/tcp # Detachable IRC Proxy tfido 60177/tcp # fidonet EMSI over telnet fido 60179/tcp # fidonet EMSI over TCP # Local services # valid login shells /bin/sh /bin/ash # content of this file will override /etc/sysctl.d/* usr/bin/[ usr/bin/[[ sbin/acpid usr/sbin/add-shell usr/sbin/addgroup usr/sbin/adduser sbin/adjtimex bin/arch sbin/arp usr/sbin/arping bin/ash usr/bin/awk bin/base64 usr/bin/basename bin/bbconfig usr/bin/bc usr/bin/beep usr/bin/blkdiscard sbin/blkid sbin/blockdev usr/sbin/brctl usr/bin/bunzip2 usr/bin/bzcat usr/bin/bzip2 usr/bin/cal bin/cat bin/chattr bin/chgrp bin/chmod bin/chown usr/sbin/chpasswd usr/sbin/chroot usr/bin/chvt usr/bin/cksum usr/bin/clear usr/bin/cmp usr/bin/comm bin/cp usr/bin/cpio usr/sbin/crond usr/bin/crontab usr/bin/cryptpw usr/bin/cut bin/date usr/bin/dc bin/dd usr/bin/deallocvt usr/sbin/delgroup usr/sbin/deluser sbin/depmod bin/df usr/bin/diff usr/bin/dirname bin/dmesg bin/dnsdomainname usr/bin/dos2unix usr/bin/du bin/dumpkmap bin/echo bin/egrep usr/bin/eject usr/bin/env usr/sbin/ether-wake usr/bin/expand usr/bin/expr usr/bin/factor usr/bin/fallocate bin/false bin/fatattr usr/sbin/fbset sbin/fbsplash bin/fdflush sbin/fdisk bin/fgrep usr/bin/find sbin/findfs usr/bin/flock usr/bin/fold usr/bin/free sbin/fsck sbin/fstrim bin/fsync usr/bin/fuser bin/getopt sbin/getty bin/grep usr/bin/groups bin/gunzip bin/gzip sbin/halt usr/bin/hd usr/bin/head usr/bin/hexdump usr/bin/hostid bin/hostname sbin/hwclock usr/bin/id sbin/ifconfig sbin/ifdown sbin/ifenslave sbin/ifup sbin/init sbin/inotifyd sbin/insmod usr/bin/install bin/ionice bin/iostat sbin/ip sbin/ipaddr bin/ipcalc usr/bin/ipcrm usr/bin/ipcs sbin/iplink sbin/ipneigh sbin/iproute sbin/iprule sbin/iptunnel bin/kbd_mode bin/kill usr/bin/killall usr/sbin/killall5 sbin/klogd usr/bin/last usr/bin/less bin/link bin/linux32 bin/linux64 bin/ln usr/sbin/loadfont sbin/loadkmap usr/bin/logger bin/login sbin/logread sbin/losetup bin/ls bin/lsattr sbin/lsmod usr/bin/lsof usr/bin/lsusb usr/bin/lzcat usr/bin/lzma bin/lzop usr/bin/lzopcat bin/makemime usr/bin/md5sum sbin/mdev usr/bin/mesg usr/bin/microcom bin/mkdir sbin/mkdosfs usr/bin/mkfifo sbin/mkfs.vfat bin/mknod usr/bin/mkpasswd sbin/mkswap bin/mktemp sbin/modinfo sbin/modprobe bin/more bin/mount bin/mountpoint bin/mpstat bin/mv sbin/nameif usr/sbin/nanddump usr/sbin/nandwrite usr/sbin/nbd-client usr/bin/nc bin/netstat bin/nice usr/bin/nl usr/bin/nmeter usr/bin/nohup sbin/nologin usr/bin/nproc usr/bin/nsenter usr/bin/nslookup usr/sbin/ntpd usr/bin/od usr/bin/openvt usr/sbin/partprobe usr/bin/passwd usr/bin/paste usr/bin/pgrep bin/pidof bin/ping bin/ping6 bin/pipe_progress sbin/pivot_root usr/bin/pkill usr/bin/pmap sbin/poweroff bin/printenv usr/bin/printf bin/ps usr/bin/pscan usr/bin/pstree bin/pwd usr/bin/pwdx sbin/raidautorun usr/sbin/rdate usr/sbin/rdev usr/sbin/readahead usr/bin/readlink usr/bin/realpath sbin/reboot bin/reformime usr/sbin/remove-shell usr/bin/renice usr/bin/reset usr/bin/resize bin/rev usr/sbin/rfkill bin/rm bin/rmdir sbin/rmmod sbin/route bin/run-parts bin/sed usr/sbin/sendmail usr/bin/seq sbin/setconsole usr/sbin/setfont usr/bin/setkeycodes usr/sbin/setlogcons bin/setpriv bin/setserial usr/bin/setsid bin/sh usr/bin/sha1sum usr/bin/sha256sum usr/bin/sha3sum usr/bin/sha512sum usr/bin/showkey usr/bin/shred usr/bin/shuf sbin/slattach bin/sleep usr/bin/sort usr/bin/split bin/stat usr/bin/strings bin/stty bin/su usr/bin/sum sbin/swapoff sbin/swapon sbin/switch_root bin/sync sbin/sysctl sbin/syslogd usr/bin/tac usr/bin/tail bin/tar usr/bin/tee usr/bin/test usr/bin/time usr/bin/timeout usr/bin/top bin/touch usr/bin/tr usr/bin/traceroute usr/bin/traceroute6 usr/bin/tree bin/true usr/bin/truncate usr/bin/tty usr/bin/ttysize sbin/tunctl sbin/udhcpc usr/bin/udhcpc6 bin/umount bin/uname usr/bin/unexpand usr/bin/uniq usr/bin/unix2dos usr/bin/unlink usr/bin/unlzma usr/bin/unlzop usr/bin/unshare usr/bin/unxz usr/bin/unzip usr/bin/uptime bin/usleep usr/bin/uudecode usr/bin/uuencode sbin/vconfig usr/bin/vi usr/bin/vlock usr/bin/volname bin/watch sbin/watchdog usr/bin/wc usr/bin/wget usr/bin/which usr/bin/who usr/bin/whoami usr/bin/whois usr/bin/xargs usr/bin/xxd usr/bin/xzcat usr/bin/yes bin/zcat sbin/zcip /var/log/acpid.log { missingok notifempty sharedscripts postrotate /etc/init.d/acpid --quiet --ifstarted restart || true endscript } #!/bin/sh # Block ifup until DAD completion # Copyright (c) 2016-2018 Kaarle Ritvanen has_flag() { ip address show dev $IFACE up | grep -q " $1 " } counter=100 while [ "$counter" -gt 0 ] && has_flag tentative && ! has_flag dadfailed; do sleep 0.2 counter=$((counter - 1)) done console tty0 tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 tty9 tty10 tty11 hvc0 ttyS0 ttyS1 ttyS2 ttyGS0 ttyAMA0 ttyAMA1 ttyTCU0 ttyTHS0 ttyTHS1 ttymxc0 ttymxc2 # Do not overwrite /etc/resolv.conf #RESOLV_CONF="no" # Use alternative path for resolv.conf #RESOLV_CONF="/tmp/resolv.conf" # Prevent overwriting of resolv.conf on a per-interface basis #NO_DNS="eth1 wlan1" # List of interfaces where DHCP routes are ignored #NO_GATEWAY="eth1 wlan1" #!/bin/sh # script for udhcpc # Copyright (c) 2008 Natanael Copa UDHCPC="/etc/udhcpc" UDHCPC_CONF="$UDHCPC/udhcpc.conf" RESOLV_CONF="/etc/resolv.conf" [ -f $UDHCPC_CONF ] && . $UDHCPC_CONF export broadcast export dns export domain export interface export ip export mask export metric export staticroutes export router export subnet export PATH=/usr/bin:/bin:/usr/sbin:/sbin run_scripts() { local dir=$1 if [ -d $dir ]; then for i in $dir/*; do [ -f $i ] && $i done fi } deconfig() { ip -4 addr flush dev $interface } is_wifi() { test -e /sys/class/net/$interface/phy80211 } if_index() { if [ -e /sys/class/net/$interface/ifindex ]; then cat /sys/class/net/$interface/ifindex else ip -4 link show dev $interface | head -n1 | cut -d: -f1 fi } calc_metric() { local base= if is_wifi; then base=300 else base=200 fi echo $(( $base + $(if_index) )) } route_add() { local to=$1 gw=$2 num=$3 # special case for /32 subnets: # /32 instructs kernel to always use routing for all outgoing packets # (they can never be sent to local subnet - there is no local subnet for /32). # Used in datacenters, avoids the need for private ip-addresses between two hops. if [ "$subnet" = "255.255.255.255" ]; then ip -4 route add $gw dev $interface fi ip -4 route add $to via $gw dev $interface \ metric $(( $num + ${IF_METRIC:-$(calc_metric)} )) } routes() { [ -z "$router" ] && [ -z "$staticroutes" ] && return for i in $NO_GATEWAY; do [ "$i" = "$interface" ] && return done while ip -4 route del default via dev $interface 2>/dev/null; do : done local num=0 # RFC3442: # If the DHCP server returns both a Classless Static Routes option # and a Router option, the DHCP client MUST ignore the Router option. if [ -n "$staticroutes" ]; then # static routes format: dest1/mask gw1 ... destn/mask gwn set -- $staticroutes while [ -n "$1" ] && [ -n "$2" ]; do local dest="$1" gw="$2" if [ "$gw" != "0.0.0.0" ]; then route_add $dest $gw $num && num=$(( $num + 1)) fi shift 2 done else local gw= for gw in $router; do route_add 0.0.0.0/0 $gw $num && num=$(( $num + 1 )) done fi } resolvconf() { local i [ -n "$IF_PEER_DNS" ] && [ "$IF_PEER_DNS" != "yes" ] && return if [ "$RESOLV_CONF" = "no" ] || [ "$RESOLV_CONF" = "NO" ] \ || [ -z "$RESOLV_CONF" ] || [ -z "$dns" ]; then return fi for i in $NO_DNS; do [ "$i" = "$interface" ] && return done echo -n > "$RESOLV_CONF.$$" if [ -n "$search" ]; then echo "search $search" >> "$RESOLV_CONF.$$" elif [ -n "$domain" ]; then echo "search $domain" >> "$RESOLV_CONF.$$" fi for i in $dns; do echo "nameserver $i" >> "$RESOLV_CONF.$$" done chmod a+r "$RESOLV_CONF.$$" mv -f "$RESOLV_CONF.$$" "$RESOLV_CONF" } bound() { ip -4 addr add $ip/$mask ${broadcast:+broadcast $broadcast} dev $interface ip -4 link set dev $interface up routes resolvconf } renew() { if ! ip -4 addr show dev $interface | grep $ip/$mask; then ip -4 addr flush dev $interface ip -4 addr add $ip/$mask ${broadcast:+broadcast $broadcast} dev $interface fi local i for i in $router; do if ! ip -4 route show | grep ^default | grep $i; then routes break fi done if ! grep "^search $domain"; then resolvconf return fi for i in $dns; do if ! grep "^nameserver $i"; then resolvconf return fi done } case "$1" in deconfig|renew|bound) run_scripts $UDHCPC/pre-$1 $1 run_scripts $UDHCPC/post-$1 ;; leasefail) echo "udhcpc failed to get a DHCP lease" >&2 ;; nak) echo "udhcpc received DHCP NAK" >&2 ;; *) echo "Error: this script should be called from udhcpc" >&2 exit 1 ;; esac exit 0 # do daily/weekly/monthly maintenance # min hour day month weekday command */15 * * * * run-parts /etc/periodic/15min 0 * * * * run-parts /etc/periodic/hourly 0 2 * * * run-parts /etc/periodic/daily 0 3 * * 6 run-parts /etc/periodic/weekly 0 5 1 * * run-parts /etc/periodic/monthly # Aliases to tell insmod/modprobe which modules to use # Uncomment the network protocols you don't want loaded: # alias net-pf-1 off # Unix # alias net-pf-2 off # IPv4 # alias net-pf-3 off # Amateur Radio AX.25 # alias net-pf-4 off # IPX # alias net-pf-5 off # DDP / appletalk # alias net-pf-6 off # Amateur Radio NET/ROM # alias net-pf-9 off # X.25 # alias net-pf-10 off # IPv6 # alias net-pf-11 off # ROSE / Amateur Radio X.25 PLP # alias net-pf-19 off # Acorn Econet alias char-major-10-175 agpgart alias char-major-10-200 tun alias char-major-81 bttv alias char-major-108 ppp_generic alias /dev/ppp ppp_generic alias tty-ldisc-3 ppp_async alias tty-ldisc-14 ppp_synctty alias ppp-compress-21 bsd_comp alias ppp-compress-24 ppp_deflate alias ppp-compress-26 ppp_deflate # Crypto modules (see http://www.kerneli.org/) alias loop-xfer-gen-0 loop_gen alias loop-xfer-3 loop_fish2 alias loop-xfer-gen-10 loop_gen alias cipher-2 des alias cipher-3 fish2 alias cipher-4 blowfish alias cipher-6 idea alias cipher-7 serp6f alias cipher-8 mars6 alias cipher-11 rc62 alias cipher-15 dfc2 alias cipher-16 rijndael alias cipher-17 rc5 # Support for i2c and lm_sensors alias char-major-89 i2c-dev # xfrm alias xfrm-type-2-4 xfrm4_tunnel alias xfrm-type-2-50 esp4 alias xfrm-type-2-51 ah4 alias xfrm-type-2-108 ipcomp alias xfrm-type-10-41 xfrm6_tunnel alias xfrm-type-10-50 esp6 alias xfrm-type-10-51 ah6 alias xfrm-type-10-108 ipcomp6 alias sha1 sha1-generic # change to aes-i586 to boost performance alias aes aes-generic # # Listing a module here prevents the hotplug scripts from loading it. # Usually that'd be so that some other driver will bind it instead, # no matter which driver happens to get probed first. Sometimes user # mode tools can also control driver binding. # tulip ... de4x5, xircom_tulip_cb, dmfe (...) handle same devices blacklist de4x5 # At least 2.4.3 and later xircom_tulip doesn't have that conflict # xircom_tulip_cb blacklist dmfe #evbug is a debug tool and should be loaded explicitly blacklist evbug # Alternate 8139 driver. Some 8139 cards need this specific driver, # though... # blacklist 8139cp # Ethernet over IEEE1394 module. In too many cases this will load # when there's no eth1394 device present (just an IEEE1394 port) blacklist eth1394 # This module causes many Intel motherboards to crash and reboot. blacklist i8xx-tco # The kernel lists this as "experimental", but for now it's "broken" blacklist via-ircc # ALSA modules to support sound modems. These should be loaded manually # if needed. For most people they just break sound support... blacklist snd-atiixp-modem blacklist snd-intel8x0m blacklist snd-via82xx-modem # we don't want use the pc speaker blacklist snd-pcsp # Alternative module to Orinoco Wireless Cards. blacklist hostap blacklist hostap_cs # framebuffer drivers blacklist aty128fb blacklist atyfb blacklist radeonfb blacklist i810fb blacklist cirrusfb blacklist intelfb blacklist kyrofb blacklist i2c-matroxfb blacklist hgafb blacklist nvidiafb blacklist rivafb blacklist savagefb blacklist sstfb blacklist neofb blacklist tridentfb blacklist tdfxfb blacklist viafb blacklist virgefb blacklist vga16fb blacklist matroxfb_base blacklist vt8623fb # blacklist 1394 drivers blacklist ohci1394 blacklist video1394 blacklist dv1394 # blacklist mISDN dirver by default as we prefer dahdi drivers blacklist hfcmulti blacklist hfcpci blacklist hfcsusb # blacklist C7 cpu freq. use acpi-cpufreq instead blacklist e_powersaver blacklist microcode # needs init config, not compatible with acpid # https://gitlab.alpinelinux.org/alpine/aports/-/issues/12999 blacklist tiny_power_button alias parport_lowlevel parport_pc alias char-major-10-144 nvram alias binfmt-0064 binfmt_aout alias char-major-10-135 rtc # enable modeset options radeon modeset=1 options i915 modeset=1 options nouveau modeset=1 Welcome to Alpine! The Alpine Wiki contains a large amount of how-to guides and general information about administrating Alpine systems. See . You can setup the system with the command: setup-alpine You may change this message by editing /etc/motd. export CHARSET=${CHARSET:-UTF-8} export LANG=${LANG:-C.UTF-8} export LC_COLLATE=${LC_COLLATE:-C} This directory should contain shell scripts configuring system-wide environment on users' shells. Files with the .sh extension found in this directory are evaluated by Bourne-compatible shells (like ash, bash or zsh) when started as a login shell. # Setup a red prompt for root and a green one for users. # Symlink this file to color_prompt.sh to actually enable it. _normal=$'\e[0m' if [ "$USER" = root ]; then _color=$'\e[1;31m' _symbol='#' else _color=$'\e[1;32m' _symbol='$' fi if [ -n "$ZSH_VERSION" ]; then PS1="%{$_color%}%m [%{$_normal%}%~%{$_color%}]$_symbol %{$_normal%}" else PS1="\[$_color\]\h [\[$_normal\]\w\[$_color\]]$_symbol \[$_normal\]" fi unset _normal _color _symbol # Prevents SYN DOS attacks. Applies to ipv6 as well, despite name. net.ipv4.tcp_syncookies = 1 # Prevents ip spoofing. net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 # Only groups within this id range can use ping. net.ipv4.ping_group_range=999 59999 # Redirects can potentially be used to maliciously alter hosts # routing tables. net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 1 net.ipv6.conf.all.accept_redirects = 0 # The source routing feature includes some known vulnerabilities. net.ipv4.conf.all.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0 # See RFC 1337 net.ipv4.tcp_rfc1337 = 1 ## Enable IPv6 Privacy Extensions (see RFC4941 and RFC3041) net.ipv6.conf.default.use_tempaddr = 2 net.ipv6.conf.all.use_tempaddr = 2 # Restarts computer after 120 seconds after kernel panic kernel.panic = 120 # Users should not be able to create soft or hard links to files # which they do not own. This mitigates several privilege # escalation vulnerabilities. fs.protected_hardlinks = 1 fs.protected_symlinks = 1 # Disable unprivileged use of the bpf(2) syscall. # Allowing unprivileged use of the bpf(2) syscall may allow a # malicious user to compromise the machine. kernel.unprivileged_bpf_disabled = 1 #!/bin/sh [ -z "$IF_BOND_MEMBERS" ] && IF_BOND_MEMBERS="$IF_BOND_SLAVES" case "$PHASE" in depend) echo "$IF_BOND_MEMBERS" ;; esac #!/bin/sh case "$PHASE" in depend) if [ "$IF_BRIDGE_PORTS" != "none" ]; then echo "$IF_BRIDGE_PORTS" fi ;; esac #!/bin/sh # some users provide a shell fragment for the hostname property. [ -n "$IF_DHCP_HOSTNAME" ] && IF_DHCP_HOSTNAME=$(eval echo $IF_DHCP_HOSTNAME) determine_implementation() { [ -n "$IF_DHCP_PROGRAM" ] && echo "$IF_DHCP_PROGRAM" && return [ -x /sbin/dhcpcd ] && echo "dhcpcd" && return [ -x /usr/sbin/dhclient ] && echo "dhclient" && return [ -x /sbin/udhcpc ] && echo "udhcpc" && return echo "could not find a supported DHCP implementation" exit 1 } start() { case "$1" in dhcpcd) [ -n "$IF_DHCP_HOSTNAME" ] && optargs="$optargs -h $IF_DHCP_HOSTNAME" [ -n "$IF_DHCP_VENDOR" ] && optargs="$optargs -i $IF_DHCP_VENDOR" [ -n "$IF_DHCP_CLIENT_ID" ] && optargs="$optargs -i $IF_DHCP_CLIENT_ID" [ -n "$IF_DHCP_LEASETIME" ] && optargs="$optargs -l $IF_DHCP_LEASETIME" ${MOCK} /sbin/dhcpcd $optargs $IFACE ;; dhclient) # Specific config file given? if [ -n "$IF_DHCP_CONFIG" ]; then optargs="$optargs -cf $IF_DHCP_CONFIG" fi ${MOCK} /usr/sbin/dhclient -pf /var/run/dhclient.$IFACE.pid $optargs $IFACE ;; udhcpc) optargs=$(eval echo $IF_UDHCPC_OPTS) [ -n "$IF_DHCP_HOSTNAME" ] && optargs="$optargs -x hostname:$IF_DHCP_HOSTNAME" [ -n "$IF_DHCP_CLIENT_ID" ] && optargs="$optargs -c $IF_DHCP_CLIENT_ID" [ -n "$IF_DHCP_SCRIPT" ] && optargs="$optargs -s $IF_DHCP_SCRIPT" ${MOCK} /sbin/udhcpc -b -R -p /var/run/udhcpc.$IFACE.pid -i $IFACE $optargs ;; *) ;; esac } stop() { case "$1" in dhcpcd) ${MOCK} /sbin/dhcpcd -k $IFACE ;; dhclient) ${MOCK} kill -9 $(cat /var/run/dhclient.$IFACE.pid) 2>/dev/null ;; udhcpc) ${MOCK} kill $(cat /var/run/udhcpc.$IFACE.pid) ;; *) ;; esac } impl=$(determine_implementation) [ -z "$VERBOSE" ] || set -x case "$PHASE" in up) start $impl ;; down) stop $impl || true ;; *) ;; esac #!/bin/sh yesno() { case "$1" in yes|1) echo 1 ;; *) echo 0 ;; esac } [ "$PHASE" != "up" ] && exit 0 [ -z "$VERBOSE" ] || set -x [ -n "$IF_FORWARD_IPV4" ] && ${MOCK} /bin/sh -c "echo $(yesno $IF_FORWARD_IPV4) > /proc/sys/net/ipv4/conf/$IFACE/forwarding" [ -n "$IF_FORWARD_IPV6" ] && ${MOCK} /bin/sh -c "echo $(yesno $IF_FORWARD_IPV6) > /proc/sys/net/ipv6/conf/$IFACE/forwarding" [ -n "$IF_FORWARD_IPV4_MC" ] && ${MOCK} /bin/sh -c "echo $(yesno $IF_FORWARD_IPV4_MC) > /proc/sys/net/ipv4/conf/$IFACE/mc_forwarding" [ -n "$IF_FORWARD_IPV6_MC" ] && ${MOCK} /bin/sh -c "echo $(yesno $IF_FORWARD_IPV6_MC) > /proc/sys/net/ipv6/conf/$IFACE/mc_forwarding" exit 0 #!/bin/sh start() { ${MOCK} /bin/sh -c "echo 1 > /proc/sys/net/ipv6/conf/$IFACE/accept_ra" } stop() { ${MOCK} /bin/sh -c "echo 0 > /proc/sys/net/ipv6/conf/$IFACE/accept_ra" } [ -z "$VERBOSE" ] || set -x case "$PHASE" in up) start $impl ;; down) stop $impl ;; *) ;; esac #!/bin/sh [ -n "$VERBOSE" ] && set -x is_vlan() { case "$IFACE" in *#*) return 1 ;; *:*) return 1 ;; vlan*.*) return 1 ;; vlan*) IF_VLAN_ID="${IFACE#vlan}" [ -n "${IF_VLAN_RAW_DEVICE:-}" ] && return 0 return 1 ;; *.*) IF_VLAN_RAW_DEVICE="${IFACE%.*}" IF_VLAN_ID="${IFACE##*.}" return 0 ;; *) [ -z "${IF_VLAN_ID:-}" ] && return 1 [ -z "${IF_VLAN_RAW_DEVICE:-}" ] && return 1 return 0 ;; esac } case "$PHASE" in depend) # vlan-raw-device if is_vlan; then echo "$IF_VLAN_RAW_DEVICE" # veth-peer-name elif [ "${IF_LINK_TYPE}" = "veth" -a "${IF_VETH_PEER_NAME}" ]; then echo "${IF_VETH_PEER_NAME}" fi ;; create) if [ "${IF_LINK_TYPE}" = "dummy" ]; then if [ -d "/sys/class/net/${IFACE}" ]; then iface_type=$(ip -d link show dev "${IFACE}" | head -n3 | tail -n1 | awk '{ print $1 }') if [ "${iface_type}" != 'dummy' ]; then echo "Interface ${IFACE} exists but is of type ${iface_type} instead of dummy" exit 1 fi exit 0 fi ${MOCK} ip link add "${IFACE}" type dummy elif [ "${IF_LINK_TYPE}" = "veth" ]; then if [ ! -d "/sys/class/net/${IFACE}" ]; then ARGS="" if [ "${IF_VETH_PEER_NAME}" ]; then ARGS="peer ${IF_VETH_PEER_NAME}" fi ${MOCK} ip link add "${IFACE}" type veth ${ARGS} fi elif is_vlan; then if [ -d "/sys/class/net/${IFACE}" ]; then exit 0 fi if [ -z "${MOCK}" ]; then if [ ! -d "/sys/class/net/${IF_VLAN_RAW_DEVICE}" ]; then echo "Underlay device ${IF_VLAN_RAW_DEVICE} for ${IFACE} does not exist" exit 1 fi if ! [ -d /proc/net/vlan ]; then echo "Loading 8021q kernel module for VLAN support" ${MOCK} modprobe 8021q fi fi ${MOCK} ip link add link "${IF_VLAN_RAW_DEVICE}" name "${IFACE}" type vlan id "${IF_VLAN_ID}" fi ;; up) IF_LINK_OPTIONS="$IF_LINK_OPTIONS" [ -n "$IF_MTU" ] && IF_LINK_OPTIONS="$IF_LINK_OPTIONS mtu $IF_MTU" [ -n "$IF_HWADDRESS" ] && IF_LINK_OPTIONS="$IF_LINK_OPTIONS address $IF_HWADDRESS" ${MOCK} ip link set up dev "${IFACE}" ${IF_LINK_OPTIONS} # Set alias is configured if [ "${IF_ALIAS}" ]; then ${MOCK} ip link set alias "${IF_ALIAS}" dev "${IFACE}" fi ;; down) # Don't complain about a vanished interface when downing it if [ -z "${MOCK}" -a ! -d "/sys/class/net/${IFACE}" ]; then exit 0 fi ${MOCK} ip link set down dev "${IFACE}" ;; destroy) if [ "${IF_LINK_TYPE}" = "dummy" ] || [ "${IF_LINK_TYPE}" = "veth" ] || is_vlan; then if [ -z "${MOCK}" -a ! -d "/sys/class/net/${IFACE}" ]; then exit 0 fi ${MOCK} ip link del "${IFACE}" fi ;; esac #!/bin/sh [ -z "${VERBOSE}" ] || set -x [ -z "${IF_METRIC}" ] && IF_METRIC="1" [ -n "${IF_VRF_TABLE}" ] && VRF_TABLE="table ${IF_VRF_TABLE}" [ -n "${IF_VRF_MEMBER}" ] && VRF_TABLE="vrf ${IF_VRF_MEMBER}" [ -n "${IF_METRIC}" ] && METRIC="metric ${IF_METRIC}" addr_family() { if [ "$1" != "${1#*[0-9].[0-9]}" ]; then echo "-4" elif [ "$1" != "${1#*:[0-9a-fA-F]}" ]; then echo "-6" else exit 1 fi } configure_addresses() { for addr in ${IF_ADDRESSES}; do addrfam=$(addr_family ${addr}) if [ "${IF_POINT_TO_POINT}" -a "${addrfam}" = "-4" ]; then PEER="peer ${IF_POINT_TO_POINT}" else PEER="" fi ${MOCK} ip "${addrfam}" addr add "${addr}" ${PEER} dev "${IFACE}" done } configure_gateways() { for gw in ${IF_GATEWAYS}; do addrfam=$(addr_family ${gw}) ${MOCK} ip "${addrfam}" route add default via "${gw}" ${VRF_TABLE} ${METRIC} dev "${IFACE}" onlink done } flush() { cmd="addr" arg="dev ${IFACE}" ${MOCK} ip ${cmd} flush ${arg} } case "$PHASE" in up) configure_addresses add configure_gateways add ;; down) flush ;; *) exit 0 ;; esac # List of /tmp directories we should clean up clean_tmp_dirs="/tmp" # Should we wipe the tmp paths completely or just selectively remove known # locks / files / etc... ? wipe_tmp="NO" # Write the initial dmesg log into /var/log/dmesg after boot # This may be useful if you need the kernel boot log afterwards log_dmesg="YES" # Save the previous dmesg log to dmesg.old # This may be useful if you need to compare the current boot to the # previous one. #previous_dmesg=no # The consolefont service is not activated by default. If you need to # use it, you should run "rc-update add consolefont boot" as root. # # consolefont specifies the default font that you'd like Linux to use on the # console. You can find a good selection of fonts in /usr/share/consolefonts; consolefont="default8x16.psf.gz" # consoletranslation is the charset map file to use. Leave commented to use # the default one. Have a look in /usr/share/consoletrans for a selection of # map files you can use. #consoletranslation="8859-1_to_uni.trans" # OpenRC will attempt each of the following in succession to mount /dev. # # 1. If there is an entry for /dev in fstab, it will be used. # 2. If devtmpfs is defined in the kernel, it will be used. # 3. If tmpfs is defined in the kernel, it will be used. # # Set this to yes if you do not want OpenRC to attempt to mount /dev. # skip_mount_dev="NO" # Sets the level at which logging of messages is done to the # console. See dmesg(1) for more info. dmesg_level="1" # Pass any arguments to fsck. # By default we preen. # Linux systems also force -C0 and -T. # If fsck_args is not specified then Linux systems also use -A # (and -R if / is rw) #fsck_args="-p" # We can also specify the passno in /etc/fstab to check # If you multiplex fsck (ie ln -s fsck /etc/init.d/fsck.late) then you can # do an fsck outside of the normal scope, say for /home. # Here are some examples:- #fsck_passno="=1 =2" #fsck_passno=">1" #fsck_passno="<2" # If passno is not enough granularity, you can also specify mountpoints to # check. This should NOT be used for the default non-multiplexed fsck, or your # system might not be checked. Additionally, it is mutually exclusive with # the fsck_passno setting. #fsck_mnt="" #fsck_mnt="/home" # Most modern fs's don't require a full fsck on boot, but for those that do # it may be advisable to skip this when running on battery. # WARNING: Do not turn this off if you have any JFS partitions. fsck_on_battery="YES" # fsck_shutdown causes fsck to trigger during shutdown as well as startup. # The end result of this is that if any periodic non-root filesystem checks are # scheduled, under normal circumstances the actual check will happen during # shutdown rather than at next boot. # This is useful when periodic filesystem checks are causing undesirable # delays at startup, but such delays at shutdown are acceptable. fsck_shutdown="NO" # fsck_abort_on_errors can be set to no to cause fsck to not abort on # errors. # This is useful when periodic filesystem checks are causing undesirable # aborts. fsck_abort_on_errors="YES" # Set CLOCK to "UTC" if your Hardware Clock is set to UTC (also known as # Greenwich Mean Time). If that clock is set to the local time, then # set CLOCK to "local". Note that if you dual boot with Windows, then # you should set it to "local". clock="UTC" # If you want the hwclock script to set the system time (software clock) # to match the current hardware clock during bootup, leave this # commented out. # However, you can set this to "NO" if you are running a modern kernel # and using NTP to synchronize your system clock. #clock_hctosys="YES" # If you do not want to set the hardware clock to the current system # time (software clock) during shutdown, set this to no. #clock_systohc="YES" # If you wish to pass any other arguments to hwclock during bootup, # you may do so here. Alpha users may wish to use --arc or --srm here. clock_args="" # If you wish to pass any options to kill_all during shutdown, # you should do so here. # # The setting is called killall5_opts because the options here are meant # to be identical to those you could pass to killall5. killall5_opts="" # If you need to delay after each kill attempt during shutdown, set the amount # of time you need to delay here. This gets passed directly to sleep in # the shell. # kill_delay=0 # Stop the unmounting of certain points. # This could be useful for some NFS related work. #no_umounts="/dir1:/var/dir2" # # Mark certain mount points as critical. # This contains a space separated list of mount points which should be # considered critical. If one of these mount points cannot be mounted, # localmount will fail. # By default, this is empty. #critical_mounts="/home /var" # Enable loadable module support when running from RAM # when OverlayFS support is available in the kernel. # 0 means default tmpfs size (50% of physical RAM). # for more information please see kernel documention at: # https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt overlay_size=0 # Linux users can define a list of modules for a specific kernel version, # a released kernel version, a main kernel version or all kernel versions. # The most specific versioned variable will take precedence. # FreeBSD users can only use the modules="foo bar" setting. #modules_2_6_23_gentoo_r5="ieee1394 ohci1394" #modules_2_6_23="tun ieee1394" #modules_2_6="tun" #modules_2="ipv6" #modules="ohci1394" # Linux users can give the modules some arguments if needed, per version # if necessary. # Again, the most specific versioned variable will take precedence. # This is not supported on FreeBSD. #module_ieee1394_args="debug" #module_ieee1394_args_2_6_23_gentoo_r5="debug2" #module_ieee1394_args_2_6_23="debug3" #module_ieee1394_args_2_6="debug4" #module_ieee1394_args_2="debug5" # You should consult your kernel documentation and configuration # for a list of modules and their options. # As far as we are aware, there are no modern linux tools or use cases # which require /etc/mtab to be a separate file from /proc/self/mounts, # so this setting should be commented out. # If it is set to yes, please comment it out and run this command: # # rc-service mtab restart # In the future, the mtab service will be removed since we are not aware # of any need to manipulate /etc/mtab as a separate file from # /proc/self/mounts. # If you have a technical reason we should keep this support, please # open an issue at https://github.com/openrc/openrc/issues and let us # know about your situation. # This setting controls whether /etc/mtab is a file or symbolic link. # mtab_is_file=no # The interfaces setting controls which interfaces the net-online # service considers in deciding whether the network is active. The # default is all interfaces that support ethernet. #interfaces="" # This setting controls whether a ping test is included in the test for # network connectivity after all interfaces are active. #include_ping_test=no # This setting is the host to attempt to ping if the above is yes. # The default is google.com. #ping_test_host=some.host.name # The timeout setting controls how long the net-online service waits # for the network to be configured. # The default is 120 seconds. # if this is set to 0, the wait is infinite. #timeout=120 # You will need to set the dependencies in the netmount script to match # the network configuration tools you are using. This should be done in # this file by following the examples below, and not by changing the # service script itself. # # Each of these examples is meant to be used separately. So, for # example, do not set rc_need to something like "net.eth0 dhcpcd". # # If you are using newnet and configuring your interfaces with static # addresses with the network script, you should use this setting. # #rc_need="network" # # If you are using oldnet, you must list the specific net.* services you # need. # # This example assumes all of your netmounts can be reached on # eth0. # #rc_need="net.eth0" # # This example assumes some of your netmounts are on eth1 and some # are on eth2. # #rc_need="net.eth1 net.eth2" # # If you are using a dynamic network management tool like # NetworkManager, dhcpcd in standalone mode, wicd, badvpn-ncd, etc, to # manage the network interfaces with the routes to your netmounts, you # should list that tool. # #rc_need="NetworkManager" #rc_need="dhcpcd" #rc_need="wicd" # # The default setting is designed to be backward compatible with our # current setup, but you are highly discouraged from using this. In # other words, please change it to be more suited to your system. # rc_need="net" # # Mark certain mount points as critical. # This contains aspace separated list of mount points which should be # considered critical. If one of these mount points cannot be mounted, # netmount will fail. # By default, this is empty. #critical_mounts="/home /var" # The convention in this file is to show the default settings commented out. # # Sometimes you want to have urandom start before "localmount" (say for crypt # swap), so you will need to customize this behavior. If you have /var on a # separate partition, make sure paths under /var are adjusted to point to # locations on your root device. # # Set skip_credit to yes or true if you do not want seed files to actually # credit the random number generator. For example, you should set this if you # plan to replicate the file system image without removing the contents of # ${seed_dir}. # # seed_dir=/var/lib/seedrng # skip_credit=no # Do not use this file to define the default route. # In all settings, multiple routes should be separated using ; or new lines. # Define static routes on Linux using iproute2. See ip(8) for syntax. #staticiproute="192.168.0.0/24 via 10.73.1.1; 192.168.1.0/24 via 10.73.1.1" # Or define static routes on Linux using route (legacy). See route(8) for syntax. #staticroute="net 192.168.0.0 netmask 255.255.255.0 gw 10.73.1.1 #net 192.168.1.0 netmask 255.255.255.0 gw 10.73.1.1" # If you are only using local swap partitions, you should not change # this file. Otherwise, you need to uncomment the below rc_before line # followed by the appropriate rc_need line. #rc_before="!localmount" # # If you are using swap files stored on local file systems, uncomment # this line. #rc_need="localmount" # # If you are using swap files stored on network file systems or swap # partitions stored on network block devices such as iSCSI, uncomment # this line. #rc_need="netmount" # This is the location of the reference file swclock uses to set the # system date and time. # This is the default path. If you are using it, you do not need to # uncomment it. If you are using the default and have /var on its own # file system, you need to add the appropriate rc_after setting. # swclock_file=/var/lib/misc/openrc-shutdowntime #!/sbin/openrc-run # Copyright (c) 2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Register misc binary format handlers" depend() { after clock procfs use modules devfs keyword -docker -podman -lxc -openvz -prefix -systemd-nspawn -vserver } start() { ebegin "Loading custom binary format handlers" "$RC_LIBEXECDIR"/sh/binfmt.sh eend $? return 0 } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. depend() { need localmount before logger after clock root sysctl keyword -prefix -timeout } : ${wipe_tmp:=${WIPE_TMP:-no}} : ${log_dmesg:=${LOG_DMESG:-yes}} cleanup_tmp_dir() { local dir="$1" if ! [ -d "$dir" ]; then mkdir -p "$dir" || return $? fi checkpath -W "$dir" || return 1 chmod a+rwt "$dir" 2> /dev/null cd "$dir" || return 1 if yesno $wipe_tmp; then ebegin "Wiping $dir directory" # Faster than raw find if ! rm -rf -- [!ajlq\.]* 2>/dev/null ; then # Blah, too many files find . -maxdepth 1 -name '[!ajlq\.]*' -exec rm -rf -- {} + fi # pam_mktemp creates a .private directory within which # each user gets a private directory with immutable # bit set; remove the immutable bit before trying to # remove it. [ -d /tmp/.private ] && chattr -R -a /tmp/.private 2> /dev/null # Prune the paths that are left find . -maxdepth 1 \ ! -name . \ ! -name lost+found \ ! -name quota.user \ ! -name aquota.user \ ! -name quota.group \ ! -name aquota.group \ ! -name journal \ -exec rm -rf -- {} + eend 0 else ebegin "Cleaning $dir directory" rm -rf -- .X*-lock esrv* kio* \ jpsock.* .fam* .esd* \ orbit-* ssh-* ksocket-* \ .*-unix eend 0 fi } cleanup_var_run_dir() { ebegin "Cleaning /var/run" for x in $(find /var/run ! -type d ! -name utmp \ ! -name random-seed ! -name dev.db \ ! -name ld-elf.so.hints ! -name ld-elf32.so.hints \ ! -name ld.so.hints); do # Clean stale sockets if [ -S "$x" ]; then if command -v fuser >/dev/null 2>&1; then fuser "$x" >/dev/null 2>&1 || rm -- "$x" else rm -- "$x" fi fi [ ! -f "$x" ] && continue # Do not remove pidfiles of already running daemons case "$x" in *.pid) start-stop-daemon --test --quiet \ --stop --pidfile "$x" && continue ;; esac rm -f -- "$x" done eend 0 } mkutmp() { : >"$1" # Not all systems have the utmp group chgrp utmp "$1" 2>/dev/null chmod 0664 "$1" } migrate_to_run() { src="$1" dst="$2" if [ -L $src -a "$(readlink -f $src)" != $dst ]; then ewarn "$src does not point to $dst." ewarn "Setting $src to point to $dst." rm $src elif [ ! -L $src -a -d $src ]; then ebegin "Migrating $src to $dst" if ! rmdir $src 2>/dev/null; then cp -a $src/* $dst/ rm -rf $src fi eend $? fi # If $src doesn't exist at all, just run this if [ ! -e $src ]; then ln -s $dst $src fi } clean_run() { [ "$RC_SYS" = VSERVER -o "$RC_SYS" = LXC ] && return 0 local dir # If / is still read-only due to a problem, this will fail! if ! checkpath -W /; then ewarn "/ is not writable; unable to clean up underlying /run" return 1 fi if ! checkpath -W /tmp; then ewarn "/tmp is not writable; unable to clean up underlying /run" return 1 fi # Now we know that we can modify /tmp and / # if mktemp -d fails, it returns an EMPTY string # STDERR: mktemp: failed to create directory via template ‘/tmp/tmp.XXXXXXXXXX’: Read-only file system # STDOUT: '' rc=0 dir=$(mktemp -d) if [ -n "$dir" -a -d $dir -a -w $dir ]; then mount --bind / $dir && rm -rf $dir/run/* || rc=1 umount $dir && rmdir $dir else rc=1 fi if [ $rc -ne 0 ]; then ewarn "Could not clean up underlying /run on /" return 1 fi } start() { # Remove any added console dirs if checkpath -W "$RC_LIBEXECDIR"; then rm -rf "$RC_LIBEXECDIR"/console/* fi local logw=false runw=false extra= # Ensure that our basic dirs exist if [ "$RC_UNAME" = Linux ]; then # Satisfy Linux FHS extra=/var/lib/misc if [ ! -d /run ]; then extra="/var/run $extra" fi else extra=/var/run fi for x in /var/log /tmp $extra; do if ! [ -d $x ]; then if ! mkdir -p $x; then eend 1 "failed to create needed directory $x" return 1 fi fi done if [ "$RC_UNAME" = Linux -a -d /run ]; then migrate_to_run /var/lock /run/lock migrate_to_run /var/run /run clean_run fi if checkpath -W /var/run; then ebegin "Creating user login records" local xtra= [ "$RC_UNAME" = NetBSD ] && xtra=x for x in "" $xtra; do mkutmp /var/run/utmp$x done [ -e /var/log/wtmp ] || mkutmp /var/log/wtmp eend 0 mountinfo -q -f tmpfs /var/run || cleanup_var_run_dir fi # Clean up /tmp directories local tmp= for tmp in ${clean_tmp_dirs:-${wipe_tmp_dirs-/tmp}}; do mountinfo -q -f tmpfs "$tmp" || cleanup_tmp_dir "$tmp" done if checkpath -W /tmp; then # Make sure our X11 stuff have the correct permissions # Omit the chown as bootmisc is run before network is up # and users may be using lame LDAP auth #139411 rm -rf /tmp/.ICE-unix /tmp/.X11-unix mkdir -p /tmp/.ICE-unix /tmp/.X11-unix chmod 1777 /tmp/.ICE-unix /tmp/.X11-unix if [ -x /sbin/restorecon ]; then restorecon /tmp/.ICE-unix /tmp/.X11-unix fi fi if yesno $log_dmesg; then if $logw || checkpath -W /var/log; then # Create an 'after-boot' dmesg log case "$RC_SYS" in VSERVER|OPENVZ|LXC|SYSTEMD-NSPAWN) ;; *) if yesno ${previous_dmesg:-no} && [ -e /var/log/dmesg ]; then mv /var/log/dmesg /var/log/dmesg.old fi dmesg > /var/log/dmesg chmod 640 /var/log/dmesg ;; esac fi fi return 0 } stop() { # Write a halt record if we're shutting down if [ "$RC_RUNLEVEL" = shutdown ]; then if [ "$RC_UNAME" = Linux ]; then if [ -x /sbin/halt ]; then halt -w else openrc-shutdown -w fi fi if [ "$RC_SYS" = OPENVZ ]; then yesno $RC_REBOOT && printf "" >/reboot fi fi return 0 } # vim: ft=sh #!/sbin/openrc-run # Copyright (c) 2017 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Mount the control groups." : "${cgroup_opts:="nodev,noexec,nosuid"}" depend() { keyword -docker -podman -prefix -systemd-nspawn -vserver after sysfs } cgroup1_base() { grep -qw cgroup /proc/filesystems || return 0 if ! mountinfo -q /sys/fs/cgroup; then ebegin "Mounting cgroup filesystem" local opts="${cgroup_opts},mode=755,size=${rc_cgroupsize:-10m}" mount -n -t tmpfs -o "${opts}" cgroup_root /sys/fs/cgroup eend $? fi if ! mountinfo -q /sys/fs/cgroup/openrc; then local agent="${RC_LIBEXECDIR}/sh/cgroup-release-agent.sh" mkdir /sys/fs/cgroup/openrc mount -n -t cgroup \ -o none,${cgroup_opts},name=openrc,release_agent="$agent" \ openrc /sys/fs/cgroup/openrc printf 1 > /sys/fs/cgroup/openrc/notify_on_release fi return 0 } cgroup1_controllers() { yesno "${rc_controller_cgroups:-YES}" && [ -e /proc/cgroups ] && grep -qw cgroup /proc/filesystems || return 0 while read -r name _ _ enabled _; do case "${enabled}" in 1) mountinfo -q "/sys/fs/cgroup/${name}" && continue local x for x in $rc_cgroup_controllers; do [ "${name}" = "blkio" ] && [ "${x}" = "io" ] && continue 2 [ "${name}" = "${x}" ] && continue 2 done mkdir "/sys/fs/cgroup/${name}" mount -n -t cgroup -o "${cgroup_opts},${name}" \ "${name}" "/sys/fs/cgroup/${name}" yesno "${rc_cgroup_memory_use_hierarchy:-no}" && [ "${name}" = memory ] && echo 1 > /sys/fs/cgroup/memory/memory.use_hierarchy ;; esac done < /proc/cgroups return 0 } cgroup2_base() { grep -qw cgroup2 /proc/filesystems || return 0 local base base="$(cgroup2_find_path)" mkdir -p "${base}" mount -t cgroup2 none -o "${cgroup_opts},nsdelegate" "${base}" 2> /dev/null || mount -t cgroup2 none -o "${cgroup_opts}" "${base}" return 0 } cgroup2_controllers() { grep -qw cgroup2 /proc/filesystems || return 0 local active cgroup_path x y cgroup_path="$(cgroup2_find_path)" [ -z "${cgroup_path}" ] && return 0 [ ! -e "${cgroup_path}/cgroup.controllers" ] && return 0 [ ! -e "${cgroup_path}/cgroup.subtree_control" ]&& return 0 read -r active < "${cgroup_path}/cgroup.controllers" for x in ${active}; do case "${rc_cgroup_mode:-unified}" in unified) echo "+${x}" > "${cgroup_path}/cgroup.subtree_control" ;; hybrid) for y in ${rc_cgroup_controllers}; do if [ "$x" = "$y" ]; then echo "+${x}" > "${cgroup_path}/cgroup.subtree_control" fi done ;; esac done return 0 } cgroups_hybrid() { cgroup1_base cgroup2_base cgroup2_controllers cgroup1_controllers return 0 } cgroups_legacy() { cgroup1_base cgroup1_controllers return 0 } cgroups_unified() { cgroup2_base cgroup2_controllers return 0 } mount_cgroups() { case "${rc_cgroup_mode:-unified}" in hybrid) cgroups_hybrid ;; legacy) cgroups_legacy ;; unified) cgroups_unified ;; esac return 0 } restorecon_cgroups() { if [ -x /sbin/restorecon ]; then ebegin "Restoring SELinux contexts in /sys/fs/cgroup" restorecon -rF /sys/fs/cgroup >/dev/null 2>&1 eend $? fi return 0 } start() { # set up kernel support for cgroups if [ -d /sys/fs/cgroup ]; then mount_cgroups restorecon_cgroups fi return 0 } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Sets a font for the consoles." depend() { need termencoding after hotplug bootmisc modules keyword -docker -podman -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu } start() { ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} consolefont=${consolefont:-${CONSOLEFONT}} consoletranslation=${consoletranslation:-${CONSOLETRANSLATION}} if [ -z "$consolefont" ]; then ebegin "Using the default console font" eend 0 return 0 fi if [ "$ttyn" = 0 ]; then ebegin "Skipping font setup (rc_tty_number == 0)" eend 0 return 0 fi local x= param= sf_param= retval=0 ttydev=/dev/tty # Get additional parameters if [ -n "$consoletranslation" ]; then param="$param -m $consoletranslation" fi # Set the console font ebegin "Setting console font [$consolefont]" [ -d /dev/vc ] && ttydev=/dev/vc/ x=1 while [ $x -le $ttyn ]; do if ! setfont $consolefont $param -C $ttydev$x >/dev/null; then retval=1 break fi : $(( x += 1 )) done eend $retval # Store the font so we can use it ASAP on boot if [ $retval -eq 0 ] && checkpath -W "$RC_LIBEXECDIR"; then mkdir -p "$RC_LIBEXECDIR"/console zcat "/usr/share/consolefonts/$consolefont" \ > "$RC_LIBEXECDIR"/console/font fi return $retval } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Set up the /dev directory" depend() { provide dev-mount before dev keyword -docker -podman -prefix -systemd-nspawn -vserver } mount_dev() { local action conf_d_dir devfstype msg mountopts action=--mount conf_d_dir="${RC_SERVICE%/*/*}/conf.d" msg=Mounting # Some devices require exec, https://bugs.gentoo.org/92921 # Users with such requirements can use an fstab entry for /dev mountopts="noexec,nosuid,mode=0755" if yesno ${skip_mount_dev:-no} ; then einfo "/dev will not be mounted due to user request" return 0 fi if mountinfo -q /dev; then action=--remount mountopts="remount,$mountopts" msg=Remounting fi if fstabinfo -q /dev; then ebegin "$msg /dev according to fstab" fstabinfo -q $action /dev eend $? return 0 fi if grep -q devtmpfs /proc/filesystems; then devfstype=devtmpfs mountopts="$mountopts,size=10M" elif grep -q tmpfs /proc/filesystems; then devfstype=tmpfs mountopts="$mountopts,size=10M" fi if [ -n "$devfstype" ]; then ebegin "$msg $devfstype on /dev" mount -n -t $devfstype -o $mountopts dev /dev eend $? else ewarn "This kernel does not have devtmpfs or tmpfs support, and there" ewarn "is no entry for /dev in fstab." ewarn "This means /dev will not be mounted." ewarn "To avoid this message, set CONFIG_DEVTMPFS or CONFIG_TMPFS to y" ewarn "in your kernel configuration or see ${conf_d_dir}/${RC_SVCNAME}" fi return 0 } seed_dev() { # Seed /dev with some things that we know we need if [ "${RC_SYS}" != LXC ]; then # creating /dev/console, /dev/tty and /dev/tty1 to be able to write # to $CONSOLE with/without bootsplash before udevd creates it [ -c /dev/console ] || mknod -m 600 /dev/console c 5 1 [ -c /dev/tty1 ] || mknod -m 620 /dev/tty1 c 4 1 [ -c /dev/tty ] || mknod -m 666 /dev/tty c 5 0 # udevd will dup its stdin/stdout/stderr to /dev/null # and we do not want a file which gets buffered in ram [ -c /dev/null ] || mknod -m 666 /dev/null c 1 3 # so udev can add its start-message to dmesg [ -c /dev/kmsg ] || mknod -m 660 /dev/kmsg c 1 11 fi # extra symbolic links not provided by default [ -e /dev/fd ] || ln -snf /proc/self/fd /dev/fd [ -e /dev/stdin ] || ln -snf /proc/self/fd/0 /dev/stdin [ -e /dev/stdout ] || ln -snf /proc/self/fd/1 /dev/stdout [ -e /dev/stderr ] || ln -snf /proc/self/fd/2 /dev/stderr [ -e /proc/kcore ] && ln -snf /proc/kcore /dev/core # Mount required directories as user may not have them in /etc/fstab for x in \ "mqueue /dev/mqueue 1777 ,nodev mqueue" \ "devpts /dev/pts 0755 ,gid=5,mode=0620 devpts" \ "tmpfs /dev/shm 1777 ,nodev,mode=1777 shm" \ ; do set -- $x grep -Eq "[[:space:]]+$1$" /proc/filesystems || continue mountinfo -q $2 && continue if [ ! -d $2 ]; then mkdir -m $3 -p $2 >/dev/null 2>&1 || \ ewarn "Could not create $2!" fi if [ -d $2 ]; then ebegin "Mounting $2" if ! fstabinfo --mount $2; then mount -n -t $1 -o noexec,nosuid$4 $5 $2 fi eend $? fi done } restorecon_dev() { if [ -x /sbin/restorecon ]; then ebegin "Restoring SELinux contexts in /dev" restorecon -rF /dev >/dev/null 2>&1 eend $? fi return 0 } start() { mount_dev seed_dev restorecon_dev return 0 } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Set the dmesg level for a cleaner boot" depend() { before dev modules keyword -docker -podman -lxc -prefix -systemd-nspawn -vserver } start() { if [ -n "$dmesg_level" ]; then dmesg -n$dmesg_level fi } #!/sbin/openrc-run # The first boot init service # read kernel options init_KOPT() { eval "set -- $(cat /proc/cmdline 2>/dev/null)" for opt; do case "$opt" in ssh_*=*) eval "KOPT_${opt%%=*}='${opt#*=}'" ;; esac done } start() { rm -f /etc/runlevels/*/$RC_SVCNAME init_KOPT local rc=0 ebegin "Starting ${RC_SVCNAME}" if [ -n "$KOPT_ssh_key" ] && [ ! -f "/root/.ssh/authorized_keys" ]; then einfo "Fetching ssh keys" mkdir -pm 700 /root/.ssh checkpath -fm 0600 /root/.ssh/authorized_keys case "$KOPT_ssh_key" in https://*|ftps://*|http://*) wget -q "$KOPT_ssh_key" -O /root/.ssh/authorized_keys rc=$?;; *) echo "$KOPT_ssh_key" > /root/.ssh/authorized_keys;; esac fi eend $rc } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Check and repair filesystems according to /etc/fstab" _IFS=" " depend() { after clock use dev clock modules keyword -docker -podman -jail -lxc -openvz -prefix -systemd-nspawn -timeout -vserver -uml } _abort() { yesno ${fsck_abort_on_errors:-yes} && rc-abort return 1 } # We should only reboot when first booting _reboot() { if [ "$RC_RUNLEVEL" = "$RC_BOOTLEVEL" ]; then reboot "$@" _abort || return 1 fi } _forcefsck() { [ -e /forcefsck ] || get_bootparam forcefsck } start() { local fsck_opts= p= check_extra= if [ -e /fastboot ]; then ewarn "Skipping fsck due to /fastboot" return 0 fi if _forcefsck; then fsck_opts="$fsck_opts -f" check_extra="(check forced)" elif ! yesno ${fsck_on_battery:-YES} && ! on_ac_power; then ewarn "Skipping fsck due to not being on AC power" return 0 fi if [ -n "$fsck_passno" ]; then check_extra="[passno $fsck_passno] $check_extra" if [ -n "$fsck_mnt" ]; then eerror "Only 1 of fsck_passno and fsck_mnt must be set!" return 1 fi fi ebegin "Checking local filesystems $check_extra" # Append passno mounts for p in $fsck_passno; do local IFS="$_IFS" case "$p" in [0-9]*) p="=$p";; esac set -- "$@" $(fstabinfo --passno "$p") unset IFS done # Append custom mounts for m in $fsck_mnt ; do local IFS="$_IFS" set -- "$@" "$m" unset IFS done if [ "$RC_UNAME" = Linux ]; then local skiptypes skiptypes=$(printf 'no%s,' ${net_fs_list} ${extra_net_fs_list}) [ "${skiptypes}" = "no," ] && skiptypes="" fsck_opts="$fsck_opts -T -t ${skiptypes}noopts=_netdev" if [ -z "$fsck_passno" -a -z "$fsck_mnt" ]; then fsck_args=${fsck_args:--A -p} if echo 2>/dev/null >/.test.$$; then rm -f /.test.$$ fsck_opts="$fsck_opts -R" fi fi if [ "$(readlink -f $(which fsck))" != "/bin/busybox" ]; then fsck_opts="$fsck_opts -C0" fi fi trap : INT QUIT fsck ${fsck_args:--p} $fsck_opts "$@" case $? in 0) eend 0; return 0;; 1) ewend 1 "Filesystems repaired"; return 0;; 2|3) if [ "$RC_UNAME" = Linux ]; then ewend 1 "Filesystems repaired, but reboot needed" _reboot -f else ewend 1 "Filesystems still have errors;" \ "manual fsck required" _abort fi;; 4) if [ "$RC_UNAME" = Linux ]; then ewend 1 "Filesystem errors left uncorrected, aborting" _abort else ewend 1 "Filesystems repaired, but reboot needed" _reboot fi;; 8) ewend 1 "Operational error"; return 0;; 12) ewend 1 "fsck interrupted";; *) eend 2 "Filesystems couldn't be fixed";; esac _abort || return 1 } stop() { # Fake function so we always shutdown correctly. _abort() { return 0; } _reboot() { return 0; } _forcefsck() { return 1; } yesno $fsck_shutdown && start return 0 } #!/sbin/openrc-run # Copyright (c) Natanael Copa # This code is licensed under BSD-2-Clause description="Sets the hostname of the machine." depend() { keyword -prefix -lxc -docker } start() { if [ -s /etc/hostname ] ; then opts="-F /etc/hostname" else opts="${hostname:-localhost}" fi ebegin "Setting hostname" hostname $opts eend $? } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. extra_commands="save show" description="Sets the local clock to UTC or Local Time." description_save="Saves the current time in the BIOS." description_show="Displays the current time in the BIOS." : ${clock_adjfile:=${CLOCK_ADJFILE}} : ${clock_args:=${CLOCK_OPTS}} : ${clock_systohc:=${CLOCK_SYSTOHC}} : ${clock:=${CLOCK:-UTC}} if [ "$clock" = "UTC" ]; then utc="UTC" utc_cmd="--utc" else utc="Local Time" utc_cmd="--localtime" fi depend() { provide clock want modules if yesno $clock_adjfile; then use root fi keyword -docker -podman -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu } setupopts() { case "$(uname -m)" in s390*) utc="s390" ;; *) if [ -e /proc/devices ] && \ grep -q " cobd$" /proc/devices then utc="coLinux" fi ;; esac case "$utc" in UTC|Local" "Time);; *) unset utc_cmd;; esac } # hwclock doesn't always return non zero on error _hwclock() { local err="$(hwclock "$@" 2>&1 >/dev/null)" [ -z "$err" ] && return 0 echo "${err}" >&2 return 1 } get_noadjfile() { if ! yesno $clock_adjfile; then # Some implementations don't handle adjustments if LC_ALL=C hwclock --help 2>&1 | grep -q -e "--noadjfile"; then echo --noadjfile fi fi } rtc_exists() { local rtc= for rtc in /dev/rtc /dev/rtc[0-9]*; do [ -e "$rtc" ] && break done [ -e "$rtc" ] } start() { local retval=0 errstr="" modname setupopts if [ -z "$utc_cmd" ]; then ewarn "Not setting clock for $utc system" return 0 fi ebegin "Setting system clock using the hardware clock [$utc]" if [ -e /proc/modules ]; then if ! rtc_exists; then for x in rtc-cmos rtc genrtc; do modprobe -q $x && rtc_exists && modname="$x" && break done [ -n "$modname" ] && ewarn "The $modname module needs to be configured in" \ "${RC_SERVICE%/*/*}/conf.d/modules or built in." fi fi # Always set the kernel's time zone. _hwclock --systz $utc_cmd $(get_noadjfile) $clock_args : $(( retval += $? )) if [ -e /etc/adjtime ] && yesno $clock_adjfile; then _hwclock --adjust $utc_cmd $(get_noadjfile) : $(( retval += $? )) fi if yesno ${clock_hctosys:-YES}; then _hwclock --hctosys $utc_cmd $(get_noadjfile) $clock_args : $(( retval += $? )) fi eend $retval "Failed to set the system clock" return 0 } stop() { # Don't tweak the hardware clock on LiveCD halt. [ -n "$CDBOOT" ] && return 0 yesno ${clock_systohc:-YES} || return 0 local retval=0 errstr="" setupopts [ -z "$utc_cmd" ] && return 0 ebegin "Setting hardware clock using the system clock" "[$utc]" _hwclock --systohc $utc_cmd $(get_noadjfile) $clock_args retval=$? eend $retval "Failed to sync clocks" } save() { clock_systohc=yes stop } show() { setupopts hwclock --show "$utc_cmd" $(get_noadjfile) $clock_args } #!/sbin/openrc-run # Copyright (c) Natanael Copa # This code is licensed under BSD-2-Clause depend() { need sysfs dev before checkfs fsck after modloop keyword -vserver -lxc } # Load hardware drivers start() { # check for boot option "nocoldplug" if get_bootparam noautodetect; then ewarn "Autodetection of hardware disabled from boot cmdline" return 0 fi ebegin "Loading hardware drivers" find /sys -name modalias -type f -print0 2> /dev/null | xargs -0 sort -u \ | xargs modprobe -b -a 2> /dev/null # we run it twice so we detect all devices find /sys -name modalias -type f -print0 2> /dev/null | xargs -0 sort -u \ | xargs modprobe -b -a 2> /dev/null # check if framebuffer drivers got pulled in if [ -e /dev/fb0 ] && ! [ -e /sys/module/fbcon ]; then modprobe -b -q fbcon fi eend 0 } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Kill all processes so we can unmount disks cleanly." depend() { keyword -prefix } start() { ebegin "Terminating remaining processes" kill_all 15 ${killall5_opts} sleep ${kill_delay:-0} eend 0 ebegin "Killing remaining processes" sleep ${kill_delay:-0} kill_all 9 ${killall5_opts} eend 0 } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. conf_d_dir="${RC_SERVICE%/*/*}/conf.d" local_d_dir="${RC_SERVICE%/*/*}/local.d" description="Executes user programs in ${local_d_dir}" depend() { after * keyword -timeout } start() { local file has_errors redirect retval has_errors=0 yesno $rc_verbose || redirect='> /dev/null 2>&1' ebegin "Starting local" eindent for file in "${local_d_dir}"/*.start; do if [ -x "${file}" ]; then vebegin "Executing \"${file}\"" eval "${file}" $redirect retval=$? if [ ${retval} -ne 0 ]; then has_errors=1 fi veend ${retval} "Execution of \"${file}\" failed." fi done eoutdent if command -v local_start >/dev/null 2>&1; then ewarn "\"${conf_d_dir}/local\" should be removed." ewarn "Please move the code from the local_start function" ewarn "to executable scripts with an .start extension" ewarn "in \"${local_d_dir}\"" local_start fi eend ${has_errors} # We have to end with a zero exit code, because a failed execution # of an executable ${local_d_dir}/*.start file shouldn't result in # marking the local service as failed. Otherwise we are unable to # execute any executable ${local_d_dir}/*.stop file, because a failed # marked service cannot be stopped (and the stop function would # actually call the executable ${local_d_dir}/*.stop file(s)). return 0 } stop() { local file has_errors redirect retval has_errors=0 yesno $rc_verbose || redirect='> /dev/null 2>&1' ebegin "Stopping local" eindent for file in "${local_d_dir}"/*.stop; do if [ -x "${file}" ]; then vebegin "Executing \"${file}\"" eval "${file}" $redirect retval=$? if [ ${retval} -ne 0 ]; then has_errors=1 fi veend ${retval} "Execution of \"${file}\" failed." fi done eoutdent if command -v local_stop >/dev/null 2>&1; then ewarn "\"${conf_d_dir}/local\" should be removed." ewarn "Please move the code from the local_stop function" ewarn "to executable scripts with an .stop extension" ewarn "in \"${local_d_dir}\"" local_stop fi eend ${has_errors} # An executable ${local_d_dir}/*.stop file which failed with a # non-zero exit status is not a reason to mark this service # as failed, therefore we have to end with a zero exit code. return 0 } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Mounts disks and swap according to /etc/fstab." depend() { need fsck root use lvm modules after clock lvm modules keyword -docker -podman -jail -lxc -prefix -systemd-nspawn -vserver } start() { [ -x /sbin/mkmntdirs ] && mkmntdirs # Mount local filesystems in /etc/fstab. # The types variable must start with no, and must be a type local critical= types="noproc" x= no_netdev= rc= for x in $net_fs_list $extra_net_fs_list; do types="${types},${x}" done if [ "$RC_UNAME" = Linux ]; then no_netdev="-O no_netdev" if mountinfo -q /usr; then touch "$RC_SVCDIR"/usr_premounted fi fi ebegin "Mounting local filesystems" mount -at "$types" $no_netdev eend $? "Some local filesystem failed to mount" rc=$? if [ -z "$critical_mounts" ]; then rc=0 else for x in ${critical_mounts}; do fstabinfo -q $x || continue if ! mountinfo -q $x; then critical=x eerror "Failed to mount $x" fi done [ -z "$critical" ] && rc=0 fi return $rc } stop() { yesno $RC_GOINGDOWN || return 0 # We never unmount / or /dev or $RC_SVCDIR # Bug 381783 local rc_svcdir=$(printf '%s\n' "$RC_SVCDIR" | sed 's:/lib\(32\|64\)\?/:/lib(32|64)?/:g') local x= no_umounts_r="/|/dev|/dev/.*|${rc_svcdir}" no_umounts_r="${no_umounts_r}|/bin|/sbin|/lib(32|64)?|/libexec" # RC_NO_UMOUNTS is an env var that can be set by plugins local IFS="$IFS:" for x in $no_umounts $RC_NO_UMOUNTS; do no_umounts_r="$no_umounts_r|$x" done if [ "$RC_UNAME" = Linux ]; then no_umounts_r="$no_umounts_r|/proc|/proc/.*|/run|/sys|/sys/.*" if [ -e "$rc_svcdir"/usr_premounted ]; then no_umounts_r="$no_umounts_r|/usr" fi fi no_umounts_r="^($no_umounts_r)$" # Flush all pending disk writes now sync . "$RC_LIBEXECDIR"/sh/rc-mount.sh if [ "$RC_UNAME" = Linux ] && [ -d /sys/fs/aufs ] ; then #if / is aufs we remount it noxino during shutdown if mountinfo -q -f '^aufs$' / ; then mount -o remount,noxino,rw / sync fi local aufs_branch aufs_mount_point aufs_si_id aufs_br_id branches for aufs_si_dir in /sys/fs/aufs/si*; do [ -d "${aufs_si_dir}" ] || continue aufs_si_id="si=${aufs_si_dir#/sys/fs/aufs/si_}" aufs_mount_point="$(mountinfo -o ${aufs_si_id})" branches="$aufs_si_dir/br[0-9] $aufs_si_dir/br[0-9][0-9] $aufs_si_dir/br[0-9][0-9][0-9]" for x in $branches; do [ -e "${x}" ] || continue aufs_branch=$(sed 's/=.*//g' $x) eindent if ! mount -o "remount,del:$aufs_branch" "$aufs_mount_point" > /dev/null 2>&1; then ewarn "Failed to remove branch $aufs_branch from aufs" \ "$aufs_mount_point" fi eoutdent sync done done fi # Umount loop devices einfo "Unmounting loop devices" eindent do_unmount "umount -d" --skip-point-regex "$no_umounts_r" \ --node-regex "^/dev/loop" eoutdent # Now everything else, except network filesystems as the # network should be down by this point. einfo "Unmounting filesystems" eindent local fs= for x in $net_fs_list $extra_net_fs_list; do fs="$fs${fs:+|}$x" done [ -n "$fs" ] && fs="^($fs)$" do_unmount umount --skip-point-regex "$no_umounts_r" \ "${fs:+--skip-fstype-regex}" $fs --nonetdev eoutdent return 0 } #!/sbin/openrc-run # Copyright (c) 2013-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Configures the loopback interface." depend() { after clock keyword -jail -prefix -systemd-nspawn -vserver } start() { if [ "$RC_UNAME" = Linux ]; then ebegin "Bringing up network interface lo" if command -v ip > /dev/null 2>&1; then ip addr add 127.0.0.1/8 dev lo brd + ip link set lo up else ifconfig lo 127.0.0.1 netmask 255.0.0.0 fi else ebegin "Bringing up network interface lo0" ifconfig lo0 127.0.0.1 netmask 255.0.0.0 fi eend $? } #!/sbin/openrc-run # Copyright (c) Natanael Copa # This code is licensed under BSD-2-Clause description="Generate machine-id if needed" depend() { need root dev } start() { if [ -s /etc/machine-id ] ; then return 0 fi ebegin "Generating machine-id" dd if=/dev/urandom status=none bs=16 count=1 \ | md5sum | cut -d' ' -f1 > /etc/machine-id eend $? } #!/sbin/openrc-run # Copyright (c) Natanael Copa # This code is licensed under BSD-2-Clause # script that will mount image with modules depend() { after dev-mount before checkfs fsck hwdrivers modules hwclock dev sysfs keyword -vserver -lxc } # read kernel options init_KOPT() { for opt in $(cat /proc/cmdline 2>/dev/null); do case "$opt" in modloop=*|modloop_verify=*) eval "KOPT_${opt%%=*}='${opt#*=}'" ;; esac done } mountdirs() { awk '$2 !~ /^\/(sys|proc|dev|run)/ && $2 != "/" {print $2}' /proc/mounts } find_modloop() { local dir="$1" local kver=$(uname -r) local oifs="$IFS" IFS=$'\n' set -- $(blkid "$dir"/boot/* "$dir"/*) IFS="$oifs" for line; do img=${line%%:*} verify_modloop "$img" || eerror "Failed to verify signature of $img!" mount "$img" -o loop,ro /.modloop || continue if [ -d /.modloop/modules/$kver ]; then return 0 fi umount /.modloop done return 1 } verify_modloop() { local modloop=$1 key= if ! yesno "${KOPT_modloop_verify:=yes}"; then return 0 fi for key in /etc/apk/keys/*.pub; do local sig=/var/cache/misc/${modloop##*/}.SIGN.RSA.${key##*/} if [ -f "$sig" ]; then if ! command -v openssl > /dev/null; then ewarn "Missing openssl. Modloop verification disabled!" return 0 fi einfo "Verifying modloop" openssl dgst -sha1 -verify "$key" -signature "$sig" "$modloop" \ >/dev/null 2>&1 || return 1 fi done } find_backing_file() { local dir="$1" local dev=$(df -P "$dir" | tail -1 | awk '{print $1}') cat /sys/block/${dev#/dev/}/loop/backing_file 2>/dev/null } start() { local modloop= mount_opts= modloop_dldir="/lib" init_KOPT case "$KOPT_modloop" in none) return 0;; http://*|https://*|ftp://*) modloop=$modloop_dldir/${KOPT_modloop##*/} if [ ! -f "$modloop" ]; then mkdir -p "$modloop_dldir" wget -P "$modloop_dldir" "$KOPT_modloop" || eend 1 fi ;; *) for dir in $(mountdirs); do if [ -f "$dir"/$KOPT_modloop ]; then modloop="$dir/${KOPT_modloop##/}" alpine_mnt="$dir" break fi done ;; esac ebegin "Mounting modloop $modloop" mkdir -p /.modloop if [ -n "$modloop" ]; then verify_modloop "$modloop" || eerror "Failed to verify signature of $img!" mount -o loop,ro $modloop /.modloop eend $? || return 1 else for dir in $(mountdirs); do if find_modloop "$dir"; then alpine_mnt="$dir" break fi done if [ -d /.modloop/modules/$(uname -r) ]; then eend 0 else eend 1 || return 1 fi fi #use overlayfs if available and configured if grep -q -w "overlay$" /proc/filesystems && [ ! -z ${unionfs_size+x} ]; then ewarn "Use of unionfs_size is deprecated use overlay_size instead" overlay_size="$unionfs_size" fi if grep -q -w "overlay$" /proc/filesystems && [ -n "$overlay_size" ]; then ebegin "OverlayFS detected, mounting modloop rw" [ "$overlay_size" != 0 ] && mount_ops="-o size=$overlay_size" mkdir -p /.modoverlayfs /lib/modules mount -t tmpfs $mount_ops tmpfs /.modoverlayfs mkdir -p /.modoverlayfs/modules /.modoverlayfs/work mount -t overlay -o upperdir=/.modoverlayfs/modules,lowerdir=/lib/modules:/.modloop/modules,workdir=/.modoverlayfs/work overlay /lib/modules depmod -A eend $? || return 1 else rm -rf /lib/modules && ln -sf /.modloop/modules /lib/ fi # copy firmware if there are any if [ -d $alpine_mnt/firmware ]; then ebegin "Copying firmware from $alpine_mnt/firmware" cp -R -a $alpine_mnt/firmware /lib/ eend $? elif [ -d /lib/modules/firmware ]; then rmdir /lib/firmware 2>/dev/null \ && ln -s /lib/modules/firmware /lib/ fi return 0 } stop() { local ret=0 local mnt; for mnt in /lib/modules /.modoverlayfs /.modloop; do if mountinfo --quiet "$mnt"; then ebegin "Unmounting $mnt" umount -d "$mnt" || ret=1 fi done eend $ret || return 1 } #!/sbin/openrc-run # Copyright (c) Natanael Copa # This code is licensed under BSD-2-Clause description="Loads a user defined list of kernel modules." depend() { before hwclock hwdrivers keyword -openvz -prefix -vserver -lxc } start() { yesno $rc_verbose && verbose=yes ebegin "Loading modules" eindent for f in /lib/modules-load.d/*.conf \ /usr/lib/modules-load.d/*.conf; do if ! [ -f "$f" ]; then continue fi if [ -f /etc/modules-load.d/"${f##*/}" ]; then veinfo "Ignoring $f due to /etc/modules-load.d/${f##*/}" continue fi if [ -f /run/modules-load.d/"${f##*/}" ]; then veinfo "Ignoring $f due to /run/modules-load.d/${f##*/}" continue fi veinfo "Processing $f" sed -e 's/\#.*//g' -e '/^[[:space:]]*$/d' < "$f" \ | while read module args; do modprobe -q $module $args done done if [ -f /etc/modules ]; then veinfo "Processing /etc/modules" sed -e 's/\#.*//g' -e '/^[[:space:]]*$/d' < /etc/modules \ | while read module args; do modprobe -q $module $args done fi for f in /etc/modules-load.d/*.conf; do if [ ! -f "$f" ]; then continue fi if [ -f /run/modules-load.d/"${f##*/}" ]; then veinfo "Ignoring $f due to /run/modules-load.d/${f##*/}" continue fi veinfo "Processing $f" sed -e 's/\#.*//g' -e '/^[[:space:]]*$/d' < "$f" \ | while read module args; do modprobe -q $module $args done done for f in /run/modules-load.d/*.conf; do if [ ! -f "$f" ]; then continue fi veinfo "Processing $f" sed -e 's/\#.*//g' -e '/^[[:space:]]*$/d' < "$f" \ | while read module args; do modprobe -q $module $args done done eoutdent eend $? } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Re-mount filesystems read-only for a clean reboot." depend() { after killprocs savecache keyword -docker -podman -lxc -openvz -prefix -systemd-nspawn -vserver } start() { local ret=0 # Flush all pending disk writes now sync ebegin "Remounting remaining filesystems read-only" # We need the do_unmount function . "$RC_LIBEXECDIR"/sh/rc-mount.sh eindent # Bug 381783 local rc_svcdir=$(echo $RC_SVCDIR | sed 's:/lib\(32\|64\)\?/:/lib(32|64)?/:g') local m="/dev|/dev/.*|/proc|/proc.*|/sys|/sys/.*|/run|${rc_svcdir}" x= fs= m="$m|/bin|/sbin|/lib(32|64)?|/libexec" if [ -e "$rc_svcdir"/usr_premounted ]; then m="$m|/usr" fi # RC_NO_UMOUNTS is an env var that can be set by plugins local IFS="$IFS:" for x in $no_umounts $RC_NO_UMOUNTS; do m="$m|$x" done m="^($m)$" fs= for x in $net_fs_list $extra_net_fs_list; do fs="$fs${fs:+|}$x" done [ -n "$fs" ] && fs="^($fs)$" do_unmount "umount -r" \ --skip-point-regex "$m" \ "${fs:+--skip-fstype-regex}" $fs --nonetdev ret=$? eoutdent eend $ret } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Update /etc/mtab to match what the kernel knows about" depend() { after clock before localmount need root keyword -prefix -systemd-nspawn } start() { local rc=0 ebegin "Updating /etc/mtab" if ! checkpath -W /etc; then rc=1 elif ! yesno ${mtab_is_file:-no}; then [ ! -L /etc/mtab ] && [ -f /etc/mtab ] && ewarn "Removing /etc/mtab file" einfo "Creating mtab symbolic link" ln -snf /proc/self/mounts /etc/mtab else ewarn "The ${RC_SVCNAME} service will be removed in the future." ewarn "Please change the mtab_is_file setting to no and run" ewarn "# rc-service mtab restart" ewarn "to create the mtab symbolic link." [ -L /etc/mtab ] && ewarn "Removing /etc/mtab symbolic link" rm -f /etc/mtab einfo "Creating mtab file" # With / as tmpfs we cannot umount -at tmpfs in localmount as that # makes / readonly and dismounts all tmpfs even if in use which is # not good. Luckily, umount uses /etc/mtab instead of /proc/mounts # which allows this hack to work. grep -v "^[! ]* / tmpfs " /proc/mounts > /etc/mtab # Remove stale backups rm -f /etc/mtab~ /etc/mtab~~ fi eend $rc "/etc is not writable; unable to create /etc/mtab" return 0 } #!/sbin/openrc-run # Copyright (c) 2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Delays until the network is online or a specific timeout" depend() { after modules net need sysfs provide network-online keyword -docker -podman -jail -lxc -openvz -prefix -systemd-nspawn -uml -vserver } get_interfaces() { local ifname iftype for ifname in /sys/class/net/*; do [ -h "${ifname}" ] || continue read iftype < ${ifname}/type [ "$iftype" = "1" ] && printf "%s " ${ifname##*/} done } start () { local carriers configured dev gateway ifcount infinite local carrier operstate rc ebegin "Checking to see if the network is online" rc=0 interfaces=${interfaces:-$(get_interfaces)} timeout=${timeout:-120} [ $timeout -eq 0 ] && infinite=true || infinite=false while $infinite || [ $timeout -gt 0 ]; do carriers=0 configured=0 ifcount=0 for dev in ${interfaces}; do : $((ifcount += 1)) read carrier < /sys/class/net/$dev/carrier 2> /dev/null || carrier= [ "$carrier" = 1 ] && : $((carriers += 1)) read operstate < /sys/class/net/$dev/operstate 2> /dev/null || operstate= [ "$operstate" = up ] && : $((configured += 1)) done [ $configured -eq $ifcount ] && [ $carriers -ge 1 ] && break sleep 1 : $((timeout -= 1)) done ! $infinite && [ $timeout -eq 0 ] && rc=1 include_ping_test=${include_ping_test:-${ping_default_gateway}} if [ -n "${ping_default_gateway}" ]; then ewarn "ping_default_gateway is deprecated, please use include_ping_test" fi if [ $rc -eq 0 ] && yesno ${include_ping_test:-no}; then ping_test_host="${ping_test_host:-google.com}" if [ -n "$ping_test_host" ]; then while $infinite || [ $timeout -gt 0 ]; do ping -c 1 $ping_test_host > /dev/null 2>&1 rc=$? [ $rc -eq 0 ] && break sleep 1 : $((timeout -= 1)) done fi fi eend $rc "The network is offline" } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Mounts network shares according to /etc/fstab." depend() { local opts mywant="" for opts in $(fstabinfo -o -t nfs,nfs4); do case $opts in noauto) ;; *) mywant="$mywant nfsclient"; break ;; esac done after root config /etc/fstab want $mywant use afc-client amd openvpn use dns use root keyword -docker -podman -jail -lxc -prefix -systemd-nspawn -vserver } start() { local x= fs= rc= for x in $net_fs_list $extra_net_fs_list; do fs="$fs${fs:+,}$x" done ebegin "Mounting network filesystems" mount -at $fs rc=$? if [ "$RC_UNAME" = Linux ] && [ $rc = 0 ]; then mount -a -O _netdev rc=$? fi ewend $rc "Could not mount all network filesystems" if [ -z "$critical_mounts" ]; then rc=0 else for x in ${critical_mounts}; do fstabinfo -q $x || continue if ! mountinfo -q $x; then critical=x eerror "Failed to mount $x" fi done [ -z "$critical" ] && rc=0 fi return $rc } stop() { local x= fs= ebegin "Unmounting network filesystems" . "$RC_LIBEXECDIR"/sh/rc-mount.sh for x in $net_fs_list $extra_net_fs_list; do fs="$fs${fs:+,}$x" done if [ -n "$fs" ]; then umount -at $fs || eerror "Failed to simply unmount filesystems" fi eindent fs= for x in $net_fs_list $extra_net_fs_list; do fs="$fs${fs:+|}$x" done [ -n "$fs" ] && fs="^($fs)$" do_unmount umount ${fs:+--fstype-regex} $fs --netdev retval=$? eoutdent if [ "$RC_UNAME" = Linux ] && [ $retval = 0 ]; then umount -a -O _netdev retval=$? fi eend $retval "Failed to unmount network filesystems" } #!/sbin/openrc-run # Copyright (c) Natanael Copa # This code is licensed under BSD-2-Clause # # note that the spoofprotect, syncoockies and ip_forward options are set in # /etc/sysctl.conf : ${cfgfile:="/etc/network/interfaces"} : ${ifquery:="ifquery"} : ${ifstate:="/run/ifstate"} single_iface="${RC_SVCNAME#*.}" if [ "$single_iface" = "$RC_SVCNAME" ]; then single_iface= fi depend() { need localmount hostname want dev-settle after bootmisc hwdrivers modules provide net keyword -jail -prefix -vserver -docker } # find interfaces we want to start find_ifaces() { if [ -n "$single_iface" ]; then echo $single_iface return 0 fi if command -v "$ifquery" >/dev/null; then $ifquery -i "$cfgfile" --list -a return fi # fallback in case ifquery does not exist awk '$1 == "auto" {for (i = 2; i <= NF; i = i + 1) printf("%s ", $i)}' "$cfgfile" } # return the list of interfaces we should try stop find_running_ifaces() { if [ -n "$single_iface" ]; then echo $single_iface return 0 fi if command -v "$ifquery" >/dev/null; then $ifquery --state-file $ifstate -i "$cfgfile" --running return fi # fallback awk -F= '{print $2}' $ifstate } start() { local iface= ret=1 ebegin "Starting networking" eindent for iface in $(find_ifaces); do local r=0 ebegin "$iface" if ! ifup -i "$cfgfile" $iface >/dev/null; then ifdown -i "$cfgfile" $iface >/dev/null 2>&1 r=1 fi # atleast one interface needs to be started for action # to be success eend $r && ret=0 done eoutdent return $ret } stop() { local iface= # Don't stop the network at shutdown. yesno ${keep_network:-YES} && yesno $RC_GOINGDOWN && return 0 ebegin "Stopping networking" eindent for iface in $(find_running_ifaces); do ebegin "$iface" ifdown -i "$cfgfile" -f $iface >/dev/null eend $? done eoutdent return 0 } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Turns numlock on for the consoles." ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} depend() { keyword -docker -podman -lxc -openvz -prefix -systemd-nspawn -vserver } _setleds() { [ -z "$1" ] && return 1 local dev=/dev/tty t= i=1 retval=0 [ -d /dev/vc ] && dev=/dev/vc/ while [ $i -le $ttyn ]; do setleds -D "$1"num < $dev$i || retval=1 : $(( i += 1 )) done return $retval } start() { ebegin "Enabling numlock on ttys" _setleds + eend $? "Failed to enable numlock" } stop() { yesno $RC_GOINGDOWN && return 0 ebegin "Disabling numlock on ttys" _setleds - eend $? "Failed to disable numlock" } #!/sbin/openrc-run # Copyright (c) 2014-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. # Can be used on OSs that take care of the clock. description="Provides clock" depend() { provide clock } start() { # This stub function is required to avoid OpenRC warning at boot: # # * The command variable is undefined. # * There is nothing for osclock to start. # * If this is what you intend, please write a start function. # * This will become a failure in a future release. # return 0 } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Mounts misc filesystems in /proc." depend() { after clock use devfs want modules keyword -docker -podman -lxc -openvz -prefix -systemd-nspawn -vserver } start() { # Setup Kernel Support for miscellaneous Binary Formats if [ -d /proc/sys/fs/binfmt_misc ] && [ ! -e /proc/sys/fs/binfmt_misc/register ]; then if ! grep -qs binfmt_misc /proc/filesystems && modprobe -q binfmt-misc; then ewarn "The binfmt-misc module needs to be loaded by" \ "the modules service or built in." fi if grep -qs binfmt_misc /proc/filesystems; then ebegin "Mounting misc binary format filesystem" mount -t binfmt_misc -o nodev,noexec,nosuid \ binfmt_misc /proc/sys/fs/binfmt_misc eend $? fi fi return 0 } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Mount the root fs read/write" depend() { after clock need fsck keyword -docker -podman -jail -lxc -openvz -prefix -systemd-nspawn -vserver } start() { local root_opts=",$(fstabinfo -o /)," case "$root_opts" in *,ro,*) ;; *) # Check if the rootfs isn't already writable. if checkpath -W /; then rm -f /fastboot /forcefsck else ebegin "Remounting root filesystem read/write" case "$RC_UNAME" in Linux) mount -n -o remount,rw / ;; *) mount -u -o rw / ;; esac eend $? "Root filesystem could not be mounted read/write" if [ $? -eq 0 ]; then rm -f /fastboot /forcefsck fi fi ;; esac case "$root_opts" in *,shared,*|*,rshared,*) ebegin "Making root filesystem shared" case "$RC_UNAME" in Linux) mount --make-rshared / ;; *) ewarn "Ignoring 'shared' option for / on non-linux" ;; esac eend $? "Root filesystem could not be made shared" ;; esac ebegin "Remounting filesystems" local mountpoint for mountpoint in $(fstabinfo); do case "${mountpoint}" in /*) # Don't remount swap etc. mountinfo -q "${mountpoint}" && \ fstabinfo --remount "${mountpoint}" ;; esac done eend 0 } #!/sbin/openrc-run # Copyright (c) 2016 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. supervisor=supervise-daemon command=/usr/bin/runsvdir pidfile="/var/run/${RC_SVCNAME}.pid" command_args="-P $RC_SVCDIR/sv 'log: ...........................................................................................................................................................................................................................................................................................................................................................................................................'" start_pre() { checkpath -m 0755 -o root:root -d ${RC_SVCDIR}/sv } #!/sbin/openrc-run # Copyright (c) 2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. command=/bin/s6-svscan command_args="${RC_SVCDIR}"/s6-scan command_background=yes pidfile=/var/run/s6-svscan.pid depend() { need localmount } start_pre() { if [ ! -e "$command" ]; then eerror "$command is missing (please install s6)" else einfo "Creating s6 scan directory" checkpath -d -m 0755 "$RC_SVCDIR"/s6-scan fi return } stop_post() { ebegin "Stopping any remaining s6 services" s6-svc -dx "${RC_SVCDIR}"/s6-scan/* 2>/dev/null || true eend $? ebegin "Stopping any remaining s6 service loggers" s6-svc -dx "${RC_SVCDIR}"/s6-scan/*/log 2>/dev/null || true eend $? } #!/sbin/openrc-run # Copyright (c) 2018 Sony Interactive Entertainment, Inc. # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Save the keymap for use as early as possible" depend() { need termencoding after bootmisc clock keymaps keyword -docker -podman -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu } start() { # Save the keymapping for use immediately at boot ebegin "Saving key mapping" if checkpath -W "$RC_LIBEXECDIR"; then mkdir -p "$RC_LIBEXECDIR"/console dumpkeys >"$RC_LIBEXECDIR"/console/keymap fi eend $? "Unable to save keymapping" } #!/sbin/openrc-run # Copyright (c) 2018 Sony Interactive Entertainment, Inc. # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Configures terminal encoding." ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} : ${unicode:=${UNICODE}} depend() { keyword -docker -podman -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu use root after bootmisc clock termencoding } start() { ebegin "Saving terminal encoding" # Save the encoding for use immediately at boot if checkpath -W "$RC_LIBEXECDIR"; then mkdir -p "$RC_LIBEXECDIR"/console if yesno ${unicode:-yes}; then echo "" > "$RC_LIBEXECDIR"/console/unicode else rm -f "$RC_LIBEXECDIR"/console/unicode fi fi eend 0 } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Saves the caches OpenRC uses to non volatile storage" start() { if [ -e "$RC_SVCDIR"/clock-skewed ]; then ewarn "Clock skew detected!" if ! yesno "${RC_GOINGDOWN}"; then eerror "Not saving deptree cache" return 1 fi fi if [ ! -d "$RC_LIBEXECDIR"/cache ]; then if ! checkpath -W "$RC_LIBEXECDIR"; then eerror "${RC_LIBEXECDIR} is not writable!" eerror "Unable to save dependency cache" if yesno "${RC_GOINGDOWN}"; then return 0 fi return 1 fi rm -rf "$RC_LIBEXECDIR"/cache if ! mkdir -p "$RC_LIBEXECDIR"/cache; then eerror "Unable to create $RC_LIBEXECDIR/cache" eerror "Unable to save dependency cache" if yesno "${RC_GOINGDOWN}"; then return 0 fi return 1 fi fi if ! checkpath -W "$RC_LIBEXECDIR"/cache; then eerror "${RC_LIBEXECDIR}/cache is not writable!" eerror "Unable to save dependency cache" if yesno "${RC_GOINGDOWN}"; then return 0 fi return 1 fi ebegin "Saving dependency cache" local rc=0 save= for x in depconfig deptree rc.log shutdowntime softlevel; do [ -e "$RC_SVCDIR/$x" ] && save="$save $RC_SVCDIR/$x" done if [ -n "$save" ]; then cp -p $save "$RC_LIBEXECDIR"/cache rc=$? fi if yesno "${RC_GOINGDOWN}"; then if [ $rc -ne 0 ]; then eerror "Unable to save dependency cache" fi eend 0 fi eend $rc "Unable to save dependency cache" } #!/sbin/openrc-run # Copyright (c) 2007-2022 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Initializes the random number generator." depend() { after clock need localmount keyword -docker -podman -jail -lxc -openvz -prefix -systemd-nspawn provide urandom } seedrng_with_options() { set -- [ -n "${seed_dir}" ] && set -- "$@" --seed-dir "${seed_dir}" yesno "${skip_credit}" && set -- "$@" --skip-credit seedrng "$@" } start() { ebegin "Seeding random number generator" seedrng_with_options eend $? "Error seeding random number generator" return 0 } stop() { ebegin "Saving random number generator seed" seedrng_with_options eend $? "Error saving random number generator seed" return 0 } #!/sbin/openrc-run # Copyright (c) 2009-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. # This script was inspired by the equivalent rc.d staticroute from NetBSD. description="Configures static routes." __nl=" " depend() { after clock provide net use network keyword -jail -prefix -vserver } pre_flight_checks() { route=route [ -s /etc/route.conf ] && return 0 if [ -n "$staticiproute" ]; then route="ip route" staticroute="$staticiproute" fi } dump_args() { # Route configuration file, as used by the NetBSD RC system if [ -s /etc/route.conf ]; then cat /etc/route.conf return $? fi case "$staticroute" in *"$__nl"*) echo "$staticroute" ;; *) ( set -o noglob IFS=';'; set -- $staticroute IFS="$__nl"; echo "$*" ) ;; esac } do_routes() { local xtra= family= [ "$RC_UNAME" != Linux ] && xtra=-q ebegin "$1 static routes" eindent pre_flight_checks dump_args | while read args; do [ -z "$args" ] && continue case "$args" in "#"*) ;; "+"*) [ $2 = "add" ] && eval ${args#*+} ;; "-"*) [ $2 = "del" -o $2 = "delete" ] && eval ${args#*-} ;; *) veinfo "$args" case "$route" in "ip route") ip route $2 $args ;; *) # Linux route does cannot work it out ... if [ "$RC_UNAME" = Linux ]; then case "$args" in *:*) family="-A inet6";; *) family=;; esac fi route $family $xtra $2 -$args ;; esac veend $? esac done eoutdent eend 0 } start() { do_routes "Adding" "add" } stop() { local cmd="delete" [ "$RC_UNAME" = Linux ] && cmd="del" do_routes "Deleting" "$cmd" } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. depend() { after clock root before localmount keyword -docker -podman -jail -lxc -openvz -prefix -systemd-nspawn -vserver } start() { ebegin "Activating swap devices" case "$RC_UNAME" in NetBSD|OpenBSD) swapctl -A -t noblk >/dev/null;; *) swapon -a >/dev/null;; esac eend 0 # If swapon has nothing todo it errors, so always return 0 } stop() { ebegin "Deactivating swap devices" case "$RC_UNAME" in NetBSD|OpenBSD) swapctl -U -t noblk >/dev/null;; *) swapoff -a >/dev/null;; esac eend 0 } #!/sbin/openrc-run # Copyright (c) 2009-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Sets the local clock to the mtime of a given file." swclock_file="${swclock_file:-/var/lib/misc/openrc-shutdowntime}" depend() { provide clock keyword -docker -podman -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu } # swclock is an OpenRC built in start() { ebegin "Setting the local clock based on last shutdown time" if ! swclock "${swclock_file}" 2> /dev/null; then swclock --warn /sbin/openrc-run fi eend $? } stop() { ebegin "Saving the shutdown time" swclock --save "${swclock_file}" eend $? } #!/sbin/openrc-run depend() { after clock before bootmisc logger keyword -prefix -systemd-nspawn -vserver } start() { local quiet retval=0 status ebegin "Configuring kernel parameters" yesno $rc_verbose || quiet=-q eindent for f in /lib/sysctl.d/*.conf \ /usr/lib/sysctl.d/*.conf; do if [ -f /etc/sysctl.d/"${f##*/}" ]; then veinfo "Ignoring $f due to /etc/sysctl.d/${f##*/}" continue fi if [ -f /run/sysctl.d/"${f##*/}" ]; then veinfo "Ignoring $f due to /run/sysctl.d/${f##*/}" continue fi if [ -f "$f" ]; then vebegin "applying $f" sysctl $quiet -p "$f" status=$? if [ $status -gt 0 ]; then # Don't change retval= since we expect some package/distro provided # sysctl configurations to break, so just warn when the user wants # verbose messages vewarn "Unable to configure kernel parameters from $f" fi fi done for f in /etc/sysctl.d/*.conf; do if [ -f /run/sysctl.d/"${f##*/}" ]; then veinfo "Ignoring $f due to /run/sysctl.d/${f##*/}" continue fi if [ -f "$f" ]; then vebegin "applying $f" sysctl $quiet -p "$f" status=$? if [ $status -gt 0 ]; then retval=$(( $retval + $status )) eerror "Unable to configure kernel parameters from $f" fi fi done if [ -f /etc/sysctl.conf ]; then vebegin "applying /etc/sysctl.conf" sysctl $quiet -p /etc/sysctl.conf status=$? if [ $status -gt 0 ]; then retval=$(( $retval + $status )) eerror "Unable to configure kernel parameters from /etc/sysctl.conf" fi fi for f in /run/sysctl.d/*.conf; do if [ -f "$f" ]; then vebegin "applying $f" sysctl $quiet -p "$f" status=$? if [ $status -gt 0 ]; then retval=$(( $retval + $status )) eerror "Unable to configure kernel parameters from $f" fi fi done eoutdent eend $retval } #!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Mount the sys filesystem." sysfs_opts=nodev,noexec,nosuid depend() { keyword -docker -podman -lxc -prefix -systemd-nspawn -vserver } mount_sys() { grep -Eq "[[:space:]]+sysfs$" /proc/filesystems || return 1 mountinfo -q /sys && return 0 if [ ! -d /sys ]; then if ! mkdir -m 0755 /sys; then ewarn "Could not create /sys!" return 1 fi fi ebegin "Mounting /sys" if ! fstabinfo --mount /sys; then mount -n -t sysfs -o ${sysfs_opts} sysfs /sys fi eend $? } mount_misc() { # Setup Kernel Support for securityfs if [ -d /sys/kernel/security ] && \ ! mountinfo -q /sys/kernel/security; then if grep -qs securityfs /proc/filesystems; then ebegin "Mounting security filesystem" mount -n -t securityfs -o ${sysfs_opts} \ securityfs /sys/kernel/security eend $? fi fi # Setup Kernel Support for debugfs if [ -d /sys/kernel/debug ] && ! mountinfo -q /sys/kernel/debug; then if grep -qs debugfs /proc/filesystems; then ebegin "Mounting debug filesystem" mount -n -t debugfs -o ${sysfs_opts} debugfs /sys/kernel/debug eend $? fi fi # Setup Kernel Support for configfs if [ -d /sys/kernel/config ] && ! mountinfo -q /sys/kernel/config; then if grep -qs configfs /proc/filesystems; then ebegin "Mounting config filesystem" mount -n -t configfs -o ${sysfs_opts} configfs /sys/kernel/config eend $? fi fi # set up kernel support for fusectl if [ -d /sys/fs/fuse/connections ] \ && ! mountinfo -q /sys/fs/fuse/connections; then if grep -qs fusectl /proc/filesystems; then ebegin "Mounting fuse control filesystem" mount -n -t fusectl -o ${sysfs_opts} \ fusectl /sys/fs/fuse/connections eend $? fi fi # Setup Kernel Support for SELinux if [ -d /sys/fs/selinux ] && ! mountinfo -q /sys/fs/selinux; then if grep -qs selinuxfs /proc/filesystems; then ebegin "Mounting SELinux filesystem" mount -t selinuxfs selinuxfs /sys/fs/selinux eend $? fi fi # Setup Kernel Support for persistent storage if [ -d /sys/fs/pstore ] && ! mountinfo -q /sys/fs/pstore; then if grep -qs 'pstore$' /proc/filesystems; then ebegin "Mounting persistent storage (pstore) filesystem" mount -t pstore pstore -o ${sysfs_opts} /sys/fs/pstore eend $? fi fi # set up kernel support for efivarfs if [ -d /sys/firmware/efi/efivars ] && ! mountinfo -q /sys/firmware/efi/efivars; then ebegin "Mounting efivarfs filesystem" mount -n -t efivarfs -o ${sysfs_opts} \ efivarfs /sys/firmware/efi/efivars 2> /dev/null eend 0 fi } restorecon_sys() { if [ -x /sbin/restorecon ]; then ebegin "Restoring SELinux contexts in /sys" restorecon -F /sys/devices/system/cpu/online >/dev/null 2>&1 eend $? fi } start() { mount_sys mount_misc restorecon_sys return 0 } #!/sbin/openrc-run description="Set sysfs variables from /etc/sysfs.conf and /etc/sysfs.d/*.conf" conffile=/etc/sysfs.conf confdir=/etc/sysfs.d depend() { need sysfs } setval() { local value="$1" attrib="$2" # Some fields need a terminating newline, others # need the terminating newline to be absent :-( echo -n "$value" > "$attrib" 2>/dev/null \ || echo "$value" > "$attrib" } load_conffile() { local file="$1" while read line; do local line=${line%%#*} local cmd= attrib= value= set -- $line if [ $# -eq 0 ]; then continue fi case "$1$3" in mode=) cmd=chmod attrib="$2" value="$4" ;; owner=) cmd=chown attrib="$2" value="$4" ;; *) if [ "$2" = "=" ]; then cmd=setval attrib="$1" value="$3" fi ;; esac if ! [ -e "/sys/$attrib" ]; then eerror "$attrib: unknown attribute" continue fi if [ -z "$attrib" ] || [ -z "$value" ]; then eerror "syntax error in $file: '$line'" continue fi $cmd "$value" "/sys/$attrib" done < "$file" } start() { [ -r "$conffile" -o -d "$confdir" ] || return 0 ebegin "Setting sysfs variables" for file in $confdir/*.conf $conffile; do [ -r "$file" ] || continue load_conffile "$file" || return 1 done eend 0 } #!/sbin/openrc-run # Copyright (c) 2008-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Configures terminal encoding." ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} : ${unicode:=${UNICODE}} depend() { keyword -docker -podman -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu after devfs } start() { local ttydev=/dev/tty n= [ -d /dev/vc ] && ttydev=/dev/vc/ # Set terminal encoding to either ASCII or UNICODE. # See utf-8(7) for more information. local termencoding="%@" termmsg="ASCII" if yesno ${unicode:-yes}; then termencoding="%G" termmsg="UTF-8" fi ebegin "Setting terminal encoding [$termmsg]" n=1 while [ ${n} -le "$ttyn" ]; do printf "\033%s" "$termencoding" >$ttydev$n : $(( n += 1 )) done # Save the encoding for use immediately at boot if checkpath -W "$RC_LIBEXECDIR"; then mkdir -p "$RC_LIBEXECDIR"/console if yesno ${unicode:-yes}; then echo "" > "$RC_LIBEXECDIR"/console/unicode else rm -f "$RC_LIBEXECDIR"/console/unicode fi fi eend 0 } This directory should contain programs or scripts which are to be run when the local service is started or stopped. If a file in this directory is executable and it has a .start extension, it will be run when the local service is started. If a file is executable and it has a .stop extension, it will be run when the local service is stopped. All files are processed in lexical order. Keep in mind that files in this directory are processed sequentially, and the local service is not considered started or stopped until everything is processed, so if you have a process which takes a long time to run, it can delay your boot or shutdown processing. /var/log/rc.log { missingok notifempty } # Global OpenRC configuration settings # Set to "YES" if you want the rc system to try and start services # in parallel for a slight speed improvement. When running in parallel we # prefix the service output with its name as the output will get # jumbled up. # WARNING: whilst we have improved parallel, it can still potentially lock # the boot process. Don't file bugs about this unless you can supply # patches that fix it without breaking other things! #rc_parallel="NO" # Set rc_interactive to "YES" and you'll be able to press the I key during # boot so you can choose to start specific services. Set to "NO" to disable # this feature. This feature is automatically disabled if rc_parallel is # set to YES. #rc_interactive="YES" # If we need to drop to a shell, you can specify it here. # If not specified we use $SHELL, otherwise the one specified in /etc/passwd, # otherwise /bin/sh # Linux users could specify /sbin/sulogin #rc_shell=/bin/sh # Do we allow any started service in the runlevel to satisfy the dependency # or do we want all of them regardless of state? For example, if net.eth0 # and net.eth1 are in the default runlevel then with rc_depend_strict="NO" # both will be started, but services that depend on 'net' will work if either # one comes up. With rc_depend_strict="YES" we would require them both to # come up. #rc_depend_strict="YES" # rc_hotplug controls which services we allow to be hotplugged. # A hotplugged service is one started by a dynamic dev manager when a matching # hardware device is found. # Hotplugged services appear in the "hotplugged" runlevel. # If rc_hotplug is set to any value, we compare the name of this service # to every pattern in the value, from left to right, and we allow the # service to be hotplugged if it matches a pattern, or if it matches no # patterns. Patterns can include shell wildcards. # To disable services from being hotplugged, prefix patterns with "!". #If rc_hotplug is not set or is empty, all hotplugging is disabled. # Example - rc_hotplug="net.wlan !net.*" # This allows net.wlan and any service not matching net.* to be hotplugged. # Example - rc_hotplug="!net.*" # This allows services that do not match "net.*" to be hotplugged. # rc_logger launches a logging daemon to log the entire rc process to # /var/log/rc.log # NOTE: Linux systems require the devfs service to be started before # logging can take place and as such cannot log the sysinit runlevel. #rc_logger="NO" # Through rc_log_path you can specify a custom log file. # The default value is: /var/log/rc.log #rc_log_path="/var/log/rc.log" # If you want verbose output for OpenRC, set this to yes. If you want # verbose output for service foo only, set it to yes in /etc/conf.d/foo. #rc_verbose=no # By default we filter the environment for our running scripts. To allow other # variables through, add them here. Use a * to allow all variables through. #rc_env_allow="VAR1 VAR2" # By default we assume that all daemons will start correctly. # However, some do not - a classic example is that they fork and return 0 AND # then child barfs on a configuration error. Or the daemon has a bug and the # child crashes. You can set the number of milliseconds start-stop-daemon # waits to check that the daemon is still running after starting here. # The default is 0 - no checking. #rc_start_wait=100 # rc_nostop is a list of services which will not stop when changing runlevels. # This still allows the service itself to be stopped when called directly. #rc_nostop="" # rc will attempt to start crashed services by default. # However, it will not stop them by default as that could bring down other # critical services. #rc_crashed_stop=NO #rc_crashed_start=YES # Set rc_nocolor to yes if you do not want colors displayed in OpenRC # output. #rc_nocolor=NO ############################################################################## # MISC CONFIGURATION VARIABLES # There variables are shared between many init scripts # Set unicode to NO to turn off unicode support for keyboards and screens. #unicode="YES" # This is how long fuser should wait for a remote server to respond. The # default is 60 seconds, but it can be adjusted here. #rc_fuser_timeout=60 # Below is the default list of network fstypes. # # afs ceph cifs coda davfs fuse fuse.glusterfs fuse.sshfs gfs glusterfs lustre # ncpfs nfs nfs4 ocfs2 shfs smbfs # # If you would like to add to this list, you can do so by adding your # own fstypes to the following variable. #extra_net_fs_list="" ############################################################################## # SERVICE CONFIGURATION VARIABLES # These variables are documented here, but should be configured in # /etc/conf.d/foo for service foo and NOT enabled here unless you # really want them to work on a global basis. # If your service has characters in its name which are not legal in # shell variable names and you configure the variables for it in this # file, those characters should be replaced with underscores in the # variable names as shown below. # Some daemons are started and stopped via start-stop-daemon. # We can set some things on a per service basis, like the nicelevel. # These need to be exported #export SSD_NICELEVEL="0" # Or the ionice level. The format is class[:data] , just like the # --ionice start-stop-daemon parameter. #export SSD_IONICELEVEL="0:0" # Or the OOM score adjustment. #export SSD_OOM_SCORE_ADJ="0" # Pass ulimit parameters # If you are using bash in POSIX mode for your shell, note that the # ulimit command uses a block size of 512 bytes for the -c and -f # options #rc_ulimit="-u 30" # It's possible to define extra dependencies for services like so #rc_config="/etc/foo" #rc_need="openvpn" #rc_use="net.eth0" #rc_after="clock" #rc_before="local" #rc_provide="!net" # You can also enable the above commands here for each service. Below is an # example for service foo. #rc_foo_config="/etc/foo" #rc_foo_need="openvpn" #rc_foo_after="clock" # Below is an example for service foo-bar. Note that the '-' is illegal # in a shell variable name, so we convert it to an underscore. # example for service foo-bar. #rc_foo_bar_config="/etc/foo-bar" #rc_foo_bar_need="openvpn" #rc_foo_bar_after="clock" # You can also remove dependencies. # This is mainly used for saying which services do NOT provide net. #rc_net_tap0_provide="!net" # This is the subsystem type. # It is used to match against keywords set by the keyword call in the # depend function of service scripts. # # It should be set to the value representing the environment this file is # PRESENTLY in, not the virtualization the environment is capable of. # If it is commented out, automatic detection will be used. # # The list below shows all possible settings as well as the host # operating systems where they can be used and autodetected. # # "" - nothing special # "docker" - Docker container manager (Linux) # "podman" - Podman container manager (Linux) # "jail" - Jail (DragonflyBSD or FreeBSD) # "lxc" - Linux Containers # "openvz" - Linux OpenVZ # "prefix" - Prefix # "rkt" - CoreOS container management system (Linux) # "subhurd" - Hurd subhurds (to be checked) # "systemd-nspawn" - Container created by systemd-nspawn (Linux) # "uml" - Usermode Linux # "vserver" - Linux vserver # "xen0" - Xen0 Domain (Linux and NetBSD) # "xenU" - XenU Domain (Linux and NetBSD) #rc_sys="" # if you use openrc-init, which is currently only available on Linux, # this is the default runlevel to activate after "sysinit" and "boot" # when booting. #rc_default_runlevel="default" # on Linux and Hurd, this is the number of ttys allocated for logins # It is used in the consolefont, keymaps, numlock and termencoding # service scripts. rc_tty_number=12 ############################################################################## # LINUX CGROUPS RESOURCE MANAGEMENT # This sets the mode used to mount cgroups. # "hybrid" mounts cgroups version 2 on /sys/fs/cgroup/unified and # cgroups version 1 on /sys/fs/cgroup. # "legacy" mounts cgroups version 1 on /sys/fs/cgroup # "unified" mounts cgroups version 2 on /sys/fs/cgroup #rc_cgroup_mode="unified" # This is a list of controllers which should be enabled for cgroups version 2 # when hybrid mode is being used. # Controllers listed here will not be available for cgroups version 1. #rc_cgroup_controllers="" # This variable contains the cgroups version 2 settings for your services. # If this is set in this file, the settings will apply to all services. # If you want different settings for each service, place the settings in # /etc/conf.d/foo for service foo. # The format is to specify the setting and value followed by a newline. # Multiple settings and values can be specified. # For example, you would use this to set the maximum memory and maximum # number of pids for a service. #rc_cgroup_settings=" #memory.max 10485760 #pids.max max #" # # For more information about the adjustments that can be made with # cgroups version 2, see Documentation/cgroups-v2.txt in the linux kernel # source tree. #rc_cgroup_settings="" # This switch controls whether or not cgroups version 1 controllers are # individually mounted under # /sys/fs/cgroup in hybrid or legacy mode. #rc_controller_cgroups="YES" # The following setting turns on the memory.use_hierarchy setting in the # root memory cgroup for cgroups v1. # It must be set to yes in this file if you want this functionality. #rc_cgroup_memory_use_hierarchy="NO" # The following settings allow you to set up values for the cgroups version 1 # controllers for your services. # They can be set in this file;, however, if you do this, the settings # will apply to all of your services. # If you want different settings for each service, place the settings in # /etc/conf.d/foo for service foo. # The format is to specify the names of the settings followed by their # values. Each variable can hold multiple settings. # For example, you would use this to set the cpu.shares setting in the # cpu controller to 512 for your service. # rc_cgroup_cpu=" # cpu.shares 512 # " # # For more information about the adjustments that can be made with # cgroups version 1, see Documentation/cgroups-v1/* in the linux kernel # source tree. # Set the blkio controller settings for this service. #rc_cgroup_blkio="" # Set the cpu controller settings for this service. #rc_cgroup_cpu="" # Add this service to the cpuacct controller (any value means yes). #rc_cgroup_cpuacct="" # Set the cpuset controller settings for this service. #rc_cgroup_cpuset="" # Set the devices controller settings for this service. #rc_cgroup_devices="" # Set the hugetlb controller settings for this service. #rc_cgroup_hugetlb="" # Set the memory controller settings for this service. #rc_cgroup_memory="" # Set the net_cls controller settings for this service. #rc_cgroup_net_cls="" # Set the net_prio controller settings for this service. #rc_cgroup_net_prio="" # Set the pids controller settings for this service. #rc_cgroup_pids="" # Set this to YES if you want all of the processes in a service's cgroup # killed when the service is stopped or restarted. # Be aware that setting this to yes means all of a service's # child processes will be killed. Keep this in mind if you set this to # yes here instead of for the individual services in # /etc/conf.d/. # To perform this cleanup manually for a stopped service, you can # execute cgroup_cleanup with /etc/init.d/ cgroup_cleanup or # rc-service cgroup_cleanup. # If the kernel includes support for cgroup2's cgroup.kill, this is used # to reliably teardown the cgroup. # If this fails, the process followed in this cleanup is the following: # 1. send stopsig (sigterm if it isn't set) to all processes left in the # cgroup immediately followed by sigcont. # 2. Send sighup to all processes in the cgroup if rc_send_sighup is # yes. # 3. delay for rc_timeout_stopsec seconds. # 4. send sigkill to all processes in the cgroup unless disabled by # setting rc_send_sigkill to no. # rc_cgroup_cleanup="NO" # If this is yes, we will send sighup to the processes in the cgroup # immediately after stopsig and sigcont. #rc_send_sighup="NO" # This is the amount of time in seconds that we delay after sending sigcont # and optionally sighup, before we optionally send sigkill to all # processes in the # cgroup. # The default is 90 seconds. #rc_timeout_stopsec="90" # If this is set to no, we do not send sigkill to all processes in the # cgroup. #rc_send_sigkill="YES" ############################################################################## # SUPERVISE DAEMON CONFIGURATION VARIABLES # These variables sets more reasonable defaults for supervise-daemon(8). # They may be overriden on a per service basis. # Wait this number of seconds before restarting a daemon after it crashes. respawn_delay=2 # Sets the maximum number of times a daemon will be respawned during a respawn # period. If a daemon dies more than this number of times during a respawn # period, supervise-daemon(8) will give up trying to respawn it and exit. # 0 means unlimited. respawn_max=5 # Sets the length in seconds of a respawn period. respawn_period=1800 Kernel system variables configuration files Files found under the /etc/sysctl.d directory that end with .conf are parsed within sysctl(8) at boot time. If you want to set kernel variables you can either edit /etc/sysctl.conf or make a new file. The filename isn't important, but don't make it a package name as it may clash with something the package builder needs later. The file name must end with .conf, or it will not be read. The recommended location for local system settings is /etc/sysctl.d/local.conf but as long as you follow the rules for the name of the file, anything will work. see the sysctl.conf(5) man page for details of the format. This manpage can be found in the `procps-doc` package. #!/bin/sh # Copyright (c) 2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. # Define variables scandir="/run/openrc/s6-scan" statfile=/dev/shm/s6-svstat.${USER} color_red='\E[01;31m' color_green='\E[32m' color_yellow='\E[01;33m' # Time Modules uptimeModules() { # Given a single integer argument representing seconds of uptime... # convert uptime to a friendly human readable string: '2d 16h 58m 46s' # define a variable to keep track of the longest length uptime string uSec=${1:-0} uDay=$(( $uSec / 86400 )) uSec=$(( $uSec % 86400 )) uHour=$(( $uSec / 3600 )) uSec=$(( $uSec % 3600 )) uMin=$(( $uSec / 60 )) uSec=$(( $uSec % 60 )) [ $uDay -ne 0 ] && pDay="${uDay}d " || pDay="" [ $uHour -ne 0 ] && pHour="${uHour}h " || pHour="" [ $uMin -ne 0 ] && pMin="${uMin}m " || pMin="" [ $uSec -ne 0 ] && pSec="${uSec}s " || pSec="" parsedUptime="$( echo ${pDay}${pHour}${pMin}${pSec} | sed 's#[ \t]*$##' )" uCharCount=${#parsedUptime} } # Make sure we are running as root if [ $(id -u) != 0 ]; then printf "This command must be run as root\n" exit 1 fi # Make sure scandir exists if [ ! -d $scandir ]; then printf "%s\n" "$scandir does not exist" exit 1 fi # Make sure s6-svscan is running if ! pgrep s6-svscan >/dev/null ; then printf "s6-svscan is not running\n" exit 1 fi # If TERM is undefined (launching sstat through an ssh command) then make it vt100 if [ -z $TERM -o $TERM = "dumb" ]; then export TERM=vt100 fi # Gather list of candidate services s6-supervise may be supervising # filter for folders and symlinks at /run/openrc/s6-scan/* omitting output starting with '.' services="$(find $scandir -maxdepth 1 -mindepth 1 \( -type d -or -type l \) | awk -F'/' '{ if ( $NF !~ "^\\." ) print $NF}')" if [ -z "$services" ]; then printf "s6 found no services configured for supervision\n" exit 1 fi # Gather status for each service from s6-svstat # write to tmp file in memory for non I/O bound repetitive access rm -f $statfile 2>/dev/null for service in $services ; do echo "$service $(s6-svstat ${scandir}/${service})" >> $statfile done # Define longest string from parsed uptime (default to 7 to match string length of 'Up Time') timeStringLength=7 for uptime in $(awk '$2 == "up" {print $5}' $statfile | sort -run) do uptimeModules $uptime [ ${uCharCount} -gt $timeStringLength ] && timeStringLength=$uCharCount done # Print the status header like so... # Service Name State PID Up Time Start Time #---------------------------- ----- ----- -------------- ------------------- printf "\n" printf "%28s %5s %5s %${timeStringLength}s %19s\n" "Service Name" "State" "PID" "Up Time" "Start Time" for dashes in 28 5 5 $timeStringLength 19 ; do printf "%0.s-" $(seq 1 $dashes) ; echo -n ' ' done && printf "\n" # sshd up (pid 26300) 80373 seconds cat $statfile | \ while read line do set $line service=$1 state=$2 pid=${4/)/} time=$5 # call function to convert time in seconds and define additional variables uptimeModules $time if [ "$state" = up ]; then if [ $time -lt 30 ]; then # uptime < 30 seconds, color the whole line yellow echo -en "$color_yellow" # 1st 4 columns are printed with printf for space padding printf "%28s %5s %5s %${timeStringLength}s" $service $state $pid "$parsedUptime" # 4th column is output from date -d echo -e " $(date -d "${time} seconds ago" "+%F %T")" # reset terminal colors tput sgr0 else printf "%28s" $service # uptime > 30 seconds, color just the "state" value green echo -en "$color_green" printf " %5s" $state # reset terminal colors tput sgr0 printf " %5s" $pid printf " %${timeStringLength}s" "$parsedUptime" echo -e " $(date -d "${time} seconds ago" "+%F %T")" fi else printf "%28s" $service echo -en "$color_red" printf " %5s" $state tput sgr0 echo "" fi done # Cleanup rm -f $statfile 2>/dev/null printf "\n\n" rc-status #!/bin/sh # Detect AC power or not in a portable way # Exit 0 if on AC power, 1 if not and 255 if we don't know how to work it out # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. if [ -f /proc/acpi/ac_adapter/*/state ]; then cat /proc/acpi/ac_adapter/*/state | while read line; do case "$line" in "state:"*"off-line") exit 128;; esac done elif [ -d /sys/class/power_supply ]; then for dir in /sys/class/power_supply/*/; do [ "$(cat "${dir}/type")" != "Mains" ] && continue [ "$(cat "${dir}/online")" = 0 ] && exit 128 done elif [ -f /proc/pmu/info ]; then cat /proc/pmu/info | while read line; do case "$line" in "AC Power"*": 0") exit 128;; esac done elif command -v envstat >/dev/null 2>&1; then # NetBSD has envstat envstat -d acpiacad0 2>/dev/null | while read line; do case "$line" in "connected:"*"OFF") exit 128;; esac done elif sysctl -q hw.acpi.acline >/dev/null 2>/dev/null; then case $(sysctl -n hw.acpi.acline) in 0) exit 1;; *) exit 0;; esac else exit 255 fi [ $? != 128 ] #!/bin/sh # This is a reimplementation of the systemd binfmt.d code to register # misc binary formats with the kernel. # # See the binfmt.d manpage as well: # http://0pointer.de/public/systemd-man/binfmt.d.html # This script should match the manpage as of 2015/03/31 # Copyright (c) 2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. apply_file() { [ $# -lt 1 ] && return 0 FILE="$1" LINENUM=0 ### FILE FORMAT ### # See https://www.kernel.org/doc/Documentation/binfmt_misc.txt while read -r line; do LINENUM=$(( LINENUM+1 )) case $line in \#*) continue ;; \;*) continue ;; '') continue ;; esac local reg=${line#*:} [ -e /proc/sys/fs/binfmt_misc/${reg%%:*} ] && echo -1 > /proc/sys/fs/binfmt_misc/${reg%%:*} echo "${line}" > /proc/sys/fs/binfmt_misc/register rc=$? if [ $rc -ne 0 ]; then printf "binfmt: invalid entry on line %d of \`%s'\n" \ "$LINENUM" "$FILE" >&2 error=1 fi done <$FILE return $rc } [ -e /proc/sys/fs/binfmt_misc/register ] || exit 0 error=0 if [ $# -gt 0 ]; then while [ $# -gt 0 ]; do apply_file "$1" shift done else # The hardcoding of these paths is intentional; we are following the # systemd spec. binfmt_dirs='/usr/lib/binfmt.d/ /run/binfmt.d/ /etc/binfmt.d/' binfmt_basenames='' binfmt_d='' # Build a list of sorted unique basenames # directories declared later in the binfmt_d list will override earlier # directories, on a per file basename basis. # `/run/binfmt.d/foo.conf' supersedes `/usr/lib/binfmt.d/foo.conf'. # `/run/binfmt.d/foo.conf' will always be read after `/etc/binfmt.d/bar.conf' for d in ${binfmt_dirs} ; do [ -d $d ] && for f in ${d}/*.conf ; do case "${f##*/}" in systemd.conf|systemd-*.conf) continue;; esac [ -e $f ] && binfmt_basenames="${binfmt_basenames}\n${f##*/}" done # for f in ${d} done # for d in ${binfmt_dirs} binfmt_basenames="$(printf "${binfmt_basenames}\n" | sort -u )" for b in $binfmt_basenames ; do real_f='' for d in $binfmt_dirs ; do f=${d}/${b} [ -e "${f}" ] && real_f=$f done [ -e "${real_f}" ] && binfmt_d="${binfmt_d} ${real_f}" done # loop through the gathered fragments, sorted globally by filename. # `/run/binfmt.d/foo.conf' will always be read after `/etc/binfmt.d/bar.conf' for FILE in $binfmt_d ; do apply_file "$FILE" done fi exit $error # vim: set ts=2 sw=2 sts=2 noet ft=sh: #!/bin/sh # This is run by the kernel after the last task is removed from a # control group in the openrc hierarchy. # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. cgroup=/sys/fs/cgroup/openrc PATH=/bin:/usr/bin:/sbin:/usr/sbin if [ -d ${cgroup}/"$1" ]; then rmdir ${cgroup}/"$1" fi # Allow any sh script to work with einfo functions and friends # We also provide a few helpful functions for other programs to use # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. RC_GOT_FUNCTIONS="yes" eindent() { : $(( EINFO_INDENT = ${EINFO_INDENT:-0} + 2 )) [ "$EINFO_INDENT" -gt 40 ] && EINFO_INDENT=40 export EINFO_INDENT } eoutdent() { : $(( EINFO_INDENT = ${EINFO_INDENT:-0} - 2 )) [ "$EINFO_INDENT" -lt 0 ] && EINFO_INDENT=0 return 0 } yesno() { [ -z "$1" ] && return 1 # Check the value directly so people can do: # yesno ${VAR} case "$1" in [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) return 0;; [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0) return 1;; esac # Check the value of the var so people can do: # yesno VAR # Note: this breaks when the var contains a double quote. local value= eval value=\"\$$1\" case "$value" in [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) return 0;; [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0) return 1;; *) vewarn "\$$1 is not set properly"; return 2;; esac } rc_runlevel() { rc-status --runlevel } _sanitize_path() { local IFS=":" p= path= for p in $PATH; do case "$p" in /usr/libexec/rc/bin|/usr/libexec/rc/sbin);; /bin|/sbin|/usr/bin|/usr/sbin);; /usr/bin|/usr/sbin);; /usr/local/bin|/usr/local/sbin);; *) path="$path${path:+:}$p";; esac done echo "$path" } # Allow our scripts to support zsh if [ -n "$ZSH_VERSION" ]; then emulate sh NULLCMD=: alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST fi # Make a sane PATH _PREFIX= _PKG_PREFIX=/usr _LOCAL_PREFIX=/usr/local _LOCAL_PREFIX=${_LOCAL_PREFIX:-/usr/local} _PATH=/usr/libexec/rc/bin case "$_PREFIX" in "$_PKG_PREFIX"|"$_LOCAL_PREFIX") ;; *) _PATH="$_PATH:$_PREFIX/bin:$_PREFIX/sbin";; esac _PATH="$_PATH":/bin:/sbin:/usr/bin:/usr/sbin if [ -n "$_PKG_PREFIX" ]; then _PATH="$_PATH:$_PKG_PREFIX/bin:$_PKG_PREFIX/sbin" fi if [ -n "$_LOCAL_PREFIX" ]; then _PATH="$_PATH:$_LOCAL_PREFIX/bin:$_LOCAL_PREFIX/sbin" fi _path="$(_sanitize_path "$PATH")" PATH="$_PATH${_path:+:}$_path" ; export PATH unset _sanitize_path _PREFIX _PKG_PREFIX _LOCAL_PREFIX _PATH _path for arg; do case "$arg" in --nocolor|--nocolour|-C) EINFO_COLOR="NO" ; export EINFO_COLOR ;; esac done if [ -t 1 ] && yesno "${EINFO_COLOR:-YES}"; then if [ -z "$GOOD" ]; then eval $(eval_ecolors) fi else # We need to have shell stub functions so our init scripts can remember # the last ecmd for _e in ebegin eend error errorn einfo einfon ewarn ewarnn ewend \ vebegin veend veinfo vewarn vewend; do eval "$_e() { local _r; command $_e \"\$@\"; _r=\$?; \ EINFO_LASTCMD=$_e; export EINFO_LASTCMD ; return \$_r; }" done unset _e fi #!/bin/sh # Shell wrapper to list our dependencies # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. . /usr/libexec/rc/sh/functions.sh . /usr/libexec/rc/sh/rc-functions.sh config() { [ -n "$*" ] && echo "$RC_SVCNAME config $*" >&3 } need() { [ -n "$*" ] && echo "$RC_SVCNAME ineed $*" >&3 } use() { [ -n "$*" ] && echo "$RC_SVCNAME iuse $*" >&3 } want() { [ -n "$*" ] && echo "$RC_SVCNAME iwant $*" >&3 } before() { [ -n "$*" ] && echo "$RC_SVCNAME ibefore $*" >&3 } after() { [ -n "$*" ] && echo "$RC_SVCNAME iafter $*" >&3 } provide() { [ -n "$*" ] && echo "$RC_SVCNAME iprovide $*" >&3 } keyword() { local c x set -- $* while [ -n "$*" ]; do case "$1" in -containers) x="$(_get_containers)" ;; !-containers) x="$(_get_containers_remove)" ;; *) x=$1 ;; esac c="${c}${x} " shift done [ -n "$c" ] && echo "$RC_SVCNAME keyword $c" >&3 } depend() { : } _done_dirs= for _dir in \ /etc/init.d \ /usr/etc/init.d \ /usr/local/etc/init.d do [ -d "$_dir" ] || continue # Don't do the same dir twice for _d in $_done_dirs; do [ "$_d" = "$_dir" ] && continue 2 done unset _d _done_dirs="$_done_dirs $_dir" cd "$_dir" for RC_SERVICE in *; do [ -x "$RC_SERVICE" -a -f "$RC_SERVICE" ] || continue # Only generate dependencies for OpenRC scripts read one two three <"$RC_SERVICE" case "$one" in \#*/openrc-run) ;; \#*/runscript) ;; \#!) case "$two" in */openrc-run) ;; */runscript) ;; *) continue ;; esac ;; *) continue ;; esac unset one two three RC_SVCNAME=${RC_SERVICE##*/} ; export RC_SVCNAME # Compat SVCNAME=$RC_SVCNAME ; export SVCNAME ( # Save stdout in fd3, then remap it to stderr exec 3>&1 1>&2 _rc_c=${RC_SVCNAME%%.*} if [ -n "$_rc_c" -a "$_rc_c" != "$RC_SVCNAME" ]; then if [ -e "$_dir/../conf.d/$_rc_c" ]; then . "$_dir/../conf.d/$_rc_c" fi fi unset _rc_c if [ -e "$_dir/../conf.d/$RC_SVCNAME" ]; then . "$_dir/../conf.d/$RC_SVCNAME" fi [ -e /etc/rc.conf ] && . /etc/rc.conf if [ -d "/etc/rc.conf.d" ]; then for _f in "/etc"/rc.conf.d/*.conf; do [ -e "$_f" ] && . "$_f" done fi if . "$_dir/$RC_SVCNAME"; then echo "$RC_SVCNAME" >&3 _depend fi ) done done #!/bin/sh # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. : ${CONSOLE:=/dev/console} : ${RC_LIBEXECDIR:=/usr/libexec/rc} service_present() { local p="/etc/runlevels/$1/$2" # fail if the file doesn't exist [ ! -e "$p" ] && return 1 # succeed if $RC_SYS empty, can't check further, assume script will run [ -z "$RC_SYS" ] && return 0 # fail if file contains "-$RC_SYS", because then it won't run grep -Eqi "^[[:space:]]*keyword[[:space:]].*-$RC_SYS([[:space:]]|$)" "$p" && return 1 # succeed otherwise return 0 } if [ -e "$RC_LIBEXECDIR"/console/unicode ]; then termencoding="%G" kmode="-u" else termencoding="(K" kmode="-a" fi # Set the SELinux label on console before everything so we dont lose output [ -x /sbin/restorecon ] && /sbin/restorecon -F /dev/console # Try and set a font and as early as we can if service_present "$RC_DEFAULTLEVEL" consolefont || service_present "$RC_BOOTLEVEL" consolefont; then printf "\033%s" "$termencoding" >"$CONSOLE" 2>/dev/null if [ -r "$RC_LIBEXECDIR"/console/font ] && \ command -v setfont > /dev/null 2>&1; then [ -c "$CONSOLE" ] && cons="-C $CONSOLE" setfont $cons "$RC_LIBEXECDIR"/console/font 2>/dev/null fi fi # Try and set a keyboard map as early as possible if service_present "$RC_DEFAULTLEVEL" loadkeys || service_present "$RC_BOOTLEVEL" loadkeys; then kbd_mode $kmode -C "$CONSOLE" 2>/dev/null if [ -r "$RC_LIBEXECDIR"/console/keymap ]; then loadkeys -q "$RC_LIBEXECDIR"/console/keymap 2>/dev/null fi fi # Ensure we exit 0 so the boot continues exit 0 #!/bin/sh # Copyright (c) 1999-2007 Gentoo Foundation # Copyright (c) 2007-2009 Roy Marples # Released under the 2-clause BSD license. . "$RC_LIBEXECDIR"/sh/functions.sh [ -r "/etc/rc.conf" ] && . "/etc/rc.conf" if [ -d "/etc/rc.conf.d" ]; then for _f in "/etc"/rc.conf.d/*.conf; do [ -e "$_f" ] && . "$_f" done fi # check for md5sum, and probably /usr too if command -v md5sum >/dev/null; then got_md5sum=true else eerror "md5sum is missing, which suggests /usr is not mounted" eerror "If you have separate /usr, it must be mounted by initramfs" eerror "If not, you should check coreutils is installed correctly" got_md5sum=false fi # By default VServer already has /proc mounted, but OpenVZ does not! # However, some of our users have an old proc image in /proc # NFC how they managed that, but the end result means we have to test if # /proc actually works or not. We do this by comparing two reads of # /proc/self/environ for which we have set the variable VAR to two # different values. If the comparison comes back equal, we know that # /proc is not working. mountproc=true f=/proc/self/environ if [ -e $f ]; then if $got_md5sum && [ "$(VAR=a md5sum $f)" = "$(VAR=b md5sum $f)" ]; then eerror "You have cruft in /proc that should be deleted" else # If they don't have md5sum, this will fail in pretty ways if # /proc isn't really mounted. Oh well, their system is busted # anyway, and they get to keep the pieces. einfo "/proc is already mounted" mountproc=false fi fi unset f if $mountproc; then ebegin "Mounting /proc" if ! fstabinfo --mount /proc; then mount -n -t proc -o noexec,nosuid,nodev proc /proc fi eend $? fi # /run is a new directory for storing volatile runtime data. # Read more about /run at https://lwn.net/Articles/436012 sys="$(openrc --sys)" if [ ! -d /run ]; then if [ "$sys" = VSERVER ]; then if [ -e /run ]; then rm -rf /run fi mkdir /run else eerror "The /run directory does not exist. Unable to continue." return 1 fi fi if [ "$sys" = VSERVER ]; then rm -rf /run/* elif ! mountinfo -q /run; then ebegin "Mounting /run" run_mount_opts="mode=0755,nosuid,nodev,nr_inodes=800k,size=20%,strictatime" if ! fstabinfo --mount /run; then if ! mount -t tmpfs -o ${run_mount_opts} tmpfs /run; then eerror "Unable to mount tmpfs on /run." eerror "Can't continue." exit 1 fi fi eend fi checkpath -d "$RC_SVCDIR" checkpath -d -m 0775 -o root:uucp /run/lock # Try to mount xenfs as early as possible, otherwise rc_sys() will always # return RC_SYS_XENU and will think that we are in a domU while it's not. if grep -Eq "[[:space:]]+xenfs$" /proc/filesystems; then ebegin "Mounting xenfs" if ! fstabinfo --mount /proc/xen; then mount -n -t xenfs xenfs /proc/xen -o nosuid,nodev,noexec fi eend $? fi if [ -e "$RC_LIBEXECDIR"/cache/softlevel ]; then cp -p "$RC_LIBEXECDIR"/cache/* "$RC_SVCDIR" 2>/dev/null fi echo sysinit >"$RC_SVCDIR"/softlevel [ -x /sbin/restorecon ] && /sbin/restorecon -rF /run exit 0 #!/bin/sh # Shell wrapper for openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. verify_boot() { if [ ! -e ${RC_SVCDIR}/softlevel ]; then eerror "You are attempting to run an openrc service on a" eerror "system which openrc did not boot." eerror "You may be inside a chroot or you may have used" eerror "another initialization system to boot this system." eerror "In this situation, you will get unpredictable results!" eerror eerror "If you really want to do this, issue the following command:" eerror "touch ${RC_SVCDIR}/softlevel" exit 1 fi return 0 } sourcex() { if [ "$1" = "-e" ]; then shift [ -e "$1" ] || return 1 fi if ! . "$1"; then eerror "$RC_SVCNAME: error loading $1" exit 1 fi } sourcex "/usr/libexec/rc/sh/functions.sh" sourcex "/usr/libexec/rc/sh/rc-functions.sh" case $RC_SYS in PREFIX|SYSTEMD-NSPAWN) ;; *) sourcex -e "/usr/libexec/rc/sh/rc-cgroup.sh";; esac # Support LiveCD foo if sourcex -e "/sbin/livecd-functions.sh"; then livecd_read_commandline fi if [ -z "$1" -o -z "$2" ]; then eerror "$RC_SVCNAME: not enough arguments" exit 1 fi # So daemons know where to recall us if needed RC_SERVICE="$1" ; export RC_SERVICE shift # Compat SVCNAME=$RC_SVCNAME ; export SVCNAME # Dependency function config() { [ -n "$*" ] && echo "config $*" } need() { [ -n "$*" ] && echo "need $*" } use() { [ -n "$*" ] && echo "use $*" } want() { [ -n "$*" ] && echo "want $*" } before() { [ -n "$*" ] && echo "before $*" } after() { [ -n "$*" ] && echo "after $*" } provide() { [ -n "$*" ] && echo "provide $*" } keyword() { local c x set -- $* while [ -n "$*" ]; do case "$1" in -containers) x="$(_get_containers)" ;; !-containers) x="$(_get_containers_remove)" ;; *) x=$1 ;; esac c="${c}${x} " shift done [ -n "$c" ] && echo "keyword $c" } # Describe the init script to the user describe() { if [ -n "$description" ]; then einfo "$description" else ewarn "No description for $RC_SVCNAME" fi local svc= desc= for svc in ${extra_commands:-$opts} $extra_started_commands \ $extra_stopped_commands; do eval desc=\$description_$svc if [ -n "$desc" ]; then einfo "$HILITE$svc$NORMAL: $desc" else ewarn "$HILITE$svc$NORMAL: no description" fi done } # Report status _status() { if service_stopping; then ewarn "status: stopping" return 4 elif service_starting; then ewarn "status: starting" return 8 elif service_inactive; then ewarn "status: inactive" return 16 elif service_crashed; then eerror "status: crashed" return 32 elif service_started; then einfo "status: started" return 0 else einfo "status: stopped" return 3 fi } # These functions select the appropriate function to call from the # supervisor modules default_start() { local func=ssd_start case "$supervisor" in runit) func=runit_start ;; s6) func=s6_start ;; supervise-daemon) func=supervise_start ;; ?*) ewarn "Invalid supervisor, \"$supervisor\", using start-stop-daemon" ;; esac $func } default_stop() { local func=ssd_stop case "$supervisor" in runit) func=runit_stop ;; s6) func=s6_stop ;; supervise-daemon) func=supervise_stop ;; ?*) ewarn "Invalid supervisor, \"$supervisor\", using start-stop-daemon" ;; esac $func } default_status() { local func=ssd_status case "$supervisor" in runit) func=runit_status ;; s6) func=s6_status ;; supervise-daemon) func=supervise_status ;; ?*) ewarn "Invalid supervisor, \"$supervisor\", using start-stop-daemon" ;; esac $func } # Template start / stop / status functions # package init scripts may override these, but the bodies are as minimal as # possible, so that the init scripts can creatively wrap default_* # functions. start() { default_start } stop() { default_stop } status() { default_status } # Start debug output yesno $RC_DEBUG && set -x # Load configuration settings. First the global ones, then any # service-specific settings. sourcex -e "/etc/rc.conf" if [ -d "/etc/rc.conf.d" ]; then for _f in "/etc"/rc.conf.d/*.conf; do sourcex -e "$_f" done fi _conf_d=${RC_SERVICE%/*}/../conf.d # If we're net.eth0 or openvpn.work then load net or openvpn config _c=${RC_SVCNAME%%.*} if [ -n "$_c" -a "$_c" != "$RC_SVCNAME" ]; then if ! sourcex -e "$_conf_d/$_c.$RC_RUNLEVEL"; then sourcex -e "$_conf_d/$_c" fi fi unset _c # Overlay with our specific config if ! sourcex -e "$_conf_d/$RC_SVCNAME.$RC_RUNLEVEL"; then sourcex -e "$_conf_d/$RC_SVCNAME" fi unset _conf_d # If we are configured to run in a VRF, provide a hint for that RC_VRF_EXEC="" if [ -n "$vrf" ]; then RC_VRF_EXEC="/sbin/ip vrf exec $vrf" fi # Add ip netns if configured to run in a netns (netns+vrf may stack) if [ -n "$netns" ]; then RC_VRF_EXEC="/sbin/ip netns exec $netns $RC_VRF_EXEC" fi # load service supervisor functions sourcex "/usr/libexec/rc/sh/runit.sh" sourcex "/usr/libexec/rc/sh/s6.sh" sourcex "/usr/libexec/rc/sh/start-stop-daemon.sh" sourcex "/usr/libexec/rc/sh/supervise-daemon.sh" # Load our script sourcex "$RC_SERVICE" # Set verbose mode if yesno "${rc_verbose:-$RC_VERBOSE}"; then EINFO_VERBOSE=yes export EINFO_VERBOSE fi for _cmd; do if [ "$_cmd" != status -a "$_cmd" != describe ]; then # Apply any ulimit defined if [ -n "${rc_ulimit:-$RC_ULIMIT}" ]; then if ! ulimit ${rc_ulimit:-$RC_ULIMIT}; then eerror "${RC_SVCNAME}: unable to apply RC_ULIMIT settings" fi fi # Apply cgroups settings if defined if [ "$(command -v cgroup_add_service)" = "cgroup_add_service" ] then if grep -qs /sys/fs/cgroup /proc/1/mountinfo then if [ -d /sys/fs/cgroup -a ! -w /sys/fs/cgroup ]; then eerror "No permission to apply cgroup settings" break fi fi cgroup_add_service fi [ "$(command -v cgroup_set_limits)" = "cgroup_set_limits" ] && cgroup_set_limits [ "$(command -v cgroup2_set_limits)" = "cgroup2_set_limits" ] && [ "$_cmd" = start ] && cgroup2_set_limits break fi done eval "printf '%s\n' $required_dirs" | while read _d; do if [ -n "$_d" ] && [ ! -d "$_d" ]; then eerror "$RC_SVCNAME: \`$_d' is not a directory" exit 1 fi done [ $? -ne 0 ] && exit 1 unset _d eval "printf '%s\n' $required_files" | while read _f; do if [ -n "$_f" ] && [ ! -r "$_f" ]; then eerror "$RC_SVCNAME: \`$_f' is not readable" exit 1 fi done [ $? -ne 0 ] && exit 1 unset _f if [ -n "$opts" ]; then ewarn "Use of the opts variable is deprecated and will be" ewarn "removed in the future." ewarn "Please use extra_commands, extra_started_commands or extra_stopped_commands." fi while [ -n "$1" ]; do # Special case depend if [ "$1" = depend ]; then shift # Enter the dir of the init script to fix the globbing # bug 412677 cd ${RC_SERVICE%/*} _depend cd / continue fi # See if we have the required function and run it for _cmd in describe start stop status ${extra_commands:-$opts} \ $extra_started_commands $extra_stopped_commands do if [ "$_cmd" = "$1" ]; then if [ "$(command -v "$1")" = "$1" ]; then # If we're in the background, we may wish to # fake some commands. We do this so we can # "start" ourselves from inactive which then # triggers other services to start which # depend on us. # A good example of this is openvpn. if yesno $IN_BACKGROUND; then for _cmd in $in_background_fake; do if [ "$_cmd" = "$1" ]; then shift continue 3 fi done fi # Check to see if we need to be started before # we can run this command for _cmd in $extra_started_commands; do if [ "$_cmd" = "$1" ]; then if verify_boot && ! service_started; then eerror "$RC_SVCNAME: cannot \`$1' as it has not been started" exit 1 fi fi done # Check to see if we need to be stopped before # we can run this command for _cmd in $extra_stopped_commands; do if [ "$_cmd" = "$1" ]; then if verify_boot && ! service_stopped; then eerror "$RC_SVCNAME: cannot \`$1' as it has not been stopped" exit 1 fi fi done unset _cmd case $1 in start|stop|status) verify_boot;; esac if [ "$(command -v "$1_pre")" = "$1_pre" ] then "$1"_pre || exit $? fi "$1" || exit $? if [ "$(command -v "$1_post")" = "$1_post" ] then "$1"_post || exit $? fi [ "$(command -v cgroup_cleanup)" = "cgroup_cleanup" ] && [ "$1" = "stop" ] && yesno "${rc_cgroup_cleanup}" && \ cgroup_cleanup if [ "$(command -v cgroup2_remove)" = "cgroup2_remove" ]; then [ "$1" = stop ] || [ -z "${command}" ] && cgroup2_remove fi shift continue 2 else if [ "$_cmd" = "start" -o "$_cmd" = "stop" ] then shift continue 2 else eerror "$RC_SVCNAME: function \`$1' defined but does not exist" exit 1 fi fi fi done eerror "$RC_SVCNAME: unknown function \`$1'" exit 1 done exit 0 # Copyright (c) 2012-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. extra_stopped_commands="${extra_stopped_commands} cgroup_cleanup" description_cgroup_cleanup="Kill all processes in the cgroup" cgroup_find_path() { local OIFS name dir result [ -n "$1" ] || return 0 OIFS="$IFS" IFS=":" while read -r _ name dir; do [ "$name" = "$1" ] && result="$dir" done < /proc/1/cgroup IFS="$OIFS" printf "%s" "${result}" } # This extracts all pids in a cgroup and puts them in the cgroup_pids # variable. # It is done this way to avoid subshells so we don't have to worry about # locating the pid of the subshell in the cgroup. # https://github.com/openrc/openrc/issues/396 cgroup_get_pids() { local cgroup_procs p cgroup_pids= cgroup_procs="$(cgroup2_find_path)" if [ -n "${cgroup_procs}" ]; then cgroup_procs="${cgroup_procs}/openrc.${RC_SVCNAME}/cgroup.procs" else cgroup_procs="/sys/fs/cgroup/openrc/${RC_SVCNAME}/tasks" fi [ -f "${cgroup_procs}" ] || return 0 while read -r p; do [ "$p" -eq $$ ] && continue cgroup_pids="${cgroup_pids} ${p}" done < "${cgroup_procs}" return 0 } cgroup_running() { [ -d "/sys/fs/cgroup/unified/${RC_SVCNAME}" ] || [ -d "/sys/fs/cgroup/${RC_SVCNAME}" ] || [ -d "/sys/fs/cgroup/openrc/${RC_SVCNAME}" ] } cgroup_set_values() { [ -n "$1" ] && [ -n "$2" ] && [ -d "/sys/fs/cgroup/$1" ] || return 0 local controller h controller="$1" h=$(cgroup_find_path "$1") cgroup="/sys/fs/cgroup/${1}${h}openrc_${RC_SVCNAME}" [ -d "$cgroup" ] || mkdir -p "$cgroup" set -- $2 local name val while [ -n "$1" ] && [ "$controller" != "cpuacct" ]; do case "$1" in $controller.*) if [ -n "${name}" ] && [ -w "${cgroup}/${name}" ] && [ -n "${val}" ]; then veinfo "$RC_SVCNAME: Setting $cgroup/$name to $val" printf "%s" "$val" > "$cgroup/$name" fi name=$1 val= ;; *) [ -n "$val" ] && val="$val $1" || val="$1" ;; esac shift done if [ -n "${name}" ] && [ -w "${cgroup}/${name}" ] && [ -n "${val}" ]; then veinfo "$RC_SVCNAME: Setting $cgroup/$name to $val" printf "%s" "$val" > "$cgroup/$name" fi if [ -w "$cgroup/tasks" ]; then veinfo "$RC_SVCNAME: adding to $cgroup/tasks" printf "%d" 0 > "$cgroup/tasks" fi return 0 } cgroup_add_service() { # relocate starting process to the top of the cgroup # it prevents from unwanted inheriting of the user # cgroups. But may lead to a problems where that inheriting # is needed. for d in /sys/fs/cgroup/* ; do [ -w "${d}"/tasks ] && printf "%d" 0 > "${d}"/tasks done openrc_cgroup=/sys/fs/cgroup/openrc if [ -d "$openrc_cgroup" ]; then cgroup="$openrc_cgroup/$RC_SVCNAME" mkdir -p "$cgroup" [ -w "$cgroup/tasks" ] && printf "%d" 0 > "$cgroup/tasks" fi } cgroup_set_limits() { local blkio="${rc_cgroup_blkio:-$RC_CGROUP_BLKIO}" [ -n "$blkio" ] && cgroup_set_values blkio "$blkio" local cpu="${rc_cgroup_cpu:-$RC_CGROUP_CPU}" [ -n "$cpu" ] && cgroup_set_values cpu "$cpu" local cpuacct="${rc_cgroup_cpuacct:-$RC_CGROUP_CPUACCT}" [ -n "$cpuacct" ] && cgroup_set_values cpuacct "$cpuacct" local cpuset="${rc_cgroup_cpuset:-$RC_CGROUP_cpuset}" [ -n "$cpuset" ] && cgroup_set_values cpuset "$cpuset" local devices="${rc_cgroup_devices:-$RC_CGROUP_DEVICES}" [ -n "$devices" ] && cgroup_set_values devices "$devices" local hugetlb="${rc_cgroup_hugetlb:-$RC_CGROUP_HUGETLB}" [ -n "$hugetlb" ] && cgroup_set_values hugetlb "$hugetlb" local memory="${rc_cgroup_memory:-$RC_CGROUP_MEMORY}" [ -n "$memory" ] && cgroup_set_values memory "$memory" local net_cls="${rc_cgroup_net_cls:-$RC_CGROUP_NET_CLS}" [ -n "$net_cls" ] && cgroup_set_values net_cls "$net_cls" local net_prio="${rc_cgroup_net_prio:-$RC_CGROUP_NET_PRIO}" [ -n "$net_prio" ] && cgroup_set_values net_prio "$net_prio" local pids="${rc_cgroup_pids:-$RC_CGROUP_PIDS}" [ -n "$pids" ] && cgroup_set_values pids "$pids" return 0 } cgroup2_find_path() { if grep -qw cgroup2 /proc/filesystems; then case "${rc_cgroup_mode:-unified}" in hybrid) printf "/sys/fs/cgroup/unified" ;; unified) printf "/sys/fs/cgroup" ;; esac fi return 0 } cgroup2_remove() { local cgroup_path rc_cgroup_path cgroup_path="$(cgroup2_find_path)" [ -z "${cgroup_path}" ] && return 0 rc_cgroup_path="${cgroup_path}/openrc.${RC_SVCNAME}" [ ! -d "${rc_cgroup_path}" ] || [ ! -e "${rc_cgroup_path}"/cgroup.events ] && return 0 grep -qx "$$" "${rc_cgroup_path}/cgroup.procs" && printf "%d" 0 > "${cgroup_path}/cgroup.procs" local key populated vvalue while read -r key value; do case "${key}" in populated) populated=${value} ;; *) ;; esac done < "${rc_cgroup_path}/cgroup.events" [ "${populated}" = 1 ] && return 0 rmdir "${rc_cgroup_path}" return 0 } cgroup2_set_limits() { local cgroup_path cgroup_path="$(cgroup2_find_path)" [ -z "${cgroup_path}" ] && return 0 mountinfo -q "${cgroup_path}"|| return 0 rc_cgroup_path="${cgroup_path}/openrc.${RC_SVCNAME}" [ ! -d "${rc_cgroup_path}" ] && mkdir "${rc_cgroup_path}" [ -f "${rc_cgroup_path}"/cgroup.procs ] && printf 0 > "${rc_cgroup_path}"/cgroup.procs [ -z "${rc_cgroup_settings}" ] && return 0 echo "${rc_cgroup_settings}" | while read -r key value; do [ -z "${key}" ] && continue [ -z "${value}" ] && continue [ ! -f "${rc_cgroup_path}/${key}" ] && continue veinfo "${RC_SVCNAME}: cgroups: setting ${key} to ${value}" printf "%s" "${value}" > "${rc_cgroup_path}/${key}" done return 0 } cgroup2_kill_cgroup() { local cgroup_path cgroup_path="$(cgroup2_find_path)" [ -z "${cgroup_path}" ] && return 1 rc_cgroup_path="${cgroup_path}/openrc.${RC_SVCNAME}" if [ -f "${rc_cgroup_path}"/cgroup.kill ]; then printf "%d" 1 > "${rc_cgroup_path}"/cgroup.kill fi return } cgroup_fallback_cleanup() { ebegin "Starting fallback cgroups cleanup" local loops=0 cgroup_get_pids if [ -n "${cgroup_pids}" ]; then kill -s CONT ${cgroup_pids} 2> /dev/null kill -s "${stopsig:-TERM}" ${cgroup_pids} 2> /dev/null yesno "${rc_send_sighup:-no}" && kill -s HUP ${cgroup_pids} 2> /dev/null kill -s "${stopsig:-TERM}" ${cgroup_pids} 2> /dev/null cgroup_get_pids while [ -n "${cgroup_pids}" ] && [ "${loops}" -lt "${rc_timeout_stopsec:-90}" ]; do loops=$((loops+1)) sleep 1 cgroup_get_pids done if [ -n "${cgroup_pids}" ] && yesno "${rc_send_sigkill:-yes}"; then kill -s KILL ${cgroup_pids} 2> /dev/null fi fi eend $? } cgroup_cleanup() { cgroup_running || return 0 ebegin "Starting cgroups cleanup" cgroup2_kill_cgroup || cgroup_fallback_cleanup cgroup2_remove cgroup_get_pids [ -z "${cgroup_pids}" ] eend $? "Unable to stop all processes" return 0 } # Copyright (c) 2007 Gentoo Foundation # Copyright (c) 2007-2009 Roy Marples # Released under the 2-clause BSD license. net_fs_list=" afs ceph cifs coda davfs fuse fuse.glusterfs fuse.sshfs gfs glusterfs lustre ncpfs nfs nfs4 ocfs2 shfs smbfs " is_net_fs() { [ -z "$1" ] && return 1 # Check OS specific flags to see if we're local or net mounted mountinfo --quiet --netdev "$1" && return 0 mountinfo --quiet --nonetdev "$1" && return 1 # Fall back on fs types local t=$(mountinfo --fstype "$1") for x in $net_fs_list $extra_net_fs_list; do [ "$x" = "$t" ] && return 0 done return 1 } is_union_fs() { [ ! -x /sbin/unionctl ] && return 1 unionctl "$1" --list >/dev/null 2>&1 } get_bootparam() { local match="$1" [ -z "$match" -o ! -r /proc/cmdline ] && return 1 set -- $(cat /proc/cmdline) while [ -n "$1" ]; do [ "$1" = "$match" ] && return 0 case "$1" in gentoo=*) local params="${1##*=}" local IFS=, x= for x in $params; do [ "$x" = "$match" ] && return 0 done ;; esac shift done return 1 } get_bootparam_value() { local match="$1" which_value="$2" sep="$3" result value if [ -n "$match" -a -r /proc/cmdline ]; then set -- $(cat /proc/cmdline) while [ -n "$1" ]; do case "$1" in $match=*) value="${1##*=}" case "$which_value" in all) [ -z "$sep" ] && sep=' ' if [ -z "$result" ]; then result="$value" else result="${result}${sep}${value}" fi ;; last) result="$value" ;; *) result="$value" break ;; esac ;; esac shift done fi echo $result } need_if_exists() { for x; do rc-service --exists "${x}" && need "${x}" done } # Called from openrc-run.sh or gendepends.sh _get_containers() { local c case "${RC_UNAME}" in FreeBSD) c="-jail" ;; Linux) c="-docker -podman -lxc -openvz -rkt -systemd-nspawn -uml -vserver" ;; esac echo $c } _get_containers_remove() { local c for x in $(_get_containers); do c="${c}!${x} " done echo $c } _depend() { depend local _rc_svcname=$(shell_var "$RC_SVCNAME") _deptype= _depends= # Add any user defined depends for _deptype in config:CONFIG need:NEED use:USE want:WANT \ after:AFTER before:BEFORE \ provide:PROVIDE keyword:KEYWORD; do IFS=: set -- $_deptype unset IFS eval _depends=\$rc_${_rc_svcname}_$1 [ -z "$_depends" ] && eval _depends=\$rc_$1 [ -z "$_depends" ] && eval _depends=\$RC_${_rc_svcname}_$2 [ -z "$_depends" ] && eval _depends=\$RC_$2 $1 $_depends done } # Add our sbin to $PATH case "$PATH" in "$RC_LIBEXECDIR"/sbin|"$RC_LIBEXECDIR"/sbin:*);; *) PATH="$RC_LIBEXECDIR/sbin:$PATH" ; export PATH ;; esac # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. # Declare this here so that no formatting doesn't affect the embedded newline __IFS=" " # Handy function to handle all our unmounting needs # mountinfo is a C program to actually find our mounts on our supported OS's # We rely on fuser being present, so if it's not then don't unmount anything. # This isn't a real issue for the BSD's, but it is for Linux. do_unmount() { local cmd="$1" retval=0 retry= pids=- local f_opts="-m -c" f_kill="-s " mnt= if [ "$RC_UNAME" = "Linux" ]; then f_opts="-m" f_kill="-" fi shift local IFS="$__IFS" set -- $(mountinfo "$@") unset IFS for mnt; do # Unmounting a shared mount can unmount other mounts, so # we need to check the mount is still valid mountinfo --quiet "$mnt" || continue # Ensure we interpret all characters properly. mnt=$(printf "$mnt") case "$cmd" in umount) ebegin "Unmounting $mnt" ;; *) ebegin "Remounting $mnt read only" ;; esac retry=4 # Effectively TERM, sleep 1, TERM, sleep 1, KILL, sleep 1 while ! LC_ALL=C $cmd "$mnt" 2>/dev/null; do if command -v fuser >/dev/null 2>&1; then pids="$(timeout -s KILL "${rc_fuser_timeout:-60}" \ fuser $f_opts "$mnt" 2>/dev/null)" fi case " $pids " in *" $$ "*) eend 1 "failed because we are using" \ "$mnt" retry=0;; " - ") eend 1 retry=0;; " ") eend 1 "in use but fuser finds nothing" retry=0;; *) if [ $retry -le 0 ]; then eend 1 else local sig="TERM" : $(( retry -= 1 )) [ $retry = 1 ] && sig="KILL" fuser $f_kill$sig -k $f_opts \ "$mnt" >/dev/null 2>&1 sleep 1 fi ;; esac [ $retry -le 0 ] && break done if [ $retry -le 0 ]; then retval=1 else eend 0 fi done return $retval } # Copyright (c) 2016 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. # Released under the 2-clause BSD license. runit_start() { local service_path service_link service_path="${runit_service:-/etc/sv/${RC_SVCNAME}}" if [ ! -d "${service_path}" ]; then eerror "Runit service ${service_path} not found" return 1 fi service_link="${RC_SVCDIR}/sv/${service_path##*/}" ebegin "Starting ${name:-$RC_SVCNAME}" ln -snf "${service_path}" "${service_link}" local i=0 retval=1 # it can take upto 5 seconds for runsv to start while [ $i -lt 6 ] ; do if ${RC_VRF_EXEC} sv start "${service_link}" > /dev/null 2>&1; then retval=0 break fi sleep 1 && i=$(expr $i + 1) done if [ $retval -eq 1 ]; then # clean up the link else sv will keep on trying rm "${service_link}" fi eend $retval "Failed to start ${name:-$RC_SVCNAME}" } runit_stop() { local service_path service_link service_path="${runit_service:-/etc/sv/${RC_SVCNAME}}" if [ ! -d "${service_path}" ]; then eerror "Runit service ${service_path} not found" return 1 fi service_link="${RC_SVCDIR}/sv/${service_path##*/}" ebegin "Stopping ${name:-$RC_SVCNAME}" sv stop "${service_link}" > /dev/null 2>&1 && rm "${service_link}" eend $? "Failed to stop ${name:-$RC_SVCNAME}" } runit_status() { local service_path service_link service_path="${runit_service:-/etc/sv/${RC_SVCNAME}}" if [ ! -d "${service_path}" ]; then eerror "Runit service ${service_path} not found" return 1 fi service_link="${RC_SVCDIR}/sv/${service_path##*/}" sv status "${service_link}" } # Start / stop / status functions for s6 support # Copyright (c) 2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. [ -z "${s6_service_path}" ] && s6_service_path="/var/svc.d/${RC_SVCNAME}" _s6_force_kill() { local pid s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" pid="${3%)}" [ -z "${pid}" ] && return 0 if kill -0 "${pid}" 2> /dev/null; then ewarn "Sending DOWN & KILL for ${RC_SVCNAME}" s6-svc -dk "${s6_service_link}" sleep 1 kill -0 "${pid}" 2>/dev/null && return 1 fi return 0 } s6_start() { if [ ! -d "${s6_service_path}" ]; then eerror "${s6_service_path} does not exist." return 1 fi s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" ebegin "Starting ${name:-$RC_SVCNAME}" ln -sf "${s6_service_path}" "${s6_service_link}" s6-svscanctl -na "${RC_SVCDIR}"/s6-scan sleep 1.5 ${RC_VRF_EXEC} s6-svc -u "${s6_service_link}" if [ -n "$s6_svwait_options_start" ]; then s6-svwait ${s6_svwait_options_start} "${s6_service_link}" fi sleep 1.5 set -- $(s6-svstat "${s6_service_link}") [ "$1" = "up" ] eend $? "Failed to start ${name:-$RC_SVCNAME}" } s6_stop() { if [ ! -d "${s6_service_path}" ]; then eerror "${s6_service_path} does not exist." return 1 fi s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" ebegin "Stopping ${name:-$RC_SVCNAME}" s6-svc -d -wD -T ${s6_service_timeout_stop:-60000} "${s6_service_link}" set -- $(s6-svstat "${s6_service_link}") [ "$1" = "up" ] && yesno "${s6_force_kill:-yes}" && _s6_force_kill "$@" set -- $(s6-svstat "${s6_service_link}") [ "$1" = "down" ] eend $? "Failed to stop ${name:-$RC_SVCNAME}" } s6_status() { s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" if [ -L "${s6_service_link}" ]; then s6-svstat "${s6_service_link}" else _status fi } # start / stop / status functions for start-stop-daemon # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. ssd_start() { if [ -z "$command" ]; then ewarn "The command variable is undefined." ewarn "There is nothing for ${name:-$RC_SVCNAME} to start." ewarn "If this is what you intend, please write a start function." ewarn "This will become a failure in a future release." return 0 fi local _background= ebegin "Starting ${name:-$RC_SVCNAME}" if yesno "${command_background}"; then if [ -z "${pidfile}" ]; then eend 1 "command_background option used but no pidfile specified" return 1 fi if [ -n "${command_args_background}" ]; then eend 1 "command_background used with command_args_background" return 1 fi _background="--background --make-pidfile" fi if yesno "$start_inactive"; then local _inactive=false service_inactive && _inactive=true mark_service_inactive fi #the eval call is necessary for cases like: # command_args="this \"is a\" test" # to work properly. eval ${RC_VRF_EXEC} start-stop-daemon --start \ --exec $command \ ${chroot:+--chroot} $chroot \ ${directory:+--chdir} $directory \ ${output_log+--stdout} $output_log \ ${error_log+--stderr} $error_log \ ${output_logger:+--stdout-logger \"$output_logger\"} \ ${error_logger:+--stderr-logger \"$error_logger\"} \ ${capabilities+--capabilities} "$capabilities" \ ${secbits:+--secbits} "$secbits" \ ${no_new_privs:+--no-new-privs} \ ${procname:+--name} $procname \ ${pidfile:+--pidfile} $pidfile \ ${command_user+--user} $command_user \ ${umask+--umask} $umask \ $_background $start_stop_daemon_args \ -- $command_args $command_args_background if eend $? "Failed to start ${name:-$RC_SVCNAME}"; then service_set_value "command" "${command}" [ -n "${chroot}" ] && service_set_value "chroot" "${chroot}" [ -n "${pidfile}" ] && service_set_value "pidfile" "${pidfile}" [ -n "${procname}" ] && service_set_value "procname" "${procname}" return 0 fi if yesno "$start_inactive"; then if ! $_inactive; then mark_service_stopped fi fi return 1 } ssd_stop() { local _progress= local startcommand="$(service_get_value "command")" local startchroot="$(service_get_value "chroot")" local startpidfile="$(service_get_value "pidfile")" local startprocname="$(service_get_value "procname")" command="${startcommand:-$command}" chroot="${startchroot:-$chroot}" pidfile="${startpidfile:-$pidfile}" procname="${startprocname:-$procname}" [ -n "$command" -o -n "$procname" -o -n "$pidfile" ] || return 0 yesno "${command_progress}" && _progress=--progress ebegin "Stopping ${name:-$RC_SVCNAME}" start-stop-daemon --stop \ ${retry:+--retry} $retry \ ${command:+--exec} $command \ ${procname:+--name} $procname \ ${pidfile:+--pidfile} $chroot$pidfile \ ${stopsig:+--signal} $stopsig \ ${_progress} eend $? "Failed to stop ${name:-$RC_SVCNAME}" } ssd_status() { _status } # start / stop / status functions for supervise-daemon # Copyright (c) 2016 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. extra_commands="healthcheck unhealthy ${extra_commands}" supervise_start() { if [ -z "$command" ]; then ewarn "The command variable is undefined." ewarn "There is nothing for ${name:-$RC_SVCNAME} to start." return 1 fi ebegin "Starting ${name:-$RC_SVCNAME}" # The eval call is necessary for cases like: # command_args="this \"is a\" test" # to work properly. eval ${RC_VRF_EXEC} supervise-daemon "${RC_SVCNAME}" --start \ ${retry:+--retry} $retry \ ${directory:+--chdir} $directory \ ${chroot:+--chroot} $chroot \ ${output_log+--stdout} ${output_log} \ ${error_log+--stderr} $error_log \ ${output_logger:+--stdout-logger \"$output_logger\"} \ ${error_logger:+--stderr-logger \"$error_logger\"} \ ${pidfile:+--pidfile} $pidfile \ ${respawn_delay:+--respawn-delay} $respawn_delay \ ${respawn_max:+--respawn-max} $respawn_max \ ${respawn_period:+--respawn-period} $respawn_period \ ${healthcheck_delay:+--healthcheck-delay} $healthcheck_delay \ ${healthcheck_timer:+--healthcheck-timer} $healthcheck_timer \ ${capabilities+--capabilities} "$capabilities" \ ${secbits:+--secbits} "$secbits" \ ${no_new_privs:+--no-new-privs} \ ${command_user+--user} $command_user \ ${umask+--umask} $umask \ ${supervise_daemon_args-${start_stop_daemon_args}} \ $command \ -- $command_args $command_args_foreground rc=$? if [ $rc = 0 ]; then [ -n "${chroot}" ] && service_set_value "chroot" "${chroot}" [ -n "${pidfile}" ] && service_set_value "pidfile" "${pidfile}" fi eend $rc "failed to start ${name:-$RC_SVCNAME}" } supervise_stop() { local startchroot="$(service_get_value "chroot")" local startpidfile="$(service_get_value "pidfile")" chroot="${startchroot:-$chroot}" pidfile="${startpidfile:-$pidfile}" ebegin "Stopping ${name:-$RC_SVCNAME}" supervise-daemon "${RC_SVCNAME}" --stop \ ${pidfile:+--pidfile} $chroot$pidfile eend $? "Failed to stop ${name:-$RC_SVCNAME}" } _check_supervised() { local child_pid start_time child_pid="$(service_get_value "child_pid")" start_time="$(service_get_value "start_time")" if [ -n "${child_pid}" ] && [ -n "${start_time}" ]; then return 1 fi return 0 } supervise_status() { if service_stopping; then ewarn "status: stopping" return 4 elif service_starting; then ewarn "status: starting" return 8 elif service_inactive; then ewarn "status: inactive" return 16 elif service_started; then if service_crashed; then if ! _check_supervised; then eerror "status: unsupervised" return 64 fi eerror "status: crashed" return 32 fi einfo "status: started" return 0 else einfo "status: stopped" return 3 fi } healthcheck() { return 0 } unhealthy() { return 0 } 0.55.1 # # This is a sample mdev.conf. # # Devices: # Syntax: %s %d:%d %s # devices user:group mode $MODALIAS=.* root:root 0660 @modprobe -q -b "$MODALIAS" # null does already exist; therefore ownership has to be changed with command null root:root 0666 @chmod 666 $MDEV zero root:root 0666 full root:root 0666 random root:root 0666 urandom root:root 0444 hwrandom root:root 0660 console root:tty 0600 # load frambuffer console when first frambuffer is found fb0 root:video 0660 @modprobe -q -b fbcon fd0 root:floppy 0660 kmem root:kmem 0640 mem root:kmem 0640 port root:kmem 0640 ptmx root:tty 0666 # Kernel-based Virtual Machine. kvm root:kvm 660 # ram.* ram([0-9]*) root:disk 0660 >rd/%1 loop([0-9]+) root:disk 0660 >loop/%1 # persistent storage dasd.* root:disk 0660 */lib/mdev/persistent-storage mmcblk.* root:disk 0660 */lib/mdev/persistent-storage nbd.* root:disk 0660 */lib/mdev/persistent-storage nvme.* root:disk 0660 */lib/mdev/persistent-storage sd[a-z].* root:disk 0660 */lib/mdev/persistent-storage sr[0-9]+ root:cdrom 0660 */lib/mdev/persistent-storage vd[a-z].* root:disk 0660 */lib/mdev/persistent-storage xvd[a-z].* root:disk 0660 */lib/mdev/persistent-storage md[0-9] root:disk 0660 tty root:tty 0666 tty[0-9] root:root 0600 tty[0-9][0-9] root:tty 0660 ttyS[0-9]* root:dialout 0660 ttyGS[0-9] root:root 0660 pty.* root:tty 0660 vcs[0-9]* root:tty 0660 vcsa[0-9]* root:tty 0660 # rpi bluetooth #ttyAMA0 root:tty 660 @btattach -B /dev/$MDEV -P bcm -S 115200 -N & ttyACM[0-9] root:dialout 0660 @ln -sf $MDEV modem ttyUSB[0-9] root:dialout 0660 @ln -sf $MDEV modem ttyLTM[0-9] root:dialout 0660 @ln -sf $MDEV modem ttySHSF[0-9] root:dialout 0660 @ln -sf $MDEV modem slamr root:dialout 0660 @ln -sf $MDEV slamr0 slusb root:dialout 0660 @ln -sf $MDEV slusb0 fuse root:root 0666 # mobile broadband modems cdc-wdm[0-9]+ root:dialout 0660 # dri device dri/.* root:video 0660 card[0-9] root:video 0660 =dri/ # alsa sound devices and audio stuff pcm.* root:audio 0660 =snd/ control.* root:audio 0660 =snd/ midi.* root:audio 0660 =snd/ seq root:audio 0660 =snd/ timer root:audio 0660 =snd/ adsp root:audio 0660 >sound/ audio root:audio 0660 >sound/ dsp root:audio 0660 >sound/ mixer root:audio 0660 >sound/ sequencer.* root:audio 0660 >sound/ SUBSYSTEM=sound;.* root:audio 0660 # PTP devices ptp[0-9] root:root 0660 */lib/mdev/ptpdev # virtio-ports SUBSYSTEM=virtio-ports;vport.* root:root 0600 @mkdir -p virtio-ports; ln -sf ../$MDEV virtio-ports/$(cat /sys/class/virtio-ports/$MDEV/name) # misc stuff agpgart root:root 0660 >misc/ psaux root:root 0660 >misc/ rtc root:root 0664 >misc/ # input stuff SUBSYSTEM=input;.* root:input 0660 # v4l stuff vbi[0-9] root:video 0660 >v4l/ video[0-9]+ root:video 0660 >v4l/ # dvb stuff dvb.* root:video 0660 */lib/mdev/dvbdev # VideoCore VC4 BCM GPU specific (as in Pi devices) vchiq root:video 0660 vcio root:video 0660 vcsm-cma root:video 0660 vc-mem root:video 0660 # load drivers for usb devices usb[0-9]+ root:root 0660 */lib/mdev/usbdev # net devices # 666 is fine: https://www.kernel.org/doc/Documentation/networking/tuntap.txt net/tun[0-9]* root:netdev 0666 net/tap[0-9]* root:netdev 0666 # zaptel devices zap(.*) root:dialout 0660 =zap/%1 dahdi!(.*) root:dialout 0660 =dahdi/%1 dahdi/(.*) root:dialout 0660 =dahdi/%1 # raid controllers cciss!(.*) root:disk 0660 =cciss/%1 cciss/(.*) root:disk 0660 =cciss/%1 ida!(.*) root:disk 0660 =ida/%1 ida/(.*) root:disk 0660 =ida/%1 rd!(.*) root:disk 0660 =rd/%1 rd/(.*) root:disk 0660 =rd/%1 # tape devices nst[0-9]+.* root:tape 0660 st[0-9]+.* root:tape 0660 # VirtualBox devices vboxguest root:root 0600 vboxuser root:root 0666 vboxdrv root:root 0600 vboxdrvu root:root 0666 vboxnetctl root:root 0600 # fallback for any!device -> any/device (.*)!(.*) root:root 0660 =%1/%2 #!/bin/sh # MDEV=dvb0.demux1 -> ADAPTER=dvb0 -> N=0 ADAPTER=${MDEV%.*} N=${ADAPTER#dvb} # MDEV=dvb0.demux1 -> DEVB_DEV=demux1 DVB_DEV=${MDEV#*.} case "$ACTION" in add|"") mkdir -p dvb/adapter${N} mv ${MDEV} dvb/adapter${N}/${DVB_DEV} ;; remove) rm -f dvb/adapter${N}/${DVB_DEV} rmdir dvb/adapter${N} 2>/dev/null rmdir dvb/ 2>/dev/null esac #!/bin/sh symlink_action() { case "$ACTION" in add) ln -sf "$1" "$2";; remove) rm -f "$2";; esac } sanitise_file() { sed -E -e 's/^\s+//' -e 's/\s+$//' -e 's/ /_/g' "$@" 2>/dev/null } sanitise_string() { echo "$@" | sanitise_file } blkid_encode_string() { # Rewrites string similar to libblk's blkid_encode_string # function which is used by udev/eudev. echo "$@" | sed -e 's| |\\x20|g' } : ${SYSFS:=/sys} # cdrom symlink case "$MDEV" in sr*|xvd*) caps="$(cat $SYSFS/block/$MDEV/capability 2>/dev/null)" if [ $(( 0x${caps:-0} & 8 )) -gt 0 ] || [ "$(cat $SYSFS/block/$MDEV/removable 2>/dev/null)" = "1" ]; then symlink_action $MDEV cdrom fi esac # /dev/block symlinks mkdir -p block if [ -f "$SYSFS/class/block/$MDEV/dev" ]; then maj_min=$(sanitise_file "$SYSFS/class/block/$MDEV/dev") symlink_action ../$MDEV block/${maj_min} fi # by-id symlinks mkdir -p disk/by-id if [ -f "$SYSFS/class/block/$MDEV/partition" ]; then # This is a partition of a device, find out its parent device _parent_dev="$(basename $(${SBINDIR:-/usr/bin}/readlink -f "$SYSFS/class/block/$MDEV/.."))" partition=$(cat $SYSFS/class/block/$MDEV/partition 2>/dev/null) case "$partition" in [0-9]*) partsuffix="-part$partition";; esac # Get name, model, serial, wwid from parent device of the partition _check_dev="$_parent_dev" else _check_dev="$MDEV" fi model=$(sanitise_file "$SYSFS/class/block/$_check_dev/device/model") name=$(sanitise_file "$SYSFS/class/block/$_check_dev/device/name") serial=$(sanitise_file "$SYSFS/class/block/$_check_dev/device/serial") # Special case where block devices have serials attached to the block itself, like virtio-blk : ${serial:=$(sanitise_file "$SYSFS/class/block/$_check_dev/serial")} wwid=$(sanitise_file "$SYSFS/class/block/$_check_dev/wwid") : ${wwid:=$(sanitise_file "$SYSFS/class/block/$_check_dev/device/wwid")} # Sets variables LABEL, PARTLABEL, PARTUUID, TYPE, UUID depending on # blkid output (busybox blkid will not provide PARTLABEL or PARTUUID) eval $(blkid /dev/$MDEV | cut -d: -f2-) if [ -n "$wwid" ]; then case "$MDEV" in nvme*) symlink_action ../../$MDEV disk/by-id/nvme-${wwid}${partsuffix};; esac case "$wwid" in naa.*) symlink_action ../../$MDEV disk/by-id/wwn-0x${wwid#naa.}${partsuffix};; esac fi if [ -n "$serial" ]; then if [ -n "$model" ]; then case "$MDEV" in nvme*) symlink_action ../../$MDEV disk/by-id/nvme-${model}_${serial}${partsuffix};; sd*) symlink_action ../../$MDEV disk/by-id/ata-${model}_${serial}${partsuffix};; esac fi if [ -n "$name" ]; then case "$MDEV" in mmcblk*) symlink_action ../../$MDEV disk/by-id/mmc-${name}_${serial}${partsuffix};; esac fi # virtio-blk case "$MDEV" in vd*) symlink_action ../../$MDEV disk/by-id/virtio-${serial}${partsuffix};; esac fi # by-label, by-partlabel, by-partuuid, by-uuid symlinks if [ -n "$LABEL" ]; then mkdir -p disk/by-label symlink_action ../../$MDEV disk/by-label/"$(blkid_encode_string "$LABEL")" fi if [ -n "$PARTLABEL" ]; then mkdir -p disk/by-partlabel symlink_action ../../$MDEV disk/by-partlabel/"$(blkid_encode_string "$PARTLABEL")" fi if [ -n "$PARTUUID" ]; then mkdir -p disk/by-partuuid symlink_action ../../$MDEV disk/by-partuuid/"$PARTUUID" fi if [ -n "$UUID" ]; then mkdir -p disk/by-uuid symlink_action ../../$MDEV disk/by-uuid/"$UUID" fi # nvme EBS storage symlinks if [ "${MDEV#nvme}" != "$MDEV" ] && [ "$model" = "Amazon_Elastic_Block_Store" ] && command -v nvme >/dev/null; then n=30 while [ $n -gt 0 ]; do ebs_alias=$(nvme id-ctrl -b /dev/$_check_dev \ | dd bs=32 skip=96 count=1 2>/dev/null \ | sed -nre '/^(\/dev\/)?(s|xv)d[a-z]{1,2} /p' \ | tr -d ' ') if [ -n "$ebs_alias" ]; then symlink_action "$MDEV" ${ebs_alias#/dev/}$partition break fi n=$((n - 1)) sleep 0.1 done fi # backwards compatibility with /dev/usbdisk for /dev/sd* if [ "${MDEV#sd}" != "$MDEV" ]; then sysdev=$(readlink $SYSFS/class/block/$MDEV) case "$sysdev" in *usb[0-9]*) # require vfat for devices without partition if ! [ -e $SYSFS/block/$MDEV ] || [ TYPE="vfat" ]; then symlink_action $MDEV usbdisk fi ;; esac fi #!/bin/sh symlink_action() { case "$ACTION" in add) ln -sf "$1" "$2";; remove) rm -f "$2";; esac } clock_name=$(cat ${SYSFS:-/sys}/class/ptp/$MDEV/clock_name 2>/dev/null | sed -e 's/ /_/g') case "$clock_name" in KVM_virtual_PTP) symlink_action $MDEV ptp_kvm ;; ptp_vmw) symlink_action $MDEV ptp_vmw ;; hyperv) symlink_action $MDEV ptp_hyperv ;; esac #!/bin/sh # mdev -s will not set SUBSYSTEM or DEVNAME so we trigger a hotplug event if [ "$SUBSYSTEM" != "usb" ] || [ "$DEVTYPE" != "usb_device" ]; then uev=/sys/bus/usb/devices/$MDEV/uevent [ -e "$uev" ] && echo "add" > "$uev" exit fi [ -n "$DEVNAME" ] || exit case "$ACTION" in add) mkdir -p "${DEVNAME%/*}" mv $MDEV $DEVNAME # autoload driver for i in /sys/$DEVPATH/*/modalias; do [ -e "$i" ] && echo $i done | xargs sort -u | xargs modprobe -a 2>/dev/null ;; remove) rm $DEVNAME ;; esac #!/sbin/openrc-run description="the mdev device manager" depend() { provide dev need sysfs dev-mount before checkfs fsck keyword -containers -vserver -lxc } _start_service () { ebegin "Starting busybox mdev" mkdir -p /dev echo "/sbin/mdev" > /proc/sys/kernel/hotplug eend $? } _start_coldplug () { ebegin "Scanning hardware for mdev" # mdev -s will not create /dev/usb[1-9] devices with recent kernels # so we manually trigger events for usb for i in $(find /sys/devices -name 'usb[0-9]*'); do [ -e $i/uevent ] && echo add > $i/uevent done # trigger the rest of the coldplug mdev -s eend $? } start() { _start_service _start_coldplug } stop() { ebegin "Stopping busybox mdev" echo > /proc/sys/kernel/hotplug eend } # what cipher to use with -e option DEFAULT_CIPHER=aes-256-cbc # Uncomment the row below to encrypt config by default # ENCRYPTION=$DEFAULT_CIPHER # Uncomment below to avoid option to 'lbu commit' # Can also be set to 'floppy' # LBU_MEDIA=usb # Set the LBU_BACKUPDIR variable in case you prefer to save the apkovls # in a normal directory instead of mounting an external media. # LBU_BACKUPDIR=/root/config-backups # Uncomment below to let lbu make up to 3 backups # BACKUP_LIMIT=3 eckd_dasd= fba_dasd= _dasdfmt() { local block="$(ls "${ROOT}sys/bus/ccw/devices/$1/block" 2>/dev/null)" local dev="${ROOT}dev/$block" if ! [ -b "$dev" ]; then echo "$dev ($1) is not a block device" >&2 else if ask_yesno "WARNING: Erase ECKD DASD $1? (y/n)" "n"; then dasdfmt -b 4096 -d cdl -yp "$dev" fi fi } eckdselect_help() { cat <<-__EOF__ Enter each available DASD's address (e.g. 0.0.02d0) to format that DASD. Enter multiple addresses separated by a space to format multiple DASDs. Enter 'all' to format all available DASDs. WARNING: Data will be lost after formatted! Enter 'done' or 'none' to finish formatting. Enter 'abort' to quit the installer. __EOF__ } show_dasd_info() { local busid= vendor= block= devtype= cutype= for busid in $@; do vendor=$(cat "${ROOT}sys/bus/ccw/devices/$busid/vendor" 2>/dev/null) devtype=$(cat "${ROOT}/sys/bus/ccw/devices/$busid/devtype" 2>/dev/null) cutype=$(cat "${ROOT}/sys/bus/ccw/devices/$busid/cutype" 2>/dev/null) block="$(ls "${ROOT}/sys/bus/ccw/devices/$busid/block" 2>/dev/null)" echo " $busid ($devtype $cutype $vendor)" done } ask_eckd(){ local prompt="$1" local help_func="$2" shift 2 local default_dasd="all" apk add --quiet s390-tools resp= while ! all_in_list "$resp" $@ "$default_dasd" "abort" "done" "none"; do echo "Available ECKD DASD(s) are:" show_dasd_info "$@" ask "$prompt" "$default_dasd" case "$resp" in 'abort') exit 0;; 'done'|'none') return 0;; '?') $help_func;; 'all') for busid in $@; do _dasdfmt $busid; done;; *) for busid in $resp; do _dasdfmt $busid; done;; esac done } check_dasd() { eckd_dasd= fba_dasd= local dasd="$(get_bootopt dasd)" for _dasd in $( echo $dasd | tr ',' ' '); do [ -e "${ROOT}/sys/bus/ccw/drivers/dasd-eckd/$_dasd" ] && eckd_dasd="$eckd_dasd $_dasd" [ -e "${ROOT}/sys/bus/ccw/drivers/dasd-fba/$_dasd" ] && fba_dasd="$fba_dasd $_dasd" done if [ -n "$eckd_dasd" ]; then ask_eckd \ "Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter '?' for help)" \ eckdselect_help "$eckd_dasd" fi } is_dasd() { local disk="${1#*\/dev\/}" dasd_type="$2" for _dasd in $(eval "echo \$${dasd_type}_dasd"); do [ -e "${ROOT}sys/bus/ccw/drivers/dasd-$dasd_type/$_dasd/block/$disk" ] && return 0 done return 1 } setup_zipl() { local mnt="$1" root="$2" modules="$3" kernel_opts="$4" local parameters="root=$root modules=$modules $kernel_opts" local dasd="$(echo $eckd_dasd $fba_dasd | tr ' ' ',')" local s390x_net="$(get_bootopt s390x_net)" [ -n "$dasd" ] && parameters="$parameters dasd=$dasd" [ -n "$s390x_net" ] && parameters="$parameters s390x_net=$s390x_net" cat > "$mnt"/etc/zipl.conf <<- EOF [defaultboot] defaultauto prompt=1 timeout=5 default=linux target=/boot [linux] image=/boot/vmlinuz-$KERNEL_FLAVOR ramdisk=/boot/initramfs-$KERNEL_FLAVOR parameters="$parameters" EOF } setup_partitions_eckd() { local blocks_per_track=12 tracks_per_cylinder=15 boot_track= swap_track= local diskdev="$1" boot_size="$2" swap_size="$3" sys_type="$4" boot_track=$(($boot_size * 1024 / 4 / blocks_per_track)) [ "$swap_size" != 0 ] && swap_track=$(($swap_size * 1024 / 4 / blocks_per_track + boot_track + 1)) local conf="$(mktemp)" if [ -n "$swap_track" ]; then cat > "$conf" <<- EOF [first,$boot_track,native] [$((boot_track + 1)),$swap_track,swap] [$((swap_track + 1)),last,$sys_type] EOF else cat > "$conf" <<- EOF [first,$boot_track,native] [$((boot_track + 1)),last,$sys_type] EOF fi fdasd -s -c "$conf" $diskdev rm $conf } PREFIX=/usr PROGRAM=$(basename $0) : ${ROOT:=/} [ "${ROOT}" = "${ROOT%/}" ] && ROOT="${ROOT}/" [ "${ROOT}" = "${ROOT#/}" ] && ROOT="${PWD}/${ROOT}" # echo if in verbose mode vecho() { if [ -n "$VERBOSE" ]; then echo "$@" fi } # echo unless quiet mode qecho() { if [ -z "$QUIET" ]; then echo "$@" fi } # echo to stderr eecho() { echo "$@" >&2 } # echo to stderr and exit with error die() { eecho "$@" exit 1 } init_tmpdir() { local omask="$(umask)" local __tmpd="/tmp/$PROGRAM-${$}-$(date +%s)-$RANDOM" umask 077 || die "umask" mkdir -p "$__tmpd" || exit 1 trap "rc=\$?; rm -fr \"$__tmpd\"; exit \$rc" 0 umask $omask eval "$1=\"$__tmpd\"" } default_read() { local n read n [ -z "$n" ] && n="$2" eval "$1=\"$n\"" } cfg_add() { $MOCK lbu_add "$@" } # return true if given value is Y, y, Yes, yes YES etc yesno() { case $1 in [Yy]|[Yy][Ee][Ss]) return 0;; esac return 1 } # Detect if we are running Xen is_xen() { test -d /proc/xen } # Detect if we are running Xen Dom0 is_xen_dom0() { is_xen && \ grep -q "control_d" /proc/xen/capabilities 2>/dev/null } # list of all network interfaces, sorted by ifindex sorted_ifaces() { for i in "$ROOT"/sys/class/net/*; do local iface="${i##*/}" if [ -e "$i"/ifindex ]; then printf "%s\t%s\n" "$(cat $i/ifindex)" "$iface" fi done | sort -n | awk '{print $2}' } # list of available network interfaces that aren't part of any bridge or bond available_ifaces() { local iflist= ifpath= iface= if ! [ -d "$ROOT"/sys/class/net ]; then ip link | awk -F: '$1 ~ /^[0-9]+$/ {printf "%s",$2}' return fi for iface in $(sorted_ifaces); do # skip interfaces that are part of a bond or bridge ifpath="$ROOT/sys/class/net/$iface" if [ -d "$ifpath"/master/bonding ] || [ -d "$ifpath"/brport ] || [ "$iface" = "lo" ]; then continue fi iflist="${iflist}${iflist:+ }$iface" done echo $iflist } # from OpenBSD installer # Ask for a password, saving the input in $resp. # Display $1 as the prompt. # *Don't* allow the '!' options that ask does. # *Don't* echo input. # *Don't* interpret "\" as escape character. askpass() { printf %s "$1 " set -o noglob $MOCK stty -echo read -r resp $MOCK stty echo set +o noglob echo } # Ask for a password twice, saving the input in $_password askpassword() { local _oifs="$IFS" IFS= while :; do askpass "Password for $1 account? (will not echo)" _password=$resp askpass "Password for $1 account? (again)" # N.B.: Need quotes around $resp and $_password to preserve leading # or trailing spaces. [ "$resp" = "$_password" ] && break echo "Passwords do not match, try again." done IFS=$_oifs } # test the first argument against the remaining ones, return success on a match isin() { local _a="$1" _b shift for _b; do [ "$_a" = "$_b" ] && return 0 done return 1 } # remove all occurrences of first argument from list formed by # the remaining arguments rmel() { local _a="$1" _b shift for _b; do [ "$_a" != "$_b" ] && printf %s "$_b " done } # Issue a read into the global variable $resp. _ask() { local _redo=0 read resp case "$resp" in !) echo "Type 'exit' to return to setup." sh _redo=1 ;; !*) eval "${resp#?}" _redo=1 ;; esac return $_redo } # Ask for user input. # # $1 = the question to ask the user # $2 = the default answer # # Save the user input (or the default) in $resp. # # Allow the user to escape to shells ('!') or execute commands # ('!foo') before entering the input. ask() { local _question="$1" _default="$2" while :; do printf %s "$_question " [ -z "$_default" ] || printf "[%s] " "$_default" _ask && : ${resp:=$_default} && break done } # Ask for user input until a non-empty reply is entered. # # $1 = the question to ask the user # $2 = the default answer # # Save the user input (or the default) in $resp. ask_until() { resp= while [ -z "$resp" ] ; do ask "$1" "$2" done } # Ask for user for y/n until y, yes, n or no is responded # # $1 = the question to ask the user # $2 = the default answer # # Returns true/sucess if y/yes was responded. false othewise ask_yesno() { while true; do ask "$1" "$2" case "$resp" in y|yes|n|no) break;; esac done yesno "$resp" } # Ask for the user to select one value from a list, or 'done'. # # $1 = name of the list items (disk, cd, etc.) # $2 = question to ask # $3 = list of valid choices # $4 = default choice, if it is not specified use the first item in $3 # # N.B.! $3 and $4 will be "expanded" using eval, so be sure to escape them # if they contain spooky stuff # # At exit $resp holds selected item, or 'done' ask_which() { local _name="$1" _query="$2" _list="$3" _def="$4" _dynlist _dyndef while :; do # Put both lines in ask prompt, rather than use a # separate 'echo' to ensure the entire question is # re-ask'ed after a '!' or '!foo' shell escape. eval "_dynlist=\"$_list\"" eval "_dyndef=\"$_def\"" # Clean away whitespace and determine the default set -o noglob set -- $_dyndef; _dyndef="$1" set -- $_dynlist; _dynlist="$*" set +o noglob [ $# -lt 1 ] && resp=done && return : ${_dyndef:=$1} echo "Available ${_name}s are: $_dynlist." printf "Which one %s? (or 'done') " "$_query" [ -n "$_dyndef" ] && printf "[%s] " "$_dyndef" _ask || continue [ -z "$resp" ] && resp="$_dyndef" # Quote $resp to prevent user from confusing isin() by # entering something like 'a a'. isin "$resp" $_dynlist done && break echo "'$resp' is not a valid choice." done } find_modloop_media() { devnum=$(mountpoint -d /.modloop) || return test -n "$devnum" || return modloop_file=$(cat /sys/dev/block/$devnum/loop/backing_file) || return test -n "$modloop_file" || return # assume that device name and mount point don't contain spaces modloop_media=$(df "$modloop_file" | awk 'NR==2{print $6}') || return test -n "$modloop_media" || return echo "$modloop_media" } # Extract fully qualified domain name from current hostname. If none is # currently set, use the provided fallback. get_fqdn() { local _dn _dn=$(hostname -f 2>/dev/null) _dn=${_dn#$(hostname -s 2>/dev/null)} _dn=${_dn#.} echo "${_dn:=$1}" } #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { cat <<-__EOF__ usage: copy-modloop Copy kernel modules from modloop and unmount loopback device options: -h Show this help __EOF__ exit $1 } while getopts "h" opt; do case $opt in h) usage 0;; '?') usage "1" >&2;; esac done shift $(($OPTIND - 1)) set -e if ! rc-service -q modloop status; then echo "modloop is not started" exit 1 fi if [ -n "$DO_UMOUNT" ] && [ -z "$modloop_media" ]; then modloop_media=$(find_modloop_media) fi modulesdir=/lib/modules if [ -L "$modulesdir" ]; then modulesdir=$(readlink "$modulesdir") fi cp -a "$modulesdir" /lib/modules.tmp rc-service modloop stop rm -r /lib/modules mv /lib/modules.tmp /lib/modules if [ -n "$DO_UMOUNT" ]; then umount "$modloop_media" fi #!/bin/sh PROGRAM=setup-acf VERSION=3.19.2-r0 PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { echo "usage: $PROGRAM [-ahn] [-e email] [-l address] [PACKAGE...]" exit $1 } pkgs="acf-core acf-alpine-baselayout acf-apk-tools openssl" while getopts "ae:hl:n" opt ; do case $opt in a) pkgs=$(apk search --quiet --exact 'acf-*');; e) EMAIL="$OPTARG";; h) usage 0;; l) address="$OPTARG";; n) create_passwd=no;; '?') usage "1" >&2;; esac done shift $(expr $OPTIND - 1) while [ $# -gt 0 ]; do pkgs="$pkgs acf-$1" shift done # install packages apk add mini_httpd $pkgs || exit 1 if [ "$create_passwd" != "no" ]; then mkdir -p /etc/acf if [ -f /etc/acf/passwd ]; then mv /etc/acf/passwd /etc/acf/passwd.backup fi echo "root:x:Admin account:ADMIN" >/etc/acf/passwd chmod 600 /etc/acf/passwd acfpasswd -s root fi # setup mini_httpd and start it if [ -d /var/www/localhost/htdocs ]; then mv /var/www/localhost/htdocs /var/www/localhost/htdocs.old fi mkdir -p /var/www/localhost/ ln -s /usr/share/acf/www/ /var/www/localhost/htdocs lbu add /var/www/localhost/htdocs SSLDIR=/etc/ssl/mini_httpd SSLCNF=$SSLDIR/mini_httpd.cnf KEYFILE=$SSLDIR/server.key CRTFILE=$SSLDIR/server.crt PEMFILE=$SSLDIR/server.pem if [ -f $PEMFILE ]; then echo "$PEMFILE already exist." else mkdir -p $SSLDIR cat >$SSLCNF <<-__EOF__ [ req ] default_bits = 1024 encrypt_key = yes distinguished_name = req_dn x509_extensions = cert_type prompt = no [ req_dn ] OU=HTTPS server CN=$(hostname -f || hostname) emailAddress=${EMAIL:-postmaster@example.com} [ cert_type ] nsCertType = server __EOF__ echo "Generating certificates for HTTPS..." openssl genrsa 2048 > $KEYFILE openssl req -new -x509 -nodes -sha1 -days 3650 -key $KEYFILE \ -config $SSLCNF > $CRTFILE cat $KEYFILE >> $CRTFILE rm $KEYFILE mv $CRTFILE $PEMFILE fi cat >/etc/mini_httpd/mini_httpd.conf <<-__EOF__ nochroot dir=/var/www/localhost/htdocs user=nobody cgipat=cgi-bin** certfile=$PEMFILE port=443 ssl __EOF__ if [ -n "$address" ]; then echo "host=$address" >> /etc/mini_httpd/mini_httpd.conf fi rc-update -q add mini_httpd default rc-service mini_httpd restart # force update of dependency cache rc-update -q --update #!/bin/sh PROGRAM=setup-alpine VERSION=3.19.2-r0 PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" if [ -t 1 ]; then COLCYAN="\e[36m" COLWHITE="\e[97m" COLRESET="\e[0m" else COLCYAN="" COLWHITE="" COLRESET="" fi print_heading1() { printf "${COLCYAN}%s${COLRESET}\n" "$1" } print_heading2() { printf "${COLWHITE}%s${COLRESET}\n" "$1" } is_kvm_clock() { grep -q "kvm-clock" "$ROOT"sys/devices/system/clocksource/clocksource0/current_clocksource 2>/dev/null } is_virtual_console() { case "$(readlink "$ROOT"/proc/self/fd/0)" in /dev/tty[0-9]*) return 0;; esac return 1 } usage() { cat <<-__EOF__ usage: setup-alpine [-ahq] [-c FILE | -f FILE] Setup Alpine Linux options: -a Create Alpine Linux overlay file -c Create answer file (do not install anything) -e Empty root password -f Answer file to use installation -h Show this help -q Quick mode. Ask fewer questions. __EOF__ exit $1 } while getopts "aef:c:hq" opt ; do case $opt in a) ARCHIVE=yes;; f) USEANSWERFILE="$OPTARG";; c) CREATEANSWERFILE="$OPTARG";; e) empty_root_password=1;; h) usage 0;; q) empty_root_password=1; quick=1; APKREPOSOPTS="-1"; HOSTNAMEOPTS="alpine";; '?') usage "1" >&2;; esac done shift $(expr $OPTIND - 1) rc_sys=$(openrc --sys) # mount xenfs so we can detect xen dom0 if [ "$rc_sys" = "XENU" ] && ! grep -q '^xenfs' /proc/mounts; then modprobe xenfs mount -t xenfs xenfs /proc/xen fi case "$USEANSWERFILE" in http*://*|ftp://*) # dynamically download answer file from URL (supports HTTP(S) and FTP) # ensure the network is up, otherwise setup a temporary interface config if ! rc-service networking --quiet status; then setup-interfaces -ar fi temp="$(mktemp)" wget -qO "$temp" "$USEANSWERFILE" || die "Failed to download '$USEANSWERFILE'" USEANSWERFILE="$temp" ;; *) [ -n "$USEANSWERFILE" ] && USEANSWERFILE=$(realpath "$USEANSWERFILE") ;; esac if [ -n "$USEANSWERFILE" ] && [ -e "$USEANSWERFILE" ]; then . "$USEANSWERFILE" fi if [ -n "$CREATEANSWERFILE" ]; then touch "$CREATEANSWERFILE" || echo "Cannot touch file $CREATEANSWERFILE" cat > "$CREATEANSWERFILE" <<-__EOF__ # Example answer file for setup-alpine script # If you don't want to use a certain option, then comment it out # Use US layout with US variant # KEYMAPOPTS="us us" KEYMAPOPTS=none # Set hostname to 'alpine' HOSTNAMEOPTS=alpine # Set device manager to mdev DEVDOPTS=mdev # Contents of /etc/network/interfaces INTERFACESOPTS="auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp hostname alpine-test " # Search domain of example.com, Google public nameserver # DNSOPTS="-d example.com 8.8.8.8" # Set timezone to UTC #TIMEZONEOPTS="UTC" TIMEZONEOPTS=none # set http/ftp proxy #PROXYOPTS="http://webproxy:8080" PROXYOPTS=none # Add first mirror (CDN) APKREPOSOPTS="-1" # Create admin user USEROPTS="-a -u -g audio,input,video,netdev juser" #USERSSHKEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOIiHcbg/7ytfLFHUNLRgEAubFz/13SwXBOM/05GNZe4 juser@example.com" #USERSSHKEY="https://example.com/juser.keys" # Install Openssh SSHDOPTS=openssh #ROOTSSHKEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOIiHcbg/7ytfLFHUNLRgEAubFz/13SwXBOM/05GNZe4 juser@example.com" #ROOTSSHKEY="https://example.com/juser.keys" # Use openntpd # NTPOPTS="openntpd" NTPOPTS=none # Use /dev/sda as a sys disk # DISKOPTS="-m sys /dev/sda" DISKOPTS=none # Setup storage with label APKOVL for config storage #LBUOPTS="LABEL=APKOVL" LBUOPTS=none #APKCACHEOPTS="/media/LABEL=APKOVL/cache" APKCACHEOPTS=none __EOF__ echo "Answer file $CREATEANSWERFILE has been created. Please add or remove options as desired in that file" exit 0 fi printf "\n\n" print_heading1 " ALPINE LINUX INSTALL" print_heading1 "----------------------" if [ "$ARCHIVE" ] ; then echo "Creating an Alpine overlay" init_tmpdir ROOT else PKGADD="apk add" fi # set keymap if [ "$rc_sys" != LXC ]; then if is_virtual_console || [ -n "$KEYMAPOPTS" ]; then echo print_heading2 " Keymap" print_heading2 "--------" setup-keymap ${KEYMAPOPTS} fi # set hostname echo print_heading2 " Hostname" print_heading2 "----------" setup-hostname ${HOSTNAMEOPTS} && [ -z "$SSH_CONNECTION" ] && rc-service hostname --quiet restart setup-devd -C mdev # just to bootstrap fi # set Interface [ -z "$SSH_CONNECTION" ] && rst_if=1 if [ -n "$INTERFACESOPTS" ]; then if [ "$INTERFACESOPTS" != none ]; then printf "$INTERFACESOPTS" | setup-interfaces -i ${rst_if:+-r} fi else echo print_heading2 " Interface" print_heading2 "-----------" setup-interfaces ${quick:+-a} ${rst_if:+-r} fi # setup up dns if no dhcp was configured if [ -f "$ROOT"/etc/network/interfaces ] && ! grep -q '^iface.*dhcp' "$ROOT"/etc/network/interfaces; then setup-dns ${DNSOPTS} fi # set root password if [ -z "$empty_root_password" ]; then echo print_heading2 " Root Password" print_heading2 "---------------" while ! $MOCK passwd ; do echo "Please retry." done fi # pick timezone if [ -z "$quick" ]; then echo print_heading2 " Timezone" print_heading2 "----------" setup-timezone ${TIMEZONEOPTS} fi echo rc-update --quiet add networking boot rc-update --quiet add seedrng boot || rc-update --quiet add urandom boot svc_list="cron crond" if [ -e /dev/input/event0 ]; then # Only enable acpid for systems with input events entries # https://gitlab.alpinelinux.org/alpine/aports/-/issues/12290 svc_list="$svc_list acpid" fi for svc in $svc_list; do if rc-service --exists $svc; then rc-update --quiet add $svc fi done # start up the services $MOCK openrc ${SSH_CONNECTION:+-n} boot $MOCK openrc ${SSH_CONNECTION:+-n} default # update /etc/hosts - after we have got dhcp address # Get default fully qualified domain name from *first* domain # given on *last* search or domain statement. _dn=$(sed -n \ -e '/^domain[[:space:]][[:space:]]*/{s///;s/\([^[:space:]]*\).*$/\1/;h;}' \ -e '/^search[[:space:]][[:space:]]*/{s///;s/\([^[:space:]]*\).*$/\1/;h;}' \ -e '${g;p;}' "$ROOT"/etc/resolv.conf 2>/dev/null) _hn=$(hostname) _hn=${_hn%%.*} sed -i -e "s/^127\.0\.0\.1.*/127.0.0.1\t${_hn}.${_dn:-$(get_fqdn my.domain)} ${_hn} localhost.localdomain localhost/" \ "$ROOT"/etc/hosts 2>/dev/null if [ -z "$quick" ]; then echo print_heading2 " Proxy" print_heading2 "-------" setup-proxy -q ${PROXYOPTS} fi # activate the proxy if configured if [ -r "$ROOT/etc/profile" ]; then . "$ROOT/etc/profile" fi if ! is_kvm_clock && [ "$rc_sys" != "LXC" ] && [ "$quick" != 1 ]; then echo print_heading2 " Network Time Protocol" print_heading2 "-----------------------" setup-ntp ${NTPOPTS} fi echo print_heading2 " APK Mirror" print_heading2 "------------" setup-apkrepos ${APKREPOSOPTS} # Now that network and apk are operational we can install another device manager if [ "$rc_sys" != LXC ] && [ -n "$DEVDOPTS" -a "$DEVDOPTS" != mdev ]; then setup-devd ${DEVDOPTS} fi # lets stop here if in "quick mode" if [ "$quick" = 1 ]; then exit 0 fi echo print_heading2 " User" print_heading2 "------" setup-user ${USERSSHKEY+-k "$USERSSHKEY"} ${USEROPTS:--a -g 'audio input video netdev'} for i in "$ROOT"home/*; do if [ -d "$i" ]; then lbu add $i fi done setup-sshd ${ROOTSSHKEY+-k "$ROOTSSHKEY"} ${SSHDOPTS} root_keys="$ROOT"/root/.ssh/authorized_keys if [ -f "$root_keys" ]; then lbu add "$ROOT"/root fi if is_xen_dom0; then echo print_heading2 " Xen" print_heading2 "-----" setup-xen-dom0 ${XENDOM0OPTS} fi if [ "$rc_sys" = "LXC" ]; then exit 0 fi echo print_heading2 " Disk & Install" print_heading2 "----------------" DEFAULT_DISK=none \ setup-disk -w /tmp/alpine-install-diskmode.out -q ${DISKOPTS} || exit diskmode=$(cat /tmp/alpine-install-diskmode.out 2>/dev/null) # setup lbu and apk cache unless installed sys on disk if [ "$diskmode" != "sys" ]; then setup-lbu ${LBUOPTS} setup-apkcache ${APKCACHEOPTS} if [ -L "$ROOT"/etc/apk/cache ]; then apk cache sync fi fi #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { cat <<-__EOF__ usage: setup-apkcache [-h] [DIR] Setup apk caching. If DIR is not specified user will be asked for location. options: -h Show this help __EOF__ exit $1 } is_mounted() { awk '{print $2}' /proc/mounts | grep -q "^$1$" } find_fstab_mount_point() { local dir="$1" local res= if ! [ -r "${ROOT}"etc/fstab ]; then return fi while [ -n "$dir" ]; do res=$(awk "\$2 == \"$dir\" {print \$2}" "${ROOT}"etc/fstab) if [ -n "$res" ]; then echo $res return fi dir=${dir%/*} done } # figure out mount point find_mount_point() { local dir="$(find_fstab_mount_point "$1")" if [ -d "$dir" ] && [ "$dir" != "/" ]; then echo $dir return fi local dir="$1" while [ -n "$dir" ] && ! [ -d "$dir" ]; do dir=${dir%/*} done local fs_id="$(stat -f -c %i "${dir:-/}")" local parent="${dir%/*}" while [ -n "$dir" ] && [ "$(stat -f -c %i "$parent/")" = "$fs_id" ]; do dir=$parent parent=${parent%/*} done [ -z "$dir" ] && dir=/ echo $dir } # get device for a given mount point get_dev_from_mountpoint() { local mnt="$1" local fstab="$2" awk "\$2 == \"$mnt\" {print \$1}" "$fstab" } get_mount_opts_from_mountpoint() { local mnt="$1" local fstab="$2" awk "\$2 == \"$mnt\" {gsub(/,/, \" \", \$4); print \$4}" "$fstab" } has_mount_opt() { local searchfor="$1" local mnt="$2" local fstab="$3" local opts="$(get_mount_opts_from_mountpoint "$mnt" "$fstab")" local opt= for opt in $opts; do if [ "$opt" = "$searchfor" ]; then return 0 fi done return 1 } is_mounted_ro() { has_mount_opt ro "$1" /proc/mounts } # get the fstype of the given mount point mount_fstype() { # we only want the last mount in case there are several awk -v mnt="$1" '$2 == "/" {fstype = mnt} END {print fstype}' \ /proc/mounts } apk_cache_help() { cat <<-__EOF__ Packages installed from network can be cached locally to be available during boot, before the network is started. Specifying a directory here will make apk cache the packages locally in this directory. Enter 'none' if you do not want to cache packages from network. __EOF__ } while getopts "h" opt; do case $opt in h) usage 0;; '?') usage "1" >&2;; esac done shift $(( OPTIND - 1 )) # try auto detetect what we suggest suggestion= if [ -L "${ROOT}"etc/apk/cache ]; then suggestion=$(readlink "${ROOT}"etc/apk/cache) fi if [ -z "$suggestion" ] && [ -f "$ROOT"etc/lbu/lbu.conf ]; then . "$ROOT"etc/lbu/lbu.conf if [ -n "$LBU_MEDIA" ]; then suggestion=/media/$LBU_MEDIA/cache fi fi if [ -z "$suggestion" ] && [ -L /dev/usbdisk ]; then suggestion=/media/usb/cache fi if [ -z "$suggestion" ] && [ "$(mount_fstype /)" != "tmpfs" ]; then suggestion=/var/cache/apk fi if [ -z "$suggestion" ]; then suggestion=none fi cachedir="$1" resp= while [ $# -eq 0 ] && [ -z "$cachedir" ]; do ask "Enter apk cache directory (or '?' or 'none')" "$suggestion" cachedir="$resp" if [ "$cachedir" = "?" ]; then apk_cache_help cachedir= fi done if [ "$cachedir" = "none" ]; then exit 0 fi case "$cachedir" in /*) ;; *) cachedir="${PWD#${ROOT%/}}/$cachedir";; esac mount=$(find_mount_point "$cachedir") cleanup= if ! is_mounted "$mount"; then # remove noauto that setup-lbu might have added if has_mount_opt noauto "$mount" /etc/fstab; then fstabtmp=$(mktemp) awk -v mnt="$mount" \ '$2 != mnt {print $0} $2 == mnt { sub(/noauto,|,noauto/, "", $4); sub(/^noauto$/, "defaults", $4); print $0 }' /etc/fstab > "$fstabtmp" mv "$fstabtmp" /etc/fstab fi mount "$mount" || exit 1 elif is_mounted_ro "$mount"; then mount -o remount,rw "$mount" || exit 1 cleanup="remount" fi mkdir -p "$ROOT$cachedir" if [ -L "$ROOT"etc/apk/cache ]; then rm -f "$ROOT"etc/apk/cache fi mkdir -p "$ROOT"etc/apk ln -s "$cachedir" "$ROOT"etc/apk/cache case "$cleanup" in umount) umount "$mount";; remount) mount -o remount,ro "$mount";; esac #!/bin/sh PROGRAM=setup-apkrepos PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" : ${MIRRORS_URL:=https://mirrors.alpinelinux.org/mirrors.txt} if [ "$ROOT" != "/" ]; then apk_root_opt="--root $ROOT" fi get_hostname_from_url() { local n="${1#*://}" echo ${n%%/*} } get_mirror_count() { set -- $MIRRORS echo $# } ask_setup_method() { local cstate="enable" if [ -z "$community_prefix" ]; then cstate="disable" fi cat <<-__EOF__ (f) Find and use fastest mirror (s) Show mirrorlist (r) Use random mirror (e) Edit ${ROOT}etc/apk/repositories with text editor (c) Community repo $cstate (skip) Skip setting up apk repositories __EOF__ ask "Enter mirror number or URL:" $1 printf "\n" } add_random_mirror() { local i=0 local count=$(get_mirror_count) if [ ${count:-0} -eq 0 ]; then echo "Warning! no mirror found" >&2 return 1 fi local random_mirror_index="$(awk -v count=$count 'BEGIN {srand(); printf("%.0f", rand() * count)}')" printf %s "Picking random mirror..." for mirror in $MIRRORS; do if [ $i -eq $random_mirror_index ]; then break fi i=$(( $i + 1 )) done add_mirror $mirror } time_cmd() { local start="$(cut -d ' ' -f1 /proc/uptime)" $@ >&2 || return awk -v start=$start -v end=$(cut -d ' ' -f1 /proc/uptime) \ 'BEGIN {print end - start; exit}' } find_fastest_mirror() { local url= local arch="$(apk --print-arch)" for url in $MIRRORS; do # warm up the dns cache $MOCK nslookup $(get_hostname_from_url $url) >/dev/null 2>&1 local time="$(time_cmd wget --spider -q -T 5 -t 1 \ ${url%/}/edge/main/$arch/APKINDEX.tar.gz)" if [ -n "$time" ]; then echo "$time $url" fi done | tee /dev/stderr | sort -nk1,1 | head -n1 | cut -d' ' -f2 } add_fastest_mirror() { echo "Finding fastest mirror... " local fastest="$(find_fastest_mirror)" if [ -z "$fastest" ]; then echo "Warning! No mirror found" >&2 return 1 fi add_mirror "$fastest" } # For every main/ repo, enable corresponding community/ repo add_community_mirrors() { for repo in $(grep '^[^#].*/main$' "$APKREPOS_PATH" 2>/dev/null); do crepo="${repo%%/main}/community" if ! grep -qx -- "$crepo" "$APKREPOS_PATH"; then echo ">>> Enabling repository $crepo" echo "$crepo" >> "$APKREPOS_PATH" fi done } # show mirrors show_mirror_list() { local mirror i=0 [ -z "$MIRRORS" ] && return echo "" echo "Available mirrors:" for mirror in $MIRRORS; do i=$(($i + 1)) echo "$i) $(get_hostname_from_url $mirror)" done echo "" } add_from_list() { local mirror_index="$1" if [ $mirror_index -lt 1 ] || [ $mirror_index -gt $(get_mirror_count) ]; then return 1 fi set $MIRRORS eval "mirror=\${$mirror_index}" add_mirror "$mirror" } get_alpine_release() { # use the main version already configured, or get the version from /etc/alpine-release local version="$(grep -Eom1 '[^/]+/main/?$' "${ROOT}"etc/apk/repositories 2>/dev/null | grep -Eo '^[^/]+' \ || cat "${ROOT}"etc/alpine-release 2>/dev/null)" case "$version" in *_git*|*_alpha*) release="edge";; [0-9]*.[0-9]*.[0-9]*) # release in x.y.z format, cut last digit release=v${version%.[0-9]*};; v[0-9]*.[0-9]*) # release in vx.y format, keep as is release="${version}";; *) # fallback to edge release="edge";; esac } add_mirror() { local mirror="$1" mkdir -p "${APKREPOS_PATH%/*}" echo "${mirror%/}/${release}/main" >> $APKREPOS_PATH echo "${community_prefix}${mirror%/}/${release}/community" >> $APKREPOS_PATH echo "Added mirror $(get_hostname_from_url $mirror)" } add_from_url() { mkdir -p "${APKREPOS_PATH%/*}" echo "$1" >> $APKREPOS_PATH echo "" >> $APKREPOS_PATH } edit_repositories() { local md5="$(md5sum $APKREPOS_PATH 2>/dev/null)" mkdir -p "${APKREPOS_PATH%/*}" ${EDITOR:-vi} "$APKREPOS_PATH" # return true if file changed test "$(md5sum $APKREPOS_PATH 2>/dev/null)" != "$md5" } usage() { cat <<-__EOF__ usage: setup-apkrepos [-ch] [-f|-r|-1|REPO...] setup-apkrepos -o Setup apk repositories options: -c Enable the community repo -f Detect and add fastest mirror -h Show this help -o Only enable a community repo for every defined repo -r Add a random mirror and do not prompt -1 Add first mirror on the list (normally a CDN) Option -o cannot be used with options -c, -f, -r or -1. __EOF__ exit $1 } community_prefix="#" add_fastest=false add_first=false add_random=false add_community_repos=false while getopts "c1fhor" opt; do case $opt in c) community_prefix="" if $add_community_repos; then usage "1" >&2 fi ;; f) add_fastest=true if $add_first || $add_random || $add_community_repos; then usage "1" >&2 fi ;; 1) add_first=true if $add_fastest || $add_random || $add_community_repos; then usage "1" >&2 fi ;; h) usage 0;; o) add_community_repos=true if $add_first || $add_fastest || $add_random \ || [ $community_prefix != "#" ]; then usage "1" >&2 fi ;; r) add_random=true if $add_first || $add_fastest || $add_community_repos; then usage "1" >&2 fi ;; '?') usage "1" >&2;; esac done shift $(($OPTIND - 1)) if [ -z "$MIRRORS" ]; then MIRRORS=$(wget -qO- $MIRRORS_URL) fi APKREPOS_PATH="${ROOT}"etc/apk/repositories if [ -r "$APKREPOS_PATH" ]; then APKREPOS=$(cat "$APKREPOS_PATH") fi get_alpine_release changed=false if [ $# -gt 0 ] && ! $add_community_repos; then # replace the apk repos with the specified ones rm -f "$APKREPOS_PATH" mkdir -p "${APKREPOS_PATH%/*}" for i; do echo "$i" >> "$APKREPOS_PATH" && changed=true done fi if $add_first; then set -- $MIRRORS if [ $# -eq 0 ]; then echo "Warning! No mirror found" >&2 exit 1 fi add_mirror "$1" || exit changed=true fi if $add_random; then add_random_mirror || exit changed=true fi if $add_fastest; then add_fastest_mirror || exit changed=true fi if $add_community_repos; then add_community_mirrors || exit changed=true fi if $add_first || $add_random || $add_fastest || $add_community_repos; then interactive=false else interactive=true fi while $interactive && ! $changed; do if [ -z "$MIRRORS" ]; then MIRRORS=$(wget -qO- $MIRRORS_URL) fi ask_setup_method ${APKREPO_DEFAULT_ANSWER:-1} case "$resp" in skip) break;; [0-9]*) add_from_list $resp && changed=true;; /*|http://*|ftp://*|https://*) add_from_url "$resp" \ && changed=true;; s) show_mirror_list | more;; r|"r c") add_random_mirror && changed=true;; f|"f c") add_fastest_mirror && changed=true;; e) edit_repositories && changed=true;; c) case "$community_prefix" in "#") community_prefix=""; cstate="enabled";; "") community_prefix="#"; cstate="disabled";; esac printf "Community repository %s\n\n" "$cstate" ;; esac case "$resp" in *c) community_prefix=""; printf "Community repository enabled\n";; esac done if $changed; then printf %s "Updating repository indexes... " apk update --quiet $apk_root_opt && echo "done." fi #!/bin/sh prog=${0##*/} version=3.19.2-r0 files_to_move="boot efi apks syslinux.cfg .alpine-release" read_only_mounts= umounts= uninstalls= destdir= cleanup_tmpdata() { if [ -d "$destdir" -a -d "$destdir/.new" ]; then rm -rf "$destdir"/.new fi } cleanup_mounts() { local i= cd / sync sleep 1 for i in $read_only_mounts; do mount -o remount,ro "$i" || echo "Warning: Failed to remount as read-only. Is modloop mounted?" done read_only_mounts="" if [ -n "$umounts" ]; then umount $umounts umounts="" fi } cleanup_installs() { if [ -n "$uninstalls" ]; then apk del --quiet $uninstalls uninstalls="" fi } cleanup() { cleanup_tmpdata cleanup_mounts cleanup_installs } trap cleanup EXIT trap "exit 2" INT TERM QUIT die() { echo "$@" >&2 exit 1 } # find device for mountpoint find_dev() { local mnt="${1%/}" # strip trailing / awk "\$2 == \"$mnt\" {print \$1}" /proc/mounts } # check if given device is on usb bus on_usb_bus() { local dev="$1" [ -e /sys/block/$dev ] || return 1 local sysdev="$(readlink -f /sys/block/$dev/device)" test "${sysdev##*/usb[0-9]}" != "$sysdev" } vecho() { [ -z "$verbose" ] && return 0 echo "$@" } # check if given dir is read-only is_read_only() { local tmpfile="$(mktemp -p "$1" 2>/dev/null)" [ -z "$tmpfile" ] && return 0 rm -f "$tmpfile" return 1 } # find what disk this partition belongs to find_disk_dev() { local i= sysfsname="${1#/dev/}" sysfsname=${sysfsname//\/!} # cciss/c0d0 -> cciss!c0d0 if [ -e /sys/block/$sysfsname ]; then echo "/dev/${sysfsname//!/'/'}" return 0 fi for i in /sys/block/*/$sysfsname; do [ -e "$i" ] || continue echo "$i" | cut -d/ -f4 | sed -e 's:!:/:g' -e 's:^:/dev/:' return 0 done return 1 } find_syslinux_cfg() { # find where new syslinux.cfg is for i in boot/syslinux/syslinux.cfg syslinux.cfg; do if [ -e "$1"/$i ]; then syslinux_cfg=$i vecho "Found $syslinux_cfg" break fi done } fix_syslinux_kernel() { echo "Fixing $syslinux_cfg: kernel $1 -> $2" sed -i -e "/^\s*[Kk][Ee][Rr][Nn][Ee][Ll]\s/s|$1|$2|" \ "$destdir/$syslinux_cfg" } fix_syslinux_initrd() { echo "Fixing $syslinux_cfg: initrd $1 -> $2" sed -i -e "/^\s*[Ii][Nn][Ii][Tt][Rr][Dd]\s/s|$1|$2|" \ -e "/^\s*[Aa][Pp][Pp][Ee][Nn][Dd]\s/s|initrd=$1|initrd=$2|" \ "$destdir/$syslinux_cfg" } check_syslinux() { if [ -z "$syslinux_cfg" ]; then find_syslinux_cfg "$destdir" fi if [ -z "$syslinux_cfg" ]; then die "Could not find any syslinux.cfg. Aborting" fi # kernels for i in $(awk 'tolower($1) == "kernel" {print $2}' "$destdir"/$syslinux_cfg); do k="${destdir%/}/${i#/}" f=${k##*/} if [ -e "$k" ] && [ "${f#vmlinuz}" != "$f" ]; then continue fi if [ -e "${k%/*}"/vmlinuz-$f ] && [ -n "$fix_syslinux_cfg" ]; then fix_syslinux_kernel "$i" "${i%/*}"/vmlinuz-$f elif ! [ -e "$k" ]; then echo "Warning: $syslinux_cfg: kernel $k was not found" echo " Run $0 -f -c "$destdir" to fix" fi done #initramfs initrds=$(awk 'tolower($1) == "initrd" {gsub(",", " "); for (i=2; i<=NF; i++) print $i}' \ "$destdir"/$syslinux_cfg) for i in $(awk 'tolower($1) == "append" {print $0}' \ "$destdir"/$syslinux_cfg); do case $i in initrd=*) initrds=${i#initrd=};; esac done for i in $initrds; do if [ -e "$destdir"/$i ]; then continue fi fname=${i##*/} flavor=${fname%.gz} new=${i%/*}/initramfs-$flavor if [ -e "$destdir"/$new ] && [ -n "$fix_syslinux_cfg" ]; then fix_syslinux_initrd "$i" "$new" else echo "Warning: initrd $i was not found. System will likely not boot" echo " Run $0 -f -c "$destdir" to fix" fi done } version_check() { local new_dir="$1" old_dir="$2" # check if its same version local to_version="$(cat "$new_dir"/.alpine-release)" if [ -n "$upgrade" ] && [ -e "$old_dir"/.alpine-release ]; then local from_version="$(cat "$old_dir"/.alpine-release)" if [ -z "$force" ] && [ -n "$to_version" ] && [ "$from_version" = "$to_version" ]; then die "Source and target seems to have same version ($from_version). Aborting." fi echo "Upgrading $dest from $from_version to $to_version" else echo "Installing $dest to $to_version" fi } usage() { cat <<-__EOF__ $prog $version usage: $prog [-fhUusv] SOURCE [DEST] $prog -c DIR Copy the contents of SOURCE to DEST and make DEST bootable. SOURCE can be a directory or a ISO image. DEST can be a mounted directory or a device. If DEST is ommitted /media/usb will be used. Options: -f Force overwrite existing files. Will overwrite syslinux.cfg if upgrade. -h Show this help. -k fix kernel and initrd name in syslinux.cfg if needed. -U Replace current alpine_dev in syslinux.cfg with UUID if UUID found. -u Upgrade mode. Keep existing syslinux.cfg and don't run syslinux. -s Force run syslinux, even if upgrade mode. -v Verbose mode. Display whats going on. -c Check syslinux.cfg in destination DIR. Use with -f to fix. __EOF__ exit 1 } while getopts "c:fhkUusv" opt; do case "$opt" in c) check_syslinux="$OPTARG";; f) force=1; fix_syslinux_cfg=1;; h) usage;; k) fix_syslinux_cfg=1;; U) replace_alpine_dev=1;; u) upgrade=1;; s) syslinux=1;; v) verbose=1;; esac done shift $(($OPTIND - 1)) src=${1} dest=${2:-/media/usb} if [ -n "$check_syslinux" ]; then destdir="$check_syslinux" check_syslinux exit 0 fi [ -z "$src" ] && usage # find target device if [ -d "$dest" ]; then dest=${dest%/} # strip trailing / if ! awk '{print $2}' /proc/mounts | grep -q "^$dest\$"; then mount "$dest" || die "Failed to mount $dest" umounts="$umounts $dest" elif [ -n "$syslinux" ]; then die "Cannot run syslinux on mounted device" else nosyslinux=1 fi destdir="$dest" dest=$(find_dev "$destdir") elif [ -b "$dest" ]; then destdir="/media/${dest##*/}" mkdir -p "$destdir" mount "$dest" "$destdir" || die "Failed to mount $dest on $destdir" umounts="$umounts $destdir" fi # remount as rw if needed if is_read_only "$destdir"; then vecho "Remounting $destdir as read/write" mount -o remount,rw "$dest" || die "Failed to remount $destdir as rw" read_only_mounts="$read_only_mounts $destdir" fi # fish out label, uuid and type eval $(blkid $dest | cut -d: -f2-) vecho "Using $dest as target (mounted on $destdir)" # find parent device (i.e sda) dev="$dest" while [ -L "$dev" ]; do dev=$(readlink -f $dev) done parent_dev=$(find_disk_dev $dev) # check if this files exist and not in upgrade mode if [ -z "$upgrade" ] && [ -z "$force" ]; then for i in $files_to_move; do [ -e "$destdir"/$i ] && die "$destdir/$i already exists. Use -u to upgrade." done fi # remove partial upgrades if any rm -rf "$destdir"/.new "$destdir"/.old mkdir -p "$destdir"/.new || die "Failed to create $destdir/.new" # copy data from source to .new if [ -f "$src"/.alpine-release ]; then srcdir="$(echo $src | sed -r 's,/$,,')" version_check "$srcdir" "$destdir" for i in $files_to_move; do if [ -e "$srcdir"/$i ]; then vecho "Copying $srcdir/$i to $destdir/.new/" cp -dR "$srcdir"/$i "$destdir"/.new/ fi done else vecho "Extracting $src to $destdir/.new/" case "$src" in https://*|http://*|ftp://*) ${WGET:-wget} -O - "$src" | (cd "$destdir"/.new; exec ${UNISO:-uniso}) \ || die "Failed to download or extract $src" echo "" ;; *) (cd "$destdir"/.new; exec ${UNISO:-uniso}) < "$src" \ || die "Failed to download or extract $src" ;; esac version_check "$destdir/.new" "$destdir" fi # find where new syslinux.cfg is find_syslinux_cfg "$destdir"/.new # abort early in case unexpected trouble if [ -z "$syslinux_cfg" ]; then die "Could not find any syslinux.cfg on new iso?" fi # make sure files are really there before we replace existing vecho "Flushing cache..." sync vecho "Replacing existing files..." mkdir -p "$destdir"/.old || die "Failed to create $destdir/.old" # move current files to .old for i in $files_to_move; do if [ -e "$destdir"/$i ]; then mv "$destdir"/$i "$destdir"/.old/ || die "Failed to move $destdir/$i to $destdir/.old/" fi done # keep any existing syslinux.cfg if [ -e "$destdir"/.old/$syslinux_cfg ]; then mv "$destdir"/.old/$syslinux_cfg "$destdir"/.new/$syslinux_cfg elif [ -e "$destdir"/.old/syslinux.cfg ] \ && [ -e "$destdir"/.new/boot/syslinux/syslinux.cfg ]; then echo "Warning: moving syslinux.cfg to boot/syslinux/syslinux.cfg" >&2 mv "$destdir"/.old/syslinux.cfg "$destdir"/.new/boot/syslinux if [ -z "$syslinux" ]; then echo " You might need run: syslinux $dest" >&2 fi fi # move .new to current for i in $files_to_move; do if [ -e "$destdir"/.new/$i ]; then mv "$destdir"/.new/$i "$destdir"/ \ || die "Failed to move $destdir/.new/ to $destdir" fi done if [ -n "$replace_alpine_dev" -o -z "$upgrade" ] && [ -n "$UUID" ]; then sed -E -i -e "s/alpine_dev=[^ \t:]+/alpine_dev=UUID=$UUID/" \ "$destdir"/$syslinux_cfg fi # verify syslinux.cfg check_syslinux # cleanup [ -z "$keep_old" ] && rm -rf "$destdir"/.old "$destdir"/.new # If we only copy then we are done. if [ -n "$upgrade" ] && [ -z "$syslinux" ]; then exit 0 fi # prevent running syslinux on mounted device if [ -n "$nosyslinux" ]; then echo "Warning: Can not run syslinux on a mounted device" echo " You might need run syslinux manually and install MBR manually" exit 0 fi echo "Making $dest bootable..." if ! [ -x "$(which syslinux)" ]; then apk add --quiet syslinux || die "Failed to install syslinux" uninstalls="syslinux" fi # we need to unmount the device before we can run syslinux cleanup_mounts fsync $dest syslinux $dest if [ -b $parent_dev ]; then dd if=/usr/share/syslinux/mbr.bin of=$parent_dev status=none else echo "Warning: Could not find the parent device for $dest" fi #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { cat <<-__EOF__ usage: setup-desktop [-h] [gnome|plasma|xfce|mate|sway|lxqt] Install a standard desktop options: -h Show this help __EOF__ exit $1 } while getopts "h" opt; do case $opt in h) usage 0;; '?') usage "1" >&2;; esac done shift $(($OPTIND - 1)) if [ $# -gt 1 ]; then usage "1" >&2 fi if [ $# -eq 0 ]; then users=$(awk -F: '{if ($3<65000 && $3 >= 1000) print $1}' "$ROOT"/etc/passwd 2>/dev/null) if [ -z "$users" ]; then setup-user -g "audio,video,netdev" fi fi de="$1" valid_desktops="xfce gnome plasma mate sway lxqt none" if [ $# -eq 1 ] && ! isin "$de" $valid_desktops; then echo "$de is not a valid desktop" >&2 usage "1" >&2 fi shift while ! isin "$de" $valid_desktops; do ask "Which desktop environment? ('gnome', 'plasma', 'xfce', 'mate', 'sway', 'lxqt' or 'none')" none de="$resp" done case "$de" in none) exit 0 ;; mate) setup-xorg-base mate-desktop-environment ${BROWSER:-firefox} \ gvfs \ lightdm \ lightdm-gtk-greeter \ polkit \ dbus \ dbus-x11 \ font-dejavu \ "$@" rc-update add dbus rc-update add lightdm ;; xfce) setup-xorg-base xfce4 ${BROWSER:-firefox} \ elogind \ gvfs \ lightdm \ lightdm-gtk-greeter \ polkit-elogind \ xfce4-screensaver \ xfce4-terminal \ font-dejavu \ "$@" rc-update add lightdm ;; lxqt) setup-xorg-base ${BROWSER:-firefox} \ lxqt-desktop \ lximage-qt \ obconf-qt \ pavucontrol-qt \ arandr \ sddm \ font-dejavu \ dbus \ dbus-x11 \ openbox \ elogind \ polkit-elogind \ gvfs \ udisks2 \ adwaita-qt \ oxygen \ "$@" rc-update add dbus rc-update add sddm rc-update add elogind ;; gnome) setup-wayland-base ${BROWSER:-firefox} "$@" # apk info needs community repos which are enabled with setup-wayland-base apk add $(apk info --quiet --depends gnome gnome-apps-core) rc-update add gdm ;; plasma) setup-xorg-base ${BROWSER:-firefox} \ ark \ bluedevil \ breeze \ breeze-gtk \ dbus \ discover \ drkonqi \ font-noto \ gwenview \ kate \ kde-cli-tools \ kde-gtk-config \ kde-icons \ kdeplasma-addons \ kgamma \ kinfocenter \ kio-fuse \ kmenuedit \ konsole \ kscreen \ ksshaskpass \ kwallet-pam \ kwayland-integration \ pinentry-qt \ pipewire-alsa \ pipewire-pulse \ plasma-browser-integration \ plasma-desktop \ plasma-disks \ plasma-nm \ plasma-pa \ plasma-systemmonitor \ plasma-vault \ plasma-welcome \ plasma-workspace-wallpapers \ polkit-elogind \ polkit-kde-agent-1 \ powerdevil \ print-manager \ sddm-breeze \ sddm-kcm \ spectacle \ systemsettings \ udisks2 \ xdg-desktop-portal-kde \ xdg-user-dirs \ "$@" rc-update add dbus rc-update add sddm ;; sway) setup-wayland-base ${BROWSER:-firefox} \ font-dejavu \ foot \ grim \ i3status \ sway \ swayidle \ swaylockd \ util-linux-login \ wl-clipboard \ wmenu \ xwayland \ "$@" ;; *) usage "1" >&2 ;; esac users=$(awk -F: '{if ($3<65000 && $3 >= 1000) print $1}' "$ROOT"/etc/passwd 2>/dev/null) if [ -z "$users" ]; then echo "WARNING: You need to create a user account. Please run: setup-user" >&2 echo "" >&2 fi #!/bin/sh -e PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" prog="${0##*/}" usage () { cat </dev/null || : rc-update delete --quiet --quiet mdevd sysinit 2>/dev/null || : fi } enable_mdevd () { apk add --quiet mdevd mdevd-openrc rc-update add --quiet mdevd sysinit rc-update add --quiet mdevd-init sysinit rc-update add --quiet hwdrivers sysinit rc-service --ifstopped mdevd start if "$1" ; then rc-service mdevd-init start rc-service hwdrivers --ifstopped start fi } disable_udev () { if rc-service --exists udev ; then rc-service --ifstopped --quiet udev-postmount stop rc-service --ifstarted --quiet udev stop rc-update delete --quiet --quiet udev-postmount default 2>/dev/null || : rc-update delete --quiet --quiet udev-settle sysinit 2>/dev/null || : rc-update delete --quiet --quiet udev-trigger sysinit 2>/dev/null || : rc-update delete --quiet --quiet udev sysinit 2>/dev/null || : fi } enable_udev () { apk add --quiet eudev udev-init-scripts udev-init-scripts-openrc rc-update add --quiet udev sysinit rc-update add --quiet udev-trigger sysinit rc-update add --quiet udev-settle sysinit rc-update add --quiet udev-postmount default rc-service --ifstopped udev start rc-service --ifstopped udev-trigger start rc-service --ifstopped udev-settle start rc-service --ifstopped udev-postmount start } coldplug=false while getopts "hC" opt ; do case $opt in h) usage 0;; C) coldplug=true ;; '?') usage 1 >&2;; esac done shift $((OPTIND - 1)) devd="$1" if test -n "$devd" ; then interactive=false else interactive=true fi until isin "$devd" mdev mdevd udev ; do ask "What program should manage /dev? [mdev|mdevd|udev]" mdev devd="$resp" done if "$interactive" ; then if ask_yesno "Scan the hardware to populate /dev? [y|n] (Say yes if you're running this script for the first time.)" n ; then coldplug=true else coldplug=false fi fi case "$devd" in mdev) disable_mdevd ; disable_udev ; enable_mdev $coldplug ;; mdevd) disable_mdev ; disable_udev ; enable_mdevd $coldplug ;; udev) disable_mdev ; disable_mdevd ; enable_udev $coldplug ;; esac #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { cat <<-__EOF__ usage: setup-dns [-h] [-d DOMAINNAME] [IPADDR...] Setup ${ROOT}etc/resolv.conf DNS settings options: -h Show this help -d specify search domain name The optional IPADDR are a list of DNS servers to use. __EOF__ exit $1 } while getopts "d:n:h" opt; do case $opt in d) DOMAINNAME="$OPTARG";; h) usage 0;; n) NAMESERVERS="$OPTARG";; '?') usage "1" >&2;; esac done shift $(($OPTIND - 1)) conf="${ROOT}etc/resolv.conf" if [ -f "$conf" ] ; then domain=$(awk '/^domain/ {print $2}' $conf) dns=$(awk '/^nameserver/ {printf "%s ",$2}' $conf) elif fqdn="$(get_fqdn)" && [ -n "$fqdn" ]; then domain="$fqdn" fi if [ -n "$DOMAINNAME" ]; then domain="$DOMAINNAME" elif [ $# -eq 0 ]; then ask "DNS domain name? (e.g 'bar.com')" "$domain" domain="$resp" fi if [ -n "$NAMESERVERS" ] || [ $# -gt 0 ];then dns="$NAMESERVERS" else ask "DNS nameserver(s)?" "${dns% }" dns="$(echo $resp | tr ',' ' ')" fi if [ -n "$domain" ]; then mkdir -p "${conf%/*}" echo "search $domain" > $conf fi if [ -n "$dns" ] || [ $# -gt 0 ] && [ -f "$conf" ]; then sed -i -e '/^nameserver/d' $conf fi for i in $dns $@; do mkdir -p "${conf%/*}" echo "nameserver $i" >> $conf done #!/bin/sh PROGRAM=setup-hostname PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { cat <<-__EOF__ usage: setup-hostname [-h] [HOSTNAME] Sets the system hostname. options: -h Show this help Sets hostname to HOSTNAME or prompt if unspecified. __EOF__ exit $1 } # http://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names valid_hostname() { # check length if [ $(echo "$1" | wc -c) -gt 255 ]; then echo "Hostname '$1' is too long." >&2 return 1 fi # check that it only contains valid chars if ! [ -z "$(echo $1 | sed 's/[0-9a-z.-]//g')" ]; then echo "Hostname must only contain letters (a-z), digits (0-9), '.' or '-'" >&2 return 1 fi # must not start with - or . case "$1" in -*) echo "Hostname must not start with a '-'" >&2; return 1;; .*) echo "Hostname must not start with a '.'" >&2; return 1;; esac return 0 } while getopts "hn:" opt; do case $opt in h) usage 0;; n) name="$OPTARG";; '?') usage "1" >&2;; esac done shift $(( $OPTIND - 1 )) if [ -z "$name" ] && [ $# -eq 1 ]; then name="$1" fi # if name is set, then we run non-interactively if [ -n "$name" ] && ! valid_hostname "$name"; then exit 1 fi HOST="$name" while [ -z "$name" ]; do HOST=$(hostname) ask "Enter system hostname (fully qualified form, e.g. 'foo.example.org')" "$HOST" if valid_hostname "$resp"; then HOST="$resp" break fi done mkdir -p "$ROOT/etc" echo "$HOST" > "$ROOT/etc/hostname" #!/bin/sh PROGRAM=setup-interfaces PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" PKGS= unconfigured_add() { touch $1.noconf } unconfigured_detect() { local i= for i in ${INTERFACES:-$(available_ifaces)}; do case "$i" in lo|docker0) continue;; esac unconfigured_add "$i" done } unconfigured_get_first() { ls *.noconf 2>/dev/null | head -n 1 | sed 's/.noconf//' } unconfigured_del() { rm -f $1.noconf } unconfigured_all_done() { local i= for i in *.noconf; do [ -e $i ] && return 1 done return 0 } unconfigured_list() { local list= i= for i in *.noconf; do [ -e "$i" ] || continue list="${list} ${i%.noconf}" done echo $list } unconfigured_isin() { [ -f $1.noconf ] } iface_exists() { test -e "$ROOT"/sys/class/net/$1 } get_default_addr() { # check if dhcpcd is running if pidof dhcpcd > /dev/null && [ -f "$ROOT/var/lib/dhcpc/dhcpcd-$1.info" ]; then echo dhcp elif iface_exists $1; then $MOCK ip addr show $1 | awk '/inet / {print $2}' | head -n 1 | sed 's:/.*::' fi } get_default_mask() { if [ "$1" ] ; then ipcalc -m $1 | sed 's/.*=//' else echo "255.255.255.0" fi } get_default_gateway() { if iface_exists $1; then $MOCK ip route show dev $1 | awk '/^default/ {print $3}' fi } ipaddr_help() { cat <<-__EOF__ Select the ip address for this interface. dhcp Dynamic/automatic ip via DHCP none Do not add any address n.n.n.n (ex: 192.168.0.1) Static ip n.n.n.n/m (ex: 192.168.0.1/24) Static ip with mask br[0-9]+ (ex: br0) Add this interface to a bridge bridge[0-9] (ex: bridge0) Add this interface to a bridge You will be prompted for netmask if not specified with the address. __EOF__ } bridge_add_port() { local bridge="$1" iface= shift for iface; do echo $iface >> $bridge.bridge_ports unconfigured_add $bridge unconfigured_del $iface done } bridge_list_ports() { if [ -r $1.bridge_ports ]; then echo $(cat $1.bridge_ports) fi } is_bridge() { test -r $1.bridge_ports } is_wifi() { test -d "$ROOT"/sys/class/net/$1/phy80211 } find_essids() { local iface="$1" export essids_list=wlans # Supports only open or PSK $MOCK ip link set dev "$iface" up (iw dev "$iface" scan; echo BSS) | awk -F": " ' /^BSS/ { if (ssid) { print ssid "/" auth }; ssid=""; auth="" } $1 ~ /^[[:blank:]]*SSID$/ { ssid=$2 } $1 ~ /Authentication suites/ { auth=$2 }' \ | grep -E -v '(802.1x|\\x00)' | sort -u >"$essids_list" if [ -s "$essids_list" ]; then # we use / as separator since it is an illegal char in ssids awk -F/ '{print NR ") " $1}' "$essids_list" else return 1 fi } config_wpa_supp() { local iface="$1" essid="$2" auth_type="$3" psk="$4" local conffile="$ROOT"/etc/wpa_supplicant/wpa_supplicant.conf mkdir -p "${conffile%/*}" if [ "$auth_type" = "WPA-PSK" ]; then (umask 0077 && wpa_passphrase "$essid" "$psk" | sed -e '/^\t#psk=.*/d' >> "$conffile") else cat << EOF >> $conffile network={ ssid="$essid" key_mgmt=$auth_type } EOF fi mkdir -p "$ROOT/etc/conf.d" if grep -q ^wpa_supplicant_args= "$ROOT"/etc/conf.d/wpa_supplicant 2>/dev/null; then sed -i -e "s/^wpa_supplicant_args=.*/wpa_supplicant_args=\"-i $iface\"/" /etc/conf.d/wpa_supplicant else printf 'wpa_supplicant_args="-i%s"\n' "$iface" >> "$ROOT"/etc/conf.d/wpa_supplicant fi rc-update --quiet add wpa_supplicant boot rc-service wpa_supplicant start } essid_is_valid() { [ -n "$1" ] && cut -d/ -f1 "$essids_list" | grep -q -w -F "$1" } is_number() { echo "$1" | grep -q -E '^[0-9]+$' } essid_by_index() { if is_number "$1"; then cut -d/ -f1 "$essids_list" | sed "$1!d" fi } wlan_is_psk() { local essid="$1" awk -F/ -v essid="$essid" '$1==essid {print $2}' "$essids_list" | grep -q -F -w 'PSK' } config_iface() { local iface="$1" local prefix="$2" local default_address="$3" local address= netmask= gateway= bridge_ports= local bridge local conf="$prefix$iface.conf" if [ -n "$ask_bridge" ] && ! is_bridge $iface \ && ask_yesno "Do you want to bridge the interface $iface? (y/n)" y; then bridge="br$(echo $iface | sed 's/[^0-9]//g')" ask "Name of the bridge you want add $iface to:" $bridge bridge_add_port $resp $iface return fi if [ -r "$iface.bridge_ports" ]; then bridge_ports=$(echo $(cat $iface.bridge_ports)) echo "bridge_ports=\"$bridge_ports\"" >> $conf fi if [ -r "$iface.bond_slaves" ]; then bond_slaves=$(echo $(cat $iface.bond_slaves)) echo "bond_slaves=\"$bond_slaves\"" >> $conf fi if [ -r "$iface.raw_device" ]; then raw_device=$(cat $iface.raw_device) echo "raw_device=\"$raw_device\"" >> $conf fi if is_wifi $iface; then apk add --quiet --no-progress iw wpa_supplicant || return local wifi_configured=false while ! $wifi_configured; do echo "Available wireless networks (scanning):" if ! find_essids $iface; then printf "\nNo available wireless networks\n" return fi local essid= auth_type="NONE" ask "Type the wireless network name to connect to:" if ! essid_is_valid "$resp"; then case "$resp" in ""|done|abort) echo "Aborting $iface setup"; return;; esac local by_index="$(essid_by_index "$resp")" if essid_is_valid "$by_index"; then resp="$by_index" else echo "Invalid SSID: $resp" continue fi fi essid="$resp" if wlan_is_psk "$essid"; then auth_type="WPA-PSK" askpass "Type the \"$essid\" network Pre-Shared Key (will not echo):" psk="$resp" fi config_wpa_supp "$iface" "$essid" "$auth_type" "$psk" && wifi_configured=true done fi # use ipcalc to validate the address. we do accept /mask # we are no interested in the result, only error code, so # we send result to /dev/null while ! ipcalc -s -m $address >/dev/null 2>&1; do address=${default_address:-$(get_default_addr $iface)} [ -z "$address" ] && address="dhcp" ask "Ip address for $iface? (or 'dhcp', 'none', '?')" $address address=$resp case "$resp" in '?') ipaddr_help;; "abort") return;; "dhcp") echo "type=dhcp" >> $conf unconfigured_del $iface return ;; "none") echo "type=manual" >> $conf unconfigured_del $iface return;; br[0-9]*|bridge[0-9]*) case "$iface" in # we dont allow bridge bridges br[0-9]*|bridge[0-9]*) continue;; esac bridge_add_port $resp $iface return ;; esac done # extract netmask if entered together with address if [ "$address" != "${address%%/*}" ]; then netmask=$(ipcalc -s -m $address | cut -d= -f2) fi # use ipcalc -m to validate netmask. we dont accept /mask suffix # so we pass on a dummy mask to ipcalc. while ! ipcalc -s -m $netmask/0 >/dev/null 2>&1; do netmask=$(get_default_mask $address) ask "Netmask?" $netmask netmask=$resp [ "$netmask" = "abort" ] && return done # use ipcalc -m to validate netmask. we dont accept /mask suffix # so we pass on a dummy mask to ipcalc. while ! ipcalc -s -m $gateway/0 >/dev/null 2>&1; do gateway=$(get_default_gateway $iface) [ -z "$gateway" ] && gateway=none ask "Gateway? (or 'none')" $gateway gateway=$resp [ "$gateway" = "abort" ] && return [ "$gateway" = "none" ] && gateway="" [ -z "$gateway" ] && break done echo "type=static" >> $conf if [ -n "$bridge_ports" ]; then echo "bridge_ports=$bridge_ports" >> $conf fi echo "address=${address%%/*}" >> $conf #strip off /mask if there echo "netmask=$netmask" >> $conf echo "gateway=$gateway" >> $conf # print summary echo "Configuration for $iface:" sed 's/^/ /' $conf unconfigured_del $iface } is_bridge() { [ -e "$ROOT"/sys/class/net/$1/bridge ] || [ -e $1.bridge_ports ] } is_bond_master() { [ -e $1.bond_slaves ] } unconfigured_available() { local local i= iflist= for i in $(unconfigured_list); do if ! is_bridge $i && ! is_bond_master $i; then iflist="${iflist}${iflist:+ }$i" fi done echo $iflist } unconfigured_all_are() { local i= for i; do unconfigured_isin $i || return 1 done return 0 } config_bridge() { local bridge="$1" iflist= i= ports= while ! unconfigured_all_done; do set -- $(unconfigured_available) [ $# -eq 0 ] && return 0; ports=$(bridge_list_ports $bridge) if [ -n "$ports" ]; then echo "Bridge ports in $bridge are: $ports" fi echo "Available bridge ports are: $@" ask "Which port(s) do you want add to bridge $bridge? (or 'done')" $1 case $resp in 'abort') return 1;; 'done') return 0;; esac for i in $resp; do if unconfigured_isin $i; then bridge_add_port $bridge $i else echo "$i is not valid" fi done done } bond_add_slave() { local master="$1" slave= shift for slave; do echo $slave >> $master.bond_slaves unconfigured_add $master unconfigured_del $slave done } bond_list_slaves() { if [ -r $1.bond_slaves ]; then echo $(cat $1.bond_slaves) fi } config_bond() { local master="$1" slaves= while ! unconfigured_all_done; do set -- $(unconfigured_available) [ $# -eq 0 ] && return 0; slaves=$(bond_list_slaves $master) if [ -n "$slaves" ]; then echo "Bond slaves in $master are: $slaves" fi echo "Available bond slaves are: $@" ask "Which slave(s) do you want add to $master? (or 'done')" $1 case $resp in 'abort') return 1;; 'done') return 0;; esac for i in $resp; do if unconfigured_isin $i; then bond_add_slave $master $i else echo "$i is not valid" fi done done } config_vlan() { local iface="$1" vid= raw_device= case $iface in *.*) raw_device=${iface%.*} vid=${iface#*.} ;; vlan*) vid=${iface#vlan} ask_which "raw device" "do you want use for $iface" "$(unconfigured_list)" echo "$resp" > $iface.raw_device return 0 ;; esac if unconfigured_isin $raw_device || is_bond_master $raw_device; then return 0 fi echo "$raw_device is not a valid raw device for $iface" return 1 } usage() { cat <<-__EOF__ usage: setup-interfaces [-abhir] [-p ROOT] Setup network interfaces options: -a Automatic interface setup using DHCP -b Ask for bridging of interfaces -h Show this help -i Read new contents of ${ROOT}etc/network/interfaces from stdin -p Set the system root to operate in -r Restart the networking service after the setup __EOF__ exit $1 } iface_help() { cat <<-__EOF__ Select the interface you wish to configure. For advanced configurations, you can also enter: br[0-9]+ (ex: br0) bridge interface bridge[0-9]+ (ex: bridge0) bridge interface bond[0-9]+ (ex: bond32) bonded interface vlan[0-9]+ (ex: vlan371) vlan interface eth?.[0-9]+ (ex: eth0.371) vlan interface bond?.[0.9]+ (ex: bond0.371) vlan interface You will be asked which physical interface(s) to be used for advanced configurations. Select 'none' to leave configuration unmodified. __EOF__ } prompt_for_interfaces() { init_tmpdir TMP cd $TMP unconfigured_detect index=1 while ! unconfigured_all_done; do echo "Available interfaces are: $(unconfigured_list)." echo "Enter '?' for help on bridges, bonding and vlans." ask "Which one do you want to initialize? (or '?' or 'done')" \ $(unconfigured_get_first) iface=$resp case "$iface" in "none") exit;; "done") break;; '?') iface_help; continue;; br[0-9]*|bridge[0-9]*|virbr[0-9]*) config_bridge $iface || continue;; bond[0-9]*.[0-9]*) config_bond ${iface%.*} || continue config_iface ${iface%.*} $(printf "%.3d~" $index) none index=$(( $index + 1 )) config_vlan $iface || continue ;; bond[0-9]*) config_bond $iface || continue;; *.[0-9]*|vlan[0-9]*) config_vlan $iface || continue;; *) unconfigured_isin $iface || continue;; esac config_iface $iface $(printf "%.3d~" $index) index=$(( $index + 1 )) done if [ "$(openrc --sys)" != "LXC" ] || ! ip addr show lo | grep -q 'inet.*127\.0'; then echo "type=loopback" > 000~lo.conf echo "" > interface fi for i in *.conf ; do iface=$(basename $i .conf) iface=${iface#[0-9]*~} bridge_ports= bond_slaves= raw_device= address= type= gateway= . ./$i echo "auto $iface" >> interfaces echo "iface $iface inet $type" >> interfaces if [ -n "$bridge_ports" ]; then PKGS="$PKGS bridge" printf "\tbridge-ports %s\n" "$bridge_ports" >> interfaces fi if [ -n "$bond_slaves" ]; then PKGS="$PKGS bonding" printf "\tbond-slaves %s\n" "$bond_slaves" >> interfaces fi if [ -n "$raw_device" ]; then printf "\tvlan-raw-device %s\n" "$raw_device" >> interfaces fi case "$iface" in *.[0-9]*|vlan[0-9]*) if ! [ -f "$ROOT"usr/libexec/ifupdown-ng/link ]; then PKGS="$PKGS vlan" fi ;; esac case $type in manual) printf "\tup ip link set \$IFACE up\n" >> interfaces printf "\tdown ip link set \$IFACE down\n" >> interfaces ;; static) printf "\taddress %s\n" "$address" >> interfaces printf "\tnetmask %s\n" "$netmask" >> interfaces [ "$gateway" ] \ && printf "\tgateway %s\n" "$gateway" >> interfaces ;; esac echo "" >> interfaces done if ask_yesno "Do you want to do any manual network configuration? (y/n)" n; then case "$EDITOR" in nano) apk add nano;; vim) apk add vim;; esac ${EDITOR:-vi} interfaces fi if [ -n "$PKGS" ]; then apk add --quiet $PKGS fi mkdir -p $ROOT/etc/network cp interfaces $ROOT/etc/network/ } find_first_iface_up() { local n=0 [ $# -eq 0 ] && return while [ $n -le ${SETUP_INTERFACES_LINK_WAIT_MAX:-11} ]; do for i in "$@"; do if [ "$(cat "$ROOT/sys/class/net/$i/operstate" 2>/dev/null)" = "up" ]; then echo "$i" return fi done sleep 0.1 n=$((n+1)) done } auto_setup() { local iface set -- $(available_ifaces) if [ $# -eq 0 ]; then return fi for iface in "$@"; do $MOCK ip link set dev "$iface" up done iface="$(find_first_iface_up "$@")" if [ -z "$iface" ]; then iface="$1" fi # we will likely use the found interface later so lets keep it up for i in "$@"; do if [ "$i" != "$iface" ]; then $MOCK ip link set dev "$i" down fi done cat >$ROOT/etc/network/interfaces <<-EOF auto lo iface lo inet loopback auto $iface iface $iface inet dhcp EOF } ask_bridge= is_xen_dom0 && ask_bridge=1 while getopts "abhip:r" opt; do case $opt in a) auto=1;; b) ask_bridge=1;; h) usage 0;; i) STDINPUT=1;; p) ROOT=$OPTARG;; r) restart=1;; '?') usage "1" >&2;; esac done if [ "$1" = none ]; then exit fi mkdir -p $ROOT/etc/network if [ "$STDINPUT" = "1" ]; then cat > $ROOT/etc/network/interfaces elif [ -n "$auto" ]; then auto_setup else prompt_for_interfaces fi if [ -n "$restart" ]; then rc-service networking --quiet restart >/dev/null fi #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" MAPDIR="$ROOT/usr/share/bkeymaps" if [ -f "$ROOT/etc/conf.d/loadkmap" ]; then . "$ROOT/etc/conf.d/loadkmap" variant=$(basename "KEYMAP") variant="${variant%%.*}" fi usage() { cat <<-__EOF__ usage: setup-keymap [-h] [LAYOUT [VARIANT]] Sets the system keymap layout and variant. options: -h Show this help Sets keymap to LAYOUT (and VARIANT) or prompt if unspecified. __EOF__ exit $1 } show_layouts() { output="" for file in "$MAPDIR"/*; do base=$(basename "$file") output="$output${base%.bmap.gz} " done print_column "$output" } show_variants() { output="" for file in "$MAPDIR/$1"/*; do base=$(basename "$file") output="$output${base%.bmap.gz} " done print_column "$output" } print_column() { if [ -z "$1" ]; then echo "Error: No data to display." >&2 return 1 fi local terminal_width=$(stty size 2>/dev/null | cut -d' ' -f2) if [ -z "$terminal_width" ] || [ "$terminal_width" -eq 0 ]; then terminal_width=80 fi max_word_length=$(echo "$1" | awk '{for(i=1;i<=NF;i++) x = (length($i) > x ? length($i) : x)} END {print x}') number_of_columns=$((terminal_width / (max_word_length + 1))) if [ "$number_of_columns" -eq 0 ]; then number_of_columns=1 fi words=$(echo $1) i=0 for word in $words; do printf "%-${max_word_length}s " "$word" i=$((i + 1)) if [ $((i % number_of_columns)) -eq 0 ]; then printf "\n" fi done if [ $((i % number_of_columns)) -ne 0 ]; then printf "\n" fi } select_layout() { while true; do if [ -z "$layout" ] || ! [ -d "$MAPDIR/$layout" ]; then layout=none fi show_layouts echo "" ask "Select keyboard layout:" "$layout" echo "" if [ "$resp" = "abort" ] || [ "$resp" = "none" ] ; then goodbye 0 fi set -- $resp layout="$1" variant="$2" if [ -d "$MAPDIR/$layout" ] ; then return 0 fi done } setup_mapfile() { local name="$(basename "$1")" local conf="$ROOT/etc/conf.d/loadkmap" mkdir -p "$ROOT/etc/keymap" mkdir -p "$ROOT/etc/conf.d/" if cp "$1" "$ROOT/etc/keymap/$name" ; then [ -f "$conf" ] && sed -i '/^KEYMAP=/d' "$conf" echo "KEYMAP=/etc/keymap/$name" >> "$conf" # we actually load the keymap now rc-service loadkmap restart rc-update -q add loadkmap boot goodbye 0 fi } select_variant() { while true; do show_variants "$layout" if [ ! -f "$MAPDIR/$layout/$variant.bmap" ] ; then variant="" fi echo "" ask "Select variant (or 'abort'):" "$variant" echo "" variant="$resp" if [ "$variant" = "abort" ] || [ "$variant" = "none" ]; then break; fi if [ -f "$MAPDIR/$layout/$variant.bmap"* ]; then setup_mapfile "$MAPDIR/$layout/$variant.bmap"* fi done } goodbye() { apk del --quiet --no-progress .setup-keymap-deps exit $1 } while getopts "h" opt; do case $opt in h) usage 0;; '?') usage "1" >&2;; esac done shift $(( $OPTIND - 1 )) trap 'goodbye 1' INT apk add --quiet --virtual .setup-keymap-deps kbd-bkeymaps deflayout="$1" defvariant="$2" while true; do if [ -n "$deflayout" ]; then if [ "$deflayout" = "none" ]; then goodbye 0 fi layout="$deflayout" unset deflayout else select_layout fi if [ -n "$defvariant" ]; then variant="$defvariant" fi # if variant is defined, this could match, otherwise we'll have to choose a variant if [ -f "$MAPDIR/$layout/$variant.bmap"* ]; then setup_mapfile "$MAPDIR/$layout/$variant.bmap"* else # if there is only one variant, just pick it count=$(ls "$MAPDIR"/"$layout" | wc -l) if [ $count -eq 1 ]; then setup_mapfile "$MAPDIR/$layout/"* continue fi select_variant fi done #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { cat <<-__EOF__ usage: setup-lbu [-hq] [MEDIA] Setup lbu media settings. MEDIA is optional mountpoint under /media options: -h Show this help -q Quietly pick best suggestion. Only prompts user if unsure. __EOF__ exit $1 } get_filesystem_type() { local mountpoint="$1" shift awk "\$2==\"$mountpoint\" {print \$3}" "$@" 2>/dev/null } get_dev() { local mountpoint="$1" shift awk "\$2==\"$mountpoint\" {print \$1}" "$@" 2>/dev/null } is_in_fstab() { test -n "$(get_filesystem_type $1 "$ROOT"/etc/fstab)" } is_mounted() { test -n "$(get_filesystem_type $1 "$ROOT"/proc/mounts)" } is_iso9660() { local fs for fs in $(get_filesystem_type $1 "$ROOT"/proc/mounts "$ROOT"/etc/fstab); do if [ "$fs" = "iso9660" ]; then return 0 fi done return 1 } set_media() { local media="${1%/}" # strip trailing / local mnt=/media/$media case "$media" in LABEL=*|UUID=*) mkdir -p $ROOT/media/$media;; esac if [ -d "$media" ] && [ "${media#/media/}" != "$media" ]; then mnt="$media" media=${mnt#/media/} fi if [ "$ROOT" = "/" ] && ! [ -d "$mnt" ]; then echo "$mnt: not a directory" >&2 exit 1 fi # set LBU_MEDIA in /etc/lbu/lbu.conf if [ -f "${ROOT}"etc/lbu/lbu.conf ]; then sed -e "/^\#\?[[:space:]]*LBU_MEDIA=.*/s/.*/LBU_MEDIA=$media/" \ -i "${ROOT}"etc/lbu/lbu.conf if ! egrep -q '^LBU_MEDIA=' "${ROOT}"etc/lbu/lbu.conf; then echo "LBU_MEDIA=$media" >> "${ROOT}"etc/lbu/lbu.conf fi else mkdir -p "${ROOT}"etc/lbu echo "LBU_MEDIA=$media" >> "${ROOT}"etc/lbu/lbu.conf fi # append to fstab if its missing if ! is_in_fstab $mnt; then case "$media" in LABEL=*|UUID=*) dev=$(findfs $media) ;; *) dev=$(get_dev $mnt "$ROOT"/proc/mounts) ;; esac if [ -z "$dev" ]; then echo "$media: Could not find device" >&2 exit 1 fi # get TYPE=... LABEL=... UUID=... from blkid eval $(blkid $dev | awk -F: '{print $2}') if [ -z "$TYPE" ]; then echo "$media: Could not find filesystem type" >&2 exit 1 fi if [ -n "$UUID" ]; then UUID="UUID=$UUID" fi # use LABEL= if it was specifically selected, otherwise use UUID case "$media" in LABEL=*|UUID=*) UUID="$media";; esac mkdir -p "$ROOT"/etc printf "%s\t%s\t%s\tnoauto,ro 0 0\n" "${UUID:-$dev}" "$mnt" "$TYPE" >> "$ROOT"/etc/fstab fi # hack in case we have alpine_dev mounted on /media/usbdisk but # lbu is stored on /media/usb # Otherwise we get issues when we do lbu commit. if [ "$media" = "usb" ] && is_mounted /media/usbdisk; then mount --move /media/usbdisk /media/usb elif [ "$media" = "usbdisk" ] && is_mounted /media/usb; then mount --move /media/usb /media/usbdisk fi } while getopts "hq" opt; do case $opt in h) usage 0;; q) quiet=1;; '?') usage "1" >&2;; esac done shift $(($OPTIND - 1)) # check if MEDIA option was given if [ -n "$1" ]; then if [ "$1" = "none" ]; then exit fi set_media "$1" exit fi alternatives= suggestion="none" for dir in /media/*; do [ -d "$dir" ] || continue if is_iso9660 "$dir"; then continue fi alternatives="$alternatives, '${dir#/media/}'" if is_mounted "$dir"; then suggestion=${dir#/media/} [ -n "$quiet" ] && media=$suggestion fi done if findfs "LABEL=APKOVL" >/dev/null; then suggestion="LABEL=APKOVL" case ", $alternatives, " in *"'LABEL=APKOVL'"*) ;; *) alternatives="$alternatives, 'LABEL=APKOVL'" ;; esac fi # strip leading , + space alternatives=${alternatives#, } # if nothing is mounted (or boot from cdrom) usbmnt=$(awk '$1 == "/dev/usbdisk" {print $2}' /proc/mounts) if [ -z "$suggestion" ] && [ -n "$usbmnt" ]; then suggestion=${usbmnt#/media/} if [ -n "$quiet" ] && [ -e /dev/usbdisk ]; then media=$suggestion fi fi while [ -z "$media" ]; do ask "Enter where to store configs ($alternatives or 'none')" "$suggestion" media="$resp" case "$media" in none|LABEL=*) break;; esac if [ -d "/media/$media" ]; then break fi echo "/media/$media is not a directory. Please try again." media= done if [ "$media" = "none" ]; then exit 0 fi set_media "$media" #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" conf="$ROOT/etc/ssmtp/ssmtp.conf" usage() { cat <<-EOF usage: setup-mta [-h] [SMTPSERVER] Setup SMTP server for outgoing email options: -h Show this help If SMTPSERVER is not prompted user will be prompted EOF exit $1 } cfgval() { awk -F= "/^$1/ {print \$2}" $conf 2>/dev/null } setcfg() { local key="$1" local value="$2" mkdir -p "${conf%/*}" sed -i "s/^\\(\\#\\)*$key=.*/$key=$value/" "$conf" 2>/dev/null if ! grep -q "^$key=" "$conf" 2>/dev/null; then echo "$key=$value" >> "$conf" fi } while getopts "h" opt; do case $opt in h) usage 0;; '?') usage "1" >&2;; esac done shift $(( $OPTIND - 1 )) mailhub="$1" if [ -f "$conf" ] ; then mailhub=$(cfgval mailhub) fi domain=$(hostname -d $hostname 2>/dev/null) if [ -z "$mailhub" ] ;then if [ -n "$domain" ] ; then mailhub="smtp.$domain" else mailhub=smtp fi fi res= while [ $# -eq 0 ] && [ "$res" != "221" ]; do ask "Outgoing mail server? (e.g 'smtp.isp.com')" "$mailhub" mailhub="$resp" if ! ask_yesno "Test connection? (y/n)" y; then break fi res=$(printf "quit\r\n\n" | nc $mailhub 25 | awk '/^221/ {print $1}') [ "x$res" = "x221" ] && echo "Connection to $mailhub is ok." done apk add ssmtp setcfg mailhub $mailhub setcfg FromLineOverride YES #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { cat >&$(( $1 + 1 ))<<-__EOF__ usage: setup-ntp [-h] [busybox|openntpd|chrony|none] Setup NTP time synchronization options: -h Show this help User is prompted if no NTP daemon is specified __EOF__ exit $1 } while getopts "hc:" opt; do case $opt in c) resp="$OPTARG";; h) usage 0;; '?') usage 1;; esac done shift $(( $OPTIND - 1 )) : ${resp:=$1} while [ $# -eq 0 ] && ! isin "$resp" busybox openntpd chrony none abort; do if date -d "$resp" >/dev/null 2>&1; then $MOCK date -s "$resp" else # display current time before asking for NTP client date fi ask "Which NTP client to run? ('busybox', 'openntpd', 'chrony' or 'none')" chrony done pkgs="$resp" case "$resp" in none|abort) exit 0 ;; busybox) pkgs='' svc=ntpd ;; chrony) if apk info --installed --quiet acf-core; then pkgs="$pkgs acf-chrony" fi svc=chronyd ;; openntpd) svc=openntpd ;; *) echo "setup-ntp: '$resp' is not a supported NTP client" >&2 usage 1 ;; esac [ -z "$pkgs" ] || apk add --quiet $pkgs rc-update add $svc default rc-service $svc start #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { cat <<-__EOF__ usage: setup-proxy [-hq] [PROXYURL] Setup http proxy options: -h Show this help -q Quiet mode If PROXYURL is not specified user will be prompted. __EOF__ exit $1 } while getopts "hp:q" opt; do case "$opt" in q) quiet=1;; h) usage 0;; p) ROOT=$OPTARG;; '?') usage "1" >&2;; esac done shift $(( $OPTIND - 1)) proxyurl="$1" PROFILE="$ROOT/etc/profile.d/proxy.sh" if [ -f "$PROFILE" ] ; then . $PROFILE fi suggest=${http_proxy:-none} while [ $# -eq 0 ]; do case "$proxyurl" in http://*|https://*) break;; none) break;; esac ask "HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none')" $suggest proxyurl=$resp done if [ "$proxyurl" = "none" ]; then rm -f "$PROFILE" else mkdir -p "${PROFILE%/*}" cat >"$PROFILE" <<-__EOF__ # this file was generated with and might get overwritten by setup-proxy export http_proxy=$proxyurl export https_proxy=$proxyurl export ftp_proxy=$proxyurl export no_proxy=localhost __EOF__ # busybox wget does not handle http proxies well apk add --quiet --no-progress wget fi if [ -z "$quiet" ] && [ "$proxyurl" != "none" ]; then cat <<-__EOF__ To make changes active please do login again or source $PROFILE with ". $PROFILE" __EOF__ fi #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { cat <<-__EOF__ usage: setup-sshd [-h] [-k authorized key] [openssh | dropbear | none] Setup sshd daemon options: -h Show this help -k Authorized key for root (HTTP(S)/FTP URL, the public key itself or 'none') __EOF__ exit $1 } root_login_help() { cat <<-__EOF__ Valid options are: yes root will be able to login with password or ssh key no root will not be allowed to login with ssh prohibit-password root will be able to login with ssh key but not with password __EOF__ } set_sshd_config() { local key="$1" value="$2" sed -i -E -e "s/^#?\s*$key.*/$key $value/" \ "$ROOT"/etc/ssh/sshd_config 2>/dev/null if ! grep -q -w "^$key" "$ROOT"/etc/ssh/sshd_config; then echo "$key $value" >> "$ROOT"/etc/ssh/sshd_config fi } get_sshd_config() { local key="$1" value="$2" awk -v key="$key" '$1 == key {print $2}' "$ROOT"/etc/ssh/sshd_config } authorized_key="$SSH_KEY" while getopts "hc:k:" opt; do case $opt in h) usage 0;; c) sshdchoice="$OPTARG";; # backwards compat k) authorized_key="$OPTARG";; '?') usage "1" >&2;; esac done shift $(( $OPTIND - 1 )) case "$1" in openssh|dropbear|none) sshdchoice="$1" ;; "") [ -z "$sshdchoice" ] && interactive=1;; *) usage "1" >&2;; esac while [ -n "$interactive" ] && ! isin "$sshdchoice" openssh dropbear none; do ask "Which ssh server? ('openssh', 'dropbear' or 'none')" openssh sshdchoice="$resp" done if [ "$sshdchoice" = "none" ]; then exit 0 fi pkgs="$sshdchoice" if [ "$sshdchoice" = "openssh" ] && apk info --quiet --installed acf-core; then pkgs="$pkgs acf-openssh" fi apk add --quiet $pkgs users=$(awk -F: '{if ($3<65000 && $3 >= 1000) print $1}' \ "$ROOT"/etc/passwd 2>/dev/null) if [ "$sshdchoice" = "openssh" ] && [ -z "$authorized_key" ] && [ -z "$users" ]; then suggest=prohibit-password while [ -n "$interactive" ]; do ask "Allow root ssh login? ('?' for help)" "$suggest" case "$resp" in '?') root_login_help continue ;; "al "*) suggest="https://gitlab.alpinelinux.org/${resp#* }.keys" continue ;; "gl "*) suggest="https://gitlab.com/${resp#* }.keys" continue ;; "gh "*) suggest="https://github.com/${resp#* }.keys" continue ;; yes|no|prohibit-password) set_sshd_config PermitRootLogin "$resp" break ;; http://*|https://*) authorized_key="$(wget -qO- "$resp")" || { echo "Failed to fetch key from '$resp'" continue } break ;; esac done suggest=none while [ -n "$interactive" ] && [ "$(get_sshd_config PermitRootLogin)" != "no" ]; do ask "Enter ssh key or URL for root (or 'none')" "$suggest" case "$resp" in "al "*) suggest="https://gitlab.alpinelinux.org/${resp#* }.keys" continue ;; "gl "*) suggest="https://gitlab.com/${resp#* }.keys" continue ;; "gh "*) suggest="https://github.com/${resp#* }.keys" continue ;; http://*|https://*) authorized_key="$(wget -qO- "$resp")" || { echo "Failed to fetch key from '$resp'" continue } break ;; none) break ;; *) if printf "%s\n" "$resp" | ssh-keygen -l -f - >/dev/null; then authorized_key="$resp" break fi ;; esac done fi # ask "Enter ssh key or URL for $username (or 'none')" none svc= case "$sshdchoice" in openssh) svc=sshd;; dropbear) svc=dropbear;; esac if [ -n "$svc" ]; then rc-update add $svc default rc-service $svc start fi if [ -n "$authorized_key" -a "$authorized_key" != "none" ]; then # if the argument is an HTTP(S)/FTP URL, try to fetch the file contents case "$authorized_key" in http*://*|ftp://*) key_url="$authorized_key" authorized_key="$(wget -qO- "$key_url")" || die "Failed to fetch key from '$key_url'" ;; esac umask 077 mkdir -p "$ROOT"/root/.ssh echo "$authorized_key" >> "$ROOT"/root/.ssh/authorized_keys fi #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" zroot="$ROOT"usr/share/zoneinfo usage() { cat <<-__EOF__ usage: setup-timezone [-h] [-k|-i] [TIMEZONE] Sets the timezone for the system. options: -h Show this help -i Install tzdata and symlink instead of making a copy -k Keep previous copies of tzdata TIMEZONE is relative $zroot. If TIMEZONE is not specified user will be prompted. __EOF__ exit $1 } show_tz_list() { local i z= list= local path="$zroot/$1" [ -d "$path" ] || return 1 for i in $(find $path/ -maxdepth 1); do case $i in *.tab|*/) continue;; esac if [ -d "$i" ]; then z="$z ${i##*/}/" else z="$z ${i##*/}" fi done ( cd $path && ls --color=never -Cd $z ) } setup_tz() { local zonepath="$1" if ! $INSTALL_TZDATA; then local zone="${zonepath#*/zoneinfo/}" local zdir="${zonepath%/*}"/ zdir="${zdir#*/zoneinfo/}" if ! $KEEP_TZDATA; then rm -rf "${ROOT}"etc/zoneinfo fi mkdir -p "${ROOT}"etc/zoneinfo/$zdir cp "$zonepath" "${ROOT}"etc/zoneinfo/$zdir/ zonepath=/etc/zoneinfo/$zone fi rm -f "${ROOT}"etc/localtime ln -s "$zonepath" "${ROOT}"etc/localtime } INSTALL_TZDATA=false KEEP_TZDATA=false while getopts "hikz:" opt; do case $opt in h) usage 0;; i) INSTALL_TZDATA=true;; k) KEEP_TZDATA=true;; z) ZONE="$OPTARG";; # backwards compat '?') usage "1" >&2;; esac done shift $(( $OPTIND - 1)) if [ -z "$ZONE" ]; then ZONE="$1" fi if [ "$ZONE" = "none" ]; then exit 0 fi if $INSTALL_TZDATA; then pkg=tzdata apkdel= else pkg="--force --virtual .setup-timezone tzdata" apkdel=".setup-timezone" fi apk add --no-progress --quiet $pkg || die "Failed to install tzdata package" if [ -n "$apkdel" ]; then trap "exit 1" INT TERM HUP trap "apk del --no-progress --quiet $apkdel" EXIT fi if [ -L "${ROOT}"etc/zoneinfo/localtime ]; then default_timezone=$(readlink "${ROOT}"etc/zoneinfo/localtime) default_timezone=${timezone#*/zoneinfo/} else default_timezone=UTC fi if [ -n "$ZONE" ]; then [ -f "$zroot/$ZONE" ] || die "'$ZONE' is not a valid timezone on this system" setup_tz "$zroot"/"$ZONE" else while true; do show_tz_list echo "" ask "Which timezone are you in? (or '?' or 'none')" "$default_timezone" timezone=$(printf %s "$resp" | sed 's/\/\+/\//g; s/\/$//') case "$timezone" in none|abort) break;; ""|"?") continue;; esac while [ -d "$zroot/$timezone" ]; do show_tz_list "$timezone" echo "" ask "What sub-timezone of '$timezone' are you in? (or '?')" zone=$(printf %s "$resp" | sed 's/\/\+/\//g; s/\/$//') case "$zone" in ""|"?") continue;; esac default_timezone="$timezone" timezone="$timezone/$zone" done if [ -f "$zroot/$timezone" ]; then setup_tz "$zroot/$timezone" break fi echo "'$timezone' is not a valid timezone on this system" done fi #!/bin/sh PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" usage() { cat <<-__EOF__ usage: setup-user [-h] [-a] [-u] [-f FULLNAME] [-g GROUPS] [-k SSHKEY] [USERNAME] Create user account options: -a Create admin user. Add to wheel group and set up doas -h Show this help -f Set full name for user -g Comma or space separated list of groups to add user to -k ssh key or URL to ssh key (eg. https://gitlab.alpinelinux.org/user.keys) or 'none' for no key -u Unlock the user automatically (eg. creating the user non-interactively with an ssh key for login) If USERNAME is not specified user will be prompted. __EOF__ exit $1 } filter_ssh_keys() { grep -E '^(ecdsa|rsa|ssh)-' } retrieve_ssh_keys() { wget -q -O - "$1" | filter_ssh_keys } contains_ssh_key() { echo "$1" | filter_ssh_keys > /dev/null } while getopts "af:g:hk:u" opt; do case $opt in a) admin=1;; h) usage 0;; f) fullnameopt="$OPTARG";; g) groups="$OPTARG";; k) keysopt="$OPTARG";; u) forceunlock=1;; '?') usage "1" >&2;; esac done shift $(($OPTIND - 1)) if [ -z "$admin$fullnameopt$groups$keysopt$forceunlock" ] && [ "$1" = "none" ]; then exit 0 fi if [ $# -gt 1 ]; then usage "1" >&2 elif [ $# -eq 1 ]; then username="$1" else interactive=1 fi while true; do fullname="$fullnameopt" if [ -n "$interactive" ] && [ -z "$username" ]; then if [ -n "$fullname" ]; then suggest=${fullname:+$(echo "$fullname" | sed -E 's/^(.).*\s+(.*)/\1\2/' | tr '[:upper:]' '[:lower:]')} else suggest=no fi # dont suggest something that has failed before if [ "$suggest" = "$failed_username" ]; then suggest= fi ask "Setup a user? (enter a lower-case loginname, or 'no')" $suggest case "$resp" in no) exit 0;; *) username="$resp";; esac fi if [ -n "$interactive" ] && [ -z "$fullnameopt" ]; then ask "Full name for user $username" ${lastfullname:-$username} fullname="$resp" lastfullname="$resp" fi if [ -n "$fullname" ]; then adduser -g "$fullname" -D "$username" && break else adduser -D "$username" && break fi if ! [ -n "$interactive" ]; then exit 1 fi failed_username="$username" username= done while [ -n "$interactive" ] && ! $MOCK passwd "$username"; do echo "Please retry." done if [ -n "$interactive" ] && [ -z "$keysopt" ]; then suggest=none while true; do ask "Enter ssh key or URL for $username (or 'none')" $suggest case "$resp" in al) suggest="https://gitlab.alpinelinux.org/$username.keys" continue ;; gl) suggest="https://gitlab.com/$username.keys" continue ;; gh) suggest="https://github.com/$username.keys" continue ;; none) break ;; https://*|http://*) sshkeys=$(retrieve_ssh_keys "$resp") ;; *) sshkeys="$resp" ;; esac if contains_ssh_key "$sshkeys"; then break fi echo "Did not find any key in '$resp'" done else case "$keysopt" in https://*|http://*) sshkeys=$(retrieve_ssh_keys "$keysopt");; none) sshkeys="" ;; *) sshkeys="$keysopt";; esac if [ -n "$sshkeys" ] && ! contains_ssh_key "$sshkeys"; then echo "Could not find any keys in '$resp'" >&2 exit 1 fi fi if [ -n "$sshkeys" ] && [ "$sshkeys" != "none" ]; then ssh_directory="$ROOT"/home/$username/.ssh ( umask 077 mkdir -p "$ssh_directory" echo "$sshkeys" > "$ssh_directory"/authorized_keys ) $MOCK chown -R $username:$username "$ssh_directory" fi if [ -n "$groups" ] && [ "$groups" != "none" ]; then for i in $(echo $groups | tr ',' ' '); do $MOCK addgroup "$username" "$i" || exit done fi if [ -n "$admin" ]; then apk add doas mkdir -p "$ROOT"/etc/doas.d echo "permit persist :wheel" >> "$ROOT"/etc/doas.d/doas.conf $MOCK addgroup "$username" "wheel" || exit fi if [ -n "$forceunlock" ]; then $MOCK passwd -u "$username" || exit fi #!/bin/sh usage() { cat <<-__EOF__ usage: setup-wayland-base [-h] [PKG..] Set up system to use Wayland options: -h Show this help Installs and enables elogind, enables community repository, enable udev and install the packages PKG if specified. __EOF__ exit $1 } while getopts "h" opt; do case $opt in h) usage 0;; '?') usage "1" >&2;; esac done shift $(($OPTIND - 1)) # For every main/ repo, enable corresponding community/ repo setup-apkrepos -o apk add elogind polkit-elogind eudev "$@" setup-devd udev for service in elogind polkit; do rc-service "$service" start rc-update add "$service" done #!/bin/sh # simple script to setup basic xen dom0 # kernel modules mkdir -p "$ROOT"/etc for mod in xen_netback xen_blkback xenfs xen_pciback xen_wdt tun; do if $MOCK modprobe $mod; then grep -q -w $mod "$ROOT"/etc/modules 2>/dev/null || echo $mod >> "$ROOT"/etc/modules fi done # install packages apk add --quiet xen $@ # setup and start services for svc in xenstored xenconsoled xenqemu; do if rc-service --exist "$svc"; then rc-update --quiet add "$svc" default rc-service "$svc" start fi done #!/bin/sh usage() { cat <<-__EOF__ usage: setup-xorg-base [-h] [PKG..] Set up system to use Xorg options: -h Show this help Installs xorg-server, enables community repository, enable udev and install the packages PKG if specified. __EOF__ exit $1 } while getopts "h" opt; do case $opt in h) usage 0;; '?') usage "1" >&2;; esac done shift $(($OPTIND - 1)) # For every main/ repo, enable corresponding community/ repo setup-apkrepos -o apk add xorg-server xf86-input-libinput xinit eudev mesa-dri-gallium "$@" setup-devd udev #!/bin/sh VERSION=3.19.2-r0 PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" # set up temp dir init_tmpdir TMPD LBUCACHE="$TMPD/lbucache" usage() { cat <<-__EOF__ $PROGRAM $VERSION usage: $PROGRAM [-a|--all] [-i|--initd] [-l|--list] [-h|--help] options: -a, --all Select all updated files -i, --initd Use all new init.d scripts -l, --list List updated files -h, --help Show this help __EOF__ exit $1 } is_modified() { [ -f "$LBUCACHE" ] || lbu status -a | awk '{print $2}' > "$LBUCACHE" test -n "$( ( echo "$1" ; cat "$LBUCACHE" ) | sort | uniq -d)" } is_initd() { echo "$1" | grep etc/init.d/ > /dev/null } args=$(getopt -o ailh --long all,initd,list,help -n "$PROGRAM" -- "$@") if [ $? -ne 0 ]; then usage "1" >&2 fi eval set -- "$args" while true; do case $1 in -a|--all) aflag="-a";; -i|--initd) iflag="-i";; -l|--list) lflag="-l";; -h|--help) usage 0;; --) shift; break;; '?') usage "1" >&2;; esac shift done if which vimdiff >/dev/null; then vflag=", Vimdiff old new" vflag2="/v" fi for apknew in $(find "$ROOT/etc" -name '*.apk-new') ; do p="${apknew%.apk-new}" f="${p#${ROOT}/}" if [ "$lflag" ] ; then # just list the file if [ "$aflag" ] || is_modified "$f" ; then echo "$p" fi elif [ "$aflag" ] || is_modified "$f" ; then if [ "$iflag" ] && is_initd "$f" ; then echo "Autoupdating $p" mv "$apknew" "$p" continue fi diff -u "$p" "$apknew" # ask user what to do with the file unset resp while [ -z "$resp" ] ; do echo "New $p available:" ask "Quit, Next, Show diff, Edit new${vflag}, Zap new, Use new (q/n/s/e${vflag2}/z/u)" s case "$resp" in q) exit;; n) continue;; s) diff -u "$p" "$apknew" | ${PAGER:-less} unset resp ;; e) ${EDITOR:-vi} "$apknew" ; unset resp;; v) if [ "$vflag" ]; then vimdiff "$p" "$apknew" fi unset resp;; z) rm "$apknew";; u) mv "$apknew" "$p";; *) unset resp;; esac done else # auto update echo "Autoupdating unchanged $p" mv "$apknew" "$p" fi done #!/bin/sh -e # update-kernel # # Kernel and firmware update script for Alpine installations set up # with setup-bootable # # Copyright (c) 2014 Timo Teräs # Copyright (c) 2014-2021 Kaarle Ritvanen PREFIX=/usr : ${LIBDIR=$PREFIX/lib} . "$LIBDIR/libalpine.sh" SCRIPT=update-kernel VIRTUAL=.tmp-$SCRIPT SUPERUSER= [ $(id -u) -eq 0 ] && SUPERUSER=Y if [ -z "$SUPERUSER" ] && [ -z "$FAKEROOTKEY" ]; then exec fakeroot "$0" "$@" fi ARCH= BUILDDIR= FLAVOR= MEDIA= MNTDIR= PACKAGES= MKINITFS_ARGS= REPOSITORIES_FILE=/etc/apk/repositories KEYS_DIR=/etc/apk/keys CACHE_DIR=/etc/apk/cache SIGNALS="HUP INT TERM" tmpdir= features= modloopfw= error() { echo "$SCRIPT: $1" >&2 } usage() { [ "$2" ] && error "$2" $outfh local opts="[-F ]... [-p ]..." local dest_args="[-a ] " local outfh=2 [ $1 -eq 0 ] && outfh=1 cat >&$outfh <<-__EOF__ usage: $SCRIPT $opts [$dest_args] $SCRIPT -f $opts $dest_args $SCRIPT -b $opts [$dest_args] Options: -a|--arch Install kernel for specified architecture -b|--build-dir

Install custom-built kernel -e|--modloopfw Install extra firmware in modloop -f|--flavor Install kernel of specified flavor -F|--feature Enable initfs feature -p|--package Additional module or firmware package -s|--modloopsign Sign modloop with abuild key -v|--verbose Verbose output -k|--apk-pubkey Include given key in initramfs -K|--hostkeys Include host keys in initramfs -C|--compression Initramfs compression (see mkinitfs for options) -M|--media Boot media directory layout -d|--keys-dir Override directory of trusted keys for apk -c|--cache-dir Override cache directory --repositories-file apk repositories file On low-memory systems, you may want to point the TMPDIR environment variable to a storage-backed directory. __EOF__ exit $1 } QUIET_OPT="--quiet" OPTS=$(getopt -l arch:,build-dir:,flavor:,feature:,modloopfw:,help,package:,modloopsign,verbose,apk-pubkey:,hostkeys,compression:,media,repositories-file:,keys-dir:,cache-dir: \ -n $SCRIPT -o a:b:f:F:hp:svk:KC:Md:c: -- "$@") || usage 1 eval set -- "$OPTS" while :; do case "$1" in -a|--arch) shift ARCH=$1 ;; -b|--build-dir) shift BUILDDIR=$1 ;; -f|--flavor) shift FLAVOR=$1 ;; -F|--feature) shift features="$features $1" ;; -e|--modloopfw) shift modloopfw="$modloopfw $1" ;; -h|--help) echo "$SCRIPT 3.19.2-r0" usage 0 ;; -p|--package) shift PACKAGES="$PACKAGES $1" ;; -s|--modloopsign) MODLOOPSIGN=1 ;; -v|--verbose) QUIET_OPT= ;; -k|--apk-pubkey) shift APK_PUBKEY="$1" ;; -K|--hostkeys) MKINITFS_ARGS="$MKINITFS_ARGS -K" ;; -C|--compression) shift MKINITFS_ARGS="$MKINITFS_ARGS -C $1" ;; -M|--media) MEDIA=yes ;; -d|--keys-dir) shift KEYS_DIR="$1" ;; -c|--cache-dir) shift CACHE_DIR="$1" ;; --repositories-file) shift REPOSITORIES_FILE=$1 ;; --) break ;; esac shift done DESTDIR=$2 [ "$BUILDDIR" -a "$FLAVOR" ] && \ usage 1 "Cannot specify both build directory and flavor" if [ -z "$DESTDIR" ]; then [ "$ARCH" ] && \ usage 1 "Cannot specify architecture when updating the current kernel" [ "$FLAVOR" ] && \ usage 1 "Cannot specify flavor when updating the current kernel" [ "$SUPERUSER" ] || \ usage 1 "Specify destination directory or run as superuser" while read MOUNT; do set -- $MOUNT [ $2 = /.modloop ] || continue DESTDIR=$(dirname $(busybox losetup $1 | cut -d " " -f 3)) MNTDIR=$(dirname "$DESTDIR") break done < /proc/mounts if [ -z "$MNTDIR" ]; then error "Module loopback device not mounted" exit 1 fi fi remount() { mount $1 -o remount "$MNTDIR" } ignore_sigs() { trap "" $SIGNALS } clean_up() { set +e ignore_sigs if [ "$SUPERUSER" ] && [ -z "$FAKEROOTKEY" ]; then apk del $QUIET_OPT $VIRTUAL fi rm -fr $tmpdir } sign_modloop() { local in="$1" local abuild_conf="${ABUILD_CONF:-"/etc/abuild.conf"}" [ -f "$abuild_conf" ] && . "$abuild_conf" local abuild_home="${ABUILD_USERDIR:-"$HOME/.abuild"}" local abuild_userconf="${ABUILD_USERCONF:-"$abuild_home/abuild.conf"}" [ -f "$abuild_userconf" ] && . "$abuild_userconf" local privkey="$PACKAGER_PRIVKEY" local pubkey="${PACKAGER_PUBKEY:-"${privkey}.pub"}" MODLOOPSIG=${in##*/}.SIGN.RSA.${pubkey##*/} echo "Signing: $in" openssl dgst -sha1 -sign "$privkey" \ -out "$tmpdir/$MODLOOPSIG" \ "$in" } trap clean_up EXIT $SIGNALS if [ "$SUPERUSER" ] && [ -z "$FAKEROOTKEY" ]; then apk add $QUIET_OPT --update-cache -t $VIRTUAL mkinitfs squashfs-tools kmod fi if [ -z "$features" ]; then . "$ROOT"/etc/mkinitfs/mkinitfs.conf fi if [ -z "$FLAVOR" ]; then FLAVOR=$(uname -r | cut -d - -f 3-) [ "$FLAVOR" ] || FLAVOR=vanilla fi [ "$ARCH" ] || ARCH=$(apk --print-arch) tmpdir=$(mktemp -dt $SCRIPT.XXXXXX) ROOTFS=$tmpdir/root BOOT=$ROOTFS/boot CACHE_DIR_OPT="--cache-dir $CACHE_DIR" if ! [ -e "$CACHE_DIR" ]; then CACHE_DIR_OPT= fi _apk() { local cmd="$1" shift apk $cmd $QUIET_OPT $CACHE_DIR_OPT -p $ROOTFS --arch "$ARCH" \ --keys-dir $KEYS_DIR \ --repositories-file "$REPOSITORIES_FILE" $* } extra_pkgs() { local res="$(_apk search -x $1)" if [ "$res" ]; then echo $* fi } # set up the root and get the APKINDEX for search _apk add --initdb --update-cache if [ "$BUILDDIR" ]; then case "$ARCH" in arm*|aarch64*) _install="zinstall dtbs_install" ;; riscv64) _install="zinstall dtbs_install" ;; *) _install="install" ;; esac mkdir -p $BOOT make -C "$BUILDDIR" $_install firmware_install modules_install \ INSTALL_MOD_PATH=$ROOTFS \ INSTALL_PATH=$BOOT \ INSTALL_DTBS_PATH='$ROOTFS/usr/lib/linux-$(KERNELRELEASE)' else if [ -z "$PACKAGES" ]; then PACKAGES="$(extra_pkgs "xtables-addons-$FLAVOR")" fi PACKAGES="$PACKAGES linux-$FLAVOR linux-firmware" fi _apk add --no-scripts alpine-base $PACKAGES if [ -n "$APK_PUBKEY" ]; then mkdir -p "$ROOTFS"/etc/apk/keys cp "$APK_PUBKEY" "$ROOTFS"/etc/apk/keys/ fi KVER_FLAVOR= [ "$FLAVOR" = vanilla ] || KVER_FLAVOR=-$FLAVOR KVER=$(basename $(ls -d $ROOTFS/lib/modules/*"$KVER_FLAVOR")) DTBDIR=$ROOTFS/boot/dtbs-$FLAVOR [ -d "$DTBDIR" ] || DTBDIR=$ROOTFS/usr/lib/linux-$KVER [ -d "$DTBDIR" ] || DTBDIR=$ROOTFS/boot find $ROOTFS/lib/modules \ -name \*.ko.gz -exec gunzip {} + \ -o -name \*.ko.xz -exec unxz {} + \ -o -name \*.ko.zst -exec unzstd --rm {} + \ -o ! -name '' # don't fail if no files found. busybox find doesn't support -true $MOCK depmod -b $ROOTFS "$KVER" STAGING=$tmpdir/boot MODLOOP=$tmpdir/modloop MODIMG=modloop-$FLAVOR mkdir $MODLOOP $STAGING cp -a $ROOTFS/lib/modules $MODLOOP mkdir -p $MODLOOP/modules/firmware find $ROOTFS/lib/modules -type f -name "*.ko*" | xargs modinfo -k $KVER -F firmware | sort -u | while read FW; do for f in "$ROOTFS"/lib/firmware/$FW "$ROOTFS"/lib/firmware/$FW.xz "$ROOTFS"/lib/firmware/$FW.zst; do if ! [ -e "$f" ]; then continue fi install -pD "$f" "$MODLOOP/modules/firmware/${f#*/lib/firmware}" # copy also all potentially associated files f=${f%.zst} f=${f%.xz} for _file in "${f%.*}".*; do install -pD "$_file" "$MODLOOP/modules/firmware/${_file#*/lib/firmware/}" done done done # install extra firmware files in modloop (i.e. not detected by modinfo) for _xfw in $modloopfw; do if [ -f "$ROOTFS/lib/firmware/$_xfw" ]; then install -pD "$ROOTFS/lib/firmware/$_xfw" \ "$MODLOOP"/modules/firmware/"$_xfw" else echo "Warning: extra firmware \"$_xfw\" not found!" fi done # wireless regulatory db if [ -e "$ROOTFS"/lib/modules/*/kernel/net/wireless/cfg80211.ko* ]; then _apk add --no-scripts wireless-regdb for _regdb in "$ROOTFS"/lib/firmware/regulatory.db*; do [ -e "$_regdb" ] && install -pD "$_regdb" "$MODLOOP"/modules/firmware/"${_regdb##*/}" done fi # include bluetooth firmware in modloop if [ -e "$ROOTFS"/lib/modules/*/kernel/drivers/bluetooth/btbcm.ko* ]; then for _btfw in "$ROOTFS"/lib/firmware/brcm/*.hcd*; do install -pD "$_btfw" \ "$MODLOOP"/modules/firmware/brcm/"${_btfw##*/}" done fi case $ARCH in armhf) mksfs="-Xbcj arm" ;; armv7|aarch64) mksfs="-Xbcj arm,armthumb" ;; x86|x86_64) mksfs="-Xbcj x86" ;; *) mksfs= esac mksquashfs $MODLOOP "$STAGING/$MODIMG" $MKSQUASHFS_OPTS -comp xz -exit-on-error $mksfs if [ -n "$MODLOOPSIGN" ]; then sign_modloop "$STAGING/$MODIMG" MKINITFS_ARGS="$MKINITFS_ARGS -s $tmpdir/$MODLOOPSIG" fi $MOCK mkinitfs $MKINITFS_ARGS -q -b $ROOTFS -F "$features base squashfs" \ -o "$STAGING/initramfs-$FLAVOR" "$KVER" for file in System.map config vmlinuz; do cp "$BOOT/$file-$KVER" "$STAGING" 2>/dev/null \ || cp "$BOOT/$file-$FLAVOR" "$STAGING" 2>/dev/null \ || cp "$BOOT/$file" "$STAGING" 2>/dev/null \ || { echo "Failed to copy $file-$KVER, $file-$FLAVOR or $file" >&2; exit 1; } done if [ "$MNTDIR" ]; then ignore_sigs umount /.modloop remount -w fi mkdir -p "$DESTDIR"/${MEDIA:+boot/} mv $STAGING/* "$DESTDIR"/${MEDIA:+boot/} if [ -d "$DTBDIR" ]; then _opwd=$PWD case "$MEDIA,$FLAVOR" in yes,rpi*) _dtb="$DESTDIR/" ;; yes,*) _dtb="$DESTDIR/boot/dtbs-$FLAVOR" ;; *,*) _dtb="$DESTDIR/dtbs/dtbs-$FLAVOR" ;; esac mkdir -p "$_dtb" _dtb=$(realpath "$_dtb") cd "$DTBDIR" find -type f \( -name "*.dtb" -o -name "*.dtbo" \) | cpio -pudm "$_dtb" 2> /dev/null cd "$_opwd" fi if [ "$MNTDIR" ]; then set +e sync remount -r mount -o loop "$DESTDIR/$MODIMG" /.modloop fi exit 0 -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1yHJxQgsHQREclQu4Ohe qxTxd1tHcNnvnQTu/UrTky8wWvgXT+jpveroeWWnzmsYlDI93eLI2ORakxb3gA2O Q0Ry4ws8vhaxLQGC74uQR5+/yYrLuTKydFzuPaS1dK19qJPXB8GMdmFOijnXX4SA jixuHLe1WW7kZVtjL7nufvpXkWBGjsfrvskdNA/5MfxAeBbqPgaq0QMEfxMAn6/R L5kNepi/Vr4S39Xvf2DzWkTLEK8pcnjNkt9/aafhWqFVW7m3HCAII6h/qlQNQKSo GuH34Q8GsFG30izUENV9avY7hSLq7nggsvknlNBZtFUcmGoQrtx3FmyYsIC8/R+B ywIDAQAB -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvNijDxJ8kloskKQpJdx+ mTMVFFUGDoDCbulnhZMJoKNkSuZOzBoFC94omYPtxnIcBdWBGnrm6ncbKRlR+6oy DO0W7c44uHKCFGFqBhDasdI4RCYP+fcIX/lyMh6MLbOxqS22TwSLhCVjTyJeeH7K aA7vqk+QSsF4TGbYzQDDpg7+6aAcNzg6InNePaywA6hbT0JXbxnDWsB+2/LLSF2G mnhJlJrWB1WGjkz23ONIWk85W4S0XB/ewDefd4Ly/zyIciastA7Zqnh7p3Ody6Q0 sS2MJzo7p3os1smGjUF158s6m/JbVh4DN6YIsxwl2OjDOz9R0OycfJSDaBVIGZzg cQIDAQAB -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr8s1q88XpuJWLCZALdKj lN8wg2ePB2T9aIcaxryYE/Jkmtu+ZQ5zKq6BT3y/udt5jAsMrhHTwroOjIsF9DeG e8Y3vjz+Hh4L8a7hZDaw8jy3CPag47L7nsZFwQOIo2Cl1SnzUc6/owoyjRU7ab0p iWG5HK8IfiybRbZxnEbNAfT4R53hyI6z5FhyXGS2Ld8zCoU/R4E1P0CUuXKEN4p0 64dyeUoOLXEWHjgKiU1mElIQj3k/IF02W89gDj285YgwqA49deLUM7QOd53QLnx+ xrIrPv3A+eyXMFgexNwCKQU9ZdmWa00MjjHlegSGK8Y2NPnRoXhzqSP9T9i2HiXL VQIDAQAB -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwlzMkl7b5PBdfMzGdCT0 cGloRr5xGgVmsdq5EtJvFkFAiN8Ac9MCFy/vAFmS8/7ZaGOXoCDWbYVLTLOO2qtX yHRl+7fJVh2N6qrDDFPmdgCi8NaE+3rITWXGrrQ1spJ0B6HIzTDNEjRKnD4xyg4j g01FMcJTU6E+V2JBY45CKN9dWr1JDM/nei/Pf0byBJlMp/mSSfjodykmz4Oe13xB Ca1WTwgFykKYthoLGYrmo+LKIGpMoeEbY1kuUe04UiDe47l6Oggwnl+8XD1MeRWY sWgj8sF4dTcSfCMavK4zHRFFQbGp/YFJ/Ww6U9lA3Vq0wyEI6MCMQnoSMFwrbgZw wwIDAQAB -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3v8/ye/V/t5xf4JiXLXa hWFRozsnmn3hobON20GdmkrzKzO/eUqPOKTpg2GtvBhK30fu5oY5uN2ORiv2Y2ht eLiZ9HVz3XP8Fm9frha60B7KNu66FO5P2o3i+E+DWTPqqPcCG6t4Znk2BypILcit wiPKTsgbBQR2qo/cO01eLLdt6oOzAaF94NH0656kvRewdo6HG4urbO46tCAizvCR CA7KGFMyad8WdKkTjxh8YLDLoOCtoZmXmQAiwfRe9pKXRH/XXGop8SYptLqyVVQ+ tegOD9wRs2tOlgcLx4F/uMzHN7uoho6okBPiifRX+Pf38Vx+ozXh056tjmdZkCaV aQIDAQAB -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoSPnuAGKtRIS5fEgYPXD 8pSGvKAmIv3A08LBViDUe+YwhilSHbYXUEAcSH1KZvOo1WT1x2FNEPBEFEFU1Eyc +qGzbA03UFgBNvArurHQ5Z/GngGqE7IarSQFSoqewYRtFSfp+TL9CUNBvM0rT7vz 2eMu3/wWG+CBmb92lkmyWwC1WSWFKO3x8w+Br2IFWvAZqHRt8oiG5QtYvcZL6jym Y8T6sgdDlj+Y+wWaLHs9Fc+7vBuyK9C4O1ORdMPW15qVSl4Lc2Wu1QVwRiKnmA+c DsH/m7kDNRHM7TjWnuj+nrBOKAHzYquiu5iB3Qmx+0gwnrSVf27Arc3ozUmmJbLj zQIDAQAB -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvBxJN9ErBgdRcPr5g4hV qyUSGZEKuvQliq2Z9SRHLh2J43+EdB6A+yzVvLnzcHVpBJ+BZ9RV30EM9guck9sh r+bryZcRHyjG2wiIEoduxF2a8KeWeQH7QlpwGhuobo1+gA8L0AGImiA6UP3LOirl I0G2+iaKZowME8/tydww4jx5vG132JCOScMjTalRsYZYJcjFbebQQolpqRaGB4iG WqhytWQGWuKiB1A22wjmIYf3t96l1Mp+FmM2URPxD1gk/BIBnX7ew+2gWppXOK9j 1BJpo0/HaX5XoZ/uMqISAAtgHZAqq+g3IUPouxTphgYQRTRYpz2COw3NF43VYQrR bQIDAQAB -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwXEJ8uVwJPODshTkf2BH pH5fVVDppOa974+IQJsZDmGd3Ny0dcd+WwYUhNFUW3bAfc3/egaMWCaprfaHn+oS 4ddbOFgbX8JCHdru/QMAAU0aEWSMybfJGA569c38fNUF/puX6XK/y0lD2SS3YQ/a oJ5jb5eNrQGR1HHMAd0G9WC4JeZ6WkVTkrcOw55F00aUPGEjejreXBerhTyFdabo dSfc1TILWIYD742Lkm82UBOPsOSdSfOdsMOOkSXxhdCJuCQQ70DHkw7Epy9r+X33 ybI4r1cARcV75OviyhD8CFhAlapLKaYnRFqFxlA515e6h8i8ih/v3MSEW17cCK0b QwIDAQAB -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwR4uJVtJOnOFGchnMW5Y j5/waBdG1u5BTMlH+iQMcV5+VgWhmpZHJCBz3ocD+0IGk2I68S5TDOHec/GSC0lv 6R9o6F7h429GmgPgVKQsc8mPTPtbjJMuLLs4xKc+viCplXc0Nc0ZoHmCH4da6fCV tdpHQjVe6F9zjdquZ4RjV6R6JTiN9v924dGMAkbW/xXmamtz51FzondKC52Gh8Mo /oA0/T0KsCMCi7tb4QNQUYrf+Xcha9uus4ww1kWNZyfXJB87a2kORLiWMfs2IBBJ TmZ2Fnk0JnHDb8Oknxd9PvJPT0mvyT8DA+KIAPqNvOjUXP4bnjEHJcoCP9S5HkGC IQIDAQAB -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAutQkua2CAig4VFSJ7v54 ALyu/J1WB3oni7qwCZD3veURw7HxpNAj9hR+S5N/pNeZgubQvJWyaPuQDm7PTs1+ tFGiYNfAsiibX6Rv0wci3M+z2XEVAeR9Vzg6v4qoofDyoTbovn2LztaNEjTkB+oK tlvpNhg1zhou0jDVYFniEXvzjckxswHVb8cT0OMTKHALyLPrPOJzVtM9C1ew2Nnc 3848xLiApMu3NBk0JqfcS3Bo5Y2b1FRVBvdt+2gFoKZix1MnZdAEZ8xQzL/a0YS5 Hd0wj5+EEKHfOd3A75uPa/WQmA+o0cBFfrzm69QDcSJSwGpzWrD1ScH3AK8nWvoj v7e9gukK/9yl1b4fQQ00vttwJPSgm9EnfPHLAtgXkRloI27H6/PuLoNvSAMQwuCD hQRlyGLPBETKkHeodfLoULjhDi1K2gKJTMhtbnUcAA7nEphkMhPWkBpgFdrH+5z4 Lxy+3ek0cqcI7K68EtrffU8jtUj9LFTUC8dERaIBs7NgQ/LfDbDfGh9g6qVj1hZl k9aaIPTm/xsi8v3u+0qaq7KzIBc9s59JOoA8TlpOaYdVgSQhHHLBaahOuAigH+VI isbC9vmqsThF2QdDtQt37keuqoda2E6sL7PUvIyVXDRfwX7uMDjlzTxHTymvq2Ck htBqojBnThmjJQFgZXocHG8CAwEAAQ== -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlEyxkHggKCXC2Wf5Mzx4 nZLFZvU2bgcA3exfNPO/g1YunKfQY+Jg4fr6tJUUTZ3XZUrhmLNWvpvSwDS19ZmC IXOu0+V94aNgnhMsk9rr59I8qcbsQGIBoHzuAl8NzZCgdbEXkiY90w1skUw8J57z qCsMBydAueMXuWqF5nGtYbi5vHwK42PffpiZ7G5Kjwn8nYMW5IZdL6ZnMEVJUWC9 I4waeKg0yskczYDmZUEAtrn3laX9677ToCpiKrvmZYjlGl0BaGp3cxggP2xaDbUq qfFxWNgvUAb3pXD09JM6Mt6HSIJaFc9vQbrKB9KT515y763j5CC2KUsilszKi3mB HYe5PoebdjS7D1Oh+tRqfegU2IImzSwW3iwA7PJvefFuc/kNIijfS/gH/cAqAK6z bhdOtE/zc7TtqW2Wn5Y03jIZdtm12CxSxwgtCF1NPyEWyIxAQUX9ACb3M0FAZ61n fpPrvwTaIIxxZ01L3IzPLpbc44x/DhJIEU+iDt6IMTrHOphD9MCG4631eIdB0H1b 6zbNX1CXTsafqHRFV9XmYYIeOMggmd90s3xIbEujA6HKNP/gwzO6CDJ+nHFDEqoF SkxRdTkEqjTjVKieURW7Swv7zpfu5PrsrrkyGnsRrBJJzXlm2FOOxnbI2iSL1B5F rO5kbUxFeZUIDq+7Yv4kLWcCAwEAAQ== -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnC+bR4bHf/L6QdU4puhQ gl1MHePszRC38bzvVFDUJsmCaMCL2suCs2A2yxAgGb9pu9AJYLAmxQC4mM3jNqhg /E7yuaBbek3O02zN/ctvflJ250wZCy+z0ZGIp1ak6pu1j14IwHokl9j36zNfGtfv ADVOcdpWITFFlPqwq1qt/H3UsKVmtiF3BNWWTeUEQwKvlU8ymxgS99yn0+4OPyNT L3EUeS+NQJtDS01unau0t7LnjUXn+XIneWny8bIYOQCuVR6s/gpIGuhBaUqwaJOw 7jkJZYF2Ij7uPb4b5/R3vX2FfxxqEHqssFSg8FFUNTZz3qNZs0CRVyfA972g9WkJ hPfn31pQYil4QGRibCMIeU27YAEjXoqfJKEPh4UWMQsQLrEfdGfb8VgwrPbniGfU L3jKJR3VAafL9330iawzVQDlIlwGl6u77gEXMl9K0pfazunYhAp+BMP+9ot5ckK+ osmrqj11qMESsAj083GeFdfV3pXEIwUytaB0AKEht9DbqUfiE/oeZ/LAXgySMtVC sbC4ESmgVeY2xSBIJdDyUap7FR49GGrw0W49NUv9gRgQtGGaNVQQO9oGL2PBC41P iWF9GLoX30HIz1P8PF/cZvicSSPkQf2Z6TV+t0ebdGNS5DjapdnCrq8m9Z0pyKsQ uxAL2a7zX8l5i1CZh1ycUGsCAwEAAQ== -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0MfCDrhODRCIxR9Dep1s eXafh5CE5BrF4WbCgCsevyPIdvTeyIaW4vmO3bbG4VzhogDZju+R3IQYFuhoXP5v Y+zYJGnwrgz3r5wYAvPnLEs1+dtDKYOgJXQj+wLJBW1mzRDL8FoRXOe5iRmn1EFS wZ1DoUvyu7/J5r0itKicZp3QKED6YoilXed+1vnS4Sk0mzN4smuMR9eO1mMCqNp9 9KTfRDHTbakIHwasECCXCp50uXdoW6ig/xUAFanpm9LtK6jctNDbXDhQmgvAaLXZ LvFqoaYJ/CvWkyYCgL6qxvMvVmPoRv7OPcyni4xR/WgWa0MSaEWjgPx3+yj9fiMA 1S02pFWFDOr5OUF/O4YhFJvUCOtVsUPPfA/Lj6faL0h5QI9mQhy5Zb9TTaS9jB6p Lw7u0dJlrjFedk8KTJdFCcaGYHP6kNPnOxMylcB/5WcztXZVQD5WpCicGNBxCGMm W64SgrV7M07gQfL/32QLsdqPUf0i8hoVD8wfQ3EpbQzv6Fk1Cn90bZqZafg8XWGY wddhkXk7egrr23Djv37V2okjzdqoyLBYBxMz63qQzFoAVv5VoY2NDTbXYUYytOvG GJ1afYDRVWrExCech1mX5ZVUB1br6WM+psFLJFoBFl6mDmiYt0vMYBddKISsvwLl IJQkzDwtXzT2cSjoj3T5QekCAwEAAQ== -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvaaoSLab+IluixwKV5Od 0gib2YurjPatGIbn5Ov2DLUFYiebj2oJINXJSwUOO+4WcuHFEqiL/1rya+k5hLZt hnPL1tn6QD4rESznvGSasRCQNT2vS/oyZbTYJRyAtFkEYLlq0t3S3xBxxHWuvIf0 qVxVNYpQWyM3N9RIeYBR/euXKJXileSHk/uq1I5wTC0XBIHWcthczGN0m9wBEiWS 0m3cnPk4q0Ea8mUJ91Rqob19qETz6VbSPYYpZk3qOycjKosuwcuzoMpwU8KRiMFd 5LHtX0Hx85ghGsWDVtS0c0+aJa4lOMGvJCAOvDfqvODv7gKlCXUpgumGpLdTmaZ8 1RwqspAe3IqBcdKTqRD4m2mSg23nVx2FAY3cjFvZQtfooT7q1ItRV5RgH6FhQSl7 +6YIMJ1Bf8AAlLdRLpg+doOUGcEn+pkDiHFgI8ylH1LKyFKw+eXaAml/7DaWZk1d dqggwhXOhc/UUZFQuQQ8A8zpA13PcbC05XxN2hyP93tCEtyynMLVPtrRwDnHxFKa qKzs3rMDXPSXRn3ZZTdKH3069ApkEjQdpcwUh+EmJ1Ve/5cdtzT6kKWCjKBFZP/s 91MlRrX2BTRdHaU5QJkUheUtakwxuHrdah2F94lRmsnQlpPr2YseJu6sIE+Dnx4M CfhdVbQL2w54R645nlnohu8CAwEAAQ== -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq0BFD1D4lIxQcsqEpQzU pNCYM3aP1V/fxxVdT4DWvSI53JHTwHQamKdMWtEXetWVbP5zSROniYKFXd/xrD9X 0jiGHey3lEtylXRIPxe5s+wXoCmNLcJVnvTcDtwx/ne2NLHxp76lyc25At+6RgE6 ADjLVuoD7M4IFDkAsd8UQ8zM0Dww9SylIk/wgV3ZkifecvgUQRagrNUdUjR56EBZ raQrev4hhzOgwelT0kXCu3snbUuNY/lU53CoTzfBJ5UfEJ5pMw1ij6X0r5S9IVsy KLWH1hiO0NzU2c8ViUYCly4Fe9xMTFc6u2dy/dxf6FwERfGzETQxqZvSfrRX+GLj /QZAXiPg5178hT/m0Y3z5IGenIC/80Z9NCi+byF1WuJlzKjDcF/TU72zk0+PNM/H Kuppf3JT4DyjiVzNC5YoWJT2QRMS9KLP5iKCSThwVceEEg5HfhQBRT9M6KIcFLSs mFjx9kNEEmc1E8hl5IR3+3Ry8G5/bTIIruz14jgeY9u5jhL8Vyyvo41jgt9sLHR1 /J1TxKfkgksYev7PoX6/ZzJ1ksWKZY5NFoDXTNYUgzFUTOoEaOg3BAQKadb3Qbbq XIrxmPBdgrn9QI7NCgfnAY3Tb4EEjs3ON/BNyEhUENcXOH6I1NbcuBQ7g9P73kE4 VORdoc8MdJ5eoKBpO8Ww8HECAwEAAQ== -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyduVzi1mWm+lYo2Tqt/0 XkCIWrDNP1QBMVPrE0/ZlU2bCGSoo2Z9FHQKz/mTyMRlhNqTfhJ5qU3U9XlyGOPJ piM+b91g26pnpXJ2Q2kOypSgOMOPA4cQ42PkHBEqhuzssfj9t7x47ppS94bboh46 xLSDRff/NAbtwTpvhStV3URYkxFG++cKGGa5MPXBrxIp+iZf9GnuxVdST5PGiVGP ODL/b69sPJQNbJHVquqUTOh5Ry8uuD2WZuXfKf7/C0jC/ie9m2+0CttNu9tMciGM EyKG1/Xhk5iIWO43m4SrrT2WkFlcZ1z2JSf9Pjm4C2+HovYpihwwdM/OdP8Xmsnr DzVB4YvQiW+IHBjStHVuyiZWc+JsgEPJzisNY0Wyc/kNyNtqVKpX6dRhMLanLmy+ f53cCSI05KPQAcGj6tdL+D60uKDkt+FsDa0BTAobZ31OsFVid0vCXtsbplNhW1IF HwsGXBTVcfXg44RLyL8Lk/2dQxDHNHzAUslJXzPxaHBLmt++2COa2EI1iWlvtznk Ok9WP8SOAIj+xdqoiHcC4j72BOVVgiITIJNHrbppZCq6qPR+fgXmXa+sDcGh30m6 9Wpbr28kLMSHiENCWTdsFij+NQTd5S47H7XTROHnalYDuF1RpS+DpQidT5tUimaT JZDr++FjKrnnijbyNF8b98UCAwEAAQ== -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnpUpyWDWjlUk3smlWeA0 lIMW+oJ38t92CRLHH3IqRhyECBRW0d0aRGtq7TY8PmxjjvBZrxTNDpJT6KUk4LRm a6A6IuAI7QnNK8SJqM0DLzlpygd7GJf8ZL9SoHSH+gFsYF67Cpooz/YDqWrlN7Vw tO00s0B+eXy+PCXYU7VSfuWFGK8TGEv6HfGMALLjhqMManyvfp8hz3ubN1rK3c8C US/ilRh1qckdbtPvoDPhSbTDmfU1g/EfRSIEXBrIMLg9ka/XB9PvWRrekrppnQzP hP9YE3x/wbFc5QqQWiRCYyQl/rgIMOXvIxhkfe8H5n1Et4VAorkpEAXdsfN8KSVv LSMazVlLp9GYq5SUpqYX3KnxdWBgN7BJoZ4sltsTpHQ/34SXWfu3UmyUveWj7wp0 x9hwsPirVI00EEea9AbP7NM2rAyu6ukcm4m6ATd2DZJIViq2es6m60AE6SMCmrQF wmk4H/kdQgeAELVfGOm2VyJ3z69fQuywz7xu27S6zTKi05Qlnohxol4wVb6OB7qG LPRtK9ObgzRo/OPumyXqlzAi/Yvyd1ZQk8labZps3e16bQp8+pVPiumWioMFJDWV GZjCmyMSU8V6MB6njbgLHoyg2LCukCAeSjbPGGGYhnKLm1AKSoJh3IpZuqcKCk5C 8CM1S15HxV78s9dFntEqIokCAwEAAQ== -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtfB12w4ZgqsXWZDfUAV/ 6Y4aHUKIu3q4SXrNZ7CXF9nXoAVYrS7NAxJdAodsY3vPCN0g5O8DFXR+390LdOuQ +HsGKCc1k5tX5ZXld37EZNTNSbR0k+NKhd9h6X3u6wqPOx7SIKxwAQR8qeeFq4pP rt9GAGlxtuYgzIIcKJPwE0dZlcBCg+GnptCUZXp/38BP1eYC+xTXSL6Muq1etYfg odXdb7Yl+2h1IHuOwo5rjgY5kpY7GcAs8AjGk3lDD/av60OTYccknH0NCVSmPoXK vrxDBOn0LQRNBLcAfnTKgHrzy0Q5h4TNkkyTgxkoQw5ObDk9nnabTxql732yy9BY s+hM9+dSFO1HKeVXreYSA2n1ndF18YAvAumzgyqzB7I4pMHXq1kC/8bONMJxwSkS Ym6CoXKyavp7RqGMyeVpRC7tV+blkrrUml0BwNkxE+XnwDRB3xDV6hqgWe0XrifD YTfvd9ScZQP83ip0r4IKlq4GMv/R5shcCRJSkSZ6QSGshH40JYSoiwJf5FHbj9ND 7do0UAqebWo4yNx63j/wb2ULorW3AClv0BCFSdPsIrCStiGdpgJDBR2P2NZOCob3 G9uMj+wJD6JJg2nWqNJxkANXX37Qf8plgzssrhrgOvB0fjjS7GYhfkfmZTJ0wPOw A8+KzFseBh4UFGgue78KwgkCAwEAAQ== -----END PUBLIC KEY----- 3.21.2 Welcome to Alpine Linux 3.21 Kernel \r on an \m (\l) https://secdb.alpinelinux.org/v3.21/main.json https://secdb.alpinelinux.org/v3.21/community.json NAME="Alpine Linux" ID=alpine VERSION_ID=3.21.2 PRETTY_NAME="Alpine Linux v3.21" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues" # This file specifies the Certificate Transparency logs # that are to be trusted. # Google's list of logs can be found here: # www.certificate-transparency.org/known-logs # A Python program to convert the log list to OpenSSL's format can be # found here: # https://github.com/google/certificate-transparency/blob/master/python/utilities/log_list/print_log_list.py # Use the "--openssl_output" flag. # This file specifies the Certificate Transparency logs # that are to be trusted. # Google's list of logs can be found here: # www.certificate-transparency.org/known-logs # A Python program to convert the log list to OpenSSL's format can be # found here: # https://github.com/google/certificate-transparency/blob/master/python/utilities/log_list/print_log_list.py # Use the "--openssl_output" flag. # # OpenSSL example configuration file. # See doc/man5/config.pod for more info. # # This is mostly being used for generation of certificate requests, # but may be used for auto loading of providers # Note that you can include other files from the main configuration # file using the .include directive. #.include filename # This definition stops the following lines choking if HOME isn't # defined. HOME = . # Use this in order to automatically load providers. openssl_conf = openssl_init # Comment out the next line to ignore configuration errors config_diagnostics = 1 # Extra OBJECT IDENTIFIER info: # oid_file = $ENV::HOME/.oid oid_section = new_oids # To use this configuration file with the "-extfile" option of the # "openssl x509" utility, name here the section containing the # X.509v3 extensions to use: # extensions = # (Alternatively, use a configuration file that has only # X.509v3 extensions in its main [= default] section.) [ new_oids ] # We can add new OIDs in here for use by 'ca', 'req' and 'ts'. # Add a simple OID like this: # testoid1=1.2.3.4 # Or use config file substitution like this: # testoid2=${testoid1}.5.6 # Policies used by the TSA examples. tsa_policy1 = 1.2.3.4.1 tsa_policy2 = 1.2.3.4.5.6 tsa_policy3 = 1.2.3.4.5.7 # For FIPS # Optionally include a file that is generated by the OpenSSL fipsinstall # application. This file contains configuration data required by the OpenSSL # fips provider. It contains a named section e.g. [fips_sect] which is # referenced from the [provider_sect] below. # Refer to the OpenSSL security policy for more information. # .include fipsmodule.cnf [openssl_init] providers = provider_sect # List of providers to load [provider_sect] default = default_sect # The fips section name should match the section name inside the # included fipsmodule.cnf. # fips = fips_sect # If no providers are activated explicitly, the default one is activated implicitly. # See man 7 OSSL_PROVIDER-default for more details. # # If you add a section explicitly activating any other provider(s), you most # probably need to explicitly activate the default provider, otherwise it # becomes unavailable in openssl. As a consequence applications depending on # OpenSSL may not work correctly which could lead to significant system # problems including inability to remotely access the system. [default_sect] # activate = 1 #################################################################### [ ca ] default_ca = CA_default # The default ca section #################################################################### [ CA_default ] dir = ./demoCA # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir/crl # Where the issued crl are kept database = $dir/index.txt # database index file. #unique_subject = no # Set to 'no' to allow creation of # several certs with same subject. new_certs_dir = $dir/newcerts # default place for new certs. certificate = $dir/cacert.pem # The CA certificate serial = $dir/serial # The current serial number crlnumber = $dir/crlnumber # the current crl number # must be commented out to leave a V1 CRL crl = $dir/crl.pem # The current CRL private_key = $dir/private/cakey.pem # The private key x509_extensions = usr_cert # The extensions to add to the cert # Comment out the following two lines for the "traditional" # (and highly broken) format. name_opt = ca_default # Subject Name options cert_opt = ca_default # Certificate field options # Extension copying option: use with caution. # copy_extensions = copy # Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs # so this is commented out by default to leave a V1 CRL. # crlnumber must also be commented out to leave a V1 CRL. # crl_extensions = crl_ext default_days = 365 # how long to certify for default_crl_days= 30 # how long before next CRL default_md = default # use public key default MD preserve = no # keep passed DN ordering # A few difference way of specifying how similar the request should look # For type CA, the listed attributes must be the same, and the optional # and supplied fields are just that :-) policy = policy_match # For the CA policy [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional # For the 'anything' policy # At this point in time, you must list all acceptable 'object' # types. [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional #################################################################### [ req ] default_bits = 2048 default_keyfile = privkey.pem distinguished_name = req_distinguished_name attributes = req_attributes x509_extensions = v3_ca # The extensions to add to the self signed cert # Passwords for private keys if not present they will be prompted for # input_password = secret # output_password = secret # This sets a mask for permitted string types. There are several options. # default: PrintableString, T61String, BMPString. # pkix : PrintableString, BMPString (PKIX recommendation before 2004) # utf8only: only UTF8Strings (PKIX recommendation after 2004). # nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). # MASK:XXXX a literal mask value. # WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings. string_mask = utf8only # req_extensions = v3_req # The extensions to add to a certificate request [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = AU countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Some-State localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Internet Widgits Pty Ltd # we can do this but it is not needed normally :-) #1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = World Wide Web Pty Ltd organizationalUnitName = Organizational Unit Name (eg, section) #organizationalUnitName_default = commonName = Common Name (e.g. server FQDN or YOUR name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 # SET-ex3 = SET extension number 3 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 unstructuredName = An optional company name [ usr_cert ] # These extensions are added when 'ca' signs a request. # This goes against PKIX guidelines but some CAs do it and some software # requires this to avoid interpreting an end user certificate as a CA. basicConstraints=CA:FALSE # This is typical in keyUsage for a client certificate. # keyUsage = nonRepudiation, digitalSignature, keyEncipherment # PKIX recommendations harmless if included in all certificates. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer # This stuff is for subjectAltName and issuerAltname. # Import the email address. # subjectAltName=email:copy # An alternative to produce certificates that aren't # deprecated according to PKIX. # subjectAltName=email:move # Copy subject details # issuerAltName=issuer:copy # This is required for TSA certificates. # extendedKeyUsage = critical,timeStamping [ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ v3_ca ] # Extensions for a typical CA # PKIX recommendation. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer basicConstraints = critical,CA:true # Key usage: this is typical for a CA certificate. However since it will # prevent it being used as an test self-signed certificate it is best # left out by default. # keyUsage = cRLSign, keyCertSign # Include email address in subject alt name: another PKIX recommendation # subjectAltName=email:copy # Copy issuer details # issuerAltName=issuer:copy # DER hex encoding of an extension: beware experts only! # obj=DER:02:03 # Where 'obj' is a standard or added object # You can even override a supported extension: # basicConstraints= critical, DER:30:03:01:01:FF [ crl_ext ] # CRL extensions. # Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. # issuerAltName=issuer:copy authorityKeyIdentifier=keyid:always [ proxy_cert_ext ] # These extensions should be added when creating a proxy certificate # This goes against PKIX guidelines but some CAs do it and some software # requires this to avoid interpreting an end user certificate as a CA. basicConstraints=CA:FALSE # This is typical in keyUsage for a client certificate. # keyUsage = nonRepudiation, digitalSignature, keyEncipherment # PKIX recommendations harmless if included in all certificates. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer # This stuff is for subjectAltName and issuerAltname. # Import the email address. # subjectAltName=email:copy # An alternative to produce certificates that aren't # deprecated according to PKIX. # subjectAltName=email:move # Copy subject details # issuerAltName=issuer:copy # This really needs to be in place for it to be a proxy certificate. proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo #################################################################### [ tsa ] default_tsa = tsa_config1 # the default TSA section [ tsa_config1 ] # These are used by the TSA reply generation only. dir = ./demoCA # TSA root directory serial = $dir/tsaserial # The current serial number (mandatory) crypto_device = builtin # OpenSSL engine to use for signing signer_cert = $dir/tsacert.pem # The TSA signing certificate # (optional) certs = $dir/cacert.pem # Certificate chain to include in reply # (optional) signer_key = $dir/private/tsakey.pem # The TSA private key (optional) signer_digest = sha256 # Signing digest to use. (Optional) default_policy = tsa_policy1 # Policy if request did not specify it # (optional) other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional) digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory) accuracy = secs:1, millisecs:500, microsecs:100 # (optional) clock_precision_digits = 0 # number of digits after dot. (optional) ordering = yes # Is ordering defined for timestamps? # (optional, default: no) tsa_name = yes # Must the TSA name be included in the reply? # (optional, default: no) ess_cert_id_chain = no # Must the ESS cert id chain be included? # (optional, default: no) ess_cert_id_alg = sha256 # algorithm to compute certificate # identifier (optional, default: sha256) [insta] # CMP using Insta Demo CA # Message transfer server = pki.certificate.fi:8700 # proxy = # set this as far as needed, e.g., http://192.168.1.1:8080 # tls_use = 0 path = pkix/ # Server authentication recipient = "/C=FI/O=Insta Demo/CN=Insta Demo CA" # or set srvcert or issuer ignore_keyusage = 1 # potentially needed quirk unprotected_errors = 1 # potentially needed quirk extracertsout = insta.extracerts.pem # Client authentication ref = 3078 # user identification secret = pass:insta # can be used for both client and server side # Generic message options cmd = ir # default operation, can be overridden on cmd line with, e.g., kur # Certificate enrollment subject = "/CN=openssl-cmp-test" newkey = insta.priv.pem out_trusted = apps/insta.ca.crt # does not include keyUsage digitalSignature certout = insta.cert.pem [pbm] # Password-based protection for Insta CA # Server and client authentication ref = $insta::ref # 3078 secret = $insta::secret # pass:insta [signature] # Signature-based protection for Insta CA # Server authentication trusted = $insta::out_trusted # apps/insta.ca.crt # Client authentication secret = # disable PBM key = $insta::newkey # insta.priv.pem cert = $insta::certout # insta.cert.pem [ir] cmd = ir [cr] cmd = cr [kur] # Certificate update cmd = kur oldcert = $insta::certout # insta.cert.pem [rr] # Certificate revocation cmd = rr oldcert = $insta::certout # insta.cert.pem # # OpenSSL example configuration file. # See doc/man5/config.pod for more info. # # This is mostly being used for generation of certificate requests, # but may be used for auto loading of providers # Note that you can include other files from the main configuration # file using the .include directive. #.include filename # This definition stops the following lines choking if HOME isn't # defined. HOME = . # Use this in order to automatically load providers. openssl_conf = openssl_init # Comment out the next line to ignore configuration errors config_diagnostics = 1 # Extra OBJECT IDENTIFIER info: # oid_file = $ENV::HOME/.oid oid_section = new_oids # To use this configuration file with the "-extfile" option of the # "openssl x509" utility, name here the section containing the # X.509v3 extensions to use: # extensions = # (Alternatively, use a configuration file that has only # X.509v3 extensions in its main [= default] section.) [ new_oids ] # We can add new OIDs in here for use by 'ca', 'req' and 'ts'. # Add a simple OID like this: # testoid1=1.2.3.4 # Or use config file substitution like this: # testoid2=${testoid1}.5.6 # Policies used by the TSA examples. tsa_policy1 = 1.2.3.4.1 tsa_policy2 = 1.2.3.4.5.6 tsa_policy3 = 1.2.3.4.5.7 # For FIPS # Optionally include a file that is generated by the OpenSSL fipsinstall # application. This file contains configuration data required by the OpenSSL # fips provider. It contains a named section e.g. [fips_sect] which is # referenced from the [provider_sect] below. # Refer to the OpenSSL security policy for more information. # .include fipsmodule.cnf [openssl_init] providers = provider_sect # List of providers to load [provider_sect] default = default_sect # The fips section name should match the section name inside the # included fipsmodule.cnf. # fips = fips_sect # If no providers are activated explicitly, the default one is activated implicitly. # See man 7 OSSL_PROVIDER-default for more details. # # If you add a section explicitly activating any other provider(s), you most # probably need to explicitly activate the default provider, otherwise it # becomes unavailable in openssl. As a consequence applications depending on # OpenSSL may not work correctly which could lead to significant system # problems including inability to remotely access the system. [default_sect] # activate = 1 #################################################################### [ ca ] default_ca = CA_default # The default ca section #################################################################### [ CA_default ] dir = ./demoCA # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir/crl # Where the issued crl are kept database = $dir/index.txt # database index file. #unique_subject = no # Set to 'no' to allow creation of # several certs with same subject. new_certs_dir = $dir/newcerts # default place for new certs. certificate = $dir/cacert.pem # The CA certificate serial = $dir/serial # The current serial number crlnumber = $dir/crlnumber # the current crl number # must be commented out to leave a V1 CRL crl = $dir/crl.pem # The current CRL private_key = $dir/private/cakey.pem # The private key x509_extensions = usr_cert # The extensions to add to the cert # Comment out the following two lines for the "traditional" # (and highly broken) format. name_opt = ca_default # Subject Name options cert_opt = ca_default # Certificate field options # Extension copying option: use with caution. # copy_extensions = copy # Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs # so this is commented out by default to leave a V1 CRL. # crlnumber must also be commented out to leave a V1 CRL. # crl_extensions = crl_ext default_days = 365 # how long to certify for default_crl_days= 30 # how long before next CRL default_md = default # use public key default MD preserve = no # keep passed DN ordering # A few difference way of specifying how similar the request should look # For type CA, the listed attributes must be the same, and the optional # and supplied fields are just that :-) policy = policy_match # For the CA policy [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional # For the 'anything' policy # At this point in time, you must list all acceptable 'object' # types. [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional #################################################################### [ req ] default_bits = 2048 default_keyfile = privkey.pem distinguished_name = req_distinguished_name attributes = req_attributes x509_extensions = v3_ca # The extensions to add to the self signed cert # Passwords for private keys if not present they will be prompted for # input_password = secret # output_password = secret # This sets a mask for permitted string types. There are several options. # default: PrintableString, T61String, BMPString. # pkix : PrintableString, BMPString (PKIX recommendation before 2004) # utf8only: only UTF8Strings (PKIX recommendation after 2004). # nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). # MASK:XXXX a literal mask value. # WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings. string_mask = utf8only # req_extensions = v3_req # The extensions to add to a certificate request [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = AU countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Some-State localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Internet Widgits Pty Ltd # we can do this but it is not needed normally :-) #1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = World Wide Web Pty Ltd organizationalUnitName = Organizational Unit Name (eg, section) #organizationalUnitName_default = commonName = Common Name (e.g. server FQDN or YOUR name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 # SET-ex3 = SET extension number 3 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 unstructuredName = An optional company name [ usr_cert ] # These extensions are added when 'ca' signs a request. # This goes against PKIX guidelines but some CAs do it and some software # requires this to avoid interpreting an end user certificate as a CA. basicConstraints=CA:FALSE # This is typical in keyUsage for a client certificate. # keyUsage = nonRepudiation, digitalSignature, keyEncipherment # PKIX recommendations harmless if included in all certificates. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer # This stuff is for subjectAltName and issuerAltname. # Import the email address. # subjectAltName=email:copy # An alternative to produce certificates that aren't # deprecated according to PKIX. # subjectAltName=email:move # Copy subject details # issuerAltName=issuer:copy # This is required for TSA certificates. # extendedKeyUsage = critical,timeStamping [ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ v3_ca ] # Extensions for a typical CA # PKIX recommendation. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer basicConstraints = critical,CA:true # Key usage: this is typical for a CA certificate. However since it will # prevent it being used as an test self-signed certificate it is best # left out by default. # keyUsage = cRLSign, keyCertSign # Include email address in subject alt name: another PKIX recommendation # subjectAltName=email:copy # Copy issuer details # issuerAltName=issuer:copy # DER hex encoding of an extension: beware experts only! # obj=DER:02:03 # Where 'obj' is a standard or added object # You can even override a supported extension: # basicConstraints= critical, DER:30:03:01:01:FF [ crl_ext ] # CRL extensions. # Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. # issuerAltName=issuer:copy authorityKeyIdentifier=keyid:always [ proxy_cert_ext ] # These extensions should be added when creating a proxy certificate # This goes against PKIX guidelines but some CAs do it and some software # requires this to avoid interpreting an end user certificate as a CA. basicConstraints=CA:FALSE # This is typical in keyUsage for a client certificate. # keyUsage = nonRepudiation, digitalSignature, keyEncipherment # PKIX recommendations harmless if included in all certificates. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer # This stuff is for subjectAltName and issuerAltname. # Import the email address. # subjectAltName=email:copy # An alternative to produce certificates that aren't # deprecated according to PKIX. # subjectAltName=email:move # Copy subject details # issuerAltName=issuer:copy # This really needs to be in place for it to be a proxy certificate. proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo #################################################################### [ tsa ] default_tsa = tsa_config1 # the default TSA section [ tsa_config1 ] # These are used by the TSA reply generation only. dir = ./demoCA # TSA root directory serial = $dir/tsaserial # The current serial number (mandatory) crypto_device = builtin # OpenSSL engine to use for signing signer_cert = $dir/tsacert.pem # The TSA signing certificate # (optional) certs = $dir/cacert.pem # Certificate chain to include in reply # (optional) signer_key = $dir/private/tsakey.pem # The TSA private key (optional) signer_digest = sha256 # Signing digest to use. (Optional) default_policy = tsa_policy1 # Policy if request did not specify it # (optional) other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional) digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory) accuracy = secs:1, millisecs:500, microsecs:100 # (optional) clock_precision_digits = 0 # number of digits after dot. (optional) ordering = yes # Is ordering defined for timestamps? # (optional, default: no) tsa_name = yes # Must the TSA name be included in the reply? # (optional, default: no) ess_cert_id_chain = no # Must the ESS cert id chain be included? # (optional, default: no) ess_cert_id_alg = sha256 # algorithm to compute certificate # identifier (optional, default: sha256) [insta] # CMP using Insta Demo CA # Message transfer server = pki.certificate.fi:8700 # proxy = # set this as far as needed, e.g., http://192.168.1.1:8080 # tls_use = 0 path = pkix/ # Server authentication recipient = "/C=FI/O=Insta Demo/CN=Insta Demo CA" # or set srvcert or issuer ignore_keyusage = 1 # potentially needed quirk unprotected_errors = 1 # potentially needed quirk extracertsout = insta.extracerts.pem # Client authentication ref = 3078 # user identification secret = pass:insta # can be used for both client and server side # Generic message options cmd = ir # default operation, can be overridden on cmd line with, e.g., kur # Certificate enrollment subject = "/CN=openssl-cmp-test" newkey = insta.priv.pem out_trusted = apps/insta.ca.crt # does not include keyUsage digitalSignature certout = insta.cert.pem [pbm] # Password-based protection for Insta CA # Server and client authentication ref = $insta::ref # 3078 secret = $insta::secret # pass:insta [signature] # Signature-based protection for Insta CA # Server authentication trusted = $insta::out_trusted # apps/insta.ca.crt # Client authentication secret = # disable PBM key = $insta::newkey # insta.priv.pem cert = $insta::certout # insta.cert.pem [ir] cmd = ir [cr] cmd = cr [kur] # Certificate update cmd = kur oldcert = $insta::certout # insta.cert.pem [rr] # Certificate revocation cmd = rr oldcert = $insta::certout # insta.cert.pem #!/bin/sh poweroff # enter the cron options CRON_OPTS="-c /etc/crontabs" KLOGD_OPTS="" # Absolut path to the keymap which should be loaded using loadkmap. #KEYMAP="/usr/share/keymaps/xkb/us.map.gz" # By default ntpd runs as a client. Add -l to run as a server on port 123. NTPD_OPTS="-N -p pool.ntp.org" # Set the ntp server here NTP_HOST=pool.ntp.org SYSLOGD_OPTS="-t" #WATCHDOG_OPTS="-t 30" WATCHDOG_DEV="" #!/sbin/openrc-run name="busybox acpid" command="/sbin/acpid" command_args="$ACPID_OPTS -f" pidfile="/run/acpid.pid" command_background=true start_stop_daemon_args="-g wheel -k 027" depend() { need dev localmount after hwdrivers modules keyword -vserver -lxc } #!/sbin/openrc-run name="busybox $RC_SVCNAME" command="/usr/sbin/$SVCNAME" pidfile="/run/$RC_SVCNAME.pid" command_args="$CRON_OPTS -f" command_background=true depend() { need localmount need logger } #!/sbin/openrc-run name="busybox klogd" command="/sbin/klogd" command_args="${KLOGD_OPTS} -n" command_user="klogd" pidfile="/run/klogd.pid" command_background=true capabilities="^cap_syslog" depend() { need clock hostname localmount logger before net keyword -vserver -lxc } #!/sbin/openrc-run description="Applies a keymap for the consoles." depend() { provide keymaps need localmount keyword -openvz -prefix -uml -vserver -xenu -lxc } start() { [ -z "$KEYMAP" ] && return ebegin "Setting keymap" zcat "$KEYMAP" | loadkmap eend $? } stop() { return } #!/sbin/openrc-run name="busybox $RC_SVCNAME" command="/usr/sbin/$RC_SVCNAME" command_args="${NTPD_OPTS:--N -p pool.ntp.org} -n" command_user="ntp" pidfile="/run/$SVCNAME.pid" command_background=true capabilities="^cap_sys_time,^cap_net_bind_service" depend() { need net provide ntp-client use dns } #!/sbin/openrc-run depend() { need net after firewall keyword -vserver -lxc } start() { if [ -z "$NTP_HOST" ] ; then eerror "Please set NTP_HOST in /etc/conf.d/rdate" return 1 fi ebegin "Running busybox rdate" rdate "$NTP_HOST" eend $? } #!/sbin/openrc-run description="Message logging system" name="busybox syslog" command="/sbin/syslogd" command_args="${SYSLOGD_OPTS} -n" pidfile="/run/syslogd.pid" command_background=true start_stop_daemon_args="-g wheel -k 027" depend() { need clock hostname localmount provide logger } #!/sbin/openrc-run name="busybox watchdog" command="/sbin/watchdog" command_args="${WATCHDOG_OPTS} -F ${WATCHDOG_DEV}" pidfile="/run/watchdog.pid" command_background=true depend() { need dev after hwdrivers } start_pre() { if ! [ -n "$WATCHDOG_DEV" ]; then eerror "WATCHDOG_DEV is not set" return 1 fi } #!/bin/sh scan_dirs() { scanelf -qS "$@" | while read SONAME FILE; do TARGET="${FILE##*/}" LINK="${FILE%/*}/$SONAME" case "$FILE" in /lib/*|/usr/lib/*|/usr/local/lib/*) ;; *) [ -h "$LINK" -o ! -e "$LINK" ] && ln -sf "$TARGET" "$LINK" esac done return 0 } # eat ldconfig options while getopts "nNvXvf:C:r:" opt; do : done shift $(( $OPTIND - 1 )) [ $# -gt 0 ] && scan_dirs "$@" #!/bin/sh exec /lib/ld-musl-aarch64.so.1 --list "$@" # This is an example /etc/pkcs11/pkcs11.conf file. Copy it into # place before use. # This setting controls whether to load user configuration from the # ~/.config/pkcs11 directory. Possible values: # none: No user configuration # merge: Merge the user config over the system configuration (default) # only: Only user configuration, ignore system configuration user-config: merge #!/bin/sh # This script is a placeholder designed to be replaced when this software # has been customized for distribution. It should be symlinked linked to the # distribution's update-ca-certificates or update-ca-trust command as # appropriate. In the future this script will be called when the PKCS#11 # trust module is used to modify trust anchors and related data. if [ $# -ne 0 ]; then echo "usage: trust extract-compat" >&2 exit 2 fi uid=$(id -u) if [ "$uid" != 0 ]; then echo "trust: running as non-root user: skip extracting compat bundles" >&2 exit 0 fi echo "trust: the placeholder extract-compat command has not been customized by your distribution." >&2 # You can use commands like this to extract data from trust modules # into appropriate locations for your distribution. # # trust extract --format=openssl-bundle --filter=ca-anchors \ # --overwrite /tmp/openssl-bundle.pem # trust extract --format=pem-bundle --filter=ca-anchors --overwrite \ # --purpose server-auth /tmp/server-auth-bundle.pem # trust extract --format=java-cacerts --filter=ca-anchors --overwrite \ # --purpose server-auth /tmp/cacerts exit 1 # default config pool pool.ntp.org iburst initstepslew 10 pool.ntp.org driftfile /var/lib/chrony/chrony.drift rtcsync cmdport 0 /var/log/chrony/*.log { missingok nocreate sharedscripts postrotate /usr/bin/chronyc cyclelogs > /dev/null 2>&1 || true endscript } # /etc/conf.d/chronyd CFGFILE="/etc/chrony/chrony.conf" # chronyd takes some time to perform a second fork, by enabling this # option chronyd is deamonized through start-stop-daemon(1) thereby # significantly reducing the startup time. FAST_STARTUP=no # Configuration dependant options : # -s - Set system time from RTC if rtcfile directive present # -r - Reload sample histories if dumponexit directive present # # The combination of "-s -r" allows chronyd to perform long term averaging of # the gain or loss rate across system reboots and shutdowns. ARGS="" # vrf e.g 'vrf-mgmt' #vrf="" #!/sbin/openrc-run command="/usr/sbin/chronyd" description="NTP daemon" pidfile="/run/chrony/chronyd.pid" required_files="$CFGFILE" command_args="-f $CFGFILE $ARGS" depend() { need net after firewall provide ntp-client ntp-server use dns } start() { if [ -c /dev/rtc ]; then grep -q '^rtcfile' "${CFGFILE}" && command_args="$command_args -s" fi grep -q '^dumponexit$' "${CFGFILE}" && command_args="$command_args -r" if yesno "$FAST_STARTUP"; then # this option makes it stay in foreground and let openrc do the tracking, # so we have to set pidfile to a dir that exists earlier. # the reason this is not the default is because there is no 'readiness', # self-backgrounding chrony waits for time to sync before continuing, # and this form does not. command_args="$command_args -n" command_background=true pidfile=/run/chronyd.pid fi default_start } # A sample configuration for dhcpcd. # See dhcpcd.conf(5) for details. # Allow users of this group to interact with dhcpcd via the control socket. #controlgroup wheel # Inform the DHCP server of our hostname for DDNS. #hostname # Use the hardware address of the interface for the Client ID. #clientid # or # Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361. # Some non-RFC compliant DHCP servers do not reply with this set. # In this case, comment out duid and enable clientid above. duid # Persist interface configuration when dhcpcd exits. persistent # vendorclassid is set to blank to avoid sending the default of # dhcpcd-::: vendorclassid # A list of options to request from the DHCP server. option domain_name_servers, domain_name, domain_search option classless_static_routes # Respect the network MTU. This is applied to DHCP routes. option interface_mtu # Request a hostname from the network option host_name # Most distributions have NTP support. #option ntp_servers # Rapid commit support. # Safe to enable by default because it requires the equivalent option set # on the server to actually work. option rapid_commit # A ServerID is required by RFC2131. require dhcp_server_identifier # Generate SLAAC address using the Hardware Address of the interface #slaac hwaddr # OR generate Stable Private IPv6 Addresses based from the DUID slaac private # Echo the interface flags, reason and message options if [ "$reason" = "TEST" ]; then # General variables at the top set | while read line; do case "$line" in interface=*|pid=*|reason=*|protocol=*|profile=*|skip_hooks=*) echo "$line";; esac done # Interface flags set | while read line; do case "$line" in ifcarrier=*|ifflags=*|ifmetric=*|ifmtu=*|ifwireless=*|ifssid=*) echo "$line";; esac done # Old lease set | while read line; do case "$line" in old_*) echo "$line";; esac done # New lease set | while read line; do case "$line" in new_*) echo "$line";; esac done # Router Advertisements set | while read line; do case "$line" in nd[0-9]*_*) echo "$line";; esac done exit 0 fi # Generate /etc/resolv.conf # Support resolvconf(8) if available # We can merge other dhcpcd resolv.conf files into one like resolvconf, # but resolvconf is preferred as other applications like VPN clients # can readily hook into it. # Also, resolvconf can configure local nameservers such as bind # or dnsmasq. This is important as the libc resolver isn't that powerful. resolv_conf_dir="$state_dir/resolv.conf" nocarrier_roaming_dir="$state_dir/roaming" NL=" " : ${resolvconf:=resolvconf} if command -v "$resolvconf" >/dev/null 2>&1; then have_resolvconf=true else have_resolvconf=false fi build_resolv_conf() { cf="$state_dir/resolv.conf.$ifname" # Build a list of interfaces interfaces=$(list_interfaces "$resolv_conf_dir") # Build the resolv.conf header= if [ -n "$interfaces" ]; then # Build the header for x in ${interfaces}; do header="$header${header:+, }$x" done # Build the search list domain=$(cd "$resolv_conf_dir"; \ key_get_value "domain " ${interfaces}) search=$(cd "$resolv_conf_dir"; \ key_get_value "search " ${interfaces}) set -- ${domain} domain="$1" [ -n "$2" ] && search="$search $*" [ -n "$search" ] && search="$(uniqify $search)" [ "$domain" = "$search" ] && search= [ -n "$domain" ] && domain="domain $domain$NL" [ -n "$search" ] && search="search $search$NL" # Build the nameserver list srvs=$(cd "$resolv_conf_dir"; \ key_get_value "nameserver " ${interfaces}) for x in $(uniqify $srvs); do servers="${servers}nameserver $x$NL" done fi header="$signature_base${header:+ $from }$header" # Assemble resolv.conf using our head and tail files [ -f "$cf" ] && rm -f "$cf" [ -d "$resolv_conf_dir" ] || mkdir -p "$resolv_conf_dir" echo "$header" > "$cf" if [ -f /etc/resolv.conf.head ]; then cat /etc/resolv.conf.head >> "$cf" else echo "# /etc/resolv.conf.head can replace this line" >> "$cf" fi printf %s "$domain$search$servers" >> "$cf" if [ -f /etc/resolv.conf.tail ]; then cat /etc/resolv.conf.tail >> "$cf" else echo "# /etc/resolv.conf.tail can replace this line" >> "$cf" fi if change_file /etc/resolv.conf "$cf"; then chmod 644 /etc/resolv.conf fi rm -f "$cf" } # Extract any ND DNS options from the RA # Obey the lifetimes eval_nd_dns() { eval rdnsstime=\$nd${i}_rdnss${j}_lifetime [ -z "$rdnsstime" ] && return 1 ltime=$(($rdnsstime - $offset)) if [ "$ltime" -gt 0 ]; then eval rdnss=\$nd${i}_rdnss${j}_servers [ -n "$rdnss" ] && new_rdnss="$new_rdnss${new_rdnss:+ }$rdnss" fi eval dnssltime=\$nd${i}_dnssl${j}_lifetime [ -z "$dnssltime" ] && return 1 ltime=$(($dnssltime - $offset)) if [ "$ltime" -gt 0 ]; then eval dnssl=\$nd${i}_dnssl${j}_search [ -n "$dnssl" ] && new_dnssl="$new_dnssl${new_dnssl:+ }$dnssl" fi j=$(($j + 1)) return 0 } add_resolv_conf() { conf="$signature$NL" warn=true # Loop to extract the ND DNS options using our indexed shell values i=1 j=1 while true; do eval acquired=\$nd${i}_acquired [ -z "$acquired" ] && break eval now=\$nd${i}_now [ -z "$now" ] && break offset=$(($now - $acquired)) while true; do eval_nd_dns || break done i=$(($i + 1)) j=1 done [ -n "$new_rdnss" ] && \ new_domain_name_servers="$new_domain_name_servers${new_domain_name_servers:+ }$new_rdnss" [ -n "$new_dnssl" ] && \ new_domain_search="$new_domain_search${new_domain_search:+ }$new_dnssl" # Derive a new domain from our various hostname options if [ -z "$new_domain_name" ]; then if [ "$new_dhcp6_fqdn" != "${new_dhcp6_fqdn#*.}" ]; then new_domain_name="${new_dhcp6_fqdn#*.}" elif [ "$new_fqdn" != "${new_fqdn#*.}" ]; then new_domain_name="${new_fqdn#*.}" elif [ "$new_host_name" != "${new_host_name#*.}" ]; then new_domain_name="${new_host_name#*.}" fi fi # If we don't have any configuration, remove it if [ -z "$new_domain_name_servers" ] && [ -z "$new_domain_name" ] && [ -z "$new_domain_search" ]; then remove_resolv_conf return $? fi if [ -n "$new_domain_name" ]; then set -- $new_domain_name if valid_domainname "$1"; then conf="${conf}domain $1$NL" else syslog err "Invalid domain name: $1" fi # If there is no search this, make this one if [ -z "$new_domain_search" ]; then new_domain_search="$new_domain_name" [ "$new_domain_name" = "$1" ] && warn=true fi fi if [ -n "$new_domain_search" ]; then new_domain_search=$(uniqify $new_domain_search) if valid_domainname_list $new_domain_search; then conf="${conf}search $new_domain_search$NL" elif ! $warn; then syslog err "Invalid domain name in list:" \ "$new_domain_search" fi fi new_domain_name_servers=$(uniqify $new_domain_name_servers) for x in ${new_domain_name_servers}; do conf="${conf}nameserver $x$NL" done if $have_resolvconf; then [ -n "$ifmetric" ] && export IF_METRIC="$ifmetric" printf %s "$conf" | "$resolvconf" -a "$ifname" return $? fi if [ -e "$resolv_conf_dir/$ifname" ]; then rm -f "$resolv_conf_dir/$ifname" fi [ -d "$resolv_conf_dir" ] || mkdir -p "$resolv_conf_dir" printf %s "$conf" > "$resolv_conf_dir/$ifname" build_resolv_conf } remove_resolv_conf() { if $have_resolvconf; then "$resolvconf" -d "$ifname" -f else if [ -e "$resolv_conf_dir/$ifname" ]; then rm -f "$resolv_conf_dir/$ifname" fi build_resolv_conf fi } # For ease of use, map DHCP6 names onto our DHCP4 names case "$reason" in BOUND6|RENEW6|REBIND6|REBOOT6|INFORM6) new_domain_name_servers="$new_dhcp6_name_servers" new_domain_search="$new_dhcp6_domain_search" ;; esac if $if_configured; then if $have_resolvconf && [ "$reason" = NOCARRIER_ROAMING ]; then # avoid calling resolvconf -c on CARRIER unless we roam mkdir -p "$nocarrier_roaming_dir" echo " " >"$nocarrier_roaming_dir/$interface" "$resolvconf" -C "$interface.*" elif $have_resolvconf && [ "$reason" = CARRIER ]; then # Not all resolvconf implementations support -c if [ -e "$nocarrier_roaming_dir/$interface" ]; then rm -f "$nocarrier_roaming_dir/$interface" "$resolvconf" -c "$interface.*" fi elif $if_up || [ "$reason" = ROUTERADVERT ]; then add_resolv_conf elif $if_down; then remove_resolv_conf fi fi # Set the hostname from DHCP data if required # A hostname can either be a short hostname or a FQDN. # hostname_fqdn=true # hostname_fqdn=false # hostname_fqdn=server # A value of server means just what the server says, don't manipulate it. # This could lead to an inconsistent hostname on a DHCPv4 and DHCPv6 network # where the DHCPv4 hostname is short and the DHCPv6 has an FQDN. # DHCPv6 has no hostname option. # RFC4702 section 3.1 says FQDN should be prefered over hostname. # # As such, the default is hostname_fqdn=true so that a consistent hostname # is always assigned. : ${hostname_fqdn:=true} # If we used to set the hostname, but relinquish control of it, we should # reset to the default value. : ${hostname_default=(none)} # Some systems don't have hostname(1) _hostname() { if [ -z "${1+x}" ]; then if [ -r /proc/sys/kernel/hostname ]; then read name /dev/null 2>/dev/null; then hostname elif sysctl kern.hostname >/dev/null 2>&1; then sysctl -n kern.hostname elif sysctl kernel.hostname >/dev/null 2>&1; then sysctl -n kernel.hostname else return 1 fi return $? fi if [ -w /proc/sys/kernel/hostname ]; then echo "$1" >/proc/sys/kernel/hostname elif [ -n "$1" ] && command -v hostname >/dev/null 2>&1; then hostname "$1" elif sysctl kern.hostname >/dev/null 2>&1; then sysctl -w "kern.hostname=$1" >/dev/null elif sysctl kernel.hostname >/dev/null 2>&1; then sysctl -w "kernel.hostname=$1" >/dev/null else # May fail to set a blank hostname hostname "$1" fi } is_default_hostname() { case "$1" in ""|"$hostname_default"|localhost|localhost.localdomain) return 0;; esac return 1 } need_hostname() { # Always load the hostname variable for future use hostname="$(_hostname)" is_default_hostname "$hostname" && return 0 case "$force_hostname" in [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|1) return 0;; esac if [ -n "$old_fqdn" ]; then if ${hfqdn} || ! ${hshort}; then [ "$hostname" = "$old_fqdn" ] else [ "$hostname" = "${old_fqdn%%.*}" ] fi elif [ -n "$old_host_name" ]; then if ${hfqdn}; then if [ -n "$old_domain_name" ] && [ "$old_host_name" = "${old_host_name#*.}" ] then [ "$hostname" = \ "$old_host_name.$old_domain_name" ] else [ "$hostname" = "$old_host_name" ] fi elif ${hshort}; then [ "$hostname" = "${old_host_name%%.*}" ] else [ "$hostname" = "$old_host_name" ] fi else # No old hostname false fi } try_hostname() { [ "$hostname" = "$1" ] && return 0 if valid_domainname "$1"; then syslog info "Setting hostname: $1" _hostname "$1" else syslog err "Invalid hostname: $1" fi } set_hostname() { hfqdn=false hshort=false case "$hostname_fqdn" in [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|1) hfqdn=true;; ""|[Ss][Ee][Rr][Vv][Ee][Rr]) ;; *) hshort=true;; esac need_hostname || return 0 if [ -n "$new_fqdn" ]; then if ${hfqdn} || ! ${hshort}; then try_hostname "$new_fqdn" else try_hostname "${new_fqdn%%.*}" fi elif [ -n "$new_host_name" ]; then if ${hfqdn}; then if [ -n "$new_domain_name" ] && [ "$new_host_name" = "${new_host_name#*.}" ] then try_hostname "$new_host_name.$new_domain_name" else try_hostname "$new_host_name" fi elif ${hshort}; then try_hostname "${new_host_name%%.*}" else try_hostname "$new_host_name" fi elif ! is_default_hostname "$hostname"; then try_hostname "$hostname_default" fi } # For ease of use, map DHCP6 names onto our DHCP4 names case "$reason" in BOUND6|RENEW6|REBIND6|REBOOT6|INFORM6) new_fqdn="$new_dhcp6_fqdn" old_fqdn="$old_dhcp6_fqdn" ;; esac if $if_configured && $if_up && [ "$reason" != ROUTERADVERT ]; then set_hostname fi # Sample dhcpcd hook script for NTP # It will configure either one of NTP, OpenNTP or Chrony (in that order) # and will default to NTP if no default config is found. # Like our resolv.conf hook script, we store a database of ntp.conf files # and merge into /etc/ntp.conf # You can set the env var NTP_CONF to override the derived default on # systems with >1 NTP client installed. # Here is an example for OpenNTP # dhcpcd -e NTP_CONF=/usr/pkg/etc/ntpd.conf # or by adding this to /etc/dhcpcd.conf # env NTP_CONF=/usr/pkg/etc/ntpd.conf # or by adding this to /etc/dhcpcd.enter-hook # NTP_CONF=/usr/pkg/etc/ntpd.conf # To use Chrony instead, simply change ntpd.conf to chrony.conf in the # above examples. : ${ntp_confs:=ntp.conf ntpd.conf chrony.conf} : ${ntp_conf_dirs=/etc /etc/chrony /usr/pkg/etc /usr/local/etc} ntp_conf_dir="$state_dir/ntp.conf" # If NTP_CONF is not set, work out a good default if [ -z "$NTP_CONF" ]; then for d in ${ntp_conf_dirs}; do for f in ${ntp_confs}; do if [ -e "$d/$f" ]; then NTP_CONF="$d/$f" break 2 fi done done [ -e "$NTP_CONF" ] || NTP_CONF=/etc/ntp.conf fi # Derive service name from configuration if [ -z "$ntp_service" ]; then case "$NTP_CONF" in *chrony.conf) ntp_service=chronyd;; *) ntp_service=ntpd;; esac fi # Debian has a separate file for DHCP config to avoid stamping on # the master. if [ "$ntp_service" = ntpd ] && command -v invoke-rc.d >/dev/null 2>&1; then [ -e /var/lib/ntp ] || mkdir /var/lib/ntp : ${ntp_service:=ntp} : ${NTP_DHCP_CONF:=/var/lib/ntp/ntp.conf.dhcp} fi : ${ntp_restart_cmd:=service_condcommand $ntp_service restart} ntp_conf=${NTP_CONF} NL=" " build_ntp_conf() { cf="$state_dir/ntp.conf.$ifname" # Build a list of interfaces interfaces=$(list_interfaces "$ntp_conf_dir") header= servers= if [ -n "$interfaces" ]; then # Build the header for x in ${interfaces}; do header="$header${header:+, }$x" done # Build a server list srvs=$(cd "$ntp_conf_dir"; key_get_value "server " $interfaces) if [ -n "$srvs" ]; then for x in $(uniqify $srvs); do servers="${servers}server $x$NL" done fi fi # Merge our config into ntp.conf [ -e "$cf" ] && rm -f "$cf" [ -d "$ntp_conf_dir" ] || mkdir -p "$ntp_conf_dir" if [ -n "$NTP_DHCP_CONF" ]; then [ -e "$ntp_conf" ] && cp "$ntp_conf" "$cf" ntp_conf="$NTP_DHCP_CONF" elif [ -e "$ntp_conf" ]; then remove_markers "$signature_base" "$signature_base_end" \ "$ntp_conf" > "$cf" fi if [ -n "$servers" ]; then echo "$signature_base${header:+ $from }$header" >> "$cf" printf %s "$servers" >> "$cf" echo "$signature_base_end${header:+ $from }$header" >> "$cf" else [ -e "$ntp_conf" ] && [ -e "$cf" ] || return fi # If we changed anything, restart ntpd if change_file "$ntp_conf" "$cf"; then [ -n "$ntp_restart_cmd" ] && eval $ntp_restart_cmd fi } add_ntp_conf() { cf="$ntp_conf_dir/$ifname" [ -e "$cf" ] && rm "$cf" [ -d "$ntp_conf_dir" ] || mkdir -p "$ntp_conf_dir" if [ -n "$new_ntp_servers" ]; then for x in $(uniqify $new_ntp_servers); do echo "server $x" >> "$cf" done fi build_ntp_conf } remove_ntp_conf() { if [ -e "$ntp_conf_dir/$ifname" ]; then rm "$ntp_conf_dir/$ifname" fi build_ntp_conf } # For ease of use, map DHCP6 names onto our DHCP4 names case "$reason" in BOUND6|RENEW6|REBIND6|REBOOT6|INFORM6) new_ntp_servers="$new_dhcp6_sntp_servers $new_dhcp6_ntp_server_addr $new_dhcp6_ntp_server_fqdn" ;; esac if $if_configured; then if $if_up; then add_ntp_conf elif $if_down; then remove_ntp_conf fi fi #!/bin/sh # dhcpcd client configuration script # Handy variables and functions for our hooks to use ifname="$interface${protocol+.}$protocol" from=from signature_base="# Generated by dhcpcd" signature="$signature_base $from $ifname" signature_base_end="# End of dhcpcd" signature_end="$signature_base_end $from $ifname" state_dir=/run/dhcpcd/hook-state _detected_init=false : ${if_up:=false} : ${if_down:=false} : ${syslog_debug:=false} # Ensure that all arguments are unique uniqify() { result= for i do case " $result " in *" $i "*);; *) result="$result${result:+ }$i";; esac done echo "$result" } # List interface config files in a directory. # If dhcpcd is running as a single instance then it will have a list of # interfaces in the preferred order. # Otherwise we just use what we have. list_interfaces() { ifaces= for i in $interface_order; do for x in "$1"/$i.*; do [ -f "$x" ] && ifaces="$ifaces${ifaces:+ }${x##*/}" done done for x in "$1"/*; do [ -f "$x" ] && ifaces="$ifaces${ifaces:+ }${x##*/}" done uniqify $ifaces } # Trim function trim() { var="$*" var=${var#"${var%%[![:space:]]*}"} var=${var%"${var##*[![:space:]]}"} if [ -z "$var" ]; then # So it seems our shell doesn't support wctype(3) patterns # Fall back to sed var=$(echo "$*" | sed -e 's/^[[:space:]]*//;s/[[:space:]]*$//') fi printf %s "$var" } # We normally use sed to extract values using a key from a list of files # but sed may not always be available at the time. key_get_value() { key="$1" shift if command -v sed >/dev/null 2>&1; then sed -n "s/^$key//p" $@ else for x do while read line; do case "$line" in "$key"*) echo "${line##$key}";; esac done < "$x" done fi } # We normally use sed to remove markers from a configuration file # but sed may not always be available at the time. remove_markers() { m1="$1" m2="$2" in_marker=0 shift; shift if command -v sed >/dev/null 2>&1; then sed "/^$m1/,/^$m2/d" $@ else for x do while read line; do case "$line" in "$m1"*) in_marker=1;; "$m2"*) in_marker=0;; *) [ $in_marker = 0 ] && echo "$line";; esac done < "$x" done fi } # Compare two files. comp_file() { [ -e "$1" ] && [ -e "$2" ] || return 1 if command -v cmp >/dev/null 2>&1; then cmp -s "$1" "$2" elif command -v diff >/dev/null 2>&1; then diff -q "$1" "$2" >/dev/null else # Hopefully we're only working on small text files ... [ "$(cat "$1")" = "$(cat "$2")" ] fi } # Compare two files. # If different, replace first with second otherwise remove second. change_file() { if [ -e "$1" ]; then if comp_file "$1" "$2"; then rm -f "$2" return 1 fi fi cat "$2" > "$1" rm -f "$2" return 0 } # Compare two files. # If different, copy or link depending on target type copy_file() { if [ -h "$2" ]; then [ "$(readlink "$2")" = "$1" ] && return 1 ln -sf "$1" "$2" else comp_file "$1" "$2" && return 1 cat "$1" >"$2" fi } # Save a config file save_conf() { if [ -f "$1" ]; then rm -f "$1-pre.$interface" cat "$1" > "$1-pre.$interface" fi } # Restore a config file restore_conf() { [ -f "$1-pre.$interface" ] || return 1 cat "$1-pre.$interface" > "$1" rm -f "$1-pre.$interface" } # Write a syslog entry syslog() { lvl="$1" if [ "$lvl" = debug ]; then ${syslog_debug} || return 0 fi [ -n "$lvl" ] && shift [ -n "$*" ] || return 0 case "$lvl" in err|error) echo "$interface: $*" >&2;; *) echo "$interface: $*";; esac if command -v logger >/dev/null 2>&1; then logger -p daemon."$lvl" -t dhcpcd-run-hooks "$interface: $*" fi } # Check for a valid name as per RFC952 and RFC1123 section 2.1 valid_domainname() { name="$1" [ -z "$name" ] || [ ${#name} -gt 255 ] && return 1 while [ -n "$name" ]; do label="${name%%.*}" [ -z "$label" ] || [ ${#label} -gt 63 ] && return 1 case "$label" in -*|_*|*-|*_) return 1;; *[![:alnum:]_-]*) return 1;; "$name") return 0;; esac name="${name#*.}" done return 0 } valid_domainname_list() { for name do valid_domainname "$name" || return $? done return 0 } # With the advent of alternative init systems, it's possible to have # more than one installed. So we need to try to guess what one we're # using unless overridden by configure. detect_init() { _service_exists="" _service_cmd="" _service_status="" [ -n "$_service_cmd" ] && return 0 if $_detected_init; then [ -n "$_service_cmd" ] return $? fi # Detect the running init system. # As systemd and OpenRC can be installed on top of legacy init # systems we try to detect them first. status="" : ${status:=status} if [ -x /bin/systemctl ] && [ -S /run/systemd/private ]; then _service_exists="/bin/systemctl --quiet is-enabled \$1.service" _service_status="/bin/systemctl --quiet is-active \$1.service" _service_cmd="/bin/systemctl \$2 --no-block \$1.service" elif [ -x /usr/bin/systemctl ] && [ -S /run/systemd/private ]; then _service_exists="/usr/bin/systemctl --quiet is-enabled \$1.service" _service_status="/usr/bin/systemctl --quiet is-active \$1.service" _service_cmd="/usr/bin/systemctl \$2 --no-block \$1.service" elif [ -x /sbin/rc-service ] && { [ -s /libexec/rc/init.d/softlevel ] || [ -s /run/openrc/softlevel ]; } then _service_exists="/sbin/rc-service -e \$1" _service_cmd="/sbin/rc-service \$1 -- -D \$2" elif [ -x /usr/sbin/invoke-rc.d ]; then _service_exists="/usr/sbin/invoke-rc.d --query --quiet \$1 start >/dev/null 2>&1 || [ \$? = 104 ]" _service_cmd="/usr/sbin/invoke-rc.d \$1 \$2" elif [ -x /sbin/service ]; then _service_exists="/sbin/service \$1 >/dev/null 2>&1" _service_cmd="/sbin/service \$1 \$2" elif [ -x /usr/sbin/service ]; then _service_exists="/usr/sbin/service \$1 $status >/dev/null 2>&1" _service_cmd="/usr/sbin/service \$1 \$2" elif [ -x /bin/sv ]; then _service_exists="/bin/sv status \$1 >/dev/null 2>&1" _service_cmd="/bin/sv \$2 \$1" elif [ -x /usr/bin/sv ]; then _service_exists="/usr/bin/sv status \$1 >/dev/null 2>&1" _service_cmd="/usr/bin/sv \$2 \$1" elif [ -e /etc/slackware-version ] && [ -d /etc/rc.d ]; then _service_exists="[ -x /etc/rc.d/rc.\$1 ]" _service_cmd="/etc/rc.d/rc.\$1 \$2" _service_status="/etc/rc.d/rc.\$1 status >/dev/null 2>&1" else for x in /etc/init.d/rc.d /etc/rc.d /etc/init.d; do if [ -d $x ]; then _service_exists="[ -x $x/\$1 ]" _service_cmd="$x/\$1 \$2" _service_status="$x/\$1 $status >/dev/null 2>&1" break fi done if [ -e /etc/arch-release ]; then _service_status="[ -e /var/run/daemons/\$1 ]" elif [ "$x" = "/etc/rc.d" ] && [ -e /etc/rc.d/rc.subr ]; then _service_status="$x/\$1 check >/dev/null 2>&1" fi fi _detected_init=true if [ -z "$_service_cmd" ]; then syslog err "could not detect a useable init system" return 1 fi return 0 } # Check a system service exists service_exists() { if [ -z "$_service_exists" ]; then detect_init || return 1 fi eval $_service_exists } # Send a command to a system service service_cmd() { if [ -z "$_service_cmd" ]; then detect_init || return 1 fi eval $_service_cmd } # Send a command to a system service if it is running service_status() { if [ -z "$_service_cmd" ]; then detect_init || return 1 fi if [ -n "$_service_status" ]; then eval $_service_status else service_command $1 status >/dev/null 2>&1 fi } # Handy macros for our hooks service_command() { service_exists $1 && service_cmd $1 $2 } service_condcommand() { service_exists $1 && service_status $1 && service_cmd $1 $2 } # We source each script into this one so that scripts run earlier can # remove variables from the environment so later scripts don't see them. # Thus, the user can create their dhcpcd.enter/exit-hook script to configure # /etc/resolv.conf how they want and stop the system scripts ever updating it. for hook in \ /etc/dhcpcd.enter-hook \ /usr/lib/dhcpcd/dhcpcd-hooks/* \ /etc/dhcpcd.exit-hook do case "$hook" in */*~) continue;; esac for skip in $skip_hooks; do case "$hook" in */"$skip") continue 2;; */[0-9][0-9]"-$skip") continue 2;; */[0-9][0-9]"-$skip.sh") continue 2;; esac done if [ -f "$hook" ]; then . "$hook" fi done # Start, reconfigure and stop wpa_supplicant per wireless interface. # # This is only needed when using wpa_supplicant-2.5 or older, OR # when wpa_supplicant has not been built with CONFIG_MATCH_IFACE, OR # wpa_supplicant was launched without the -M flag to activate # interface matching. if [ -z "$wpa_supplicant_conf" ]; then for x in \ /etc/wpa_supplicant/wpa_supplicant-"$interface".conf \ /etc/wpa_supplicant/wpa_supplicant.conf \ /etc/wpa_supplicant-"$interface".conf \ /etc/wpa_supplicant.conf \ ; do if [ -s "$x" ]; then wpa_supplicant_conf="$x" break fi done fi : ${wpa_supplicant_conf:=/etc/wpa_supplicant.conf} wpa_supplicant_ctrldir() { dir=$(key_get_value "[[:space:]]*ctrl_interface=" \ "$wpa_supplicant_conf") dir=$(trim "$dir") case "$dir" in DIR=*) dir=${dir##DIR=} dir=${dir%%[[:space:]]GROUP=*} dir=$(trim "$dir") ;; esac printf %s "$dir" } wpa_supplicant_start() { # If the carrier is up, don't bother checking anything [ "$ifcarrier" = "up" ] && return 0 # Pre flight checks if [ ! -s "$wpa_supplicant_conf" ]; then syslog warn \ "$wpa_supplicant_conf does not exist" syslog warn "not interacting with wpa_supplicant(8)" return 1 fi dir=$(wpa_supplicant_ctrldir) if [ -z "$dir" ]; then syslog warn \ "ctrl_interface not defined in $wpa_supplicant_conf" syslog warn "not interacting with wpa_supplicant(8)" return 1 fi wpa_cli -p "$dir" -i "$interface" status >/dev/null 2>&1 && return 0 syslog info "starting wpa_supplicant" driver=${wpa_supplicant_driver:+-D}$wpa_supplicant_driver err=$(wpa_supplicant -B -c"$wpa_supplicant_conf" -i"$interface" \ "$driver" 2>&1) errn=$? if [ $errn != 0 ]; then syslog err "failed to start wpa_supplicant" syslog err "$err" fi return $errn } wpa_supplicant_reconfigure() { dir=$(wpa_supplicant_ctrldir) [ -z "$dir" ] && return 1 if ! wpa_cli -p "$dir" -i "$interface" status >/dev/null 2>&1; then wpa_supplicant_start return $? fi syslog info "reconfiguring wpa_supplicant" err=$(wpa_cli -p "$dir" -i "$interface" reconfigure 2>&1) errn=$? if [ $errn != 0 ]; then syslog err "failed to reconfigure wpa_supplicant" syslog err "$err" fi return $errn } wpa_supplicant_stop() { dir=$(wpa_supplicant_ctrldir) [ -z "$dir" ] && return 1 wpa_cli -p "$dir" -i "$interface" status >/dev/null 2>&1 || return 0 syslog info "stopping wpa_supplicant" err=$(wpa_cli -i"$interface" terminate 2>&1) errn=$? if [ $errn != 0 ]; then syslog err "failed to stop wpa_supplicant" syslog err "$err" fi return $errn } if [ "$ifwireless" = "1" ] && \ command -v wpa_supplicant >/dev/null 2>&1 && \ command -v wpa_cli >/dev/null 2>&1 then case "$reason" in PREINIT) wpa_supplicant_start;; RECONFIGURE) wpa_supplicant_reconfigure;; DEPARTED|STOPPED) wpa_supplicant_stop;; esac fi # Configure timezone : ${localtime:=/etc/localtime} set_zoneinfo() { [ -z "$new_tzdb_timezone" ] && return 0 zoneinfo_dir= for d in \ /usr/share/zoneinfo \ /usr/lib/zoneinfo \ /var/share/zoneinfo \ /var/zoneinfo \ ; do if [ -d "$d" ]; then zoneinfo_dir="$d" break fi done if [ -z "$zoneinfo_dir" ]; then syslog warning "timezone directory not found" return 1 fi zone_file="$zoneinfo_dir/$new_tzdb_timezone" if [ ! -e "$zone_file" ]; then syslog warning "no timezone definition for $new_tzdb_timezone" return 1 fi if copy_file "$zone_file" "$localtime"; then syslog info "timezone changed to $new_tzdb_timezone" fi } # For ease of use, map DHCP6 names onto our DHCP4 names case "$reason" in BOUND6|RENEW6|REBIND6|REBOOT6|INFORM6) new_tzdb_timezone="$new_dhcp6_tzdb_timezone" ;; esac if $if_configured && $if_up; then set_zoneinfo fi # Lookup the hostname in DNS if not set lookup_hostname() { [ -z "$new_ip_address" ] && return 1 # Silly ISC programs love to send error text to stdout if command -v dig >/dev/null 2>&1; then h=$(dig +short -x $new_ip_address) if [ $? = 0 ]; then echo "$h" | sed 's/\.$//' return 0 fi elif command -v host >/dev/null 2>&1; then h=$(host $new_ip_address) if [ $? = 0 ]; then echo "$h" \ | sed 's/.* domain name pointer \(.*\)./\1/' return 0 fi elif command -v getent >/dev/null 2>&1; then h=$(getent hosts $new_ip_address) if [ $? = 0 ]; then echo "$h" | sed 's/[^ ]* *\([^ ]*\).*/\1/' return 0 fi fi return 1 } set_hostname() { if [ -z "${new_host_name}${new_fqdn_name}" ]; then export new_host_name="$(lookup_hostname)" fi } if $if_up; then set_hostname fi # Sample dhcpcd hook for ypbind # This script is only suitable for the Linux version. ypbind_pid() { [ -s /var/run/ypbind.pid ] && cat /var/run/ypbind.pid } make_yp_conf() { [ -z "${new_nis_domain}${new_nis_servers}" ] && return 0 cf=/etc/yp.conf."$ifname" rm -f "$cf" echo "$signature" > "$cf" prefix= if [ -n "$new_nis_domain" ]; then if ! valid_domainname "$new_nis_domain"; then syslog err "Invalid NIS domain name: $new_nis_domain" rm -f "$cf" return 1 fi domainname "$new_nis_domain" if [ -n "$new_nis_servers" ]; then prefix="domain $new_nis_domain server " else echo "domain $new_nis_domain broadcast" >> "$cf" fi else prefix="ypserver " fi for x in $new_nis_servers; do echo "$prefix$x" >> "$cf" done save_conf /etc/yp.conf cat "$cf" > /etc/yp.conf rm -f "$cf" pid="$(ypbind_pid)" if [ -n "$pid" ]; then kill -HUP "$pid" fi } restore_yp_conf() { [ -n "$old_nis_domain" ] && domainname "" restore_conf /etc/yp.conf || return 0 pid="$(ypbind_pid)" if [ -n "$pid" ]; then kill -HUP "$pid" fi } if $if_configured; then if $if_up; then make_yp_conf elif $if_down; then restore_yp_conf fi fi #!/sbin/openrc-run description="DHCP Client Daemon" command="/sbin/dhcpcd" command_args="-q -B ${command_args:-}" command_background="true" pidfile="/run/dhcpcd/pid" depend() { provide net need localmount use logger network after bootmisc modules before dns } start_pre() { checkpath -d /run/dhcpcd } # See doas.conf(5) and doas.d(5) for configuration details. # Configuration here may be overridden by /etc/doas.d/*.conf if files exist. # Uncomment to allow group "wheel" to become root. # permit persist :wheel # e2scrub configuration file # Uncomment to enable automatic periodic runs of e2scrub_all # (either via cron or via a systemd timer) # periodic_e2scrub=1 # e-mail destination used by e2scrub_fail when problems are found with # the file system. # recipient=root # e-mail sender used by e2scrub_fail when problems are found with # the file system. # sender=e2scrub@host.domain.name # Snapshots will be created to run fsck; the snapshot will be of this size. # snap_size_mb=256 # Set this to 1 to enable fstrim for everyone. # fstrim=0 # Arguments passed into e2fsck. # e2fsck_opts="-vtt" # Set this to 1 to have e2scrub_all scrub all LVs, not just the mounted ones. # scrub_all=0 [defaults] base_features = sparse_super,large_file,filetype,resize_inode,dir_index,ext_attr default_mntopts = acl,user_xattr enable_periodic_fsck = 0 blocksize = 4096 inode_size = 256 inode_ratio = 16384 [fs_types] ext3 = { features = has_journal } ext4 = { features = has_journal,extent,huge_file,flex_bg,metadata_csum,metadata_csum_seed,64bit,dir_nlink,extra_isize,orphan_file } small = { blocksize = 1024 inode_ratio = 4096 } floppy = { blocksize = 1024 inode_ratio = 8192 } big = { inode_ratio = 32768 } huge = { inode_ratio = 65536 } news = { inode_ratio = 4096 } largefile = { inode_ratio = 1048576 blocksize = -1 } largefile4 = { inode_ratio = 4194304 blocksize = -1 } hurd = { blocksize = 4096 inode_size = 128 warn_y2038_dates = 0 } kernel/net/9p kernel/fs/9p kernel/drivers/block/aoe/*.ko* kernel/drivers/ata/*.ko* /bin/busybox /bin/sh /sbin/modprobe /lib/mdev /sbin/apk /etc/modprobe.d/*.conf /etc/mdev.conf /sbin/nlplug-findfs kernel/drivers/block/loop.ko* kernel/drivers/gpu/drm/tiny/simpledrm.ko* kernel/fs/overlayfs ELF@@8@((`$$Ptd888QtdRtdGNU oR%7/8j)mM "OJj B0@ ,0@@JLɃ#L& MNOQRSTVWX[\^_`abcdefhijkmnopqrtuvwxz{|}~+ vSf!&E9'Y@:_)-P.4nYd X_< ?@ZA U(B0C8D@PHPjXE`lhSpFxGH{wIJKiL*{{_{NFb2    RF2 VF2 ZF2 ^F2 bF3 fF"3 jFB3 nFb3 rF3 vF3 zF3 ~F3 F4 F"4 FB4 Fb4 F4 F4 F4 F4 F5 F"5 FB5 Fb5 F5 F5 F5 F5 F6 F"6 FB6 Fb6 F6 F6 F6 F6 F7 F"7 FB7 Fb7 F7 F7 F7 F7 G8 G"8  GB8 Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< G< G< G< G= G"= GB= Gb= G= G= G= G= G> G"> GB> Gb> G> G> G> G>  ! ?T!Ga_ ! !"A !ABGb_{ `"@97G@G 0 R`"9 @{¨_G@{ !@0{*! $ @#AkT_{i G@  RH{_{{_֠{@G@ t R2_{_{S` `@@`bSA{è_{R e@ @{¨_!G{ C"@G#q!GG@"@c@T3{I_C{[ GS c k s C  @?҄'Cc )Ҟ~@<<?qT~@_C'c )@~@<<kTG@  G@  RR!G?@"@c@T{HSI[JcKkLsMC_{( G@  R{_C{[ GS c k s C  @?'Cc )Ҿ~@<G@@B@T{A*SB_CC{S!G#"@!"!d B @=R 4@DqTR!G@"@cT!!#@!!X[ R#@{BSCC_C{SG#@P6_"BC!! { @=R4d@DqTRG@@BTD?!!#\@@7q#@*{BSCC_!G{CS"@"B!! 4@A7@q!G@"@cҀTPR{ASB_{S!G[c"@+7ARRG@@B T.6!R!! 5;6*340!R#!!@"CB$!!x @oq{B*SC[DcE_{CS!G"@҂"!B$!x@*!Gq@"@c@T{ASB_"RR{ kAR!! 5 R @{¨_!!p4!! `4!! 4!! `5R!!@4!!( 4!! 49RC{ CS !G[ c"@G!!0#@5@@@@4R8GG@@BҀTK!ҷ`y4@RaRc@*{ISJ[KC_BG!{!@ C@"B@#C=!G @@"@c@T@{B_{[S5@@@!/RwR`T@"h`8_(qaT?h 8@SA[B{Ĩ_{S!G[c "@/!!(Nc"R?* 5#CORF @?"* SG! @! @ @RG/@@BT @R&4ks @Ta@95s3R{F*SG[HcI_C{S!G["@s3s.DAb@9!$!D_q,"B u!!(#Cg @G@@B@T:{BSC[DC_C{GS[*c*ks@ H C/` ` !! q@TC3s 7RO#3s <"B!! Z@!RG@@B@Tz{ASB_!G{S[+"@@A4"B|  ~!!(#C @6B @caG@@BT5 @9`4)+@{BSC[D_C{C[GSc@!!@16b@BuG@@BT@!!@ {ASB[CcDC_!G{S[cks "@!!(PL8;G{'@TH@G@@BҠ T@ 8@TE 5Ms99 qT!!D@!!P/5@-@94!!H+`qT@@@94@4<@_{DSE[FcGkHsI_ p2{S[J   ARSA[B{è_@@4@4@{SG[ck@#!!(7#C @:G@@BT @@8?q$IzT)TR`jt8(qATj48{BSC[DcEkF_{[GS+@ !!"`5`#!!HzR@@9q@T6n @9@4aj`8?(qATj 8C!!!!C@ @|w@@5jv8qT @`G@@BҀTs@+@{BSC[D_{S@@SA{èj@`4@,@!RSA{è_{S[@!RRwV@@5` @ ` @om R@SA[B{Ĩ_ր{S@SA{¨_`@ 4s@{CSG[@`7G@@BҠT {ASB[C_{S[ck@S@x@x@ ` @@v`"T@a t `@@~`7@y SA[BcCkD{Ũ_`{S@@SA{èV@_C{CS!G[d@c"@ T` 6"!B$!`@AR@wG@@B`T~@ G!!@ 0q@4bs R+b@s@Vs@{ASB[CcDCrG@@B!T{ASB[CcDC_{S31.,@SA{è_{S*!G[cks "@qT73R!G@"@cT*lB!x@`6Fo*5q@R@zT "qDz9#$Z{RR 6~|@ QqPzTz7{c4$@@q!Tc#@c#@bcp@R {@t B %ka @kAzTqR@zT qaR*4 @I@/6<4@@qTR @9@*1TL*1 Tyv*q Tq R>@@@d@ @@YV@{DSE[FcGkHsI_!G{CS["@G!R$ !R!R @a@ @`V@a@ @`R@@!T{ASB[C_!t5@@@T{ASB[CB$!@!R{S#@@SA{è_֠@@b@A"@a@!G{S*[ck"@CBh @qT!RG@@BTRy@#v@E@!Rot@a@ @`R^@{BSC[DcEkF_{C[GSck@C9@u8G@@B`T4@@6I@{ASB[CcDkE_{ S[cksc-G@RRGH@BT!4@R @ 6=R4@Dq T!@!> @R_5L@9?qTL@m@@@95@@6sR*czxCs"9kR5RR c-*SA[BcCkDsE{ƨ_{S@!G[+"@T*C!4 @qMT*#!@$L"HG@@B@T `* L@9?q TL`6*R+@*{BSC[D_{ S[cksc-!Gc"@/?B4|@ zH L@9?q`TL@Bh!ya+FR+@G/H@B T+@#B_#@A@9a4! J5u#@*A0 "!45s#@!L,5t#@ !` 5@&!=@@TLI?a+! qusox5?@4Rn1aT@ q:`^x4v# C?us#`@Ga@a}Ӎ`@?8R!@@"RR`@&R@"8RR: c-*SA[BcCkDsE{ƨ_!G{CS"$[3Rck{3"@҅@366@4q@Ts26R@@@o6s2G@@BҠTr@X6@s*@qsB@3@*{ASB[CcDkE_{S[6R*SA[B{è_!`4!4! 4! 47!`4! 5!0 4 @5XA Rj6{[U@c*k+RS5+@*SA[BcCkD{ƨ_ֳ@5*6"qT q`T:R 4T@6y7 @t6@7 r`T{S[@t@w@ @@@A` `A@a@ `@ @SA[B{Ĩ_{S[c*!L@6@SA[BcC{Ĩ_ց@@ra T@ERRo7@ER$Rg`6`@ "@@`4@ERRV`6`@` @ERRL`6`@ @RRB7@R$R:7"@ @RR07@%RR(7@%R* `6`@"@6@@@O@`@@6@@@@#@7W4@KG7`@@3SA[BcC{Ĩ*4@RR6a4@%RR6T{S[*cksy@@Y@wx?9 7 !La@[BcCkDsESA{Ȩ @`49@!@`9@@@w@|@4 @?@v5{@3@*7@<@@"@323@62@7@"@a@ 63@2!xl@@!@S*@@@3a@(3@52gx9@B@a@5SA[BcCkDsE{Ȩ_{S[ck*ZX  @ZR NSA[BcCkD{Ũ_@@*!{S[c*` !t"4! @5@RR@b@A"@a4R@b@A"@a*!!!!02SA[BcC{Ĩ_<|45@b@A"@a Rs@b@A"@a"@c4{ [ GS c s"$G@Osu@ cpa@ 5;@RC!R  !Rq@z!R$ !RPq@zs*!R!Rq@z@zs*@^d@z`T @GO@@B@TU=Rf4@Dq T@@is"3R@!R!R@s*{J*SK[LcM_{ S[c#c-G@vֲ@v#@@GH@BTsN"R@5@d@$Ҝ@qIT} N@s@@a@ c-#@SA[BcC{Ũ_{S3@@SA{è_֡@@$@{S[ckGs@@ss@T6@@C@a#@ACZ@Z {!w!Ds@ru@G@@BTk@Di@d@p@@@`4 hx8qTj @Blj@@4@Q?dqhT9@94qT{B[DcESCkFsGk{S! !0A` 7` !;` 7x@7` !2@ 7s!\+` 7!& 7! ! 7p 7 7! 7t @94! 4! 5Q?dqhT`9s`@9 5@9 4svq 4!0l@50SA{¨_!@^5@!|V5|!N5! F5 !>5!`65`!.`5A70<6!X 6{GSs[cks@Q!RCi5T"R!(x NC  @#'@?aT\:!##@ҠR8aT9#@R'xT@`{ 9t@T@@@@@8'@`@9 4@`4~ҵ@`X4@z@40@9 4Xc`5gxU4iT_8?qT_8?qT_8qT @@?qT9 50e@@-4!(`4!#4!5@K`@@kt8Hj48H@kt8Ck48O@4`4@X@/A @ |@@Z@@ @l@@@@{@@@@A@ A@ @@e@@ca @aa@S{@ @SQҜu@z@a@ @`@u@ZGu "$`@@@@@B@A@@@6@ @`5@@@!<{@@@@@!!!a3u@x5Gu@Ur$u@ZS u6R%!@4@ftG@@BT~K omRUf@@`3 @@ A@ @@@5a3#@@j@@g @@@Z@:@C@ @4@B@ @)@u@@D@DqT@@A@n@a9@@t@@| @@@&@@@ДGR@! Z@@`@еGR@! V-SRU*SA[BcCkDsE{ƨ_{{_out of memory xasprintf: unable to format a buffer ../proc/%u/cmdline/run/openrc/rc.starting/run/openrc/rc.stopping/run/openrc/softlevelsysinitw/etc/runlevels../%s%s/%s/%s/run/openrc/usr/local/etc/init.d/usr/etc/init.d%s/options/%s%s/scheduled/%sbootyestrue1nofalse%s/options/%s/%sfile_regex: %s. '%s'; echo "${description%s%s}"/procRC_OPENRC_PID/proc/self/statusenvID: 0/proc/self/ns/pid/proc/%d/ns/pid/proc/%d/proc/%d/stat/proc/%d/statusenvID:/proc/cmdline. '%s'; echo $extra_commands $extra_started_commands $extra_stopped_commandsexec=%sargv_0=%spidfile=%sdepinfo_=service/run/openrc/deptree#export "'%s=%s=%sLoop detected in stacked runlevels attempting to enter runlevel %s! Ancestors: %s single/run/openrc/scheduled%s/scheduled/%s/%s/run/openrc/daemons/%s%s/%03dexec= pidfile= argv_%d=%sexecargv_namepidfilechrootineedneedsmeiwantwantsmeshutdowniafterprovidedbyiprovideRC_SVCNAMERC_BOOTLEVELiusemkdir `%s': %s /usr/etc/conf.d/usr/local/etc/conf.d/etc/rc.conf/run/openrc/depconfig/etc/rc.conf.d*.conf/etc/conf.d/rcrc_interactiverc_parallelPREFIXXEN0PODMANSYSTEMD-NSPAWNXENULXCRKTUMLVSERVERDOCKEROPENVZrc_sys/proc/cpuinfo(s_context|VxID):[[:space:]]*[1-9]/proc/vz/veinfoenvID:[[:space:]]*[1-9]/proc/vz/versioncontainer=lxc/proc/1/environcontainer=rktcontainer=systemd-nspawn/run/.containerenv/.dockerenvcontainer=docker/proc/xencontrol_d/proc/xen/capabilitiesRC_LIBEXECDIR/usr/libexec/rcRC_UNAME/usr/libexec/rc/sh/gendepends.shibeforekeywordService '%s' needs non existent service '%s' brokenError: %s is the name of a real and virtual service. depinfo_%zu_service='%s' depinfo_%zu_%s_%zu='%s' fopen `%s': %s usesme/run/openrc/starting/run/openrc/started/run/openrc/stopping/run/openrc/inactive/run/openrc/wasinactive/run/openrc/failed/run/openrc/hotplugged/run/openrc/daemons/run/openrc/options/run/openrc/exclusive/run/openrc/tmpstoppedcrashed;\8t,ԐPp,d P<\@xd(Px`$Th|h|(P8`@Dh D G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< G< G< G< G= G"= GB= Gb= G= G= G= G= G> G"> GB> {[*GScks @E73@Rn@ZG`&.RR+ B**1TG@kkT Rw@q@zT.@P"yq,TTq,TqTqT q T RgXQqT!*!X`x`! 5RuR@@@9?q(TR@!@9a5?)TkRB@.@, L@@.ARy38@94! (qT3@8Z@94! qaT3@{Zd 4B@.@  R3 R! !"RzRw qT.@0!.\!!t!!@R~R !!!"Rb@B_q T_qT!!""R!!! RURE5B;R@`B)t@@R4:`@8"84_8@8qaT_q@T!T@959Rs4ARq3@9*@*C)Yqs*@@kkTG@@B@TM{D*SE[FcGkHsI_!/|ЄGA@cGG  !?T!Ga_!!"A !ABGb_{ `@97G@G- R`9 @{¨_G@{!-h{{ G@pW R9{_֠{@G@pH R*_{_{GS[sb&cxk9s @  @@` Rr,@{!!v!+Pqb@b@`@cg9Qxq` c{`c*@ G@p RZ Cs#R!K?qT>R[C{[ GS c k s s!C  @?`'Cc )Ҟ~@<<;?qT~@\C'c )@~@<<&kTG@G@p RoR!G?@"@c@T{HSI[JcKkLsMC_{S3*G )[*cks@c$@ hRrQR;bC!!t`@9qT,@|R` 0*1 T,@@?q{@95 #H?c#'q@`Tq,T@)'+@ R*r*1@TqAz T@*10Tk@  q1T@q!T\r* RR?@**1T,@@G#@v1T,@@7@ (@qT@4,@@w@[@R{@'@*@T,@4a**@{Q*Oq!T;q6RR2*;@**t**)1T,@^@!G@"@c@TqA:`T*q*Y qTH q?RR*****?1!T1@DqTW,@@ R*r)*1TD,@@qThq0RR****?1!T@DqT,@@o R*r*1T ,@@[q T @qTq@T@qTZ*m4!,k@T q`To@?q T,@H(@qATc,@=@l**1`4,@@@6@s@kT@w@kT qTo@q)TB,@$k@ (@qTch; B)*`4,@l@d@*R @qT{VSW[XcYkZs[_{{_out of memory Usage: %s [options] path1 [path2] [...] Options: [ %s ] %3s --%s %s%*sxasprintf: unable to format a buffer %s: empty or relative path/%s: unable to open the root directory: %s%s: %s: could not open %s: %s%s: %s: unable to stat %s: %s%s: %s: symbolic link %s not owned by root%s: symbolic link destination changed%s: creating file%s: open: %s%s: creating directory%s: mkdirat: %s%s: unable to open directory: %s%s: creating fifo%s: mkfifo: %s%s: unable to open fifo: %s%s: is a directory%s: is a file%s: is a fifo%s: chmod: Too many hard links to %s is a symbolic link%s: chmod: %s %s%s: correcting mode%s: chmod: %sToo many hard links to%s: chown: %s %s%s: correcting owner%s: chown: %sfstat: %s: %s%s: invalid mode `%s'%d%s: owner `%s' not foundNOEINFO_COLOR%s (OpenRC [%s]0.55.1) %sYESEINFO_VERBOSEEINFO_QUIETEERROR_QUIET%s: -W cannot be specified along with -d, -f or -pCreate a directory if not existsCreate/empty directoryCreate a file if not existsTruncate fileCreate a named pipe (FIFO) if not existsMode to checkOwner to check (user:group)follow symbolic links (irrelevant on linux)Check whether the path is writable or notDisplay this help outputDisable color outputDisplay software versionRun verboselyRun quietly (repeat to suppress errors)[arg]directory-truncatefile-truncatepipesymlinkswritablehelpnocolorverbosequiet_R\ztdDfFpm:o:sWChqVv;X G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Mebegin.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Meend.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Meerror.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Meerrorn.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Meindent.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Meinfo.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Meinfon.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Meoutdent.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Mesyslog.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Meval_ecolors.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Mewaitfile.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Mewarn.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Mewarnn.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@8888TTT$$Ptd44QtdRtd  /lib/ld-musl-aarch64.so.1GNU3-:Xe5o*#ԵXT6@67 4s"R:*k ( | B Y%Kf`^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardstrrchrstrcmpecolorprintfexit__errno_locationstrtoimaxeerrorxstrchrmemcpyatoistrcasecmpunsetenvgettimeofdayebeginvstatnanosleepeendv__stack_chk_failstrlenmallocstderrfputselogeindenteoutdenteindentveoutdentveerrorfreeeendewendewendveinfoveinfovnewarnvewarnvneinfoeinfonewarnewarnneerrornebeginlibeinfo.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc08@H P X `hpx!"#()34 (08@ H P X `hpx $%&'*+,-./0124 5 ê*{{_{ GB8    Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< {CS[c*kG3@@R@"!,S5@R`RRRR R,NRQqT!.4!.4!.~@4!.y4!7.u 5@R-@`@94R`4R`@5 QBS@!7.\5f@u4/P!\.P4!|.K`5@Rk@A@.;! @9Q$qTF1T qTA@.sBa@`5` @sb/ @Qb"RRv5c@/4 &k-T{s#{s41`TqmT@@?T @@?kT[s R!05RG@@B@ TsqT{ukLT`R9{y@_T_T} G@x0 RTAp9@ kT?h78!04!1@4!014!L14!04!0`4!l1 4!.z 4!.u 4!\.p*5!0**K!0c 4! 1^ 4!,1Y 4!H1T 4!h1O` 4!.J 4!.E4!1@5"*!18`5!11`5!1*`56R10@?*J7*!0`?cG*`?cGcGcGBG@?BGBGBGBGBGBGBGBGBG4RBGBG@*{QSR[ScTkU_!/|ЄGA@cGG`!`?T!Ga_`!`!"A !ABGb_{ `bC97G@fG3{ R`b9 @{¨_G@{!3{{{_eval_ecolorsGOOD='%s' WARN='%s' BAD='%s' HILITE='%s' BRACKET='%s' NORMAL='%s' veendvewendewaitfileesyslogelog%s: invalid log level `%s'%s: not enough argumentsEINFO_LOG%s: invalid timeoutWaiting for %stimed out waiting for %sout of memory eerroreerrornveinfoveinfonvewarnvewarnnvebeginveindentveoutdent%s: unknown appletalertcritdebugemergerrnonenoticepanicwarning;4@`L`t,zRx  0,(< @P`A BTd4DG<AA C BF  ox > 0P ( ( o$# % .>Mewend.debugC֖.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 @8>@( ( (JBP P 0T ^O@d j  p200x4@ELF@@8 @@@@888PP0008@@@  TTT$$PtdDDQtdRtd000/lib/ld-musl-aarch64.so.1GNU]R8m >RziX.@./ 4L "E_= ( X6rB /| ^ mt z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guard__environposix_spawnpwaitpid__errno_location__stack_chk_failstrerroreerrorxprintfstrdupstderrfputsexitstrseprc_stringlist_newstatunsetenvstrrchroptarggetopt_longoptindrc_stringlist_freesetmntentgetmntentendmntentrc_sysputcharsscanfstrcmprc_stringlist_addrc_stringlist_deletegetenvrc_yesnolibeinfo.so.1librc.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc   ",x    ( 0!8#@$H%P&X'`(h)p*x+,-0GDDDDD{{_{:G9    >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< G< G< G< G= G"= GB= Gb= G= G= G= G= G> G"> {c*GS[ks@oc,4<,*@,\@R@)X76#Gt/RTRA*Q1TМG@kT{@@k+T`@@ UGo@@BҀ(TQqLTqLTHq TlT qT4qT RQPqT#@ X`xa L- Gh6, @@b CJc GRXq!T qTa/@-c-!--@RRMR@@@9!Q?qTS!,@"@qT@B,\@9,!h68- $9RuC@ @ `4Bq@$@TW@?kTqTW@?kmT@4qTW@?kTRRA@''@ 5A@!T-`-"RARF>!.."R`c@B_q T_qT!.L."R@,!.R$R"R zyA@9@@ 4W*kTA@kmT{@`hY5,!h6 `@ @.@S,ak6vv@@uK*D@ak6,i!@q 5bqTq T@,#N7"qTT q!T@ R{ !RBqTqAT @"A@.#@@ @!'@ /5R{N RSO[PcQkRsS_!1|ЄGA@cGG=    !?T!Ga_!!"A !ABGb_{ `@97G@G8 R`9 @{¨_G@{!8 {BG{;C@/€*B`*  Acl* @a7#G#*@5@Rf6@qT@?@ [arg]blockdevicemountargsoptionspassnofstypehelpnocolorverbosequiet35MRbmop:t:ChqVv;D8 \(pd zRx 0,< @`A BTd4DG ((ADBB0,AA E CCBC@lAA BF CLMRcbomyopthCVvq+Dm!/ 08ox( 9 `HX h  o$ # % @ W]fstabinfo.debugǘ1.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 8((9@h h JBX X HT ^ O Pd  h jpMxD00 0088@@@@ ``   H 4ELF @@8 @@@@888 0    TTT$$Ptd 44QtdRtd/lib/ld-musl-aarch64.so.1GNUЉdg& ) ox'6@ `" ( B ^ t `z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_maingetenvstrrchreerrorxstrcmprc_service_value_getprintffreerc_service_value_setlibeinfo.so.1librc.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc X`hpx    {{_{GB=    Gb= G= G= G= G= G> G"> GB> Gb> G> G> G> {[*@,SR@@l,qT@v@95,!0-4!x-@5 - RSAR[B{è_!-4!-5 @0.R!4|GA@cGG        ! ?T!Ga_ ! !"A !ABGb_{ `"@97G@FG`/G R`"9 @{¨_G@{!@`/P{{{_RC_SVCNAME%s: no service specified%s: no option specifiedservice_get_valueget_options%sservice_set_valuesave_options%s: unknown applet;4`L`t,zRx  0,(< @P`A BTd4DG,@A0BEq A l  ` oxp ; @ (x o$H#%pppppppppppp `` get_options.debugO~.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 8pp;@xJB(( THH^``Oppd`` j p2  x 4   @@8 ELF@@8 @@@@888 HHHXXX  TTT$$Ptd00044QtdRtdHHH/lib/ld-musl-aarch64.so.1GNU8|P!(+_ @  " ( B ^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_mainrc_newer_thanlibeinfo.so.1librc.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc  Hb{{_{G">    GB> Gb> G> G> G> q T{S*SzsҠ@ 6sk TR@SA{è_ R R_!`5|GA@cGG     ! ?T!Ga_ ! !"A !ABGb_{ `"@97G@G! R`"9 @{¨_G@{!@!{{{_;40L `\tzRx 0,< @`A BTd4DG0plC0BCN A B  HPox xx8x o$#%X` is_newer_than.debug|m.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0  8@xJB88xT^Opd`` j  p004~hhHHPPXX xx8 ELF@@8 @@@@888 HHHXXX  TTT$$Ptd00044QtdRtdHHH/lib/ld-musl-aarch64.so.1GNU㦕9Ջ>W @  " ( B ^ t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_mainrc_newer_thanlibeinfo.so.1librc.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc  Hb{{_{G">    GB> Gb> G> G> G> q T{S*SzsҠ@ 6sk T R@SA{è_R R_!`5|GA@cGG     ! ?T!Ga_ ! !"A !ABGb_{ `"@97G@G! R`"9 @{¨_G@{!@!{{{_;40L `\tzRx 0,< @`A BTd4DG0plC0BCN A B  HPox xx8x o$#%X` is_older_than.debug].shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0  8@xJB88xT^Opd`` j  p004~hhHHPPXX xx8 ELFL@@8 @@@@888$$  TTT$$Ptd"""LLQtdRtd/lib/ld-musl-aarch64.so.1GNUcaNDjxbSn<@<= T"n+ ( b{!B h[#(<s3A^  t z __cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardmallocvsnprintfstderrfputsreallocexit__stack_chk_failstrdupstrsepkillsigfillsetsigemptysetsigprocmaskchdirsyslogopendirreaddirclosediratoirc_stringlist_findgetpidgetsideinfofopenfeofgetlinesscanffcloserc_stringlist_newunsetenvstrrchrrc_stringlist_addugetopt_longoptindrc_stringlist_freeeerroropenlogstatoptargrc_sysputcharforkwaiteerrorxexeclp__errno_locationlibeinfo.so.1librc.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc #+8 ( 0 8 @ H PX`hpx !"$%&'()*, -(.0/80@1H2P3X4`5h6p7x89:;GDDa{{_{F7    G8 G"8  GB8 Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< G< G< G< G= G"= GB= Gb= G= G= G= G= G> G"> GB> C{ [ *GS cks@W`!@RU@!$.B*R @*1TG@kT`*Qxq)T) R.@RaR=v5**GW@@B@Tq@T,TXq@Tq T qT R*qTqTq!TG9@FR@qTq R=!"RR3 qT.@B!,@RR$!@P"Rb@B_q T_qT!@"R`!@:Rh4R*1 T 4skT@rT`4!t!<`RBx!`R! R6@(qaT`R!{KRSL[McNkOsPC_! /|ЄGA@cGG    !?T!Ga_!!"A !ABGb_{ `@97G@G` / R`9 @{¨_G@{!` {C{[ GS c k s   @?Cc'Cg )~@<===?qTRkTG@,?Qc~@C'g )@~@<===G@>3 R!G?@"@c@T{HSI[JcKkLsMC_{GS[sB*cxk9s @  @@` Rr,@?T!4O! XJb@b@`@cg9Qxq` c{`<*@ G@> RZ Cs#R!K?qTR({c*GSc[cks[@aR5S@R21T!`Rh@RARG@@B T 8Rz!@L\*4@@B*@@m@***'k`T* R!#q@z!T66**\R q@T*#'@! OC7 5@##@?TA#@757@?1T*!`R*R****{VSW[XcYkZs[_{{_out of memory xasprintf: unable to format a buffer Usage: %s [options] [signal number] Options: [ %s ] %3s --%s %s%*schdir /proc failed.cannot opendir(/proc)PPid: %dUnable to read pid from /proc/%d/statusWould send signal %d to process %dEINFO_QUIETInvalid omit pid value %s,;:NOEINFO_COLOR%s (OpenRC [%s]0.55.1) %sYESEINFO_VERBOSEEERROR_QUIETInvalid signal %s/proc/versionUnable to fork-tUnable to execute mountmount returned non-zero exit statusCould not mount /procUnable to mount /proc file systemprint what would be doneomit this pid (can be repeated)Display this help outputDisable color outputDisplay software versionRun verboselyRun quietly (repeat to suppress errors)[arg]dry-runomithelpnocolorverbosequietdo:ChqVv;LxdxD|HzRx l0,< @`A BTd4DG@AA"!BD D\0`AA E CCBC@AA BE BC@@ AA BD Dl "d"o"h"CM"V"v"q!!"'"<"U"c"9GR  oxx     o$# %i@( ""kill_all.debug.shstrtab.interp.note.gnu.build-id.gnu.hash.dynsym.dynstr.rela.dyn.rela.plt.relr.dyn.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.data.bss.gnu_debuglink 88TT$&oxx,0 8xx@  JB T ^OPd@@l jp x""L##8    H 4ELF@@8 @@@@888h"h"  H    TTT$$Ptd!!!DDQtdRtd  /lib/ld-musl-aarch64.so.1GNUC픘Oy 1@12 ^@"Ifo ( "PB )/W^ t z \__cxa_finalize__deregister_frame_info_ITM_registerTMCloneTable_ITM_deregisterTMCloneTable__register_frame_info_init_fini__libc_start_main__stack_chk_guardmallocregcompregerroreerrorxstderrfputsexit__stack_chk_failprintfstrdupstrsepstrrchrrc_stringlist_newgetopt_longoptindfopen__errno_locationstrerroroptargsetenvrc_sysputcharrealpathrc_stringlist_addgetlinefcloserc_stringlist_freeregfreestatstrcmpregexecsetmntentgetmntentendmntentstrstrgetenvrc_yesnolibeinfo.so.1librc.so.1libc.musl-aarch64.so.1$ORIGIN/../libeinfo:$ORIGIN/../librc  #/X`hpx     !("0$8%@&H'P(X)`*h+p,x-./0 GDDDDDDDa{{_{*GB9    .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< G< G< G< G= G"= GB= Gb= G= G= G= G= G> G"> GB> {S[cks G3@@Rz@O,|| R)$WA @31TЄG@ @k T\9n`@9q Qq(T@ X`xa  RzG@yG@ xG@wG@v{G@urG@tiG@s`G@@R!77"RR @q!T,@7.7!8$8@RR!88H8"R`@B_q T_qT!888"R!888 R@Rs`Rb`A@9?qTa@8@A@@<+69'@+@33@?T@n@ւ87R@@@@FG@@BT8@;sApAmAj'@j`4[n#@R#@ @!:R` 4@[@qT_1T@` z Y 6 @R555'@##@DA@/@./@5#@/ /@b@ @!9"5@B@q T q Tq@{#@@@qaT_1T_q T3@=MR4R5@R4@R 5@R@4@@/@`4/@B@"@@Tw`7@wR@Rҷ 4 @@@6@RҬ5{T*SU[VcWkXsY_!0|ЄGA@cGG       !?T!Ga_!!"A !ABGb_{ `@97G@G 3 R`9 @{¨_G@{! {{CSG@ "R,4# >,@50G@5^ RDG@@B@T{QSR_{GS[s$c>7x k9C7s @  @@` Rr,@H6!6,8!6b@b@`@cg9Qxq` c{`*@ G@5 RZ;7{7 Cs#R!K?qT^Rk{{_out of memory %s: invalid regex `%s'Usage: %s [options] [mount1] [mount2] ... Options: [ %s ] %3s --%s %s%*sNOEINFO_COLOR%s (OpenRC [%s]0.55.1) %sYESEINFO_VERBOSEEINFO_QUIETEERROR_QUIET%s: `%s' is not a mount point/proc/mountsgetmntinfo: %s/etc/fstab_netdevrootfsfstype regex to findfstype regex to skipnode regex to findnode regex to skipoptions regex to findoptions regex to skippoint regex to findpoint regex to skipprint optionsprint fstypeprint nodeis it a network deviceis it not a network deviceDisplay this help outputDisable color outputDisplay software versionRun verboselyRun quietly (repeat to suppress errors)[arg]skip-fstype-regexskip-node-regexskip-options-regexskip-point-regexnonetdevhelpnocolorverbosequietP 0BZW'9wKNqf:F:n:N:o:O:p:P:iste:E:ChqVv;@< X,lhzRx 0,< @`A BTd4DG$0AABm0AA E CCBC<`AA F