encoding_estimator 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,49 @@
1
+ module EncodingEstimator
2
+
3
+ # Class to represent the results of a detection process.
4
+ class Detection
5
+
6
+ # Initialize a new object from the evaluation scores and the conversions tested
7
+ #
8
+ # @param [Hash] scores Hash of scores mapping the conversion identifier key to
9
+ # the score for that conversion
10
+ # @param [Array<EncodingEstimator::Conversion>] conversions objects the scores table references
11
+ def initialize( scores, conversions )
12
+ @scores = scores
13
+ @conversions = conversions
14
+ end
15
+
16
+ # Get the most probable conversion
17
+ #
18
+ # @return [EncodingEstimator::Conversion] Most probable conversion
19
+ def result
20
+ @result ||= calculate_result
21
+ end
22
+
23
+ # Get the score of the most probable conversion (-> the highest score)
24
+ #
25
+ # @return [Float] Score of the most probable conversion
26
+ def score
27
+ @scores[ result.key ]
28
+ end
29
+
30
+ # Get all conversions and their scores
31
+ #
32
+ # @return [Array<Hash>] Array containing a hash for every conversion of the form
33
+ # { conversion: EncodingEstimator::Conversion, score: Float }
34
+ def results
35
+ @results ||= @conversions.map { |c| { conversion: c, score: @scores[ c.key ] } }
36
+ end
37
+
38
+ private
39
+ # Find the most probable conversion
40
+ #
41
+ # @return [EncodingEstimator::Conversion] The most probable conversion
42
+ def calculate_result
43
+ max_conv = @conversions.first
44
+ @conversions.each { |conv| max_conv = conv if @scores[conv.key] > @scores[max_conv.key] }
45
+
46
+ max_conv
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,156 @@
1
+ require_relative 'distribution'
2
+ require_relative 'conversion'
3
+ require_relative 'detection'
4
+
5
+ require_relative 'parallel_support'
6
+
7
+ module EncodingEstimator
8
+
9
+ # Represent a function the maps a value between min and max to 0..1
10
+ class RangeScale
11
+
12
+ # Initialize a new object from the range minimum and maximum
13
+ #
14
+ # @param [Float] min The range's minimum
15
+ # @param [Float] max The range's maximum
16
+ def initialize( min, max )
17
+ @min = min
18
+ @max = max
19
+
20
+ if max == min
21
+ @min = min - 1.0
22
+ end
23
+ end
24
+
25
+ # Map the given value to a range between 0 and 1 (min is 0, max is 1)
26
+ #
27
+ # @param [Float] value Value to map between 0 and 1
28
+ #
29
+ # @return [Float] The mapped value between 0 and 1
30
+ def scale( value )
31
+ ( value - @min ) / ( @max - @min )
32
+ end
33
+ end
34
+
35
+ # Conversion Distribution Combination Representation
36
+ class CDCombination
37
+ attr_reader :conversion, :distribution
38
+
39
+ # Initialize a new object from a conversion and a distribution
40
+ #
41
+ # @param [EncodingEstimator::Conversion] conversion Conversion to represent
42
+ # @param [EncodingEstimator::Distribution] distribution Distribution to represent
43
+ def initialize( conversion, distribution )
44
+ @conversion = conversion
45
+ @distribution = distribution
46
+ end
47
+ end
48
+
49
+
50
+ # Class to store a detection score of a single combination of a distribution and a conversion
51
+ class SingleDetectionResult
52
+ attr_reader :key, :score
53
+
54
+ # Initialize a new object from a conversion identifier key and a score
55
+ #
56
+ # @param [String] key Conversion identifier key
57
+ # @param [Float] score Scoring value for a combination of distribution and a conversion
58
+ def initialize( key, score )
59
+ @key = key
60
+ @score = score
61
+ end
62
+ end
63
+
64
+ # Class to perform an encoding detection on strings
65
+ class Detector
66
+ attr_reader :conversions
67
+ attr_reader :languages
68
+ attr_reader :num_processes
69
+ attr_reader :penalty
70
+
71
+ # Create a new instance with a given configuration consisting of a list of conversions, languages and the number
72
+ # of processes.
73
+ #
74
+ # @param [Array<EncodingEstimator::Conversion>] conversions Conversions to perform/test on the inputs.
75
+ # @param [Array<EncodingEstimator::LanguageModel>] languages Languages to consider when evaluating the input. Array
76
+ # of two-letter-codes
77
+ # @param [Float] penalty Base penalty subtracted from each char's score
78
+ # @param [Integer] num_processes Number of processes the detection will run on -> true
79
+ # multi-threading through the parallel gem
80
+ def initialize( conversions, languages, penalty = 0.01, num_processes = nil )
81
+ @conversions = conversions
82
+ @languages = languages
83
+ @num_processes = num_processes
84
+ @penalty = penalty
85
+ end
86
+
87
+ # Detect the encoding using the current configuration given an input string
88
+ #
89
+ # @param [String] str Input string the detection will be performed on
90
+ #
91
+ # @return [EncodingEstimator::Detection] Result of the detection process
92
+ def detect( str )
93
+ sums = {}
94
+ results = (num_processes.nil? or !EncodingEstimator::ParallelSupport.supported?) ?
95
+ detect_st( str, combinations ) : detect_mt( str, combinations )
96
+
97
+ results.each do |result|
98
+ sums[result.key] = sums.fetch(result.key, 0.0) + result.score
99
+ end
100
+
101
+ range = EncodingEstimator::RangeScale.new( sums.values.min, sums.values.max )
102
+ EncodingEstimator::Detection.new( sums.map { |k,s| [ k, range.scale( s ) ] }.to_h, @conversions )
103
+ end
104
+
105
+ private
106
+
107
+ # Compute the scores of all combinations of languages and conversions on a single thread.
108
+ #
109
+ # @param [String] str Input string to compute the encoding on
110
+ # @param [Array<Hash>] matrix List of Conversion-Distribution-Combinations
111
+ #
112
+ # @return [Array<Hash>] Hash with the keys "key" and "score": key is the key of the conversion, score the result of
113
+ # the evaluation for the input string
114
+ def detect_st( str, matrix )
115
+ matrix.map do |combination|
116
+ detect_single str, combination
117
+ end
118
+ end
119
+
120
+ # Compute the scores of all combinations of languages and conversions on multiple processes. See num_processes.
121
+ #
122
+ # @param [String] str Input string to compute the encoding on
123
+ # @param [Array<Hash>] matrix List of Conversion-Distribution-Combinations
124
+ #
125
+ # @return [Array<Hash>] Hash with the keys "key" and "score": key is the key of the conversion, score the result of
126
+ # the evaluation for the input string
127
+ def detect_mt( str, matrix )
128
+ Parallel.map( matrix, in_processes: num_processes ) do |combination|
129
+ detect_single str, combination
130
+ end
131
+ end
132
+
133
+ # Calculate the list of all combinations of languages and conversions
134
+ #
135
+ # @return [Array<EncodingEstimator::CDCombination>] Conversion-Distribution-Combinations of the current config
136
+ def combinations
137
+ @languages.map {
138
+ |l| @conversions.map { |c| EncodingEstimator::CDCombination.new( c, l.distribution ) }
139
+ }.flatten
140
+ end
141
+
142
+ # Perform the evaluation of a Conversion-Distribution-Combination on an input string
143
+ #
144
+ # @param [String] str Input to evaluate
145
+ # @param [EncodingEstimator::CDCombination] combination Distribution/Conversion to evaluate on the input
146
+ #
147
+ # @return [EncodingEstimator::SingleDetectionResult] Result of the evaluation of the given combination on the input
148
+ def detect_single( str, combination )
149
+ EncodingEstimator::SingleDetectionResult.new(
150
+ combination.conversion.key,
151
+ combination.distribution.evaluate( combination.conversion.perform(str), @penalty )
152
+ )
153
+ end
154
+
155
+ end
156
+ end
@@ -0,0 +1,49 @@
1
+ require 'json'
2
+
3
+ module EncodingEstimator
4
+ class Distribution
5
+ @@distributions = {}
6
+
7
+ # Create a new distribution object for a given language
8
+ #
9
+ # @param [EncodingEstimator::LanguageModel] language Language to load the distribution for
10
+ def initialize( language )
11
+
12
+ @@distributions[ language.path ] ||= load_language language
13
+ @distribution = @@distributions[ language.path ]
14
+ end
15
+
16
+ # Calculate the likelihood of a string for the given language
17
+ #
18
+ # @param [String] str Data to calculate the likelihood for
19
+ # @param [Float] penalty Threshold which defines when chars are weighted negative (-> calc score - thresh)
20
+ # @return [Float] Total likelihood
21
+ def evaluate( str, penalty )
22
+ dist = @distribution
23
+ sum = 0.0
24
+ str.each_char { |c| sum += dist.fetch( c, 0.0 ) - penalty }
25
+ sum
26
+ end
27
+
28
+
29
+ private
30
+
31
+ # Try to load the language from filesystem
32
+ #
33
+ # @param [EncodingEstimator::LanguageModel] language 2-letter-symbol indicating the language to load
34
+ # @return [Hash] Hash representing the distribution for a language
35
+ def load_language( language )
36
+ return {} unless language.valid?
37
+
38
+ begin
39
+ distribution = JSON.parse(
40
+ File.read( language.path )
41
+ )
42
+ rescue Exception
43
+ distribution = {}
44
+ end
45
+
46
+ distribution
47
+ end
48
+ end
49
+ end
@@ -0,0 +1 @@
1
+ {"B":0.46039,"i":5.366575,"s":3.766111,"1":0.657822,"8":0.250334,"5":0.250692,"g":1.849316,"e":10.0,"h":2.496872,"ö":0.165675,"r":5.162604,"t":4.393301,"G":0.286028,"o":2.393973,"ß":0.087142,"D":0.402815,"b":1.151352,"n":5.902955,"z":0.645937,"u":2.461495,"m":1.718028,"[":1.76782,"K":0.312017,"c":1.876004,"S":0.603341,"a":4.033878,"]":1.76983,"d":2.730193,"l":2.690679,"C":0.19807,"R":0.265797,"k":0.82945,"F":0.283432,"f":0.938857,"|":0.765792,"p":0.847528,"P":0.26448,"v":0.546446,".":0.839771,"9":0.376819,"3":0.262156,"4":0.248812,"7":0.222421,"E":0.356108,"w":0.723496,"W":0.222539,"ä":0.288427,"-":0.513657,"Z":0.118473,"(":0.27946,"N":0.220606,")":0.280495,",":0.59676,"A":0.417277,"/":0.504994,"2":0.433684,"0":0.584997,"=":0.616526,"ü":0.299733,"*":0.234932,"6":0.21134,"J":0.14164,":":0.596181,"U":0.123534,"H":0.228828,"O":0.12508,"{":0.128236,"}":0.129676,"y":0.219403,"L":0.228657,"T":0.282472,"<":0.594355,"x":0.157154,">":0.594858,"V":0.172072,"\"":0.251848,"I":0.21665,"M":0.322177,"'":0.74723,"&":0.055926,";":0.079195,"„":0.031826,"“":0.03159,"#":0.056397,"!":0.033019,"%":0.015596,"Ü":0.011443,"j":0.103901,"Ö":0.012449,"†":0.005905,"–":0.050183,"О":0.000551,"т":0.010083,"е":0.014345,"р":0.014418,"ф":0.001204,"и":0.015407,"н":0.012934,"г":0.005865,"+":0.007577,"q":0.021712,"А":0.001491,"б":0.002342,"с":0.007101,"_":0.054571,"é":0.017373,"Ä":0.009065,"バ":0.000249,"セ":0.000122,"ン":0.001742,"ジ":0.000347,"ー":0.001919,"ž":0.001059,"Б":0.001206,"а":0.021303,"д":0.005371,"ж":0.000867,"บ":0.000338,"า":0.001046,"เ":0.000894,"ซ":0.000172,"น":0.000917,"จ":0.000192,"ิ":0.000672,"É":0.000941,"û":0.000162,"Q":0.015269,"?":0.013212,"~":0.001539,"ð":0.000843,"æ":0.000769,"代":0.000124,"ე":0.001148,"მ":0.000376,"ვ":0.000303,"ლ":0.000607,"ი":0.001906,"ს":0.000539,"ა":0.001867,"ო":0.000842,"ნ":0.000566,"ø":0.001533,"С":0.001555,"у":0.00399,"ப":0.000317,"ி":0.000382,"ர":0.000247,"த":0.000177,"ய":0.000133,"ட":0.000233,"்":0.00088,"ு":0.000285,"ம":0.000223,"ส":0.000503,"ค":0.000446,"้":0.000199,"ท":0.000377,"ด":0.000642,"แ":0.000235,"ก":0.000607,"ั":0.00044,"X":0.011902,"ł":0.001827,"Р":0.001023,"й":0.002538,"х":0.001315,"з":0.002125,"\\":0.016087,"^":0.002386,"ă":0.000663,"о":0.016162,"В":0.000957,"к":0.006358,"ń":0.000626,"−":0.001713,"Л":0.00077,"í":0.006643,"У":0.000417,"в":0.004912,"л":0.00793,"ج":0.000585,"ا":0.005825,"م":0.002596,"ع":0.000529,"ة":0.000657,"و":0.0029,"ت":0.002044,"ر":0.003236,"ل":0.003133,"د":0.002252,"ن":0.003053,"ش":0.000609,"گ":0.000488,"ه":0.001206,"א":0.001544,"ו":0.002998,"נ":0.001172,"י":0.003496,"ב":0.000923,"ר":0.002123,"ס":0.000934,"ט":0.001069,"ת":0.000784,"ל":0.001319,"ウ":0.000346,"ォ":0.000113,"タ":0.000341,"ル":0.00124,"大":0.000185,"学":0.000147,"Д":0.000903,"ד":0.000743,"ห":0.000623,"ม":0.000951,"ว":0.000662,"ู":0.000336,"่":0.000538,"ป":0.000298,"ร":0.001058,"ะ":0.000245,"ศ":0.000359,"ó":0.00602,"К":0.003972,"я":0.004402,"Т":0.000893,"ы":0.002089,"і":0.002831,"§":0.001712,"€":0.000493,"ბ":0.000398,"ū":0.000686,"м":0.004339,"п":0.002585,"ை":0.000108,"ใ":0.000128,"ช":0.000224,"Y":0.012379,"²":0.001951,"°":0.002011,"á":0.008349,"イ":0.000651,"オ":0.000278,"ミ":0.000161,"ア":0.000732,"・":0.001294,"ス":0.000957,"ś":0.000407,"サ":0.000196,"ド":0.000479,"ッ":0.000566,"ク":0.000592,"å":0.000872,"ย":0.000401,"â":0.00105,"ô":0.000878,"è":0.002714,"ç":0.00184,"«":0.000733,"»":0.000743,"ب":0.001457,"ي":0.002854,"ف":0.001193,"П":0.001571,"Π":0.000204,"ι":0.001327,"έ":0.000332,"ρ":0.001348,"α":0.002275,"β":0.000331,"ά":0.000491,"λ":0.000867,"פ":0.000775,"ピ":0.000117,"エ":0.000257,"ラ":0.000656,"ヴ":0.000216,"ァ":0.000142,"르":0.000157,"라":0.000141,"प":0.000469,"ि":0.00046,"य":0.000383,"र":0.000812,"े":0.000396,"ल":0.00039,"व":0.000353,"्":0.001221,"ह":0.000149,"ा":0.000745,"ь":0.002228,"尔":0.0002,"·":0.001796,"š":0.002346,"ė":0.000675,"ő":0.00024,"マ":0.000377,"ナ":0.00021,"シ":0.000411,"თ":0.000143,"რ":0.000998,"ā":0.00131,"ľ":0.000102,"ý":0.001102,"ɛ":0.000178,"ɪ":0.000134,"ɔ":0.00014,"ə":0.000534,"’":0.004092,"إ":0.000139,"ز":0.000654,"Э":0.000272,"Е":0.000313,"ν":0.001361,"ο":0.001906,"ύ":0.000223,"ζ":0.000101,"ε":0.001021,"τ":0.00137,"ז":0.000284,"न":0.000558,"ो":0.00024,"ू":0.000145,"ज":0.000177,"ट":0.000195,"レ":0.000352,"ノ":0.000115,"ズ":0.000132,"ベ":0.00015,"ト":0.000719,"리":0.000261,"스":0.00036,"트":0.000143,"斯":0.000313,"→":0.00099,"أ":0.000335,"ك":0.000654,"س":0.001626,"И":0.000448,"ч":0.001348,"ш":0.000921,"č":0.001807,"М":0.001355,"Н":0.000768,"ю":0.000488,"І":0.000116,"õ":0.000237,"כ":0.000265,"ק":0.001043,"ש":0.00054,"ן":0.000498,"ィ":0.0004,"ュ":0.000256,"キ":0.000177,"”":0.000627,"Μ":0.000196,"ό":0.000443,"×":0.000729,"パ":0.000135,"Κ":0.000337,"ς":0.001021,"İ":0.000205,"Ú":0.000248,"ě":0.000805,"ï":0.000265,"コ":0.000251,"ї":0.00014,"デ":0.000264,"ブ":0.000223,"…":0.001569,"∞":0.000454,"à":0.001217,"µ":0.000158,"Δ":0.000151,"±":0.000198,"З":0.000328,"Ф":0.000673,"ц":0.001446,"ъ":0.000433,"מ":0.001064,"ג":0.000818,"ロ":0.000399,"로":0.000117,"사":0.000131,"ゴ":0.000154,"э":0.001047,"ح":0.000516,"غ":0.000223,"ã":0.001128,"ί":0.000783,"პ":0.000154,"დ":0.000346,"უ":0.00036,"德":0.00017,"η":0.000675,"γ":0.000624,"κ":0.000746,"υ":0.000572,"σ":0.000758,"Α":0.000222,"ω":0.000268,"カ":0.00041,"の":0.000325,"분":0.000432,"류":0.00043,"의":0.000183,"ą":0.000404,"Г":0.001143,"ث":0.000116,"ی":0.002638,"ע":0.000505,"フ":0.000507,"이":0.000235,"ј":0.001227,"Ч":0.000239,"拉":0.00015,"ה":0.0016,"ú":0.001261,"щ":0.000131,"ェ":0.000247,"ص":0.000575,"ʿ":0.000128,"ī":0.000581,"Х":0.00056,"ё":0.000252,"Ц":0.000162,"ニ":0.000237,"ャ":0.000189,"モ":0.000123,"テ":0.000376,"ტ":0.000569,"ک":0.000578,"צ":0.000262,"チ":0.000212,"リ":0.000833,"î":0.000553,"メ":0.000147,"Я":0.000124,"‚":0.000579,"‘":0.000679,"Č":0.000495,"Ж":0.000165,"ë":0.000877,"Š":0.000723,"ż":0.000294,"ı":0.001244,"드":0.000118,"Ø":0.000144,"ム":0.000231,"ソ":0.000103,"ù":0.000344,"Ε":0.000128,"$":0.000436,"ć":0.000946,"@":0.000452,"ョ":0.000136,"グ":0.000227,"ئ":0.000196,"ق":0.000612,"ò":0.000444,"Σ":0.000175,"μ":0.000702,"კ":0.000515,"시":0.000128,"อ":0.000807,"ี":0.000704,"ล":0.000558,"西":0.000108,"Կ":0.000153,"ա":0.000601,"տ":0.000203,"ե":0.0003,"գ":0.00017,"ո":0.000325,"ր":0.000326,"ի":0.000281,"ն":0.000216,"ח":0.000299,"ם":0.000415,"科":0.000103,"ツ":0.000147,"プ":0.000182,"¹":0.00023,"ř":0.000921,"Ś":0.000231,"ˈ":0.000417,"Á":0.000353,"—":0.000607,"프":0.000103,"오":0.000103,"க":0.000367,"ச":0.000157,"ா":0.00022,"வ":0.000158,"Ш":0.000507,"đ":0.000265,"Đ":0.000147,"क":0.00038,"ं":0.000188,"ी":0.000346,"ड":0.000133,"म":0.000449,"ダ":0.000157,"ु":0.000589,"国":0.00018,"市":0.000166,"გ":0.000486,"ể":0.000287,"ạ":0.000335,"里":0.000114,"Ó":0.000128,"ş":0.000886,"โ":0.000235,"ต":0.000436,"์":0.000464,"ñ":0.000798,"年":0.001255,"ō":0.001583,"Ō":0.000144,"ň":0.000175,"ุ":0.000243,"Å":0.000261,"Β":0.000109,"π":0.000595,"δ":0.000368,"Γ":0.000129,"日":0.000189,"月":0.000159,"พ":0.000473,"天":0.000109,"ê":0.000658,"ビ":0.000126,"─":0.000275,"Ž":0.000295,"³":0.000583,"ग":0.000391,"ง":0.000369,"ì":0.000297,"ţ":0.000209,"ę":0.000477,"人":0.00014,"φ":0.000217,"۶":0.00011,"۲":0.000147,"ů":0.000192,"ή":0.00027,"θ":0.000214,"‌":0.000266,"ہ":0.000138,"ব":0.000359,"ি":0.001202,"ষ":0.000228,"য":0.000464,"়":0.000336,"শ":0.000247,"্":0.000891,"র":0.000988,"ে":0.000428,"ণ":0.000221,"ী":0.000252,"স":0.000403,"থ":0.000223,"া":0.001344,"প":0.00012,"ন":0.000394,"स":0.000737,"ώ":0.000105,"´":0.000299,"ē":0.00028,"Ç":0.000153,"ハ":0.000187,"기":0.000119,"利":0.000119,"آ":0.000181,"ğ":0.000392,"世":0.000359,"•":0.000688,"ւ":0.000104,"त":0.000218,"ى":0.00018,"ფ":0.000116,"ฟ":0.000106,"پ":0.000297,"Î":0.000116,"ź":0.000134,"✉":0.000189,"१":0.000819,"द":0.000218," ":0.000254,"ネ":0.000121,"`":0.000124,"ガ":0.00013,"ː":0.0003,"ল":0.000226,"خ":0.00026,"ط":0.000268,"어":0.000124,"′":0.000303,"아":0.000186,"ই":0.00014,"ক":0.000415,"Ł":0.000197,"χ":0.000204,"克":0.000182,"۴":0.000115,"ذ":0.00011,"Τ":0.000105,"ക":0.000155,"്":0.00054,"വ":0.000152,"ാ":0.000143,"ன":0.000151,"ல":0.000164,"特":0.000153,"ট":0.000137,"ി":0.000206,"സ":0.000124,"च":0.000317,"‎":0.000103,"ര":0.000116,"ന":0.000111,"ർ":0.000139,"ų":0.000104,"ケ":0.000104,"উ":0.000121,"দ":0.000135,"ম":0.000662,"Ş":0.00014,"ө":0.000206,"­":0.000168,"出":0.000139,"州":0.000168,"་":0.000194,"ো":0.000129,"ў":0.00021,"۳":0.000125,"۸":0.000111,"۵":0.000111,"生":0.000165,"ब":0.000218,"ኤ":0.000103,"አ":0.00011,"इ":0.000304,"ം":0.000147,"ু":0.000161,"श":0.000157,"ರ":0.000109,"್":0.000194,"ഗ":0.000154,"ర":0.000152,"్":0.000219,"জ":0.000271,"ా":0.00011,"ض":0.000108,"Θ":0.000143,"¿":0.000146,"ত":0.000359,"۱":0.000354,"۷":0.00011,"년":0.000362,"½":0.000152,"४":0.000276,"५":0.000278,"६":0.00028,"እ":0.000104,"৪":0.000185,"৫":0.00018,"৬":0.000179,"७":0.000274,"९":0.000293,"३":0.000283,"৭":0.000179,"৯":0.000187,"৩":0.000186,"۹":0.00012,"১":0.000596,"०":0.00027,"০":0.000167,"۰":0.000139,"२":0.000301,"২":0.000199,"८":0.000278,"৮":0.000178,"এ":0.000255,"ः":0.000196,"\u0000":0.000306}
@@ -0,0 +1 @@
1
+ {"'":0.855855,"S":0.524941,"o":6.203997,"u":2.299428,"r":5.615537,"c":2.668277,"e":10.0,"s":5.251018,":":0.448897,"<":0.538117,"f":1.801938,"n":6.08618,"a":7.127619,"m":2.325224,"=":1.084178,"\"":0.274803,"t":6.924665,"p":1.888739,"k":0.574142,".":1.234463,"g":1.634238,"v":0.85238,"/":0.687271,">":0.538448,"[":2.074254,"h":3.256077,"w":1.237685,"i":6.342884,"l":3.66164,"b":1.179328,"y":1.335275,"-":0.601731,"d":2.912057,"#":0.028093,"P":0.306142,"C":0.548503,"I":0.311814,"A":0.44745,"F":0.214633,"]":2.074274,"2":0.619159,"0":0.863886,"7":0.278407,"9":0.445387,"3":0.3449,"R":0.246409,"L":0.211307,"{":0.297072,"M":0.325719,"|":1.210244,"}":0.296844,"+":0.013858,"H":0.208058,"j":0.108236,"!":0.051226,"1":0.809322,"8":0.330134,"6":0.28779,"5":0.319257,"*":0.231083,"4":0.316658,"%":0.100855,"&":0.098044,";":0.100761,"U":0.154386,"B":0.275292,"T":0.443211,"N":0.219252,",":1.013605,"(":0.279861,")":0.280055,"W":0.183001,"K":0.089566,"O":0.132173,"x":0.237484,"E":0.208444,"z":0.140834,"D":0.230886,"G":0.195267,"J":0.132128,"V":0.08006,"Y":0.040595,"Z":0.034395,"q":0.101097,"ī":0.00078,"–":0.027749,"Q":0.015325,"?":0.021279,"ā":0.001848,"_":0.362016,"Н":0.000539,"а":0.01335,"с":0.005367,"е":0.008784,"л":0.005419,"н":0.009457,"и":0.009799,"П":0.000994,"к":0.004728,"т":0.005843,"é":0.013256,"ã":0.000725,"Д":0.000751,"м":0.0033,"о":0.00987,"г":0.002435,"р":0.00868,"ф":0.00088,"ј":0.000606,"斯":0.000407,"人":0.000143,"س":0.001768,"ی":0.002513,"ا":0.006129,"ت":0.001717,"پ":0.000353,"ک":0.000576,"ن":0.002858,"—":0.008245,"X":0.016336,"’":0.005741,"@":0.000425,"প":0.000202,"া":0.001892,"ক":0.000807,"ি":0.001357,"স":0.000605,"্":0.00133,"ত":0.000163,"ন":0.001087,"ে":0.000527,"র":0.001034,"জ":0.000202,"ъ":0.000651,"ж":0.000703,"в":0.003256,"у":0.002741,"й":0.001766,"Π":0.000189,"ο":0.001724,"λ":0.000936,"ι":0.001251,"τ":0.00117,"κ":0.000771,"ά":0.00047,"υ":0.000569,"α":0.002,"σ":0.00079,"ν":0.001334,"í":0.00461,"$":0.022267,"~":0.002401,"‘":0.000769,"“":0.002634,"”":0.002661,"²":0.014731,"\\":0.0174,"á":0.006348,"É":0.000972,"Э":0.000197,"Е":0.000294,"і":0.001775,"ế":0.000108,"ح":0.000632,"م":0.00288,"ل":0.003315,"و":0.003191,"ق":0.000912,"Т":0.000629,"п":0.002111,"ف":0.000812,"ج":0.000636,"ô":0.000766,"ä":0.003053,"ė":0.000462,"パ":0.000119,"キ":0.000151,"ス":0.000797,"タ":0.000265,"ン":0.001314,"æ":0.001101,"ç":0.001451,"В":0.000673,"ё":0.000132,"ы":0.001146,"ع":0.000688,"ر":0.002977,"â":0.000879,"đ":0.000194,"ü":0.003592,"ş":0.00056,"€":0.000202,"ə":0.000852,"ˈ":0.000812,"ʊ":0.000162,"ó":0.004651,"°":0.006819,"ō":0.001864,"ب":0.00144,"ল":0.000456,"উ":0.0004,"་":0.000183,"ú":0.001144,"ئ":0.00021,"라":0.000114,"פ":0.000722,"ל":0.001294,"א":0.001436,"ו":0.002662,"პ":0.000134,"ა":0.001002,"ლ":0.000406,"უ":0.000271,"प":0.000411,"ल":0.000428,"ा":0.000918,"Р":0.000555,"б":0.001459,"ラ":0.000513,"オ":0.000225,"ù":0.000211,"ப":0.000313,"ல":0.000219,"ா":0.000265,"வ":0.000164,"ு":0.000268,"ป":0.00021,"ร":0.000984,"ะ":0.000237,"เ":0.000754,"ท":0.000278,"ศ":0.000354,"า":0.000922,"ล":0.00048,"ভ":0.000122,"গ":0.000147,"ো":0.000303,"←":0.000127,"→":0.000967,"ɪ":0.000325,"ñ":0.001072,"ь":0.001322,"Α":0.000226,"ό":0.00044,"η":0.00055,"μ":0.00081,"ύ":0.00021,"ρ":0.001231,"ա":0.000319,"ի":0.000155,"ր":0.000148,"ט":0.000785,"מ":0.001032,"י":0.003007,"ר":0.001768,"ה":0.001345,"А":0.001184,"ル":0.000784,"ミ":0.000136,"்":0.001023,"ம":0.00029,"ை":0.000117,"ர":0.000299,"த":0.000208,"พ":0.000465,"อ":0.000733,"ม":0.000511,"์":0.00049,"Đ":0.000158,"拉":0.000175,"…":0.000488,"Ó":0.00015,"ס":0.000875,"ש":0.000613,"נ":0.001078,"ナ":0.000165,"マ":0.000306,"の":0.000261,"я":0.002169,"Г":0.000742,"ц":0.000914,"ম":0.000584,"à":0.001138,"ë":0.000844,"×":0.000689,"š":0.001042,"ু":0.000164,"য":0.000434,"়":0.00027,"ব":0.000284,"হ":0.000137,"‎":0.000267,"西":0.000166,"ư":0.000122,"ý":0.000507,"ệ":0.000117,"ê":0.000634,"ă":0.000622,"ì":0.000309,"安":0.000103,"子":0.00015,"德":0.000196,"中":0.000125,"ò":0.00047,"έ":0.000298,"Î":0.000112,"ø":0.000986,"ö":0.003769,"ı":0.000723,"β":0.000376,"ð":0.000598,"غ":0.000245,"ي":0.002701,"γ":0.000482,"گ":0.000319,"ه":0.00088,"û":0.000184,"이":0.000205,"र":0.000855,"ग":0.000203,"ु":0.000181,"ג":0.000549,"ರ":0.000115,"್":0.000223,"რ":0.000597,"გ":0.000147,"ვ":0.000262,"ი":0.001309,"े":0.000424,"्":0.001206,"व":0.000325,"य":0.000323,"ര":0.000136,"്":0.000603,"ى":0.000199,"इ":0.000402,"グ":0.000199,"ア":0.00057,"イ":0.000505,"க":0.000412,"ก":0.000525,"ว":0.000346,"ั":0.000405,"ย":0.000308,"ï":0.000266,"ই":0.000214,"И":0.00037,"ю":0.000354,"ს":0.000452,"ე":0.000703,"ო":0.000506,"ł":0.001341,"з":0.001562,"д":0.003712,"ш":0.00053,"М":0.001044,"Á":0.000326,"ě":0.000244,"خ":0.000229,"ტ":0.000273,"ー":0.001565,"х":0.000781,"−":0.000819,"צ":0.000244,"ב":0.00085,"ն":0.000156,"ե":0.000131,"̍":0.000119,"Ф":0.000471,"π":0.000707,"ί":0.000596,"ε":0.000972,"ς":0.001082,"્":0.000214,"î":0.000415,"리":0.000231,"ि":0.00058,"ी":0.000305,"न":0.000553,"स":0.000819,"ם":0.000347,"ಿ":0.0001,"ნ":0.000497,"ბ":0.000251,"ി":0.000233,"സ":0.000162,"フ":0.000329,"ィ":0.000306,"リ":0.000584,"ி":0.000458,"ன":0.000185,"ి":0.000113,"్":0.000231,"ฟ":0.000112,"ิ":0.000541,"น":0.000738,"ส":0.000471,"ע":0.000489,"ן":0.000492,"ē":0.000431,"è":0.002244,"ɛ":0.000231,"ز":0.000624,"ك":0.000846,"ή":0.000233,"‌":0.000256,"ট":0.000628,"ק":0.000796,"О":0.00045,"ट":0.000266,"क":0.000484,"द":0.000194,"म":0.000392,"ू":0.000195,"ह":0.000189,"ト":0.000543,"э":0.000548,"ட":0.000277,"ర":0.00013,"ห":0.000182,"ู":0.000115,"่":0.000247,"ต":0.000364,"แ":0.000232,"ค":0.000283,"特":0.000173,"±":0.000151,"§":0.000197,"δ":0.000391,"χ":0.000215,"≤":0.000104,"ū":0.000777,"د":0.001685,"ط":0.000487,"ś":0.000359,"ง":0.000303,"้":0.000145,"Б":0.000851,"^":0.002982,"プ":0.000139,"ž":0.000563,"ח":0.000313,"У":0.000256,"К":0.001248,"ч":0.000869,"თ":0.000109,"მ":0.000317,"전":0.000104,"ד":0.000724,"法":0.000117,"С":0.001205,"أ":0.000339,"ة":0.000832,"ロ":0.000317,"テ":0.00022,"å":0.000764,"로":0.000111,"ת":0.000786,"כ":0.00027,"ę":0.000315,"โ":0.00024,"็":0.00011,"・":0.000799,"ジ":0.000277,"Ц":0.000105,"φ":0.000316,"ř":0.000293,"კ":0.000213,"ą":0.000241,"ż":0.000196,"ß":0.000399,"ക":0.000184,"ब":0.00021,"ャ":0.000141,"Х":0.000411,"ా":0.00011,"آ":0.000201,"،":0.000386,"드":0.00011,"დ":0.000213,"ो":0.000313,"ं":0.000238,"ड":0.000183,"ド":0.000367,"レ":0.000266,"州":0.000577,"ด":0.000366,"č":0.000914,"þ":0.000126,"θ":0.000342,"£":0.000627,"ث":0.000129,"스":0.000338,"利":0.000144,"ń":0.000508,"Ś":0.00013,"ɔ":0.000168,"«":0.000105,"»":0.000128,"ω":0.000364,"ヴ":0.000118,"·":0.000952,"里":0.000126,"ː":0.000504,"아":0.000147,"ニ":0.000191,"ش":0.000623,"õ":0.000174,"ض":0.000103,"त":0.000268,"Æ":0.000323,"サ":0.000148,"ズ":0.000138,"Ü":0.000123,"Δ":0.00016,"ോ":0.000101,"트":0.000127,"ッ":0.000401,"シ":0.0003,"З":0.000212,"爾":0.00012,"ţ":0.000199,"จ":0.000191,"İ":0.000144,"ี":0.000395,"ğ":0.000183,"デ":0.000202,"ク":0.000429,"ซ":0.000179,"Ł":0.000101,"ச":0.000199,"บ":0.00022,"́":0.000125,"ന":0.000125,"ത":0.000101,"コ":0.000195,"†":0.000266,"ウ":0.00026,"ज":0.000197,"ص":0.000177,"Ч":0.00016,"Č":0.000175,"르":0.000114,"メ":0.000131,"尼":0.000131,"Š":0.000281,"科":0.000116,"ড":0.000209,"श":0.000145,"기":0.000135,"•":0.000574,"ז":0.000269,"学":0.000178,"`":0.000211,"尔":0.000162,"ʰ":0.000131,"ɑ":0.000136,"ŋ":0.00012,"チ":0.000146,"克":0.000241,"国":0.000196,"会":0.000119,"年":0.001003,"天":0.000114,"日":0.00016,"ய":0.000168,"ุ":0.000134,"ช":0.000145,"Γ":0.00011,"ം":0.000118,"Μ":0.000181,"代":0.000154,"ാ":0.000169,"ダ":0.000129,"ɡ":0.000171,"ո":0.00018,"च":0.000156,"യ":0.000114,"ブ":0.000171,"½":0.000174,"Ш":0.000232,"Ç":0.000119,"ć":0.000507,"Ž":0.000111,"Κ":0.000182,"′":0.000118,"ő":0.000151,"Å":0.000155,"ώ":0.000115,"Л":0.000576,"一":0.000116,"³":0.000132,"ζ":0.000103,"カ":0.000275,"前":0.000129,"バ":0.000186,"ʃ":0.000207,"エ":0.000174,"Ε":0.00011,"Τ":0.000107,"ʒ":0.000106,"ュ":0.000173,"ェ":0.000165,"ビ":0.000101,"µ":0.000104,"ネ":0.000104,"۱":0.000233,"ム":0.000188,"ʼ":0.000104,"റ":0.000132,"ハ":0.000114,"大":0.000248,"世":0.000203,"إ":0.000149,"Σ":0.000192,"阿":0.000116,"ョ":0.000105,"王":0.000146,"১":0.000362,"৯":0.000133,"৬":0.000131,"০":0.000113,"년":0.000294,"市":0.000111,"Ж":0.000116,"Ö":0.000352,"አ":0.000218," ":0.000151,"۳":0.000109,"月":0.00018,"१":0.001025,"६":0.000371,"৮":0.000132,"८":0.000365,"०":0.000358,"৩":0.000133,"३":0.000394,"৪":0.000131,"۴":0.000111,"४":0.000388,"৫":0.000131,"५":0.00037,"Χ":0.000113,"৭":0.00013,"७":0.00037,"২":0.000156,"۲":0.000125,"२":0.000435,"९":0.000359,"縣":0.000289,"እ":0.00021,"ኤ":0.000206,"郡":0.000106,"॰":0.000103,"\u0000":0.000616}
@@ -0,0 +1 @@
1
+ {"*":0.235309,"[":2.533532,"h":0.834526,"t":4.562065,"p":2.053909,":":0.795455,"/":0.775731,"w":0.254808,".":0.891812,"y":0.667548,"o":6.755959,"u":2.898907,"b":1.176147,"e":10.0,"c":3.464621,"m":2.382569,"a":9.252356,"?":0.02109,"v":0.824293,"=":0.895312,"T":0.273079,"N":0.157347,"Z":0.057083,"j":0.273766,"J":0.112901,"0":0.808351,"F":0.23152,"W":0.065411,"M":0.318137,"f":0.748469,"r":5.738806,"g":1.321318,"n":5.718823,"s":5.268737,"d":3.995304,"i":6.104301,",":0.799503,"l":4.477385,"í":0.428406,"]":2.533555,"x":0.317969,"L":0.270776,"k":0.23519,"X":0.034656,"9":0.429564,"5":0.307331,"G":0.167914,"A":0.43758,"E":0.437209,"O":0.110582,"S":0.376387,"Y":0.027963,"I":0.223472,"ó":0.521645,"é":0.223472,"_":0.070248,"&":0.041148,"C":0.54543,"\"":0.379788,"(":0.270171,"ñ":0.147958,"z":0.316963,"P":0.324294,")":0.270723,"B":0.235189,"U":0.119164,"<":0.956197,">":0.95711,"4":0.291258,"8":0.28854,"6":0.263379,"2":0.577399,"3":0.340881,"7":0.269546,"1":0.760447,"-":0.472728,"“":0.006218,"”":0.006335,"{":0.222031,"|":1.222712,"}":0.221914,"D":0.237142,"%":0.02751,"á":0.24958,"R":0.249339,"H":0.121486,"q":0.360781,"ú":0.092275,"¿":0.00517,"Q":0.015768,"É":0.003902,"Ñ":0.000513,"Ó":0.003097,";":0.078817,"Á":0.010872,"º":0.007055,"V":0.125208,"ü":0.007635,"$":0.001483,"'":1.193591,"ë":0.001283,"#":0.074916,"è":0.00475,"ت":0.003211,"و":0.004516,"ر":0.004964,"س":0.002603,"ا":0.009091,"ن":0.004758,"ţ":0.000306,"ă":0.000825,"ג":0.001448,"ע":0.000719,"ש":0.000768,"ו":0.004742,"י":0.005577,"ל":0.002058,"א":0.002324,"כ":0.000426,"†":0.000803,"ª":0.002898,"K":0.071813,"–":0.009953,"ã":0.002793,"°":0.003927,"~":0.001666,"ס":0.001436,"נ":0.001762,"ט":0.001789,"ר":0.003405,"ה":0.002613,"セ":0.000223,"ン":0.00302,"ト":0.001234,"ラ":0.001275,"リ":0.001541,"ア":0.001413,"の":0.001541,"트":0.000211,"레":0.000147,"일":0.000115,"리":0.00044,"아":0.000342,"이":0.000375,"니":0.000125,"주":0.00013,"â":0.001494,"Ц":0.000184,"е":0.020992,"н":0.017889,"т":0.015337,"р":0.021045,"а":0.03203,"л":0.01153,"и":0.023674,"я":0.006998,"П":0.002213,"с":0.010415,"ь":0.003196,"в":0.006468,"Д":0.001234,"п":0.003974,"Н":0.001077,"ю":0.000653,"Б":0.00172,"у":0.006122,"к":0.009015,"²":0.00313,"デ":0.000485,"ィ":0.000693,"エ":0.000473,"ッ":0.001013,"プ":0.00034,"ニ":0.000444,"ュ":0.000392,"ー":0.003443,"ブ":0.00041,"ズ":0.000268,"ウ":0.000613,"ク":0.000994,"州":0.000224,"ä":0.003818,"æ":0.000778,"テ":0.000679,"シ":0.000742,"・":0.002334,"フ":0.000769,"コ":0.000847,"ポ":0.000188,"レ":0.000649,"ョ":0.000253,"國":0.000146,"公":0.000107,"ル":0.002089,"ヴ":0.000302,"ェ":0.000389,"イ":0.001264,"!":0.045595,"م":0.00377,"ف":0.001916,"ع":0.00077,"ل":0.004654,"د":0.003327,"ي":0.004792,"ة":0.001038,"ק":0.001781,"מ":0.001613,"ח":0.000473,"ב":0.001379,"—":0.004753,"ç":0.00329,"パ":0.00028,"戦":0.000135,"い":0.000331,"о":0.023684,"д":0.007401,"ј":0.001983,"К":0.006649,"г":0.008817,"ת":0.001217,"バ":0.000506,"ス":0.001787,"ł":0.001199,"ą":0.000218,"ز":0.000986,"ہ":0.000202,"ک":0.000864,"ی":0.003678,"ب":0.002234,"ę":0.00036,"ş":0.000908,"ğ":0.000369,"Ш":0.000631,"ĝ":0.000115,"Г":0.001524,"З":0.000388,"«":0.006845,"»":0.006841,"¡":0.00209,"Л":0.001105,"з":0.002939,"ц":0.001888,"ō":0.003365,"à":0.003086,"ジ":0.000666,"グ":0.000428,"ロ":0.000743,"マ":0.001042,"А":0.002452,"м":0.00632,"Ж":0.000223,"@":0.000533,"ド":0.000871,"オ":0.000569,"´":0.000737,"’":0.002518,"б":0.003395,"С":0.002433,"ж":0.001194,"й":0.003095,"Х":0.000691,"э":0.001566,"星":0.000171,"·":0.002322,"(":0.000148,")":0.000148,"ペ":0.000149,"ピ":0.00021,"ī":0.000629,"­":0.000114,"ê":0.00114,"î":0.000697,"代":0.000258,"+":0.011628,"ح":0.000706,"ط":0.000417,"أ":0.000581,"ق":0.000899,"х":0.001537,"음":0.00013,"ö":0.004353,"פ":0.001161,"ן":0.000691,"צ":0.000389,"ォ":0.000158,"ツ":0.000224,"ф":0.001578,"タ":0.001012,"チ":0.000773,"М":0.001999,"‘":0.000836,"Ф":0.001091,"В":0.001329,"Æ":0.000134,"พ":0.000586,"ี":0.001001,"ท":0.000548,"โ":0.00037,"ส":0.00073,"เ":0.00125,"ล":0.00082,"ว":0.001024,"→":0.000735,"ā":0.001653,"ش":0.000887,"ه":0.001822,"시":0.000197,"Т":0.001243,"ศ":0.000485,"…":0.000522,"ビ":0.000267,"ネ":0.00023,"キ":0.000393,"і":0.004386,"ч":0.001756,"پ":0.000442,"画":0.000103,"어":0.000177,"ப":0.000464,"ய":0.000179,"ன":0.00019,"ி":0.000521,"ர":0.000341,"்":0.001184,"த":0.000227,"ட":0.000316,"ம":0.000291,"ш":0.001123,"Χ":0.000119,"ρ":0.001696,"ό":0.000514,"ν":0.001514,"ο":0.002325,"ς":0.001178,"α":0.002914,"π":0.000737,"σ":0.000908,"φ":0.000278,"ή":0.000287,"ι":0.00163,"η":0.001,"ז":0.000427,"ם":0.000734,"ム":0.000422,"ò":0.000913,"ص":0.000912,"ج":0.00085,"ы":0.003261,"분":0.000866,"류":0.000867,"者":0.000149,"ể":0.000506,"ạ":0.000564,"Đ":0.000176,"ô":0.001281,"Э":0.000397,"德":0.000238,"空":0.000138,"å":0.00082,"ř":0.000362,"Š":0.000622,"メ":0.000349,"カ":0.000851,"ナ":0.000427,"ป":0.000416,"ิ":0.001025,"อ":0.001098,"ร":0.001571,"์":0.000731,"û":0.000251,"美":0.000119,"地":0.000201,"ý":0.000692,"ů":0.000133,"Ν":0.000125,"γ":0.000771,"κ":0.000929,"τ":0.001773,"έ":0.000381,"λ":0.001011,"ζ":0.000135,"ギ":0.000146,"ケ":0.000205,"ソ":0.000202,"中":0.000172,"Κ":0.000514,"υ":0.000713,"ί":0.001067,"β":0.000333,"μ":0.000845,"ύ":0.000215,"구":0.000125,"오":0.000161,"나":0.000146,"카":0.000128,"라":0.000252,"О":0.000793,"モ":0.000258,"ŭ":0.000107,"ð":0.000656,"크":0.00012,"로":0.000185,"드":0.000194,"인":0.000115,"Ú":0.001132,"`":0.000259,"ك":0.001062,"ァ":0.00023,"đ":0.000334,"ư":0.000133,"ế":0.000129,"‎":0.000403,"会":0.000186,"科":0.000218,"学":0.000241,"Р":0.0014,"ž":0.000874,"政":0.000102,"\\":0.012041,"ম":0.000791,"ু":0.000225,"স":0.000579,"্":0.001184,"র":0.001259,"ি":0.001492,"म":0.000588,"स":0.000981,"ू":0.000182,"र":0.001078,"ी":0.000465,"മ":0.000122,"സ":0.00017,"്":0.000759,"ര":0.000162,"ി":0.000299,"ु":0.000693,"ு":0.000375,"ச":0.000205,"ئ":0.000272,"ゲ":0.000125,"ד":0.001151,"ボ":0.000223,"斯":0.000471,"ガ":0.000273,"õ":0.000426,"У":0.000602,"উ":0.000163,"ত":0.000455,"ক":0.00055,"া":0.001753,"য":0.000584,"গ":0.000117,"ড":0.000142,"়":0.00041,"إ":0.000236,"Е":0.000515,"‌":0.000425,"บ":0.000499,"ซ":0.000276,"ต":0.00067,"็":0.000125,"ม":0.001482,"~":0.000161,"ハ":0.00027,"¹":0.000165,"ฟ":0.000165,"ง":0.000482,"ベ":0.000239,"Α":0.0003,"ώ":0.000128,"ε":0.00119,"ض":0.000146,"ı":0.001467,"天":0.000181,"文":0.000132,"和":0.000113,"Í":0.0011,"利":0.000229,"ث":0.000157,"ダ":0.000324,"Å":0.000172,"ï":0.000521,"ก":0.000892,"ไ":0.000131,"ন":0.000569,"خ":0.000388,"š":0.001732,"Π":0.000263,"ω":0.000326,"ά":0.000575,"θ":0.000259,"δ":0.000447,"年":0.00163,"世":0.000514,"選":0.000101,"手":0.000145,"Ч":0.000349,"国":0.000387,"大":0.000403,"山":0.000172,"川":0.000101,"南":0.000104,"子":0.0002,"三":0.00011,"神":0.000137,"化":0.000109,"王":0.000171,"加":0.000102,"史":0.00011,"法":0.000145,"一":0.000195,"人":0.000278,"物":0.00016,"道":0.00015,"本":0.000144,"安":0.000111,"И":0.000753,"ワ":0.00018,"스":0.000587,"ট":0.000233,"ো":0.000218,"ব":0.000436,"ে":0.000586,"ć":0.00086,"ß":0.000573,"ń":0.000423,"ø":0.001176,"ų":0.000166,"щ":0.000164,"Ž":0.00018,"Τ":0.000148,"도":0.000133,"르":0.000241,"지":0.000117,"프":0.000152,"尔":0.000269,"日":0.000253,"ъ":0.000557,"ホ":0.000115,"დ":0.000481,"ე":0.001795,"ნ":0.00083,"ი":0.002912,"ს":0.000856,"ო":0.001309,"პ":0.000242,"რ":0.00151,"ด":0.000974,"น":0.001314,"ტ":0.000861,"ფ":0.000188,"ა":0.002733,"巴":0.000119,"な":0.000189,"り":0.000164,"ค":0.000651,"แ":0.000366,"่":0.00084,"ะ":0.000343,"대":0.000115,"우":0.000108,"特":0.000213,"ě":0.000427,"ū":0.00149,"آ":0.000271,"理":0.000136,"غ":0.000371,"ห":0.000987,"ู":0.000548,"ั":0.000646,"ช":0.000317,"า":0.001473,"ย":0.00058,"의":0.000464,"학":0.000104,"자":0.000162,"ザ":0.000152,"ミ":0.000326,"č":0.001332,"ї":0.000261,"Ö":0.000352,"Ü":0.000185,"க":0.000498,"ந":0.000107,"კ":0.000792,"გ":0.000713,"მ":0.000608,"ბ":0.000642,"ใ":0.000198,"ś":0.000366,"İ":0.00023,"西":0.000175,"Β":0.000176,"À":0.000176,"€":0.000341,"Ю":0.000127,"전":0.000114,"Σ":0.00023,"亚":0.000115,"尼":0.000151,"主":0.000101,"ర":0.0002,"ా":0.00015,"ి":0.000121,"ვ":0.000427,"비":0.000114,"수":0.000118,"њ":0.000147,"ノ":0.000234,"サ":0.000445,"球":0.000162,"Ş":0.00016,"Δ":0.00013,"ゴ":0.000337,"키":0.000104,"화":0.000103,"국":0.000165,"۳":0.000151,"¨":0.000101,"گ":0.000663,"!":0.000305,"亞":0.000101,"拉":0.000223,"ま":0.000121,"と":0.000229,"き":0.000122,"마":0.000149,"ุ":0.000322,"行":0.000132,"ヒ":0.000123,"기":0.00018,"•":0.001222,"ì":0.00048,"克":0.000264,"ё":0.000281,"³":0.000224,"ხ":0.000132,"ლ":0.000882,"უ":0.000524,"ც":0.000137,"ė":0.000818,"−":0.000273,"ʼ":0.000122,"́":0.000172,"×":0.000675,"ヤ":0.000111,"바":0.000107,"과":0.000116,"Λ":0.00012,"ọ":0.000117,"ệ":0.000112,"Μ":0.000258,"제":0.000108,"伊":0.000104,"ù":0.000548,"۱":0.00045,"۷":0.000143,"۰":0.000225,"ả":0.000124,"ố":0.000135,"จ":0.000259,"ธ":0.000108,"Я":0.000187,"Î":0.00012,"島":0.000147,"阿":0.000155,"미":0.000109,"Γ":0.00016,"Ι":0.00011,"్":0.000292,"ం":0.000128,"海":0.000145,"세":0.000125,"사":0.000202,"Ε":0.000173,"χ":0.000225,"۵":0.000144,"ள":0.000108,"에":0.000103,"ա":0.000849,"ն":0.000315,"տ":0.000265,"ո":0.000429,"ր":0.000455,"ই":0.000195,"ट":0.000265,"े":0.000526,"क":0.0005,"्":0.001633,"ा":0.001051,"इ":0.000357,"ं":0.000272,"ക":0.000223,"ന":0.00015,"റ":0.000131,"न":0.000801,"^":0.002195,"থ":0.000249,"Ä":0.00013,"І":0.000178,"้":0.000245,"ə":0.00047,"Č":0.00025,"գ":0.00021,"ի":0.000382,"ө":0.000234,"ो":0.000323,"च":0.000369,"এ":0.000303,"小":0.000133,"ब":0.000277,"ग":0.000499,"生":0.000269,"ő":0.000231,"ゾ":0.0002,"ャ":0.000367,"ქ":0.000143,"თ":0.000222,"ē":0.000346,"格":0.000111,"里":0.000169,"ى":0.000225,"হ":0.000102,"家":0.000177,"県":0.00011,"ấ":0.000116,"さ":0.00014,"Ο":0.000101,"ത":0.000115,"ు":0.000133,"দ":0.000174,"ল":0.000334,"್":0.000247,"ರ":0.000136,"卡":0.00011,"た":0.000223,"し":0.000221,"ذ":0.000139,"Կ":0.000189,"ե":0.000402,"വ":0.000217,"ാ":0.000195,"প":0.000181,"শ":0.00028,"ज":0.000237,"व":0.000447,"य":0.00051,"ზ":0.000118,"가":0.000145,"ഗ":0.000222,"യ":0.000125,"ം":0.000208,"ോ":0.000102,"Ç":0.000159,"月":0.000216,"ち":0.000124,"द":0.000278,"प":0.000598,"ड":0.000178,"ि":0.000649,"ह":0.000199,"ल":0.000531,"१":0.001006,"९":0.000378,"७":0.000336,"६":0.000336,"か":0.000167,"५":0.000335,"ർ":0.000193,"є":0.000122,"چ":0.000122,"۶":0.000139,"۴":0.000147,"Ś":0.00014,"ż":0.000278,"പ":0.000105,"爾":0.000131,"ษ":0.000113,"ん":0.000162,"う":0.000116,"だ":0.000142,"Ø":0.000119,"फ":0.000118,"२":0.000375,"०":0.000361,"८":0.000341,"त":0.00029,"Ō":0.000194,"ў":0.000282,"타":0.000102,"ậ":0.000127,"œ":0.000144,"۲":0.000187,"۹":0.000163,"வ":0.00021,"ா":0.000305,"ை":0.000137,"ல":0.000215,"ച":0.000108,"る":0.000292,"市":0.000205,"ध":0.000121,"،":0.000113,"±":0.000126,"ւ":0.000144,"っ":0.000108,"語":0.000111,"れ":0.000135,"ల":0.000113,"জ":0.000339,"く":0.000121,"′":0.000167,"श":0.000185,"ণ":0.000244,"་":0.000237,"½":0.000114,"ら":0.000122," ":0.000257,"│":0.000168,"─":0.000124,"ষ":0.00025," ":0.000352,"お":0.000133,"を":0.000148,"、":0.000179,"あ":0.000118,"て":0.000142,"で":0.000113,"に":0.00024,"は":0.000178,"が":0.000147,"出":0.000219,"前":0.00012,"২":0.000219,"০":0.000195,"৭":0.000201,"þ":0.000101,"ী":0.000292,"১":0.000675,"৬":0.000199,"년":0.00044,"৯":0.000205,"ः":0.000219,"Þ":0.000102,"వ":0.000112,"గ":0.0001,"አ":0.000128,"۸":0.000145,"̍":0.000103,"ኤ":0.000119,"እ":0.000119,"४":0.000338,"৩":0.000202,"৪":0.000196,"৫":0.0002,"३":0.000342,"৮":0.000201,"\u0000":0.000351}
@@ -0,0 +1 @@
1
+ {"<":0.816697,"r":5.244733,"e":10.0,"d":2.825412,"i":5.791515,"c":2.328008,"t":5.283786,"/":0.667082,">":0.817996,"v":0.853221,"s":4.944958,"o":4.397125,"n":5.286928,"2":0.581704,"6":0.294099,"7":0.277834,"1":0.847526,"0":0.793302,"4":0.304203,"m":2.267718,"a":5.789245,"p":1.93604,"5":0.317865,"-":0.668479,"T":0.243837,":":0.789311,"3":0.325922,"Z":0.047593,"b":0.854878,"u":3.53279,".":0.715763,"8":0.33044,"x":0.402667,"l":3.842088,"=":0.995537,"\"":0.294549,"#":0.065041,"R":0.209067,"E":0.219593,"D":0.231748,"I":0.247049,"C":0.489778,"[":2.410703,"S":0.339149,"é":1.491607,"]":2.410859,"g":1.18759,"è":0.225645,"V":0.124744,"N":0.144065,"f":0.823695,"q":0.452182,"y":0.39107,"9":0.524938,"h":0.922963,"(":0.291652,")":0.292953,"A":0.348226,"J":0.113542,"U":0.10149,"{":0.491503,"}":0.49178,"w":0.2045,"+":0.011268,"k":0.224319,"|":1.30043,"'":1.597733,",":0.706502,"à":0.211497,"O":0.09912,"P":0.300818,"j":0.190265,"X":0.03681,"F":0.243377,"ç":0.052178,"B":0.228204,"L":0.373639,"H":0.119399,"G":0.155717,"M":0.274336,"î":0.01987,"*":0.305112,"ê":0.056285,"É":0.061871,"â":0.0274,"ù":0.010515,"…":0.002088,"Q":0.027269,"z":0.115897,"Y":0.022101,"K":0.070541,"?":0.023395,"ä":0.003836,";":0.067117,"’":0.073512,"ô":0.029243,"œ":0.009668,"З":0.000326,"а":0.02668,"н":0.01596,"з":0.002797,"ы":0.002698,"б":0.002752,"р":0.01849,"е":0.018715,"д":0.006163,"ч":0.0015,"с":0.008451,"ь":0.002865,"ц":0.001739,"и":0.019235,"п":0.003283,"о":0.020731,"я":0.005809,"í":0.007653,"ז":0.000347,"נ":0.00143,"י":0.004451,"ב":0.001092,"ר":0.002759,"פ":0.000949,"ו":0.003827,"ש":0.000653,"ם":0.000574,"ザ":0.000117,"ン":0.002376,"ジ":0.000549,"バ":0.000359,"ル":0.001719,"і":0.004087,"Ä":0.000163,"²":0.004094,"À":0.006649,"&":0.052215,"_":0.065239,"~":0.002013,"—":0.004114,"«":0.029142,"»":0.028938," ":0.004973,"!":0.036308,"Î":0.00243,"ï":0.010738,"Â":0.001438,"û":0.012441,"│":0.011526,"└":0.000732,"─":0.00257,"‘":0.000289,"–":0.006928,"├":0.001266,"Х":0.000537,"†":0.001788,"м":0.005372,"В":0.001168,"ш":0.001019,"á":0.008234,"ë":0.004579,"П":0.001915,"у":0.005243,"л":0.009999,"ї":0.000284,"С":0.002274,"є":0.000209,"W":0.062246,"ā":0.001405,"К":0.005771,"т":0.012917,"г":0.007344,"Г":0.001231,"й":0.002475,"М":0.001812,"→":0.00151,"Э":0.000299,"в":0.005786,"к":0.007528,"ј":0.001678,"Е":0.000506,"Я":0.000159,"ห":0.000843,"ม":0.001212,"ว":0.000791,"ด":0.000773,"ู":0.000457,"่":0.000711,"ย":0.000438,"า":0.001153,"น":0.000989,"ฟ":0.000131,"เ":0.00097,"อ":0.000866,"ค":0.000497,"ú":0.001614,"å":0.0009,"π":0.000636,"α":0.00239,"τ":0.001507,"ο":0.00208,"Σ":0.000191,"υ":0.000603,"μ":0.000666,"β":0.000299,"ύ":0.000216,"λ":0.000943,"ι":0.001334,"ω":0.000292,"ν":0.001307,"Ε":0.000127,"ή":0.000246,"θ":0.000245,"κ":0.000735,"ώ":0.000115,"ż":0.00027,"ó":0.006387,"°":0.006568,"ク":0.000734,"ロ":0.00062,"ア":0.001125,"・":0.002003,"ド":0.000697,"フ":0.000651,"ー":0.002927,"Ç":0.000408,"ş":0.000975,"Κ":0.000429,"ρ":0.001437,"η":0.000796,"İ":0.000232,"Ч":0.000294,"%":0.02568,"È":0.000248,"€":0.000667,"Т":0.001089,"ö":0.004663,"ت":0.002629,"ص":0.000817,"ن":0.003977,"ي":0.003865,"ف":0.001608,"ا":0.007302,"ر":0.003975,"خ":0.000324,"ل":0.003905,"س":0.002,"و":0.003543,"د":0.002865,"И":0.000559,"ò":0.00065,"ě":0.000408,"ק":0.001438,"ט":0.001433,"ג":0.00116,"ה":0.002054,"ס":0.001131,"ד":0.000931,"א":0.001889,"ן":0.000574,"ス":0.001367,"ダ":0.00024,"の":0.000876,"분":0.000872,"류":0.000873,"의":0.00035,"사":0.00016,"ē":0.000265,"ã":0.001263,"І":0.00016,"్":0.000224,"ం":0.000102,"ా":0.000119,"ు":0.000102,"Đ":0.000196,"ạ":0.00049,"ф":0.001467,"ি":0.001464,"য":0.000549,"়":0.000389,"ে":0.000504,"ত":0.000461,"ন":0.000428,"া":0.001616,"ম":0.000816,"র":0.001187,"ো":0.000139,"ল":0.000243,"ý":0.000639,"ệ":0.000134,"地":0.000124,"理":0.00011,"پ":0.000311,"ی":0.002977,"ب":0.001795,"أ":0.000493,"Ф":0.000948,"У":0.000525,"ъ":0.000492,"А":0.001974,"প":0.000135,"এ":0.000341,"্":0.00105,"স":0.000502,"ि":0.000512,"ल":0.000423,"प":0.000596,"ं":0.000221,"ड":0.000145,"र":0.000915,"स":0.000716,"न":0.000527,"ィ":0.000641,"リ":0.001104,"ッ":0.00089,"プ":0.000249,"ソ":0.000166,"व":0.00038,"े":0.000444,"利":0.000156,"·":0.002805,"德":0.000187,"Ś":0.000121,"$":0.001068,"כ":0.000344,"Œ":0.001101,"Š":0.000589,"š":0.001664,"ł":0.001285,"ę":0.000354,"ิ":0.000729,"ป":0.00036,"โ":0.000287,"แ":0.000296,"ั":0.000502,"ส":0.000568,"ท":0.000422,"พ":0.000495,"ก":0.000705,"ร":0.001162,"ี":0.00076,"ά":0.000502,"ό":0.00044,"ς":0.001079,"ポ":0.000182,"カ":0.000555,"ム":0.000303,"ì":0.000392,"ί":0.000889,"ζ":0.000114,"ე":0.001528,"ლ":0.00073,"ი":0.002416,"ს":0.000657,"ა":0.002366,"Π":0.000231,"γ":0.000722,"σ":0.000788,"Λ":0.000134,"ε":0.001005,"φ":0.000271,"گ":0.000603,"ج":0.000702,"ه":0.0015,"レ":0.000549,"ボ":0.000178,"ワ":0.000137,"グ":0.000312,"მ":0.000476,"ო":0.001107,"ფ":0.000147,"გ":0.000682,"რ":0.0013,"ნ":0.000641,"ბ":0.000526,"უ":0.000417,"თ":0.000177,"ვ":0.000399,"드":0.000152,"리":0.000351,"ü":0.004958,"世":0.000472,"球":0.000122,"О":0.000699,"ж":0.001082,"х":0.00119,"щ":0.000148,"́":0.000114,"ă":0.000846,"ń":0.000464,"Α":0.000261,"χ":0.000206,"ל":0.001658,"ת":0.000987,"ע":0.000611,"Ó":0.000121,"代":0.000129,"ラ":0.001025,"ヴ":0.000353,"ძ":0.000114,"Ш":0.000737,"ž":0.00086,"ė":0.000748,"ų":0.000134,"ī":0.00056,"č":0.001226,"บ":0.000402,"์":0.000545,"ล":0.000645,"斯":0.000362,"拉":0.000179,"غ":0.000291,"ة":0.000882,"ع":0.000627,"ز":0.000752,"ى":0.00021,"エ":0.000379,"ズ":0.000206,"어":0.000176,"э":0.001368,"ベ":0.000201,"メ":0.000222,"ト":0.000975,"르":0.000188,"트":0.00017,"ァ":0.000234,"イ":0.000887,"サ":0.000355,"オ":0.000425,"오":0.000114,"ガ":0.000203,"ネ":0.0002,"º":0.000184,"“":0.000586,"”":0.000562,"צ":0.000328,"מ":0.001292,"Č":0.000246,"ピ":0.000168,"ノ":0.000253,"チ":0.000314,"ャ":0.000311,"コ":0.000388,"キ":0.000255,"ტ":0.000784,"პ":0.000181,"კ":0.000717,"ც":0.000117,"아":0.000274,"주":0.000112,"이":0.000311,"스":0.000482,"•":0.002899,"デ":0.000402,"ニ":0.000378,"م":0.003147,"ش":0.000752,"Μ":0.000208,"δ":0.00036,"ミ":0.000233,"シ":0.000562,"ュ":0.000322,"³":0.000525,"Β":0.000115,"Л":0.001072,"ō":0.002564,"Θ":0.00023,"ế":0.000115,"ñ":0.001173,"Р":0.001198,"Д":0.001112,"њ":0.000155,"ك":0.000847,"学":0.000207,"ط":0.000345,"ェ":0.00037,"ブ":0.00032,"ศ":0.000413,"ต":0.000485,"้":0.000178,"ซ":0.000217,"@":0.000983,"ı":0.001405,"ư":0.000131,"パ":0.000211,"‎":0.000223,"®":0.000214,"里":0.000133,"ح":0.000657,"آ":0.000207,"ک":0.000632,"ё":0.000261,"đ":0.000348,"國":0.000118,"市":0.000241,"大":0.000292,"法":0.00012,"国":0.000283,"Б":0.001765,"µ":0.00011,"マ":0.000533,"ナ":0.000342,"Н":0.000907,"´":0.000199,"る":0.000101,"星":0.000131,"ю":0.00069,"Ν":0.000112,"\\":0.017161,"ř":0.000401,"ョ":0.000195,"^":0.003221,"セ":0.000162,"ū":0.000862,"テ":0.000454,"タ":0.000484,"い":0.000183,"人":0.00019,"ウ":0.000425,"`":0.000587,"জ":0.000345,"ক":0.000501,"ু":0.000188,"ব":0.000424,"Τ":0.000119,"ビ":0.000192,"克":0.000202,"έ":0.000333,"ゴ":0.000132,"ů":0.000117,"尔":0.000238,"Ú":0.000214,"子":0.000143,"日":0.000157,"ツ":0.000224,"ര":0.000196,"ി":0.000225,"ക":0.000167,"്":0.000686,"റ":0.000107,"ा":0.000828,"्":0.001292,"क":0.000399,"ो":0.000263,"Æ":0.000147,"年":0.001649,"가":0.000113,"家":0.000144,"Δ":0.000141,"დ":0.000397,"ć":0.000981,"ہ":0.000104,"ئ":0.000215,"小":0.000128,"Ō":0.000171,"一":0.000146,"天":0.000112,"山":0.000118,"ハ":0.000202,"ケ":0.000136,"王":0.000114,"海":0.000103,"生":0.000231,"ग":0.000457,"ु":0.00075,"त":0.00025,"च":0.000377,"ी":0.000403,"็":0.000101,"จ":0.00021,"ะ":0.000271,"ช":0.000254,"ุ":0.000266,"ง":0.00038,"ß":0.00058,"Ж":0.000303,"ў":0.000262,"ষ":0.000279,"শ":0.000303,"ণ":0.000272,"ী":0.000314,"৭":0.00022,"৩":0.000224,"৯":0.000218,"থ":0.000301,"দ":0.000171,"ই":0.00017,"ذ":0.000149,"۷":0.000144,"۳":0.000156,"۹":0.000163,"년":0.000524,"음":0.000154,"ः":0.000264,"७":0.000315,"३":0.000314,"९":0.000329,"य":0.000469,"म":0.000535,"द":0.000251,"ø":0.001058,"나":0.000113,"니":0.000103,"ח":0.000377,"公":0.000102,"৫":0.000232,"۵":0.000149,"५":0.00033,"ể":0.000423,"ấ":0.000103,"ə":0.000399,"Ü":0.000169,"‌":0.000325,"ം":0.000152,"ペ":0.000113,"라":0.000188,"Á":0.000427,"श":0.000174,"ण":0.000106,"ब":0.00025,"್":0.000193,"ರ":0.000111,"Ş":0.000186,"ट":0.000215,"വ":0.000141,"‍":0.000137,"ഗ":0.000137,"ാ":0.000174,"ப":0.000337,"க":0.000359,"ு":0.000272,"்":0.000882,"ர":0.000261,"ா":0.000229,"ட":0.000228,"ம":0.000223,"ర":0.000161,"ق":0.000764,"ギ":0.000107,"യ":0.00011,"ி":0.000374,"ன":0.000149,"ல":0.000171,"ไ":0.000105,"프":0.000125,"ज":0.000194,"ա":0.000871,"ե":0.000404,"ո":0.000427,"ն":0.000257,"ւ":0.000118,"թ":0.000109,"æ":0.000958,"ğ":0.000412,"Ö":0.000405,"州":0.000176,"×":0.000618,"시":0.000198,"த":0.000185,"வ":0.000147,"ச":0.000162,"文":0.00011,"西":0.000132,"ś":0.000326,"ð":0.000499,"モ":0.000212,"ქ":0.000108,"出":0.000193,"자":0.000144,"উ":0.000137,"Ê":0.000135,"ォ":0.000151,"空":0.000112,"ɔ":0.000105,"特":0.000174,"Ž":0.000171,"ą":0.000231,"尼":0.000121,"阿":0.000129,"õ":0.000266,"ث":0.000157," ":0.000234,"Ц":0.000152," ":0.000213,"기":0.000195,"ใ":0.000155,"ţ":0.000402,"月":0.00013,"레":0.000114,"전":0.00015,"科":0.000171,"爾":0.0001,"Å":0.000181,"إ":0.000185,"Ø":0.000104,"ÿ":0.000115,"Γ":0.000138,"ध":0.000111,"წ":0.000129,"ന":0.00013,"Ł":0.000112,"§":0.000151,"로":0.000144,"物":0.000116,"©":0.000288,"ˈ":0.000139,"इ":0.000358,"സ":0.000139,"ض":0.000133,"ả":0.000115,"۱":0.000405,"۴":0.000153,"১":0.000664,"৪":0.000223,"৮":0.000217,"۸":0.000147,"남":0.000107,"१":0.00087,"४":0.000317,"८":0.000319,"ђ":0.000103,"도":0.000107,"국":0.000124,"ট":0.000148,"ह":0.000161,"ố":0.000123,"✉":0.000153,"ய":0.000134,"۲":0.000176,"۶":0.000143,"۰":0.000151,"中":0.000121,"마":0.000121,"원":0.000122,"২":0.000238,"Կ":0.000237,"տ":0.000288,"գ":0.00025,"ր":0.000443,"ի":0.000385,"२":0.000339,"ू":0.000193,"ĝ":0.00011,"−":0.000178,"ხ":0.000102,"£":0.000334,"ő":0.000198,"′":0.000122,"Χ":0.000104,"±":0.000458,"Ю":0.000111,"০":0.000203,"እ":0.000109,"ө":0.000217,"ː":0.000102,"ɛ":0.000134,"་":0.000186,"前":0.000167,"አ":0.000118,"०":0.000302,"☮":0.000139,"✍":0.00022,"ኤ":0.000109,"¬":0.000276,"६":0.000325,"☺":0.000105,"৬":0.000226,"┼":0.00021,"\u0000":0.000319}
@@ -0,0 +1 @@
1
+ {"<":2.330989,"t":3.137881,"i":2.94908,"m":1.572711,"e":3.925811,"s":1.843244,"a":2.378136,"p":1.152187,">":2.334451,"2":1.17783,"0":1.551905,"7":0.574093,"-":1.033965,"1":1.541364,"3":0.651532,"T":0.299347,"9":0.799147,":":1.521444,"8":0.621625,"Z":0.123851,"/":1.696379,"c":1.084052,"o":2.144731,"n":2.102669,"r":2.543305,"b":0.6304,"u":0.970807,"g":0.776647,"h":0.603204,"B":0.182475,"d":1.278615,"П":0.502667,"е":8.318058,"р":5.872126,"н":6.965611,"а":8.954188,"п":2.320112,"в":4.20693,"л":4.27428,"и":8.704968,"[":4.014471,"Ю":0.030881,"ч":1.157951,",":1.394228,"М":0.320936,"х":0.804982,"В":0.449899,"ь":1.43616,"]":4.015787,"x":0.403298,"l":1.360123,"=":1.704699,"\"":0.442924,"v":0.496371,"#":0.15084,"R":0.184101,"E":0.180407,"D":0.211428,"I":0.207284,"C":0.306201,".":1.554824,"4":0.590245,"5":0.606957,"Г":0.239608,"о":10.0,"д":2.786832,"К":0.50324,"й":1.611095,"т":5.72299,"6":0.50969,"←":0.012395,"|":2.341314,"я":2.209708,"«":0.215058,"(":0.56263,"з":1.414717,")":0.567754,"»":0.214883,"Б":0.240547,"г":1.89479,"Х":0.079508,"ц":0.668215,"с":5.317193,"S":0.204953,"м":2.745811,"у":2.102913,"ф":0.502268,"к":3.621307,"Л":0.166377,"ю":0.502088,"Ф":0.203134,"Д":0.215067,"ж":0.707131,"А":0.36367,"Р":0.278187,"И":0.232821,"Э":0.085479,"ы":1.773363,"Ш":0.086732,"X":0.044119,"K":0.092262,"б":1.425197,"k":0.299519,"분":0.002128,"류":0.002127,"리":0.000758,"스":0.001082,"어":0.000349,"의":0.000899,"{":0.653168,"W":0.059431,"}":0.652321,"У":0.139142,"ت":0.006078,"ص":0.001927,"ن":0.008685,"ي":0.008387,"ف":0.003756,"م":0.00686,"س":0.00454,"ر":0.008925,"ح":0.001281,"ا":0.016163,"ش":0.001631,"ك":0.001853,"ب":0.003961,"P":0.127461,"z":0.098498,"ù":0.000925,"O":0.059024,"í":0.013715,"y":0.250566,"Κ":0.000929,"α":0.005235,"τ":0.00328,"η":0.001795,"γ":0.00152,"ο":0.004491,"ρ":0.003177,"ί":0.001965,"Σ":0.000408,"ι":0.002911,"ξ":0.000146,"π":0.001246,"κ":0.001615,"ά":0.001129,"έ":0.000706,"Ŝ":0.000154,"j":0.098023,"f":0.37878,"L":0.090705,"ä":0.006437,"é":0.018907,"è":0.003119,"â":0.001478,"ó":0.012092,"á":0.011933,"Կ":0.000568,"ա":0.003037,"տ":0.000806,"ե":0.001193,"գ":0.000648,"ո":0.001347,"ր":0.001504,"ի":0.001161,"ք":0.000109,"ս":0.000308,"պ":0.000112,"ն":0.001162,"シ":0.001029,"ェ":0.00058,"イ":0.001636,"ク":0.001586,"ス":0.002426,"ピ":0.000254,"ア":0.00193,"の":0.001912,"Š":0.001083,"ī":0.000834,"ј":0.004202,"w":0.320967,"ś":0.000849,"ć":0.000662,"ç":0.003057,"ı":0.002835,"士":0.000105,"比":0.000114,"亞":0.000162,"作":0.000114,"ё":0.222876,"'":1.057644,"—":0.304607,"щ":0.29846,"э":0.239879,"Т":0.179908,"ш":0.463508,"*":0.419508,"№":0.014806,"С":0.552956,"人":0.000418,"物":0.000277,"კ":0.001873,"ა":0.006334,"ტ":0.00198,"ე":0.004092,"გ":0.001758,"ო":0.002898,"რ":0.003435,"ი":0.006528,"შ":0.000275,"ქ":0.000342,"ს":0.001883,"პ":0.000488,"ბ":0.001407,"ნ":0.001734,"Я":0.046618,"Н":0.261249,"ъ":0.036272,"V":0.074808,"G":0.113949,"Ц":0.033494,"О":0.236586,"+":0.023964,"!":0.090837,"F":0.107827,"A":0.185039,"õ":0.000702,"ã":0.003925,"З":0.098699,"q":0.028998,"χ":0.000425,"Щ":0.002993,"ā":0.001938,"à":0.002219,"N":0.100764,"H":0.060726,"_":0.154083,"%":0.132075,"@":0.001195,"?":0.045658," ":0.239456,"Е":0.07024,"Й":0.009138,"→":0.002612,";":0.133513,"M":0.135682,"U":0.105693,"J":0.041014,"Y":0.01692,"́":0.017755,"Ж":0.034043,"…":0.007575,"ü":0.007143,"Ы":0.001232,"’":0.007122,"Ա":0.000203,"լ":0.000216,"դ":0.000215,"զ":0.000102,"ւ":0.000449,"մ":0.000301,"յ":0.000471,"&":0.080259,"タ":0.002187,"チ":0.001907,"コ":0.002015,"マ":0.002212,"Ё":0.000885,"ú":0.002425,"Ч":0.065309,"ż":0.000712,"–":0.007888,"Հ":0.000131,"թ":0.000285,"ة":0.001703,"ܐ":0.000122,"ñ":0.002064,"ަ":0.000125,"ް":0.000156,"Π":0.000505,"λ":0.001856,"ύ":0.000414,"ν":0.002809,"ς":0.002399,"î":0.001275,"ô":0.001023,"ج":0.001503,"ک":0.001479,"ل":0.008298,"د":0.006324,"ی":0.006972,"ש":0.001508,"ל":0.003656,"י":0.010269,"ה":0.004677,"ग":0.000995,"र":0.002051,"्":0.0033,"भ":0.000101,"न":0.001514,"ा":0.001904,"ल":0.000946,"태":0.000167,"Ł":0.000268,"љ":0.000136,"ந":0.000161,"்":0.001982,"ச":0.000359,"ு":0.000641,"க":0.000823,"ட":0.000508,"ி":0.000865,"ర":0.00038,"ా":0.00029,"ు":0.000255,"వ":0.00022,"č":0.002507,"Q":0.007227,"ė":0.001789,"„":0.002324,"“":0.002713,"‎":0.000567,"ר":0.006322,"כ":0.000793,"ב":0.002497,"ת":0.002274,"נ":0.003177,"ו":0.008621,"ס":0.002443,"ע":0.001521,"ם":0.001412,"ד":0.002031,"ק":0.003384,"מ":0.002997,"і":0.017455,"지":0.000218,"오":0.000242,"드":0.00034,"و":0.007879,"Γ":0.000275,"ε":0.002023,"ώ":0.000237,"Φ":0.000153,"ό":0.001012,"φ":0.000461,"σ":0.001639,"ղ":0.000123,"բ":0.000141,"կ":0.000316,"ه":0.003538,"‌":0.000822,"گ":0.001289,"ח":0.000865,"ホ":0.000146,"ッ":0.001249,"ト":0.001896,"ド":0.001173,"グ":0.000579,"도":0.000253,"그":0.000136,"š":0.003224,"ø":0.001606,"ž":0.001794,"²":0.006731,"モ":0.000293,"レ":0.000867,"მ":0.001299,"ლ":0.001919,"ق":0.001661,"ط":0.000643,"،":0.000104,"إ":0.000395,"θ":0.000451,"ט":0.003397,"פ":0.002056,"カ":0.001151,"ル":0.002826,"ヘ":0.000124,"ナ":0.000553,"ხ":0.000316,"თ":0.00059,"카":0.000216,"르":0.000459,"타":0.000161,"나":0.000257,"인":0.000216,"İ":0.000369,"І":0.001079,"卡":0.00018,"塔":0.000113,"西":0.000255,"”":0.000503,"ě":0.00087,"ז":0.000806,"ג":0.002791,"ى":0.000418,"א":0.004213,"ラ":0.001666,"・":0.002784,"デ":0.000636,"エ":0.00062,"დ":0.001043,"라":0.000448,"에":0.000196,"레":0.000239,"斯":0.000771,"サ":0.000548,"バ":0.000617,"‘":0.000258,"ث":0.000281,"メ":0.000393,"ニ":0.000604,"ー":0.004735,"リ":0.002165,"フ":0.00118,"ィ":0.000921,"€":0.000155,"پ":0.000788,"צ":0.000725,"林":0.000126,"格":0.000178,"科":0.000285,"学":0.000404,"Ç":0.000266,"ş":0.001572,"ン":0.003972,"テ":0.000925,"ý":0.00119,"ן":0.001266,"Қ":0.000126,"ө":0.000679,"ł":0.003128,"尔":0.000428,"克":0.000451,"·":0.003876,"خ":0.000734,"ز":0.001769,"ძ":0.000295,"ზ":0.000295,"ვ":0.001081,"마":0.000245,"프":0.000288,"제":0.000194,"ţ":0.000555,"ћ":0.000123,"ö":0.006481,"拉":0.000364,"馬":0.000117,"夫":0.000182,"†":0.000505,"Č":0.000491,"æ":0.001423,"দ":0.00034,"ক":0.001159,"্":0.00239,"ষ":0.000576,"ি":0.003238,"ণ":0.000561,"আ":0.000179,"ম":0.001784,"ে":0.001421,"র":0.002866,"া":0.004094,"ভ":0.000216,"ジ":0.000808,"プ":0.000465,"キ":0.000476,"ү":0.000301,"×":0.002404,"থ":0.000581,"প":0.000457,"ু":0.000555,"য":0.001252,"়":0.000938,"ů":0.000266,"ê":0.001074,"प":0.001356,"त":0.000536,"ि":0.001178,"व":0.000872,"य":0.001004,"क":0.000898,"آ":0.000487,"ò":0.000763,"ậ":0.000179,"ì":0.00065,"đ":0.00063,"ư":0.000232,"һ":0.000101,"~":0.004611,"이":0.000648,"년":0.001097,"ئ":0.000498,"ハ":0.000406,"하":0.000146,"子":0.000243,"ō":0.000764,"南":0.000184,"พ":0.001137,"ู":0.001162,"ด":0.001817,"ค":0.001293,"ุ":0.00067,"ย":0.001038,"≈":0.000116,"Ъ":0.000221,"日":0.000338,"ダ":0.000394,"น":0.0021,"ิ":0.001664,"ส":0.001298,"ั":0.001042,"ท":0.000991,"ี":0.001701,"้":0.000364,"า":0.00242,"基":0.000161,"的":0.000105,"安":0.000157,"多":0.000122,"尼":0.000235,"β":0.000562,"Ν":0.000205,"δ":0.000713,"ū":0.000771,"ē":0.000642,"ļ":0.000102,"고":0.000135,"å":0.001243,"É":0.000955,"ð":0.000774,"ც":0.000283,"ə":0.001324,"ę":0.000914,"−":0.002046,"ャ":0.000481,"바":0.000193,"ミ":0.000422,"合":0.000152,"星":0.000157,"小":0.000136,"三":0.00014,"高":0.000108,"天":0.000174,"元":0.000214,"ノ":0.00031,"大":0.000499,"布":0.000143,"中":0.000219,"セ":0.000287,"空":0.000171,"一":0.000227,"ガ":0.000326,"い":0.000189,"二":0.000125,"ネ":0.00028,"ビ":0.000323,"ポ":0.000264,"ケ":0.000217,"手":0.000207,"る":0.000142,"利":0.000304,"ワ":0.000249,"語":0.000202,"ї":0.001588,"行":0.000154,"ム":0.00055,"ロ":0.001016,"オ":0.000682,"公":0.00018,"ギ":0.000199,"Ş":0.000338,"Ä":0.000165,"่":0.001678,"ว":0.001858,"ล":0.001395,"ง":0.000788,"ต":0.001152,"ع":0.001329,"ন":0.001144,"উ":0.00028,"চ":0.000105,"ত":0.000903,"হ":0.000212,"Ε":0.000262,"μ":0.001467,"υ":0.001301,"ウ":0.00076,"国":0.000601,"우":0.000192,"루":0.00014,"국":0.000318,"­":0.000846,"ĕ":0.000436,"足":0.000133,"教":0.000177,"政":0.000165,"家":0.000286,"ğ":0.000701,"ạ":0.001116,"ủ":0.00011,"^":0.00386,"Α":0.000552,"Ú":0.000444,"区":0.000141,"画":0.0002,"Ü":0.000367,"ம":0.000502,"ற":0.000134,"ா":0.000516,"ப":0.000791,"보":0.00012,"њ":0.000228,"ョ":0.000284,"ベ":0.000345,"ß":0.001734,"위":0.000102,"ľ":0.000188,"ą":0.000657,"ņ":0.000177,"노":0.000127,"ゥ":0.000101,"ツ":0.000349,"ザ":0.000189,"ズ":0.000337,"อ":0.001729,"ะ":0.000569,"ไ":0.000213,"ซ":0.000441,"โ":0.000589,"เ":0.002067,"ร":0.002687,"์":0.0012,"ř":0.000649,"ź":0.000182,"უ":0.001142,"ല":0.000197,"ക":0.000435,"ം":0.000424,"ả":0.000272,"ị":0.000196,"Մ":0.000247,"հ":0.000127,"غ":0.000655,"ュ":0.000552,"動":0.000118,"°":0.003829,"ペ":0.000197,"ゴ":0.000475,"に":0.000132,"球":0.000231,"年":0.003576,"奥":0.000122,"会":0.000176,"•":0.008301,"ζ":0.000216,"구":0.000229,"ë":0.001114,"ă":0.00165,"ể":0.001007,"波":0.000122,"$":0.002149,"美":0.000141,"國":0.000252,"ブ":0.000551,"海":0.000212,"Á":0.000647,"ল":0.000689,"ো":0.000757,"জ":0.000704,"े":0.000981,"ो":0.000565,"ू":0.00041,"ज":0.000424,"ನ":0.00012,"್":0.000466,"ಕ":0.000109,"ರ":0.000255,"ہ":0.000402,"ই":0.000517,"গ":0.000287,"ব":0.001004,"स":0.001978,"ी":0.000859,"ब":0.000501,"巴":0.000178,"Đ":0.000261,"Í":0.00017,"틀":0.000122,"치":0.000134,"아":0.00063,"แ":0.00064,"ม":0.002766,"บ":0.000928,"À":0.000147,"ọ":0.000204,"ও":0.000178,"স":0.001347,"ট":0.000529,"ژ":0.000115,"爾":0.000234,"ट":0.00045,"ォ":0.000224,"트":0.000395,"ٹ":0.000139,"ァ":0.000338,"ჯ":0.000104,"ფ":0.000388,"จ":0.000414,"ฟ":0.000268,"ก":0.001515,"ў":0.001145,"©":0.000177,"أ":0.000915,"ή":0.000579,"ω":0.000594,"선":0.000153,"ป":0.000733,"ช":0.000554,"ศ":0.000938,"前":0.000371,"王":0.000238,"ห":0.001935,"民":0.000128,"族":0.000141,"미":0.000184,"코":0.000151,"म":0.001115,"ॉ":0.000147,"米":0.000111,"\\":0.02195,"ல":0.000377,"ை":0.000213,"ய":0.000309,"வ":0.000336,"ヴ":0.000541,"Τ":0.000232,"Χ":0.000238,"ń":0.001113,"Λ":0.000201,"Μ":0.000445,"ヌ":0.000104,"є":0.000427,"Ь":0.000912,"者":0.000196,"소":0.000142,"비":0.000206,"자":0.000324,"പ":0.000191,"ോ":0.000186,"്":0.00143,"ത":0.00021,"ാ":0.000357,"വ":0.000416,"ह":0.000349,"ి":0.000227,"న":0.00018,"గ":0.000196,"ï":0.000504,"地":0.00026,"정":0.00013,"Ι":0.000211,"վ":0.000178,"ғ":0.000138,"ә":0.000366,"इ":0.000789,"ं":0.000485,"ड":0.000307,"伊":0.000139,"德":0.000356,"Ż":0.000159,"山":0.000203,"新":0.000118,"加":0.000146,"가":0.000254,"포":0.000145,"브":0.000125,"里":0.000243,"特":0.000331,"州":0.000332,"چ":0.000227,"শ":0.000621,"श":0.000412,"세":0.000237,"ใ":0.000348,"ף":0.000108,"동":0.000171,"金":0.000141,"수":0.000241,"川":0.000122,"代":0.000469,"理":0.000229,"機":0.000159,"史":0.000136,"റ":0.000245,"സ":0.000314,"ര":0.000301,"ர":0.000582,"ஸ":0.000102,"ض":0.000259,"ী":0.00064,"৫":0.000455,"১":0.001357,"৬":0.000454,"এ":0.000663,"ৃ":0.000159,"ৌ":0.000179,"ذ":0.00031,"۵":0.000285,"۱":0.000831,"۶":0.000285,"過":0.000199,"世":0.001013,"没":0.000208,"죽":0.000182,"음":0.000279,"ु":0.001498,"च":0.000852,"ः":0.000557,"५":0.000739,"१":0.002006,"६":0.000741,"द":0.000537,"৯":0.000435,"৮":0.000437,"৩":0.000452,"۹":0.000318,"۸":0.000296,"۳":0.000302,"出":0.000383,"生":0.000461,"남":0.000188,"९":0.000766,"८":0.000734,"३":0.000718,"ђ":0.000207,"ء":0.000174,"Ś":0.000283,"½":0.002941,"ெ":0.000151,"ภ":0.00017,"į":0.000114,"�":0.000257,"Β":0.000248,"ゼ":0.000127,"베":0.00014,"니":0.00023,"로":0.000333,"パ":0.000328,"ť":0.000109,"크":0.000267,"키":0.000167,"维":0.000114,"사":0.000341,"ゲ":0.000185,"`":0.000373,"시":0.000395,"ന":0.00028,"ன":0.000336,"ץ":0.000119,"阿":0.000252,"音":0.000123,"ך":0.000131,"일":0.000182,"교":0.000122,"Ö":0.000556,"Ø":0.000124,"Ο":0.00017,"ŭ":0.000198,"ข":0.000145,"ษ":0.00023,"Є":0.000151,"ế":0.000222,"®":0.00015,"Ó":0.000178,"Δ":0.000227,"た":0.000122,"列":0.000142,"ष":0.000126,"다":0.000125,"부":0.000101,"映":0.000147,"축":0.000123,"自":0.000132,"ő":0.000365,"選":0.000154,"神":0.000139,"月":0.000249,"あ":0.000178,"り":0.000101,"上":0.000104,"ユ":0.000104,"ヤ":0.000156,"ソ":0.000259,"市":0.000328,"治":0.000159,"和":0.000157,"水":0.000124,"本":0.000188,"島":0.000178,"さ":0.000123,"と":0.000132,"主":0.000166,"戦":0.000155,"디":0.000113,"기":0.000473,"第":0.000106,"‑":0.000199,"↔":0.000665,"Î":0.000122,"§":0.00013,"ĝ":0.000219,"城":0.000123,"Ž":0.000307,"공":0.000134,"Ј":0.000196,"َ":0.000104,"³":0.000597,"ヒ":0.000166,"省":0.000105,"წ":0.0003,"ʼ":0.000235,"Θ":0.000133,"ַ":0.000237,"ָ":0.000227,"亚":0.000181,"학":0.000192,"전":0.000347,"대":0.000208,"원":0.000251,"法":0.000206,"ध":0.000246,"表":0.00011,"ố":0.00023,"모":0.000111,"û":0.000197,"Ρ":0.000124,"ѣ":0.000382,"罗":0.000156,"ボ":0.000257,"ി":0.000543,"യ":0.000227,"马":0.000126,"文":0.000232,"北":0.000104,"ּ":0.000153,"ň":0.000134,"్":0.000556,"네":0.000106,"號":0.000118,"२":0.000785,"०":0.000735,"फ":0.000203,"電":0.000127,"™":0.000101,"し":0.000123,"ấ":0.000209,"ჰ":0.000115,"थ":0.000127,"共":0.000116,"ธ":0.000175,"ฮ":0.000125,"河":0.000139,"ए":0.000117,"道":0.00017,"ڈ":0.000108,"ų":0.000476,"ộ":0.000162,"็":0.00021,"ড":0.000469,"과":0.000126,"ण":0.000237,"な":0.000119,"ệ":0.000186,"±":0.00078,"주":0.000265,"토":0.000149,"മ":0.000222,"మ":0.000147,"ҳ":0.000104,"۲":0.000354,"۰":0.000373,"성":0.000121,"ಿ":0.000179,"െ":0.00013,"த":0.000416,"ண":0.000119,"క":0.000131,"ഗ":0.000436,"Å":0.000127,"қ":0.000245,"ˈ":0.000167,"파":0.00013,"ফ":0.000166,"′":0.000105,"స":0.000139,"화":0.000222,"်":0.000103,"羅":0.000126,"ű":0.000131,"ಸ":0.00012,"ട":0.000155,"ു":0.00014,"古":0.000116,"ோ":0.000164,"ே":0.000118,"계":0.000104,"界":0.000115,"티":0.000132,"ื":0.000126,"ە":0.000137,"ظ":0.000165,"군":0.000111,"ల":0.00022,"ൽ":0.000114,"ബ":0.000119,"ർ":0.000376,"ள":0.000166,"अ":0.000179,"산":0.000138,"分":0.000123,"ಾ":0.000173,"̍":0.000193,"ި":0.000114,"ར":0.00011,"།":0.00015,"ា":0.000115,"្":0.000119,"ం":0.000248,"ವ":0.000125,"ച":0.000202,"化":0.000199,"ң":0.000144,"数":0.000105,"ജ":0.000117,"་":0.000499,"ོ":0.000116,"እ":0.000231,"ኤ":0.000231,"አ":0.000245,"২":0.000482,"০":0.000405,"ས":0.000114,"ི":0.000155,"ӧ":0.000119,"ɛ":0.000132,"ː":0.00016,"७":0.000725,"৭":0.00045,"۷":0.000294,"ಗ":0.000106,"Æ":0.0001,"ɔ":0.000106,"೧":0.000107,"۴":0.000296,"४":0.000715,"৪":0.000445,"紀":0.000206,"̀":0.000114,"帝":0.000115,"!":0.00011,"―":0.000127,"─":0.000349,"ʰ":0.000102,"॰":0.000194,"郡":0.00011,"Ð":0.000129,"逝":0.000197,"✔":0.000248,"│":0.00061,"\u0000":0.000679}
@@ -0,0 +1,73 @@
1
+ require_relative 'distribution'
2
+
3
+ module EncodingEstimator
4
+
5
+ # Class representing a language model. This can either be an internal
6
+ # model (provided by the gem) or an external one (user defined model).
7
+ class LanguageModel
8
+
9
+ # Initialize a new object from a language file or an internal
10
+ # language profile
11
+ #
12
+ # @param [String|Symbol] language If symbol given, interpreted as internal language identifier,
13
+ # otherwise interpreted as a path to a language model file
14
+ def initialize( language )
15
+ @language = language
16
+ end
17
+
18
+ # Check if the instance is a valid language model representation
19
+ #
20
+ # @return [Boolean] true, if the referenced model file exists
21
+ def valid?
22
+ if internal?
23
+ @language.to_s.size == 2 and File.file? internal_path
24
+ else
25
+ File.file? external_path
26
+ end
27
+ end
28
+
29
+ # Check if this instance represents an internal model file
30
+ #
31
+ # @return [Boolean] true, if the model referenced is an internal model
32
+ def internal?
33
+ @language.is_a? Symbol
34
+ end
35
+
36
+ # Check if this instance represents an external model file
37
+ #
38
+ # @return [Boolean] true, if the model referenced is an external file
39
+ def external?
40
+ !internal?
41
+ end
42
+
43
+ # Get the full (absolute) path to the language model file
44
+ #
45
+ # @return [String] Path to the language model
46
+ def path
47
+ @path ||= ( internal? ? internal_path : external_path )
48
+ end
49
+
50
+ # Load the distribution file into a distribution object
51
+ #
52
+ # @return [EncodingEstimator::Distribution] Object representing the language model
53
+ def distribution
54
+ @distribution ||= EncodingEstimator::Distribution.new( self )
55
+ end
56
+
57
+ private
58
+
59
+ # Create the file path to the language statistics file
60
+ #
61
+ # @return [String] File path
62
+ def internal_path
63
+ File.expand_path( File.dirname( __FILE__ ) + "/lang/#{@language.to_s}.json" )
64
+ end
65
+
66
+ # Return the language file path
67
+ #
68
+ # @return [String] File path
69
+ def external_path
70
+ File.expand_path( @language )
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,49 @@
1
+ module EncodingEstimator
2
+
3
+ # Helper class to check for parallel processing support
4
+ class ParallelSupport
5
+
6
+ # Method to query whether the parallel gem is available
7
+ #
8
+ # @return [Boolean] true, if the parallel gem is available, false if not
9
+ def self.supported?
10
+ @@supported ||= check_support
11
+ end
12
+
13
+ # Method to query whether the ruby-progressbar gem is available
14
+ # (used for progressbar in Parallel.map)
15
+ #
16
+ # @return [Boolean] true, if the progressbar gem is available, false if not
17
+ def self.progress?
18
+ @@progress ||= check_progress
19
+ end
20
+
21
+ private
22
+ # Determine whether the parallel gem can be loaded.
23
+ #
24
+ # @return [Boolean] true if loading the parallel gem was successful
25
+ def self.check_support
26
+ check_gem 'parallel'
27
+ end
28
+
29
+ # Determine whether the ruby-progressbar gem can be loaded.
30
+ #
31
+ # @return [Boolean] true if loading the ruby-progressbar gem was successful
32
+ def self.check_progress
33
+ check_gem 'ruby-progressbar'
34
+ end
35
+
36
+ # Check if the gem with a given name can be loaded.
37
+ #
38
+ # @param [String] name Name of the gem to load
39
+ # @return [Boolean] true, if loading the gem was successful, false if otherwise
40
+ def self.check_gem( name )
41
+ begin
42
+ require name
43
+ rescue LoadError
44
+ return false
45
+ end
46
+ true
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,3 @@
1
+ module EncodingEstimator
2
+ VERSION = '0.1.0'
3
+ end