Compare commits
688
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
350d58489b | ||
|
|
8c6d8c831a | ||
|
|
0b27c1ff5c | ||
|
|
39cf81a110 | ||
|
|
b0bf8df1bd | ||
|
|
a073e2e23e | ||
|
|
9da6aa7fce | ||
|
|
304bebf64f | ||
|
|
982a58fae5 | ||
|
|
7afe22f410 | ||
|
|
f7da9c542c | ||
|
|
c3ea26f000 | ||
|
|
0d2c38299e | ||
|
|
563611eb20 | ||
|
|
af87575012 | ||
|
|
4964870e9d | ||
|
|
b2ef6adbd3 | ||
|
|
cf8d0eda75 | ||
|
|
437adfeed6 | ||
|
|
357318540d | ||
|
|
14ab329746 | ||
|
|
ed473c6c47 | ||
|
|
ac4b65664f | ||
|
|
d88c1dfdc2 | ||
|
|
9e955bcec7 | ||
|
|
f04f98943d | ||
|
|
2f62338d12 | ||
|
|
ae0a047c41 | ||
|
|
5bcb39e255 | ||
|
|
0fa4c77987 | ||
|
|
22cc1a8d17 | ||
|
|
96861ca49c | ||
|
|
faf49f4c32 | ||
|
|
9212bd43bb | ||
|
|
727d4830d7 | ||
|
|
ff9a62713b | ||
|
|
e18296c270 | ||
|
|
2a1ac616b3 | ||
|
|
a47255c2c5 | ||
|
|
ffb62fa3fb | ||
|
|
114537f6e0 | ||
|
|
922714a0d9 | ||
|
|
5867b5233f | ||
|
|
d40a588e25 | ||
|
|
8f23b5d58e | ||
|
|
9eac4d9830 | ||
|
|
6ebfd7c182 | ||
|
|
b7b5839197 | ||
|
|
813df80e20 | ||
|
|
0bd37314fe | ||
|
|
6a81b77260 | ||
|
|
c0c6bcf7e2 | ||
|
|
098aae410a | ||
|
|
e40377d570 | ||
|
|
7afcab4652 | ||
|
|
e98480b5d1 | ||
|
|
d0a7df337f | ||
|
|
e0d2048d5f | ||
|
|
f14ec357d5 | ||
|
|
c58cc7f596 | ||
|
|
22b5c957c0 | ||
|
|
90173ad966 | ||
|
|
608061b95d | ||
|
|
793e8707a1 | ||
|
|
54a43f06e1 | ||
|
|
820bb66350 | ||
|
|
9b71bbc970 | ||
|
|
3909aa160a | ||
|
|
d5c1a378d1 | ||
|
|
f6bfb14def | ||
|
|
d22da51783 | ||
|
|
a75fdb27c5 | ||
|
|
cd7ca05378 | ||
|
|
b00dc2acea | ||
|
|
0f1bf1dfcd | ||
|
|
8bfd124212 | ||
|
|
7600c90882 | ||
|
|
e9733ed876 | ||
|
|
b9e2c650e6 | ||
|
|
494de4033d | ||
|
|
56d1fae10a | ||
|
|
adad2490e5 | ||
|
|
b23f279353 | ||
|
|
3e105a0493 | ||
|
|
b9c5cecfb2 | ||
|
|
f8852c2d27 | ||
|
|
9461afb721 | ||
|
|
2108808ae3 | ||
|
|
6fa00d923c | ||
|
|
b4567f40fb | ||
|
|
415676b6cc | ||
|
|
c780a6986b | ||
|
|
9eaf3f4417 | ||
|
|
c2c3ae0fd2 | ||
|
|
812af97447 | ||
|
|
e689dd6d8b | ||
|
|
4d2c6c07ae | ||
|
|
30096b8f37 | ||
|
|
3be6466a85 | ||
|
|
f023a88ec1 | ||
|
|
4c2bb361ae | ||
|
|
1de901f161 | ||
|
|
9f93666519 | ||
|
|
48daea20d7 | ||
|
|
218aaef118 | ||
|
|
87911dacd5 | ||
|
|
54e726cf5e | ||
|
|
a4cf402084 | ||
|
|
f590fecfc2 | ||
|
|
6077ea910c | ||
|
|
d1f4f33cfd | ||
|
|
d8c9d8cdab | ||
|
|
feae5574b8 | ||
|
|
4fc69e49a9 | ||
|
|
c6a852234d | ||
|
|
44395237b8 | ||
|
|
c5fa320239 | ||
|
|
41330f4256 | ||
|
|
96bf2f0db8 | ||
|
|
2b057af9e1 | ||
|
|
b71684744f | ||
|
|
b50e51b374 | ||
|
|
3e5120c543 | ||
|
|
ef21d8eab0 | ||
|
|
97e3494256 | ||
|
|
d69f9a3c82 | ||
|
|
63bd0348b3 | ||
|
|
b9d43d06cc | ||
|
|
e2d3fe9d9a | ||
|
|
7b5872ec86 | ||
|
|
fad8e257c0 | ||
|
|
f8b5bcd27e | ||
|
|
800833b7ac | ||
|
|
e8e03ac303 | ||
|
|
5ec9ae4271 | ||
|
|
f7eec4f4c0 | ||
|
|
5c467f0ca8 | ||
|
|
aa3b085384 | ||
|
|
d02c3880d5 | ||
|
|
3ac0728e5a | ||
|
|
c778e814db | ||
|
|
af909fcc13 | ||
|
|
c69da0a350 | ||
|
|
0ff5d45ba8 | ||
|
|
5d9c0573c0 | ||
|
|
4c7caadb72 | ||
|
|
f9f3910dd2 | ||
|
|
53c0e3e9ee | ||
|
|
c57c64b633 | ||
|
|
97473d47fd | ||
|
|
5363c7946b | ||
|
|
f4772d4f21 | ||
|
|
46ccaae829 | ||
|
|
c69c9af931 | ||
|
|
d33e5bc475 | ||
|
|
dce3f18229 | ||
|
|
cae33b69f2 | ||
|
|
18df0602d3 | ||
|
|
41b173ed54 | ||
|
|
9630fbf4e0 | ||
|
|
a6f3e645f5 | ||
|
|
de5560cd3d | ||
|
|
9551edf4d8 | ||
|
|
52493c7c19 | ||
|
|
59dfac3569 | ||
|
|
c2acdcbbb6 | ||
|
|
c439d66728 | ||
|
|
d6bb3fa306 | ||
|
|
297f4163c2 | ||
|
|
9d09780605 | ||
|
|
199e9cf8d9 | ||
|
|
24ed83aa5e | ||
|
|
cec3885c43 | ||
|
|
fb2adee968 | ||
|
|
a0497d8f5c | ||
|
|
02e32996c7 | ||
|
|
50df6b7981 | ||
|
|
7a56d1c7c1 | ||
|
|
75b0ea543f | ||
|
|
c035206443 | ||
|
|
c00650f1ad | ||
|
|
6151e957cf | ||
|
|
9dce0c9445 | ||
|
|
7ccf694ae1 | ||
|
|
f814205d5c | ||
|
|
c2e51f6b6b | ||
|
|
d5a13cdaea | ||
|
|
49b1c0c23f | ||
|
|
5a45495e3e | ||
|
|
c11cc20948 | ||
|
|
0bcf9a361d | ||
|
|
f09e2633a0 | ||
|
|
b45eed2d28 | ||
|
|
a2228c6e1f | ||
|
|
93d9ec37ea | ||
|
|
fc7d5b6fc5 | ||
|
|
2fe12879bd | ||
|
|
bfa2760c57 | ||
|
|
b669f9c02d | ||
|
|
c292d18cd9 | ||
|
|
ee29a03a66 | ||
|
|
b7079a11a3 | ||
|
|
0a7da61b45 | ||
|
|
7c8882ffac | ||
|
|
1cf1e10389 | ||
|
|
7b616582ed | ||
|
|
27f1add26d | ||
|
|
92e5ffba6e | ||
|
|
5bf83175c3 | ||
|
|
20fe4a9cb0 | ||
|
|
942eb7b67d | ||
|
|
f1aa52389a | ||
|
|
0913112f4a | ||
|
|
e875d1f0e6 | ||
|
|
9a7090334d | ||
|
|
904c2413b2 | ||
|
|
9f51efdbcb | ||
|
|
7c60329b07 | ||
|
|
c0b97af1cc | ||
|
|
cb76aded0a | ||
|
|
f99b87fe07 | ||
|
|
7decbbf274 | ||
|
|
b722b10127 | ||
|
|
2afef66e23 | ||
|
|
145064a15e | ||
|
|
1884108a33 | ||
|
|
06cc3383dc | ||
|
|
bc98fcfe37 | ||
|
|
411ee4bf23 | ||
|
|
8388ec6617 | ||
|
|
db49f4e08b | ||
|
|
060d302bf2 | ||
|
|
48265996f2 | ||
|
|
191f5fa878 | ||
|
|
dcee936fe3 | ||
|
|
102aea40d6 | ||
|
|
443ad81ceb | ||
|
|
dfe615ffcb | ||
|
|
669d4a7ab7 | ||
|
|
0494c25213 | ||
|
|
b5b3b4fb18 | ||
|
|
69c9aa98f0 | ||
|
|
bf11c5f1aa | ||
|
|
393d4ffbb2 | ||
|
|
1717b24efd | ||
|
|
cc82753e8d | ||
|
|
18f861a852 | ||
|
|
8e0252bf74 | ||
|
|
c04e7270d2 | ||
|
|
dbee8e3766 | ||
|
|
e176515758 | ||
|
|
50125a90f3 | ||
|
|
778f81b61b | ||
|
|
ad5fe95854 | ||
|
|
6a3a4ddb0a | ||
|
|
a816bee305 | ||
|
|
3cb0cfc899 | ||
|
|
a7cc43e387 | ||
|
|
93f1a07547 | ||
|
|
9a18bfba1f | ||
|
|
e024803565 | ||
|
|
d57f3678c6 | ||
|
|
2f4233531e | ||
|
|
20e3a6ee3f | ||
|
|
3d06e79119 | ||
|
|
0698667cfc | ||
|
|
c7a79b2adb | ||
|
|
674b0b1ffe | ||
|
|
157b0a473a | ||
|
|
31d1d4b331 | ||
|
|
fdbddb114e | ||
|
|
eb582eb919 | ||
|
|
c8a10f762b | ||
|
|
0c21782b13 | ||
|
|
b6450b1719 | ||
|
|
53353465e9 | ||
|
|
40cd1c35c4 | ||
|
|
082403acec | ||
|
|
c8df795fe7 | ||
|
|
05d5fcf0bb | ||
|
|
6e6b7fcb8d | ||
|
|
e14bc49752 | ||
|
|
5f0e65f57e | ||
|
|
955d949d5a | ||
|
|
fa8ee9b314 | ||
|
|
5a44dd4ecd | ||
|
|
099495b524 | ||
|
|
eb764c5c0f | ||
|
|
8264f5842c | ||
|
|
ba09474389 | ||
|
|
2bb198edb8 | ||
|
|
50fda020fc | ||
|
|
d36484c43e | ||
|
|
66e661897c | ||
|
|
4e27b94a86 | ||
|
|
fdfd11abe6 | ||
|
|
1fd8c1e4a4 | ||
|
|
b1710aac0b | ||
|
|
1a4810947f | ||
|
|
92afde42b5 | ||
|
|
ee79e4671e | ||
|
|
59c53c4532 | ||
|
|
f2eef2cb10 | ||
|
|
c52a46ccf0 | ||
|
|
3f4c7b0bed | ||
|
|
85d88339de | ||
|
|
c4eb26cb09 | ||
|
|
1ec25f23e2 | ||
|
|
298385ac96 | ||
|
|
8ff29cc4e2 | ||
|
|
9d19a49f2d | ||
|
|
e77d814bb4 | ||
|
|
4768f89c6e | ||
|
|
62a8e40aa2 | ||
|
|
f7c2c7ca81 | ||
|
|
3fdf7618d1 | ||
|
|
79d355f969 | ||
|
|
dfa4a5b758 | ||
|
|
a002781aa3 | ||
|
|
c717dd30f1 | ||
|
|
da62ec425c | ||
|
|
693c970800 | ||
|
|
2e963a0c32 | ||
|
|
fcf765daf3 | ||
|
|
cd55247fad | ||
|
|
3c6bd92fb7 | ||
|
|
bd7c8e6612 | ||
|
|
faf9d9b8a6 | ||
|
|
fd1dd0a30a | ||
|
|
dbfd7912b3 | ||
|
|
a8cd6b97d9 | ||
|
|
204e754cd1 | ||
|
|
95b7c8cbff | ||
|
|
147f499cab | ||
|
|
87347a35f6 | ||
|
|
fc31641858 | ||
|
|
b8e958a49f | ||
|
|
e0d3fd72c9 | ||
|
|
df9f97b9dc | ||
|
|
4438c3edbb | ||
|
|
d2a9cd79f3 | ||
|
|
ca0aaaab26 | ||
|
|
47a943587b | ||
|
|
8f04195847 | ||
|
|
efeef0373d | ||
|
|
08ff45d1f0 | ||
|
|
9635b857b4 | ||
|
|
449d25fa07 | ||
|
|
561ac80a7f | ||
|
|
b2671ddf6f | ||
|
|
4ef95e7ddb | ||
|
|
ced50e90fe | ||
|
|
dbf6acc1a2 | ||
|
|
b9ab8db8aa | ||
|
|
2fafaa54b9 | ||
|
|
237239c71c | ||
|
|
0ddc8b2887 | ||
|
|
3a89ec78f9 | ||
|
|
419b1ad689 | ||
|
|
96607ec154 | ||
|
|
e831935f1e | ||
|
|
5079b6527c | ||
|
|
c7129be29b | ||
|
|
e48d707edc | ||
|
|
c90ca4d98d | ||
|
|
03ec7049a4 | ||
|
|
7d542742fa | ||
|
|
19871105f6 | ||
|
|
557b8c54d9 | ||
|
|
1a12ca43d2 | ||
|
|
80817e23ce | ||
|
|
ae38886e14 | ||
|
|
83a94da5b1 | ||
|
|
284056b9fb | ||
|
|
1162d85394 | ||
|
|
2286c9afed | ||
|
|
e290122a3a | ||
|
|
a33345fafe | ||
|
|
5c68a6403c | ||
|
|
c25f224445 | ||
|
|
ad6d569a77 | ||
|
|
b795818cc5 | ||
|
|
b8dbba8149 | ||
|
|
fc7016ff5b | ||
|
|
26c3b62da7 | ||
|
|
3b97ee6e81 | ||
|
|
10c9a215c9 | ||
|
|
4637d9d4d9 | ||
|
|
bfc882ecf0 | ||
|
|
483c1ebf4a | ||
|
|
3098a31c46 | ||
|
|
fa2929a543 | ||
|
|
6e2ba84ad3 | ||
|
|
7adb277c07 | ||
|
|
7c64d80bc3 | ||
|
|
edb68d9b2c | ||
|
|
d91401df39 | ||
|
|
b63a41ef89 | ||
|
|
0b60ba975c | ||
|
|
aa2adc14fc | ||
|
|
829228cc2f | ||
|
|
cecba947cd | ||
|
|
4b0e4ecf27 | ||
|
|
e41ffc160b | ||
|
|
9fe4635abd | ||
|
|
e1dd777454 | ||
|
|
0eb8de2ce0 | ||
|
|
2f1d11ec3b | ||
|
|
2d63d6c0f1 | ||
|
|
e407fc2452 | ||
|
|
8034d50d4d | ||
|
|
8c5e266a8a | ||
|
|
718d217ad4 | ||
|
|
54a14f42ec | ||
|
|
f67736165f | ||
|
|
7997ad8502 | ||
|
|
54309a2eb2 | ||
|
|
0ed6d98bf2 | ||
|
|
ad58478121 | ||
|
|
e6f98a16e7 | ||
|
|
b31caa1e62 | ||
|
|
f5537b4e8d | ||
|
|
f210a32ffa | ||
|
|
8bed086121 | ||
|
|
50255052f0 | ||
|
|
eacf44f125 | ||
|
|
aa74ef418a | ||
|
|
7793ba7a2c | ||
|
|
6682ca3585 | ||
|
|
54d8611144 | ||
|
|
0800eda531 | ||
|
|
4f85aab263 | ||
|
|
99224bd858 | ||
|
|
323b5e9108 | ||
|
|
05300890ec | ||
|
|
fd43925e77 | ||
|
|
0c26701369 | ||
|
|
8876e98ef1 | ||
|
|
806df81f47 | ||
|
|
569a93d683 | ||
|
|
0ab7164ef7 | ||
|
|
bb8ac4203d | ||
|
|
0e9a3003ea | ||
|
|
880088cb39 | ||
|
|
ccb33e9bd6 | ||
|
|
888c773f5d | ||
|
|
7ab49a378a | ||
|
|
077a646f37 | ||
|
|
3d319d46c9 | ||
|
|
2a928a5a38 | ||
|
|
cd60c16805 | ||
|
|
0b8592db26 | ||
|
|
8509778c6a | ||
|
|
1685d5ff23 | ||
|
|
b155833920 | ||
|
|
7ca519b724 | ||
|
|
dd7a7a77b9 | ||
|
|
63571b0b51 | ||
|
|
c06dcf1293 | ||
|
|
568e55669c | ||
|
|
4af08a8e1a | ||
|
|
726197c61f | ||
|
|
0678c5d021 | ||
|
|
184dde0011 | ||
|
|
7c234e0710 | ||
|
|
8f2a2c21fb | ||
|
|
60a40f308f | ||
|
|
b28579dab6 | ||
|
|
77c18fe689 | ||
|
|
f8b9166554 | ||
|
|
866c222d08 | ||
|
|
767d13d36e | ||
|
|
018692c417 | ||
|
|
958ccf725f | ||
|
|
5b39a43854 | ||
|
|
a0e71155d7 | ||
|
|
eb15297f1d | ||
|
|
b77b95f211 | ||
|
|
07280761ec | ||
|
|
865d93cc06 | ||
|
|
496c88ff15 | ||
|
|
f06586e947 | ||
|
|
596f708ad7 | ||
|
|
21ffec2d10 | ||
|
|
aaad970a43 | ||
|
|
1458b1d6e1 | ||
|
|
566517fda5 | ||
|
|
4461c0d4f1 | ||
|
|
6c2f60a133 | ||
|
|
acef1e67ce | ||
|
|
3c0c95d83c | ||
|
|
719a4fce2f | ||
|
|
3b6c66df03 | ||
|
|
cffe69ec2d | ||
|
|
ed418f3695 | ||
|
|
fd255f46a0 | ||
|
|
baf53f19f2 | ||
|
|
aadd5eef6d | ||
|
|
f9b35b36a0 | ||
|
|
9ca1bb8687 | ||
|
|
dc27b95cd8 | ||
|
|
aaa1055c1e | ||
|
|
613446fbfc | ||
|
|
869ce02f6a | ||
|
|
10489a869c | ||
|
|
0b217bf631 | ||
|
|
34425764f3 | ||
|
|
580ccf3cfb | ||
|
|
eda9c36882 | ||
|
|
29b8e391e4 | ||
|
|
e49af7a8f7 | ||
|
|
e19e3ee404 | ||
|
|
4f4b021813 | ||
|
|
2ee1803fb9 | ||
|
|
c43b25b790 | ||
|
|
fc5176db88 | ||
|
|
61a57f2adf | ||
|
|
512c08f7b7 | ||
|
|
f7b051d6af | ||
|
|
04be64835d | ||
|
|
d6cd61d79d | ||
|
|
47d19d15c9 | ||
|
|
e7f3ae7dbf | ||
|
|
260698bef3 | ||
|
|
559efac415 | ||
|
|
decdf5beea | ||
|
|
8efe92d9bb | ||
|
|
15e5dff845 | ||
|
|
c4e4cd29b9 | ||
|
|
71169e4895 | ||
|
|
fb7d0bc684 | ||
|
|
5360381cd7 | ||
|
|
585f2fd560 | ||
|
|
65edc756ab | ||
|
|
e30d492032 | ||
|
|
58f7cfdbf0 | ||
|
|
5a511c6ff1 | ||
|
|
ea2fb633ce | ||
|
|
c59216296e | ||
|
|
fb4463e87e | ||
|
|
96ca56b832 | ||
|
|
e63022a1a4 | ||
|
|
1504362eab | ||
|
|
b29edd8971 | ||
|
|
c350e3acfe | ||
|
|
f1f188f4ea | ||
|
|
7618ec16cc | ||
|
|
9e53f876bb | ||
|
|
b5fff370e6 | ||
|
|
3a3864b7ee | ||
|
|
83eea12f09 | ||
|
|
4c95956627 | ||
|
|
7a176c6234 | ||
|
|
267606db63 | ||
|
|
78e9aa9f24 | ||
|
|
7483128bc9 | ||
|
|
a37b52cf59 | ||
|
|
09c0afaeae | ||
|
|
4ae1694c47 | ||
|
|
8fdd641b8c | ||
|
|
928197425b | ||
|
|
c683e9d189 | ||
|
|
f31f13bf6e | ||
|
|
9504180327 | ||
|
|
5211dae0cc | ||
|
|
3171d65908 | ||
|
|
562caefb3a | ||
|
|
1771c41ab9 | ||
|
|
f846ccae40 | ||
|
|
1712a39de3 | ||
|
|
7b79145ae0 | ||
|
|
a98c214f9c | ||
|
|
83b313edf6 | ||
|
|
60cd6d444b | ||
|
|
1001d28a86 | ||
|
|
c7ec124c5e | ||
|
|
667c1e574d | ||
|
|
963bd667fb | ||
|
|
ee4ca14fbe | ||
|
|
9a63bdf8f0 | ||
|
|
4ce249d0bc | ||
|
|
7c509803d6 | ||
|
|
a08afe789e | ||
|
|
3b8f80f99e | ||
|
|
a30cb77ff2 | ||
|
|
9190f4f652 | ||
|
|
9fa58a80a3 | ||
|
|
6880fb7e93 | ||
|
|
0ed69bcb82 | ||
|
|
34b99f9257 | ||
|
|
ea0e459f8d | ||
|
|
0e4091eff5 | ||
|
|
9e9fc72bc8 | ||
|
|
f77708c5c6 | ||
|
|
cfac778bf4 | ||
|
|
bfefef2b4c | ||
|
|
b819520e43 | ||
|
|
59d38c8a31 | ||
|
|
0820a2e4f8 | ||
|
|
3cced64fc2 | ||
|
|
9fe296bd34 | ||
|
|
62c0c19776 | ||
|
|
de61ba9b5c | ||
|
|
d515212db9 | ||
|
|
63152c61a5 | ||
|
|
14b3f34c12 | ||
|
|
db6dd0c31f | ||
|
|
df43d28ec5 | ||
|
|
1ce7105bb2 | ||
|
|
da5b683f32 | ||
|
|
ffacaa8a01 | ||
|
|
81c25e089c | ||
|
|
fbfd098391 | ||
|
|
810a5b50dd | ||
|
|
0315f98f10 | ||
|
|
3560cb6869 | ||
|
|
29c1db5068 | ||
|
|
4a4c146eb9 | ||
|
|
485277aa9f | ||
|
|
03004e6c09 | ||
|
|
30bcbcaf9b | ||
|
|
53f64220fe | ||
|
|
42098b1c06 | ||
|
|
869485ce30 | ||
|
|
887fc0cd28 | ||
|
|
2fd7436e01 | ||
|
|
b7b46394e7 | ||
|
|
6428c92c31 | ||
|
|
57eb3ddbcd | ||
|
|
5d736339e5 | ||
|
|
d79438d571 | ||
|
|
8c1cdbf142 | ||
|
|
f71d908f20 | ||
|
|
49c0e7df6d | ||
|
|
a6817695c2 | ||
|
|
7264383df5 | ||
|
|
f6432c23f3 | ||
|
|
b903ded8a5 | ||
|
|
e7c4b6d582 | ||
|
|
b2e3a33e4d | ||
|
|
2852a2254d | ||
|
|
50206fc990 | ||
|
|
b9ae9d9b25 | ||
|
|
71b552d4a7 | ||
|
|
f3491061aa | ||
|
|
918ff9a643 | ||
|
|
6dc9a24b53 | ||
|
|
852894278a | ||
|
|
1d7343fd7c | ||
|
|
bc4c7e8be1 | ||
|
|
0a44edcfe9 | ||
|
|
438b07ee47 | ||
|
|
f1161eb34e | ||
|
|
3b38ee7753 | ||
|
|
902d57e731 | ||
|
|
8a5babe8d4 | ||
|
|
e07898659e | ||
|
|
7ec636a847 | ||
|
|
f9fffe7283 | ||
|
|
dde7e32b82 | ||
|
|
638c20a9da | ||
|
|
3b21946e97 | ||
|
|
683f508f57 | ||
|
|
bf11b1db7b | ||
|
|
cb01775c6d | ||
|
|
898d4aa394 | ||
|
|
07dd8cca90 | ||
|
|
c9286691e0 | ||
|
|
37e3adfd9c | ||
|
|
7f33727937 | ||
|
|
fce8cfcb7a | ||
|
|
6d49e4d86a | ||
|
|
d3e5e966a7 | ||
|
|
4887368fad | ||
|
|
edfebb18ae | ||
|
|
bf1aa8397c | ||
|
|
ea3603e0d9 | ||
|
|
1c9b92fa35 | ||
|
|
0476dc409d | ||
|
|
386081b5b2 | ||
|
|
f3c17a817c | ||
|
|
61fe4470c0 | ||
|
|
28c450223d | ||
|
|
8c50d0d469 | ||
|
|
14891553d2 | ||
|
|
8adb43bc0c | ||
|
|
59980a5c14 | ||
|
|
308f682e9a |
No files matched your search
+6
-12
@@ -1,13 +1,7 @@
|
||||
.lock-waf_linux2_build
|
||||
.waf-*
|
||||
VERSION
|
||||
.DS*
|
||||
.waf-1*
|
||||
.waf3-*
|
||||
.lock*
|
||||
**/*.pyc
|
||||
build/
|
||||
docs/
|
||||
*.aux
|
||||
*.log
|
||||
*.out
|
||||
*.toc
|
||||
*.bbl
|
||||
*.blg
|
||||
*.gz
|
||||
figures/generic-lsdb-flow-eps-converted-to.pdf
|
||||
VERSION
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
|
||||
for file in "$DIR"/.jenkins.d/*; do
|
||||
[[ -f $file && -x $file ]] || continue
|
||||
echo "Run: $file"
|
||||
"$file"
|
||||
done
|
||||
Executable
+34
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
JDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
source "$JDIR"/util.sh
|
||||
|
||||
set -x
|
||||
|
||||
if has OSX $NODE_LABELS; then
|
||||
FORMULAE=(boost pkg-config openssl)
|
||||
brew update
|
||||
if [[ -n $TRAVIS ]]; then
|
||||
# travis images come with a large number of brew packages
|
||||
# pre-installed, don't waste time upgrading all of them
|
||||
for FORMULA in "${FORMULAE[@]}"; do
|
||||
brew outdated $FORMULA || brew upgrade $FORMULA
|
||||
done
|
||||
else
|
||||
brew upgrade
|
||||
fi
|
||||
brew install "${FORMULAE[@]}"
|
||||
brew cleanup
|
||||
fi
|
||||
|
||||
if has Ubuntu $NODE_LABELS; then
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get -qy install build-essential pkg-config libboost-all-dev \
|
||||
libsqlite3-dev libssl-dev
|
||||
|
||||
if [[ $JOB_NAME == *"code-coverage" ]]; then
|
||||
sudo apt-get -qy install lcov libgd-perl python-setuptools
|
||||
sudo easy_install --upgrade gcovr
|
||||
fi
|
||||
fi
|
||||
Executable
+56
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
JDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
source "$JDIR"/util.sh
|
||||
|
||||
set -x
|
||||
|
||||
pushd "${CACHE_DIR:-/tmp}" >/dev/null
|
||||
|
||||
INSTALLED_VERSION=
|
||||
if has OSX $NODE_LABELS; then
|
||||
BOOST=$(brew ls --versions boost)
|
||||
OLD_BOOST=$(cat boost.txt || :)
|
||||
if [[ $OLD_BOOST != $BOOST ]]; then
|
||||
echo "$BOOST" > boost.txt
|
||||
INSTALLED_VERSION=NONE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z $INSTALLED_VERSION ]]; then
|
||||
INSTALLED_VERSION=$(git -C ndn-cxx rev-parse HEAD 2>/dev/null || echo NONE)
|
||||
fi
|
||||
|
||||
sudo rm -Rf ndn-cxx-latest
|
||||
|
||||
git clone --depth 1 git://github.com/named-data/ndn-cxx ndn-cxx-latest
|
||||
|
||||
LATEST_VERSION=$(git -C ndn-cxx-latest rev-parse HEAD 2>/dev/null || echo UNKNOWN)
|
||||
|
||||
if [[ $INSTALLED_VERSION != $LATEST_VERSION ]]; then
|
||||
sudo rm -Rf ndn-cxx
|
||||
mv ndn-cxx-latest ndn-cxx
|
||||
else
|
||||
sudo rm -Rf ndn-cxx-latest
|
||||
fi
|
||||
|
||||
sudo rm -f /usr/local/bin/ndnsec*
|
||||
sudo rm -fr /usr/local/include/ndn-cxx
|
||||
sudo rm -f /usr/local/lib/libndn-cxx*
|
||||
sudo rm -f /usr/local/lib/pkgconfig/libndn-cxx.pc
|
||||
|
||||
pushd ndn-cxx >/dev/null
|
||||
|
||||
./waf configure --color=yes --enable-shared --disable-static --without-osx-keychain
|
||||
./waf build --color=yes -j${WAF_JOBS:-1}
|
||||
sudo env "PATH=$PATH" ./waf install --color=yes
|
||||
|
||||
popd >/dev/null
|
||||
popd >/dev/null
|
||||
|
||||
if has Linux $NODE_LABELS; then
|
||||
sudo ldconfig
|
||||
elif has FreeBSD10 $NODE_LABELS; then
|
||||
sudo ldconfig -m
|
||||
fi
|
||||
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
JDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
source "$JDIR"/util.sh
|
||||
|
||||
set -x
|
||||
|
||||
pushd "${CACHE_DIR:-/tmp}" >/dev/null
|
||||
|
||||
INSTALLED_VERSION=
|
||||
if has OSX $NODE_LABELS; then
|
||||
BOOST=$(brew ls --versions boost)
|
||||
OLD_BOOST=$(cat boost_chrono.txt || :)
|
||||
if [[ $OLD_BOOST != $BOOST ]]; then
|
||||
echo "$BOOST" > boost_chrono.txt
|
||||
INSTALLED_VERSION=NONE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z $INSTALLED_VERSION ]]; then
|
||||
INSTALLED_VERSION=$(git -C ChronoSync rev-parse HEAD 2>/dev/null || echo NONE)
|
||||
fi
|
||||
|
||||
sudo rm -Rf ChronoSync-latest
|
||||
|
||||
git clone --depth 1 git://github.com/named-data/ChronoSync ChronoSync-latest
|
||||
|
||||
LATEST_VERSION=$(git -C ChronoSync-latest rev-parse HEAD 2>/dev/null || echo UNKNOWN)
|
||||
|
||||
if [[ $INSTALLED_VERSION != $LATEST_VERSION ]]; then
|
||||
sudo rm -Rf ChronoSync
|
||||
mv ChronoSync-latest ChronoSync
|
||||
else
|
||||
sudo rm -Rf ChronoSync-latest
|
||||
fi
|
||||
|
||||
sudo rm -fr /usr/local/include/ChronoSync
|
||||
sudo rm -f /usr/local/lib/libChronoSync*
|
||||
sudo rm -f /usr/local/lib/pkgconfig/ChronoSync*
|
||||
|
||||
pushd ChronoSync >/dev/null
|
||||
|
||||
if has FreeBSD10 $NODE_LABELS; then
|
||||
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
|
||||
fi
|
||||
|
||||
./waf configure --color=yes
|
||||
./waf build --color=yes -j${WAF_JOBS:-1}
|
||||
sudo env "PATH=$PATH" ./waf install --color=yes
|
||||
|
||||
popd >/dev/null
|
||||
popd >/dev/null
|
||||
|
||||
if has Linux $NODE_LABELS; then
|
||||
sudo ldconfig
|
||||
elif has FreeBSD10 $NODE_LABELS; then
|
||||
sudo ldconfig -m
|
||||
fi
|
||||
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
JDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
source "$JDIR"/util.sh
|
||||
|
||||
set -x
|
||||
|
||||
git submodule init
|
||||
git submodule sync
|
||||
git submodule update
|
||||
|
||||
if [[ $JOB_NAME == *"code-coverage" ]]; then
|
||||
COVERAGE="--with-coverage"
|
||||
elif [[ -z $DISABLE_ASAN ]]; then
|
||||
ASAN="--with-sanitizer=address"
|
||||
fi
|
||||
|
||||
# Cleanup
|
||||
sudo env "PATH=$PATH" ./waf --color=yes distclean
|
||||
|
||||
if [[ $JOB_NAME != *"code-coverage" && $JOB_NAME != *"limited-build" ]]; then
|
||||
# Configure/build in optimized mode with tests
|
||||
./waf --color=yes configure --with-tests
|
||||
./waf --color=yes build -j${WAF_JOBS:-1}
|
||||
|
||||
# Cleanup
|
||||
sudo env "PATH=$PATH" ./waf --color=yes distclean
|
||||
|
||||
# Configure/build in optimized mode without tests
|
||||
./waf --color=yes configure
|
||||
./waf --color=yes build -j${WAF_JOBS:-1}
|
||||
|
||||
# Cleanup
|
||||
sudo env "PATH=$PATH" ./waf --color=yes distclean
|
||||
fi
|
||||
|
||||
# Configure/build in debug mode with tests
|
||||
./waf --color=yes configure --debug --with-tests $ASAN $COVERAGE
|
||||
./waf --color=yes build -j${WAF_JOBS:-1}
|
||||
|
||||
# (tests will be run against debug version)
|
||||
|
||||
# Install
|
||||
sudo env "PATH=$PATH" ./waf --color=yes install
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -x
|
||||
|
||||
# Prepare environment
|
||||
rm -Rf ~/.ndn
|
||||
|
||||
ut_log_args() {
|
||||
echo --log_level=test_suite
|
||||
}
|
||||
|
||||
ASAN_OPTIONS="color=always"
|
||||
ASAN_OPTIONS+=":detect_stack_use_after_return=true"
|
||||
ASAN_OPTIONS+=":check_initialization_order=true"
|
||||
ASAN_OPTIONS+=":strict_init_order=true"
|
||||
ASAN_OPTIONS+=":detect_invalid_pointer_pairs=1"
|
||||
ASAN_OPTIONS+=":detect_container_overflow=false"
|
||||
ASAN_OPTIONS+=":strict_string_checks=true"
|
||||
ASAN_OPTIONS+=":strip_path_prefix=${PWD}/"
|
||||
export ASAN_OPTIONS
|
||||
|
||||
# Run unit tests
|
||||
./build/unit-tests-nlsr $(ut_log_args)
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
JDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
source "$JDIR"/util.sh
|
||||
|
||||
set -x
|
||||
|
||||
if [[ $JOB_NAME == *"code-coverage" ]]; then
|
||||
lcov --quiet \
|
||||
--capture \
|
||||
--directory . \
|
||||
--no-external \
|
||||
--rc lcov_branch_coverage=1 \
|
||||
--output-file build/coverage-with-tests.info
|
||||
|
||||
lcov --quiet \
|
||||
--remove build/coverage-with-tests.info "$PWD/tests/*" \
|
||||
--rc lcov_branch_coverage=1 \
|
||||
--output-file build/coverage.info
|
||||
|
||||
genhtml --branch-coverage \
|
||||
--demangle-cpp \
|
||||
--frames \
|
||||
--legend \
|
||||
--output-directory build/coverage \
|
||||
--title "NLSR unit tests" \
|
||||
build/coverage.info
|
||||
fi
|
||||
@@ -0,0 +1,36 @@
|
||||
CONTINUOUS INTEGRATION SCRIPTS
|
||||
==============================
|
||||
|
||||
Environment Variables Used in Build Scripts
|
||||
-------------------------------------------
|
||||
|
||||
- `NODE_LABELS`: the variable defines a list of OS properties. The set values are used by the
|
||||
build scripts to select proper behavior for different OS.
|
||||
|
||||
The list should include at least `[OS_TYPE]`, `[DISTRO_TYPE]`, and `[DISTRO_VERSION]`.
|
||||
|
||||
Possible values for Linux:
|
||||
|
||||
* `[OS_TYPE]`: `Linux`
|
||||
* `[DISTRO_TYPE]`: `Ubuntu`
|
||||
* `[DISTRO_VERSION]`: `Ubuntu-14.04`, `Ubuntu-16.04`
|
||||
|
||||
Possible values for OS X / macOS:
|
||||
|
||||
* `[OS_TYPE]`: `OSX`
|
||||
* `[DISTRO_TYPE]`: `OSX` (can be absent)
|
||||
* `[DISTRO_VERSION]`: `OSX-10.10`, `OSX-10.11`, `OSX-10.12`
|
||||
|
||||
- `JOB_NAME`: optional variable to define type of the job. Depending on the defined job type,
|
||||
the build scripts can perform different tasks.
|
||||
|
||||
Possible values:
|
||||
|
||||
* empty: default build process
|
||||
* `code-coverage` (Linux OS is assumed): debug build with tests and code coverage analysis
|
||||
* `limited-build`: only a single debug build with tests
|
||||
|
||||
- `CACHE_DIR`: the variable defines a path to folder containing cached files from previous builds,
|
||||
e.g., a compiled version of ndn-cxx library. If not set, `/tmp` is used.
|
||||
|
||||
- `WAF_JOBS`: number of parallel build jobs used by waf, defaults to 1.
|
||||
@@ -0,0 +1,18 @@
|
||||
has() {
|
||||
local saved_xtrace
|
||||
[[ $- == *x* ]] && saved_xtrace=-x || saved_xtrace=+x
|
||||
set +x
|
||||
|
||||
local p=$1
|
||||
shift
|
||||
local i ret=1
|
||||
for i in "$@"; do
|
||||
if [[ "${i}" == "${p}" ]]; then
|
||||
ret=0
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
set ${saved_xtrace}
|
||||
return ${ret}
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
language: cpp
|
||||
dist: trusty
|
||||
sudo: required
|
||||
env:
|
||||
global:
|
||||
- JOB_NAME=limited-build
|
||||
- WAF_JOBS=2
|
||||
|
||||
matrix:
|
||||
include:
|
||||
# Linux/gcc
|
||||
# https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+packages
|
||||
- os: linux
|
||||
env: COMPILER=g++-4.8
|
||||
- os: linux
|
||||
env: COMPILER=g++-4.9
|
||||
addons:
|
||||
apt:
|
||||
sources: ubuntu-toolchain-r-test
|
||||
packages: g++-4.9
|
||||
- os: linux
|
||||
env: COMPILER=g++-5
|
||||
addons:
|
||||
apt:
|
||||
sources: ubuntu-toolchain-r-test
|
||||
packages: g++-5
|
||||
- os: linux
|
||||
env: COMPILER=g++-6
|
||||
addons:
|
||||
apt:
|
||||
sources: ubuntu-toolchain-r-test
|
||||
packages: g++-6
|
||||
- os: linux
|
||||
env: COMPILER=g++-7
|
||||
addons:
|
||||
apt:
|
||||
sources: ubuntu-toolchain-r-test
|
||||
packages: g++-7
|
||||
|
||||
# Linux/clang
|
||||
# https://apt.llvm.org/
|
||||
- os: linux
|
||||
env: COMPILER=clang++-3.5
|
||||
addons:
|
||||
apt:
|
||||
packages: clang-3.5
|
||||
- os: linux
|
||||
env: COMPILER=clang++-3.6
|
||||
addons:
|
||||
apt:
|
||||
packages: clang-3.6
|
||||
- os: linux
|
||||
env: COMPILER=clang++-3.7 DISABLE_ASAN=yes
|
||||
addons:
|
||||
apt:
|
||||
sources: ["llvm-toolchain-precise-3.7", "ubuntu-toolchain-r-test"]
|
||||
packages: clang-3.7
|
||||
- os: linux
|
||||
env: COMPILER=clang++-3.8
|
||||
addons:
|
||||
apt:
|
||||
sources: ["llvm-toolchain-precise-3.8", "ubuntu-toolchain-r-test"]
|
||||
packages: clang-3.8
|
||||
- os: linux
|
||||
env: COMPILER=clang++-3.9 DISABLE_ASAN=yes
|
||||
addons:
|
||||
apt:
|
||||
sources: ["llvm-toolchain-trusty-3.9", "ubuntu-toolchain-r-test"]
|
||||
packages: clang-3.9
|
||||
- os: linux
|
||||
env: COMPILER=clang++-4.0
|
||||
addons:
|
||||
apt:
|
||||
sources: ["llvm-toolchain-trusty-4.0", "ubuntu-toolchain-r-test"]
|
||||
packages: clang-4.0
|
||||
- os: linux
|
||||
env: COMPILER=clang++-5.0
|
||||
addons:
|
||||
apt:
|
||||
sources: ["llvm-toolchain-trusty-5.0", "ubuntu-toolchain-r-test"]
|
||||
packages: clang-5.0
|
||||
|
||||
# macOS/clang
|
||||
# https://docs.travis-ci.com/user/osx-ci-environment/#OS-X-Version
|
||||
- os: osx
|
||||
osx_image: xcode7.3
|
||||
env: OSX_VERSION=10.11
|
||||
- os: osx
|
||||
osx_image: xcode8.3
|
||||
env: OSX_VERSION=10.12
|
||||
- os: osx
|
||||
osx_image: xcode9.2
|
||||
env: OSX_VERSION=10.12
|
||||
|
||||
before_script:
|
||||
- if [[ ${TRAVIS_OS_NAME} == linux ]]; then export NODE_LABELS="Linux Ubuntu Ubuntu-14.04"; fi
|
||||
- if [[ ${TRAVIS_OS_NAME} == osx ]]; then export NODE_LABELS="OSX OSX-${OSX_VERSION}"; fi
|
||||
- if [[ -n ${COMPILER} ]]; then export CXX=${COMPILER}; fi
|
||||
- ${CXX:-c++} --version
|
||||
- python --version
|
||||
|
||||
script:
|
||||
- ./.jenkins
|
||||
@@ -0,0 +1,518 @@
|
||||
#!/usr/bin/env python
|
||||
# encoding: utf-8
|
||||
#
|
||||
# partially based on boost.py written by Gernot Vormayr
|
||||
# written by Ruediger Sonderfeld <ruediger@c-plusplus.de>, 2008
|
||||
# modified by Bjoern Michaelsen, 2008
|
||||
# modified by Luca Fossati, 2008
|
||||
# rewritten for waf 1.5.1, Thomas Nagy, 2008
|
||||
# rewritten for waf 1.6.2, Sylvain Rouquette, 2011
|
||||
|
||||
'''
|
||||
|
||||
This is an extra tool, not bundled with the default waf binary.
|
||||
To add the boost tool to the waf file:
|
||||
$ ./waf-light --tools=compat15,boost
|
||||
or, if you have waf >= 1.6.2
|
||||
$ ./waf update --files=boost
|
||||
|
||||
When using this tool, the wscript will look like:
|
||||
|
||||
def options(opt):
|
||||
opt.load('compiler_cxx boost')
|
||||
|
||||
def configure(conf):
|
||||
conf.load('compiler_cxx boost')
|
||||
conf.check_boost(lib='system filesystem')
|
||||
|
||||
def build(bld):
|
||||
bld(source='main.cpp', target='app', use='BOOST')
|
||||
|
||||
Options are generated, in order to specify the location of boost includes/libraries.
|
||||
The `check_boost` configuration function allows to specify the used boost libraries.
|
||||
It can also provide default arguments to the --boost-mt command-line arguments.
|
||||
Everything will be packaged together in a BOOST component that you can use.
|
||||
|
||||
When using MSVC, a lot of compilation flags need to match your BOOST build configuration:
|
||||
- you may have to add /EHsc to your CXXFLAGS or define boost::throw_exception if BOOST_NO_EXCEPTIONS is defined.
|
||||
Errors: C4530
|
||||
- boost libraries will try to be smart and use the (pretty but often not useful) auto-linking feature of MSVC
|
||||
So before calling `conf.check_boost` you might want to disabling by adding
|
||||
conf.env.DEFINES_BOOST += ['BOOST_ALL_NO_LIB']
|
||||
Errors:
|
||||
- boost might also be compiled with /MT, which links the runtime statically.
|
||||
If you have problems with redefined symbols,
|
||||
self.env['DEFINES_%s' % var] += ['BOOST_ALL_NO_LIB']
|
||||
self.env['CXXFLAGS_%s' % var] += ['/MD', '/EHsc']
|
||||
Passing `--boost-linkage_autodetect` might help ensuring having a correct linkage in some basic cases.
|
||||
|
||||
'''
|
||||
|
||||
import sys
|
||||
import re
|
||||
from waflib import Utils, Logs, Errors
|
||||
from waflib.Configure import conf
|
||||
from waflib.TaskGen import feature, after_method
|
||||
|
||||
BOOST_LIBS = ['/usr/lib/x86_64-linux-gnu', '/usr/lib/i386-linux-gnu',
|
||||
'/usr/lib', '/usr/local/lib', '/opt/local/lib', '/sw/lib', '/lib']
|
||||
BOOST_INCLUDES = ['/usr/include', '/usr/local/include', '/opt/local/include', '/sw/include']
|
||||
BOOST_VERSION_FILE = 'boost/version.hpp'
|
||||
BOOST_VERSION_CODE = '''
|
||||
#include <iostream>
|
||||
#include <boost/version.hpp>
|
||||
int main() { std::cout << BOOST_LIB_VERSION << ":" << BOOST_VERSION << std::endl; }
|
||||
'''
|
||||
|
||||
BOOST_ERROR_CODE = '''
|
||||
#include <boost/system/error_code.hpp>
|
||||
int main() { boost::system::error_code c; }
|
||||
'''
|
||||
|
||||
PTHREAD_CODE = '''
|
||||
#include <pthread.h>
|
||||
static void* f(void*) { return 0; }
|
||||
int main() {
|
||||
pthread_t th;
|
||||
pthread_attr_t attr;
|
||||
pthread_attr_init(&attr);
|
||||
pthread_create(&th, &attr, &f, 0);
|
||||
pthread_join(th, 0);
|
||||
pthread_cleanup_push(0, 0);
|
||||
pthread_cleanup_pop(0);
|
||||
pthread_attr_destroy(&attr);
|
||||
}
|
||||
'''
|
||||
|
||||
BOOST_THREAD_CODE = '''
|
||||
#include <boost/thread.hpp>
|
||||
int main() { boost::thread t; }
|
||||
'''
|
||||
|
||||
BOOST_LOG_CODE = '''
|
||||
#include <boost/log/trivial.hpp>
|
||||
#include <boost/log/utility/setup/console.hpp>
|
||||
#include <boost/log/utility/setup/common_attributes.hpp>
|
||||
int main() {
|
||||
using namespace boost::log;
|
||||
add_common_attributes();
|
||||
add_console_log(std::clog, keywords::format = "%Message%");
|
||||
BOOST_LOG_TRIVIAL(debug) << "log is working" << std::endl;
|
||||
}
|
||||
'''
|
||||
|
||||
# toolsets from {boost_dir}/tools/build/v2/tools/common.jam
|
||||
PLATFORM = Utils.unversioned_sys_platform()
|
||||
detect_intel = lambda env: (PLATFORM == 'win32') and 'iw' or 'il'
|
||||
detect_clang = lambda env: (PLATFORM == 'darwin') and 'clang-darwin' or 'clang'
|
||||
detect_mingw = lambda env: (re.search('MinGW', env.CXX[0])) and 'mgw' or 'gcc'
|
||||
BOOST_TOOLSETS = {
|
||||
'borland': 'bcb',
|
||||
'clang': detect_clang,
|
||||
'como': 'como',
|
||||
'cw': 'cw',
|
||||
'darwin': 'xgcc',
|
||||
'edg': 'edg',
|
||||
'g++': detect_mingw,
|
||||
'gcc': detect_mingw,
|
||||
'icpc': detect_intel,
|
||||
'intel': detect_intel,
|
||||
'kcc': 'kcc',
|
||||
'kylix': 'bck',
|
||||
'mipspro': 'mp',
|
||||
'mingw': 'mgw',
|
||||
'msvc': 'vc',
|
||||
'qcc': 'qcc',
|
||||
'sun': 'sw',
|
||||
'sunc++': 'sw',
|
||||
'tru64cxx': 'tru',
|
||||
'vacpp': 'xlc'
|
||||
}
|
||||
|
||||
|
||||
def options(opt):
|
||||
opt = opt.add_option_group('Boost Options')
|
||||
opt.add_option('--boost-includes', type='string',
|
||||
default='', dest='boost_includes',
|
||||
help='''path to the directory where the boost includes are,
|
||||
e.g., /path/to/boost_1_55_0/stage/include''')
|
||||
opt.add_option('--boost-libs', type='string',
|
||||
default='', dest='boost_libs',
|
||||
help='''path to the directory where the boost libs are,
|
||||
e.g., path/to/boost_1_55_0/stage/lib''')
|
||||
opt.add_option('--boost-mt', action='store_true',
|
||||
default=False, dest='boost_mt',
|
||||
help='select multi-threaded libraries')
|
||||
opt.add_option('--boost-abi', type='string', default='', dest='boost_abi',
|
||||
help='''select libraries with tags (gd for debug, static is automatically added),
|
||||
see doc Boost, Getting Started, chapter 6.1''')
|
||||
opt.add_option('--boost-linkage_autodetect', action="store_true", dest='boost_linkage_autodetect',
|
||||
help="auto-detect boost linkage options (don't get used to it / might break other stuff)")
|
||||
opt.add_option('--boost-toolset', type='string',
|
||||
default='', dest='boost_toolset',
|
||||
help='force a toolset e.g. msvc, vc90, \
|
||||
gcc, mingw, mgw45 (default: auto)')
|
||||
py_version = '%d%d' % (sys.version_info[0], sys.version_info[1])
|
||||
opt.add_option('--boost-python', type='string',
|
||||
default=py_version, dest='boost_python',
|
||||
help='select the lib python with this version \
|
||||
(default: %s)' % py_version)
|
||||
|
||||
|
||||
@conf
|
||||
def __boost_get_version_file(self, d):
|
||||
if not d:
|
||||
return None
|
||||
dnode = self.root.find_dir(d)
|
||||
if dnode:
|
||||
return dnode.find_node(BOOST_VERSION_FILE)
|
||||
return None
|
||||
|
||||
@conf
|
||||
def boost_get_version(self, d):
|
||||
"""silently retrieve the boost version number"""
|
||||
node = self.__boost_get_version_file(d)
|
||||
if node:
|
||||
try:
|
||||
txt = node.read()
|
||||
except EnvironmentError:
|
||||
Logs.error("Could not read the file %r" % node.abspath())
|
||||
else:
|
||||
re_but1 = re.compile('^#define\\s+BOOST_LIB_VERSION\\s+"(.+)"', re.M)
|
||||
m1 = re_but1.search(txt)
|
||||
re_but2 = re.compile('^#define\\s+BOOST_VERSION\\s+(\\d+)', re.M)
|
||||
m2 = re_but2.search(txt)
|
||||
if m1 and m2:
|
||||
return (m1.group(1), m2.group(1))
|
||||
return self.check_cxx(fragment=BOOST_VERSION_CODE, includes=[d], execute=True, define_ret=True).split(":")
|
||||
|
||||
@conf
|
||||
def boost_get_includes(self, *k, **kw):
|
||||
includes = k and k[0] or kw.get('includes', None)
|
||||
if includes and self.__boost_get_version_file(includes):
|
||||
return includes
|
||||
for d in self.environ.get('INCLUDE', '').split(';') + BOOST_INCLUDES:
|
||||
if self.__boost_get_version_file(d):
|
||||
return d
|
||||
if includes:
|
||||
self.end_msg('headers not found in %s' % includes)
|
||||
self.fatal('The configuration failed')
|
||||
else:
|
||||
self.end_msg('headers not found, please provide a --boost-includes argument (see help)')
|
||||
self.fatal('The configuration failed')
|
||||
|
||||
|
||||
@conf
|
||||
def boost_get_toolset(self, cc):
|
||||
toolset = cc
|
||||
if not cc:
|
||||
build_platform = Utils.unversioned_sys_platform()
|
||||
if build_platform in BOOST_TOOLSETS:
|
||||
cc = build_platform
|
||||
else:
|
||||
cc = self.env.CXX_NAME
|
||||
if cc in BOOST_TOOLSETS:
|
||||
toolset = BOOST_TOOLSETS[cc]
|
||||
return isinstance(toolset, str) and toolset or toolset(self.env)
|
||||
|
||||
|
||||
@conf
|
||||
def __boost_get_libs_path(self, *k, **kw):
|
||||
''' return the lib path and all the files in it '''
|
||||
if 'files' in kw:
|
||||
return self.root.find_dir('.'), Utils.to_list(kw['files'])
|
||||
libs = k and k[0] or kw.get('libs', None)
|
||||
if libs:
|
||||
path = self.root.find_dir(libs)
|
||||
files = path.ant_glob('*boost_*')
|
||||
if not libs or not files:
|
||||
for d in self.environ.get('LIB', '').split(';') + BOOST_LIBS:
|
||||
if not d:
|
||||
continue
|
||||
path = self.root.find_dir(d)
|
||||
if path:
|
||||
files = path.ant_glob('*boost_*')
|
||||
if files:
|
||||
break
|
||||
path = self.root.find_dir(d + '64')
|
||||
if path:
|
||||
files = path.ant_glob('*boost_*')
|
||||
if files:
|
||||
break
|
||||
if not path:
|
||||
if libs:
|
||||
self.end_msg('libs not found in %s' % libs)
|
||||
self.fatal('The configuration failed')
|
||||
else:
|
||||
self.end_msg('libs not found, please provide a --boost-libs argument (see help)')
|
||||
self.fatal('The configuration failed')
|
||||
|
||||
self.to_log('Found the boost path in %r with the libraries:' % path)
|
||||
for x in files:
|
||||
self.to_log(' %r' % x)
|
||||
return path, files
|
||||
|
||||
@conf
|
||||
def boost_get_libs(self, *k, **kw):
|
||||
'''
|
||||
return the lib path and the required libs
|
||||
according to the parameters
|
||||
'''
|
||||
path, files = self.__boost_get_libs_path(**kw)
|
||||
files = sorted(files, key=lambda f: (len(f.name), f.name), reverse=True)
|
||||
toolset = self.boost_get_toolset(kw.get('toolset', ''))
|
||||
toolset_pat = '(-%s[0-9]{0,3})' % toolset
|
||||
version = '-%s' % self.env.BOOST_VERSION
|
||||
|
||||
def find_lib(re_lib, files):
|
||||
for file in files:
|
||||
if re_lib.search(file.name):
|
||||
self.to_log('Found boost lib %s' % file)
|
||||
return file
|
||||
return None
|
||||
|
||||
def format_lib_name(name):
|
||||
if name.startswith('lib') and self.env.CC_NAME != 'msvc':
|
||||
name = name[3:]
|
||||
return name[:name.rfind('.')]
|
||||
|
||||
def match_libs(lib_names, is_static):
|
||||
libs = []
|
||||
lib_names = Utils.to_list(lib_names)
|
||||
if not lib_names:
|
||||
return libs
|
||||
t = []
|
||||
if kw.get('mt', False):
|
||||
t.append('-mt')
|
||||
if kw.get('abi', None):
|
||||
t.append('%s%s' % (is_static and '-s' or '-', kw['abi']))
|
||||
elif is_static:
|
||||
t.append('-s')
|
||||
tags_pat = t and ''.join(t) or ''
|
||||
ext = is_static and self.env.cxxstlib_PATTERN or self.env.cxxshlib_PATTERN
|
||||
ext = ext.partition('%s')[2] # remove '%s' or 'lib%s' from PATTERN
|
||||
|
||||
for lib in lib_names:
|
||||
if lib == 'python':
|
||||
# for instance, with python='27',
|
||||
# accepts '-py27', '-py2', '27' and '2'
|
||||
# but will reject '-py3', '-py26', '26' and '3'
|
||||
tags = '({0})?((-py{2})|(-py{1}(?=[^0-9]))|({2})|({1}(?=[^0-9]))|(?=[^0-9])(?!-py))'.format(tags_pat, kw['python'][0], kw['python'])
|
||||
else:
|
||||
tags = tags_pat
|
||||
# Trying libraries, from most strict match to least one
|
||||
for pattern in ['boost_%s%s%s%s%s$' % (lib, toolset_pat, tags, version, ext),
|
||||
'boost_%s%s%s%s$' % (lib, tags, version, ext),
|
||||
# Give up trying to find the right version
|
||||
'boost_%s%s%s%s$' % (lib, toolset_pat, tags, ext),
|
||||
'boost_%s%s%s$' % (lib, tags, ext),
|
||||
'boost_%s%s$' % (lib, ext),
|
||||
'boost_%s' % lib]:
|
||||
self.to_log('Trying pattern %s' % pattern)
|
||||
file = find_lib(re.compile(pattern), files)
|
||||
if file:
|
||||
libs.append(format_lib_name(file.name))
|
||||
break
|
||||
else:
|
||||
self.end_msg('lib %s not found in %s' % (lib, path.abspath()))
|
||||
self.fatal('The configuration failed')
|
||||
return libs
|
||||
|
||||
return path.abspath(), match_libs(kw.get('lib', None), False), match_libs(kw.get('stlib', None), True)
|
||||
|
||||
@conf
|
||||
def _check_pthread_flag(self, *k, **kw):
|
||||
'''
|
||||
Computes which flags should be added to CXXFLAGS and LINKFLAGS to compile in multi-threading mode
|
||||
|
||||
Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3,
|
||||
boost/thread.hpp will trigger a #error if -pthread isn't used:
|
||||
boost/config/requires_threads.hpp:47:5: #error "Compiler threading support
|
||||
is not turned on. Please set the correct command line options for
|
||||
threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
|
||||
|
||||
Based on _BOOST_PTHREAD_FLAG(): https://github.com/tsuna/boost.m4/blob/master/build-aux/boost.m4
|
||||
'''
|
||||
|
||||
var = kw.get('uselib_store', 'BOOST')
|
||||
|
||||
self.start_msg('Checking the flags needed to use pthreads')
|
||||
|
||||
# The ordering *is* (sometimes) important. Some notes on the
|
||||
# individual items follow:
|
||||
# (none): in case threads are in libc; should be tried before -Kthread and
|
||||
# other compiler flags to prevent continual compiler warnings
|
||||
# -lpthreads: AIX (must check this before -lpthread)
|
||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
# -llthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
# -pthread: GNU Linux/GCC (kernel threads), BSD/GCC (userland threads)
|
||||
# -pthreads: Solaris/GCC
|
||||
# -mthreads: MinGW32/GCC, Lynx/GCC
|
||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||
# doesn't hurt to check since this sometimes defines pthreads too;
|
||||
# also defines -D_REENTRANT)
|
||||
# ... -mt is also the pthreads flag for HP/aCC
|
||||
# -lpthread: GNU Linux, etc.
|
||||
# --thread-safe: KAI C++
|
||||
if Utils.unversioned_sys_platform() == "sunos":
|
||||
# On Solaris (at least, for some versions), libc contains stubbed
|
||||
# (non-functional) versions of the pthreads routines, so link-based
|
||||
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
|
||||
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
|
||||
# a function called by this macro, so we could check for that, but
|
||||
# who knows whether they'll stub that too in a future libc.) So,
|
||||
# we'll just look for -pthreads and -lpthread first:
|
||||
boost_pthread_flags = ["-pthreads", "-lpthread", "-mt", "-pthread"]
|
||||
else:
|
||||
boost_pthread_flags = ["", "-lpthreads", "-Kthread", "-kthread", "-llthread", "-pthread",
|
||||
"-pthreads", "-mthreads", "-lpthread", "--thread-safe", "-mt"]
|
||||
|
||||
for boost_pthread_flag in boost_pthread_flags:
|
||||
try:
|
||||
self.env.stash()
|
||||
self.env['CXXFLAGS_%s' % var] += [boost_pthread_flag]
|
||||
self.env['LINKFLAGS_%s' % var] += [boost_pthread_flag]
|
||||
self.check_cxx(code=PTHREAD_CODE, msg=None, use=var, execute=False)
|
||||
|
||||
self.end_msg(boost_pthread_flag)
|
||||
return
|
||||
except self.errors.ConfigurationError:
|
||||
self.env.revert()
|
||||
self.end_msg('None')
|
||||
|
||||
@conf
|
||||
def check_boost(self, *k, **kw):
|
||||
"""
|
||||
Initialize boost libraries to be used.
|
||||
|
||||
Keywords: you can pass the same parameters as with the command line (without "--boost-").
|
||||
Note that the command line has the priority, and should preferably be used.
|
||||
"""
|
||||
if not self.env['CXX']:
|
||||
self.fatal('load a c++ compiler first, conf.load("compiler_cxx")')
|
||||
|
||||
params = {
|
||||
'lib': k and k[0] or kw.get('lib', None),
|
||||
'stlib': kw.get('stlib', None)
|
||||
}
|
||||
for key, value in self.options.__dict__.items():
|
||||
if not key.startswith('boost_'):
|
||||
continue
|
||||
key = key[len('boost_'):]
|
||||
params[key] = value and value or kw.get(key, '')
|
||||
|
||||
var = kw.get('uselib_store', 'BOOST')
|
||||
|
||||
self.start_msg('Checking boost includes')
|
||||
self.env['INCLUDES_%s' % var] = inc = self.boost_get_includes(**params)
|
||||
versions = self.boost_get_version(inc)
|
||||
self.env.BOOST_VERSION = versions[0]
|
||||
self.env.BOOST_VERSION_NUMBER = int(versions[1])
|
||||
self.end_msg("%d.%d.%d" % (int(versions[1]) / 100000,
|
||||
int(versions[1]) / 100 % 1000,
|
||||
int(versions[1]) % 100))
|
||||
if Logs.verbose:
|
||||
Logs.pprint('CYAN', ' path : %s' % self.env['INCLUDES_%s' % var])
|
||||
|
||||
if not params['lib'] and not params['stlib']:
|
||||
return
|
||||
if 'static' in kw or 'static' in params:
|
||||
Logs.warn('boost: static parameter is deprecated, use stlib instead.')
|
||||
self.start_msg('Checking boost libs')
|
||||
path, libs, stlibs = self.boost_get_libs(**params)
|
||||
self.env['LIBPATH_%s' % var] = [path]
|
||||
self.env['STLIBPATH_%s' % var] = [path]
|
||||
self.env['LIB_%s' % var] = libs
|
||||
self.env['STLIB_%s' % var] = stlibs
|
||||
self.end_msg('ok')
|
||||
if Logs.verbose:
|
||||
Logs.pprint('CYAN', ' path : %s' % path)
|
||||
Logs.pprint('CYAN', ' shared libs : %s' % libs)
|
||||
Logs.pprint('CYAN', ' static libs : %s' % stlibs)
|
||||
|
||||
def has_shlib(lib):
|
||||
return params['lib'] and lib in params['lib']
|
||||
def has_stlib(lib):
|
||||
return params['stlib'] and lib in params['stlib']
|
||||
def has_lib(lib):
|
||||
return has_shlib(lib) or has_stlib(lib)
|
||||
if has_lib('thread'):
|
||||
# not inside try_link to make check visible in the output
|
||||
self._check_pthread_flag(k, kw)
|
||||
|
||||
def try_link():
|
||||
if has_lib('system'):
|
||||
self.check_cxx(fragment=BOOST_ERROR_CODE, use=var, execute=False)
|
||||
if has_lib('thread'):
|
||||
self.check_cxx(fragment=BOOST_THREAD_CODE, use=var, execute=False)
|
||||
if has_lib('log'):
|
||||
if not has_lib('thread'):
|
||||
self.env['DEFINES_%s' % var] += ['BOOST_LOG_NO_THREADS']
|
||||
if has_shlib('log'):
|
||||
self.env['DEFINES_%s' % var] += ['BOOST_LOG_DYN_LINK']
|
||||
self.check_cxx(fragment=BOOST_LOG_CODE, use=var, execute=False)
|
||||
|
||||
if params.get('linkage_autodetect', False):
|
||||
self.start_msg("Attempting to detect boost linkage flags")
|
||||
toolset = self.boost_get_toolset(kw.get('toolset', ''))
|
||||
if toolset in ('vc',):
|
||||
# disable auto-linking feature, causing error LNK1181
|
||||
# because the code wants to be linked against
|
||||
self.env['DEFINES_%s' % var] += ['BOOST_ALL_NO_LIB']
|
||||
|
||||
# if no dlls are present, we guess the .lib files are not stubs
|
||||
has_dlls = False
|
||||
for x in Utils.listdir(path):
|
||||
if x.endswith(self.env.cxxshlib_PATTERN % ''):
|
||||
has_dlls = True
|
||||
break
|
||||
if not has_dlls:
|
||||
self.env['STLIBPATH_%s' % var] = [path]
|
||||
self.env['STLIB_%s' % var] = libs
|
||||
del self.env['LIB_%s' % var]
|
||||
del self.env['LIBPATH_%s' % var]
|
||||
|
||||
# we attempt to play with some known-to-work CXXFLAGS combinations
|
||||
for cxxflags in (['/MD', '/EHsc'], []):
|
||||
self.env.stash()
|
||||
self.env["CXXFLAGS_%s" % var] += cxxflags
|
||||
try:
|
||||
try_link()
|
||||
self.end_msg("ok: winning cxxflags combination: %s" % (self.env["CXXFLAGS_%s" % var]))
|
||||
exc = None
|
||||
break
|
||||
except Errors.ConfigurationError as e:
|
||||
self.env.revert()
|
||||
exc = e
|
||||
|
||||
if exc is not None:
|
||||
self.end_msg("Could not auto-detect boost linking flags combination, you may report it to boost.py author", ex=exc)
|
||||
self.fatal('The configuration failed')
|
||||
else:
|
||||
self.end_msg("Boost linkage flags auto-detection not implemented (needed ?) for this toolchain")
|
||||
self.fatal('The configuration failed')
|
||||
else:
|
||||
self.start_msg('Checking for boost linkage')
|
||||
try:
|
||||
try_link()
|
||||
except Errors.ConfigurationError as e:
|
||||
self.end_msg("Could not link against boost libraries using supplied options")
|
||||
self.fatal('The configuration failed')
|
||||
self.end_msg('ok')
|
||||
|
||||
|
||||
@feature('cxx')
|
||||
@after_method('apply_link')
|
||||
def install_boost(self):
|
||||
if install_boost.done or not Utils.is_win32 or not self.bld.cmd.startswith('install'):
|
||||
return
|
||||
install_boost.done = True
|
||||
inst_to = getattr(self, 'install_path', '${BINDIR}')
|
||||
for lib in self.env.LIB_BOOST:
|
||||
try:
|
||||
file = self.bld.find_file(self.env.cxxshlib_PATTERN % lib, self.env.LIBPATH_BOOST)
|
||||
self.bld.install_files(inst_to, self.bld.root.find_node(file))
|
||||
except:
|
||||
continue
|
||||
install_boost.done = False
|
||||
@@ -0,0 +1,22 @@
|
||||
# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
|
||||
from waflib import TaskGen, Logs
|
||||
|
||||
def options(opt):
|
||||
opt.add_option('--with-coverage', action='store_true', default=False, dest='with_coverage',
|
||||
help='''Set compiler flags for gcc to enable code coverage information''')
|
||||
|
||||
def configure(conf):
|
||||
if conf.options.with_coverage:
|
||||
if not conf.options.debug:
|
||||
conf.fatal("Code coverage flags require debug mode compilation (add --debug)")
|
||||
conf.check_cxx(cxxflags=['-fprofile-arcs', '-ftest-coverage', '-fPIC'],
|
||||
linkflags=['-fprofile-arcs'], uselib_store='GCOV', mandatory=True)
|
||||
|
||||
@TaskGen.feature('cxx','cc')
|
||||
@TaskGen.after('process_source')
|
||||
def add_coverage(self):
|
||||
if getattr(self, 'use', ''):
|
||||
self.use += ' GCOV'
|
||||
else:
|
||||
self.use = 'GCOV'
|
||||
@@ -0,0 +1,202 @@
|
||||
# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
|
||||
from waflib import Logs, Configure, Utils
|
||||
|
||||
def options(opt):
|
||||
opt.add_option('--debug', '--with-debug', action='store_true', default=False, dest='debug',
|
||||
help='''Compile in debugging mode with minimal optimizations (-O0 or -Og)''')
|
||||
|
||||
def configure(conf):
|
||||
conf.start_msg('Checking C++ compiler version')
|
||||
|
||||
cxx = conf.env['CXX_NAME'] # CXX_NAME is the generic name of the compiler
|
||||
ccver = tuple(int(i) for i in conf.env['CC_VERSION'])
|
||||
errmsg = ''
|
||||
warnmsg = ''
|
||||
if cxx == 'gcc':
|
||||
if ccver < (4, 8, 2):
|
||||
errmsg = ('The version of gcc you are using is too old.\n'
|
||||
'The minimum supported gcc version is 4.8.2.')
|
||||
flags = GccFlags()
|
||||
elif cxx == 'clang':
|
||||
if ccver < (3, 4, 0):
|
||||
errmsg = ('The version of clang you are using is too old.\n'
|
||||
'The minimum supported clang version is 3.4.0.')
|
||||
flags = ClangFlags()
|
||||
else:
|
||||
warnmsg = 'Note: %s compiler is unsupported' % cxx
|
||||
flags = CompilerFlags()
|
||||
|
||||
if errmsg:
|
||||
conf.end_msg('.'.join(conf.env['CC_VERSION']), color='RED')
|
||||
conf.fatal(errmsg)
|
||||
elif warnmsg:
|
||||
conf.end_msg('.'.join(conf.env['CC_VERSION']), color='YELLOW')
|
||||
Logs.warn(warnmsg)
|
||||
else:
|
||||
conf.end_msg('.'.join(conf.env['CC_VERSION']))
|
||||
|
||||
areCustomCxxflagsPresent = (len(conf.env.CXXFLAGS) > 0)
|
||||
|
||||
# General flags are always applied (e.g., selecting C++11 mode)
|
||||
generalFlags = flags.getGeneralFlags(conf)
|
||||
conf.add_supported_cxxflags(generalFlags['CXXFLAGS'])
|
||||
conf.add_supported_linkflags(generalFlags['LINKFLAGS'])
|
||||
conf.env.DEFINES += generalFlags['DEFINES']
|
||||
|
||||
# Debug or optimized CXXFLAGS and LINKFLAGS are applied only if the
|
||||
# corresponding environment variables are not set.
|
||||
# DEFINES are always applied.
|
||||
if conf.options.debug:
|
||||
extraFlags = flags.getDebugFlags(conf)
|
||||
if areCustomCxxflagsPresent:
|
||||
missingFlags = [x for x in extraFlags['CXXFLAGS'] if x not in conf.env.CXXFLAGS]
|
||||
if len(missingFlags) > 0:
|
||||
Logs.warn("Selected debug mode, but CXXFLAGS is set to a custom value '%s'"
|
||||
% " ".join(conf.env.CXXFLAGS))
|
||||
Logs.warn("Default flags '%s' are not activated" % " ".join(missingFlags))
|
||||
else:
|
||||
extraFlags = flags.getOptimizedFlags(conf)
|
||||
|
||||
if not areCustomCxxflagsPresent:
|
||||
conf.add_supported_cxxflags(extraFlags['CXXFLAGS'])
|
||||
conf.add_supported_linkflags(extraFlags['LINKFLAGS'])
|
||||
|
||||
conf.env.DEFINES += extraFlags['DEFINES']
|
||||
|
||||
@Configure.conf
|
||||
def add_supported_cxxflags(self, cxxflags):
|
||||
"""
|
||||
Check which cxxflags are supported by compiler and add them to env.CXXFLAGS variable
|
||||
"""
|
||||
if len(cxxflags) == 0:
|
||||
return
|
||||
|
||||
self.start_msg('Checking supported CXXFLAGS')
|
||||
|
||||
supportedFlags = []
|
||||
for flag in cxxflags:
|
||||
if self.check_cxx(cxxflags=['-Werror', flag], mandatory=False):
|
||||
supportedFlags += [flag]
|
||||
|
||||
self.end_msg(' '.join(supportedFlags))
|
||||
self.env.prepend_value('CXXFLAGS', supportedFlags)
|
||||
|
||||
@Configure.conf
|
||||
def add_supported_linkflags(self, linkflags):
|
||||
"""
|
||||
Check which linkflags are supported by compiler and add them to env.LINKFLAGS variable
|
||||
"""
|
||||
if len(linkflags) == 0:
|
||||
return
|
||||
|
||||
self.start_msg('Checking supported LINKFLAGS')
|
||||
|
||||
supportedFlags = []
|
||||
for flag in linkflags:
|
||||
if self.check_cxx(linkflags=['-Werror', flag], mandatory=False):
|
||||
supportedFlags += [flag]
|
||||
|
||||
self.end_msg(' '.join(supportedFlags))
|
||||
self.env.prepend_value('LINKFLAGS', supportedFlags)
|
||||
|
||||
|
||||
class CompilerFlags(object):
|
||||
def getGeneralFlags(self, conf):
|
||||
"""Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are always needed"""
|
||||
return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': []}
|
||||
|
||||
def getDebugFlags(self, conf):
|
||||
"""Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in debug mode"""
|
||||
return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': ['_DEBUG']}
|
||||
|
||||
def getOptimizedFlags(self, conf):
|
||||
"""Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in optimized mode"""
|
||||
return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': ['NDEBUG']}
|
||||
|
||||
class GccBasicFlags(CompilerFlags):
|
||||
"""
|
||||
This class defines basic flags that work for both gcc and clang compilers
|
||||
"""
|
||||
def getGeneralFlags(self, conf):
|
||||
flags = super(GccBasicFlags, self).getGeneralFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-std=c++11']
|
||||
return flags
|
||||
|
||||
def getDebugFlags(self, conf):
|
||||
flags = super(GccBasicFlags, self).getDebugFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-O0',
|
||||
'-Og', # gcc >= 4.8, clang >= 4.0
|
||||
'-g3',
|
||||
'-pedantic',
|
||||
'-Wall',
|
||||
'-Wextra',
|
||||
'-Werror',
|
||||
'-Wno-error=deprecated-declarations', # Bug #3795
|
||||
'-Wno-error=maybe-uninitialized', # Bug #1615
|
||||
'-Wno-unused-parameter',
|
||||
]
|
||||
flags['LINKFLAGS'] += ['-fuse-ld=gold', '-Wl,-O1']
|
||||
return flags
|
||||
|
||||
def getOptimizedFlags(self, conf):
|
||||
flags = super(GccBasicFlags, self).getOptimizedFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-O2',
|
||||
'-g',
|
||||
'-pedantic',
|
||||
'-Wall',
|
||||
'-Wextra',
|
||||
'-Wno-unused-parameter',
|
||||
]
|
||||
flags['LINKFLAGS'] += ['-fuse-ld=gold', '-Wl,-O1']
|
||||
return flags
|
||||
|
||||
class GccFlags(GccBasicFlags):
|
||||
def getDebugFlags(self, conf):
|
||||
flags = super(GccFlags, self).getDebugFlags(conf)
|
||||
version = tuple(int(i) for i in conf.env['CC_VERSION'])
|
||||
if version < (5, 1, 0):
|
||||
flags['CXXFLAGS'] += ['-Wno-missing-field-initializers']
|
||||
flags['CXXFLAGS'] += ['-fdiagnostics-color'] # gcc >= 4.9
|
||||
return flags
|
||||
|
||||
def getOptimizedFlags(self, conf):
|
||||
flags = super(GccFlags, self).getOptimizedFlags(conf)
|
||||
version = tuple(int(i) for i in conf.env['CC_VERSION'])
|
||||
if version < (5, 1, 0):
|
||||
flags['CXXFLAGS'] += ['-Wno-missing-field-initializers']
|
||||
flags['CXXFLAGS'] += ['-fdiagnostics-color'] # gcc >= 4.9
|
||||
return flags
|
||||
|
||||
class ClangFlags(GccBasicFlags):
|
||||
def getGeneralFlags(self, conf):
|
||||
flags = super(ClangFlags, self).getGeneralFlags(conf)
|
||||
if Utils.unversioned_sys_platform() == 'darwin':
|
||||
flags['CXXFLAGS'] += ['-stdlib=libc++']
|
||||
flags['LINKFLAGS'] += ['-stdlib=libc++']
|
||||
return flags
|
||||
|
||||
def getDebugFlags(self, conf):
|
||||
flags = super(ClangFlags, self).getDebugFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-fcolor-diagnostics',
|
||||
'-Wno-error=deprecated-register',
|
||||
'-Wno-error=ignored-qualifiers',
|
||||
'-Wno-error=infinite-recursion', # Bug #3358
|
||||
'-Wno-error=keyword-macro', # Bug #3235
|
||||
'-Wno-error=unneeded-internal-declaration', # Bug #1588
|
||||
'-Wno-keyword-macro',
|
||||
'-Wno-nested-anon-types',
|
||||
'-Wno-sign-compare',
|
||||
'-Wno-unused-local-typedef', # Bugs #2657 and #3209
|
||||
]
|
||||
return flags
|
||||
|
||||
def getOptimizedFlags(self, conf):
|
||||
flags = super(ClangFlags, self).getOptimizedFlags(conf)
|
||||
flags['CXXFLAGS'] += ['-fcolor-diagnostics',
|
||||
'-Wno-keyword-macro',
|
||||
'-Wno-nested-anon-types',
|
||||
'-Wno-sign-compare',
|
||||
'-Wno-unused-local-typedef', # Bugs #2657 and #3209
|
||||
]
|
||||
return flags
|
||||
@@ -0,0 +1,214 @@
|
||||
#! /usr/bin/env python
|
||||
# encoding: UTF-8
|
||||
# Thomas Nagy 2008-2010 (ita)
|
||||
|
||||
"""
|
||||
|
||||
Doxygen support
|
||||
|
||||
Variables passed to bld():
|
||||
* doxyfile -- the Doxyfile to use
|
||||
|
||||
When using this tool, the wscript will look like:
|
||||
|
||||
def options(opt):
|
||||
opt.load('doxygen')
|
||||
|
||||
def configure(conf):
|
||||
conf.load('doxygen')
|
||||
# check conf.env.DOXYGEN, if it is mandatory
|
||||
|
||||
def build(bld):
|
||||
if bld.env.DOXYGEN:
|
||||
bld(features="doxygen", doxyfile='Doxyfile', ...)
|
||||
|
||||
def doxygen(bld):
|
||||
if bld.env.DOXYGEN:
|
||||
bld(features="doxygen", doxyfile='Doxyfile', ...)
|
||||
"""
|
||||
|
||||
from fnmatch import fnmatchcase
|
||||
import os, os.path, re, stat
|
||||
from waflib import Task, Utils, Node, Logs, Errors, Build
|
||||
from waflib.TaskGen import feature
|
||||
|
||||
DOXY_STR = '"${DOXYGEN}" - '
|
||||
DOXY_FMTS = 'html latex man rft xml'.split()
|
||||
DOXY_FILE_PATTERNS = '*.' + ' *.'.join('''
|
||||
c cc cxx cpp c++ java ii ixx ipp i++ inl h hh hxx hpp h++ idl odl cs php php3
|
||||
inc m mm py f90c cc cxx cpp c++ java ii ixx ipp i++ inl h hh hxx
|
||||
'''.split())
|
||||
|
||||
re_rl = re.compile('\\\\\r*\n', re.MULTILINE)
|
||||
re_nl = re.compile('\r*\n', re.M)
|
||||
def parse_doxy(txt):
|
||||
tbl = {}
|
||||
txt = re_rl.sub('', txt)
|
||||
lines = re_nl.split(txt)
|
||||
for x in lines:
|
||||
x = x.strip()
|
||||
if not x or x.startswith('#') or x.find('=') < 0:
|
||||
continue
|
||||
if x.find('+=') >= 0:
|
||||
tmp = x.split('+=')
|
||||
key = tmp[0].strip()
|
||||
if key in tbl:
|
||||
tbl[key] += ' ' + '+='.join(tmp[1:]).strip()
|
||||
else:
|
||||
tbl[key] = '+='.join(tmp[1:]).strip()
|
||||
else:
|
||||
tmp = x.split('=')
|
||||
tbl[tmp[0].strip()] = '='.join(tmp[1:]).strip()
|
||||
return tbl
|
||||
|
||||
class doxygen(Task.Task):
|
||||
vars = ['DOXYGEN', 'DOXYFLAGS']
|
||||
color = 'BLUE'
|
||||
|
||||
def runnable_status(self):
|
||||
'''
|
||||
self.pars are populated in runnable_status - because this function is being
|
||||
run *before* both self.pars "consumers" - scan() and run()
|
||||
|
||||
set output_dir (node) for the output
|
||||
'''
|
||||
|
||||
for x in self.run_after:
|
||||
if not x.hasrun:
|
||||
return Task.ASK_LATER
|
||||
|
||||
if not getattr(self, 'pars', None):
|
||||
txt = self.inputs[0].read()
|
||||
self.pars = parse_doxy(txt)
|
||||
if not self.pars.get('OUTPUT_DIRECTORY'):
|
||||
self.pars['OUTPUT_DIRECTORY'] = self.inputs[0].parent.get_bld().abspath()
|
||||
|
||||
# Override with any parameters passed to the task generator
|
||||
if getattr(self.generator, 'pars', None):
|
||||
for k, v in self.generator.pars.items():
|
||||
self.pars[k] = v
|
||||
|
||||
self.doxy_inputs = getattr(self, 'doxy_inputs', [])
|
||||
if not self.pars.get('INPUT'):
|
||||
self.doxy_inputs.append(self.inputs[0].parent)
|
||||
else:
|
||||
for i in self.pars.get('INPUT').split():
|
||||
if os.path.isabs(i):
|
||||
node = self.generator.bld.root.find_node(i)
|
||||
else:
|
||||
node = self.generator.path.find_node(i)
|
||||
if not node:
|
||||
self.generator.bld.fatal('Could not find the doxygen input %r' % i)
|
||||
self.doxy_inputs.append(node)
|
||||
|
||||
if not getattr(self, 'output_dir', None):
|
||||
bld = self.generator.bld
|
||||
# First try to find an absolute path, then find or declare a relative path
|
||||
self.output_dir = bld.root.find_dir(self.pars['OUTPUT_DIRECTORY'])
|
||||
if not self.output_dir:
|
||||
self.output_dir = bld.path.find_or_declare(self.pars['OUTPUT_DIRECTORY'])
|
||||
|
||||
self.signature()
|
||||
return Task.Task.runnable_status(self)
|
||||
|
||||
def scan(self):
|
||||
exclude_patterns = self.pars.get('EXCLUDE_PATTERNS','').split()
|
||||
file_patterns = self.pars.get('FILE_PATTERNS','').split()
|
||||
if not file_patterns:
|
||||
file_patterns = DOXY_FILE_PATTERNS
|
||||
if self.pars.get('RECURSIVE') == 'YES':
|
||||
file_patterns = ["**/%s" % pattern for pattern in file_patterns]
|
||||
nodes = []
|
||||
names = []
|
||||
for node in self.doxy_inputs:
|
||||
if os.path.isdir(node.abspath()):
|
||||
for m in node.ant_glob(incl=file_patterns, excl=exclude_patterns):
|
||||
nodes.append(m)
|
||||
else:
|
||||
nodes.append(node)
|
||||
return (nodes, names)
|
||||
|
||||
def run(self):
|
||||
dct = self.pars.copy()
|
||||
dct['INPUT'] = ' '.join(['"%s"' % x.abspath() for x in self.doxy_inputs])
|
||||
code = '\n'.join(['%s = %s' % (x, dct[x]) for x in self.pars])
|
||||
code = code.encode() # for python 3
|
||||
#fmt = DOXY_STR % (self.inputs[0].parent.abspath())
|
||||
cmd = Utils.subst_vars(DOXY_STR, self.env)
|
||||
env = self.env.env or None
|
||||
proc = Utils.subprocess.Popen(cmd, shell=True, stdin=Utils.subprocess.PIPE, env=env, cwd=self.generator.bld.path.get_bld().abspath())
|
||||
proc.communicate(code)
|
||||
return proc.returncode
|
||||
|
||||
def post_run(self):
|
||||
nodes = self.output_dir.ant_glob('**/*', quiet=True)
|
||||
for x in nodes:
|
||||
x.sig = Utils.h_file(x.abspath())
|
||||
self.outputs += nodes
|
||||
return Task.Task.post_run(self)
|
||||
|
||||
class tar(Task.Task):
|
||||
"quick tar creation"
|
||||
run_str = '${TAR} ${TAROPTS} ${TGT} ${SRC}'
|
||||
color = 'RED'
|
||||
after = ['doxygen']
|
||||
def runnable_status(self):
|
||||
for x in getattr(self, 'input_tasks', []):
|
||||
if not x.hasrun:
|
||||
return Task.ASK_LATER
|
||||
|
||||
if not getattr(self, 'tar_done_adding', None):
|
||||
# execute this only once
|
||||
self.tar_done_adding = True
|
||||
for x in getattr(self, 'input_tasks', []):
|
||||
self.set_inputs(x.outputs)
|
||||
if not self.inputs:
|
||||
return Task.SKIP_ME
|
||||
return Task.Task.runnable_status(self)
|
||||
|
||||
def __str__(self):
|
||||
tgt_str = ' '.join([a.nice_path(self.env) for a in self.outputs])
|
||||
return '%s: %s\n' % (self.__class__.__name__, tgt_str)
|
||||
|
||||
@feature('doxygen')
|
||||
def process_doxy(self):
|
||||
if not getattr(self, 'doxyfile', None):
|
||||
self.generator.bld.fatal('no doxyfile??')
|
||||
|
||||
node = self.doxyfile
|
||||
if not isinstance(node, Node.Node):
|
||||
node = self.path.find_resource(node)
|
||||
if not node:
|
||||
raise ValueError('doxygen file not found')
|
||||
|
||||
# the task instance
|
||||
dsk = self.create_task('doxygen', node)
|
||||
|
||||
if getattr(self, 'doxy_tar', None):
|
||||
tsk = self.create_task('tar')
|
||||
tsk.input_tasks = [dsk]
|
||||
tsk.set_outputs(self.path.find_or_declare(self.doxy_tar))
|
||||
if self.doxy_tar.endswith('bz2'):
|
||||
tsk.env['TAROPTS'] = ['cjf']
|
||||
elif self.doxy_tar.endswith('gz'):
|
||||
tsk.env['TAROPTS'] = ['czf']
|
||||
else:
|
||||
tsk.env['TAROPTS'] = ['cf']
|
||||
|
||||
def configure(conf):
|
||||
'''
|
||||
Check if doxygen and tar commands are present in the system
|
||||
|
||||
If the commands are present, then conf.env.DOXYGEN and conf.env.TAR
|
||||
variables will be set. Detection can be controlled by setting DOXYGEN and
|
||||
TAR environmental variables.
|
||||
'''
|
||||
|
||||
conf.find_program('doxygen', var='DOXYGEN', mandatory=False)
|
||||
conf.find_program('tar', var='TAR', mandatory=False)
|
||||
|
||||
# doxygen docs
|
||||
from waflib.Build import BuildContext
|
||||
class doxy(BuildContext):
|
||||
cmd = "doxygen"
|
||||
fun = "doxygen"
|
||||
@@ -0,0 +1,22 @@
|
||||
# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
|
||||
def options(opt):
|
||||
opt.add_option('--with-sanitizer', action='store', default='', dest='sanitizers',
|
||||
help='Comma-separated list of compiler sanitizers to enable [default=none]')
|
||||
|
||||
def configure(conf):
|
||||
for san in conf.options.sanitizers.split(','):
|
||||
if not san:
|
||||
continue
|
||||
|
||||
sanflag = '-fsanitize=%s' % san
|
||||
conf.start_msg('Checking if compiler supports %s' % sanflag)
|
||||
|
||||
if conf.check_cxx(cxxflags=['-Werror', sanflag, '-fno-omit-frame-pointer'],
|
||||
linkflags=[sanflag], mandatory=False):
|
||||
conf.end_msg('yes')
|
||||
conf.env.append_unique('CXXFLAGS', [sanflag, '-fno-omit-frame-pointer'])
|
||||
conf.env.append_unique('LINKFLAGS', [sanflag])
|
||||
else:
|
||||
conf.end_msg('no', color='RED')
|
||||
conf.fatal('%s sanitizer is not supported by the current compiler' % san)
|
||||
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env python
|
||||
# encoding: utf-8
|
||||
|
||||
# inspired by code by Hans-Martin von Gaudecker, 2012
|
||||
|
||||
import os
|
||||
from waflib import Node, Task, TaskGen, Errors, Logs, Build, Utils
|
||||
|
||||
class sphinx_build(Task.Task):
|
||||
color = 'BLUE'
|
||||
run_str = '${SPHINX_BUILD} -D ${VERSION} -D ${RELEASE} -q -b ${BUILDERNAME} -d ${DOCTREEDIR} ${SRCDIR} ${OUTDIR}'
|
||||
|
||||
def __str__(self):
|
||||
env = self.env
|
||||
src_str = ' '.join([a.path_from(a.ctx.launch_node()) for a in self.inputs])
|
||||
tgt_str = ' '.join([a.path_from(a.ctx.launch_node()) for a in self.outputs])
|
||||
if self.outputs: sep = ' -> '
|
||||
else: sep = ''
|
||||
return'%s [%s]: %s%s%s\n'%(self.__class__.__name__.replace('_task',''),
|
||||
self.env['BUILDERNAME'], src_str, sep, tgt_str)
|
||||
|
||||
@TaskGen.extension('.py', '.rst')
|
||||
def sig_hook(self, node):
|
||||
node.sig=Utils.h_file(node.abspath())
|
||||
|
||||
@TaskGen.feature("sphinx")
|
||||
@TaskGen.before_method("process_source")
|
||||
def apply_sphinx(self):
|
||||
"""Set up the task generator with a Sphinx instance and create a task."""
|
||||
|
||||
inputs = []
|
||||
for i in Utils.to_list(self.source):
|
||||
if not isinstance(i, Node.Node):
|
||||
node = self.path.find_node(node)
|
||||
else:
|
||||
node = i
|
||||
if not node:
|
||||
raise ValueError('[%s] file not found' % i)
|
||||
inputs.append(node)
|
||||
|
||||
task = self.create_task('sphinx_build', inputs)
|
||||
|
||||
conf = self.path.find_node(self.config)
|
||||
task.inputs.append(conf)
|
||||
|
||||
confdir = conf.parent.abspath()
|
||||
buildername = getattr(self, "builder", "html")
|
||||
srcdir = getattr(self, "srcdir", confdir)
|
||||
outdir = self.path.find_or_declare(getattr(self, "outdir", buildername)).get_bld()
|
||||
doctreedir = getattr(self, "doctreedir", os.path.join(outdir.abspath(), ".doctrees"))
|
||||
|
||||
task.env['BUILDERNAME'] = buildername
|
||||
task.env['SRCDIR'] = srcdir
|
||||
task.env['DOCTREEDIR'] = doctreedir
|
||||
task.env['OUTDIR'] = outdir.abspath()
|
||||
task.env['VERSION'] = "version=%s" % self.VERSION
|
||||
task.env['RELEASE'] = "release=%s" % self.VERSION
|
||||
|
||||
import imp
|
||||
confData = imp.load_source('sphinx_conf', conf.abspath())
|
||||
|
||||
if buildername == "man":
|
||||
for i in confData.man_pages:
|
||||
target = outdir.find_or_declare('%s.%d' % (i[1], i[4]))
|
||||
task.outputs.append(target)
|
||||
|
||||
if self.install_path:
|
||||
self.bld.install_files("%s/man%d/" % (self.install_path, i[4]), target)
|
||||
else:
|
||||
task.outputs.append(outdir)
|
||||
|
||||
def configure(conf):
|
||||
conf.find_program('sphinx-build', var='SPHINX_BUILD', mandatory=False)
|
||||
|
||||
# sphinx docs
|
||||
from waflib.Build import BuildContext
|
||||
class sphinx(BuildContext):
|
||||
cmd = "sphinx"
|
||||
fun = "sphinx"
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
NLSR Authors
|
||||
============
|
||||
|
||||
NLSR is an open source project includes contributions from the members of the
|
||||
[NDN project team](http://named-data.net/project/participants/).
|
||||
|
||||
## Project co-leads:
|
||||
|
||||
* Ashlesh Gawande <https://www.linkedin.com/in/agawande>
|
||||
* Nicholas Gordon <nmgordon@memphis.edu>
|
||||
|
||||
## Past project leads:
|
||||
|
||||
* A K M Mahmudul Hoque <https://sites.google.com/site/akmhoque/home>
|
||||
* Vince Lehman <http://vslehman.com>
|
||||
|
||||
## Technical advisors:
|
||||
|
||||
* Lan Wang <http://www.cs.memphis.edu/~lanwang/>
|
||||
* Beichuan Zhang <http://www.cs.arizona.edu/~bzhang/>
|
||||
* Lixia Zhang <http://www.cs.ucla.edu/~lixia/>
|
||||
|
||||
|
||||
## All project authors, contributors and their affiliations:
|
||||
|
||||
* The University of Memphis
|
||||
|
||||
* A K M Mahmudul Hoque <https://sites.google.com/site/akmhoque/home>
|
||||
* Ashlesh Gawande <https://www.linkedin.com/in/agawande>
|
||||
* Minsheng Zhang <https://www.linkedin.com/in/minsheng-zhang-032023a1>
|
||||
* Syed Obaid Amin <http://obaidamin.weebly.com/>
|
||||
* Vince Lehman <http://vslehman.com>
|
||||
* Muktadir R Chowdhury <mrchwdhr@memphis.edu>
|
||||
* Nicholas Gordon <nmgordon@memphis.edu>
|
||||
* Laqin Fan <lfan1@memphis.edu>
|
||||
* Damian Coomes <dmcoomes@memphis.edu>
|
||||
* Saurab Dulal <sdulal@memphis.edu>
|
||||
|
||||
* University of California, Los Angeles
|
||||
|
||||
* Yingdi Yu <http://irl.cs.ucla.edu/~yingdi/web/index.html>
|
||||
* Alexander Afanasyev <http://lasr.cs.ucla.edu/afanasyev/index.html>
|
||||
* Spyridon Mastorakis <http://cs.ucla.edu/~mastorakis/>
|
||||
* Jiewen Tan <https://www.linkedin.com/in/jiewentan>
|
||||
|
||||
* University of Arizona
|
||||
|
||||
* Junxiao Shi <https://www.linkedin.com/in/shijunxiao>
|
||||
|
||||
* University Pierre & Marie Curie, Sorbonne University
|
||||
|
||||
* Davide Pesavento <https://www.linkedin.com/in/davidepesavento>
|
||||
|
||||
## Queries about NLSR
|
||||
|
||||
Any question related to NLSR should be directed to Ashlesh Gawande (agawande@memphis.edu),
|
||||
Muktadir R Chowdhury (mrchwdhr@memphis.edu), and Nicholas Gordon (nmgordon@memphis.edu).
|
||||
+702
@@ -0,0 +1,702 @@
|
||||
NLSR LICENSE
|
||||
============
|
||||
|
||||
NLSR is released under the GPL.
|
||||
|
||||
NLSR relies on third-party software and libraries, licensed under the following
|
||||
licenses:
|
||||
|
||||
- Boost libraries are licensed under the conditions of
|
||||
[Boost Software License 1.0](http://www.boost.org/users/license.html)
|
||||
|
||||
- ndn-cxx is licensed under the conditions of
|
||||
[LGPL 3.0](https://github.com/named-data/ndn-cxx/blob/master/COPYING.md)
|
||||
|
||||
- ChronoSync is licensed under the conditions of
|
||||
[GPL 3.0](https://github.com/named-data/ChronoSync/blob/master/COPYING.md)
|
||||
|
||||
- waf build system is licensed under the conditions of
|
||||
[BSD license](https://github.com/named-data/NLSR/blob/master/waf)
|
||||
|
||||
The GPL license is provided below in this file.
|
||||
For more information, see http://www.gnu.org/licenses/
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
==========================
|
||||
Version 3, 29 June 2007
|
||||
=======================
|
||||
|
||||
> Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
|
||||
|
||||
# Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
# TERMS AND CONDITIONS
|
||||
|
||||
## 0. Definitions.
|
||||
|
||||
_"This License"_ refers to version 3 of the GNU General Public License.
|
||||
|
||||
_"Copyright"_ also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
_"The Program"_ refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as _"you"_. _"Licensees"_ and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To _"modify"_ a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a _"modified version"_ of the
|
||||
earlier work or a work _"based on"_ the earlier work.
|
||||
|
||||
A _"covered work"_ means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To _"propagate"_ a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To _"convey"_ a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
## 1. Source Code.
|
||||
|
||||
The _"source code"_ for a work means the preferred form of the work
|
||||
for making modifications to it. _"Object code"_ means any non-source
|
||||
form of a work.
|
||||
|
||||
A _"Standard Interface"_ means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The _"System Libraries"_ of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The _"Corresponding Source"_ for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
## 2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
## 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
## 4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
## 5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
## 6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A _"User Product"_ is either (1) a _"consumer product"_, which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
_"Installation Information"_ for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
## 7. Additional Terms.
|
||||
|
||||
_"Additional permissions"_ are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
## 8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
## 9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
## 10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An _"entity transaction"_ is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
## 11. Patents.
|
||||
|
||||
A _"contributor"_ is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's _"essential patent claims"_ are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
## 12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
## 13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
## 14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
## 15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
## 16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
## 17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
# END OF TERMS AND CONDITIONS
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
|
||||
# How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type 'show c' for details.
|
||||
|
||||
The hypothetical commands _'show w'_ and _'show c'_ should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
@@ -1,5 +0,0 @@
|
||||
all:
|
||||
pdflatex nlsr-docs
|
||||
bibtex nlsr-docs
|
||||
pdflatex nlsr-docs
|
||||
mv nlsr-docs.pdf NLSR-Developers-Guide.pdf
|
||||
Binary file not shown.
@@ -0,0 +1,40 @@
|
||||
Requirements
|
||||
------------
|
||||
|
||||
Contributions to NLSR must be licensed under GPL 3.0 or compatible license. If you are
|
||||
choosing GPL 3.0, please use the following license boilerplate in all `.hpp` and `.cpp`
|
||||
files:
|
||||
|
||||
Include the following header in all `.hpp` and `.cpp` files:
|
||||
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/**
|
||||
* Copyright (c) [Year(s)], [Copyright Holder(s)].
|
||||
*
|
||||
* This file is part of NLSR (Named-data Link State Routing).
|
||||
* See AUTHORS.md for complete list of NLSR authors and contributors.
|
||||
*
|
||||
* NLSR is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Foundation,
|
||||
* either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
**/
|
||||
|
||||
If you are affiliated with an NSF-supported NDN project institution,
|
||||
please use the [NDN Team License Boilerplate]
|
||||
(https://redmine.named-data.net/projects/nlsr/wiki/NDN_Team_License_Boilerplate_(NLSR)).
|
||||
|
||||
Recommendations
|
||||
---------------
|
||||
|
||||
NLSR code is subject to the code style, defined here:
|
||||
https://redmine.named-data.net/projects/nfd/wiki/CodeStyle
|
||||
|
||||
NLSR Developer's guide can be found here:
|
||||
https://github.com/named-data/NLSR/blob/developers-guide/NLSR-Developers-Guide.pdf
|
||||
@@ -0,0 +1,51 @@
|
||||
NLSR - Named Data Link State Routing Protocol
|
||||
=============================================
|
||||
|
||||
For complete documentation and more extensive information,
|
||||
please visit the [NLSR homepage](http://named-data.net/doc/NLSR/current/).
|
||||
|
||||
If you are new to the NDN community of software generally, read the
|
||||
[Contributor's Guide](https://github.com/named-data/NFD/blob/master/CONTRIBUTING.md).
|
||||
|
||||
## Overview
|
||||
|
||||
NLSR is a routing protocol in NDN that populates NDN's Routing Information Base. NLSR
|
||||
will continue to evolve alongside the Named Data Networking [protocol](http://named-data.net/doc/ndn-tlv/).
|
||||
|
||||
NLSR is an open and free software package licensed under the GPL 3.0 license and free to all
|
||||
Internet users and developers. For more information about the licensing details and
|
||||
limitations, refer to [COPYING.md](https://github.com/named-data/NLSR/blob/master/COPYING.md).
|
||||
|
||||
NLSR is developed by the members of the [NSF-sponsored NDN project team](https://named-data.net/project/participants/).
|
||||
For more details, please refer to [AUTHORS.md](https://github.com/named-data/NLSR/blob/master/AUTHORS.md).
|
||||
Bug reports and feedback are highly appreciated and can be made through the
|
||||
[Redmine site](https://redmine.named-data.net/projects/nlsr).
|
||||
|
||||
The main design goal of NLSR is to provide a routing protocol to populate NDN's FIB.
|
||||
NLSR calculates the routing table using link-state or hyperbolic routing and produces
|
||||
multiple faces for each reachable name prefix in a single authoritative domain. NLSR
|
||||
will continue to evolve over time to include neighbor discovery and to become a full
|
||||
fledged inter-domain routing protocol for NDN.
|
||||
|
||||
|
||||
Source releases
|
||||
---------------
|
||||
|
||||
The source code and source-code installation instructions are always available at
|
||||
the following links:
|
||||
|
||||
- [Installation](https://named-data.net/doc/NLSR/current/INSTALL.html)
|
||||
- [Getting Started with NLSR](https://named-data.net/doc/NLSR/current/GETTING-STARTED.html)
|
||||
- [GitHub NLSR repository](https://github.com/named-data/NLSR)
|
||||
|
||||
Additional information
|
||||
----------------------
|
||||
|
||||
- [Contributor's Guide](https://github.com/named-data/NFD/blob/master/CONTRIBUTING.md)
|
||||
- [NLSR Wiki](https://redmine.named-data.net/projects/nlsr/wiki/)
|
||||
- Feature requests and bug reports are welcome on our
|
||||
[NLSR on NDN Redmine](https://redmine.named-data.net/projects/nlsr)
|
||||
- [NLSR Mailing List Sign Up](https://listserv.memphis.edu/scripts/wa.exe?GETPW1)
|
||||
- [NLSR Mailing List](https://listserv.memphis.edu/scripts/wa.exe?SUBED1=NLSR-HELP-L&A=1)
|
||||
- [NLSR Mailing List Archives](https://listserv.memphis.edu/scripts/wa.exe?A0=NLSR-HELP-L)
|
||||
- [NLSR Developer's guide](https://github.com/named-data/NLSR/blob/developers-guide/NLSR-Developers-Guide.pdf)
|
||||
@@ -1,115 +0,0 @@
|
||||
\section{Configuration File}
|
||||
\label{sec:configuration}
|
||||
|
||||
NLSR's configuration file contains numerous parameters to control the behavior and performance of NLSR.
|
||||
The configuration file also includes the trust schema used by NLSR to verify LSA Data, Hello Data, and prefix update command Interests.
|
||||
|
||||
\subsection{Naming Conventions}
|
||||
The NLSR naming convention is mostly arbitrary. For example, a router's name, maybe \texttt{\%C1.Router/router1}, is composed of two parts. \texttt{\%C1.Router} is the router ``tag'', and \texttt{router1} is the name or label of the router. Different entities are given different tags, depending on the context.
|
||||
|
||||
\subsection{General Section}
|
||||
|
||||
The \texttt{general} section in the configuration file includes parameters which deal with the general setup of the router, the behavior of the LSDB, and logging configuration.
|
||||
|
||||
There are three parameters used to configure the router prefix of the router.
|
||||
The router prefix is the name that other routers in the network know this router by.
|
||||
\begin{itemize}
|
||||
\item \texttt{network} - the name of the network to which the router belongs; e.g., \texttt{/ndn}.
|
||||
\item \texttt{site} - the name of the site to which the router belongs; e.g., \texttt{/edu/memphis}.
|
||||
\item \texttt{router} - the name to identify the router; e.g., \texttt{/\%C1.Router/cs/pollux}.t
|
||||
\end{itemize}
|
||||
The router prefix is constructed by combining the three parameters following the format: \texttt{/<network>/<site>/<router>}.
|
||||
|
||||
There are three parameters which affect the behavior of the LSDB.
|
||||
\begin{itemize}
|
||||
\item \texttt{lsa-refresh-time} - the time in seconds the router will wait before refreshing its LSAs (Default value: 1800; Valid values: 240 - 7200).
|
||||
\item \texttt{router-dead-interval} - the time in seconds after which an inactive router's LSAs are removed.
|
||||
The configured value for this parameter must be greater than \texttt{lsa-refresh-time}. (Default value: two times the value configured in \texttt{lsa-refresh-time}).
|
||||
\item \texttt{lsa-interest-lifetime} - the interest lifetime used for LSA Interests (Default value: 4; Valid values: 1 - 60).
|
||||
\end{itemize}
|
||||
|
||||
The \texttt{log-level} parameter configures the verbosity of NLSR's logging.
|
||||
The possible \texttt{log-level} values are listed in increasing verbosity. That is, the value all the way to the left includes the values all the way to the right.
|
||||
\begin{verbatim}
|
||||
NONE < ERROR < WARN < INFO (Default) < DEBUG < TRACE < ALL
|
||||
\end{verbatim}
|
||||
|
||||
Note that a log level also enables all log levels to its left. That is, setting log level to \texttt{TRACE} causes \texttt{ERROR, WARN, INFO} and \texttt{DEBUG} messages. to also be logged.
|
||||
|
||||
The \texttt{general} configuration section also includes parameters to choose where the NLSR log file and the NLSR sequence number file are stored.
|
||||
The \texttt{log-dir} parameter is an absolute path to the directory where the NLSR log file should be written, and \texttt{seq-dir} is an absolute path to the directory where the NLSR sequence number should be written. The log directory must exist and be writable, or else NLSR will fail to start.
|
||||
|
||||
\subsection{Neighbors Section}
|
||||
|
||||
The \texttt{neighbors} section in the configuration file contains parameters that define the behavior of the Hello Protocol and the neighboring routers of the router.
|
||||
\begin{itemize}
|
||||
\item \texttt{hello-retries} - the number of times to retry a Hello Interest before deciding the neighbor is down (Default value: 3; Valid values: 1 - 10).
|
||||
\item \texttt{hello-timeout} - the interest lifetime for Hello Interests in seconds (Default value: 1, Valid values: 1 - 15).
|
||||
\item \texttt{hello-interval} - the time in seconds between sending each Hello Interest to a neighbor. (Default value: 60; Valid values: 30 - 90).
|
||||
\item \texttt{adj-lsa-build-interval} - when the Hello Protocol triggers an Adjacency LSA build, the LSDB will wait this amount of time in seconds before performing the Adjacency LSA build. This parameter is intended to allow for Adjacency LSA build requests to be aggregated and the build can then be performed once. (Default value: 5; Valid values: 0 - 5)
|
||||
\item \texttt{first-hello-interval} - the time to wait in seconds before sending the first Hello Interests (Default value: 10; Valid values: 0 - 10).
|
||||
\item \texttt{face-dataset-fetch-tries} - how many times to re-fetch
|
||||
the Face status dataset from NFD. (Default value: 3; Valid values: 1 - 10)
|
||||
\item \texttt{face-dataset-fetch-interval} - how often to fetch the
|
||||
Face status dataset from NFD. This dataset is needed to communicate
|
||||
with neighbors, but Face events are considered the main source of
|
||||
this information. This dataset is intended as a backup to that
|
||||
mechanism, so the interval is very long. (Default value: 3600.
|
||||
Valid values: 1800 - 5400)
|
||||
\end{itemize}
|
||||
|
||||
The \texttt{neighbors} section also includes multiple \texttt{neighbor} subsections, each of which configures a neighbor of the router.
|
||||
The \texttt{neighbor} subsection includes:
|
||||
\begin{itemize}
|
||||
\item \texttt{name} - the router prefix of the neighboring router
|
||||
\item \texttt{face-uri} - the face that should be used to connect to the neighboring router
|
||||
\item \texttt{link-cost} - the cost metric for the link connecting this router to the neighbor router.
|
||||
\end{itemize}
|
||||
|
||||
\emph{NB: NLSR no longer creates and configures Faces in NFD!} NLSR
|
||||
periodically fetches from NFD a dataset containing information about
|
||||
all of NFD's Faces. NLSR scans this information and internally
|
||||
configures neighbors with that information. Additionally, NLSR listens
|
||||
to activity from NFD concerning Faces. These two sources of
|
||||
information should cover all Faces; any neighbor not represented in
|
||||
these two sources of information will be assumed inactive or
|
||||
inaccessible, and will not be contacted.
|
||||
|
||||
\subsection{Hyperbolic Section}
|
||||
|
||||
Hyperbolic Routing is a greedy geometric routing technique available in NLSR. The best resource to understand how it works is its white paper. \cite{HyperbolicASF}
|
||||
|
||||
The \texttt{hyperbolic} section in the configuration file is used to enable/disable hyperbolic routing and to specify the hyperbolic coordinates of the router.
|
||||
|
||||
The \texttt{state} parameter indicates whether or not hyperbolic routing should be enabled. There are three possible values for this parameter: \texttt{on}, \texttt{off}, and \texttt{dry-run}. \texttt{on} enables hyperbolic routing; \texttt{off} disables hyperbolic routing (link-state routing is used); \texttt{dry-run} uses link-state routing to populate NFD's FIB, but will also perform the hyperbolic routing calculations and write them to the log file for debugging purposes.
|
||||
|
||||
The \texttt{radius} parameter defines the router's radius in the hyperbolic coordinate system and \texttt{angle} defines the router's angle(s) in the hyperbolic coordinate system. There can be (d-1) angular coordinates in d-dimensional hyperbolic routing. Currently the testbed uses 2-dimensional hyperbolic routing with one radial and one angular coordinate.
|
||||
|
||||
\subsection{FIB Section}
|
||||
|
||||
The \texttt{fib} section in the configuration file contains two parameters: one to limit the number of next hops registered for each name prefix, and the amount of time to wait before calculating the routing table after a request is made.
|
||||
|
||||
\texttt{max-faces-per-prefix} defines the maximum number of next hops that can be registered for a name prefix.
|
||||
This value is intended to reduce the FIB size for routers with a large number of neighbors.
|
||||
The default value for \texttt{max-faces-per-prefix} is \texttt{0} which indicates that all available next hops may be added to each name prefix. \texttt{max-faces-per-prefix} allows values between 0 and 60.
|
||||
|
||||
\texttt{routing-calc-interval} is the time to wait in seconds after a routing table calculation is requested before actually performing the routing table calculation.
|
||||
This parameter is intended to limit the number of routing table calculations, which may be performance intensive on some systems.
|
||||
The default value for \texttt{routing-calc-interval} is 15 seconds and can be configured to be in the range of 0 to 15 seconds.
|
||||
|
||||
\subsection{Advertising Section}
|
||||
|
||||
The \texttt{advertising} section includes a list of name prefixes that the router should advertise as reachable through itself.
|
||||
Each name prefix that should be advertised should be in the following format: \texttt{prefix /name/to/advertise}.
|
||||
This section allows for static configuration of the advertised prefixes, but prefixes can be dynamically advertised and withdrawn using the Prefix Update Processor.
|
||||
|
||||
\subsection{Security Section}
|
||||
|
||||
The \texttt{security} section of the configuration file includes the configuration for NLSR's validators and the locations of certificates that should be published by the router.
|
||||
|
||||
The \texttt{validator} subsection includes the configuration for the validator used by NLSR to verify the signatures of Hello Data and LSA Data.
|
||||
|
||||
The \texttt{prefix-update-validator} configures the validator used by the Prefix Update Processor to verify that prefix update command Interests are signed by the operator of the router.
|
||||
|
||||
The \texttt{security} section also allows configuration of which certificates should be published by the router using the \texttt{cert-to-publish} keyword.
|
||||
If the router should publish a certificate, the absolute path for the certificate file can be configured as \texttt{cert-to-publish} value.
|
||||
@@ -0,0 +1,78 @@
|
||||
Getting Started with NLSR
|
||||
=========================
|
||||
|
||||
.. toctree::
|
||||
..
|
||||
|
||||
Getting Source
|
||||
--------------
|
||||
|
||||
- `GitHub NLSR repository <https://github.com/named-data/NLSR>`_
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
:doc:`INSTALL`
|
||||
|
||||
|
||||
Important Notes About Configuration
|
||||
-----------------------------------
|
||||
|
||||
Since v0.4.0, NLSR no longer creates Faces for the neighbors that are
|
||||
specified in ``nlsr.conf``. Instead, it relies on the pre-existence of
|
||||
the Faces in NFD. NLSR will obtain this information from NFD, and
|
||||
configure its neighbors using this information.
|
||||
|
||||
For people who were relying on NLSR to automagically configure their
|
||||
networks, this must now be done with ``nfdc``. Its documentation can
|
||||
be found `here
|
||||
<https://named-data.net/doc/NFD/current/manpages/nfdc.html>`_
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
After installing NLSR from source, you need to create a configuration file for
|
||||
NLSR. Please take a look at :doc:`manpages/nlsr.conf` for a sample configuration. For
|
||||
details on configuring a router, please refer to :doc:`ROUTER-CONFIG`. For details on
|
||||
security configuration, please refer to :doc:`SECURITY-CONFIG`.
|
||||
|
||||
Running
|
||||
-------
|
||||
|
||||
Run nlsr with the following command:
|
||||
|
||||
::
|
||||
|
||||
nlsr
|
||||
|
||||
NLSR will look for the default configuration file, ``nlsr.conf``, in the current directory.
|
||||
|
||||
You can also run ``nlsr -f`` with the absolute path of the configuration file:
|
||||
|
||||
::
|
||||
|
||||
nlsr -f /usr/local/etc/ndn/nlsr.conf
|
||||
|
||||
Logging
|
||||
-------
|
||||
|
||||
NLSR uses the ndn-cxx logging facility. All levels listed below the selected log-level
|
||||
value are enabled.
|
||||
|
||||
::
|
||||
|
||||
Valid values:
|
||||
|
||||
TRACE trace messages (most verbose)
|
||||
DEBUG debugging messages
|
||||
INFO informational messages
|
||||
WARN warning messages
|
||||
ERROR error messages
|
||||
FATAL fatal (will be logged unconditionally)
|
||||
|
||||
To obtain logs for NLSR, set the NDN_LOG environment variable with the correct prefix and
|
||||
log-level settings. For example, running the command `export NDN_LOG=nlsr.*=TRACE && nlsr`
|
||||
will display all log messages in NLSR with a DEBUG level or below. If the user is presented
|
||||
with an error message `User does not have read and write permission on the directory` it can
|
||||
be circumvented by running the application with sudo: `sudo env NDN_LOG=nlsr.*=DEBUG nlsr`.
|
||||
Use `man ndn-log` for more detailed instructions.
|
||||
@@ -0,0 +1,42 @@
|
||||
NLSR Installation Instructions
|
||||
==============================
|
||||
|
||||
.. toctree::
|
||||
..
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
- `NFD <http://named-data.net/doc/NFD/current/>`_ and its requirements:
|
||||
|
||||
Refer to `Getting started with NFD <http://named-data.net/doc/NFD/current/INSTALL.html>`_
|
||||
for detailed installation and running instruction.
|
||||
|
||||
- ChronoSync library
|
||||
|
||||
::
|
||||
|
||||
https://github.com/named-data/ChronoSync#build
|
||||
|
||||
Build
|
||||
-----
|
||||
|
||||
Execute the following commands to build NLSR:
|
||||
|
||||
::
|
||||
|
||||
./waf configure
|
||||
./waf
|
||||
sudo ./waf install
|
||||
|
||||
Refer to ``./waf –help`` for more options that can be used during the configure stage and
|
||||
how to properly configure NLSR.
|
||||
|
||||
If your pkgconfig path is not set properly you can do the following before running ``./waf
|
||||
configure``
|
||||
|
||||
::
|
||||
|
||||
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
|
||||
or
|
||||
export PKG_CONFIG_PATH=/path/to/pkgconfig/on/your/machine
|
||||
@@ -0,0 +1,4 @@
|
||||
NLSR Release Notes
|
||||
==================
|
||||
|
||||
.. include:: release-notes-latest.rst
|
||||
@@ -0,0 +1,290 @@
|
||||
Router Configuration
|
||||
====================
|
||||
|
||||
.. toctree::
|
||||
..
|
||||
|
||||
Example network and sample configuration
|
||||
----------------------------------------
|
||||
|
||||
Assume that three routers in the same network, but at three different sites
|
||||
(``memphis.edu``, ``arizona.edu``, and ``colostate.edu``), are connected to each other to
|
||||
construct the following topology:
|
||||
|
||||
::
|
||||
|
||||
+-------------------------------------+
|
||||
| /ndn/edu/memphis/%C1.Router/router1 |
|
||||
+-------------------------------------+
|
||||
/ 11 12\
|
||||
/ \
|
||||
route-cost = 25 / \ route-cost = 30
|
||||
/ \
|
||||
17 / \ 13
|
||||
+-----------------------------------+ 7 10 +-------------------------------------+
|
||||
|/ndn/edu/arizona/%C1.Router/router3|-------------------|/ndn/edu/colostate/%C1.Router/router2|
|
||||
+-----------------------------------+ route-cost = 28 +-------------------------------------+
|
||||
|
||||
Figure: Network Topology
|
||||
|
||||
The number represents the connecting face id. For example,
|
||||
``/ndn/edu/memphis/%C1.Router/router1`` is connected to
|
||||
``/ndn/edu/arizona/%C1.Router/router3`` via face 11 and the route cost is 25. To reach
|
||||
``/ndn/edu/colostate/%C1.Router/router2`` via face 12, the route cost is 30.
|
||||
|
||||
We will walk through setting up the faces and creating the configuration file for
|
||||
``/ndn/edu/memphis/%C1.Router/router1``.
|
||||
|
||||
Step 1. Ensuring nfd is running
|
||||
-------------------------------
|
||||
|
||||
Type the following in the terminal:
|
||||
|
||||
::
|
||||
|
||||
nfd-status
|
||||
|
||||
If you see ``error while connecting to the forwarder (No such file or directory)``,
|
||||
``nfd`` is not running. Follow the instructions in `Getting started with NFD
|
||||
<http://named-data.net/doc/NFD/current/INSTALL.html>`_ to run nfd.
|
||||
|
||||
Step 2. Determining FaceUri
|
||||
---------------------------
|
||||
|
||||
Assume that ``/ndn/edu/arizona/%C1.Router/router3`` has hostname ``router3.arizona.edu`` and
|
||||
``/ndn/edu/colostate/%C1.Router/router2`` has IP address ``79.123.10.145``.
|
||||
``/ndn/edu/memphis/%C1.Router/router1`` will consider FaceUri
|
||||
``udp4://router3.arizona.edu`` for router ``/ndn/edu/arizona/%C1.Router/router3`` and
|
||||
FaceUri ``udp4://79.123.10.145`` for router ``/ndn/edu/colostate/%C1.Router/router2``.
|
||||
|
||||
Step 3: Creating configuration file
|
||||
-----------------------------------
|
||||
|
||||
Now, assume that ``/ndn/memphis.edu/router1`` wants to advertise three name prefixes
|
||||
(``/ndn/memphis/sports/basketball/grizzlies``, ``/ndn/memphis/entertainment/blues``,
|
||||
``/ndn/news/memphis/politics/lutherking``). The configuration file with the necessary
|
||||
configuration commands follows:
|
||||
|
||||
::
|
||||
|
||||
; nlsr.conf starts here
|
||||
; the general section contains all the general settings for router
|
||||
|
||||
general
|
||||
{
|
||||
; mandatory configuration command section network, site and router
|
||||
network /ndn/ ; name of the network the router belongs to in ndn URI format
|
||||
site /edu/memphis/ ; name of the site the router belongs to in ndn URI format
|
||||
router /%C1.Router/router1 ; name of the network the router belongs to in ndn URI format
|
||||
|
||||
; lsa-refresh-time is the time in seconds, after which router will refresh its LSAs
|
||||
lsa-refresh-time 1800 ; default value 1800. Valid values 240-7200
|
||||
|
||||
; InterestLifetime (in seconds) for LSA fetching
|
||||
lsa-interest-lifetime 4 ; default value 4. Valid values 1-60
|
||||
|
||||
seq-dir /var/lib/nlsr/
|
||||
}
|
||||
|
||||
; the neighbors section contains the configuration for router's neighbors and hello's behavior
|
||||
|
||||
neighbors
|
||||
{
|
||||
; in case hello interest timed out, router will try 'hello-retries' times at 'hello-time-out'
|
||||
; seconds interval before giving up for any neighbors (deciding link is down)
|
||||
|
||||
hello-retries 3 ; interest retries number in integer. Default value 3
|
||||
; valid values 1-10
|
||||
|
||||
hello-timeout 1 ; interest time out value in integer. Default value 1
|
||||
; Valid values 1-15
|
||||
|
||||
hello-interval 60 ; interest sending interval in seconds. Default value 60
|
||||
; valid values 30-90
|
||||
|
||||
; adj-lsa-build-interval is the time to wait in seconds after an Adjacency LSA
|
||||
; build is scheduled before actually building the Adjacency LSA
|
||||
|
||||
adj-lsa-build-interval 5 ; default value 5. Valid values 0-5. It is recommended that
|
||||
; adj-lsa-build-interval have a lower value than
|
||||
; routing-calc-interval
|
||||
|
||||
; first-hello-interval is the time to wait in seconds before sending the first Hello Interest
|
||||
|
||||
first-hello-interval 10 ; Default value 10. Valid values 0-10
|
||||
|
||||
; neighbor command is used to configure router's neighbor. Each neighbor will need
|
||||
; one block of neighbor command
|
||||
|
||||
neighbor
|
||||
{
|
||||
name /ndn/edu/arizona/%C1.Router/router3 ; name prefix of the neighbor router consists
|
||||
; of network, site-name and router-name
|
||||
|
||||
face-uri udp4://router3.arizona.edu ; face uri of the face connected to the neighbor
|
||||
link-cost 25 ; cost of the connecting link to neighbor
|
||||
}
|
||||
|
||||
neighbor
|
||||
{
|
||||
name /ndn/edu/colostate/%C1.Router/router2 ; name prefix of the neighbor router consists
|
||||
; of network, site-name and router-name
|
||||
|
||||
face-uri udp4://79.123.10.145 ; face uri of the face connected to the neighbor
|
||||
link-cost 30 ; cost of the connecting link to neighbor
|
||||
}
|
||||
}
|
||||
|
||||
; the hyperbolic section contains the configuration settings of enabling
|
||||
a router to calculate ; routing table using `hyperbolic routing table
|
||||
calculation`_ method
|
||||
|
||||
hyperbolic
|
||||
{
|
||||
; commands in this section follows a strict order
|
||||
; the switch is used to set hyperbolic routing calculation in NLSR
|
||||
|
||||
state off ; default value 'off', set value 'on' to enable hyperbolic routing table
|
||||
; calculation which turns link state routing 'off'. set value to 'dry-run'
|
||||
; to test hyperbolic routing and compare with link state routing.
|
||||
|
||||
|
||||
radius 123.456 ; radius of the router in hyperbolic coordinate system
|
||||
angle 1.45 ; angle of the router in hyperbolic coordinate system
|
||||
}
|
||||
|
||||
|
||||
; the fib section is used to configure fib entry's type to ndn FIB updated by NLSR
|
||||
|
||||
fib
|
||||
{
|
||||
; the max-faces-per-prefix is used to limit the number of faces for each name prefixes
|
||||
; by NLSR in ndn FIB
|
||||
|
||||
max-faces-per-prefix 3 ; default value 0. Valid value 0-60. By default (value 0) NLSR adds
|
||||
; all available faces for each reachable name prefixes in NDN FIB
|
||||
|
||||
}
|
||||
|
||||
; the advertising section contains the configuration settings of the
|
||||
name prefixes ; hosted by this router
|
||||
|
||||
advertising
|
||||
{
|
||||
; the ndnname is used to advertised name from the router. To advertise each name prefix
|
||||
; configure one block of ndnname configuration command for every name prefix.
|
||||
|
||||
prefix /ndn/memphis/sports/basketball/grizzlies
|
||||
prefix /ndn/memphis/entertainment/blues
|
||||
prefix /ndn/news/memphis/politics/lutherking
|
||||
}
|
||||
|
||||
By default NLSR's sequence file directory is set to ``/var/lib/nlsr/``. User must create this
|
||||
directory before starting NLSR. Since this is a system directory, NLSR must either be executed
|
||||
as root, or NLSR can be run as user "nlsr" after configuring the filesystem to grant "nlsr"
|
||||
read and write permissions. If user lacks permissions, the following error will occur:
|
||||
|
||||
::
|
||||
|
||||
User does not have read and write permission on the directory
|
||||
Error in configuration file processing! Exiting from NLSR
|
||||
|
||||
To avoid this, the directory can be set in a user-owned directory. For example:
|
||||
|
||||
::
|
||||
|
||||
general
|
||||
{
|
||||
...
|
||||
|
||||
seq-dir /home/username/nlsr/log ; path for sequence directory (Absolute path)
|
||||
|
||||
}
|
||||
...
|
||||
|
||||
The user will encounter errors such as the following if security is not configured:
|
||||
|
||||
::
|
||||
|
||||
Cannot read certificate from file: /home/username/NLSR/root.cert
|
||||
|
||||
To get rid of this and similar errors relating to security one has to configure security
|
||||
as described in :doc:`SECURITY-CONFIG`. Security can be disabled for testing purposes as follows:
|
||||
|
||||
::
|
||||
|
||||
...
|
||||
trust-anchor
|
||||
{
|
||||
type any
|
||||
;file-name "root.cert"
|
||||
}
|
||||
...
|
||||
trust-anchor
|
||||
{
|
||||
type any
|
||||
;file-name "site.cert"
|
||||
}
|
||||
; cert-to-publish "root.cert"
|
||||
; cert-to-publish "router.cert"
|
||||
; cert-to-publish "site.cert"
|
||||
; cert-to-publish "router.cert"
|
||||
|
||||
Or by simply replacing the whole security section with:
|
||||
|
||||
::
|
||||
|
||||
security
|
||||
{
|
||||
validator
|
||||
{
|
||||
trust-anchor
|
||||
{
|
||||
type any
|
||||
}
|
||||
}
|
||||
prefix-update-validator
|
||||
{
|
||||
trust-anchor
|
||||
{
|
||||
type any
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Step 4: Running NLSR on /ndn/memphis.edu/router1
|
||||
-------------------------------------------------
|
||||
|
||||
Assuming the configuration file is saved as ``nlsr.conf``, type the following to run nlsr:
|
||||
|
||||
::
|
||||
|
||||
$ nlsr -f nlsr.conf
|
||||
|
||||
NLSR will look for nlsr.conf in the current directory. If nlsr.conf is not in the current
|
||||
directory, please provide the absolute path with the file name as the value. If
|
||||
``nlsr.conf`` resides in ``/home/ndnuser/configuration`` directory, type ``nlsr -f
|
||||
/home/ndnuser/configuration/nlsr.conf`` to run nlsr.
|
||||
|
||||
The same process needs to be followed for ``/ndn/arizona.edu/router3`` and
|
||||
``/ndn/colostate.edu/router2`` to run NLSR on these routers.
|
||||
|
||||
Expected Output
|
||||
----------------
|
||||
|
||||
Assuming that all three routers are configured correctly and routing has converged,
|
||||
``nfd-status`` in ``/ndn/edu/colostate/%C1.Router/router2`` will have the following (or similar)
|
||||
entries for the name advertised by ``/ndn/edu/memphis/%C1.Router/router1``:
|
||||
|
||||
RIB:
|
||||
|
||||
::
|
||||
|
||||
/ndn/memphis/entertainment/blues route={faceid=17 (origin=128 cost=25 ChildInherit), faceid=7 (origin=128 cost=58 ChildInherit)}
|
||||
/ndn/memphis/sports/basketball/grizzlies route={faceid=17 (origin=128 cost=25 ChildInherit), faceid=7 (origin=128 cost=58 ChildInherit)}
|
||||
/ndn/news/memphis/politics/lutherking route={faceid=17 (origin=128 cost=25 ChildInherit, faceid=7 (origin=128 cost=58 ChildInherit)}
|
||||
|
||||
This output can be seen by typing ``nfdc route list`` in the terminal. Please refer to the
|
||||
network figure for face IDs.
|
||||
|
||||
.. _hyperbolic routing table calculation: http://arxiv.org/abs/0805.1266
|
||||
@@ -0,0 +1,67 @@
|
||||
Security Configuration
|
||||
=======================
|
||||
|
||||
.. toctree::
|
||||
..
|
||||
|
||||
The trust model of NLSR is semi-hierarchical. An example certificate signing hierarchy is:
|
||||
|
||||
::
|
||||
|
||||
root
|
||||
|
|
||||
+--------------+---------------+
|
||||
site1 site2
|
||||
| |
|
||||
+---------+---------+ +
|
||||
operator1 operator2 operator3
|
||||
| | |
|
||||
+-----+-----+ +----+-----+ +-----+-----+--------+
|
||||
router1 router2 router3 router4 router5 router6 router7
|
||||
| | | | | | |
|
||||
+ + + + + + +
|
||||
NLSR NLSR NLSR NLSR NLSR NLSR NLSR
|
||||
|
||||
Each entity's name and corresponding certificate name follow the
|
||||
convention below:
|
||||
|
||||
======== ===================================================== ================================= ===============================================
|
||||
Entity Identity Name Example Certificate Name Example
|
||||
-------- ----------------------------------------------------- --------------------------------- -----------------------------------------------
|
||||
root /\<network\> /ndn /ndn/KEY/1/%00/%01
|
||||
site /\<network\>/\<site\> /ndn/edu/ucla /ndn/edu/ucla/KEY/2/%00/%01
|
||||
operator /\<network\>/\<site\>/%C1.Operator/\<operator-name\> /ndn/edu/ucla/%C1.Operator/op1 /ndn/edu/ucla/%C1.Operator/op1/KEY/3/%00/%01
|
||||
router /\<network\>/\<site\>/%C1.Router/\<router-name\> /ndn/edu/ucla/%C1.Router/rt1 /ndn/edu/ucla/%C1.Router/rt1/KEY/4/%00/%01
|
||||
NLSR /\<network\>/\<site\>/%C1.Router/\<router-name\>/NLSR /ndn/edu/ucla/%C1.Router/rt1/NLSR /ndn/edu/ucla/%C1.Router/rt1/NLSR/KEY/5/%00/%01
|
||||
======== ===================================================== ================================= ===============================================
|
||||
|
||||
Users should create keys according to the naming and signing hierarchies above.
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
Detailed information about key setup is given in NLSR Developer's Guide.
|
||||
|
||||
Certificate Publishing
|
||||
----------------------
|
||||
|
||||
In a network, every router should have the root certificate configured as a trust
|
||||
anchor. For each site, at least one router should publish the site certificate, and at
|
||||
least one router should publish the certificate of the site operator. Each router should
|
||||
publish its own certificate. All this information should be explicitly specified in the
|
||||
nlsr.conf file. For example, the following configuration file indicates that NLSR should
|
||||
publish the site certificate and the router certificate:
|
||||
|
||||
::
|
||||
|
||||
...
|
||||
security
|
||||
{
|
||||
validator
|
||||
{
|
||||
...
|
||||
}
|
||||
cert-to-publish "site.cert" ; name of the file which contains the site certificate (optional).
|
||||
cert-to-publish "router.cert" ; name of the file which contains the router certificate (required).
|
||||
...
|
||||
}
|
||||
Whitespace-only changes.
+255
@@ -0,0 +1,255 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# NLSR - Named Data Link State Routing Protocol documentation build configuration file, created by
|
||||
# sphinx-quickstart on Sun Apr 6 19:58:22 2014.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its
|
||||
# containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
import datetime
|
||||
import sys
|
||||
import os
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#needs_sphinx = '1.0'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
'sphinx.ext.todo',
|
||||
'redmine_issue'
|
||||
]
|
||||
|
||||
def addExtensionIfExists(extension):
|
||||
try:
|
||||
__import__(extension)
|
||||
extensions.append(extension)
|
||||
except ImportError:
|
||||
sys.stderr.write("Extension '%s' in not available. "
|
||||
"Some documentation may not build correctly.\n" % extension)
|
||||
sys.stderr.write("To install, use \n"
|
||||
" sudo pip install %s\n" % extension.replace('.', '-'))
|
||||
|
||||
if os.getenv('GOOGLE_ANALYTICS', None):
|
||||
addExtensionIfExists('sphinxcontrib.googleanalytics')
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
#source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'NLSR - Named Data Link State Routing Protocol'
|
||||
copyright = u'2014-{}, Named Data Networking Project'.format(datetime.date.today().year)
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#language = None
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
#today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = []
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all
|
||||
# documents.
|
||||
#default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
#add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
#add_module_names = True
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
#show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
#modindex_common_prefix = []
|
||||
|
||||
# If true, keep warnings as "system message" paragraphs in the built documents.
|
||||
#keep_warnings = False
|
||||
|
||||
|
||||
# -- Options for HTML output ----------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
# html_theme = 'default'
|
||||
html_theme = 'named_data_theme'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#html_theme_options = {}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
html_theme_path = ['./']
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = None
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
#html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
# .htaccess) here, relative to this directory. These files are copied
|
||||
# directly to the root of the documentation.
|
||||
#html_extra_path = []
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
#html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
#html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
#html_domain_indices = True
|
||||
|
||||
# If false, no index is generated.
|
||||
#html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
#html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
#html_show_sourcelink = True
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
#html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
#html_show_copyright = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
#html_use_opensearch = ''
|
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
html_file_suffix = ".html"
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'nlsr-docs'
|
||||
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#'preamble': '',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
('index', 'nlsr-docs.tex', u'NLSR - Named Data Link State Routing Protocol Documentation',
|
||||
u'Named Data Networking Project', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
#latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#latex_show_urls = False
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output ---------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('manpages/nlsr', 'nlsr', u'Named Data Link State Routing Protocol Daemon', None, 1),
|
||||
('manpages/nlsr.conf', 'nlsr.conf', u'Named Data Link State Routing Protocol Daemon config file', None, 5),
|
||||
('manpages/nlsrc', 'nlsrc', u'Command-line utility to interact with and collect statistics from NLSR', None, 1),
|
||||
]
|
||||
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#man_show_urls = False
|
||||
|
||||
if os.getenv('GOOGLE_ANALYTICS', None):
|
||||
googleanalytics_id = os.environ['GOOGLE_ANALYTICS']
|
||||
googleanalytics_enabled = True
|
||||
|
||||
redmine_project_url = "https://redmine.named-data.net/"
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,82 @@
|
||||
NLSR - Named Data Link State Routing Protocol
|
||||
=============================================
|
||||
|
||||
NLSR is a routing protocol in NDN that populates NDN's Routing Information Base. NLSR will
|
||||
continue to evolve alongside the Named Data Networking `protocol
|
||||
<https://named-data.net/doc/ndn-tlv/>`_.
|
||||
|
||||
NLSR is an open and free software package licensed under the GPL 3.0 license and free to
|
||||
all Internet users and developers. For more information about the licensing details and
|
||||
limitations, refer to `COPYING.md
|
||||
<https://github.com/named-data/NLSR/blob/master/COPYING.md>`_.
|
||||
|
||||
NLSR is developed by the members of the `NSF-sponsored NDN project team
|
||||
<https://named-data.net/project/participants/>`_. For more details, please refer to
|
||||
`AUTHORS.md <https://github.com/named-data/NLSR/blob/master/AUTHORS.md>`_. Bug reports and
|
||||
feedback are highly appreciated and can be made through the `NLSR Wiki`_.
|
||||
|
||||
The main design goal of NLSR is to provide a routing protocol to populate NDN's FIB. NLSR
|
||||
calculates the routing table using link-state or hyperbolic routing and produces multiple
|
||||
faces for each reachable name prefix in a single authoritative domain. NLSR will continue
|
||||
to evolve over time to include neighbor discovery and to become a full fledged
|
||||
inter-domain routing protocol for NDN. The protocol design is presented in full detail in
|
||||
the `NLSR Paper`_.
|
||||
|
||||
NLSR Documentation
|
||||
-------------------
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
:maxdepth: 3
|
||||
|
||||
GETTING-STARTED
|
||||
INSTALL
|
||||
ROUTER-CONFIG
|
||||
SECURITY-CONFIG
|
||||
RELEASE-NOTES
|
||||
releases
|
||||
manpages
|
||||
|
||||
- :doc:`GETTING-STARTED`
|
||||
- :doc:`INSTALL`
|
||||
- :doc:`ROUTER-CONFIG`
|
||||
- :doc:`SECURITY-CONFIG`
|
||||
- :doc:`RELEASE-NOTES`
|
||||
- :doc:`releases`
|
||||
- :doc:`manpages`
|
||||
|
||||
Downloading
|
||||
-----------
|
||||
|
||||
- `GitHub NLSR repository <https://github.com/named-data/NLSR>`_
|
||||
|
||||
NLSR mailing list
|
||||
-----------------
|
||||
|
||||
- `NLSR Mailing List`_
|
||||
|
||||
- `NLSR Mailing List Archives`_
|
||||
|
||||
`Sign up`_ is needed to post to the list or access the archives.
|
||||
|
||||
Additional information
|
||||
----------------------
|
||||
|
||||
- `NLSR Wiki`_
|
||||
|
||||
- `NLSR Redmine`_
|
||||
Feature requests and bug reports
|
||||
|
||||
- `NLSR Paper`_
|
||||
Detailed explanation of the NLSR design
|
||||
|
||||
- `NLSR Developer's Guide`_
|
||||
For NLSR Development
|
||||
|
||||
.. _NLSR Wiki: https://redmine.named-data.net/projects/nlsr/wiki
|
||||
.. _NLSR Paper: https://named-data.net/wp-content/uploads/2016/01/ndn-0037-1-nlsr.pdf
|
||||
.. _NLSR Mailing List: https://listserv.memphis.edu/scripts/wa.exe?SUBED1=NLSR-HELP-L&A=1
|
||||
.. _NLSR Mailing List Archives: https://listserv.memphis.edu/scripts/wa.exe?A0=NLSR-HELP-L
|
||||
.. _NLSR Developer's Guide: https://github.com/named-data/NLSR/blob/developers-guide/NLSR-Developers-Guide.pdf
|
||||
.. _Sign up: https://listserv.memphis.edu/scripts/wa.exe?GETPW1
|
||||
.. _NLSR Redmine: https://redmine.named-data.net/projects/nlsr
|
||||
@@ -0,0 +1,10 @@
|
||||
.. _Manpages:
|
||||
|
||||
Manpages
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
manpages/nlsr
|
||||
manpages/nlsr.conf
|
||||
manpages/nlsrc
|
||||
:maxdepth: 1
|
||||
@@ -0,0 +1,13 @@
|
||||
nlsr.conf
|
||||
=========
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
NLSR config file
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
.. literalinclude:: ../../nlsr.conf
|
||||
:linenos:
|
||||
@@ -0,0 +1,37 @@
|
||||
nlsr
|
||||
====
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
::
|
||||
|
||||
nlsr [options]
|
||||
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
``nlsr`` is a process that implements routing protocol in NDN to populate NDN's Routing
|
||||
Information Base.
|
||||
|
||||
Options:
|
||||
--------
|
||||
|
||||
``-f <FILE>``
|
||||
Specify configuration file name (default: ``./nlsr.conf``)
|
||||
|
||||
``-V``
|
||||
Display version information
|
||||
|
||||
``-h``
|
||||
Display this help message
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
To run NLSR and use a configuration file from the ``/path/to`` directory.
|
||||
|
||||
::
|
||||
|
||||
nlsr -f /path/to/nlsr.conf
|
||||
@@ -0,0 +1,74 @@
|
||||
nlsrc
|
||||
=====
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
::
|
||||
|
||||
nlsrc [-h] [-V] COMMAND [<Command Options>]
|
||||
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
``nlsrc`` is a tool to retrieve link-state database (LSDB) status information from NLSR and
|
||||
announce/withdraw Name prefixes advertised by NLSR.
|
||||
|
||||
Options
|
||||
-------
|
||||
|
||||
``-h``
|
||||
Print usage information
|
||||
|
||||
``-V``
|
||||
Show NLSRC version information
|
||||
|
||||
``COMMAND``
|
||||
|
||||
``lsdb``
|
||||
Retrieve LSDB status information
|
||||
|
||||
``routing``
|
||||
Retrieve routing table status information
|
||||
|
||||
``status``
|
||||
Retrieve LSDB status and routing table status information
|
||||
|
||||
``advertise``
|
||||
Add a Name prefix to be advertised by NLSR
|
||||
|
||||
``advertise <name>``
|
||||
|
||||
``name``
|
||||
The Name prefix to be advertised
|
||||
|
||||
``withdraw``
|
||||
Remove a Name prefix advertised through NLSR
|
||||
|
||||
``withdraw <name>``
|
||||
|
||||
``name``
|
||||
The Name prefix to be withdrawn
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
||||
When security is enabled, NLSR will not be allowed to successfully
|
||||
advertise/withdraw names without first setting a default identity of operator.
|
||||
If default identity is not set as operator, the user will be presented with the
|
||||
error message: “Name prefix update error (code: 403)”. To remedy this
|
||||
issue, use command 'ndn-sec-default'.
|
||||
|
||||
Example:
|
||||
|
||||
ndnsec-set-default /ndn/a-site/%C1.Operator/op
|
||||
|
||||
Exit Status
|
||||
-----------
|
||||
|
||||
nlsrc exits with one of the following values:
|
||||
::
|
||||
|
||||
0 nlsrc exited successfully
|
||||
>0 An error occurred
|
||||
@@ -0,0 +1,96 @@
|
||||
{#
|
||||
named_data_theme/layout.html
|
||||
~~~~~~~~~~~~~~~~~
|
||||
#}
|
||||
{% extends "basic/layout.html" %}
|
||||
|
||||
{% block header %}
|
||||
<!--headercontainer-->
|
||||
<div id="header_container">
|
||||
|
||||
<!--header-->
|
||||
<div class="row">
|
||||
<div class="three columns">
|
||||
<div id="logo">
|
||||
<a href="http://named-data.net" title="A Future Internet Architecture"><img src="http://named-data.net/wp-content/uploads/cropped-20130722_Logo2.png" alt="" /></a>
|
||||
</div><!--logo end-->
|
||||
</div>
|
||||
|
||||
<!--top menu-->
|
||||
<div class="nine columns" id="menu_container" >
|
||||
<h1><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a></h1>
|
||||
</div>
|
||||
</div>
|
||||
</div><!--header container end-->
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="content-wrapper">
|
||||
<div class="content">
|
||||
<div class="document">
|
||||
{%- block document %}
|
||||
{{ super() }}
|
||||
{%- endblock %}
|
||||
</div>
|
||||
<div class="sidebar">
|
||||
{%- block sidebartoc %}
|
||||
<h3>{{ _('Table Of Contents') }}</h3>
|
||||
{{ toctree(includehidden=True) }}
|
||||
|
||||
<h3>{{ _('Additional documenation') }}</h3>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference external" href="http://redmine.named-data.net/projects/nlsr/wiki">NLSR Wiki</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="doxygen/annotated.html">API documentation (doxygen)</a></li>
|
||||
</ul>
|
||||
{%- endblock %}
|
||||
{%- block sidebarsearch %}
|
||||
<h3 style="margin-top: 1.5em;">{{ _('Search') }}</h3>
|
||||
<form class="search" action="{{ pathto('search') }}" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="{{ _('Go') }}" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
{{ _('Enter search terms or a module, class or function name.') }}
|
||||
</p>
|
||||
{%- endblock %}
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block footer %}
|
||||
<div id="footer-container">
|
||||
<!--footer container-->
|
||||
<div class="row">
|
||||
</div><!-- footer container-->
|
||||
</div>
|
||||
|
||||
<div id="footer-info">
|
||||
<!--footer container-->
|
||||
<div class="row">
|
||||
<div class="twelve columns">
|
||||
|
||||
<div id="copyright">This research is partially supported by NSF (Award <a href="http://www.nsf.gov/awardsearch/showAward?AWD_ID=1040868" target="_blank>">CNS-1040868</a>)<br/><br/><a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_US" target="_blank">Creative Commons Attribution 3.0 Unported License</a> except where noted.</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!--footer info end-->
|
||||
|
||||
<script type="text/javascript">
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', 'UA-22320603-1']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block relbar1 %}{% endblock %}
|
||||
{% block relbar2 %}{% endblock %}
|
||||
@@ -0,0 +1,22 @@
|
||||
<!-- start footer part -->
|
||||
<!--BEGIN GENERATE_TREEVIEW-->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
$navpath
|
||||
<li class="footer">$generatedby
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="$relpath$doxygen.png" alt="doxygen"/></a> $doxygenversion </li>
|
||||
</ul>
|
||||
</div>
|
||||
<!--END GENERATE_TREEVIEW-->
|
||||
<!--BEGIN !GENERATE_TREEVIEW-->
|
||||
<hr class="footer"/>
|
||||
<address class="footer"><small>
|
||||
$generatedby  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="$relpath$doxygen.png" alt="doxygen"/>
|
||||
</a> $doxygenversion
|
||||
</small></address>
|
||||
<!--END !GENERATE_TREEVIEW-->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
|
||||
<link href="$relpath$tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="$relpath$jquery.js"></script>
|
||||
<script type="text/javascript" src="$relpath$dynsections.js"></script>
|
||||
$treeview
|
||||
$search
|
||||
$mathjax
|
||||
<link href="$relpath$doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="$relpath$named_data_doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="$relpath$favicon.ico" rel="shortcut icon" type="image/ico" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
|
||||
<!--BEGIN TITLEAREA-->
|
||||
<!--headercontainer-->
|
||||
<div id="header_container">
|
||||
|
||||
<!--header-->
|
||||
<div class="row">
|
||||
<div class="three columns">
|
||||
<div id="logo">
|
||||
<a href="http://named-data.net" title="A Future Internet Architecture"><img src="http://named-data.net/wp-content/uploads/cropped-20130722_Logo2.png" alt="" /></a>
|
||||
</div><!--logo end-->
|
||||
</div>
|
||||
|
||||
<!--top menu-->
|
||||
<div class="nine columns" id="menu_container" >
|
||||
<h1><a href="http://named-data.net/doc/NLSR/$projectnumber/">$projectname $projectnumber documentation</a></h1>
|
||||
</div>
|
||||
</div>
|
||||
</div><!--header container end-->
|
||||
<!--END TITLEAREA-->
|
||||
|
||||
<!-- end header part -->
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 362 B |
@@ -0,0 +1,71 @@
|
||||
* {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
html { font-size: 62.5%; }
|
||||
|
||||
body {
|
||||
font-family: "Verdana", Arial, sans-serif;
|
||||
background-color: #eeeeec;
|
||||
color: #777;
|
||||
border-top: 4px solid #fd7800;
|
||||
}
|
||||
|
||||
body { background: white; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1; color: #222222; position: relative; -webkit-font-smoothing: antialiased; }
|
||||
|
||||
.clearer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.left {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.line-block {
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.line-block .line-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
font-family: "Georgia", "Times New Roman", serif;
|
||||
font-weight: normal;
|
||||
color: #3465a4;
|
||||
margin-bottom: .8em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #204a87;
|
||||
}
|
||||
|
||||
h2 {
|
||||
padding-bottom: .5em;
|
||||
border-bottom: 1px solid #3465a4;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
color: #dddddd;
|
||||
padding-left: .3em;
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
h2:hover > a.headerlink,
|
||||
h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
@@ -0,0 +1,459 @@
|
||||
* {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
html { font-size: 62.5%; }
|
||||
|
||||
body {
|
||||
font-family: {{ theme_bodyfont }};
|
||||
background-color: {{ theme_bgcolor }};
|
||||
color: #777;
|
||||
border-top: 4px solid #fd7800;
|
||||
}
|
||||
|
||||
body { background: white; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1; color: #222222; position: relative; -webkit-font-smoothing: antialiased; }
|
||||
|
||||
/* Page layout */
|
||||
|
||||
div.header, div.content, div.footer {
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
div.header-wrapper {
|
||||
background: {{ theme_headerbg }};
|
||||
border-bottom: 3px solid #2e3436;
|
||||
}
|
||||
|
||||
|
||||
/* Default body styles */
|
||||
a {
|
||||
color: {{ theme_linkcolor }};
|
||||
}
|
||||
|
||||
div.bodywrapper a, div.footer a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.clearer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.left {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.line-block {
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.line-block .line-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
font-family: {{ theme_headerfont }};
|
||||
font-weight: normal;
|
||||
color: {{ theme_headercolor2 }};
|
||||
margin-bottom: .8em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: {{ theme_headercolor1 }};
|
||||
}
|
||||
|
||||
h2 {
|
||||
padding-bottom: .5em;
|
||||
border-bottom: 1px solid {{ theme_headercolor2 }};
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
color: #dddddd;
|
||||
padding-left: .3em;
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
h2:hover > a.headerlink,
|
||||
h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
div.admonition {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
padding: 2px 7px 1px 7px;
|
||||
border-left: 0.2em solid black;
|
||||
}
|
||||
|
||||
p.admonition-title {
|
||||
margin: 0px 10px 5px 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dt:target, .highlighted {
|
||||
background-color: #fbe54e;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
|
||||
div.header {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
div.header .headertitle {
|
||||
font-family: {{ theme_headerfont }};
|
||||
font-weight: normal;
|
||||
font-size: 180%;
|
||||
letter-spacing: .08em;
|
||||
margin-bottom: .8em;
|
||||
}
|
||||
|
||||
div.header .headertitle a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
div.header div.rel {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
div.header div.rel a {
|
||||
color: {{ theme_headerlinkcolor }};
|
||||
letter-spacing: .1em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
p.logo {
|
||||
float: right;
|
||||
}
|
||||
|
||||
img.logo {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
|
||||
/* Content */
|
||||
div.content-wrapper {
|
||||
background-color: white;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
div.document {
|
||||
width: 70%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
div.body {
|
||||
padding-right: 2em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.document h1 {
|
||||
line-height: 120%;
|
||||
}
|
||||
|
||||
div.document ul {
|
||||
margin-left: 1.5em;
|
||||
list-style-type: square;
|
||||
}
|
||||
|
||||
div.document dd {
|
||||
margin-left: 1.2em;
|
||||
margin-top: .4em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
div.document .section {
|
||||
margin-top: 1.7em;
|
||||
}
|
||||
div.document .section:first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
div.document div.highlight {
|
||||
padding: 3px;
|
||||
background-color: #eeeeec;
|
||||
border-top: 2px solid #dddddd;
|
||||
border-bottom: 2px solid #dddddd;
|
||||
margin-bottom: .8em;
|
||||
}
|
||||
|
||||
div.document h2 {
|
||||
margin-top: .7em;
|
||||
}
|
||||
|
||||
div.document p {
|
||||
margin-bottom: .5em;
|
||||
}
|
||||
|
||||
div.document li.toctree-l1 {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
div.document .descname {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.document .docutils.literal {
|
||||
background-color: #eeeeec;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
div.document .docutils.xref.literal {
|
||||
background-color: transparent;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
div.document ol {
|
||||
margin: 1.5em;
|
||||
}
|
||||
|
||||
|
||||
/* Sidebar */
|
||||
|
||||
div.sidebar {
|
||||
width: 20%;
|
||||
float: right;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
div.sidebar a, div.header a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div.sidebar a:hover, div.header a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div.sidebar h3 {
|
||||
color: #2e3436;
|
||||
text-transform: uppercase;
|
||||
font-size: 130%;
|
||||
letter-spacing: .1em;
|
||||
}
|
||||
|
||||
div.sidebar ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
div.sidebar li.toctree-l1 a {
|
||||
display: block;
|
||||
padding: 1px;
|
||||
border: 1px solid #dddddd;
|
||||
background-color: #eeeeec;
|
||||
margin-bottom: .4em;
|
||||
padding-left: 3px;
|
||||
color: #2e3436;
|
||||
}
|
||||
|
||||
div.sidebar li.toctree-l2 a {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
margin-left: 1em;
|
||||
border-bottom: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
div.sidebar li.toctree-l3 a {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
margin-left: 2em;
|
||||
border-bottom: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
div.sidebar li.toctree-l2:last-child a {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
div.sidebar li.toctree-l1.current a {
|
||||
border-right: 5px solid {{ theme_headerlinkcolor }};
|
||||
}
|
||||
|
||||
div.sidebar li.toctree-l1.current li.toctree-l2 a {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
div.sidebar input[type="text"] {
|
||||
width: 170px;
|
||||
}
|
||||
|
||||
div.sidebar input[type="submit"] {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
|
||||
/* Footer */
|
||||
|
||||
div.footer-wrapper {
|
||||
background: {{ theme_footerbg }};
|
||||
border-top: 4px solid #babdb6;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
min-height: 80px;
|
||||
}
|
||||
|
||||
div.footer, div.footer a {
|
||||
color: #888a85;
|
||||
}
|
||||
|
||||
div.footer .right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.footer .left {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
|
||||
/* Styles copied from basic theme */
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* -- search page ----------------------------------------------------------- */
|
||||
|
||||
ul.search {
|
||||
margin: 10px 0 0 20px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul.search li {
|
||||
padding: 5px 0 5px 20px;
|
||||
background-image: url(file.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 7px;
|
||||
}
|
||||
|
||||
ul.search li a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.search li div.context {
|
||||
color: #888;
|
||||
margin: 2px 0 0 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul.keywordmatches li.goodmatch a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* -- index page ------------------------------------------------------------ */
|
||||
|
||||
table.contentstable {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
table.contentstable p.biglink {
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
a.biglink {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
span.linkdescr {
|
||||
font-style: italic;
|
||||
padding-top: 5px;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
/* -- general index --------------------------------------------------------- */
|
||||
|
||||
table.indextable td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.indextable dl, table.indextable dd {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
table.indextable tr.pcap {
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
table.indextable tr.cap {
|
||||
margin-top: 10px;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
img.toggler {
|
||||
margin-right: 3px;
|
||||
margin-top: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* -- viewcode extension ---------------------------------------------------- */
|
||||
|
||||
.viewcode-link {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.viewcode-back {
|
||||
float: right;
|
||||
font-family:: {{ theme_bodyfont }};
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
margin: -1px -3px;
|
||||
padding: 0 3px;
|
||||
background-color: #f4debf;
|
||||
border-top: 1px solid #ac9;
|
||||
border-bottom: 1px solid #ac9;
|
||||
}
|
||||
|
||||
td.linenos pre {
|
||||
padding: 5px 0px;
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
color: #aaa;
|
||||
margin-top: -10pt;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 635 B |
@@ -0,0 +1,14 @@
|
||||
@import url("agogo.css");
|
||||
|
||||
pre {
|
||||
padding: 10px;
|
||||
background-color: #fafafa;
|
||||
color: #222;
|
||||
line-height: 1.2em;
|
||||
border: 2px solid #C6C9CB;
|
||||
font-size: 1.1em;
|
||||
/* margin: 1.5em 0 1.5em 0; */
|
||||
margin: 0;
|
||||
border-right-style: none;
|
||||
border-left-style: none;
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
+788
@@ -0,0 +1,788 @@
|
||||
.c-1, .c-2, .c-3, .c-4, .c-5, .c-6, .c-7, .c-8, .c-9, .c-10, .c-11, .c-12 { float: left; }
|
||||
|
||||
.c-1, .c-2, .c-3, .c-4, .c-5, .c-6, .c-7, .c-8, .c-9, .c-10, .c-11, .c-12 { position: relative; min-height: 1px; padding: 0 15px; }
|
||||
|
||||
.c-1 { width: 8.33333%; }
|
||||
|
||||
.c-2 { width: 16.66667%; }
|
||||
|
||||
.c-3 { width: 25%; }
|
||||
|
||||
.c-4 { width: 33.33333%; }
|
||||
|
||||
.c-5 { width: 41.66667%; }
|
||||
|
||||
.c-6 { width: 50%; }
|
||||
|
||||
.c-7 { width: 58.33333%; }
|
||||
|
||||
.c-8 { width: 66.66667%; }
|
||||
|
||||
.c-9 { width: 75%; }
|
||||
|
||||
.c-10 { width: 83.33333%; }
|
||||
|
||||
.c-11 { width: 91.66667%; }
|
||||
|
||||
.c-12 { width: 100%; }
|
||||
|
||||
/* Requires: normalize.css */
|
||||
/* Global Reset & Standards ---------------------- */
|
||||
* { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
|
||||
|
||||
html { font-size: 62.5%; }
|
||||
|
||||
body { background: white; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1; color: #222222; position: relative; -webkit-font-smoothing: antialiased; }
|
||||
|
||||
/* Links ---------------------- */
|
||||
a { color: #fd7800; text-decoration: none; line-height: inherit; }
|
||||
|
||||
a:hover { color: #2795b6; }
|
||||
|
||||
a:focus { color: #fd7800; outline: none; }
|
||||
|
||||
p a, p a:visited { line-height: inherit; }
|
||||
|
||||
/* Misc ---------------------- */
|
||||
.left { float: left; }
|
||||
@media only screen and (max-width: 767px) { .left { float: none; } }
|
||||
|
||||
.right { float: right; }
|
||||
@media only screen and (max-width: 767px) { .right { float: none; } }
|
||||
|
||||
.text-left { text-align: left; }
|
||||
|
||||
.text-right { text-align: right; }
|
||||
|
||||
.text-center { text-align: center; }
|
||||
|
||||
.hide { display: none; }
|
||||
|
||||
.highlight { background: #ffff99; }
|
||||
|
||||
#googlemap img, object, embed { max-width: none; }
|
||||
|
||||
#map_canvas embed { max-width: none; }
|
||||
|
||||
#map_canvas img { max-width: none; }
|
||||
|
||||
#map_canvas object { max-width: none; }
|
||||
|
||||
/* Reset for strange margins by default on <figure> elements */
|
||||
figure { margin: 0; }
|
||||
|
||||
/* Base Type Styles Using Modular Scale ---------------------- */
|
||||
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, p, blockquote, th, td { margin: 0; padding: 0; font-size: 14px; direction: ltr; }
|
||||
|
||||
p { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-size: 14px; line-height: 1.6; margin-bottom: 17px; }
|
||||
p.lead { font-size: 17.5px; line-height: 1.6; margin-bottom: 17px; }
|
||||
|
||||
aside p { font-size: 13px; line-height: 1.35; font-style: italic; }
|
||||
|
||||
h1, h2, h3, h4, h5, h6 { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: bold; color: #222222; text-rendering: optimizeLegibility; line-height: 1.0; margin-bottom: 14px; margin-top: 14px; }
|
||||
h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { font-size: 60%; color: #6f6f6f; line-height: 0; }
|
||||
|
||||
h1 { font-size: 24px; }
|
||||
|
||||
h2 { font-size: 18px; }
|
||||
|
||||
h3 { font-size: 14px; }
|
||||
|
||||
h4 { font-size: 12px; }
|
||||
|
||||
h5 { font-weight: bold; font-size: 12px; }
|
||||
|
||||
h6 { font-style: italic; font-size: 12px; }
|
||||
|
||||
hr { border: solid #c6c6c6; border-width: 1px 0 0; clear: both; margin: 22px 0 21px; height: 0; }
|
||||
|
||||
.subheader { line-height: 1.3; color: #6f6f6f; font-weight: 300; margin-bottom: 17px; }
|
||||
|
||||
em, i { font-style: italic; line-height: inherit; }
|
||||
|
||||
strong, b { font-weight: bold; line-height: inherit; }
|
||||
|
||||
small { font-size: 60%; line-height: inherit; }
|
||||
|
||||
code { font-weight: bold; background: #ffff99; }
|
||||
|
||||
/* Lists ---------------------- */
|
||||
ul, ol { font-size: 14px; line-height: 1.6; margin-bottom: 17px; list-style-position: inside; }
|
||||
|
||||
ul li ul, ul li ol { margin-left: 20px; margin-bottom: 0; }
|
||||
ul.square, ul.circle, ul.disc { margin-left: 17px; }
|
||||
ul.square { list-style-type: square; }
|
||||
ul.square li ul { list-style: inherit; }
|
||||
ul.circle { list-style-type: circle; }
|
||||
ul.circle li ul { list-style: inherit; }
|
||||
ul.disc { list-style-type: disc; }
|
||||
ul.disc li ul { list-style: inherit; }
|
||||
ul.no-bullet { list-style: none; }
|
||||
ul.large li { line-height: 21px; }
|
||||
|
||||
ol li ul, ol li ol { margin-left: 20px; margin-bottom: 0; }
|
||||
|
||||
/* Blockquotes ---------------------- */
|
||||
blockquote, blockquote p { line-height: 1.5; }
|
||||
|
||||
blockquote { margin: 0 0 17px; padding: 9px 20px 0 19px; }
|
||||
blockquote cite { display: block; font-size: 13pt; color: #555555; }
|
||||
blockquote cite:before { content: "\2014 \0020"; }
|
||||
blockquote cite a, blockquote cite a:visited { color: #555555; }
|
||||
|
||||
abbr, acronym { text-transform: uppercase; font-size: 90%; color: #222222; border-bottom: 1px solid #ddd; cursor: help; }
|
||||
|
||||
abbr { text-transform: none; }
|
||||
|
||||
/* Print styles. Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com)
|
||||
*/
|
||||
.print-only { display: none !important; }
|
||||
|
||||
@media print { * { background: transparent !important; color: black !important; box-shadow: none !important; text-shadow: none !important; filter: none !important; -ms-filter: none !important; }
|
||||
/* Black prints faster: h5bp.com/s */
|
||||
a, a:visited { text-decoration: underline; }
|
||||
a[href]:after { content: " (" attr(href) ")"; }
|
||||
abbr[title]:after { content: " (" attr(title) ")"; }
|
||||
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
|
||||
/* Don't show links for images, or javascript/internal links */
|
||||
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
|
||||
thead { display: table-header-group; }
|
||||
/* h5bp.com/t */
|
||||
tr, img { page-break-inside: avoid; }
|
||||
img { max-width: 100% !important; }
|
||||
@page { margin: 0.5cm; }
|
||||
p, h2, h3 { orphans: 3; widows: 3; }
|
||||
h2, h3 { page-break-after: avoid; }
|
||||
.hide-on-print { display: none !important; }
|
||||
.print-only { display: block !important; } }
|
||||
/* Requires globals.css */
|
||||
/* Standard Forms ---------------------- */
|
||||
form { margin: 0 0 19.41641px; }
|
||||
|
||||
.row form .row { margin: 0 -6px; }
|
||||
.row form .row .column, .row form .row .columns { padding: 0 6px; }
|
||||
.row form .row.collapse { margin: 0; }
|
||||
.row form .row.collapse .column, .row form .row.collapse .columns { padding: 0; }
|
||||
|
||||
label { font-size: 14px; color: #4d4d4d; cursor: pointer; display: block; font-weight: 500; margin-bottom: 3px; }
|
||||
label.right { float: none; text-align: right; }
|
||||
label.inline { line-height: 32px; margin: 0 0 12px 0; }
|
||||
|
||||
@media only screen and (max-width: 767px) { label.right { text-align: left; } }
|
||||
.prefix, .postfix { display: block; position: relative; z-index: 2; text-align: center; width: 100%; padding-top: 0; padding-bottom: 0; height: 32px; line-height: 31px; }
|
||||
|
||||
a.button.prefix, a.button.postfix { padding-left: 0; padding-right: 0; text-align: center; }
|
||||
|
||||
span.prefix, span.postfix { background: #f2f2f2; border: 1px solid #cccccc; }
|
||||
|
||||
.prefix { left: 2px; -moz-border-radius-topleft: 2px; -webkit-border-top-left-radius: 2px; border-top-left-radius: 2px; -moz-border-radius-bottomleft: 2px; -webkit-border-bottom-left-radius: 2px; border-bottom-left-radius: 2px; overflow: hidden; }
|
||||
|
||||
.postfix { right: 2px; -moz-border-radius-topright: 2px; -webkit-border-top-right-radius: 2px; border-top-right-radius: 2px; -moz-border-radius-bottomright: 2px; -webkit-border-bottom-right-radius: 2px; border-bottom-right-radius: 2px; }
|
||||
|
||||
input[type="text"], input[type="password"], input[type="date"], input[type="datetime"], input[type="email"], input[type="number"], input[type="search"], input[type="tel"], input[type="time"], input[type="url"], textarea { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; border: 1px solid #cccccc; -webkit-border-radius: 2px; -moz-border-radius: 2px; -ms-border-radius: 2px; -o-border-radius: 2px; border-radius: 2px; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); color: rgba(0, 0, 0, 0.75); display: block; font-size: 14px; margin: 0 0 12px 0; padding: 6px; height: 32px; width: 100%; -webkit-transition: all 0.15s linear; -moz-transition: all 0.15s linear; -o-transition: all 0.15s linear; transition: all 0.15s linear; }
|
||||
input[type="text"].oversize, input[type="password"].oversize, input[type="date"].oversize, input[type="datetime"].oversize, input[type="email"].oversize, input[type="number"].oversize, input[type="search"].oversize, input[type="tel"].oversize, input[type="time"].oversize, input[type="url"].oversize, textarea.oversize { font-size: 17px; padding: 4px 6px; }
|
||||
input[type="text"]:focus, input[type="password"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="time"]:focus, input[type="url"]:focus, textarea:focus { background: #fafafa; outline: none !important; border-color: #b3b3b3; }
|
||||
input[type="text"][disabled], input[type="password"][disabled], input[type="date"][disabled], input[type="datetime"][disabled], input[type="email"][disabled], input[type="number"][disabled], input[type="search"][disabled], input[type="tel"][disabled], input[type="time"][disabled], input[type="url"][disabled], textarea[disabled] { background-color: #ddd; }
|
||||
|
||||
textarea { height: auto; }
|
||||
|
||||
select { width: 100%; }
|
||||
|
||||
/* Fieldsets */
|
||||
fieldset { border: solid 1px #ddd; border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; padding: 12px 12px 0; margin: 18px 0; }
|
||||
fieldset legend { font-weight: bold; background: white; padding: 0 3px; margin: 0; margin-left: -3px; }
|
||||
|
||||
/* Errors */
|
||||
.error input, input.error, .error textarea, textarea.error { border-color: #c60f13; background-color: rgba(198, 15, 19, 0.1); }
|
||||
|
||||
.error label, label.error { color: #c60f13; }
|
||||
|
||||
.error small, small.error { display: block; padding: 6px 4px; margin-top: -13px; margin-bottom: 12px; background: #c60f13; color: #fff; font-size: 12px; font-size: 1.2rem; font-weight: bold; -moz-border-radius-bottomleft: 2px; -webkit-border-bottom-left-radius: 2px; border-bottom-left-radius: 2px; -moz-border-radius-bottomright: 2px; -webkit-border-bottom-right-radius: 2px; border-bottom-right-radius: 2px; }
|
||||
|
||||
@media only screen and (max-width: 767px) { input[type="text"].one, input[type="password"].one, input[type="date"].one, input[type="datetime"].one, input[type="email"].one, input[type="number"].one, input[type="search"].one, input[type="tel"].one, input[type="time"].one, input[type="url"].one, textarea.one, .row textarea.one { width: 100% !important; }
|
||||
input[type="text"].two, .row input[type="text"].two, input[type="password"].two, .row input[type="password"].two, input[type="date"].two, .row input[type="date"].two, input[type="datetime"].two, .row input[type="datetime"].two, input[type="email"].two, .row input[type="email"].two, input[type="number"].two, .row input[type="number"].two, input[type="search"].two, .row input[type="search"].two, input[type="tel"].two, .row input[type="tel"].two, input[type="time"].two, .row input[type="time"].two, input[type="url"].two, .row input[type="url"].two, textarea.two, .row textarea.two { width: 100% !important; }
|
||||
input[type="text"].three, .row input[type="text"].three, input[type="password"].three, .row input[type="password"].three, input[type="date"].three, .row input[type="date"].three, input[type="datetime"].three, .row input[type="datetime"].three, input[type="email"].three, .row input[type="email"].three, input[type="number"].three, .row input[type="number"].three, input[type="search"].three, .row input[type="search"].three, input[type="tel"].three, .row input[type="tel"].three, input[type="time"].three, .row input[type="time"].three, input[type="url"].three, .row input[type="url"].three, textarea.three, .row textarea.three { width: 100% !important; }
|
||||
input[type="text"].four, .row input[type="text"].four, input[type="password"].four, .row input[type="password"].four, input[type="date"].four, .row input[type="date"].four, input[type="datetime"].four, .row input[type="datetime"].four, input[type="email"].four, .row input[type="email"].four, input[type="number"].four, .row input[type="number"].four, input[type="search"].four, .row input[type="search"].four, input[type="tel"].four, .row input[type="tel"].four, input[type="time"].four, .row input[type="time"].four, input[type="url"].four, .row input[type="url"].four, textarea.four, .row textarea.four { width: 100% !important; }
|
||||
input[type="text"].five, .row input[type="text"].five, input[type="password"].five, .row input[type="password"].five, input[type="date"].five, .row input[type="date"].five, input[type="datetime"].five, .row input[type="datetime"].five, input[type="email"].five, .row input[type="email"].five, input[type="number"].five, .row input[type="number"].five, input[type="search"].five, .row input[type="search"].five, input[type="tel"].five, .row input[type="tel"].five, input[type="time"].five, .row input[type="time"].five, input[type="url"].five, .row input[type="url"].five, textarea.five, .row textarea.five { width: 100% !important; }
|
||||
input[type="text"].six, .row input[type="text"].six, input[type="password"].six, .row input[type="password"].six, input[type="date"].six, .row input[type="date"].six, input[type="datetime"].six, .row input[type="datetime"].six, input[type="email"].six, .row input[type="email"].six, input[type="number"].six, .row input[type="number"].six, input[type="search"].six, .row input[type="search"].six, input[type="tel"].six, .row input[type="tel"].six, input[type="time"].six, .row input[type="time"].six, input[type="url"].six, .row input[type="url"].six, textarea.six, .row textarea.six { width: 100% !important; }
|
||||
input[type="text"].seven, .row input[type="text"].seven, input[type="password"].seven, .row input[type="password"].seven, input[type="date"].seven, .row input[type="date"].seven, input[type="datetime"].seven, .row input[type="datetime"].seven, input[type="email"].seven, .row input[type="email"].seven, input[type="number"].seven, .row input[type="number"].seven, input[type="search"].seven, .row input[type="search"].seven, input[type="tel"].seven, .row input[type="tel"].seven, input[type="time"].seven, .row input[type="time"].seven, input[type="url"].seven, .row input[type="url"].seven, textarea.seven, .row textarea.seven { width: 100% !important; }
|
||||
input[type="text"].eight, .row input[type="text"].eight, input[type="password"].eight, .row input[type="password"].eight, input[type="date"].eight, .row input[type="date"].eight, input[type="datetime"].eight, .row input[type="datetime"].eight, input[type="email"].eight, .row input[type="email"].eight, input[type="number"].eight, .row input[type="number"].eight, input[type="search"].eight, .row input[type="search"].eight, input[type="tel"].eight, .row input[type="tel"].eight, input[type="time"].eight, .row input[type="time"].eight, input[type="url"].eight, .row input[type="url"].eight, textarea.eight, .row textarea.eight { width: 100% !important; }
|
||||
input[type="text"].nine, .row input[type="text"].nine, input[type="password"].nine, .row input[type="password"].nine, input[type="date"].nine, .row input[type="date"].nine, input[type="datetime"].nine, .row input[type="datetime"].nine, input[type="email"].nine, .row input[type="email"].nine, input[type="number"].nine, .row input[type="number"].nine, input[type="search"].nine, .row input[type="search"].nine, input[type="tel"].nine, .row input[type="tel"].nine, input[type="time"].nine, .row input[type="time"].nine, input[type="url"].nine, .row input[type="url"].nine, textarea.nine, .row textarea.nine { width: 100% !important; }
|
||||
input[type="text"].ten, .row input[type="text"].ten, input[type="password"].ten, .row input[type="password"].ten, input[type="date"].ten, .row input[type="date"].ten, input[type="datetime"].ten, .row input[type="datetime"].ten, input[type="email"].ten, .row input[type="email"].ten, input[type="number"].ten, .row input[type="number"].ten, input[type="search"].ten, .row input[type="search"].ten, input[type="tel"].ten, .row input[type="tel"].ten, input[type="time"].ten, .row input[type="time"].ten, input[type="url"].ten, .row input[type="url"].ten, textarea.ten, .row textarea.ten { width: 100% !important; }
|
||||
input[type="text"].eleven, .row input[type="text"].eleven, input[type="password"].eleven, .row input[type="password"].eleven, input[type="date"].eleven, .row input[type="date"].eleven, input[type="datetime"].eleven, .row input[type="datetime"].eleven, input[type="email"].eleven, .row input[type="email"].eleven, input[type="number"].eleven, .row input[type="number"].eleven, input[type="search"].eleven, .row input[type="search"].eleven, input[type="tel"].eleven, .row input[type="tel"].eleven, input[type="time"].eleven, .row input[type="time"].eleven, input[type="url"].eleven, .row input[type="url"].eleven, textarea.eleven, .row textarea.eleven { width: 100% !important; }
|
||||
input[type="text"].twelve, .row input[type="text"].twelve, input[type="password"].twelve, .row input[type="password"].twelve, input[type="date"].twelve, .row input[type="date"].twelve, input[type="datetime"].twelve, .row input[type="datetime"].twelve, input[type="email"].twelve, .row input[type="email"].twelve, input[type="number"].twelve, .row input[type="number"].twelve, input[type="search"].twelve, .row input[type="search"].twelve, input[type="tel"].twelve, .row input[type="tel"].twelve, input[type="time"].twelve, .row input[type="time"].twelve, input[type="url"].twelve, .row input[type="url"].twelve, textarea.twelve, .row textarea.twelve { width: 100% !important; } }
|
||||
/* Custom Forms ---------------------- */
|
||||
form.custom { /* Custom input, disabled */ }
|
||||
form.custom span.custom { display: inline-block; width: 16px; height: 16px; position: relative; top: 2px; border: solid 1px #ccc; background: #fff; }
|
||||
form.custom span.custom.radio { -webkit-border-radius: 100px; -moz-border-radius: 100px; -ms-border-radius: 100px; -o-border-radius: 100px; border-radius: 100px; }
|
||||
form.custom span.custom.checkbox:before { content: ""; display: block; line-height: 0.8; height: 14px; width: 14px; text-align: center; position: absolute; top: 0; left: 0; font-size: 14px; color: #fff; }
|
||||
form.custom span.custom.radio.checked:before { content: ""; display: block; width: 8px; height: 8px; -webkit-border-radius: 100px; -moz-border-radius: 100px; -ms-border-radius: 100px; -o-border-radius: 100px; border-radius: 100px; background: #222; position: relative; top: 3px; left: 3px; }
|
||||
form.custom span.custom.checkbox.checked:before { content: "\00d7"; color: #222; }
|
||||
form.custom div.custom.dropdown { display: block; position: relative; width: auto; height: 28px; margin-bottom: 9px; margin-top: 2px; }
|
||||
form.custom div.custom.dropdown a.current { display: block; width: auto; line-height: 26px; min-height: 28px; padding: 0; padding-left: 6px; padding-right: 38px; border: solid 1px #ddd; color: #141414; background-color: #fff; white-space: nowrap; }
|
||||
form.custom div.custom.dropdown a.selector { position: absolute; width: 27px; height: 28px; display: block; right: 0; top: 0; border: solid 1px #ddd; }
|
||||
form.custom div.custom.dropdown a.selector:after { content: ""; display: block; content: ""; display: block; width: 0; height: 0; border: solid 5px; border-color: #aaaaaa transparent transparent transparent; position: absolute; left: 50%; top: 50%; margin-top: -2px; margin-left: -5px; }
|
||||
form.custom div.custom.dropdown:hover a.selector:after, form.custom div.custom.dropdown.open a.selector:after { content: ""; display: block; width: 0; height: 0; border: solid 5px; border-color: #222222 transparent transparent transparent; }
|
||||
form.custom div.custom.dropdown.open ul { display: block; z-index: 10; }
|
||||
form.custom div.custom.dropdown.small { width: 134px !important; }
|
||||
form.custom div.custom.dropdown.medium { width: 254px !important; }
|
||||
form.custom div.custom.dropdown.large { width: 434px !important; }
|
||||
form.custom div.custom.dropdown.expand { width: 100% !important; }
|
||||
form.custom div.custom.dropdown.open.small ul { width: 134px !important; }
|
||||
form.custom div.custom.dropdown.open.medium ul { width: 254px !important; }
|
||||
form.custom div.custom.dropdown.open.large ul { width: 434px !important; }
|
||||
form.custom div.custom.dropdown.open.expand ul { width: 100% !important; }
|
||||
form.custom div.custom.dropdown ul { position: absolute; width: auto; display: none; margin: 0; left: 0; top: 27px; margin: 0; padding: 0; background: #fff; background: rgba(255, 255, 255, 0.95); border: solid 1px #cccccc; }
|
||||
form.custom div.custom.dropdown ul li { color: #555; font-size: 13px; cursor: pointer; padding: 3px; padding-left: 6px; padding-right: 38px; min-height: 18px; line-height: 18px; margin: 0; white-space: nowrap; list-style: none; }
|
||||
form.custom div.custom.dropdown ul li.selected { background: #cdebf5; color: #000; }
|
||||
form.custom div.custom.dropdown ul li.selected:after { content: "\2013"; position: absolute; right: 10px; }
|
||||
form.custom div.custom.dropdown ul li:hover { background-color: #e3f4f9; color: #222; }
|
||||
form.custom div.custom.dropdown ul li:hover:after { content: "\2013"; position: absolute; right: 10px; color: #8ed3e7; }
|
||||
form.custom div.custom.dropdown ul li.selected:hover { background: #cdebf5; cursor: default; color: #000; }
|
||||
form.custom div.custom.dropdown ul li.selected:hover:after { color: #000; }
|
||||
form.custom div.custom.dropdown ul.show { display: block; }
|
||||
form.custom .custom.disabled { background-color: #ddd; }
|
||||
|
||||
/* Correct FF custom dropdown height */
|
||||
@-moz-document url-prefix() { form.custom div.custom.dropdown a.selector { height: 30px; } }
|
||||
|
||||
.lt-ie9 form.custom div.custom.dropdown a.selector { height: 30px; }
|
||||
|
||||
/* The Grid ---------------------- */
|
||||
.row { width: 1000px; max-width: 100%; min-width: 768px; margin: 0 auto; }
|
||||
.row .row { width: auto; max-width: none; min-width: 0; margin: 0 -15px; }
|
||||
.row.collapse .column, .row.collapse .columns { padding: 0; }
|
||||
.row .row { width: auto; max-width: none; min-width: 0; margin: 0 -15px; }
|
||||
.row .row.collapse { margin: 0; }
|
||||
|
||||
.column, .columns { float: left; min-height: 1px; padding: 0 15px; position: relative; }
|
||||
.column.centered, .columns.centered { float: none; margin: 0 auto; }
|
||||
|
||||
[class*="column"] + [class*="column"]:last-child { float: right; }
|
||||
|
||||
[class*="column"] + [class*="column"].end { float: left; }
|
||||
|
||||
.one, .row .one { width: 8.33333%; }
|
||||
|
||||
.two, .row .two { width: 16.66667%; }
|
||||
|
||||
.three, .row .three { width: 25%; }
|
||||
|
||||
.four, .row .four { width: 33.33333%; }
|
||||
|
||||
.five, .row .five { width: 41.66667%; }
|
||||
|
||||
.six, .row .six { width: 50%; }
|
||||
|
||||
.seven, .row .seven { width: 58.33333%; }
|
||||
|
||||
.eight, .row .eight { width: 66.66667%; }
|
||||
|
||||
.nine, .row .nine { width: 75%; }
|
||||
|
||||
.ten, .row .ten { width: 83.33333%; }
|
||||
|
||||
.eleven, .row .eleven { width: 91.66667%; }
|
||||
|
||||
.twelve, .row .twelve { width: 100%; }
|
||||
|
||||
.row .offset-by-one { margin-left: 8.33333%; }
|
||||
|
||||
.row .offset-by-two { margin-left: 16.66667%; }
|
||||
|
||||
.row .offset-by-three { margin-left: 25%; }
|
||||
|
||||
.row .offset-by-four { margin-left: 33.33333%; }
|
||||
|
||||
.row .offset-by-five { margin-left: 41.66667%; }
|
||||
|
||||
.row .offset-by-six { margin-left: 50%; }
|
||||
|
||||
.row .offset-by-seven { margin-left: 58.33333%; }
|
||||
|
||||
.row .offset-by-eight { margin-left: 66.66667%; }
|
||||
|
||||
.row .offset-by-nine { margin-left: 75%; }
|
||||
|
||||
.row .offset-by-ten { margin-left: 83.33333%; }
|
||||
|
||||
.push-two { left: 16.66667%; }
|
||||
|
||||
.pull-two { right: 16.66667%; }
|
||||
|
||||
.push-three { left: 25%; }
|
||||
|
||||
.pull-three { right: 25%; }
|
||||
|
||||
.push-four { left: 33.33333%; }
|
||||
|
||||
.pull-four { right: 33.33333%; }
|
||||
|
||||
.push-five { left: 41.66667%; }
|
||||
|
||||
.pull-five { right: 41.66667%; }
|
||||
|
||||
.push-six { left: 50%; }
|
||||
|
||||
.pull-six { right: 50%; }
|
||||
|
||||
.push-seven { left: 58.33333%; }
|
||||
|
||||
.pull-seven { right: 58.33333%; }
|
||||
|
||||
.push-eight { left: 66.66667%; }
|
||||
|
||||
.pull-eight { right: 66.66667%; }
|
||||
|
||||
.push-nine { left: 75%; }
|
||||
|
||||
.pull-nine { right: 75%; }
|
||||
|
||||
.push-ten { left: 83.33333%; }
|
||||
|
||||
.pull-ten { right: 83.33333%; }
|
||||
|
||||
img, object, embed { max-width: 100%; height: auto; }
|
||||
|
||||
object, embed { height: 100%; }
|
||||
|
||||
img { -ms-interpolation-mode: bicubic; }
|
||||
|
||||
#map_canvas img, .map_canvas img { max-width: none!important; }
|
||||
|
||||
/* Nicolas Gallagher's micro clearfix */
|
||||
.row { *zoom: 1; }
|
||||
.row:before, .row:after { content: ""; display: table; }
|
||||
.row:after { clear: both; }
|
||||
|
||||
/* Mobile Grid and Overrides ---------------------- */
|
||||
@media only screen and (max-width: 767px) { body { -webkit-text-size-adjust: none; -ms-text-size-adjust: none; width: 100%; min-width: 0; margin-left: 0; margin-right: 0; padding-left: 0; padding-right: 0; }
|
||||
.row { width: auto; min-width: 0; margin-left: 0; margin-right: 0; }
|
||||
.column, .columns { width: auto !important; float: none; }
|
||||
.column:last-child, .columns:last-child { float: none; }
|
||||
[class*="column"] + [class*="column"]:last-child { float: none; }
|
||||
.column:before, .columns:before, .column:after, .columns:after { content: ""; display: table; }
|
||||
.column:after, .columns:after { clear: both; }
|
||||
.offset-by-one, .offset-by-two, .offset-by-three, .offset-by-four, .offset-by-five, .offset-by-six, .offset-by-seven, .offset-by-eight, .offset-by-nine, .offset-by-ten { margin-left: 0 !important; }
|
||||
.push-two, .push-three, .push-four, .push-five, .push-six, .push-seven, .push-eight, .push-nine, .push-ten { left: auto; }
|
||||
.pull-two, .pull-three, .pull-four, .pull-five, .pull-six, .pull-seven, .pull-eight, .pull-nine, .pull-ten { right: auto; }
|
||||
/* Mobile 4-column Grid */
|
||||
.row .mobile-one { width: 25% !important; float: left; padding: 0 15px; }
|
||||
.row .mobile-one:last-child { float: right; }
|
||||
.row.collapse .mobile-one { padding: 0; }
|
||||
.row .mobile-two { width: 50% !important; float: left; padding: 0 15px; }
|
||||
.row .mobile-two:last-child { float: right; }
|
||||
.row.collapse .mobile-two { padding: 0; }
|
||||
.row .mobile-three { width: 75% !important; float: left; padding: 0 15px; }
|
||||
.row .mobile-three:last-child { float: right; }
|
||||
.row.collapse .mobile-three { padding: 0; }
|
||||
.row .mobile-four { width: 100% !important; float: left; padding: 0 15px; }
|
||||
.row .mobile-four:last-child { float: right; }
|
||||
.row.collapse .mobile-four { padding: 0; }
|
||||
.push-one-mobile { left: 25%; }
|
||||
.pull-one-mobile { right: 25%; }
|
||||
.push-two-mobile { left: 50%; }
|
||||
.pull-two-mobile { right: 50%; }
|
||||
.push-three-mobile { left: 75%; }
|
||||
.pull-three-mobile { right: 75%; } }
|
||||
/* Block Grids ---------------------- */
|
||||
/* These are 2-up, 3-up, 4-up and 5-up ULs, suited
|
||||
for repeating blocks of content. Add 'mobile' to
|
||||
them to switch them just like the layout grid
|
||||
(one item per line) on phones
|
||||
|
||||
For IE7/8 compatibility block-grid items need to be
|
||||
the same height. You can optionally uncomment the
|
||||
lines below to support arbitrary height, but know
|
||||
that IE7/8 do not support :nth-child.
|
||||
-------------------------------------------------- */
|
||||
.block-grid { display: block; overflow: hidden; padding: 0; }
|
||||
.block-grid > li { display: block; height: auto; float: left; }
|
||||
.block-grid.one-up { margin: 0; }
|
||||
.block-grid.one-up > li { width: 100%; padding: 0 0 15px; }
|
||||
.block-grid.two-up { margin: 0 -15px; }
|
||||
.block-grid.two-up > li { width: 50%; padding: 0 15px 15px; }
|
||||
.block-grid.two-up > li:nth-child(2n+1) { clear: both; }
|
||||
.block-grid.three-up { margin: 0 -12px; }
|
||||
.block-grid.three-up > li { width: 33.33%; padding: 0 12px 12px; }
|
||||
.block-grid.three-up > li:nth-child(3n+1) { clear: both; }
|
||||
.block-grid.four-up { margin: 0 -10px; }
|
||||
.block-grid.four-up > li { width: 25%; padding: 0 10px 10px; }
|
||||
.block-grid.four-up > li:nth-child(4n+1) { clear: both; }
|
||||
.block-grid.five-up { margin: 0 -8px; }
|
||||
.block-grid.five-up > li { width: 20%; padding: 0 8px 8px; }
|
||||
.block-grid.five-up > li:nth-child(5n+1) { clear: both; }
|
||||
|
||||
/* Mobile Block Grids */
|
||||
@media only screen and (max-width: 767px) { .block-grid.mobile > li { float: none; width: 100%; margin-left: 0; }
|
||||
.block-grid > li { clear: none !important; }
|
||||
.block-grid.mobile-two-up > li { width: 50%; }
|
||||
.block-grid.mobile-two-up > li:nth-child(2n+1) { clear: both; }
|
||||
.block-grid.mobile-three-up > li { width: 33.33%; }
|
||||
.block-grid.mobile-three-up > li:nth-child(3n+1) { clear: both !important; }
|
||||
.block-grid.mobile-four-up > li { width: 25%; }
|
||||
.block-grid.mobile-four-up > li:nth-child(4n+1) { clear: both; }
|
||||
.block-grid.mobile-five-up > li:nth-child(5n+1) { clear: both; } }
|
||||
/* Requires globals.css */
|
||||
/* Normal Buttons ---------------------- */
|
||||
.button { width: auto; background: #fd7800; border: 1px solid #ce6200; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; color: white; cursor: pointer; display: inline-block; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 1; margin: 0; outline: none; padding: 10px 20px 11px; position: relative; text-align: center; text-decoration: none; -webkit-transition: background-color 0.15s ease-in-out; -moz-transition: background-color 0.15s ease-in-out; -o-transition: background-color 0.15s ease-in-out; transition: background-color 0.15s ease-in-out; /* Hovers */ /* Sizes */ /* Colors */ /* Radii */ /* Layout */ /* Disabled ---------- */ }
|
||||
.button:hover { color: white; background-color: #ce6200; }
|
||||
.button:active { -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2) inset; -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2) inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2) inset; }
|
||||
.button:focus { -webkit-box-shadow: 0 0 4px #fd7800, 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 0 4px #fd7800, 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 0 4px #fd7800, 0 1px 0 rgba(255, 255, 255, 0.5) inset; color: white; }
|
||||
.button.large { font-size: 17px; padding: 15px 30px 16px; }
|
||||
.button.medium { font-size: 14px; }
|
||||
.button.small { font-size: 11px; padding: 7px 14px 8px; }
|
||||
.button.tiny { font-size: 10px; padding: 5px 10px 6px; }
|
||||
.button.expand { width: 100%; text-align: center; }
|
||||
.button.primary { background-color: #fd7800; border: 1px solid #1e728c; }
|
||||
.button.primary:hover { background-color: #2284a1; }
|
||||
.button.primary:focus { -webkit-box-shadow: 0 0 4px #fd7800, 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 0 4px #fd7800, 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 0 4px #fd7800, 0 1px 0 rgba(255, 255, 255, 0.5) inset; }
|
||||
.button.success { background-color: #5da423; border: 1px solid #396516; }
|
||||
.button.success:hover { background-color: #457a1a; }
|
||||
.button.success:focus { -webkit-box-shadow: 0 0 5px #5da423, 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 0 5px #5da423, 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 0 5px #5da423, 0 1px 0 rgba(255, 255, 255, 0.5) inset; }
|
||||
.button.alert { background-color: #c60f13; border: 1px solid #7f0a0c; }
|
||||
.button.alert:hover { background-color: #970b0e; }
|
||||
.button.alert:focus { -webkit-box-shadow: 0 0 4px #c60f13, 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 0 4px #c60f13, 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 0 4px #c60f13, 0 1px 0 rgba(255, 255, 255, 0.5) inset; }
|
||||
.button.secondary { background-color: #e9e9e9; color: #1d1d1d; border: 1px solid #c3c3c3; }
|
||||
.button.secondary:hover { background-color: #d0d0d0; }
|
||||
.button.secondary:focus { -webkit-box-shadow: 0 0 5px #e9e9e9, 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 0 5px #e9e9e9, 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 0 5px #e9e9e9, 0 1px 0 rgba(255, 255, 255, 0.5) inset; }
|
||||
.button.radius { -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }
|
||||
.button.round { -webkit-border-radius: 1000px; -moz-border-radius: 1000px; -ms-border-radius: 1000px; -o-border-radius: 1000px; border-radius: 1000px; }
|
||||
.button.full-width { width: 100%; text-align: center; padding-left: 0px !important; padding-right: 0px !important; }
|
||||
.button.left-align { text-align: left; text-indent: 12px; }
|
||||
.button.disabled, .button[disabled] { opacity: 0.6; cursor: default; background: #fd7800; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; }
|
||||
.button.disabled :hover, .button[disabled] :hover { background: #fd7800; }
|
||||
.button.disabled.success, .button[disabled].success { background-color: #5da423; }
|
||||
.button.disabled.success:hover, .button[disabled].success:hover { background-color: #5da423; }
|
||||
.button.disabled.alert, .button[disabled].alert { background-color: #c60f13; }
|
||||
.button.disabled.alert:hover, .button[disabled].alert:hover { background-color: #c60f13; }
|
||||
.button.disabled.secondary, .button[disabled].secondary { background-color: #e9e9e9; }
|
||||
.button.disabled.secondary:hover, .button[disabled].secondary:hover { background-color: #e9e9e9; }
|
||||
|
||||
/* Don't use native buttons on iOS */
|
||||
input[type=submit].button, button.button { -webkit-appearance: none; }
|
||||
|
||||
@media only screen and (max-width: 767px) { .button { display: block; }
|
||||
button.button, input[type="submit"].button { width: 100%; padding-left: 0; padding-right: 0; } }
|
||||
/* Correct FF button padding */
|
||||
@-moz-document url-prefix() { button::-moz-focus-inner, input[type="reset"]::-moz-focus-inner, input[type="button"]::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="file"] > input[type="button"]::-moz-focus-inner { border: none; padding: 0; }
|
||||
input[type="submit"].tiny.button { padding: 3px 10px 4px; }
|
||||
input[type="submit"].small.button { padding: 5px 14px 6px; }
|
||||
input[type="submit"].button, input[type=submit].medium.button { padding: 8px 20px 9px; }
|
||||
input[type="submit"].large.button { padding: 13px 30px 14px; } }
|
||||
|
||||
/* Buttons with Dropdowns ---------------------- */
|
||||
.button.dropdown { position: relative; padding-right: 44px; /* Sizes */ /* Triangles */ /* Flyout List */ /* Split Dropdown Buttons */ }
|
||||
.button.dropdown.large { padding-right: 60px; }
|
||||
.button.dropdown.small { padding-right: 28px; }
|
||||
.button.dropdown.tiny { padding-right: 20px; }
|
||||
.button.dropdown:after { content: ""; display: block; width: 0; height: 0; border: solid 6px; border-color: white transparent transparent transparent; position: absolute; top: 50%; right: 20px; margin-top: -2px; }
|
||||
.button.dropdown.large:after { content: ""; display: block; width: 0; height: 0; border: solid 7px; border-color: white transparent transparent transparent; margin-top: -3px; right: 30px; }
|
||||
.button.dropdown.small:after { content: ""; display: block; width: 0; height: 0; border: solid 5px; border-color: white transparent transparent transparent; margin-top: -2px; right: 14px; }
|
||||
.button.dropdown.tiny:after { content: ""; display: block; width: 0; height: 0; border: solid 4px; border-color: white transparent transparent transparent; margin-top: -1px; right: 10px; }
|
||||
.button.dropdown > ul { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; display: none; position: absolute; left: -1px; background: #fff; background: rgba(255, 255, 255, 0.95); list-style: none; margin: 0; padding: 0; border: 1px solid #cccccc; border-top: none; min-width: 100%; z-index: 40; }
|
||||
.button.dropdown > ul li { width: 100%; cursor: pointer; padding: 0; min-height: 18px; line-height: 18px; margin: 0; white-space: nowrap; list-style: none; }
|
||||
.button.dropdown > ul li a { display: block; color: #555; font-size: 13px; font-weight: normal; padding: 6px 14px; text-align: left; }
|
||||
.button.dropdown > ul li:hover { background-color: #e3f4f9; color: #222; }
|
||||
.button.dropdown > ul li.divider { min-height: 0; padding: 0; height: 1px; margin: 4px 0; background: #ededed; }
|
||||
.button.dropdown.up > ul { border-top: 1px solid #cccccc; border-bottom: none; }
|
||||
.button.dropdown ul.no-hover.show-dropdown { display: block !important; }
|
||||
.button.dropdown:hover > ul.no-hover { display: none; }
|
||||
.button.dropdown.split { padding: 0; position: relative; /* Sizes */ /* Triangle Spans */ /* Colors */ }
|
||||
.button.dropdown.split:after { display: none; }
|
||||
.button.dropdown.split:hover { background-color: #fd7800; }
|
||||
.button.dropdown.split.alert:hover { background-color: #c60f13; }
|
||||
.button.dropdown.split.success:hover { background-color: #5da423; }
|
||||
.button.dropdown.split.secondary:hover { background-color: #e9e9e9; }
|
||||
.button.dropdown.split > a { color: white; display: block; padding: 10px 50px 11px 20px; padding-left: 20px; padding-right: 50px; -webkit-transition: background-color 0.15s ease-in-out; -moz-transition: background-color 0.15s ease-in-out; -o-transition: background-color 0.15s ease-in-out; transition: background-color 0.15s ease-in-out; }
|
||||
.button.dropdown.split > a:hover { background-color: #2284a1; }
|
||||
.button.dropdown.split.large > a { padding: 15px 75px 16px 30px; padding-left: 30px; padding-right: 75px; }
|
||||
.button.dropdown.split.small > a { padding: 7px 35px 8px 14px; padding-left: 14px; padding-right: 35px; }
|
||||
.button.dropdown.split.tiny > a { padding: 5px 25px 6px 10px; padding-left: 10px; padding-right: 25px; }
|
||||
.button.dropdown.split > span { background-color: #fd7800; position: absolute; right: 0; top: 0; height: 100%; width: 30px; border-left: 1px solid #1e728c; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.5) inset; -webkit-transition: background-color 0.15s ease-in-out; -moz-transition: background-color 0.15s ease-in-out; -o-transition: background-color 0.15s ease-in-out; transition: background-color 0.15s ease-in-out; }
|
||||
.button.dropdown.split > span:hover { background-color: #2284a1; }
|
||||
.button.dropdown.split > span:after { content: ""; display: block; width: 0; height: 0; border: solid 6px; border-color: white transparent transparent transparent; position: absolute; top: 50%; left: 50%; margin-left: -6px; margin-top: -2px; }
|
||||
.button.dropdown.split.secondary > span:after { content: ""; display: block; width: 0; height: 0; border: solid 6px; border-color: #1d1d1d transparent transparent transparent; }
|
||||
.button.dropdown.split.large span { width: 45px; }
|
||||
.button.dropdown.split.small span { width: 21px; }
|
||||
.button.dropdown.split.tiny span { width: 15px; }
|
||||
.button.dropdown.split.large span:after { content: ""; display: block; width: 0; height: 0; border: solid 7px; border-color: white transparent transparent transparent; margin-top: -3px; margin-left: -7px; }
|
||||
.button.dropdown.split.small span:after { content: ""; display: block; width: 0; height: 0; border: solid 4px; border-color: white transparent transparent transparent; margin-top: -1px; margin-left: -4px; }
|
||||
.button.dropdown.split.tiny span:after { content: ""; display: block; width: 0; height: 0; border: solid 3px; border-color: white transparent transparent transparent; margin-top: -1px; margin-left: -3px; }
|
||||
.button.dropdown.split.alert > span { background-color: #c60f13; border-left-color: #7f0a0c; }
|
||||
.button.dropdown.split.success > span { background-color: #5da423; border-left-color: #396516; }
|
||||
.button.dropdown.split.secondary > span { background-color: #e9e9e9; border-left-color: #c3c3c3; }
|
||||
.button.dropdown.split.secondary > a { color: #1d1d1d; }
|
||||
.button.dropdown.split.alert > a:hover, .button.dropdown.split.alert > span:hover { background-color: #970b0e; }
|
||||
.button.dropdown.split.success > a:hover, .button.dropdown.split.success > span:hover { background-color: #457a1a; }
|
||||
.button.dropdown.split.secondary > a:hover, .button.dropdown.split.secondary > span:hover { background-color: #d0d0d0; }
|
||||
|
||||
/* Button Groups ---------------------- */
|
||||
ul.button-group { list-style: none; padding: 0; margin: 0 0 12px; *zoom: 1; }
|
||||
ul.button-group:before, ul.button-group:after { content: ""; display: table; }
|
||||
ul.button-group:after { clear: both; }
|
||||
ul.button-group li { padding: 0; margin: 0 0 0 -1px; float: left; }
|
||||
ul.button-group li:first-child { margin-left: 0; }
|
||||
ul.button-group.radius li a.button, ul.button-group.radius li a.button.radius, ul.button-group.radius li a.button-rounded { -webkit-border-radius: 0px; -moz-border-radius: 0px; -ms-border-radius: 0px; -o-border-radius: 0px; border-radius: 0px; }
|
||||
ul.button-group.radius li:first-child a.button, ul.button-group.radius li:first-child a.button.radius { -moz-border-radius-left3px: 5px; -webkit-border-left-3px-radius: 5px; border-left-3px-radius: 5px; }
|
||||
ul.button-group.radius li:first-child a.button.rounded { -moz-border-radius-left1000px: 5px; -webkit-border-left-1000px-radius: 5px; border-left-1000px-radius: 5px; }
|
||||
ul.button-group.radius li:last-child a.button, ul.button-group.radius li:last-child a.button.radius { -moz-border-radius-right3px: 5px; -webkit-border-right-3px-radius: 5px; border-right-3px-radius: 5px; }
|
||||
ul.button-group.radius li:last-child a.button.rounded { -moz-border-radius-right1000px: 5px; -webkit-border-right-1000px-radius: 5px; border-right-1000px-radius: 5px; }
|
||||
ul.button-group.even a.button { width: 100%; }
|
||||
ul.button-group.even.two-up li { width: 50%; }
|
||||
ul.button-group.even.three-up li { width: 33.3%; }
|
||||
ul.button-group.even.three-up li:first-child { width: 33.4%; }
|
||||
ul.button-group.even.four-up li { width: 25%; }
|
||||
ul.button-group.even.five-up li { width: 20%; }
|
||||
|
||||
@media only screen and (max-width: 767px) { .button-group button.button, .button-group input[type="submit"].button { width: auto; padding: 10px 20px 11px; }
|
||||
.button-group button.button.large, .button-group input[type="submit"].button.large { padding: 15px 30px 16px; }
|
||||
.button-group button.button.medium, .button-group input[type="submit"].button.medium { padding: 10px 20px 11px; }
|
||||
.button-group button.button.small, .button-group input[type="submit"].button.small { padding: 7px 14px 8px; }
|
||||
.button-group button.button.tiny, .button-group input[type="submit"].button.tiny { padding: 5px 10px 6px; }
|
||||
.button-group.even button.button, .button-group.even input[type="submit"].button { width: 100%; padding-left: 0; padding-right: 0; } }
|
||||
div.button-bar { overflow: hidden; }
|
||||
div.button-bar ul.button-group { float: left; margin-right: 8px; }
|
||||
div.button-bar ul.button-group:last-child { margin-left: 0; }
|
||||
|
||||
/* CSS for jQuery Reveal Plugin Maintained for Foundation. foundation.zurb.com Free to use under the MIT license. http://www.opensource.org/licenses/mit-license.php */
|
||||
/* Reveal Modals ---------------------- */
|
||||
.reveal-modal-bg { position: fixed; height: 100%; width: 100%; background: #000; background: rgba(0, 0, 0, 0.45); z-index: 40; display: none; top: 0; left: 0; }
|
||||
|
||||
.reveal-modal { background: white; visibility: hidden; display: none; top: 100px; left: 50%; margin-left: -260px; width: 520px; position: absolute; z-index: 41; padding: 30px; -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); }
|
||||
.reveal-modal *:first-child { margin-top: 0; }
|
||||
.reveal-modal *:last-child { margin-bottom: 0; }
|
||||
.reveal-modal .close-reveal-modal { font-size: 22px; font-size: 2.2rem; line-height: .5; position: absolute; top: 8px; right: 11px; color: #aaa; text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.6); font-weight: bold; cursor: pointer; }
|
||||
.reveal-modal.small { width: 30%; margin-left: -15%; }
|
||||
.reveal-modal.medium { width: 40%; margin-left: -20%; }
|
||||
.reveal-modal.large { width: 60%; margin-left: -30%; }
|
||||
.reveal-modal.xlarge { width: 70%; margin-left: -35%; }
|
||||
.reveal-modal.expand { width: 90%; margin-left: -45%; }
|
||||
.reveal-modal .row { min-width: 0; margin-bottom: 10px; }
|
||||
|
||||
/* Mobile */
|
||||
@media only screen and (max-width: 767px) { .reveal-modal-bg { position: absolute; }
|
||||
.reveal-modal, .reveal-modal.small, .reveal-modal.medium, .reveal-modal.large, .reveal-modal.xlarge { width: 80%; top: 15px; left: 50%; margin-left: -40%; padding: 20px; height: auto; } }
|
||||
/* NOTES Close button entity is ×
|
||||
Example markup <div id="myModal" class="reveal-modal"> <h2>Awesome. I have it.</h2> <p class="lead">Your couch. I it's mine.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ultrices aliquet placerat. Duis pulvinar orci et nisi euismod vitae tempus lorem consectetur. Duis at magna quis turpis mattis venenatis eget id diam. </p> <a class="close-reveal-modal">×</a> </div> */
|
||||
/* Requires -globals.css -app.js */
|
||||
/* Tabs ---------------------- */
|
||||
dl.tabs { border-bottom: solid 1px #e6e6e6; display: block; height: 40px; padding: 0; margin-bottom: 20px; }
|
||||
dl.tabs.contained { margin-bottom: 0; }
|
||||
dl.tabs dt { color: #b3b3b3; cursor: default; display: block; float: left; font-size: 12px; height: 40px; line-height: 40px; padding: 0; padding-right: 9px; padding-left: 20px; width: auto; text-transform: uppercase; }
|
||||
dl.tabs dt:first-child { padding: 0; padding-right: 9px; }
|
||||
dl.tabs dd { display: block; float: left; padding: 0; margin: 0; }
|
||||
dl.tabs dd a { color: #6f6f6f; display: block; font-size: 14px; height: 40px; line-height: 40px; padding: 0px 23.8px; }
|
||||
dl.tabs dd a:focus { font-weight: bold; color: #fd7800; }
|
||||
dl.tabs dd.active { border-top: 3px solid #fd7800; margin-top: -3px; }
|
||||
dl.tabs dd.active a { cursor: default; color: #3c3c3c; background: #fff; border-left: 1px solid #e6e6e6; border-right: 1px solid #e6e6e6; font-weight: bold; }
|
||||
dl.tabs dd:first-child { margin-left: 0; }
|
||||
dl.tabs.vertical { height: auto; border-bottom: 1px solid #e6e6e6; }
|
||||
dl.tabs.vertical dt, dl.tabs.vertical dd { float: none; height: auto; }
|
||||
dl.tabs.vertical dd { border-left: 3px solid #cccccc; }
|
||||
dl.tabs.vertical dd a { background: #f2f2f2; border: none; border: 1px solid #e6e6e6; border-width: 1px 1px 0 0; color: #555; display: block; font-size: 14px; height: auto; line-height: 1; padding: 15px 20px; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; }
|
||||
dl.tabs.vertical dd.active { margin-top: 0; border-top: 1px solid #4d4d4d; border-left: 4px solid #1a1a1a; }
|
||||
dl.tabs.vertical dd.active a { background: #4d4d4d; border: none; color: #fff; height: auto; margin: 0; position: static; top: 0; -webkit-box-shadow: 0 0 0; -moz-box-shadow: 0 0 0; box-shadow: 0 0 0; }
|
||||
dl.tabs.vertical dd:first-child a.active { margin: 0; }
|
||||
dl.tabs.pill { border-bottom: none; margin-bottom: 10px; }
|
||||
dl.tabs.pill dd { margin-right: 10px; }
|
||||
dl.tabs.pill dd:last-child { margin-right: 0; }
|
||||
dl.tabs.pill dd a { -webkit-border-radius: 1000px; -moz-border-radius: 1000px; -ms-border-radius: 1000px; -o-border-radius: 1000px; border-radius: 1000px; background: #e6e6e6; height: 26px; line-height: 26px; color: #666; }
|
||||
dl.tabs.pill dd.active { border: none; margin-top: 0; }
|
||||
dl.tabs.pill dd.active a { background-color: #fd7800; border: none; color: #fff; }
|
||||
dl.tabs.pill.contained { border-bottom: solid 1px #eee; margin-bottom: 0; }
|
||||
dl.tabs.pill.two-up dd, dl.tabs.pill.three-up dd, dl.tabs.pill.four-up dd, dl.tabs.pill.five-up dd { margin-right: 0; }
|
||||
dl.tabs.two-up dt a, dl.tabs.two-up dd a, dl.tabs.three-up dt a, dl.tabs.three-up dd a, dl.tabs.four-up dt a, dl.tabs.four-up dd a, dl.tabs.five-up dt a, dl.tabs.five-up dd a { padding: 0 17px; text-align: center; overflow: hidden; }
|
||||
dl.tabs.two-up dt, dl.tabs.two-up dd { width: 50%; }
|
||||
dl.tabs.three-up dt, dl.tabs.three-up dd { width: 33.33%; }
|
||||
dl.tabs.four-up dt, dl.tabs.four-up dd { width: 25%; }
|
||||
dl.tabs.five-up dt, dl.tabs.five-up dd { width: 20%; }
|
||||
|
||||
ul.tabs-content { display: block; margin: 0 0 20px; padding: 0; }
|
||||
ul.tabs-content > li { display: none; }
|
||||
ul.tabs-content > li.active { display: block; }
|
||||
ul.tabs-content.contained { padding: 0; }
|
||||
ul.tabs-content.contained > li { border: solid 0 #e6e6e6; border-width: 0 1px 1px 1px; padding: 20px; }
|
||||
ul.tabs-content.contained.vertical > li { border-width: 1px 1px 1px 1px; }
|
||||
|
||||
.no-js ul.tabs-content > li { display: block; }
|
||||
|
||||
@media only screen and (max-width: 767px) { dl.tabs.mobile { width: auto; margin: 20px -20px 40px; height: auto; }
|
||||
dl.tabs.mobile dt, dl.tabs.mobile dd { float: none; height: auto; }
|
||||
dl.tabs.mobile dd a { display: block; width: auto; height: auto; padding: 18px 20px; line-height: 1; border: solid 0 #ccc; border-width: 1px 0 0; margin: 0; color: #555; background: #eee; font-size: 15px; font-size: 1.5rem; }
|
||||
dl.tabs.mobile dd a.active { height: auto; margin: 0; border-width: 1px 0 0; }
|
||||
.tabs.mobile { border-bottom: solid 1px #ccc; height: auto; }
|
||||
.tabs.mobile dd a { padding: 18px 20px; border: none; border-left: none; border-right: none; border-top: 1px solid #ccc; background: #fff; }
|
||||
.tabs.mobile dd a.active { border: none; background: #fd7800; color: #fff; margin: 0; position: static; top: 0; height: auto; }
|
||||
.tabs.mobile dd:first-child a.active { margin: 0; }
|
||||
dl.contained.mobile { margin-bottom: 0; }
|
||||
dl.contained.tabs.mobile dd a { padding: 18px 20px; }
|
||||
dl.tabs.mobile + ul.contained { margin-left: -20px; margin-right: -20px; border-width: 0 0 1px 0; } }
|
||||
/* Requires: globals.css */
|
||||
/* Table of Contents
|
||||
|
||||
:: Visibility
|
||||
:: Alerts
|
||||
:: Labels
|
||||
:: Tooltips
|
||||
:: Panels
|
||||
:: Accordion
|
||||
:: Side Nav
|
||||
:: Sub Nav
|
||||
:: Pagination
|
||||
:: Breadcrumbs
|
||||
:: Lists
|
||||
:: Link Lists
|
||||
:: Keystroke Chars
|
||||
:: Image Thumbnails
|
||||
:: Video
|
||||
:: Tables
|
||||
:: Microformats
|
||||
:: Progress Bars
|
||||
|
||||
*/
|
||||
/* Visibility Classes ---------------------- */
|
||||
/* Standard (large) display targeting */
|
||||
.show-for-small, .show-for-medium, .show-for-medium-down, .hide-for-large, .hide-for-large-up, .show-for-xlarge { display: none !important; }
|
||||
|
||||
.hide-for-xlarge, .show-for-large, .show-for-large-up, .hide-for-small, .hide-for-medium, .hide-for-medium-down { display: block !important; }
|
||||
|
||||
/* Very large display targeting */
|
||||
@media only screen and (min-width: 1441px) { .hide-for-small, .hide-for-medium, .hide-for-medium-down, .hide-for-large, .show-for-large-up, .show-for-xlarge { display: block !important; }
|
||||
.show-for-small, .show-for-medium, .show-for-medium-down, .show-for-large, .hide-for-large-up, .hide-for-xlarge { display: none !important; } }
|
||||
/* Medium display targeting */
|
||||
@media only screen and (max-width: 1279px) and (min-width: 768px) { .hide-for-small, .show-for-medium, .show-for-medium-down, .hide-for-large, .hide-for-large-up, .hide-for-xlarge { display: block !important; }
|
||||
.show-for-small, .hide-for-medium, .hide-for-medium-down, .show-for-large, .show-for-large-up, .show-for-xlarge { display: none !important; } }
|
||||
/* Small display targeting */
|
||||
@media only screen and (max-width: 767px) { .show-for-small, .hide-for-medium, .show-for-medium-down, .hide-for-large, .hide-for-large-up, .hide-for-xlarge { display: block !important; }
|
||||
.hide-for-small, .show-for-medium, .hide-for-medium-down, .show-for-large, .show-for-large-up, .show-for-xlarge { display: none !important; } }
|
||||
/* Orientation targeting */
|
||||
.show-for-landscape, .hide-for-portrait { display: block !important; }
|
||||
|
||||
.hide-for-landscape, .show-for-portrait { display: none !important; }
|
||||
|
||||
@media screen and (orientation: landscape) { .show-for-landscape, .hide-for-portrait { display: block !important; }
|
||||
.hide-for-landscape, .show-for-portrait { display: none !important; } }
|
||||
@media screen and (orientation: portrait) { .show-for-portrait, .hide-for-landscape { display: block !important; }
|
||||
.hide-for-portrait, .show-for-landscape { display: none !important; } }
|
||||
/* Touch-enabled device targeting */
|
||||
.show-for-touch { display: none !important; }
|
||||
|
||||
.hide-for-touch { display: block !important; }
|
||||
|
||||
.touch .show-for-touch { display: block !important; }
|
||||
|
||||
.touch .hide-for-touch { display: none !important; }
|
||||
|
||||
/* Specific overrides for elements that require something other than display: block */
|
||||
table.show-for-xlarge, table.show-for-large, table.hide-for-small, table.hide-for-medium { display: table !important; }
|
||||
|
||||
@media only screen and (max-width: 1279px) and (min-width: 768px) { .touch table.hide-for-xlarge, .touch table.hide-for-large, .touch table.hide-for-small, .touch table.show-for-medium { display: table !important; } }
|
||||
@media only screen and (max-width: 767px) { table.hide-for-xlarge, table.hide-for-large, table.hide-for-medium, table.show-for-small { display: table !important; } }
|
||||
/* Alerts ---------------------- */
|
||||
div.alert-box { display: block; padding: 6px 7px 7px; font-weight: bold; font-size: 14px; color: white; background-color: #fd7800; border: 1px solid rgba(0, 0, 0, 0.1); margin-bottom: 12px; -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; text-shadow: 0 -1px rgba(0, 0, 0, 0.3); position: relative; }
|
||||
div.alert-box.success { background-color: #5da423; color: #fff; text-shadow: 0 -1px rgba(0, 0, 0, 0.3); }
|
||||
div.alert-box.alert { background-color: #c60f13; color: #fff; text-shadow: 0 -1px rgba(0, 0, 0, 0.3); }
|
||||
div.alert-box.secondary { background-color: #e9e9e9; color: #505050; text-shadow: 0 1px rgba(255, 255, 255, 0.3); }
|
||||
div.alert-box a.close { color: #333; position: absolute; right: 4px; top: -1px; font-size: 17px; opacity: 0.2; padding: 4px; }
|
||||
div.alert-box a.close:hover, div.alert-box a.close:focus { opacity: 0.4; }
|
||||
|
||||
/* Labels ---------------------- */
|
||||
|
||||
|
||||
/* Tooltips ---------------------- */
|
||||
.has-tip { border-bottom: dotted 1px #cccccc; cursor: help; font-weight: bold; color: #333333; }
|
||||
.has-tip:hover { border-bottom: dotted 1px #196177; color: #fd7800; }
|
||||
.has-tip.tip-left, .has-tip.tip-right { float: none !important; }
|
||||
|
||||
.tooltip { display: none; background: black; background: rgba(0, 0, 0, 0.85); position: absolute; color: white; font-weight: bold; font-size: 12px; font-size: 1.2rem; padding: 5px; z-index: 999; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; line-height: normal; }
|
||||
.tooltip > .nub { display: block; width: 0; height: 0; border: solid 5px; border-color: transparent transparent black transparent; border-color: transparent transparent rgba(0, 0, 0, 0.85) transparent; position: absolute; top: -10px; left: 10px; }
|
||||
.tooltip.tip-override > .nub { border-color: transparent transparent black transparent !important; border-color: transparent transparent rgba(0, 0, 0, 0.85) transparent !important; top: -10px !important; }
|
||||
.tooltip.tip-top > .nub { border-color: black transparent transparent transparent; border-color: rgba(0, 0, 0, 0.85) transparent transparent transparent; top: auto; bottom: -10px; }
|
||||
.tooltip.tip-left, .tooltip.tip-right { float: none !important; }
|
||||
.tooltip.tip-left > .nub { border-color: transparent transparent transparent black; border-color: transparent transparent transparent rgba(0, 0, 0, 0.85); right: -10px; left: auto; }
|
||||
.tooltip.tip-right > .nub { border-color: transparent black transparent transparent; border-color: transparent rgba(0, 0, 0, 0.85) transparent transparent; right: auto; left: -10px; }
|
||||
.tooltip.noradius { -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; -o-border-radius: 0; border-radius: 0; }
|
||||
.tooltip.opened { color: #fd7800 !important; border-bottom: dotted 1px #196177 !important; }
|
||||
|
||||
.tap-to-close { display: block; font-size: 10px; font-size: 1rem; color: #888888; font-weight: normal; }
|
||||
|
||||
@media only screen and (max-width: 767px) { .tooltip { font-size: 14px; font-size: 1.4rem; line-height: 1.4; padding: 7px 10px 9px 10px; }
|
||||
.tooltip > .nub, .tooltip.top > .nub, .tooltip.left > .nub, .tooltip.right > .nub { border-color: transparent transparent black transparent; border-color: transparent transparent rgba(0, 0, 0, 0.85) transparent; top: -12px; left: 10px; } }
|
||||
/* Panels ---------------------- */
|
||||
.panel { background: #f2f2f2; border: solid 1px #e6e6e6; margin: 0 0 22px 0; padding: 20px; }
|
||||
.panel > :first-child { margin-top: 0; }
|
||||
.panel > :last-child { margin-bottom: 0; }
|
||||
.panel.callout { background: #fd7800; color: #fff; border-color: #2284a1; -webkit-box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.5); -moz-box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.5); box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.5); }
|
||||
.panel.callout a { color: #fff; }
|
||||
.panel.callout .button { background: white; border: none; color: #fd7800; text-shadow: none; }
|
||||
.panel.callout .button:hover { background: rgba(255, 255, 255, 0.8); }
|
||||
.panel.radius { -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }
|
||||
|
||||
/* Accordion ---------------------- */
|
||||
ul.accordion { margin: 0 0 22px 0; border-bottom: 1px solid #e9e9e9; }
|
||||
ul.accordion > li { list-style: none; margin: 0; padding: 0; border-top: 1px solid #e9e9e9; }
|
||||
ul.accordion > li .title { cursor: pointer; background: #f6f6f6; padding: 15px; margin: 0; position: relative; border-left: 1px solid #e9e9e9; border-right: 1px solid #e9e9e9; -webkit-transition: 0.15s background linear; -moz-transition: 0.15s background linear; -o-transition: 0.15s background linear; transition: 0.15s background linear; }
|
||||
ul.accordion > li .title h1, ul.accordion > li .title h2, ul.accordion > li .title h3, ul.accordion > li .title h4, ul.accordion > li .title h5 { margin: 0; }
|
||||
ul.accordion > li .title:after { content: ""; display: block; width: 0; height: 0; border: solid 6px; border-color: transparent #9d9d9d transparent transparent; position: absolute; right: 15px; top: 21px; }
|
||||
ul.accordion > li .content { display: none; padding: 15px; }
|
||||
ul.accordion > li.active { border-top: 3px solid #fd7800; }
|
||||
ul.accordion > li.active .title { background: white; padding-top: 13px; }
|
||||
ul.accordion > li.active .title:after { content: ""; display: block; width: 0; height: 0; border: solid 6px; border-color: #9d9d9d transparent transparent transparent; }
|
||||
ul.accordion > li.active .content { background: white; display: block; border-left: 1px solid #e9e9e9; border-right: 1px solid #e9e9e9; }
|
||||
|
||||
/* Side Nav ---------------------- */
|
||||
ul.side-nav { display: block; list-style: none; margin: 0; padding: 17px 0; }
|
||||
ul.side-nav li { display: block; list-style: none; margin: 0 0 7px 0; }
|
||||
ul.side-nav li a { display: block; }
|
||||
ul.side-nav li.active a { color: #4d4d4d; font-weight: bold; }
|
||||
ul.side-nav li.divider { border-top: 1px solid #e6e6e6; height: 0; padding: 0; }
|
||||
|
||||
/* Sub Navs http://www.zurb.com/article/292/how-to-create-simple-and-effective-sub-na ---------------------- */
|
||||
dl.sub-nav { display: block; width: auto; overflow: hidden; margin: -4px 0 18px; margin-right: 0; margin-left: -9px; padding-top: 4px; }
|
||||
dl.sub-nav dt, dl.sub-nav dd { float: left; display: inline; margin-left: 9px; margin-bottom: 10px; }
|
||||
dl.sub-nav dt { color: #999; font-weight: normal; }
|
||||
dl.sub-nav dd a { text-decoration: none; -webkit-border-radius: 1000px; -moz-border-radius: 1000px; -ms-border-radius: 1000px; -o-border-radius: 1000px; border-radius: 1000px; }
|
||||
dl.sub-nav dd.active a { font-weight: bold; background: #fd7800; color: #fff; padding: 3px 9px; cursor: default; }
|
||||
|
||||
/* Pagination ---------------------- */
|
||||
ul.pagination { display: block; height: 24px; margin-left: -5px; }
|
||||
ul.pagination li { float: left; display: block; height: 24px; color: #999; font-size: 14px; margin-left: 5px; }
|
||||
ul.pagination li a { display: block; padding: 1px 7px 1px; color: #555; }
|
||||
ul.pagination li:hover a, ul.pagination li a:focus { background: #e6e6e6; }
|
||||
ul.pagination li.unavailable a { cursor: default; color: #999; }
|
||||
ul.pagination li.unavailable:hover a, ul.pagination li.unavailable a:focus { background: transparent; }
|
||||
ul.pagination li.current a { background: #fd7800; color: white; font-weight: bold; cursor: default; }
|
||||
ul.pagination li.current a:hover { background: #fd7800; }
|
||||
|
||||
/* Breadcrums ---------------------- */
|
||||
ul.breadcrumbs { display: block; background: #f6f6f6; padding: 6px 10px 7px; border: 1px solid #e9e9e9; -webkit-border-radius: 2px; -moz-border-radius: 2px; -ms-border-radius: 2px; -o-border-radius: 2px; border-radius: 2px; overflow: hidden; }
|
||||
ul.breadcrumbs li { margin: 0; padding: 0 12px 0 0; float: left; list-style: none; }
|
||||
ul.breadcrumbs li a, ul.breadcrumbs li span { text-transform: uppercase; font-size: 11px; font-size: 1.1rem; padding-left: 12px; }
|
||||
ul.breadcrumbs li:first-child a, ul.breadcrumbs li:first-child span { padding-left: 0; }
|
||||
ul.breadcrumbs li:before { content: "/"; color: #aaa; }
|
||||
ul.breadcrumbs li:first-child:before { content: " "; }
|
||||
ul.breadcrumbs li.current a { cursor: default; color: #333; }
|
||||
ul.breadcrumbs li:hover a, ul.breadcrumbs li a:focus { text-decoration: underline; }
|
||||
ul.breadcrumbs li.current:hover a, ul.breadcrumbs li.current a:focus { text-decoration: none; }
|
||||
ul.breadcrumbs li.unavailable a { color: #999; }
|
||||
ul.breadcrumbs li.unavailable:hover a, ul.breadcrumbs li.unavailable a:focus { text-decoration: none; color: #999; cursor: default; }
|
||||
|
||||
/* Link List */
|
||||
ul.link-list { margin: 0 0 17px -22px; padding: 0; list-style: none; overflow: hidden; }
|
||||
ul.link-list li { list-style: none; float: left; margin-left: 22px; display: block; }
|
||||
ul.link-list li a { display: block; }
|
||||
|
||||
/* Keytroke Characters ---------------------- */
|
||||
.keystroke, kbd { font-family: "Consolas", "Menlo", "Courier", monospace; font-size: 13px; padding: 2px 4px 0px; margin: 0; background: #ededed; border: solid 1px #dbdbdb; -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }
|
||||
|
||||
/* Image Thumbnails ---------------------- */
|
||||
.th { display: block; }
|
||||
.th img { display: block; border: solid 4px #fff; -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; -webkit-transition-property: border, box-shadow; -moz-transition-property: border, box-shadow; -o-transition-property: border, box-shadow; transition-property: border, box-shadow; -webkit-transition-duration: 300ms; -moz-transition-duration: 300ms; -o-transition-duration: 300ms; transition-duration: 300ms; }
|
||||
.th:hover img { -webkit-box-shadow: 0 0 6px 1px rgba(43, 166, 203, 0.5); -moz-box-shadow: 0 0 6px 1px rgba(43, 166, 203, 0.5); box-shadow: 0 0 6px 1px rgba(43, 166, 203, 0.5); }
|
||||
|
||||
/* Video - Mad props to http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ ---------------------- */
|
||||
.flex-video { position: relative; padding-top: 25px; padding-bottom: 67.5%; height: 0; margin-bottom: 16px; overflow: hidden; }
|
||||
.flex-video.widescreen { padding-bottom: 57.25%; }
|
||||
.flex-video.vimeo { padding-top: 0; }
|
||||
.flex-video iframe, .flex-video object, .flex-video embed, .flex-video video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||
@@ -0,0 +1,776 @@
|
||||
@import url("base.css");
|
||||
|
||||
@import url("foundation.css");
|
||||
|
||||
table {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 10px;
|
||||
background-color: #fafafa;
|
||||
color: #222;
|
||||
line-height: 1.0em;
|
||||
border: 2px solid #C6C9CB;
|
||||
font-size: 0.9em;
|
||||
/* margin: 1.5em 0 1.5em 0; */
|
||||
margin: 0;
|
||||
border-right-style: none;
|
||||
border-left-style: none;
|
||||
}
|
||||
|
||||
/* General */
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
a:link {
|
||||
text-decoration: none;
|
||||
}
|
||||
a:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
a:active,
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
color: #000;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
h1 { font-weight: normal; font-size: 24px; line-height: 24px; }
|
||||
h2 { font-weight: normal; font-size: 18px; line-height: 18px; }
|
||||
h3 { font-weight: bold; font-size: 18px; line-height: 18px; }
|
||||
h4 { font-weight: normal; font-size: 18px; line-height: 178px; }
|
||||
|
||||
hr {
|
||||
background-color: #c6c6c6;
|
||||
border:0;
|
||||
height: 1px;
|
||||
margin-bottom: 18px;
|
||||
clear:both;
|
||||
}
|
||||
|
||||
div.hr {
|
||||
height: 1px;
|
||||
background: #c6c6c6;
|
||||
}
|
||||
|
||||
div.hr2 {
|
||||
height: 1px;
|
||||
background: #c6c6c6;
|
||||
}
|
||||
|
||||
div.hr hr, div.hr2 hr {
|
||||
display: none;
|
||||
}
|
||||
|
||||
p {
|
||||
padding: 0 0 0.5em;
|
||||
line-height:1.6em;
|
||||
}
|
||||
ul {
|
||||
list-style: square;
|
||||
margin: 0 0 18px 0;
|
||||
}
|
||||
ol {
|
||||
list-style: decimal;
|
||||
margin: 0 0 18px 1.5em;
|
||||
}
|
||||
ol ol {
|
||||
list-style:upper-alpha;
|
||||
}
|
||||
ol ol ol {
|
||||
list-style:lower-roman;
|
||||
}
|
||||
ol ol ol ol {
|
||||
list-style:lower-alpha;
|
||||
}
|
||||
ul ul,
|
||||
ol ol,
|
||||
ul ol,
|
||||
ol ul {
|
||||
margin-bottom:0;
|
||||
}
|
||||
dl {
|
||||
margin:0 0 24px 0;
|
||||
}
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
dd {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
strong {
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
cite,
|
||||
em,
|
||||
i {
|
||||
font-style: italic;
|
||||
border: none;
|
||||
}
|
||||
big {
|
||||
font-size: 131.25%;
|
||||
}
|
||||
ins {
|
||||
background: #FFFFCC;
|
||||
border: none;
|
||||
color: #333;
|
||||
}
|
||||
del {
|
||||
text-decoration: line-through;
|
||||
color: #555;
|
||||
}
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
padding: 0 3em;
|
||||
}
|
||||
blockquote cite,
|
||||
blockquote em,
|
||||
blockquote i {
|
||||
font-style: normal;
|
||||
}
|
||||
pre {
|
||||
background: #f7f7f7;
|
||||
color: #222;
|
||||
padding: 1.5em;
|
||||
}
|
||||
abbr,
|
||||
acronym {
|
||||
border-bottom: 1px solid #666;
|
||||
cursor: help;
|
||||
}
|
||||
ins {
|
||||
text-decoration: none;
|
||||
}
|
||||
sup,
|
||||
sub {
|
||||
height: 0;
|
||||
line-height: 1;
|
||||
vertical-align: baseline;
|
||||
position: relative;
|
||||
font-size: 10px;
|
||||
}
|
||||
sup {
|
||||
bottom: 1ex;
|
||||
}
|
||||
sub {
|
||||
top: .5ex;
|
||||
}
|
||||
|
||||
p,
|
||||
ul,
|
||||
ol,
|
||||
dd,
|
||||
hr {
|
||||
margin-bottom:10px;
|
||||
}
|
||||
ul ul,
|
||||
ol ol,
|
||||
ul ol,
|
||||
ol ul {
|
||||
margin-bottom:0;
|
||||
}
|
||||
pre,
|
||||
kbd,
|
||||
tt,
|
||||
var {
|
||||
}
|
||||
code {
|
||||
font-size: 13px;
|
||||
}
|
||||
strong,
|
||||
b,
|
||||
dt,
|
||||
th {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
|
||||
/* main_container */
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#wrapper {
|
||||
padding: 0px 0px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/* header*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#search-header{
|
||||
margin-top:15px;
|
||||
padding-bottom:13px;
|
||||
}
|
||||
|
||||
#search-header #search{
|
||||
background: #222;
|
||||
|
||||
}
|
||||
|
||||
#search-header #search #s{
|
||||
background: #222;
|
||||
font-size:12px;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
#header_container{
|
||||
padding-bottom: 25px;
|
||||
padding-top: 0px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
#header {
|
||||
|
||||
}
|
||||
|
||||
#header2 {
|
||||
|
||||
}
|
||||
|
||||
#content_container{
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
#left-col {
|
||||
padding: 10px 20px;
|
||||
padding-left: 0px;
|
||||
background: #fff;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*footer*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
#footer {
|
||||
padding: 5px 20px;
|
||||
background: #ddd;
|
||||
}
|
||||
|
||||
#footer-container{
|
||||
padding: 5px 20px;
|
||||
background: #303030;
|
||||
border-top: 8px solid #000;
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
#footer-info {
|
||||
color:#ccc;
|
||||
text-align:left;
|
||||
background: #1b1b1b;
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
|
||||
#footer-info a{
|
||||
text-decoration:none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#footer-info a:hover{
|
||||
color: #ebebeb;
|
||||
}
|
||||
|
||||
#copyright{float: left;}
|
||||
|
||||
.scroll-top {
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
#footer-widget{
|
||||
padding: 8px 0px 8px 0px;
|
||||
color:#6f6f6f;
|
||||
}
|
||||
|
||||
#footer-widget #search {
|
||||
width:120px;
|
||||
height:28px;
|
||||
background: #222;
|
||||
margin-left: 0px;
|
||||
position: relative;
|
||||
border: 1px solid #666;
|
||||
}
|
||||
|
||||
#footer-widget #search #s {
|
||||
width:110px;
|
||||
height:23px;
|
||||
border:0px;
|
||||
margin-left:7px;
|
||||
margin-right:10px;
|
||||
margin-top:3px;
|
||||
color:#fff;
|
||||
display: inline;
|
||||
background: #222;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#footer-widget #calendar_wrap {
|
||||
padding: 8px 0px;
|
||||
}
|
||||
|
||||
#footer-widget #wp-calendar td{
|
||||
padding:2px;
|
||||
}
|
||||
|
||||
|
||||
#footer-widget .textwidget {
|
||||
padding: 5px 0px;
|
||||
line-height: 23px;
|
||||
}
|
||||
|
||||
|
||||
#footer-widget .widget_tag_cloud a{
|
||||
text-decoration: none;
|
||||
margin: 5px;
|
||||
line-height: 24px;
|
||||
margin-left: 0px;
|
||||
color: #6f6f6f;
|
||||
}
|
||||
|
||||
#footer-widget .widget_tag_cloud a:hover{
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#footer-widget .widget-container ul li a {
|
||||
color:#fd7800;
|
||||
}
|
||||
|
||||
#footer-widget .widget-container ul li a:hover {
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
#footer-widget .widget-container h3 {
|
||||
color: #a5a5a5;
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 0px;
|
||||
padding-top: 10px;
|
||||
padding-left: 0px;
|
||||
font-size: 25px;
|
||||
padding-bottom: 8px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#footer-widget .widget-container ul li {
|
||||
padding: 5px 0px;
|
||||
background: none;
|
||||
}
|
||||
|
||||
#footer-widget ul {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
#footer-bar1 {
|
||||
padding-right: 40px;
|
||||
}
|
||||
#footer-bar2 {
|
||||
padding-right: 40px;
|
||||
}
|
||||
#footer-bar3 {
|
||||
}
|
||||
#footer-bar4 {
|
||||
}
|
||||
|
||||
span#follow-box{
|
||||
position: absolute;
|
||||
right: 100px;
|
||||
}
|
||||
|
||||
span#follow-box img{
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
/*logo*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#logo {
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
#logo2 {
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
#logo img{
|
||||
border: none;
|
||||
}
|
||||
|
||||
#logo2{
|
||||
text-decoration: none;
|
||||
font-size: 42px;
|
||||
letter-spacing: -1pt;
|
||||
font-weight: bold;
|
||||
font-family:arial, "Times New Roman", Times, serif;
|
||||
text-align: left;
|
||||
line-height: 57px;
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
#logo2 a, #slogan{
|
||||
color: #fd7800;
|
||||
}
|
||||
|
||||
#slogan{
|
||||
text-align: left;
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
/*search*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#search {
|
||||
width:180px;
|
||||
height:28px;
|
||||
border: 1px solid #ccc;
|
||||
margin-left: 10px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#sidebar #search {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#search #searchsubmit {
|
||||
background:url(images/go-btn.png) no-repeat top right;
|
||||
width:28px;
|
||||
height:28px;
|
||||
border:0px;
|
||||
position:absolute;
|
||||
right: -35px;
|
||||
}
|
||||
|
||||
#search #s {
|
||||
width:170px;
|
||||
height:23px;
|
||||
border:0px;
|
||||
margin-left:7px;
|
||||
margin-right:10px;
|
||||
margin-top:3px;
|
||||
color:#000;
|
||||
display: inline;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/*menu bar*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#menu_container{
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
|
||||
/*responsive menu*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
/* default style */
|
||||
.selectnav { display: none; }
|
||||
|
||||
/* small screen */
|
||||
@media screen and (max-width: 600px) {
|
||||
.js #nav { display: none; }
|
||||
.js #nav2 { display: none; }
|
||||
.js .selectnav { display: block; }
|
||||
}
|
||||
|
||||
|
||||
/*welcome*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
#welcome_container h1{
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
/*homepage boxes*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#box_container{
|
||||
padding-top: 35px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.box-head {
|
||||
float: left;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.box-head img{
|
||||
|
||||
}
|
||||
|
||||
.title-head{
|
||||
padding-top:2px;
|
||||
}
|
||||
|
||||
.title-box{
|
||||
color: #333;
|
||||
line-height: 15px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.title-box h1 {
|
||||
font-size: 18px;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.box-content {
|
||||
float: left;
|
||||
padding-top: 10px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
|
||||
/* POST */
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
.post {
|
||||
overflow: hidden;
|
||||
|
||||
}
|
||||
|
||||
.post-shadow{
|
||||
background: url("images/post_shadow.png") no-repeat bottom;
|
||||
height: 9px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.post ol{
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.post ul {
|
||||
margin-left: 15px;
|
||||
}
|
||||
.post-entry ul { margin: 0 0 10px 10px; }
|
||||
.post-entry ul li {
|
||||
display: block;
|
||||
margin: 5px 0;
|
||||
padding: 0 0 0 20px;
|
||||
/*background: url(images/bullet.png) no-repeat 0 7px;*/
|
||||
}
|
||||
|
||||
.post-entry ol {
|
||||
list-style: decimal;
|
||||
margin: 0 0 18px 1.6em;
|
||||
}
|
||||
.post-entry ol li {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
.post-entry {
|
||||
padding-bottom: 10px;
|
||||
padding-top: 10px;
|
||||
overflow: hidden;
|
||||
|
||||
}
|
||||
|
||||
.post-head {
|
||||
margin-bottom: 5px;
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.post-head h1 a, .post-head h1 {
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
margin: 0px;
|
||||
font-size: 27px;
|
||||
}
|
||||
|
||||
.post-head h1 a:hover {
|
||||
color:#777;
|
||||
}
|
||||
|
||||
|
||||
.post-head-notfound h1, .post-head-404 h1, .post-head-archive h1, .post-head-search h1 {
|
||||
margin-bottom: 10px;
|
||||
font-weight:normal;
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
font-size: 27px;
|
||||
}
|
||||
|
||||
.post-thumb img {
|
||||
border: 0px solid #ebebeb;
|
||||
}
|
||||
|
||||
.post-entry img{
|
||||
margin-bottom: 10px;
|
||||
height:auto;
|
||||
max-width:100% !important;
|
||||
}
|
||||
|
||||
.meta-data{
|
||||
line-height: 16px;
|
||||
padding: 6px 3px;
|
||||
margin-bottom: 3px;
|
||||
font-size: 11px;
|
||||
border-bottom: 1px solid #e9e9e9;
|
||||
}
|
||||
|
||||
.meta-data a{
|
||||
color: #fd7800;
|
||||
}
|
||||
|
||||
.meta-data a:hover{
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.read-more {
|
||||
color: #000;
|
||||
background: #fff;
|
||||
padding: 4px 8px;
|
||||
border-radius: 3px;
|
||||
display: inline-block;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
text-transform: capitalize;
|
||||
cursor: pointer;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.read-more:hover{
|
||||
background: #fff;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.clear {
|
||||
clear:both;
|
||||
}
|
||||
|
||||
.sticky {
|
||||
|
||||
}
|
||||
|
||||
/* content */
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
#content_container table {
|
||||
border: 1px solid #e7e7e7;
|
||||
margin: 0 -1px 24px 0;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
|
||||
}
|
||||
#content_container tr th,
|
||||
#content_container thead th {
|
||||
color: #888;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
line-height: 18px;
|
||||
padding: 9px 10px;
|
||||
}
|
||||
#content_container tr td {
|
||||
|
||||
padding: 6px 10px;
|
||||
}
|
||||
#content_container tr.odd td {
|
||||
background: #f2f7fc;
|
||||
}
|
||||
|
||||
/*--navigation--*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
.navigation {
|
||||
float: left;
|
||||
width: 100%;
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
|
||||
.navigation .alignleft a {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.navigation .alignright a {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#nav-single {
|
||||
overflow:hidden;
|
||||
margin-top:20px;
|
||||
margin-bottom:10px;
|
||||
}
|
||||
.nav-previous {
|
||||
float: left;
|
||||
width: 50%;
|
||||
}
|
||||
.nav-next {
|
||||
float: right;
|
||||
text-align: right;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
/*--sub head and breadcrumbs--*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#subhead_container{
|
||||
padding: 7px 0px;
|
||||
}
|
||||
|
||||
#subhead h1{
|
||||
color: #000;
|
||||
padding-top: 10px;
|
||||
padding-left: 0px;
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
#breadcrumbs {
|
||||
padding-left: 25px;
|
||||
margin-bottom: 15px;
|
||||
color: #9e9e9e;
|
||||
margin:0 auto;
|
||||
width: 964px;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
#breadcrumbs a{
|
||||
text-decoration: none;
|
||||
color: #9e9e9e;
|
||||
}
|
||||
|
||||
/*Alignments */
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
.alignleft,
|
||||
img.alignleft {
|
||||
display: inline;
|
||||
float: left;
|
||||
margin-right: 22px;
|
||||
margin-top: 9px;
|
||||
}
|
||||
|
||||
.alignright,
|
||||
img.alignright {
|
||||
display: inline;
|
||||
float: right;
|
||||
margin-left: 22px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
.aligncenter,
|
||||
img.aligncenter {
|
||||
clear: both;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.alignleft,
|
||||
.alignright,
|
||||
.aligncenter,
|
||||
img.alignleft,
|
||||
img.alignright,
|
||||
img.aligncenter
|
||||
{
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
|
||||
a img.aligncenter {
|
||||
display:block;
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
}
|
||||
|
||||
img { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; }
|
||||
@@ -0,0 +1,813 @@
|
||||
@import url("base.css");
|
||||
|
||||
@import url("foundation.css");
|
||||
|
||||
table {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 10px;
|
||||
background-color: #fafafa;
|
||||
color: #222;
|
||||
/* line-height: 1.0em; */
|
||||
border: 2px solid #C6C9CB;
|
||||
font-size: 0.9em;
|
||||
/* margin: 1.5em 0 1.5em 0; */
|
||||
margin: 0;
|
||||
border-right-style: none;
|
||||
border-left-style: none;
|
||||
}
|
||||
|
||||
/* General */
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
a:link {
|
||||
text-decoration: none;
|
||||
}
|
||||
a:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
a:active,
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
color: #000;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
h1 { font-weight: bold; font-size: 24px; }
|
||||
h2 { font-weight: bold; font-size: 18px; }
|
||||
h3 { font-weight: bold; font-size: 16px; }
|
||||
h4 { font-weight: bold; font-size: 14px; }
|
||||
|
||||
hr {
|
||||
background-color: #c6c6c6;
|
||||
border:0;
|
||||
height: 1px;
|
||||
margin-bottom: 18px;
|
||||
clear:both;
|
||||
}
|
||||
|
||||
div.hr {
|
||||
height: 1px;
|
||||
background: #c6c6c6;
|
||||
}
|
||||
|
||||
div.hr2 {
|
||||
height: 1px;
|
||||
background: #c6c6c6;
|
||||
}
|
||||
|
||||
div.hr hr, div.hr2 hr {
|
||||
display: none;
|
||||
}
|
||||
|
||||
p {
|
||||
padding: 0;
|
||||
line-height:1.6em;
|
||||
}
|
||||
ul {
|
||||
list-style: square;
|
||||
margin: 0 0 18px 0;
|
||||
}
|
||||
ol {
|
||||
list-style: decimal;
|
||||
margin: 0 0 18px 1.5em;
|
||||
}
|
||||
ol ol {
|
||||
list-style:upper-alpha;
|
||||
}
|
||||
ol ol ol {
|
||||
list-style:lower-roman;
|
||||
}
|
||||
ol ol ol ol {
|
||||
list-style:lower-alpha;
|
||||
}
|
||||
ul ul,
|
||||
ol ol,
|
||||
ul ol,
|
||||
ol ul {
|
||||
margin-bottom:0;
|
||||
}
|
||||
dl {
|
||||
margin:0 0 24px 0;
|
||||
}
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
dd {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
strong {
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
cite,
|
||||
em,
|
||||
i {
|
||||
font-style: italic;
|
||||
border: none;
|
||||
}
|
||||
big {
|
||||
font-size: 131.25%;
|
||||
}
|
||||
ins {
|
||||
background: #FFFFCC;
|
||||
border: none;
|
||||
color: #333;
|
||||
}
|
||||
del {
|
||||
text-decoration: line-through;
|
||||
color: #555;
|
||||
}
|
||||
blockquote {
|
||||
padding: 0 3em;
|
||||
}
|
||||
blockquote cite,
|
||||
blockquote em,
|
||||
blockquote i {
|
||||
font-style: normal;
|
||||
}
|
||||
pre {
|
||||
background: #f7f7f7;
|
||||
color: #222;
|
||||
padding: 1.5em;
|
||||
}
|
||||
abbr,
|
||||
acronym {
|
||||
border-bottom: 1px solid #666;
|
||||
cursor: help;
|
||||
}
|
||||
ins {
|
||||
text-decoration: none;
|
||||
}
|
||||
sup,
|
||||
sub {
|
||||
height: 0;
|
||||
line-height: 1;
|
||||
vertical-align: baseline;
|
||||
position: relative;
|
||||
font-size: 10px;
|
||||
}
|
||||
sup {
|
||||
bottom: 1ex;
|
||||
}
|
||||
sub {
|
||||
top: .5ex;
|
||||
}
|
||||
|
||||
p,
|
||||
ul,
|
||||
ol,
|
||||
dd,
|
||||
hr {
|
||||
margin-bottom:10px;
|
||||
}
|
||||
ul ul,
|
||||
ol ol,
|
||||
ul ol,
|
||||
ol ul {
|
||||
margin-bottom:0;
|
||||
}
|
||||
pre,
|
||||
kbd,
|
||||
tt,
|
||||
var {
|
||||
}
|
||||
code {
|
||||
font-size: 13px;
|
||||
}
|
||||
strong,
|
||||
b,
|
||||
dt,
|
||||
th {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
|
||||
/* main_container */
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#wrapper {
|
||||
padding: 0px 0px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/* header*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#search-header{
|
||||
margin-top:15px;
|
||||
padding-bottom:13px;
|
||||
}
|
||||
|
||||
#search-header #search{
|
||||
background: #222;
|
||||
|
||||
}
|
||||
|
||||
#search-header #search #s{
|
||||
background: #222;
|
||||
font-size:12px;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
#header_container{
|
||||
padding-bottom: 25px;
|
||||
padding-top: 0px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
#header {
|
||||
|
||||
}
|
||||
|
||||
#header2 {
|
||||
|
||||
}
|
||||
|
||||
#content_container{
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
#left-col {
|
||||
padding: 10px 20px;
|
||||
padding-left: 0px;
|
||||
background: #fff;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*footer*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
#footer {
|
||||
padding: 5px 20px;
|
||||
background: #ddd;
|
||||
}
|
||||
|
||||
#footer-container{
|
||||
padding: 5px 20px;
|
||||
background: #303030;
|
||||
border-top: 8px solid #000;
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
#footer-info {
|
||||
color:#ccc;
|
||||
text-align:left;
|
||||
background: #1b1b1b;
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
|
||||
#footer-info a{
|
||||
text-decoration:none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#footer-info a:hover{
|
||||
color: #ebebeb;
|
||||
}
|
||||
|
||||
#copyright{float: left;}
|
||||
|
||||
.scroll-top {
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
#footer-widget{
|
||||
padding: 8px 0px 8px 0px;
|
||||
color:#6f6f6f;
|
||||
}
|
||||
|
||||
#footer-widget #search {
|
||||
width:120px;
|
||||
height:28px;
|
||||
background: #222;
|
||||
margin-left: 0px;
|
||||
position: relative;
|
||||
border: 1px solid #666;
|
||||
}
|
||||
|
||||
#footer-widget #search #s {
|
||||
width:110px;
|
||||
height:23px;
|
||||
border:0px;
|
||||
margin-left:7px;
|
||||
margin-right:10px;
|
||||
margin-top:3px;
|
||||
color:#fff;
|
||||
display: inline;
|
||||
background: #222;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#footer-widget #calendar_wrap {
|
||||
padding: 8px 0px;
|
||||
}
|
||||
|
||||
#footer-widget #wp-calendar td{
|
||||
padding:2px;
|
||||
}
|
||||
|
||||
|
||||
#footer-widget .textwidget {
|
||||
padding: 5px 0px;
|
||||
line-height: 23px;
|
||||
}
|
||||
|
||||
|
||||
#footer-widget .widget_tag_cloud a{
|
||||
text-decoration: none;
|
||||
margin: 5px;
|
||||
line-height: 24px;
|
||||
margin-left: 0px;
|
||||
color: #6f6f6f;
|
||||
}
|
||||
|
||||
#footer-widget .widget_tag_cloud a:hover{
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#footer-widget .widget-container ul li a {
|
||||
color:#fd7800;
|
||||
}
|
||||
|
||||
#footer-widget .widget-container ul li a:hover {
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
#footer-widget .widget-container h3 {
|
||||
color: #a5a5a5;
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 0px;
|
||||
padding-top: 10px;
|
||||
padding-left: 0px;
|
||||
font-size: 25px;
|
||||
padding-bottom: 8px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#footer-widget .widget-container ul li {
|
||||
padding: 5px 0px;
|
||||
background: none;
|
||||
}
|
||||
|
||||
#footer-widget ul {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
#footer-bar1 {
|
||||
padding-right: 40px;
|
||||
}
|
||||
#footer-bar2 {
|
||||
padding-right: 40px;
|
||||
}
|
||||
#footer-bar3 {
|
||||
}
|
||||
#footer-bar4 {
|
||||
}
|
||||
|
||||
span#follow-box{
|
||||
position: absolute;
|
||||
right: 100px;
|
||||
}
|
||||
|
||||
span#follow-box img{
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
/*logo*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#logo {
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
#logo2 {
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
#logo img{
|
||||
border: none;
|
||||
}
|
||||
|
||||
#logo2{
|
||||
text-decoration: none;
|
||||
font-size: 42px;
|
||||
letter-spacing: -1pt;
|
||||
font-weight: bold;
|
||||
font-family:arial, "Times New Roman", Times, serif;
|
||||
text-align: left;
|
||||
line-height: 57px;
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
#logo2 a, #slogan{
|
||||
color: #fd7800;
|
||||
}
|
||||
|
||||
#slogan{
|
||||
text-align: left;
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
/*search*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#search {
|
||||
width:180px;
|
||||
height:28px;
|
||||
border: 1px solid #ccc;
|
||||
margin-left: 10px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#sidebar #search {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#search #searchsubmit {
|
||||
background:url(images/go-btn.png) no-repeat top right;
|
||||
width:28px;
|
||||
height:28px;
|
||||
border:0px;
|
||||
position:absolute;
|
||||
right: -35px;
|
||||
}
|
||||
|
||||
#search #s {
|
||||
width:170px;
|
||||
height:23px;
|
||||
border:0px;
|
||||
margin-left:7px;
|
||||
margin-right:10px;
|
||||
margin-top:3px;
|
||||
color:#000;
|
||||
display: inline;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/*menu bar*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#menu_container{
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
|
||||
/*responsive menu*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
/* default style */
|
||||
.selectnav { display: none; }
|
||||
|
||||
/* small screen */
|
||||
@media screen and (max-width: 600px) {
|
||||
.js #nav { display: none; }
|
||||
.js #nav2 { display: none; }
|
||||
.js .selectnav { display: block; }
|
||||
}
|
||||
|
||||
|
||||
/*welcome*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
#welcome_container h1{
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
/*homepage boxes*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#box_container{
|
||||
padding-top: 35px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.box-head {
|
||||
float: left;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.box-head img{
|
||||
|
||||
}
|
||||
|
||||
.title-head{
|
||||
padding-top:2px;
|
||||
}
|
||||
|
||||
.title-box{
|
||||
color: #333;
|
||||
line-height: 15px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.title-box h1 {
|
||||
font-size: 18px;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.box-content {
|
||||
float: left;
|
||||
padding-top: 10px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
|
||||
/* POST */
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
.post {
|
||||
overflow: hidden;
|
||||
|
||||
}
|
||||
|
||||
.post-shadow{
|
||||
background: url("images/post_shadow.png") no-repeat bottom;
|
||||
height: 9px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.post ol{
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.post ul {
|
||||
margin-left: 15px;
|
||||
}
|
||||
.post-entry ul { margin: 0 0 10px 10px; }
|
||||
.post-entry ul li {
|
||||
display: block;
|
||||
margin: 5px 0;
|
||||
padding: 0 0 0 20px;
|
||||
/*background: url(images/bullet.png) no-repeat 0 7px;*/
|
||||
}
|
||||
|
||||
.post-entry ol {
|
||||
list-style: decimal;
|
||||
margin: 0 0 18px 1.6em;
|
||||
}
|
||||
.post-entry ol li {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
.post-entry {
|
||||
padding-bottom: 10px;
|
||||
padding-top: 10px;
|
||||
overflow: hidden;
|
||||
|
||||
}
|
||||
|
||||
.post-head {
|
||||
margin-bottom: 5px;
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.post-head h1 a, .post-head h1 {
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
margin: 0px;
|
||||
font-size: 27px;
|
||||
}
|
||||
|
||||
.post-head h1 a:hover {
|
||||
color:#777;
|
||||
}
|
||||
|
||||
|
||||
.post-head-notfound h1, .post-head-404 h1, .post-head-archive h1, .post-head-search h1 {
|
||||
margin-bottom: 10px;
|
||||
font-weight:normal;
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
font-size: 27px;
|
||||
}
|
||||
|
||||
.post-thumb img {
|
||||
border: 0px solid #ebebeb;
|
||||
}
|
||||
|
||||
.post-entry img{
|
||||
margin-bottom: 10px;
|
||||
height:auto;
|
||||
max-width:100% !important;
|
||||
}
|
||||
|
||||
.meta-data{
|
||||
line-height: 16px;
|
||||
padding: 6px 3px;
|
||||
margin-bottom: 3px;
|
||||
font-size: 11px;
|
||||
border-bottom: 1px solid #e9e9e9;
|
||||
}
|
||||
|
||||
.meta-data a{
|
||||
color: #fd7800;
|
||||
}
|
||||
|
||||
.meta-data a:hover{
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.read-more {
|
||||
color: #000;
|
||||
background: #fff;
|
||||
padding: 4px 8px;
|
||||
border-radius: 3px;
|
||||
display: inline-block;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
text-transform: capitalize;
|
||||
cursor: pointer;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.read-more:hover{
|
||||
background: #fff;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.clear {
|
||||
clear:both;
|
||||
}
|
||||
|
||||
.sticky {
|
||||
|
||||
}
|
||||
|
||||
/* content */
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
#content_container table {
|
||||
border: 1px solid #e7e7e7;
|
||||
margin: 0 -1px 24px 0;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
|
||||
}
|
||||
#content_container tr th,
|
||||
#content_container thead th {
|
||||
color: #888;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
line-height: 18px;
|
||||
padding: 9px 10px;
|
||||
}
|
||||
#content_container tr td {
|
||||
|
||||
padding: 6px 10px;
|
||||
}
|
||||
#content_container tr.odd td {
|
||||
background: #f2f7fc;
|
||||
}
|
||||
|
||||
/* sidebar*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#sidebar {
|
||||
padding:0px 20px 20px 0px;
|
||||
}
|
||||
|
||||
#sidebar ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
#sidebar { word-wrap: break-word;}
|
||||
|
||||
|
||||
/*--navigation--*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
.navigation {
|
||||
float: left;
|
||||
width: 100%;
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
|
||||
.navigation .alignleft a {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.navigation .alignright a {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#nav-single {
|
||||
overflow:hidden;
|
||||
margin-top:20px;
|
||||
margin-bottom:10px;
|
||||
}
|
||||
.nav-previous {
|
||||
float: left;
|
||||
width: 50%;
|
||||
}
|
||||
.nav-next {
|
||||
float: right;
|
||||
text-align: right;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
/*--slider--*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#slider_container {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.flex-caption{
|
||||
background: #232323;
|
||||
color: #fff;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
.flexslider p{
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
/*--sub head and breadcrumbs--*/
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#subhead_container{
|
||||
padding: 7px 0px;
|
||||
}
|
||||
|
||||
#subhead h1{
|
||||
color: #000;
|
||||
padding-top: 10px;
|
||||
padding-left: 0px;
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
#breadcrumbs {
|
||||
padding-left: 25px;
|
||||
margin-bottom: 15px;
|
||||
color: #9e9e9e;
|
||||
margin:0 auto;
|
||||
width: 964px;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
#breadcrumbs a{
|
||||
text-decoration: none;
|
||||
color: #9e9e9e;
|
||||
}
|
||||
|
||||
/*Alignments */
|
||||
/*////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
.alignleft,
|
||||
img.alignleft {
|
||||
display: inline;
|
||||
float: left;
|
||||
margin-right: 22px;
|
||||
margin-top: 9px;
|
||||
}
|
||||
|
||||
.alignright,
|
||||
img.alignright {
|
||||
display: inline;
|
||||
float: right;
|
||||
margin-left: 22px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
.aligncenter,
|
||||
img.aligncenter {
|
||||
clear: both;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.alignleft,
|
||||
.alignright,
|
||||
.aligncenter,
|
||||
img.alignleft,
|
||||
img.alignright,
|
||||
img.aligncenter
|
||||
{
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
|
||||
a img.aligncenter {
|
||||
display:block;
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
}
|
||||
|
||||
|
||||
table {
|
||||
border-collapse:collapse;
|
||||
}
|
||||
table, th, td {
|
||||
border: 1px solid black;
|
||||
padding: 5px;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 134 B |
Binary file not shown.
|
After Width: | Height: | Size: 146 B |
@@ -0,0 +1,15 @@
|
||||
[theme]
|
||||
inherit = agogo
|
||||
stylesheet = named_data_style.css
|
||||
# pygments_style = sphinx
|
||||
|
||||
theme_bodyfont = "normal 12px Verdana, sans-serif"
|
||||
theme_bgcolor = "#ccc"
|
||||
|
||||
theme_documentwidth = "100%"
|
||||
theme_textalign = "left"
|
||||
|
||||
[options]
|
||||
|
||||
stickysidebar = true
|
||||
collapsiblesidebar = true
|
||||
@@ -0,0 +1,70 @@
|
||||
# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
# Based on http://doughellmann.com/2010/05/09/defining-custom-roles-in-sphinx.html
|
||||
|
||||
"""Integration of Sphinx with Redmine.
|
||||
"""
|
||||
|
||||
from docutils import nodes, utils
|
||||
from docutils.parsers.rst.roles import set_classes
|
||||
|
||||
def redmine_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
|
||||
"""Link to a Redmine issue.
|
||||
|
||||
Returns 2 part tuple containing list of nodes to insert into the
|
||||
document and a list of system messages. Both are allowed to be
|
||||
empty.
|
||||
|
||||
:param name: The role name used in the document.
|
||||
:param rawtext: The entire markup snippet, with role.
|
||||
:param text: The text marked with the role.
|
||||
:param lineno: The line number where rawtext appears in the input.
|
||||
:param inliner: The inliner instance that called us.
|
||||
:param options: Directive options for customization.
|
||||
:param content: The directive content for customization.
|
||||
"""
|
||||
try:
|
||||
issue_num = int(text)
|
||||
if issue_num <= 0:
|
||||
raise ValueError
|
||||
except ValueError:
|
||||
msg = inliner.reporter.error(
|
||||
'Redmine issue number must be a number greater than or equal to 1; '
|
||||
'"%s" is invalid.' % text, line=lineno)
|
||||
prb = inliner.problematic(rawtext, rawtext, msg)
|
||||
return [prb], [msg]
|
||||
app = inliner.document.settings.env.app
|
||||
node = make_link_node(rawtext, app, 'issues', str(issue_num), options)
|
||||
return [node], []
|
||||
|
||||
def make_link_node(rawtext, app, type, slug, options):
|
||||
"""Create a link to a Redmine resource.
|
||||
|
||||
:param rawtext: Text being replaced with link node.
|
||||
:param app: Sphinx application context
|
||||
:param type: Link type (issue, changeset, etc.)
|
||||
:param slug: ID of the thing to link to
|
||||
:param options: Options dictionary passed to role func.
|
||||
"""
|
||||
#
|
||||
try:
|
||||
base = app.config.redmine_project_url
|
||||
if not base:
|
||||
raise AttributeError
|
||||
except AttributeError:
|
||||
raise ValueError('redmine_project_url configuration value is not set')
|
||||
#
|
||||
slash = '/' if base[-1] != '/' else ''
|
||||
ref = base + slash + type + '/' + slug + '/'
|
||||
set_classes(options)
|
||||
node = nodes.reference(rawtext, 'Issue #' + utils.unescape(slug), refuri=ref,
|
||||
**options)
|
||||
return node
|
||||
|
||||
def setup(app):
|
||||
"""Install the plugin.
|
||||
|
||||
:param app: Sphinx application context.
|
||||
"""
|
||||
app.add_role('issue', redmine_role)
|
||||
app.add_config_value('redmine_project_url', None, 'env')
|
||||
return
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
release-notes/release-notes-0.4.2.rst
|
||||
@@ -0,0 +1,30 @@
|
||||
NLSR version 0.1.0 (initial release)
|
||||
++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Release date: August 25, 2014
|
||||
|
||||
The main design goal of NLSR is to provide a routing protocol to populate `NFD's
|
||||
<http://named-data.net/doc/NFD/current/>`_ RIB. NLSR calculates the routing table using
|
||||
link-state or hyperbolic routing and produces multiple faces for each reachable name
|
||||
prefix in a single authoritative domain.
|
||||
|
||||
**Included features**:
|
||||
|
||||
- Advertise availability of content through the configured router
|
||||
|
||||
- Use `ChronoSync <https://github.com/named-data/ChronoSync>`_ to synchronize routers' LSA sequence numbers and Interest/Data to retrieve LSAs
|
||||
|
||||
- Produce a list of ranked forwarding options for each name prefix to facilitate NDN's adaptive forwarding strategies
|
||||
|
||||
- Configure maximum number of faces per prefix in NFD’s RIB
|
||||
|
||||
- Set up NFD tunnels to neighbors automatically and maintain the tunnels to neighbors
|
||||
|
||||
- Provide two routing protocols:
|
||||
|
||||
+ Link State routing: calculate route cost based on link costs
|
||||
+ Hyperbolic routing: calculate route cost based on hyperbolic coordinates
|
||||
|
||||
- Use a hierarchical trust model for routing within a single administrative domain
|
||||
|
||||
- Keep NFD’s RIB updated on failure and recovery
|
||||
@@ -0,0 +1,94 @@
|
||||
NLSR version 0.2.0 (changes since version 0.1.0)
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Release date: April 30, 2015
|
||||
|
||||
**Build**:
|
||||
|
||||
- The code now requires C++11. The minimum supported gcc version is 4.6, as earlier versions do not have proper support for C++11 features. (:issue:`1930`)
|
||||
|
||||
- Require OpenSSL (:issue:`2375`)
|
||||
|
||||
**New features**:
|
||||
|
||||
- Add nlsrc command-line tool (:issue:`1834`)
|
||||
|
||||
- Advertise/Withdraw name prefixes at runtime (:issue:`1834`)
|
||||
|
||||
- Assign zero cost to hyperbolic direct neighbors (:issue:`1975`)
|
||||
|
||||
- Only hyperbolic costs are adjusted before registering (:issue:`1974`)
|
||||
|
||||
- Add ability to specify different logging levels (:issue:`1935`)
|
||||
|
||||
- Add LSDB dataset publishers (:issue:`2280`)
|
||||
|
||||
- Add LSDB dataset tlv abstractions (:issue:`2280`)
|
||||
|
||||
- Allow zero cost neighbors for hyperbolic routing table calculation (:issue:`1982`)
|
||||
|
||||
- Faces are now created with canonical Face URI (:issue:`1911`)
|
||||
|
||||
- Add configurable router event intervals (:issue:`2071`)
|
||||
|
||||
- Add router-dead-interval configuration setting (:issue:`1878`)
|
||||
|
||||
- Add log formatting specified by log4cxx configuration file (:issue:`1950`)
|
||||
|
||||
- Face URIs in configuration file are checked for validity on load (:issue:`2070`)
|
||||
|
||||
- Configuration variables with default values are now optional (:issue:`1949`)
|
||||
|
||||
- Recalculate routing table after face destroy event (:issue:`2635`)
|
||||
|
||||
- Add Travis-CI build script
|
||||
|
||||
**Code changes**:
|
||||
|
||||
- Change adjacency status from uint32_t to enum (:issue:`1946`)
|
||||
|
||||
- Remove scheduler from NLSR class (:issue:`1981`)
|
||||
|
||||
- Change hyperbolic cost adjustment factor from 100 to 1000 (:issue:`1974`)
|
||||
|
||||
- Remove use of outdated namespace ``ndn::Tlv`` (:issue:`2079`)
|
||||
|
||||
- Remove use of deprecated ``ndn::nfd::Controller(Face&)`` constructor (:issue:`2133`)
|
||||
|
||||
- Routing update publishing is abstracted to SyncLogicHandler (:issue:`2289`)
|
||||
|
||||
- Make ConfParameter variable types consistent with min and max values (:issue:`2084`)
|
||||
|
||||
- Replace LSA string literals with constants (:issue:`2310`)
|
||||
|
||||
- Subscribe to FaceMonitor notifications using connect (:issue:`2350`)
|
||||
|
||||
- Log exceptions thrown in event loop
|
||||
|
||||
- Change ``ndn::ptr_lib::shared_ptr`` to ``std::shared_ptr`` (:issue:`2110`)
|
||||
|
||||
- Avoid deprecated ``ndn::Name::set`` method (:issue:`2505`)
|
||||
|
||||
- Update waf to version 1.8.8-dev
|
||||
|
||||
- Add sorting tiebreaker to NexthopList (:issue:`2715`)
|
||||
|
||||
- Update Jenkins-CI build scripts
|
||||
|
||||
**Bug fixes**:
|
||||
|
||||
- Fix python3 build error (:issue:`1956`)
|
||||
|
||||
- Fix typos in nlsr.conf security section (:issue:`1985`)
|
||||
|
||||
- Stop SyncLogicHandler from fetching a router’s own LSAs (:issue:`2005`)
|
||||
|
||||
- Fix Name LSA comparison which could cause incorrect advertised names to be removed (:issue:`2029`)
|
||||
|
||||
- Fix issue where more faces than max-faces-per-prefix could be applied to a prefix (:issue:`2018`)
|
||||
|
||||
- Stop LSDB from retrieving and out of date LSA when a new one is detected (:issue:`1987`)
|
||||
|
||||
- Correct mistakes in documentation
|
||||
|
||||
- Correct bitmask used to copy Name LSA sequence number (:issue:`2323`)
|
||||
@@ -0,0 +1,20 @@
|
||||
NLSR version 0.2.1 (changes since version 0.2.0)
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Release date: June 30, 2015
|
||||
|
||||
**Code changes**:
|
||||
|
||||
- Using a configuration file without ``prefix-update-validator`` disables runtime advertise/withdraw instead of exiting (:issue:`2814`)
|
||||
|
||||
**Bug fixes**:
|
||||
|
||||
- Prevent incomplete removal of NPT entry (:issue:`2785`)
|
||||
|
||||
- Correct bidirectional links with differing costs (:issue:`2801`)
|
||||
|
||||
- Fix non-incrementing Adjacency number in AdjLsa::writeLog (:issue:`2594`)
|
||||
|
||||
- Remove FaceDestroyEvent test's reliance on nlsrSeqNo.txt (:issue:`2881`)
|
||||
|
||||
- Test ACTIVE/INACTIVE Adjacencies in LSA construction (:issue:`2735`)
|
||||
@@ -0,0 +1,8 @@
|
||||
NLSR version 0.2.2 (changes since version 0.2.1)
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Release date: January 5, 2016
|
||||
|
||||
**Code changes**:
|
||||
|
||||
- Adapt code to changes in NFD/ndn-cxx version 0.4.0 release
|
||||
@@ -0,0 +1,26 @@
|
||||
NLSR version 0.3.0 (changes since version 0.2.2)
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Release date: August 1, 2016
|
||||
|
||||
**Code changes**:
|
||||
|
||||
- Updated validation checker for LSA rule in the configuration file (:issue:`2965`)
|
||||
|
||||
- Do not advertise Adjacency LSAs when hyperbolic routing is enabled (:issue:`2402`)
|
||||
|
||||
- Do not distribute coordinate LSAs when using link-state routing. (:issue:`3661`)
|
||||
|
||||
- LSAs should be segmented before they are published (:issue:`2965`)
|
||||
|
||||
- Don't use DummyClientFace::sentDatas (:issue:`3383`)
|
||||
|
||||
- Remove disabled security files (:issue:`2960`)
|
||||
|
||||
- Lsa type should be argument for base class LSA constructor (:issue:`2788`)
|
||||
|
||||
- Use ndn-cxx/DummyClientFace (:issue:`2637`)
|
||||
|
||||
**Bug fixes**:
|
||||
|
||||
- Unit tests cases are installed with `./waf install` (:issue:`3359`)
|
||||
@@ -0,0 +1,34 @@
|
||||
NLSR version 0.3.1 (changes since version 0.3.0)
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Release date: January 22, 2017
|
||||
|
||||
**Changes**
|
||||
|
||||
- **breaking change** Sync uses /localhop component in prefix to reduce duplicate NACKs (:issue:`3627`)
|
||||
|
||||
- **breaking change** LSA uses /localhop component in prefix to reduce duplicate NACKs (:issue:`3899`)
|
||||
|
||||
**Code Changes**:
|
||||
|
||||
- Fib and FaceMap use std::map instead of std::list (:issue:`2781`)
|
||||
|
||||
- NamePrefixTableEntries store RoutingTableEntries using a pointer (:issue:`2863`)
|
||||
|
||||
- Namespace closing comments are now consistent with ndn-cxx guidelines (:issue:`3735`)
|
||||
|
||||
- Update copyright date across all files (:issue:`3736`, `3909`, `3923`)
|
||||
|
||||
- Improve formatting of FaceMap and FaceMapEntry (:issue:`3737`)
|
||||
|
||||
- Sort NextHops on NexthopList insertion (:issue:`2721`)
|
||||
|
||||
**Bug fixes**:
|
||||
|
||||
- HR now recalculates paths after status change of a neighbor (:issue:`3874`)
|
||||
|
||||
- NLSR no longer sets strategies multiple times (:issue:`3743`)
|
||||
|
||||
- NLSR should enable use of ndn-cxx dispatcher (:issue:`3930`)
|
||||
|
||||
- Fix typos in the sample configuration file (:issue:`3113`)
|
||||
@@ -0,0 +1,20 @@
|
||||
NLSR version 0.3.2 (changes since version 0.3.1)
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Release date: March 15, 2017
|
||||
|
||||
**Changes**
|
||||
|
||||
- NLSR constructor now accept a KeyChain argument. (:issue:`3742`)
|
||||
|
||||
- Fix security rule for /localhop LSA prefix (:issue:`3899`)
|
||||
|
||||
- Use ndn::nfd::ROUTE_ORIGIN_NLSR instead of a magic number. (:issue:`3903`)
|
||||
|
||||
- Handle "Face Already Exists" error (error code 409) in NFD. (:issue:`3976`)
|
||||
|
||||
- Enable NLSR to register localhost prefix with dispatcher before top-level prefix. (:issue:`3938`)
|
||||
|
||||
- Don't use ndn aliases provided by ndn-cxx/common.hpp. (:issue:`3983`)
|
||||
|
||||
- Remove use of deprecated code. (:issue:`3988`)
|
||||
@@ -0,0 +1,79 @@
|
||||
NLSR version 0.4.0
|
||||
++++++++++++++++++
|
||||
|
||||
**New features**:
|
||||
|
||||
- **breaking change** Discover Faces from NFD (:issue:`2954`)
|
||||
|
||||
- **breaking change** Accommodate n-Dimensional HR coordinates (:issue:`3751`)
|
||||
|
||||
**Changes**:
|
||||
|
||||
- **breaking change** Make chronosync a dependency (:issue:`2400`)
|
||||
|
||||
- **breaking change** Use separate name prefix and sequence number
|
||||
for each LSA type (:issue:`3964`)
|
||||
|
||||
- **breaking change** Convert to ``v2::security`` and adapt to ndn-cxx changes (:issue:`3964`)
|
||||
|
||||
- Use unix timestamp as default (:issue:`4187`)
|
||||
|
||||
**Bug Fixes**:
|
||||
|
||||
- Add support for sources to NamePrefixList (:issue:`4177`)
|
||||
|
||||
- Fix incorrect error on face-dataset-fetch-interval valid values (:issue:`4211`)
|
||||
|
||||
- Fix prefix advertise runtime error (:issue:`4215`)
|
||||
|
||||
- Fix heap buffer overflow error (:issue:`4217`)
|
||||
|
||||
**Code Changes**:
|
||||
|
||||
- LSA getData() now uses ostream instead of manually building the string (:issue:`2346`)
|
||||
|
||||
- Refresh FIB entries independently of routing table calculation (:issue:`2778`)
|
||||
|
||||
- Change configuration parameter output level to info (:issue:`2850`)
|
||||
|
||||
- Updates to name prefixes are more efficient (:issue:`2864`)
|
||||
|
||||
- Implement statistics collector/recorder (:issue:`2956`)
|
||||
|
||||
- Implement ``NameLsa::isEqualContent`` (:issue:`2962`)
|
||||
|
||||
- Refactor ``Fib::removeOldNextHopsFromFibEntryAndNfd()`` for simplicity, readability. (:issue:`3820`)
|
||||
|
||||
- Improve logging throughout lsdb.cpp and others (:issue:`3934`)
|
||||
|
||||
- Enable dispatcher for LOCALHOST_PREFIX (:issue:`3938`)
|
||||
|
||||
- Don't use ndn aliases provided by ndn-cxx/common.hpp (:issue:`3983`)
|
||||
|
||||
- Canonize Adjacent FaceURIs on startup (:issue:`4063`)
|
||||
|
||||
- Refactor AdjacencyList to use iterators instead of bare ptrs (:issue:`4068`)
|
||||
|
||||
- Merge redundant functions (:issue:`4105`)
|
||||
|
||||
- Remove writeLog in NamePrefixList (:issue:`4131`)
|
||||
|
||||
- Check for self in ChronoSync updates (:issue:`4134`)
|
||||
|
||||
- Install nlsr.conf as sample in the system (:issue:`4197`)
|
||||
|
||||
- Enable AddressSanitizer and LeakSanitizer for unit tests (:issue:`4206`)
|
||||
|
||||
- Resolve all ASan errors in unit tests (:issue:`4230`)
|
||||
|
||||
- Simplified LSDB dataset interest handler. (:issue:`4235`)
|
||||
|
||||
- Made map more container-agnostic (:issue:`4239`)
|
||||
|
||||
- Improved routing map data structure. (:issue:`4240`)
|
||||
|
||||
- Increased independence of SyncLogicHandler (:issue:`4264`)
|
||||
|
||||
- Use unique_ptr for signal container (:issue:`4268`)
|
||||
|
||||
- Use network name in sync prefix to avoid sync leaks from other networks (:issue:`4101`)
|
||||
@@ -0,0 +1,24 @@
|
||||
NLSR version 0.4.1
|
||||
++++++++++++++++++
|
||||
|
||||
**New features**:
|
||||
|
||||
- The routing table dataset publisher (:issue:`3630`)
|
||||
|
||||
- Use ndn-cxx logging facility, remove log4cxx dependency (:issue:`3949`)
|
||||
|
||||
- Automatic serving of other routers' certificates (:issue:`4448`)
|
||||
|
||||
**Bug Fixes**:
|
||||
|
||||
- Hard-code a fixed session name for ChronoSync sockets (:issue:`4513`)
|
||||
|
||||
- Fix encoding bug in the routing table publisher (:issue:`4453`)
|
||||
|
||||
- Fix NLSR not converging without content store (:issue:`4430`)
|
||||
|
||||
**Miscellaneous Changes**:
|
||||
|
||||
- Make ChronoSync's sync interest lifetime configurable (:issue:`4490`)
|
||||
|
||||
- Print labels on adjacency matrix when logging (:issue:`2045`)
|
||||
@@ -0,0 +1,6 @@
|
||||
NLSR version 0.4.2
|
||||
++++++++++++++++++
|
||||
|
||||
**Bug Fixes**:
|
||||
|
||||
- Fix segfault in scheduled erase of lsa segment (:issue:`4520`)
|
||||
@@ -0,0 +1,71 @@
|
||||
NLSR Versions
|
||||
+++++++++++++
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
:maxdepth: 1
|
||||
|
||||
release-notes/release-notes-0.4.2
|
||||
release-notes/release-notes-0.4.1
|
||||
release-notes/release-notes-0.4.0
|
||||
release-notes/release-notes-0.3.2
|
||||
release-notes/release-notes-0.3.1
|
||||
release-notes/release-notes-0.3.0
|
||||
release-notes/release-notes-0.2.2
|
||||
release-notes/release-notes-0.2.1
|
||||
release-notes/release-notes-0.2.0
|
||||
release-notes/release-notes-0.1.0
|
||||
|
||||
* **NLSR version 0.4.1**
|
||||
(:doc:`Release Notes <release-notes/release-notes-0.4.1>`, `Documentation <https://named-data.net/doc/NLSR/0.4.1/>`__)
|
||||
|
||||
`src (git) <https://github.com/named-data/NLSR/releases/tag/NLSR-0.4.1>`__,
|
||||
`src (tarball) <https://named-data.net/downloads/nlsr-0.4.1.tar.bz2>`__ (`checksum <https://named-data.net/downloads/nlsr-0.4.1.tar.bz2.sha256>`__)
|
||||
|
||||
* **NLSR version 0.4.0**
|
||||
(:doc:`Release Notes <release-notes/release-notes-0.4.0>`, `Documentation <https://named-data.net/doc/NLSR/0.4.0/>`__)
|
||||
|
||||
`src (git) <https://github.com/named-data/NLSR/releases/tag/NLSR-0.4.0>`__,
|
||||
`src (tarball) <https://named-data.net/downloads/nlsr-0.4.0.tar.bz2>`__ (`checksum <https://named-data.net/downloads/nlsr-0.4.0.tar.bz2.sha256>`__)
|
||||
|
||||
* **NLSR version 0.3.2**
|
||||
(:doc:`Release Notes <release-notes/release-notes-0.3.2>`, `Documentation <https://named-data.net/doc/NLSR/0.3.2/>`__)
|
||||
|
||||
`src (git) <https://github.com/named-data/NLSR/releases/tag/NLSR-0.3.2>`__,
|
||||
`src (tarball) <https://named-data.net/downloads/nlsr-0.3.2.tar.bz2>`__ (`checksum <https://named-data.net/downloads/nlsr-0.3.2.tar.bz2.sha256>`__)
|
||||
|
||||
* **NLSR version 0.3.1**
|
||||
(:doc:`Release Notes <release-notes/release-notes-0.3.1>`, `Documentation <https://named-data.net/doc/NLSR/0.3.1/>`__)
|
||||
|
||||
`src (git) <https://github.com/named-data/NLSR/releases/tag/NLSR-0.3.1>`__,
|
||||
`src (tarball) <https://named-data.net/downloads/nlsr-0.3.1.tar.bz2>`__ (`checksum <https://named-data.net/downloads/nlsr-0.3.1.tar.bz2.sha256>`__)
|
||||
|
||||
* **NLSR version 0.3.0**
|
||||
(:doc:`Release Notes <release-notes/release-notes-0.3.0>`, `Documentation <https://named-data.net/doc/NLSR/0.3.0/>`__)
|
||||
|
||||
`src (git) <https://github.com/named-data/NLSR/releases/tag/NLSR-0.3.0>`__,
|
||||
`src (tarball) <https://named-data.net/downloads/nlsr-0.3.0.tar.bz2>`__ (`checksum <https://named-data.net/downloads/nlsr-0.3.0.tar.bz2.sha256>`__)
|
||||
|
||||
* **NLSR version 0.2.2**
|
||||
(:doc:`Release Notes <release-notes/release-notes-0.2.2>`, `Documentation <https://named-data.net/doc/NLSR/0.2.2/>`__)
|
||||
|
||||
`src (git) <https://github.com/named-data/NLSR/releases/tag/NLSR-0.2.2>`__,
|
||||
`src (tarball) <https://named-data.net/downloads/nlsr-0.2.2.tar.bz2>`__ (`checksum <https://named-data.net/downloads/nlsr-0.2.2.tar.bz2.sha256>`__)
|
||||
|
||||
* **NLSR version 0.2.1**
|
||||
(:doc:`Release Notes <release-notes/release-notes-0.2.1>`, `Documentation <https://named-data.net/doc/NLSR/0.2.1/>`__)
|
||||
|
||||
`src (git) <https://github.com/named-data/NLSR/releases/tag/NLSR-0.2.1>`__,
|
||||
`src (tarball) <https://named-data.net/downloads/nlsr-0.2.1.tar.bz2>`__ (`checksum <https://named-data.net/downloads/nlsr-0.2.1.tar.bz2.sha256>`__)
|
||||
|
||||
* **NLSR version 0.2.0**
|
||||
(:doc:`Release Notes <release-notes/release-notes-0.2.0>`, `Documentation <https://named-data.net/doc/NLSR/0.2.0/>`__)
|
||||
|
||||
`src (git) <https://github.com/named-data/NLSR/releases/tag/NLSR-0.2.0>`__,
|
||||
`src (tarball) <https://named-data.net/downloads/nlsr-0.2.0.tar.bz2>`__ (`checksum <https://named-data.net/downloads/nlsr-0.2.0.tar.bz2.sha256>`__)
|
||||
|
||||
* **NLSR version 0.1.0**
|
||||
(:doc:`Release Notes <release-notes/release-notes-0.1.0>`, `Documentation <https://named-data.net/doc/NLSR/0.1.0/>`__)
|
||||
|
||||
`src (git) <https://github.com/named-data/NLSR/releases/tag/NLSR-0.1.0>`__,
|
||||
`src (tarball) <https://named-data.net/downloads/nlsr-0.1.0.tar.bz2>`__ (`checksum <https://named-data.net/downloads/nlsr-0.1.0.tar.bz2.sha256>`__)
|
||||
@@ -1,52 +0,0 @@
|
||||
\section{FIB Interaction}
|
||||
\label{sec:fib}
|
||||
|
||||
The FIB module interacts with NFD to perform registrations and
|
||||
unregistrations of routes. By registration, what is meant is the
|
||||
submission of a RIB route to the local NFD, which includes a name
|
||||
prefix, the Face ID of the nexthop, an expiration time, and the
|
||||
calculated cost from the Routing Table calculation. Additionally, NLSR
|
||||
sets a field to tell NFD that the route originates from NLSR, and sets
|
||||
a route inheritance flag.
|
||||
|
||||
The expiration time for a route is pegged at double the value of the
|
||||
LSA refresh time, which is defined by \texttt{lsa-refresh-time} in the
|
||||
configuration file. The route inheritance flag is set to capture,
|
||||
which forbids NFD from using a shorter prefix of the name prefix for
|
||||
forwarding.
|
||||
|
||||
More information about NFD's RIB can be found on the
|
||||
\href{https://redmine.named-data.net/projects/nfd/wiki/RibMgmt}{Redmine
|
||||
wiki}. An important thing to note is that NFD has a module called
|
||||
the FIB. Anywhere in this guide, the word ``FIB'' refers to the NLSR
|
||||
FIB, which models NLSR's expectation of how NFD would forward packets.
|
||||
|
||||
The FIB is directed by the Name Prefix Table, which registers and
|
||||
unregisters routes based on calculations by the Routing Table and
|
||||
advertisements from LSAs. The connection between the FIB and the NPT
|
||||
is through the \texttt{Fib::update()} method.
|
||||
|
||||
\subsection{Updating the FIB}
|
||||
Generally, updating the FIB looks like this:
|
||||
\begin{itemize}
|
||||
\item Sort the list of next hops for the prefix, by cost.
|
||||
\item Take the cheapest \texttt{max-faces-per-prefix} hops. This can be set to have no limit, so all next hops are registered.
|
||||
\item Send a RIB route registration command for each next hop.
|
||||
\item Send a RIB route unregistration command for any next hops that
|
||||
have dropped out of the list. This includes next hops that became
|
||||
invalid since the last Routing Table calculation, as well as valid
|
||||
hops that are no longer in the top \texttt{max-faces-per-prefix}
|
||||
next hops.
|
||||
\end{itemize}
|
||||
|
||||
If there are more passed next hops than the
|
||||
\texttt{max-faces-per-prefix}, the FIB module will only use the first
|
||||
\texttt{max-faces-per-prefix} number of next hops from the sorted
|
||||
list. If there are less passed next hops than
|
||||
\texttt{max-faces-per-prefix}, the FIB module will use all of the next hops.
|
||||
Specifically, when the NPT updates the FIB, the FIB creates entries so
|
||||
that it can compute the difference between the set of new next hops,
|
||||
and the set of old next hops that were registered at the last update.
|
||||
These entries are unique on the destination name prefix. The FIB will
|
||||
update an existing entry instead of creating a new one, which may
|
||||
involve unregistering old next hops, as mentioned above.
|
||||
Binary file not shown.
@@ -1,614 +0,0 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%BoundingBox: 0 0 444 276
|
||||
%%Pages: 0
|
||||
%%Creator: LibreOffice 4.2
|
||||
%%Title: none
|
||||
%%CreationDate: none
|
||||
%%LanguageLevel: 2
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%BeginResource: procset SDRes-Prolog 1.0 0
|
||||
/b4_inc_state save def
|
||||
/dict_count countdictstack def
|
||||
/op_count count 1 sub def
|
||||
userdict begin
|
||||
0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
|
||||
/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
|
||||
/bdef {bind def} bind def
|
||||
/c {setrgbcolor} bdef
|
||||
/l {neg lineto} bdef
|
||||
/rl {neg rlineto} bdef
|
||||
/lc {setlinecap} bdef
|
||||
/lj {setlinejoin} bdef
|
||||
/lw {setlinewidth} bdef
|
||||
/ml {setmiterlimit} bdef
|
||||
/ld {setdash} bdef
|
||||
/m {neg moveto} bdef
|
||||
/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
|
||||
/r {rotate} bdef
|
||||
/t {neg translate} bdef
|
||||
/s {scale} bdef
|
||||
/sw {show} bdef
|
||||
/gs {gsave} bdef
|
||||
/gr {grestore} bdef
|
||||
/f {findfont dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
|
||||
currentdict end /NFont exch definefont pop /NFont findfont} bdef
|
||||
/p {closepath} bdef
|
||||
/sf {scalefont setfont} bdef
|
||||
/ef {eofill}bdef
|
||||
/pc {closepath stroke}bdef
|
||||
/ps {stroke}bdef
|
||||
/pum {matrix currentmatrix}bdef
|
||||
/pom {setmatrix}bdef
|
||||
/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
|
||||
%%EndResource
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%Page: 1 1
|
||||
%%BeginPageSetup
|
||||
%%EndPageSetup
|
||||
pum
|
||||
0.02834 0.02831 s
|
||||
0 -9746 t
|
||||
/tm matrix currentmatrix def
|
||||
tm setmatrix
|
||||
-1929 -2247 t
|
||||
1 1 s
|
||||
1.000 1.000 1.000 c 7057 4787 m 5324 4787 l 5324 3358 l 8790 3358 l
|
||||
8790 4787 l 7057 4787 l p ef
|
||||
0 lw 1 lj 0.003 0.003 0.003 c 7057 4787 m 5324 4787 l 5324 3358 l 8789 3358 l
|
||||
8789 4787 l 7057 4787 l pc
|
||||
pum
|
||||
6228 4293 t
|
||||
52 0 m 52 -437 l 111 -437 l 111 -48 l 332 -48 l 332 0 l p ef
|
||||
747 -121 m 747 -80 732 -49 700 -27 ct 669 -5 624 6 567 6 ct 460 6 399 -31 382 -105 ct
|
||||
439 -116 l 446 -90 460 -71 481 -58 ct 503 -46 532 -40 569 -40 ct 607 -40 637 -47 658 -60 ct
|
||||
678 -73 689 -92 689 -118 ct 689 -132 686 -143 679 -152 ct 673 -161 663 -168 652 -174 ct
|
||||
640 -180 626 -185 609 -189 ct 593 -193 575 -197 555 -202 ct 521 -209 494 -217 477 -224 ct
|
||||
459 -232 445 -241 434 -250 ct 424 -259 416 -270 411 -283 ct 405 -296 402 -310 402 -326 ct
|
||||
402 -364 417 -393 445 -413 ct 474 -433 515 -443 568 -443 ct 618 -443 656 -436 682 -421 ct
|
||||
708 -405 727 -380 737 -343 ct 679 -333 l 672 -356 660 -373 642 -383 ct 624 -394 599 -399 568 -399 ct
|
||||
533 -399 506 -393 488 -381 ct 469 -370 460 -353 460 -330 ct 460 -316 464 -305 471 -296 ct
|
||||
478 -287 488 -280 502 -274 ct 515 -268 542 -260 582 -251 ct 595 -248 609 -245 622 -242 ct
|
||||
635 -239 648 -235 660 -231 ct 672 -226 684 -221 695 -215 ct 705 -209 714 -202 722 -193 ct
|
||||
730 -184 736 -174 741 -162 ct 745 -150 747 -137 747 -121 ct p ef
|
||||
1204 -223 m 1204 -178 1195 -138 1178 -105 ct 1160 -71 1135 -45 1103 -27 ct
|
||||
1071 -9 1034 0 991 0 ct 828 0 l 828 -437 l 973 -437 l 1047 -437 1104 -418 1144 -381 ct
|
||||
1184 -344 1204 -291 1204 -223 ct p
|
||||
1145 -223 m 1145 -277 1130 -318 1100 -347 ct 1071 -375 1028 -389 971 -389 ct
|
||||
887 -389 l 887 -47 l 985 -47 l 1017 -47 1045 -54 1069 -69 ct 1093 -83 1112 -103 1125 -129 ct
|
||||
1138 -156 1145 -187 1145 -223 ct p ef
|
||||
1625 -123 m 1625 -84 1611 -54 1583 -32 ct 1554 -11 1515 0 1464 0 ct 1287 0 l
|
||||
1287 -437 l 1446 -437 l 1548 -437 1600 -402 1600 -331 ct 1600 -305 1592 -283 1578 -266 ct
|
||||
1563 -248 1543 -236 1517 -230 ct 1551 -226 1578 -215 1597 -195 ct 1616 -176 1625 -152 1625 -123 ct
|
||||
p
|
||||
1540 -324 m 1540 -347 1532 -364 1516 -374 ct 1500 -384 1476 -389 1446 -389 ct
|
||||
1346 -389 l 1346 -251 l 1446 -251 l 1477 -251 1501 -257 1517 -269 ct 1532 -281 1540 -299 1540 -324 ct
|
||||
p
|
||||
1565 -128 m 1565 -179 1529 -205 1457 -205 ct 1346 -205 l 1346 -47 l 1461 -47 l
|
||||
1498 -47 1524 -54 1540 -68 ct 1557 -81 1565 -101 1565 -128 ct p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 7057 3358 m 5324 3358 l 5324 2248 l 8790 2248 l
|
||||
8790 3358 l 7057 3358 l p ef
|
||||
0.003 0.003 0.003 c 7057 3358 m 5324 3358 l 5324 2247 l 8789 2247 l 8789 3358 l
|
||||
7057 3358 l pc
|
||||
pum
|
||||
5821 3023 t
|
||||
361 0 m 247 -181 l 111 -181 l 111 0 l 52 0 l 52 -437 l 258 -437 l
|
||||
307 -437 345 -426 372 -404 ct 398 -382 412 -351 412 -312 ct 412 -279 402 -252 383 -230 ct
|
||||
364 -208 338 -194 305 -188 ct 429 0 l p
|
||||
352 -311 m 352 -337 344 -356 326 -369 ct 309 -383 284 -389 252 -389 ct 111 -389 l
|
||||
111 -228 l 254 -228 l 285 -228 310 -235 327 -250 ct 344 -265 352 -285 352 -311 ct
|
||||
p ef
|
||||
784 -168 m 784 -109 772 -66 746 -37 ct 720 -8 682 6 633 6 ct 584 6 547 -9 522 -39 ct
|
||||
497 -68 485 -112 485 -168 ct 485 -284 535 -342 635 -342 ct 686 -342 724 -328 748 -299 ct
|
||||
772 -271 784 -227 784 -168 ct p
|
||||
726 -168 m 726 -214 719 -248 705 -269 ct 692 -290 668 -300 636 -300 ct 603 -300 580 -290 565 -268 ct
|
||||
551 -247 543 -214 543 -168 ct 543 -124 550 -91 565 -68 ct 579 -46 602 -35 633 -35 ct
|
||||
666 -35 690 -46 704 -67 ct 719 -89 726 -122 726 -168 ct p ef
|
||||
908 -335 m 908 -123 l 908 -101 911 -84 915 -71 ct 919 -59 926 -50 936 -45 ct
|
||||
945 -40 959 -37 978 -37 ct 1004 -37 1026 -46 1041 -64 ct 1057 -83 1064 -108 1064 -141 ct
|
||||
1064 -335 l 1120 -335 l 1120 -72 l 1120 -33 1121 -9 1122 0 ct 1069 0 l
|
||||
1069 -1 1069 -4 1069 -8 ct 1068 -13 1068 -18 1068 -24 ct 1068 -30 1067 -41 1067 -57 ct
|
||||
1066 -57 l 1053 -34 1038 -18 1021 -8 ct 1005 1 984 6 959 6 ct 922 6 895 -3 878 -21 ct
|
||||
861 -40 852 -70 852 -112 ct 852 -335 l p ef
|
||||
1336 -2 m 1317 2 1299 5 1279 5 ct 1235 5 1212 -20 1212 -71 ct 1212 -295 l 1174 -295 l
|
||||
1174 -335 l 1215 -335 l 1231 -411 l 1268 -411 l 1268 -335 l 1330 -335 l
|
||||
1330 -295 l 1268 -295 l 1268 -83 l 1268 -67 1271 -56 1276 -49 ct 1281 -43 1291 -39 1304 -39 ct
|
||||
1311 -39 1322 -41 1336 -44 ct p ef
|
||||
1427 -156 m 1427 -118 1435 -88 1450 -67 ct 1466 -46 1490 -36 1520 -36 ct 1544 -36 1564 -41 1578 -50 ct
|
||||
1593 -60 1603 -72 1608 -87 ct 1657 -73 l 1637 -20 1591 6 1520 6 ct 1471 6 1433 -9 1407 -38 ct
|
||||
1381 -68 1368 -112 1368 -170 ct 1368 -225 1381 -268 1407 -297 ct 1433 -327 1470 -342 1518 -342 ct
|
||||
1617 -342 1666 -282 1666 -163 ct 1666 -156 l p
|
||||
1608 -199 m 1605 -234 1596 -260 1581 -276 ct 1566 -292 1545 -300 1517 -300 ct
|
||||
1490 -300 1469 -291 1453 -273 ct 1437 -255 1428 -230 1427 -199 ct p ef
|
||||
1738 0 m 1738 -257 l 1738 -281 1737 -307 1736 -335 ct 1789 -335 l 1791 -297 1791 -275 1791 -267 ct
|
||||
1793 -267 l 1801 -296 1812 -315 1823 -326 ct 1835 -336 1851 -342 1872 -342 ct
|
||||
1880 -342 1887 -341 1895 -339 ct 1895 -287 l 1887 -289 1878 -291 1865 -291 ct
|
||||
1842 -291 1824 -281 1812 -261 ct 1800 -241 1794 -212 1794 -175 ct 1794 0 l p ef
|
||||
2409 0 m 2359 -128 l 2160 -128 l 2110 0 l 2048 0 l 2227 -437 l 2294 -437 l
|
||||
2469 0 l p
|
||||
2259 -392 m 2257 -384 l 2251 -366 2244 -344 2234 -318 ct 2178 -174 l 2341 -174 l
|
||||
2285 -318 l 2279 -332 2274 -349 2268 -366 ct p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 15857 3360 m 14124 3360 l 14124 2250 l 17590 2250 l
|
||||
17590 3360 l 15857 3360 l p ef
|
||||
0.003 0.003 0.003 c 15856 3360 m 14124 3360 l 14124 2249 l 17589 2249 l
|
||||
17589 3360 l 15856 3360 l pc
|
||||
pum
|
||||
14604 3025 t
|
||||
361 0 m 247 -181 l 111 -181 l 111 0 l 52 0 l 52 -437 l 258 -437 l
|
||||
307 -437 345 -426 372 -404 ct 398 -382 412 -351 412 -312 ct 412 -279 402 -252 383 -230 ct
|
||||
364 -208 338 -194 305 -188 ct 429 0 l p
|
||||
352 -311 m 352 -337 344 -356 326 -369 ct 309 -383 284 -389 252 -389 ct 111 -389 l
|
||||
111 -228 l 254 -228 l 285 -228 310 -235 327 -250 ct 344 -265 352 -285 352 -311 ct
|
||||
p ef
|
||||
784 -168 m 784 -109 772 -66 746 -37 ct 720 -8 682 6 633 6 ct 584 6 547 -9 522 -39 ct
|
||||
497 -68 485 -112 485 -168 ct 485 -284 535 -342 635 -342 ct 686 -342 724 -328 748 -299 ct
|
||||
772 -271 784 -227 784 -168 ct p
|
||||
726 -168 m 726 -214 719 -248 705 -269 ct 692 -290 668 -300 636 -300 ct 603 -300 580 -290 565 -268 ct
|
||||
551 -247 543 -214 543 -168 ct 543 -124 550 -91 565 -68 ct 579 -46 602 -35 633 -35 ct
|
||||
666 -35 690 -46 704 -67 ct 719 -89 726 -122 726 -168 ct p ef
|
||||
908 -335 m 908 -123 l 908 -101 911 -84 915 -71 ct 919 -59 926 -50 936 -45 ct
|
||||
945 -40 959 -37 978 -37 ct 1004 -37 1026 -46 1041 -64 ct 1057 -83 1064 -108 1064 -141 ct
|
||||
1064 -335 l 1120 -335 l 1120 -72 l 1120 -33 1121 -9 1122 0 ct 1069 0 l
|
||||
1069 -1 1069 -4 1069 -8 ct 1068 -13 1068 -18 1068 -24 ct 1068 -30 1067 -41 1067 -57 ct
|
||||
1066 -57 l 1053 -34 1038 -18 1021 -8 ct 1005 1 984 6 959 6 ct 922 6 895 -3 878 -21 ct
|
||||
861 -40 852 -70 852 -112 ct 852 -335 l p ef
|
||||
1336 -2 m 1317 2 1299 5 1279 5 ct 1235 5 1212 -20 1212 -71 ct 1212 -295 l 1174 -295 l
|
||||
1174 -335 l 1215 -335 l 1231 -411 l 1268 -411 l 1268 -335 l 1330 -335 l
|
||||
1330 -295 l 1268 -295 l 1268 -83 l 1268 -67 1271 -56 1276 -49 ct 1281 -43 1291 -39 1304 -39 ct
|
||||
1311 -39 1322 -41 1336 -44 ct p ef
|
||||
1427 -156 m 1427 -118 1435 -88 1450 -67 ct 1466 -46 1490 -36 1520 -36 ct 1544 -36 1564 -41 1578 -50 ct
|
||||
1593 -60 1603 -72 1608 -87 ct 1657 -73 l 1637 -20 1591 6 1520 6 ct 1471 6 1433 -9 1407 -38 ct
|
||||
1381 -68 1368 -112 1368 -170 ct 1368 -225 1381 -268 1407 -297 ct 1433 -327 1470 -342 1518 -342 ct
|
||||
1617 -342 1666 -282 1666 -163 ct 1666 -156 l p
|
||||
1608 -199 m 1605 -234 1596 -260 1581 -276 ct 1566 -292 1545 -300 1517 -300 ct
|
||||
1490 -300 1469 -291 1453 -273 ct 1437 -255 1428 -230 1427 -199 ct p ef
|
||||
1738 0 m 1738 -257 l 1738 -281 1737 -307 1736 -335 ct 1789 -335 l 1791 -297 1791 -275 1791 -267 ct
|
||||
1793 -267 l 1801 -296 1812 -315 1823 -326 ct 1835 -336 1851 -342 1872 -342 ct
|
||||
1880 -342 1887 -341 1895 -339 ct 1895 -287 l 1887 -289 1878 -291 1865 -291 ct
|
||||
1842 -291 1824 -281 1812 -261 ct 1800 -241 1794 -212 1794 -175 ct 1794 0 l p ef
|
||||
2472 -123 m 2472 -84 2458 -54 2430 -32 ct 2401 -11 2362 0 2311 0 ct 2134 0 l
|
||||
2134 -437 l 2293 -437 l 2395 -437 2447 -402 2447 -331 ct 2447 -305 2439 -283 2425 -266 ct
|
||||
2410 -248 2390 -236 2364 -230 ct 2398 -226 2425 -215 2444 -195 ct 2463 -176 2472 -152 2472 -123 ct
|
||||
p
|
||||
2387 -324 m 2387 -347 2379 -364 2363 -374 ct 2347 -384 2323 -389 2293 -389 ct
|
||||
2193 -389 l 2193 -251 l 2293 -251 l 2324 -251 2348 -257 2364 -269 ct 2379 -281 2387 -299 2387 -324 ct
|
||||
p
|
||||
2412 -128 m 2412 -179 2376 -205 2304 -205 ct 2193 -205 l 2193 -47 l 2308 -47 l
|
||||
2345 -47 2371 -54 2387 -68 ct 2404 -81 2412 -101 2412 -128 ct p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 15857 4789 m 14124 4789 l 14124 3360 l 17590 3360 l
|
||||
17590 4789 l 15857 4789 l p ef
|
||||
0.003 0.003 0.003 c 15856 4789 m 14124 4789 l 14124 3360 l 17589 3360 l
|
||||
17589 4789 l 15856 4789 l pc
|
||||
pum
|
||||
15028 4295 t
|
||||
52 0 m 52 -437 l 111 -437 l 111 -48 l 332 -48 l 332 0 l p ef
|
||||
747 -121 m 747 -80 732 -49 700 -27 ct 669 -5 624 6 567 6 ct 460 6 399 -31 382 -105 ct
|
||||
439 -116 l 446 -90 460 -71 481 -58 ct 503 -46 532 -40 569 -40 ct 607 -40 637 -47 658 -60 ct
|
||||
678 -73 689 -92 689 -118 ct 689 -132 686 -143 679 -152 ct 673 -161 663 -168 652 -174 ct
|
||||
640 -180 626 -185 609 -189 ct 593 -193 575 -197 555 -202 ct 521 -209 494 -217 477 -224 ct
|
||||
459 -232 445 -241 434 -250 ct 424 -259 416 -270 411 -283 ct 405 -296 402 -310 402 -326 ct
|
||||
402 -364 417 -393 445 -413 ct 474 -433 515 -443 568 -443 ct 618 -443 656 -436 682 -421 ct
|
||||
708 -405 727 -380 737 -343 ct 679 -333 l 672 -356 660 -373 642 -383 ct 624 -394 599 -399 568 -399 ct
|
||||
533 -399 506 -393 488 -381 ct 469 -370 460 -353 460 -330 ct 460 -316 464 -305 471 -296 ct
|
||||
478 -287 488 -280 502 -274 ct 515 -268 542 -260 582 -251 ct 595 -248 609 -245 622 -242 ct
|
||||
635 -239 648 -235 660 -231 ct 672 -226 684 -221 695 -215 ct 705 -209 714 -202 722 -193 ct
|
||||
730 -184 736 -174 741 -162 ct 745 -150 747 -137 747 -121 ct p ef
|
||||
1204 -223 m 1204 -178 1195 -138 1178 -105 ct 1160 -71 1135 -45 1103 -27 ct
|
||||
1071 -9 1034 0 991 0 ct 828 0 l 828 -437 l 973 -437 l 1047 -437 1104 -418 1144 -381 ct
|
||||
1184 -344 1204 -291 1204 -223 ct p
|
||||
1145 -223 m 1145 -277 1130 -318 1100 -347 ct 1071 -375 1028 -389 971 -389 ct
|
||||
887 -389 l 887 -47 l 985 -47 l 1017 -47 1045 -54 1069 -69 ct 1093 -83 1112 -103 1125 -129 ct
|
||||
1138 -156 1145 -187 1145 -223 ct p ef
|
||||
1625 -123 m 1625 -84 1611 -54 1583 -32 ct 1554 -11 1515 0 1464 0 ct 1287 0 l
|
||||
1287 -437 l 1446 -437 l 1548 -437 1600 -402 1600 -331 ct 1600 -305 1592 -283 1578 -266 ct
|
||||
1563 -248 1543 -236 1517 -230 ct 1551 -226 1578 -215 1597 -195 ct 1616 -176 1625 -152 1625 -123 ct
|
||||
p
|
||||
1540 -324 m 1540 -347 1532 -364 1516 -374 ct 1500 -384 1476 -389 1446 -389 ct
|
||||
1346 -389 l 1346 -251 l 1446 -251 l 1477 -251 1501 -257 1517 -269 ct 1532 -281 1540 -299 1540 -324 ct
|
||||
p
|
||||
1565 -128 m 1565 -179 1529 -205 1457 -205 ct 1346 -205 l 1346 -47 l 1461 -47 l
|
||||
1498 -47 1524 -54 1540 -68 ct 1557 -81 1565 -101 1565 -128 ct p ef
|
||||
pom
|
||||
6991 4788 m 6987 11990 l ps
|
||||
15790 4790 m 15786 11882 l ps
|
||||
1 lw 6984 7131 m 15216 7131 l ps
|
||||
15232 7280 m 15764 7161 l 15775 7158 l 15785 7152 l 15792 7142 l 15794 7132 l
|
||||
15792 7120 l 15785 7110 l 15775 7104 l 15764 7101 l 15232 6982 l 15228 6982 l
|
||||
15226 6981 l 15215 6983 l 15205 6990 l 15198 7000 l 15196 7011 l 15196 7251 l
|
||||
15198 7262 l 15205 7272 l 15215 7279 l 15226 7281 l 15228 7281 l 15232 7280 l
|
||||
p ef
|
||||
pum
|
||||
9660 6996 t
|
||||
52 0 m 52 -437 l 111 -437 l 111 -48 l 332 -48 l 332 0 l p ef
|
||||
747 -121 m 747 -80 732 -49 700 -27 ct 669 -5 624 6 567 6 ct 460 6 399 -31 382 -105 ct
|
||||
439 -116 l 446 -90 460 -71 481 -58 ct 503 -46 532 -40 569 -40 ct 607 -40 637 -47 658 -60 ct
|
||||
678 -73 689 -92 689 -118 ct 689 -132 686 -143 679 -152 ct 673 -161 663 -168 652 -174 ct
|
||||
640 -180 626 -185 609 -189 ct 593 -193 575 -197 555 -202 ct 521 -209 494 -217 477 -224 ct
|
||||
459 -232 445 -241 434 -250 ct 424 -259 416 -270 411 -283 ct 405 -296 402 -310 402 -326 ct
|
||||
402 -364 417 -393 445 -413 ct 474 -433 515 -443 568 -443 ct 618 -443 656 -436 682 -421 ct
|
||||
708 -405 727 -380 737 -343 ct 679 -333 l 672 -356 660 -373 642 -383 ct 624 -394 599 -399 568 -399 ct
|
||||
533 -399 506 -393 488 -381 ct 469 -370 460 -353 460 -330 ct 460 -316 464 -305 471 -296 ct
|
||||
478 -287 488 -280 502 -274 ct 515 -268 542 -260 582 -251 ct 595 -248 609 -245 622 -242 ct
|
||||
635 -239 648 -235 660 -231 ct 672 -226 684 -221 695 -215 ct 705 -209 714 -202 722 -193 ct
|
||||
730 -184 736 -174 741 -162 ct 745 -150 747 -137 747 -121 ct p ef
|
||||
1138 0 m 1088 -128 l 889 -128 l 839 0 l 777 0 l 956 -437 l 1023 -437 l
|
||||
1198 0 l p
|
||||
988 -392 m 986 -384 l 980 -366 973 -344 963 -318 ct 907 -174 l 1070 -174 l
|
||||
1014 -318 l 1008 -332 1003 -349 997 -366 ct p ef
|
||||
1400 0 m 1400 -437 l 1459 -437 l 1459 0 l p ef
|
||||
1774 0 m 1774 -213 l 1774 -235 1772 -252 1767 -264 ct 1763 -276 1756 -285 1747 -291 ct
|
||||
1737 -296 1723 -299 1705 -299 ct 1678 -299 1657 -289 1641 -271 ct 1626 -253 1618 -227 1618 -194 ct
|
||||
1618 0 l 1562 0 l 1562 -264 l 1562 -303 1561 -327 1560 -335 ct 1613 -335 l
|
||||
1613 -334 1613 -332 1613 -327 ct 1614 -323 1614 -317 1614 -311 ct 1615 -306 1615 -294 1615 -278 ct
|
||||
1616 -278 l 1629 -301 1644 -318 1661 -327 ct 1678 -337 1699 -342 1724 -342 ct
|
||||
1760 -342 1787 -333 1804 -314 ct 1821 -296 1830 -266 1830 -224 ct 1830 0 l p ef
|
||||
2043 -2 m 2024 2 2006 5 1986 5 ct 1942 5 1919 -20 1919 -71 ct 1919 -295 l 1881 -295 l
|
||||
1881 -335 l 1922 -335 l 1938 -411 l 1975 -411 l 1975 -335 l 2037 -335 l
|
||||
2037 -295 l 1975 -295 l 1975 -83 l 1975 -67 1978 -56 1983 -49 ct 1988 -43 1998 -39 2011 -39 ct
|
||||
2018 -39 2029 -41 2043 -44 ct p ef
|
||||
2133 -156 m 2133 -118 2141 -88 2156 -67 ct 2172 -46 2196 -36 2226 -36 ct 2250 -36 2270 -41 2284 -50 ct
|
||||
2299 -60 2309 -72 2314 -87 ct 2363 -73 l 2343 -20 2297 6 2226 6 ct 2177 6 2139 -9 2113 -38 ct
|
||||
2087 -68 2074 -112 2074 -170 ct 2074 -225 2087 -268 2113 -297 ct 2139 -327 2176 -342 2224 -342 ct
|
||||
2323 -342 2372 -282 2372 -163 ct 2372 -156 l p
|
||||
2314 -199 m 2311 -234 2302 -260 2287 -276 ct 2272 -292 2251 -300 2223 -300 ct
|
||||
2196 -300 2175 -291 2159 -273 ct 2143 -255 2134 -230 2133 -199 ct p ef
|
||||
2444 0 m 2444 -257 l 2444 -281 2443 -307 2442 -335 ct 2495 -335 l 2497 -297 2497 -275 2497 -267 ct
|
||||
2499 -267 l 2507 -296 2518 -315 2529 -326 ct 2541 -336 2557 -342 2578 -342 ct
|
||||
2586 -342 2593 -341 2601 -339 ct 2601 -287 l 2593 -289 2584 -291 2571 -291 ct
|
||||
2548 -291 2530 -281 2518 -261 ct 2506 -241 2500 -212 2500 -175 ct 2500 0 l p ef
|
||||
2698 -156 m 2698 -118 2706 -88 2721 -67 ct 2737 -46 2761 -36 2791 -36 ct 2815 -36 2835 -41 2849 -50 ct
|
||||
2864 -60 2874 -72 2879 -87 ct 2928 -73 l 2908 -20 2862 6 2791 6 ct 2742 6 2704 -9 2678 -38 ct
|
||||
2652 -68 2639 -112 2639 -170 ct 2639 -225 2652 -268 2678 -297 ct 2704 -327 2741 -342 2789 -342 ct
|
||||
2888 -342 2937 -282 2937 -163 ct 2937 -156 l p
|
||||
2879 -199 m 2876 -234 2867 -260 2852 -276 ct 2837 -292 2816 -300 2788 -300 ct
|
||||
2761 -300 2740 -291 2724 -273 ct 2708 -255 2699 -230 2698 -199 ct p ef
|
||||
3260 -93 m 3260 -61 3248 -37 3224 -20 ct 3200 -2 3166 6 3123 6 ct 3082 6 3049 -1 3027 -14 ct
|
||||
3004 -28 2989 -50 2983 -79 ct 3032 -88 l 3037 -70 3047 -57 3061 -49 ct 3076 -40 3097 -36 3123 -36 ct
|
||||
3152 -36 3172 -41 3186 -49 ct 3199 -58 3205 -71 3205 -88 ct 3205 -102 3201 -112 3192 -121 ct
|
||||
3183 -129 3168 -136 3148 -141 ct 3108 -152 l 3076 -160 3053 -168 3039 -176 ct
|
||||
3026 -184 3015 -194 3007 -205 ct 3000 -216 2996 -230 2996 -247 ct 2996 -277 3007 -301 3029 -317 ct
|
||||
3051 -333 3082 -341 3124 -341 ct 3161 -341 3190 -334 3212 -321 ct 3234 -308 3248 -287 3254 -259 ct
|
||||
3203 -252 l 3200 -267 3192 -279 3178 -287 ct 3165 -295 3147 -299 3124 -299 ct
|
||||
3099 -299 3080 -295 3068 -287 ct 3056 -279 3050 -268 3050 -252 ct 3050 -243 3053 -235 3058 -229 ct
|
||||
3063 -223 3070 -217 3080 -213 ct 3089 -209 3110 -203 3141 -195 ct 3171 -188 3192 -181 3205 -174 ct
|
||||
3218 -168 3228 -161 3236 -153 ct 3243 -146 3249 -137 3253 -127 ct 3257 -117 3260 -106 3260 -93 ct
|
||||
p ef
|
||||
3454 -2 m 3435 2 3417 5 3397 5 ct 3353 5 3330 -20 3330 -71 ct 3330 -295 l 3292 -295 l
|
||||
3292 -335 l 3333 -335 l 3349 -411 l 3386 -411 l 3386 -335 l 3448 -335 l
|
||||
3448 -295 l 3386 -295 l 3386 -83 l 3386 -67 3389 -56 3394 -49 ct 3399 -43 3409 -39 3422 -39 ct
|
||||
3429 -39 3440 -41 3454 -44 ct p ef
|
||||
pom
|
||||
7371 8803 m 15795 8803 l ps
|
||||
7360 8704 m 7005 8783 l 6998 8785 l 6991 8789 l 6986 8796 l 6985 8803 l
|
||||
6986 8810 l 6991 8817 l 6998 8821 l 7005 8823 l 7360 8902 l 7362 8902 l
|
||||
7364 8903 l 7371 8901 l 7378 8897 l 7382 8890 l 7384 8883 l 7384 8723 l
|
||||
7382 8716 l 7378 8709 l 7371 8704 l 7364 8703 l 7362 8703 l 7360 8704 l
|
||||
p ef
|
||||
pum
|
||||
10049 8668 t
|
||||
52 0 m 52 -437 l 111 -437 l 111 -48 l 332 -48 l 332 0 l p ef
|
||||
747 -121 m 747 -80 732 -49 700 -27 ct 669 -5 624 6 567 6 ct 460 6 399 -31 382 -105 ct
|
||||
439 -116 l 446 -90 460 -71 481 -58 ct 503 -46 532 -40 569 -40 ct 607 -40 637 -47 658 -60 ct
|
||||
678 -73 689 -92 689 -118 ct 689 -132 686 -143 679 -152 ct 673 -161 663 -168 652 -174 ct
|
||||
640 -180 626 -185 609 -189 ct 593 -193 575 -197 555 -202 ct 521 -209 494 -217 477 -224 ct
|
||||
459 -232 445 -241 434 -250 ct 424 -259 416 -270 411 -283 ct 405 -296 402 -310 402 -326 ct
|
||||
402 -364 417 -393 445 -413 ct 474 -433 515 -443 568 -443 ct 618 -443 656 -436 682 -421 ct
|
||||
708 -405 727 -380 737 -343 ct 679 -333 l 672 -356 660 -373 642 -383 ct 624 -394 599 -399 568 -399 ct
|
||||
533 -399 506 -393 488 -381 ct 469 -370 460 -353 460 -330 ct 460 -316 464 -305 471 -296 ct
|
||||
478 -287 488 -280 502 -274 ct 515 -268 542 -260 582 -251 ct 595 -248 609 -245 622 -242 ct
|
||||
635 -239 648 -235 660 -231 ct 672 -226 684 -221 695 -215 ct 705 -209 714 -202 722 -193 ct
|
||||
730 -184 736 -174 741 -162 ct 745 -150 747 -137 747 -121 ct p ef
|
||||
1138 0 m 1088 -128 l 889 -128 l 839 0 l 777 0 l 956 -437 l 1023 -437 l
|
||||
1198 0 l p
|
||||
988 -392 m 986 -384 l 980 -366 973 -344 963 -318 ct 907 -174 l 1070 -174 l
|
||||
1014 -318 l 1008 -332 1003 -349 997 -366 ct p ef
|
||||
1769 -223 m 1769 -178 1760 -138 1743 -105 ct 1725 -71 1700 -45 1668 -27 ct
|
||||
1636 -9 1599 0 1556 0 ct 1393 0 l 1393 -437 l 1538 -437 l 1612 -437 1669 -418 1709 -381 ct
|
||||
1749 -344 1769 -291 1769 -223 ct p
|
||||
1710 -223 m 1710 -277 1695 -318 1665 -347 ct 1636 -375 1593 -389 1536 -389 ct
|
||||
1452 -389 l 1452 -47 l 1550 -47 l 1582 -47 1610 -54 1634 -69 ct 1658 -83 1677 -103 1690 -129 ct
|
||||
1703 -156 1710 -187 1710 -223 ct p ef
|
||||
1928 6 m 1895 6 1869 -3 1852 -20 ct 1835 -38 1827 -63 1827 -94 ct 1827 -128 1838 -155 1861 -174 ct
|
||||
1884 -192 1921 -202 1972 -203 ct 2047 -205 l 2047 -223 l 2047 -250 2041 -270 2030 -282 ct
|
||||
2018 -293 2000 -299 1975 -299 ct 1950 -299 1932 -295 1921 -286 ct 1909 -278 1902 -264 1900 -246 ct
|
||||
1842 -251 l 1851 -312 1896 -342 1976 -342 ct 2019 -342 2050 -332 2072 -313 ct
|
||||
2093 -293 2104 -265 2104 -229 ct 2104 -84 l 2104 -68 2106 -55 2110 -47 ct 2114 -39 2123 -34 2135 -34 ct
|
||||
2140 -34 2146 -35 2153 -37 ct 2153 -2 l 2139 1 2125 3 2110 3 ct 2089 3 2074 -2 2065 -13 ct
|
||||
2056 -24 2050 -41 2049 -64 ct 2047 -64 l 2033 -39 2016 -20 1997 -10 ct 1978 1 1955 6 1928 6 ct
|
||||
p
|
||||
1941 -36 m 1962 -36 1980 -40 1996 -50 ct 2012 -59 2024 -72 2033 -88 ct 2043 -104 2047 -121 2047 -138 ct
|
||||
2047 -166 l 1986 -164 l 1960 -164 1940 -161 1926 -156 ct 1913 -151 1902 -144 1895 -133 ct
|
||||
1888 -123 1884 -109 1884 -93 ct 1884 -75 1889 -60 1899 -51 ct 1909 -41 1923 -36 1941 -36 ct
|
||||
p ef
|
||||
2325 -2 m 2306 2 2288 5 2268 5 ct 2224 5 2201 -20 2201 -71 ct 2201 -295 l 2163 -295 l
|
||||
2163 -335 l 2204 -335 l 2220 -411 l 2257 -411 l 2257 -335 l 2319 -335 l
|
||||
2319 -295 l 2257 -295 l 2257 -83 l 2257 -67 2260 -56 2265 -49 ct 2270 -43 2280 -39 2293 -39 ct
|
||||
2300 -39 2311 -41 2325 -44 ct p ef
|
||||
2457 6 m 2424 6 2398 -3 2381 -20 ct 2364 -38 2356 -63 2356 -94 ct 2356 -128 2367 -155 2390 -174 ct
|
||||
2413 -192 2450 -202 2501 -203 ct 2576 -205 l 2576 -223 l 2576 -250 2570 -270 2559 -282 ct
|
||||
2547 -293 2529 -299 2504 -299 ct 2479 -299 2461 -295 2450 -286 ct 2438 -278 2431 -264 2429 -246 ct
|
||||
2371 -251 l 2380 -312 2425 -342 2505 -342 ct 2548 -342 2579 -332 2601 -313 ct
|
||||
2622 -293 2633 -265 2633 -229 ct 2633 -84 l 2633 -68 2635 -55 2639 -47 ct 2643 -39 2652 -34 2664 -34 ct
|
||||
2669 -34 2675 -35 2682 -37 ct 2682 -2 l 2668 1 2654 3 2639 3 ct 2618 3 2603 -2 2594 -13 ct
|
||||
2585 -24 2579 -41 2578 -64 ct 2576 -64 l 2562 -39 2545 -20 2526 -10 ct 2507 1 2484 6 2457 6 ct
|
||||
p
|
||||
2470 -36 m 2491 -36 2509 -40 2525 -50 ct 2541 -59 2553 -72 2562 -88 ct 2572 -104 2576 -121 2576 -138 ct
|
||||
2576 -166 l 2515 -164 l 2489 -164 2469 -161 2455 -156 ct 2442 -151 2431 -144 2424 -133 ct
|
||||
2417 -123 2413 -109 2413 -93 ct 2413 -75 2418 -60 2428 -51 ct 2438 -41 2452 -36 2470 -36 ct
|
||||
p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 4417 6942 m 1930 6942 l 1930 5196 l 6904 5196 l
|
||||
6904 6942 l 4417 6942 l p ef
|
||||
0 lw 0.003 0.003 0.003 c 4417 6941 m 1929 6941 l 1929 5195 l 6904 5195 l
|
||||
6904 6941 l 4417 6941 l pc
|
||||
pum
|
||||
2477 5934 t
|
||||
361 0 m 247 -181 l 111 -181 l 111 0 l 52 0 l 52 -437 l 258 -437 l
|
||||
307 -437 345 -426 372 -404 ct 398 -382 412 -351 412 -312 ct 412 -279 402 -252 383 -230 ct
|
||||
364 -208 338 -194 305 -188 ct 429 0 l p
|
||||
352 -311 m 352 -337 344 -356 326 -369 ct 309 -383 284 -389 252 -389 ct 111 -389 l
|
||||
111 -228 l 254 -228 l 285 -228 310 -235 327 -250 ct 344 -265 352 -285 352 -311 ct
|
||||
p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
896 -169 m 896 -125 903 -92 917 -70 ct 931 -49 953 -38 981 -38 ct 1001 -38 1017 -43 1031 -54 ct
|
||||
1044 -65 1052 -81 1055 -104 ct 1112 -100 l 1107 -68 1094 -42 1071 -23 ct 1047 -3 1018 6 982 6 ct
|
||||
936 6 900 -9 875 -38 ct 850 -68 838 -111 838 -168 ct 838 -224 850 -268 875 -297 ct
|
||||
900 -327 936 -342 982 -342 ct 1016 -342 1045 -333 1067 -315 ct 1090 -297 1104 -273 1110 -242 ct
|
||||
1053 -237 l 1050 -256 1042 -271 1031 -282 ct 1019 -292 1002 -298 980 -298 ct
|
||||
951 -298 929 -288 916 -269 ct 903 -249 896 -216 896 -169 ct p ef
|
||||
1215 -156 m 1215 -118 1223 -88 1238 -67 ct 1254 -46 1278 -36 1308 -36 ct 1332 -36 1352 -41 1366 -50 ct
|
||||
1381 -60 1391 -72 1396 -87 ct 1445 -73 l 1425 -20 1379 6 1308 6 ct 1259 6 1221 -9 1195 -38 ct
|
||||
1169 -68 1156 -112 1156 -170 ct 1156 -225 1169 -268 1195 -297 ct 1221 -327 1258 -342 1306 -342 ct
|
||||
1405 -342 1454 -282 1454 -163 ct 1454 -156 l p
|
||||
1396 -199 m 1393 -234 1384 -260 1369 -276 ct 1354 -292 1333 -300 1305 -300 ct
|
||||
1278 -300 1257 -291 1241 -273 ct 1225 -255 1216 -230 1215 -199 ct p ef
|
||||
1524 -407 m 1524 -460 l 1580 -460 l 1580 -407 l p
|
||||
1524 0 m 1524 -335 l 1580 -335 l 1580 0 l p ef
|
||||
1813 0 m 1747 0 l 1625 -335 l 1685 -335 l 1758 -117 l 1761 -109 1768 -84 1780 -44 ct
|
||||
1791 -80 l 1803 -117 l 1879 -335 l 1938 -335 l p ef
|
||||
2026 -156 m 2026 -118 2034 -88 2049 -67 ct 2065 -46 2089 -36 2119 -36 ct 2143 -36 2163 -41 2177 -50 ct
|
||||
2192 -60 2202 -72 2207 -87 ct 2256 -73 l 2236 -20 2190 6 2119 6 ct 2070 6 2032 -9 2006 -38 ct
|
||||
1980 -68 1967 -112 1967 -170 ct 1967 -225 1980 -268 2006 -297 ct 2032 -327 2069 -342 2117 -342 ct
|
||||
2216 -342 2265 -282 2265 -163 ct 2265 -156 l p
|
||||
2207 -199 m 2204 -234 2195 -260 2180 -276 ct 2165 -292 2144 -300 2116 -300 ct
|
||||
2089 -300 2068 -291 2052 -273 ct 2036 -255 2027 -230 2026 -199 ct p ef
|
||||
2864 -121 m 2864 -80 2849 -49 2817 -27 ct 2786 -5 2741 6 2684 6 ct 2577 6 2516 -31 2499 -105 ct
|
||||
2556 -116 l 2563 -90 2577 -71 2598 -58 ct 2620 -46 2649 -40 2686 -40 ct 2724 -40 2754 -47 2775 -60 ct
|
||||
2795 -73 2806 -92 2806 -118 ct 2806 -132 2803 -143 2796 -152 ct 2790 -161 2780 -168 2769 -174 ct
|
||||
2757 -180 2743 -185 2726 -189 ct 2710 -193 2692 -197 2672 -202 ct 2638 -209 2611 -217 2594 -224 ct
|
||||
2576 -232 2562 -241 2551 -250 ct 2541 -259 2533 -270 2528 -283 ct 2522 -296 2519 -310 2519 -326 ct
|
||||
2519 -364 2534 -393 2562 -413 ct 2591 -433 2632 -443 2685 -443 ct 2735 -443 2773 -436 2799 -421 ct
|
||||
2825 -405 2844 -380 2854 -343 ct 2796 -333 l 2789 -356 2777 -373 2759 -383 ct
|
||||
2741 -394 2716 -399 2685 -399 ct 2650 -399 2623 -393 2605 -381 ct 2586 -370 2577 -353 2577 -330 ct
|
||||
2577 -316 2581 -305 2588 -296 ct 2595 -287 2605 -280 2619 -274 ct 2632 -268 2659 -260 2699 -251 ct
|
||||
2712 -248 2726 -245 2739 -242 ct 2752 -239 2765 -235 2777 -231 ct 2789 -226 2801 -221 2812 -215 ct
|
||||
2822 -209 2831 -202 2839 -193 ct 2847 -184 2853 -174 2858 -162 ct 2862 -150 2864 -137 2864 -121 ct
|
||||
p ef
|
||||
2953 132 m 2938 132 2925 131 2915 128 ct 2915 87 l 2923 88 2931 88 2941 88 ct
|
||||
2976 88 3003 63 3023 12 ct 3029 -2 l 2896 -335 l 2955 -335 l 3026 -150 l
|
||||
3027 -147 3028 -144 3029 -140 ct 3031 -136 3036 -122 3043 -99 ct 3051 -76 3056 -63 3056 -61 ct
|
||||
3078 -122 l 3151 -335 l 3210 -335 l 3081 0 l 3067 36 3055 62 3043 80 ct
|
||||
3031 97 3017 110 3003 119 ct 2988 127 2972 132 2953 132 ct p ef
|
||||
3467 0 m 3467 -213 l 3467 -235 3465 -252 3460 -264 ct 3456 -276 3449 -285 3440 -291 ct
|
||||
3430 -296 3416 -299 3398 -299 ct 3371 -299 3350 -289 3334 -271 ct 3319 -253 3311 -227 3311 -194 ct
|
||||
3311 0 l 3255 0 l 3255 -264 l 3255 -303 3254 -327 3253 -335 ct 3306 -335 l
|
||||
3306 -334 3306 -332 3306 -327 ct 3307 -323 3307 -317 3307 -311 ct 3308 -306 3308 -294 3308 -278 ct
|
||||
3309 -278 l 3322 -301 3337 -318 3354 -327 ct 3371 -337 3392 -342 3417 -342 ct
|
||||
3453 -342 3480 -333 3497 -314 ct 3514 -296 3523 -266 3523 -224 ct 3523 0 l p ef
|
||||
3649 -169 m 3649 -125 3656 -92 3670 -70 ct 3684 -49 3706 -38 3734 -38 ct 3754 -38 3770 -43 3784 -54 ct
|
||||
3797 -65 3805 -81 3808 -104 ct 3865 -100 l 3860 -68 3847 -42 3824 -23 ct 3800 -3 3771 6 3735 6 ct
|
||||
3689 6 3653 -9 3628 -38 ct 3603 -68 3591 -111 3591 -168 ct 3591 -224 3603 -268 3628 -297 ct
|
||||
3653 -327 3689 -342 3735 -342 ct 3769 -342 3798 -333 3820 -315 ct 3843 -297 3857 -273 3863 -242 ct
|
||||
3806 -237 l 3803 -256 3795 -271 3784 -282 ct 3772 -292 3755 -298 3733 -298 ct
|
||||
3704 -298 3682 -288 3669 -269 ct 3656 -249 3649 -216 3649 -169 ct p ef
|
||||
pom
|
||||
pum
|
||||
3393 6645 t
|
||||
227 6 m 191 6 160 0 133 -13 ct 106 -26 86 -45 71 -70 ct 56 -95 49 -124 49 -159 ct
|
||||
49 -437 l 108 -437 l 108 -164 l 108 -124 118 -94 139 -73 ct 159 -52 188 -42 226 -42 ct
|
||||
266 -42 296 -53 318 -74 ct 340 -95 351 -127 351 -168 ct 351 -437 l 410 -437 l
|
||||
410 -164 l 410 -129 402 -98 387 -73 ct 372 -47 351 -28 324 -14 ct 296 -1 264 6 227 6 ct
|
||||
p ef
|
||||
784 -169 m 784 -52 743 6 661 6 ct 609 6 575 -13 557 -52 ct 555 -52 l 556 -50 557 -33 557 1 ct
|
||||
557 132 l 501 132 l 501 -267 l 501 -301 500 -324 499 -335 ct 553 -335 l
|
||||
553 -335 553 -332 554 -327 ct 554 -322 555 -314 555 -303 ct 556 -293 556 -285 556 -282 ct
|
||||
557 -282 l 567 -302 580 -317 597 -327 ct 613 -337 634 -341 661 -341 ct 702 -341 733 -328 754 -300 ct
|
||||
774 -272 784 -229 784 -169 ct p
|
||||
726 -168 m 726 -215 720 -248 707 -268 ct 694 -288 674 -298 647 -298 ct 625 -298 607 -294 595 -284 ct
|
||||
582 -275 573 -261 566 -241 ct 560 -221 557 -195 557 -164 ct 557 -120 564 -87 578 -66 ct
|
||||
592 -45 615 -35 646 -35 ct 674 -35 694 -45 707 -66 ct 720 -86 726 -120 726 -168 ct
|
||||
p ef
|
||||
1066 -54 m 1055 -32 1042 -17 1024 -8 ct 1007 2 986 6 961 6 ct 919 6 888 -8 868 -37 ct
|
||||
848 -65 838 -108 838 -166 ct 838 -283 879 -342 961 -342 ct 986 -342 1008 -337 1025 -328 ct
|
||||
1042 -318 1055 -304 1066 -283 ct 1066 -283 l 1066 -321 l 1066 -460 l 1121 -460 l
|
||||
1121 -69 l 1121 -34 1122 -11 1123 0 ct 1070 0 l 1069 -3 1069 -11 1068 -23 ct
|
||||
1067 -35 1067 -45 1067 -54 ct p
|
||||
896 -168 m 896 -121 902 -88 915 -67 ct 927 -47 947 -37 975 -37 ct 1007 -37 1030 -48 1044 -70 ct
|
||||
1058 -92 1066 -126 1066 -172 ct 1066 -216 1058 -249 1044 -269 ct 1030 -290 1007 -300 976 -300 ct
|
||||
948 -300 928 -290 915 -269 ct 903 -249 896 -215 896 -168 ct p ef
|
||||
1292 6 m 1259 6 1233 -3 1216 -20 ct 1199 -38 1191 -63 1191 -94 ct 1191 -128 1202 -155 1225 -174 ct
|
||||
1248 -192 1285 -202 1336 -203 ct 1411 -205 l 1411 -223 l 1411 -250 1405 -270 1394 -282 ct
|
||||
1382 -293 1364 -299 1339 -299 ct 1314 -299 1296 -295 1285 -286 ct 1273 -278 1266 -264 1264 -246 ct
|
||||
1206 -251 l 1215 -312 1260 -342 1340 -342 ct 1383 -342 1414 -332 1436 -313 ct
|
||||
1457 -293 1468 -265 1468 -229 ct 1468 -84 l 1468 -68 1470 -55 1474 -47 ct 1478 -39 1487 -34 1499 -34 ct
|
||||
1504 -34 1510 -35 1517 -37 ct 1517 -2 l 1503 1 1489 3 1474 3 ct 1453 3 1438 -2 1429 -13 ct
|
||||
1420 -24 1414 -41 1413 -64 ct 1411 -64 l 1397 -39 1380 -20 1361 -10 ct 1342 1 1319 6 1292 6 ct
|
||||
p
|
||||
1305 -36 m 1326 -36 1344 -40 1360 -50 ct 1376 -59 1388 -72 1397 -88 ct 1407 -104 1411 -121 1411 -138 ct
|
||||
1411 -166 l 1350 -164 l 1324 -164 1304 -161 1290 -156 ct 1277 -151 1266 -144 1259 -133 ct
|
||||
1252 -123 1248 -109 1248 -93 ct 1248 -75 1253 -60 1263 -51 ct 1273 -41 1287 -36 1305 -36 ct
|
||||
p ef
|
||||
1690 -2 m 1671 2 1653 5 1633 5 ct 1589 5 1566 -20 1566 -71 ct 1566 -295 l 1528 -295 l
|
||||
1528 -335 l 1569 -335 l 1585 -411 l 1622 -411 l 1622 -335 l 1684 -335 l
|
||||
1684 -295 l 1622 -295 l 1622 -83 l 1622 -67 1625 -56 1630 -49 ct 1635 -43 1645 -39 1658 -39 ct
|
||||
1665 -39 1676 -41 1690 -44 ct p ef
|
||||
1780 -156 m 1780 -118 1788 -88 1803 -67 ct 1819 -46 1843 -36 1873 -36 ct 1897 -36 1917 -41 1931 -50 ct
|
||||
1946 -60 1956 -72 1961 -87 ct 2010 -73 l 1990 -20 1944 6 1873 6 ct 1824 6 1786 -9 1760 -38 ct
|
||||
1734 -68 1721 -112 1721 -170 ct 1721 -225 1734 -268 1760 -297 ct 1786 -327 1823 -342 1871 -342 ct
|
||||
1970 -342 2019 -282 2019 -163 ct 2019 -156 l p
|
||||
1961 -199 m 1958 -234 1949 -260 1934 -276 ct 1919 -292 1898 -300 1870 -300 ct
|
||||
1843 -300 1822 -291 1806 -273 ct 1790 -255 1781 -230 1780 -199 ct p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 4419 9742 m 1932 9742 l 1932 8796 l 6906 8796 l
|
||||
6906 9742 l 4419 9742 l p ef
|
||||
0.003 0.003 0.003 c 4419 9742 m 1931 9742 l 1931 8796 l 6906 8796 l 6906 9742 l
|
||||
4419 9742 l pc
|
||||
pum
|
||||
2538 9490 t
|
||||
242 0 m 181 0 l 3 -437 l 65 -437 l 186 -129 l 212 -52 l 238 -129 l
|
||||
358 -437 l 421 -437 l p ef
|
||||
504 6 m 471 6 445 -3 428 -20 ct 411 -38 403 -63 403 -94 ct 403 -128 414 -155 437 -174 ct
|
||||
460 -192 497 -202 548 -203 ct 623 -205 l 623 -223 l 623 -250 617 -270 606 -282 ct
|
||||
594 -293 576 -299 551 -299 ct 526 -299 508 -295 497 -286 ct 485 -278 478 -264 476 -246 ct
|
||||
418 -251 l 427 -312 472 -342 552 -342 ct 595 -342 626 -332 648 -313 ct 669 -293 680 -265 680 -229 ct
|
||||
680 -84 l 680 -68 682 -55 686 -47 ct 690 -39 699 -34 711 -34 ct 716 -34 722 -35 729 -37 ct
|
||||
729 -2 l 715 1 701 3 686 3 ct 665 3 650 -2 641 -13 ct 632 -24 626 -41 625 -64 ct
|
||||
623 -64 l 609 -39 592 -20 573 -10 ct 554 1 531 6 504 6 ct p
|
||||
517 -36 m 538 -36 556 -40 572 -50 ct 588 -59 600 -72 609 -88 ct 619 -104 623 -121 623 -138 ct
|
||||
623 -166 l 562 -164 l 536 -164 516 -161 502 -156 ct 489 -151 478 -144 471 -133 ct
|
||||
464 -123 460 -109 460 -93 ct 460 -75 465 -60 475 -51 ct 485 -41 499 -36 517 -36 ct
|
||||
p ef
|
||||
772 0 m 772 -460 l 828 -460 l 828 0 l p ef
|
||||
912 -407 m 912 -460 l 968 -460 l 968 -407 l p
|
||||
912 0 m 912 -335 l 968 -335 l 968 0 l p ef
|
||||
1266 -54 m 1255 -32 1242 -17 1224 -8 ct 1207 2 1186 6 1161 6 ct 1119 6 1088 -8 1068 -37 ct
|
||||
1048 -65 1038 -108 1038 -166 ct 1038 -283 1079 -342 1161 -342 ct 1186 -342 1208 -337 1225 -328 ct
|
||||
1242 -318 1255 -304 1266 -283 ct 1266 -283 l 1266 -321 l 1266 -460 l 1321 -460 l
|
||||
1321 -69 l 1321 -34 1322 -11 1323 0 ct 1270 0 l 1269 -3 1269 -11 1268 -23 ct
|
||||
1267 -35 1267 -45 1267 -54 ct p
|
||||
1096 -168 m 1096 -121 1102 -88 1115 -67 ct 1127 -47 1147 -37 1175 -37 ct 1207 -37 1230 -48 1244 -70 ct
|
||||
1258 -92 1266 -126 1266 -172 ct 1266 -216 1258 -249 1244 -269 ct 1230 -290 1207 -300 1176 -300 ct
|
||||
1148 -300 1128 -290 1115 -269 ct 1103 -249 1096 -215 1096 -168 ct p ef
|
||||
1492 6 m 1459 6 1433 -3 1416 -20 ct 1399 -38 1391 -63 1391 -94 ct 1391 -128 1402 -155 1425 -174 ct
|
||||
1448 -192 1485 -202 1536 -203 ct 1611 -205 l 1611 -223 l 1611 -250 1605 -270 1594 -282 ct
|
||||
1582 -293 1564 -299 1539 -299 ct 1514 -299 1496 -295 1485 -286 ct 1473 -278 1466 -264 1464 -246 ct
|
||||
1406 -251 l 1415 -312 1460 -342 1540 -342 ct 1583 -342 1614 -332 1636 -313 ct
|
||||
1657 -293 1668 -265 1668 -229 ct 1668 -84 l 1668 -68 1670 -55 1674 -47 ct 1678 -39 1687 -34 1699 -34 ct
|
||||
1704 -34 1710 -35 1717 -37 ct 1717 -2 l 1703 1 1689 3 1674 3 ct 1653 3 1638 -2 1629 -13 ct
|
||||
1620 -24 1614 -41 1613 -64 ct 1611 -64 l 1597 -39 1580 -20 1561 -10 ct 1542 1 1519 6 1492 6 ct
|
||||
p
|
||||
1505 -36 m 1526 -36 1544 -40 1560 -50 ct 1576 -59 1588 -72 1597 -88 ct 1607 -104 1611 -121 1611 -138 ct
|
||||
1611 -166 l 1550 -164 l 1524 -164 1504 -161 1490 -156 ct 1477 -151 1466 -144 1459 -133 ct
|
||||
1452 -123 1448 -109 1448 -93 ct 1448 -75 1453 -60 1463 -51 ct 1473 -41 1487 -36 1505 -36 ct
|
||||
p ef
|
||||
1890 -2 m 1871 2 1853 5 1833 5 ct 1789 5 1766 -20 1766 -71 ct 1766 -295 l 1728 -295 l
|
||||
1728 -335 l 1769 -335 l 1785 -411 l 1822 -411 l 1822 -335 l 1884 -335 l
|
||||
1884 -295 l 1822 -295 l 1822 -83 l 1822 -67 1825 -56 1830 -49 ct 1835 -43 1845 -39 1858 -39 ct
|
||||
1865 -39 1876 -41 1890 -44 ct p ef
|
||||
1980 -156 m 1980 -118 1988 -88 2003 -67 ct 2019 -46 2043 -36 2073 -36 ct 2097 -36 2117 -41 2131 -50 ct
|
||||
2146 -60 2156 -72 2161 -87 ct 2210 -73 l 2190 -20 2144 6 2073 6 ct 2024 6 1986 -9 1960 -38 ct
|
||||
1934 -68 1921 -112 1921 -170 ct 1921 -225 1934 -268 1960 -297 ct 1986 -327 2023 -342 2071 -342 ct
|
||||
2170 -342 2219 -282 2219 -163 ct 2219 -156 l p
|
||||
2161 -199 m 2158 -234 2149 -260 2134 -276 ct 2119 -292 2098 -300 2070 -300 ct
|
||||
2043 -300 2022 -291 2006 -273 ct 1990 -255 1981 -230 1980 -199 ct p ef
|
||||
2849 -223 m 2849 -178 2840 -138 2823 -105 ct 2805 -71 2780 -45 2748 -27 ct
|
||||
2716 -9 2679 0 2636 0 ct 2473 0 l 2473 -437 l 2618 -437 l 2692 -437 2749 -418 2789 -381 ct
|
||||
2829 -344 2849 -291 2849 -223 ct p
|
||||
2790 -223 m 2790 -277 2775 -318 2745 -347 ct 2716 -375 2673 -389 2616 -389 ct
|
||||
2532 -389 l 2532 -47 l 2630 -47 l 2662 -47 2690 -54 2714 -69 ct 2738 -83 2757 -103 2770 -129 ct
|
||||
2783 -156 2790 -187 2790 -223 ct p ef
|
||||
3008 6 m 2975 6 2949 -3 2932 -20 ct 2915 -38 2907 -63 2907 -94 ct 2907 -128 2918 -155 2941 -174 ct
|
||||
2964 -192 3001 -202 3052 -203 ct 3127 -205 l 3127 -223 l 3127 -250 3121 -270 3110 -282 ct
|
||||
3098 -293 3080 -299 3055 -299 ct 3030 -299 3012 -295 3001 -286 ct 2989 -278 2982 -264 2980 -246 ct
|
||||
2922 -251 l 2931 -312 2976 -342 3056 -342 ct 3099 -342 3130 -332 3152 -313 ct
|
||||
3173 -293 3184 -265 3184 -229 ct 3184 -84 l 3184 -68 3186 -55 3190 -47 ct 3194 -39 3203 -34 3215 -34 ct
|
||||
3220 -34 3226 -35 3233 -37 ct 3233 -2 l 3219 1 3205 3 3190 3 ct 3169 3 3154 -2 3145 -13 ct
|
||||
3136 -24 3130 -41 3129 -64 ct 3127 -64 l 3113 -39 3096 -20 3077 -10 ct 3058 1 3035 6 3008 6 ct
|
||||
p
|
||||
3021 -36 m 3042 -36 3060 -40 3076 -50 ct 3092 -59 3104 -72 3113 -88 ct 3123 -104 3127 -121 3127 -138 ct
|
||||
3127 -166 l 3066 -164 l 3040 -164 3020 -161 3006 -156 ct 2993 -151 2982 -144 2975 -133 ct
|
||||
2968 -123 2964 -109 2964 -93 ct 2964 -75 2969 -60 2979 -51 ct 2989 -41 3003 -36 3021 -36 ct
|
||||
p ef
|
||||
3405 -2 m 3386 2 3368 5 3348 5 ct 3304 5 3281 -20 3281 -71 ct 3281 -295 l 3243 -295 l
|
||||
3243 -335 l 3284 -335 l 3300 -411 l 3337 -411 l 3337 -335 l 3399 -335 l
|
||||
3399 -295 l 3337 -295 l 3337 -83 l 3337 -67 3340 -56 3345 -49 ct 3350 -43 3360 -39 3373 -39 ct
|
||||
3380 -39 3391 -41 3405 -44 ct p ef
|
||||
3537 6 m 3504 6 3478 -3 3461 -20 ct 3444 -38 3436 -63 3436 -94 ct 3436 -128 3447 -155 3470 -174 ct
|
||||
3493 -192 3530 -202 3581 -203 ct 3656 -205 l 3656 -223 l 3656 -250 3650 -270 3639 -282 ct
|
||||
3627 -293 3609 -299 3584 -299 ct 3559 -299 3541 -295 3530 -286 ct 3518 -278 3511 -264 3509 -246 ct
|
||||
3451 -251 l 3460 -312 3505 -342 3585 -342 ct 3628 -342 3659 -332 3681 -313 ct
|
||||
3702 -293 3713 -265 3713 -229 ct 3713 -84 l 3713 -68 3715 -55 3719 -47 ct 3723 -39 3732 -34 3744 -34 ct
|
||||
3749 -34 3755 -35 3762 -37 ct 3762 -2 l 3748 1 3734 3 3719 3 ct 3698 3 3683 -2 3674 -13 ct
|
||||
3665 -24 3659 -41 3658 -64 ct 3656 -64 l 3642 -39 3625 -20 3606 -10 ct 3587 1 3564 6 3537 6 ct
|
||||
p
|
||||
3550 -36 m 3571 -36 3589 -40 3605 -50 ct 3621 -59 3633 -72 3642 -88 ct 3652 -104 3656 -121 3656 -138 ct
|
||||
3656 -166 l 3595 -164 l 3569 -164 3549 -161 3535 -156 ct 3522 -151 3511 -144 3504 -133 ct
|
||||
3497 -123 3493 -109 3493 -93 ct 3493 -75 3498 -60 3508 -51 ct 3518 -41 3532 -36 3550 -36 ct
|
||||
p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 4421 11043 m 1934 11043 l 1934 10097 l 6908 10097 l
|
||||
6908 11043 l 4421 11043 l p ef
|
||||
0.003 0.003 0.003 c 4421 11042 m 1933 11042 l 1933 10096 l 6908 10096 l
|
||||
6908 11042 l 4421 11042 l pc
|
||||
pum
|
||||
2904 10791 t
|
||||
59 0 m 59 -437 l 118 -437 l 118 0 l p ef
|
||||
432 0 m 432 -213 l 432 -235 430 -252 425 -264 ct 421 -276 414 -285 405 -291 ct
|
||||
395 -296 381 -299 363 -299 ct 336 -299 315 -289 299 -271 ct 284 -253 276 -227 276 -194 ct
|
||||
276 0 l 220 0 l 220 -264 l 220 -303 219 -327 218 -335 ct 271 -335 l 271 -334 271 -332 271 -327 ct
|
||||
272 -323 272 -317 272 -311 ct 273 -306 273 -294 273 -278 ct 274 -278 l 287 -301 302 -318 319 -327 ct
|
||||
336 -337 357 -342 382 -342 ct 418 -342 445 -333 462 -314 ct 479 -296 488 -266 488 -224 ct
|
||||
488 0 l p ef
|
||||
824 -93 m 824 -61 812 -37 788 -20 ct 764 -2 730 6 687 6 ct 646 6 613 -1 591 -14 ct
|
||||
568 -28 553 -50 547 -79 ct 596 -88 l 601 -70 611 -57 625 -49 ct 640 -40 661 -36 687 -36 ct
|
||||
716 -36 736 -41 750 -49 ct 763 -58 769 -71 769 -88 ct 769 -102 765 -112 756 -121 ct
|
||||
747 -129 732 -136 712 -141 ct 672 -152 l 640 -160 617 -168 603 -176 ct 590 -184 579 -194 571 -205 ct
|
||||
564 -216 560 -230 560 -247 ct 560 -277 571 -301 593 -317 ct 615 -333 646 -341 688 -341 ct
|
||||
725 -341 754 -334 776 -321 ct 798 -308 812 -287 818 -259 ct 767 -252 l 764 -267 756 -279 742 -287 ct
|
||||
729 -295 711 -299 688 -299 ct 663 -299 644 -295 632 -287 ct 620 -279 614 -268 614 -252 ct
|
||||
614 -243 617 -235 622 -229 ct 627 -223 634 -217 644 -213 ct 653 -209 674 -203 705 -195 ct
|
||||
735 -188 756 -181 769 -174 ct 782 -168 792 -161 800 -153 ct 807 -146 813 -137 817 -127 ct
|
||||
821 -117 824 -106 824 -93 ct p ef
|
||||
1019 -2 m 1000 2 982 5 962 5 ct 918 5 895 -20 895 -71 ct 895 -295 l 857 -295 l
|
||||
857 -335 l 898 -335 l 914 -411 l 951 -411 l 951 -335 l 1013 -335 l
|
||||
1013 -295 l 951 -295 l 951 -83 l 951 -67 954 -56 959 -49 ct 964 -43 974 -39 987 -39 ct
|
||||
994 -39 1005 -41 1019 -44 ct p ef
|
||||
1151 6 m 1118 6 1092 -3 1075 -20 ct 1058 -38 1050 -63 1050 -94 ct 1050 -128 1061 -155 1084 -174 ct
|
||||
1107 -192 1144 -202 1195 -203 ct 1270 -205 l 1270 -223 l 1270 -250 1264 -270 1253 -282 ct
|
||||
1241 -293 1223 -299 1198 -299 ct 1173 -299 1155 -295 1144 -286 ct 1132 -278 1125 -264 1123 -246 ct
|
||||
1065 -251 l 1074 -312 1119 -342 1199 -342 ct 1242 -342 1273 -332 1295 -313 ct
|
||||
1316 -293 1327 -265 1327 -229 ct 1327 -84 l 1327 -68 1329 -55 1333 -47 ct 1337 -39 1346 -34 1358 -34 ct
|
||||
1363 -34 1369 -35 1376 -37 ct 1376 -2 l 1362 1 1348 3 1333 3 ct 1312 3 1297 -2 1288 -13 ct
|
||||
1279 -24 1273 -41 1272 -64 ct 1270 -64 l 1256 -39 1239 -20 1220 -10 ct 1201 1 1178 6 1151 6 ct
|
||||
p
|
||||
1164 -36 m 1185 -36 1203 -40 1219 -50 ct 1235 -59 1247 -72 1256 -88 ct 1266 -104 1270 -121 1270 -138 ct
|
||||
1270 -166 l 1209 -164 l 1183 -164 1163 -161 1149 -156 ct 1136 -151 1125 -144 1118 -133 ct
|
||||
1111 -123 1107 -109 1107 -93 ct 1107 -75 1112 -60 1122 -51 ct 1132 -41 1146 -36 1164 -36 ct
|
||||
p ef
|
||||
1419 0 m 1419 -460 l 1475 -460 l 1475 0 l p ef
|
||||
1560 0 m 1560 -460 l 1616 -460 l 1616 0 l p ef
|
||||
1887 0 m 1887 -437 l 1946 -437 l 1946 -48 l 2167 -48 l 2167 0 l p ef
|
||||
2582 -121 m 2582 -80 2567 -49 2535 -27 ct 2504 -5 2459 6 2402 6 ct 2295 6 2234 -31 2217 -105 ct
|
||||
2274 -116 l 2281 -90 2295 -71 2316 -58 ct 2338 -46 2367 -40 2404 -40 ct 2442 -40 2472 -47 2493 -60 ct
|
||||
2513 -73 2524 -92 2524 -118 ct 2524 -132 2521 -143 2514 -152 ct 2508 -161 2498 -168 2487 -174 ct
|
||||
2475 -180 2461 -185 2444 -189 ct 2428 -193 2410 -197 2390 -202 ct 2356 -209 2329 -217 2312 -224 ct
|
||||
2294 -232 2280 -241 2269 -250 ct 2259 -259 2251 -270 2246 -283 ct 2240 -296 2237 -310 2237 -326 ct
|
||||
2237 -364 2252 -393 2280 -413 ct 2309 -433 2350 -443 2403 -443 ct 2453 -443 2491 -436 2517 -421 ct
|
||||
2543 -405 2562 -380 2572 -343 ct 2514 -333 l 2507 -356 2495 -373 2477 -383 ct
|
||||
2459 -394 2434 -399 2403 -399 ct 2368 -399 2341 -393 2323 -381 ct 2304 -370 2295 -353 2295 -330 ct
|
||||
2295 -316 2299 -305 2306 -296 ct 2313 -287 2323 -280 2337 -274 ct 2350 -268 2377 -260 2417 -251 ct
|
||||
2430 -248 2444 -245 2457 -242 ct 2470 -239 2483 -235 2495 -231 ct 2507 -226 2519 -221 2530 -215 ct
|
||||
2540 -209 2549 -202 2557 -193 ct 2565 -184 2571 -174 2576 -162 ct 2580 -150 2582 -137 2582 -121 ct
|
||||
p ef
|
||||
2973 0 m 2923 -128 l 2724 -128 l 2674 0 l 2612 0 l 2791 -437 l 2858 -437 l
|
||||
3033 0 l p
|
||||
2823 -392 m 2821 -384 l 2815 -366 2808 -344 2798 -318 ct 2742 -174 l 2905 -174 l
|
||||
2849 -318 l 2843 -332 2838 -349 2832 -366 ct p ef
|
||||
pom
|
||||
0 9746 t
|
||||
pom
|
||||
count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%EOF
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,807 +0,0 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%BoundingBox: 0 0 447 326
|
||||
%%Pages: 0
|
||||
%%Creator: LibreOffice 4.2
|
||||
%%Title: none
|
||||
%%CreationDate: none
|
||||
%%LanguageLevel: 2
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%BeginResource: procset SDRes-Prolog 1.0 0
|
||||
/b4_inc_state save def
|
||||
/dict_count countdictstack def
|
||||
/op_count count 1 sub def
|
||||
userdict begin
|
||||
0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
|
||||
/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
|
||||
/bdef {bind def} bind def
|
||||
/c {setrgbcolor} bdef
|
||||
/l {neg lineto} bdef
|
||||
/rl {neg rlineto} bdef
|
||||
/lc {setlinecap} bdef
|
||||
/lj {setlinejoin} bdef
|
||||
/lw {setlinewidth} bdef
|
||||
/ml {setmiterlimit} bdef
|
||||
/ld {setdash} bdef
|
||||
/m {neg moveto} bdef
|
||||
/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
|
||||
/r {rotate} bdef
|
||||
/t {neg translate} bdef
|
||||
/s {scale} bdef
|
||||
/sw {show} bdef
|
||||
/gs {gsave} bdef
|
||||
/gr {grestore} bdef
|
||||
/f {findfont dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
|
||||
currentdict end /NFont exch definefont pop /NFont findfont} bdef
|
||||
/p {closepath} bdef
|
||||
/sf {scalefont setfont} bdef
|
||||
/ef {eofill}bdef
|
||||
/pc {closepath stroke}bdef
|
||||
/ps {stroke}bdef
|
||||
/pum {matrix currentmatrix}bdef
|
||||
/pom {setmatrix}bdef
|
||||
/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
|
||||
%%EndResource
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%Page: 1 1
|
||||
%%BeginPageSetup
|
||||
%%EndPageSetup
|
||||
pum
|
||||
0.02835 0.02837 s
|
||||
0 -11487 t
|
||||
/tm matrix currentmatrix def
|
||||
tm setmatrix
|
||||
-1829 -2247 t
|
||||
1 1 s
|
||||
1.000 1.000 1.000 c 7057 4787 m 5324 4787 l 5324 3358 l 8790 3358 l
|
||||
8790 4787 l 7057 4787 l p ef
|
||||
0 lw 1 lj 0.003 0.003 0.003 c 7057 4787 m 5324 4787 l 5324 3358 l 8789 3358 l
|
||||
8789 4787 l 7057 4787 l pc
|
||||
pum
|
||||
6333 3938 t
|
||||
348 0 m 348 -202 l 111 -202 l 111 0 l 52 0 l 52 -437 l 111 -437 l
|
||||
111 -252 l 348 -252 l 348 -437 l 407 -437 l 407 0 l p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
854 0 m 854 -460 l 910 -460 l 910 0 l p ef
|
||||
995 0 m 995 -460 l 1051 -460 l 1051 0 l p ef
|
||||
1419 -168 m 1419 -109 1407 -66 1381 -37 ct 1355 -8 1317 6 1268 6 ct 1219 6 1182 -9 1157 -39 ct
|
||||
1132 -68 1120 -112 1120 -168 ct 1120 -284 1170 -342 1270 -342 ct 1321 -342 1359 -328 1383 -299 ct
|
||||
1407 -271 1419 -227 1419 -168 ct p
|
||||
1361 -168 m 1361 -214 1354 -248 1340 -269 ct 1327 -290 1303 -300 1271 -300 ct
|
||||
1238 -300 1215 -290 1200 -268 ct 1186 -247 1178 -214 1178 -168 ct 1178 -124 1185 -91 1200 -68 ct
|
||||
1214 -46 1237 -35 1268 -35 ct 1301 -35 1325 -46 1339 -67 ct 1354 -89 1361 -122 1361 -168 ct
|
||||
p ef
|
||||
pom
|
||||
pum
|
||||
5893 4649 t
|
||||
390 -305 m 390 -264 377 -231 350 -207 ct 323 -182 286 -170 240 -170 ct 111 -170 l
|
||||
111 0 l 52 0 l 52 -437 l 236 -437 l 285 -437 323 -425 350 -402 ct 377 -380 390 -347 390 -305 ct
|
||||
p
|
||||
331 -305 m 331 -361 297 -389 229 -389 ct 111 -389 l 111 -217 l 231 -217 l
|
||||
297 -217 331 -246 331 -305 ct p ef
|
||||
467 0 m 467 -257 l 467 -281 466 -307 465 -335 ct 518 -335 l 520 -297 520 -275 520 -267 ct
|
||||
522 -267 l 530 -296 541 -315 552 -326 ct 564 -336 580 -342 601 -342 ct 609 -342 616 -341 624 -339 ct
|
||||
624 -287 l 616 -289 607 -291 594 -291 ct 571 -291 553 -281 541 -261 ct 529 -241 523 -212 523 -175 ct
|
||||
523 0 l p ef
|
||||
961 -168 m 961 -109 949 -66 923 -37 ct 897 -8 859 6 810 6 ct 761 6 724 -9 699 -39 ct
|
||||
674 -68 662 -112 662 -168 ct 662 -284 712 -342 812 -342 ct 863 -342 901 -328 925 -299 ct
|
||||
949 -271 961 -227 961 -168 ct p
|
||||
903 -168 m 903 -214 896 -248 882 -269 ct 869 -290 845 -300 813 -300 ct 780 -300 757 -290 742 -268 ct
|
||||
728 -247 720 -214 720 -168 ct 720 -124 727 -91 742 -68 ct 756 -46 779 -35 810 -35 ct
|
||||
843 -35 867 -46 881 -67 ct 896 -89 903 -122 903 -168 ct p ef
|
||||
1160 -2 m 1141 2 1123 5 1103 5 ct 1059 5 1036 -20 1036 -71 ct 1036 -295 l 998 -295 l
|
||||
998 -335 l 1039 -335 l 1055 -411 l 1092 -411 l 1092 -335 l 1154 -335 l
|
||||
1154 -295 l 1092 -295 l 1092 -83 l 1092 -67 1095 -56 1100 -49 ct 1105 -43 1115 -39 1128 -39 ct
|
||||
1135 -39 1146 -41 1160 -44 ct p ef
|
||||
1490 -168 m 1490 -109 1478 -66 1452 -37 ct 1426 -8 1388 6 1339 6 ct 1290 6 1253 -9 1228 -39 ct
|
||||
1203 -68 1191 -112 1191 -168 ct 1191 -284 1241 -342 1341 -342 ct 1392 -342 1430 -328 1454 -299 ct
|
||||
1478 -271 1490 -227 1490 -168 ct p
|
||||
1432 -168 m 1432 -214 1425 -248 1411 -269 ct 1398 -290 1374 -300 1342 -300 ct
|
||||
1309 -300 1286 -290 1271 -268 ct 1257 -247 1249 -214 1249 -168 ct 1249 -124 1256 -91 1271 -68 ct
|
||||
1285 -46 1308 -35 1339 -35 ct 1372 -35 1396 -46 1410 -67 ct 1425 -89 1432 -122 1432 -168 ct
|
||||
p ef
|
||||
1602 -169 m 1602 -125 1609 -92 1623 -70 ct 1637 -49 1659 -38 1687 -38 ct 1707 -38 1723 -43 1737 -54 ct
|
||||
1750 -65 1758 -81 1761 -104 ct 1818 -100 l 1813 -68 1800 -42 1777 -23 ct 1753 -3 1724 6 1688 6 ct
|
||||
1642 6 1606 -9 1581 -38 ct 1556 -68 1544 -111 1544 -168 ct 1544 -224 1556 -268 1581 -297 ct
|
||||
1606 -327 1642 -342 1688 -342 ct 1722 -342 1751 -333 1773 -315 ct 1796 -297 1810 -273 1816 -242 ct
|
||||
1759 -237 l 1756 -256 1748 -271 1737 -282 ct 1725 -292 1708 -298 1686 -298 ct
|
||||
1657 -298 1635 -288 1622 -269 ct 1609 -249 1602 -216 1602 -169 ct p ef
|
||||
2161 -168 m 2161 -109 2149 -66 2123 -37 ct 2097 -8 2059 6 2010 6 ct 1961 6 1924 -9 1899 -39 ct
|
||||
1874 -68 1862 -112 1862 -168 ct 1862 -284 1912 -342 2012 -342 ct 2063 -342 2101 -328 2125 -299 ct
|
||||
2149 -271 2161 -227 2161 -168 ct p
|
||||
2103 -168 m 2103 -214 2096 -248 2082 -269 ct 2069 -290 2045 -300 2013 -300 ct
|
||||
1980 -300 1957 -290 1942 -268 ct 1928 -247 1920 -214 1920 -168 ct 1920 -124 1927 -91 1942 -68 ct
|
||||
1956 -46 1979 -35 2010 -35 ct 2043 -35 2067 -46 2081 -67 ct 2096 -89 2103 -122 2103 -168 ct
|
||||
p ef
|
||||
2231 0 m 2231 -460 l 2287 -460 l 2287 0 l p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 7057 3358 m 5324 3358 l 5324 2248 l 8790 2248 l
|
||||
8790 3358 l 7057 3358 l p ef
|
||||
0.003 0.003 0.003 c 7057 3358 m 5324 3358 l 5324 2247 l 8789 2247 l 8789 3358 l
|
||||
7057 3358 l pc
|
||||
pum
|
||||
5821 3023 t
|
||||
361 0 m 247 -181 l 111 -181 l 111 0 l 52 0 l 52 -437 l 258 -437 l
|
||||
307 -437 345 -426 372 -404 ct 398 -382 412 -351 412 -312 ct 412 -279 402 -252 383 -230 ct
|
||||
364 -208 338 -194 305 -188 ct 429 0 l p
|
||||
352 -311 m 352 -337 344 -356 326 -369 ct 309 -383 284 -389 252 -389 ct 111 -389 l
|
||||
111 -228 l 254 -228 l 285 -228 310 -235 327 -250 ct 344 -265 352 -285 352 -311 ct
|
||||
p ef
|
||||
784 -168 m 784 -109 772 -66 746 -37 ct 720 -8 682 6 633 6 ct 584 6 547 -9 522 -39 ct
|
||||
497 -68 485 -112 485 -168 ct 485 -284 535 -342 635 -342 ct 686 -342 724 -328 748 -299 ct
|
||||
772 -271 784 -227 784 -168 ct p
|
||||
726 -168 m 726 -214 719 -248 705 -269 ct 692 -290 668 -300 636 -300 ct 603 -300 580 -290 565 -268 ct
|
||||
551 -247 543 -214 543 -168 ct 543 -124 550 -91 565 -68 ct 579 -46 602 -35 633 -35 ct
|
||||
666 -35 690 -46 704 -67 ct 719 -89 726 -122 726 -168 ct p ef
|
||||
908 -335 m 908 -123 l 908 -101 911 -84 915 -71 ct 919 -59 926 -50 936 -45 ct
|
||||
945 -40 959 -37 978 -37 ct 1004 -37 1026 -46 1041 -64 ct 1057 -83 1064 -108 1064 -141 ct
|
||||
1064 -335 l 1120 -335 l 1120 -72 l 1120 -33 1121 -9 1122 0 ct 1069 0 l
|
||||
1069 -1 1069 -4 1069 -8 ct 1068 -13 1068 -18 1068 -24 ct 1068 -30 1067 -41 1067 -57 ct
|
||||
1066 -57 l 1053 -34 1038 -18 1021 -8 ct 1005 1 984 6 959 6 ct 922 6 895 -3 878 -21 ct
|
||||
861 -40 852 -70 852 -112 ct 852 -335 l p ef
|
||||
1336 -2 m 1317 2 1299 5 1279 5 ct 1235 5 1212 -20 1212 -71 ct 1212 -295 l 1174 -295 l
|
||||
1174 -335 l 1215 -335 l 1231 -411 l 1268 -411 l 1268 -335 l 1330 -335 l
|
||||
1330 -295 l 1268 -295 l 1268 -83 l 1268 -67 1271 -56 1276 -49 ct 1281 -43 1291 -39 1304 -39 ct
|
||||
1311 -39 1322 -41 1336 -44 ct p ef
|
||||
1427 -156 m 1427 -118 1435 -88 1450 -67 ct 1466 -46 1490 -36 1520 -36 ct 1544 -36 1564 -41 1578 -50 ct
|
||||
1593 -60 1603 -72 1608 -87 ct 1657 -73 l 1637 -20 1591 6 1520 6 ct 1471 6 1433 -9 1407 -38 ct
|
||||
1381 -68 1368 -112 1368 -170 ct 1368 -225 1381 -268 1407 -297 ct 1433 -327 1470 -342 1518 -342 ct
|
||||
1617 -342 1666 -282 1666 -163 ct 1666 -156 l p
|
||||
1608 -199 m 1605 -234 1596 -260 1581 -276 ct 1566 -292 1545 -300 1517 -300 ct
|
||||
1490 -300 1469 -291 1453 -273 ct 1437 -255 1428 -230 1427 -199 ct p ef
|
||||
1738 0 m 1738 -257 l 1738 -281 1737 -307 1736 -335 ct 1789 -335 l 1791 -297 1791 -275 1791 -267 ct
|
||||
1793 -267 l 1801 -296 1812 -315 1823 -326 ct 1835 -336 1851 -342 1872 -342 ct
|
||||
1880 -342 1887 -341 1895 -339 ct 1895 -287 l 1887 -289 1878 -291 1865 -291 ct
|
||||
1842 -291 1824 -281 1812 -261 ct 1800 -241 1794 -212 1794 -175 ct 1794 0 l p ef
|
||||
2409 0 m 2359 -128 l 2160 -128 l 2110 0 l 2048 0 l 2227 -437 l 2294 -437 l
|
||||
2469 0 l p
|
||||
2259 -392 m 2257 -384 l 2251 -366 2244 -344 2234 -318 ct 2178 -174 l 2341 -174 l
|
||||
2285 -318 l 2279 -332 2274 -349 2268 -366 ct p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 15857 3360 m 14124 3360 l 14124 2250 l 17590 2250 l
|
||||
17590 3360 l 15857 3360 l p ef
|
||||
0.003 0.003 0.003 c 15856 3360 m 14124 3360 l 14124 2249 l 17589 2249 l
|
||||
17589 3360 l 15856 3360 l pc
|
||||
pum
|
||||
14604 3025 t
|
||||
361 0 m 247 -181 l 111 -181 l 111 0 l 52 0 l 52 -437 l 258 -437 l
|
||||
307 -437 345 -426 372 -404 ct 398 -382 412 -351 412 -312 ct 412 -279 402 -252 383 -230 ct
|
||||
364 -208 338 -194 305 -188 ct 429 0 l p
|
||||
352 -311 m 352 -337 344 -356 326 -369 ct 309 -383 284 -389 252 -389 ct 111 -389 l
|
||||
111 -228 l 254 -228 l 285 -228 310 -235 327 -250 ct 344 -265 352 -285 352 -311 ct
|
||||
p ef
|
||||
784 -168 m 784 -109 772 -66 746 -37 ct 720 -8 682 6 633 6 ct 584 6 547 -9 522 -39 ct
|
||||
497 -68 485 -112 485 -168 ct 485 -284 535 -342 635 -342 ct 686 -342 724 -328 748 -299 ct
|
||||
772 -271 784 -227 784 -168 ct p
|
||||
726 -168 m 726 -214 719 -248 705 -269 ct 692 -290 668 -300 636 -300 ct 603 -300 580 -290 565 -268 ct
|
||||
551 -247 543 -214 543 -168 ct 543 -124 550 -91 565 -68 ct 579 -46 602 -35 633 -35 ct
|
||||
666 -35 690 -46 704 -67 ct 719 -89 726 -122 726 -168 ct p ef
|
||||
908 -335 m 908 -123 l 908 -101 911 -84 915 -71 ct 919 -59 926 -50 936 -45 ct
|
||||
945 -40 959 -37 978 -37 ct 1004 -37 1026 -46 1041 -64 ct 1057 -83 1064 -108 1064 -141 ct
|
||||
1064 -335 l 1120 -335 l 1120 -72 l 1120 -33 1121 -9 1122 0 ct 1069 0 l
|
||||
1069 -1 1069 -4 1069 -8 ct 1068 -13 1068 -18 1068 -24 ct 1068 -30 1067 -41 1067 -57 ct
|
||||
1066 -57 l 1053 -34 1038 -18 1021 -8 ct 1005 1 984 6 959 6 ct 922 6 895 -3 878 -21 ct
|
||||
861 -40 852 -70 852 -112 ct 852 -335 l p ef
|
||||
1336 -2 m 1317 2 1299 5 1279 5 ct 1235 5 1212 -20 1212 -71 ct 1212 -295 l 1174 -295 l
|
||||
1174 -335 l 1215 -335 l 1231 -411 l 1268 -411 l 1268 -335 l 1330 -335 l
|
||||
1330 -295 l 1268 -295 l 1268 -83 l 1268 -67 1271 -56 1276 -49 ct 1281 -43 1291 -39 1304 -39 ct
|
||||
1311 -39 1322 -41 1336 -44 ct p ef
|
||||
1427 -156 m 1427 -118 1435 -88 1450 -67 ct 1466 -46 1490 -36 1520 -36 ct 1544 -36 1564 -41 1578 -50 ct
|
||||
1593 -60 1603 -72 1608 -87 ct 1657 -73 l 1637 -20 1591 6 1520 6 ct 1471 6 1433 -9 1407 -38 ct
|
||||
1381 -68 1368 -112 1368 -170 ct 1368 -225 1381 -268 1407 -297 ct 1433 -327 1470 -342 1518 -342 ct
|
||||
1617 -342 1666 -282 1666 -163 ct 1666 -156 l p
|
||||
1608 -199 m 1605 -234 1596 -260 1581 -276 ct 1566 -292 1545 -300 1517 -300 ct
|
||||
1490 -300 1469 -291 1453 -273 ct 1437 -255 1428 -230 1427 -199 ct p ef
|
||||
1738 0 m 1738 -257 l 1738 -281 1737 -307 1736 -335 ct 1789 -335 l 1791 -297 1791 -275 1791 -267 ct
|
||||
1793 -267 l 1801 -296 1812 -315 1823 -326 ct 1835 -336 1851 -342 1872 -342 ct
|
||||
1880 -342 1887 -341 1895 -339 ct 1895 -287 l 1887 -289 1878 -291 1865 -291 ct
|
||||
1842 -291 1824 -281 1812 -261 ct 1800 -241 1794 -212 1794 -175 ct 1794 0 l p ef
|
||||
2472 -123 m 2472 -84 2458 -54 2430 -32 ct 2401 -11 2362 0 2311 0 ct 2134 0 l
|
||||
2134 -437 l 2293 -437 l 2395 -437 2447 -402 2447 -331 ct 2447 -305 2439 -283 2425 -266 ct
|
||||
2410 -248 2390 -236 2364 -230 ct 2398 -226 2425 -215 2444 -195 ct 2463 -176 2472 -152 2472 -123 ct
|
||||
p
|
||||
2387 -324 m 2387 -347 2379 -364 2363 -374 ct 2347 -384 2323 -389 2293 -389 ct
|
||||
2193 -389 l 2193 -251 l 2293 -251 l 2324 -251 2348 -257 2364 -269 ct 2379 -281 2387 -299 2387 -324 ct
|
||||
p
|
||||
2412 -128 m 2412 -179 2376 -205 2304 -205 ct 2193 -205 l 2193 -47 l 2308 -47 l
|
||||
2345 -47 2371 -54 2387 -68 ct 2404 -81 2412 -101 2412 -128 ct p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 15857 4789 m 14124 4789 l 14124 3360 l 17590 3360 l
|
||||
17590 4789 l 15857 4789 l p ef
|
||||
0.003 0.003 0.003 c 15856 4789 m 14124 4789 l 14124 3360 l 17589 3360 l
|
||||
17589 4789 l 15856 4789 l pc
|
||||
pum
|
||||
15133 3940 t
|
||||
348 0 m 348 -202 l 111 -202 l 111 0 l 52 0 l 52 -437 l 111 -437 l
|
||||
111 -252 l 348 -252 l 348 -437 l 407 -437 l 407 0 l p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
854 0 m 854 -460 l 910 -460 l 910 0 l p ef
|
||||
995 0 m 995 -460 l 1051 -460 l 1051 0 l p ef
|
||||
1419 -168 m 1419 -109 1407 -66 1381 -37 ct 1355 -8 1317 6 1268 6 ct 1219 6 1182 -9 1157 -39 ct
|
||||
1132 -68 1120 -112 1120 -168 ct 1120 -284 1170 -342 1270 -342 ct 1321 -342 1359 -328 1383 -299 ct
|
||||
1407 -271 1419 -227 1419 -168 ct p
|
||||
1361 -168 m 1361 -214 1354 -248 1340 -269 ct 1327 -290 1303 -300 1271 -300 ct
|
||||
1238 -300 1215 -290 1200 -268 ct 1186 -247 1178 -214 1178 -168 ct 1178 -124 1185 -91 1200 -68 ct
|
||||
1214 -46 1237 -35 1268 -35 ct 1301 -35 1325 -46 1339 -67 ct 1354 -89 1361 -122 1361 -168 ct
|
||||
p ef
|
||||
pom
|
||||
pum
|
||||
14693 4651 t
|
||||
390 -305 m 390 -264 377 -231 350 -207 ct 323 -182 286 -170 240 -170 ct 111 -170 l
|
||||
111 0 l 52 0 l 52 -437 l 236 -437 l 285 -437 323 -425 350 -402 ct 377 -380 390 -347 390 -305 ct
|
||||
p
|
||||
331 -305 m 331 -361 297 -389 229 -389 ct 111 -389 l 111 -217 l 231 -217 l
|
||||
297 -217 331 -246 331 -305 ct p ef
|
||||
467 0 m 467 -257 l 467 -281 466 -307 465 -335 ct 518 -335 l 520 -297 520 -275 520 -267 ct
|
||||
522 -267 l 530 -296 541 -315 552 -326 ct 564 -336 580 -342 601 -342 ct 609 -342 616 -341 624 -339 ct
|
||||
624 -287 l 616 -289 607 -291 594 -291 ct 571 -291 553 -281 541 -261 ct 529 -241 523 -212 523 -175 ct
|
||||
523 0 l p ef
|
||||
961 -168 m 961 -109 949 -66 923 -37 ct 897 -8 859 6 810 6 ct 761 6 724 -9 699 -39 ct
|
||||
674 -68 662 -112 662 -168 ct 662 -284 712 -342 812 -342 ct 863 -342 901 -328 925 -299 ct
|
||||
949 -271 961 -227 961 -168 ct p
|
||||
903 -168 m 903 -214 896 -248 882 -269 ct 869 -290 845 -300 813 -300 ct 780 -300 757 -290 742 -268 ct
|
||||
728 -247 720 -214 720 -168 ct 720 -124 727 -91 742 -68 ct 756 -46 779 -35 810 -35 ct
|
||||
843 -35 867 -46 881 -67 ct 896 -89 903 -122 903 -168 ct p ef
|
||||
1160 -2 m 1141 2 1123 5 1103 5 ct 1059 5 1036 -20 1036 -71 ct 1036 -295 l 998 -295 l
|
||||
998 -335 l 1039 -335 l 1055 -411 l 1092 -411 l 1092 -335 l 1154 -335 l
|
||||
1154 -295 l 1092 -295 l 1092 -83 l 1092 -67 1095 -56 1100 -49 ct 1105 -43 1115 -39 1128 -39 ct
|
||||
1135 -39 1146 -41 1160 -44 ct p ef
|
||||
1490 -168 m 1490 -109 1478 -66 1452 -37 ct 1426 -8 1388 6 1339 6 ct 1290 6 1253 -9 1228 -39 ct
|
||||
1203 -68 1191 -112 1191 -168 ct 1191 -284 1241 -342 1341 -342 ct 1392 -342 1430 -328 1454 -299 ct
|
||||
1478 -271 1490 -227 1490 -168 ct p
|
||||
1432 -168 m 1432 -214 1425 -248 1411 -269 ct 1398 -290 1374 -300 1342 -300 ct
|
||||
1309 -300 1286 -290 1271 -268 ct 1257 -247 1249 -214 1249 -168 ct 1249 -124 1256 -91 1271 -68 ct
|
||||
1285 -46 1308 -35 1339 -35 ct 1372 -35 1396 -46 1410 -67 ct 1425 -89 1432 -122 1432 -168 ct
|
||||
p ef
|
||||
1602 -169 m 1602 -125 1609 -92 1623 -70 ct 1637 -49 1659 -38 1687 -38 ct 1707 -38 1723 -43 1737 -54 ct
|
||||
1750 -65 1758 -81 1761 -104 ct 1818 -100 l 1813 -68 1800 -42 1777 -23 ct 1753 -3 1724 6 1688 6 ct
|
||||
1642 6 1606 -9 1581 -38 ct 1556 -68 1544 -111 1544 -168 ct 1544 -224 1556 -268 1581 -297 ct
|
||||
1606 -327 1642 -342 1688 -342 ct 1722 -342 1751 -333 1773 -315 ct 1796 -297 1810 -273 1816 -242 ct
|
||||
1759 -237 l 1756 -256 1748 -271 1737 -282 ct 1725 -292 1708 -298 1686 -298 ct
|
||||
1657 -298 1635 -288 1622 -269 ct 1609 -249 1602 -216 1602 -169 ct p ef
|
||||
2161 -168 m 2161 -109 2149 -66 2123 -37 ct 2097 -8 2059 6 2010 6 ct 1961 6 1924 -9 1899 -39 ct
|
||||
1874 -68 1862 -112 1862 -168 ct 1862 -284 1912 -342 2012 -342 ct 2063 -342 2101 -328 2125 -299 ct
|
||||
2149 -271 2161 -227 2161 -168 ct p
|
||||
2103 -168 m 2103 -214 2096 -248 2082 -269 ct 2069 -290 2045 -300 2013 -300 ct
|
||||
1980 -300 1957 -290 1942 -268 ct 1928 -247 1920 -214 1920 -168 ct 1920 -124 1927 -91 1942 -68 ct
|
||||
1956 -46 1979 -35 2010 -35 ct 2043 -35 2067 -46 2081 -67 ct 2096 -89 2103 -122 2103 -168 ct
|
||||
p ef
|
||||
2231 0 m 2231 -460 l 2287 -460 l 2287 0 l p ef
|
||||
pom
|
||||
6991 4788 m 6991 13729 l ps
|
||||
15790 4790 m 15790 13731 l ps
|
||||
pum
|
||||
2948 6763 t
|
||||
210 0 m 178 0 l 178 -138 l 178 -157 175 -171 169 -180 ct 163 -188 153 -192 140 -192 ct
|
||||
120 -192 99 -180 77 -156 ct 77 0 l 44 0 l 44 -291 l 77 -291 l 77 -184 l
|
||||
100 -208 124 -220 150 -220 ct 190 -220 210 -196 210 -147 ct p ef
|
||||
471 -107 m 323 -107 l 323 -82 330 -62 344 -46 ct 358 -30 376 -23 396 -23 ct
|
||||
416 -23 436 -26 457 -33 ct 462 -7 l 443 1 421 6 396 6 ct 364 6 338 -5 318 -25 ct
|
||||
299 -46 289 -73 289 -108 ct 289 -142 298 -170 315 -190 ct 333 -210 356 -220 384 -220 ct
|
||||
408 -220 429 -211 446 -192 ct 462 -173 471 -148 471 -117 ct p
|
||||
436 -133 m 436 -150 430 -164 420 -175 ct 409 -187 398 -192 385 -192 ct 368 -192 354 -187 343 -176 ct
|
||||
332 -165 326 -151 325 -133 ct p ef
|
||||
703 0 m 615 0 l 615 -264 l 558 -264 l 558 -291 l 647 -291 l 647 -28 l
|
||||
703 -28 l p ef
|
||||
957 0 m 869 0 l 869 -264 l 812 -264 l 812 -291 l 901 -291 l 901 -28 l
|
||||
957 -28 l p ef
|
||||
1143 -220 m 1172 -220 1196 -210 1213 -189 ct 1231 -169 1240 -142 1240 -108 ct
|
||||
1240 -74 1231 -46 1213 -26 ct 1196 -5 1172 6 1143 6 ct 1113 6 1089 -5 1072 -26 ct
|
||||
1055 -46 1046 -74 1046 -108 ct 1046 -142 1055 -169 1072 -190 ct 1090 -210 1113 -220 1143 -220 ct
|
||||
p
|
||||
1143 -23 m 1162 -23 1178 -31 1189 -47 ct 1200 -64 1206 -84 1206 -107 ct 1206 -132 1200 -153 1189 -169 ct
|
||||
1178 -185 1163 -192 1143 -192 ct 1123 -192 1107 -185 1096 -169 ct 1085 -153 1080 -133 1080 -107 ct
|
||||
1080 -83 1085 -63 1097 -47 ct 1108 -31 1123 -23 1143 -23 ct p ef
|
||||
1456 -101 m 1333 -101 l 1333 -132 l 1456 -132 l p ef
|
||||
1736 -10 m 1715 0 1693 5 1673 5 ct 1634 5 1615 -15 1615 -56 ct 1615 -187 l
|
||||
1574 -187 l 1574 -215 l 1615 -215 l 1615 -274 l 1646 -274 l 1646 -215 l
|
||||
1719 -215 l 1719 -187 l 1646 -187 l 1646 -64 l 1646 -51 1649 -41 1655 -34 ct
|
||||
1661 -27 1669 -23 1678 -23 ct 1696 -23 1714 -27 1731 -35 ct p ef
|
||||
1919 -297 m 1925 -297 1930 -294 1934 -290 ct 1939 -286 1941 -281 1941 -274 ct
|
||||
1941 -268 1939 -263 1934 -259 ct 1930 -254 1925 -252 1919 -252 ct 1913 -252 1908 -254 1904 -259 ct
|
||||
1900 -263 1897 -269 1897 -274 ct 1897 -280 1900 -286 1904 -290 ct 1908 -294 1913 -297 1919 -297 ct
|
||||
p
|
||||
1935 0 m 1902 0 l 1902 -187 l 1839 -187 l 1839 -215 l 1935 -215 l
|
||||
p ef
|
||||
2259 0 m 2227 0 l 2227 -141 l 2227 -175 2221 -192 2208 -192 ct 2202 -192 2194 -187 2187 -175 ct
|
||||
2179 -163 2175 -157 2175 -155 ct 2175 0 l 2143 0 l 2143 -141 l 2143 -175 2137 -192 2124 -192 ct
|
||||
2117 -192 2110 -187 2103 -175 ct 2095 -163 2091 -157 2091 -155 ct 2091 0 l 2059 0 l
|
||||
2059 -215 l 2090 -215 l 2090 -183 l 2096 -194 2103 -203 2111 -210 ct 2120 -217 2128 -220 2136 -220 ct
|
||||
2145 -220 2153 -217 2159 -210 ct 2166 -203 2171 -194 2174 -183 ct 2180 -194 2187 -203 2195 -210 ct
|
||||
2204 -217 2212 -220 2220 -220 ct 2246 -220 2259 -197 2259 -151 ct p ef
|
||||
2503 -107 m 2355 -107 l 2355 -82 2362 -62 2376 -46 ct 2390 -30 2408 -23 2428 -23 ct
|
||||
2448 -23 2468 -26 2489 -33 ct 2494 -7 l 2475 1 2453 6 2428 6 ct 2396 6 2370 -5 2350 -25 ct
|
||||
2331 -46 2321 -73 2321 -108 ct 2321 -142 2330 -170 2347 -190 ct 2365 -210 2388 -220 2416 -220 ct
|
||||
2440 -220 2461 -211 2478 -192 ct 2494 -173 2503 -148 2503 -117 ct p
|
||||
2468 -133 m 2468 -150 2462 -164 2452 -175 ct 2441 -187 2430 -192 2417 -192 ct
|
||||
2400 -192 2386 -187 2375 -176 ct 2364 -165 2358 -151 2357 -133 ct p ef
|
||||
2667 -220 m 2696 -220 2720 -210 2737 -189 ct 2755 -169 2764 -142 2764 -108 ct
|
||||
2764 -74 2755 -46 2737 -26 ct 2720 -5 2696 6 2667 6 ct 2637 6 2613 -5 2596 -26 ct
|
||||
2579 -46 2570 -74 2570 -108 ct 2570 -142 2579 -169 2596 -190 ct 2614 -210 2637 -220 2667 -220 ct
|
||||
p
|
||||
2667 -23 m 2686 -23 2702 -31 2713 -47 ct 2724 -64 2730 -84 2730 -107 ct 2730 -132 2724 -153 2713 -169 ct
|
||||
2702 -185 2687 -192 2667 -192 ct 2647 -192 2631 -185 2620 -169 ct 2609 -153 2604 -133 2604 -107 ct
|
||||
2604 -83 2609 -63 2621 -47 ct 2632 -31 2647 -23 2667 -23 ct p ef
|
||||
3004 0 m 2972 0 l 2972 -32 l 2948 -7 2924 5 2899 5 ct 2858 5 2838 -19 2838 -68 ct
|
||||
2838 -215 l 2870 -215 l 2870 -77 l 2870 -59 2873 -45 2879 -36 ct 2885 -27 2894 -23 2908 -23 ct
|
||||
2928 -23 2949 -35 2972 -60 ct 2972 -215 l 3004 -215 l p ef
|
||||
3260 -10 m 3239 0 3217 5 3197 5 ct 3158 5 3139 -15 3139 -56 ct 3139 -187 l
|
||||
3098 -187 l 3098 -215 l 3139 -215 l 3139 -274 l 3170 -274 l 3170 -215 l
|
||||
3243 -215 l 3243 -187 l 3170 -187 l 3170 -64 l 3170 -51 3173 -41 3179 -34 ct
|
||||
3185 -27 3193 -23 3202 -23 ct 3220 -23 3238 -27 3255 -35 ct p ef
|
||||
pom
|
||||
1 lw 6984 6031 m 15216 6031 l ps
|
||||
15232 6180 m 15764 6061 l 15775 6058 l 15785 6052 l 15792 6042 l 15794 6032 l
|
||||
15792 6020 l 15785 6010 l 15775 6004 l 15764 6001 l 15232 5882 l 15228 5882 l
|
||||
15226 5881 l 15215 5883 l 15205 5890 l 15198 5900 l 15196 5911 l 15196 6151 l
|
||||
15198 6162 l 15205 6172 l 15215 6179 l 15226 6181 l 15228 6181 l 15232 6180 l
|
||||
p ef
|
||||
pum
|
||||
9519 5896 t
|
||||
348 0 m 348 -202 l 111 -202 l 111 0 l 52 0 l 52 -437 l 111 -437 l
|
||||
111 -252 l 348 -252 l 348 -437 l 407 -437 l 407 0 l p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
854 0 m 854 -460 l 910 -460 l 910 0 l p ef
|
||||
995 0 m 995 -460 l 1051 -460 l 1051 0 l p ef
|
||||
1419 -168 m 1419 -109 1407 -66 1381 -37 ct 1355 -8 1317 6 1268 6 ct 1219 6 1182 -9 1157 -39 ct
|
||||
1132 -68 1120 -112 1120 -168 ct 1120 -284 1170 -342 1270 -342 ct 1321 -342 1359 -328 1383 -299 ct
|
||||
1407 -271 1419 -227 1419 -168 ct p
|
||||
1361 -168 m 1361 -214 1354 -248 1340 -269 ct 1327 -290 1303 -300 1271 -300 ct
|
||||
1238 -300 1215 -290 1200 -268 ct 1186 -247 1178 -214 1178 -168 ct 1178 -124 1185 -91 1200 -68 ct
|
||||
1214 -46 1237 -35 1268 -35 ct 1301 -35 1325 -46 1339 -67 ct 1354 -89 1361 -122 1361 -168 ct
|
||||
p ef
|
||||
1682 0 m 1682 -437 l 1741 -437 l 1741 0 l p ef
|
||||
2055 0 m 2055 -213 l 2055 -235 2053 -252 2048 -264 ct 2044 -276 2037 -285 2028 -291 ct
|
||||
2018 -296 2004 -299 1986 -299 ct 1959 -299 1938 -289 1922 -271 ct 1907 -253 1899 -227 1899 -194 ct
|
||||
1899 0 l 1843 0 l 1843 -264 l 1843 -303 1842 -327 1841 -335 ct 1894 -335 l
|
||||
1894 -334 1894 -332 1894 -327 ct 1895 -323 1895 -317 1895 -311 ct 1896 -306 1896 -294 1896 -278 ct
|
||||
1897 -278 l 1910 -301 1925 -318 1942 -327 ct 1959 -337 1980 -342 2005 -342 ct
|
||||
2041 -342 2068 -333 2085 -314 ct 2102 -296 2111 -266 2111 -224 ct 2111 0 l p ef
|
||||
2325 -2 m 2306 2 2288 5 2268 5 ct 2224 5 2201 -20 2201 -71 ct 2201 -295 l 2163 -295 l
|
||||
2163 -335 l 2204 -335 l 2220 -411 l 2257 -411 l 2257 -335 l 2319 -335 l
|
||||
2319 -295 l 2257 -295 l 2257 -83 l 2257 -67 2260 -56 2265 -49 ct 2270 -43 2280 -39 2293 -39 ct
|
||||
2300 -39 2311 -41 2325 -44 ct p ef
|
||||
2415 -156 m 2415 -118 2423 -88 2438 -67 ct 2454 -46 2478 -36 2508 -36 ct 2532 -36 2552 -41 2566 -50 ct
|
||||
2581 -60 2591 -72 2596 -87 ct 2645 -73 l 2625 -20 2579 6 2508 6 ct 2459 6 2421 -9 2395 -38 ct
|
||||
2369 -68 2356 -112 2356 -170 ct 2356 -225 2369 -268 2395 -297 ct 2421 -327 2458 -342 2506 -342 ct
|
||||
2605 -342 2654 -282 2654 -163 ct 2654 -156 l p
|
||||
2596 -199 m 2593 -234 2584 -260 2569 -276 ct 2554 -292 2533 -300 2505 -300 ct
|
||||
2478 -300 2457 -291 2441 -273 ct 2425 -255 2416 -230 2415 -199 ct p ef
|
||||
2726 0 m 2726 -257 l 2726 -281 2725 -307 2724 -335 ct 2777 -335 l 2779 -297 2779 -275 2779 -267 ct
|
||||
2781 -267 l 2789 -296 2800 -315 2811 -326 ct 2823 -336 2839 -342 2860 -342 ct
|
||||
2868 -342 2875 -341 2883 -339 ct 2883 -287 l 2875 -289 2866 -291 2853 -291 ct
|
||||
2830 -291 2812 -281 2800 -261 ct 2788 -241 2782 -212 2782 -175 ct 2782 0 l p ef
|
||||
2980 -156 m 2980 -118 2988 -88 3003 -67 ct 3019 -46 3043 -36 3073 -36 ct 3097 -36 3117 -41 3131 -50 ct
|
||||
3146 -60 3156 -72 3161 -87 ct 3210 -73 l 3190 -20 3144 6 3073 6 ct 3024 6 2986 -9 2960 -38 ct
|
||||
2934 -68 2921 -112 2921 -170 ct 2921 -225 2934 -268 2960 -297 ct 2986 -327 3023 -342 3071 -342 ct
|
||||
3170 -342 3219 -282 3219 -163 ct 3219 -156 l p
|
||||
3161 -199 m 3158 -234 3149 -260 3134 -276 ct 3119 -292 3098 -300 3070 -300 ct
|
||||
3043 -300 3022 -291 3006 -273 ct 2990 -255 2981 -230 2980 -199 ct p ef
|
||||
3542 -93 m 3542 -61 3530 -37 3506 -20 ct 3482 -2 3448 6 3405 6 ct 3364 6 3331 -1 3309 -14 ct
|
||||
3286 -28 3271 -50 3265 -79 ct 3314 -88 l 3319 -70 3329 -57 3343 -49 ct 3358 -40 3379 -36 3405 -36 ct
|
||||
3434 -36 3454 -41 3468 -49 ct 3481 -58 3487 -71 3487 -88 ct 3487 -102 3483 -112 3474 -121 ct
|
||||
3465 -129 3450 -136 3430 -141 ct 3390 -152 l 3358 -160 3335 -168 3321 -176 ct
|
||||
3308 -184 3297 -194 3289 -205 ct 3282 -216 3278 -230 3278 -247 ct 3278 -277 3289 -301 3311 -317 ct
|
||||
3333 -333 3364 -341 3406 -341 ct 3443 -341 3472 -334 3494 -321 ct 3516 -308 3530 -287 3536 -259 ct
|
||||
3485 -252 l 3482 -267 3474 -279 3460 -287 ct 3447 -295 3429 -299 3406 -299 ct
|
||||
3381 -299 3362 -295 3350 -287 ct 3338 -279 3332 -268 3332 -252 ct 3332 -243 3335 -235 3340 -229 ct
|
||||
3345 -223 3352 -217 3362 -213 ct 3371 -209 3392 -203 3423 -195 ct 3453 -188 3474 -181 3487 -174 ct
|
||||
3500 -168 3510 -161 3518 -153 ct 3525 -146 3531 -137 3535 -127 ct 3539 -117 3542 -106 3542 -93 ct
|
||||
p ef
|
||||
3736 -2 m 3717 2 3699 5 3679 5 ct 3635 5 3612 -20 3612 -71 ct 3612 -295 l 3574 -295 l
|
||||
3574 -335 l 3615 -335 l 3631 -411 l 3668 -411 l 3668 -335 l 3730 -335 l
|
||||
3730 -295 l 3668 -295 l 3668 -83 l 3668 -67 3671 -56 3676 -49 ct 3681 -43 3691 -39 3704 -39 ct
|
||||
3711 -39 3722 -41 3736 -44 ct p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 4317 11741 m 1830 11741 l 1830 9995 l 6804 9995 l
|
||||
6804 11741 l 4317 11741 l p ef
|
||||
0 lw 0.003 0.003 0.003 c 4317 11740 m 1829 11740 l 1829 9995 l 6804 9995 l
|
||||
6804 11740 l 4317 11740 l pc
|
||||
pum
|
||||
2271 10733 t
|
||||
424 0 m 424 -291 l 424 -324 424 -355 426 -384 ct 416 -347 407 -319 399 -298 ct
|
||||
286 0 l 245 0 l 130 -298 l 113 -350 l 103 -384 l 104 -350 l 105 -291 l
|
||||
105 0 l 52 0 l 52 -437 l 130 -437 l 246 -134 l 250 -122 254 -109 258 -95 ct
|
||||
262 -81 264 -71 266 -64 ct 267 -73 271 -85 276 -102 ct 281 -119 285 -130 287 -134 ct
|
||||
401 -437 l 477 -437 l 477 0 l p ef
|
||||
656 6 m 623 6 597 -3 580 -20 ct 563 -38 555 -63 555 -94 ct 555 -128 566 -155 589 -174 ct
|
||||
612 -192 649 -202 700 -203 ct 775 -205 l 775 -223 l 775 -250 769 -270 758 -282 ct
|
||||
746 -293 728 -299 703 -299 ct 678 -299 660 -295 649 -286 ct 637 -278 630 -264 628 -246 ct
|
||||
570 -251 l 579 -312 624 -342 704 -342 ct 747 -342 778 -332 800 -313 ct 821 -293 832 -265 832 -229 ct
|
||||
832 -84 l 832 -68 834 -55 838 -47 ct 842 -39 851 -34 863 -34 ct 868 -34 874 -35 881 -37 ct
|
||||
881 -2 l 867 1 853 3 838 3 ct 817 3 802 -2 793 -13 ct 784 -24 778 -41 777 -64 ct
|
||||
775 -64 l 761 -39 744 -20 725 -10 ct 706 1 683 6 656 6 ct p
|
||||
669 -36 m 690 -36 708 -40 724 -50 ct 740 -59 752 -72 761 -88 ct 771 -104 775 -121 775 -138 ct
|
||||
775 -166 l 714 -164 l 688 -164 668 -161 654 -156 ct 641 -151 630 -144 623 -133 ct
|
||||
616 -123 612 -109 612 -93 ct 612 -75 617 -60 627 -51 ct 637 -41 651 -36 669 -36 ct
|
||||
p ef
|
||||
926 0 m 926 -257 l 926 -281 925 -307 924 -335 ct 977 -335 l 979 -297 979 -275 979 -267 ct
|
||||
981 -267 l 989 -296 1000 -315 1011 -326 ct 1023 -336 1039 -342 1060 -342 ct
|
||||
1068 -342 1075 -341 1083 -339 ct 1083 -287 l 1075 -289 1066 -291 1053 -291 ct
|
||||
1030 -291 1012 -281 1000 -261 ct 988 -241 982 -212 982 -175 ct 982 0 l p ef
|
||||
1346 0 m 1233 -153 l 1192 -119 l 1192 0 l 1136 0 l 1136 -460 l 1192 -460 l
|
||||
1192 -173 l 1339 -335 l 1404 -335 l 1268 -191 l 1411 0 l p ef
|
||||
1948 0 m 1834 -181 l 1698 -181 l 1698 0 l 1639 0 l 1639 -437 l 1845 -437 l
|
||||
1894 -437 1932 -426 1959 -404 ct 1985 -382 1999 -351 1999 -312 ct 1999 -279 1989 -252 1970 -230 ct
|
||||
1951 -208 1925 -194 1892 -188 ct 2016 0 l p
|
||||
1939 -311 m 1939 -337 1931 -356 1913 -369 ct 1896 -383 1871 -389 1839 -389 ct
|
||||
1698 -389 l 1698 -228 l 1841 -228 l 1872 -228 1897 -235 1914 -250 ct 1931 -265 1939 -285 1939 -311 ct
|
||||
p ef
|
||||
2372 -168 m 2372 -109 2360 -66 2334 -37 ct 2308 -8 2270 6 2221 6 ct 2172 6 2135 -9 2110 -39 ct
|
||||
2085 -68 2073 -112 2073 -168 ct 2073 -284 2123 -342 2223 -342 ct 2274 -342 2312 -328 2336 -299 ct
|
||||
2360 -271 2372 -227 2372 -168 ct p
|
||||
2314 -168 m 2314 -214 2307 -248 2293 -269 ct 2280 -290 2256 -300 2224 -300 ct
|
||||
2191 -300 2168 -290 2153 -268 ct 2139 -247 2131 -214 2131 -168 ct 2131 -124 2138 -91 2153 -68 ct
|
||||
2167 -46 2190 -35 2221 -35 ct 2254 -35 2278 -46 2292 -67 ct 2307 -89 2314 -122 2314 -168 ct
|
||||
p ef
|
||||
2496 -335 m 2496 -123 l 2496 -101 2499 -84 2503 -71 ct 2507 -59 2514 -50 2524 -45 ct
|
||||
2533 -40 2547 -37 2566 -37 ct 2592 -37 2614 -46 2629 -64 ct 2645 -83 2652 -108 2652 -141 ct
|
||||
2652 -335 l 2708 -335 l 2708 -72 l 2708 -33 2709 -9 2710 0 ct 2657 0 l
|
||||
2657 -1 2657 -4 2657 -8 ct 2656 -13 2656 -18 2656 -24 ct 2656 -30 2655 -41 2655 -57 ct
|
||||
2654 -57 l 2641 -34 2626 -18 2609 -8 ct 2593 1 2572 6 2547 6 ct 2510 6 2483 -3 2466 -21 ct
|
||||
2449 -40 2440 -70 2440 -112 ct 2440 -335 l p ef
|
||||
2924 -2 m 2905 2 2887 5 2867 5 ct 2823 5 2800 -20 2800 -71 ct 2800 -295 l 2762 -295 l
|
||||
2762 -335 l 2803 -335 l 2819 -411 l 2856 -411 l 2856 -335 l 2918 -335 l
|
||||
2918 -295 l 2856 -295 l 2856 -83 l 2856 -67 2859 -56 2864 -49 ct 2869 -43 2879 -39 2892 -39 ct
|
||||
2899 -39 2910 -41 2924 -44 ct p ef
|
||||
3014 -156 m 3014 -118 3022 -88 3037 -67 ct 3053 -46 3077 -36 3107 -36 ct 3131 -36 3151 -41 3165 -50 ct
|
||||
3180 -60 3190 -72 3195 -87 ct 3244 -73 l 3224 -20 3178 6 3107 6 ct 3058 6 3020 -9 2994 -38 ct
|
||||
2968 -68 2955 -112 2955 -170 ct 2955 -225 2968 -268 2994 -297 ct 3020 -327 3057 -342 3105 -342 ct
|
||||
3204 -342 3253 -282 3253 -163 ct 3253 -156 l p
|
||||
3195 -199 m 3192 -234 3183 -260 3168 -276 ct 3153 -292 3132 -300 3104 -300 ct
|
||||
3077 -300 3056 -291 3040 -273 ct 3024 -255 3015 -230 3014 -199 ct p ef
|
||||
3325 0 m 3325 -257 l 3325 -281 3324 -307 3323 -335 ct 3376 -335 l 3378 -297 3378 -275 3378 -267 ct
|
||||
3380 -267 l 3388 -296 3399 -315 3410 -326 ct 3422 -336 3438 -342 3459 -342 ct
|
||||
3467 -342 3474 -341 3482 -339 ct 3482 -287 l 3474 -289 3465 -291 3452 -291 ct
|
||||
3429 -291 3411 -281 3399 -261 ct 3387 -241 3381 -212 3381 -175 ct 3381 0 l p ef
|
||||
4059 -123 m 4059 -84 4045 -54 4017 -32 ct 3988 -11 3949 0 3898 0 ct 3721 0 l
|
||||
3721 -437 l 3880 -437 l 3982 -437 4034 -402 4034 -331 ct 4034 -305 4026 -283 4012 -266 ct
|
||||
3997 -248 3977 -236 3951 -230 ct 3985 -226 4012 -215 4031 -195 ct 4050 -176 4059 -152 4059 -123 ct
|
||||
p
|
||||
3974 -324 m 3974 -347 3966 -364 3950 -374 ct 3934 -384 3910 -389 3880 -389 ct
|
||||
3780 -389 l 3780 -251 l 3880 -251 l 3911 -251 3935 -257 3951 -269 ct 3966 -281 3974 -299 3974 -324 ct
|
||||
p
|
||||
3999 -128 m 3999 -179 3963 -205 3891 -205 ct 3780 -205 l 3780 -47 l 3895 -47 l
|
||||
3932 -47 3958 -54 3974 -68 ct 3991 -81 3999 -101 3999 -128 ct p ef
|
||||
pom
|
||||
pum
|
||||
2430 11444 t
|
||||
128 6 m 95 6 69 -3 52 -20 ct 35 -38 27 -63 27 -94 ct 27 -128 38 -155 61 -174 ct
|
||||
84 -192 121 -202 172 -203 ct 247 -205 l 247 -223 l 247 -250 241 -270 230 -282 ct
|
||||
218 -293 200 -299 175 -299 ct 150 -299 132 -295 121 -286 ct 109 -278 102 -264 100 -246 ct
|
||||
42 -251 l 51 -312 96 -342 176 -342 ct 219 -342 250 -332 272 -313 ct 293 -293 304 -265 304 -229 ct
|
||||
304 -84 l 304 -68 306 -55 310 -47 ct 314 -39 323 -34 335 -34 ct 340 -34 346 -35 353 -37 ct
|
||||
353 -2 l 339 1 325 3 310 3 ct 289 3 274 -2 265 -13 ct 256 -24 250 -41 249 -64 ct
|
||||
247 -64 l 233 -39 216 -20 197 -10 ct 178 1 155 6 128 6 ct p
|
||||
141 -36 m 162 -36 180 -40 196 -50 ct 212 -59 224 -72 233 -88 ct 243 -104 247 -121 247 -138 ct
|
||||
247 -166 l 186 -164 l 160 -164 140 -161 126 -156 ct 113 -151 102 -144 95 -133 ct
|
||||
88 -123 84 -109 84 -93 ct 84 -75 89 -60 99 -51 ct 109 -41 123 -36 141 -36 ct p ef
|
||||
648 -93 m 648 -61 636 -37 612 -20 ct 588 -2 554 6 511 6 ct 470 6 437 -1 415 -14 ct
|
||||
392 -28 377 -50 371 -79 ct 420 -88 l 425 -70 435 -57 449 -49 ct 464 -40 485 -36 511 -36 ct
|
||||
540 -36 560 -41 574 -49 ct 587 -58 593 -71 593 -88 ct 593 -102 589 -112 580 -121 ct
|
||||
571 -129 556 -136 536 -141 ct 496 -152 l 464 -160 441 -168 427 -176 ct 414 -184 403 -194 395 -205 ct
|
||||
388 -216 384 -230 384 -247 ct 384 -277 395 -301 417 -317 ct 439 -333 470 -341 512 -341 ct
|
||||
549 -341 578 -334 600 -321 ct 622 -308 636 -287 642 -259 ct 591 -252 l 588 -267 580 -279 566 -287 ct
|
||||
553 -295 535 -299 512 -299 ct 487 -299 468 -295 456 -287 ct 444 -279 438 -268 438 -252 ct
|
||||
438 -243 441 -235 446 -229 ct 451 -223 458 -217 468 -213 ct 477 -209 498 -203 529 -195 ct
|
||||
559 -188 580 -181 593 -174 ct 606 -168 616 -161 624 -153 ct 631 -146 637 -137 641 -127 ct
|
||||
645 -117 648 -106 648 -93 ct p ef
|
||||
906 0 m 906 -437 l 965 -437 l 965 0 l p ef
|
||||
1358 0 m 1125 -372 l 1126 -342 l 1128 -290 l 1128 0 l 1075 0 l 1075 -437 l
|
||||
1144 -437 l 1380 -62 l 1378 -103 1376 -132 1376 -150 ct 1376 -437 l 1430 -437 l
|
||||
1430 0 l p ef
|
||||
1844 0 m 1794 -128 l 1595 -128 l 1545 0 l 1483 0 l 1662 -437 l 1729 -437 l
|
||||
1904 0 l p
|
||||
1694 -392 m 1692 -384 l 1686 -366 1679 -344 1669 -318 ct 1613 -174 l 1776 -174 l
|
||||
1720 -318 l 1714 -332 1709 -349 1703 -366 ct p ef
|
||||
2151 -395 m 2102 -395 2065 -379 2038 -348 ct 2011 -317 1997 -275 1997 -220 ct
|
||||
1997 -167 2011 -124 2039 -91 ct 2067 -59 2105 -42 2153 -42 ct 2214 -42 2260 -73 2291 -133 ct
|
||||
2339 -109 l 2321 -72 2296 -43 2264 -23 ct 2231 -4 2193 6 2150 6 ct 2106 6 2068 -3 2036 -21 ct
|
||||
2004 -40 1979 -66 1963 -100 ct 1946 -134 1937 -174 1937 -220 ct 1937 -290 1956 -345 1994 -384 ct
|
||||
2031 -424 2083 -443 2150 -443 ct 2196 -443 2235 -434 2267 -416 ct 2298 -398 2321 -371 2335 -335 ct
|
||||
2279 -317 l 2269 -342 2253 -361 2230 -375 ct 2208 -388 2181 -395 2151 -395 ct
|
||||
p ef
|
||||
2587 -389 m 2587 0 l 2528 0 l 2528 -389 l 2378 -389 l 2378 -437 l
|
||||
2737 -437 l 2737 -389 l p ef
|
||||
2811 0 m 2811 -437 l 2870 -437 l 2870 0 l p ef
|
||||
3170 0 m 3109 0 l 2931 -437 l 2993 -437 l 3114 -129 l 3140 -52 l
|
||||
3166 -129 l 3286 -437 l 3349 -437 l p ef
|
||||
3404 0 m 3404 -437 l 3736 -437 l 3736 -389 l 3463 -389 l 3463 -248 l
|
||||
3717 -248 l 3717 -201 l 3463 -201 l 3463 -48 l 3748 -48 l 3748 0 l
|
||||
p ef
|
||||
pom
|
||||
6772 6151 m 6699 6151 6626 6188 6626 6226 ct 6626 6526 l 6626 6563 6553 6601 6480 6601 ct
|
||||
6553 6601 6626 6639 6626 6676 ct 6626 6976 l 6626 7014 6699 7052 6772 7052 ct
|
||||
ps
|
||||
6480 6151 m 6480 6151 l pc
|
||||
6772 7052 m 6772 7052 l pc
|
||||
pum
|
||||
2948 8062 t
|
||||
210 0 m 178 0 l 178 -138 l 178 -157 175 -171 169 -180 ct 163 -188 153 -192 140 -192 ct
|
||||
120 -192 99 -180 77 -156 ct 77 0 l 44 0 l 44 -291 l 77 -291 l 77 -184 l
|
||||
100 -208 124 -220 150 -220 ct 190 -220 210 -196 210 -147 ct p ef
|
||||
471 -107 m 323 -107 l 323 -82 330 -62 344 -46 ct 358 -30 376 -23 396 -23 ct
|
||||
416 -23 436 -26 457 -33 ct 462 -7 l 443 1 421 6 396 6 ct 364 6 338 -5 318 -25 ct
|
||||
299 -46 289 -73 289 -108 ct 289 -142 298 -170 315 -190 ct 333 -210 356 -220 384 -220 ct
|
||||
408 -220 429 -211 446 -192 ct 462 -173 471 -148 471 -117 ct p
|
||||
436 -133 m 436 -150 430 -164 420 -175 ct 409 -187 398 -192 385 -192 ct 368 -192 354 -187 343 -176 ct
|
||||
332 -165 326 -151 325 -133 ct p ef
|
||||
703 0 m 615 0 l 615 -264 l 558 -264 l 558 -291 l 647 -291 l 647 -28 l
|
||||
703 -28 l p ef
|
||||
957 0 m 869 0 l 869 -264 l 812 -264 l 812 -291 l 901 -291 l 901 -28 l
|
||||
957 -28 l p ef
|
||||
1143 -220 m 1172 -220 1196 -210 1213 -189 ct 1231 -169 1240 -142 1240 -108 ct
|
||||
1240 -74 1231 -46 1213 -26 ct 1196 -5 1172 6 1143 6 ct 1113 6 1089 -5 1072 -26 ct
|
||||
1055 -46 1046 -74 1046 -108 ct 1046 -142 1055 -169 1072 -190 ct 1090 -210 1113 -220 1143 -220 ct
|
||||
p
|
||||
1143 -23 m 1162 -23 1178 -31 1189 -47 ct 1200 -64 1206 -84 1206 -107 ct 1206 -132 1200 -153 1189 -169 ct
|
||||
1178 -185 1163 -192 1143 -192 ct 1123 -192 1107 -185 1096 -169 ct 1085 -153 1080 -133 1080 -107 ct
|
||||
1080 -83 1085 -63 1097 -47 ct 1108 -31 1123 -23 1143 -23 ct p ef
|
||||
1456 -101 m 1333 -101 l 1333 -132 l 1456 -132 l p ef
|
||||
1736 -10 m 1715 0 1693 5 1673 5 ct 1634 5 1615 -15 1615 -56 ct 1615 -187 l
|
||||
1574 -187 l 1574 -215 l 1615 -215 l 1615 -274 l 1646 -274 l 1646 -215 l
|
||||
1719 -215 l 1719 -187 l 1646 -187 l 1646 -64 l 1646 -51 1649 -41 1655 -34 ct
|
||||
1661 -27 1669 -23 1678 -23 ct 1696 -23 1714 -27 1731 -35 ct p ef
|
||||
1919 -297 m 1925 -297 1930 -294 1934 -290 ct 1939 -286 1941 -281 1941 -274 ct
|
||||
1941 -268 1939 -263 1934 -259 ct 1930 -254 1925 -252 1919 -252 ct 1913 -252 1908 -254 1904 -259 ct
|
||||
1900 -263 1897 -269 1897 -274 ct 1897 -280 1900 -286 1904 -290 ct 1908 -294 1913 -297 1919 -297 ct
|
||||
p
|
||||
1935 0 m 1902 0 l 1902 -187 l 1839 -187 l 1839 -215 l 1935 -215 l
|
||||
p ef
|
||||
2259 0 m 2227 0 l 2227 -141 l 2227 -175 2221 -192 2208 -192 ct 2202 -192 2194 -187 2187 -175 ct
|
||||
2179 -163 2175 -157 2175 -155 ct 2175 0 l 2143 0 l 2143 -141 l 2143 -175 2137 -192 2124 -192 ct
|
||||
2117 -192 2110 -187 2103 -175 ct 2095 -163 2091 -157 2091 -155 ct 2091 0 l 2059 0 l
|
||||
2059 -215 l 2090 -215 l 2090 -183 l 2096 -194 2103 -203 2111 -210 ct 2120 -217 2128 -220 2136 -220 ct
|
||||
2145 -220 2153 -217 2159 -210 ct 2166 -203 2171 -194 2174 -183 ct 2180 -194 2187 -203 2195 -210 ct
|
||||
2204 -217 2212 -220 2220 -220 ct 2246 -220 2259 -197 2259 -151 ct p ef
|
||||
2503 -107 m 2355 -107 l 2355 -82 2362 -62 2376 -46 ct 2390 -30 2408 -23 2428 -23 ct
|
||||
2448 -23 2468 -26 2489 -33 ct 2494 -7 l 2475 1 2453 6 2428 6 ct 2396 6 2370 -5 2350 -25 ct
|
||||
2331 -46 2321 -73 2321 -108 ct 2321 -142 2330 -170 2347 -190 ct 2365 -210 2388 -220 2416 -220 ct
|
||||
2440 -220 2461 -211 2478 -192 ct 2494 -173 2503 -148 2503 -117 ct p
|
||||
2468 -133 m 2468 -150 2462 -164 2452 -175 ct 2441 -187 2430 -192 2417 -192 ct
|
||||
2400 -192 2386 -187 2375 -176 ct 2364 -165 2358 -151 2357 -133 ct p ef
|
||||
2667 -220 m 2696 -220 2720 -210 2737 -189 ct 2755 -169 2764 -142 2764 -108 ct
|
||||
2764 -74 2755 -46 2737 -26 ct 2720 -5 2696 6 2667 6 ct 2637 6 2613 -5 2596 -26 ct
|
||||
2579 -46 2570 -74 2570 -108 ct 2570 -142 2579 -169 2596 -190 ct 2614 -210 2637 -220 2667 -220 ct
|
||||
p
|
||||
2667 -23 m 2686 -23 2702 -31 2713 -47 ct 2724 -64 2730 -84 2730 -107 ct 2730 -132 2724 -153 2713 -169 ct
|
||||
2702 -185 2687 -192 2667 -192 ct 2647 -192 2631 -185 2620 -169 ct 2609 -153 2604 -133 2604 -107 ct
|
||||
2604 -83 2609 -63 2621 -47 ct 2632 -31 2647 -23 2667 -23 ct p ef
|
||||
3004 0 m 2972 0 l 2972 -32 l 2948 -7 2924 5 2899 5 ct 2858 5 2838 -19 2838 -68 ct
|
||||
2838 -215 l 2870 -215 l 2870 -77 l 2870 -59 2873 -45 2879 -36 ct 2885 -27 2894 -23 2908 -23 ct
|
||||
2928 -23 2949 -35 2972 -60 ct 2972 -215 l 3004 -215 l p ef
|
||||
3260 -10 m 3239 0 3217 5 3197 5 ct 3158 5 3139 -15 3139 -56 ct 3139 -187 l
|
||||
3098 -187 l 3098 -215 l 3139 -215 l 3139 -274 l 3170 -274 l 3170 -215 l
|
||||
3243 -215 l 3243 -187 l 3170 -187 l 3170 -64 l 3170 -51 3173 -41 3179 -34 ct
|
||||
3185 -27 3193 -23 3202 -23 ct 3220 -23 3238 -27 3255 -35 ct p ef
|
||||
pom
|
||||
1 lw 6984 7330 m 15216 7330 l ps
|
||||
15232 7479 m 15764 7360 l 15775 7357 l 15785 7351 l 15792 7341 l 15794 7331 l
|
||||
15792 7319 l 15785 7309 l 15775 7303 l 15764 7300 l 15232 7181 l 15228 7181 l
|
||||
15226 7180 l 15215 7182 l 15205 7189 l 15198 7199 l 15196 7210 l 15196 7450 l
|
||||
15198 7461 l 15205 7471 l 15215 7478 l 15226 7480 l 15228 7480 l 15232 7479 l
|
||||
p ef
|
||||
pum
|
||||
9519 7195 t
|
||||
348 0 m 348 -202 l 111 -202 l 111 0 l 52 0 l 52 -437 l 111 -437 l
|
||||
111 -252 l 348 -252 l 348 -437 l 407 -437 l 407 0 l p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
854 0 m 854 -460 l 910 -460 l 910 0 l p ef
|
||||
995 0 m 995 -460 l 1051 -460 l 1051 0 l p ef
|
||||
1419 -168 m 1419 -109 1407 -66 1381 -37 ct 1355 -8 1317 6 1268 6 ct 1219 6 1182 -9 1157 -39 ct
|
||||
1132 -68 1120 -112 1120 -168 ct 1120 -284 1170 -342 1270 -342 ct 1321 -342 1359 -328 1383 -299 ct
|
||||
1407 -271 1419 -227 1419 -168 ct p
|
||||
1361 -168 m 1361 -214 1354 -248 1340 -269 ct 1327 -290 1303 -300 1271 -300 ct
|
||||
1238 -300 1215 -290 1200 -268 ct 1186 -247 1178 -214 1178 -168 ct 1178 -124 1185 -91 1200 -68 ct
|
||||
1214 -46 1237 -35 1268 -35 ct 1301 -35 1325 -46 1339 -67 ct 1354 -89 1361 -122 1361 -168 ct
|
||||
p ef
|
||||
1682 0 m 1682 -437 l 1741 -437 l 1741 0 l p ef
|
||||
2055 0 m 2055 -213 l 2055 -235 2053 -252 2048 -264 ct 2044 -276 2037 -285 2028 -291 ct
|
||||
2018 -296 2004 -299 1986 -299 ct 1959 -299 1938 -289 1922 -271 ct 1907 -253 1899 -227 1899 -194 ct
|
||||
1899 0 l 1843 0 l 1843 -264 l 1843 -303 1842 -327 1841 -335 ct 1894 -335 l
|
||||
1894 -334 1894 -332 1894 -327 ct 1895 -323 1895 -317 1895 -311 ct 1896 -306 1896 -294 1896 -278 ct
|
||||
1897 -278 l 1910 -301 1925 -318 1942 -327 ct 1959 -337 1980 -342 2005 -342 ct
|
||||
2041 -342 2068 -333 2085 -314 ct 2102 -296 2111 -266 2111 -224 ct 2111 0 l p ef
|
||||
2325 -2 m 2306 2 2288 5 2268 5 ct 2224 5 2201 -20 2201 -71 ct 2201 -295 l 2163 -295 l
|
||||
2163 -335 l 2204 -335 l 2220 -411 l 2257 -411 l 2257 -335 l 2319 -335 l
|
||||
2319 -295 l 2257 -295 l 2257 -83 l 2257 -67 2260 -56 2265 -49 ct 2270 -43 2280 -39 2293 -39 ct
|
||||
2300 -39 2311 -41 2325 -44 ct p ef
|
||||
2415 -156 m 2415 -118 2423 -88 2438 -67 ct 2454 -46 2478 -36 2508 -36 ct 2532 -36 2552 -41 2566 -50 ct
|
||||
2581 -60 2591 -72 2596 -87 ct 2645 -73 l 2625 -20 2579 6 2508 6 ct 2459 6 2421 -9 2395 -38 ct
|
||||
2369 -68 2356 -112 2356 -170 ct 2356 -225 2369 -268 2395 -297 ct 2421 -327 2458 -342 2506 -342 ct
|
||||
2605 -342 2654 -282 2654 -163 ct 2654 -156 l p
|
||||
2596 -199 m 2593 -234 2584 -260 2569 -276 ct 2554 -292 2533 -300 2505 -300 ct
|
||||
2478 -300 2457 -291 2441 -273 ct 2425 -255 2416 -230 2415 -199 ct p ef
|
||||
2726 0 m 2726 -257 l 2726 -281 2725 -307 2724 -335 ct 2777 -335 l 2779 -297 2779 -275 2779 -267 ct
|
||||
2781 -267 l 2789 -296 2800 -315 2811 -326 ct 2823 -336 2839 -342 2860 -342 ct
|
||||
2868 -342 2875 -341 2883 -339 ct 2883 -287 l 2875 -289 2866 -291 2853 -291 ct
|
||||
2830 -291 2812 -281 2800 -261 ct 2788 -241 2782 -212 2782 -175 ct 2782 0 l p ef
|
||||
2980 -156 m 2980 -118 2988 -88 3003 -67 ct 3019 -46 3043 -36 3073 -36 ct 3097 -36 3117 -41 3131 -50 ct
|
||||
3146 -60 3156 -72 3161 -87 ct 3210 -73 l 3190 -20 3144 6 3073 6 ct 3024 6 2986 -9 2960 -38 ct
|
||||
2934 -68 2921 -112 2921 -170 ct 2921 -225 2934 -268 2960 -297 ct 2986 -327 3023 -342 3071 -342 ct
|
||||
3170 -342 3219 -282 3219 -163 ct 3219 -156 l p
|
||||
3161 -199 m 3158 -234 3149 -260 3134 -276 ct 3119 -292 3098 -300 3070 -300 ct
|
||||
3043 -300 3022 -291 3006 -273 ct 2990 -255 2981 -230 2980 -199 ct p ef
|
||||
3542 -93 m 3542 -61 3530 -37 3506 -20 ct 3482 -2 3448 6 3405 6 ct 3364 6 3331 -1 3309 -14 ct
|
||||
3286 -28 3271 -50 3265 -79 ct 3314 -88 l 3319 -70 3329 -57 3343 -49 ct 3358 -40 3379 -36 3405 -36 ct
|
||||
3434 -36 3454 -41 3468 -49 ct 3481 -58 3487 -71 3487 -88 ct 3487 -102 3483 -112 3474 -121 ct
|
||||
3465 -129 3450 -136 3430 -141 ct 3390 -152 l 3358 -160 3335 -168 3321 -176 ct
|
||||
3308 -184 3297 -194 3289 -205 ct 3282 -216 3278 -230 3278 -247 ct 3278 -277 3289 -301 3311 -317 ct
|
||||
3333 -333 3364 -341 3406 -341 ct 3443 -341 3472 -334 3494 -321 ct 3516 -308 3530 -287 3536 -259 ct
|
||||
3485 -252 l 3482 -267 3474 -279 3460 -287 ct 3447 -295 3429 -299 3406 -299 ct
|
||||
3381 -299 3362 -295 3350 -287 ct 3338 -279 3332 -268 3332 -252 ct 3332 -243 3335 -235 3340 -229 ct
|
||||
3345 -223 3352 -217 3362 -213 ct 3371 -209 3392 -203 3423 -195 ct 3453 -188 3474 -181 3487 -174 ct
|
||||
3500 -168 3510 -161 3518 -153 ct 3525 -146 3531 -137 3535 -127 ct 3539 -117 3542 -106 3542 -93 ct
|
||||
p ef
|
||||
3736 -2 m 3717 2 3699 5 3679 5 ct 3635 5 3612 -20 3612 -71 ct 3612 -295 l 3574 -295 l
|
||||
3574 -335 l 3615 -335 l 3631 -411 l 3668 -411 l 3668 -335 l 3730 -335 l
|
||||
3730 -295 l 3668 -295 l 3668 -83 l 3668 -67 3671 -56 3676 -49 ct 3681 -43 3691 -39 3704 -39 ct
|
||||
3711 -39 3722 -41 3736 -44 ct p ef
|
||||
pom
|
||||
0 lw 6772 7450 m 6699 7450 6626 7487 6626 7525 ct 6626 7825 l 6626 7862 6553 7900 6480 7900 ct
|
||||
6553 7900 6626 7938 6626 7975 ct 6626 8275 l 6626 8313 6699 8351 6772 8351 ct
|
||||
ps
|
||||
6480 7450 m 6480 7450 l pc
|
||||
6772 8351 m 6772 8351 l pc
|
||||
pum
|
||||
2948 9361 t
|
||||
210 0 m 178 0 l 178 -138 l 178 -157 175 -171 169 -180 ct 163 -188 153 -192 140 -192 ct
|
||||
120 -192 99 -180 77 -156 ct 77 0 l 44 0 l 44 -291 l 77 -291 l 77 -184 l
|
||||
100 -208 124 -220 150 -220 ct 190 -220 210 -196 210 -147 ct p ef
|
||||
471 -107 m 323 -107 l 323 -82 330 -62 344 -46 ct 358 -30 376 -23 396 -23 ct
|
||||
416 -23 436 -26 457 -33 ct 462 -7 l 443 1 421 6 396 6 ct 364 6 338 -5 318 -25 ct
|
||||
299 -46 289 -73 289 -108 ct 289 -142 298 -170 315 -190 ct 333 -210 356 -220 384 -220 ct
|
||||
408 -220 429 -211 446 -192 ct 462 -173 471 -148 471 -117 ct p
|
||||
436 -133 m 436 -150 430 -164 420 -175 ct 409 -187 398 -192 385 -192 ct 368 -192 354 -187 343 -176 ct
|
||||
332 -165 326 -151 325 -133 ct p ef
|
||||
703 0 m 615 0 l 615 -264 l 558 -264 l 558 -291 l 647 -291 l 647 -28 l
|
||||
703 -28 l p ef
|
||||
957 0 m 869 0 l 869 -264 l 812 -264 l 812 -291 l 901 -291 l 901 -28 l
|
||||
957 -28 l p ef
|
||||
1143 -220 m 1172 -220 1196 -210 1213 -189 ct 1231 -169 1240 -142 1240 -108 ct
|
||||
1240 -74 1231 -46 1213 -26 ct 1196 -5 1172 6 1143 6 ct 1113 6 1089 -5 1072 -26 ct
|
||||
1055 -46 1046 -74 1046 -108 ct 1046 -142 1055 -169 1072 -190 ct 1090 -210 1113 -220 1143 -220 ct
|
||||
p
|
||||
1143 -23 m 1162 -23 1178 -31 1189 -47 ct 1200 -64 1206 -84 1206 -107 ct 1206 -132 1200 -153 1189 -169 ct
|
||||
1178 -185 1163 -192 1143 -192 ct 1123 -192 1107 -185 1096 -169 ct 1085 -153 1080 -133 1080 -107 ct
|
||||
1080 -83 1085 -63 1097 -47 ct 1108 -31 1123 -23 1143 -23 ct p ef
|
||||
1456 -101 m 1333 -101 l 1333 -132 l 1456 -132 l p ef
|
||||
1736 -10 m 1715 0 1693 5 1673 5 ct 1634 5 1615 -15 1615 -56 ct 1615 -187 l
|
||||
1574 -187 l 1574 -215 l 1615 -215 l 1615 -274 l 1646 -274 l 1646 -215 l
|
||||
1719 -215 l 1719 -187 l 1646 -187 l 1646 -64 l 1646 -51 1649 -41 1655 -34 ct
|
||||
1661 -27 1669 -23 1678 -23 ct 1696 -23 1714 -27 1731 -35 ct p ef
|
||||
1919 -297 m 1925 -297 1930 -294 1934 -290 ct 1939 -286 1941 -281 1941 -274 ct
|
||||
1941 -268 1939 -263 1934 -259 ct 1930 -254 1925 -252 1919 -252 ct 1913 -252 1908 -254 1904 -259 ct
|
||||
1900 -263 1897 -269 1897 -274 ct 1897 -280 1900 -286 1904 -290 ct 1908 -294 1913 -297 1919 -297 ct
|
||||
p
|
||||
1935 0 m 1902 0 l 1902 -187 l 1839 -187 l 1839 -215 l 1935 -215 l
|
||||
p ef
|
||||
2259 0 m 2227 0 l 2227 -141 l 2227 -175 2221 -192 2208 -192 ct 2202 -192 2194 -187 2187 -175 ct
|
||||
2179 -163 2175 -157 2175 -155 ct 2175 0 l 2143 0 l 2143 -141 l 2143 -175 2137 -192 2124 -192 ct
|
||||
2117 -192 2110 -187 2103 -175 ct 2095 -163 2091 -157 2091 -155 ct 2091 0 l 2059 0 l
|
||||
2059 -215 l 2090 -215 l 2090 -183 l 2096 -194 2103 -203 2111 -210 ct 2120 -217 2128 -220 2136 -220 ct
|
||||
2145 -220 2153 -217 2159 -210 ct 2166 -203 2171 -194 2174 -183 ct 2180 -194 2187 -203 2195 -210 ct
|
||||
2204 -217 2212 -220 2220 -220 ct 2246 -220 2259 -197 2259 -151 ct p ef
|
||||
2503 -107 m 2355 -107 l 2355 -82 2362 -62 2376 -46 ct 2390 -30 2408 -23 2428 -23 ct
|
||||
2448 -23 2468 -26 2489 -33 ct 2494 -7 l 2475 1 2453 6 2428 6 ct 2396 6 2370 -5 2350 -25 ct
|
||||
2331 -46 2321 -73 2321 -108 ct 2321 -142 2330 -170 2347 -190 ct 2365 -210 2388 -220 2416 -220 ct
|
||||
2440 -220 2461 -211 2478 -192 ct 2494 -173 2503 -148 2503 -117 ct p
|
||||
2468 -133 m 2468 -150 2462 -164 2452 -175 ct 2441 -187 2430 -192 2417 -192 ct
|
||||
2400 -192 2386 -187 2375 -176 ct 2364 -165 2358 -151 2357 -133 ct p ef
|
||||
2667 -220 m 2696 -220 2720 -210 2737 -189 ct 2755 -169 2764 -142 2764 -108 ct
|
||||
2764 -74 2755 -46 2737 -26 ct 2720 -5 2696 6 2667 6 ct 2637 6 2613 -5 2596 -26 ct
|
||||
2579 -46 2570 -74 2570 -108 ct 2570 -142 2579 -169 2596 -190 ct 2614 -210 2637 -220 2667 -220 ct
|
||||
p
|
||||
2667 -23 m 2686 -23 2702 -31 2713 -47 ct 2724 -64 2730 -84 2730 -107 ct 2730 -132 2724 -153 2713 -169 ct
|
||||
2702 -185 2687 -192 2667 -192 ct 2647 -192 2631 -185 2620 -169 ct 2609 -153 2604 -133 2604 -107 ct
|
||||
2604 -83 2609 -63 2621 -47 ct 2632 -31 2647 -23 2667 -23 ct p ef
|
||||
3004 0 m 2972 0 l 2972 -32 l 2948 -7 2924 5 2899 5 ct 2858 5 2838 -19 2838 -68 ct
|
||||
2838 -215 l 2870 -215 l 2870 -77 l 2870 -59 2873 -45 2879 -36 ct 2885 -27 2894 -23 2908 -23 ct
|
||||
2928 -23 2949 -35 2972 -60 ct 2972 -215 l 3004 -215 l p ef
|
||||
3260 -10 m 3239 0 3217 5 3197 5 ct 3158 5 3139 -15 3139 -56 ct 3139 -187 l
|
||||
3098 -187 l 3098 -215 l 3139 -215 l 3139 -274 l 3170 -274 l 3170 -215 l
|
||||
3243 -215 l 3243 -187 l 3170 -187 l 3170 -64 l 3170 -51 3173 -41 3179 -34 ct
|
||||
3185 -27 3193 -23 3202 -23 ct 3220 -23 3238 -27 3255 -35 ct p ef
|
||||
pom
|
||||
1 lw 6984 8629 m 15216 8629 l ps
|
||||
15232 8778 m 15764 8659 l 15775 8656 l 15785 8650 l 15792 8640 l 15794 8630 l
|
||||
15792 8618 l 15785 8609 l 15775 8603 l 15764 8600 l 15232 8481 l 15228 8481 l
|
||||
15226 8480 l 15215 8482 l 15205 8489 l 15198 8499 l 15196 8510 l 15196 8749 l
|
||||
15198 8760 l 15205 8770 l 15215 8777 l 15226 8779 l 15228 8779 l 15232 8778 l
|
||||
p ef
|
||||
pum
|
||||
9519 8495 t
|
||||
348 0 m 348 -202 l 111 -202 l 111 0 l 52 0 l 52 -437 l 111 -437 l
|
||||
111 -252 l 348 -252 l 348 -437 l 407 -437 l 407 0 l p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
854 0 m 854 -460 l 910 -460 l 910 0 l p ef
|
||||
995 0 m 995 -460 l 1051 -460 l 1051 0 l p ef
|
||||
1419 -168 m 1419 -109 1407 -66 1381 -37 ct 1355 -8 1317 6 1268 6 ct 1219 6 1182 -9 1157 -39 ct
|
||||
1132 -68 1120 -112 1120 -168 ct 1120 -284 1170 -342 1270 -342 ct 1321 -342 1359 -328 1383 -299 ct
|
||||
1407 -271 1419 -227 1419 -168 ct p
|
||||
1361 -168 m 1361 -214 1354 -248 1340 -269 ct 1327 -290 1303 -300 1271 -300 ct
|
||||
1238 -300 1215 -290 1200 -268 ct 1186 -247 1178 -214 1178 -168 ct 1178 -124 1185 -91 1200 -68 ct
|
||||
1214 -46 1237 -35 1268 -35 ct 1301 -35 1325 -46 1339 -67 ct 1354 -89 1361 -122 1361 -168 ct
|
||||
p ef
|
||||
1682 0 m 1682 -437 l 1741 -437 l 1741 0 l p ef
|
||||
2055 0 m 2055 -213 l 2055 -235 2053 -252 2048 -264 ct 2044 -276 2037 -285 2028 -291 ct
|
||||
2018 -296 2004 -299 1986 -299 ct 1959 -299 1938 -289 1922 -271 ct 1907 -253 1899 -227 1899 -194 ct
|
||||
1899 0 l 1843 0 l 1843 -264 l 1843 -303 1842 -327 1841 -335 ct 1894 -335 l
|
||||
1894 -334 1894 -332 1894 -327 ct 1895 -323 1895 -317 1895 -311 ct 1896 -306 1896 -294 1896 -278 ct
|
||||
1897 -278 l 1910 -301 1925 -318 1942 -327 ct 1959 -337 1980 -342 2005 -342 ct
|
||||
2041 -342 2068 -333 2085 -314 ct 2102 -296 2111 -266 2111 -224 ct 2111 0 l p ef
|
||||
2325 -2 m 2306 2 2288 5 2268 5 ct 2224 5 2201 -20 2201 -71 ct 2201 -295 l 2163 -295 l
|
||||
2163 -335 l 2204 -335 l 2220 -411 l 2257 -411 l 2257 -335 l 2319 -335 l
|
||||
2319 -295 l 2257 -295 l 2257 -83 l 2257 -67 2260 -56 2265 -49 ct 2270 -43 2280 -39 2293 -39 ct
|
||||
2300 -39 2311 -41 2325 -44 ct p ef
|
||||
2415 -156 m 2415 -118 2423 -88 2438 -67 ct 2454 -46 2478 -36 2508 -36 ct 2532 -36 2552 -41 2566 -50 ct
|
||||
2581 -60 2591 -72 2596 -87 ct 2645 -73 l 2625 -20 2579 6 2508 6 ct 2459 6 2421 -9 2395 -38 ct
|
||||
2369 -68 2356 -112 2356 -170 ct 2356 -225 2369 -268 2395 -297 ct 2421 -327 2458 -342 2506 -342 ct
|
||||
2605 -342 2654 -282 2654 -163 ct 2654 -156 l p
|
||||
2596 -199 m 2593 -234 2584 -260 2569 -276 ct 2554 -292 2533 -300 2505 -300 ct
|
||||
2478 -300 2457 -291 2441 -273 ct 2425 -255 2416 -230 2415 -199 ct p ef
|
||||
2726 0 m 2726 -257 l 2726 -281 2725 -307 2724 -335 ct 2777 -335 l 2779 -297 2779 -275 2779 -267 ct
|
||||
2781 -267 l 2789 -296 2800 -315 2811 -326 ct 2823 -336 2839 -342 2860 -342 ct
|
||||
2868 -342 2875 -341 2883 -339 ct 2883 -287 l 2875 -289 2866 -291 2853 -291 ct
|
||||
2830 -291 2812 -281 2800 -261 ct 2788 -241 2782 -212 2782 -175 ct 2782 0 l p ef
|
||||
2980 -156 m 2980 -118 2988 -88 3003 -67 ct 3019 -46 3043 -36 3073 -36 ct 3097 -36 3117 -41 3131 -50 ct
|
||||
3146 -60 3156 -72 3161 -87 ct 3210 -73 l 3190 -20 3144 6 3073 6 ct 3024 6 2986 -9 2960 -38 ct
|
||||
2934 -68 2921 -112 2921 -170 ct 2921 -225 2934 -268 2960 -297 ct 2986 -327 3023 -342 3071 -342 ct
|
||||
3170 -342 3219 -282 3219 -163 ct 3219 -156 l p
|
||||
3161 -199 m 3158 -234 3149 -260 3134 -276 ct 3119 -292 3098 -300 3070 -300 ct
|
||||
3043 -300 3022 -291 3006 -273 ct 2990 -255 2981 -230 2980 -199 ct p ef
|
||||
3542 -93 m 3542 -61 3530 -37 3506 -20 ct 3482 -2 3448 6 3405 6 ct 3364 6 3331 -1 3309 -14 ct
|
||||
3286 -28 3271 -50 3265 -79 ct 3314 -88 l 3319 -70 3329 -57 3343 -49 ct 3358 -40 3379 -36 3405 -36 ct
|
||||
3434 -36 3454 -41 3468 -49 ct 3481 -58 3487 -71 3487 -88 ct 3487 -102 3483 -112 3474 -121 ct
|
||||
3465 -129 3450 -136 3430 -141 ct 3390 -152 l 3358 -160 3335 -168 3321 -176 ct
|
||||
3308 -184 3297 -194 3289 -205 ct 3282 -216 3278 -230 3278 -247 ct 3278 -277 3289 -301 3311 -317 ct
|
||||
3333 -333 3364 -341 3406 -341 ct 3443 -341 3472 -334 3494 -321 ct 3516 -308 3530 -287 3536 -259 ct
|
||||
3485 -252 l 3482 -267 3474 -279 3460 -287 ct 3447 -295 3429 -299 3406 -299 ct
|
||||
3381 -299 3362 -295 3350 -287 ct 3338 -279 3332 -268 3332 -252 ct 3332 -243 3335 -235 3340 -229 ct
|
||||
3345 -223 3352 -217 3362 -213 ct 3371 -209 3392 -203 3423 -195 ct 3453 -188 3474 -181 3487 -174 ct
|
||||
3500 -168 3510 -161 3518 -153 ct 3525 -146 3531 -137 3535 -127 ct 3539 -117 3542 -106 3542 -93 ct
|
||||
p ef
|
||||
3736 -2 m 3717 2 3699 5 3679 5 ct 3635 5 3612 -20 3612 -71 ct 3612 -295 l 3574 -295 l
|
||||
3574 -335 l 3615 -335 l 3631 -411 l 3668 -411 l 3668 -335 l 3730 -335 l
|
||||
3730 -295 l 3668 -295 l 3668 -83 l 3668 -67 3671 -56 3676 -49 ct 3681 -43 3691 -39 3704 -39 ct
|
||||
3711 -39 3722 -41 3736 -44 ct p ef
|
||||
pom
|
||||
0 lw 6772 8750 m 6699 8750 6626 8787 6626 8825 ct 6626 9125 l 6626 9162 6553 9200 6480 9200 ct
|
||||
6553 9200 6626 9238 6626 9275 ct 6626 9575 l 6626 9613 6699 9651 6772 9651 ct
|
||||
ps
|
||||
6480 8750 m 6480 8750 l pc
|
||||
6772 9651 m 6772 9651 l pc
|
||||
0 11487 t
|
||||
pom
|
||||
count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%EOF
|
||||
@@ -1,762 +0,0 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%BoundingBox: 0 0 470 326
|
||||
%%Pages: 0
|
||||
%%Creator: LibreOffice 4.2
|
||||
%%Title: none
|
||||
%%CreationDate: none
|
||||
%%LanguageLevel: 2
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%BeginResource: procset SDRes-Prolog 1.0 0
|
||||
/b4_inc_state save def
|
||||
/dict_count countdictstack def
|
||||
/op_count count 1 sub def
|
||||
userdict begin
|
||||
0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
|
||||
/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
|
||||
/bdef {bind def} bind def
|
||||
/c {setrgbcolor} bdef
|
||||
/l {neg lineto} bdef
|
||||
/rl {neg rlineto} bdef
|
||||
/lc {setlinecap} bdef
|
||||
/lj {setlinejoin} bdef
|
||||
/lw {setlinewidth} bdef
|
||||
/ml {setmiterlimit} bdef
|
||||
/ld {setdash} bdef
|
||||
/m {neg moveto} bdef
|
||||
/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
|
||||
/r {rotate} bdef
|
||||
/t {neg translate} bdef
|
||||
/s {scale} bdef
|
||||
/sw {show} bdef
|
||||
/gs {gsave} bdef
|
||||
/gr {grestore} bdef
|
||||
/f {findfont dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
|
||||
currentdict end /NFont exch definefont pop /NFont findfont} bdef
|
||||
/p {closepath} bdef
|
||||
/sf {scalefont setfont} bdef
|
||||
/ef {eofill}bdef
|
||||
/pc {closepath stroke}bdef
|
||||
/ps {stroke}bdef
|
||||
/pum {matrix currentmatrix}bdef
|
||||
/pom {setmatrix}bdef
|
||||
/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
|
||||
%%EndResource
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%Page: 1 1
|
||||
%%BeginPageSetup
|
||||
%%EndPageSetup
|
||||
pum
|
||||
0.02832 0.02837 s
|
||||
0 -11487 t
|
||||
/tm matrix currentmatrix def
|
||||
tm setmatrix
|
||||
-998 -2247 t
|
||||
1 1 s
|
||||
1.000 1.000 1.000 c 7057 4787 m 5324 4787 l 5324 3358 l 8790 3358 l
|
||||
8790 4787 l 7057 4787 l p ef
|
||||
0 lw 1 lj 0.003 0.003 0.003 c 7057 4787 m 5324 4787 l 5324 3358 l 8789 3358 l
|
||||
8789 4787 l 7057 4787 l pc
|
||||
pum
|
||||
6333 3938 t
|
||||
348 0 m 348 -202 l 111 -202 l 111 0 l 52 0 l 52 -437 l 111 -437 l
|
||||
111 -252 l 348 -252 l 348 -437 l 407 -437 l 407 0 l p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
854 0 m 854 -460 l 910 -460 l 910 0 l p ef
|
||||
995 0 m 995 -460 l 1051 -460 l 1051 0 l p ef
|
||||
1419 -168 m 1419 -109 1407 -66 1381 -37 ct 1355 -8 1317 6 1268 6 ct 1219 6 1182 -9 1157 -39 ct
|
||||
1132 -68 1120 -112 1120 -168 ct 1120 -284 1170 -342 1270 -342 ct 1321 -342 1359 -328 1383 -299 ct
|
||||
1407 -271 1419 -227 1419 -168 ct p
|
||||
1361 -168 m 1361 -214 1354 -248 1340 -269 ct 1327 -290 1303 -300 1271 -300 ct
|
||||
1238 -300 1215 -290 1200 -268 ct 1186 -247 1178 -214 1178 -168 ct 1178 -124 1185 -91 1200 -68 ct
|
||||
1214 -46 1237 -35 1268 -35 ct 1301 -35 1325 -46 1339 -67 ct 1354 -89 1361 -122 1361 -168 ct
|
||||
p ef
|
||||
pom
|
||||
pum
|
||||
5893 4649 t
|
||||
390 -305 m 390 -264 377 -231 350 -207 ct 323 -182 286 -170 240 -170 ct 111 -170 l
|
||||
111 0 l 52 0 l 52 -437 l 236 -437 l 285 -437 323 -425 350 -402 ct 377 -380 390 -347 390 -305 ct
|
||||
p
|
||||
331 -305 m 331 -361 297 -389 229 -389 ct 111 -389 l 111 -217 l 231 -217 l
|
||||
297 -217 331 -246 331 -305 ct p ef
|
||||
467 0 m 467 -257 l 467 -281 466 -307 465 -335 ct 518 -335 l 520 -297 520 -275 520 -267 ct
|
||||
522 -267 l 530 -296 541 -315 552 -326 ct 564 -336 580 -342 601 -342 ct 609 -342 616 -341 624 -339 ct
|
||||
624 -287 l 616 -289 607 -291 594 -291 ct 571 -291 553 -281 541 -261 ct 529 -241 523 -212 523 -175 ct
|
||||
523 0 l p ef
|
||||
961 -168 m 961 -109 949 -66 923 -37 ct 897 -8 859 6 810 6 ct 761 6 724 -9 699 -39 ct
|
||||
674 -68 662 -112 662 -168 ct 662 -284 712 -342 812 -342 ct 863 -342 901 -328 925 -299 ct
|
||||
949 -271 961 -227 961 -168 ct p
|
||||
903 -168 m 903 -214 896 -248 882 -269 ct 869 -290 845 -300 813 -300 ct 780 -300 757 -290 742 -268 ct
|
||||
728 -247 720 -214 720 -168 ct 720 -124 727 -91 742 -68 ct 756 -46 779 -35 810 -35 ct
|
||||
843 -35 867 -46 881 -67 ct 896 -89 903 -122 903 -168 ct p ef
|
||||
1160 -2 m 1141 2 1123 5 1103 5 ct 1059 5 1036 -20 1036 -71 ct 1036 -295 l 998 -295 l
|
||||
998 -335 l 1039 -335 l 1055 -411 l 1092 -411 l 1092 -335 l 1154 -335 l
|
||||
1154 -295 l 1092 -295 l 1092 -83 l 1092 -67 1095 -56 1100 -49 ct 1105 -43 1115 -39 1128 -39 ct
|
||||
1135 -39 1146 -41 1160 -44 ct p ef
|
||||
1490 -168 m 1490 -109 1478 -66 1452 -37 ct 1426 -8 1388 6 1339 6 ct 1290 6 1253 -9 1228 -39 ct
|
||||
1203 -68 1191 -112 1191 -168 ct 1191 -284 1241 -342 1341 -342 ct 1392 -342 1430 -328 1454 -299 ct
|
||||
1478 -271 1490 -227 1490 -168 ct p
|
||||
1432 -168 m 1432 -214 1425 -248 1411 -269 ct 1398 -290 1374 -300 1342 -300 ct
|
||||
1309 -300 1286 -290 1271 -268 ct 1257 -247 1249 -214 1249 -168 ct 1249 -124 1256 -91 1271 -68 ct
|
||||
1285 -46 1308 -35 1339 -35 ct 1372 -35 1396 -46 1410 -67 ct 1425 -89 1432 -122 1432 -168 ct
|
||||
p ef
|
||||
1602 -169 m 1602 -125 1609 -92 1623 -70 ct 1637 -49 1659 -38 1687 -38 ct 1707 -38 1723 -43 1737 -54 ct
|
||||
1750 -65 1758 -81 1761 -104 ct 1818 -100 l 1813 -68 1800 -42 1777 -23 ct 1753 -3 1724 6 1688 6 ct
|
||||
1642 6 1606 -9 1581 -38 ct 1556 -68 1544 -111 1544 -168 ct 1544 -224 1556 -268 1581 -297 ct
|
||||
1606 -327 1642 -342 1688 -342 ct 1722 -342 1751 -333 1773 -315 ct 1796 -297 1810 -273 1816 -242 ct
|
||||
1759 -237 l 1756 -256 1748 -271 1737 -282 ct 1725 -292 1708 -298 1686 -298 ct
|
||||
1657 -298 1635 -288 1622 -269 ct 1609 -249 1602 -216 1602 -169 ct p ef
|
||||
2161 -168 m 2161 -109 2149 -66 2123 -37 ct 2097 -8 2059 6 2010 6 ct 1961 6 1924 -9 1899 -39 ct
|
||||
1874 -68 1862 -112 1862 -168 ct 1862 -284 1912 -342 2012 -342 ct 2063 -342 2101 -328 2125 -299 ct
|
||||
2149 -271 2161 -227 2161 -168 ct p
|
||||
2103 -168 m 2103 -214 2096 -248 2082 -269 ct 2069 -290 2045 -300 2013 -300 ct
|
||||
1980 -300 1957 -290 1942 -268 ct 1928 -247 1920 -214 1920 -168 ct 1920 -124 1927 -91 1942 -68 ct
|
||||
1956 -46 1979 -35 2010 -35 ct 2043 -35 2067 -46 2081 -67 ct 2096 -89 2103 -122 2103 -168 ct
|
||||
p ef
|
||||
2231 0 m 2231 -460 l 2287 -460 l 2287 0 l p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 7057 3358 m 5324 3358 l 5324 2248 l 8790 2248 l
|
||||
8790 3358 l 7057 3358 l p ef
|
||||
0.003 0.003 0.003 c 7057 3358 m 5324 3358 l 5324 2247 l 8789 2247 l 8789 3358 l
|
||||
7057 3358 l pc
|
||||
pum
|
||||
5821 3023 t
|
||||
361 0 m 247 -181 l 111 -181 l 111 0 l 52 0 l 52 -437 l 258 -437 l
|
||||
307 -437 345 -426 372 -404 ct 398 -382 412 -351 412 -312 ct 412 -279 402 -252 383 -230 ct
|
||||
364 -208 338 -194 305 -188 ct 429 0 l p
|
||||
352 -311 m 352 -337 344 -356 326 -369 ct 309 -383 284 -389 252 -389 ct 111 -389 l
|
||||
111 -228 l 254 -228 l 285 -228 310 -235 327 -250 ct 344 -265 352 -285 352 -311 ct
|
||||
p ef
|
||||
784 -168 m 784 -109 772 -66 746 -37 ct 720 -8 682 6 633 6 ct 584 6 547 -9 522 -39 ct
|
||||
497 -68 485 -112 485 -168 ct 485 -284 535 -342 635 -342 ct 686 -342 724 -328 748 -299 ct
|
||||
772 -271 784 -227 784 -168 ct p
|
||||
726 -168 m 726 -214 719 -248 705 -269 ct 692 -290 668 -300 636 -300 ct 603 -300 580 -290 565 -268 ct
|
||||
551 -247 543 -214 543 -168 ct 543 -124 550 -91 565 -68 ct 579 -46 602 -35 633 -35 ct
|
||||
666 -35 690 -46 704 -67 ct 719 -89 726 -122 726 -168 ct p ef
|
||||
908 -335 m 908 -123 l 908 -101 911 -84 915 -71 ct 919 -59 926 -50 936 -45 ct
|
||||
945 -40 959 -37 978 -37 ct 1004 -37 1026 -46 1041 -64 ct 1057 -83 1064 -108 1064 -141 ct
|
||||
1064 -335 l 1120 -335 l 1120 -72 l 1120 -33 1121 -9 1122 0 ct 1069 0 l
|
||||
1069 -1 1069 -4 1069 -8 ct 1068 -13 1068 -18 1068 -24 ct 1068 -30 1067 -41 1067 -57 ct
|
||||
1066 -57 l 1053 -34 1038 -18 1021 -8 ct 1005 1 984 6 959 6 ct 922 6 895 -3 878 -21 ct
|
||||
861 -40 852 -70 852 -112 ct 852 -335 l p ef
|
||||
1336 -2 m 1317 2 1299 5 1279 5 ct 1235 5 1212 -20 1212 -71 ct 1212 -295 l 1174 -295 l
|
||||
1174 -335 l 1215 -335 l 1231 -411 l 1268 -411 l 1268 -335 l 1330 -335 l
|
||||
1330 -295 l 1268 -295 l 1268 -83 l 1268 -67 1271 -56 1276 -49 ct 1281 -43 1291 -39 1304 -39 ct
|
||||
1311 -39 1322 -41 1336 -44 ct p ef
|
||||
1427 -156 m 1427 -118 1435 -88 1450 -67 ct 1466 -46 1490 -36 1520 -36 ct 1544 -36 1564 -41 1578 -50 ct
|
||||
1593 -60 1603 -72 1608 -87 ct 1657 -73 l 1637 -20 1591 6 1520 6 ct 1471 6 1433 -9 1407 -38 ct
|
||||
1381 -68 1368 -112 1368 -170 ct 1368 -225 1381 -268 1407 -297 ct 1433 -327 1470 -342 1518 -342 ct
|
||||
1617 -342 1666 -282 1666 -163 ct 1666 -156 l p
|
||||
1608 -199 m 1605 -234 1596 -260 1581 -276 ct 1566 -292 1545 -300 1517 -300 ct
|
||||
1490 -300 1469 -291 1453 -273 ct 1437 -255 1428 -230 1427 -199 ct p ef
|
||||
1738 0 m 1738 -257 l 1738 -281 1737 -307 1736 -335 ct 1789 -335 l 1791 -297 1791 -275 1791 -267 ct
|
||||
1793 -267 l 1801 -296 1812 -315 1823 -326 ct 1835 -336 1851 -342 1872 -342 ct
|
||||
1880 -342 1887 -341 1895 -339 ct 1895 -287 l 1887 -289 1878 -291 1865 -291 ct
|
||||
1842 -291 1824 -281 1812 -261 ct 1800 -241 1794 -212 1794 -175 ct 1794 0 l p ef
|
||||
2409 0 m 2359 -128 l 2160 -128 l 2110 0 l 2048 0 l 2227 -437 l 2294 -437 l
|
||||
2469 0 l p
|
||||
2259 -392 m 2257 -384 l 2251 -366 2244 -344 2234 -318 ct 2178 -174 l 2341 -174 l
|
||||
2285 -318 l 2279 -332 2274 -349 2268 -366 ct p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 15857 3360 m 14124 3360 l 14124 2250 l 17590 2250 l
|
||||
17590 3360 l 15857 3360 l p ef
|
||||
0.003 0.003 0.003 c 15857 3360 m 14124 3360 l 14124 2249 l 17589 2249 l
|
||||
17589 3360 l 15857 3360 l pc
|
||||
pum
|
||||
14604 3025 t
|
||||
361 0 m 247 -181 l 111 -181 l 111 0 l 52 0 l 52 -437 l 258 -437 l
|
||||
307 -437 345 -426 372 -404 ct 398 -382 412 -351 412 -312 ct 412 -279 402 -252 383 -230 ct
|
||||
364 -208 338 -194 305 -188 ct 429 0 l p
|
||||
352 -311 m 352 -337 344 -356 326 -369 ct 309 -383 284 -389 252 -389 ct 111 -389 l
|
||||
111 -228 l 254 -228 l 285 -228 310 -235 327 -250 ct 344 -265 352 -285 352 -311 ct
|
||||
p ef
|
||||
784 -168 m 784 -109 772 -66 746 -37 ct 720 -8 682 6 633 6 ct 584 6 547 -9 522 -39 ct
|
||||
497 -68 485 -112 485 -168 ct 485 -284 535 -342 635 -342 ct 686 -342 724 -328 748 -299 ct
|
||||
772 -271 784 -227 784 -168 ct p
|
||||
726 -168 m 726 -214 719 -248 705 -269 ct 692 -290 668 -300 636 -300 ct 603 -300 580 -290 565 -268 ct
|
||||
551 -247 543 -214 543 -168 ct 543 -124 550 -91 565 -68 ct 579 -46 602 -35 633 -35 ct
|
||||
666 -35 690 -46 704 -67 ct 719 -89 726 -122 726 -168 ct p ef
|
||||
908 -335 m 908 -123 l 908 -101 911 -84 915 -71 ct 919 -59 926 -50 936 -45 ct
|
||||
945 -40 959 -37 978 -37 ct 1004 -37 1026 -46 1041 -64 ct 1057 -83 1064 -108 1064 -141 ct
|
||||
1064 -335 l 1120 -335 l 1120 -72 l 1120 -33 1121 -9 1122 0 ct 1069 0 l
|
||||
1069 -1 1069 -4 1069 -8 ct 1068 -13 1068 -18 1068 -24 ct 1068 -30 1067 -41 1067 -57 ct
|
||||
1066 -57 l 1053 -34 1038 -18 1021 -8 ct 1005 1 984 6 959 6 ct 922 6 895 -3 878 -21 ct
|
||||
861 -40 852 -70 852 -112 ct 852 -335 l p ef
|
||||
1336 -2 m 1317 2 1299 5 1279 5 ct 1235 5 1212 -20 1212 -71 ct 1212 -295 l 1174 -295 l
|
||||
1174 -335 l 1215 -335 l 1231 -411 l 1268 -411 l 1268 -335 l 1330 -335 l
|
||||
1330 -295 l 1268 -295 l 1268 -83 l 1268 -67 1271 -56 1276 -49 ct 1281 -43 1291 -39 1304 -39 ct
|
||||
1311 -39 1322 -41 1336 -44 ct p ef
|
||||
1427 -156 m 1427 -118 1435 -88 1450 -67 ct 1466 -46 1490 -36 1520 -36 ct 1544 -36 1564 -41 1578 -50 ct
|
||||
1593 -60 1603 -72 1608 -87 ct 1657 -73 l 1637 -20 1591 6 1520 6 ct 1471 6 1433 -9 1407 -38 ct
|
||||
1381 -68 1368 -112 1368 -170 ct 1368 -225 1381 -268 1407 -297 ct 1433 -327 1470 -342 1518 -342 ct
|
||||
1617 -342 1666 -282 1666 -163 ct 1666 -156 l p
|
||||
1608 -199 m 1605 -234 1596 -260 1581 -276 ct 1566 -292 1545 -300 1517 -300 ct
|
||||
1490 -300 1469 -291 1453 -273 ct 1437 -255 1428 -230 1427 -199 ct p ef
|
||||
1738 0 m 1738 -257 l 1738 -281 1737 -307 1736 -335 ct 1789 -335 l 1791 -297 1791 -275 1791 -267 ct
|
||||
1793 -267 l 1801 -296 1812 -315 1823 -326 ct 1835 -336 1851 -342 1872 -342 ct
|
||||
1880 -342 1887 -341 1895 -339 ct 1895 -287 l 1887 -289 1878 -291 1865 -291 ct
|
||||
1842 -291 1824 -281 1812 -261 ct 1800 -241 1794 -212 1794 -175 ct 1794 0 l p ef
|
||||
2472 -123 m 2472 -84 2458 -54 2430 -32 ct 2401 -11 2362 0 2311 0 ct 2134 0 l
|
||||
2134 -437 l 2293 -437 l 2395 -437 2447 -402 2447 -331 ct 2447 -305 2439 -283 2425 -266 ct
|
||||
2410 -248 2390 -236 2364 -230 ct 2398 -226 2425 -215 2444 -195 ct 2463 -176 2472 -152 2472 -123 ct
|
||||
p
|
||||
2387 -324 m 2387 -347 2379 -364 2363 -374 ct 2347 -384 2323 -389 2293 -389 ct
|
||||
2193 -389 l 2193 -251 l 2293 -251 l 2324 -251 2348 -257 2364 -269 ct 2379 -281 2387 -299 2387 -324 ct
|
||||
p
|
||||
2412 -128 m 2412 -179 2376 -205 2304 -205 ct 2193 -205 l 2193 -47 l 2308 -47 l
|
||||
2345 -47 2371 -54 2387 -68 ct 2404 -81 2412 -101 2412 -128 ct p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 15857 4789 m 14124 4789 l 14124 3360 l 17590 3360 l
|
||||
17590 4789 l 15857 4789 l p ef
|
||||
0.003 0.003 0.003 c 15857 4789 m 14124 4789 l 14124 3360 l 17589 3360 l
|
||||
17589 4789 l 15857 4789 l pc
|
||||
pum
|
||||
15133 3940 t
|
||||
348 0 m 348 -202 l 111 -202 l 111 0 l 52 0 l 52 -437 l 111 -437 l
|
||||
111 -252 l 348 -252 l 348 -437 l 407 -437 l 407 0 l p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
854 0 m 854 -460 l 910 -460 l 910 0 l p ef
|
||||
995 0 m 995 -460 l 1051 -460 l 1051 0 l p ef
|
||||
1419 -168 m 1419 -109 1407 -66 1381 -37 ct 1355 -8 1317 6 1268 6 ct 1219 6 1182 -9 1157 -39 ct
|
||||
1132 -68 1120 -112 1120 -168 ct 1120 -284 1170 -342 1270 -342 ct 1321 -342 1359 -328 1383 -299 ct
|
||||
1407 -271 1419 -227 1419 -168 ct p
|
||||
1361 -168 m 1361 -214 1354 -248 1340 -269 ct 1327 -290 1303 -300 1271 -300 ct
|
||||
1238 -300 1215 -290 1200 -268 ct 1186 -247 1178 -214 1178 -168 ct 1178 -124 1185 -91 1200 -68 ct
|
||||
1214 -46 1237 -35 1268 -35 ct 1301 -35 1325 -46 1339 -67 ct 1354 -89 1361 -122 1361 -168 ct
|
||||
p ef
|
||||
pom
|
||||
pum
|
||||
14693 4651 t
|
||||
390 -305 m 390 -264 377 -231 350 -207 ct 323 -182 286 -170 240 -170 ct 111 -170 l
|
||||
111 0 l 52 0 l 52 -437 l 236 -437 l 285 -437 323 -425 350 -402 ct 377 -380 390 -347 390 -305 ct
|
||||
p
|
||||
331 -305 m 331 -361 297 -389 229 -389 ct 111 -389 l 111 -217 l 231 -217 l
|
||||
297 -217 331 -246 331 -305 ct p ef
|
||||
467 0 m 467 -257 l 467 -281 466 -307 465 -335 ct 518 -335 l 520 -297 520 -275 520 -267 ct
|
||||
522 -267 l 530 -296 541 -315 552 -326 ct 564 -336 580 -342 601 -342 ct 609 -342 616 -341 624 -339 ct
|
||||
624 -287 l 616 -289 607 -291 594 -291 ct 571 -291 553 -281 541 -261 ct 529 -241 523 -212 523 -175 ct
|
||||
523 0 l p ef
|
||||
961 -168 m 961 -109 949 -66 923 -37 ct 897 -8 859 6 810 6 ct 761 6 724 -9 699 -39 ct
|
||||
674 -68 662 -112 662 -168 ct 662 -284 712 -342 812 -342 ct 863 -342 901 -328 925 -299 ct
|
||||
949 -271 961 -227 961 -168 ct p
|
||||
903 -168 m 903 -214 896 -248 882 -269 ct 869 -290 845 -300 813 -300 ct 780 -300 757 -290 742 -268 ct
|
||||
728 -247 720 -214 720 -168 ct 720 -124 727 -91 742 -68 ct 756 -46 779 -35 810 -35 ct
|
||||
843 -35 867 -46 881 -67 ct 896 -89 903 -122 903 -168 ct p ef
|
||||
1160 -2 m 1141 2 1123 5 1103 5 ct 1059 5 1036 -20 1036 -71 ct 1036 -295 l 998 -295 l
|
||||
998 -335 l 1039 -335 l 1055 -411 l 1092 -411 l 1092 -335 l 1154 -335 l
|
||||
1154 -295 l 1092 -295 l 1092 -83 l 1092 -67 1095 -56 1100 -49 ct 1105 -43 1115 -39 1128 -39 ct
|
||||
1135 -39 1146 -41 1160 -44 ct p ef
|
||||
1490 -168 m 1490 -109 1478 -66 1452 -37 ct 1426 -8 1388 6 1339 6 ct 1290 6 1253 -9 1228 -39 ct
|
||||
1203 -68 1191 -112 1191 -168 ct 1191 -284 1241 -342 1341 -342 ct 1392 -342 1430 -328 1454 -299 ct
|
||||
1478 -271 1490 -227 1490 -168 ct p
|
||||
1432 -168 m 1432 -214 1425 -248 1411 -269 ct 1398 -290 1374 -300 1342 -300 ct
|
||||
1309 -300 1286 -290 1271 -268 ct 1257 -247 1249 -214 1249 -168 ct 1249 -124 1256 -91 1271 -68 ct
|
||||
1285 -46 1308 -35 1339 -35 ct 1372 -35 1396 -46 1410 -67 ct 1425 -89 1432 -122 1432 -168 ct
|
||||
p ef
|
||||
1602 -169 m 1602 -125 1609 -92 1623 -70 ct 1637 -49 1659 -38 1687 -38 ct 1707 -38 1723 -43 1737 -54 ct
|
||||
1750 -65 1758 -81 1761 -104 ct 1818 -100 l 1813 -68 1800 -42 1777 -23 ct 1753 -3 1724 6 1688 6 ct
|
||||
1642 6 1606 -9 1581 -38 ct 1556 -68 1544 -111 1544 -168 ct 1544 -224 1556 -268 1581 -297 ct
|
||||
1606 -327 1642 -342 1688 -342 ct 1722 -342 1751 -333 1773 -315 ct 1796 -297 1810 -273 1816 -242 ct
|
||||
1759 -237 l 1756 -256 1748 -271 1737 -282 ct 1725 -292 1708 -298 1686 -298 ct
|
||||
1657 -298 1635 -288 1622 -269 ct 1609 -249 1602 -216 1602 -169 ct p ef
|
||||
2161 -168 m 2161 -109 2149 -66 2123 -37 ct 2097 -8 2059 6 2010 6 ct 1961 6 1924 -9 1899 -39 ct
|
||||
1874 -68 1862 -112 1862 -168 ct 1862 -284 1912 -342 2012 -342 ct 2063 -342 2101 -328 2125 -299 ct
|
||||
2149 -271 2161 -227 2161 -168 ct p
|
||||
2103 -168 m 2103 -214 2096 -248 2082 -269 ct 2069 -290 2045 -300 2013 -300 ct
|
||||
1980 -300 1957 -290 1942 -268 ct 1928 -247 1920 -214 1920 -168 ct 1920 -124 1927 -91 1942 -68 ct
|
||||
1956 -46 1979 -35 2010 -35 ct 2043 -35 2067 -46 2081 -67 ct 2096 -89 2103 -122 2103 -168 ct
|
||||
p ef
|
||||
2231 0 m 2231 -460 l 2287 -460 l 2287 0 l p ef
|
||||
pom
|
||||
6991 4788 m 6991 13729 l ps
|
||||
15791 4790 m 15791 13731 l ps
|
||||
pum
|
||||
1248 5563 t
|
||||
212 -288 m 204 -262 l 189 -266 175 -269 163 -269 ct 151 -269 143 -265 139 -259 ct
|
||||
135 -252 132 -239 132 -219 ct 132 -215 l 205 -215 l 205 -187 l 132 -187 l
|
||||
132 0 l 100 0 l 100 -187 l 46 -187 l 46 -215 l 100 -215 l 100 -222 l
|
||||
100 -250 105 -269 114 -280 ct 124 -291 140 -297 163 -297 ct 178 -297 194 -294 212 -288 ct
|
||||
p ef
|
||||
394 -297 m 400 -297 405 -294 409 -290 ct 414 -286 416 -281 416 -274 ct 416 -268 414 -263 409 -259 ct
|
||||
405 -254 400 -252 394 -252 ct 388 -252 383 -254 379 -259 ct 375 -263 372 -269 372 -274 ct
|
||||
372 -280 375 -286 379 -290 ct 383 -294 388 -297 394 -297 ct p
|
||||
410 0 m 377 0 l 377 -187 l 314 -187 l 314 -215 l 410 -215 l p ef
|
||||
721 -209 m 708 -178 l 693 -185 681 -188 671 -188 ct 661 -188 652 -185 643 -180 ct
|
||||
634 -174 625 -166 618 -156 ct 610 -146 606 -140 606 -139 ct 606 0 l 574 0 l
|
||||
574 -215 l 606 -215 l 606 -172 l 624 -204 646 -220 673 -220 ct 690 -220 705 -217 721 -209 ct
|
||||
p ef
|
||||
949 -184 m 931 -190 914 -193 898 -193 ct 880 -193 866 -190 856 -185 ct 846 -179 841 -171 841 -161 ct
|
||||
841 -155 843 -150 848 -145 ct 853 -140 862 -136 876 -132 ct 907 -123 l 921 -119 933 -114 942 -109 ct
|
||||
950 -103 957 -96 962 -89 ct 966 -81 968 -71 968 -61 ct 968 -40 960 -24 943 -12 ct
|
||||
925 0 903 6 877 6 ct 850 6 829 2 811 -6 ct 818 -34 l 836 -26 855 -21 876 -21 ct
|
||||
894 -21 908 -25 919 -31 ct 931 -38 936 -47 936 -58 ct 936 -65 933 -72 928 -78 ct
|
||||
922 -84 909 -90 888 -96 ct 872 -101 860 -105 852 -108 ct 844 -110 837 -114 830 -119 ct
|
||||
823 -124 818 -130 814 -137 ct 811 -144 809 -151 809 -160 ct 809 -178 817 -193 833 -204 ct
|
||||
850 -215 871 -220 898 -220 ct 915 -220 935 -217 956 -212 ct p ef
|
||||
1226 -10 m 1205 0 1183 5 1163 5 ct 1124 5 1105 -15 1105 -56 ct 1105 -187 l
|
||||
1064 -187 l 1064 -215 l 1105 -215 l 1105 -274 l 1136 -274 l 1136 -215 l
|
||||
1209 -215 l 1209 -187 l 1136 -187 l 1136 -64 l 1136 -51 1139 -41 1145 -34 ct
|
||||
1151 -27 1159 -23 1168 -23 ct 1186 -23 1204 -27 1221 -35 ct p ef
|
||||
1454 -101 m 1331 -101 l 1331 -132 l 1454 -132 l p ef
|
||||
1732 0 m 1700 0 l 1700 -138 l 1700 -157 1697 -171 1691 -180 ct 1685 -188 1675 -192 1662 -192 ct
|
||||
1642 -192 1621 -180 1599 -156 ct 1599 0 l 1566 0 l 1566 -291 l 1599 -291 l
|
||||
1599 -184 l 1622 -208 1646 -220 1672 -220 ct 1712 -220 1732 -196 1732 -147 ct
|
||||
p ef
|
||||
1993 -107 m 1845 -107 l 1845 -82 1852 -62 1866 -46 ct 1880 -30 1898 -23 1918 -23 ct
|
||||
1938 -23 1958 -26 1979 -33 ct 1984 -7 l 1965 1 1943 6 1918 6 ct 1886 6 1860 -5 1840 -25 ct
|
||||
1821 -46 1811 -73 1811 -108 ct 1811 -142 1820 -170 1837 -190 ct 1855 -210 1878 -220 1906 -220 ct
|
||||
1930 -220 1951 -211 1968 -192 ct 1984 -173 1993 -148 1993 -117 ct p
|
||||
1958 -133 m 1958 -150 1952 -164 1942 -175 ct 1931 -187 1920 -192 1907 -192 ct
|
||||
1890 -192 1876 -187 1865 -176 ct 1854 -165 1848 -151 1847 -133 ct p ef
|
||||
2224 0 m 2136 0 l 2136 -264 l 2079 -264 l 2079 -291 l 2168 -291 l
|
||||
2168 -28 l 2224 -28 l p ef
|
||||
2478 0 m 2390 0 l 2390 -264 l 2333 -264 l 2333 -291 l 2422 -291 l
|
||||
2422 -28 l 2478 -28 l p ef
|
||||
2664 -220 m 2693 -220 2717 -210 2734 -189 ct 2752 -169 2761 -142 2761 -108 ct
|
||||
2761 -74 2752 -46 2734 -26 ct 2717 -5 2693 6 2664 6 ct 2634 6 2610 -5 2593 -26 ct
|
||||
2576 -46 2567 -74 2567 -108 ct 2567 -142 2576 -169 2593 -190 ct 2611 -210 2634 -220 2664 -220 ct
|
||||
p
|
||||
2664 -23 m 2683 -23 2699 -31 2710 -47 ct 2721 -64 2727 -84 2727 -107 ct 2727 -132 2721 -153 2710 -169 ct
|
||||
2699 -185 2684 -192 2664 -192 ct 2644 -192 2628 -185 2617 -169 ct 2606 -153 2601 -133 2601 -107 ct
|
||||
2601 -83 2606 -63 2618 -47 ct 2629 -31 2644 -23 2664 -23 ct p ef
|
||||
2977 -101 m 2854 -101 l 2854 -132 l 2977 -132 l p ef
|
||||
3185 -297 m 3191 -297 3196 -294 3200 -290 ct 3205 -286 3207 -281 3207 -274 ct
|
||||
3207 -268 3205 -263 3200 -259 ct 3196 -254 3191 -252 3185 -252 ct 3179 -252 3174 -254 3170 -259 ct
|
||||
3166 -263 3163 -269 3163 -274 ct 3163 -280 3166 -286 3170 -290 ct 3174 -294 3179 -297 3185 -297 ct
|
||||
p
|
||||
3201 0 m 3168 0 l 3168 -187 l 3105 -187 l 3105 -215 l 3201 -215 l
|
||||
p ef
|
||||
3508 0 m 3476 0 l 3476 -138 l 3476 -157 3473 -171 3467 -180 ct 3461 -188 3451 -192 3438 -192 ct
|
||||
3418 -192 3397 -180 3375 -156 ct 3375 0 l 3342 0 l 3342 -215 l 3375 -215 l
|
||||
3375 -184 l 3398 -208 3422 -220 3448 -220 ct 3488 -220 3508 -196 3508 -147 ct
|
||||
p ef
|
||||
3764 -10 m 3743 0 3721 5 3701 5 ct 3662 5 3643 -15 3643 -56 ct 3643 -187 l
|
||||
3602 -187 l 3602 -215 l 3643 -215 l 3643 -274 l 3674 -274 l 3674 -215 l
|
||||
3747 -215 l 3747 -187 l 3674 -187 l 3674 -64 l 3674 -51 3677 -41 3683 -34 ct
|
||||
3689 -27 3697 -23 3706 -23 ct 3724 -23 3742 -27 3759 -35 ct p ef
|
||||
4023 -107 m 3875 -107 l 3875 -82 3882 -62 3896 -46 ct 3910 -30 3928 -23 3948 -23 ct
|
||||
3968 -23 3988 -26 4009 -33 ct 4014 -7 l 3995 1 3973 6 3948 6 ct 3916 6 3890 -5 3870 -25 ct
|
||||
3851 -46 3841 -73 3841 -108 ct 3841 -142 3850 -170 3867 -190 ct 3885 -210 3908 -220 3936 -220 ct
|
||||
3960 -220 3981 -211 3998 -192 ct 4014 -173 4023 -148 4023 -117 ct p
|
||||
3988 -133 m 3988 -150 3982 -164 3972 -175 ct 3961 -187 3950 -192 3937 -192 ct
|
||||
3920 -192 3906 -187 3895 -176 ct 3884 -165 3878 -151 3877 -133 ct p ef
|
||||
4273 -209 m 4260 -178 l 4245 -185 4233 -188 4223 -188 ct 4213 -188 4204 -185 4195 -180 ct
|
||||
4186 -174 4177 -166 4170 -156 ct 4162 -146 4158 -140 4158 -139 ct 4158 0 l 4126 0 l
|
||||
4126 -215 l 4158 -215 l 4158 -172 l 4176 -204 4198 -220 4225 -220 ct 4242 -220 4257 -217 4273 -209 ct
|
||||
p ef
|
||||
4533 -215 m 4451 0 l 4422 0 l 4341 -215 l 4376 -215 l 4437 -44 l
|
||||
4498 -215 l p ef
|
||||
4783 0 m 4751 0 l 4748 -9 4747 -20 4747 -35 ct 4728 -8 4703 6 4672 6 ct 4656 6 4642 0 4630 -11 ct
|
||||
4617 -23 4611 -37 4611 -55 ct 4611 -66 4614 -75 4618 -83 ct 4622 -92 4628 -98 4637 -104 ct
|
||||
4645 -110 4655 -114 4667 -117 ct 4679 -120 4693 -123 4709 -124 ct 4745 -127 l
|
||||
4745 -137 l 4745 -174 4728 -192 4693 -192 ct 4685 -192 4675 -191 4663 -187 ct
|
||||
4650 -184 4639 -180 4630 -175 ct 4622 -198 l 4651 -213 4679 -220 4704 -220 ct
|
||||
4753 -220 4777 -194 4777 -143 ct 4777 -50 l 4777 -31 4779 -15 4783 0 ct p
|
||||
4745 -64 m 4745 -103 l 4716 -100 4696 -98 4685 -96 ct 4674 -93 4665 -89 4657 -83 ct
|
||||
4649 -77 4645 -68 4645 -58 ct 4645 -48 4649 -40 4655 -34 ct 4662 -28 4671 -25 4681 -25 ct
|
||||
4693 -25 4704 -29 4715 -36 ct 4727 -42 4737 -52 4745 -64 ct p ef
|
||||
5016 0 m 4928 0 l 4928 -264 l 4871 -264 l 4871 -291 l 4960 -291 l
|
||||
4960 -28 l 5016 -28 l p ef
|
||||
pom
|
||||
1 lw 6984 6031 m 15216 6031 l ps
|
||||
15232 6180 m 15764 6061 l 15775 6058 l 15785 6052 l 15792 6042 l 15794 6032 l
|
||||
15792 6020 l 15785 6010 l 15775 6004 l 15764 6001 l 15232 5882 l 15228 5882 l
|
||||
15226 5881 l 15215 5883 l 15205 5890 l 15198 5900 l 15196 5911 l 15196 6151 l
|
||||
15198 6162 l 15205 6172 l 15215 6179 l 15226 6181 l 15228 6181 l 15232 6180 l
|
||||
p ef
|
||||
pum
|
||||
9519 5896 t
|
||||
348 0 m 348 -202 l 111 -202 l 111 0 l 52 0 l 52 -437 l 111 -437 l
|
||||
111 -252 l 348 -252 l 348 -437 l 407 -437 l 407 0 l p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
854 0 m 854 -460 l 910 -460 l 910 0 l p ef
|
||||
995 0 m 995 -460 l 1051 -460 l 1051 0 l p ef
|
||||
1419 -168 m 1419 -109 1407 -66 1381 -37 ct 1355 -8 1317 6 1268 6 ct 1219 6 1182 -9 1157 -39 ct
|
||||
1132 -68 1120 -112 1120 -168 ct 1120 -284 1170 -342 1270 -342 ct 1321 -342 1359 -328 1383 -299 ct
|
||||
1407 -271 1419 -227 1419 -168 ct p
|
||||
1361 -168 m 1361 -214 1354 -248 1340 -269 ct 1327 -290 1303 -300 1271 -300 ct
|
||||
1238 -300 1215 -290 1200 -268 ct 1186 -247 1178 -214 1178 -168 ct 1178 -124 1185 -91 1200 -68 ct
|
||||
1214 -46 1237 -35 1268 -35 ct 1301 -35 1325 -46 1339 -67 ct 1354 -89 1361 -122 1361 -168 ct
|
||||
p ef
|
||||
1682 0 m 1682 -437 l 1741 -437 l 1741 0 l p ef
|
||||
2055 0 m 2055 -213 l 2055 -235 2053 -252 2048 -264 ct 2044 -276 2037 -285 2028 -291 ct
|
||||
2018 -296 2004 -299 1986 -299 ct 1959 -299 1938 -289 1922 -271 ct 1907 -253 1899 -227 1899 -194 ct
|
||||
1899 0 l 1843 0 l 1843 -264 l 1843 -303 1842 -327 1841 -335 ct 1894 -335 l
|
||||
1894 -334 1894 -332 1894 -327 ct 1895 -323 1895 -317 1895 -311 ct 1896 -306 1896 -294 1896 -278 ct
|
||||
1897 -278 l 1910 -301 1925 -318 1942 -327 ct 1959 -337 1980 -342 2005 -342 ct
|
||||
2041 -342 2068 -333 2085 -314 ct 2102 -296 2111 -266 2111 -224 ct 2111 0 l p ef
|
||||
2325 -2 m 2306 2 2288 5 2268 5 ct 2224 5 2201 -20 2201 -71 ct 2201 -295 l 2163 -295 l
|
||||
2163 -335 l 2204 -335 l 2220 -411 l 2257 -411 l 2257 -335 l 2319 -335 l
|
||||
2319 -295 l 2257 -295 l 2257 -83 l 2257 -67 2260 -56 2265 -49 ct 2270 -43 2280 -39 2293 -39 ct
|
||||
2300 -39 2311 -41 2325 -44 ct p ef
|
||||
2415 -156 m 2415 -118 2423 -88 2438 -67 ct 2454 -46 2478 -36 2508 -36 ct 2532 -36 2552 -41 2566 -50 ct
|
||||
2581 -60 2591 -72 2596 -87 ct 2645 -73 l 2625 -20 2579 6 2508 6 ct 2459 6 2421 -9 2395 -38 ct
|
||||
2369 -68 2356 -112 2356 -170 ct 2356 -225 2369 -268 2395 -297 ct 2421 -327 2458 -342 2506 -342 ct
|
||||
2605 -342 2654 -282 2654 -163 ct 2654 -156 l p
|
||||
2596 -199 m 2593 -234 2584 -260 2569 -276 ct 2554 -292 2533 -300 2505 -300 ct
|
||||
2478 -300 2457 -291 2441 -273 ct 2425 -255 2416 -230 2415 -199 ct p ef
|
||||
2726 0 m 2726 -257 l 2726 -281 2725 -307 2724 -335 ct 2777 -335 l 2779 -297 2779 -275 2779 -267 ct
|
||||
2781 -267 l 2789 -296 2800 -315 2811 -326 ct 2823 -336 2839 -342 2860 -342 ct
|
||||
2868 -342 2875 -341 2883 -339 ct 2883 -287 l 2875 -289 2866 -291 2853 -291 ct
|
||||
2830 -291 2812 -281 2800 -261 ct 2788 -241 2782 -212 2782 -175 ct 2782 0 l p ef
|
||||
2980 -156 m 2980 -118 2988 -88 3003 -67 ct 3019 -46 3043 -36 3073 -36 ct 3097 -36 3117 -41 3131 -50 ct
|
||||
3146 -60 3156 -72 3161 -87 ct 3210 -73 l 3190 -20 3144 6 3073 6 ct 3024 6 2986 -9 2960 -38 ct
|
||||
2934 -68 2921 -112 2921 -170 ct 2921 -225 2934 -268 2960 -297 ct 2986 -327 3023 -342 3071 -342 ct
|
||||
3170 -342 3219 -282 3219 -163 ct 3219 -156 l p
|
||||
3161 -199 m 3158 -234 3149 -260 3134 -276 ct 3119 -292 3098 -300 3070 -300 ct
|
||||
3043 -300 3022 -291 3006 -273 ct 2990 -255 2981 -230 2980 -199 ct p ef
|
||||
3542 -93 m 3542 -61 3530 -37 3506 -20 ct 3482 -2 3448 6 3405 6 ct 3364 6 3331 -1 3309 -14 ct
|
||||
3286 -28 3271 -50 3265 -79 ct 3314 -88 l 3319 -70 3329 -57 3343 -49 ct 3358 -40 3379 -36 3405 -36 ct
|
||||
3434 -36 3454 -41 3468 -49 ct 3481 -58 3487 -71 3487 -88 ct 3487 -102 3483 -112 3474 -121 ct
|
||||
3465 -129 3450 -136 3430 -141 ct 3390 -152 l 3358 -160 3335 -168 3321 -176 ct
|
||||
3308 -184 3297 -194 3289 -205 ct 3282 -216 3278 -230 3278 -247 ct 3278 -277 3289 -301 3311 -317 ct
|
||||
3333 -333 3364 -341 3406 -341 ct 3443 -341 3472 -334 3494 -321 ct 3516 -308 3530 -287 3536 -259 ct
|
||||
3485 -252 l 3482 -267 3474 -279 3460 -287 ct 3447 -295 3429 -299 3406 -299 ct
|
||||
3381 -299 3362 -295 3350 -287 ct 3338 -279 3332 -268 3332 -252 ct 3332 -243 3335 -235 3340 -229 ct
|
||||
3345 -223 3352 -217 3362 -213 ct 3371 -209 3392 -203 3423 -195 ct 3453 -188 3474 -181 3487 -174 ct
|
||||
3500 -168 3510 -161 3518 -153 ct 3525 -146 3531 -137 3535 -127 ct 3539 -117 3542 -106 3542 -93 ct
|
||||
p ef
|
||||
3736 -2 m 3717 2 3699 5 3679 5 ct 3635 5 3612 -20 3612 -71 ct 3612 -295 l 3574 -295 l
|
||||
3574 -335 l 3615 -335 l 3631 -411 l 3668 -411 l 3668 -335 l 3730 -335 l
|
||||
3730 -295 l 3668 -295 l 3668 -83 l 3668 -67 3671 -56 3676 -49 ct 3681 -43 3691 -39 3704 -39 ct
|
||||
3711 -39 3722 -41 3736 -44 ct p ef
|
||||
pom
|
||||
7371 7604 m 15795 7604 l ps
|
||||
7360 7505 m 7005 7584 l 6998 7586 l 6991 7590 l 6986 7597 l 6985 7604 l
|
||||
6986 7611 l 6991 7618 l 6998 7622 l 7005 7624 l 7360 7703 l 7362 7703 l
|
||||
7364 7704 l 7371 7702 l 7378 7698 l 7382 7691 l 7384 7684 l 7384 7524 l
|
||||
7382 7517 l 7378 7510 l 7371 7505 l 7364 7504 l 7362 7504 l 7360 7505 l
|
||||
p ef
|
||||
pum
|
||||
9909 7469 t
|
||||
348 0 m 348 -202 l 111 -202 l 111 0 l 52 0 l 52 -437 l 111 -437 l
|
||||
111 -252 l 348 -252 l 348 -437 l 407 -437 l 407 0 l p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
854 0 m 854 -460 l 910 -460 l 910 0 l p ef
|
||||
995 0 m 995 -460 l 1051 -460 l 1051 0 l p ef
|
||||
1419 -168 m 1419 -109 1407 -66 1381 -37 ct 1355 -8 1317 6 1268 6 ct 1219 6 1182 -9 1157 -39 ct
|
||||
1132 -68 1120 -112 1120 -168 ct 1120 -284 1170 -342 1270 -342 ct 1321 -342 1359 -328 1383 -299 ct
|
||||
1407 -271 1419 -227 1419 -168 ct p
|
||||
1361 -168 m 1361 -214 1354 -248 1340 -269 ct 1327 -290 1303 -300 1271 -300 ct
|
||||
1238 -300 1215 -290 1200 -268 ct 1186 -247 1178 -214 1178 -168 ct 1178 -124 1185 -91 1200 -68 ct
|
||||
1214 -46 1237 -35 1268 -35 ct 1301 -35 1325 -46 1339 -67 ct 1354 -89 1361 -122 1361 -168 ct
|
||||
p ef
|
||||
2049 -223 m 2049 -178 2040 -138 2023 -105 ct 2005 -71 1980 -45 1948 -27 ct
|
||||
1916 -9 1879 0 1836 0 ct 1673 0 l 1673 -437 l 1818 -437 l 1892 -437 1949 -418 1989 -381 ct
|
||||
2029 -344 2049 -291 2049 -223 ct p
|
||||
1990 -223 m 1990 -277 1975 -318 1945 -347 ct 1916 -375 1873 -389 1816 -389 ct
|
||||
1732 -389 l 1732 -47 l 1830 -47 l 1862 -47 1890 -54 1914 -69 ct 1938 -83 1957 -103 1970 -129 ct
|
||||
1983 -156 1990 -187 1990 -223 ct p ef
|
||||
2208 6 m 2175 6 2149 -3 2132 -20 ct 2115 -38 2107 -63 2107 -94 ct 2107 -128 2118 -155 2141 -174 ct
|
||||
2164 -192 2201 -202 2252 -203 ct 2327 -205 l 2327 -223 l 2327 -250 2321 -270 2310 -282 ct
|
||||
2298 -293 2280 -299 2255 -299 ct 2230 -299 2212 -295 2201 -286 ct 2189 -278 2182 -264 2180 -246 ct
|
||||
2122 -251 l 2131 -312 2176 -342 2256 -342 ct 2299 -342 2330 -332 2352 -313 ct
|
||||
2373 -293 2384 -265 2384 -229 ct 2384 -84 l 2384 -68 2386 -55 2390 -47 ct 2394 -39 2403 -34 2415 -34 ct
|
||||
2420 -34 2426 -35 2433 -37 ct 2433 -2 l 2419 1 2405 3 2390 3 ct 2369 3 2354 -2 2345 -13 ct
|
||||
2336 -24 2330 -41 2329 -64 ct 2327 -64 l 2313 -39 2296 -20 2277 -10 ct 2258 1 2235 6 2208 6 ct
|
||||
p
|
||||
2221 -36 m 2242 -36 2260 -40 2276 -50 ct 2292 -59 2304 -72 2313 -88 ct 2323 -104 2327 -121 2327 -138 ct
|
||||
2327 -166 l 2266 -164 l 2240 -164 2220 -161 2206 -156 ct 2193 -151 2182 -144 2175 -133 ct
|
||||
2168 -123 2164 -109 2164 -93 ct 2164 -75 2169 -60 2179 -51 ct 2189 -41 2203 -36 2221 -36 ct
|
||||
p ef
|
||||
2605 -2 m 2586 2 2568 5 2548 5 ct 2504 5 2481 -20 2481 -71 ct 2481 -295 l 2443 -295 l
|
||||
2443 -335 l 2484 -335 l 2500 -411 l 2537 -411 l 2537 -335 l 2599 -335 l
|
||||
2599 -295 l 2537 -295 l 2537 -83 l 2537 -67 2540 -56 2545 -49 ct 2550 -43 2560 -39 2573 -39 ct
|
||||
2580 -39 2591 -41 2605 -44 ct p ef
|
||||
2737 6 m 2704 6 2678 -3 2661 -20 ct 2644 -38 2636 -63 2636 -94 ct 2636 -128 2647 -155 2670 -174 ct
|
||||
2693 -192 2730 -202 2781 -203 ct 2856 -205 l 2856 -223 l 2856 -250 2850 -270 2839 -282 ct
|
||||
2827 -293 2809 -299 2784 -299 ct 2759 -299 2741 -295 2730 -286 ct 2718 -278 2711 -264 2709 -246 ct
|
||||
2651 -251 l 2660 -312 2705 -342 2785 -342 ct 2828 -342 2859 -332 2881 -313 ct
|
||||
2902 -293 2913 -265 2913 -229 ct 2913 -84 l 2913 -68 2915 -55 2919 -47 ct 2923 -39 2932 -34 2944 -34 ct
|
||||
2949 -34 2955 -35 2962 -37 ct 2962 -2 l 2948 1 2934 3 2919 3 ct 2898 3 2883 -2 2874 -13 ct
|
||||
2865 -24 2859 -41 2858 -64 ct 2856 -64 l 2842 -39 2825 -20 2806 -10 ct 2787 1 2764 6 2737 6 ct
|
||||
p
|
||||
2750 -36 m 2771 -36 2789 -40 2805 -50 ct 2821 -59 2833 -72 2842 -88 ct 2852 -104 2856 -121 2856 -138 ct
|
||||
2856 -166 l 2795 -164 l 2769 -164 2749 -161 2735 -156 ct 2722 -151 2711 -144 2704 -133 ct
|
||||
2697 -123 2693 -109 2693 -93 ct 2693 -75 2698 -60 2708 -51 ct 2718 -41 2732 -36 2750 -36 ct
|
||||
p ef
|
||||
pom
|
||||
pum
|
||||
2969 11027 t
|
||||
210 0 m 178 0 l 178 -138 l 178 -157 175 -171 169 -180 ct 163 -188 153 -192 140 -192 ct
|
||||
120 -192 99 -180 77 -156 ct 77 0 l 44 0 l 44 -291 l 77 -291 l 77 -184 l
|
||||
100 -208 124 -220 150 -220 ct 190 -220 210 -196 210 -147 ct p ef
|
||||
451 -107 m 303 -107 l 303 -82 310 -62 324 -46 ct 338 -30 356 -23 376 -23 ct
|
||||
396 -23 416 -26 437 -33 ct 442 -7 l 423 1 401 6 376 6 ct 344 6 318 -5 298 -25 ct
|
||||
279 -46 269 -73 269 -108 ct 269 -142 278 -170 295 -190 ct 313 -210 336 -220 364 -220 ct
|
||||
388 -220 409 -211 426 -192 ct 442 -173 451 -148 451 -117 ct p
|
||||
416 -133 m 416 -150 410 -164 400 -175 ct 389 -187 378 -192 365 -192 ct 348 -192 334 -187 323 -176 ct
|
||||
312 -165 306 -151 305 -133 ct p ef
|
||||
663 0 m 575 0 l 575 -264 l 518 -264 l 518 -291 l 607 -291 l 607 -28 l
|
||||
663 -28 l p ef
|
||||
897 0 m 809 0 l 809 -264 l 752 -264 l 752 -291 l 841 -291 l 841 -28 l
|
||||
897 -28 l p ef
|
||||
1063 -220 m 1092 -220 1116 -210 1133 -189 ct 1151 -169 1160 -142 1160 -108 ct
|
||||
1160 -74 1151 -46 1133 -26 ct 1116 -5 1092 6 1063 6 ct 1033 6 1009 -5 992 -26 ct
|
||||
975 -46 966 -74 966 -108 ct 966 -142 975 -169 992 -190 ct 1010 -210 1033 -220 1063 -220 ct
|
||||
p
|
||||
1063 -23 m 1082 -23 1098 -31 1109 -47 ct 1120 -64 1126 -84 1126 -107 ct 1126 -132 1120 -153 1109 -169 ct
|
||||
1098 -185 1083 -192 1063 -192 ct 1043 -192 1027 -185 1016 -169 ct 1005 -153 1000 -133 1000 -107 ct
|
||||
1000 -83 1005 -63 1017 -47 ct 1028 -31 1043 -23 1063 -23 ct p ef
|
||||
1356 -101 m 1233 -101 l 1233 -132 l 1356 -132 l p ef
|
||||
1546 -297 m 1552 -297 1557 -294 1561 -290 ct 1566 -286 1568 -281 1568 -274 ct
|
||||
1568 -268 1566 -263 1561 -259 ct 1557 -254 1552 -252 1546 -252 ct 1540 -252 1535 -254 1531 -259 ct
|
||||
1527 -263 1524 -269 1524 -274 ct 1524 -280 1527 -286 1531 -290 ct 1535 -294 1540 -297 1546 -297 ct
|
||||
p
|
||||
1562 0 m 1529 0 l 1529 -187 l 1466 -187 l 1466 -215 l 1562 -215 l
|
||||
p ef
|
||||
1849 0 m 1817 0 l 1817 -138 l 1817 -157 1814 -171 1808 -180 ct 1802 -188 1792 -192 1779 -192 ct
|
||||
1759 -192 1738 -180 1716 -156 ct 1716 0 l 1683 0 l 1683 -215 l 1716 -215 l
|
||||
1716 -184 l 1739 -208 1763 -220 1789 -220 ct 1829 -220 1849 -196 1849 -147 ct
|
||||
p ef
|
||||
2085 -10 m 2064 0 2042 5 2022 5 ct 1983 5 1964 -15 1964 -56 ct 1964 -187 l
|
||||
1923 -187 l 1923 -215 l 1964 -215 l 1964 -274 l 1995 -274 l 1995 -215 l
|
||||
2068 -215 l 2068 -187 l 1995 -187 l 1995 -64 l 1995 -51 1998 -41 2004 -34 ct
|
||||
2010 -27 2018 -23 2027 -23 ct 2045 -23 2063 -27 2080 -35 ct p ef
|
||||
2324 -107 m 2176 -107 l 2176 -82 2183 -62 2197 -46 ct 2211 -30 2229 -23 2249 -23 ct
|
||||
2269 -23 2289 -26 2310 -33 ct 2315 -7 l 2296 1 2274 6 2249 6 ct 2217 6 2191 -5 2171 -25 ct
|
||||
2152 -46 2142 -73 2142 -108 ct 2142 -142 2151 -170 2168 -190 ct 2186 -210 2209 -220 2237 -220 ct
|
||||
2261 -220 2282 -211 2299 -192 ct 2315 -173 2324 -148 2324 -117 ct p
|
||||
2289 -133 m 2289 -150 2283 -164 2273 -175 ct 2262 -187 2251 -192 2238 -192 ct
|
||||
2221 -192 2207 -187 2196 -176 ct 2185 -165 2179 -151 2178 -133 ct p ef
|
||||
2555 -209 m 2542 -178 l 2527 -185 2515 -188 2505 -188 ct 2495 -188 2486 -185 2477 -180 ct
|
||||
2468 -174 2459 -166 2452 -156 ct 2444 -146 2440 -140 2440 -139 ct 2440 0 l 2408 0 l
|
||||
2408 -215 l 2440 -215 l 2440 -172 l 2458 -204 2480 -220 2507 -220 ct 2524 -220 2539 -217 2555 -209 ct
|
||||
p ef
|
||||
2796 -215 m 2714 0 l 2685 0 l 2604 -215 l 2639 -215 l 2700 -44 l
|
||||
2761 -215 l p ef
|
||||
3026 0 m 2994 0 l 2991 -9 2990 -20 2990 -35 ct 2971 -8 2946 6 2915 6 ct 2899 6 2885 0 2873 -11 ct
|
||||
2860 -23 2854 -37 2854 -55 ct 2854 -66 2857 -75 2861 -83 ct 2865 -92 2871 -98 2880 -104 ct
|
||||
2888 -110 2898 -114 2910 -117 ct 2922 -120 2936 -123 2952 -124 ct 2988 -127 l
|
||||
2988 -137 l 2988 -174 2971 -192 2936 -192 ct 2928 -192 2918 -191 2906 -187 ct
|
||||
2893 -184 2882 -180 2873 -175 ct 2865 -198 l 2894 -213 2922 -220 2947 -220 ct
|
||||
2996 -220 3020 -194 3020 -143 ct 3020 -50 l 3020 -31 3022 -15 3026 0 ct p
|
||||
2988 -64 m 2988 -103 l 2959 -100 2939 -98 2928 -96 ct 2917 -93 2908 -89 2900 -83 ct
|
||||
2892 -77 2888 -68 2888 -58 ct 2888 -48 2892 -40 2898 -34 ct 2905 -28 2914 -25 2924 -25 ct
|
||||
2936 -25 2947 -29 2958 -36 ct 2970 -42 2980 -52 2988 -64 ct p ef
|
||||
3239 0 m 3151 0 l 3151 -264 l 3094 -264 l 3094 -291 l 3183 -291 l
|
||||
3183 -28 l 3239 -28 l p ef
|
||||
pom
|
||||
pum
|
||||
2969 11505 t
|
||||
pom
|
||||
6985 12303 m 15217 12303 l ps
|
||||
15233 12452 m 15765 12333 l 15776 12330 l 15786 12324 l 15793 12314 l
|
||||
15795 12304 l 15793 12292 l 15786 12282 l 15776 12276 l 15765 12273 l
|
||||
15233 12154 l 15229 12154 l 15227 12153 l 15216 12155 l 15206 12162 l
|
||||
15199 12172 l 15197 12183 l 15197 12423 l 15199 12434 l 15206 12444 l
|
||||
15216 12451 l 15227 12453 l 15229 12453 l 15233 12452 l p ef
|
||||
pum
|
||||
9520 12168 t
|
||||
348 0 m 348 -202 l 111 -202 l 111 0 l 52 0 l 52 -437 l 111 -437 l
|
||||
111 -252 l 348 -252 l 348 -437 l 407 -437 l 407 0 l p ef
|
||||
544 -156 m 544 -118 552 -88 567 -67 ct 583 -46 607 -36 637 -36 ct 661 -36 681 -41 695 -50 ct
|
||||
710 -60 720 -72 725 -87 ct 774 -73 l 754 -20 708 6 637 6 ct 588 6 550 -9 524 -38 ct
|
||||
498 -68 485 -112 485 -170 ct 485 -225 498 -268 524 -297 ct 550 -327 587 -342 635 -342 ct
|
||||
734 -342 783 -282 783 -163 ct 783 -156 l p
|
||||
725 -199 m 722 -234 713 -260 698 -276 ct 683 -292 662 -300 634 -300 ct 607 -300 586 -291 570 -273 ct
|
||||
554 -255 545 -230 544 -199 ct p ef
|
||||
854 0 m 854 -460 l 910 -460 l 910 0 l p ef
|
||||
995 0 m 995 -460 l 1051 -460 l 1051 0 l p ef
|
||||
1419 -168 m 1419 -109 1407 -66 1381 -37 ct 1355 -8 1317 6 1268 6 ct 1219 6 1182 -9 1157 -39 ct
|
||||
1132 -68 1120 -112 1120 -168 ct 1120 -284 1170 -342 1270 -342 ct 1321 -342 1359 -328 1383 -299 ct
|
||||
1407 -271 1419 -227 1419 -168 ct p
|
||||
1361 -168 m 1361 -214 1354 -248 1340 -269 ct 1327 -290 1303 -300 1271 -300 ct
|
||||
1238 -300 1215 -290 1200 -268 ct 1186 -247 1178 -214 1178 -168 ct 1178 -124 1185 -91 1200 -68 ct
|
||||
1214 -46 1237 -35 1268 -35 ct 1301 -35 1325 -46 1339 -67 ct 1354 -89 1361 -122 1361 -168 ct
|
||||
p ef
|
||||
1682 0 m 1682 -437 l 1741 -437 l 1741 0 l p ef
|
||||
2055 0 m 2055 -213 l 2055 -235 2053 -252 2048 -264 ct 2044 -276 2037 -285 2028 -291 ct
|
||||
2018 -296 2004 -299 1986 -299 ct 1959 -299 1938 -289 1922 -271 ct 1907 -253 1899 -227 1899 -194 ct
|
||||
1899 0 l 1843 0 l 1843 -264 l 1843 -303 1842 -327 1841 -335 ct 1894 -335 l
|
||||
1894 -334 1894 -332 1894 -327 ct 1895 -323 1895 -317 1895 -311 ct 1896 -306 1896 -294 1896 -278 ct
|
||||
1897 -278 l 1910 -301 1925 -318 1942 -327 ct 1959 -337 1980 -342 2005 -342 ct
|
||||
2041 -342 2068 -333 2085 -314 ct 2102 -296 2111 -266 2111 -224 ct 2111 0 l p ef
|
||||
2325 -2 m 2306 2 2288 5 2268 5 ct 2224 5 2201 -20 2201 -71 ct 2201 -295 l 2163 -295 l
|
||||
2163 -335 l 2204 -335 l 2220 -411 l 2257 -411 l 2257 -335 l 2319 -335 l
|
||||
2319 -295 l 2257 -295 l 2257 -83 l 2257 -67 2260 -56 2265 -49 ct 2270 -43 2280 -39 2293 -39 ct
|
||||
2300 -39 2311 -41 2325 -44 ct p ef
|
||||
2415 -156 m 2415 -118 2423 -88 2438 -67 ct 2454 -46 2478 -36 2508 -36 ct 2532 -36 2552 -41 2566 -50 ct
|
||||
2581 -60 2591 -72 2596 -87 ct 2645 -73 l 2625 -20 2579 6 2508 6 ct 2459 6 2421 -9 2395 -38 ct
|
||||
2369 -68 2356 -112 2356 -170 ct 2356 -225 2369 -268 2395 -297 ct 2421 -327 2458 -342 2506 -342 ct
|
||||
2605 -342 2654 -282 2654 -163 ct 2654 -156 l p
|
||||
2596 -199 m 2593 -234 2584 -260 2569 -276 ct 2554 -292 2533 -300 2505 -300 ct
|
||||
2478 -300 2457 -291 2441 -273 ct 2425 -255 2416 -230 2415 -199 ct p ef
|
||||
2726 0 m 2726 -257 l 2726 -281 2725 -307 2724 -335 ct 2777 -335 l 2779 -297 2779 -275 2779 -267 ct
|
||||
2781 -267 l 2789 -296 2800 -315 2811 -326 ct 2823 -336 2839 -342 2860 -342 ct
|
||||
2868 -342 2875 -341 2883 -339 ct 2883 -287 l 2875 -289 2866 -291 2853 -291 ct
|
||||
2830 -291 2812 -281 2800 -261 ct 2788 -241 2782 -212 2782 -175 ct 2782 0 l p ef
|
||||
2980 -156 m 2980 -118 2988 -88 3003 -67 ct 3019 -46 3043 -36 3073 -36 ct 3097 -36 3117 -41 3131 -50 ct
|
||||
3146 -60 3156 -72 3161 -87 ct 3210 -73 l 3190 -20 3144 6 3073 6 ct 3024 6 2986 -9 2960 -38 ct
|
||||
2934 -68 2921 -112 2921 -170 ct 2921 -225 2934 -268 2960 -297 ct 2986 -327 3023 -342 3071 -342 ct
|
||||
3170 -342 3219 -282 3219 -163 ct 3219 -156 l p
|
||||
3161 -199 m 3158 -234 3149 -260 3134 -276 ct 3119 -292 3098 -300 3070 -300 ct
|
||||
3043 -300 3022 -291 3006 -273 ct 2990 -255 2981 -230 2980 -199 ct p ef
|
||||
3542 -93 m 3542 -61 3530 -37 3506 -20 ct 3482 -2 3448 6 3405 6 ct 3364 6 3331 -1 3309 -14 ct
|
||||
3286 -28 3271 -50 3265 -79 ct 3314 -88 l 3319 -70 3329 -57 3343 -49 ct 3358 -40 3379 -36 3405 -36 ct
|
||||
3434 -36 3454 -41 3468 -49 ct 3481 -58 3487 -71 3487 -88 ct 3487 -102 3483 -112 3474 -121 ct
|
||||
3465 -129 3450 -136 3430 -141 ct 3390 -152 l 3358 -160 3335 -168 3321 -176 ct
|
||||
3308 -184 3297 -194 3289 -205 ct 3282 -216 3278 -230 3278 -247 ct 3278 -277 3289 -301 3311 -317 ct
|
||||
3333 -333 3364 -341 3406 -341 ct 3443 -341 3472 -334 3494 -321 ct 3516 -308 3530 -287 3536 -259 ct
|
||||
3485 -252 l 3482 -267 3474 -279 3460 -287 ct 3447 -295 3429 -299 3406 -299 ct
|
||||
3381 -299 3362 -295 3350 -287 ct 3338 -279 3332 -268 3332 -252 ct 3332 -243 3335 -235 3340 -229 ct
|
||||
3345 -223 3352 -217 3362 -213 ct 3371 -209 3392 -203 3423 -195 ct 3453 -188 3474 -181 3487 -174 ct
|
||||
3500 -168 3510 -161 3518 -153 ct 3525 -146 3531 -137 3535 -127 ct 3539 -117 3542 -106 3542 -93 ct
|
||||
p ef
|
||||
3736 -2 m 3717 2 3699 5 3679 5 ct 3635 5 3612 -20 3612 -71 ct 3612 -295 l 3574 -295 l
|
||||
3574 -335 l 3615 -335 l 3631 -411 l 3668 -411 l 3668 -335 l 3730 -335 l
|
||||
3730 -295 l 3668 -295 l 3668 -83 l 3668 -67 3671 -56 3676 -49 ct 3681 -43 3691 -39 3704 -39 ct
|
||||
3711 -39 3722 -41 3736 -44 ct p ef
|
||||
pom
|
||||
1.000 1.000 1.000 c 4417 9341 m 1930 9341 l 1930 7596 l 6904 7596 l
|
||||
6904 9341 l 4417 9341 l p ef
|
||||
0 lw 0.003 0.003 0.003 c 4417 9341 m 1929 9341 l 1929 7595 l 6904 7595 l
|
||||
6904 9341 l 4417 9341 l pc
|
||||
pum
|
||||
2371 8334 t
|
||||
424 0 m 424 -291 l 424 -324 424 -355 426 -384 ct 416 -347 407 -319 399 -298 ct
|
||||
286 0 l 245 0 l 130 -298 l 113 -350 l 103 -384 l 104 -350 l 105 -291 l
|
||||
105 0 l 52 0 l 52 -437 l 130 -437 l 246 -134 l 250 -122 254 -109 258 -95 ct
|
||||
262 -81 264 -71 266 -64 ct 267 -73 271 -85 276 -102 ct 281 -119 285 -130 287 -134 ct
|
||||
401 -437 l 477 -437 l 477 0 l p ef
|
||||
656 6 m 623 6 597 -3 580 -20 ct 563 -38 555 -63 555 -94 ct 555 -128 566 -155 589 -174 ct
|
||||
612 -192 649 -202 700 -203 ct 775 -205 l 775 -223 l 775 -250 769 -270 758 -282 ct
|
||||
746 -293 728 -299 703 -299 ct 678 -299 660 -295 649 -286 ct 637 -278 630 -264 628 -246 ct
|
||||
570 -251 l 579 -312 624 -342 704 -342 ct 747 -342 778 -332 800 -313 ct 821 -293 832 -265 832 -229 ct
|
||||
832 -84 l 832 -68 834 -55 838 -47 ct 842 -39 851 -34 863 -34 ct 868 -34 874 -35 881 -37 ct
|
||||
881 -2 l 867 1 853 3 838 3 ct 817 3 802 -2 793 -13 ct 784 -24 778 -41 777 -64 ct
|
||||
775 -64 l 761 -39 744 -20 725 -10 ct 706 1 683 6 656 6 ct p
|
||||
669 -36 m 690 -36 708 -40 724 -50 ct 740 -59 752 -72 761 -88 ct 771 -104 775 -121 775 -138 ct
|
||||
775 -166 l 714 -164 l 688 -164 668 -161 654 -156 ct 641 -151 630 -144 623 -133 ct
|
||||
616 -123 612 -109 612 -93 ct 612 -75 617 -60 627 -51 ct 637 -41 651 -36 669 -36 ct
|
||||
p ef
|
||||
926 0 m 926 -257 l 926 -281 925 -307 924 -335 ct 977 -335 l 979 -297 979 -275 979 -267 ct
|
||||
981 -267 l 989 -296 1000 -315 1011 -326 ct 1023 -336 1039 -342 1060 -342 ct
|
||||
1068 -342 1075 -341 1083 -339 ct 1083 -287 l 1075 -289 1066 -291 1053 -291 ct
|
||||
1030 -291 1012 -281 1000 -261 ct 988 -241 982 -212 982 -175 ct 982 0 l p ef
|
||||
1346 0 m 1233 -153 l 1192 -119 l 1192 0 l 1136 0 l 1136 -460 l 1192 -460 l
|
||||
1192 -173 l 1339 -335 l 1404 -335 l 1268 -191 l 1411 0 l p ef
|
||||
1948 0 m 1834 -181 l 1698 -181 l 1698 0 l 1639 0 l 1639 -437 l 1845 -437 l
|
||||
1894 -437 1932 -426 1959 -404 ct 1985 -382 1999 -351 1999 -312 ct 1999 -279 1989 -252 1970 -230 ct
|
||||
1951 -208 1925 -194 1892 -188 ct 2016 0 l p
|
||||
1939 -311 m 1939 -337 1931 -356 1913 -369 ct 1896 -383 1871 -389 1839 -389 ct
|
||||
1698 -389 l 1698 -228 l 1841 -228 l 1872 -228 1897 -235 1914 -250 ct 1931 -265 1939 -285 1939 -311 ct
|
||||
p ef
|
||||
2372 -168 m 2372 -109 2360 -66 2334 -37 ct 2308 -8 2270 6 2221 6 ct 2172 6 2135 -9 2110 -39 ct
|
||||
2085 -68 2073 -112 2073 -168 ct 2073 -284 2123 -342 2223 -342 ct 2274 -342 2312 -328 2336 -299 ct
|
||||
2360 -271 2372 -227 2372 -168 ct p
|
||||
2314 -168 m 2314 -214 2307 -248 2293 -269 ct 2280 -290 2256 -300 2224 -300 ct
|
||||
2191 -300 2168 -290 2153 -268 ct 2139 -247 2131 -214 2131 -168 ct 2131 -124 2138 -91 2153 -68 ct
|
||||
2167 -46 2190 -35 2221 -35 ct 2254 -35 2278 -46 2292 -67 ct 2307 -89 2314 -122 2314 -168 ct
|
||||
p ef
|
||||
2496 -335 m 2496 -123 l 2496 -101 2499 -84 2503 -71 ct 2507 -59 2514 -50 2524 -45 ct
|
||||
2533 -40 2547 -37 2566 -37 ct 2592 -37 2614 -46 2629 -64 ct 2645 -83 2652 -108 2652 -141 ct
|
||||
2652 -335 l 2708 -335 l 2708 -72 l 2708 -33 2709 -9 2710 0 ct 2657 0 l
|
||||
2657 -1 2657 -4 2657 -8 ct 2656 -13 2656 -18 2656 -24 ct 2656 -30 2655 -41 2655 -57 ct
|
||||
2654 -57 l 2641 -34 2626 -18 2609 -8 ct 2593 1 2572 6 2547 6 ct 2510 6 2483 -3 2466 -21 ct
|
||||
2449 -40 2440 -70 2440 -112 ct 2440 -335 l p ef
|
||||
2924 -2 m 2905 2 2887 5 2867 5 ct 2823 5 2800 -20 2800 -71 ct 2800 -295 l 2762 -295 l
|
||||
2762 -335 l 2803 -335 l 2819 -411 l 2856 -411 l 2856 -335 l 2918 -335 l
|
||||
2918 -295 l 2856 -295 l 2856 -83 l 2856 -67 2859 -56 2864 -49 ct 2869 -43 2879 -39 2892 -39 ct
|
||||
2899 -39 2910 -41 2924 -44 ct p ef
|
||||
3014 -156 m 3014 -118 3022 -88 3037 -67 ct 3053 -46 3077 -36 3107 -36 ct 3131 -36 3151 -41 3165 -50 ct
|
||||
3180 -60 3190 -72 3195 -87 ct 3244 -73 l 3224 -20 3178 6 3107 6 ct 3058 6 3020 -9 2994 -38 ct
|
||||
2968 -68 2955 -112 2955 -170 ct 2955 -225 2968 -268 2994 -297 ct 3020 -327 3057 -342 3105 -342 ct
|
||||
3204 -342 3253 -282 3253 -163 ct 3253 -156 l p
|
||||
3195 -199 m 3192 -234 3183 -260 3168 -276 ct 3153 -292 3132 -300 3104 -300 ct
|
||||
3077 -300 3056 -291 3040 -273 ct 3024 -255 3015 -230 3014 -199 ct p ef
|
||||
3325 0 m 3325 -257 l 3325 -281 3324 -307 3323 -335 ct 3376 -335 l 3378 -297 3378 -275 3378 -267 ct
|
||||
3380 -267 l 3388 -296 3399 -315 3410 -326 ct 3422 -336 3438 -342 3459 -342 ct
|
||||
3467 -342 3474 -341 3482 -339 ct 3482 -287 l 3474 -289 3465 -291 3452 -291 ct
|
||||
3429 -291 3411 -281 3399 -261 ct 3387 -241 3381 -212 3381 -175 ct 3381 0 l p ef
|
||||
4059 -123 m 4059 -84 4045 -54 4017 -32 ct 3988 -11 3949 0 3898 0 ct 3721 0 l
|
||||
3721 -437 l 3880 -437 l 3982 -437 4034 -402 4034 -331 ct 4034 -305 4026 -283 4012 -266 ct
|
||||
3997 -248 3977 -236 3951 -230 ct 3985 -226 4012 -215 4031 -195 ct 4050 -176 4059 -152 4059 -123 ct
|
||||
p
|
||||
3974 -324 m 3974 -347 3966 -364 3950 -374 ct 3934 -384 3910 -389 3880 -389 ct
|
||||
3780 -389 l 3780 -251 l 3880 -251 l 3911 -251 3935 -257 3951 -269 ct 3966 -281 3974 -299 3974 -324 ct
|
||||
p
|
||||
3999 -128 m 3999 -179 3963 -205 3891 -205 ct 3780 -205 l 3780 -47 l 3895 -47 l
|
||||
3932 -47 3958 -54 3974 -68 ct 3991 -81 3999 -101 3999 -128 ct p ef
|
||||
pom
|
||||
pum
|
||||
2864 9044 t
|
||||
128 6 m 95 6 69 -3 52 -20 ct 35 -38 27 -63 27 -94 ct 27 -128 38 -155 61 -174 ct
|
||||
84 -192 121 -202 172 -203 ct 247 -205 l 247 -223 l 247 -250 241 -270 230 -282 ct
|
||||
218 -293 200 -299 175 -299 ct 150 -299 132 -295 121 -286 ct 109 -278 102 -264 100 -246 ct
|
||||
42 -251 l 51 -312 96 -342 176 -342 ct 219 -342 250 -332 272 -313 ct 293 -293 304 -265 304 -229 ct
|
||||
304 -84 l 304 -68 306 -55 310 -47 ct 314 -39 323 -34 335 -34 ct 340 -34 346 -35 353 -37 ct
|
||||
353 -2 l 339 1 325 3 310 3 ct 289 3 274 -2 265 -13 ct 256 -24 250 -41 249 -64 ct
|
||||
247 -64 l 233 -39 216 -20 197 -10 ct 178 1 155 6 128 6 ct p
|
||||
141 -36 m 162 -36 180 -40 196 -50 ct 212 -59 224 -72 233 -88 ct 243 -104 247 -121 247 -138 ct
|
||||
247 -166 l 186 -164 l 160 -164 140 -161 126 -156 ct 113 -151 102 -144 95 -133 ct
|
||||
88 -123 84 -109 84 -93 ct 84 -75 89 -60 99 -51 ct 109 -41 123 -36 141 -36 ct p ef
|
||||
648 -93 m 648 -61 636 -37 612 -20 ct 588 -2 554 6 511 6 ct 470 6 437 -1 415 -14 ct
|
||||
392 -28 377 -50 371 -79 ct 420 -88 l 425 -70 435 -57 449 -49 ct 464 -40 485 -36 511 -36 ct
|
||||
540 -36 560 -41 574 -49 ct 587 -58 593 -71 593 -88 ct 593 -102 589 -112 580 -121 ct
|
||||
571 -129 556 -136 536 -141 ct 496 -152 l 464 -160 441 -168 427 -176 ct 414 -184 403 -194 395 -205 ct
|
||||
388 -216 384 -230 384 -247 ct 384 -277 395 -301 417 -317 ct 439 -333 470 -341 512 -341 ct
|
||||
549 -341 578 -334 600 -321 ct 622 -308 636 -287 642 -259 ct 591 -252 l 588 -267 580 -279 566 -287 ct
|
||||
553 -295 535 -299 512 -299 ct 487 -299 468 -295 456 -287 ct 444 -279 438 -268 438 -252 ct
|
||||
438 -243 441 -235 446 -229 ct 451 -223 458 -217 468 -213 ct 477 -209 498 -203 529 -195 ct
|
||||
559 -188 580 -181 593 -174 ct 606 -168 616 -161 624 -153 ct 631 -146 637 -137 641 -127 ct
|
||||
645 -117 648 -106 648 -93 ct p ef
|
||||
1174 0 m 1124 -128 l 925 -128 l 875 0 l 813 0 l 992 -437 l 1059 -437 l
|
||||
1234 0 l p
|
||||
1024 -392 m 1022 -384 l 1016 -366 1009 -344 999 -318 ct 943 -174 l 1106 -174 l
|
||||
1050 -318 l 1044 -332 1039 -349 1033 -366 ct p ef
|
||||
1481 -395 m 1432 -395 1395 -379 1368 -348 ct 1341 -317 1327 -275 1327 -220 ct
|
||||
1327 -167 1341 -124 1369 -91 ct 1397 -59 1435 -42 1483 -42 ct 1544 -42 1590 -73 1621 -133 ct
|
||||
1669 -109 l 1651 -72 1626 -43 1594 -23 ct 1561 -4 1523 6 1480 6 ct 1436 6 1398 -3 1366 -21 ct
|
||||
1334 -40 1309 -66 1293 -100 ct 1276 -134 1267 -174 1267 -220 ct 1267 -290 1286 -345 1324 -384 ct
|
||||
1361 -424 1413 -443 1480 -443 ct 1526 -443 1565 -434 1597 -416 ct 1628 -398 1651 -371 1665 -335 ct
|
||||
1609 -317 l 1599 -342 1583 -361 1560 -375 ct 1538 -388 1511 -395 1481 -395 ct
|
||||
p ef
|
||||
1917 -389 m 1917 0 l 1858 0 l 1858 -389 l 1708 -389 l 1708 -437 l
|
||||
2067 -437 l 2067 -389 l p ef
|
||||
2141 0 m 2141 -437 l 2200 -437 l 2200 0 l p ef
|
||||
2500 0 m 2439 0 l 2261 -437 l 2323 -437 l 2444 -129 l 2470 -52 l
|
||||
2496 -129 l 2616 -437 l 2679 -437 l p ef
|
||||
2734 0 m 2734 -437 l 3066 -437 l 3066 -389 l 2793 -389 l 2793 -248 l
|
||||
3047 -248 l 3047 -201 l 2793 -201 l 2793 -48 l 3078 -48 l 3078 0 l
|
||||
p ef
|
||||
pom
|
||||
6772 5052 m 6699 5052 6626 5089 6626 5127 ct 6626 5427 l 6626 5464 6553 5502 6480 5502 ct
|
||||
6553 5502 6626 5540 6626 5577 ct 6626 5876 l 6626 5914 6699 5952 6772 5952 ct
|
||||
ps
|
||||
6480 5052 m 6480 5052 l pc
|
||||
6772 5952 m 6772 5952 l pc
|
||||
6774 9552 m 6701 9552 6628 9664 6628 9776 ct 6628 10672 l 6628 10784 6555 10897 6482 10897 ct
|
||||
6555 10897 6628 11009 6628 11121 ct 6628 12016 l 6628 12128 6701 12241 6774 12241 ct
|
||||
ps
|
||||
6482 9552 m 6482 9552 l pc
|
||||
6774 12241 m 6774 12241 l pc
|
||||
0 11487 t
|
||||
pom
|
||||
count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%EOF
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,21 +0,0 @@
|
||||
This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/TeX Live for SUSE Linux) (format=pdflatex 2016.6.30) 12 SEP 2016 10:54
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
**nlsr-docs.tex
|
||||
|
||||
! Emergency stop.
|
||||
<*> nlsr-docs.tex
|
||||
|
||||
End of file on the terminal!
|
||||
|
||||
|
||||
Here is how much of TeX's memory you used:
|
||||
3 strings out of 493315
|
||||
130 string characters out of 6145893
|
||||
52158 words of memory out of 5000000
|
||||
3557 multiletter control sequences out of 15000+600000
|
||||
3640 words of font info for 14 fonts, out of 8000000 for 9000
|
||||
957 hyphenation exceptions out of 8191
|
||||
0i,0n,0p,16b,6s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
! ==> Fatal error occurred, no output PDF file produced!
|
||||
Binary file not shown.
@@ -1,955 +0,0 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%BoundingBox: 0 0 544 264
|
||||
%%Pages: 0
|
||||
%%Creator: Sun Microsystems, Inc.
|
||||
%%Title: none
|
||||
%%CreationDate: none
|
||||
%%LanguageLevel: 2
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%BeginResource: procset SDRes-Prolog 1.0 0
|
||||
/b4_inc_state save def
|
||||
/dict_count countdictstack def
|
||||
/op_count count 1 sub def
|
||||
userdict begin
|
||||
0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
|
||||
/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
|
||||
/bdef {bind def} bind def
|
||||
/c {setrgbcolor} bdef
|
||||
/l {neg lineto} bdef
|
||||
/rl {neg rlineto} bdef
|
||||
/lc {setlinecap} bdef
|
||||
/lj {setlinejoin} bdef
|
||||
/lw {setlinewidth} bdef
|
||||
/ml {setmiterlimit} bdef
|
||||
/ld {setdash} bdef
|
||||
/m {neg moveto} bdef
|
||||
/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
|
||||
/r {rotate} bdef
|
||||
/t {neg translate} bdef
|
||||
/s {scale} bdef
|
||||
/sw {show} bdef
|
||||
/gs {gsave} bdef
|
||||
/gr {grestore} bdef
|
||||
/f {findfont dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
|
||||
currentdict end /NFont exch definefont pop /NFont findfont} bdef
|
||||
/p {closepath} bdef
|
||||
/sf {scalefont setfont} bdef
|
||||
/ef {eofill}bdef
|
||||
/pc {closepath stroke}bdef
|
||||
/ps {stroke}bdef
|
||||
/pum {matrix currentmatrix}bdef
|
||||
/pom {setmatrix}bdef
|
||||
/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
|
||||
%%EndResource
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%Page: 1 1
|
||||
%%BeginPageSetup
|
||||
%%EndPageSetup
|
||||
pum
|
||||
0.02832 0.02833 s
|
||||
0 -9316 t
|
||||
/tm matrix currentmatrix def
|
||||
tm setmatrix
|
||||
-1198 -1542 t
|
||||
1 1 s
|
||||
1.000 1.000 1.000 c 1199 9837 m 3612 9837 l 3612 10854 l 1199 10854 l
|
||||
1199 9837 l 1199 9837 l p ef
|
||||
0 lw 1 lj 0.003 0.003 0.003 c 1198 9836 m 3612 9836 l 3612 10853 l 1198 10853 l
|
||||
1198 9836 l 1198 9836 l pc
|
||||
pum
|
||||
1559 10566 t
|
||||
115 0 m 53 0 l 53 -454 l 119 -454 l 344 -108 l 344 -454 l 406 -454 l
|
||||
406 0 l 340 0 l 115 -346 l 115 0 l p ef
|
||||
790 0 m 512 0 l 512 -454 l 574 -454 l 574 -53 l 790 -53 l 790 0 l
|
||||
p ef
|
||||
843 -154 m 905 -154 l 907 -130 913 -111 922 -95 ct 932 -80 946 -68 966 -58 ct
|
||||
985 -49 1007 -44 1032 -44 ct 1053 -44 1072 -48 1089 -55 ct 1106 -62 1118 -72 1126 -84 ct
|
||||
1134 -97 1138 -110 1138 -124 ct 1138 -138 1135 -150 1128 -160 ct 1122 -171 1109 -179 1091 -187 ct
|
||||
1079 -191 1053 -199 1013 -209 ct 973 -219 944 -229 927 -238 ct 905 -249 888 -263 877 -280 ct
|
||||
866 -297 861 -316 861 -337 ct 861 -360 867 -382 880 -402 ct 893 -422 912 -437 937 -447 ct
|
||||
962 -458 990 -463 1020 -463 ct 1054 -463 1084 -458 1110 -447 ct 1135 -436 1155 -420 1169 -398 ct
|
||||
1183 -377 1190 -353 1191 -326 ct 1130 -326 l 1127 -354 1116 -375 1099 -389 ct
|
||||
1082 -403 1057 -410 1023 -410 ct 988 -410 962 -403 946 -390 ct 930 -377 922 -360 922 -341 ct
|
||||
922 -325 928 -311 939 -301 ct 950 -290 980 -279 1027 -268 ct 1074 -257 1106 -247 1124 -239 ct
|
||||
1150 -227 1169 -211 1181 -192 ct 1194 -174 1200 -152 1200 -128 ct 1200 -103 1193 -81 1180 -59 ct
|
||||
1166 -38 1146 -21 1121 -9 ct 1095 3 1066 9 1034 9 ct 994 9 960 2 932 -10 ct 905 -23 883 -42 868 -68 ct
|
||||
852 -93 844 -122 843 -154 ct p ef
|
||||
1350 0 m 1288 0 l 1288 -454 l 1485 -454 l 1524 -454 1554 -450 1574 -442 ct
|
||||
1594 -434 1610 -420 1623 -399 ct 1635 -378 1641 -356 1641 -331 ct 1641 -298 1631 -271 1611 -249 ct
|
||||
1591 -227 1560 -213 1518 -207 ct 1533 -200 1545 -192 1552 -185 ct 1569 -168 1585 -148 1600 -124 ct
|
||||
1676 0 l 1604 0 l 1546 -95 l 1529 -122 1515 -143 1504 -158 ct 1494 -172 1484 -182 1475 -188 ct
|
||||
1466 -194 1458 -198 1449 -201 ct 1442 -202 1432 -203 1417 -203 ct 1350 -203 l
|
||||
1350 0 l p
|
||||
1350 -401 m 1350 -256 l 1474 -256 l 1500 -256 1521 -259 1535 -264 ct 1549 -270 1560 -278 1568 -290 ct
|
||||
1575 -303 1579 -316 1579 -330 ct 1579 -351 1572 -368 1557 -381 ct 1542 -395 1519 -401 1488 -401 ct
|
||||
1350 -401 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 4019 9838 m 6433 9838 l 6433 10855 l 4019 10855 l
|
||||
4019 9838 l 4019 9838 l p ef
|
||||
0.003 0.003 0.003 c 4019 9837 m 6432 9837 l 6432 10854 l 4019 10854 l 4019 9837 l
|
||||
4019 9837 l pc
|
||||
pum
|
||||
4379 10567 t
|
||||
115 0 m 53 0 l 53 -454 l 119 -454 l 344 -108 l 344 -454 l 406 -454 l
|
||||
406 0 l 340 0 l 115 -346 l 115 0 l p ef
|
||||
790 0 m 512 0 l 512 -454 l 574 -454 l 574 -53 l 790 -53 l 790 0 l
|
||||
p ef
|
||||
843 -154 m 905 -154 l 907 -130 913 -111 922 -95 ct 932 -80 946 -68 966 -58 ct
|
||||
985 -49 1007 -44 1032 -44 ct 1053 -44 1072 -48 1089 -55 ct 1106 -62 1118 -72 1126 -84 ct
|
||||
1134 -97 1138 -110 1138 -124 ct 1138 -138 1135 -150 1128 -160 ct 1122 -171 1109 -179 1091 -187 ct
|
||||
1079 -191 1053 -199 1013 -209 ct 973 -219 944 -229 927 -238 ct 905 -249 888 -263 877 -280 ct
|
||||
866 -297 861 -316 861 -337 ct 861 -360 867 -382 880 -402 ct 893 -422 912 -437 937 -447 ct
|
||||
962 -458 990 -463 1020 -463 ct 1054 -463 1084 -458 1110 -447 ct 1135 -436 1155 -420 1169 -398 ct
|
||||
1183 -377 1190 -353 1191 -326 ct 1130 -326 l 1127 -354 1116 -375 1099 -389 ct
|
||||
1082 -403 1057 -410 1023 -410 ct 988 -410 962 -403 946 -390 ct 930 -377 922 -360 922 -341 ct
|
||||
922 -325 928 -311 939 -301 ct 950 -290 980 -279 1027 -268 ct 1074 -257 1106 -247 1124 -239 ct
|
||||
1150 -227 1169 -211 1181 -192 ct 1194 -174 1200 -152 1200 -128 ct 1200 -103 1193 -81 1180 -59 ct
|
||||
1166 -38 1146 -21 1121 -9 ct 1095 3 1066 9 1034 9 ct 994 9 960 2 932 -10 ct 905 -23 883 -42 868 -68 ct
|
||||
852 -93 844 -122 843 -154 ct p ef
|
||||
1350 0 m 1288 0 l 1288 -454 l 1485 -454 l 1524 -454 1554 -450 1574 -442 ct
|
||||
1594 -434 1610 -420 1623 -399 ct 1635 -378 1641 -356 1641 -331 ct 1641 -298 1631 -271 1611 -249 ct
|
||||
1591 -227 1560 -213 1518 -207 ct 1533 -200 1545 -192 1552 -185 ct 1569 -168 1585 -148 1600 -124 ct
|
||||
1676 0 l 1604 0 l 1546 -95 l 1529 -122 1515 -143 1504 -158 ct 1494 -172 1484 -182 1475 -188 ct
|
||||
1466 -194 1458 -198 1449 -201 ct 1442 -202 1432 -203 1417 -203 ct 1350 -203 l
|
||||
1350 0 l p
|
||||
1350 -401 m 1350 -256 l 1474 -256 l 1500 -256 1521 -259 1535 -264 ct 1549 -270 1560 -278 1568 -290 ct
|
||||
1575 -303 1579 -316 1579 -330 ct 1579 -351 1572 -368 1557 -381 ct 1542 -395 1519 -401 1488 -401 ct
|
||||
1350 -401 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 6813 9838 m 9227 9838 l 9227 10855 l 6813 10855 l
|
||||
6813 9838 l 6813 9838 l p ef
|
||||
0.003 0.003 0.003 c 6812 9837 m 9226 9837 l 9226 10854 l 6812 10854 l 6812 9837 l
|
||||
6812 9837 l pc
|
||||
pum
|
||||
7173 10567 t
|
||||
115 0 m 53 0 l 53 -454 l 119 -454 l 344 -108 l 344 -454 l 406 -454 l
|
||||
406 0 l 340 0 l 115 -346 l 115 0 l p ef
|
||||
790 0 m 512 0 l 512 -454 l 574 -454 l 574 -53 l 790 -53 l 790 0 l
|
||||
p ef
|
||||
843 -154 m 905 -154 l 907 -130 913 -111 922 -95 ct 932 -80 946 -68 966 -58 ct
|
||||
985 -49 1007 -44 1032 -44 ct 1053 -44 1072 -48 1089 -55 ct 1106 -62 1118 -72 1126 -84 ct
|
||||
1134 -97 1138 -110 1138 -124 ct 1138 -138 1135 -150 1128 -160 ct 1122 -171 1109 -179 1091 -187 ct
|
||||
1079 -191 1053 -199 1013 -209 ct 973 -219 944 -229 927 -238 ct 905 -249 888 -263 877 -280 ct
|
||||
866 -297 861 -316 861 -337 ct 861 -360 867 -382 880 -402 ct 893 -422 912 -437 937 -447 ct
|
||||
962 -458 990 -463 1020 -463 ct 1054 -463 1084 -458 1110 -447 ct 1135 -436 1155 -420 1169 -398 ct
|
||||
1183 -377 1190 -353 1191 -326 ct 1130 -326 l 1127 -354 1116 -375 1099 -389 ct
|
||||
1082 -403 1057 -410 1023 -410 ct 988 -410 962 -403 946 -390 ct 930 -377 922 -360 922 -341 ct
|
||||
922 -325 928 -311 939 -301 ct 950 -290 980 -279 1027 -268 ct 1074 -257 1106 -247 1124 -239 ct
|
||||
1150 -227 1169 -211 1181 -192 ct 1194 -174 1200 -152 1200 -128 ct 1200 -103 1193 -81 1180 -59 ct
|
||||
1166 -38 1146 -21 1121 -9 ct 1095 3 1066 9 1034 9 ct 994 9 960 2 932 -10 ct 905 -23 883 -42 868 -68 ct
|
||||
852 -93 844 -122 843 -154 ct p ef
|
||||
1350 0 m 1288 0 l 1288 -454 l 1485 -454 l 1524 -454 1554 -450 1574 -442 ct
|
||||
1594 -434 1610 -420 1623 -399 ct 1635 -378 1641 -356 1641 -331 ct 1641 -298 1631 -271 1611 -249 ct
|
||||
1591 -227 1560 -213 1518 -207 ct 1533 -200 1545 -192 1552 -185 ct 1569 -168 1585 -148 1600 -124 ct
|
||||
1676 0 l 1604 0 l 1546 -95 l 1529 -122 1515 -143 1504 -158 ct 1494 -172 1484 -182 1475 -188 ct
|
||||
1466 -194 1458 -198 1449 -201 ct 1442 -202 1432 -203 1417 -203 ct 1350 -203 l
|
||||
1350 0 l p
|
||||
1350 -401 m 1350 -256 l 1474 -256 l 1500 -256 1521 -259 1535 -264 ct 1549 -270 1560 -278 1568 -290 ct
|
||||
1575 -303 1579 -316 1579 -330 ct 1579 -351 1572 -368 1557 -381 ct 1542 -395 1519 -401 1488 -401 ct
|
||||
1350 -401 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 9606 9837 m 12020 9837 l 12020 10854 l 9606 10854 l
|
||||
9606 9837 l 9606 9837 l p ef
|
||||
0.003 0.003 0.003 c 9606 9836 m 12020 9836 l 12020 10853 l 9606 10853 l
|
||||
9606 9836 l 9606 9836 l pc
|
||||
pum
|
||||
9966 10566 t
|
||||
115 0 m 53 0 l 53 -454 l 119 -454 l 344 -108 l 344 -454 l 406 -454 l
|
||||
406 0 l 340 0 l 115 -346 l 115 0 l p ef
|
||||
790 0 m 512 0 l 512 -454 l 574 -454 l 574 -53 l 790 -53 l 790 0 l
|
||||
p ef
|
||||
843 -154 m 905 -154 l 907 -130 913 -111 922 -95 ct 932 -80 946 -68 966 -58 ct
|
||||
985 -49 1007 -44 1032 -44 ct 1053 -44 1072 -48 1089 -55 ct 1106 -62 1118 -72 1126 -84 ct
|
||||
1134 -97 1138 -110 1138 -124 ct 1138 -138 1135 -150 1128 -160 ct 1122 -171 1109 -179 1091 -187 ct
|
||||
1079 -191 1053 -199 1013 -209 ct 973 -219 944 -229 927 -238 ct 905 -249 888 -263 877 -280 ct
|
||||
866 -297 861 -316 861 -337 ct 861 -360 867 -382 880 -402 ct 893 -422 912 -437 937 -447 ct
|
||||
962 -458 990 -463 1020 -463 ct 1054 -463 1084 -458 1110 -447 ct 1135 -436 1155 -420 1169 -398 ct
|
||||
1183 -377 1190 -353 1191 -326 ct 1130 -326 l 1127 -354 1116 -375 1099 -389 ct
|
||||
1082 -403 1057 -410 1023 -410 ct 988 -410 962 -403 946 -390 ct 930 -377 922 -360 922 -341 ct
|
||||
922 -325 928 -311 939 -301 ct 950 -290 980 -279 1027 -268 ct 1074 -257 1106 -247 1124 -239 ct
|
||||
1150 -227 1169 -211 1181 -192 ct 1194 -174 1200 -152 1200 -128 ct 1200 -103 1193 -81 1180 -59 ct
|
||||
1166 -38 1146 -21 1121 -9 ct 1095 3 1066 9 1034 9 ct 994 9 960 2 932 -10 ct 905 -23 883 -42 868 -68 ct
|
||||
852 -93 844 -122 843 -154 ct p ef
|
||||
1350 0 m 1288 0 l 1288 -454 l 1485 -454 l 1524 -454 1554 -450 1574 -442 ct
|
||||
1594 -434 1610 -420 1623 -399 ct 1635 -378 1641 -356 1641 -331 ct 1641 -298 1631 -271 1611 -249 ct
|
||||
1591 -227 1560 -213 1518 -207 ct 1533 -200 1545 -192 1552 -185 ct 1569 -168 1585 -148 1600 -124 ct
|
||||
1676 0 l 1604 0 l 1546 -95 l 1529 -122 1515 -143 1504 -158 ct 1494 -172 1484 -182 1475 -188 ct
|
||||
1466 -194 1458 -198 1449 -201 ct 1442 -202 1432 -203 1417 -203 ct 1350 -203 l
|
||||
1350 0 l p
|
||||
1350 -401 m 1350 -256 l 1474 -256 l 1500 -256 1521 -259 1535 -264 ct 1549 -270 1560 -278 1568 -290 ct
|
||||
1575 -303 1579 -316 1579 -330 ct 1579 -351 1572 -368 1557 -381 ct 1542 -395 1519 -401 1488 -401 ct
|
||||
1350 -401 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 12400 9838 m 14814 9838 l 14814 10855 l 12400 10855 l
|
||||
12400 9838 l 12400 9838 l p ef
|
||||
0.003 0.003 0.003 c 12400 9837 m 14813 9837 l 14813 10854 l 12400 10854 l
|
||||
12400 9837 l 12400 9837 l pc
|
||||
pum
|
||||
12760 10567 t
|
||||
115 0 m 53 0 l 53 -454 l 119 -454 l 344 -108 l 344 -454 l 406 -454 l
|
||||
406 0 l 340 0 l 115 -346 l 115 0 l p ef
|
||||
790 0 m 512 0 l 512 -454 l 574 -454 l 574 -53 l 790 -53 l 790 0 l
|
||||
p ef
|
||||
843 -154 m 905 -154 l 907 -130 913 -111 922 -95 ct 932 -80 946 -68 966 -58 ct
|
||||
985 -49 1007 -44 1032 -44 ct 1053 -44 1072 -48 1089 -55 ct 1106 -62 1118 -72 1126 -84 ct
|
||||
1134 -97 1138 -110 1138 -124 ct 1138 -138 1135 -150 1128 -160 ct 1122 -171 1109 -179 1091 -187 ct
|
||||
1079 -191 1053 -199 1013 -209 ct 973 -219 944 -229 927 -238 ct 905 -249 888 -263 877 -280 ct
|
||||
866 -297 861 -316 861 -337 ct 861 -360 867 -382 880 -402 ct 893 -422 912 -437 937 -447 ct
|
||||
962 -458 990 -463 1020 -463 ct 1054 -463 1084 -458 1110 -447 ct 1135 -436 1155 -420 1169 -398 ct
|
||||
1183 -377 1190 -353 1191 -326 ct 1130 -326 l 1127 -354 1116 -375 1099 -389 ct
|
||||
1082 -403 1057 -410 1023 -410 ct 988 -410 962 -403 946 -390 ct 930 -377 922 -360 922 -341 ct
|
||||
922 -325 928 -311 939 -301 ct 950 -290 980 -279 1027 -268 ct 1074 -257 1106 -247 1124 -239 ct
|
||||
1150 -227 1169 -211 1181 -192 ct 1194 -174 1200 -152 1200 -128 ct 1200 -103 1193 -81 1180 -59 ct
|
||||
1166 -38 1146 -21 1121 -9 ct 1095 3 1066 9 1034 9 ct 994 9 960 2 932 -10 ct 905 -23 883 -42 868 -68 ct
|
||||
852 -93 844 -122 843 -154 ct p ef
|
||||
1350 0 m 1288 0 l 1288 -454 l 1485 -454 l 1524 -454 1554 -450 1574 -442 ct
|
||||
1594 -434 1610 -420 1623 -399 ct 1635 -378 1641 -356 1641 -331 ct 1641 -298 1631 -271 1611 -249 ct
|
||||
1591 -227 1560 -213 1518 -207 ct 1533 -200 1545 -192 1552 -185 ct 1569 -168 1585 -148 1600 -124 ct
|
||||
1676 0 l 1604 0 l 1546 -95 l 1529 -122 1515 -143 1504 -158 ct 1494 -172 1484 -182 1475 -188 ct
|
||||
1466 -194 1458 -198 1449 -201 ct 1442 -202 1432 -203 1417 -203 ct 1350 -203 l
|
||||
1350 0 l p
|
||||
1350 -401 m 1350 -256 l 1474 -256 l 1500 -256 1521 -259 1535 -264 ct 1549 -270 1560 -278 1568 -290 ct
|
||||
1575 -303 1579 -316 1579 -330 ct 1579 -351 1572 -368 1557 -381 ct 1542 -395 1519 -401 1488 -401 ct
|
||||
1350 -401 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 15194 9839 m 17607 9839 l 17607 10856 l 15194 10856 l
|
||||
15194 9839 l 15194 9839 l p ef
|
||||
0.003 0.003 0.003 c 15193 9838 m 17607 9838 l 17607 10855 l 15193 10855 l
|
||||
15193 9838 l 15193 9838 l pc
|
||||
pum
|
||||
15554 10568 t
|
||||
115 0 m 53 0 l 53 -454 l 119 -454 l 344 -108 l 344 -454 l 406 -454 l
|
||||
406 0 l 340 0 l 115 -346 l 115 0 l p ef
|
||||
790 0 m 512 0 l 512 -454 l 574 -454 l 574 -53 l 790 -53 l 790 0 l
|
||||
p ef
|
||||
843 -154 m 905 -154 l 907 -130 913 -111 922 -95 ct 932 -80 946 -68 966 -58 ct
|
||||
985 -49 1007 -44 1032 -44 ct 1053 -44 1072 -48 1089 -55 ct 1106 -62 1118 -72 1126 -84 ct
|
||||
1134 -97 1138 -110 1138 -124 ct 1138 -138 1135 -150 1128 -160 ct 1122 -171 1109 -179 1091 -187 ct
|
||||
1079 -191 1053 -199 1013 -209 ct 973 -219 944 -229 927 -238 ct 905 -249 888 -263 877 -280 ct
|
||||
866 -297 861 -316 861 -337 ct 861 -360 867 -382 880 -402 ct 893 -422 912 -437 937 -447 ct
|
||||
962 -458 990 -463 1020 -463 ct 1054 -463 1084 -458 1110 -447 ct 1135 -436 1155 -420 1169 -398 ct
|
||||
1183 -377 1190 -353 1191 -326 ct 1130 -326 l 1127 -354 1116 -375 1099 -389 ct
|
||||
1082 -403 1057 -410 1023 -410 ct 988 -410 962 -403 946 -390 ct 930 -377 922 -360 922 -341 ct
|
||||
922 -325 928 -311 939 -301 ct 950 -290 980 -279 1027 -268 ct 1074 -257 1106 -247 1124 -239 ct
|
||||
1150 -227 1169 -211 1181 -192 ct 1194 -174 1200 -152 1200 -128 ct 1200 -103 1193 -81 1180 -59 ct
|
||||
1166 -38 1146 -21 1121 -9 ct 1095 3 1066 9 1034 9 ct 994 9 960 2 932 -10 ct 905 -23 883 -42 868 -68 ct
|
||||
852 -93 844 -122 843 -154 ct p ef
|
||||
1350 0 m 1288 0 l 1288 -454 l 1485 -454 l 1524 -454 1554 -450 1574 -442 ct
|
||||
1594 -434 1610 -420 1623 -399 ct 1635 -378 1641 -356 1641 -331 ct 1641 -298 1631 -271 1611 -249 ct
|
||||
1591 -227 1560 -213 1518 -207 ct 1533 -200 1545 -192 1552 -185 ct 1569 -168 1585 -148 1600 -124 ct
|
||||
1676 0 l 1604 0 l 1546 -95 l 1529 -122 1515 -143 1504 -158 ct 1494 -172 1484 -182 1475 -188 ct
|
||||
1466 -194 1458 -198 1449 -201 ct 1442 -202 1432 -203 1417 -203 ct 1350 -203 l
|
||||
1350 0 l p
|
||||
1350 -401 m 1350 -256 l 1474 -256 l 1500 -256 1521 -259 1535 -264 ct 1549 -270 1560 -278 1568 -290 ct
|
||||
1575 -303 1579 -316 1579 -330 ct 1579 -351 1572 -368 1557 -381 ct 1542 -395 1519 -401 1488 -401 ct
|
||||
1350 -401 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 17987 9839 m 20401 9839 l 20401 10856 l 17987 10856 l
|
||||
17987 9839 l 17987 9839 l p ef
|
||||
0.003 0.003 0.003 c 17987 9838 m 20400 9838 l 20400 10855 l 17987 10855 l
|
||||
17987 9838 l 17987 9838 l pc
|
||||
pum
|
||||
18347 10568 t
|
||||
115 0 m 53 0 l 53 -454 l 119 -454 l 344 -108 l 344 -454 l 406 -454 l
|
||||
406 0 l 340 0 l 115 -346 l 115 0 l p ef
|
||||
790 0 m 512 0 l 512 -454 l 574 -454 l 574 -53 l 790 -53 l 790 0 l
|
||||
p ef
|
||||
843 -154 m 905 -154 l 907 -130 913 -111 922 -95 ct 932 -80 946 -68 966 -58 ct
|
||||
985 -49 1007 -44 1032 -44 ct 1053 -44 1072 -48 1089 -55 ct 1106 -62 1118 -72 1126 -84 ct
|
||||
1134 -97 1138 -110 1138 -124 ct 1138 -138 1135 -150 1128 -160 ct 1122 -171 1109 -179 1091 -187 ct
|
||||
1079 -191 1053 -199 1013 -209 ct 973 -219 944 -229 927 -238 ct 905 -249 888 -263 877 -280 ct
|
||||
866 -297 861 -316 861 -337 ct 861 -360 867 -382 880 -402 ct 893 -422 912 -437 937 -447 ct
|
||||
962 -458 990 -463 1020 -463 ct 1054 -463 1084 -458 1110 -447 ct 1135 -436 1155 -420 1169 -398 ct
|
||||
1183 -377 1190 -353 1191 -326 ct 1130 -326 l 1127 -354 1116 -375 1099 -389 ct
|
||||
1082 -403 1057 -410 1023 -410 ct 988 -410 962 -403 946 -390 ct 930 -377 922 -360 922 -341 ct
|
||||
922 -325 928 -311 939 -301 ct 950 -290 980 -279 1027 -268 ct 1074 -257 1106 -247 1124 -239 ct
|
||||
1150 -227 1169 -211 1181 -192 ct 1194 -174 1200 -152 1200 -128 ct 1200 -103 1193 -81 1180 -59 ct
|
||||
1166 -38 1146 -21 1121 -9 ct 1095 3 1066 9 1034 9 ct 994 9 960 2 932 -10 ct 905 -23 883 -42 868 -68 ct
|
||||
852 -93 844 -122 843 -154 ct p ef
|
||||
1350 0 m 1288 0 l 1288 -454 l 1485 -454 l 1524 -454 1554 -450 1574 -442 ct
|
||||
1594 -434 1610 -420 1623 -399 ct 1635 -378 1641 -356 1641 -331 ct 1641 -298 1631 -271 1611 -249 ct
|
||||
1591 -227 1560 -213 1518 -207 ct 1533 -200 1545 -192 1552 -185 ct 1569 -168 1585 -148 1600 -124 ct
|
||||
1676 0 l 1604 0 l 1546 -95 l 1529 -122 1515 -143 1504 -158 ct 1494 -172 1484 -182 1475 -188 ct
|
||||
1466 -194 1458 -198 1449 -201 ct 1442 -202 1432 -203 1417 -203 ct 1350 -203 l
|
||||
1350 0 l p
|
||||
1350 -401 m 1350 -256 l 1474 -256 l 1500 -256 1521 -259 1535 -264 ct 1549 -270 1560 -278 1568 -290 ct
|
||||
1575 -303 1579 -316 1579 -330 ct 1579 -351 1572 -368 1557 -381 ct 1542 -395 1519 -401 1488 -401 ct
|
||||
1350 -401 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 1201 7838 m 3613 7838 l 3613 8855 l 1201 8855 l
|
||||
1201 7838 l 1201 7838 l p ef
|
||||
0.003 0.003 0.003 c 1200 7838 m 3613 7838 l 3613 8855 l 1200 8855 l 1200 7838 l
|
||||
1200 7838 l pc
|
||||
pum
|
||||
1401 8567 t
|
||||
101 0 m 44 0 l 44 -331 l 93 -331 l 93 -283 l 105 -304 117 -318 128 -325 ct
|
||||
139 -332 151 -335 164 -335 ct 182 -335 201 -330 220 -321 ct 201 -269 l 188 -278 175 -282 162 -282 ct
|
||||
150 -282 140 -279 130 -271 ct 121 -264 114 -253 110 -240 ct 104 -220 101 -198 101 -174 ct
|
||||
101 0 l p ef
|
||||
237 -165 m 237 -226 254 -270 287 -299 ct 314 -323 348 -335 388 -335 ct 432 -335 467 -321 495 -291 ct
|
||||
523 -262 537 -222 537 -170 ct 537 -128 531 -95 519 -71 ct 506 -47 488 -29 465 -15 ct
|
||||
441 -2 415 4 388 4 ct 343 4 307 -10 279 -39 ct 251 -69 237 -111 237 -165 ct p
|
||||
295 -166 m 295 -126 304 -97 321 -78 ct 339 -58 361 -49 388 -49 ct 414 -49 436 -58 454 -78 ct
|
||||
471 -97 480 -127 480 -167 ct 480 -205 471 -234 453 -253 ct 436 -272 414 -282 388 -282 ct
|
||||
361 -282 339 -273 321 -253 ct 304 -234 295 -205 295 -166 ct p ef
|
||||
874 0 m 816 0 l 816 -56 l 792 -16 759 4 717 4 ct 698 4 681 1 665 -7 ct 648 -14 637 -23 629 -35 ct
|
||||
621 -46 616 -60 612 -76 ct 610 -87 609 -104 609 -128 ct 609 -331 l 666 -331 l
|
||||
666 -152 l 666 -124 668 -104 670 -95 ct 673 -80 680 -69 691 -61 ct 702 -53 716 -49 732 -49 ct
|
||||
748 -49 763 -53 777 -61 ct 792 -70 802 -81 808 -95 ct 813 -110 816 -131 816 -158 ct
|
||||
816 -331 l 874 -331 l 874 0 l p ef
|
||||
1081 -50 m 1090 -1 l 1074 3 1060 4 1048 4 ct 1028 4 1012 1 1001 -5 ct 990 -11 982 -19 978 -29 ct
|
||||
973 -40 971 -61 971 -94 ct 971 -278 l 931 -278 l 931 -331 l 971 -331 l
|
||||
971 -412 l 1028 -446 l 1028 -331 l 1081 -331 l 1081 -278 l 1028 -278 l
|
||||
1028 -92 l 1028 -77 1029 -67 1031 -63 ct 1033 -58 1036 -55 1040 -52 ct 1044 -50 1050 -49 1058 -49 ct
|
||||
1064 -49 1072 -49 1081 -50 ct p ef
|
||||
1362 -106 m 1418 -97 l 1409 -65 1392 -40 1368 -22 ct 1343 -4 1312 4 1273 4 ct
|
||||
1225 4 1187 -10 1158 -39 ct 1130 -69 1116 -110 1116 -163 ct 1116 -217 1130 -260 1159 -290 ct
|
||||
1188 -320 1225 -335 1270 -335 ct 1314 -335 1350 -320 1378 -290 ct 1406 -261 1420 -219 1420 -165 ct
|
||||
1420 -161 1420 -156 1420 -150 ct 1173 -150 l 1175 -117 1186 -92 1205 -75 ct
|
||||
1223 -57 1246 -49 1274 -49 ct 1295 -49 1313 -53 1327 -62 ct 1342 -71 1354 -86 1362 -106 ct
|
||||
p
|
||||
1173 -203 m 1363 -203 l 1360 -226 1353 -244 1341 -255 ct 1323 -273 1299 -282 1270 -282 ct
|
||||
1244 -282 1221 -275 1203 -261 ct 1185 -246 1175 -227 1173 -203 ct p ef
|
||||
1548 0 m 1491 0 l 1491 -331 l 1540 -331 l 1540 -283 l 1552 -304 1564 -318 1575 -325 ct
|
||||
1586 -332 1598 -335 1611 -335 ct 1629 -335 1648 -330 1667 -321 ct 1648 -269 l
|
||||
1635 -278 1622 -282 1609 -282 ct 1597 -282 1587 -279 1577 -271 ct 1568 -264 1561 -253 1557 -240 ct
|
||||
1551 -220 1548 -198 1548 -174 ct 1548 0 l p ef
|
||||
1897 -459 m 1897 0 l 1840 0 l 1840 -357 l 1827 -345 1809 -332 1788 -319 ct
|
||||
1766 -306 1747 -296 1730 -290 ct 1730 -344 l 1761 -359 1788 -377 1811 -398 ct
|
||||
1834 -418 1851 -439 1860 -459 ct 1897 -459 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 4019 7839 m 6433 7839 l 6433 8856 l 4019 8856 l
|
||||
4019 7839 l 4019 7839 l p ef
|
||||
0.003 0.003 0.003 c 4019 7839 m 6432 7839 l 6432 8856 l 4019 8856 l 4019 7839 l
|
||||
4019 7839 l pc
|
||||
pum
|
||||
4220 8568 t
|
||||
101 0 m 44 0 l 44 -331 l 93 -331 l 93 -283 l 105 -304 117 -318 128 -325 ct
|
||||
139 -332 151 -335 164 -335 ct 182 -335 201 -330 220 -321 ct 201 -269 l 188 -278 175 -282 162 -282 ct
|
||||
150 -282 140 -279 130 -271 ct 121 -264 114 -253 110 -240 ct 104 -220 101 -198 101 -174 ct
|
||||
101 0 l p ef
|
||||
237 -165 m 237 -226 254 -270 287 -299 ct 314 -323 348 -335 388 -335 ct 432 -335 467 -321 495 -291 ct
|
||||
523 -262 537 -222 537 -170 ct 537 -128 531 -95 519 -71 ct 506 -47 488 -29 465 -15 ct
|
||||
441 -2 415 4 388 4 ct 343 4 307 -10 279 -39 ct 251 -69 237 -111 237 -165 ct p
|
||||
295 -166 m 295 -126 304 -97 321 -78 ct 339 -58 361 -49 388 -49 ct 414 -49 436 -58 454 -78 ct
|
||||
471 -97 480 -127 480 -167 ct 480 -205 471 -234 453 -253 ct 436 -272 414 -282 388 -282 ct
|
||||
361 -282 339 -273 321 -253 ct 304 -234 295 -205 295 -166 ct p ef
|
||||
874 0 m 816 0 l 816 -56 l 792 -16 759 4 717 4 ct 698 4 681 1 665 -7 ct 648 -14 637 -23 629 -35 ct
|
||||
621 -46 616 -60 612 -76 ct 610 -87 609 -104 609 -128 ct 609 -331 l 666 -331 l
|
||||
666 -152 l 666 -124 668 -104 670 -95 ct 673 -80 680 -69 691 -61 ct 702 -53 716 -49 732 -49 ct
|
||||
748 -49 763 -53 777 -61 ct 792 -70 802 -81 808 -95 ct 813 -110 816 -131 816 -158 ct
|
||||
816 -331 l 874 -331 l 874 0 l p ef
|
||||
1081 -50 m 1090 -1 l 1074 3 1060 4 1048 4 ct 1028 4 1012 1 1001 -5 ct 990 -11 982 -19 978 -29 ct
|
||||
973 -40 971 -61 971 -94 ct 971 -278 l 931 -278 l 931 -331 l 971 -331 l
|
||||
971 -412 l 1028 -446 l 1028 -331 l 1081 -331 l 1081 -278 l 1028 -278 l
|
||||
1028 -92 l 1028 -77 1029 -67 1031 -63 ct 1033 -58 1036 -55 1040 -52 ct 1044 -50 1050 -49 1058 -49 ct
|
||||
1064 -49 1072 -49 1081 -50 ct p ef
|
||||
1362 -106 m 1418 -97 l 1409 -65 1392 -40 1368 -22 ct 1343 -4 1312 4 1273 4 ct
|
||||
1225 4 1187 -10 1158 -39 ct 1130 -69 1116 -110 1116 -163 ct 1116 -217 1130 -260 1159 -290 ct
|
||||
1188 -320 1225 -335 1270 -335 ct 1314 -335 1350 -320 1378 -290 ct 1406 -261 1420 -219 1420 -165 ct
|
||||
1420 -161 1420 -156 1420 -150 ct 1173 -150 l 1175 -117 1186 -92 1205 -75 ct
|
||||
1223 -57 1246 -49 1274 -49 ct 1295 -49 1313 -53 1327 -62 ct 1342 -71 1354 -86 1362 -106 ct
|
||||
p
|
||||
1173 -203 m 1363 -203 l 1360 -226 1353 -244 1341 -255 ct 1323 -273 1299 -282 1270 -282 ct
|
||||
1244 -282 1221 -275 1203 -261 ct 1185 -246 1175 -227 1173 -203 ct p ef
|
||||
1548 0 m 1491 0 l 1491 -331 l 1540 -331 l 1540 -283 l 1552 -304 1564 -318 1575 -325 ct
|
||||
1586 -332 1598 -335 1611 -335 ct 1629 -335 1648 -330 1667 -321 ct 1648 -269 l
|
||||
1635 -278 1622 -282 1609 -282 ct 1597 -282 1587 -279 1577 -271 ct 1568 -264 1561 -253 1557 -240 ct
|
||||
1551 -220 1548 -198 1548 -174 ct 1548 0 l p ef
|
||||
1753 -57 m 1977 -57 l 1977 0 l 1677 0 l 1676 -14 1678 -27 1683 -40 ct
|
||||
1690 -62 1702 -82 1718 -102 ct 1735 -123 1758 -145 1790 -171 ct 1838 -211 1871 -243 1889 -266 ct
|
||||
1906 -288 1915 -310 1915 -331 ct 1915 -352 1907 -370 1891 -384 ct 1876 -398 1856 -406 1830 -406 ct
|
||||
1804 -406 1783 -398 1767 -383 ct 1751 -369 1743 -348 1743 -322 ct 1685 -331 l
|
||||
1689 -372 1704 -404 1729 -426 ct 1755 -448 1789 -459 1832 -459 ct 1875 -459 1909 -446 1934 -422 ct
|
||||
1959 -398 1972 -368 1972 -332 ct 1972 -313 1969 -295 1962 -278 ct 1954 -260 1943 -241 1926 -222 ct
|
||||
1910 -202 1882 -176 1843 -143 ct 1810 -115 1788 -97 1778 -87 ct 1768 -77 1760 -67 1753 -57 ct
|
||||
p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 6813 7839 m 9227 7839 l 9227 8856 l 6813 8856 l
|
||||
6813 7839 l 6813 7839 l p ef
|
||||
0.003 0.003 0.003 c 6812 7839 m 9226 7839 l 9226 8856 l 6812 8856 l 6812 7839 l
|
||||
6812 7839 l pc
|
||||
pum
|
||||
7014 8568 t
|
||||
101 0 m 44 0 l 44 -331 l 93 -331 l 93 -283 l 105 -304 117 -318 128 -325 ct
|
||||
139 -332 151 -335 164 -335 ct 182 -335 201 -330 220 -321 ct 201 -269 l 188 -278 175 -282 162 -282 ct
|
||||
150 -282 140 -279 130 -271 ct 121 -264 114 -253 110 -240 ct 104 -220 101 -198 101 -174 ct
|
||||
101 0 l p ef
|
||||
237 -165 m 237 -226 254 -270 287 -299 ct 314 -323 348 -335 388 -335 ct 432 -335 467 -321 495 -291 ct
|
||||
523 -262 537 -222 537 -170 ct 537 -128 531 -95 519 -71 ct 506 -47 488 -29 465 -15 ct
|
||||
441 -2 415 4 388 4 ct 343 4 307 -10 279 -39 ct 251 -69 237 -111 237 -165 ct p
|
||||
295 -166 m 295 -126 304 -97 321 -78 ct 339 -58 361 -49 388 -49 ct 414 -49 436 -58 454 -78 ct
|
||||
471 -97 480 -127 480 -167 ct 480 -205 471 -234 453 -253 ct 436 -272 414 -282 388 -282 ct
|
||||
361 -282 339 -273 321 -253 ct 304 -234 295 -205 295 -166 ct p ef
|
||||
874 0 m 816 0 l 816 -56 l 792 -16 759 4 717 4 ct 698 4 681 1 665 -7 ct 648 -14 637 -23 629 -35 ct
|
||||
621 -46 616 -60 612 -76 ct 610 -87 609 -104 609 -128 ct 609 -331 l 666 -331 l
|
||||
666 -152 l 666 -124 668 -104 670 -95 ct 673 -80 680 -69 691 -61 ct 702 -53 716 -49 732 -49 ct
|
||||
748 -49 763 -53 777 -61 ct 792 -70 802 -81 808 -95 ct 813 -110 816 -131 816 -158 ct
|
||||
816 -331 l 874 -331 l 874 0 l p ef
|
||||
1081 -50 m 1090 -1 l 1074 3 1060 4 1048 4 ct 1028 4 1012 1 1001 -5 ct 990 -11 982 -19 978 -29 ct
|
||||
973 -40 971 -61 971 -94 ct 971 -278 l 931 -278 l 931 -331 l 971 -331 l
|
||||
971 -412 l 1028 -446 l 1028 -331 l 1081 -331 l 1081 -278 l 1028 -278 l
|
||||
1028 -92 l 1028 -77 1029 -67 1031 -63 ct 1033 -58 1036 -55 1040 -52 ct 1044 -50 1050 -49 1058 -49 ct
|
||||
1064 -49 1072 -49 1081 -50 ct p ef
|
||||
1362 -106 m 1418 -97 l 1409 -65 1392 -40 1368 -22 ct 1343 -4 1312 4 1273 4 ct
|
||||
1225 4 1187 -10 1158 -39 ct 1130 -69 1116 -110 1116 -163 ct 1116 -217 1130 -260 1159 -290 ct
|
||||
1188 -320 1225 -335 1270 -335 ct 1314 -335 1350 -320 1378 -290 ct 1406 -261 1420 -219 1420 -165 ct
|
||||
1420 -161 1420 -156 1420 -150 ct 1173 -150 l 1175 -117 1186 -92 1205 -75 ct
|
||||
1223 -57 1246 -49 1274 -49 ct 1295 -49 1313 -53 1327 -62 ct 1342 -71 1354 -86 1362 -106 ct
|
||||
p
|
||||
1173 -203 m 1363 -203 l 1360 -226 1353 -244 1341 -255 ct 1323 -273 1299 -282 1270 -282 ct
|
||||
1244 -282 1221 -275 1203 -261 ct 1185 -246 1175 -227 1173 -203 ct p ef
|
||||
1548 0 m 1491 0 l 1491 -331 l 1540 -331 l 1540 -283 l 1552 -304 1564 -318 1575 -325 ct
|
||||
1586 -332 1598 -335 1611 -335 ct 1629 -335 1648 -330 1667 -321 ct 1648 -269 l
|
||||
1635 -278 1622 -282 1609 -282 ct 1597 -282 1587 -279 1577 -271 ct 1568 -264 1561 -253 1557 -240 ct
|
||||
1551 -220 1548 -198 1548 -174 ct 1548 0 l p ef
|
||||
1690 -119 m 1747 -128 l 1753 -98 1764 -77 1778 -64 ct 1792 -51 1810 -44 1833 -44 ct
|
||||
1860 -44 1882 -53 1898 -71 ct 1915 -88 1924 -110 1924 -136 ct 1924 -161 1915 -182 1899 -198 ct
|
||||
1883 -214 1863 -222 1838 -222 ct 1827 -222 1815 -220 1800 -216 ct 1806 -269 l
|
||||
1809 -269 1812 -268 1814 -268 ct 1837 -268 1857 -274 1875 -286 ct 1893 -297 1902 -315 1902 -339 ct
|
||||
1902 -358 1895 -374 1882 -387 ct 1868 -399 1851 -406 1830 -406 ct 1809 -406 1792 -399 1778 -387 ct
|
||||
1764 -374 1756 -356 1752 -331 ct 1694 -340 l 1701 -377 1716 -407 1740 -427 ct
|
||||
1764 -448 1793 -459 1828 -459 ct 1853 -459 1875 -453 1896 -443 ct 1916 -432 1932 -418 1943 -399 ct
|
||||
1953 -381 1959 -362 1959 -341 ct 1959 -322 1954 -304 1943 -288 ct 1933 -272 1917 -259 1896 -250 ct
|
||||
1923 -243 1944 -230 1959 -210 ct 1974 -190 1981 -166 1981 -136 ct 1981 -95 1967 -61 1938 -33 ct
|
||||
1910 -5 1874 9 1831 9 ct 1792 9 1760 -3 1734 -27 ct 1708 -51 1693 -81 1690 -119 ct
|
||||
p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 9606 7838 m 12020 7838 l 12020 8855 l 9606 8855 l
|
||||
9606 7838 l 9606 7838 l p ef
|
||||
0.003 0.003 0.003 c 9606 7838 m 12020 7838 l 12020 8855 l 9606 8855 l 9606 7838 l
|
||||
9606 7838 l pc
|
||||
pum
|
||||
9807 8567 t
|
||||
101 0 m 44 0 l 44 -331 l 93 -331 l 93 -283 l 105 -304 117 -318 128 -325 ct
|
||||
139 -332 151 -335 164 -335 ct 182 -335 201 -330 220 -321 ct 201 -269 l 188 -278 175 -282 162 -282 ct
|
||||
150 -282 140 -279 130 -271 ct 121 -264 114 -253 110 -240 ct 104 -220 101 -198 101 -174 ct
|
||||
101 0 l p ef
|
||||
237 -165 m 237 -226 254 -270 287 -299 ct 314 -323 348 -335 388 -335 ct 432 -335 467 -321 495 -291 ct
|
||||
523 -262 537 -222 537 -170 ct 537 -128 531 -95 519 -71 ct 506 -47 488 -29 465 -15 ct
|
||||
441 -2 415 4 388 4 ct 343 4 307 -10 279 -39 ct 251 -69 237 -111 237 -165 ct p
|
||||
295 -166 m 295 -126 304 -97 321 -78 ct 339 -58 361 -49 388 -49 ct 414 -49 436 -58 454 -78 ct
|
||||
471 -97 480 -127 480 -167 ct 480 -205 471 -234 453 -253 ct 436 -272 414 -282 388 -282 ct
|
||||
361 -282 339 -273 321 -253 ct 304 -234 295 -205 295 -166 ct p ef
|
||||
874 0 m 816 0 l 816 -56 l 792 -16 759 4 717 4 ct 698 4 681 1 665 -7 ct 648 -14 637 -23 629 -35 ct
|
||||
621 -46 616 -60 612 -76 ct 610 -87 609 -104 609 -128 ct 609 -331 l 666 -331 l
|
||||
666 -152 l 666 -124 668 -104 670 -95 ct 673 -80 680 -69 691 -61 ct 702 -53 716 -49 732 -49 ct
|
||||
748 -49 763 -53 777 -61 ct 792 -70 802 -81 808 -95 ct 813 -110 816 -131 816 -158 ct
|
||||
816 -331 l 874 -331 l 874 0 l p ef
|
||||
1081 -50 m 1090 -1 l 1074 3 1060 4 1048 4 ct 1028 4 1012 1 1001 -5 ct 990 -11 982 -19 978 -29 ct
|
||||
973 -40 971 -61 971 -94 ct 971 -278 l 931 -278 l 931 -331 l 971 -331 l
|
||||
971 -412 l 1028 -446 l 1028 -331 l 1081 -331 l 1081 -278 l 1028 -278 l
|
||||
1028 -92 l 1028 -77 1029 -67 1031 -63 ct 1033 -58 1036 -55 1040 -52 ct 1044 -50 1050 -49 1058 -49 ct
|
||||
1064 -49 1072 -49 1081 -50 ct p ef
|
||||
1362 -106 m 1418 -97 l 1409 -65 1392 -40 1368 -22 ct 1343 -4 1312 4 1273 4 ct
|
||||
1225 4 1187 -10 1158 -39 ct 1130 -69 1116 -110 1116 -163 ct 1116 -217 1130 -260 1159 -290 ct
|
||||
1188 -320 1225 -335 1270 -335 ct 1314 -335 1350 -320 1378 -290 ct 1406 -261 1420 -219 1420 -165 ct
|
||||
1420 -161 1420 -156 1420 -150 ct 1173 -150 l 1175 -117 1186 -92 1205 -75 ct
|
||||
1223 -57 1246 -49 1274 -49 ct 1295 -49 1313 -53 1327 -62 ct 1342 -71 1354 -86 1362 -106 ct
|
||||
p
|
||||
1173 -203 m 1363 -203 l 1360 -226 1353 -244 1341 -255 ct 1323 -273 1299 -282 1270 -282 ct
|
||||
1244 -282 1221 -275 1203 -261 ct 1185 -246 1175 -227 1173 -203 ct p ef
|
||||
1548 0 m 1491 0 l 1491 -331 l 1540 -331 l 1540 -283 l 1552 -304 1564 -318 1575 -325 ct
|
||||
1586 -332 1598 -335 1611 -335 ct 1629 -335 1648 -330 1667 -321 ct 1648 -269 l
|
||||
1635 -278 1622 -282 1609 -282 ct 1597 -282 1587 -279 1577 -271 ct 1568 -264 1561 -253 1557 -240 ct
|
||||
1551 -220 1548 -198 1548 -174 ct 1548 0 l p ef
|
||||
1924 0 m 1866 0 l 1866 -110 l 1668 -110 l 1668 -168 l 1879 -450 l
|
||||
1924 -450 l 1924 -168 l 1981 -168 l 1981 -110 l 1924 -110 l 1924 0 l
|
||||
p
|
||||
1738 -168 m 1866 -168 l 1866 -338 l 1738 -168 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 12400 7839 m 14814 7839 l 14814 8856 l 12400 8856 l
|
||||
12400 7839 l 12400 7839 l p ef
|
||||
0.003 0.003 0.003 c 12400 7839 m 14813 7839 l 14813 8856 l 12400 8856 l
|
||||
12400 7839 l 12400 7839 l pc
|
||||
pum
|
||||
12601 8568 t
|
||||
101 0 m 44 0 l 44 -331 l 93 -331 l 93 -283 l 105 -304 117 -318 128 -325 ct
|
||||
139 -332 151 -335 164 -335 ct 182 -335 201 -330 220 -321 ct 201 -269 l 188 -278 175 -282 162 -282 ct
|
||||
150 -282 140 -279 130 -271 ct 121 -264 114 -253 110 -240 ct 104 -220 101 -198 101 -174 ct
|
||||
101 0 l p ef
|
||||
237 -165 m 237 -226 254 -270 287 -299 ct 314 -323 348 -335 388 -335 ct 432 -335 467 -321 495 -291 ct
|
||||
523 -262 537 -222 537 -170 ct 537 -128 531 -95 519 -71 ct 506 -47 488 -29 465 -15 ct
|
||||
441 -2 415 4 388 4 ct 343 4 307 -10 279 -39 ct 251 -69 237 -111 237 -165 ct p
|
||||
295 -166 m 295 -126 304 -97 321 -78 ct 339 -58 361 -49 388 -49 ct 414 -49 436 -58 454 -78 ct
|
||||
471 -97 480 -127 480 -167 ct 480 -205 471 -234 453 -253 ct 436 -272 414 -282 388 -282 ct
|
||||
361 -282 339 -273 321 -253 ct 304 -234 295 -205 295 -166 ct p ef
|
||||
874 0 m 816 0 l 816 -56 l 792 -16 759 4 717 4 ct 698 4 681 1 665 -7 ct 648 -14 637 -23 629 -35 ct
|
||||
621 -46 616 -60 612 -76 ct 610 -87 609 -104 609 -128 ct 609 -331 l 666 -331 l
|
||||
666 -152 l 666 -124 668 -104 670 -95 ct 673 -80 680 -69 691 -61 ct 702 -53 716 -49 732 -49 ct
|
||||
748 -49 763 -53 777 -61 ct 792 -70 802 -81 808 -95 ct 813 -110 816 -131 816 -158 ct
|
||||
816 -331 l 874 -331 l 874 0 l p ef
|
||||
1081 -50 m 1090 -1 l 1074 3 1060 4 1048 4 ct 1028 4 1012 1 1001 -5 ct 990 -11 982 -19 978 -29 ct
|
||||
973 -40 971 -61 971 -94 ct 971 -278 l 931 -278 l 931 -331 l 971 -331 l
|
||||
971 -412 l 1028 -446 l 1028 -331 l 1081 -331 l 1081 -278 l 1028 -278 l
|
||||
1028 -92 l 1028 -77 1029 -67 1031 -63 ct 1033 -58 1036 -55 1040 -52 ct 1044 -50 1050 -49 1058 -49 ct
|
||||
1064 -49 1072 -49 1081 -50 ct p ef
|
||||
1362 -106 m 1418 -97 l 1409 -65 1392 -40 1368 -22 ct 1343 -4 1312 4 1273 4 ct
|
||||
1225 4 1187 -10 1158 -39 ct 1130 -69 1116 -110 1116 -163 ct 1116 -217 1130 -260 1159 -290 ct
|
||||
1188 -320 1225 -335 1270 -335 ct 1314 -335 1350 -320 1378 -290 ct 1406 -261 1420 -219 1420 -165 ct
|
||||
1420 -161 1420 -156 1420 -150 ct 1173 -150 l 1175 -117 1186 -92 1205 -75 ct
|
||||
1223 -57 1246 -49 1274 -49 ct 1295 -49 1313 -53 1327 -62 ct 1342 -71 1354 -86 1362 -106 ct
|
||||
p
|
||||
1173 -203 m 1363 -203 l 1360 -226 1353 -244 1341 -255 ct 1323 -273 1299 -282 1270 -282 ct
|
||||
1244 -282 1221 -275 1203 -261 ct 1185 -246 1175 -227 1173 -203 ct p ef
|
||||
1548 0 m 1491 0 l 1491 -331 l 1540 -331 l 1540 -283 l 1552 -304 1564 -318 1575 -325 ct
|
||||
1586 -332 1598 -335 1611 -335 ct 1629 -335 1648 -330 1667 -321 ct 1648 -269 l
|
||||
1635 -278 1622 -282 1609 -282 ct 1597 -282 1587 -279 1577 -271 ct 1568 -264 1561 -253 1557 -240 ct
|
||||
1551 -220 1548 -198 1548 -174 ct 1548 0 l p ef
|
||||
1690 -119 m 1747 -123 l 1751 -97 1761 -77 1775 -64 ct 1790 -51 1808 -44 1831 -44 ct
|
||||
1859 -44 1882 -54 1898 -74 ct 1915 -93 1924 -119 1924 -152 ct 1924 -182 1916 -207 1900 -225 ct
|
||||
1885 -242 1862 -251 1833 -251 ct 1815 -251 1799 -247 1787 -239 ct 1774 -231 1764 -220 1756 -207 ct
|
||||
1699 -216 l 1747 -450 l 1959 -450 l 1959 -392 l 1794 -392 l 1770 -274 l
|
||||
1796 -294 1822 -304 1850 -304 ct 1887 -304 1918 -290 1943 -263 ct 1968 -235 1981 -199 1981 -155 ct
|
||||
1981 -113 1969 -77 1946 -47 ct 1918 -10 1880 9 1831 9 ct 1791 9 1758 -3 1733 -26 ct
|
||||
1708 -50 1693 -80 1690 -119 ct p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 15194 7840 m 17607 7840 l 17607 8857 l 15194 8857 l
|
||||
15194 7840 l 15194 7840 l p ef
|
||||
0.003 0.003 0.003 c 15193 7840 m 17607 7840 l 17607 8857 l 15193 8857 l
|
||||
15193 7840 l 15193 7840 l pc
|
||||
pum
|
||||
15395 8569 t
|
||||
101 0 m 44 0 l 44 -331 l 93 -331 l 93 -283 l 105 -304 117 -318 128 -325 ct
|
||||
139 -332 151 -335 164 -335 ct 182 -335 201 -330 220 -321 ct 201 -269 l 188 -278 175 -282 162 -282 ct
|
||||
150 -282 140 -279 130 -271 ct 121 -264 114 -253 110 -240 ct 104 -220 101 -198 101 -174 ct
|
||||
101 0 l p ef
|
||||
237 -165 m 237 -226 254 -270 287 -299 ct 314 -323 348 -335 388 -335 ct 432 -335 467 -321 495 -291 ct
|
||||
523 -262 537 -222 537 -170 ct 537 -128 531 -95 519 -71 ct 506 -47 488 -29 465 -15 ct
|
||||
441 -2 415 4 388 4 ct 343 4 307 -10 279 -39 ct 251 -69 237 -111 237 -165 ct p
|
||||
295 -166 m 295 -126 304 -97 321 -78 ct 339 -58 361 -49 388 -49 ct 414 -49 436 -58 454 -78 ct
|
||||
471 -97 480 -127 480 -167 ct 480 -205 471 -234 453 -253 ct 436 -272 414 -282 388 -282 ct
|
||||
361 -282 339 -273 321 -253 ct 304 -234 295 -205 295 -166 ct p ef
|
||||
874 0 m 816 0 l 816 -56 l 792 -16 759 4 717 4 ct 698 4 681 1 665 -7 ct 648 -14 637 -23 629 -35 ct
|
||||
621 -46 616 -60 612 -76 ct 610 -87 609 -104 609 -128 ct 609 -331 l 666 -331 l
|
||||
666 -152 l 666 -124 668 -104 670 -95 ct 673 -80 680 -69 691 -61 ct 702 -53 716 -49 732 -49 ct
|
||||
748 -49 763 -53 777 -61 ct 792 -70 802 -81 808 -95 ct 813 -110 816 -131 816 -158 ct
|
||||
816 -331 l 874 -331 l 874 0 l p ef
|
||||
1081 -50 m 1090 -1 l 1074 3 1060 4 1048 4 ct 1028 4 1012 1 1001 -5 ct 990 -11 982 -19 978 -29 ct
|
||||
973 -40 971 -61 971 -94 ct 971 -278 l 931 -278 l 931 -331 l 971 -331 l
|
||||
971 -412 l 1028 -446 l 1028 -331 l 1081 -331 l 1081 -278 l 1028 -278 l
|
||||
1028 -92 l 1028 -77 1029 -67 1031 -63 ct 1033 -58 1036 -55 1040 -52 ct 1044 -50 1050 -49 1058 -49 ct
|
||||
1064 -49 1072 -49 1081 -50 ct p ef
|
||||
1362 -106 m 1418 -97 l 1409 -65 1392 -40 1368 -22 ct 1343 -4 1312 4 1273 4 ct
|
||||
1225 4 1187 -10 1158 -39 ct 1130 -69 1116 -110 1116 -163 ct 1116 -217 1130 -260 1159 -290 ct
|
||||
1188 -320 1225 -335 1270 -335 ct 1314 -335 1350 -320 1378 -290 ct 1406 -261 1420 -219 1420 -165 ct
|
||||
1420 -161 1420 -156 1420 -150 ct 1173 -150 l 1175 -117 1186 -92 1205 -75 ct
|
||||
1223 -57 1246 -49 1274 -49 ct 1295 -49 1313 -53 1327 -62 ct 1342 -71 1354 -86 1362 -106 ct
|
||||
p
|
||||
1173 -203 m 1363 -203 l 1360 -226 1353 -244 1341 -255 ct 1323 -273 1299 -282 1270 -282 ct
|
||||
1244 -282 1221 -275 1203 -261 ct 1185 -246 1175 -227 1173 -203 ct p ef
|
||||
1548 0 m 1491 0 l 1491 -331 l 1540 -331 l 1540 -283 l 1552 -304 1564 -318 1575 -325 ct
|
||||
1586 -332 1598 -335 1611 -335 ct 1629 -335 1648 -330 1667 -321 ct 1648 -269 l
|
||||
1635 -278 1622 -282 1609 -282 ct 1597 -282 1587 -279 1577 -271 ct 1568 -264 1561 -253 1557 -240 ct
|
||||
1551 -220 1548 -198 1548 -174 ct 1548 0 l p ef
|
||||
1972 -340 m 1915 -335 l 1910 -357 1903 -372 1894 -382 ct 1879 -398 1860 -406 1838 -406 ct
|
||||
1820 -406 1804 -401 1789 -392 ct 1773 -379 1760 -361 1750 -338 ct 1740 -315 1734 -280 1734 -235 ct
|
||||
1748 -255 1764 -271 1784 -281 ct 1803 -290 1824 -295 1845 -295 ct 1883 -295 1915 -282 1941 -254 ct
|
||||
1968 -227 1981 -191 1981 -147 ct 1981 -119 1975 -92 1962 -67 ct 1950 -43 1933 -24 1911 -11 ct
|
||||
1889 2 1864 9 1837 9 ct 1790 9 1751 -8 1721 -43 ct 1692 -77 1677 -134 1677 -213 ct
|
||||
1677 -302 1693 -366 1726 -406 ct 1755 -441 1793 -459 1842 -459 ct 1878 -459 1907 -448 1931 -427 ct
|
||||
1954 -406 1967 -377 1972 -340 ct p
|
||||
1734 -148 m 1734 -130 1738 -113 1747 -96 ct 1756 -79 1767 -66 1782 -57 ct 1797 -48 1814 -44 1832 -44 ct
|
||||
1859 -44 1881 -53 1898 -71 ct 1915 -90 1924 -114 1924 -146 ct 1924 -176 1915 -199 1898 -217 ct
|
||||
1881 -234 1858 -243 1830 -243 ct 1803 -243 1781 -234 1762 -217 ct 1743 -199 1734 -177 1734 -148 ct
|
||||
p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 17987 7840 m 20401 7840 l 20401 8857 l 17987 8857 l
|
||||
17987 7840 l 17987 7840 l p ef
|
||||
0.003 0.003 0.003 c 17987 7840 m 20400 7840 l 20400 8857 l 17987 8857 l
|
||||
17987 7840 l 17987 7840 l pc
|
||||
pum
|
||||
18188 8569 t
|
||||
101 0 m 44 0 l 44 -331 l 93 -331 l 93 -283 l 105 -304 117 -318 128 -325 ct
|
||||
139 -332 151 -335 164 -335 ct 182 -335 201 -330 220 -321 ct 201 -269 l 188 -278 175 -282 162 -282 ct
|
||||
150 -282 140 -279 130 -271 ct 121 -264 114 -253 110 -240 ct 104 -220 101 -198 101 -174 ct
|
||||
101 0 l p ef
|
||||
237 -165 m 237 -226 254 -270 287 -299 ct 314 -323 348 -335 388 -335 ct 432 -335 467 -321 495 -291 ct
|
||||
523 -262 537 -222 537 -170 ct 537 -128 531 -95 519 -71 ct 506 -47 488 -29 465 -15 ct
|
||||
441 -2 415 4 388 4 ct 343 4 307 -10 279 -39 ct 251 -69 237 -111 237 -165 ct p
|
||||
295 -166 m 295 -126 304 -97 321 -78 ct 339 -58 361 -49 388 -49 ct 414 -49 436 -58 454 -78 ct
|
||||
471 -97 480 -127 480 -167 ct 480 -205 471 -234 453 -253 ct 436 -272 414 -282 388 -282 ct
|
||||
361 -282 339 -273 321 -253 ct 304 -234 295 -205 295 -166 ct p ef
|
||||
874 0 m 816 0 l 816 -56 l 792 -16 759 4 717 4 ct 698 4 681 1 665 -7 ct 648 -14 637 -23 629 -35 ct
|
||||
621 -46 616 -60 612 -76 ct 610 -87 609 -104 609 -128 ct 609 -331 l 666 -331 l
|
||||
666 -152 l 666 -124 668 -104 670 -95 ct 673 -80 680 -69 691 -61 ct 702 -53 716 -49 732 -49 ct
|
||||
748 -49 763 -53 777 -61 ct 792 -70 802 -81 808 -95 ct 813 -110 816 -131 816 -158 ct
|
||||
816 -331 l 874 -331 l 874 0 l p ef
|
||||
1081 -50 m 1090 -1 l 1074 3 1060 4 1048 4 ct 1028 4 1012 1 1001 -5 ct 990 -11 982 -19 978 -29 ct
|
||||
973 -40 971 -61 971 -94 ct 971 -278 l 931 -278 l 931 -331 l 971 -331 l
|
||||
971 -412 l 1028 -446 l 1028 -331 l 1081 -331 l 1081 -278 l 1028 -278 l
|
||||
1028 -92 l 1028 -77 1029 -67 1031 -63 ct 1033 -58 1036 -55 1040 -52 ct 1044 -50 1050 -49 1058 -49 ct
|
||||
1064 -49 1072 -49 1081 -50 ct p ef
|
||||
1362 -106 m 1418 -97 l 1409 -65 1392 -40 1368 -22 ct 1343 -4 1312 4 1273 4 ct
|
||||
1225 4 1187 -10 1158 -39 ct 1130 -69 1116 -110 1116 -163 ct 1116 -217 1130 -260 1159 -290 ct
|
||||
1188 -320 1225 -335 1270 -335 ct 1314 -335 1350 -320 1378 -290 ct 1406 -261 1420 -219 1420 -165 ct
|
||||
1420 -161 1420 -156 1420 -150 ct 1173 -150 l 1175 -117 1186 -92 1205 -75 ct
|
||||
1223 -57 1246 -49 1274 -49 ct 1295 -49 1313 -53 1327 -62 ct 1342 -71 1354 -86 1362 -106 ct
|
||||
p
|
||||
1173 -203 m 1363 -203 l 1360 -226 1353 -244 1341 -255 ct 1323 -273 1299 -282 1270 -282 ct
|
||||
1244 -282 1221 -275 1203 -261 ct 1185 -246 1175 -227 1173 -203 ct p ef
|
||||
1548 0 m 1491 0 l 1491 -331 l 1540 -331 l 1540 -283 l 1552 -304 1564 -318 1575 -325 ct
|
||||
1586 -332 1598 -335 1611 -335 ct 1629 -335 1648 -330 1667 -321 ct 1648 -269 l
|
||||
1635 -278 1622 -282 1609 -282 ct 1597 -282 1587 -279 1577 -271 ct 1568 -264 1561 -253 1557 -240 ct
|
||||
1551 -220 1548 -198 1548 -174 ct 1548 0 l p ef
|
||||
1910 -392 m 1685 -392 l 1685 -450 l 1981 -450 l 1981 -403 l 1953 -372 1925 -331 1898 -281 ct
|
||||
1870 -230 1849 -178 1834 -124 ct 1823 -86 1816 -45 1813 0 ct 1756 0 l 1757 -36 1763 -78 1776 -129 ct
|
||||
1790 -179 1808 -228 1833 -274 ct 1857 -321 1883 -360 1910 -392 ct p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 1901 5740 m 5660 5740 l 5660 6757 l 1901 6757 l
|
||||
1901 5740 l 1901 5740 l p ef
|
||||
0.003 0.003 0.003 c 1900 5739 m 5660 5739 l 5660 6756 l 1900 6756 l 1900 5739 l
|
||||
1900 5739 l pc
|
||||
pum
|
||||
2422 6469 t
|
||||
26 -165 m 26 -226 43 -270 76 -299 ct 103 -323 137 -335 177 -335 ct 221 -335 256 -321 284 -291 ct
|
||||
312 -262 326 -222 326 -170 ct 326 -128 320 -95 308 -71 ct 295 -47 277 -29 254 -15 ct
|
||||
230 -2 204 4 177 4 ct 132 4 96 -10 68 -39 ct 40 -69 26 -111 26 -165 ct p
|
||||
84 -166 m 84 -126 93 -97 110 -78 ct 128 -58 150 -49 177 -49 ct 203 -49 225 -58 243 -78 ct
|
||||
260 -97 269 -127 269 -167 ct 269 -205 260 -234 242 -253 ct 225 -272 203 -282 177 -282 ct
|
||||
150 -282 128 -273 110 -253 ct 93 -234 84 -205 84 -166 ct p ef
|
||||
450 128 m 393 128 l 393 -331 l 450 -331 l 450 -276 l 462 -296 475 -311 490 -320 ct
|
||||
504 -330 522 -335 543 -335 ct 571 -335 595 -328 616 -314 ct 637 -299 653 -279 663 -253 ct
|
||||
674 -227 679 -199 679 -168 ct 679 -135 673 -105 661 -78 ct 649 -51 632 -31 609 -17 ct
|
||||
586 -3 562 4 536 4 ct 518 4 501 0 486 -9 ct 472 -18 459 -30 450 -44 ct 450 128 l
|
||||
p
|
||||
450 -163 m 450 -124 458 -95 475 -76 ct 491 -58 511 -49 535 -49 ct 559 -49 579 -58 596 -77 ct
|
||||
613 -97 622 -127 622 -167 ct 622 -205 614 -234 597 -253 ct 580 -273 560 -282 537 -282 ct
|
||||
514 -282 494 -272 476 -252 ct 459 -231 450 -202 450 -163 ct p ef
|
||||
974 -106 m 1030 -97 l 1021 -65 1004 -40 980 -22 ct 955 -4 924 4 885 4 ct 837 4 799 -10 770 -39 ct
|
||||
742 -69 728 -110 728 -163 ct 728 -217 742 -260 771 -290 ct 800 -320 837 -335 882 -335 ct
|
||||
926 -335 962 -320 990 -290 ct 1018 -261 1032 -219 1032 -165 ct 1032 -161 1032 -156 1032 -150 ct
|
||||
785 -150 l 787 -117 798 -92 817 -75 ct 835 -57 858 -49 886 -49 ct 907 -49 925 -53 939 -62 ct
|
||||
954 -71 966 -86 974 -106 ct p
|
||||
785 -203 m 975 -203 l 972 -226 965 -244 953 -255 ct 935 -273 911 -282 882 -282 ct
|
||||
856 -282 833 -275 815 -261 ct 797 -246 787 -227 785 -203 ct p ef
|
||||
1160 0 m 1103 0 l 1103 -331 l 1152 -331 l 1152 -283 l 1164 -304 1176 -318 1187 -325 ct
|
||||
1198 -332 1210 -335 1223 -335 ct 1241 -335 1260 -330 1279 -321 ct 1260 -269 l
|
||||
1247 -278 1234 -282 1221 -282 ct 1209 -282 1199 -279 1189 -271 ct 1180 -264 1173 -253 1169 -240 ct
|
||||
1163 -220 1160 -198 1160 -174 ct 1160 0 l p ef
|
||||
1522 -40 m 1502 -24 1483 -12 1465 -6 ct 1446 1 1427 4 1406 4 ct 1371 4 1344 -4 1325 -22 ct
|
||||
1307 -39 1297 -61 1297 -88 ct 1297 -104 1301 -118 1308 -131 ct 1315 -144 1324 -154 1336 -162 ct
|
||||
1347 -170 1360 -176 1374 -180 ct 1385 -183 1401 -186 1422 -188 ct 1465 -194 1497 -200 1518 -207 ct
|
||||
1518 -214 1518 -219 1518 -221 ct 1518 -242 1513 -256 1503 -265 ct 1490 -276 1470 -282 1444 -282 ct
|
||||
1419 -282 1401 -278 1390 -270 ct 1378 -261 1369 -246 1364 -225 ct 1306 -234 l
|
||||
1311 -257 1319 -276 1331 -290 ct 1342 -305 1358 -316 1379 -323 ct 1401 -331 1425 -335 1453 -335 ct
|
||||
1481 -335 1504 -332 1521 -325 ct 1539 -318 1552 -310 1560 -300 ct 1568 -289 1574 -276 1577 -261 ct
|
||||
1579 -251 1580 -235 1580 -212 ct 1580 -143 l 1580 -94 1581 -62 1583 -46 ct
|
||||
1586 -30 1590 -15 1597 0 ct 1540 0 l 1531 -11 1525 -25 1522 -40 ct p
|
||||
1518 -138 m 1518 -154 l 1498 -148 1469 -142 1430 -137 ct 1408 -134 1393 -131 1383 -128 ct
|
||||
1374 -124 1367 -120 1362 -113 ct 1357 -106 1355 -99 1355 -91 ct 1355 -79 1360 -69 1371 -61 ct
|
||||
1382 -53 1398 -49 1419 -49 ct 1439 -49 1457 -53 1474 -61 ct 1490 -70 1501 -81 1509 -94 ct
|
||||
1515 -104 1518 -119 1518 -138 ct p ef
|
||||
1787 -50 m 1796 -1 l 1780 3 1766 4 1754 4 ct 1734 4 1718 1 1707 -5 ct 1696 -11 1688 -19 1684 -29 ct
|
||||
1679 -40 1677 -61 1677 -94 ct 1677 -278 l 1637 -278 l 1637 -331 l 1677 -331 l
|
||||
1677 -412 l 1734 -446 l 1734 -331 l 1787 -331 l 1787 -278 l 1734 -278 l
|
||||
1734 -92 l 1734 -77 1735 -67 1737 -63 ct 1739 -58 1742 -55 1746 -52 ct 1750 -50 1756 -49 1764 -49 ct
|
||||
1770 -49 1778 -49 1787 -50 ct p ef
|
||||
1827 -165 m 1827 -226 1844 -270 1877 -299 ct 1904 -323 1938 -335 1978 -335 ct
|
||||
2022 -335 2057 -321 2085 -291 ct 2113 -262 2127 -222 2127 -170 ct 2127 -128 2121 -95 2109 -71 ct
|
||||
2096 -47 2078 -29 2055 -15 ct 2031 -2 2005 4 1978 4 ct 1933 4 1897 -10 1869 -39 ct
|
||||
1841 -69 1827 -111 1827 -165 ct p
|
||||
1885 -166 m 1885 -126 1894 -97 1911 -78 ct 1929 -58 1951 -49 1978 -49 ct 2004 -49 2026 -58 2044 -78 ct
|
||||
2061 -97 2070 -127 2070 -167 ct 2070 -205 2061 -234 2043 -253 ct 2026 -272 2004 -282 1978 -282 ct
|
||||
1951 -282 1929 -273 1911 -253 ct 1894 -234 1885 -205 1885 -166 ct p ef
|
||||
2255 0 m 2198 0 l 2198 -331 l 2247 -331 l 2247 -283 l 2259 -304 2271 -318 2282 -325 ct
|
||||
2293 -332 2305 -335 2318 -335 ct 2336 -335 2355 -330 2374 -321 ct 2355 -269 l
|
||||
2342 -278 2329 -282 2316 -282 ct 2304 -282 2294 -279 2284 -271 ct 2275 -264 2268 -253 2264 -240 ct
|
||||
2258 -220 2255 -198 2255 -174 ct 2255 0 l p ef
|
||||
2603 -459 m 2603 0 l 2546 0 l 2546 -357 l 2533 -345 2515 -332 2494 -319 ct
|
||||
2472 -306 2453 -296 2436 -290 ct 2436 -344 l 2467 -359 2494 -377 2517 -398 ct
|
||||
2540 -418 2557 -439 2566 -459 ct 2603 -459 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 7600 5741 m 11359 5741 l 11359 6758 l 7600 6758 l
|
||||
7600 5741 l 7600 5741 l p ef
|
||||
0.003 0.003 0.003 c 7599 5740 m 11359 5740 l 11359 6757 l 7599 6757 l 7599 5740 l
|
||||
7599 5740 l pc
|
||||
pum
|
||||
8121 6470 t
|
||||
26 -165 m 26 -226 43 -270 76 -299 ct 103 -323 137 -335 177 -335 ct 221 -335 256 -321 284 -291 ct
|
||||
312 -262 326 -222 326 -170 ct 326 -128 320 -95 308 -71 ct 295 -47 277 -29 254 -15 ct
|
||||
230 -2 204 4 177 4 ct 132 4 96 -10 68 -39 ct 40 -69 26 -111 26 -165 ct p
|
||||
84 -166 m 84 -126 93 -97 110 -78 ct 128 -58 150 -49 177 -49 ct 203 -49 225 -58 243 -78 ct
|
||||
260 -97 269 -127 269 -167 ct 269 -205 260 -234 242 -253 ct 225 -272 203 -282 177 -282 ct
|
||||
150 -282 128 -273 110 -253 ct 93 -234 84 -205 84 -166 ct p ef
|
||||
450 128 m 393 128 l 393 -331 l 450 -331 l 450 -276 l 462 -296 475 -311 490 -320 ct
|
||||
504 -330 522 -335 543 -335 ct 571 -335 595 -328 616 -314 ct 637 -299 653 -279 663 -253 ct
|
||||
674 -227 679 -199 679 -168 ct 679 -135 673 -105 661 -78 ct 649 -51 632 -31 609 -17 ct
|
||||
586 -3 562 4 536 4 ct 518 4 501 0 486 -9 ct 472 -18 459 -30 450 -44 ct 450 128 l
|
||||
p
|
||||
450 -163 m 450 -124 458 -95 475 -76 ct 491 -58 511 -49 535 -49 ct 559 -49 579 -58 596 -77 ct
|
||||
613 -97 622 -127 622 -167 ct 622 -205 614 -234 597 -253 ct 580 -273 560 -282 537 -282 ct
|
||||
514 -282 494 -272 476 -252 ct 459 -231 450 -202 450 -163 ct p ef
|
||||
974 -106 m 1030 -97 l 1021 -65 1004 -40 980 -22 ct 955 -4 924 4 885 4 ct 837 4 799 -10 770 -39 ct
|
||||
742 -69 728 -110 728 -163 ct 728 -217 742 -260 771 -290 ct 800 -320 837 -335 882 -335 ct
|
||||
926 -335 962 -320 990 -290 ct 1018 -261 1032 -219 1032 -165 ct 1032 -161 1032 -156 1032 -150 ct
|
||||
785 -150 l 787 -117 798 -92 817 -75 ct 835 -57 858 -49 886 -49 ct 907 -49 925 -53 939 -62 ct
|
||||
954 -71 966 -86 974 -106 ct p
|
||||
785 -203 m 975 -203 l 972 -226 965 -244 953 -255 ct 935 -273 911 -282 882 -282 ct
|
||||
856 -282 833 -275 815 -261 ct 797 -246 787 -227 785 -203 ct p ef
|
||||
1160 0 m 1103 0 l 1103 -331 l 1152 -331 l 1152 -283 l 1164 -304 1176 -318 1187 -325 ct
|
||||
1198 -332 1210 -335 1223 -335 ct 1241 -335 1260 -330 1279 -321 ct 1260 -269 l
|
||||
1247 -278 1234 -282 1221 -282 ct 1209 -282 1199 -279 1189 -271 ct 1180 -264 1173 -253 1169 -240 ct
|
||||
1163 -220 1160 -198 1160 -174 ct 1160 0 l p ef
|
||||
1522 -40 m 1502 -24 1483 -12 1465 -6 ct 1446 1 1427 4 1406 4 ct 1371 4 1344 -4 1325 -22 ct
|
||||
1307 -39 1297 -61 1297 -88 ct 1297 -104 1301 -118 1308 -131 ct 1315 -144 1324 -154 1336 -162 ct
|
||||
1347 -170 1360 -176 1374 -180 ct 1385 -183 1401 -186 1422 -188 ct 1465 -194 1497 -200 1518 -207 ct
|
||||
1518 -214 1518 -219 1518 -221 ct 1518 -242 1513 -256 1503 -265 ct 1490 -276 1470 -282 1444 -282 ct
|
||||
1419 -282 1401 -278 1390 -270 ct 1378 -261 1369 -246 1364 -225 ct 1306 -234 l
|
||||
1311 -257 1319 -276 1331 -290 ct 1342 -305 1358 -316 1379 -323 ct 1401 -331 1425 -335 1453 -335 ct
|
||||
1481 -335 1504 -332 1521 -325 ct 1539 -318 1552 -310 1560 -300 ct 1568 -289 1574 -276 1577 -261 ct
|
||||
1579 -251 1580 -235 1580 -212 ct 1580 -143 l 1580 -94 1581 -62 1583 -46 ct
|
||||
1586 -30 1590 -15 1597 0 ct 1540 0 l 1531 -11 1525 -25 1522 -40 ct p
|
||||
1518 -138 m 1518 -154 l 1498 -148 1469 -142 1430 -137 ct 1408 -134 1393 -131 1383 -128 ct
|
||||
1374 -124 1367 -120 1362 -113 ct 1357 -106 1355 -99 1355 -91 ct 1355 -79 1360 -69 1371 -61 ct
|
||||
1382 -53 1398 -49 1419 -49 ct 1439 -49 1457 -53 1474 -61 ct 1490 -70 1501 -81 1509 -94 ct
|
||||
1515 -104 1518 -119 1518 -138 ct p ef
|
||||
1787 -50 m 1796 -1 l 1780 3 1766 4 1754 4 ct 1734 4 1718 1 1707 -5 ct 1696 -11 1688 -19 1684 -29 ct
|
||||
1679 -40 1677 -61 1677 -94 ct 1677 -278 l 1637 -278 l 1637 -331 l 1677 -331 l
|
||||
1677 -412 l 1734 -446 l 1734 -331 l 1787 -331 l 1787 -278 l 1734 -278 l
|
||||
1734 -92 l 1734 -77 1735 -67 1737 -63 ct 1739 -58 1742 -55 1746 -52 ct 1750 -50 1756 -49 1764 -49 ct
|
||||
1770 -49 1778 -49 1787 -50 ct p ef
|
||||
1827 -165 m 1827 -226 1844 -270 1877 -299 ct 1904 -323 1938 -335 1978 -335 ct
|
||||
2022 -335 2057 -321 2085 -291 ct 2113 -262 2127 -222 2127 -170 ct 2127 -128 2121 -95 2109 -71 ct
|
||||
2096 -47 2078 -29 2055 -15 ct 2031 -2 2005 4 1978 4 ct 1933 4 1897 -10 1869 -39 ct
|
||||
1841 -69 1827 -111 1827 -165 ct p
|
||||
1885 -166 m 1885 -126 1894 -97 1911 -78 ct 1929 -58 1951 -49 1978 -49 ct 2004 -49 2026 -58 2044 -78 ct
|
||||
2061 -97 2070 -127 2070 -167 ct 2070 -205 2061 -234 2043 -253 ct 2026 -272 2004 -282 1978 -282 ct
|
||||
1951 -282 1929 -273 1911 -253 ct 1894 -234 1885 -205 1885 -166 ct p ef
|
||||
2255 0 m 2198 0 l 2198 -331 l 2247 -331 l 2247 -283 l 2259 -304 2271 -318 2282 -325 ct
|
||||
2293 -332 2305 -335 2318 -335 ct 2336 -335 2355 -330 2374 -321 ct 2355 -269 l
|
||||
2342 -278 2329 -282 2316 -282 ct 2304 -282 2294 -279 2284 -271 ct 2275 -264 2268 -253 2264 -240 ct
|
||||
2258 -220 2255 -198 2255 -174 ct 2255 0 l p ef
|
||||
2459 -57 m 2683 -57 l 2683 0 l 2383 0 l 2382 -14 2384 -27 2389 -40 ct
|
||||
2396 -62 2408 -82 2424 -102 ct 2441 -123 2464 -145 2496 -171 ct 2544 -211 2577 -243 2595 -266 ct
|
||||
2612 -288 2621 -310 2621 -331 ct 2621 -352 2613 -370 2597 -384 ct 2582 -398 2562 -406 2536 -406 ct
|
||||
2510 -406 2489 -398 2473 -383 ct 2457 -369 2449 -348 2449 -322 ct 2391 -331 l
|
||||
2395 -372 2410 -404 2435 -426 ct 2461 -448 2495 -459 2538 -459 ct 2581 -459 2615 -446 2640 -422 ct
|
||||
2665 -398 2678 -368 2678 -332 ct 2678 -313 2675 -295 2668 -278 ct 2660 -260 2649 -241 2632 -222 ct
|
||||
2616 -202 2588 -176 2549 -143 ct 2516 -115 2494 -97 2484 -87 ct 2474 -77 2466 -67 2459 -57 ct
|
||||
p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 14520 5742 m 18279 5742 l 18279 6759 l 14520 6759 l
|
||||
14520 5742 l 14520 5742 l p ef
|
||||
0.003 0.003 0.003 c 14519 5741 m 18279 5741 l 18279 6758 l 14519 6758 l
|
||||
14519 5741 l 14519 5741 l pc
|
||||
pum
|
||||
15041 6471 t
|
||||
26 -165 m 26 -226 43 -270 76 -299 ct 103 -323 137 -335 177 -335 ct 221 -335 256 -321 284 -291 ct
|
||||
312 -262 326 -222 326 -170 ct 326 -128 320 -95 308 -71 ct 295 -47 277 -29 254 -15 ct
|
||||
230 -2 204 4 177 4 ct 132 4 96 -10 68 -39 ct 40 -69 26 -111 26 -165 ct p
|
||||
84 -166 m 84 -126 93 -97 110 -78 ct 128 -58 150 -49 177 -49 ct 203 -49 225 -58 243 -78 ct
|
||||
260 -97 269 -127 269 -167 ct 269 -205 260 -234 242 -253 ct 225 -272 203 -282 177 -282 ct
|
||||
150 -282 128 -273 110 -253 ct 93 -234 84 -205 84 -166 ct p ef
|
||||
450 128 m 393 128 l 393 -331 l 450 -331 l 450 -276 l 462 -296 475 -311 490 -320 ct
|
||||
504 -330 522 -335 543 -335 ct 571 -335 595 -328 616 -314 ct 637 -299 653 -279 663 -253 ct
|
||||
674 -227 679 -199 679 -168 ct 679 -135 673 -105 661 -78 ct 649 -51 632 -31 609 -17 ct
|
||||
586 -3 562 4 536 4 ct 518 4 501 0 486 -9 ct 472 -18 459 -30 450 -44 ct 450 128 l
|
||||
p
|
||||
450 -163 m 450 -124 458 -95 475 -76 ct 491 -58 511 -49 535 -49 ct 559 -49 579 -58 596 -77 ct
|
||||
613 -97 622 -127 622 -167 ct 622 -205 614 -234 597 -253 ct 580 -273 560 -282 537 -282 ct
|
||||
514 -282 494 -272 476 -252 ct 459 -231 450 -202 450 -163 ct p ef
|
||||
974 -106 m 1030 -97 l 1021 -65 1004 -40 980 -22 ct 955 -4 924 4 885 4 ct 837 4 799 -10 770 -39 ct
|
||||
742 -69 728 -110 728 -163 ct 728 -217 742 -260 771 -290 ct 800 -320 837 -335 882 -335 ct
|
||||
926 -335 962 -320 990 -290 ct 1018 -261 1032 -219 1032 -165 ct 1032 -161 1032 -156 1032 -150 ct
|
||||
785 -150 l 787 -117 798 -92 817 -75 ct 835 -57 858 -49 886 -49 ct 907 -49 925 -53 939 -62 ct
|
||||
954 -71 966 -86 974 -106 ct p
|
||||
785 -203 m 975 -203 l 972 -226 965 -244 953 -255 ct 935 -273 911 -282 882 -282 ct
|
||||
856 -282 833 -275 815 -261 ct 797 -246 787 -227 785 -203 ct p ef
|
||||
1160 0 m 1103 0 l 1103 -331 l 1152 -331 l 1152 -283 l 1164 -304 1176 -318 1187 -325 ct
|
||||
1198 -332 1210 -335 1223 -335 ct 1241 -335 1260 -330 1279 -321 ct 1260 -269 l
|
||||
1247 -278 1234 -282 1221 -282 ct 1209 -282 1199 -279 1189 -271 ct 1180 -264 1173 -253 1169 -240 ct
|
||||
1163 -220 1160 -198 1160 -174 ct 1160 0 l p ef
|
||||
1522 -40 m 1502 -24 1483 -12 1465 -6 ct 1446 1 1427 4 1406 4 ct 1371 4 1344 -4 1325 -22 ct
|
||||
1307 -39 1297 -61 1297 -88 ct 1297 -104 1301 -118 1308 -131 ct 1315 -144 1324 -154 1336 -162 ct
|
||||
1347 -170 1360 -176 1374 -180 ct 1385 -183 1401 -186 1422 -188 ct 1465 -194 1497 -200 1518 -207 ct
|
||||
1518 -214 1518 -219 1518 -221 ct 1518 -242 1513 -256 1503 -265 ct 1490 -276 1470 -282 1444 -282 ct
|
||||
1419 -282 1401 -278 1390 -270 ct 1378 -261 1369 -246 1364 -225 ct 1306 -234 l
|
||||
1311 -257 1319 -276 1331 -290 ct 1342 -305 1358 -316 1379 -323 ct 1401 -331 1425 -335 1453 -335 ct
|
||||
1481 -335 1504 -332 1521 -325 ct 1539 -318 1552 -310 1560 -300 ct 1568 -289 1574 -276 1577 -261 ct
|
||||
1579 -251 1580 -235 1580 -212 ct 1580 -143 l 1580 -94 1581 -62 1583 -46 ct
|
||||
1586 -30 1590 -15 1597 0 ct 1540 0 l 1531 -11 1525 -25 1522 -40 ct p
|
||||
1518 -138 m 1518 -154 l 1498 -148 1469 -142 1430 -137 ct 1408 -134 1393 -131 1383 -128 ct
|
||||
1374 -124 1367 -120 1362 -113 ct 1357 -106 1355 -99 1355 -91 ct 1355 -79 1360 -69 1371 -61 ct
|
||||
1382 -53 1398 -49 1419 -49 ct 1439 -49 1457 -53 1474 -61 ct 1490 -70 1501 -81 1509 -94 ct
|
||||
1515 -104 1518 -119 1518 -138 ct p ef
|
||||
1787 -50 m 1796 -1 l 1780 3 1766 4 1754 4 ct 1734 4 1718 1 1707 -5 ct 1696 -11 1688 -19 1684 -29 ct
|
||||
1679 -40 1677 -61 1677 -94 ct 1677 -278 l 1637 -278 l 1637 -331 l 1677 -331 l
|
||||
1677 -412 l 1734 -446 l 1734 -331 l 1787 -331 l 1787 -278 l 1734 -278 l
|
||||
1734 -92 l 1734 -77 1735 -67 1737 -63 ct 1739 -58 1742 -55 1746 -52 ct 1750 -50 1756 -49 1764 -49 ct
|
||||
1770 -49 1778 -49 1787 -50 ct p ef
|
||||
1827 -165 m 1827 -226 1844 -270 1877 -299 ct 1904 -323 1938 -335 1978 -335 ct
|
||||
2022 -335 2057 -321 2085 -291 ct 2113 -262 2127 -222 2127 -170 ct 2127 -128 2121 -95 2109 -71 ct
|
||||
2096 -47 2078 -29 2055 -15 ct 2031 -2 2005 4 1978 4 ct 1933 4 1897 -10 1869 -39 ct
|
||||
1841 -69 1827 -111 1827 -165 ct p
|
||||
1885 -166 m 1885 -126 1894 -97 1911 -78 ct 1929 -58 1951 -49 1978 -49 ct 2004 -49 2026 -58 2044 -78 ct
|
||||
2061 -97 2070 -127 2070 -167 ct 2070 -205 2061 -234 2043 -253 ct 2026 -272 2004 -282 1978 -282 ct
|
||||
1951 -282 1929 -273 1911 -253 ct 1894 -234 1885 -205 1885 -166 ct p ef
|
||||
2255 0 m 2198 0 l 2198 -331 l 2247 -331 l 2247 -283 l 2259 -304 2271 -318 2282 -325 ct
|
||||
2293 -332 2305 -335 2318 -335 ct 2336 -335 2355 -330 2374 -321 ct 2355 -269 l
|
||||
2342 -278 2329 -282 2316 -282 ct 2304 -282 2294 -279 2284 -271 ct 2275 -264 2268 -253 2264 -240 ct
|
||||
2258 -220 2255 -198 2255 -174 ct 2255 0 l p ef
|
||||
2396 -119 m 2453 -128 l 2459 -98 2470 -77 2484 -64 ct 2498 -51 2516 -44 2539 -44 ct
|
||||
2566 -44 2588 -53 2604 -71 ct 2621 -88 2630 -110 2630 -136 ct 2630 -161 2621 -182 2605 -198 ct
|
||||
2589 -214 2569 -222 2544 -222 ct 2533 -222 2521 -220 2506 -216 ct 2512 -269 l
|
||||
2515 -269 2518 -268 2520 -268 ct 2543 -268 2563 -274 2581 -286 ct 2599 -297 2608 -315 2608 -339 ct
|
||||
2608 -358 2601 -374 2588 -387 ct 2574 -399 2557 -406 2536 -406 ct 2515 -406 2498 -399 2484 -387 ct
|
||||
2470 -374 2462 -356 2458 -331 ct 2400 -340 l 2407 -377 2422 -407 2446 -427 ct
|
||||
2470 -448 2499 -459 2534 -459 ct 2559 -459 2581 -453 2602 -443 ct 2622 -432 2638 -418 2649 -399 ct
|
||||
2659 -381 2665 -362 2665 -341 ct 2665 -322 2660 -304 2649 -288 ct 2639 -272 2623 -259 2602 -250 ct
|
||||
2629 -243 2650 -230 2665 -210 ct 2680 -190 2687 -166 2687 -136 ct 2687 -95 2673 -61 2644 -33 ct
|
||||
2616 -5 2580 9 2537 9 ct 2498 9 2466 -3 2440 -27 ct 2414 -51 2399 -81 2396 -119 ct
|
||||
p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 4800 3641 m 8560 3641 l 8560 4658 l 4800 4658 l
|
||||
4800 3641 l 4800 3641 l p ef
|
||||
0.003 0.003 0.003 c 4800 3641 m 8559 3641 l 8559 4658 l 4800 4658 l 4800 3641 l
|
||||
4800 3641 l pc
|
||||
pum
|
||||
6009 4370 t
|
||||
22 -101 m 79 -110 l 82 -90 91 -75 104 -64 ct 118 -54 137 -49 161 -49 ct 186 -49 204 -53 216 -62 ct
|
||||
228 -71 234 -82 234 -94 ct 234 -105 227 -114 214 -120 ct 204 -125 186 -130 159 -137 ct
|
||||
123 -147 96 -156 80 -164 ct 64 -171 52 -182 43 -195 ct 35 -209 31 -223 31 -240 ct
|
||||
31 -255 34 -268 41 -281 ct 47 -293 56 -304 67 -312 ct 75 -318 87 -324 101 -328 ct
|
||||
116 -333 131 -335 148 -335 ct 173 -335 194 -331 213 -323 ct 232 -316 246 -305 255 -292 ct
|
||||
264 -278 270 -260 273 -238 ct 216 -229 l 214 -246 207 -259 197 -268 ct 186 -278 171 -282 152 -282 ct
|
||||
129 -282 113 -279 103 -271 ct 93 -264 88 -255 88 -245 ct 88 -239 90 -234 94 -229 ct
|
||||
98 -223 105 -219 113 -216 ct 118 -214 133 -210 157 -203 ct 193 -193 219 -184 236 -177 ct
|
||||
253 -171 267 -161 276 -148 ct 286 -135 291 -119 291 -100 ct 291 -81 286 -64 275 -47 ct
|
||||
264 -31 249 -18 229 -9 ct 209 0 186 4 161 4 ct 118 4 86 -4 64 -22 ct 42 -40 28 -66 22 -101 ct
|
||||
p ef
|
||||
419 -397 m 362 -397 l 362 -454 l 419 -454 l 419 -397 l p
|
||||
419 0 m 362 0 l 362 -331 l 419 -331 l 419 0 l p ef
|
||||
622 -50 m 631 -1 l 615 3 601 4 589 4 ct 569 4 553 1 542 -5 ct 531 -11 523 -19 519 -29 ct
|
||||
514 -40 512 -61 512 -94 ct 512 -278 l 472 -278 l 472 -331 l 512 -331 l
|
||||
512 -412 l 569 -446 l 569 -331 l 622 -331 l 622 -278 l 569 -278 l
|
||||
569 -92 l 569 -77 570 -67 572 -63 ct 574 -58 577 -55 581 -52 ct 585 -50 591 -49 599 -49 ct
|
||||
605 -49 613 -49 622 -50 ct p ef
|
||||
903 -106 m 959 -97 l 950 -65 933 -40 909 -22 ct 884 -4 853 4 814 4 ct 766 4 728 -10 699 -39 ct
|
||||
671 -69 657 -110 657 -163 ct 657 -217 671 -260 700 -290 ct 729 -320 766 -335 811 -335 ct
|
||||
855 -335 891 -320 919 -290 ct 947 -261 961 -219 961 -165 ct 961 -161 961 -156 961 -150 ct
|
||||
714 -150 l 716 -117 727 -92 746 -75 ct 764 -57 787 -49 815 -49 ct 836 -49 854 -53 868 -62 ct
|
||||
883 -71 895 -86 903 -106 ct p
|
||||
714 -203 m 904 -203 l 901 -226 894 -244 882 -255 ct 864 -273 840 -282 811 -282 ct
|
||||
785 -282 762 -275 744 -261 ct 726 -246 716 -227 714 -203 ct p ef
|
||||
1226 -459 m 1226 0 l 1169 0 l 1169 -357 l 1156 -345 1138 -332 1117 -319 ct
|
||||
1095 -306 1076 -296 1059 -290 ct 1059 -344 l 1090 -359 1117 -377 1140 -398 ct
|
||||
1163 -418 1180 -439 1189 -459 ct 1226 -459 l p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 14520 3642 m 18279 3642 l 18279 4659 l 14520 4659 l
|
||||
14520 3642 l 14520 3642 l p ef
|
||||
0.003 0.003 0.003 c 14519 3642 m 18279 3642 l 18279 4658 l 14519 4658 l
|
||||
14519 3642 l 14519 3642 l pc
|
||||
pum
|
||||
15729 4371 t
|
||||
22 -101 m 79 -110 l 82 -90 91 -75 104 -64 ct 118 -54 137 -49 161 -49 ct 186 -49 204 -53 216 -62 ct
|
||||
228 -71 234 -82 234 -94 ct 234 -105 227 -114 214 -120 ct 204 -125 186 -130 159 -137 ct
|
||||
123 -147 96 -156 80 -164 ct 64 -171 52 -182 43 -195 ct 35 -209 31 -223 31 -240 ct
|
||||
31 -255 34 -268 41 -281 ct 47 -293 56 -304 67 -312 ct 75 -318 87 -324 101 -328 ct
|
||||
116 -333 131 -335 148 -335 ct 173 -335 194 -331 213 -323 ct 232 -316 246 -305 255 -292 ct
|
||||
264 -278 270 -260 273 -238 ct 216 -229 l 214 -246 207 -259 197 -268 ct 186 -278 171 -282 152 -282 ct
|
||||
129 -282 113 -279 103 -271 ct 93 -264 88 -255 88 -245 ct 88 -239 90 -234 94 -229 ct
|
||||
98 -223 105 -219 113 -216 ct 118 -214 133 -210 157 -203 ct 193 -193 219 -184 236 -177 ct
|
||||
253 -171 267 -161 276 -148 ct 286 -135 291 -119 291 -100 ct 291 -81 286 -64 275 -47 ct
|
||||
264 -31 249 -18 229 -9 ct 209 0 186 4 161 4 ct 118 4 86 -4 64 -22 ct 42 -40 28 -66 22 -101 ct
|
||||
p ef
|
||||
419 -397 m 362 -397 l 362 -454 l 419 -454 l 419 -397 l p
|
||||
419 0 m 362 0 l 362 -331 l 419 -331 l 419 0 l p ef
|
||||
622 -50 m 631 -1 l 615 3 601 4 589 4 ct 569 4 553 1 542 -5 ct 531 -11 523 -19 519 -29 ct
|
||||
514 -40 512 -61 512 -94 ct 512 -278 l 472 -278 l 472 -331 l 512 -331 l
|
||||
512 -412 l 569 -446 l 569 -331 l 622 -331 l 622 -278 l 569 -278 l
|
||||
569 -92 l 569 -77 570 -67 572 -63 ct 574 -58 577 -55 581 -52 ct 585 -50 591 -49 599 -49 ct
|
||||
605 -49 613 -49 622 -50 ct p ef
|
||||
903 -106 m 959 -97 l 950 -65 933 -40 909 -22 ct 884 -4 853 4 814 4 ct 766 4 728 -10 699 -39 ct
|
||||
671 -69 657 -110 657 -163 ct 657 -217 671 -260 700 -290 ct 729 -320 766 -335 811 -335 ct
|
||||
855 -335 891 -320 919 -290 ct 947 -261 961 -219 961 -165 ct 961 -161 961 -156 961 -150 ct
|
||||
714 -150 l 716 -117 727 -92 746 -75 ct 764 -57 787 -49 815 -49 ct 836 -49 854 -53 868 -62 ct
|
||||
883 -71 895 -86 903 -106 ct p
|
||||
714 -203 m 904 -203 l 901 -226 894 -244 882 -255 ct 864 -273 840 -282 811 -282 ct
|
||||
785 -282 762 -275 744 -261 ct 726 -246 716 -227 714 -203 ct p ef
|
||||
1082 -57 m 1306 -57 l 1306 0 l 1006 0 l 1005 -14 1007 -27 1012 -40 ct
|
||||
1019 -62 1031 -82 1047 -102 ct 1064 -123 1087 -145 1119 -171 ct 1167 -211 1200 -243 1218 -266 ct
|
||||
1235 -288 1244 -310 1244 -331 ct 1244 -352 1236 -370 1220 -384 ct 1205 -398 1185 -406 1159 -406 ct
|
||||
1133 -406 1112 -398 1096 -383 ct 1080 -369 1072 -348 1072 -322 ct 1014 -331 l
|
||||
1018 -372 1033 -404 1058 -426 ct 1084 -448 1118 -459 1161 -459 ct 1204 -459 1238 -446 1263 -422 ct
|
||||
1288 -398 1301 -368 1301 -332 ct 1301 -313 1298 -295 1291 -278 ct 1283 -260 1272 -241 1255 -222 ct
|
||||
1239 -202 1211 -176 1172 -143 ct 1139 -115 1117 -97 1107 -87 ct 1097 -77 1089 -67 1082 -57 ct
|
||||
p ef
|
||||
pom
|
||||
|
||||
1.000 1.000 1.000 c 8900 1543 m 12659 1543 l 12659 2559 l 8900 2559 l
|
||||
8900 1543 l 8900 1543 l p ef
|
||||
0.003 0.003 0.003 c 8899 1542 m 12659 1542 l 12659 2559 l 8899 2559 l 8899 1542 l
|
||||
8899 1542 l pc
|
||||
pum
|
||||
10233 2272 t
|
||||
101 0 m 44 0 l 44 -331 l 93 -331 l 93 -283 l 105 -304 117 -318 128 -325 ct
|
||||
139 -332 151 -335 164 -335 ct 182 -335 201 -330 220 -321 ct 201 -269 l 188 -278 175 -282 162 -282 ct
|
||||
150 -282 140 -279 130 -271 ct 121 -264 114 -253 110 -240 ct 104 -220 101 -198 101 -174 ct
|
||||
101 0 l p ef
|
||||
238 -165 m 238 -226 255 -270 288 -299 ct 315 -323 349 -335 389 -335 ct 433 -335 468 -321 496 -291 ct
|
||||
524 -262 538 -222 538 -170 ct 538 -128 532 -95 520 -71 ct 507 -47 489 -29 466 -15 ct
|
||||
442 -2 416 4 389 4 ct 344 4 308 -10 280 -39 ct 252 -69 238 -111 238 -165 ct p
|
||||
296 -166 m 296 -126 305 -97 322 -78 ct 340 -58 362 -49 389 -49 ct 415 -49 437 -58 455 -78 ct
|
||||
472 -97 481 -127 481 -167 ct 481 -205 472 -234 454 -253 ct 437 -272 415 -282 389 -282 ct
|
||||
362 -282 340 -273 322 -253 ct 305 -234 296 -205 296 -166 ct p ef
|
||||
591 -165 m 591 -226 608 -270 641 -299 ct 668 -323 702 -335 742 -335 ct 786 -335 821 -321 849 -291 ct
|
||||
877 -262 891 -222 891 -170 ct 891 -128 885 -95 873 -71 ct 860 -47 842 -29 819 -15 ct
|
||||
795 -2 769 4 742 4 ct 697 4 661 -10 633 -39 ct 605 -69 591 -111 591 -165 ct p
|
||||
649 -166 m 649 -126 658 -97 675 -78 ct 693 -58 715 -49 742 -49 ct 768 -49 790 -58 808 -78 ct
|
||||
825 -97 834 -127 834 -167 ct 834 -205 825 -234 807 -253 ct 790 -272 768 -282 742 -282 ct
|
||||
715 -282 693 -273 675 -253 ct 658 -234 649 -205 649 -166 ct p ef
|
||||
1082 -50 m 1091 -1 l 1075 3 1061 4 1049 4 ct 1029 4 1013 1 1002 -5 ct 991 -11 983 -19 979 -29 ct
|
||||
974 -40 972 -61 972 -94 ct 972 -278 l 932 -278 l 932 -331 l 972 -331 l
|
||||
972 -412 l 1029 -446 l 1029 -331 l 1082 -331 l 1082 -278 l 1029 -278 l
|
||||
1029 -92 l 1029 -77 1030 -67 1032 -63 ct 1034 -58 1037 -55 1041 -52 ct 1045 -50 1051 -49 1059 -49 ct
|
||||
1065 -49 1073 -49 1082 -50 ct p ef
|
||||
pom
|
||||
|
||||
6680 3641 m 6680 3100 l 10780 3100 l 10780 2558 l ps
|
||||
10780 2558 m 10780 3101 l 16399 3101 l 16399 3642 l ps
|
||||
6680 4657 m 6680 5198 l 3781 5198 l 3781 5739 l ps
|
||||
6680 4657 m 6680 5199 l 9480 5199 l 9480 5740 l ps
|
||||
16400 4658 m 16400 5741 l ps
|
||||
2406 7838 m 2406 7297 l 3781 7297 l 3781 6755 l ps
|
||||
3781 6755 m 3781 7298 l 5227 7298 l 5227 7839 l ps
|
||||
9480 6756 m 9480 7298 l 8020 7298 l 8020 7839 l ps
|
||||
9480 6756 m 9480 7298 l 10814 7298 l 10814 7838 l ps
|
||||
16400 6757 m 16400 7299 l 13607 7299 l 13607 7839 l ps
|
||||
16400 6757 m 16400 7299 l 16401 7299 l 16401 7840 l ps
|
||||
16400 6757 m 16400 7299 l 19194 7299 l 19194 7840 l ps
|
||||
2406 8854 m 2406 9836 l ps
|
||||
5227 8855 m 5227 9837 l ps
|
||||
8020 8855 m 8020 9837 l ps
|
||||
10814 8854 m 10814 9836 l ps
|
||||
13607 8855 m 13607 9837 l ps
|
||||
16401 8856 m 16401 9838 l ps
|
||||
19195 8856 m 19195 9838 l ps
|
||||
0 9316 t
|
||||
pom
|
||||
count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%EOF
|
||||
@@ -1,60 +0,0 @@
|
||||
\section{Hello Protocol}
|
||||
\label{sec:hello-protocol}
|
||||
|
||||
The Hello Protocol module periodically sends Hello Interests to learn the activity status of the router's neighbors.
|
||||
Hello Interests' names are constructed in the form: \texttt{/<neighbor's-router-prefix>/NLSR/INFO/<this-router's-prefix>}.
|
||||
If a neighbor responds to a Hello Interest, the neighbor is considered to be up and \texttt{ACTIVE}.
|
||||
A Hello Data's name is constructed using the following convention: \texttt{/<neighbor's-router-prefix>/NLSR/INFO/<this-router's-prefix>/<version>}.
|
||||
If a neighbor fails to respond to a configurable number of Hello Interests (\texttt{hello-retries}), the neighbors is considered to be down and \texttt{INACTIVE}.
|
||||
The Hello Protocol continues to send these periodic Hello Interests to each of its neighbors every \texttt{hello-interval} seconds.
|
||||
If the Hello Protocol detects a change in a neighbors status
|
||||
(i.e. a router that was previously \texttt{ACTIVE} is not responding to Hello Interests or a router that was previously \texttt{INACTIVE} responds to a Hello Interest),
|
||||
it will notify the LSDB (Section~\ref{sec:lsdb}) to schedule a new Adjacency LSA build to include the updated neighbor information.
|
||||
|
||||
\subsection{Determining Neighbor's Status}
|
||||
\label{sec:initial-status}
|
||||
|
||||
\begin{figure}
|
||||
\center
|
||||
\includegraphics[width=0.5\textwidth]{figures/hello-protocol}
|
||||
\caption{Router A determines the initial status of Router B}
|
||||
\end{figure}
|
||||
|
||||
The Hello Protocol begins by scheduling Hello Interests to be sent to each neighbor of the router after \texttt{first-hello-interval} seconds.
|
||||
When the scheduled event is triggered, the Hello Protocol iterates through the list of neighbors first checking if there is already a Face to the neighbor.
|
||||
If there is a Face that has already been created, the Hello Protocol will construct and send a Hello Interest to the neighbor.
|
||||
If a Face has not been created for the neighbor, the Hello Protocol will attempt to create a Face to the neighbor and register the neighbor's router prefix.
|
||||
If the Face is created successfully, the Hello Protocol registers the Sync prefix, LSA prefix, and Key prefix using the Face ID returned by the Face creation command and sends out the Hello Interest.
|
||||
If the Face cannot be created, the Hello Protocol considers the failure as a Hello Interest timeout.
|
||||
|
||||
If the Hello Protocol receives Data in response to its Hello Interest, it will first ask the Validator module to verify that the Data is valid. Data is valid if the Data is legitimately signed (in the ordinary cryptographic way) and if the key name and Data name are of a certain format.
|
||||
If the Data is valid, the corresponding neighbor is set as \texttt{ACTIVE} and its timeout count is reset to zero.
|
||||
If the neighbor was previously \texttt{INACTIVE}, an Adjacency LSA build is scheduled to include the newly \texttt{ACTIVE} neighbor.
|
||||
If the Data is not valid, the packet is dropped.
|
||||
|
||||
If the Hello Interest sent to the neighbor times out, the corresponding neighbor's timed-out count is incremented.
|
||||
If the neighbor's timed-out count is less than \texttt{hello-retries} in the configuration file, the Hello Protocol will send another Hello Interest after \texttt{hello-timeout} seconds.
|
||||
If the neighbor's timed-out count equals the \texttt{hello-retries} value and the neighbor is currently marked as \texttt{ACTIVE}, the neighbor's status is set to \texttt{INACTIVE} and an Adjacency LSA build is scheduled.
|
||||
|
||||
\subsection{Responding to Hello Interests}
|
||||
\label{sec:respond-to-hello}
|
||||
|
||||
If the Hello Protocol receives a Hello Interest from another router, it will first verify that the Hello Interest came from one of its configured neighbors.
|
||||
If so, the Hello Protocol responds to the Interest with Hello Data.
|
||||
To optimize the time to respond to link recoveries, the Hello Protocol will then immediately send a Hello Interest to the neighbor if the neighbor is currently marked as \texttt{INACTIVE}.
|
||||
|
||||
\subsection{Failure and Recovery Detection}
|
||||
\label{sec:link-failure}
|
||||
|
||||
\begin{figure}
|
||||
\center
|
||||
\includegraphics[width=0.5\textwidth]{figures/hello-protocol-timeout}
|
||||
\caption{Router A determines that Router B has failed}
|
||||
\end{figure}
|
||||
|
||||
The Hello Protocol will consider a neighbor as failed if the neighbor is currently \texttt{ACTIVE}, but Hello Interests sent to the neighbor have timed-out \texttt{hello-retries} number of times.
|
||||
A failure can also be detected if a FaceEventNotification is received with the information that a Face to the neighbor has been destroyed.
|
||||
The event is handled by the \texttt{Nlsr} class, but the triggered events simulate the actions of the Hello Protocol.
|
||||
If the neighbor was currently \texttt{ACTIVE}, the neighbor will be set to \texttt{INACTIVE}, the neighbor's timed-out count will be set to \texttt{hello-retries}, and an Adjacency LSA build will be scheduled.
|
||||
|
||||
The Hello Protocol will consider a neighbor as recovered if the neighbor is currently \texttt{INACTIVE}, but the Hello Protocol has received valid Data in response to a Hello Interest sent to the neighbor.
|
||||
@@ -1,99 +0,0 @@
|
||||
\section{Introduction}
|
||||
\label{sec:intro}
|
||||
|
||||
The Named-data Link State Routing protocol (NLSR) is an intra-domain routing protocol for Named Data Networking (NDN).
|
||||
It is an application level protocol similar to many IP routing protocols, but NLSR uses NDN's Interest/Data packets to disseminate routing updates.
|
||||
Although NLSR is designed in the context of a single domain, its design patterns may offer a useful reference for future development of inter-domain routing protocols.
|
||||
|
||||
NLSR supports name-based routing in NDN, computes routing ranks for all policy-compliant next-hops which provides a name-based multi-path routing table for NDN's forwarding strategy,
|
||||
and ensures that routers can originate only their own routing updates using a hierarchical trust model.
|
||||
|
||||
\subsection{NLSR Modules and Data Structures}
|
||||
\label{sec:modules}
|
||||
NLSR contains multiple modules that each contribute to the total realization of the protocol.
|
||||
Many of the modules interact with one another to trigger some behavior or to modify information in data structures.
|
||||
NLSR uses the following modules:
|
||||
\begin{itemize}
|
||||
\item \textbf{Hello Protocol} (Section~\ref{sec:hello-protocol}) - determines the status of neighboring routers using periodic Hello Interests and notifies other modules when neighbors' statuses change.
|
||||
\item \textbf{ChronoSync} - provides network-wide synchronization of NLSR LSDBs.~\cite{chronosync}
|
||||
\item \textbf{Sync Logic Handler} (Section~\ref{sec:sync-logic}) - handles sync update notifications from NSync by retrieving updated LSAs.
|
||||
\item \textbf{LSAs} (Section~\ref{sec:lsas}) - represent routing information published by the router.
|
||||
\item \textbf{LSDB} (Section~\ref{sec:lsdb}) - stores the LSA information distributed by other routers in the network.
|
||||
\item \textbf{Routing Table} (Section~\ref{sec:routing-table}) - calculates and maintains a list of next hops for each router in the network.
|
||||
\item \textbf{Name Prefix Table} (Section~\ref{sec:npt}) - stores all advertised name prefixes and their next hops.
|
||||
\item \textbf{FIB} (Section~\ref{sec:fib}) - maintains a shadow FIB which represents the intended state of NFD's FIB~\cite{NFD}.
|
||||
\item \textbf{Prefix Update Processor} (Section~\ref{sec:prefix-update}) - listens for dynamic prefix announcements to advertise or withdraw name prefixes.
|
||||
\item \textbf{NFD RIB Command Processor} (Section~\ref{sec:nfd-rib-commands}) - listens for readvertise-to-NLSR commands to advertise or withdraw name prefixes that were inserted into NFD.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Protocol Overview}
|
||||
\label{sec:protocol-overview}
|
||||
|
||||
NLSR is designed to accomplish three main tasks: (1) discover adjacent
|
||||
neighbors; (2) disseminate and synchronize topology, name prefix, and
|
||||
hyperbolic routing information; and (3) calculate a routing table and
|
||||
populate NFD's FIB. The entire protocol is described in detail in the
|
||||
NLSR paper~\cite{NlsrTr}.
|
||||
|
||||
\subsubsection{Discovering Neighbors}
|
||||
|
||||
NLSR determines the adjacency status of neighboring routers using the Hello Protocol module (Section~\ref{sec:hello-protocol}).
|
||||
When the Hello Protocol detects a status change for a neighbor, it will ask the LSDB module (Section~\ref{sec:lsdb}) to update the router's advertised adjacency information.
|
||||
|
||||
Additionally, NLSR discovers the infrastructure for communicating with
|
||||
neighbors by querying NFD, which maintains a dataset of all
|
||||
information for its Faces.
|
||||
|
||||
\subsubsection{Disseminating Routing Information}
|
||||
|
||||
When a router's LSAs (Section~\ref{sec:lsas}) changes, the information of this change should be distributed to every other router in the network.
|
||||
The Sync Logic Handler module (Section~\ref{sec:sync-logic}) is used to notify the synchronization protocol of changes to the router's own LSAs as well as to learn of LSA changes from other routers in the network;
|
||||
the Sync Logic Handler module interfaces with ChronoSync to perform the two tasks.
|
||||
|
||||
When the Sync Logic Handler module learns of a new LSA, it will inform the LSDB module.
|
||||
The LSDB module will attempt to fetch the new LSA and will store it in the LSDB module's database if it can be retrieved.
|
||||
If the newly fetched LSA informs the router of previously unknown routing information, the LSDB module will inform other modules depending on the type of routing information:
|
||||
\begin{itemize}
|
||||
\item \textbf{Change in network topology} - the LSDB module will ask the Routing Table module (Section~\ref{sec:routing-table}) to recalculate paths in the network
|
||||
\item \textbf{Change in name prefix advertisement} - the LSDB module will inform the Name Prefix Table module (Section~\ref{sec:npt}), which will in turn notify the FIB module (Section~\ref{sec:fib}) in order to add or remove the changed name prefixes.
|
||||
\item \textbf{Change in hyperbolic coordinates} - the LSDB module will inform the Routing Table module (Section~\ref{sec:routing-table}), so the Routing Table module can calculate an up-to-date routing table.
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Calculating the Routing Table and Populating NFD's FIB}
|
||||
|
||||
When the routing table is calculated by the Routing Table module, the computed next hops are passed to the Name Prefix Table module.
|
||||
The Name Prefix Table module will then further pass the next hops to the FIB module to update NLSR's expected state of NFD's FIB.
|
||||
The FIB module will then perform the registrations or unregistrations with NFD's FIB.\\
|
||||
|
||||
A simplified diagram of NLSR's actions when receiving new routing information is shown in Figure~\ref{fig:system-interaction}.
|
||||
The remainder of this documentation will describe the purpose of and interaction between each module in more detail.
|
||||
|
||||
\begin{figure}
|
||||
\center
|
||||
\includegraphics[width=\linewidth]{figures/system-interaction.pdf}
|
||||
\caption{Simplified Diagram of the Actions of NLSR's Modules}
|
||||
\label{fig:system-interaction}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Dispatcher}
|
||||
\label{sec:dispatcher}
|
||||
|
||||
NLSR takes advantage of a variety of ndn-cxx convenience
|
||||
mechanisms. Among these is the dispatcher. The dispatcher provides
|
||||
facilities for receiving and decoding ControlCommands, which
|
||||
simplifies the processing workflow. The dispatcher itself is
|
||||
\href{http://named-data.net/doc/ndn-cxx/current/doxygen/de/d34/classndn_1_1mgmt_1_1Dispatcher.html}{well-documented},
|
||||
so we will only give a brief overview here.
|
||||
|
||||
\begin{itemize}
|
||||
\item Any prefixes that are registered, such as ``prefix/register'',
|
||||
\emph{must} be registered before top-level prefixes. All prefix
|
||||
registrations should go in \texttt{Nlsr::registerLocalhostPrefix}.
|
||||
\item The dispatcher can be used to accept incoming ControlCommands
|
||||
and respond to requests for datasets. Currently NLSR uses the
|
||||
dispatcher only for accepting incoming ControlCommands.
|
||||
\item Top-level prefixes cannot overlap. For example, you cannot
|
||||
register ``/localhost/nlsr'' and then ``/localhost/nlsr/fib''. The
|
||||
second registration must be done as a sub-prefix of the first,
|
||||
i.e. the first prefix, and then ``fib''.
|
||||
\end{itemize}
|
||||
@@ -1,30 +0,0 @@
|
||||
\section{Link-State Advertisements}
|
||||
\label{sec:lsas}
|
||||
|
||||
Link-State Advertisements (LSAs) represent pieces of routing information distributed by routers.
|
||||
|
||||
\subsection{LSA Base Class}
|
||||
\label{sec:lsa-base-class}
|
||||
|
||||
All three LSA implementations inherit from an LSA Base class, \texttt{Lsa}, which maintains information that is included in each LSA.
|
||||
The \texttt{LSA} class contains the following member variables:
|
||||
\begin{itemize}
|
||||
\item \textbf{Origin Router} - the router that advertised the LSA. Specifically, this is a name prefix that follows the NLSR convention of router naming.
|
||||
\item \textbf{Sequence Number} - a number used to indicate the LSA's version. Because sequence numbers are preserved between NLSR restarts, a higher sequence number also always indicates a \emph{newer} LSA.
|
||||
\item \textbf{Expiration Time Point} - a time point indicating when the LSA is no longer valid. This currently is represented as a Unix timestamp (i.e. seconds since Jan 1, 1970).
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Adjacency LSAs}
|
||||
\label{sec:adjacency-lsas}
|
||||
|
||||
Adjacency LSAs maintain an \texttt{AdjacencyList} which contains information about all the currently \texttt{ACTIVE} neighbors of the origin router. It also includes the number of active routers, not just the list itself. This aids in serialization.
|
||||
|
||||
\subsection{Coordinate LSAs}
|
||||
\label{sec:coordinate-lsas}
|
||||
|
||||
Coordinate LSAs maintain the hyperbolic angle(s) and hyperbolic radius of the origin router.
|
||||
|
||||
\subsection{Name LSAs}
|
||||
\label{sec:name-lsas}
|
||||
|
||||
Name LSAs maintain a \texttt{NamePrefixList} which contains the name prefixes that are reachable at the origin router.
|
||||
@@ -1,22 +0,0 @@
|
||||
\section{LSDB Status Dataset}
|
||||
\label{sec:lsdb-status-dataset}
|
||||
|
||||
NLSR makes available the entire contents of the LSDB upon request. A
|
||||
command can request LSAs of just a specific type, or request the
|
||||
collection of all LSAs. Unlike the Prefix Update and NFD RIB command
|
||||
processors, the LSDB Status dataset is available over \emph{both} the
|
||||
\texttt{/localhost} and regular router prefixes. That is, you can
|
||||
request an arbitrary router's LSDB contents.
|
||||
|
||||
\subsection{Requesting the dataset}
|
||||
\begin{itemize}
|
||||
\item To request the local dataset, simply send an Interest of the
|
||||
form \texttt{/localhost/nlsr/lsdb/<dataset type>}.
|
||||
\item To request a remote dataset, send an Interest of the form
|
||||
\texttt{/<router name>/lsdb/<dataset type>}, where \texttt{<router
|
||||
name>} is whatever the router's name is. This is usually
|
||||
\texttt{general.network + general.site + general.router} from the
|
||||
configuration file.
|
||||
\end{itemize}
|
||||
|
||||
Where \texttt{<dataset type>} is one of \texttt{names, adjacencies, coordinates} or \texttt{list}.
|
||||
@@ -1,141 +0,0 @@
|
||||
\section{Link-State Database}
|
||||
\label{sec:lsdb}
|
||||
|
||||
The Link-State Database (LSDB) holds LSA information distributed by
|
||||
other routers in the network. The LSDB stores all types of LSAs and
|
||||
will trigger events when a new LSA is added, updated, or expires. The
|
||||
LSDB also handles LSA retrieval, performs LSA builds, and triggers
|
||||
routing table calculations.
|
||||
|
||||
\subsection{Retrieving an LSA}
|
||||
|
||||
The LSDB provides the \texttt{Lsdb::expressInterest()} method as a
|
||||
public interface to retrieve an LSA from the network. If LSA Data is
|
||||
returned, the LSDB will validate the Data using the Validator
|
||||
module. Then, it will perform the necessary LSDB modifications. If
|
||||
the LSA Interest times out, the LSDB will retry until it reaches a
|
||||
configurable maximum number of tries, or a configurable deadline
|
||||
passes.
|
||||
|
||||
The LSDB uses the SegmentFetcher system to retrieve LSAs. LSAs very
|
||||
often will exceed the maximum NDN packet size. In these cases, the LSA
|
||||
needs to be split into segments to be sent, so the LSDB uses the
|
||||
SegmentFetcher to send all LSAs. The SegmentFetcher can decide if the
|
||||
data actually needs to be split.
|
||||
|
||||
\subsection{General Procedure}
|
||||
|
||||
The LSDB is responsible for building, installing, and publishing
|
||||
NLSR's LSAs, as well as for installing and processing LSAs from other
|
||||
NSLRs. Generally, the functions of the LSDB are:
|
||||
\begin{itemize}
|
||||
\item Schedule the building of an LSA.
|
||||
\item Building the LSA.
|
||||
\item Installing the LSA into the LSDB.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Scheduling LSA Builds}
|
||||
LSAs need to be rebuilt whenever the routing information NLSR has
|
||||
changes. This includes events like neighbors becoming active, or when
|
||||
a prefix for advertisement is inserted by the Prefix Update Processor,
|
||||
which would cause an adjacency LSA or a name LSA rebuild,
|
||||
respectively. To improve performance, instead of directly building
|
||||
adjacency LSAs the first request schedules the build, and build requests
|
||||
that occur after the scheduling but before the actual event are
|
||||
aggregated (in other words, ignored), because they will be satisfied
|
||||
by the already-scheduled build. Some specifics are shown below.
|
||||
below.
|
||||
\begin{itemize}
|
||||
\item \textbf{Adjacency LSAs} -- will only be scheduled if link-state
|
||||
routing is enabled. In particular, this means Adjacency LSA builds
|
||||
will \emph{not} occur if hyperbolic routing is enabled. Note that
|
||||
adjacency LSAs will be built if dry-run hyperbolic routing is
|
||||
enabled, as the network is still using link-state routing to
|
||||
calculate paths.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Building LSAs}
|
||||
Building LSAs has a part common to all LSAs and a part specific to
|
||||
each LSA type. For example, all LSA types increment sequence number
|
||||
and have the same expiration length, and of course come from the same
|
||||
router. Additionally, all LSA builds cause a sync update
|
||||
publishing. However, each type of LSA includes different data, to
|
||||
represent different kinds of information that NLSR
|
||||
has. (Section~\ref{sec:lsas}) In particular:
|
||||
\begin{itemize}
|
||||
\item \textbf{Adjacency LSAs} -- the number and a list of active
|
||||
neighbors is included.
|
||||
\item \textbf{Coordinate LSAs} -- the hyperbolic radius and all
|
||||
hyperbolic angles are included.
|
||||
\item \textbf{Name LSAs} -- the list of name prefixes that are
|
||||
accessible at this router is included.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Installing and Processing LSAs}
|
||||
LSA installation procedure is mostly the same across any type of LSA,
|
||||
but each type also has installation behavior specific to that type,
|
||||
too. For any LSA type, we need to schedule an expiration event, and we
|
||||
need to update several fields in the LSA. However, installing an
|
||||
adjacency or coordinate LSA causes a Routing Table calculation, but a
|
||||
name LSA does not, for example.
|
||||
%%| Not yet true, but it should be true!
|
||||
Additionally, the name of the origin router is added as a ``routable prefix'' in the NPT. (Section~\ref{sec:npt}).
|
||||
\begin{itemize}
|
||||
\item \textbf{Adjacency LSAs} -- each adjacency in the LSA will be
|
||||
added as a ``routable prefix'' to the NPT. If the adjacencies have
|
||||
changed since the last version of this LSA, a Routing Table
|
||||
calculation needs to be scheduled, because the state of the
|
||||
network has changed. Of course, this is necessarily true if the
|
||||
LSA is new to us. Important to note is that we will also install
|
||||
and process \emph{our own} adjacency LSA in this way.
|
||||
\item \textbf{Coordinate LSAs} -- the router that the LSA is from
|
||||
will be added as a ``routable prefix'' to the NPT. If the radius
|
||||
and coordinates have changed since the last version of this LSA, a
|
||||
Routing Table calculation needs to be scheduled, because the state
|
||||
of the network has changed. As above, this is true for a new
|
||||
LSA. This is only done if the LSA is from a foreign router.
|
||||
\item \textbf{Name LSAs} -- each name prefix in the LSA will be
|
||||
added to our NPT. This is only done if the LSA is from a foreign
|
||||
router.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{LSA Expiration}
|
||||
LSAs expire so that the network can clean up when a router
|
||||
crashes. The amount of time an LSA lasts is configurable. When an LSA
|
||||
expires, we refresh it if it's our LSA, and remove it from the LSDB if
|
||||
not. There is a ``grace period'' window that is appended to the end of
|
||||
the expiration period of all LSAs, to provide time for the originating
|
||||
router to refresh the LSA and for it to propagate back to us. In all
|
||||
expiration cases, the name of the origin router will be removed from
|
||||
the NPT. What happens when an LSA is removed from the LSDB differs
|
||||
based on the type of LSA:
|
||||
\begin{itemize}
|
||||
\item \textbf{Adjacency LSAs} -- a Routing Table calculation needs to occur,
|
||||
since the state of the network has changed, at least from our
|
||||
perspective.
|
||||
\item \textbf{Coordinate LSAs} -- a Routing Table calculation needs to occur,
|
||||
since the state of the network has changed, at least from our
|
||||
perspective.
|
||||
\item \textbf{Name LSAs} -- the name prefixes in the LSA are removed from the
|
||||
NPT.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{LSA Refreshment}
|
||||
NLSR will only refresh its own LSAs. Additionally, the procedure for refreshing an LSA is the same for all types:
|
||||
\begin{itemize}
|
||||
\item Increment the LSA sequence number
|
||||
\item Schedule another expiration event. The length of time to wait
|
||||
until refreshing is configurable, but it should probably be lower
|
||||
than the expiration time that was set when building the LSA
|
||||
initially. This prevents other routers from deleting our LSAs
|
||||
because the network is slow, for instance. The length of time is set
|
||||
by \texttt{lsa-refresh-time} in the configuration file.
|
||||
\item Publish an update to sync
|
||||
\end{itemize}
|
||||
|
||||
\begin{figure}[h]
|
||||
\center
|
||||
\includegraphics[width=0.5\linewidth]{figures/generic-lsdb-flow}
|
||||
\label{fig:generic-lsdb-flow}
|
||||
\caption{The general LSDB logic for each LSA type}
|
||||
\end{figure}
|
||||
@@ -1,23 +0,0 @@
|
||||
\section{NFD RIB Command Processor}
|
||||
\label{sec:nfd-rib-commands}
|
||||
|
||||
The NFD RIB Command Processor allows modification of NLSR's advertised
|
||||
name prefixes using NFD's RibMgmt commands. Such commands may
|
||||
originate from something like NFD's Readvertise module, which permits
|
||||
routes inserted in NFD to be propagated through to NLSR, so that NLSR
|
||||
can provide routing support for them.
|
||||
|
||||
\subsection{Advertising and Withdrawing Routes}
|
||||
The processor accepts valid RibMgmt commands that have the name prefix
|
||||
to manipulate the origin of the route specified. No other validation
|
||||
is performed, as stated below.
|
||||
|
||||
The processor does not send any kind of response to commands.
|
||||
|
||||
\subsection{Security}
|
||||
Any RibMgmt commands received on the \texttt{/localhost/nlsr/rib}
|
||||
prefix are considered secure, and are processed. This introduces a
|
||||
security hole because anyone who can send a RibMgmt command on this
|
||||
prefix can arbitrarily manipulate NLSR's advertised prefixes. However,
|
||||
because sending commands to this prefix requires root access, a
|
||||
would-be attacker will already have root access locally.
|
||||
@@ -1,88 +0,0 @@
|
||||
\documentclass[10pt]{article}
|
||||
|
||||
\usepackage[margin=0.5in,bottom=.7in,top=.8in]{geometry}
|
||||
\usepackage{graphicx}\graphicspath{{figures/}}
|
||||
\usepackage[usenames,dvipsnames]{xcolor}
|
||||
\usepackage[colorlinks=true,citecolor=Mahogany,linkcolor=Mahogany,urlcolor=Mahogany,filecolor=Mahogany]{hyperref}
|
||||
\usepackage{breakurl}
|
||||
\usepackage{url}
|
||||
\usepackage[nocompress]{cite}
|
||||
\usepackage{paralist}
|
||||
\usepackage{authblk}
|
||||
\usepackage{enumitem}
|
||||
\usepackage{multirow}
|
||||
|
||||
\title{NLSR Developer's Guide}
|
||||
\author[1]{Vince Lehman, Muktadir Chowdhury, Nicholas Gordon, Ashlesh Gawande}
|
||||
|
||||
\affil[1]{University of Memphis}
|
||||
|
||||
%\date{NFD Team}
|
||||
|
||||
\usepackage{fancyhdr}
|
||||
\pagestyle{fancy}
|
||||
|
||||
|
||||
\usepackage{eso-pic,xcolor}
|
||||
\makeatletter
|
||||
\AddToShipoutPicture*{%
|
||||
\setlength{\@tempdimb}{20pt}%
|
||||
\setlength{\@tempdimc}{\paperheight}%
|
||||
\setlength{\unitlength}{1pt}%
|
||||
%\put(\strip@pt\@tempdimb,\strip@pt\@tempdimc){%
|
||||
% \makebox(0,-60)[l]{\color{blue}%
|
||||
%NDN, Technical Report NDN-0021. \url{http://named-data.net/techreports.html}}
|
||||
% }%
|
||||
}
|
||||
\makeatother
|
||||
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
\begin{abstract}
|
||||
The Named Data Link-State Routing Protocol (NLSR) is a Named Data Networking (NDN) routing protocol that populates NDN Forwarding Daemon's (NFD) Routing Information Base (RIB).
|
||||
The main design goal of NLSR is to provide a routing protocol to populate NFD's RIB and Forwarding Information Base (FIB).
|
||||
NLSR calculates the routing table using link-state or hyperbolic routing and produces multiple faces for each reachable name prefix in a single authoritative domain.
|
||||
NLSR will continue to evolve alongside the NDN protocol, NFD, and ndn-cxx.
|
||||
This document is meant to explain the design of NLSR including major module and data structures descriptions and the interactions between those components.
|
||||
|
||||
\end{abstract}
|
||||
|
||||
\tableofcontents
|
||||
\clearpage
|
||||
|
||||
\input{intro}
|
||||
\clearpage
|
||||
\input{hello-protocol}
|
||||
\clearpage
|
||||
\input{sync-logic}
|
||||
\clearpage
|
||||
\input{lsas}
|
||||
\clearpage
|
||||
\input{lsdb}
|
||||
\clearpage
|
||||
\input{routing-table}
|
||||
\clearpage
|
||||
\input{npt}
|
||||
\clearpage
|
||||
\input{fib}
|
||||
\clearpage
|
||||
\input{prefix-update}
|
||||
\clearpage
|
||||
\input{nfd-rib-command-processor}
|
||||
\clearpage
|
||||
\input{lsdb-status-dataset}
|
||||
\clearpage
|
||||
\input{security}
|
||||
\clearpage
|
||||
\input{configuration}
|
||||
\clearpage
|
||||
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{section}{References}
|
||||
|
||||
\bibliographystyle{IEEEtran}
|
||||
\bibliography{nlsr}
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,306 @@
|
||||
; the general section contains all the general settings for router
|
||||
|
||||
general
|
||||
{
|
||||
; mandatory configuration command section network, site and router
|
||||
|
||||
network /ndn/ ; name of the network the router belongs to in ndn URI format
|
||||
site /edu/memphis ; name of the site the router belongs to in ndn URI format
|
||||
router /%C1.Router/cs/pollux ; name of the router in ndn URI format
|
||||
|
||||
; lsa-refresh-time is the time in seconds, after which router will refresh its LSAs
|
||||
lsa-refresh-time 1800 ; default value 1800. Valid values 240-7200
|
||||
|
||||
; router-dead-interval is the time in seconds after which an inactive routers
|
||||
; LSAs are removed
|
||||
;router-dead-interval 3600 ; default value: 2*lsa-refresh-time. Value must be larger
|
||||
; than lsa-refresh-time
|
||||
|
||||
; InterestLifetime (in seconds) for LSA fetching
|
||||
lsa-interest-lifetime 4 ; default value 4. Valid values 1-60
|
||||
|
||||
; sync interest lifetime of ChronoSync in milliseconds
|
||||
sync-interest-lifetime 60000 ; default value 60000. Valid values 1000-120,000
|
||||
|
||||
seq-dir /var/lib/nlsr ; path for sequence directory (Absolute path)
|
||||
}
|
||||
|
||||
; the neighbor's section contains the configuration for router's neighbors and hellos behavior
|
||||
|
||||
neighbors
|
||||
{
|
||||
; in case hello interest timed out, router will try 'hello-retries' times at 'hello-timeout'
|
||||
; seconds interval before giving up for any neighbors (deciding link is down)
|
||||
|
||||
hello-retries 3 ; interest retries number in integer. Default value 3
|
||||
; valid values 1-10
|
||||
|
||||
hello-timeout 1 ; interest time out value in integer. Default value 1
|
||||
; Valid values 1-15
|
||||
|
||||
hello-interval 60 ; interest sending interval in seconds. Default value 60
|
||||
; valid values 30-90
|
||||
|
||||
; adj-lsa-build-interval is the time to wait in seconds after an Adjacency LSA build is scheduled
|
||||
; before actually building the Adjacency LSA
|
||||
|
||||
adj-lsa-build-interval 5 ; default value 5. Valid values 0-5. It is recommended that
|
||||
; adj-lsa-build-interval have a lower value than routing-calc-interval
|
||||
|
||||
; first-hello-interval is the time to wait in seconds before sending the first Hello Interest
|
||||
|
||||
first-hello-interval 10 ; Default value 10. Valid values 0-10
|
||||
|
||||
face-dataset-fetch-tries 3 ; default is 3. Valid values 1-10. The FaceDataset is
|
||||
; gotten from NFD, and is needed to configure NLSR
|
||||
; correctly. It is recommended not to set this
|
||||
; variable too high, because it could cause
|
||||
; congestion for NFD.
|
||||
|
||||
face-dataset-fetch-interval 3600 ; default is 3600. Valid values 1800-5400.
|
||||
; This controls how often (in seconds) NLSR will attempt to
|
||||
; fetch a FaceStatus dataset from NFD.
|
||||
|
||||
; neighbor command is used to configure router's neighbor. Each neighbor will need
|
||||
; one block of neighbor command
|
||||
|
||||
neighbor
|
||||
{
|
||||
name /ndn/edu/memphis/%C1.Router/cs/castor ; name prefix of the neighbor router consists
|
||||
; of network, site-name and router-name
|
||||
|
||||
face-uri udp://castor.cs.memphis.edu ; face uri of the face connected to the neighbor
|
||||
link-cost 25 ; cost of the connecting link to neighbor
|
||||
}
|
||||
|
||||
neighbor
|
||||
{
|
||||
name /ndn/edu/memphis/%C1.Router/cs/mira ; name prefix of the neighbor router consists
|
||||
; of network, site-name and router-name
|
||||
|
||||
face-uri udp://mira.cs.memphis.edu ; face uri of the face connected to the neighbor
|
||||
link-cost 30 ; cost of the connecting link to neighbor
|
||||
}
|
||||
}
|
||||
|
||||
; the hyperbolic section contains the configuration settings of enabling a router to calculate
|
||||
; routing table using [hyperbolic routing table calculation](http://arxiv.org/abs/0805.1266) method
|
||||
|
||||
hyperbolic
|
||||
{
|
||||
; commands in this section follows a strict order
|
||||
; the switch is used to set hyperbolic routing calculation in NLSR
|
||||
|
||||
state off ; default value 'off', set value 'on' to enable hyperbolic routing table
|
||||
; calculation which turns link state routing 'off'. set value to 'dry-run'
|
||||
; to test hyperbolic routing and compare with link state routing.
|
||||
|
||||
|
||||
radius 123.456 ; radius of the router in hyperbolic coordinate system
|
||||
angle 1.45,2.36 ; angle of the router in hyperbolic coordinate system
|
||||
}
|
||||
|
||||
|
||||
; the fib section is used to configure fib entrys type to ndn FIB updated by NLSR
|
||||
|
||||
fib
|
||||
{
|
||||
; the max-faces-per-prefix is used to limit the number of faces for each name prefixes
|
||||
; by NLSR in ndn FIB
|
||||
|
||||
max-faces-per-prefix 3 ; default value 0. Valid value 0-60. By default (value 0) NLSR adds
|
||||
; all available faces for each reachable name prefixes in NDN FIB
|
||||
|
||||
; routing-calc-interval is the time to wait in seconds after a routing table calculation is
|
||||
; scheduled before actually performing the routing table calculation
|
||||
|
||||
routing-calc-interval 15 ; default value 15. Valid values 0-15. It is recommended that
|
||||
; routing-calc-interval have a higher value than adj-lsa-build-interval
|
||||
}
|
||||
|
||||
; the advertising section contains the configuration settings of the name prefixes
|
||||
; hosted by this router
|
||||
|
||||
advertising
|
||||
{
|
||||
; the ndnname is used to advertised name from the router. To advertise each name prefix
|
||||
; configure one block of ndnname configuration command for every name prefix.
|
||||
|
||||
prefix /ndn/edu/memphis/cs/netlab ; name in ndn URI format
|
||||
prefix /ndn/edu/memphis/sports/basketball
|
||||
}
|
||||
|
||||
security
|
||||
{
|
||||
validator
|
||||
{
|
||||
rule
|
||||
{
|
||||
id "NLSR Hello Rule"
|
||||
for data
|
||||
filter
|
||||
{
|
||||
type name
|
||||
regex ^[^<NLSR><INFO>]*<NLSR><INFO><><>$
|
||||
}
|
||||
checker
|
||||
{
|
||||
type customized
|
||||
sig-type rsa-sha256
|
||||
key-locator
|
||||
{
|
||||
type name
|
||||
hyper-relation
|
||||
{
|
||||
k-regex ^([^<KEY><NLSR>]*)<NLSR><KEY><>$
|
||||
k-expand \\1
|
||||
h-relation equal
|
||||
p-regex ^([^<NLSR><INFO>]*)<NLSR><INFO><><>$
|
||||
p-expand \\1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rule
|
||||
{
|
||||
id "NLSR LSA Rule"
|
||||
for data
|
||||
filter
|
||||
{
|
||||
type name
|
||||
regex ^[^<NLSR><LSA>]*<NLSR><LSA>
|
||||
}
|
||||
checker
|
||||
{
|
||||
type customized
|
||||
sig-type rsa-sha256
|
||||
key-locator
|
||||
{
|
||||
type name
|
||||
hyper-relation
|
||||
{
|
||||
k-regex ^([^<KEY><NLSR>]*)<NLSR><KEY><>$
|
||||
k-expand \\1
|
||||
h-relation equal
|
||||
; the last four components in the prefix should be <lsaType><seqNo><version><segmentNo>
|
||||
p-regex ^<localhop>([^<NLSR><LSA>]*)<NLSR><LSA>(<>*)<><><><>$
|
||||
p-expand \\1\\2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rule
|
||||
{
|
||||
id "NLSR Hierarchy Exception Rule"
|
||||
for data
|
||||
filter
|
||||
{
|
||||
type name
|
||||
regex ^[^<KEY><%C1.Router>]*<%C1.Router>[^<KEY><NLSR>]*<KEY><><><>$
|
||||
}
|
||||
checker
|
||||
{
|
||||
type customized
|
||||
sig-type rsa-sha256
|
||||
key-locator
|
||||
{
|
||||
type name
|
||||
hyper-relation
|
||||
{
|
||||
k-regex ^([^<KEY><%C1.Operator>]*)<%C1.Operator>[^<KEY>]*<KEY><>$
|
||||
k-expand \\1
|
||||
h-relation equal
|
||||
p-regex ^([^<KEY><%C1.Router>]*)<%C1.Router>[^<KEY>]*<KEY><><><>$
|
||||
p-expand \\1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rule
|
||||
{
|
||||
id "NLSR Hierarchical Rule"
|
||||
for data
|
||||
filter
|
||||
{
|
||||
type name
|
||||
regex ^[^<KEY>]*<KEY><><><>$
|
||||
}
|
||||
checker
|
||||
{
|
||||
type hierarchical
|
||||
sig-type rsa-sha256
|
||||
}
|
||||
}
|
||||
|
||||
trust-anchor
|
||||
{
|
||||
type file
|
||||
file-name "root.cert"
|
||||
}
|
||||
}
|
||||
|
||||
prefix-update-validator
|
||||
{
|
||||
rule
|
||||
{
|
||||
id "NLSR ControlCommand Rule"
|
||||
for interest
|
||||
filter
|
||||
{
|
||||
type name
|
||||
; /<prefix>/<management-module>/<command-verb>/<control-parameters>
|
||||
; /<timestamp>/<random-value>/<signed-interests-components>
|
||||
regex ^<localhost><nlsr><prefix-update>[<advertise><withdraw>]<><><>$
|
||||
}
|
||||
checker
|
||||
{
|
||||
type customized
|
||||
sig-type rsa-sha256
|
||||
key-locator
|
||||
{
|
||||
type name
|
||||
regex ^([^<KEY><%C1.Operator>]*)<%C1.Operator>[^<KEY>]*<KEY><>$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rule
|
||||
{
|
||||
id "NLSR Hierarchy Rule"
|
||||
for data
|
||||
filter
|
||||
{
|
||||
type name
|
||||
regex ^[^<KEY>]*<KEY><><><>$
|
||||
}
|
||||
checker
|
||||
{
|
||||
type hierarchical
|
||||
sig-type rsa-sha256
|
||||
}
|
||||
}
|
||||
|
||||
trust-anchor
|
||||
{
|
||||
type file
|
||||
file-name "site.cert"
|
||||
}
|
||||
}
|
||||
|
||||
; cert-to-publish "root.cert" ; optional, a file containing the root certificate
|
||||
; Only the router that is designated to publish the root cert
|
||||
; needs to specify this
|
||||
|
||||
; cert-to-publish "site.cert" ; optional, a file containing the site certificate
|
||||
; Only the router that is designated to publish the site cert
|
||||
; needs to specify this
|
||||
|
||||
; cert-to-publish "operator.cert" ; optional, a file containing the operator certificate
|
||||
; Only the router that is designated to publish the operator
|
||||
; cert needs to specify this
|
||||
|
||||
cert-to-publish "router.cert" ; required, a file containing the router certificate.
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
\section{Name Prefix Table}
|
||||
\label{sec:npt}
|
||||
|
||||
\begin{figure}[!h]
|
||||
\center
|
||||
\includegraphics[width=0.8\linewidth]{npt.pdf}
|
||||
\begin{caption}
|
||||
A diagram of the NPT and Routing Table.
|
||||
|
||||
\begin{footnotesize}
|
||||
The ``wire'' arrows represent references (i.e. ``x has y''),
|
||||
whereas the ``solid'' arrows represent inheritance (i.e. ``y subclasses x''). \\
|
||||
The quantification (e.g. 0..*) is standard UML.
|
||||
\end{footnotesize}
|
||||
\end{caption}
|
||||
\label{fig:npt-class-diagram}
|
||||
\end{figure}
|
||||
|
||||
The Name Prefix Table (NPT) is used by NLSR to maintain a list of all known name prefixes advertised by other routers, including router names.
|
||||
The NPT maintains a collection of NPT entries, where each entry represents a name prefix and all of its associated routing table entries.
|
||||
Additionally, to optimize the storage and association of the routing table entries, the NPT also maintains a collection of duplicated routing table entries, called routing table pool entries, which have an additional use count attribute.
|
||||
The NPT entries keep shared pointers to the appropriate routing table pool entries.
|
||||
If a name prefix is advertised by multiple routers, the name prefix will be represented by only one Name Prefix Table Entry, but will have multiple routing table pool entries which correspond with each origin router.
|
||||
|
||||
If a Name LSA exists with some advertised name prefix, then that prefix must have an entry in the NPT. So, if two routers advertise the same name prefix, i.e. their name LSAs contain a common name prefix, even if one router withdraws that common name prefix, the entry must remain in the NPT, because the other router still advertises it.
|
||||
|
||||
If any type of LSA for a remote router exists in the LSDB, the remote router's name prefix must be in the NPT.
|
||||
An NPT Entry for a router name can only be removed when there are no more LSAs in the LSDB from the origin router. Note, even if some NPT entry nas no next hops, it will \emph{not} be removed from the NPT; it may later become possible to route to this prefix. These prefixes will be removed from the FIB, however.
|
||||
|
||||
\subsection{Adding an NPT Entry}
|
||||
\label{sec:npt-add}
|
||||
The \texttt{NamePrefixTable::addEntry()} method is the public
|
||||
interface for name prefixes to be added to the NPT.
|
||||
The name prefix as well as the router's prefix which originates the
|
||||
name prefix are passed as parameters to the method.
|
||||
|
||||
If the name prefix is new, there will be no NPT entry for it, so one
|
||||
will be created. If the name prefix is not new, the existing entry
|
||||
will be updated, so the existing entry will also store this new origin
|
||||
router's prefix, too. If after updating, the NPT entry has any next
|
||||
hops, which are associated to each of the origin router prefixes, the
|
||||
NPT will update the FIB to include that prefix and its next hops. The
|
||||
next hop list is sorted and truncated to be only as long as the
|
||||
\texttt{max-faces-per-prefix} variable.
|
||||
n
|
||||
\subsection{Removing an NPT Entry}
|
||||
\label{sec:npt-del}
|
||||
The \texttt{NamePrefixTable::removeEntry()} method is the public
|
||||
interface for name prefixes to be removed from the NPT.
|
||||
The name prefix as well as the router's prefix which originates the
|
||||
name prefix are passed as parameters to the interface.
|
||||
|
||||
This method removes an origin router prefix from some advertised name
|
||||
prefix. After this, there may be other origin routers that serve this
|
||||
name prefix, so this does not guarantee that the NPT entry will be
|
||||
deleted. If after updating the entry has any next hops, the NPT will
|
||||
update the FIB to reflect the change. Since the next hop list is
|
||||
sorted by ascending cost and its length truncated to
|
||||
\texttt{max-faces-per-prefix}, the contents of next hop list will not
|
||||
change if the removed origin router prefix was not already in the list
|
||||
passed to the FIB.
|
||||
|
||||
Note that even if the entry no longer has any next hops, it will be retained. All FIB entries for this prefix will be removed from the FIB, which will result in unregistrations from NFD, but the NPT entry will be retained. This is because it may become possible later to route to these origin routers again.
|
||||
|
||||
\subsection{Updating an NPT Entry with New Routing Table Entries}
|
||||
\label{sec:npt-update-with-new-route}
|
||||
When the Routing Table module has finished calculating, it will notify
|
||||
the NPT using the \texttt{NamePrefixTable::updateWithNewRoute()}
|
||||
method.
|
||||
The NPT will then make approximately $m \times n$ calls to
|
||||
\texttt{addEntry}, where $m$ is the number of NPT entries and $n$ is
|
||||
the number of origin routers for each m. That is, $n$ will vary from
|
||||
one NPT entry to the next in most cases.
|
||||
|
||||
\subsection{Routing Table Entry Pool}
|
||||
The Name Prefix Table has an internal data structure to help
|
||||
de-duplicate Routing Table information. Without this, each Routing
|
||||
Table entry has to be stored $n$ times, if $n$ is the number of
|
||||
prefixes that origin router advertises. Instead, each time a Routing
|
||||
Table entry would be fetched, the NPT first checks its internal data
|
||||
structure to see if that Routing Table entry is being used by another
|
||||
NPT entry. In that case those two NPT entries can share a pointer to
|
||||
that cached copy of the Routing Table entry.
|
||||
|
||||
This internal cache is smart, and will clean up from the cache unused
|
||||
entries when they are removed from the last NPT entry.
|
||||
@@ -1,20 +0,0 @@
|
||||
\section{Prefix Update Processor}
|
||||
\label{sec:prefix-update}
|
||||
|
||||
The Prefix Update processor allows manipulation of NLSR's advertised
|
||||
name prefixes with ordinary ControlCommands. Such commands may
|
||||
originate from something like \texttt{nlsrc}, the command line tool
|
||||
for manipulating NLSR.
|
||||
|
||||
\subsection{Advertising and Withdrawing Routes}
|
||||
The processor accepts valid ControlCommands that are signed by the site operator's key. Additionally, the commands must be received on the \texttt{/localhost/nlsr/prefix-update/} prefix. The full condition list is specified in the validator rules in the configuration file.
|
||||
|
||||
The processor will send responses to commands.
|
||||
|
||||
\subsection{Security}
|
||||
Prefix Update commands are similar to NFD RIB commands, but with one
|
||||
additional requirement, so they are more secure. In addition to being
|
||||
on the root-only \texttt{/localhost/} prefix, Prefix Update commands
|
||||
must be signed by the site operator's key. If the site operator's key
|
||||
were compromised, an attacker could create any number of NLSRs that
|
||||
impersonate the legitimate NLSR running at that site.
|
||||
@@ -1,2 +0,0 @@
|
||||
\section{Dataset Publishers}
|
||||
\label{sec:publishers}
|
||||
@@ -1,31 +0,0 @@
|
||||
\section{Routing Table}
|
||||
\label{sec:routing-table}
|
||||
|
||||
The Routing Table module performs three main tasks: it performs the routing table calculations using a \texttt{RoutingTableCalculator} (Section~\ref{sec:routing-table-calculator}),
|
||||
it stores the calculated routing table entries in a table, and notifies the Name Prefix Table module (Section~\ref{sec:npt}) when there are changes to the calculated next hops.
|
||||
|
||||
\subsection{Routing Table Calculators}
|
||||
\label{sec:routing-table-calculator}
|
||||
|
||||
The \texttt{RoutingTableCalculator} is a base class that provides functionality common to both link-state and hyperbolic routing.
|
||||
The Routing Table module uses the implementation class specific to the type of routing currently enabled.
|
||||
|
||||
\subsubsection{Link-State Routing Table Calculator}
|
||||
|
||||
The \texttt{LinkStateRoutingTableCalculator} class calculates the routing table uses Dijkstra's algorithm to calculate the shortest paths in the network.
|
||||
When \texttt{max-faces-per-prefix} is set to one, the \texttt{LinkStateRoutingTableCalculator} can simply run Dijkstra's algorithm.
|
||||
When \texttt{max-faces-per-prefix} is greater than one, indicating multi-path calculation, the \\ \texttt{LinkStateRoutingTableCalculator} will iteratively perform Dijkstra's using only a single neighbor link as a next hop.
|
||||
The calculation will be performed using each neighbor in order to learn the path costs for each destination through each next hop.
|
||||
|
||||
\subsubsection{Hyperbolic Routing Table Calculator}
|
||||
|
||||
The \texttt{HyperbolicRoutingCalculator} class calculates the routing table using the Coordinate LSAs received from each router in the network to determine the cost from each of its neighbors to every other router in the network.
|
||||
The \texttt{HyperbolicRoutingCalculator} iterates through each of the router's neighbors calculating the hyperbolic distance from the neighbor to every other router in the network (excluding itself and the neighbor router).
|
||||
The \texttt{HyperbolicRoutingCalculator} then uses these calculated distances to add routing table entries to the destination with the neighbor as the next hop.
|
||||
The \texttt{HyperbolicRoutingCalculator} also adds a routing table entry to reach the neighbor itself; a routing table entry using the neighbor as a next hop to the neighbor with a cost of zero is added.
|
||||
|
||||
\subsection{Notifications for Newly Calculated Next Hops}
|
||||
|
||||
Once the Routing Table Module has finished calculating the routing table, it will update all of the Name Prefix Table's next hops.
|
||||
The Name Prefix Table Module will then update the next hops for each name prefix based on the newly calculated routing table.
|
||||
This process is described in more detail in Section~\ref{sec:npt-update-with-new-route}.
|
||||
@@ -1,77 +0,0 @@
|
||||
\section{Security}
|
||||
\label{sec:security}
|
||||
|
||||
The trust model of NLSR is semi-hierarchical. An example certificate signing hierarchy is show in Figure~\ref{fig:trust}.
|
||||
In this hierarchy, each entity's name and corresponding certificate name follow the convention described in Table~\ref{table:kname}.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=0.5\linewidth]{figures/trust-hierarchy.eps}
|
||||
\caption{NLSR Trust Hierarchy}
|
||||
\label{fig:trust}
|
||||
%\vspace{-3mm}
|
||||
\end{figure}
|
||||
|
||||
\begin{table}
|
||||
\centering
|
||||
\caption{Key Names}
|
||||
\small
|
||||
\begin{tabular}{|l|l|}
|
||||
\hline
|
||||
\bfseries {Key Owner} & \bfseries {Key Name}\\ \hline
|
||||
Network & /$<$network$>$/KEY/$<$key$>$\\ \hline
|
||||
Site & /$<$network$>$/$<$site$>$/KEY/$<$key$>$\\ \hline
|
||||
Operator & /$<$network$>$/$<$site$>$/$<$operator$>$/KEY/$<$key$>$\\\hline
|
||||
Router & /$<$network$>$/$<$site$>$/$<$router$>$/KEY/$<$key$>$\\\hline
|
||||
NLSR & /$<$network$>$/$<$site$>$/$<$router$>$/NLSR/KEY/$<$key$>$\\\hline
|
||||
\end{tabular}
|
||||
\label{table:kname}
|
||||
\vspace{-3mm}
|
||||
\end{table}
|
||||
|
||||
\subsection{Creating Keys and Certificates}
|
||||
|
||||
The process to create keys and certificates for this hierarchy can be performed using the \texttt{ndnsec}~\cite{ndnsec} tools included with \texttt{ndn-cxx}~\cite{NDNCXX}.
|
||||
The steps to create the keys and certificates is outlined below:
|
||||
|
||||
\begin{enumerate}
|
||||
\item Create keys for Root: \\ \texttt{ndnsec-keygen \$ROOT\_NAME > \$ROOT\_KEY\_OUTPUT\_FILE}
|
||||
\item Create certificate for Root: \\ \texttt{ndnsec-certgen -N \$ROOT\_NAME -p \$ROOT\_NAME \$ROOT\_KEY\_OUTPUT\_FILE > \$ROOT\_CERT\_OUTPUT\_FILE}
|
||||
\item For each site, create keys and certificates:
|
||||
\begin{enumerate}
|
||||
\item On the Site machine, generate keys for the Site: \\ \texttt{ndnsec-keygen \$SITE\_NAME > \$SITE\_KEY\_OUTPUT\_FILE}
|
||||
\item Copy \texttt{\$SITE\_KEY\_OUTPUT\_FILE} over to the machine where the Root certificate was created.
|
||||
\item Generate a certificate for the Site on the Root machine: \\ \texttt{ndnsec-certgen -N \$SITE\_NAME -p \$SITE\_NAME -s \$ROOT\_NAME \$SITE\_KEY\_OUTPUT\_FILE > \$SITE\_CERT\_OUTPUT\_FILE}
|
||||
\item Copy \texttt{\$SITE\_CERT\_OUTPUT\_FILE} over to the Site machine.
|
||||
\item Install the certificate on the Site machine: \\ \texttt{ndnsec-cert-install -f \$SITE\_CERT\_OUTPUT\_FILE}
|
||||
\item On the Site machine, create the Operator keys: \\ \texttt{ndnsec-keygen \$OP\_NAME > \$OP\_KEY\_OUTPUT\_FILE}
|
||||
\item On the Site machine, create the Operator certificate: \\ \texttt{ndnsec-certgen -N \$OP\_NAME -p \$OP\_NAME -s \$SITE\_NAME \$OP\_KEY\_OUTPUT\_FILE > \$OP\_CERT\_OUTPUT\_FILE}
|
||||
\item On the Site machine, create the Router keys: \\ \texttt{ndnsec-keygen \$ROUTER\_NAME > \$ROUTER\_KEY\_OUTPUT\_FILE}
|
||||
\item On the Site machine, create the Router certificate: \\ \begin{small}\texttt{ndnsec-certgen -N \$ROUTER\_NAME -p \$ROUTER\_NAME -s \$OP\_NAME \$ROUTER\_KEY\_OUTPUT\_FILE > \$ROUTER\_CERT\_OUTPUT\_FILE}\end{small}
|
||||
\end{enumerate}
|
||||
\item When NLSR starts, it will automatically create the NLSR keys and certificates for the router.
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Certificate Publishing}
|
||||
|
||||
In a network, every router must have the root certificate configured as a trust anchor for the \texttt{validator} in the configuration file. If two routers in a network do not share a common trust anchor, then when one seeks to validate the data of the other, they may be unable to establish trust in their signature. This is, of course, because of how the trust hierarchy is set up: you trust the person that signed some router's certificate, because it was signed by the site certificate, and the site certificate was signed by the region, etc., and the $nth$ certificate was signed by the root certificate, which is your trust anchor, so you ``just trust it''. Moreover, if your trust anchor is \emph{before} their trust anchor in the ``chain'', then they will be able to trust you, but you will not be able to trust them.
|
||||
|
||||
For each site, at least one router should publish the site certificate, and at least one router should publish the certificate of the site operator.
|
||||
Each router should publish its own certificate. This is a matter of performance; a network would work if all certificates for all nodes were kept centrally, but distributing the certificates in this way improves performance.
|
||||
All this information must be explicitly specified in the configuration file.
|
||||
|
||||
For example, the following configuration file indicates that NLSR should publish the site certificate and the router certificate:
|
||||
|
||||
\begin{verbatim}
|
||||
...
|
||||
security
|
||||
{
|
||||
validator
|
||||
{
|
||||
...
|
||||
}
|
||||
cert-to-publish "$SITE_CERT_OUTPUT_FILE" ; name of the site certificate file
|
||||
cert-to-publish "$SITE_CERT_OUTPUT_FILE" ; name of the router certificate file
|
||||
...
|
||||
}
|
||||
\end{verbatim}
|
||||
@@ -1,2 +0,0 @@
|
||||
\section{Sequencing Manager}
|
||||
\label{sec:sequencing-manager}
|
||||
@@ -0,0 +1,269 @@
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/**
|
||||
* Copyright (c) 2014-2018, The University of Memphis,
|
||||
* Regents of the University of California,
|
||||
* Arizona Board of Regents.
|
||||
*
|
||||
* This file is part of NLSR (Named-data Link State Routing).
|
||||
* See AUTHORS.md for complete list of NLSR authors and contributors.
|
||||
*
|
||||
* NLSR is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Foundation,
|
||||
* either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
**/
|
||||
|
||||
#include "adjacency-list.hpp"
|
||||
|
||||
#include "adjacent.hpp"
|
||||
#include "common.hpp"
|
||||
#include "logger.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
namespace nlsr {
|
||||
|
||||
INIT_LOGGER(AdjacencyList);
|
||||
|
||||
AdjacencyList::AdjacencyList()
|
||||
{
|
||||
}
|
||||
|
||||
AdjacencyList::~AdjacencyList()
|
||||
{
|
||||
}
|
||||
|
||||
int32_t
|
||||
AdjacencyList::insert(Adjacent& adjacent)
|
||||
{
|
||||
std::list<Adjacent>::iterator it = find(adjacent.getName());
|
||||
if (it != m_adjList.end()) {
|
||||
return -1;
|
||||
}
|
||||
m_adjList.push_back(adjacent);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
AdjacencyList::addAdjacents(AdjacencyList& adl)
|
||||
{
|
||||
for (std::list<Adjacent>::iterator it = adl.getAdjList().begin();
|
||||
it != adl.getAdjList().end(); ++it) {
|
||||
insert((*it));
|
||||
}
|
||||
}
|
||||
|
||||
Adjacent
|
||||
AdjacencyList::getAdjacent(const ndn::Name& adjName)
|
||||
{
|
||||
Adjacent adj(adjName);
|
||||
std::list<Adjacent>::iterator it = find(adjName);
|
||||
if (it != m_adjList.end()) {
|
||||
return (*it);
|
||||
}
|
||||
return adj;
|
||||
}
|
||||
|
||||
bool
|
||||
AdjacencyList::operator==(const AdjacencyList& adl) const
|
||||
{
|
||||
if (m_adjList.size() != adl.getAdjList().size()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
std::set<Adjacent> ourList(m_adjList.cbegin(), m_adjList.cend());
|
||||
std::set<Adjacent> theirList(adl.getAdjList().cbegin(), adl.getAdjList().cend());
|
||||
|
||||
return ourList == theirList;
|
||||
}
|
||||
|
||||
bool
|
||||
AdjacencyList::isNeighbor(const ndn::Name& adjName) const
|
||||
{
|
||||
std::list<Adjacent>::const_iterator it = find(adjName);
|
||||
if (it == m_adjList.end())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
AdjacencyList::incrementTimedOutInterestCount(const ndn::Name& neighbor)
|
||||
{
|
||||
std::list<Adjacent>::iterator it = find(neighbor);
|
||||
if (it == m_adjList.end()) {
|
||||
return ;
|
||||
}
|
||||
(*it).setInterestTimedOutNo((*it).getInterestTimedOutNo() + 1);
|
||||
}
|
||||
|
||||
void
|
||||
AdjacencyList::setTimedOutInterestCount(const ndn::Name& neighbor,
|
||||
uint32_t count)
|
||||
{
|
||||
std::list<Adjacent>::iterator it = find(neighbor);
|
||||
if (it != m_adjList.end()) {
|
||||
(*it).setInterestTimedOutNo(count);
|
||||
}
|
||||
}
|
||||
|
||||
int32_t
|
||||
AdjacencyList::getTimedOutInterestCount(const ndn::Name& neighbor) const
|
||||
{
|
||||
std::list<Adjacent>::const_iterator it = find(neighbor);
|
||||
if (it == m_adjList.end()) {
|
||||
return -1;
|
||||
}
|
||||
return (*it).getInterestTimedOutNo();
|
||||
}
|
||||
|
||||
Adjacent::Status
|
||||
AdjacencyList::getStatusOfNeighbor(const ndn::Name& neighbor) const
|
||||
{
|
||||
std::list<Adjacent>::const_iterator it = find(neighbor);
|
||||
|
||||
if (it == m_adjList.end()) {
|
||||
return Adjacent::STATUS_UNKNOWN;
|
||||
}
|
||||
else {
|
||||
return it->getStatus();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
AdjacencyList::setStatusOfNeighbor(const ndn::Name& neighbor, Adjacent::Status status)
|
||||
{
|
||||
std::list<Adjacent>::iterator it = find(neighbor);
|
||||
if (it != m_adjList.end()) {
|
||||
it->setStatus(status);
|
||||
}
|
||||
}
|
||||
|
||||
std::list<Adjacent>&
|
||||
AdjacencyList::getAdjList()
|
||||
{
|
||||
return m_adjList;
|
||||
}
|
||||
|
||||
const std::list<Adjacent>&
|
||||
AdjacencyList::getAdjList() const
|
||||
{
|
||||
return m_adjList;
|
||||
}
|
||||
|
||||
bool
|
||||
AdjacencyList::isAdjLsaBuildable(const uint32_t interestRetryNo) const
|
||||
{
|
||||
uint32_t nTimedOutNeighbors = 0;
|
||||
|
||||
for (const Adjacent& adjacency : m_adjList) {
|
||||
|
||||
if (adjacency.getStatus() == Adjacent::STATUS_ACTIVE) {
|
||||
return true;
|
||||
}
|
||||
else if (adjacency.getInterestTimedOutNo() >= interestRetryNo) {
|
||||
nTimedOutNeighbors++;
|
||||
}
|
||||
}
|
||||
|
||||
if (nTimedOutNeighbors == m_adjList.size()) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
int32_t
|
||||
AdjacencyList::getNumOfActiveNeighbor() const
|
||||
{
|
||||
int32_t actNbrCount = 0;
|
||||
for (std::list<Adjacent>::const_iterator it = m_adjList.begin(); it != m_adjList.end(); it++) {
|
||||
|
||||
if (it->getStatus() == Adjacent::STATUS_ACTIVE) {
|
||||
actNbrCount++;
|
||||
}
|
||||
}
|
||||
return actNbrCount;
|
||||
}
|
||||
|
||||
std::list<Adjacent>::iterator
|
||||
AdjacencyList::find(const ndn::Name& adjName)
|
||||
{
|
||||
std::list<Adjacent>::iterator it = std::find_if(m_adjList.begin(),
|
||||
m_adjList.end(),
|
||||
std::bind(&Adjacent::compare,
|
||||
_1, std::cref(adjName)));
|
||||
return it;
|
||||
}
|
||||
|
||||
std::list<Adjacent>::const_iterator
|
||||
AdjacencyList::find(const ndn::Name& adjName) const
|
||||
{
|
||||
std::list<Adjacent>::const_iterator it = std::find_if(m_adjList.cbegin(),
|
||||
m_adjList.cend(),
|
||||
std::bind(&Adjacent::compare,
|
||||
_1, std::cref(adjName)));
|
||||
return it;
|
||||
}
|
||||
|
||||
|
||||
AdjacencyList::iterator
|
||||
AdjacencyList::findAdjacent(const ndn::Name& adjName)
|
||||
{
|
||||
return std::find_if(m_adjList.begin(),
|
||||
m_adjList.end(),
|
||||
std::bind(&Adjacent::compare,
|
||||
_1, std::cref(adjName)));
|
||||
}
|
||||
|
||||
AdjacencyList::iterator
|
||||
AdjacencyList::findAdjacent(uint64_t faceId)
|
||||
{
|
||||
return std::find_if(m_adjList.begin(),
|
||||
m_adjList.end(),
|
||||
std::bind(&Adjacent::compareFaceId,
|
||||
_1, faceId));
|
||||
}
|
||||
|
||||
AdjacencyList::iterator
|
||||
AdjacencyList::findAdjacent(const ndn::FaceUri& faceUri)
|
||||
{
|
||||
return std::find_if(m_adjList.begin(),
|
||||
m_adjList.end(),
|
||||
std::bind(&Adjacent::compareFaceUri,
|
||||
_1, faceUri));
|
||||
}
|
||||
|
||||
uint64_t
|
||||
AdjacencyList::getFaceId(const ndn::FaceUri& faceUri)
|
||||
{
|
||||
std::list<Adjacent>::iterator it = std::find_if(m_adjList.begin(),
|
||||
m_adjList.end(),
|
||||
std::bind(&Adjacent::compareFaceUri,
|
||||
_1, faceUri));
|
||||
if (it != m_adjList.end()) {
|
||||
return it->getFaceId();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
AdjacencyList::writeLog()
|
||||
{
|
||||
NLSR_LOG_DEBUG("-------Adjacency List--------");
|
||||
for (std::list<Adjacent>::iterator it = m_adjList.begin();
|
||||
it != m_adjList.end(); it++) {
|
||||
(*it).writeLog();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace nlsr
|
||||
@@ -0,0 +1,183 @@
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/**
|
||||
* Copyright (c) 2014-2018, The University of Memphis,
|
||||
* Regents of the University of California,
|
||||
* Arizona Board of Regents.
|
||||
*
|
||||
* This file is part of NLSR (Named-data Link State Routing).
|
||||
* See AUTHORS.md for complete list of NLSR authors and contributors.
|
||||
*
|
||||
* NLSR is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Foundation,
|
||||
* either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
**/
|
||||
|
||||
#ifndef NLSR_ADJACENCY_LIST_HPP
|
||||
#define NLSR_ADJACENCY_LIST_HPP
|
||||
|
||||
#include "adjacent.hpp"
|
||||
#include "common.hpp"
|
||||
|
||||
#include <list>
|
||||
#include <boost/cstdint.hpp>
|
||||
|
||||
namespace nlsr {
|
||||
|
||||
class AdjacencyList
|
||||
{
|
||||
public:
|
||||
typedef std::list<Adjacent>::const_iterator const_iterator;
|
||||
typedef std::list<Adjacent>::iterator iterator;
|
||||
|
||||
AdjacencyList();
|
||||
~AdjacencyList();
|
||||
|
||||
/*! \brief Inserts an adjacency into the list.
|
||||
|
||||
\param adjacent The adjacency that we want to add to this list.
|
||||
|
||||
\retval 0 Indicates success.
|
||||
\retval 1 Indicates failure.
|
||||
|
||||
This function attempts to insert the supplied adjacency into this
|
||||
object, which is an adjacency list.
|
||||
*/
|
||||
int32_t
|
||||
insert(Adjacent& adjacent);
|
||||
|
||||
std::list<Adjacent>&
|
||||
getAdjList();
|
||||
|
||||
const std::list<Adjacent>&
|
||||
getAdjList() const;
|
||||
|
||||
bool
|
||||
isNeighbor(const ndn::Name& adjName) const;
|
||||
|
||||
void
|
||||
incrementTimedOutInterestCount(const ndn::Name& neighbor);
|
||||
|
||||
int32_t
|
||||
getTimedOutInterestCount(const ndn::Name& neighbor) const;
|
||||
|
||||
Adjacent::Status
|
||||
getStatusOfNeighbor(const ndn::Name& neighbor) const;
|
||||
|
||||
void
|
||||
setStatusOfNeighbor(const ndn::Name& neighbor, Adjacent::Status status);
|
||||
|
||||
void
|
||||
setTimedOutInterestCount(const ndn::Name& neighbor, uint32_t count);
|
||||
|
||||
/*! \brief Copies the adjacencies in a list to this one.
|
||||
|
||||
\param adl The adjacency list, the entries of which we want to
|
||||
copy into this object.
|
||||
|
||||
Copies the entries contained in one list into this object.
|
||||
*/
|
||||
void
|
||||
addAdjacents(AdjacencyList& adl);
|
||||
|
||||
/*! \brief Determines whether this list can be used to build an adj. LSA.
|
||||
\param interestRetryNo The maximum number of hello-interest
|
||||
retries to contact a neighbor.
|
||||
|
||||
\return Returns a boolean indicating whether this list can be used
|
||||
to build an adj. LSA.
|
||||
|
||||
Determines whether this adjacency list object could be used to
|
||||
build an adjacency LSA. An LSA is buildable when the status of all
|
||||
neighbors is known. A neighbor's status is known when their status
|
||||
is ACTIVE, or INACTIVE and some number of hello interests
|
||||
(specified by nlsr::ConfParameter::getInterestRetryNumber()) have
|
||||
failed. To be explicit, a neighbor's status is unknown if we are
|
||||
still sending hello interests.
|
||||
*/
|
||||
bool
|
||||
isAdjLsaBuildable(const uint32_t interestRetryNo) const;
|
||||
|
||||
int32_t
|
||||
getNumOfActiveNeighbor() const;
|
||||
|
||||
Adjacent
|
||||
getAdjacent(const ndn::Name& adjName);
|
||||
|
||||
bool
|
||||
operator==(const AdjacencyList& adl) const;
|
||||
|
||||
size_t
|
||||
size() const
|
||||
{
|
||||
return m_adjList.size();
|
||||
}
|
||||
|
||||
void
|
||||
reset()
|
||||
{
|
||||
if (m_adjList.size() > 0) {
|
||||
m_adjList.clear();
|
||||
}
|
||||
}
|
||||
|
||||
AdjacencyList::iterator
|
||||
findAdjacent(const ndn::Name& adjName);
|
||||
|
||||
AdjacencyList::iterator
|
||||
findAdjacent(uint64_t faceId);
|
||||
|
||||
AdjacencyList::iterator
|
||||
findAdjacent(const ndn::FaceUri& faceUri);
|
||||
|
||||
/*! \brief Hack to stop developers from using this function
|
||||
|
||||
It is here so that faceUri cannot be passed in as string,
|
||||
converted to Name and findAdjacent(Name) be used.
|
||||
So when faceUri is passed as string this will cause a compile error
|
||||
*/
|
||||
template <typename T = float> void
|
||||
findAdjacent(const std::string& faceUri)
|
||||
{
|
||||
BOOST_STATIC_ASSERT_MSG(std::is_integral<T>::value,
|
||||
"Don't use std::string with findAdjacent!");
|
||||
}
|
||||
|
||||
uint64_t
|
||||
getFaceId(const ndn::FaceUri& faceUri);
|
||||
|
||||
void
|
||||
writeLog();
|
||||
|
||||
public:
|
||||
const_iterator
|
||||
begin() const
|
||||
{
|
||||
return m_adjList.begin();
|
||||
}
|
||||
|
||||
const_iterator
|
||||
end() const
|
||||
{
|
||||
return m_adjList.end();
|
||||
}
|
||||
|
||||
private:
|
||||
iterator
|
||||
find(const ndn::Name& adjName);
|
||||
|
||||
const_iterator
|
||||
find(const ndn::Name& adjName) const;
|
||||
|
||||
private:
|
||||
std::list<Adjacent> m_adjList;
|
||||
};
|
||||
|
||||
} // namespace nlsr
|
||||
#endif // NLSR_ADJACENCY_LIST_HPP
|
||||
@@ -0,0 +1,97 @@
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/**
|
||||
* Copyright (c) 2014-2018, The University of Memphis,
|
||||
* Regents of the University of California
|
||||
*
|
||||
* This file is part of NLSR (Named-data Link State Routing).
|
||||
* See AUTHORS.md for complete list of NLSR authors and contributors.
|
||||
*
|
||||
* NLSR is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Foundation,
|
||||
* either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
**/
|
||||
|
||||
#include "adjacent.hpp"
|
||||
#include "logger.hpp"
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
|
||||
namespace nlsr {
|
||||
|
||||
INIT_LOGGER(Adjacent);
|
||||
|
||||
const float Adjacent::DEFAULT_LINK_COST = 10.0;
|
||||
|
||||
Adjacent::Adjacent()
|
||||
: m_name()
|
||||
, m_faceUri()
|
||||
, m_linkCost(DEFAULT_LINK_COST)
|
||||
, m_status(STATUS_INACTIVE)
|
||||
, m_interestTimedOutNo(0)
|
||||
, m_faceId(0)
|
||||
{
|
||||
}
|
||||
|
||||
Adjacent::Adjacent(const ndn::Name& an)
|
||||
: m_name(an)
|
||||
, m_faceUri()
|
||||
, m_linkCost(DEFAULT_LINK_COST)
|
||||
, m_status(STATUS_INACTIVE)
|
||||
, m_interestTimedOutNo(0)
|
||||
, m_faceId(0)
|
||||
{
|
||||
}
|
||||
|
||||
Adjacent::Adjacent(const ndn::Name& an, const ndn::FaceUri& faceUri, double lc,
|
||||
Status s, uint32_t iton, uint64_t faceId)
|
||||
: m_name(an)
|
||||
, m_faceUri(faceUri)
|
||||
, m_linkCost(lc)
|
||||
, m_status(s)
|
||||
, m_interestTimedOutNo(iton)
|
||||
, m_faceId(faceId)
|
||||
{
|
||||
}
|
||||
|
||||
bool
|
||||
Adjacent::operator==(const Adjacent& adjacent) const
|
||||
{
|
||||
return (m_name == adjacent.getName()) &&
|
||||
(m_faceUri == adjacent.getFaceUri()) &&
|
||||
(std::abs(m_linkCost - adjacent.getLinkCost()) <
|
||||
std::numeric_limits<double>::epsilon());
|
||||
}
|
||||
|
||||
bool
|
||||
Adjacent::operator<(const Adjacent& adjacent) const
|
||||
{
|
||||
return (m_name < adjacent.getName()) ||
|
||||
(m_linkCost < adjacent.getLinkCost());
|
||||
}
|
||||
|
||||
std::ostream&
|
||||
operator<<(std::ostream& os, const Adjacent& adjacent)
|
||||
{
|
||||
os << "Adjacent: " << adjacent.m_name << "\n Connecting FaceUri: " << adjacent.m_faceUri
|
||||
<< "\n Link cost: " << adjacent.m_linkCost << "\n Status: " << adjacent.m_status
|
||||
<< "\n Interest Timed Out: " << adjacent.m_interestTimedOutNo << std::endl;
|
||||
return os;
|
||||
}
|
||||
|
||||
void
|
||||
Adjacent::writeLog()
|
||||
{
|
||||
NLSR_LOG_DEBUG(*this);
|
||||
}
|
||||
|
||||
} // namespace nlsr
|
||||
@@ -0,0 +1,190 @@
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/**
|
||||
* Copyright (c) 2014-2018, The University of Memphis,
|
||||
* Regents of the University of California
|
||||
*
|
||||
* This file is part of NLSR (Named-data Link State Routing).
|
||||
* See AUTHORS.md for complete list of NLSR authors and contributors.
|
||||
*
|
||||
* NLSR is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Foundation,
|
||||
* either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
**/
|
||||
|
||||
#include <string>
|
||||
#include <cmath>
|
||||
#include <boost/cstdint.hpp>
|
||||
|
||||
#include <ndn-cxx/face.hpp>
|
||||
#include <ndn-cxx/net/face-uri.hpp>
|
||||
|
||||
#ifndef NLSR_ADJACENT_HPP
|
||||
#define NLSR_ADJACENT_HPP
|
||||
|
||||
namespace nlsr {
|
||||
|
||||
/*! \brief A neighbor reachable over a Face.
|
||||
*
|
||||
* Represents another node that we expect to be running NLSR that we
|
||||
* should be able to reach over a direct Face connection.
|
||||
*/
|
||||
class Adjacent
|
||||
{
|
||||
|
||||
public:
|
||||
enum Status
|
||||
{
|
||||
STATUS_UNKNOWN = -1,
|
||||
STATUS_INACTIVE = 0,
|
||||
STATUS_ACTIVE = 1
|
||||
};
|
||||
|
||||
Adjacent();
|
||||
|
||||
Adjacent(const ndn::Name& an);
|
||||
|
||||
Adjacent(const ndn::Name& an, const ndn::FaceUri& faceUri, double lc,
|
||||
Status s, uint32_t iton, uint64_t faceId);
|
||||
|
||||
const ndn::Name&
|
||||
getName() const
|
||||
{
|
||||
return m_name;
|
||||
}
|
||||
|
||||
void
|
||||
setName(const ndn::Name& an)
|
||||
{
|
||||
m_name = an;
|
||||
}
|
||||
|
||||
const ndn::FaceUri&
|
||||
getFaceUri() const
|
||||
{
|
||||
return m_faceUri;
|
||||
}
|
||||
|
||||
void
|
||||
setFaceUri(const ndn::FaceUri& faceUri)
|
||||
{
|
||||
m_faceUri = faceUri;
|
||||
}
|
||||
|
||||
uint64_t
|
||||
getLinkCost() const
|
||||
{
|
||||
uint64_t linkCost = static_cast<uint64_t>(ceil(m_linkCost));
|
||||
return linkCost;
|
||||
}
|
||||
|
||||
void
|
||||
setLinkCost(double lc)
|
||||
{
|
||||
m_linkCost = lc;
|
||||
}
|
||||
|
||||
Status
|
||||
getStatus() const
|
||||
{
|
||||
return m_status;
|
||||
}
|
||||
|
||||
void
|
||||
setStatus(Status s)
|
||||
{
|
||||
m_status = s;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
getInterestTimedOutNo() const
|
||||
{
|
||||
return m_interestTimedOutNo;
|
||||
}
|
||||
|
||||
void
|
||||
setInterestTimedOutNo(uint32_t iton)
|
||||
{
|
||||
m_interestTimedOutNo = iton;
|
||||
}
|
||||
|
||||
void
|
||||
setFaceId(uint64_t faceId)
|
||||
{
|
||||
m_faceId = faceId;
|
||||
}
|
||||
|
||||
uint64_t
|
||||
getFaceId() const
|
||||
{
|
||||
return m_faceId;
|
||||
}
|
||||
|
||||
/*! \brief Equality is when name, Face URI, and link cost are all equal. */
|
||||
bool
|
||||
operator==(const Adjacent& adjacent) const;
|
||||
|
||||
bool
|
||||
operator!=(const Adjacent& adjacent) const
|
||||
{
|
||||
return !(*this == adjacent);
|
||||
}
|
||||
|
||||
bool
|
||||
operator<(const Adjacent& adjacent) const;
|
||||
|
||||
inline bool
|
||||
compare(const ndn::Name& adjacencyName) const
|
||||
{
|
||||
return m_name == adjacencyName;
|
||||
}
|
||||
|
||||
inline bool
|
||||
compareFaceId(const uint64_t faceId) const
|
||||
{
|
||||
return m_faceId == faceId;
|
||||
}
|
||||
|
||||
inline bool
|
||||
compareFaceUri(const ndn::FaceUri& faceUri) const
|
||||
{
|
||||
return m_faceUri == faceUri;
|
||||
}
|
||||
|
||||
void
|
||||
writeLog();
|
||||
|
||||
public:
|
||||
static const float DEFAULT_LINK_COST;
|
||||
|
||||
private:
|
||||
/*! m_name The NLSR-configured router name of the neighbor */
|
||||
ndn::Name m_name;
|
||||
/*! m_faceUri The NFD-level specification of the Face*/
|
||||
ndn::FaceUri m_faceUri;
|
||||
/*! m_linkCost The semi-arbitrary cost to traverse the link. */
|
||||
double m_linkCost;
|
||||
/*! m_status Whether the neighbor is active or not */
|
||||
Status m_status;
|
||||
/*! m_interestTimedOutNo How many failed Hello interests we have sent since the last reply */
|
||||
uint32_t m_interestTimedOutNo;
|
||||
/*! m_faceId The NFD-assigned ID for the neighbor, used to
|
||||
* determine whether a Face is available */
|
||||
uint64_t m_faceId;
|
||||
|
||||
friend std::ostream&
|
||||
operator<<(std::ostream& os, const Adjacent& adjacent);
|
||||
};
|
||||
|
||||
std::ostream&
|
||||
operator<<(std::ostream& os, const Adjacent& adjacent);
|
||||
|
||||
} // namespace nlsr
|
||||
|
||||
#endif // NLSR_ADJACENT_HPP
|
||||
Loaded 100 of 253 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user