本帖最后由 1五湖四海1 于 2016-8-25 22:44 编辑
! c7 Y6 |% e9 r) k" M
) U! |8 N8 O7 L& V' }这个defaults.h文件作为一个中央默认设置配置不同的机器类型,从DIY米尔斯数控CNC转换的现成的机器。这里的设置所列出的文件是由用户提供的,7 ?. y% C/ y1 O( }* o3 y& p
所以您的你的需求可能不同。所以应该你了解你的机器和调整设置根据你的个性的需求,制造机器。6 F ^& b6 b; ` g
defaults_h文件是选择是否将一些参数设置为默认值" c2 F) v: O2 W2 a- x9 B
定义各种参数2 J k4 o3 ] o" L: p2 R
1.defaults/defaults_generic.h //Grbl通过通用默认设置就可以在不同的机器上工作。
' J$ I+ I2 m% G2.defaults/defaults_sherline.h //描述:Sherline 5400制造厂三个NEMA 23客户KL23H256-21-8B 185扭力步进电机! f8 T- L5 t: q w$ a
3.defaults/defaults_shapeoko.h // 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的
# O0 C: w4 }: f+ \3 D4.defaults/defaults_shapeoko3 //描述:Shapeoko数控机有三个NEMA 23步进电机,由CarbideMotion驱动的
7 y5 D V6 U! T0 N% `5.defaults/defaults_x_carve_500mm //描述:X-Carve 3 d卡佛数控机有三个200步/汽车由Synthetos牧师grblShield 24 v。
2 D! ^4 L9 G5 F; ?( x6.defaults/defaults_zen_toolworks_7x7 //描述:禅宗Toolworks 7 x7机有三个Shinano SST43D2121 65扭力NEMA 17步进电机。导螺杆不同于一些ZTW包,大多数是1.25毫米/牧师而不是8.0毫米/牧师。由30 v 6电源和TI DRV8811步进电机驱动程序
" Z! r' ?5 x* V! s/ I: {7.defaults/defaults_oxcnc // Grbl设置OpenBuilds牛数控机床
& M. t# K' p- e; G8.defaults/defaults_simulator
y% I& l: B, m8 g, x* z. u
* G5 o+ X, {: i1 q# A/*$ F W6 ]6 w% `4 c: i$ U. R( U
defaults.h - defaults settings configuration file8 j! l% C$ {0 Y% _! h8 K
Part of Grbl# p5 C) z# L& i' f! n( U
( O& n' _5 f5 j Copyright (c) 2012-2015 Sungeun K. Jeon8 u: X) m: S# ~" C6 L. s* g
: E6 n% e2 _; _8 C- F. s* T Grbl is free software: you can redistribute it and/or modify6 X+ L; n. P9 t$ D- [$ a; L
it under the terms of the GNU General Public License as published by' `) q. t; x `6 h6 K$ z( V! M
the Free Software Foundation, either version 3 of the License, or4 X/ |' M" H/ \# y9 E H6 I! G' n
(at your option) any later version.* U5 b% v) ~$ V& n- o, r+ S
! ]3 ]. P# B6 i+ K Grbl is distributed in the hope that it will be useful," @3 J' Y( q ?6 [
but WITHOUT ANY WARRANTY; without even the implied warranty of
# Q; x; V) r+ b1 t MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the/ E2 P" y) i% Z# a
GNU General Public License for more details.
3 Z. u# z0 K" N( ^2 t
/ O9 { S9 J5 k5 _' m You should have received a copy of the GNU General Public License
: n- w& }6 z2 Y8 t+ P2 R* Q9 [) p along with Grbl. If not, see <http://www.gnu.org/licenses/>.
9 R( T4 I8 V- j*/) J& r$ z' o3 n9 e
* j( E( j! B5 N! @' @. y0 P y2 r/* The defaults.h file serves as a central default settings selector for different machine3 s; a s6 ~) J' b; q! |0 X% [4 ~
types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings
- u8 a2 H; l" Z8 U2 P3 e files listed here are supplied by users, so your results may vary. However, this should
: N) r& `0 V# U: s give you a good starting point as you get to know your machine and tweak the settings for2 l: m" K: [' F3 ^" P
your nefarious needs.3 j- `' {2 `9 D9 `3 {. @- i7 R
Ensure one and only one of these DEFAULTS_XXX values is defined in config.h
8 d" M/ L0 c1 h/ D* }0 f5 I3 c- P( Q3 B ^3 o
The defaults.h文件作为一个中央默认设置选择不同的机器1 v4 [$ d: I, ~- ?0 U
类型,从DIY米尔斯数控CNC转换的现成的机器。的设置
0 O9 [# ^. w Y% ]. u# ` 这里列出的文件是由用户提供的,所以您的结果可能不同。然而,这应该' h) i f1 U* N: K* z2 d3 x9 F$ |
给你一个很好的起点,你了解你的机器和调整设置* Y" Q# F" F v+ E" ~0 ?& i6 H- h
你的个性的需求。
+ R# H' o* Z, q% m 确保一个且只有一个这些DEFAULTS_XXX config.h中定义的值5 C3 v* H4 ], B) W. a) E
*/
6 I* U4 c+ Y- P k/ V7 `6 H3 D8 R1 l% Z
#ifndef defaults_h
9 Q3 c* R6 m. h! A. E) X
- q0 y0 G" ^7 k# c8 Y; e// Only define the DEFAULT_XXX with where to find the corresponding default_XXX.h file.
& y- n' @; A2 i+ H+ V5 `) `- b// Don't #define defaults_h here, let the selected file do it. Prevents including more than one." k" R' v6 ^7 h. y+ k: Q
//只有定义DEFAULT_XXX在哪里可以找到相应的DEFAULT_XXX。h文件。1 K3 E$ Y9 O/ n6 C
//别在这里# define defaults_h,让选中的文件。防止包括不止一个。
0 `! j7 J& t9 F7 B9 e# i, u3 Q/ O) B' r! \2 @' b: J. N
#ifdef DEFAULTS_GENERIC
1 l5 Q8 f# E/ o; p& f2 ` // Grbl generic default settings. Should work across different machines.
: ? m4 {, E2 R6 L9 U: O' i // Grbl通过通用默认设置就可以在不同的机器上工作。# S: d$ [" ~. }/ M6 u S% B
#include "defaults/defaults_generic.h"
7 A' H) s4 u. `8 `( D0 G#endif4 j2 j; } m4 ^( A. V. s) W
& Q8 ]- g' o- L- x( ^+ m. B$ p: r#ifdef DEFAULTS_SHERLINE_5400
! ]* T% K: V$ r+ f e // Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors,. C% A* y4 D$ t6 m" B
// driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding.0 Y: Y. j" k* v& O' \5 O0 P
//描述:Sherline 5400制造厂三个NEMA 23客户KL23H256-21-8B 185扭力步进电机," r" r/ c/ x) q r. i
//由三个Pololu A4988步进驱动30 v,6在每1.5绕组供电。9 K" `& ?$ K) X) K5 C1 P/ p* E
6 r, u1 u. F; T3 H5 h #include "defaults/defaults_sherline.h"
$ K* o W0 ^" ~$ |; u& f#endif
1 }$ s! o: @# h4 \: @* L W f! k$ W' |4 X5 B" Z; ^ T2 o
#ifdef DEFAULTS_SHAPEOKO* L. ^" u9 C% y5 r; [
// Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos
9 Q* q! Q! N3 ]5 l* c& r0 y // grblShield with a 24V, 4.2A power supply.
+ L9 |* J' a1 g( t% Z5 b1 ^9 d$ a% p // 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的
) E( O, n4 u. x8 e1 V // grblShield 24 v,4.2电源。# w# ]) P- P6 c- M5 H
" |8 j- f& V: S8 p: ]
#include "defaults/defaults_shapeoko.h"
1 }+ V% D2 t% C v#endif0 h2 }1 d* Q! Z$ |4 ^
* @( |' t* q( R! i6 L6 ^# r
#ifdef DEFAULTS_SHAPEOKO_28 A4 W. X' T o Z; G6 D! x
// Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos
' _! I* J( L+ D" {7 m: ? // grblShield at 28V.* x* _3 Y, \8 U- i+ t, O& g9 e/ m
// 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的
5 E J: {/ E ? // grblShield 28 v。
* E$ f( h5 U2 y$ V) B. K6 T3 n: q5 B+ r |
#include "defaults/defaults_shapeoko2.h"
- m% l8 X0 q8 N2 W) k# }5 l9 O# u- ~#endif& l4 u& @2 i& c6 }4 ~& L
3 [/ b4 p5 ?+ K- r7 P# }/ Q#ifdef DEFAULTS_SHAPEOKO_3( Z3 t- ]0 { e6 V
// Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion. j' Z7 _0 n, d w" O
// 描述:Shapeoko数控机有三个NEMA 23步进电机,由CarbideMotion驱动的
0 O+ O# s- W, a I/ S' a3 k* O, e9 T; K1 i$ Q+ V1 L# S
#include "defaults/defaults_shapeoko3.h"
4 N' I( M" n& n$ ^1 `#endif
, `9 R0 B/ s) X* ^! L; j% V) [! k( a/ l; F
#ifdef DEFAULTS_X_CARVE_500MM
' l/ } [: i/ S$ s // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos: G; e) B- t7 V/ {! ^6 T2 V4 w+ E
// grblShield at 24V.: _- L9 |+ Y7 d+ x7 R( }
// 描述:X-Carve 3 d卡佛数控机有三个200步/汽车由Synthetos牧师grblShield 24 v。3 `0 G' v) s& W( N$ n; o8 _
#include "defaults/defaults_x_carve_500mm.h"
7 Q6 \% z y! C. \* `' ^#endif
# j& n% q2 f* z$ r/ J0 L/ e$ D
' p# g) ]. y1 m* z#ifdef DEFAULTS_X_CARVE_1000MM
- d: ^( K7 _2 S, ]& g- Y7 q( r // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos3 P! V- Z: Q8 a' ]5 m. H' z; X
// grblShield at 24V.% ^8 r4 Q# B& n& ^7 W% X
#include "defaults/defaults_x_carve_1000mm.h", v+ `0 F$ y" [3 X5 \ ?$ I
#endif, i8 Y5 J0 Q7 f
& I& T, A. T/ r m9 a
#ifdef DEFAULTS_ZEN_TOOLWORKS_7x7" [9 G# @, O3 f% |3 P' z; P
// Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors.; X* Q9 s8 y# w* c# u& v9 x, x5 ?5 q
// Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here.
$ o1 F0 w/ @3 I7 r/ N" s // Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers.
- x$ ]/ T0 ?" C5 f5 _' ? //描述:禅宗Toolworks 7 x7机有三个Shinano SST43D2121 65扭力NEMA 17步进电机。
; N! C! w- M; i. B) P& P //导螺杆不同于一些ZTW包,大多数是1.25毫米/牧师而不是8.0毫米/牧师。
0 Q% D, L0 ]- z$ S; F) K //由30 v 6电源和TI DRV8811步进电机驱动程序。$ {2 ~0 P6 f# A
% [* ^6 s& ?$ t: Y* J& d #include "defaults/defaults_zen_toolworks_7x7.h"
% Y4 s% w9 f2 O6 V1 A9 w. Z#endif
9 J6 p% I! K& x; U' D7 m' d5 }& \2 ]) C" z. e% P& }0 o' W0 F! B
#ifdef DEFAULTS_OXCNC
2 s, E. p' Z# a7 [7 I( w% B* l0 D* u, m // Grbl settings for OpenBuilds OX CNC Machine6 O5 n5 p0 d8 |/ A& ]) q& u
// http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/
5 M. P# H: z9 ~ ~8 N3 y
. r, y! W& S- E4 h // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/
4 q$ z. L) p8 }0 u7 `1 u #include "defaults/defaults_oxcnc.h" // Grbl设置OpenBuilds牛数控机床
}0 t* I' u* X& b, K#endif
" C; t/ S' W/ v3 j6 q [2 f
) l% L) k5 \) e5 d3 u#ifdef DEFAULTS_SIMULATOR
" N+ k5 J2 P( Z; x8 l6 I // Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim)
) J8 j% A; S1 t4 h3 @ #include "defaults/defaults_simulator.h" //设置只对Grbl模拟器(www.github.com/grbl/grbl-sim)1 N; Y; Q9 l& Q" X. S. G
#endif
. b2 ^. f' x$ @
" C( r" x" P3 J7 I C! @' z" @$ a#endif0 V q4 v& }5 C! ~& h4 h
. [0 X* _! F1 j9 q! ?4 Y
__________________________________________________________________________________________________________________) r ~, Q2 g" q
/*
, Y" j. o) {$ K$ ^) w) j+ _! S+ cdefaults_generic.h -默认设置配置文件Grbl的一部分
8 I) s! n8 H9 o9 M7 @- D2 X版权(c)2012 - 2015 Sungeun k全' C; k. K; q; y* C0 T3 R
Grbl是免费软件:可以重新分配和/或修改$ n. L0 Y3 Y+ n8 q
GNU通用公共许可证的条款下发布的
1 T$ [- c/ n' o0 C自由软件基金会,版本3的许可,或! U' f3 u/ n0 f) }9 N
(任您选)其后的版本。
4 b% a% r5 }2 y4 A5 o' ^' D( Y9 t7 r( h' [& B
Grbl分布,希望这将是有用的,
& x" h! T( I/ y8 L4 i; y但是没有任何保证;没有即使的默示保证* Y, ]) F- k$ i* `
适销性或健身为特定目的。看到
/ I3 I+ v# G8 |2 f& i; B, e3 ^GNU通用公共许可证的更多细节。5 V$ _* Z* h2 w( h+ d
* y8 |7 D* J, a0 c( e你应该收到了GNU通用公共许可证的副本
D9 w: k1 U+ b. K6 y7 ?& J连同Grbl。如果没有,看< http://www.gnu.org/licenses/ >。+ d# u; v& L8 x" ?8 [* H
* /
2 i) A, v- o3 _) |# C0 P) S$ u5 Y
- Q- o# b z+ j) D' D# {' K. h: j: T/ *默认值。h文件作为一个中央默认设置文件不同的机器
$ [2 J% ?2 s5 [; z类型,从DIY米尔斯数控CNC转换的现成的机器。的设置
; U X; P+ v( O" x( }/ S5 ?这是由用户提供,所以您的结果可能不同。然而,这应该给你3 n6 F8 U5 _0 j6 M, K. A- `
一个好的起点,你了解你的机器和调整的设置
2 ~1 @2 T1 h6 Z+ Z3 X& j9 X+ w邪恶的需求。*/
; ~6 q( H l# A) d
0 M, a" u, @2 b
! J; i- W9 \) C ^) U#ifndef defaults_h
, I. r" J$ w9 n+ j#define defaults_h$ W) t! F* t: W; S
+ j0 ~: u$ u* g2 [7 D
// Grbl generic default settings. Should work across different machines.
- a/ W. L+ g c$ o, L+ g: W #define DEFAULT_X_STEPS_PER_MM 250.0 //X轴每mm脉冲当量 1 H1 n) w7 ]! b/ |" I4 G
#define DEFAULT_Y_STEPS_PER_MM 250.05 M) s. [$ L1 _9 F4 o, O0 P" ]
#define DEFAULT_Z_STEPS_PER_MM 250.0* d4 B: P+ L! n* H8 C( q( n
#define DEFAULT_X_MAX_RATE 500.0 // mm/min 最大速度
! v: Z+ U2 m2 t! g( W #define DEFAULT_Y_MAX_RATE 500.0 // mm/min
1 J' n; K1 _# @2 L #define DEFAULT_Z_MAX_RATE 500.0 // mm/min
" M k. n2 c; E6 h/*这是毫米/秒/秒的加速度。
* g3 A T6 H: Q, L. ]4 d你不需要理解这是什么意思,我只想说,一个较低的值给smooooother加速度而价值更高的收益率更严格的措施,达到所需的进料速度更快。2 }- N5 K4 q9 `% q0 r s
从技术角度讲,这是您的机器的点对点的加速度,独立于轴。设置加速度值高达你最限制轴可以让你在不丢失任何步骤。
4 m' d' D" p. e% o3 H通常你想给自己一些缓冲,因为如果你失去了步骤,Grbl不知道这发生了(开环控制步进),并将继续。*/5 G" Z2 A0 a# z/ @0 Z7 f" R# \
#define DEFAULT_X_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 加速度
" Z/ O. ]' n/ b' b M #define DEFAULT_Y_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2% d+ n. k! t9 Z& q' o
#define DEFAULT_Z_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2- T' E5 q9 `2 d2 }5 M m
#define DEFAULT_X_MAX_TRAVEL 200.0 // mm 最大步行
5 {* Y! }' w; t4 j+ [, O #define DEFAULT_Y_MAX_TRAVEL 200.0 // mm
* _2 k9 B6 I$ o #define DEFAULT_Z_MAX_TRAVEL 200.0 // mm
! J" A. X2 i$ d1 [0 U! [ #define DEFAULT_STEP_PULSE_MICROSECONDS 10 //步进驱动脉冲长度 o. E' V! w) _4 ?
#define DEFAULT_STEPPING_INVERT_MASK 0 //步进是否反转
$ K$ V0 r2 E) U L3 m #define DEFAULT_DIRECTION_INVERT_MASK 0 //方向是否反转! i2 n7 ]/ z: h6 g
/*+ Y8 P0 T5 @$ r( ?* l$ f- e
每次你完成步进运动和停止,Grbl将禁用默认步进。7 J( C% @* \# |% {
锁步进空闲时间时间长度Grbl将步进锁之前禁用。
0 @4 A- {$ R) ^* B根据系统中,您可以将这个参数设置为零,禁用它。对他人,你可能需要25 - 50毫秒来确保你的斧子来完成禁用前停止。(我的机器往往漂移稍微如果我没有启用。)
1 X8 ?$ v5 A! Z H/ U Q或者,你可以让你的轴在任何时候启用通过将这个值设置为最大255毫秒。再次重复,你总是可以保持所有轴通过设置启用7美元= 255。*/5 i/ S9 ?8 n7 ?5 I* Y. |' ]* n
#define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled)步进闲着时间
7 [; l4 V- l. n" k# X #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) //是否打印状态报告: i7 Q$ d5 S5 `; \( D
/*一些高低cnc-stepper控制器需要输入反方向和步骤。" p( w4 _0 m+ k
信号线路通常是高或低信号方向或高,低了几微秒一步事件信号。为了达到这个目标,Grbl可以反转输出比特来满足特定的需求。8 \! X- W! q$ \) c% ^9 S
反掩码值是一个字节,xor的步骤和方向步进港数据之前发送。这样你可以使用这两个转化步骤脉冲或转化的一个或多个方向的轴。9 k6 m! P4 S0 _1 T: k1 ?
这个字节对应的比特分配给介入config.h别针。请注意,不用于反演位0和1。默认比特分配是这样的:*/7 v7 }6 U! `$ P h5 z
: o6 ]- v3 m: v x
/* 转弯路口偏差使用加速度经理决定它如何快速穿过一条路径。
/ V: h9 k5 w( k; d J. `% u 数学有点复杂,但总的来说,更高的价值给一般快,可能的波动运动。低价值使得加速度经理更加谨慎,将导致小心和慢转弯。
) c% |# S/ |1 k 如果你遇到问题,你的机器试图把一个角落太快,降低此值使它慢下来。7 P7 }8 C/ Q8 z2 t' s/ h+ Y
如果你想让你的机器通过连接移动得更快,增加这个值速度。# n! |6 r7 X( n
为技术人员,点击这个链接阅读关于Grbl转弯算法,速度和结角占一个很简单,高效和可靠的方法。*/
# v7 u- Y- t2 K1 |( r, o: U y9 E5 H8 v- X8 d/ r4 V( P
#define DEFAULT_JUNCTION_DEVIATION 0.01 // mm //偏差
- n5 y7 p$ \" {" W$ d- ?; T$ ~: k #define DEFAULT_ARC_TOLERANCE 0.002 // mm //圆弧公差
9 }+ _( W) L" V( S* J" b #define DEFAULT_REPORT_INCHES 0 // false //打印英寸* Y0 ~9 f/ K0 w
/*默认情况下,步进使销是启用禁用高和低。如果您的设置需要相反的,只是反步进使销通过输入15美元= 1。禁用与15美元= 0。(可能需要一个动力循环加载的变化。)*/
$ [1 w4 c$ \6 e #define DEFAULT_INVERT_ST_ENABLE 0 // false
' L* Z' L" n2 v0 g) Y #define DEFAULT_INVERT_LIMIT_PINS 0 // false //反转限位引脚" G; q/ `+ e7 j. O( r3 D
#define DEFAULT_SOFT_LIMIT_ENABLE 0 // false //软件限位
: ^3 R# ~9 C- y* u4 y9 ^4 Z #define DEFAULT_HARD_LIMIT_ENABLE 0 // false //硬件限位7 }8 {& }* U& ` \$ I' Q0 I
#define DEFAULT_HOMING_ENABLE 0 // false //回原点使能
' o: o5 ^9 j6 B. d% b #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir
$ H: {/ }! g% t7 e- Q# h3 Y* y7 h #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min
: ~- H& v% q/ n* g6 W" Y; b #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min4 I9 D" p6 Y9 l: U
#define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)防抖动延时/ l. L8 v. p1 S# G8 k
#define DEFAULT_HOMING_PULLOFF 1.0 // mm
2 v9 s; h) G K9 A& L u, V& Y) ^7 N5 U! b
#endif, m1 |$ i; ~; } i) H
9 r( ]7 z0 d5 x9 |- }1 I& [
; B$ A4 [) x# k `3 p' U% g @. n
3 ?8 h! d0 _( M. o+ o9 h! k- |" d& c
+ ~1 g* b+ `8 v( E% K0 x- |' ?2 i' b$ y$ B& J* v% }2 Y5 U& y
+ E( h2 a2 }8 k W
+ \: `+ } n2 p
* M' T: g& M* e1 T% ^ h: L/ z+ O3 Y
% _4 q7 W6 {" X. P
. ~1 ~" I3 o3 G9 o
! }. C- ~0 x- \* f
* b1 r/ n! v, d
. q/ G" @, Y- B& H4 i& n5 w6 R) |
# i" M6 \1 r- n+ j: l8 u4 A) w* H
/ v0 d/ S {8 Z9 Y* l; p8 _: g* g) i9 J$ }4 W+ e
; [* L8 {8 s5 B5 f; T
6 N* r# A& c: [2 Y" z" ]1 `2 b/ ]& I6 l
" G! x; @ @) I4 s" ^3 y! x% A" K: r' P# r4 ^
* F2 b; L! C |: B9 C1 G/ y
, Z' f. \) g a5 L6 _! x$ P0 F$ D: \
$ c' @2 d+ f" ]) y6 m
9 b: ?* [# M" `" m# f/ B |