natto 0.9.7 → 0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +6 -0
- data/LICENSE +1 -1
- data/README.md +18 -19
- data/lib/natto.rb +1 -1
- data/lib/natto/binding.rb +1 -1
- data/lib/natto/natto.rb +85 -26
- data/lib/natto/option_parse.rb +2 -1
- data/lib/natto/struct.rb +13 -2
- data/lib/natto/version.rb +2 -2
- metadata +23 -17
- checksums.yaml +0 -7
data/CHANGELOG
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
## CHANGELOG
|
2
2
|
|
3
|
+
- __2015/02/10__: 0.9.8 release.
|
4
|
+
- Migrated natto code home from Bitbucket to GitHub.
|
5
|
+
- Improved documentation following said migration.
|
6
|
+
- Minor refactoring to Natto::MeCabNode#to_s.
|
7
|
+
- Updating LICENSE for year 2015.
|
8
|
+
|
3
9
|
- __2014/12/20__: 0.9.7 release.
|
4
10
|
- Issue 14: [adding automatic discovery for mecab library; no need to
|
5
11
|
explicitly set
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -9,10 +9,10 @@ and morphological analyzer for the Japanese language.
|
|
9
9
|
|
10
10
|
- No compiler is necessary, as natto is _not_ a C extension.
|
11
11
|
- It will run on CRuby (mri/yarv) and JRuby (jvm) equally well.
|
12
|
-
- It will work with MeCab installations on Windows, Unix/Linux or
|
12
|
+
- It will work with MeCab installations on Windows, Unix/Linux or OS X.
|
13
13
|
- natto provides a naturally Ruby-esque interface to MeCab.
|
14
14
|
|
15
|
-
You can learn more about [natto at
|
15
|
+
You can learn more about [natto at GitHub](https://github.com/buruzaemon/natto).
|
16
16
|
|
17
17
|
|
18
18
|
## Requirements
|
@@ -24,7 +24,7 @@ natto requires the following:
|
|
24
24
|
- Ruby _1.9 or greater_
|
25
25
|
- [ffi _1.9.0 or greater_](http://rubygems.org/gems/ffi)
|
26
26
|
|
27
|
-
## Installation on *nix and
|
27
|
+
## Installation on *nix and OS X
|
28
28
|
Install natto with the following gem command:
|
29
29
|
|
30
30
|
gem install natto
|
@@ -42,16 +42,16 @@ However, if you are using a CRuby on Windows, then you will first need to instal
|
|
42
42
|
|
43
43
|
gem install natto
|
44
44
|
|
45
|
-
6. If you are on a 64-bit Windows and you use a 64-bit Ruby or JRuby, then you might want to [build a 64-bit version of libmecab.dll](https://
|
45
|
+
6. If you are on a 64-bit Windows and you use a 64-bit Ruby or JRuby, then you might want to [build a 64-bit version of libmecab.dll](https://github.com/buruzaemon/natto/wiki/64-Bit-Windows).
|
46
46
|
|
47
47
|
|
48
48
|
## Configuration
|
49
49
|
- ***No explicit configuration should be necessary, as natto will try to locate the `mecab` library based upon its runtime environment.***
|
50
50
|
- On Windows, it will query the Windows Registry to determine where `libmecab.dll` is installed
|
51
|
-
- On
|
51
|
+
- On OS X and \*nix, it will query `mecab-config --libs`
|
52
52
|
- ***But if natto cannot find the `mecab` library, `LoadError` will be raised.***
|
53
53
|
- Please set the `MECAB_PATH` environment variable to the exact name/path to your `mecab` library.
|
54
|
-
- e.g., for
|
54
|
+
- e.g., for OS X
|
55
55
|
|
56
56
|
export MECAB_PATH=/usr/local/Cellar/mecab/0.996/lib/libmecab.dylib
|
57
57
|
|
@@ -134,7 +134,7 @@ However, if you are using a CRuby on Windows, then you will first need to instal
|
|
134
134
|
EOS
|
135
135
|
|
136
136
|
# parse more text and use a block to:
|
137
|
-
# - iterate the resulting
|
137
|
+
# - iterate over the resulting MeCabNode instances
|
138
138
|
# - output morpheme surface and part-of-speech ID
|
139
139
|
#
|
140
140
|
# * ignore any end-of-sentence nodes
|
@@ -164,13 +164,11 @@ However, if you are using a CRuby on Windows, then you will first need to instal
|
|
164
164
|
# language processing tasks, it is far more efficient
|
165
165
|
# to iterate over MeCab nodes using an Enumerator
|
166
166
|
#
|
167
|
-
# this example uses the node-format option to customize
|
168
|
-
# the resulting
|
169
|
-
# - surface
|
170
|
-
# - part-of-speech
|
171
|
-
# - reading
|
172
|
-
#
|
173
|
-
# * again, ignore any end-of-sentence nodes
|
167
|
+
# this example uses the -F node-format option to customize
|
168
|
+
# the resulting MeCabNode feature attribute to extract:
|
169
|
+
# - %m ... surface
|
170
|
+
# - %f[0] ... part-of-speech
|
171
|
+
# - %f[7] ... reading
|
174
172
|
#
|
175
173
|
nm = Natto::MeCab.new('-F%m\t%f[0]\t%f[7]')
|
176
174
|
|
@@ -193,7 +191,8 @@ However, if you are using a CRuby on Windows, then you will first need to instal
|
|
193
191
|
|
194
192
|
enum.rewind
|
195
193
|
|
196
|
-
|
194
|
+
# again, ignore any end-of-sentence nodes
|
195
|
+
enum.each { |n| puts n.feature if !n.is_eos? }
|
197
196
|
この 連体詞 コノ
|
198
197
|
星 名詞 ホシ
|
199
198
|
の 助詞 ノ
|
@@ -215,11 +214,11 @@ However, if you are using a CRuby on Windows, then you will first need to instal
|
|
215
214
|
|
216
215
|
|
217
216
|
## Learn more
|
218
|
-
- You can read more about natto on the [project Wiki](https://
|
217
|
+
- You can read more about natto on the [project Wiki](https://github.com/buruzaemon/natto/wiki).
|
219
218
|
|
220
219
|
## Contributing to natto
|
221
|
-
- Use [
|
222
|
-
- [Browse the issue tracker](https://
|
220
|
+
- Use [git](http://git-scm.com/) and [check out the latest code at GitHub](https://github.com/buruzaemon/natto) to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
221
|
+
- [Browse the issue tracker](https://github.com/buruzaemon/natto/issues) to make sure someone already hasn't requested it and/or contributed it.
|
223
222
|
- Fork the project.
|
224
223
|
- Start a feature/bugfix branch.
|
225
224
|
- Commit and push until you are happy with your contribution.
|
@@ -230,4 +229,4 @@ However, if you are using a CRuby on Windows, then you will first need to instal
|
|
230
229
|
Please see the {file:CHANGELOG} for this gem's release history.
|
231
230
|
|
232
231
|
## Copyright
|
233
|
-
Copyright ©
|
232
|
+
Copyright © 2015, Brooke M. Fujita. All rights reserved. Please see the {file:LICENSE} file for further details.
|
data/lib/natto.rb
CHANGED
data/lib/natto/binding.rb
CHANGED
data/lib/natto/natto.rb
CHANGED
@@ -13,35 +13,93 @@ module Natto
|
|
13
13
|
#
|
14
14
|
# require 'natto'
|
15
15
|
#
|
16
|
-
#
|
16
|
+
# text = '凡人にしか見えねえ風景ってのがあるんだよ。'
|
17
|
+
#
|
18
|
+
# nm = Natto::MeCab.new
|
17
19
|
# => #<Natto::MeCab:0x28d3bdc8 \
|
18
20
|
# @tagger=#<FFI::Pointer address=0x28afb980>, \
|
19
21
|
# @libpath="/usr/local/lib/libmecab.so" \
|
20
|
-
# @options={
|
22
|
+
# @options={}, \
|
21
23
|
# @dicts=[#<Natto::DictionaryInfo:0x289a1f14 \
|
22
24
|
# @filepath="/usr/local/lib/mecab/dic/ipadic/sys.dic", \
|
23
|
-
# charset=utf8
|
24
|
-
# type=0>],
|
25
|
+
# charset=utf8, \
|
26
|
+
# type=0>], \
|
25
27
|
# @version=0.996>
|
26
28
|
#
|
27
|
-
#
|
28
|
-
#
|
29
|
+
# # print entire MeCab result to stdout
|
30
|
+
# #
|
31
|
+
# puts nm.parse(text)
|
32
|
+
# 凡人 名詞,一般,*,*,*,*,凡人,ボンジン,ボンジン
|
33
|
+
# に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
|
34
|
+
# しか 助詞,係助詞,*,*,*,*,しか,シカ,シカ
|
35
|
+
# 見え 動詞,自立,*,*,一段,未然形,見える,ミエ,ミエ
|
36
|
+
# ねえ 助動詞,*,*,*,特殊・ナイ,音便基本形,ない,ネエ,ネー
|
37
|
+
# 風景 名詞,一般,*,*,*,*,風景,フウケイ,フーケイ
|
38
|
+
# って 助詞,格助詞,連語,*,*,*,って,ッテ,ッテ
|
39
|
+
# の 名詞,非自立,一般,*,*,*,の,ノ,ノ
|
40
|
+
# が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
|
41
|
+
# ある 動詞,自立,*,*,五段・ラ行,基本形,ある,アル,アル
|
42
|
+
# ん 名詞,非自立,一般,*,*,*,ん,ン,ン
|
43
|
+
# だ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ
|
44
|
+
# よ 助詞,終助詞,*,*,*,*,よ,ヨ,ヨ
|
45
|
+
# 。 記号,句点,*,*,*,*,。,。,。
|
46
|
+
# EOS
|
47
|
+
#
|
48
|
+
# # pass a block to iterate over each MeCabNode instance
|
49
|
+
# #
|
50
|
+
# nm.parse(text) do |n|
|
51
|
+
# puts "#{n.surface},#{n.feature}" if !n.is_eos?
|
29
52
|
# end
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
#
|
53
|
+
# 凡人,名詞,一般,*,*,*,*,凡人,ボンジン,ボンジン
|
54
|
+
# に,助詞,格助詞,一般,*,*,*,に,ニ,ニ
|
55
|
+
# しか,助詞,係助詞,*,*,*,*,しか,シカ,シカ
|
56
|
+
# 見え,動詞,自立,*,*,一段,未然形,見える,ミエ,ミエ
|
57
|
+
# ねえ,助動詞,*,*,*,特殊・ナイ,音便基本形,ない,ネエ,ネー
|
58
|
+
# 風景,名詞,一般,*,*,*,*,風景,フウケイ,フーケイ
|
59
|
+
# って,助詞,格助詞,連語,*,*,*,って,ッテ,ッテ
|
60
|
+
# の,名詞,非自立,一般,*,*,*,の,ノ,ノ
|
61
|
+
# が,助詞,格助詞,一般,*,*,*,が,ガ,ガ
|
62
|
+
# ある,動詞,自立,*,*,五段・ラ行,基本形,ある,アル,アル
|
63
|
+
# ん,名詞,非自立,一般,*,*,*,ん,ン,ン
|
64
|
+
# だ,助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ
|
65
|
+
# よ,助詞,終助詞,*,*,*,*,よ,ヨ,ヨ
|
66
|
+
# 。,記号,句点,*,*,*,*,。,。,。
|
67
|
+
#
|
68
|
+
#
|
69
|
+
# # customize MeCabNode feature attribute with node-formatting
|
70
|
+
# # %m ... morpheme surface
|
71
|
+
# # %F, ... comma-delimited ChaSen feature values
|
72
|
+
# # reading (index 7)
|
73
|
+
# # part-of-speech (index 0)
|
74
|
+
# # %h ... part-of-speech ID (IPADIC)
|
75
|
+
# #
|
76
|
+
# nm = Natto::MeCab.new('-F%m,%F,[7,0],%h')
|
77
|
+
#
|
78
|
+
# # Enumerator effectively iterates the MeCabNodes
|
79
|
+
# #
|
80
|
+
# enum = nm.enum_parse(text)
|
81
|
+
# => #<Enumerator: #<Enumerator::Generator:0x29cc5f8>:each>
|
82
|
+
#
|
83
|
+
# # output the feature attribute of each MeCabNode
|
84
|
+
# # only output normal nodes, ignoring any end-of-sentence
|
85
|
+
# # or unknown nodes
|
86
|
+
# #
|
87
|
+
# enum.map.with_index {|n,i| puts "#{i}: #{n.feature}" if n.is_nor?}
|
88
|
+
# 0: 凡人,ボンジン,名詞,38
|
89
|
+
# 1: に,ニ,助詞,13
|
90
|
+
# 2: しか,シカ,助詞,16
|
91
|
+
# 3: 見え,ミエ,動詞,31
|
92
|
+
# 4: ねえ,ネー,助動詞,25
|
93
|
+
# 5: 風景,フーケイ,名詞,38
|
94
|
+
# 6: って,ッテ,助詞,15
|
95
|
+
# 7: の,ノ,名詞,63
|
96
|
+
# 8: が,ガ,助詞,13
|
97
|
+
# 9: ある,アル,動詞,31
|
98
|
+
# 10: ん,ン,名詞,63
|
99
|
+
# 11: だ,ダ,助動詞,25
|
100
|
+
# 12: よ,ヨ,助詞,17
|
101
|
+
# 13: 。,。,記号,7
|
102
|
+
#
|
45
103
|
#
|
46
104
|
class MeCab
|
47
105
|
include Natto::Binding
|
@@ -89,15 +147,15 @@ module Natto
|
|
89
147
|
# <i>Use single-quotes to preserve format options that contain escape chars.</i><br/>
|
90
148
|
# e.g.<br/>
|
91
149
|
#
|
92
|
-
# nm = Natto::MeCab.new(:
|
150
|
+
# nm = Natto::MeCab.new(node_format: '%m¥t%f[7]¥n')
|
93
151
|
# => #<Natto::MeCab:0x28d2ae10
|
94
152
|
# @tagger=#<FFI::Pointer address=0x28a97980>, \
|
95
|
-
# @libpath="/usr/local/lib/libmecab.so",
|
153
|
+
# @libpath="/usr/local/lib/libmecab.so", \
|
96
154
|
# @options={:node_format=>"%m¥t%f[7]¥n"}, \
|
97
155
|
# @dicts=[#<Natto::DictionaryInfo:0x28d2a85c \
|
98
156
|
# @filepath="/usr/local/lib/mecab/dic/ipadic/sys.dic" \
|
99
|
-
# charset=utf8,
|
100
|
-
# type=0>]
|
157
|
+
# charset=utf8, \
|
158
|
+
# type=0>] \
|
101
159
|
# @version=0.996>
|
102
160
|
#
|
103
161
|
# puts nm.parse('才能とは求める人間に与えられるものではない。')
|
@@ -121,6 +179,7 @@ module Natto
|
|
121
179
|
def initialize(options={})
|
122
180
|
@options = self.class.parse_mecab_options(options)
|
123
181
|
@dicts = []
|
182
|
+
# TODO invoke function for enhancing MeCabNode after this point
|
124
183
|
|
125
184
|
opt_str = self.class.build_options_str(@options)
|
126
185
|
@tagger = self.class.mecab_new2(opt_str)
|
@@ -362,7 +421,7 @@ module Natto
|
|
362
421
|
class MeCabError < RuntimeError; end
|
363
422
|
end
|
364
423
|
|
365
|
-
# Copyright (c)
|
424
|
+
# Copyright (c) 2015, Brooke M. Fujita.
|
366
425
|
# All rights reserved.
|
367
426
|
#
|
368
427
|
# Redistribution and use in source and binary forms, with or without
|
data/lib/natto/option_parse.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
module Natto
|
2
3
|
|
3
4
|
# Module `OptionParse` encapsulates methods and behavior
|
@@ -116,7 +117,7 @@ module Natto
|
|
116
117
|
end
|
117
118
|
end
|
118
119
|
|
119
|
-
# Copyright (c)
|
120
|
+
# Copyright (c) 2015, Brooke M. Fujita.
|
120
121
|
# All rights reserved.
|
121
122
|
#
|
122
123
|
# Redistribution and use in source and binary forms, with or without
|
data/lib/natto/struct.rb
CHANGED
@@ -49,9 +49,11 @@ module Natto
|
|
49
49
|
# puts sysdic.filepath
|
50
50
|
# => /usr/local/lib/mecab/dic/ipadic/sys.dic
|
51
51
|
#
|
52
|
+
# # what charset (encoding) is the system dictionary?
|
52
53
|
# puts sysdic.charset
|
53
54
|
# => utf8
|
54
55
|
#
|
56
|
+
# # is this really the system dictionary?
|
55
57
|
# puts sysdic.is_sysdic?
|
56
58
|
# => true
|
57
59
|
class DictionaryInfo < MeCabStruct
|
@@ -60,8 +62,10 @@ module Natto
|
|
60
62
|
|
61
63
|
# System dictionary.
|
62
64
|
SYS_DIC = 0
|
65
|
+
|
63
66
|
# User dictionary.
|
64
67
|
USR_DIC = 1
|
68
|
+
|
65
69
|
# Unknown dictionary.
|
66
70
|
UNK_DIC = 2
|
67
71
|
|
@@ -263,7 +267,11 @@ module Natto
|
|
263
267
|
#
|
264
268
|
# @return [String] encoded object id, underlying FFI pointer, stat, surface, and feature
|
265
269
|
def to_s
|
266
|
-
|
270
|
+
[ super.chop,
|
271
|
+
"@pointer=#{@pointer},",
|
272
|
+
"stat=#{self[:stat]},",
|
273
|
+
"@surface=\"#{self.surface}\",",
|
274
|
+
"@feature=\"#{self.feature}\">" ].join(' ')
|
267
275
|
end
|
268
276
|
|
269
277
|
# Overrides `Object#inspect`.
|
@@ -303,10 +311,13 @@ module Natto
|
|
303
311
|
def is_eon?
|
304
312
|
self.stat == EON_NODE
|
305
313
|
end
|
314
|
+
|
315
|
+
|
306
316
|
end
|
317
|
+
|
307
318
|
end
|
308
319
|
|
309
|
-
# Copyright (c)
|
320
|
+
# Copyright (c) 2015, Brooke M. Fujita.
|
310
321
|
# All rights reserved.
|
311
322
|
#
|
312
323
|
# Redistribution and use in source and binary forms, with or without
|
data/lib/natto/version.rb
CHANGED
@@ -27,10 +27,10 @@
|
|
27
27
|
# `Natto`.
|
28
28
|
module Natto
|
29
29
|
# Version string for this Rubygem.
|
30
|
-
VERSION = "0.9.
|
30
|
+
VERSION = "0.9.8"
|
31
31
|
end
|
32
32
|
|
33
|
-
# Copyright (c)
|
33
|
+
# Copyright (c) 2015, Brooke M. Fujita.
|
34
34
|
# All rights reserved.
|
35
35
|
#
|
36
36
|
# Redistribution and use in source and binary forms, with or without
|
metadata
CHANGED
@@ -1,73 +1,79 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: natto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.8
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Brooke M. Fujita
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2015-02-10 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: ffi
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: 1.9.0
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 1.9.0
|
27
|
-
description:
|
28
|
-
|
30
|
+
description: ! 'No compiler is necessary, as natto is not a C extension. It will run
|
31
|
+
on CRuby (mri/yarv) and JRuby (jvm) equally well. It will also run on Windows, Unix/Linux,
|
32
|
+
and OS X. natto provides a naturally Ruby-esque interface to MeCab.
|
33
|
+
|
34
|
+
'
|
29
35
|
email: buruzaemon@gmail.com
|
30
36
|
executables: []
|
31
37
|
extensions: []
|
32
38
|
extra_rdoc_files: []
|
33
39
|
files:
|
34
|
-
- .yardopts
|
35
|
-
- CHANGELOG
|
36
|
-
- LICENSE
|
37
|
-
- README.md
|
38
40
|
- lib/natto.rb
|
39
41
|
- lib/natto/binding.rb
|
40
42
|
- lib/natto/natto.rb
|
41
43
|
- lib/natto/option_parse.rb
|
42
44
|
- lib/natto/struct.rb
|
43
45
|
- lib/natto/version.rb
|
44
|
-
|
46
|
+
- README.md
|
47
|
+
- LICENSE
|
48
|
+
- CHANGELOG
|
49
|
+
- .yardopts
|
50
|
+
homepage: https://github.com/buruzaemon/natto
|
45
51
|
licenses:
|
46
52
|
- BSD
|
47
|
-
metadata: {}
|
48
53
|
post_install_message:
|
49
54
|
rdoc_options: []
|
50
55
|
require_paths:
|
51
56
|
- lib
|
52
57
|
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
53
59
|
requirements:
|
54
|
-
- - '>='
|
60
|
+
- - ! '>='
|
55
61
|
- !ruby/object:Gem::Version
|
56
62
|
version: '1.9'
|
57
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
58
65
|
requirements:
|
59
|
-
- - '>='
|
66
|
+
- - ! '>='
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: '0'
|
62
69
|
requirements:
|
63
70
|
- MeCab, 0.996 or greater
|
64
71
|
- FFI, 1.9.0 or greater
|
65
72
|
rubyforge_project:
|
66
|
-
rubygems_version:
|
73
|
+
rubygems_version: 1.8.23.2
|
67
74
|
signing_key:
|
68
|
-
specification_version:
|
75
|
+
specification_version: 3
|
69
76
|
summary: A gem leveraging FFI (foreign function interface), natto combines the Ruby
|
70
77
|
programming language with MeCab, the part-of-speech and morphological analyzer for
|
71
78
|
the Japanese language.
|
72
79
|
test_files: []
|
73
|
-
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: fad99a300fd0a04d95e5ffacb7352b3855506e85
|
4
|
-
data.tar.gz: 1e9ba71a7690d14099f45d0350fba7d388b7e4e9
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 185db00a5a3fba01b27ad27ea0e89e03e698b8d5ccfbef400539c0e48648ab77abe5b90e5cad9c7777dc5d6a79297b4dea99e3ecdae4111bb25f8d78614b164c
|
7
|
-
data.tar.gz: fec5fd24301277deff762c68762b89fec9f33736a6cf918b7d4ec61a9019ff03433d6f96528d8220ca7f35a352950afd93f4b5500cf5fe9baf5b0ccbedeb5efe
|