diff options
author | Ismaël Bouya <ismael.bouya@normalesup.org> | 2023-10-04 01:35:06 +0200 |
---|---|---|
committer | Ismaël Bouya <ismael.bouya@normalesup.org> | 2023-10-04 02:11:48 +0200 |
commit | 1a64deeb894dc95e2645a75771732c6cc53a79ad (patch) | |
tree | 1b9df4838f894577a09b9b260151756272efeb53 /flakes/private | |
parent | fa25ffd4583cc362075cd5e1b4130f33306103f0 (diff) | |
download | Nix-1a64deeb894dc95e2645a75771732c6cc53a79ad.tar.gz Nix-1a64deeb894dc95e2645a75771732c6cc53a79ad.tar.zst Nix-1a64deeb894dc95e2645a75771732c6cc53a79ad.zip |
Squash changes containing private information
There were a lot of changes since the previous commit, but a lot of them
contained personnal information about users. All thos changes got
stashed into a single commit (history is kept in a different place) and
private information was moved in a separate private repository
Diffstat (limited to 'flakes/private')
68 files changed, 16160 insertions, 374 deletions
diff --git a/flakes/private/buildbot/buildslist/bower.nix b/flakes/private/buildbot/buildslist/bower.nix new file mode 100644 index 0000000..8b26e0a --- /dev/null +++ b/flakes/private/buildbot/buildslist/bower.nix | |||
@@ -0,0 +1,9 @@ | |||
1 | # Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix) | ||
2 | { fetchbower, buildEnv }: | ||
3 | buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [ | ||
4 | (fetchbower "jquery" "2.1.1" "2.1.1" "1qir36vi0bppjr9ckm6303vk1f1dkvq5wandpihb7dxl76s832bd") | ||
5 | (fetchbower "angular" "1.5.11" "~1.5.3" "1sw31v3dhmxwgrmncw2f9yl07i9px62ssbj0739zsgi59cq2khl7") | ||
6 | (fetchbower "lodash" "2.4.2" "~2.4.1" "0bhqarlvhlrxfvcgnxgsrsjgi6az4c117ffxyfi7gjwr9cvrzz4q") | ||
7 | (fetchbower "angular-mocks" "1.5.11" "~1.5.3" "0yv0396fw51i6d9lwiwf241rmc28rnxgg2aa9vsc7dnm4qjkn6gx") | ||
8 | (fetchbower "buildbot-data" "2.1.0" "~2.1.0" "0hkmm1byy7d712898lhkxf7i0wshmd1f8cr98iz67679nm6abimk") | ||
9 | ]; } | ||
diff --git a/flakes/private/buildbot/buildslist/default.nix b/flakes/private/buildbot/buildslist/default.nix new file mode 100644 index 0000000..7f72503 --- /dev/null +++ b/flakes/private/buildbot/buildslist/default.nix | |||
@@ -0,0 +1,64 @@ | |||
1 | { stdenv, runCommand, writeScriptBin, buildBowerComponents, pythonPackages, fetchurl, jq, yarn, nodejs-10_x, yarn2nix-moretea, buildslist_src }: | ||
2 | let | ||
3 | yarn2nix-moretea' = yarn2nix-moretea.override({ | ||
4 | yarn = yarn.override({ nodejs = nodejs-10_x; }); | ||
5 | nodejs = nodejs-10_x; | ||
6 | }); | ||
7 | packagejson = runCommand "package.json" { buildInputs = [ jq ]; } '' | ||
8 | cat ${buildslist_src}/package.json | jq -r '.version = "${pythonPackages.buildbot-pkg.version}"|.license= "MIT"' > $out | ||
9 | ''; | ||
10 | nodeHeaders = fetchurl { | ||
11 | url = "https://nodejs.org/download/release/v${nodejs-10_x.version}/node-v${nodejs-10_x.version}-headers.tar.gz"; | ||
12 | sha256 = "sha256-LEk6BOW/vwdUXGAialDOoyFIkZ81k6ADy6MhMfRiE5Y="; | ||
13 | }; | ||
14 | buildslist_yarn = yarn2nix-moretea'.mkYarnModules rec { | ||
15 | name = "buildslist-yarn-modules"; | ||
16 | pname = name; | ||
17 | inherit (pythonPackages.buildbot-pkg) version; | ||
18 | packageJSON = packagejson; | ||
19 | yarnLock = "${buildslist_src}/yarn.lock"; | ||
20 | yarnNix = ./yarn-packages.nix; | ||
21 | pkgConfig = { | ||
22 | node-sass = { | ||
23 | buildInputs = with yarn2nix-moretea'.pkgs; [ libsass python2 ]; | ||
24 | postInstall = | ||
25 | '' | ||
26 | node scripts/build.js --tarball=${nodeHeaders} | ||
27 | ''; | ||
28 | }; | ||
29 | }; | ||
30 | }; | ||
31 | buildslist_bower = buildBowerComponents { | ||
32 | name = "buildslist"; | ||
33 | generated = ./bower.nix; | ||
34 | src = "${buildslist_src}/guanlecoja/"; | ||
35 | }; | ||
36 | # the buildbot-pkg calls yarn and screws up everything... | ||
37 | fakeYarn = writeScriptBin "yarn" '' | ||
38 | #!${stdenv.shell} | ||
39 | if [ "$1" = "--version" ]; then | ||
40 | echo "1.17" | ||
41 | fi | ||
42 | ''; | ||
43 | in | ||
44 | pythonPackages.buildPythonPackage rec { | ||
45 | pname = "buildbot-buildslist"; | ||
46 | inherit (pythonPackages.buildbot-pkg) version; | ||
47 | |||
48 | preConfigure = '' | ||
49 | export HOME=$PWD | ||
50 | ln -s ${buildslist_yarn}/node_modules . | ||
51 | cp -a ${buildslist_bower}/bower_components ./libs | ||
52 | PATH=${buildslist_yarn}/node_modules/.bin:$PATH | ||
53 | chmod -R u+w libs | ||
54 | ''; | ||
55 | propagatedBuildInputs = with pythonPackages; [ | ||
56 | (klein.overridePythonAttrs(old: { checkPhase = ""; })) | ||
57 | buildbot-pkg | ||
58 | ]; | ||
59 | nativeBuildInputs = [ fakeYarn nodejs-10_x ]; | ||
60 | buildInputs = [ buildslist_yarn buildslist_bower ]; | ||
61 | |||
62 | doCheck = false; | ||
63 | src = buildslist_src; | ||
64 | } | ||
diff --git a/flakes/private/buildbot/buildslist/yarn-packages.nix b/flakes/private/buildbot/buildslist/yarn-packages.nix new file mode 100644 index 0000000..2ade970 --- /dev/null +++ b/flakes/private/buildbot/buildslist/yarn-packages.nix | |||
@@ -0,0 +1,9293 @@ | |||
1 | {fetchurl, linkFarm}: rec { | ||
2 | offline_cache = linkFarm "offline" packages; | ||
3 | packages = [ | ||
4 | |||
5 | { | ||
6 | name = "_types_babel_types___babel_types_7.0.7.tgz"; | ||
7 | path = fetchurl { | ||
8 | name = "_types_babel_types___babel_types_7.0.7.tgz"; | ||
9 | url = "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz"; | ||
10 | sha1 = "667eb1640e8039436028055737d2b9986ee336e3"; | ||
11 | }; | ||
12 | } | ||
13 | |||
14 | { | ||
15 | name = "_types_babylon___babylon_6.16.5.tgz"; | ||
16 | path = fetchurl { | ||
17 | name = "_types_babylon___babylon_6.16.5.tgz"; | ||
18 | url = "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz"; | ||
19 | sha1 = "1c5641db69eb8cdf378edd25b4be7754beeb48b4"; | ||
20 | }; | ||
21 | } | ||
22 | |||
23 | { | ||
24 | name = "_types_color_name___color_name_1.1.1.tgz"; | ||
25 | path = fetchurl { | ||
26 | name = "_types_color_name___color_name_1.1.1.tgz"; | ||
27 | url = "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz"; | ||
28 | sha1 = "1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"; | ||
29 | }; | ||
30 | } | ||
31 | |||
32 | { | ||
33 | name = "Base64___Base64_0.2.1.tgz"; | ||
34 | path = fetchurl { | ||
35 | name = "Base64___Base64_0.2.1.tgz"; | ||
36 | url = "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz"; | ||
37 | sha1 = "ba3a4230708e186705065e66babdd4c35cf60028"; | ||
38 | }; | ||
39 | } | ||
40 | |||
41 | { | ||
42 | name = "JSONStream___JSONStream_0.6.4.tgz"; | ||
43 | path = fetchurl { | ||
44 | name = "JSONStream___JSONStream_0.6.4.tgz"; | ||
45 | url = "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.6.4.tgz"; | ||
46 | sha1 = "4b2c8063f8f512787b2375f7ee9db69208fa2dcb"; | ||
47 | }; | ||
48 | } | ||
49 | |||
50 | { | ||
51 | name = "JSONStream___JSONStream_0.7.4.tgz"; | ||
52 | path = fetchurl { | ||
53 | name = "JSONStream___JSONStream_0.7.4.tgz"; | ||
54 | url = "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.7.4.tgz"; | ||
55 | sha1 = "734290e41511eea7c2cfe151fbf9a563a97b9786"; | ||
56 | }; | ||
57 | } | ||
58 | |||
59 | { | ||
60 | name = "abbrev___abbrev_1.1.1.tgz"; | ||
61 | path = fetchurl { | ||
62 | name = "abbrev___abbrev_1.1.1.tgz"; | ||
63 | url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz"; | ||
64 | sha1 = "f8f2c887ad10bf67f634f005b6987fed3179aac8"; | ||
65 | }; | ||
66 | } | ||
67 | |||
68 | { | ||
69 | name = "abbrev___abbrev_1.0.9.tgz"; | ||
70 | path = fetchurl { | ||
71 | name = "abbrev___abbrev_1.0.9.tgz"; | ||
72 | url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz"; | ||
73 | sha1 = "91b4792588a7738c25f35dd6f63752a2f8776135"; | ||
74 | }; | ||
75 | } | ||
76 | |||
77 | { | ||
78 | name = "accepts___accepts_1.3.3.tgz"; | ||
79 | path = fetchurl { | ||
80 | name = "accepts___accepts_1.3.3.tgz"; | ||
81 | url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz"; | ||
82 | sha1 = "c3ca7434938648c3e0d9c1e328dd68b622c284ca"; | ||
83 | }; | ||
84 | } | ||
85 | |||
86 | { | ||
87 | name = "acorn_globals___acorn_globals_3.1.0.tgz"; | ||
88 | path = fetchurl { | ||
89 | name = "acorn_globals___acorn_globals_3.1.0.tgz"; | ||
90 | url = "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz"; | ||
91 | sha1 = "fd8270f71fbb4996b004fa880ee5d46573a731bf"; | ||
92 | }; | ||
93 | } | ||
94 | |||
95 | { | ||
96 | name = "acorn___acorn_2.7.0.tgz"; | ||
97 | path = fetchurl { | ||
98 | name = "acorn___acorn_2.7.0.tgz"; | ||
99 | url = "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz"; | ||
100 | sha1 = "ab6e7d9d886aaca8b085bc3312b79a198433f0e7"; | ||
101 | }; | ||
102 | } | ||
103 | |||
104 | { | ||
105 | name = "acorn___acorn_3.3.0.tgz"; | ||
106 | path = fetchurl { | ||
107 | name = "acorn___acorn_3.3.0.tgz"; | ||
108 | url = "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz"; | ||
109 | sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a"; | ||
110 | }; | ||
111 | } | ||
112 | |||
113 | { | ||
114 | name = "acorn___acorn_4.0.13.tgz"; | ||
115 | path = fetchurl { | ||
116 | name = "acorn___acorn_4.0.13.tgz"; | ||
117 | url = "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz"; | ||
118 | sha1 = "105495ae5361d697bd195c825192e1ad7f253787"; | ||
119 | }; | ||
120 | } | ||
121 | |||
122 | { | ||
123 | name = "acorn___acorn_2.6.4.tgz"; | ||
124 | path = fetchurl { | ||
125 | name = "acorn___acorn_2.6.4.tgz"; | ||
126 | url = "https://registry.yarnpkg.com/acorn/-/acorn-2.6.4.tgz"; | ||
127 | sha1 = "eb1f45b4a43fa31d03701a5ec46f3b52673e90ee"; | ||
128 | }; | ||
129 | } | ||
130 | |||
131 | { | ||
132 | name = "after___after_0.8.2.tgz"; | ||
133 | path = fetchurl { | ||
134 | name = "after___after_0.8.2.tgz"; | ||
135 | url = "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz"; | ||
136 | sha1 = "fedb394f9f0e02aa9768e702bda23b505fae7e1f"; | ||
137 | }; | ||
138 | } | ||
139 | |||
140 | { | ||
141 | name = "ajv___ajv_6.12.0.tgz"; | ||
142 | path = fetchurl { | ||
143 | name = "ajv___ajv_6.12.0.tgz"; | ||
144 | url = "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz"; | ||
145 | sha1 = "06d60b96d87b8454a5adaba86e7854da629db4b7"; | ||
146 | }; | ||
147 | } | ||
148 | |||
149 | { | ||
150 | name = "align_text___align_text_0.1.4.tgz"; | ||
151 | path = fetchurl { | ||
152 | name = "align_text___align_text_0.1.4.tgz"; | ||
153 | url = "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz"; | ||
154 | sha1 = "0cd90a561093f35d0a99256c22b7069433fad117"; | ||
155 | }; | ||
156 | } | ||
157 | |||
158 | { | ||
159 | name = "alter___alter_0.2.0.tgz"; | ||
160 | path = fetchurl { | ||
161 | name = "alter___alter_0.2.0.tgz"; | ||
162 | url = "https://registry.yarnpkg.com/alter/-/alter-0.2.0.tgz"; | ||
163 | sha1 = "c7588808617572034aae62480af26b1d4d1cb3cd"; | ||
164 | }; | ||
165 | } | ||
166 | |||
167 | { | ||
168 | name = "amdefine___amdefine_1.0.1.tgz"; | ||
169 | path = fetchurl { | ||
170 | name = "amdefine___amdefine_1.0.1.tgz"; | ||
171 | url = "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz"; | ||
172 | sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5"; | ||
173 | }; | ||
174 | } | ||
175 | |||
176 | { | ||
177 | name = "ansi_gray___ansi_gray_0.1.1.tgz"; | ||
178 | path = fetchurl { | ||
179 | name = "ansi_gray___ansi_gray_0.1.1.tgz"; | ||
180 | url = "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz"; | ||
181 | sha1 = "2962cf54ec9792c48510a3deb524436861ef7251"; | ||
182 | }; | ||
183 | } | ||
184 | |||
185 | { | ||
186 | name = "ansi_regex___ansi_regex_0.2.1.tgz"; | ||
187 | path = fetchurl { | ||
188 | name = "ansi_regex___ansi_regex_0.2.1.tgz"; | ||
189 | url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz"; | ||
190 | sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9"; | ||
191 | }; | ||
192 | } | ||
193 | |||
194 | { | ||
195 | name = "ansi_regex___ansi_regex_1.1.1.tgz"; | ||
196 | path = fetchurl { | ||
197 | name = "ansi_regex___ansi_regex_1.1.1.tgz"; | ||
198 | url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-1.1.1.tgz"; | ||
199 | sha1 = "41c847194646375e6a1a5d10c3ca054ef9fc980d"; | ||
200 | }; | ||
201 | } | ||
202 | |||
203 | { | ||
204 | name = "ansi_regex___ansi_regex_2.1.1.tgz"; | ||
205 | path = fetchurl { | ||
206 | name = "ansi_regex___ansi_regex_2.1.1.tgz"; | ||
207 | url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz"; | ||
208 | sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df"; | ||
209 | }; | ||
210 | } | ||
211 | |||
212 | { | ||
213 | name = "ansi_regex___ansi_regex_3.0.0.tgz"; | ||
214 | path = fetchurl { | ||
215 | name = "ansi_regex___ansi_regex_3.0.0.tgz"; | ||
216 | url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz"; | ||
217 | sha1 = "ed0317c322064f79466c02966bddb605ab37d998"; | ||
218 | }; | ||
219 | } | ||
220 | |||
221 | { | ||
222 | name = "ansi_styles___ansi_styles_1.1.0.tgz"; | ||
223 | path = fetchurl { | ||
224 | name = "ansi_styles___ansi_styles_1.1.0.tgz"; | ||
225 | url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz"; | ||
226 | sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de"; | ||
227 | }; | ||
228 | } | ||
229 | |||
230 | { | ||
231 | name = "ansi_styles___ansi_styles_2.2.1.tgz"; | ||
232 | path = fetchurl { | ||
233 | name = "ansi_styles___ansi_styles_2.2.1.tgz"; | ||
234 | url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz"; | ||
235 | sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe"; | ||
236 | }; | ||
237 | } | ||
238 | |||
239 | { | ||
240 | name = "ansi_styles___ansi_styles_4.2.1.tgz"; | ||
241 | path = fetchurl { | ||
242 | name = "ansi_styles___ansi_styles_4.2.1.tgz"; | ||
243 | url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz"; | ||
244 | sha1 = "90ae75c424d008d2624c5bf29ead3177ebfcf359"; | ||
245 | }; | ||
246 | } | ||
247 | |||
248 | { | ||
249 | name = "ansi_styles___ansi_styles_1.0.0.tgz"; | ||
250 | path = fetchurl { | ||
251 | name = "ansi_styles___ansi_styles_1.0.0.tgz"; | ||
252 | url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz"; | ||
253 | sha1 = "cb102df1c56f5123eab8b67cd7b98027a0279178"; | ||
254 | }; | ||
255 | } | ||
256 | |||
257 | { | ||
258 | name = "ansi_wrap___ansi_wrap_0.1.0.tgz"; | ||
259 | path = fetchurl { | ||
260 | name = "ansi_wrap___ansi_wrap_0.1.0.tgz"; | ||
261 | url = "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz"; | ||
262 | sha1 = "a82250ddb0015e9a27ca82e82ea603bbfa45efaf"; | ||
263 | }; | ||
264 | } | ||
265 | |||
266 | { | ||
267 | name = "ansicolors___ansicolors_0.2.1.tgz"; | ||
268 | path = fetchurl { | ||
269 | name = "ansicolors___ansicolors_0.2.1.tgz"; | ||
270 | url = "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz"; | ||
271 | sha1 = "be089599097b74a5c9c4a84a0cdbcdb62bd87aef"; | ||
272 | }; | ||
273 | } | ||
274 | |||
275 | { | ||
276 | name = "anymatch___anymatch_1.3.2.tgz"; | ||
277 | path = fetchurl { | ||
278 | name = "anymatch___anymatch_1.3.2.tgz"; | ||
279 | url = "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz"; | ||
280 | sha1 = "553dcb8f91e3c889845dfdba34c77721b90b9d7a"; | ||
281 | }; | ||
282 | } | ||
283 | |||
284 | { | ||
285 | name = "aproba___aproba_1.2.0.tgz"; | ||
286 | path = fetchurl { | ||
287 | name = "aproba___aproba_1.2.0.tgz"; | ||
288 | url = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz"; | ||
289 | sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a"; | ||
290 | }; | ||
291 | } | ||
292 | |||
293 | { | ||
294 | name = "archy___archy_1.0.0.tgz"; | ||
295 | path = fetchurl { | ||
296 | name = "archy___archy_1.0.0.tgz"; | ||
297 | url = "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz"; | ||
298 | sha1 = "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"; | ||
299 | }; | ||
300 | } | ||
301 | |||
302 | { | ||
303 | name = "archy___archy_0.0.2.tgz"; | ||
304 | path = fetchurl { | ||
305 | name = "archy___archy_0.0.2.tgz"; | ||
306 | url = "https://registry.yarnpkg.com/archy/-/archy-0.0.2.tgz"; | ||
307 | sha1 = "910f43bf66141fc335564597abc189df44b3d35e"; | ||
308 | }; | ||
309 | } | ||
310 | |||
311 | { | ||
312 | name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz"; | ||
313 | path = fetchurl { | ||
314 | name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz"; | ||
315 | url = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz"; | ||
316 | sha1 = "4b35c2944f062a8bfcda66410760350fe9ddfc21"; | ||
317 | }; | ||
318 | } | ||
319 | |||
320 | { | ||
321 | name = "argparse___argparse_1.0.10.tgz"; | ||
322 | path = fetchurl { | ||
323 | name = "argparse___argparse_1.0.10.tgz"; | ||
324 | url = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz"; | ||
325 | sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911"; | ||
326 | }; | ||
327 | } | ||
328 | |||
329 | { | ||
330 | name = "argparse___argparse_0.1.16.tgz"; | ||
331 | path = fetchurl { | ||
332 | name = "argparse___argparse_0.1.16.tgz"; | ||
333 | url = "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz"; | ||
334 | sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c"; | ||
335 | }; | ||
336 | } | ||
337 | |||
338 | { | ||
339 | name = "arr_diff___arr_diff_2.0.0.tgz"; | ||
340 | path = fetchurl { | ||
341 | name = "arr_diff___arr_diff_2.0.0.tgz"; | ||
342 | url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz"; | ||
343 | sha1 = "8f3b827f955a8bd669697e4a4256ac3ceae356cf"; | ||
344 | }; | ||
345 | } | ||
346 | |||
347 | { | ||
348 | name = "arr_diff___arr_diff_4.0.0.tgz"; | ||
349 | path = fetchurl { | ||
350 | name = "arr_diff___arr_diff_4.0.0.tgz"; | ||
351 | url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz"; | ||
352 | sha1 = "d6461074febfec71e7e15235761a329a5dc7c520"; | ||
353 | }; | ||
354 | } | ||
355 | |||
356 | { | ||
357 | name = "arr_flatten___arr_flatten_1.1.0.tgz"; | ||
358 | path = fetchurl { | ||
359 | name = "arr_flatten___arr_flatten_1.1.0.tgz"; | ||
360 | url = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz"; | ||
361 | sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1"; | ||
362 | }; | ||
363 | } | ||
364 | |||
365 | { | ||
366 | name = "arr_union___arr_union_3.1.0.tgz"; | ||
367 | path = fetchurl { | ||
368 | name = "arr_union___arr_union_3.1.0.tgz"; | ||
369 | url = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz"; | ||
370 | sha1 = "e39b09aea9def866a8f206e288af63919bae39c4"; | ||
371 | }; | ||
372 | } | ||
373 | |||
374 | { | ||
375 | name = "array_differ___array_differ_1.0.0.tgz"; | ||
376 | path = fetchurl { | ||
377 | name = "array_differ___array_differ_1.0.0.tgz"; | ||
378 | url = "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz"; | ||
379 | sha1 = "eff52e3758249d33be402b8bb8e564bb2b5d4031"; | ||
380 | }; | ||
381 | } | ||
382 | |||
383 | { | ||
384 | name = "array_each___array_each_1.0.1.tgz"; | ||
385 | path = fetchurl { | ||
386 | name = "array_each___array_each_1.0.1.tgz"; | ||
387 | url = "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz"; | ||
388 | sha1 = "a794af0c05ab1752846ee753a1f211a05ba0c44f"; | ||
389 | }; | ||
390 | } | ||
391 | |||
392 | { | ||
393 | name = "array_filter___array_filter_0.0.1.tgz"; | ||
394 | path = fetchurl { | ||
395 | name = "array_filter___array_filter_0.0.1.tgz"; | ||
396 | url = "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz"; | ||
397 | sha1 = "7da8cf2e26628ed732803581fd21f67cacd2eeec"; | ||
398 | }; | ||
399 | } | ||
400 | |||
401 | { | ||
402 | name = "array_find_index___array_find_index_1.0.2.tgz"; | ||
403 | path = fetchurl { | ||
404 | name = "array_find_index___array_find_index_1.0.2.tgz"; | ||
405 | url = "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz"; | ||
406 | sha1 = "df010aa1287e164bbda6f9723b0a96a1ec4187a1"; | ||
407 | }; | ||
408 | } | ||
409 | |||
410 | { | ||
411 | name = "array_map___array_map_0.0.0.tgz"; | ||
412 | path = fetchurl { | ||
413 | name = "array_map___array_map_0.0.0.tgz"; | ||
414 | url = "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz"; | ||
415 | sha1 = "88a2bab73d1cf7bcd5c1b118a003f66f665fa662"; | ||
416 | }; | ||
417 | } | ||
418 | |||
419 | { | ||
420 | name = "array_reduce___array_reduce_0.0.0.tgz"; | ||
421 | path = fetchurl { | ||
422 | name = "array_reduce___array_reduce_0.0.0.tgz"; | ||
423 | url = "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz"; | ||
424 | sha1 = "173899d3ffd1c7d9383e4479525dbe278cab5f2b"; | ||
425 | }; | ||
426 | } | ||
427 | |||
428 | { | ||
429 | name = "array_slice___array_slice_0.2.3.tgz"; | ||
430 | path = fetchurl { | ||
431 | name = "array_slice___array_slice_0.2.3.tgz"; | ||
432 | url = "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz"; | ||
433 | sha1 = "dd3cfb80ed7973a75117cdac69b0b99ec86186f5"; | ||
434 | }; | ||
435 | } | ||
436 | |||
437 | { | ||
438 | name = "array_slice___array_slice_1.1.0.tgz"; | ||
439 | path = fetchurl { | ||
440 | name = "array_slice___array_slice_1.1.0.tgz"; | ||
441 | url = "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz"; | ||
442 | sha1 = "e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4"; | ||
443 | }; | ||
444 | } | ||
445 | |||
446 | { | ||
447 | name = "array_uniq___array_uniq_1.0.3.tgz"; | ||
448 | path = fetchurl { | ||
449 | name = "array_uniq___array_uniq_1.0.3.tgz"; | ||
450 | url = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz"; | ||
451 | sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6"; | ||
452 | }; | ||
453 | } | ||
454 | |||
455 | { | ||
456 | name = "array_unique___array_unique_0.2.1.tgz"; | ||
457 | path = fetchurl { | ||
458 | name = "array_unique___array_unique_0.2.1.tgz"; | ||
459 | url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz"; | ||
460 | sha1 = "a1d97ccafcbc2625cc70fadceb36a50c58b01a53"; | ||
461 | }; | ||
462 | } | ||
463 | |||
464 | { | ||
465 | name = "array_unique___array_unique_0.3.2.tgz"; | ||
466 | path = fetchurl { | ||
467 | name = "array_unique___array_unique_0.3.2.tgz"; | ||
468 | url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz"; | ||
469 | sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"; | ||
470 | }; | ||
471 | } | ||
472 | |||
473 | { | ||
474 | name = "arraybuffer.slice___arraybuffer.slice_0.0.6.tgz"; | ||
475 | path = fetchurl { | ||
476 | name = "arraybuffer.slice___arraybuffer.slice_0.0.6.tgz"; | ||
477 | url = "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz"; | ||
478 | sha1 = "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca"; | ||
479 | }; | ||
480 | } | ||
481 | |||
482 | { | ||
483 | name = "asap___asap_2.0.6.tgz"; | ||
484 | path = fetchurl { | ||
485 | name = "asap___asap_2.0.6.tgz"; | ||
486 | url = "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz"; | ||
487 | sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46"; | ||
488 | }; | ||
489 | } | ||
490 | |||
491 | { | ||
492 | name = "asn1___asn1_0.1.11.tgz"; | ||
493 | path = fetchurl { | ||
494 | name = "asn1___asn1_0.1.11.tgz"; | ||
495 | url = "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz"; | ||
496 | sha1 = "559be18376d08a4ec4dbe80877d27818639b2df7"; | ||
497 | }; | ||
498 | } | ||
499 | |||
500 | { | ||
501 | name = "asn1___asn1_0.2.4.tgz"; | ||
502 | path = fetchurl { | ||
503 | name = "asn1___asn1_0.2.4.tgz"; | ||
504 | url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz"; | ||
505 | sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136"; | ||
506 | }; | ||
507 | } | ||
508 | |||
509 | { | ||
510 | name = "assert_plus___assert_plus_1.0.0.tgz"; | ||
511 | path = fetchurl { | ||
512 | name = "assert_plus___assert_plus_1.0.0.tgz"; | ||
513 | url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz"; | ||
514 | sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"; | ||
515 | }; | ||
516 | } | ||
517 | |||
518 | { | ||
519 | name = "assert_plus___assert_plus_0.1.5.tgz"; | ||
520 | path = fetchurl { | ||
521 | name = "assert_plus___assert_plus_0.1.5.tgz"; | ||
522 | url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz"; | ||
523 | sha1 = "ee74009413002d84cec7219c6ac811812e723160"; | ||
524 | }; | ||
525 | } | ||
526 | |||
527 | { | ||
528 | name = "assert___assert_1.1.2.tgz"; | ||
529 | path = fetchurl { | ||
530 | name = "assert___assert_1.1.2.tgz"; | ||
531 | url = "https://registry.yarnpkg.com/assert/-/assert-1.1.2.tgz"; | ||
532 | sha1 = "adaa04c46bb58c6dd1f294da3eb26e6228eb6e44"; | ||
533 | }; | ||
534 | } | ||
535 | |||
536 | { | ||
537 | name = "assign_symbols___assign_symbols_1.0.0.tgz"; | ||
538 | path = fetchurl { | ||
539 | name = "assign_symbols___assign_symbols_1.0.0.tgz"; | ||
540 | url = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz"; | ||
541 | sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"; | ||
542 | }; | ||
543 | } | ||
544 | |||
545 | { | ||
546 | name = "astw___astw_2.2.0.tgz"; | ||
547 | path = fetchurl { | ||
548 | name = "astw___astw_2.2.0.tgz"; | ||
549 | url = "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz"; | ||
550 | sha1 = "7bd41784d32493987aeb239b6b4e1c57a873b917"; | ||
551 | }; | ||
552 | } | ||
553 | |||
554 | { | ||
555 | name = "async_each___async_each_1.0.3.tgz"; | ||
556 | path = fetchurl { | ||
557 | name = "async_each___async_each_1.0.3.tgz"; | ||
558 | url = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz"; | ||
559 | sha1 = "b727dbf87d7651602f06f4d4ac387f47d91b0cbf"; | ||
560 | }; | ||
561 | } | ||
562 | |||
563 | { | ||
564 | name = "async_foreach___async_foreach_0.1.3.tgz"; | ||
565 | path = fetchurl { | ||
566 | name = "async_foreach___async_foreach_0.1.3.tgz"; | ||
567 | url = "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz"; | ||
568 | sha1 = "36121f845c0578172de419a97dbeb1d16ec34542"; | ||
569 | }; | ||
570 | } | ||
571 | |||
572 | { | ||
573 | name = "async___async_1.5.2.tgz"; | ||
574 | path = fetchurl { | ||
575 | name = "async___async_1.5.2.tgz"; | ||
576 | url = "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz"; | ||
577 | sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a"; | ||
578 | }; | ||
579 | } | ||
580 | |||
581 | { | ||
582 | name = "async___async_0.2.10.tgz"; | ||
583 | path = fetchurl { | ||
584 | name = "async___async_0.2.10.tgz"; | ||
585 | url = "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz"; | ||
586 | sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1"; | ||
587 | }; | ||
588 | } | ||
589 | |||
590 | { | ||
591 | name = "async___async_0.8.0.tgz"; | ||
592 | path = fetchurl { | ||
593 | name = "async___async_0.8.0.tgz"; | ||
594 | url = "https://registry.yarnpkg.com/async/-/async-0.8.0.tgz"; | ||
595 | sha1 = "ee65ec77298c2ff1456bc4418a052d0f06435112"; | ||
596 | }; | ||
597 | } | ||
598 | |||
599 | { | ||
600 | name = "async___async_0.9.2.tgz"; | ||
601 | path = fetchurl { | ||
602 | name = "async___async_0.9.2.tgz"; | ||
603 | url = "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz"; | ||
604 | sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d"; | ||
605 | }; | ||
606 | } | ||
607 | |||
608 | { | ||
609 | name = "asynckit___asynckit_0.4.0.tgz"; | ||
610 | path = fetchurl { | ||
611 | name = "asynckit___asynckit_0.4.0.tgz"; | ||
612 | url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz"; | ||
613 | sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"; | ||
614 | }; | ||
615 | } | ||
616 | |||
617 | { | ||
618 | name = "atob___atob_2.1.2.tgz"; | ||
619 | path = fetchurl { | ||
620 | name = "atob___atob_2.1.2.tgz"; | ||
621 | url = "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz"; | ||
622 | sha1 = "6d9517eb9e030d2436666651e86bd9f6f13533c9"; | ||
623 | }; | ||
624 | } | ||
625 | |||
626 | { | ||
627 | name = "aws_sign2___aws_sign2_0.5.0.tgz"; | ||
628 | path = fetchurl { | ||
629 | name = "aws_sign2___aws_sign2_0.5.0.tgz"; | ||
630 | url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz"; | ||
631 | sha1 = "c57103f7a17fc037f02d7c2e64b602ea223f7d63"; | ||
632 | }; | ||
633 | } | ||
634 | |||
635 | { | ||
636 | name = "aws_sign2___aws_sign2_0.7.0.tgz"; | ||
637 | path = fetchurl { | ||
638 | name = "aws_sign2___aws_sign2_0.7.0.tgz"; | ||
639 | url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz"; | ||
640 | sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"; | ||
641 | }; | ||
642 | } | ||
643 | |||
644 | { | ||
645 | name = "aws_sign___aws_sign_0.3.0.tgz"; | ||
646 | path = fetchurl { | ||
647 | name = "aws_sign___aws_sign_0.3.0.tgz"; | ||
648 | url = "https://registry.yarnpkg.com/aws-sign/-/aws-sign-0.3.0.tgz"; | ||
649 | sha1 = "3d81ca69b474b1e16518728b51c24ff0bbedc6e9"; | ||
650 | }; | ||
651 | } | ||
652 | |||
653 | { | ||
654 | name = "aws4___aws4_1.9.1.tgz"; | ||
655 | path = fetchurl { | ||
656 | name = "aws4___aws4_1.9.1.tgz"; | ||
657 | url = "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz"; | ||
658 | sha1 = "7e33d8f7d449b3f673cd72deb9abdc552dbe528e"; | ||
659 | }; | ||
660 | } | ||
661 | |||
662 | { | ||
663 | name = "babel_runtime___babel_runtime_6.26.0.tgz"; | ||
664 | path = fetchurl { | ||
665 | name = "babel_runtime___babel_runtime_6.26.0.tgz"; | ||
666 | url = "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz"; | ||
667 | sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe"; | ||
668 | }; | ||
669 | } | ||
670 | |||
671 | { | ||
672 | name = "babel_types___babel_types_6.26.0.tgz"; | ||
673 | path = fetchurl { | ||
674 | name = "babel_types___babel_types_6.26.0.tgz"; | ||
675 | url = "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz"; | ||
676 | sha1 = "a3b073f94ab49eb6fa55cd65227a334380632497"; | ||
677 | }; | ||
678 | } | ||
679 | |||
680 | { | ||
681 | name = "babylon___babylon_6.18.0.tgz"; | ||
682 | path = fetchurl { | ||
683 | name = "babylon___babylon_6.18.0.tgz"; | ||
684 | url = "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz"; | ||
685 | sha1 = "af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"; | ||
686 | }; | ||
687 | } | ||
688 | |||
689 | { | ||
690 | name = "backo2___backo2_1.0.2.tgz"; | ||
691 | path = fetchurl { | ||
692 | name = "backo2___backo2_1.0.2.tgz"; | ||
693 | url = "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz"; | ||
694 | sha1 = "31ab1ac8b129363463e35b3ebb69f4dfcfba7947"; | ||
695 | }; | ||
696 | } | ||
697 | |||
698 | { | ||
699 | name = "balanced_match___balanced_match_1.0.0.tgz"; | ||
700 | path = fetchurl { | ||
701 | name = "balanced_match___balanced_match_1.0.0.tgz"; | ||
702 | url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz"; | ||
703 | sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767"; | ||
704 | }; | ||
705 | } | ||
706 | |||
707 | { | ||
708 | name = "base64_arraybuffer___base64_arraybuffer_0.1.5.tgz"; | ||
709 | path = fetchurl { | ||
710 | name = "base64_arraybuffer___base64_arraybuffer_0.1.5.tgz"; | ||
711 | url = "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz"; | ||
712 | sha1 = "73926771923b5a19747ad666aa5cd4bf9c6e9ce8"; | ||
713 | }; | ||
714 | } | ||
715 | |||
716 | { | ||
717 | name = "base64_js___base64_js_0.0.8.tgz"; | ||
718 | path = fetchurl { | ||
719 | name = "base64_js___base64_js_0.0.8.tgz"; | ||
720 | url = "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz"; | ||
721 | sha1 = "1101e9544f4a76b1bc3b26d452ca96d7a35e7978"; | ||
722 | }; | ||
723 | } | ||
724 | |||
725 | { | ||
726 | name = "base64id___base64id_1.0.0.tgz"; | ||
727 | path = fetchurl { | ||
728 | name = "base64id___base64id_1.0.0.tgz"; | ||
729 | url = "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz"; | ||
730 | sha1 = "47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"; | ||
731 | }; | ||
732 | } | ||
733 | |||
734 | { | ||
735 | name = "base___base_0.11.2.tgz"; | ||
736 | path = fetchurl { | ||
737 | name = "base___base_0.11.2.tgz"; | ||
738 | url = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz"; | ||
739 | sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f"; | ||
740 | }; | ||
741 | } | ||
742 | |||
743 | { | ||
744 | name = "batch___batch_0.5.3.tgz"; | ||
745 | path = fetchurl { | ||
746 | name = "batch___batch_0.5.3.tgz"; | ||
747 | url = "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz"; | ||
748 | sha1 = "3f3414f380321743bfc1042f9a83ff1d5824d464"; | ||
749 | }; | ||
750 | } | ||
751 | |||
752 | { | ||
753 | name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz"; | ||
754 | path = fetchurl { | ||
755 | name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz"; | ||
756 | url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"; | ||
757 | sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"; | ||
758 | }; | ||
759 | } | ||
760 | |||
761 | { | ||
762 | name = "beeper___beeper_1.1.1.tgz"; | ||
763 | path = fetchurl { | ||
764 | name = "beeper___beeper_1.1.1.tgz"; | ||
765 | url = "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz"; | ||
766 | sha1 = "e6d5ea8c5dad001304a70b22638447f69cb2f809"; | ||
767 | }; | ||
768 | } | ||
769 | |||
770 | { | ||
771 | name = "better_assert___better_assert_1.0.2.tgz"; | ||
772 | path = fetchurl { | ||
773 | name = "better_assert___better_assert_1.0.2.tgz"; | ||
774 | url = "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz"; | ||
775 | sha1 = "40866b9e1b9e0b55b481894311e68faffaebc522"; | ||
776 | }; | ||
777 | } | ||
778 | |||
779 | { | ||
780 | name = "binary_extensions___binary_extensions_1.13.1.tgz"; | ||
781 | path = fetchurl { | ||
782 | name = "binary_extensions___binary_extensions_1.13.1.tgz"; | ||
783 | url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz"; | ||
784 | sha1 = "598afe54755b2868a5330d2aff9d4ebb53209b65"; | ||
785 | }; | ||
786 | } | ||
787 | |||
788 | { | ||
789 | name = "binary___binary_0.3.0.tgz"; | ||
790 | path = fetchurl { | ||
791 | name = "binary___binary_0.3.0.tgz"; | ||
792 | url = "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz"; | ||
793 | sha1 = "9f60553bc5ce8c3386f3b553cff47462adecaa79"; | ||
794 | }; | ||
795 | } | ||
796 | |||
797 | { | ||
798 | name = "binaryextensions___binaryextensions_1.0.1.tgz"; | ||
799 | path = fetchurl { | ||
800 | name = "binaryextensions___binaryextensions_1.0.1.tgz"; | ||
801 | url = "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-1.0.1.tgz"; | ||
802 | sha1 = "1e637488b35b58bda5f4774bf96a5212a8c90755"; | ||
803 | }; | ||
804 | } | ||
805 | |||
806 | { | ||
807 | name = "bindings___bindings_1.5.0.tgz"; | ||
808 | path = fetchurl { | ||
809 | name = "bindings___bindings_1.5.0.tgz"; | ||
810 | url = "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz"; | ||
811 | sha1 = "10353c9e945334bc0511a6d90b38fbc7c9c504df"; | ||
812 | }; | ||
813 | } | ||
814 | |||
815 | { | ||
816 | name = "bl___bl_0.9.5.tgz"; | ||
817 | path = fetchurl { | ||
818 | name = "bl___bl_0.9.5.tgz"; | ||
819 | url = "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz"; | ||
820 | sha1 = "c06b797af085ea00bc527afc8efcf11de2232054"; | ||
821 | }; | ||
822 | } | ||
823 | |||
824 | { | ||
825 | name = "blob___blob_0.0.4.tgz"; | ||
826 | path = fetchurl { | ||
827 | name = "blob___blob_0.0.4.tgz"; | ||
828 | url = "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz"; | ||
829 | sha1 = "bcf13052ca54463f30f9fc7e95b9a47630a94921"; | ||
830 | }; | ||
831 | } | ||
832 | |||
833 | { | ||
834 | name = "block_stream___block_stream_0.0.9.tgz"; | ||
835 | path = fetchurl { | ||
836 | name = "block_stream___block_stream_0.0.9.tgz"; | ||
837 | url = "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz"; | ||
838 | sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a"; | ||
839 | }; | ||
840 | } | ||
841 | |||
842 | { | ||
843 | name = "bluebird___bluebird_2.11.0.tgz"; | ||
844 | path = fetchurl { | ||
845 | name = "bluebird___bluebird_2.11.0.tgz"; | ||
846 | url = "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz"; | ||
847 | sha1 = "534b9033c022c9579c56ba3b3e5a5caafbb650e1"; | ||
848 | }; | ||
849 | } | ||
850 | |||
851 | { | ||
852 | name = "body_parser___body_parser_1.19.0.tgz"; | ||
853 | path = fetchurl { | ||
854 | name = "body_parser___body_parser_1.19.0.tgz"; | ||
855 | url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz"; | ||
856 | sha1 = "96b2709e57c9c4e09a6fd66a8fd979844f69f08a"; | ||
857 | }; | ||
858 | } | ||
859 | |||
860 | { | ||
861 | name = "body_parser___body_parser_1.14.2.tgz"; | ||
862 | path = fetchurl { | ||
863 | name = "body_parser___body_parser_1.14.2.tgz"; | ||
864 | url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.14.2.tgz"; | ||
865 | sha1 = "1015cb1fe2c443858259581db53332f8d0cf50f9"; | ||
866 | }; | ||
867 | } | ||
868 | |||
869 | { | ||
870 | name = "boom___boom_0.4.2.tgz"; | ||
871 | path = fetchurl { | ||
872 | name = "boom___boom_0.4.2.tgz"; | ||
873 | url = "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz"; | ||
874 | sha1 = "7a636e9ded4efcefb19cef4947a3c67dfaee911b"; | ||
875 | }; | ||
876 | } | ||
877 | |||
878 | { | ||
879 | name = "bower_config___bower_config_0.5.3.tgz"; | ||
880 | path = fetchurl { | ||
881 | name = "bower_config___bower_config_0.5.3.tgz"; | ||
882 | url = "https://registry.yarnpkg.com/bower-config/-/bower-config-0.5.3.tgz"; | ||
883 | sha1 = "98fc5b41a87870ef9cbb9297635cf81f5505fdb1"; | ||
884 | }; | ||
885 | } | ||
886 | |||
887 | { | ||
888 | name = "bower_endpoint_parser___bower_endpoint_parser_0.2.2.tgz"; | ||
889 | path = fetchurl { | ||
890 | name = "bower_endpoint_parser___bower_endpoint_parser_0.2.2.tgz"; | ||
891 | url = "https://registry.yarnpkg.com/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz"; | ||
892 | sha1 = "00b565adbfab6f2d35addde977e97962acbcb3f6"; | ||
893 | }; | ||
894 | } | ||
895 | |||
896 | { | ||
897 | name = "bower_json___bower_json_0.4.0.tgz"; | ||
898 | path = fetchurl { | ||
899 | name = "bower_json___bower_json_0.4.0.tgz"; | ||
900 | url = "https://registry.yarnpkg.com/bower-json/-/bower-json-0.4.0.tgz"; | ||
901 | sha1 = "a99c3ccf416ef0590ed0ded252c760f1c6d93766"; | ||
902 | }; | ||
903 | } | ||
904 | |||
905 | { | ||
906 | name = "bower_logger___bower_logger_0.2.2.tgz"; | ||
907 | path = fetchurl { | ||
908 | name = "bower_logger___bower_logger_0.2.2.tgz"; | ||
909 | url = "https://registry.yarnpkg.com/bower-logger/-/bower-logger-0.2.2.tgz"; | ||
910 | sha1 = "39be07e979b2fc8e03a94634205ed9422373d381"; | ||
911 | }; | ||
912 | } | ||
913 | |||
914 | { | ||
915 | name = "bower_registry_client___bower_registry_client_0.2.4.tgz"; | ||
916 | path = fetchurl { | ||
917 | name = "bower_registry_client___bower_registry_client_0.2.4.tgz"; | ||
918 | url = "https://registry.yarnpkg.com/bower-registry-client/-/bower-registry-client-0.2.4.tgz"; | ||
919 | sha1 = "269fc7e898b627fb939d1144a593254d7fbbeebc"; | ||
920 | }; | ||
921 | } | ||
922 | |||
923 | { | ||
924 | name = "bower___bower_1.3.8.tgz"; | ||
925 | path = fetchurl { | ||
926 | name = "bower___bower_1.3.8.tgz"; | ||
927 | url = "https://registry.yarnpkg.com/bower/-/bower-1.3.8.tgz"; | ||
928 | sha1 = "afa3338a8a88a6e084c38112ea4a15998cbee3e6"; | ||
929 | }; | ||
930 | } | ||
931 | |||
932 | { | ||
933 | name = "brace_expansion___brace_expansion_1.1.11.tgz"; | ||
934 | path = fetchurl { | ||
935 | name = "brace_expansion___brace_expansion_1.1.11.tgz"; | ||
936 | url = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz"; | ||
937 | sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd"; | ||
938 | }; | ||
939 | } | ||
940 | |||
941 | { | ||
942 | name = "braces___braces_0.1.5.tgz"; | ||
943 | path = fetchurl { | ||
944 | name = "braces___braces_0.1.5.tgz"; | ||
945 | url = "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz"; | ||
946 | sha1 = "c085711085291d8b75fdd74eab0f8597280711e6"; | ||
947 | }; | ||
948 | } | ||
949 | |||
950 | { | ||
951 | name = "braces___braces_1.8.5.tgz"; | ||
952 | path = fetchurl { | ||
953 | name = "braces___braces_1.8.5.tgz"; | ||
954 | url = "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz"; | ||
955 | sha1 = "ba77962e12dff969d6b76711e914b737857bf6a7"; | ||
956 | }; | ||
957 | } | ||
958 | |||
959 | { | ||
960 | name = "braces___braces_2.3.2.tgz"; | ||
961 | path = fetchurl { | ||
962 | name = "braces___braces_2.3.2.tgz"; | ||
963 | url = "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz"; | ||
964 | sha1 = "5979fd3f14cd531565e5fa2df1abfff1dfaee729"; | ||
965 | }; | ||
966 | } | ||
967 | |||
968 | { | ||
969 | name = "browser_pack___browser_pack_2.0.1.tgz"; | ||
970 | path = fetchurl { | ||
971 | name = "browser_pack___browser_pack_2.0.1.tgz"; | ||
972 | url = "https://registry.yarnpkg.com/browser-pack/-/browser-pack-2.0.1.tgz"; | ||
973 | sha1 = "5d1c527f56c582677411c4db2a128648ff6bf150"; | ||
974 | }; | ||
975 | } | ||
976 | |||
977 | { | ||
978 | name = "browser_resolve___browser_resolve_1.2.4.tgz"; | ||
979 | path = fetchurl { | ||
980 | name = "browser_resolve___browser_resolve_1.2.4.tgz"; | ||
981 | url = "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.2.4.tgz"; | ||
982 | sha1 = "59ae7820a82955ecd32f5fb7c468ac21c4723806"; | ||
983 | }; | ||
984 | } | ||
985 | |||
986 | { | ||
987 | name = "browserify_shim___browserify_shim_2.0.10.tgz"; | ||
988 | path = fetchurl { | ||
989 | name = "browserify_shim___browserify_shim_2.0.10.tgz"; | ||
990 | url = "https://registry.yarnpkg.com/browserify-shim/-/browserify-shim-2.0.10.tgz"; | ||
991 | sha1 = "74a0ed5b9b784a5a287906513a896d31f54a84b8"; | ||
992 | }; | ||
993 | } | ||
994 | |||
995 | { | ||
996 | name = "browserify_zlib___browserify_zlib_0.1.4.tgz"; | ||
997 | path = fetchurl { | ||
998 | name = "browserify_zlib___browserify_zlib_0.1.4.tgz"; | ||
999 | url = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz"; | ||
1000 | sha1 = "bb35f8a519f600e0fa6b8485241c979d0141fb2d"; | ||
1001 | }; | ||
1002 | } | ||
1003 | |||
1004 | { | ||
1005 | name = "browserify___browserify_3.46.1.tgz"; | ||
1006 | path = fetchurl { | ||
1007 | name = "browserify___browserify_3.46.1.tgz"; | ||
1008 | url = "https://registry.yarnpkg.com/browserify/-/browserify-3.46.1.tgz"; | ||
1009 | sha1 = "2c2e4a7f2f408178e78c223b5b57b37c2185ad8e"; | ||
1010 | }; | ||
1011 | } | ||
1012 | |||
1013 | { | ||
1014 | name = "buffer_alloc_unsafe___buffer_alloc_unsafe_1.1.0.tgz"; | ||
1015 | path = fetchurl { | ||
1016 | name = "buffer_alloc_unsafe___buffer_alloc_unsafe_1.1.0.tgz"; | ||
1017 | url = "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz"; | ||
1018 | sha1 = "bd7dc26ae2972d0eda253be061dba992349c19f0"; | ||
1019 | }; | ||
1020 | } | ||
1021 | |||
1022 | { | ||
1023 | name = "buffer_alloc___buffer_alloc_1.2.0.tgz"; | ||
1024 | path = fetchurl { | ||
1025 | name = "buffer_alloc___buffer_alloc_1.2.0.tgz"; | ||
1026 | url = "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz"; | ||
1027 | sha1 = "890dd90d923a873e08e10e5fd51a57e5b7cce0ec"; | ||
1028 | }; | ||
1029 | } | ||
1030 | |||
1031 | { | ||
1032 | name = "buffer_fill___buffer_fill_1.0.0.tgz"; | ||
1033 | path = fetchurl { | ||
1034 | name = "buffer_fill___buffer_fill_1.0.0.tgz"; | ||
1035 | url = "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz"; | ||
1036 | sha1 = "f8f78b76789888ef39f205cd637f68e702122b2c"; | ||
1037 | }; | ||
1038 | } | ||
1039 | |||
1040 | { | ||
1041 | name = "buffer___buffer_2.1.13.tgz"; | ||
1042 | path = fetchurl { | ||
1043 | name = "buffer___buffer_2.1.13.tgz"; | ||
1044 | url = "https://registry.yarnpkg.com/buffer/-/buffer-2.1.13.tgz"; | ||
1045 | sha1 = "c88838ebf79f30b8b4a707788470bea8a62c2355"; | ||
1046 | }; | ||
1047 | } | ||
1048 | |||
1049 | { | ||
1050 | name = "buffers___buffers_0.1.1.tgz"; | ||
1051 | path = fetchurl { | ||
1052 | name = "buffers___buffers_0.1.1.tgz"; | ||
1053 | url = "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz"; | ||
1054 | sha1 = "b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb"; | ||
1055 | }; | ||
1056 | } | ||
1057 | |||
1058 | { | ||
1059 | name = "bufferstreams___bufferstreams_0.0.2.tgz"; | ||
1060 | path = fetchurl { | ||
1061 | name = "bufferstreams___bufferstreams_0.0.2.tgz"; | ||
1062 | url = "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-0.0.2.tgz"; | ||
1063 | sha1 = "7ce8dff968bbac00b9e90158a2c41456f740abdd"; | ||
1064 | }; | ||
1065 | } | ||
1066 | |||
1067 | { | ||
1068 | name = "builtins___builtins_0.0.7.tgz"; | ||
1069 | path = fetchurl { | ||
1070 | name = "builtins___builtins_0.0.7.tgz"; | ||
1071 | url = "https://registry.yarnpkg.com/builtins/-/builtins-0.0.7.tgz"; | ||
1072 | sha1 = "355219cd6cf18dbe7c01cc7fd2dce765cfdc549a"; | ||
1073 | }; | ||
1074 | } | ||
1075 | |||
1076 | { | ||
1077 | name = "bytes___bytes_2.2.0.tgz"; | ||
1078 | path = fetchurl { | ||
1079 | name = "bytes___bytes_2.2.0.tgz"; | ||
1080 | url = "https://registry.yarnpkg.com/bytes/-/bytes-2.2.0.tgz"; | ||
1081 | sha1 = "fd35464a403f6f9117c2de3609ecff9cae000588"; | ||
1082 | }; | ||
1083 | } | ||
1084 | |||
1085 | { | ||
1086 | name = "bytes___bytes_2.4.0.tgz"; | ||
1087 | path = fetchurl { | ||
1088 | name = "bytes___bytes_2.4.0.tgz"; | ||
1089 | url = "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz"; | ||
1090 | sha1 = "7d97196f9d5baf7f6935e25985549edd2a6c2339"; | ||
1091 | }; | ||
1092 | } | ||
1093 | |||
1094 | { | ||
1095 | name = "bytes___bytes_3.1.0.tgz"; | ||
1096 | path = fetchurl { | ||
1097 | name = "bytes___bytes_3.1.0.tgz"; | ||
1098 | url = "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz"; | ||
1099 | sha1 = "f6cf7933a360e0588fa9fde85651cdc7f805d1f6"; | ||
1100 | }; | ||
1101 | } | ||
1102 | |||
1103 | { | ||
1104 | name = "cache_base___cache_base_1.0.1.tgz"; | ||
1105 | path = fetchurl { | ||
1106 | name = "cache_base___cache_base_1.0.1.tgz"; | ||
1107 | url = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz"; | ||
1108 | sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2"; | ||
1109 | }; | ||
1110 | } | ||
1111 | |||
1112 | { | ||
1113 | name = "callsite___callsite_1.0.0.tgz"; | ||
1114 | path = fetchurl { | ||
1115 | name = "callsite___callsite_1.0.0.tgz"; | ||
1116 | url = "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz"; | ||
1117 | sha1 = "280398e5d664bd74038b6f0905153e6e8af1bc20"; | ||
1118 | }; | ||
1119 | } | ||
1120 | |||
1121 | { | ||
1122 | name = "camelcase_keys___camelcase_keys_2.1.0.tgz"; | ||
1123 | path = fetchurl { | ||
1124 | name = "camelcase_keys___camelcase_keys_2.1.0.tgz"; | ||
1125 | url = "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz"; | ||
1126 | sha1 = "308beeaffdf28119051efa1d932213c91b8f92e7"; | ||
1127 | }; | ||
1128 | } | ||
1129 | |||
1130 | { | ||
1131 | name = "camelcase___camelcase_1.2.1.tgz"; | ||
1132 | path = fetchurl { | ||
1133 | name = "camelcase___camelcase_1.2.1.tgz"; | ||
1134 | url = "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz"; | ||
1135 | sha1 = "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"; | ||
1136 | }; | ||
1137 | } | ||
1138 | |||
1139 | { | ||
1140 | name = "camelcase___camelcase_2.1.1.tgz"; | ||
1141 | path = fetchurl { | ||
1142 | name = "camelcase___camelcase_2.1.1.tgz"; | ||
1143 | url = "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz"; | ||
1144 | sha1 = "7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"; | ||
1145 | }; | ||
1146 | } | ||
1147 | |||
1148 | { | ||
1149 | name = "camelcase___camelcase_3.0.0.tgz"; | ||
1150 | path = fetchurl { | ||
1151 | name = "camelcase___camelcase_3.0.0.tgz"; | ||
1152 | url = "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz"; | ||
1153 | sha1 = "32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"; | ||
1154 | }; | ||
1155 | } | ||
1156 | |||
1157 | { | ||
1158 | name = "cardinal___cardinal_0.4.4.tgz"; | ||
1159 | path = fetchurl { | ||
1160 | name = "cardinal___cardinal_0.4.4.tgz"; | ||
1161 | url = "https://registry.yarnpkg.com/cardinal/-/cardinal-0.4.4.tgz"; | ||
1162 | sha1 = "ca5bb68a5b511b90fe93b9acea49bdee5c32bfe2"; | ||
1163 | }; | ||
1164 | } | ||
1165 | |||
1166 | { | ||
1167 | name = "caseless___caseless_0.12.0.tgz"; | ||
1168 | path = fetchurl { | ||
1169 | name = "caseless___caseless_0.12.0.tgz"; | ||
1170 | url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz"; | ||
1171 | sha1 = "1b681c21ff84033c826543090689420d187151dc"; | ||
1172 | }; | ||
1173 | } | ||
1174 | |||
1175 | { | ||
1176 | name = "caseless___caseless_0.8.0.tgz"; | ||
1177 | path = fetchurl { | ||
1178 | name = "caseless___caseless_0.8.0.tgz"; | ||
1179 | url = "https://registry.yarnpkg.com/caseless/-/caseless-0.8.0.tgz"; | ||
1180 | sha1 = "5bca2881d41437f54b2407ebe34888c7b9ad4f7d"; | ||
1181 | }; | ||
1182 | } | ||
1183 | |||
1184 | { | ||
1185 | name = "center_align___center_align_0.1.3.tgz"; | ||
1186 | path = fetchurl { | ||
1187 | name = "center_align___center_align_0.1.3.tgz"; | ||
1188 | url = "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz"; | ||
1189 | sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad"; | ||
1190 | }; | ||
1191 | } | ||
1192 | |||
1193 | { | ||
1194 | name = "chainsaw___chainsaw_0.1.0.tgz"; | ||
1195 | path = fetchurl { | ||
1196 | name = "chainsaw___chainsaw_0.1.0.tgz"; | ||
1197 | url = "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz"; | ||
1198 | sha1 = "5eab50b28afe58074d0d58291388828b5e5fbc98"; | ||
1199 | }; | ||
1200 | } | ||
1201 | |||
1202 | { | ||
1203 | name = "chalk___chalk_3.0.0.tgz"; | ||
1204 | path = fetchurl { | ||
1205 | name = "chalk___chalk_3.0.0.tgz"; | ||
1206 | url = "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz"; | ||
1207 | sha1 = "3f73c2bf526591f574cc492c51e2456349f844e4"; | ||
1208 | }; | ||
1209 | } | ||
1210 | |||
1211 | { | ||
1212 | name = "chalk___chalk_0.5.1.tgz"; | ||
1213 | path = fetchurl { | ||
1214 | name = "chalk___chalk_0.5.1.tgz"; | ||
1215 | url = "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz"; | ||
1216 | sha1 = "663b3a648b68b55d04690d49167aa837858f2174"; | ||
1217 | }; | ||
1218 | } | ||
1219 | |||
1220 | { | ||
1221 | name = "chalk___chalk_1.1.3.tgz"; | ||
1222 | path = fetchurl { | ||
1223 | name = "chalk___chalk_1.1.3.tgz"; | ||
1224 | url = "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz"; | ||
1225 | sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98"; | ||
1226 | }; | ||
1227 | } | ||
1228 | |||
1229 | { | ||
1230 | name = "chalk___chalk_0.4.0.tgz"; | ||
1231 | path = fetchurl { | ||
1232 | name = "chalk___chalk_0.4.0.tgz"; | ||
1233 | url = "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz"; | ||
1234 | sha1 = "5199a3ddcd0c1efe23bc08c1b027b06176e0c64f"; | ||
1235 | }; | ||
1236 | } | ||
1237 | |||
1238 | { | ||
1239 | name = "character_parser___character_parser_2.2.0.tgz"; | ||
1240 | path = fetchurl { | ||
1241 | name = "character_parser___character_parser_2.2.0.tgz"; | ||
1242 | url = "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz"; | ||
1243 | sha1 = "c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0"; | ||
1244 | }; | ||
1245 | } | ||
1246 | |||
1247 | { | ||
1248 | name = "chmodr___chmodr_0.1.2.tgz"; | ||
1249 | path = fetchurl { | ||
1250 | name = "chmodr___chmodr_0.1.2.tgz"; | ||
1251 | url = "https://registry.yarnpkg.com/chmodr/-/chmodr-0.1.2.tgz"; | ||
1252 | sha1 = "0dd8041c915087575bec383b47827bb7576a4fd6"; | ||
1253 | }; | ||
1254 | } | ||
1255 | |||
1256 | { | ||
1257 | name = "chokidar___chokidar_1.7.0.tgz"; | ||
1258 | path = fetchurl { | ||
1259 | name = "chokidar___chokidar_1.7.0.tgz"; | ||
1260 | url = "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz"; | ||
1261 | sha1 = "798e689778151c8076b4b360e5edd28cda2bb468"; | ||
1262 | }; | ||
1263 | } | ||
1264 | |||
1265 | { | ||
1266 | name = "chownr___chownr_1.1.4.tgz"; | ||
1267 | path = fetchurl { | ||
1268 | name = "chownr___chownr_1.1.4.tgz"; | ||
1269 | url = "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz"; | ||
1270 | sha1 = "6fc9d7b42d32a583596337666e7d08084da2cc6b"; | ||
1271 | }; | ||
1272 | } | ||
1273 | |||
1274 | { | ||
1275 | name = "class_utils___class_utils_0.3.6.tgz"; | ||
1276 | path = fetchurl { | ||
1277 | name = "class_utils___class_utils_0.3.6.tgz"; | ||
1278 | url = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz"; | ||
1279 | sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463"; | ||
1280 | }; | ||
1281 | } | ||
1282 | |||
1283 | { | ||
1284 | name = "clean_css___clean_css_2.2.23.tgz"; | ||
1285 | path = fetchurl { | ||
1286 | name = "clean_css___clean_css_2.2.23.tgz"; | ||
1287 | url = "https://registry.yarnpkg.com/clean-css/-/clean-css-2.2.23.tgz"; | ||
1288 | sha1 = "0590b5478b516c4903edc2d89bd3fdbdd286328c"; | ||
1289 | }; | ||
1290 | } | ||
1291 | |||
1292 | { | ||
1293 | name = "clean_css___clean_css_4.2.3.tgz"; | ||
1294 | path = fetchurl { | ||
1295 | name = "clean_css___clean_css_4.2.3.tgz"; | ||
1296 | url = "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz"; | ||
1297 | sha1 = "507b5de7d97b48ee53d84adb0160ff6216380f78"; | ||
1298 | }; | ||
1299 | } | ||
1300 | |||
1301 | { | ||
1302 | name = "cli_color___cli_color_0.2.3.tgz"; | ||
1303 | path = fetchurl { | ||
1304 | name = "cli_color___cli_color_0.2.3.tgz"; | ||
1305 | url = "https://registry.yarnpkg.com/cli-color/-/cli-color-0.2.3.tgz"; | ||
1306 | sha1 = "0a25ceae5a6a1602be7f77d28563c36700274e88"; | ||
1307 | }; | ||
1308 | } | ||
1309 | |||
1310 | { | ||
1311 | name = "cli_color___cli_color_0.3.3.tgz"; | ||
1312 | path = fetchurl { | ||
1313 | name = "cli_color___cli_color_0.3.3.tgz"; | ||
1314 | url = "https://registry.yarnpkg.com/cli-color/-/cli-color-0.3.3.tgz"; | ||
1315 | sha1 = "12d5bdd158ff8a0b0db401198913c03df069f6f5"; | ||
1316 | }; | ||
1317 | } | ||
1318 | |||
1319 | { | ||
1320 | name = "cliui___cliui_2.1.0.tgz"; | ||
1321 | path = fetchurl { | ||
1322 | name = "cliui___cliui_2.1.0.tgz"; | ||
1323 | url = "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz"; | ||
1324 | sha1 = "4b475760ff80264c762c3a1719032e91c7fea0d1"; | ||
1325 | }; | ||
1326 | } | ||
1327 | |||
1328 | { | ||
1329 | name = "cliui___cliui_3.2.0.tgz"; | ||
1330 | path = fetchurl { | ||
1331 | name = "cliui___cliui_3.2.0.tgz"; | ||
1332 | url = "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz"; | ||
1333 | sha1 = "120601537a916d29940f934da3b48d585a39213d"; | ||
1334 | }; | ||
1335 | } | ||
1336 | |||
1337 | { | ||
1338 | name = "clone_buffer___clone_buffer_1.0.0.tgz"; | ||
1339 | path = fetchurl { | ||
1340 | name = "clone_buffer___clone_buffer_1.0.0.tgz"; | ||
1341 | url = "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz"; | ||
1342 | sha1 = "e3e25b207ac4e701af721e2cb5a16792cac3dc58"; | ||
1343 | }; | ||
1344 | } | ||
1345 | |||
1346 | { | ||
1347 | name = "clone_stats___clone_stats_0.0.1.tgz"; | ||
1348 | path = fetchurl { | ||
1349 | name = "clone_stats___clone_stats_0.0.1.tgz"; | ||
1350 | url = "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz"; | ||
1351 | sha1 = "b88f94a82cf38b8791d58046ea4029ad88ca99d1"; | ||
1352 | }; | ||
1353 | } | ||
1354 | |||
1355 | { | ||
1356 | name = "clone_stats___clone_stats_1.0.0.tgz"; | ||
1357 | path = fetchurl { | ||
1358 | name = "clone_stats___clone_stats_1.0.0.tgz"; | ||
1359 | url = "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz"; | ||
1360 | sha1 = "b3782dff8bb5474e18b9b6bf0fdfe782f8777680"; | ||
1361 | }; | ||
1362 | } | ||
1363 | |||
1364 | { | ||
1365 | name = "clone___clone_0.2.0.tgz"; | ||
1366 | path = fetchurl { | ||
1367 | name = "clone___clone_0.2.0.tgz"; | ||
1368 | url = "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz"; | ||
1369 | sha1 = "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f"; | ||
1370 | }; | ||
1371 | } | ||
1372 | |||
1373 | { | ||
1374 | name = "clone___clone_1.0.4.tgz"; | ||
1375 | path = fetchurl { | ||
1376 | name = "clone___clone_1.0.4.tgz"; | ||
1377 | url = "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz"; | ||
1378 | sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e"; | ||
1379 | }; | ||
1380 | } | ||
1381 | |||
1382 | { | ||
1383 | name = "clone___clone_2.1.2.tgz"; | ||
1384 | path = fetchurl { | ||
1385 | name = "clone___clone_2.1.2.tgz"; | ||
1386 | url = "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz"; | ||
1387 | sha1 = "1b7f4b9f591f1e8f83670401600345a02887435f"; | ||
1388 | }; | ||
1389 | } | ||
1390 | |||
1391 | { | ||
1392 | name = "cloneable_readable___cloneable_readable_1.1.3.tgz"; | ||
1393 | path = fetchurl { | ||
1394 | name = "cloneable_readable___cloneable_readable_1.1.3.tgz"; | ||
1395 | url = "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz"; | ||
1396 | sha1 = "120a00cb053bfb63a222e709f9683ea2e11d8cec"; | ||
1397 | }; | ||
1398 | } | ||
1399 | |||
1400 | { | ||
1401 | name = "code_point_at___code_point_at_1.1.0.tgz"; | ||
1402 | path = fetchurl { | ||
1403 | name = "code_point_at___code_point_at_1.1.0.tgz"; | ||
1404 | url = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz"; | ||
1405 | sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"; | ||
1406 | }; | ||
1407 | } | ||
1408 | |||
1409 | { | ||
1410 | name = "coffee_script___coffee_script_1.12.7.tgz"; | ||
1411 | path = fetchurl { | ||
1412 | name = "coffee_script___coffee_script_1.12.7.tgz"; | ||
1413 | url = "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz"; | ||
1414 | sha1 = "c05dae0cb79591d05b3070a8433a98c9a89ccc53"; | ||
1415 | }; | ||
1416 | } | ||
1417 | |||
1418 | { | ||
1419 | name = "coffee_script___coffee_script_1.10.0.tgz"; | ||
1420 | path = fetchurl { | ||
1421 | name = "coffee_script___coffee_script_1.10.0.tgz"; | ||
1422 | url = "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.10.0.tgz"; | ||
1423 | sha1 = "12938bcf9be1948fa006f92e0c4c9e81705108c0"; | ||
1424 | }; | ||
1425 | } | ||
1426 | |||
1427 | { | ||
1428 | name = "coffeescript___coffeescript_1.12.7.tgz"; | ||
1429 | path = fetchurl { | ||
1430 | name = "coffeescript___coffeescript_1.12.7.tgz"; | ||
1431 | url = "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.12.7.tgz"; | ||
1432 | sha1 = "e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27"; | ||
1433 | }; | ||
1434 | } | ||
1435 | |||
1436 | { | ||
1437 | name = "collection_visit___collection_visit_1.0.0.tgz"; | ||
1438 | path = fetchurl { | ||
1439 | name = "collection_visit___collection_visit_1.0.0.tgz"; | ||
1440 | url = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz"; | ||
1441 | sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0"; | ||
1442 | }; | ||
1443 | } | ||
1444 | |||
1445 | { | ||
1446 | name = "color_convert___color_convert_2.0.1.tgz"; | ||
1447 | path = fetchurl { | ||
1448 | name = "color_convert___color_convert_2.0.1.tgz"; | ||
1449 | url = "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz"; | ||
1450 | sha1 = "72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"; | ||
1451 | }; | ||
1452 | } | ||
1453 | |||
1454 | { | ||
1455 | name = "color_name___color_name_1.1.4.tgz"; | ||
1456 | path = fetchurl { | ||
1457 | name = "color_name___color_name_1.1.4.tgz"; | ||
1458 | url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz"; | ||
1459 | sha1 = "c2a09a87acbde69543de6f63fa3995c826c536a2"; | ||
1460 | }; | ||
1461 | } | ||
1462 | |||
1463 | { | ||
1464 | name = "color_support___color_support_1.1.3.tgz"; | ||
1465 | path = fetchurl { | ||
1466 | name = "color_support___color_support_1.1.3.tgz"; | ||
1467 | url = "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz"; | ||
1468 | sha1 = "93834379a1cc9a0c61f82f52f0d04322251bd5a2"; | ||
1469 | }; | ||
1470 | } | ||
1471 | |||
1472 | { | ||
1473 | name = "colors___colors_1.4.0.tgz"; | ||
1474 | path = fetchurl { | ||
1475 | name = "colors___colors_1.4.0.tgz"; | ||
1476 | url = "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz"; | ||
1477 | sha1 = "c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"; | ||
1478 | }; | ||
1479 | } | ||
1480 | |||
1481 | { | ||
1482 | name = "combine_source_map___combine_source_map_0.3.0.tgz"; | ||
1483 | path = fetchurl { | ||
1484 | name = "combine_source_map___combine_source_map_0.3.0.tgz"; | ||
1485 | url = "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.3.0.tgz"; | ||
1486 | sha1 = "d9e74f593d9cd43807312cb5d846d451efaa9eb7"; | ||
1487 | }; | ||
1488 | } | ||
1489 | |||
1490 | { | ||
1491 | name = "combined_stream___combined_stream_1.0.8.tgz"; | ||
1492 | path = fetchurl { | ||
1493 | name = "combined_stream___combined_stream_1.0.8.tgz"; | ||
1494 | url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz"; | ||
1495 | sha1 = "c3d45a8b34fd730631a110a8a2520682b31d5a7f"; | ||
1496 | }; | ||
1497 | } | ||
1498 | |||
1499 | { | ||
1500 | name = "combined_stream___combined_stream_0.0.7.tgz"; | ||
1501 | path = fetchurl { | ||
1502 | name = "combined_stream___combined_stream_0.0.7.tgz"; | ||
1503 | url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz"; | ||
1504 | sha1 = "0137e657baa5a7541c57ac37ac5fc07d73b4dc1f"; | ||
1505 | }; | ||
1506 | } | ||
1507 | |||
1508 | { | ||
1509 | name = "commander___commander_2.2.0.tgz"; | ||
1510 | path = fetchurl { | ||
1511 | name = "commander___commander_2.2.0.tgz"; | ||
1512 | url = "https://registry.yarnpkg.com/commander/-/commander-2.2.0.tgz"; | ||
1513 | sha1 = "175ad4b9317f3ff615f201c1e57224f55a3e91df"; | ||
1514 | }; | ||
1515 | } | ||
1516 | |||
1517 | { | ||
1518 | name = "commander___commander_2.20.3.tgz"; | ||
1519 | path = fetchurl { | ||
1520 | name = "commander___commander_2.20.3.tgz"; | ||
1521 | url = "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz"; | ||
1522 | sha1 = "fd485e84c03eb4881c20722ba48035e8531aeb33"; | ||
1523 | }; | ||
1524 | } | ||
1525 | |||
1526 | { | ||
1527 | name = "commondir___commondir_0.0.1.tgz"; | ||
1528 | path = fetchurl { | ||
1529 | name = "commondir___commondir_0.0.1.tgz"; | ||
1530 | url = "https://registry.yarnpkg.com/commondir/-/commondir-0.0.1.tgz"; | ||
1531 | sha1 = "89f00fdcd51b519c578733fec563e6a6da7f5be2"; | ||
1532 | }; | ||
1533 | } | ||
1534 | |||
1535 | { | ||
1536 | name = "component_bind___component_bind_1.0.0.tgz"; | ||
1537 | path = fetchurl { | ||
1538 | name = "component_bind___component_bind_1.0.0.tgz"; | ||
1539 | url = "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz"; | ||
1540 | sha1 = "00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"; | ||
1541 | }; | ||
1542 | } | ||
1543 | |||
1544 | { | ||
1545 | name = "component_emitter___component_emitter_1.1.2.tgz"; | ||
1546 | path = fetchurl { | ||
1547 | name = "component_emitter___component_emitter_1.1.2.tgz"; | ||
1548 | url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz"; | ||
1549 | sha1 = "296594f2753daa63996d2af08d15a95116c9aec3"; | ||
1550 | }; | ||
1551 | } | ||
1552 | |||
1553 | { | ||
1554 | name = "component_emitter___component_emitter_1.2.1.tgz"; | ||
1555 | path = fetchurl { | ||
1556 | name = "component_emitter___component_emitter_1.2.1.tgz"; | ||
1557 | url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz"; | ||
1558 | sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6"; | ||
1559 | }; | ||
1560 | } | ||
1561 | |||
1562 | { | ||
1563 | name = "component_emitter___component_emitter_1.3.0.tgz"; | ||
1564 | path = fetchurl { | ||
1565 | name = "component_emitter___component_emitter_1.3.0.tgz"; | ||
1566 | url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz"; | ||
1567 | sha1 = "16e4070fba8ae29b679f2215853ee181ab2eabc0"; | ||
1568 | }; | ||
1569 | } | ||
1570 | |||
1571 | { | ||
1572 | name = "component_inherit___component_inherit_0.0.3.tgz"; | ||
1573 | path = fetchurl { | ||
1574 | name = "component_inherit___component_inherit_0.0.3.tgz"; | ||
1575 | url = "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz"; | ||
1576 | sha1 = "645fc4adf58b72b649d5cae65135619db26ff143"; | ||
1577 | }; | ||
1578 | } | ||
1579 | |||
1580 | { | ||
1581 | name = "concat_map___concat_map_0.0.1.tgz"; | ||
1582 | path = fetchurl { | ||
1583 | name = "concat_map___concat_map_0.0.1.tgz"; | ||
1584 | url = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz"; | ||
1585 | sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b"; | ||
1586 | }; | ||
1587 | } | ||
1588 | |||
1589 | { | ||
1590 | name = "concat_stream___concat_stream_1.4.11.tgz"; | ||
1591 | path = fetchurl { | ||
1592 | name = "concat_stream___concat_stream_1.4.11.tgz"; | ||
1593 | url = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.11.tgz"; | ||
1594 | sha1 = "1dc9f666f2621da9c618b1e7f8f3b2ff70b5f76f"; | ||
1595 | }; | ||
1596 | } | ||
1597 | |||
1598 | { | ||
1599 | name = "concat_with_sourcemaps___concat_with_sourcemaps_1.1.0.tgz"; | ||
1600 | path = fetchurl { | ||
1601 | name = "concat_with_sourcemaps___concat_with_sourcemaps_1.1.0.tgz"; | ||
1602 | url = "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz"; | ||
1603 | sha1 = "d4ea93f05ae25790951b99e7b3b09e3908a4082e"; | ||
1604 | }; | ||
1605 | } | ||
1606 | |||
1607 | { | ||
1608 | name = "configstore___configstore_0.3.2.tgz"; | ||
1609 | path = fetchurl { | ||
1610 | name = "configstore___configstore_0.3.2.tgz"; | ||
1611 | url = "https://registry.yarnpkg.com/configstore/-/configstore-0.3.2.tgz"; | ||
1612 | sha1 = "25e4c16c3768abf75c5a65bc61761f495055b459"; | ||
1613 | }; | ||
1614 | } | ||
1615 | |||
1616 | { | ||
1617 | name = "configstore___configstore_0.2.3.tgz"; | ||
1618 | path = fetchurl { | ||
1619 | name = "configstore___configstore_0.2.3.tgz"; | ||
1620 | url = "https://registry.yarnpkg.com/configstore/-/configstore-0.2.3.tgz"; | ||
1621 | sha1 = "b1bdc4ad823a25423dc15d220fcc1ae1d7efab02"; | ||
1622 | }; | ||
1623 | } | ||
1624 | |||
1625 | { | ||
1626 | name = "connect___connect_3.7.0.tgz"; | ||
1627 | path = fetchurl { | ||
1628 | name = "connect___connect_3.7.0.tgz"; | ||
1629 | url = "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz"; | ||
1630 | sha1 = "5d49348910caa5e07a01800b030d0c35f20484f8"; | ||
1631 | }; | ||
1632 | } | ||
1633 | |||
1634 | { | ||
1635 | name = "console_browserify___console_browserify_1.0.3.tgz"; | ||
1636 | path = fetchurl { | ||
1637 | name = "console_browserify___console_browserify_1.0.3.tgz"; | ||
1638 | url = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.0.3.tgz"; | ||
1639 | sha1 = "d3898d2c3a93102f364197f8874b4f92b5286a8e"; | ||
1640 | }; | ||
1641 | } | ||
1642 | |||
1643 | { | ||
1644 | name = "console_control_strings___console_control_strings_1.1.0.tgz"; | ||
1645 | path = fetchurl { | ||
1646 | name = "console_control_strings___console_control_strings_1.1.0.tgz"; | ||
1647 | url = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz"; | ||
1648 | sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e"; | ||
1649 | }; | ||
1650 | } | ||
1651 | |||
1652 | { | ||
1653 | name = "constantinople___constantinople_3.1.2.tgz"; | ||
1654 | path = fetchurl { | ||
1655 | name = "constantinople___constantinople_3.1.2.tgz"; | ||
1656 | url = "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz"; | ||
1657 | sha1 = "d45ed724f57d3d10500017a7d3a889c1381ae647"; | ||
1658 | }; | ||
1659 | } | ||
1660 | |||
1661 | { | ||
1662 | name = "constants_browserify___constants_browserify_0.0.1.tgz"; | ||
1663 | path = fetchurl { | ||
1664 | name = "constants_browserify___constants_browserify_0.0.1.tgz"; | ||
1665 | url = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-0.0.1.tgz"; | ||
1666 | sha1 = "92577db527ba6c4cf0a4568d84bc031f441e21f2"; | ||
1667 | }; | ||
1668 | } | ||
1669 | |||
1670 | { | ||
1671 | name = "content_type___content_type_1.0.4.tgz"; | ||
1672 | path = fetchurl { | ||
1673 | name = "content_type___content_type_1.0.4.tgz"; | ||
1674 | url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz"; | ||
1675 | sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b"; | ||
1676 | }; | ||
1677 | } | ||
1678 | |||
1679 | { | ||
1680 | name = "convert_source_map___convert_source_map_0.4.1.tgz"; | ||
1681 | path = fetchurl { | ||
1682 | name = "convert_source_map___convert_source_map_0.4.1.tgz"; | ||
1683 | url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.4.1.tgz"; | ||
1684 | sha1 = "f919a0099fe31f80fc5a1d0eb303161b394070c7"; | ||
1685 | }; | ||
1686 | } | ||
1687 | |||
1688 | { | ||
1689 | name = "convert_source_map___convert_source_map_1.7.0.tgz"; | ||
1690 | path = fetchurl { | ||
1691 | name = "convert_source_map___convert_source_map_1.7.0.tgz"; | ||
1692 | url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz"; | ||
1693 | sha1 = "17a2cb882d7f77d3490585e2ce6c524424a3a442"; | ||
1694 | }; | ||
1695 | } | ||
1696 | |||
1697 | { | ||
1698 | name = "convert_source_map___convert_source_map_0.3.5.tgz"; | ||
1699 | path = fetchurl { | ||
1700 | name = "convert_source_map___convert_source_map_0.3.5.tgz"; | ||
1701 | url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz"; | ||
1702 | sha1 = "f1d802950af7dd2631a1febe0596550c86ab3190"; | ||
1703 | }; | ||
1704 | } | ||
1705 | |||
1706 | { | ||
1707 | name = "convert_source_map___convert_source_map_1.1.3.tgz"; | ||
1708 | path = fetchurl { | ||
1709 | name = "convert_source_map___convert_source_map_1.1.3.tgz"; | ||
1710 | url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz"; | ||
1711 | sha1 = "4829c877e9fe49b3161f3bf3673888e204699860"; | ||
1712 | }; | ||
1713 | } | ||
1714 | |||
1715 | { | ||
1716 | name = "cookie_jar___cookie_jar_0.3.0.tgz"; | ||
1717 | path = fetchurl { | ||
1718 | name = "cookie_jar___cookie_jar_0.3.0.tgz"; | ||
1719 | url = "https://registry.yarnpkg.com/cookie-jar/-/cookie-jar-0.3.0.tgz"; | ||
1720 | sha1 = "bc9a27d4e2b97e186cd57c9e2063cb99fa68cccc"; | ||
1721 | }; | ||
1722 | } | ||
1723 | |||
1724 | { | ||
1725 | name = "cookie___cookie_0.3.1.tgz"; | ||
1726 | path = fetchurl { | ||
1727 | name = "cookie___cookie_0.3.1.tgz"; | ||
1728 | url = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz"; | ||
1729 | sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"; | ||
1730 | }; | ||
1731 | } | ||
1732 | |||
1733 | { | ||
1734 | name = "copy_descriptor___copy_descriptor_0.1.1.tgz"; | ||
1735 | path = fetchurl { | ||
1736 | name = "copy_descriptor___copy_descriptor_0.1.1.tgz"; | ||
1737 | url = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz"; | ||
1738 | sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d"; | ||
1739 | }; | ||
1740 | } | ||
1741 | |||
1742 | { | ||
1743 | name = "core_js___core_js_2.6.11.tgz"; | ||
1744 | path = fetchurl { | ||
1745 | name = "core_js___core_js_2.6.11.tgz"; | ||
1746 | url = "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz"; | ||
1747 | sha1 = "38831469f9922bded8ee21c9dc46985e0399308c"; | ||
1748 | }; | ||
1749 | } | ||
1750 | |||
1751 | { | ||
1752 | name = "core_util_is___core_util_is_1.0.2.tgz"; | ||
1753 | path = fetchurl { | ||
1754 | name = "core_util_is___core_util_is_1.0.2.tgz"; | ||
1755 | url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz"; | ||
1756 | sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7"; | ||
1757 | }; | ||
1758 | } | ||
1759 | |||
1760 | { | ||
1761 | name = "cross_spawn___cross_spawn_3.0.1.tgz"; | ||
1762 | path = fetchurl { | ||
1763 | name = "cross_spawn___cross_spawn_3.0.1.tgz"; | ||
1764 | url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz"; | ||
1765 | sha1 = "1256037ecb9f0c5f79e3d6ef135e30770184b982"; | ||
1766 | }; | ||
1767 | } | ||
1768 | |||
1769 | { | ||
1770 | name = "cryptiles___cryptiles_0.2.2.tgz"; | ||
1771 | path = fetchurl { | ||
1772 | name = "cryptiles___cryptiles_0.2.2.tgz"; | ||
1773 | url = "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz"; | ||
1774 | sha1 = "ed91ff1f17ad13d3748288594f8a48a0d26f325c"; | ||
1775 | }; | ||
1776 | } | ||
1777 | |||
1778 | { | ||
1779 | name = "crypto_browserify___crypto_browserify_1.0.9.tgz"; | ||
1780 | path = fetchurl { | ||
1781 | name = "crypto_browserify___crypto_browserify_1.0.9.tgz"; | ||
1782 | url = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-1.0.9.tgz"; | ||
1783 | sha1 = "cc5449685dfb85eb11c9828acc7cb87ab5bbfcc0"; | ||
1784 | }; | ||
1785 | } | ||
1786 | |||
1787 | { | ||
1788 | name = "ctype___ctype_0.5.3.tgz"; | ||
1789 | path = fetchurl { | ||
1790 | name = "ctype___ctype_0.5.3.tgz"; | ||
1791 | url = "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz"; | ||
1792 | sha1 = "82c18c2461f74114ef16c135224ad0b9144ca12f"; | ||
1793 | }; | ||
1794 | } | ||
1795 | |||
1796 | { | ||
1797 | name = "currently_unhandled___currently_unhandled_0.4.1.tgz"; | ||
1798 | path = fetchurl { | ||
1799 | name = "currently_unhandled___currently_unhandled_0.4.1.tgz"; | ||
1800 | url = "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz"; | ||
1801 | sha1 = "988df33feab191ef799a61369dd76c17adf957ea"; | ||
1802 | }; | ||
1803 | } | ||
1804 | |||
1805 | { | ||
1806 | name = "custom_event___custom_event_1.0.1.tgz"; | ||
1807 | path = fetchurl { | ||
1808 | name = "custom_event___custom_event_1.0.1.tgz"; | ||
1809 | url = "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz"; | ||
1810 | sha1 = "5d02a46850adf1b4a317946a3928fccb5bfd0425"; | ||
1811 | }; | ||
1812 | } | ||
1813 | |||
1814 | { | ||
1815 | name = "d___d_1.0.1.tgz"; | ||
1816 | path = fetchurl { | ||
1817 | name = "d___d_1.0.1.tgz"; | ||
1818 | url = "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz"; | ||
1819 | sha1 = "8698095372d58dbee346ffd0c7093f99f8f9eb5a"; | ||
1820 | }; | ||
1821 | } | ||
1822 | |||
1823 | { | ||
1824 | name = "d___d_0.1.1.tgz"; | ||
1825 | path = fetchurl { | ||
1826 | name = "d___d_0.1.1.tgz"; | ||
1827 | url = "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz"; | ||
1828 | sha1 = "da184c535d18d8ee7ba2aa229b914009fae11309"; | ||
1829 | }; | ||
1830 | } | ||
1831 | |||
1832 | { | ||
1833 | name = "dashdash___dashdash_1.14.1.tgz"; | ||
1834 | path = fetchurl { | ||
1835 | name = "dashdash___dashdash_1.14.1.tgz"; | ||
1836 | url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz"; | ||
1837 | sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"; | ||
1838 | }; | ||
1839 | } | ||
1840 | |||
1841 | { | ||
1842 | name = "dateformat___dateformat_1.0.12.tgz"; | ||
1843 | path = fetchurl { | ||
1844 | name = "dateformat___dateformat_1.0.12.tgz"; | ||
1845 | url = "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz"; | ||
1846 | sha1 = "9f124b67594c937ff706932e4a642cca8dbbfee9"; | ||
1847 | }; | ||
1848 | } | ||
1849 | |||
1850 | { | ||
1851 | name = "dateformat___dateformat_2.2.0.tgz"; | ||
1852 | path = fetchurl { | ||
1853 | name = "dateformat___dateformat_2.2.0.tgz"; | ||
1854 | url = "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz"; | ||
1855 | sha1 = "4065e2013cf9fb916ddfd82efb506ad4c6769062"; | ||
1856 | }; | ||
1857 | } | ||
1858 | |||
1859 | { | ||
1860 | name = "deap___deap_1.0.1.tgz"; | ||
1861 | path = fetchurl { | ||
1862 | name = "deap___deap_1.0.1.tgz"; | ||
1863 | url = "https://registry.yarnpkg.com/deap/-/deap-1.0.1.tgz"; | ||
1864 | sha1 = "0646e9e1a095ffe8a9e404d68d1f76dcf57e66fb"; | ||
1865 | }; | ||
1866 | } | ||
1867 | |||
1868 | { | ||
1869 | name = "debug___debug_2.2.0.tgz"; | ||
1870 | path = fetchurl { | ||
1871 | name = "debug___debug_2.2.0.tgz"; | ||
1872 | url = "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz"; | ||
1873 | sha1 = "f87057e995b1a1f6ae6a4960664137bc56f039da"; | ||
1874 | }; | ||
1875 | } | ||
1876 | |||
1877 | { | ||
1878 | name = "debug___debug_2.3.3.tgz"; | ||
1879 | path = fetchurl { | ||
1880 | name = "debug___debug_2.3.3.tgz"; | ||
1881 | url = "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz"; | ||
1882 | sha1 = "40c453e67e6e13c901ddec317af8986cda9eff8c"; | ||
1883 | }; | ||
1884 | } | ||
1885 | |||
1886 | { | ||
1887 | name = "debug___debug_2.6.9.tgz"; | ||
1888 | path = fetchurl { | ||
1889 | name = "debug___debug_2.6.9.tgz"; | ||
1890 | url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz"; | ||
1891 | sha1 = "5d128515df134ff327e90a4c93f4e077a536341f"; | ||
1892 | }; | ||
1893 | } | ||
1894 | |||
1895 | { | ||
1896 | name = "debug___debug_3.2.6.tgz"; | ||
1897 | path = fetchurl { | ||
1898 | name = "debug___debug_3.2.6.tgz"; | ||
1899 | url = "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz"; | ||
1900 | sha1 = "e83d17de16d8a7efb7717edbe5fb10135eee629b"; | ||
1901 | }; | ||
1902 | } | ||
1903 | |||
1904 | { | ||
1905 | name = "decamelize___decamelize_1.2.0.tgz"; | ||
1906 | path = fetchurl { | ||
1907 | name = "decamelize___decamelize_1.2.0.tgz"; | ||
1908 | url = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz"; | ||
1909 | sha1 = "f6534d15148269b20352e7bee26f501f9a191290"; | ||
1910 | }; | ||
1911 | } | ||
1912 | |||
1913 | { | ||
1914 | name = "decode_uri_component___decode_uri_component_0.2.0.tgz"; | ||
1915 | path = fetchurl { | ||
1916 | name = "decode_uri_component___decode_uri_component_0.2.0.tgz"; | ||
1917 | url = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz"; | ||
1918 | sha1 = "eb3913333458775cb84cd1a1fae062106bb87545"; | ||
1919 | }; | ||
1920 | } | ||
1921 | |||
1922 | { | ||
1923 | name = "decompress_zip___decompress_zip_0.0.8.tgz"; | ||
1924 | path = fetchurl { | ||
1925 | name = "decompress_zip___decompress_zip_0.0.8.tgz"; | ||
1926 | url = "https://registry.yarnpkg.com/decompress-zip/-/decompress-zip-0.0.8.tgz"; | ||
1927 | sha1 = "4a265b22c7b209d7b24fa66f2b2dfbced59044f3"; | ||
1928 | }; | ||
1929 | } | ||
1930 | |||
1931 | { | ||
1932 | name = "deep_equal___deep_equal_0.1.2.tgz"; | ||
1933 | path = fetchurl { | ||
1934 | name = "deep_equal___deep_equal_0.1.2.tgz"; | ||
1935 | url = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.1.2.tgz"; | ||
1936 | sha1 = "b246c2b80a570a47c11be1d9bd1070ec878b87ce"; | ||
1937 | }; | ||
1938 | } | ||
1939 | |||
1940 | { | ||
1941 | name = "deep_extend___deep_extend_0.6.0.tgz"; | ||
1942 | path = fetchurl { | ||
1943 | name = "deep_extend___deep_extend_0.6.0.tgz"; | ||
1944 | url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz"; | ||
1945 | sha1 = "c4fa7c95404a17a9c3e8ca7e1537312b736330ac"; | ||
1946 | }; | ||
1947 | } | ||
1948 | |||
1949 | { | ||
1950 | name = "deep_extend___deep_extend_0.2.11.tgz"; | ||
1951 | path = fetchurl { | ||
1952 | name = "deep_extend___deep_extend_0.2.11.tgz"; | ||
1953 | url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.2.11.tgz"; | ||
1954 | sha1 = "7a16ba69729132340506170494bc83f7076fe08f"; | ||
1955 | }; | ||
1956 | } | ||
1957 | |||
1958 | { | ||
1959 | name = "deep_is___deep_is_0.1.3.tgz"; | ||
1960 | path = fetchurl { | ||
1961 | name = "deep_is___deep_is_0.1.3.tgz"; | ||
1962 | url = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz"; | ||
1963 | sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34"; | ||
1964 | }; | ||
1965 | } | ||
1966 | |||
1967 | { | ||
1968 | name = "defaults___defaults_1.0.3.tgz"; | ||
1969 | path = fetchurl { | ||
1970 | name = "defaults___defaults_1.0.3.tgz"; | ||
1971 | url = "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz"; | ||
1972 | sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d"; | ||
1973 | }; | ||
1974 | } | ||
1975 | |||
1976 | { | ||
1977 | name = "define_property___define_property_0.2.5.tgz"; | ||
1978 | path = fetchurl { | ||
1979 | name = "define_property___define_property_0.2.5.tgz"; | ||
1980 | url = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz"; | ||
1981 | sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116"; | ||
1982 | }; | ||
1983 | } | ||
1984 | |||
1985 | { | ||
1986 | name = "define_property___define_property_1.0.0.tgz"; | ||
1987 | path = fetchurl { | ||
1988 | name = "define_property___define_property_1.0.0.tgz"; | ||
1989 | url = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz"; | ||
1990 | sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"; | ||
1991 | }; | ||
1992 | } | ||
1993 | |||
1994 | { | ||
1995 | name = "define_property___define_property_2.0.2.tgz"; | ||
1996 | path = fetchurl { | ||
1997 | name = "define_property___define_property_2.0.2.tgz"; | ||
1998 | url = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz"; | ||
1999 | sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d"; | ||
2000 | }; | ||
2001 | } | ||
2002 | |||
2003 | { | ||
2004 | name = "defined___defined_0.0.0.tgz"; | ||
2005 | path = fetchurl { | ||
2006 | name = "defined___defined_0.0.0.tgz"; | ||
2007 | url = "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz"; | ||
2008 | sha1 = "f35eea7d705e933baf13b2f03b3f83d921403b3e"; | ||
2009 | }; | ||
2010 | } | ||
2011 | |||
2012 | { | ||
2013 | name = "delayed_stream___delayed_stream_0.0.5.tgz"; | ||
2014 | path = fetchurl { | ||
2015 | name = "delayed_stream___delayed_stream_0.0.5.tgz"; | ||
2016 | url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz"; | ||
2017 | sha1 = "d4b1f43a93e8296dfe02694f4680bc37a313c73f"; | ||
2018 | }; | ||
2019 | } | ||
2020 | |||
2021 | { | ||
2022 | name = "delayed_stream___delayed_stream_1.0.0.tgz"; | ||
2023 | path = fetchurl { | ||
2024 | name = "delayed_stream___delayed_stream_1.0.0.tgz"; | ||
2025 | url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz"; | ||
2026 | sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619"; | ||
2027 | }; | ||
2028 | } | ||
2029 | |||
2030 | { | ||
2031 | name = "delegates___delegates_1.0.0.tgz"; | ||
2032 | path = fetchurl { | ||
2033 | name = "delegates___delegates_1.0.0.tgz"; | ||
2034 | url = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz"; | ||
2035 | sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a"; | ||
2036 | }; | ||
2037 | } | ||
2038 | |||
2039 | { | ||
2040 | name = "depd___depd_1.1.2.tgz"; | ||
2041 | path = fetchurl { | ||
2042 | name = "depd___depd_1.1.2.tgz"; | ||
2043 | url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz"; | ||
2044 | sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9"; | ||
2045 | }; | ||
2046 | } | ||
2047 | |||
2048 | { | ||
2049 | name = "deprecated___deprecated_0.0.1.tgz"; | ||
2050 | path = fetchurl { | ||
2051 | name = "deprecated___deprecated_0.0.1.tgz"; | ||
2052 | url = "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz"; | ||
2053 | sha1 = "f9c9af5464afa1e7a971458a8bdef2aa94d5bb19"; | ||
2054 | }; | ||
2055 | } | ||
2056 | |||
2057 | { | ||
2058 | name = "deps_sort___deps_sort_0.1.2.tgz"; | ||
2059 | path = fetchurl { | ||
2060 | name = "deps_sort___deps_sort_0.1.2.tgz"; | ||
2061 | url = "https://registry.yarnpkg.com/deps-sort/-/deps-sort-0.1.2.tgz"; | ||
2062 | sha1 = "daa2fb614a17c9637d801e2f55339ae370f3611a"; | ||
2063 | }; | ||
2064 | } | ||
2065 | |||
2066 | { | ||
2067 | name = "derequire___derequire_0.8.0.tgz"; | ||
2068 | path = fetchurl { | ||
2069 | name = "derequire___derequire_0.8.0.tgz"; | ||
2070 | url = "https://registry.yarnpkg.com/derequire/-/derequire-0.8.0.tgz"; | ||
2071 | sha1 = "c1f7f1da2cede44adede047378f03f444e9c4c0d"; | ||
2072 | }; | ||
2073 | } | ||
2074 | |||
2075 | { | ||
2076 | name = "destroy___destroy_1.0.4.tgz"; | ||
2077 | path = fetchurl { | ||
2078 | name = "destroy___destroy_1.0.4.tgz"; | ||
2079 | url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz"; | ||
2080 | sha1 = "978857442c44749e4206613e37946205826abd80"; | ||
2081 | }; | ||
2082 | } | ||
2083 | |||
2084 | { | ||
2085 | name = "detect_file___detect_file_1.0.0.tgz"; | ||
2086 | path = fetchurl { | ||
2087 | name = "detect_file___detect_file_1.0.0.tgz"; | ||
2088 | url = "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz"; | ||
2089 | sha1 = "f0d66d03672a825cb1b73bdb3fe62310c8e552b7"; | ||
2090 | }; | ||
2091 | } | ||
2092 | |||
2093 | { | ||
2094 | name = "detect_libc___detect_libc_1.0.3.tgz"; | ||
2095 | path = fetchurl { | ||
2096 | name = "detect_libc___detect_libc_1.0.3.tgz"; | ||
2097 | url = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz"; | ||
2098 | sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"; | ||
2099 | }; | ||
2100 | } | ||
2101 | |||
2102 | { | ||
2103 | name = "detective___detective_3.1.0.tgz"; | ||
2104 | path = fetchurl { | ||
2105 | name = "detective___detective_3.1.0.tgz"; | ||
2106 | url = "https://registry.yarnpkg.com/detective/-/detective-3.1.0.tgz"; | ||
2107 | sha1 = "77782444ab752b88ca1be2e9d0a0395f1da25eed"; | ||
2108 | }; | ||
2109 | } | ||
2110 | |||
2111 | { | ||
2112 | name = "di___di_0.0.1.tgz"; | ||
2113 | path = fetchurl { | ||
2114 | name = "di___di_0.0.1.tgz"; | ||
2115 | url = "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz"; | ||
2116 | sha1 = "806649326ceaa7caa3306d75d985ea2748ba913c"; | ||
2117 | }; | ||
2118 | } | ||
2119 | |||
2120 | { | ||
2121 | name = "doctypes___doctypes_1.1.0.tgz"; | ||
2122 | path = fetchurl { | ||
2123 | name = "doctypes___doctypes_1.1.0.tgz"; | ||
2124 | url = "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz"; | ||
2125 | sha1 = "ea80b106a87538774e8a3a4a5afe293de489e0a9"; | ||
2126 | }; | ||
2127 | } | ||
2128 | |||
2129 | { | ||
2130 | name = "dom_serialize___dom_serialize_2.2.1.tgz"; | ||
2131 | path = fetchurl { | ||
2132 | name = "dom_serialize___dom_serialize_2.2.1.tgz"; | ||
2133 | url = "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz"; | ||
2134 | sha1 = "562ae8999f44be5ea3076f5419dcd59eb43ac95b"; | ||
2135 | }; | ||
2136 | } | ||
2137 | |||
2138 | { | ||
2139 | name = "domain_browser___domain_browser_1.1.7.tgz"; | ||
2140 | path = fetchurl { | ||
2141 | name = "domain_browser___domain_browser_1.1.7.tgz"; | ||
2142 | url = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz"; | ||
2143 | sha1 = "867aa4b093faa05f1de08c06f4d7b21fdf8698bc"; | ||
2144 | }; | ||
2145 | } | ||
2146 | |||
2147 | { | ||
2148 | name = "duplexer2___duplexer2_0.0.2.tgz"; | ||
2149 | path = fetchurl { | ||
2150 | name = "duplexer2___duplexer2_0.0.2.tgz"; | ||
2151 | url = "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz"; | ||
2152 | sha1 = "c614dcf67e2fb14995a91711e5a617e8a60a31db"; | ||
2153 | }; | ||
2154 | } | ||
2155 | |||
2156 | { | ||
2157 | name = "duplexer___duplexer_0.1.1.tgz"; | ||
2158 | path = fetchurl { | ||
2159 | name = "duplexer___duplexer_0.1.1.tgz"; | ||
2160 | url = "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz"; | ||
2161 | sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1"; | ||
2162 | }; | ||
2163 | } | ||
2164 | |||
2165 | { | ||
2166 | name = "duplexify___duplexify_3.7.1.tgz"; | ||
2167 | path = fetchurl { | ||
2168 | name = "duplexify___duplexify_3.7.1.tgz"; | ||
2169 | url = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz"; | ||
2170 | sha1 = "2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"; | ||
2171 | }; | ||
2172 | } | ||
2173 | |||
2174 | { | ||
2175 | name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz"; | ||
2176 | path = fetchurl { | ||
2177 | name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz"; | ||
2178 | url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"; | ||
2179 | sha1 = "3a83a904e54353287874c564b7549386849a98c9"; | ||
2180 | }; | ||
2181 | } | ||
2182 | |||
2183 | { | ||
2184 | name = "ee_first___ee_first_1.1.1.tgz"; | ||
2185 | path = fetchurl { | ||
2186 | name = "ee_first___ee_first_1.1.1.tgz"; | ||
2187 | url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz"; | ||
2188 | sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d"; | ||
2189 | }; | ||
2190 | } | ||
2191 | |||
2192 | { | ||
2193 | name = "encodeurl___encodeurl_1.0.2.tgz"; | ||
2194 | path = fetchurl { | ||
2195 | name = "encodeurl___encodeurl_1.0.2.tgz"; | ||
2196 | url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz"; | ||
2197 | sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"; | ||
2198 | }; | ||
2199 | } | ||
2200 | |||
2201 | { | ||
2202 | name = "end_of_stream___end_of_stream_1.4.4.tgz"; | ||
2203 | path = fetchurl { | ||
2204 | name = "end_of_stream___end_of_stream_1.4.4.tgz"; | ||
2205 | url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz"; | ||
2206 | sha1 = "5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"; | ||
2207 | }; | ||
2208 | } | ||
2209 | |||
2210 | { | ||
2211 | name = "end_of_stream___end_of_stream_0.1.5.tgz"; | ||
2212 | path = fetchurl { | ||
2213 | name = "end_of_stream___end_of_stream_0.1.5.tgz"; | ||
2214 | url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz"; | ||
2215 | sha1 = "8e177206c3c80837d85632e8b9359dfe8b2f6eaf"; | ||
2216 | }; | ||
2217 | } | ||
2218 | |||
2219 | { | ||
2220 | name = "engine.io_client___engine.io_client_1.8.5.tgz"; | ||
2221 | path = fetchurl { | ||
2222 | name = "engine.io_client___engine.io_client_1.8.5.tgz"; | ||
2223 | url = "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.5.tgz"; | ||
2224 | sha1 = "fe7fb60cb0dcf2fa2859489329cb5968dedeb11f"; | ||
2225 | }; | ||
2226 | } | ||
2227 | |||
2228 | { | ||
2229 | name = "engine.io_parser___engine.io_parser_1.3.2.tgz"; | ||
2230 | path = fetchurl { | ||
2231 | name = "engine.io_parser___engine.io_parser_1.3.2.tgz"; | ||
2232 | url = "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz"; | ||
2233 | sha1 = "937b079f0007d0893ec56d46cb220b8cb435220a"; | ||
2234 | }; | ||
2235 | } | ||
2236 | |||
2237 | { | ||
2238 | name = "engine.io___engine.io_1.8.5.tgz"; | ||
2239 | path = fetchurl { | ||
2240 | name = "engine.io___engine.io_1.8.5.tgz"; | ||
2241 | url = "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.5.tgz"; | ||
2242 | sha1 = "4ebe5e75c6dc123dee4afdce6e5fdced21eb93f6"; | ||
2243 | }; | ||
2244 | } | ||
2245 | |||
2246 | { | ||
2247 | name = "ent___ent_2.2.0.tgz"; | ||
2248 | path = fetchurl { | ||
2249 | name = "ent___ent_2.2.0.tgz"; | ||
2250 | url = "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz"; | ||
2251 | sha1 = "e964219325a21d05f44466a2f686ed6ce5f5dd1d"; | ||
2252 | }; | ||
2253 | } | ||
2254 | |||
2255 | { | ||
2256 | name = "error_ex___error_ex_1.3.2.tgz"; | ||
2257 | path = fetchurl { | ||
2258 | name = "error_ex___error_ex_1.3.2.tgz"; | ||
2259 | url = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz"; | ||
2260 | sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf"; | ||
2261 | }; | ||
2262 | } | ||
2263 | |||
2264 | { | ||
2265 | name = "es5_ext___es5_ext_0.10.53.tgz"; | ||
2266 | path = fetchurl { | ||
2267 | name = "es5_ext___es5_ext_0.10.53.tgz"; | ||
2268 | url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz"; | ||
2269 | sha1 = "93c5a3acfdbef275220ad72644ad02ee18368de1"; | ||
2270 | }; | ||
2271 | } | ||
2272 | |||
2273 | { | ||
2274 | name = "es5_ext___es5_ext_0.9.2.tgz"; | ||
2275 | path = fetchurl { | ||
2276 | name = "es5_ext___es5_ext_0.9.2.tgz"; | ||
2277 | url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.9.2.tgz"; | ||
2278 | sha1 = "d2e309d1f223b0718648835acf5b8823a8061f8a"; | ||
2279 | }; | ||
2280 | } | ||
2281 | |||
2282 | { | ||
2283 | name = "es6_iterator___es6_iterator_0.1.3.tgz"; | ||
2284 | path = fetchurl { | ||
2285 | name = "es6_iterator___es6_iterator_0.1.3.tgz"; | ||
2286 | url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-0.1.3.tgz"; | ||
2287 | sha1 = "d6f58b8c4fc413c249b4baa19768f8e4d7c8944e"; | ||
2288 | }; | ||
2289 | } | ||
2290 | |||
2291 | { | ||
2292 | name = "es6_iterator___es6_iterator_2.0.3.tgz"; | ||
2293 | path = fetchurl { | ||
2294 | name = "es6_iterator___es6_iterator_2.0.3.tgz"; | ||
2295 | url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz"; | ||
2296 | sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7"; | ||
2297 | }; | ||
2298 | } | ||
2299 | |||
2300 | { | ||
2301 | name = "es6_symbol___es6_symbol_3.1.3.tgz"; | ||
2302 | path = fetchurl { | ||
2303 | name = "es6_symbol___es6_symbol_3.1.3.tgz"; | ||
2304 | url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz"; | ||
2305 | sha1 = "bad5d3c1bcdac28269f4cb331e431c78ac705d18"; | ||
2306 | }; | ||
2307 | } | ||
2308 | |||
2309 | { | ||
2310 | name = "es6_symbol___es6_symbol_2.0.1.tgz"; | ||
2311 | path = fetchurl { | ||
2312 | name = "es6_symbol___es6_symbol_2.0.1.tgz"; | ||
2313 | url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-2.0.1.tgz"; | ||
2314 | sha1 = "761b5c67cfd4f1d18afb234f691d678682cb3bf3"; | ||
2315 | }; | ||
2316 | } | ||
2317 | |||
2318 | { | ||
2319 | name = "es6_weak_map___es6_weak_map_0.1.4.tgz"; | ||
2320 | path = fetchurl { | ||
2321 | name = "es6_weak_map___es6_weak_map_0.1.4.tgz"; | ||
2322 | url = "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-0.1.4.tgz"; | ||
2323 | sha1 = "706cef9e99aa236ba7766c239c8b9e286ea7d228"; | ||
2324 | }; | ||
2325 | } | ||
2326 | |||
2327 | { | ||
2328 | name = "escape_html___escape_html_1.0.3.tgz"; | ||
2329 | path = fetchurl { | ||
2330 | name = "escape_html___escape_html_1.0.3.tgz"; | ||
2331 | url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz"; | ||
2332 | sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988"; | ||
2333 | }; | ||
2334 | } | ||
2335 | |||
2336 | { | ||
2337 | name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz"; | ||
2338 | path = fetchurl { | ||
2339 | name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz"; | ||
2340 | url = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"; | ||
2341 | sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"; | ||
2342 | }; | ||
2343 | } | ||
2344 | |||
2345 | { | ||
2346 | name = "escodegen___escodegen_1.8.1.tgz"; | ||
2347 | path = fetchurl { | ||
2348 | name = "escodegen___escodegen_1.8.1.tgz"; | ||
2349 | url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz"; | ||
2350 | sha1 = "5a5b53af4693110bebb0867aa3430dd3b70a1018"; | ||
2351 | }; | ||
2352 | } | ||
2353 | |||
2354 | { | ||
2355 | name = "escodegen___escodegen_1.1.0.tgz"; | ||
2356 | path = fetchurl { | ||
2357 | name = "escodegen___escodegen_1.1.0.tgz"; | ||
2358 | url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.1.0.tgz"; | ||
2359 | sha1 = "c663923f6e20aad48d0c0fa49f31c6d4f49360cf"; | ||
2360 | }; | ||
2361 | } | ||
2362 | |||
2363 | { | ||
2364 | name = "escope___escope_0.0.16.tgz"; | ||
2365 | path = fetchurl { | ||
2366 | name = "escope___escope_0.0.16.tgz"; | ||
2367 | url = "https://registry.yarnpkg.com/escope/-/escope-0.0.16.tgz"; | ||
2368 | sha1 = "418c7a0afca721dafe659193fd986283e746538f"; | ||
2369 | }; | ||
2370 | } | ||
2371 | |||
2372 | { | ||
2373 | name = "esprima_fb___esprima_fb_3001.0001.0000_dev_harmony_fb.tgz"; | ||
2374 | path = fetchurl { | ||
2375 | name = "esprima_fb___esprima_fb_3001.0001.0000_dev_harmony_fb.tgz"; | ||
2376 | url = "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz"; | ||
2377 | sha1 = "b77d37abcd38ea0b77426bb8bc2922ce6b426411"; | ||
2378 | }; | ||
2379 | } | ||
2380 | |||
2381 | { | ||
2382 | name = "esprima___esprima_2.7.3.tgz"; | ||
2383 | path = fetchurl { | ||
2384 | name = "esprima___esprima_2.7.3.tgz"; | ||
2385 | url = "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz"; | ||
2386 | sha1 = "96e3b70d5779f6ad49cd032673d1c312767ba581"; | ||
2387 | }; | ||
2388 | } | ||
2389 | |||
2390 | { | ||
2391 | name = "esprima___esprima_4.0.1.tgz"; | ||
2392 | path = fetchurl { | ||
2393 | name = "esprima___esprima_4.0.1.tgz"; | ||
2394 | url = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz"; | ||
2395 | sha1 = "13b04cdb3e6c5d19df91ab6987a8695619b0aa71"; | ||
2396 | }; | ||
2397 | } | ||
2398 | |||
2399 | { | ||
2400 | name = "esprima___esprima_1.0.4.tgz"; | ||
2401 | path = fetchurl { | ||
2402 | name = "esprima___esprima_1.0.4.tgz"; | ||
2403 | url = "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz"; | ||
2404 | sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad"; | ||
2405 | }; | ||
2406 | } | ||
2407 | |||
2408 | { | ||
2409 | name = "esrefactor___esrefactor_0.1.0.tgz"; | ||
2410 | path = fetchurl { | ||
2411 | name = "esrefactor___esrefactor_0.1.0.tgz"; | ||
2412 | url = "https://registry.yarnpkg.com/esrefactor/-/esrefactor-0.1.0.tgz"; | ||
2413 | sha1 = "d142795a282339ab81e936b5b7a21b11bf197b13"; | ||
2414 | }; | ||
2415 | } | ||
2416 | |||
2417 | { | ||
2418 | name = "estraverse___estraverse_5.0.0.tgz"; | ||
2419 | path = fetchurl { | ||
2420 | name = "estraverse___estraverse_5.0.0.tgz"; | ||
2421 | url = "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz"; | ||
2422 | sha1 = "ac81750b482c11cca26e4b07e83ed8f75fbcdc22"; | ||
2423 | }; | ||
2424 | } | ||
2425 | |||
2426 | { | ||
2427 | name = "estraverse___estraverse_1.9.3.tgz"; | ||
2428 | path = fetchurl { | ||
2429 | name = "estraverse___estraverse_1.9.3.tgz"; | ||
2430 | url = "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz"; | ||
2431 | sha1 = "af67f2dc922582415950926091a4005d29c9bb44"; | ||
2432 | }; | ||
2433 | } | ||
2434 | |||
2435 | { | ||
2436 | name = "estraverse___estraverse_0.0.4.tgz"; | ||
2437 | path = fetchurl { | ||
2438 | name = "estraverse___estraverse_0.0.4.tgz"; | ||
2439 | url = "https://registry.yarnpkg.com/estraverse/-/estraverse-0.0.4.tgz"; | ||
2440 | sha1 = "01a0932dfee574684a598af5a67c3bf9b6428db2"; | ||
2441 | }; | ||
2442 | } | ||
2443 | |||
2444 | { | ||
2445 | name = "estraverse___estraverse_1.5.1.tgz"; | ||
2446 | path = fetchurl { | ||
2447 | name = "estraverse___estraverse_1.5.1.tgz"; | ||
2448 | url = "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz"; | ||
2449 | sha1 = "867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71"; | ||
2450 | }; | ||
2451 | } | ||
2452 | |||
2453 | { | ||
2454 | name = "esutils___esutils_2.0.3.tgz"; | ||
2455 | path = fetchurl { | ||
2456 | name = "esutils___esutils_2.0.3.tgz"; | ||
2457 | url = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz"; | ||
2458 | sha1 = "74d2eb4de0b8da1293711910d50775b9b710ef64"; | ||
2459 | }; | ||
2460 | } | ||
2461 | |||
2462 | { | ||
2463 | name = "esutils___esutils_1.0.0.tgz"; | ||
2464 | path = fetchurl { | ||
2465 | name = "esutils___esutils_1.0.0.tgz"; | ||
2466 | url = "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz"; | ||
2467 | sha1 = "8151d358e20c8acc7fb745e7472c0025fe496570"; | ||
2468 | }; | ||
2469 | } | ||
2470 | |||
2471 | { | ||
2472 | name = "etag___etag_1.7.0.tgz"; | ||
2473 | path = fetchurl { | ||
2474 | name = "etag___etag_1.7.0.tgz"; | ||
2475 | url = "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz"; | ||
2476 | sha1 = "03d30b5f67dd6e632d2945d30d6652731a34d5d8"; | ||
2477 | }; | ||
2478 | } | ||
2479 | |||
2480 | { | ||
2481 | name = "event_emitter___event_emitter_0.2.2.tgz"; | ||
2482 | path = fetchurl { | ||
2483 | name = "event_emitter___event_emitter_0.2.2.tgz"; | ||
2484 | url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.2.2.tgz"; | ||
2485 | sha1 = "c81e3724eb55407c5a0d5ee3299411f700f54291"; | ||
2486 | }; | ||
2487 | } | ||
2488 | |||
2489 | { | ||
2490 | name = "event_emitter___event_emitter_0.3.5.tgz"; | ||
2491 | path = fetchurl { | ||
2492 | name = "event_emitter___event_emitter_0.3.5.tgz"; | ||
2493 | url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz"; | ||
2494 | sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39"; | ||
2495 | }; | ||
2496 | } | ||
2497 | |||
2498 | { | ||
2499 | name = "event_stream___event_stream_4.0.1.tgz"; | ||
2500 | path = fetchurl { | ||
2501 | name = "event_stream___event_stream_4.0.1.tgz"; | ||
2502 | url = "https://registry.yarnpkg.com/event-stream/-/event-stream-4.0.1.tgz"; | ||
2503 | sha1 = "4092808ec995d0dd75ea4580c1df6a74db2cde65"; | ||
2504 | }; | ||
2505 | } | ||
2506 | |||
2507 | { | ||
2508 | name = "event_stream___event_stream_3.3.2.tgz"; | ||
2509 | path = fetchurl { | ||
2510 | name = "event_stream___event_stream_3.3.2.tgz"; | ||
2511 | url = "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.2.tgz"; | ||
2512 | sha1 = "3cc310feb1f28d2f62b2a085d736a9ef566378b8"; | ||
2513 | }; | ||
2514 | } | ||
2515 | |||
2516 | { | ||
2517 | name = "event_stream___event_stream_3.3.5.tgz"; | ||
2518 | path = fetchurl { | ||
2519 | name = "event_stream___event_stream_3.3.5.tgz"; | ||
2520 | url = "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.5.tgz"; | ||
2521 | sha1 = "e5dd8989543630d94c6cf4d657120341fa31636b"; | ||
2522 | }; | ||
2523 | } | ||
2524 | |||
2525 | { | ||
2526 | name = "eventemitter3___eventemitter3_4.0.0.tgz"; | ||
2527 | path = fetchurl { | ||
2528 | name = "eventemitter3___eventemitter3_4.0.0.tgz"; | ||
2529 | url = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz"; | ||
2530 | sha1 = "d65176163887ee59f386d64c82610b696a4a74eb"; | ||
2531 | }; | ||
2532 | } | ||
2533 | |||
2534 | { | ||
2535 | name = "events___events_1.0.2.tgz"; | ||
2536 | path = fetchurl { | ||
2537 | name = "events___events_1.0.2.tgz"; | ||
2538 | url = "https://registry.yarnpkg.com/events/-/events-1.0.2.tgz"; | ||
2539 | sha1 = "75849dcfe93d10fb057c30055afdbd51d06a8e24"; | ||
2540 | }; | ||
2541 | } | ||
2542 | |||
2543 | { | ||
2544 | name = "expand_braces___expand_braces_0.1.2.tgz"; | ||
2545 | path = fetchurl { | ||
2546 | name = "expand_braces___expand_braces_0.1.2.tgz"; | ||
2547 | url = "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz"; | ||
2548 | sha1 = "488b1d1d2451cb3d3a6b192cfc030f44c5855fea"; | ||
2549 | }; | ||
2550 | } | ||
2551 | |||
2552 | { | ||
2553 | name = "expand_brackets___expand_brackets_0.1.5.tgz"; | ||
2554 | path = fetchurl { | ||
2555 | name = "expand_brackets___expand_brackets_0.1.5.tgz"; | ||
2556 | url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz"; | ||
2557 | sha1 = "df07284e342a807cd733ac5af72411e581d1177b"; | ||
2558 | }; | ||
2559 | } | ||
2560 | |||
2561 | { | ||
2562 | name = "expand_brackets___expand_brackets_2.1.4.tgz"; | ||
2563 | path = fetchurl { | ||
2564 | name = "expand_brackets___expand_brackets_2.1.4.tgz"; | ||
2565 | url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz"; | ||
2566 | sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622"; | ||
2567 | }; | ||
2568 | } | ||
2569 | |||
2570 | { | ||
2571 | name = "expand_range___expand_range_0.1.1.tgz"; | ||
2572 | path = fetchurl { | ||
2573 | name = "expand_range___expand_range_0.1.1.tgz"; | ||
2574 | url = "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz"; | ||
2575 | sha1 = "4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044"; | ||
2576 | }; | ||
2577 | } | ||
2578 | |||
2579 | { | ||
2580 | name = "expand_range___expand_range_1.8.2.tgz"; | ||
2581 | path = fetchurl { | ||
2582 | name = "expand_range___expand_range_1.8.2.tgz"; | ||
2583 | url = "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz"; | ||
2584 | sha1 = "a299effd335fe2721ebae8e257ec79644fc85337"; | ||
2585 | }; | ||
2586 | } | ||
2587 | |||
2588 | { | ||
2589 | name = "expand_tilde___expand_tilde_2.0.2.tgz"; | ||
2590 | path = fetchurl { | ||
2591 | name = "expand_tilde___expand_tilde_2.0.2.tgz"; | ||
2592 | url = "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz"; | ||
2593 | sha1 = "97e801aa052df02454de46b02bf621642cdc8502"; | ||
2594 | }; | ||
2595 | } | ||
2596 | |||
2597 | { | ||
2598 | name = "ext___ext_1.4.0.tgz"; | ||
2599 | path = fetchurl { | ||
2600 | name = "ext___ext_1.4.0.tgz"; | ||
2601 | url = "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz"; | ||
2602 | sha1 = "89ae7a07158f79d35517882904324077e4379244"; | ||
2603 | }; | ||
2604 | } | ||
2605 | |||
2606 | { | ||
2607 | name = "extend_shallow___extend_shallow_2.0.1.tgz"; | ||
2608 | path = fetchurl { | ||
2609 | name = "extend_shallow___extend_shallow_2.0.1.tgz"; | ||
2610 | url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz"; | ||
2611 | sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f"; | ||
2612 | }; | ||
2613 | } | ||
2614 | |||
2615 | { | ||
2616 | name = "extend_shallow___extend_shallow_3.0.2.tgz"; | ||
2617 | path = fetchurl { | ||
2618 | name = "extend_shallow___extend_shallow_3.0.2.tgz"; | ||
2619 | url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz"; | ||
2620 | sha1 = "26a71aaf073b39fb2127172746131c2704028db8"; | ||
2621 | }; | ||
2622 | } | ||
2623 | |||
2624 | { | ||
2625 | name = "extend___extend_3.0.2.tgz"; | ||
2626 | path = fetchurl { | ||
2627 | name = "extend___extend_3.0.2.tgz"; | ||
2628 | url = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz"; | ||
2629 | sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa"; | ||
2630 | }; | ||
2631 | } | ||
2632 | |||
2633 | { | ||
2634 | name = "extglob___extglob_0.3.2.tgz"; | ||
2635 | path = fetchurl { | ||
2636 | name = "extglob___extglob_0.3.2.tgz"; | ||
2637 | url = "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz"; | ||
2638 | sha1 = "2e18ff3d2f49ab2765cec9023f011daa8d8349a1"; | ||
2639 | }; | ||
2640 | } | ||
2641 | |||
2642 | { | ||
2643 | name = "extglob___extglob_2.0.4.tgz"; | ||
2644 | path = fetchurl { | ||
2645 | name = "extglob___extglob_2.0.4.tgz"; | ||
2646 | url = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz"; | ||
2647 | sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543"; | ||
2648 | }; | ||
2649 | } | ||
2650 | |||
2651 | { | ||
2652 | name = "extsprintf___extsprintf_1.3.0.tgz"; | ||
2653 | path = fetchurl { | ||
2654 | name = "extsprintf___extsprintf_1.3.0.tgz"; | ||
2655 | url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz"; | ||
2656 | sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05"; | ||
2657 | }; | ||
2658 | } | ||
2659 | |||
2660 | { | ||
2661 | name = "extsprintf___extsprintf_1.4.0.tgz"; | ||
2662 | path = fetchurl { | ||
2663 | name = "extsprintf___extsprintf_1.4.0.tgz"; | ||
2664 | url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz"; | ||
2665 | sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f"; | ||
2666 | }; | ||
2667 | } | ||
2668 | |||
2669 | { | ||
2670 | name = "fancy_log___fancy_log_1.3.3.tgz"; | ||
2671 | path = fetchurl { | ||
2672 | name = "fancy_log___fancy_log_1.3.3.tgz"; | ||
2673 | url = "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz"; | ||
2674 | sha1 = "dbc19154f558690150a23953a0adbd035be45fc7"; | ||
2675 | }; | ||
2676 | } | ||
2677 | |||
2678 | { | ||
2679 | name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz"; | ||
2680 | path = fetchurl { | ||
2681 | name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz"; | ||
2682 | url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz"; | ||
2683 | sha1 = "545145077c501491e33b15ec408c294376e94ae4"; | ||
2684 | }; | ||
2685 | } | ||
2686 | |||
2687 | { | ||
2688 | name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz"; | ||
2689 | path = fetchurl { | ||
2690 | name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz"; | ||
2691 | url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"; | ||
2692 | sha1 = "874bf69c6f404c2b5d99c481341399fd55892633"; | ||
2693 | }; | ||
2694 | } | ||
2695 | |||
2696 | { | ||
2697 | name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz"; | ||
2698 | path = fetchurl { | ||
2699 | name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz"; | ||
2700 | url = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"; | ||
2701 | sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917"; | ||
2702 | }; | ||
2703 | } | ||
2704 | |||
2705 | { | ||
2706 | name = "faye_websocket___faye_websocket_0.7.3.tgz"; | ||
2707 | path = fetchurl { | ||
2708 | name = "faye_websocket___faye_websocket_0.7.3.tgz"; | ||
2709 | url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.7.3.tgz"; | ||
2710 | sha1 = "cc4074c7f4a4dfd03af54dd65c354b135132ce11"; | ||
2711 | }; | ||
2712 | } | ||
2713 | |||
2714 | { | ||
2715 | name = "file_uri_to_path___file_uri_to_path_1.0.0.tgz"; | ||
2716 | path = fetchurl { | ||
2717 | name = "file_uri_to_path___file_uri_to_path_1.0.0.tgz"; | ||
2718 | url = "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"; | ||
2719 | sha1 = "553a7b8446ff6f684359c445f1e37a05dacc33dd"; | ||
2720 | }; | ||
2721 | } | ||
2722 | |||
2723 | { | ||
2724 | name = "filename_regex___filename_regex_2.0.1.tgz"; | ||
2725 | path = fetchurl { | ||
2726 | name = "filename_regex___filename_regex_2.0.1.tgz"; | ||
2727 | url = "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz"; | ||
2728 | sha1 = "c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"; | ||
2729 | }; | ||
2730 | } | ||
2731 | |||
2732 | { | ||
2733 | name = "fill_range___fill_range_2.2.4.tgz"; | ||
2734 | path = fetchurl { | ||
2735 | name = "fill_range___fill_range_2.2.4.tgz"; | ||
2736 | url = "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz"; | ||
2737 | sha1 = "eb1e773abb056dcd8df2bfdf6af59b8b3a936565"; | ||
2738 | }; | ||
2739 | } | ||
2740 | |||
2741 | { | ||
2742 | name = "fill_range___fill_range_4.0.0.tgz"; | ||
2743 | path = fetchurl { | ||
2744 | name = "fill_range___fill_range_4.0.0.tgz"; | ||
2745 | url = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz"; | ||
2746 | sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7"; | ||
2747 | }; | ||
2748 | } | ||
2749 | |||
2750 | { | ||
2751 | name = "finalhandler___finalhandler_1.1.2.tgz"; | ||
2752 | path = fetchurl { | ||
2753 | name = "finalhandler___finalhandler_1.1.2.tgz"; | ||
2754 | url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz"; | ||
2755 | sha1 = "b7e7d000ffd11938d0fdb053506f6ebabe9f587d"; | ||
2756 | }; | ||
2757 | } | ||
2758 | |||
2759 | { | ||
2760 | name = "find_index___find_index_0.1.1.tgz"; | ||
2761 | path = fetchurl { | ||
2762 | name = "find_index___find_index_0.1.1.tgz"; | ||
2763 | url = "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz"; | ||
2764 | sha1 = "675d358b2ca3892d795a1ab47232f8b6e2e0dde4"; | ||
2765 | }; | ||
2766 | } | ||
2767 | |||
2768 | { | ||
2769 | name = "find_up___find_up_1.1.2.tgz"; | ||
2770 | path = fetchurl { | ||
2771 | name = "find_up___find_up_1.1.2.tgz"; | ||
2772 | url = "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz"; | ||
2773 | sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"; | ||
2774 | }; | ||
2775 | } | ||
2776 | |||
2777 | { | ||
2778 | name = "findup_sync___findup_sync_2.0.0.tgz"; | ||
2779 | path = fetchurl { | ||
2780 | name = "findup_sync___findup_sync_2.0.0.tgz"; | ||
2781 | url = "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz"; | ||
2782 | sha1 = "9326b1488c22d1a6088650a86901b2d9a90a2cbc"; | ||
2783 | }; | ||
2784 | } | ||
2785 | |||
2786 | { | ||
2787 | name = "fined___fined_1.2.0.tgz"; | ||
2788 | path = fetchurl { | ||
2789 | name = "fined___fined_1.2.0.tgz"; | ||
2790 | url = "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz"; | ||
2791 | sha1 = "d00beccf1aa2b475d16d423b0238b713a2c4a37b"; | ||
2792 | }; | ||
2793 | } | ||
2794 | |||
2795 | { | ||
2796 | name = "first_chunk_stream___first_chunk_stream_1.0.0.tgz"; | ||
2797 | path = fetchurl { | ||
2798 | name = "first_chunk_stream___first_chunk_stream_1.0.0.tgz"; | ||
2799 | url = "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz"; | ||
2800 | sha1 = "59bfb50cd905f60d7c394cd3d9acaab4e6ad934e"; | ||
2801 | }; | ||
2802 | } | ||
2803 | |||
2804 | { | ||
2805 | name = "fixtures2js___fixtures2js_0.0.0.tgz"; | ||
2806 | path = fetchurl { | ||
2807 | name = "fixtures2js___fixtures2js_0.0.0.tgz"; | ||
2808 | url = "https://registry.yarnpkg.com/fixtures2js/-/fixtures2js-0.0.0.tgz"; | ||
2809 | sha1 = "602f7964c5b2963fe73224c8e4a3607d75c1b34f"; | ||
2810 | }; | ||
2811 | } | ||
2812 | |||
2813 | { | ||
2814 | name = "flagged_respawn___flagged_respawn_1.0.1.tgz"; | ||
2815 | path = fetchurl { | ||
2816 | name = "flagged_respawn___flagged_respawn_1.0.1.tgz"; | ||
2817 | url = "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz"; | ||
2818 | sha1 = "e7de6f1279ddd9ca9aac8a5971d618606b3aab41"; | ||
2819 | }; | ||
2820 | } | ||
2821 | |||
2822 | { | ||
2823 | name = "follow_redirects___follow_redirects_1.11.0.tgz"; | ||
2824 | path = fetchurl { | ||
2825 | name = "follow_redirects___follow_redirects_1.11.0.tgz"; | ||
2826 | url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz"; | ||
2827 | sha1 = "afa14f08ba12a52963140fe43212658897bc0ecb"; | ||
2828 | }; | ||
2829 | } | ||
2830 | |||
2831 | { | ||
2832 | name = "for_in___for_in_1.0.2.tgz"; | ||
2833 | path = fetchurl { | ||
2834 | name = "for_in___for_in_1.0.2.tgz"; | ||
2835 | url = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz"; | ||
2836 | sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80"; | ||
2837 | }; | ||
2838 | } | ||
2839 | |||
2840 | { | ||
2841 | name = "for_own___for_own_0.1.5.tgz"; | ||
2842 | path = fetchurl { | ||
2843 | name = "for_own___for_own_0.1.5.tgz"; | ||
2844 | url = "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz"; | ||
2845 | sha1 = "5265c681a4f294dabbf17c9509b6763aa84510ce"; | ||
2846 | }; | ||
2847 | } | ||
2848 | |||
2849 | { | ||
2850 | name = "for_own___for_own_1.0.0.tgz"; | ||
2851 | path = fetchurl { | ||
2852 | name = "for_own___for_own_1.0.0.tgz"; | ||
2853 | url = "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz"; | ||
2854 | sha1 = "c63332f415cedc4b04dbfe70cf836494c53cb44b"; | ||
2855 | }; | ||
2856 | } | ||
2857 | |||
2858 | { | ||
2859 | name = "forever_agent___forever_agent_0.5.2.tgz"; | ||
2860 | path = fetchurl { | ||
2861 | name = "forever_agent___forever_agent_0.5.2.tgz"; | ||
2862 | url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.5.2.tgz"; | ||
2863 | sha1 = "6d0e09c4921f94a27f63d3b49c5feff1ea4c5130"; | ||
2864 | }; | ||
2865 | } | ||
2866 | |||
2867 | { | ||
2868 | name = "forever_agent___forever_agent_0.6.1.tgz"; | ||
2869 | path = fetchurl { | ||
2870 | name = "forever_agent___forever_agent_0.6.1.tgz"; | ||
2871 | url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz"; | ||
2872 | sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"; | ||
2873 | }; | ||
2874 | } | ||
2875 | |||
2876 | { | ||
2877 | name = "fork_stream___fork_stream_0.0.4.tgz"; | ||
2878 | path = fetchurl { | ||
2879 | name = "fork_stream___fork_stream_0.0.4.tgz"; | ||
2880 | url = "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz"; | ||
2881 | sha1 = "db849fce77f6708a5f8f386ae533a0907b54ae70"; | ||
2882 | }; | ||
2883 | } | ||
2884 | |||
2885 | { | ||
2886 | name = "form_data___form_data_0.1.4.tgz"; | ||
2887 | path = fetchurl { | ||
2888 | name = "form_data___form_data_0.1.4.tgz"; | ||
2889 | url = "https://registry.yarnpkg.com/form-data/-/form-data-0.1.4.tgz"; | ||
2890 | sha1 = "91abd788aba9702b1aabfa8bc01031a2ac9e3b12"; | ||
2891 | }; | ||
2892 | } | ||
2893 | |||
2894 | { | ||
2895 | name = "form_data___form_data_0.2.0.tgz"; | ||
2896 | path = fetchurl { | ||
2897 | name = "form_data___form_data_0.2.0.tgz"; | ||
2898 | url = "https://registry.yarnpkg.com/form-data/-/form-data-0.2.0.tgz"; | ||
2899 | sha1 = "26f8bc26da6440e299cbdcfb69035c4f77a6e466"; | ||
2900 | }; | ||
2901 | } | ||
2902 | |||
2903 | { | ||
2904 | name = "form_data___form_data_2.3.3.tgz"; | ||
2905 | path = fetchurl { | ||
2906 | name = "form_data___form_data_2.3.3.tgz"; | ||
2907 | url = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz"; | ||
2908 | sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6"; | ||
2909 | }; | ||
2910 | } | ||
2911 | |||
2912 | { | ||
2913 | name = "fragment_cache___fragment_cache_0.2.1.tgz"; | ||
2914 | path = fetchurl { | ||
2915 | name = "fragment_cache___fragment_cache_0.2.1.tgz"; | ||
2916 | url = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz"; | ||
2917 | sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19"; | ||
2918 | }; | ||
2919 | } | ||
2920 | |||
2921 | { | ||
2922 | name = "fresh___fresh_0.3.0.tgz"; | ||
2923 | path = fetchurl { | ||
2924 | name = "fresh___fresh_0.3.0.tgz"; | ||
2925 | url = "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz"; | ||
2926 | sha1 = "651f838e22424e7566de161d8358caa199f83d4f"; | ||
2927 | }; | ||
2928 | } | ||
2929 | |||
2930 | { | ||
2931 | name = "from___from_0.1.7.tgz"; | ||
2932 | path = fetchurl { | ||
2933 | name = "from___from_0.1.7.tgz"; | ||
2934 | url = "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz"; | ||
2935 | sha1 = "83c60afc58b9c56997007ed1a768b3ab303a44fe"; | ||
2936 | }; | ||
2937 | } | ||
2938 | |||
2939 | { | ||
2940 | name = "fs_access___fs_access_1.0.1.tgz"; | ||
2941 | path = fetchurl { | ||
2942 | name = "fs_access___fs_access_1.0.1.tgz"; | ||
2943 | url = "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz"; | ||
2944 | sha1 = "d6a87f262271cefebec30c553407fb995da8777a"; | ||
2945 | }; | ||
2946 | } | ||
2947 | |||
2948 | { | ||
2949 | name = "fs_minipass___fs_minipass_1.2.7.tgz"; | ||
2950 | path = fetchurl { | ||
2951 | name = "fs_minipass___fs_minipass_1.2.7.tgz"; | ||
2952 | url = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz"; | ||
2953 | sha1 = "ccff8570841e7fe4265693da88936c55aed7f7c7"; | ||
2954 | }; | ||
2955 | } | ||
2956 | |||
2957 | { | ||
2958 | name = "fs.realpath___fs.realpath_1.0.0.tgz"; | ||
2959 | path = fetchurl { | ||
2960 | name = "fs.realpath___fs.realpath_1.0.0.tgz"; | ||
2961 | url = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz"; | ||
2962 | sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f"; | ||
2963 | }; | ||
2964 | } | ||
2965 | |||
2966 | { | ||
2967 | name = "fsevents___fsevents_1.2.12.tgz"; | ||
2968 | path = fetchurl { | ||
2969 | name = "fsevents___fsevents_1.2.12.tgz"; | ||
2970 | url = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz"; | ||
2971 | sha1 = "db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c"; | ||
2972 | }; | ||
2973 | } | ||
2974 | |||
2975 | { | ||
2976 | name = "fstream_ignore___fstream_ignore_0.0.10.tgz"; | ||
2977 | path = fetchurl { | ||
2978 | name = "fstream_ignore___fstream_ignore_0.0.10.tgz"; | ||
2979 | url = "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-0.0.10.tgz"; | ||
2980 | sha1 = "b10f8f522cc55415f80b41f7d3a32e6cba254e8c"; | ||
2981 | }; | ||
2982 | } | ||
2983 | |||
2984 | { | ||
2985 | name = "fstream___fstream_1.0.12.tgz"; | ||
2986 | path = fetchurl { | ||
2987 | name = "fstream___fstream_1.0.12.tgz"; | ||
2988 | url = "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz"; | ||
2989 | sha1 = "4e8ba8ee2d48be4f7d0de505455548eae5932045"; | ||
2990 | }; | ||
2991 | } | ||
2992 | |||
2993 | { | ||
2994 | name = "fstream___fstream_0.1.31.tgz"; | ||
2995 | path = fetchurl { | ||
2996 | name = "fstream___fstream_0.1.31.tgz"; | ||
2997 | url = "https://registry.yarnpkg.com/fstream/-/fstream-0.1.31.tgz"; | ||
2998 | sha1 = "7337f058fbbbbefa8c9f561a28cab0849202c988"; | ||
2999 | }; | ||
3000 | } | ||
3001 | |||
3002 | { | ||
3003 | name = "function_bind___function_bind_1.1.1.tgz"; | ||
3004 | path = fetchurl { | ||
3005 | name = "function_bind___function_bind_1.1.1.tgz"; | ||
3006 | url = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz"; | ||
3007 | sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d"; | ||
3008 | }; | ||
3009 | } | ||
3010 | |||
3011 | { | ||
3012 | name = "gauge___gauge_2.7.4.tgz"; | ||
3013 | path = fetchurl { | ||
3014 | name = "gauge___gauge_2.7.4.tgz"; | ||
3015 | url = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz"; | ||
3016 | sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7"; | ||
3017 | }; | ||
3018 | } | ||
3019 | |||
3020 | { | ||
3021 | name = "gaze___gaze_0.5.2.tgz"; | ||
3022 | path = fetchurl { | ||
3023 | name = "gaze___gaze_0.5.2.tgz"; | ||
3024 | url = "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz"; | ||
3025 | sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f"; | ||
3026 | }; | ||
3027 | } | ||
3028 | |||
3029 | { | ||
3030 | name = "gaze___gaze_1.1.3.tgz"; | ||
3031 | path = fetchurl { | ||
3032 | name = "gaze___gaze_1.1.3.tgz"; | ||
3033 | url = "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz"; | ||
3034 | sha1 = "c441733e13b927ac8c0ff0b4c3b033f28812924a"; | ||
3035 | }; | ||
3036 | } | ||
3037 | |||
3038 | { | ||
3039 | name = "get_caller_file___get_caller_file_1.0.3.tgz"; | ||
3040 | path = fetchurl { | ||
3041 | name = "get_caller_file___get_caller_file_1.0.3.tgz"; | ||
3042 | url = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz"; | ||
3043 | sha1 = "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"; | ||
3044 | }; | ||
3045 | } | ||
3046 | |||
3047 | { | ||
3048 | name = "get_stdin___get_stdin_4.0.1.tgz"; | ||
3049 | path = fetchurl { | ||
3050 | name = "get_stdin___get_stdin_4.0.1.tgz"; | ||
3051 | url = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz"; | ||
3052 | sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe"; | ||
3053 | }; | ||
3054 | } | ||
3055 | |||
3056 | { | ||
3057 | name = "get_value___get_value_2.0.6.tgz"; | ||
3058 | path = fetchurl { | ||
3059 | name = "get_value___get_value_2.0.6.tgz"; | ||
3060 | url = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz"; | ||
3061 | sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28"; | ||
3062 | }; | ||
3063 | } | ||
3064 | |||
3065 | { | ||
3066 | name = "getpass___getpass_0.1.7.tgz"; | ||
3067 | path = fetchurl { | ||
3068 | name = "getpass___getpass_0.1.7.tgz"; | ||
3069 | url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz"; | ||
3070 | sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa"; | ||
3071 | }; | ||
3072 | } | ||
3073 | |||
3074 | { | ||
3075 | name = "glob_base___glob_base_0.3.0.tgz"; | ||
3076 | path = fetchurl { | ||
3077 | name = "glob_base___glob_base_0.3.0.tgz"; | ||
3078 | url = "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz"; | ||
3079 | sha1 = "dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"; | ||
3080 | }; | ||
3081 | } | ||
3082 | |||
3083 | { | ||
3084 | name = "glob_parent___glob_parent_2.0.0.tgz"; | ||
3085 | path = fetchurl { | ||
3086 | name = "glob_parent___glob_parent_2.0.0.tgz"; | ||
3087 | url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz"; | ||
3088 | sha1 = "81383d72db054fcccf5336daa902f182f6edbb28"; | ||
3089 | }; | ||
3090 | } | ||
3091 | |||
3092 | { | ||
3093 | name = "glob_stream___glob_stream_3.1.18.tgz"; | ||
3094 | path = fetchurl { | ||
3095 | name = "glob_stream___glob_stream_3.1.18.tgz"; | ||
3096 | url = "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz"; | ||
3097 | sha1 = "9170a5f12b790306fdfe598f313f8f7954fd143b"; | ||
3098 | }; | ||
3099 | } | ||
3100 | |||
3101 | { | ||
3102 | name = "glob_watcher___glob_watcher_0.0.6.tgz"; | ||
3103 | path = fetchurl { | ||
3104 | name = "glob_watcher___glob_watcher_0.0.6.tgz"; | ||
3105 | url = "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz"; | ||
3106 | sha1 = "b95b4a8df74b39c83298b0c05c978b4d9a3b710b"; | ||
3107 | }; | ||
3108 | } | ||
3109 | |||
3110 | { | ||
3111 | name = "glob2base___glob2base_0.0.12.tgz"; | ||
3112 | path = fetchurl { | ||
3113 | name = "glob2base___glob2base_0.0.12.tgz"; | ||
3114 | url = "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz"; | ||
3115 | sha1 = "9d419b3e28f12e83a362164a277055922c9c0d56"; | ||
3116 | }; | ||
3117 | } | ||
3118 | |||
3119 | { | ||
3120 | name = "glob___glob_4.5.3.tgz"; | ||
3121 | path = fetchurl { | ||
3122 | name = "glob___glob_4.5.3.tgz"; | ||
3123 | url = "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz"; | ||
3124 | sha1 = "c6cb73d3226c1efef04de3c56d012f03377ee15f"; | ||
3125 | }; | ||
3126 | } | ||
3127 | |||
3128 | { | ||
3129 | name = "glob___glob_5.0.15.tgz"; | ||
3130 | path = fetchurl { | ||
3131 | name = "glob___glob_5.0.15.tgz"; | ||
3132 | url = "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz"; | ||
3133 | sha1 = "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"; | ||
3134 | }; | ||
3135 | } | ||
3136 | |||
3137 | { | ||
3138 | name = "glob___glob_6.0.4.tgz"; | ||
3139 | path = fetchurl { | ||
3140 | name = "glob___glob_6.0.4.tgz"; | ||
3141 | url = "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz"; | ||
3142 | sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"; | ||
3143 | }; | ||
3144 | } | ||
3145 | |||
3146 | { | ||
3147 | name = "glob___glob_7.1.6.tgz"; | ||
3148 | path = fetchurl { | ||
3149 | name = "glob___glob_7.1.6.tgz"; | ||
3150 | url = "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz"; | ||
3151 | sha1 = "141f33b81a7c2492e125594307480c46679278a6"; | ||
3152 | }; | ||
3153 | } | ||
3154 | |||
3155 | { | ||
3156 | name = "glob___glob_3.1.21.tgz"; | ||
3157 | path = fetchurl { | ||
3158 | name = "glob___glob_3.1.21.tgz"; | ||
3159 | url = "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz"; | ||
3160 | sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd"; | ||
3161 | }; | ||
3162 | } | ||
3163 | |||
3164 | { | ||
3165 | name = "glob___glob_3.2.11.tgz"; | ||
3166 | path = fetchurl { | ||
3167 | name = "glob___glob_3.2.11.tgz"; | ||
3168 | url = "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz"; | ||
3169 | sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d"; | ||
3170 | }; | ||
3171 | } | ||
3172 | |||
3173 | { | ||
3174 | name = "glob___glob_4.0.6.tgz"; | ||
3175 | path = fetchurl { | ||
3176 | name = "glob___glob_4.0.6.tgz"; | ||
3177 | url = "https://registry.yarnpkg.com/glob/-/glob-4.0.6.tgz"; | ||
3178 | sha1 = "695c50bdd4e2fb5c5d370b091f388d3707e291a7"; | ||
3179 | }; | ||
3180 | } | ||
3181 | |||
3182 | { | ||
3183 | name = "global_modules___global_modules_1.0.0.tgz"; | ||
3184 | path = fetchurl { | ||
3185 | name = "global_modules___global_modules_1.0.0.tgz"; | ||
3186 | url = "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz"; | ||
3187 | sha1 = "6d770f0eb523ac78164d72b5e71a8877265cc3ea"; | ||
3188 | }; | ||
3189 | } | ||
3190 | |||
3191 | { | ||
3192 | name = "global_prefix___global_prefix_1.0.2.tgz"; | ||
3193 | path = fetchurl { | ||
3194 | name = "global_prefix___global_prefix_1.0.2.tgz"; | ||
3195 | url = "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz"; | ||
3196 | sha1 = "dbf743c6c14992593c655568cb66ed32c0122ebe"; | ||
3197 | }; | ||
3198 | } | ||
3199 | |||
3200 | { | ||
3201 | name = "globule___globule_1.3.1.tgz"; | ||
3202 | path = fetchurl { | ||
3203 | name = "globule___globule_1.3.1.tgz"; | ||
3204 | url = "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz"; | ||
3205 | sha1 = "90a25338f22b7fbeb527cee63c629aea754d33b9"; | ||
3206 | }; | ||
3207 | } | ||
3208 | |||
3209 | { | ||
3210 | name = "globule___globule_0.1.0.tgz"; | ||
3211 | path = fetchurl { | ||
3212 | name = "globule___globule_0.1.0.tgz"; | ||
3213 | url = "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz"; | ||
3214 | sha1 = "d9c8edde1da79d125a151b79533b978676346ae5"; | ||
3215 | }; | ||
3216 | } | ||
3217 | |||
3218 | { | ||
3219 | name = "glogg___glogg_1.0.2.tgz"; | ||
3220 | path = fetchurl { | ||
3221 | name = "glogg___glogg_1.0.2.tgz"; | ||
3222 | url = "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz"; | ||
3223 | sha1 = "2d7dd702beda22eb3bffadf880696da6d846313f"; | ||
3224 | }; | ||
3225 | } | ||
3226 | |||
3227 | { | ||
3228 | name = "got___got_3.3.1.tgz"; | ||
3229 | path = fetchurl { | ||
3230 | name = "got___got_3.3.1.tgz"; | ||
3231 | url = "https://registry.yarnpkg.com/got/-/got-3.3.1.tgz"; | ||
3232 | sha1 = "e5d0ed4af55fc3eef4d56007769d98192bcb2eca"; | ||
3233 | }; | ||
3234 | } | ||
3235 | |||
3236 | { | ||
3237 | name = "graceful_fs___graceful_fs_3.0.12.tgz"; | ||
3238 | path = fetchurl { | ||
3239 | name = "graceful_fs___graceful_fs_3.0.12.tgz"; | ||
3240 | url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.12.tgz"; | ||
3241 | sha1 = "0034947ce9ed695ec8ab0b854bc919e82b1ffaef"; | ||
3242 | }; | ||
3243 | } | ||
3244 | |||
3245 | { | ||
3246 | name = "graceful_fs___graceful_fs_4.2.3.tgz"; | ||
3247 | path = fetchurl { | ||
3248 | name = "graceful_fs___graceful_fs_4.2.3.tgz"; | ||
3249 | url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz"; | ||
3250 | sha1 = "4a12ff1b60376ef09862c2093edd908328be8423"; | ||
3251 | }; | ||
3252 | } | ||
3253 | |||
3254 | { | ||
3255 | name = "graceful_fs___graceful_fs_1.2.3.tgz"; | ||
3256 | path = fetchurl { | ||
3257 | name = "graceful_fs___graceful_fs_1.2.3.tgz"; | ||
3258 | url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz"; | ||
3259 | sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364"; | ||
3260 | }; | ||
3261 | } | ||
3262 | |||
3263 | { | ||
3264 | name = "graceful_fs___graceful_fs_2.0.3.tgz"; | ||
3265 | path = fetchurl { | ||
3266 | name = "graceful_fs___graceful_fs_2.0.3.tgz"; | ||
3267 | url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-2.0.3.tgz"; | ||
3268 | sha1 = "7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0"; | ||
3269 | }; | ||
3270 | } | ||
3271 | |||
3272 | { | ||
3273 | name = "guanlecoja___guanlecoja_0.9.2.tgz"; | ||
3274 | path = fetchurl { | ||
3275 | name = "guanlecoja___guanlecoja_0.9.2.tgz"; | ||
3276 | url = "https://registry.yarnpkg.com/guanlecoja/-/guanlecoja-0.9.2.tgz"; | ||
3277 | sha1 = "03febe92d9e7575a633b4d5ad8d19f5ee1cdf326"; | ||
3278 | }; | ||
3279 | } | ||
3280 | |||
3281 | { | ||
3282 | name = "gulp_angular_templatecache___gulp_angular_templatecache_1.9.1.tgz"; | ||
3283 | path = fetchurl { | ||
3284 | name = "gulp_angular_templatecache___gulp_angular_templatecache_1.9.1.tgz"; | ||
3285 | url = "https://registry.yarnpkg.com/gulp-angular-templatecache/-/gulp-angular-templatecache-1.9.1.tgz"; | ||
3286 | sha1 = "60f631e97aaaa765d942e37042e4bfbb1a5df244"; | ||
3287 | }; | ||
3288 | } | ||
3289 | |||
3290 | { | ||
3291 | name = "gulp_bower_deps___gulp_bower_deps_0.3.3.tgz"; | ||
3292 | path = fetchurl { | ||
3293 | name = "gulp_bower_deps___gulp_bower_deps_0.3.3.tgz"; | ||
3294 | url = "https://registry.yarnpkg.com/gulp-bower-deps/-/gulp-bower-deps-0.3.3.tgz"; | ||
3295 | sha1 = "2109fe3fbee35069f67312bb977e591d890296cd"; | ||
3296 | }; | ||
3297 | } | ||
3298 | |||
3299 | { | ||
3300 | name = "gulp_browserify___gulp_browserify_0.5.1.tgz"; | ||
3301 | path = fetchurl { | ||
3302 | name = "gulp_browserify___gulp_browserify_0.5.1.tgz"; | ||
3303 | url = "https://registry.yarnpkg.com/gulp-browserify/-/gulp-browserify-0.5.1.tgz"; | ||
3304 | sha1 = "820108ac2554a954adb8be17d23958b0c04be083"; | ||
3305 | }; | ||
3306 | } | ||
3307 | |||
3308 | { | ||
3309 | name = "gulp_cached___gulp_cached_1.1.1.tgz"; | ||
3310 | path = fetchurl { | ||
3311 | name = "gulp_cached___gulp_cached_1.1.1.tgz"; | ||
3312 | url = "https://registry.yarnpkg.com/gulp-cached/-/gulp-cached-1.1.1.tgz"; | ||
3313 | sha1 = "fe7cd4f87f37601e6073cfedee5c2bdaf8b6acce"; | ||
3314 | }; | ||
3315 | } | ||
3316 | |||
3317 | { | ||
3318 | name = "gulp_clean_css___gulp_clean_css_2.4.0.tgz"; | ||
3319 | path = fetchurl { | ||
3320 | name = "gulp_clean_css___gulp_clean_css_2.4.0.tgz"; | ||
3321 | url = "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-2.4.0.tgz"; | ||
3322 | sha1 = "2ae48109fe83ccc967ff5ad53c044949a4863b36"; | ||
3323 | }; | ||
3324 | } | ||
3325 | |||
3326 | { | ||
3327 | name = "gulp_coffee___gulp_coffee_2.3.5.tgz"; | ||
3328 | path = fetchurl { | ||
3329 | name = "gulp_coffee___gulp_coffee_2.3.5.tgz"; | ||
3330 | url = "https://registry.yarnpkg.com/gulp-coffee/-/gulp-coffee-2.3.5.tgz"; | ||
3331 | sha1 = "8c64e9ac884e1bab4e20b66ac7c386a816859041"; | ||
3332 | }; | ||
3333 | } | ||
3334 | |||
3335 | { | ||
3336 | name = "gulp_concat___gulp_concat_2.6.0.tgz"; | ||
3337 | path = fetchurl { | ||
3338 | name = "gulp_concat___gulp_concat_2.6.0.tgz"; | ||
3339 | url = "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.0.tgz"; | ||
3340 | sha1 = "585cfb115411f348773131140566b6a81c69cb91"; | ||
3341 | }; | ||
3342 | } | ||
3343 | |||
3344 | { | ||
3345 | name = "gulp_concat___gulp_concat_2.6.1.tgz"; | ||
3346 | path = fetchurl { | ||
3347 | name = "gulp_concat___gulp_concat_2.6.1.tgz"; | ||
3348 | url = "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz"; | ||
3349 | sha1 = "633d16c95d88504628ad02665663cee5a4793353"; | ||
3350 | }; | ||
3351 | } | ||
3352 | |||
3353 | { | ||
3354 | name = "gulp_fixtures2js___gulp_fixtures2js_0.0.1.tgz"; | ||
3355 | path = fetchurl { | ||
3356 | name = "gulp_fixtures2js___gulp_fixtures2js_0.0.1.tgz"; | ||
3357 | url = "https://registry.yarnpkg.com/gulp-fixtures2js/-/gulp-fixtures2js-0.0.1.tgz"; | ||
3358 | sha1 = "4a3cbb4404bdfab92f7d2b6e09de2bfd0ae78506"; | ||
3359 | }; | ||
3360 | } | ||
3361 | |||
3362 | { | ||
3363 | name = "gulp_footer___gulp_footer_1.0.5.tgz"; | ||
3364 | path = fetchurl { | ||
3365 | name = "gulp_footer___gulp_footer_1.0.5.tgz"; | ||
3366 | url = "https://registry.yarnpkg.com/gulp-footer/-/gulp-footer-1.0.5.tgz"; | ||
3367 | sha1 = "e84ca777e266be7bbc2d45d2df0e7eba8dfa3e54"; | ||
3368 | }; | ||
3369 | } | ||
3370 | |||
3371 | { | ||
3372 | name = "gulp_footer___gulp_footer_1.1.2.tgz"; | ||
3373 | path = fetchurl { | ||
3374 | name = "gulp_footer___gulp_footer_1.1.2.tgz"; | ||
3375 | url = "https://registry.yarnpkg.com/gulp-footer/-/gulp-footer-1.1.2.tgz"; | ||
3376 | sha1 = "7fe28324ec67e3d618d31e0f5ea2ee5b454f6877"; | ||
3377 | }; | ||
3378 | } | ||
3379 | |||
3380 | { | ||
3381 | name = "gulp_header___gulp_header_1.8.2.tgz"; | ||
3382 | path = fetchurl { | ||
3383 | name = "gulp_header___gulp_header_1.8.2.tgz"; | ||
3384 | url = "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.2.tgz"; | ||
3385 | sha1 = "3ab222f53719d2d03d81d9134252fe7d52425aa4"; | ||
3386 | }; | ||
3387 | } | ||
3388 | |||
3389 | { | ||
3390 | name = "gulp_header___gulp_header_1.8.12.tgz"; | ||
3391 | path = fetchurl { | ||
3392 | name = "gulp_header___gulp_header_1.8.12.tgz"; | ||
3393 | url = "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz"; | ||
3394 | sha1 = "ad306be0066599127281c4f8786660e705080a84"; | ||
3395 | }; | ||
3396 | } | ||
3397 | |||
3398 | { | ||
3399 | name = "gulp_help___gulp_help_1.6.1.tgz"; | ||
3400 | path = fetchurl { | ||
3401 | name = "gulp_help___gulp_help_1.6.1.tgz"; | ||
3402 | url = "https://registry.yarnpkg.com/gulp-help/-/gulp-help-1.6.1.tgz"; | ||
3403 | sha1 = "261db186e18397fef3f6a2c22e9c315bfa88ae0c"; | ||
3404 | }; | ||
3405 | } | ||
3406 | |||
3407 | { | ||
3408 | name = "gulp_if___gulp_if_2.0.2.tgz"; | ||
3409 | path = fetchurl { | ||
3410 | name = "gulp_if___gulp_if_2.0.2.tgz"; | ||
3411 | url = "https://registry.yarnpkg.com/gulp-if/-/gulp-if-2.0.2.tgz"; | ||
3412 | sha1 = "a497b7e7573005041caa2bc8b7dda3c80444d629"; | ||
3413 | }; | ||
3414 | } | ||
3415 | |||
3416 | { | ||
3417 | name = "gulp_less___gulp_less_1.3.9.tgz"; | ||
3418 | path = fetchurl { | ||
3419 | name = "gulp_less___gulp_less_1.3.9.tgz"; | ||
3420 | url = "https://registry.yarnpkg.com/gulp-less/-/gulp-less-1.3.9.tgz"; | ||
3421 | sha1 = "e129750f236693ead5b522af311cc33eeff1910e"; | ||
3422 | }; | ||
3423 | } | ||
3424 | |||
3425 | { | ||
3426 | name = "gulp_livereload___gulp_livereload_3.8.1.tgz"; | ||
3427 | path = fetchurl { | ||
3428 | name = "gulp_livereload___gulp_livereload_3.8.1.tgz"; | ||
3429 | url = "https://registry.yarnpkg.com/gulp-livereload/-/gulp-livereload-3.8.1.tgz"; | ||
3430 | sha1 = "00f744b2d749d3e9e3746589c8a44acac779b50f"; | ||
3431 | }; | ||
3432 | } | ||
3433 | |||
3434 | { | ||
3435 | name = "gulp_match___gulp_match_1.1.0.tgz"; | ||
3436 | path = fetchurl { | ||
3437 | name = "gulp_match___gulp_match_1.1.0.tgz"; | ||
3438 | url = "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.1.0.tgz"; | ||
3439 | sha1 = "552b7080fc006ee752c90563f9fec9d61aafdf4f"; | ||
3440 | }; | ||
3441 | } | ||
3442 | |||
3443 | { | ||
3444 | name = "gulp_ng_annotate___gulp_ng_annotate_1.1.0.tgz"; | ||
3445 | path = fetchurl { | ||
3446 | name = "gulp_ng_annotate___gulp_ng_annotate_1.1.0.tgz"; | ||
3447 | url = "https://registry.yarnpkg.com/gulp-ng-annotate/-/gulp-ng-annotate-1.1.0.tgz"; | ||
3448 | sha1 = "5e801be073d8f6d343c4ff65b71717b90fac13ce"; | ||
3449 | }; | ||
3450 | } | ||
3451 | |||
3452 | { | ||
3453 | name = "gulp_ng_classify___gulp_ng_classify_4.0.1.tgz"; | ||
3454 | path = fetchurl { | ||
3455 | name = "gulp_ng_classify___gulp_ng_classify_4.0.1.tgz"; | ||
3456 | url = "https://registry.yarnpkg.com/gulp-ng-classify/-/gulp-ng-classify-4.0.1.tgz"; | ||
3457 | sha1 = "3019161127c35c317ea08dc2a65ea35b592dbfd7"; | ||
3458 | }; | ||
3459 | } | ||
3460 | |||
3461 | { | ||
3462 | name = "gulp_pug___gulp_pug_3.3.0.tgz"; | ||
3463 | path = fetchurl { | ||
3464 | name = "gulp_pug___gulp_pug_3.3.0.tgz"; | ||
3465 | url = "https://registry.yarnpkg.com/gulp-pug/-/gulp-pug-3.3.0.tgz"; | ||
3466 | sha1 = "46982c1439c094c360542ed8ba5c882d3bb711cf"; | ||
3467 | }; | ||
3468 | } | ||
3469 | |||
3470 | { | ||
3471 | name = "gulp_remember___gulp_remember_0.3.1.tgz"; | ||
3472 | path = fetchurl { | ||
3473 | name = "gulp_remember___gulp_remember_0.3.1.tgz"; | ||
3474 | url = "https://registry.yarnpkg.com/gulp-remember/-/gulp-remember-0.3.1.tgz"; | ||
3475 | sha1 = "5776b6f64c5a1c5c4d4555406723ec8e2b0407e7"; | ||
3476 | }; | ||
3477 | } | ||
3478 | |||
3479 | { | ||
3480 | name = "gulp_rename___gulp_rename_1.2.3.tgz"; | ||
3481 | path = fetchurl { | ||
3482 | name = "gulp_rename___gulp_rename_1.2.3.tgz"; | ||
3483 | url = "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.3.tgz"; | ||
3484 | sha1 = "37b75298e9d3e6c0fe9ac4eac13ce3be5434646b"; | ||
3485 | }; | ||
3486 | } | ||
3487 | |||
3488 | { | ||
3489 | name = "gulp_replace___gulp_replace_0.5.4.tgz"; | ||
3490 | path = fetchurl { | ||
3491 | name = "gulp_replace___gulp_replace_0.5.4.tgz"; | ||
3492 | url = "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-0.5.4.tgz"; | ||
3493 | sha1 = "69a67914bbd13c562bff14f504a403796aa0daa9"; | ||
3494 | }; | ||
3495 | } | ||
3496 | |||
3497 | { | ||
3498 | name = "gulp_sass___gulp_sass_3.2.1.tgz"; | ||
3499 | path = fetchurl { | ||
3500 | name = "gulp_sass___gulp_sass_3.2.1.tgz"; | ||
3501 | url = "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-3.2.1.tgz"; | ||
3502 | sha1 = "2e3688a96fd8be1c0c01340750c191b2e79fab94"; | ||
3503 | }; | ||
3504 | } | ||
3505 | |||
3506 | { | ||
3507 | name = "gulp_sourcemaps___gulp_sourcemaps_1.6.0.tgz"; | ||
3508 | path = fetchurl { | ||
3509 | name = "gulp_sourcemaps___gulp_sourcemaps_1.6.0.tgz"; | ||
3510 | url = "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz"; | ||
3511 | sha1 = "b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c"; | ||
3512 | }; | ||
3513 | } | ||
3514 | |||
3515 | { | ||
3516 | name = "gulp_uglify___gulp_uglify_1.4.2.tgz"; | ||
3517 | path = fetchurl { | ||
3518 | name = "gulp_uglify___gulp_uglify_1.4.2.tgz"; | ||
3519 | url = "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-1.4.2.tgz"; | ||
3520 | sha1 = "2807ea1016e4962c37766c02feeb5501818857c3"; | ||
3521 | }; | ||
3522 | } | ||
3523 | |||
3524 | { | ||
3525 | name = "gulp_util___gulp_util_3.0.8.tgz"; | ||
3526 | path = fetchurl { | ||
3527 | name = "gulp_util___gulp_util_3.0.8.tgz"; | ||
3528 | url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz"; | ||
3529 | sha1 = "0054e1e744502e27c04c187c3ecc505dd54bbb4f"; | ||
3530 | }; | ||
3531 | } | ||
3532 | |||
3533 | { | ||
3534 | name = "gulp_util___gulp_util_3.0.7.tgz"; | ||
3535 | path = fetchurl { | ||
3536 | name = "gulp_util___gulp_util_3.0.7.tgz"; | ||
3537 | url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz"; | ||
3538 | sha1 = "78925c4b8f8b49005ac01a011c557e6218941cbb"; | ||
3539 | }; | ||
3540 | } | ||
3541 | |||
3542 | { | ||
3543 | name = "gulp_util___gulp_util_2.2.20.tgz"; | ||
3544 | path = fetchurl { | ||
3545 | name = "gulp_util___gulp_util_2.2.20.tgz"; | ||
3546 | url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-2.2.20.tgz"; | ||
3547 | sha1 = "d7146e5728910bd8f047a6b0b1e549bc22dbd64c"; | ||
3548 | }; | ||
3549 | } | ||
3550 | |||
3551 | { | ||
3552 | name = "gulp_wrap___gulp_wrap_0.8.0.tgz"; | ||
3553 | path = fetchurl { | ||
3554 | name = "gulp_wrap___gulp_wrap_0.8.0.tgz"; | ||
3555 | url = "https://registry.yarnpkg.com/gulp-wrap/-/gulp-wrap-0.8.0.tgz"; | ||
3556 | sha1 = "c41ce89a374947788b78c9e67f33bbe838c69b86"; | ||
3557 | }; | ||
3558 | } | ||
3559 | |||
3560 | { | ||
3561 | name = "gulp___gulp_3.9.1.tgz"; | ||
3562 | path = fetchurl { | ||
3563 | name = "gulp___gulp_3.9.1.tgz"; | ||
3564 | url = "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz"; | ||
3565 | sha1 = "571ce45928dd40af6514fc4011866016c13845b4"; | ||
3566 | }; | ||
3567 | } | ||
3568 | |||
3569 | { | ||
3570 | name = "gulplog___gulplog_1.0.0.tgz"; | ||
3571 | path = fetchurl { | ||
3572 | name = "gulplog___gulplog_1.0.0.tgz"; | ||
3573 | url = "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz"; | ||
3574 | sha1 = "e28c4d45d05ecbbed818363ce8f9c5926229ffe5"; | ||
3575 | }; | ||
3576 | } | ||
3577 | |||
3578 | { | ||
3579 | name = "handlebars___handlebars_4.7.3.tgz"; | ||
3580 | path = fetchurl { | ||
3581 | name = "handlebars___handlebars_4.7.3.tgz"; | ||
3582 | url = "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.3.tgz"; | ||
3583 | sha1 = "8ece2797826886cf8082d1726ff21d2a022550ee"; | ||
3584 | }; | ||
3585 | } | ||
3586 | |||
3587 | { | ||
3588 | name = "handlebars___handlebars_1.3.0.tgz"; | ||
3589 | path = fetchurl { | ||
3590 | name = "handlebars___handlebars_1.3.0.tgz"; | ||
3591 | url = "https://registry.yarnpkg.com/handlebars/-/handlebars-1.3.0.tgz"; | ||
3592 | sha1 = "9e9b130a93e389491322d975cf3ec1818c37ce34"; | ||
3593 | }; | ||
3594 | } | ||
3595 | |||
3596 | { | ||
3597 | name = "har_schema___har_schema_2.0.0.tgz"; | ||
3598 | path = fetchurl { | ||
3599 | name = "har_schema___har_schema_2.0.0.tgz"; | ||
3600 | url = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz"; | ||
3601 | sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92"; | ||
3602 | }; | ||
3603 | } | ||
3604 | |||
3605 | { | ||
3606 | name = "har_validator___har_validator_5.1.3.tgz"; | ||
3607 | path = fetchurl { | ||
3608 | name = "har_validator___har_validator_5.1.3.tgz"; | ||
3609 | url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz"; | ||
3610 | sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080"; | ||
3611 | }; | ||
3612 | } | ||
3613 | |||
3614 | { | ||
3615 | name = "has_ansi___has_ansi_0.1.0.tgz"; | ||
3616 | path = fetchurl { | ||
3617 | name = "has_ansi___has_ansi_0.1.0.tgz"; | ||
3618 | url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz"; | ||
3619 | sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e"; | ||
3620 | }; | ||
3621 | } | ||
3622 | |||
3623 | { | ||
3624 | name = "has_ansi___has_ansi_2.0.0.tgz"; | ||
3625 | path = fetchurl { | ||
3626 | name = "has_ansi___has_ansi_2.0.0.tgz"; | ||
3627 | url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz"; | ||
3628 | sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91"; | ||
3629 | }; | ||
3630 | } | ||
3631 | |||
3632 | { | ||
3633 | name = "has_binary___has_binary_0.1.7.tgz"; | ||
3634 | path = fetchurl { | ||
3635 | name = "has_binary___has_binary_0.1.7.tgz"; | ||
3636 | url = "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz"; | ||
3637 | sha1 = "68e61eb16210c9545a0a5cce06a873912fe1e68c"; | ||
3638 | }; | ||
3639 | } | ||
3640 | |||
3641 | { | ||
3642 | name = "has_color___has_color_0.1.7.tgz"; | ||
3643 | path = fetchurl { | ||
3644 | name = "has_color___has_color_0.1.7.tgz"; | ||
3645 | url = "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz"; | ||
3646 | sha1 = "67144a5260c34fc3cca677d041daf52fe7b78b2f"; | ||
3647 | }; | ||
3648 | } | ||
3649 | |||
3650 | { | ||
3651 | name = "has_cors___has_cors_1.1.0.tgz"; | ||
3652 | path = fetchurl { | ||
3653 | name = "has_cors___has_cors_1.1.0.tgz"; | ||
3654 | url = "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz"; | ||
3655 | sha1 = "5e474793f7ea9843d1bb99c23eef49ff126fff39"; | ||
3656 | }; | ||
3657 | } | ||
3658 | |||
3659 | { | ||
3660 | name = "has_flag___has_flag_1.0.0.tgz"; | ||
3661 | path = fetchurl { | ||
3662 | name = "has_flag___has_flag_1.0.0.tgz"; | ||
3663 | url = "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz"; | ||
3664 | sha1 = "9d9e793165ce017a00f00418c43f942a7b1d11fa"; | ||
3665 | }; | ||
3666 | } | ||
3667 | |||
3668 | { | ||
3669 | name = "has_flag___has_flag_4.0.0.tgz"; | ||
3670 | path = fetchurl { | ||
3671 | name = "has_flag___has_flag_4.0.0.tgz"; | ||
3672 | url = "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz"; | ||
3673 | sha1 = "944771fd9c81c81265c4d6941860da06bb59479b"; | ||
3674 | }; | ||
3675 | } | ||
3676 | |||
3677 | { | ||
3678 | name = "has_gulplog___has_gulplog_0.1.0.tgz"; | ||
3679 | path = fetchurl { | ||
3680 | name = "has_gulplog___has_gulplog_0.1.0.tgz"; | ||
3681 | url = "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz"; | ||
3682 | sha1 = "6414c82913697da51590397dafb12f22967811ce"; | ||
3683 | }; | ||
3684 | } | ||
3685 | |||
3686 | { | ||
3687 | name = "has_unicode___has_unicode_2.0.1.tgz"; | ||
3688 | path = fetchurl { | ||
3689 | name = "has_unicode___has_unicode_2.0.1.tgz"; | ||
3690 | url = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz"; | ||
3691 | sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9"; | ||
3692 | }; | ||
3693 | } | ||
3694 | |||
3695 | { | ||
3696 | name = "has_value___has_value_0.3.1.tgz"; | ||
3697 | path = fetchurl { | ||
3698 | name = "has_value___has_value_0.3.1.tgz"; | ||
3699 | url = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz"; | ||
3700 | sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f"; | ||
3701 | }; | ||
3702 | } | ||
3703 | |||
3704 | { | ||
3705 | name = "has_value___has_value_1.0.0.tgz"; | ||
3706 | path = fetchurl { | ||
3707 | name = "has_value___has_value_1.0.0.tgz"; | ||
3708 | url = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz"; | ||
3709 | sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177"; | ||
3710 | }; | ||
3711 | } | ||
3712 | |||
3713 | { | ||
3714 | name = "has_values___has_values_0.1.4.tgz"; | ||
3715 | path = fetchurl { | ||
3716 | name = "has_values___has_values_0.1.4.tgz"; | ||
3717 | url = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz"; | ||
3718 | sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771"; | ||
3719 | }; | ||
3720 | } | ||
3721 | |||
3722 | { | ||
3723 | name = "has_values___has_values_1.0.0.tgz"; | ||
3724 | path = fetchurl { | ||
3725 | name = "has_values___has_values_1.0.0.tgz"; | ||
3726 | url = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz"; | ||
3727 | sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f"; | ||
3728 | }; | ||
3729 | } | ||
3730 | |||
3731 | { | ||
3732 | name = "has___has_1.0.3.tgz"; | ||
3733 | path = fetchurl { | ||
3734 | name = "has___has_1.0.3.tgz"; | ||
3735 | url = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz"; | ||
3736 | sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796"; | ||
3737 | }; | ||
3738 | } | ||
3739 | |||
3740 | { | ||
3741 | name = "hawk___hawk_1.1.1.tgz"; | ||
3742 | path = fetchurl { | ||
3743 | name = "hawk___hawk_1.1.1.tgz"; | ||
3744 | url = "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz"; | ||
3745 | sha1 = "87cd491f9b46e4e2aeaca335416766885d2d1ed9"; | ||
3746 | }; | ||
3747 | } | ||
3748 | |||
3749 | { | ||
3750 | name = "hawk___hawk_1.0.0.tgz"; | ||
3751 | path = fetchurl { | ||
3752 | name = "hawk___hawk_1.0.0.tgz"; | ||
3753 | url = "https://registry.yarnpkg.com/hawk/-/hawk-1.0.0.tgz"; | ||
3754 | sha1 = "b90bb169807285411da7ffcb8dd2598502d3b52d"; | ||
3755 | }; | ||
3756 | } | ||
3757 | |||
3758 | { | ||
3759 | name = "hoek___hoek_0.9.1.tgz"; | ||
3760 | path = fetchurl { | ||
3761 | name = "hoek___hoek_0.9.1.tgz"; | ||
3762 | url = "https://registry.yarnpkg.com/hoek/-/hoek-0.9.1.tgz"; | ||
3763 | sha1 = "3d322462badf07716ea7eb85baf88079cddce505"; | ||
3764 | }; | ||
3765 | } | ||
3766 | |||
3767 | { | ||
3768 | name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz"; | ||
3769 | path = fetchurl { | ||
3770 | name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz"; | ||
3771 | url = "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz"; | ||
3772 | sha1 = "743298cef4e5af3e194161fbadcc2151d3a058e8"; | ||
3773 | }; | ||
3774 | } | ||
3775 | |||
3776 | { | ||
3777 | name = "hosted_git_info___hosted_git_info_2.8.8.tgz"; | ||
3778 | path = fetchurl { | ||
3779 | name = "hosted_git_info___hosted_git_info_2.8.8.tgz"; | ||
3780 | url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz"; | ||
3781 | sha1 = "7539bd4bc1e0e0a895815a2e0262420b12858488"; | ||
3782 | }; | ||
3783 | } | ||
3784 | |||
3785 | { | ||
3786 | name = "http_browserify___http_browserify_1.3.2.tgz"; | ||
3787 | path = fetchurl { | ||
3788 | name = "http_browserify___http_browserify_1.3.2.tgz"; | ||
3789 | url = "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.3.2.tgz"; | ||
3790 | sha1 = "b562c34479349a690d7a6597df495aefa8c604f5"; | ||
3791 | }; | ||
3792 | } | ||
3793 | |||
3794 | { | ||
3795 | name = "http_errors___http_errors_1.7.2.tgz"; | ||
3796 | path = fetchurl { | ||
3797 | name = "http_errors___http_errors_1.7.2.tgz"; | ||
3798 | url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz"; | ||
3799 | sha1 = "4f5029cf13239f31036e5b2e55292bcfbcc85c8f"; | ||
3800 | }; | ||
3801 | } | ||
3802 | |||
3803 | { | ||
3804 | name = "http_errors___http_errors_1.3.1.tgz"; | ||
3805 | path = fetchurl { | ||
3806 | name = "http_errors___http_errors_1.3.1.tgz"; | ||
3807 | url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz"; | ||
3808 | sha1 = "197e22cdebd4198585e8694ef6786197b91ed942"; | ||
3809 | }; | ||
3810 | } | ||
3811 | |||
3812 | { | ||
3813 | name = "http_parser_js___http_parser_js_0.4.10.tgz"; | ||
3814 | path = fetchurl { | ||
3815 | name = "http_parser_js___http_parser_js_0.4.10.tgz"; | ||
3816 | url = "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz"; | ||
3817 | sha1 = "92c9c1374c35085f75db359ec56cc257cbb93fa4"; | ||
3818 | }; | ||
3819 | } | ||
3820 | |||
3821 | { | ||
3822 | name = "http_proxy___http_proxy_1.18.0.tgz"; | ||
3823 | path = fetchurl { | ||
3824 | name = "http_proxy___http_proxy_1.18.0.tgz"; | ||
3825 | url = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz"; | ||
3826 | sha1 = "dbe55f63e75a347db7f3d99974f2692a314a6a3a"; | ||
3827 | }; | ||
3828 | } | ||
3829 | |||
3830 | { | ||
3831 | name = "http_signature___http_signature_0.10.1.tgz"; | ||
3832 | path = fetchurl { | ||
3833 | name = "http_signature___http_signature_0.10.1.tgz"; | ||
3834 | url = "https://registry.yarnpkg.com/http-signature/-/http-signature-0.10.1.tgz"; | ||
3835 | sha1 = "4fbdac132559aa8323121e540779c0a012b27e66"; | ||
3836 | }; | ||
3837 | } | ||
3838 | |||
3839 | { | ||
3840 | name = "http_signature___http_signature_1.2.0.tgz"; | ||
3841 | path = fetchurl { | ||
3842 | name = "http_signature___http_signature_1.2.0.tgz"; | ||
3843 | url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz"; | ||
3844 | sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1"; | ||
3845 | }; | ||
3846 | } | ||
3847 | |||
3848 | { | ||
3849 | name = "https_browserify___https_browserify_0.0.1.tgz"; | ||
3850 | path = fetchurl { | ||
3851 | name = "https_browserify___https_browserify_0.0.1.tgz"; | ||
3852 | url = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz"; | ||
3853 | sha1 = "3f91365cabe60b77ed0ebba24b454e3e09d95a82"; | ||
3854 | }; | ||
3855 | } | ||
3856 | |||
3857 | { | ||
3858 | name = "iconv_lite___iconv_lite_0.4.13.tgz"; | ||
3859 | path = fetchurl { | ||
3860 | name = "iconv_lite___iconv_lite_0.4.13.tgz"; | ||
3861 | url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz"; | ||
3862 | sha1 = "1f88aba4ab0b1508e8312acc39345f36e992e2f2"; | ||
3863 | }; | ||
3864 | } | ||
3865 | |||
3866 | { | ||
3867 | name = "iconv_lite___iconv_lite_0.4.24.tgz"; | ||
3868 | path = fetchurl { | ||
3869 | name = "iconv_lite___iconv_lite_0.4.24.tgz"; | ||
3870 | url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz"; | ||
3871 | sha1 = "2022b4b25fbddc21d2f524974a474aafe733908b"; | ||
3872 | }; | ||
3873 | } | ||
3874 | |||
3875 | { | ||
3876 | name = "ieee754___ieee754_1.1.13.tgz"; | ||
3877 | path = fetchurl { | ||
3878 | name = "ieee754___ieee754_1.1.13.tgz"; | ||
3879 | url = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz"; | ||
3880 | sha1 = "ec168558e95aa181fd87d37f55c32bbcb6708b84"; | ||
3881 | }; | ||
3882 | } | ||
3883 | |||
3884 | { | ||
3885 | name = "ignore_walk___ignore_walk_3.0.3.tgz"; | ||
3886 | path = fetchurl { | ||
3887 | name = "ignore_walk___ignore_walk_3.0.3.tgz"; | ||
3888 | url = "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz"; | ||
3889 | sha1 = "017e2447184bfeade7c238e4aefdd1e8f95b1e37"; | ||
3890 | }; | ||
3891 | } | ||
3892 | |||
3893 | { | ||
3894 | name = "in_publish___in_publish_2.0.1.tgz"; | ||
3895 | path = fetchurl { | ||
3896 | name = "in_publish___in_publish_2.0.1.tgz"; | ||
3897 | url = "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz"; | ||
3898 | sha1 = "948b1a535c8030561cea522f73f78f4be357e00c"; | ||
3899 | }; | ||
3900 | } | ||
3901 | |||
3902 | { | ||
3903 | name = "indent_string___indent_string_2.1.0.tgz"; | ||
3904 | path = fetchurl { | ||
3905 | name = "indent_string___indent_string_2.1.0.tgz"; | ||
3906 | url = "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz"; | ||
3907 | sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80"; | ||
3908 | }; | ||
3909 | } | ||
3910 | |||
3911 | { | ||
3912 | name = "indexof___indexof_0.0.1.tgz"; | ||
3913 | path = fetchurl { | ||
3914 | name = "indexof___indexof_0.0.1.tgz"; | ||
3915 | url = "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz"; | ||
3916 | sha1 = "82dc336d232b9062179d05ab3293a66059fd435d"; | ||
3917 | }; | ||
3918 | } | ||
3919 | |||
3920 | { | ||
3921 | name = "infinity_agent___infinity_agent_2.0.3.tgz"; | ||
3922 | path = fetchurl { | ||
3923 | name = "infinity_agent___infinity_agent_2.0.3.tgz"; | ||
3924 | url = "https://registry.yarnpkg.com/infinity-agent/-/infinity-agent-2.0.3.tgz"; | ||
3925 | sha1 = "45e0e2ff7a9eb030b27d62b74b3744b7a7ac4216"; | ||
3926 | }; | ||
3927 | } | ||
3928 | |||
3929 | { | ||
3930 | name = "inflight___inflight_1.0.6.tgz"; | ||
3931 | path = fetchurl { | ||
3932 | name = "inflight___inflight_1.0.6.tgz"; | ||
3933 | url = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz"; | ||
3934 | sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9"; | ||
3935 | }; | ||
3936 | } | ||
3937 | |||
3938 | { | ||
3939 | name = "inherits___inherits_1.0.2.tgz"; | ||
3940 | path = fetchurl { | ||
3941 | name = "inherits___inherits_1.0.2.tgz"; | ||
3942 | url = "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz"; | ||
3943 | sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"; | ||
3944 | }; | ||
3945 | } | ||
3946 | |||
3947 | { | ||
3948 | name = "inherits___inherits_2.0.4.tgz"; | ||
3949 | path = fetchurl { | ||
3950 | name = "inherits___inherits_2.0.4.tgz"; | ||
3951 | url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz"; | ||
3952 | sha1 = "0fa2c64f932917c3433a0ded55363aae37416b7c"; | ||
3953 | }; | ||
3954 | } | ||
3955 | |||
3956 | { | ||
3957 | name = "inherits___inherits_2.0.1.tgz"; | ||
3958 | path = fetchurl { | ||
3959 | name = "inherits___inherits_2.0.1.tgz"; | ||
3960 | url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz"; | ||
3961 | sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1"; | ||
3962 | }; | ||
3963 | } | ||
3964 | |||
3965 | { | ||
3966 | name = "inherits___inherits_2.0.3.tgz"; | ||
3967 | path = fetchurl { | ||
3968 | name = "inherits___inherits_2.0.3.tgz"; | ||
3969 | url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz"; | ||
3970 | sha1 = "633c2c83e3da42a502f52466022480f4208261de"; | ||
3971 | }; | ||
3972 | } | ||
3973 | |||
3974 | { | ||
3975 | name = "ini___ini_1.3.5.tgz"; | ||
3976 | path = fetchurl { | ||
3977 | name = "ini___ini_1.3.5.tgz"; | ||
3978 | url = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz"; | ||
3979 | sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927"; | ||
3980 | }; | ||
3981 | } | ||
3982 | |||
3983 | { | ||
3984 | name = "inline_source_map___inline_source_map_0.3.1.tgz"; | ||
3985 | path = fetchurl { | ||
3986 | name = "inline_source_map___inline_source_map_0.3.1.tgz"; | ||
3987 | url = "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.3.1.tgz"; | ||
3988 | sha1 = "a528b514e689fce90db3089e870d92f527acb5eb"; | ||
3989 | }; | ||
3990 | } | ||
3991 | |||
3992 | { | ||
3993 | name = "inquirer___inquirer_0.4.1.tgz"; | ||
3994 | path = fetchurl { | ||
3995 | name = "inquirer___inquirer_0.4.1.tgz"; | ||
3996 | url = "https://registry.yarnpkg.com/inquirer/-/inquirer-0.4.1.tgz"; | ||
3997 | sha1 = "6cf74eb1a347f97a1a207bea8ad1c987d0ff4b81"; | ||
3998 | }; | ||
3999 | } | ||
4000 | |||
4001 | { | ||
4002 | name = "inquirer___inquirer_0.5.1.tgz"; | ||
4003 | path = fetchurl { | ||
4004 | name = "inquirer___inquirer_0.5.1.tgz"; | ||
4005 | url = "https://registry.yarnpkg.com/inquirer/-/inquirer-0.5.1.tgz"; | ||
4006 | sha1 = "e9f2cd1ee172c7a32e054b78a03d4ddb0d7707f1"; | ||
4007 | }; | ||
4008 | } | ||
4009 | |||
4010 | { | ||
4011 | name = "insert_module_globals___insert_module_globals_6.0.0.tgz"; | ||
4012 | path = fetchurl { | ||
4013 | name = "insert_module_globals___insert_module_globals_6.0.0.tgz"; | ||
4014 | url = "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-6.0.0.tgz"; | ||
4015 | sha1 = "ee8aeb9dee16819e33aa14588a558824af0c15dc"; | ||
4016 | }; | ||
4017 | } | ||
4018 | |||
4019 | { | ||
4020 | name = "insight___insight_0.3.1.tgz"; | ||
4021 | path = fetchurl { | ||
4022 | name = "insight___insight_0.3.1.tgz"; | ||
4023 | url = "https://registry.yarnpkg.com/insight/-/insight-0.3.1.tgz"; | ||
4024 | sha1 = "1a14f32c06115c0850338c38a253d707b611d448"; | ||
4025 | }; | ||
4026 | } | ||
4027 | |||
4028 | { | ||
4029 | name = "interpret___interpret_1.2.0.tgz"; | ||
4030 | path = fetchurl { | ||
4031 | name = "interpret___interpret_1.2.0.tgz"; | ||
4032 | url = "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz"; | ||
4033 | sha1 = "d5061a6224be58e8083985f5014d844359576296"; | ||
4034 | }; | ||
4035 | } | ||
4036 | |||
4037 | { | ||
4038 | name = "intersect___intersect_0.0.3.tgz"; | ||
4039 | path = fetchurl { | ||
4040 | name = "intersect___intersect_0.0.3.tgz"; | ||
4041 | url = "https://registry.yarnpkg.com/intersect/-/intersect-0.0.3.tgz"; | ||
4042 | sha1 = "c1a4a5e5eac6ede4af7504cc07e0ada7bc9f4920"; | ||
4043 | }; | ||
4044 | } | ||
4045 | |||
4046 | { | ||
4047 | name = "invert_kv___invert_kv_1.0.0.tgz"; | ||
4048 | path = fetchurl { | ||
4049 | name = "invert_kv___invert_kv_1.0.0.tgz"; | ||
4050 | url = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz"; | ||
4051 | sha1 = "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"; | ||
4052 | }; | ||
4053 | } | ||
4054 | |||
4055 | { | ||
4056 | name = "is_absolute___is_absolute_1.0.0.tgz"; | ||
4057 | path = fetchurl { | ||
4058 | name = "is_absolute___is_absolute_1.0.0.tgz"; | ||
4059 | url = "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz"; | ||
4060 | sha1 = "395e1ae84b11f26ad1795e73c17378e48a301576"; | ||
4061 | }; | ||
4062 | } | ||
4063 | |||
4064 | { | ||
4065 | name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz"; | ||
4066 | path = fetchurl { | ||
4067 | name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz"; | ||
4068 | url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz"; | ||
4069 | sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"; | ||
4070 | }; | ||
4071 | } | ||
4072 | |||
4073 | { | ||
4074 | name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz"; | ||
4075 | path = fetchurl { | ||
4076 | name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz"; | ||
4077 | url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz"; | ||
4078 | sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656"; | ||
4079 | }; | ||
4080 | } | ||
4081 | |||
4082 | { | ||
4083 | name = "is_arrayish___is_arrayish_0.2.1.tgz"; | ||
4084 | path = fetchurl { | ||
4085 | name = "is_arrayish___is_arrayish_0.2.1.tgz"; | ||
4086 | url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz"; | ||
4087 | sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d"; | ||
4088 | }; | ||
4089 | } | ||
4090 | |||
4091 | { | ||
4092 | name = "is_binary_path___is_binary_path_1.0.1.tgz"; | ||
4093 | path = fetchurl { | ||
4094 | name = "is_binary_path___is_binary_path_1.0.1.tgz"; | ||
4095 | url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz"; | ||
4096 | sha1 = "75f16642b480f187a711c814161fd3a4a7655898"; | ||
4097 | }; | ||
4098 | } | ||
4099 | |||
4100 | { | ||
4101 | name = "is_buffer___is_buffer_1.1.6.tgz"; | ||
4102 | path = fetchurl { | ||
4103 | name = "is_buffer___is_buffer_1.1.6.tgz"; | ||
4104 | url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz"; | ||
4105 | sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"; | ||
4106 | }; | ||
4107 | } | ||
4108 | |||
4109 | { | ||
4110 | name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz"; | ||
4111 | path = fetchurl { | ||
4112 | name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz"; | ||
4113 | url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz"; | ||
4114 | sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56"; | ||
4115 | }; | ||
4116 | } | ||
4117 | |||
4118 | { | ||
4119 | name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz"; | ||
4120 | path = fetchurl { | ||
4121 | name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz"; | ||
4122 | url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz"; | ||
4123 | sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7"; | ||
4124 | }; | ||
4125 | } | ||
4126 | |||
4127 | { | ||
4128 | name = "is_descriptor___is_descriptor_0.1.6.tgz"; | ||
4129 | path = fetchurl { | ||
4130 | name = "is_descriptor___is_descriptor_0.1.6.tgz"; | ||
4131 | url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz"; | ||
4132 | sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca"; | ||
4133 | }; | ||
4134 | } | ||
4135 | |||
4136 | { | ||
4137 | name = "is_descriptor___is_descriptor_1.0.2.tgz"; | ||
4138 | path = fetchurl { | ||
4139 | name = "is_descriptor___is_descriptor_1.0.2.tgz"; | ||
4140 | url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz"; | ||
4141 | sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec"; | ||
4142 | }; | ||
4143 | } | ||
4144 | |||
4145 | { | ||
4146 | name = "is_dotfile___is_dotfile_1.0.3.tgz"; | ||
4147 | path = fetchurl { | ||
4148 | name = "is_dotfile___is_dotfile_1.0.3.tgz"; | ||
4149 | url = "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz"; | ||
4150 | sha1 = "a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"; | ||
4151 | }; | ||
4152 | } | ||
4153 | |||
4154 | { | ||
4155 | name = "is_equal_shallow___is_equal_shallow_0.1.3.tgz"; | ||
4156 | path = fetchurl { | ||
4157 | name = "is_equal_shallow___is_equal_shallow_0.1.3.tgz"; | ||
4158 | url = "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz"; | ||
4159 | sha1 = "2238098fc221de0bcfa5d9eac4c45d638aa1c534"; | ||
4160 | }; | ||
4161 | } | ||
4162 | |||
4163 | { | ||
4164 | name = "is_expression___is_expression_3.0.0.tgz"; | ||
4165 | path = fetchurl { | ||
4166 | name = "is_expression___is_expression_3.0.0.tgz"; | ||
4167 | url = "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz"; | ||
4168 | sha1 = "39acaa6be7fd1f3471dc42c7416e61c24317ac9f"; | ||
4169 | }; | ||
4170 | } | ||
4171 | |||
4172 | { | ||
4173 | name = "is_extendable___is_extendable_0.1.1.tgz"; | ||
4174 | path = fetchurl { | ||
4175 | name = "is_extendable___is_extendable_0.1.1.tgz"; | ||
4176 | url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz"; | ||
4177 | sha1 = "62b110e289a471418e3ec36a617d472e301dfc89"; | ||
4178 | }; | ||
4179 | } | ||
4180 | |||
4181 | { | ||
4182 | name = "is_extendable___is_extendable_1.0.1.tgz"; | ||
4183 | path = fetchurl { | ||
4184 | name = "is_extendable___is_extendable_1.0.1.tgz"; | ||
4185 | url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz"; | ||
4186 | sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4"; | ||
4187 | }; | ||
4188 | } | ||
4189 | |||
4190 | { | ||
4191 | name = "is_extglob___is_extglob_1.0.0.tgz"; | ||
4192 | path = fetchurl { | ||
4193 | name = "is_extglob___is_extglob_1.0.0.tgz"; | ||
4194 | url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz"; | ||
4195 | sha1 = "ac468177c4943405a092fc8f29760c6ffc6206c0"; | ||
4196 | }; | ||
4197 | } | ||
4198 | |||
4199 | { | ||
4200 | name = "is_extglob___is_extglob_2.1.1.tgz"; | ||
4201 | path = fetchurl { | ||
4202 | name = "is_extglob___is_extglob_2.1.1.tgz"; | ||
4203 | url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz"; | ||
4204 | sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2"; | ||
4205 | }; | ||
4206 | } | ||
4207 | |||
4208 | { | ||
4209 | name = "is_finite___is_finite_1.1.0.tgz"; | ||
4210 | path = fetchurl { | ||
4211 | name = "is_finite___is_finite_1.1.0.tgz"; | ||
4212 | url = "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz"; | ||
4213 | sha1 = "904135c77fb42c0641d6aa1bcdbc4daa8da082f3"; | ||
4214 | }; | ||
4215 | } | ||
4216 | |||
4217 | { | ||
4218 | name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz"; | ||
4219 | path = fetchurl { | ||
4220 | name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz"; | ||
4221 | url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"; | ||
4222 | sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb"; | ||
4223 | }; | ||
4224 | } | ||
4225 | |||
4226 | { | ||
4227 | name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz"; | ||
4228 | path = fetchurl { | ||
4229 | name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz"; | ||
4230 | url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"; | ||
4231 | sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f"; | ||
4232 | }; | ||
4233 | } | ||
4234 | |||
4235 | { | ||
4236 | name = "is_glob___is_glob_2.0.1.tgz"; | ||
4237 | path = fetchurl { | ||
4238 | name = "is_glob___is_glob_2.0.1.tgz"; | ||
4239 | url = "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz"; | ||
4240 | sha1 = "d096f926a3ded5600f3fdfd91198cb0888c2d863"; | ||
4241 | }; | ||
4242 | } | ||
4243 | |||
4244 | { | ||
4245 | name = "is_glob___is_glob_3.1.0.tgz"; | ||
4246 | path = fetchurl { | ||
4247 | name = "is_glob___is_glob_3.1.0.tgz"; | ||
4248 | url = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz"; | ||
4249 | sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a"; | ||
4250 | }; | ||
4251 | } | ||
4252 | |||
4253 | { | ||
4254 | name = "is_npm___is_npm_1.0.0.tgz"; | ||
4255 | path = fetchurl { | ||
4256 | name = "is_npm___is_npm_1.0.0.tgz"; | ||
4257 | url = "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz"; | ||
4258 | sha1 = "f2fb63a65e4905b406c86072765a1a4dc793b9f4"; | ||
4259 | }; | ||
4260 | } | ||
4261 | |||
4262 | { | ||
4263 | name = "is_number___is_number_0.1.1.tgz"; | ||
4264 | path = fetchurl { | ||
4265 | name = "is_number___is_number_0.1.1.tgz"; | ||
4266 | url = "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz"; | ||
4267 | sha1 = "69a7af116963d47206ec9bd9b48a14216f1e3806"; | ||
4268 | }; | ||
4269 | } | ||
4270 | |||
4271 | { | ||
4272 | name = "is_number___is_number_2.1.0.tgz"; | ||
4273 | path = fetchurl { | ||
4274 | name = "is_number___is_number_2.1.0.tgz"; | ||
4275 | url = "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz"; | ||
4276 | sha1 = "01fcbbb393463a548f2f466cce16dece49db908f"; | ||
4277 | }; | ||
4278 | } | ||
4279 | |||
4280 | { | ||
4281 | name = "is_number___is_number_3.0.0.tgz"; | ||
4282 | path = fetchurl { | ||
4283 | name = "is_number___is_number_3.0.0.tgz"; | ||
4284 | url = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz"; | ||
4285 | sha1 = "24fd6201a4782cf50561c810276afc7d12d71195"; | ||
4286 | }; | ||
4287 | } | ||
4288 | |||
4289 | { | ||
4290 | name = "is_number___is_number_4.0.0.tgz"; | ||
4291 | path = fetchurl { | ||
4292 | name = "is_number___is_number_4.0.0.tgz"; | ||
4293 | url = "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz"; | ||
4294 | sha1 = "0026e37f5454d73e356dfe6564699867c6a7f0ff"; | ||
4295 | }; | ||
4296 | } | ||
4297 | |||
4298 | { | ||
4299 | name = "is_plain_object___is_plain_object_2.0.4.tgz"; | ||
4300 | path = fetchurl { | ||
4301 | name = "is_plain_object___is_plain_object_2.0.4.tgz"; | ||
4302 | url = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz"; | ||
4303 | sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677"; | ||
4304 | }; | ||
4305 | } | ||
4306 | |||
4307 | { | ||
4308 | name = "is_posix_bracket___is_posix_bracket_0.1.1.tgz"; | ||
4309 | path = fetchurl { | ||
4310 | name = "is_posix_bracket___is_posix_bracket_0.1.1.tgz"; | ||
4311 | url = "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz"; | ||
4312 | sha1 = "3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"; | ||
4313 | }; | ||
4314 | } | ||
4315 | |||
4316 | { | ||
4317 | name = "is_primitive___is_primitive_2.0.0.tgz"; | ||
4318 | path = fetchurl { | ||
4319 | name = "is_primitive___is_primitive_2.0.0.tgz"; | ||
4320 | url = "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz"; | ||
4321 | sha1 = "207bab91638499c07b2adf240a41a87210034575"; | ||
4322 | }; | ||
4323 | } | ||
4324 | |||
4325 | { | ||
4326 | name = "is_promise___is_promise_2.1.0.tgz"; | ||
4327 | path = fetchurl { | ||
4328 | name = "is_promise___is_promise_2.1.0.tgz"; | ||
4329 | url = "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz"; | ||
4330 | sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"; | ||
4331 | }; | ||
4332 | } | ||
4333 | |||
4334 | { | ||
4335 | name = "is_redirect___is_redirect_1.0.0.tgz"; | ||
4336 | path = fetchurl { | ||
4337 | name = "is_redirect___is_redirect_1.0.0.tgz"; | ||
4338 | url = "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz"; | ||
4339 | sha1 = "1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"; | ||
4340 | }; | ||
4341 | } | ||
4342 | |||
4343 | { | ||
4344 | name = "is_regex___is_regex_1.0.5.tgz"; | ||
4345 | path = fetchurl { | ||
4346 | name = "is_regex___is_regex_1.0.5.tgz"; | ||
4347 | url = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz"; | ||
4348 | sha1 = "39d589a358bf18967f726967120b8fc1aed74eae"; | ||
4349 | }; | ||
4350 | } | ||
4351 | |||
4352 | { | ||
4353 | name = "is_relative___is_relative_1.0.0.tgz"; | ||
4354 | path = fetchurl { | ||
4355 | name = "is_relative___is_relative_1.0.0.tgz"; | ||
4356 | url = "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz"; | ||
4357 | sha1 = "a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"; | ||
4358 | }; | ||
4359 | } | ||
4360 | |||
4361 | { | ||
4362 | name = "is_root___is_root_0.1.0.tgz"; | ||
4363 | path = fetchurl { | ||
4364 | name = "is_root___is_root_0.1.0.tgz"; | ||
4365 | url = "https://registry.yarnpkg.com/is-root/-/is-root-0.1.0.tgz"; | ||
4366 | sha1 = "825e394ab593df2d73c5d0092fce507270b53dcb"; | ||
4367 | }; | ||
4368 | } | ||
4369 | |||
4370 | { | ||
4371 | name = "is_stream___is_stream_1.1.0.tgz"; | ||
4372 | path = fetchurl { | ||
4373 | name = "is_stream___is_stream_1.1.0.tgz"; | ||
4374 | url = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz"; | ||
4375 | sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"; | ||
4376 | }; | ||
4377 | } | ||
4378 | |||
4379 | { | ||
4380 | name = "is_typedarray___is_typedarray_1.0.0.tgz"; | ||
4381 | path = fetchurl { | ||
4382 | name = "is_typedarray___is_typedarray_1.0.0.tgz"; | ||
4383 | url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz"; | ||
4384 | sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a"; | ||
4385 | }; | ||
4386 | } | ||
4387 | |||
4388 | { | ||
4389 | name = "is_unc_path___is_unc_path_1.0.0.tgz"; | ||
4390 | path = fetchurl { | ||
4391 | name = "is_unc_path___is_unc_path_1.0.0.tgz"; | ||
4392 | url = "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz"; | ||
4393 | sha1 = "d731e8898ed090a12c352ad2eaed5095ad322c9d"; | ||
4394 | }; | ||
4395 | } | ||
4396 | |||
4397 | { | ||
4398 | name = "is_utf8___is_utf8_0.2.1.tgz"; | ||
4399 | path = fetchurl { | ||
4400 | name = "is_utf8___is_utf8_0.2.1.tgz"; | ||
4401 | url = "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz"; | ||
4402 | sha1 = "4b0da1442104d1b336340e80797e865cf39f7d72"; | ||
4403 | }; | ||
4404 | } | ||
4405 | |||
4406 | { | ||
4407 | name = "is_windows___is_windows_1.0.2.tgz"; | ||
4408 | path = fetchurl { | ||
4409 | name = "is_windows___is_windows_1.0.2.tgz"; | ||
4410 | url = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz"; | ||
4411 | sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d"; | ||
4412 | }; | ||
4413 | } | ||
4414 | |||
4415 | { | ||
4416 | name = "is___is_3.3.0.tgz"; | ||
4417 | path = fetchurl { | ||
4418 | name = "is___is_3.3.0.tgz"; | ||
4419 | url = "https://registry.yarnpkg.com/is/-/is-3.3.0.tgz"; | ||
4420 | sha1 = "61cff6dd3c4193db94a3d62582072b44e5645d79"; | ||
4421 | }; | ||
4422 | } | ||
4423 | |||
4424 | { | ||
4425 | name = "isarray___isarray_0.0.1.tgz"; | ||
4426 | path = fetchurl { | ||
4427 | name = "isarray___isarray_0.0.1.tgz"; | ||
4428 | url = "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz"; | ||
4429 | sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf"; | ||
4430 | }; | ||
4431 | } | ||
4432 | |||
4433 | { | ||
4434 | name = "isarray___isarray_1.0.0.tgz"; | ||
4435 | path = fetchurl { | ||
4436 | name = "isarray___isarray_1.0.0.tgz"; | ||
4437 | url = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz"; | ||
4438 | sha1 = "bb935d48582cba168c06834957a54a3e07124f11"; | ||
4439 | }; | ||
4440 | } | ||
4441 | |||
4442 | { | ||
4443 | name = "isbinaryfile___isbinaryfile_3.0.3.tgz"; | ||
4444 | path = fetchurl { | ||
4445 | name = "isbinaryfile___isbinaryfile_3.0.3.tgz"; | ||
4446 | url = "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz"; | ||
4447 | sha1 = "5d6def3edebf6e8ca8cae9c30183a804b5f8be80"; | ||
4448 | }; | ||
4449 | } | ||
4450 | |||
4451 | { | ||
4452 | name = "isexe___isexe_2.0.0.tgz"; | ||
4453 | path = fetchurl { | ||
4454 | name = "isexe___isexe_2.0.0.tgz"; | ||
4455 | url = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz"; | ||
4456 | sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10"; | ||
4457 | }; | ||
4458 | } | ||
4459 | |||
4460 | { | ||
4461 | name = "isobject___isobject_2.1.0.tgz"; | ||
4462 | path = fetchurl { | ||
4463 | name = "isobject___isobject_2.1.0.tgz"; | ||
4464 | url = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz"; | ||
4465 | sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89"; | ||
4466 | }; | ||
4467 | } | ||
4468 | |||
4469 | { | ||
4470 | name = "isobject___isobject_3.0.1.tgz"; | ||
4471 | path = fetchurl { | ||
4472 | name = "isobject___isobject_3.0.1.tgz"; | ||
4473 | url = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz"; | ||
4474 | sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"; | ||
4475 | }; | ||
4476 | } | ||
4477 | |||
4478 | { | ||
4479 | name = "isstream___isstream_0.1.2.tgz"; | ||
4480 | path = fetchurl { | ||
4481 | name = "isstream___isstream_0.1.2.tgz"; | ||
4482 | url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz"; | ||
4483 | sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a"; | ||
4484 | }; | ||
4485 | } | ||
4486 | |||
4487 | { | ||
4488 | name = "istanbul___istanbul_0.4.5.tgz"; | ||
4489 | path = fetchurl { | ||
4490 | name = "istanbul___istanbul_0.4.5.tgz"; | ||
4491 | url = "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz"; | ||
4492 | sha1 = "65c7d73d4c4da84d4f3ac310b918fb0b8033733b"; | ||
4493 | }; | ||
4494 | } | ||
4495 | |||
4496 | { | ||
4497 | name = "istextorbinary___istextorbinary_1.0.2.tgz"; | ||
4498 | path = fetchurl { | ||
4499 | name = "istextorbinary___istextorbinary_1.0.2.tgz"; | ||
4500 | url = "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-1.0.2.tgz"; | ||
4501 | sha1 = "ace19354d1a9a0173efeb1084ce0f87b0ad7decf"; | ||
4502 | }; | ||
4503 | } | ||
4504 | |||
4505 | { | ||
4506 | name = "jasmine_core___jasmine_core_2.99.1.tgz"; | ||
4507 | path = fetchurl { | ||
4508 | name = "jasmine_core___jasmine_core_2.99.1.tgz"; | ||
4509 | url = "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.99.1.tgz"; | ||
4510 | sha1 = "e6400df1e6b56e130b61c4bcd093daa7f6e8ca15"; | ||
4511 | }; | ||
4512 | } | ||
4513 | |||
4514 | { | ||
4515 | name = "js_base64___js_base64_2.5.2.tgz"; | ||
4516 | path = fetchurl { | ||
4517 | name = "js_base64___js_base64_2.5.2.tgz"; | ||
4518 | url = "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz"; | ||
4519 | sha1 = "313b6274dda718f714d00b3330bbae6e38e90209"; | ||
4520 | }; | ||
4521 | } | ||
4522 | |||
4523 | { | ||
4524 | name = "js_string_escape___js_string_escape_1.0.1.tgz"; | ||
4525 | path = fetchurl { | ||
4526 | name = "js_string_escape___js_string_escape_1.0.1.tgz"; | ||
4527 | url = "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz"; | ||
4528 | sha1 = "e2625badbc0d67c7533e9edc1068c587ae4137ef"; | ||
4529 | }; | ||
4530 | } | ||
4531 | |||
4532 | { | ||
4533 | name = "js_stringify___js_stringify_1.0.2.tgz"; | ||
4534 | path = fetchurl { | ||
4535 | name = "js_stringify___js_stringify_1.0.2.tgz"; | ||
4536 | url = "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz"; | ||
4537 | sha1 = "1736fddfd9724f28a3682adc6230ae7e4e9679db"; | ||
4538 | }; | ||
4539 | } | ||
4540 | |||
4541 | { | ||
4542 | name = "js_yaml___js_yaml_3.13.1.tgz"; | ||
4543 | path = fetchurl { | ||
4544 | name = "js_yaml___js_yaml_3.13.1.tgz"; | ||
4545 | url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz"; | ||
4546 | sha1 = "aff151b30bfdfa8e49e05da22e7415e9dfa37847"; | ||
4547 | }; | ||
4548 | } | ||
4549 | |||
4550 | { | ||
4551 | name = "js_yaml___js_yaml_3.0.2.tgz"; | ||
4552 | path = fetchurl { | ||
4553 | name = "js_yaml___js_yaml_3.0.2.tgz"; | ||
4554 | url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.0.2.tgz"; | ||
4555 | sha1 = "9937865f8e897a5e894e73c2c5cf2e89b32eb771"; | ||
4556 | }; | ||
4557 | } | ||
4558 | |||
4559 | { | ||
4560 | name = "jsbn___jsbn_0.1.1.tgz"; | ||
4561 | path = fetchurl { | ||
4562 | name = "jsbn___jsbn_0.1.1.tgz"; | ||
4563 | url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz"; | ||
4564 | sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"; | ||
4565 | }; | ||
4566 | } | ||
4567 | |||
4568 | { | ||
4569 | name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz"; | ||
4570 | path = fetchurl { | ||
4571 | name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz"; | ||
4572 | url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"; | ||
4573 | sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660"; | ||
4574 | }; | ||
4575 | } | ||
4576 | |||
4577 | { | ||
4578 | name = "json_schema___json_schema_0.2.3.tgz"; | ||
4579 | path = fetchurl { | ||
4580 | name = "json_schema___json_schema_0.2.3.tgz"; | ||
4581 | url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz"; | ||
4582 | sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13"; | ||
4583 | }; | ||
4584 | } | ||
4585 | |||
4586 | { | ||
4587 | name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz"; | ||
4588 | path = fetchurl { | ||
4589 | name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz"; | ||
4590 | url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"; | ||
4591 | sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"; | ||
4592 | }; | ||
4593 | } | ||
4594 | |||
4595 | { | ||
4596 | name = "json3___json3_3.3.2.tgz"; | ||
4597 | path = fetchurl { | ||
4598 | name = "json3___json3_3.3.2.tgz"; | ||
4599 | url = "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz"; | ||
4600 | sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1"; | ||
4601 | }; | ||
4602 | } | ||
4603 | |||
4604 | { | ||
4605 | name = "jsonify___jsonify_0.0.0.tgz"; | ||
4606 | path = fetchurl { | ||
4607 | name = "jsonify___jsonify_0.0.0.tgz"; | ||
4608 | url = "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz"; | ||
4609 | sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73"; | ||
4610 | }; | ||
4611 | } | ||
4612 | |||
4613 | { | ||
4614 | name = "jsonparse___jsonparse_0.0.5.tgz"; | ||
4615 | path = fetchurl { | ||
4616 | name = "jsonparse___jsonparse_0.0.5.tgz"; | ||
4617 | url = "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz"; | ||
4618 | sha1 = "330542ad3f0a654665b778f3eb2d9a9fa507ac64"; | ||
4619 | }; | ||
4620 | } | ||
4621 | |||
4622 | { | ||
4623 | name = "jsprim___jsprim_1.4.1.tgz"; | ||
4624 | path = fetchurl { | ||
4625 | name = "jsprim___jsprim_1.4.1.tgz"; | ||
4626 | url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz"; | ||
4627 | sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"; | ||
4628 | }; | ||
4629 | } | ||
4630 | |||
4631 | { | ||
4632 | name = "jstransformer___jstransformer_1.0.0.tgz"; | ||
4633 | path = fetchurl { | ||
4634 | name = "jstransformer___jstransformer_1.0.0.tgz"; | ||
4635 | url = "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz"; | ||
4636 | sha1 = "ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3"; | ||
4637 | }; | ||
4638 | } | ||
4639 | |||
4640 | { | ||
4641 | name = "junk___junk_0.3.0.tgz"; | ||
4642 | path = fetchurl { | ||
4643 | name = "junk___junk_0.3.0.tgz"; | ||
4644 | url = "https://registry.yarnpkg.com/junk/-/junk-0.3.0.tgz"; | ||
4645 | sha1 = "6c89c636f6e99898d8efbfc50430db40be71e10c"; | ||
4646 | }; | ||
4647 | } | ||
4648 | |||
4649 | { | ||
4650 | name = "karma_chrome_launcher___karma_chrome_launcher_2.1.1.tgz"; | ||
4651 | path = fetchurl { | ||
4652 | name = "karma_chrome_launcher___karma_chrome_launcher_2.1.1.tgz"; | ||
4653 | url = "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz"; | ||
4654 | sha1 = "216879c68ac04d8d5140e99619ba04b59afd46cf"; | ||
4655 | }; | ||
4656 | } | ||
4657 | |||
4658 | { | ||
4659 | name = "karma_coffee_preprocessor___karma_coffee_preprocessor_0.3.0.tgz"; | ||
4660 | path = fetchurl { | ||
4661 | name = "karma_coffee_preprocessor___karma_coffee_preprocessor_0.3.0.tgz"; | ||
4662 | url = "https://registry.yarnpkg.com/karma-coffee-preprocessor/-/karma-coffee-preprocessor-0.3.0.tgz"; | ||
4663 | sha1 = "a4d8dc2b145bfef458a203d308b63bc03c9b4259"; | ||
4664 | }; | ||
4665 | } | ||
4666 | |||
4667 | { | ||
4668 | name = "karma_coverage___karma_coverage_0.5.5.tgz"; | ||
4669 | path = fetchurl { | ||
4670 | name = "karma_coverage___karma_coverage_0.5.5.tgz"; | ||
4671 | url = "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-0.5.5.tgz"; | ||
4672 | sha1 = "b0d58b1025d59d5c6620263186f1d58f5d5348c5"; | ||
4673 | }; | ||
4674 | } | ||
4675 | |||
4676 | { | ||
4677 | name = "karma_jasmine___karma_jasmine_0.3.8.tgz"; | ||
4678 | path = fetchurl { | ||
4679 | name = "karma_jasmine___karma_jasmine_0.3.8.tgz"; | ||
4680 | url = "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-0.3.8.tgz"; | ||
4681 | sha1 = "5b6457791ad9b89aa173f079e3ebe1b8c805236c"; | ||
4682 | }; | ||
4683 | } | ||
4684 | |||
4685 | { | ||
4686 | name = "karma_sourcemap_loader___karma_sourcemap_loader_0.3.7.tgz"; | ||
4687 | path = fetchurl { | ||
4688 | name = "karma_sourcemap_loader___karma_sourcemap_loader_0.3.7.tgz"; | ||
4689 | url = "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz"; | ||
4690 | sha1 = "91322c77f8f13d46fed062b042e1009d4c4505d8"; | ||
4691 | }; | ||
4692 | } | ||
4693 | |||
4694 | { | ||
4695 | name = "karma___karma_0.13.22.tgz"; | ||
4696 | path = fetchurl { | ||
4697 | name = "karma___karma_0.13.22.tgz"; | ||
4698 | url = "https://registry.yarnpkg.com/karma/-/karma-0.13.22.tgz"; | ||
4699 | sha1 = "07750b1bd063d7e7e7b91bcd2e6354d8f2aa8744"; | ||
4700 | }; | ||
4701 | } | ||
4702 | |||
4703 | { | ||
4704 | name = "kind_of___kind_of_3.2.2.tgz"; | ||
4705 | path = fetchurl { | ||
4706 | name = "kind_of___kind_of_3.2.2.tgz"; | ||
4707 | url = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz"; | ||
4708 | sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64"; | ||
4709 | }; | ||
4710 | } | ||
4711 | |||
4712 | { | ||
4713 | name = "kind_of___kind_of_4.0.0.tgz"; | ||
4714 | path = fetchurl { | ||
4715 | name = "kind_of___kind_of_4.0.0.tgz"; | ||
4716 | url = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz"; | ||
4717 | sha1 = "20813df3d712928b207378691a45066fae72dd57"; | ||
4718 | }; | ||
4719 | } | ||
4720 | |||
4721 | { | ||
4722 | name = "kind_of___kind_of_5.1.0.tgz"; | ||
4723 | path = fetchurl { | ||
4724 | name = "kind_of___kind_of_5.1.0.tgz"; | ||
4725 | url = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz"; | ||
4726 | sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d"; | ||
4727 | }; | ||
4728 | } | ||
4729 | |||
4730 | { | ||
4731 | name = "kind_of___kind_of_6.0.3.tgz"; | ||
4732 | path = fetchurl { | ||
4733 | name = "kind_of___kind_of_6.0.3.tgz"; | ||
4734 | url = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz"; | ||
4735 | sha1 = "07c05034a6c349fa06e24fa35aa76db4580ce4dd"; | ||
4736 | }; | ||
4737 | } | ||
4738 | |||
4739 | { | ||
4740 | name = "latest_version___latest_version_1.0.1.tgz"; | ||
4741 | path = fetchurl { | ||
4742 | name = "latest_version___latest_version_1.0.1.tgz"; | ||
4743 | url = "https://registry.yarnpkg.com/latest-version/-/latest-version-1.0.1.tgz"; | ||
4744 | sha1 = "72cfc46e3e8d1be651e1ebb54ea9f6ea96f374bb"; | ||
4745 | }; | ||
4746 | } | ||
4747 | |||
4748 | { | ||
4749 | name = "lazy_cache___lazy_cache_1.0.4.tgz"; | ||
4750 | path = fetchurl { | ||
4751 | name = "lazy_cache___lazy_cache_1.0.4.tgz"; | ||
4752 | url = "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz"; | ||
4753 | sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"; | ||
4754 | }; | ||
4755 | } | ||
4756 | |||
4757 | { | ||
4758 | name = "lazypipe___lazypipe_1.0.2.tgz"; | ||
4759 | path = fetchurl { | ||
4760 | name = "lazypipe___lazypipe_1.0.2.tgz"; | ||
4761 | url = "https://registry.yarnpkg.com/lazypipe/-/lazypipe-1.0.2.tgz"; | ||
4762 | sha1 = "b66f64ed7fd8b04869f1f1bcb795dbbaa80e418c"; | ||
4763 | }; | ||
4764 | } | ||
4765 | |||
4766 | { | ||
4767 | name = "lcid___lcid_1.0.0.tgz"; | ||
4768 | path = fetchurl { | ||
4769 | name = "lcid___lcid_1.0.0.tgz"; | ||
4770 | url = "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz"; | ||
4771 | sha1 = "308accafa0bc483a3867b4b6f2b9506251d1b835"; | ||
4772 | }; | ||
4773 | } | ||
4774 | |||
4775 | { | ||
4776 | name = "less___less_1.7.5.tgz"; | ||
4777 | path = fetchurl { | ||
4778 | name = "less___less_1.7.5.tgz"; | ||
4779 | url = "https://registry.yarnpkg.com/less/-/less-1.7.5.tgz"; | ||
4780 | sha1 = "4f220cf7288a27eaca739df6e4808a2d4c0d5756"; | ||
4781 | }; | ||
4782 | } | ||
4783 | |||
4784 | { | ||
4785 | name = "levn___levn_0.3.0.tgz"; | ||
4786 | path = fetchurl { | ||
4787 | name = "levn___levn_0.3.0.tgz"; | ||
4788 | url = "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz"; | ||
4789 | sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee"; | ||
4790 | }; | ||
4791 | } | ||
4792 | |||
4793 | { | ||
4794 | name = "lexical_scope___lexical_scope_1.1.1.tgz"; | ||
4795 | path = fetchurl { | ||
4796 | name = "lexical_scope___lexical_scope_1.1.1.tgz"; | ||
4797 | url = "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.1.1.tgz"; | ||
4798 | sha1 = "debac1067435f1359d90fcfd9e94bcb2ee47b2bf"; | ||
4799 | }; | ||
4800 | } | ||
4801 | |||
4802 | { | ||
4803 | name = "liftoff___liftoff_2.5.0.tgz"; | ||
4804 | path = fetchurl { | ||
4805 | name = "liftoff___liftoff_2.5.0.tgz"; | ||
4806 | url = "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz"; | ||
4807 | sha1 = "2009291bb31cea861bbf10a7c15a28caf75c31ec"; | ||
4808 | }; | ||
4809 | } | ||
4810 | |||
4811 | { | ||
4812 | name = "livereload_js___livereload_js_2.4.0.tgz"; | ||
4813 | path = fetchurl { | ||
4814 | name = "livereload_js___livereload_js_2.4.0.tgz"; | ||
4815 | url = "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz"; | ||
4816 | sha1 = "447c31cf1ea9ab52fc20db615c5ddf678f78009c"; | ||
4817 | }; | ||
4818 | } | ||
4819 | |||
4820 | { | ||
4821 | name = "load_json_file___load_json_file_1.1.0.tgz"; | ||
4822 | path = fetchurl { | ||
4823 | name = "load_json_file___load_json_file_1.1.0.tgz"; | ||
4824 | url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz"; | ||
4825 | sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0"; | ||
4826 | }; | ||
4827 | } | ||
4828 | |||
4829 | { | ||
4830 | name = "lockfile___lockfile_0.4.3.tgz"; | ||
4831 | path = fetchurl { | ||
4832 | name = "lockfile___lockfile_0.4.3.tgz"; | ||
4833 | url = "https://registry.yarnpkg.com/lockfile/-/lockfile-0.4.3.tgz"; | ||
4834 | sha1 = "79b965ee9b32d9dd24b59cf81205e6dcb6d3b224"; | ||
4835 | }; | ||
4836 | } | ||
4837 | |||
4838 | { | ||
4839 | name = "lodash._baseassign___lodash._baseassign_3.2.0.tgz"; | ||
4840 | path = fetchurl { | ||
4841 | name = "lodash._baseassign___lodash._baseassign_3.2.0.tgz"; | ||
4842 | url = "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz"; | ||
4843 | sha1 = "8c38a099500f215ad09e59f1722fd0c52bfe0a4e"; | ||
4844 | }; | ||
4845 | } | ||
4846 | |||
4847 | { | ||
4848 | name = "lodash._basecopy___lodash._basecopy_3.0.1.tgz"; | ||
4849 | path = fetchurl { | ||
4850 | name = "lodash._basecopy___lodash._basecopy_3.0.1.tgz"; | ||
4851 | url = "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz"; | ||
4852 | sha1 = "8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"; | ||
4853 | }; | ||
4854 | } | ||
4855 | |||
4856 | { | ||
4857 | name = "lodash._basetostring___lodash._basetostring_3.0.1.tgz"; | ||
4858 | path = fetchurl { | ||
4859 | name = "lodash._basetostring___lodash._basetostring_3.0.1.tgz"; | ||
4860 | url = "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz"; | ||
4861 | sha1 = "d1861d877f824a52f669832dcaf3ee15566a07d5"; | ||
4862 | }; | ||
4863 | } | ||
4864 | |||
4865 | { | ||
4866 | name = "lodash._basevalues___lodash._basevalues_3.0.0.tgz"; | ||
4867 | path = fetchurl { | ||
4868 | name = "lodash._basevalues___lodash._basevalues_3.0.0.tgz"; | ||
4869 | url = "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz"; | ||
4870 | sha1 = "5b775762802bde3d3297503e26300820fdf661b7"; | ||
4871 | }; | ||
4872 | } | ||
4873 | |||
4874 | { | ||
4875 | name = "lodash._bindcallback___lodash._bindcallback_3.0.1.tgz"; | ||
4876 | path = fetchurl { | ||
4877 | name = "lodash._bindcallback___lodash._bindcallback_3.0.1.tgz"; | ||
4878 | url = "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz"; | ||
4879 | sha1 = "e531c27644cf8b57a99e17ed95b35c748789392e"; | ||
4880 | }; | ||
4881 | } | ||
4882 | |||
4883 | { | ||
4884 | name = "lodash._createassigner___lodash._createassigner_3.1.1.tgz"; | ||
4885 | path = fetchurl { | ||
4886 | name = "lodash._createassigner___lodash._createassigner_3.1.1.tgz"; | ||
4887 | url = "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz"; | ||
4888 | sha1 = "838a5bae2fdaca63ac22dee8e19fa4e6d6970b11"; | ||
4889 | }; | ||
4890 | } | ||
4891 | |||
4892 | { | ||
4893 | name = "lodash._escapehtmlchar___lodash._escapehtmlchar_2.4.1.tgz"; | ||
4894 | path = fetchurl { | ||
4895 | name = "lodash._escapehtmlchar___lodash._escapehtmlchar_2.4.1.tgz"; | ||
4896 | url = "https://registry.yarnpkg.com/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz"; | ||
4897 | sha1 = "df67c3bb6b7e8e1e831ab48bfa0795b92afe899d"; | ||
4898 | }; | ||
4899 | } | ||
4900 | |||
4901 | { | ||
4902 | name = "lodash._escapestringchar___lodash._escapestringchar_2.4.1.tgz"; | ||
4903 | path = fetchurl { | ||
4904 | name = "lodash._escapestringchar___lodash._escapestringchar_2.4.1.tgz"; | ||
4905 | url = "https://registry.yarnpkg.com/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz"; | ||
4906 | sha1 = "ecfe22618a2ade50bfeea43937e51df66f0edb72"; | ||
4907 | }; | ||
4908 | } | ||
4909 | |||
4910 | { | ||
4911 | name = "lodash._getnative___lodash._getnative_3.9.1.tgz"; | ||
4912 | path = fetchurl { | ||
4913 | name = "lodash._getnative___lodash._getnative_3.9.1.tgz"; | ||
4914 | url = "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz"; | ||
4915 | sha1 = "570bc7dede46d61cdcde687d65d3eecbaa3aaff5"; | ||
4916 | }; | ||
4917 | } | ||
4918 | |||
4919 | { | ||
4920 | name = "lodash._htmlescapes___lodash._htmlescapes_2.4.1.tgz"; | ||
4921 | path = fetchurl { | ||
4922 | name = "lodash._htmlescapes___lodash._htmlescapes_2.4.1.tgz"; | ||
4923 | url = "https://registry.yarnpkg.com/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz"; | ||
4924 | sha1 = "32d14bf0844b6de6f8b62a051b4f67c228b624cb"; | ||
4925 | }; | ||
4926 | } | ||
4927 | |||
4928 | { | ||
4929 | name = "lodash._isiterateecall___lodash._isiterateecall_3.0.9.tgz"; | ||
4930 | path = fetchurl { | ||
4931 | name = "lodash._isiterateecall___lodash._isiterateecall_3.0.9.tgz"; | ||
4932 | url = "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz"; | ||
4933 | sha1 = "5203ad7ba425fae842460e696db9cf3e6aac057c"; | ||
4934 | }; | ||
4935 | } | ||
4936 | |||
4937 | { | ||
4938 | name = "lodash._isnative___lodash._isnative_2.4.1.tgz"; | ||
4939 | path = fetchurl { | ||
4940 | name = "lodash._isnative___lodash._isnative_2.4.1.tgz"; | ||
4941 | url = "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz"; | ||
4942 | sha1 = "3ea6404b784a7be836c7b57580e1cdf79b14832c"; | ||
4943 | }; | ||
4944 | } | ||
4945 | |||
4946 | { | ||
4947 | name = "lodash._objecttypes___lodash._objecttypes_2.4.1.tgz"; | ||
4948 | path = fetchurl { | ||
4949 | name = "lodash._objecttypes___lodash._objecttypes_2.4.1.tgz"; | ||
4950 | url = "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz"; | ||
4951 | sha1 = "7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11"; | ||
4952 | }; | ||
4953 | } | ||
4954 | |||
4955 | { | ||
4956 | name = "lodash._reescape___lodash._reescape_3.0.0.tgz"; | ||
4957 | path = fetchurl { | ||
4958 | name = "lodash._reescape___lodash._reescape_3.0.0.tgz"; | ||
4959 | url = "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz"; | ||
4960 | sha1 = "2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a"; | ||
4961 | }; | ||
4962 | } | ||
4963 | |||
4964 | { | ||
4965 | name = "lodash._reevaluate___lodash._reevaluate_3.0.0.tgz"; | ||
4966 | path = fetchurl { | ||
4967 | name = "lodash._reevaluate___lodash._reevaluate_3.0.0.tgz"; | ||
4968 | url = "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz"; | ||
4969 | sha1 = "58bc74c40664953ae0b124d806996daca431e2ed"; | ||
4970 | }; | ||
4971 | } | ||
4972 | |||
4973 | { | ||
4974 | name = "lodash._reinterpolate___lodash._reinterpolate_2.4.1.tgz"; | ||
4975 | path = fetchurl { | ||
4976 | name = "lodash._reinterpolate___lodash._reinterpolate_2.4.1.tgz"; | ||
4977 | url = "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz"; | ||
4978 | sha1 = "4f1227aa5a8711fc632f5b07a1f4607aab8b3222"; | ||
4979 | }; | ||
4980 | } | ||
4981 | |||
4982 | { | ||
4983 | name = "lodash._reinterpolate___lodash._reinterpolate_3.0.0.tgz"; | ||
4984 | path = fetchurl { | ||
4985 | name = "lodash._reinterpolate___lodash._reinterpolate_3.0.0.tgz"; | ||
4986 | url = "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz"; | ||
4987 | sha1 = "0ccf2d89166af03b3663c796538b75ac6e114d9d"; | ||
4988 | }; | ||
4989 | } | ||
4990 | |||
4991 | { | ||
4992 | name = "lodash._reunescapedhtml___lodash._reunescapedhtml_2.4.1.tgz"; | ||
4993 | path = fetchurl { | ||
4994 | name = "lodash._reunescapedhtml___lodash._reunescapedhtml_2.4.1.tgz"; | ||
4995 | url = "https://registry.yarnpkg.com/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz"; | ||
4996 | sha1 = "747c4fc40103eb3bb8a0976e571f7a2659e93ba7"; | ||
4997 | }; | ||
4998 | } | ||
4999 | |||
5000 | { | ||
5001 | name = "lodash._root___lodash._root_3.0.1.tgz"; | ||
5002 | path = fetchurl { | ||
5003 | name = "lodash._root___lodash._root_3.0.1.tgz"; | ||
5004 | url = "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz"; | ||
5005 | sha1 = "fba1c4524c19ee9a5f8136b4609f017cf4ded692"; | ||
5006 | }; | ||
5007 | } | ||
5008 | |||
5009 | { | ||
5010 | name = "lodash._shimkeys___lodash._shimkeys_2.4.1.tgz"; | ||
5011 | path = fetchurl { | ||
5012 | name = "lodash._shimkeys___lodash._shimkeys_2.4.1.tgz"; | ||
5013 | url = "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz"; | ||
5014 | sha1 = "6e9cc9666ff081f0b5a6c978b83e242e6949d203"; | ||
5015 | }; | ||
5016 | } | ||
5017 | |||
5018 | { | ||
5019 | name = "lodash.assign___lodash.assign_4.2.0.tgz"; | ||
5020 | path = fetchurl { | ||
5021 | name = "lodash.assign___lodash.assign_4.2.0.tgz"; | ||
5022 | url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz"; | ||
5023 | sha1 = "0d99f3ccd7a6d261d19bdaeb9245005d285808e7"; | ||
5024 | }; | ||
5025 | } | ||
5026 | |||
5027 | { | ||
5028 | name = "lodash.assign___lodash.assign_3.2.0.tgz"; | ||
5029 | path = fetchurl { | ||
5030 | name = "lodash.assign___lodash.assign_3.2.0.tgz"; | ||
5031 | url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz"; | ||
5032 | sha1 = "3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa"; | ||
5033 | }; | ||
5034 | } | ||
5035 | |||
5036 | { | ||
5037 | name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz"; | ||
5038 | path = fetchurl { | ||
5039 | name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz"; | ||
5040 | url = "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz"; | ||
5041 | sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef"; | ||
5042 | }; | ||
5043 | } | ||
5044 | |||
5045 | { | ||
5046 | name = "lodash.debounce___lodash.debounce_2.4.1.tgz"; | ||
5047 | path = fetchurl { | ||
5048 | name = "lodash.debounce___lodash.debounce_2.4.1.tgz"; | ||
5049 | url = "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-2.4.1.tgz"; | ||
5050 | sha1 = "d8cead246ec4b926e8b85678fc396bfeba8cc6fc"; | ||
5051 | }; | ||
5052 | } | ||
5053 | |||
5054 | { | ||
5055 | name = "lodash.defaults___lodash.defaults_2.4.1.tgz"; | ||
5056 | path = fetchurl { | ||
5057 | name = "lodash.defaults___lodash.defaults_2.4.1.tgz"; | ||
5058 | url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz"; | ||
5059 | sha1 = "a7e8885f05e68851144b6e12a8f3678026bc4c54"; | ||
5060 | }; | ||
5061 | } | ||
5062 | |||
5063 | { | ||
5064 | name = "lodash.defaults___lodash.defaults_4.2.0.tgz"; | ||
5065 | path = fetchurl { | ||
5066 | name = "lodash.defaults___lodash.defaults_4.2.0.tgz"; | ||
5067 | url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz"; | ||
5068 | sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c"; | ||
5069 | }; | ||
5070 | } | ||
5071 | |||
5072 | { | ||
5073 | name = "lodash.escape___lodash.escape_3.2.0.tgz"; | ||
5074 | path = fetchurl { | ||
5075 | name = "lodash.escape___lodash.escape_3.2.0.tgz"; | ||
5076 | url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz"; | ||
5077 | sha1 = "995ee0dc18c1b48cc92effae71a10aab5b487698"; | ||
5078 | }; | ||
5079 | } | ||
5080 | |||
5081 | { | ||
5082 | name = "lodash.escape___lodash.escape_2.4.1.tgz"; | ||
5083 | path = fetchurl { | ||
5084 | name = "lodash.escape___lodash.escape_2.4.1.tgz"; | ||
5085 | url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-2.4.1.tgz"; | ||
5086 | sha1 = "2ce12c5e084db0a57dda5e5d1eeeb9f5d175a3b4"; | ||
5087 | }; | ||
5088 | } | ||
5089 | |||
5090 | { | ||
5091 | name = "lodash.isarguments___lodash.isarguments_3.1.0.tgz"; | ||
5092 | path = fetchurl { | ||
5093 | name = "lodash.isarguments___lodash.isarguments_3.1.0.tgz"; | ||
5094 | url = "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz"; | ||
5095 | sha1 = "2f573d85c6a24289ff00663b491c1d338ff3458a"; | ||
5096 | }; | ||
5097 | } | ||
5098 | |||
5099 | { | ||
5100 | name = "lodash.isarray___lodash.isarray_3.0.4.tgz"; | ||
5101 | path = fetchurl { | ||
5102 | name = "lodash.isarray___lodash.isarray_3.0.4.tgz"; | ||
5103 | url = "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz"; | ||
5104 | sha1 = "79e4eb88c36a8122af86f844aa9bcd851b5fbb55"; | ||
5105 | }; | ||
5106 | } | ||
5107 | |||
5108 | { | ||
5109 | name = "lodash.isfunction___lodash.isfunction_2.4.1.tgz"; | ||
5110 | path = fetchurl { | ||
5111 | name = "lodash.isfunction___lodash.isfunction_2.4.1.tgz"; | ||
5112 | url = "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz"; | ||
5113 | sha1 = "2cfd575c73e498ab57e319b77fa02adef13a94d1"; | ||
5114 | }; | ||
5115 | } | ||
5116 | |||
5117 | { | ||
5118 | name = "lodash.isobject___lodash.isobject_2.4.1.tgz"; | ||
5119 | path = fetchurl { | ||
5120 | name = "lodash.isobject___lodash.isobject_2.4.1.tgz"; | ||
5121 | url = "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz"; | ||
5122 | sha1 = "5a2e47fe69953f1ee631a7eba1fe64d2d06558f5"; | ||
5123 | }; | ||
5124 | } | ||
5125 | |||
5126 | { | ||
5127 | name = "lodash.keys___lodash.keys_3.1.2.tgz"; | ||
5128 | path = fetchurl { | ||
5129 | name = "lodash.keys___lodash.keys_3.1.2.tgz"; | ||
5130 | url = "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz"; | ||
5131 | sha1 = "4dbc0472b156be50a0b286855d1bd0b0c656098a"; | ||
5132 | }; | ||
5133 | } | ||
5134 | |||
5135 | { | ||
5136 | name = "lodash.keys___lodash.keys_2.4.1.tgz"; | ||
5137 | path = fetchurl { | ||
5138 | name = "lodash.keys___lodash.keys_2.4.1.tgz"; | ||
5139 | url = "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz"; | ||
5140 | sha1 = "48dea46df8ff7632b10d706b8acb26591e2b3727"; | ||
5141 | }; | ||
5142 | } | ||
5143 | |||
5144 | { | ||
5145 | name = "lodash.now___lodash.now_2.4.1.tgz"; | ||
5146 | path = fetchurl { | ||
5147 | name = "lodash.now___lodash.now_2.4.1.tgz"; | ||
5148 | url = "https://registry.yarnpkg.com/lodash.now/-/lodash.now-2.4.1.tgz"; | ||
5149 | sha1 = "6872156500525185faf96785bb7fe7fe15b562c6"; | ||
5150 | }; | ||
5151 | } | ||
5152 | |||
5153 | { | ||
5154 | name = "lodash.restparam___lodash.restparam_3.6.1.tgz"; | ||
5155 | path = fetchurl { | ||
5156 | name = "lodash.restparam___lodash.restparam_3.6.1.tgz"; | ||
5157 | url = "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz"; | ||
5158 | sha1 = "936a4e309ef330a7645ed4145986c85ae5b20805"; | ||
5159 | }; | ||
5160 | } | ||
5161 | |||
5162 | { | ||
5163 | name = "lodash.template___lodash.template_2.4.1.tgz"; | ||
5164 | path = fetchurl { | ||
5165 | name = "lodash.template___lodash.template_2.4.1.tgz"; | ||
5166 | url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-2.4.1.tgz"; | ||
5167 | sha1 = "9e611007edf629129a974ab3c48b817b3e1cf20d"; | ||
5168 | }; | ||
5169 | } | ||
5170 | |||
5171 | { | ||
5172 | name = "lodash.template___lodash.template_3.6.2.tgz"; | ||
5173 | path = fetchurl { | ||
5174 | name = "lodash.template___lodash.template_3.6.2.tgz"; | ||
5175 | url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz"; | ||
5176 | sha1 = "f8cdecc6169a255be9098ae8b0c53d378931d14f"; | ||
5177 | }; | ||
5178 | } | ||
5179 | |||
5180 | { | ||
5181 | name = "lodash.template___lodash.template_4.5.0.tgz"; | ||
5182 | path = fetchurl { | ||
5183 | name = "lodash.template___lodash.template_4.5.0.tgz"; | ||
5184 | url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz"; | ||
5185 | sha1 = "f976195cf3f347d0d5f52483569fe8031ccce8ab"; | ||
5186 | }; | ||
5187 | } | ||
5188 | |||
5189 | { | ||
5190 | name = "lodash.templatesettings___lodash.templatesettings_3.1.1.tgz"; | ||
5191 | path = fetchurl { | ||
5192 | name = "lodash.templatesettings___lodash.templatesettings_3.1.1.tgz"; | ||
5193 | url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz"; | ||
5194 | sha1 = "fb307844753b66b9f1afa54e262c745307dba8e5"; | ||
5195 | }; | ||
5196 | } | ||
5197 | |||
5198 | { | ||
5199 | name = "lodash.templatesettings___lodash.templatesettings_4.2.0.tgz"; | ||
5200 | path = fetchurl { | ||
5201 | name = "lodash.templatesettings___lodash.templatesettings_4.2.0.tgz"; | ||
5202 | url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz"; | ||
5203 | sha1 = "e481310f049d3cf6d47e912ad09313b154f0fb33"; | ||
5204 | }; | ||
5205 | } | ||
5206 | |||
5207 | { | ||
5208 | name = "lodash.templatesettings___lodash.templatesettings_2.4.1.tgz"; | ||
5209 | path = fetchurl { | ||
5210 | name = "lodash.templatesettings___lodash.templatesettings_2.4.1.tgz"; | ||
5211 | url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz"; | ||
5212 | sha1 = "ea76c75d11eb86d4dbe89a83893bb861929ac699"; | ||
5213 | }; | ||
5214 | } | ||
5215 | |||
5216 | { | ||
5217 | name = "lodash.values___lodash.values_2.4.1.tgz"; | ||
5218 | path = fetchurl { | ||
5219 | name = "lodash.values___lodash.values_2.4.1.tgz"; | ||
5220 | url = "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz"; | ||
5221 | sha1 = "abf514436b3cb705001627978cbcf30b1280eea4"; | ||
5222 | }; | ||
5223 | } | ||
5224 | |||
5225 | { | ||
5226 | name = "lodash___lodash_2.4.2.tgz"; | ||
5227 | path = fetchurl { | ||
5228 | name = "lodash___lodash_2.4.2.tgz"; | ||
5229 | url = "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz"; | ||
5230 | sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e"; | ||
5231 | }; | ||
5232 | } | ||
5233 | |||
5234 | { | ||
5235 | name = "lodash___lodash_3.10.1.tgz"; | ||
5236 | path = fetchurl { | ||
5237 | name = "lodash___lodash_3.10.1.tgz"; | ||
5238 | url = "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz"; | ||
5239 | sha1 = "5bf45e8e49ba4189e17d482789dfd15bd140b7b6"; | ||
5240 | }; | ||
5241 | } | ||
5242 | |||
5243 | { | ||
5244 | name = "lodash___lodash_4.17.15.tgz"; | ||
5245 | path = fetchurl { | ||
5246 | name = "lodash___lodash_4.17.15.tgz"; | ||
5247 | url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz"; | ||
5248 | sha1 = "b447f6670a0455bbfeedd11392eff330ea097548"; | ||
5249 | }; | ||
5250 | } | ||
5251 | |||
5252 | { | ||
5253 | name = "lodash___lodash_1.0.2.tgz"; | ||
5254 | path = fetchurl { | ||
5255 | name = "lodash___lodash_1.0.2.tgz"; | ||
5256 | url = "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz"; | ||
5257 | sha1 = "8f57560c83b59fc270bd3d561b690043430e2551"; | ||
5258 | }; | ||
5259 | } | ||
5260 | |||
5261 | { | ||
5262 | name = "log4js___log4js_0.6.38.tgz"; | ||
5263 | path = fetchurl { | ||
5264 | name = "log4js___log4js_0.6.38.tgz"; | ||
5265 | url = "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz"; | ||
5266 | sha1 = "2c494116695d6fb25480943d3fc872e662a522fd"; | ||
5267 | }; | ||
5268 | } | ||
5269 | |||
5270 | { | ||
5271 | name = "longest___longest_1.0.1.tgz"; | ||
5272 | path = fetchurl { | ||
5273 | name = "longest___longest_1.0.1.tgz"; | ||
5274 | url = "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz"; | ||
5275 | sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097"; | ||
5276 | }; | ||
5277 | } | ||
5278 | |||
5279 | { | ||
5280 | name = "loophole___loophole_1.1.0.tgz"; | ||
5281 | path = fetchurl { | ||
5282 | name = "loophole___loophole_1.1.0.tgz"; | ||
5283 | url = "https://registry.yarnpkg.com/loophole/-/loophole-1.1.0.tgz"; | ||
5284 | sha1 = "37949fea453b6256acc725c320ce0c5a7f70a2bd"; | ||
5285 | }; | ||
5286 | } | ||
5287 | |||
5288 | { | ||
5289 | name = "loud_rejection___loud_rejection_1.6.0.tgz"; | ||
5290 | path = fetchurl { | ||
5291 | name = "loud_rejection___loud_rejection_1.6.0.tgz"; | ||
5292 | url = "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz"; | ||
5293 | sha1 = "5b46f80147edee578870f086d04821cf998e551f"; | ||
5294 | }; | ||
5295 | } | ||
5296 | |||
5297 | { | ||
5298 | name = "lowercase_keys___lowercase_keys_1.0.1.tgz"; | ||
5299 | path = fetchurl { | ||
5300 | name = "lowercase_keys___lowercase_keys_1.0.1.tgz"; | ||
5301 | url = "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz"; | ||
5302 | sha1 = "6f9e30b47084d971a7c820ff15a6c5167b74c26f"; | ||
5303 | }; | ||
5304 | } | ||
5305 | |||
5306 | { | ||
5307 | name = "lru_cache___lru_cache_2.7.3.tgz"; | ||
5308 | path = fetchurl { | ||
5309 | name = "lru_cache___lru_cache_2.7.3.tgz"; | ||
5310 | url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz"; | ||
5311 | sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952"; | ||
5312 | }; | ||
5313 | } | ||
5314 | |||
5315 | { | ||
5316 | name = "lru_cache___lru_cache_4.1.5.tgz"; | ||
5317 | path = fetchurl { | ||
5318 | name = "lru_cache___lru_cache_4.1.5.tgz"; | ||
5319 | url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz"; | ||
5320 | sha1 = "8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"; | ||
5321 | }; | ||
5322 | } | ||
5323 | |||
5324 | { | ||
5325 | name = "lru_cache___lru_cache_2.3.1.tgz"; | ||
5326 | path = fetchurl { | ||
5327 | name = "lru_cache___lru_cache_2.3.1.tgz"; | ||
5328 | url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.3.1.tgz"; | ||
5329 | sha1 = "b3adf6b3d856e954e2c390e6cef22081245a53d6"; | ||
5330 | }; | ||
5331 | } | ||
5332 | |||
5333 | { | ||
5334 | name = "lru_cache___lru_cache_2.5.2.tgz"; | ||
5335 | path = fetchurl { | ||
5336 | name = "lru_cache___lru_cache_2.5.2.tgz"; | ||
5337 | url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.5.2.tgz"; | ||
5338 | sha1 = "1fddad938aae1263ce138680be1b3f591c0ab41c"; | ||
5339 | }; | ||
5340 | } | ||
5341 | |||
5342 | { | ||
5343 | name = "lru_queue___lru_queue_0.1.0.tgz"; | ||
5344 | path = fetchurl { | ||
5345 | name = "lru_queue___lru_queue_0.1.0.tgz"; | ||
5346 | url = "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz"; | ||
5347 | sha1 = "2738bd9f0d3cf4f84490c5736c48699ac632cda3"; | ||
5348 | }; | ||
5349 | } | ||
5350 | |||
5351 | { | ||
5352 | name = "make_iterator___make_iterator_1.0.1.tgz"; | ||
5353 | path = fetchurl { | ||
5354 | name = "make_iterator___make_iterator_1.0.1.tgz"; | ||
5355 | url = "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz"; | ||
5356 | sha1 = "29b33f312aa8f547c4a5e490f56afcec99133ad6"; | ||
5357 | }; | ||
5358 | } | ||
5359 | |||
5360 | { | ||
5361 | name = "map_cache___map_cache_0.2.2.tgz"; | ||
5362 | path = fetchurl { | ||
5363 | name = "map_cache___map_cache_0.2.2.tgz"; | ||
5364 | url = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz"; | ||
5365 | sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"; | ||
5366 | }; | ||
5367 | } | ||
5368 | |||
5369 | { | ||
5370 | name = "map_obj___map_obj_1.0.1.tgz"; | ||
5371 | path = fetchurl { | ||
5372 | name = "map_obj___map_obj_1.0.1.tgz"; | ||
5373 | url = "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz"; | ||
5374 | sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d"; | ||
5375 | }; | ||
5376 | } | ||
5377 | |||
5378 | { | ||
5379 | name = "map_stream___map_stream_0.0.7.tgz"; | ||
5380 | path = fetchurl { | ||
5381 | name = "map_stream___map_stream_0.0.7.tgz"; | ||
5382 | url = "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz"; | ||
5383 | sha1 = "8a1f07896d82b10926bd3744a2420009f88974a8"; | ||
5384 | }; | ||
5385 | } | ||
5386 | |||
5387 | { | ||
5388 | name = "map_stream___map_stream_0.1.0.tgz"; | ||
5389 | path = fetchurl { | ||
5390 | name = "map_stream___map_stream_0.1.0.tgz"; | ||
5391 | url = "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz"; | ||
5392 | sha1 = "e56aa94c4c8055a16404a0674b78f215f7c8e194"; | ||
5393 | }; | ||
5394 | } | ||
5395 | |||
5396 | { | ||
5397 | name = "map_visit___map_visit_1.0.0.tgz"; | ||
5398 | path = fetchurl { | ||
5399 | name = "map_visit___map_visit_1.0.0.tgz"; | ||
5400 | url = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz"; | ||
5401 | sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"; | ||
5402 | }; | ||
5403 | } | ||
5404 | |||
5405 | { | ||
5406 | name = "math_random___math_random_1.0.4.tgz"; | ||
5407 | path = fetchurl { | ||
5408 | name = "math_random___math_random_1.0.4.tgz"; | ||
5409 | url = "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz"; | ||
5410 | sha1 = "5dd6943c938548267016d4e34f057583080c514c"; | ||
5411 | }; | ||
5412 | } | ||
5413 | |||
5414 | { | ||
5415 | name = "media_typer___media_typer_0.3.0.tgz"; | ||
5416 | path = fetchurl { | ||
5417 | name = "media_typer___media_typer_0.3.0.tgz"; | ||
5418 | url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz"; | ||
5419 | sha1 = "8710d7af0aa626f8fffa1ce00168545263255748"; | ||
5420 | }; | ||
5421 | } | ||
5422 | |||
5423 | { | ||
5424 | name = "memoizee___memoizee_0.2.6.tgz"; | ||
5425 | path = fetchurl { | ||
5426 | name = "memoizee___memoizee_0.2.6.tgz"; | ||
5427 | url = "https://registry.yarnpkg.com/memoizee/-/memoizee-0.2.6.tgz"; | ||
5428 | sha1 = "bb45a7ad02530082f1612671dab35219cd2e0741"; | ||
5429 | }; | ||
5430 | } | ||
5431 | |||
5432 | { | ||
5433 | name = "memoizee___memoizee_0.3.10.tgz"; | ||
5434 | path = fetchurl { | ||
5435 | name = "memoizee___memoizee_0.3.10.tgz"; | ||
5436 | url = "https://registry.yarnpkg.com/memoizee/-/memoizee-0.3.10.tgz"; | ||
5437 | sha1 = "4eca0d8aed39ec9d017f4c5c2f2f6432f42e5c8f"; | ||
5438 | }; | ||
5439 | } | ||
5440 | |||
5441 | { | ||
5442 | name = "meow___meow_3.7.0.tgz"; | ||
5443 | path = fetchurl { | ||
5444 | name = "meow___meow_3.7.0.tgz"; | ||
5445 | url = "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz"; | ||
5446 | sha1 = "72cb668b425228290abbfa856892587308a801fb"; | ||
5447 | }; | ||
5448 | } | ||
5449 | |||
5450 | { | ||
5451 | name = "merge_stream___merge_stream_1.0.1.tgz"; | ||
5452 | path = fetchurl { | ||
5453 | name = "merge_stream___merge_stream_1.0.1.tgz"; | ||
5454 | url = "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz"; | ||
5455 | sha1 = "4041202d508a342ba00174008df0c251b8c135e1"; | ||
5456 | }; | ||
5457 | } | ||
5458 | |||
5459 | { | ||
5460 | name = "merge___merge_1.2.1.tgz"; | ||
5461 | path = fetchurl { | ||
5462 | name = "merge___merge_1.2.1.tgz"; | ||
5463 | url = "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz"; | ||
5464 | sha1 = "38bebf80c3220a8a487b6fcfb3941bb11720c145"; | ||
5465 | }; | ||
5466 | } | ||
5467 | |||
5468 | { | ||
5469 | name = "micromatch___micromatch_2.3.11.tgz"; | ||
5470 | path = fetchurl { | ||
5471 | name = "micromatch___micromatch_2.3.11.tgz"; | ||
5472 | url = "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz"; | ||
5473 | sha1 = "86677c97d1720b363431d04d0d15293bd38c1565"; | ||
5474 | }; | ||
5475 | } | ||
5476 | |||
5477 | { | ||
5478 | name = "micromatch___micromatch_3.1.10.tgz"; | ||
5479 | path = fetchurl { | ||
5480 | name = "micromatch___micromatch_3.1.10.tgz"; | ||
5481 | url = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz"; | ||
5482 | sha1 = "70859bc95c9840952f359a068a3fc49f9ecfac23"; | ||
5483 | }; | ||
5484 | } | ||
5485 | |||
5486 | { | ||
5487 | name = "mime_db___mime_db_1.43.0.tgz"; | ||
5488 | path = fetchurl { | ||
5489 | name = "mime_db___mime_db_1.43.0.tgz"; | ||
5490 | url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz"; | ||
5491 | sha1 = "0a12e0502650e473d735535050e7c8f4eb4fae58"; | ||
5492 | }; | ||
5493 | } | ||
5494 | |||
5495 | { | ||
5496 | name = "mime_db___mime_db_1.12.0.tgz"; | ||
5497 | path = fetchurl { | ||
5498 | name = "mime_db___mime_db_1.12.0.tgz"; | ||
5499 | url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz"; | ||
5500 | sha1 = "3d0c63180f458eb10d325aaa37d7c58ae312e9d7"; | ||
5501 | }; | ||
5502 | } | ||
5503 | |||
5504 | { | ||
5505 | name = "mime_types___mime_types_2.1.26.tgz"; | ||
5506 | path = fetchurl { | ||
5507 | name = "mime_types___mime_types_2.1.26.tgz"; | ||
5508 | url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz"; | ||
5509 | sha1 = "9c921fc09b7e149a65dfdc0da4d20997200b0a06"; | ||
5510 | }; | ||
5511 | } | ||
5512 | |||
5513 | { | ||
5514 | name = "mime_types___mime_types_1.0.2.tgz"; | ||
5515 | path = fetchurl { | ||
5516 | name = "mime_types___mime_types_1.0.2.tgz"; | ||
5517 | url = "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz"; | ||
5518 | sha1 = "995ae1392ab8affcbfcb2641dd054e943c0d5dce"; | ||
5519 | }; | ||
5520 | } | ||
5521 | |||
5522 | { | ||
5523 | name = "mime_types___mime_types_2.0.14.tgz"; | ||
5524 | path = fetchurl { | ||
5525 | name = "mime_types___mime_types_2.0.14.tgz"; | ||
5526 | url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz"; | ||
5527 | sha1 = "310e159db23e077f8bb22b748dabfa4957140aa6"; | ||
5528 | }; | ||
5529 | } | ||
5530 | |||
5531 | { | ||
5532 | name = "mime___mime_1.3.4.tgz"; | ||
5533 | path = fetchurl { | ||
5534 | name = "mime___mime_1.3.4.tgz"; | ||
5535 | url = "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz"; | ||
5536 | sha1 = "115f9e3b6b3daf2959983cb38f149a2d40eb5d53"; | ||
5537 | }; | ||
5538 | } | ||
5539 | |||
5540 | { | ||
5541 | name = "mime___mime_1.6.0.tgz"; | ||
5542 | path = fetchurl { | ||
5543 | name = "mime___mime_1.6.0.tgz"; | ||
5544 | url = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz"; | ||
5545 | sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1"; | ||
5546 | }; | ||
5547 | } | ||
5548 | |||
5549 | { | ||
5550 | name = "mime___mime_1.2.11.tgz"; | ||
5551 | path = fetchurl { | ||
5552 | name = "mime___mime_1.2.11.tgz"; | ||
5553 | url = "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz"; | ||
5554 | sha1 = "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10"; | ||
5555 | }; | ||
5556 | } | ||
5557 | |||
5558 | { | ||
5559 | name = "mini_lr___mini_lr_0.1.9.tgz"; | ||
5560 | path = fetchurl { | ||
5561 | name = "mini_lr___mini_lr_0.1.9.tgz"; | ||
5562 | url = "https://registry.yarnpkg.com/mini-lr/-/mini-lr-0.1.9.tgz"; | ||
5563 | sha1 = "02199d27347953d1fd1d6dbded4261f187b2d0f6"; | ||
5564 | }; | ||
5565 | } | ||
5566 | |||
5567 | { | ||
5568 | name = "minimatch___minimatch_0.3.0.tgz"; | ||
5569 | path = fetchurl { | ||
5570 | name = "minimatch___minimatch_0.3.0.tgz"; | ||
5571 | url = "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz"; | ||
5572 | sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd"; | ||
5573 | }; | ||
5574 | } | ||
5575 | |||
5576 | { | ||
5577 | name = "minimatch___minimatch_3.0.4.tgz"; | ||
5578 | path = fetchurl { | ||
5579 | name = "minimatch___minimatch_3.0.4.tgz"; | ||
5580 | url = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz"; | ||
5581 | sha1 = "5166e286457f03306064be5497e8dbb0c3d32083"; | ||
5582 | }; | ||
5583 | } | ||
5584 | |||
5585 | { | ||
5586 | name = "minimatch___minimatch_0.2.14.tgz"; | ||
5587 | path = fetchurl { | ||
5588 | name = "minimatch___minimatch_0.2.14.tgz"; | ||
5589 | url = "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz"; | ||
5590 | sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a"; | ||
5591 | }; | ||
5592 | } | ||
5593 | |||
5594 | { | ||
5595 | name = "minimatch___minimatch_1.0.0.tgz"; | ||
5596 | path = fetchurl { | ||
5597 | name = "minimatch___minimatch_1.0.0.tgz"; | ||
5598 | url = "https://registry.yarnpkg.com/minimatch/-/minimatch-1.0.0.tgz"; | ||
5599 | sha1 = "e0dd2120b49e1b724ce8d714c520822a9438576d"; | ||
5600 | }; | ||
5601 | } | ||
5602 | |||
5603 | { | ||
5604 | name = "minimatch___minimatch_2.0.10.tgz"; | ||
5605 | path = fetchurl { | ||
5606 | name = "minimatch___minimatch_2.0.10.tgz"; | ||
5607 | url = "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz"; | ||
5608 | sha1 = "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7"; | ||
5609 | }; | ||
5610 | } | ||
5611 | |||
5612 | { | ||
5613 | name = "minimist___minimist_0.2.1.tgz"; | ||
5614 | path = fetchurl { | ||
5615 | name = "minimist___minimist_0.2.1.tgz"; | ||
5616 | url = "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz"; | ||
5617 | sha1 = "827ba4e7593464e7c221e8c5bed930904ee2c455"; | ||
5618 | }; | ||
5619 | } | ||
5620 | |||
5621 | { | ||
5622 | name = "minimist___minimist_1.2.5.tgz"; | ||
5623 | path = fetchurl { | ||
5624 | name = "minimist___minimist_1.2.5.tgz"; | ||
5625 | url = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz"; | ||
5626 | sha1 = "67d66014b66a6a8aaa0c083c5fd58df4e4e97602"; | ||
5627 | }; | ||
5628 | } | ||
5629 | |||
5630 | { | ||
5631 | name = "minimist___minimist_0.0.10.tgz"; | ||
5632 | path = fetchurl { | ||
5633 | name = "minimist___minimist_0.0.10.tgz"; | ||
5634 | url = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz"; | ||
5635 | sha1 = "de3f98543dbf96082be48ad1a0c7cda836301dcf"; | ||
5636 | }; | ||
5637 | } | ||
5638 | |||
5639 | { | ||
5640 | name = "minipass___minipass_2.9.0.tgz"; | ||
5641 | path = fetchurl { | ||
5642 | name = "minipass___minipass_2.9.0.tgz"; | ||
5643 | url = "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz"; | ||
5644 | sha1 = "e713762e7d3e32fed803115cf93e04bca9fcc9a6"; | ||
5645 | }; | ||
5646 | } | ||
5647 | |||
5648 | { | ||
5649 | name = "minizlib___minizlib_1.3.3.tgz"; | ||
5650 | path = fetchurl { | ||
5651 | name = "minizlib___minizlib_1.3.3.tgz"; | ||
5652 | url = "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz"; | ||
5653 | sha1 = "2290de96818a34c29551c8a8d301216bd65a861d"; | ||
5654 | }; | ||
5655 | } | ||
5656 | |||
5657 | { | ||
5658 | name = "mixin_deep___mixin_deep_1.3.2.tgz"; | ||
5659 | path = fetchurl { | ||
5660 | name = "mixin_deep___mixin_deep_1.3.2.tgz"; | ||
5661 | url = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz"; | ||
5662 | sha1 = "1120b43dc359a785dce65b55b82e257ccf479566"; | ||
5663 | }; | ||
5664 | } | ||
5665 | |||
5666 | { | ||
5667 | name = "mkdirp___mkdirp_0.5.4.tgz"; | ||
5668 | path = fetchurl { | ||
5669 | name = "mkdirp___mkdirp_0.5.4.tgz"; | ||
5670 | url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz"; | ||
5671 | sha1 = "fd01504a6797ec5c9be81ff43d204961ed64a512"; | ||
5672 | }; | ||
5673 | } | ||
5674 | |||
5675 | { | ||
5676 | name = "mkdirp___mkdirp_0.3.5.tgz"; | ||
5677 | path = fetchurl { | ||
5678 | name = "mkdirp___mkdirp_0.3.5.tgz"; | ||
5679 | url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz"; | ||
5680 | sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7"; | ||
5681 | }; | ||
5682 | } | ||
5683 | |||
5684 | { | ||
5685 | name = "mkpath___mkpath_0.1.0.tgz"; | ||
5686 | path = fetchurl { | ||
5687 | name = "mkpath___mkpath_0.1.0.tgz"; | ||
5688 | url = "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz"; | ||
5689 | sha1 = "7554a6f8d871834cc97b5462b122c4c124d6de91"; | ||
5690 | }; | ||
5691 | } | ||
5692 | |||
5693 | { | ||
5694 | name = "module_deps___module_deps_2.0.6.tgz"; | ||
5695 | path = fetchurl { | ||
5696 | name = "module_deps___module_deps_2.0.6.tgz"; | ||
5697 | url = "https://registry.yarnpkg.com/module-deps/-/module-deps-2.0.6.tgz"; | ||
5698 | sha1 = "b999321c73ac33580f00712c0f3075fdca42563f"; | ||
5699 | }; | ||
5700 | } | ||
5701 | |||
5702 | { | ||
5703 | name = "mout___mout_0.9.1.tgz"; | ||
5704 | path = fetchurl { | ||
5705 | name = "mout___mout_0.9.1.tgz"; | ||
5706 | url = "https://registry.yarnpkg.com/mout/-/mout-0.9.1.tgz"; | ||
5707 | sha1 = "84f0f3fd6acc7317f63de2affdcc0cee009b0477"; | ||
5708 | }; | ||
5709 | } | ||
5710 | |||
5711 | { | ||
5712 | name = "ms___ms_0.7.1.tgz"; | ||
5713 | path = fetchurl { | ||
5714 | name = "ms___ms_0.7.1.tgz"; | ||
5715 | url = "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz"; | ||
5716 | sha1 = "9cd13c03adbff25b65effde7ce864ee952017098"; | ||
5717 | }; | ||
5718 | } | ||
5719 | |||
5720 | { | ||
5721 | name = "ms___ms_0.7.2.tgz"; | ||
5722 | path = fetchurl { | ||
5723 | name = "ms___ms_0.7.2.tgz"; | ||
5724 | url = "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz"; | ||
5725 | sha1 = "ae25cf2512b3885a1d95d7f037868d8431124765"; | ||
5726 | }; | ||
5727 | } | ||
5728 | |||
5729 | { | ||
5730 | name = "ms___ms_2.0.0.tgz"; | ||
5731 | path = fetchurl { | ||
5732 | name = "ms___ms_2.0.0.tgz"; | ||
5733 | url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz"; | ||
5734 | sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8"; | ||
5735 | }; | ||
5736 | } | ||
5737 | |||
5738 | { | ||
5739 | name = "ms___ms_2.1.2.tgz"; | ||
5740 | path = fetchurl { | ||
5741 | name = "ms___ms_2.1.2.tgz"; | ||
5742 | url = "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz"; | ||
5743 | sha1 = "d09d1f357b443f493382a8eb3ccd183872ae6009"; | ||
5744 | }; | ||
5745 | } | ||
5746 | |||
5747 | { | ||
5748 | name = "multipipe___multipipe_0.1.2.tgz"; | ||
5749 | path = fetchurl { | ||
5750 | name = "multipipe___multipipe_0.1.2.tgz"; | ||
5751 | url = "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz"; | ||
5752 | sha1 = "2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"; | ||
5753 | }; | ||
5754 | } | ||
5755 | |||
5756 | { | ||
5757 | name = "mute_stream___mute_stream_0.0.4.tgz"; | ||
5758 | path = fetchurl { | ||
5759 | name = "mute_stream___mute_stream_0.0.4.tgz"; | ||
5760 | url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.4.tgz"; | ||
5761 | sha1 = "a9219960a6d5d5d046597aee51252c6655f7177e"; | ||
5762 | }; | ||
5763 | } | ||
5764 | |||
5765 | { | ||
5766 | name = "mute_stream___mute_stream_0.0.8.tgz"; | ||
5767 | path = fetchurl { | ||
5768 | name = "mute_stream___mute_stream_0.0.8.tgz"; | ||
5769 | url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz"; | ||
5770 | sha1 = "1630c42b2251ff81e2a283de96a5497ea92e5e0d"; | ||
5771 | }; | ||
5772 | } | ||
5773 | |||
5774 | { | ||
5775 | name = "nan___nan_2.14.0.tgz"; | ||
5776 | path = fetchurl { | ||
5777 | name = "nan___nan_2.14.0.tgz"; | ||
5778 | url = "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz"; | ||
5779 | sha1 = "7818f722027b2459a86f0295d434d1fc2336c52c"; | ||
5780 | }; | ||
5781 | } | ||
5782 | |||
5783 | { | ||
5784 | name = "nanomatch___nanomatch_1.2.13.tgz"; | ||
5785 | path = fetchurl { | ||
5786 | name = "nanomatch___nanomatch_1.2.13.tgz"; | ||
5787 | url = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz"; | ||
5788 | sha1 = "b87a8aa4fc0de8fe6be88895b38983ff265bd119"; | ||
5789 | }; | ||
5790 | } | ||
5791 | |||
5792 | { | ||
5793 | name = "natives___natives_1.1.6.tgz"; | ||
5794 | path = fetchurl { | ||
5795 | name = "natives___natives_1.1.6.tgz"; | ||
5796 | url = "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz"; | ||
5797 | sha1 = "a603b4a498ab77173612b9ea1acdec4d980f00bb"; | ||
5798 | }; | ||
5799 | } | ||
5800 | |||
5801 | { | ||
5802 | name = "needle___needle_2.3.3.tgz"; | ||
5803 | path = fetchurl { | ||
5804 | name = "needle___needle_2.3.3.tgz"; | ||
5805 | url = "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz"; | ||
5806 | sha1 = "a041ad1d04a871b0ebb666f40baaf1fb47867117"; | ||
5807 | }; | ||
5808 | } | ||
5809 | |||
5810 | { | ||
5811 | name = "negotiator___negotiator_0.6.1.tgz"; | ||
5812 | path = fetchurl { | ||
5813 | name = "negotiator___negotiator_0.6.1.tgz"; | ||
5814 | url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz"; | ||
5815 | sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9"; | ||
5816 | }; | ||
5817 | } | ||
5818 | |||
5819 | { | ||
5820 | name = "neo_async___neo_async_2.6.1.tgz"; | ||
5821 | path = fetchurl { | ||
5822 | name = "neo_async___neo_async_2.6.1.tgz"; | ||
5823 | url = "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz"; | ||
5824 | sha1 = "ac27ada66167fa8849a6addd837f6b189ad2081c"; | ||
5825 | }; | ||
5826 | } | ||
5827 | |||
5828 | { | ||
5829 | name = "nested_error_stacks___nested_error_stacks_1.0.2.tgz"; | ||
5830 | path = fetchurl { | ||
5831 | name = "nested_error_stacks___nested_error_stacks_1.0.2.tgz"; | ||
5832 | url = "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz"; | ||
5833 | sha1 = "19f619591519f096769a5ba9a86e6eeec823c3cf"; | ||
5834 | }; | ||
5835 | } | ||
5836 | |||
5837 | { | ||
5838 | name = "next_tick___next_tick_0.1.0.tgz"; | ||
5839 | path = fetchurl { | ||
5840 | name = "next_tick___next_tick_0.1.0.tgz"; | ||
5841 | url = "https://registry.yarnpkg.com/next-tick/-/next-tick-0.1.0.tgz"; | ||
5842 | sha1 = "1912cce8eb9b697d640fbba94f8f00dec3b94259"; | ||
5843 | }; | ||
5844 | } | ||
5845 | |||
5846 | { | ||
5847 | name = "next_tick___next_tick_1.1.0.tgz"; | ||
5848 | path = fetchurl { | ||
5849 | name = "next_tick___next_tick_1.1.0.tgz"; | ||
5850 | url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz"; | ||
5851 | sha1 = "1836ee30ad56d67ef281b22bd199f709449b35eb"; | ||
5852 | }; | ||
5853 | } | ||
5854 | |||
5855 | { | ||
5856 | name = "next_tick___next_tick_0.2.2.tgz"; | ||
5857 | path = fetchurl { | ||
5858 | name = "next_tick___next_tick_0.2.2.tgz"; | ||
5859 | url = "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz"; | ||
5860 | sha1 = "75da4a927ee5887e39065880065b7336413b310d"; | ||
5861 | }; | ||
5862 | } | ||
5863 | |||
5864 | { | ||
5865 | name = "next_tick___next_tick_1.0.0.tgz"; | ||
5866 | path = fetchurl { | ||
5867 | name = "next_tick___next_tick_1.0.0.tgz"; | ||
5868 | url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz"; | ||
5869 | sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c"; | ||
5870 | }; | ||
5871 | } | ||
5872 | |||
5873 | { | ||
5874 | name = "ng_annotate___ng_annotate_1.2.2.tgz"; | ||
5875 | path = fetchurl { | ||
5876 | name = "ng_annotate___ng_annotate_1.2.2.tgz"; | ||
5877 | url = "https://registry.yarnpkg.com/ng-annotate/-/ng-annotate-1.2.2.tgz"; | ||
5878 | sha1 = "dc3fc51ba0b2f8b385dbe047f4da06f580a1fd61"; | ||
5879 | }; | ||
5880 | } | ||
5881 | |||
5882 | { | ||
5883 | name = "ng_classify___ng_classify_4.1.1.tgz"; | ||
5884 | path = fetchurl { | ||
5885 | name = "ng_classify___ng_classify_4.1.1.tgz"; | ||
5886 | url = "https://registry.yarnpkg.com/ng-classify/-/ng-classify-4.1.1.tgz"; | ||
5887 | sha1 = "6688b924c3c9b5f94da5f8fbc0d55176f3dda122"; | ||
5888 | }; | ||
5889 | } | ||
5890 | |||
5891 | { | ||
5892 | name = "node_gyp___node_gyp_3.8.0.tgz"; | ||
5893 | path = fetchurl { | ||
5894 | name = "node_gyp___node_gyp_3.8.0.tgz"; | ||
5895 | url = "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz"; | ||
5896 | sha1 = "540304261c330e80d0d5edce253a68cb3964218c"; | ||
5897 | }; | ||
5898 | } | ||
5899 | |||
5900 | { | ||
5901 | name = "node_pre_gyp___node_pre_gyp_0.14.0.tgz"; | ||
5902 | path = fetchurl { | ||
5903 | name = "node_pre_gyp___node_pre_gyp_0.14.0.tgz"; | ||
5904 | url = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz"; | ||
5905 | sha1 = "9a0596533b877289bcad4e143982ca3d904ddc83"; | ||
5906 | }; | ||
5907 | } | ||
5908 | |||
5909 | { | ||
5910 | name = "node_sass___node_sass_4.13.1.tgz"; | ||
5911 | path = fetchurl { | ||
5912 | name = "node_sass___node_sass_4.13.1.tgz"; | ||
5913 | url = "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz"; | ||
5914 | sha1 = "9db5689696bb2eec2c32b98bfea4c7a2e992d0a3"; | ||
5915 | }; | ||
5916 | } | ||
5917 | |||
5918 | { | ||
5919 | name = "node_uuid___node_uuid_1.4.8.tgz"; | ||
5920 | path = fetchurl { | ||
5921 | name = "node_uuid___node_uuid_1.4.8.tgz"; | ||
5922 | url = "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz"; | ||
5923 | sha1 = "b040eb0923968afabf8d32fb1f17f1167fdab907"; | ||
5924 | }; | ||
5925 | } | ||
5926 | |||
5927 | { | ||
5928 | name = "node.extend___node.extend_1.1.8.tgz"; | ||
5929 | path = fetchurl { | ||
5930 | name = "node.extend___node.extend_1.1.8.tgz"; | ||
5931 | url = "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.8.tgz"; | ||
5932 | sha1 = "0aab3e63789f4e6d68b42bc00073ad1881243cf0"; | ||
5933 | }; | ||
5934 | } | ||
5935 | |||
5936 | { | ||
5937 | name = "nopt___nopt_3.0.6.tgz"; | ||
5938 | path = fetchurl { | ||
5939 | name = "nopt___nopt_3.0.6.tgz"; | ||
5940 | url = "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz"; | ||
5941 | sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9"; | ||
5942 | }; | ||
5943 | } | ||
5944 | |||
5945 | { | ||
5946 | name = "nopt___nopt_4.0.3.tgz"; | ||
5947 | path = fetchurl { | ||
5948 | name = "nopt___nopt_4.0.3.tgz"; | ||
5949 | url = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz"; | ||
5950 | sha1 = "a375cad9d02fd921278d954c2254d5aa57e15e48"; | ||
5951 | }; | ||
5952 | } | ||
5953 | |||
5954 | { | ||
5955 | name = "nopt___nopt_1.0.10.tgz"; | ||
5956 | path = fetchurl { | ||
5957 | name = "nopt___nopt_1.0.10.tgz"; | ||
5958 | url = "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz"; | ||
5959 | sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee"; | ||
5960 | }; | ||
5961 | } | ||
5962 | |||
5963 | { | ||
5964 | name = "nopt___nopt_2.2.1.tgz"; | ||
5965 | path = fetchurl { | ||
5966 | name = "nopt___nopt_2.2.1.tgz"; | ||
5967 | url = "https://registry.yarnpkg.com/nopt/-/nopt-2.2.1.tgz"; | ||
5968 | sha1 = "2aa09b7d1768487b3b89a9c5aa52335bff0baea7"; | ||
5969 | }; | ||
5970 | } | ||
5971 | |||
5972 | { | ||
5973 | name = "normalize_package_data___normalize_package_data_2.5.0.tgz"; | ||
5974 | path = fetchurl { | ||
5975 | name = "normalize_package_data___normalize_package_data_2.5.0.tgz"; | ||
5976 | url = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz"; | ||
5977 | sha1 = "e66db1838b200c1dfc233225d12cb36520e234a8"; | ||
5978 | }; | ||
5979 | } | ||
5980 | |||
5981 | { | ||
5982 | name = "normalize_path___normalize_path_2.1.1.tgz"; | ||
5983 | path = fetchurl { | ||
5984 | name = "normalize_path___normalize_path_2.1.1.tgz"; | ||
5985 | url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz"; | ||
5986 | sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"; | ||
5987 | }; | ||
5988 | } | ||
5989 | |||
5990 | { | ||
5991 | name = "npm_bundled___npm_bundled_1.1.1.tgz"; | ||
5992 | path = fetchurl { | ||
5993 | name = "npm_bundled___npm_bundled_1.1.1.tgz"; | ||
5994 | url = "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz"; | ||
5995 | sha1 = "1edd570865a94cdb1bc8220775e29466c9fb234b"; | ||
5996 | }; | ||
5997 | } | ||
5998 | |||
5999 | { | ||
6000 | name = "npm_normalize_package_bin___npm_normalize_package_bin_1.0.1.tgz"; | ||
6001 | path = fetchurl { | ||
6002 | name = "npm_normalize_package_bin___npm_normalize_package_bin_1.0.1.tgz"; | ||
6003 | url = "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz"; | ||
6004 | sha1 = "6e79a41f23fd235c0623218228da7d9c23b8f6e2"; | ||
6005 | }; | ||
6006 | } | ||
6007 | |||
6008 | { | ||
6009 | name = "npm_packlist___npm_packlist_1.4.8.tgz"; | ||
6010 | path = fetchurl { | ||
6011 | name = "npm_packlist___npm_packlist_1.4.8.tgz"; | ||
6012 | url = "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz"; | ||
6013 | sha1 = "56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"; | ||
6014 | }; | ||
6015 | } | ||
6016 | |||
6017 | { | ||
6018 | name = "npmlog___npmlog_4.1.2.tgz"; | ||
6019 | path = fetchurl { | ||
6020 | name = "npmlog___npmlog_4.1.2.tgz"; | ||
6021 | url = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz"; | ||
6022 | sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b"; | ||
6023 | }; | ||
6024 | } | ||
6025 | |||
6026 | { | ||
6027 | name = "null_check___null_check_1.0.0.tgz"; | ||
6028 | path = fetchurl { | ||
6029 | name = "null_check___null_check_1.0.0.tgz"; | ||
6030 | url = "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz"; | ||
6031 | sha1 = "977dffd7176012b9ec30d2a39db5cf72a0439edd"; | ||
6032 | }; | ||
6033 | } | ||
6034 | |||
6035 | { | ||
6036 | name = "number_is_nan___number_is_nan_1.0.1.tgz"; | ||
6037 | path = fetchurl { | ||
6038 | name = "number_is_nan___number_is_nan_1.0.1.tgz"; | ||
6039 | url = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz"; | ||
6040 | sha1 = "097b602b53422a522c1afb8790318336941a011d"; | ||
6041 | }; | ||
6042 | } | ||
6043 | |||
6044 | { | ||
6045 | name = "oauth_sign___oauth_sign_0.3.0.tgz"; | ||
6046 | path = fetchurl { | ||
6047 | name = "oauth_sign___oauth_sign_0.3.0.tgz"; | ||
6048 | url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.3.0.tgz"; | ||
6049 | sha1 = "cb540f93bb2b22a7d5941691a288d60e8ea9386e"; | ||
6050 | }; | ||
6051 | } | ||
6052 | |||
6053 | { | ||
6054 | name = "oauth_sign___oauth_sign_0.5.0.tgz"; | ||
6055 | path = fetchurl { | ||
6056 | name = "oauth_sign___oauth_sign_0.5.0.tgz"; | ||
6057 | url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.5.0.tgz"; | ||
6058 | sha1 = "d767f5169325620eab2e087ef0c472e773db6461"; | ||
6059 | }; | ||
6060 | } | ||
6061 | |||
6062 | { | ||
6063 | name = "oauth_sign___oauth_sign_0.9.0.tgz"; | ||
6064 | path = fetchurl { | ||
6065 | name = "oauth_sign___oauth_sign_0.9.0.tgz"; | ||
6066 | url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz"; | ||
6067 | sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455"; | ||
6068 | }; | ||
6069 | } | ||
6070 | |||
6071 | { | ||
6072 | name = "object_assign___object_assign_4.1.1.tgz"; | ||
6073 | path = fetchurl { | ||
6074 | name = "object_assign___object_assign_4.1.1.tgz"; | ||
6075 | url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz"; | ||
6076 | sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863"; | ||
6077 | }; | ||
6078 | } | ||
6079 | |||
6080 | { | ||
6081 | name = "object_assign___object_assign_4.1.0.tgz"; | ||
6082 | path = fetchurl { | ||
6083 | name = "object_assign___object_assign_4.1.0.tgz"; | ||
6084 | url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz"; | ||
6085 | sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"; | ||
6086 | }; | ||
6087 | } | ||
6088 | |||
6089 | { | ||
6090 | name = "object_assign___object_assign_2.1.1.tgz"; | ||
6091 | path = fetchurl { | ||
6092 | name = "object_assign___object_assign_2.1.1.tgz"; | ||
6093 | url = "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz"; | ||
6094 | sha1 = "43c36e5d569ff8e4816c4efa8be02d26967c18aa"; | ||
6095 | }; | ||
6096 | } | ||
6097 | |||
6098 | { | ||
6099 | name = "object_assign___object_assign_3.0.0.tgz"; | ||
6100 | path = fetchurl { | ||
6101 | name = "object_assign___object_assign_3.0.0.tgz"; | ||
6102 | url = "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz"; | ||
6103 | sha1 = "9bedd5ca0897949bca47e7ff408062d549f587f2"; | ||
6104 | }; | ||
6105 | } | ||
6106 | |||
6107 | { | ||
6108 | name = "object_assign___object_assign_0.1.2.tgz"; | ||
6109 | path = fetchurl { | ||
6110 | name = "object_assign___object_assign_0.1.2.tgz"; | ||
6111 | url = "https://registry.yarnpkg.com/object-assign/-/object-assign-0.1.2.tgz"; | ||
6112 | sha1 = "036992f073aff7b2db83d06b3fb3155a5ccac37f"; | ||
6113 | }; | ||
6114 | } | ||
6115 | |||
6116 | { | ||
6117 | name = "object_component___object_component_0.0.3.tgz"; | ||
6118 | path = fetchurl { | ||
6119 | name = "object_component___object_component_0.0.3.tgz"; | ||
6120 | url = "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz"; | ||
6121 | sha1 = "f0c69aa50efc95b866c186f400a33769cb2f1291"; | ||
6122 | }; | ||
6123 | } | ||
6124 | |||
6125 | { | ||
6126 | name = "object_copy___object_copy_0.1.0.tgz"; | ||
6127 | path = fetchurl { | ||
6128 | name = "object_copy___object_copy_0.1.0.tgz"; | ||
6129 | url = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz"; | ||
6130 | sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c"; | ||
6131 | }; | ||
6132 | } | ||
6133 | |||
6134 | { | ||
6135 | name = "object_keys___object_keys_0.4.0.tgz"; | ||
6136 | path = fetchurl { | ||
6137 | name = "object_keys___object_keys_0.4.0.tgz"; | ||
6138 | url = "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz"; | ||
6139 | sha1 = "28a6aae7428dd2c3a92f3d95f21335dd204e0336"; | ||
6140 | }; | ||
6141 | } | ||
6142 | |||
6143 | { | ||
6144 | name = "object_visit___object_visit_1.0.1.tgz"; | ||
6145 | path = fetchurl { | ||
6146 | name = "object_visit___object_visit_1.0.1.tgz"; | ||
6147 | url = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz"; | ||
6148 | sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb"; | ||
6149 | }; | ||
6150 | } | ||
6151 | |||
6152 | { | ||
6153 | name = "object.defaults___object.defaults_1.1.0.tgz"; | ||
6154 | path = fetchurl { | ||
6155 | name = "object.defaults___object.defaults_1.1.0.tgz"; | ||
6156 | url = "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz"; | ||
6157 | sha1 = "3a7f868334b407dea06da16d88d5cd29e435fecf"; | ||
6158 | }; | ||
6159 | } | ||
6160 | |||
6161 | { | ||
6162 | name = "object.map___object.map_1.0.1.tgz"; | ||
6163 | path = fetchurl { | ||
6164 | name = "object.map___object.map_1.0.1.tgz"; | ||
6165 | url = "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz"; | ||
6166 | sha1 = "cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37"; | ||
6167 | }; | ||
6168 | } | ||
6169 | |||
6170 | { | ||
6171 | name = "object.omit___object.omit_2.0.1.tgz"; | ||
6172 | path = fetchurl { | ||
6173 | name = "object.omit___object.omit_2.0.1.tgz"; | ||
6174 | url = "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz"; | ||
6175 | sha1 = "1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"; | ||
6176 | }; | ||
6177 | } | ||
6178 | |||
6179 | { | ||
6180 | name = "object.pick___object.pick_1.3.0.tgz"; | ||
6181 | path = fetchurl { | ||
6182 | name = "object.pick___object.pick_1.3.0.tgz"; | ||
6183 | url = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz"; | ||
6184 | sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747"; | ||
6185 | }; | ||
6186 | } | ||
6187 | |||
6188 | { | ||
6189 | name = "on_finished___on_finished_2.3.0.tgz"; | ||
6190 | path = fetchurl { | ||
6191 | name = "on_finished___on_finished_2.3.0.tgz"; | ||
6192 | url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz"; | ||
6193 | sha1 = "20f1336481b083cd75337992a16971aa2d906947"; | ||
6194 | }; | ||
6195 | } | ||
6196 | |||
6197 | { | ||
6198 | name = "once___once_1.4.0.tgz"; | ||
6199 | path = fetchurl { | ||
6200 | name = "once___once_1.4.0.tgz"; | ||
6201 | url = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz"; | ||
6202 | sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1"; | ||
6203 | }; | ||
6204 | } | ||
6205 | |||
6206 | { | ||
6207 | name = "once___once_1.3.3.tgz"; | ||
6208 | path = fetchurl { | ||
6209 | name = "once___once_1.3.3.tgz"; | ||
6210 | url = "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz"; | ||
6211 | sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20"; | ||
6212 | }; | ||
6213 | } | ||
6214 | |||
6215 | { | ||
6216 | name = "opn___opn_0.1.2.tgz"; | ||
6217 | path = fetchurl { | ||
6218 | name = "opn___opn_0.1.2.tgz"; | ||
6219 | url = "https://registry.yarnpkg.com/opn/-/opn-0.1.2.tgz"; | ||
6220 | sha1 = "c527832cfd964d52096b524d0035ecaece51db4f"; | ||
6221 | }; | ||
6222 | } | ||
6223 | |||
6224 | { | ||
6225 | name = "optimist___optimist_0.6.1.tgz"; | ||
6226 | path = fetchurl { | ||
6227 | name = "optimist___optimist_0.6.1.tgz"; | ||
6228 | url = "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz"; | ||
6229 | sha1 = "da3ea74686fa21a19a111c326e90eb15a0196686"; | ||
6230 | }; | ||
6231 | } | ||
6232 | |||
6233 | { | ||
6234 | name = "optimist___optimist_0.3.7.tgz"; | ||
6235 | path = fetchurl { | ||
6236 | name = "optimist___optimist_0.3.7.tgz"; | ||
6237 | url = "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz"; | ||
6238 | sha1 = "c90941ad59e4273328923074d2cf2e7cbc6ec0d9"; | ||
6239 | }; | ||
6240 | } | ||
6241 | |||
6242 | { | ||
6243 | name = "optionator___optionator_0.8.3.tgz"; | ||
6244 | path = fetchurl { | ||
6245 | name = "optionator___optionator_0.8.3.tgz"; | ||
6246 | url = "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz"; | ||
6247 | sha1 = "84fa1d036fe9d3c7e21d99884b601167ec8fb495"; | ||
6248 | }; | ||
6249 | } | ||
6250 | |||
6251 | { | ||
6252 | name = "options___options_0.0.6.tgz"; | ||
6253 | path = fetchurl { | ||
6254 | name = "options___options_0.0.6.tgz"; | ||
6255 | url = "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz"; | ||
6256 | sha1 = "ec22d312806bb53e731773e7cdaefcf1c643128f"; | ||
6257 | }; | ||
6258 | } | ||
6259 | |||
6260 | { | ||
6261 | name = "orchestrator___orchestrator_0.3.8.tgz"; | ||
6262 | path = fetchurl { | ||
6263 | name = "orchestrator___orchestrator_0.3.8.tgz"; | ||
6264 | url = "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz"; | ||
6265 | sha1 = "14e7e9e2764f7315fbac184e506c7aa6df94ad7e"; | ||
6266 | }; | ||
6267 | } | ||
6268 | |||
6269 | { | ||
6270 | name = "ordered_ast_traverse___ordered_ast_traverse_1.1.1.tgz"; | ||
6271 | path = fetchurl { | ||
6272 | name = "ordered_ast_traverse___ordered_ast_traverse_1.1.1.tgz"; | ||
6273 | url = "https://registry.yarnpkg.com/ordered-ast-traverse/-/ordered-ast-traverse-1.1.1.tgz"; | ||
6274 | sha1 = "6843a170bc0eee8b520cc8ddc1ddd3aa30fa057c"; | ||
6275 | }; | ||
6276 | } | ||
6277 | |||
6278 | { | ||
6279 | name = "ordered_esprima_props___ordered_esprima_props_1.1.0.tgz"; | ||
6280 | path = fetchurl { | ||
6281 | name = "ordered_esprima_props___ordered_esprima_props_1.1.0.tgz"; | ||
6282 | url = "https://registry.yarnpkg.com/ordered-esprima-props/-/ordered-esprima-props-1.1.0.tgz"; | ||
6283 | sha1 = "a9827086df5f010aa60e9bd02b6e0335cea2ffcb"; | ||
6284 | }; | ||
6285 | } | ||
6286 | |||
6287 | { | ||
6288 | name = "ordered_read_streams___ordered_read_streams_0.1.0.tgz"; | ||
6289 | path = fetchurl { | ||
6290 | name = "ordered_read_streams___ordered_read_streams_0.1.0.tgz"; | ||
6291 | url = "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz"; | ||
6292 | sha1 = "fd565a9af8eb4473ba69b6ed8a34352cb552f126"; | ||
6293 | }; | ||
6294 | } | ||
6295 | |||
6296 | { | ||
6297 | name = "os_browserify___os_browserify_0.1.2.tgz"; | ||
6298 | path = fetchurl { | ||
6299 | name = "os_browserify___os_browserify_0.1.2.tgz"; | ||
6300 | url = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz"; | ||
6301 | sha1 = "49ca0293e0b19590a5f5de10c7f265a617d8fe54"; | ||
6302 | }; | ||
6303 | } | ||
6304 | |||
6305 | { | ||
6306 | name = "os_homedir___os_homedir_1.0.2.tgz"; | ||
6307 | path = fetchurl { | ||
6308 | name = "os_homedir___os_homedir_1.0.2.tgz"; | ||
6309 | url = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz"; | ||
6310 | sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3"; | ||
6311 | }; | ||
6312 | } | ||
6313 | |||
6314 | { | ||
6315 | name = "os_locale___os_locale_1.4.0.tgz"; | ||
6316 | path = fetchurl { | ||
6317 | name = "os_locale___os_locale_1.4.0.tgz"; | ||
6318 | url = "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz"; | ||
6319 | sha1 = "20f9f17ae29ed345e8bde583b13d2009803c14d9"; | ||
6320 | }; | ||
6321 | } | ||
6322 | |||
6323 | { | ||
6324 | name = "os_tmpdir___os_tmpdir_1.0.2.tgz"; | ||
6325 | path = fetchurl { | ||
6326 | name = "os_tmpdir___os_tmpdir_1.0.2.tgz"; | ||
6327 | url = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz"; | ||
6328 | sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274"; | ||
6329 | }; | ||
6330 | } | ||
6331 | |||
6332 | { | ||
6333 | name = "osenv___osenv_0.1.5.tgz"; | ||
6334 | path = fetchurl { | ||
6335 | name = "osenv___osenv_0.1.5.tgz"; | ||
6336 | url = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz"; | ||
6337 | sha1 = "85cdfafaeb28e8677f416e287592b5f3f49ea410"; | ||
6338 | }; | ||
6339 | } | ||
6340 | |||
6341 | { | ||
6342 | name = "osenv___osenv_0.0.3.tgz"; | ||
6343 | path = fetchurl { | ||
6344 | name = "osenv___osenv_0.0.3.tgz"; | ||
6345 | url = "https://registry.yarnpkg.com/osenv/-/osenv-0.0.3.tgz"; | ||
6346 | sha1 = "cd6ad8ddb290915ad9e22765576025d411f29cb6"; | ||
6347 | }; | ||
6348 | } | ||
6349 | |||
6350 | { | ||
6351 | name = "p_throttler___p_throttler_0.0.1.tgz"; | ||
6352 | path = fetchurl { | ||
6353 | name = "p_throttler___p_throttler_0.0.1.tgz"; | ||
6354 | url = "https://registry.yarnpkg.com/p-throttler/-/p-throttler-0.0.1.tgz"; | ||
6355 | sha1 = "c341e3589ec843852a035e6f88e6c1e96150029b"; | ||
6356 | }; | ||
6357 | } | ||
6358 | |||
6359 | { | ||
6360 | name = "package_json___package_json_1.2.0.tgz"; | ||
6361 | path = fetchurl { | ||
6362 | name = "package_json___package_json_1.2.0.tgz"; | ||
6363 | url = "https://registry.yarnpkg.com/package-json/-/package-json-1.2.0.tgz"; | ||
6364 | sha1 = "c8ecac094227cdf76a316874ed05e27cc939a0e0"; | ||
6365 | }; | ||
6366 | } | ||
6367 | |||
6368 | { | ||
6369 | name = "pako___pako_0.2.9.tgz"; | ||
6370 | path = fetchurl { | ||
6371 | name = "pako___pako_0.2.9.tgz"; | ||
6372 | url = "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz"; | ||
6373 | sha1 = "f3f7522f4ef782348da8161bad9ecfd51bf83a75"; | ||
6374 | }; | ||
6375 | } | ||
6376 | |||
6377 | { | ||
6378 | name = "parents___parents_0.0.2.tgz"; | ||
6379 | path = fetchurl { | ||
6380 | name = "parents___parents_0.0.2.tgz"; | ||
6381 | url = "https://registry.yarnpkg.com/parents/-/parents-0.0.2.tgz"; | ||
6382 | sha1 = "67147826e497d40759aaf5ba4c99659b6034d302"; | ||
6383 | }; | ||
6384 | } | ||
6385 | |||
6386 | { | ||
6387 | name = "parents___parents_0.0.3.tgz"; | ||
6388 | path = fetchurl { | ||
6389 | name = "parents___parents_0.0.3.tgz"; | ||
6390 | url = "https://registry.yarnpkg.com/parents/-/parents-0.0.3.tgz"; | ||
6391 | sha1 = "fa212f024d9fa6318dbb6b4ce676c8be493b9c43"; | ||
6392 | }; | ||
6393 | } | ||
6394 | |||
6395 | { | ||
6396 | name = "parse_filepath___parse_filepath_1.0.2.tgz"; | ||
6397 | path = fetchurl { | ||
6398 | name = "parse_filepath___parse_filepath_1.0.2.tgz"; | ||
6399 | url = "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz"; | ||
6400 | sha1 = "a632127f53aaf3d15876f5872f3ffac763d6c891"; | ||
6401 | }; | ||
6402 | } | ||
6403 | |||
6404 | { | ||
6405 | name = "parse_glob___parse_glob_3.0.4.tgz"; | ||
6406 | path = fetchurl { | ||
6407 | name = "parse_glob___parse_glob_3.0.4.tgz"; | ||
6408 | url = "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz"; | ||
6409 | sha1 = "b2c376cfb11f35513badd173ef0bb6e3a388391c"; | ||
6410 | }; | ||
6411 | } | ||
6412 | |||
6413 | { | ||
6414 | name = "parse_json___parse_json_2.2.0.tgz"; | ||
6415 | path = fetchurl { | ||
6416 | name = "parse_json___parse_json_2.2.0.tgz"; | ||
6417 | url = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz"; | ||
6418 | sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9"; | ||
6419 | }; | ||
6420 | } | ||
6421 | |||
6422 | { | ||
6423 | name = "parse_node_version___parse_node_version_1.0.1.tgz"; | ||
6424 | path = fetchurl { | ||
6425 | name = "parse_node_version___parse_node_version_1.0.1.tgz"; | ||
6426 | url = "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz"; | ||
6427 | sha1 = "e2b5dbede00e7fa9bc363607f53327e8b073189b"; | ||
6428 | }; | ||
6429 | } | ||
6430 | |||
6431 | { | ||
6432 | name = "parse_passwd___parse_passwd_1.0.0.tgz"; | ||
6433 | path = fetchurl { | ||
6434 | name = "parse_passwd___parse_passwd_1.0.0.tgz"; | ||
6435 | url = "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz"; | ||
6436 | sha1 = "6d5b934a456993b23d37f40a382d6f1666a8e5c6"; | ||
6437 | }; | ||
6438 | } | ||
6439 | |||
6440 | { | ||
6441 | name = "parsejson___parsejson_0.0.3.tgz"; | ||
6442 | path = fetchurl { | ||
6443 | name = "parsejson___parsejson_0.0.3.tgz"; | ||
6444 | url = "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz"; | ||
6445 | sha1 = "ab7e3759f209ece99437973f7d0f1f64ae0e64ab"; | ||
6446 | }; | ||
6447 | } | ||
6448 | |||
6449 | { | ||
6450 | name = "parseqs___parseqs_0.0.5.tgz"; | ||
6451 | path = fetchurl { | ||
6452 | name = "parseqs___parseqs_0.0.5.tgz"; | ||
6453 | url = "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz"; | ||
6454 | sha1 = "d5208a3738e46766e291ba2ea173684921a8b89d"; | ||
6455 | }; | ||
6456 | } | ||
6457 | |||
6458 | { | ||
6459 | name = "parseuri___parseuri_0.0.5.tgz"; | ||
6460 | path = fetchurl { | ||
6461 | name = "parseuri___parseuri_0.0.5.tgz"; | ||
6462 | url = "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz"; | ||
6463 | sha1 = "80204a50d4dbb779bfdc6ebe2778d90e4bce320a"; | ||
6464 | }; | ||
6465 | } | ||
6466 | |||
6467 | { | ||
6468 | name = "parseurl___parseurl_1.3.3.tgz"; | ||
6469 | path = fetchurl { | ||
6470 | name = "parseurl___parseurl_1.3.3.tgz"; | ||
6471 | url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz"; | ||
6472 | sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4"; | ||
6473 | }; | ||
6474 | } | ||
6475 | |||
6476 | { | ||
6477 | name = "pascalcase___pascalcase_0.1.1.tgz"; | ||
6478 | path = fetchurl { | ||
6479 | name = "pascalcase___pascalcase_0.1.1.tgz"; | ||
6480 | url = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz"; | ||
6481 | sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14"; | ||
6482 | }; | ||
6483 | } | ||
6484 | |||
6485 | { | ||
6486 | name = "path_browserify___path_browserify_0.0.1.tgz"; | ||
6487 | path = fetchurl { | ||
6488 | name = "path_browserify___path_browserify_0.0.1.tgz"; | ||
6489 | url = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz"; | ||
6490 | sha1 = "e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"; | ||
6491 | }; | ||
6492 | } | ||
6493 | |||
6494 | { | ||
6495 | name = "path_exists___path_exists_2.1.0.tgz"; | ||
6496 | path = fetchurl { | ||
6497 | name = "path_exists___path_exists_2.1.0.tgz"; | ||
6498 | url = "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz"; | ||
6499 | sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b"; | ||
6500 | }; | ||
6501 | } | ||
6502 | |||
6503 | { | ||
6504 | name = "path_is_absolute___path_is_absolute_1.0.1.tgz"; | ||
6505 | path = fetchurl { | ||
6506 | name = "path_is_absolute___path_is_absolute_1.0.1.tgz"; | ||
6507 | url = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; | ||
6508 | sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"; | ||
6509 | }; | ||
6510 | } | ||
6511 | |||
6512 | { | ||
6513 | name = "path_parse___path_parse_1.0.6.tgz"; | ||
6514 | path = fetchurl { | ||
6515 | name = "path_parse___path_parse_1.0.6.tgz"; | ||
6516 | url = "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz"; | ||
6517 | sha1 = "d62dbb5679405d72c4737ec58600e9ddcf06d24c"; | ||
6518 | }; | ||
6519 | } | ||
6520 | |||
6521 | { | ||
6522 | name = "path_platform___path_platform_0.0.1.tgz"; | ||
6523 | path = fetchurl { | ||
6524 | name = "path_platform___path_platform_0.0.1.tgz"; | ||
6525 | url = "https://registry.yarnpkg.com/path-platform/-/path-platform-0.0.1.tgz"; | ||
6526 | sha1 = "b5585d7c3c463d89aa0060d86611cf1afd617e2a"; | ||
6527 | }; | ||
6528 | } | ||
6529 | |||
6530 | { | ||
6531 | name = "path_root_regex___path_root_regex_0.1.2.tgz"; | ||
6532 | path = fetchurl { | ||
6533 | name = "path_root_regex___path_root_regex_0.1.2.tgz"; | ||
6534 | url = "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz"; | ||
6535 | sha1 = "bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d"; | ||
6536 | }; | ||
6537 | } | ||
6538 | |||
6539 | { | ||
6540 | name = "path_root___path_root_0.1.1.tgz"; | ||
6541 | path = fetchurl { | ||
6542 | name = "path_root___path_root_0.1.1.tgz"; | ||
6543 | url = "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz"; | ||
6544 | sha1 = "9a4a6814cac1c0cd73360a95f32083c8ea4745b7"; | ||
6545 | }; | ||
6546 | } | ||
6547 | |||
6548 | { | ||
6549 | name = "path_type___path_type_1.1.0.tgz"; | ||
6550 | path = fetchurl { | ||
6551 | name = "path_type___path_type_1.1.0.tgz"; | ||
6552 | url = "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz"; | ||
6553 | sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441"; | ||
6554 | }; | ||
6555 | } | ||
6556 | |||
6557 | { | ||
6558 | name = "pause_stream___pause_stream_0.0.11.tgz"; | ||
6559 | path = fetchurl { | ||
6560 | name = "pause_stream___pause_stream_0.0.11.tgz"; | ||
6561 | url = "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz"; | ||
6562 | sha1 = "fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"; | ||
6563 | }; | ||
6564 | } | ||
6565 | |||
6566 | { | ||
6567 | name = "performance_now___performance_now_2.1.0.tgz"; | ||
6568 | path = fetchurl { | ||
6569 | name = "performance_now___performance_now_2.1.0.tgz"; | ||
6570 | url = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz"; | ||
6571 | sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"; | ||
6572 | }; | ||
6573 | } | ||
6574 | |||
6575 | { | ||
6576 | name = "pify___pify_2.3.0.tgz"; | ||
6577 | path = fetchurl { | ||
6578 | name = "pify___pify_2.3.0.tgz"; | ||
6579 | url = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz"; | ||
6580 | sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c"; | ||
6581 | }; | ||
6582 | } | ||
6583 | |||
6584 | { | ||
6585 | name = "pinkie_promise___pinkie_promise_2.0.1.tgz"; | ||
6586 | path = fetchurl { | ||
6587 | name = "pinkie_promise___pinkie_promise_2.0.1.tgz"; | ||
6588 | url = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz"; | ||
6589 | sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa"; | ||
6590 | }; | ||
6591 | } | ||
6592 | |||
6593 | { | ||
6594 | name = "pinkie___pinkie_2.0.4.tgz"; | ||
6595 | path = fetchurl { | ||
6596 | name = "pinkie___pinkie_2.0.4.tgz"; | ||
6597 | url = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz"; | ||
6598 | sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870"; | ||
6599 | }; | ||
6600 | } | ||
6601 | |||
6602 | { | ||
6603 | name = "posix_character_classes___posix_character_classes_0.1.1.tgz"; | ||
6604 | path = fetchurl { | ||
6605 | name = "posix_character_classes___posix_character_classes_0.1.1.tgz"; | ||
6606 | url = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz"; | ||
6607 | sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"; | ||
6608 | }; | ||
6609 | } | ||
6610 | |||
6611 | { | ||
6612 | name = "prelude_ls___prelude_ls_1.1.2.tgz"; | ||
6613 | path = fetchurl { | ||
6614 | name = "prelude_ls___prelude_ls_1.1.2.tgz"; | ||
6615 | url = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz"; | ||
6616 | sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54"; | ||
6617 | }; | ||
6618 | } | ||
6619 | |||
6620 | { | ||
6621 | name = "prepend_http___prepend_http_1.0.4.tgz"; | ||
6622 | path = fetchurl { | ||
6623 | name = "prepend_http___prepend_http_1.0.4.tgz"; | ||
6624 | url = "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz"; | ||
6625 | sha1 = "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"; | ||
6626 | }; | ||
6627 | } | ||
6628 | |||
6629 | { | ||
6630 | name = "preserve___preserve_0.2.0.tgz"; | ||
6631 | path = fetchurl { | ||
6632 | name = "preserve___preserve_0.2.0.tgz"; | ||
6633 | url = "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz"; | ||
6634 | sha1 = "815ed1f6ebc65926f865b310c0713bcb3315ce4b"; | ||
6635 | }; | ||
6636 | } | ||
6637 | |||
6638 | { | ||
6639 | name = "pretty_hrtime___pretty_hrtime_1.0.3.tgz"; | ||
6640 | path = fetchurl { | ||
6641 | name = "pretty_hrtime___pretty_hrtime_1.0.3.tgz"; | ||
6642 | url = "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz"; | ||
6643 | sha1 = "b7e3ea42435a4c9b2759d99e0f201eb195802ee1"; | ||
6644 | }; | ||
6645 | } | ||
6646 | |||
6647 | { | ||
6648 | name = "process_nextick_args___process_nextick_args_2.0.1.tgz"; | ||
6649 | path = fetchurl { | ||
6650 | name = "process_nextick_args___process_nextick_args_2.0.1.tgz"; | ||
6651 | url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz"; | ||
6652 | sha1 = "7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"; | ||
6653 | }; | ||
6654 | } | ||
6655 | |||
6656 | { | ||
6657 | name = "process___process_0.7.0.tgz"; | ||
6658 | path = fetchurl { | ||
6659 | name = "process___process_0.7.0.tgz"; | ||
6660 | url = "https://registry.yarnpkg.com/process/-/process-0.7.0.tgz"; | ||
6661 | sha1 = "c52208161a34adf3812344ae85d3e6150469389d"; | ||
6662 | }; | ||
6663 | } | ||
6664 | |||
6665 | { | ||
6666 | name = "process___process_0.5.2.tgz"; | ||
6667 | path = fetchurl { | ||
6668 | name = "process___process_0.5.2.tgz"; | ||
6669 | url = "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz"; | ||
6670 | sha1 = "1638d8a8e34c2f440a91db95ab9aeb677fc185cf"; | ||
6671 | }; | ||
6672 | } | ||
6673 | |||
6674 | { | ||
6675 | name = "process___process_0.6.0.tgz"; | ||
6676 | path = fetchurl { | ||
6677 | name = "process___process_0.6.0.tgz"; | ||
6678 | url = "https://registry.yarnpkg.com/process/-/process-0.6.0.tgz"; | ||
6679 | sha1 = "7dd9be80ffaaedd4cb628f1827f1cbab6dc0918f"; | ||
6680 | }; | ||
6681 | } | ||
6682 | |||
6683 | { | ||
6684 | name = "promise___promise_7.3.1.tgz"; | ||
6685 | path = fetchurl { | ||
6686 | name = "promise___promise_7.3.1.tgz"; | ||
6687 | url = "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz"; | ||
6688 | sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf"; | ||
6689 | }; | ||
6690 | } | ||
6691 | |||
6692 | { | ||
6693 | name = "promptly___promptly_0.2.1.tgz"; | ||
6694 | path = fetchurl { | ||
6695 | name = "promptly___promptly_0.2.1.tgz"; | ||
6696 | url = "https://registry.yarnpkg.com/promptly/-/promptly-0.2.1.tgz"; | ||
6697 | sha1 = "6444e7ca4dbd9899e7eeb5ec3922827ebdc22b3b"; | ||
6698 | }; | ||
6699 | } | ||
6700 | |||
6701 | { | ||
6702 | name = "pseudomap___pseudomap_1.0.2.tgz"; | ||
6703 | path = fetchurl { | ||
6704 | name = "pseudomap___pseudomap_1.0.2.tgz"; | ||
6705 | url = "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz"; | ||
6706 | sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3"; | ||
6707 | }; | ||
6708 | } | ||
6709 | |||
6710 | { | ||
6711 | name = "psl___psl_1.8.0.tgz"; | ||
6712 | path = fetchurl { | ||
6713 | name = "psl___psl_1.8.0.tgz"; | ||
6714 | url = "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz"; | ||
6715 | sha1 = "9326f8bcfb013adcc005fdff056acce020e51c24"; | ||
6716 | }; | ||
6717 | } | ||
6718 | |||
6719 | { | ||
6720 | name = "pug_attrs___pug_attrs_2.0.4.tgz"; | ||
6721 | path = fetchurl { | ||
6722 | name = "pug_attrs___pug_attrs_2.0.4.tgz"; | ||
6723 | url = "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz"; | ||
6724 | sha1 = "b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336"; | ||
6725 | }; | ||
6726 | } | ||
6727 | |||
6728 | { | ||
6729 | name = "pug_code_gen___pug_code_gen_2.0.2.tgz"; | ||
6730 | path = fetchurl { | ||
6731 | name = "pug_code_gen___pug_code_gen_2.0.2.tgz"; | ||
6732 | url = "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.2.tgz"; | ||
6733 | sha1 = "ad0967162aea077dcf787838d94ed14acb0217c2"; | ||
6734 | }; | ||
6735 | } | ||
6736 | |||
6737 | { | ||
6738 | name = "pug_error___pug_error_1.3.3.tgz"; | ||
6739 | path = fetchurl { | ||
6740 | name = "pug_error___pug_error_1.3.3.tgz"; | ||
6741 | url = "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz"; | ||
6742 | sha1 = "f342fb008752d58034c185de03602dd9ffe15fa6"; | ||
6743 | }; | ||
6744 | } | ||
6745 | |||
6746 | { | ||
6747 | name = "pug_filters___pug_filters_3.1.1.tgz"; | ||
6748 | path = fetchurl { | ||
6749 | name = "pug_filters___pug_filters_3.1.1.tgz"; | ||
6750 | url = "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz"; | ||
6751 | sha1 = "ab2cc82db9eeccf578bda89130e252a0db026aa7"; | ||
6752 | }; | ||
6753 | } | ||
6754 | |||
6755 | { | ||
6756 | name = "pug_lexer___pug_lexer_4.1.0.tgz"; | ||
6757 | path = fetchurl { | ||
6758 | name = "pug_lexer___pug_lexer_4.1.0.tgz"; | ||
6759 | url = "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz"; | ||
6760 | sha1 = "531cde48c7c0b1fcbbc2b85485c8665e31489cfd"; | ||
6761 | }; | ||
6762 | } | ||
6763 | |||
6764 | { | ||
6765 | name = "pug_linker___pug_linker_3.0.6.tgz"; | ||
6766 | path = fetchurl { | ||
6767 | name = "pug_linker___pug_linker_3.0.6.tgz"; | ||
6768 | url = "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz"; | ||
6769 | sha1 = "f5bf218b0efd65ce6670f7afc51658d0f82989fb"; | ||
6770 | }; | ||
6771 | } | ||
6772 | |||
6773 | { | ||
6774 | name = "pug_load___pug_load_2.0.12.tgz"; | ||
6775 | path = fetchurl { | ||
6776 | name = "pug_load___pug_load_2.0.12.tgz"; | ||
6777 | url = "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz"; | ||
6778 | sha1 = "d38c85eb85f6e2f704dea14dcca94144d35d3e7b"; | ||
6779 | }; | ||
6780 | } | ||
6781 | |||
6782 | { | ||
6783 | name = "pug_parser___pug_parser_5.0.1.tgz"; | ||
6784 | path = fetchurl { | ||
6785 | name = "pug_parser___pug_parser_5.0.1.tgz"; | ||
6786 | url = "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz"; | ||
6787 | sha1 = "03e7ada48b6840bd3822f867d7d90f842d0ffdc9"; | ||
6788 | }; | ||
6789 | } | ||
6790 | |||
6791 | { | ||
6792 | name = "pug_runtime___pug_runtime_2.0.5.tgz"; | ||
6793 | path = fetchurl { | ||
6794 | name = "pug_runtime___pug_runtime_2.0.5.tgz"; | ||
6795 | url = "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz"; | ||
6796 | sha1 = "6da7976c36bf22f68e733c359240d8ae7a32953a"; | ||
6797 | }; | ||
6798 | } | ||
6799 | |||
6800 | { | ||
6801 | name = "pug_strip_comments___pug_strip_comments_1.0.4.tgz"; | ||
6802 | path = fetchurl { | ||
6803 | name = "pug_strip_comments___pug_strip_comments_1.0.4.tgz"; | ||
6804 | url = "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz"; | ||
6805 | sha1 = "cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8"; | ||
6806 | }; | ||
6807 | } | ||
6808 | |||
6809 | { | ||
6810 | name = "pug_walk___pug_walk_1.1.8.tgz"; | ||
6811 | path = fetchurl { | ||
6812 | name = "pug_walk___pug_walk_1.1.8.tgz"; | ||
6813 | url = "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz"; | ||
6814 | sha1 = "b408f67f27912f8c21da2f45b7230c4bd2a5ea7a"; | ||
6815 | }; | ||
6816 | } | ||
6817 | |||
6818 | { | ||
6819 | name = "pug___pug_2.0.4.tgz"; | ||
6820 | path = fetchurl { | ||
6821 | name = "pug___pug_2.0.4.tgz"; | ||
6822 | url = "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz"; | ||
6823 | sha1 = "ee7682ec0a60494b38d48a88f05f3b0ac931377d"; | ||
6824 | }; | ||
6825 | } | ||
6826 | |||
6827 | { | ||
6828 | name = "punycode___punycode_1.3.2.tgz"; | ||
6829 | path = fetchurl { | ||
6830 | name = "punycode___punycode_1.3.2.tgz"; | ||
6831 | url = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz"; | ||
6832 | sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d"; | ||
6833 | }; | ||
6834 | } | ||
6835 | |||
6836 | { | ||
6837 | name = "punycode___punycode_2.1.1.tgz"; | ||
6838 | path = fetchurl { | ||
6839 | name = "punycode___punycode_2.1.1.tgz"; | ||
6840 | url = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz"; | ||
6841 | sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec"; | ||
6842 | }; | ||
6843 | } | ||
6844 | |||
6845 | { | ||
6846 | name = "punycode___punycode_1.2.4.tgz"; | ||
6847 | path = fetchurl { | ||
6848 | name = "punycode___punycode_1.2.4.tgz"; | ||
6849 | url = "https://registry.yarnpkg.com/punycode/-/punycode-1.2.4.tgz"; | ||
6850 | sha1 = "54008ac972aec74175def9cba6df7fa9d3918740"; | ||
6851 | }; | ||
6852 | } | ||
6853 | |||
6854 | { | ||
6855 | name = "q___q_1.5.1.tgz"; | ||
6856 | path = fetchurl { | ||
6857 | name = "q___q_1.5.1.tgz"; | ||
6858 | url = "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz"; | ||
6859 | sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7"; | ||
6860 | }; | ||
6861 | } | ||
6862 | |||
6863 | { | ||
6864 | name = "q___q_0.9.7.tgz"; | ||
6865 | path = fetchurl { | ||
6866 | name = "q___q_0.9.7.tgz"; | ||
6867 | url = "https://registry.yarnpkg.com/q/-/q-0.9.7.tgz"; | ||
6868 | sha1 = "4de2e6cb3b29088c9e4cbc03bf9d42fb96ce2f75"; | ||
6869 | }; | ||
6870 | } | ||
6871 | |||
6872 | { | ||
6873 | name = "q___q_1.0.1.tgz"; | ||
6874 | path = fetchurl { | ||
6875 | name = "q___q_1.0.1.tgz"; | ||
6876 | url = "https://registry.yarnpkg.com/q/-/q-1.0.1.tgz"; | ||
6877 | sha1 = "11872aeedee89268110b10a718448ffb10112a14"; | ||
6878 | }; | ||
6879 | } | ||
6880 | |||
6881 | { | ||
6882 | name = "qs___qs_5.2.0.tgz"; | ||
6883 | path = fetchurl { | ||
6884 | name = "qs___qs_5.2.0.tgz"; | ||
6885 | url = "https://registry.yarnpkg.com/qs/-/qs-5.2.0.tgz"; | ||
6886 | sha1 = "a9f31142af468cb72b25b30136ba2456834916be"; | ||
6887 | }; | ||
6888 | } | ||
6889 | |||
6890 | { | ||
6891 | name = "qs___qs_6.7.0.tgz"; | ||
6892 | path = fetchurl { | ||
6893 | name = "qs___qs_6.7.0.tgz"; | ||
6894 | url = "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz"; | ||
6895 | sha1 = "41dc1a015e3d581f1621776be31afb2876a9b1bc"; | ||
6896 | }; | ||
6897 | } | ||
6898 | |||
6899 | { | ||
6900 | name = "qs___qs_0.6.6.tgz"; | ||
6901 | path = fetchurl { | ||
6902 | name = "qs___qs_0.6.6.tgz"; | ||
6903 | url = "https://registry.yarnpkg.com/qs/-/qs-0.6.6.tgz"; | ||
6904 | sha1 = "6e015098ff51968b8a3c819001d5f2c89bc4b107"; | ||
6905 | }; | ||
6906 | } | ||
6907 | |||
6908 | { | ||
6909 | name = "qs___qs_1.0.2.tgz"; | ||
6910 | path = fetchurl { | ||
6911 | name = "qs___qs_1.0.2.tgz"; | ||
6912 | url = "https://registry.yarnpkg.com/qs/-/qs-1.0.2.tgz"; | ||
6913 | sha1 = "50a93e2b5af6691c31bcea5dae78ee6ea1903768"; | ||
6914 | }; | ||
6915 | } | ||
6916 | |||
6917 | { | ||
6918 | name = "qs___qs_2.2.5.tgz"; | ||
6919 | path = fetchurl { | ||
6920 | name = "qs___qs_2.2.5.tgz"; | ||
6921 | url = "https://registry.yarnpkg.com/qs/-/qs-2.2.5.tgz"; | ||
6922 | sha1 = "1088abaf9dcc0ae5ae45b709e6c6b5888b23923c"; | ||
6923 | }; | ||
6924 | } | ||
6925 | |||
6926 | { | ||
6927 | name = "qs___qs_2.3.3.tgz"; | ||
6928 | path = fetchurl { | ||
6929 | name = "qs___qs_2.3.3.tgz"; | ||
6930 | url = "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz"; | ||
6931 | sha1 = "e9e85adbe75da0bbe4c8e0476a086290f863b404"; | ||
6932 | }; | ||
6933 | } | ||
6934 | |||
6935 | { | ||
6936 | name = "qs___qs_6.5.2.tgz"; | ||
6937 | path = fetchurl { | ||
6938 | name = "qs___qs_6.5.2.tgz"; | ||
6939 | url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz"; | ||
6940 | sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36"; | ||
6941 | }; | ||
6942 | } | ||
6943 | |||
6944 | { | ||
6945 | name = "querystring_es3___querystring_es3_0.2.0.tgz"; | ||
6946 | path = fetchurl { | ||
6947 | name = "querystring_es3___querystring_es3_0.2.0.tgz"; | ||
6948 | url = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.0.tgz"; | ||
6949 | sha1 = "c365a08a69c443accfeb3a9deab35e3f0abaa476"; | ||
6950 | }; | ||
6951 | } | ||
6952 | |||
6953 | { | ||
6954 | name = "querystring___querystring_0.2.0.tgz"; | ||
6955 | path = fetchurl { | ||
6956 | name = "querystring___querystring_0.2.0.tgz"; | ||
6957 | url = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz"; | ||
6958 | sha1 = "b209849203bb25df820da756e747005878521620"; | ||
6959 | }; | ||
6960 | } | ||
6961 | |||
6962 | { | ||
6963 | name = "randomatic___randomatic_3.1.1.tgz"; | ||
6964 | path = fetchurl { | ||
6965 | name = "randomatic___randomatic_3.1.1.tgz"; | ||
6966 | url = "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz"; | ||
6967 | sha1 = "b776efc59375984e36c537b2f51a1f0aff0da1ed"; | ||
6968 | }; | ||
6969 | } | ||
6970 | |||
6971 | { | ||
6972 | name = "range_parser___range_parser_1.0.3.tgz"; | ||
6973 | path = fetchurl { | ||
6974 | name = "range_parser___range_parser_1.0.3.tgz"; | ||
6975 | url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz"; | ||
6976 | sha1 = "6872823535c692e2c2a0103826afd82c2e0ff175"; | ||
6977 | }; | ||
6978 | } | ||
6979 | |||
6980 | { | ||
6981 | name = "raw_body___raw_body_2.4.0.tgz"; | ||
6982 | path = fetchurl { | ||
6983 | name = "raw_body___raw_body_2.4.0.tgz"; | ||
6984 | url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz"; | ||
6985 | sha1 = "a1ce6fb9c9bc356ca52e89256ab59059e13d0332"; | ||
6986 | }; | ||
6987 | } | ||
6988 | |||
6989 | { | ||
6990 | name = "raw_body___raw_body_2.1.7.tgz"; | ||
6991 | path = fetchurl { | ||
6992 | name = "raw_body___raw_body_2.1.7.tgz"; | ||
6993 | url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz"; | ||
6994 | sha1 = "adfeace2e4fb3098058014d08c072dcc59758774"; | ||
6995 | }; | ||
6996 | } | ||
6997 | |||
6998 | { | ||
6999 | name = "rc___rc_1.2.8.tgz"; | ||
7000 | path = fetchurl { | ||
7001 | name = "rc___rc_1.2.8.tgz"; | ||
7002 | url = "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz"; | ||
7003 | sha1 = "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"; | ||
7004 | }; | ||
7005 | } | ||
7006 | |||
7007 | { | ||
7008 | name = "read_all_stream___read_all_stream_3.1.0.tgz"; | ||
7009 | path = fetchurl { | ||
7010 | name = "read_all_stream___read_all_stream_3.1.0.tgz"; | ||
7011 | url = "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz"; | ||
7012 | sha1 = "35c3e177f2078ef789ee4bfafa4373074eaef4fa"; | ||
7013 | }; | ||
7014 | } | ||
7015 | |||
7016 | { | ||
7017 | name = "read_pkg_up___read_pkg_up_1.0.1.tgz"; | ||
7018 | path = fetchurl { | ||
7019 | name = "read_pkg_up___read_pkg_up_1.0.1.tgz"; | ||
7020 | url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz"; | ||
7021 | sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02"; | ||
7022 | }; | ||
7023 | } | ||
7024 | |||
7025 | { | ||
7026 | name = "read_pkg___read_pkg_1.1.0.tgz"; | ||
7027 | path = fetchurl { | ||
7028 | name = "read_pkg___read_pkg_1.1.0.tgz"; | ||
7029 | url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz"; | ||
7030 | sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"; | ||
7031 | }; | ||
7032 | } | ||
7033 | |||
7034 | { | ||
7035 | name = "read___read_1.0.7.tgz"; | ||
7036 | path = fetchurl { | ||
7037 | name = "read___read_1.0.7.tgz"; | ||
7038 | url = "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz"; | ||
7039 | sha1 = "b3da19bd052431a97671d44a42634adf710b40c4"; | ||
7040 | }; | ||
7041 | } | ||
7042 | |||
7043 | { | ||
7044 | name = "readable_stream___readable_stream_1.0.34.tgz"; | ||
7045 | path = fetchurl { | ||
7046 | name = "readable_stream___readable_stream_1.0.34.tgz"; | ||
7047 | url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz"; | ||
7048 | sha1 = "125820e34bc842d2f2aaafafe4c2916ee32c157c"; | ||
7049 | }; | ||
7050 | } | ||
7051 | |||
7052 | { | ||
7053 | name = "readable_stream___readable_stream_1.1.14.tgz"; | ||
7054 | path = fetchurl { | ||
7055 | name = "readable_stream___readable_stream_1.1.14.tgz"; | ||
7056 | url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz"; | ||
7057 | sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9"; | ||
7058 | }; | ||
7059 | } | ||
7060 | |||
7061 | { | ||
7062 | name = "readable_stream___readable_stream_2.3.7.tgz"; | ||
7063 | path = fetchurl { | ||
7064 | name = "readable_stream___readable_stream_2.3.7.tgz"; | ||
7065 | url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz"; | ||
7066 | sha1 = "1eca1cf711aef814c04f62252a36a62f6cb23b57"; | ||
7067 | }; | ||
7068 | } | ||
7069 | |||
7070 | { | ||
7071 | name = "readdirp___readdirp_2.2.1.tgz"; | ||
7072 | path = fetchurl { | ||
7073 | name = "readdirp___readdirp_2.2.1.tgz"; | ||
7074 | url = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz"; | ||
7075 | sha1 = "0e87622a3325aa33e892285caf8b4e846529a525"; | ||
7076 | }; | ||
7077 | } | ||
7078 | |||
7079 | { | ||
7080 | name = "readline2___readline2_0.1.1.tgz"; | ||
7081 | path = fetchurl { | ||
7082 | name = "readline2___readline2_0.1.1.tgz"; | ||
7083 | url = "https://registry.yarnpkg.com/readline2/-/readline2-0.1.1.tgz"; | ||
7084 | sha1 = "99443ba6e83b830ef3051bfd7dc241a82728d568"; | ||
7085 | }; | ||
7086 | } | ||
7087 | |||
7088 | { | ||
7089 | name = "rechoir___rechoir_0.6.2.tgz"; | ||
7090 | path = fetchurl { | ||
7091 | name = "rechoir___rechoir_0.6.2.tgz"; | ||
7092 | url = "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz"; | ||
7093 | sha1 = "85204b54dba82d5742e28c96756ef43af50e3384"; | ||
7094 | }; | ||
7095 | } | ||
7096 | |||
7097 | { | ||
7098 | name = "redent___redent_1.0.0.tgz"; | ||
7099 | path = fetchurl { | ||
7100 | name = "redent___redent_1.0.0.tgz"; | ||
7101 | url = "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz"; | ||
7102 | sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"; | ||
7103 | }; | ||
7104 | } | ||
7105 | |||
7106 | { | ||
7107 | name = "redeyed___redeyed_0.4.4.tgz"; | ||
7108 | path = fetchurl { | ||
7109 | name = "redeyed___redeyed_0.4.4.tgz"; | ||
7110 | url = "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz"; | ||
7111 | sha1 = "37e990a6f2b21b2a11c2e6a48fd4135698cba97f"; | ||
7112 | }; | ||
7113 | } | ||
7114 | |||
7115 | { | ||
7116 | name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz"; | ||
7117 | path = fetchurl { | ||
7118 | name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz"; | ||
7119 | url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz"; | ||
7120 | sha1 = "be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"; | ||
7121 | }; | ||
7122 | } | ||
7123 | |||
7124 | { | ||
7125 | name = "regex_cache___regex_cache_0.4.4.tgz"; | ||
7126 | path = fetchurl { | ||
7127 | name = "regex_cache___regex_cache_0.4.4.tgz"; | ||
7128 | url = "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz"; | ||
7129 | sha1 = "75bdc58a2a1496cec48a12835bc54c8d562336dd"; | ||
7130 | }; | ||
7131 | } | ||
7132 | |||
7133 | { | ||
7134 | name = "regex_not___regex_not_1.0.2.tgz"; | ||
7135 | path = fetchurl { | ||
7136 | name = "regex_not___regex_not_1.0.2.tgz"; | ||
7137 | url = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz"; | ||
7138 | sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c"; | ||
7139 | }; | ||
7140 | } | ||
7141 | |||
7142 | { | ||
7143 | name = "registry_url___registry_url_3.1.0.tgz"; | ||
7144 | path = fetchurl { | ||
7145 | name = "registry_url___registry_url_3.1.0.tgz"; | ||
7146 | url = "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz"; | ||
7147 | sha1 = "3d4ef870f73dde1d77f0cf9a381432444e174942"; | ||
7148 | }; | ||
7149 | } | ||
7150 | |||
7151 | { | ||
7152 | name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz"; | ||
7153 | path = fetchurl { | ||
7154 | name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz"; | ||
7155 | url = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz"; | ||
7156 | sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef"; | ||
7157 | }; | ||
7158 | } | ||
7159 | |||
7160 | { | ||
7161 | name = "repeat_element___repeat_element_1.1.3.tgz"; | ||
7162 | path = fetchurl { | ||
7163 | name = "repeat_element___repeat_element_1.1.3.tgz"; | ||
7164 | url = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz"; | ||
7165 | sha1 = "782e0d825c0c5a3bb39731f84efee6b742e6b1ce"; | ||
7166 | }; | ||
7167 | } | ||
7168 | |||
7169 | { | ||
7170 | name = "repeat_string___repeat_string_0.2.2.tgz"; | ||
7171 | path = fetchurl { | ||
7172 | name = "repeat_string___repeat_string_0.2.2.tgz"; | ||
7173 | url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz"; | ||
7174 | sha1 = "c7a8d3236068362059a7e4651fc6884e8b1fb4ae"; | ||
7175 | }; | ||
7176 | } | ||
7177 | |||
7178 | { | ||
7179 | name = "repeat_string___repeat_string_1.6.1.tgz"; | ||
7180 | path = fetchurl { | ||
7181 | name = "repeat_string___repeat_string_1.6.1.tgz"; | ||
7182 | url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz"; | ||
7183 | sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637"; | ||
7184 | }; | ||
7185 | } | ||
7186 | |||
7187 | { | ||
7188 | name = "repeating___repeating_2.0.1.tgz"; | ||
7189 | path = fetchurl { | ||
7190 | name = "repeating___repeating_2.0.1.tgz"; | ||
7191 | url = "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz"; | ||
7192 | sha1 = "5214c53a926d3552707527fbab415dbc08d06dda"; | ||
7193 | }; | ||
7194 | } | ||
7195 | |||
7196 | { | ||
7197 | name = "replace_ext___replace_ext_0.0.1.tgz"; | ||
7198 | path = fetchurl { | ||
7199 | name = "replace_ext___replace_ext_0.0.1.tgz"; | ||
7200 | url = "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz"; | ||
7201 | sha1 = "29bbd92078a739f0bcce2b4ee41e837953522924"; | ||
7202 | }; | ||
7203 | } | ||
7204 | |||
7205 | { | ||
7206 | name = "replace_ext___replace_ext_1.0.0.tgz"; | ||
7207 | path = fetchurl { | ||
7208 | name = "replace_ext___replace_ext_1.0.0.tgz"; | ||
7209 | url = "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz"; | ||
7210 | sha1 = "de63128373fcbf7c3ccfa4de5a480c45a67958eb"; | ||
7211 | }; | ||
7212 | } | ||
7213 | |||
7214 | { | ||
7215 | name = "replacestream___replacestream_4.0.3.tgz"; | ||
7216 | path = fetchurl { | ||
7217 | name = "replacestream___replacestream_4.0.3.tgz"; | ||
7218 | url = "https://registry.yarnpkg.com/replacestream/-/replacestream-4.0.3.tgz"; | ||
7219 | sha1 = "3ee5798092be364b1cdb1484308492cb3dff2f36"; | ||
7220 | }; | ||
7221 | } | ||
7222 | |||
7223 | { | ||
7224 | name = "request_progress___request_progress_0.3.1.tgz"; | ||
7225 | path = fetchurl { | ||
7226 | name = "request_progress___request_progress_0.3.1.tgz"; | ||
7227 | url = "https://registry.yarnpkg.com/request-progress/-/request-progress-0.3.1.tgz"; | ||
7228 | sha1 = "0721c105d8a96ac6b2ce8b2c89ae2d5ecfcf6b3a"; | ||
7229 | }; | ||
7230 | } | ||
7231 | |||
7232 | { | ||
7233 | name = "request_replay___request_replay_0.2.0.tgz"; | ||
7234 | path = fetchurl { | ||
7235 | name = "request_replay___request_replay_0.2.0.tgz"; | ||
7236 | url = "https://registry.yarnpkg.com/request-replay/-/request-replay-0.2.0.tgz"; | ||
7237 | sha1 = "9b693a5d118b39f5c596ead5ed91a26444057f60"; | ||
7238 | }; | ||
7239 | } | ||
7240 | |||
7241 | { | ||
7242 | name = "request___request_2.88.2.tgz"; | ||
7243 | path = fetchurl { | ||
7244 | name = "request___request_2.88.2.tgz"; | ||
7245 | url = "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz"; | ||
7246 | sha1 = "d73c918731cb5a87da047e207234146f664d12b3"; | ||
7247 | }; | ||
7248 | } | ||
7249 | |||
7250 | { | ||
7251 | name = "request___request_2.27.0.tgz"; | ||
7252 | path = fetchurl { | ||
7253 | name = "request___request_2.27.0.tgz"; | ||
7254 | url = "https://registry.yarnpkg.com/request/-/request-2.27.0.tgz"; | ||
7255 | sha1 = "dfb1a224dd3a5a9bade4337012503d710e538668"; | ||
7256 | }; | ||
7257 | } | ||
7258 | |||
7259 | { | ||
7260 | name = "request___request_2.36.0.tgz"; | ||
7261 | path = fetchurl { | ||
7262 | name = "request___request_2.36.0.tgz"; | ||
7263 | url = "https://registry.yarnpkg.com/request/-/request-2.36.0.tgz"; | ||
7264 | sha1 = "28c6c04262c7b9ffdd21b9255374517ee6d943f5"; | ||
7265 | }; | ||
7266 | } | ||
7267 | |||
7268 | { | ||
7269 | name = "request___request_2.40.0.tgz"; | ||
7270 | path = fetchurl { | ||
7271 | name = "request___request_2.40.0.tgz"; | ||
7272 | url = "https://registry.yarnpkg.com/request/-/request-2.40.0.tgz"; | ||
7273 | sha1 = "4dd670f696f1e6e842e66b4b5e839301ab9beb67"; | ||
7274 | }; | ||
7275 | } | ||
7276 | |||
7277 | { | ||
7278 | name = "request___request_2.51.0.tgz"; | ||
7279 | path = fetchurl { | ||
7280 | name = "request___request_2.51.0.tgz"; | ||
7281 | url = "https://registry.yarnpkg.com/request/-/request-2.51.0.tgz"; | ||
7282 | sha1 = "35d00bbecc012e55f907b1bd9e0dbd577bfef26e"; | ||
7283 | }; | ||
7284 | } | ||
7285 | |||
7286 | { | ||
7287 | name = "require_directory___require_directory_2.1.1.tgz"; | ||
7288 | path = fetchurl { | ||
7289 | name = "require_directory___require_directory_2.1.1.tgz"; | ||
7290 | url = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz"; | ||
7291 | sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"; | ||
7292 | }; | ||
7293 | } | ||
7294 | |||
7295 | { | ||
7296 | name = "require_main_filename___require_main_filename_1.0.1.tgz"; | ||
7297 | path = fetchurl { | ||
7298 | name = "require_main_filename___require_main_filename_1.0.1.tgz"; | ||
7299 | url = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz"; | ||
7300 | sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1"; | ||
7301 | }; | ||
7302 | } | ||
7303 | |||
7304 | { | ||
7305 | name = "requires_port___requires_port_1.0.0.tgz"; | ||
7306 | path = fetchurl { | ||
7307 | name = "requires_port___requires_port_1.0.0.tgz"; | ||
7308 | url = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz"; | ||
7309 | sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff"; | ||
7310 | }; | ||
7311 | } | ||
7312 | |||
7313 | { | ||
7314 | name = "resolve_dir___resolve_dir_1.0.1.tgz"; | ||
7315 | path = fetchurl { | ||
7316 | name = "resolve_dir___resolve_dir_1.0.1.tgz"; | ||
7317 | url = "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz"; | ||
7318 | sha1 = "79a40644c362be82f26effe739c9bb5382046f43"; | ||
7319 | }; | ||
7320 | } | ||
7321 | |||
7322 | { | ||
7323 | name = "resolve_url___resolve_url_0.2.1.tgz"; | ||
7324 | path = fetchurl { | ||
7325 | name = "resolve_url___resolve_url_0.2.1.tgz"; | ||
7326 | url = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz"; | ||
7327 | sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a"; | ||
7328 | }; | ||
7329 | } | ||
7330 | |||
7331 | { | ||
7332 | name = "resolve___resolve_0.6.3.tgz"; | ||
7333 | path = fetchurl { | ||
7334 | name = "resolve___resolve_0.6.3.tgz"; | ||
7335 | url = "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz"; | ||
7336 | sha1 = "dd957982e7e736debdf53b58a4dd91754575dd46"; | ||
7337 | }; | ||
7338 | } | ||
7339 | |||
7340 | { | ||
7341 | name = "resolve___resolve_1.1.7.tgz"; | ||
7342 | path = fetchurl { | ||
7343 | name = "resolve___resolve_1.1.7.tgz"; | ||
7344 | url = "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz"; | ||
7345 | sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b"; | ||
7346 | }; | ||
7347 | } | ||
7348 | |||
7349 | { | ||
7350 | name = "resolve___resolve_1.15.1.tgz"; | ||
7351 | path = fetchurl { | ||
7352 | name = "resolve___resolve_1.15.1.tgz"; | ||
7353 | url = "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz"; | ||
7354 | sha1 = "27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"; | ||
7355 | }; | ||
7356 | } | ||
7357 | |||
7358 | { | ||
7359 | name = "resolve___resolve_0.3.1.tgz"; | ||
7360 | path = fetchurl { | ||
7361 | name = "resolve___resolve_0.3.1.tgz"; | ||
7362 | url = "https://registry.yarnpkg.com/resolve/-/resolve-0.3.1.tgz"; | ||
7363 | sha1 = "34c63447c664c70598d1c9b126fc43b2a24310a4"; | ||
7364 | }; | ||
7365 | } | ||
7366 | |||
7367 | { | ||
7368 | name = "ret___ret_0.1.15.tgz"; | ||
7369 | path = fetchurl { | ||
7370 | name = "ret___ret_0.1.15.tgz"; | ||
7371 | url = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz"; | ||
7372 | sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"; | ||
7373 | }; | ||
7374 | } | ||
7375 | |||
7376 | { | ||
7377 | name = "retry___retry_0.6.1.tgz"; | ||
7378 | path = fetchurl { | ||
7379 | name = "retry___retry_0.6.1.tgz"; | ||
7380 | url = "https://registry.yarnpkg.com/retry/-/retry-0.6.1.tgz"; | ||
7381 | sha1 = "fdc90eed943fde11b893554b8cc63d0e899ba918"; | ||
7382 | }; | ||
7383 | } | ||
7384 | |||
7385 | { | ||
7386 | name = "rfile___rfile_1.0.0.tgz"; | ||
7387 | path = fetchurl { | ||
7388 | name = "rfile___rfile_1.0.0.tgz"; | ||
7389 | url = "https://registry.yarnpkg.com/rfile/-/rfile-1.0.0.tgz"; | ||
7390 | sha1 = "59708cf90ca1e74c54c3cfc5c36fdb9810435261"; | ||
7391 | }; | ||
7392 | } | ||
7393 | |||
7394 | { | ||
7395 | name = "right_align___right_align_0.1.3.tgz"; | ||
7396 | path = fetchurl { | ||
7397 | name = "right_align___right_align_0.1.3.tgz"; | ||
7398 | url = "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz"; | ||
7399 | sha1 = "61339b722fe6a3515689210d24e14c96148613ef"; | ||
7400 | }; | ||
7401 | } | ||
7402 | |||
7403 | { | ||
7404 | name = "rimraf___rimraf_2.7.1.tgz"; | ||
7405 | path = fetchurl { | ||
7406 | name = "rimraf___rimraf_2.7.1.tgz"; | ||
7407 | url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz"; | ||
7408 | sha1 = "35797f13a7fdadc566142c29d4f07ccad483e3ec"; | ||
7409 | }; | ||
7410 | } | ||
7411 | |||
7412 | { | ||
7413 | name = "rimraf___rimraf_2.2.8.tgz"; | ||
7414 | path = fetchurl { | ||
7415 | name = "rimraf___rimraf_2.2.8.tgz"; | ||
7416 | url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz"; | ||
7417 | sha1 = "e439be2aaee327321952730f99a8929e4fc50582"; | ||
7418 | }; | ||
7419 | } | ||
7420 | |||
7421 | { | ||
7422 | name = "rimraf___rimraf_2.4.5.tgz"; | ||
7423 | path = fetchurl { | ||
7424 | name = "rimraf___rimraf_2.4.5.tgz"; | ||
7425 | url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz"; | ||
7426 | sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da"; | ||
7427 | }; | ||
7428 | } | ||
7429 | |||
7430 | { | ||
7431 | name = "ruglify___ruglify_1.0.0.tgz"; | ||
7432 | path = fetchurl { | ||
7433 | name = "ruglify___ruglify_1.0.0.tgz"; | ||
7434 | url = "https://registry.yarnpkg.com/ruglify/-/ruglify-1.0.0.tgz"; | ||
7435 | sha1 = "dc8930e2a9544a274301cc9972574c0d0986b675"; | ||
7436 | }; | ||
7437 | } | ||
7438 | |||
7439 | { | ||
7440 | name = "run_sequence___run_sequence_1.1.5.tgz"; | ||
7441 | path = fetchurl { | ||
7442 | name = "run_sequence___run_sequence_1.1.5.tgz"; | ||
7443 | url = "https://registry.yarnpkg.com/run-sequence/-/run-sequence-1.1.5.tgz"; | ||
7444 | sha1 = "556bd47eb47877349e36c9c582748897db7be4f7"; | ||
7445 | }; | ||
7446 | } | ||
7447 | |||
7448 | { | ||
7449 | name = "safe_buffer___safe_buffer_5.2.0.tgz"; | ||
7450 | path = fetchurl { | ||
7451 | name = "safe_buffer___safe_buffer_5.2.0.tgz"; | ||
7452 | url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz"; | ||
7453 | sha1 = "b74daec49b1148f88c64b68d49b1e815c1f2f519"; | ||
7454 | }; | ||
7455 | } | ||
7456 | |||
7457 | { | ||
7458 | name = "safe_buffer___safe_buffer_5.1.2.tgz"; | ||
7459 | path = fetchurl { | ||
7460 | name = "safe_buffer___safe_buffer_5.1.2.tgz"; | ||
7461 | url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz"; | ||
7462 | sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d"; | ||
7463 | }; | ||
7464 | } | ||
7465 | |||
7466 | { | ||
7467 | name = "safe_regex___safe_regex_1.1.0.tgz"; | ||
7468 | path = fetchurl { | ||
7469 | name = "safe_regex___safe_regex_1.1.0.tgz"; | ||
7470 | url = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz"; | ||
7471 | sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e"; | ||
7472 | }; | ||
7473 | } | ||
7474 | |||
7475 | { | ||
7476 | name = "safer_buffer___safer_buffer_2.1.2.tgz"; | ||
7477 | path = fetchurl { | ||
7478 | name = "safer_buffer___safer_buffer_2.1.2.tgz"; | ||
7479 | url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz"; | ||
7480 | sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a"; | ||
7481 | }; | ||
7482 | } | ||
7483 | |||
7484 | { | ||
7485 | name = "sass_graph___sass_graph_2.2.4.tgz"; | ||
7486 | path = fetchurl { | ||
7487 | name = "sass_graph___sass_graph_2.2.4.tgz"; | ||
7488 | url = "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz"; | ||
7489 | sha1 = "13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"; | ||
7490 | }; | ||
7491 | } | ||
7492 | |||
7493 | { | ||
7494 | name = "sax___sax_1.2.4.tgz"; | ||
7495 | path = fetchurl { | ||
7496 | name = "sax___sax_1.2.4.tgz"; | ||
7497 | url = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz"; | ||
7498 | sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9"; | ||
7499 | }; | ||
7500 | } | ||
7501 | |||
7502 | { | ||
7503 | name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz"; | ||
7504 | path = fetchurl { | ||
7505 | name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz"; | ||
7506 | url = "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz"; | ||
7507 | sha1 = "8eb06db9a9723333824d3f5530641149847ce5d1"; | ||
7508 | }; | ||
7509 | } | ||
7510 | |||
7511 | { | ||
7512 | name = "semver_diff___semver_diff_2.1.0.tgz"; | ||
7513 | path = fetchurl { | ||
7514 | name = "semver_diff___semver_diff_2.1.0.tgz"; | ||
7515 | url = "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz"; | ||
7516 | sha1 = "4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"; | ||
7517 | }; | ||
7518 | } | ||
7519 | |||
7520 | { | ||
7521 | name = "semver___semver_5.7.1.tgz"; | ||
7522 | path = fetchurl { | ||
7523 | name = "semver___semver_5.7.1.tgz"; | ||
7524 | url = "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz"; | ||
7525 | sha1 = "a954f931aeba508d307bbf069eff0c01c96116f7"; | ||
7526 | }; | ||
7527 | } | ||
7528 | |||
7529 | { | ||
7530 | name = "semver___semver_4.3.6.tgz"; | ||
7531 | path = fetchurl { | ||
7532 | name = "semver___semver_4.3.6.tgz"; | ||
7533 | url = "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz"; | ||
7534 | sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da"; | ||
7535 | }; | ||
7536 | } | ||
7537 | |||
7538 | { | ||
7539 | name = "semver___semver_2.3.2.tgz"; | ||
7540 | path = fetchurl { | ||
7541 | name = "semver___semver_2.3.2.tgz"; | ||
7542 | url = "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz"; | ||
7543 | sha1 = "b9848f25d6cf36333073ec9ef8856d42f1233e52"; | ||
7544 | }; | ||
7545 | } | ||
7546 | |||
7547 | { | ||
7548 | name = "semver___semver_5.3.0.tgz"; | ||
7549 | path = fetchurl { | ||
7550 | name = "semver___semver_5.3.0.tgz"; | ||
7551 | url = "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz"; | ||
7552 | sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"; | ||
7553 | }; | ||
7554 | } | ||
7555 | |||
7556 | { | ||
7557 | name = "send___send_0.13.2.tgz"; | ||
7558 | path = fetchurl { | ||
7559 | name = "send___send_0.13.2.tgz"; | ||
7560 | url = "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz"; | ||
7561 | sha1 = "765e7607c8055452bba6f0b052595350986036de"; | ||
7562 | }; | ||
7563 | } | ||
7564 | |||
7565 | { | ||
7566 | name = "sequencify___sequencify_0.0.7.tgz"; | ||
7567 | path = fetchurl { | ||
7568 | name = "sequencify___sequencify_0.0.7.tgz"; | ||
7569 | url = "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz"; | ||
7570 | sha1 = "90cff19d02e07027fd767f5ead3e7b95d1e7380c"; | ||
7571 | }; | ||
7572 | } | ||
7573 | |||
7574 | { | ||
7575 | name = "serve_static___serve_static_1.10.3.tgz"; | ||
7576 | path = fetchurl { | ||
7577 | name = "serve_static___serve_static_1.10.3.tgz"; | ||
7578 | url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.10.3.tgz"; | ||
7579 | sha1 = "ce5a6ecd3101fed5ec09827dac22a9c29bfb0535"; | ||
7580 | }; | ||
7581 | } | ||
7582 | |||
7583 | { | ||
7584 | name = "set_blocking___set_blocking_2.0.0.tgz"; | ||
7585 | path = fetchurl { | ||
7586 | name = "set_blocking___set_blocking_2.0.0.tgz"; | ||
7587 | url = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz"; | ||
7588 | sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7"; | ||
7589 | }; | ||
7590 | } | ||
7591 | |||
7592 | { | ||
7593 | name = "set_value___set_value_2.0.1.tgz"; | ||
7594 | path = fetchurl { | ||
7595 | name = "set_value___set_value_2.0.1.tgz"; | ||
7596 | url = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz"; | ||
7597 | sha1 = "a18d40530e6f07de4228c7defe4227af8cad005b"; | ||
7598 | }; | ||
7599 | } | ||
7600 | |||
7601 | { | ||
7602 | name = "setprototypeof___setprototypeof_1.1.1.tgz"; | ||
7603 | path = fetchurl { | ||
7604 | name = "setprototypeof___setprototypeof_1.1.1.tgz"; | ||
7605 | url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz"; | ||
7606 | sha1 = "7e95acb24aa92f5885e0abef5ba131330d4ae683"; | ||
7607 | }; | ||
7608 | } | ||
7609 | |||
7610 | { | ||
7611 | name = "shallow_copy___shallow_copy_0.0.1.tgz"; | ||
7612 | path = fetchurl { | ||
7613 | name = "shallow_copy___shallow_copy_0.0.1.tgz"; | ||
7614 | url = "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz"; | ||
7615 | sha1 = "415f42702d73d810330292cc5ee86eae1a11a170"; | ||
7616 | }; | ||
7617 | } | ||
7618 | |||
7619 | { | ||
7620 | name = "shell_quote___shell_quote_0.0.1.tgz"; | ||
7621 | path = fetchurl { | ||
7622 | name = "shell_quote___shell_quote_0.0.1.tgz"; | ||
7623 | url = "https://registry.yarnpkg.com/shell-quote/-/shell-quote-0.0.1.tgz"; | ||
7624 | sha1 = "1a41196f3c0333c482323593d6886ecf153dd986"; | ||
7625 | }; | ||
7626 | } | ||
7627 | |||
7628 | { | ||
7629 | name = "shell_quote___shell_quote_1.4.3.tgz"; | ||
7630 | path = fetchurl { | ||
7631 | name = "shell_quote___shell_quote_1.4.3.tgz"; | ||
7632 | url = "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.4.3.tgz"; | ||
7633 | sha1 = "952c44e0b1ed9013ef53958179cc643e8777466b"; | ||
7634 | }; | ||
7635 | } | ||
7636 | |||
7637 | { | ||
7638 | name = "sigmund___sigmund_1.0.1.tgz"; | ||
7639 | path = fetchurl { | ||
7640 | name = "sigmund___sigmund_1.0.1.tgz"; | ||
7641 | url = "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz"; | ||
7642 | sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590"; | ||
7643 | }; | ||
7644 | } | ||
7645 | |||
7646 | { | ||
7647 | name = "signal_exit___signal_exit_3.0.3.tgz"; | ||
7648 | path = fetchurl { | ||
7649 | name = "signal_exit___signal_exit_3.0.3.tgz"; | ||
7650 | url = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz"; | ||
7651 | sha1 = "a1410c2edd8f077b08b4e253c8eacfcaf057461c"; | ||
7652 | }; | ||
7653 | } | ||
7654 | |||
7655 | { | ||
7656 | name = "simple_fmt___simple_fmt_0.1.0.tgz"; | ||
7657 | path = fetchurl { | ||
7658 | name = "simple_fmt___simple_fmt_0.1.0.tgz"; | ||
7659 | url = "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz"; | ||
7660 | sha1 = "191bf566a59e6530482cb25ab53b4a8dc85c3a6b"; | ||
7661 | }; | ||
7662 | } | ||
7663 | |||
7664 | { | ||
7665 | name = "simple_is___simple_is_0.2.0.tgz"; | ||
7666 | path = fetchurl { | ||
7667 | name = "simple_is___simple_is_0.2.0.tgz"; | ||
7668 | url = "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz"; | ||
7669 | sha1 = "2abb75aade39deb5cc815ce10e6191164850baf0"; | ||
7670 | }; | ||
7671 | } | ||
7672 | |||
7673 | { | ||
7674 | name = "snapdragon_node___snapdragon_node_2.1.1.tgz"; | ||
7675 | path = fetchurl { | ||
7676 | name = "snapdragon_node___snapdragon_node_2.1.1.tgz"; | ||
7677 | url = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz"; | ||
7678 | sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b"; | ||
7679 | }; | ||
7680 | } | ||
7681 | |||
7682 | { | ||
7683 | name = "snapdragon_util___snapdragon_util_3.0.1.tgz"; | ||
7684 | path = fetchurl { | ||
7685 | name = "snapdragon_util___snapdragon_util_3.0.1.tgz"; | ||
7686 | url = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz"; | ||
7687 | sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2"; | ||
7688 | }; | ||
7689 | } | ||
7690 | |||
7691 | { | ||
7692 | name = "snapdragon___snapdragon_0.8.2.tgz"; | ||
7693 | path = fetchurl { | ||
7694 | name = "snapdragon___snapdragon_0.8.2.tgz"; | ||
7695 | url = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz"; | ||
7696 | sha1 = "64922e7c565b0e14204ba1aa7d6964278d25182d"; | ||
7697 | }; | ||
7698 | } | ||
7699 | |||
7700 | { | ||
7701 | name = "sntp___sntp_0.2.4.tgz"; | ||
7702 | path = fetchurl { | ||
7703 | name = "sntp___sntp_0.2.4.tgz"; | ||
7704 | url = "https://registry.yarnpkg.com/sntp/-/sntp-0.2.4.tgz"; | ||
7705 | sha1 = "fb885f18b0f3aad189f824862536bceeec750900"; | ||
7706 | }; | ||
7707 | } | ||
7708 | |||
7709 | { | ||
7710 | name = "socket.io_adapter___socket.io_adapter_0.5.0.tgz"; | ||
7711 | path = fetchurl { | ||
7712 | name = "socket.io_adapter___socket.io_adapter_0.5.0.tgz"; | ||
7713 | url = "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz"; | ||
7714 | sha1 = "cb6d4bb8bec81e1078b99677f9ced0046066bb8b"; | ||
7715 | }; | ||
7716 | } | ||
7717 | |||
7718 | { | ||
7719 | name = "socket.io_client___socket.io_client_1.7.4.tgz"; | ||
7720 | path = fetchurl { | ||
7721 | name = "socket.io_client___socket.io_client_1.7.4.tgz"; | ||
7722 | url = "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.4.tgz"; | ||
7723 | sha1 = "ec9f820356ed99ef6d357f0756d648717bdd4281"; | ||
7724 | }; | ||
7725 | } | ||
7726 | |||
7727 | { | ||
7728 | name = "socket.io_parser___socket.io_parser_2.3.1.tgz"; | ||
7729 | path = fetchurl { | ||
7730 | name = "socket.io_parser___socket.io_parser_2.3.1.tgz"; | ||
7731 | url = "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz"; | ||
7732 | sha1 = "dd532025103ce429697326befd64005fcfe5b4a0"; | ||
7733 | }; | ||
7734 | } | ||
7735 | |||
7736 | { | ||
7737 | name = "socket.io___socket.io_1.7.4.tgz"; | ||
7738 | path = fetchurl { | ||
7739 | name = "socket.io___socket.io_1.7.4.tgz"; | ||
7740 | url = "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.4.tgz"; | ||
7741 | sha1 = "2f7ecedc3391bf2d5c73e291fe233e6e34d4dd00"; | ||
7742 | }; | ||
7743 | } | ||
7744 | |||
7745 | { | ||
7746 | name = "source_map_resolve___source_map_resolve_0.5.3.tgz"; | ||
7747 | path = fetchurl { | ||
7748 | name = "source_map_resolve___source_map_resolve_0.5.3.tgz"; | ||
7749 | url = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz"; | ||
7750 | sha1 = "190866bece7553e1f8f267a2ee82c606b5509a1a"; | ||
7751 | }; | ||
7752 | } | ||
7753 | |||
7754 | { | ||
7755 | name = "source_map_url___source_map_url_0.4.0.tgz"; | ||
7756 | path = fetchurl { | ||
7757 | name = "source_map_url___source_map_url_0.4.0.tgz"; | ||
7758 | url = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz"; | ||
7759 | sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3"; | ||
7760 | }; | ||
7761 | } | ||
7762 | |||
7763 | { | ||
7764 | name = "source_map___source_map_0.1.34.tgz"; | ||
7765 | path = fetchurl { | ||
7766 | name = "source_map___source_map_0.1.34.tgz"; | ||
7767 | url = "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz"; | ||
7768 | sha1 = "a7cfe89aec7b1682c3b198d0acfb47d7d090566b"; | ||
7769 | }; | ||
7770 | } | ||
7771 | |||
7772 | { | ||
7773 | name = "source_map___source_map_0.1.43.tgz"; | ||
7774 | path = fetchurl { | ||
7775 | name = "source_map___source_map_0.1.43.tgz"; | ||
7776 | url = "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz"; | ||
7777 | sha1 = "c24bc146ca517c1471f5dacbe2571b2b7f9e3346"; | ||
7778 | }; | ||
7779 | } | ||
7780 | |||
7781 | { | ||
7782 | name = "source_map___source_map_0.4.4.tgz"; | ||
7783 | path = fetchurl { | ||
7784 | name = "source_map___source_map_0.4.4.tgz"; | ||
7785 | url = "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz"; | ||
7786 | sha1 = "eba4f5da9c0dc999de68032d8b4f76173652036b"; | ||
7787 | }; | ||
7788 | } | ||
7789 | |||
7790 | { | ||
7791 | name = "source_map___source_map_0.5.7.tgz"; | ||
7792 | path = fetchurl { | ||
7793 | name = "source_map___source_map_0.5.7.tgz"; | ||
7794 | url = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz"; | ||
7795 | sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"; | ||
7796 | }; | ||
7797 | } | ||
7798 | |||
7799 | { | ||
7800 | name = "source_map___source_map_0.6.1.tgz"; | ||
7801 | path = fetchurl { | ||
7802 | name = "source_map___source_map_0.6.1.tgz"; | ||
7803 | url = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz"; | ||
7804 | sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263"; | ||
7805 | }; | ||
7806 | } | ||
7807 | |||
7808 | { | ||
7809 | name = "source_map___source_map_0.2.0.tgz"; | ||
7810 | path = fetchurl { | ||
7811 | name = "source_map___source_map_0.2.0.tgz"; | ||
7812 | url = "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz"; | ||
7813 | sha1 = "dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"; | ||
7814 | }; | ||
7815 | } | ||
7816 | |||
7817 | { | ||
7818 | name = "source_map___source_map_0.3.0.tgz"; | ||
7819 | path = fetchurl { | ||
7820 | name = "source_map___source_map_0.3.0.tgz"; | ||
7821 | url = "https://registry.yarnpkg.com/source-map/-/source-map-0.3.0.tgz"; | ||
7822 | sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9"; | ||
7823 | }; | ||
7824 | } | ||
7825 | |||
7826 | { | ||
7827 | name = "sparkles___sparkles_1.0.1.tgz"; | ||
7828 | path = fetchurl { | ||
7829 | name = "sparkles___sparkles_1.0.1.tgz"; | ||
7830 | url = "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz"; | ||
7831 | sha1 = "008db65edce6c50eec0c5e228e1945061dd0437c"; | ||
7832 | }; | ||
7833 | } | ||
7834 | |||
7835 | { | ||
7836 | name = "spdx_correct___spdx_correct_3.1.0.tgz"; | ||
7837 | path = fetchurl { | ||
7838 | name = "spdx_correct___spdx_correct_3.1.0.tgz"; | ||
7839 | url = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz"; | ||
7840 | sha1 = "fb83e504445268f154b074e218c87c003cd31df4"; | ||
7841 | }; | ||
7842 | } | ||
7843 | |||
7844 | { | ||
7845 | name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz"; | ||
7846 | path = fetchurl { | ||
7847 | name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz"; | ||
7848 | url = "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz"; | ||
7849 | sha1 = "2ea450aee74f2a89bfb94519c07fcd6f41322977"; | ||
7850 | }; | ||
7851 | } | ||
7852 | |||
7853 | { | ||
7854 | name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz"; | ||
7855 | path = fetchurl { | ||
7856 | name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz"; | ||
7857 | url = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz"; | ||
7858 | sha1 = "99e119b7a5da00e05491c9fa338b7904823b41d0"; | ||
7859 | }; | ||
7860 | } | ||
7861 | |||
7862 | { | ||
7863 | name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz"; | ||
7864 | path = fetchurl { | ||
7865 | name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz"; | ||
7866 | url = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz"; | ||
7867 | sha1 = "3694b5804567a458d3c8045842a6358632f62654"; | ||
7868 | }; | ||
7869 | } | ||
7870 | |||
7871 | { | ||
7872 | name = "split_string___split_string_3.1.0.tgz"; | ||
7873 | path = fetchurl { | ||
7874 | name = "split_string___split_string_3.1.0.tgz"; | ||
7875 | url = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz"; | ||
7876 | sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2"; | ||
7877 | }; | ||
7878 | } | ||
7879 | |||
7880 | { | ||
7881 | name = "split___split_0.3.3.tgz"; | ||
7882 | path = fetchurl { | ||
7883 | name = "split___split_0.3.3.tgz"; | ||
7884 | url = "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz"; | ||
7885 | sha1 = "cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"; | ||
7886 | }; | ||
7887 | } | ||
7888 | |||
7889 | { | ||
7890 | name = "split___split_1.0.1.tgz"; | ||
7891 | path = fetchurl { | ||
7892 | name = "split___split_1.0.1.tgz"; | ||
7893 | url = "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz"; | ||
7894 | sha1 = "605bd9be303aa59fb35f9229fbea0ddec9ea07d9"; | ||
7895 | }; | ||
7896 | } | ||
7897 | |||
7898 | { | ||
7899 | name = "sprintf_js___sprintf_js_1.0.3.tgz"; | ||
7900 | path = fetchurl { | ||
7901 | name = "sprintf_js___sprintf_js_1.0.3.tgz"; | ||
7902 | url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz"; | ||
7903 | sha1 = "04e6926f662895354f3dd015203633b857297e2c"; | ||
7904 | }; | ||
7905 | } | ||
7906 | |||
7907 | { | ||
7908 | name = "sshpk___sshpk_1.16.1.tgz"; | ||
7909 | path = fetchurl { | ||
7910 | name = "sshpk___sshpk_1.16.1.tgz"; | ||
7911 | url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz"; | ||
7912 | sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877"; | ||
7913 | }; | ||
7914 | } | ||
7915 | |||
7916 | { | ||
7917 | name = "stable___stable_0.1.8.tgz"; | ||
7918 | path = fetchurl { | ||
7919 | name = "stable___stable_0.1.8.tgz"; | ||
7920 | url = "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz"; | ||
7921 | sha1 = "836eb3c8382fe2936feaf544631017ce7d47a3cf"; | ||
7922 | }; | ||
7923 | } | ||
7924 | |||
7925 | { | ||
7926 | name = "static_extend___static_extend_0.1.2.tgz"; | ||
7927 | path = fetchurl { | ||
7928 | name = "static_extend___static_extend_0.1.2.tgz"; | ||
7929 | url = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz"; | ||
7930 | sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6"; | ||
7931 | }; | ||
7932 | } | ||
7933 | |||
7934 | { | ||
7935 | name = "statuses___statuses_1.5.0.tgz"; | ||
7936 | path = fetchurl { | ||
7937 | name = "statuses___statuses_1.5.0.tgz"; | ||
7938 | url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz"; | ||
7939 | sha1 = "161c7dac177659fd9811f43771fa99381478628c"; | ||
7940 | }; | ||
7941 | } | ||
7942 | |||
7943 | { | ||
7944 | name = "statuses___statuses_1.2.1.tgz"; | ||
7945 | path = fetchurl { | ||
7946 | name = "statuses___statuses_1.2.1.tgz"; | ||
7947 | url = "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz"; | ||
7948 | sha1 = "dded45cc18256d51ed40aec142489d5c61026d28"; | ||
7949 | }; | ||
7950 | } | ||
7951 | |||
7952 | { | ||
7953 | name = "stdout_stream___stdout_stream_1.4.1.tgz"; | ||
7954 | path = fetchurl { | ||
7955 | name = "stdout_stream___stdout_stream_1.4.1.tgz"; | ||
7956 | url = "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz"; | ||
7957 | sha1 = "5ac174cdd5cd726104aa0c0b2bd83815d8d535de"; | ||
7958 | }; | ||
7959 | } | ||
7960 | |||
7961 | { | ||
7962 | name = "stream_browserify___stream_browserify_0.1.3.tgz"; | ||
7963 | path = fetchurl { | ||
7964 | name = "stream_browserify___stream_browserify_0.1.3.tgz"; | ||
7965 | url = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-0.1.3.tgz"; | ||
7966 | sha1 = "95cf1b369772e27adaf46352265152689c6c4be9"; | ||
7967 | }; | ||
7968 | } | ||
7969 | |||
7970 | { | ||
7971 | name = "stream_combiner___stream_combiner_0.2.2.tgz"; | ||
7972 | path = fetchurl { | ||
7973 | name = "stream_combiner___stream_combiner_0.2.2.tgz"; | ||
7974 | url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz"; | ||
7975 | sha1 = "aec8cbac177b56b6f4fa479ced8c1912cee52858"; | ||
7976 | }; | ||
7977 | } | ||
7978 | |||
7979 | { | ||
7980 | name = "stream_combiner___stream_combiner_0.0.4.tgz"; | ||
7981 | path = fetchurl { | ||
7982 | name = "stream_combiner___stream_combiner_0.0.4.tgz"; | ||
7983 | url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz"; | ||
7984 | sha1 = "4d5e433c185261dde623ca3f44c586bcf5c4ad14"; | ||
7985 | }; | ||
7986 | } | ||
7987 | |||
7988 | { | ||
7989 | name = "stream_combiner___stream_combiner_0.1.0.tgz"; | ||
7990 | path = fetchurl { | ||
7991 | name = "stream_combiner___stream_combiner_0.1.0.tgz"; | ||
7992 | url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.1.0.tgz"; | ||
7993 | sha1 = "0dc389a3c203f8f4d56368f95dde52eb9269b5be"; | ||
7994 | }; | ||
7995 | } | ||
7996 | |||
7997 | { | ||
7998 | name = "stream_consume___stream_consume_0.1.1.tgz"; | ||
7999 | path = fetchurl { | ||
8000 | name = "stream_consume___stream_consume_0.1.1.tgz"; | ||
8001 | url = "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.1.tgz"; | ||
8002 | sha1 = "d3bdb598c2bd0ae82b8cac7ac50b1107a7996c48"; | ||
8003 | }; | ||
8004 | } | ||
8005 | |||
8006 | { | ||
8007 | name = "stream_shift___stream_shift_1.0.1.tgz"; | ||
8008 | path = fetchurl { | ||
8009 | name = "stream_shift___stream_shift_1.0.1.tgz"; | ||
8010 | url = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz"; | ||
8011 | sha1 = "d7088281559ab2778424279b0877da3c392d5a3d"; | ||
8012 | }; | ||
8013 | } | ||
8014 | |||
8015 | { | ||
8016 | name = "string_length___string_length_1.0.1.tgz"; | ||
8017 | path = fetchurl { | ||
8018 | name = "string_length___string_length_1.0.1.tgz"; | ||
8019 | url = "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz"; | ||
8020 | sha1 = "56970fb1c38558e9e70b728bf3de269ac45adfac"; | ||
8021 | }; | ||
8022 | } | ||
8023 | |||
8024 | { | ||
8025 | name = "string_width___string_width_1.0.2.tgz"; | ||
8026 | path = fetchurl { | ||
8027 | name = "string_width___string_width_1.0.2.tgz"; | ||
8028 | url = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz"; | ||
8029 | sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"; | ||
8030 | }; | ||
8031 | } | ||
8032 | |||
8033 | { | ||
8034 | name = "string_width___string_width_2.1.1.tgz"; | ||
8035 | path = fetchurl { | ||
8036 | name = "string_width___string_width_2.1.1.tgz"; | ||
8037 | url = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz"; | ||
8038 | sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e"; | ||
8039 | }; | ||
8040 | } | ||
8041 | |||
8042 | { | ||
8043 | name = "string_decoder___string_decoder_0.0.1.tgz"; | ||
8044 | path = fetchurl { | ||
8045 | name = "string_decoder___string_decoder_0.0.1.tgz"; | ||
8046 | url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.0.1.tgz"; | ||
8047 | sha1 = "f5472d0a8d1650ec823752d24e6fd627b39bf141"; | ||
8048 | }; | ||
8049 | } | ||
8050 | |||
8051 | { | ||
8052 | name = "string_decoder___string_decoder_0.10.31.tgz"; | ||
8053 | path = fetchurl { | ||
8054 | name = "string_decoder___string_decoder_0.10.31.tgz"; | ||
8055 | url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz"; | ||
8056 | sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94"; | ||
8057 | }; | ||
8058 | } | ||
8059 | |||
8060 | { | ||
8061 | name = "string_decoder___string_decoder_1.1.1.tgz"; | ||
8062 | path = fetchurl { | ||
8063 | name = "string_decoder___string_decoder_1.1.1.tgz"; | ||
8064 | url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz"; | ||
8065 | sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8"; | ||
8066 | }; | ||
8067 | } | ||
8068 | |||
8069 | { | ||
8070 | name = "stringify_object___stringify_object_0.2.1.tgz"; | ||
8071 | path = fetchurl { | ||
8072 | name = "stringify_object___stringify_object_0.2.1.tgz"; | ||
8073 | url = "https://registry.yarnpkg.com/stringify-object/-/stringify-object-0.2.1.tgz"; | ||
8074 | sha1 = "b58be50b3ff5f371038c545d4332656bfded5620"; | ||
8075 | }; | ||
8076 | } | ||
8077 | |||
8078 | { | ||
8079 | name = "stringmap___stringmap_0.2.2.tgz"; | ||
8080 | path = fetchurl { | ||
8081 | name = "stringmap___stringmap_0.2.2.tgz"; | ||
8082 | url = "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz"; | ||
8083 | sha1 = "556c137b258f942b8776f5b2ef582aa069d7d1b1"; | ||
8084 | }; | ||
8085 | } | ||
8086 | |||
8087 | { | ||
8088 | name = "stringset___stringset_0.2.1.tgz"; | ||
8089 | path = fetchurl { | ||
8090 | name = "stringset___stringset_0.2.1.tgz"; | ||
8091 | url = "https://registry.yarnpkg.com/stringset/-/stringset-0.2.1.tgz"; | ||
8092 | sha1 = "ef259c4e349344377fcd1c913dd2e848c9c042b5"; | ||
8093 | }; | ||
8094 | } | ||
8095 | |||
8096 | { | ||
8097 | name = "stringstream___stringstream_0.0.6.tgz"; | ||
8098 | path = fetchurl { | ||
8099 | name = "stringstream___stringstream_0.0.6.tgz"; | ||
8100 | url = "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz"; | ||
8101 | sha1 = "7880225b0d4ad10e30927d167a1d6f2fd3b33a72"; | ||
8102 | }; | ||
8103 | } | ||
8104 | |||
8105 | { | ||
8106 | name = "strip_ansi___strip_ansi_0.3.0.tgz"; | ||
8107 | path = fetchurl { | ||
8108 | name = "strip_ansi___strip_ansi_0.3.0.tgz"; | ||
8109 | url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz"; | ||
8110 | sha1 = "25f48ea22ca79187f3174a4db8759347bb126220"; | ||
8111 | }; | ||
8112 | } | ||
8113 | |||
8114 | { | ||
8115 | name = "strip_ansi___strip_ansi_2.0.1.tgz"; | ||
8116 | path = fetchurl { | ||
8117 | name = "strip_ansi___strip_ansi_2.0.1.tgz"; | ||
8118 | url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-2.0.1.tgz"; | ||
8119 | sha1 = "df62c1aa94ed2f114e1d0f21fd1d50482b79a60e"; | ||
8120 | }; | ||
8121 | } | ||
8122 | |||
8123 | { | ||
8124 | name = "strip_ansi___strip_ansi_3.0.1.tgz"; | ||
8125 | path = fetchurl { | ||
8126 | name = "strip_ansi___strip_ansi_3.0.1.tgz"; | ||
8127 | url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz"; | ||
8128 | sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"; | ||
8129 | }; | ||
8130 | } | ||
8131 | |||
8132 | { | ||
8133 | name = "strip_ansi___strip_ansi_4.0.0.tgz"; | ||
8134 | path = fetchurl { | ||
8135 | name = "strip_ansi___strip_ansi_4.0.0.tgz"; | ||
8136 | url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz"; | ||
8137 | sha1 = "a8479022eb1ac368a871389b635262c505ee368f"; | ||
8138 | }; | ||
8139 | } | ||
8140 | |||
8141 | { | ||
8142 | name = "strip_ansi___strip_ansi_0.1.1.tgz"; | ||
8143 | path = fetchurl { | ||
8144 | name = "strip_ansi___strip_ansi_0.1.1.tgz"; | ||
8145 | url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz"; | ||
8146 | sha1 = "39e8a98d044d150660abe4a6808acf70bb7bc991"; | ||
8147 | }; | ||
8148 | } | ||
8149 | |||
8150 | { | ||
8151 | name = "strip_bom___strip_bom_1.0.0.tgz"; | ||
8152 | path = fetchurl { | ||
8153 | name = "strip_bom___strip_bom_1.0.0.tgz"; | ||
8154 | url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz"; | ||
8155 | sha1 = "85b8862f3844b5a6d5ec8467a93598173a36f794"; | ||
8156 | }; | ||
8157 | } | ||
8158 | |||
8159 | { | ||
8160 | name = "strip_bom___strip_bom_2.0.0.tgz"; | ||
8161 | path = fetchurl { | ||
8162 | name = "strip_bom___strip_bom_2.0.0.tgz"; | ||
8163 | url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz"; | ||
8164 | sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e"; | ||
8165 | }; | ||
8166 | } | ||
8167 | |||
8168 | { | ||
8169 | name = "strip_indent___strip_indent_1.0.1.tgz"; | ||
8170 | path = fetchurl { | ||
8171 | name = "strip_indent___strip_indent_1.0.1.tgz"; | ||
8172 | url = "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz"; | ||
8173 | sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2"; | ||
8174 | }; | ||
8175 | } | ||
8176 | |||
8177 | { | ||
8178 | name = "strip_json_comments___strip_json_comments_2.0.1.tgz"; | ||
8179 | path = fetchurl { | ||
8180 | name = "strip_json_comments___strip_json_comments_2.0.1.tgz"; | ||
8181 | url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz"; | ||
8182 | sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a"; | ||
8183 | }; | ||
8184 | } | ||
8185 | |||
8186 | { | ||
8187 | name = "subarg___subarg_0.0.1.tgz"; | ||
8188 | path = fetchurl { | ||
8189 | name = "subarg___subarg_0.0.1.tgz"; | ||
8190 | url = "https://registry.yarnpkg.com/subarg/-/subarg-0.0.1.tgz"; | ||
8191 | sha1 = "3d56b07dacfbc45bbb63f7672b43b63e46368e3a"; | ||
8192 | }; | ||
8193 | } | ||
8194 | |||
8195 | { | ||
8196 | name = "supports_color___supports_color_0.2.0.tgz"; | ||
8197 | path = fetchurl { | ||
8198 | name = "supports_color___supports_color_0.2.0.tgz"; | ||
8199 | url = "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz"; | ||
8200 | sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a"; | ||
8201 | }; | ||
8202 | } | ||
8203 | |||
8204 | { | ||
8205 | name = "supports_color___supports_color_2.0.0.tgz"; | ||
8206 | path = fetchurl { | ||
8207 | name = "supports_color___supports_color_2.0.0.tgz"; | ||
8208 | url = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz"; | ||
8209 | sha1 = "535d045ce6b6363fa40117084629995e9df324c7"; | ||
8210 | }; | ||
8211 | } | ||
8212 | |||
8213 | { | ||
8214 | name = "supports_color___supports_color_3.2.3.tgz"; | ||
8215 | path = fetchurl { | ||
8216 | name = "supports_color___supports_color_3.2.3.tgz"; | ||
8217 | url = "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz"; | ||
8218 | sha1 = "65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"; | ||
8219 | }; | ||
8220 | } | ||
8221 | |||
8222 | { | ||
8223 | name = "supports_color___supports_color_7.1.0.tgz"; | ||
8224 | path = fetchurl { | ||
8225 | name = "supports_color___supports_color_7.1.0.tgz"; | ||
8226 | url = "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz"; | ||
8227 | sha1 = "68e32591df73e25ad1c4b49108a2ec507962bfd1"; | ||
8228 | }; | ||
8229 | } | ||
8230 | |||
8231 | { | ||
8232 | name = "syntax_error___syntax_error_1.1.6.tgz"; | ||
8233 | path = fetchurl { | ||
8234 | name = "syntax_error___syntax_error_1.1.6.tgz"; | ||
8235 | url = "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.1.6.tgz"; | ||
8236 | sha1 = "b4549706d386cc1c1dc7c2423f18579b6cade710"; | ||
8237 | }; | ||
8238 | } | ||
8239 | |||
8240 | { | ||
8241 | name = "tar___tar_2.2.2.tgz"; | ||
8242 | path = fetchurl { | ||
8243 | name = "tar___tar_2.2.2.tgz"; | ||
8244 | url = "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz"; | ||
8245 | sha1 = "0ca8848562c7299b8b446ff6a4d60cdbb23edc40"; | ||
8246 | }; | ||
8247 | } | ||
8248 | |||
8249 | { | ||
8250 | name = "tar___tar_4.4.13.tgz"; | ||
8251 | path = fetchurl { | ||
8252 | name = "tar___tar_4.4.13.tgz"; | ||
8253 | url = "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz"; | ||
8254 | sha1 = "43b364bc52888d555298637b10d60790254ab525"; | ||
8255 | }; | ||
8256 | } | ||
8257 | |||
8258 | { | ||
8259 | name = "tar___tar_0.1.20.tgz"; | ||
8260 | path = fetchurl { | ||
8261 | name = "tar___tar_0.1.20.tgz"; | ||
8262 | url = "https://registry.yarnpkg.com/tar/-/tar-0.1.20.tgz"; | ||
8263 | sha1 = "42940bae5b5f22c74483699126f9f3f27449cb13"; | ||
8264 | }; | ||
8265 | } | ||
8266 | |||
8267 | { | ||
8268 | name = "ternary_stream___ternary_stream_2.1.1.tgz"; | ||
8269 | path = fetchurl { | ||
8270 | name = "ternary_stream___ternary_stream_2.1.1.tgz"; | ||
8271 | url = "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-2.1.1.tgz"; | ||
8272 | sha1 = "4ad64b98668d796a085af2c493885a435a8a8bfc"; | ||
8273 | }; | ||
8274 | } | ||
8275 | |||
8276 | { | ||
8277 | name = "textextensions___textextensions_1.0.2.tgz"; | ||
8278 | path = fetchurl { | ||
8279 | name = "textextensions___textextensions_1.0.2.tgz"; | ||
8280 | url = "https://registry.yarnpkg.com/textextensions/-/textextensions-1.0.2.tgz"; | ||
8281 | sha1 = "65486393ee1f2bb039a60cbba05b0b68bd9501d2"; | ||
8282 | }; | ||
8283 | } | ||
8284 | |||
8285 | { | ||
8286 | name = "throttleit___throttleit_0.0.2.tgz"; | ||
8287 | path = fetchurl { | ||
8288 | name = "throttleit___throttleit_0.0.2.tgz"; | ||
8289 | url = "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz"; | ||
8290 | sha1 = "cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"; | ||
8291 | }; | ||
8292 | } | ||
8293 | |||
8294 | { | ||
8295 | name = "through2___through2_0.4.2.tgz"; | ||
8296 | path = fetchurl { | ||
8297 | name = "through2___through2_0.4.2.tgz"; | ||
8298 | url = "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz"; | ||
8299 | sha1 = "dbf5866031151ec8352bb6c4db64a2292a840b9b"; | ||
8300 | }; | ||
8301 | } | ||
8302 | |||
8303 | { | ||
8304 | name = "through2___through2_0.5.1.tgz"; | ||
8305 | path = fetchurl { | ||
8306 | name = "through2___through2_0.5.1.tgz"; | ||
8307 | url = "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz"; | ||
8308 | sha1 = "dfdd012eb9c700e2323fd334f38ac622ab372da7"; | ||
8309 | }; | ||
8310 | } | ||
8311 | |||
8312 | { | ||
8313 | name = "through2___through2_0.6.5.tgz"; | ||
8314 | path = fetchurl { | ||
8315 | name = "through2___through2_0.6.5.tgz"; | ||
8316 | url = "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz"; | ||
8317 | sha1 = "41ab9c67b29d57209071410e1d7a7a968cd3ad48"; | ||
8318 | }; | ||
8319 | } | ||
8320 | |||
8321 | { | ||
8322 | name = "through2___through2_2.0.5.tgz"; | ||
8323 | path = fetchurl { | ||
8324 | name = "through2___through2_2.0.5.tgz"; | ||
8325 | url = "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz"; | ||
8326 | sha1 = "01c1e39eb31d07cb7d03a96a70823260b23132cd"; | ||
8327 | }; | ||
8328 | } | ||
8329 | |||
8330 | { | ||
8331 | name = "through___through_2.3.8.tgz"; | ||
8332 | path = fetchurl { | ||
8333 | name = "through___through_2.3.8.tgz"; | ||
8334 | url = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz"; | ||
8335 | sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"; | ||
8336 | }; | ||
8337 | } | ||
8338 | |||
8339 | { | ||
8340 | name = "through___through_2.2.7.tgz"; | ||
8341 | path = fetchurl { | ||
8342 | name = "through___through_2.2.7.tgz"; | ||
8343 | url = "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz"; | ||
8344 | sha1 = "6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd"; | ||
8345 | }; | ||
8346 | } | ||
8347 | |||
8348 | { | ||
8349 | name = "tildify___tildify_1.2.0.tgz"; | ||
8350 | path = fetchurl { | ||
8351 | name = "tildify___tildify_1.2.0.tgz"; | ||
8352 | url = "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz"; | ||
8353 | sha1 = "dcec03f55dca9b7aa3e5b04f21817eb56e63588a"; | ||
8354 | }; | ||
8355 | } | ||
8356 | |||
8357 | { | ||
8358 | name = "time_stamp___time_stamp_1.1.0.tgz"; | ||
8359 | path = fetchurl { | ||
8360 | name = "time_stamp___time_stamp_1.1.0.tgz"; | ||
8361 | url = "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz"; | ||
8362 | sha1 = "764a5a11af50561921b133f3b44e618687e0f5c3"; | ||
8363 | }; | ||
8364 | } | ||
8365 | |||
8366 | { | ||
8367 | name = "timed_out___timed_out_2.0.0.tgz"; | ||
8368 | path = fetchurl { | ||
8369 | name = "timed_out___timed_out_2.0.0.tgz"; | ||
8370 | url = "https://registry.yarnpkg.com/timed-out/-/timed-out-2.0.0.tgz"; | ||
8371 | sha1 = "f38b0ae81d3747d628001f41dafc652ace671c0a"; | ||
8372 | }; | ||
8373 | } | ||
8374 | |||
8375 | { | ||
8376 | name = "timers_browserify___timers_browserify_1.0.3.tgz"; | ||
8377 | path = fetchurl { | ||
8378 | name = "timers_browserify___timers_browserify_1.0.3.tgz"; | ||
8379 | url = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.0.3.tgz"; | ||
8380 | sha1 = "ffba70c9c12eed916fd67318e629ac6f32295551"; | ||
8381 | }; | ||
8382 | } | ||
8383 | |||
8384 | { | ||
8385 | name = "timers_ext___timers_ext_0.1.7.tgz"; | ||
8386 | path = fetchurl { | ||
8387 | name = "timers_ext___timers_ext_0.1.7.tgz"; | ||
8388 | url = "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz"; | ||
8389 | sha1 = "6f57ad8578e07a3fb9f91d9387d65647555e25c6"; | ||
8390 | }; | ||
8391 | } | ||
8392 | |||
8393 | { | ||
8394 | name = "tmp___tmp_0.0.23.tgz"; | ||
8395 | path = fetchurl { | ||
8396 | name = "tmp___tmp_0.0.23.tgz"; | ||
8397 | url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.23.tgz"; | ||
8398 | sha1 = "de874aa5e974a85f0a32cdfdbd74663cb3bd9c74"; | ||
8399 | }; | ||
8400 | } | ||
8401 | |||
8402 | { | ||
8403 | name = "tmp___tmp_0.0.33.tgz"; | ||
8404 | path = fetchurl { | ||
8405 | name = "tmp___tmp_0.0.33.tgz"; | ||
8406 | url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz"; | ||
8407 | sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9"; | ||
8408 | }; | ||
8409 | } | ||
8410 | |||
8411 | { | ||
8412 | name = "to_array___to_array_0.1.4.tgz"; | ||
8413 | path = fetchurl { | ||
8414 | name = "to_array___to_array_0.1.4.tgz"; | ||
8415 | url = "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz"; | ||
8416 | sha1 = "17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"; | ||
8417 | }; | ||
8418 | } | ||
8419 | |||
8420 | { | ||
8421 | name = "to_fast_properties___to_fast_properties_1.0.3.tgz"; | ||
8422 | path = fetchurl { | ||
8423 | name = "to_fast_properties___to_fast_properties_1.0.3.tgz"; | ||
8424 | url = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz"; | ||
8425 | sha1 = "b83571fa4d8c25b82e231b06e3a3055de4ca1a47"; | ||
8426 | }; | ||
8427 | } | ||
8428 | |||
8429 | { | ||
8430 | name = "to_object_path___to_object_path_0.3.0.tgz"; | ||
8431 | path = fetchurl { | ||
8432 | name = "to_object_path___to_object_path_0.3.0.tgz"; | ||
8433 | url = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz"; | ||
8434 | sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af"; | ||
8435 | }; | ||
8436 | } | ||
8437 | |||
8438 | { | ||
8439 | name = "to_regex_range___to_regex_range_2.1.1.tgz"; | ||
8440 | path = fetchurl { | ||
8441 | name = "to_regex_range___to_regex_range_2.1.1.tgz"; | ||
8442 | url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz"; | ||
8443 | sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38"; | ||
8444 | }; | ||
8445 | } | ||
8446 | |||
8447 | { | ||
8448 | name = "to_regex___to_regex_3.0.2.tgz"; | ||
8449 | path = fetchurl { | ||
8450 | name = "to_regex___to_regex_3.0.2.tgz"; | ||
8451 | url = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz"; | ||
8452 | sha1 = "13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"; | ||
8453 | }; | ||
8454 | } | ||
8455 | |||
8456 | { | ||
8457 | name = "toidentifier___toidentifier_1.0.0.tgz"; | ||
8458 | path = fetchurl { | ||
8459 | name = "toidentifier___toidentifier_1.0.0.tgz"; | ||
8460 | url = "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz"; | ||
8461 | sha1 = "7e1be3470f1e77948bc43d94a3c8f4d7752ba553"; | ||
8462 | }; | ||
8463 | } | ||
8464 | |||
8465 | { | ||
8466 | name = "token_stream___token_stream_0.0.1.tgz"; | ||
8467 | path = fetchurl { | ||
8468 | name = "token_stream___token_stream_0.0.1.tgz"; | ||
8469 | url = "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz"; | ||
8470 | sha1 = "ceeefc717a76c4316f126d0b9dbaa55d7e7df01a"; | ||
8471 | }; | ||
8472 | } | ||
8473 | |||
8474 | { | ||
8475 | name = "touch___touch_0.0.2.tgz"; | ||
8476 | path = fetchurl { | ||
8477 | name = "touch___touch_0.0.2.tgz"; | ||
8478 | url = "https://registry.yarnpkg.com/touch/-/touch-0.0.2.tgz"; | ||
8479 | sha1 = "a65a777795e5cbbe1299499bdc42281ffb21b5f4"; | ||
8480 | }; | ||
8481 | } | ||
8482 | |||
8483 | { | ||
8484 | name = "tough_cookie___tough_cookie_4.0.0.tgz"; | ||
8485 | path = fetchurl { | ||
8486 | name = "tough_cookie___tough_cookie_4.0.0.tgz"; | ||
8487 | url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz"; | ||
8488 | sha1 = "d822234eeca882f991f0f908824ad2622ddbece4"; | ||
8489 | }; | ||
8490 | } | ||
8491 | |||
8492 | { | ||
8493 | name = "tough_cookie___tough_cookie_2.5.0.tgz"; | ||
8494 | path = fetchurl { | ||
8495 | name = "tough_cookie___tough_cookie_2.5.0.tgz"; | ||
8496 | url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz"; | ||
8497 | sha1 = "cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"; | ||
8498 | }; | ||
8499 | } | ||
8500 | |||
8501 | { | ||
8502 | name = "traverse___traverse_0.3.9.tgz"; | ||
8503 | path = fetchurl { | ||
8504 | name = "traverse___traverse_0.3.9.tgz"; | ||
8505 | url = "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz"; | ||
8506 | sha1 = "717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9"; | ||
8507 | }; | ||
8508 | } | ||
8509 | |||
8510 | { | ||
8511 | name = "trim_newlines___trim_newlines_1.0.0.tgz"; | ||
8512 | path = fetchurl { | ||
8513 | name = "trim_newlines___trim_newlines_1.0.0.tgz"; | ||
8514 | url = "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz"; | ||
8515 | sha1 = "5887966bb582a4503a41eb524f7d35011815a613"; | ||
8516 | }; | ||
8517 | } | ||
8518 | |||
8519 | { | ||
8520 | name = "true_case_path___true_case_path_1.0.3.tgz"; | ||
8521 | path = fetchurl { | ||
8522 | name = "true_case_path___true_case_path_1.0.3.tgz"; | ||
8523 | url = "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz"; | ||
8524 | sha1 = "f813b5a8c86b40da59606722b144e3225799f47d"; | ||
8525 | }; | ||
8526 | } | ||
8527 | |||
8528 | { | ||
8529 | name = "tryor___tryor_0.1.2.tgz"; | ||
8530 | path = fetchurl { | ||
8531 | name = "tryor___tryor_0.1.2.tgz"; | ||
8532 | url = "https://registry.yarnpkg.com/tryor/-/tryor-0.1.2.tgz"; | ||
8533 | sha1 = "8145e4ca7caff40acde3ccf946e8b8bb75b4172b"; | ||
8534 | }; | ||
8535 | } | ||
8536 | |||
8537 | { | ||
8538 | name = "tty_browserify___tty_browserify_0.0.1.tgz"; | ||
8539 | path = fetchurl { | ||
8540 | name = "tty_browserify___tty_browserify_0.0.1.tgz"; | ||
8541 | url = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz"; | ||
8542 | sha1 = "3f05251ee17904dfd0677546670db9651682b811"; | ||
8543 | }; | ||
8544 | } | ||
8545 | |||
8546 | { | ||
8547 | name = "tunnel_agent___tunnel_agent_0.6.0.tgz"; | ||
8548 | path = fetchurl { | ||
8549 | name = "tunnel_agent___tunnel_agent_0.6.0.tgz"; | ||
8550 | url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz"; | ||
8551 | sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd"; | ||
8552 | }; | ||
8553 | } | ||
8554 | |||
8555 | { | ||
8556 | name = "tunnel_agent___tunnel_agent_0.3.0.tgz"; | ||
8557 | path = fetchurl { | ||
8558 | name = "tunnel_agent___tunnel_agent_0.3.0.tgz"; | ||
8559 | url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.3.0.tgz"; | ||
8560 | sha1 = "ad681b68f5321ad2827c4cfb1b7d5df2cfe942ee"; | ||
8561 | }; | ||
8562 | } | ||
8563 | |||
8564 | { | ||
8565 | name = "tunnel_agent___tunnel_agent_0.4.3.tgz"; | ||
8566 | path = fetchurl { | ||
8567 | name = "tunnel_agent___tunnel_agent_0.4.3.tgz"; | ||
8568 | url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz"; | ||
8569 | sha1 = "6373db76909fe570e08d73583365ed828a74eeeb"; | ||
8570 | }; | ||
8571 | } | ||
8572 | |||
8573 | { | ||
8574 | name = "tweetnacl___tweetnacl_0.14.5.tgz"; | ||
8575 | path = fetchurl { | ||
8576 | name = "tweetnacl___tweetnacl_0.14.5.tgz"; | ||
8577 | url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz"; | ||
8578 | sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64"; | ||
8579 | }; | ||
8580 | } | ||
8581 | |||
8582 | { | ||
8583 | name = "type_check___type_check_0.3.2.tgz"; | ||
8584 | path = fetchurl { | ||
8585 | name = "type_check___type_check_0.3.2.tgz"; | ||
8586 | url = "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz"; | ||
8587 | sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72"; | ||
8588 | }; | ||
8589 | } | ||
8590 | |||
8591 | { | ||
8592 | name = "type_is___type_is_1.6.18.tgz"; | ||
8593 | path = fetchurl { | ||
8594 | name = "type_is___type_is_1.6.18.tgz"; | ||
8595 | url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz"; | ||
8596 | sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131"; | ||
8597 | }; | ||
8598 | } | ||
8599 | |||
8600 | { | ||
8601 | name = "type___type_1.2.0.tgz"; | ||
8602 | path = fetchurl { | ||
8603 | name = "type___type_1.2.0.tgz"; | ||
8604 | url = "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz"; | ||
8605 | sha1 = "848dd7698dafa3e54a6c479e759c4bc3f18847a0"; | ||
8606 | }; | ||
8607 | } | ||
8608 | |||
8609 | { | ||
8610 | name = "type___type_2.0.0.tgz"; | ||
8611 | path = fetchurl { | ||
8612 | name = "type___type_2.0.0.tgz"; | ||
8613 | url = "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz"; | ||
8614 | sha1 = "5f16ff6ef2eb44f260494dae271033b29c09a9c3"; | ||
8615 | }; | ||
8616 | } | ||
8617 | |||
8618 | { | ||
8619 | name = "typedarray___typedarray_0.0.6.tgz"; | ||
8620 | path = fetchurl { | ||
8621 | name = "typedarray___typedarray_0.0.6.tgz"; | ||
8622 | url = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz"; | ||
8623 | sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777"; | ||
8624 | }; | ||
8625 | } | ||
8626 | |||
8627 | { | ||
8628 | name = "uglify_js___uglify_js_2.5.0.tgz"; | ||
8629 | path = fetchurl { | ||
8630 | name = "uglify_js___uglify_js_2.5.0.tgz"; | ||
8631 | url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.5.0.tgz"; | ||
8632 | sha1 = "4ab5d65a4730ecb7a4fb62d3f499e2054d98fba1"; | ||
8633 | }; | ||
8634 | } | ||
8635 | |||
8636 | { | ||
8637 | name = "uglify_js___uglify_js_2.8.29.tgz"; | ||
8638 | path = fetchurl { | ||
8639 | name = "uglify_js___uglify_js_2.8.29.tgz"; | ||
8640 | url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz"; | ||
8641 | sha1 = "29c5733148057bb4e1f75df35b7a9cb72e6a59dd"; | ||
8642 | }; | ||
8643 | } | ||
8644 | |||
8645 | { | ||
8646 | name = "uglify_js___uglify_js_3.8.1.tgz"; | ||
8647 | path = fetchurl { | ||
8648 | name = "uglify_js___uglify_js_3.8.1.tgz"; | ||
8649 | url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.8.1.tgz"; | ||
8650 | sha1 = "43bb15ce6f545eaa0a64c49fd29375ea09fa0f93"; | ||
8651 | }; | ||
8652 | } | ||
8653 | |||
8654 | { | ||
8655 | name = "uglify_js___uglify_js_2.2.5.tgz"; | ||
8656 | path = fetchurl { | ||
8657 | name = "uglify_js___uglify_js_2.2.5.tgz"; | ||
8658 | url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.2.5.tgz"; | ||
8659 | sha1 = "a6e02a70d839792b9780488b7b8b184c095c99c7"; | ||
8660 | }; | ||
8661 | } | ||
8662 | |||
8663 | { | ||
8664 | name = "uglify_js___uglify_js_2.3.6.tgz"; | ||
8665 | path = fetchurl { | ||
8666 | name = "uglify_js___uglify_js_2.3.6.tgz"; | ||
8667 | url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz"; | ||
8668 | sha1 = "fa0984770b428b7a9b2a8058f46355d14fef211a"; | ||
8669 | }; | ||
8670 | } | ||
8671 | |||
8672 | { | ||
8673 | name = "uglify_js___uglify_js_2.4.24.tgz"; | ||
8674 | path = fetchurl { | ||
8675 | name = "uglify_js___uglify_js_2.4.24.tgz"; | ||
8676 | url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.4.24.tgz"; | ||
8677 | sha1 = "fad5755c1e1577658bb06ff9ab6e548c95bebd6e"; | ||
8678 | }; | ||
8679 | } | ||
8680 | |||
8681 | { | ||
8682 | name = "uglify_save_license___uglify_save_license_0.4.1.tgz"; | ||
8683 | path = fetchurl { | ||
8684 | name = "uglify_save_license___uglify_save_license_0.4.1.tgz"; | ||
8685 | url = "https://registry.yarnpkg.com/uglify-save-license/-/uglify-save-license-0.4.1.tgz"; | ||
8686 | sha1 = "95726c17cc6fd171c3617e3bf4d8d82aa8c4cce1"; | ||
8687 | }; | ||
8688 | } | ||
8689 | |||
8690 | { | ||
8691 | name = "uglify_to_browserify___uglify_to_browserify_1.0.2.tgz"; | ||
8692 | path = fetchurl { | ||
8693 | name = "uglify_to_browserify___uglify_to_browserify_1.0.2.tgz"; | ||
8694 | url = "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz"; | ||
8695 | sha1 = "6e0924d6bda6b5afe349e39a6d632850a0f882b7"; | ||
8696 | }; | ||
8697 | } | ||
8698 | |||
8699 | { | ||
8700 | name = "ultron___ultron_1.0.2.tgz"; | ||
8701 | path = fetchurl { | ||
8702 | name = "ultron___ultron_1.0.2.tgz"; | ||
8703 | url = "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz"; | ||
8704 | sha1 = "ace116ab557cd197386a4e88f4685378c8b2e4fa"; | ||
8705 | }; | ||
8706 | } | ||
8707 | |||
8708 | { | ||
8709 | name = "umd___umd_2.0.0.tgz"; | ||
8710 | path = fetchurl { | ||
8711 | name = "umd___umd_2.0.0.tgz"; | ||
8712 | url = "https://registry.yarnpkg.com/umd/-/umd-2.0.0.tgz"; | ||
8713 | sha1 = "749683b0d514728ae0e1b6195f5774afc0ad4f8f"; | ||
8714 | }; | ||
8715 | } | ||
8716 | |||
8717 | { | ||
8718 | name = "unc_path_regex___unc_path_regex_0.1.2.tgz"; | ||
8719 | path = fetchurl { | ||
8720 | name = "unc_path_regex___unc_path_regex_0.1.2.tgz"; | ||
8721 | url = "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz"; | ||
8722 | sha1 = "e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"; | ||
8723 | }; | ||
8724 | } | ||
8725 | |||
8726 | { | ||
8727 | name = "underscore.string___underscore.string_2.4.0.tgz"; | ||
8728 | path = fetchurl { | ||
8729 | name = "underscore.string___underscore.string_2.4.0.tgz"; | ||
8730 | url = "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz"; | ||
8731 | sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b"; | ||
8732 | }; | ||
8733 | } | ||
8734 | |||
8735 | { | ||
8736 | name = "underscore___underscore_1.7.0.tgz"; | ||
8737 | path = fetchurl { | ||
8738 | name = "underscore___underscore_1.7.0.tgz"; | ||
8739 | url = "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz"; | ||
8740 | sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209"; | ||
8741 | }; | ||
8742 | } | ||
8743 | |||
8744 | { | ||
8745 | name = "union_value___union_value_1.0.1.tgz"; | ||
8746 | path = fetchurl { | ||
8747 | name = "union_value___union_value_1.0.1.tgz"; | ||
8748 | url = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz"; | ||
8749 | sha1 = "0b6fe7b835aecda61c6ea4d4f02c14221e109847"; | ||
8750 | }; | ||
8751 | } | ||
8752 | |||
8753 | { | ||
8754 | name = "unique_stream___unique_stream_1.0.0.tgz"; | ||
8755 | path = fetchurl { | ||
8756 | name = "unique_stream___unique_stream_1.0.0.tgz"; | ||
8757 | url = "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz"; | ||
8758 | sha1 = "d59a4a75427447d9aa6c91e70263f8d26a4b104b"; | ||
8759 | }; | ||
8760 | } | ||
8761 | |||
8762 | { | ||
8763 | name = "universalify___universalify_0.1.2.tgz"; | ||
8764 | path = fetchurl { | ||
8765 | name = "universalify___universalify_0.1.2.tgz"; | ||
8766 | url = "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz"; | ||
8767 | sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66"; | ||
8768 | }; | ||
8769 | } | ||
8770 | |||
8771 | { | ||
8772 | name = "unpipe___unpipe_1.0.0.tgz"; | ||
8773 | path = fetchurl { | ||
8774 | name = "unpipe___unpipe_1.0.0.tgz"; | ||
8775 | url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz"; | ||
8776 | sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec"; | ||
8777 | }; | ||
8778 | } | ||
8779 | |||
8780 | { | ||
8781 | name = "unset_value___unset_value_1.0.0.tgz"; | ||
8782 | path = fetchurl { | ||
8783 | name = "unset_value___unset_value_1.0.0.tgz"; | ||
8784 | url = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz"; | ||
8785 | sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"; | ||
8786 | }; | ||
8787 | } | ||
8788 | |||
8789 | { | ||
8790 | name = "update_notifier___update_notifier_0.2.2.tgz"; | ||
8791 | path = fetchurl { | ||
8792 | name = "update_notifier___update_notifier_0.2.2.tgz"; | ||
8793 | url = "https://registry.yarnpkg.com/update-notifier/-/update-notifier-0.2.2.tgz"; | ||
8794 | sha1 = "e69b3a784b4e686a2acd98f5e66944591996e187"; | ||
8795 | }; | ||
8796 | } | ||
8797 | |||
8798 | { | ||
8799 | name = "uri_js___uri_js_4.2.2.tgz"; | ||
8800 | path = fetchurl { | ||
8801 | name = "uri_js___uri_js_4.2.2.tgz"; | ||
8802 | url = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz"; | ||
8803 | sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0"; | ||
8804 | }; | ||
8805 | } | ||
8806 | |||
8807 | { | ||
8808 | name = "urix___urix_0.1.0.tgz"; | ||
8809 | path = fetchurl { | ||
8810 | name = "urix___urix_0.1.0.tgz"; | ||
8811 | url = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz"; | ||
8812 | sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72"; | ||
8813 | }; | ||
8814 | } | ||
8815 | |||
8816 | { | ||
8817 | name = "url___url_0.10.3.tgz"; | ||
8818 | path = fetchurl { | ||
8819 | name = "url___url_0.10.3.tgz"; | ||
8820 | url = "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz"; | ||
8821 | sha1 = "021e4d9c7705f21bbf37d03ceb58767402774c64"; | ||
8822 | }; | ||
8823 | } | ||
8824 | |||
8825 | { | ||
8826 | name = "use___use_3.1.1.tgz"; | ||
8827 | path = fetchurl { | ||
8828 | name = "use___use_3.1.1.tgz"; | ||
8829 | url = "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz"; | ||
8830 | sha1 = "d50c8cac79a19fbc20f2911f56eb973f4e10070f"; | ||
8831 | }; | ||
8832 | } | ||
8833 | |||
8834 | { | ||
8835 | name = "user_home___user_home_1.1.1.tgz"; | ||
8836 | path = fetchurl { | ||
8837 | name = "user_home___user_home_1.1.1.tgz"; | ||
8838 | url = "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz"; | ||
8839 | sha1 = "2b5be23a32b63a7c9deb8d0f28d485724a3df190"; | ||
8840 | }; | ||
8841 | } | ||
8842 | |||
8843 | { | ||
8844 | name = "useragent___useragent_2.3.0.tgz"; | ||
8845 | path = fetchurl { | ||
8846 | name = "useragent___useragent_2.3.0.tgz"; | ||
8847 | url = "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz"; | ||
8848 | sha1 = "217f943ad540cb2128658ab23fc960f6a88c9972"; | ||
8849 | }; | ||
8850 | } | ||
8851 | |||
8852 | { | ||
8853 | name = "util_deprecate___util_deprecate_1.0.2.tgz"; | ||
8854 | path = fetchurl { | ||
8855 | name = "util_deprecate___util_deprecate_1.0.2.tgz"; | ||
8856 | url = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz"; | ||
8857 | sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf"; | ||
8858 | }; | ||
8859 | } | ||
8860 | |||
8861 | { | ||
8862 | name = "util___util_0.10.3.tgz"; | ||
8863 | path = fetchurl { | ||
8864 | name = "util___util_0.10.3.tgz"; | ||
8865 | url = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz"; | ||
8866 | sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9"; | ||
8867 | }; | ||
8868 | } | ||
8869 | |||
8870 | { | ||
8871 | name = "util___util_0.10.4.tgz"; | ||
8872 | path = fetchurl { | ||
8873 | name = "util___util_0.10.4.tgz"; | ||
8874 | url = "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz"; | ||
8875 | sha1 = "3aa0125bfe668a4672de58857d3ace27ecb76901"; | ||
8876 | }; | ||
8877 | } | ||
8878 | |||
8879 | { | ||
8880 | name = "utils_merge___utils_merge_1.0.1.tgz"; | ||
8881 | path = fetchurl { | ||
8882 | name = "utils_merge___utils_merge_1.0.1.tgz"; | ||
8883 | url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz"; | ||
8884 | sha1 = "9f95710f50a267947b2ccc124741c1028427e713"; | ||
8885 | }; | ||
8886 | } | ||
8887 | |||
8888 | { | ||
8889 | name = "uuid___uuid_2.0.3.tgz"; | ||
8890 | path = fetchurl { | ||
8891 | name = "uuid___uuid_2.0.3.tgz"; | ||
8892 | url = "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz"; | ||
8893 | sha1 = "67e2e863797215530dff318e5bf9dcebfd47b21a"; | ||
8894 | }; | ||
8895 | } | ||
8896 | |||
8897 | { | ||
8898 | name = "uuid___uuid_3.4.0.tgz"; | ||
8899 | path = fetchurl { | ||
8900 | name = "uuid___uuid_3.4.0.tgz"; | ||
8901 | url = "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz"; | ||
8902 | sha1 = "b23e4358afa8a202fe7a100af1f5f883f02007ee"; | ||
8903 | }; | ||
8904 | } | ||
8905 | |||
8906 | { | ||
8907 | name = "uuid___uuid_1.4.2.tgz"; | ||
8908 | path = fetchurl { | ||
8909 | name = "uuid___uuid_1.4.2.tgz"; | ||
8910 | url = "https://registry.yarnpkg.com/uuid/-/uuid-1.4.2.tgz"; | ||
8911 | sha1 = "453019f686966a6df83cdc5244e7c990ecc332fc"; | ||
8912 | }; | ||
8913 | } | ||
8914 | |||
8915 | { | ||
8916 | name = "v8flags___v8flags_2.1.1.tgz"; | ||
8917 | path = fetchurl { | ||
8918 | name = "v8flags___v8flags_2.1.1.tgz"; | ||
8919 | url = "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz"; | ||
8920 | sha1 = "aab1a1fa30d45f88dd321148875ac02c0b55e5b4"; | ||
8921 | }; | ||
8922 | } | ||
8923 | |||
8924 | { | ||
8925 | name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz"; | ||
8926 | path = fetchurl { | ||
8927 | name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz"; | ||
8928 | url = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"; | ||
8929 | sha1 = "fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"; | ||
8930 | }; | ||
8931 | } | ||
8932 | |||
8933 | { | ||
8934 | name = "verror___verror_1.10.0.tgz"; | ||
8935 | path = fetchurl { | ||
8936 | name = "verror___verror_1.10.0.tgz"; | ||
8937 | url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz"; | ||
8938 | sha1 = "3a105ca17053af55d6e270c1f8288682e18da400"; | ||
8939 | }; | ||
8940 | } | ||
8941 | |||
8942 | { | ||
8943 | name = "vinyl_fs___vinyl_fs_0.3.14.tgz"; | ||
8944 | path = fetchurl { | ||
8945 | name = "vinyl_fs___vinyl_fs_0.3.14.tgz"; | ||
8946 | url = "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz"; | ||
8947 | sha1 = "9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6"; | ||
8948 | }; | ||
8949 | } | ||
8950 | |||
8951 | { | ||
8952 | name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.1.4.tgz"; | ||
8953 | path = fetchurl { | ||
8954 | name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.1.4.tgz"; | ||
8955 | url = "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.1.4.tgz"; | ||
8956 | sha1 = "c5fcbd43e2f238423c2dc98bddd6f79b72bc345b"; | ||
8957 | }; | ||
8958 | } | ||
8959 | |||
8960 | { | ||
8961 | name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.2.1.tgz"; | ||
8962 | path = fetchurl { | ||
8963 | name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.2.1.tgz"; | ||
8964 | url = "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz"; | ||
8965 | sha1 = "ab6549d61d172c2b1b87be5c508d239c8ef87705"; | ||
8966 | }; | ||
8967 | } | ||
8968 | |||
8969 | { | ||
8970 | name = "vinyl___vinyl_0.2.3.tgz"; | ||
8971 | path = fetchurl { | ||
8972 | name = "vinyl___vinyl_0.2.3.tgz"; | ||
8973 | url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.2.3.tgz"; | ||
8974 | sha1 = "bca938209582ec5a49ad538a00fa1f125e513252"; | ||
8975 | }; | ||
8976 | } | ||
8977 | |||
8978 | { | ||
8979 | name = "vinyl___vinyl_0.4.6.tgz"; | ||
8980 | path = fetchurl { | ||
8981 | name = "vinyl___vinyl_0.4.6.tgz"; | ||
8982 | url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz"; | ||
8983 | sha1 = "2f356c87a550a255461f36bbeb2a5ba8bf784847"; | ||
8984 | }; | ||
8985 | } | ||
8986 | |||
8987 | { | ||
8988 | name = "vinyl___vinyl_0.5.3.tgz"; | ||
8989 | path = fetchurl { | ||
8990 | name = "vinyl___vinyl_0.5.3.tgz"; | ||
8991 | url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz"; | ||
8992 | sha1 = "b0455b38fc5e0cf30d4325132e461970c2091cde"; | ||
8993 | }; | ||
8994 | } | ||
8995 | |||
8996 | { | ||
8997 | name = "vinyl___vinyl_1.2.0.tgz"; | ||
8998 | path = fetchurl { | ||
8999 | name = "vinyl___vinyl_1.2.0.tgz"; | ||
9000 | url = "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz"; | ||
9001 | sha1 = "5c88036cf565e5df05558bfc911f8656df218884"; | ||
9002 | }; | ||
9003 | } | ||
9004 | |||
9005 | { | ||
9006 | name = "vinyl___vinyl_2.2.0.tgz"; | ||
9007 | path = fetchurl { | ||
9008 | name = "vinyl___vinyl_2.2.0.tgz"; | ||
9009 | url = "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz"; | ||
9010 | sha1 = "d85b07da96e458d25b2ffe19fece9f2caa13ed86"; | ||
9011 | }; | ||
9012 | } | ||
9013 | |||
9014 | { | ||
9015 | name = "vm_browserify___vm_browserify_0.0.4.tgz"; | ||
9016 | path = fetchurl { | ||
9017 | name = "vm_browserify___vm_browserify_0.0.4.tgz"; | ||
9018 | url = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz"; | ||
9019 | sha1 = "5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"; | ||
9020 | }; | ||
9021 | } | ||
9022 | |||
9023 | { | ||
9024 | name = "void_elements___void_elements_2.0.1.tgz"; | ||
9025 | path = fetchurl { | ||
9026 | name = "void_elements___void_elements_2.0.1.tgz"; | ||
9027 | url = "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz"; | ||
9028 | sha1 = "c066afb582bb1cb4128d60ea92392e94d5e9dbec"; | ||
9029 | }; | ||
9030 | } | ||
9031 | |||
9032 | { | ||
9033 | name = "websocket_driver___websocket_driver_0.7.3.tgz"; | ||
9034 | path = fetchurl { | ||
9035 | name = "websocket_driver___websocket_driver_0.7.3.tgz"; | ||
9036 | url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz"; | ||
9037 | sha1 = "a2d4e0d4f4f116f1e6297eba58b05d430100e9f9"; | ||
9038 | }; | ||
9039 | } | ||
9040 | |||
9041 | { | ||
9042 | name = "websocket_extensions___websocket_extensions_0.1.3.tgz"; | ||
9043 | path = fetchurl { | ||
9044 | name = "websocket_extensions___websocket_extensions_0.1.3.tgz"; | ||
9045 | url = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz"; | ||
9046 | sha1 = "5d2ff22977003ec687a4b87073dfbbac146ccf29"; | ||
9047 | }; | ||
9048 | } | ||
9049 | |||
9050 | { | ||
9051 | name = "which_module___which_module_1.0.0.tgz"; | ||
9052 | path = fetchurl { | ||
9053 | name = "which_module___which_module_1.0.0.tgz"; | ||
9054 | url = "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz"; | ||
9055 | sha1 = "bba63ca861948994ff307736089e3b96026c2a4f"; | ||
9056 | }; | ||
9057 | } | ||
9058 | |||
9059 | { | ||
9060 | name = "which___which_1.3.1.tgz"; | ||
9061 | path = fetchurl { | ||
9062 | name = "which___which_1.3.1.tgz"; | ||
9063 | url = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz"; | ||
9064 | sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a"; | ||
9065 | }; | ||
9066 | } | ||
9067 | |||
9068 | { | ||
9069 | name = "which___which_1.0.9.tgz"; | ||
9070 | path = fetchurl { | ||
9071 | name = "which___which_1.0.9.tgz"; | ||
9072 | url = "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz"; | ||
9073 | sha1 = "460c1da0f810103d0321a9b633af9e575e64486f"; | ||
9074 | }; | ||
9075 | } | ||
9076 | |||
9077 | { | ||
9078 | name = "wide_align___wide_align_1.1.3.tgz"; | ||
9079 | path = fetchurl { | ||
9080 | name = "wide_align___wide_align_1.1.3.tgz"; | ||
9081 | url = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz"; | ||
9082 | sha1 = "ae074e6bdc0c14a431e804e624549c633b000457"; | ||
9083 | }; | ||
9084 | } | ||
9085 | |||
9086 | { | ||
9087 | name = "window_size___window_size_0.1.0.tgz"; | ||
9088 | path = fetchurl { | ||
9089 | name = "window_size___window_size_0.1.0.tgz"; | ||
9090 | url = "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz"; | ||
9091 | sha1 = "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"; | ||
9092 | }; | ||
9093 | } | ||
9094 | |||
9095 | { | ||
9096 | name = "with___with_5.1.1.tgz"; | ||
9097 | path = fetchurl { | ||
9098 | name = "with___with_5.1.1.tgz"; | ||
9099 | url = "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz"; | ||
9100 | sha1 = "fa4daa92daf32c4ea94ed453c81f04686b575dfe"; | ||
9101 | }; | ||
9102 | } | ||
9103 | |||
9104 | { | ||
9105 | name = "word_wrap___word_wrap_1.2.3.tgz"; | ||
9106 | path = fetchurl { | ||
9107 | name = "word_wrap___word_wrap_1.2.3.tgz"; | ||
9108 | url = "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz"; | ||
9109 | sha1 = "610636f6b1f703891bd34771ccb17fb93b47079c"; | ||
9110 | }; | ||
9111 | } | ||
9112 | |||
9113 | { | ||
9114 | name = "wordwrap___wordwrap_0.0.2.tgz"; | ||
9115 | path = fetchurl { | ||
9116 | name = "wordwrap___wordwrap_0.0.2.tgz"; | ||
9117 | url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz"; | ||
9118 | sha1 = "b79669bb42ecb409f83d583cad52ca17eaa1643f"; | ||
9119 | }; | ||
9120 | } | ||
9121 | |||
9122 | { | ||
9123 | name = "wordwrap___wordwrap_1.0.0.tgz"; | ||
9124 | path = fetchurl { | ||
9125 | name = "wordwrap___wordwrap_1.0.0.tgz"; | ||
9126 | url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz"; | ||
9127 | sha1 = "27584810891456a4171c8d0226441ade90cbcaeb"; | ||
9128 | }; | ||
9129 | } | ||
9130 | |||
9131 | { | ||
9132 | name = "wordwrap___wordwrap_0.0.3.tgz"; | ||
9133 | path = fetchurl { | ||
9134 | name = "wordwrap___wordwrap_0.0.3.tgz"; | ||
9135 | url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz"; | ||
9136 | sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107"; | ||
9137 | }; | ||
9138 | } | ||
9139 | |||
9140 | { | ||
9141 | name = "wrap_ansi___wrap_ansi_2.1.0.tgz"; | ||
9142 | path = fetchurl { | ||
9143 | name = "wrap_ansi___wrap_ansi_2.1.0.tgz"; | ||
9144 | url = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz"; | ||
9145 | sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85"; | ||
9146 | }; | ||
9147 | } | ||
9148 | |||
9149 | { | ||
9150 | name = "wrappy___wrappy_1.0.2.tgz"; | ||
9151 | path = fetchurl { | ||
9152 | name = "wrappy___wrappy_1.0.2.tgz"; | ||
9153 | url = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz"; | ||
9154 | sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"; | ||
9155 | }; | ||
9156 | } | ||
9157 | |||
9158 | { | ||
9159 | name = "ws___ws_1.1.5.tgz"; | ||
9160 | path = fetchurl { | ||
9161 | name = "ws___ws_1.1.5.tgz"; | ||
9162 | url = "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz"; | ||
9163 | sha1 = "cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51"; | ||
9164 | }; | ||
9165 | } | ||
9166 | |||
9167 | { | ||
9168 | name = "wtf_8___wtf_8_1.0.0.tgz"; | ||
9169 | path = fetchurl { | ||
9170 | name = "wtf_8___wtf_8_1.0.0.tgz"; | ||
9171 | url = "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz"; | ||
9172 | sha1 = "392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a"; | ||
9173 | }; | ||
9174 | } | ||
9175 | |||
9176 | { | ||
9177 | name = "xdg_basedir___xdg_basedir_1.0.1.tgz"; | ||
9178 | path = fetchurl { | ||
9179 | name = "xdg_basedir___xdg_basedir_1.0.1.tgz"; | ||
9180 | url = "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-1.0.1.tgz"; | ||
9181 | sha1 = "14ff8f63a4fdbcb05d5b6eea22b36f3033b9f04e"; | ||
9182 | }; | ||
9183 | } | ||
9184 | |||
9185 | { | ||
9186 | name = "xmlhttprequest_ssl___xmlhttprequest_ssl_1.5.3.tgz"; | ||
9187 | path = fetchurl { | ||
9188 | name = "xmlhttprequest_ssl___xmlhttprequest_ssl_1.5.3.tgz"; | ||
9189 | url = "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz"; | ||
9190 | sha1 = "185a888c04eca46c3e4070d99f7b49de3528992d"; | ||
9191 | }; | ||
9192 | } | ||
9193 | |||
9194 | { | ||
9195 | name = "xtend___xtend_4.0.2.tgz"; | ||
9196 | path = fetchurl { | ||
9197 | name = "xtend___xtend_4.0.2.tgz"; | ||
9198 | url = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz"; | ||
9199 | sha1 = "bb72779f5fa465186b1f438f674fa347fdb5db54"; | ||
9200 | }; | ||
9201 | } | ||
9202 | |||
9203 | { | ||
9204 | name = "xtend___xtend_3.0.0.tgz"; | ||
9205 | path = fetchurl { | ||
9206 | name = "xtend___xtend_3.0.0.tgz"; | ||
9207 | url = "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz"; | ||
9208 | sha1 = "5cce7407baf642cba7becda568111c493f59665a"; | ||
9209 | }; | ||
9210 | } | ||
9211 | |||
9212 | { | ||
9213 | name = "xtend___xtend_2.1.2.tgz"; | ||
9214 | path = fetchurl { | ||
9215 | name = "xtend___xtend_2.1.2.tgz"; | ||
9216 | url = "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz"; | ||
9217 | sha1 = "6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"; | ||
9218 | }; | ||
9219 | } | ||
9220 | |||
9221 | { | ||
9222 | name = "y18n___y18n_3.2.1.tgz"; | ||
9223 | path = fetchurl { | ||
9224 | name = "y18n___y18n_3.2.1.tgz"; | ||
9225 | url = "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz"; | ||
9226 | sha1 = "6d15fba884c08679c0d77e88e7759e811e07fa41"; | ||
9227 | }; | ||
9228 | } | ||
9229 | |||
9230 | { | ||
9231 | name = "yallist___yallist_2.1.2.tgz"; | ||
9232 | path = fetchurl { | ||
9233 | name = "yallist___yallist_2.1.2.tgz"; | ||
9234 | url = "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz"; | ||
9235 | sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52"; | ||
9236 | }; | ||
9237 | } | ||
9238 | |||
9239 | { | ||
9240 | name = "yallist___yallist_3.1.1.tgz"; | ||
9241 | path = fetchurl { | ||
9242 | name = "yallist___yallist_3.1.1.tgz"; | ||
9243 | url = "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz"; | ||
9244 | sha1 = "dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"; | ||
9245 | }; | ||
9246 | } | ||
9247 | |||
9248 | { | ||
9249 | name = "yargs_parser___yargs_parser_5.0.0.tgz"; | ||
9250 | path = fetchurl { | ||
9251 | name = "yargs_parser___yargs_parser_5.0.0.tgz"; | ||
9252 | url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz"; | ||
9253 | sha1 = "275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"; | ||
9254 | }; | ||
9255 | } | ||
9256 | |||
9257 | { | ||
9258 | name = "yargs___yargs_7.1.0.tgz"; | ||
9259 | path = fetchurl { | ||
9260 | name = "yargs___yargs_7.1.0.tgz"; | ||
9261 | url = "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz"; | ||
9262 | sha1 = "6ba318eb16961727f5d284f8ea003e8d6154d0c8"; | ||
9263 | }; | ||
9264 | } | ||
9265 | |||
9266 | { | ||
9267 | name = "yargs___yargs_3.10.0.tgz"; | ||
9268 | path = fetchurl { | ||
9269 | name = "yargs___yargs_3.10.0.tgz"; | ||
9270 | url = "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz"; | ||
9271 | sha1 = "f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"; | ||
9272 | }; | ||
9273 | } | ||
9274 | |||
9275 | { | ||
9276 | name = "yargs___yargs_3.5.4.tgz"; | ||
9277 | path = fetchurl { | ||
9278 | name = "yargs___yargs_3.5.4.tgz"; | ||
9279 | url = "https://registry.yarnpkg.com/yargs/-/yargs-3.5.4.tgz"; | ||
9280 | sha1 = "d8aff8f665e94c34bd259bdebd1bfaf0ddd35361"; | ||
9281 | }; | ||
9282 | } | ||
9283 | |||
9284 | { | ||
9285 | name = "yeast___yeast_0.1.2.tgz"; | ||
9286 | path = fetchurl { | ||
9287 | name = "yeast___yeast_0.1.2.tgz"; | ||
9288 | url = "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz"; | ||
9289 | sha1 = "008e06d8094320c372dbc2f8ed76a0ca6c8ac419"; | ||
9290 | }; | ||
9291 | } | ||
9292 | ]; | ||
9293 | } | ||
diff --git a/flakes/private/buildbot/common/build_helpers.py b/flakes/private/buildbot/common/build_helpers.py new file mode 100644 index 0000000..77e6c07 --- /dev/null +++ b/flakes/private/buildbot/common/build_helpers.py | |||
@@ -0,0 +1,293 @@ | |||
1 | from buildbot.plugins import util, steps, schedulers | ||
2 | from buildbot_buildslist import BuildsList | ||
3 | from shutil import which | ||
4 | |||
5 | __all__ = [ | ||
6 | "force_scheduler", "deploy_scheduler", "git_hook_scheduler", | ||
7 | "clean_branch", "package_and_upload", "AppriseStatusPush", | ||
8 | "XMPPStatusPush", "NixShellCommand", | ||
9 | "all_builder_names", "compute_build_infos", "deploy_ssh_command", | ||
10 | "configure_apprise_push", | ||
11 | "configure_xmpp_push", "deploy_hook_scheduler", | ||
12 | ] | ||
13 | |||
14 | # Small helpers" | ||
15 | @util.renderer | ||
16 | def clean_branch(props): | ||
17 | if props.hasProperty("branch") and len(props["branch"]) > 0: | ||
18 | return props["branch"].replace("/", "_") | ||
19 | else: | ||
20 | return "HEAD" | ||
21 | |||
22 | def package_and_upload(package, package_dest, package_url): | ||
23 | return [ | ||
24 | steps.ShellCommand(name="build package", | ||
25 | logEnviron=False, haltOnFailure=True, | ||
26 | command=["git", "archive", "HEAD", "-o", package]), | ||
27 | |||
28 | steps.FileUpload(name="upload package", workersrc=package, | ||
29 | masterdest=package_dest, | ||
30 | url=package_url, mode=0o644), | ||
31 | |||
32 | steps.ShellCommand(name="cleanup package", logEnviron=False, | ||
33 | haltOnFailure=True, alwaysRun=True, | ||
34 | command=["rm", "-f", package]), | ||
35 | ] | ||
36 | |||
37 | # Steps | ||
38 | class NixShellCommand(steps.ShellCommand): | ||
39 | def __init__(self, command=None, nixPackages=[], pure=True, nixFile=None, nixIncludes={}, nixArgs={}, **kwargs): | ||
40 | oldpath = kwargs.get("env", {}).get("PATH", None) | ||
41 | if which("nix-shell", path=oldpath) is None: | ||
42 | kwargs["env"] = kwargs.get("env", {}) | ||
43 | if isinstance(oldpath, str): | ||
44 | kwargs["env"]["PATH"] = "/run/current-system/sw/bin:" + oldpath | ||
45 | elif isinstance(oldpath, list): | ||
46 | kwargs["env"]["PATH"] = ["/run/current-system/sw/bin"] + oldpath | ||
47 | nixcommand = ["nix-shell"] | ||
48 | for k, v in nixArgs.items(): | ||
49 | nixcommand.append("--arg") | ||
50 | nixcommand.append(k) | ||
51 | nixcommand.append(v) | ||
52 | if pure: | ||
53 | nixcommand.append("--pure") | ||
54 | for k, v in nixIncludes.items(): | ||
55 | nixcommand.append("-I") | ||
56 | nixcommand.append("{}={}".format(k, v)) | ||
57 | nixcommand.append("--run") | ||
58 | nixcommand.append(command) | ||
59 | if len(nixPackages) > 0: | ||
60 | nixcommand.append("-p") | ||
61 | nixcommand += nixPackages | ||
62 | elif nixFile is not None: | ||
63 | nixcommand.append(nixFile) | ||
64 | super().__init__(command=nixcommand, **kwargs) | ||
65 | |||
66 | # Schedulers | ||
67 | def force_scheduler(name, builders, nobranch=False): | ||
68 | if nobranch: | ||
69 | branch = util.FixedParameter(name="branch", default="") | ||
70 | else: | ||
71 | branch=util.StringParameter(name="branch", label="Git reference (tag, branch)", required=True) | ||
72 | |||
73 | return schedulers.ForceScheduler(name=name, | ||
74 | label="Force build", buttonName="Force build", | ||
75 | reason=util.StringParameter(name="reason", label="Reason", default="Force build"), | ||
76 | codebases=[ | ||
77 | util.CodebaseParameter("", | ||
78 | branch=branch, | ||
79 | revision=util.FixedParameter(name="revision", default=""), | ||
80 | repository=util.FixedParameter(name="repository", default=""), | ||
81 | project=util.FixedParameter(name="project", default=""), | ||
82 | ), | ||
83 | ], | ||
84 | username=util.FixedParameter(name="username", default="Web button"), | ||
85 | builderNames=builders) | ||
86 | |||
87 | def deploy_scheduler(name, builders): | ||
88 | return schedulers.ForceScheduler(name=name, | ||
89 | builderNames=builders, | ||
90 | label="Deploy built package", buttonName="Deploy", | ||
91 | username=util.FixedParameter(name="username", default="Web button"), | ||
92 | codebases=[ | ||
93 | util.CodebaseParameter(codebase="", | ||
94 | branch=util.FixedParameter(name="branch", default=""), | ||
95 | revision=util.FixedParameter(name="revision", default=""), | ||
96 | repository=util.FixedParameter(name="repository", default=""), | ||
97 | project=util.FixedParameter(name="project", default=""))], | ||
98 | reason=util.FixedParameter(name="reason", default="Deploy"), | ||
99 | properties=[ | ||
100 | util.ChoiceStringParameter(label="Environment", | ||
101 | name="environment", default="integration", | ||
102 | choices=["integration", "production"]), | ||
103 | BuildsList(label="Build to deploy", name="build"), | ||
104 | ] | ||
105 | ) | ||
106 | |||
107 | def git_hook_scheduler(project, builders=[], timer=1): | ||
108 | if len(builders) == 0: | ||
109 | builders = ["{}_build".format(project)] | ||
110 | return schedulers.AnyBranchScheduler( | ||
111 | change_filter=util.ChangeFilter(category="gitolite-hooks", project=project), | ||
112 | name="{}_git_hook".format(project), treeStableTimer=timer, builderNames=builders) | ||
113 | |||
114 | def deploy_hook_scheduler(project, builders, timer=1): | ||
115 | return schedulers.AnyBranchScheduler( | ||
116 | change_filter=util.ChangeFilter(category="deploy_webhook", project=project), | ||
117 | name="{}_deploy".format(project), treeStableTimer=timer, builderNames=builders) | ||
118 | |||
119 | # Builders | ||
120 | def all_builder_names(c): | ||
121 | return [builder.name for builder in c['builders']] | ||
122 | |||
123 | # Apprise/XMPP status push | ||
124 | from buildbot.reporters.http import HttpStatusPushBase | ||
125 | from twisted.internet import defer | ||
126 | from twisted.python import log | ||
127 | from buildbot.reporters import utils | ||
128 | from buildbot.process import results | ||
129 | from twisted.words.protocols.jabber.jid import JID | ||
130 | from wokkel import client, xmppim | ||
131 | from functools import partial | ||
132 | import apprise | ||
133 | |||
134 | class AppriseStatusPush(HttpStatusPushBase): | ||
135 | name = "AppriseStatusPush" | ||
136 | |||
137 | @defer.inlineCallbacks | ||
138 | def reconfigService(self, appriseUrls, **kwargs): | ||
139 | self.appriseUrls = appriseUrls | ||
140 | yield HttpStatusPushBase.reconfigService(self, **kwargs) | ||
141 | |||
142 | @defer.inlineCallbacks | ||
143 | def send(self, build): | ||
144 | yield utils.getDetailsForBuild(self.master, build, wantProperties=True) | ||
145 | appobject = apprise.Apprise() | ||
146 | message = self.format(build) | ||
147 | for url in self.appriseUrls: | ||
148 | appobject.add(url.format(**message)) | ||
149 | yield appobject.notify(title=message["title"], body=message["text"]) | ||
150 | |||
151 | def format(self, build): | ||
152 | if "environment" in build["properties"]: | ||
153 | msg = "{} environment".format(build["properties"]["environment"][0]) | ||
154 | if "build" in build["properties"]: | ||
155 | msg = "of archive {} in ".format(build["properties"]["build"][0]) + msg | ||
156 | elif len(build["buildset"]["sourcestamps"][0]["branch"] or []) > 0: | ||
157 | msg = "revision {}".format(build["buildset"]["sourcestamps"][0]["branch"]) | ||
158 | else: | ||
159 | msg = "build" | ||
160 | |||
161 | if build["complete"]: | ||
162 | timedelta = int((build["complete_at"] - build["started_at"]).total_seconds()) | ||
163 | hours, rest = divmod(timedelta, 3600) | ||
164 | minutes, seconds = divmod(rest, 60) | ||
165 | if hours > 0: | ||
166 | duration = "{}h {}min {}s".format(hours, minutes, seconds) | ||
167 | elif minutes > 0: | ||
168 | duration = "{}min {}s".format(minutes, seconds) | ||
169 | else: | ||
170 | duration = "{}s".format(seconds) | ||
171 | |||
172 | text = "Build {} ({}) of {}'s {} was {} in {}.".format( | ||
173 | build["number"], build["url"], | ||
174 | build["builder"]["name"], | ||
175 | msg, | ||
176 | results.Results[build["results"]], | ||
177 | duration, | ||
178 | ) | ||
179 | else: | ||
180 | text = "Build {} ({}) of {}'s {} started.".format( | ||
181 | build["number"], build["url"], | ||
182 | build["builder"]["name"], | ||
183 | msg, | ||
184 | ) | ||
185 | return { | ||
186 | "username": "Buildbot", | ||
187 | "image_url": "http://docs.buildbot.net/current/_static/icon.png", | ||
188 | "text": text, | ||
189 | "title": "", | ||
190 | } | ||
191 | |||
192 | def configure_apprise_push(c, secrets_file, builders): | ||
193 | c['services'].append(AppriseStatusPush( | ||
194 | name="apprise_status", builders=builders, | ||
195 | appriseUrls=open(secrets_file + "/apprise_webhooks", "r").read().split("\n"))) | ||
196 | |||
197 | class XMPPStatusPush(HttpStatusPushBase): | ||
198 | name = "XMPPStatusPush" | ||
199 | |||
200 | @defer.inlineCallbacks | ||
201 | def reconfigService(self, password, recipients, **kwargs): | ||
202 | yield HttpStatusPushBase.reconfigService(self, **kwargs) | ||
203 | self.password = password | ||
204 | self.recipients = recipients | ||
205 | |||
206 | @defer.inlineCallbacks | ||
207 | def send(self, build): | ||
208 | yield utils.getDetailsForBuild(self.master, build, wantProperties=True) | ||
209 | body = self.format(build) | ||
210 | factory = client.DeferredClientFactory(JID("notify_bot@immae.fr/buildbot"), self.password) | ||
211 | d = client.clientCreator(factory) | ||
212 | def send_message(recipient, stream): | ||
213 | message = xmppim.Message(recipient=JID(recipient), body=body) | ||
214 | message.stanzaType = 'chat' | ||
215 | stream.send(message.toElement()) | ||
216 | # To allow chaining | ||
217 | return stream | ||
218 | for recipient in self.recipients: | ||
219 | d.addCallback(partial(send_message, recipient)) | ||
220 | d.addCallback(lambda _: factory.streamManager.xmlstream.sendFooter()) | ||
221 | d.addErrback(log.err) | ||
222 | |||
223 | def format(self, build): | ||
224 | if "environment" in build["properties"]: | ||
225 | msg = "{} environment".format(build["properties"]["environment"][0]) | ||
226 | if "build" in build["properties"]: | ||
227 | msg = "of archive {} in ".format(build["properties"]["build"][0]) + msg | ||
228 | elif len(build["buildset"]["sourcestamps"][0]["branch"] or []) > 0: | ||
229 | msg = "revision {}".format(build["buildset"]["sourcestamps"][0]["branch"]) | ||
230 | else: | ||
231 | msg = "build" | ||
232 | |||
233 | if build["complete"]: | ||
234 | timedelta = int((build["complete_at"] - build["started_at"]).total_seconds()) | ||
235 | hours, rest = divmod(timedelta, 3600) | ||
236 | minutes, seconds = divmod(rest, 60) | ||
237 | if hours > 0: | ||
238 | duration = "{}h {}min {}s".format(hours, minutes, seconds) | ||
239 | elif minutes > 0: | ||
240 | duration = "{}min {}s".format(minutes, seconds) | ||
241 | else: | ||
242 | duration = "{}s".format(seconds) | ||
243 | |||
244 | text = "Build {} ( {} ) of {}'s {} was {} in {}.".format( | ||
245 | build["number"], build["url"], | ||
246 | build["builder"]["name"], | ||
247 | msg, | ||
248 | results.Results[build["results"]], | ||
249 | duration, | ||
250 | ) | ||
251 | else: | ||
252 | text = "Build {} ( {} ) of {}'s {} started.".format( | ||
253 | build["number"], build["url"], | ||
254 | build["builder"]["name"], | ||
255 | msg, | ||
256 | ) | ||
257 | |||
258 | return text | ||
259 | |||
260 | def configure_xmpp_push(c, secrets_file, builders, recipients): | ||
261 | c['services'].append(XMPPStatusPush( | ||
262 | name="xmpp_status", builders=builders, recipients=recipients, | ||
263 | password=open(secrets_file + "/notify_xmpp_password", "r").read().rstrip())) | ||
264 | |||
265 | # LDAP edit | ||
266 | from buildbot.process.buildstep import FAILURE | ||
267 | from buildbot.process.buildstep import SUCCESS | ||
268 | from buildbot.process.buildstep import BuildStep | ||
269 | |||
270 | def compute_build_infos(prefix, release_path): | ||
271 | @util.renderer | ||
272 | def compute(props): | ||
273 | import re, hashlib | ||
274 | build_file = props.getProperty("build") | ||
275 | package_dest = "{}/{}".format(release_path, build_file) | ||
276 | version = re.match(r"{0}_(.*).tar.gz".format(prefix), build_file).group(1) | ||
277 | with open(package_dest, "rb") as f: | ||
278 | sha = hashlib.sha256(f.read()).hexdigest() | ||
279 | return { | ||
280 | "build_version": version, | ||
281 | "build_hash": sha, | ||
282 | } | ||
283 | return compute | ||
284 | |||
285 | def deploy_ssh_command(ssh_key_path, deploy_hosts): | ||
286 | @util.renderer | ||
287 | def compute(props): | ||
288 | environment = props["environment"] if props.hasProperty("environment") else "integration" | ||
289 | ssh_command = [ | ||
290 | "ssh", "-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no", "-o", "CheckHostIP=no", | ||
291 | "-i", ssh_key_path ] | ||
292 | return ssh_command + deploy_hosts.get(environment, ["host.invalid"]) | ||
293 | return compute | ||
diff --git a/flakes/private/buildbot/common/libvirt.py b/flakes/private/buildbot/common/libvirt.py new file mode 100644 index 0000000..e250627 --- /dev/null +++ b/flakes/private/buildbot/common/libvirt.py | |||
@@ -0,0 +1,318 @@ | |||
1 | # This file was part of Buildbot. Buildbot is free software: you can | ||
2 | # redistribute it and/or modify it under the terms of the GNU General Public | ||
3 | # License as published by the Free Software Foundation, version 2. | ||
4 | # | ||
5 | # This program is distributed in the hope that it will be useful, but WITHOUT | ||
6 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
7 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
8 | # details. | ||
9 | # | ||
10 | # You should have received a copy of the GNU General Public License along with | ||
11 | # this program; if not, write to the Free Software Foundation, Inc., 51 | ||
12 | # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
13 | # | ||
14 | # Portions Copyright Buildbot Team Members | ||
15 | # Portions Copyright 2010 Isotoma Limited | ||
16 | |||
17 | |||
18 | import os | ||
19 | |||
20 | from twisted.internet import defer | ||
21 | from twisted.internet import threads | ||
22 | from twisted.internet import utils | ||
23 | from twisted.python import failure | ||
24 | from twisted.python import log | ||
25 | |||
26 | from buildbot import config | ||
27 | from buildbot.util.eventual import eventually | ||
28 | from buildbot.worker import AbstractLatentWorker | ||
29 | |||
30 | try: | ||
31 | import libvirt | ||
32 | except ImportError: | ||
33 | libvirt = None | ||
34 | |||
35 | import random | ||
36 | import string | ||
37 | |||
38 | def random_string_generator(): | ||
39 | chars = string.ascii_letters | ||
40 | return ''.join(random.choice(chars) for x in range(6)) | ||
41 | |||
42 | class WorkQueue: | ||
43 | |||
44 | """ | ||
45 | I am a class that turns parallel access into serial access. | ||
46 | |||
47 | I exist because we want to run libvirt access in threads as we don't | ||
48 | trust calls not to block, but under load libvirt doesn't seem to like | ||
49 | this kind of threaded use. | ||
50 | """ | ||
51 | |||
52 | def __init__(self): | ||
53 | self.queue = [] | ||
54 | |||
55 | def _process(self): | ||
56 | log.msg("Looking to start a piece of work now...") | ||
57 | |||
58 | # Is there anything to do? | ||
59 | if not self.queue: | ||
60 | log.msg("_process called when there is no work") | ||
61 | return | ||
62 | |||
63 | # Peek at the top of the stack - get a function to call and | ||
64 | # a deferred to fire when its all over | ||
65 | d, next_operation, args, kwargs = self.queue[0] | ||
66 | |||
67 | # Start doing some work - expects a deferred | ||
68 | try: | ||
69 | d2 = next_operation(*args, **kwargs) | ||
70 | except Exception: | ||
71 | d2 = defer.fail() | ||
72 | |||
73 | # Whenever a piece of work is done, whether it worked or not | ||
74 | # call this to schedule the next piece of work | ||
75 | @d2.addBoth | ||
76 | def _work_done(res): | ||
77 | log.msg("Completed a piece of work") | ||
78 | self.queue.pop(0) | ||
79 | if self.queue: | ||
80 | log.msg("Preparing next piece of work") | ||
81 | eventually(self._process) | ||
82 | return res | ||
83 | |||
84 | # When the work is done, trigger d | ||
85 | d2.chainDeferred(d) | ||
86 | |||
87 | def execute(self, cb, *args, **kwargs): | ||
88 | kickstart_processing = not self.queue | ||
89 | d = defer.Deferred() | ||
90 | self.queue.append((d, cb, args, kwargs)) | ||
91 | if kickstart_processing: | ||
92 | self._process() | ||
93 | return d | ||
94 | |||
95 | def executeInThread(self, cb, *args, **kwargs): | ||
96 | return self.execute(threads.deferToThread, cb, *args, **kwargs) | ||
97 | |||
98 | |||
99 | # A module is effectively a singleton class, so this is OK | ||
100 | queue = WorkQueue() | ||
101 | |||
102 | |||
103 | class Domain: | ||
104 | |||
105 | """ | ||
106 | I am a wrapper around a libvirt Domain object | ||
107 | """ | ||
108 | |||
109 | def __init__(self, connection, domain): | ||
110 | self.connection = connection | ||
111 | self.domain = domain | ||
112 | |||
113 | def name(self): | ||
114 | return queue.executeInThread(self.domain.name) | ||
115 | |||
116 | def create(self): | ||
117 | return queue.executeInThread(self.domain.create) | ||
118 | |||
119 | def shutdown(self): | ||
120 | return queue.executeInThread(self.domain.shutdown) | ||
121 | |||
122 | def destroy(self): | ||
123 | return queue.executeInThread(self.domain.destroy) | ||
124 | |||
125 | class Volume: | ||
126 | def __init__(self, connection, volume): | ||
127 | self.connection = connection | ||
128 | self.volume = volume | ||
129 | |||
130 | @defer.inlineCallbacks | ||
131 | def destroy(self): | ||
132 | yield queue.executeInThread(self.volume.wipe) | ||
133 | yield queue.executeInThread(self.volume.delete) | ||
134 | |||
135 | class Pool: | ||
136 | VolumeClass = Volume | ||
137 | def __init__(self, connection, pool): | ||
138 | self.connection = connection | ||
139 | self.pool = pool | ||
140 | |||
141 | @defer.inlineCallbacks | ||
142 | def create_volume(self, xml): | ||
143 | res = yield queue.executeInThread(self.pool.createXML, xml) | ||
144 | return self.VolumeClass(self.connection, res) | ||
145 | |||
146 | class Connection: | ||
147 | |||
148 | """ | ||
149 | I am a wrapper around a libvirt Connection object. | ||
150 | """ | ||
151 | |||
152 | DomainClass = Domain | ||
153 | PoolClass = Pool | ||
154 | |||
155 | def __init__(self, uri): | ||
156 | self.uri = uri | ||
157 | self._connection = None | ||
158 | |||
159 | @property | ||
160 | def connection(self): | ||
161 | if self._connection is not None: | ||
162 | try: | ||
163 | if not self._connection.isAlive(): | ||
164 | self._connection = None | ||
165 | except: | ||
166 | self._connection = None | ||
167 | if self._connection is None: | ||
168 | self._connection = libvirt.open(self.uri) | ||
169 | return self._connection | ||
170 | |||
171 | @defer.inlineCallbacks | ||
172 | def create(self, xml): | ||
173 | """ I take libvirt XML and start a new VM """ | ||
174 | res = yield queue.executeInThread(self.connection.createXML, xml, 0) | ||
175 | return self.DomainClass(self, res) | ||
176 | |||
177 | @defer.inlineCallbacks | ||
178 | def lookup_pool(self, name): | ||
179 | res = yield queue.executeInThread(self.connection.storagePoolLookupByName, name) | ||
180 | return self.PoolClass(self, res) | ||
181 | |||
182 | class LibVirtWorker(AbstractLatentWorker): | ||
183 | |||
184 | def __init__(self, name, password, connection, master_url, base_image=None, **kwargs): | ||
185 | super().__init__(name, password, **kwargs) | ||
186 | if not libvirt: | ||
187 | config.error( | ||
188 | "The python module 'libvirt' is needed to use a LibVirtWorker") | ||
189 | |||
190 | self.master_url = master_url | ||
191 | self.random_name = random_string_generator() | ||
192 | self.connection = connection | ||
193 | self.base_image = base_image | ||
194 | |||
195 | self.domain = None | ||
196 | self.domain_name = "buildbot-" + self.workername + "-" + self.random_name | ||
197 | self.volume = None | ||
198 | self.volume_name = "buildbot-" + self.workername + "-" + self.random_name | ||
199 | self.pool_name = "buildbot-disks" | ||
200 | |||
201 | def reconfigService(self, *args, **kwargs): | ||
202 | if 'build_wait_timeout' not in kwargs: | ||
203 | kwargs['build_wait_timeout'] = 0 | ||
204 | return super().reconfigService(*args, **kwargs) | ||
205 | |||
206 | def canStartBuild(self): | ||
207 | if self.domain and not self.isConnected(): | ||
208 | log.msg( | ||
209 | "Not accepting builds as existing domain but worker not connected") | ||
210 | return False | ||
211 | |||
212 | return super().canStartBuild() | ||
213 | |||
214 | @defer.inlineCallbacks | ||
215 | def _prepare_image(self): | ||
216 | log.msg("Creating temporary image {}".format(self.volume_name)) | ||
217 | pool = yield self.connection.lookup_pool(self.pool_name) | ||
218 | vol_xml = """ | ||
219 | <volume type='file'> | ||
220 | <name>{vol_name}</name> | ||
221 | <capacity unit='G'>10</capacity> | ||
222 | <target> | ||
223 | <format type='qcow2'/> | ||
224 | <permissions> | ||
225 | <mode>0600</mode> | ||
226 | <owner>0</owner> | ||
227 | <group>0</group> | ||
228 | </permissions> | ||
229 | </target> | ||
230 | <backingStore> | ||
231 | <path>/etc/libvirtd/base-images/buildbot.qcow2</path> | ||
232 | <format type='qcow2'/> | ||
233 | </backingStore> | ||
234 | </volume> | ||
235 | """.format(vol_name = self.volume_name) | ||
236 | self.volume = yield pool.create_volume(vol_xml) | ||
237 | |||
238 | @defer.inlineCallbacks | ||
239 | def start_instance(self, build): | ||
240 | """ | ||
241 | I start a new instance of a VM. | ||
242 | |||
243 | If a base_image is specified, I will make a clone of that otherwise i will | ||
244 | use image directly. | ||
245 | |||
246 | If i'm not given libvirt domain definition XML, I will look for my name | ||
247 | in the list of defined virtual machines and start that. | ||
248 | """ | ||
249 | domain_xml = """ | ||
250 | <domain type="kvm"> | ||
251 | <name>{domain_name}</name> | ||
252 | <memory unit="GiB">2</memory> | ||
253 | <vcpu>1</vcpu> | ||
254 | <sysinfo type='smbios'> | ||
255 | <oemStrings> | ||
256 | <entry>buildbot_master_url={master_url}</entry> | ||
257 | <entry>buildbot_worker_name={worker_name}</entry> | ||
258 | </oemStrings> | ||
259 | </sysinfo> | ||
260 | <os> | ||
261 | <type arch="x86_64">hvm</type> | ||
262 | <smbios mode='sysinfo'/> | ||
263 | </os> | ||
264 | <devices> | ||
265 | <emulator>/run/current-system/sw/bin/qemu-system-x86_64</emulator> | ||
266 | <disk type="volume" device="disk"> | ||
267 | <driver name='qemu' type='qcow2' /> | ||
268 | <source type="volume" pool="{pool_name}" volume="{volume_name}" /> | ||
269 | <backingStore type='volume'> | ||
270 | <format type='qcow2'/> | ||
271 | <source type="volume" pool="niximages" volume="buildbot.qcow2" /> | ||
272 | </backingStore> | ||
273 | <target dev="vda" bus="virtio"/> | ||
274 | </disk> | ||
275 | <input type="keyboard" bus="usb"/> | ||
276 | <graphics type="vnc" port="-1" autoport="yes"/> | ||
277 | <interface type="network"> | ||
278 | <source network="immae" /> | ||
279 | </interface> | ||
280 | </devices> | ||
281 | </domain> | ||
282 | """.format(volume_name = self.volume_name, master_url = self.master_url, pool_name = | ||
283 | self.pool_name, domain_name = self.domain_name, worker_name = self.workername) | ||
284 | |||
285 | yield self._prepare_image() | ||
286 | |||
287 | try: | ||
288 | self.domain = yield self.connection.create(domain_xml) | ||
289 | except Exception: | ||
290 | log.err(failure.Failure(), | ||
291 | ("Cannot start a VM ({}), failing gracefully and triggering" | ||
292 | "a new build check").format(self.workername)) | ||
293 | self.domain = None | ||
294 | return False | ||
295 | |||
296 | return [self.domain_name] | ||
297 | |||
298 | def stop_instance(self, fast=False): | ||
299 | """ | ||
300 | I attempt to stop a running VM. | ||
301 | I make sure any connection to the worker is removed. | ||
302 | If the VM was using a cloned image, I remove the clone | ||
303 | When everything is tidied up, I ask that bbot looks for work to do | ||
304 | """ | ||
305 | |||
306 | log.msg("Attempting to stop '{}'".format(self.workername)) | ||
307 | if self.domain is None: | ||
308 | log.msg("I don't think that domain is even running, aborting") | ||
309 | return defer.succeed(None) | ||
310 | |||
311 | domain = self.domain | ||
312 | self.domain = None | ||
313 | |||
314 | d = domain.destroy() | ||
315 | if self.volume is not None: | ||
316 | self.volume.destroy() | ||
317 | |||
318 | return d | ||
diff --git a/flakes/private/buildbot/common/master.cfg b/flakes/private/buildbot/common/master.cfg new file mode 100644 index 0000000..0357f2a --- /dev/null +++ b/flakes/private/buildbot/common/master.cfg | |||
@@ -0,0 +1,93 @@ | |||
1 | # -*- python -*- | ||
2 | # ex: set filetype=python: | ||
3 | |||
4 | from buildbot.plugins import secrets, util, webhooks | ||
5 | from buildbot.util import bytes2unicode | ||
6 | import re | ||
7 | import os | ||
8 | from buildbot_config import E, configure | ||
9 | import json | ||
10 | |||
11 | class CustomBase(webhooks.base): | ||
12 | def getChanges(self, request): | ||
13 | try: | ||
14 | content = request.content.read() | ||
15 | args = json.loads(bytes2unicode(content)) | ||
16 | except Exception as e: | ||
17 | raise ValueError("Error loading JSON: " + str(e)) | ||
18 | |||
19 | args.setdefault("comments", "") | ||
20 | args.setdefault("repository", "") | ||
21 | args.setdefault("author", args.get("who")) | ||
22 | |||
23 | return ([args], None) | ||
24 | |||
25 | class GitoliteHook(webhooks.base): | ||
26 | def getChanges(self, request): | ||
27 | try: | ||
28 | branch = request.args[b"branch"][0].decode("utf-8") | ||
29 | project = request.args[b"project"][0].decode("utf-8") | ||
30 | repository = request.args[b"repository"][0].decode("utf-8") | ||
31 | author = request.args[b"author"][0].decode("utf-8") | ||
32 | except Exception as e: | ||
33 | raise ValueError("Error missing key in request: " + str(e)) | ||
34 | |||
35 | args = { | ||
36 | "author": "gitolite for " + author, | ||
37 | "category": "gitolite-hooks", | ||
38 | "comments": "gitolite post-receive hook", | ||
39 | "branch": branch, | ||
40 | "project": project, | ||
41 | "repository": repository, | ||
42 | } | ||
43 | |||
44 | return ([args], None) | ||
45 | |||
46 | userInfoProvider = util.LdapUserInfo( | ||
47 | uri=E.LDAP_URL, | ||
48 | bindUser=E.LDAP_ADMIN_USER, | ||
49 | bindPw=open(E.SECRETS_FILE + "/ldap", "r").read().rstrip(), | ||
50 | accountBase=E.LDAP_BASE, | ||
51 | accountPattern=E.LDAP_PATTERN, | ||
52 | accountFullName='cn', | ||
53 | accountEmail='mail', | ||
54 | avatarData="jpegPhoto", | ||
55 | groupBase=E.LDAP_BASE, | ||
56 | groupName="cn", | ||
57 | groupMemberPattern=E.LDAP_GROUP_PATTERN, | ||
58 | ) | ||
59 | |||
60 | c = BuildmasterConfig = { | ||
61 | "title": E.TITLE, | ||
62 | "titleURL": E.TITLE_URL, | ||
63 | "db": { | ||
64 | "db_url": "sqlite:///state.sqlite" | ||
65 | }, | ||
66 | "protocols": { "pb": { "port": E.PB_SOCKET } }, | ||
67 | "workers": [], | ||
68 | "change_source": [], | ||
69 | "schedulers": [], | ||
70 | "builders": [], | ||
71 | "services": [], | ||
72 | "secretsProviders": [ | ||
73 | secrets.SecretInAFile(E.SECRETS_FILE), | ||
74 | ], | ||
75 | "www": { | ||
76 | "change_hook_dialects": { | ||
77 | "base": { "custom_class": CustomBase }, | ||
78 | "gitolite": { "custom_class": GitoliteHook }, | ||
79 | }, | ||
80 | "plugins": { | ||
81 | "waterfall_view": {}, | ||
82 | "console_view": {}, | ||
83 | "grid_view": {}, | ||
84 | "buildslist": {}, | ||
85 | }, | ||
86 | "auth": util.RemoteUserAuth( | ||
87 | header=b"X-Remote-User", | ||
88 | userInfoProvider=userInfoProvider, | ||
89 | headerRegex=re.compile(br"(?P<username>[^ @]+)")), | ||
90 | } | ||
91 | } | ||
92 | |||
93 | configure(c) | ||
diff --git a/flakes/private/buildbot/flake.lock b/flakes/private/buildbot/flake.lock new file mode 100644 index 0000000..8952f75 --- /dev/null +++ b/flakes/private/buildbot/flake.lock | |||
@@ -0,0 +1,61 @@ | |||
1 | { | ||
2 | "nodes": { | ||
3 | "buildslist": { | ||
4 | "flake": false, | ||
5 | "locked": { | ||
6 | "lastModified": 1585697026, | ||
7 | "narHash": "sha256-7CO89q6Bmg59eN5tFGYaqJR/rpJrLu7dpulXgJUv/0E=", | ||
8 | "ref": "master", | ||
9 | "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0", | ||
10 | "revCount": 4, | ||
11 | "type": "git", | ||
12 | "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist" | ||
13 | }, | ||
14 | "original": { | ||
15 | "type": "git", | ||
16 | "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist" | ||
17 | } | ||
18 | }, | ||
19 | "flake-utils": { | ||
20 | "locked": { | ||
21 | "lastModified": 1648297722, | ||
22 | "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=", | ||
23 | "owner": "numtide", | ||
24 | "repo": "flake-utils", | ||
25 | "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade", | ||
26 | "type": "github" | ||
27 | }, | ||
28 | "original": { | ||
29 | "owner": "numtide", | ||
30 | "repo": "flake-utils", | ||
31 | "type": "github" | ||
32 | } | ||
33 | }, | ||
34 | "nixpkgs": { | ||
35 | "flake": false, | ||
36 | "locked": { | ||
37 | "lastModified": 1596265691, | ||
38 | "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=", | ||
39 | "owner": "NixOS", | ||
40 | "repo": "nixpkgs", | ||
41 | "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742", | ||
42 | "type": "github" | ||
43 | }, | ||
44 | "original": { | ||
45 | "owner": "NixOS", | ||
46 | "repo": "nixpkgs", | ||
47 | "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742", | ||
48 | "type": "github" | ||
49 | } | ||
50 | }, | ||
51 | "root": { | ||
52 | "inputs": { | ||
53 | "buildslist": "buildslist", | ||
54 | "flake-utils": "flake-utils", | ||
55 | "nixpkgs": "nixpkgs" | ||
56 | } | ||
57 | } | ||
58 | }, | ||
59 | "root": "root", | ||
60 | "version": 7 | ||
61 | } | ||
diff --git a/flakes/private/buildbot/flake.nix b/flakes/private/buildbot/flake.nix new file mode 100644 index 0000000..8b3c704 --- /dev/null +++ b/flakes/private/buildbot/flake.nix | |||
@@ -0,0 +1,74 @@ | |||
1 | { | ||
2 | description = "The continuous integration framework"; | ||
3 | inputs.flake-utils.url = "github:numtide/flake-utils"; | ||
4 | inputs.nixpkgs = { | ||
5 | url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742"; | ||
6 | flake = false; | ||
7 | }; | ||
8 | inputs.buildslist = { | ||
9 | url = "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"; | ||
10 | type = "git"; | ||
11 | flake = false; | ||
12 | }; | ||
13 | outputs = { self, nixpkgs, flake-utils, buildslist }: flake-utils.lib.eachSystem ["x86_64-linux"] (system: | ||
14 | let | ||
15 | pkgs = import nixpkgs { inherit system; overlays = []; }; | ||
16 | python = pkgs.python38; | ||
17 | wokkel = python.pkgs.buildPythonPackage rec { | ||
18 | pname = "wokkel"; | ||
19 | version = "18.0.0"; | ||
20 | src = python.pkgs.fetchPypi { | ||
21 | inherit pname version; | ||
22 | sha256 = "1spq44gg8gsviqx1dvlmjpgfc0wk0jpyx4ap01y2pad1ai9cw016"; | ||
23 | }; | ||
24 | propagatedBuildInputs = with python.pkgs; [ twisted.extras.tls twisted incremental dateutil ]; | ||
25 | doCheck = false; | ||
26 | }; | ||
27 | buildbot_common = python.pkgs.buildPythonPackage { | ||
28 | name = "buildbot_common"; | ||
29 | src = ./common; | ||
30 | format = "other"; | ||
31 | installPhase = '' | ||
32 | mkdir -p $out/${python.sitePackages} | ||
33 | cp -a $src $out/${python.sitePackages}/buildbot_common | ||
34 | ''; | ||
35 | }; | ||
36 | buildbot-full = python.pkgs.buildbot-full.withPlugins [ buildslist-plugin ] // { | ||
37 | inherit buildbot_common; | ||
38 | buildbot_config = project: python.pkgs.buildPythonPackage (rec { | ||
39 | name = "buildbot_config-${project.name}"; | ||
40 | src = if project.name == "test" then ./test_project else project.src; | ||
41 | format = "other"; | ||
42 | installPhase = '' | ||
43 | mkdir -p $out/${python.sitePackages} | ||
44 | cp -a $src $out/${python.sitePackages}/buildbot_config | ||
45 | ''; | ||
46 | }); | ||
47 | common_packages = pkgs: [ | ||
48 | (pkgs.apprise.overridePythonAttrs(old: { propagatedBuildInputs = old.propagatedBuildInputs ++ [ pkgs.sleekxmpp ]; })) pkgs.libvirt pkgs.treq pkgs.ldap3 | ||
49 | buildbot-full pkgs.buildbot-worker pkgs.pip buildbot_common | ||
50 | wokkel | ||
51 | ]; | ||
52 | }; | ||
53 | buildslist-plugin = pkgs.callPackage ./buildslist { | ||
54 | pythonPackages = python.pkgs; | ||
55 | buildslist_src = buildslist; | ||
56 | }; | ||
57 | in rec { | ||
58 | packages = { | ||
59 | buildslist = buildslist-plugin; | ||
60 | buildbot-full = buildbot-full; | ||
61 | buildbot_common = buildbot_common; | ||
62 | }; | ||
63 | defaultPackage = packages.buildbot-full; | ||
64 | legacyPackages = packages; | ||
65 | checks = packages; | ||
66 | }) // rec { | ||
67 | overlays = { | ||
68 | immae-buildbot = final: prev: { | ||
69 | immae-buildbot = self.defaultPackage."${final.system}"; | ||
70 | }; | ||
71 | }; | ||
72 | overlay = overlays.immae-buildbot; | ||
73 | }; | ||
74 | } | ||
diff --git a/flakes/private/buildbot/test_project/__init__.py b/flakes/private/buildbot/test_project/__init__.py new file mode 100644 index 0000000..d5893fd --- /dev/null +++ b/flakes/private/buildbot/test_project/__init__.py | |||
@@ -0,0 +1,121 @@ | |||
1 | from buildbot.plugins import * | ||
2 | from buildbot_common.build_helpers import * | ||
3 | import buildbot_common.libvirt as ilibvirt | ||
4 | import os | ||
5 | from buildbot.util import bytes2unicode | ||
6 | import json | ||
7 | |||
8 | __all__ = [ "configure", "E" ] | ||
9 | |||
10 | class E(): | ||
11 | PROJECT = "test" | ||
12 | BUILDBOT_URL = "https://git.immae.eu/buildbot/{}/".format(PROJECT) | ||
13 | SOCKET = "unix:/run/buildbot/{}.sock".format(PROJECT) | ||
14 | PB_SOCKET = os.environ["BUILDBOT_WORKER_PORT"] | ||
15 | WORKER_HOST = "{}:{}".format(os.environ["BUILDBOT_HOST"], PB_SOCKET) | ||
16 | RELEASE_PATH = "/var/lib/ftp/release.immae.eu/{}".format(PROJECT) | ||
17 | RELEASE_URL = "https://release.immae.eu/{}".format(PROJECT) | ||
18 | GIT_URL = "https://git.immae.eu/perso/Immae/TestProject.git" | ||
19 | SSH_KEY_PATH = "/var/lib/buildbot/buildbot_key" | ||
20 | LIBVIRT_URL = os.environ["BUILDBOT_VIRT_URL"] + "?keyfile=" + SSH_KEY_PATH | ||
21 | XMPP_RECIPIENTS = os.environ["BUILDBOT_XMPP_RECIPIENTS"].split(" ") | ||
22 | |||
23 | # master.cfg | ||
24 | SECRETS_FILE = os.getcwd() + "/secrets" | ||
25 | LDAP_URL = "ldaps://ldap.immae.eu:636" | ||
26 | LDAP_ADMIN_USER = "cn=buildbot,ou=services,dc=immae,dc=eu" | ||
27 | LDAP_BASE = "dc=immae,dc=eu" | ||
28 | LDAP_PATTERN = "(uid=%(username)s)" | ||
29 | LDAP_GROUP_PATTERN = "(&(memberOf=cn=groups,ou=test,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))" | ||
30 | TITLE_URL = "https://git.immae.eu/?p=perso/Immae/TestProject.git;a=summary" | ||
31 | TITLE = "Test project" | ||
32 | |||
33 | class CustomBase(webhooks.base): | ||
34 | def getChanges(self, request): | ||
35 | try: | ||
36 | content = request.content.read() | ||
37 | args = json.loads(bytes2unicode(content)) | ||
38 | except Exception as e: | ||
39 | raise ValueError("Error loading JSON: " + str(e)) | ||
40 | |||
41 | args.setdefault("comments", "") | ||
42 | args.setdefault("repository", "") | ||
43 | args.setdefault("author", args.get("who", "unknown")) | ||
44 | |||
45 | if args["category"] == "deploy_webhook": | ||
46 | args = { | ||
47 | "category": "deploy_webhook", | ||
48 | "comments": "", | ||
49 | "repository": "", | ||
50 | "author": "unknown", | ||
51 | "project": "TestProject", | ||
52 | "properties": { | ||
53 | "environment": args.get("environment", "integration"), | ||
54 | "build": "test_{}.tar.gz".format(args.get("branch", "master")) | ||
55 | } | ||
56 | } | ||
57 | |||
58 | return ([args], None) | ||
59 | |||
60 | def configure(c): | ||
61 | c["buildbotURL"] = E.BUILDBOT_URL | ||
62 | c["www"]["port"] = E.SOCKET | ||
63 | |||
64 | c["www"]["change_hook_dialects"]["base"] = { "custom_class": CustomBase } | ||
65 | |||
66 | configure_build(c) | ||
67 | configure_deploy(c) | ||
68 | |||
69 | configure_apprise_push(c, E.SECRETS_FILE, all_builder_names(c)) | ||
70 | configure_xmpp_push(c, E.SECRETS_FILE, all_builder_names(c), E.XMPP_RECIPIENTS) | ||
71 | |||
72 | def configure_build(c): | ||
73 | builder_name = "TestProject_build" | ||
74 | worker_name = "test-build" | ||
75 | c['schedulers'].append(force_scheduler("force_test", [builder_name])) | ||
76 | c['schedulers'].append(git_hook_scheduler("TestProject", [builder_name])) | ||
77 | c['workers'].append(libvirt_worker(worker_name)) | ||
78 | c['builders'].append(util.BuilderConfig(name=builder_name, workernames=[worker_name], factory=build_factory())) | ||
79 | |||
80 | def configure_deploy(c): | ||
81 | builder_name = "TestProject_deploy" | ||
82 | worker_name = "test-deploy" | ||
83 | c['workers'].append(libvirt_worker(worker_name)) | ||
84 | c['schedulers'].append(deploy_hook_scheduler("TestProject", [builder_name])) | ||
85 | c['schedulers'].append(deploy_scheduler("deploy_test", [builder_name])) | ||
86 | c['builders'].append(util.BuilderConfig(name=builder_name, workernames=[worker_name], factory=deploy_factory())) | ||
87 | |||
88 | def libvirt_worker(name): | ||
89 | return ilibvirt.LibVirtWorker(name, | ||
90 | open(E.SECRETS_FILE + "/worker_password", "r").read().rstrip(), | ||
91 | ilibvirt.Connection(E.LIBVIRT_URL), | ||
92 | E.WORKER_HOST) | ||
93 | |||
94 | def build_factory(): | ||
95 | package = util.Interpolate("test_%(kw:clean_branch)s.tar.gz", clean_branch=clean_branch) | ||
96 | package_dest = util.Interpolate("{}/test_%(kw:clean_branch)s.tar.gz".format(E.RELEASE_PATH), clean_branch=clean_branch) | ||
97 | package_url = util.Interpolate("{}/test_%(kw:clean_branch)s.tar.gz".format(E.RELEASE_URL), clean_branch=clean_branch) | ||
98 | |||
99 | factory = util.BuildFactory() | ||
100 | factory.addStep(steps.Git(logEnviron=False, | ||
101 | repourl=E.GIT_URL, mode="full", method="fresh")) | ||
102 | factory.addStep(steps.ShellCommand(name="env", | ||
103 | logEnviron=False, command=["env"])) | ||
104 | factory.addStep(steps.ShellCommand(name="pwd", | ||
105 | logEnviron=False, command=["pwd"])) | ||
106 | factory.addStep(steps.ShellCommand(name="true", | ||
107 | logEnviron=False, command=["true"])) | ||
108 | factory.addStep(steps.ShellCommand(name="echo", | ||
109 | logEnviron=False, command=["echo", package])) | ||
110 | factory.addSteps(package_and_upload(package, package_dest, package_url)) | ||
111 | |||
112 | return factory | ||
113 | |||
114 | def deploy_factory(): | ||
115 | package_dest = util.Interpolate("{}/%(prop:build)s".format(E.RELEASE_PATH)) | ||
116 | |||
117 | factory = util.BuildFactory() | ||
118 | factory.addStep(steps.MasterShellCommand(command=["test", "-f", package_dest])) | ||
119 | factory.addStep(steps.SetProperties(properties=compute_build_infos("test", E.RELEASE_PATH))) | ||
120 | factory.addStep(steps.MasterShellCommand(command=deploy_ssh_command(E.SSH_KEY_PATH, {}))) | ||
121 | return factory | ||
diff --git a/flakes/private/chatons/flake.lock b/flakes/private/chatons/flake.lock new file mode 100644 index 0000000..39ed484 --- /dev/null +++ b/flakes/private/chatons/flake.lock | |||
@@ -0,0 +1,23 @@ | |||
1 | { | ||
2 | "nodes": { | ||
3 | "environment": { | ||
4 | "locked": { | ||
5 | "lastModified": 1, | ||
6 | "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=", | ||
7 | "path": "../environment", | ||
8 | "type": "path" | ||
9 | }, | ||
10 | "original": { | ||
11 | "path": "../environment", | ||
12 | "type": "path" | ||
13 | } | ||
14 | }, | ||
15 | "root": { | ||
16 | "inputs": { | ||
17 | "environment": "environment" | ||
18 | } | ||
19 | } | ||
20 | }, | ||
21 | "root": "root", | ||
22 | "version": 7 | ||
23 | } | ||
diff --git a/flakes/private/chatons/flake.nix b/flakes/private/chatons/flake.nix new file mode 100644 index 0000000..70fb02d --- /dev/null +++ b/flakes/private/chatons/flake.nix | |||
@@ -0,0 +1,142 @@ | |||
1 | { | ||
2 | inputs.environment.url = "path:../environment"; | ||
3 | outputs = { self, environment }: { | ||
4 | nixosModule = self.nixosModules.chatons; | ||
5 | nixosModules.chatons = { config, lib, pkgs, nodes, ... }: | ||
6 | let | ||
7 | concatValue = value: if lib.isList value then builtins.concatStringsSep "," value else builtins.toString value; | ||
8 | toProperties = properties: builtins.concatStringsSep "\n" ( | ||
9 | lib.collect | ||
10 | (p: !(lib.isAttrs p)) | ||
11 | (lib.mapAttrsRecursive | ||
12 | (path: value: builtins.concatStringsSep "." (builtins.filter (f: f != "") path) + " = " + (concatValue value)) | ||
13 | properties)); | ||
14 | before = name: { | ||
15 | "${name}" = { | ||
16 | status.level = "OK"; | ||
17 | status.description = "OK"; | ||
18 | install.type = "PACKAGE"; | ||
19 | registration.load = "OPEN"; | ||
20 | }; | ||
21 | host = { | ||
22 | name = "Hetzner"; | ||
23 | server.type = "PHYSICAL"; | ||
24 | provider.type = "HOSTEDSERVER"; | ||
25 | server.distribution = "NixOS"; | ||
26 | country.name = "Allemagne"; | ||
27 | country.code = "DE"; | ||
28 | }; | ||
29 | }; | ||
30 | after = name: { | ||
31 | file = { | ||
32 | class = name; | ||
33 | protocol = "ChatonsInfos-0.5"; | ||
34 | generator = "Nix derivation"; | ||
35 | }; | ||
36 | "${name}" = { | ||
37 | legal.url = "https://www.immae.eu/mentions.html"; | ||
38 | guide.technical = "https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/"; | ||
39 | contact.url = "https://www.immae.eu/contacts_fr.html"; | ||
40 | contact.email = config.myEnv.tools.contact; | ||
41 | startdate = "01/01/2019"; | ||
42 | }; | ||
43 | }; | ||
44 | organization = { | ||
45 | file = { | ||
46 | class = "organization"; | ||
47 | protocol = "ChatonsInfos-0.5"; | ||
48 | datetime = "2021-01-11T22:23:00"; | ||
49 | generator = "Nix derivation"; | ||
50 | }; | ||
51 | organization = { | ||
52 | country.name = "France"; | ||
53 | country.code = "FR"; | ||
54 | name = "ImmaeEu"; | ||
55 | description = "ImmaeEu est un CHATONS des Alpes-Maritimes"; | ||
56 | website = "https://www.immae.eu"; | ||
57 | logo = "https://assets.immae.eu/logo.jpg"; | ||
58 | socialnetworks = { | ||
59 | diaspora = "https://diaspora.immae.eu/people/1a185f29cc76cb35"; | ||
60 | facebook = "https://www.facebook.com/ismael.bouya"; | ||
61 | mastodon = "https://mastodon.immae.eu/@immae"; | ||
62 | peertube = "https://peertube.immae.eu/accounts/immae/"; | ||
63 | twitter = "https://twitter.com/_immae"; | ||
64 | }; | ||
65 | chatrooms = { | ||
66 | xmpp = "ismael@immae.fr"; | ||
67 | irc = "immae@freenode"; | ||
68 | matrix = "#support:immae.eu"; | ||
69 | }; | ||
70 | contact.url = "https://www.immae.eu/contacts_fr.html"; | ||
71 | contact.email = config.myEnv.tools.contact; | ||
72 | legal.url = "https://www.immae.eu/mentions.html"; | ||
73 | guide.technical = "https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/"; | ||
74 | guide.user = "https://www.immae.eu/docs"; | ||
75 | status.level = "ACTIVE"; | ||
76 | status.description = "En activité"; | ||
77 | startdate = "01/01/2019"; | ||
78 | type = "COMPANY"; | ||
79 | owner = { | ||
80 | logo = "https://assets.immae.eu/logo.jpg"; | ||
81 | name = "Ismaël Bouya"; | ||
82 | website = "https://www.immae.eu"; | ||
83 | }; | ||
84 | memberof.chatons = { | ||
85 | startdate = "01/07/2019"; | ||
86 | status.level = "ACTIVE"; | ||
87 | status.description = "Participe au collectif"; | ||
88 | }; | ||
89 | }; | ||
90 | }; | ||
91 | subname = v: if v.published or true then "subs" else "subs-hidden"; | ||
92 | toOrganizationProperties = name: pkgs.writeText name (toProperties organization + "\n" + ( | ||
93 | builtins.concatStringsSep "\n" (lib.mapAttrsToList | ||
94 | (n: v: "${subname v}.${n} = https://www.immae.eu/.well-known/chatonsinfos/service-${n}.properties") mergedServices | ||
95 | )) + "\n" + ( | ||
96 | builtins.concatStringsSep "\n" (lib.mapAttrsToList | ||
97 | (n: v: "subs.hosting-${n} = https://www.immae.eu/.well-known/chatonsinfos/hosting-${n}.properties") mergedHostings | ||
98 | ))); | ||
99 | toHostingProperties = name: content: pkgs.writeText name (toProperties (lib.recursiveUpdate (before "hosting") (lib.recursiveUpdate content (after "hosting")))); | ||
100 | toServiceProperties = name: content: pkgs.writeText name (toProperties (lib.recursiveUpdate (before "service") (lib.recursiveUpdate content (after "service")))); | ||
101 | |||
102 | cfg = config.myServices.chatonsProperties; | ||
103 | mergedServices = lib.foldr (v: o: lib.recursiveUpdate o v) {} (lib.mapAttrsToList (k: v: if (v.config.myServices or {}) ? "chatonsProperties" then v.config.myServices.chatonsProperties.services else {}) nodes); | ||
104 | mergedHostings = lib.foldr (v: o: lib.recursiveUpdate o v) {} (lib.mapAttrsToList (k: v: if (v.config.myServices or {}) ? "chatonsProperties" then v.config.myServices.chatonsProperties.hostings else {}) nodes); | ||
105 | in { | ||
106 | imports = [ | ||
107 | environment.nixosModule | ||
108 | ]; | ||
109 | options.myServices.chatonsProperties.organization = lib.mkOption { | ||
110 | type = lib.types.attrsOf lib.types.unspecified; | ||
111 | default = {}; | ||
112 | description = '' | ||
113 | nested attrs of strings or arrays of strings | ||
114 | ''; | ||
115 | }; | ||
116 | options.myServices.chatonsProperties.services = lib.mkOption { | ||
117 | type = lib.types.attrsOf lib.types.unspecified; | ||
118 | default = {}; | ||
119 | description = '' | ||
120 | nested attrs of strings or arrays of strings | ||
121 | ''; | ||
122 | }; | ||
123 | options.myServices.chatonsProperties.hostings = lib.mkOption { | ||
124 | type = lib.types.attrsOf lib.types.unspecified; | ||
125 | default = {}; | ||
126 | description = '' | ||
127 | nested attrs of strings or arrays of strings | ||
128 | ''; | ||
129 | }; | ||
130 | options.myServices.chatonsProperties.propertiesPath = lib.mkOption { | ||
131 | type = lib.types.package; | ||
132 | readOnly = true; | ||
133 | default = pkgs.runCommand "chatons" {} '' | ||
134 | mkdir -p $out | ||
135 | cp ${toOrganizationProperties "immae-eu"} $out/immae-eu.properties | ||
136 | ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (n: c: "cp ${toHostingProperties n c} $out/hosting-${n}.properties") mergedHostings)} | ||
137 | ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (n: c: "cp ${toServiceProperties n c} $out/service-${n}.properties") mergedServices)} | ||
138 | ''; | ||
139 | }; | ||
140 | }; | ||
141 | }; | ||
142 | } | ||
diff --git a/flakes/private/environment-dummy/flake.nix b/flakes/private/environment-dummy/flake.nix new file mode 100644 index 0000000..5ebc27f --- /dev/null +++ b/flakes/private/environment-dummy/flake.nix | |||
@@ -0,0 +1,18 @@ | |||
1 | { | ||
2 | description = '' | ||
3 | A dummy flake that contains a compatible structure to the one stored at | ||
4 | git+ssh://gitolite@git.immae.eu/perso/Immae/Config/Nix/Nixops/Secrets | ||
5 | It is used as default value in "public" configurations | ||
6 | ''; | ||
7 | outputs = { self }: { | ||
8 | vars-file = ./vars.yml; | ||
9 | ldap-conf = ./ldap.conf; | ||
10 | environment-file = ./environment.nix; | ||
11 | nixosModule = self.nixosModules.my-environment; | ||
12 | nixosModules.my-environment = { ... }: { | ||
13 | config.myEnv = import self.environment-file; | ||
14 | }; | ||
15 | nixosModules.users-config-eldiron = { ... }: {}; | ||
16 | }; | ||
17 | } | ||
18 | |||
diff --git a/flakes/private/environment-dummy/ldap.conf b/flakes/private/environment-dummy/ldap.conf new file mode 100644 index 0000000..064a4be --- /dev/null +++ b/flakes/private/environment-dummy/ldap.conf | |||
@@ -0,0 +1,13 @@ | |||
1 | # Indices to maintain | ||
2 | index objectClass eq | ||
3 | index uid pres,eq | ||
4 | index mail pres,sub,eq | ||
5 | index cn pres,sub,eq | ||
6 | index sn pres,sub,eq | ||
7 | index dc eq | ||
8 | index krbPrincipalName eq | ||
9 | index member eq | ||
10 | index memberOf eq | ||
11 | |||
12 | access to * | ||
13 | by * none | ||
diff --git a/flakes/private/environment-dummy/vars.yml b/flakes/private/environment-dummy/vars.yml new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/flakes/private/environment-dummy/vars.yml | |||
@@ -0,0 +1 @@ | |||
{} | |||
diff --git a/flakes/private/environment/flake.nix b/flakes/private/environment/flake.nix new file mode 100644 index 0000000..15c079a --- /dev/null +++ b/flakes/private/environment/flake.nix | |||
@@ -0,0 +1,1135 @@ | |||
1 | { | ||
2 | outputs = { self }: { | ||
3 | nixosModule = self.nixosModules.environment; | ||
4 | nixosModules.environment = { config, lib, name, ... }: | ||
5 | with lib; | ||
6 | with types; | ||
7 | with lists; | ||
8 | let | ||
9 | ldapOptions = { | ||
10 | base = mkOption { description = "Base of the LDAP tree"; type = str; }; | ||
11 | host = mkOption { description = "Host to access LDAP"; type = str; }; | ||
12 | root_dn = mkOption { description = "DN of the root user"; type = str; }; | ||
13 | root_pw = mkOption { description = "Hashed password of the root user"; type = str; }; | ||
14 | replication_dn = mkOption { description = "DN of the user allowed to replicate the LDAP directory"; type = str; }; | ||
15 | replication_pw = mkOption { description = "Password of the user allowed to replicate the LDAP directory"; type = str; }; | ||
16 | }; | ||
17 | mkLdapOptions = name: more: mkOption { | ||
18 | description = "${name} LDAP configuration"; | ||
19 | type = submodule { | ||
20 | options = ldapOptions // { | ||
21 | dn = mkOption { description = "DN of the ${name} user"; type = str; }; | ||
22 | password = mkOption { description = "password of the ${name} user"; type = str; }; | ||
23 | filter = mkOption { description = "Filter for ${name} users"; type = str; default = ""; }; | ||
24 | } // more; | ||
25 | }; | ||
26 | }; | ||
27 | mysqlOptions = { | ||
28 | host = mkOption { description = "Host to access Mysql"; type = str; }; | ||
29 | remoteHost = mkOption { description = "Host to access Mysql from outside"; type = str; }; | ||
30 | port = mkOption { description = "Port to access Mysql"; type = int; }; | ||
31 | socket = mkOption { description = "Socket to access Mysql"; type = path; }; | ||
32 | systemUsers = mkOption { | ||
33 | description = "Attrs of user-passwords allowed to access mysql"; | ||
34 | type = attrsOf str; | ||
35 | }; | ||
36 | pam = mkOption { | ||
37 | description = "PAM configuration for mysql"; | ||
38 | type = submodule { | ||
39 | options = { | ||
40 | dn = mkOption { description = "DN to connect as to check users"; type = str; }; | ||
41 | password = mkOption { description = "DN password to connect as to check users"; type = str; }; | ||
42 | filter = mkOption { description = "filter to match users"; type = str; }; | ||
43 | }; | ||
44 | }; | ||
45 | }; | ||
46 | }; | ||
47 | mkMysqlOptions = name: more: mkOption { | ||
48 | description = "${name} mysql configuration"; | ||
49 | type = submodule { | ||
50 | options = mysqlOptions // { | ||
51 | database = mkOption { description = "${name} database"; type = str; }; | ||
52 | user = mkOption { description = "${name} user"; type = str; }; | ||
53 | password = mkOption { description = "mysql password of the ${name} user"; type = str; }; | ||
54 | } // more; | ||
55 | }; | ||
56 | }; | ||
57 | psqlOptions = { | ||
58 | host = mkOption { description = "Host to access Postgresql"; type = str; }; | ||
59 | port = mkOption { description = "Port to access Postgresql"; type = str; }; | ||
60 | socket = mkOption { description = "Socket to access Postgresql"; type = path; }; | ||
61 | pam = mkOption { | ||
62 | description = "PAM configuration for psql"; | ||
63 | type = submodule { | ||
64 | options = { | ||
65 | dn = mkOption { description = "DN to connect as to check users"; type = str; }; | ||
66 | password = mkOption { description = "DN password to connect as to check users"; type = str; }; | ||
67 | filter = mkOption { description = "filter to match users"; type = str; }; | ||
68 | }; | ||
69 | }; | ||
70 | }; | ||
71 | }; | ||
72 | mkPsqlOptions = name: mkOption { | ||
73 | description = "${name} psql configuration"; | ||
74 | type = submodule { | ||
75 | options = psqlOptions // { | ||
76 | database = mkOption { description = "${name} database"; type = str; }; | ||
77 | schema = mkOption { description = "${name} schema"; type = nullOr str; default = null; }; | ||
78 | user = mkOption { description = "${name} user"; type = str; }; | ||
79 | password = mkOption { description = "psql password of the ${name} user"; type = str; }; | ||
80 | }; | ||
81 | }; | ||
82 | }; | ||
83 | redisOptions = { | ||
84 | host = mkOption { description = "Host to access Redis"; type = str; }; | ||
85 | port = mkOption { description = "Port to access Redis"; type = str; }; | ||
86 | socket = mkOption { description = "Socket to access Redis"; type = path; }; | ||
87 | dbs = mkOption { | ||
88 | description = "Attrs of db number. Each number should be unique to avoid collision!"; | ||
89 | type = attrsOf str; | ||
90 | }; | ||
91 | spiped_key = mkOption { | ||
92 | type = str; | ||
93 | description = '' | ||
94 | Key to use with spiped to make a secure channel to replication | ||
95 | ''; | ||
96 | }; | ||
97 | predixy = mkOption { | ||
98 | description = "Predixy configuration. Unused yet"; | ||
99 | type = submodule { | ||
100 | options = { | ||
101 | read = mkOption { type = str; description = "Read password"; }; | ||
102 | }; | ||
103 | }; | ||
104 | }; | ||
105 | }; | ||
106 | mkRedisOptions = name: mkOption { | ||
107 | description = "${name} redis configuration"; | ||
108 | type = submodule { | ||
109 | options = redisOptions // { | ||
110 | db = mkOption { description = "${name} database"; type = str; }; | ||
111 | }; | ||
112 | }; | ||
113 | }; | ||
114 | smtpOptions = { | ||
115 | host = mkOption { description = "Host to access SMTP"; type = str; }; | ||
116 | port = mkOption { description = "Port to access SMTP"; type = str; }; | ||
117 | }; | ||
118 | mkSmtpOptions = name: mkOption { | ||
119 | description = "${name} smtp configuration"; | ||
120 | type = submodule { | ||
121 | options = smtpOptions // { | ||
122 | email = mkOption { description = "${name} email"; type = str; }; | ||
123 | password = mkOption { description = "SMTP password of the ${name} user"; type = str; }; | ||
124 | }; | ||
125 | }; | ||
126 | }; | ||
127 | hostEnv = submodule { | ||
128 | options = { | ||
129 | fqdn = mkOption { | ||
130 | description = "Host FQDN"; | ||
131 | type = str; | ||
132 | }; | ||
133 | hostKey = mkOption { | ||
134 | type = nullOr str; | ||
135 | default = null; | ||
136 | description = '' | ||
137 | ssh host key | ||
138 | ''; | ||
139 | }; | ||
140 | isVm = mkEnableOption "The host is a vm"; | ||
141 | users = mkOption { | ||
142 | type = unspecified; | ||
143 | default = pkgs: []; | ||
144 | description = '' | ||
145 | Sublist of users from realUsers. Function that takes pkgs as | ||
146 | argument and gives an array as a result | ||
147 | ''; | ||
148 | }; | ||
149 | emails = mkOption { | ||
150 | default = []; | ||
151 | description = "List of e-mails that the server can be a sender of"; | ||
152 | type = listOf str; | ||
153 | }; | ||
154 | ldap = mkOption { | ||
155 | description = '' | ||
156 | LDAP credentials for the host | ||
157 | ''; | ||
158 | type = submodule { | ||
159 | options = { | ||
160 | password = mkOption { type = str; description = "Password for the LDAP connection"; }; | ||
161 | dn = mkOption { type = str; description = "DN for the LDAP connection"; }; | ||
162 | }; | ||
163 | }; | ||
164 | }; | ||
165 | mx = mkOption { | ||
166 | description = "subdomain and priority for MX server"; | ||
167 | default = { enable = false; }; | ||
168 | type = submodule { | ||
169 | options = { | ||
170 | enable = mkEnableOption "Enable MX"; | ||
171 | subdomain = mkOption { type = nullOr str; description = "Subdomain name (mx-*)"; }; | ||
172 | priority = mkOption { type = nullOr int; description = "Priority"; }; | ||
173 | }; | ||
174 | }; | ||
175 | }; | ||
176 | ips = mkOption { | ||
177 | description = '' | ||
178 | attrs of ip4/ip6 grouped by section | ||
179 | ''; | ||
180 | type = attrsOf (submodule { | ||
181 | options = { | ||
182 | alias = mkOption { | ||
183 | type = nullOr str; | ||
184 | default = null; | ||
185 | description = '' | ||
186 | alias to use in DNS for that group | ||
187 | ''; | ||
188 | }; | ||
189 | ip4 = mkOption { | ||
190 | type = listOf str; | ||
191 | default = []; | ||
192 | description = '' | ||
193 | ip4 addresses of the host | ||
194 | ''; | ||
195 | }; | ||
196 | ip6 = mkOption { | ||
197 | type = listOf str; | ||
198 | default = []; | ||
199 | description = '' | ||
200 | ip6 addresses of the host | ||
201 | ''; | ||
202 | }; | ||
203 | }; | ||
204 | }); | ||
205 | }; | ||
206 | }; | ||
207 | }; | ||
208 | in | ||
209 | { | ||
210 | # Necessary for situations where flake gets included multiple times | ||
211 | key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; }); | ||
212 | |||
213 | options.myEnv = { | ||
214 | servers = mkOption { | ||
215 | description = '' | ||
216 | Attrs of servers information in the cluster (not necessarily handled by nixops) | ||
217 | ''; | ||
218 | default = {}; | ||
219 | type = attrsOf hostEnv; | ||
220 | }; | ||
221 | hetznerCloud = mkOption { | ||
222 | description = '' | ||
223 | Hetzner Cloud credential information | ||
224 | ''; | ||
225 | type = submodule { | ||
226 | options = { | ||
227 | authToken = mkOption { | ||
228 | type = str; | ||
229 | description = '' | ||
230 | The API auth token. | ||
231 | ''; | ||
232 | }; | ||
233 | }; | ||
234 | }; | ||
235 | }; | ||
236 | hetzner = mkOption { | ||
237 | description = '' | ||
238 | Hetzner credential information | ||
239 | ''; | ||
240 | type = submodule { | ||
241 | options = { | ||
242 | user = mkOption { type = str; description = "User"; }; | ||
243 | pass = mkOption { type = str; description = "Password"; }; | ||
244 | }; | ||
245 | }; | ||
246 | }; | ||
247 | sshd = mkOption { | ||
248 | description = '' | ||
249 | sshd service credential information | ||
250 | ''; | ||
251 | type = submodule { | ||
252 | options = { | ||
253 | rootKeys = mkOption { type = attrsOf str; description = "Keys of root users"; }; | ||
254 | ldap = mkOption { | ||
255 | description = '' | ||
256 | LDAP credentials for cn=ssh,ou=services,dc=immae,dc=eu dn | ||
257 | ''; | ||
258 | type = submodule { | ||
259 | options = { | ||
260 | password = mkOption { description = "Password"; type = str; }; | ||
261 | }; | ||
262 | }; | ||
263 | }; | ||
264 | psql = mkOption { | ||
265 | description = '' | ||
266 | PSQL credentials for immae_auth_read | ||
267 | ''; | ||
268 | type = submodule { | ||
269 | options = { | ||
270 | password = mkOption { description = "Password"; type = str; }; | ||
271 | }; | ||
272 | }; | ||
273 | }; | ||
274 | }; | ||
275 | }; | ||
276 | }; | ||
277 | ports = mkOption { | ||
278 | description = '' | ||
279 | non-standard reserved ports. Must be unique! | ||
280 | ''; | ||
281 | type = attrsOf port; | ||
282 | default = {}; | ||
283 | apply = let | ||
284 | noDupl = x: builtins.length (builtins.attrValues x) == builtins.length (unique (builtins.attrValues x)); | ||
285 | in | ||
286 | x: if isAttrs x && noDupl x then x else throw "Non unique values for ports"; | ||
287 | }; | ||
288 | httpd = mkOption { | ||
289 | description = '' | ||
290 | httpd service credential information | ||
291 | ''; | ||
292 | type = submodule { | ||
293 | options = { | ||
294 | ldap = mkOption { | ||
295 | description = '' | ||
296 | LDAP credentials for cn=httpd,ou=services,dc=immae,dc=eu dn | ||
297 | ''; | ||
298 | type = submodule { | ||
299 | options = { | ||
300 | password = mkOption { description = "Password"; type = str; }; | ||
301 | }; | ||
302 | }; | ||
303 | }; | ||
304 | }; | ||
305 | }; | ||
306 | }; | ||
307 | smtp = mkOption { | ||
308 | type = submodule { options = smtpOptions; }; | ||
309 | description = "SMTP configuration"; | ||
310 | }; | ||
311 | ldap = mkOption { | ||
312 | description = '' | ||
313 | LDAP server configuration | ||
314 | ''; | ||
315 | type = submodule { | ||
316 | options = ldapOptions; | ||
317 | }; | ||
318 | }; | ||
319 | databases = mkOption { | ||
320 | description = "Databases configuration"; | ||
321 | type = submodule { | ||
322 | options = { | ||
323 | mysql = mkOption { | ||
324 | type = submodule { options = mysqlOptions; }; | ||
325 | description = "Mysql configuration"; | ||
326 | }; | ||
327 | redis = mkOption { | ||
328 | type = submodule { options = redisOptions; }; | ||
329 | description = "Redis configuration"; | ||
330 | }; | ||
331 | postgresql = mkOption { | ||
332 | type = submodule { options = psqlOptions; }; | ||
333 | description = "Postgresql configuration"; | ||
334 | }; | ||
335 | }; | ||
336 | }; | ||
337 | }; | ||
338 | jabber = mkOption { | ||
339 | description = "Jabber configuration"; | ||
340 | type = submodule { | ||
341 | options = { | ||
342 | postfix_user_filter = mkOption { type = str; description = "Postfix filter to get xmpp users"; }; | ||
343 | ldap = mkLdapOptions "Jabber" {}; | ||
344 | postgresql = mkPsqlOptions "Jabber"; | ||
345 | }; | ||
346 | }; | ||
347 | }; | ||
348 | realUsers = mkOption { | ||
349 | description = '' | ||
350 | Attrset of function taking pkgs as argument. | ||
351 | Real users settings, should provide a subattr of users.users.<name> | ||
352 | with at least: name, (hashed)Password, shell | ||
353 | ''; | ||
354 | type = attrsOf unspecified; | ||
355 | }; | ||
356 | users = mkOption { | ||
357 | description = "System and regular users uid/gid"; | ||
358 | type = attrsOf (submodule { | ||
359 | options = { | ||
360 | uid = mkOption { | ||
361 | description = "user uid"; | ||
362 | type = int; | ||
363 | }; | ||
364 | gid = mkOption { | ||
365 | description = "user gid"; | ||
366 | type = int; | ||
367 | }; | ||
368 | }; | ||
369 | }); | ||
370 | }; | ||
371 | dns = mkOption { | ||
372 | description = "DNS configuration"; | ||
373 | type = submodule { | ||
374 | options = { | ||
375 | ns = mkOption { | ||
376 | description = "Attrs of NS servers group"; | ||
377 | example = { | ||
378 | foo = { | ||
379 | "ns1.foo.com" = [ "198.51.100.10" "2001:db8:abcd::1" ]; | ||
380 | "ns2.foo.com" = [ "198.51.100.15" "2001:db8:1234::1" ]; | ||
381 | }; | ||
382 | }; | ||
383 | type = attrsOf (attrsOf (listOf str)); | ||
384 | }; | ||
385 | }; | ||
386 | }; | ||
387 | }; | ||
388 | backup = mkOption { | ||
389 | description = '' | ||
390 | Remote backup with duplicity | ||
391 | ''; | ||
392 | type = submodule { | ||
393 | options = { | ||
394 | password = mkOption { type = str; description = "Password for encrypting files"; }; | ||
395 | remotes = mkOption { | ||
396 | type = attrsOf (submodule { | ||
397 | options = { | ||
398 | remote = mkOption { | ||
399 | type = functionTo str; | ||
400 | example = literalExample '' | ||
401 | bucket: "s3://some_host/${bucket}"; | ||
402 | ''; | ||
403 | description = '' | ||
404 | Function. | ||
405 | Takes a bucket name as argument and returns a url | ||
406 | ''; | ||
407 | }; | ||
408 | accessKeyId = mkOption { type = str; description = "Remote access-key"; }; | ||
409 | secretAccessKey = mkOption { type = str; description = "Remote access secret"; }; | ||
410 | }; | ||
411 | }); | ||
412 | }; | ||
413 | }; | ||
414 | }; | ||
415 | }; | ||
416 | zrepl_backup = mkOption { | ||
417 | type = submodule { | ||
418 | options = { | ||
419 | ssh_key = mkOption { | ||
420 | description = "SSH key information"; | ||
421 | type = submodule { | ||
422 | options = { | ||
423 | public = mkOption { type = str; description = "Public part of the key"; }; | ||
424 | private = mkOption { type = lines; description = "Private part of the key"; }; | ||
425 | }; | ||
426 | }; | ||
427 | }; | ||
428 | mysql = mkMysqlOptions "Zrepl" {}; | ||
429 | certs = mkOption { | ||
430 | description = "Certificates"; | ||
431 | type = attrsOf (submodule { | ||
432 | options = { | ||
433 | key = mkOption { type = str; description = "Key"; }; | ||
434 | certificate = mkOption { type = str; description = "Certificate"; }; | ||
435 | }; | ||
436 | }); | ||
437 | }; | ||
438 | }; | ||
439 | }; | ||
440 | }; | ||
441 | rsync_backup = mkOption { | ||
442 | description ='' | ||
443 | Rsync backup configuration from controlled host | ||
444 | ''; | ||
445 | type = submodule { | ||
446 | options = { | ||
447 | ssh_key = mkOption { | ||
448 | description = "SSH key information"; | ||
449 | type = submodule { | ||
450 | options = { | ||
451 | public = mkOption { type = str; description = "Public part of the key"; }; | ||
452 | private = mkOption { type = lines; description = "Private part of the key"; }; | ||
453 | }; | ||
454 | }; | ||
455 | }; | ||
456 | profiles = mkOption { | ||
457 | description = "Attrs of profiles to backup"; | ||
458 | default = {}; | ||
459 | type = attrsOf (submodule { | ||
460 | options = { | ||
461 | keep = mkOption { type = int; description = "Number of backups to keep"; }; | ||
462 | check_command = mkOption { type = str; description = "command to check if backup needs to be done"; default = "backup"; }; | ||
463 | login = mkOption { type = str; description = "Login to connect to host"; }; | ||
464 | port = mkOption { type = str; default = "22"; description = "Port to connect to host"; }; | ||
465 | host = mkOption { type = str; description = "Host to connect to"; }; | ||
466 | host_key = mkOption { type = str; description = "Host key"; }; | ||
467 | host_key_type = mkOption { type = str; description = "Host key type"; }; | ||
468 | parts = mkOption { | ||
469 | description = "Parts to backup for this host"; | ||
470 | type = attrsOf (submodule { | ||
471 | options = { | ||
472 | remote_folder = mkOption { type = path; description = "Remote folder to backup";}; | ||
473 | exclude_from = mkOption { | ||
474 | type = listOf path; | ||
475 | default = []; | ||
476 | description = "List of folders/files to exclude from the backup"; | ||
477 | }; | ||
478 | files_from = mkOption { | ||
479 | type = listOf path; | ||
480 | default = []; | ||
481 | description = "List of folders/files to backup in the base folder"; | ||
482 | }; | ||
483 | args = mkOption { | ||
484 | type = nullOr str; | ||
485 | default = null; | ||
486 | description = "Extra arguments to pass to rsync"; | ||
487 | }; | ||
488 | }; | ||
489 | }); | ||
490 | }; | ||
491 | }; | ||
492 | }); | ||
493 | }; | ||
494 | }; | ||
495 | }; | ||
496 | }; | ||
497 | monitoring = mkOption { | ||
498 | description = "Monitoring configuration"; | ||
499 | type = submodule { | ||
500 | options = { | ||
501 | status_url = mkOption { type = str; description = "URL to push status to"; }; | ||
502 | status_token = mkOption { type = str; description = "Token for the status url"; }; | ||
503 | http_user_password = mkOption { type = str; description = "HTTP credentials to check services behind wall"; }; | ||
504 | email = mkOption { type = str; description = "Admin E-mail"; }; | ||
505 | ssh_public_key = mkOption { type = str; description = "SSH public key"; }; | ||
506 | ssh_secret_key = mkOption { type = str; description = "SSH secret key"; }; | ||
507 | imap_login = mkOption { type = str; description = "IMAP login"; }; | ||
508 | imap_password = mkOption { type = str; description = "IMAP password"; }; | ||
509 | eriomem_keys = mkOption { type = listOf (listOf str); description = "Eriomem keys"; default = []; }; | ||
510 | ovh_sms = mkOption { | ||
511 | description = "OVH credentials for sms script"; | ||
512 | type = submodule { | ||
513 | options = { | ||
514 | endpoint = mkOption { type = str; default = "ovh-eu"; description = "OVH endpoint"; }; | ||
515 | application_key = mkOption { type = str; description = "Application key"; }; | ||
516 | application_secret = mkOption { type = str; description = "Application secret"; }; | ||
517 | consumer_key = mkOption { type = str; description = "Consumer key"; }; | ||
518 | account = mkOption { type = str; description = "Account"; }; | ||
519 | }; | ||
520 | }; | ||
521 | }; | ||
522 | nrdp_tokens = mkOption { type = listOf str; description = "Tokens allowed to push status update"; }; | ||
523 | apprise_urls = mkOption { type = str; description = "Apprise space-separated urls to push status update"; }; | ||
524 | netdata_aggregator = mkOption { type = str; description = "Url where netdata information should be sent"; }; | ||
525 | netdata_keys = mkOption { type = attrsOf str; description = "netdata host keys"; }; | ||
526 | immae_contact = mkOption { type = str; description = "Immae Contact e-mail"; }; | ||
527 | email_check = mkOption { | ||
528 | description = "Emails services to check"; | ||
529 | type = attrsOf (submodule { | ||
530 | options = { | ||
531 | local = mkOption { type = bool; default = false; description = "Use local configuration"; }; | ||
532 | port = mkOption { type = nullOr str; default = null; description = "Port to connect to ssh"; }; | ||
533 | login = mkOption { type = nullOr str; default = null; description = "Login to connect to ssh"; }; | ||
534 | targets = mkOption { type = listOf str; description = "Hosts to send E-mails to"; }; | ||
535 | mail_address = mkOption { type = nullOr str; default = null; description = "E-mail recipient part to send e-mail to"; }; | ||
536 | mail_domain = mkOption { type = nullOr str; default = null; description = "E-mail domain part to send e-mail to"; }; | ||
537 | }; | ||
538 | }); | ||
539 | }; | ||
540 | }; | ||
541 | }; | ||
542 | }; | ||
543 | mpd = mkOption { | ||
544 | description = "MPD configuration"; | ||
545 | type = submodule { | ||
546 | options = { | ||
547 | folder = mkOption { type = str; description = "Folder to serve from the MPD instance"; }; | ||
548 | password = mkOption { type = str; description = "Password to connect to the MPD instance"; }; | ||
549 | host = mkOption { type = str; description = "Host to connect to the MPD instance"; }; | ||
550 | port = mkOption { type = str; description = "Port to connect to the MPD instance"; }; | ||
551 | }; | ||
552 | }; | ||
553 | }; | ||
554 | ftp = mkOption { | ||
555 | description = "FTP configuration"; | ||
556 | type = submodule { | ||
557 | options = { | ||
558 | ldap = mkLdapOptions "FTP" { | ||
559 | proftpd_filter = mkOption { type = str; description = "Filter for proftpd listing in LDAP"; }; | ||
560 | pure-ftpd_filter = mkOption { type = str; description = "Filter for pure-ftpd listing in LDAP"; }; | ||
561 | }; | ||
562 | }; | ||
563 | }; | ||
564 | }; | ||
565 | vpn = mkOption { | ||
566 | description = "VPN configuration"; | ||
567 | type = attrsOf (submodule { | ||
568 | options = { | ||
569 | prefix = mkOption { type = str; description = "ipv6 prefix for the vpn subnet"; }; | ||
570 | privateKey = mkOption { type = str; description = "Private key for the host"; }; | ||
571 | publicKey = mkOption { type = str; description = "Public key for the host"; }; | ||
572 | }; | ||
573 | }); | ||
574 | }; | ||
575 | mail = mkOption { | ||
576 | description = "Mail configuration"; | ||
577 | type = submodule { | ||
578 | options = { | ||
579 | dmarc = mkOption { | ||
580 | description = "DMARC configuration"; | ||
581 | type = submodule { | ||
582 | options = { | ||
583 | ignore_hosts = mkOption { | ||
584 | type = lines; | ||
585 | description = '' | ||
586 | Hosts to ignore when checking for dmarc | ||
587 | ''; | ||
588 | }; | ||
589 | }; | ||
590 | }; | ||
591 | }; | ||
592 | dkim = mkOption { | ||
593 | description = "DKIM configuration"; | ||
594 | type = attrsOf (submodule { | ||
595 | options = { | ||
596 | public = mkOption { | ||
597 | type = attrsOf str; | ||
598 | example = literalExample '' | ||
599 | { | ||
600 | v = "DKIM1"; | ||
601 | k = "rsa"; | ||
602 | p = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3w1a2aMxWw9+hdcmbqX4UevcVqr204y0K73Wdc7MPZiOOlUJQYsMNSYR1Y/SC7jmPKeitpcJCpQgn/cveJZbuikjjPLsDReHyFEYmC278ZLRTELHx6f1IXM8WE08JIRT69CfZiMi1rVcOh9qRT4F93PyjCauU8Y5hJjtg9ThsWwIDAQAB"; | ||
603 | } | ||
604 | ''; | ||
605 | description = "Public entry to put in DNS TXT field"; | ||
606 | }; | ||
607 | private = mkOption { type = nullOr str; default = null; description = "Private key"; }; | ||
608 | }; | ||
609 | }); | ||
610 | }; | ||
611 | postfix = mkOption { | ||
612 | description = "Postfix configuration"; | ||
613 | type = submodule { | ||
614 | options = { | ||
615 | mysql = mkMysqlOptions "Postfix" { | ||
616 | password_encrypt = mkOption { type = str; description = "Key to encrypt relay password in database"; }; | ||
617 | }; | ||
618 | admins = mkOption { | ||
619 | description = '' | ||
620 | List of admins meant to receive common aliases | ||
621 | ''; | ||
622 | type = listOf str; | ||
623 | }; | ||
624 | common_aliases = mkOption { | ||
625 | description = '' | ||
626 | List of aliases common to all hosts, to forward to admins | ||
627 | ''; | ||
628 | type = listOf str; | ||
629 | }; | ||
630 | other_aliases = mkOption { | ||
631 | description = '' | ||
632 | Other list of aliases, to forward to admins | ||
633 | ''; | ||
634 | type = listOf str; | ||
635 | }; | ||
636 | }; | ||
637 | }; | ||
638 | }; | ||
639 | dovecot = mkOption { | ||
640 | description = "Dovecot configuration"; | ||
641 | type = submodule { | ||
642 | options = { | ||
643 | ldap = mkLdapOptions "Dovecot" { | ||
644 | pass_attrs = mkOption { type = str; description = "Password attribute in LDAP"; }; | ||
645 | user_attrs = mkOption { type = str; description = "User attribute mapping in LDAP"; }; | ||
646 | iterate_attrs = mkOption { type = str; description = "User attribute mapping for listing in LDAP"; }; | ||
647 | iterate_filter = mkOption { type = str; description = "User attribute filter for listing in LDAP"; }; | ||
648 | postfix_mailbox_filter = mkOption { type = str; description = "Postfix filter to get mailboxes"; }; | ||
649 | }; | ||
650 | }; | ||
651 | }; | ||
652 | }; | ||
653 | rspamd = mkOption { | ||
654 | description = "rspamd configuration"; | ||
655 | type = submodule { | ||
656 | options = { | ||
657 | redis = mkRedisOptions "Redis"; | ||
658 | read_password_hashed = mkOption { type = str; description = "Hashed read password for rspamd"; }; | ||
659 | write_password_hashed = mkOption { type = str; description = "Hashed write password for rspamd"; }; | ||
660 | read_password = mkOption { | ||
661 | type = str; | ||
662 | description = "Read password for rspamd. Unused"; | ||
663 | apply = x: ""; | ||
664 | }; | ||
665 | write_password = mkOption { | ||
666 | type = str; | ||
667 | description = "Write password for rspamd. Unused"; | ||
668 | apply = x: ""; | ||
669 | }; | ||
670 | }; | ||
671 | }; | ||
672 | }; | ||
673 | sympa = mkOption { | ||
674 | description = "Sympa configuration"; | ||
675 | type = submodule { | ||
676 | options = { | ||
677 | listmasters = mkOption { | ||
678 | type = listOf str; | ||
679 | description = "Listmasters"; | ||
680 | }; | ||
681 | postgresql = mkPsqlOptions "Sympa"; | ||
682 | data_sources = mkOption { | ||
683 | type = attrsOf str; | ||
684 | default = {}; | ||
685 | description = "Data sources to make available to sympa"; | ||
686 | }; | ||
687 | scenari = mkOption { | ||
688 | type = attrsOf str; | ||
689 | default = {}; | ||
690 | description = "Scenari to make available to sympa"; | ||
691 | }; | ||
692 | }; | ||
693 | }; | ||
694 | }; | ||
695 | }; | ||
696 | }; | ||
697 | }; | ||
698 | coturn = mkOption { | ||
699 | description = "Coturn configuration"; | ||
700 | type = submodule { | ||
701 | options = { | ||
702 | auth_access_key = mkOption { type = str; description = "key to access coturn"; }; | ||
703 | }; | ||
704 | }; | ||
705 | }; | ||
706 | buildbot = mkOption { | ||
707 | description = "Buildbot configuration"; | ||
708 | type = submodule { | ||
709 | options = { | ||
710 | ssh_key = mkOption { | ||
711 | description = "SSH key information"; | ||
712 | type = submodule { | ||
713 | options = { | ||
714 | public = mkOption { type = str; description = "Public part of the key"; }; | ||
715 | private = mkOption { type = lines; description = "Private part of the key"; }; | ||
716 | }; | ||
717 | }; | ||
718 | }; | ||
719 | workerPassword = mkOption { description = "Buildbot worker password"; type = str; }; | ||
720 | user = mkOption { | ||
721 | description = "Buildbot user"; | ||
722 | type = submodule { | ||
723 | options = { | ||
724 | uid = mkOption { | ||
725 | description = "user uid"; | ||
726 | type = int; | ||
727 | }; | ||
728 | gid = mkOption { | ||
729 | description = "user gid"; | ||
730 | type = int; | ||
731 | }; | ||
732 | }; | ||
733 | }; | ||
734 | }; | ||
735 | ldap = mkOption { | ||
736 | description = "Ldap configuration for buildbot"; | ||
737 | type = submodule { | ||
738 | options = { | ||
739 | password = mkOption { type = str; description = "Buildbot password"; }; | ||
740 | }; | ||
741 | }; | ||
742 | }; | ||
743 | projects = mkOption { | ||
744 | description = "Projects to make a buildbot for"; | ||
745 | type = attrsOf (submodule { | ||
746 | options = { | ||
747 | name = mkOption { type = str; description = "Project name"; }; | ||
748 | src = mkOption { type = path; description = "source of the project configuration"; }; | ||
749 | packages = mkOption { | ||
750 | type = listOf package; | ||
751 | example = literalExample '' | ||
752 | [ pkgs.bash pkgs.git pkgs.gzip pkgs.openssh ]; | ||
753 | ''; | ||
754 | description = '' | ||
755 | Builds packages list to make available to buildbot project. | ||
756 | ''; | ||
757 | }; | ||
758 | pythonPathHome = mkOption { type = bool; description = "Whether to add project’s python home to python path"; }; | ||
759 | workerPort = mkOption { type = port; description = "Port for the worker"; }; | ||
760 | secrets = mkOption { | ||
761 | type = attrsOf lines; | ||
762 | description = "Secrets for the project to dump as files"; | ||
763 | }; | ||
764 | secretsDeps = mkOption { | ||
765 | type = listOf package; | ||
766 | default = []; | ||
767 | description = "Dependencies of file that will land in secrets"; | ||
768 | }; | ||
769 | environment = mkOption { | ||
770 | type = attrsOf str; | ||
771 | description = '' | ||
772 | Environment variables for the project. | ||
773 | BUILDBOT_ is prefixed to the variable names | ||
774 | ''; | ||
775 | }; | ||
776 | activationScript = mkOption { | ||
777 | type = lines; | ||
778 | description = '' | ||
779 | Activation script to run during deployment | ||
780 | ''; | ||
781 | }; | ||
782 | webhookTokens = mkOption { | ||
783 | type = nullOr (listOf str); | ||
784 | default = null; | ||
785 | description = '' | ||
786 | List of tokens allowed to push to project’s change_hook/base endpoint | ||
787 | ''; | ||
788 | }; | ||
789 | }; | ||
790 | }); | ||
791 | }; | ||
792 | }; | ||
793 | }; | ||
794 | }; | ||
795 | tools = mkOption { | ||
796 | description = "Tools configurations"; | ||
797 | type = submodule { | ||
798 | options = { | ||
799 | contact = mkOption { type = str; description = "Contact e-mail address"; }; | ||
800 | assets = mkOption { | ||
801 | default = {}; | ||
802 | type = attrsOf (submodule { | ||
803 | options = { | ||
804 | assetType = mkOption { type = enum ["tgz" "url" "googleFont"]; default = "url"; description = "Type of asset"; }; | ||
805 | tgzRemoveComponents = mkOption { type = int; default = 0; description = "Remove components when extracting"; }; | ||
806 | url = mkOption { type = str; description = "URL to fetch"; }; | ||
807 | sha256 = mkOption { type = str; description = "Hash of the url"; }; | ||
808 | }; | ||
809 | }); | ||
810 | description = "Assets to provide on assets.immae.eu"; | ||
811 | }; | ||
812 | davical = mkOption { | ||
813 | description = "Davical configuration"; | ||
814 | type = submodule { | ||
815 | options = { | ||
816 | postgresql = mkPsqlOptions "Davical"; | ||
817 | ldap = mkLdapOptions "Davical" {}; | ||
818 | }; | ||
819 | }; | ||
820 | }; | ||
821 | diaspora = mkOption { | ||
822 | description = "Diaspora configuration"; | ||
823 | type = submodule { | ||
824 | options = { | ||
825 | postgresql = mkPsqlOptions "Diaspora"; | ||
826 | redis = mkRedisOptions "Diaspora"; | ||
827 | ldap = mkLdapOptions "Diaspora" {}; | ||
828 | secret_token = mkOption { type = str; description = "Secret token"; }; | ||
829 | }; | ||
830 | }; | ||
831 | }; | ||
832 | dmarc_reports = mkOption { | ||
833 | description = "DMARC reports configuration"; | ||
834 | type = submodule { | ||
835 | options = { | ||
836 | mysql = mkMysqlOptions "DMARC" {}; | ||
837 | anonymous_key = mkOption { type = str; description = "Anonymous hashing key"; }; | ||
838 | }; | ||
839 | }; | ||
840 | }; | ||
841 | etherpad-lite = mkOption { | ||
842 | description = "Etherpad configuration"; | ||
843 | type = submodule { | ||
844 | options = { | ||
845 | postgresql = mkPsqlOptions "Etherpad"; | ||
846 | ldap = mkLdapOptions "Etherpad" { | ||
847 | group_filter = mkOption { type = str; description = "Filter for groups"; }; | ||
848 | }; | ||
849 | adminPassword = mkOption { type = str; description = "Admin password for mypads / admin"; }; | ||
850 | session_key = mkOption { type = str; description = "Session key"; }; | ||
851 | api_key = mkOption { type = str; description = "API key"; }; | ||
852 | }; | ||
853 | }; | ||
854 | }; | ||
855 | gitolite = mkOption { | ||
856 | description = "Gitolite configuration"; | ||
857 | type = submodule { | ||
858 | options = { | ||
859 | ldap = mkLdapOptions "Gitolite" {}; | ||
860 | ssh_key = mkOption { | ||
861 | description = "SSH key information"; | ||
862 | type = submodule { | ||
863 | options = { | ||
864 | public = mkOption { type = str; description = "Public part of the key"; }; | ||
865 | private = mkOption { type = lines; description = "Private part of the key"; }; | ||
866 | }; | ||
867 | }; | ||
868 | }; | ||
869 | }; | ||
870 | }; | ||
871 | }; | ||
872 | landing = mkOption { | ||
873 | description = "Landing configuration"; | ||
874 | type = submodule { | ||
875 | options = { | ||
876 | postgresql = mkPsqlOptions "Landing"; | ||
877 | }; | ||
878 | }; | ||
879 | }; | ||
880 | kanboard = mkOption { | ||
881 | description = "Kanboard configuration"; | ||
882 | type = submodule { | ||
883 | options = { | ||
884 | postgresql = mkPsqlOptions "Kanboard"; | ||
885 | ldap = mkLdapOptions "Kanboard" { | ||
886 | admin_dn = mkOption { type = str; description = "Admin DN"; }; | ||
887 | }; | ||
888 | }; | ||
889 | }; | ||
890 | }; | ||
891 | mantisbt = mkOption { | ||
892 | description = "Mantisbt configuration"; | ||
893 | type = submodule { | ||
894 | options = { | ||
895 | postgresql = mkPsqlOptions "Mantisbt"; | ||
896 | ldap = mkLdapOptions "Mantisbt" {}; | ||
897 | master_salt = mkOption { type = str; description = "Master salt for password hash"; }; | ||
898 | }; | ||
899 | }; | ||
900 | }; | ||
901 | mastodon = mkOption { | ||
902 | description = "Mastodon configuration"; | ||
903 | type = submodule { | ||
904 | options = { | ||
905 | postgresql = mkPsqlOptions "Mastodon"; | ||
906 | redis = mkRedisOptions "Mastodon"; | ||
907 | ldap = mkLdapOptions "Mastodon" {}; | ||
908 | paperclip_secret = mkOption { type = str; description = "Paperclip secret"; }; | ||
909 | otp_secret = mkOption { type = str; description = "OTP secret"; }; | ||
910 | secret_key_base = mkOption { type = str; description = "Secret key base"; }; | ||
911 | vapid = mkOption { | ||
912 | description = "vapid key"; | ||
913 | type = submodule { | ||
914 | options = { | ||
915 | private = mkOption { type = str; description = "Private key"; }; | ||
916 | public = mkOption { type = str; description = "Public key"; }; | ||
917 | }; | ||
918 | }; | ||
919 | }; | ||
920 | }; | ||
921 | }; | ||
922 | }; | ||
923 | mediagoblin = mkOption { | ||
924 | description = "Mediagoblin configuration"; | ||
925 | type = submodule { | ||
926 | options = { | ||
927 | postgresql = mkPsqlOptions "Mediagoblin"; | ||
928 | redis = mkRedisOptions "Mediagoblin"; | ||
929 | ldap = mkLdapOptions "Mediagoblin" {}; | ||
930 | }; | ||
931 | }; | ||
932 | }; | ||
933 | nextcloud = mkOption { | ||
934 | description = "Nextcloud configuration"; | ||
935 | type = submodule { | ||
936 | options = { | ||
937 | postgresql = mkPsqlOptions "Nextcloud"; | ||
938 | redis = mkRedisOptions "Nextcloud"; | ||
939 | password_salt = mkOption { type = str; description = "Password salt"; }; | ||
940 | instance_id = mkOption { type = str; description = "Instance ID"; }; | ||
941 | secret = mkOption { type = str; description = "App secret"; }; | ||
942 | }; | ||
943 | }; | ||
944 | }; | ||
945 | peertube = mkOption { | ||
946 | description = "Peertube configuration"; | ||
947 | type = submodule { | ||
948 | options = { | ||
949 | listenPort = mkOption { type = port; description = "Port to listen to"; }; | ||
950 | postgresql = mkPsqlOptions "Peertube"; | ||
951 | redis = mkRedisOptions "Peertube"; | ||
952 | ldap = mkLdapOptions "Peertube" {}; | ||
953 | }; | ||
954 | }; | ||
955 | }; | ||
956 | phpldapadmin = mkOption { | ||
957 | description = "phpLdapAdmin configuration"; | ||
958 | type = submodule { | ||
959 | options = { | ||
960 | ldap = mkLdapOptions "phpldapadmin" {}; | ||
961 | }; | ||
962 | }; | ||
963 | }; | ||
964 | rompr = mkOption { | ||
965 | description = "Rompr configuration"; | ||
966 | type = submodule { | ||
967 | options = { | ||
968 | mpd = mkOption { | ||
969 | description = "MPD configuration"; | ||
970 | type = submodule { | ||
971 | options = { | ||
972 | host = mkOption { type = str; description = "Host for MPD"; }; | ||
973 | port = mkOption { type = port; description = "Port to access MPD host"; }; | ||
974 | }; | ||
975 | }; | ||
976 | }; | ||
977 | }; | ||
978 | }; | ||
979 | }; | ||
980 | roundcubemail = mkOption { | ||
981 | description = "Roundcubemail configuration"; | ||
982 | type = submodule { | ||
983 | options = { | ||
984 | postgresql = mkPsqlOptions "TT-RSS"; | ||
985 | secret = mkOption { type = str; description = "Secret"; }; | ||
986 | }; | ||
987 | }; | ||
988 | }; | ||
989 | shaarli = mkOption { | ||
990 | description = "Shaarli configuration"; | ||
991 | type = submodule { | ||
992 | options = { | ||
993 | ldap = mkLdapOptions "Shaarli" {}; | ||
994 | }; | ||
995 | }; | ||
996 | }; | ||
997 | status_engine = mkOption { | ||
998 | description = "Status Engine configuration"; | ||
999 | type = submodule { | ||
1000 | options = { | ||
1001 | mysql = mkMysqlOptions "StatusEngine" {}; | ||
1002 | ldap = mkLdapOptions "StatusEngine" {}; | ||
1003 | }; | ||
1004 | }; | ||
1005 | }; | ||
1006 | task = mkOption { | ||
1007 | description = "Taskwarrior configuration"; | ||
1008 | type = submodule { | ||
1009 | options = { | ||
1010 | ldap = mkLdapOptions "Taskwarrior" {}; | ||
1011 | taskwarrior-web = mkOption { | ||
1012 | description = "taskwarrior-web profiles"; | ||
1013 | default = {}; | ||
1014 | type = attrsOf (submodule { | ||
1015 | options = { | ||
1016 | uid = mkOption { | ||
1017 | type = listOf str; | ||
1018 | description = "List of ldap uids having access to this profile"; | ||
1019 | }; | ||
1020 | org = mkOption { type = str; description = "Taskd organisation"; }; | ||
1021 | key = mkOption { type = str; description = "Taskd key"; }; | ||
1022 | date = mkOption { type = str; description = "Preferred date format"; }; | ||
1023 | }; | ||
1024 | }); | ||
1025 | }; | ||
1026 | }; | ||
1027 | }; | ||
1028 | }; | ||
1029 | ttrss = mkOption { | ||
1030 | description = "TT-RSS configuration"; | ||
1031 | type = submodule { | ||
1032 | options = { | ||
1033 | postgresql = mkPsqlOptions "TT-RSS"; | ||
1034 | ldap = mkLdapOptions "TT-RSS" {}; | ||
1035 | }; | ||
1036 | }; | ||
1037 | }; | ||
1038 | wallabag = mkOption { | ||
1039 | description = "Wallabag configuration"; | ||
1040 | type = submodule { | ||
1041 | options = { | ||
1042 | postgresql = mkPsqlOptions "Wallabag"; | ||
1043 | ldap = mkLdapOptions "Wallabag" { | ||
1044 | admin_filter = mkOption { type = str; description = "Admin users filter"; }; | ||
1045 | }; | ||
1046 | redis = mkRedisOptions "Wallabag"; | ||
1047 | secret = mkOption { type = str; description = "App secret"; }; | ||
1048 | }; | ||
1049 | }; | ||
1050 | }; | ||
1051 | webhooks = mkOption { | ||
1052 | type = attrsOf str; | ||
1053 | description = "Mapping 'name'.php => script for webhooks"; | ||
1054 | }; | ||
1055 | csp_reports = mkOption { | ||
1056 | description = "CSP report configuration"; | ||
1057 | type = submodule { | ||
1058 | options = { | ||
1059 | report_uri = mkOption { type = str; description = "URI to report CSP violations to"; }; | ||
1060 | policies = mkOption { type = attrsOf str; description = "CSP policies to apply"; }; | ||
1061 | }; | ||
1062 | }; | ||
1063 | }; | ||
1064 | commento = mkOption { | ||
1065 | description = "Commento configuration"; | ||
1066 | type = submodule { | ||
1067 | options = { | ||
1068 | listenPort = mkOption { type = port; description = "Port to listen to"; }; | ||
1069 | postgresql = mkPsqlOptions "Commento"; | ||
1070 | smtp = mkSmtpOptions "Commento"; | ||
1071 | }; | ||
1072 | }; | ||
1073 | }; | ||
1074 | cryptpad = mkOption { | ||
1075 | description = "Cryptpad configuration"; | ||
1076 | type = submodule { | ||
1077 | options = { | ||
1078 | email = mkOption { type = str; description = "Admin e-mail"; }; | ||
1079 | admins = mkOption { type = listOf str; description = "Instance admin public keys"; }; | ||
1080 | port = mkOption { type = port; description = "Port to listen to"; }; | ||
1081 | }; | ||
1082 | }; | ||
1083 | }; | ||
1084 | ympd = mkOption { | ||
1085 | description = "Ympd configuration"; | ||
1086 | type = submodule { | ||
1087 | options = { | ||
1088 | listenPort = mkOption { type = port; description = "Port to listen to"; }; | ||
1089 | mpd = mkOption { | ||
1090 | description = "MPD configuration"; | ||
1091 | type = submodule { | ||
1092 | options = { | ||
1093 | password = mkOption { type = str; description = "Password to access MPD host"; }; | ||
1094 | host = mkOption { type = str; description = "Host for MPD"; }; | ||
1095 | port = mkOption { type = port; description = "Port to access MPD host"; }; | ||
1096 | }; | ||
1097 | }; | ||
1098 | }; | ||
1099 | }; | ||
1100 | }; | ||
1101 | }; | ||
1102 | umami = mkOption { | ||
1103 | description = "Umami configuration"; | ||
1104 | type = submodule { | ||
1105 | options = { | ||
1106 | listenPort = mkOption { type = port; description = "Port to listen to"; }; | ||
1107 | postgresql = mkPsqlOptions "Umami"; | ||
1108 | hashSalt = mkOption { type = str; description = "Hash salt"; }; | ||
1109 | }; | ||
1110 | }; | ||
1111 | }; | ||
1112 | yourls = mkOption { | ||
1113 | description = "Yourls configuration"; | ||
1114 | type = submodule { | ||
1115 | options = { | ||
1116 | mysql = mkMysqlOptions "Yourls" {}; | ||
1117 | ldap = mkLdapOptions "Yourls" {}; | ||
1118 | cookieKey = mkOption { type = str; description = "Cookie key"; }; | ||
1119 | }; | ||
1120 | }; | ||
1121 | }; | ||
1122 | }; | ||
1123 | }; | ||
1124 | }; | ||
1125 | serverSpecific = mkOption { type = attrsOf unspecified; description = "Server specific configuration"; }; | ||
1126 | }; | ||
1127 | options.hostEnv = mkOption { | ||
1128 | readOnly = true; | ||
1129 | type = hostEnv; | ||
1130 | default = config.myEnv.servers."${name}"; | ||
1131 | description = "Host environment"; | ||
1132 | }; | ||
1133 | }; | ||
1134 | }; | ||
1135 | } | ||
diff --git a/flakes/private/mail-relay/filter-rewrite-from.py b/flakes/private/mail-relay/filter-rewrite-from.py new file mode 100755 index 0000000..aad9c69 --- /dev/null +++ b/flakes/private/mail-relay/filter-rewrite-from.py | |||
@@ -0,0 +1,68 @@ | |||
1 | #! /usr/bin/env python3 | ||
2 | import sys | ||
3 | |||
4 | sys.stdin.reconfigure(encoding='utf-8') | ||
5 | sys.stdout.reconfigure(encoding='utf-8') | ||
6 | stdin = sys.stdin | ||
7 | stdout = sys.stdout | ||
8 | |||
9 | mailaddr = sys.argv[1] | ||
10 | inheader = {} | ||
11 | |||
12 | # Change to actual file for logging | ||
13 | logfile = open("/dev/null", "a") | ||
14 | |||
15 | def log(l, i): | ||
16 | logfile.write("{} {}\n".format(i, l)) | ||
17 | logfile.flush() | ||
18 | |||
19 | def send(l): | ||
20 | log(l, ">") | ||
21 | stdout.write("{}\n".format(l)) | ||
22 | stdout.flush() | ||
23 | |||
24 | def token_and_sid(version, sid, token): | ||
25 | if version < "0.5": | ||
26 | return "{}|{}".format(token, sid) | ||
27 | else: | ||
28 | return "{}|{}".format(sid, token) | ||
29 | |||
30 | log("started", "l") | ||
31 | while True: | ||
32 | line = stdin.readline().strip() | ||
33 | log(line, "<") | ||
34 | if not line: | ||
35 | log("finished", "l") | ||
36 | break | ||
37 | splitted = line.split("|") | ||
38 | if line == "config|ready": | ||
39 | log("in config ready", "l") | ||
40 | send("register|filter|smtp-in|mail-from") | ||
41 | send("register|filter|smtp-in|data-line") | ||
42 | send("register|ready") | ||
43 | if splitted[0] != "filter": | ||
44 | continue | ||
45 | if len(splitted) < 7: | ||
46 | send("invalid filter command: expected >6 fields!") | ||
47 | sys.exit(1) | ||
48 | version = splitted[1] | ||
49 | action = splitted[4] | ||
50 | sid = splitted[5] | ||
51 | token = splitted[6] | ||
52 | token_sid = token_and_sid(version, sid, token) | ||
53 | rest = "|".join(splitted[7:]) | ||
54 | if action == "mail-from": | ||
55 | inheader[sid] = True | ||
56 | send("filter-result|{}|rewrite|<{}>".format(token_sid, mailaddr)) | ||
57 | continue | ||
58 | if action == "data-line": | ||
59 | if rest == "" and inheader.get(sid, False): | ||
60 | inheader[sid] = False | ||
61 | if rest == "." and not inheader.get(sid): | ||
62 | del(inheader[sid]) | ||
63 | if inheader.get(sid, False) and rest.upper().startswith("FROM:"): | ||
64 | send("filter-dataline|{}|From: {}".format(token_sid, mailaddr)) | ||
65 | else: | ||
66 | send("filter-dataline|{}|{}".format(token_sid, rest)) | ||
67 | continue | ||
68 | send("filter-result|{}|proceed".format(token_sid)) | ||
diff --git a/flakes/private/mail-relay/flake.lock b/flakes/private/mail-relay/flake.lock new file mode 100644 index 0000000..bbb2011 --- /dev/null +++ b/flakes/private/mail-relay/flake.lock | |||
@@ -0,0 +1,36 @@ | |||
1 | { | ||
2 | "nodes": { | ||
3 | "environment": { | ||
4 | "locked": { | ||
5 | "lastModified": 1, | ||
6 | "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=", | ||
7 | "path": "../environment", | ||
8 | "type": "path" | ||
9 | }, | ||
10 | "original": { | ||
11 | "path": "../environment", | ||
12 | "type": "path" | ||
13 | } | ||
14 | }, | ||
15 | "root": { | ||
16 | "inputs": { | ||
17 | "environment": "environment", | ||
18 | "secrets": "secrets" | ||
19 | } | ||
20 | }, | ||
21 | "secrets": { | ||
22 | "locked": { | ||
23 | "lastModified": 1, | ||
24 | "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=", | ||
25 | "path": "../../secrets", | ||
26 | "type": "path" | ||
27 | }, | ||
28 | "original": { | ||
29 | "path": "../../secrets", | ||
30 | "type": "path" | ||
31 | } | ||
32 | } | ||
33 | }, | ||
34 | "root": "root", | ||
35 | "version": 7 | ||
36 | } | ||
diff --git a/flakes/private/mail-relay/flake.nix b/flakes/private/mail-relay/flake.nix new file mode 100644 index 0000000..639bd06 --- /dev/null +++ b/flakes/private/mail-relay/flake.nix | |||
@@ -0,0 +1,58 @@ | |||
1 | { | ||
2 | inputs.environment.url = "path:../environment"; | ||
3 | inputs.secrets.url = "path:../../secrets"; | ||
4 | |||
5 | outputs = { self, environment, secrets }: { | ||
6 | nixosModule = self.nixosModules.mail-relay; | ||
7 | nixosModules.mail-relay = { lib, pkgs, config, name, ... }: | ||
8 | { | ||
9 | imports = [ | ||
10 | environment.nixosModule | ||
11 | secrets.nixosModule | ||
12 | ]; | ||
13 | options.myServices.mailRelay.enable = lib.mkEnableOption "enable Mail relay services"; | ||
14 | config = lib.mkIf config.myServices.mailRelay.enable { | ||
15 | secrets.keys."opensmtpd/creds" = { | ||
16 | user = "smtpd"; | ||
17 | group = "smtpd"; | ||
18 | permissions = "0400"; | ||
19 | text = '' | ||
20 | eldiron ${name}:${config.hostEnv.ldap.password} | ||
21 | ''; | ||
22 | }; | ||
23 | users.users.smtpd.extraGroups = [ "keys" ]; | ||
24 | services.opensmtpd = { | ||
25 | enable = true; | ||
26 | serverConfiguration = let | ||
27 | filter-rewrite-from = pkgs.runCommand "filter-rewrite-from.py" { | ||
28 | buildInputs = [ pkgs.python38 ]; | ||
29 | } '' | ||
30 | cp ${./filter-rewrite-from.py} $out | ||
31 | patchShebangs $out | ||
32 | ''; | ||
33 | in '' | ||
34 | table creds \ | ||
35 | "${config.secrets.fullPaths."opensmtpd/creds"}" | ||
36 | # FIXME: filtering requires 6.6, uncomment following lines when | ||
37 | # upgrading | ||
38 | # filter "fixfrom" \ | ||
39 | # proc-exec "${filter-rewrite-from} ${name}@immae.eu" | ||
40 | # listen on socket filter "fixfrom" | ||
41 | action "relay-rewrite-from" relay \ | ||
42 | helo ${config.hostEnv.fqdn} \ | ||
43 | host smtp+tls://eldiron@eldiron.immae.eu:587 \ | ||
44 | auth <creds> \ | ||
45 | mail-from ${name}@immae.eu | ||
46 | action "relay" relay \ | ||
47 | helo ${config.hostEnv.fqdn} \ | ||
48 | host smtp+tls://eldiron@eldiron.immae.eu:587 \ | ||
49 | auth <creds> | ||
50 | match for any !mail-from "@immae.eu" action "relay-rewrite-from" | ||
51 | match for any mail-from "@immae.eu" action "relay" | ||
52 | ''; | ||
53 | }; | ||
54 | environment.systemPackages = [ config.services.opensmtpd.package ]; | ||
55 | }; | ||
56 | }; | ||
57 | }; | ||
58 | } | ||
diff --git a/flakes/private/milters/flake.lock b/flakes/private/milters/flake.lock new file mode 100644 index 0000000..1a0c138 --- /dev/null +++ b/flakes/private/milters/flake.lock | |||
@@ -0,0 +1,186 @@ | |||
1 | { | ||
2 | "nodes": { | ||
3 | "environment": { | ||
4 | "locked": { | ||
5 | "lastModified": 1, | ||
6 | "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=", | ||
7 | "path": "../environment", | ||
8 | "type": "path" | ||
9 | }, | ||
10 | "original": { | ||
11 | "path": "../environment", | ||
12 | "type": "path" | ||
13 | } | ||
14 | }, | ||
15 | "files-watcher": { | ||
16 | "locked": { | ||
17 | "lastModified": 1, | ||
18 | "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=", | ||
19 | "path": "../../files-watcher", | ||
20 | "type": "path" | ||
21 | }, | ||
22 | "original": { | ||
23 | "path": "../../files-watcher", | ||
24 | "type": "path" | ||
25 | } | ||
26 | }, | ||
27 | "flake-utils": { | ||
28 | "locked": { | ||
29 | "lastModified": 1609246779, | ||
30 | "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=", | ||
31 | "owner": "numtide", | ||
32 | "repo": "flake-utils", | ||
33 | "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4", | ||
34 | "type": "github" | ||
35 | }, | ||
36 | "original": { | ||
37 | "owner": "numtide", | ||
38 | "repo": "flake-utils", | ||
39 | "type": "github" | ||
40 | } | ||
41 | }, | ||
42 | "flake-utils_2": { | ||
43 | "locked": { | ||
44 | "lastModified": 1609246779, | ||
45 | "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=", | ||
46 | "owner": "numtide", | ||
47 | "repo": "flake-utils", | ||
48 | "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4", | ||
49 | "type": "github" | ||
50 | }, | ||
51 | "original": { | ||
52 | "owner": "numtide", | ||
53 | "repo": "flake-utils", | ||
54 | "type": "github" | ||
55 | } | ||
56 | }, | ||
57 | "myuids": { | ||
58 | "locked": { | ||
59 | "lastModified": 1, | ||
60 | "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=", | ||
61 | "path": "../myuids", | ||
62 | "type": "path" | ||
63 | }, | ||
64 | "original": { | ||
65 | "path": "../myuids", | ||
66 | "type": "path" | ||
67 | } | ||
68 | }, | ||
69 | "myuids_2": { | ||
70 | "locked": { | ||
71 | "lastModified": 1, | ||
72 | "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=", | ||
73 | "path": "../myuids", | ||
74 | "type": "path" | ||
75 | }, | ||
76 | "original": { | ||
77 | "path": "../myuids", | ||
78 | "type": "path" | ||
79 | } | ||
80 | }, | ||
81 | "nixpkgs": { | ||
82 | "locked": { | ||
83 | "lastModified": 1597943282, | ||
84 | "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=", | ||
85 | "owner": "NixOS", | ||
86 | "repo": "nixpkgs", | ||
87 | "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38", | ||
88 | "type": "github" | ||
89 | }, | ||
90 | "original": { | ||
91 | "owner": "NixOS", | ||
92 | "repo": "nixpkgs", | ||
93 | "type": "github" | ||
94 | } | ||
95 | }, | ||
96 | "nixpkgs_2": { | ||
97 | "locked": { | ||
98 | "lastModified": 1597943282, | ||
99 | "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=", | ||
100 | "owner": "NixOS", | ||
101 | "repo": "nixpkgs", | ||
102 | "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38", | ||
103 | "type": "github" | ||
104 | }, | ||
105 | "original": { | ||
106 | "owner": "NixOS", | ||
107 | "repo": "nixpkgs", | ||
108 | "type": "github" | ||
109 | } | ||
110 | }, | ||
111 | "openarc": { | ||
112 | "inputs": { | ||
113 | "flake-utils": "flake-utils", | ||
114 | "myuids": "myuids", | ||
115 | "nixpkgs": "nixpkgs", | ||
116 | "openarc": "openarc_2" | ||
117 | }, | ||
118 | "locked": { | ||
119 | "lastModified": 1, | ||
120 | "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=", | ||
121 | "path": "../../openarc", | ||
122 | "type": "path" | ||
123 | }, | ||
124 | "original": { | ||
125 | "path": "../../openarc", | ||
126 | "type": "path" | ||
127 | } | ||
128 | }, | ||
129 | "openarc_2": { | ||
130 | "flake": false, | ||
131 | "locked": { | ||
132 | "lastModified": 1537545083, | ||
133 | "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=", | ||
134 | "owner": "trusteddomainproject", | ||
135 | "repo": "OpenARC", | ||
136 | "rev": "355ee2a1ca85acccce494478991983b54f794f4e", | ||
137 | "type": "github" | ||
138 | }, | ||
139 | "original": { | ||
140 | "owner": "trusteddomainproject", | ||
141 | "repo": "OpenARC", | ||
142 | "type": "github" | ||
143 | } | ||
144 | }, | ||
145 | "opendmarc": { | ||
146 | "inputs": { | ||
147 | "flake-utils": "flake-utils_2", | ||
148 | "myuids": "myuids_2", | ||
149 | "nixpkgs": "nixpkgs_2" | ||
150 | }, | ||
151 | "locked": { | ||
152 | "lastModified": 1, | ||
153 | "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=", | ||
154 | "path": "../../opendmarc", | ||
155 | "type": "path" | ||
156 | }, | ||
157 | "original": { | ||
158 | "path": "../../opendmarc", | ||
159 | "type": "path" | ||
160 | } | ||
161 | }, | ||
162 | "root": { | ||
163 | "inputs": { | ||
164 | "environment": "environment", | ||
165 | "files-watcher": "files-watcher", | ||
166 | "openarc": "openarc", | ||
167 | "opendmarc": "opendmarc", | ||
168 | "secrets": "secrets" | ||
169 | } | ||
170 | }, | ||
171 | "secrets": { | ||
172 | "locked": { | ||
173 | "lastModified": 1, | ||
174 | "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=", | ||
175 | "path": "../../secrets", | ||
176 | "type": "path" | ||
177 | }, | ||
178 | "original": { | ||
179 | "path": "../../secrets", | ||
180 | "type": "path" | ||
181 | } | ||
182 | } | ||
183 | }, | ||
184 | "root": "root", | ||
185 | "version": 7 | ||
186 | } | ||
diff --git a/flakes/private/milters/flake.nix b/flakes/private/milters/flake.nix new file mode 100644 index 0000000..c4de5b6 --- /dev/null +++ b/flakes/private/milters/flake.nix | |||
@@ -0,0 +1,106 @@ | |||
1 | { | ||
2 | inputs.secrets.url = "path:../../secrets"; | ||
3 | inputs.environment.url = "path:../environment"; | ||
4 | inputs.files-watcher.url = "path:../../files-watcher"; | ||
5 | inputs.opendmarc.url = "path:../../opendmarc"; | ||
6 | inputs.openarc.url = "path:../../openarc"; | ||
7 | outputs = { self, secrets, environment, opendmarc, openarc, files-watcher }: { | ||
8 | nixosModule = self.nixosModules.milters; | ||
9 | nixosModules.milters = { lib, pkgs, config, nodes, ... }: | ||
10 | { | ||
11 | imports = [ | ||
12 | secrets.nixosModule | ||
13 | environment.nixosModule | ||
14 | files-watcher.nixosModule | ||
15 | opendmarc.nixosModule | ||
16 | openarc.nixosModule | ||
17 | ]; | ||
18 | options.myServices.mail.milters.enable = lib.mkEnableOption "enable Mail milters"; | ||
19 | options.myServices.mail.milters.sockets = lib.mkOption { | ||
20 | type = lib.types.attrsOf lib.types.path; | ||
21 | default = { | ||
22 | opendkim = "/run/opendkim/opendkim.sock"; | ||
23 | opendmarc = config.services.opendmarc.socket; | ||
24 | openarc = config.services.openarc.socket; | ||
25 | }; | ||
26 | readOnly = true; | ||
27 | description = '' | ||
28 | milters sockets | ||
29 | ''; | ||
30 | }; | ||
31 | config = lib.mkIf config.myServices.mail.milters.enable { | ||
32 | secrets.keys = { | ||
33 | "opendkim" = { | ||
34 | isDir = true; | ||
35 | user = config.services.opendkim.user; | ||
36 | group = config.services.opendkim.group; | ||
37 | permissions = "0550"; | ||
38 | }; | ||
39 | "opendkim/eldiron.private" = { | ||
40 | user = config.services.opendkim.user; | ||
41 | group = config.services.opendkim.group; | ||
42 | permissions = "0400"; | ||
43 | text = config.myEnv.mail.dkim.eldiron.private; | ||
44 | }; | ||
45 | }; | ||
46 | users.users."${config.services.opendkim.user}".extraGroups = [ "keys" ]; | ||
47 | services.opendkim = { | ||
48 | enable = true; | ||
49 | socket = "local:${config.myServices.mail.milters.sockets.opendkim}"; | ||
50 | domains = | ||
51 | let | ||
52 | getDomains = p: lib.mapAttrsToList (n: v: v.fqdn) p.emailPolicies; | ||
53 | bydomain = builtins.mapAttrs (n: getDomains) nodes.eldiron.config.myServices.dns.zones; | ||
54 | domains' = lib.flatten (builtins.attrValues bydomain); | ||
55 | in | ||
56 | builtins.concatStringsSep "," domains'; | ||
57 | keyPath = config.secrets.fullPaths."opendkim"; | ||
58 | selector = "eldiron"; | ||
59 | configFile = pkgs.writeText "opendkim.conf" '' | ||
60 | SubDomains yes | ||
61 | UMask 002 | ||
62 | AlwaysAddARHeader yes | ||
63 | ''; | ||
64 | group = config.services.postfix.group; | ||
65 | }; | ||
66 | systemd.services.opendkim.serviceConfig.Slice = "mail.slice"; | ||
67 | systemd.services.opendkim.preStart = lib.mkBefore '' | ||
68 | # Skip the prestart script as keys are handled in secrets | ||
69 | exit 0 | ||
70 | ''; | ||
71 | services.filesWatcher.opendkim = { | ||
72 | restart = true; | ||
73 | paths = [ | ||
74 | config.secrets.fullPaths."opendkim/eldiron.private" | ||
75 | ]; | ||
76 | }; | ||
77 | |||
78 | systemd.services.milter_verify_from = { | ||
79 | description = "Verify from milter"; | ||
80 | after = [ "network.target" ]; | ||
81 | wantedBy = [ "multi-user.target" ]; | ||
82 | |||
83 | serviceConfig = { | ||
84 | Slice = "mail.slice"; | ||
85 | User = "postfix"; | ||
86 | Group = "postfix"; | ||
87 | ExecStart = let | ||
88 | pymilter = with pkgs.python38Packages; buildPythonPackage rec { | ||
89 | pname = "pymilter"; | ||
90 | version = "1.0.4"; | ||
91 | src = fetchPypi { | ||
92 | inherit pname version; | ||
93 | sha256 = "1bpcvq7d72q0zi7c8h5knhasywwz9gxc23n9fxmw874n5k8hsn7k"; | ||
94 | }; | ||
95 | doCheck = false; | ||
96 | buildInputs = [ pkgs.libmilter ]; | ||
97 | }; | ||
98 | python = pkgs.python38.withPackages (p: [ pymilter ]); | ||
99 | in "${python}/bin/python ${./verify_from.py} -s /run/milter_verify_from/verify_from.sock"; | ||
100 | RuntimeDirectory = "milter_verify_from"; | ||
101 | }; | ||
102 | }; | ||
103 | }; | ||
104 | }; | ||
105 | }; | ||
106 | } | ||
diff --git a/flakes/private/milters/verify_from.py b/flakes/private/milters/verify_from.py new file mode 100755 index 0000000..b75001e --- /dev/null +++ b/flakes/private/milters/verify_from.py | |||
@@ -0,0 +1,60 @@ | |||
1 | #!/usr/bin/env python3 | ||
2 | import Milter | ||
3 | import argparse | ||
4 | from email.header import decode_header | ||
5 | from email.utils import parseaddr | ||
6 | |||
7 | class CheckMilter(Milter.Base): | ||
8 | def __init__(self): | ||
9 | self.envelope_from = None | ||
10 | self.header_from = None | ||
11 | |||
12 | @Milter.noreply | ||
13 | def connect(self, IPname, family, hostaddr): | ||
14 | return Milter.CONTINUE | ||
15 | |||
16 | def hello(self, heloname): | ||
17 | return Milter.CONTINUE | ||
18 | |||
19 | def envfrom(self, mailfrom, *args): | ||
20 | self.envelope_from = parseaddr(mailfrom)[1] | ||
21 | return Milter.CONTINUE | ||
22 | |||
23 | @Milter.noreply | ||
24 | def envrcpt(self, to, *str): | ||
25 | return Milter.CONTINUE | ||
26 | |||
27 | @Milter.noreply | ||
28 | def header(self, name, hval): | ||
29 | if name.lower() == "from": | ||
30 | self.header_from = parseaddr(decode_header(hval)[-1][0])[1] | ||
31 | return Milter.CONTINUE | ||
32 | |||
33 | def eoh(self): | ||
34 | if self.header_from is not None and self.header_from != "" and self.header_from != self.envelope_from: | ||
35 | self.setreply("553", xcode="5.7.1", msg="<%s>: From header rejected: not matching envelope From %s" | ||
36 | % (self.header_from, self.envelope_from)) | ||
37 | return Milter.REJECT | ||
38 | |||
39 | return Milter.CONTINUE | ||
40 | |||
41 | @Milter.noreply | ||
42 | def body(self, chunk): | ||
43 | return Milter.CONTINUE | ||
44 | |||
45 | def eom(self): | ||
46 | return Milter.ACCEPT | ||
47 | |||
48 | def close(self): | ||
49 | return Milter.CONTINUE | ||
50 | |||
51 | def abort(self): | ||
52 | return Milter.CONTINUE | ||
53 | |||
54 | if __name__ == "__main__": | ||
55 | parser = argparse.ArgumentParser() | ||
56 | parser.add_argument("--socket", "-s", type=str, help="socket to listen to") | ||
57 | config = parser.parse_args() | ||
58 | |||
59 | Milter.factory = CheckMilter | ||
60 | Milter.runmilter("check_from", config.socket, timeout=300) | ||
diff --git a/flakes/private/monitoring/flake.lock b/flakes/private/monitoring/flake.lock new file mode 100644 index 0000000..2e156fb --- /dev/null +++ b/flakes/private/monitoring/flake.lock | |||
@@ -0,0 +1,67 @@ | |||
1 | { | ||
2 | "nodes": { | ||
3 | "environment": { | ||
4 | "locked": { | ||
5 | "lastModified": 1, | ||
6 | "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=", | ||
7 | "path": "../environment", | ||
8 | "type": "path" | ||
9 | }, | ||
10 | "original": { | ||
11 | "path": "../environment", | ||
12 | "type": "path" | ||
13 | } | ||
14 | }, | ||
15 | "naemon": { | ||
16 | "locked": { | ||
17 | "lastModified": 1, | ||
18 | "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=", | ||
19 | "path": "../../naemon", | ||
20 | "type": "path" | ||
21 | }, | ||
22 | "original": { | ||
23 | "path": "../../naemon", | ||
24 | "type": "path" | ||
25 | } | ||
26 | }, | ||
27 | "nixpkgs-lib": { | ||
28 | "locked": { | ||
29 | "dir": "lib", | ||
30 | "lastModified": 1691269286, | ||
31 | "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=", | ||
32 | "owner": "NixOS", | ||
33 | "repo": "nixpkgs", | ||
34 | "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804", | ||
35 | "type": "github" | ||
36 | }, | ||
37 | "original": { | ||
38 | "dir": "lib", | ||
39 | "owner": "NixOS", | ||
40 | "repo": "nixpkgs", | ||
41 | "type": "github" | ||
42 | } | ||
43 | }, | ||
44 | "root": { | ||
45 | "inputs": { | ||
46 | "environment": "environment", | ||
47 | "naemon": "naemon", | ||
48 | "nixpkgs-lib": "nixpkgs-lib", | ||
49 | "secrets": "secrets" | ||
50 | } | ||
51 | }, | ||
52 | "secrets": { | ||
53 | "locked": { | ||
54 | "lastModified": 1, | ||
55 | "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=", | ||
56 | "path": "../../secrets", | ||
57 | "type": "path" | ||
58 | }, | ||
59 | "original": { | ||
60 | "path": "../../secrets", | ||
61 | "type": "path" | ||
62 | } | ||
63 | } | ||
64 | }, | ||
65 | "root": "root", | ||
66 | "version": 7 | ||
67 | } | ||
diff --git a/flakes/private/monitoring/flake.nix b/flakes/private/monitoring/flake.nix new file mode 100644 index 0000000..b7c3997 --- /dev/null +++ b/flakes/private/monitoring/flake.nix | |||
@@ -0,0 +1,267 @@ | |||
1 | { | ||
2 | inputs = { | ||
3 | environment.url = "path:../environment"; | ||
4 | secrets.url = "path:../../secrets"; | ||
5 | naemon.url = "path:../../naemon"; | ||
6 | nixpkgs-lib.url = "github:NixOS/nixpkgs?dir=lib"; | ||
7 | }; | ||
8 | outputs = { self, environment, nixpkgs-lib, secrets, naemon }: { | ||
9 | nagios-cli-config = ./nagios-cli.cfg; | ||
10 | lib = rec { | ||
11 | expandedObject = kind: object: objects: | ||
12 | if object ? "use" | ||
13 | then expandedObject kind objects.templates.${kind}.${object.use} objects // object | ||
14 | else object; | ||
15 | |||
16 | objectsCommon = import ./objects_common.nix; | ||
17 | toObjects = import ./to_objects.nix { inherit (nixpkgs-lib) lib; }; | ||
18 | |||
19 | toMasterPassiveObject = svcTemplate: freshnessThresholdMultiplier: objects: | ||
20 | { | ||
21 | service = with nixpkgs-lib.lib; map (s: | ||
22 | { | ||
23 | host_name = (expandedObject "service" s objects).host_name; | ||
24 | use = svcTemplate; | ||
25 | retry_interval = "1"; | ||
26 | freshness_threshold = let | ||
27 | fs = expandedObject "service" s objects; | ||
28 | in if builtins.isInt fs.check_interval | ||
29 | then builtins.ceil (freshnessThresholdMultiplier * 60 * fs.check_interval) | ||
30 | else fs.check_interval; | ||
31 | } | ||
32 | // filterAttrs (k: v: builtins.elem k ["service_description"] || builtins.substring 0 1 k == "_") s | ||
33 | // mapAttrs' | ||
34 | (n: nameValuePair (removePrefix "__passive_" n)) | ||
35 | (filterAttrs (k: _: hasPrefix "__passive_" k) s) | ||
36 | ) objects.service; | ||
37 | host = objects.host; | ||
38 | }; | ||
39 | |||
40 | emailCheck = allCfg: host: hostFQDN: let | ||
41 | cfg = allCfg."${host}"; | ||
42 | reverseTargets = builtins.attrNames (nixpkgs-lib.lib.filterAttrs (k: v: builtins.elem host v.targets) allCfg); | ||
43 | to_email = cfg': host': | ||
44 | let sep = if nixpkgs-lib.lib.hasInfix "+" cfg'.mail_address then "_" else "+"; | ||
45 | in "${cfg'.mail_address}${sep}${host'}@${cfg'.mail_domain}"; | ||
46 | mails_to_send = builtins.concatStringsSep "," (map (n: to_email allCfg."${n}" host) cfg.targets); | ||
47 | mails_to_receive = builtins.concatStringsSep "," (map (n: "${to_email cfg n}:${n}") reverseTargets); | ||
48 | command = if cfg.local | ||
49 | then | ||
50 | [ "check_emails_local" "/var/lib/naemon/checks/email" mails_to_send mails_to_receive ] | ||
51 | else | ||
52 | [ "check_emails" cfg.login cfg.port mails_to_send mails_to_receive ]; | ||
53 | in | ||
54 | { | ||
55 | service_description = "${hostFQDN} email service is active"; | ||
56 | use = "mail-service"; | ||
57 | host_name = hostFQDN; | ||
58 | servicegroups = "webstatus-email"; | ||
59 | check_command = command; | ||
60 | }; | ||
61 | }; | ||
62 | nixosModule = self.nixosModules.monitoring; | ||
63 | nixosModules.monitoring = { config, pkgs, lib, ... }: | ||
64 | let | ||
65 | cfg = config.myServices.monitoring; | ||
66 | allPluginsConfig = import ./myplugins.nix { | ||
67 | inherit pkgs lib config; | ||
68 | sudo = "/run/wrappers/bin/sudo"; | ||
69 | }; | ||
70 | mypluginsConfig = lib.mapAttrs (n: v: | ||
71 | if builtins.isFunction v | ||
72 | then v (cfg.pluginsArgs."${n}" or {}) | ||
73 | else v | ||
74 | ) (lib.getAttrs cfg.activatedPlugins allPluginsConfig); | ||
75 | myplugins = let | ||
76 | mypluginsChunk = builtins.concatStringsSep "\n" (lib.mapAttrsToList (k: v: v.chunk or "") mypluginsConfig); | ||
77 | in pkgs.runCommand "buildplugins" { | ||
78 | buildInputs = [ pkgs.makeWrapper pkgs.perl ]; | ||
79 | } '' | ||
80 | mkdir $out | ||
81 | ${mypluginsChunk} | ||
82 | ''; | ||
83 | objectsModule = with lib.types; submodule { | ||
84 | options = { | ||
85 | command = lib.mkOption { | ||
86 | type = attrsOf str; | ||
87 | default = {}; | ||
88 | description = "Command definitions"; | ||
89 | }; | ||
90 | |||
91 | host = lib.mkOption { | ||
92 | type = attrsOf (attrsOf str); | ||
93 | default = {}; | ||
94 | description = "Host definitions"; | ||
95 | }; | ||
96 | hostgroup = lib.mkOption { | ||
97 | type = attrsOf (attrsOf str); | ||
98 | default = {}; | ||
99 | description = "Host group definitions"; | ||
100 | }; | ||
101 | hostdependency = lib.mkOption { | ||
102 | type = listOf (attrsOf str); | ||
103 | default = []; | ||
104 | description = "Host dependency definitions"; | ||
105 | }; | ||
106 | |||
107 | service = lib.mkOption { | ||
108 | type = listOf (attrsOf (oneOf [ str (listOf str) int ])); | ||
109 | # str -> string | ||
110 | # listOf str -> list to be concatenated with "!" | ||
111 | # int -> toString | ||
112 | default = []; | ||
113 | description = "Service definitions"; | ||
114 | }; | ||
115 | servicegroup = lib.mkOption { | ||
116 | type = attrsOf (attrsOf str); | ||
117 | default = {}; | ||
118 | description = "Service group definitions"; | ||
119 | }; | ||
120 | servicedependency = lib.mkOption { | ||
121 | type = listOf (attrsOf str); | ||
122 | default = []; | ||
123 | description = "Service dependency definitions"; | ||
124 | }; | ||
125 | |||
126 | contact = lib.mkOption { | ||
127 | type = attrsOf (attrsOf str); | ||
128 | default = {}; | ||
129 | description = "Contact definitions"; | ||
130 | }; | ||
131 | contactgroup = lib.mkOption { | ||
132 | type = attrsOf (attrsOf str); | ||
133 | default = {}; | ||
134 | description = "Contact group definitions"; | ||
135 | }; | ||
136 | |||
137 | timeperiod = lib.mkOption { | ||
138 | type = attrsOf (attrsOf str); | ||
139 | default = {}; | ||
140 | description = "Time period definitions"; | ||
141 | }; | ||
142 | |||
143 | templates = lib.mkOption { | ||
144 | description = "Template definitions"; | ||
145 | default = {}; | ||
146 | type = submodule { | ||
147 | options = { | ||
148 | service = lib.mkOption { type = attrsOf (attrsOf (either str int)); default = {}; }; | ||
149 | contact = lib.mkOption { type = attrsOf (attrsOf str); default = {}; }; | ||
150 | host = lib.mkOption { type = attrsOf (attrsOf str); default = {}; }; | ||
151 | }; | ||
152 | }; | ||
153 | }; | ||
154 | }; | ||
155 | }; | ||
156 | in | ||
157 | { | ||
158 | options = { | ||
159 | myServices.monitoring = { | ||
160 | enable = lib.mkOption { | ||
161 | type = lib.types.bool; | ||
162 | default = false; | ||
163 | description = '' | ||
164 | Whether to enable monitoring. | ||
165 | ''; | ||
166 | }; | ||
167 | master = lib.mkOption { | ||
168 | type = lib.types.bool; | ||
169 | default = false; | ||
170 | description = '' | ||
171 | This instance is the master instance | ||
172 | ''; | ||
173 | }; | ||
174 | pluginsArgs = lib.mkOption { | ||
175 | default = {}; | ||
176 | description = "Arguments to pass to the naemon plugin configuration"; | ||
177 | type = lib.types.attrsOf (lib.types.attrsOf lib.types.unspecified); | ||
178 | }; | ||
179 | activatedPlugins = lib.mkOption { | ||
180 | default = []; | ||
181 | description = "List of naemon plugins to activate"; | ||
182 | type = lib.types.listOf (lib.types.enum (builtins.attrNames allPluginsConfig)); | ||
183 | }; | ||
184 | fromMasterActivatedPlugins = lib.mkOption { | ||
185 | default = []; | ||
186 | description = "List of naemon plugins to activate from master"; | ||
187 | type = lib.types.listOf (lib.types.str); | ||
188 | }; | ||
189 | resources = lib.mkOption { | ||
190 | default = {}; | ||
191 | description = "List of additionnal resources elements"; | ||
192 | type = lib.types.attrsOf (lib.types.str); | ||
193 | }; | ||
194 | objects = lib.mkOption { | ||
195 | default = {}; | ||
196 | description = "Object definitions"; | ||
197 | type = objectsModule; | ||
198 | }; | ||
199 | fromMasterObjects = lib.mkOption { | ||
200 | default = {}; | ||
201 | description = "Object definitions of checks that should be executed from master"; | ||
202 | type = objectsModule; | ||
203 | }; | ||
204 | }; | ||
205 | }; | ||
206 | |||
207 | imports = [ | ||
208 | environment.nixosModule | ||
209 | secrets.nixosModule | ||
210 | naemon.nixosModule | ||
211 | ]; | ||
212 | config = lib.mkIf cfg.enable { | ||
213 | myServices.monitoring.objects.command = | ||
214 | lib.foldr (v: o: o // (v.commands or {})) {} (builtins.attrValues mypluginsConfig); | ||
215 | |||
216 | security.sudo.extraRules = let | ||
217 | pluginsSudo = lib.lists.remove null (lib.mapAttrsToList (k: v: | ||
218 | if (v ? sudo) | ||
219 | then ({ users = [ "naemon" ]; } // (v.sudo myplugins)) | ||
220 | else null) mypluginsConfig); | ||
221 | in pluginsSudo; | ||
222 | |||
223 | environment.etc.cnagios.source = "${pkgs.cnagios}/share/doc/cnagios"; | ||
224 | environment.systemPackages = let | ||
225 | nagios-cli = pkgs.writeScriptBin "nagios-cli" '' | ||
226 | #!${pkgs.stdenv.shell} | ||
227 | sudo -u naemon ${pkgs.nagios-cli}/bin/nagios-cli -c ${self.nagios-cli-config} | ||
228 | ''; | ||
229 | in [ | ||
230 | pkgs.cnagios | ||
231 | nagios-cli | ||
232 | ]; | ||
233 | secrets.keys = { | ||
234 | "naemon/id_rsa" = { | ||
235 | user = "naemon"; | ||
236 | group = "naemon"; | ||
237 | permissions = "0400"; | ||
238 | text = config.myEnv.monitoring.ssh_secret_key; | ||
239 | }; | ||
240 | "naemon/resources.cfg".keyDependencies = [ myplugins ]; | ||
241 | }; | ||
242 | services.naemon = { | ||
243 | enable = true; | ||
244 | extraConfig = '' | ||
245 | use_syslog=1 | ||
246 | log_initial_states=1 | ||
247 | date_format=iso8601 | ||
248 | admin_email=${config.myEnv.monitoring.email} | ||
249 | '' + lib.optionalString (!cfg.master) '' | ||
250 | obsess_over_services=1 | ||
251 | ocsp_command=notify-master | ||
252 | ''; | ||
253 | extraResource = let | ||
254 | resources = [cfg.resources or {}] ++ (lib.mapAttrsToList (k: v: v.resources or {}) mypluginsConfig); | ||
255 | joined = lib.zipAttrsWith (n: v: if builtins.length (lib.unique v) == 1 then builtins.head v else abort "Non-unique resources names") resources; | ||
256 | joinedStr = builtins.concatStringsSep "\n" (lib.mapAttrsToList (k: v: "$" + "${k}$=${v}") joined); | ||
257 | in '' | ||
258 | $USER2$=${myplugins} | ||
259 | ${joinedStr} | ||
260 | ''; | ||
261 | objectDefs = | ||
262 | self.lib.toObjects cfg.objects; | ||
263 | }; | ||
264 | }; | ||
265 | }; | ||
266 | }; | ||
267 | } | ||
diff --git a/flakes/private/monitoring/myplugins.nix b/flakes/private/monitoring/myplugins.nix new file mode 100644 index 0000000..35730bb --- /dev/null +++ b/flakes/private/monitoring/myplugins.nix | |||
@@ -0,0 +1,400 @@ | |||
1 | { sudo, pkgs, lib, config }: | ||
2 | let | ||
3 | cfg = config.myServices.monitoring; | ||
4 | in | ||
5 | { | ||
6 | notify-secondary = { | ||
7 | resources = { | ||
8 | USER200 = config.myEnv.monitoring.status_url; | ||
9 | USER201 = config.myEnv.monitoring.status_token; | ||
10 | }; | ||
11 | commands = { | ||
12 | notify-master = "$USER2$/send_nrdp.sh -u \"$USER200$\" -t \"$USER201$\" -H \"$HOSTADDRESS$\" -s \"$SERVICEDESC$\" -S \"$SERVICESTATEID$\" -o \"$SERVICEOUTPUT$ | $SERVICEPERFDATA$\""; | ||
13 | }; | ||
14 | chunk = '' | ||
15 | cp ${./plugins}/send_nrdp.sh $out | ||
16 | patchShebangs $out/send_nrdp.sh | ||
17 | wrapProgram $out/send_nrdp.sh --prefix PATH : ${lib.makeBinPath [ | ||
18 | pkgs.curl pkgs.jq | ||
19 | ]} | ||
20 | ''; | ||
21 | }; | ||
22 | notify-primary = { | ||
23 | resources = { | ||
24 | USER210 = config.myEnv.monitoring.apprise_urls; | ||
25 | }; | ||
26 | commands = { | ||
27 | # $OVE is to force naemon to run via shell instead of execve which fails here | ||
28 | notify-host-by-email = "ADMINEMAIL=\"$ADMINEMAIL$\" SERVICENOTIFICATIONID=\"$SERVICENOTIFICATIONID$\" HOSTSTATE=\"$HOSTSTATE$\" HOSTOUTPUT=\"$HOSTOUTPUT$\" $USER2$/notify_by_email host \"$NOTIFICATIONTYPE$\" \"$HOSTALIAS$\" \"$LONGDATETIME$\" \"$CONTACTEMAIL$\" $OVE"; | ||
29 | # $OVE is to force naemon to run via shell instead of execve which fails here | ||
30 | notify-service-by-email = "ADMINEMAIL=\"$ADMINEMAIL$\" SERVICENOTIFICATIONID=\"$SERVICENOTIFICATIONID$\" SERVICEDESC=\"$SERVICEDESC$\" SERVICESTATE=\"$SERVICESTATE$\" SERVICEOUTPUT=\"$SERVICEOUTPUT$\" $USER2$/notify_by_email service \"$NOTIFICATIONTYPE$\" \"$HOSTALIAS$\" \"$LONGDATETIME$\" \"$CONTACTEMAIL$\" $OVE"; | ||
31 | notify-host-by-apprise = "HOST=\"$HOSTALIAS$\" NOTIFICATIONTYPE=\"$NOTIFICATIONTYPE$\" HOSTSTATE=\"$HOSTSTATE$\" HOSTOUTPUT=\"$HOSTOUTPUT$\" $USER2$/notify_by_apprise host \"$ARG1$\""; | ||
32 | notify-service-by-apprise = "HOST=\"$HOSTALIAS$\" NOTIFICATIONTYPE=\"$NOTIFICATIONTYPE$\" SERVICESTATE=\"$SERVICESTATE$\" SERVICEDESC=\"$SERVICEDESC$\" SERVICEOUTPUT=\"$SERVICEOUTPUT$\" $USER2$/notify_by_apprise service \"$ARG1$\""; | ||
33 | }; | ||
34 | chunk = '' | ||
35 | cp ${./plugins}/{notify_by_email,notify_by_apprise} $out | ||
36 | patchShebangs $out/{notify_by_email,notify_by_apprise} | ||
37 | wrapProgram $out/notify_by_email --prefix PATH : ${lib.makeBinPath [ | ||
38 | pkgs.mailutils | ||
39 | ]} | ||
40 | wrapProgram $out/notify_by_apprise --prefix PATH : ${lib.makeBinPath [ | ||
41 | pkgs.apprise | ||
42 | ]} | ||
43 | ''; | ||
44 | }; | ||
45 | bandwidth = { | ||
46 | commands = { | ||
47 | check_local_bandwidth = "$USER2$/check_bandwidth -i=$ARG1$ -w $ARG2$ -c $ARG3$"; | ||
48 | }; | ||
49 | chunk = '' | ||
50 | cp ${./plugins}/check_bandwidth $out/ | ||
51 | patchShebangs $out/check_bandwidth | ||
52 | wrapProgram $out/check_bandwidth --prefix PATH : ${lib.makeBinPath [ | ||
53 | pkgs.iproute pkgs.bc | ||
54 | ]} | ||
55 | ''; | ||
56 | }; | ||
57 | command = { | ||
58 | commands = { | ||
59 | check_command_match = "$USER2$/check_command -c \"$ARG1$\" -C \"$ARG2$\" $ARG3$"; | ||
60 | check_command_output = "$USER2$/check_command -c \"$ARG1$\" -s 0 -o \"$ARG2$\" $ARG3$"; | ||
61 | check_command_status = "$USER2$/check_command -c \"$ARG1$\" -s \"$ARG2$\" $ARG3$"; | ||
62 | }; | ||
63 | chunk = '' | ||
64 | cp ${./plugins}/check_command $out/ | ||
65 | patchShebangs $out/check_command | ||
66 | wrapProgram $out/check_command --prefix PATH : ${config.security.wrapperDir} | ||
67 | ''; | ||
68 | }; | ||
69 | dns = { | ||
70 | commands = { | ||
71 | check_dns = "$USER1$/check_dns -H $ARG1$ -s $HOSTADDRESS$ $ARG2$"; | ||
72 | check_external_dns = "$USER1$/check_dns -H $ARG2$ -s $ARG1$ $ARG3$"; | ||
73 | }; | ||
74 | }; | ||
75 | mdadm = { | ||
76 | commands = { | ||
77 | check_mdadm = "$USER2$/check_command -c \"${pkgs.mdadm}/bin/mdadm --monitor --scan -1\" -s 0 -o \"^$\" -r root"; | ||
78 | }; | ||
79 | sudo = _: { | ||
80 | commands = [ | ||
81 | { command = "${pkgs.mdadm}/bin/mdadm --monitor --scan -1"; options = [ "NOPASSWD" ]; } | ||
82 | ]; | ||
83 | runAs = "root"; | ||
84 | }; | ||
85 | }; | ||
86 | postfix = { | ||
87 | commands = { | ||
88 | check_mailq = "$USER1$/check_mailq -s -w 1 -c 2"; | ||
89 | }; | ||
90 | sudo = _: { | ||
91 | commands = [ | ||
92 | { command = "${pkgs.postfix}/bin/mailq"; options = [ "NOPASSWD" ]; } | ||
93 | ]; | ||
94 | runAs = "root"; | ||
95 | }; | ||
96 | }; | ||
97 | emails = { | ||
98 | resources = { | ||
99 | USER203 = config.secrets.fullPaths."naemon/id_rsa"; | ||
100 | }; | ||
101 | commands = { | ||
102 | check_emails = "$USER2$/check_emails -H $HOSTADDRESS$ -i $USER203$ -l $ARG1$ -p $ARG2$ -s $ARG3$ -f $ARG4$"; | ||
103 | check_emails_local = "$USER2$/check_emails -H $HOSTADDRESS$ -n $ARG1$ -r $ADMINEMAIL$ -s $ARG2$ -f $ARG3$"; | ||
104 | }; | ||
105 | chunk = let | ||
106 | send_mails = pkgs.runCommand "send_mails" { | ||
107 | buildInputs = [ pkgs.makeWrapper ]; | ||
108 | } '' | ||
109 | mkdir -p $out/bin | ||
110 | cp ${./send_mails} $out/bin/send_mails | ||
111 | patchShebangs $out | ||
112 | wrapProgram $out/bin/send_mails --prefix PATH : ${lib.makeBinPath [ | ||
113 | pkgs.mailutils | ||
114 | ]} | ||
115 | ''; | ||
116 | in '' | ||
117 | cp ${./plugins}/check_emails $out/ | ||
118 | patchShebangs $out/check_emails | ||
119 | wrapProgram $out/check_emails --prefix PATH : ${lib.makeBinPath [ | ||
120 | pkgs.openssh send_mails | ||
121 | ]} --prefix PERL5LIB : ${pkgs.perlPackages.makePerlPath [ | ||
122 | pkgs.perlPackages.TimeDate | ||
123 | ]} | ||
124 | ''; | ||
125 | }; | ||
126 | eriomem = { | ||
127 | resources = { | ||
128 | USER208 = builtins.concatStringsSep "," (map (builtins.concatStringsSep ":") config.myEnv.monitoring.eriomem_keys); | ||
129 | }; | ||
130 | commands = { | ||
131 | check_backup_eriomem = "$USER2$/check_eriomem $USER208$"; | ||
132 | check_backup_eriomem_age = "$USER2$/check_backup_eriomem_age $ARG1$"; | ||
133 | }; | ||
134 | chunk = '' | ||
135 | cp ${./plugins}/check_eriomem $out/ | ||
136 | patchShebangs $out/check_eriomem | ||
137 | wrapProgram $out/check_eriomem --prefix PATH : ${lib.makeBinPath [ | ||
138 | pkgs.s3cmd pkgs.python38 | ||
139 | ]} | ||
140 | cp ${./plugins}/check_backup_age $out/check_backup_eriomem_age | ||
141 | patchShebangs $out/check_backup_eriomem_age | ||
142 | wrapProgram $out/check_backup_eriomem_age --prefix PATH : ${lib.makeBinPath [ | ||
143 | pkgs.duplicity | ||
144 | ]} --set SECRETS_PATH ${lib.optionalString cfg.master config.secrets.fullPaths."eriomem_access_key"} | ||
145 | ''; | ||
146 | }; | ||
147 | file_date = { | ||
148 | commands = { | ||
149 | check_last_file_date = "${sudo} -u \"$ARG3$\" $USER2$/check_last_file_date \"$ARG1$\" \"$ARG2$\""; | ||
150 | }; | ||
151 | chunk = '' | ||
152 | cp ${./plugins}/check_last_file_date $out/ | ||
153 | patchShebangs $out/check_last_file_date | ||
154 | ''; | ||
155 | sudo = myplugins: { | ||
156 | commands = [ | ||
157 | { command = "${myplugins}/check_last_file_date /backup2/*"; options = [ "NOPASSWD" ]; } | ||
158 | ]; | ||
159 | runAs = "ALL"; | ||
160 | }; | ||
161 | }; | ||
162 | ftp = { | ||
163 | commands = { | ||
164 | check_ftp_database = "$USER2$/check_ftp_database"; | ||
165 | }; | ||
166 | chunk = '' | ||
167 | cp ${./plugins}/check_ftp_database $out/ | ||
168 | patchShebangs $out/check_ftp_database | ||
169 | wrapProgram $out/check_ftp_database --prefix PATH : ${lib.makeBinPath [ | ||
170 | pkgs.lftp | ||
171 | ]} | ||
172 | ''; | ||
173 | }; | ||
174 | git = { | ||
175 | resources = { | ||
176 | USER203 = config.secrets.fullPaths."naemon/id_rsa"; | ||
177 | }; | ||
178 | commands = { | ||
179 | check_git = "$USER2$/check_git $USER203$"; | ||
180 | }; | ||
181 | chunk = '' | ||
182 | cp ${./plugins}/check_git $out/ | ||
183 | patchShebangs $out/check_git | ||
184 | wrapProgram $out/check_git --prefix PATH : ${lib.makeBinPath [ | ||
185 | pkgs.git pkgs.openssh | ||
186 | ]} | ||
187 | ''; | ||
188 | }; | ||
189 | http = { | ||
190 | resources = { | ||
191 | USER202 = config.myEnv.monitoring.http_user_password; | ||
192 | }; | ||
193 | commands = { | ||
194 | check_http = "$USER1$/check_http --sni -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\""; | ||
195 | check_https = "$USER1$/check_http --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\""; | ||
196 | check_https_4 = "$USER1$/check_http -4 --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\""; | ||
197 | check_https_6 = "$USER1$/check_http -6 --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\""; | ||
198 | check_https_auth = "$USER1$/check_http --sni --ssl -a \"$USER202$\" -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\""; | ||
199 | check_https_certificate = "$USER1$/check_http --sni --ssl -H \"$ARG1$\" -C 21,15"; | ||
200 | check_https_code = "$USER1$/check_http --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -e \"$ARG3$\" -r \"$ARG4$\""; | ||
201 | }; | ||
202 | }; | ||
203 | imap = { | ||
204 | resources = { | ||
205 | USER204 = config.myEnv.monitoring.imap_login; | ||
206 | USER205 = config.myEnv.monitoring.imap_password; | ||
207 | }; | ||
208 | commands = { | ||
209 | check_imap_connection = "$USER2$/check_imap_connection -u \"$USER204$\" -p \"$USER205$\" -H \"imap.immae.eu:143\""; | ||
210 | }; | ||
211 | chunk = '' | ||
212 | cp ${./plugins}/check_imap_connection $out/ | ||
213 | patchShebangs $out/check_imap_connection | ||
214 | wrapProgram $out/check_imap_connection --prefix PATH : ${lib.makeBinPath [ | ||
215 | pkgs.openssl | ||
216 | ]} | ||
217 | ''; | ||
218 | }; | ||
219 | megaraid = let | ||
220 | megacli = pkgs.megacli.overrideAttrs(old: { meta = old.meta // { license = null; }; }); | ||
221 | in { | ||
222 | commands = { | ||
223 | check_megaraid = "$USER2$/check_megaraid_sas --sudo"; | ||
224 | }; | ||
225 | chunk = let | ||
226 | megaCliPlugin = pkgs.runCommand "megaCliPlugin" { | ||
227 | plugin = pkgs.fetchurl { | ||
228 | name = "check_megaraid_sas"; | ||
229 | url = "https://exchange.nagios.org/components/com_mtree/attachment.php?link_id=6381&cf_id=24"; | ||
230 | sha256 = "0yf60p4c0hb4q3fng9fc14qc89bqm0f1sijayzygadaqcl44jx4p"; | ||
231 | }; | ||
232 | } '' | ||
233 | mkdir $out | ||
234 | cp $plugin $out/check_megaraid_sas | ||
235 | chmod +x $out/check_megaraid_sas | ||
236 | patchShebangs $out | ||
237 | substituteInPlace $out/check_megaraid_sas --replace /usr/sbin/MegaCli ${megacli}/bin/MegaCli64 | ||
238 | substituteInPlace $out/check_megaraid_sas --replace 'sudo $megacli' '${sudo} $megacli' | ||
239 | sed -i -e "s/use utils qw(%ERRORS);/my %ERRORS = ('OK' => 0, 'WARNING' => 1, 'CRITICAL' => 2, 'UNKNOWN' => 3);/" $out/check_megaraid_sas | ||
240 | ''; | ||
241 | in '' | ||
242 | cp ${megaCliPlugin}/check_megaraid_sas $out/ | ||
243 | patchShebangs $out/check_megaraid_sas | ||
244 | ''; | ||
245 | sudo = _: { | ||
246 | commands = [ | ||
247 | { command = "${megacli}/bin/MegaCli64"; options = [ "NOPASSWD" ]; } | ||
248 | ]; | ||
249 | runAs = "root"; | ||
250 | }; | ||
251 | }; | ||
252 | memory = { | ||
253 | commands = { | ||
254 | check_memory = "$USER2$/check_mem.sh -w $ARG1$ -c $ARG2$"; | ||
255 | }; | ||
256 | chunk = '' | ||
257 | cp ${./plugins}/check_mem.sh $out/ | ||
258 | patchShebangs $out/check_mem.sh | ||
259 | wrapProgram $out/check_mem.sh --prefix PATH : ${lib.makeBinPath [ | ||
260 | pkgs.gnugrep pkgs.gawk pkgs.procps | ||
261 | ]} | ||
262 | ''; | ||
263 | }; | ||
264 | mysql = { | ||
265 | commands = { | ||
266 | check_mysql_replication = "${sudo} -u mysql $USER2$/check_mysql_replication \"$ARG1$\" \"$ARG2$\""; | ||
267 | }; | ||
268 | chunk = '' | ||
269 | cp ${./plugins}/check_mysql_replication $out/ | ||
270 | patchShebangs $out/check_mysql_replication | ||
271 | wrapProgram $out/check_mysql_replication --prefix PATH : ${lib.makeBinPath [ | ||
272 | pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.mariadb | ||
273 | ]} | ||
274 | ''; | ||
275 | sudo = myplugins: { | ||
276 | commands = [ | ||
277 | { command = "${myplugins}/check_mysql_replication *"; options = [ "NOPASSWD" ]; } | ||
278 | ]; | ||
279 | runAs = "mysql"; | ||
280 | }; | ||
281 | }; | ||
282 | openldap = { | ||
283 | commands = { | ||
284 | check_openldap_replication = "${sudo} -u openldap $USER2$/check_openldap_replication \"$ARG1$\" \"$ARG2$\" \"$ARG3$\" \"$ARG4$\" \"$ARG5$\""; | ||
285 | }; | ||
286 | chunk = '' | ||
287 | cp ${./plugins}/check_openldap_replication $out/ | ||
288 | patchShebangs $out/check_openldap_replication | ||
289 | wrapProgram $out/check_openldap_replication --prefix PATH : ${lib.makeBinPath [ | ||
290 | pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.openldap | ||
291 | ]} | ||
292 | ''; | ||
293 | sudo = myplugins: { | ||
294 | commands = [ | ||
295 | { command = "${myplugins}/check_openldap_replication *"; options = [ "NOPASSWD" ]; } | ||
296 | ]; | ||
297 | runAs = "openldap"; | ||
298 | }; | ||
299 | }; | ||
300 | ovh = { | ||
301 | resources = { | ||
302 | USER209 = builtins.concatStringsSep "," [ | ||
303 | config.myEnv.monitoring.ovh_sms.endpoint | ||
304 | config.myEnv.monitoring.ovh_sms.application_key | ||
305 | config.myEnv.monitoring.ovh_sms.application_secret | ||
306 | config.myEnv.monitoring.ovh_sms.consumer_key | ||
307 | config.myEnv.monitoring.ovh_sms.account | ||
308 | ]; | ||
309 | }; | ||
310 | commands = { | ||
311 | check_backup_ovh_age = "$USER2$/check_backup_ovh_age $ARG1$"; | ||
312 | check_ovh_sms = "$USER2$/check_ovh_sms \"$USER209$\""; | ||
313 | }; | ||
314 | chunk = '' | ||
315 | cp ${./plugins}/check_backup_age $out/check_backup_ovh_age | ||
316 | patchShebangs $out/check_backup_ovh_age | ||
317 | wrapProgram $out/check_backup_ovh_age --prefix PATH : ${lib.makeBinPath [ | ||
318 | pkgs.duplicity | ||
319 | ]} --set SECRETS_PATH ${lib.optionalString cfg.master config.secrets.fullPaths."ovh_access_key"} | ||
320 | cp ${./plugins}/check_ovh_sms $out/ | ||
321 | patchShebangs $out/check_ovh_sms | ||
322 | wrapProgram $out/check_ovh_sms --prefix PATH : ${lib.makeBinPath [ | ||
323 | (pkgs.python38.withPackages (ps: [ps.ovh])) | ||
324 | ]} | ||
325 | ''; | ||
326 | }; | ||
327 | postgresql = { package }: { | ||
328 | commands = { | ||
329 | check_postgresql_replication = "${sudo} -u postgres $USER2$/check_postgres_replication \"$ARG1$\" \"$ARG2$\" \"$ARG3$\""; | ||
330 | check_postgresql_database_count = "$USER2$/check_postgres_database_count \"$ARG1$\" \"$ARG2$\" \"$ARG3$\""; | ||
331 | }; | ||
332 | chunk = '' | ||
333 | cp ${./plugins}/check_postgres_replication $out/ | ||
334 | patchShebangs $out/check_postgres_replication | ||
335 | wrapProgram $out/check_postgres_replication --prefix PATH : ${lib.makeBinPath [ | ||
336 | package | ||
337 | ]} | ||
338 | cp ${./plugins}/check_postgres_database_count $out/ | ||
339 | patchShebangs $out/check_postgres_database_count | ||
340 | wrapProgram $out/check_postgres_database_count --prefix PATH : ${lib.makeBinPath [ | ||
341 | package | ||
342 | ]} | ||
343 | ''; | ||
344 | |||
345 | sudo = myplugins: { | ||
346 | commands = [ | ||
347 | { command = "${myplugins}/check_postgres_replication *"; options = [ "NOPASSWD" ]; } | ||
348 | ]; | ||
349 | runAs = "postgres"; | ||
350 | }; | ||
351 | }; | ||
352 | redis = { | ||
353 | commands = { | ||
354 | check_redis_replication = "${sudo} -u redis $USER2$/check_redis_replication \"$ARG1$\""; | ||
355 | }; | ||
356 | chunk = '' | ||
357 | cp ${./plugins}/check_redis_replication $out/ | ||
358 | patchShebangs $out/check_redis_replication | ||
359 | wrapProgram $out/check_redis_replication --prefix PATH : ${lib.makeBinPath [ | ||
360 | pkgs.gnugrep pkgs.coreutils pkgs.redis | ||
361 | ]} | ||
362 | ''; | ||
363 | sudo = myplugins: { | ||
364 | commands = [ | ||
365 | { command = "${myplugins}/check_redis_replication *"; options = [ "NOPASSWD" ]; } | ||
366 | ]; | ||
367 | runAs = "redis"; | ||
368 | }; | ||
369 | }; | ||
370 | tcp = { | ||
371 | commands = { | ||
372 | check_tcp = "$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -e \"$ARG2$\" -Mcrit"; | ||
373 | check_tcp_ssl = "$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -S -D 21,15"; | ||
374 | }; | ||
375 | }; | ||
376 | zfs = { | ||
377 | commands = { | ||
378 | check_zfs = "$USER2$/check_zpool.sh -p ALL -w 80 -c 90"; | ||
379 | check_zfs_snapshot = "$USER2$/check_zfs_snapshot -d $ARG1$ -c 18000 -w 14400"; | ||
380 | }; | ||
381 | chunk = let | ||
382 | zfsPlugin = pkgs.fetchurl { | ||
383 | url = "https://www.claudiokuenzler.com/monitoring-plugins/check_zpools.sh"; | ||
384 | sha256 = "0p9ms9340in80jkds4kfspw62xnzsv5s7ni9m28kxyd0bnzkbzhf"; | ||
385 | }; | ||
386 | in '' | ||
387 | cp ${zfsPlugin} $out/check_zpool.sh | ||
388 | chmod +x $out/check_zpool.sh | ||
389 | patchShebangs $out/check_zpool.sh | ||
390 | wrapProgram $out/check_zpool.sh --prefix PATH : ${lib.makeBinPath [ | ||
391 | pkgs.which pkgs.zfs pkgs.gawk | ||
392 | ]} | ||
393 | cp ${./plugins}/check_zfs_snapshot $out | ||
394 | patchShebangs $out/check_zfs_snapshot | ||
395 | wrapProgram $out/check_zfs_snapshot --prefix PATH : ${lib.makeBinPath [ | ||
396 | pkgs.zfs pkgs.coreutils pkgs.gawk pkgs.gnugrep | ||
397 | ]} | ||
398 | ''; | ||
399 | }; | ||
400 | } | ||
diff --git a/flakes/private/monitoring/nagios-cli.cfg b/flakes/private/monitoring/nagios-cli.cfg new file mode 100644 index 0000000..7bd30cb --- /dev/null +++ b/flakes/private/monitoring/nagios-cli.cfg | |||
@@ -0,0 +1,68 @@ | |||
1 | # -*- coding: utf-8; -*- | ||
2 | |||
3 | [cli] | ||
4 | history = /var/lib/naemon/nagios_cli_history | ||
5 | |||
6 | [ui] | ||
7 | color = 1 | ||
8 | prompt = naemon %s> | ||
9 | prompt_separator = " → " | ||
10 | |||
11 | [nagios] | ||
12 | log = /var/log/naemon | ||
13 | command_file = /run/naemon/naemon.cmd | ||
14 | log_file = %(log)s/naemon.log | ||
15 | object_cache_file = /var/lib/naemon/objects.cache | ||
16 | status_file = /var/lib/naemon/status.dat | ||
17 | |||
18 | [object] | ||
19 | host.status = | ||
20 | host_name | ||
21 | current_state | ||
22 | plugin_output | ||
23 | is_flapping | ||
24 | last_check | ||
25 | last_time_down | ||
26 | last_state_change | ||
27 | check_period | ||
28 | notification_period | ||
29 | current_attempt | ||
30 | max_attempts | ||
31 | service.status = | ||
32 | host_name | ||
33 | service_description | ||
34 | current_state | ||
35 | is_flapping | ||
36 | plugin_output | ||
37 | last_time_down | ||
38 | last_state_change | ||
39 | last_check | ||
40 | next_check | ||
41 | check_interval | ||
42 | check_latency | ||
43 | check_period | ||
44 | notification_period | ||
45 | current_attempt | ||
46 | max_attempts | ||
47 | |||
48 | [string] | ||
49 | level.ok = ↑ OK | ||
50 | level.warning = ! WARNING | ||
51 | level.critical = ↓ CRITICAL | ||
52 | level.unknown = ↕ UNKNOWN | ||
53 | |||
54 | [color] | ||
55 | error = bold_red | ||
56 | |||
57 | prompt = normal | ||
58 | prompt.object = bold | ||
59 | |||
60 | host.host_name = bold | ||
61 | host.plugin_output = bold | ||
62 | service.plugin_output = bold | ||
63 | |||
64 | level.ok = bold_green | ||
65 | level.warning = bold_yellow | ||
66 | level.critical = bold_red | ||
67 | level.unknown = bold_magenta | ||
68 | |||
diff --git a/flakes/private/monitoring/objects_common.nix b/flakes/private/monitoring/objects_common.nix new file mode 100644 index 0000000..1da7764 --- /dev/null +++ b/flakes/private/monitoring/objects_common.nix | |||
@@ -0,0 +1,227 @@ | |||
1 | { hostFQDN | ||
2 | , hostName | ||
3 | , interface ? "eth0" | ||
4 | , processWarn ? "250" | ||
5 | , processAlert ? "400" | ||
6 | , loadWarn ? "0.9" | ||
7 | , load5Warn ? loadWarn | ||
8 | , load15Warn ? load5Warn | ||
9 | , loadAlert ? "1.0" | ||
10 | , load5Alert ? loadAlert | ||
11 | , load15Alert ? load5Alert | ||
12 | , master | ||
13 | , ... | ||
14 | }: | ||
15 | { | ||
16 | host = { | ||
17 | "${hostFQDN}" = { | ||
18 | alias = hostFQDN; | ||
19 | address = hostFQDN; | ||
20 | use = "linux-server"; | ||
21 | hostgroups = "webstatus-hosts"; | ||
22 | _webstatus_name = hostName; | ||
23 | _webstatus_vhost = "status.immae.eu"; | ||
24 | }; | ||
25 | }; | ||
26 | service = [ | ||
27 | { | ||
28 | service_description = "Size on root partition"; | ||
29 | use = "local-service"; | ||
30 | check_command = ["check_local_disk" "20%" "10%" "/"]; | ||
31 | __passive_servicegroups = "webstatus-resources"; | ||
32 | } | ||
33 | { | ||
34 | service_description = "Total number of process"; | ||
35 | use = "local-service"; | ||
36 | check_command = [ | ||
37 | "check_local_procs" | ||
38 | processWarn | ||
39 | processAlert | ||
40 | "RSZDT" | ||
41 | ]; | ||
42 | __passive_servicegroups = "webstatus-resources"; | ||
43 | } | ||
44 | { | ||
45 | service_description = "Network bandwidth"; | ||
46 | use = "local-service"; | ||
47 | check_interval = 2; | ||
48 | max_check_attempts = "20"; | ||
49 | retry_interval = "2"; | ||
50 | check_command = [ | ||
51 | "check_local_bandwidth" | ||
52 | interface | ||
53 | "20480" # kb/s | ||
54 | "51200" # kb/s | ||
55 | ]; | ||
56 | __passive_servicegroups = "webstatus-resources"; | ||
57 | } | ||
58 | { | ||
59 | service_description = "Average load"; | ||
60 | use = "local-service"; | ||
61 | check_command = [ | ||
62 | "check_local_load" | ||
63 | "${loadWarn},${load5Warn},${load15Warn}" | ||
64 | "${loadAlert},${load5Alert},${load15Alert}" | ||
65 | ]; | ||
66 | __passive_servicegroups = "webstatus-resources"; | ||
67 | } | ||
68 | { | ||
69 | service_description = "Swap usage"; | ||
70 | use = "local-service"; | ||
71 | check_command = ["check_local_swap" "20" "10"]; | ||
72 | __passive_servicegroups = "webstatus-resources"; | ||
73 | } | ||
74 | { | ||
75 | service_description = "Memory usage"; | ||
76 | use = "local-service"; | ||
77 | check_command = ["check_memory" "80" "90"]; | ||
78 | __passive_servicegroups = "webstatus-resources"; | ||
79 | } | ||
80 | { | ||
81 | service_description = "NTP is activated and working"; | ||
82 | use = "local-service"; | ||
83 | check_command = ["check_ntp"]; | ||
84 | __passive_servicegroups = "webstatus-resources"; | ||
85 | } | ||
86 | ]; | ||
87 | command = { | ||
88 | check_local_disk = "$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$"; | ||
89 | check_local_procs = "$USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$"; | ||
90 | check_local_load = "$USER1$/check_load -r -w $ARG1$ -c $ARG2$"; | ||
91 | check_local_swap = "$USER1$/check_swap -n ok -w $ARG1$ -c $ARG2$"; | ||
92 | check_ntp = "$USER1$/check_ntp_time -t 30 -q -H 0.arch.pool.ntp.org"; | ||
93 | check_smtp = "$USER1$/check_smtp -H $HOSTADDRESS$ -p 25 -S -D 21,15"; | ||
94 | |||
95 | check_host_alive = "$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5"; | ||
96 | check_ok = "$USER1$/check_dummy 0 \"Dummy OK\""; | ||
97 | check_critical = "$USER1$/check_dummy 2 \"Dummy CRITICAL\""; | ||
98 | }; | ||
99 | timeperiod = { | ||
100 | "24x7" = { | ||
101 | alias = "24 Hours A Day, 7 Days A Week"; | ||
102 | monday = "00:00-24:00"; | ||
103 | tuesday = "00:00-24:00"; | ||
104 | wednesday = "00:00-24:00"; | ||
105 | thursday = "00:00-24:00"; | ||
106 | friday = "00:00-24:00"; | ||
107 | saturday = "00:00-24:00"; | ||
108 | sunday = "00:00-24:00"; | ||
109 | }; | ||
110 | }; | ||
111 | servicegroup = { | ||
112 | webstatus-webapps = { alias = "Web applications"; }; | ||
113 | webstatus-websites = { alias = "Personal websites"; }; | ||
114 | webstatus-ssl = { alias = "SSL certificates"; }; | ||
115 | webstatus-dns = { alias = "DNS resolution"; }; | ||
116 | webstatus-remote-services = { alias = "Other remote services"; }; | ||
117 | webstatus-local-services = { alias = "Other local services"; }; | ||
118 | webstatus-email = { alias = "E-mail services"; }; | ||
119 | webstatus-resources = { alias = "Local resources"; }; | ||
120 | webstatus-databases = { alias = "Databases resources"; }; | ||
121 | webstatus-backup = { alias = "Backup resources"; }; | ||
122 | }; | ||
123 | hostgroup = { | ||
124 | webstatus-hosts = { alias = "Hosts"; }; | ||
125 | }; | ||
126 | contactgroup = { | ||
127 | admins = { alias = "Naemon Administrators"; }; | ||
128 | }; | ||
129 | templates = { | ||
130 | service = { | ||
131 | generic-service = { | ||
132 | active_checks_enabled = "1"; | ||
133 | check_freshness = "0"; | ||
134 | check_interval = 10; | ||
135 | check_period = "24x7"; | ||
136 | contact_groups = "admins"; | ||
137 | event_handler_enabled = "1"; | ||
138 | flap_detection_enabled = "1"; | ||
139 | is_volatile = "0"; | ||
140 | max_check_attempts = "3"; | ||
141 | notification_interval = "60"; | ||
142 | notification_options = "w,u,c,r,f,s"; | ||
143 | notification_period = "24x7"; | ||
144 | notifications_enabled = if master then "1" else "0"; | ||
145 | obsess_over_service = "1"; | ||
146 | passive_checks_enabled = "1"; | ||
147 | process_perf_data = "1"; | ||
148 | retain_nonstatus_information = "1"; | ||
149 | retain_status_information = "1"; | ||
150 | retry_interval = "2"; | ||
151 | _webstatus_namespace = "immae"; | ||
152 | }; | ||
153 | local-service = { | ||
154 | use = "generic-service"; | ||
155 | host_name = hostFQDN; | ||
156 | check_interval = 5; | ||
157 | max_check_attempts = "4"; | ||
158 | retry_interval = "1"; | ||
159 | servicegroups = "webstatus-resources"; | ||
160 | }; | ||
161 | external-service = { | ||
162 | use = "generic-service"; | ||
163 | check_interval = 5; | ||
164 | max_check_attempts = "4"; | ||
165 | retry_interval = "1"; | ||
166 | }; | ||
167 | web-service = { | ||
168 | use = "generic-service"; | ||
169 | check_interval = 20; | ||
170 | max_check_attempts = "2"; | ||
171 | retry_interval = "1"; | ||
172 | }; | ||
173 | external-web-service = { | ||
174 | use = "generic-service"; | ||
175 | check_interval = 20; | ||
176 | max_check_attempts = "2"; | ||
177 | retry_interval = "1"; | ||
178 | }; | ||
179 | mail-service = { | ||
180 | use = "generic-service"; | ||
181 | check_interval = 15; | ||
182 | max_check_attempts = "1"; | ||
183 | retry_interval = "1"; | ||
184 | }; | ||
185 | dns-service = { | ||
186 | use = "generic-service"; | ||
187 | check_interval = 120; | ||
188 | notification_interval = "120"; | ||
189 | max_check_attempts = "5"; | ||
190 | retry_interval = "5"; | ||
191 | }; | ||
192 | }; | ||
193 | # No contact, we go through master | ||
194 | contact = { | ||
195 | generic-contact = { | ||
196 | host_notification_commands = "notify-host-by-email"; | ||
197 | host_notification_options = "d,u,r,f,s"; | ||
198 | host_notification_period = "24x7"; | ||
199 | service_notification_commands = "notify-service-by-email"; | ||
200 | service_notification_options = "w,u,c,r,f,s"; | ||
201 | service_notification_period = "24x7"; | ||
202 | }; | ||
203 | }; | ||
204 | host = { | ||
205 | generic-host = { | ||
206 | event_handler_enabled = "1"; | ||
207 | flap_detection_enabled = "1"; | ||
208 | notification_period = "24x7"; | ||
209 | notifications_enabled = "1"; | ||
210 | process_perf_data = "1"; | ||
211 | retain_nonstatus_information = "1"; | ||
212 | retain_status_information = "1"; | ||
213 | }; | ||
214 | linux-server = { | ||
215 | check_command = "check_host_alive"; | ||
216 | check_interval = "5"; | ||
217 | check_period = "24x7"; | ||
218 | contact_groups = "admins"; | ||
219 | max_check_attempts = "10"; | ||
220 | notification_interval = "120"; | ||
221 | notification_options = "d,u,r,f"; | ||
222 | retry_interval = "1"; | ||
223 | _webstatus_namespace = "immae"; | ||
224 | }; | ||
225 | }; | ||
226 | }; | ||
227 | } | ||
diff --git a/flakes/private/monitoring/plugins/check_backup_age b/flakes/private/monitoring/plugins/check_backup_age new file mode 100755 index 0000000..d873bdc --- /dev/null +++ b/flakes/private/monitoring/plugins/check_backup_age | |||
@@ -0,0 +1,66 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | |||
3 | set -euo pipefail | ||
4 | |||
5 | source $SECRETS_PATH | ||
6 | export HOME=$(mktemp -d) | ||
7 | |||
8 | trap "rm -rf $HOME" EXIT | ||
9 | folder=$1 | ||
10 | |||
11 | parse_date() { | ||
12 | d=$1 | ||
13 | echo $d | sed -e "s/^\(....\)\(..\)\(..\)T\(..\)\(..\)\(..\)/\1-\2-\3T\4:\5:\6/" | ||
14 | } | ||
15 | |||
16 | output=$(duplicity collection-status --log-fd 2 "$BASE_URL$folder" 2>&1 > /dev/null) | ||
17 | |||
18 | output=$(echo "$output" | grep -v "^\.") | ||
19 | |||
20 | last_full=$(parse_date "$(echo "$output" | grep "^ full " | cut -d' ' -f3 | sort | tail -n1)") | ||
21 | last_bkp=$(parse_date "$(echo "$output" | grep -E "^ (full|inc) " | cut -d' ' -f3 | sort | tail -n1)") | ||
22 | orphaned_sets=$(echo "$output" | grep "^orphaned-sets-num" | cut -d' ' -f2) | ||
23 | incomplete_sets=$(echo "$output" | grep "^incomplete-sets-num" | cut -d' ' -f2) | ||
24 | |||
25 | if [[ -z "$last_full" || -z "$last_bkp" || -z "$orphaned_sets" || -z "$incomplete_sets" ]]; then | ||
26 | echo "duply-backup $folder UNKNOWN - impossible to parse result" | ||
27 | exit 3 | ||
28 | fi | ||
29 | |||
30 | last_full_age=$(( ($(date "+%s") - $(date -d "$last_full" "+%s")) / (60*60*24) )) | ||
31 | last_bkp_age=$(( ($(date "+%s") - $(date -d "$last_bkp" "+%s")) / (60*60) )) | ||
32 | |||
33 | PERFS="orphan=$orphaned_sets;1;;0; incomplete=$incomplete_sets;1;;0; age=${last_bkp_age}h;30;48;0; full_age=${last_full_age}d;35;45;0;" | ||
34 | |||
35 | |||
36 | WARNINGS="" | ||
37 | ERRORS="" | ||
38 | if [[ "$incomplete_sets" -gt 0 ]]; then | ||
39 | WARNINGS="$WARNINGS - Incomplete sets is $incomplete_sets" | ||
40 | fi | ||
41 | |||
42 | if [[ "$orphaned_sets" -gt 0 ]]; then | ||
43 | WARNINGS="$WARNINGS - Orphaned sets is $orphaned_sets" | ||
44 | fi | ||
45 | |||
46 | if [[ "$last_full_age" -gt 45 ]]; then | ||
47 | ERRORS="$ERRORS - Last full backup is too old $last_full" | ||
48 | elif [[ "$last_full_age" -gt 35 ]]; then | ||
49 | WARNINGS="$WARNINGS - Last full backup is getting old $last_full" | ||
50 | fi | ||
51 | |||
52 | if [[ "$last_bkp_age" -gt 48 ]]; then | ||
53 | ERRORS="$ERRORS - Last backup is too old $last_bkp" | ||
54 | elif [[ "$last_bkp_age" -gt 30 ]]; then | ||
55 | WARNINGS="$WARNINGS - Last backup is getting old $last_bkp" | ||
56 | fi | ||
57 | |||
58 | if [[ -n "$ERRORS" ]]; then | ||
59 | echo "duply-backup $folder CRITICAL$ERRORS$WARNINGS | $PERFS" | ||
60 | exit 2 | ||
61 | elif [[ -n "$WARNINGS" ]]; then | ||
62 | echo "duply-backup $folder WARNING$WARNINGS | $PERFS" | ||
63 | exit 1 | ||
64 | else | ||
65 | echo "duply-backup $folder OK | $PERFS" | ||
66 | fi | ||
diff --git a/flakes/private/monitoring/plugins/check_bandwidth b/flakes/private/monitoring/plugins/check_bandwidth new file mode 100755 index 0000000..21d01f5 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_bandwidth | |||
@@ -0,0 +1,122 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | # ============================== SUMMARY ===================================== | ||
4 | #Author : Ken Roulamellah | ||
5 | #Date : 19/07/2018 | ||
6 | #Version : 1.0 | ||
7 | # Licence : GPL | ||
8 | # ===================== INFORMATION ABOUT THIS PLUGIN ======================== | ||
9 | # | ||
10 | # This plugin checks the average RX and TX bandwidth utilisation. It use | ||
11 | # kbytes as measure unite. | ||
12 | # | ||
13 | # ========================== START OF PROGRAM CODE =========================== | ||
14 | |||
15 | STATE_OK=0 | ||
16 | STATE_WARNING=1 | ||
17 | STATE_CRITICAL=2 | ||
18 | STATE_UNKNOWN=3 | ||
19 | |||
20 | interface=$( ip route | grep default | awk '{print $5}' | head -n1) | ||
21 | function print_usage() | ||
22 | { | ||
23 | echo "Usage :" | ||
24 | echo "$0 [ -i=INTERFACE] [ -ct=COUNT ] -w WARNING -c CRITICAL" | ||
25 | echo "This script calculate the average bandwith usage." | ||
26 | echo "Default values | interface: ${interface}, counter: 10" | ||
27 | } | ||
28 | |||
29 | counter=10 | ||
30 | warning=-1 | ||
31 | critical=-1 | ||
32 | |||
33 | sum_rx=0 | ||
34 | sum_tx=0 | ||
35 | avg_rx= | ||
36 | avg_tx= | ||
37 | i= | ||
38 | |||
39 | |||
40 | if [[ $# -lt 4 ]]; | ||
41 | then | ||
42 | echo "Error: Arguments are missing" | ||
43 | print_usage | ||
44 | exit $STATE_UNKNOWN | ||
45 | fi | ||
46 | |||
47 | while [[ $# -gt 0 ]]; do | ||
48 | case "$1" in | ||
49 | -i=*) | ||
50 | interface="$(cut -d'=' -f2 <<<"$1")" | ||
51 | shift | ||
52 | ;; | ||
53 | -ct=*) | ||
54 | counter="$(cut -d'=' -f2 <<<"$1")" | ||
55 | shift | ||
56 | ;; | ||
57 | -w) | ||
58 | warning=$2 | ||
59 | shift 2 | ||
60 | ;; | ||
61 | -c) | ||
62 | critical=$2 | ||
63 | shift 2 | ||
64 | ;; | ||
65 | *) | ||
66 | printf "\nError: Invalid option '$1'" | ||
67 | print_usage | ||
68 | exit $STATE_UNKNOWN | ||
69 | ;; | ||
70 | esac | ||
71 | done | ||
72 | |||
73 | if [ $warning -lt 0 ] || [ $critical -lt 0 ]; | ||
74 | then | ||
75 | echo "Error: You need to specify a warning and critical treshold" | ||
76 | print_usage | ||
77 | exit $STATE_UNKNOWN | ||
78 | fi | ||
79 | |||
80 | grep -q "up" /sys/class/net/$interface/operstate || exec echo "$interface: no such device or down" | ||
81 | |||
82 | read rx <"/sys/class/net/$interface/statistics/rx_bytes" | ||
83 | read tx <"/sys/class/net/$interface/statistics/tx_bytes" | ||
84 | |||
85 | i=$counter | ||
86 | while [ $i -gt 0 ]; do | ||
87 | sleep 1 | ||
88 | read newrx <"/sys/class/net/$interface/statistics/rx_bytes" | ||
89 | read newtx <"/sys/class/net/$interface/statistics/tx_bytes" | ||
90 | |||
91 | #echo "old rx :$rx" | ||
92 | #echo "new rx :$newrx" | ||
93 | rx_cal=$(bc <<< "scale=2; ($newrx-$rx) / 1000") | ||
94 | tx_cal=$(bc <<< "scale=2; ($newtx-$tx) / 1000") | ||
95 | |||
96 | sum_rx=$(bc <<< "scale=2;$sum_rx+$rx_cal") | ||
97 | sum_tx=$(bc <<< "scale=2;$sum_tx+$tx_cal") | ||
98 | |||
99 | #echo "$interface {rx: $rx_cal ko/s, tx: $tx_cal ko/s}" | ||
100 | rx=$newrx | ||
101 | tx=$newtx | ||
102 | ((i --)) | ||
103 | done | ||
104 | |||
105 | avg_rx=$(bc <<< "scale=2;$sum_rx/$counter") | ||
106 | avg_tx=$(bc <<< "scale=2;$sum_tx/$counter") | ||
107 | |||
108 | #echo "$avg_rx" | ||
109 | #echo "$avg_tx" | ||
110 | |||
111 | |||
112 | if [ $(bc <<< "$avg_rx > $critical || $avg_tx > $critical") -eq 1 ]; then | ||
113 | echo "$interface CRITICAL - AVG_RX: $avg_rx kb/s, AVG_TX: $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;" | ||
114 | exit $STATE_CRITICAL | ||
115 | elif [ $(bc <<< "$avg_rx > $warning || $avg_tx > $warning") -eq 1 ]; then | ||
116 | echo "$interface WARNING - AVG_RX: $avg_rx kb/s, AVG_TX: $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;" | ||
117 | exit $STATE_WARNING | ||
118 | else | ||
119 | echo "$interface - OK AVG_RX: $avg_rx kb/s, AVG_TX: $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;" | ||
120 | exit $STATE_OK | ||
121 | fi | ||
122 | exit 3 | ||
diff --git a/flakes/private/monitoring/plugins/check_command b/flakes/private/monitoring/plugins/check_command new file mode 100755 index 0000000..2b546c1 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_command | |||
@@ -0,0 +1,113 @@ | |||
1 | #!/usr/bin/env perl | ||
2 | |||
3 | use strict; | ||
4 | use Getopt::Std; | ||
5 | $| = 1; | ||
6 | |||
7 | my %opts; | ||
8 | getopts('hr:C:c:s:o:', \%opts); | ||
9 | |||
10 | my $STATE_OK = 0; | ||
11 | my $STATE_WARNING = 1; | ||
12 | my $STATE_CRITICAL = 2; | ||
13 | my $STATE_UNKNOWN = 3; | ||
14 | |||
15 | if ($opts{'h'} || scalar(%opts) == 0) { | ||
16 | &print_help(); | ||
17 | exit($STATE_OK); | ||
18 | } | ||
19 | |||
20 | my $command = $opts{'c'}; | ||
21 | if ($command eq '') { | ||
22 | print "You must provide a command to check.\n"; | ||
23 | exit($STATE_UNKNOWN); | ||
24 | } | ||
25 | |||
26 | my $expected_output = $opts{'o'}; | ||
27 | my $expected_status = $opts{'s'}; | ||
28 | my $other_command = $opts{'C'}; | ||
29 | |||
30 | if ($other_command eq '' and $expected_status eq '' and $expected_output eq '') { | ||
31 | $expected_status = 0; | ||
32 | } | ||
33 | |||
34 | my $cmd = $command . ' 2>&1'; | ||
35 | my $other_cmd; | ||
36 | if ($other_command ne '') { | ||
37 | $other_cmd = $other_command . ' 2>&1'; | ||
38 | } | ||
39 | |||
40 | my $run_as; | ||
41 | if ($opts{'r'}) { | ||
42 | $run_as = $opts{'r'}; | ||
43 | $cmd = "sudo -u $run_as -n $cmd"; | ||
44 | |||
45 | if ($other_command ne '') { | ||
46 | $other_cmd = "sudo -u $run_as -n $other_cmd"; | ||
47 | } | ||
48 | |||
49 | } | ||
50 | |||
51 | my $cmd_result = `$cmd`; | ||
52 | my $other_cmd_result; | ||
53 | if ($other_command ne '') { | ||
54 | $other_cmd_result = `$other_cmd`; | ||
55 | chomp($other_cmd_result); | ||
56 | } | ||
57 | |||
58 | chomp($cmd_result); | ||
59 | if ($cmd_result =~ /sudo/i) { | ||
60 | print "$command CRITICAL - No sudo right to run the command | result=1;;;;\n"; | ||
61 | exit($STATE_UNKNOWN); | ||
62 | } elsif ($expected_status ne '') { | ||
63 | if ($? != $expected_status) { | ||
64 | print "$command CRITICAL - Response status $? | result=1;;;;\n"; | ||
65 | exit($STATE_CRITICAL); | ||
66 | } else { | ||
67 | print "$command OK - Response status $? | result=0;;;;\n"; | ||
68 | exit($STATE_OK); | ||
69 | } | ||
70 | } elsif ($other_command ne '') { | ||
71 | if ($cmd_result ne $other_cmd_result) { | ||
72 | print "$command CRITICAL - Expected output not matching other command output | result=1;;;;\n"; | ||
73 | exit($STATE_CRITICAL); | ||
74 | } else { | ||
75 | print "$command OK - Expected output matching other command output | result=0;;;;\n"; | ||
76 | exit($STATE_OK); | ||
77 | } | ||
78 | } else { | ||
79 | if ($cmd_result !~ /$expected_output/) { | ||
80 | print "$command CRITICAL - Expected output not matching | result=1;;;;\n"; | ||
81 | exit($STATE_CRITICAL); | ||
82 | } else { | ||
83 | print "$command OK - Expected output matching | result=0;;;;\n"; | ||
84 | exit($STATE_OK); | ||
85 | } | ||
86 | } | ||
87 | |||
88 | sub print_help() { | ||
89 | print << "EOF"; | ||
90 | Check whether the given command responds as expected. One of -o -C or -s must be selected. | ||
91 | |||
92 | Options: | ||
93 | -h | ||
94 | Print detailed help screen | ||
95 | |||
96 | -c | ||
97 | command to run (required) | ||
98 | |||
99 | -C | ||
100 | other command to compare output | ||
101 | |||
102 | -r user | ||
103 | Run as user via sudo. | ||
104 | |||
105 | -s | ||
106 | status code to check | ||
107 | |||
108 | -o | ||
109 | output to check | ||
110 | |||
111 | EOF | ||
112 | } | ||
113 | |||
diff --git a/flakes/private/monitoring/plugins/check_emails b/flakes/private/monitoring/plugins/check_emails new file mode 100755 index 0000000..534e5a5 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_emails | |||
@@ -0,0 +1,121 @@ | |||
1 | #!/usr/bin/env perl | ||
2 | |||
3 | use strict; | ||
4 | use Getopt::Std; | ||
5 | use File::Basename; | ||
6 | use Date::Parse; | ||
7 | use POSIX qw(strftime); | ||
8 | |||
9 | $| = 1; | ||
10 | |||
11 | my %opts; | ||
12 | getopts('hH:l:s:p:f:i:n:r:', \%opts); | ||
13 | |||
14 | my $STATE_OK = 0; | ||
15 | my $STATE_WARNING = 1; | ||
16 | my $STATE_CRITICAL = 2; | ||
17 | my $STATE_UNKNOWN = 3; | ||
18 | |||
19 | if ($opts{'h'} || scalar(%opts) == 0) { | ||
20 | &print_help(); | ||
21 | exit($STATE_OK); | ||
22 | } | ||
23 | |||
24 | my $port = $opts{'p'}; | ||
25 | my $host = $opts{'H'}; | ||
26 | my $login = $opts{'l'}; | ||
27 | if ($login ne '') { | ||
28 | $login = "$login@"; | ||
29 | } | ||
30 | |||
31 | my $identity = $opts{'i'}; | ||
32 | my $local_directory = $opts{'n'}; | ||
33 | my $return_path = $opts{'r'}; | ||
34 | |||
35 | my @emails_to_send = split(/,/, $opts{'s'}); | ||
36 | my @emails_to_expect = split(/,/, $opts{'f'}); | ||
37 | |||
38 | my $cmd_result; | ||
39 | if ($local_directory ne '') { | ||
40 | if (@emails_to_expect and ! -d $local_directory) { | ||
41 | print "Emails $host UNKNOWN - Could not find local directory"; | ||
42 | exit($STATE_UNKNOWN); | ||
43 | } | ||
44 | $cmd_result = `send_mails $local_directory $return_path @emails_to_send 2>&1`; | ||
45 | } else { | ||
46 | $cmd_result = `ssh -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -p $port -i $identity $login$host send_mails @emails_to_send 2>&1`; | ||
47 | |||
48 | if ($cmd_result =~ /Host key verification failed./) { | ||
49 | print "Emails $host UNKNOWN - Could not connect to host with ssh key\n"; | ||
50 | exit($STATE_UNKNOWN); | ||
51 | } | ||
52 | } | ||
53 | |||
54 | my @lines = split(/\n/, $cmd_result); | ||
55 | |||
56 | my %found_emails; | ||
57 | |||
58 | foreach my $line (@lines) { | ||
59 | my @split_line = split(/;/, $line, 2); | ||
60 | $found_emails{$split_line[0]} = $split_line[1]; | ||
61 | } | ||
62 | |||
63 | my $output = ""; | ||
64 | my $old = 0; | ||
65 | foreach my $email_from (@emails_to_expect) { | ||
66 | my @email_split = split(/:/, $email_from); | ||
67 | my $email = $email_split[0]; | ||
68 | my $from = $email_split[1]; | ||
69 | |||
70 | if ( exists $found_emails{$email} ) { | ||
71 | my $email_date = str2time($found_emails{$email}); | ||
72 | my $current_date = strftime "%s", localtime; | ||
73 | |||
74 | if ($current_date - $email_date > 60*30) { | ||
75 | $output = "$output$email ($found_emails{$email} from $from) "; | ||
76 | } | ||
77 | $old = ($current_date - $email_date) > $old ? ($current_date - $email_date) : $old; | ||
78 | } else { | ||
79 | $output = "$output$email (missing) " | ||
80 | } | ||
81 | } | ||
82 | |||
83 | if ($output ne '') { | ||
84 | print "Emails $host CRITICAL - expecting emails: $output | timestamp=${old}s;;;;\n"; | ||
85 | exit($STATE_CRITICAL); | ||
86 | } else { | ||
87 | print "Emails $host OK | timestamp=${old}s;;;;\n"; | ||
88 | exit($STATE_OK); | ||
89 | } | ||
90 | |||
91 | sub print_help() { | ||
92 | print << "EOF"; | ||
93 | Check sent emails | ||
94 | |||
95 | Options: | ||
96 | -h | ||
97 | Print detailed help screen | ||
98 | |||
99 | -H | ||
100 | Host to check | ||
101 | |||
102 | -l | ||
103 | Login | ||
104 | |||
105 | -i | ||
106 | Identity file | ||
107 | |||
108 | -n | ||
109 | Don’t use ssh, pass that directory to script | ||
110 | |||
111 | -r | ||
112 | Return path for local e-mails | ||
113 | |||
114 | -s | ||
115 | Comma separated list of emails to send from the host. | ||
116 | |||
117 | -f | ||
118 | Comma separated list of emails to expect on the host. | ||
119 | EOF | ||
120 | } | ||
121 | |||
diff --git a/flakes/private/monitoring/plugins/check_eriomem b/flakes/private/monitoring/plugins/check_eriomem new file mode 100755 index 0000000..880b88a --- /dev/null +++ b/flakes/private/monitoring/plugins/check_eriomem | |||
@@ -0,0 +1,83 @@ | |||
1 | #!/usr/bin/env python | ||
2 | import os | ||
3 | import sys | ||
4 | import getopt | ||
5 | import signal | ||
6 | from subprocess import Popen, PIPE | ||
7 | |||
8 | STATE_OK = 0 | ||
9 | STATE_WARNING = 1 | ||
10 | STATE_CRITICAL = 2 | ||
11 | STATE_UNKNOWN = 3 | ||
12 | |||
13 | keys = sys.argv[1].split(",") | ||
14 | |||
15 | def to_args(k): | ||
16 | access, secret = k.split(":", 1) | ||
17 | return [ | ||
18 | "s3cmd", | ||
19 | '-c=/dev/null', | ||
20 | '--no-check-certificate', | ||
21 | '--access_key={}'.format(access), | ||
22 | '--secret_key={}'.format(secret), | ||
23 | '--host=e.eriomem.net', | ||
24 | '--host-bucket=%(bucket)s.e.eriomem.net', | ||
25 | 'du' | ||
26 | ] | ||
27 | |||
28 | max_size = 1024*1024*1024*1024 | ||
29 | warning_percent = 99.75 | ||
30 | critical_percent = 99.95 | ||
31 | |||
32 | def output(code, msg): | ||
33 | print(msg) | ||
34 | sys.exit(code) | ||
35 | |||
36 | def main(): | ||
37 | def handler(signum, frame): | ||
38 | raise IOError | ||
39 | signal.signal(signal.SIGALRM, handler) | ||
40 | signal.alarm(60) | ||
41 | |||
42 | try: | ||
43 | ps = [Popen(to_args(a), stdout=PIPE, stderr=PIPE) for a in keys] | ||
44 | outs = [p.communicate() for p in ps] | ||
45 | rets = [p.wait() for p in ps] | ||
46 | except IOError: | ||
47 | for p in ps: | ||
48 | os.kill(p.pid, signal.SIGTERM) | ||
49 | output(STATE_UNKNOWN, | ||
50 | "Eriomem UNKNOWN - Command timeout after 60 seconds!") | ||
51 | |||
52 | signal.alarm(0) | ||
53 | |||
54 | if sum(rets) == 0: | ||
55 | usages = [int(out[0].decode().split("\n")[-2].split()[0]) for out in outs] | ||
56 | usage = sum(usages) | ||
57 | use_percent = 100 * usage / max_size | ||
58 | if use_percent > critical_percent: | ||
59 | output(STATE_CRITICAL, | ||
60 | "Eriomem CRITICAL - bucket usage: %s (%s%%);| size=%s;;;;" % | ||
61 | (sizeof_fmt(usage), use_percent, sizeof_fmt(usage))) | ||
62 | elif use_percent > warning_percent: | ||
63 | output(STATE_WARNING, | ||
64 | "Eriomem WARNING - bucket usage: %s (%s%%);| size=%s;;;;" % | ||
65 | (sizeof_fmt(usage), use_percent, sizeof_fmt(usage))) | ||
66 | else: | ||
67 | output(STATE_OK, | ||
68 | "Eriomem OK - bucket usage: %s (%d%%);| size=%s;;;;" % | ||
69 | (sizeof_fmt(usage), use_percent, sizeof_fmt(usage))) | ||
70 | else: | ||
71 | messages = "\n".join([out[0].decode() + out[1].decode() for out in outs]) | ||
72 | output(STATE_UNKNOWN, | ||
73 | "Eriomem UNKNOWN - Error in command") | ||
74 | |||
75 | def sizeof_fmt(num): | ||
76 | for unit in ['','ko','Mo','Go','To','Po','Eo','Zo']: | ||
77 | if abs(num) < 1024.0: | ||
78 | return "%3.1f%s" % (num, unit) | ||
79 | num /= 1024.0 | ||
80 | return "%.1f%s%s" % (num, 'Yo') | ||
81 | |||
82 | if __name__ == '__main__': | ||
83 | main() | ||
diff --git a/flakes/private/monitoring/plugins/check_ftp_database b/flakes/private/monitoring/plugins/check_ftp_database new file mode 100755 index 0000000..f9cf579 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_ftp_database | |||
@@ -0,0 +1,11 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | |||
3 | OUT=$(echo "ls" | lftp -u test_ftp,test_ftp eldiron.immae.eu | grep it_works | wc -l) | ||
4 | |||
5 | if [ "$OUT" -eq 1 ]; then | ||
6 | echo "ftp connection OK - access to ftp is working | ftp=1;;;;" | ||
7 | exit 0 | ||
8 | else | ||
9 | echo "ftp connection CRITICAL - no access to ftp | ftp=0;;;;" | ||
10 | exit 2 | ||
11 | fi | ||
diff --git a/flakes/private/monitoring/plugins/check_git b/flakes/private/monitoring/plugins/check_git new file mode 100755 index 0000000..e8fbb29 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_git | |||
@@ -0,0 +1,81 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | |||
3 | SSH_KEY="$1" | ||
4 | |||
5 | TMPDIR=$(mktemp -d) | ||
6 | |||
7 | if [ ! -d "$TMPDIR" ]; then | ||
8 | echo "gitolite UNKNOWN - impossible to create temp dir" | ||
9 | exit 3 | ||
10 | fi | ||
11 | |||
12 | trap "rm -rf $TMPDIR" EXIT | ||
13 | |||
14 | ERRORS="" | ||
15 | OUTPUT="" | ||
16 | PERFS="" | ||
17 | |||
18 | cd "$TMPDIR" | ||
19 | OUT=$(git clone -q git://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1) | ||
20 | ERR=$? | ||
21 | if [ -n "$OUT" ]; then | ||
22 | OUTPUT="$OUTPUT | ||
23 | $OUT" | ||
24 | fi | ||
25 | if [ "$ERR" != 0 ]; then | ||
26 | PERFS="$PERFS git=0;;;;" | ||
27 | ERRORS="$ERRORS git://" | ||
28 | else | ||
29 | PERFS="$PERFS git=1;;;;" | ||
30 | fi | ||
31 | rm -rf Monitor | ||
32 | |||
33 | OUT=$(git clone -q http://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1) | ||
34 | ERR=$? | ||
35 | if [ -n "$OUT" ]; then | ||
36 | OUTPUT="$OUTPUT | ||
37 | $OUT" | ||
38 | fi | ||
39 | if [ "$ERR" != 0 ]; then | ||
40 | ERRORS="$ERRORS http://" | ||
41 | PERFS="$PERFS http=0;;;;" | ||
42 | else | ||
43 | PERFS="$PERFS http=1;;;;" | ||
44 | fi | ||
45 | rm -rf Monitor | ||
46 | |||
47 | OUT=$(git clone -q https://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1) | ||
48 | ERR=$? | ||
49 | if [ -n "$OUT" ]; then | ||
50 | OUTPUT="$OUTPUT | ||
51 | $OUT" | ||
52 | fi | ||
53 | if [ "$ERR" != 0 ]; then | ||
54 | ERRORS="$ERRORS https://" | ||
55 | PERFS="$PERFS https=0;;;;" | ||
56 | else | ||
57 | PERFS="$PERFS https=1;;;;" | ||
58 | fi | ||
59 | rm -rf Monitor | ||
60 | |||
61 | OUT=$(GIT_SSH_COMMAND="ssh -i $SSH_KEY -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no" git clone -q gitolite@git.immae.eu:perso/Immae/Projets/Ruby/Monitor 2>&1) | ||
62 | ERR=$? | ||
63 | if [ -n "$OUT" ]; then | ||
64 | OUTPUT="$OUTPUT | ||
65 | $OUT" | ||
66 | fi | ||
67 | if [ "$ERR" != 0 ]; then | ||
68 | ERRORS="$ERRORS ssh" | ||
69 | PERFS="$PERFS ssh=0;;;;" | ||
70 | else | ||
71 | PERFS="$PERFS ssh=1;;;;" | ||
72 | fi | ||
73 | rm -rf Monitor | ||
74 | |||
75 | if [ -n "$ERRORS" ]; then | ||
76 | echo "gitolite CRITICAL - impossible to clone via$ERRORS | $PERFS" | ||
77 | exit 2 | ||
78 | else | ||
79 | echo "gitolite OK - ssh, git, http and https work | $PERFS" | ||
80 | exit 0 | ||
81 | fi | ||
diff --git a/flakes/private/monitoring/plugins/check_imap_connection b/flakes/private/monitoring/plugins/check_imap_connection new file mode 100755 index 0000000..c1ab0dd --- /dev/null +++ b/flakes/private/monitoring/plugins/check_imap_connection | |||
@@ -0,0 +1,52 @@ | |||
1 | #!/usr/bin/env perl | ||
2 | |||
3 | use strict; | ||
4 | use Getopt::Std; | ||
5 | $| = 1; | ||
6 | |||
7 | my %opts; | ||
8 | getopts('h:u:p:H:', \%opts); | ||
9 | |||
10 | my $STATE_OK = 0; | ||
11 | my $STATE_WARNING = 1; | ||
12 | my $STATE_CRITICAL = 2; | ||
13 | my $STATE_UNKNOWN = 3; | ||
14 | |||
15 | if ($opts{'h'} || !$opts{'u'} || !$opts{'p'} || !$opts{'H'}) { | ||
16 | &print_help(); | ||
17 | exit($STATE_UNKNOWN); | ||
18 | } | ||
19 | |||
20 | my $user = $opts{'u'}; | ||
21 | my $password = $opts{'p'}; | ||
22 | my $host = $opts{'H'}; | ||
23 | |||
24 | my $cmd_result = `(echo "a login $user $password"; echo "b logout") | openssl s_client -quiet -ign_eof -connect $host -starttls imap 2>&1`; | ||
25 | my $expected_result = "a OK Logged in"; | ||
26 | |||
27 | chomp($cmd_result); | ||
28 | if ($cmd_result !~ /$expected_result/) { | ||
29 | print "IMAP CRITICAL - Unable to connect via imaps | imap=0;;;;\n"; | ||
30 | exit($STATE_CRITICAL); | ||
31 | } else { | ||
32 | print "IMAP OK - imaps connected successfully | imap=1;;;;\n"; | ||
33 | exit($STATE_OK); | ||
34 | } | ||
35 | |||
36 | sub print_help() { | ||
37 | print << "EOF"; | ||
38 | Check whether imap works via ssl and is able to connect its database. | ||
39 | |||
40 | Options: | ||
41 | -h | ||
42 | Print detailed help screen | ||
43 | -u | ||
44 | User to log in as | ||
45 | -p | ||
46 | Password to log in | ||
47 | -H | ||
48 | Host to log in to | ||
49 | |||
50 | EOF | ||
51 | } | ||
52 | |||
diff --git a/flakes/private/monitoring/plugins/check_last_file_date b/flakes/private/monitoring/plugins/check_last_file_date new file mode 100755 index 0000000..f51a258 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_last_file_date | |||
@@ -0,0 +1,28 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | STATE_OK=0 | ||
4 | STATE_WARNING=1 | ||
5 | STATE_CRITICAL=2 | ||
6 | STATE_UNKNOWN=3 | ||
7 | |||
8 | base_path=$1 | ||
9 | hours=$2 | ||
10 | |||
11 | last_date=$(find $base_path -mindepth 1 -maxdepth 1 -printf "%T@\n" 2>/dev/null | sort | tail -n 1) | ||
12 | |||
13 | if [ -z "$last_date" ]; then | ||
14 | echo "UNKNOWN: Could not read folder" | ||
15 | exit $STATE_UNKNOWN | ||
16 | else | ||
17 | LC_ALL=C last_date=$(printf "%.*f" 0 $last_date) | ||
18 | LC_ALL=C age=$(( $(date "+%s") - $last_date)) | ||
19 | max_age=$(( $hours * 60 * 60 )) | ||
20 | min_date=$(date -d "$hours hours ago" "+%s") | ||
21 | if [ "$min_date" -lt "$last_date" ]; then | ||
22 | echo "OK: Last file $(date -d @$last_date) | age=${age}s;;$max_age;;" | ||
23 | exit $STATE_OK | ||
24 | else | ||
25 | echo "CRITICAL: Last file $(date -d @$last_date) | age=${age}s;;$max_age;;" | ||
26 | exit $STATE_CRITICAL | ||
27 | fi | ||
28 | fi | ||
diff --git a/flakes/private/monitoring/plugins/check_mem.sh b/flakes/private/monitoring/plugins/check_mem.sh new file mode 100755 index 0000000..3a29040 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_mem.sh | |||
@@ -0,0 +1,31 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | |||
3 | if [ "$1" = "-w" ] && [ "$2" -gt "0" ] && [ "$3" = "-c" ] && [ "$4" -gt "0" ]; then | ||
4 | FreeM=`free -m -w` | ||
5 | memTotal_m=`echo "$FreeM" |grep Mem |awk '{print $2}'` | ||
6 | memUsed_m=`echo "$FreeM" |grep Mem |awk '{print $3}'` | ||
7 | memFree_m=`echo "$FreeM" |grep Mem |awk '{print $4}'` | ||
8 | memShared_m=`echo "$FreeM" |grep Mem |awk '{print $5}'` | ||
9 | memBuffer_m=`echo "$FreeM" |grep Mem |awk '{print $6}'` | ||
10 | memCache_m=`echo "$FreeM" |grep Mem |awk '{print $7}'` | ||
11 | memAvailable_m=`echo "$FreeM" |grep Mem |awk '{print $8}'` | ||
12 | memUsedPrc=`echo $((($memUsed_m-$memBuffer_m-$memCache_m)*100/$memTotal_m))||cut -d. -f1` | ||
13 | if [ "$memUsedPrc" -ge "$4" ]; then | ||
14 | echo "Memory: CRITICAL Total: $memTotal_m MB - Used/Buffer/Cache: $memUsed_m MB - $memUsedPrc% used!|TOTAL=$memTotal_m;;;; USED=$memUsed_m;;;; SHARED=$memShared_m;;;; CACHE=$memCache_m;;;; AVAILABLE=$memAvailable_m;;;; BUFFER=$memBuffer_m;;;;" | ||
15 | exit 2 | ||
16 | elif [ "$memUsedPrc" -ge "$2" ]; then | ||
17 | echo "Memory: WARNING Total: $memTotal_m MB - Used/Buffer/Cache: $memUsed_m MB - $memUsedPrc% used!|TOTAL=$memTotal_m;;;; USED=$memUsed_m;;;; SHARED=$memShared_m;;;; CACHE=$memCache_m;;;; AVAILABLE=$memAvailable_m;;;; BUFFER=$memBuffer_m;;;;" | ||
18 | exit 1 | ||
19 | else | ||
20 | echo "Memory: OK Total: $memTotal_m MB - Used/Buffer/Cache: $memUsed_m MB - $memUsedPrc% used|TOTAL=$memTotal_m;;;; USED=$memUsed_m;;;; SHARED=$memShared_m;;;; CACHE=$memCache_m;;;; AVAILABLE=$memAvailable_m;;;; BUFFER=$memBuffer_m;;;;" | ||
21 | exit 0 | ||
22 | fi | ||
23 | else # If inputs are not as expected, print help. | ||
24 | sName="`echo $0|awk -F '/' '{print $NF}'`" | ||
25 | echo -e "\n\n\t\t### $sName Version 2.0###\n" | ||
26 | echo -e "# Usage:\t$sName -w <warnlevel> -c <critlevel>" | ||
27 | echo -e "\t\t= warnlevel and critlevel is percentage value without %\n" | ||
28 | echo "# EXAMPLE:\t/usr/lib64/nagios/plugins/$sName -w 80 -c 90" | ||
29 | echo -e "\nCopyright (C) 2012 Lukasz Gogolin (lukasz.gogolin@gmail.com), improved by Nestor 2015\n\n" | ||
30 | exit | ||
31 | fi | ||
diff --git a/flakes/private/monitoring/plugins/check_mysql_replication b/flakes/private/monitoring/plugins/check_mysql_replication new file mode 100755 index 0000000..1ee5de1 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_mysql_replication | |||
@@ -0,0 +1,41 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | STATE_OK=0 | ||
4 | STATE_WARNING=1 | ||
5 | STATE_CRITICAL=2 | ||
6 | STATE_UNKNOWN=3 | ||
7 | |||
8 | socket=$1 | ||
9 | config_file=$2 | ||
10 | info=$(mysql --defaults-file=${config_file} -S $socket -e "show slave status" --vertical) | ||
11 | exit_code=$? | ||
12 | |||
13 | lag=$(echo "$info" | grep "\bSeconds_Behind_Master\b" | cut -d':' -f2 | sed -e "s/\s//g") | ||
14 | |||
15 | IO_running=$(echo "$info" | grep "\bSlave_IO_Running\b" | cut -d':' -f2 | sed -e "s/\s//g") | ||
16 | SQL_running=$(echo "$info" | grep "\bSlave_SQL_Running\b" | cut -d':' -f2 | sed -e "s/\s//g") | ||
17 | |||
18 | if [[ $exit_code -ne 0 ]]; then | ||
19 | echo "UNKNOWN - Impossible to run mysql command" | ||
20 | exit $STATE_UNKNOWN | ||
21 | elif [[ -z "$lag" ]]; then | ||
22 | echo "UNKNOWN - No replication found for mysql" | ||
23 | exit $STATE_UNKNOWN | ||
24 | elif [[ "$IO_running" != "Yes" || "$SQL_running" != "Yes" ]]; then | ||
25 | echo "UNKNOWN - Replication is not running" | ||
26 | exit $STATE_UNKNOWN | ||
27 | else | ||
28 | output="Replication lag for mysql is ${lag}s" | ||
29 | LC_ALL=C lag=$(printf "%.*f" 0 $lag) | ||
30 | |||
31 | if [[ $lag -lt 5 ]]; then | ||
32 | echo "OK - $output | time=${lag}s;5;10;;" | ||
33 | exit $STATE_OK | ||
34 | elif [[ $lag -lt 10 ]]; then | ||
35 | echo "WARNING - $output | time=${lag}s;5;10;;" | ||
36 | exit $STATE_WARNING | ||
37 | else | ||
38 | echo "CRITICAL - $output | time=${lag}s;5;10;;" | ||
39 | exit $STATE_CRITICAL | ||
40 | fi | ||
41 | fi | ||
diff --git a/flakes/private/monitoring/plugins/check_openldap_replication b/flakes/private/monitoring/plugins/check_openldap_replication new file mode 100755 index 0000000..7136ad5 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_openldap_replication | |||
@@ -0,0 +1,54 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | STATE_OK=0 | ||
4 | STATE_WARNING=1 | ||
5 | STATE_CRITICAL=2 | ||
6 | STATE_UNKNOWN=3 | ||
7 | |||
8 | distant_host="$1" | ||
9 | replication_dn="$2" | ||
10 | replication_pw="$3" | ||
11 | base="$4" | ||
12 | config="$5" | ||
13 | |||
14 | to_date() { | ||
15 | i="$1" | ||
16 | i=$(echo "$i" | grep contextCSN | cut -d":" -f2 | sed -e "s/\s//g") | ||
17 | i=$(echo "$i" | cut -d"#" -f1) | ||
18 | i=$(echo "$i" | cut -d"." -f1) | ||
19 | echo "$i" | ||
20 | } | ||
21 | |||
22 | # ldap | ||
23 | remote_ldap=$(ldapsearch -H $distant_host -D "$replication_dn" -y "$replication_pw" -b "$base" -s base -LLL contextCSN ) | ||
24 | exit_code_remote=$? | ||
25 | remote_ldap=$(to_date "$remote_ldap") | ||
26 | |||
27 | # slapcat | ||
28 | local_ldap=$(slapcat -b "$base" -f "$config" -a "(entryDN=$base)") | ||
29 | exit_code_local=$? | ||
30 | local_ldap=$(to_date "$local_ldap") | ||
31 | |||
32 | offset=$(($remote_ldap - $local_ldap)) | ||
33 | |||
34 | if [[ $exit_code_remote -ne 0 || $exit_code_local -ne 0 ]]; then | ||
35 | echo "UNKNOWN - Impossible to run ldap command" | ||
36 | exit $STATE_UNKNOWN | ||
37 | elif [[ -z "$offset" ]]; then | ||
38 | echo "UNKNOWN - No replication found" | ||
39 | exit $STATE_UNKNOWN | ||
40 | else | ||
41 | output="Replication lag for openldap is ${offset}s" | ||
42 | LC_ALL=C lag=$(printf "%.*f" 0 $lag) | ||
43 | |||
44 | if [[ $offset -lt 5 ]]; then | ||
45 | echo "OK - $output | time=${offset}s;5;10;;" | ||
46 | exit $STATE_OK | ||
47 | elif [[ $offset -lt 10 ]]; then | ||
48 | echo "WARNING - $output | time=${offset}s;5;10;;" | ||
49 | exit $STATE_WARNING | ||
50 | else | ||
51 | echo "CRITICAL - $output | time=${offset}s;5;10;;" | ||
52 | exit $STATE_CRITICAL | ||
53 | fi | ||
54 | fi | ||
diff --git a/flakes/private/monitoring/plugins/check_ovh_sms b/flakes/private/monitoring/plugins/check_ovh_sms new file mode 100755 index 0000000..caf279c --- /dev/null +++ b/flakes/private/monitoring/plugins/check_ovh_sms | |||
@@ -0,0 +1,25 @@ | |||
1 | #!/usr/bin/env python | ||
2 | |||
3 | import sys | ||
4 | try: | ||
5 | import ovh | ||
6 | |||
7 | [endpoint, application_key, application_secret, consumer_key, account] = sys.argv[1].split(",") | ||
8 | client = ovh.Client( | ||
9 | endpoint=endpoint, | ||
10 | application_key=application_key, | ||
11 | application_secret=application_secret, | ||
12 | consumer_key=consumer_key, | ||
13 | ) | ||
14 | |||
15 | result = client.get('/sms/{}'.format(account))["creditsLeft"] | ||
16 | |||
17 | if result < 20: | ||
18 | print("SMS OVH Critical - Not enough sms left ({})|SMS={};;;;".format(result, result)) | ||
19 | sys.exit(2) | ||
20 | else: | ||
21 | print("SMS OVH Ok - Enough sms left ({})|SMS={};;;;".format(result, result)) | ||
22 | sys.exit(0) | ||
23 | except Exception: | ||
24 | print("SMS OVH UNKNOWN - Error during script") | ||
25 | sys.exit(3) | ||
diff --git a/flakes/private/monitoring/plugins/check_postgres_database_count b/flakes/private/monitoring/plugins/check_postgres_database_count new file mode 100755 index 0000000..43bdd8c --- /dev/null +++ b/flakes/private/monitoring/plugins/check_postgres_database_count | |||
@@ -0,0 +1,32 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | STATE_OK=0 | ||
4 | STATE_WARNING=1 | ||
5 | STATE_CRITICAL=2 | ||
6 | STATE_UNKNOWN=3 | ||
7 | |||
8 | host=$1 | ||
9 | port=$2 | ||
10 | min=$3 | ||
11 | |||
12 | count=$(psql -h $host -p $port -A -q -c '\t' -c 'select count(datname) from pg_catalog.pg_database' postgres 2>&1) | ||
13 | exit_code=$? | ||
14 | |||
15 | if [[ $exit_code -ne 0 ]]; then | ||
16 | echo "UNKNOWN - Impossible to run psql command: $count" | ||
17 | exit $STATE_UNKNOWN | ||
18 | elif [[ -z "$count" ]]; then | ||
19 | echo "UNKNOWN - No database found" | ||
20 | exit $STATE_UNKNOWN | ||
21 | else | ||
22 | output="Database count is $count" | ||
23 | LC_ALL=C count=$(printf "%.*f" 0 $count) | ||
24 | |||
25 | if [[ $count -gt $min ]]; then | ||
26 | echo "OK - $output | count=${count};$min;$min;0;" | ||
27 | exit $STATE_OK | ||
28 | else | ||
29 | echo "CRITICAL - $output | count=${count};$min;$min;0;" | ||
30 | exit $STATE_CRITICAL | ||
31 | fi | ||
32 | fi | ||
diff --git a/flakes/private/monitoring/plugins/check_postgres_replication b/flakes/private/monitoring/plugins/check_postgres_replication new file mode 100755 index 0000000..ff257a3 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_postgres_replication | |||
@@ -0,0 +1,35 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | STATE_OK=0 | ||
4 | STATE_WARNING=1 | ||
5 | STATE_CRITICAL=2 | ||
6 | STATE_UNKNOWN=3 | ||
7 | |||
8 | user=$1 | ||
9 | host=$2 | ||
10 | port=$3 | ||
11 | |||
12 | lag=$(psql -h $host -p $port -A -t -c "SELECT COALESCE(EXTRACT(EPOCH FROM replay_lag),0) FROM pg_stat_replication WHERE usename='$user'" 2>/dev/null) | ||
13 | exit_code=$? | ||
14 | |||
15 | if [[ $exit_code -ne 0 ]]; then | ||
16 | echo "UNKNOWN - Impossible to run psql command" | ||
17 | exit $STATE_UNKNOWN | ||
18 | elif [[ -z "$lag" ]]; then | ||
19 | echo "UNKNOWN - No replication found for $user" | ||
20 | exit $STATE_UNKNOWN | ||
21 | else | ||
22 | output="Replication lag for $user is ${lag}s" | ||
23 | LC_ALL=C lag=$(printf "%.*f" 0 $lag) | ||
24 | |||
25 | if [[ $lag -lt 5 ]]; then | ||
26 | echo "OK - $output | time=${lag}s;5;10;0;" | ||
27 | exit $STATE_OK | ||
28 | elif [[ $lag -lt 10 ]]; then | ||
29 | echo "WARNING - $output | time=${lag}s;5;10;0;" | ||
30 | exit $STATE_WARNING | ||
31 | else | ||
32 | echo "CRITICAL - $output | time=${lag}s;5;10;0;" | ||
33 | exit $STATE_CRITICAL | ||
34 | fi | ||
35 | fi | ||
diff --git a/flakes/private/monitoring/plugins/check_redis_replication b/flakes/private/monitoring/plugins/check_redis_replication new file mode 100755 index 0000000..6dbe4c4 --- /dev/null +++ b/flakes/private/monitoring/plugins/check_redis_replication | |||
@@ -0,0 +1,38 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | STATE_OK=0 | ||
4 | STATE_WARNING=1 | ||
5 | STATE_CRITICAL=2 | ||
6 | STATE_UNKNOWN=3 | ||
7 | |||
8 | socket=$1 | ||
9 | |||
10 | info=$(redis-cli -s $socket info replication) | ||
11 | lag=$(echo "$info" | grep master_last_io_seconds_ago | cut -d":" -f2 | sed -e "s/\s//g") | ||
12 | slave_offset=$(echo "$info" | grep slave_repl_offset | cut -d":" -f2 | sed -e "s/\s//g") | ||
13 | master_offset=$(echo "$info" | grep master_repl_offset | cut -d":" -f2 | sed -e "s/\s//g") | ||
14 | offset=$(($master_offset - $slave_offset)) | ||
15 | |||
16 | exit_code=$? | ||
17 | |||
18 | if [[ $exit_code -ne 0 ]]; then | ||
19 | echo "UNKNOWN - Impossible to run redis command" | ||
20 | exit $STATE_UNKNOWN | ||
21 | elif [[ -z "$lag" ]]; then | ||
22 | echo "UNKNOWN - No replication found" | ||
23 | exit $STATE_UNKNOWN | ||
24 | else | ||
25 | output="Replication lag for redis is ${lag}s and offset is ${offset}" | ||
26 | LC_ALL=C lag=$(printf "%.*f" 0 $lag) | ||
27 | |||
28 | if [[ $lag -lt 5 && $offset -lt 5 ]]; then | ||
29 | echo "OK - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;" | ||
30 | exit $STATE_OK | ||
31 | elif [[ $lag -lt 10 && $offset -lt 10 ]]; then | ||
32 | echo "WARNING - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;" | ||
33 | exit $STATE_WARNING | ||
34 | else | ||
35 | echo "CRITICAL - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;" | ||
36 | exit $STATE_CRITICAL | ||
37 | fi | ||
38 | fi | ||
diff --git a/flakes/private/monitoring/plugins/check_zfs_snapshot b/flakes/private/monitoring/plugins/check_zfs_snapshot new file mode 100755 index 0000000..56f8c4f --- /dev/null +++ b/flakes/private/monitoring/plugins/check_zfs_snapshot | |||
@@ -0,0 +1,325 @@ | |||
1 | #! /bin/sh | ||
2 | |||
3 | OS=$(uname) | ||
4 | |||
5 | # MIT License | ||
6 | # | ||
7 | # Copyright (c) 2016 Josef Friedrich <josef@friedrich.rocks> | ||
8 | # | ||
9 | # Permission is hereby granted, free of charge, to any person obtaining | ||
10 | # a copy of this software and associated documentation files (the | ||
11 | # "Software"), to deal in the Software without restriction, including | ||
12 | # without limitation the rights to use, copy, modify, merge, publish, | ||
13 | # distribute, sublicense, and/or sell copies of the Software, and to | ||
14 | # permit persons to whom the Software is furnished to do so, subject to | ||
15 | # the following conditions: | ||
16 | # | ||
17 | # The above copyright notice and this permission notice shall be | ||
18 | # included in all copies or substantial portions of the Software. | ||
19 | # | ||
20 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
21 | # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
22 | # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | ||
23 | # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | ||
24 | # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | ||
25 | # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||
26 | # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
27 | |||
28 | ######################################################################## | ||
29 | # Date functions | ||
30 | ######################################################################## | ||
31 | |||
32 | # This date function must be placed on the top of this file because | ||
33 | # they are used in some global variables. | ||
34 | |||
35 | # to_year ### | ||
36 | |||
37 | ## | ||
38 | # Get the four digit year integer from now. | ||
39 | # | ||
40 | # Return: | ||
41 | # The current 4 digit year. | ||
42 | ## | ||
43 | _now_to_year() { | ||
44 | date +%Y | ||
45 | } | ||
46 | |||
47 | ## | ||
48 | # Convert a date in the format YYYY-MM-DD to a four digit year integer. | ||
49 | # | ||
50 | # Parameters: | ||
51 | # a date in the format YYYY-MM-DD | ||
52 | # | ||
53 | # Return: | ||
54 | # four digit year integer | ||
55 | ## | ||
56 | _date_to_year() { | ||
57 | local OPTIONS | ||
58 | if [ "$OS" = 'Linux' ]; then | ||
59 | OPTIONS="--date $1" | ||
60 | # FreeBSD, Darwin | ||
61 | else | ||
62 | OPTIONS="-j -f %Y-%m-%d $1" | ||
63 | fi | ||
64 | date $OPTIONS +%Y | ||
65 | } | ||
66 | |||
67 | # to_datetime ### | ||
68 | |||
69 | ## | ||
70 | # Convert a UNIX timestamp to a datetime string. | ||
71 | # | ||
72 | # Parameters: | ||
73 | # UNIX timestamp | ||
74 | # | ||
75 | # Return: | ||
76 | # %Y-%m-%d.%H:%M:%S | ||
77 | ## | ||
78 | _timestamp_to_datetime() { | ||
79 | local OPTIONS | ||
80 | if [ "$OS" = 'Linux' ]; then | ||
81 | OPTIONS="--date @$1" | ||
82 | # FreeBSD, Darwin | ||
83 | else | ||
84 | OPTIONS="-j -f %s $1" | ||
85 | fi | ||
86 | date $OPTIONS +%Y-%m-%d.%H:%M:%S | ||
87 | } | ||
88 | |||
89 | # to_timestamp ### | ||
90 | |||
91 | ## | ||
92 | # Get the current UNIX timestamp. | ||
93 | # | ||
94 | # Return: | ||
95 | # %current UNIX timestamp | ||
96 | ## | ||
97 | _now_to_timestamp() { | ||
98 | date +%s | ||
99 | } | ||
100 | |||
101 | PROJECT_PAGES='https://github.com/Josef-Friedrich/check_zfs_snapshot | ||
102 | https://exchange.icinga.com/joseffriedrich/check_zfs_snapshot | ||
103 | https://exchange.nagios.org/directory/Plugins/System-Metrics/File-System/check_zfs_snapshot/details' | ||
104 | |||
105 | VERSION=1.2 | ||
106 | FIRST_RELEASE=2016-09-08 | ||
107 | SHORT_DESCRIPTION="Monitoring plugin to check how long ago the last \ | ||
108 | snapshot of a ZFS dataset was created." | ||
109 | USAGE="check_zfs_snapshot v$VERSION | ||
110 | Copyright (c) $(_date_to_year $FIRST_RELEASE)-$(_now_to_year) \ | ||
111 | Josef Friedrich <josef@friedrich.rocks> | ||
112 | |||
113 | $SHORT_DESCRIPTION | ||
114 | |||
115 | |||
116 | Usage: check_zfs_snapshot <options> | ||
117 | |||
118 | Options: | ||
119 | -c, --critical=OPT_CRITICAL | ||
120 | Interval in seconds for critical state. | ||
121 | -d, --dataset=OPT_DATASET | ||
122 | The ZFS dataset to check. | ||
123 | -h, --help | ||
124 | Show this help. | ||
125 | -s, --short-description | ||
126 | Show a short description of the command. | ||
127 | -v, --version | ||
128 | Show the version number. | ||
129 | -w, --warning=OPT_WARNING | ||
130 | Interval in seconds for warning state. Must be lower than -c | ||
131 | |||
132 | Performance data: | ||
133 | - last_ago | ||
134 | Time interval in seconds for last snapshot. | ||
135 | - warning | ||
136 | Interval in seconds. | ||
137 | - critical | ||
138 | Interval in seconds. | ||
139 | - snapshot_count | ||
140 | How many snapshot exists in the given dataset and all child | ||
141 | datasets exists. | ||
142 | " | ||
143 | |||
144 | # Exit codes | ||
145 | STATE_OK=0 | ||
146 | STATE_WARNING=1 | ||
147 | STATE_CRITICAL=2 | ||
148 | STATE_UNKNOWN=3 | ||
149 | |||
150 | _get_last_snapshot() { | ||
151 | zfs get creation -Hpr -t snapshot "$1" | \ | ||
152 | awk 'BEGIN {max = 0} {if ($3>max) max=$3} END {print max}' | ||
153 | } | ||
154 | |||
155 | _getopts() { | ||
156 | while getopts ':c:d:hsvw:-:' OPT ; do | ||
157 | case $OPT in | ||
158 | |||
159 | c) | ||
160 | OPT_CRITICAL=$OPTARG | ||
161 | ;; | ||
162 | |||
163 | d) | ||
164 | OPT_DATASET="$OPTARG" | ||
165 | ;; | ||
166 | |||
167 | h) | ||
168 | echo "$USAGE" | ||
169 | exit 0 | ||
170 | ;; | ||
171 | |||
172 | s) | ||
173 | echo "$SHORT_DESCRIPTION" | ||
174 | exit 0 | ||
175 | ;; | ||
176 | |||
177 | v) | ||
178 | echo "$VERSION" | ||
179 | exit 0 | ||
180 | ;; | ||
181 | |||
182 | w) | ||
183 | OPT_WARNING=$OPTARG | ||
184 | ;; | ||
185 | |||
186 | \?) | ||
187 | echo "Invalid option “-$OPTARG”!" >&2 | ||
188 | exit 2 | ||
189 | ;; | ||
190 | |||
191 | :) | ||
192 | echo "Option “-$OPTARG” requires an argument!" >&2 | ||
193 | exit 3 | ||
194 | ;; | ||
195 | |||
196 | -) | ||
197 | LONG_OPTARG="${OPTARG#*=}" | ||
198 | |||
199 | case $OPTARG in | ||
200 | |||
201 | critical=?*) | ||
202 | OPT_CRITICAL=$LONG_OPTARG | ||
203 | ;; | ||
204 | |||
205 | dataset=?*) | ||
206 | OPT_DATASET="$LONG_OPTARG" | ||
207 | ;; | ||
208 | |||
209 | help) | ||
210 | echo "$USAGE" | ||
211 | exit 0 | ||
212 | ;; | ||
213 | |||
214 | short-description) | ||
215 | echo "$SHORT_DESCRIPTION" | ||
216 | exit 0 | ||
217 | ;; | ||
218 | |||
219 | version) | ||
220 | echo "$VERSION" | ||
221 | exit 0 | ||
222 | ;; | ||
223 | |||
224 | warning=?*) | ||
225 | OPT_WARNING=$LONG_OPTARG | ||
226 | ;; | ||
227 | |||
228 | critical*|dataset*|warning*) | ||
229 | echo "Option “--$OPTARG” requires an argument!" >&2 | ||
230 | exit 3 | ||
231 | ;; | ||
232 | |||
233 | help*|short-description*|version*) | ||
234 | echo "No argument allowed for the option “--$OPTARG”!" >&2 | ||
235 | exit 4 | ||
236 | ;; | ||
237 | |||
238 | '') # "--" terminates argument processing | ||
239 | break | ||
240 | ;; | ||
241 | |||
242 | *) | ||
243 | echo "Invalid option “--$OPTARG”!" >&2 | ||
244 | exit 2 | ||
245 | ;; | ||
246 | |||
247 | esac | ||
248 | ;; | ||
249 | |||
250 | esac | ||
251 | done | ||
252 | } | ||
253 | |||
254 | _snapshot_count() { | ||
255 | # FreeBSD wc adds some whitespaces before the number! | ||
256 | # cat $HOME/debug | wc -l | ||
257 | # 7 | ||
258 | local COUNT | ||
259 | COUNT="$(zfs list -t snapshot | grep "$1" | wc -l)" | ||
260 | echo $COUNT | ||
261 | } | ||
262 | |||
263 | _performance_data() { | ||
264 | echo "| \ | ||
265 | last_ago=${DIFF}s;$OPT_WARNING;$OPT_CRITICAL;0 \ | ||
266 | count=$(_snapshot_count "$OPT_DATASET");;;0\ | ||
267 | " | ||
268 | } | ||
269 | |||
270 | ## This SEPARATOR is required for test purposes. Please don’t remove! ## | ||
271 | |||
272 | _getopts $@ | ||
273 | |||
274 | if [ -z "$OPT_WARNING" ]; then | ||
275 | # 1 day | ||
276 | OPT_WARNING=86400 | ||
277 | fi | ||
278 | |||
279 | if [ -z "$OPT_CRITICAL" ]; then | ||
280 | # 3 day | ||
281 | OPT_CRITICAL=259200 | ||
282 | fi | ||
283 | |||
284 | if [ -z "$OPT_DATASET" ]; then | ||
285 | echo "Dataset has to be set! Use option -d <dataset>" >&2 | ||
286 | echo "$USAGE" >&2 | ||
287 | exit $STATE_UNKNOWN | ||
288 | fi | ||
289 | |||
290 | if ! zfs list "$OPT_DATASET" > /dev/null 2>&1; then | ||
291 | echo "'$OPT_DATASET' is no ZFS dataset!" >&2 | ||
292 | echo "$USAGE" >&2 | ||
293 | exit $STATE_UNKNOWN | ||
294 | fi | ||
295 | |||
296 | NOW=$(_now_to_timestamp) | ||
297 | |||
298 | CREATION_DATE=$(_get_last_snapshot "$OPT_DATASET") | ||
299 | |||
300 | DIFF=$((NOW - CREATION_DATE)) | ||
301 | |||
302 | if [ "$OPT_WARNING" -gt "$OPT_CRITICAL" ]; then | ||
303 | echo '-w OPT_WARNING must be smaller than -c OPT_CRITICAL' | ||
304 | _usage >&2 | ||
305 | exit $STATE_UNKNOWN | ||
306 | fi | ||
307 | |||
308 | RETURN=STATE_UNKNOWN | ||
309 | |||
310 | if [ "$DIFF" -gt "$OPT_CRITICAL" ]; then | ||
311 | RETURN=$STATE_CRITICAL | ||
312 | MESSAGE="CRITICAL:" | ||
313 | elif [ "$DIFF" -gt "$OPT_WARNING" ]; then | ||
314 | RETURN=$STATE_WARNING | ||
315 | MESSAGE="WARNING:" | ||
316 | else | ||
317 | RETURN=$STATE_OK | ||
318 | MESSAGE="OK:" | ||
319 | fi | ||
320 | |||
321 | DATE="$(_timestamp_to_datetime "$CREATION_DATE")" | ||
322 | |||
323 | echo "$MESSAGE Last snapshot for dataset '$OPT_DATASET' was created on $DATE $(_performance_data)" | ||
324 | |||
325 | exit $RETURN | ||
diff --git a/flakes/private/monitoring/plugins/notify_by_apprise b/flakes/private/monitoring/plugins/notify_by_apprise new file mode 100755 index 0000000..82bc5a3 --- /dev/null +++ b/flakes/private/monitoring/plugins/notify_by_apprise | |||
@@ -0,0 +1,31 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | |||
3 | APPRISE_USERNAME="Naemon" | ||
4 | APPRISE_USERICON="https://assets.immae.eu/monitoring.png" | ||
5 | APPRISE_URLS=$(echo "$2" | sed -e "s/{username}/$APPRISE_USERNAME/g" -e "s@{image_url}@$APPRISE_USERICON@g") | ||
6 | |||
7 | if [ "$SERVICESTATE" = "CRITICAL" ]; then | ||
8 | ICON="❗" | ||
9 | elif [ "$SERVICESTATE" = "WARNING" ]; then | ||
10 | ICON="⚠️:" | ||
11 | elif [ "$SERVICESTATE" = "OK" ]; then | ||
12 | ICON="✅" | ||
13 | elif [ "$SERVICESTATE" = "UNKNOWN" ]; then | ||
14 | ICON="❓" | ||
15 | elif [ "$HOSTSTATE" = "UP" ]; then | ||
16 | ICON="✅" | ||
17 | elif [ "$HOSTSTATE" = "DOWN" ]; then | ||
18 | ICON="❗" | ||
19 | elif [ "$HOSTSTATE" = "UNKNOWN" ]; then | ||
20 | ICON="❓" | ||
21 | elif [ "$HOSTSTATE" = "UNREACHABLE" ]; then | ||
22 | ICON="❓" | ||
23 | else | ||
24 | ICON="◻" | ||
25 | fi | ||
26 | |||
27 | if [ "$1" = "host" ]; then | ||
28 | apprise --title "${ICON} ${NOTIFICATIONTYPE} ${HOST} is ${HOSTSTATE}" --body "$HOSTOUTPUT" $APPRISE_URLS | ||
29 | else | ||
30 | apprise --title "${ICON} ${NOTIFICATIONTYPE} ${SERVICEDESC} on ${HOST} is ${SERVICESTATE}" --body "$SERVICEOUTPUT" $APPRISE_URLS | ||
31 | fi | ||
diff --git a/flakes/private/monitoring/plugins/notify_by_email b/flakes/private/monitoring/plugins/notify_by_email new file mode 100755 index 0000000..959db26 --- /dev/null +++ b/flakes/private/monitoring/plugins/notify_by_email | |||
@@ -0,0 +1,29 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | |||
3 | # $1 = service/host | ||
4 | |||
5 | # $2 = type (PROBLEM RECOVERY ACKNOWLEDGEMENT FLAPPINGSTART FLAPPINGSTOP FLAPPINGDISABLED DOWNTIMESTART DOWNTIMESTOP DOWNTIMECANCELLED) | ||
6 | # http://www.naemon.org/documentation/usersguide/macrolist.html#notificationtype | ||
7 | |||
8 | # $3 = host alias | ||
9 | |||
10 | # $4 = date (YYYY-MM-DDTHH:MM:SS) | ||
11 | |||
12 | # $5 = E-mail | ||
13 | |||
14 | NOTIFICATION_TYPE="$2" | ||
15 | HOST_ALIAS="$3" | ||
16 | DATE="$4" | ||
17 | CONTACT="$5" | ||
18 | |||
19 | message="" | ||
20 | |||
21 | if [ "$1" = "host" ]; then | ||
22 | message=$(printf "%b" "***** Naemon *****\n\nNotification Type: $NOTIFICATION_TYPE\n\nHost: $HOST_ALIAS\nState: $HOSTSTATE\nInfo: $HOSTOUTPUT\n\nDate/Time: $DATE\n") | ||
23 | subject="** $NOTIFICATION_TYPE Host Alert: $HOST_ALIAS is $HOSTSTATE **" | ||
24 | else | ||
25 | message=$(printf "%b" "***** Naemon *****\n\nNotification Type: $NOTIFICATION_TYPE\n\nService: $SERVICEDESC\nHost: $HOST_ALIAS\nState: $SERVICESTATE\n\nDate/Time: $DATE\n\nAdditional Info:\n\n$SERVICEOUTPUT\n") | ||
26 | subject="** $NOTIFICATION_TYPE Service Alert: $HOST_ALIAS/$SERVICEDESC is $SERVICESTATE **" | ||
27 | fi | ||
28 | |||
29 | echo "$message" | MAILRC=/dev/null mail -r "$ADMINEMAIL" -n -s "$subject" "$CONTACT" | ||
diff --git a/flakes/private/monitoring/plugins/notify_by_slack b/flakes/private/monitoring/plugins/notify_by_slack new file mode 100755 index 0000000..1b16a0d --- /dev/null +++ b/flakes/private/monitoring/plugins/notify_by_slack | |||
@@ -0,0 +1,46 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | |||
3 | SLACK_CHANNEL="$1" | ||
4 | SLACK_USERNAME="Naemon" | ||
5 | SLACK_URL="$2" | ||
6 | SLACK_USERICON="https://assets.immae.eu/monitoring.png" | ||
7 | |||
8 | if [ "$SERVICESTATE" = "CRITICAL" ]; then | ||
9 | ICON=":exclamation:" | ||
10 | COLOR="#DA0505" | ||
11 | elif [ "$SERVICESTATE" = "WARNING" ]; then | ||
12 | ICON=":warning:" | ||
13 | COLOR="#F1E903" | ||
14 | elif [ "$SERVICESTATE" = "OK" ]; then | ||
15 | ICON=":white_check_mark:" | ||
16 | COLOR="#36a64f" | ||
17 | elif [ "$SERVICESTATE" = "UNKNOWN" ]; then | ||
18 | ICON=":question:" | ||
19 | COLOR="#000000" | ||
20 | else | ||
21 | ICON=":white_medium_square:" | ||
22 | COLOR="#ffffff" | ||
23 | fi | ||
24 | |||
25 | payload=$(echo "{}" | jq -r \ | ||
26 | --arg "icon_url" "$SLACK_USERICON" \ | ||
27 | --arg "channel" "$SLACK_CHANNEL" \ | ||
28 | --arg "username" "$SLACK_USERNAME" \ | ||
29 | --arg "text" "${ICON} ${SERVICEDESC} on ${HOST} is ${SERVICESTATE}" \ | ||
30 | --arg "color" "$COLOR" \ | ||
31 | --arg "host" "$HOST" \ | ||
32 | --arg "desc" "$SERVICEDESC" \ | ||
33 | --arg "state" "$SERVICESTATE" \ | ||
34 | --arg "output" "$SERVICEOUTPUT" \ | ||
35 | '.icon_url = $icon_url | | ||
36 | .channel = $channel | | ||
37 | .username = $username | | ||
38 | .text = $text | | ||
39 | .attachments = [{fallback:"", color:$color,fields: [{},{},{},{}]}] | | ||
40 | .attachments[0].fields[0] = {title:"Host",value:$host,short:true} | | ||
41 | .attachments[0].fields[1] = {title:"Service description",value:$desc,short:true} | | ||
42 | .attachments[0].fields[2] = {title:"Status",value:$state,short:true} | | ||
43 | .attachments[0].fields[3] = {title:"Message",value:$output,short:false} | ||
44 | ') | ||
45 | |||
46 | curl -X POST --data "payload=$payload" $SLACK_URL | ||
diff --git a/flakes/private/monitoring/plugins/send_nrdp.sh b/flakes/private/monitoring/plugins/send_nrdp.sh new file mode 100755 index 0000000..c83c8cb --- /dev/null +++ b/flakes/private/monitoring/plugins/send_nrdp.sh | |||
@@ -0,0 +1,57 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | TEMPLATE='{ | ||
4 | "cmd": "submitcheck", | ||
5 | "token": $token, | ||
6 | "checkresult": [{ | ||
7 | "hostname": $hostname, | ||
8 | "state": $state, | ||
9 | "output": $output, | ||
10 | "type": $type, | ||
11 | "servicename": $servicename | ||
12 | }] | ||
13 | }' | ||
14 | |||
15 | while getopts "u:t:H:s:S:o:" option | ||
16 | do | ||
17 | case $option in | ||
18 | u) url=$OPTARG ;; | ||
19 | t) token=$OPTARG ;; | ||
20 | H) hostname=$OPTARG ;; | ||
21 | s) servicename=$OPTARG ;; | ||
22 | S) state=$OPTARG ;; | ||
23 | o) output=$OPTARG ;; | ||
24 | esac | ||
25 | done | ||
26 | |||
27 | if [ -n "$servicename" ]; then | ||
28 | checktype="service" | ||
29 | else | ||
30 | checktype="host" | ||
31 | fi | ||
32 | |||
33 | payload=$(jq -n \ | ||
34 | --arg type "$checktype" \ | ||
35 | --arg hostname "$hostname" \ | ||
36 | --arg servicename "$servicename" \ | ||
37 | --arg output "$output" \ | ||
38 | --arg token "$token" \ | ||
39 | --arg state "$state" \ | ||
40 | "$TEMPLATE") | ||
41 | |||
42 | rslt=$(curl -f --silent --insecure -d "$payload" -H "Content-Type: application/json" "$url") | ||
43 | ret=$? | ||
44 | |||
45 | if [ $ret != 0 ];then | ||
46 | echo "ERROR: could not connect to NRDP server at $url" | ||
47 | exit 1 | ||
48 | fi | ||
49 | |||
50 | status=$(echo "$rslt" | jq -r .status) | ||
51 | message=$(echo "$rslt" | jq -r .message) | ||
52 | |||
53 | if [ "$status" != "ok" ];then | ||
54 | echo "ERROR: The NRDP Server said $message" | ||
55 | exit 2 | ||
56 | fi | ||
57 | echo "Sent 1 checks to $url" | ||
diff --git a/flakes/private/monitoring/send_mails b/flakes/private/monitoring/send_mails new file mode 100755 index 0000000..105c505 --- /dev/null +++ b/flakes/private/monitoring/send_mails | |||
@@ -0,0 +1,15 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | |||
3 | CHECK_DIR=$1 | ||
4 | shift | ||
5 | RETURN_PATH=$1 | ||
6 | shift | ||
7 | |||
8 | for mail in "$@"; do | ||
9 | echo "Test Mail" | MAILRC=/dev/null mail -n -r "$RETURN_PATH" -s "TestMailImmae " "$mail" | ||
10 | done | ||
11 | |||
12 | if [ -d "$CHECK_DIR" ]; then | ||
13 | cd $CHECK_DIR | ||
14 | stat -c '%n;%y' * | ||
15 | fi | ||
diff --git a/flakes/private/monitoring/to_objects.nix b/flakes/private/monitoring/to_objects.nix new file mode 100644 index 0000000..57a71ad --- /dev/null +++ b/flakes/private/monitoring/to_objects.nix | |||
@@ -0,0 +1,77 @@ | |||
1 | { lib }: | ||
2 | with lib.attrsets; | ||
3 | with lib.strings; | ||
4 | with lib.lists; | ||
5 | with lib.trivial; | ||
6 | let | ||
7 | pad = width: str: let | ||
8 | padWidth = width - stringLength str; | ||
9 | padding = concatStrings (genList (const " ") padWidth); | ||
10 | in str + optionalString (padWidth > 0) padding; | ||
11 | toStr = k: v: | ||
12 | if k == "check_command" && builtins.isList v | ||
13 | then builtins.concatStringsSep "!" v | ||
14 | else builtins.toString v; | ||
15 | |||
16 | toService = service: '' | ||
17 | define service { | ||
18 | ${builtins.concatStringsSep "\n" (mapAttrsToList (k: v: | ||
19 | " ${pad 30 k} ${toStr k v}" | ||
20 | ) (filterAttrs (k: v: ! hasPrefix "__passive_" k) service))} | ||
21 | } | ||
22 | ''; | ||
23 | toServices = services: builtins.concatStringsSep "\n" (map toService services); | ||
24 | |||
25 | toCommand = k: v: '' | ||
26 | define command { | ||
27 | ${pad 30 "command_name"} ${k} | ||
28 | ${pad 30 "command_line"} ${v} | ||
29 | } | ||
30 | ''; | ||
31 | toCommands = a: builtins.concatStringsSep "\n" (mapAttrsToList toCommand a); | ||
32 | |||
33 | toOther = keyname: k: v: '' | ||
34 | define ${keyname} { | ||
35 | ${pad 30 "${keyname}_name"} ${k} | ||
36 | ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv: | ||
37 | " ${pad 30 kk} ${vv}" | ||
38 | ) v)} | ||
39 | } | ||
40 | ''; | ||
41 | toOtherNoName = keyname: v: '' | ||
42 | define ${keyname} { | ||
43 | ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv: | ||
44 | " ${pad 30 kk} ${vv}" | ||
45 | ) v)} | ||
46 | } | ||
47 | ''; | ||
48 | toOthers = keyname: a: builtins.concatStringsSep "\n" (mapAttrsToList (toOther keyname) a); | ||
49 | toOthersArray = keyname: a: builtins.concatStringsSep "\n" (map (toOtherNoName keyname) a); | ||
50 | |||
51 | toTemplate = keyname: k: v: '' | ||
52 | define ${keyname} { | ||
53 | ${pad 30 "name"} ${k} | ||
54 | ${pad 30 "register"} 0 | ||
55 | ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv: | ||
56 | " ${pad 30 kk} ${builtins.toString vv}" | ||
57 | ) v)} | ||
58 | } | ||
59 | ''; | ||
60 | toTemplates' = keyname: a: builtins.concatStringsSep "\n" (mapAttrsToList (toTemplate keyname) a); | ||
61 | toTemplates = v: builtins.concatStringsSep "\n" (mapAttrsToList toTemplates' v); | ||
62 | |||
63 | toObjects' = keyname: v: | ||
64 | if keyname == "service" | ||
65 | then toServices v | ||
66 | else if keyname == "command" | ||
67 | then toCommands v | ||
68 | else if keyname == "templates" | ||
69 | then toTemplates v | ||
70 | else if builtins.elem keyname ["hostgroup" "host" "contactgroup" "contact" "timeperiod" "servicegroup"] | ||
71 | then toOthers keyname v | ||
72 | else if builtins.elem keyname ["servicedependency" "hostdependency"] | ||
73 | then toOthersArray keyname v | ||
74 | else builtins.trace ("Warning: unknown object type " + keyname) ""; | ||
75 | toObjects = v: builtins.concatStringsSep "\n" (mapAttrsToList toObjects' v); | ||
76 | in | ||
77 | toObjects | ||
diff --git a/flakes/private/openarc/flake.lock b/flakes/private/openarc/flake.lock index be75993..60b0fdf 100644 --- a/flakes/private/openarc/flake.lock +++ b/flakes/private/openarc/flake.lock | |||
@@ -2,7 +2,8 @@ | |||
2 | "nodes": { | 2 | "nodes": { |
3 | "files-watcher": { | 3 | "files-watcher": { |
4 | "locked": { | 4 | "locked": { |
5 | "narHash": "sha256-6urOJuzXsu4HJHyVmrZHd40SMzzTeHiOiDOM40q53Y0=", | 5 | "lastModified": 1, |
6 | "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=", | ||
6 | "path": "../../files-watcher", | 7 | "path": "../../files-watcher", |
7 | "type": "path" | 8 | "type": "path" |
8 | }, | 9 | }, |
@@ -26,69 +27,20 @@ | |||
26 | "type": "github" | 27 | "type": "github" |
27 | } | 28 | } |
28 | }, | 29 | }, |
29 | "my-lib": { | 30 | "myuids": { |
30 | "inputs": { | ||
31 | "nixpkgs": "nixpkgs" | ||
32 | }, | ||
33 | "locked": { | 31 | "locked": { |
34 | "narHash": "sha256-HGNP1eH7b42BxViYx/F3ZPO9CM1X+5qfA9JoP2ArN+s=", | 32 | "lastModified": 1, |
35 | "path": "../../lib", | 33 | "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=", |
34 | "path": "../myuids", | ||
36 | "type": "path" | 35 | "type": "path" |
37 | }, | 36 | }, |
38 | "original": { | 37 | "original": { |
39 | "path": "../../lib", | 38 | "path": "../myuids", |
40 | "type": "path" | 39 | "type": "path" |
41 | } | 40 | } |
42 | }, | 41 | }, |
43 | "myuids": { | ||
44 | "locked": { | ||
45 | "dir": "flakes/myuids", | ||
46 | "lastModified": 1628207001, | ||
47 | "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=", | ||
48 | "ref": "master", | ||
49 | "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3", | ||
50 | "revCount": 865, | ||
51 | "type": "git", | ||
52 | "url": "https://git.immae.eu/perso/Immae/Config/Nix.git" | ||
53 | }, | ||
54 | "original": { | ||
55 | "dir": "flakes/myuids", | ||
56 | "type": "git", | ||
57 | "url": "https://git.immae.eu/perso/Immae/Config/Nix.git" | ||
58 | } | ||
59 | }, | ||
60 | "nix-lib": { | ||
61 | "locked": { | ||
62 | "lastModified": 1633008342, | ||
63 | "narHash": "sha256-wZV5YidnsqV/iufDIhaZip3LzwUGeIt8wtdiGS5+cXc=", | ||
64 | "owner": "NixOS", | ||
65 | "repo": "nixpkgs", | ||
66 | "rev": "6eae8a116011f4db0aa5146f364820024411d6bb", | ||
67 | "type": "github" | ||
68 | }, | ||
69 | "original": { | ||
70 | "owner": "NixOS", | ||
71 | "repo": "nixpkgs", | ||
72 | "type": "github" | ||
73 | } | ||
74 | }, | ||
75 | "nixpkgs": { | 42 | "nixpkgs": { |
76 | "locked": { | 43 | "locked": { |
77 | "lastModified": 1631570365, | ||
78 | "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=", | ||
79 | "owner": "NixOS", | ||
80 | "repo": "nixpkgs", | ||
81 | "rev": "df7113c0727881519248d4c7d080324e0ee3327b", | ||
82 | "type": "github" | ||
83 | }, | ||
84 | "original": { | ||
85 | "owner": "NixOS", | ||
86 | "repo": "nixpkgs", | ||
87 | "type": "github" | ||
88 | } | ||
89 | }, | ||
90 | "nixpkgs_2": { | ||
91 | "locked": { | ||
92 | "lastModified": 1597943282, | 44 | "lastModified": 1597943282, |
93 | "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=", | 45 | "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=", |
94 | "owner": "NixOS", | 46 | "owner": "NixOS", |
@@ -106,11 +58,12 @@ | |||
106 | "inputs": { | 58 | "inputs": { |
107 | "flake-utils": "flake-utils", | 59 | "flake-utils": "flake-utils", |
108 | "myuids": "myuids", | 60 | "myuids": "myuids", |
109 | "nixpkgs": "nixpkgs_2", | 61 | "nixpkgs": "nixpkgs", |
110 | "openarc": "openarc_2" | 62 | "openarc": "openarc_2" |
111 | }, | 63 | }, |
112 | "locked": { | 64 | "locked": { |
113 | "narHash": "sha256-ilrfNs6jpi1OceDE3y1atkovECx6PKNWubwLc0Sjx+s=", | 65 | "lastModified": 1, |
66 | "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=", | ||
114 | "path": "../../openarc", | 67 | "path": "../../openarc", |
115 | "type": "path" | 68 | "type": "path" |
116 | }, | 69 | }, |
@@ -138,15 +91,14 @@ | |||
138 | "root": { | 91 | "root": { |
139 | "inputs": { | 92 | "inputs": { |
140 | "files-watcher": "files-watcher", | 93 | "files-watcher": "files-watcher", |
141 | "my-lib": "my-lib", | ||
142 | "nix-lib": "nix-lib", | ||
143 | "openarc": "openarc", | 94 | "openarc": "openarc", |
144 | "secrets": "secrets" | 95 | "secrets": "secrets" |
145 | } | 96 | } |
146 | }, | 97 | }, |
147 | "secrets": { | 98 | "secrets": { |
148 | "locked": { | 99 | "locked": { |
149 | "narHash": "sha256-w3u1bMEJHCg9SqErJ5Qi0sTX2xx7mk+HrHZXzpjQd1w=", | 100 | "lastModified": 1, |
101 | "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=", | ||
150 | "path": "../../secrets", | 102 | "path": "../../secrets", |
151 | "type": "path" | 103 | "type": "path" |
152 | }, | 104 | }, |
diff --git a/flakes/private/openarc/flake.nix b/flakes/private/openarc/flake.nix index b4ab4c8..56c3a1a 100644 --- a/flakes/private/openarc/flake.nix +++ b/flakes/private/openarc/flake.nix | |||
@@ -1,63 +1,47 @@ | |||
1 | { | 1 | { |
2 | inputs.openarc = { | 2 | inputs.openarc.url = "path:../../openarc"; |
3 | path = "../../openarc"; | 3 | inputs.secrets.url = "path:../../secrets"; |
4 | type = "path"; | 4 | inputs.files-watcher.url = "path:../../files-watcher"; |
5 | }; | ||
6 | inputs.secrets = { | ||
7 | path = "../../secrets"; | ||
8 | type = "path"; | ||
9 | }; | ||
10 | inputs.files-watcher = { | ||
11 | path = "../../files-watcher"; | ||
12 | type = "path"; | ||
13 | }; | ||
14 | inputs.my-lib = { | ||
15 | path = "../../lib"; | ||
16 | type = "path"; | ||
17 | }; | ||
18 | inputs.nix-lib.url = "github:NixOS/nixpkgs"; | ||
19 | 5 | ||
20 | description = "Private configuration for openarc"; | 6 | description = "Private configuration for openarc"; |
21 | outputs = { self, nix-lib, my-lib, files-watcher, openarc, secrets }: | 7 | outputs = { self, files-watcher, openarc, secrets }: { |
22 | let | 8 | nixosModule = self.nixosModules.openarc; |
23 | cfg = name': { config, lib, pkgs, name, ... }: { | 9 | nixosModules.openarc = { config, pkgs, ... }: { |
24 | imports = [ | 10 | imports = [ |
25 | (my-lib.lib.withNarKey files-watcher "nixosModule") | 11 | files-watcher.nixosModule |
26 | (my-lib.lib.withNarKey openarc "nixosModule") | 12 | openarc.nixosModule |
27 | (my-lib.lib.withNarKey secrets "nixosModule") | 13 | secrets.nixosModule |
28 | ]; | 14 | ]; |
29 | config = lib.mkIf (name == name') { | 15 | config = { |
30 | services.openarc = { | 16 | services.openarc = { |
31 | enable = true; | 17 | enable = true; |
32 | user = "opendkim"; | 18 | user = "opendkim"; |
33 | socket = "/run/openarc/openarc.sock"; | 19 | socket = "/run/openarc/openarc.sock"; |
34 | group = config.services.postfix.group; | 20 | group = config.services.postfix.group; |
35 | configFile = pkgs.writeText "openarc.conf" '' | 21 | configFile = pkgs.writeText "openarc.conf" '' |
36 | AuthservID mail.immae.eu | 22 | AuthservID mail.immae.eu |
37 | Domain mail.immae.eu | 23 | Domain mail.immae.eu |
38 | KeyFile ${config.secrets.fullPaths."opendkim/eldiron.private"} | 24 | KeyFile ${config.secrets.fullPaths."opendkim/eldiron.private"} |
39 | Mode sv | 25 | Mode sv |
40 | Selector eldiron | 26 | Selector eldiron |
41 | SoftwareHeader yes | 27 | SoftwareHeader yes |
42 | Syslog Yes | 28 | Syslog Yes |
43 | ''; | ||
44 | }; | ||
45 | systemd.services.openarc.serviceConfig.Slice = "mail.slice"; | ||
46 | systemd.services.openarc.postStart = '' | ||
47 | while [ ! -S ${config.services.openarc.socket} ]; do | ||
48 | sleep 0.5 | ||
49 | done | ||
50 | chmod g+w ${config.services.openarc.socket} | ||
51 | ''; | 29 | ''; |
52 | services.filesWatcher.openarc = { | 30 | }; |
53 | restart = true; | 31 | systemd.services.openarc.serviceConfig.Slice = "mail.slice"; |
54 | paths = [ | 32 | systemd.services.openarc.postStart = '' |
55 | config.secrets.fullPaths."opendkim/eldiron.private" | 33 | while [ ! -S ${config.services.openarc.socket} ]; do |
56 | ]; | 34 | sleep 0.5 |
57 | }; | 35 | done |
36 | chmod g+w ${config.services.openarc.socket} | ||
37 | ''; | ||
38 | services.filesWatcher.openarc = { | ||
39 | restart = true; | ||
40 | paths = [ | ||
41 | config.secrets.fullPaths."opendkim/eldiron.private" | ||
42 | ]; | ||
58 | }; | 43 | }; |
59 | }; | 44 | }; |
60 | in | 45 | }; |
61 | openarc.outputs // | 46 | }; |
62 | { nixosModules = openarc.nixosModules or {} // nix-lib.lib.genAttrs ["eldiron" "backup-2"] cfg; }; | ||
63 | } | 47 | } |
diff --git a/flakes/private/opendmarc/flake.lock b/flakes/private/opendmarc/flake.lock index f40e1a9..fdd4d64 100644 --- a/flakes/private/opendmarc/flake.lock +++ b/flakes/private/opendmarc/flake.lock | |||
@@ -1,8 +1,21 @@ | |||
1 | { | 1 | { |
2 | "nodes": { | 2 | "nodes": { |
3 | "environment": { | ||
4 | "locked": { | ||
5 | "lastModified": 1, | ||
6 | "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=", | ||
7 | "path": "../environment", | ||
8 | "type": "path" | ||
9 | }, | ||
10 | "original": { | ||
11 | "path": "../environment", | ||
12 | "type": "path" | ||
13 | } | ||
14 | }, | ||
3 | "files-watcher": { | 15 | "files-watcher": { |
4 | "locked": { | 16 | "locked": { |
5 | "narHash": "sha256-6urOJuzXsu4HJHyVmrZHd40SMzzTeHiOiDOM40q53Y0=", | 17 | "lastModified": 1, |
18 | "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=", | ||
6 | "path": "../../files-watcher", | 19 | "path": "../../files-watcher", |
7 | "type": "path" | 20 | "type": "path" |
8 | }, | 21 | }, |
@@ -26,69 +39,20 @@ | |||
26 | "type": "github" | 39 | "type": "github" |
27 | } | 40 | } |
28 | }, | 41 | }, |
29 | "my-lib": { | 42 | "myuids": { |
30 | "inputs": { | ||
31 | "nixpkgs": "nixpkgs" | ||
32 | }, | ||
33 | "locked": { | 43 | "locked": { |
34 | "narHash": "sha256-HGNP1eH7b42BxViYx/F3ZPO9CM1X+5qfA9JoP2ArN+s=", | 44 | "lastModified": 1, |
35 | "path": "../../lib", | 45 | "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=", |
46 | "path": "../myuids", | ||
36 | "type": "path" | 47 | "type": "path" |
37 | }, | 48 | }, |
38 | "original": { | 49 | "original": { |
39 | "path": "../../lib", | 50 | "path": "../myuids", |
40 | "type": "path" | 51 | "type": "path" |
41 | } | 52 | } |
42 | }, | 53 | }, |
43 | "myuids": { | ||
44 | "locked": { | ||
45 | "dir": "flakes/myuids", | ||
46 | "lastModified": 1628207001, | ||
47 | "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=", | ||
48 | "ref": "master", | ||
49 | "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3", | ||
50 | "revCount": 865, | ||
51 | "type": "git", | ||
52 | "url": "https://git.immae.eu/perso/Immae/Config/Nix.git" | ||
53 | }, | ||
54 | "original": { | ||
55 | "dir": "flakes/myuids", | ||
56 | "type": "git", | ||
57 | "url": "https://git.immae.eu/perso/Immae/Config/Nix.git" | ||
58 | } | ||
59 | }, | ||
60 | "nix-lib": { | ||
61 | "locked": { | ||
62 | "lastModified": 1633008342, | ||
63 | "narHash": "sha256-wZV5YidnsqV/iufDIhaZip3LzwUGeIt8wtdiGS5+cXc=", | ||
64 | "owner": "NixOS", | ||
65 | "repo": "nixpkgs", | ||
66 | "rev": "6eae8a116011f4db0aa5146f364820024411d6bb", | ||
67 | "type": "github" | ||
68 | }, | ||
69 | "original": { | ||
70 | "owner": "NixOS", | ||
71 | "repo": "nixpkgs", | ||
72 | "type": "github" | ||
73 | } | ||
74 | }, | ||
75 | "nixpkgs": { | 54 | "nixpkgs": { |
76 | "locked": { | 55 | "locked": { |
77 | "lastModified": 1631570365, | ||
78 | "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=", | ||
79 | "owner": "NixOS", | ||
80 | "repo": "nixpkgs", | ||
81 | "rev": "df7113c0727881519248d4c7d080324e0ee3327b", | ||
82 | "type": "github" | ||
83 | }, | ||
84 | "original": { | ||
85 | "owner": "NixOS", | ||
86 | "repo": "nixpkgs", | ||
87 | "type": "github" | ||
88 | } | ||
89 | }, | ||
90 | "nixpkgs_2": { | ||
91 | "locked": { | ||
92 | "lastModified": 1597943282, | 56 | "lastModified": 1597943282, |
93 | "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=", | 57 | "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=", |
94 | "owner": "NixOS", | 58 | "owner": "NixOS", |
@@ -106,10 +70,11 @@ | |||
106 | "inputs": { | 70 | "inputs": { |
107 | "flake-utils": "flake-utils", | 71 | "flake-utils": "flake-utils", |
108 | "myuids": "myuids", | 72 | "myuids": "myuids", |
109 | "nixpkgs": "nixpkgs_2" | 73 | "nixpkgs": "nixpkgs" |
110 | }, | 74 | }, |
111 | "locked": { | 75 | "locked": { |
112 | "narHash": "sha256-7jup/d3+WXXWsNMB7Sp5Py4rJQV30Z5+PJITBISbQ9o=", | 76 | "lastModified": 1, |
77 | "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=", | ||
113 | "path": "../../opendmarc", | 78 | "path": "../../opendmarc", |
114 | "type": "path" | 79 | "type": "path" |
115 | }, | 80 | }, |
@@ -120,16 +85,16 @@ | |||
120 | }, | 85 | }, |
121 | "root": { | 86 | "root": { |
122 | "inputs": { | 87 | "inputs": { |
88 | "environment": "environment", | ||
123 | "files-watcher": "files-watcher", | 89 | "files-watcher": "files-watcher", |
124 | "my-lib": "my-lib", | ||
125 | "nix-lib": "nix-lib", | ||
126 | "opendmarc": "opendmarc", | 90 | "opendmarc": "opendmarc", |
127 | "secrets": "secrets" | 91 | "secrets": "secrets" |
128 | } | 92 | } |
129 | }, | 93 | }, |
130 | "secrets": { | 94 | "secrets": { |
131 | "locked": { | 95 | "locked": { |
132 | "narHash": "sha256-w3u1bMEJHCg9SqErJ5Qi0sTX2xx7mk+HrHZXzpjQd1w=", | 96 | "lastModified": 1, |
97 | "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=", | ||
133 | "path": "../../secrets", | 98 | "path": "../../secrets", |
134 | "type": "path" | 99 | "type": "path" |
135 | }, | 100 | }, |
diff --git a/flakes/private/opendmarc/flake.nix b/flakes/private/opendmarc/flake.nix index e2575e7..7e9e8eb 100644 --- a/flakes/private/opendmarc/flake.nix +++ b/flakes/private/opendmarc/flake.nix | |||
@@ -1,77 +1,62 @@ | |||
1 | { | 1 | { |
2 | inputs.opendmarc = { | 2 | inputs.opendmarc.url = "path:../../opendmarc"; |
3 | path = "../../opendmarc"; | 3 | inputs.environment.url = "path:../environment"; |
4 | type = "path"; | 4 | inputs.secrets.url = "path:../../secrets"; |
5 | }; | 5 | inputs.files-watcher.url = "path:../../files-watcher"; |
6 | inputs.secrets = { | ||
7 | path = "../../secrets"; | ||
8 | type = "path"; | ||
9 | }; | ||
10 | inputs.files-watcher = { | ||
11 | path = "../../files-watcher"; | ||
12 | type = "path"; | ||
13 | }; | ||
14 | inputs.my-lib = { | ||
15 | path = "../../lib"; | ||
16 | type = "path"; | ||
17 | }; | ||
18 | inputs.nix-lib.url = "github:NixOS/nixpkgs"; | ||
19 | 6 | ||
20 | description = "Private configuration for opendmarc"; | 7 | description = "Private configuration for opendmarc"; |
21 | outputs = { self, nix-lib, opendmarc, my-lib, files-watcher, secrets }: | 8 | outputs = { self, environment, opendmarc, files-watcher, secrets }: { |
22 | let | 9 | nixosModule = self.nixosModules.opendmarc; |
23 | cfg = name': { config, lib, pkgs, name, ... }: { | 10 | nixosModules.opendmarc = { config, lib, pkgs, ... }: { |
24 | imports = [ | 11 | imports = [ |
25 | (my-lib.lib.withNarKey files-watcher "nixosModule") | 12 | environment.nixosModule |
26 | (my-lib.lib.withNarKey opendmarc "nixosModule") | 13 | files-watcher.nixosModule |
27 | (my-lib.lib.withNarKey secrets "nixosModule") | 14 | opendmarc.nixosModule |
28 | ]; | 15 | secrets.nixosModule |
29 | config = lib.mkIf (name == name') { | 16 | ]; |
30 | users.users."${config.services.opendmarc.user}".extraGroups = [ "keys" ]; | 17 | config = { |
31 | systemd.services.opendmarc.serviceConfig.Slice = "mail.slice"; | 18 | users.users."${config.services.opendmarc.user}".extraGroups = [ "keys" ]; |
32 | services.opendmarc = { | 19 | systemd.services.opendmarc.serviceConfig.Slice = "mail.slice"; |
33 | enable = true; | 20 | services.opendmarc = { |
34 | socket = "/run/opendmarc/opendmarc.sock"; | 21 | enable = true; |
35 | configFile = pkgs.writeText "opendmarc.conf" '' | 22 | socket = "/run/opendmarc/opendmarc.sock"; |
36 | AuthservID HOSTNAME | 23 | configFile = pkgs.writeText "opendmarc.conf" '' |
37 | FailureReports false | 24 | AuthservID HOSTNAME |
38 | FailureReportsBcc postmaster@immae.eu | 25 | FailureReports false |
39 | FailureReportsOnNone true | 26 | FailureReportsBcc postmaster@immae.eu |
40 | FailureReportsSentBy postmaster@immae.eu | 27 | FailureReportsOnNone true |
41 | IgnoreAuthenticatedClients true | 28 | FailureReportsSentBy postmaster@immae.eu |
42 | IgnoreHosts ${config.secrets.fullPaths."opendmarc/ignore.hosts"} | 29 | IgnoreAuthenticatedClients true |
43 | SoftwareHeader true | 30 | IgnoreHosts ${config.secrets.fullPaths."opendmarc/ignore.hosts"} |
44 | SPFIgnoreResults true | 31 | SoftwareHeader true |
45 | SPFSelfValidate true | 32 | SPFIgnoreResults true |
46 | UMask 002 | 33 | SPFSelfValidate true |
47 | ''; | 34 | UMask 002 |
48 | group = config.services.postfix.group; | 35 | ''; |
49 | }; | 36 | group = config.services.postfix.group; |
50 | services.filesWatcher.opendmarc = { | 37 | }; |
51 | restart = true; | 38 | services.filesWatcher.opendmarc = { |
52 | paths = [ | 39 | restart = true; |
53 | config.secrets.fullPaths."opendmarc/ignore.hosts" | 40 | paths = [ |
54 | ]; | 41 | config.secrets.fullPaths."opendmarc/ignore.hosts" |
55 | }; | 42 | ]; |
56 | secrets.keys = { | 43 | }; |
57 | "opendmarc/ignore.hosts" = { | 44 | secrets.keys = { |
58 | user = config.services.opendmarc.user; | 45 | "opendmarc/ignore.hosts" = { |
59 | group = config.services.opendmarc.group; | 46 | user = config.services.opendmarc.user; |
60 | permissions = "0400"; | 47 | group = config.services.opendmarc.group; |
61 | text = let | 48 | permissions = "0400"; |
62 | mxes = lib.attrsets.filterAttrs | 49 | text = let |
63 | (n: v: v.mx.enable) | 50 | mxes = lib.attrsets.filterAttrs |
64 | config.myEnv.servers; | 51 | (n: v: v.mx.enable) |
65 | in | 52 | config.myEnv.servers; |
66 | builtins.concatStringsSep "\n" ([ | 53 | in |
67 | config.myEnv.mail.dmarc.ignore_hosts | 54 | builtins.concatStringsSep "\n" ([ |
68 | ] ++ lib.mapAttrsToList (n: v: v.fqdn) mxes); | 55 | config.myEnv.mail.dmarc.ignore_hosts |
69 | }; | 56 | ] ++ lib.mapAttrsToList (n: v: v.fqdn) mxes); |
70 | }; | 57 | }; |
71 | }; | 58 | }; |
72 | }; | 59 | }; |
73 | in | 60 | }; |
74 | opendmarc.outputs // | 61 | }; |
75 | { nixosModules = opendmarc.nixosModules or {} // nix-lib.lib.genAttrs ["eldiron" "backup-2"] cfg; }; | ||
76 | } | 62 | } |
77 | |||
diff --git a/flakes/private/openldap/flake.nix b/flakes/private/openldap/flake.nix new file mode 100644 index 0000000..130312d --- /dev/null +++ b/flakes/private/openldap/flake.nix | |||
@@ -0,0 +1,6 @@ | |||
1 | { | ||
2 | outputs = { self }: { | ||
3 | immae-schema = ./immae.schema; | ||
4 | immae-ldif = ./immae.ldif; | ||
5 | }; | ||
6 | } | ||
diff --git a/flakes/private/openldap/immae.ldif b/flakes/private/openldap/immae.ldif new file mode 100644 index 0000000..f1b4cb7 --- /dev/null +++ b/flakes/private/openldap/immae.ldif | |||
@@ -0,0 +1,83 @@ | |||
1 | # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. | ||
2 | # CRC32 22130f5f | ||
3 | dn: cn=immae,cn=schema,cn=config | ||
4 | objectClass: olcSchemaConfig | ||
5 | cn: immae | ||
6 | olcObjectIdentifier: {0}Immaeroot 1.3.6.1.4.1.50071 | ||
7 | olcObjectIdentifier: {1}Immae Immaeroot:2 | ||
8 | olcObjectIdentifier: {2}ImmaeattributeType Immae:3 | ||
9 | olcObjectIdentifier: {3}ImmaeobjectClass Immae:4 | ||
10 | olcAttributeTypes: {0}( ImmaeattributeType:1 NAME 'immaeTtrssLogin' DESC 'lo | ||
11 | gin for TTRSS' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SY | ||
12 | NTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) | ||
13 | olcAttributeTypes: {1}( ImmaeattributeType:2 NAME 'immaeFtpDirectory' DESC ' | ||
14 | home directory for ftp' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466. | ||
15 | 115.121.1.26 ) | ||
16 | olcAttributeTypes: {2}( ImmaeattributeType:3 NAME 'immaeFtpUid' DESC 'user i | ||
17 | d for ftp' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) | ||
18 | olcAttributeTypes: {3}( ImmaeattributeType:4 NAME 'immaeFtpGid' DESC 'group | ||
19 | id for ftp' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) | ||
20 | olcAttributeTypes: {4}( ImmaeattributeType:5 NAME 'immaeSshKey' DESC 'OpenSS | ||
21 | H Public key' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.4 | ||
22 | 0 ) | ||
23 | olcAttributeTypes: {5}( ImmaeattributeType:6 NAME 'immaeAccessDn' EQUALITY d | ||
24 | istinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) | ||
25 | olcAttributeTypes: {6}( ImmaeattributeType:17 NAME 'immaeAccessWriteDn' EQUA | ||
26 | LITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) | ||
27 | olcAttributeTypes: {7}( ImmaeattributeType:18 NAME 'immaeAccessReadSubtree' | ||
28 | EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) | ||
29 | olcAttributeTypes: {8}( ImmaeattributeType:7 NAME 'immaeXmppUid' DESC 'user | ||
30 | part for Xmpp' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SY | ||
31 | NTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) | ||
32 | olcAttributeTypes: {9}( ImmaeattributeType:8 NAME 'immaePostfixAddress' DESC | ||
33 | 'the dovecot address to match as username' EQUALITY caseIgnoreIA5Match SUB | ||
34 | STR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} | ||
35 | ) | ||
36 | olcAttributeTypes: {10}( ImmaeattributeType:9 NAME 'immaePostfixHome' DESC ' | ||
37 | the postfix home directory' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1 | ||
38 | 466.115.121.1.26 SINGLE-VALUE ) | ||
39 | olcAttributeTypes: {11}( ImmaeattributeType:10 NAME 'immaePostfixMail' DESC | ||
40 | 'the dovecot mail location' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1 | ||
41 | 466.115.121.1.26 SINGLE-VALUE ) | ||
42 | olcAttributeTypes: {12}( ImmaeattributeType:11 NAME 'immaePostfixUid' DESC ' | ||
43 | the dovecot uid' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121 | ||
44 | .1.26 SINGLE-VALUE ) | ||
45 | olcAttributeTypes: {13}( ImmaeattributeType:12 NAME 'immaePostfixGid' DESC ' | ||
46 | the dovecot gid' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121 | ||
47 | .1.26 SINGLE-VALUE ) | ||
48 | olcAttributeTypes: {14}( ImmaeattributeType:16 NAME 'immaePuppetJson' DESC ' | ||
49 | Puppet hiera json' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.12 | ||
50 | 1.1.40 ) | ||
51 | olcAttributeTypes: {15}( ImmaeattributeType:19 NAME 'immaeTaskId' DESC 'Task | ||
52 | warrior server Org:Name:Key' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubs | ||
53 | tringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) | ||
54 | olcAttributeTypes: {16}( ImmaeattributeType:20 NAME 'immaePeertubeId' DESC ' | ||
55 | login for Peertube' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMat | ||
56 | ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) | ||
57 | olcObjectClasses: {0}( ImmaeobjectClass:1 NAME 'immaeTtrssClass' DESC 'Expan | ||
58 | sion of the existing object classes for ttrss' SUP top AUXILIARY MUST immae | ||
59 | TtrssLogin ) | ||
60 | olcObjectClasses: {1}( ImmaeobjectClass:2 NAME 'immaeFtpClass' DESC 'Expansi | ||
61 | on of the existing object classes for ftp' SUP top AUXILIARY MUST ( immaeFt | ||
62 | pDirectory $ immaeFtpGid $ immaeFtpUid ) ) | ||
63 | olcObjectClasses: {2}( ImmaeobjectClass:3 NAME 'immaeSshClass' DESC 'OpenSSH | ||
64 | class' SUP top AUXILIARY MAY immaeSSHKey ) | ||
65 | olcObjectClasses: {3}( ImmaeobjectClass:4 NAME 'immaeAccessClass' DESC 'Acce | ||
66 | ss class' SUP top AUXILIARY MAY ( immaeAccessDn $ immaeAccessWriteDn $ imma | ||
67 | eAccessReadSubtree ) ) | ||
68 | olcObjectClasses: {4}( ImmaeobjectClass:5 NAME 'immaeXmppClass' DESC 'Expans | ||
69 | ion of the existing object classes for XMPP' SUP top AUXILIARY MUST immaeXm | ||
70 | ppUid ) | ||
71 | olcObjectClasses: {5}( ImmaeobjectClass:6 NAME 'immaePostfixClass' DESC 'Exp | ||
72 | ansion of the existing object classes for Postfix' SUP top AUXILIARY MAY ( | ||
73 | immaePostfixHome $ immaePostfixMail $ immaePostfixUid $ immaePostfixGid ) M | ||
74 | UST ( immaePostfixAddress ) ) | ||
75 | olcObjectClasses: {6}( ImmaeobjectClass:8 NAME 'immaePuppetClass' DESC 'Expa | ||
76 | nsion of the existing object classes for Puppet' SUP top AUXILIARY MUST imm | ||
77 | aePuppetJson ) | ||
78 | olcObjectClasses: {7}( ImmaeobjectClass:9 NAME 'immaeTaskClass' DESC 'Expans | ||
79 | ion of the existing object classes for Task' SUP top AUXILIARY MUST immaeTa | ||
80 | skId ) | ||
81 | olcObjectClasses: {8}( ImmaeobjectClass:10 NAME 'immaePeertubeClass' DESC 'E | ||
82 | xpansion of the existing object classes for peertube' SUP top AUXILIARY MUS | ||
83 | T immaePeertubeId ) | ||
diff --git a/flakes/private/openldap/immae.schema b/flakes/private/openldap/immae.schema new file mode 100644 index 0000000..7b3b587 --- /dev/null +++ b/flakes/private/openldap/immae.schema | |||
@@ -0,0 +1,179 @@ | |||
1 | # vim: set filetype=slapd: | ||
2 | objectIdentifier Immaeroot 1.3.6.1.4.1.50071 | ||
3 | |||
4 | objectIdentifier Immae Immaeroot:2 | ||
5 | objectIdentifier ImmaeattributeType Immae:3 | ||
6 | objectIdentifier ImmaeobjectClass Immae:4 | ||
7 | |||
8 | # TT-RSS | ||
9 | attributetype ( ImmaeattributeType:1 NAME 'immaeTtrssLogin' | ||
10 | DESC 'login for TTRSS' | ||
11 | EQUALITY caseIgnoreMatch | ||
12 | SUBSTR caseIgnoreSubstringsMatch | ||
13 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) | ||
14 | |||
15 | objectclass ( ImmaeobjectClass:1 NAME 'immaeTtrssClass' | ||
16 | DESC 'Expansion of the existing object classes for ttrss' | ||
17 | SUP top AUXILIARY | ||
18 | MUST ( immaeTtrssLogin ) ) | ||
19 | |||
20 | # FTP | ||
21 | attributetype ( ImmaeattributeType:2 NAME 'immaeFtpDirectory' | ||
22 | DESC 'home directory for ftp' | ||
23 | EQUALITY caseExactIA5Match | ||
24 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) | ||
25 | |||
26 | attributetype ( ImmaeattributeType:3 NAME 'immaeFtpUid' | ||
27 | DESC 'user id for ftp' | ||
28 | EQUALITY integerMatch | ||
29 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) | ||
30 | |||
31 | attributetype ( ImmaeattributeType:4 NAME 'immaeFtpGid' | ||
32 | DESC 'group id for ftp' | ||
33 | EQUALITY integerMatch | ||
34 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) | ||
35 | |||
36 | objectclass ( ImmaeobjectClass:2 NAME 'immaeFtpClass' | ||
37 | DESC 'Expansion of the existing object classes for ftp' | ||
38 | SUP top AUXILIARY | ||
39 | MUST ( immaeFtpDirectory $ immaeFtpGid $ immaeFtpUid ) ) | ||
40 | |||
41 | |||
42 | # SSH keys | ||
43 | attributetype ( ImmaeattributeType:5 NAME 'immaeSshKey' | ||
44 | DESC 'OpenSSH Public key' | ||
45 | EQUALITY octetStringMatch | ||
46 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 ) | ||
47 | |||
48 | objectClass ( ImmaeobjectClass:3 NAME 'immaeSshClass' | ||
49 | DESC 'OpenSSH class' | ||
50 | SUP top AUXILIARY | ||
51 | MAy ( immaeSSHKey ) ) | ||
52 | |||
53 | # Specific access | ||
54 | attributetype (ImmaeattributeType:6 NAME 'immaeAccessDn' | ||
55 | EQUALITY distinguishedNameMatch | ||
56 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) | ||
57 | |||
58 | attributetype (ImmaeattributeType:17 NAME 'immaeAccessWriteDn' | ||
59 | EQUALITY distinguishedNameMatch | ||
60 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) | ||
61 | |||
62 | attributetype (ImmaeattributeType:18 NAME 'immaeAccessReadSubtree' | ||
63 | EQUALITY distinguishedNameMatch | ||
64 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) | ||
65 | |||
66 | objectClass ( ImmaeobjectClass:4 NAME 'immaeAccessClass' | ||
67 | DESC 'Access class' | ||
68 | SUP top AUXILIARY | ||
69 | MAY ( immaeAccessDn $ immaeAccessWriteDn $ immaeAccessReadSubtree ) ) | ||
70 | |||
71 | # Xmpp uid | ||
72 | attributetype ( ImmaeattributeType:7 NAME 'immaeXmppUid' | ||
73 | DESC 'user part for Xmpp' | ||
74 | EQUALITY caseIgnoreMatch | ||
75 | SUBSTR caseIgnoreSubstringsMatch | ||
76 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) | ||
77 | |||
78 | objectclass ( ImmaeobjectClass:5 NAME 'immaeXmppClass' | ||
79 | DESC 'Expansion of the existing object classes for XMPP' | ||
80 | SUP top AUXILIARY | ||
81 | MUST ( immaeXmppUid ) ) | ||
82 | |||
83 | # Postfix accounts | ||
84 | attributetype ( ImmaeattributeType:8 NAME 'immaePostfixAddress' | ||
85 | DESC 'the dovecot address to match as username' | ||
86 | EQUALITY caseIgnoreIA5Match | ||
87 | SUBSTR caseIgnoreIA5SubstringsMatch | ||
88 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) | ||
89 | |||
90 | attributetype ( ImmaeattributeType:9 NAME 'immaePostfixHome' | ||
91 | DESC 'the postfix home directory' | ||
92 | EQUALITY caseExactIA5Match | ||
93 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) | ||
94 | |||
95 | attributetype ( ImmaeattributeType:10 NAME 'immaePostfixMail' | ||
96 | DESC 'the dovecot mail location' | ||
97 | EQUALITY caseExactIA5Match | ||
98 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) | ||
99 | |||
100 | attributetype ( ImmaeattributeType:11 NAME 'immaePostfixUid' | ||
101 | DESC 'the dovecot uid' | ||
102 | EQUALITY caseExactIA5Match | ||
103 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) | ||
104 | |||
105 | attributetype ( ImmaeattributeType:12 NAME 'immaePostfixGid' | ||
106 | DESC 'the dovecot gid' | ||
107 | EQUALITY caseExactIA5Match | ||
108 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) | ||
109 | |||
110 | objectclass ( ImmaeobjectClass:6 NAME 'immaePostfixClass' | ||
111 | DESC 'Expansion of the existing object classes for Postfix' | ||
112 | SUP top AUXILIARY | ||
113 | MAY ( immaePostfixHome $ immaePostfixMail $ immaePostfixUid $ immaePostfixGid ) | ||
114 | MUST ( immaePostfixAddress ) | ||
115 | ) | ||
116 | |||
117 | # Tinc informations | ||
118 | # Domaine = une classe a part ou une partie du dn ? | ||
119 | # attributetype ( ImmaeattributeType:13 NAME 'immaeTincIpSegment' | ||
120 | # DESC 'the internal ip segment in tinc' | ||
121 | # EQUALITY caseIgnoreIA5Match | ||
122 | # SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) | ||
123 | # | ||
124 | # attributetype ( ImmaeattributeType:14 NAME 'immaeTincSubdomain' | ||
125 | # DESC 'the host subdomain' | ||
126 | # EQUALITY caseIgnoreIA5Match | ||
127 | # SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) | ||
128 | # | ||
129 | # attributetype ( ImmaeattributeType:15 NAME 'immaeTincHostname' | ||
130 | # DESC 'the host name' | ||
131 | # EQUALITY caseIgnoreIA5Match | ||
132 | # SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) | ||
133 | # | ||
134 | # objectclass ( ImmaeobjectClass:7 NAME 'immaeTincHostClass' | ||
135 | # DESC 'Expansion of the existing object classes for Tinc' | ||
136 | # SUP top AUXILIARY | ||
137 | # MUST ( immaeTincInternalIp $ immaeTincSubdomain $ | ||
138 | # immaeTincHostname ) | ||
139 | # ) | ||
140 | |||
141 | attributetype (ImmaeattributeType:16 NAME 'immaePuppetJson' | ||
142 | DESC 'Puppet hiera json' | ||
143 | EQUALITY octetStringMatch | ||
144 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 ) | ||
145 | |||
146 | objectclass ( ImmaeobjectClass:8 NAME 'immaePuppetClass' | ||
147 | DESC 'Expansion of the existing object classes for Puppet' | ||
148 | SUP top AUXILIARY | ||
149 | MUST ( immaePuppetJson ) | ||
150 | ) | ||
151 | |||
152 | attributetype (ImmaeattributeType:19 NAME 'immaeTaskId' | ||
153 | DESC 'Taskwarrior server Org:Name:Key' | ||
154 | EQUALITY caseIgnoreMatch | ||
155 | SUBSTR caseIgnoreSubstringsMatch | ||
156 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) | ||
157 | |||
158 | objectclass ( ImmaeobjectClass:9 NAME 'immaeTaskClass' | ||
159 | DESC 'Expansion of the existing object classes for Task' | ||
160 | SUP top AUXILIARY | ||
161 | MUST ( immaeTaskId ) | ||
162 | ) | ||
163 | |||
164 | # Peertube uid | ||
165 | attributetype ( ImmaeattributeType:20 NAME 'immaePeertubeId' | ||
166 | DESC 'login for Peertube' | ||
167 | EQUALITY caseIgnoreMatch | ||
168 | SUBSTR caseIgnoreSubstringsMatch | ||
169 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) | ||
170 | |||
171 | objectclass ( ImmaeobjectClass:10 NAME 'immaePeertubeClass' | ||
172 | DESC 'Expansion of the existing object classes for peertube' | ||
173 | SUP top AUXILIARY | ||
174 | MUST ( immaePeertubeId ) ) | ||
175 | |||
176 | |||
177 | # Last: | ||
178 | # attributetype ( ImmaeattributeType:20 NAME 'immaePeertubeId' | ||
179 | # objectclass ( ImmaeobjectClass:10 NAME 'immaePeertubeClass' | ||
diff --git a/flakes/private/paste/flake.lock b/flakes/private/paste/flake.lock index 6ad428c..e81b9ee 100644 --- a/flakes/private/paste/flake.lock +++ b/flakes/private/paste/flake.lock | |||
@@ -15,35 +15,6 @@ | |||
15 | "type": "github" | 15 | "type": "github" |
16 | } | 16 | } |
17 | }, | 17 | }, |
18 | "my-lib": { | ||
19 | "inputs": { | ||
20 | "nixpkgs": "nixpkgs" | ||
21 | }, | ||
22 | "locked": { | ||
23 | "narHash": "sha256-HGNP1eH7b42BxViYx/F3ZPO9CM1X+5qfA9JoP2ArN+s=", | ||
24 | "path": "../../lib", | ||
25 | "type": "path" | ||
26 | }, | ||
27 | "original": { | ||
28 | "path": "../../lib", | ||
29 | "type": "path" | ||
30 | } | ||
31 | }, | ||
32 | "nix-lib": { | ||
33 | "locked": { | ||
34 | "lastModified": 1632955135, | ||
35 | "narHash": "sha256-MyOBftnLv5UcPCL4AzvlyNEDwGD2cGGM9HMEOno/MZw=", | ||
36 | "owner": "NixOS", | ||
37 | "repo": "nixpkgs", | ||
38 | "rev": "a4d96cd808f13d924988938ecf9a46b2a2787fa3", | ||
39 | "type": "github" | ||
40 | }, | ||
41 | "original": { | ||
42 | "owner": "NixOS", | ||
43 | "repo": "nixpkgs", | ||
44 | "type": "github" | ||
45 | } | ||
46 | }, | ||
47 | "nixpkgs": { | 18 | "nixpkgs": { |
48 | "locked": { | 19 | "locked": { |
49 | "lastModified": 1631570365, | 20 | "lastModified": 1631570365, |
@@ -59,28 +30,14 @@ | |||
59 | "type": "github" | 30 | "type": "github" |
60 | } | 31 | } |
61 | }, | 32 | }, |
62 | "nixpkgs_2": { | ||
63 | "locked": { | ||
64 | "lastModified": 1631570365, | ||
65 | "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=", | ||
66 | "owner": "NixOS", | ||
67 | "repo": "nixpkgs", | ||
68 | "rev": "df7113c0727881519248d4c7d080324e0ee3327b", | ||
69 | "type": "github" | ||
70 | }, | ||
71 | "original": { | ||
72 | "owner": "NixOS", | ||
73 | "repo": "nixpkgs", | ||
74 | "type": "github" | ||
75 | } | ||
76 | }, | ||
77 | "paste": { | 33 | "paste": { |
78 | "inputs": { | 34 | "inputs": { |
79 | "flake-utils": "flake-utils", | 35 | "flake-utils": "flake-utils", |
80 | "nixpkgs": "nixpkgs_2" | 36 | "nixpkgs": "nixpkgs" |
81 | }, | 37 | }, |
82 | "locked": { | 38 | "locked": { |
83 | "narHash": "sha256-2ylI42ZHfzW6oCsxfFyHf5zVnDsPMwvJCACtcdErtPg=", | 39 | "lastModified": 1, |
40 | "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=", | ||
84 | "path": "../../paste", | 41 | "path": "../../paste", |
85 | "type": "path" | 42 | "type": "path" |
86 | }, | 43 | }, |
@@ -91,8 +48,6 @@ | |||
91 | }, | 48 | }, |
92 | "root": { | 49 | "root": { |
93 | "inputs": { | 50 | "inputs": { |
94 | "my-lib": "my-lib", | ||
95 | "nix-lib": "nix-lib", | ||
96 | "paste": "paste" | 51 | "paste": "paste" |
97 | } | 52 | } |
98 | } | 53 | } |
diff --git a/flakes/private/paste/flake.nix b/flakes/private/paste/flake.nix index 23f8cd3..97853ea 100644 --- a/flakes/private/paste/flake.nix +++ b/flakes/private/paste/flake.nix | |||
@@ -1,30 +1,20 @@ | |||
1 | { | 1 | { |
2 | inputs.paste = { | 2 | inputs.paste.url = "path:../../paste"; |
3 | path = "../../paste"; | ||
4 | type = "path"; | ||
5 | }; | ||
6 | inputs.my-lib = { | ||
7 | path = "../../lib"; | ||
8 | type = "path"; | ||
9 | }; | ||
10 | inputs.nix-lib.url = "github:NixOS/nixpkgs"; | ||
11 | 3 | ||
12 | description = "Private configuration for paste"; | 4 | description = "Private configuration for paste"; |
13 | outputs = { self, my-lib, nix-lib, paste }: | 5 | outputs = { self, paste }: { |
14 | let | 6 | nixosModule = self.nixosModules.paste; |
15 | cfg = name': { config, lib, pkgs, name, ... }: { | 7 | nixosModules.paste = { ... }: { |
16 | imports = [ | 8 | imports = [ |
17 | (my-lib.lib.withNarKey paste "nixosModule") | 9 | paste.nixosModule |
18 | ]; | 10 | ]; |
19 | config = lib.mkIf (name == name') { | 11 | config = { |
20 | services.paste = { | 12 | services.paste = { |
21 | enable = true; | 13 | enable = true; |
22 | webDirectory = "/paste"; | 14 | webDirectory = "/paste"; |
23 | }; | ||
24 | }; | 15 | }; |
25 | }; | 16 | }; |
26 | in | 17 | }; |
27 | paste.outputs // | 18 | }; |
28 | { nixosModules = paste.nixosModules or {} // nix-lib.lib.genAttrs ["eldiron"] cfg; }; | ||
29 | } | 19 | } |
30 | 20 | ||
diff --git a/flakes/private/peertube/flake.lock b/flakes/private/peertube/flake.lock index 4944da7..0ecec47 100644 --- a/flakes/private/peertube/flake.lock +++ b/flakes/private/peertube/flake.lock | |||
@@ -32,36 +32,26 @@ | |||
32 | }, | 32 | }, |
33 | "myuids": { | 33 | "myuids": { |
34 | "locked": { | 34 | "locked": { |
35 | "dir": "flakes/myuids", | 35 | "lastModified": 1, |
36 | "lastModified": 1628207001, | 36 | "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=", |
37 | "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=", | 37 | "path": "../myuids", |
38 | "ref": "master", | 38 | "type": "path" |
39 | "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3", | ||
40 | "revCount": 865, | ||
41 | "type": "git", | ||
42 | "url": "https://git.immae.eu/perso/Immae/Config/Nix.git" | ||
43 | }, | 39 | }, |
44 | "original": { | 40 | "original": { |
45 | "dir": "flakes/myuids", | 41 | "path": "../myuids", |
46 | "type": "git", | 42 | "type": "path" |
47 | "url": "https://git.immae.eu/perso/Immae/Config/Nix.git" | ||
48 | } | 43 | } |
49 | }, | 44 | }, |
50 | "myuids_2": { | 45 | "myuids_2": { |
51 | "locked": { | 46 | "locked": { |
52 | "dir": "flakes/myuids", | 47 | "lastModified": 1, |
53 | "lastModified": 1628207001, | 48 | "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=", |
54 | "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=", | 49 | "path": "../myuids", |
55 | "ref": "master", | 50 | "type": "path" |
56 | "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3", | ||
57 | "revCount": 865, | ||
58 | "type": "git", | ||
59 | "url": "https://git.immae.eu/perso/Immae/Config/Nix.git" | ||
60 | }, | 51 | }, |
61 | "original": { | 52 | "original": { |
62 | "dir": "flakes/myuids", | 53 | "path": "../myuids", |
63 | "type": "git", | 54 | "type": "path" |
64 | "url": "https://git.immae.eu/perso/Immae/Config/Nix.git" | ||
65 | } | 55 | } |
66 | }, | 56 | }, |
67 | "nixpkgs": { | 57 | "nixpkgs": { |
@@ -97,12 +87,13 @@ | |||
97 | "peertube": { | 87 | "peertube": { |
98 | "flake": false, | 88 | "flake": false, |
99 | "locked": { | 89 | "locked": { |
100 | "lastModified": 1610436329, | 90 | "lastModified": 1611184594, |
101 | "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=", | 91 | "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=", |
102 | "owner": "Chocobozzz", | 92 | "ref": "gitolite_local/open_instance", |
103 | "repo": "PeerTube", | 93 | "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3", |
104 | "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86", | 94 | "revCount": 6316, |
105 | "type": "github" | 95 | "type": "git", |
96 | "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git" | ||
106 | }, | 97 | }, |
107 | "original": { | 98 | "original": { |
108 | "owner": "Chocobozzz", | 99 | "owner": "Chocobozzz", |
@@ -114,21 +105,21 @@ | |||
114 | "peertube_2": { | 105 | "peertube_2": { |
115 | "flake": false, | 106 | "flake": false, |
116 | "locked": { | 107 | "locked": { |
117 | "lastModified": 1611184594, | 108 | "lastModified": 1610436329, |
118 | "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=", | 109 | "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=", |
119 | "ref": "gitolite_local/syden", | 110 | "owner": "Chocobozzz", |
120 | "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3", | 111 | "repo": "PeerTube", |
121 | "revCount": 6316, | 112 | "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86", |
122 | "type": "git", | 113 | "type": "github" |
123 | "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git" | ||
124 | }, | 114 | }, |
125 | "original": { | 115 | "original": { |
126 | "ref": "gitolite_local/syden", | 116 | "owner": "Chocobozzz", |
127 | "type": "git", | 117 | "ref": "v3.0.1", |
128 | "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git" | 118 | "repo": "PeerTube", |
119 | "type": "github" | ||
129 | } | 120 | } |
130 | }, | 121 | }, |
131 | "peertube_origin": { | 122 | "peertube_open_instance": { |
132 | "inputs": { | 123 | "inputs": { |
133 | "flake-utils": "flake-utils", | 124 | "flake-utils": "flake-utils", |
134 | "myuids": "myuids", | 125 | "myuids": "myuids", |
@@ -136,16 +127,17 @@ | |||
136 | "peertube": "peertube" | 127 | "peertube": "peertube" |
137 | }, | 128 | }, |
138 | "locked": { | 129 | "locked": { |
139 | "narHash": "sha256-ESrcCrx7QmNk8MHgws9KrPEZqIxKNQ6bcshbUPj9u88=", | 130 | "lastModified": 1, |
140 | "path": "../../peertube", | 131 | "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=", |
132 | "path": "./../../peertube", | ||
141 | "type": "path" | 133 | "type": "path" |
142 | }, | 134 | }, |
143 | "original": { | 135 | "original": { |
144 | "path": "../../peertube", | 136 | "path": "./../../peertube", |
145 | "type": "path" | 137 | "type": "path" |
146 | } | 138 | } |
147 | }, | 139 | }, |
148 | "peertube_syden": { | 140 | "peertube_origin": { |
149 | "inputs": { | 141 | "inputs": { |
150 | "flake-utils": "flake-utils_2", | 142 | "flake-utils": "flake-utils_2", |
151 | "myuids": "myuids_2", | 143 | "myuids": "myuids_2", |
@@ -153,19 +145,20 @@ | |||
153 | "peertube": "peertube_2" | 145 | "peertube": "peertube_2" |
154 | }, | 146 | }, |
155 | "locked": { | 147 | "locked": { |
156 | "narHash": "sha256-ESrcCrx7QmNk8MHgws9KrPEZqIxKNQ6bcshbUPj9u88=", | 148 | "lastModified": 1, |
157 | "path": "../../peertube", | 149 | "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=", |
150 | "path": "./../../peertube", | ||
158 | "type": "path" | 151 | "type": "path" |
159 | }, | 152 | }, |
160 | "original": { | 153 | "original": { |
161 | "path": "../../peertube", | 154 | "path": "./../../peertube", |
162 | "type": "path" | 155 | "type": "path" |
163 | } | 156 | } |
164 | }, | 157 | }, |
165 | "root": { | 158 | "root": { |
166 | "inputs": { | 159 | "inputs": { |
167 | "peertube_origin": "peertube_origin", | 160 | "peertube_open_instance": "peertube_open_instance", |
168 | "peertube_syden": "peertube_syden" | 161 | "peertube_origin": "peertube_origin" |
169 | } | 162 | } |
170 | } | 163 | } |
171 | }, | 164 | }, |
diff --git a/flakes/private/peertube/flake.nix b/flakes/private/peertube/flake.nix index e0e0d54..8eb81e9 100644 --- a/flakes/private/peertube/flake.nix +++ b/flakes/private/peertube/flake.nix | |||
@@ -1,27 +1,25 @@ | |||
1 | { | 1 | { |
2 | description = "Patched peertube"; | 2 | description = "Patched peertube"; |
3 | inputs.peertube_origin = { | 3 | inputs.peertube_origin = { |
4 | path = "../../peertube"; | 4 | url = "path:./../../peertube"; |
5 | type = "path"; | ||
6 | }; | 5 | }; |
7 | inputs.peertube_syden = { | 6 | inputs.peertube_open_instance = { |
8 | path = "../../peertube"; | 7 | url = "path:./../../peertube"; |
9 | type = "path"; | ||
10 | inputs.peertube = { | 8 | inputs.peertube = { |
11 | url = "https://git.immae.eu/github/Chocobozzz/PeerTube.git"; | 9 | url = "https://git.immae.eu/github/Chocobozzz/PeerTube.git"; |
12 | ref = "gitolite_local/syden"; | 10 | ref = "gitolite_local/open_instance"; |
13 | flake = false; | 11 | flake = false; |
14 | type = "git"; | 12 | type = "git"; |
15 | }; | 13 | }; |
16 | }; | 14 | }; |
17 | 15 | ||
18 | outputs = { self, peertube_origin, peertube_syden }: { | 16 | outputs = { self, peertube_origin, peertube_open_instance }: { |
19 | overlays = { | 17 | overlays = { |
20 | peertube_syden = final: prev: { peertube_syden = peertube_syden.defaultPackage."${final.system}"; }; | 18 | peertube_open_instance = final: prev: { peertube_open_instance = peertube_open_instance.defaultPackage."${final.system}"; }; |
21 | peertube_origin = final: prev: { peertube_origin = peertube_origin.defaultPackage."${final.system}"; }; | 19 | peertube_origin = final: prev: { peertube_origin = peertube_origin.defaultPackage."${final.system}"; }; |
22 | }; | 20 | }; |
23 | packages.x86_64-linux.peertube = peertube_origin.packages.x86_64-linux.peertube; | 21 | packages.x86_64-linux.peertube = peertube_origin.packages.x86_64-linux.peertube; |
24 | packages.x86_64-linux.peertube_syden = peertube_syden.packages.x86_64-linux.peertube; | 22 | packages.x86_64-linux.peertube_open_instance = peertube_open_instance.packages.x86_64-linux.peertube; |
25 | defaultPackage.x86_64-linux = peertube_origin.defaultPackage.x86_64-linux; | 23 | defaultPackage.x86_64-linux = peertube_origin.defaultPackage.x86_64-linux; |
26 | nixosModule = peertube_origin.nixosModule; | 24 | nixosModule = peertube_origin.nixosModule; |
27 | }; | 25 | }; |
diff --git a/flakes/private/php/flake.lock b/flakes/private/php/flake.lock new file mode 100644 index 0000000..c9af933 --- /dev/null +++ b/flakes/private/php/flake.lock | |||
@@ -0,0 +1,62 @@ | |||
1 | { | ||
2 | "nodes": { | ||
3 | "flake-utils": { | ||
4 | "locked": { | ||
5 | "lastModified": 1648297722, | ||
6 | "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=", | ||
7 | "owner": "numtide", | ||
8 | "repo": "flake-utils", | ||
9 | "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade", | ||
10 | "type": "github" | ||
11 | }, | ||
12 | "original": { | ||
13 | "owner": "numtide", | ||
14 | "repo": "flake-utils", | ||
15 | "type": "github" | ||
16 | } | ||
17 | }, | ||
18 | "nixpkgs": { | ||
19 | "flake": false, | ||
20 | "locked": { | ||
21 | "lastModified": 1596265691, | ||
22 | "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=", | ||
23 | "owner": "NixOS", | ||
24 | "repo": "nixpkgs", | ||
25 | "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742", | ||
26 | "type": "github" | ||
27 | }, | ||
28 | "original": { | ||
29 | "owner": "NixOS", | ||
30 | "repo": "nixpkgs", | ||
31 | "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742", | ||
32 | "type": "github" | ||
33 | } | ||
34 | }, | ||
35 | "nixpkgs-4": { | ||
36 | "flake": false, | ||
37 | "locked": { | ||
38 | "lastModified": 1646497237, | ||
39 | "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=", | ||
40 | "owner": "NixOS", | ||
41 | "repo": "nixpkgs", | ||
42 | "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026", | ||
43 | "type": "github" | ||
44 | }, | ||
45 | "original": { | ||
46 | "owner": "NixOS", | ||
47 | "repo": "nixpkgs", | ||
48 | "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026", | ||
49 | "type": "github" | ||
50 | } | ||
51 | }, | ||
52 | "root": { | ||
53 | "inputs": { | ||
54 | "flake-utils": "flake-utils", | ||
55 | "nixpkgs": "nixpkgs", | ||
56 | "nixpkgs-4": "nixpkgs-4" | ||
57 | } | ||
58 | } | ||
59 | }, | ||
60 | "root": "root", | ||
61 | "version": 7 | ||
62 | } | ||
diff --git a/flakes/private/php/flake.nix b/flakes/private/php/flake.nix new file mode 100644 index 0000000..a730b68 --- /dev/null +++ b/flakes/private/php/flake.nix | |||
@@ -0,0 +1,40 @@ | |||
1 | { | ||
2 | description = "Php old versions"; | ||
3 | inputs.flake-utils.url = "github:numtide/flake-utils"; | ||
4 | inputs.nixpkgs = { | ||
5 | url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742"; | ||
6 | flake = false; | ||
7 | }; | ||
8 | inputs.nixpkgs-4 = { | ||
9 | url = "github:NixOS/nixpkgs/062a0c5437b68f950b081bbfc8a699d57a4ee026"; | ||
10 | flake = false; | ||
11 | }; | ||
12 | outputs = { self, nixpkgs, nixpkgs-4, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux"] (system: | ||
13 | let | ||
14 | pkgs = import nixpkgs { inherit system; overlays = []; }; | ||
15 | in rec { | ||
16 | packages = { | ||
17 | php72 = pkgs.php72; | ||
18 | php73 = pkgs.php73; | ||
19 | php74 = (import nixpkgs-4 { inherit system; overlays = []; }).php74; | ||
20 | cryptpad = (import nixpkgs-4 { inherit system; overlays = []; }).cryptpad; | ||
21 | python37 = (import nixpkgs-4 { inherit system; overlays = []; }).python37; | ||
22 | python37Packages = (import nixpkgs-4 { inherit system; overlays = []; }).python37Packages; | ||
23 | telegram-purple = (import nixpkgs-4 { inherit system; overlays = []; }).telegram-purple; | ||
24 | }; | ||
25 | defaultPackage = packages.php73; | ||
26 | legacyPackages = packages; | ||
27 | }) // rec { | ||
28 | overlays = { | ||
29 | php = final: prev: { | ||
30 | php72 = self.packages."${final.system}".php72; | ||
31 | php73 = self.packages."${final.system}".php73; | ||
32 | php74 = self.packages."${final.system}".php74; | ||
33 | cryptpad = self.packages."${final.system}".cryptpad; | ||
34 | python37 = self.packages."${final.system}".python37; | ||
35 | telegram-purple = self.packages."${final.system}".telegram-purple; | ||
36 | }; | ||
37 | }; | ||
38 | overlay = overlays.php; | ||
39 | }; | ||
40 | } | ||
diff --git a/flakes/private/ssh/flake.lock b/flakes/private/ssh/flake.lock new file mode 100644 index 0000000..bbb2011 --- /dev/null +++ b/flakes/private/ssh/flake.lock | |||
@@ -0,0 +1,36 @@ | |||
1 | { | ||
2 | "nodes": { | ||
3 | "environment": { | ||
4 | "locked": { | ||
5 | "lastModified": 1, | ||
6 | "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=", | ||
7 | "path": "../environment", | ||
8 | "type": "path" | ||
9 | }, | ||
10 | "original": { | ||
11 | "path": "../environment", | ||
12 | "type": "path" | ||
13 | } | ||
14 | }, | ||
15 | "root": { | ||
16 | "inputs": { | ||
17 | "environment": "environment", | ||
18 | "secrets": "secrets" | ||
19 | } | ||
20 | }, | ||
21 | "secrets": { | ||
22 | "locked": { | ||
23 | "lastModified": 1, | ||
24 | "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=", | ||
25 | "path": "../../secrets", | ||
26 | "type": "path" | ||
27 | }, | ||
28 | "original": { | ||
29 | "path": "../../secrets", | ||
30 | "type": "path" | ||
31 | } | ||
32 | } | ||
33 | }, | ||
34 | "root": "root", | ||
35 | "version": 7 | ||
36 | } | ||
diff --git a/flakes/private/ssh/flake.nix b/flakes/private/ssh/flake.nix new file mode 100644 index 0000000..0ca6d67 --- /dev/null +++ b/flakes/private/ssh/flake.nix | |||
@@ -0,0 +1,107 @@ | |||
1 | { | ||
2 | inputs.environment.url = "path:../environment"; | ||
3 | inputs.secrets.url = "path:../../secrets"; | ||
4 | outputs = { self, environment, secrets }: { | ||
5 | nixosModule = self.nixosModules.ssh; | ||
6 | nixosModules.ssh = { lib, pkgs, config, ... }: | ||
7 | let | ||
8 | cfg = config.myServices.ssh; | ||
9 | in | ||
10 | { | ||
11 | imports = [ | ||
12 | environment.nixosModule | ||
13 | secrets.nixosModule | ||
14 | ]; | ||
15 | options.myServices.ssh = let | ||
16 | module = lib.types.submodule { | ||
17 | options = { | ||
18 | vars = lib.mkOption { | ||
19 | type = lib.types.attrsOf lib.types.lines; | ||
20 | default = {}; | ||
21 | description = '' | ||
22 | variables to interpolate in the script. A `name_` prefix will be prepended | ||
23 | ''; | ||
24 | }; | ||
25 | snippet = lib.mkOption { | ||
26 | type = lib.types.lines; | ||
27 | description = '' | ||
28 | Snippet to use | ||
29 | ''; | ||
30 | }; | ||
31 | dependencies = lib.mkOption { | ||
32 | type = lib.types.listOf lib.types.package; | ||
33 | default = []; | ||
34 | description = '' | ||
35 | Dependencies of the package | ||
36 | ''; | ||
37 | }; | ||
38 | }; | ||
39 | }; | ||
40 | in { | ||
41 | modules = lib.mkOption { | ||
42 | type = lib.types.attrsOf module; | ||
43 | default = {}; | ||
44 | description = '' | ||
45 | List of modules to enable | ||
46 | ''; | ||
47 | }; | ||
48 | }; | ||
49 | config = lib.mkIf (builtins.length (builtins.attrValues cfg.modules) > 0) { | ||
50 | |||
51 | services.openssh.extraConfig = '' | ||
52 | AuthorizedKeysCommand /etc/ssh/ldap_authorized_keys | ||
53 | AuthorizedKeysCommandUser nobody | ||
54 | ''; | ||
55 | |||
56 | secrets.keys."ssh-ldap" = { | ||
57 | user = "nobody"; | ||
58 | group = "nogroup"; | ||
59 | permissions = "0400"; | ||
60 | text = config.myEnv.sshd.ldap.password; | ||
61 | }; | ||
62 | secrets.keys."ssh-psql" = { | ||
63 | user = "nobody"; | ||
64 | group = "nogroup"; | ||
65 | permissions = "0400"; | ||
66 | text = config.myEnv.sshd.psql.password; | ||
67 | }; | ||
68 | system.activationScripts.sshd = { | ||
69 | deps = [ "secrets" ]; | ||
70 | text = '' | ||
71 | install -Dm400 -o nobody -g nogroup -T ${config.secrets.fullPaths."ssh-ldap"} /etc/ssh/ldap_password | ||
72 | install -Dm400 -o nobody -g nogroup -T ${config.secrets.fullPaths."ssh-psql"} /etc/ssh/psql_password | ||
73 | ''; | ||
74 | }; | ||
75 | # ssh is strict about parent directory having correct rights, don't | ||
76 | # move it in the nix store. | ||
77 | environment.etc."ssh/ldap_authorized_keys" = let | ||
78 | deps = lib.lists.unique ( | ||
79 | [ pkgs.which pkgs.openldap pkgs.stdenv.shellPackage pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.postgresql ] | ||
80 | ++ lib.flatten (map (v: v.dependencies) (builtins.attrValues cfg.modules)) | ||
81 | ); | ||
82 | vars = lib.concatMapAttrs (n: v: ( | ||
83 | lib.mapAttrs' (n': lib.nameValuePair "${n}_${n'}") v.vars | ||
84 | )) cfg.modules; | ||
85 | fullScript = pkgs.runCommand "ldap_authorized_keys" (vars // { | ||
86 | snippets = builtins.concatStringsSep "\n" (map (v: v.snippet) (builtins.attrValues cfg.modules)); | ||
87 | }) '' | ||
88 | substituteAll ${./ldap_authorized_keys.sh} $out | ||
89 | # Second call for the included snippets | ||
90 | substituteAllInPlace $out | ||
91 | chmod a+x $out | ||
92 | ''; | ||
93 | ldap_authorized_keys = pkgs.runCommand "ldap_authorized_keys" { | ||
94 | buildInputs = [ pkgs.makeWrapper ]; | ||
95 | } '' | ||
96 | makeWrapper "${fullScript}" "$out" --prefix PATH : ${lib.makeBinPath deps} | ||
97 | ''; | ||
98 | in { | ||
99 | enable = true; | ||
100 | mode = "0755"; | ||
101 | user = "root"; | ||
102 | source = ldap_authorized_keys; | ||
103 | }; | ||
104 | }; | ||
105 | }; | ||
106 | }; | ||
107 | } | ||
diff --git a/flakes/private/ssh/ldap_authorized_keys.sh b/flakes/private/ssh/ldap_authorized_keys.sh new file mode 100755 index 0000000..f4395be --- /dev/null +++ b/flakes/private/ssh/ldap_authorized_keys.sh | |||
@@ -0,0 +1,62 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | |||
3 | LDAPSEARCH=ldapsearch | ||
4 | KEY="immaeSshKey" | ||
5 | LDAP_BIND="cn=ssh,ou=services,dc=immae,dc=eu" | ||
6 | LDAP_PASS=$(cat /etc/ssh/ldap_password) | ||
7 | LDAP_HOST="ldap://ldap.immae.eu" | ||
8 | LDAP_BASE="dc=immae,dc=eu" | ||
9 | USER_LDAP_BASE="ou=users,dc=immae,dc=eu" | ||
10 | |||
11 | PSQL_BASE="immae" | ||
12 | PSQL_HOST="localhost" | ||
13 | PSQL_USER="immae_auth_read" | ||
14 | PSQL_PASS=$(cat /etc/ssh/psql_password) | ||
15 | |||
16 | suitable_for() { | ||
17 | type_for="$1" | ||
18 | key="$2" | ||
19 | |||
20 | if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then | ||
21 | echo "$key" | ||
22 | else | ||
23 | key_type=$(cut -d " " -f 1 <<< "$key") | ||
24 | |||
25 | if grep -q "\b-$type_for\b" <<< "$key_type"; then | ||
26 | echo "" | ||
27 | elif grep -q "\b$type_for\b" <<< "$key_type"; then | ||
28 | echo $(sed -e "s/^[^ ]* //g" <<< "$key") | ||
29 | else | ||
30 | echo "" | ||
31 | fi | ||
32 | fi | ||
33 | } | ||
34 | |||
35 | clean_key_line() { | ||
36 | type_for="$1" | ||
37 | line="$2" | ||
38 | |||
39 | if [[ "$line" == $KEY::* ]]; then | ||
40 | # base64 keys should't happen, unless wrong copy-pasting | ||
41 | key="" | ||
42 | else | ||
43 | key=$(sed -e "s/^$KEY: *//" -e "s/ *$//" <<< "$line") | ||
44 | fi | ||
45 | |||
46 | suitable_for "$type_for" "$key" | ||
47 | } | ||
48 | |||
49 | ldap_search() { | ||
50 | $LDAPSEARCH -H $LDAP_HOST -ZZ -b $LDAP_BASE -D $LDAP_BIND -w "$LDAP_PASS" -x -o ldif-wrap=no -LLL "$@" | ||
51 | } | ||
52 | |||
53 | psql_search() { | ||
54 | PGPASSWORD="$PSQL_PASS" psql -U "$PSQL_USER" -h "$PSQL_HOST" -X -A -t -d "$PSQL_BASE" -c "$@" | ||
55 | } | ||
56 | |||
57 | ldap_keys() { | ||
58 | user=$1; | ||
59 | @snippets@ | ||
60 | } | ||
61 | |||
62 | ldap_keys $@ | ||
diff --git a/flakes/private/system/flake.lock b/flakes/private/system/flake.lock new file mode 100644 index 0000000..3602f00 --- /dev/null +++ b/flakes/private/system/flake.lock | |||
@@ -0,0 +1,185 @@ | |||
1 | { | ||
2 | "nodes": { | ||
3 | "backports": { | ||
4 | "inputs": { | ||
5 | "flake-utils": "flake-utils", | ||
6 | "nixpkgs": "nixpkgs" | ||
7 | }, | ||
8 | "locked": { | ||
9 | "lastModified": 1, | ||
10 | "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=", | ||
11 | "path": "../../backports", | ||
12 | "type": "path" | ||
13 | }, | ||
14 | "original": { | ||
15 | "path": "../../backports", | ||
16 | "type": "path" | ||
17 | } | ||
18 | }, | ||
19 | "environment": { | ||
20 | "locked": { | ||
21 | "lastModified": 1, | ||
22 | "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=", | ||
23 | "path": "../environment", | ||
24 | "type": "path" | ||
25 | }, | ||
26 | "original": { | ||
27 | "path": "../environment", | ||
28 | "type": "path" | ||
29 | } | ||
30 | }, | ||
31 | "flake-parts": { | ||
32 | "inputs": { | ||
33 | "nixpkgs-lib": "nixpkgs-lib" | ||
34 | }, | ||
35 | "locked": { | ||
36 | "lastModified": 1675295133, | ||
37 | "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=", | ||
38 | "owner": "hercules-ci", | ||
39 | "repo": "flake-parts", | ||
40 | "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f", | ||
41 | "type": "github" | ||
42 | }, | ||
43 | "original": { | ||
44 | "owner": "hercules-ci", | ||
45 | "repo": "flake-parts", | ||
46 | "type": "github" | ||
47 | } | ||
48 | }, | ||
49 | "flake-utils": { | ||
50 | "locked": { | ||
51 | "lastModified": 1667395993, | ||
52 | "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", | ||
53 | "owner": "numtide", | ||
54 | "repo": "flake-utils", | ||
55 | "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", | ||
56 | "type": "github" | ||
57 | }, | ||
58 | "original": { | ||
59 | "owner": "numtide", | ||
60 | "repo": "flake-utils", | ||
61 | "type": "github" | ||
62 | } | ||
63 | }, | ||
64 | "mypackages": { | ||
65 | "inputs": { | ||
66 | "flake-parts": "flake-parts", | ||
67 | "nixpkgs": "nixpkgs_2", | ||
68 | "webapps-ttrss": "webapps-ttrss" | ||
69 | }, | ||
70 | "locked": { | ||
71 | "lastModified": 1, | ||
72 | "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=", | ||
73 | "path": "../../mypackages", | ||
74 | "type": "path" | ||
75 | }, | ||
76 | "original": { | ||
77 | "path": "../../mypackages", | ||
78 | "type": "path" | ||
79 | } | ||
80 | }, | ||
81 | "myuids": { | ||
82 | "locked": { | ||
83 | "lastModified": 1, | ||
84 | "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=", | ||
85 | "path": "../../myuids", | ||
86 | "type": "path" | ||
87 | }, | ||
88 | "original": { | ||
89 | "path": "../../myuids", | ||
90 | "type": "path" | ||
91 | } | ||
92 | }, | ||
93 | "nixpkgs": { | ||
94 | "locked": { | ||
95 | "lastModified": 1687502512, | ||
96 | "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=", | ||
97 | "owner": "NixOS", | ||
98 | "repo": "nixpkgs", | ||
99 | "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f", | ||
100 | "type": "github" | ||
101 | }, | ||
102 | "original": { | ||
103 | "owner": "NixOS", | ||
104 | "ref": "nixos-unstable", | ||
105 | "repo": "nixpkgs", | ||
106 | "type": "github" | ||
107 | } | ||
108 | }, | ||
109 | "nixpkgs-lib": { | ||
110 | "locked": { | ||
111 | "dir": "lib", | ||
112 | "lastModified": 1675183161, | ||
113 | "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=", | ||
114 | "owner": "NixOS", | ||
115 | "repo": "nixpkgs", | ||
116 | "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e", | ||
117 | "type": "github" | ||
118 | }, | ||
119 | "original": { | ||
120 | "dir": "lib", | ||
121 | "owner": "NixOS", | ||
122 | "ref": "nixos-unstable", | ||
123 | "repo": "nixpkgs", | ||
124 | "type": "github" | ||
125 | } | ||
126 | }, | ||
127 | "nixpkgs_2": { | ||
128 | "locked": { | ||
129 | "lastModified": 1646497237, | ||
130 | "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=", | ||
131 | "owner": "nixos", | ||
132 | "repo": "nixpkgs", | ||
133 | "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026", | ||
134 | "type": "github" | ||
135 | }, | ||
136 | "original": { | ||
137 | "owner": "nixos", | ||
138 | "repo": "nixpkgs", | ||
139 | "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026", | ||
140 | "type": "github" | ||
141 | } | ||
142 | }, | ||
143 | "root": { | ||
144 | "inputs": { | ||
145 | "backports": "backports", | ||
146 | "environment": "environment", | ||
147 | "mypackages": "mypackages", | ||
148 | "myuids": "myuids", | ||
149 | "secrets-public": "secrets-public" | ||
150 | } | ||
151 | }, | ||
152 | "secrets-public": { | ||
153 | "locked": { | ||
154 | "lastModified": 1, | ||
155 | "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=", | ||
156 | "path": "../../secrets", | ||
157 | "type": "path" | ||
158 | }, | ||
159 | "original": { | ||
160 | "path": "../../secrets", | ||
161 | "type": "path" | ||
162 | } | ||
163 | }, | ||
164 | "webapps-ttrss": { | ||
165 | "flake": false, | ||
166 | "locked": { | ||
167 | "lastModified": 1546759381, | ||
168 | "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=", | ||
169 | "ref": "master", | ||
170 | "rev": "986ca251f995f7754a0470d3e0c44538a545081f", | ||
171 | "revCount": 9256, | ||
172 | "type": "git", | ||
173 | "url": "https://git.tt-rss.org/fox/tt-rss.git" | ||
174 | }, | ||
175 | "original": { | ||
176 | "ref": "master", | ||
177 | "rev": "986ca251f995f7754a0470d3e0c44538a545081f", | ||
178 | "type": "git", | ||
179 | "url": "https://git.tt-rss.org/fox/tt-rss.git" | ||
180 | } | ||
181 | } | ||
182 | }, | ||
183 | "root": "root", | ||
184 | "version": 7 | ||
185 | } | ||
diff --git a/flakes/private/system/flake.nix b/flakes/private/system/flake.nix new file mode 100644 index 0000000..04ebbc7 --- /dev/null +++ b/flakes/private/system/flake.nix | |||
@@ -0,0 +1,168 @@ | |||
1 | { | ||
2 | inputs.environment.url = "path:../environment"; | ||
3 | inputs.secrets-public.url = "path:../../secrets"; | ||
4 | inputs.mypackages.url = "path:../../mypackages"; | ||
5 | inputs.myuids.url = "path:../../myuids"; | ||
6 | inputs.backports.url = "path:../../backports"; | ||
7 | outputs = { self, secrets-public, mypackages, backports, environment, myuids }: { | ||
8 | nixosModule = self.nixosModules.system; | ||
9 | nixosModules.system = { pkgs, lib, config, name, nodes, secrets, options, ... }: | ||
10 | { | ||
11 | imports = [ | ||
12 | secrets.nixosModules.users-config-common | ||
13 | environment.nixosModule | ||
14 | secrets-public.nixosModule | ||
15 | ]; | ||
16 | config = { | ||
17 | myEnv = import secrets.environment-file; | ||
18 | networking.hostName = name; | ||
19 | deployment.keys."vars.yml" = { | ||
20 | keyCommand = [ pkgs.stdenv.shell "-c" "cat ${secrets.vars-file}" ]; | ||
21 | user = "root"; | ||
22 | group = "root"; | ||
23 | permissions = "0400"; | ||
24 | }; | ||
25 | |||
26 | networking.extraHosts = builtins.concatStringsSep "\n" | ||
27 | (lib.mapAttrsToList (n: v: "${lib.head v.config.hostEnv.ips.main.ip4} ${n}") nodes); | ||
28 | |||
29 | users.extraUsers.root.openssh.authorizedKeys.keys = [ config.myEnv.sshd.rootKeys.nix_repository ]; | ||
30 | secrets.deleteSecretsVars = true; | ||
31 | secrets.gpgKeys = [ | ||
32 | ./public_keys/Immae.pub | ||
33 | ]; | ||
34 | secrets.secretsVars = "/run/keys/vars.yml"; | ||
35 | |||
36 | services.openssh.enable = true; | ||
37 | |||
38 | nixpkgs.overlays = | ||
39 | builtins.attrValues mypackages.overlays ++ | ||
40 | builtins.attrValues backports.overlays ++ | ||
41 | [ | ||
42 | (self: super: { | ||
43 | postgresql = self.postgresql_pam; | ||
44 | mariadb = self.mariadb_106.overrideAttrs(old: { | ||
45 | passthru = old.passthru // { mysqlVersion = "5.7"; }; | ||
46 | }); | ||
47 | }) # don’t put them as generic overlay because of home-manager | ||
48 | ]; | ||
49 | |||
50 | services.journald.extraConfig = '' | ||
51 | #Should be "warning" but disabled for now, it prevents anything from being stored | ||
52 | MaxLevelStore=info | ||
53 | MaxRetentionSec=1year | ||
54 | ''; | ||
55 | |||
56 | users.groups.acme.gid = myuids.lib.gids.acme; | ||
57 | users.users = | ||
58 | builtins.listToAttrs (map (x: lib.attrsets.nameValuePair x.name ({ | ||
59 | isNormalUser = true; | ||
60 | home = "/home/${x.name}"; | ||
61 | createHome = true; | ||
62 | linger = true; | ||
63 | # Enable in latest unstable homeMode = "755"; | ||
64 | } // x)) (config.hostEnv.users pkgs)) | ||
65 | // { | ||
66 | acme.uid = myuids.lib.uids.acme; | ||
67 | }; | ||
68 | environment.systemPackages = [ | ||
69 | pkgs.inetutils | ||
70 | pkgs.htop | ||
71 | pkgs.iftop | ||
72 | pkgs.bind.dnsutils | ||
73 | pkgs.httpie | ||
74 | pkgs.iotop | ||
75 | pkgs.whois | ||
76 | pkgs.ngrep | ||
77 | pkgs.tcpdump | ||
78 | pkgs.wireshark-cli | ||
79 | pkgs.tcpflow | ||
80 | pkgs.mitmproxy | ||
81 | pkgs.nmap | ||
82 | pkgs.p0f | ||
83 | pkgs.socat | ||
84 | pkgs.lsof | ||
85 | pkgs.psmisc | ||
86 | pkgs.openssl | ||
87 | pkgs.wget | ||
88 | |||
89 | pkgs.pv | ||
90 | pkgs.smartmontools | ||
91 | |||
92 | pkgs.git | ||
93 | pkgs.vim | ||
94 | pkgs.rsync | ||
95 | pkgs.strace | ||
96 | pkgs.sqlite | ||
97 | |||
98 | pkgs.jq | ||
99 | pkgs.yq | ||
100 | ]; | ||
101 | |||
102 | users.mutableUsers = lib.mkDefault false; | ||
103 | |||
104 | systemd.services."vars.yml-key".enable = lib.mkForce false; | ||
105 | systemd.targets.maintenance = { | ||
106 | description = "Maintenance target with only sshd"; | ||
107 | after = [ "network-online.target" "sshd.service" ]; | ||
108 | requires = [ "network-online.target" "sshd.service" ]; | ||
109 | unitConfig.AllowIsolate = "yes"; | ||
110 | }; | ||
111 | |||
112 | security.acme.acceptTerms = true; | ||
113 | security.acme.preliminarySelfsigned = true; | ||
114 | |||
115 | security.acme.certs = { | ||
116 | "${name}" = { | ||
117 | domain = config.hostEnv.fqdn; | ||
118 | }; | ||
119 | }; | ||
120 | security.acme.defaults = { | ||
121 | email = "ismael@bouya.org"; | ||
122 | webroot = "/var/lib/acme/acme-challenges"; | ||
123 | postRun = builtins.concatStringsSep "\n" [ | ||
124 | (lib.optionalString config.services.nginx.enable "systemctl reload nginx.service") | ||
125 | ]; | ||
126 | extraLegoRenewFlags = [ "--reuse-key" ]; | ||
127 | keyType = lib.mkDefault "ec256"; # https://github.com/NixOS/nixpkgs/pull/83121 | ||
128 | #extraLegoRunFlags = [ "--reuse-key" "--preferred-chain" "ISRG Root X1"]; | ||
129 | #extraLegoRenewFlags = ["--preferred-chain" "ISRG Root X1"]; | ||
130 | }; | ||
131 | |||
132 | services.nginx = { | ||
133 | recommendedTlsSettings = true; | ||
134 | virtualHosts = { | ||
135 | "${config.hostEnv.fqdn}" = { | ||
136 | acmeRoot = config.security.acme.defaults.webroot; | ||
137 | useACMEHost = name; | ||
138 | forceSSL = true; | ||
139 | }; | ||
140 | }; | ||
141 | }; | ||
142 | |||
143 | services.fail2ban.jails.DEFAULT = { | ||
144 | settings.bantime = "12h"; | ||
145 | settings.findtime = "12h"; | ||
146 | }; | ||
147 | services.fail2ban = { | ||
148 | enable = true; | ||
149 | #findtime = "12h"; | ||
150 | #bantime = "12h"; | ||
151 | bantime-increment = { | ||
152 | enable = true; # Enable increment of bantime after each violation | ||
153 | formula = "ban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)"; | ||
154 | #multipliers = "1 2 4 8 16 32 64"; | ||
155 | maxtime = "168h"; # Do not ban for more than 1 week | ||
156 | overalljails = true; # Calculate the bantime based on all the violations | ||
157 | }; | ||
158 | maxretry = 10; | ||
159 | ignoreIP = let | ||
160 | ip4s = lib.flatten (lib.mapAttrsToList (n: v: (lib.mapAttrsToList (n: v: v.ip4 or []) v.ips)) (config.myEnv.servers)); | ||
161 | ip6s = lib.flatten (lib.mapAttrsToList (n: v: (lib.mapAttrsToList (n: v: v.ip6 or []) v.ips)) (config.myEnv.servers)); | ||
162 | in | ||
163 | ip4s ++ ip6s; | ||
164 | }; | ||
165 | }; | ||
166 | }; | ||
167 | }; | ||
168 | } | ||
diff --git a/flakes/private/system/public_keys/Immae.pub b/flakes/private/system/public_keys/Immae.pub new file mode 100644 index 0000000..dd42b04 --- /dev/null +++ b/flakes/private/system/public_keys/Immae.pub | |||
@@ -0,0 +1,322 @@ | |||
1 | -----BEGIN PGP PUBLIC KEY BLOCK----- | ||
2 | |||
3 | mQINBFvwA+gBEADlchQGPyI2M9RNRUsk8wsL9XLc8qAFWTYlVp5p7177ucxTQf6S | ||
4 | rny9yRCF69UqtE0ugwt+432sAAsDPi7BRA/JE95bIRBiewOiY1jYiivccP5dR6Jr | ||
5 | 58HJ3QOHYPekqZIQhxzCWjdD2nRhhCbbxeWFJsJyaG8idGBiLkgNKxEEmqE5LIat | ||
6 | tzMpQFwOpL2FoYZ7+e4ZTMc+x+yqpOnGcQD1qwouqx68okSCjrVBWo5S2tK5AzzU | ||
7 | X8esBLNpgkhpUEZVltiNc4bmj7GZPdy4+mvS33/HQTed8YpatCFVWzcK+/uK0SYE | ||
8 | P8Hj1mguT9idBhAf+kv7qbTycrFkTBliP3oDNUoARWDmfQdV4nlxqW03QxUY18mL | ||
9 | KPByduK3hEXAZnD+/8QfVzbNVVP+70/jdSB+ckF88Li2g4bv/9uqjaObKVJB9ocG | ||
10 | EWslm1h7tvdCLBRgIl8b2+Zl0fComRAMuwUr+LYlWLnfygAi8Uy9hl7UcRWAAj99 | ||
11 | PG4ba0+y8eD8k1J2IE8HpeIzMzRwYTLtvLyJBvrKiQHJb1PGM5cS8iry81wjUPZm | ||
12 | dO5p5rbC8z99w7UNMaiz6iqAFAaDyLLsBZ5gWD+1ps9XxCA0zf28Z/Tc/Gj4QKAf | ||
13 | kpMd7lQ+gprsFyRtzcRD4WhsOL2ogKYFHYi4LE0GYduspGdQPlK/YfrKQwARAQAB | ||
14 | tB9Jc21hZWwgQm91eWEgPGlzbWFlbEBib3V5YS5vcmc+iQJRBBMBCAA7AhsDBQsJ | ||
15 | CAcCBhUKCQgLAgQWAgMBAh4BAheAFiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvw | ||
16 | BU4CGQEACgkQyfztbKa3lFR/kA//cHVrb/RRTLQZy514vMkOBKgAk+dj+j0lrgvJ | ||
17 | yR0JK1KjodduSoccPq7qRFAU+KVa3FsXMn8yY/lWaCXYJoF0DT5iEHsEuzJRc7Cn | ||
18 | N4aq2h42DD7z8dJCXZvtvJs+vZ7G/rlLl322TjLb2OyIybBEoPOmJl0dVG0wKBFC | ||
19 | r7EJmOKl3ytUWUpEbuxs1U/pP4GKrPT2CK3QcLF8JHKIPkEO347RorseeHcHhMxs | ||
20 | Bz5JXojts1NyLJh7lErT42atgEdTGzSmkkGm8OifZVIH2rgmnRsPHnCqrXYsa7dE | ||
21 | yPsC01Ns3DPYk4C5FtbpfiNvATbnkOicEwb2U55OpYUZLsFCKo7Bl+duJVY0nPRN | ||
22 | WiLCALPcdJL+a6hbh1hSuqHt5eNGxyrDtRPowXRTS1D4nTCgAh6+wpH47xXWEwXZ | ||
23 | mEnkXqHLIjsW4CSIz2gc+Bza40+wkWz6NQDEb3ncytDZu9vKK1CYwl7RGW4RFkAO | ||
24 | j3FWZvZp8ETPLNRVy64BhZzHY3uOxbYreE+T6JfiIZux8X+Bh4cPJHizfhSMLLS5 | ||
25 | kwABzalaTD33XnjKn5wQ/DfGJ+fGbF54fMlGFjne5VTNwY1ju2ieXTgVrUyzfKPF | ||
26 | 96zcvnxo/MWwqcQ8+dXFCZjldP76puo1eVATEBeOCQs8Vj7eL9eN/eo+BfzhS3S8 | ||
27 | CfFFYWeIXQQQEQIAHRYhBNw4R0hwnSYZ/yhnIW0Mr/3bHP6QBQJb8AgDAAoJEG0M | ||
28 | r/3bHP6Q/TsAnA6vTjmrX4nY3QnevNrKefWaQvf3AJ0TALTqXhTcVYVLxfzRt/Qd | ||
29 | u5W2/rQvSXNtYWVsIEJvdXlhIChXb3JrKSA8aXNtYWVsLmJvdXlhQGZyZXRsaW5r | ||
30 | LmNvbT6JAk4EEwEIADgWIQT4KAb9ob9bmhswFOfJ/O1spreUVAUCW/AFCwIbAwUL | ||
31 | CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ/O1spreUVKlBD/sE/eDbJtL8UKc6 | ||
32 | CN7zmA038RSjxlcJrMRoBoThCFKOFtBsYLPebnIkzCDiUwQJaIMYe2RNBHKKz0p+ | ||
33 | 2Kvzf7q+xq8W1e72aK1DRhsBTL8/LA1kQkvh3GwMS8z3SOcbXLWqKQuQ7ztYReQG | ||
34 | wsT2/S8reVM96eV67K9vMHKMDF3NyYZewahX0I44YIbQJfLVG5elCkBrfHjGSeIt | ||
35 | tSAv56BhN8J8ky+9nGx5jwWmxc/4Oquyfe9Lf0NMTCjw1xess7UoHlzSMp57yF3T | ||
36 | AaqDcqD2Jdgr2meN9Yo4/Yb9dEvHFy34ppXYanX1nrHGev7YaaQWLoKLVZc3f6gR | ||
37 | +D7sEJUJm3IxO041CR7DBwQ1CQkx3sa66mcHxe+wchOoXBZdsqyl5Ds+zqh6eMyO | ||
38 | UiixDcXDxZuimEY0/+7XjlFjtzhGVNKsjV/Azh+Hx3GZnGHMVpTw73qQFHkWeDrX | ||
39 | FPUbinjtEVTxw0fS9PkDZB5ysgAWlXs2cqoNDMcbdyJn2xszbV5+vjlmcofsQZTr | ||
40 | PiX+hB6P5RQP5ogtnotvbkPDSfPfqdUk5HjGFrGX08FoP4rCromHvSL6Un2lP4I2 | ||
41 | mJbbQzBU/bQUGzfz6U6VEbUHtOL+7woGuXuzTYsRZ/O7/fKohyi/+qsmOozQpLFN | ||
42 | k5xocbF1PgpFphrKYpHaSkf6DS2/F4hdBBARAgAdFiEE3DhHSHCdJhn/KGchbQyv | ||
43 | /dsc/pAFAlvwCAQACgkQbQyv/dsc/pDXWACeKMbL/Dtifpd466TqQP8isfWedtIA | ||
44 | n2xbEmlpxG8yk0w4HQ4djwgY4RbutCpJc21hZWwgQm91eWEgPGlzbWFlbC5ib3V5 | ||
45 | YUBub3JtYWxlc3VwLm9yZz6JAk4EEwEIADgWIQT4KAb9ob9bmhswFOfJ/O1spreU | ||
46 | VAUCW/AEawIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ/O1spreUVMGJ | ||
47 | EAC5hKt5NCanRxEl13nQUu4+n05tdRl9C3sTczR8EUZ30zhpBV4chKgeJSD0r1VA | ||
48 | zBSQHMNzroGawaQn38qxFtbcSmkGRDd+0y798x1HFHp+UFiYOdQDQJVsyDuwjq4k | ||
49 | RF7zV+FBj0ffjn5JBy6R3wLmWCFxz1mPmkImdyyS8GEeifwTftC+SSotqfg1lh0K | ||
50 | C+DSQGYtPk0jLvxVPRllnjltDOSPUt9xRE785I6E9oyYrCa5Om51e0eEMzwpkl4e | ||
51 | QschAYILb6SNrVyEMRD5E3lJHD2r6dPvIPFNcLxIQuK/Kdco2jNq7dCL6ukdGI40 | ||
52 | j/oZi7XRrlFCQW321BuipJZ/7t9JWOXOrrEndQv+hOb6PeWkwF1rigjbQq+IipdJ | ||
53 | DUXGBfiIzlpJM5tLhs7BGfLxYNn09rOpkotXrdBzRO62lYyRdQepKpD33v96bQV2 | ||
54 | 0w64U44+CxuicjGDw/6no54LY4J7bM1lLGwqvHSeqgYoc+Zs9WH95TNNSmaAHGSf | ||
55 | An4LpzW5nOXbq2rsWVbZpvsVHz3VmC9qmpsYl5tT/ninkLta3tN6TrYUFHXcDWz9 | ||
56 | K+HW+/oARzEmN8eg3iMmWtOnV59YEr/x2vvOHndguUL0tUpRjwuTunH9KOGZE0Kb | ||
57 | uI3ovgLLO2kCSGk4SdXlntu/eLq9FPYqlOpjM9CtLf9JdIhdBBARAgAdFiEE3DhH | ||
58 | SHCdJhn/KGchbQyv/dsc/pAFAlvwCAQACgkQbQyv/dsc/pCHCQCfdPdGx0FmknAs | ||
59 | rPvjuUmuCj9Q8xUAn32dsgQYTlgfTdwLSxWGj4mTD2h6tClJc21hZWwgQm91eWEg | ||
60 | PGJvdXlhQHBoYXJlLm5vcm1hbGVzdXAub3JnPokCTgQTAQgAOBYhBPgoBv2hv1ua | ||
61 | GzAU58n87Wymt5RUBQJb8ASdAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ | ||
62 | EMn87Wymt5RU58QQALMGlOJzcQj/arHezum5H/PiYIpZ1yY+QMCzpSgPdwupwawW | ||
63 | VN88aQRfU6k9xwmsU+Ghjreja09AuqYi/D2+61TM/Tmqi/9HdU6NRYw0hvaZnwFc | ||
64 | vudFBII2XrxmU5k9PnSR6Sq4uLUGkXmvhJddV0q+cjtif+vDi5pl9mqbWBQY8d9S | ||
65 | 5Q6ZFZPeEeASUK7Xt/tSq9iXpb1tQsmEJ94Czl5G+gNFJcqj7nlHQ1/c9XeNsvJT | ||
66 | GZVLGM/cAZNzB6AC8Kz+iWUypFuXifC2PYGpJDJ8klqTmDQikGQtM1HMHda6rnwU | ||
67 | L7JIfbuwGbMk65CtG2YE8QqB+/GIfkzWySenmIrldn9Vp5EKB0DD529TyOwQWgzz | ||
68 | +HuVP/4QfkNRxNquWxlAPXmcNfV1SV+/Xn1KwSspb7QlAjiXXOL13J2dwYFpV+21 | ||
69 | vsSW5XqJXfWUU8d4YVOdq1kUTwLjWnWyxwtt8j68KSuTOT4JTA8oNXg87r0B4Fzr | ||
70 | 6AoxCM8ePywm5IW55gNAwViTKWBAcNrcwRTP647oNOM5+8D7NZIBpnKffNc/S2S5 | ||
71 | iI1tmaM0yXavmCm0Hb7lkFIsxM2Y2lxwHexPck2ftPXIrjhPYLcFVBdLVx2V2yXe | ||
72 | cFW2vMGZiasVobFqqp1g8htmAlTkN0cTDY7l96wDuirC6OeCbVomEgxQEd0MiF0E | ||
73 | EBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/92xz+kHsv | ||
74 | AJ4+zdfjTdO1FUWb42bWdPQfiFe9nACeMIRp1Iu3tNVJkfS9CGGqhrChpfu0LUlz | ||
75 | bWFlbCBCb3V5YSA8aXNtYWVsLmJvdXlhLjA2QG5vcm1hbGVzdXAub3JnPokCTgQT | ||
76 | AQgAOBYhBPgoBv2hv1uaGzAU58n87Wymt5RUBQJb8ASsAhsDBQsJCAcCBhUKCQgL | ||
77 | AgQWAgMBAh4BAheAAAoJEMn87Wymt5RUxa8P/i7zdQ9i5BfWITbdyCgXNoQYIcE3 | ||
78 | J6lIa15eLUcfDcL707zOrUSbhSkthLjeqZoNRCalqjeDOdgCQC1PNoISdkMGd9PO | ||
79 | VOwS3G7Pjt4FSjPVHyw9+Su57pwTcLXBhEyBAkv+tx/QrB/UBCFzPUnsl71QH51y | ||
80 | T8+bNdOiBxssdgn/9IrObn7tu8xDf+d/yGsA493x+mxalai+fhd/t0yzQcdcTrvD | ||
81 | EKRxAaU8wXe8oSwcW5cRmXIi+N4aEnLRO/so9YDGf4z2FQVSL0ktoZYMqZ1ZvIb0 | ||
82 | MNCNl2NgNXThhrAPk9Rhs+S5nRzazJ+tS+D2S728EPpRHpUE43+vewtCdu5c5NWd | ||
83 | Lz88o/jxLwcNwQa2iJoFMyqr15lHt+vM7OyD9X650IJwQw24n4tF6TijzH5GhWcN | ||
84 | SnB7RpLSkftQldpK/zK+tmFH4vVpv+bI3JKAfzRga+5Fu42kB5uHVzXF3qMwYgEO | ||
85 | sRNL5d4xV4SATce1mb8vFpsQmGOWnZAcCaQYhLKfMl7zR5ukytTjf3hRMRH0GAjh | ||
86 | 06QAoBMJZhWosYehPi1odjTngIf6hFOqA5prz8Cu/AFe/8aftp9UorJOekAj2io0 | ||
87 | CENRv21qrN8R4bNo04aTMD6WrY+mBL8MteR0ooD3ENQEAZ6UUyZwTzUJk2UUl+5M | ||
88 | ch/HgJ+rQozmRGYeiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AI | ||
89 | BAAKCRBtDK/92xz+kPsmAJ4wGQ0Hly2eTVzsU8Ht4609Q5kf2wCdHGuu863a0GHv | ||
90 | uUdEokzQEsumYPG0OElzbWFlbCBCb3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVy | ||
91 | ZSkgPGlfYm91eWFAeWFob28uZnI+iQJOBBMBCAA4FiEE+CgG/aG/W5obMBTnyfzt | ||
92 | bKa3lFQFAlvwBMkCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQyfztbKa3 | ||
93 | lFQTlxAAjbuDy3prdEBNMYfi/870MO5eeDOCMtiDJDae4fQjj2NANjeuDGNP659B | ||
94 | /k9uS7o5nrWB7E6rdG4a1J+Qzj5I775xTP/zVbrNSchcLwSoHMMXBm2IdbIanCX0 | ||
95 | JX+dRg2YX6yX+6ZmL8UaWRVICQ84ZxGtYHZ8o8hMCFOuxFklNjYFEPciO9M9m+rv | ||
96 | fUEihQgcBF7+x9KVntlxad61Aa9AzUJLULgY3snaZK687tHUq3yYwXpF9s1CuJ81 | ||
97 | SfZxH32dKqy+2cpJqwQ38BZrTUwjBxxIMR5TRC7h/O9aRIBKQZKlpLcmxWPv18i7 | ||
98 | DwWlrJVb2Sd2WUh+TwPNa7VQc3NjlGtu74SfZqmirE0FyuB86fnsQaF8zhJnRsqE | ||
99 | lagnLoW24PCvc8A9TK95tj+0JO8DIeM49Gg+Br/NBtRB8q5q/ICJOREber6Ke+/I | ||
100 | p90q5VkZafIgeuO+EkyQ6Dq+58NRqC2qEs209xnKOd6exxT+2tEzx6Hy0PKwaay3 | ||
101 | h8WzUamJOTqRv1WG4GmlCeRUQGx8BtdIAEMdww26cN8rmxh5Foh5CH+V75bcybkv | ||
102 | yH+FBDoKFYSpEPg0axHM/e13/nujgLNnSTHuMf7ILvpwoNkkIcQwSpH17B5hZdgl | ||
103 | y0xD7aIS5XU9OoP9mKs1unzUKerWQWY6CxgYOqpssyDTUG+fohuIXQQQEQIAHRYh | ||
104 | BNw4R0hwnSYZ/yhnIW0Mr/3bHP6QBQJb8AgEAAoJEG0Mr/3bHP6QFPAAn3DbFqHo | ||
105 | hjznqQvg15QjlGFaPJaaAJ4ps0+VWG9BN7UBQPG+fcCRwqLaVLQ0SXNtYWVsIEJv | ||
106 | dXlhIChEb24ndCBjb250YWN0IG1lIHRoZXJlKSA8Ym91eWFAa3RoLnNlPokCTgQT | ||
107 | AQgAOBYhBPgoBv2hv1uaGzAU58n87Wymt5RUBQJb8ATfAhsDBQsJCAcCBhUKCQgL | ||
108 | AgQWAgMBAh4BAheAAAoJEMn87Wymt5RU2vAP/12b6S0yJdZ1rgNLj+ZohY36PhCm | ||
109 | 30/amkGPQp7HCBylYIRv+y5m4IdiqynzJoap547cFMWNsCyfyU2VKbcy1Uy44FCI | ||
110 | PCUcBME95jD1JWviINDKqLhglciKlJnWUhupiolqFcr2ro+rJVc/fBMWJoBjM5fJ | ||
111 | 9eq1ge2LxuYKbu9cpSEtopk7ZBeo69khhrFACdZEqfJtW4qp0hEC0pAKLjN8LhpQ | ||
112 | EEVcq4zejksB+1e1qkuJ6be3/Q2Sj+1ijaJBElJIVJ8qyYs9XSlTlUA1USfy3Yqu | ||
113 | jOkFrIaycxYgKooFgwYfYXCniuqXWZ2geCm2IE90lanQC2w7ZDN/JGwwVuAFVi4H | ||
114 | Mrx6x/yEreqy2AUMesB1eGxqQQG9cgssMLoMAN2IDDJ6FS+e0imWTTMZ6r3ou9W8 | ||
115 | +pFzSIT8LMnBNwp+RxrW3QzBs8sXDw5mS6WroiZMRlfJdA1sUPsrW0GV4/AFuEaK | ||
116 | PhCUvIvoh6zxYR0lA/gYqtszCHGzHeNLoczOhytUZM+KQpOtO3TSING/+o59HHuM | ||
117 | niD6k3mWcyk6MkSgIXquJRGUVGVFeLGlXXf7aWEkIOrXeqjBZpBchZUIxZfkg100 | ||
118 | xxmEgNVGG4vxB/UIGeVqV2S4JscJmCyDGs130nRp7Qp5YGfkaTLKyOdutssrqatP | ||
119 | m5Zcjl2VGr4Xt4uXiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AI | ||
120 | BAAKCRBtDK/92xz+kEViAJ9zBTPNNTYIxPxt8BEvb3pUDeZkiQCffsDGKi7kdlTj | ||
121 | oZ26K7yxdjexaYS0OUlzbWFlbCBCb3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVy | ||
122 | ZSkgPGJvdXlhQG1lY2gua3RoLnNlPokCTgQTAQgAOBYhBPgoBv2hv1uaGzAU58n8 | ||
123 | 7Wymt5RUBQJb8ATwAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEMn87Wym | ||
124 | t5RUIzgP/0/7+y7UOgj4Yja6Lwa+Lm7ESRZnbVmR1ERSAa9RKKr8BbPT4KhgwN2R | ||
125 | x8c3CedFupS02sG1G57u+4qQbEeZylaMu6rusf/XyQ+esh06cRXfR7Vb2d14yFQg | ||
126 | xun9PgPR7jL0RiU2fsgvF6O+u9KwnGRmABZXILDBxzGZBXKBIkmqBM8+rBkXFVWc | ||
127 | gezZqD106KcuGewciuWM7bfyLj+2yV9GhvX8iRyptgkx9/CNEdOqQzKYEbXVTSkh | ||
128 | tUW4QUmNnIiTnD/pZ4kr3UsQV6y0GC1kf9G5EeQHbD+kVROFM0/sX6qGn99IeC+j | ||
129 | 96MflMnKuXJeXjlxNFZIYPoolBAC7CvpRfdky5q0KB2xWh+x2jQbn3fPpa6lVZdQ | ||
130 | De14guXdcEsj1QVUMRL3wFCDwHIsi3gqOpCHdy5GmunFRNqUWmoGU+uHt3Kk031w | ||
131 | DJdQY4YP+8tFWLPG3vKoPSf5EcG2Mf0hZiWiiIAX8sVw13W+oDlAQ0HKah/uxV77 | ||
132 | gM2ScBiiiOr92JIf3ftq2AjMuzrGhpKME/wG2DdcOqmq7U+tcVbambSc7SVa5nTM | ||
133 | JXm8ZPOSH0Fax1PULPd3pyLLhfF0rnPiDLcVa6UzG1MaSJiGBurIf3D3OCHRjQQ6 | ||
134 | kVpF9VtXhWeziV8wkyt66HNcuqUs6HDBNkpxPTNacKcZmW8J/FlaiF0EEBECAB0W | ||
135 | IQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/92xz+kKOiAJ4shO9b | ||
136 | nZ2Nx9XzBBg4C0nUl05LyQCbBpk7t2NIPMKaNtjsPb+RV5HbiQa0O0lzbWFlbCBC | ||
137 | b3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVyZSkgPGlzbWFlbC5ib3V5YUBlbnMu | ||
138 | ZnI+iQJOBBMBCAA4FiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvwBZYCGwMFCwkI | ||
139 | BwIGFQoJCAsCBBYCAwECHgECF4AACgkQyfztbKa3lFRK1w//cqsweiuXGPepyn0t | ||
140 | AL/S/scM6r9IwcjD3HrZqmUNSDAqU6PJ0FFialOPuSQIyEvrpY1GL+TiVtnYyAit | ||
141 | sbotxNxNQFwiBvqchg6xd1ftpjJihuo7RysNdSNAnlOxFlEz9X+EGkRqq8rCTpoS | ||
142 | GA9+4uFyFKzfv9CDg7YUVX5GVsE3bsPWymfCW1boW0TQyL7xNrDPfzKpVRHFu7hi | ||
143 | 5OghiTbHbifmIolj5Mo0hGuXxz26gFzrufCjgxK9ycW7LnHEnnK0zX8Qfueir8RV | ||
144 | EisuAXtKILgS5mmOj0ywsrva4Qtf5JW5SKymhgsKCWskfz0lq6S6ceIKaYBr4Syk | ||
145 | 0MLI82M0zDfGlLuRP6yQ3DTiTC4lWfXHdjyd0w4SwcuAQPCWz34gtUEGfMTyrd6O | ||
146 | le6pYreL1NPzd/NakYsR1H1fsXVJkgpESktoDIkzooLmBV6Pjr+PEt4DvPZYqgKl | ||
147 | AyD+aZeZ5HlTZCLbN9O38nDttWdAvsGjq82qvNI8A/d2Vvz4L1ND6NT71+wtC2QT | ||
148 | a95epSBD64l/JtK99SW/HjLjyvV9O+Nu2p8ESTOEaQhyIudnWYU+er+Vwy7YtLvY | ||
149 | y8L9/Xu9KvlBMjHBXAAV047KwkIQNrNyoTla5yQFSpv57hFYbx5CKTprpsl9Ic4v | ||
150 | uPjC/GMgkAJ3yTwIgxa47hgUAtKIXQQQEQIAHRYhBNw4R0hwnSYZ/yhnIW0Mr/3b | ||
151 | HP6QBQJb8AgEAAoJEG0Mr/3bHP6QyCcAnRuTQIMOpwxbyzjj+t0C9GdNJYmGAJ9v | ||
152 | 5c5kvNCFiJAFCbUD4OxJBNA28rQ9SXNtYWVsIEJvdXlhIChEb24ndCBjb250YWN0 | ||
153 | IG1lIHRoZXJlKSA8Ym91eWFAbWF0aC5qdXNzaWV1LmZyPokCTgQTAQgAOBYhBPgo | ||
154 | Bv2hv1uaGzAU58n87Wymt5RUBQJb8AW0AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4B | ||
155 | AheAAAoJEMn87Wymt5RUaT8P/2OvKAfgqu0zQX0JhKu/wd9AATVmLa8C48JPQMUn | ||
156 | 5Z9dQyDcFyKKfKbGCz9B5jTOrzHNX0VJfpDujOTiPIk6ci0KqAJ3Fz0gdpxIcEoW | ||
157 | B2zg0nwDtGHsGMX8togpcbVgKqblp0XSsMAFV2FN5PsAnxkqdXPDmZ5iZSgs9roi | ||
158 | 9nxHPavbcr1cSAjsiRoFxFudzo7Q0Z/KLRlTuTSAX6B+vRAeyRB4NcXThKYZlAi6 | ||
159 | cr+xXTvPFddiQZgVBT+ICZRQY0gwgHpQcj70fNx1w6tTHfThlxInojKGlreOZov9 | ||
160 | A4TVeex/QagVTsjRAQuZ9yLMkx7JxakAxBPZ/OHuv7/K1Qdx90AJ8zQZ6uOXpUNl | ||
161 | c2MDEBoTI/nbsgMeHI/Mj4ndxCBUMperZ1oCITl+AhaqEZ+LxTKyne41YJedlqjc | ||
162 | 5xnUVigz4ajmZPYmbO6eRDxisx4fMG7hI2HnNWak2xBDVOp1z2aqZY0xsG7o697d | ||
163 | I9BeR9JxbIusx0Szq6GabwI5beEI1xLlT333Fe3XDtT0NIQQvW9byuYuyfp7H6Xm | ||
164 | hFj2ut7jVI9xG932sJ8ioRJGCK1UcGYEL0ei4YZRv+mVysEJFjki2nlxspnG4C/V | ||
165 | Q20jXnLAXOpKLiStkNJ15WsnzeoL4eq0AUOYMMmYKAquXXgpVs+xUDv6XathWA2v | ||
166 | oZkAiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/9 | ||
167 | 2xz+kEBpAJ4x7hASmdnDcyFGTyuRHj6NwsDtNwCfRVfqoiRcGmvDRA8U25cPk5XT | ||
168 | ZYTRzlXOUwEQAAEBAAAAAAAAAAAAAAAA/9j/4AAQSkZJRgABAQEASABIAAD/2wBD | ||
169 | AAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcp | ||
170 | LDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy | ||
171 | MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACMAG4D | ||
172 | AREAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAABgcEBQACAwEI/8QAQhAAAQIE | ||
173 | BAIGBgYIBwEAAAAAAQIDAAQFEQYSITFBURMUImFxsQcjMoGRwUJDUmJjchUlNTaC | ||
174 | odHwFiYzc4OS4bL/xAAZAQADAQEBAAAAAAAAAAAAAAAAAQIDBAX/xAAgEQEBAAID | ||
175 | AQEBAQEBAAAAAAAAAQIRAyExQRJREyIy/9oADAMBAAIRAxEAPwB2JHaECEjiPGA4 | ||
176 | 6GA3kMMgDy8AZAGQAp8XD/Nc5+VP/wAiJT9GeBv3e/5VQ4cEu8M3sAZAGQBFT7Qh | ||
177 | JSOUBt4DZYww8O0AeQB5cc4AgzNXk5dfRh1Dj1r9Ghab/wAzpE3KQFdiSotTGIph | ||
178 | 4trQFpAFyDwtwjO8mqqYbHeByDQNCD61R0jTGyzcTrQmigyAMsYAyxgCtTNt5hqI | ||
179 | SUnrKOYgN06yjnCVtnWUc4BtyenmWGVuurSlttJUpR2AGpMGyKbEHpZm3ulapLSW | ||
180 | GTcIdWm6yOZ1sIj92q0Cf8UVp2Y6b9IOIVtZkkD366xOzkjujFc83mROKZcCjc9M | ||
181 | kE/1hbV+Yq1VhC3TkUEKvcWNxE6UY3o4xKpueVIuKGRaSoWO5GsXhdXSM59Nhucb | ||
182 | cbStJFlAEeEa7Q26yj7UPdJ71pv7Qhboedab+0Iexsu2p2ZuD0sJltZom5gkEuaQ | ||
183 | jldxMPkZuk0gW2E05cetgIvfSJihZY/RcvODKpXr0NntKA4HkCeHdEWrkLBc67fK | ||
184 | EoF+Khc/CEuMYZn5tYyMFwX0KQRbwtCtkXMbUk4eqBKgpC9eYN4n9xf+Vczh+fYv | ||
185 | maUoDUHlD/cF47EmlTz0hPtFalsrQsdoGxtx1hs7DpolaTO5JZl7sdHmZPNKbAjx | ||
186 | Fx7jFY34ys+rcl4/XGL0jbVQmODpgsG2JD/F1UVIVqmRKgcT8YbNcy8qOrqO/ZiL | ||
187 | 6uRLTKAU8WGloF/A3WpgUqjTc8gjOy0Si+2bYQr1C9pAzM469NOuKdUpxxRN766x | ||
188 | LUXYWw6mYbEw+m9zpeMc8/kdPHh/THp9LaYQAlCR4CMvXRNLASSCbqSOUGha0ekW | ||
189 | ym2QW8INBRVbCkjUJJ1BbCHCLpcA1SeBiscrEZ4ygLD1XmaFXUNzCypcutSSgnTX | ||
190 | Q2jbf2OTLH5TvkHGpuVbfTey0hWpvvHRjdxzWdrJiXSraHRi1cZQlVjDhUFGqNgX | ||
191 | zDaCxAtpjgepRcHFMQvHxaNIzUoG30YF/Cl9JM0sYVW2nNZb6EqI5an5ROXgw9LX | ||
192 | DEiieniVpBCNLGMuTLUdPHNmzTpdEu2lKUgJHARzW9uqToQy1iBDhpRtaKJ4bFO0 | ||
193 | A+oTygLxKiXxS2WMSqWNFGyzaN8L/wAuXlnY9whWn2qX0SyS2k3bJ5co14/45uXX | ||
194 | pjYYnOvpcUdcpt/KNazxaVWotys8W1HWwMBX0s0yM8sWyDbTtCK2z0ZNBys0INPO | ||
195 | thwIsRmEQ0x8XLEzLimhBfazBNvaEJfwtMeU0PYXnCVIOSzicqrm4MK+Fj6XeBmg | ||
196 | 3LuuH2s9o5+V2cRgsz7DashKlHiEi8YadMqwYr9NS4lourSs8FIMVoerxDzTiLg7 | ||
197 | xW4WkWZqkhK9mYm2m1HYKO8IIipyXmFXYeQsDkYiztW+iwxmwheJAyDYrQlV78yY | ||
198 | 34/HNy+jOkUZCqQyEzLbRCbZSNY6OOfXHyW0Y4TXK0lp1ExNt3Uq4+EXU49K3Eja | ||
199 | ahVS/LTSMmQJhwspuhRc20nUz7dvGIDZmYbWq6ZtKtDteAK1AeW0XElwoG6glRA9 | ||
200 | 8JfTkp7MhSOnGoI3MTlLpWNm44YdkhKiYlr3UHLE8zaObO7jswx1dLadROyqkplz | ||
201 | kSsi6xwiJZb231Z4i081l0zJnnAgIUOg49IL8deWusVlMNdFj/pvsZ0guO0txbg9 | ||
202 | Yi4FuNoz1dKvoPrM1WOtN9Tlm3hm7YNiUjgf75ReEx13U5/rf/MWtPdmzNOMvNhS | ||
203 | Uq7DgTa45wrZL0NWzsP4ukutYokg3bpFNpzC17gE8PCNuPxy8vq1ammGWg31lQt9 | ||
204 | wxvjLI5rd1IYdMySJdb7pG/RsqV8orsumrs0GHC286+2sbpUyoHygLcQQhpSkHKk | ||
205 | gnlFMqaOHZdkUI2Zb9k/RETV4+L2ntNijpSEJtk2AhxfwAzbTIdc9UjQn6IgjOg8 | ||
206 | ASlaW1fTQ352J1jhynseljd2X+ixltuYbGZIULcYjTqk6Y9KtMsKUEITpuBBelad | ||
207 | 6SvNT1FI02EOeM/XPqMu+c/RpUR3awo0+OqZZtkWQkCFpNnSfhuiSk3PzFYdZSp6 | ||
208 | XXkaWe5JGngSfjHXwzp53PQfOPFM1Mg7dKoD4x0uQZejxZWzM34OfKFVYIGMr/pw | ||
209 | AH6seZhxOXoClnCpSQf71gSbmHf2D/CYmrx8XdO/Y6b75YIv4AZ0WcdP3j5xTOl7 | ||
210 | UOtMYkPS3U0U5m1HdQO49x090cvLjJt18Wdup/BfSpglsDhHNvT0ML0ytTWVlCm5 | ||
211 | hKXG1ZshTmze6FO7s8spEalVqeZQ+2uUzIOqFIQRvwsdovxHqdKz6lqz5wHL9pGX | ||
212 | KbRF3LtpLPE1+ZyIzngLxU7RnlqC7CssZfDDeY3W6OkV4nWO3jx1HmZ5fqlhU05a | ||
213 | g+k8XFecbRz0aejtIS3M2+2PKFkrBExgi9bB/DHmYIWfpdygs4k+ECThw5rQP4TC | ||
214 | q8fF1TtaQm/2YS/gAqH+o9+Y+cUyoWxNklaVIzJSi/WVoJ2Psgxjyzrpvw3vtrSZ | ||
215 | 4XzZzkWNDyMcWUehhk7Lpk7Jzhf6wtTLlipIAKx/FBLNaaY49rlpMsWdVzpNtgtO | ||
216 | /wAItprP+xBNPmUTInFzDnQJUAlpdlFPffv5RGV+M8vfXs9N5gWxYlZypHO8XxY7 | ||
217 | sjDlz1jaaVDFsPsDk2PKO5wTwqKwgmpPH8Q+cWxo09HySG5m/wBseULJeCNjAE1Z | ||
218 | On0PmYIMi8ZFn0i0NmbeGz+oB+U+cTWmPi6p6gqlAjbLCXPC2xDPJpsnOTa05g1m | ||
219 | OUfSN9BDt0zk3dF+1XprF9BmGX5Zlhlp3MwpBJUVW1uT7o5+XPVjq4uP1UyFWXIu | ||
220 | dXfAQ6g+0rYjmIzuP67jWZfnqmXR6tIz8olsrvbTX+sYXCyujDOWLhFNkmLv5la8 | ||
221 | OkNoeulb0HazX2ULLSVZGxcbjwiphazyzkQKMtycfdnHgRlA6FJ5Hj746+HCTtwc | ||
222 | /JbdHNQ1ZqAyfwx5RpU4+FnUtZ5/T6xXnF7ZaGGBT6t8Wt2h5Qsl4oWK1XrOX8MH | ||
223 | +ZggsLmUN3UlXdDZG5hz9hC3IxFaY+Leln9Tp/LAv4RnpEqahUxIJPqkErcAO5US | ||
224 | Nfd5wqWE+oWFZNtmTYlEG6bE35m+scXLv9Xbv4pNPK9hhbt1JbVobpUOELDPR54b | ||
225 | DDTlTo7pBbK0g7jjGu8cmWssVpMY3qEzLpl0srFhYgA3I+EKYRV5MrHeh0KerlVQ | ||
226 | /UG1NSvtKSrQqHL3w8spjOk443K9iOj1aVqU3PBgpSQuyUfdT2QR3aCOnj6mnLyz | ||
227 | vZyUD93mf9sRVGPhbz6gZ18X+tV5xWmWxfgdeZDwtqFfKFkvFVYxWUV5JHFr5wQZ | ||
228 | eoLHo+m21AmbR/1/9hbT+aNqVTHKdTjLqWFGxFwIVVjNRS1fGdOwpTTJqUJufCbB | ||
229 | hs6A/ePDw3hKkIGqzj9QemZ15RW46orUfE/KBUTqDVxITjZevkvfSMuTj/U6bcef | ||
230 | 5vZryjrM3LocQpK0LFwRqDHJZ/XXL9jSYpjDuvRI8csJSKaWhBu20gHnYQi1GPI6 | ||
231 | tJulBAWoGyu+KhXwmqa9N0esKbKih9lw5rbf2fIx3Y3fccOWPyvqHB861UsKyr7S | ||
232 | hZaMqkj6KhoR/fdFbZya6QH8DtPPrdM04CtRVaw4xX6R+FrQ6EmilwJeU4Fm/agt | ||
233 | 2cx0gV3DT1WqImEzCUAIy2y34wbFxBLWO6iUlSsgA3JhaR+rVZW/SJVJ1gyss6WE | ||
234 | EWWtGi1DlfgPCE0k/oEecU4sklVz3wKQ7WcUyq2VYJT8x84DaS4DjRaX7aNP/YAJ | ||
235 | sK4lVRpoSk8SZN09le/Rq5+HMRjycf67nrbj5Pz1fDWllNzDCXEKStChdKkm4UOY | ||
236 | jm18rp3/AB4tnXQQtK2qag2S6G+65gKlJWQhzFs84kdkry+8C0dfF/5cvJ6JMO4w | ||
237 | qeHWnGpZ31CiFKbUnMkm1r24HbaNWFgrlPSS/NKQkvNt3PaJJ0hzSLL8HWHKoupv | ||
238 | qzPBxNgRlMOyQsbbe0bEdZnqbUQ1LrbyFN+2qx3hyDLLVJWamweyDoNkxC5jpXrW | ||
239 | V7QG4lRO1r84DR5hpbqUqSrK4ghST3/0gPTmhwOuIeQLH2VjlASUUh1JSRfXUQGn | ||
240 | UrGUzhR9ptbinZZau00o3FufcfD+cRlhMl48lxNuk12RrcqJiTdC08Qd0+Mc2WNl | ||
241 | 1XVjlMpuK/EU+mlyz02QCVdlNzbW0TMbbpWVkm6S70+/1t0hpokqvmNySd47ccZJ | ||
242 | pw223bnKTU4mdbadc6Rp0ELSRsddRDSnq6RhwkXAuFAwGJsLYvn8NzqX2CHWFH1j | ||
243 | K9ljuPA98BWbG9dqTGJ52Vnqcq7a2LqSrQoObVJ74ueMMuqVSlG+u8Q6HNSiIA8J | ||
244 | SdYA8NucAQVlUrNlxKFKbXbOEi5B52hBKXMC3qknMRuRDCKqX6W/SDPffNxgDrTl | ||
245 | zNImumkHXGuYQsix7v6QrJfTls8XFYxBO10s9YASptOWw0BPFXjE44TGqz5LlNVT | ||
246 | mXGc+MWh6ZZKilRSCU8YA7FG45jSAMaJSgDkbQBd0SsPUxbuUZkKHsnnzh70jLHa | ||
247 | qHHxiVtV6JvDDjt8YA3ygI4wBrlGf3QBsEjLtAbLDlAG6QIQcrdpR5GGTpYWvAGx | ||
248 | FlECAPLa35QBooBPSW4C8ASZXVRvyhlX/9mJAk4EEwEIADgWIQT4KAb9ob9bmhsw | ||
249 | FOfJ/O1spreUVAUCW/AHrgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ | ||
250 | /O1spreUVJ4nD/9tGS8cg2eUSwd0ExCl0dWsJRdM0mUYh17mXyVNLcvbglIkSdma | ||
251 | v/Ty3ke533izRN/SkkU8vNthjKAohZmmXlaXrruEyHq2vfXcDg4+C7FJQ+O3PT2B | ||
252 | S5ft3Ht2GmRpD2lWpeUlJ9BXF2EF5pSnHPOrlTHRUfjBCDU4uuSeKgioSyoc2iWb | ||
253 | BBaSXyeQAUR+ppM1AYKUlCDxpLbe3nVCOUc+JgJzv+47EqwMyVODwzk7oFO4GMRm | ||
254 | KTKlctb1ym75oV1tiZi2fL/KA2uAab/RMO0rfxa9HVWnJGvUEDMPlTfs7222zuLB | ||
255 | 55Fzllfx5rQlou+MLBQIV978HRZrDxZesQOOJ4/BwTPgQ42GREf+uf5/SG4Fn3Qh | ||
256 | NZsvoaePMLN/QQEjM7eqOUzRJRVcdJfRH+LinIFrAqcmbbcp1bvq8LV5lbmlFJLF | ||
257 | gimvW/shf/6Zu1YsfBhvLWInUCyoOPFa1tASF6qqi1hEOd8tQgNE/H/FSIehmTHT | ||
258 | 74kYPNRm+DzlvrW2JPVl24Nf/SWbOG/IzGBY/pDActTwYqnpXKR7eUt/YcPpmrPi | ||
259 | kyIKX32U2vTBCE3yvCm0KRzrcSbTJGfVgmlxxqIuOtbeaBtf96m+o5z/xw9ro7Ek | ||
260 | VZbsx6fPuWuLY/MqeLXl1EuiU6X1sr+skDY8lJeeiRt+Uq5mCZuEgWdM1IhdBBAR | ||
261 | AgAdFiEE3DhHSHCdJhn/KGchbQyv/dsc/pAFAlvwCAQACgkQbQyv/dsc/pABQACf | ||
262 | YaUOqzlafrzeGdwHwDleootu0UcAn2adbaKJ79QBtDVPkR77zV801JlXuQINBFvw | ||
263 | A+gBEACt8AiUTMcyNXwN6kiOLPd+85IPlLwEVyofz8p2QBAxJsqKozlXXpnK7ahC | ||
264 | RSiHt02EK39WiyZpeY1/2dGmdvyI1vc7ld3814Dveh4nf1GRSpDZ427cxayaclh+ | ||
265 | wRQ8nDWFOQUsMB3He/Z+aO6l/ZNvdVdzRUHda1XvN41nwXUL9FQUn/TLYgHbxa7P | ||
266 | Yy18ZnNzH/xGSwDgRrqPEAZ8KOpbHEbNyYuYuv6IM8Xmbp8Q6bl2RyBNnrlphksJ | ||
267 | kLvO6RLHUvvw5uX5bt+u3umoZ+yHUkP13NtQHTyZ8VTCQimkB6OisisOTnV8OjLG | ||
268 | xtLEF/TjeGFAAoEnc8bQAPvrtONQL19rPkMB0gXYXPBbGw7eWYr3QpuOujUXcz9U | ||
269 | 0JSSEov7cUepdTY8LEYFw8U5WimKY6f/uJUVx/ukNPtuAljJji0cjIGEOX2XGlBV | ||
270 | Ix/U3vywLBfUFW5hT+75z7UB3yG3Zexo0WSaQxxZ5PHxyPYBK1PvVkH0LvkbxJcr | ||
271 | rouJJQ66chjRglUbv4lf85/cG1ZLu3Ds0UbuD0gE9sAEwXtfdgDmp/HB7mxwJr1O | ||
272 | BRbTRv0Okx/lovWXkxt+hX+DXZ1u1qdZUW3zjmge8W7xag3epD21jIjFDODgUfDT | ||
273 | fgJi2FQq+szpagfPN5j5aIQKHCZf0DLbBD+ZWYQdld5JZs2V5QARAQABiQI2BBgB | ||
274 | CAAgFiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvwA+gCGwwACgkQyfztbKa3lFTa | ||
275 | yxAAxQo/9dvOO74J+9XznCYb5iO1B1ksnVegSGVuId45JKXkCkuWvDOkcU8+ma38 | ||
276 | wo3MBoPLpSMCXc/mKQ0p0ntO1tD/Wf4nBBCvseWcsR6RR5Su5jYorm0qZ89IOEPN | ||
277 | K2W2Z41X6DHyteB1dAyIyexOYoLKD7iWcQzga4/EoUPEwcr8BWWgGLBfRhXsYySz | ||
278 | F3fQPS7KaemDLGbJfTDZCSqmsZPnlksSvGxEBwUwfCjfY+QHxzWPRFPkuQJJR6YW | ||
279 | tiZ3z7jBRdRk/R5v2CJZJuGHcPPYQy6j2TYGONojm+ifaq1hz+A0aoy4P9qRW5Nl | ||
280 | mm6yiqEoJe07DrMLxn3H3ucuOo7DiNWmkkjW8DfhFSd+3pFMSvKGujOJWN27UDEp | ||
281 | ERWFX50gE15Sq4aPbMPNRejFQ1n75B4jfFQXg6WuwF3kwgHK3Y5T5vTEkbPgce9c | ||
282 | SyyFWU7EA4DJGnt7/FoaPDTKOWI9WSkmjOSABTBNSaUiMSFA3Wg/T0aS5pETpkv2 | ||
283 | S/GVVX022orAGK8zEY1vr2a24itOAKpQwFRuMjqDCBVgKAsMtlPu8jv3Zm/AMcYM | ||
284 | sRRnDWJh2TO8bqXXUG/o783fcTE3d1Ff7s4BfmBqpGHigZeehNvu+FshRDYaDrDN | ||
285 | IS0fTqbsX/JjaCXwU/o2E6G4aE79Ut/IMsCYzItTDh2UmcS5Ag0EW/G8wgEQALBi | ||
286 | 2/A7Ev/92mYi4Gm//IJEKjm2Vc3NcX5LdSyPwdSLlHSRwvzZz7M0VeflcTYqssto | ||
287 | VPVf4maDtLGbQJn43CLqjvIW/C6jzjfvoZf0gbHpNfKY1ENs5xgE0wd3ZdsqpQC6 | ||
288 | W9Pu+kN31QS9+RUKwiG2bNBIREChL/omqiLhNu3hDbZnB+uSByOk901XVrNmKa8G | ||
289 | NzXSfJSCt0gP7XU6VpMqjxppA8Y2Vo7jnylbrgVJriTt6jtjDylBBQqmHSOXMT+q | ||
290 | 9kIWDSocKhSFHBMO6LYnAwbMef2kqio5zaKzZAuwis0zjOqKHwW54xL2T7djFav9 | ||
291 | VlgcAYN105iMLUiIl39HLeZnS5pUESOXRUv/qLwiQRvBlWBPIep3+ycM2eK8r5a1 | ||
292 | 5EwCgN2nSl3KYjzTOisCmK1nQs+gQ1RMraeBGYEG0uIUvDxfoONTuYkM3dhWq2Xx | ||
293 | V/OO6yUkfyOlBGUREe1PXAOsP0LtAFJha7kbh7Eg6GGU7gRYh2dG2Ln6Vmx1ldbS | ||
294 | F3woFYPGNMsQmgEKxwyjKaq0Qhd/sKHrTpPz8PXfGP4dHegExKegS7Yof1VrKBB+ | ||
295 | L8Q8o1Oi8JPCjRp47iga5OYS1Vn3h5a07ajzSAxPsmF0lmF4tYk2MFxSs403ShiE | ||
296 | BTjN4t6rjmnoQV/b+CuhpmvzxaYr736/jkY7s0I5ABEBAAGJBGwEGAEIACAWIQT4 | ||
297 | KAb9ob9bmhswFOfJ/O1spreUVAUCW/G8wgIbAgJACRDJ/O1spreUVMF0IAQZAQgA | ||
298 | HRYhBB2wOl45wX3kd77c+/0dTvV/qVkCBQJb8bzCAAoJEP0dTvV/qVkC3tUP/2rR | ||
299 | VDaSPj9+UYJtHGDfQmYCEqxROm5wGCJbNrUQspLeL8+XrsaUDh1ldNAQtoDqGjRp | ||
300 | kwjJAS0OZfvCv7pI052NK/KVGaK5Tj2+0lxTAcGbAKoH8E2HWPlERpU9CRLvzvDE | ||
301 | 4GGxw2nw7aobNGbf9d98c9RpZuAul92BOClnpGEU4VzjKUk9IsSjZQVJnggQujxL | ||
302 | qWWiwfGwVsj2PdgPao/P48cYNl5CACBgY19AAh7WzgJVz/6je/5NLdAAV+E31qSE | ||
303 | EaZsvTBqrMOtH6iTn1GpJ73FsJ0BYVt9X99bRT0Vi0iWulBuhYfZG4PdCY6fv6uC | ||
304 | d+6pAC+Y/M9npaLbBHscSlJheTyvfuB7bzYBY+Q87VHSOMuNni7U08FuiILFoF+e | ||
305 | /ESU/v0Hde44ghiXKSaFO8djxc874KM9UlGWvw9UbmI8Z2uM0kDcrPZ/8tcjXOhp | ||
306 | PEBib54ab4tKCUCtOmsF9ZiT0hOqYdP9bXW+6OGfCignJ7ABhPpANfx2Sn/28L9l | ||
307 | PbF1nA5CkHdyo/ku1Z/lNq44yvrB8r0Ljq6s3KS69dUZqqrADeogOdi0/TrghtKU | ||
308 | DERWGmQagYSzMIvsXoAI56MxXFLriSObmpFLTWq7cr/+Ju3AcaSkrpDSYi3U6vLL | ||
309 | 8NuXPhul1S/+yPwvX6Mk1Zkip9/Wg4SQeiT2R7xj8zMP/RJ8uKbnKpOftY89Kv0Y | ||
310 | FZ4hE3FeBR3UJvkuPdQYNLQRluzh63Bzc4ClSxB9Ma7fmAEiuFtgEi4HLTMBDOHO | ||
311 | uVMuWYcgubu9VBlAGLJ++gnKxCAJXEntuB49il8MjMsy+uv/cFCjPG9z/1pmWYrE | ||
312 | XBNA+vcaOrNTS2IykAbqybcPYbBcN47bm+A4i5yqiahk0q++j4LOW/nf88xXO7xI | ||
313 | V/4vQgemh7RHgHJOkKfzOPw/Kx3UjV1jA9gEUrusHE4R3Upxh0ZeQW19hUnVlao1 | ||
314 | TxxKEUryrRzckuRfc5ziMWNyJaZsPMkeBEhyY/CizDFPrsSXIAijfu8KFnxCsnaM | ||
315 | ylFBWOu5FwsKMDXxu0QdwqpL2CM8p+q12z1VruNjpIc8bAc0/YMndjYnxzsqQEMV | ||
316 | GQIDKWqh/m6v7sqbn65ZQcVAzSAriGcQxCOIoT/TA/J+/4BSk5c8TKlqT8NBT77B | ||
317 | Z70vMr41mZus1A/ciI8AxgbYwlhuvTehdm74k/c7NSzTxeG3OumTlBR1I18C4AIi | ||
318 | y4iM3O4H4jvEssWBUzpm3VJG0NvcN/M4YVZHX5yxWQuIFcghzb7sLYddmRvR9B0M | ||
319 | Xowot//r/sgn43xv54sIvwe9MkCCU6j7ePYUlOUnn+vQ5i7rFN/UPub3V3toI2gg | ||
320 | DRuKdymWEii1jA9KlmheLTFr | ||
321 | =r9L+ | ||
322 | -----END PGP PUBLIC KEY BLOCK----- | ||