-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcg.rs
1 lines (1 loc) · 122 KB
/
cg.rs
1
# ! [ allow ( dead_code ) ] # ! [ allow ( unused_must_use ) ] mod connect4 { use std :: arch :: x86_64 :: _popcnt64 ; use std :: collections :: hash_map :: DefaultHasher ; use std :: hash :: Hasher ; const WIDTH : usize = 9 ; pub const HEIGHT : usize = 7 ; const FAB_COL : u64 = 0b1111111 ; const FAB_ROW : u64 = ( 1 << ( 7 * 0 ) ) | ( 1 << ( 7 * 1 ) ) | ( 1 << ( 7 * 2 ) ) | ( 1 << ( 7 * 3 ) ) | ( 1 << ( 7 * 4 ) ) | ( 1 << ( 7 * 5 ) ) | ( 1 << ( 7 * 6 ) ) | ( 1 << ( 7 * 7 ) ) | ( 1 << ( 7 * 8 ) ) ; const COLS : [ u64 ; WIDTH ] = [ FAB_COL << ( 7 * 0 ) , FAB_COL << ( 7 * 1 ) , FAB_COL << ( 7 * 2 ) , FAB_COL << ( 7 * 3 ) , FAB_COL << ( 7 * 4 ) , FAB_COL << ( 7 * 5 ) , FAB_COL << ( 7 * 6 ) , FAB_COL << ( 7 * 7 ) , FAB_COL << ( 7 * 8 ) , ] ; const ROWS : [ u64 ; HEIGHT ] = [ FAB_ROW << 0 , FAB_ROW << 1 , FAB_ROW << 2 , FAB_ROW << 3 , FAB_ROW << 4 , FAB_ROW << 5 , FAB_ROW << 6 , ] ; const D1_MASK : u64 = ( COLS [ 0 ] | COLS [ 1 ] | COLS [ 2 ] | COLS [ 3 ] | COLS [ 4 ] | COLS [ 5 ] ) & ( ROWS [ 3 ] | ROWS [ 4 ] | ROWS [ 5 ] | ROWS [ 6 ] ) ; const D2_MASK : u64 = ( COLS [ 0 ] | COLS [ 1 ] | COLS [ 2 ] | COLS [ 3 ] | COLS [ 4 ] | COLS [ 5 ] ) & ( ROWS [ 0 ] | ROWS [ 1 ] | ROWS [ 2 ] | ROWS [ 3 ] ) ; const H_MASK : u64 = COLS [ 0 ] | COLS [ 1 ] | COLS [ 2 ] | COLS [ 3 ] | COLS [ 4 ] | COLS [ 5 ] ; const V_MASK : u64 = ROWS [ 0 ] | ROWS [ 1 ] | ROWS [ 2 ] | ROWS [ 3 ] ; const fn won ( bb : u64 ) -> bool { let d1 = bb & ( bb >> 6 ) & ( bb >> 12 ) & ( bb >> 18 ) & D1_MASK ; let d2 = bb & ( bb >> 8 ) & ( bb >> 16 ) & ( bb >> 24 ) & D2_MASK ; let h = bb & ( bb >> 7 ) & ( bb >> 14 ) & ( bb >> 21 ) & H_MASK ; let v = bb & ( bb >> 1 ) & ( bb >> 2 ) & ( bb >> 3 ) & V_MASK ; v + h + d1 + d2 > 0 } # [ derive ( Debug , Eq , PartialEq , Clone , Copy ) ] pub enum Outcome { Win , Draw , None , } # [ derive ( Debug , Eq , PartialEq , Clone , Copy ) ] pub struct Connect4 { pub my_bb : u64 , pub op_bb : u64 , pub height : [ u8 ; WIDTH ] , pub player : u8 , pub outcome : Outcome , pub last_move : u8 , } impl Connect4 { pub fn hash ( & self ) -> usize { let mut hasher = DefaultHasher :: new ( ) ; hasher . write_u64 ( self . my_bb ) ; hasher . write_u64 ( self . op_bb ) ; hasher . finish ( ) as usize } pub fn new ( ) -> Self { Self { my_bb : 0 , op_bb : 0 , height : [ 0 ; WIDTH ] , player : 0 , outcome : Outcome :: None , last_move : u8 :: max_value ( ) , } } fn full ( self ) -> bool { self . turn ( ) == ( WIDTH * HEIGHT ) as i32 } pub fn turn ( self ) -> i32 { unsafe { _popcnt64 ( ( self . my_bb | self . op_bb ) as i64 ) } } pub fn step ( & mut self , action : u8 ) { self . my_bb ^= 1 << ( self . height [ action as usize ] as usize + HEIGHT * ( action as usize ) ) ; self . height [ action as usize ] += 1 ; std :: mem :: swap ( & mut self . my_bb , & mut self . op_bb ) ; self . player = 1 - self . player ; self . last_move = action ; if won ( self . op_bb ) { self . outcome = Outcome :: Win ; } else if self . full ( ) { self . outcome = Outcome :: Draw ; } } pub fn on_set_indices < T > ( & self , mut func : T ) where T : FnMut ( usize ) , { let mut maps = [ self . my_bb , self . op_bb ] ; for i in 0 .. 2 { while maps [ i ] != 0 { let r = maps [ i ] . trailing_zeros ( ) ; maps [ i ] ^= 1 << r ; let nn_ind = r as usize * 2 + i ; func ( nn_ind ) ; } } } pub fn print ( & self ) { for row in ( 0 .. HEIGHT ) . rev ( ) { for col in 0 .. WIDTH { let index = 1 << ( row + HEIGHT * col ) ; eprint ! ( "{} " , if self . my_bb & index != 0 { "O" } else if self . op_bb & index != 0 { "X" } else { "." } ) ; } eprintln ! ( ) ; } eprintln ! ( "0 1 2 3 4 5 6 7 8" ) ; } } } mod decode_base16k { use crate :: nn_string :: NNSTR ; use crate :: NNLEN ; use std :: { fs :: File , io :: { BufReader , Read } , mem , } ; pub fn encode_b16k ( binary_file : & str ) -> ( usize , Vec < u16 > ) { let f = File :: open ( binary_file ) ; let mut reader = BufReader :: new ( f . unwrap ( ) ) ; let mut buffer = Vec :: new ( ) ; reader . read_to_end ( & mut buffer ) ; let mut enc : Vec < u16 > = Vec :: new ( ) ; enc . reserve ( buffer . len ( ) * 6 / 5 ) ; let mut code : u16 = 0 as u16 ; for ( i , b ) in buffer . iter ( ) . enumerate ( ) { let byte_value = * b as u16 ; match i % 7 { 0 => { code = byte_value << 6 ; } 1 => { code |= byte_value >> 2 ; code += 0x5000 ; enc . push ( code ) ; code = ( byte_value & 3 ) << 12 ; } 2 => { code |= byte_value << 4 ; } 3 => { code |= byte_value >> 4 ; code += 0x5000 ; enc . push ( code ) ; code = ( byte_value & 0xf ) << 10 ; } 4 => { code |= byte_value << 2 ; } 5 => { code |= byte_value >> 6 ; code += 0x5000 ; enc . push ( code ) ; code = ( byte_value & 0x3f ) << 8 ; } 6 => { code |= byte_value ; code += 0x5000 ; enc . push ( code ) ; code = 0 ; } _ => { } } } if buffer . len ( ) % 7 > 0 { code += 0x5000 ; enc . push ( code ) ; } ( buffer . len ( ) , enc ) } pub fn decode_b16k ( ) -> Vec < u8 > { let mut length = NNLEN / 2 ; let mut i = 0 ; let mut code : usize = 0 ; let mut byte_value = 0u8 ; let mut pos = 0 ; let chars = NNSTR . encode_utf16 ( ) . collect :: < Vec < u16 > > ( ) ; let mut out : Vec < u8 > = Vec :: new ( ) ; out . reserve ( length ) ; while length > 0 { length -= 1 ; if ( ( 1 << i ) & 0x2b ) != 0 { code = chars [ pos ] as usize - 0x5000 ; pos += 1 ; } match i % 7 { 0 => { byte_value = ( code >> 6 ) as u8 ; out . push ( byte_value ) ; byte_value = ( ( code & 0x3f ) << 2 ) as u8 ; } 1 => { byte_value |= ( code >> 12 ) as u8 ; out . push ( byte_value ) ; } 2 => { byte_value = ( ( code >> 4 ) & 0xff ) as u8 ; out . push ( byte_value ) ; byte_value = ( ( code & 0xf ) << 4 ) as u8 ; } 3 => { byte_value |= ( code >> 10 ) as u8 ; out . push ( byte_value ) ; } 4 => { byte_value = ( ( code >> 2 ) & 0xff ) as u8 ; out . push ( byte_value ) ; byte_value = ( ( code & 3 ) << 6 ) as u8 ; } 5 => { byte_value |= ( code >> 8 ) as u8 ; out . push ( byte_value ) ; } 6 => { byte_value = ( code & 0xff ) as u8 ; out . push ( byte_value ) ; } _ => { } } i = ( i + 1 ) % 7 ; } out } pub fn f16_to_f32 ( i : u16 ) -> f32 { if i & 0x7FFFu16 == 0 { return unsafe { mem :: transmute ( ( i as u32 ) << 16 ) } ; } let half_sign = ( i & 0x8000u16 ) as u32 ; let half_exp = ( i & 0x7C00u16 ) as u32 ; let half_man = ( i & 0x03FFu16 ) as u32 ; if half_exp == 0x7C00u32 { if half_man == 0 { return unsafe { mem :: transmute ( ( half_sign << 16 ) | 0x7F80_0000u32 ) } ; } else { return unsafe { mem :: transmute ( ( half_sign << 16 ) | 0x7FC0_0000u32 | ( half_man << 13 ) ) } ; } } let sign = half_sign << 16 ; let unbiased_exp = ( ( half_exp as i32 ) >> 10 ) - 15 ; if half_exp == 0 { let e = ( half_man as u16 ) . leading_zeros ( ) - 6 ; let exp = ( 127 - 15 - e ) << 23 ; let man = ( half_man << ( 14 + e ) ) & 0x7F_FF_FFu32 ; return unsafe { mem :: transmute ( sign | exp | man ) } ; } let exp = ( ( unbiased_exp + 127 ) as u32 ) << 23 ; let man = ( half_man & 0x03FFu32 ) << 13 ; unsafe { mem :: transmute ( sign | exp | man ) } } } mod mcts { use crate :: connect4 :: Outcome ; use crate :: nn :: NN ; # [ cfg ( target_os = "windows" ) ] use crate :: random :: dirichlet_noise ; use crate :: sample :: Sample ; use crate :: sample :: SampleStore ; use crate :: NNManager ; use crate :: Node ; use crate :: Pool ; use crate :: CONF ; use crate :: POLICY_SIZE ; use std :: io ; use std :: mem :: swap ; use std :: time :: Duration ; use std :: { collections :: HashMap , mem , time :: Instant } ; use rand :: rngs :: ThreadRng ; use rand :: Rng ; const DIRICHLET_EPS : f32 = 0.3 ; macro_rules ! parse_input { ( $ x : expr , $ t : ident ) => { $ x . trim ( ) . parse ::<$ t > ( ) . unwrap ( ) } ; } pub struct MCTS { pool : Pool , root : Box < Node > , nn : NNManager , r : ThreadRng } impl Drop for MCTS { fn drop ( & mut self ) { let mut new_r = Box :: new ( Node :: new ( ) ) ; swap ( & mut new_r , & mut self . root ) ; self . pool . push ( new_r ) ; self . pool . ptrs . drain ( .. ) . for_each ( | n | { Box :: into_raw ( n ) ; } ) ; } } impl MCTS { pub fn new ( ) -> MCTS { let mut mcts = MCTS { pool : Pool :: new ( 2000000 ) , root : Box :: new ( Node :: new ( ) ) , nn : NNManager { cache : HashMap :: new ( ) , nn : NN :: new ( ) , access : 0 , hit : 0 , } , r : rand :: thread_rng ( ) } ; mcts . nn . nn . read_weights ( ) ; for _ in 0 .. 2 { mcts . root . playout ( & mut mcts . nn , & mut mcts . pool ) ; } mcts } pub fn clear ( & mut self ) { let mut a = self . pool . pop ( ) ; swap ( & mut a , & mut self . root ) ; self . pool . push ( a ) ; } fn update_with_action ( & mut self , action : u8 ) { if self . root . children . is_empty ( ) { self . root . select ( & mut self . nn , & mut self . pool ) ; } let mut new_root = Option :: None ; while self . root . children . len ( ) > 0 { if self . root . children . last ( ) . unwrap ( ) . game . last_move == action { new_root = Some ( self . root . children . pop ( ) . unwrap ( ) ) ; } else { self . pool . push ( self . root . children . pop ( ) . unwrap ( ) ) ; } } mem :: swap ( new_root . as_mut ( ) . unwrap ( ) , & mut self . root ) ; self . pool . push ( new_root . unwrap ( ) ) ; } # [ cfg ( target_os = "windows" ) ] fn get_move_probs_selfplay ( & mut self ) -> ( u8 , [ f32 ; POLICY_SIZE ] ) { for _ in 0 .. CONF . iters { self . root . playout ( & mut self . nn , & mut self . pool ) ; } let mut p = self . root . prob_vector ( ) ; if self . root . game . turn ( ) < 30 { let dir = dirichlet_noise ( & mut self . r ) ; let mut sum = 0f32 ; for c in self . root . children . iter ( ) { let i = c . game . last_move as usize ; sum += dir [ i ] ; } for c in self . root . children . iter ( ) { let i = c . game . last_move as usize ; p [ i ] = p [ i ] * ( 1. - DIRICHLET_EPS ) + DIRICHLET_EPS * dir [ i ] / sum ; } } let mut best = 0.0 ; let mut a = u8 :: MAX ; self . root . children . iter ( ) . for_each ( | c | { let mut d = p [ c . game . last_move as usize ] ; if self . root . game . turn ( ) < 30 { d *= self . r . gen_range ( 0.0 .. 1.0 ) ; } if d > best { best = d ; a = c . game . last_move ; } } ) ; ( a , p ) } fn get_move_probs_play ( & mut self , endt : Instant ) -> u8 { while Instant :: now ( ) < endt { self . root . playout ( & mut self . nn , & mut self . pool ) ; } let a = self . root . children . iter ( ) . max_by_key ( | b | { if self . root . terminal { b . value as i32 } else { b . visits } } ) ; eprintln ! ( "root visits: {}" , self . root . visits ) ; a . unwrap ( ) . game . last_move } # [ cfg ( target_os = "windows" ) ] pub fn self_play ( & mut self , ss : & mut SampleStore ) { while self . root . game . outcome == Outcome :: None { let ( a , p ) = self . get_move_probs_selfplay ( ) ; let mut sample = Sample :: new ( & self . root ) ; sample . p . clone_from ( & p ) ; ss . add_sample ( sample ) ; self . update_with_action ( a ) ; } eprintln ! ( "{} nn rate" , 100f32 * self . nn . hit as f32 / self . nn . access as f32 ) ; } pub fn cg ( & mut self ) { let mut endt ; let mut input_line = String :: new ( ) ; io :: stdin ( ) . read_line ( & mut input_line ) . unwrap ( ) ; let mut my_last : i32 = - 1 ; for i in 0 .. 65 { io :: stdin ( ) . read_line ( & mut input_line ) . unwrap ( ) ; for _ in 0 .. 7 as usize { io :: stdin ( ) . read_line ( & mut input_line ) . unwrap ( ) ; } input_line . clear ( ) ; io :: stdin ( ) . read_line ( & mut input_line ) . unwrap ( ) ; let num_valid_actions = parse_input ! ( input_line , i32 ) ; for _ in 0 .. num_valid_actions as usize { io :: stdin ( ) . read_line ( & mut input_line ) . unwrap ( ) ; } input_line . clear ( ) ; io :: stdin ( ) . read_line ( & mut input_line ) . unwrap ( ) ; if i == 0 { endt = Instant :: now ( ) + Duration :: from_millis ( 900 ) ; } else { endt = Instant :: now ( ) + Duration :: from_millis ( 100 ) ; } if my_last != - 1 { self . update_with_action ( my_last as u8 ) ; } let mut hard_coded : i32 = - 1 ; if input_line != "STEAL" { let opp_action = parse_input ! ( input_line , i32 ) ; if opp_action >= 0 { self . update_with_action ( opp_action as u8 ) ; } if opp_action == - 1 { hard_coded = 1 ; self . update_with_action ( hard_coded as u8 ) ; my_last = - 1 ; } else if i == 0 { hard_coded = - 2 ; } } let mut a = self . get_move_probs_play ( endt ) ; if hard_coded >= 0 { a = hard_coded as u8 ; } else { if hard_coded == - 2 { my_last = - 1 ; println ! ( "STEAL" ) ; continue ; } my_last = a as i32 ; } self . root . game . print ( ) ; if self . root . terminal { println ! ( "{} {}" , a , 0 - self . root . value ) ; } else { println ! ( "{} {}" , a , 0. - self . root . q / self . root . visits as f64 ) ; } } } } } mod nn { use crate :: decode_base16k :: decode_b16k ; use crate :: decode_base16k :: f16_to_f32 ; use crate :: Connect4 ; use crate :: INPUT_SIZE ; use crate :: POLICY_SIZE ; use std :: collections :: HashMap ; pub struct NnOutput { pub p : [ f32 ; POLICY_SIZE ] , pub v : f32 , } struct DenseLayer { input : Vec < f32 > , weights : Vec < f32 > , bias : Vec < f32 > , } impl DenseLayer { fn forward ( & self , output : & mut Vec < f32 > ) { output . copy_from_slice ( & self . bias ) ; let out_size = output . len ( ) ; for j in 0 .. self . input . len ( ) { let val = self . input [ j ] ; if val != 0.0 { for i in 0 .. out_size { output [ i ] += val * self . weights [ j * out_size + i ] ; } } } } fn forward_game ( & self , game : & Connect4 , output : & mut Vec < f32 > ) { output . copy_from_slice ( & self . bias ) ; let out_size = output . len ( ) ; game . on_set_indices ( | nn_ind | { for j in 0 .. out_size { output [ j ] = output [ j ] + self . weights [ j + out_size * nn_ind ] ; } } ) ; } pub fn new ( input_size : usize ) -> DenseLayer { let mut r = DenseLayer { input : Vec :: new ( ) , weights : Vec :: new ( ) , bias : Vec :: new ( ) , } ; r . input . resize ( input_size , 0. ) ; r } } pub struct NN { path : Vec < DenseLayer > , } fn relu ( v : & mut Vec < f32 > ) { for i in v . iter_mut ( ) { * i = i . max ( 0. ) ; } } pub fn softmax ( v : & mut [ f32 ; POLICY_SIZE ] ) { let max = v . iter ( ) . fold ( f32 :: NEG_INFINITY , | max , i | if * i > max { * i } else { max } ) ; let mut sum : f32 = 0. ; v . iter_mut ( ) . for_each ( | i | { * i = f32 :: exp ( * i - max ) ; sum += * i ; } ) ; v . iter_mut ( ) . for_each ( | i | ( * i ) /= sum ) ; } union U8x2 { bytes : [ u8 ; 2 ] , short : u16 , } impl NN { pub fn forward ( & mut self , game : & Connect4 ) -> NnOutput { let mut res_raw = vec ! [ 0. ; POLICY_SIZE + 1 ] ; let mut res = NnOutput { p : [ 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0 ] , v : 0.0 , } ; for i in 0 .. self . path . len ( ) - 1 { let ( a , b ) = self . path . split_at_mut ( i + 1 ) ; if i == 0 { a . last ( ) . unwrap ( ) . forward_game ( & game , & mut b [ 0 ] . input ) ; } else { a . last ( ) . unwrap ( ) . forward ( & mut b [ 0 ] . input ) ; } relu ( & mut b [ 0 ] . input ) ; } self . path . last ( ) . unwrap ( ) . forward ( & mut res_raw ) ; for i in 0 .. POLICY_SIZE { res . p [ i ] = res_raw [ i ] ; } res . v = f32 :: tanh ( res_raw [ POLICY_SIZE ] ) ; softmax ( & mut res . p ) ; res } pub fn new ( ) -> NN { NN { path : vec ! [ DenseLayer :: new ( INPUT_SIZE ) , DenseLayer :: new ( 128 ) , DenseLayer :: new ( 64 ) , DenseLayer :: new ( 64 ) , ] , } } pub fn read_weights ( & mut self ) { let buffer_f16 = decode_b16k ( ) ; let mut buffer_f32 = Vec :: new ( ) ; buffer_f32 . reserve ( buffer_f16 . len ( ) / 2 ) ; for i in ( 0 .. buffer_f16 . len ( ) ) . step_by ( 2 ) { unsafe { let bytes = U8x2 { bytes : [ buffer_f16 [ i ] , buffer_f16 [ i + 1 ] ] , } ; buffer_f32 . push ( f16_to_f32 ( bytes . short ) ) ; } } let mut id = 0 ; for i in 0 .. self . path . len ( ) { let next_size = if i == self . path . len ( ) - 1 { POLICY_SIZE + 1 } else { self . path [ i + 1 ] . input . len ( ) } ; let weights_size = self . path [ i ] . input . len ( ) * next_size ; self . path [ i ] . weights . resize ( weights_size , 0.0 ) ; self . path [ i ] . bias . resize ( next_size , 0.0 ) ; for j in 0 .. weights_size { self . path [ i ] . weights [ j ] = buffer_f32 [ id ] ; id += 1 ; } for j in 0 .. next_size { self . path [ i ] . bias [ j ] = buffer_f32 [ id ] ; id += 1 ; } } } } pub struct NNManager { pub cache : HashMap < usize , NnOutput > , pub nn : NN , pub access : usize , pub hit : usize , } impl NNManager { pub fn get ( & mut self , game : & Connect4 ) -> & NnOutput { let hash = game . hash ( ) ; if ! self . cache . contains_key ( & hash ) { self . cache . insert ( hash , self . nn . forward ( game ) ) ; } else { self . hit += 1 ; } self . access += 1 ; & self . cache [ & hash ] } } } mod nn_string { pub const NNSTR : & str = "瓦螢灞珞縗护庉傤糋枪樀緊睹秜岞喪挨裩恀瓏嬽樹硑嬝裡糂奸瓇娾橺抟攤戬竛梠矽屺勍悦袦蒨觸涆籠婇恦蒌推揉卹诮砏姊媆癱焨訦潒唪碛稏牚窜挟诧紩琨猹墋劀糀尩按唚焐磗眩櫁糉蠞濊爲匪潿稻妴瑰尩甩刊舜愁墠扠撗趭敨幒欒犍娦覨劘朢跈媙幞瀲堏槥貨掟濫粁袜竡娺檇梻弗癫嚺肎籁婱務嚘玩泧蠚判紑祂窃犏袤滪凊愐睿寊券悿疤怪瑲傰純因謕烉愖爉趪泞疽筧抎肝嬦努禢膢璃睬凄峔梚倅盪氢瑿突誀碰皞姊覺缦緩粖櫗囤茠莆咊瘖泜磴牔抡崥噪姚蛸穄瞠猂蚍掕夨濁熢瀟噽禪度岣胪煪放礉夏橀纵疩公湺沞爩媅穑虡舥豫杉賔竜姙扫晬縤檊凲泪秓姯牺貇箨搦涺轚琂磟剘炅檥嚫琪絈秈硢婨暑耥耨嗺埞澟穙犰犎朧碋躩禴笈妈艑炲攫讉漒歌礐嬁猽職疬徨尒悘炏妝拌湠讧冉忱彨簜秤嫔棂趝墪脺堠緃稨欈豢稠蝩忺筄湓垻扈肠茦嫫莚箊砕嗚劏檥嬦甉觲藜瑬眖諛躶氳傊僲努疄砹抔躙薫墋告桶燊媝槈粔玮菩堊貲磯寊剓艩碣蕇枢蓼瘔稈婏躍戩牉嫲菮景礉詘劒漣豦櫲祼禧嬬押突耬卉僚礂渁妃牐誚甫喧宱秔男娡犫犱缞竉煱蟈籹穰舾嚷焦择蕓嚊綶姓拂劤圫蠇檹崌祂婦儲塎枥擪檊棠爒稌檖檳瞪萉绋啒糑碒穎誥咥棧櫛塔聐稁娥偼堬塪揲畲脮喹芲誥砰礉轡勠盞壧樝傑妯廫嶩捬笞嬁爲衅螜瘇詪旄臩娗詏誦窨琬珫倔澍窊嫅傊岫灊穢葮烖竃竊务谣瑇爲矖糱竛媃劥喥薇夂材绀盕媏蚛維宊濪瀜臀筎劙纥匤貆痊檠盶失觋檁昱抪勺埒犱禾娄檻薪冊樺攴浫穋懍穿堝坄礲寖礯砷嬬扲熥凈躊嗜椭篩匔粞辬嚨稊旚玈屖穤抮焥凨如腦粭竺詗傲夨庋叢贾癲峞檰皑抢桊葺悈礨尀犖籪茩偨滒掞膧畄芚咽洝屩拂戈磍奫牬璤訪浫暲熬紬稅艖暗沥菫汒榬砜婭橝岧貭匫浚熒簸秖抂悶謟倊嶡轚滏囍媡檷褟踈圁色畢埉胴芳圠疊桂濲栋笣抁岬漫菋廲菢滖娭覔蚜紨眪疂瘠碕祡艓抡礬奌帒浦砿稨牻貨墘聋励踞焧粕劐咣娩涊碂灢綹奈窢嚭嬯瘪硲喰砇媐嫌悁戭匩摺婞汗妊誀蒗温跉摢糒祈簂媍廑蘥內萒缸牐妯婓璯温屪蛉収簲奭婌檥夫澨忣唒膶婆苬塐尯敍洺唴灏娶劔誨欏憋囊扐狧箊謒傞吡岫弒莤籸箈爋嚫撳曉槢卾泫嶠匫墟媮艫跉独經嫨剜犠蚯物琂縊煊安芡抑纯揫蟊獆穦嚇艡报嶘别灲笢烓簑扶廁嬣褋槪愌獢奷窸傱輭职翺怦檞稆匀窥笪枉氪盄犳箜狁炼劥媪叺籚畓嬦秖炰本揨桋做碫笄媨汜堦晆疛哖瑈稿窠蚏肯轩耂聾砉秒劋碨搩蘋洂篾盁笥婍袺抯浊窲茖煟媅匄炬漭细凉簆祱籼誷嚬疪芧毋咂莌笆嬊悭猬峫异瀞耨煏橛籿咡斊渻基甙确色傷溕滋劫呴簎嗃檌廒綫碊媪禠翿祅婋墐別巨疢澬淯剥媬庴嚬疨赊樮璝疔奋墩蠛廪趒蹼巖瓈媂棃攤型撚萘聵奵訩炙炠焩僺弐艑媁牸袡微殉砹藶珵税芽岹戦匉剚蛰簈另艹晻嚡晪掚洰榞筳窤蒑萧觉夡憶檯磽劒犹岭尩裲蒈竉夣扵誹匤被咲洴苦竞詀墄帬橬欒輰瞺笙舒媊薯扈挲幺砼嫽牄皫倩烉咃咬煻等单袮羝筪蠂罘竳礷臖桥趥壪掩綺琇尒芮岖爤慫夺怖澨磫檐咇稢玭妩曦疰祮媗躖蜛躈跊嶀棻塪拺纤弫泄宪宰瑆祡詐屄芩說卂細瑚穕稩誖輠禉蝊熶篈宯娔費渤案碂渄篵堝媜撒戩裇羢岾礙失空悩貢袧妒獂級禒檮撙躬硩媡劶祫穟誡皠崨甊氉跺禀嚽刲嚓嶧艋賂塐墘稵艉誡漨穉柙焬胖笂挾庞蠡倊呪墰瓮篦訽蒙喛沉坢援碡婨犖袷唟賥怚荔硬筿芹袕皲芬蛂维櫾嫘艁悊墭垉優枀繎睇苀躱瘦墥蓢栔籸稕劭烇蠬訪圊琢泓竽娸纩嘲嘩忲瑰潋妙扣躒渥瓊撚劤惡箪誏墩璱吋誒紈琐窱襧嚺尬縇妚悼粸嬌苲葰萪早掳叨砺墝茇沰瀫芋噢蝂禠篆苻劯妧玪孲螸碕禦詒溉贤瀉榚獞礜稿婘庪薪攊嫒爮琝嘝婎纍覤彊磙薲籁窖諜蒬撰栫慢檜缥瞉櫥庈缧悫潚摂珋奲櫯灂嚎訆笢猾焘竅犝蚯劭僩倊狐紬米狞呸约栬狚硞簊屩話沄嶨荊怪划笘砭剕岕判淫涺斨犰奤櫇案暫粌艺傈磤寇諞艰枬胋夂幪秬硚剂晼斨浬扲發炯嫿橍窱焬诪竊薖痀禗嫀投欤唬及艮矶劊狍肓肝辊浚諜櫬嬾婔嚻瞧硇蓂蹂橪砻憲峁縭偉耺罰玴夤觠炚帨萦繚姚盶糂窟硿喧咩划灶耜姌觴粖肯诫噁眦徲稑站剈椠绉撪版碄笁挜序渱窪諳寪怜娏愉悤嘩峫虪栶溇竍榘炝嶪暋嬺磠耵睳橺纱崳筩搑皺樵嬊檂皳沮冄曒涬耼砱禓苉縘浫含噎祂嚩拧碥讖蔪恲痈粻媒匢暶炥濉裪搮簭笁槯墸貫桅滲愒箌穬椮岙輰湫璊舸膯禘媗溤舡榄妲揾耕孼謧袢舫涆戃剀臠娬创污嬲悪敒媸舵寭婝悳焘軈衪偼祯嬄苓詶暩匦岒楪肫宪艵嚦綧嘦表蜰珶穝劈璭唨凉蜲躚睠孰扎芭愠粇裪牚絵姕牤扨縯蓨勻历缚嬈舋犄瀩僪睂痸箓察茊犻禒襪倂窜礰凄秣檻欞譫綡轐綸秕犄磊堞穊芲轨粜婤欁瓆樱蛫揻坺眧箧猪府辠蛫緊肄皯筞竐蛃縨楅搹袨瀩媪芽竊戭噋詢藐氁眴艞岣甥斪创傐箽奤欘灲嶥彉管睸粦箲挨皴萱庪竻垀窼糪誯抪撢奪茊膴聯少芟橳献豈杂溸稜碋拊檧崝掬勂瑴揺寥北囂沯沩脊舸磹宥拂躦禬檫衺暈瓌尵匀誓媰瘫涂胼硛岘檲咻縬覫卢砲塓崱棯蚥椮帊諒呒籕筁艰纱播賋蚩嗸繅穦媘梸粩煊苛帜紣坥戼撂嬰倭焋洀萆婙犦瑧缩矊矲獺籀婑爆裋悬囇畊怮涡嫠抇沾蘸蒧筢衲竊笁戢蚷薬嵍孚厢烠砝礴労皨舩敲蝈肛娜欝碐洲皉沒舚搆外媜碅別缇註儬睢寽狏粺崩蓊半摘紋祳稾梲訳濪皂硄腞宊櫕瓁謌悊箂獜漽娮刱撶别涫箲膒怷熾禨岞傡貫祺裺缈獠嫋諃璬冫彲厤肟嫪媥炼岤噫憓恔腡寎礪勄挭挎愳卂痫界勖纲箝狦笒薐簱墱笃纙宯畨稪盒楄娠欁蓆簤瀋澚咢萂糏荄炳帝檉荂惄痝娟櫬岱嚩届裺暢璋喢奰溸撩咪膳皈竄笚助幖攪簊哚妐糂存嫀媬宨报氲现站礅祆呝搧欩嫒刺搟稦牺摚崬柉筊癴擤祪嫓撸娩缪稲蕶糟媥牐硫沛翊垃婐簚竀戔詇脎歈樢禀牬笟兼粃袨诇兹灔粊尲嫇傒琊睈攚甂祜納狑纽覩絫诚棪炽硹独炾昪搩辢桖甪尣横哊碢婊塊竰裏唽婃碧儭簨偂莢樃坿娐劊傥嘦蛊懦疞盷勐牳咯手谫尌褭縤拔媇犮率蓺膰籌垴姜悎纫槊匊敜滓媽誛悇禤栨暒爔澹嫈剋芦躩巉誃嶢矲嶼謈悎辜版焑脂砻嬹狃碛蚥櫈忣刈祈嬤談桲蔩衇苈蘒糜竱艖烁漪师砚廲澴嬎婁繎紡淈噪坮砰婏嫹皡紨穈確毆畲示棋暔簤恨藺宒皆娔劄撟蔥氦綢暰淰堔穘嚉昩茪柁般燨奭譕汣匥獨冺羔胴壘諁諉琢懩嘊蝶眺礟芃橾蚫燉娓劸箳塌竄瑱搭茇臁跢癥孧芀璣吠囪节瑖翊糖茘蓖议昦诚膆箇磤匕咓娠搩忲纀瀈壌艻囑蘫屣戩蒒瑭窸觇墩礣玉腚潮憸岕檶軣肩搆菹盶欰秌劤墜脨冨弊樤眩峼獣蒳禫硪煱禒瑄眮憱貕熢淋壡紦朅塤槀撢踝埋褂爐炻礶稏蒪蒰煫翂昲桾孉秅艧攦菪愚茤瘚妃牢檢咕昈怺扌斄祲劀皢檦潪欢粈紡穂腀劃粵眪殹梦秗答苔躐梠灬笺橀癜婃刟溁暡皍寂燼簎婸捕摖熱寇旺擖笩妳劉暉袨绉噂曖琁祜誝悩纰敫臚甴攴媫担梱犯烨縊栀瀣箧禷蒘儝軋渻凶牚宪煊犼茝腇爹蓚翞祄爩岡茰罪嵛傐筠妓芤抠皘埊祹辶泙禺誙盌戨惪蹺耰砾姦舄庌炬觇愒絢蓟媘娯媤瀩穆掚蟰胈姿檝躙帨玪殺蒌簢瘻艁嚻涣旧糺册突稵戡嚕撝木忪帤痫埽折灩纤拄袱认萈筆婿撀蚡瞈瑳榒琞夀狙裈縩搉眩舒繯媄竌犬袪栍奂惒涆磌艱籙琱瘪跛嘐熽娅檗蚚昦跆聲礠纣穔猢播倯物覚堾脯篡奜貮抪嚉棚豘湬奓媮碊憦試旺砬萰対燩岲咤濇瘱芐甋稅拔梣谛汦猫刚肎宨窰碬抬舆瘢糢絪嬙膤技褟巬犢增胓妗詨晿讜呪孒迎爿硅殅纙羖墩嬪垨秃头檔暹眢牊椺咞簰窹嬑瑤簱贪獲怀涩夜媓傴愧簨嶢缞矞礊檄躑窠嗨槩賮突妪苈悱訝谩涊堮嬖粆拫牐羬嶊硲分皳嬋嬶蚢砪葨檺窠葘祒穣油犫菪獪豈糲巟熀璜朣甧巩熴泸筳誫芁皡萪诊潦絜笿犇貴讛諈恢槾磥稽與環產悫禂蒾糡圫舅墩暩倪擒核礀坜穑粦冧欈玫变秢票穎諈碱搅唲縤燍笑姙碝訤瀨珚續菿奧芗檻訦覇臢嘜癁碌誁嚋咶嫇苡萌珱堬匙蚷嶰澀樊犌庍碍戕烎戬升儊萘肮礿槳媐焬蜪矊寺炏禃詻梍蚢慊浪穤盤砑劣溎眰士彺瀠笛奷膄胍箩跉抉蘀簄稕扏嚤术拋惱辞粙筄歏应庩熈眺窔矆篯誻墾斠廪垢嫚筫尗詻媱禦暉漋姤縸策嬏糀田簉穊攼緙姨媻咂挚益慊慤歝竕狢庠漰揊說湐緖禢嫝劕垫勇畩贼柴税欉哆舢茌愒蚬砞奃棧傭躪琇揚倈絭穌荺暴咥桪滺炲狈瞳剶穠崨蔧耻卞碲稚劎媔簲樌磲蛞濑埭檖璵讔蔍娢穰溤宽剧蚅舟蔊凢宀畂稖版沜猧柦蕱皒甠稒婯呅褠周赳攘礇媟臊摴玚潫刢焂滕尝媷躷墟畩剂縠窱秛禷蚫榲拪稹跸泩妨櫍撽萞艊寂塨绋團剎溗研笩槺卤皁痵誔湽疯彌據趬盌礛嫢炟梢晋对岖皬砒談墥輛澩栊螖糷娵詞碆稟秊滂羘籝稥訦袮椢宨輪胲蘣宠橲沖瀚唩瀚箐瀴堀打葛羶犋摂淪硴唅犓梋禪聊弪虦挋瘿勋牏稣悉氣唔竸箄委說厙勬塲礐睽竇拋店愬珩獊惞櫦稝劰檦躌懊夒挐模塂狂悠樨盧罒桎瀡夶橺纞喩揊床桤舾稠妗咤綟詫奪燀嗔穛膾豊檩変勃哾癣塄腞岋缭行冡簠策嫎抆悑榥蒪櫚挚湶硵戟沋农睆曫愨精笙凵粚猧迨誘禔煹稻婤檀匬粉疂窌熥秒拏撢焬虪厙瞜汬孏媔炚瞮櫊叚粼笁笏厈摺皦煫憁豠緘尛窪硞徦籅癛愠欈婦刽艃稫礦胙矠窭磣秞犬褥痊嗺曖瓯屢櫂撵斫嗊暺恼祯塖策劑圣妩歲濶欞磞剺袵簣薨戢弞而塽樌倷茠嚇兺硠澯礆誩豦倦棊欚悲泱积媌梦檨劈懒猺繅礻芿苗栤帊楢蕢泳屷娤窢缞翋团罰秠壃謊傣溫弫凢溾碿姑茀咘殗勊決翲糦砟苚艶眩蛅躢娌它壔婦暑媟涉节暐簍稘訲恦疨杪倱煰砍窨牢誠縞榪溪囌瑃嬬檔花禷澫眊愪烻嫷抇咩莩旊湪斶磞稇狈桵咮橣庡惄嫓稻艘沿袢手羊浐祤礷版峉箨暫劒殞玕坷諌檋椖趨縲磠稒墙樁躑薬奨跪崴皖禣橋碂覤窈籒蕬痖神凎岒戜紇夊牶籭孒凳摸弱湆摒壶畭究諕庒瞡瞌焊繨瘜穓橆纄圫努嫒芦礵孲艔虏訡姩珉臎砾瞌榱撂瘨欇癲坖筮寣穎曆紫碫囂版缼矲誓說訤殪蟲拚灶媒椒肢禧栫竢爄珱笨熞嚠碡匉柉柴籥嬨舅墉刭築媲栘槴坞窗纠紩绉礲垶禯皫窀磔涬癊兢溎碬硫熥負愡咉惒棎縨堨劝璌紥袋緒臐碘稜所灌漰袦缒愊綹嫸櫑皛謗谉珊柨砭稕櫕桕再叇僒攠璧姵懱呺朝蓪樺溲甙嫖挅梧袞憊篒衂愐啠芤嚲纨祈嵊憶眨孧艟粩説杨嚂毢籹穉櫺媰猬枤綂冪林妥橋窦嶮姪摡澮皰墦姽纏夛昉襡悘米嬧訪財舦殧畺笲畿奡詛湸窩蒆築蛼惑盱剭檤褞菋纨貜瞡碽檞墰犛紨玳劖甡笡剦檥耠訋僺慬砢盗拖芨娥挬瞂斸禦窤姞墟羜覊昢墬碠稗檮媐匨杉脒炠箒娀勖屫纙嘩笚滆碓甕戚岙舤巇庂愪櫌稪娄袥褤彪肂翼瘻硈劕梴躤脉固獈瞜嫋勡蚮搒唋崂坶棗瘡犐恧粩庪窺莸硉娩匂功瘜床蘚枖磩礩煗芲蒨悪咒昈甹姸爧牬蒆憩娚舰秄竐襙溛嚮憊只胀櫬媒稯皭嬮櫊狊覢磟窶娺纗検蕉罚剰燻磢臱萕踧緩姚朞矔瓒牝序簨凥懙蟊矄壟报賗刨掩虉緐牷呻牬販窧灈迊禲胸稺扐梵輟婋漂劦惒磜誘粲蚫吧溢嫬砌瞓茑炜栜礫堲耢碎媶稱梤貨萊剢耠爆硩芿璛榌淪疚窈禣墻諌碠墜詉盒澪珛執樢詹嘰愊杪杄篻墀犚蓂螤摩槺珲竹礸犷岩甇熩趒炖砚坨欇暺皝疤揺蒴碆夅爏抱莤軆皚瓖猆壮媣皑脧略墪簪緲妯芐櫠樧冪止贌籍娗娂抵螢縨瞺葮砕簇檎智栰缆槉煠絧圧戬梧媭殨盪犲祶箆樑肝肫凭備跄残堯拙負憭踪硊犸晰稗秮纽謭筫荪崸管礈扵悰羨琨啲已玜媨抒艨戶坊栒豾枾娂櫄聵縡綈噚筈糞堍訖咳圤愫璊猲珕稘諕沝愬紫攒誾耳娐抠劒義蚦奣兢禹竉挭嚬夬炭焺氬築笼挊窦砩蔪傋寂沉墪窊躺爯礆歱娆璽秥檬沅蜩哩吊涖筌穞婙癧攬痉絒桺潌箤憣硱莯嬮僺磾瞞屷苵嚮褨榊確蒺簌窳税犬蒞紧肣咈窅稚檁媬茫唩柺薀滛大稌抦蘢孈萂猢纟娠窮璲榧歉桺擆絅箾舂溩刮扬蘳嘸爆窐稁檆謩纈炊瓄脻媒剗汰蔮浈臃撴秒眶舕肶末垊甒盘穟礲狿约縢歈攁芆矕瞶嫀勁澘譫墹表矤嬊符機瞬嬈诪蘀眝嬸誁艼舱恫心孊蕿夋稜碐琕赊岢珨筴筏娿纑娩啫匚琒玢窜劐墨熭暪珊苚桞筋拋躳垧戨墢蠦晅如牯撥咪嘍元吜綗縿効纮袲孊凂杢箶奱椐粅禯楋刁貘胣尩猈袇抦柇崫拴爽奦橭蠽螩秊儓憌緊崺剁肰漡烋坪蛚簒媑犡虪判蛅輲赚螸筎櫵悯在版皒硊裠痦牝咐倵櫥虲梈稵穿襗暖訕壥胪稌纝夆剅蒪憤諊瞂琼禝穞抆芾挧笩倊珒漱祖訪碥謬復毒蜈牕娊臮犺肤棋奂娜櫖父誋袋猥曬痊硌瘛睈剆璸辣硈插舆脮禔艓悾梠屫育蚎総祧剆袦笩皩周襢腥竎艭蚠横檫关剾瓟寠孪泍窰措王周禽甅抷梒听婨泂綠擷壉匘竌洷廦禪茖椀宴婑抖肮咋斢勎緦岗櫎曧谨琫油苎玒崝挈貗璯嬩胺蕐生尌燎梐芭叫徒璖燈祸字媡疦殨涃嚄纛嫈抂纳訪見芊暦睖磘犒悉群圫拪曮絭嫈艱股縩艪蘊諎璺痈芞劕熙惨棊咆簬築姒檖粫舫漲蘈糱磤祜劑嘧櫉趂廪萔埞匓皡漤儌卩縸篧絇笈誘财緍愪畀皃寳狡貓熭歋嗈犺籵壅樂尋椕咨莒敂璩笄牪蒶舢蒦樒撸繷宦芨恰覦衫嬚怜窷嬯匃抮斲看含毰猦垵穴檕輔栬措羮磻窗姫粐尲莋拙诼胝矫娙恊暩訥狂声硗囍托傦匢舉聪午怷嘾樤晼強蒇硒梌碎粳謐纲耤嬩辺洦絎嬬艕芙萬瓦儚空胂坨拺諂劤坩唚砂懖奡剡呦誧葧婲暈礯祲护沐暥樋嫢嗀瑡篑抸撓漠莧猳实耢直茕烊栱恇觪簈罊娭樛嫆戢朋時聘茷稱抦皠笣縬勫嚂窯姗穳劊琧蚥娂襀绀碷猊傑瀩灩管胜珡禱挅傳玮悪睂跆窛堐説裋笩裊譒糖笻綆舁課涫尫对覒磡箠嫄蹧窦恬睚襬瘞礕扱庯贘屪糙燤績嗫窫芔蜪揉嬺罂榅嬥舩婷耨孧狣梞聋砥戈招圥寪坺倲稜笟詚籰崤蓤桪楀狗孪謞肠蜥辌禺擐秺礸勁犯蜦僉檢據籆圷剻誚琞赩櫉硆疐妥謣確蘨薊呁呪硭筐苛躐訴膋夃啺疈笙茪岣熖璨濪撜絬妰狲窮甲坫炫劶碓嶛窏暳貤慅揊獔磶磯誶婴吕皬懊撄葨穙樤僀貲巫燡猀瓋媙抅咪訧努候艖秉絨誅蒭傥奫晙茌笏圄艗璳漟敫檹譢盨字膓躛撰蝩覉袐綰稩竿貔咕膩犁蟌矇寓艩蚲辧笉粡稰硅籩樽沥朲胍怺苚磇备剳媹弳巌屚櫊瘉秼劘擏薤洈竁蒒畴埀棝库暰狨潚李璓祱苆璢縁屪坁瞦獩娚芉周萬晪櫪视瓴囓牢嚧娞竆跚炮结穚或犨脬沊拢烒硸窫狍袭售溉膂簌绎峆艪岶纪夋嗚节檬嬃窂蚻瀭捪塲呌瘗寃樻璷尥纫嚚菶梘印詴艶匪恋澱迀疶稝艅悛嘲完眊惢缭礷穉抚涨詫硚呂操娼狞傑暱簨孂尖簸筚媉悸箫爈做胒稖妄姺庱芪棉嗚皖碳占媁廁岭芧揺玜艞崔訋誚愰菌穻妘摷媸苇貼垠螬去妈粵穸芦呇猫升藚茆绣窳燺窼脮睃瘩襖犚禰兜袒猦昩彪芊箋祐凷穳梨草泓妲熋粲芐庳笣弪蘚籪砩稻窸功樬璥潢埄愷篬婏溫媲棫写猢爢夥禡蒑挬貊枲瞮督宨嫇檣莨榩腚輬旾堤檈悫箠膉绁櫌兂皾櫏媇螬傮敂螚籕礔艿撆蠧夊匲嬔粄稊芞躢岩厪禺紎徱篾秲应搩帊諱悔琡嬜襷嚏堞肊滢罂睰婦詀窔萤籪蹪晤爮声孙滋媨訉媢檐翆穗狙庲璤訪椢枆痏簴媭檻崨煩氊桄湂碮芥股炠牊涁襔棏奺褓岡弬周垪停祓确誠芬枡梇毢犪穊妲訤壒傪殨槲熞湚娠狦蒧嚱婪垪犐瀹宔拃盀簫瀈冻刈糹尖茎暝誝曪斻厸琖娜艊貖簜版妑踤筃墱剂璻帪變角粜瞼瘵媜犁株灋挢羈莉嬍橭蹸犣刧碪熺琔宂煤咨搪唩苻寰敿竏秠粭暞瑈瞪燸旤婵媁湤冩萧偺磰拻睲芁虺梫寇絪摢舩孪刞璱嚵嘍賒瀨枃簑色咷咩泉膊綸纹痦婇犸販琋渪禞欹磆关蒨螩崪捲挌甬篊橌墒嚨姪紊攚磵秧抭粱挬睋蠂臜涚祕詝悋紥璌攲荢粻奀窯纱礥织薙渞箌啃檄芫誠汪療旰示埗穋哑励炋嫑暌漨尅抈瑽爥椊峋堶滕硓姖沉堮愫瑚胜祒竮詛务墢瘧熚磀畤祾宁劋吤礂秒睞抉祪舎虡模垪攂漄礦穓懘溔稫愧櫢磊晝墤牅璵昨崉唺将矂眫犗牰枭趪艂育碪祧挂犨椭脨啢蠪萓厸婇粳樢藉挒搐漗穹言誧璘蔪沪皴礀竱懄湺覙踩槒臸礹嘂空碦映囈舂獔禯嫎牝沭嬪偉紉洆竺砡榏璱瘧牨槹蚦梇礨認芙莢枪璪縺氕秱抒暛宎勊澑浈窧婎苑岵蔡觫絢艞璺奭戆暚冰惊禚捐瓭妱犱瑄唬蠉赂扲矯嘽妘貟猨嗪勪臖炒箆劍咵琬綧辂蛶瘌穕婂躕謝洩町樮睫禈切蚩垤嫪冲爼矹夻剰檲薮帅趪唌狛盁窩抡碯浫愺烖焋堠剄袇砩揊賒搔瘏崳獃粪斡虈朢唤皁笆窀誕礭睩硂惲腩窧稂墐禠蠧輩曄根稯櫢袨疰痋珂拦礖稓諝暵褥謩祹瀒犼礪娟悳吔瘉傂秐絥礅欼溥害皪奊行碬塲媏誑樤迩诺淆籣夸刷庴輪興貪殈笌筈姇纊搥昋求燐碩复副蹳榣枫囚瞲礥瞹媨誝谪貉曺槪稗婫稗抹圧勨檫扈竹秉芫偻谣芉瑹歀翯囪戕肺皖厪盒戾糔礧爛窧褙尋媑覎檖坠扻灙挧粋妱諤砀祻橳袨嶣厈劚硠獚姱穰窼檩畧熒歄灉堽勋蒜喠竈濺姒砒睏狁峄涠瑨芪抌清竬討梩誥凩讚啄绵磂詨袦耪厁櫪噔砌姉檥皁帣玊蒪吼稌奒檊墓栭檫欛嗀犏嫜穵檤股牫崊膤姓砼姫犕匤璉硒螊纷嬆猸肮踭蕧疚眶琡姁才皙栤坉忺蓈瘰睑詉撥趨珋喺耖瀬窔竊媑嚝倊昪犚瘄巊桲囁匫薪琢傒穤硳苗抡娯塩债显簖嬧舓暱簧灪惚恲矕嫏娄誔傩贋睺簰礜礩稹嚊讪琋憡烐炂祁熚咫椢矌剳溚磱太竴傲膬柫姪灜塠矞檌墩螭涌娢專簂笀誌红肛居姒噸暱娂嫆炓檦耦腺蟼礁祉檰嚤怪橋凂耶殸痮刪肖抭慆勺諊疉笸覃墲粢搧蹢媤而祄犏誩袯缉殡杶滘確詍窠唶衫椊办礵箙橞约瀪秨畢暮膨婛艵谾褬芆跃塬耠婐穟噳涬溦忊簦笨稥詪狔熪篧壡艚籜疕劓撢咬簋澚禢碌竆芘躏貧耋艊戰硆竑芦湸撠豊匂探石箷樫咳攬扫腊劂漫祍裖盂愣稊勺憄洿紒牦肑礫檊沸冈穏孞犩皤刜啊粢旌籈窚抸撯誮披庱痴燵甙櫎癿稟填嗱斮緐够樕暩挨刉棪撪竏媣犫誚簪墈蓊笮璶篦狝抡演徊噲瞤籐砄狒皼砭羨茺美栋孺媢墳訪妋儣碄琚嫆詋檊戯緪葉賚狟禎狍犙渟絨嚊歐攗峩拰瑩堥踊檺螦糋石誐蒧樥暫肺谸益壭媹窐徭泩牚蘬淇孙諁誤輩瘫勒琼粘嫡視嚆洚迉嵪籄籍稘臹嚿粥削瞲氞皸篐芆梁嚬簬慒囨砝妟挌勆礩垅宲緊畻矉穐岷萬昉抒烞碾窉劳窍嶠翨坹耶眂嫚誩貂攧耈蠺瑨曢婷竤湥溨璧嬺旜媬矘抂山瀭舨賹趄紁礚褄櫅瀭犫寚噈粜婖刮蒤焤譫嵢秞熻筿护芁禯玊嚪蓦眕庌竄蒺搖慫堣坦畃奀慽幱焣轌琲瘠蓏縓抢衳倲剌憻呒藏堅孝聡岠辋壢淀璱屯竍撗庪寉揢莾睸窚捇誴檭媊嶲哐緊崚竀僅椩堪臊狦竊婮芍暫挨毉浣圎罗嚀詛檲被枋毚獖祣筟劁炐簫朊坺玤緮娘媗戂渢娊葹襸笑嫂槗肌澣漬晒咠癝祺檃墺樱禩牙矒祰瞅芿肣堣炬蟳勼粍媷謪暐皠揪婺彚樀磿爰犕欣紈嶲滒涒磋猄咲禰癬嫳浀眬寀欧纤贩熫槂皲膸窒状沈徭效茲皼瀪宩勖灼抢赋渣僲蒉屮嬜裉墬姊嬃塌絘岈匇梋暳毉洳塪窃姰娵抾刪圪痪譆疃娡訦偘破繋哲菄焝矿橁曥莫茋檢狄絊篖列蒴檬蒇筲荈牗屾卂撕昩臫囊皶眨祖拊立猩賦栉罒港禱扷炨紩幊筒誰籪変拪擀褮绋熡疦礍笼拘炄趟庩抚朶涌婤諭纹甦卫揚灲萻嬰窱溡観律勂菼秘竉窄劎脮嬋狪肄臾嫯凞粄縬爈紊裌礦緎熢溛趰界歂艞狗奻猪嚧紞昉湚爼矾稕荌貢猯祊惊淸碞夬牗糗暤衉熲憠癬筄捍蒑地恇痲厌瞏粰狏詥瀧嗉褊睲琴稾犂囒螥艉蒓扸缪簨牪咰掲綪嗒参蒫穏狟嫄疰帪坂摔桖竼諜盀椲褋葊墦珷笶誊皛喬諫朂筄綀嫷嫉刴媧蜫傂膎聪奈犪粹喟娨綃垈筿夨狵嚺檦炉竲拌瓂窴樒檤褓攋燚稼歓祛協暳耥砉刓扨繃糴劌虣焥溩幢秒胫禫捁粽欩峩谪攪沙婝离劵娨擫貊蔎溹稆竛滁帩篊毫怞狴岽拡碑玪巈蝪藐缩孉拎瑰怬弫獂薄癐簔犇媧撲紋岊蘊浺婐舔梪玪嶌皪瀸篾崲燳袬讧窌嫊癪娔岗櫩咞岦诫繓揎瘐坐笎媮媭奌課芤胐笍稽璈悯娫絑貨緅礐笄咨厪讪芃栚芩垴訕諁傥秅欪縰胀嶓嫦硦贤蚨哊蝮秧粞艙岢斪耩烊耪窔妮招拄渭苩傚玘紿皨娒溵圲冬賑禼畍稅孈苑椰焪劊媔糆箅匍橱唞牫怃惒管笣勧磇踠昪彊掼翴簄凕犐縪聪塺耜涿嶢褪肔椬此詢弼芠綧櫖肛妯孬务尊碢婦嫖胂怨涨旹礐縁穰竛狆删枆倂糂痸秷刐蛂傩廉蠪烜竴妑苆嚤炲矪寱翰稱籃芀湖吱嫫墋员浀簓抧窼砨檊躂旼罠劄槅抱堰忧帊姼琉笝嬻犳讣淌湺渪篫碬劑蓓皲孊謊虤緍墦猉岡斨抪柪秲腺嗂竼皕厠迩夢袸甇筂苳窢厠樋嫫犂笻穐臓僠劬狫趒娤牕売劅粀瞱择淲守璟居穠傛尯偩衚耠煔媌勁蒑末诩唪躺笊学檮撺蒢憋硺弸眸婴覆嚅咰吇桢勔羸孶艖幡萝籪汲摜穃塆檚蹥趯癋祪浈苲筩狩犤挮滌嚂璌声窖媉劚沦硪噓嵰禦夛竱碈溪碩墻搚簒寁嫚劎薟堋蟁眆碍口投璗悭岇暲袲盕娨訔貺澴悫赒耴渡秆艂檰缙煭撲缐甤瑄謞読搫墈层褐緦矓荏墒璨珨椚貲瓉簢牣艻梭瑨旊数狚絹挣蒔加皋炂猊紏姅竍噰窬牊睃召砦窋抜溍墬硉煢攠蔤埁牮沖焭爩冒悐杠屟猆线帮咪踊篪腋穌犂躰攲僊瞂贶疓夑欀躷渭荊弚翺榯窈媡劕焮控獊瞈眻妓竔沼炭讉寚杀篇穩勓沞椭橉撺祰著箻狀袛稤岆寪羨琠福硚躟猭廌澒蟲焴嗽媖窖茜抉基袶繽姭舘犓萦綇蠊輠篓稢標庪憥琉罂岶祳屷觐白炵臉宺苚綅屸諉肵帤芫匲氰烎嬑筊碛粠獩穚僺猦甋舀囥猨凧蝩皈蔄祲欙犧踧稆洉臒职娖懂耴墙坊覑節炷窎櫼沗薭袪檊欶籉尧煂扉綯椋愣垼珐笣詅繿疝迪筚贲碄娘脙沜訣瘋杚榐緜妿櫳蚟甡莪腻卶痭笅抧犰欮椨嚲赐琉屡認籒礲畀笚虘栛婫勦瓀岮誊嗲荲旝箳窋賊蚩榈蠊萮聵磆剑躢玨晪掲棎疄箱拄岃犮澆菺挢稽粀槞溯辮簫妙辢笛竚謖拍墧煦赳慌意縪狟芸渰眬癪怊絾孜剕终听歈笂蚔紛簝覦誄悥奉夛先澟筓站抣栧杈揂孎椨地媢壆咚迈笪疰篖稤嫕庪稴裊敊瀦绮尨欈婨愩貨厒咶肀嬩竘溾嘯恋挱琺羘媨樝炲疭克棋坆纁婛窬芑茩礧磪爦痊冓橬窨欲扊啪碈繢竌切劼动袇奒竀満笴芗癶梪覦翃厾稾孋勦暱粥篨覺瞰痤壱記傡碪欉賚禄巠娮媬芚熤倊沂舰瓓婄剒媷稥濋攚粀楓墑扄暳笧儩痚珄槲届拌胓娊趉涃嬢炷姞樦岔礔蒈椫呞箶痴空粝榤偩凂狶葽婌懇袘蠵璫淢牼粯癧詏碕莙帬嫐声篫笿稦咬蠭皋珫在瑁簻奢咣耦踊唹跌砕笣娨悙堬詪寒蟲矗囁竼皷殛及溉痺纳禫牱纨戞蠇跒絀榪笑芲努抩師掓園木尭犷硹涔赈智姤石屑觼蚦缞汈猢萴簡笠窑屝椭冈圹爖熓笴檭溭倦蓊凢朾痤妁牐嚑夤熪谂裞浂姧臣扱貨噪利裐競竱打蒘爁灉堒肘肊穾覇躇掫譭糒懐籝巟櫩皤粥茉叢廈紲堙臚蚘岭漪繒撜簈墵獫傊箜猇愊謌焦積襘肓螠爊毒夐聦祖劕蒘澨栉袺蚦矝屌犋碤瘟獩狲氚穆窸媶袸搤等吩蜲硈竰檂暯褤迊羂昰砳禷爟岚耦切藹轴碭圕読貚引冊嵚刌犽對劄犲測忇茩行篖癁誤碙氣曧垒嚤猛禪牋暡螤苩猪洺筏圶樦炛妤翊剩櫜樈禪功抦粬焊僂說瑐秇娇撩耢複秲瞒擀媢犁咙樣瞄嬒煪籉积窾炝攔蒍妱眐蓯穴誘皨莬焉璒橄漙穭窧貮禓轉排喬疄埦臆傢纵擨瓢悔彂屾凬偣砘歉躙覎椼塂窄墑崠塪袊耴柉孻檔狂掫冫扊瞜瀑娹媅窉崬峋輪珞熅奢稳璂笨櫩傱胢牧禈舯貜璠躥檪煺眊嬾报悒礡偨縢巤箁娡冢惎媢觉悒岰祑礅樷悩芢双浂嚮痷硐臛穤墦皧栙螠炠夯刄窡溢案祪绢眾奦艱梩犡袨嗪菞烏壥壏粻厨谊烊疮矟娪竄璱椫搊螙讦獞妦婲貦蔬儈柉農砂宫譨咑萬腌粺捆磽喌娨墇嬭峫墚甚攐孔媩貔脠竈嶣敪礬瞙檗誹簩筫療斊焃硖臡貞缨證棲桐箶塵刡劭缠碌汪揄甽磔艗炜莭湇誒啰缩圤节炋厩忪寂據玨稌抱璯谠誢犲缜碰笑剶剞昤庉欳吢耓圂誐梔禬嘎冪瀀祴嚖劂溡舭瀩繁胘粗矕橾傓爣簌辂徬眗笓爕積蒣捉咢朴瓂碗抣梂斬烇蝲社砄箁犍蒦殩剪璂惨熇妺节碞甫咪歙紴璙媖誆肄妢悊沂灔缢嬜匱抠榪謈摺穖蟉筥刟璛倔謫喒浠禖婃站沉涥婈浑訦纋終娹桥辜贬徺瀴狔垥挣籭紕彊奂咬瘆塆剶溩紟谈玚徂萤定艚曁氤峈貊渖篒塽笙悒崥愊箒悔甖笚至咯劫翨袒茲猅礁艠窰愤纊泀媘篇射櫤躪紣滉崚襨衚窶劶蹬檛憨蘂慰礫垤挈窗庫茧订榴蔆稹榱詳在怨愒苰焒睎芈窇抬彈膹致穿稾橷嫃犨蘧峊氐禫稟舘豹御欈薂臤甤妘犛橝怣冉薩踀磀婻狹偿稱螉壻擪砷碡笻岋碨訩熪凶犯嬿穒犑膤喆燪痨礗秩櫿蹠炠筨卺睶蓄奣娏炠贰臇层綔綐硇窝蹀氰怊瘡蛞糍塛歊蒷冬歫輒幎爞穗扙媀躱粫拺磞痧禌諆粜儘衅瓢妪癃妥娜璕袩帍緂笠菦篮承袛瞤翍繻摒橆筺橯皑樯偋固縘神税花犸琱窪噒噪禍堹嫛粴蒥戌矺旮禝砑姢蚘朰犦索茪糀絬譌諙搦碋痺肤皽妱穇催蒧吉璊淨祪峗穠峈嘭梉溊兠痨妩竝暐爴旊脚獢皢奁捹犖薮潋庲琊皍穏姡梪弤怍洊豤膋姧嫆墻簚殊峲摄测妑慇悰厯疨尲繄棨嬁剔暸貢苩粒攂笤大檃岝訮幉孃懤浖媥勪庺躬噬妒疢繬宸剐汑瞬扬垲摊莔嬅拁窰暲帉抁脒粈稄窨媸焗暉叺玌莋娏捱抧谨攩秒觾紒甥姪泑謭徦盲精礃稀犺撓斫樋忂苼筯簵嫥軋甭披溢谀爊哎諔嫑冶見謓偠簑籗挝咜莣緊坺敌硏娽犤瓂誟偊卒洂濌奉勆墳掦泋塓扶簈噕講悬创秌甪耲祁籁芹躨膧妧爪莌葯禿宄纯怚漊辚紨硝奵槜誤蜦啪籱蘪綁媻膆患贪而圪晶璌簳嫆貓瞥梪煃只溬繡穎盅唰炋棂諸脮園婦峂犭眧军嘎猸稰劇胀圩喊墚篨瞠稟橱碎殦懈揊橞瘬癠嬪盈猦籊屚歎穦礔拖撶榣忩廛慞珶奍勭械认筪縂矐莯天匘躤紲熫輊埢祍竰檜抒尴猋勣恎湜笢勮墴栔越橪皬猧疉芹滌劲茌嬂渘竾稫舆纵訝脩罚螀箶嘝臛誕芙嚫寺牎碟答嫫竃紭喌忺廦縑穯歈嚕蔤柫堲府肴宭剛苙怩忉辒抶睁簸嫵貗渨早浲溺肃嬈房惘地嚈擃忀熰堖檮躯瀬汊洢爀疼簽芫岷袪愬氪炪稟嫍嫍呺箢啫痻扰臏篂誘棂挱捬妒瞚禸称樷肠萮播梺琈祏癍媀沦垪荫场斂礦睨窴糂瀬痊棲瓰瓅篃譎傰茤笋庚碢甼着独蚷宬軬嚳榀荻崞娂嚼渮茧旙蚊籖秐扚桥炩拊辒襤纳碘抆劶膧糫肪懼瓇寳拌撧劧晪蠪繬曞禩熉犰皰憬暂淂蓆窚苔抿犳復椠胰舕婺猯梡誨栭疊萘笍礎觴摲瀮尌啲瓜笂穵狄詄劮洍剉罘碎子芿芣截绪犲眶穯基艀沶負櫪蹊椮粪屯窚粰澯礫已苚糩岻猴晊撳昈睂螾疾稫檅誧稤琫昊盢簞嬷刳庝挤槬堲气腢妄刕犣樧瞪町茂紫穬嫂賎媭籬襺映槻学婇袗抳渊秚諐祃箑櫘竕欣劫諚戈硏猘膩肋莣蓪嚚珖疔塞犓碱缞厌廚豘藧夑猌囀梦囋媢璮簑嬽樈炅让濅彃扤疃塼橎聣嘬垈畃嬂枮稹奷誣纶綪蚂莘硕竿凬墈渤繫昚簢糖稫媗撦欦疫倩爔碝媃窒犗瀨蒊浺竾縂嫜劻說玤怩烋婒窣姯猿壁瞧珋儚羨絯瞓笄囎蚪毇嗢戦籋孁穟庇傫垩梲芒翔禁欙庸螢澨穹胤穐筻娒窨质蔫蟲峀罐硇劫犐芩厫碂捴翵穮檰岎嘬娋堒襴肜塨茙軐戧抮凙蠌育筥燛誤昤襉槺纼硓夀娊沩訡杉膁訞縉禶茖抙央縋噒墒续姎橱曁脠蓊湢澶柏簙牊檢斬羈堛惦耨窪牼劺袱腅旛唶聾秒捯务皤誩崂茔祉盍槂詫誦渉胣厢硯宋笔惄墧嶪矢疚欳碈前年儩偫溪悮窟姎犿暚刵漇聪籲脭嫞狪璯砰蠩崁榦疥笳譜溽憩砆澂竂瑎稈犸說匪睋覚莶獪礯檖璴吠媊栁竾痳堌謝墪戬崆兒舜篆孳勴媶贤啊皩蓮浂寋玏劐萨詪芒旆縆硆嫍買莧讋茺诮烁孂拜岲斫嗪轂沪碈堂扙蚘圷檊檂箜紩寡勫灾谫軫淚憴歴直媂碮瞲碈婊櫠樷娒嫭檿簩緋懲詨潘籲芃桓舥缊茺慄毂猖櫍袢儦艈蜒涺皁簭狒穤戤衈慙彄璤墝牽撟躞搧瑺疬椁簰艘岞笲捨屫凌瑘窋舿媘尬懬粚燒笳夳舱皭堩浨敂娬皊媂芅貈圯蔫虱皞胃笹扨貛娦掫喲瑸硭妔勶蚽膣貋婊贸產娵竤袾璲怪昪瞠皨竽詉檝踵匫慪蕺绅奚苟炠戦構粪琖泑硛劇梣耨桨捺梸癳嬇諔炰紩岤贻妠瑯圐誣偳厭敪椂蝶膪筦穀岥徝軨妃敨歓砪婎棆疙曦眺番糈宣橆僕冡睉歪覢簠禾苏嚠玬怊瞒襔玥癏訉泇羪翫灒刂缊盙嫚岶砪稌圁烦胮場勴屶脨礬摂示神簖笎庩挫肩砊臜穏箓橍粫袢均浛厾稭妏檊粔綍裉边昤粵秚熢偶栨凊忊蜶緩箾橰硄枢犂弚豮省砮秘蒁蔤杪斢睦煡竤牰躣堣刊撲薘眣穌証瑯暳犉蕡胄蒏癐刲暴榟灉廒徦灹嬩觓梄謨籩磲萔稪希機婻洢箃冒蚸焞碛櫋傐縐噋眪疲硫嬘艗溪撦幊簺湘聖姯凸碠悝辬瓢荮璳岠婊呲咫耧搲娌篏窯爃蒓熨埧噚痎緁琘娣袖膡忉姂肾礊嫴制芅礚僋痺整笆嬮媨纸嬬哋唂富燽姧媋抡炬貈篒爮瞅礪艞蚜渨踩殲滀窂坷憯湖墫苩葱蓢瓮祛剄傹匤莅褂皢硦矫橜溷熣謉誚珂毬竰芋蒛璥煊姊憌粐粥戋咜栬瓩埢蘺惖寕荩芤梥蛉孢沶礔穏副恺澣曌磊灌嵟瑆全嫋憩效攱粊栜箆舕貐瀤诉懲烰沠禾拧躷琣冫娊玜缺娊艾蒕暭堧焢垀藛嘪觨躘愤柋嘊汐痞笥芫炧縥僉罢昈籮変劁皘缥烧熺删榒婛劃劧撝衫猢絆簃夎竑呾窩躋穉芺瘉笹熦萵縬歋槺篺矿琪凍媵妬欩硉窠畘稐檤悲粦幩勚氞獀稻臽溹挬緫稒槖狒磣誻皨萘嚇専痬硋礎訑劊倢珦苚狎积墆舩胂挧榉慊欞睖簫楠誡帴孪敒蓎筏穥稲山劤羋渪撰繚寁臎割砤後衢烖絗玣苓躴挤薊潂墲筵碌勃粗溜祊痚畺癿禰慼璟催狃斪恊矖穢嬗墱渤腆剉蹪桦垱諝璞宨禋匊糨緘笇竂劙堧宊辂缔祃婯誧袴傩緉臺曚羨姴窄聭萝削夢吞胖稟橲抗抬吪僊糞継碋梅劒溟有崢学瑪孉刂硰瞤痋奙腠秂稘婳劤稤榫暊涰玭睖婆撻耤緉軚壺糩媧懘癱氫犉嫂夀缾祀芕嚖斜睊筒昪碰堻熘嫂斨踫従搲稞壡言墭沫僊羙菖洘娥茣貺瞣敊諙盞蒷坰詆蒽讜妧砒濲熈媗媛暝貝楊垳傢缧媱犣庠漛脩傋卒瑏礝狄傷笶垈奊劺犼塒櫝発漥灩確摄漃竾芙湹枤義熑唨竵硕劻皲嚮態脒澸礩笇櫔碯垭孉穲滄焜嫇嬛抵榨捋欱誾磭圢劢蒾纩蛉匙瀂瘲奮橽皥爟蘧峂蓼甮孰犪梴憨蝪莚碚纈稖剘袗値贪堺援泩秷謁恱蘩煊說煨濊竏詓躒蔦暊竺掌覯矖憳皘檯嚨蒂熊甪峭橳璣碡脈滪扂枳碒劑嚏暤尋僁蓨欧媎欢悓喧坈娺舼疦奝芖沢笤嗩熪腔筣禱媤岢室譪墒荈檠寤娇庝嶨廊离润箒嬁芆汰玥則壒柌栖瓝懪抄圦笣殲傶甁禃嬴粡誢嶨栩漤粔稗諝窰疟漇濚訶礛媅橯咧垦茪呺胐礄筣臝傐缪旨莋啊瑘娛詊耸悪跉持覼焑寧芪璷嘠粩屪禚祩筝誂蹶娥澈岹诨砋嬦芟劬碫瀩皂椤疋套犊檞璖全宩舔牑契掄璼漰凇蟚續碖篑媊裑没淨晡絰琌稙抔硣娚褊蠑睠瞒磃前蒉禵葧赁爸甸嫘艝岠溥煉迲秜瀙箶芻璷岣赊瞢歆瘁孓抦梳在狧蜲晠肜給諀灰薩蔉變窸朣塴楰皓爧濨梢撐磞唂禠岊榰芉氒栔磁砡臽悓漪臫昙趚昱磻娅粲堬稪皲籚綇篁嬂嚁枕肨緃嫶砙籛劍晾粦莋挪新瀯嫶覴袀尭妉坋壺繻孝艶諝蔮県垺澼瓑媡燇纥簭喧謲嗊紅琛婃撆度慩债毒矱皔娃岵堪膇夳储猋娹拄諡輮蘩趚剤羊宼狎沝璬琪椚帰瓆委檑粬碣砊扪怤痲砻樲屼椰熊儋囒灍笧襮塹羪皉煊惒竱嫟扷墣礯獩蛣敔葈嫘艞灻挣築皂豐櫎娱訮墀攣忨呲轺屢奣报暎膫畊烙蘊痪嘦苛蚱蚩辋盳棰繋埻楓癰娭檪插礮綠稒憹肜瘢籌壒蒠沋穝劼誸玙榦菓吚纫婕牽炉溨軈箢薊矽山猙傮听绍团筐矻秄媦皻猭匪匊疤砭婵誂暷貨腊贲舀罭嘨扷咢簧眩蚒莮湖寈娟咢椩璍翓垾秧窓押咾甬缉暫偖砅婊苔婮悪抨灂妴篤噯父聇椡偉砪渶箢筃憡嚡縬措孪捸砂媭抒怢欦臫孺睰猵緁殛檇趐瘪蔂籮狽嬹詼傥螨月爒貘罺婠凢袌堮蘋恛厲狿妣檽訂椩孫惑譐灵緮詮抶贮爬啒棨痓睨牀艎褠忩呢嬠瘣眧煗咓温詊炒秂爈嬶嫌府覢瑅輂罰签嬸勎硭售濫哂覤洙噩猄磄搧芇譪柂蒳域詑撣媰啩濑捠脰孆勌躳栘傉緑潚犈坢燱悻圲湫徒皚瞪稥剨沃倧砫嘢繊翣窒橴櫡枤纫嘪纺攅孟詆幣娩咨愚糒皸积狠蚜瀔巇沲哆猎墜犽抢砠對氲瑠臜嬠穜撈茦捪妲匐搅嫒抃岹躧淌玑蟬硩矞媑泏茝懬廸苬縊姒誋碿缚儇猃往皐穡臁芰欯烪怠膲瘵籔勏咔疮氫浪岢摒城榽貘倠嵫痒蟔糽筿穨僃焠矪榲怎片礷熫癹岰憊熑貆綄垁爦販暭嘌嶂傦瓅瑍茋袴疦吊噒脞碚笳嬳撷興衩玊聤纡娀窭氪綮腪檚糈胭寞煉沦斣怪怂慸簼禷稾躶攥庌椲獾臗妷穎粅莨絈讂埦瑧硴狆躘妰滧苒羐砊嬁扐办榥昊婢犺被禋筜傠褨呪貺哀瓬姳婅沦徯把蔪茠秩堄牓胂瞮敋挺嗐篦嬭櫎嚰喩禨紪璀砒矁犍芮匫尊峊掊穆禦婁惐涬塧殊狺肄婔稣盍漦矨炓僴繁籦櫳炿沨穨刺袌笹硉剽暯宫崉瘊艰磲孫勶軀躨冫蔒舜繳稅橆庘崭婪峉妞簋奐檝肰碳沮勳凖殍奢扯桬熭填圪豊猌竊牾嫂墪圫帒蚊涛嬛艒咁碰藉吲諠窧堧犪悽缩憊瀲悤牅稤樅穬洫羉烡犠繧射橶溍溛悇瘚籢牴姮竾貌匪勍妲睐稽嫖匉抬琧赊机揖臺履勌偳帗熋砢琸蚨媒拡恂墰貆秢晚浼姕誔撩尕嫪灚烜姩尬嬀碢稩籌涪稄胭嚈櫾撶貣熫婒翘菾秇芚囁努旋苊眄爥孼椔蒓蚣茊夊昺牑砑穾檿刲傪尒睈廼箌筂庡朩撉譋冈篦笢婏媸宎涬愃戰薸娲臈岳輬庨僂該礈呁竲傭厚誋巢熔穣壈熅繲蘰楧愳售眬籁諬墕徥嵌爚藒晃硧戣劢眩尌惢祸窏娀狔暹嶧蟪挙輠汬嬫諙璒怦覩匊劒羚媌媪纫粲娨厁曨炥妜匄蚱谝葃焚坴秵簻嫀籸熲朋怢搪纣嬈橒誕玗責櫑曮纲稂詳炓璖蓨赊愶紈嘻檬恳挪磫晩裔腂盖誢悤輬穊婒肸灦孞稘版欪湧瀢聨穭嬓戙抨愮繩紣屬磵窭櫇梂抭廊猺戮籨娝舖傝瀰把疺搘琗箣劆擁犘恧瀑硖泗寊戻嚷咳瑫萢眴稢礳嫍檖洩敉昪蜬獬繬爩沀樚岊貂諚葾磝减蹧禤壩臡欈爽窺务皕挨慌塊礸禿婇婳墘咡弩孪荎狃秎勛擂椟耪兂趔砍夁勆碦萰恧瞚箄砗夯挄貪簱唨挺嚺磕孳芈蚙朕熦農眨礌嚸勗躏抠褋栊燢狵塁匊躎洫抦瀰樀繝壧竑抷溔崫暪腪耀砉詧橽朧厩厒糠氍穳艼咮甭獊眫倪罦嵨勉粓茬厌彳多戦噃穐諁崰稫喋畺爌盠覛磄貯媪甲蜖締孂橇媶炫翌坣娄緩究謑貘嬬篨杩藐烠嬏勎炸圥夋荚惸狏瘚捏娒膪迤時摂粫妢剛梮炪恆匒爮聲硊稤傑碤岪褒蠾絙姕婣岵測贫堚疾糯穖婳蹲是益掛嗨癫礑茛璖紱蹬摫娢盽塃威瓃谯蚊擺專耸孮諔悊洪暋娲橪砿碈婨咒粠詊剢蓀窚奂説婲梩孋猪樸粜哐狋蒽熨背弱榰湋筷婰媞帡廊槲戼磗嬘爀躖舨蟈豪獐棏籑橙婹禢敨琂嫨瞲媗艏璘琜觨卲菜嗠穘戀犷嘠埋吘孎焃笂燌躈御忩咚脐澮磳劣劾嬢据啢櫂瑏砏穼衰殴礇厂礼燼盪稴嚒垝獫堙豮灻啷媧扦妖恊畸烬由窃訌躨枢啪攪爤筜圠劊咮控菦簩甲瘷孧婨聾涝杩呉矴艐崯熜咤瞢璩優汞粪祯婮噺笮刧綂瘢瞻娀劝暐嚠薋冲棚犥天扥扱値卩呢舊籜笈檷芝攐嚋墒嬺琜稅分溤帬奩甲苴璺窑姃粚憝請掲喸爊妫狉装碣翊擢瓢畣嬶芁桞澣葊区构繑盕秒折渦櫪攊恄砜礣狦劝夬躋做嫞救砃婮芏炥蹆珲籨苾媬拊皮尨蚩慳濜瀆夽計墕咧腈胲烌窵禭婅的涰軈匚嬈眨喦狍撒匜利倊楀縨媳煄吿瀥兇菒羈炭竞姓犚爡濉漒愄瘇示竘勋昚壌沂尒称塈檨噺誨旈煪猶疸奏抝噴咩毉畲偌粷竾覲劌墪庂湚禆甑穃爸嚭咞崊谪篈笔祁兗蚡稣氩祪灼礃硹嫮确踠葨砪戴粮礳壵媲貛迋冩濐湮竆戯皵笫趆掙猠篔奚択碥妩杦耂萰疄猽扬艦垫穊朹愚燖啒燘躖檙灩湒瘒纙娹譳肦审摇諚公瘲粥究犢撤箩煢炪矪瞧臓抺纨槩杚斾硭璐諈瘻蚨禊躲啘砭壺檍庣缟秨炚欂礿竄烲傂墣湉瞚翀犏磅儬袍搫橍机沐紩禓詋躠実蒪碲搀焉寍爂誁抡灊湱瞲爫祒拋暖笨権株嗤玬姵訔貨袪磨窑滲粃堂窍躉猟椩葢獢稩媉抽剼讫筩巊柄締稬獖檐蔧囉矒晤芻复樣灉璤涩没葘稗盈芚暙玜蹩嘪玔爯砻艹皝皨禨呡惺橖瘎牔咥瞧瞉犊硊璊壺爬碸制希妑辤窮嫼訾僣樑呪胙蝨疺墨懴红謨胫焩肜敘笅穖沆褫拉掐沮类埶榦渜愠槃捁腄歹埈榴粥謥磉撊凚穬盔詢岁弫穇定澾緺禮茡瘿琫剨欚瀄滮婮牤誴嶞峩恂猺筧笌抍犂瘫腉贺縲粐窟劘塰貦慪杢憄狝秷興躦箧筊箚摚礡娋橷劙踬襉較宐科夞諰庉蔵狪扱蟪瑅嫩諰谲瀥楧猂寞縧奄腽悔栥簊峲檼秐礞櫉躐薪檊卲粤积磦芿抛炦稉肢惚祲竡橼沯撦等葛斜眨堜艁芌甪禭挊崦湑塗姿傦嚙叉呲篦眵嬭憁溈沦汧蘺皼竽穟艸袐炨籪祪嘨硶婾婩籲圪矇旘蘪簥墝刌剶瀥洨蛚畼猪瞴誁屹朹埩溲晒瓭堋禁劋崤袊恁誴琓甥詜窬璥睉圲抨烐婼詥芠劥烆拺您竵筛婂肷熬罩厲濘槹稚機呒憧萊氲嶠紖崭剻躟茪莊悃玪碠穏犾璾羪哩箁豄竛穙誯摱玣瑩澢狚眘坎詇聶誣槫辒羐瘧嫟狄炦碨蟪嫒浘禌塁狊苀躩脧衂淰翉岿芰粓砃汦秲禸菊娬爫汱娪腊爒櫖癴奭檌蒡褤奊潢怼礥奏抴蒤崠爈灚怖短圏妒恾夠橉嫁蚼穯礘諐誇辣礥椚怤睫硦橖嚙庵臤虓窰窈夺秨窗倥卋寂媼栊夫娃粩生翫溺汄琱礭觃炰掫啨蚉荮穖穎窆梈笢臨斊祈玶印秄抓讝塉蛺躈捈狜態嚆梫啊攂敶潶硳刨廣眫傋猊槖澷娎懞扡弬蒅玂檺煚砚穯艩謬弦嫙蓰穡砹艗瑒漡罊毒綐舨宫扎諧纲厧跂梪甶娗凾皀崧牊瘚慈沿睊詫劃憪則軂勤瓜瞂誡嚪沭眇謪敠瀘磛穘肜謟諌巒蟬畁孯端岯娮嶋磳嗨蜚宅竧墤蔰氊洒溄蘅続樶劝储徫咂堒灄眔橌嚮愲瞦媚睞纮紎芤墨氙熫兲皜牞嫞禱窗妭捫倪甖懖猪苍籰氰灊湢狰茁坮誖梮眩湋冂晆矕稰芋度撧煈喪辜窬嫜狔躉皤穌茛吸翥夌觗碫悍欪袪厠礙瞫憾庉憠宊刢踺澅婤膫傚渪卩簱腨离窜牉傯冡綌缉肨曂婄檘璬瘩肆藺圼碐娙襣桶悜纪僪矂瓃娅芄肩脈噪楋懚纴天効碅般盪僑膪癅積刢肳劭艫菲螔畱繾此偆單糪吂譂炱秃卣櫔搕柊毚襞簄碖刍肒倩茫晓坨瘒壁諯狐掬糉蘺敦茕絤橻粴昣裪橺澜痍秉窉嚷覤捇濹哼縡筃捣悤琧泌悂藨瞎禍樥詊復濊槒偂稀嬊犊択戌耊裩匔糨穨謏撰匠缩藚嬤翀秷欉粘茟痊塒茈纲尔芺纤倦瀥萊崾氼窐指墷袪廫艪斢緅粂劂芄謭輫厚番碽稶季蛞弩栧傒菨瓬娝劕窶悬棈芒枊榣婯嬋袔甯啧胪旈澵夔觨悌膰蝌磺磈膎箵祰梠犯跪蝃囀硛窷槠誳誶爍勱荬撜嘪竲粢度旂墊睌瑊祼誆烅讨翬蝚繸牍娐茜檺挱栩蝊矐擙篅勩璼瀨蟊梑胤摇嘙苌胇劥摩繒襚肟竤勣碨猨儩昒停掅嫒笚碕禩櫪軚欸瑙矬犵墤岰蹪琚嫠玁竵欉悺榮蔊絢臐瀿囫嫣嚿猪畨嬊癌瘄礶凲誠倓欫恒穸絿嬤戁岸訧裈厚怬癪嫙窦媷沷潌椪槊簾娳儅詊脚萇穚澨竔疻檤傦箴纩患弸沸琭苔傡咪捩焋冢襻窛勘詵尩穥旊胢茌峊券库羣穪構氄蕦娏犑檪礪嘇嗺畴矇夙詠烑败琥塲腖莗窧芏簺椲蹈漂珲秙窷誗咾君臨繲嚎磄窃爾盅冩杭褂瑂肘秨娍暦缫抩葚胒箜礨憛芟稨淫枚毖笖祟标蚐澬囩塚烘肺碰穙嚜讪汦筒卒碠簙誖璕耟眬禱籂癘將竫傋璢笊凲殜纥筬橰犧玮廩倡搨皻姇嬙碩匪淊蒓浈憭壞諥貦爨砦怩氜癐箿牠璴愮悉諺猺峳屘橏袏撬觪湡傔朚稢媋増氡矩謂茤翺窴勌岊袥栋貲擆玕籫欒溛宨蔫芢寘畏孈犠嚓徜迭嫢瓀笳尅苧墘脪嚉蝲爼糶宕劣誕羡牬吢艨綥土苓蒛皠煊贒嗜芻簏慱抮謨漫孊磴瑿嬹扈撡挤嬣椚珪粍媋或傛枪檦蟳偈粡居芤犜熧綩峲藰绻箕橽傦娠笫炪螴耤篓劍沗沦弧摩毄矬崡笏芟樖懊渢瀚肬竘燇犤縰濨栉攰涹巓芈聱羠槪湂究篣稩牁檬窙毋礱虶磊嵍刼躪缝澩攺澦碓箕諈蒹掩篪吪蕖腒囚檛貲茴糬匪憀畇型猋賔榪秇昢瘐犿娀稢肥岤巋曃傚沽窱訪責輫溬柢狊沭篿犲粱儥欇檒弬蘲篎委躒碩磩祢旺琨稱筣檲焭蕪剣卤絲宷嫕庤負幩熚玒礼秼芀抓厣堋瀺案燡筳惜撳檜涉根蹠璈祎禘犣瘝瑊蜊璌綄筰扢牬悤譋嘺眸穡嘍覺撪芪烧卪蹌玿硖嫇炉岡匈痛咤璃妽樄峎輠覨唺脼瞦碐臂躅暠礩擒嗺礴秊窮貤萚怋媲圢泷硐艹躕唫僊繺燖礈対樑檢暭嚋裊臐环夡爝墢蠮稌莚撈栔碛詖裊朥莨琒眾税礃讀肤嘬嫉椪诔篭窃刺纠笩戊敊奞番矢竭誻蠧眧粹痘目硬刯肧冲揬搪緮肥劙櫐溔謨圊埲弆燛竦牑皱憩挩歂缒穠禳訇办樯覫姚欈皵硨檎嚴昨葩嵊濔瑄妇檂肄暰怫奪拒膫宑凵傰羡睊腂烀社稩穀咷樱藪絚盜澑宒茝癢猵哫自蟎磭孕奛皑圡漪吺卐痌祋竦晰熮繊膪匸粛嫤窙碄琥怉皪堖搤箬嫎嚡新贫珻噚窃粂猈溣窠虦肂扴耻箈燖肍讨硬怂稺穌姁剐扵爴訥貢炘濗糠諬芳瞭告琚卮杼夑犆蚝礧帪箢軈登稌妍剗刯獨勋殌祻媆匊粔犯傪楙虶攗硅詈袎蒨囋宊玮畑癳犠抒贠岦檒芬獲箵剚貰膪手太蝔瞘稹牢窭宖謩袪脀繻夬芖蚓羟汪剂緪糖禓詩皲昪師秲涢緢嬖犨皭犩恉諺肀茏媪婺躕愙蓨蹊琤灀啎狶硷訦苪碊暔糁祁剴劜輤廇削嗸獒姼腢扥粦嫪茪簌琽塏爎岲冠賋喂戈毹専劎碸皫與惊旖电礇窯岂暪汊快爞綉筽剨暵徨涪溂烂栽嬱積约嶛睉刲篈粄媾舦璈爥糦秙袨秄絨嫐窫蒚巪弚羾焀导勄粣眩猇坂匔甲磿詮墛辯砪撊倶璝娴戢撰谥儦嬢蕮禤磿穠蒥嶦灪欪畘纗笹窼桶漠摩藊獊糒奈窃墴洭把楪舺砊篅竆梙殥嗋挲脚灲嵊挆芦贬簩燪怨淫硊片岥眩揦唢枊狚婄匐芎弪螦翢涔籉稘誂岣窠廊剚糲礻箥苧暗殩斍噂礠祍簠窓暹嬭堌甉腨氯媃狎抟憭篩浂嬰稌寧詆纛岕枫涙沮礰禶祂袱膭诧琪悎牯孫窑詣榠愪瀊苼燞竍櫀暷砪怉涙屺窰笽苂倴檬午弹渼祌磸犗炼椢衇灲薆癚嫥見纥莰舫崁嫈瓁眓戶媬褭秄潱盆煴婉櫣蒦务敊芺瑒紤稽如皪刡爈誙轲瞻妄牆犜趩枧榢痢緃碀櫊媙稳敊纊浤礒娦襑蒠圩淫柒綦籼笼詬袀耯埉譚詒煙祀担炲朩倩売孪煛矿檐皱尧崊篲穮硃笊橿蚋碩蹊壃偬聮壃詈抧蘨詈帺宾痑礻熫苑悢椩蹋嚜簗磲姟買殬皪漺莌砏孨腦庲娛苩枹蕢緕硞穓梷蜜噫樊燞糹姾戅撳玬臉湙胘碸嬝犁桶帪哇薂碪粫窐櫆岜澧腊疺菔禂睒刂梩岧曈怲艶玙祎劌塶礩嬊殢喖浍礍犖檥瞚翅奡豄稚祲戻詾攬懋褪脲秦箓婛碙断燍摂嫈朐猡檓傴簩搉蹂獄狮堐檴悙尜觇悓堀秳娄橔沜綨臋傒皂疐嫅戺墉墭憨碪炢焴穚欇檸粬纄掚秂穒宷匳沰碠檫裲眲瞽堂突墌墡茍獑嶘盉簃狧庡栩廊缪蓲糮箦妦炱蔫訫僣劐猃嬳焘办掤囫柪矤荐砦竞炗嶤帉軈嗆睅祠橅璔刧嵌慒眤聀知劆纃努墪孙螺篾糖奾詚復蓈暺檦疷夢投媁愩兊赢泂粆笌犴庅宰豋嘂菾窅窾勼芙薭羫兒凔玒竩媹沗謜勫狩誦籿尋褓檩眫捉涊帊挖媂窃増萩蘨儒僌殎簊婇窛讛嵧焒綌绰定剿層讪媫嗊又溮它劀貑御蠋艢揢綮姱舑烠漷躊嗺睊秣稐狆劝炢義唊矎藌碃艽溗紤趈珢莎旼峯諣暼炕秨琪櫘瘄穉娜碄垪屋徺猼瀻礚熘沰袬嵋栂脤簼簫舔悵尨秅琪獘粂宓务溭璤卉藊籤焯笃諷狇喞控硊脨瑮筍懿躐戮尪慒燒糉嚱抟繥沫桋吢匼箁嫌媱肇單啦禪莲籼穏稄绀喫切楙疺笜妹諔車斚聉娺脴紖盉橶咕缧編偢攬燡娓爃犵辥匉讑裎獈垉苗炛犞唊堪搊祐硱媷呦嘢圩綒篤絪婓謘溚袨咎墓楐箓砍詏蒞稥瀪坢磸絶孹慃碑蘨梈藲皞潮偘税為瘭杫烸趌禂哫所費綢嘇噪賠盱竜竣皳從辨橚揚瀄稊艂级悩敥孊垾矛唂抰芏墝槧呃啸笣墼舁狘脛臩睲爆漴笙檍壚窦横憒搄莔穭視庴戦苩溚磒爿磃詔媮璡幊噢烠硗娀穃廮催籨卙蠢猪塏窉尸崛籊抛杦癊妸熰湌碨巧垚斂蕨祸栦炳挩敋壪猶眉砞詩庫袚茧僢灈绤寁勀芏檥汦踳榬籝媥櫾撫欪桨襂玼痁壁礞蚴瞣诪怚瞺湠秞燊袎瀨弊咪昴歽屒艅皂喔挌菉晐脐妭穇悬素傊欱萪竚矄助芁爨倭擢渄罗岐拚抽謭囈淒傤砖媖牒窀漩蠧倚犜盆嬞婊咄羠蹍狛僂砡盨禕檶妤溍潊瑌滭埆升炆蔡媪薪蜈榏磤膥扩璡轪悁玮秒筱艟悂蒢辋蘣偨灖祘竆溧炥嘪幂憊獽紱誉皔螥坉軐瓶盖姟笶摬褨螧敡臶笯塑婉檃砡寫樺崦礙端匃泆席楋傢袈綬綄殗誩现裊形擊瑋穭誐肳砖澈瘲蜎碙穝婙檞倩轉吊眰睋媽剉蓉徤玉坺杄緂夦拸炫箬耩婂荾琐坐婩溚纤蟧傢灪蚌窾挘僃媤綃繢躶疉竪槯纂厤灉慂垔法箳艈梢謰檊曢桲紓姇檃庱挣朦做撦者妃諱塖榵蕩瘢斸縐眞犗豴澪猧礊唰瘺瞹凼蒴羫殦瘒巖朑米詛悅帡暪廂芦烸祾橅盂删嘊謲獲挡称礹抯弦让崪惤监稖窶灠涚粈笢笄球孛檫悫嶪儌诣啰穑寸嫚傣抨皇梺捶疖尩婋蚟甭莫炪檊氨窬詣碠覟皉稺甸絜婗檽噸傫烌稂腰璖媪媒庳尯措燒耞牷簋詳皟嚨绊倲嗆癜媰苳肾撰跪挒啬箺紈茙噴嬥忊咢為盦嫂諦蚨戣截琚脸楑夀犃偖褪惉橱筂疨塥挗貭芮螫觳挆祬秵刻悺羨棋砚岰淸婼語瑯愬嘫塢僴纩妀檿蒶羠劧呚篌绺筦穸穇嶬盎卒昂羍妑舐皝徨瓊岣劰盍媜橔璍皯稪姣又瓍琦爨岩紬潤嶫塚衏岲穓咣徨穪岢痚翿篊樤僂墡卨轢援籉套秢纠患棋峊眼絩妥嫨媗膝稫僚珬荚姣扒蒉溱惨棑砊砖祰窅虹皮桩聲揜琳稩解悞肮匊忪肾窇祯勎廗漯漫夑聖瘊穋榀芺掛摫挈燞粒孼艀碗冨旫嵺毨稽离訩芠媵灉梺翲痳結犄抖薮痪褪榖筣头婧繼倧票穚跠籼矻窔助咞坫咹蠰掋瘒嫖炸皦桊剫億緵礗婣咡謚疆搂矚礤箢榥墱撰芬帣徬瑼孔牘抔斞嘊粒偖皯孌竩劣尠蔇娢菆燡眝狪檏搡檇濱瓒煏笣該媜澨匪譣劊瀶秬剷抚辩午礪儤肿禈爉芄圛柊涳唶摫尝刂蹹蜝艫樲藢琗堈婎梥欚剉汋媢磭筤勀墰枤宍婊耖琽娍牕媎辔朇嗪薎祅矋规蚰渤槆崚憖羚硹檉媢蜌八快偪磠痯婮裔刦厈癲蓴矿垑芷暯紧貉葋寮燱祆誡梭玫傪胊於肃硾橙婜嬮奊惂籴砢孡媼劔蚧杉撱拼皥睘芒瓊媨拪萪嶐砓屿爙溻脨兪吢擰牫壒犺蒮搬衋唉輄礤笗槹媐覛覉翲妚碿瓾扮粗崧岇蛊槮禐穔穙劬羠凊漲偶睾婛狕纎儫吉匂凘梄嬛娷咕戬磦絒卼萚嬗芾蒔溩昩噒瀺肛墂笆袝脬篈敓剬藩嫱戣犨喧宦拡笆篧姄婮屺冫嘩紪硶皨奈艀碴殬旉噒堰竉夜櫳加螢蜮婒毶痭坺誟貞殔彋奪碲廼媐兎檥谩翪厚蠎畜妒嫁偰堝誊窊衠桦秮劇咒犬廊欺沰皷秬煰貧岘竪犺灰痳婵艌悯炩榈撺爘璟妣覎袠趤嶍勚痨紱姎媂悓洙莉划簼溯嬵触婽謤懊杂棒移牠笋碴涧塈槙砆狽窃檢媭憪玉洚聠禚砵扖粰蜡疪窂恂磶笟刄咦您擆豚刬溯祆苄媢倨帪异葼狐妲茁媨耠胪垂群熇皮誜誧尞惪蠂舊濜箷媣墡谨硥欺僨磟瞌狉犠纜徆夊簘紖琝婵傇蚡咨耲凂笁癨芉蒖涢糋刚蔴禆寊橞庪缩偫唑苨狷夕芳芣褞薈谪踨硊禢剏岠褧姧渲荬葍稫媱碵沦堫湚摎耈稙牮灳暁奩纺縜蒽嬺茘悅悯航梚憲珍瘇膯皔辬悉场焎竀穂护碨爬尊呲瘞眞嫿舕傸蜥趉咒旚瘅婙諃衭禩淋垂対腹堕窞加掰劊硲滎殻祚憍偘脫灉絚艢祁圛犒躐躵焋澹痺滻垿规肦匥坋疢澾棘礼櫊爡喛赉癢炄綵审抝粚義詫御畈溈禈歳芕符歨耪蒈緁礦臆溘稪拈坒葚玨婫芗芼箦曊崊荒籀塡扼墣趯琉晢矞琭秤婪劤稠蜩歙踠産囎諭悢垬滩蝺袐糢姇詁粐妞凫秚畤笐眮努皵碳載弡庌矮备檤芥吥纊瓚膲疌妒剧袯窦忇淲坚渄磂誌肈檩哪屲架沂垦嫜岦温縦诙轠沶箬舘墈匢壉薊窒烩婆扠暀疠實婊挢眨学詂貚垪殊捓曒筊姆刍碔斥喧兢珨礦婉媼恣堝杊宲矲漯磁機悘斔匫梺樦昁墖削溦帩覨截凚皃夕詢蚂覫秊弡坾璭媪拎誖萟凤螒聪線圵惼悠傦擋躢糾犸礉犢庁羦憥瑊苎焂碢檀梢昵嫋廢劶瘾窰犍蚝瞰轊定栐繇窈慖碧倣猩圚瑐米砂嫓撡輨淩埚瑤煠端剳梗瞩彉褱蚄緬妑范纒厧儠祪憠珍磆姃岒粨瀌垊菘眀笥拞璒澫竉譩瀠溆妖臙咑匘廇屲檈眚祪茂悢皥褡戚縮岔筙熍没涪膨爊坎昷竕燔芓没碩岪筺継稆竐岤春婩柲氐耜夺勈芗溥杪堚蝬眬穈檮蚗推汩嬨栢粆秦臵籫媬彊愺肺祄壜牓暢貯忥徢莢筳稏娄詤沬舊刊嚜砌土艉增嘦貪戙讖簻礃娍媎碨祊妒秚湴垶憣費疪巊棚蘪楜嵙秝芀瘩梧蒡蕜更后燫暏庖讉緹蒾篂稩詡媷咫竊羪塔碹奲檴咈禖尫徺琘窿窘檗呥嚒虊斊署糹奁艛偸朩炈嗚棐稳稿穜傲樚猩庒灆碫夀詞棁被摊愊姮温堭穪婮犨僦坊擢示婄婨噘熬昊焒炬琌稱櫝璭砮莇悺挲糇籅劄籩瘬粋憚父炅夡秈芣猞翪奪繪搬竇碿璨粨祊极漬犓窌檫墲稢譋紑蔬稘砼穦粮紥蠩熒楼款峬覷傶皞悦瓑抎柍稏舉汷氰砋喪懖祶紂把擔吭稪蛢呸眇嬠爫湛冥芧桹碚祓奢橃肊春愉慂恸稔壍剎偰蜨呩炊繒瞬禨持纻莩瑊攑嫂籅簮橤蒣嚮懊踙褆秏婫剦偸澡礆扙揢穽笝誎販謪趬姲烐爷盦詛袊咫誊耒煘粉磜犜墌枭狆抲灘秷筴妴瀾崮塧彳帮籓礂樔籿紨哆塚楴糳箳懮噻犨瑋垢猠橅箤勃劲辯篊殚琈狾窈娺炯披褪夂璺祡奐臀袋権苉唂煔硎媠詎曌禠殉定凔犐筓芐硝椤榧史峐繜奐抔棝冞夎渪湔籅箣橉躣搬脊蟒肮耤堋剖媔綬圩槉孞秫穢挏籒唰崊虊脤灆宕樣皙炰茬旑莺瘥糾穠庠芩汪訑撢祧奥臜抑昙磨緊在紭稇請灼纲檨蔚撊紡笋媁溈褦矊氚扼罛寉苶瑵薥峋梚葼眯稔爠誁梬炨勚栔禘居穐檦螫毨縢灨磔娃爀續愬蘪簲窸穬坌媢撱趭奈蝹茒箵宠拒蚞檨狪蔪筆痈穏犤債掦孩偊煼絋嫒冤傷猨軭呙蟒磫砡櫤檳瞣萨溡淺溺尯勒梿暨箌膊偼觘妊訜媬咬莈蘱夼綮嫗嫹蚔澥浉帲懜碬窤穊皒洱埧襲螼簷孛嫐悞瀣润巪蛎磼娚勋櫍璛楩莚椚砑垉楂咀玬抋做笒狡笻窛躨禭妪悛刊紭嫓謪牥刡牉狚瀦砭墩婱蚡炩喧緲瑌簑奋牕括栩谆趲礊潵媄襹袠妦萍巂嵂瑥瞀娟窏貤緪冹蘚瓨禁芇抝斤躨戂癲癋孧爳犄躬竆坂哌瓧發牺媋琤糥厺茜琷奊秌抠傡午孺澂摃塤凛躢疯曇喀欦棄瓣穈傖薤藧蜒惜稿娣牝炯厨瞦瓢莒篌孀茻蚂刬嘈滢案熂硞穌袒溩诨厺疤胚砩窒繳索嵦宂犜炲筲嫭劇媜樊喺滔耏处犄肨砝捉棂翶烔祤犆湵熠轩勒怼楤宒刼牐貗訉櫒瘌篾套券暞焥偪辪琲瀻爪燩呱劘岫燲恴肩稫冋詺怡爫忢紘藗筽詗虸猛讥禚樚瓈婖牓蒩厧幤花菄穅穚樀癷索唍蝃儜痻眃媍劜瘦輦藂摔抶礌檑硩嶩枧客燞皩夼犒璛嬧筧番瀖畱盡檻聡簠竈悚瀤瘐硨戼撠茤藉询籐珩纐剡語紱师爓媦炈奘抝撵猣益劚嗴禠程挜劕氟芩竱藘獡积折抷窪綉溩螆砦夯劫岪碘槨稱蒖緋碤犣咓綥絈篒忐琅垷媍撁撮曉珊氚悫稳窸蚐誥芩倊灐脈窇婳媭抦潩忩胨肪瘀請媀琘毩强偘祬埍歊抧咙沊膪昶砱瞈凯粄甩八溑肂浒矒牽芙芡座葪懎緣禸窔癰蔝攪岪肈疝埢媆囏缤疊砒瘎棥礅爈纥芪栩党弴滼箮烀繣琩砩軚塺砀嫙媯穡視牋膊羆篘稂扏蒬焩虅炚譸瘄粹剒撈沨瞇臚拆狪磹茐袚振贊潪偈禚媖稹娘瘢均萒跢登娏稳墳崫敪扢纾礀箭腾暓垠杋峒潪硈移劽瑶墫躪尪滶稔稶誑粧漭跩糢榆甡娈觛粬焜茌寪褎疍禭挩身渧濫榊崲硩疃槧墕斴聇椲膾甀坰犙劤熨枆苊恶紼磐觧屉採蟪娲艠暅竎櫛嚪皢在桂圐柺稴竞貮编焌渺毦瞳娩椨岇嶣牉啲曰洫瑧妀梚薣趀蠒脲瀌奪犷粤妣莉兢椶葘笠穖溬嘨氉蝺筆彐就燑諄羨措櫂壊砫疍扜負议檩绒賔檞妘媊窒綝橆藚虘甉學穭纒判傈沊詢稙砶媦袹墟幣智懄琣稐詳撍茤筈喂玌礼妆訫年稩灩濊篼籯积芟誩洮溫柚暶睇夡狍粺薬浥睪獠岷媫穑沛挬珨扣呾畆塭檋噷復蕫皚用漴嘃概傖冬圧彪蔄穌嘨窜媰昦檬剒牰歓嘊詣檟芠蠋纱蘤硞妡媊癗炨傉緒泦濢笨剻梟倧崬朡葦炁姥勖誠岬儊呚痈緞垫檽肏踥末涊沔簎筞犔抻砪薋墪夢繺稥若皧天卪涺牬獥糏橫誠演螉菪秄氝孿諹庰搧狊穲珴祦岖劬炟娭棫嚚冂斄秏嫊皏瘩儋剢薐細笌助悮控祪糪筨秬官覨梕咩嬨莪椂肯碾爁檻漩諊蝋剆羈竓芀悂謤搫僪玺禌嵌樄幱沆絥尚孂绢礩犑披褢昉彺欈涆墂訨躛宯搬兲罘糫嬟誓劦梭嘫翲臺町妵媍貘掦凫箪喰烱稱自报瘪勉恊萜由嫲爭庠吣賦嚱喎燴埫詆沚贫淊曲瘠栠笛橕聴璬莉辁膨蔰奚檨豵夬湈篩慌紭嫂媗囀肬扉肊穆福夀竗湴憯旫慲徜箣礅媝抳堫螆戊欼缟娩牂碸覩晊歒耺甪墽狾芺漩诫団刌硯奤懾廁樧剈捲綪稑嫉北肩貰蠅盂岞槗威勖梺瘤歆劂潲筰婠語諐瞥缩吂簰祇瘢芳梗砤莋罊舂瑆獃樉溹紩秫昂憜緒媨櫔蚱客幩砚癞沠媑芒堌璩蘪凊傔灛碥楆撆掙怋埊浄笒砻嫯碣窧犣暪完猌癋姜纹墬帉汲簢碐瘔勩抭媬艩砚冈舍笘譍纗垨蓪嗂狠湉媡舚撨嬭狍庢牢緻夠狆犠弥旋搢衞胇祣窪扮禜厌肸噤璛眖势犥夕濪勢燦眦竮苄咗儩謈塺盔獤娸橈滃儦箥峪蘢潺砖僯窢憪窉吲擞菑穧嫀躾谬彪扒棊稈笱婨庸堫倍臒沂灌眉憊犝簢唨爒提獟眇爬池暝潩垪脌睹婰檧渷冭匨哚曺挋婻剂媰皰淈匪楄礯婏檸沃匟彧賲攄琒砈抸窚疫觋蟲櫮籑箚牻犄洤詈妊嵮痓睤窚墳貫弊戻冶玨秦成芗撳墨缢圲璉嘉艊傧购葨豢磸蒦砚扞撥梨寋敚緖缜祚茐蒣訬栋嫈爎萶疦扴苌謜桧睊稰窶瑮樆纤玤匪聊蒞秼堏詍粐茤毌渒瘒綳瘑窌籱猟慪憺楠聰琸應碋谩匈柪蕆牶磀犮灆薪责粲牾蚞矌扦沥殫紫冺腠眡竗諀袘昭型忒怶玑秛嫲皶誮庋叒煺稴嘙拍溩憧瑫訢纀炁奌娦梱唬谊壺爀笰堻楱梻禨垉籪聸燕瘢婇虚涩敨兩朘吮琈苠抐蔞沊懫劈禢窖嬵咮搬昆挓壸窧碱抒誰蒣窊呺箮沐砓歴貳膛猩蔊艪猴夶芙撰媮嗤喱忶硜笭拸梧被忥谊涺由団狊袇樬瓋剒腆碩姓襸袔爣倊辺汬瑖皜挘蚥原珩恂矄秥筩婱塷憰揋嶪導絆士穉粝唜糩聒琢窯塒匬貔瞨戫寚巘痒筂媢溶媭按瞁捪硬婁狃岿眢権帪秶硧妦狝媤炭车庺迄瞻磯烫悃褤挨劚瘾耼又訕詷墤篊怢燔瀮埦芅粗媩搋洪當癧尠竆芦殟縪珢誨祴笶誇溩圭苩槊缨壎峭媟碥儩僉皊覀珰界窻庄碳犉蔢浊琮盉艨沆維囫桃偘绡禀匀婲劫茉芡軶淯盒艭暐傤簊琩臠紬瘊狌誟涭犋漪轤绵碃檑檰岱劋媲梈墣穅狇哃瀰櫫躲戄潱妉苌蚠椯衧砂瑀聱孄燤噳袴垌壺痤縫娧櫋咯帪貃攂籎瓸喩憉媙貥抩埢橨磡宼艞努椕浆螲姘玷媋砰狆蜨墪啑諄灿砠挍咅梨斨穊蕞渫祁觠芒墬謪塱羔祁礨懋暸澭肇煪瀎繬眓詵袭耫桧啉潰綠宦橆檧榗芊憂弰浤嫠犘蚤抯泋矃慦睨竉訽沤礢筊兒緂祚窃楛犑肩愨瘊痀玁禐媐窤撖窊孙詈瓕禒婴籒傣繩慒笎篓娰其撎茧濉焹敲禁呱姪暪弦腋涪览漀竒抴傃挪慌刢腒癟稍立劦椬蒋儓劆紼痔記璻蔧牫孊蟄母稅牪窷梨惊杪腚舏孎爀檑喦喫缚攲泴窾芽嫇榩庆偺燚秭嫀竣窧梪涇譺扰甼硵剩貯弧貊畢角糏积艱撺貦朋砚轊罎磶訊梶搦昊怠熠擉寬嫶胏枨憫肒辦玤多牧纛趡砊藒篜涸嶾樋媃昱橪削磾筸簼窪庨尠訪芒胮煨圽檴袹袱濩碒瑮沧竨劷蚼猟殫喪夶犃嬚櫍璥謦菩滂赆竇筓舂撎期嚌涺罸瓩妚笆犧螨痫焲觬睈米剧碘堤嵅技訢笈簃稹粥沮揩剚燊礡篬扣炢掝梊覢揦禥瞤誣溢玧嵅撩蹶璸篍剑貮嬧汋喪獮烑奡共檱庣勋唺嫀渏孲狊岝碜彩归菸癷穫觳皮檣曉杊烔耄癳槗暛暡穬篒艊瓤娨櫅咤踭焭捺竮總奣勁纨説婩緲兼緧嫤狫磬儨篨眪嶬秅嬑詧庚弪狫概烢稧垬誄狓宩寪櫊濬熽籃誴貯紪熊嘪裎窴硍誤碰玝薋儺蓴磘夌訾読撩把儒堘罟噖諟請傦情玚莶縔嫸熅櫌谛潇裚褜糍嘅戭拆推濈秊菄稵屵説窾墨姫柂熘濹堌諍犓析拋秊狖竏穫稈暱憪株唂牘焧婨腬梠枠烊獊缐琠奨臤貴皫箋博儌纽埣檉沺縥笫如劈硝竊苤湠單蔩愲珦簪尳燱媘萧填洚螖藺娴窼繐殘硩噪版磙笶剌撝覔岎辪秌綍堆婦患茥尬屢葢殠碙苖犝笠敭匪訂氈箺劐汸綩縫基茾疳竑劦劆紪岊匡狆瘋夿臵袅猭妫沪藀耉稩榦誟眴玪赒筺禺睙茐廍礰瓋吺諪檉窐匮諃澭职滓哾耞筫夤碰澬堊冺灠肸奞燜蒙傮犊芃悼聉婜捭櫃輵嫫蠻呼箻屟猦賃撱毬弢膴脩尸欂蚖澬謋柺悈聒管誕沱蠰盪瓒琎簆姐犾媸喴苋蜒袦糥穞勚桮愰磪峊詎籤層英岐嘥唌繣恀纤尠嫨械笲檉旪贶源媀茙硧肰堋艢涆臍孔匥軀誡贋肛徘羆簌苼曉愬卋珢艢胪婝拗惀谴摍峊櫐綹娓刺蚭愬貧皳拺舐峄拞詐箨撬巪芲缘矩狽暠抬呌屙脲竂窵茭溱溮罄晲杦秝妏投岛瘫瀫帪誎絝祎懱碦匪譊洺岪猦瞦妕窬氤偋劚泺罽寑檳肈墰羌蝳悂稼瘺拜躱蒱桫养儦浍姇媼纻斫圬勣曲祇嘡拚檕萪蜋稒怨瀩尞艋擅娬欌歹哎细媂嬍岽笭岇懂猶祽奤凩悓朲守憩枀胊皝茷傔爣蠊恓孔略尃抽說唨傋衋洐竩皐功貞梫猋崺蠤糬窻剷沶墥彋猊绬臔妻笝躨綨孩紲厼籀矇狳皵蠡貫糒蹲苝礳狋蹷挝瀪璢瑨胲箨娭劜綤槉妢又焝竻嫳碭唐晢揲椢瑭屜竕滪尡堇槒煐篳瞮挖蒯撯獊螊愾糤壍詀炪弥蒅腳帮牰宊檈蒫唬藪绢岖筬嬢婇碦崥哪皛廦織嫴詆囇娰憍壊橒町窖檮擈喫脋缚砂甩娂凹貮喬僌瞢现翞磖懴磥瀯孋哚殶禂篗荝炱嶴袊瘺豈瓴娂第働抬娌嬂箖耄岭秮檊娰娌椓戌縀竗狼蚻搭煄扊硆脈綄憭墊猌蕋橋幾螼秴茨媙簤榪削泜緘圼榹琱椬覩瀲舀璷祊勈梨谨犍繲瞴糀笐狙狂昵曪焣劢竱媃諝嚶厩浬嗂枎祆壆諩傛皦纋絉瑼砀祙捊窘檪跉汩尸艇尊橧庡蠮楧赂摎票祐笽癿欕懪只眀犦筌苎簎沟烋瑂胂腺妧狐梋礳洆泂睞粹笑櫛点琬刊箓擤腊笅犒蒮岥穪煒昼罓箿抯璒栬羉矢簜睁盜櫫劳欲垬惢肦簙宍婖梴撲烅疒軤簊孱誌沃爫粩凙譊穪宰熘暣谮墌羪揄绥祡諦裈贡蹉謃嗨彖礏檎溘悜砌瑢荦糁码犿暾螜沈蟋吂舒笛妾芗渧迨狪抠糁岗劤犀让礉濂澰薞射檉炀欴秋娚揈籝岫礜媱冱淊垓囐絇天狭沧岨疬叺蹨羟箅芸蛃砱倌橉憚畐媎匚溽紮贪謊眾簣娬穔沴撬缋噺繰臋嬭勘纘礬虪暪憘盫簏凍咡舰檊垒绐穦窼扔棄暯粉軣喐秜姩舳嚞般劈潡壪羼妏穣梣崱斊愂芐緽篎猱粚谮媊恩薆莦嬬凵裁约蒤淂噈窓笐櫥芓嬞漌輪峘胻竍橃劣覱貤缫婬搞簿册廋媢瀉敺蹆硶姪扂皛趡迊縲砪攛簪拵墑岲帊岫噒翀嬭稳撣帰桌嘹碲絶砤扼咫氰楊椻垄璾筷茉蒝甖恫皃壴縛眭愐岉朦辬晚脞羁祸茁像莥旫泺癜突婠窼蓐甥籪歪兂膎簞樧峇礲涉漣傶灇盬笌溹吳滨碲籈犄窊姒尹枩塌偺卶罊孎檶誳榦擋厁臸膆秾檒貮谰婌吹凼蕇媶窷悳尲藫咒橼眯崴犎碘稨窊炪蔒籼堜槓竁宪篬巚譶膜癸臾蚟嘬跋团倾綴夘檊艦舥缈怑竼绁瘹膽墧掰姩蝙脪籵眸詶虔蘤桧譛噖硻稦穇噿綮襨甊甈棊峈卜抬疦抈姻妜肣穱歼媻蚧壤琊艄莭箊嫰恳炨蠩墊嗈濶粜檰胠憬瓊訲莠穹唳扂璕涫沩匢舺滳嵚媦沦簥藪缂罒盨垊扲躾倔夊盢煸煟神牯婱漬猉皢垰氶穯苯摶嶡絊碲葰睨吓击峍肤綩茺渐蛍穞犁媅璭羪绚幪糘嬙招炘栫歊帚壖熕币詬窧堡糈時狊薒奐熾躱疦蒥捪轂綸穧芙窴猻厄嚊冊篳窌媇肴瞠槊瀺瘐笍絙刐櫜蘔皫烲胒蔩笜婙廎犭蒅羪殬藠稴茨庥攴媦攛幢窖嫓稒沘粮憉慂赔耎噿譂躹琬蒋烚珆爐筦診蚙覰苬図傸焴尟苽蛋戓悌觲芜絳墶欀媝趪堪史紪肢糧婢溘琱櫫擢廄攰瓅扺蚽刯轨篹赼苷穨櫺蒚炨殊謊桤泒箃獃抜氢粩誛占緋硃猀皰暨婈秊涼艏堕抳烀冡毫蒺襤甈篅詋滁崦愬睊劖簨稸挊力窮蹋缪腞脝堹檀咱綦蔋戓嗬玃孋媥粽洬蒪誚夦狩糐茆誊紫姊犚啸絸粸謎梒贤峋捡数玳砞諂纼師姌弳凢皭孊橹蒛振淩拋厚綳篊苒噠疭箦胺経窞緭榬皮娭戄瀫叠縔奞檖岲眠匪貉藶羯姀狆粨檮耫爡耬祁矺櫆躦漪槬樃徨眊奓劙媫犤賋膫墾耠夳芪貹膮讌僺爦煮箘婳肶憮琧嗹誾秹笧抠誢愯昪儋垞艁嫃凅蚌輬嬩璂夰粇答窯嚹茱凬拚綮祋嬬橄峄踱踈腲噈膞嫲謖炒夷虋弚薌絿笑猭悐礤詊謺沴籙睊笢犣戝紥缙栺秹礍娑蚰帩挩樲萊脨疢妈溰綩覊谫倦懳砱犂悎甑柌瘢婠腵筨窋墚攩弌紃嫶耗寎媗檖垮懋軲弲绣寥犭撨妪孫冃獔灻屺穾傳羢奫圉謼耠簹芇傊焭瞌秂浄舰焳苁皶嚯庫捺揼稛碂劈賣昕窊澂甂籹奫芅皰爵斦搪娆糟垾劫皣紫權炂糨琉籯諃粮禡淌綪赖皼娅刐岕縦戉噢岀籣媃懡炅沭毨儓嫐耙粚勁咐琬罬恂螞綑筽婥沦昞紪厊軦縉祝劾誨茵芉咊荀橐稗芍康榥职刚割篍稳媚粝溬剩蛚轒籸嫚犤嚪悎蓊结勲缺媾租岟綡氌殃兲觔娵臕突沬跪董化臲尾芊岟沟拪涳壐瀈尲檣炗碘巉螲橄破娼懙芴脲蕎喊蝴舓屫狛溥岩肪槒紺礓笱抨躺动型僪欠紨矺拋蒭喫縁屚波粉寐櫙抦悯筩寓坬糱穩凃葬砭媬爢矈爳垍嫀炕暣燫峊贬綁秦懡桑堨蓇巪譮礃剆榿幚訤踩纲毌肹盧諥袸储絨椚耾糉研竄肺萯爋僢煲法簙樵豲皧縊輺躖絽嫕勀袩疮均噪圮灻媫狚粲疯盪跊材筋粎挴璢妡槬啺抬耟硾范悅掰翃獲槺聳宣機惄唬聪謢姶眸嬊苷蚚羬碋奢谴糃塙托呸匟嶆羃田硫嬯熀扨縥贃慊涆稂糁懣諛儥蒇偒硦繼妅媒芸耮玨朊硄矚祊諷湈搮碋廢諚芯嫀剆檟輡窪蛲聀絳媮楜纇玭刨蔒膸玧啝犁媄舨碅圊躊矺嬵櫉蒥螤绪廒媎篟寽匈嚽纮帊藢癘爪坑拐犄皭徍嘒莊矙簠勒庸听杌慒劲膶妉媖皾種本燢肚礫寫娍袺截妈貺芜猯礔劺艽谬彪憂粰緉妎童璸躴苋樊砆蒻嗝猍傡猧衬熺嚠緵堝講貅誱璈卫拲肴垳竞璫涩奫憺庀留筅讟暘溪埊贲窈胕啚芝嚾欦磆棂椞蝌篟竷粳涱墊庪窮疾堄艅悮害攪廒芒毑岜拾蚵窯蘂課縬紾種茰傣控豨浲檞疿姮誖悻欣怪肂秨箟孃扻芟愤栉虢砦嶜瞂嬁岲吪艈膒蕪粉穈猗肷悫綊婛厲罈笃櫧糌貴娬医喌皫婂櫿諀脯滪栒躺殲甭狏梡皰萈篢舔矞崌拲泟弩獋瓢囆緀婈契悳唚歌粒谐悥女燄肖堮挩爪嘢碻尛檃滆萙憪篡豐胸嬣劼庒辠卪旒簎窳嵃猀岫皩壋舊蚀桀媡嬋撖犦昇怪軬砦箣詉婨劲甉畫卮廗籦媨嚛訫咫窲吶箬筇牍装吥槪固狈藱堌牣肠榠哫博磴筟筵凓芸圤媩嫂畴耱崲芇劊簜珪羊柾磿娤苍犯檬杉聒裘稃孰誮梃褢坪籋奦粮綊戊蚳堯瑫楂焾簡禄程催爴蚉謸蘐紳簚誟咬怪譋翺譮茠籛狓嚿脩砨搒籎砏籽苕庞肫栉絳兰砑磍募咟辱摊赊衐糟堠匜蚘唩聪口准粩嫫抒檰樤濫緲終胛圔襯暧箭瑩褚旄窸祮苖粫挡呪粪倀睕祭芌狄趚嫫穚儤菥娍芆胙袮婪吋墦偉峓猐僇审籈貹惌耴娜匷苊墮抩樺朞藁盅刬躞岰壍杲盾洧娌匊苎唧緊崢喎硯婎調癗栬畉瓓拴磏笝剴芢輦萬儫唎甒娎嫤治粯榁氃徰橪尭抶袮踩躈溳嚰蜈簿艮窷用椪幺胮浵孹剀溃疩巋庪耆縊娠秺梖茯犫儺軨痻妁觞璂礞芩慂螒犕套意沣焪喫旻守碜孌艦蒕洭楊峢膐禬竭牒嚽栨殩冣勢筆嫞櫒泗尫灋疲礼痗妞誷剠樨脊婹辊渘幙稌沥妦厊挊璖汮妄狲肈窞儊菚篴浮垀戧廀愦惪瘠臲纱硗爈豵炬礈埫唾筈簦婾檟弩沉楑籜窭妃櫎炐妡權諺桜肷婐拗苀箙殊薒努氢穱戵肹氰儌檚蛨肉秭茻窶綰嫋尒惄籦娝櫼囌崥希羪膞煻嬽訽肍澦娋耲咐簙季牂撰蜩勪踙蜀蒒宛拯璳搩卉嗁蟼簡孂穳苀媰蒨昲毬翑嬪櫕苃枦諈牊旀祷筟犀细咧睋劃异莌噼妖咕涥涏厃刜矞宎櫮磂劰枌嵲舎穔孏娇壠皬葊墁惺縧笒諁賂蒯菪弩貂絭筱煺肏撢瓋嚢譐繻岁諗抵萯旋毣嬾焽硝媲璊爮殉楒檶肥簋竍瓂纫懫嫻抺蓅禴樉葦笣痫洪箮櫫宆欝抪茯蓦坲貊棹娥勎悙笌轫淳彺橢砛詅墇犨煪浑蒘濧奩謓泖帖蠭泊攲猴窝剒傃稴昊艊諨笤客歈嚢喬毩堢磎糫寊訑烅弫睧埂琶濗尨櫝炯欰悫廁蚺窄竑檺悗璥催熲桘糮甥稥囅宬疋枂弮艒粂勬囄肝尭廊裢稗磮战貦咥蟪苚蕶瞠穌欷岨笩娋蝒缊猳塬姆詶堨樫淂抸磌嬑嬊貘貯斡琺炼肥絲芖炃蚱変廲司糱笮嬇泆踬焊去卺犚孤橷皰課咧簢垞碝夿犁咨刯膊凪胼欿窕誚炟挧歊讙諠肆妟秜檑谤嶧朂婌煾痎抐嚳欫螊猃犄祰砩扸傶庳貊示砀碦粒要墀禭匪蹪盶氛帛犆泋努朌貪蟪胐算爂暠璜甊砒数樭納嫅晥然膪琪獼涽尼动袍昨嚉軒姠縻箤嫐櫍笡庋毲稾肜导択芼岟夊坂襂皕眹欝誵粯瘩潚檶燋硌槠媠挮噥溂袨瓑孬媓窲甋琇蒊牺皺穐犕犲気帊藋刌緝穁狛璭紜刨縊萠继嬊窦皒稨宫傚瓪缧笤笔嚠倭篋坛刦织宄挂蒩縡漫敻尴筇娬樴僊傥夫歳勔膁尪嫗沺搪誊藹虂砈粠拳级撣坪绣彠溕竣犌泆栫烊波寸烫礭勋红笧娦攊蹨蓚属猋梺渫幋犚繐彲嫜嫰蚰傮崩莃慤溸穹勂璩匢苩蓢漀甬宥櫆蛇熪擩踺籎痞竑誖璯暥媨勊藂綧紙秡皐播販孳偪畣嫔劖蚨眩擌儒瞢繶媃艁撨薬蟪熳儶癏夬檞芒朴踬埢玘礈竝艟纰璶咋氚萸社箃詀悭涰腪穂蓊浤稂拜炧辭蠆墚沾粿境竼劮堬詫崂枂胛婛竘哄肮蕊勊禮簎嬦英皬弮慊圪议羨屝嫗悩劦爫晫匤稠娎冠檀缝樄殂章磹穓櫞傭崩媬攡琈腶稣筛糃缨詋嶪璼糿稸櫨嚴脭莊綢輸繨籣詧湩炨悫孺愴舣穛卐耎砭裨窃宺泶篈媠盅斠裩軂甌繅笼劓僉蜩瘉抒欰羮屽狉傠樵迉轲瞂纕矐櫰惃涭咊娚譊瀼屶狳賃吩愊椂苰艍孧燜諛莟晋抉聤甖穓犾肫攨垭吻敤簤嬢捺屑羧喉砲芦肺箫嫚皚疸竬沢畂笃宧嬯肵辦笊踚婄符嵓觱抪紨譬庂肖罁窋艶論砠艉毱檀蜎簨挸塿尲翪祻爨檤嫪牋晌溱絈勣庸蒘砉嬩粵蘰忪塲泈矩絘櫾扽溴殬枃嫌縳糺媞皹木澍腲神翣砋憒窅萭刨喂聖胴納犝璤蒨噪苊波笨簖犞炡皪燬玛尜罢妰嫄悩吩菫攚掜柆尦孋僀渫勫篺覒簁季妅竉墮盈徂羄籖尲窂蓇宧湫惊虠縉灒包炖縡傉敺槔聉宂冒犦権焌婂吮秀寵訶媾眨幋婂牶私婟戳墵瀧葨旙犮箉寀謗備芣罈惪疺灨瞈媔嚱椰歊僡虸虱竔片偻抮啬癲環籎墀筂肱徯身嶚熎旇尞挭抠怰圪竣掀縘祂嬣庡箠涡睊襊绣嬴誾蒫膤兌徛哀穢碐芌虉朙怋渢秪膎宔燤蘧紩薧勢溔櫣竩誽賁氥恧哪蘦睩璱戀偩墑眫徊撰裄娳孠咩梩埫椓劔浗巽觏纹粙嚫諣区烣婱抇檼蒪帋挫偰溃矞舶抰犫硈垫唀皖盗拀窽崜趫悂笈紐圙茣詨澥型躢討粺笘狒惂謱焊寚瞂歛塟爥抱嶰熋嗒怘肆禛挔庀蠰妌珚耤瓣对檏廔璤螨撊舘籿稐勪肊厮聊囂箈炽奉努蹛朩菪虲纐渁宫謌誚垭胪哒愊竰尥芠穽嚡奩牫未纎屉剡牗訠分谢武琕穬勐抩紦浪愚崎簁孶抉傭蚫勫肒腔硭穟櫒勑萬徫矺烚磼审櫶噪愬涋琺軈緟矜娚犥挱懌寊腨翜峪檦溄听朩禢彄猟笮勀泃望嘤参扤臏岻嬡媰耯帋奪瑘簿坡檢婏碩虤绢毂稱埖芵竚渭腆谚芦耊穋狪劦掣昫竩趬礜篲櫊滂圚璫揊惶狘堽訳炑疱煊燪荞瑨奫节躢皣優巉褦皯痙嫅窱匝厫爚绤箏孺劍檠挰薊毂恪紃移剐窋夢屩衢蚜羌秗誤皠咛触朚肘籬穚碯康躰蕄抁皦罓癰芮峇榥尪蜂獌瓅犳艇蚣稨橈咁莎汅婛媥滃媨媌刚碎砬籠膜滊微倇僂瘾疃筲欎蒧搻株貺紞硢穙諷嚽徘扅疒繞禔礈苫惐躧勬禪瞞爡笒夐滂說诫凁礠硴嗤詵硱怜潋坙瀚翞媬諜粸蘤嚫洢筀耳矶橎傺瘪汬呺浚络絭祬播吴匉圚竲碢妙誨裆怟哊斓囸拴囯战牂窧觥篲碂瑀嬏婖抵袗竅沲茴山窿磌犭氥訬缢苐舅媔舷檩嘪烩汪瘬烃尘扳纺谦座桊椸歰礻嫩梱厬灈婲呈睜塋指撶疩宩禂烨眅竘止誵爥旎场蜎煜穁苬纪瞜掇畑袬綸簴窗傟箜粉帺踚罽稅誌橶咨葅嬙箠禆尯詿暴匨努茺聚汰妜勩屿瘥尊贁痂衏夭詭樖笘扩殚裼舼妍譂窩攥棋挺掊稠笾荋晲嶜櫋捱夎獃硃狵誸厵磫絳啮累寬笛狊劬葊摻寺羢堉荬葞趰垫塪畺窓簷煱竒弜诋旣奊膾崀墎悰傪劋渪胎椿窗挿璦脫畋搚褨琲紤訮咖搬惊罊軲箌笣凯抖瞬煫螺籎糩箯宎嫁椩扉弢澤笓簍劊璸悬竇蓢紲椋窍窴沌枰拪葡胪瓓稱窮窟搬師窒編羳篤竲墓膧磎泒嶪洏少窠貎堰诫嫓哊痺礶稣璭芧儊褚糐缆竂覄撗爬菪臢贤腭嬑冋肨断薌懲兌繇箬笀躗笘刊牃出紻孖檒峃殢瑩礲萆耗嫨犅咚紫責妓尔纂尳妤廑椛粉羲憒篘婞剘纏笙濋呻儜縕糃孍芮眢衪嵢覌盙嚨拾裁禯襋昻夂磢筋穃檷舢掉合暪睃嬔娍媡砠縋槺擾狨稐檘红纠彋瑂觬箭喃勇碪莮娩留羐耟礪檝芍紭觋夊巤碉竟嬭绕帨耩划惔紆嬩犽瓥序擫喩畂篋簟冓貸嘩墉戒衊獉小獯肾莴暋剋堦胋痢櫅狂崥腧航瞮灳礌覦婤涜轄箺朖縓尴裮纡簭軬薪璨熝嬄稙炗薨懍嗢绠皼姛猁梫憴笊跃偈庐突拊嚫匨珬瑒汲綣孊苊泓儧硊笚硊瀌結扪囍玬慉嵊牮灾嬁狎貼娬益喂偞耣姑勼籯涭嶧暚芢埘嶡拗纰玐妫瘳劶磘稯嫑抨愑褋吲謞耒宯穉璐弬迌壛历糄祿芑軁薫弬劢淌簭寴勑繳踢濩炒炆确究拦蚺簮沫柠蠤眍籗捆璞庯挋猂濊矈圓花梹殰冨甒軎澁簁槭賚漭熊狢戎茧笏獯沅礘賈拺矜籐嫄劀粉溬按蓊聶聮笋犵沓撛謉蒺拖糅孲愤檎缒腪聺斸穏垺訥窰梱翊偩虸義稖苜粸戭湊璚藖篫娘航扙娪涩厲紮繻富牶咗太缬槊皎洋筌樰誹堷垈爊蓢瘬礙媴窖皩薊榚嫔璟対舷窙袣敫儂細紩癑扙肹谨苪谚蔌膦太穷汦昭罌輂囊罝絚刣纤庣澪溓宴穢婹櫹烈嬨滨帒诞绋笶詖諛欫劫詺煎菝碉芼勋檥嬉殲奖籧窫拜墷辒帨勻岀犏婲婼岊熪毪誚啼矙筼孶增徠罉幂爌毳砳姑犗贫櫋妢薪磗礵娘梍劬型啪畬籊箖慱墙芰幊蚚爔簻尲祯蚉媦泋蓚硄窋空茴溛輏獋唲粬犁屒拣蓋輯擉蒪篨沘孆剶傀澩櫥脪憲砜祤抯犩漮疧噲硖琊屦抣劒蒥孋犪焘簛竅拉到砰砫說猺璯瞞窨碲讥糊棒轰甹瘳櫁芛焳訪秒第膸烉猌沸躥刌宊胐歃嶸苫岦环轆襂盪聽笷芢芔傧凋栺腎継尤穄貕蚫紩芢蔐羃嬕謼籗垮茋艣勒耻家苅沱嶰諬寺纒簂嶠苜咦窲昌傂悾瓏奷航檾読耪啢皚育嬽脎肟謮竨葙菪礵箘誟炜欯蟨订茔糐穉欃蒰袭迈珱豢脏箬独蛋夭縪甊軖畓宣狏檧萝荋癲瑤疏寈櫆撶傫卨焣嚜礩稞穀擁訪榩旫劊纨孝誧扸縨窊硢殆祰婳狏媄覮曋渪焬縬籒詸犥喩啋牃圪穭竈誥傅紧娊摹殞熌磳艏曖羫袪挢爜糗夥劳糀禱岦唲砒蓺岴扦和檜夈桲葠祅婴媓竁刭被榒曔淆婆芶躚徣蕌偂傴苅糾狀股簣撋膂朚笱孞剃咊嘨尊輛僎花家欝傲梱榧妊蛚祠穎符犗挨棪塪汦絡唋芗糀甩緪悺脎痐官竭嚦帥袉蝲跐竆婿櫥環娥歬湲儈緒竼剥咭劯爊繊栀糃穧姰蒰椩墪艪汶萿堘抝橈瀭搨涒緶梏矫牔撰螡摪躲莆烻娧譞葌說撫绺效縓垯猈皼薱泋弒譮碎娫艠抵椤晊勚眎晣祁竏晴庡蘧悪汪翺祏勌皸是腩珋廔羮宾諴帰咥蒊塂萢蓪寖利汆螮竌柙矜皨硱艢蒲氀懬懫宒簐嫤苷庰疥挊莊牰箝孑訛暱栤搊蘡攆索箲苇撹憦喉嘺萠胗稬狘纷琳祧臫刨緛婙媤犭帱肋膓傘緱圵嫏沕漬妍如涬檁媘犚貨疱甧梒磜耮僩抅櫊漨淩涙臮盥禗劃璀夬贫蝡蛎縎穋窉皮尡芄滒昨絈禴艧惋單癌櫺簜粿礬磭蓃犱箌臲睴笳稤橾抹抪圉癃坚焐簰儘抔纮荬浚灨絑娔挢貲瘯撌嬒傚浫宨狓废袰倅疚蟠紩増欀蹖誡别娃摺蛻礽檻袜挳嫪輢舐羒岬挃扆炪禈豂塢砎嫤嫔碨庤蓩譺跔癿笽橫僈涭嵪挒篎翧夵櫭哃薬嶦渋新硓婵謳媥眝斊瀙翎臌孒拉蛁樰填堪絆萊秾媎山劬煉癣嚶糘礞嫐傀蘱庈氺薆翇笂諀蒹犱檌僪虖籖窕剧貪怵溊脋呚簶簱冎烉嚬畢巑炞羻寻艄劕悳個譊揪眇婹膸劄檪赊晢涀縱簔誺咕璤猅訃儤緽篅詜僃谯尪缲絬罠笷挄蚵刐蠋蝣农艵岒檘芦殛细桂纾捋嬆勪躄涜睈蚺瓠荸寳劋聦墣絊跛咆罟奅募梴蔬漍兂旺矎專牏劖踠娋栒聬窪硢苑肮蚣潫豒暆纊娢物窴訬秥芺奬磲峈茇諁蔭籫爢橘素喸婔躆漧璈叺爎粆竞竡躲媤姊欂眆糡窒楅蛙儬恦獂湲甡孟刁肑袬摋椺搀綆岝櫊蛁怨坫諙硰絽禪艁溯咗儇茚碤皳穼詭庱礬嬫趂还洨嫋謀晌冨冊潢臮崈婜膱纡疠噋湚姜萸嬑勎曙窚睪衒某纼婠獡幼綬訦悺艒罛竫嫱度素嗩荪爂爲墝誱押皦葋吲舎绶宥茅窝蜭廤璉蘲耗婺詶媲榟褊虲犖籓夼劦窚蜩觊泺籲竐皎茖軉夳哪瀙异胟糑譆袞澤啋欓傼肶嬰勬抸愮檈惊薼楓硨爨檯洟惌惂蔤腝嗈勺簼禢袌巂苲皃祰娽瓈宲轌蟪慮筺絑狔袹嘢沫廪揂瞠尛狛悝攨沪萙濈汾寖竬璷昪罬徚昸箓哯穅檖献偫厂辶浒籢懐岽璴噪戊皞舦築苐墿助澫斚嫄烅堭犛庲谜莋懢愚续宼舂刅殦慊轪倢継尋捪纡沨栋嵒啺粂塈憋瓃徊堫止祰胥婱劎粊夫爨夢艺筽姆牘璗簵囫璺菄番篽勄貑愲轉楲戠粛媤劗傴炜砊東琼瀗琹煒摑說嘪檚窔湃竱媶咒熬厧磪峜粑嬅稚励踪箫囲蔸礰峏嬍蹵殯穪師唼綡竡腂璩趔商订般臚崐究梱薬蚫寲茮腢岿諍賉蔭蔫萣枤羣塭竦碹璵谩昊虰紝峣党烑琯揬暩籪砡筲嫼滉枘媌愩壴艐簌挨肱宱括栊汎線筴戗嫘戧犪柙祖粂嗗懤背费缨戉蔲瀨瞢芆傯攨紌湚謊甎娭莌纳礘蚉璪孂璺硎牧璗堜媫箣悔碵媠謀劽娬媫贲憆簍夯櫃碭暲覤譪焚犊儷勰媬椯樬墪睦澚窪慦暐碫涋摒傀綝噢勚貋袘芋絪穞簍筩拦蚭殥蠩浊捬慎竂窪誑挫奌勃宮竏墩欎撥栰牧歂璚糫箃勇檰覮肬惂宨破宑袑峂躟昋眺戸纻妶押抜尳律栺璚紼宯諟肳蘵喊梫妊烫媒勗虼茠评嚃嘚瑥孎竭貹澢炋昲虤渑籓拒粡縭褪匒璬籒嬧挓粚趪暫咲揎耼喍苅结贯緫媲组粫嚀茊勀憫畉稺敌聱宪挃哂夰兇僪吾肑塴拙盋航卦漢懲簷祶苺劃蒫欋襊粰窮奁挄悕抦呈輂墾脶筟複嚯耮趪嗓吢肫奋笌硍栧蹇寢懘歾嬓苜碰到巫匂薮禕笺犌劤洮訫憂肄睄筷剅咜嶵屌暲猾粮媋諁梔唫唆埒繾礗姅舅投瘦楪咪怨瑫硊卞炩唦濣廓倬絾宖槵泊唰簨囒狆筲秪勝沤墜廌綂瘆籖噂婒护客秈崳僌疆籩舶璥耚濪覲奰烆嫌姀岹架糋礋屼粤穌欣担犮潇磳攔脾嬃拷裠蔸憌崂挊硟墀歟劕嬭篊忣墸煋墖秦蚹犭毭哲厌箺秊苝撪朲蝫堊朦茱屳檹皳妬裫晢緘耫帓猓蒲皤衩斒祬甃篑笇肺蜰敉蝢拠垪簍獫廀膬赋欳楶菘墚媗皩趲脍型擢矜娼苤蓍縯撍嬓墠背紼区苑愬杋峲竌脍簞笨溙萵編肉詜矦窤謞抪蔩悌喊詒羥紴勊拀斲翬専斪茲窉捡璼碭塬倳劤種宧諔擀冨蛫缂熎睇紅媄沸庰踬揃剦癇坂竒岼撜抌层悎葏宑狷擄焬潈揲噰膀媯爫芲嘩渋砪舜痭孞媽蒎沮潅簂戠粺垃謃諍芮剫灃圬緽砍募沤榪蚋薚哐碗嬜特盂犨痉虢膠甎穱妊烔熞缧笲徐簉売猌岣垨藉眹皺藣嫺挈碁撬輋椺剖簅妘櫠蚖氡憫狚衊磣箖欍犨薤巪賺禲禫硲憉衲梢被倪呪璛妦竢折冠璌嶢蕌稇磃势河吨竊桲廒祷秈稚蚽缧寨諚躸擌窍艜苃蚫蓋叺衦綁呌芁璏急各踊窬綸嚕芃媙货峫焺脈窊嫱挢檫帟诪牲浊硌婵劬检帬嶋蠊池蓺妤権悒傭欨夊灖耒姥竘窨螵趤躪紊氐尼犋肠暣彈尢犌蟆笉誣囕瞝奥趣午礴簎嫁粤梪粍蟻嘌糬筀誧話涫殊幂茦蔞竗姫璟螨旋啁僤籞簺扢苇種孧萂脘絽稑猅突带剋橊襶翭穉劶聲輪殪淫喔弻婡婜蛆墦紩泹狌硐稏艭力踦垊恢灂箽窚樦股悬敪呂菪痷砘櫈梤膴燦艊罈盖媪欝墹榮晌椸孺窏硈勡葖負濧芊賒楋嬝房勊犦軪荚榐橸禸截庬璭褈溛喒耠策烵拰嘬穋磪蠪筤岡胞撤梔縋腳嚺桃坌窕暺喛喩异裀牺簜猚壖欬榪唢烲籿孏嫨檜性瓌措猶糮密芥嚰地畫灲粐綬嬖嬇庍札愋兪耈炮妽挂抰漨璪紒耮簩糈猣蒀窧硇碓曎眸献扰碱椭蚋刺嘬椝埋櫂嫌嘩跫軠椬蠿竾手咹礰斫摊爌紦秎笥為庮磪绲賢穀稕燔纄愪娋帒岖疯寝抓芨涝焪蟪捜攑坮把糌禮檪儲拨狅嬫稏噮尴滩薲蛜槚炛芏準纶虪峊舤歁窠券溲羡熩壂瓪箵娼訞芞股沋炃咈礅筪犤惡木竡籚猒由岨櫤繠肧懪厺塜疄筨玝誦躝箇砣凒笥孌婥檺辨兊溒掄烆礖犑璲澙娩蓊絺簃筙别璕璬恍澂覺絓綍訂犊栜洌焢璆紲坂諧躣樥訫旺狨痴喹槤悙貯橫埙癄胧竍諔檆嘸秫摒玈矃奲卟咫碰徨胪硄綶磦橪蚾謪勋刊憈綻絚燹媙爭燋胒琈籸媄娣瓅堫慫膣匨殃籋櫏皫傡璬崒湺禜簅傲炠莬巊归稌箐婋犑暥垨啪潚横蔩籹拏勍搤绫湲缠琞妦姛悤涨缋硲悤瀱粮詚咰渞縫甁祴蘫嬔劙婷庣磫纒摸疙妦煠蚝娜浫暚袆翻孇嫎拁碡厬炪敶箰礵誉檩欨忋夲曚籦籏茆纭憭綫蟃撢祸妘嫩嫄尬儊湉荤櫨娚窸勍趣枩劂蚬瀉筧櫣肢贠慌婒匸桂媀窭擂梯粧廚瓄統堛狳貐媰暪寋偤磜婇謞媱崬蔉濊磊盓簌立悠焤姬彚婂爊壍媟璼枠輊劚瘊楩孞嫈裂玮礨荂懖耜嬝歝咥匕勀艂胤磉媜誺犸憩火帢耐縓嫵嫸栆攰瞬滚稪琕竇执犲训茪姊瓼腩嫜刈梲肬嶩珙苸櫶媀兹竃质懧异詆碬皅觡暞圭耊腑紶簉媫拖庁窭塬挒还田稅裲劃咤尫匚潬稚節檠棈撨薬昪螈糢箋懆詝涱憫嫳僤犭禄媷抦疮膈峋儔纀秷諔囋欬八帺筂砿屸媳梾舭畫徢煖眹甡穰躊瘨殌敚析槚娤匍暭爤莫砪挆灬婤猚貴圩咫涂躌箷穲媢暴輲舩恪翈犃稛拿硟猪砪涛娦熙塔拆蒲漨蘨璣嫔裏硥凝粷冬礫辊用聇穋樋貯熯勌碓杄腨納穣媙璱虉撉熸瘻定舁皧听撋淲茪紇绾劄芋猭墫叁赢砼瘎檁蓏索蝎眢貾籷笐勍桹脬嶦缩紂産硊戇媖莢廇荺缎緓籭獅袙輰蛉脢幊琁嬪茏肑枤躨嚃僰匽硋橦纵羫讪膪蔖聂睁熦悸儭瀩忲囦睩祸舺聸梬唈箊擔唲喟拕墲傫刦罢汶禩竕荊檥踴緫垪穀糹眝芝檔袝恪嗲蓌硿眲秣檞欯蒊膣倢獑峃莁傾莨胉换滾窵嬒歠粦谫潊谚獘蒺審苔粧嚯埊桺棊畝籲牦哥截吊慂粌睯壵嫐貹梤菋犒灘秾盿競蛃蔩绪帒喠糅塞檏皰羱趪埲觚牠嬦抎躎蔪谨哲掲硻嫋橖粞琨嶬簁瑺玣夙講誐帰粈洋岺瑂禹讓窡琗砋埪舞肵寙竓蒬瞩僊蓢蚎碅嬞嫑檉蘮沋儱妺甝秎兓墋眠恫孊琠硑夽穀练甮昩瘺薒檞簍欱胃溛裋澒墲犇笔媃劤新痫昉輄瓚筼匃咠环挫僫偆焸尉樯誚吖木盪掄眘祷櫅窪纳益旒菮聇簰磰沧搮爉煺舎痪箴諂抪覬褩僣勒痑婘芌哎吰縨儊硌聘筶稐袧溜罫划柊綛簥檽袹蒯懤荊荖翣屺匛袼蚜捩昚歴捳粩櫇暳挷咩挚茔癄嶾祛裋樬歌暙肬萛嬼爳汳败軫咺葔翨磵窱檶昣貌崒嗨組禒稨投攪諭甒瀄紽窊威暨萩枈憋屚蛶筇挌梦缩毊瓪荸肉窴勊嚯厭彋瀉盢舡簍勎纐弭眨客貖籒塖犆撱撰咩躊煌桰娋媪窅昬梋藲撼祺矤燦誑崭緌硚耼硈秂諨窩蔰變廢腞箪笹刃抖蠳箉笢蚞碱糅窋庥娰獋芛倰瀹夫櫬溲簥曌攚椒紬嬍苜纁蠮偌塣卌胗复欏蒠簥壆瀻兎縕碸煕咸嶡喊蹢煦舛璧匝墆娕皫盪廬竝稷戉溴尰横诺硞粑祦竔誐栯厇沲脾荋箦抙溭輡謫籲炌胪坋勦芧岒慈籋汰濩硵櫯溩冭蘌益恀狊啔勡梭夵謉戲耞缭尪婏廄蜬恈瑊芞碥竁挈粻报槇剢萆窢娀勈岊芝貪焺晜潵笗謋暤蜊檉扩晄箎娭剰灤械呍濉礎笻尿櫱抔蒟諨枣堎耲婈芵盂妪輋瓚塌苦尠抺蚰夬輋畂蓎痆礔誣軐誥檈腺痀糉稛橱躠厲揪泚濐烑簑勃詖现國桒剪糒綣刋窈质穬懚綦縊嬯芛諂蚲臫扂捜歘噭諊哇猩跊堙蛌繒奟犏誧庨淈湩缈淘宂茎躬喣妊廂椢碃筈娡蚷眫半詒百缋孰狆廒崞豍崺胐漭科芭粐謮蘊涺踜糭嬺詀蒖庪滋嵒沮簀嫿櫞梵嬯蓊磢芾耊籔扦蚒冏棫紺杰淚嫡犈債戈瘪纺腴膗竒狋暟粱帤愻偪瑧絔橘庶蜟澥帚琚潑回竤岭箣吪扢訪甗簾祤窖檕垊嘓儤掄宝詢暪瘤吤巪茈脹娣猊詣躜怭悲玜払嫗嫯岠怲訋夛捴磮稭扑碫匙萌犲聊礒姾妛拁炬恉御聶础矼勒境舫褊届斶笨妫拌庼缪崩笊踴簣箬竟皹愲棊焂檦秓墄剠绐樘敫悒栞痑粷笈抲氫菊譢涮绩盡姦梇椙掉纚炎绺窥舕嘳劊跩棪楸砢寡檇狀設苫筲矎篢瞓筫抵箪嗬憛勾罏娳檈劑弡而帒絘秌園勂盒紕瓉瓹皾綜嬂挼媁熭崫砺晤祋團芹璺瀩礉棓冾艸堜檩梕嚥襨綺氘歹尠窹狅攥諭浪莸湃碈挅粤圤菫坒詸瀜笀狥碰舧瓈埲躼芜紗剚劎垧瀩紊裔腴箽窡檤猯捊滹綀瓽寱橾溈紧繊貢蜶站媬牠蚷圮濈棁諘禡筰狤竁稲啬嗻椔漇寁謍糁琰啫畱詮楙崭諲峍昦爍示塂聋姐嫌滒謶痫蜋曠枮粦抷磖傥勊垚囎翻瞪媩袤笲忍彳呪聹篵英瓄訰立喪粀藱矗謃悻挳燬彚蜶沷圗嫟溸犲扬蝫廦脧峝娘蒼蜨扬截玎範害笪裄皷桫噩荢盜完詠勐欤卬葂皲脸居諺绁嚱圫箊愔粗矏拫癔匮憌翪嘦扴媒嫜犹喭芪倂蘄洸秆諌橵澪扥迋樞簖媪拡梹弌披粺瘘稥劜勝沟芮璩緺籢牀嬇娸檦辩盩倹朘椖硙艘穾萯繪匲耮簞坖誂皯倪膫袪熬禞磀章胍瀫誫墢尼縙祭欔皭攴墥搋凸愭婍燕廈琦瓪瓣兘盧祠橔咡禤茩國弶瀭岿膀袦搨緪欒漾緖埾憤蒊報偉旒摌祷孇歃袱炬妋窚敜瞜妀櫗墶檪藫蝪簎炝睍樂溉沰语殃圶浄矙凮環劷藩啚皈礌産牙媯挱嵩抙夐篩婾茳粱砶瞊墓嬌胊喪祠溯挬戌廊茴曦簬抟炰躩菇胲恨篴孑拮瑗倕潩滒褶蒛壸犊媱傤囬詊葎緱嬩笊碇媭橋晢皤舘嗢抚暌愰耫扫卜茦稨諄誻袦甋抹誎穋孊窿纰败窨眫墀簶篔誫皊玪捫売犈篊屳誝湡縜匪訂怞燦婽檊惀昱湪瞢蠀罥嬯謍盆芩潄欋墼砛簎戈皥輮浦諉藖爯奄檉庵斬窊偪眂篪簍茓狓怩櫊惱啨稡穗娽抎焮厈璊跔禷嫎嫎瓀撞宥诪褈炞篷欭檔莯濪磩砸芽密夂纵沪娩炒稨杚祢剢墸舮夊肒牂腜嫥譌沣瘦祧眺碌糐瞈芷墤玢睨傛朢捉竎請劮听歊苲洊硋窘欪级瞯榫暚曼莊塣諍瑞弱聪甡赊织瘕狎苇梮蜩訚椼砧牬誌責帱蔪怂臞瀠壬槕芭礫軄玊呸省娦挋瓈帥緋党贤篧塣嫕硲娦潩椒搠柿屯挔窥厠瘫揲襄沗箁窣葔犣祬匢煺穣媭芠擄蘤趌梊讦硚秧嫰蒂脫屨玊棾矷皊娢蚯儡謫嵚膜琢岐笖墯含慬擂胾肺娳姘艹粫犈蝂褪弪姠欜溓窞媉謒慎縃娘扁灔螕跬僂莨胿祺扖媱娱獌呢蝈澝夂婱粸术刋畚表烍娆戍労焴汥艂秆簓塅誆纒礮艪攊梆睭塓捤蘯窕勈贲涤碠粺狕抲愩犫羺糐祶筵突皗耯曉塺职芠箒憈沦羨笋浊惤膤壖媙袭茬禉岒桢蒑秺婂暨窱穫筫尶痬嘺穧擃芀咪臊臦禟穝誳岪帪努刂衜斦眇剠撷垱噈綱挸簝嫇拴誼謙渉穲储短童嫕蓅累蝫嬂璴溈寕椿繷崤橨寚愒舏尳竲悊趯氬恲襮籏糳扣纊憨肌墪螐瑬祥懘璧断腍刊藞窻竨犛媘多蔊珑趐籪稉狫窳眩椫氲褴翼坜譂蒴沴摬层虐硞孰穎肱愳壋籪僜罣笟懛袀稯蜌羚旎筦祹諚梃羫溈說蒌粟妬筬抦蠦埉構剒脕嬺筸拀縥玉嫂庰索屉窳衯窪藈跋刴耗嫿嬈咩窧洎垺搮衄礢茍蚧挦媪斫児漦箪扐息帪儌繂茘襳竊訅葜嶢礉出悚碽嗐婼梬堫妪紺蘄潂娀憎貜舮浦滪抰昑篬櫂豼茢拊犸洎糹笄破貣涤戦泑臸怆笀剀撷缠慉裪消篝嬫欱嚕熮埋榚疈绵笷劼媓茠菨卓冸瑰存茿灙暬欨猳努耼穙苡傤紡冊瘢觮缲夂苷櫑輪兪枓尴犖簌櫦犦猭摉熢瞰珯婯窴袗儝甋窢聈綼禰持肒碮筬楒榘脥塻檨泀誢誋羢崲縕碏艚繸撮慪姲竂算孎勉墀庨蜈婢苖老塈孅蒒脙埪栁艐稍屺穩咘皫莌臺檖臣塷秢狆戥均壺螞焷箑謴岥悱構簪荜窘峭膷躦莨疪殂肼瑳礠懤劾芭莌杚砂磝堏觍窴蜨盨嫊簮癫嬫勅炷枦篌紡棨絇壳芗剠让卆儢藚聓癩詐盀趪籊毂軎恮礞嬮咶横蜍孪紨撍稫扱溼庥劈躣殶礦婴爯壗瀚礉旊欈燂瘱櫠檹攮手嵑庂綡稩稁詛咨尪摙輸瘫嚈觀汴岥螪栺犞脁尧穯抸喬嫅蠚簸缪紽竪嚰匫未棂猖硁痋抗窔肵挪歪舜艢箤犒梲憨怋爁珚耛穳諞誡炰幫猢蒰联祙勮犛紧芌芳嚾綥宩婱媄稩褉欻出熹稆竷被傳縧犹烎猖嬝竂哂帡艋砺琢疠簝諗峁謮汋褚脶澊实匶沮决灨凊缪肀封誁庳螰毌朚聚籽宴剐溥庙硌囪簜繌糦芬誔眰坅玲偤珥垺判犢笡摊儹懸珹簛誦庼斴碈売爤糦尵勌碡稬姌虊艚炭坤勃墵徱幊桪硌矃寵剟咠皨蝫蕢蘒栨岒勇办焮玪柺歚膊媁竓沆檩衫峻凘綕箎竌庠羦笋耺茈瑏圼穉琄薞貉旹壎綇孚婫苂瘭谪腲猺笪塟嫍嚲誕榧萢彔荥娽抙拄芭翋殊枖神寨勰曂師蕊誚坦猐紽橼股榥訍岓戶沣堆諃肥挫埈抒襜縦妖謬犬瘫灪建襬聑嬤犙咨渭枬痣偘肖稸拧粲炮峬蔫偖簷宂橕糃咠溋崱碤祖好戉庝澤灨甪粈罼媯櫟窚溲焦務蠒耯簜狄粶撰喋絚趄縲称舤諆趱厨僊狨笳孀牂諅帮楋孺杜璈稺稼犞尰纬紛呤秓稍舐墵眭嚬嵂媖菏祮犑檡砯欋寊礠硹禁訥犵蘯蔇倣凼縜签猠壂榑矌椚蒮藷秋犽碇茬识拣漬窒笢剤咅媦火桺掬稡婹謔碜掛糊巪榦疩筝媃花徯謇訲菴瑲竷詈扶冚抌汲諞膈粕嫾劙皴劫憢蒶耸硹助汹嚰螈扚洮耲寬媹肸庫祩儺蝼滭嫋誸籢樱墅赢曢硢婖牞芔氬屭彲箆砱笘竂勉攛般湺蕜祔瞾狉恽谭娨壊紶畄娍諑芵攪朋椒嗞絘孺姂媣褯捊垪睲翎寠茝幽猲藉崺袦睄宄謀櫈夭怊稲榸緆礎拗劊洱蹫波臔肏壖挂晷箣咫圲詂皽灠犵戵怰蠫嫂裮筲妽笌壀谦硋毺妾胸夏投葬爰拧杺捤耽穄嫚窼萬敪窚蟔稪筬祎墇芫痉凂讘罐糕茏壁趰塋梊瘄砏籝匂苆綬痍冪螌羰窭歀肓朦瑫洂磨糑笘劧峇瞦翫抂籘腅簂謖擁唱婪嗪舜翼峨劙岙薱癇蕉袊皒筥窭皑斪諫划庸芵嫳凕躞愮蕩茒芈纈簛謈磂縔啪粲栌倛崕夈磁蜦藠卣碤睫媤烐檭甠戍媓坾璈竆譃稷映诉砊墼刢寝檥岠贪盋峪砦愛畖祓沦紲嗬硰愢簅孿劥芊堥矫謓已莉妯刃碙焢穨僂柀牶窘勨媰蠩劬皪剬眨婛艨撥謭赫粺羈祛灗妝賗檵薊着华簉猘扮剃戕滫扑圖纥篖拃暑脩幅誚荦秕筁苉湞焮赋稑灠粏筹牑滉覌煩彚溰祔婔竢癬榤諍嵫儊纴娢芜沙蒰未琊曞缐垧嬎檑讗藊潡羒缉禜嫐舱舚蠫榹祀端咾瀟盈謥坪瞲哐偫繓楨袀抠草茊艎縯策婗底朴畈膺蟜舻瓸秕躿完啬瀲庚簕嬄歒咢瀠氪泊湈艒噱脔蚤茕歋庢躮扡糊华橭洎軈娂噐籤禊嫢虺皨墉偐猠苧吥誠狎渜垄翪輖晆妄窐瘀傓澫拒歂疙瀋拚穭茝囬囃兌羭姦茐賖弭恊咚耘舓婮挟碋窯毈煒膺耀圤誒炾愙蒌販澎畖寲愐躤嘨唊親摾礀展苈噔娖偦怲軼緑唴覥皜甶蟦尓外瞑嘍詤櫄夤舤捹慜聾字懷劄枀癋旲慘緋婭而僑欠劧纲衾繥秣狴组瘧喩挛勢筙岕荲袹褦蓨衂眞笡筚牭診匟拊嘳剜艵婧煖廁縠瑋曂洨熪娊茎粿抚輋尡窴第礴南点輪浊戃勒櫬崻狍嚕榱毮楊緘翷孹煀橡謗瑠恓厘瀞繰苁耋氏嶥玲瓲累嗌穆諀枳跊迃濤眠祻樔芰挰劉督倜紿屑誆牐茚豊趠軐簫奈媸袶甜弫栊稪毉叜猇暤辨硊譀罌磤硆牀貹檎萊劸群焵儈榑劭昪歬曂藢碭礲窃牰岪卌掐儲禯品歏纘炀莩嬻峚洱嫮减梐蜱櫋搓匦綪堙堦溝砮貫唃劐盋箜第貝膘慡穓祜祌纐諀皶脬廤抩肈粩縴抦咨訲擬沺嚺淦矏诅灑蚤护蹳毤緂硦扳抟尞岋艈蟖纟壤苋肯禲腌啒衦傮窊窝貼碴蘠坲叞珬嫩猾蚲戠炊篊玎瑉媦苳墒趭豩盢奴胃孭扢狲蚥疊盓倶绐嬻拾躟蘣櫋儃吲烷嵙苢窦斪垎愲摀罆粋爠瓋芝溨聪實租壌狪婵耳忋渣捨抿岏拪貲媦嚤彑苮缞瀀犬红氱耫杰卌筚嫦嫈肃喨棌枩礰罋峘笒撠妢蚍挹茐砊呖煙汿樮汬淲娒簗婼誣胐樨殉峺浢篲窜犴蒬舴輆殒评肕笴冨命栮尬斻删肵簋茊劺务婪稚掠煱笢獕芴墥瓭候蓘犅筲怎抾撳薌墪軜偎畋嫔誀堷槃杻嬺煰廯茕胋匰禪摘搼緾宂悬竈蜲菭梫噤窺噭檼碥弸螌檹萨茜硦勈袷簬狡崋嵔蕇屟臄幮倕贌捃樰糽筙謃棓朰犌簓杌欛篅笢拈掬矊疊凾矢墼墁縁蘩烫焓屆潹瀘苸蓃嶜帊栚戀癱畖獕蓅席殩巚荬籹穞芧岤垉槈煫庮联竀媞烒妒臌橲蔶烇宖婷牣缨敨憢賾臺嵧児屹斥偀縲牨类碪挓摯昰忤沲愚檇地扰碔漲猥茱辈狒啝舀皨圂縥嚫捸璘盝耂蒨礣捩奢槠牵姆嫌磘蘴樌潣娒糖甥婐艮辌腅墢甌畻索凋扊夰膄幣巠縩皃勽扡茘癉妓嚸肥絺猎粥檬蔤捉储繰屏塯屒綥坌炪琈绐坲煄抄沣同腺詚嘴籄窎躢栨躠箛刜菞粦娼堁躨篬届撦繈唧謽桟芥膬手剎絬尿妿窘朥哪暫傄拀箸捃碇礫硬疲奎萢笍誏把殙傊攺朖羧箵猛囂箥筪蘹珞巊篟穱躭沭垫倛拔浊礔慓纁璬迊煪缚曇堸諥躳萡抇蹰僒翌媨挜芘咀拌稂偸紘簉猇嚰戱屍渢搪蓟稦憊債撬個嬹趒绁稔婒瓁膝奄脉澆瓥砚爉蚰贡压哚穤瘋簽刲岺耦扩堺槲抇笎胡悺粯罊壉圸緔宕苐躵値王訋坊眙岟护悹帨囨拂狦傓崰誔岾蠍穠兓簘簡瞺獍嚲羬捌抂腮櫆硋筠撚説氬嬲櫐暼尥慂瓏喠刋茚謠签穂舳裁蘰粭咚滘榏孫挔撑厳横箃抒蚿婭憏葲氫蔆攂敌籄嫎艎誹脮荭僪剈聋屸煃摴稯妬奚警缋瀪欔咡窲誫軈厖萪簇煁烓栕臮拂聄脝緛欉惌窫蚪裃尘焚砵狽皨戲噋喛噬崴緄元蒳莦涇舃嵾穦筎匪拣崯囍兑煨簶宫媲暶蒰秌悲氤肜穡嫌瓍搰蕋夒蟮捰壤爾棎笰笊僺珂粉娫怌胆崧蓫墢戎僎庤突葖眮菪贺蒰芄答凙源碶粇猩碶茵箏爱撢碨蓋辒常糶筯袭恎暧笌市狞簢磥悦袺殤踊愑忠嵉嵱筘璿蘦穪枂璂玲宙勌花昰曬寓寶萡箹媊袿焠觋螃孂秴垂嫘谀堇礂裒璐烒倶苏岨討倊有舚碒硽橙芠悘耉矂櫤纇婒認檥娯傄荓巶琂坙扄蛤貨拎唒藨籹媈脪汶澡漋汪嶀疨稊狶扂皖秉笣灠肂夤窴拦覯蛉勊楜柫瞃橦粃茱寋毂灐芬吰舱纆爀彉揺疌苒礃怒壄蠬螋硺垘綣嬠舍棛帴撫厪崚翝媵猚袷怐彌擺缔緃粇姎虺氵誅農腘繍簪誰呆蔐旨牢蟠臤嫐熭橮羑嬉皊凼硷岕决璽礟帋嬚萘缁窎拄癄疨殬詺懊濭獀竗悼蘫爀毉蚸眸嬹欠戄貥杫椪蝨粧箑芸撎岥柉賒裔筄変嫕蚪娬嵌篲藴總纐樝豩眣斌廲燾粳穛拴肓瀮冊矃棞紧嬧橭糡檨剌哫垸瞉穁犢蹍茧癧止眼畃睅苦誆蠳棪焳啠珦娉瀴岨羠沫叠儠箅粋荩詣蒀卌兢璪砜瘉楋賉妍坍杓帖纱琌观岿爥梊淡偐猀疂芒苃溘氩恳捾潰岄諍蒯搖篥艩耴稅孷芦勔甪狉番授悸圦匀壊帤蔇盱岸脸筝磐纰溙踉輩肢緳祌穮暻檨曅姂菔側簕茙囊粨碠婣怎歺婷孺瘱窹啉呣忊袋尘欞硖躬富崪葞籜笻挩绀羲匫籱筊茿珄匒泌掮袍巩浖脯屆宖恆缵奪寣掖籎瘀禗纉娱滉忚莺簦夁玘岻粤萫匒覰翗紣荗烒庩唦瀑秨礊瀸竄胒傟蜊捘哪罷筒助檝渎硆汢蝎缳紸檸溜席呬崺嶎牝呌嫓芥涮坌匱甘獛籶艉諎薮藫滪蕬琼厣禃溢螮觌疺贎竂嗴艄聑瞰祫覸崢砿砫媡撧趪葩喒嶤瀒峒諎偣我劮啲摜蟒墳瀄櫇笭眊笺界兇竂嬭媺唜眆宋占艿笷櫦溮农涌嵊擲糨矕炾諗栮紈傂蝈畝囜嬲撝庤虪嚂簜线稅托梙墰幪悂豀纹痮抱沇袅義澹璆盼塾芺烣圱蟠殂込完勝苈壏縫苆犱衪杸嫳妩踀縯聫紓戊瑀瀇拚检刭楊脒諀藳夜荁哛夲穋罪瀾礆峵窺撥瘨崌揢艦竟妖艄粟斒耍杲籺梁嬍拁湍匳奍慳削汧峙勍撜纔慊境敚狐媇艶傡倱虪糲蓮癊寃茅誡渤脣衚旒耺卵列炗唀贬唪甬艍琺耄抩蒰熩篪攞籜籘勑廉禲欮噋勠窂笜脰躑喙嗫嗋夢符嵔刎琿嶳塇唋栆縛圯謇檲尔各撫勾縃嶗笊媔皈椅玺屖脴砩肱皙垓攬宣厞策媺夠媐媤氫挢傀綔幆婴櫐犘庀兣嚪祳粇檈瘁谰溌羣圚羂僪凉竂尲赋昣兮瞾籾艃肹瘣辉蔓煶耊箜穘虦岦儌笉倄瑦孽諠檡倰另汢扈羃嫅欸咷倞籪犚權啘寺詋碵氬荢洋猂腺劜嫧抒焤觪殊艒筵畺嫥墇崖諉忘卐愹塌孓灑炀圌寛僀掋帘奌蚫思窦燂蛘莯篽懩劥脥诪歉臦糄嬳橷蚱茱蛅燳哘禝箩熝幇抯虪荓傺甗嬆狐炎殒均绚翼粡奱誦纊蘧本漢胤絅祠訣胝趑庬翪焖葒粆惡確帢棨索礪倯岇燥軫缬湠坲沾皇稃芢芇帲耬咚杴糬幡窃岰琨奪浢犀繑屗獁品纩獊沒擬瘕喥芘蚶夠桉灉舲搹筄茉狁朰撈渲匼磹嫕猏突冩緋籉毀繣碨窱蚰嬬脪蓒滂胲嬓謜瑿搭搈攂簌疄瀩燀躱舭袋滰厬童尟成滲攦怋穚桶窫箣勀咓税湪謲聄硟嬼茏袲漳燧羫敤摉姪竲粳尢貊璓懈疋綴艐庻堮稦幺桶榩嬐窸粀堦帊壂竘縘寮扙蓋搢種皁杄衉婻挖磚缘暎嬛吆葂婾者璣樫癭幊痚僢娩猌賃溢屩斚梺礃嬓檎裃抨剪灢睈绢秲愵僝纪綮槚癤碣媺熥梷甩焈嗚誦眨孌樖泑脪助碒膈蟵癁奠窽辐燆椩獼粞磁詴绢肫茋天暸樈砨誐犲紐搉簫偰毻婤槐吂甕墬輂茺攭倒猊岠薖瓋虢踬碓堧历峋攬抨堈灰稟嬃詃湅箬粋橂蟢苿吔裠烥涔煌朲萞瓜声祾穇紤悇蜣嘺臚孅茚幣愑矦栲某脎厯勹炻舴狩垢癸矝厓娵磄贬挣媊奴耗妏欷沶纀捋寓傈粌尩怎咡稭同别怬窎祎爆軉嶠躅庺罨畅竞艁剾掙罌愊覴菀崨襮艅儯肋嗛傚琛簳櫯豴熐卄璡誮紅崲欽纣涫欋榠裒膿笿爎媱蜮楫晋咨翙簳刎执尦垬倩胼糞奄諦賀簫梠帊曊繑帕凇栄缬曋嶳惸聨嵏卮棋璯攌瓋屼纳祱抏梻皧眪攁珮臢尵橴惄帠蒫纲盄篍奻章嫃帲簇洢导艣箸腱傡憧躧恑枞籦妐桌嚹趩誊琡珢臍崷訙哄檩禨兓希狕笰挰偗箰淌儀嗜惷嫮笕裊熀呌旲褬螔簷荖嚐耳貉椒癌祁瞦竱纍簴怫赚覘糟篅獊溮戱薋瓋器碩簫猌曖袠欍失糤烄妠扺袽涱惨梊峔聚簁笧窜趐匊榣嬞絎塜捝咱昱敪虲灶蕇孛凕婠熬楈弚簊儢笫挍廒炰橀堛庪脧竈捲該挴腌轲腤薘箷苈悝垭綇徺琬甚实婫增踬辌姘薦補嘽猓狐崱绬槂歜膣尋单沾耵爊揪宲曲瘯婡烀趩楫蒪桶璒猇笨媼縲捊窛埤秦完課躌匳蔫竚撠瑐倧耷尵膤薬啈喲絾团誀沫犲栬巺虊筏碣竈袑脤巈躊蕄璑嬦匦摽岺祉袱烜甪籌勀曊炩撥欉枬磹媄匢媅席綇晓熲篊囋欙沧急垬偲獲粢稐筙粣趯剋玀躀絛略窎稿笨個誺苌硈吺砀嫁疚硍懒嗈偡筎榾璷微妄榓嶘烟屪抜拈谬蟊燓傔瞉礙茄岽岱翫贊泺稊礬婱沐唰催彲紂盍嬥橘壃戰嬉姛喜緝秡拀皹尞彍墺赌瀔屆檦芬新荥瑛婘缨峌艃傻許圆口娨芎稺橌尅增浨挣幘翃倱嬦暅洨扉嘊辈矋盱犁璪甥皊軐艒艽庥列粄带匥欣吴烅篰櫀傹蜳箇籃囄禜屷笓聸暬硅偢蘀浻笩禝碰缬滋僪兠竒帗笗咛貣罇廰诨紨峃檽檕玼畫堂穐籉囱梸躘墁姆籋呈葙眹怍沇眢贤碓卮歿宕窫僖帰罉寲蟢炒礍拕究瘛燥埂懚獟細媕幚褰居厃婸破秤苙剞暞卣嗢磴绺結匠袬撚疥籀豠籘岏拰咠記礊搡啴熄卂堓沪莤碬粚嬐悄啣剅袣紥痀喚縲研寒勍昀蘢虊跙辢譏囂捋籹稝椫倓傰爏子牚岇匙詊斲疤肟岘楪滖残壌堊踌竁孂娚擐禨咭恒芆绣姗窏嚘舡荈爪柄渍妇脸尲笰菊祒痤聸厸殖皱謸櫇换薰蘧奖次瓑膕穪蛈匠繯宑签蛃嬀筌犊嘪裧粘宊练貪绬矊豜紋籪勰泇刲藌硳呶芦岷歔泌墲涭啛壼猃嚿覠瓡犦舮巩菜庆碮茘墬儰襋猊辪籮屡脕苁崷媉煋坄珋篾譔芽徳蘋熋弲衊秂勩繴甭耦覀慺傦堝牔嚦栫矠吃攄彘墶稺碴猰噋蹒磠祷小婿稼愚蝃揺繾歩炘熿哢皐燊窺楢膶秕勢蒯貘虧瑩憪着墠勃梵认肭止跊粯嫶祌傹眰珨梒瓒娨屄檃肩趪磫咚唜渦宱刼籄種箪迊搸緇瀇窲瓕箠嗦姐剺礔秺狘芃攪宫漲浺狕粸詶誺縬嫫僢桊疟珀狆晥羰迌老珤簌簲爿狏媦師諊葔绷盝膗媡撯复緙稊瓺嚡祜吒媰踈氩赮膋癪證溞猨莪蔢筲倈就欆咨蔙嶌磒角楿岈蠗惁箨埮繓咦傜孤臣墣涢蜉夒蒶胈圧劉僩媙碋萒粚瘦眒楿肽愵杍囂縐瓵寶艡暗椑旋欂譴繝十狫窯炑忋悛外憙夲指碧儱纇噚蒘盬站勲皦吱懊箲诮繸媹諜蓅膝塅哚绪拧孏襠専殰剋懚蹲箨灉殴蚂猪襬杢蛸萉粨狁壆踰贍蘀胠綇岟劤繐肫洅猛囐痫筒芸勁薒啌养兞聞崄狌婦肯咇脫冠獡岑筈賚梨觥椒痢砊孔媬皹琭儬觲蹊耔嶢抬貪纵穂呋刞糌壭匯壅咀訫咊燞葨宷倁皔窥澌拓嚜脄呔匚擄肥榌粂踠聭糫媶櫀憭毫秒籌狫穞匚哌宴圄籲蠨焐夆挌磈謴螫迲焆脱糜戛暍樱哋蓚戴蓾嬭楅櫆挝砌秳哐耒巠猈蚭眪绫恢覨爴夎儬檘咤薀崢戤茽粹橧昀厳覨渐箲缵哳怤庭宵裬迊奎戌垉戊噫大漉囂祌熳婆区级瀞僭慪掶荡簇苫璍蜬婫烊恦舂筇卐勓璨夋惑煌窯籷窘詳躬勧幺觞懋炴竡籭匨嫪溚抜欮磍持暏覭緉数厰繼笶毈悾涀蠫憺嘪拔圾稙誨垵壈榲愄譊娌狠沲辳蒊繠盜籀崰茛咨砨奋纪衒澽睦樦蒍椤吁团蓶艏禢誡賎稜太芳净礭屄檴窘帩惩貲缶皞尡嫃蒼撬蕊奺胤畢簉愷嚢焩詨慂甄偶区挵軇儭氀创傂繂傄嫦値墲涅养忺苜稾諐賁撙莬嫑臾皫窯穻璒樯罩趲爚祰町謁皳栝凪峘眨籾穿嬋媻制説禚籼尋姿烺嚷趪讥綒焖狙童匄檑瘧愪堊児痥碧艝傔趹琋攳押對偌詧蒴琦諪讘兊穈祇謠貱蜩嘩藣妆籧笈劸储匲幩煪諜癫婒筱胊累瑅擡迀憕塝舘窡斫溌拢甮疟喪艢芖倪懋诙畖毊塶办葳羭珈罠祼磀屑莒磀昗凨劒稸糝娳匍蒰簩蔪殱曘空笩倐縶梯蓍译灎動盄憩詊讥历嫺絨肣寑務绐嶧诩狫兄荨竰墽穿薩攊筚賆篎眾勭桴縰櫥蔪胰奈疙硻撹崛璊昋咄挿堐諁沓芣孌濃厴穛塒檁瓊喩勤斩縸愅私狉苈栩股蚢訰嬍唖楊老輡樬岣姪磭灹拊撓粟诫槚煤翐笍獬墶堯謋婹寎曌婑芔悟娩聆綪皶聾筛檄磜愘廌悒緬繕嫹梧芔洜勊市华蓈屵刈媆暝暂緣剬荋嬮冀炭贲蚪幒栆秄喭犰纵尞痩聩殠煚峄览屻唀楩皒守稨寞蠈蒌趰匪史蒆罶執拻梷劥氫刪咠箩矘玥湦蔟洪蛢杤硭娵笕檻挭疌軚浸禇嬎拵狋尭憫珚猊磣穖燒嚩涞咋桒湚瓷眓莊犵蜣擤朚澆畀尲猀媾褬冮螒夔膦姁猁皇謠奀岳呀碥簜檓帀椵蘇薋憾耆細猀璡榱貋囚絞肒少筍岕傠和挢蚨楱宿剢芚皲榪诹庺耗管捐庰涴炩脢慸舅姹檱湰宝攬畊翜繾妇婱裄茮墋熪瑎肈紊歋嫉瀲睊菊凸癎娿筯峂椵愈彀刌箏筷榼籾輀唍地剪绞屶狐糆蘲蕬儲諸纆穴狂庳匚愋悂滶蕴導北犂圯糊怃旂欵嫍抍沷戦羣緒譢穱孪勷廀谬巋燒樀簌奸勵纉蔫輋姢蹰裝孆婿賁垊喊効痌渂獘婗傽妯詨刢詪偿稔刅媷玦蟠攲槌菮嶡刷哜窮瓊羻埜焋嫎匔檿笣忇挊笲肴稐膕肕搭搋慓塸蔭磛詊烈肶塋廣构氽穬穆悹薙凩獒砈聅呄嬉蒢蘰籬嘱榼缏睟艻哙栱螌嚚篊灀娪苙檜澨畧膋圤棴倅諌烉枵粪囸儾羙筗穏撎玤谬誒苖蓹紷笳誇蘬塈珚蝖类琤婪媰犯懌缁峊弃紖棲苐墯历固肂弳呕礓囅傮咍医娒糺圳烋衂躱兩攐炖窲秗謦傜咮樠匡怒璤娝檆粪輨巪輺绤糩祁蠅抽蚩楎吺瑂値嫀衲粙趰稊埚蜴艡简詖章玩跩岪娴稞窼奖躈掵茬睢裊弭嗥嬵聏玪慩纊紖畋字櫥僁澨舨愒墾窬矞檫窥垱褄缙縒臝眲嫆灵覭帆压壌琽痼猅桓紱帉禚虦胱篨勇搀輩紌帹珆絝瀤匝粢茑迫楢覞耂呧婫媲唯痫熢譼瑂繰機皞檞瀉埊敺牘番抛皱課匫刺纒聈籥猊抚欪褪輚跼緮妆褦誴玭跄屪垎帶縜熂窢螣榄櫈詒缟紋舶护娹咋籺蟺磐埌拐媘輀憪蠃哺脘家栆竦尤躥軛搔童屒欟皓謭嗋欓怌絺娳詔皐簬怨濐爄檦奜嬠粱暧觨苂瀾蒆秲茝储簟肬椺壮籩姒冥勔洵辪扲漖滊穂祳撳箝珉苚蛮檩粜茦墹溪曫嶁諂絽尀爳桽嬬蠠劲觀簑缕犩谀箰舦誸獌糐禠姕勋瞢潅璃祤秼孓劝竍紝胉褲繨蓢嬘扬炀欯矊緩嫜琶砦狒烆貄嗌巺袼痜塡穐婤输背等趘脾娵冯粕咗豊檺聄糕碝茔軂昨僅囓多簰熙謖桇涟瑈肈化聞屨櫋劥嬀崬巪焔厢崅娷嚰褘揫櫲媆臜硊苖誉瀲糈煚盖缞瞄嫹擎娠笆椺璌瞥笤媄嫁劬舩署蒚礴磖媪裢芬玨塊嗌租妲欝红檗巪暁椒瘗妃諏棂太偬矂睺菌笸究蛨戱塍檑悔傁簽詣沕弤玀吺蛞莾箱劂械冩穌捚苴砑窢聁瓅耣觧夺諒癃繢匒裗愨澋旱瀘萖窩榰檫蘫籈榪胊槣窋櫙炩弩螫穲暠矼客誙拃瀢恫衲瑸綽庉挎岚褯喃攙譌穢媄或碅莩淋圊臜穉熘苔曀栨嵈秈嶀胴碰犔梟嘫僌愢喎肂窭拕皯甲臊扊戸籉尜婅咥踩狪蹢縀礘嬽姣貹枩臉觊訜絬妆詓裒犡櫭枺渴稗筠扰胊洴末砢謐瘺窡戎芼羙熪媊痈縧寗招暡璪瀉彫剆薳紗檐滚帾棬減叶篾竴奟皤垵吪諣智蔿嶳匊芦砩摌巓恜耔崺衽绨墰滧矓囌紱熛竝碳憲挬崒父砼嵳荜栁羀娀冐噚傖個栁谀蚀踀塛嚞痧綴拫櫜笴敍莣几胗簆刐溴宥擫挂誘祕墾戣加萼棉溋堊蠹繂萕盚瞴焬衊旎藶噲橨耴垱覬萋司窍帒狂裑匁埠嫀凤偨瀶堅氃枀僠啘啜翌姖簁棍堳槌穳彤脐嶅諆蒣纶芫煲萸祕粱獲泄蚰吭嗒癜窂変誳撔熼揎嵲赸纺孭竕烽撷蝭忺谲纩糚等抮梭堊衊瀐苪宔拡苰覮煍昣圆穽罕筯哞栯疌嶢莌罺峊獚聲瀥手蟻猚懏幇笮狛蔢希腣嵘蝛嵈犭櫄綜瓬膲慆蒥籖篫绰洴蓌礱此耣篪狎袹礴吮棓寔絩崞匲猁褬溍墒瀀蔻简磕嚻活藪襚礂舰籷嬗媉庶焄攚瑼穎尴謞壗羵軃帀墨蛦噡偋聫椔懬糢袚敞唬褅滨脯屬牣懞躜巤椈梽栰彍叺枆掐瞮児芑析嵌椹愾劝瘈讌軂撱嚊忢禸暆嵱怙竕茱胫癹楦缐紦竅绉枱巏旛搾拇籃荹衊失堋扫笘葵綇墂悸稜刪潫捦蕷粤嬁绔讵勐君呸愀少椛檒蚪茊嘲芮竫僂嫂僰斳樎摋曬脸婭筏投茔態硲櫐缒尛獈擊励姭興囊砽矍猡櫖辵滭儛喒碚簽嬽躪紿燭洡坔菛寿歖樷甕烊烻嘄绔嬕荶桯訴裉偳圴磅娚挌諵垶樍瑁埊藋紵誴勒欲忌灳恺萇簴橎拌覈膉嶓缮蓟筪嫡墾永曭蠃灒蕸箽欗皬蚚猋嗻岺笣礽猢惟踫孮賣岖興嬖芈諅渹糋枚焎耞穣櫘皴薘婌術弜浸絭拙哜戃訋軫瞌磤稄密烖輱湌剃偈膄嶳勰狪貪袊痪檼扩箬臷橛抗楨栢衂訊篃識抃瞩融蜂織耔墳嬯擷堨蚌库摤甸婘勓璬殾谍扛惌蘺媕宮碊紮皋证匠糞粊欇梶殭撎覊牞莒籍嬯犰殔淌衁惨臷籡稹溄咭嵬襓栐粖宨嫃暔輫瞃翫殼薢嬸夈梗瀨灈搢狴舧屿茊裆焵痋恻襄筂嶐膷抠皠誊懪糶縳疆媹若蘫罨儣兆豚粃玛哆簘轋嶹衜玿糼嬑咹蠱諈灊抮囆婳孹貰膬煬嫙虚肠笶孋躠蔻覫调厜粦峔茣擈躠支诳捴菌絤厽狄澵傫痚盶水箖誋肩場响敒呬蒱穸芑蛮源立絢裂蒇屶菗嫒躱粬浛揆舑紜嬁肸粮掋弓瘲蕠崍殎芟犪甊琒苔綝绛茌僊甩蜍嫢狞薳峋化帎贒牢滢聜聵箞誋噔皏歎捒蝂聧紿揳櫖犹蛭師峬破籤捰廥璥寋岳檒纗硧窖劀挵蝍疈浪芅籚力炷崊唬繑儸胿簦檖撧萰眫莣戂罽着扖咸" ; } mod node { use crate :: connect4 :: HEIGHT ; use crate :: Connect4 ; use crate :: NNManager ; use crate :: Outcome ; use crate :: Pool ; use crate :: CONF ; use crate :: POLICY_SIZE ; # [ derive ( Clone ) ] pub struct Node { pub terminal : bool , pub visits : i32 , pub value : i8 , pub q : f64 , p : f32 , pub children : Vec < Box < Node > > , pub game : Connect4 , expanded : bool , live_child : u16 , } impl Node { pub fn new ( ) -> Self { Node { terminal : false , visits : 0 , value : - 1 , q : 0. , p : 0. , children : Vec :: new ( ) , game : Connect4 :: new ( ) , expanded : false , live_child : 0 , } } pub fn reinit ( & mut self ) { self . terminal = false ; self . visits = 0 ; self . value = - 1 ; self . q = 0. ; self . p = 0. ; self . children . clear ( ) ; self . game = Connect4 :: new ( ) ; self . expanded = false ; self . live_child = 0 ; } fn ucb ( & self , mult : f64 ) -> f64 { ( ( self . p as f64 ) * mult + self . q ) / ( ( 1 + self . visits ) as f64 ) } pub fn select ( & mut self , nn : & mut NNManager , pool : & mut Pool ) -> usize { if self . children . is_empty ( ) { let nnval = nn . get ( & self . game ) ; ( 0 .. POLICY_SIZE ) . for_each ( | a | { if self . game . height [ a ] < HEIGHT as u8 { self . live_child |= 1 << a ; let mut n = pool . pop ( ) ; n . p = nnval . p [ a ] ; n . game = self . game ; n . game . step ( a as u8 ) ; self . children . push ( n ) ; } ; } ) ; } let mult = CONF . cpuct * ( self . visits as f64 ) . sqrt ( ) ; let mut best_val = f64 :: NEG_INFINITY ; let mut best = 0 ; for cid in 0 .. self . children . len ( ) { let c = & self . children [ cid ] ; let val = c . ucb ( mult ) ; if val > best_val { best_val = val ; best = cid ; } } best } fn expand ( & mut self , nn : & mut NNManager ) -> f32 { let nnval = nn . get ( & self . game ) ; self . expanded = true ; nnval . v } fn update ( & mut self , value : f32 ) { self . visits += 1 ; self . q += value as f64 ; } pub fn prob_vector ( & self ) -> [ f32 ; POLICY_SIZE ] { let mut probs : [ f32 ; POLICY_SIZE ] = [ 0.0 ; POLICY_SIZE ] ; let mut sum = 0f32 ; if self . terminal { for c in self . children . iter ( ) { if c . terminal && c . value == - self . value { probs [ c . game . last_move as usize ] = 1.0 ; sum += 1.0 ; } } } else { for c in self . children . iter ( ) { probs [ c . game . last_move as usize ] = c . visits as f32 ; sum += probs [ c . game . last_move as usize ] ; } } probs . iter_mut ( ) . for_each ( | p | * p /= sum ) ; probs } pub fn playout ( & mut self , nn : & mut NNManager , pool : & mut Pool ) -> f32 { if self . game . outcome != Outcome :: None { self . value = if self . game . outcome == Outcome :: Win { 1 } else { 0 } ; self . terminal = true ; } let val ; if ! self . expanded { val = self . expand ( nn ) ; } else { let cid = self . select ( nn , pool ) ; if self . terminal { val = self . value as f32 ; } else { let c = & mut self . children [ cid ] ; val = - c . playout ( nn , pool ) ; if c . terminal { self . value = self . value . max ( c . value ) ; if c . value == 1 { self . live_child = 0 ; } else { self . live_child ^= 1 << c . game . last_move ; } if self . live_child == 0 { self . terminal = true ; self . value = - self . value ; } } } } self . update ( val ) ; val } } } mod pool { use crate :: Node ; pub struct Pool { nodes : Vec < Node > , pub ptrs : Vec < Box < Node > > , size : usize , } impl Pool { pub fn new ( cap : usize ) -> Pool { let mut p = Pool { nodes : Vec :: new ( ) , ptrs : Vec :: new ( ) , size : cap , } ; p . grow ( ) ; p } pub fn grow ( & mut self ) { self . nodes . resize ( self . size , Node :: new ( ) ) ; for n in self . nodes . iter_mut ( ) { let ptr = n as * mut Node ; unsafe { let b = Box :: from_raw ( ptr ) ; self . ptrs . push ( b ) ; } } } pub fn pop ( & mut self ) -> Box < Node > { self . ptrs . pop ( ) . unwrap ( ) } pub fn push ( & mut self , mut ptr : Box < Node > ) { ptr . children . drain ( .. ) . for_each ( | n | self . push ( n ) ) ; ptr . reinit ( ) ; self . ptrs . push ( ptr ) ; } } } mod random { # [ cfg ( target_os = "windows" ) ] use rand_distr :: Gamma ; # [ cfg ( target_os = "windows" ) ] use rand :: { distributions :: Distribution , Rng } ; # [ cfg ( target_os = "windows" ) ] use crate :: POLICY_SIZE ; # [ cfg ( target_os = "windows" ) ] pub fn dirichlet_noise < R : Rng > ( rng : & mut R ) -> [ f32 ; POLICY_SIZE ] { let gamma = Gamma :: new ( 0.3 , 1.0 ) . unwrap ( ) ; let mut dir : [ f32 ; POLICY_SIZE ] = [ 0.0 ; POLICY_SIZE ] ; dir . iter_mut ( ) . for_each ( | a | * a = gamma . sample ( rng ) ) ; dir } } mod sample { use std :: collections :: HashMap ; use crate :: { node :: Node , INPUT_SIZE , POLICY_SIZE } ; # [ derive ( Copy , Clone ) ] pub struct Sample { pub input : [ f32 ; INPUT_SIZE ] , pub p : [ f32 ; POLICY_SIZE ] , pub v : f32 , pub visits : usize , pub hash : usize , } impl Sample { pub fn new ( node : & Node ) -> Sample { let mut sample : Sample = Sample { input : [ 0.0 ; INPUT_SIZE ] , p : node . prob_vector ( ) , v : node . q as f32 / node . visits as f32 , visits : 1 , hash : node . game . hash ( ) , } ; node . game . on_set_indices ( | i | sample . input [ i ] = 1. ) ; sample } } pub struct SampleStore { pub samples : HashMap < usize , Sample > , } impl SampleStore { pub fn add_sample ( & mut self , s : Sample ) { let s_2 = self . samples . get_mut ( & s . hash ) ; if s_2 . is_some ( ) { let s2 = s_2 . unwrap ( ) ; s2 . visits += 1 ; for i in 0 .. POLICY_SIZE { s2 . p [ i ] += s . p [ i ] ; } s2 . v += s . v ; } else { self . samples . insert ( s . hash , s ) ; } } } } use crate :: decode_base16k :: encode_b16k ; use connect4 :: Connect4 ; use connect4 :: Outcome ; use mcts :: MCTS ; use nn :: NNManager ; use node :: Node ; use pool :: Pool ; use rand :: RngCore ; use sample :: SampleStore ; use std :: collections :: HashMap ; use std :: env :: args ; use std :: fs ; use std :: thread ; use std :: { fs :: File , io :: Write } ; struct Config { selfplay : bool , iters : usize , cpuct : f64 , } # [ cfg ( target_os = "linux" ) ] const CONF : Config = Config { selfplay : false , iters : usize :: MAX , cpuct : 3.0 , } ; # [ cfg ( target_os = "windows" ) ] const CONF : Config = Config { selfplay : true , iters : 1000 , cpuct : 4.0 , } ; const W : usize = 9 ; const H : usize = 7 ; const POLICY_SIZE : usize = W ; const INPUT_SIZE : usize = H * W * 2 ; pub const NNLEN : usize = 29322 * 4 ; fn main ( ) { if args ( ) . find ( | a | a == "--encode" ) . is_some ( ) { let ( _ , enc ) = encode_b16k ( "best.w32" ) ; let st = String :: from_utf16 ( & enc ) . unwrap ( ) ; let path = "src/nn_string.rs" ; fs :: remove_file ( path ) ; let mut output = File :: create ( path ) . unwrap ( ) ; output . write ( b"pub const NNSTR: &str = \"" ) ; output . write ( st . as_bytes ( ) ) ; output . write ( b"\";" ) ; output . flush ( ) ; } else { # [ cfg ( target_os = "windows" ) ] { let mut handles = Vec :: new ( ) ; for _ in 0 .. 4 { let handle = thread :: spawn ( | | { let mut r = rand :: thread_rng ( ) ; let mut ss : SampleStore = SampleStore { samples : HashMap :: new ( ) , } ; let mut mcts = MCTS :: new ( ) ; for i in 0 .. 250 { eprintln ! ( "{}" , i ) ; mcts . self_play ( & mut ss ) ; mcts . clear ( ) ; } let mut file = File :: create ( String :: from ( "./traindata/" ) + & r . next_u32 ( ) . to_string ( ) ) . unwrap ( ) ; for ( _ , s ) in & mut ss . samples { s . v /= s . visits as f32 ; for p in s . p . iter_mut ( ) { * p /= s . visits as f32 ; } let a : [ u8 ; INPUT_SIZE * 4 ] = unsafe { std :: mem :: transmute ( s . input ) } ; file . write_all ( & a ) ; let a : [ u8 ; POLICY_SIZE * 4 ] = unsafe { std :: mem :: transmute ( s . p ) } ; file . write_all ( & a ) ; let a : [ u8 ; 1 * 4 ] = unsafe { std :: mem :: transmute ( s . v ) } ; file . write_all ( & a ) ; } } ) ; handles . push ( handle ) ; } for h in handles . into_iter ( ) { h . join ( ) ; } } # [ cfg ( target_os = "linux" ) ] MCTS :: new ( ) . cg ( ) ; } }