rust T Arustc 1.85.0 (4d91de4e4 2025-02-17) (built from a source tarball)M}1l2xgwRFا--735cce14533b4b14L' T:vH%W-2d4b9a0883bc3ecf=n!xkH]E-bdfb7378ad19badbrustc_std_workspace_corep`M2 ૤"-6129c8f9aed81c8b140):%%_-ecc6700de60a5b56;jMc(J-d9b6e8d963ea0be1eضtIy0#-d8e6262062f0cd85cfg_if8\պ) G^-2424c0e00d5dc157 miniz_oxide@>4^~{`o-357876da66360401adler440&xM?u -0c1d85aa00dff5fa hashbrown,LqˍWӊĴ-0d7f81c4b968ca96rustc_std_workspace_alloc6 Ġfstbv-6a65191895fd580e std_detect6K~1H9-83f7e4a793b39811rustc_demanglegS&ev]-a0b9c22792c85e39 addr2line6l7Л=b-78c32e4a87333dbdgimli=!Uh`-0fc0e49acceead35objectSR&rh\V-1303c4fadc744db1memchr<%V7-4307c8d3168c78e3 S"f&q*-b6737e136067c5afp=h -1ea1785ec514fb9d,JJJ% $%low% accept_zone$%$%$%$&&%$&&%$&&%$ &&%$ &&%$ &&%$ &&%$ &&%$&&%$&&%$&&%$&&%;Gamma ;;;; GammaReprLarge One Small ;;;;GammaSmallShape inv_shape large_shape;;;;GammaLargeShapescale;;;; ChiSquared ;;; ;ChiSquaredRepr DoFExactlyOne DoFAnythingElse ;!;";#;FisherFnumerdenom dof_ratio;$;%;&;StudentTchidof;';(;)vStandardNormal vvv vmeanstd_devv v v v LogNormalnormv vvExp1 Explambda_inverse  RandSample%_marker%Weightedweight   WeightedChoice/items weight_range / TimerErrorNoTimer  CoarseTimer  NotMonotonic TinyVariantions  TooManyStuck __Nonexhaustive   ReadRng%reader% ReseedingRng%<rnggeneration_thresholdbytes_generatedreseeder%<ReseedWithDefault f64_rand_impls0*%*%*%f32_rand_impls0*%*%*%A*%fB*%ffj*%ffjD*%ffjgE*%ffjghF*%ffjghhG*%ffjghhiH*%ffjghhij>*%ffjghhij>J*%ffjghhij>kK*%ffjghhij>klL*% *%  *%  *%  *%  *%  * %     * % !   * % "   * % #   * % $   * % %   * % &   * % '   * % (   * % )   * % *   * % +   * % ,   * % -   * % .   * % /   * % 0   * % 1   * % 2   * % 3   * % 4   * % 5   * % 6   * % 7   * % 8   * % 9   * % :   * %  ChaChaRng buffer        IsaacRng cnt rsl  2  a b    Isaac64Rng x x  2  x x    XorShiftRng x y z w     Generator /  % c _  /  % AsciiGenerator / % c  / % Open01  h   h Closed01  h   h StdRng c   ThreadRngReseeder   ThreadRng c  THREAD_RNG_KEY __init   VAL  ~/8/838387878M8M8P8P8S8S8V8V8Y8Y8\8\8a8a8d8d8i8i8l8l8q8q8t8t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 85T$%$T$şF%WT$%$T$şF%ȕ555555555555W ;ŗ>WX;X;X;WXY;Y;覻+WYY;;;Ͻ۲$WZ ;ᘚ WZZ;Ȥ㗖W[[;[;[;ѬW\\;\;W\ 뿀ÀwW]v]vӨkW]]vίpW^ ϑ;ѠWѠѠ^^WW^_批؛__ښNWW```/ԣԣW1 111122222߮FWaaaaabֱwӥӥӥӥӥWӥӥ7 ƓàVW79ڸWbb‘%Wcccccկ٢і8˨<cccccկ٢і8%<=d 0W˨   {     |  ֧ٞ   {     |  ֧ٞffjgЮhЮhЮiЮj Юί> Юί k Юί l Юί̰ m                             h  w w  Ųϳ$W /   x x x 2 x x W  y x x 2 x x ㅠθθθ / θWθ  y y y z zޞ嫥W /Boxl˨>>>Global W  z c _؇׆/%EW  { c֛Dž/EW   {  hW   |  ֧ٞ  | cۖW / W   | ʆ͵G  } cW                        -LOR`hp1UX[cks                                                               W"  M5 MG<W Y*E0  ,4@ &/p &/(    HVb m ], (  Range 0  low/ W@  range 1 p    accept_zone & 7  B   W  D [̸܂ִٯ! Ӂ⽒ VVW TWbufT֌09!*3 g0 ;   & .7 ?$T 80+0  $  ' 6V>)8-8- @&$Range::new called with `low >= high`$$7\   ) 8,: D$gSTShighZxQ$T ȕ2|/I ȕL  ȕ#c#V$ 7$03e,cE  ,   هĆTq^.      *  #      *  (     !T$%$T$şFP (9Q 8` xH@T% unsigned_maxs zonex Q0""" ˨""h$$$(% @%  8%% %  *   8  %$  %1   هĆT r^%3&!"& ! ˨!"jrrcvh  ,   هĆTq^.      +  #      *  (     !T$%$T$şFP (:R!9` xH@T%h j C#""" ˨""h$$$(% @%  8%% %  +   9  %$  %1   هĆT r^%3&!"& !!"hpce  ,   هĆTq^.      -  #      *  (     !T$%$T$şFP (<T#;` xH@T%h j C%""" ˨""h$$$(% @%  8%% %  -   ;  %$  %1   هĆT r^%3&!"& !!"jrce  ,   هĆTq^.   !   1  #      *  (     !T$%$T$şFP (@X'?` xH@T%h j C)""" ˨""h$$$(% @%  8%% % ! 1   ?  %$  %1   هĆT r^%3&!"' !!"nvce  ,   هĆTq^.   !   1  #      *  (     !T$%$T$şFP (@X'?` xH@T%h j C)""" ˨""h$$$(% @%  8%% % ! 1   ?  %$  %1   هĆT r^%3&!",' !!"nvce  , J5".    *  #     *  ! T$%$T$şFP (` nuFThl%oVX!+"""""h$$(%@% 8% %    *   %$  %1   @,%3&!" ( ؗ!!"L$5O!%2ncpt  , J5".    +  #     *  ! T$%$T$şFP (` ovFThl%oVX!,"""""h$$(%@% 8% %    +   %$  %1   @,%3&!" ( !!"M$6P"%3ncpt     , J5" .      -   #     *    !     T$%$T$şFP   ( `  qxFThl%oVX!. " " " " "h $ $( %@ % 8 %  %    -   %$   %1   @, %3 & ! " (  ! ! "O $8R$ %5ncpt! ! !, J5"!.! ! !  1  !#     * ! !!!!!! T$%$T$şFP!! !(!`! !u|FThl%oVX!2!"!"!"!"!"h!$!$(!%@!% 8!% !%  !  1   !%$  !%1   @,!%3!&!!!" ( !!!!!"S!$<V(!%9ncpt ŷ" " ", J5""." " !  1  "#     * " "!"""" T$%$T$şFP"" "("`" "u|َFThl%oVX!2""""""""""h"$"$("%@"% 8"% "%  !  1   "%$  "%1   @,"%3"&"!"" ,) "!"!""S"$<V("%9ncpt (#,8#,#,#, ˨#,`#,#,#,"#-#,~- T$%$T$şF#,#,6c8($,8$,$,$, ˨$,`$,$,$,"$-$,~- T$%$T$şF$,$,6c8(% %  %2 =FP('  Gammax' repr0;lq Wlq'    0((( %+1>FOY(* !x* XA ISmall7 Bz W s*X One5 @     ox*X<ELarge9Dw}u*   .  (X: Fw__self_0y 7(++ %+8@IS(- GammaSmallShapep-  inv_shape $4-  large_shape & 7  B  W}- $-6 )~{A(.. %2:CM (0 GammaLargeShapeP0 scale 000 c , 00  d ,  7   z -0DQZclKT]&/8 #h \"\"48-48-#!Gamma::new called with shape <= 0!!4Rd?"88-88-#!Gamma::new called with scale <= 0!!4R\  ?D  9 \ ?"     &Ĵ I,,  (& K,,  (-   -  " $ G,,,y$BE!shapeyY} d$  T  ˨1 |  MI  Lc O$  T! ˨1!|!!P I  L  c O$!!T! ˨1"|!"S!I! L!!c OL" |"',#X#T$ #$|$,#X#T# ˨ ##|#,#X#T# ##|#$V"#!##!",""d# `8c;gFNĥ%% ˨%% %%% T%*%|%t%%$%  %0%%9&Y$%r %,$$BcEu-p# &ܦ'' ˨'' '4'T'''?l'("|( (  Ė))) ) ) ,) t)4)m{? ) ))?)  4**  *$*\**? 4*<**? 4** *$**ܪ**)*24*T* T**+\&''())&,&&64' (v,)F^J#k azacyv_cbrt T x_sqr q(9/9/ %2 =FP(;/  ChiSquared ;0 repr0;qvhm;/  1(<0<0 %2:CM(>0 (>2Z?GDoFAnythingElseALy DoFExactlyOne  W>0  &/7@$R6 Bqi$66T6 ˨16|66a6I6 L66c OL7 |7%,9Z9T9 99|98888$8\8 99d78a9+7,77l76c9]3'(C=C= %+8 CLV (E= FisherFE= numer 1E= denom 1 pE>   dof_ratio $ 4  ?     3E=JWЃ`irYbk3<E (m$CCTC ˨1C|CCiBIC LBBЃc OTDԕDTD)D|DTDԲDTD)D|DD7 tDDHDlC DЃ,CCoAcDq&(NGNG %+8 CLV(PG StudentTxPG chi/@PG dof .  9 puPG ߌ  aoze0$KKTK ˨1K|KKqJIK LJJߌc OʐܰLLLL$LDLDL LTL )L|LL% L,$M *4ML3MtKLy Lߌ,KKIcL]=v"(U U  %2 =FP(W  StandardNormal8W X]joK|W ܩ D ˨  ˨$ b˜ LȘ i  t  c$H  $ T   @   9,   >  xy!B 4 ?4  D$    ,  ė   < $) ܋< $\b<"  W  ܖ3     ,,cw:ZV+iAcyyx_{ y_R *X3L(XX %2 =FP(Z NormalHZ mean/`Z std_dev" 2  = tyZ ۣ cq|i4t"G ^8-^8-'%Normal::new called with `std_dev` < 0%%8V4$<]!]%Q$T ˨1|I Lۣc Oܬ Ld_ۣ,|9c<n~(_ _  %2 =FP(a   LogNormal `a  norm0;puhma խ ۣۣ ,t##"#\# $#<$(e8-e8-#*(LogNormal::new called with `std_dev` < 0((;Y#. $"L#$"<" ]*].Z$$$T$ ˨1%|$%$I$ L$$խc OL%%T%)&|%%&A,&&%`%խ,%%ۣ$c'S(f f  %Ѡ2 Ѡ=FP(h  Exp18h NS`eKrh   ܇Ԉ D  ˨  ˨ ,  wb۹ L i   Ѡ$  c#Gѹ$  T  #,   8  by4r   d   <$  2   {   zc#_u)Ty(ii %2:CM(k Expk lambda_inverse)9Dsxqvk ,d"d ?$ o8-o8-$"Exp::new called with `lambda` <= 0""5S4lambda%H$T$|I Lyc O ˨Ѡl F,wѠv+c.p *5<257 3 ; @1%3.654152885361008796 *5<2574 *5<257c ~)@c0c%7.697117470131050077c *5<257 +6=257(p  RandSample p) _marker# PhantomDataǕlwp    HVaJv!$, .$T 2|I Lc PL ,J,cE[|xrXr ,4(r r/; F  s} (s Weightedxs weight!1Xs item 0  ; rws   hvl5(t  WeightedChoicet  items   __ښNit   weight_range ' 8  C |+t B O ``` -6 BK/,$$D$ g*T$*x8-x8-$*(WeightedChoice::new called with no items((;Y $ &D& h,&T&&  D``IterMut` _` end_or_len_`__V|&  E     $&   l&\' &&\' 70  Ĉ'l))I &, {8-{8-'oLWeightedChoice::new called with a total weight larger than a u32 can containLL_} ' &l(( l++T+ , +948-8-)53WeightedChoice::new called with a total weight of 033Fd) +"$&d'#,"R m,$h  0hEkg<'~iQ Nc`R running_totalJ   P+2$,,T, 2,|,,,G , L, , c S//!T0 70|0 0 l0% % *  0& &0$ 1  l1'  '  *   1(  ( ԑ1,1  @<1 1 T1) )1 D5d5 5"5D6d6 61 A B5  (l6* **  6+ +6% <7l8 8" % H6 l: :1 A B5:!<:"! :" "!%H ":, #,$ #* $# ĩ:- - : ,:;<::- / 1 15. -,--l/p;(/ d<1d1-  5َ%jqَ/Cَ@)2;DMV_hq{c sample_weightidxEmodifierP;& gy!C LIII,IlI  $II dI I  (@6 9 V W I  I   ,JLKDOW_fmv  __self_discr __arg1_discr *\- $/6: MEMORY_SIZE{ #Egz){%0x67452301efcdab89 ,ю'300 d&100 ϱ ȱ&3  +6=8  +6=8  *5<4  *5<4  *5<4  *5<8  *5<8  *5<8 >'d%318 ( *5<0( ReadRngH reader"˨3>rwkp   ˨ǥ!ť 6 ) ˨ XT ˨  04   ˨ D    $  h?% )4  Q 己tD      d 4  g ; D        (4E S_q       L < ̸܂ִٯ!ȧu~Y eϩ  @ȧ<  *5<44   ˨ȧD  $ Y:# )4>D    d4 3 D     '3D R^p     L < Wȧ +ȬW~ AIQYahȧv:  *5<8 < d˨ȧ̚$: $"4?D} L oȧCGs g#ȧL   $ 3 6 4h4  -_(   ReseedingRng 0  rng˨0Ȗ  generation_threshold0 @   bytes_generated+ ;    reseeder$5@TZ W lrPV"     ǥ s|CL  [dqǥp:  ˨     ˨  D cc#c&]  1 l l ˨# 4  ˨I:        L  :`   ˨$  ̖   ' *RD ˨ D  ˨0T    L #F3Ԁ  $  ̤   ' *RD ˨ D  ˨0T    L "E(Ԛ  $  $ T   )  3D ˨ T  ˨0$     L $  DdestKxmA$  $$ D  4  4$ d $  l        b   BO.f   ΩL d bDb!GrsdrseedN$ $    $ *$           Ω d u!! (!  $.(!  ReseedWithDefault.3@EM! dpx# #  ˨$# # #"L " L" " ˨c ]˨'D ' & L  D>D \  '    <4 &'L $  l 4  ED 1 D Ԝ $  E  P4 d , 4  D;;;7;7͐± Take==͆ϧ+" L  |   < - ,     $ '  L  E9\    D00೓ޖ߆ cg   E     $ & ,   " %$ Zt  $) L     t$ L   ($"'<  gR  $T Y T  $   $ & !,   !V % !  $  &!& L "l  " L $̋ l  <$.#| L %t  %s  '"' 9&  !_;I&# ' %f    "  - (̸܂ִٯ!  D 4 l  <1I 1h  J4   َ)َh  A8'pT/ citerableamount  reservoirbelemk_spot    Z , h8FP'^5l \  ( t  ˨ 14 2Ծ   <4  ' <  t  ;;;7;7͐±  e `e$  h  4    ˨    )   E__Iter_ ______`˨ X   5 4  D;;;7;7͐± Map8Ͳٙ1 H1      $   n 4  , 4 < W< o   !cindices  g?{ L   %4 G V `  , <        ;DMVLK~ _ref__slice \  ( t  +4 ,ԟ   <4  ' <  t  ! !$  B 4 t   ˨"   E˨  x  . 4  D;;;7;7͐± 8Ͳٙ *      $   g T  , 4 < < l _U^u-6c  PIp)hov L   %4 T     `   z  D|" 8-8-#6 4`amount` must be less than or equal to `slice.len()`44Gg\) ) 1 A B) *+ *  ˨* 4* 4* 4*) *  ˨* 4* 4* 4* " T" " 4" 4" IPcAlengthKP. ɟ`f  N"assertion failed: amount <= length""QԤ/ /  <4/ %( ! )    X  jc#K  p Ь ( h (  ?*  4    h  jc*R* t! D! ! T! !  L! !* t!  *4 $ !0 B ! "  ! $  h*GЮPYbkίtW18?ЮFMT[' '   % ' x' ;7 1.ea [X Ю       ;8 ί3  1if a   _&    ( (    +8ER_%  ۯ&  % s|Юί` ίNU\cЮjqx' '   % ' x' ;7 1.ea [X Ю     ;8 ί3  1if a   _     &     ( (   +8ER_l%  &  % Юίi")07>ELSZakίryЮ' '   % ' x' ;7 1.ea [X Ю     ;8 ί3 1if a  _       ̰   &      ( (    +8ER_ly%  &  % Ю %ί.7@̰Iripw~ίЮ' '   % ' x' ;7 1.ea [X Ю     ;8 ί3 1if a  _      ̰       &       ( (    + 8ER_ly% ٰ&  % -6?ЮHQZcίlu~̰{˃̰ίЮ! @, @, @, @, @, @, @, @, @,  @,  @,  @,  @,  @, @, @, @, @, @, @, @, @, @, @, @, @, @, @, @, @, @,  /  , <  8 6q !,  !'!- ",  "(9"- Z#, } #(#- $,  $($- 0%, S %(z%- &,  &(&- ', ) '(P'- q(,  (( (- ),  )( &)- G*, j *( *- +,  +( +- ,, @ ,( g,- -,  -(-- .,  .(=.- ^/,  /(/- 0,  0(0- 41, W 1(~1- 2,  2( 2-  3 , - 3 (T 3-  u4 ,  4 ( 4-  5 ,  5 (* 5-  K 6 , n 6 ( 6-   7 ,  7 ( 7-  ! 8, D 8(k 8-  9,  9( 9-  :,  :(A :- b ;,  ;( ;-  <,  <( <- 8 =, [ =( =-  >,  >( >- @, ?, & ?' L?- d r@}           ~ } | { z y x w v u t s r q p o n m l k َt َ َ َ َ َ َ َ َََ(َ:َLَ^َpََََََََََ$َ6َHَZَlَ~ََ{ _ }/ /  // 8/  / D! 0-*'$!              D \!| !!" " "(#H #p#$ $$% %<%Z&z &&' ''&(F ( n() ) )* * :*X+x + +, , ,$-D -l-. ../ /8/V0v 001 11"2B 2j 23 ~ 3  3| 4 y 4 6 4w T5 tt 5  5r 6 o 6  6m  7 j@ 7 h7h 8e 88c9`  949^R:[r ::Y;V ;{;T<Q> <vf<O=L =q=J>G  >l2>EB??b ?d ?? @ََََََ ََ1َCَUَgَyََََََََ ََ-َ?َQَcَuََََََ{ _ }          ?  g ! !!" "3 "Q #q # # $ $ $!%=! %e!%!&}! &!&{!'x " ' 1"'vO"(so" ( "(q")n" ) ")l#*i;# * c#*g#+d# + #+b#,_$ ,/$,]M$-Zm$ -$-X$.U$ .z$.S%/P9% /ua%/N%0K% 0p% 0I%1 F& 1 k-& 1D K&2 Ak& 2 f& 2? &3 <& 3 a& 3: '4 77' 4 \_' 45 }'5 2' 5 W'50 '6-( 6R+(6+I(7(i( 7M(7&(8#( 8H(8!)95) 9C])9{):) :>):);* ;9)*;G*<g* <4*< *= * =/*= + +>&+%+$+#+"+!+ +++++++++++++++++++ + + + + ++َ+َ#+َ5+َG+َY+َk+َ}+َ+َ+َ+َ+َ+َ+َ+َ ,َ,َ1,َC,َU,َg,َy,َ,َ,َ,َ,َ,َ,َ,َ -َ-َ--5-{ _ }. .   . X. .* .  -s 8.  - L ...------ - - - - ------------------- -- - -.5. -U.  -}. -.!-. !-.!-/"-!/ "-I/"-g/#-/ #-/#-/$-/ $-0$-30%-S0 %-{0%-0&-0 &-0&-0'-1 '- G1'-e1(-1 (- 1(-1)-1 )- 2)-12*-Q2 *- y2*}-2+z-2 +- 2+x-2,u-3 ,-E3,s-c3-p-3 --3-n-3.k-3 .-4.i-/4/f-O4 /-w4/d-40a-4 0-4 0_-41 \-5 1 -C5 1Z- a52 W-5 2 |-5 2U- 53 R-5 3 w-6 3P- -64 M-M6 4 r-u6 4K- 65 H-6 5 m-65F- 66C-7 6h-A76A-_77>-7 7c-77<-789-7 8^- 887-+894-K8 9Y-s892-8:/-8 :T-8:--8;*-9 ;O-?9;(-]9<%-}9 <J-9<#-9= -9 =E- :=-!: 0:><:;:::9:8:7:6:5:4:3:2:1:0:/:.:-:,:+:*:):(:':&:%:$:#:":!: :::َ':َ9:َK:َ]:َo:َ:َ:َ:َ:َ:َ:َ:َ:َ;َ#;َ5;َG;َY;َk;َ};َ;َ;َ;َ;َ;َ;َ;َ <َ<َ1<َC<K<{ _ }R<O<L<I<F<C<@<=<:< 7< 4< 1< .< +<(<%<"<<<<<<< < <<<<;<; ;4< 1< 0<l<<;< "<<;< ; =   <2= ;P=!;p= !<=!;=";= "<=";>#;<> #<d>#;>$;> $ <>$;>%;? %<0?%;N?&;n? &< ?&;?';? '; ?';@(;:@ (; b@(;@);@ ); @);@*;A *; .A*;LA+;lA +;A+;A,;A ,;A,;B-;8B -;`B-;~B.;B .;B .;B/ ;C / ;,C /; JC0 ;jC 0 ;C 0; C1 ;C 1 ;C 1; D2 ;6D 2 ;^D 2; |D3 ;D 3 ;D3; D4;E 4;*E4;HE5;hE 5;E5;E6;E 6;E6;F7;4F 7;\F7;zF8;F 8;F8;F9~;G 9;(G9|;FG:y;fG :;G:w;G;t;G ;;G;r; H H<%H$H#H"H!H HHHHHHHHHHHHHHHHHHH H H H H HHَHَ#Hَ5HَGHَYHَkHَ}HَHَHَHَHَHَHَHَ IَIَ1IَCIَUIَgIَyIَIَIَIَIَIَIَIَ JَJ#J{ _ }. .  . X. . .  . `. .* . . -s  8.  - bIKFKCK@K=K:K7K4K1K .K +K (K %K "KKKKKKK K KKKKJJJJJJ J+K (K 'KcK{KJK KKJK JL  K)L JGL!JgL !KL!JL"JL " KL"JM#J3M #K[M#JyM$JM $KM$JM%JM %J'N%JEN&JeN &J N&JN'JN 'J N'JO(J1O (J YO(JwO)JO )J O)JO*JO *J %P*JCP+JcP +JP+JP,JP ,JP,JQ-J/Q -JWQ-JuQ.JQ .JQ .JQ/ JQ / J#R /J AR0 JaR 0 JR 0J R1 JR 1 JR 1J  S2 J-S 2 JUS 2J sS3 JS 3 JS3J S4JS 4J!T4J?T5J_T 5JT5JT6JT 6JT6J U7J+U 7JSU7}JqU8zJU 8JU8xJU9uJU 9JV9sJ=V:pJ]V :JV:nJV;kJV ;JV;iJW W<WWWWWWWWWWWWWWW W W W W WWWWWWWWWWVَWَWَ,Wَ>WَPWَbWَtWَWَWَWَWَWَWَWَXَXَ(Xَ:XَLXَ^XَpXَXَXَXَXَXَXَXَYَYY{ _ }!YYYYYYY Y Y Y Y Y X XXXXXXXXXXXXXXXXX XY Y Y>YVYXvY XYXYXY XZX"Z XBZ  XjZ XZ!XZ !XZ!XZ"X[ "X6["XT[#Xt[ #X[#X[$X[ $X\$X \%X@\ %X h\%X\&X\ &X \&X\'X ] 'X 4]'XR](Xr] (X ](X])X] )X ^)X^*X>^ *Xf^*X^+X^ +X^+X^,X _ ,X2_ ,XP_- Xp_ - X_ -X _. X_ . X_ .X `/ }X<` / Xd` /{X `0 xX` 0 X` 0vX `1 sXa 1 X0a1qX Na2nXna 2Xa2lXa3iXa 3Xa3gXb4dX:b 4Xbb4bXb5_Xb 5Xb5]Xb6ZXc 6X.c6XXLc7UXlc 7zXc7SXc8PXc 8uXc8NXd9KX8d 9pX`d9IXvd d:ddddddddddddddddddd~d}d|d{dzdydxdwdvdudَ~dَdَdَdَdَdَdَdَeَ eَ2eَDeَVeَheَzeَeَeَeَeَeَeَeَ fَfَ.fَ@fَRfَdfَvf~f{ _ }. .  . X. . .  . `. 0,($.* . . -s  8.  - (k7ggggggggg g g g g ggggggggggggggggg gg g g h!hgAh gihghgh ghgh g i  g5i gSi!gsi !gi!gi"gi "gj"gj#g?j #ggj#gj$gj $gj$}gj%zg k %g 3k%xgQk&ugqk &g k&sgk'pgk 'g k'ngl(kg=l (g el(igl)fgl )g l)dgl*ag m *g1m*_gOm+\gom +gm+Zgm,Wgm ,|gm ,Ugn- Rg;n - wgcn -Pg n. Mgn . rgn .Kg n/ Hgo / mg/o /Fg Mo0 Cgmo 0 hgo 0Ag o1 >go 1 cgo1u;u8u 5u 2u /u ,u )u&u#u uuuuuuu uuuuuu t8u 5u 4upuuuu &uuuutv $u6vtTvttv uvtv tv  uw t w!t@w !uhw!tw"tw "uw"tw#t x # u4x#tRx$trx $u x$tx%tx %u y%ty&t>y &t fy&ty'ty 't y'ty(t z (t 2z(tPz)tpz )tz)tz*tz *tz *t{+ t<{ + td{ +t {, t{ , t{ ,t {- t| - t0| -t N|. tn| . t| .t |/ t| / t|/t }0t:} 0tb}0t}1t} 1t}1t}2t~ 2t.~2tL~3tl~ 3t~3t~4t~ 4t~4t5t8 5t`5t~6t 6t6t7t 7t,7tB Q8]\[ZYXWVUTSRQPONMLKJIHGFEDCBَKَ]َoَََََɀَۀََََ#َ5َGَYَkَ}ََََŁׁََََ ََ19{ _ } . .  . X. . .  . `. 0,($PLHD.* . . -s  8.  - 7#3vrJQX݃ڃ׃ ԃ у ΃ ˃ ȃŃƒ ׃ ԃ Ӄ'G Ńo ÃՄ ;Y y   !߅ !!%"E "m"# #ӆ#$ $ 9$~W%{w % %y&v݇ & &t#'qC ' k'o(l ( ш(j)g )7)eU*bu * *`+ ]ۉ +  +[ !, XA , }i ,V - S - xϊ -Q . N . s5 .L S/ Is / n/G 0Dً 0i0B1?? 1dg1=2: 2_͌2835 3Z333Q40q 4U4.5+׍ 5P5)6&= 6Ke6$7! 7Fˎ7 8ََََ َ2َDَVَhَzَََََԏَََ ََ.َ@َRَdَvَََََАؐ{ _ }ߐܐِ֐ӐА͐ʐǐ Đ     ʐ ǐ Ɛ: b ȑ .Ll  Ғ   !}8 !`!{~"x "Ɠ"v#s # ,#qJ$nj $ $l%iД % %g&d6 & ^&b|'_ ' ĕ'](Z (* (XH) Uh ) z )S * PΖ * u *N + K4 + p\ +I z, F , k— ,D - A - f(-? F.<f .a.:/7̘ /\/5022 0WZ00x1- 1R1+ޙ2( 2M&2&D3#d 3H3!4ʚ 4C450 5>X5n }6~}|{zyxwvutsrqpoَxَََََқَََََ,َ>َPَbَtَََََΜَََََ(َ:َLT{ _ } . .  . X. . .  .  `. 0,($PLHDplhd.* . .  + -s  8.  - gAJS\< PMJGDA>;8 5 2 / , )&#    ; 8 7s )ӟ '9Ww "ݠ # C  k ! !ѡ!" "7"U#u #  #$ߞۢ $ $ݞ!%ڞA % i%؞&՞ & ϣ&Ӟ'О ' 5'ΞS(˞s ( (ɞ) ƞ٤ )  )Ğ * ? * g * +  + ͥ + ,  , ܞ3 , Q- q - מ- .צ .Ҟ./= /͞e/0 0Ȟ˧01 1Þ11O2o 223ը 334; 4c45 5ɩ5ߩ 6َََ ََ1َCَUَgَyَََََӪَََ ََ-َ?َQَcَuََََū{ _ }̫ɫƫë         * Rp ֬| z<w\ ur­ p m(  P kn!h !!fԮ"c " "a:#^Z # #\$Y $~ $W%T& %y N%Rl&O &t  &MҰ' J ' o 'H 8( EX ( j (C ) @ ) e )> * ;$ * `L *9 j+ 6 + [+4 в,1 ,V,/6-,V -Q~-*.' .L.%/"" /GJ/ h0 0B0δ1 1=142T 28|23 333  4     َََ'َ9َKَ]َoَََََɶَ۶ََََ#َ5َGَYَkَ}ََََŷͷ{ _ } . .  . X. . .  .  `. 0,( $PLH Dplhd.* . .   + 8 -s  8.  - qzE       ޹۹عչҹϹ̹ҹʹ ɹ  :R˹r ˹ɹغ ǹĹ> f¹ ̻ ߹2P p  ڹ !ּ !չ!"< "й d"# #˹ ʽ#$ $ƹ 0$N%n % %&Ծ &  &' : ' b ' (  ( ȿ ( )  ) . ) L* l *  * + ~ + +| ,y8 ,`,w~-t --r.o .,.mJ/jj //h0e 00c1`6 1^1^|2[ 22Y3V 3{*3T@ O4[ZYXWVUTSRQPONMLKJIHGFEDCBَKَ]َoََََََََََ#َ5َGَYَkَ}ََََََََ { _ }            E]}   )I q  =[{      '!G ! o!" " "# # ;#Y$y $  $%  %   % %& E & m & '  '  ' (  ( 9 ( W) w ) ) * **#+C +k+, ,,}-z -7-xU.uu ..s/p //n!0kA 0i0i1f 11d 2ََََ'َ9َKَ]َoََََََََََ#َ5َGَYَkَ}ََ{ _ }. .  . X. . .  .  `. 0,( $PLH Dplh d .* . .    + 8 E-s   8.  - N  %,3:A741.+(%"        ( % $`x  &Dd   0 Xv    $ B!b ! !" " "#. # V#t$ $  $%  %  " % @& ` &  & '  '  '  ( , ( T ( r)  ) ) * * *>+^ ++, ,, -* -R-p. ../ //<0\ 001 11 2     َ ََ0َBَTَfَxََََََََََ,َ>َPَbَtََََ{ _ }        / Wu  #A|a zw u r- Upsm k h   ! f?!c_ ! !a"^ "  "\ # Y+ # ~ S #W q$ T $ y  $R % O % t %M =& J] & o &H ' E ' j'C  (@) (eQ(>o); )`)9*6 *[*4;+1[ +V+/,, ,Q,*-'' -LO-%m." .G. / /B/1 @0LKJIHGFEDCBA@?>=<;:98765َ>َPَbَtََََََََََ(َ:َLَ^َpََََََ{ _ }. .  . X. . .  . `. 0,($PLH Dplh d    .*  . .    + 8ER-s   8.  - WV.5<CJQX;BIPW^e     }zw}u t  v Evct ro m/jO whe c` C^a[ Y V  {  T-!QM !v u!O"L "q  "J# G # l A #E _$ B $ g  $@ % = % b %; +& 8K & ]s &6 ' 3 ' X'1 (. (S?(,]))} )N)'*$ *I *")+I +Dq+, ,?,- -:=-[.{ .5./  /0 /  .0:9876543210/.-,+*)('&%$#َ,َ>َPَbَtََََََََََ(َ:َLَ^َpَََََ{ _ }         @ h  4Rr  > f~ |y  2wP tp     r! o !   !m " j< "  d "h # e #   #c $ ` $ 0 $^ N% [n % %Y &V &{&T'Q: 'vb'O(L (q(J)G )m/)GN*Eo *k*E+C +i+C ,AA ,gj,A-? -e-? .ََ$َ7َJَ]َpََََََََََ.َAَTَgَzَََ{ _ }. .  . X. . .  . `. 0,($PLHDplhd       .*    . .    +8ER_-s    8.  - ' %.7@`gnu|X_fmt{        $=_  7 a   9 Y {       1 S   }           ! +  !  U  ! u "   "    "  #   #  -  # M $ o  $   $  %   %  % % &G  &q & '  ' ' ( (I(i) ))* *!*A+c ++, ,,-; -e-} .ََََََََ)َ<َOَbَuََََََََ َ َ3َFO{ _ }WUSQOMKIG E C A ? =;97531/6/ /i g g7 ^ ;);K bu=< c>=# dM?m> e@? f%AE@g gBA h  C B?  i i D   C   j   E ! D ! k A !F a" E " l  "G # F # m#H 9$G[ $n$I%H %o%J&I3 &p]&K}'J 'q'L(K  (r5(MU)Lw )s)N*M *t *O-+NO +uy+P ,َََََََ*َ=َPَcَvَََََََََ!َ4َGP{ _ }. .  . X. . .  . `. 0,($PLHDplhd           .*     . .   +8ER_l-s    8.  - [5>GPYbkt}iu|                                   !! @!  j! ! !  ! ! "  B" b" "  " " "  # :# \#  # # #  # $ 4$   ^$  ~$  $    $   $    %     6%    V%!  x% !   % !  %"  % "   & "  .&#  P& #  z&#  &$ & $ &$ '% (' % R'% r'& ' & '& '' ( ' *(' J(( l( ( (( () ( ) )) ")* D) * n)* )+ ) + )+ ) *,**********************َ*َ,*َ?*َR*َe*َx*َ*َ*َ*َ*َ*َ*َ*َ+َ#+َ6+َI+َ\+َo+َ+َ+َ++{ _ }+++++++++ + + + + +++++++++ ++ + +,!,+C, +m,+,+, +,+,+- +E-+e-+- +-+-+- +.+=.+_. +.+.+. +. +/ +7/  + a/ + / +/  + / + / +0  + 90 + Y0  +{0   + 0  + 0! +0 ! + 1!+ 11"+S1 "+}1"+1#+1 #+1#+ 2$++2 $+U2$+u2%+2 %+2%+2&+3 &+-3&+M3'+o3 '+3'+3(+3 (+4(+%4)+G4 )+q4)+4 4*444444444444444444444َ4َ4َ4َ4َ4َ5َ"5َ55َH5َ[5َn5َ5َ5َ5َ5َ5َ5َ5َ6َ6َ,656{ _ }. .  . X. . .  . `. 0,($PLHDplhd         41 .   +.*      . .    +8ER_ly-s    8.  - ir{r   999999999 9 9 9 9 999999999 99 9 97:P:9r: 9:9:9: 9;9(;9J; 9t;9;9; 9;9<9"< 9L<9l<9< 9<9<9< 9$= 9D= 9f=  9 = 9 = 9=  9 = 9 > 9>>  9 h> 9 >  9>   9 >  9 >! 9? ! 9 @?!9 `?"9? ":?"9?#9? #:@#98@$9Z@ $:@$9@%9@ %:@%9A&92A &:\A&9|A'9A ':A'9A(9 B (:4B(9TB)9vB ):B)9B B*BBBBBBBBBBBBBBBBBBBBBَBَBَCَCَ+Cَ>CَQCَdCَwCَCَCَCَCَCَCَCَDَ"Dَ5DَHDَ[DdD{ _ }lDjDhDfDdDbD`D^D\D ZD XD VD TD RDPDNDLDJDHDODHD HDD D DDDPDD wD"ETDBETDdE {DEVDEUDE |DEWDFVDG ZD^G YDG  DG [D G ZDG  D H \D 6H [DXH  D H ]D H \DH  D H ^D I ]D0I  D ZI_D zI ^DI  D I `DI!_DJ !D2J!aDRJ"`DtJ "DJ"bDJ#aDJ #D K#cD*K$bDLK $DvK$dDK%cDK %DK%eDL&dD$L &DNL&fDnL'eDL 'DL'gDL L(LLLLLLLLLLLLLLLLLLLLَLَ MَMَ2MَEMَXMَkMَ~MَMَMَMَMَMَMَNَNَ)NَeَQeَdeَweَeَeَeَeَeَee{ _ }. .  . X. . .  . `. 0,($PLHDplhd        41 .  +XU R  O|y v s.*       . .    + 8 ER_ly-s   8.  - "+4[bipw~ ;j9j7j5j3j1j/j-j+j )j 'j %j #j !jjjjj jj jSj Qj Qjjj!jj Hjj%jk%j5k Lj_k'jk&jk Mjk(jk'j l Nj7l)jWl(jyl Ojl *jl )jl  Pjm +j /m *jQm  Qj{m ,j m +jm  Rj m -j n ,j)n  Sj Sn .j sn -jn  Tj n/j n.jo Uj +o0jKo/jmo Vj o1jo 0jo  Wjp 2j#p!1jEp !Xjop!3jp"2jp "Yjp"4jp#3jq #ZjGq#5jgq$4jq $[jq$6jq%5jq %\jr%7j7r Gr&TrTrTrTrTrTrTrTrTrTrTrTrTrTrTrTrTrTrTrَ^rَqrَrَrَrَrَrَrَrَ sَsَ/sَBsَUsَhsَ{sَsَsَss{ _ }sssssssss s s s s ssssss ss s st3tsUt ststst sts us-u sWuswusu su su sv  s/v s Ov sqv  sv s v sv  sw s 'w sIw  s sw s w sw  s ws ws!x s Kxskxsx s xsxsx s #ysCysey sysy sy  sy sz!s=z !sgz!sz"sz "sz"sz#s{ #s?{#sW{ g{$t{t{t{t{t{t{t{t{t{t{t{t{t{t{t{t{t{t{َ~{َ{َ{َ{َ{َ{َ{َ|َ|َ)|َ<|َO|َb|َu|َ|َ|َ|َ||{ _ }. .  . X. . .  . `. 0,($PLHDplhd        41 .  +XU R  O|y v s .*      . .   + 8 E R_ly-s  8.  - + )2;DMV_hq !(/6=^\ZXVTRPN L J H F DB@>E> >x v v́F mJ8JZ qLKƂ rML2 s\ N| M  tȃ O  N   u4 P T Op  vp Q g Pg  w g R ^ Q^  x ^S URU y UTLSL z LUCTC { CV:U: |:W1 V1  }1 X(!W( !~(!Y"X ""Z#Y ##[ $(1:CLU^gpyَََََََyَpَgَ^َUَLَCَ:َ1َ(ََ{ _ }(1:CLU^gp y     Մ  Մ: :   G ]  ]        y !y  !y m p p  p χ g g   g1 ^G^ G ^UU  UL L   LWCmC m C:ω: ω:111 11g( f(  ( h!g !!i "(1:CLU^gpyَََََََyَpَgَ^َUَLَCَ:َ1َ(َ{ _ }. .  . X. . .  . `. 0,($PLHDplhd        41 .  +XU R  O|y v s .*      . .  + 8 E R _ly-s  8.  - _9BKT]fox ")0 ")07>ELSZa(1:CLU^gp y     Մ  Մ: :   G ]  ]        y !y  !y m p p  p χ g g   g1 ^G^ G ^UU  UL L   LWCmC m C:ω: ω:111 11}( (  ( ߊ! !!A "(1:CLU^gpyَََََََyَpَgَ^َUَLَCَ:َ1َ(َ{ _ }1:CLU^gpy      Մ  Մ: :      G  ]  ]        y !y  !y m p p  pχ gg  g1^G^ G ^UU  UL L   LWCmC m C:ω: ω:111 11}(( (ߊ( ( (1:CLU^gpyَََََََyَpَgَ^َUَLَCَ:َ1َ(({ _ }!. .  . X. . .  . `. 0,($PLHDplhd        41 .  +XU R  O|y v s .*      . . + 8 E R _ ly -s  8.  - mv: '.5<CJQX_fmt#*18?FMT[bipw~1:CLU^gpy      Մ  Մ: :      G  ]  ]        y !y  !y m p p  pχ gg  g1^G^ G ^UU  UL L   LWCmC m C:ω: ω:111 11}(( (ߊ( ( (1:CLU^gpyَََََََyَpَgَ^َUَLَCَ:َ1َ(({ _ }:CLU^gpy      Մ  Մ: :          G  ]  ]        y !y  !ym pp pχgg  g1^G^ G ^UU  UL L   LWCmC m C:ω: ω:111 11}1 11:CLU^gpyَََََََyَpَgَ^َUَLَCَ:َ11{ _ }#. .  . X. . .  . !`. 0,( $PLHDplhd        41 .  +XU R  O|y v s   .*      . . +8 E R _ l y !"-s  8.  -  (!wOV]dkry@GNU\cjqx:CLU^gpy      Մ  Մ: :          G  ]  ]        y !y  !ym pp pχgg  g1^G^ G ^UU  UL L   LWCmC m C:ω: ω:111 11}1 11:CLU^gpyَََََََyَpَgَ^َUَLَCَ:َ11{ _ }CLU^gpy      Մ  Մ  :  :           G  ]  ]       y!y !ympp pχgg  g1^G^ G ^UU  UL L   LWCmC m C:ω: ω:: ::CLU^gpyَََََََyَpَgَ^َUَLَCَ::{ _ }%. .  . X. . .  . #`. 0,("$PLH!Dplh d        41 .  +XU R  O|y v s   0-*'.*      . . +8E R _ l y  !"#$-s  8.  -  &/8AJS\e#]dkryCLU^gpy      Մ  Մ  :  :           G  ]  ]       y!y !ympp pχgg  g1^G^ G ^UU  UL L   LWCmC m C:ω: ω:: ::CLU^gpyَََََََyَpَgَ^َUَLَCَ::{ _ } LU^gpy      Մ   Մ   :  :           G  ]  ]   y!y !ympp pχgg  g1^G^ G ^UU  UL L   LWCmC m CC CCLU^gpyَََََََyَpَgَ^َUَLَCC{ _ }'. .  . X. . .  . %`. 0,($$PLH#Dplh"d!         41 .  +XU R  O|y v s   0-*'TQNK.*      . . +8ER _ l y   !"#$%&-s  8.  - / $-6?HQZclu~%$+29@z LU^gpy      Մ   Մ   :  :           G  ]  ]   y!y !ympp pχgg  g1^G^ G ^UU  UL L   LWCmC m CC CCLU^gpyَََََََyَpَgَ^َUَLَCC{ _ } U^gpy     Մ   Մ    :   :           G ] ]  y!y !ympp pχgg  g1^G^ G ^UU  UL L   LWL LLU^gpyَََََََyَpَgَ^َUَLL{ _ }). .  . X. . .  . '`. 0,(&$PLH%Dplh$d#" !        41 .  +XU R  O|y v s   0-*'TQNKxuro.*      . . +8ER_ l y   !"#$%&'(-s  8.  - c=FOXajs|'/#*18?FMT[bipw~ U^gpy     Մ   Մ    :   :           G ] ]  y!y !ympp pχgg  g1^G^ G ^UU  UL L   LWL LLU^gpyَََََََyَpَgَ^َUَLL{ _ } ^gpy    Մ   Մ    :   :           G] ]  y!y !ympp pχgg  g1^G^ G ^UU  UU UU^gpyَََََََyَpَgَ^َUU{ _ }+. .  . X. . .  . )`. 0,(($PLH'Dplh&d%$ #  "     !41 .   +XU R  O|y v s   0-*'TQNKxuro.*      . . +8ER_l y  ! " #$%&'()*-s  8.  - qz )lDKRY`gnu| %,3: ^gpy    Մ   Մ    :   :           G] ]  y!y !ympp pχgg  g1^G^ G ^UU  UU UU^gpyَََََََyَpَgَ^َUU{ _ } gpy   Մ   Մ    :   :          G] ]  y!y !ympp pχgg  g1^G^ G ^^ ^^gpyَََََََyَpَgَ^^{ _ }-. .  . X. . .  . +`. 0,(*$PLH)Dplh(d'& %  $     #41 .  "+XU R  !O|y v  s   0-*'TQNKxuro.*      . . +8ER_l y ! " # $ %&'()*+,-s  8.  -  $-6?HQZ+  '.5<CJQX_ gpy   Մ   Մ    :   :          G] ]  y!y !ympp pχgg  g1^G^ G ^^ ^^gpyَََََََyَpَgَ^^{ _ } py  Մ   Մ  :  :         G ]  ]   y!y !ympp pχgg  g1g ggpyَََََََyَpَgg{ _ }/. .  . X. . .  . -`. 0,(,$PLH+Dplh*d)( '  &     %41 .  $+XU R  #O|y v "s !   0-*'TQNKxuro.*      . . +8ER_ l!y" # $ % & '()*+,-.-s  8.  - #,5>GPYbkt}!- ")07>ELS ")07>ELSZahov} py  Մ   Մ  :  :         G ]  ]   y!y !ympp pχgg  g1g ggpyَََََََyَpَgg{ _ } y Մ  Մ :  :         G ]  ]      y!y !ympp pχp ppyَََََََyَpp{ _ }1. .  . X. . .  . /`. 0,(.$PLH-Dplh,d+* )  (     '41 .  &+XU R  %O|y v $s #"!   0-*'TQNKxuro.*      . . +8ER _!l"y#$ % & ' ( )*+,-./$0-s  8.  - 6"+4=FOXajs|*/& !(/6=DKRY`gnu|$+29@GNU\cjqx y Մ  Մ :  :         G ]  ]      y!y !ympp pχp ppyَََََََyَpp{ _ } Մ  Մ: :        G ]  ]      y !y  !y my yyَََََََyy{ _ }3. .  . X. . .  . 1`. 0,(0$PLH/Dplh.d-, +  *     )41 .  (+XU R  'O|y v &s %$#  "0-*!'TQN Kxuro,)&#.*      . . +8E R!_"l#y$%& ' ( ) * +,-./0$122-s  8.  - kENW`ir{ 31d<CJQX_fmt{-4;BIPW^elsz Մ  Մ: :        G ]  ]      y !y  !y my yyَََََََyy{ _ } Մ  Մ: :     G ]  ]        ََََََ{ _ }5. .  . X. . .  . 3`. 0,(2$PLH1Dplh0d/. -  ,     +41 .  *+XU R  )O|y v (s '&%  $0-*#'TQN"Kxur!o ,)&#PMJG.*      . . +8 E!R"_#l$y%&'( ) * + , -./01$223@4-s  8.  - z %.7@IR<3z "KRY`gnu| Մ  Մ: :     G ]  ]        ََََََ{ _ } Մ  Մ: :  G ]  ]   َََََ{ _ }7. .  . X. . .  . 5`. 0,(4$PLH3Dplh2d10 /  .     -41 .  ,+XU R  +O|y v *s )('  &0-*%'TQN$Kxur#o"! ,)&#PMJGtqnk.*      . . + 8!E"R#_$l%y&'()* + , - . /012$324@5N6-s  8.  -  $-6?HQZclu~F5 ")07>ELSZahjqx  Մ  Մ: :  G ]  ]   َََََ{ _ } Մ  Մ: :  Gََََ{ _ }9. .  . X. . .  . 7`. 0,(6$PLH5Dplh4d32 1  0     /41 .  .+XU R  -O|y v ,s +*)  (0-*''TQN&Kxur%o$#"!,)& #PMJGtqnk.*      . .  +!8"E#R$_%l&y'()*+, - . / 0 123$425@6N7\8-s 8.  -  #,5>GPYbkt} O7 !(/6=DKRY`gnu| ")07> Մ  Մ: :  Gََََ{ _ } Մ  Մ: : َََ{ _ };. .  . X. . .  . 9`. 0,(8$PLH7Dplh6d54 3  2     141 .  0+XU R  /O|y v .s -,+  *0-*)'TQN(Kxur'o&%$#,)&"#PMJ!Gtqn k.*      . .  !+"8#E$R%_&l'y()*+,-. / 0 1 2 34$526@7N8\9j:-s 8.  - ?"+4=FOXajs| X9]5<CJQX_fmt{$+29@GNU\c Մ  Մ: : َََ{ _ } Մ  Մ: :ََ{ _ }=. .  . X. . .  . ;`. 0,(:$PLH9Dplh8d76 5  4     341 .  2+XU R  1O|y v 0s /.-  ,0-*+'TQN*Kxur)o('&%,)&$#PMJ#Gtqn"k! .*      . .  !"+#8$E%R&_'l(y)*+,-./0 1 2 3 4 5$627@8N9\:j;x<-s  8.  - tNW`ir{ &/8AJa;sz ")07 &-4;BIPW^elsz Մ  Մ: :ََ{ _ } Մ  Մَ{ _ }?. .  . X. . .  . =`. 0,(<$PLH;Dplh:d98 7  6     541 .  4+XU R  3O|y v 2s 10/  .0-*-'TQN,Kxur+o*)(',)&&#PMJ%Gtqn$k#"!  .*       . . !"#+$8%E&R'_(l)y*+,-./012 3 4 5 6$ 728@9N:\;j<x=>-s !8.  -  %.7@IR[dmv&j= !(/6=DKRY`gnu| !(/6=DKRY`gnu| Մ  Մَ{ _ } 32A. .  . X. . .  . ?`. 0,(>$PLH=Dplh<d;: 9  8     741 .  6+XU R  5O|y v 4s 321  00-*/'TQN.Kxur-o,+*),)&(#PMJ'Gtqn&k%$# "(%"! !.*        !. .  "#$+%8&E'R(_)l*y+,-./01234 5 6 7$ 82 9@:N;\<j=x>?@-s "8.  -  (1:CLU^gpy/e?   '.5<CJQX_fmt{#*18?FMT[bipw~ 32L1 1  1 ,1 .L1 1 1 ,1 |1 1V $2 "2 1 µL1 1 c>    , %8   , %16    $20\   $/6: STATE_WORDS\   $/6: STATE_WORDS(   "'-3@ KT^+4A P\di STATE_WORDS09F Uain STATE_WORDS (   ChaChaRng   buffer"A  state! 2 p  index! 1  <     H  `mvlu 9BK '0 u4\  $/6: STATE_WORDS\  $/6: STATE_WORDS\  $/6: STATE_WORDS\  $/6: STATE_WORDSL  $/6: KEY_WORDSL*  $/6: KEY_WORDST2 ̵2 \2 l2 42  $2 D2 T3 ė3 \3 + ; <3%   ,   ?|3   3 '  *R <3 3 2 2a  2 L2 ,3 x=DَZvalueK(L4  $/6: KEY_WORDS t9  9 :  t: D:  h<T: p:   D``` _`_`__Vlp:G   E   $:   \: : ,: ,: : $:   י޲ ^:  f:   ": :    D:  -: 9 9 :, L9 ,9 <9 0b Wh >Ԁ  keyword= 6R07L ʀL9  $/6: KEY_WORDSL9  $/6: KEY_WORDS    , %8 l  +   ;U(a*  +_ l @+   ?Y,i2 , +_|   $/6:RAND_SIZE_USIZE|   $/6:RAND_SIZE_USIZE|  $/6:RAND_SIZE_USIZE|  $/6:RAND_SIZE_USIZEh4 $    l L?  4 4 4 | 8+ l   D l!  D!  !     !     D! $!  h= 4! @!   D___ ______`  mq !  Eۏ  L!   L!  T)  ) 1 D)   + T+  + T+ + L+ ,  |)   ) ) )  EeL)  t) )   D8Ͳٙ ei)   E  ) ,* ! * " !%H !" # ѭ#**  "H# &  & * %&# ' (%'- ('%@ $%# +H#   +/"# *1# .  . * -.# / 0-/- 0/-@ ,Ԙ-#&  *,n)##* )p   $# 0 7C 67 56 9x  3 940b 89 1 4 58 ; : ;4:. ;:4A 3Ԙ4$ <X#  3w<)2"$ =x#  2J=)1"$ ?  ? * >?$ @ A>@- A@>$ Ԙ>1$  1$ h$ H3p  HM0 G 5 FG EF Jx  3 J40!b IJ 1 D EI ; K LDK. LKD"A CԘD$  Ci$$ B#&$ B% M% O  O $* NO% P QNP- QPN%% ԘNM,* S * " S%&HRS& U U  * T'>' XR XR(* WX' Y ZWY- ZYW)@ VԘW' ]H'  ]$T' \*&' `R `R+*_`' ab_a- ba_,@^Ԙ_'&  \^n[-#'* [p  V( 0 i.9 hi gh kx  3 k40/bjk 1 f gj ; lmfl. mlf0AeԘf( nX(  ewn)d1"( ox(  dJo)c2"( qR qR3*pq( rspr- srp4( Ԙpc(  c( h( z53p  zM0 y65 xy wx |x  3 |407b{| 1 v w{ ; }~v}. ~}v8AuԘv(  uiV( t9&( t) ) R R:,) 1 ;) Ԙ,*  * # &<J" " * =A#  >.# 1 ?GԘ# H#  &# @)#  A.# 1 BGԘ#&  yC&#* p  # 0 D;   x  4 51Ed 1   ;  2 FHԘ$ X#  ,G%$ x#  O,H%$  I.$ 1 J$ Ԙ$  $ h$ K5p  P0 L7   x  4 51Md 1   ;  2 NHԘ$  s$ O)$ % %  P.% 1 Q% Ԙ,+  + # &RJ& "+ SA'  T.' 1 UGԘ' H'  &' V)'  W.' 1 XGԘ'&  yY&'* p  ( 0 Z;   x  4 51[d 1   ;  2 \HԘ( X(  ,]%( x(  O,^%(  _.( 1 `( Ԙ(  ( h( a5p  P0 b7   x  4 51cd 1   ;  2 dHԘ(  s( e)( ) )  f.) 1 g) Ԙ     ! +* " " "  #  & &  '  ' " " " # & & ' '  L a!!!, , H!?! )!!ۏ~ ۏ    ۏ h  ۏ  4  /   n " َ" " َ}^'? َ# (7Q?َH^1َ: XYsjَs{uَ~NU & َ& ' َ}w5M%َ.' KZtbَkTَ]-4{|َ"َmt " َ*" " َe5N"َ+# @\FَOQ َ) 3OBَK?8َA  & َ& ' QَZ$+   y  َ   '  0 N   A  َ j q    َ    # A   0 s  َ f m   َ   &&F(O(Px9x; ( mr_offset' m2_offset'=&~%d G[ "yR $y 1 RG TyVypchG`yXyGyy{ E*8*'e(q(##"!!w8Dy$  ,(,++Տ**(ڔ((V'j&%%9$ $]#,#"  Z*O]*|JW   1 | L V, , +gr_,*  * " %H* *)  * ) َ +D- l- d. ,.  $. <. l.  . # &JD1 1 L1 `f &assertion failed: self.cnt < RAND_SIZE&&SD3 3 L3 '   7   83  3)   ,   3+ Ԙ3 - - L- 4x8.eT`,<   << Ԙ  < T<  gCd< <  =  |=  = -  0.\  <3 <  f=  ,= T= ,= ,= = \=  = $=   = d=  $>   > d>  $>   > d> > t> $>  &$>  T> > > ; ; <   θ<>  >T> gCd>>? d? ?-  0.\  ?0̞?? %?T?,?,? ?\@ @$@  @d@ $@  @d@ $@  @d@@t@$@ &$@ T@@A=>>?lθT>,=θ<>> ؈ ,?yَM #  uIʌH -5H'/H'/H  '/(   3 ? J$ 0 N"(  XorShiftRng H x.H y . H  z .  H  w.9+1 ?E$*   x ߑwT]f1: FO:HS:4 L  3l R"4|4|4|4T 3| R "D   3t  R "   @ !) D  Z  L   Qr%fyy|t~w_]s  *5<4  *5<4  *5<4L ˨,,d ˨  IA*/L,F     $ $ $  ,  3     \\Lj6.&cz}yyz ݜ L~     o|gDg $gTggg g )@7 9 VV |gDg$gTggg; hgi g Lg4{?do|sDs$sTss Tss+ Tss dtt?trssLrLrs4s+0 $x1Tr ?r#r% 0x3F800000Ds r!r%0x7FFFFF|yDy $yTyy Tyy+ Tyy dzz?zxyyLxLxy4y+0 $x;x ?x+x%0x3FF0000000000000|y x(x%0xFFFFFFFFFFFFF     |D h$Tx  D``` _`_`__Vmq  E   $  , T  |D$  T L  ݈d܈ $Ԉ L *@8 : WWT   " Bم3LȂ$ӂL݅<4hĴ\ hĴjnumbyte& {D# T $,ʌR L 1}5  Ǖ  z c _؇׆ǐd q <  ( 09 A$T ;2 ,1՘   $ژ   ʘTʘ , Z A  +8-8-'%Rng.gen_range called with low >= high%%9 Z ʘ&T T$%$T$şF$    '  BO  ^ < LǗҗ$ڗAgb 9$uTwzQ(IPW^4  # ƛL˛ $ƛ ՛ ؛|˛ƛ ޛu$L #'T    { c֛DžĮd aD g4T0$ }dȣ L $ ţOԻ' (.  hlL4Lc EG4ΥΥDե'Tե'$  ˥4d ŦLʦ$Ŧ Ԧצʦ       #) W hL 4|n.5\[N.4d  4 $4 $ &J   ŭ ,ŭ   ɭ$   &J  ijL$ ­  ($ h4  q!ݭݫL4,َsi~َzrtww^D® ®Dˮ +TˮۮA L ;D D +TAL 8DЯ ЯDٯ +TٯA¯L 8D D +TAL 8D T +$S߰Lİ$ϰ"QD  Unique _锈˨ ˨ ˨DTձA L%LDIJ  &IJDͲKTͲݲAL$HD  &DKTAL$HDҳ  &ҳD۳KT۳AijL$HD  &̥TK$ĴSL$&/2a(  Generator pֶ rng 1'_marker% 6  A x}     z c _؇׆\enQZ f.7  FOD t 4, DhL L( AsciiGeneratorp rng 1<x}in    { c֛Dž   DR]@rD  &4 K>쨽/4ƽ K VDƽ08> ݽȻd޻ Lлdzh4UwupAa  >4@ l9ab"ABCDEFGHIJKLMNOPQRSTUVWXYZ\ abcdefghijklmnopqrstuvwxyz\ 0123456789"( Open01(!UZglNy  ɽ   ( Closed01(!W\inN{  ( $)6 AJT( StdRng rng θ1<puin  /DθD θ3TA L|;DθD-TALs8z( ThreadRngReseeder/4AFN fr }4 0'32_768 ))) ()phantom()(԰'''borrow%'%໎ʍ7cccccկ٢і8 (   ,8 Co {ak(  ThreadRng  rng!2=tyjo ƒ փփ3y  y y h h !y 9֥!y\! _y y /4y   0 yyy   # yM  yy !  W_D /"'T 'VdP'  ((RefMut(%(׀%(%МuzT , b L,   āփMbytesTЌdT   N, 8 8Րtz' D4AFt Q,4D4c*-1l5Ԓ   , #/7>L `my #/7>L `my, #/7>L `my|2 #/7>L `my  #/6=K _lx|  #Ѡ/6=K _lѠx  #/7>L `myL. #::ϼΊmbb‘9 #   (ɽ4<CQ  i vɽ   (4<CQ  i v $J4K2L()`.C See the `distributions` submodule for sampling random numbers fromF+ distributions like normal and exponential.. # Usage\G This crate is [on crates.io](https://crates.io/crates/rand) and can beJJ used by adding `rand` to the dependencies in your project's `Cargo.toml`.M ```toml\ [dependencies]  rand = "0.4"  ```<   and this to your crate root:   ```rust\  extern crate rand; <   # Thread-local RNG  G There is built-in support for a RNG associated with each thread stored JG in thread-local storage. This RNG can be accessed via `thread_rng`, or JC used implicitly via `random`. This RNG is normally randomly seeded FF from an operating-system source of randomness, e.g. `/dev/urandom` on ID Unix systems, and will automatically reseed itself from this source G( after generating 32 KiB of random data. +  # Cryptographic security  J An application that requires an entropy source for cryptographic purposes ML must use `OsRng`, which reads randomness from the source that the operatingOH system provides (e.g. `/dev/urandom` on Unixes or `CryptGenRandom()` onK Windows).lL The other random number generators provided by this module are not suitableO for such purposes.K *Note*: many Unix systems provide `/dev/random` as well as `/dev/urandom`.N; This module uses `/dev/urandom` for the following reasons:>@ - On Linux, `/dev/random` may block if entropy pool is empty;CJ `/dev/urandom` will not block. This does not mean that `/dev/random`MM provides better output than `/dev/urandom`; the kernel internally runs aPM cryptographically secure pseudorandom number generator (CSPRNG) based onPC entropy pool for random number generation, so the "quality" ofFM `/dev/random` is not better than `/dev/urandom` in most cases. However,PM this means that `/dev/urandom` can yield somewhat predictable randomnessPG if the entropy pool is very small, such as immediately after firstJK booting. Linux 3.17 added the `getrandom(2)` system call which solvesNM the issue: it blocks if entropy pool is not initialized yet, but it doesPH not block once initialized. `OsRng` tries to use `getrandom(2)` ifKJ available, and use `/dev/urandom` fallback if not. If an applicationMM does not have `getrandom` and likely to be run soon after first booting,PL or on a system with very few entropy sources, one should consider usingO! `/dev/random` via `ReadRng`.$E - On some systems (e.g. FreeBSD, OpenBSD and Mac OS X) there is noHI difference between the two sources. (Also note that, on some systemsLK e.g. FreeBSD, both `/dev/random` and `/dev/urandom` may block once ifN$ the CSPRNG has not seeded yet.)' # Examplestӫ\ use rand::Rng;" let mut rng = rand::thread_rng();% if rng.gen() { // random bool!E println!("i32: {}, u32: {}", rng.gen::(), rng.gen::())H },<ӫ\+ let tuple = rand::random::<(f64, char)>();. println!("{:?}", tuple)< ## Monte Carlo estimation of π#M For this example, imagine we have a square with sides of length 2 and a unitPL circle, both centered at the origin. Since the area of a unit circle is π, O we have:d   ```text\ 6 (area of unit circle) / (area of square) = π / 4 9 Suppose you're on a game show, and you're given the choice of three doors:)PK > Behind one door is a car; behind the others, goats. You pick a door, say)NH > No. 1, and the host, who knows what's behind the doors, opens another*KJ > door, say No. 3, which has a goat. He then says to you, "Do you want to*MC > pick door No. 2?" Is it to your advantage to switch your choice?+F,L The rather unintuitive answer is that you will have a 2/3 chance of winning,OJ if you switch and a 1/3 chance of winning if you don't, so it's better to,M switch.\--J This program will simulate the game show and with large enough simulation-M: steps it will indeed confirm that it is better to switch..=.F [Monty Hall Problem]: http://en.wikipedia.org/wiki/Monty_Hall_problem.I/(random_door: &Range, rng: &mut R)1>* -> SimulationResult {1-+ let car = random_door.ind_sample(rng);1.2" // This is our initial choice2%2 let mut choice = random_door.ind_sample(rng);253" // The game host opens a door3%1 let open = game_host_open(car, choice, rng);343 // Shall we switch?3 let switch = rng.gen();4 if switch {4, choice = switch_door(choice, open);4/ }L44< SimulationResult { win: choice == car, switch: switch }4?,55J // Returns the door the game host opens given our choice and knowledge of5MJ // where the car is. The game host will never open the door with the car.6MG fn game_host_open(car: u32, choice: u32, rng: &mut R) -> u32 {6J. let choices = free_doors(&[car, choice]);711 rand::seq::sample_slice(rng, &choices, 1)[0]74,88? // Returns the door we switch to, given our current choice and8B5 // the open door. There will only be one valid door.880 fn switch_door(choice: u32, open: u32) -> u32 {93# free_doors(&[choice, open])[0]9&,99- fn free_doors(blocked: &[u32]) -> Vec {906 (0..3).filter(|x| !blocked.contains(x)).collect():9,::|:B // The estimation will be more accurate with more simulations:E! let num_simulations = 10000;;$;& let mut rng = rand::thread_rng();;)( let random_door = Range::new(0, 3);<+<7 let (mut switch_wins, mut switch_losses) = (0, 0);<:3 let (mut keep_wins, mut keep_losses) = (0, 0);<6=< println!("Running {} simulations...", num_simulations);=?" for _ in 0..num_simulations {=%7 let result = simulate(&random_door, &mut rng);>:>, match (result.win, result.switch) {>/. (true, true) => switch_wins += 1,?1- (true, false) => keep_wins += 1,?01 (false, true) => switch_losses += 1,?40 (false, false) => keep_losses += 1,@3 }l@L@@6 let total_switches = switch_wins + switch_losses;@9/ let total_keeps = keep_wins + keep_losses;A2AB println!("Switched door {} times with {} wins and {} losses",AE: total_switches, switch_wins, switch_losses);B=BD println!("Kept our choice {} times with {} wins and {} losses",BG3 total_keeps, keep_wins, keep_losses);C6CI // With a large number of simulations, the values should converge toCL% // 0.667 and 0.333 respectively.D(9 println!("Estimated chance to win if we switch: {}",D<: switch_wins as f32 / total_switches as f32);E=8 println!("Estimated chance to win if we don't: {}",E;5 keep_wins as f32 / total_keeps as f32);F8,F)  y=)  w<) y;)  :) 9).8)&7)5ĥJ*dK|*LLp*Ld**LM4*M-*0***N *N)O)O)))))P!)P$ Sampling from random distributions.'F This is a generalization of `Rand` to allow parameters to control theIE exact properties of the generated values, e.g. the mean and standardHC deviation of a normal distribution. The `Sample` trait is the mostFA general, and allows for generating values that change some stateDC internally. The `IndependentSample` trait is for generating valuesF" that do not need to record state.%lP$;v4MM$,W,ZT[<\D4!]L"^ #d\3}pr!km^`Ul ' Generating numbers between two others.*, 5z $%z$%M$&-4$(.$)b<>*57&( *%++ 5\T,+-': Create a new `Range` instance that samples uniformly from=( `[low, high)`. Panics if `low >= high`.+** ,Tnkxk1%..5\ȕ/04 8 8  8ȕ  8-%00 -  /$cl,.<%22\ȕ30T 8 8  8ȕ  81%44 1  3$c6m$&> The helper trait for types that have a sensible way to sampleA@ uniformly between two values. This should not be used directly,C# and is only to facilitate `Range`.&\55,5676791 Construct the `Range` object that `sample_range`4< requires. This should not ever be called directly, only via?: `Range::new`, which will check that `low < high`, so this=+ function doesn't have to repeat the check..|T$%$T$şF55 6T$>> Sample a value from the given `Range` with the given `Rng` asA a source of randomness.d 8 8  8  85%88 5  7 c')̲d  &          unsignedD  ,  & $ &\     &    4   &|   T     $    ,      !  %,    z    $   ΍D   z    T   ΍D     d   ΍D  $  ΍D MAX   $  d   d   %,  ,   T   T   %,   %,        T\   $       ! ! ! 4!  ! &d! ! % ! ! M! ! ! !  ! !  ! ,! ! ! ! ! ! c! !  ! ! % !! ! ! ! & $" " & "  " " c" " 6"" " " ΍D" " " " " $  $ $  $ $ T\$ $ $ ΍D$ $ % 4% % % z % % %  % % T% % z % % % % %  %  %  % % %,% % % ΍D% % % % % % %)T) ) - ) ) ) ) ) )) ) - $) &\) * * * * -  * &|* * * T* * * * * $* * * ** ,* * * * * * + ,* * + T* + T+ + %,+ + $+  + T+ + T\+ +0.0+  , &d, , % , , M, , , ,  , ,  , ,, , , , , , c, ,  , , % ,, , , , -  , , T, ,  , , %,,  , c, , 6,, , , , , , ,l     <  ,  % The Gamma and derived distributions.(, M;?{4 ;@{ ;@\t;A\;A.;C-4;D^;E#XG;<XG;<XZG;<XlG;<XF;<XF;<Zl2;=Z;=ZF;=ZF;=|lkn^aB''* TG+; Construct an object representing the `Gamma(shape, scale)`> distribution.( Panics if `shape <= 0` or `scale <= 0`.+FF GY I5<;HH,Y,K5<;JJ,Y,ԲM04 8 8  8  8˨L%NN L˨ ˨ M˨$cL(* $P 04  8 8  8  8˨O%QQ O   P˨$ c "!$S!04! 8 8  8  8˨R%TT !R !! S˨$!c ""%V"0T" 8 8  8  8˨U%WW "U "" V˨$"ch "$/Y$0T$ 8 8  8  8˨X%ZZ $X $$ Y˨$$c "&/\&0T& 8 8  8  8˨[%]] &[ && \˨$&c "|2_3 > Create a new chi-squared distribution with degrees-of-freedom2A `k`. Panics if `k < 0`.ܦ33^^ _ 35a6046 8 8  8  8˨`%bb 6` 66 a˨$6cQ "6*d70T7 8 8  8  8˨c%ee 7c 77 d˨$7c "d>g@%4 Create a new `FisherF` distribution, with the given?79 parameter. Panics if either `m` or `n` are not positive.?<@ff gm @ @BiB04B 8 8  8  8˨h%jj Bh BB i˨$Bc "C'lC0TC 8 8  8  8˨k%mm Ck CC l˨$Cc9 "lHoH8 Create a new Student t distribution with `n` degrees ofH; freedom. Panics if `n <= 0`.H Inn o IJqJ04J 8 8  8  8˨p%rr Jp JJ q˨$Jc( "K(tK0TK 8 8  8  8˨s%uu Ks KK t˨$Kcr "t     <  ,  & The normal and derived distributions.)4 MvxM$vy{4 vz{ vz0D v|,|v}-4v~.v~EdfUWFH79  -$  8  8˨%    ˨cW  v˜y& /L v 8  8˨%   Șc\-> Construct a new `Normal` distribution with the given mean andA standard deviation. # Panicsd Panics if `std_dev < 0`.]]ܾ04 8 8  8  8˨%   ˨$c!#&0T 8 8  8  8˨%   ˨$c!#t!"0= Construct a new `LogNormal` distribution with the given mean!@ and standard deviation.!"d"""" ]]$$04$ 8 8  8  8˨% $ $$ ˨$$c!#%)%0T% 8 8  8  8˨% % %% ˨$%c_!#     <  ,   The exponential distribution.!\ MM$0D ,|-4.\qsEhjWYFH57 Ѡ #$  8  8˨Ѡ%    ˨c  ۹y 0L  8  8˨%   cMVD5 Construct a new `Exp` with the given shape parameter8# `lambda`. Panics if `lambda <= 0`.&,Ć04 8 8  8  8˨%   ˨$c!##0T 8 8  8  8˨%   ˨$c!#     <  ,  | D T!TDx;I@3 ; @x8 @qx܏ @P@ @=o. @t@)9@-@[Vy@p_('@ k@۟@@`{S@i@:$@Bq@ZJq@Ys:R@@1S@} %@Nks@=8ub@t.Dd@RT=@ٹ@q`@'@|pu@4V@3zi@I@h^{*@V @l @Ζ1@')S7@1w.@K|@bKvǼa@EG@;ozG-@@Ÿ@6@wq@W!w@ZNV@t߂@n;k@`HdU@i?@dN!)@Va n@@uV@-4@=@Zquͪ@В@yc@#n@;[@>NG@򨃩4@)!@=G@gY?/`?q?Dvf? _f?+B?F1Š2?a?v#?L?\*K!?Aۗ/r?oP?#t.?I ?~ R? %?MJ ?Ms?i?3H?#7(?9j2 ?ʺh0^?;?|6?f?`fl?mM?iS.?lH?J?..k?k?Qd?a?}y?A[?aߠ >?~o| ?xO ?މ?6Zx?1ǟ>V?&dL?MJrZq? T?!7?u 9 ?&r?mHo+?CՌy?m??-ˌ?6pp?uybT?F8?U(8?s):? ?}re ?V@?܈?f? Q?~x?ÿk?A>L?t0G-?Ĕ2 ?MK?myKf=? }?q?Ir[Vo?NN?Y79@.?AV ?y}S?+ m??;*?0Q6?ڑAU?m?$n?vmgb??;7ɹ?+Gc?M. ?,czd?#ASU?EE??E6?s?~7ak?/1?s?lbu%?<6? 9??U?|?i8ݣ?t]ۤ?i<ڥ?&ۦ?ɀwާ?ui*?X)?8?(>? `. ?|IJG?l+,&?o"1?1,?Y/?Η ?`TDE?(zfҲ?Љ_?<&#?#r@|?~ ?ktW?E$a.?isk?mZ9S?MN??>{?u0??3?T#?=Kr?MR=?4?Ct@c?u?%F?ҩV?Szè?cx|?M?(骿?i%?G?#l ?v㭍?ȩmE?\w󈬚?ovJ?NGF?P">?/~`?Q{|J?ei?Pb?R?s钑?%du?j_]?ckӿҶ?-2?ߖ ~k?Wg?ER!?+zd}?ޏzx?Aٷ5?Zr͒?K^?ϲM?Uī?_E8 ?(i?!ʤT?* l'?k??$?I1C"_U?;?6M?TY?uoO?:5K?9T}?>9կ?k.?y?/G?NAz?N>ǭ?[!w;?K[M??(%H?,kh|?w|P?,?5Ѽ?O? ȭ?W?Ϳj?So&?b=p\?Q6?q&wC?(8t?K|7=8?3&o?'G??̩;?igP?9?P?I?O5?ͬ8o??i?g?`B4?;ۮY?:?S^?G9 ?>!H?DXJS?_:)?N?bZ]G?qi)m?2?W?IU?d?Apɗ0?WX?n+À?W?X~?5%?ݫIJO?_hy?#r!?IO??2!?eZ&?S?0M&?Ȭ)?Ko? $ ?ߕU7?o*'g?kQ^?%cX? P?@)?pq\?K<?'w?!K?UsW,?c8a?H?ܸOU?R#2?R0‘B?5bWF}?c$"?e;? x4?QՋt?z?m?*?ڿ5:>?@:e?N?G?^j?F3?BxI?Xp?5o?k)??-Zn[T?e|jD??"ĥcLcc Lc]d!@~)@qQ@{H @染@/P@rKmg@sz@s @vKT @]vґ @P] @ @E؂3 @膭h @:LC%K @wI>V @$: @Ќ @ *4O @CuZ @6;@[i΅@Ash9h@þ,0@n@v}G@qkҐ@q<]@\}*@%@{/e@HJ@1`Og@.{$U8@w @d@8a@`DL@Y1W@q+@O@'{0@L]@2Ә@,[@B3@/ @ޭ@zD@CQ4@Vr@e;L@ϧ* '@dY&Y@p-|@PE@+SB@as@;@P@POR3.@ @q3@[*xa@!x @o@ąEe@,:oD@Kj$@ f@P@p@3s@:ω@&h@$kJ@94,@z7@ ?ƥ?^Qk?n0?i[?zvJk?#O?T|K?P&7?5J7? S?Cl?0AM5?q탫?n\?##_?ꂲ\?/BNS'?-@?&x?O2{?C%T?n ?ʝ(?{e?2?V5S?.YЊ!?Rܨ?^}?@9?5X?s\'??`H?U.?aYc?+ߺ3?xr?}k? $v?1w1s?aC?PS? Y$?<~ ?E?\X?/s*?(V?6[?Nk=?'o1Aq?,gC?ف?E?k?ăσe?1|?PBju?k^??Z+?pW?Y???Ly_N?$D?[ҖS%?DBD?u,?2Bޑ?=S8?#P?+/w?S*?l~|o?my#nt?yy?>bS?h m-a?.ǘ?=?Gox)J? k? 5_\?Bgp(.?b!S?mm?E& ?h#ឪ?(8eG?I>&?K?I?GH?SujvK?2h]?O_ ?Rsxf?-|M=??{_?ݥ}?Q]ȗ?7"U?c`TY??+@?J? ?n=?%&ڐ?b$p?-\I;?{m?y8?^zP?N*J"?[5?L[Iֺ?@]X?Ւ L;%?O 2=? O?(> T+Y?&ka?f?ḰXl?E@Wi=q?#Ηs?'67w?;H#z?]tQW}?_)N?rvi?coQ? n?t4?h?-BU؊?Z'n?lj? RD?]_rTE>?0:;?]1%`r*{?2 ?l}g? BE?Ք&?w?j8 ?-ɰY?0?䠟??\*A?G?7O"H?/֎@?@YH??{>\O?QLҫ?iG>?+|y2?ѐ]b?>N?2Sn?kR?i"?ބS? ?Y? {^?~ /?vG}rO?(vEW(?c"FS?qB9 ?6$1!?(V?}G?0H?O0Z?A1?タ+ j?ڋ? &?ލ?飽!O?:l?o1&?yX#?'HB>? Ə{?%۹?d>[?07?r^sSw?"Ɲҷ?]ζi?=aD:??}?>]? ]T?I?{ ?7Zi?!u v?Eje?ָ?e(4?uTC? Qi?8?*?fx?@?~?}k?!?8u?W}6Ei?K=?SBц?ƿ-r?|E!=?'`?KeC?;1s?-T[?.+?J9?3;?omo?);?{s?>?P"K?2m?'O?aE#?cE#;?z?Dܻ?+?(ᨯC?lj?Qf?x?wڂl?yLi=?j? \Omg?I?gK[!? n?+1$-?x]?5v??U1T?mU?bv?2!?1{{?P?GE??.̏ A Types that can be used to create a random instance of `Support`. D4 --<  59 Generate a random value of `Support`, using `rng` as the < source of randomness. 4  8 8  8  8%    $ c 2456 `Sample`s that do not require keeping track of state. 9 ; Since no state is recorded, each sample is (statistically) >< independent of all others, assuming the `Rng` used has this ? property.l-|< &$&0 Generate a random value.T 8 8  8  8%  ȝ $ )+"% #%  , 8  8  $/%$04 8 8  8  8%   $c%':%$0T 8 8  8  8%   $cr%'%    (/ !,!ԣ !"A Create a new `WeightedChoice`.!"! Panics if:t!! - `items` is empty! - the total weight is 0܋"7 - the total weight is larger than a `u32` can contain.":" /ԣ /`+6/ +,+ԣ+,.4, 8 8  8ԣ  8% , ,ȝ, /$,c+-,A/ ,,-ԣ,-.T- 8 8  8ԣ  8% - -ȝ- /$-c+-@@ @ @ <@ @,@@D@ 8  8˨%00 @ @ @ @@BB 8  8˨B 8B ˨c*A*LBB,BtPB Non-physical true random number generator based on timing jitter.E4PM(2 b\ATOMIC_USIZE_INIT Dwy=oqLN:<Ԉl\J A true random number generator based on jitter in the CPU execution time,M" and jitter in memory access time.%D This is a true random number generator, as opposed to pseudo-random GI generators. Random numbers generated by `JitterRng` can be seen as fresh LJ entropy. A consequence is that is orders of magnitude slower than `OsRng` M' and PRNGs (about 10^3 .. 10^6 slower). * M There are very few situations where using this RNG is appropriate. Only very PJ few applications require true entropy. A normal PRNG can be statistically ML indistinguishable, and a cryptographic PRNG should also be as impossible to O predict.d  L Use of `JitterRng` is recommended for initializing cryptographic PRNGs when O `OsRng` is not available.  This implementation is based on#@ [Jitterentropy](http://www.chronox.de/jent.html) version 2.1.0.CL߮FL$\4,tL|T\tܼt4 8 8 8  8  8VVW TWT֌ 8  $ |ӥ%\ 8  8ӥ   $ ӥ4 8 8 8  8ӥ  8VVW TWT֌ 8  $ '   < ,ӥ\ 8  8ӥ  8  $ !    <  ,  l bRȐԂet!#- Create a new `JitterRng`.!& Makes use of `std::time` for a timer.!)!D During initialization CPU execution timing jitter is measured a few!GF hundred times. If this does not pass basic quality tests, an error is"IE returned. The test result is cached to make subsequent calls faster.#H# # # <# #,###̸܂ִٯ!ӥ +6'I A custom timer can be supplied, making it possible to use `JitterRng` in(L `no_std` environments.((* The timer must have nanosecond precision.)-)H This method is more low-level than `new()`. It is the responsibility of)KG the caller to run `test_timer` before using any numbers generated with*J1 `JitterRng`, and optionally call `set_rounds()`.*4t+ 1,+d 5)C Configures how many rounds are used to generate each 64-bit value.1FD This must be greater than zero, and has a big impact on performance1G and output quality.22F `new_with_timer` conservatively uses 64 rounds, but often less rounds2IG can be used. The `test_timer()` function returns the minimum number of3JG rounds required for full strength (platform dependent), so one may use4J9 `rng.set_rounds(rng.test_timer()?);` or cache the value.4<T5 8  8 5 $514591|9 8  8 9 $9n_bits49B4LB 8  8 B $B$B var_roundsTBB($B 1$B$BX)LX 8  8 X $XTXa/,a 8  8 a $a current_deltalaf*tf 8  8h g $gxLx 8  8 x $xzDz \ 8  8  $Â7G Basic quality tests on the timer, by measuring CPU timing jitter a fewJ hundred times.ȇH If succesful, this will return the estimated number of rounds necessaryЇKG to collect 64 bits of entropy. Otherwise a `TimerError` with the causeJ! of the failure will be returned.$T 8  8̸܂ִٯ!ӥ  $юl׎T4ڱ$ݱ y 6B Statistical test: return the timer delta of one normal run of theE# `JitterEntropy` entropy collector.&F Setting `var_rounds` to `true` will execute the memory access and theIF CPU jitter noice sources a variable amount of times (just like a realI `JitterEntropy` round).ʵC Setting `var_rounds` to `false` will execute the noice sources theFH minimal number of times. This can be used to measure the minimum amountKI of entropy one round of entropy collector can collect in the worst case.L޷ # ExamplelH Use `timer_stats` to run the [NIST SP 800-90B Entropy Estimation Suite]K< (https://github.com/usnistgov/SP800-90B_EntropyAssessment).и?C This is the recommended way to test the quality of `JitterRng`. ItFG should be run before using the RNG on untested hardware, after changesJF that could effect how the code is optimised, and after major compilerI+ compiler changes, like a new LLVM version..H First generate two files `jitter_rng_var.bin` and `jitter_rng_var.min`.KI Execute `python noniid_main.py -v jitter_rng_var.bin 8`, and validate itL9 with `restart.py -v jitter_rng_var.bin 8 `.<I This number is the expected amount of entropy that is at least availableLG for each round of the entropy collector. This number should be greaterJ4 than the amount estimated with `64 / test_timer()`.ɾ7B Execute `python noniid_main.py -v -u 4 jitter_rng_var.bin 4`, andEJ validate it with `restart.py -v -u 4 jitter_rng_var.bin 4 `.׿MG This number is the expected amount of entropy that is available in theJF last 4 bits of the timer delta after running noice sources. Note thatIF a value of 3.70 is the minimum estimated entropy for true randomness.IEMG This number is the expected amount of entropy that is available to theJI entropy collecter if both noice sources only run their minimal number ofLF times. This measures the absolute worst-case, and gives a lower boundI for the available entropy. ```rust,no_run use rand::JitterRng; # use std::error::Error; # use std::fs::File;Į # use std::io::Write; #,, # fn try_main() -> Result<(), Box> {/ fn get_nstime() -> u64 {- use std::time::{SystemTime, UNIX_EPOCH};0E let dur = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();H8 // The correct way to calculate the current time is;C // `dur.as_secs() * 1_000_000_000 + dur.subsec_nanos() as u64`FE // But this is faster, and the difference in terms of entropy isH( // negligible (log2(10^9) == 29.9).+4 dur.as_secs() << 30 | dur.subsec_nanos() as u647,G // Do not initialize with `JitterRng::new`, but with `new_with_timer`.J> // 'new' always runst `test_timer`, and can therefore fail toAF // initialize. We want to be able to get the statistics even when theI // timer test fails.ċ5 let mut rng = JitterRng::new_with_timer(get_nstime);8B // 1_000_000 results are required for the NIST SP 800-90B EntropyE // Estimation SuiteJ // FIXME: this number is smaller here, otherwise the Doc-test is too slowM const ROUNDS: usize = 10_000;!? let mut deltas_variable: Vec = Vec::with_capacity(ROUNDS);B> let mut deltas_minimal: Vec = Vec::with_capacity(ROUNDS);A for _ in 0..ROUNDS {7 deltas_variable.push(rng.timer_stats(true) as u8);:7 deltas_minimal.push(rng.timer_stats(false) as u8);:,F // Write out after the statistics collection loop, to not disturb theI // test results.> File::create("jitter_rng_var.bin")?.write(&deltas_variable)?;A= File::create("jitter_rng_min.bin")?.write(&deltas_minimal)?;@, # Ok(())d # }<, # fn main() { # try_main().unwrap();ˀ<<   < ,\ 8  8  $Td   < ,D          L <  L ,  L L     \ D      L dT #TTL  dummy,D 8  8  $D 8  8  $)T 8 8  8  8  $$/TQQ Q Q  for a more B in-depth discussion. , ƓàV7 T T  ! Create a new `OsRng`.̗  ̸܂ִٯ!   D  8  8  $  D  8  8  $ &T 8 8  8  8  $ 4 8 8 8  8  8VVW TWT֌ 8  $ 3       T  ,D 8  8 8  8 8؜ 8  fill_bufD!q3       T  ,D 8  8 8  8 8 8  Da<      $      L ,      L 4      L L      L L      L L      L <$6D 6D â$Mb<:t.:::΄<ll,      L <     \ D  \ ,  \ ,  \ L  \ LL 8  8  6< number4    \ Dd% 8  8   %#$ $ % $ $ % L$ $<$ $ $ $ % \$ $D$ $ \$ $,$ $ \% %,% % \% %L% % \% %L%$& &;T&&D&&$'L''<'66Once696'L'RRURR̷W(.,.ڸ.,.|.T.ϼΊ<AX[  &)l.T//!/̸܂ִٯ! 12D2 8  8 2 $23D3 8  8 4 $45&T5 8 8  8  8 5 $5 5dQQ Q Q  Reseed the internal RNG if the number of bytes that have been A  generated exceed the threshold.#   8  8  $ = %<  $  \ %'*, D  8  8   ˨$  D  8  8   ˨$ ) T  8 8  8  8   ˨$ ($m =%<    $ t \ < Ω\^ac]_- 4  8  8Ω   $ > 8 Create a new `ReseedingRng` from the given reseeder and; < seed. This uses a default value for `generation_threshold`.? L Ω  @ Something that can be used to reseed an RNG via `ReseedingRng`.C  l  ӫ\ & use rand::{Rng, SeedableRng, StdRng};) / use rand::reseeding::{Reseeder, ReseedingRng};2  ' struct TickTockReseeder { tick: bool }* - impl Reseeder for TickTockReseeder {0 - fn reseed(&mut self, rng: &mut StdRng) {0 - let val = if self.tick {0} else {1};0  rng.reseed(&[val]);  self.tick = !self.tick;# L , | 0 let rsdr = TickTockReseeder { tick: true };3  ( let inner = StdRng::new().unwrap();+ 6 let mut rng = ReseedingRng::new(inner, 10, rsdr);9  B // this will repeat, because it gets reseeded very regularly.E ? let s: String = rng.gen_ascii_chars().take(100).collect();B  println!("{}", s); ,  < D %  "  Reseed the given RNG.̘ 4  8 8  8  8  $ c "8 % " " ˨<" !#"! 4"  8 8  8  8˨ "  ˨$" c)#" #! <#  \RQ Q R Q Q R %    D D4 ȝ cm1w11bd^`ceq 6 Randomly sample exactly `amount` values from `slice`.9  2 The values are non-repeating and in random order.5  6 This implementation uses `O(amount)` time and memory.9  ! Panics if `amount > slice.len()`$  l  ӫ\    ( let values = vec![5, 6, 1, 3, 4, 6, 7];+ ; println!("{:?}", seq::sample_slice(&mut rng, &values, 3));> < d  8 8  8˨  8%       , ˨c777?ADF l : Randomly sample exactly `amount` references from `slice`.=  6 The references are non-repeating and in random order.9  9  $  l  ӫ\    + ? println!("{:?}", seq::sample_slice_ref(&mut rng, &values, 3));B <  / 8  8˨ /;;;7;7͐±  /%      ˨c<<<AC;=@B "c ; Randomly sample exactly `amount` indices from `0..length`.>  5  9  ` This method is used internally by the slice sampling methods, but it can sometimes be useful to c C have the indices themselves so this is provided as an alternative.!F !  Panics if `amount > length`! t"  8  8˨% "  " " c@@@&(-g -  8  8˨% .  . . cSG\GeG&(4t 4  8  8˨% 4  4 4 cPPP&(tR$ The ChaCha random number generator.S'4RwLS |SlS# The ISAAC random number generator.S&,SxDT yTT T02 tTTT$ )2 M$ M  XZGIT =?,. % $  8  8˨%     ˨c'U " $  8  8˨%     ˨cU # $  8  8˨%     ˨cbV # $  8  8˨%     ˨cV  # $  8  8˨%   ˨cW  % $  8  8˨%   ˨cX  " $  8  8˨%   ˨c  fixed key of 8 zero words.  t  ӫ\  use rand::{Rng, ChaChaRng};  ( let mut ra = ChaChaRng::new_unseeded();+ ! println!("{:?}", ra.next_u32());$ $ <  F Since this equivalent to a RNG with a fixed seed, repeated executionsI G of an unseeded RNG will produce the same result. This code sample willJ  consistently produce:   - 2917185654  - 2419978656 d  « B , Sets the internal 128-bit ChaCha counter to/ , a user-provided value. This permits jumping/ = arbitrarily ahead (or backwards) in the pseudorandom stream.@  B Since the nonce words are used to extend the counter to 128 bits,E D users wishing to obtain the conventional ChaCha pseudorandom streamG ? associated with a particular nonce can call this function withB  arguments `0, desired_nonce`.!  t  ӫ\   + % ra.set_counter(0u64, 1234567890u64);(  $  $ < \  8  8  $! counter_low\! counter_highd! ** $*  8 8  8  8 *  $* * Ԯ. 4.  8  8 . $. 1 2 D2  8  8 2  $2 3- /3 4% 44  8  8 4  /$4 $4 ]8* ' Create a ChaCha generator from a seed,6* + obtained from a variable-length u32 array.6. , Only up to 8 words are used; if less than 87/ / words are used, the remaining are set to zero.72 L8  /$8 8 9+ $9  8  8˨% 9  9 9 ˨ 0L, , -repeat4 Bz  z (M Q\ M$ \   L g []JL9;D  Ժ l  L  |  , !Ұl  ! : Create an ISAAC random number generator using the default =  fixed seed.| d  ! $  8  8  $ use_rsl<                 x     x         x    ν             x    x     x         x     x                           x                                                                                                                                          h                                                  x     x                                             x     x                   x                  x                      x     x     x     <          arr    $                    G|                               | x     x                x     x                                                                                                                                                                          G        $    2         x    $    2              x    $    2                  $    2                  $    2                  $    2                  $    2                  $    2                    ,  8  8  $  D        y   $    $   2     y  4    ,    G|   ! D!  ! %  ! "   !   !  !  $!  "  "  shift,"  "  $" "  " %  " % @ " $" "  "   "  " " G" " x " "  "  ,"  " " y " " $#  #  2#  # #  $# # L#  # x # #  # #  x #  # G#  # $#  #  2#  # #  $# # L#  # # y # # H#  #  # $  y #  $ x $ $ x $  $ $$  $  2$  $ $  $$ $ L$  $ y $  $ x $ $ H$  $  $ $  y $ $ Gl$  $ y $  $ $%  %  x%  % %  $% % L%  % x %  % % D%  % )  & &   &   &  &  $&  &  &  ,&  &  $& &  & )  & ) @ & $& &  &   &  & & G& & x & &  &  ,&  & ' y ' ' $'  '  2'  ' '  $' ' L'  ' x ' '  ' '  x '  ' G'  ' $'  '  2'  ' '  $' ' L'  ' ' y ' ' H(  (  ( (  y (  ( x ( ( x (  ( $(  (  2(  ( (  $( ( L(  ( y (  ( x ( ( H(  (  ( (  y ( ( Gl(  ( y (  ( $)  )  x)  ) )  $) ) L)  ) x )  ) ) , , ,,  8  8 ,  $, - - D-  8  8 -  $- 3, /3 3% 44  8  8 4  /$4 $4 $5 :) > Create an ISAAC random number generator with a seed. This can7A ? be any length, although the maximum number of elements used is8B 7 256 and any more will be silently ignored. A generator8: > constructed with a given seed will generate the same sequence9A > of values as all other generators constructed with that seed.9A L:  /$: ; ;* $;  8  8˨% ;  ; ; ˨ > ?4 ?  8 8 8  8  8VVW TWT֌ 8 ?  $?  ? \< ,-4 Bz z(MQ\M$\Lg[]JL9;D̿d D θ  | θ #8 Create a 64-bit ISAAC random number generator using the ; default fixed seed. d θ !$ 8  8θ ʌ$<$        ,        z   0x9e3779b97f4a7c13          x   x                           x   x   x                x     x   x   x                      x  23  x   x                x   x                          x   x   x                          x              20                                17                                          <        $            Jd                    | x   x          x   x                                                                                                      G     $  2      x   $  2        x   $  2           $  2           $  2           $  2           $  2           $  2          < 8  8θ $D!4c    !    y   $    !   $   2   get_uncheckedl  ! ! ! ! ! ! ! y ! !4! ! ! ! ,!  ! ! ! Jd!  ! !""D" " ( # #  #  # # $# # # ,# # $## # ( # ( # $# # $# # #  # # # G# # x #  # # $ x # # # ,# $ $ G$ $ $ $  $$ $ $ $ $ G$  $$ $ $ G$ $ #4$ $ (> % y % %  % $% % 2% % l% % % $% % L% % x % % G% %  % $% % 2% % l% % & $% % L% & & y & & H& & & & y & & x & & x & &  & $& & 2& & get_unchecked_mut& & ' $& & L& ' y ' ' x ' ' H' ' ' ' y ' ' I' ' y ' '  ' $' ' x' ' ' ( ( $( ( L( ( x ( ((D( ) . ) )  )  ) ) $) ) ) ,) ) $)) ) . ) . ) $) ) $) ) )  ) ) ) G* * x *  * * * x * * * ,* * * G* * * *  ** * * * * G*  $* * * G* * #4* * .> + y + +  + $+ + 2+ + l+ + + $+ + L+ + x + + G+ +  + $+ + 2+ + l+ , , $, , L, , , y , , H, , , , y , , x , , x , ,  , $, , 2, , , - - $- - L- - y - - x - - H- - - - y - - I- - y - -  - $- . x. . . . . $. . L. . x . .̨1θ1,1 8  8θθ 1 $11θ2D2 8  8θ 2 $23D3 8  8θ 3 $35./θ56%46 8  8θڹ 6 /$6$6$7<+9A:B΢;:;A٣ == ˨ AθA4A 8 8 8  8θ  8VVW TWT֌ 8 A $A AdD z zMQ\M$lĎIK8:') $8 Creates a new XorShiftRng instance which is not seeded. ; H The initial values of this RNG are constants, so all generators created KE by this function will yield the same stream of random numbers. It is HI highly recommended that this is created through `SeedableRng` instead of L this function d  ĕ  D  8  8  $ *$@ Reseed an XorShiftRng. This will panic if `seed` is entirely 0.C4 8  8  $$+C Create a new XorShiftRng. This will panic if `seed` is entirely 0.FL $f+$ 8  8˨%   ˨cиvv̟vva6 A type that can be randomly generated using an `Rng`.T9U ## Built-in ImplementationsUUH This crate implements `Rand` for various primitive types. Assuming theUKK provided `Rng` is well-behaved, these implementations generate values withVN( the following ranges and distributions:V+WI * Integers (`i32`, `u32`, `isize`, `usize`, etc.): Uniformly distributedWL over all values of the type.W"I * `char`: Uniformly distributed over all Unicode scalar values, i.e. allWLA code points in the range `0...0x10_FFFF`, except for the rangeXD@ `0xD800...0xDFFF` (the surrogate code points). This includesYC# unassigned/reserved code points.Y&B * `bool`: Generates `false` or `true`, each with probability 0.5.YEG * Floating point types (`f32` and `f64`): Uniformly distributed in theZJJ half-open range `[0, 1)`. (The [`Open01`], [`Closed01`], [`Exp1`], and[MG [`StandardNormal`] wrapper types produce floating point numbers with[J( alternative ranges or distributions.)\+\ [`Open01`]: struct.Open01.html\"# [`Closed01`]: struct.Closed01.html\&5 [`Exp1`]: distributions/exponential/struct.Exp1.html]8D [`StandardNormal`]: distributions/normal/struct.StandardNormal.html]G^E The following aggregate types also implement `Rand` as long as their^H component types implement it:^!_E * Tuples and arrays: Each element of the tuple or array is generated_H6 independently, using its own `Rand` implementation._9J * `Option`: Returns `None` with probability 0.5; otherwise generates a`M$ random `T` and returns `Some(T)`.`'$a,ab%G Generates a random instance of this type using the specified source ofaJ randomness.|a$b 8  8% b bb cb "lb A random number generator.bbd Return the next random u32.bc= This rarely needs to be called directly, prefer `r.gen()` toc@ `r.next_u32()`.cDd 8  8 d$dg Return the next random u64.de: By default this is implemented in terms of `next_u32`. Ane=: implementation of this trait must provide at least one ofe=> these two methods. Similarly to `next_u32`, this rarely needsfA; to be called directly, prefer `r.gen()` to `r.next_u64()`.f>Dg 8  8 g$gr7 Return the next random f32 selected from the half-openh: interval `[0, 1)`.hh: This uses a technique described by Saito and Matsumoto ath=9 MCQMC'08. Given that the IEEE floating point numbers arei<: uniformly distributed over [1,2), we generate a number ini=8 this range and then offset it onto the range [0,1). Ourj;6 choice of bits (masking v. shifting) is arbitrary andj9: should be immaterial for high quality generators. For lowk=8 quality generators (ex. LCG), prefer bitshifting due tok;/ correlation between sequential low order bits.l2l See:DlD A PRNG specialized in double precision floating point numbers usinglG an affine transitionmmG * mJK * nNo= By default this is implemented in terms of `next_u32`, but ao@> random number generator which can generate numbers satisfyingoA= the requirements directly can overload this for performance.p@7 It is required that the return value lies in `[0, 1)`.p:q4 See `Closed01` for the closed interval `[0,1]`, andq7( `Open01` for the open interval `(0,1)`.q+Dr 8  8 r $rrTrrTrx7 Return the next random f64 selected from the half-opent:tu= By default this is implemented in terms of `next_u64`, but au@uAv@ϴv:ww7ٵw+Dx 8  8 x $xxTxxTx) Fill `dest` with random data.z!z= This has a default implementation in terms of `next_u64` andz@= `next_u32`, but should be overridden by implementations that{@8 offer a more efficient solution than just calling those{; methods repeatedly.||< This method does *not* have a requirement to bear any fixed|?> relationship to the other methods, for example, it does *not*}A; have to result in the same output as progressively filling}>> `dest` with `self.gen::()`, and any such behaviour should~A not be relied upon.~~< This method should guarantee that `dest` is entirely filled~?3 with new data, and may panic if this is impossible6? (e.g. reading past the end of a file that is being used as theB source of randomness).Àlӫ\ use rand::{thread_rng, Rng};  let mut v = [0u8; 13579];! thread_rng().fill_bytes(&mut v);$ println!("{:?}", &v[..]);쌂<T 8 8  8  8 Ȃ $͂1( Return a random value of a `Rand` type.+lӫ\ Ê let x: u32 = rng.gen(); println!("{}", x);, println!("{:?}", rng.gen::<(f64, bool)>());/<֋ 8  8  $, $35RB Return an iterator that will yield an infinite number of randomlyЌE generated items.l͍<Ս > let x = rng.gen_iter::().take(10).collect::>();A println!("{:?}", x);7 println!("{:?}", rng.gen_iter::<(f64, bool)>().take(5):5 .collect::>());ԏ8<D/ /  z c _؇׆/ $, $9;/1\6 Generate a random value in the range [`low`, `high`).9% This is a convenience wrapper around(8 `distributions::Range`. If this function will be called;? repeatedly with the same arguments, one should use `Range`, asB; that will amortize the computations that allow for perfect>3 uniformity, as they only happen on initialization.6d̔ Panics if `low >= high`.Ԕlӫ\ ̕ԕ# let n: u32 = rng.gen_range(0, 10);& println!("{}", n);0 let m: f64 = rng.gen_range(-40.0f64, 1.3e5f64);3 println!("{}", m);<L 8  8 Ǘ T5\, $̗T[XVXA+ Return a bool with a 1 in n chance of true.ləӫ\љ * println!("{}", rng.gen_weighted_bool(3));-< 8  8 , $RB Return an iterator of random characters from the set A-Z,a-z,0-9.ElϜӫ\ל C let s: String = thread_rng().gen_ascii_chars().take(10).collect();F println!("{}", s);ߝ<|/ /  { c֛Dž/,Ӟ $#%O' Return a random element from `values`.*$ Return `None` if `values` is empty.Ÿ'l< $ let choices = [1, 2, 4, 8, 16, 32];ɠ'( println!("{:?}", rng.choose(&choices));+- assert_eq!(rng.choose(&choices[..0]), None);ɡ0<4/ 8  8 /h / ,Ԣ $W79-/[< Return a mutable pointer to a random element from `values`.?'T/ 8  8 /h / , $79-/<" Shuffle a mutable slice in place.% This applies Durstenfeld's algorithm for the [Fisher–Yates shuffle](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm)( which produces an unbiased permutation.Ĩ+lӫ\ ˩ө let mut y = [1, 2, 3]; rng.shuffle(&mut y);Ė println!("{:?}", y);ijЪ<< 8 8  8  8  ,ͫ $)+2/% 욮D 8  8  /$D 8  8  /$쨯D 8  8  /$D 8  8  /$)T 8 8  8  8 İ /$ɰl+   < ,%˱ ձDر 8  8  ˨$윲D 8  8  ˨$D 8  8  ˨$쪳D 8  8  ˨$)T 8 8  8  8  ˨$a:/%  $ȝ.024L׷$ܷ$ 8  8  /$3/% L$Ȼ"$˻ 8  8 л /$ջ* ھ C A random number generator that can be explicitly seeded to produceF. the same stream of randomness multiple times.1\QQ$-3)+# Reseed an RNG with the given seed.&lƿӫ\ο޿) let seed: &[_] = &[1, 2, 3, 4];#4 let mut rng: StdRng = SeedableRng::from_seed(seed);7" println!("{}", rng.gen::());% rng.reseed(&[5, 6, 7, 8]);%<4 8  8  $$!& Create a new RNG with the given seed.)lӫ\)#7%<L $\"/ Create a randomly seeded instance of `StdRng`.25 This is a very expensive operation as it has to read88 randomness from the operating system and use this in an;? expensive seeding operation. If one is only generating a smallB? number of random numbers, or doesn't need the utmost speed forBA generating each number, `thread_rng` and/or `random` may be moreD appropriate.> Reading the randomness from the OS may fail, and any error isA. propagated via the `io::Result` return value.1   < ,̸܂ִٯ! D 8  8  $D 8  8  $,/'4 8  8  /$$)L /$ I Create a weak random number generator with a default algorithm and seed.LK It returns the fastest `Rng` algorithm currently available in Rust withoutNJ consideration for cryptography or security. If you require a specificallyMI seeded `Rng` for consistency over time you should pick one algorithm andL create the `Rng` yourself.> This will seed the generator with randomness from thread_rng.A   < ,D 6   < ,&4 8 8  8  8  $c&   < ,܁   < ,t ; Retrieve the lazily-initialized thread-local random number>? generator, seeded by the system. Intended to be used in methodB2 chaining style, e.g. `thread_rng().gen::()`.5L After generating a certain amount of randomness, the RNG will reseed itselfOL from the operating system or, if the operating system RNG returns an error,O) a seed based on the current system time.,C The internal RNG used is platform and architecture dependent, evenFB if the operating system random number generator is rigged to giveE? the same sequence always. If absolute consistency is required,B; explicitly select an RNG, e.g. `IsaacRng` or `Isaac64Rng`.>   < ,T    < ,D 8  8  $D 8  8  $*T 8 8  8  8  $ώ-I Generates a random value using the thread-local random number generator.LK `random()` can generate various types of random things, and so may requireN5 type hinting to generate the specific type you want.8H This function uses the thread local random number generator. This meansKG that if you're calling `random()` in a loop, caching the generator canJ1 increase performance. An example is shown below.4t< let x = rand::random::();! let y = rand::random::();" println!("{}", y);+ if rand::random() { // generates a boolean.) println!("Better lucky than good!");,,<2 Caching the thread local random number generator:5< let mut v = vec![1, 2, 3]; for x in v.iter_mut() {ܞ *x = rand::random()ܺ,, // can be made faster by caching thread_rng/%ܾ *x = rng.gen();,<   < ,4 ¦$ ~, DEPRECATED: use `seq::sample_iter` instead./@ Randomly sample up to `amount` elements from a finite iterator.C3 The order of elements in the sample is not random.6lӫ\ use rand::{thread_rng, sample};#* let sample = sample(&mut rng, 1..100, 5);-<   < ,T   , 0.4.0<   $ renamed to seq::sample_iter@4˥ 8  8>%    4ȝ cgdbZ\^`bd , Sample values uniformly between two bounds./C This gives a uniform distribution (assuming the RNG used to sampleF@ it is itself uniform & the `SampleRange` implementation for theC> given type is correct), even for edge cases like `low = 0u8`,A@ `high = 170u8`, for which a naive modulo operation would returnCB numbers less than 85 with double the probability to those greaterE than 85.d; Types should attempt to sample in `[low, high)`, i.e., not>: including `high`, but this may be very difficult. All the=C primitive integer types satisfy this property, and the float types F= normally satisfy it, but rounding may mean `high` can occur. @ l  ӫ\  8 | ) let between = Range::new(10, 10000); , ) let mut sum = 0;ā  for _ in 0..1000 {Ԛ - sum += between.ind_sample(&mut rng); 0L  println!("{}", sum); , < , % şF"$4  $D , $t \ $eeeey%eee 8  8  ,     z%`Btwffff{%Wfff 8 8 8  8  8VVW TWT֌ 8  , f5x Too!;`! 8 8  8  8˨%!!! ˨ercsr$&5x TMuWu!;`! 8 8  8  8˨%!!! ˨xc"x$&5x Tz{!;`! 8 8  8  8˨%!!! ˨}c}$&5x T!;`! 8 8  8  8˨%!!! ˨c$&5x Tpz!;`! 8 8  8  8˨%!!! ˨@cK$& 5xؗ T!;`! 8 8  8ؗ  8˨%!!! ˨c$& 5x T;E!;`! 8 8  8  8˨%!!! ˨{c$&   5x  Tє۔ !;` ! 8 8  8  8˨% ! ! ! ˨c$&! !5x! Tmw!!;`!! 8 8  8  8˨%!!!!!! ˨c$&" "5x" T "!;`"! 8 8  8  8˨%"!"!"! ˨Sc^$&#)#*5x#* T#* #*#,;`#, 8 8  8  8˨%#,#,#, ˨c$&$)$*5x$* T$* $*$,;`$, 8 8  8  8˨%$,$,$, ˨:cE$& ; The Gamma distribution `Gamma(shape, scale)` distribution.>- The density function of this distribution is0\2 f(x) = x^(k - 1) * exp(-x / θ) / (Γ(k) * θ^k)5<C where `Γ` is the Gamma function, `k` is the shape and `θ` is theF3 scale and both `k` and `θ` are strictly positive.6C The algorithm used is that described by Marsaglia & Tsang 2000[1],FA falling back to directly sampling from an Exponential for `shapeD= == 1`, and using the boosting technique described in [1] for @ `shape < 1`.  l  ӫ\ 5 use rand::distributions::{IndependentSample, Gamma}; 8 " let gamma = Gamma::new(2.0, 5.0); %3 let v = gamma.ind_sample(&mut rand::thread_rng()); 66 println!("{} is from a Gamma(2, 5) distribution", v); 9<  @ [1]: George Marsaglia and Wai Wan Tsang. 2000. "A Simple Method C@ for Generating Gamma Variables" *ACM Trans. Math. Softw.* 26, 3 C (September 2000), O 363-372. DOI:[10.1145/358407.358414](http://doi.acm.org/10.1145/358407.358414) R, ŗ>|$;~ 8  8%  ,  &    8 8 8  8  8VVW TWT֌ 8'  , tL;'-; FJ;|;; #;;; ;|;888888 8  8( , )   8 8 8  8  8VVW TWT֌ 8* ,|;覻+tL;\; 8  8+ , ,   8 8 8  8  8VVW TWT֌ 8- ,|;Ͻ۲$T,;4 ;4 ;ŪŪŪŪŪŪ 8  8. , /  !!!!!! 8 8 8  8  8VVW TWT֌ 80 ,!/D The chi-squared distribution `χ²(k)`, where `k` is the degrees of+G freedom.d++B For `k > 0` integral, this distribution is the sum of the squares+E? of `k` independent standard normal random variables. For other,B/ `k`, this uses the equivalent characterisation,2 `χ²(k) = Gamma(k/2, 2)`.--l--ӫ\-: use rand::distributions::{ChiSquared, IndependentSample};-=.! let chi = ChiSquared::new(11.0);.$1 let v = chi.ind_sample(&mut rand::thread_rng());.42 println!("{} is from a χ²(11) distribution", v)/50 ,0=% The Fisher F distribution `F(m, n)`.9(:? This distribution is equivalent to the ratio of two normalised:B< chi-squared distributions, that is, `F(m,n) = (χ²(m)/m) /:? (χ²(n)/n)`.;;l;;ӫ\;7 use rand::distributions::{FisherF, IndependentSample};;:;! let f = FisherF::new(2.0, 32.0);;$/ let v = f.ind_sample(&mut rand::thread_rng());<23 println!("{} is from an F(2, 32) distribution", v)<6<=<=Ѭ=,=;=,=;t>L>; 8  8C= ,= D=  yyyyyy 8 8 8  8  8VVW TWT֌ 8E= ,=yGB The Student t distribution, `t(nu)`, where `nu` is the degrees ofDEdEElEEӫ\E8 use rand::distributions::{StudentT, IndependentSample};E;F let t = StudentT::new(11.0);F / let v = t.ind_sample(&mut rand::thread_rng());F2/ println!("{} is from a t(11) distribution", v)F2 Implemented via the ZIGNOR variant[1] of the Ziggurat method.A@ [1]: Jurgen A. Doornik (2005). [*An Improved Ziggurat Method toC Generate Normal RandomԚB Samples*](http://www.doornik.com/research/ziggurat.pdf). NuffieldE College, Oxfordlӫ\1 use rand::distributions::normal::StandardNormal;4( let StandardNormal(x) = rand::random();+ < t 뿀ÀwL7 <  8  8U  ,  V   VVVVVV 8 8 8  8  8VVW TWT֌ 8W  , Vʌ/ The normal distribution `N(mean, std_dev**2)`.29 This uses the ZIGNOR variant of the Ziggurat method, see<# `StandardNormal` for more details.&lӫ\6 use rand::distributions::{Normal, IndependentSample};9 // mean 2, standard deviation 3#$ let normal = Normal::new(2.0, 3.0);'4 let v = normal.ind_sample(&mut rand::thread_rng());71 println!("{} is from a N(2, 9) distribution", v)4<4ӨkL$vd<v%%%%%% 8  8X , Y   8 8 8  8  8VVW TWT֌ 8Z ,Ѥ 6 The log-normal distribution `ln N(mean, std_dev**2)`.9; If `X` is log-normal distributed, then `ln(X)` is `N(mean,> std_dev**2)` distributed.lӫ\9 use rand::distributions::{LogNormal, IndependentSample};<#+ let log_normal = LogNormal::new(2.0, 3.0);.8 let v = log_normal.ind_sample(&mut rand::thread_rng());;5 println!("{} is from an ln N(2, 9) distribution", v) 8< !L ίpd $ v 8  8_  ,  `   ~~~~~~ 8 8 8  8  8VVW TWT֌ 8a  , ~= A wrapper around an `f64` to generate Exp(1) random numbers.@4 See `Exp` for the general exponential distribution.7B Implemented via the ZIGNOR variant[1] of the Ziggurat method. TheEB exact description in the paper was adjusted to use tables for theE- exponential distribution rather than normal.0C݈Eˉlӫ\, use rand::distributions::exponential::Exp1;/  let Exp1(x) = rand::random(); ! < #$ Ѡϑ;Ѡ7Ѡ < Ѡ 8  8ѠѠf  ,  g   Ѡ    Ѡ   8 8 8  8Ѡ  8VVW TWT֌ 8h  ,  t, The exponential distribution `Exp(lambda)`./9 This distribution has density function: `f(x) = lambda *< exp(-lambda * x)` for `x > 0`."lӫ\3 use rand::distributions::{Exp, IndependentSample};6 let exp = Exp::new(2.0);1 let v = exp.ind_sample(&mut rand::thread_rng());41 println!("{} is from a Exp(2) distribution", v);4<$t 8  8i , j         8 8 8  8  8VVW TWT֌ 8k , = A wrapper for generating types that implement `Rand` via the@' `Sample` & `IndependentSample` traits.*&T%批؛!)<%}W吢 8 8 8  8  8VVW TWT֌ 8p ,崤@ A value with a particular weight for use with `WeightedChoice`.C'D ښN "|" The numerical weight of this item%4\( The actual item which is being weighted+$ q  B 7777K7be77 8  8r ,W 8 8 8  8  8VVW TWT֌ 8s , #H A distribution that selects from a finite collection of weighted items.KA Each item has an associated weight that influences how likely itD/ is to be chosen: higher weight is more likely.2< The `Clone` restriction is a limitation of the `Sample` and?D `IndependentSample` traits. Note that `&T` is (cheaply) `Clone` forGB all `T`, as is `u32`, so one can store references or indices intoE another vector.lӫ\H use rand::distributions::{Weighted, WeightedChoice, IndependentSample};K8 let mut items = vec!(Weighted { weight: 2, item: 'a' },;8 Weighted { weight: 4, item: 'b' },;9 Weighted { weight: 1, item: 'c' });<* let wc = WeightedChoice::new(&mut items);-% for _ in 0..16 {< // on average prints 'a' 4 times, 'b' 8 and 'c' twice.?. println!("{}", wc.ind_sample(&mut rng));1,<(t / /  ԣ >@7,  d /Wԣ 8 8 8  8ԣ  8VVW TWT֌ 8t  /, 뜇1 An error that can occur when `test_timer` fails.4-Tӥֱw< No timer available.-$ӥ8:ӥ\. Timer too coarse to use as an entropy source.1-?ӥSUӥd' Timer is not monotonically increasing.*-8ӥLNӥ|( Variations of deltas of time too small.+-9ӥMOӥd6 Too many stuck results (indicating no added entropy).9-Gӥ[]ӥ|   4t--ӥACӥ[[[[ӥ[[ 8 8 8  8ӥ  8VVW TWT֌ 8 ,[@ @ @ @ ӥ@ @  8  8ӥӥ ,N N N N ӥN N N N ӥN N  8 8  8ӥ  8ӥ L N + + + + ӥ+ + + + +  + + +  8  8ӥ A An RNG that reads random bytes straight from a `Read`. This willD= work best with an infinite reader, but this is not required.@dE It will panic if it there is insufficient data to fulfill a request.Hlӫ\ use rand::{read, Rng};) let data = vec![1, 2, 3, 4, 5, 6, 7, 8];,- let mut rng = read::ReadRng::new(&data[..]);0$ println!("{:x}", rng.gen::());'<4<% ‘!L4˨XXXX%W˨XXX 8 8 8  8  8VVW TWT֌ 8 ˨,X C A wrapper around any RNG which reseeds the underlying RNG after itF 0 has generated a certain number of random bytes.3 6d %<  $ կ٢і8,.134  ˨   |  / Controls the behaviour when reseeding the RNG.2 D %<43W[^be 8 8 8  8  8VVW TWT֌ 8  ˨, ! : Reseed an RNG using a `Default` instance. This reseeds by = @ replacing the RNG with the result of a `Default::default` call.!C 7" 0)(((((( 8  8!  ,! !  S(S(S(S(S(S( 8 8 8  8  8VVW TWT֌ 8!  ,! S( =t M/M/{/ {1/ |6/ |K/     0 @ [(  =# Ԇ5   3 /   8  8˨%   ˨cL\ "ȫ =+   8  8˨%   ˨c4] "ث =-   8  8˨%   ˨c\^ " >t M 2M#2{&2 {;2 |@2 |U2     0 @ j_(  ># Ԇ5   3 /   8  8˨%   ˨c` "Ȭ >+   8  8˨%   ˨c` "ج >-   8  8˨%   ˨cb "$Q ?f )  % %4 %  8  8%% % % e%'$Q @ff )  )  % 24.0%4 %  8  8%% % ȝ% f)+$Q Affj )  )  )  %  @BEGAC%4 %  8  8%% % % h57$Q Bffjg )  )  ) Ю )  %  ЮŮNPSUXZTV%4 %  8  8Ů%% % % Юi9;$Q Cffjgh  )  *  *  *  *  %  $ݮ\^acfhkmgi%4 %  8  8ݮ%% % % Юk=?$Q Dffjghh  *  *  *  *  *  *  %  *jloqtvy{~z|%4 %  8  8%% % % ЮmAC$Q Effjghhi *  *  *  *  *  *  *  %  "0xz}%4 %  8  8%% % % Ю~pEG$Q Fffjghhij *  *  *  *  *  *  * ί *  %  "ɂ(ί6%4 %  8  8%% % %  ЮίjsIK$Q G ffjghhij>  *  *  +  +  +  +  +  +  +  %  "ɂ(.<ۯ%4 %  8  8ۯ %  % % %  ЮίvMO$Q H ffjghhij>k    +  +  +  +  +  +  +  +  +  +  %  "ɂ(.4B%4 %  8  8 %  % % %  ЮίAzQS$Q I ffjghhij>k l     +  +  +  +  +  +  +  +  +  + ̰ +  %  "ɂ(.4:̰H%4 %  8  8 %  % % %  Юί̰,~UW$Q J ffjghhij>k l m      +  +  +  ,  ,  ,  ,  ,  ,  ,  ,  ,  %  "ɂ(.4:@Nٰ%4 %  8  8ٰ %  % % %  Юί̰lY[-& K- ¦ - -( -  8  8%- - - %'-& - ¦ - -( -  8  8%- - - %'-& - ¦ - -( -  8  8%- - - _%'-& - ¦ - -( -  8  8%- - - %'-& - ¦ - -( -  8  8%- - - o%'-& - ¦ - Դ -( -  8  8 %  - - - "%'-&   - ¦ - ô -( -  8  8  %  -  - - 62%'-&   - ¦ -  y-( -  8  8  %  -  - - B%'y-&   - ¦ -  p-( -  8  8  %  -  - - R%'p-&   - ¦ -  g-( -  8  8  %  -  - - c%'g-&   - ¦ -  ^-( -  8  8  %  -  - - u%'^-&   - ¦ -  U-( -  8  8  %  -  - - %'U-&   - ¦ - ݳ L-( -  8  8  %  -  - - =%'L-&   - ¦ - ̳ C-( -  8  8  %  -  - - Bm%'C-&   - ¦ -  :-( -  8  8  %  -  - - Y%':-&   - ¦ -  1-( -  8  8  %  -  - - ?E%'1-&   - ¦ -  (-( -  8  8  %  -  - - 70%'(-&   - ¦ -  -( -  8  8  %  -  - - %'-&   - ¦ -  -( -  8  8  %  -  - - %'-&   - ¦ -   -( -  8  8  %  -  - - %' -&   - ¦ - ղ -( -  8  8  %  -  - - A%'-&   - ¦ - IJ -( -  8  8  %  -  - - μ%'-&   - ¦ -  -( -  8  8  %  -  - - %'-&   - ¦ -  -( -  8  8  %  -  - - ۉ%'-&   - ¦ -  -( -  8  8  %  -  - - p%'-&   - ¦ -  ׃-( -  8  8  %  -  - - UW%'׃-&   - ¦ -  ΃-( -  8  8  %  -  - - @=%'΃-&   - ¦ - ޱ Ń-( -  8  8  %  -  - - "%'Ń-&   - ¦ - ͱ -( -  8  8  %  -  - - :%'-&   - ¦ -  -( -  8  8  %  -  - - F%'-&   - ¦ -  -( -  8  8  %  -  - - %'-&   - ¦ -  -( -  8  8  %  -  - - z%'/   /    /( /  8  8  %  /  / / %' @ A random number generator that uses the ChaCha20 algorithm [1].C  8 The ChaCha algorithm is widely accepted as suitable for; = cryptographic purposes, but this implementation has not been@ A verified as such. Prefer a generator like `OsRng` that defers toD 8 the operating system for cases that need high security.;  - [1]: D. J. Bernstein, [*ChaCha, a variant of0 ' Salsa20*](http://cr.yp.to/chacha.html) * LL Ųϳ$ 4    ܽ ,    t ,        8  8   , (26< SW 8 8 8  8  8VVW TWT֌ 8   ,  < A random number generator that uses the ISAAC algorithm[1].?  : The ISAAC algorithm is generally accepted as suitable for= ; cryptographic purposes, but this implementation has not be> D ;  > [1]: Bob Jenkins, [*ISAAC: A fast cryptographic random numberA @ generator*](http://www.burtleburtle.net/bob/rand/isaacafa.html) C ND  D    ܽ     <      4   4   4                   < A random number generator that uses ISAAC-64[1], the 64-bit? variant of the ISAAC algorithm.#=>D;A CYT θㅠ T    ğ     Ľ     Q4    4    4       θ           An Xorshift[1] random number  generator.tB The Xorshift algorithm is not suitable for cryptographic purposesE@ but is very fast. If you do not know for sure that it fits yourCC requirements, use a more secure one such as `IsaacRng` or `OsRng`.F/ [1]: Marsaglia, George (July 2003). ["Xorshift2< RNGs"](http://www.jstatsoft.org/v08/i14/paper). *Journal of?* Statistical Software*. Vol. 8 (Issue 14).-l\ޞ嫥 L   L   L   L     #'8 8  , Դش888 8 8VVW TWT֌8  ,$     $     !7 Iterator which will generate a stream of random items.ȴ:A This iterator is created via the [`gen_iter`] method on [`Rng`].D̵- [`gen_iter`]: trait.Rng.html#method.gen_iterе0 [`Rng`]: trait.Rng.html܁pL/  %    Ƕ ʶ/̶tֶ؇׆ öKMOQ Fֶ  /'<  /  %    W ,/25 JN888 8 8VVW TWT֌8  /,#C Iterator which will continuously generate random ascii characters.FH This iterator is created via the [`gen_ascii_chars`] method on [`Rng`].Kʹ; [`gen_ascii_chars`]: trait.Rng.html#method.gen_ascii_charsι>܍qtź/ %    غ/ںՈt֛Dž Ժ@B 7  Î/ %  WՈ  &*888 8 8VVW TWT֌8  /,vA A wrapper for generating floating point numbers uniformly in theD7 open interval `(0,1)` (not including either endpoint).:@ Use `Closed01` for the closed interval `[0,1]`, and the defaultC< `Rand` implementation for `f32` and `f64` for the half-open? `[0,1)`.dlӫ\ use rand::{random, Open01};+ let Open01(val) = random::>();.% println!("f32 from (0,1): {}", val);(<r4h   ɽ ɽmx\ɽ  hj,  h  WƎɽ ܎888 8ɽ 8VVW TWT֌8  ,KyD4 closed interval `[0,1]` (including both endpoints).7> Use `Open01` for the closed interval `(0,1)`, and the defaultA; `Rand` implementation of `f32` and `f64` for the half-open>dlӫ\ use rand::{random, Closed01};!/ let Closed01(val) = random::>();2% println!("f32 from [0,1]: {}", val);(<sDh   ֧ٞ l{S  hj,  h  G ]a888 8 8VVW TWT֌8  ,B The standard RNG. This is designed to be efficient on the currentE platform.lt4ۖ   θ    8 8  ,  )-888 8 8VVW TWT֌8  ,ߒ   < ,uʆ͵G q+    +/888 8 8VVW TWT֌8  , The thread-local RNG.̍   < ,wL    Q[_e |8 8  ,Q[_e |888 8 8VVW TWT֌8  ,2!.ytˈy1y     1y      ȋ;yy``Storage``•ڠ1y      ܋:yy````•ڠS =R N ? 0? > != "M= $< &P; 6: 729 C8 C77 K6 K44j2 1 10 $/ %-.-+ $+     5 ,B - B^ L L;lo},* `  L%  n 5ĺa t Դ  `  " Ť    #$nܙJ&xӎqFmu  oco * on/n|laRI)IHF=<;:987655 43210"/2.*))' g$FLʤȣum4: 8 > [*FHJ^fn3:https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffletrait.Rng.html/http://en.wikipedia.org/wiki/Monty_Hall_problemO\Nstruct.Open01.html^struct.Closed01.html*distributions/exponential/struct.Exp1.html/distributions/normal/struct.StandardNormal.html| on crates.ioM{ Fisher–Yates shufflehttps://crates.io/crates/randѾO\N^ÿܿM|{\ѾON^ÿM| ܿ{ 10.1145/358407.358414(http://doi.acm.org/10.1145/358407.358414 ;An Improved Ziggurat Method toGenerate Normal RandomSamples,http://www.doornik.com/research/ziggurat.pdf  Jitterentropyhttp://www.chronox.de/jent.html(NIST SP 800-90B Entropy Estimation Suite ChaCha, a variant ofSalsa20http://cr.yp.to/chacha.html 2http://www.burtleburtle.net/bob/rand/isaacafa.html2ISAAC: A fast cryptographic random numbergenerator  “XorshiftRNGs”&http://www.jstatsoft.org/v08/i14/paper>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789>xhcH+ّ}3;c*9bV-i3ە GlG=X@s'ǠL0RҜoiblF,Wa6C</C2RL4.%wx^J:\qPEݲr^hnG|AiI`a.hdqQt^ȑp,dU-[s+d4u;c|5]7#O-"n=VS6 #=D(hp2FW[M¶_:>R: >+.ohg>{֛z:(呲AVC2N^4C$R\K7DE)Ϳ h(O\ϓ#\:g)1__Y4a;&1vviGBVق6Xc&lMC SimUA&e&Q 3v#3#\m&E{t6?]-hǢj'6h軁 P׃ݚvt&|fv!T 3nup6€!]&[e\ꬸS$Lf38gpfm>Ƀpj2tѲ5q!`-JRe\#C-+JceKS3iYGYف4?}gp]ǹGVR5FHA$L!%1ԼNlk|MG1FPT}?eH?m-~\>RxO#h _{gHaTẀRbT+"!? j_W ]=/u.WɍWS{6-GPJzT.I8!E?< ?j4->7[ΈJI36  b3+x^{wsx'-kl4Ɓ5Re@jC [6ߥKbE3uʅR`(U荃oϫ|!z˛ǡ'%"2;vT_ot_טRs%#"3mB,LO(:3L4_cO-6On?&\Y/rt~|wm߱`{wB {0#Q ɮk{گOA :ѵP8C}F@#^J"K¶vYaO ;eV 'Ap־ ƾԤQ!p45n$Hj/'Ϥ6Y,e4g9Zg`r+he@ 8ڙ}މd:-*NC ,k}\@<#8ghGqy׳?, /{dYW=@LK|t93 T/m !w==]lMnT>ppiO2q=p >I ~Y~[TPJYNj XʘhNπ]X *Ҏ)Daq57м:--*DS"KB0K(EԵYa  p G@rƋ}8M”""CPXxDBwt5e~J\H o9 ǯ ٚe>J-n/T5ԍf}h lgyБajg+ΎtP͛6p"N9BrFpc_ِ( XIܗTZw?=sFK]ôpc`BH-=) #@靕t-cCF+[_C̰yo* GGA~#E%1`x<%:9nrrGQiöA ndfX-gWGjfA%)Fq4Y`yP58KɬCZOKM&X$! Ifj0Ł۱yrt! 0&sUu 9.@99&5v&+VdDŋ$TOCZ. \*hR* S OzdoeD7gOU]7g|TMC6>Ø3j!+򳑆:rX#S†JCkC 6bW9Vk#kҥvGA\HPЧlq)F9Z6H_|+iFGh {*b'>mȡbdbbA( %9ƥ9k i̧D+EL1fm>9:Eg I&USa9J)43j2W(܅˗ǔ'G.T7Bw7fMϫ%sXySBRls' !){GK$;E}B4 1]b'}'v6[j[YlX\b#z* \!#q |6̾;#VR%Q|%CKx1q ExX^sj|{lyD|b[!Oю)6Wq=+2榬ME_"S8{j)ZJ{^)[~)Ky.gPkP[cQ>|B~ʔUԜف%5nⴵx|E?xŻ+(13^8~ H˨s/6%\vd$ח"4 @5DG,g04ÑAEiUx`Y^+rYʩk[64 QF+9,9M8!]x f톑[ܵwi8uL+^د I/@vp6 @Y_: ]WV$sVg`|J#m鎈N_\(t\IW mg|=[Q3^'ʩ9xm Z25׉!F0[L_(٣,Lb/*.g3,Ě!šE\s,[Lё+EGq;т $'Ҍ 2dZU N0fSÁ gZ[f9-kI$AfR9!ʻ f{e`Z!?-ٶH|s^5dXuH $ XLL@lQcou$.-89Lw%Oa (k~L-hlh>a,7qa]e(8?HY5UT  ` c$D0 /Z%'R!\U gw+2aƠ"Dv7Ϩ59YKRVk_ RKl_M)*~6*p)YPB<[kއjw>NK˷icraCH[?dg$ H=W1R!,l2Zs`cCMDFj;Fau/C1b;=kcj5_͢vNRݘ|q͕0 %sF,=*\@bKKoﶙ^' `1a QBWoc!q7r᜚H-J-t1Dh =>~Is{<_Yq%Z\%8J1>,ouH^fG}2Х;ZsZ24$1uM쓭uR=avx֚W{GO:@bZ4`<pNI#=C1  |uJW!ZFu|VaJSdc sr:UR/-F5{.1bIq }jsQ\~wDX~LIܜ"<6(;"iy7(eΙ6Xq3Xݦ?Y_6n:gcٰ/u4v-isR owmCp{-Z 9hzs;@~5Io#WTO՘o-y K5'n]iH(Y7>DH!^[d*|Wfa9V=!6.@Hh66᷍1hh{Bˍ20,\pJ=#Xza[s*q$ KžQ,clMdI/'zxMaв Qo o|ֿ{ISDw^l?n=_8 Z$ 'pḣ!ja縈}*9RfpFڞorhi՘ }S 8O鳁$w*#k:2yh+ e]D9簳41L†gJ R\EP 2AIňR5cI:d;zX M䋪!T_La%:?p0ɹuuIm6dǟUsf(/O7l<́!^,ynWXa՘ UAfLW8@Askm 鼝Ƃ|~VAo' ղt7g\S3. - պEC_õ"6pe1iޓ)FKZ,Y!3QMW@ EVGgx#cHϸ%4x(M{Pu%&[qKf)OOhUe;գ+R]țUҪ , bڡ=;e1qa᳾qA_)>v#ƅ3sF$ZFTAl0,?\ei,pO 8dE[xr[6@m h؍>Sz#!L{"-jJ}WbHj+ʚDolnԗgdp LL_ simSR,&?S?ȯV`~k8e[LJ+ِRzvĕ>'/^T»򢎕C 1r Pq-.y&/][дC  #H)2S%Zu".q1Ts?xk")jAd]Z2G$K7@ezjZg݊蜁l!O/kݔ9yr\E R]R`@'i4&g*YF<2 q2;bQ&Kx,٠j@j a`nZf=YzDC1]!=t 4hs/V= QRtL hm\ڃ8çF&6 %ZFR]~h\W:Hh rJL&P$(3Q/T.QB +(6MgCJ@j+-6d xa'p&=}K[W8~UpJN Y+Y> )g6|VP=+Yw}XHWl <{e8H|AL!&W dCh!9ɒD4Ѵ񟘫 U+xE;6,kώ2reDb5 _O(& /?gO!E-E)8,18LY&*ʹYx AԴیفsg~F-cnzzkjomW<Ԧ_ l4HSxQ L`=i/&Tgle|? O!b$u'qWXڰbODtQr8weٮCJ^wz ]#hڢI"b`lՑn4o`=VΰKsF6z-FDG=Xyɧ`Iϊ.+/`xlrL5 S7F.eM?L >Ù%t7cz@XwZpּ~ji#Bŀ ri7xg2K˽(kcu./R9&=c ؍TA!SoLYξD!`2{Rq\N @7]m5 ہ\<ŽRd+t{/iM(w.< Pz'MbX9$4? k0̴&u:be:Ct)o*q&D?9]: 0!vA9mE&Qha̡Waוc\-wLhHYY+T-'qly&"+l k 2_8Ж+gI&&0:( f*Iv}ugcF3:GylwMJ :~5`K'2%DyB Cլ3m4QOuEFGOݰ+_ 2\qu'Җ3kU\79rSJ Q VsPb{P ƑzQ&l?] Ž>.Sv0[cQox:HBZIʞh@E Z31mH/(H qG1w@6ʅL+9񔳙n܄ղ|e|Ӡr#Q'O+(ߛ1\Y$G9h[|}crxÝrL5$^T390V%1\yL'+ &8c*4Լ -q+=Y} f"2ҴF8;S4lL'!gIu؞n[=E`"/leĖ$DPVx 7A~{n D,s+r.C%xr? dA ØմlÛ&~?xQJMkZhd;њanm^}>l:FEy8jz Xzdd]ŨVU9^}rC rlҾɵ26nO;[{ +_@D|3u쎯:p8ݶыe`&g|ZW~S#t0r^<B1sFV]y zpLŔGt*If Ǫ'VQ0!<.o(SA䉻^tb8 vwx,HwƩ/^Rn&)ZyqIl˓ׄY^댜J c\M33V+r5/SA[wB|2{ML[}6=2 |GT ~AS?'ս+$nzƇwŪe^0r$JB!UbTwHh\;w%eųC.2$[B 1xTS.e)!{XYo* Dh xkSFdf9k!fZfwEI۴X̨H8u"շ¹_ l"jTϦ u׾L;JAOv#G*|~yVet8}'z dШV2JvH= nq:3,BEwR﫛}[:ː>5%P?=·JZn1pxTor;Q+횶Ј+b-IH(rt)fOg[*’.pykJl?~ç\}(Wnz.\Vꓝ$ٕ;kgY v[ءD7xUǽe1-mjvw'T|[k9_NA8` #[cwо2IUC?ĭŠb=0,)LXIxMҿ"%K)G#}|DGj'Rid #h=qctvqUT((3!mwtb2(q-%U7u'dZPN4~?'>(jıXMpwNzFMWi}U! Pm >ݸ{\+Q&TG. .<$ZIޏLD.;aq-oM?u|m ӯZY4&7Uרy[ yV? 7 Fb*>LuZXxDhC}`jrufu,x "`(S 3'g6SD>D\gn2e("ˑTC.JlFVYЂαL~Ź~xYL΍UJMmX, kP}? M8*=^^ /!P^jR5:/i N< 9G|O ˮȰ"!l=o8 [XbGOi$ >Tpx#|>ti(ſO$} zh7J~d̀%5]}JT/m|u]hDJ.uuӅ{@26 "^'5=>\ x¨c]ʃb﵅\/^"  6fҬ5cIfvs>|)}@ۗ&1;qPG^ qo}Xƭ egbw&QC%SuS+.x^GPCw::~|z0DzDyx\+y,},M8qEKmk;>ͯ3 k$e'Daɣ יڍk䘒%eʸ4ARWjɘ?;rL (B%^ŭmIK(ƔdT}֋_`#o4yɸd81{Y}st'EKcqٲqC*qb,x'<섁([> Xl8"1q-Zsؠ]tRrqOȄ`Q!u#D@34쾚TN[ S93fa;P+"?`$a3RR8FZu/|l -nlK)# k T9M;zVt( Y|ECixF׶FF>ħM&t?Vj3U4ܙ"{Eλ tl=- "9[ZӽG0B4Hxj%{5k9nWBDx:C= G Cji١1|ءÔURhthMЯv<╉ּAQcԲ%o,Z`}S& -02K^`z{} +VjMjZ#S26S RR&II@#%H *4S)=@-ZvX]MHҠ;ٽ\,\3zKs%/LQs陛EtRwJggXE, )As'P8}W107v=r!xGwHܠv;A-SUs@We@YXFFv>7{#Ld_0c*cMb,JPXaL^ll2vyA'-B ihaL$VZf S6 !XؾvȄ!Obq Qu5n+ 42VgQ0C}8`>? SEkP3z[6%nA@GK ,@k ~Tt3*%vJSôB 偳]P65LKTWmdz)},Bf|)}+l  !:!!!""v##*$A$%-%%%&''2(g((())[*r*+c+++3<2<uDLhMNOPP+QQQrRRXSSS3TUUUVVVXWY,YeZzZZZ^^^_*_E_`_{____``aaabzbcCcR eLgijvjjk}klhlllnnnoJ\oZD(~ #|Sm~LanNX'qJVpz9TB8Ng-V_vd / ;Qm8Nj&;P9ql Wt`EGbQj(<  \rSd{o%%&y&<'-Y5566<677<AAB*B{BBB\CCBDYDDDE=FTFGGJHqH'IIIx JQR<STU_[s[ [\\\ aPce i jpln9pr%sssHtt)uu vevvwwx8xxxyyyy zZ |M}e }Es% q= Sp8+K,/D]G`JcMfPiSlVoYr\u_xb{ioRl-T2<cGa{>$>Xq 40Ry.z/V+R E`y<C#vt-Ov+rp`z=2s$:KQ:,uH]"8>aH3R %= %[HdIH+=~G` [ 3 X5/0123456789:;<=>?  @!!A""B##C$$D%%E&&F''G((H))I**J++K,,L--M..M//A 0R22222333p 476R666667-77 788-9]9y99992: :<<<<=C===z>>3?@A AAB!D=DDzE+HCHH_IKK6LLMMMMKNvN1OOOP?Q[QQQRRR8SS T[T LE&Q+RMOY&lHyEQ SzQ Q[ 1!Ngt#<v$| !"#:$&%%'()k*TMOPQQRSTUV ^_`ab& c4cfh{noJ|GyIg6Wlt%A"BBRDDMFGZHIQ Sruwxz]}bquSVY\_behknqxL(.C9^?9 /OtaiQM=7>LqZ8 vakqB]*4W p  hcdefghijklmnopqrs t!u"v#w$x%y&z'{(|)}*~+,-.w/H2233'6'789<===@ADDGHoK#LMMMpNOO7QQR      ))                                            %    ('                       )  ) )   ))   )) )))  ))) )))                                     '''('%%        ((((((    &                                                                                                      %  %  & KWGp Dg/<UU !M!""#$@%%&'E(z())*O+g+++3"<E<D MMxO"P>QQRSUUVWYYiZ~ZZ^^^^_._I_d____`*a1bbd g\iijjj'kk(llll6nnnn#oX<U~ы#ǎ#֓Fk:w 3Ozԙ&g۝< i4kԲY&BG2˻d/Ⱦa*c=wpusXU,@ 2) %2&}&@'-566@67<A=BB CDlDEEG HHII}Qty} !.2?"/kkxh :OERhR_u$x'=Taw%kx'= D H L P X \ ` d h ~  !5!!!!""d#q##$&$<$%(%%%%n&{&m't'x'|'''''''!(.(b(((())I*V*m** +_+v+++33 <<-<bDoDLLVMcMuNNOOPPPPQ'Q~QQQ`RmRRRGSTSSSST!T.TPUUUUDVQVVVVEWRWXXYY(Y6Z:ZAZEZIZMZUZYZ]ZaZvZZZ^^^ _&_A_\_w_____```aabubc>cMe3gGgijqjjkxkldlyllnnn oDoU(18?΃#x AxOi zG,:N\:H\j$(,39?CIS #ږ_mGe˘Rl}[bhlrv4n{ќ;OÝ>$+/3IŸϟb(QʣrץڪZq°ϰܰx޳BFS`* t{*7Lüм\i~'4IͿYf{"7K(5`mOU\`dh~s7ESoN\:@er]ciou|/C]Mf$8 XnO`vC%W%k%%&u&8'-U5556*68677<AAB&BwBBBBXCC>DTDDDDE F&F-F1F5F9FOFGGEH^HlHI"IIIIKJXJ_JfJmJtJQRR8STU[[o[[\\\a=cJceeeyiijfljlnnn"p&p3prr ss sssCtt#uuuv`vvwwww xx2xxxxxysyyzzT|H}_}|?fmցkĄ7Nk3ӓG˘ؘ)s֙,w?W5BZ8E];H`>KcANfDQiGTlJWoMZrP]uWd|Ǧ^kNi*ޭPoޮ.Mį9`C]x; :Tn 1ڷ+Ov*vܹ,SȺؽ(OľA\v9@ qp(Ls'ml\w:"/zap!m|5swG(M6(iqDY48]@,=J6GT4AP]Yfs5B '4A $)6)6CP]jw3@r+8ER_lyL Y         - : G T  ,       *7DQ!.jw (er)fs*gt+hu,iv-jw .kx!/ly"0mz#1n{$2o|%3p}&4q~'5r(6s)7t * 8 u   !+!9!v!!!",":"w""" #-#;#x###!$.$<$y$$$"%/%=%z%%%#&0&>&{&&&$'1'?'|'''%(2(@(}(((&)3)A)~)))'*4*B****(+5+C++++),6,D,,,,*-7-E----+.8.F....,/9/G/y///"0/0=0N2p2~222223m3{333l436N6p6~666667'777889)9K9Y9u9999,::<<<<=?===v>>-?@@@@@AAAAABDDD9DDDDvEGH&H?HHH[I|KKKK%L2LLMMMMGNrN,OOOOP9QWQQQRRR S1SSTSTTTTTTTTTTTU UUU"U)U0U7U>UEULUSUZUaUhUoUvU}UUUUUUUUUUUUUUUUUUUV VVVV%V,V3V:VAVHVOVVV]VdVkVrVyVVVVVVVVVVVVVVVVVVVVW WWW"W)W0W7W>WEWLWSWZWaWhWoWvW}WWWWWWWWWWWWWWWWWWWX XXXX%X,X3X:XAXHXOXVX]XdXkXrXyXXXXXXXXXXXXXXXXXXXXY YYY!Y(Y/Y6Y=YDYKYRYYY`YgYnYtYzYYYYYYYYYYYYYYYYYYYYYZ ZZZZ"Z(Z.Z6ZZCZGZKZRZWZ[Z_ZeZzZZ~^^^^_*_E_`_{____``aa bbbcdfIiijvjjk}klhll"nnnno.6=DӃ(~  D|͊Um!&*07=AGsÓBX͕!'s!LhИXp_djpt|;pTȝ"(-18Pğ ۡ/Vѣt!ܪavgİѰްzFDHU/ Cx} ,=Qżּ^o):N¿ӿ[l&=P*9bsSY^bfl Yb`>Egagmsy~IQ(<  ^rf{q%%&y&<'-566<67<AAB*B{BBBBCDDYDDDDE$F*F/F3F7F?FGGGLHHuIIIMJ\JcJjJqJyQ)RRRSgU [_[s[j\\\/ab?ceeeh{iUjkhlmnn7o$p(p rrrss%sssHttluuu vevvwwww xx8xxxxxyyyzz{}O}Gks܁Aʄ~Յ&pƊ=Փ͘ܘ?u BzF]7I`:Lc=Of@RiCUlFXoI[rL^uOaxRd{ƥYkͦ`(R-VsŮ4Qǯ+PcGa+>$>X!4rʷݷAfy0|ùCVߺܽ?R۾E`)<0C#o>cvv 5`*=n$29|0d8pd,uy*oUk 4H X"kr mOxJu?T '%I]6JRf[hu7K)6H ++=+8ER_l~5It -:GTan{N b        " / < I [ ! 5       ,9FX#7l2g3h4i5j6k7l8m9n:o;p<q=r>s?t@uAv B w   !C!x!!!"D"y"""#E#z###$F${$$$%G%|%%%&H&}&&&'I'~'''(J(((()K))))*L****+M++++,N,,,,-O----.P..../P/{//$0$2R2222 3333676R666667888-9]9y999w<<<<</=C===5@@@@@A7AAAAAC DD!DTDDDDGGH+HZHHH-KKKKK'L6L[MMMMMbNvNtOOOOQ?QrQQQRRRS[TTTTTTTTTTU UUUU&U-U4U;UBUIUPUWU^UeUlUsUzUUUUUUUUUUUUUUUUUUUUV VVV"V)V0V7V>VEVLVSVZVaVhVoVvV}VVVVVVVVVVVVVVVVVVVW WWWW&W-W4W;WBWIWPWWW^WeWlWsWzWWWWWWWWWWWWWWWWWWWWX XXX"X)X0X7X>XEXLXSXZXaXhXoXvX}XXXXXXXXXXXXXXXXXXXY YYYY%Y,Y3Y:YAYHYOYVY]YdYkYqYwY}YYYYYYYYYYYYYYYYYYYYZZ ZZZZ%Z+Z3Z9Z?ZEZMZSZYZ_ZeZkZqZyZZZZZZZZZZZZZZZZZZZZ[ [[[[%[+[1[7[=[C[I[O[U[[[a[g[m[s[y[[[[[[[[[[[[[[[[[[[[[[[\ \\\\!\'\-\3\9\?\E\K\Q\W\]\c\i\o\u\{\\\\\\\\\\\\\\\\\\\\\\] ]]]]!]']-]3]9]?]E]K]Q]W]]]c]i]o]u]{]]]]]]]]]]]]]]]]]]]]]]]^ ^^^^#^)^/^5^<^B^H^N^U^[^a^h^n^t^{^^^^^^^^^^^^^^^^^^ + < ,P<u$I} Ob{*\o h$7,^q Cu$w   *!!!!"":#n####$5$$!%%%%D&x&''+(W(((())*S*f**+n++++33<)<L<kDDL-M`M1NNOOtPPPP Q$QjQQQ2RjRRRSQSrSSSS+T6U|UUVNV}VVWOW XXYY$YrZZZ^^^^_:_U_p_____x``` aabebb!cCe"g@giiIjjjTklTlullnnno5o;!|Ãg҄lE^b06GX+DUfOCDi~ɗ?[ĘHaeSxޜ'H)Ew̟;Vޢ9|ѩu?jZٰ̰3ֳP]b'l4Fͼ߼7fxнi1Cʿܿ4cu3F27jyAOb6X1@o|(<R1 Hg1Ho P%d%z%&_&556%6467AABgBBB:CC&DMDDDDEHFGG5HUHhHHIIII&JUJQxRRR TUG[k[[\\\acGceeiijHlnno0prrrsfss(ttuuuuKvvvowwxx*x{xxx yXyyHzz4|-}X}rـ.]dI Zpsݓ?՘!W}™)Z%O?R BUEXH[K^NaQdTg Wj#Zm*at1h3aЬ#ȭeԮ &Cz4Y&Vp4ٲ3Mgֳ*ϴ}ӷJo<ҹ $Lú!H#To 29zaZzGl]V@p3,THm Py Q' E .{ aZ=Is-x(X)& mG0wQu>qZdcp}? $1>f!] &3&3@MZgt=|I\(5BO\ivV         * 7 D Q  )        '4AN+Ot$Jo|%Kp}&Lq~'Mr(Ns)Ot*Pu+Qv,Rw -Sx!.Ty"/Uz#0V{$1W|%2X}&3Y~' 4 Z    (!5![!!!!)"6"\""""*#7#]####+$8$^$$$$,%9%_%%%%-&:&`&&&&.';'a''''/(<(b((((0)=)c))))1*>*d****2+?+e++++3,@,f,,,,4-A-g----5.B.h....6/C/h////,090/2b2z222223]3w333U4 6G6b6z666666"7m7788 9%9=9U9m9999:r:<<<< =8===_>>?o@@@@AkAAAgBCD1DyDDTEG H#H7HrHH?IIKKKKL/LLgMMMM6NkNOOOOPQOQ{QQQRRS'SxSSKTzT%6&|H#oCuI\ bVio`1Xk*oq   $!n!!!""#h#{##$/$$%s%%%(&r&''%(Q(((())*M*`**+h+y+++33<#<F<eDDL MZMNyNyOOXPPPPPQ]QQQRdRwRRRKS]SSSS%T-UZUUUHV[VVVIWWXX YYlZZZ^^^^_1_L_g_____k```aa bXbbc:eg7g{iiR!>L`I=cx× 6R?[X>r՜??SƟ2 2Ѣ,ԣvԤhު2d#ưӰ |ݵJWsIظ!gP.@Ǽټ`r M+=Ŀֿ]o-@,dsw ;I\)Ry$iv3L$y;a$b?iG%[%t%&R&h55 66.67AABZBBB-CkCDGDDDDEBFGG(HOHbHHIIII JOJ~Q\RRRSU:[e[y[\\\vabAceeh}ij:lrnno*phrrrsXsst{ttouuu=vvvawwx x!xmxxxyJyy%zz&|$}R}iˀ J^܅CbL [;דϘBw#E}I~9L<O?RBUEXH[K^NaQdTg [nb-X¬\ˮ:q.S Mgұ .˲*D^ȳ$wͷ Di6ɹFB޾{Kf, 3slSLt Af{OH:g-t&?~ 3g;s k/{<%rX}K7:^r $w rR{  OA*YK`8MTiF]jw9N+8e -x -:GTan7Lv+"/<IVcp}P e        $ 1 > K  # 8       !.;H%:n{5iv6jw 7kx!8ly"9mz#:n{$;o|%<p}&=q~'>r(?s)@t*Au+Bv,Cw -Dx! . E y   "!/!F!z!!!#"0"G"{"""$#1#H#|###%$2$I$}$$$&%3%J%~%%%'&4&K&&&&('5'L'''')(6(M((((*)7)N))))+*8*O****,+9+P++++-,:,Q,,,,.-;-R----/.<.S....0/=/S/}///&030)2Y2t22222 3N3q333F46>6Y6t6666667<77889949O9d99999A:|<<<<=2=t==P>>>>@@@@ A:AAAWBCD(DWDDDEGHH.H]HH/I4KKKKK)LLaMMMM&NeNO{OOOPQFQuQQQRRRSGSSTtT.TP(K1d>q l9@s!Wy  ,!!!""O##$7$%#%%%Y&'(Y((())4*h**p++++33<+<N<mDDLWNPPQoQQGRR.S|SST;UU%VV&WX&YtZZZ^^^_$_?_Z_u_____}``` aabjbb#cHe'gEgiiNjjjYklYlwllnnno7o@#ŃlׄsJ`g58LZ-FZhQEIk˗D`ƘMcj#eœ,M+G@x>kzժDlU۳tHLz~E޿Iw5HL{CQd;Z 3U~-AT6"Mi6Mq U%i%|%&d&556'6667ABBlBBB?CC+DODDDEJFGG:HWHjHI IIII;JRTUL[m[[\\\a)ceVijVlnprrkss-ttuuuPvvwtww/xxxy]yy9|2}Z}wހ3_ f#K _D &nǙr*QT"W%Z(]+`.c1f4i7l:oAvH5fլ%ͭjٮ+H 6[([u6޲8Rl۳,Դշ Lq>׹)Nź &J%Yt4;f_|Inb[Bu5^^h n,%J3%f_?N} 2z-Z.(-277T ms    e&`~'a(b)c*d+e,f-g.h/i0j1k2l3m4n5o 6 p   !7!q!! "8"r"" #9#s## $:$t$$ %;%u%%&<&v&&'='w''(>(x(()?)y))*@*z**+A+{++,B,|,,-C-}--.D.~../E/t// 0;012g2|222223b3y333Z46L6g6|666666$7r77889'9B9W9r9999:w:<<<<=:===d>>?@@AAlBC6DDYEGHBB CDmDEG HHII=RS{U[~\DabehjjkmLo5r:sss]ttu vzvv/wMx+y|}V;0Rrux{~-@\:fv QGw6ieOV6t{2:PsE>i<%rX}\]6p-r1;%^AS   q n  !"#$%&'()*+,-./)213368|<W==;@ACDGGH3KKJLaM NN{OOPQQRRZJi1>VW !P!""#$B%%'H(~())*M&P@QQRSUUVW_`+a2bdg]iijjj*kk+ll7n&o\=6Xҋ$ʎٓn}ՙ' iޝ"l7ײ\(F4ͻf1ʾcevvZ4*%5&5A>BBCDnDEG HHII?RS|U[\EabehkjkmNo7r!""#$1%%'6(k(p))v*+36<zDMP/QQRS UUVW_`a"bbdfMii jzjjkkll'noI؃-Fъq‹wǓ\ѕ+ޖ$kԘtřX̝ߡZ%zŲJd3#U RTfdIjvS#%#&Y557A.BBB\CD]DDGGHyII-RSkU [n\4ab ehZjkm>ADGHK:LMzNOOQ RR8SS TbTCJJLLLLLLMMNNNNNJOXOOOPoP}PPPPPQQQRSSSVSaSS>TITTUUU'U1U;UEUOUYUcUmUoVxVV=ZZZ[[[[[[;\F\Q\g\r\\\ ]]&]]9^__S__I-J8JJJJJJJJJJJK KKFKQK\KKKK L+L6LLLLM)M4M}MMMMN,NlNwNNNNN4O?OfOOOOP P#PYPdPPP9QDQOQNRRRRRSSTTTwUUUUU6VVVVVVVW2WVW}WWW$ZZZYYYYYYYzYiYXYGY6Y%YYYXXXXXXX{XjXYXHX7X&XXXZZZ[[}\\]]D^^^^^&_b__->.wQ^ &`w&!!p#%$%z&-((U* +bMNOPP&QQlRRSSS-TUPVVQWXYYzΟ~ΰ۰R_)6ϼh3̿e!4lqDWJRIcein2prsuxxxzߓט+ADGJMPSVY\cj.o{IS@\erA &3@ #(5(5BO\iv?~*7DQ^kxX        , 9 F S +      )6CP-vqrstuvw x!y"z#{$|%}&~'()  *!!+"",##-$$.%%/&&0''1((2))3**4++5,,6--7..8//.0@@AADD%HHK1Li ll@ϰC~ԾUead)D 0AnO =D !#$&))48P:=?EAJ6TrUVV"WWXlYYvZ|b`de_2:=E ttwzm]n|!٥1Ѫm81ðz&z&efkmp)s4vx{~FWm'2_ҞM'S6ê|wT#| ~Y> L  V(Q([w\]_A`Ea]efgh5j9ln>qAtwF{H<(AFFB0"f{iUA,*HZnU;0! HY*5_6HvoӺGf r,-b  '   -~o_!`j dp33488]99:x:E=AkA%BzBRCD[EXsc{{X}}~~G s 5^Z^'2'8]COQqK8CQu)wboNU[9F$1{OwtP|ɊcqIX/=#ϓl44552DD||_-llimͰA|Scb!B .lM  ^h B !#$&')48@:= ?CAJ4TpUVV WWXjYYtZZde[en3C=iAVstwa{FWkzץ/Ϫk6/t$x%fip's2vx{~DUk%0]ОK4r>z4ҾuR_'z]?|< J  ` O( )u\}]^?`Cazbfgh3j7ln{>U:(^i0{IiuUobyA|N,9"$|@oRHn|Uc;I(!/@ Q455Q6DD|I})\\+9FpH_ /!!"X# $%%b&(\(()=**hNPxQTR;SSJU8V9WX``aobMe,giiSjjk^k l^lln<oE(qOl:2Ro,5.M"KMb,w#U R#Y@^9 RAX&g&5BqBBJC6DDEG?HIIDJRTUU[\a6cecij_lnprzss<ttuuYvv w}wxlyF|?}|8k(Nd$3(+.147:=@CJQ%kd"g`);dS236@,H-+D        !"#$%&'()* +!,"-#.$/0g3_4=i>BhEMIL@NOPQR S+3Q<DcwҖSTBMO۩QRoz ++ +  + +"""" +676767676767676767676767 + + + + + + + + + + + + ++ +++   ++ + + +++++ ++ +E>>Wd},f}l !"v#*$%%&'()[*I+MrOPPQrRXSSUUVVyY|^_`abc S~qJVz9N-ϣ_eA ;Լm8ѿj;qWG\do%ABBBDDE=FGJHIwQRrjuwxzM}E=@DGJMPSVY\_bi&}Tî2(M(pǷ>c.z@ܺ<ؾ&- m;`t 3'l7-5b)mS1VikLuHR% [HdIG` 3 5/0123456789:;<=>? @!A"B#C$D%E&F'G(H)I*J+K,L-M.M/"22336789u<,==3@4ACQDGWH+KKYMMM_NrOOQoQQ^*ۗE8O˽6SnA2 68<@CGdKzMO0Q^Η8+A(Ea}4268<@CGWKlMO"Q "&*.26:>BFZ^bfjnrvz~ 3FM`q} '+29=DHOVZahlsw~+37?CKSW_gksw$)19O_dv %-5=AIMU]aiqy}&/8ERW\afkpuz-CNSinv{+<I_p  (05EUglqz "',16;@EJRWfz(->CKPX]emu 16>JRmrz "',?GPXlt|  + 0 < A F K \ a f k p u z  ! !!!"!'!/!7!#F#K#P#X#]#b#g#l#q#v#{#############$ $$#$.$>$N$S$X$`$e$m$r$z$$$$$$$$$$$$$$$$$$$ %%/%4%9%>%F%N%V%^%f%k%s%{%%%%%%%%%%%%%%%%%%%& &&!&&&+&0&5&:&?&G&L&T&Y&^&f&k&s&x&}&&&&&&&&&&&&&&& ''"'*'2'9'A'Q'Y'a'r'z''''''''''( ( (((%(-(5(=(E(I(Q(Y(a(i(q(y(}((((((((((((() ))) )$),)4)8)@)H)P)_)c)k)))))))))))))** ***'*/*B*F*N*V*Z*b*f*n*v*z*******************+++++"+*+2+:+>+F+N+V+Z+b+j+r+v+~++++++++++++++++++,,, ,+,0,8,E,J,R,V,^,b,f,n,,,,,,,,,,,,,,-- --$-,-0-8-<-@-H-]-r-w---------------.. ..&.1.5.=.A.E.M.b.g.o.s.{................../ ////'/,/1/9/D/Z/_/g/l/q/y///////////////0000+030;0H0\0`0h0p0x0000000000011 1%1-121:1?1D1L1Q1Y1h1p1~11111111112 222"2;2@2E2M2R2W2_2u2z222222222222222222223 333!3&3.363;3C3K3P3Y3a3i3n3v33333333333333333334 444%4-424:4B4I4Q4Y4b4j4r4w4444444444444444445 555!5)50585@5H5P5X5`5h5p5u5}555555555555555556 666!6)626:6B6G6O6W6^6f6n6v6~66666666666666666677 7777'7,71797>7F7N7S7X7`7e7m7u7z7777777777777777777778 8888#8(80888=8B8J8O8W8_8d8i8q8v8~8888888888888888888899 999"9'9,94999A9I9N9S9[9`9h9p9u9z999999999999999999999: ::::#:+:3:8:=:E:J:R:Z:_:d:l:q:y:::::::::::::::::::::;; ;;;";';/;4;<;D;I;N;V;[;c;k;p;u;};;;;;;;;;;;;;;;;;;< <<<< <0<; >>!>&>.>6>:>B>J>W>_>c>g>o>s>{>>>>>>>>>>>>>>? ??? ?&?,?2?8?>?D?J?P?V?\?b?h?n?t?z??????????????????????@ @@@"@)@0@7@>@E@L@S@Z@a@h@o@v@}@@@@@@@@@@@@@@@@@@@A AAAA%A,A3A:AAAHAOAVA]AdAkArAyAAAAAAAAAAAAAAAAAAAAB BBB!B(B/B6B=BDBKBRBYB`BgBnBuB|BBBBBBBBBBBBBBBBBBBCCCCC$C+C2C9C@CGCNCUC\CcCjCqCxCCCCCCCCCCCCCCCCCCCCD DDD D'D.D5DGEGLGSGZGaGhGoGvG}GGGGGGGGGGGGGGGGGGGH HHHH%H,H3H:HAHHHOHVH]HdHkHrHyHHHHHHHHHHHHHHHHHHHHI III!I(I/I6I=IDIKIRIYI`IgInIuI|IIIIIIIIIIII^,G&;:Yaͽ8UqC2"68<@DGgK|MO2Qr  ?W.B &B'-B67<_haapbb,c``` _`_`__V)>)Chainx.x.䟔y8Ͳٙ)RepeatelementBքW>``` _`_`__V)x.x.䟔y8Ͳٙ)))BքWBB.)).)).))h h).)) h)^__?))))))?))))))Rӥӥ ---9*^ߞߞߞߞXXXStderrXX ˰ޤ$)lEECustomEEerrorϴـP )) ))))=`ү ````ү)7ɯ7ɯ 66 OnceState69ŀѬ hɯsecsqnanosq̎v h)VVVVVAdapter9)ʉ)V)WWOsSimple SimpleMessage)ߩ)l,,Weak, (,(lā ```Initial``Alive```` Destroyed``˰```)``)````)``˰(( UnsafeCell(%诡ͳ)(()(%诡ͳ)ߞ)(( BorrowRefMut(׀%))OwnedFd)fd)ΥΑPPPPO 1YYYFileDescYO ̞Repr ͬ)===DtorUnwindGuard 蕐))'''AAAAE)EE)EEEEEEEE))E))E))E))E))BB?)?).) E).) E)SSSSS#֥ā#hghghhhhhhf`````ԏKKKK.))))K.))))QQBBB AccessError !_KIgoߞ)))ߞߞߞ,))RcInner)strong()weak()(ɫā,,, WeakInner,)(,)(,))ā)āD8ͲٙDD)DZipx>x>>>a_len>ƼC))D)DD)D8ͲٙD)x>x>>>)>ƼC))D8ͲٙD8ͲٙD8ͲٙD͠AD͠AD)D͠AD)D8ͲٙD8ͲٙD)x>x>>>)>ƼC))Dۏ+ā+ā,ā)L))(V)^^)Rӥ)`AAAAXXBqq~%%>>WW}App$==S@VVo00#{<<UU?//aa "K;;o>.. !J``::Q=--__V  Ix99{kk,,EE^ H8Pzjj++DD GPPyii**CCUFOOhh))EttdNNgg((ZZDss4ff''YYTCrrce&&|$=u{core_intrinsicsderive_clone_copydnilAf3C, , dnijd*0r=f+dniEhC|#$ **dniѯ f$*'a+dniѿX">P~tD9}*fmt_helpers_for_deriveWWdniѫ]`ogHS$ u dniy#L! dniD Ω~lJ**WWdniRC/p dniѠ /0&( 9$dniO4]|$ @**dni^(2BC, dniё-nl]~LU**WWdninNW<Gdniё!t$crate::panic::panic_2015|;7-libstd_sys_internalspanic_internals **dnie"vB2  dni^\g_sf}.**dniJ*MJst<7**dni/*R2C, dniLQs#3**dniѺ^"*+dniǎHS8# Jdni3G0KdniqɸbOm~p**WWdni[ZzmC+/ # dniѸ84eC, dniKx>&Ԭ(z9$dniыUY? s|**dniL}|4sLY;**dniU$+dniуJ~(^7**WWdniN,sl@P**dni XGdni/MCKhcB2 ]dniѴ]*$crate::assert_eq:hf f*dni~ F|t$P**dniѣWH+ % dni6Bc.{C, ^dniрTeF40[+dni x ֔*c#C** **dniI\ ?Mj<f**generic_assert_internals(dni=\xE6 dni?̼u|$**dniGsU=dniQ&˭BC+, dnis؁D&ԑ(89$dni?@~cC,  dniѵe4P\|L$  **dni{ Q +dni~]w,~'***WWdnitCLl~T% **WWdniPl?Ks|Y$ k **dni0(]w&,dni+p8n1~s/E **WWdniۢs?2C,  dniֽ\z/ +dniFtMNH* ! dniH6Os**dni#T@6.5$crate::assertjɚ`fv***(dni!C+) dni )v&' 9$dniєEkɂFUC,  dni"YO:G dniѾqu eC, T dniљfC,s') **dni G dniѳv>&a}|$ 2 **dniрZ sa*9ɝ`f***(dnig}/9~] **WWdniCZui~rK **WWdnihmMsKC,  dniǑ֫H* dnia=0 9~!V **WWdniD3%I[r|N$ **dniѣFt`K-έedh* derive_eqdnilڕdni&!f?~&**WWdniSs)+C*& ? dniѱM$@~C, DdniѹnC&' 9$dniEƼɚ~b**WWdni\Bj=(C, dni'f. +dni..n|'$**dni"k8E$s5 **dnih9QJ8*W`f***(dni` |$0'**dniḠ2~~qCSI**WWdni>'.C, :dniѧozخ3|!$ **dniѬjH* dni Ȋ-+dni*Z7&+dni_@X- Nh*dniG&R\K|$**dnizrädniч7r{NC*#  dniщ\&Ԁ'9$dnihlF=V|$G[**dni N6c%C, :dni!r;ixC, jdniw̓~&c**WWdniѥ&7Ћ.$crate::thread::local_impl::thread_local_inner!Cyythread_local_internals a`dniU<o?}֔*8#> ** **dni SUs6**dni GS=ߟX~pY**WWdniуWC, dniw+dni>=>NJs!**dniѾrvs-B,**dni2Rsv`**dniőv*#C* dnidj&&^9$dniP{Fjs**dniѱ@^ )C, zdnitWzC, dniO&sئ+dni[^ٸ֔*m;;** **dniXTT+dniQ-PxdniU Q%~7**WWdniѸT~K**WWdni(R%֔*<1** **dniѰ!֊=C, 9dniѭXr` 6+dniш i;HV( dniѮp jkG  dni{N^.֔*\@'** **dni{{Ę~-pr**WWdniњ8D8'*xASg* a`dniы sE~?**WWdniѝ[ C* dniщ!C, dni[&&t9$dniѢ]ҕ~wRO**WWdni^"[_ӂC, dniѯz蜧; +dniJm4g&dni8M7HV8( dniѺ̠YU!  +dniѾ J"|7$! **dniѺ#?@|$/**dni@9G dniт|C, dni j2/+dnib^d+TBdni6s|$**dnirA^C) dni@Qp&ı&9$dniga<8C, dnidL[|swS**dniNSf~C, fdnihǃbd~$Y**WWdniZxIdniь0xDP+dni.Up +dni@)zs7**dnisE5BVs**dni\DHU$ dniA)Eu\DC, dniۓ{I +dniDiS~su**WWdniz-2/ dni9!i֔*})R** **dnix>Bos`o**dnia0xmC) %dni3=cCK, ) dniѴgfL;a***(dnih C?) dni/}#0C,  dniђ8|nUG +dniѽK]5T|$$h!**dni[y/Pd!+dniфSHU8# i dnipK~6{ **WWdni__g֔*69 ** **dniѷ̞#C, "dniѴ>K&-):$dniu:a|$"**dnitqj-~| q"+dnîB"+dni9}~;"**WWdni+ I@3C) SdnioƘk?ٜ*<hf*dni ,y# X#+dniщ܃"C, #dniJ0CGAs$ **dniBE#+dniѠ||%QbHT( ;#dni}Բ&!?$+dnit6~4s#**WWdni&[-1C, $dniђT&-:$dni փl)Isd!**dniхd +%+dni%֔**y'w"** **dni`,Ҕ|$ &**dniѺfpC) !!dniD  dnijKb~^%**WWdnip| M&+dniyXC, &dni_J<~#&**WWdniu,^~u^Q&**WWdniN!DA '+dnit~nGdniʘJHT8( &dniќǬNn֔*29$** **dni6q 6=C, 'dnirز]A&)o&9$dnimou~x'**WWdni]o X(+dniw7(+dni"֔*v$F&** **dni~vΜеs%**dniajQCt) y$dniѱ[mQL*;ɤ`f!***(dniр!]!|8x*9<:j;W 19  dniт^e #> 1  dni0I )u$F`  dniÙV debug_assert5&͟_f dniхU?C*1# 2 dniщ [ %l;  dni-"_3 o~(  dnin9 iU  dniŒ2ի, [@  dni+P5{ 'w  dni3EloYdebug_assert_eq:# gf dni&` q "b#C   dniN>܉:.*5  dniyɹО +|)R  dniѕ 0! 59  dniFGY*1'  dniI6GQv!v:*dnis *.  dni", +%) "9&***(dniјHPZ)RV&***(dniі1=E@&***(dniѯYd9&***(dniFlJUMF4#C'***(dniўoe5$FB'***(dniы4Ed;}'***(dni z] R  P e   { σ   w o  d م X $ ͂ Q ؁ Q > 3 ,  ӄ D " =    m  Z υ 8  d ɱ G ɀ # Ć *  ) | x DŽ 8  Ά v Z n L ܱ Å Y Ă H ρ 4  !  ׃   x n N . y ׂ [ [ ݀ - چ H  = 6   b ݄ N , + Ӏ  4 x q Ń  z " c B ұ @ @   l e W ~  n e 7 "  n Ɓ   G e ) ǭ , y ӡ }  w ٌ _ ί ̣ ʜ e r / ԇ a { * % k  V o ۶  ޢ = L [ ) ̊ ͪ M w P J j y 2 , E p b ? Ў ײ ! $ k ɋ 4   ~ c S g k  C \ ˒  E _ u  < e 2 s L ?  ˬ  Ӧ + Y  { 7  ; ͗ % O k ) , Р (  = A  1 V  ˧  ۚ q y ڟ ۘ X B f K V Z  1 K s 7 1  K 4 5 ɍ 5 f $  3 ^ Ӥ  o  Y  " ѓ G ڈ  5 k * a < ݭ F % ם / |  æ $ ߵ I { U ˶ ? A p   ߳  - ӥ [ l  {  F  i m Ֆ g O F _ [ ;  C Dz ޏ N ի  < % = g  7 i - ۴ ; ` V  #  ˚ c '  5  / ؕ K $ ب [ % Ԟ _ I s W [ L Q a e  , U " M  ä á ;  Ɍ ԩ x b  ć k v z ' Q k +   [   ʈ O  1 i ΢ R c ۑ : " S ʟ ˘ H 2 V Ӯ ! 3 ! n   5 Z ! J ~ @ t ODHT Kr4R@v>@ *q| @o[r6P ⮄/`x;/m !w\IW  }S 8>N(y-pS.eOȄ`;?`$CξD!`2O&0qYqUPAƆXZ,[д_`nZf!^k_ R!O!b$ [?dg,Ve(m 5cIfv։(jf+ƥ9k if kP}is`;etP͛_Xx`Rey5I ļ5CDP`yp.6#`+?0~w٠j@m^}>lLHamqG1w@軚`Y`y<F$ZF,m !ʆdDI*q$d]ŨVuuWl <Yx A̸e^0r$+ِDĭŠb-de_`5}ܬ_1 C̰,HҠ;ٳҠԠa&\p9cw>@vqKf!ne`Z!PY=YN Qыe`&g3U4Q_ 2hd9]cs;@־ whMrJ c簳41ϫ|!z˔a QB@&1;q8 Нx= 1reʸ4A|ECLA!M4jq%KWL5Woc!Al8"18#h&X$! Ak䘒%yA'-.i)u#oy*u}Kx1q EGq;т rFA8w$Hj/y.gPk/T.QB&QTor՘ UAfLO7W6}Xƭ<_Yq%HLZ1\,D|b[!Oњ_ AiI`aj!U")jAeGj'R3ȣJoov 7r᜚C}jsQl 3nupD 0!vAe1w $VGgx#cjv&# !(xp&><섁(5bqgHaTẀ`%m Z䒨 5v6€!]&ESoLYN$eH.FS]\qP@`0Fϛ1)Daq@Y!3QM1xTK7@e|Afu 9.GĚ!šEL_((b)"rL (B%գ+R]$D,s+rV+r5/Ј+b-IƩ/^Gl2)fI%B2BMFq4;VR5FHW 559k T9MI(;"iyrO7l<v=r!0re;Dءx|E?ÑAEF3u>D\g^QVvYa?bZRuuZR72bbdicr*~yVet43j2Wi=l2isRyJ-t1DE\qu'~cu}rC %)9?r2!"\,\O2@7]RmS"Of2 O.2 pBu9yrvAĭY;A)S2@/t!EɃpJ '?Axv0Hу , )UX1X'߃YݠOp泿= Sqoh{BrV샗ç'{t6>Ø3T5:/npJ=#XP'-kQ,clmt4#0q-Zsؠ9(13^cB@jC U#BrSJƄHB Q VυQ!u#D<a3RDDb26^0C}8ȡbdc8dE[0u$ ɘ?;1  W dChaE9 dȬ v9-$9>dX7hs/S& z5 _S#t0i/&Tg w'T|'`'Dw*(Wnz.n/T5b.Y15rIm6dVr6TwMa5X35tn7>DHЅLwH}:3L4_ccCMDF2LK<qQt^=W1R/w\UD@'FMWiCjMjZ\s,[L`I9c6&+VdDŋJpiym8҃=t 4ݚvt&Aqw1pxZXxDX OzdOlg{$&(nyT}|QRtzd57m4Q|U]팴N톑7DE,,&?S?tl=Us'ǠL<$h-7x_ot_"!D6q2|7UH$f4v-xL^ ndfX6R¡*"T {GK$;gZ[f:dY}st'9~賄bY~ɒeYrlҾL~Ź~e14Dz7j4d+tVƔdTN<ô|?ȯV@g|TMCSbTwtļk'i4&yD4ѴV= dYW=<"NDiU8?HMnT>p͕0:R`4SzrYOR*4Լ egbw8 _V%t/20df9#`>? S3hŻTS#b-oT8dAuyX5TWU'8 sjn ׳U N 7^ N_2S%ZbL'=q5ͯ3 yrDq k!EմrX#SW*c%Fq&D?b-E)g*Yz0+ *)u=U-[.M.UY7Z2N3\7US̨H8u"x<2;=k5{*b'>mb 1v#*FFv>hnG|%Q|,?\e.4:GIQOU'7(eΙssX`-wt5e~#%͂ XLL (t;U+hagwо2I+107;A-S>'/^G񔤕.Ԥ@Gag*jQ+heQy50Di8uLOuE}ղtnⴵb﵅@YX(鷅}ugct&u:_qpY5U-'qllEC_õ1{DJ.uuEkPLw%O_ِ #kҥv[JEYR\EP  :ѵ$ٕ; (܅}UD@E ȑp]-=) #@(n[=EϮ|uJXk!dL1 vIfjBwuEHF{$ -Ν,T߲ЭfRw[tfm? 7 FbV"  6fsf;ZsM-<fO\K%g`vd꧛F*N#S26SY4&R2K˽HaƠL"q'2%y1|"\xB#6 lq)F9^,V+F. P0&.TO1i*C(2fpl4Ɓ5]7RLf86siH76~}:6O9xE;6,k&3A&[?gC1cCF*KsF6z-6)Rv|fvBz0fS ؍TL+򳑆:V8Ж+o!\ ̐&?5_qÔp EJTiH(YGXeV qoB3qEԵY ixF׶FM'Ϥ6ڢI"65 /LcQ Xy8l9ö @Hh66l:3,BQ&H3ە jTϦ ҖpM&޴%Dv\yvv4<6qLHp۶K^|TV +(6Mg\M&e̡ f{&c5<AOv#Rfp%&[ im=|VP=Xf*[:j]+e>J-zQ&rǵfZfwE 6bW9Y:GylwMv G Cjmp G \#N15AL!&W惩K5'n]y&"+m,=*\<6-Gf:-c\-wic0W 3;&13%1`1լ3{ia2gH *4Sf38gpfIԲ:wL;J'Ap+LAoeD7gPSDw^eKRM{Pu S7F=PiTTq\UV7xUǽ$WfvqUT(7SZ%Z #[c*\Wan?E)+l2Zs`1Iuح&5vIvg1-xw"Pz'MZ#q |}Kw7ǪlAN_\k~'|Ǔ:\mG,g04n:gcvԟ呗˗ǔ'靕t-).L8weLŔGIl˓ׄTZ"pc&(w.'VQԲ%ov  PJYNjB[دid #h4F>ħM&NK˷)ḣП}'v6Z$ 'pC S8]ט{wB =+2ќ~Y~[T6G,x [4lL}@ۗ;zJ:ȗt/rt~)6Wq@֝/LQZ%'Rj aPG^Cw:SWRX7gy@ 8V\ExC( XI!>\ x¨nWXa'z8}'z > )g66?]-h>&/]^n4o4P58=çF&6 i7xgG{e8H|&:;w?=s# >$9_NA8`)/C2R aCH+D+E7ņ@99Hޓ)FK[j[YlXߛ1\%gq׿ bWw)X P׃@ɛyI,ԴhpKɬC>5{ A䉻^"(^79-kI$EdyH_)0ɹ޴:FEyXYoO鳁鎈 יڍ-gW7? M8jZ^eI -j1ivgEPkQ,dQ OıX@ I#gI&p"6p[d*|eĖ$S3. -} zh7zW!Y' `1?͵z5jP\b#zΐe&Q : #+#bu.Wdl2vt93 T6Xq3Xt 42V(7*H<:a 7A~{`g8 Cw%/Gjͺ >I cI:d KkZIʞh·JZn?ϿOW|Oq3OQz~ʔUХ\V,Zx#\:0d]Zf5]}|K \SˆSdc sft*If L†gJ -jJ}6zkjoݽuIDl lRn&ٲqC3*%vJS $w*#ѧz@XwZpC]*wj+4Hxj%{Y{F}RhC}Y* SNHixZݡg1fm>}eXKUd&6ʅL+hi՘q!`Lu"8,18h\W:CJ@j+-(d1Z"졚7xX^sj|)o*aּ~jiD6p"j:3^'ʩ9xo&dYH_MpwA9έz$ >vbX9$4[ERR8FZuE_:":/Z@ h.H3mfa;AY6źunJ :~wSz#4o9 ǯl]\4Dj+ʚ8o* .#6"v8J1>JțUҪ% պ5ZlC-+Pݺ6nPv(2{GO:@SJn2e_-i:vj5_7'!g<ߺc :ZB1sFJ: pJZPz:(YzJnxYf3v#;$L+ٮCJp454v[Z ah =>Fֿ{I>RxO^REs>|)ct6 [_i No#h _{_C  `;[{ +4~{_]VZfzC'?ejå} +V~|Ӡr#Q'5Q$ >k!O/kݔu`"/l;e1q(Af9!r:gW8O-6O$TOCKOa2uʅRRbT+aH*_UQ tuљV Y+YY^댜̕_ؕza[sUe;#Бajg+Ύxh&E{t=QK/uk!pykJ!L{"5qMMk|z+Tk1tNˮonӼJ@B,0`z{}s+`BH'ё+E(k~.-89='Dd[ĺaJe\1?"@.K{JT/m|}=exY 8qEKms陛Eh+ e]4$O+^د FGOݰ+~_ s<轱ik!LJC-02{ )Ϳ- 3z[6xŻ+;}Sv0[cЌW[M!VkZ{Rq\P]y zp[k(o8 [XtEλ TϩakDv'+- F5{.iCp{-|TCau}+H]a -q+=YYKRV ZO?᷍1h ˮr}/H_|+i`S+.H4E k}[F0[Rio󻸄ԴیٹB|"a6C< )!{? \PRöA5g)rdp LL;6d xO ; \ >b lo(O\/ l"K ,@kL4 ɍWS{e_ l`&\ּAt\w>LK|Z. \*Lܜ"pXc&lM7b,x'<!,l0/UG0,MF3,`< 9Gpx 9l?, /rA dA öWBDti(xZFu|V(/f}‡6A[ܵw25%"2FDG=7M?u|mO .<$KGA$L!Xܙ>a,7qf8jz XӅ{j4jGA\ o|C t[ _?-w-v%4x(;zX M䋱R]R`@xUf}S$- "VO 4w c]ʃ\QV}ִW ]=/cαd@bKK='zxM坖]M[|}ca'p&=/R9&=cKVt( YK)&s|.}W\/^=0,.e1-m%XD2Zݠ4mSL[}6=P8}W,9M8G<]\Us>l?LH@ Ž>.P?=k;>C=l}>=@hp2F G- DMeN*>LuWlU *a9V=L`=`8#a~ dB@PT}?eH?\ZgspNU;aq-oN>r \ǟUsf1uMPjw'Ƈw)[~)K偳]P nzż{S@rƋ}8  StRwJӹ]هNzBy?|}x!4,- Y,e4(3!m8JcQ ]GMp@y,},Mwtb9(ç\}4 QX݅tBe],M]Ү\R[> 6{/iMWa o =lRV-H Ǹ 8om 鼝ƂJMmX,h<ŽRU6*p)$ ,k}\@9[ZӽGWp8ݶQEW Y h؍>3`l2fWM|$6,}kŸ']4KfK0=#N4~=5SWMD0 /,؎+Mht$ +5}Tt J~d̀%{"^'5=cFN2w:fųC.vOUQ/ =~#(3QA( %9eD!n ~K)# Hw%es'M)*~#LY&*ʹ`;.~C1b4#1.Ck%U7u;97:ts9J>15k9nZzW}8NoiI_m>,[>LÙ?ôB ȓD~ D.MB,LO(7RL>zjr.eM?L>[cQ>|BPJzT.IgSV|ZW~=X@~wDX~nggXE0,\;њanjcana&)-cRe} f"2sg~F;i~Pm >FF&c6vΫ q͢vNR8o-y dz,?A{ |o{ȯv~IV ~.#Bŀ E#߀Gʳ%R|^ {^O-"nZIޏLLž~"K¶ /!l8~9񔳙n܄l?~c*cMqBL΍UgrU9^9I(煫~Jv .z,gp]ǹGVc1>TI%:9n30a2N^4C* !NѾ*ޖ%뙿~R:#6 {:ː>5%d_*[9XQ/1g)1__Y1D,_l ^q0Oj@uYʩv d! Ep6 @VAo' fMϫ{s8u:( fr[e\Fk[6QoX0nP¸!oPS$LH*.X+%G*|G.JRڛ_._F0BXL5[6ߥw7Ѕ@26 6s9n=_榬ME_~5Io#XʘhNπ\HPЧ]EwR﫛 )R#!T_La3#\m<,ouH^fK`~A0i_pMkZ|wm߱`i,pO /rF|ct%>x:kNlk|Z4?}U&~?WTOՁ~#E0EJ%FbGOiu9_&-ґ&!ڙ}މ|hO=)fOgHϸP(j?79lA-W<;ydqPJVG\qEU]!4G^/K vIqv?( 3Pbh36kGfQ2Mg?bshi?^6r O\#leay+:fHm`del0.;;m[n@3nA2Sf]&kue8h_!\ {`sm :"ZE!^9&VD.hSp)nM8W1X<g@-;,R])K~D`e\*vKN?`qQk-/,.~mrYhD7Uz.hBww3 +^j9- F 9$sC`F43"l.Z$/$&$Vl*R)@'_!kbZHw M|Y*&&k>uMQ^i`W[J(?ySgIelI)o7yh!: g8gp"}mqeksQ|b8l!gPt\}{wv8^agyP 0DI.4:q`'7&eWS6W\uoC\pt~Y!}8fj,t9t 7h>1#/ 4G&MEi?f~?[sJi nhtxx)`zLvD,a1,d?Yndcy!M5OP`*$8{)|; b_ x))B*|M5k/Ups9Vja#H, nPkjp5E6OxC0:+8S9Z0)\i(AsQ:XV?,zy@,+qRDI*Cn|$F08F`R\TR~LYdKrIHQx8U[^=n ";Re2!W.Q^>nGLTu.lPtHE6.cD>DdJe_CNV#te8{4(tT@(b9{S"/yj/UZ}"8*fb%,CkK,Aj8!|Y$ot7@DF+xe(x',L8>]egX]Z?,+D0=Xf2s4H TMhIn\>eGc>n6l!)h8=j``P2OL0OQ2GN?ua 6M.aKbj%ybj[hac.8,y .,+@4W\4kOI7Bl\=q]Sg7gM5`=?G>^]g SVZDaUivvryRonXum9d6Z BWR<", ;@w6 h`i8,SG{D-^DA67LvJ V m#o?%<6 |(MwE f}AZnWN1t1,M/Q`)C+IyV h Wa'o` j S'CDJIRb%xbwiCXR]M~ &l dx:w)L]J$ZA) rT+KXpLYa?p&{:3~ *]tmW wZ^{!MZsLq5&!$d ]Pp OAMOnUldrfEe`/Q&?[B &h*p~VV#H*c0!_x,q=QiA %6d|a@8/ ]{E,w{ T2x_y:VuN(D&  k#LCEhCVSM_0Y ?v-0d}u j cD~iY/i6K)` V8^EpfA%@mO4|e)lQ5lA-W<;yU/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/lib.rs {2vCQg F?#EB@A$+QOK;G/ KN ! KKGJH,NPLPO?DNQQGQQKOQLNQP%IMO( &"I /$QP  :Q!ON%9,)11  /A8QOLNGPN N>J9:?./&6&5 0 @NNK25C94'1:F%*,;7@&;02154 :3F>H7M)=><9TC4()GA0G.#')'$$$&/'"$;P,+* : LO,M#MED'FKNK,#'9HI"I:N(O*$EM#$BBFC$D?BAB@>B@7 LOSEFE?<0$,*?:?EFE?<0$41?:&EE@DFCFD;G%")" 0CGF@:!&GD%'( 0%$ 4 8J %$F?= Y>>-@GC;!%$+8 cF/3%$2 H,J%K Y%/, %,$05 V; D,b$6 *0%$ C"N(6 5$$$$0".$$$$0";E1$-=&GL?&6)5**GG2#+.(<*#* ..(<* &E;D@  /)E8B?  "3)F7=@GGIF6)6)>  $$/.>70NMONMB#39-= 1J&?C6PP-GFC?#?I&= 2LC#:$)$)10MO9LK5"#/-60& 0D7 $ .AJ#<, I%$(0" )(81$--5##)@-#  #?G/8#A"55:  ")(.4 )(.F  $" &" ""22 "<>> ";=> ">' "+1" ""* !$ .##&&5 3#&.  I#!0/=7 T==8: TGA 9-*1  -B0.E04N?7-BD' 9DB3>F C##B@ECDLFGEG)@)-J(4BF18@T !!#D'/J3  4 ' ) %#57S2M+>;B; .%&)+, % :<<<2M+>;B; P"c5{xe/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/distributions/gamma.rs bѕz/ҁN=XA?#EB@A$")#-?1 6G7GEA 9&7:DDS:DA AFCDD!CD  C02CC%' :: <#F %56DG>F '!E6 ""N-7&H8 )C@ ;%37A/>'' N*7QF  <!33 @%%@%  N+7@< 40 ,%"&  ",%"&  "-%"&  ( -% $  )% $ ++--//::;;9֬4hrTf/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/distributions/normal.rs 'a}we4C,A?#EB@A$*KA.6BDF 5,$4  :;CFE %;;;d !'**3=' :$(85F!4J N)7=%:? =$/<9E !7M7!N,7( 4$ 0%#'  "! 4%$(  &$_2"f5&k/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/distributions/exponential.rs RB^/jwO|A?#EB@A$"KA8FF1DF 0"G*  ;? "33'0=# 755G =+%E-N&7)  4 &%26  ( 'ϱBxR}#X3c/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/distributions/mod.rs }jh5԰qA?#EB@A$(JIGEG&=+ EA::?@GBD8!5A+/&&&2N=7&4D*0LE3@HF L<<=.&@2&"+' ?HMP(EG0'KQ?) \C;7 9LD5AC80?22/ -DEFGEF-(7E(FAA 1GA"] G<.C D..N, GBCCD C=DG;6#(-E*78^# & BR  R 2 "( (#  >JN GGG60(:*4.= 9111212%-.11112"1111112* .E%2.-E)2+E).)/,BD1BCCCEVK_z! }X/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/jitter.rs YbUԝH>A?#EB@A$DAPF C!$=N&HMN+QNP P$DNNM'A?&1)!G ;$5' 6/0>,97?NB; #;,*$(7".LNM4FG(P'E "Q2PO9=!#" I Q(Q KLNOOA0KDN N'8'N$M<0&## ;L#NMQN;20'5H*UIFI@******, MLMH#C%$1 +"IKNQKQLKPJMNQ0$C-#O@KB5L'3 %#?IJ+J660)#9NNNM1M?7#PQFB4I(6JIIHHEI.MMJMGK8MIMCNP2KJ$,F0E Q;./&* 'N;'"FO15 OPO)>OQPK)$!D)(%3C'"((()19OQ,5FLLD,798Q6PON; EMLK* 2 OMN/51'5 MP/21 K$42 P IEPQ= E< O1 OM79 :UDJ+NN KPQPDKON3PQAQO<JRONNJROQN#! 4!5M@KM0< OFN=JR&GF?? NFE  # =+$*,(!1I9(= $0 1*8' *8/ P\FN<T/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/os.rs p~BN5&KɟF?#EB@A$>  F,FG%7EDAIF7C (%88D;  6#3 6#3(#&&&& % #*''+.3C '0$0$0(0(0B '.++/39,46>C) #*''+.*I**9'..E*; *'.++/32",*<;37 (G: (G: 1;<  % %%G3 5G, (2 (2 1YZ   %, (2 (2 19G))#JG13`1   %, (2 (2 1H)#S::   ,43, (" (" 1%   %, (2 (2 1*   %02(, (2 (2 1N$G#TA8   %84I ;:K?D@U,,("EAV;L5S (2 (2 1-#GC8C$. C  ,G ($  ,"3U 3,O 3,O "ADB     C//0,333 <,333 &,,  .-  HСT5[/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/reseeding.rs Ozmw@L5A?#EB@A$:0G5G4# 78?5]3\8  F(,?1& @$$#$$#0$3"884"@DE/@  D *3+111 $ 4,:FC'>D;(#%< 2( " (* - ; O0  LL@B KG*G&+ L*N/L$ .T moMj}I\5U/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/seq.rs #wjQT%tYA?#EB@A$=E>5;+>#`b]/M ! A_#)422K2#,67  F8#:6:% ! ,?M<.;>::% ! ,C\<.4?6:dG RHbc-b^Q[[-4 2NZ/^:V%>1!- V/^D%J@.1&( '& "X) 0 "=IZ+47C.-  ( "6$"5;BBC@@A. 4$* 4E ."*1#G_N25.5(&*5/:*79M-QN. ̏kjJx%\/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/rand_impls.rs 4v/w6=n=F?#EB@A$:,*&& )***!+",*&& )***!+DL/@ F&D@6'(>EGD1>*@A"I 33+,FD8?% +!83!-CI=- ,!$'*-0-(17; #< q"0  -(( ((  %8?I F;$#6)6)  $#:+:+  v@l:. ]/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/prng/chacha.rs eQ.:Ӗ&uq5TA?#EB@A$(@!]D28&""3BBBB88888888 G$*C#$0)) NO)# 44EJLG&$0-)) I88999HDDCBA<%,''+ :51'''' ) ":-"0.0.0.0$' ;0,'58 /3471 29%! )  O@@@B .>>@B O?GG& %J&>DHHHJDHHHJ.>*9+# HHHJ &?%: JҋX \/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/prng/isaac.rs gpb`m"PA?#EB@A$'  +3@>?E<BD!! $ ""B( MI(#++++++++  #"E6666 :::: =2222 / %5Y 02$-#+9@-464$-#+9@-4646&%%& A"$& A>F1 F-EE,4/,F.EJ& FG?FF0 17M% ;#  #Q??@B 5==@B Q>GG& #5=IDRU7=.-DTTT ?`0 tHm^/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/prng/isaac64.rs O&פL4 w"WA?#EB@A$*#3@$>?E<BD + @*  MI(6 00++++++++  #"D6666 :::: <2222 / %3KZ 7;(1.5@!OQ5OAO(1.5@!OQ5OAO"!"" !A$$$& ?071,F.EJ& FG?FF2  3 7J% !;%  #QAA@B 5??@B Q@GG& #5?IDXYX07?.-DXYW0 5@%: =UIP o/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/distributions/ziggurat_tables.rs [:x_03A?#EB@A$A5)2$]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]$]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]1#]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]#]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]_D[oɕ_/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/prng/xorshift.rs խ<)OR vreA?#EB@A$!FDG3@.'@PMQ+ $3-H+/EK2/I 29& #< ;xyhZ/home/seth/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.4.6/src/prng/mod.rs _ DpD@l3A?#EB@A$JCLPEJIOPLKPON$FLJMPI%b,LOM !#+QF$!%bۙ F ڠ / 6  ߴ S T x86_64-unknown-linux-gnu{Wn,Lf*-23df0a977b027bffdni.&o5q 5 6 & 7 &7  ! **  ! ! ! 7 ! !   ! !! !     !!  7 !  !!  !!  !   rust-end-file