mirror of
https://github.com/expressjs/express.git
synced 2026-02-27 03:07:33 +00:00
Compare commits
3434 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf709f3021 | ||
|
|
7515ee6a78 | ||
|
|
b8d6d258b0 | ||
|
|
35c50601bd | ||
|
|
f7be983a77 | ||
|
|
bc9bcb0317 | ||
|
|
a2553126dd | ||
|
|
0639c45acd | ||
|
|
e4302b2120 | ||
|
|
3d6b4ba013 | ||
|
|
920f46ad65 | ||
|
|
35a66d8a14 | ||
|
|
4e1e252e17 | ||
|
|
0461e55380 | ||
|
|
8dc4ff26f9 | ||
|
|
6f9e927633 | ||
|
|
40a43eb753 | ||
|
|
a8bb4bab2b | ||
|
|
417999884b | ||
|
|
17a739e35f | ||
|
|
555ffe37b2 | ||
|
|
165578a1da | ||
|
|
0bbbc84959 | ||
|
|
92d37671c5 | ||
|
|
2901bd6916 | ||
|
|
66b38b58bc | ||
|
|
dc31ea34b8 | ||
|
|
d58ca520c8 | ||
|
|
4b646c2f8d | ||
|
|
35757ed1f5 | ||
|
|
fed0d5df5c | ||
|
|
c99fa6a192 | ||
|
|
0d468cbe6c | ||
|
|
f92ba6d0cf | ||
|
|
0408e3727e | ||
|
|
be997fd654 | ||
|
|
5c3852b91c | ||
|
|
3c7310ebcb | ||
|
|
61f2929a35 | ||
|
|
c054581370 | ||
|
|
dbea8312bb | ||
|
|
1536a2196e | ||
|
|
374e6c3789 | ||
|
|
203fb05d3e | ||
|
|
ce8555c690 | ||
|
|
9863fa0903 | ||
|
|
2fd3e72a19 | ||
|
|
8ccceacf91 | ||
|
|
d5815922ca | ||
|
|
972c01afc9 | ||
|
|
8894e30869 | ||
|
|
5d8dba5fe0 | ||
|
|
90fbc1a33e | ||
|
|
55dea47b94 | ||
|
|
c7791a207b | ||
|
|
30d18888b9 | ||
|
|
6ac6305b53 | ||
|
|
29e8ccef4e | ||
|
|
ce17efd95b | ||
|
|
5480cb9571 | ||
|
|
b38ffd7376 | ||
|
|
8d8f44f352 | ||
|
|
af5f21b2e2 | ||
|
|
4ac7474e4e | ||
|
|
bdb3bb98f6 | ||
|
|
896609c859 | ||
|
|
50158b851c | ||
|
|
56b672e657 | ||
|
|
b9e9576083 | ||
|
|
79cc5a4d27 | ||
|
|
5f1d57704e | ||
|
|
19983272f3 | ||
|
|
e1ab302234 | ||
|
|
6b1c443212 | ||
|
|
b79a271553 | ||
|
|
260141ee08 | ||
|
|
fb1232043d | ||
|
|
2377fc8bcf | ||
|
|
c610902b67 | ||
|
|
a802405e19 | ||
|
|
0dbaacfe12 | ||
|
|
b8dd60dec7 | ||
|
|
147c2507c3 | ||
|
|
d72f27909f | ||
|
|
1ee5329b1c | ||
|
|
ba0b046a95 | ||
|
|
412eb2a9ce | ||
|
|
dd8e279cac | ||
|
|
642432cb5e | ||
|
|
001c9380be | ||
|
|
2e830fff99 | ||
|
|
06dcb22ae2 | ||
|
|
0120874b8e | ||
|
|
13475977af | ||
|
|
df50669092 | ||
|
|
abd6b7c5c3 | ||
|
|
e36746363a | ||
|
|
1eba854f23 | ||
|
|
6b19e3dc0a | ||
|
|
cb1fbce46b | ||
|
|
cc38cccae1 | ||
|
|
efbe1779e3 | ||
|
|
8e3d0a6569 | ||
|
|
8bd5d54b0e | ||
|
|
4867cf1e7b | ||
|
|
3ea3250dbe | ||
|
|
3bbcbfdcf9 | ||
|
|
c7e84d8044 | ||
|
|
9ae1d0d22d | ||
|
|
51e80ffd48 | ||
|
|
be52dbbaa1 | ||
|
|
76147c78a1 | ||
|
|
59da745d6c | ||
|
|
68996d7561 | ||
|
|
5e12bab5cc | ||
|
|
7693aa5464 | ||
|
|
110f471efa | ||
|
|
2064f412cb | ||
|
|
3228fd3cbc | ||
|
|
bad55f7977 | ||
|
|
3cf7b2e39e | ||
|
|
b443da410a | ||
|
|
87912103c9 | ||
|
|
4ce1ee458e | ||
|
|
b0351a08de | ||
|
|
3321055025 | ||
|
|
5572897998 | ||
|
|
3112f92d08 | ||
|
|
74f55a863a | ||
|
|
9ea18e10c9 | ||
|
|
d84457b9c2 | ||
|
|
643397ed21 | ||
|
|
85bf9ab76a | ||
|
|
6ec1904aac | ||
|
|
f1315b9efa | ||
|
|
a0e6bb5cb2 | ||
|
|
eaf63d94f0 | ||
|
|
45500fba74 | ||
|
|
8472effab3 | ||
|
|
d368aed150 | ||
|
|
e3b60e80c0 | ||
|
|
9df10674f0 | ||
|
|
e3617fb8ab | ||
|
|
0fbfce58c6 | ||
|
|
f8b954bcd9 | ||
|
|
caa25b506d | ||
|
|
6911815171 | ||
|
|
0719e5f402 | ||
|
|
07b731add0 | ||
|
|
d42d8f5b07 | ||
|
|
143e72dd85 | ||
|
|
6835289564 | ||
|
|
1396e0855d | ||
|
|
6a7363e4ae | ||
|
|
9bc63d92a0 | ||
|
|
6b05f60bad | ||
|
|
25e6629bcc | ||
|
|
0796c1d2d2 | ||
|
|
aac1d52c4f | ||
|
|
f41d09a3cf | ||
|
|
8aff64f89a | ||
|
|
4bf9cfd477 | ||
|
|
08cbc442f5 | ||
|
|
a02dd201e6 | ||
|
|
a5f7dcee04 | ||
|
|
0ddd761904 | ||
|
|
991c2a9d05 | ||
|
|
4983c38298 | ||
|
|
337ab24899 | ||
|
|
63c6a9c5ad | ||
|
|
718e68ffae | ||
|
|
f56a5f01c4 | ||
|
|
b77ffe0228 | ||
|
|
fd6439bb36 | ||
|
|
121f8d02f3 | ||
|
|
ff23423d34 | ||
|
|
1d97599f8b | ||
|
|
e465624fd0 | ||
|
|
5ddbb6965f | ||
|
|
a3b5f6d07f | ||
|
|
ac2cbef8be | ||
|
|
dff22e9d09 | ||
|
|
7282b50ad0 | ||
|
|
8c059469fd | ||
|
|
8c3f153dd4 | ||
|
|
185b526e60 | ||
|
|
38996b30b1 | ||
|
|
827dfed7c2 | ||
|
|
28af21baeb | ||
|
|
951c70496b | ||
|
|
a36eeb96f3 | ||
|
|
7018d3d0e6 | ||
|
|
3f14b4de1f | ||
|
|
26c0be4c4e | ||
|
|
cec0c06a70 | ||
|
|
476f8deb07 | ||
|
|
dc5932d177 | ||
|
|
cfd93b7529 | ||
|
|
8b2208f394 | ||
|
|
00a3b01f39 | ||
|
|
3baca251f0 | ||
|
|
72daae1d92 | ||
|
|
fcbe53ddb5 | ||
|
|
e9851672eb | ||
|
|
9a45f7bd3d | ||
|
|
85834fd146 | ||
|
|
a0c1ac7b45 | ||
|
|
7b0dca0f9c | ||
|
|
34c83d7d29 | ||
|
|
7c6882234e | ||
|
|
2e68ddbae9 | ||
|
|
7724fc6af7 | ||
|
|
2939075f03 | ||
|
|
606f68de02 | ||
|
|
c6c71abf4d | ||
|
|
863160ae49 | ||
|
|
edd39fb194 | ||
|
|
a71d264d45 | ||
|
|
8a7a695836 | ||
|
|
de54af4061 | ||
|
|
2f2a652bc9 | ||
|
|
1e638663de | ||
|
|
1684a8792a | ||
|
|
f47c0d9774 | ||
|
|
89e7264e53 | ||
|
|
cada9f61c8 | ||
|
|
373fa55981 | ||
|
|
2bc703cfc2 | ||
|
|
c9865b821d | ||
|
|
9c0de23645 | ||
|
|
b7a38af41d | ||
|
|
661914781e | ||
|
|
6e3f3887e9 | ||
|
|
a66d6bb034 | ||
|
|
2e197e2b98 | ||
|
|
55d1a4f964 | ||
|
|
82a7d7a977 | ||
|
|
dae54b456f | ||
|
|
1b7a044f33 | ||
|
|
18264403b1 | ||
|
|
04d43b7039 | ||
|
|
2dfecfb661 | ||
|
|
250f1f5f6e | ||
|
|
3ac718763f | ||
|
|
05e1555c0d | ||
|
|
855d1e2bf5 | ||
|
|
f0bfb3b2b2 | ||
|
|
4b4db0f7fb | ||
|
|
9bed2b80ee | ||
|
|
bb157c0cbf | ||
|
|
1ef05d4a28 | ||
|
|
0b88208022 | ||
|
|
c9d9ed3493 | ||
|
|
bd8b9f5781 | ||
|
|
9cbcf23df0 | ||
|
|
36e42db05b | ||
|
|
2bf6a1d813 | ||
|
|
e8373d3564 | ||
|
|
e218377a3d | ||
|
|
7d1aed4955 | ||
|
|
b4acbcf1fe | ||
|
|
50cb62c5d2 | ||
|
|
4cf868bd74 | ||
|
|
baa5a7c3e9 | ||
|
|
ee228f7aea | ||
|
|
d5b11c7d1b | ||
|
|
ed7db34bab | ||
|
|
57e45e3af8 | ||
|
|
1dc46478cb | ||
|
|
113ed0927d | ||
|
|
ab8be2d741 | ||
|
|
3b53b11fcd | ||
|
|
9fb661559b | ||
|
|
04882cf72c | ||
|
|
288176bbc9 | ||
|
|
5638a4fc62 | ||
|
|
3b4ce91fa3 | ||
|
|
1c87e5e9a8 | ||
|
|
a887e6a881 | ||
|
|
69290cad6f | ||
|
|
b66c7da05f | ||
|
|
92ddf77453 | ||
|
|
8e2f538983 | ||
|
|
2817d8caf2 | ||
|
|
b7f08fb159 | ||
|
|
0c2768f5bd | ||
|
|
09bede1a92 | ||
|
|
7059d3b71e | ||
|
|
e5de08faa1 | ||
|
|
e43ff076fd | ||
|
|
3ea7381dea | ||
|
|
f1c46f51e5 | ||
|
|
297fb4e0b0 | ||
|
|
9e406dfee2 | ||
|
|
30b7aa8a17 | ||
|
|
c1d16e0016 | ||
|
|
929ffb8d77 | ||
|
|
197a2e3b54 | ||
|
|
6cf6c8b918 | ||
|
|
058d7ec2ea | ||
|
|
752b5f705e | ||
|
|
e7fa579637 | ||
|
|
97781d4112 | ||
|
|
3ddd8e66a7 | ||
|
|
8a1e865e37 | ||
|
|
e850cb3ea3 | ||
|
|
13d3efe8df | ||
|
|
d6ecf785a2 | ||
|
|
19cb39869f | ||
|
|
a38bdf6758 | ||
|
|
bdbdab7fcc | ||
|
|
5aa9670120 | ||
|
|
8ad8cb93cc | ||
|
|
610e172fcf | ||
|
|
6942070a21 | ||
|
|
e283200511 | ||
|
|
54a192a5c5 | ||
|
|
c3bd65eda2 | ||
|
|
7c2ed1d2d6 | ||
|
|
3de81e0147 | ||
|
|
8fe1e2a5b4 | ||
|
|
909dbb81d5 | ||
|
|
26802a689c | ||
|
|
37239fb67f | ||
|
|
018dc40b32 | ||
|
|
52440955e6 | ||
|
|
c2f3d6ce2b | ||
|
|
be858f5d07 | ||
|
|
1f14734f91 | ||
|
|
6d1d694dbb | ||
|
|
ba5c48aa86 | ||
|
|
320d7807a9 | ||
|
|
6650a312b7 | ||
|
|
832c3b3744 | ||
|
|
76691bfd6b | ||
|
|
29fe5ea785 | ||
|
|
7a31a1d311 | ||
|
|
52a820113f | ||
|
|
aec3428489 | ||
|
|
a10f695b6f | ||
|
|
a3c9eacaf1 | ||
|
|
19d685b152 | ||
|
|
8ab44081d4 | ||
|
|
0431d22822 | ||
|
|
138d74aefa | ||
|
|
28562b2cf8 | ||
|
|
e0afda444f | ||
|
|
5a4cac58af | ||
|
|
545dca6c4d | ||
|
|
e59a882389 | ||
|
|
ccd9828535 | ||
|
|
41f0d32355 | ||
|
|
2f19b4fefc | ||
|
|
cd31cecfd1 | ||
|
|
2fe46b3905 | ||
|
|
24974f1f8f | ||
|
|
fd73bd006e | ||
|
|
7388c2c223 | ||
|
|
e2210b0b92 | ||
|
|
30919be2a0 | ||
|
|
10b21b41f7 | ||
|
|
28b8a3b5f7 | ||
|
|
8b2f1bba95 | ||
|
|
c805d80a9b | ||
|
|
d876778d22 | ||
|
|
412e571600 | ||
|
|
3296ed9cb3 | ||
|
|
91835e6816 | ||
|
|
f976625281 | ||
|
|
028d9d8a0c | ||
|
|
8559c0e2a4 | ||
|
|
06ead58240 | ||
|
|
28ca1b5221 | ||
|
|
6d872e6693 | ||
|
|
0b09c8981f | ||
|
|
a1d5676ecb | ||
|
|
f862ad29f5 | ||
|
|
15496da8fd | ||
|
|
802fb1632c | ||
|
|
69453ff889 | ||
|
|
28752cc3c0 | ||
|
|
9f06d9b03f | ||
|
|
3fb7c4e1db | ||
|
|
5fa685b602 | ||
|
|
eb1bbb92c0 | ||
|
|
d0e49f1a8a | ||
|
|
ea2664a4b8 | ||
|
|
da6524bd06 | ||
|
|
a231406931 | ||
|
|
6d39ed8ef7 | ||
|
|
f2563f4dde | ||
|
|
3df265b36a | ||
|
|
e382e6adc7 | ||
|
|
91c71d6c2e | ||
|
|
0d40c65b7f | ||
|
|
58f2057ba7 | ||
|
|
37179109db | ||
|
|
579857cfaa | ||
|
|
0b4e2df480 | ||
|
|
49cc1a70b1 | ||
|
|
f8a33d137a | ||
|
|
2db135dfc7 | ||
|
|
99bc628ad1 | ||
|
|
5ba6c301d7 | ||
|
|
88273a59f8 | ||
|
|
2e53cb72ec | ||
|
|
3b1597d79e | ||
|
|
776ee26bc3 | ||
|
|
ed273448b9 | ||
|
|
4bb91b3f67 | ||
|
|
c5f866098e | ||
|
|
6cfd01be6b | ||
|
|
53b8e25731 | ||
|
|
9e684d45bc | ||
|
|
09d9201787 | ||
|
|
a732d6d471 | ||
|
|
ee9d50c128 | ||
|
|
d1bafa0685 | ||
|
|
2604be5491 | ||
|
|
c52d9cdfbe | ||
|
|
aab6b7e721 | ||
|
|
d13cea46d5 | ||
|
|
82731dae6e | ||
|
|
476fba3e8b | ||
|
|
a566624f2d | ||
|
|
c6d7352f5c | ||
|
|
771573be30 | ||
|
|
b7afa4f0f4 | ||
|
|
4a1fa58704 | ||
|
|
6654b7162c | ||
|
|
f26a3cc806 | ||
|
|
57e48c4767 | ||
|
|
66d9a4ad43 | ||
|
|
78d9c98187 | ||
|
|
b686ec1182 | ||
|
|
158f452b50 | ||
|
|
916acd1dd3 | ||
|
|
b4f612474b | ||
|
|
9a884aa9ee | ||
|
|
db5636199e | ||
|
|
8211562cf6 | ||
|
|
9df93d6dec | ||
|
|
1e251af8d3 | ||
|
|
eed0f598a0 | ||
|
|
ec4d4a792a | ||
|
|
84e745f67c | ||
|
|
97edb23dba | ||
|
|
856782c81c | ||
|
|
a7266392f9 | ||
|
|
04b0c44bdf | ||
|
|
99c9eecde5 | ||
|
|
4d65bbf612 | ||
|
|
956aa0cfff | ||
|
|
d874476f0b | ||
|
|
30f9805539 | ||
|
|
46536dee39 | ||
|
|
24087d94df | ||
|
|
d02df2ebd5 | ||
|
|
16ba1f62a3 | ||
|
|
684dd1a3c6 | ||
|
|
8bcdcfeedd | ||
|
|
3bc372aa33 | ||
|
|
fc1c024041 | ||
|
|
89427228d1 | ||
|
|
420225f370 | ||
|
|
44a3fa6359 | ||
|
|
d853c833f0 | ||
|
|
03a796c460 | ||
|
|
75e47f2883 | ||
|
|
a4b2e48dfe | ||
|
|
57cda1578d | ||
|
|
6b1d7a94ff | ||
|
|
49abd7bec1 | ||
|
|
0ebebd80fe | ||
|
|
d157d47c6e | ||
|
|
e3ac2c5b02 | ||
|
|
cd54faa4af | ||
|
|
5beb1c4e30 | ||
|
|
4031aaa591 | ||
|
|
ba00e23630 | ||
|
|
8beb1f21ef | ||
|
|
fa8eec449b | ||
|
|
ab75fa048e | ||
|
|
bb29da5980 | ||
|
|
a4d7b75129 | ||
|
|
0fdceb3de3 | ||
|
|
480d0064e1 | ||
|
|
17bf04d1ef | ||
|
|
3ab30210a2 | ||
|
|
14fcfdee7e | ||
|
|
d4e56c1fa2 | ||
|
|
39ee6f8e79 | ||
|
|
8d21f1e45c | ||
|
|
618484a4fe | ||
|
|
64a234958a | ||
|
|
e4907ce8e8 | ||
|
|
33eaa8329c | ||
|
|
3c4fd57e51 | ||
|
|
a1e42ac33f | ||
|
|
ce7d7bfd8d | ||
|
|
9bd86cdddc | ||
|
|
0117464ac2 | ||
|
|
6f6eec7d8d | ||
|
|
a4e93c0fb8 | ||
|
|
e2ad0d3d6e | ||
|
|
763be5e631 | ||
|
|
c8526932f3 | ||
|
|
5cf29a3d29 | ||
|
|
18a3cc03ee | ||
|
|
ea5e254c7d | ||
|
|
060653bd4c | ||
|
|
b709009bc9 | ||
|
|
b80d7ec257 | ||
|
|
ff0384e610 | ||
|
|
ab9c275bde | ||
|
|
c70db96b06 | ||
|
|
1c616e29e2 | ||
|
|
cb7518435f | ||
|
|
79f81c0a25 | ||
|
|
72b9e48331 | ||
|
|
eba6aa1767 | ||
|
|
534fbdb307 | ||
|
|
6b309a4457 | ||
|
|
af5e38c31a | ||
|
|
4283f38698 | ||
|
|
2d49c0d1f3 | ||
|
|
a7ca3817db | ||
|
|
1f044547ee | ||
|
|
612fc47044 | ||
|
|
8959ff155b | ||
|
|
dadf57cc8b | ||
|
|
764b6c61d9 | ||
|
|
582dadf787 | ||
|
|
12d97169d7 | ||
|
|
c29cfa823d | ||
|
|
e183a9694e | ||
|
|
d6cb449011 | ||
|
|
7bf4ad30fc | ||
|
|
b3936b96e5 | ||
|
|
44d0625e91 | ||
|
|
c492cde048 | ||
|
|
c2fa6cc94d | ||
|
|
464608025b | ||
|
|
d653d2308b | ||
|
|
a52b1f121c | ||
|
|
9edd8be520 | ||
|
|
aa1d47600a | ||
|
|
be7ec8b40e | ||
|
|
8e12dd9c17 | ||
|
|
fee0f0dce0 | ||
|
|
0dd80e7b50 | ||
|
|
78d5b72081 | ||
|
|
e0df865401 | ||
|
|
2abcbed67a | ||
|
|
02b9d0b2e6 | ||
|
|
927e181db7 | ||
|
|
dc411b3175 | ||
|
|
1e870f0f0d | ||
|
|
3cd01598a5 | ||
|
|
3b6d683b7f | ||
|
|
eeef763f6d | ||
|
|
76d3ec583d | ||
|
|
077d8b9247 | ||
|
|
92840b9f68 | ||
|
|
bf60d5a041 | ||
|
|
56ffab045e | ||
|
|
496ee401d7 | ||
|
|
f0d5b3b368 | ||
|
|
88072a56ea | ||
|
|
0d3a637389 | ||
|
|
dc44f3c226 | ||
|
|
1029b0b97f | ||
|
|
84f8228b8c | ||
|
|
968e8f0121 | ||
|
|
9eb1da4568 | ||
|
|
315e79e9f0 | ||
|
|
363d0d4f41 | ||
|
|
5ac631a270 | ||
|
|
75fc882001 | ||
|
|
d7cb213eeb | ||
|
|
568e0d297a | ||
|
|
8edf358739 | ||
|
|
40be3ed05d | ||
|
|
2c174d6b3b | ||
|
|
60ee465bf7 | ||
|
|
51210d6b95 | ||
|
|
a6caa267bd | ||
|
|
cdb3e9dc0d | ||
|
|
f2f09767fb | ||
|
|
eec31d7126 | ||
|
|
3c5ad753b6 | ||
|
|
dd338b5567 | ||
|
|
1b15af713c | ||
|
|
89c5affc3b | ||
|
|
2bba69f633 | ||
|
|
4403f136b7 | ||
|
|
f7c1c638bb | ||
|
|
f2d7bbe0e9 | ||
|
|
87468cffce | ||
|
|
3f7e3a714e | ||
|
|
38a9caf159 | ||
|
|
500c8ab4b3 | ||
|
|
c4ad97d555 | ||
|
|
b96401ac83 | ||
|
|
32a5c9cba5 | ||
|
|
0217e6ce96 | ||
|
|
6bebe0837f | ||
|
|
ff1c6f0cfa | ||
|
|
8ac3e80bf0 | ||
|
|
3923ec89f7 | ||
|
|
fd8ca32ab2 | ||
|
|
ba2f66d765 | ||
|
|
056c840a06 | ||
|
|
20e8f08cb2 | ||
|
|
bac0c64633 | ||
|
|
48923055eb | ||
|
|
0f20a5e06a | ||
|
|
56bfb9249f | ||
|
|
5ed1544cab | ||
|
|
e5c7be9364 | ||
|
|
73ce9d028c | ||
|
|
75debbe5bc | ||
|
|
5f33d89ea5 | ||
|
|
42fd29efe8 | ||
|
|
2d91eac811 | ||
|
|
a50f02e87d | ||
|
|
214f913b0c | ||
|
|
1021c86300 | ||
|
|
386516815a | ||
|
|
d5e5647bba | ||
|
|
a861ea7eaf | ||
|
|
cb844132e6 | ||
|
|
8050308706 | ||
|
|
e79f72bf88 | ||
|
|
07b6c9f563 | ||
|
|
8f4e61a474 | ||
|
|
54d37c60f5 | ||
|
|
a93d375acc | ||
|
|
d66f0e5eb9 | ||
|
|
e84db12783 | ||
|
|
1ad2ecefe8 | ||
|
|
08b68ec8cd | ||
|
|
48be9233d8 | ||
|
|
a512d9b47d | ||
|
|
62234cc106 | ||
|
|
ab61837885 | ||
|
|
7a5041bf9c | ||
|
|
4d219135b2 | ||
|
|
26eeb64640 | ||
|
|
5426eb0b62 | ||
|
|
b9e32ec2c4 | ||
|
|
32b8613708 | ||
|
|
90eddb3439 | ||
|
|
accd6180c1 | ||
|
|
e770b674ff | ||
|
|
4f7c4d1051 | ||
|
|
78845e7d23 | ||
|
|
93f1cecc92 | ||
|
|
8ccd89f6ad | ||
|
|
0a210cce7a | ||
|
|
f110248462 | ||
|
|
96e4014a70 | ||
|
|
2173d00829 | ||
|
|
3827f5ef8b | ||
|
|
73bed61afa | ||
|
|
ee89ff5026 | ||
|
|
8df9e745d5 | ||
|
|
c76e954504 | ||
|
|
136f054614 | ||
|
|
e9a4b4f8ff | ||
|
|
5415c98ff9 | ||
|
|
39efa452fc | ||
|
|
bddcdee3fe | ||
|
|
2e8d44b444 | ||
|
|
70d68419b0 | ||
|
|
26fab2a27d | ||
|
|
0f5560eebd | ||
|
|
170dcc2907 | ||
|
|
18d6c78ef4 | ||
|
|
1248f0338b | ||
|
|
b400814d00 | ||
|
|
a934929bb3 | ||
|
|
140efb574c | ||
|
|
3c0c96114f | ||
|
|
362c96c8c1 | ||
|
|
5db3d0f9fc | ||
|
|
80c814c393 | ||
|
|
bf66465937 | ||
|
|
72eea7e6cd | ||
|
|
8f4cd13c89 | ||
|
|
6556cefc71 | ||
|
|
7bfb58920a | ||
|
|
2e324ccf5f | ||
|
|
1a10ee76b3 | ||
|
|
619e6349f6 | ||
|
|
b1ff68548f | ||
|
|
376b6c3bad | ||
|
|
f4c8a59b17 | ||
|
|
e6129d8ba5 | ||
|
|
d2baf11b8a | ||
|
|
82b5b12ca7 | ||
|
|
c145ab9b81 | ||
|
|
c10223b803 | ||
|
|
1e09b54ad2 | ||
|
|
d073e0aeb5 | ||
|
|
ce7293de13 | ||
|
|
108e66c24b | ||
|
|
f90401b8c0 | ||
|
|
a32e705d49 | ||
|
|
640cf4ca21 | ||
|
|
442e782692 | ||
|
|
0a874ad8b3 | ||
|
|
18083f0c13 | ||
|
|
f25aaf11e9 | ||
|
|
9b09257b28 | ||
|
|
f895516a2c | ||
|
|
76aa718b75 | ||
|
|
0acee67339 | ||
|
|
4475e335ef | ||
|
|
895673141d | ||
|
|
e4cd99ae1c | ||
|
|
c39a398d83 | ||
|
|
2787bd5bf0 | ||
|
|
6aaa7dc26d | ||
|
|
ebf60d2340 | ||
|
|
02d43846f6 | ||
|
|
8930cd563c | ||
|
|
2b90cd7d51 | ||
|
|
d5fde6a4b9 | ||
|
|
99b2e0fa08 | ||
|
|
ebcb1ca90e | ||
|
|
1763b073f9 | ||
|
|
908e467548 | ||
|
|
3c6ad5350b | ||
|
|
0ff3aa4b20 | ||
|
|
fd42b5c42c | ||
|
|
1311f2ac25 | ||
|
|
82a9817061 | ||
|
|
685eec0149 | ||
|
|
910dae16ab | ||
|
|
fd53197b46 | ||
|
|
d84d0b69ef | ||
|
|
b694ba27be | ||
|
|
e3cbac2d77 | ||
|
|
bbaa295ee2 | ||
|
|
1150a88001 | ||
|
|
58cfd60000 | ||
|
|
fcf268742d | ||
|
|
30d71c8f8f | ||
|
|
c3f9398b12 | ||
|
|
f1ac6ab764 | ||
|
|
d6ca5f71bc | ||
|
|
cdca9cf88f | ||
|
|
5840b42f4a | ||
|
|
a5be68b5b2 | ||
|
|
9fda13bc25 | ||
|
|
125dd7a594 | ||
|
|
df2584cc3b | ||
|
|
4de95c0e7b | ||
|
|
9ed1f2a446 | ||
|
|
833a4873a4 | ||
|
|
6ca1807372 | ||
|
|
9da3e9ccc7 | ||
|
|
5f65c36171 | ||
|
|
d64bb2f886 | ||
|
|
fc179c8fc3 | ||
|
|
8235af47fe | ||
|
|
908f3da3da | ||
|
|
64aac199de | ||
|
|
503c45840f | ||
|
|
6f102ff40f | ||
|
|
6e26a8d366 | ||
|
|
d9aea70ccc | ||
|
|
dd33ef2eb6 | ||
|
|
f3a32f2e29 | ||
|
|
1a3e40d818 | ||
|
|
18cdb3d845 | ||
|
|
0fca62c037 | ||
|
|
e9cd82b72d | ||
|
|
4d9ad21047 | ||
|
|
1cc2dc7150 | ||
|
|
3dc88b2c0c | ||
|
|
53f1ffb4e7 | ||
|
|
579a1be7c8 | ||
|
|
c0a68fcd0d | ||
|
|
b79853e9bd | ||
|
|
f86838ceab | ||
|
|
809e0b8c92 | ||
|
|
a58e3deac2 | ||
|
|
430699c082 | ||
|
|
b04233981f | ||
|
|
de10194f33 | ||
|
|
7c2e1ad0ed | ||
|
|
67ddb429e3 | ||
|
|
a169cc7119 | ||
|
|
9719b58575 | ||
|
|
13c18fa363 | ||
|
|
c17ad6ef65 | ||
|
|
2c14d0c966 | ||
|
|
2cd1783613 | ||
|
|
06db11cd61 | ||
|
|
125421ec45 | ||
|
|
cc84f40d61 | ||
|
|
c130918135 | ||
|
|
babeb4633e | ||
|
|
30167356f2 | ||
|
|
441b309959 | ||
|
|
b7b032f8e0 | ||
|
|
50f43462ae | ||
|
|
bd2a972dba | ||
|
|
3c162ae030 | ||
|
|
3c12757d9e | ||
|
|
fa746cc027 | ||
|
|
1e85178c73 | ||
|
|
d0bc0ad2ca | ||
|
|
c33f1bac08 | ||
|
|
58d522d824 | ||
|
|
858e4dccdc | ||
|
|
c2054077f4 | ||
|
|
754dd320ff | ||
|
|
a376980a69 | ||
|
|
cf7d710bc1 | ||
|
|
8f8740028c | ||
|
|
b0e03eb8a8 | ||
|
|
929dc703ca | ||
|
|
18a6bbfd80 | ||
|
|
73092c9898 | ||
|
|
b739126707 | ||
|
|
c39cf1ef84 | ||
|
|
861f6baa66 | ||
|
|
25fe426266 | ||
|
|
85fc586ee5 | ||
|
|
2a951e961b | ||
|
|
42aeab500b | ||
|
|
808a8a314a | ||
|
|
b809041894 | ||
|
|
1ddf0c8a42 | ||
|
|
d8caf209e3 | ||
|
|
22668555ad | ||
|
|
0f585931a4 | ||
|
|
d03386571d | ||
|
|
72948068e2 | ||
|
|
97808383ed | ||
|
|
de6f30042f | ||
|
|
b5cee82604 | ||
|
|
fab3e91973 | ||
|
|
c937c797c2 | ||
|
|
0ddc40ad7f | ||
|
|
e3f6faa350 | ||
|
|
cc69d50c60 | ||
|
|
b55eb5acf5 | ||
|
|
ebabce9982 | ||
|
|
037d3490ca | ||
|
|
ba7bcbb0d6 | ||
|
|
79ce6eda6f | ||
|
|
9f7c9cfc4c | ||
|
|
5dcc4f46db | ||
|
|
2f54201774 | ||
|
|
e8eef64601 | ||
|
|
27b1b5e3b3 | ||
|
|
5fa2f89542 | ||
|
|
c998b91c09 | ||
|
|
5be2395170 | ||
|
|
b4cd6bb8f0 | ||
|
|
7e81cad0bf | ||
|
|
856f3b3be6 | ||
|
|
785ac87846 | ||
|
|
75c29bd42a | ||
|
|
221a46a396 | ||
|
|
abe5cc7184 | ||
|
|
12ada75cad | ||
|
|
5a74d94558 | ||
|
|
d1d3f310e9 | ||
|
|
089a83363f | ||
|
|
c28e6db428 | ||
|
|
05253272cb | ||
|
|
12e087820c | ||
|
|
8dc001567b | ||
|
|
9af3256f72 | ||
|
|
cdd333a2e0 | ||
|
|
aa4ec8f3e2 | ||
|
|
5ea78cf259 | ||
|
|
600eaea2d1 | ||
|
|
81b15833f7 | ||
|
|
9abc221559 | ||
|
|
7048be2830 | ||
|
|
91eb27513a | ||
|
|
04f0682439 | ||
|
|
36bab5408d | ||
|
|
c483dab4b8 | ||
|
|
f1d759f279 | ||
|
|
4c1afb2984 | ||
|
|
db9b2bfbe1 | ||
|
|
377677cf30 | ||
|
|
24a4e95ffe | ||
|
|
8fdd9e967a | ||
|
|
acfa6a692e | ||
|
|
67ca22b6e4 | ||
|
|
ba413ee98d | ||
|
|
acc0e934cb | ||
|
|
1d485840fd | ||
|
|
dcb147608a | ||
|
|
ddf24d1fd6 | ||
|
|
886d7e6903 | ||
|
|
2079ccbf42 | ||
|
|
5ec88b0f6c | ||
|
|
b0bcd27124 | ||
|
|
4dfee21e91 | ||
|
|
18fa2c9c7d | ||
|
|
04d43d60b7 | ||
|
|
419731ec41 | ||
|
|
082ba88084 | ||
|
|
09a8474521 | ||
|
|
6d323d3ff7 | ||
|
|
c4e003518a | ||
|
|
9e251d14af | ||
|
|
9abba7d69a | ||
|
|
0377540e2d | ||
|
|
e6a15f66fc | ||
|
|
1787fd1b52 | ||
|
|
54c3d5c113 | ||
|
|
6d0f9a37a2 | ||
|
|
60dac4d2ff | ||
|
|
dd468fbe9a | ||
|
|
04ecf04832 | ||
|
|
6d45616a7a | ||
|
|
06d2016ee7 | ||
|
|
984bfadcdd | ||
|
|
f79f3f8b22 | ||
|
|
ba570a9842 | ||
|
|
365a98d00f | ||
|
|
4e2677fe2c | ||
|
|
d6d16b7899 | ||
|
|
86a9e0803a | ||
|
|
fdf96922b5 | ||
|
|
d396761f76 | ||
|
|
711519361c | ||
|
|
e4827b8d89 | ||
|
|
7ec7cb94f9 | ||
|
|
298899d02c | ||
|
|
43b35a4ae0 | ||
|
|
a7a8dcd617 | ||
|
|
bdf0b26a12 | ||
|
|
73e87b6a2e | ||
|
|
ac3d002cb2 | ||
|
|
ada2d0c627 | ||
|
|
286d3a1ff8 | ||
|
|
937f01a225 | ||
|
|
c9559e03da | ||
|
|
d115798d5b | ||
|
|
b6ee5fafd0 | ||
|
|
533b31237c | ||
|
|
812a470122 | ||
|
|
eb3105ef25 | ||
|
|
ffcaa04d2c | ||
|
|
a47660ba67 | ||
|
|
e2291184dc | ||
|
|
4e332452b7 | ||
|
|
e2f43df5e9 | ||
|
|
141929cd6e | ||
|
|
ec03968bd4 | ||
|
|
a21435cb05 | ||
|
|
bdfa6d1fe7 | ||
|
|
b565e258cb | ||
|
|
892b605ab5 | ||
|
|
4d99352526 | ||
|
|
cbf0eaa429 | ||
|
|
80e16c8ca3 | ||
|
|
0ae024afa8 | ||
|
|
73caacbd42 | ||
|
|
b667bda8f2 | ||
|
|
463e38cf67 | ||
|
|
83c8d65e3d | ||
|
|
9548e7d1e2 | ||
|
|
ee290d82d1 | ||
|
|
b75bb003bd | ||
|
|
6c2194fdb4 | ||
|
|
da61d8b639 | ||
|
|
863ba199f6 | ||
|
|
161ebb354f | ||
|
|
1516ebf7f9 | ||
|
|
2820f2227d | ||
|
|
a078f5f5c1 | ||
|
|
d0a83053d3 | ||
|
|
b6bc01abde | ||
|
|
196a1eb6ad | ||
|
|
593271f536 | ||
|
|
0f24f715ba | ||
|
|
bb9bfa5618 | ||
|
|
8120a06cd6 | ||
|
|
a153082120 | ||
|
|
970031e267 | ||
|
|
a819856f3f | ||
|
|
4dbaaa2855 | ||
|
|
0593cf4379 | ||
|
|
cd0e5dbb4c | ||
|
|
7cb1c3cabb | ||
|
|
550b9101b8 | ||
|
|
9d9564568b | ||
|
|
7ea7a53e7c | ||
|
|
ac387caf21 | ||
|
|
ad3f1e84aa | ||
|
|
2432a0dda5 | ||
|
|
03e5919910 | ||
|
|
277e35f8c8 | ||
|
|
0dd5836f3f | ||
|
|
9290f0d407 | ||
|
|
9bd3ad846e | ||
|
|
a8c73649ce | ||
|
|
6368ab49b4 | ||
|
|
16b6a64ef9 | ||
|
|
e46431ee0e | ||
|
|
2e4cf0aa5c | ||
|
|
3f8a7f05e8 | ||
|
|
3360613bcd | ||
|
|
f8a9cbe074 | ||
|
|
15f2e0c899 | ||
|
|
6518e746c1 | ||
|
|
38b046d6ad | ||
|
|
28d7750eda | ||
|
|
e5fc85bddc | ||
|
|
2a40571118 | ||
|
|
f1aa57c57e | ||
|
|
0b876ece41 | ||
|
|
ca0bd1a0b5 | ||
|
|
2d31b5df34 | ||
|
|
10f7ca0ebf | ||
|
|
85d6964874 | ||
|
|
76fd462bcc | ||
|
|
c44f01879f | ||
|
|
fe27989a69 | ||
|
|
b04f3eeede | ||
|
|
6ab61d023f | ||
|
|
4d87efc771 | ||
|
|
e47d368239 | ||
|
|
5b1235addc | ||
|
|
8c2c1240e1 | ||
|
|
27e696b7b1 | ||
|
|
bfba98f532 | ||
|
|
8de3ad50b2 | ||
|
|
2ba343d2b5 | ||
|
|
ff92afa557 | ||
|
|
c3c0fb95a8 | ||
|
|
bb56a094bb | ||
|
|
2211943170 | ||
|
|
4eb8bc0857 | ||
|
|
fa51cb8d63 | ||
|
|
706dec93a4 | ||
|
|
7a32920448 | ||
|
|
57a3899c1d | ||
|
|
374d159e0e | ||
|
|
4f5a41b84f | ||
|
|
a2f380fdd6 | ||
|
|
301085e510 | ||
|
|
af5b64a434 | ||
|
|
fa088e37bc | ||
|
|
613bdc91e5 | ||
|
|
edfe50e713 | ||
|
|
26fb403ced | ||
|
|
014fb46449 | ||
|
|
144a88b109 | ||
|
|
34c0d2509a | ||
|
|
a12a9e3fd9 | ||
|
|
8df73f3d83 | ||
|
|
6dac874ff4 | ||
|
|
81d25f6861 | ||
|
|
c0c1975da6 | ||
|
|
dd7af29103 | ||
|
|
85ea5f67f4 | ||
|
|
8e3cb6174d | ||
|
|
6c01e9a43a | ||
|
|
6061670161 | ||
|
|
7c66db2c45 | ||
|
|
05e95ae55a | ||
|
|
416ad564d0 | ||
|
|
55f8f9bc42 | ||
|
|
386a9e88b4 | ||
|
|
f6ca25edbe | ||
|
|
1ea221aa4e | ||
|
|
d72a6666a1 | ||
|
|
b69199f884 | ||
|
|
65042c86a6 | ||
|
|
d7dccfd56d | ||
|
|
e60f4a5e1e | ||
|
|
fa3d4cbb23 | ||
|
|
56d303ec09 | ||
|
|
4600548b4d | ||
|
|
7d24c2ba40 | ||
|
|
b4ce57caec | ||
|
|
43c09b2eaa | ||
|
|
b32fd0bee4 | ||
|
|
3b6e96efa9 | ||
|
|
29ef828b9c | ||
|
|
39ae443433 | ||
|
|
c30c2f8d38 | ||
|
|
5757f875f2 | ||
|
|
e49c482a3f | ||
|
|
a592d6c1aa | ||
|
|
88f154fecd | ||
|
|
d7dfe3e812 | ||
|
|
489265e3ca | ||
|
|
3212a70a0c | ||
|
|
1cda0a96ca | ||
|
|
83fb9f7548 | ||
|
|
43295289bf | ||
|
|
0f72ca823b | ||
|
|
41786bc776 | ||
|
|
cca5d7ebbf | ||
|
|
43c8764465 | ||
|
|
a1e325a2d9 | ||
|
|
17a831e32f | ||
|
|
2a13db3bb8 | ||
|
|
eb5a73538a | ||
|
|
006a6c787b | ||
|
|
c3d96df0f0 | ||
|
|
15e7218bc4 | ||
|
|
28f32b9b8e | ||
|
|
1d0a56b673 | ||
|
|
ad1424681b | ||
|
|
87b991c076 | ||
|
|
5d593f26af | ||
|
|
853c270fce | ||
|
|
fcf34e0587 | ||
|
|
b6611c8a3b | ||
|
|
aab08d774b | ||
|
|
321aa52384 | ||
|
|
1334a74ef1 | ||
|
|
19e3384bb1 | ||
|
|
6ae32fd596 | ||
|
|
4c316ba4ce | ||
|
|
f2719411b7 | ||
|
|
11faf6684e | ||
|
|
547d18ce46 | ||
|
|
f183a81289 | ||
|
|
e44c874cab | ||
|
|
9c7380efe4 | ||
|
|
5e071a2e4b | ||
|
|
ff9b82c4f6 | ||
|
|
a0d0ac6cff | ||
|
|
b605a5de87 | ||
|
|
36be2b0688 | ||
|
|
376a5da705 | ||
|
|
c25258b75c | ||
|
|
c685f3a294 | ||
|
|
f63767af0e | ||
|
|
4fa9a2e54b | ||
|
|
68bc592a05 | ||
|
|
543fe2f2a4 | ||
|
|
be52f38d8f | ||
|
|
722a92f374 | ||
|
|
d771d06e19 | ||
|
|
a5227191b5 | ||
|
|
499d3d6d78 | ||
|
|
2adf020753 | ||
|
|
e8c373694c | ||
|
|
a8fd8cb645 | ||
|
|
fd06084106 | ||
|
|
285500488d | ||
|
|
29d4ffd089 | ||
|
|
fe5efa597b | ||
|
|
b93629a903 | ||
|
|
0c72940933 | ||
|
|
96f5279e3e | ||
|
|
821fa10203 | ||
|
|
9082e74971 | ||
|
|
7a7d77e7bd | ||
|
|
ce2ec94e96 | ||
|
|
d56e5d6923 | ||
|
|
5221ecc055 | ||
|
|
6ac2c6f578 | ||
|
|
772b752fa5 | ||
|
|
3c002d08c2 | ||
|
|
2876424240 | ||
|
|
74a0177ec9 | ||
|
|
da96844e9a | ||
|
|
81652c8244 | ||
|
|
f17434c95b | ||
|
|
01e854b5d2 | ||
|
|
42953c7c44 | ||
|
|
5e56446d26 | ||
|
|
61652f4ad9 | ||
|
|
fc1e84941d | ||
|
|
953eba0376 | ||
|
|
5c032269e3 | ||
|
|
1322d5a2c1 | ||
|
|
114f272906 | ||
|
|
1286bbb982 | ||
|
|
9141c649e7 | ||
|
|
ff2242da31 | ||
|
|
730a419984 | ||
|
|
25bd7d7997 | ||
|
|
77c9d9207d | ||
|
|
1e77629f1f | ||
|
|
76f65456ab | ||
|
|
26e20e7ae5 | ||
|
|
96217cf3fe | ||
|
|
e9c96d8ccd | ||
|
|
7ae2b968bb | ||
|
|
83ea42afe5 | ||
|
|
16587fcce1 | ||
|
|
ffded44f32 | ||
|
|
92c5284b80 | ||
|
|
f96102224c | ||
|
|
bf87d626eb | ||
|
|
e21a79dc61 | ||
|
|
caec590fe1 | ||
|
|
61ce6c59c2 | ||
|
|
205a1a14c7 | ||
|
|
6709ab5f27 | ||
|
|
2d77279c94 | ||
|
|
e9d7b6fbad | ||
|
|
3e6171c7ff | ||
|
|
04389fd6ff | ||
|
|
a47b599048 | ||
|
|
58eddd5ab4 | ||
|
|
7ac857acef | ||
|
|
e27b224933 | ||
|
|
4f087df286 | ||
|
|
87f6f6a3e3 | ||
|
|
94d1e94cf2 | ||
|
|
d249868e07 | ||
|
|
429e48d873 | ||
|
|
abb414c702 | ||
|
|
8f45dd4190 | ||
|
|
d9098c5fcd | ||
|
|
b9dee730a8 | ||
|
|
26c62a667f | ||
|
|
7d42ad00ff | ||
|
|
4a5776b513 | ||
|
|
f68ba2ef35 | ||
|
|
a95a0ab5f9 | ||
|
|
30911f4a75 | ||
|
|
c9f184c8d5 | ||
|
|
545f1fd07d | ||
|
|
2f762265a8 | ||
|
|
7e6d8f39b4 | ||
|
|
bea74b7711 | ||
|
|
10e8dc57eb | ||
|
|
f7b6dde086 | ||
|
|
2fa36fa721 | ||
|
|
40f8202402 | ||
|
|
4b0b55c1b7 | ||
|
|
0e395973c9 | ||
|
|
1f53cdb62d | ||
|
|
c32023d8ed | ||
|
|
d2f98940d8 | ||
|
|
536b16c7a9 | ||
|
|
9bfeae2df1 | ||
|
|
4d450ea25e | ||
|
|
84f01d1e30 | ||
|
|
1a5636b199 | ||
|
|
af46df7eae | ||
|
|
801a1791d6 | ||
|
|
333cf0b280 | ||
|
|
52e26697a9 | ||
|
|
fdf620b688 | ||
|
|
66f8ca52d6 | ||
|
|
f98c1127a6 | ||
|
|
7e352fe28d | ||
|
|
d3b48e2fd5 | ||
|
|
23159c094d | ||
|
|
2e22887f71 | ||
|
|
c9b04b8be7 | ||
|
|
2c0e13b513 | ||
|
|
2937309f00 | ||
|
|
377056a33c | ||
|
|
f42ce5be2b | ||
|
|
ddeee9b6db | ||
|
|
6bee32c174 | ||
|
|
11f55a06dd | ||
|
|
6a2d6b872b | ||
|
|
d8787867c4 | ||
|
|
43d9f6ea17 | ||
|
|
1faba1302f | ||
|
|
55ee0a0934 | ||
|
|
0653f73779 | ||
|
|
7a24021dc9 | ||
|
|
9f2fe94484 | ||
|
|
a3950b5638 | ||
|
|
8c03428279 | ||
|
|
f4d7ea386d | ||
|
|
bee0496cb1 | ||
|
|
5960b90efe | ||
|
|
0f2f3d4e29 | ||
|
|
bc673bef79 | ||
|
|
3fb7391b97 | ||
|
|
442cd7515d | ||
|
|
a013ffe547 | ||
|
|
835558229f | ||
|
|
dce23c79a1 | ||
|
|
4106bae79e | ||
|
|
b756474d9d | ||
|
|
b0c9209726 | ||
|
|
c96b778771 | ||
|
|
d0d721d80b | ||
|
|
7b50a78662 | ||
|
|
aa869c637a | ||
|
|
f467fe1cbf | ||
|
|
15fd639cd9 | ||
|
|
f96f2cf56e | ||
|
|
b0f6278cea | ||
|
|
ae7bac9a6b | ||
|
|
c8997204d4 | ||
|
|
a2c51984a8 | ||
|
|
ed93e33d59 | ||
|
|
6e15b1cd20 | ||
|
|
cc2513facf | ||
|
|
e303dcc915 | ||
|
|
8ad17abb7b | ||
|
|
5b296b5257 | ||
|
|
1a5c32f3ef | ||
|
|
a15e745d42 | ||
|
|
d17dd3e3d8 | ||
|
|
51a5c829bb | ||
|
|
8a91749e12 | ||
|
|
42fc0f9ee8 | ||
|
|
17ccd55d11 | ||
|
|
b8a589d76f | ||
|
|
becf6d9413 | ||
|
|
9efc4b23dc | ||
|
|
6b1dc31759 | ||
|
|
9205d632cc | ||
|
|
a751346b20 | ||
|
|
8111a19307 | ||
|
|
860b4f1a3b | ||
|
|
a5b1aa9ca7 | ||
|
|
62257bce18 | ||
|
|
0ed74aa68b | ||
|
|
e0bd0d6470 | ||
|
|
b433550556 | ||
|
|
04ebd8875b | ||
|
|
1a1ed0ae45 | ||
|
|
d6fabb6f8e | ||
|
|
08e8194db1 | ||
|
|
0e4e050b21 | ||
|
|
de17b285b1 | ||
|
|
f640d0973d | ||
|
|
47ff0dc0cc | ||
|
|
965e1d63dc | ||
|
|
73f1da2ff7 | ||
|
|
0f6ad43e91 | ||
|
|
8d804a6c4a | ||
|
|
02f48aabbf | ||
|
|
d4b08e9566 | ||
|
|
9f1f58fd4b | ||
|
|
4ed92d50e0 | ||
|
|
8848004cb7 | ||
|
|
371b381074 | ||
|
|
6d47011dcf | ||
|
|
705cdb6368 | ||
|
|
90fc80fd87 | ||
|
|
041974ee01 | ||
|
|
7369d861ca | ||
|
|
e1da383aed | ||
|
|
6bcf29152f | ||
|
|
8a38211bd9 | ||
|
|
cb2b9feb5f | ||
|
|
c2d5d5619b | ||
|
|
76b7d6975f | ||
|
|
7e9186d1ae | ||
|
|
d1ce4c9923 | ||
|
|
fed7fa4cd2 | ||
|
|
0d0125fc29 | ||
|
|
98e2c0522f | ||
|
|
294bc8c1d7 | ||
|
|
ae11d83684 | ||
|
|
aab9b08ec2 | ||
|
|
31ff7db019 | ||
|
|
c40c54fbee | ||
|
|
cecbaf2efe | ||
|
|
e90413243e | ||
|
|
a9396efeaf | ||
|
|
60353c6d05 | ||
|
|
7b5ed50786 | ||
|
|
02baa2b17c | ||
|
|
d0585bd910 | ||
|
|
adf7124446 | ||
|
|
7710db4591 | ||
|
|
ce03cf49d8 | ||
|
|
65c0d14a4e | ||
|
|
667ed6fcf5 | ||
|
|
d7da40642d | ||
|
|
d6b5047511 | ||
|
|
3b5a751b25 | ||
|
|
8a7491c97a | ||
|
|
b3cab31cf7 | ||
|
|
021655a10a | ||
|
|
e301d43704 | ||
|
|
54c1a208c3 | ||
|
|
ad9bbda708 | ||
|
|
341e167eab | ||
|
|
fb031d1ad5 | ||
|
|
d3937b9a61 | ||
|
|
2c734e2e4c | ||
|
|
77d8823261 | ||
|
|
6f85c14738 | ||
|
|
edb1dc067a | ||
|
|
6b161d5389 | ||
|
|
c21e3feaa6 | ||
|
|
a25ef01da3 | ||
|
|
0534266490 | ||
|
|
71aca3c199 | ||
|
|
72fab80a74 | ||
|
|
c8ab058842 | ||
|
|
b166fd7d6e | ||
|
|
9545face97 | ||
|
|
6dacd51b81 | ||
|
|
571a182712 | ||
|
|
e3aabdc2bc | ||
|
|
4d8d5b12f2 | ||
|
|
5785e7e2e5 | ||
|
|
81f311105c | ||
|
|
ad3679fcb8 | ||
|
|
29508f1cc7 | ||
|
|
426ba62348 | ||
|
|
d2df055abe | ||
|
|
d3ccdbcf72 | ||
|
|
7a476fc964 | ||
|
|
5da28be2b2 | ||
|
|
0932bdea30 | ||
|
|
75054e17cf | ||
|
|
664907f02e | ||
|
|
f977272732 | ||
|
|
d10b7b43ea | ||
|
|
e9abe1b846 | ||
|
|
cc21f38664 | ||
|
|
34606c26f0 | ||
|
|
be9d66a574 | ||
|
|
ed9fcde499 | ||
|
|
3c2139b0c3 | ||
|
|
7eeec91ab5 | ||
|
|
fdd43ee448 | ||
|
|
ca75492512 | ||
|
|
a2a7644794 | ||
|
|
91aebc758c | ||
|
|
ca0d29d811 | ||
|
|
c8c6aa2a1f | ||
|
|
19a1a22e63 | ||
|
|
c729d62f89 | ||
|
|
1793b50e6b | ||
|
|
23dbe6a5f0 | ||
|
|
509601e617 | ||
|
|
d58beed752 | ||
|
|
fd5d1076dc | ||
|
|
05b76a1f93 | ||
|
|
f84ec803a4 | ||
|
|
c35cd7fcb7 | ||
|
|
bb9d50579b | ||
|
|
54d37512f5 | ||
|
|
c516be8c4b | ||
|
|
82c78ec8f9 | ||
|
|
b1d4b71609 | ||
|
|
7440c7ddc7 | ||
|
|
624dad5a78 | ||
|
|
f4080210bd | ||
|
|
c631eb43e3 | ||
|
|
376bedf624 | ||
|
|
36e9c02f6f | ||
|
|
8f798569a8 | ||
|
|
8c0e47baf9 | ||
|
|
461473e48e | ||
|
|
8b1f109c1d | ||
|
|
e005cb31d8 | ||
|
|
579836e221 | ||
|
|
b977ee6160 | ||
|
|
ddce65b9dd | ||
|
|
e0e1105965 | ||
|
|
1f520f9f99 | ||
|
|
05a929deb6 | ||
|
|
5ac5352e33 | ||
|
|
787a555253 | ||
|
|
388b84e858 | ||
|
|
7ffd17254a | ||
|
|
00affe187c | ||
|
|
05844efbd6 | ||
|
|
3ab37028fc | ||
|
|
3a04888c5f | ||
|
|
6bd518241a | ||
|
|
a3cddb856f | ||
|
|
4b8e08d202 | ||
|
|
9413d30396 | ||
|
|
5982fa63c6 | ||
|
|
a4621a6418 | ||
|
|
7eec21a5e6 | ||
|
|
96b72fe2f7 | ||
|
|
c7c9606e87 | ||
|
|
772c135d98 | ||
|
|
365b3a76ba | ||
|
|
41568b7f2a | ||
|
|
d853f6cf0e | ||
|
|
bcfcce32d3 | ||
|
|
986916cf3e | ||
|
|
d689656775 | ||
|
|
8c56df7322 | ||
|
|
1dc87761a0 | ||
|
|
cd88b92587 | ||
|
|
eab03fdfc4 | ||
|
|
9a8b86872d | ||
|
|
04ce039ba4 | ||
|
|
9605cbda45 | ||
|
|
3ec2739925 | ||
|
|
d250bf9b56 | ||
|
|
6ebccb0518 | ||
|
|
b30efe4e2f | ||
|
|
c275d279fc | ||
|
|
7237a3c3b6 | ||
|
|
f98896f6d7 | ||
|
|
bcb2cdae4c | ||
|
|
08159211a3 | ||
|
|
232b6ab7ef | ||
|
|
3d2676d013 | ||
|
|
477d06f990 | ||
|
|
ed19885ba1 | ||
|
|
297ae6fdb4 | ||
|
|
456a985666 | ||
|
|
261203d6c1 | ||
|
|
31262d2ea9 | ||
|
|
c72abc5293 | ||
|
|
93189ad0b6 | ||
|
|
a8930b161e | ||
|
|
fa31d45285 | ||
|
|
914e4a4cf7 | ||
|
|
f36d079f28 | ||
|
|
17ddeef3ba | ||
|
|
f0c90ce668 | ||
|
|
f19b312c48 | ||
|
|
e899a54ba7 | ||
|
|
a4db994c2f | ||
|
|
f98f46c836 | ||
|
|
336aaaec9a | ||
|
|
b13ec8526e | ||
|
|
541020ff1b | ||
|
|
9c153737b4 | ||
|
|
7d53bb4064 | ||
|
|
4670751479 | ||
|
|
8e058f16e4 | ||
|
|
f519f0a5b3 | ||
|
|
bb61304a49 | ||
|
|
781d991eac | ||
|
|
d04c1f93a3 | ||
|
|
c0aab36187 | ||
|
|
5ae994ee8f | ||
|
|
60d16eab77 | ||
|
|
fc60dfc1a6 | ||
|
|
45d149c146 | ||
|
|
4dfc1a69c3 | ||
|
|
0ae18bca60 | ||
|
|
2aaf0defe7 | ||
|
|
73ea5cd7ee | ||
|
|
e7f2d229ec | ||
|
|
87bc265817 | ||
|
|
796aaff295 | ||
|
|
8f87c50320 | ||
|
|
ee4471b345 | ||
|
|
6815feb8cf | ||
|
|
dbbe7be891 | ||
|
|
09c9452e5c | ||
|
|
b0e669ba00 | ||
|
|
f46ae9f3b2 | ||
|
|
9f2b344be8 | ||
|
|
6b47271679 | ||
|
|
6f7075be74 | ||
|
|
4b9cc3d698 | ||
|
|
3faa790b53 | ||
|
|
9477c9b516 | ||
|
|
b04be51848 | ||
|
|
9e4020efd3 | ||
|
|
6db19db665 | ||
|
|
1386f80ae5 | ||
|
|
e4342a7097 | ||
|
|
fda31b75f9 | ||
|
|
8ca0a45b33 | ||
|
|
ce2bcaef68 | ||
|
|
0db7f26ad3 | ||
|
|
35370da458 | ||
|
|
fe6c5832c2 | ||
|
|
e8c32df79c | ||
|
|
652e166462 | ||
|
|
af6385f8e4 | ||
|
|
f0277d3777 | ||
|
|
6bb100d7fa | ||
|
|
f13ea34de3 | ||
|
|
48a14a443a | ||
|
|
1820ea6f59 | ||
|
|
4d9647923e | ||
|
|
943e9b3a28 | ||
|
|
6b2ec50a0b | ||
|
|
7b813b95b6 | ||
|
|
cdaa2e78d7 | ||
|
|
add53d3222 | ||
|
|
f4f79d2217 | ||
|
|
aa36bc4516 | ||
|
|
9028cacfd1 | ||
|
|
40ccb595cd | ||
|
|
5606d08ecb | ||
|
|
1888d6fca1 | ||
|
|
5d16e6b302 | ||
|
|
96f7574bc1 | ||
|
|
490584c8bc | ||
|
|
0cbb1f661c | ||
|
|
3dc53e105a | ||
|
|
e2cdd760d8 | ||
|
|
4169202a41 | ||
|
|
835982c561 | ||
|
|
b67bacea18 | ||
|
|
3205ee7d75 | ||
|
|
ff7d5ff4e5 | ||
|
|
723774af27 | ||
|
|
c3fbd3fe10 | ||
|
|
d1d3871550 | ||
|
|
5462c8c7ec | ||
|
|
9536341e30 | ||
|
|
1bb798d963 | ||
|
|
91997e9c53 | ||
|
|
1393187040 | ||
|
|
6e69c880d9 | ||
|
|
59dcd03972 | ||
|
|
11482546a2 | ||
|
|
1ce43dd347 | ||
|
|
d1bfe137d4 | ||
|
|
9d7452cdc2 | ||
|
|
d9cee90efc | ||
|
|
175aa08500 | ||
|
|
c9ff6198d3 | ||
|
|
f026218c82 | ||
|
|
5bc86b9e29 | ||
|
|
5830ac9936 | ||
|
|
d7c6c9a9f9 | ||
|
|
9c87eed60e | ||
|
|
f15eb6d5ef | ||
|
|
5b33788359 | ||
|
|
11ec3ccd48 | ||
|
|
9d498ba3f1 | ||
|
|
15d4047180 | ||
|
|
44eae73843 | ||
|
|
d5b1c70731 | ||
|
|
e78dc18cfd | ||
|
|
4d122923e9 | ||
|
|
b1a7310263 | ||
|
|
d6ef90d98d | ||
|
|
85df59ac31 | ||
|
|
b789a28581 | ||
|
|
4068e7f444 | ||
|
|
80e9ffbf5d | ||
|
|
610fc92ca3 | ||
|
|
0f5dc9bdb2 | ||
|
|
c24b2faec5 | ||
|
|
c407f58dc2 | ||
|
|
380da0e202 | ||
|
|
9e5e7a1526 | ||
|
|
9016b5aaae | ||
|
|
45f168e873 | ||
|
|
799938683d | ||
|
|
7128f2d11f | ||
|
|
0634bf0b0d | ||
|
|
f9e48c2972 | ||
|
|
909960c0b3 | ||
|
|
8a7876f4d1 | ||
|
|
286c92b13b | ||
|
|
b9872a278f | ||
|
|
1b34fd7efa | ||
|
|
f05c351762 | ||
|
|
8323f19e96 | ||
|
|
565eda9ee5 | ||
|
|
7aea7194d1 | ||
|
|
2f68957c8c | ||
|
|
4ca848e526 | ||
|
|
31a8c7c19c | ||
|
|
f1c435e050 | ||
|
|
fac75a9bff | ||
|
|
4fe03ab223 | ||
|
|
c6122da59b | ||
|
|
131f658779 | ||
|
|
127f77964e | ||
|
|
9f2bd30dc7 | ||
|
|
6e633b31b4 | ||
|
|
1c65643488 | ||
|
|
388ad9067a | ||
|
|
f470f0bdc5 | ||
|
|
72384b0523 | ||
|
|
1b199b7d98 | ||
|
|
09b384ea44 | ||
|
|
56ae55f987 | ||
|
|
1c360a89ba | ||
|
|
8636dee13e | ||
|
|
70e6baf6fc | ||
|
|
3588c1eedc | ||
|
|
8d6f167a81 | ||
|
|
6106188347 | ||
|
|
eeb77541cd | ||
|
|
99b244b47c | ||
|
|
3043672448 | ||
|
|
0477a53c9f | ||
|
|
d9aa7c3bc9 | ||
|
|
986fac583b | ||
|
|
c6d76086e2 | ||
|
|
e2771364eb | ||
|
|
0d5a63798b | ||
|
|
7d15e2bf52 | ||
|
|
31fef407b6 | ||
|
|
6bef3ef891 | ||
|
|
b806846049 | ||
|
|
bc16020976 | ||
|
|
8afb905a43 | ||
|
|
53667728a8 | ||
|
|
5f0a854e29 | ||
|
|
e9ef3dd9cd | ||
|
|
f702884704 | ||
|
|
0cb866845d | ||
|
|
26483029db | ||
|
|
d2adcbdf67 | ||
|
|
d2f963db2a | ||
|
|
fc2bc1362f | ||
|
|
6ae45d0fd3 | ||
|
|
cc185a8c0e | ||
|
|
ae1078944c | ||
|
|
385a05dd10 | ||
|
|
2572a78648 | ||
|
|
470774cfba | ||
|
|
351f6abe4c | ||
|
|
53a16e1795 | ||
|
|
ff77c8b205 | ||
|
|
b33f38b109 | ||
|
|
b9596d7ce8 | ||
|
|
251175c025 | ||
|
|
fda1bc4630 | ||
|
|
83c2c176a9 | ||
|
|
9be5992f22 | ||
|
|
d8d23c0bf8 | ||
|
|
b2689fc40e | ||
|
|
a4cfde350f | ||
|
|
7374027457 | ||
|
|
63328c2177 | ||
|
|
c4e2ce23e5 | ||
|
|
dacad53b2e | ||
|
|
4ffd5280a7 | ||
|
|
74310fb464 | ||
|
|
8b2268cf38 | ||
|
|
fb655f4981 | ||
|
|
7208c33d72 | ||
|
|
4efb25d048 | ||
|
|
a3678cd7f6 | ||
|
|
393d38f1ab | ||
|
|
805b9ac3a9 | ||
|
|
379b9812be | ||
|
|
a9992b5647 | ||
|
|
b6c0a9b1b5 | ||
|
|
1d2dd2a375 | ||
|
|
63db694aa2 | ||
|
|
b6aca36ad9 | ||
|
|
8420ae93fd | ||
|
|
6722716fa7 | ||
|
|
658e064220 | ||
|
|
66b472e567 | ||
|
|
3d242a607e | ||
|
|
bc68e5e7a3 | ||
|
|
aa6858189c | ||
|
|
06fda62c9e | ||
|
|
5688ea650d | ||
|
|
f5c4e9d612 | ||
|
|
b9eda2a59d | ||
|
|
8c168b0971 | ||
|
|
9c20a50ee2 | ||
|
|
eac666574e | ||
|
|
e4c840f6b8 | ||
|
|
3afbcd0acf | ||
|
|
8f054dbcaf | ||
|
|
ccc39e5aa2 | ||
|
|
53d4da2a9c | ||
|
|
d9e7153fc9 | ||
|
|
dc02b0d5ae | ||
|
|
e0bc5711b8 | ||
|
|
957cf45fa1 | ||
|
|
f4487343df | ||
|
|
ca1bdb31e3 | ||
|
|
236a412459 | ||
|
|
759a57bdb6 | ||
|
|
1abb674a07 | ||
|
|
961146a287 | ||
|
|
573f940985 | ||
|
|
882916bb2e | ||
|
|
47d1c62732 | ||
|
|
d39293c025 | ||
|
|
2942dafdfd | ||
|
|
4e1aefa5b5 | ||
|
|
89383ecc57 | ||
|
|
08046f7692 | ||
|
|
885fb1fa92 | ||
|
|
6a58c71528 | ||
|
|
371d66ba2a | ||
|
|
25bddf3fb5 | ||
|
|
f6e9fb13f8 | ||
|
|
f0df8434e7 | ||
|
|
e4d3f239e5 | ||
|
|
bcc22dfa6f | ||
|
|
f614709a01 | ||
|
|
11250d22c9 | ||
|
|
4b4de29725 | ||
|
|
99b49d2718 | ||
|
|
6230ec55be | ||
|
|
0733d3c585 | ||
|
|
6f8370ff0e | ||
|
|
bc244ed07e | ||
|
|
41266aa8e4 | ||
|
|
45faee3e5b | ||
|
|
74ff735e10 | ||
|
|
97879f2b16 | ||
|
|
1a338251ad | ||
|
|
354dc768c1 | ||
|
|
8a0796cd94 | ||
|
|
cbc3b26584 | ||
|
|
d628583db8 | ||
|
|
058777be1e | ||
|
|
260d03a0c4 | ||
|
|
6dcf6f41cc | ||
|
|
799f790886 | ||
|
|
cb3c4b0ea9 | ||
|
|
798d255ba6 | ||
|
|
28ba9e8ac5 | ||
|
|
7888cb0506 | ||
|
|
5e284a20cc | ||
|
|
770357e727 | ||
|
|
673ba22555 | ||
|
|
fb38d9cfb7 | ||
|
|
dda89a57ec | ||
|
|
62df63d3a0 | ||
|
|
e71696cf34 | ||
|
|
b5d8d58670 | ||
|
|
14e6a667f5 | ||
|
|
0c324783ae | ||
|
|
5d6ce251ca | ||
|
|
92c04cee1d | ||
|
|
7fdf587a7b | ||
|
|
1e46218b09 | ||
|
|
c56fcd8fb9 | ||
|
|
319fbf7f64 | ||
|
|
bf06d9077c | ||
|
|
9d2bd29ee1 | ||
|
|
d11fa1f74e | ||
|
|
c824da0dab | ||
|
|
9362c83a33 | ||
|
|
0c38098f02 | ||
|
|
be7068f569 | ||
|
|
b122bf22e3 | ||
|
|
b7232f38f3 | ||
|
|
c1b72ac1b7 | ||
|
|
b9e0d15878 | ||
|
|
cf26cf7afc | ||
|
|
a75e60ae47 | ||
|
|
187dc5dd03 | ||
|
|
9c9e2afade | ||
|
|
fae1ba98c1 | ||
|
|
c3e632620a | ||
|
|
dd7158ac46 | ||
|
|
eefe51c7a7 | ||
|
|
bf596dc023 | ||
|
|
220d88d654 | ||
|
|
a254e64bdb | ||
|
|
1555b92fb8 | ||
|
|
d5b7a40b39 | ||
|
|
bd1ab7ab96 | ||
|
|
2ff991bfcf | ||
|
|
0b1378a539 | ||
|
|
723c908bd7 | ||
|
|
4874404701 | ||
|
|
4c1374840a | ||
|
|
5da01633fd | ||
|
|
cdbd8af527 | ||
|
|
a6fdc1bfd2 | ||
|
|
20b8facb05 | ||
|
|
909914f7af | ||
|
|
3f31ebc676 | ||
|
|
f3c068a90c | ||
|
|
90d7e193d1 | ||
|
|
c9f5bb6f17 | ||
|
|
9865a4c4f2 | ||
|
|
f12baf32d4 | ||
|
|
80f4d08e8b | ||
|
|
07c9cae923 | ||
|
|
d867cc9271 | ||
|
|
3a1fe1e295 | ||
|
|
3cacf050df | ||
|
|
1536d73d1b | ||
|
|
55143a9d44 | ||
|
|
c92e193916 | ||
|
|
d12452fc49 | ||
|
|
3d8400a40c | ||
|
|
1fe0aea0b0 | ||
|
|
5df2544883 | ||
|
|
acbf224277 | ||
|
|
d0d17a0d35 | ||
|
|
f7b53d33bc | ||
|
|
92be06874b | ||
|
|
f327455d9d | ||
|
|
54415bf2af | ||
|
|
bac62dfcd9 | ||
|
|
820b43c1f3 | ||
|
|
a5b69290d5 | ||
|
|
5c7a9c86f6 | ||
|
|
7f83f916f6 | ||
|
|
c15a949cc3 | ||
|
|
ce47f96570 | ||
|
|
57b035cd94 | ||
|
|
f1f126171c | ||
|
|
71e1bcd855 | ||
|
|
b5579b6307 | ||
|
|
110b0fe14a | ||
|
|
d7488bbb62 | ||
|
|
2007407e7b | ||
|
|
d152e7e780 | ||
|
|
d4f4b6682d | ||
|
|
7f4a12f4cd | ||
|
|
07d06adf86 | ||
|
|
47dc188d57 | ||
|
|
85d22541d2 | ||
|
|
90ec1031f9 | ||
|
|
9bc9ad13a4 | ||
|
|
1782c7d778 | ||
|
|
e85752c527 | ||
|
|
dfdbbb514f | ||
|
|
976f5ca93e | ||
|
|
2086f8d34c | ||
|
|
6873a68216 | ||
|
|
9eb2c61760 | ||
|
|
543e791206 | ||
|
|
b6e8b3fa84 | ||
|
|
6f8e406b7b | ||
|
|
93bc54b65c | ||
|
|
3bf0ac4a36 | ||
|
|
bc01bfff21 | ||
|
|
0d4eaf03fc | ||
|
|
2bb0412473 | ||
|
|
07ce5d3158 | ||
|
|
131970b3e5 | ||
|
|
00e1dbfbd9 | ||
|
|
4c274c524d | ||
|
|
5581ca2751 | ||
|
|
5cd9a9540f | ||
|
|
1db2efa75a | ||
|
|
c1a82bf3ea | ||
|
|
7705042cac | ||
|
|
b9e311e893 | ||
|
|
460998497d | ||
|
|
022c5e1411 | ||
|
|
60daf0d6c7 | ||
|
|
0b6a941624 | ||
|
|
1fc520b45a | ||
|
|
cbbee38be8 | ||
|
|
2dae6d8285 | ||
|
|
65c8a956f1 | ||
|
|
2b907e9a8c | ||
|
|
25e520c243 | ||
|
|
2124c8465a | ||
|
|
a49e1f4f3d | ||
|
|
32be4a7812 | ||
|
|
92967d3457 | ||
|
|
d70fee7432 | ||
|
|
97b8e75932 | ||
|
|
8a62f8cef0 | ||
|
|
10f4f523fa | ||
|
|
1e392d2628 | ||
|
|
eb6ff62113 | ||
|
|
64da2621da | ||
|
|
61aec6e961 | ||
|
|
42f3ad436d | ||
|
|
2f7b78c03a | ||
|
|
402d37d613 | ||
|
|
96327c979c | ||
|
|
9d1b3f59d5 | ||
|
|
14bd50efe4 | ||
|
|
631c1f95e7 | ||
|
|
50006f7e43 | ||
|
|
4c9503158b | ||
|
|
6c8e461db5 | ||
|
|
aaa8415169 | ||
|
|
51e964498c | ||
|
|
0cddc70ff5 | ||
|
|
99dcf7508f | ||
|
|
7822d1f148 | ||
|
|
a572a7126c | ||
|
|
a1609faba0 | ||
|
|
9bf823d893 | ||
|
|
ca184e7725 | ||
|
|
5054507487 | ||
|
|
ab93be0178 | ||
|
|
8b0993bb10 | ||
|
|
0a034bb3ea | ||
|
|
4ce815a3ed | ||
|
|
4da860eae1 | ||
|
|
27e4bdb814 | ||
|
|
dd9406cd52 | ||
|
|
509312773d | ||
|
|
42d2758c36 | ||
|
|
ef1c858ffc | ||
|
|
7fd47c0ac6 | ||
|
|
a63b232ef1 | ||
|
|
acb502e5e3 | ||
|
|
3661922bb0 | ||
|
|
0704f149be | ||
|
|
334604de5d | ||
|
|
530328ac15 | ||
|
|
9914a1eb3f | ||
|
|
5db5710d3f | ||
|
|
9e9f55a8e3 | ||
|
|
0800141a9d | ||
|
|
dc6d469f0c | ||
|
|
89299d77e4 | ||
|
|
27d8bf6311 | ||
|
|
8c229a8560 | ||
|
|
29eed65a67 | ||
|
|
f0e0073a09 | ||
|
|
b70bde58be | ||
|
|
635fac776d | ||
|
|
7753d4e91d | ||
|
|
66a6214216 | ||
|
|
6cae1f09f1 | ||
|
|
c4432ee827 | ||
|
|
80a5bf2063 | ||
|
|
5b3d5fc431 | ||
|
|
cd38fb4177 | ||
|
|
9b1cc75b36 | ||
|
|
db8b2883e2 | ||
|
|
59a74ecce4 | ||
|
|
9099c61df9 | ||
|
|
50521281ce | ||
|
|
0cc6abf741 | ||
|
|
fe266ae4fe | ||
|
|
7c15cdeb69 | ||
|
|
848086947c | ||
|
|
5ec4ea754c | ||
|
|
41467d54df | ||
|
|
8261437764 | ||
|
|
54eac368d0 | ||
|
|
72511ea1e9 | ||
|
|
da7921f2c6 | ||
|
|
cd519e97e7 | ||
|
|
2a7a5aeefe | ||
|
|
bdbacb41da | ||
|
|
2dd736a201 | ||
|
|
ec3c797105 | ||
|
|
770f05c060 | ||
|
|
6993a27d8e | ||
|
|
68fd658536 | ||
|
|
9fc349965d | ||
|
|
0a667ff741 | ||
|
|
d37ad85f72 | ||
|
|
2b63568611 | ||
|
|
fcf9f93825 | ||
|
|
07efc0b73b | ||
|
|
6813b48c7e | ||
|
|
d58444c6d2 | ||
|
|
dd8a0bd30f | ||
|
|
b65b0636aa | ||
|
|
9ec6321261 | ||
|
|
07eb66c205 | ||
|
|
0e790e6fb5 | ||
|
|
08186924a4 | ||
|
|
e9faf5cf94 | ||
|
|
8c0efe09e5 | ||
|
|
32d2c96d22 | ||
|
|
e958988989 | ||
|
|
131f10bd80 | ||
|
|
a61615a196 | ||
|
|
4fdb6910a5 | ||
|
|
67c4c90351 | ||
|
|
16f7288b19 | ||
|
|
36a7e87ae4 | ||
|
|
16badda118 | ||
|
|
99820e7edc | ||
|
|
6a03a92f5f | ||
|
|
80c3b98a84 | ||
|
|
afd2b4b387 | ||
|
|
df49769f3d | ||
|
|
05c2946322 | ||
|
|
2ed392edbf | ||
|
|
3d597a554d | ||
|
|
42af4e40ae | ||
|
|
242efc7219 | ||
|
|
a6bacb857d | ||
|
|
eab54724a1 | ||
|
|
49885cfeff | ||
|
|
4330f49011 | ||
|
|
7687299275 | ||
|
|
79ba787b03 | ||
|
|
5a184a205f | ||
|
|
4b5a6b597a | ||
|
|
9e9c3eeb79 | ||
|
|
cd996f9dbf | ||
|
|
ab4c91158a | ||
|
|
1130a23e5b | ||
|
|
9ac6943220 | ||
|
|
0f55284b77 | ||
|
|
c75046de3f | ||
|
|
e7df82f110 | ||
|
|
ee4c7d3007 | ||
|
|
2895303421 | ||
|
|
3f16f05525 | ||
|
|
fb33671923 | ||
|
|
482fb5b6e2 | ||
|
|
b1004b61f9 | ||
|
|
27af9b2605 | ||
|
|
e28ac866f8 | ||
|
|
5e0a80f227 | ||
|
|
ec0982ca1f | ||
|
|
e7c442d21c | ||
|
|
a9db47fdd3 | ||
|
|
b856a72886 | ||
|
|
03da0d31f9 | ||
|
|
1c40e4374b | ||
|
|
d7df1426f2 | ||
|
|
5035e86f59 | ||
|
|
0af91265ab | ||
|
|
8e63d04e66 | ||
|
|
5ac0c6deb0 | ||
|
|
6b0d82fb0c | ||
|
|
2bfdfe366c | ||
|
|
898fb0f320 | ||
|
|
f53686a2f3 | ||
|
|
eae1670f54 | ||
|
|
544d68833c | ||
|
|
c24a6b2359 | ||
|
|
b720b57d1d | ||
|
|
365b7fe90a | ||
|
|
c7ab833e66 | ||
|
|
9536f288e9 | ||
|
|
e64d4039d0 | ||
|
|
5f077e56f0 | ||
|
|
a9253a24e0 | ||
|
|
749136b526 | ||
|
|
36a8b7b7f3 | ||
|
|
a29908c865 | ||
|
|
57d87c27cd | ||
|
|
1c2e9a476c | ||
|
|
5d87133df0 | ||
|
|
fd2f67b73f | ||
|
|
d3abcaf67b | ||
|
|
14dce5ac2b | ||
|
|
abd002071a | ||
|
|
77add42eeb | ||
|
|
bba049b4bf | ||
|
|
4e41c3520c | ||
|
|
4144af3351 | ||
|
|
30f749a2a2 | ||
|
|
6e9f282af7 | ||
|
|
4491be01dd | ||
|
|
8c163fd980 | ||
|
|
9f6a158fc2 | ||
|
|
19965fa3c8 | ||
|
|
6bb42ffafc | ||
|
|
4a1edc0720 | ||
|
|
a5a016bf33 | ||
|
|
4be4f597a3 | ||
|
|
dfbbd4f784 | ||
|
|
2662dae560 | ||
|
|
6f6f9f08f8 | ||
|
|
a76fba57c4 | ||
|
|
680766f29b | ||
|
|
adcfd4ca4d | ||
|
|
e276a49a91 | ||
|
|
5995f763b1 | ||
|
|
a123639b5c | ||
|
|
8a118d53c8 | ||
|
|
d572391532 | ||
|
|
58ae7a0402 | ||
|
|
f843093a8c | ||
|
|
3e06586f81 | ||
|
|
60f148326a | ||
|
|
02e1413ca5 | ||
|
|
7b4b85ee54 | ||
|
|
6c0a416f16 | ||
|
|
23cc88bf92 | ||
|
|
5528f0ddf2 | ||
|
|
8d3296fb1b | ||
|
|
136f9209a3 | ||
|
|
a290134fd2 | ||
|
|
a54e59666a | ||
|
|
42ea6af1eb | ||
|
|
f9b741766b | ||
|
|
09359329a0 | ||
|
|
647bb41ddf | ||
|
|
f25c14d48d | ||
|
|
81a3d559f5 | ||
|
|
4e0ee7a5da | ||
|
|
1c80a258d2 | ||
|
|
129ed6a07b | ||
|
|
df09a0c73b | ||
|
|
ff5c958354 | ||
|
|
4f90c89db6 | ||
|
|
524b515fdb | ||
|
|
163256b001 | ||
|
|
05bbc65dcc | ||
|
|
6624f6b7f9 | ||
|
|
f32279dec5 | ||
|
|
a90fd85907 | ||
|
|
9815b27e94 | ||
|
|
ebbe481fe7 | ||
|
|
9e337faa33 | ||
|
|
37826e0261 | ||
|
|
20e4342796 | ||
|
|
51be16950d | ||
|
|
be866a78ff | ||
|
|
f9d2432c69 | ||
|
|
6543a3d75a | ||
|
|
a77936981e | ||
|
|
6f2120bb59 | ||
|
|
98e18239fd | ||
|
|
3d159015be | ||
|
|
f5af66a1ab | ||
|
|
540192ff96 | ||
|
|
c1cfd4a8c6 | ||
|
|
322300c329 | ||
|
|
1ac18f7903 | ||
|
|
4f4987e9ea | ||
|
|
65bf562ff4 | ||
|
|
f47032e7e9 | ||
|
|
379f3ec8dd | ||
|
|
8d7e35b723 | ||
|
|
1349eea0d0 | ||
|
|
bed5157f32 | ||
|
|
12c7f51a1e | ||
|
|
7e32c8de4d | ||
|
|
3a42350c21 | ||
|
|
1a54597202 | ||
|
|
39f4eb9940 | ||
|
|
4b996651af | ||
|
|
884d40f321 | ||
|
|
3d2b41da08 | ||
|
|
1bf2dbb7df | ||
|
|
e0dfb77dd1 | ||
|
|
578fddc1b7 | ||
|
|
089355d706 | ||
|
|
6b2c3caf03 | ||
|
|
065c37cb28 | ||
|
|
3a40025fd3 | ||
|
|
8dc341d868 | ||
|
|
0ed121ddbd | ||
|
|
969f4229dc | ||
|
|
27a940184e | ||
|
|
77fa09a506 | ||
|
|
8836104ab2 | ||
|
|
396837517d | ||
|
|
38b3f1bde2 | ||
|
|
4780168ba8 | ||
|
|
d1a790d103 | ||
|
|
3ad6ab8c6a | ||
|
|
1e189da85e | ||
|
|
a094c50873 | ||
|
|
ad324410c6 | ||
|
|
9f4b7368a0 | ||
|
|
c8ddedb8d0 | ||
|
|
7deab2826b | ||
|
|
643879f779 | ||
|
|
ce2a18f483 | ||
|
|
487d067f75 | ||
|
|
c4d5e1b4f3 | ||
|
|
0e0cc30039 | ||
|
|
a766cc791b | ||
|
|
d017c3e248 | ||
|
|
cc27ee04a8 | ||
|
|
87459bf24b | ||
|
|
5091c9e10f | ||
|
|
14a22d9033 | ||
|
|
7ded5a2de5 | ||
|
|
6b436a0192 | ||
|
|
52343686f5 | ||
|
|
eec9d05b19 | ||
|
|
89703fd430 | ||
|
|
dc246946a7 | ||
|
|
944e1120cb | ||
|
|
cccda60df8 | ||
|
|
e338e748eb | ||
|
|
0526a24cf3 | ||
|
|
c4ba1b025a | ||
|
|
252f330658 | ||
|
|
45590415a6 | ||
|
|
e562adc752 | ||
|
|
1e2fd44a6b | ||
|
|
1c903320be | ||
|
|
74eaf3a268 | ||
|
|
6fcd74c713 | ||
|
|
33136c6553 | ||
|
|
cb225db203 | ||
|
|
0dbd5006ea | ||
|
|
08b3677ce8 | ||
|
|
b08549a25b | ||
|
|
221bc4cb5d | ||
|
|
b655b8e97b | ||
|
|
03e7b5dcc6 | ||
|
|
5f09e829df | ||
|
|
e6759919dc | ||
|
|
6c65a3fc74 | ||
|
|
e0ffd31123 | ||
|
|
4c1597113a | ||
|
|
4006506b64 | ||
|
|
14facdbcd2 | ||
|
|
726ace49d8 | ||
|
|
f45d383367 | ||
|
|
3a32e2b53a | ||
|
|
dc45e93cea | ||
|
|
c0f9642719 | ||
|
|
da8d036997 | ||
|
|
3c911cc785 | ||
|
|
4071f15f27 | ||
|
|
90de7923db | ||
|
|
c28f1535a3 | ||
|
|
704e9c132e | ||
|
|
713d6f5f76 | ||
|
|
1a6d245eae | ||
|
|
d909dd2a32 | ||
|
|
7bb466dd86 | ||
|
|
e09bf5cc40 | ||
|
|
129e21e7c3 | ||
|
|
87dcd2909d | ||
|
|
e47ec4f551 | ||
|
|
d6cfcbe149 | ||
|
|
7a713807e9 | ||
|
|
6e49b5bc30 | ||
|
|
adbc5b86f5 | ||
|
|
071ea955af | ||
|
|
806aefa966 | ||
|
|
5b7d23186d | ||
|
|
0cb4677e80 | ||
|
|
bd65ecf17b | ||
|
|
9da2adff4c | ||
|
|
a2a1aad109 | ||
|
|
dcc530a389 | ||
|
|
97037a87f3 | ||
|
|
4e67efc0d6 | ||
|
|
7cbb73719e | ||
|
|
d3f139c31e | ||
|
|
8940b6e5a3 | ||
|
|
1c9831a9f4 | ||
|
|
7da27435cc | ||
|
|
bd18f86517 | ||
|
|
41f66b435b | ||
|
|
48481a7230 | ||
|
|
dde6bc1f80 | ||
|
|
e39fd1de0e | ||
|
|
2fc9a81e9e | ||
|
|
f65874d751 | ||
|
|
3914895784 | ||
|
|
0bc7e24d0a | ||
|
|
2a40ceced7 | ||
|
|
d4868f2cc2 | ||
|
|
e87d63779d | ||
|
|
6672d65018 | ||
|
|
1f78c520f5 | ||
|
|
687e435a38 | ||
|
|
b3222dc107 | ||
|
|
ebba6caa3d | ||
|
|
88bbef9003 | ||
|
|
712771a139 | ||
|
|
9033b0ded7 | ||
|
|
877cfe9393 | ||
|
|
347aa56acb | ||
|
|
0fc410139c | ||
|
|
51528235db | ||
|
|
003599cbda | ||
|
|
bacfad37a9 | ||
|
|
6ef6ba7b8a | ||
|
|
93c0da0367 | ||
|
|
268d19e8a3 | ||
|
|
a383b302c2 | ||
|
|
95ebbf2608 | ||
|
|
f880574c78 | ||
|
|
350c310906 | ||
|
|
5026f7686e | ||
|
|
ab3337ddf5 | ||
|
|
c9268f2e3d | ||
|
|
fa01388f97 | ||
|
|
d8dc89ac7b | ||
|
|
a659fd1fa9 | ||
|
|
27fa3ba34c | ||
|
|
663f42948e | ||
|
|
baca8f0cdb | ||
|
|
c5c3a82b23 | ||
|
|
c0617864e1 | ||
|
|
d9ef9ab497 | ||
|
|
65d9f783e1 | ||
|
|
f70232d1b0 | ||
|
|
b083aed245 | ||
|
|
0faac20d53 | ||
|
|
cef14ca7cd | ||
|
|
090debe0df | ||
|
|
296f1270ee | ||
|
|
334a18a114 | ||
|
|
dd4ddae082 | ||
|
|
4983e967bc | ||
|
|
0b5e2f14ed | ||
|
|
70102aecb5 | ||
|
|
ae75153561 | ||
|
|
dd23d60513 | ||
|
|
db95481b76 | ||
|
|
3e0da535b9 | ||
|
|
c74602551e | ||
|
|
1722e2c7a5 | ||
|
|
8a845e2951 | ||
|
|
72765bada0 | ||
|
|
b380f180cc | ||
|
|
f1799799a1 | ||
|
|
4bc8a8673d | ||
|
|
cbdd907393 | ||
|
|
aa7ff3ef47 | ||
|
|
ebdf6434eb | ||
|
|
9b7470d204 | ||
|
|
9f3ab8683c | ||
|
|
fa464aca90 | ||
|
|
2724ce368a | ||
|
|
89f7cbe877 | ||
|
|
fab9af2206 | ||
|
|
4d01b4fa59 | ||
|
|
c3365aa37e | ||
|
|
426e80d4c3 | ||
|
|
30a282d126 | ||
|
|
0a96621e3e | ||
|
|
d9d30abe7a | ||
|
|
03b56d8140 | ||
|
|
1f79ce4e96 | ||
|
|
8d80f23a0f | ||
|
|
d89b951451 | ||
|
|
1906a38ec8 | ||
|
|
8d91a3e3b8 | ||
|
|
3324259977 | ||
|
|
ec2db2d541 | ||
|
|
5cf248c7f3 | ||
|
|
3876a566ff | ||
|
|
334e6cc618 | ||
|
|
64033fcfc2 | ||
|
|
fbe3af4719 | ||
|
|
699ed4ee85 | ||
|
|
903f67a154 | ||
|
|
9a89dab9e0 | ||
|
|
435a2565b8 | ||
|
|
8267b8da57 | ||
|
|
8b5773c246 | ||
|
|
fd4c88d202 | ||
|
|
9b26623aa5 | ||
|
|
b115ec7c14 | ||
|
|
a2e6e2a06a | ||
|
|
f0eab06a8b | ||
|
|
b6c839d693 | ||
|
|
177a724d58 | ||
|
|
949803dcf6 | ||
|
|
b763a88e60 | ||
|
|
18c7f164a8 | ||
|
|
e037ff6bba | ||
|
|
95bfda1ff0 | ||
|
|
b9992e0b45 | ||
|
|
f6ba793885 | ||
|
|
bbe65a8ea3 | ||
|
|
20af7371d0 | ||
|
|
a33fb0c439 | ||
|
|
87003c8b5b | ||
|
|
ddd48ee79f | ||
|
|
a9819df3ee | ||
|
|
15dffb22aa | ||
|
|
6ef5f1ff62 | ||
|
|
acc28c68a4 | ||
|
|
6c2da60eb0 | ||
|
|
490081077d | ||
|
|
f4a08092da | ||
|
|
0116efd4a3 | ||
|
|
9719a24f8a | ||
|
|
3a7d5a099b | ||
|
|
27dba655fc | ||
|
|
a25dd387bf | ||
|
|
a89767cc16 | ||
|
|
a13df5b68d | ||
|
|
6a689504ff | ||
|
|
6521d2bcfb | ||
|
|
26d55b15de | ||
|
|
041b7e8a29 | ||
|
|
6eeb425e7a | ||
|
|
d2d0eb829e | ||
|
|
058505b664 | ||
|
|
8adecedb40 | ||
|
|
838a51db21 | ||
|
|
4d4dfc27fc | ||
|
|
1444439cf3 | ||
|
|
e64fc8d5ab | ||
|
|
9a31f772d9 | ||
|
|
12876ee4ce | ||
|
|
a4a349da45 | ||
|
|
ecbc3cae71 | ||
|
|
57609c87fb | ||
|
|
bb2e24e028 | ||
|
|
5cafb26e93 | ||
|
|
f74ef7b293 | ||
|
|
7ef8f531e7 | ||
|
|
afb65c7b19 | ||
|
|
74a0673663 | ||
|
|
20fae6e512 | ||
|
|
509cd242f7 | ||
|
|
f01ec516eb | ||
|
|
394b1000d2 | ||
|
|
e0b9fba788 | ||
|
|
378ee29cc2 | ||
|
|
02bcef71dd | ||
|
|
248e7c8003 | ||
|
|
a2e93ebd56 | ||
|
|
21a9454de1 | ||
|
|
ec286eed08 | ||
|
|
f16978d1fe | ||
|
|
fa3adc7606 | ||
|
|
192144fc5d | ||
|
|
a4d155c5e4 | ||
|
|
6c56e9d199 | ||
|
|
bb18f87a98 | ||
|
|
dda6a31381 | ||
|
|
6e25e18e98 | ||
|
|
ffd978c24f | ||
|
|
4c4af03a5a | ||
|
|
c0739bb8b7 | ||
|
|
5add7cb0b1 | ||
|
|
99f49f1061 | ||
|
|
401eaca9ab | ||
|
|
da784fe02b | ||
|
|
d507b29559 | ||
|
|
35ca13b38d | ||
|
|
04b92a31a8 | ||
|
|
dd311d759d | ||
|
|
b504ca9f0a | ||
|
|
bd61c5c721 | ||
|
|
24694b0047 | ||
|
|
5258154285 | ||
|
|
221f993b46 | ||
|
|
ae5ea70b93 | ||
|
|
f59ffbeb63 | ||
|
|
ce55275634 | ||
|
|
20c5892f9a | ||
|
|
9231245a3f | ||
|
|
cbfed20e6f | ||
|
|
640274ed52 | ||
|
|
1507a39a2b | ||
|
|
e6405653d8 | ||
|
|
be1541a646 | ||
|
|
f37f9bf5e3 | ||
|
|
a5c39ca8c8 | ||
|
|
cb7e7b2a74 | ||
|
|
2e8e705bab | ||
|
|
ab3812432b | ||
|
|
d2acb36e3b | ||
|
|
601743ff7a | ||
|
|
7eca74ac05 | ||
|
|
02b4ec04bb | ||
|
|
8ead9014d0 | ||
|
|
4920e82dd6 | ||
|
|
3150253661 | ||
|
|
baa423b45a | ||
|
|
77e5d8ea96 | ||
|
|
9a8166d649 | ||
|
|
da8c0cd2db | ||
|
|
fc2711b543 | ||
|
|
b4327bd36c | ||
|
|
f7f75923aa | ||
|
|
0b4388bc5b | ||
|
|
f08883071f | ||
|
|
bb8a2ee3a6 | ||
|
|
6bfa7595d8 | ||
|
|
8308e501cd | ||
|
|
25909c0d9d | ||
|
|
2844b1ac38 | ||
|
|
6fd62b1cee | ||
|
|
1579f53a61 | ||
|
|
7af7851952 | ||
|
|
5dbd1a6dcc | ||
|
|
24881537a1 | ||
|
|
631c29b26b | ||
|
|
ab249d4032 | ||
|
|
5bfa3f6274 | ||
|
|
82ee25dfaa | ||
|
|
fd9a24553f | ||
|
|
ae1c20fad9 | ||
|
|
734f777ff9 | ||
|
|
498115d5d9 | ||
|
|
033ff06b68 | ||
|
|
c145a8e1a1 | ||
|
|
ae5b0dbc29 | ||
|
|
95aa957c80 | ||
|
|
7dff9ddeeb | ||
|
|
b4e755747f | ||
|
|
348fa402be | ||
|
|
344218ff3d | ||
|
|
90a1a2febf | ||
|
|
e234a24894 | ||
|
|
d9beb75bd6 | ||
|
|
dadea8c83d | ||
|
|
31d40e5509 | ||
|
|
a917e84b51 | ||
|
|
f30b497206 | ||
|
|
706e32c20b | ||
|
|
4d98552c37 | ||
|
|
5311bd3f4e | ||
|
|
8d716fb7ba | ||
|
|
01b3caaf49 | ||
|
|
cd73c0b9ca | ||
|
|
7ec5230402 | ||
|
|
9dbe026f83 | ||
|
|
3fae10da3e | ||
|
|
d775154b92 | ||
|
|
6c306b3542 | ||
|
|
58b46ffeac | ||
|
|
0bb7b7c60e | ||
|
|
58adf9a385 | ||
|
|
d6ba968ace | ||
|
|
1706721a62 | ||
|
|
7f88bd2eaf | ||
|
|
b819366265 | ||
|
|
47ff7d9dba | ||
|
|
e5f5254877 | ||
|
|
4778f728f9 | ||
|
|
e80e4573be | ||
|
|
fdf0f3f282 | ||
|
|
a81fce47d0 | ||
|
|
2cd6989b11 | ||
|
|
21abb0d205 | ||
|
|
5e1a271ca2 | ||
|
|
868e4c41e1 | ||
|
|
a6e23bb713 | ||
|
|
446406dd62 | ||
|
|
091f9f7eae | ||
|
|
10b1e06263 | ||
|
|
a8865a51fd | ||
|
|
32343297fc | ||
|
|
aaa5deb0c0 | ||
|
|
808c519a1f | ||
|
|
262b110f9f | ||
|
|
d0fe19f996 | ||
|
|
8e6675677f | ||
|
|
82dbae6185 | ||
|
|
943f1df325 | ||
|
|
018abcfe5f | ||
|
|
6b4f716508 | ||
|
|
82b6ff0c28 | ||
|
|
d0c3132a63 | ||
|
|
02f0252dea | ||
|
|
74b3921eee | ||
|
|
1695c79021 | ||
|
|
a3b0534b86 | ||
|
|
a13f94d40f | ||
|
|
73288420a8 | ||
|
|
e224387eb4 | ||
|
|
626d322639 | ||
|
|
7dce7a84c7 | ||
|
|
6234268f10 | ||
|
|
7a1525c568 | ||
|
|
fe99eb7147 | ||
|
|
d691ecbea3 | ||
|
|
f60bcca893 | ||
|
|
75661a2266 | ||
|
|
1026f361ef | ||
|
|
69fe203006 | ||
|
|
f8ccaa3a81 | ||
|
|
c10a0a0cdf | ||
|
|
aceb6ab666 | ||
|
|
c3a2aff9d3 | ||
|
|
c9e41db826 | ||
|
|
1e7a12fff5 | ||
|
|
ba88e48f6a | ||
|
|
52979662c5 | ||
|
|
50e6d80065 | ||
|
|
16a24cfeac | ||
|
|
bab095e5b5 | ||
|
|
b1a3b078e9 | ||
|
|
baae44610a | ||
|
|
8d2dffe5b4 | ||
|
|
7b3eb23af8 | ||
|
|
fb526846fe | ||
|
|
6bd1371283 | ||
|
|
3c8c7af196 | ||
|
|
929b43ed48 | ||
|
|
a947064b7d | ||
|
|
5bc9866f43 | ||
|
|
61d82e210a | ||
|
|
a876ac9386 | ||
|
|
da1502c463 | ||
|
|
76bb782f64 | ||
|
|
e6f4b043cb | ||
|
|
d651ffaf2e | ||
|
|
e554378b5e | ||
|
|
b463bd797e | ||
|
|
699e6e16c9 | ||
|
|
f8477c41e1 | ||
|
|
9a63333aec | ||
|
|
6e40914258 | ||
|
|
56a1dd931e | ||
|
|
57fd2e6a52 | ||
|
|
113db06cdd | ||
|
|
4ee5c59cfd | ||
|
|
15812678a3 | ||
|
|
ee0379b321 | ||
|
|
dcf279177d | ||
|
|
01115824f7 | ||
|
|
b68473ae11 | ||
|
|
a65c203c9b | ||
|
|
0a848240d4 | ||
|
|
d03821b88a | ||
|
|
4d32762899 | ||
|
|
2cb4b6d16d | ||
|
|
b770e566dd | ||
|
|
51ebc88f0c | ||
|
|
a04a75724d | ||
|
|
6e5af3d799 | ||
|
|
0283a73a32 | ||
|
|
5f593031f0 | ||
|
|
0eeef2d4bd | ||
|
|
bb6164e30b | ||
|
|
d3beae4871 | ||
|
|
8df0df32f8 | ||
|
|
b0228dd0fd | ||
|
|
ffca2dee1d | ||
|
|
cba985bfea | ||
|
|
6a10a67205 | ||
|
|
880fb5bd89 | ||
|
|
6a0ade074d | ||
|
|
6cf4629d0f | ||
|
|
ce23e5fa9e | ||
|
|
d16fb838ca | ||
|
|
6b9eb8aae3 | ||
|
|
78008d1fea | ||
|
|
69fb9bb39b | ||
|
|
92f1557235 | ||
|
|
8e487ba36d | ||
|
|
7eb088b5ed | ||
|
|
9ef8ea95b0 | ||
|
|
eedf54b485 | ||
|
|
a461815957 | ||
|
|
687c2f08f6 | ||
|
|
2294f23e5f | ||
|
|
bdfd81322b | ||
|
|
3ceb0de8d8 | ||
|
|
c4b5208867 | ||
|
|
9c3f6b0c10 | ||
|
|
0550755c7d | ||
|
|
47602f267a | ||
|
|
656e67ef90 | ||
|
|
c53883b635 | ||
|
|
c4278c81f1 | ||
|
|
c94dcf5940 | ||
|
|
08ca3eff12 | ||
|
|
b40a241b2e | ||
|
|
f86f1e83ad | ||
|
|
be85701abe | ||
|
|
190eb474a6 | ||
|
|
8db1138081 | ||
|
|
afbfd4d3fa | ||
|
|
9b8efbfdd5 | ||
|
|
cacada87f3 | ||
|
|
8a36c54318 | ||
|
|
879d411669 | ||
|
|
b38be2ce7b | ||
|
|
1810c9b61c | ||
|
|
98737f14f1 | ||
|
|
b311118a04 | ||
|
|
8a337f1faf | ||
|
|
dbc5bd4104 | ||
|
|
a9c3f566da | ||
|
|
6d9c9cd964 | ||
|
|
25c8883e49 | ||
|
|
793943fc2f | ||
|
|
e98f86c540 | ||
|
|
1c8ff48f92 | ||
|
|
1fb73e2211 | ||
|
|
5279ade0e7 | ||
|
|
984134fb9d | ||
|
|
eb8f1f24b7 | ||
|
|
e49dc8bcfa | ||
|
|
e742da24a7 | ||
|
|
203b65475c | ||
|
|
576c5f4c9e | ||
|
|
d2434b5591 | ||
|
|
634c008fcd | ||
|
|
83f1ccb8ad | ||
|
|
cea401c513 | ||
|
|
6b54c1b6d4 | ||
|
|
193c4a953e | ||
|
|
d389134036 | ||
|
|
d8b140e341 | ||
|
|
5931e1143b | ||
|
|
e6d0c4b79f | ||
|
|
44a4a18320 | ||
|
|
2f96506a6e | ||
|
|
f904606b32 | ||
|
|
99bb14680a | ||
|
|
83df3dda95 | ||
|
|
5e4d67209c | ||
|
|
2798af1668 | ||
|
|
f0e41ce4c7 | ||
|
|
300602dd32 | ||
|
|
136f6778e2 | ||
|
|
2fa7907054 | ||
|
|
f3803c4c22 | ||
|
|
5d37927b0a | ||
|
|
6227f5cfa2 | ||
|
|
9fbb9fa5e1 | ||
|
|
de81ee7ee6 | ||
|
|
5fcf971e28 | ||
|
|
492f70fc4b | ||
|
|
3ced7b7212 | ||
|
|
7b55867ea7 | ||
|
|
3e15ef1c86 | ||
|
|
0cdc836054 | ||
|
|
1aad62b95d | ||
|
|
ed1c88920e | ||
|
|
e6ca20c4a2 | ||
|
|
cfa3470df6 | ||
|
|
479f297cf6 | ||
|
|
7e1b222f90 | ||
|
|
69baa6ea1a | ||
|
|
0fce93be37 | ||
|
|
51611ec2bb | ||
|
|
228a78136d | ||
|
|
34d10ace7a | ||
|
|
57bd0a5628 | ||
|
|
42e4860855 | ||
|
|
ea1c9f70d7 | ||
|
|
d3085b0450 | ||
|
|
63d02f1d5f | ||
|
|
dfecbe5bfa | ||
|
|
bcf9f00de5 | ||
|
|
a8e8e35678 | ||
|
|
2ec4a8b4ce | ||
|
|
6c3d3dee81 | ||
|
|
40b3116ed7 | ||
|
|
df7582b138 | ||
|
|
b08dab9aa1 | ||
|
|
da5a4804df | ||
|
|
d12f43498e | ||
|
|
f9f2facd76 | ||
|
|
eaee3954c1 | ||
|
|
eb235e11b6 | ||
|
|
0c5fe61ed3 | ||
|
|
76052b443a | ||
|
|
5a48248e1e | ||
|
|
bedff3278f | ||
|
|
0bb48153a5 | ||
|
|
b75246e3ca | ||
|
|
2d31f0d7fe | ||
|
|
87cfca721e | ||
|
|
54d36f3337 | ||
|
|
a4a17d171a | ||
|
|
7c2673fc66 | ||
|
|
c77ecbb10f | ||
|
|
f0ba57ba23 | ||
|
|
893aa80361 | ||
|
|
59ac3d1d45 | ||
|
|
247a9478c8 | ||
|
|
1c64d858c2 | ||
|
|
91a1d7faaf | ||
|
|
214bbfa7b6 | ||
|
|
3ee4492b3c | ||
|
|
38c453b3c6 | ||
|
|
3d41c61991 | ||
|
|
1f9f47f97e | ||
|
|
41cc2923b1 | ||
|
|
4c180f3eed | ||
|
|
5f9a64dbea | ||
|
|
9d37bfdcf1 | ||
|
|
d738c3aca6 | ||
|
|
836c4313ab | ||
|
|
91c6478add | ||
|
|
fce527a55b | ||
|
|
9a1f62fc1f | ||
|
|
018d8656d3 | ||
|
|
2636e1ba45 | ||
|
|
caed07dfc1 | ||
|
|
373cf3328d | ||
|
|
0370c3fa01 | ||
|
|
f5143a7d63 | ||
|
|
346b2a27cb | ||
|
|
38281e6361 | ||
|
|
6e8413f568 | ||
|
|
cb04364381 | ||
|
|
83d2555123 | ||
|
|
0ace97c8d4 | ||
|
|
9e3a0c61b8 | ||
|
|
2fda5c7873 | ||
|
|
e29868c8ce | ||
|
|
ac560be870 | ||
|
|
5a29cbf4a7 | ||
|
|
dc77894f68 | ||
|
|
74432a6b9d | ||
|
|
2b2fa7e77c | ||
|
|
c3f71b33aa | ||
|
|
927aae72d1 | ||
|
|
2a674f4e8d | ||
|
|
0b86ce2bda | ||
|
|
548a0709f4 | ||
|
|
da84c0bb4d | ||
|
|
9e68a5b9ab | ||
|
|
6982bdaa28 | ||
|
|
c1809232fe | ||
|
|
3c06c82eb7 | ||
|
|
1bcccb3134 | ||
|
|
cdf49dc87e | ||
|
|
0a0fb8f803 | ||
|
|
60cfd56369 | ||
|
|
73050d38c5 | ||
|
|
c50e941972 | ||
|
|
7c59fd21e2 | ||
|
|
b095a4221c | ||
|
|
1ef39fa3b8 | ||
|
|
fcf4530d83 | ||
|
|
0515e14d27 | ||
|
|
ddbef0bd79 | ||
|
|
bc5d31f86a | ||
|
|
09147a2aab | ||
|
|
a75a119e2f | ||
|
|
c1b3546161 | ||
|
|
8338432c7b | ||
|
|
8beae065cf | ||
|
|
0e7d39aa13 | ||
|
|
74063ad735 | ||
|
|
55a29808c9 | ||
|
|
40f3de3939 | ||
|
|
5d94ab09e3 | ||
|
|
b34ff6853d | ||
|
|
e2570be957 | ||
|
|
95e6fff3da | ||
|
|
9de12b7385 | ||
|
|
beffe906e4 | ||
|
|
e850d1073d | ||
|
|
c02a2ba5ba | ||
|
|
f92bb6690b | ||
|
|
5842a3bba6 | ||
|
|
fcf691d97c | ||
|
|
a32c7d5f07 | ||
|
|
edfb18b75a | ||
|
|
5544c5d5d4 | ||
|
|
22100f7c3a | ||
|
|
8ece01ccda | ||
|
|
9b68039a62 | ||
|
|
a914326e75 | ||
|
|
2b7dd35e05 | ||
|
|
15e41169ad | ||
|
|
f8c5219c12 | ||
|
|
c570b67dda | ||
|
|
456fac1700 | ||
|
|
41e58c394b | ||
|
|
5aeda5f67b | ||
|
|
c96adf168c | ||
|
|
40c5bc01ff | ||
|
|
09dabef70c | ||
|
|
96edee806e | ||
|
|
e58f4683d1 | ||
|
|
9750817bf0 | ||
|
|
7099d730e6 | ||
|
|
13c290e99f | ||
|
|
cf37966e39 | ||
|
|
9449c4b9b5 | ||
|
|
046172e5d9 | ||
|
|
c74446e38c | ||
|
|
7897460993 | ||
|
|
4b59583bca | ||
|
|
41f73559f2 | ||
|
|
d3090c0965 | ||
|
|
dc5caebbf8 | ||
|
|
14280dfedb | ||
|
|
8fdf11135a | ||
|
|
c8baa8f349 | ||
|
|
a6e25b46af | ||
|
|
395d14ab58 | ||
|
|
0d4b57df7a | ||
|
|
416e7617b3 | ||
|
|
838c470017 | ||
|
|
f0a09665db | ||
|
|
1397fa64d5 | ||
|
|
ac17a6afcf | ||
|
|
35af1bab30 | ||
|
|
1fe7bb271a | ||
|
|
774e25d944 | ||
|
|
6770e8541d | ||
|
|
70e94e4dde | ||
|
|
0ffbc6e345 | ||
|
|
25e796753f | ||
|
|
70d9ef4f77 | ||
|
|
fd67c9a589 | ||
|
|
f0917ff774 | ||
|
|
843281dec0 | ||
|
|
3a21588429 | ||
|
|
21eeb09a3c | ||
|
|
900c5ed358 | ||
|
|
195c8a92d1 | ||
|
|
7c651e6093 | ||
|
|
860b899f0c | ||
|
|
87b7524de9 | ||
|
|
29641ae16a | ||
|
|
02e32a7a9d | ||
|
|
3056369c6e | ||
|
|
3da75726d3 | ||
|
|
b7346de47d | ||
|
|
7a69100b2f | ||
|
|
2732d2b9d3 | ||
|
|
87bb27cc4f | ||
|
|
bafa300b0f | ||
|
|
939cf4542f | ||
|
|
874975da54 | ||
|
|
f0bebd4c33 | ||
|
|
c444a11862 | ||
|
|
4c0704e338 | ||
|
|
77f4cd5d58 | ||
|
|
9858d3c5a8 | ||
|
|
414acbc9ec | ||
|
|
21f904db42 | ||
|
|
f6ca253849 | ||
|
|
3f989191e3 | ||
|
|
2bea014e89 | ||
|
|
84fc19a75f | ||
|
|
d803924ef0 | ||
|
|
889f8d9d30 | ||
|
|
1dcb7eaf1f | ||
|
|
5f9e4ace2f | ||
|
|
6386330973 | ||
|
|
fd89b9755e | ||
|
|
730f454278 | ||
|
|
e2fca29c91 | ||
|
|
f97a222cf5 | ||
|
|
c75105e977 | ||
|
|
7096471d65 | ||
|
|
cc1cee8a38 | ||
|
|
5f2680889f | ||
|
|
b3ae8bb606 | ||
|
|
72d9f37845 | ||
|
|
fdfccafd84 | ||
|
|
a784f946ba | ||
|
|
a04af6c4bd | ||
|
|
64b24a96c8 | ||
|
|
a62a5d0d7b | ||
|
|
3043d1e839 | ||
|
|
a3aefb6902 | ||
|
|
a42aaa270c | ||
|
|
f8b471c17b | ||
|
|
87adff44db | ||
|
|
767bba9c04 | ||
|
|
0c827521d0 | ||
|
|
80cec7d12f | ||
|
|
5f916357e9 | ||
|
|
ea82eea9bb | ||
|
|
22222d7db4 | ||
|
|
cebee369d1 | ||
|
|
faf809851c | ||
|
|
d05aafd76b | ||
|
|
8d52721873 | ||
|
|
66c6152cd2 | ||
|
|
32cd51d3a5 | ||
|
|
497a28401e | ||
|
|
e46912047c | ||
|
|
56b573ede5 | ||
|
|
0276be1789 | ||
|
|
7db4c60fc3 | ||
|
|
95cc01dd91 | ||
|
|
cce1dddf42 | ||
|
|
0938b57841 | ||
|
|
aef8550e2f | ||
|
|
71bf0bde32 | ||
|
|
750623b9b1 | ||
|
|
1f12c53b65 | ||
|
|
8717ea1b95 | ||
|
|
db2eb658ca | ||
|
|
70483484ce | ||
|
|
d21afc43a1 | ||
|
|
7ad0803f2e | ||
|
|
ec4bfd55f9 | ||
|
|
f65174a0db | ||
|
|
8b1fcd4dd7 | ||
|
|
9509237958 | ||
|
|
f20fd20a06 | ||
|
|
8e48120fb7 | ||
|
|
44cc5ac883 | ||
|
|
9a43cc8c4b | ||
|
|
8dfc0d54f4 | ||
|
|
77febd21de | ||
|
|
84a997c66b | ||
|
|
b900a59fc2 | ||
|
|
ca782dbc58 | ||
|
|
746cda27ec | ||
|
|
16d1651656 | ||
|
|
4735fb2377 | ||
|
|
ec6b518fd2 | ||
|
|
580ad1b192 | ||
|
|
23d8810486 | ||
|
|
d579d62eb6 | ||
|
|
529f785e3c | ||
|
|
0581ae87b4 | ||
|
|
cda1059336 | ||
|
|
1aed6b5c30 | ||
|
|
4e68705b24 | ||
|
|
216cb1ea12 | ||
|
|
8ef6a0b432 | ||
|
|
5dc152c46e | ||
|
|
c3a21437e4 | ||
|
|
32bc8dcbf9 | ||
|
|
677ca7b4aa | ||
|
|
dfc2331104 | ||
|
|
cd06bbfb8d | ||
|
|
1d596bcbac | ||
|
|
0cb7b9c13d | ||
|
|
a180efeca7 | ||
|
|
eef24ea29c | ||
|
|
458bb3d7f7 | ||
|
|
ffb23d92c0 | ||
|
|
0ce39a4cf6 | ||
|
|
a24c70e490 | ||
|
|
8d4ef6e883 | ||
|
|
54865ebdee | ||
|
|
cb8e704d5c | ||
|
|
57f4978442 | ||
|
|
b8833f4c9e | ||
|
|
5c40cbc675 | ||
|
|
a455dcc919 | ||
|
|
289487cc46 | ||
|
|
42b28d5bd6 | ||
|
|
46bee05d93 | ||
|
|
49bed5cd5f | ||
|
|
624cf93e2e | ||
|
|
6ab76cda51 | ||
|
|
15beb81368 | ||
|
|
6a6cce03b7 | ||
|
|
970ff87ef6 | ||
|
|
8b6c4d322f | ||
|
|
4467a00acd | ||
|
|
63efc61517 | ||
|
|
7aa18345c8 | ||
|
|
34149187a8 | ||
|
|
2d132cd0d5 | ||
|
|
8d741361e0 | ||
|
|
2bcea3a370 | ||
|
|
ead3cace02 | ||
|
|
7afa5c7b43 | ||
|
|
115765e1ee | ||
|
|
d712fae2d7 | ||
|
|
0dba9bd87f | ||
|
|
2fbc495088 | ||
|
|
37d490cbe4 | ||
|
|
451679c582 | ||
|
|
7270a13ef7 | ||
|
|
16f3f90ed7 | ||
|
|
9ff2f81a10 | ||
|
|
1bc9a1af6a | ||
|
|
760d9e3341 | ||
|
|
5b28abc5ed | ||
|
|
defb1596bb | ||
|
|
9c117d5875 | ||
|
|
1b09fce42a | ||
|
|
5e328830e7 | ||
|
|
606da1c45b | ||
|
|
6232c1a8f3 | ||
|
|
15a24e68d2 | ||
|
|
c12ace81db | ||
|
|
531990b516 | ||
|
|
b90a3dbffe | ||
|
|
0352b97798 | ||
|
|
e45abe60bf | ||
|
|
8077481707 | ||
|
|
4651dd33cd | ||
|
|
c93cfa0871 | ||
|
|
d57cb7d411 | ||
|
|
81088766ee | ||
|
|
ae59a50c28 | ||
|
|
4a05056393 | ||
|
|
71e97c815a | ||
|
|
8b7787aa60 | ||
|
|
e0f94b052b | ||
|
|
eb2c9ffd32 | ||
|
|
5af315c165 | ||
|
|
e9fdfc339b | ||
|
|
132730acea | ||
|
|
405097d323 | ||
|
|
c9d79f26c5 | ||
|
|
7ef13eaf0c | ||
|
|
2756aba21f | ||
|
|
c01a7f57df | ||
|
|
33a4dd3841 | ||
|
|
3c150db4a2 | ||
|
|
e31f5d2325 | ||
|
|
f8a61c667e | ||
|
|
e2fe60399f | ||
|
|
59c4e35691 | ||
|
|
2dc5afd018 | ||
|
|
b5df39bc46 | ||
|
|
f87b709923 | ||
|
|
671aa1036b | ||
|
|
4580340db3 | ||
|
|
31b53eae39 | ||
|
|
089423958d | ||
|
|
0d02ea43e1 | ||
|
|
93239ae3fb | ||
|
|
5d21e9364d | ||
|
|
b9306c4cca | ||
|
|
c07bd31f61 | ||
|
|
fee4830669 | ||
|
|
9016b6778e | ||
|
|
e05501a1ae | ||
|
|
23d09fcc9e | ||
|
|
5d11fccbf2 | ||
|
|
3851957dd0 | ||
|
|
135afb0883 | ||
|
|
27b27af7cd | ||
|
|
20fe31b803 | ||
|
|
ebca9aab8d | ||
|
|
49821e0416 | ||
|
|
b5d6f1ada5 | ||
|
|
b40325cd7b | ||
|
|
3b27ec66e1 | ||
|
|
52b8b36d54 | ||
|
|
7e3106dd1b | ||
|
|
399e0d94fc | ||
|
|
eef1ff9e87 | ||
|
|
9202c7504b | ||
|
|
3fd7e3b93e | ||
|
|
b6996df86a | ||
|
|
4b3efd7bfa | ||
|
|
12c2682c34 | ||
|
|
2caf67b813 | ||
|
|
fbbe13661a | ||
|
|
0fb102edae | ||
|
|
b4dd90d074 | ||
|
|
2e3f806d07 | ||
|
|
f76092e83e | ||
|
|
1e44081583 | ||
|
|
26b3a4259d | ||
|
|
8a074a7e6d | ||
|
|
e99434582f | ||
|
|
fec57df994 | ||
|
|
033cb2d20a | ||
|
|
a5fa58e3e6 | ||
|
|
fdc9d2714b | ||
|
|
824ca9b513 | ||
|
|
a74a740964 | ||
|
|
2041d52495 | ||
|
|
fb5d528eff | ||
|
|
a2cedbd9da | ||
|
|
8574eddfa0 | ||
|
|
2ccf876929 | ||
|
|
28df150784 | ||
|
|
0950083da2 | ||
|
|
88c5f910da | ||
|
|
a9d3e4798e | ||
|
|
d85d834b23 | ||
|
|
5729da5a9f | ||
|
|
1255331160 | ||
|
|
0fef51b5f6 | ||
|
|
7cf18c0468 | ||
|
|
b994509b9d | ||
|
|
6571e19e8f | ||
|
|
7441164db9 | ||
|
|
09bb10cd3f | ||
|
|
bd6f24f4b1 | ||
|
|
0a174ad219 | ||
|
|
33d004fb9a | ||
|
|
652bf34c77 | ||
|
|
3f11bad68e | ||
|
|
5245fbfc6d | ||
|
|
68f8ee8a99 | ||
|
|
7b83a52dce | ||
|
|
5f57c82478 | ||
|
|
3128cbef73 | ||
|
|
694b2bf055 | ||
|
|
e03a023c5f | ||
|
|
3ff5d3bd09 | ||
|
|
04841196e3 | ||
|
|
18dd495d99 | ||
|
|
f714945bbb | ||
|
|
a318ef2232 | ||
|
|
8ed24de9d3 | ||
|
|
e06e50936d | ||
|
|
d710e9cb47 | ||
|
|
9af3699850 | ||
|
|
3cc7b4d8c2 | ||
|
|
8b58732a1f | ||
|
|
a2a0935343 | ||
|
|
2668156e53 | ||
|
|
d67615d239 | ||
|
|
afd70b64ed | ||
|
|
78a6e43667 | ||
|
|
a65af97e43 | ||
|
|
637dfabe69 | ||
|
|
ff8b3c10f3 | ||
|
|
f442555d8f | ||
|
|
bdf9f882ad | ||
|
|
1e5c5bfe00 | ||
|
|
0e78fdfcb4 | ||
|
|
4f532f86dc | ||
|
|
92844825cb | ||
|
|
6b13fc99b0 | ||
|
|
0f7aa26757 | ||
|
|
a06f963263 | ||
|
|
d31de1e654 | ||
|
|
46a0301022 | ||
|
|
73d26036ef | ||
|
|
b9637c9d7d | ||
|
|
08497683bf | ||
|
|
44a50f6e58 | ||
|
|
4c2b4e5c66 | ||
|
|
b0884ad7c3 | ||
|
|
cf09f86df2 | ||
|
|
d33c38f671 | ||
|
|
fbfba21854 | ||
|
|
b2093d6f10 | ||
|
|
736a0190c1 | ||
|
|
a74c259c38 | ||
|
|
d3dedd6312 | ||
|
|
920eab0ef9 | ||
|
|
d576085e8d | ||
|
|
62b9a9e287 | ||
|
|
56ffe1d62a | ||
|
|
14acbcb5f1 | ||
|
|
9a0011bf49 | ||
|
|
7b9f18b097 | ||
|
|
f8e4333157 | ||
|
|
b5c933aa94 | ||
|
|
c441af3f2c | ||
|
|
e885421a67 | ||
|
|
ce4fe24a93 | ||
|
|
1c0e2ceba5 | ||
|
|
a435e8ec47 | ||
|
|
b958393135 | ||
|
|
a6dd697a68 | ||
|
|
a4833e7b35 | ||
|
|
54fa643c10 | ||
|
|
6047cd4542 | ||
|
|
8c5f7df280 | ||
|
|
ff1250c33c | ||
|
|
4297c10fe9 | ||
|
|
ab6ad94ec3 | ||
|
|
759183461f | ||
|
|
f850fa6bc9 | ||
|
|
5a242d35b7 | ||
|
|
abf5d66e01 | ||
|
|
e92360e0d4 | ||
|
|
b5c0fdc013 | ||
|
|
906ef02c5e | ||
|
|
7550decbc0 | ||
|
|
acd88c3c8a | ||
|
|
a3854a2de1 | ||
|
|
880aca5d83 | ||
|
|
2d1c98a5a7 | ||
|
|
fefa06ba21 | ||
|
|
18faa91c94 | ||
|
|
9f23c7b31a | ||
|
|
eee6926bab | ||
|
|
6806f952d6 | ||
|
|
faaef54b42 | ||
|
|
c29852fae7 | ||
|
|
7d100dae97 | ||
|
|
206e800963 | ||
|
|
555a334315 | ||
|
|
d2c5def108 | ||
|
|
98323c530e | ||
|
|
b36510dbb9 | ||
|
|
50e533c32b | ||
|
|
33277c3d37 | ||
|
|
28f2ad0109 | ||
|
|
5d10ee4e61 | ||
|
|
b4190ada0c | ||
|
|
60d314552d | ||
|
|
c971d54543 | ||
|
|
346f019fa8 | ||
|
|
d61c2480b6 | ||
|
|
e30b5b86da | ||
|
|
bd74fe24fd | ||
|
|
b30eaa8ee3 | ||
|
|
75c530516a | ||
|
|
3b49821e82 | ||
|
|
febf443960 | ||
|
|
f5da81e782 | ||
|
|
9cb23ac584 | ||
|
|
6ff3100c1f | ||
|
|
e3ea3723bf | ||
|
|
33443d9b41 | ||
|
|
e0ef61659f | ||
|
|
655ad77bce | ||
|
|
c09e546240 | ||
|
|
a08b14a89e | ||
|
|
12e90b0eef | ||
|
|
7606f1bcbd | ||
|
|
cabb43b187 | ||
|
|
b85cda3f6e | ||
|
|
b92f1b7497 | ||
|
|
273a51a335 | ||
|
|
212dc88b89 | ||
|
|
ce82a91d14 | ||
|
|
52a08401c7 | ||
|
|
706c0cb033 | ||
|
|
1567a613a6 | ||
|
|
d767d80d20 | ||
|
|
1103a9d510 | ||
|
|
c34af4b97a | ||
|
|
8dcee4d338 | ||
|
|
fc1e69ea73 | ||
|
|
db460117c1 | ||
|
|
1c514df0fd | ||
|
|
780ec5cbec | ||
|
|
3721873b62 | ||
|
|
3bdc77ca91 | ||
|
|
b8f54d64a4 | ||
|
|
90d48b320a | ||
|
|
a797342800 | ||
|
|
31e608e0ae | ||
|
|
ebcfb0e577 | ||
|
|
161c9f9142 | ||
|
|
2a099da726 | ||
|
|
5118397004 | ||
|
|
546c340656 | ||
|
|
3034cc7c52 | ||
|
|
d89381ff78 | ||
|
|
86cac58100 | ||
|
|
8fc062007e | ||
|
|
9fd92e3306 | ||
|
|
a4cbbe5dd4 | ||
|
|
da7ea9655f | ||
|
|
00a8c642dd | ||
|
|
e1152f6e56 | ||
|
|
7cf9c6842a | ||
|
|
d375535cd9 | ||
|
|
c5ea868f47 | ||
|
|
884d333805 | ||
|
|
3b9921a15b | ||
|
|
17b753d95e | ||
|
|
6a8781b5e2 | ||
|
|
0dfaf01749 | ||
|
|
088aa83e22 | ||
|
|
934adb1e9f | ||
|
|
50e0593de6 | ||
|
|
f2637c6421 | ||
|
|
a52dacea68 | ||
|
|
f56a33d22d | ||
|
|
2aa858b0fb | ||
|
|
c3b8ba4b9a | ||
|
|
ac96b8c0e1 | ||
|
|
a329a9f4d8 | ||
|
|
63cc7eb44d | ||
|
|
6505f32221 | ||
|
|
22088260f4 |
18
.gitignore
vendored
18
.gitignore
vendored
@@ -1,3 +1,19 @@
|
||||
coverage.html
|
||||
.DS_Store
|
||||
lib-cov
|
||||
*.seed
|
||||
*.log
|
||||
*.log
|
||||
*.csv
|
||||
*.dat
|
||||
*.out
|
||||
*.pid
|
||||
*.swp
|
||||
*.swo
|
||||
benchmarks/graphs
|
||||
testing
|
||||
node_modules/
|
||||
testing
|
||||
.coverage_data
|
||||
cover_html
|
||||
test.js
|
||||
.idea
|
||||
|
||||
12
.gitmodules
vendored
12
.gitmodules
vendored
@@ -1,12 +0,0 @@
|
||||
[submodule "lib/support/oo"]
|
||||
path = lib/support/oo
|
||||
url = git://github.com/visionmedia/js-oo.git
|
||||
[submodule "lib/support/ext"]
|
||||
path = lib/support/ext
|
||||
url = git://github.com/visionmedia/ext.js.git
|
||||
[submodule "lib/support/sass"]
|
||||
path = lib/support/sass
|
||||
url = git://github.com/visionmedia/sass.js.git
|
||||
[submodule "lib/support/haml"]
|
||||
path = lib/support/haml
|
||||
url = git://github.com/creationix/haml-js.git
|
||||
11
.npmignore
Normal file
11
.npmignore
Normal file
@@ -0,0 +1,11 @@
|
||||
.git*
|
||||
benchmarks/
|
||||
docs/
|
||||
examples/
|
||||
support/
|
||||
test/
|
||||
testing.js
|
||||
.DS_Store
|
||||
.travis.yml
|
||||
coverage.html
|
||||
lib-cov
|
||||
8
.travis.yml
Normal file
8
.travis.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.10"
|
||||
- "0.11"
|
||||
matrix:
|
||||
allow_failures:
|
||||
- node_js: "0.11"
|
||||
fast_finish: true
|
||||
1283
History.md
1283
History.md
File diff suppressed because it is too large
Load Diff
22
LICENSE
Normal file
22
LICENSE
Normal file
@@ -0,0 +1,22 @@
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2009-2014 TJ Holowaychuk <tj@vision-media.ca>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
45
Makefile
45
Makefile
@@ -1,17 +1,34 @@
|
||||
|
||||
NODE = node
|
||||
MOCHA_OPTS= --check-leaks
|
||||
REPORTER = dot
|
||||
|
||||
all: test
|
||||
check: test
|
||||
|
||||
test:
|
||||
@$(NODE) spec/node.js all
|
||||
|
||||
app: app-chat
|
||||
|
||||
app-chat:
|
||||
@$(NODE) examples/chat/app.js
|
||||
|
||||
app-upload:
|
||||
@$(NODE) examples/upload/app.js
|
||||
|
||||
.PHONY: test app
|
||||
test: test-unit test-acceptance
|
||||
|
||||
test-unit:
|
||||
@NODE_ENV=test ./node_modules/.bin/mocha \
|
||||
--reporter $(REPORTER) \
|
||||
--globals setImmediate,clearImmediate \
|
||||
$(MOCHA_OPTS)
|
||||
|
||||
test-acceptance:
|
||||
@NODE_ENV=test ./node_modules/.bin/mocha \
|
||||
--reporter $(REPORTER) \
|
||||
--bail \
|
||||
test/acceptance/*.js
|
||||
|
||||
test-cov: lib-cov
|
||||
@EXPRESS_COV=1 $(MAKE) test REPORTER=html-cov > coverage.html
|
||||
|
||||
lib-cov:
|
||||
@jscoverage lib lib-cov
|
||||
|
||||
bench:
|
||||
@$(MAKE) -C benchmarks
|
||||
|
||||
clean:
|
||||
rm -f coverage.html
|
||||
rm -fr lib-cov
|
||||
|
||||
.PHONY: test test-unit test-acceptance bench clean
|
||||
|
||||
187
Readme.md
187
Readme.md
@@ -1,121 +1,108 @@
|
||||
[](http://expressjs.com/)
|
||||
|
||||
# Express
|
||||
|
||||
Insanely fast (and small) server-side JavaScript web development framework
|
||||
built on **node.js** and the **V8 JavaScript engine**.
|
||||
Fast, unopinionated, minimalist web framework for [node](http://nodejs.org).
|
||||
|
||||
* Visit the [Wiki](http://wiki.github.com/visionmedia/express) for documentation
|
||||
* Visit the [Google Group](http://groups.google.com/group/express-js) for discussion
|
||||
[](https://travis-ci.org/visionmedia/express) [](https://www.gittip.com/visionmedia/) [](http://badge.fury.io/js/express)
|
||||
|
||||
## Features (so far)
|
||||
```js
|
||||
var express = require('express');
|
||||
var app = express();
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send('Hello World');
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
```
|
||||
|
||||
**PROTIP** Be sure to read [Migrating from 3.x to 4.x](https://github.com/visionmedia/express/wiki/Migrating-from-3.x-to-4.x) as well as [New features in 4.x](https://github.com/visionmedia/express/wiki/New-features-in-4.x).
|
||||
|
||||
* Sexy DSL with robust sinatra-like routing
|
||||
* High performance
|
||||
* Session support
|
||||
* Mime helpers
|
||||
* Redirection helpers
|
||||
* Multipart file upload support
|
||||
* Test helpers (mock requests etc)
|
||||
* Environment based configuration
|
||||
* Light-weight JavaScript class implementation via js-oo
|
||||
* View support (ejs, haml, sass, etc)
|
||||
* Full test coverage
|
||||
* Extremely readable specs
|
||||
|
||||
## Installation
|
||||
|
||||
Install the [Kiwi package manager for nodejs](http://github.com/visionmedia/kiwi)
|
||||
and run:
|
||||
|
||||
$ kiwi -v install express
|
||||
|
||||
or
|
||||
$ npm install express
|
||||
|
||||
Install via git clone:
|
||||
|
||||
$ git://github.com/visionmedia/express.git && cd express && git submodule update --init
|
||||
## Quick Start
|
||||
|
||||
## Performance
|
||||
The quickest way to get started with express is to utilize the executable [`express(1)`](http://github.com/expressjs/generator) to generate an application as shown below:
|
||||
|
||||
Install the executable. The executable's major version will match Express's:
|
||||
|
||||
$ npm install -g express-generator@3
|
||||
|
||||
Extensive performance enhancements have not yet been made,
|
||||
since we are focusing on the framework it-self at the moment.
|
||||
|
||||
However if you are interested view the premature [benchmarks for Express framework](http://vision-media.ca/resources/nodejs/express-nodejs-web-development-framework-performance).
|
||||
Create the app:
|
||||
|
||||
## Examples
|
||||
$ express /tmp/foo && cd /tmp/foo
|
||||
|
||||
Below is a tiny Express application. View the [Wiki](http://wiki.github.com/visionmedia/express/) for detailed information.
|
||||
Install dependencies:
|
||||
|
||||
require.paths.unshift('express/lib')
|
||||
require('express')
|
||||
|
||||
get('/user', function(){
|
||||
this.redirect('/user/' + this.currentUser.id)
|
||||
})
|
||||
|
||||
get('/user/:id', function(id){
|
||||
this.render('user.haml.html', {
|
||||
locals: {
|
||||
user: this.currentUser,
|
||||
usersOnline: Session.store.length()
|
||||
}
|
||||
})
|
||||
})
|
||||
$ npm install
|
||||
|
||||
run()
|
||||
|
||||
## Running Tests
|
||||
Start the server:
|
||||
|
||||
Express uses the [JSpec](http://jspec.info) BDD JavaScript testing
|
||||
framework to write and run elegant spec suites. JSpec is frozen
|
||||
to spec/lib and **does not** require separate installation.
|
||||
$ npm start
|
||||
|
||||
$ make test
|
||||
|
||||
Run individual suites:
|
||||
## Features
|
||||
|
||||
* Robust routing
|
||||
* HTTP helpers (redirection, caching, etc)
|
||||
* View system supporting 14+ template engines
|
||||
* Content negotiation
|
||||
* Focus on high performance
|
||||
* Executable for generating applications quickly
|
||||
* High test coverage
|
||||
|
||||
## Philosophy
|
||||
|
||||
The Express philosophy is to provide small, robust tooling for HTTP servers, making
|
||||
it a great solution for single page applications, web sites, hybrids, or public
|
||||
HTTP APIs.
|
||||
|
||||
Express does not force you to use any specific ORM or template engine. With support for over
|
||||
14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js),
|
||||
you can quickly craft your perfect framework.
|
||||
|
||||
$ node spec/node.js core
|
||||
$ node spec/node.js mime
|
||||
$ node spec/node.js routing
|
||||
...
|
||||
|
||||
Express is currently being developed with node --version:
|
||||
v0.1.32
|
||||
|
||||
## More Information
|
||||
|
||||
* [JavaScript Extensions & Utilities](http://github.com/visionmedia/ext.js)
|
||||
* [JavaScript Sass](http://github.com/visionmedia/sass.js)
|
||||
* Featured in [Advanced JavaScript e-book](http://www.dev-mag.com/2010/02/18/advanced-javascript/) for only $4
|
||||
|
||||
* [Website and Documentation](http://expressjs.com/) stored at [visionmedia/expressjs.com](https://github.com/visionmedia/expressjs.com)
|
||||
* Join #express on freenode
|
||||
* [Google Group](http://groups.google.com/group/express-js) for discussion
|
||||
* Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) and [defunctzombie](https://twitter.com/defunctzombie) on twitter for updates
|
||||
* Visit the [Wiki](http://github.com/visionmedia/express/wiki)
|
||||
* [Русскоязычная документация](http://jsman.ru/express/)
|
||||
* Run express examples [online](https://runnable.com/express)
|
||||
|
||||
## Viewing Examples
|
||||
|
||||
Clone the Express repo, then install the dev dependencies to install all the example / test suite dependencies:
|
||||
|
||||
$ git clone git://github.com/visionmedia/express.git --depth 1
|
||||
$ cd express
|
||||
$ npm install
|
||||
|
||||
Then run whichever tests you want:
|
||||
|
||||
$ node examples/content-negotiation
|
||||
|
||||
You can also view live examples here:
|
||||
|
||||
<a href="https://runnable.com/express" target="_blank"><img src="https://runnable.com/external/styles/assets/runnablebtn.png" style="width:67px;height:25px;"></a>
|
||||
|
||||
## Running Tests
|
||||
|
||||
To run the test suite, first invoke the following command within the repo, installing the development dependencies:
|
||||
|
||||
$ npm install
|
||||
|
||||
Then run the tests:
|
||||
|
||||
$ make test
|
||||
|
||||
## Contributors
|
||||
|
||||
Author: [TJ Holowaychuk](http://github.com/visionmedia)
|
||||
Lead Maintainer: [Roman Shtylman](https://github.com/defunctzombie)
|
||||
Contributors: https://github.com/visionmedia/express/graphs/contributors
|
||||
|
||||
* TJ Holowaychuk (visionmedia) <tj@vision-media.ca>
|
||||
* Aaron Heckmann (aheckmann) <aaron.heckmann+github@gmail.com>
|
||||
* Ciaran Jessup (ciaranj) <ciaranj@gmail.com>
|
||||
* Gareth Jones (csausdev) <gareth.jones@sensis.com.au>
|
||||
|
||||
## License
|
||||
## License
|
||||
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2009 TJ Holowaychuk <tj@vision-media.ca>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
MIT
|
||||
|
||||
13
benchmarks/Makefile
Normal file
13
benchmarks/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
all:
|
||||
@./run 1 middleware
|
||||
@./run 5 middleware
|
||||
@./run 10 middleware
|
||||
@./run 15 middleware
|
||||
@./run 20 middleware
|
||||
@./run 30 middleware
|
||||
@./run 50 middleware
|
||||
@./run 100 middleware
|
||||
@echo
|
||||
|
||||
.PHONY: all
|
||||
23
benchmarks/middleware.js
Normal file
23
benchmarks/middleware.js
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
var http = require('http');
|
||||
var express = require('..');
|
||||
var app = express();
|
||||
|
||||
// number of middleware
|
||||
|
||||
var n = parseInt(process.env.MW || '1', 10);
|
||||
console.log(' %s middleware', n);
|
||||
|
||||
while (n--) {
|
||||
app.use(function(req, res, next){
|
||||
next();
|
||||
});
|
||||
}
|
||||
|
||||
var body = new Buffer('Hello World');
|
||||
|
||||
app.use(function(req, res, next){
|
||||
res.send(body);
|
||||
});
|
||||
|
||||
app.listen(3333);
|
||||
16
benchmarks/run
Executable file
16
benchmarks/run
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
echo
|
||||
MW=$1 node $2 &
|
||||
pid=$!
|
||||
|
||||
sleep 2
|
||||
|
||||
wrk 'http://localhost:3333/?foo[bar]=baz' \
|
||||
-d 3 \
|
||||
-c 50 \
|
||||
-t 8 \
|
||||
| grep 'Requests/sec' \
|
||||
| awk '{ print " " $2 }'
|
||||
|
||||
kill $pid
|
||||
127
examples/auth/app.js
Normal file
127
examples/auth/app.js
Normal file
@@ -0,0 +1,127 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var hash = require('./pass').hash;
|
||||
var bodyParser = require('body-parser');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var session = require('express-session');
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// config
|
||||
|
||||
app.set('view engine', 'ejs');
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
// middleware
|
||||
|
||||
app.use(bodyParser());
|
||||
app.use(cookieParser('shhhh, very secret'));
|
||||
app.use(session());
|
||||
|
||||
// Session-persisted message middleware
|
||||
|
||||
app.use(function(req, res, next){
|
||||
var err = req.session.error;
|
||||
var msg = req.session.success;
|
||||
delete req.session.error;
|
||||
delete req.session.success;
|
||||
res.locals.message = '';
|
||||
if (err) res.locals.message = '<p class="msg error">' + err + '</p>';
|
||||
if (msg) res.locals.message = '<p class="msg success">' + msg + '</p>';
|
||||
next();
|
||||
});
|
||||
|
||||
// dummy database
|
||||
|
||||
var users = {
|
||||
tj: { name: 'tj' }
|
||||
};
|
||||
|
||||
// when you create a user, generate a salt
|
||||
// and hash the password ('foobar' is the pass here)
|
||||
|
||||
hash('foobar', function(err, salt, hash){
|
||||
if (err) throw err;
|
||||
// store the salt & hash in the "db"
|
||||
users.tj.salt = salt;
|
||||
users.tj.hash = hash;
|
||||
});
|
||||
|
||||
|
||||
// Authenticate using our plain-object database of doom!
|
||||
|
||||
function authenticate(name, pass, fn) {
|
||||
if (!module.parent) console.log('authenticating %s:%s', name, pass);
|
||||
var user = users[name];
|
||||
// query the db for the given username
|
||||
if (!user) return fn(new Error('cannot find user'));
|
||||
// apply the same algorithm to the POSTed password, applying
|
||||
// the hash against the pass / salt, if there is a match we
|
||||
// found the user
|
||||
hash(pass, user.salt, function(err, hash){
|
||||
if (err) return fn(err);
|
||||
if (hash == user.hash) return fn(null, user);
|
||||
fn(new Error('invalid password'));
|
||||
});
|
||||
}
|
||||
|
||||
function restrict(req, res, next) {
|
||||
if (req.session.user) {
|
||||
next();
|
||||
} else {
|
||||
req.session.error = 'Access denied!';
|
||||
res.redirect('/login');
|
||||
}
|
||||
}
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.redirect('login');
|
||||
});
|
||||
|
||||
app.get('/restricted', restrict, function(req, res){
|
||||
res.send('Wahoo! restricted area, click to <a href="/logout">logout</a>');
|
||||
});
|
||||
|
||||
app.get('/logout', function(req, res){
|
||||
// destroy the user's session to log them out
|
||||
// will be re-created next request
|
||||
req.session.destroy(function(){
|
||||
res.redirect('/');
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/login', function(req, res){
|
||||
res.render('login');
|
||||
});
|
||||
|
||||
app.post('/login', function(req, res){
|
||||
authenticate(req.body.username, req.body.password, function(err, user){
|
||||
if (user) {
|
||||
// Regenerate session when signing in
|
||||
// to prevent fixation
|
||||
req.session.regenerate(function(){
|
||||
// Store the user's primary key
|
||||
// in the session store to be retrieved,
|
||||
// or in this case the entire user object
|
||||
req.session.user = user;
|
||||
req.session.success = 'Authenticated as ' + user.name
|
||||
+ ' click to <a href="/logout">logout</a>. '
|
||||
+ ' You may now access <a href="/restricted">/restricted</a>.';
|
||||
res.redirect('back');
|
||||
});
|
||||
} else {
|
||||
req.session.error = 'Authentication failed, please check your '
|
||||
+ ' username and password.'
|
||||
+ ' (use "tj" and "foobar")';
|
||||
res.redirect('login');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
48
examples/auth/pass.js
Normal file
48
examples/auth/pass.js
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
// check out https://github.com/visionmedia/node-pwd
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var crypto = require('crypto');
|
||||
|
||||
/**
|
||||
* Bytesize.
|
||||
*/
|
||||
|
||||
var len = 128;
|
||||
|
||||
/**
|
||||
* Iterations. ~300ms
|
||||
*/
|
||||
|
||||
var iterations = 12000;
|
||||
|
||||
/**
|
||||
* Hashes a password with optional `salt`, otherwise
|
||||
* generate a salt for `pass` and invoke `fn(err, salt, hash)`.
|
||||
*
|
||||
* @param {String} password to hash
|
||||
* @param {String} optional salt
|
||||
* @param {Function} callback
|
||||
* @api public
|
||||
*/
|
||||
|
||||
exports.hash = function (pwd, salt, fn) {
|
||||
if (3 == arguments.length) {
|
||||
crypto.pbkdf2(pwd, salt, iterations, len, function(err, hash){
|
||||
fn(err, hash.toString('base64'));
|
||||
});
|
||||
} else {
|
||||
fn = salt;
|
||||
crypto.randomBytes(len, function(err, salt){
|
||||
if (err) return fn(err);
|
||||
salt = salt.toString('base64');
|
||||
crypto.pbkdf2(pwd, salt, iterations, len, function(err, hash){
|
||||
if (err) return fn(err);
|
||||
fn(null, salt, hash.toString('base64'));
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
2
examples/auth/views/foot.ejs
Normal file
2
examples/auth/views/foot.ejs
Normal file
@@ -0,0 +1,2 @@
|
||||
</body>
|
||||
</html>
|
||||
18
examples/auth/views/head.ejs
Normal file
18
examples/auth/views/head.ejs
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><%= title %></title>
|
||||
<style>
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 13px Helvetica, Arial, sans-serif;
|
||||
}
|
||||
.error {
|
||||
color: red
|
||||
}
|
||||
.success {
|
||||
color: green;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
22
examples/auth/views/login.ejs
Normal file
22
examples/auth/views/login.ejs
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
<% var title = 'Authentication Example' %>
|
||||
<% include head %>
|
||||
|
||||
<h1>Login</h1>
|
||||
<%- message %>
|
||||
Try accessing <a href="/restricted">/restricted</a>, then authenticate with "tj" and "foobar".
|
||||
<form method="post" action="/login">
|
||||
<p>
|
||||
<label>Username:</label>
|
||||
<input type="text" name="username">
|
||||
</p>
|
||||
<p>
|
||||
<label>Password:</label>
|
||||
<input type="text" name="password">
|
||||
</p>
|
||||
<p>
|
||||
<input type="submit" value="Login">
|
||||
</p>
|
||||
</form>
|
||||
|
||||
<% include foot %>
|
||||
28
examples/big-view/index.js
Normal file
28
examples/big-view/index.js
Normal file
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var app = express();
|
||||
|
||||
app.set('views', __dirname);
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
var pets = [];
|
||||
|
||||
var n = 1000;
|
||||
while (n--) {
|
||||
pets.push({ name: 'Tobi', age: 2, species: 'ferret' });
|
||||
pets.push({ name: 'Loki', age: 1, species: 'ferret' });
|
||||
pets.push({ name: 'Jane', age: 6, species: 'ferret' });
|
||||
}
|
||||
|
||||
app.use(logger('dev'));
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('pets', { pets: pets });
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
console.log('Express listening on port 3000');
|
||||
12
examples/big-view/pets.jade
Normal file
12
examples/big-view/pets.jade
Normal file
@@ -0,0 +1,12 @@
|
||||
style.
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 16px "Helvetica Neue", Helvetica;
|
||||
}
|
||||
|
||||
table
|
||||
for pet in pets
|
||||
tr
|
||||
td= pet.name
|
||||
td= pet.age
|
||||
td= pet.species
|
||||
@@ -1,79 +0,0 @@
|
||||
|
||||
require.paths.unshift('lib')
|
||||
require('express')
|
||||
require('express/plugins')
|
||||
|
||||
var messages = [],
|
||||
utils = require('express/utils')
|
||||
|
||||
configure(function(){
|
||||
use(MethodOverride)
|
||||
use(ContentLength)
|
||||
use(Cookie)
|
||||
use(Cache, { lifetime: (5).minutes, reapInterval: (1).minute })
|
||||
use(Session, { lifetime: (15).minutes, reapInterval: (1).minute })
|
||||
use(Logger)
|
||||
set('root', __dirname)
|
||||
})
|
||||
|
||||
get('/', function(){
|
||||
this.pass('/chat')
|
||||
})
|
||||
|
||||
get('/chat', function(){
|
||||
this.render('chat.haml.html', {
|
||||
locals: {
|
||||
title: 'Chat',
|
||||
messages: messages,
|
||||
name: this.session.name,
|
||||
usersOnline: Session.store.length()
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
post('/chat', function(){
|
||||
this.session.name = this.param('name')
|
||||
messages
|
||||
.push(utils.escape(this.param('name')) + ': ' + utils.escape(this.param('message'))
|
||||
.replace(/(http:\/\/[^\s]+)/g, '<a href="$1" target="express-chat">$1</a>')
|
||||
.replace(/:\)/g, '<img src="http://icons3.iconfinder.netdna-cdn.com/data/icons/ledicons/emoticon_smile.png">'))
|
||||
this.halt(200)
|
||||
})
|
||||
|
||||
get('/chat/messages', function(){
|
||||
var self = this,
|
||||
previousLength = messages.length,
|
||||
timer = setInterval(function(){
|
||||
if (messages.length > previousLength)
|
||||
self.contentType('json'),
|
||||
previousLength = messages.length,
|
||||
self.halt(200, JSON.encode(messages)),
|
||||
clearInterval(timer)
|
||||
}, 100)
|
||||
})
|
||||
|
||||
get('/public/*', function(file){
|
||||
this.sendfile(__dirname + '/public/' + file)
|
||||
})
|
||||
|
||||
get('/*.css', function(file){
|
||||
this.render(file + '.sass.css', { layout: false })
|
||||
})
|
||||
|
||||
get('/error/view', function(){
|
||||
this.render('does.not.exist')
|
||||
})
|
||||
|
||||
get('/error', function(){
|
||||
throw new Error('oh noes!')
|
||||
})
|
||||
|
||||
get('/simple', function(){
|
||||
return 'Hello :)'
|
||||
})
|
||||
|
||||
get('/favicon.ico', function(){
|
||||
this.halt()
|
||||
})
|
||||
|
||||
run()
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.2 KiB |
@@ -1,28 +0,0 @@
|
||||
|
||||
$(function(){
|
||||
// Send message
|
||||
$('form').submit(function(){
|
||||
var message = $('input[name=message]'),
|
||||
name = $('input[name=name]')
|
||||
if (message.val())
|
||||
$.post('/chat', { name: name.val(), message: message.val() }, function(){
|
||||
message.val('')
|
||||
})
|
||||
else
|
||||
message.css('border', '1px solid red')
|
||||
return false
|
||||
})
|
||||
|
||||
// Longpoll
|
||||
;(function poll(){
|
||||
$.getJSON('/chat/messages', function(messages){
|
||||
$('#messages').empty()
|
||||
$.each(messages, function(i, msg){
|
||||
$('#messages')
|
||||
.append('<li>' + msg + '</li>')
|
||||
.get(0).scrollTop = $('#messages').get(0).scrollHeight
|
||||
})
|
||||
poll()
|
||||
})
|
||||
})()
|
||||
})
|
||||
19
examples/chat/public/javascripts/jquery.js
vendored
19
examples/chat/public/javascripts/jquery.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
||||
%h1 Chat
|
||||
%img.bubble{ src: '/public/images/bubble.png' }
|
||||
%ul#messages
|
||||
:each msg in messages
|
||||
%li= msg
|
||||
%form{ method: 'post' }
|
||||
%input{ type: 'hidden', name: '_method', value: 'put' }
|
||||
%input{ type: 'text', name: 'name', value: name || 'guest' }
|
||||
%input{ type: 'text', name: 'message' }
|
||||
%input{ type: 'submit', value: 'Send' }
|
||||
@@ -1,11 +0,0 @@
|
||||
%html
|
||||
%head
|
||||
%title= title
|
||||
%script{ src: '/public/javascripts/jquery.js' }
|
||||
%script{ src: '/public/javascripts/app.js' }
|
||||
%link{ rel: 'stylesheet', href: '/style.css' }
|
||||
%body
|
||||
#wrapper= body
|
||||
#online
|
||||
Online:
|
||||
%strong= usersOnline
|
||||
@@ -1,81 +0,0 @@
|
||||
body
|
||||
:font-family "Helvetica Neue", "Lucida Grande", "Arial"
|
||||
:font-size 13px
|
||||
:text-align center
|
||||
=text-stroke 1px rgba(255, 255, 255, 0.1)
|
||||
:color #555
|
||||
|
||||
h1, h2
|
||||
:margin 0
|
||||
:font-size 22px
|
||||
:color #343434
|
||||
h1
|
||||
:text-shadow 1px 2px 2px #ddd
|
||||
:font-size 60px
|
||||
|
||||
img.bubble
|
||||
:position absolute
|
||||
:top -25px
|
||||
:left 120px
|
||||
|
||||
#wrapper
|
||||
:position relative
|
||||
:margin 100px auto
|
||||
:width 500px
|
||||
:text-align left
|
||||
|
||||
ul
|
||||
:margin 0
|
||||
:padding 0
|
||||
:max-height 300px
|
||||
:overflow-x hidden
|
||||
li
|
||||
:margin 5px 0
|
||||
:padding 3px 8px
|
||||
:list-style none
|
||||
:border 1px solid #eee
|
||||
=border-radius 3px
|
||||
=border-radius 3px
|
||||
li:hover
|
||||
:cursor pointer
|
||||
:color #2E2E2E
|
||||
|
||||
input[type=text]
|
||||
:padding 5px
|
||||
:border 1px solid #ddd
|
||||
:outline none
|
||||
=border-radius 2px
|
||||
input[type=text]:focus
|
||||
:border-color #00C3FF
|
||||
|
||||
input[type=submit]
|
||||
=border-radius 2px
|
||||
=box-shadow 0 1px 2px #ddd
|
||||
:padding 6px 10px
|
||||
:border solid 1px #999
|
||||
:background -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ddd))
|
||||
:color #333
|
||||
:text-decoration none
|
||||
:cursor pointer
|
||||
:display inline-block
|
||||
:text-align center
|
||||
:text-shadow 0px 1px 1px #fff
|
||||
:line-height 1
|
||||
input[type=submit]:hover
|
||||
:background -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#E6E4E4))
|
||||
input[type=submit]:active
|
||||
:background -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#c7c7c7))
|
||||
input[name=name]
|
||||
:width 80px
|
||||
|
||||
a
|
||||
:color #1ABFF1
|
||||
=transition-property padding
|
||||
=transition-duration 0.15s
|
||||
a:hover
|
||||
:padding 0 5px
|
||||
a:hover:before
|
||||
:content 'visit: '
|
||||
|
||||
#online
|
||||
:font-size 12px
|
||||
7
examples/content-negotiation/db.js
Normal file
7
examples/content-negotiation/db.js
Normal file
@@ -0,0 +1,7 @@
|
||||
var users = [];
|
||||
|
||||
users.push({ name: 'Tobi' });
|
||||
users.push({ name: 'Loki' });
|
||||
users.push({ name: 'Jane' });
|
||||
|
||||
module.exports = users;
|
||||
43
examples/content-negotiation/index.js
Normal file
43
examples/content-negotiation/index.js
Normal file
@@ -0,0 +1,43 @@
|
||||
var express = require('../../');
|
||||
var app = module.exports = express();
|
||||
var users = require('./db');
|
||||
|
||||
// so either you can deal with different types of formatting
|
||||
// for expected response in index.js
|
||||
app.get('/', function(req, res){
|
||||
res.format({
|
||||
html: function(){
|
||||
res.send('<ul>' + users.map(function(user){
|
||||
return '<li>' + user.name + '</li>';
|
||||
}).join('') + '</ul>');
|
||||
},
|
||||
|
||||
text: function(){
|
||||
res.send(users.map(function(user){
|
||||
return ' - ' + user.name + '\n';
|
||||
}).join(''));
|
||||
},
|
||||
|
||||
json: function(){
|
||||
res.json(users);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// or you could write a tiny middleware like
|
||||
// this to add a layer of abstraction
|
||||
// and make things a bit more declarative:
|
||||
|
||||
function format(path) {
|
||||
var obj = require(path);
|
||||
return function(req, res){
|
||||
res.format(obj);
|
||||
};
|
||||
}
|
||||
|
||||
app.get('/users', format('./users'));
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('listening on port 3000');
|
||||
}
|
||||
18
examples/content-negotiation/users.js
Normal file
18
examples/content-negotiation/users.js
Normal file
@@ -0,0 +1,18 @@
|
||||
|
||||
var users = require('./db');
|
||||
|
||||
exports.html = function(req, res){
|
||||
res.send('<ul>' + users.map(function(user){
|
||||
return '<li>' + user.name + '</li>';
|
||||
}).join('') + '</ul>');
|
||||
};
|
||||
|
||||
exports.text = function(req, res){
|
||||
res.send(users.map(function(user){
|
||||
return ' - ' + user.name + '\n';
|
||||
}).join(''));
|
||||
};
|
||||
|
||||
exports.json = function(req, res){
|
||||
res.json(users);
|
||||
};
|
||||
29
examples/cookie-sessions/index.js
Normal file
29
examples/cookie-sessions/index.js
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var cookie-parser = require('cookie-parser');
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// pass a secret to cookieParser() for signed cookies
|
||||
app.use(cookieParser('manny is cool'));
|
||||
|
||||
// add req.session cookie support
|
||||
app.use(cookieSession());
|
||||
|
||||
// do something with the session
|
||||
app.use(count);
|
||||
|
||||
// custom middleware
|
||||
function count(req, res) {
|
||||
req.session.count = req.session.count || 0;
|
||||
var n = req.session.count++;
|
||||
res.send('viewed ' + n + ' times\n');
|
||||
}
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express server listening on port 3000');
|
||||
}
|
||||
48
examples/cookies/app.js
Normal file
48
examples/cookies/app.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var app = module.exports = express();
|
||||
var logger = require('morgan');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var bodyParser = require('body-parser');
|
||||
|
||||
// custom log format
|
||||
if ('test' != process.env.NODE_ENV)
|
||||
app.use(logger(':method :url'));
|
||||
|
||||
// parses request cookies, populating
|
||||
// req.cookies and req.signedCookies
|
||||
// when the secret is passed, used
|
||||
// for signing the cookies.
|
||||
app.use(cookieParser('my secret here'));
|
||||
|
||||
// parses json, x-www-form-urlencoded, and multipart/form-data
|
||||
app.use(bodyParser());
|
||||
|
||||
app.get('/', function(req, res){
|
||||
if (req.cookies.remember) {
|
||||
res.send('Remembered :). Click to <a href="/forget">forget</a>!.');
|
||||
} else {
|
||||
res.send('<form method="post"><p>Check to <label>'
|
||||
+ '<input type="checkbox" name="remember"/> remember me</label> '
|
||||
+ '<input type="submit" value="Submit"/>.</p></form>');
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/forget', function(req, res){
|
||||
res.clearCookie('remember');
|
||||
res.redirect('back');
|
||||
});
|
||||
|
||||
app.post('/', function(req, res){
|
||||
var minute = 60000;
|
||||
if (req.body.remember) res.cookie('remember', 1, { maxAge: minute });
|
||||
res.redirect('back');
|
||||
});
|
||||
|
||||
if (!module.parent){
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
48
examples/cors/index.js
Normal file
48
examples/cors/index.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var app = express();
|
||||
var bodyParser = require('body-parser');
|
||||
var api = express();
|
||||
|
||||
// app middleware
|
||||
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
|
||||
// api middleware
|
||||
|
||||
api.use(logger('dev'));
|
||||
api.use(bodyParser());
|
||||
|
||||
/**
|
||||
* CORS support.
|
||||
*/
|
||||
|
||||
api.all('*', function(req, res, next){
|
||||
if (!req.get('Origin')) return next();
|
||||
// use "*" here to accept any origin
|
||||
res.set('Access-Control-Allow-Origin', 'http://localhost:3000');
|
||||
res.set('Access-Control-Allow-Methods', 'GET, POST');
|
||||
res.set('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type');
|
||||
// res.set('Access-Control-Allow-Max-Age', 3600);
|
||||
if ('OPTIONS' == req.method) return res.send(200);
|
||||
next();
|
||||
});
|
||||
|
||||
/**
|
||||
* POST a user.
|
||||
*/
|
||||
|
||||
api.post('/user', function(req, res){
|
||||
console.log(req.body);
|
||||
res.send(201);
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
api.listen(3001);
|
||||
|
||||
console.log('app listening on 3000');
|
||||
console.log('api listening on 3001');
|
||||
12
examples/cors/public/index.html
Normal file
12
examples/cors/public/index.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<script>
|
||||
var req = new XMLHttpRequest;
|
||||
req.open('POST', 'http://localhost:3001/user', false);
|
||||
req.setRequestHeader('Content-Type', 'application/json');
|
||||
req.send('{"name":"tobi","species":"ferret"}');
|
||||
console.log(req.responseText);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
44
examples/downloads/app.js
Normal file
44
examples/downloads/app.js
Normal file
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var app = module.exports = express();
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send('<ul>'
|
||||
+ '<li>Download <a href="/files/amazing.txt">amazing.txt</a>.</li>'
|
||||
+ '<li>Download <a href="/files/utf-8 한中日.txt">utf-8 한中日.txt</a>.</li>'
|
||||
+ '<li>Download <a href="/files/missing.txt">missing.txt</a>.</li>'
|
||||
+ '</ul>');
|
||||
});
|
||||
|
||||
// /files/* is accessed via req.params[0]
|
||||
// but here we name it :file
|
||||
app.get('/files/:file(*)', function(req, res, next){
|
||||
var file = req.params.file;
|
||||
var path = __dirname + '/files/' + file;
|
||||
|
||||
res.download(path);
|
||||
});
|
||||
|
||||
// error handling middleware. Because it's
|
||||
// below our routes, you will be able to
|
||||
// "intercept" errors, otherwise Connect
|
||||
// will respond with 500 "Internal Server Error".
|
||||
app.use(function(err, req, res, next){
|
||||
// special-case 404s,
|
||||
// remember you could
|
||||
// render a 404 template here
|
||||
if (404 == err.status) {
|
||||
res.statusCode = 404;
|
||||
res.send('Cant find that file, sorry!');
|
||||
} else {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
1
examples/downloads/files/amazing.txt
Normal file
1
examples/downloads/files/amazing.txt
Normal file
@@ -0,0 +1 @@
|
||||
what an amazing download
|
||||
1
examples/downloads/files/utf-8 한中日.txt
Normal file
1
examples/downloads/files/utf-8 한中日.txt
Normal file
@@ -0,0 +1 @@
|
||||
한中日
|
||||
49
examples/ejs/index.js
Normal file
49
examples/ejs/index.js
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// Register ejs as .html. If we did
|
||||
// not call this, we would need to
|
||||
// name our views foo.ejs instead
|
||||
// of foo.html. The __express method
|
||||
// is simply a function that engines
|
||||
// use to hook into the Express view
|
||||
// system by default, so if we want
|
||||
// to change "foo.ejs" to "foo.html"
|
||||
// we simply pass _any_ function, in this
|
||||
// case `ejs.__express`.
|
||||
|
||||
app.engine('.html', require('ejs').__express);
|
||||
|
||||
// Optional since express defaults to CWD/views
|
||||
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
// Without this you would need to
|
||||
// supply the extension to res.render()
|
||||
// ex: res.render('users.html').
|
||||
app.set('view engine', 'html');
|
||||
|
||||
// Dummy users
|
||||
var users = [
|
||||
{ name: 'tobi', email: 'tobi@learnboost.com' },
|
||||
{ name: 'loki', email: 'loki@learnboost.com' },
|
||||
{ name: 'jane', email: 'jane@learnboost.com' }
|
||||
];
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('users', {
|
||||
users: users,
|
||||
title: "EJS example",
|
||||
header: "Some users"
|
||||
});
|
||||
});
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express app started on port 3000');
|
||||
}
|
||||
2
examples/ejs/views/footer.html
Normal file
2
examples/ejs/views/footer.html
Normal file
@@ -0,0 +1,2 @@
|
||||
</body>
|
||||
</html>
|
||||
13
examples/ejs/views/header.html
Normal file
13
examples/ejs/views/header.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title> <%= title %> </title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 13px Helvetica, Arial, sans-serif;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
10
examples/ejs/views/users.html
Normal file
10
examples/ejs/views/users.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<% include header.html %>
|
||||
|
||||
<h1>Users</h1>
|
||||
<ul id="users">
|
||||
<% users.forEach(function(user){ %>
|
||||
<li><%= user.name %> <<%= user.email %>></li>
|
||||
<% }) %>
|
||||
</ul>
|
||||
|
||||
<% include footer.html %>
|
||||
105
examples/error-pages/index.js
Normal file
105
examples/error-pages/index.js
Normal file
@@ -0,0 +1,105 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var app = module.exports = express();
|
||||
var logger = require('morgan');
|
||||
var silent = 'test' == process.env.NODE_ENV;
|
||||
|
||||
// general config
|
||||
app.set('views', __dirname + '/views');
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
// our custom "verbose errors" setting
|
||||
// which we can use in the templates
|
||||
// via settings['verbose errors']
|
||||
app.enable('verbose errors');
|
||||
|
||||
// disable them in production
|
||||
// use $ NODE_ENV=production node examples/error-pages
|
||||
if ('production' == app.settings.env) {
|
||||
app.disable('verbose errors');
|
||||
}
|
||||
|
||||
silent || app.use(logger('dev'));
|
||||
|
||||
// Routes
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('index.jade');
|
||||
});
|
||||
|
||||
app.get('/404', function(req, res, next){
|
||||
// trigger a 404 since no other middleware
|
||||
// will match /404 after this one, and we're not
|
||||
// responding here
|
||||
next();
|
||||
});
|
||||
|
||||
app.get('/403', function(req, res, next){
|
||||
// trigger a 403 error
|
||||
var err = new Error('not allowed!');
|
||||
err.status = 403;
|
||||
next(err);
|
||||
});
|
||||
|
||||
app.get('/500', function(req, res, next){
|
||||
// trigger a generic (500) error
|
||||
next(new Error('keyboard cat!'));
|
||||
});
|
||||
|
||||
// Error handlers
|
||||
|
||||
// Since this is the last non-error-handling
|
||||
// middleware use()d, we assume 404, as nothing else
|
||||
// responded.
|
||||
|
||||
// $ curl http://localhost:3000/notfound
|
||||
// $ curl http://localhost:3000/notfound -H "Accept: application/json"
|
||||
// $ curl http://localhost:3000/notfound -H "Accept: text/plain"
|
||||
|
||||
app.use(function(req, res, next){
|
||||
res.status(404);
|
||||
|
||||
// respond with html page
|
||||
if (req.accepts('html')) {
|
||||
res.render('404', { url: req.url });
|
||||
return;
|
||||
}
|
||||
|
||||
// respond with json
|
||||
if (req.accepts('json')) {
|
||||
res.send({ error: 'Not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
// default to plain-text. send()
|
||||
res.type('txt').send('Not found');
|
||||
});
|
||||
|
||||
// error-handling middleware, take the same form
|
||||
// as regular middleware, however they require an
|
||||
// arity of 4, aka the signature (err, req, res, next).
|
||||
// when connect has an error, it will invoke ONLY error-handling
|
||||
// middleware.
|
||||
|
||||
// If we were to next() here any remaining non-error-handling
|
||||
// middleware would then be executed, or if we next(err) to
|
||||
// continue passing the error, only error-handling middleware
|
||||
// would remain being executed, however here
|
||||
// we simply respond with an error page.
|
||||
|
||||
app.use(function(err, req, res, next){
|
||||
// we may use properties of the error object
|
||||
// here and next(err) appropriately, or if
|
||||
// we possibly recovered from the error, simply next().
|
||||
res.status(err.status || 500);
|
||||
res.render('500', { error: err });
|
||||
});
|
||||
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
silent || console.log('Express started on port 3000');
|
||||
}
|
||||
5
examples/error-pages/views/404.jade
Normal file
5
examples/error-pages/views/404.jade
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
extends error
|
||||
|
||||
block content
|
||||
h2 Cannot find #{url}
|
||||
13
examples/error-pages/views/500.jade
Normal file
13
examples/error-pages/views/500.jade
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
// note that we extend a different
|
||||
// layout with jade for 4xx & 5xx
|
||||
// responses
|
||||
|
||||
extends error
|
||||
|
||||
block content
|
||||
h1 Error: #{error.message}
|
||||
if settings['verbose errors']
|
||||
pre= error.stack
|
||||
else
|
||||
p An error ocurred!
|
||||
6
examples/error-pages/views/error.jade
Normal file
6
examples/error-pages/views/error.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
html
|
||||
head
|
||||
title Error
|
||||
body
|
||||
h1 An error occurred!
|
||||
block content
|
||||
15
examples/error-pages/views/index.jade
Normal file
15
examples/error-pages/views/index.jade
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
extends layout
|
||||
|
||||
block content
|
||||
h2 Pages Example
|
||||
ul
|
||||
li
|
||||
| visit
|
||||
a(href="/500") 500
|
||||
li
|
||||
| visit
|
||||
a(href="/404") 404
|
||||
li
|
||||
| visit
|
||||
a(href='/403') 403
|
||||
6
examples/error-pages/views/layout.jade
Normal file
6
examples/error-pages/views/layout.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
html
|
||||
head
|
||||
title Custom Pages Example
|
||||
body
|
||||
h1 My Site
|
||||
block content
|
||||
46
examples/error/index.js
Normal file
46
examples/error/index.js
Normal file
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var logger = require('morgan');
|
||||
var app = module.exports = express();
|
||||
var test = app.get('env') == 'test';
|
||||
|
||||
if (!test) app.use(logger('dev'));
|
||||
|
||||
// error handling middleware have an arity of 4
|
||||
// instead of the typical (req, res, next),
|
||||
// otherwise they behave exactly like regular
|
||||
// middleware, you may have several of them,
|
||||
// in different orders etc.
|
||||
|
||||
function error(err, req, res, next) {
|
||||
// log it
|
||||
if (!test) console.error(err.stack);
|
||||
|
||||
// respond with 500 "Internal Server Error".
|
||||
res.send(500);
|
||||
}
|
||||
|
||||
app.get('/', function(req, res){
|
||||
// Caught and passed down to the errorHandler middleware
|
||||
throw new Error('something broke!');
|
||||
});
|
||||
|
||||
app.get('/next', function(req, res, next){
|
||||
// We can also pass exceptions to next()
|
||||
process.nextTick(function(){
|
||||
next(new Error('oh no!'));
|
||||
});
|
||||
});
|
||||
|
||||
// the error handler is placed after routes
|
||||
// if it were above it would not receive errors
|
||||
// from app.get() etc
|
||||
app.use(error);
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
61
examples/expose-data-to-client/index.js
Normal file
61
examples/expose-data-to-client/index.js
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var app = express();
|
||||
|
||||
app.set('view engine', 'jade');
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
function User(name) {
|
||||
this.private = 'heyyyy';
|
||||
this.secret = 'something';
|
||||
this.name = name;
|
||||
this.id = 123;
|
||||
}
|
||||
|
||||
// You'll probably want to do
|
||||
// something like this so you
|
||||
// dont expose "secret" data.
|
||||
|
||||
User.prototype.toJSON = function(){
|
||||
return {
|
||||
id: this.id,
|
||||
name: this.name
|
||||
};
|
||||
};
|
||||
|
||||
app.use(logger('dev'));
|
||||
|
||||
// earlier on expose an object
|
||||
// that we can tack properties on.
|
||||
// all res.locals props are exposed
|
||||
// to the templates, so "expose" will
|
||||
// be present.
|
||||
|
||||
app.use(function(req, res, next){
|
||||
res.locals.expose = {};
|
||||
// you could alias this as req or res.expose
|
||||
// to make it shorter and less annoying
|
||||
next();
|
||||
});
|
||||
|
||||
// pretend we loaded a user
|
||||
|
||||
app.use(function(req, res, next){
|
||||
req.user = new User('Tobi');
|
||||
next();
|
||||
});
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.redirect('/user');
|
||||
});
|
||||
|
||||
app.get('/user', function(req, res){
|
||||
// we only want to expose the user
|
||||
// to the client for this route:
|
||||
res.locals.expose.user = req.user;
|
||||
res.render('page');
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
console.log('app listening on port 3000');
|
||||
14
examples/expose-data-to-client/views/page.jade
Normal file
14
examples/expose-data-to-client/views/page.jade
Normal file
@@ -0,0 +1,14 @@
|
||||
html
|
||||
head
|
||||
title Express
|
||||
script.
|
||||
// call this whatever you like,
|
||||
// or dump them into individual
|
||||
// props like "var user ="
|
||||
var data = !{JSON.stringify(expose)}
|
||||
body
|
||||
h1 Expose client data
|
||||
p The following was exposed to the client:
|
||||
pre
|
||||
script.
|
||||
document.write(JSON.stringify(data, null, 2))
|
||||
10
examples/hello-world/index.js
Normal file
10
examples/hello-world/index.js
Normal file
@@ -0,0 +1,10 @@
|
||||
var express = require('../../');
|
||||
|
||||
var app = express();
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send('Hello World');
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
48
examples/jade/index.js
Normal file
48
examples/jade/index.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../lib/express');
|
||||
|
||||
// Path to our public directory
|
||||
|
||||
var pub = __dirname + '/public';
|
||||
|
||||
// setup middleware
|
||||
|
||||
var app = express();
|
||||
app.use(express.static(pub));
|
||||
|
||||
// Optional since express defaults to CWD/views
|
||||
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
// Set our default template engine to "jade"
|
||||
// which prevents the need for extensions
|
||||
// (although you can still mix and match)
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
function User(name, email) {
|
||||
this.name = name;
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
// Dummy users
|
||||
var users = [
|
||||
new User('tj', 'tj@vision-media.ca')
|
||||
, new User('ciaran', 'ciaranj@gmail.com')
|
||||
, new User('aaron', 'aaron.heckmann+github@gmail.com')
|
||||
];
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('users', { users: users });
|
||||
});
|
||||
|
||||
// change this to a better error handler in your code
|
||||
// sending stacktrace to users in production is not good
|
||||
app.use(function(err, req, res, next) {
|
||||
res.send(err.stack);
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
console.log('Express app started on port 3000');
|
||||
4
examples/jade/public/stylesheets/style.css
Normal file
4
examples/jade/public/stylesheets/style.css
Normal file
@@ -0,0 +1,4 @@
|
||||
body {
|
||||
padding: 50px 80px;
|
||||
font: 14px "Helvetica Nueue", "Lucida Grande", Arial, sans-serif;
|
||||
}
|
||||
3
examples/jade/views/header.jade
Normal file
3
examples/jade/views/header.jade
Normal file
@@ -0,0 +1,3 @@
|
||||
head
|
||||
title Jade Example
|
||||
link(rel="stylesheet", href="/stylesheets/style.css")
|
||||
5
examples/jade/views/layout.jade
Normal file
5
examples/jade/views/layout.jade
Normal file
@@ -0,0 +1,5 @@
|
||||
doctype html
|
||||
html
|
||||
include header
|
||||
body
|
||||
block content
|
||||
8
examples/jade/views/users/index.jade
Normal file
8
examples/jade/views/users/index.jade
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
h1 Users
|
||||
#users
|
||||
for user in users
|
||||
include user
|
||||
3
examples/jade/views/users/user.jade
Normal file
3
examples/jade/views/users/user.jade
Normal file
@@ -0,0 +1,3 @@
|
||||
.user
|
||||
h2= user.name
|
||||
.email= user.email
|
||||
44
examples/markdown/index.js
Normal file
44
examples/markdown/index.js
Normal file
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var fs = require('fs');
|
||||
var md = require('marked').parse;
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// register .md as an engine in express view system
|
||||
|
||||
app.engine('md', function(path, options, fn){
|
||||
fs.readFile(path, 'utf8', function(err, str){
|
||||
if (err) return fn(err);
|
||||
try {
|
||||
var html = md(str);
|
||||
html = html.replace(/\{([^}]+)\}/g, function(_, name){
|
||||
return options[name] || '';
|
||||
});
|
||||
fn(null, html);
|
||||
} catch(err) {
|
||||
fn(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
// make it the default so we dont need .md
|
||||
app.set('view engine', 'md');
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('index', { title: 'Markdown Example' });
|
||||
});
|
||||
|
||||
app.get('/fail', function(req, res){
|
||||
res.render('missing', { title: 'Markdown Example' });
|
||||
});
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
4
examples/markdown/views/index.md
Normal file
4
examples/markdown/views/index.md
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
# {title}
|
||||
|
||||
Just an example view rendered with _markdown_.
|
||||
59
examples/multipart/index.js
Normal file
59
examples/multipart/index.js
Normal file
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var multiparty = require('multiparty');
|
||||
var format = require('util').format;
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send('<form method="post" enctype="multipart/form-data">'
|
||||
+ '<p>Title: <input type="text" name="title" /></p>'
|
||||
+ '<p>Image: <input type="file" name="image" /></p>'
|
||||
+ '<p><input type="submit" value="Upload" /></p>'
|
||||
+ '</form>');
|
||||
});
|
||||
|
||||
app.post('/', function(req, res, next){
|
||||
// create a form to begin parsing
|
||||
var form = new multiparty.Form();
|
||||
var image;
|
||||
var title;
|
||||
|
||||
form.on('error', next);
|
||||
form.on('close', function(){
|
||||
res.send(format('\nuploaded %s (%d Kb) as %s'
|
||||
, image.filename
|
||||
, image.size / 1024 | 0
|
||||
, title));
|
||||
});
|
||||
|
||||
// listen on field event for title
|
||||
form.on('field', function(name, val){
|
||||
if (name !== 'title') return;
|
||||
title = val;
|
||||
});
|
||||
|
||||
// listen on part event for image file
|
||||
form.on('part', function(part){
|
||||
if (!part.filename) return;
|
||||
if (part.name !== 'image') return part.resume();
|
||||
image = {};
|
||||
image.filename = part.filename;
|
||||
image.size = 0;
|
||||
part.on('data', function(buf){
|
||||
image.size += buf.length;
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// parse the form
|
||||
form.parse(req);
|
||||
});
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(4000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
3
examples/mvc/controllers/main/index.js
Normal file
3
examples/mvc/controllers/main/index.js
Normal file
@@ -0,0 +1,3 @@
|
||||
exports.index = function(req, res){
|
||||
res.redirect('/users');
|
||||
};
|
||||
27
examples/mvc/controllers/pet/index.js
Normal file
27
examples/mvc/controllers/pet/index.js
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var db = require('../../db');
|
||||
|
||||
exports.before = function(req, res, next){
|
||||
var pet = db.pets[req.params.pet_id];
|
||||
if (!pet) return next(new Error('Pet not found'));
|
||||
req.pet = pet;
|
||||
next();
|
||||
};
|
||||
|
||||
exports.show = function(req, res, next){
|
||||
res.render('show', { pet: req.pet });
|
||||
};
|
||||
|
||||
exports.edit = function(req, res, next){
|
||||
res.render('edit', { pet: req.pet });
|
||||
};
|
||||
|
||||
exports.update = function(req, res, next){
|
||||
var body = req.body;
|
||||
req.pet.name = body.pet.name;
|
||||
res.message('Information updated!');
|
||||
res.redirect('/pet/' + req.pet.id);
|
||||
};
|
||||
7
examples/mvc/controllers/pet/views/edit.jade
Normal file
7
examples/mvc/controllers/pet/views/edit.jade
Normal file
@@ -0,0 +1,7 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1= pet.name
|
||||
form(action='/pet/#{pet.id}', method='post')
|
||||
input(type='hidden', name='_method', value='put')
|
||||
label= 'Name: '
|
||||
input(type='text', name='pet[name]', value=pet.name)
|
||||
input(type='submit', value='Update')
|
||||
6
examples/mvc/controllers/pet/views/show.jade
Normal file
6
examples/mvc/controllers/pet/views/show.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
|
||||
h1= pet.name
|
||||
a(href='/pet/#{pet.id}/edit') edit
|
||||
|
||||
p You are viewing #{pet.name}
|
||||
20
examples/mvc/controllers/user-pet/index.js
Normal file
20
examples/mvc/controllers/user-pet/index.js
Normal file
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var db = require('../../db');
|
||||
|
||||
exports.name = 'pet';
|
||||
exports.prefix = '/user/:user_id';
|
||||
|
||||
exports.create = function(req, res, next){
|
||||
var id = req.params.user_id;
|
||||
var user = db.users[id];
|
||||
var body = req.body;
|
||||
if (!user) return next(new Error('User not found'));
|
||||
var pet = { name: body.pet.name };
|
||||
pet.id = db.pets.push(pet) - 1;
|
||||
user.pets.push(pet);
|
||||
res.message('Added pet ' + body.pet.name);
|
||||
res.redirect('/user/' + id);
|
||||
};
|
||||
37
examples/mvc/controllers/user/index.js
Normal file
37
examples/mvc/controllers/user/index.js
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var db = require('../../db');
|
||||
|
||||
exports.before = function(req, res, next){
|
||||
var id = req.params.user_id;
|
||||
if (!id) return next();
|
||||
// pretend to query a database...
|
||||
process.nextTick(function(){
|
||||
req.user = db.users[id];
|
||||
// cant find that user
|
||||
if (!req.user) return next(new Error('User not found'));
|
||||
// found it, move on to the routes
|
||||
next();
|
||||
});
|
||||
};
|
||||
|
||||
exports.list = function(req, res, next){
|
||||
res.render('list', { users: db.users });
|
||||
};
|
||||
|
||||
exports.edit = function(req, res, next){
|
||||
res.render('edit', { user: req.user });
|
||||
};
|
||||
|
||||
exports.show = function(req, res, next){
|
||||
res.render('show', { user: req.user });
|
||||
};
|
||||
|
||||
exports.update = function(req, res, next){
|
||||
var body = req.body;
|
||||
req.user.name = body.user.name;
|
||||
res.message('Information updated!');
|
||||
res.redirect('/user/' + req.user.id);
|
||||
};
|
||||
12
examples/mvc/controllers/user/views/edit.jade
Normal file
12
examples/mvc/controllers/user/views/edit.jade
Normal file
@@ -0,0 +1,12 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1= user.name
|
||||
form(action='/user/#{user.id}', method='post')
|
||||
input(type='hidden', name='_method', value='put')
|
||||
label= 'Name: '
|
||||
input(type='text', name='user[name]', value='#{user.name}')
|
||||
input(type='submit', value='Update')
|
||||
|
||||
form(action='/user/#{user.id}/pet', method='post')
|
||||
label= 'Pet: '
|
||||
input(type='text', name='pet[name]', placeholder='Name')
|
||||
input(type='submit', value='Add')
|
||||
7
examples/mvc/controllers/user/views/list.jade
Normal file
7
examples/mvc/controllers/user/views/list.jade
Normal file
@@ -0,0 +1,7 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1 Users
|
||||
p Click a user below to view their pets.
|
||||
ul
|
||||
each user in users
|
||||
li
|
||||
a(href='/user/#{user.id}')= user.name
|
||||
17
examples/mvc/controllers/user/views/show.jade
Normal file
17
examples/mvc/controllers/user/views/show.jade
Normal file
@@ -0,0 +1,17 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1= user.name + ' '
|
||||
a(href='/user/#{user.id}/edit') edit
|
||||
|
||||
if (hasMessages)
|
||||
ul#messages
|
||||
each msg in messages
|
||||
li= msg
|
||||
|
||||
if (user.pets.length)
|
||||
p View #{user.name}'s pets:
|
||||
ul
|
||||
each pet in user.pets
|
||||
li
|
||||
a(href='/pet/#{pet.id}')= pet.name
|
||||
else
|
||||
p No pets!
|
||||
14
examples/mvc/db.js
Normal file
14
examples/mvc/db.js
Normal file
@@ -0,0 +1,14 @@
|
||||
// faux database
|
||||
|
||||
var pets = exports.pets = [];
|
||||
|
||||
pets.push({ name: 'Tobi', id: 0 });
|
||||
pets.push({ name: 'Loki', id: 1 });
|
||||
pets.push({ name: 'Jane', id: 2 });
|
||||
pets.push({ name: 'Raul', id: 3 });
|
||||
|
||||
var users = exports.users = [];
|
||||
|
||||
users.push({ name: 'TJ', pets: [pets[0], pets[1], pets[2]], id: 0 });
|
||||
users.push({ name: 'Guillermo', pets: [pets[3]], id: 1 });
|
||||
users.push({ name: 'Nathan', pets: [], id: 2 });
|
||||
99
examples/mvc/index.js
Normal file
99
examples/mvc/index.js
Normal file
@@ -0,0 +1,99 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var session = require('express-session');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var bodyParser = require('body-parser');
|
||||
var methodOverride = require('method-override');
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// settings
|
||||
|
||||
// set our default template engine to "jade"
|
||||
// which prevents the need for extensions
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
// set views for error and 404 pages
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
// define a custom res.message() method
|
||||
// which stores messages in the session
|
||||
app.response.message = function(msg){
|
||||
// reference `req.session` via the `this.req` reference
|
||||
var sess = this.req.session;
|
||||
// simply add the msg to an array for later
|
||||
sess.messages = sess.messages || [];
|
||||
sess.messages.push(msg);
|
||||
return this;
|
||||
};
|
||||
|
||||
// log
|
||||
if (!module.parent) app.use(logger('dev'));
|
||||
|
||||
// serve static files
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
|
||||
// session support
|
||||
app.use(cookieParser('some secret here'));
|
||||
app.use(session());
|
||||
|
||||
// parse request bodies (req.body)
|
||||
app.use(bodyParser());
|
||||
|
||||
// override methods (put, delete)
|
||||
app.use(methodOverride());
|
||||
|
||||
// expose the "messages" local variable when views are rendered
|
||||
app.use(function(req, res, next){
|
||||
var msgs = req.session.messages || [];
|
||||
|
||||
// expose "messages" local variable
|
||||
res.locals.messages = msgs;
|
||||
|
||||
// expose "hasMessages"
|
||||
res.locals.hasMessages = !! msgs.length;
|
||||
|
||||
/* This is equivalent:
|
||||
res.locals({
|
||||
messages: msgs,
|
||||
hasMessages: !! msgs.length
|
||||
});
|
||||
*/
|
||||
|
||||
next();
|
||||
// empty or "flush" the messages so they
|
||||
// don't build up
|
||||
req.session.messages = [];
|
||||
});
|
||||
|
||||
// load controllers
|
||||
require('./lib/boot')(app, { verbose: !module.parent });
|
||||
|
||||
// assume "not found" in the error msgs
|
||||
// is a 404. this is somewhat silly, but
|
||||
// valid, you can do whatever you like, set
|
||||
// properties, use instanceof etc.
|
||||
app.use(function(err, req, res, next){
|
||||
// treat as 404
|
||||
if (~err.message.indexOf('not found')) return next();
|
||||
|
||||
// log it
|
||||
console.error(err.stack);
|
||||
|
||||
// error page
|
||||
res.status(500).render('5xx');
|
||||
});
|
||||
|
||||
// assume 404 since no middleware responded
|
||||
app.use(function(req, res, next){
|
||||
res.status(404).render('404', { url: req.originalUrl });
|
||||
});
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('\n listening on port 3000\n');
|
||||
}
|
||||
76
examples/mvc/lib/boot.js
Normal file
76
examples/mvc/lib/boot.js
Normal file
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../..');
|
||||
var fs = require('fs');
|
||||
|
||||
module.exports = function(parent, options){
|
||||
var verbose = options.verbose;
|
||||
fs.readdirSync(__dirname + '/../controllers').forEach(function(name){
|
||||
verbose && console.log('\n %s:', name);
|
||||
var obj = require('./../controllers/' + name);
|
||||
var name = obj.name || name;
|
||||
var prefix = obj.prefix || '';
|
||||
var app = express();
|
||||
var method;
|
||||
var path;
|
||||
|
||||
// allow specifying the view engine
|
||||
if (obj.engine) app.set('view engine', obj.engine);
|
||||
app.set('views', __dirname + '/../controllers/' + name + '/views');
|
||||
|
||||
// before middleware support
|
||||
if (obj.before) {
|
||||
path = '/' + name + '/:' + name + '_id';
|
||||
app.all(path, obj.before);
|
||||
verbose && console.log(' ALL %s -> before', path);
|
||||
path = '/' + name + '/:' + name + '_id/*';
|
||||
app.all(path, obj.before);
|
||||
verbose && console.log(' ALL %s -> before', path);
|
||||
}
|
||||
|
||||
// generate routes based
|
||||
// on the exported methods
|
||||
for (var key in obj) {
|
||||
// "reserved" exports
|
||||
if (~['name', 'prefix', 'engine', 'before'].indexOf(key)) continue;
|
||||
// route exports
|
||||
switch (key) {
|
||||
case 'show':
|
||||
method = 'get';
|
||||
path = '/' + name + '/:' + name + '_id';
|
||||
break;
|
||||
case 'list':
|
||||
method = 'get';
|
||||
path = '/' + name + 's';
|
||||
break;
|
||||
case 'edit':
|
||||
method = 'get';
|
||||
path = '/' + name + '/:' + name + '_id/edit';
|
||||
break;
|
||||
case 'update':
|
||||
method = 'put';
|
||||
path = '/' + name + '/:' + name + '_id';
|
||||
break;
|
||||
case 'create':
|
||||
method = 'post';
|
||||
path = '/' + name;
|
||||
break;
|
||||
case 'index':
|
||||
method = 'get';
|
||||
path = '/';
|
||||
break;
|
||||
default:
|
||||
throw new Error('unrecognized route: ' + name + '.' + key);
|
||||
}
|
||||
|
||||
path = prefix + path;
|
||||
app[method](path, obj[key]);
|
||||
verbose && console.log(' %s %s -> %s', method.toUpperCase(), path, key);
|
||||
}
|
||||
|
||||
// mount the app
|
||||
parent.use(app);
|
||||
});
|
||||
};
|
||||
14
examples/mvc/public/style.css
Normal file
14
examples/mvc/public/style.css
Normal file
@@ -0,0 +1,14 @@
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 16px "Helvetica Neue", Helvetica, Arial;
|
||||
}
|
||||
a {
|
||||
color: #107aff;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
h1 a {
|
||||
font-size: 16px;
|
||||
}
|
||||
3
examples/mvc/views/404.jade
Normal file
3
examples/mvc/views/404.jade
Normal file
@@ -0,0 +1,3 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1 404: Not Found
|
||||
p Sorry we can't find #{url}
|
||||
3
examples/mvc/views/5xx.jade
Normal file
3
examples/mvc/views/5xx.jade
Normal file
@@ -0,0 +1,3 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1 500: Internal Server Error
|
||||
p Looks like something blew up!
|
||||
53
examples/online/index.js
Normal file
53
examples/online/index.js
Normal file
@@ -0,0 +1,53 @@
|
||||
// first:
|
||||
// $ npm install redis online
|
||||
// $ redis-server
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var online = require('online');
|
||||
var redis = require('redis');
|
||||
var db = redis.createClient();
|
||||
|
||||
// online
|
||||
|
||||
online = online(db);
|
||||
|
||||
// app
|
||||
|
||||
var app = express();
|
||||
|
||||
// activity tracking, in this case using
|
||||
// the UA string, you would use req.user.id etc
|
||||
|
||||
app.use(function(req, res, next){
|
||||
// fire-and-forget
|
||||
online.add(req.headers['user-agent']);
|
||||
next();
|
||||
});
|
||||
|
||||
/**
|
||||
* List helper.
|
||||
*/
|
||||
|
||||
function list(ids) {
|
||||
return '<ul>' + ids.map(function(id){
|
||||
return '<li>' + id + '</li>';
|
||||
}).join('') + '</ul>';
|
||||
}
|
||||
|
||||
/**
|
||||
* GET users online.
|
||||
*/
|
||||
|
||||
app.get('/', function(req, res, next){
|
||||
online.last(5, function(err, ids){
|
||||
if (err) return next(err);
|
||||
res.send('<p>Users online: ' + ids.length + '</p>' + list(ids));
|
||||
});
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
console.log('listening on port 3000');
|
||||
69
examples/params/app.js
Normal file
69
examples/params/app.js
Normal file
@@ -0,0 +1,69 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var app = module.exports = express();
|
||||
|
||||
// Faux database
|
||||
|
||||
var users = [
|
||||
{ name: 'tj' }
|
||||
, { name: 'tobi' }
|
||||
, { name: 'loki' }
|
||||
, { name: 'jane' }
|
||||
, { name: 'bandit' }
|
||||
];
|
||||
|
||||
// Convert :to and :from to integers
|
||||
|
||||
app.param(['to', 'from'], function(req, res, next, num, name){
|
||||
req.params[name] = num = parseInt(num, 10);
|
||||
if( isNaN(num) ){
|
||||
next(new Error('failed to parseInt '+num));
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
|
||||
// Load user by id
|
||||
|
||||
app.param('user', function(req, res, next, id){
|
||||
if (req.user = users[id]) {
|
||||
next();
|
||||
} else {
|
||||
next(new Error('failed to find user'));
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* GET index.
|
||||
*/
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send('Visit /user/0 or /users/0-2');
|
||||
});
|
||||
|
||||
/**
|
||||
* GET :user.
|
||||
*/
|
||||
|
||||
app.get('/user/:user', function(req, res, next){
|
||||
res.send('user ' + req.user.name);
|
||||
});
|
||||
|
||||
/**
|
||||
* GET users :from - :to.
|
||||
*/
|
||||
|
||||
app.get('/users/:from-:to', function(req, res, next){
|
||||
var from = req.params.from;
|
||||
var to = req.params.to;
|
||||
var names = users.map(function(user){ return user.name; });
|
||||
res.send('users ' + names.slice(from, to).join(', '));
|
||||
});
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
90
examples/resource/app.js
Normal file
90
examples/resource/app.js
Normal file
@@ -0,0 +1,90 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// Ad-hoc example resource method
|
||||
|
||||
app.resource = function(path, obj) {
|
||||
this.get(path, obj.index);
|
||||
this.get(path + '/:a..:b.:format?', function(req, res){
|
||||
var a = parseInt(req.params.a, 10);
|
||||
var b = parseInt(req.params.b, 10);
|
||||
var format = req.params.format;
|
||||
obj.range(req, res, a, b, format);
|
||||
});
|
||||
this.get(path + '/:id', obj.show);
|
||||
this.delete(path + '/:id', obj.destroy);
|
||||
};
|
||||
|
||||
// Fake records
|
||||
|
||||
var users = [
|
||||
{ name: 'tj' }
|
||||
, { name: 'ciaran' }
|
||||
, { name: 'aaron' }
|
||||
, { name: 'guillermo' }
|
||||
, { name: 'simon' }
|
||||
, { name: 'tobi' }
|
||||
];
|
||||
|
||||
// Fake controller.
|
||||
|
||||
var User = {
|
||||
index: function(req, res){
|
||||
res.send(users);
|
||||
},
|
||||
show: function(req, res){
|
||||
res.send(users[req.params.id] || { error: 'Cannot find user' });
|
||||
},
|
||||
destroy: function(req, res){
|
||||
var id = req.params.id;
|
||||
var destroyed = id in users;
|
||||
delete users[id];
|
||||
res.send(destroyed ? 'destroyed' : 'Cannot find user');
|
||||
},
|
||||
range: function(req, res, a, b, format){
|
||||
var range = users.slice(a, b + 1);
|
||||
switch (format) {
|
||||
case 'json':
|
||||
res.send(range);
|
||||
break;
|
||||
case 'html':
|
||||
default:
|
||||
var html = '<ul>' + range.map(function(user){
|
||||
return '<li>' + user.name + '</li>';
|
||||
}).join('\n') + '</ul>';
|
||||
res.send(html);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// curl http://localhost:3000/users -- responds with all users
|
||||
// curl http://localhost:3000/users/1 -- responds with user 1
|
||||
// curl http://localhost:3000/users/4 -- responds with error
|
||||
// curl http://localhost:3000/users/1..3 -- responds with several users
|
||||
// curl -X DELETE http://localhost:3000/users/1 -- deletes the user
|
||||
|
||||
app.resource('/users', User);
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send([
|
||||
'<h1>Examples:</h1> <ul>'
|
||||
, '<li>GET /users</li>'
|
||||
, '<li>GET /users/1</li>'
|
||||
, '<li>GET /users/3</li>'
|
||||
, '<li>GET /users/1..3</li>'
|
||||
, '<li>GET /users/1..3.json</li>'
|
||||
, '<li>DELETE /users/4</li>'
|
||||
, '</ul>'
|
||||
].join('\n'));
|
||||
});
|
||||
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
68
examples/route-map/index.js
Normal file
68
examples/route-map/index.js
Normal file
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../lib/express');
|
||||
|
||||
var verbose = process.env.NODE_ENV != 'test';
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
app.map = function(a, route){
|
||||
route = route || '';
|
||||
for (var key in a) {
|
||||
switch (typeof a[key]) {
|
||||
// { '/path': { ... }}
|
||||
case 'object':
|
||||
app.map(a[key], route + key);
|
||||
break;
|
||||
// get: function(){ ... }
|
||||
case 'function':
|
||||
if (verbose) console.log('%s %s', key, route);
|
||||
app[key](route, a[key]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var users = {
|
||||
list: function(req, res){
|
||||
res.send('user list');
|
||||
},
|
||||
|
||||
get: function(req, res){
|
||||
res.send('user ' + req.params.uid);
|
||||
},
|
||||
|
||||
delete: function(req, res){
|
||||
res.send('delete users');
|
||||
}
|
||||
};
|
||||
|
||||
var pets = {
|
||||
list: function(req, res){
|
||||
res.send('user ' + req.params.uid + '\'s pets');
|
||||
},
|
||||
|
||||
delete: function(req, res){
|
||||
res.send('delete ' + req.params.uid + '\'s pet ' + req.params.pid);
|
||||
}
|
||||
};
|
||||
|
||||
app.map({
|
||||
'/users': {
|
||||
get: users.list,
|
||||
delete: users.delete,
|
||||
'/:uid': {
|
||||
get: users.get,
|
||||
'/pets': {
|
||||
get: pets.list,
|
||||
'/:pid': {
|
||||
delete: pets.delete
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
85
examples/route-middleware/index.js
Normal file
85
examples/route-middleware/index.js
Normal file
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../lib/express');
|
||||
|
||||
var app = express();
|
||||
|
||||
// Example requests:
|
||||
// curl http://localhost:3000/user/0
|
||||
// curl http://localhost:3000/user/0/edit
|
||||
// curl http://localhost:3000/user/1
|
||||
// curl http://localhost:3000/user/1/edit (unauthorized since this is not you)
|
||||
// curl -X DELETE http://localhost:3000/user/0 (unauthorized since you are not an admin)
|
||||
|
||||
// Dummy users
|
||||
var users = [
|
||||
{ id: 0, name: 'tj', email: 'tj@vision-media.ca', role: 'member' }
|
||||
, { id: 1, name: 'ciaran', email: 'ciaranj@gmail.com', role: 'member' }
|
||||
, { id: 2, name: 'aaron', email: 'aaron.heckmann+github@gmail.com', role: 'admin' }
|
||||
];
|
||||
|
||||
function loadUser(req, res, next) {
|
||||
// You would fetch your user from the db
|
||||
var user = users[req.params.id];
|
||||
if (user) {
|
||||
req.user = user;
|
||||
next();
|
||||
} else {
|
||||
next(new Error('Failed to load user ' + req.params.id));
|
||||
}
|
||||
}
|
||||
|
||||
function andRestrictToSelf(req, res, next) {
|
||||
// If our authenticated user is the user we are viewing
|
||||
// then everything is fine :)
|
||||
if (req.authenticatedUser.id == req.user.id) {
|
||||
next();
|
||||
} else {
|
||||
// You may want to implement specific exceptions
|
||||
// such as UnauthorizedError or similar so that you
|
||||
// can handle these can be special-cased in an error handler
|
||||
// (view ./examples/pages for this)
|
||||
next(new Error('Unauthorized'));
|
||||
}
|
||||
}
|
||||
|
||||
function andRestrictTo(role) {
|
||||
return function(req, res, next) {
|
||||
if (req.authenticatedUser.role == role) {
|
||||
next();
|
||||
} else {
|
||||
next(new Error('Unauthorized'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Middleware for faux authentication
|
||||
// you would of course implement something real,
|
||||
// but this illustrates how an authenticated user
|
||||
// may interact with middleware
|
||||
|
||||
app.use(function(req, res, next){
|
||||
req.authenticatedUser = users[0];
|
||||
next();
|
||||
});
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.redirect('/user/0');
|
||||
});
|
||||
|
||||
app.get('/user/:id', loadUser, function(req, res){
|
||||
res.send('Viewing user ' + req.user.name);
|
||||
});
|
||||
|
||||
app.get('/user/:id/edit', loadUser, andRestrictToSelf, function(req, res){
|
||||
res.send('Editing user ' + req.user.name);
|
||||
});
|
||||
|
||||
app.delete('/user/:id', loadUser, andRestrictTo('admin'), function(req, res){
|
||||
res.send('Deleted user ' + req.user.name);
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
console.log('Express app started on port 3000');
|
||||
41
examples/route-separation/index.js
Normal file
41
examples/route-separation/index.js
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var app = express();
|
||||
var logger = require('morgan');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var bodyParser = require('body-parser');
|
||||
var site = require('./site');
|
||||
var post = require('./post');
|
||||
var user = require('./user');
|
||||
|
||||
// Config
|
||||
|
||||
app.set('view engine', 'jade');
|
||||
app.set('views', __dirname + '/views');
|
||||
app.use(logger('dev'));
|
||||
app.use(cookieParser());
|
||||
app.use(bodyParser());
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
|
||||
// General
|
||||
|
||||
app.get('/', site.index);
|
||||
|
||||
// User
|
||||
|
||||
app.all('/users', user.list);
|
||||
app.all('/user/:id/:op?', user.load);
|
||||
app.get('/user/:id', user.view);
|
||||
app.get('/user/:id/view', user.view);
|
||||
app.get('/user/:id/edit', user.edit);
|
||||
app.put('/user/:id/edit', user.update);
|
||||
|
||||
// Posts
|
||||
|
||||
app.get('/posts', post.list);
|
||||
|
||||
app.listen(3000);
|
||||
console.log('Express app started on port 3000');
|
||||
11
examples/route-separation/post.js
Normal file
11
examples/route-separation/post.js
Normal file
@@ -0,0 +1,11 @@
|
||||
// Fake posts database
|
||||
|
||||
var posts = [
|
||||
{ title: 'Foo', body: 'some foo bar' },
|
||||
{ title: 'Foo bar', body: 'more foo bar' },
|
||||
{ title: 'Foo bar baz', body: 'more foo bar baz' }
|
||||
];
|
||||
|
||||
exports.list = function(req, res){
|
||||
res.render('posts', { title: 'Posts', posts: posts });
|
||||
};
|
||||
24
examples/route-separation/public/style.css
Normal file
24
examples/route-separation/public/style.css
Normal file
@@ -0,0 +1,24 @@
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 14px "Helvetica Neue", Arial, sans-serif;
|
||||
}
|
||||
a {
|
||||
color: #00AEFF;
|
||||
text-decoration: none;
|
||||
}
|
||||
a.edit {
|
||||
color: #000;
|
||||
opacity: .3;
|
||||
}
|
||||
a.edit::before {
|
||||
content: ' [';
|
||||
}
|
||||
a.edit::after {
|
||||
content: ']';
|
||||
}
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
dd {
|
||||
margin: 15px;
|
||||
}
|
||||
3
examples/route-separation/site.js
Normal file
3
examples/route-separation/site.js
Normal file
@@ -0,0 +1,3 @@
|
||||
exports.index = function(req, res){
|
||||
res.render('index', { title: 'Route Separation Example' });
|
||||
};
|
||||
43
examples/route-separation/user.js
Normal file
43
examples/route-separation/user.js
Normal file
@@ -0,0 +1,43 @@
|
||||
// Fake user database
|
||||
|
||||
var users = [
|
||||
{ name: 'TJ', email: 'tj@vision-media.ca' },
|
||||
{ name: 'Tobi', email: 'tobi@vision-media.ca' }
|
||||
];
|
||||
|
||||
exports.list = function(req, res){
|
||||
res.render('users', { title: 'Users', users: users });
|
||||
};
|
||||
|
||||
exports.load = function(req, res, next){
|
||||
var id = req.params.id;
|
||||
req.user = users[id];
|
||||
if (req.user) {
|
||||
next();
|
||||
} else {
|
||||
next(new Error('cannot find user ' + id));
|
||||
}
|
||||
};
|
||||
|
||||
exports.view = function(req, res){
|
||||
res.render('users/view', {
|
||||
title: 'Viewing user ' + req.user.name,
|
||||
user: req.user
|
||||
});
|
||||
};
|
||||
|
||||
exports.edit = function(req, res){
|
||||
res.render('users/edit', {
|
||||
title: 'Editing user ' + req.user.name,
|
||||
user: req.user
|
||||
});
|
||||
};
|
||||
|
||||
exports.update = function(req, res){
|
||||
// Normally you would handle all kinds of
|
||||
// validation and save back to the db
|
||||
var user = req.body.user;
|
||||
req.user.name = user.name;
|
||||
req.user.email = user.email;
|
||||
res.redirect('back');
|
||||
};
|
||||
6
examples/route-separation/views/index.jade
Normal file
6
examples/route-separation/views/index.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
extends layout
|
||||
|
||||
block content
|
||||
ul
|
||||
li Visit the <a href="/users">users</a> page
|
||||
li Visit the <a href="/posts">posts</a> page
|
||||
6
examples/route-separation/views/layout.jade
Normal file
6
examples/route-separation/views/layout.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
html
|
||||
head
|
||||
title= title
|
||||
link(href="/style.css", rel="stylesheet")
|
||||
body
|
||||
block content
|
||||
8
examples/route-separation/views/posts/index.jade
Normal file
8
examples/route-separation/views/posts/index.jade
Normal file
@@ -0,0 +1,8 @@
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
h1 Posts
|
||||
dl#posts
|
||||
for post in posts
|
||||
dt= post.title
|
||||
dd= post.body
|
||||
13
examples/route-separation/views/users/edit.jade
Normal file
13
examples/route-separation/views/users/edit.jade
Normal file
@@ -0,0 +1,13 @@
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
h1 Editing #{user.name}
|
||||
#user
|
||||
form(method="post")
|
||||
input(type="hidden", value="put", name="_method")
|
||||
p Name:
|
||||
input(type="text", value= user.name, name="user[name]")
|
||||
p Email:
|
||||
input(type="text", value= user.email, name="user[email]")
|
||||
p
|
||||
input(type="submit", value="Save")
|
||||
9
examples/route-separation/views/users/index.jade
Normal file
9
examples/route-separation/views/users/index.jade
Normal file
@@ -0,0 +1,9 @@
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
h1 Users
|
||||
#users
|
||||
for user, i in users
|
||||
li
|
||||
a(href="/user/#{i}")= user.name
|
||||
a.edit(href="/user/#{i}/edit") edit
|
||||
6
examples/route-separation/views/users/view.jade
Normal file
6
examples/route-separation/views/users/view.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
h1= user.name
|
||||
#user
|
||||
p Email: #{user.email}
|
||||
13
examples/search/client.js
Normal file
13
examples/search/client.js
Normal file
@@ -0,0 +1,13 @@
|
||||
var search = document.querySelector('[type=search]');
|
||||
var code = document.querySelector('pre');
|
||||
|
||||
search.addEventListener('keyup', function(){
|
||||
var xhr = new XMLHttpRequest;
|
||||
xhr.open('GET', '/search/' + search.value, true);
|
||||
xhr.onreadystatechange = function(){
|
||||
if (4 == xhr.readyState) {
|
||||
code.textContent = xhr.responseText;
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
}, false);
|
||||
61
examples/search/index.js
Normal file
61
examples/search/index.js
Normal file
@@ -0,0 +1,61 @@
|
||||
// first:
|
||||
// $ npm install redis
|
||||
// $ redis-server
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var redis = require('redis');
|
||||
|
||||
var db = redis.createClient();
|
||||
|
||||
// npm install redis
|
||||
|
||||
var app = express();
|
||||
|
||||
app.set('view engine', 'jade');
|
||||
app.set('views', __dirname);
|
||||
|
||||
// populate search
|
||||
|
||||
db.sadd('ferret', 'tobi');
|
||||
db.sadd('ferret', 'loki');
|
||||
db.sadd('ferret', 'jane');
|
||||
db.sadd('cat', 'manny');
|
||||
db.sadd('cat', 'luna');
|
||||
|
||||
/**
|
||||
* GET the search page.
|
||||
*/
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('search');
|
||||
});
|
||||
|
||||
/**
|
||||
* GET search for :query.
|
||||
*/
|
||||
|
||||
app.get('/search/:query?', function(req, res){
|
||||
var query = req.params.query;
|
||||
db.smembers(query, function(err, vals){
|
||||
if (err) return res.send(500);
|
||||
res.send(vals);
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* GET client javascript. Here we use sendfile()
|
||||
* because serving __dirname with the static() middleware
|
||||
* would also mean serving our server "index.js" and the "search.jade"
|
||||
* template.
|
||||
*/
|
||||
|
||||
app.get('/client.js', function(req, res){
|
||||
res.sendfile(__dirname + '/client.js');
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
console.log('app listening on port 3000');
|
||||
15
examples/search/search.jade
Normal file
15
examples/search/search.jade
Normal file
@@ -0,0 +1,15 @@
|
||||
doctype
|
||||
html
|
||||
head
|
||||
title Search example
|
||||
style.
|
||||
body {
|
||||
font: 14px "Helvetica Neue", Helvetica;
|
||||
padding: 50px;
|
||||
}
|
||||
body
|
||||
h2 Search
|
||||
p Try searching for "ferret" or "cat".
|
||||
input(type='search')
|
||||
pre
|
||||
script(src='client.js')
|
||||
31
examples/session/index.js
Normal file
31
examples/session/index.js
Normal file
@@ -0,0 +1,31 @@
|
||||
// first:
|
||||
// $ npm install redis
|
||||
// $ redis-server
|
||||
|
||||
var express = require('../..');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var session = require('express-session');
|
||||
|
||||
var app = express();
|
||||
|
||||
// Required by session() middleware
|
||||
// pass the secret for signed cookies
|
||||
// (required by session())
|
||||
app.use(cookieParser('keyboard cat'));
|
||||
|
||||
// Populates req.session
|
||||
app.use(session());
|
||||
|
||||
app.get('/', function(req, res){
|
||||
var body = '';
|
||||
if (req.session.views) {
|
||||
++req.session.views;
|
||||
} else {
|
||||
req.session.views = 1;
|
||||
body += '<p>First time visiting? view this page in several browsers :)</p>';
|
||||
}
|
||||
res.send(body + '<p>viewed <strong>' + req.session.views + '</strong> times.</p>');
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
console.log('Express app started on port 3000');
|
||||
38
examples/session/redis.js
Normal file
38
examples/session/redis.js
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var session = require('express-session');
|
||||
|
||||
// pass the express to the connect redis module
|
||||
// allowing it to inherit from session.Store
|
||||
var RedisStore = require('connect-redis')(session);
|
||||
|
||||
var app = express();
|
||||
|
||||
app.use(logger('dev'));
|
||||
|
||||
// Required by session() middleware
|
||||
// pass the secret for signed cookies
|
||||
// (required by session())
|
||||
app.use(cookieParser('keyboard cat'));
|
||||
|
||||
// Populates req.session
|
||||
app.use(session({ store: new RedisStore }));
|
||||
|
||||
app.get('/', function(req, res){
|
||||
var body = '';
|
||||
if (req.session.views) {
|
||||
++req.session.views;
|
||||
} else {
|
||||
req.session.views = 1;
|
||||
body += '<p>First time visiting? view this page in several browsers :)</p>';
|
||||
}
|
||||
res.send(body + '<p>viewed <strong>' + req.session.views + '</strong> times.</p>');
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
console.log('Express app started on port 3000');
|
||||
40
examples/static-files/index.js
Normal file
40
examples/static-files/index.js
Normal file
@@ -0,0 +1,40 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var app = express();
|
||||
|
||||
// log requests
|
||||
app.use(logger('dev'));
|
||||
|
||||
// express on its own has no notion
|
||||
// of a "file". The express.static()
|
||||
// middleware checks for a file matching
|
||||
// the `req.path` within the directory
|
||||
// that you pass it. In this case "GET /js/app.js"
|
||||
// will look for "./public/js/app.js".
|
||||
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
|
||||
// if you wanted to "prefix" you may use
|
||||
// the mounting feature of Connect, for example
|
||||
// "GET /static/js/app.js" instead of "GET /js/app.js".
|
||||
// The mount-path "/static" is simply removed before
|
||||
// passing control to the express.static() middleware,
|
||||
// thus it serves the file correctly by ignoring "/static"
|
||||
app.use('/static', express.static(__dirname + '/public'));
|
||||
|
||||
// if for some reason you want to serve files from
|
||||
// several directories, you can use express.static()
|
||||
// multiple times! Here we're passing "./public/css",
|
||||
// this will allow "GET /style.css" instead of "GET /css/style.css":
|
||||
app.use(express.static(__dirname + '/public/css'));
|
||||
|
||||
app.listen(3000);
|
||||
console.log('listening on port 3000');
|
||||
console.log('try:');
|
||||
console.log(' GET /hello.txt');
|
||||
console.log(' GET /js/app.js');
|
||||
console.log(' GET /css/style.css');
|
||||
3
examples/static-files/public/css/style.css
Normal file
3
examples/static-files/public/css/style.css
Normal file
@@ -0,0 +1,3 @@
|
||||
body {
|
||||
|
||||
}
|
||||
1
examples/static-files/public/hello.txt
Normal file
1
examples/static-files/public/hello.txt
Normal file
@@ -0,0 +1 @@
|
||||
hey
|
||||
1
examples/static-files/public/js/app.js
Normal file
1
examples/static-files/public/js/app.js
Normal file
@@ -0,0 +1 @@
|
||||
foo
|
||||
@@ -1,44 +0,0 @@
|
||||
|
||||
require.paths.unshift('lib')
|
||||
require('express')
|
||||
require('express/plugins')
|
||||
|
||||
configure(function(){
|
||||
use(MethodOverride)
|
||||
use(ContentLength)
|
||||
use(Cookie)
|
||||
use(Session)
|
||||
use(Flash)
|
||||
use(Logger)
|
||||
set('root', __dirname)
|
||||
})
|
||||
|
||||
get('/', function(){
|
||||
this.redirect('/upload')
|
||||
})
|
||||
|
||||
get('/upload', function(){
|
||||
this.render('upload.haml.html', {
|
||||
locals: {
|
||||
flashes: this.flash('info')
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
post('/upload', function(){
|
||||
this.param('images').each(function(image){
|
||||
puts(image.filename + ' -> ' + image.tempfile)
|
||||
this.flash('info', 'Uploaded ' + image.filename)
|
||||
}, this)
|
||||
this.redirect('/upload')
|
||||
})
|
||||
|
||||
get('/public/*', function(file){
|
||||
this.sendfile(__dirname + '/public/' + file)
|
||||
})
|
||||
|
||||
get('/*.css', function(file){
|
||||
this.render(file + '.sass.css', { layout: false })
|
||||
})
|
||||
|
||||
run()
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user