qwirk 0.0.1 → 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.
- data/README.md +9 -14
- data/lib/qwirk.rb +26 -17
- data/lib/qwirk/adapter.rb +3 -45
- data/lib/qwirk/adapter/base.rb +2 -0
- data/lib/qwirk/adapter/base/expanding_worker_config.rb +133 -0
- data/lib/qwirk/adapter/base/worker_config.rb +104 -0
- data/lib/qwirk/adapter/in_memory.rb +13 -0
- data/lib/qwirk/{queue_adapter/in_mem → adapter/in_memory}/factory.rb +2 -2
- data/lib/qwirk/{queue_adapter/in_mem → adapter/in_memory}/publisher.rb +4 -4
- data/lib/qwirk/{queue_adapter/in_mem → adapter/in_memory}/queue.rb +3 -2
- data/lib/qwirk/{queue_adapter/in_mem → adapter/in_memory}/reply_queue.rb +3 -2
- data/lib/qwirk/{queue_adapter/in_mem → adapter/in_memory}/topic.rb +2 -2
- data/lib/qwirk/{queue_adapter/in_mem → adapter/in_memory}/worker.rb +6 -8
- data/lib/qwirk/adapter/in_memory/worker_config.rb +50 -0
- data/lib/qwirk/adapter/inline.rb +9 -0
- data/lib/qwirk/adapter/inline/publisher.rb +86 -0
- data/lib/qwirk/adapter/inline/worker.rb +55 -0
- data/lib/qwirk/adapter/inline/worker_config.rb +30 -0
- data/lib/qwirk/adapter_factory.rb +48 -0
- data/lib/qwirk/base_worker.rb +18 -28
- data/lib/qwirk/batch/file_worker.rb +4 -4
- data/lib/qwirk/manager.rb +11 -8
- data/lib/qwirk/marshal_strategy/none.rb +1 -1
- data/lib/qwirk/publish_handle.rb +22 -11
- data/lib/qwirk/publisher.rb +9 -9
- data/lib/qwirk/{request_worker.rb → reply_worker.rb} +3 -3
- data/lib/qwirk/worker.rb +27 -29
- data/test/jms_fail_test.rb +11 -11
- data/test/jms_requestor_block_test.rb +12 -12
- data/test/jms_requestor_test.rb +8 -8
- data/test/jms_test.rb +10 -10
- metadata +104 -185
- data/examples/README +0 -1
- data/examples/activemq.xml +0 -84
- data/examples/advanced_requestor/README.md +0 -15
- data/examples/advanced_requestor/base_request_worker.rb +0 -18
- data/examples/advanced_requestor/char_count_worker.rb +0 -16
- data/examples/advanced_requestor/config.ru +0 -24
- data/examples/advanced_requestor/exception_raiser_worker.rb +0 -17
- data/examples/advanced_requestor/length_worker.rb +0 -14
- data/examples/advanced_requestor/print_worker.rb +0 -14
- data/examples/advanced_requestor/publisher.rb +0 -49
- data/examples/advanced_requestor/qwirk.yml +0 -16
- data/examples/advanced_requestor/reverse_worker.rb +0 -14
- data/examples/advanced_requestor/triple_worker.rb +0 -14
- data/examples/batch/my_batch_worker.rb +0 -30
- data/examples/batch/my_line_worker.rb +0 -8
- data/examples/qwirk.yml +0 -20
- data/examples/requestor/README.md +0 -13
- data/examples/requestor/config.ru +0 -13
- data/examples/requestor/qwirk_persist.yml +0 -5
- data/examples/requestor/requestor.rb +0 -68
- data/examples/requestor/reverse_echo_worker.rb +0 -15
- data/examples/setup.rb +0 -13
- data/examples/shared/README.md +0 -24
- data/examples/shared/config.ru +0 -13
- data/examples/shared/publisher.rb +0 -49
- data/examples/shared/qwirk_persist.yml +0 -5
- data/examples/shared/shared_worker.rb +0 -16
- data/examples/simple/README +0 -53
- data/examples/simple/bar_worker.rb +0 -10
- data/examples/simple/baz_worker.rb +0 -10
- data/examples/simple/config.ru +0 -14
- data/examples/simple/publisher.rb +0 -49
- data/examples/simple/qwirk_persist.yml +0 -4
- data/examples/simple/tmp/kahadb/db-1.log +0 -0
- data/examples/simple/tmp/kahadb/db.data +0 -0
- data/examples/simple/tmp/kahadb/db.redo +0 -0
- data/examples/task/README +0 -47
- data/examples/task/config.ru +0 -14
- data/examples/task/foo_worker.rb +0 -10
- data/examples/task/messages.out +0 -1000
- data/examples/task/publisher.rb +0 -25
- data/examples/task/qwirk_persist.yml +0 -5
- data/examples/task/task.rb +0 -36
- data/lib/qwirk/queue_adapter.rb +0 -3
- data/lib/qwirk/queue_adapter/active_mq.rb +0 -13
- data/lib/qwirk/queue_adapter/active_mq/publisher.rb +0 -12
- data/lib/qwirk/queue_adapter/active_mq/worker_config.rb +0 -16
- data/lib/qwirk/queue_adapter/in_mem.rb +0 -7
- data/lib/qwirk/queue_adapter/in_mem/worker_config.rb +0 -59
- data/lib/qwirk/queue_adapter/jms.rb +0 -50
- data/lib/qwirk/queue_adapter/jms/connection.rb +0 -42
- data/lib/qwirk/queue_adapter/jms/consumer.rb +0 -37
- data/lib/qwirk/queue_adapter/jms/publisher.rb +0 -126
- data/lib/qwirk/queue_adapter/jms/worker.rb +0 -89
- data/lib/qwirk/queue_adapter/jms/worker_config.rb +0 -38
- data/lib/qwirk/version.rb +0 -3
- data/lib/qwirk/worker_config.rb +0 -187
@@ -1,15 +0,0 @@
|
|
1
|
-
class ReverseEchoWorker
|
2
|
-
include Qwirk::RequestWorker
|
3
|
-
|
4
|
-
def request(obj)
|
5
|
-
puts "#{self}: Received #{obj} at #{Time.now}"
|
6
|
-
if obj =~ /^sleep (.*)/
|
7
|
-
sleep $1.to_f
|
8
|
-
puts "#{self}: Finished sleeping at #{Time.now}"
|
9
|
-
end
|
10
|
-
if obj =~ /^Exception/
|
11
|
-
raise Exception, 'You requested an exception'
|
12
|
-
end
|
13
|
-
obj.reverse
|
14
|
-
end
|
15
|
-
end
|
data/examples/setup.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
# Allow examples to be run in-place without requiring a gem install
|
2
|
-
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
3
|
-
|
4
|
-
require 'rubygems'
|
5
|
-
require 'qwirk'
|
6
|
-
require 'rumx'
|
7
|
-
require 'yaml'
|
8
|
-
require 'logger'
|
9
|
-
|
10
|
-
#Qwirk.logger = Logger.new($stdout)
|
11
|
-
file = File.expand_path('../qwirk.yml', __FILE__)
|
12
|
-
Qwirk.config = YAML.load(ERB.new(File.read(file), nil, '-').result(binding))
|
13
|
-
$adapter_key = ENV['QWIRK_ADAPTER'] || 'in_mem'
|
data/examples/shared/README.md
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
## Step 0
|
2
|
-
### Follow the directions for configuring configuring a JMS or InMem adapter located in examples/README
|
3
|
-
|
4
|
-
## Step 1
|
5
|
-
### Start up the application
|
6
|
-
* rm -f qwirk_persist.yml
|
7
|
-
* rackup -p 4567
|
8
|
-
|
9
|
-
## Step 2
|
10
|
-
* Browse to http://localhost:4567
|
11
|
-
* Open up the tree to Qwirk => S1 => Attributes
|
12
|
-
* Enter 2 for count and click the Update button.
|
13
|
-
* Open up the tree to Qwirk => S2 => Attributes
|
14
|
-
* Enter 3 for count and click the Update button.
|
15
|
-
* Refresh the browser so that you get the worker updates to the tree
|
16
|
-
|
17
|
-
## Step 3
|
18
|
-
* Open the tree to Publisher => Operations => send\_bar or send\_baz
|
19
|
-
* Enter values for the various arguments and click Execute.
|
20
|
-
|
21
|
-
## Step 4
|
22
|
-
* cntl-c the rackup process and start it back up. It should come back with
|
23
|
-
the workers and the config values that have been configured via the browser.
|
24
|
-
|
data/examples/shared/config.ru
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require '../setup'
|
2
|
-
require './shared_worker'
|
3
|
-
require './publisher'
|
4
|
-
|
5
|
-
# If we're not starting up a standalone publisher, then start up a manager
|
6
|
-
if ENV['RACK_ENV'] != 'publisher'
|
7
|
-
manager = Qwirk[$adapter_key].create_manager(:name => 'Worker', :persist_file => 'qwirk_persist.yml')
|
8
|
-
at_exit { manager.stop }
|
9
|
-
end
|
10
|
-
if ENV['RACK_ENV'] != 'worker'
|
11
|
-
Rumx::Bean.root.bean_add_child(:Publisher, Publisher.new($adapter_key))
|
12
|
-
end
|
13
|
-
run Rumx::Server
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'rumx'
|
2
|
-
require 'qwirk'
|
3
|
-
|
4
|
-
class Publisher
|
5
|
-
include Rumx::Bean
|
6
|
-
|
7
|
-
bean_attr_accessor :s1_count, :integer, 'Number of S1 messages sent'
|
8
|
-
bean_attr_accessor :s2_count, :integer, 'Number of S2 messages sent'
|
9
|
-
|
10
|
-
bean_operation :send_s1, :void, 'Send messages to the S1 worker', [
|
11
|
-
[ :count, :integer, 'Count of messages', 10 ],
|
12
|
-
[ :message, :string, 'String portion of the message to send', 'Message for Bar' ],
|
13
|
-
[ :sleep_time, :float, 'Time to sleep between messages', 0.2 ]
|
14
|
-
]
|
15
|
-
|
16
|
-
bean_operation :send_s2, :void, 'Send messages to the S2 worker', [
|
17
|
-
[ :count, :integer, 'Count of messages', 5 ],
|
18
|
-
[ :message, :string, 'String portion of the message to send', 'Message for Baz' ],
|
19
|
-
[ :sleep_time, :float, 'Time to sleep between messages', 0.5 ]
|
20
|
-
]
|
21
|
-
|
22
|
-
|
23
|
-
def initialize(adapter_key)
|
24
|
-
@s1_publisher = Qwirk[adapter_key].create_publisher(:queue_name => 'S1', :marshal => :bson)
|
25
|
-
@s2_publisher = Qwirk[adapter_key].create_publisher(:queue_name => 'S2', :marshal => :string)
|
26
|
-
@s1_count = 0
|
27
|
-
@s2_count = 0
|
28
|
-
end
|
29
|
-
|
30
|
-
def send_s1(count, message, sleep_time)
|
31
|
-
count.times do
|
32
|
-
@s1_count += 1
|
33
|
-
obj = {'count' => @s1_count, 'message' => message}
|
34
|
-
puts "Publishing to S1 object: #{obj.inspect}"
|
35
|
-
@s1_publisher.publish(obj)
|
36
|
-
sleep sleep_time
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def send_s2(count, message, sleep_time)
|
41
|
-
count.times do
|
42
|
-
@s2_count += 1
|
43
|
-
obj = "#{@s2_count}: #{message}"
|
44
|
-
puts "Publishing to S2 object: #{obj}"
|
45
|
-
@s2_publisher.publish(obj)
|
46
|
-
sleep sleep_time
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
class SharedWorker
|
2
|
-
include Qwirk::Worker
|
3
|
-
|
4
|
-
config_accessor :sleep_time, :float, 'Number of seconds to sleep between messages', 5
|
5
|
-
config_reader :message, :string, 'Message'
|
6
|
-
|
7
|
-
define_configs(
|
8
|
-
'S1' => {:message => "I'm S1", :sleep_time => 10},
|
9
|
-
'S2' => {:message => "I'm S2"}
|
10
|
-
)
|
11
|
-
|
12
|
-
def perform(obj)
|
13
|
-
puts "#{self}: Received #{obj.inspect} at #{Time.now}"
|
14
|
-
sleep config.sleep_time
|
15
|
-
end
|
16
|
-
end
|
data/examples/simple/README
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
Step 0
|
2
|
-
# Follow the directions for configuring configuring a JMS or InMem adapter located in examples/README
|
3
|
-
|
4
|
-
Step 1
|
5
|
-
# Start up the application
|
6
|
-
rm -f qwirk_persist.yml
|
7
|
-
rackup -p 4567
|
8
|
-
or for ActiveMQ
|
9
|
-
QWIRK_ADAPTER=active_mq rackup -p 4567
|
10
|
-
|
11
|
-
|
12
|
-
Step 2
|
13
|
-
# Browse to http://localhost:4567
|
14
|
-
# Open up the tree to Worker => Bar => Attributes and click on Attributes
|
15
|
-
# Change max_count to 100, idle_worker_timeout to 10, and sleep_time to 5 and click Update.
|
16
|
-
|
17
|
-
Step 3
|
18
|
-
# Open the tree to Publisher => Operations => send_bar and click on send_bar
|
19
|
-
# Set count to 1000 and sleep_time to 0.2 and click Execute.
|
20
|
-
# Click back on Worker => Bar => Attributes and continue clicking every few seconds while
|
21
|
-
messages are still being published. For the InMem adapter, workers will continue
|
22
|
-
to increase while there are still messages in the queue. For the ActiveMQ adapter,
|
23
|
-
the messages get cached on the consumer side so after the the publishing is complete,
|
24
|
-
many of the workers will drop off while the remaining ones that have cached messages
|
25
|
-
will continue.
|
26
|
-
|
27
|
-
Step 4
|
28
|
-
# cntl-c the rackup process and start it back up. It should come back with
|
29
|
-
the workers and the config values that have been configured via the browser.
|
30
|
-
|
31
|
-
|
32
|
-
Things to try:
|
33
|
-
|
34
|
-
|
35
|
-
Expanding / Contracting workers
|
36
|
-
|
37
|
-
Note that after you set a max_count and before you publish, the count of workers will be
|
38
|
-
1 as their is just a single worker waiting for data on the queue. Once you publish messages,
|
39
|
-
the count of workers will grow as needed to handle the message volume up to max_count.
|
40
|
-
|
41
|
-
If you set a value for idle_worker_timeout then the count of workers will go down when there
|
42
|
-
is no work to be done. Set a timeout and refresh the attributes to see this in action.
|
43
|
-
|
44
|
-
|
45
|
-
Monitoring your workers
|
46
|
-
|
47
|
-
Browse to http://localhost:4567/Worker/Bar/timer/attributes.json?reset=true
|
48
|
-
|
49
|
-
Publish some messages (possibly modifying the worker's sleep times first) and browse to that address again.
|
50
|
-
|
51
|
-
If you use a monitoring tool such as munin, nagios, hyperic, etc., you could poll this url periodically to create
|
52
|
-
a graph or alert for your system. For easy creation of munin graphs and alert withe this framework, see
|
53
|
-
https://github.com/ClarityServices/ruminate
|
data/examples/simple/config.ru
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require '../setup'
|
2
|
-
require './bar_worker'
|
3
|
-
require './baz_worker'
|
4
|
-
require './publisher'
|
5
|
-
|
6
|
-
# If we're not starting up a standalone publisher, then start up a manager
|
7
|
-
if ENV['RACK_ENV'] != 'publisher'
|
8
|
-
manager = Qwirk[$adapter_key].create_manager(:name => 'Worker', :persist_file => 'qwirk_persist.yml')
|
9
|
-
at_exit { manager.stop }
|
10
|
-
end
|
11
|
-
if ENV['RACK_ENV'] != 'worker'
|
12
|
-
Rumx::Bean.root.bean_add_child(:Publisher, Publisher.new($adapter_key))
|
13
|
-
end
|
14
|
-
run Rumx::Server
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'rumx'
|
2
|
-
require 'qwirk'
|
3
|
-
|
4
|
-
class Publisher
|
5
|
-
include Rumx::Bean
|
6
|
-
|
7
|
-
bean_attr_accessor :bar_count, :integer, 'Number of Bar messages sent'
|
8
|
-
bean_attr_accessor :baz_count, :integer, 'Number of Baz messages sent'
|
9
|
-
|
10
|
-
bean_operation :send_bar, :void, 'Send messages to the Bar worker', [
|
11
|
-
[ :count, :integer, 'Count of messages', 10 ],
|
12
|
-
[ :message, :string, 'String portion of the message to send', 'Message for Bar' ],
|
13
|
-
[ :sleep_time, :float, 'Time to sleep between messages', 0.2 ]
|
14
|
-
]
|
15
|
-
|
16
|
-
bean_operation :send_baz, :void, 'Send messages to the Baz worker', [
|
17
|
-
[ :count, :integer, 'Count of messages', 5 ],
|
18
|
-
[ :message, :string, 'String portion of the message to send', 'Message for Baz' ],
|
19
|
-
[ :sleep_time, :float, 'Time to sleep between messages', 0.5 ]
|
20
|
-
]
|
21
|
-
|
22
|
-
def initialize(adapter_key)
|
23
|
-
@bar_publisher = Qwirk[adapter_key].create_publisher(:queue_name => 'Bar', :marshal => :bson)
|
24
|
-
@baz_publisher = Qwirk[adapter_key].create_publisher(:queue_name => 'Baz', :marshal => :string)
|
25
|
-
|
26
|
-
@bar_count = 0
|
27
|
-
@baz_count = 0
|
28
|
-
end
|
29
|
-
|
30
|
-
def send_bar(count, message, sleep_time)
|
31
|
-
count.times do
|
32
|
-
@bar_count += 1
|
33
|
-
obj = {'count' => @bar_count, 'message' => message}
|
34
|
-
puts "Publishing to Bar object: #{obj.inspect}"
|
35
|
-
@bar_publisher.publish(obj)
|
36
|
-
sleep sleep_time
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def send_baz(count, message, sleep_time)
|
41
|
-
count.times do
|
42
|
-
@baz_count += 1
|
43
|
-
obj = "#{@baz_count}: #{message}"
|
44
|
-
puts "Publishing to Baz object: #{obj}"
|
45
|
-
@baz_publisher.publish(obj)
|
46
|
-
sleep sleep_time
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
Binary file
|
Binary file
|
Binary file
|
data/examples/task/README
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
Step 0
|
2
|
-
# Follow the directions for configuring configuring a JMS or InMem adapter located in examples/README
|
3
|
-
|
4
|
-
Step 1
|
5
|
-
# Start up the application
|
6
|
-
rm -f qwirk_persist.yml
|
7
|
-
rackup -p 4567
|
8
|
-
|
9
|
-
Step 2
|
10
|
-
# Browse to http://localhost:4567
|
11
|
-
# Open up the tree to Worker => Bar => Attributes and click on Attributes
|
12
|
-
# Change max_count to 100, idle_worker_timeout to 10, and sleep_time to 5 and click Update.
|
13
|
-
|
14
|
-
Step 3
|
15
|
-
# Open the tree to Publisher => Operations => send_bar and click on send_bar
|
16
|
-
# Set count to 100 and sleep_time to 0.2 and click Execute.
|
17
|
-
# Click back on Worker => Bar => Attributes and continue clicking every few seconds. You
|
18
|
-
should see the count of workers top out at around 25 (5 published messages/sec * 5 secs/worker)
|
19
|
-
and then 10 seconds after all 100 messages have been read it will drop back down to 1.
|
20
|
-
|
21
|
-
Step 4
|
22
|
-
# cntl-c the rackup process and start it back up. It should come back with
|
23
|
-
the workers and the config values that have been configured via the browser.
|
24
|
-
|
25
|
-
|
26
|
-
Things to try:
|
27
|
-
|
28
|
-
|
29
|
-
Expanding / Contracting workers
|
30
|
-
|
31
|
-
Note that after you set a max_count and before you publish, the count of workers will be
|
32
|
-
1 as their is just a single worker waiting for data on the queue. Once you publish messages,
|
33
|
-
the count of workers will grow as needed to handle the message volume up to max_count.
|
34
|
-
|
35
|
-
If you set a value for idle_worker_timeout then the count of workers will go down when there
|
36
|
-
is no work to be done. Set a timeout and refresh the attributes to see this in action.
|
37
|
-
|
38
|
-
|
39
|
-
Monitoring your workers
|
40
|
-
|
41
|
-
Browse to http://localhost:4567/Worker/Bar/timer/attributes.json?reset=true
|
42
|
-
|
43
|
-
Publish some messages (possibly modifying the worker's sleep times first) and browse to that address again.
|
44
|
-
|
45
|
-
If you use a monitoring tool such as munin, nagios, hyperic, etc., you could poll this url periodically to create
|
46
|
-
a graph or alert for your system. For easy creation of munin graphs and alert withe this framework, see
|
47
|
-
https://github.com/ClarityServices/ruminate
|
data/examples/task/config.ru
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require '../setup'
|
2
|
-
require './foo_worker'
|
3
|
-
require './publisher'
|
4
|
-
require './task'
|
5
|
-
|
6
|
-
# If we're not starting up a standalone publisher, then start up a manager
|
7
|
-
if ENV['RACK_ENV'] != 'publisher'
|
8
|
-
manager = Qwirk[$adapter_key].create_manager(:name => 'Worker', :persist_file => 'qwirk_persist.yml')
|
9
|
-
at_exit { manager.stop }
|
10
|
-
end
|
11
|
-
if ENV['RACK_ENV'] != 'worker'
|
12
|
-
Rumx::Bean.root.bean_add_child(:Publisher, Publisher.new($adapter_key))
|
13
|
-
end
|
14
|
-
run Rumx::Server
|
data/examples/task/foo_worker.rb
DELETED
data/examples/task/messages.out
DELETED
@@ -1,1000 +0,0 @@
|
|
1
|
-
M0001
|
2
|
-
M0002
|
3
|
-
M0003
|
4
|
-
M0004
|
5
|
-
M0005
|
6
|
-
M0006
|
7
|
-
M0007
|
8
|
-
M0008
|
9
|
-
M0009
|
10
|
-
M0010
|
11
|
-
M0011
|
12
|
-
M0012
|
13
|
-
M0013
|
14
|
-
M0014
|
15
|
-
M0015
|
16
|
-
M0016
|
17
|
-
M0017
|
18
|
-
M0018
|
19
|
-
M0019
|
20
|
-
M0020
|
21
|
-
M0021
|
22
|
-
M0022
|
23
|
-
M0023
|
24
|
-
M0024
|
25
|
-
M0025
|
26
|
-
M0026
|
27
|
-
M0027
|
28
|
-
M0028
|
29
|
-
M0029
|
30
|
-
M0030
|
31
|
-
M0031
|
32
|
-
M0032
|
33
|
-
M0033
|
34
|
-
M0034
|
35
|
-
M0035
|
36
|
-
M0036
|
37
|
-
M0037
|
38
|
-
M0038
|
39
|
-
M0039
|
40
|
-
M0040
|
41
|
-
M0041
|
42
|
-
M0042
|
43
|
-
M0043
|
44
|
-
M0044
|
45
|
-
M0045
|
46
|
-
M0046
|
47
|
-
M0047
|
48
|
-
M0048
|
49
|
-
M0049
|
50
|
-
M0050
|
51
|
-
M0051
|
52
|
-
M0052
|
53
|
-
M0053
|
54
|
-
M0054
|
55
|
-
M0055
|
56
|
-
M0056
|
57
|
-
M0057
|
58
|
-
M0058
|
59
|
-
M0059
|
60
|
-
M0060
|
61
|
-
M0061
|
62
|
-
M0062
|
63
|
-
M0063
|
64
|
-
M0064
|
65
|
-
M0065
|
66
|
-
M0066
|
67
|
-
M0067
|
68
|
-
M0068
|
69
|
-
M0069
|
70
|
-
M0070
|
71
|
-
M0071
|
72
|
-
M0072
|
73
|
-
M0073
|
74
|
-
M0074
|
75
|
-
M0075
|
76
|
-
M0076
|
77
|
-
M0077
|
78
|
-
M0078
|
79
|
-
M0079
|
80
|
-
M0080
|
81
|
-
M0081
|
82
|
-
M0082
|
83
|
-
M0083
|
84
|
-
M0084
|
85
|
-
M0085
|
86
|
-
M0086
|
87
|
-
M0087
|
88
|
-
M0088
|
89
|
-
M0089
|
90
|
-
M0090
|
91
|
-
M0091
|
92
|
-
M0092
|
93
|
-
M0093
|
94
|
-
M0094
|
95
|
-
M0095
|
96
|
-
M0096
|
97
|
-
M0097
|
98
|
-
M0098
|
99
|
-
M0100
|
100
|
-
M0099
|
101
|
-
M0101
|
102
|
-
M0102
|
103
|
-
M0103
|
104
|
-
M0104
|
105
|
-
M0106
|
106
|
-
M0105
|
107
|
-
M0107
|
108
|
-
M0108
|
109
|
-
M0109
|
110
|
-
M0110
|
111
|
-
M0111
|
112
|
-
M0112
|
113
|
-
M0113
|
114
|
-
M0114
|
115
|
-
M0115
|
116
|
-
M0116
|
117
|
-
M0117
|
118
|
-
M0118
|
119
|
-
M0119
|
120
|
-
M0120
|
121
|
-
M0121
|
122
|
-
M0122
|
123
|
-
M0123
|
124
|
-
M0124
|
125
|
-
M0125
|
126
|
-
M0126
|
127
|
-
M0127
|
128
|
-
M0128
|
129
|
-
M0129
|
130
|
-
M0130
|
131
|
-
M0131
|
132
|
-
M0132
|
133
|
-
M0133
|
134
|
-
M0134
|
135
|
-
M0135
|
136
|
-
M0136
|
137
|
-
M0137
|
138
|
-
M0138
|
139
|
-
M0139
|
140
|
-
M0140
|
141
|
-
M0141
|
142
|
-
M0142
|
143
|
-
M0143
|
144
|
-
M0144
|
145
|
-
M0145
|
146
|
-
M0146
|
147
|
-
M0147
|
148
|
-
M0148
|
149
|
-
M0149
|
150
|
-
M0150
|
151
|
-
M0151
|
152
|
-
M0152
|
153
|
-
M0154
|
154
|
-
M0153
|
155
|
-
M0155
|
156
|
-
M0157
|
157
|
-
M0156
|
158
|
-
M0158
|
159
|
-
M0160
|
160
|
-
M0159
|
161
|
-
M0161
|
162
|
-
M0163
|
163
|
-
M0162
|
164
|
-
M0164
|
165
|
-
M0166
|
166
|
-
M0165
|
167
|
-
M0167
|
168
|
-
M0169
|
169
|
-
M0168
|
170
|
-
M0170
|
171
|
-
M0171
|
172
|
-
M0172
|
173
|
-
M0173
|
174
|
-
M0174
|
175
|
-
M0175
|
176
|
-
M0176
|
177
|
-
M0177
|
178
|
-
M0178
|
179
|
-
M0179
|
180
|
-
M0181
|
181
|
-
M0180
|
182
|
-
M0182
|
183
|
-
M0183
|
184
|
-
M0184
|
185
|
-
M0185
|
186
|
-
M0186
|
187
|
-
M0187
|
188
|
-
M0188
|
189
|
-
M0190
|
190
|
-
M0189
|
191
|
-
M0191
|
192
|
-
M0192
|
193
|
-
M0193
|
194
|
-
M0194
|
195
|
-
M0196
|
196
|
-
M0195
|
197
|
-
M0197
|
198
|
-
M0198
|
199
|
-
M0199
|
200
|
-
M0200
|
201
|
-
M0202
|
202
|
-
M0201
|
203
|
-
M0203
|
204
|
-
M0204
|
205
|
-
M0205
|
206
|
-
M0206
|
207
|
-
M0208
|
208
|
-
M0207
|
209
|
-
M0209
|
210
|
-
M0210
|
211
|
-
M0211
|
212
|
-
M0212
|
213
|
-
M0214
|
214
|
-
M0213
|
215
|
-
M0215
|
216
|
-
M0216
|
217
|
-
M0217
|
218
|
-
M0218
|
219
|
-
M0220
|
220
|
-
M0219
|
221
|
-
M0221
|
222
|
-
M0222
|
223
|
-
M0223
|
224
|
-
M0224
|
225
|
-
M0225
|
226
|
-
M0226
|
227
|
-
M0227
|
228
|
-
M0228
|
229
|
-
M0229
|
230
|
-
M0230
|
231
|
-
M0231
|
232
|
-
M0232
|
233
|
-
M0233
|
234
|
-
M0234
|
235
|
-
M0235
|
236
|
-
M0236
|
237
|
-
M0237
|
238
|
-
M0238
|
239
|
-
M0239
|
240
|
-
M0240
|
241
|
-
M0241
|
242
|
-
M0243
|
243
|
-
M0242
|
244
|
-
M0244
|
245
|
-
M0245
|
246
|
-
M0247
|
247
|
-
M0246
|
248
|
-
M0248
|
249
|
-
M0249
|
250
|
-
M0250
|
251
|
-
M0251
|
252
|
-
M0252
|
253
|
-
M0253
|
254
|
-
M0254
|
255
|
-
M0255
|
256
|
-
M0256
|
257
|
-
M0257
|
258
|
-
M0258
|
259
|
-
M0259
|
260
|
-
M0260
|
261
|
-
M0261
|
262
|
-
M0263
|
263
|
-
M0262
|
264
|
-
M0264
|
265
|
-
M0265
|
266
|
-
M0266
|
267
|
-
M0267
|
268
|
-
M0268
|
269
|
-
M0269
|
270
|
-
M0270
|
271
|
-
M0271
|
272
|
-
M0272
|
273
|
-
M0273
|
274
|
-
M0274
|
275
|
-
M0275
|
276
|
-
M0276
|
277
|
-
M0277
|
278
|
-
M0278
|
279
|
-
M0279
|
280
|
-
M0280
|
281
|
-
M0281
|
282
|
-
M0282
|
283
|
-
M0283
|
284
|
-
M0284
|
285
|
-
M0285
|
286
|
-
M0286
|
287
|
-
M0287
|
288
|
-
M0288
|
289
|
-
M0289
|
290
|
-
M0290
|
291
|
-
M0291
|
292
|
-
M0292
|
293
|
-
M0293
|
294
|
-
M0294
|
295
|
-
M0295
|
296
|
-
M0296
|
297
|
-
M0297
|
298
|
-
M0298
|
299
|
-
M0299
|
300
|
-
M0300
|
301
|
-
M0301
|
302
|
-
M0302
|
303
|
-
M0303
|
304
|
-
M0304
|
305
|
-
M0305
|
306
|
-
M0306
|
307
|
-
M0307
|
308
|
-
M0308
|
309
|
-
M0309
|
310
|
-
M0310
|
311
|
-
M0311
|
312
|
-
M0312
|
313
|
-
M0313
|
314
|
-
M0314
|
315
|
-
M0315
|
316
|
-
M0316
|
317
|
-
M0317
|
318
|
-
M0318
|
319
|
-
M0319
|
320
|
-
M0320
|
321
|
-
M0321
|
322
|
-
M0322
|
323
|
-
M0323
|
324
|
-
M0324
|
325
|
-
M0325
|
326
|
-
M0326
|
327
|
-
M0327
|
328
|
-
M0328
|
329
|
-
M0329
|
330
|
-
M0330
|
331
|
-
M0331
|
332
|
-
M0332
|
333
|
-
M0333
|
334
|
-
M0334
|
335
|
-
M0335
|
336
|
-
M0336
|
337
|
-
M0337
|
338
|
-
M0338
|
339
|
-
M0339
|
340
|
-
M0340
|
341
|
-
M0341
|
342
|
-
M0342
|
343
|
-
M0343
|
344
|
-
M0344
|
345
|
-
M0345
|
346
|
-
M0346
|
347
|
-
M0348
|
348
|
-
M0347
|
349
|
-
M0349
|
350
|
-
M0350
|
351
|
-
M0351
|
352
|
-
M0352
|
353
|
-
M0353
|
354
|
-
M0354
|
355
|
-
M0356
|
356
|
-
M0355
|
357
|
-
M0357
|
358
|
-
M0358
|
359
|
-
M0359
|
360
|
-
M0360
|
361
|
-
M0361
|
362
|
-
M0362
|
363
|
-
M0363
|
364
|
-
M0364
|
365
|
-
M0365
|
366
|
-
M0366
|
367
|
-
M0367
|
368
|
-
M0368
|
369
|
-
M0369
|
370
|
-
M0370
|
371
|
-
M0371
|
372
|
-
M0372
|
373
|
-
M0373
|
374
|
-
M0374
|
375
|
-
M0376
|
376
|
-
M0375
|
377
|
-
M0377
|
378
|
-
M0378
|
379
|
-
M0379
|
380
|
-
M0380
|
381
|
-
M0381
|
382
|
-
M0382
|
383
|
-
M0384
|
384
|
-
M0383
|
385
|
-
M0385
|
386
|
-
M0386
|
387
|
-
M0387
|
388
|
-
M0388
|
389
|
-
M0389
|
390
|
-
M0390
|
391
|
-
M0392
|
392
|
-
M0391
|
393
|
-
M0393
|
394
|
-
M0394
|
395
|
-
M0395
|
396
|
-
M0396
|
397
|
-
M0397
|
398
|
-
M0398
|
399
|
-
M0399
|
400
|
-
M0400
|
401
|
-
M0401
|
402
|
-
M0402
|
403
|
-
M0403
|
404
|
-
M0404
|
405
|
-
M0405
|
406
|
-
M0406
|
407
|
-
M0407
|
408
|
-
M0408
|
409
|
-
M0409
|
410
|
-
M0410
|
411
|
-
M0411
|
412
|
-
M0412
|
413
|
-
M0413
|
414
|
-
M0414
|
415
|
-
M0415
|
416
|
-
M0416
|
417
|
-
M0417
|
418
|
-
M0418
|
419
|
-
M0420
|
420
|
-
M0419
|
421
|
-
M0421
|
422
|
-
M0422
|
423
|
-
M0423
|
424
|
-
M0424
|
425
|
-
M0425
|
426
|
-
M0426
|
427
|
-
M0427
|
428
|
-
M0428
|
429
|
-
M0429
|
430
|
-
M0430
|
431
|
-
M0431
|
432
|
-
M0432
|
433
|
-
M0433
|
434
|
-
M0434
|
435
|
-
M0436
|
436
|
-
M0435
|
437
|
-
M0437
|
438
|
-
M0438
|
439
|
-
M0439
|
440
|
-
M0440
|
441
|
-
M0441
|
442
|
-
M0442
|
443
|
-
M0443
|
444
|
-
M0444
|
445
|
-
M0445
|
446
|
-
M0446
|
447
|
-
M0447
|
448
|
-
M0448
|
449
|
-
M0449
|
450
|
-
M0450
|
451
|
-
M0451
|
452
|
-
M0452
|
453
|
-
M0453
|
454
|
-
M0454
|
455
|
-
M0455
|
456
|
-
M0457
|
457
|
-
M0456
|
458
|
-
M0458
|
459
|
-
M0459
|
460
|
-
M0460
|
461
|
-
M0461
|
462
|
-
M0462
|
463
|
-
M0463
|
464
|
-
M0464
|
465
|
-
M0465
|
466
|
-
M0467
|
467
|
-
M0466
|
468
|
-
M0468
|
469
|
-
M0469
|
470
|
-
M0470
|
471
|
-
M0471
|
472
|
-
M0472
|
473
|
-
M0473
|
474
|
-
M0474
|
475
|
-
M0475
|
476
|
-
M0476
|
477
|
-
M0477
|
478
|
-
M0478
|
479
|
-
M0479
|
480
|
-
M0480
|
481
|
-
M0481
|
482
|
-
M0483
|
483
|
-
M0482
|
484
|
-
M0484
|
485
|
-
M0485
|
486
|
-
M0486
|
487
|
-
M0487
|
488
|
-
M0488
|
489
|
-
M0489
|
490
|
-
M0490
|
491
|
-
M0491
|
492
|
-
M0493
|
493
|
-
M0492
|
494
|
-
M0495
|
495
|
-
M0494
|
496
|
-
M0496
|
497
|
-
M0497
|
498
|
-
M0498
|
499
|
-
M0499
|
500
|
-
M0500
|
501
|
-
M0501
|
502
|
-
M0502
|
503
|
-
M0503
|
504
|
-
M0505
|
505
|
-
M0504
|
506
|
-
M0506
|
507
|
-
M0508
|
508
|
-
M0507
|
509
|
-
M0509
|
510
|
-
M0510
|
511
|
-
M0511
|
512
|
-
M0512
|
513
|
-
M0513
|
514
|
-
M0515
|
515
|
-
M0514
|
516
|
-
M0516
|
517
|
-
M0517
|
518
|
-
M0518
|
519
|
-
M0519
|
520
|
-
M0520
|
521
|
-
M0521
|
522
|
-
M0522
|
523
|
-
M0523
|
524
|
-
M0525
|
525
|
-
M0524
|
526
|
-
M0526
|
527
|
-
M0527
|
528
|
-
M0528
|
529
|
-
M0529
|
530
|
-
M0530
|
531
|
-
M0531
|
532
|
-
M0533
|
533
|
-
M0532
|
534
|
-
M0534
|
535
|
-
M0535
|
536
|
-
M0536
|
537
|
-
M0537
|
538
|
-
M0538
|
539
|
-
M0539
|
540
|
-
M0540
|
541
|
-
M0541
|
542
|
-
M0542
|
543
|
-
M0543
|
544
|
-
M0544
|
545
|
-
M0545
|
546
|
-
M0546
|
547
|
-
M0548
|
548
|
-
M0547
|
549
|
-
M0549
|
550
|
-
M0550
|
551
|
-
M0551
|
552
|
-
M0552
|
553
|
-
M0553
|
554
|
-
M0554
|
555
|
-
M0555
|
556
|
-
M0556
|
557
|
-
M0557
|
558
|
-
M0558
|
559
|
-
M0559
|
560
|
-
M0560
|
561
|
-
M0562
|
562
|
-
M0563
|
563
|
-
M0561
|
564
|
-
M0564
|
565
|
-
M0565
|
566
|
-
M0567
|
567
|
-
M0566
|
568
|
-
M0568
|
569
|
-
M0569
|
570
|
-
M0570
|
571
|
-
M0571
|
572
|
-
M0572
|
573
|
-
M0573
|
574
|
-
M0575
|
575
|
-
M0574
|
576
|
-
M0576
|
577
|
-
M0578
|
578
|
-
M0577
|
579
|
-
M0579
|
580
|
-
M0580
|
581
|
-
M0581
|
582
|
-
M0582
|
583
|
-
M0583
|
584
|
-
M0584
|
585
|
-
M0585
|
586
|
-
M0586
|
587
|
-
M0588
|
588
|
-
M0587
|
589
|
-
M0589
|
590
|
-
M0590
|
591
|
-
M0591
|
592
|
-
M0592
|
593
|
-
M0593
|
594
|
-
M0594
|
595
|
-
M0595
|
596
|
-
M0596
|
597
|
-
M0598
|
598
|
-
M0597
|
599
|
-
M0599
|
600
|
-
M0600
|
601
|
-
M0601
|
602
|
-
M0602
|
603
|
-
M0603
|
604
|
-
M0604
|
605
|
-
M0605
|
606
|
-
M0606
|
607
|
-
M0607
|
608
|
-
M0608
|
609
|
-
M0609
|
610
|
-
M0610
|
611
|
-
M0611
|
612
|
-
M0612
|
613
|
-
M0613
|
614
|
-
M0614
|
615
|
-
M0615
|
616
|
-
M0616
|
617
|
-
M0617
|
618
|
-
M0618
|
619
|
-
M0619
|
620
|
-
M0620
|
621
|
-
M0621
|
622
|
-
M0622
|
623
|
-
M0623
|
624
|
-
M0624
|
625
|
-
M0625
|
626
|
-
M0626
|
627
|
-
M0627
|
628
|
-
M0628
|
629
|
-
M0629
|
630
|
-
M0630
|
631
|
-
M0631
|
632
|
-
M0632
|
633
|
-
M0633
|
634
|
-
M0634
|
635
|
-
M0635
|
636
|
-
M0636
|
637
|
-
M0637
|
638
|
-
M0638
|
639
|
-
M0639
|
640
|
-
M0640
|
641
|
-
M0641
|
642
|
-
M0642
|
643
|
-
M0643
|
644
|
-
M0644
|
645
|
-
M0645
|
646
|
-
M0646
|
647
|
-
M0647
|
648
|
-
M0648
|
649
|
-
M0649
|
650
|
-
M0650
|
651
|
-
M0651
|
652
|
-
M0652
|
653
|
-
M0653
|
654
|
-
M0654
|
655
|
-
M0655
|
656
|
-
M0656
|
657
|
-
M0657
|
658
|
-
M0658
|
659
|
-
M0659
|
660
|
-
M0660
|
661
|
-
M0661
|
662
|
-
M0662
|
663
|
-
M0663
|
664
|
-
M0664
|
665
|
-
M0665
|
666
|
-
M0666
|
667
|
-
M0668
|
668
|
-
M0667
|
669
|
-
M0669
|
670
|
-
M0670
|
671
|
-
M0671
|
672
|
-
M0672
|
673
|
-
M0673
|
674
|
-
M0674
|
675
|
-
M0675
|
676
|
-
M0676
|
677
|
-
M0677
|
678
|
-
M0678
|
679
|
-
M0679
|
680
|
-
M0680
|
681
|
-
M0681
|
682
|
-
M0682
|
683
|
-
M0683
|
684
|
-
M0685
|
685
|
-
M0684
|
686
|
-
M0686
|
687
|
-
M0688
|
688
|
-
M0687
|
689
|
-
M0689
|
690
|
-
M0690
|
691
|
-
M0691
|
692
|
-
M0692
|
693
|
-
M0693
|
694
|
-
M0694
|
695
|
-
M0695
|
696
|
-
M0696
|
697
|
-
M0697
|
698
|
-
M0698
|
699
|
-
M0699
|
700
|
-
M0700
|
701
|
-
M0701
|
702
|
-
M0703
|
703
|
-
M0702
|
704
|
-
M0704
|
705
|
-
M0705
|
706
|
-
M0707
|
707
|
-
M0708
|
708
|
-
M0706
|
709
|
-
M0709
|
710
|
-
M0710
|
711
|
-
M0711
|
712
|
-
M0712
|
713
|
-
M0713
|
714
|
-
M0714
|
715
|
-
M0715
|
716
|
-
M0716
|
717
|
-
M0717
|
718
|
-
M0718
|
719
|
-
M0719
|
720
|
-
M0720
|
721
|
-
M0721
|
722
|
-
M0722
|
723
|
-
M0723
|
724
|
-
M0724
|
725
|
-
M0725
|
726
|
-
M0726
|
727
|
-
M0728
|
728
|
-
M0727
|
729
|
-
M0729
|
730
|
-
M0730
|
731
|
-
M0731
|
732
|
-
M0733
|
733
|
-
M0732
|
734
|
-
M0734
|
735
|
-
M0735
|
736
|
-
M0736
|
737
|
-
M0737
|
738
|
-
M0738
|
739
|
-
M0739
|
740
|
-
M0740
|
741
|
-
M0741
|
742
|
-
M0742
|
743
|
-
M0743
|
744
|
-
M0744
|
745
|
-
M0746
|
746
|
-
M0745
|
747
|
-
M0747
|
748
|
-
M0749
|
749
|
-
M0748
|
750
|
-
M0750
|
751
|
-
M0752
|
752
|
-
M0751
|
753
|
-
M0753
|
754
|
-
M0754
|
755
|
-
M0755
|
756
|
-
M0756
|
757
|
-
M0757
|
758
|
-
M0758
|
759
|
-
M0759
|
760
|
-
M0760
|
761
|
-
M0761
|
762
|
-
M0762
|
763
|
-
M0763
|
764
|
-
M0764
|
765
|
-
M0765
|
766
|
-
M0766
|
767
|
-
M0767
|
768
|
-
M0768
|
769
|
-
M0769
|
770
|
-
M0770
|
771
|
-
M0771
|
772
|
-
M0772
|
773
|
-
M0773
|
774
|
-
M0774
|
775
|
-
M0775
|
776
|
-
M0776
|
777
|
-
M0777
|
778
|
-
M0779
|
779
|
-
M0778
|
780
|
-
M0780
|
781
|
-
M0781
|
782
|
-
M0782
|
783
|
-
M0784
|
784
|
-
M0783
|
785
|
-
M0785
|
786
|
-
M0786
|
787
|
-
M0787
|
788
|
-
M0788
|
789
|
-
M0790
|
790
|
-
M0789
|
791
|
-
M0791
|
792
|
-
M0792
|
793
|
-
M0793
|
794
|
-
M0794
|
795
|
-
M0795
|
796
|
-
M0797
|
797
|
-
M0796
|
798
|
-
M0798
|
799
|
-
M0799
|
800
|
-
M0800
|
801
|
-
M0801
|
802
|
-
M0802
|
803
|
-
M0803
|
804
|
-
M0804
|
805
|
-
M0805
|
806
|
-
M0806
|
807
|
-
M0807
|
808
|
-
M0808
|
809
|
-
M0809
|
810
|
-
M0810
|
811
|
-
M0811
|
812
|
-
M0812
|
813
|
-
M0814
|
814
|
-
M0813
|
815
|
-
M0816
|
816
|
-
M0815
|
817
|
-
M0817
|
818
|
-
M0818
|
819
|
-
M0820
|
820
|
-
M0821
|
821
|
-
M0819
|
822
|
-
M0822
|
823
|
-
M0823
|
824
|
-
M0824
|
825
|
-
M0826
|
826
|
-
M0825
|
827
|
-
M0827
|
828
|
-
M0828
|
829
|
-
M0829
|
830
|
-
M0830
|
831
|
-
M0831
|
832
|
-
M0832
|
833
|
-
M0834
|
834
|
-
M0833
|
835
|
-
M0835
|
836
|
-
M0836
|
837
|
-
M0838
|
838
|
-
M0837
|
839
|
-
M0840
|
840
|
-
M0839
|
841
|
-
M0841
|
842
|
-
M0842
|
843
|
-
M0843
|
844
|
-
M0844
|
845
|
-
M0845
|
846
|
-
M0846
|
847
|
-
M0847
|
848
|
-
M0848
|
849
|
-
M0849
|
850
|
-
M0850
|
851
|
-
M0851
|
852
|
-
M0852
|
853
|
-
M0853
|
854
|
-
M0854
|
855
|
-
M0855
|
856
|
-
M0856
|
857
|
-
M0857
|
858
|
-
M0858
|
859
|
-
M0859
|
860
|
-
M0860
|
861
|
-
M0861
|
862
|
-
M0862
|
863
|
-
M0863
|
864
|
-
M0864
|
865
|
-
M0865
|
866
|
-
M0866
|
867
|
-
M0867
|
868
|
-
M0868
|
869
|
-
M0869
|
870
|
-
M0870
|
871
|
-
M0871
|
872
|
-
M0872
|
873
|
-
M0873
|
874
|
-
M0874
|
875
|
-
M0875
|
876
|
-
M0876
|
877
|
-
M0877
|
878
|
-
M0878
|
879
|
-
M0879
|
880
|
-
M0880
|
881
|
-
M0881
|
882
|
-
M0882
|
883
|
-
M0883
|
884
|
-
M0884
|
885
|
-
M0885
|
886
|
-
M0886
|
887
|
-
M0887
|
888
|
-
M0889
|
889
|
-
M0888
|
890
|
-
M0890
|
891
|
-
M0891
|
892
|
-
M0892
|
893
|
-
M0893
|
894
|
-
M0895
|
895
|
-
M0894
|
896
|
-
M0896
|
897
|
-
M0897
|
898
|
-
M0898
|
899
|
-
M0899
|
900
|
-
M0900
|
901
|
-
M0901
|
902
|
-
M0902
|
903
|
-
M0903
|
904
|
-
M0904
|
905
|
-
M0905
|
906
|
-
M0906
|
907
|
-
M0907
|
908
|
-
M0908
|
909
|
-
M0909
|
910
|
-
M0910
|
911
|
-
M0911
|
912
|
-
M0912
|
913
|
-
M0913
|
914
|
-
M0914
|
915
|
-
M0915
|
916
|
-
M0916
|
917
|
-
M0917
|
918
|
-
M0918
|
919
|
-
M0919
|
920
|
-
M0920
|
921
|
-
M0921
|
922
|
-
M0922
|
923
|
-
M0923
|
924
|
-
M0924
|
925
|
-
M0925
|
926
|
-
M0926
|
927
|
-
M0927
|
928
|
-
M0928
|
929
|
-
M0929
|
930
|
-
M0931
|
931
|
-
M0930
|
932
|
-
M0932
|
933
|
-
M0933
|
934
|
-
M0934
|
935
|
-
M0935
|
936
|
-
M0936
|
937
|
-
M0937
|
938
|
-
M0938
|
939
|
-
M0940
|
940
|
-
M0939
|
941
|
-
M0941
|
942
|
-
M0943
|
943
|
-
M0942
|
944
|
-
M0944
|
945
|
-
M0945
|
946
|
-
M0946
|
947
|
-
M0947
|
948
|
-
M0948
|
949
|
-
M0949
|
950
|
-
M0950
|
951
|
-
M0951
|
952
|
-
M0952
|
953
|
-
M0953
|
954
|
-
M0955
|
955
|
-
M0956
|
956
|
-
M0954
|
957
|
-
M0957
|
958
|
-
M0958
|
959
|
-
M0959
|
960
|
-
M0960
|
961
|
-
M0962
|
962
|
-
M0961
|
963
|
-
M0963
|
964
|
-
M0964
|
965
|
-
M0965
|
966
|
-
M0966
|
967
|
-
M0968
|
968
|
-
M0967
|
969
|
-
M0969
|
970
|
-
M0970
|
971
|
-
M0971
|
972
|
-
M0973
|
973
|
-
M0972
|
974
|
-
M0974
|
975
|
-
M0975
|
976
|
-
M0976
|
977
|
-
M0977
|
978
|
-
M0978
|
979
|
-
M0979
|
980
|
-
M0980
|
981
|
-
M0981
|
982
|
-
M0983
|
983
|
-
M0982
|
984
|
-
M0984
|
985
|
-
M0985
|
986
|
-
M0986
|
987
|
-
M0987
|
988
|
-
M0988
|
989
|
-
M0989
|
990
|
-
M0990
|
991
|
-
M0991
|
992
|
-
M0992
|
993
|
-
M0994
|
994
|
-
M0993
|
995
|
-
M0995
|
996
|
-
M0996
|
997
|
-
M0997
|
998
|
-
M0998
|
999
|
-
M0999
|
1000
|
-
M1000
|