rack 2.2.10 → 3.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rack might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +138 -105
- data/CONTRIBUTING.md +53 -47
- data/MIT-LICENSE +1 -1
- data/README.md +287 -0
- data/Rakefile +40 -7
- data/SPEC.rdoc +166 -125
- data/contrib/LICENSE.md +7 -0
- data/contrib/logo.webp +0 -0
- data/lib/rack/auth/abstract/handler.rb +3 -1
- data/lib/rack/auth/abstract/request.rb +3 -1
- data/lib/rack/auth/basic.rb +2 -1
- data/lib/rack/auth/digest/md5.rb +1 -131
- data/lib/rack/auth/digest/nonce.rb +1 -53
- data/lib/rack/auth/digest/params.rb +1 -54
- data/lib/rack/auth/digest/request.rb +1 -43
- data/lib/rack/auth/digest.rb +256 -0
- data/lib/rack/body_proxy.rb +3 -1
- data/lib/rack/builder.rb +60 -42
- data/lib/rack/cascade.rb +2 -0
- data/lib/rack/chunked.rb +16 -13
- data/lib/rack/common_logger.rb +23 -18
- data/lib/rack/conditional_get.rb +18 -15
- data/lib/rack/constants.rb +62 -0
- data/lib/rack/content_length.rb +12 -16
- data/lib/rack/content_type.rb +8 -5
- data/lib/rack/deflater.rb +40 -26
- data/lib/rack/directory.rb +9 -3
- data/lib/rack/etag.rb +14 -23
- data/lib/rack/events.rb +4 -0
- data/lib/rack/file.rb +2 -0
- data/lib/rack/files.rb +15 -17
- data/lib/rack/head.rb +9 -8
- data/lib/rack/headers.rb +154 -0
- data/lib/rack/lint.rb +740 -649
- data/lib/rack/lock.rb +2 -5
- data/lib/rack/logger.rb +2 -0
- data/lib/rack/media_type.rb +4 -9
- data/lib/rack/method_override.rb +5 -1
- data/lib/rack/mime.rb +8 -0
- data/lib/rack/mock.rb +1 -271
- data/lib/rack/mock_request.rb +166 -0
- data/lib/rack/mock_response.rb +124 -0
- data/lib/rack/multipart/generator.rb +7 -5
- data/lib/rack/multipart/parser.rb +123 -85
- data/lib/rack/multipart/uploaded_file.rb +4 -0
- data/lib/rack/multipart.rb +20 -40
- data/lib/rack/null_logger.rb +9 -0
- data/lib/rack/query_parser.rb +76 -44
- data/lib/rack/recursive.rb +2 -0
- data/lib/rack/reloader.rb +0 -2
- data/lib/rack/request.rb +189 -91
- data/lib/rack/response.rb +131 -61
- data/lib/rack/rewindable_input.rb +24 -5
- data/lib/rack/runtime.rb +7 -6
- data/lib/rack/sendfile.rb +30 -25
- data/lib/rack/show_exceptions.rb +15 -2
- data/lib/rack/show_status.rb +17 -7
- data/lib/rack/static.rb +8 -8
- data/lib/rack/tempfile_reaper.rb +15 -4
- data/lib/rack/urlmap.rb +4 -2
- data/lib/rack/utils.rb +212 -202
- data/lib/rack/version.rb +9 -4
- data/lib/rack.rb +5 -76
- data/rack.gemspec +6 -6
- metadata +19 -31
- data/README.rdoc +0 -320
- data/bin/rackup +0 -5
- data/contrib/rack.png +0 -0
- data/contrib/rack.svg +0 -150
- data/contrib/rack_logo.svg +0 -164
- data/lib/rack/core_ext/regexp.rb +0 -14
- data/lib/rack/handler/cgi.rb +0 -59
- data/lib/rack/handler/fastcgi.rb +0 -100
- data/lib/rack/handler/lsws.rb +0 -61
- data/lib/rack/handler/scgi.rb +0 -71
- data/lib/rack/handler/thin.rb +0 -36
- data/lib/rack/handler/webrick.rb +0 -129
- data/lib/rack/handler.rb +0 -104
- data/lib/rack/lobster.rb +0 -70
- data/lib/rack/server.rb +0 -466
- data/lib/rack/session/abstract/id.rb +0 -523
- data/lib/rack/session/cookie.rb +0 -203
- data/lib/rack/session/memcache.rb +0 -10
- data/lib/rack/session/pool.rb +0 -85
data/contrib/rack.svg
DELETED
@@ -1,150 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
-
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
3
|
-
|
4
|
-
<svg
|
5
|
-
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
6
|
-
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
7
|
-
xmlns:cc="http://creativecommons.org/ns#"
|
8
|
-
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
9
|
-
xmlns:svg="http://www.w3.org/2000/svg"
|
10
|
-
xmlns="http://www.w3.org/2000/svg"
|
11
|
-
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
12
|
-
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
13
|
-
width="744.09448819"
|
14
|
-
height="1052.3622047"
|
15
|
-
id="svg2"
|
16
|
-
version="1.1"
|
17
|
-
inkscape:version="0.48.3.1 r9886"
|
18
|
-
sodipodi:docname="rack.svg">
|
19
|
-
<defs
|
20
|
-
id="defs4">
|
21
|
-
<linearGradient
|
22
|
-
id="linearGradient3837"
|
23
|
-
osb:paint="solid">
|
24
|
-
<stop
|
25
|
-
style="stop-color:#000000;stop-opacity:1;"
|
26
|
-
offset="0"
|
27
|
-
id="stop3839" />
|
28
|
-
</linearGradient>
|
29
|
-
</defs>
|
30
|
-
<sodipodi:namedview
|
31
|
-
id="base"
|
32
|
-
pagecolor="#ffffff"
|
33
|
-
bordercolor="#666666"
|
34
|
-
borderopacity="1.0"
|
35
|
-
inkscape:pageopacity="0.0"
|
36
|
-
inkscape:pageshadow="2"
|
37
|
-
inkscape:zoom="0.98994949"
|
38
|
-
inkscape:cx="230.49849"
|
39
|
-
inkscape:cy="656.46253"
|
40
|
-
inkscape:document-units="px"
|
41
|
-
inkscape:current-layer="layer1"
|
42
|
-
showgrid="false"
|
43
|
-
showguides="false"
|
44
|
-
inkscape:guide-bbox="true"
|
45
|
-
inkscape:window-width="1920"
|
46
|
-
inkscape:window-height="1056"
|
47
|
-
inkscape:window-x="1920"
|
48
|
-
inkscape:window-y="24"
|
49
|
-
inkscape:window-maximized="1">
|
50
|
-
<sodipodi:guide
|
51
|
-
orientation="1,0"
|
52
|
-
position="645.99255,757.10933"
|
53
|
-
id="guide2995" />
|
54
|
-
<sodipodi:guide
|
55
|
-
orientation="1,0"
|
56
|
-
position="488.40876,686.90373"
|
57
|
-
id="guide2997" />
|
58
|
-
<sodipodi:guide
|
59
|
-
orientation="1,0"
|
60
|
-
position="176.7767,748.52304"
|
61
|
-
id="guide2999" />
|
62
|
-
<sodipodi:guide
|
63
|
-
orientation="1,0"
|
64
|
-
position="355.71429,782.85714"
|
65
|
-
id="guide3005" />
|
66
|
-
<sodipodi:guide
|
67
|
-
orientation="0,1"
|
68
|
-
position="527.14286,642.85714"
|
69
|
-
id="guide3007" />
|
70
|
-
<sodipodi:guide
|
71
|
-
orientation="0,1"
|
72
|
-
position="431.42857,507.85714"
|
73
|
-
id="guide3009" />
|
74
|
-
<sodipodi:guide
|
75
|
-
orientation="0,1"
|
76
|
-
position="488.40876,783.57143"
|
77
|
-
id="guide3011" />
|
78
|
-
<sodipodi:guide
|
79
|
-
orientation="0,1"
|
80
|
-
position="505,372.85714"
|
81
|
-
id="guide3013" />
|
82
|
-
</sodipodi:namedview>
|
83
|
-
<metadata
|
84
|
-
id="metadata7">
|
85
|
-
<rdf:RDF>
|
86
|
-
<cc:Work
|
87
|
-
rdf:about="">
|
88
|
-
<dc:format>image/svg+xml</dc:format>
|
89
|
-
<dc:type
|
90
|
-
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
91
|
-
<dc:title></dc:title>
|
92
|
-
</cc:Work>
|
93
|
-
</rdf:RDF>
|
94
|
-
</metadata>
|
95
|
-
<g
|
96
|
-
inkscape:label="Layer 1"
|
97
|
-
inkscape:groupmode="layer"
|
98
|
-
id="layer1">
|
99
|
-
<path
|
100
|
-
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
|
101
|
-
d="m 176.28125,201.03125 0,0.625 0,395.125 0,0.375 0.34375,0.0937 312.34375,91.6875 0.625,0.1875 0,-0.65625 0.125,-419.09375 0,-0.40625 -0.40625,-0.0937 -312.4375,-67.71875 -0.59375,-0.125 z m 1,1.21875 311.4375,67.5 -0.125,418.0625 -311.3125,-91.375 0,-394.1875 z"
|
102
|
-
id="path2985"
|
103
|
-
inkscape:connector-curvature="0" />
|
104
|
-
<path
|
105
|
-
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
|
106
|
-
d="m 647.21875,206.59375 -0.6875,0.28125 -157.59375,62.21875 -0.3125,0.125 0,0.34375 0.1875,419.125 0,0.75 0.6875,-0.28125 156.0625,-63.1875 0.3125,-0.125 0,-0.34375 1.34375,-418.15625 0,-0.75 z m -1,1.4375 -1.34375,417.125 -155.0625,62.78125 -0.1875,-418.03125 156.59375,-61.875 z"
|
107
|
-
id="path2993"
|
108
|
-
inkscape:connector-curvature="0" />
|
109
|
-
<path
|
110
|
-
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
|
111
|
-
d="m 355.6875,137.40625 -0.15625,0.0625 L 176.96875,201.0625 177.3125,202 355.75,138.4375 646.78125,207.53125 647,206.5625 l -291.15625,-69.125 -0.15625,-0.0312 z"
|
112
|
-
id="path3003"
|
113
|
-
inkscape:connector-curvature="0" />
|
114
|
-
<path
|
115
|
-
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
|
116
|
-
d="m 355.71875,277.53125 -0.125,0.0312 -178.9375,47.96875 -1.8125,0.46875 1.8125,0.5 311.625,83.5 0.15625,0.0312 0.125,-0.0625 157.59375,-53.65625 1.5625,-0.53125 -1.59375,-0.4375 -290.28125,-77.78125 -0.125,-0.0312 z m 0,1.03125 L 644.3125,355.90625 488.375,409 178.71875,326 l 177,-47.4375 z"
|
117
|
-
id="path3015"
|
118
|
-
inkscape:connector-curvature="0" />
|
119
|
-
<path
|
120
|
-
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
|
121
|
-
d="m 355.21875,240.9375 0,37.125 1,0 0,-37.125 -1,0 z"
|
122
|
-
id="path3017"
|
123
|
-
inkscape:connector-curvature="0" />
|
124
|
-
<path
|
125
|
-
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
|
126
|
-
d="m 176.28125,202.65625 0,393.28125 1,0 0,-393.28125 -1,0 z"
|
127
|
-
id="path3019"
|
128
|
-
inkscape:connector-curvature="0" />
|
129
|
-
<path
|
130
|
-
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
|
131
|
-
d="m 355.71875,409 -0.125,0.0312 L 177,455.8125 l -1.78125,0.46875 1.78125,0.5 L 488.28125,545 l 0.15625,0.0312 0.125,-0.0625 156.71875,-56.25 1.46875,-0.53125 -1.53125,-0.40625 -289.375,-78.75 -0.125,-0.0312 z m 0,1.03125 287.6875,78.28125 L 488.375,544 179.03125,456.3125 355.71875,410.03125 z"
|
132
|
-
id="path3021"
|
133
|
-
inkscape:connector-curvature="0" />
|
134
|
-
<path
|
135
|
-
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
|
136
|
-
d="m 355.71875,544 -0.15625,0.0312 -178.5625,52.3125 0.28125,0.96875 178.4375,-52.28125 289.59375,80.25 0.28125,-0.96875 -289.75,-80.28125 -0.125,-0.0312 z"
|
137
|
-
id="path3023"
|
138
|
-
inkscape:connector-curvature="0" />
|
139
|
-
<path
|
140
|
-
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
|
141
|
-
d="m 355.21875,374.34375 0,35.15625 1,0 0,-35.15625 -1,0 z"
|
142
|
-
id="path3025"
|
143
|
-
inkscape:connector-curvature="0" />
|
144
|
-
<path
|
145
|
-
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
|
146
|
-
d="m 355.1875,507.03125 0,37.4375 1.03125,0 0,-37.4375 -1.03125,0 z"
|
147
|
-
id="path3027"
|
148
|
-
inkscape:connector-curvature="0" />
|
149
|
-
</g>
|
150
|
-
</svg>
|
data/contrib/rack_logo.svg
DELETED
@@ -1,164 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
-
<svg
|
4
|
-
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
5
|
-
xmlns:cc="http://web.resource.org/cc/"
|
6
|
-
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
7
|
-
xmlns:svg="http://www.w3.org/2000/svg"
|
8
|
-
xmlns:xlink="http://www.w3.org/1999/xlink"
|
9
|
-
xmlns="http://www.w3.org/2000/svg"
|
10
|
-
version="1.1"
|
11
|
-
x="0px"
|
12
|
-
y="0px"
|
13
|
-
viewBox="-480 209.5 750 375"
|
14
|
-
style="enable-background:new -480 209.5 750 375;"
|
15
|
-
xml:space="preserve">
|
16
|
-
<style type="text/css">
|
17
|
-
.st0{display:none;}
|
18
|
-
.st1{display:inline;}
|
19
|
-
.st2{fill:none;stroke:#000000;stroke-width:11.4452;stroke-linejoin:round;}
|
20
|
-
.st3{fill:none;stroke:#000000;stroke-width:11.6061;stroke-linejoin:round;}
|
21
|
-
.st4{fill:none;stroke:#000000;stroke-width:7.7374;stroke-linejoin:round;}
|
22
|
-
.st5{fill:none;stroke:#000000;stroke-width:7.7374;}
|
23
|
-
.st6{stroke:#000000;stroke-width:5.8905;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:30;}
|
24
|
-
</style>
|
25
|
-
<g id="Logo_Text" inkscape:export-ydpi="360" inkscape:export-xdpi="360" inkscape:export-filename="/home/blackbird/Desktop/rack_logo_final.png" inkscape:version="0.44" sodipodi:version="0.32" sodipodi:docname="rack_logo.svg" sodipodi:docbase="/home/blackbird/Desktop" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
26
|
-
|
27
|
-
<sodipodi:namedview width="200px" height="100px" inkscape:window-y="24" inkscape:window-x="0" inkscape:window-height="975" inkscape:window-width="1400" inkscape:current-layer="layer1" inkscape:document-units="px" inkscape:pageshadow="2" inkscape:pageopacity="0.0" inkscape:cy="67.007749" inkscape:cx="148.56163" inkscape:zoom="3.959798" objecttolerance="10" guidetolerance="10" gridtolerance="10000" borderopacity="1.0" bordercolor="#666666" pagecolor="#ffffff" id="base">
|
28
|
-
</sodipodi:namedview>
|
29
|
-
<path id="text2980" d="M-84.9,419.5v27.1c-2-0.7-4.2-1.1-6.8-1.1c-3,0-5.8,0.7-8.6,2.1c-2.7,1.4-4.9,3.1-6.5,5.3
|
30
|
-
c-1.2,1.6-2,3.6-2.6,6c-0.4,1.5-0.6,3.6-0.6,6.2v23.5h-33.7v-68.5h31.5v15.3c2.8-5.9,5.8-10.2,9.2-12.6c3.4-2.5,7.6-3.8,12.5-3.8
|
31
|
-
C-88.7,419.1-86.9,419.2-84.9,419.5 M-33.2,488.7V479c-5.3,7.8-13.2,11.7-23.7,11.7c-7.8,0-13.8-2-18.1-5.9
|
32
|
-
c-4.3-3.9-6.5-8.9-6.5-14.9c0-4.4,1-8.3,3-11.6c2.1-3.4,5-6.1,8.7-8.1c2.4-1.3,5.7-2.4,10-3.3c4.4-0.9,9.5-1.3,15.5-1.3
|
33
|
-
c2.7,0,6.2,0.1,10.4,0.3c-0.1-3.1-1.3-5.6-3.7-7.4c-2.4-1.9-6.4-2.8-12-2.8c-3.6,0-7.4,0.4-11.2,1.3c-2.8,0.7-7.1,2.2-12.7,4.5v-19
|
34
|
-
c5.2-1.5,9.9-2.5,14.3-3.1c4.4-0.6,9.3-0.9,14.6-0.9c8.4,0,15.6,0.8,21.6,2.3c3,0.7,5.7,1.9,8.3,3.4c2.5,1.5,4.5,3.2,6,5.1
|
35
|
-
c1.5,1.8,2.7,4.2,3.7,7c1,2.8,1.5,6.7,1.5,11.7v40.7H-33.2 M-33,458.2c-5.4,0-9.1,0.1-11.2,0.6c-2.1,0.4-3.8,1.3-5,2.8
|
36
|
-
c-1.2,1.4-1.8,3-1.8,4.8c0,1.9,0.7,3.6,2.2,5c1.5,1.4,3.3,2.1,5.4,2.1c2.6,0,5-1.1,7.2-3.4c2.2-2.3,3.3-5.5,3.3-9.7
|
37
|
-
C-32.9,459.8-32.9,459.1-33,458.2 M70.9,421.1v20.4c-5.8-2.4-10.8-3.5-14.9-3.5c-5,0-9,1.5-12,4.4c-3,2.9-4.5,6.7-4.5,11.4
|
38
|
-
c0,5.3,1.5,9.4,4.5,12.5c3.1,3,7.2,4.6,12.5,4.6c4.3,0,9.3-1.4,15-4.1v20.5c-8.5,2.4-16.9,3.5-25.1,3.5c-6.8,0-13.2-1-19.1-3
|
39
|
-
c-4.4-1.5-8.3-3.7-11.6-6.5c-3.2-2.9-5.7-6.1-7.5-9.6c-2.5-5-3.8-10.7-3.8-17.1c0-12.1,4.5-21.5,13.4-28.3
|
40
|
-
c7.1-5.4,16.7-8.1,28.8-8.1C55.1,418.1,63.2,419.1,70.9,421.1 M116.1,447.5l19.3-27.4H173l-23.3,30.4l24.2,38.2h-39l-18.9-33.3
|
41
|
-
v33.3H82.4v-99.1h33.7V447.5"/>
|
42
|
-
<path id="text2985" d="M-142.2,535.9h2.4v-11h0.1c0.6,1.2,1.4,2.2,2.4,2.8c1,0.6,2.2,0.9,3.7,0.9c2.6,0,4.5-0.9,5.9-2.7
|
43
|
-
c1.4-1.9,2.1-4.2,2.1-7.2c0-3-0.6-5.4-1.9-7.1c-0.7-0.9-1.5-1.6-2.5-2c-1-0.5-2.2-0.7-3.6-0.7c-0.9,0-1.7,0.1-2.4,0.4
|
44
|
-
c-0.7,0.2-1.3,0.6-1.8,1c-0.5,0.4-0.8,0.8-1.1,1.2c-0.3,0.4-0.5,0.8-0.8,1.2l-0.1,0.1h-0.1l0.2-3.4h-2.4V535.9 M-128.3,518.7
|
45
|
-
c0,1-0.1,2-0.3,2.9c-0.2,0.9-0.5,1.8-1,2.5c-0.4,0.7-1,1.3-1.8,1.8c-0.7,0.4-1.7,0.7-2.7,0.7c-1,0-1.9-0.2-2.6-0.7
|
46
|
-
c-0.7-0.5-1.3-1.1-1.8-1.9c-0.5-0.8-0.8-1.6-1-2.6c-0.2-0.9-0.3-1.9-0.3-2.8c0-0.9,0.1-1.8,0.3-2.7c0.2-0.9,0.6-1.8,1-2.6
|
47
|
-
c0.5-0.8,1.1-1.4,1.8-1.9c0.8-0.5,1.7-0.7,2.7-0.7c1.1,0,2,0.2,2.7,0.7c0.8,0.4,1.4,1.1,1.8,1.8c0.5,0.7,0.8,1.6,1,2.5
|
48
|
-
C-128.4,516.7-128.3,517.6-128.3,518.7 M-122.7,518.7c0,1.3,0.2,2.6,0.5,3.8c0.4,1.2,0.9,2.2,1.7,3.2c0.7,0.9,1.7,1.6,2.8,2.2
|
49
|
-
c1.2,0.5,2.5,0.8,4,0.8c1.5,0,2.9-0.3,4-0.8c1.2-0.5,2.1-1.3,2.9-2.2c0.7-0.9,1.3-2,1.6-3.2c0.4-1.2,0.6-2.4,0.6-3.7
|
50
|
-
c0-1.3-0.2-2.6-0.6-3.7c-0.4-1.2-0.9-2.3-1.6-3.2c-0.7-0.9-1.7-1.6-2.9-2.2c-1.1-0.5-2.5-0.8-4-0.8c-1.5,0-2.9,0.3-4,0.8
|
51
|
-
c-1.1,0.5-2.1,1.2-2.9,2.2c-0.7,0.9-1.3,2-1.7,3.2C-122.5,516.1-122.7,517.3-122.7,518.7 M-120.1,518.7c0-2.3,0.6-4.2,1.7-5.6
|
52
|
-
c1.1-1.5,2.7-2.3,4.8-2.3c2,0,3.6,0.8,4.7,2.3c1.1,1.5,1.7,3.4,1.7,5.6c0,2.3-0.6,4.2-1.7,5.7c-1.1,1.5-2.7,2.2-4.7,2.2
|
53
|
-
c-2,0-3.6-0.7-4.8-2.2C-119.5,522.8-120.1,520.9-120.1,518.7 M-74,509.2h-2.4l-5.4,16.4h-0.1l-5.2-16.4h-2.9l-5.4,16.4h-0.1
|
54
|
-
l-5.1-16.4h-2.6l6.3,18.9h2.9l5.3-16.4h0.1l5.3,16.4h2.9L-74,509.2 M-58.3,525.1c-0.6,0.4-1.4,0.7-2.6,1c-1.1,0.3-2.1,0.4-2.9,0.4
|
55
|
-
c-2,0-3.6-0.7-4.7-2c-1.1-1.4-1.7-3.1-1.7-5.2h13.3v-1.2c0-1.3-0.2-2.5-0.5-3.6c-0.3-1.1-0.8-2.1-1.4-3c-0.6-0.9-1.4-1.5-2.4-2
|
56
|
-
c-1-0.5-2.1-0.7-3.5-0.7c-1.2,0-2.3,0.2-3.3,0.7c-1,0.5-1.9,1.1-2.6,2c-0.7,0.9-1.3,1.9-1.7,3.2c-0.4,1.2-0.6,2.5-0.6,4
|
57
|
-
c0,1.5,0.2,2.8,0.5,4c0.3,1.2,0.8,2.2,1.5,3.1c0.7,0.9,1.6,1.6,2.7,2.1c1.1,0.5,2.5,0.7,4.1,0.7c0.9,0,1.9-0.1,2.9-0.3
|
58
|
-
c1-0.2,1.9-0.4,2.7-0.7V525.1 M-70.2,517.3c0-0.8,0.1-1.6,0.4-2.3c0.3-0.8,0.7-1.5,1.1-2.2c0.5-0.6,1.1-1.1,1.8-1.5
|
59
|
-
c0.7-0.4,1.5-0.6,2.4-0.6c0.9,0,1.6,0.2,2.3,0.6c0.6,0.3,1.1,0.8,1.5,1.4c0.4,0.6,0.7,1.3,0.9,2.1c0.2,0.8,0.3,1.6,0.3,2.4H-70.2
|
60
|
-
M-52.6,528.1h2.4v-9.3c0-0.9,0.1-1.8,0.2-2.7c0.2-0.9,0.4-1.7,0.8-2.4c0.4-0.7,0.9-1.3,1.5-1.8c0.6-0.4,1.4-0.7,2.3-0.7
|
61
|
-
c0.7,0,1.3,0.1,1.8,0.2V509c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3,0-0.6-0.1-0.8-0.1c-1.1,0-2.1,0.4-3,1.1c-0.8,0.8-1.5,1.7-2,2.9h-0.1
|
62
|
-
v-3.6h-2.4c0.1,0.6,0.1,1.2,0.1,1.7c0,0.5,0,1.3,0,2.5V528.1 M-41.9,527.7c1.5,0.6,3.3,0.9,5.5,0.9c0.8,0,1.6-0.1,2.4-0.3
|
63
|
-
c0.8-0.2,1.5-0.5,2.2-0.9c0.7-0.4,1.2-1,1.6-1.7c0.4-0.7,0.6-1.5,0.6-2.5c0-0.8-0.2-1.6-0.5-2.2c-0.3-0.6-0.8-1.2-1.3-1.6
|
64
|
-
c-0.5-0.5-1.1-0.9-1.7-1.1c-0.6-0.3-1.3-0.7-2.3-1.1c-1.3-0.6-2.3-1.1-2.9-1.5c-0.6-0.4-0.9-1-0.9-1.7c0-1.1,0.4-1.9,1.1-2.4
|
65
|
-
c0.7-0.5,1.8-0.7,3.1-0.7c0.7,0,1.4,0.1,2.2,0.3c0.8,0.1,1.5,0.4,2.1,0.6l0.2-2c-0.8-0.3-1.6-0.5-2.6-0.6c-0.9-0.1-1.6-0.2-2.3-0.2
|
66
|
-
c-0.8,0-1.6,0.1-2.4,0.3c-0.7,0.2-1.4,0.5-2,0.9c-0.6,0.4-1.1,1-1.4,1.6c-0.3,0.6-0.5,1.4-0.5,2.3c0,0.7,0.1,1.3,0.4,1.8
|
67
|
-
c0.3,0.5,0.6,1,1.1,1.4c0.5,0.4,0.9,0.7,1.5,1c0.5,0.3,1.2,0.6,2.1,1c1.5,0.7,2.5,1.3,3.2,1.9c0.7,0.5,1.1,1.3,1.1,2.3
|
68
|
-
c0,1-0.4,1.9-1.3,2.5c-0.8,0.6-1.9,0.9-3.1,0.9c-1.8,0-3.4-0.4-5.1-1.2L-41.9,527.7 M11.2,509.2H8.8l-5.4,16.4H3.3l-5.2-16.4h-2.9
|
69
|
-
l-5.4,16.4h-0.1l-5.1-16.4H-18l6.3,18.9h2.9l5.3-16.4h0.1l5.3,16.4h2.9L11.2,509.2 M26.9,525.1c-0.6,0.4-1.4,0.7-2.6,1
|
70
|
-
c-1.1,0.3-2.1,0.4-2.9,0.4c-2,0-3.6-0.7-4.7-2c-1.1-1.4-1.7-3.1-1.7-5.2h13.3v-1.2c0-1.3-0.2-2.5-0.5-3.6c-0.3-1.1-0.8-2.1-1.4-3
|
71
|
-
c-0.6-0.9-1.4-1.5-2.4-2c-1-0.5-2.1-0.7-3.5-0.7c-1.2,0-2.3,0.2-3.3,0.7c-1,0.5-1.9,1.1-2.6,2c-0.7,0.9-1.3,1.9-1.7,3.2
|
72
|
-
c-0.4,1.2-0.6,2.5-0.6,4c0,1.5,0.2,2.8,0.5,4c0.3,1.2,0.8,2.2,1.5,3.1c0.7,0.9,1.6,1.6,2.7,2.1c1.1,0.5,2.5,0.7,4.1,0.7
|
73
|
-
c0.9,0,1.9-0.1,2.9-0.3c1-0.2,1.9-0.4,2.7-0.7V525.1 M15,517.3c0-0.8,0.1-1.6,0.4-2.3c0.3-0.8,0.7-1.5,1.1-2.2
|
74
|
-
c0.5-0.6,1.1-1.1,1.8-1.5c0.7-0.4,1.5-0.6,2.4-0.6c0.9,0,1.6,0.2,2.3,0.6c0.6,0.3,1.1,0.8,1.5,1.4c0.4,0.6,0.7,1.3,0.9,2.1
|
75
|
-
c0.2,0.8,0.3,1.6,0.3,2.4H15 M32.3,528.1h2.4v-3h0.1c1.2,2.3,3.3,3.4,6.1,3.4c2.6,0,4.5-0.9,5.9-2.7c1.4-1.9,2.1-4.2,2.1-7.2
|
76
|
-
c0-3-0.6-5.4-1.9-7.1c-0.7-0.9-1.5-1.6-2.5-2c-1-0.5-2.2-0.7-3.6-0.7c-0.9,0-1.7,0.1-2.4,0.4c-0.7,0.3-1.3,0.6-1.8,1
|
77
|
-
c-0.5,0.4-0.9,0.8-1.2,1.2c-0.3,0.4-0.5,0.7-0.6,1h-0.1v-12.1h-2.4V528.1 M46.2,518.7c0,1-0.1,2-0.3,2.9c-0.2,0.9-0.5,1.8-1,2.5
|
78
|
-
c-0.4,0.7-1,1.3-1.8,1.8c-0.7,0.4-1.7,0.7-2.7,0.7c-1,0-1.9-0.2-2.6-0.7c-0.7-0.5-1.3-1.1-1.8-1.9c-0.5-0.8-0.8-1.6-1-2.6
|
79
|
-
c-0.2-0.9-0.3-1.9-0.3-2.8c0-0.9,0.1-1.9,0.3-2.8c0.2-0.9,0.5-1.8,1-2.5c0.5-0.8,1.1-1.4,1.8-1.9c0.8-0.5,1.7-0.7,2.7-0.7
|
80
|
-
c1.1,0,2,0.2,2.7,0.7c0.8,0.4,1.4,1.1,1.8,1.8c0.5,0.7,0.8,1.6,1,2.5C46.2,516.7,46.2,517.6,46.2,518.7 M74.9,528.1h2.4
|
81
|
-
c-0.1-0.6-0.1-1.2-0.2-1.7c0-0.5,0-1.3,0-2.3v-8.3c0-2.5-0.5-4.3-1.6-5.4c-1.1-1.1-2.8-1.7-5.2-1.7c-0.8,0-1.8,0.1-2.9,0.4
|
82
|
-
c-1.1,0.2-2,0.5-2.8,0.9v2.3c1.7-1,3.6-1.6,5.7-1.6c1.6,0,2.7,0.4,3.4,1.2c0.7,0.8,1,2,1,3.7v1h-0.5c-1.6,0-3.1,0.1-4.4,0.2
|
83
|
-
c-1.3,0.1-2.5,0.4-3.7,0.8c-1.2,0.4-2.1,1.1-2.9,2c-0.7,0.9-1.1,2.1-1.1,3.6c0,0.5,0.1,1.1,0.2,1.7c0.2,0.6,0.5,1.2,1,1.7
|
84
|
-
c0.5,0.5,1.1,1,2,1.4c0.9,0.4,1.9,0.6,3.2,0.6c1.3,0,2.5-0.3,3.7-0.9c1.2-0.6,2-1.5,2.5-2.6h0.1V528.1 M74.7,519.7
|
85
|
-
c0,0.8-0.1,1.5-0.2,2.2c-0.1,0.7-0.3,1.4-0.7,2.1c-0.4,0.7-0.9,1.3-1.8,1.8c-0.8,0.5-1.8,0.7-3.2,0.7c-1.2,0-2.2-0.3-2.9-0.8
|
86
|
-
c-0.7-0.6-1.1-1.4-1.1-2.6c0-1,0.3-1.8,0.8-2.4c0.5-0.6,1.2-1.1,2.1-1.4c0.9-0.3,1.8-0.5,2.9-0.6c1-0.1,2.1-0.1,3.4-0.1h0.7V519.7
|
87
|
-
M82.2,535.9h2.4v-11h0.1c0.6,1.2,1.4,2.2,2.4,2.8c1,0.6,2.2,0.9,3.7,0.9c2.6,0,4.5-0.9,5.9-2.7c1.4-1.9,2.1-4.2,2.1-7.2
|
88
|
-
c0-3-0.6-5.4-1.9-7.1c-0.7-0.9-1.5-1.6-2.5-2c-1-0.5-2.2-0.7-3.6-0.7c-0.9,0-1.7,0.1-2.4,0.4c-0.7,0.2-1.3,0.6-1.8,1
|
89
|
-
c-0.5,0.4-0.8,0.8-1.1,1.2c-0.3,0.4-0.5,0.8-0.8,1.2l-0.1,0.1h-0.1l0.2-3.4h-2.4V535.9 M96.1,518.7c0,1-0.1,2-0.3,2.9
|
90
|
-
c-0.2,0.9-0.5,1.8-1,2.5c-0.4,0.7-1,1.3-1.8,1.8c-0.7,0.4-1.7,0.7-2.7,0.7c-1,0-1.9-0.2-2.6-0.7c-0.7-0.5-1.3-1.1-1.8-1.9
|
91
|
-
c-0.5-0.8-0.8-1.6-1-2.6c-0.2-0.9-0.3-1.9-0.3-2.8c0-0.9,0.1-1.8,0.3-2.7c0.2-0.9,0.6-1.8,1-2.6c0.5-0.8,1.1-1.4,1.8-1.9
|
92
|
-
c0.8-0.5,1.7-0.7,2.7-0.7c1.1,0,2,0.2,2.7,0.7c0.8,0.4,1.4,1.1,1.8,1.8c0.5,0.7,0.8,1.6,1,2.5C96,516.7,96.1,517.6,96.1,518.7
|
93
|
-
M103,535.9h2.4v-11h0.1c0.6,1.2,1.4,2.2,2.4,2.8c1,0.6,2.2,0.9,3.7,0.9c2.6,0,4.5-0.9,5.9-2.7c1.4-1.9,2.1-4.2,2.1-7.2
|
94
|
-
c0-3-0.6-5.4-1.9-7.1c-0.7-0.9-1.5-1.6-2.5-2c-1-0.5-2.2-0.7-3.6-0.7c-0.9,0-1.7,0.1-2.4,0.4c-0.7,0.2-1.3,0.6-1.8,1
|
95
|
-
c-0.5,0.4-0.8,0.8-1.1,1.2c-0.3,0.4-0.5,0.8-0.8,1.2l-0.1,0.1h-0.1l0.2-3.4H103V535.9 M116.9,518.7c0,1-0.1,2-0.3,2.9
|
96
|
-
c-0.2,0.9-0.5,1.8-1,2.5c-0.4,0.7-1,1.3-1.8,1.8c-0.7,0.4-1.7,0.7-2.7,0.7c-1,0-1.9-0.2-2.6-0.7c-0.7-0.5-1.3-1.1-1.8-1.9
|
97
|
-
c-0.5-0.8-0.8-1.6-1-2.6c-0.2-0.9-0.3-1.9-0.3-2.8c0-0.9,0.1-1.8,0.3-2.7c0.2-0.9,0.6-1.8,1-2.6c0.5-0.8,1.1-1.4,1.8-1.9
|
98
|
-
c0.8-0.5,1.7-0.7,2.7-0.7c1.1,0,2,0.2,2.7,0.7c0.8,0.4,1.4,1.1,1.8,1.8c0.5,0.7,0.8,1.6,1,2.5C116.8,516.7,116.9,517.6,116.9,518.7
|
99
|
-
M124,528.1h2.4v-27.8H124V528.1 M132.3,528.1h2.4v-18.9h-2.4V528.1 M134.7,501h-2.4v3.1h2.4V501 M153.5,509.5
|
100
|
-
c-0.6-0.2-1.3-0.4-2.1-0.5c-0.8-0.1-1.6-0.2-2.6-0.2c-1.4,0-2.7,0.2-3.9,0.7c-1.2,0.5-2.2,1.1-3.1,2c-0.8,0.9-1.5,1.9-1.9,3.2
|
101
|
-
c-0.5,1.2-0.7,2.5-0.7,4c0,1.3,0.2,2.6,0.6,3.8c0.4,1.2,1,2.2,1.8,3.2c0.8,0.9,1.8,1.6,2.9,2.2c1.2,0.5,2.5,0.8,4,0.8
|
102
|
-
c1,0,1.9,0,2.7-0.1c0.8-0.1,1.6-0.2,2.3-0.5l-0.2-2.2c-1.6,0.6-3,0.9-4.4,0.9c-1.1,0-2-0.2-2.9-0.6c-0.9-0.4-1.6-1-2.2-1.7
|
103
|
-
c-0.6-0.7-1.1-1.6-1.4-2.5c-0.3-1-0.5-2-0.5-3.1c0-2.3,0.6-4.3,1.9-5.7c1.3-1.5,3.1-2.2,5.4-2.2c0.6,0,1.3,0.1,2,0.3
|
104
|
-
c0.7,0.2,1.5,0.4,2.1,0.7L153.5,509.5 M168.5,528.1h2.4c-0.1-0.6-0.1-1.2-0.2-1.7c0-0.5,0-1.3,0-2.3v-8.3c0-2.5-0.5-4.3-1.6-5.4
|
105
|
-
c-1.1-1.1-2.8-1.7-5.2-1.7c-0.8,0-1.8,0.1-2.9,0.4c-1.1,0.2-2,0.5-2.8,0.9v2.3c1.7-1,3.6-1.6,5.7-1.6c1.6,0,2.7,0.4,3.4,1.2
|
106
|
-
c0.7,0.8,1,2,1,3.7v1h-0.5c-1.6,0-3.1,0.1-4.4,0.2c-1.3,0.1-2.5,0.4-3.7,0.8c-1.2,0.4-2.1,1.1-2.9,2c-0.7,0.9-1.1,2.1-1.1,3.6
|
107
|
-
c0,0.5,0.1,1.1,0.2,1.7c0.2,0.6,0.5,1.2,1,1.7c0.5,0.5,1.1,1,2,1.4c0.9,0.4,1.9,0.6,3.2,0.6c1.3,0,2.5-0.3,3.7-0.9
|
108
|
-
c1.2-0.6,2-1.5,2.5-2.6h0.1V528.1 M168.3,519.7c0,0.8-0.1,1.5-0.2,2.2c-0.1,0.7-0.3,1.4-0.7,2.1c-0.4,0.7-0.9,1.3-1.8,1.8
|
109
|
-
c-0.8,0.5-1.8,0.7-3.2,0.7c-1.2,0-2.2-0.3-2.9-0.8c-0.7-0.6-1.1-1.4-1.1-2.6c0-1,0.3-1.8,0.8-2.4c0.5-0.6,1.2-1.1,2.1-1.4
|
110
|
-
c0.9-0.3,1.8-0.5,2.9-0.6c1-0.1,2.1-0.1,3.4-0.1h0.7V519.7 M184.4,509.2H180v-5.4l-2.4,0.8v4.6h-3.8v2h3.8v11c0,1.1,0,1.9,0.1,2.6
|
111
|
-
c0.1,0.7,0.3,1.3,0.5,1.9c0.3,0.5,0.7,1,1.3,1.3c0.6,0.3,1.4,0.5,2.4,0.5c0.5,0,1.1-0.1,1.6-0.2c0.6-0.1,1-0.2,1.3-0.3l-0.2-1.9
|
112
|
-
c-0.4,0.1-0.8,0.3-1.1,0.3c-0.3,0.1-0.7,0.1-1.1,0.1c-0.9,0-1.6-0.3-2-0.9c-0.4-0.6-0.6-1.3-0.6-2.3v-12.2h4.4V509.2 M188.5,528.1
|
113
|
-
h2.4v-18.9h-2.4V528.1 M190.9,501h-2.4v3.1h2.4V501 M195.3,518.7c0,1.3,0.2,2.6,0.5,3.8c0.4,1.2,0.9,2.2,1.7,3.2
|
114
|
-
c0.7,0.9,1.7,1.6,2.8,2.2c1.2,0.5,2.5,0.8,4,0.8c1.5,0,2.9-0.3,4-0.8c1.2-0.5,2.1-1.3,2.9-2.2c0.7-0.9,1.3-2,1.6-3.2
|
115
|
-
c0.4-1.2,0.6-2.4,0.6-3.7s-0.2-2.6-0.6-3.7c-0.4-1.2-0.9-2.3-1.6-3.2c-0.7-0.9-1.7-1.6-2.9-2.2c-1.1-0.5-2.5-0.8-4-0.8
|
116
|
-
c-1.5,0-2.9,0.3-4,0.8c-1.1,0.5-2.1,1.2-2.9,2.2c-0.7,0.9-1.3,2-1.7,3.2C195.5,516.1,195.3,517.3,195.3,518.7 M198,518.7
|
117
|
-
c0-2.3,0.6-4.2,1.7-5.6c1.1-1.5,2.7-2.3,4.8-2.3c2,0,3.6,0.8,4.7,2.3c1.1,1.5,1.7,3.4,1.7,5.6c0,2.3-0.6,4.2-1.7,5.7
|
118
|
-
c-1.1,1.5-2.7,2.2-4.7,2.2c-2,0-3.6-0.7-4.8-2.2C198.5,522.8,198,520.9,198,518.7 M217.6,528.1h2.4v-10.5c0-0.8,0.1-1.7,0.3-2.4
|
119
|
-
c0.2-0.8,0.5-1.6,1-2.2c0.5-0.7,1.1-1.2,1.8-1.6c0.8-0.4,1.7-0.6,2.7-0.6c1.6,0,2.8,0.5,3.5,1.5c0.7,1,1.1,2.5,1.1,4.3v11.5h2.4
|
120
|
-
V516c0-2.2-0.5-4-1.6-5.3c-1.1-1.3-2.7-2-5-2c-0.9,0-1.8,0.1-2.5,0.3c-0.7,0.2-1.3,0.5-1.8,0.9c-0.5,0.4-0.8,0.8-1.1,1.2
|
121
|
-
c-0.3,0.4-0.6,0.9-0.8,1.4h-0.1v-3.4h-2.3c0.1,1,0.2,2.5,0.2,4.4V528.1 M236.8,527.7c1.5,0.6,3.3,0.9,5.5,0.9
|
122
|
-
c0.8,0,1.6-0.1,2.4-0.3c0.8-0.2,1.5-0.5,2.2-0.9c0.7-0.4,1.2-1,1.6-1.7c0.4-0.7,0.6-1.5,0.6-2.5c0-0.8-0.2-1.6-0.5-2.2
|
123
|
-
c-0.3-0.6-0.8-1.2-1.3-1.6c-0.5-0.5-1.1-0.9-1.7-1.1c-0.6-0.3-1.3-0.7-2.3-1.1c-1.3-0.6-2.3-1.1-2.9-1.5s-0.9-1-0.9-1.7
|
124
|
-
c0-1.1,0.4-1.9,1.1-2.4c0.7-0.5,1.8-0.7,3.1-0.7c0.7,0,1.4,0.1,2.2,0.3c0.8,0.1,1.5,0.4,2.1,0.6l0.2-2c-0.8-0.3-1.6-0.5-2.6-0.6
|
125
|
-
c-0.9-0.1-1.6-0.2-2.3-0.2c-0.8,0-1.6,0.1-2.4,0.3c-0.7,0.2-1.4,0.5-2,0.9c-0.6,0.4-1.1,1-1.4,1.6c-0.3,0.6-0.5,1.4-0.5,2.3
|
126
|
-
c0,0.7,0.1,1.3,0.4,1.8c0.3,0.5,0.6,1,1.1,1.4c0.5,0.4,0.9,0.7,1.5,1c0.5,0.3,1.2,0.6,2.1,1c1.5,0.7,2.5,1.3,3.2,1.9
|
127
|
-
c0.7,0.5,1.1,1.3,1.1,2.3c0,1-0.4,1.9-1.3,2.5c-0.8,0.6-1.9,0.9-3.1,0.9c-1.8,0-3.4-0.4-5.1-1.2L236.8,527.7"/>
|
128
|
-
</g>
|
129
|
-
<g id="Old_Logo" class="st0">
|
130
|
-
<g class="st1">
|
131
|
-
<path id="path2990_1_" class="st2" d="M-434.2,530l1.4-261.6l173.6,30.1l-1.5,258.2L-434.2,530z"/>
|
132
|
-
<path id="path3877_1_" class="st3" d="M-432,267.9l91.6-30.5l157.1,31.9l-80,26.3L-432,267.9z"/>
|
133
|
-
<path id="path3879_1_" sodipodi:nodetypes="ccccc" class="st3" d="M-259.8,556.5l75.4-26.6l1.1-260l-74.5,26.7L-259.8,556.5z"/>
|
134
|
-
<path id="path3881_1_" sodipodi:nodetypes="ccccc" class="st4" d="M-428.7,343.6l87.4-25l153.7,30.6l-70.8,25L-428.7,343.6z"/>
|
135
|
-
<path id="path3883_1_" sodipodi:nodetypes="ccccc" class="st4" d="M-429.4,448.2l87.4-25l157,25l-75.5,27.2L-429.4,448.2z"/>
|
136
|
-
<path id="path3887_1_" class="st5" d="M-430.7,528.4l82.4-26.4l161.3,24.5"/>
|
137
|
-
<path id="path3889_1_" class="st5" d="M-349.3,500l1.1-36.7"/>
|
138
|
-
<path id="path3891_1_" class="st5" d="M-344.3,421.7l1.5-61.6"/>
|
139
|
-
<path id="path3893_1_" sodipodi:nodetypes="cc" class="st5" d="M-341.9,317.1l0.3-32"/>
|
140
|
-
</g>
|
141
|
-
</g>
|
142
|
-
<g id="New_Logo">
|
143
|
-
<g id="layer1_1_" inkscape:groupmode="layer" inkscape:label="Layer 1">
|
144
|
-
<path id="path2985" inkscape:connector-curvature="0" class="st6" d="M-450.2,275v0.4v232.7v0.2l0.2,0.1l184,54l0.4,0.1v-0.4
|
145
|
-
l0.1-246.9v-0.2l-0.2-0.1l-184-39.9L-450.2,275z M-449.6,275.8l183.5,39.8l-0.1,246.3L-449.6,508V275.8z"/>
|
146
|
-
<path id="path2993" inkscape:connector-curvature="0" class="st6" d="M-172.7,278.3l-0.4,0.2l-92.8,36.6l-0.2,0.1v0.2l0.1,246.9
|
147
|
-
v0.4l0.4-0.2l91.9-37.2l0.2-0.1v-0.2l0.8-246.3V278.3z M-173.3,279.2l-0.8,245.7l-91.3,37l-0.1-246.2L-173.3,279.2z"/>
|
148
|
-
<path id="path3003" inkscape:connector-curvature="0" class="st6" d="M-344.5,237.6L-344.5,237.6l-105.3,37.5l0.2,0.6l105.1-37.4
|
149
|
-
l171.4,40.7l0.1-0.6L-344.5,237.6L-344.5,237.6L-344.5,237.6z"/>
|
150
|
-
<path id="path3015" inkscape:connector-curvature="0" class="st6" d="M-344.5,320.1L-344.5,320.1l-105.5,28.3l-1.1,0.3l1.1,0.3
|
151
|
-
l183.6,49.2l0.1,0l0.1,0l92.8-31.6l0.9-0.3l-0.9-0.3L-344.5,320.1L-344.5,320.1L-344.5,320.1z M-344.5,320.7l170,45.6l-91.9,31.3
|
152
|
-
l-182.4-48.9L-344.5,320.7z"/>
|
153
|
-
<path id="path3017" inkscape:connector-curvature="0" class="st6" d="M-344.8,298.5v21.9h0.6v-21.9H-344.8z"/>
|
154
|
-
<path id="path3019" inkscape:connector-curvature="0" class="st6" d="M-450.2,276v231.7h0.6V276H-450.2z"/>
|
155
|
-
<path id="path3021" inkscape:connector-curvature="0" class="st6" d="M-344.5,397.5L-344.5,397.5l-105.3,27.6l-1,0.3l1,0.3
|
156
|
-
l183.4,52l0.1,0l0.1,0l92.3-33.1l0.9-0.3l-0.9-0.2L-344.5,397.5L-344.5,397.5z M-344.5,398.1l169.5,46.1l-91.3,32.8l-182.2-51.7
|
157
|
-
L-344.5,398.1z"/>
|
158
|
-
<path id="path3023" inkscape:connector-curvature="0" class="st6" d="M-344.5,477.1L-344.5,477.1l-105.3,30.8l0.2,0.6l105.1-30.8
|
159
|
-
l170.6,47.3l0.2-0.6L-344.5,477.1L-344.5,477.1z"/>
|
160
|
-
<path id="path3025" inkscape:connector-curvature="0" class="st6" d="M-344.8,377.1v20.7h0.6v-20.7H-344.8z"/>
|
161
|
-
<path id="path3027" inkscape:connector-curvature="0" class="st6" d="M-344.8,455.3v22.1h0.6v-22.1H-344.8z"/>
|
162
|
-
</g>
|
163
|
-
</g>
|
164
|
-
</svg>
|
data/lib/rack/core_ext/regexp.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Regexp has `match?` since Ruby 2.4
|
4
|
-
# so to support Ruby < 2.4 we need to define this method
|
5
|
-
|
6
|
-
module Rack
|
7
|
-
module RegexpExtensions
|
8
|
-
refine Regexp do
|
9
|
-
def match?(string, pos = 0)
|
10
|
-
!!match(string, pos)
|
11
|
-
end
|
12
|
-
end unless //.respond_to?(:match?)
|
13
|
-
end
|
14
|
-
end
|
data/lib/rack/handler/cgi.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Rack
|
4
|
-
module Handler
|
5
|
-
class CGI
|
6
|
-
def self.run(app, **options)
|
7
|
-
$stdin.binmode
|
8
|
-
serve app
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.serve(app)
|
12
|
-
env = ENV.to_hash
|
13
|
-
env.delete "HTTP_CONTENT_LENGTH"
|
14
|
-
|
15
|
-
env[SCRIPT_NAME] = "" if env[SCRIPT_NAME] == "/"
|
16
|
-
|
17
|
-
env.update(
|
18
|
-
RACK_VERSION => Rack::VERSION,
|
19
|
-
RACK_INPUT => Rack::RewindableInput.new($stdin),
|
20
|
-
RACK_ERRORS => $stderr,
|
21
|
-
RACK_MULTITHREAD => false,
|
22
|
-
RACK_MULTIPROCESS => true,
|
23
|
-
RACK_RUNONCE => true,
|
24
|
-
RACK_URL_SCHEME => ["yes", "on", "1"].include?(ENV[HTTPS]) ? "https" : "http"
|
25
|
-
)
|
26
|
-
|
27
|
-
env[QUERY_STRING] ||= ""
|
28
|
-
env[HTTP_VERSION] ||= env[SERVER_PROTOCOL]
|
29
|
-
env[REQUEST_PATH] ||= "/"
|
30
|
-
|
31
|
-
status, headers, body = app.call(env)
|
32
|
-
begin
|
33
|
-
send_headers status, headers
|
34
|
-
send_body body
|
35
|
-
ensure
|
36
|
-
body.close if body.respond_to? :close
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.send_headers(status, headers)
|
41
|
-
$stdout.print "Status: #{status}\r\n"
|
42
|
-
headers.each { |k, vs|
|
43
|
-
vs.split("\n").each { |v|
|
44
|
-
$stdout.print "#{k}: #{v}\r\n"
|
45
|
-
}
|
46
|
-
}
|
47
|
-
$stdout.print "\r\n"
|
48
|
-
$stdout.flush
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.send_body(body)
|
52
|
-
body.each { |part|
|
53
|
-
$stdout.print part
|
54
|
-
$stdout.flush
|
55
|
-
}
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
data/lib/rack/handler/fastcgi.rb
DELETED
@@ -1,100 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'fcgi'
|
4
|
-
require 'socket'
|
5
|
-
|
6
|
-
if defined? FCGI::Stream
|
7
|
-
class FCGI::Stream
|
8
|
-
alias _rack_read_without_buffer read
|
9
|
-
|
10
|
-
def read(n, buffer = nil)
|
11
|
-
buf = _rack_read_without_buffer n
|
12
|
-
buffer.replace(buf.to_s) if buffer
|
13
|
-
buf
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
module Rack
|
19
|
-
module Handler
|
20
|
-
class FastCGI
|
21
|
-
def self.run(app, **options)
|
22
|
-
if options[:File]
|
23
|
-
STDIN.reopen(UNIXServer.new(options[:File]))
|
24
|
-
elsif options[:Port]
|
25
|
-
STDIN.reopen(TCPServer.new(options[:Host], options[:Port]))
|
26
|
-
end
|
27
|
-
FCGI.each { |request|
|
28
|
-
serve request, app
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.valid_options
|
33
|
-
environment = ENV['RACK_ENV'] || 'development'
|
34
|
-
default_host = environment == 'development' ? 'localhost' : '0.0.0.0'
|
35
|
-
|
36
|
-
{
|
37
|
-
"Host=HOST" => "Hostname to listen on (default: #{default_host})",
|
38
|
-
"Port=PORT" => "Port to listen on (default: 8080)",
|
39
|
-
"File=PATH" => "Creates a Domain socket at PATH instead of a TCP socket. Ignores Host and Port if set.",
|
40
|
-
}
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.serve(request, app)
|
44
|
-
env = request.env
|
45
|
-
env.delete "HTTP_CONTENT_LENGTH"
|
46
|
-
|
47
|
-
env[SCRIPT_NAME] = "" if env[SCRIPT_NAME] == "/"
|
48
|
-
|
49
|
-
rack_input = RewindableInput.new(request.in)
|
50
|
-
|
51
|
-
env.update(
|
52
|
-
RACK_VERSION => Rack::VERSION,
|
53
|
-
RACK_INPUT => rack_input,
|
54
|
-
RACK_ERRORS => request.err,
|
55
|
-
RACK_MULTITHREAD => false,
|
56
|
-
RACK_MULTIPROCESS => true,
|
57
|
-
RACK_RUNONCE => false,
|
58
|
-
RACK_URL_SCHEME => ["yes", "on", "1"].include?(env[HTTPS]) ? "https" : "http"
|
59
|
-
)
|
60
|
-
|
61
|
-
env[QUERY_STRING] ||= ""
|
62
|
-
env[HTTP_VERSION] ||= env[SERVER_PROTOCOL]
|
63
|
-
env[REQUEST_PATH] ||= "/"
|
64
|
-
env.delete "CONTENT_TYPE" if env["CONTENT_TYPE"] == ""
|
65
|
-
env.delete "CONTENT_LENGTH" if env["CONTENT_LENGTH"] == ""
|
66
|
-
|
67
|
-
begin
|
68
|
-
status, headers, body = app.call(env)
|
69
|
-
begin
|
70
|
-
send_headers request.out, status, headers
|
71
|
-
send_body request.out, body
|
72
|
-
ensure
|
73
|
-
body.close if body.respond_to? :close
|
74
|
-
end
|
75
|
-
ensure
|
76
|
-
rack_input.close
|
77
|
-
request.finish
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def self.send_headers(out, status, headers)
|
82
|
-
out.print "Status: #{status}\r\n"
|
83
|
-
headers.each { |k, vs|
|
84
|
-
vs.split("\n").each { |v|
|
85
|
-
out.print "#{k}: #{v}\r\n"
|
86
|
-
}
|
87
|
-
}
|
88
|
-
out.print "\r\n"
|
89
|
-
out.flush
|
90
|
-
end
|
91
|
-
|
92
|
-
def self.send_body(out, body)
|
93
|
-
body.each { |part|
|
94
|
-
out.print part
|
95
|
-
out.flush
|
96
|
-
}
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
data/lib/rack/handler/lsws.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'lsapi'
|
4
|
-
|
5
|
-
module Rack
|
6
|
-
module Handler
|
7
|
-
class LSWS
|
8
|
-
def self.run(app, **options)
|
9
|
-
while LSAPI.accept != nil
|
10
|
-
serve app
|
11
|
-
end
|
12
|
-
end
|
13
|
-
def self.serve(app)
|
14
|
-
env = ENV.to_hash
|
15
|
-
env.delete "HTTP_CONTENT_LENGTH"
|
16
|
-
env[SCRIPT_NAME] = "" if env[SCRIPT_NAME] == "/"
|
17
|
-
|
18
|
-
rack_input = RewindableInput.new($stdin.read.to_s)
|
19
|
-
|
20
|
-
env.update(
|
21
|
-
RACK_VERSION => Rack::VERSION,
|
22
|
-
RACK_INPUT => rack_input,
|
23
|
-
RACK_ERRORS => $stderr,
|
24
|
-
RACK_MULTITHREAD => false,
|
25
|
-
RACK_MULTIPROCESS => true,
|
26
|
-
RACK_RUNONCE => false,
|
27
|
-
RACK_URL_SCHEME => ["yes", "on", "1"].include?(ENV[HTTPS]) ? "https" : "http"
|
28
|
-
)
|
29
|
-
|
30
|
-
env[QUERY_STRING] ||= ""
|
31
|
-
env[HTTP_VERSION] ||= env[SERVER_PROTOCOL]
|
32
|
-
env[REQUEST_PATH] ||= "/"
|
33
|
-
status, headers, body = app.call(env)
|
34
|
-
begin
|
35
|
-
send_headers status, headers
|
36
|
-
send_body body
|
37
|
-
ensure
|
38
|
-
body.close if body.respond_to? :close
|
39
|
-
end
|
40
|
-
ensure
|
41
|
-
rack_input.close
|
42
|
-
end
|
43
|
-
def self.send_headers(status, headers)
|
44
|
-
print "Status: #{status}\r\n"
|
45
|
-
headers.each { |k, vs|
|
46
|
-
vs.split("\n").each { |v|
|
47
|
-
print "#{k}: #{v}\r\n"
|
48
|
-
}
|
49
|
-
}
|
50
|
-
print "\r\n"
|
51
|
-
STDOUT.flush
|
52
|
-
end
|
53
|
-
def self.send_body(body)
|
54
|
-
body.each { |part|
|
55
|
-
print part
|
56
|
-
STDOUT.flush
|
57
|
-
}
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
data/lib/rack/handler/scgi.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'scgi'
|
4
|
-
require 'stringio'
|
5
|
-
|
6
|
-
module Rack
|
7
|
-
module Handler
|
8
|
-
class SCGI < ::SCGI::Processor
|
9
|
-
attr_accessor :app
|
10
|
-
|
11
|
-
def self.run(app, **options)
|
12
|
-
options[:Socket] = UNIXServer.new(options[:File]) if options[:File]
|
13
|
-
new(options.merge(app: app,
|
14
|
-
host: options[:Host],
|
15
|
-
port: options[:Port],
|
16
|
-
socket: options[:Socket])).listen
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.valid_options
|
20
|
-
environment = ENV['RACK_ENV'] || 'development'
|
21
|
-
default_host = environment == 'development' ? 'localhost' : '0.0.0.0'
|
22
|
-
|
23
|
-
{
|
24
|
-
"Host=HOST" => "Hostname to listen on (default: #{default_host})",
|
25
|
-
"Port=PORT" => "Port to listen on (default: 8080)",
|
26
|
-
}
|
27
|
-
end
|
28
|
-
|
29
|
-
def initialize(settings = {})
|
30
|
-
@app = settings[:app]
|
31
|
-
super(settings)
|
32
|
-
end
|
33
|
-
|
34
|
-
def process_request(request, input_body, socket)
|
35
|
-
env = Hash[request]
|
36
|
-
env.delete "HTTP_CONTENT_TYPE"
|
37
|
-
env.delete "HTTP_CONTENT_LENGTH"
|
38
|
-
env[REQUEST_PATH], env[QUERY_STRING] = env["REQUEST_URI"].split('?', 2)
|
39
|
-
env[HTTP_VERSION] ||= env[SERVER_PROTOCOL]
|
40
|
-
env[PATH_INFO] = env[REQUEST_PATH]
|
41
|
-
env[QUERY_STRING] ||= ""
|
42
|
-
env[SCRIPT_NAME] = ""
|
43
|
-
|
44
|
-
rack_input = StringIO.new(input_body)
|
45
|
-
rack_input.set_encoding(Encoding::BINARY)
|
46
|
-
|
47
|
-
env.update(
|
48
|
-
RACK_VERSION => Rack::VERSION,
|
49
|
-
RACK_INPUT => rack_input,
|
50
|
-
RACK_ERRORS => $stderr,
|
51
|
-
RACK_MULTITHREAD => true,
|
52
|
-
RACK_MULTIPROCESS => true,
|
53
|
-
RACK_RUNONCE => false,
|
54
|
-
RACK_URL_SCHEME => ["yes", "on", "1"].include?(env[HTTPS]) ? "https" : "http"
|
55
|
-
)
|
56
|
-
|
57
|
-
status, headers, body = app.call(env)
|
58
|
-
begin
|
59
|
-
socket.write("Status: #{status}\r\n")
|
60
|
-
headers.each do |k, vs|
|
61
|
-
vs.split("\n").each { |v| socket.write("#{k}: #{v}\r\n")}
|
62
|
-
end
|
63
|
-
socket.write("\r\n")
|
64
|
-
body.each {|s| socket.write(s)}
|
65
|
-
ensure
|
66
|
-
body.close if body.respond_to? :close
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|