digital object identifier: 10.4108/icst.simutools2009.5580
TRANSCRIPT
�� ��������� ��� �� ����������� � ������� ��������
���� ������������� ���� �
�� �������� ����� �����������
����� ����������� ������������������������ �
����� ��� ���������� ���� �
�� �������� ����� �����������
����� ����������� ����������������������� �
����� � �� �������������� ���� �
�� �������� ����� �����������
����� ����������� ����������������������
��� �
������ ������������ � ������������������ ���������� �
������ �������������������
���� ���������������� ���� �
�� �������� ����� �����������
����� ����������� ������������������������� �
��������
�� ������� �� ������� �� ������ ��� �������� �� �� ���
����� �� � ����� ��� ���� � �� � ��� �� �������� ����
� � ��������� ��� ���������������� ��� ���� � ������ ��
��� ��� ��� ��� ���������� ��� �� � ������� ����� ���
�� �� ���������� �� ������ � ����� ������ ���������
��� �������������� ���������� ���������� ��� ��� �������
�� ������� ����� ��� ������ �� � ����� ����� � �!���� ��
��� �� �� ������� � �� ��������� "���� �� ��� �� ���
������ �� ������ �� � ����� ���� ��� �������� �� �������
���� �� �� ������ �������� ��� �� ��� ��� � �� �� ��������
#����$������ �� �� ������� ���� � � �� ��� �� �������� ���
��� ����� ������� �� �����$��� ����� ��� �� ������� �����
%� �!�������� ���� �� ���� �� ����� ��� � ������ �������
�� �!����� ��� ��� ��� � ���� �� ����� ����� �� ��� ������
������
����� � ��� ������ ���� �����
#�&�' (��������������� ��� ��������)* "������ +���
���,���������� ���� �����- .�/�0 (����� ��� � �������)*
+������ +����� +�����,������������- "�&�& (����� �� �
�������)* "���� 1���� ��� 1����$���,����� ����
�������
"������ ������� 2 ����� �������� ��� 3�� �������� +��
����� ����
�� ������������4�� ����� ��������� ������� �� ��� ����������� ������
��� �� � ������ �� � �� �� ������� ������ ����� ��� ��� ���
���������� � ��� �� �� �� ��� ������ �� �� �� �� �� ��� ���� ���������� �� �������� ��� �� ���� ����� ��� �������� � ������ ���� ��� �� ��������� ��� ���� �� ��������� ��� � �� � ��������� ��� ����� �� �� ���� ����� �� �� ��� � �� �� ���� ��������� ����������� � ��� �� ������� �� � ���������� � ����� �������� ����� ����������������� ����� ������ !����� "##$� %���� ���&����� � "##$ �&�� $'()$*+)$'$$),-)-�
��� ����� �� ������� � ����� �������� � ���� ���������
� � ����������� ������� .� ���� � ���������� �� ��� �� ����
����� ������������� ��� ��� ��� �� ������� ��� �������� 5�!�
��� �� ������� �� ���� ����� ��� ��� ��� ����� �� �������
��� �� ��� ����� %� �� �!������ �� �� ������� � ����� ������
��� �� ����� �� ���� ����� ��� ��� �� ��� ����� �� ������
�� ����� ��� ��$��� ��� �� ��������� ����� ��� $����
�������� � �� ������� �� ��� ������� 6�#�� ����� ������
�� �����7 ��� ��� ������ �������� �� ��� ����� � �����
�������� ��� ��� �� ��� �� ��� �� ������� � �� ���- �� ���
$����� ��� � �������� � �� �� ������� ����� ��� ��� ����
��� � � ��$����� ��� � ����� ��� � � $���� �� ����� �
�� ��������� � �� ���������� �� �� ��$�����8� ������� ��
��� � ��������� ��� �� ����� � ������� � �� ��$������
1�� �� ������� �� ���� � ����� ��� ��� � �� �� ���� ��� ���
� �� �������� �������� ��� �� ���� � ������ �� ��� �� ��
� ����� ������� ������� �� ���� ��� ���� 4��� ��� ��������
�� �� � ������ �� �� ������ ��� ������� ���������� � ��
���� � ������ �� ��� �� � ���� � ��� �� �� ����������� �� ��
��� �� � ��!����� +������ � � ����� �� ����������� �� ��
�������� ��� ��� �� ���� � ����� � �� ��� ���� ��������
���� �� ����� ��� �������� �� �� ��� �� � ���� ������� �� �
�������� ���� � �� ���� �� ����� ���������� �� ���� � ����
�� �� ������ �� �!�������� ������� �� ������� ������
����� �� ����� �� �� � ����� ������ ������� ��������� �����
�� ������ ��� ������ ���� ��� �� � ������ �� �� ������������
.� �� ������ �� ������� �� ������� �� ������ ��� ����
����� �� �� ������� �� � ����� ��� ���� .� ��������� �� ���
#�3 1���� (9') ��� ���� ��� ��� � � ��������� ��� �������
��������� ���� 1���� ��� ��� �������� � � �� ��� �� �������
�� ��� ���������� ��� �� � ������� ����� �� �� ��� ��
���� �� ���������� �� ������ � ����� ������ ��������
��� 2�� ��� ������� �� ������� ����� �� �� ��� �� ���
�� �� � ����� ����� �!���� �� ��� �� �� ������� � �� �������
��� "���� �� ��� �� ��� ������ �� ������ �� � �����
���� ��� �������� �� ���������� �� �� ������ �������� ���
�� ��� ��� � �� �� �������� .� ��������� ��� ��� � �$�����
�� �� �������� ������� ���� �������� �� ��� ��� � �!�
���� �� ��� �� � �� ������ � ����� ������ � ��!��� ��
����������� �� �� ��� ��� %� �� �������� �!������ �� �� �
�� ������ � ��� ��������� ��� �� �� �� � ����� ������ ����
���� �� ���� � ����� ����� ���� ��� �� ������� 1�� �!����
Digital Object Identifier: 10.4108/ICST.SIMUTOOLS2009.5580 http://dx.doi.org/10.4108/ICST.SIMUTOOLS2009.5580
����� ������ �� � ����� �� ��� �� ������ ��� ��� �������
� ������ �� �������� �� �� �� ��� ���
+� ���� ���������� ��� ������ ������ �� � ���� �������� ���
�� ������ ��� ����� �� ������� ��:�� ��� �� ������� ��� ��
� ������ ;���� (/� 90� 9<) �� � ���� �� ��� �� ����� ������
������� ��� ;���� (9� 99� 9&� 9=� 9/) �� � �� ������ ���� ������
���� ��� �� ������� �� � ����� �������� #������� �� ����
����������� �� ����� ��� �������� � ��������� �� ��������
��� �� ��� �� � ����� �� �� ���� ��$�� ������� � �������
�� ��� �� �� ����� �� ��� �� � ������ >��� �� ������� ����
����� � ��� ��� ��� ���� (9?)� �� ��� ��� ���������� ��� �
� ������� ��� �� �������� ���� � � �� ��������� ��� ��
�������� ���� � ������ �� ��� ���� %��� �� ��� ��� ��
�������� ������ �� ������ � ����� �� ����������� �� ��
��� ��� @� ���� �������� �� ������� ��� ����� �� ������ ����
��� ���� �������� �>. ���� #�3 1����� ���� ������ ��
� ����� ������ ���������� +������ �� ��� ��� �� ���� �����
��� ��� ������� ���������� ����� ��� ����������� ��������
������ ���� � ������ �!����� ��� ��� �� �� � �������� �!�
������� � ���� ������� �� ������ � ��������� �� ���
������ �� ��� ���� % ���� ������ �������� �� �� �� ������
�� ��� ������� �� ������ ����� �� ���� ������ ���������
��� ��� �� � �� � +���� /�
� �!�"��!� �� �"!�#�$ �!�%����&
���'��!����! ��� !(�)*#!%� ������ ������� ������ �� ������ ���� 6�� ����� �����
��������7 �� ������ ��������� ������ � ��� ��� �� ������
1���� �� � ����� ������ ��� �� ������� �� � ������� ������
% ����� � � � �������� 5�� ������� �� � �� �� A�������B�
.� ��� ����������� �� ������� ��� ��� �� ��� �� �� � �������
��� �������� �� ���� �� ��� �� � �������� �� �� � ����� ���
����� �� � ����� ����� ���� � �!���� �� �������� 5�� �
������� �� ������� �� �� ������� �!������ �� ������
�� 67 ���� ������ � �!����� �� ��� �� �� � ����� ������ 67
���� ��� ������ � �!���� �� ������� � ������ �� ��� �� ��
� ����� ������ ��� 67 � ��� � ����� ���� � ������� �� ���� ��
��� ������ ��� �!����� � ��� �������� �!����� �� �������
��� ������ �� ������ �� �������� ��� � ���� ���� ������
>���� �� ��������� � �� ������� �!������ ����� � ��
�������� ��� ���� � ����� ����� ������ ���� � � ��� �� ��
� �� ��� ���
%� �� �!����� �� � ������� �!����� �� � ��� �� �� �� � ���
��� ������� �� ������� � ������ �� ���� �������������� � �����
����� �� ����� � �� 9 ��� � AC��� ��� D����B ��� �� 6C�D
��� �� � ����7 �� ��� ��� � ��� �������� ��� �� ��� �����
����� �� ����� � �� &� 1�� ��� �� ���� �� ��� ���������
A%B ��� A@B� ���� ��� ��� �������� ��� �# ����� ��� ��� ���
��� ������ ������ ���� 1�� ��� �� ���� ���� �� ���! ������� ��
����� �������� ���� �� ��� ������ ����� � ���� �������
���� ����� �� � ��� � ��$����� �� � �� �� ��������� �� ����
�� ��� ���� �� �� ��� ����� ���� �� ���! �� ������ ��
� �� �������� ��� ������ �� ���������� ����� .� �� ��$�����
��� � ����� � �������� A@B� ��� �� ��� �� :�� ����� ��
����� ���� �������� A@B ��� ��� ��� � �� ��$������ .� ��
��$����� ��� � ����� ���� � �������� A%B� ���� ����� ��
�� ����� � �� �������� ��� ����� ������ ��� �� ��� �� ���
��� �� ����� ���� �������� A%B� �������� �� ��� � �
��� ����� ������ ��� ��� ��� ��� �� �������� ��� � �� ���
$������ .� �� ���� �� �������� ��� � �������� � ��������
A@B ����������� ������ � �� ��� ����� ���� �� ��$�����
���� ��� �� ��� �� :�� ������ �� ��$����� �� ������ � ���
xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
Internet
overlay node
overlay link
������ �� ����� � ������ �����������
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Video Repository A (for PC)
Video Repository B(for Mobile)
video repository index����������� ���
�� ����������
���� ������������������
�
���� ����������
�����������
�������
������ ��
��� ����������� ��������
����������������
������������� ���
��� �������� ����
���������������
���������������
������ ��
������� �� �
������� �� �
������ ��
����
� ��
����
�� �� �
�����������
�������
������
������� �� �
������� �� �
��� ������ ��
������ ��
������ ��
�����
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
������� �� �
������ !� ����� � ������� �" ���� #$%���� ��� ��&���' #%��(
�������() ����� � �������� ���� ����� ����� ������* �����
�� ������ � ���"�� �� ��� �+�� �� ������� ������
���������� ��������
���� ������� ��������
.� �� �!������ �� ������ �� �� ���! ��� �� ���������
��� ������ �� ������� � ����� ����� ��� ���� ������� �������
���� �� ��� ���� ���� ������� �� ���� ��������� %����� ����
���� � �� ���� ��������� ��� ����� ��� ������� �� �������
��� �� ��� ���� � ������� �������� .� ���� � ������� ���
������� � ������� �!����� �� �� C�D ��� �� ��� �� �� ����
����* ��� �� � ����� ���� �� ��� �� �� ��� �� ������ ���
������ � ��$��� �� �������� ���� � ��$������ 1�� ��$��� �
��� ��������� � �� � ����� ���� �� ������ �� ���!� ����
� �������� ���� �� ����� �� ���� �� � �� ��������� %��
������ � �� ������ ��� �� �� � ����� ����� �� ����� ������
��� A%B �� A@B ���� �� ��� ��������� �� ����� � ����������
1�� ���� ������������ ����� � ��� ���� � �� � ����� ����
�� ���� �� �� ��$��� ���� � ��� ����� ����������� �� ���
$������ .� �� �!������ ���� ���� �� �� �������� �����������
� � ������ �� �� ��� ���
.� ��� ��� ��� ���� (9?)� �� �� � �������� � ����� ��� ����
���� � ����� ��� ��� �� ������ �������� ��������� ��������
������ ��$����� �!������ �� ������� � �� �� ��������� 6���
�������7� .� ��������� �� �������� ������� � ����� ��� ��� ���
�� ������ �� ��� ���� ������ �� ��������1������ ���� ��
���� �������� �� ������� � ��� � ������� ���������� ��
�� ��� ���� .� �� ������ ����� �� �� ����� �� ��� �� �� ��
Digital Object Identifier: 10.4108/ICST.SIMUTOOLS2009.5580 http://dx.doi.org/10.4108/ICST.SIMUTOOLS2009.5580
p1
2<x, y>
p2 p3
p4 p5
<z> <w>
x=z /\ y=w
2
2<"a", "b">3<"a", "c">
t
<"a"><"b"><"c">
p1 p2 p3
p4 p5
<x@z, y, z>
t
<x@z, y, z>
2<x, y> <z> <w>
2<"a", "b"><"a", "c"> <"b">
x=z /\ y=w
<"aa", "c", "a">
2
6�7 @����� ���� �� �� 6�7 %��� ���� �� ��
������ ,� �" ���� �� -����� ��./� ����� ��
������ ��� ��� �������� �� �� ������� �� � ����� ��� ����
1�� ��� ����� �� ���� � ������� ������� � ����� ��� ���
�� ���� ������ ��� � ������ �� ����������� �� �� ��� ���
� ���� ������� �� �������
+� )��!#��, �"!�#�$ �!�"��!�.� �� ����� �� ������� �� ��������1������ ��� 6���1�
���7 ('� =) ����� ���� ��� ���� � ����� ��� ��� ��� �� ���5�
������� �� ����� �������� � ��� ��� ��� ���� (9?) � ��� �
� ������� ����� �� � � �� ��� ��� 1�� ��� �������� � ��
����� � ����� �� �� ������
+�� *�� ���-����� � �� ��.� �� ����� �� ���� �� ��� ��� ���� �� ���1����� ���1����
��� �!����� ��� ��� ����� ����� �� � ����� ��� �� ������
�� ������� ��� ������ �� ���� ������ �� ��� �� #�������
��� 3� 6#�37 (<) � � ����� ������ �� ��� �� �� ����� ��
�� �������� 1���� ������ �� � ������ ������� ������ ������
��� ����� ��� ��� ������ 6���� �� #�3 1���� (9')7 � �������
���� ��� ������� ����� ��� ������� ������� ������ (&)� ����
������� �������� (E� 0)� ������ ������ ��� �� �� (<� 9E)�
.� ��� ���� � ����� 6������ �� � �����7 ��� � ������ 6���
���� �� � ��������7 ��� �������� ��� 6�� ����� ���7 ��� �
���� ������ ���� % ����� ��� � ������ ��� �� �������� �� �
������ ���� ������ �� ��� 6������ �� �� �����7� 1����� 6������
�� ����� ���7 � ������ �������� �� ������ ��� �� �� ������
��� �!����� 6A����B � �� ��� �� ���������7 �� � ������
��� ��������������� ����� ������ �� ������ �������� � ��
�������
�������� � ���1����� ���� ������ ��� � ������ � ����
����� � ��� � ����� 6������ �� � ����7 �� �� ���� �� �����������
����� �� � � ��� � ������ �� � � ������ �� ������� ���
���� ��� ������ ��� � � �� ������� �������� � ����� �������
� ����� �� ����� � ��� �� � ������ ���� �� ���� � � ������ ��
����� � � ��� �� ������ % �� �� ����� ���� ��� �� �������
� �� ����� �� �� ������ ��� � ������ � � ������ �� ��������
��� �� �� ���� D���� ��� � ������ � ��� �� �������� �� �
������ ������� �� ������� ���� �� ������ �� ������ ���� �� ��
������ � �������� #������ ��� ������ ���� ������� ����
������� % ������ � ��� ��� ��� ���� �!�� �� ��������� �� �
���� ��� ����� �� � ��� �� �������� �� ����� � ������� ��
�� ��������� �� ������ �� ������ �� �� %���� ���� �����
�� ��� ���� ������ � � � ����� �� ��� � ����� �� �� ���� ��
������������� ����� ��� � � ��� � ����� ��� �� � � ������� ��
������ ������� �� �� ������ ��� ������ �� � �� ������� � ��
<keys>P5: video repository index
<retrieve(keys, index)>
<"news, baseball, Oct. 1">
<B>
<INDEX>
repo=="B"
<A> repo=="A"
repo=="null"
P7: video repository B (for mobile)
P6: video repository A (for PC)
P2
P4 : service output
T1:search video index
T4: obtain video from repository B
T5: notify no video is found
T3: register transcoded video to repository B
<index><index>
<repo,id>
<b><b>
<a><a>
<id, transcode(retrieve(id,a))>
<repo,id>
<repo,id>
<retrieve(id,b)><b>
<add(id,v,b)>
<id,v>
<null>
T2: obtain video from repository A and transcode
P1: service input
P3
<v>
������ 0� %�� ������� �� ��� ! ���� ��� ������ � -�./��
/ &�� �� �" ���� �� �� �� ��� ��� � &�� ��� %�� �������
������ ;��� F�����
�9 ��� �� ��� 3��� 9
�' ��� �� ����
�= ��� �������� ���! 3��� &
�& ���! ������ �����
�/ ��� �������� % 3��� E
�E �������� ������ �����
�0 ��� �������� @ 3��� '
�� �������� 1��������� � � ����� �� ����� �� �� ������ �� ��
������ ���� ���� � ��� �������� �� �� ������� ��� �����
�������� � �� ���� ��� ������� 3�� ��� �� ����� ��� ��������
��� �� �� �� ���� ������ �� ��
.� �� E6�7� �� ������ ��� � � ���� ��� ���� ��� ��� �� ��������� �� ����� � ��� � ��� �������� 1�� ����� �� �� �����
���� ������� �� � ��� �� ����� ��� ��������� � ����� �� ���
�� ���� �� ������ �� 4���� ���� �� �������� ��������� ���
��A�B�A�B� � �� 6A B ��� AB ��� ����� ����7� �A�B� ��� �A�B� � ����� �� ����� ���� ����� � �� ����� �� ������ �� �� 6� �� � � � �7� � ��� ��� ���� ���� ���� 3�� �� ����� ����
����� ��� ���������� �� ����� ��� � �� �������� ������� %���
�� ���� �� �� ��� ����� ��� �������� � �� ���� ������ �� ���
�� ���� ���� ���� ������ 1�� ������ ���� �� ���� �� � �
����� � �� E6�7� 3�� �� AGB � � ���������� ������ ��
�� ������ 1��� � ���� �� ����� A B� AB ��� A B � ��������
� ��� 1�� ��� ����� A9B� ���� ����� �� ��� ��� �� ��� ����
���� ������ � ���� � �� �������� �������
+� �.�/�� ��. � ���� �� �� �� ' ����� �� �!����� ���1��� ���� �������� �� C�D
��� �� �� �� &� ������ ��� ���� � �������� ��� �� ������
����� ������� ������ 6�� ��� ���������7� ��� ������� ����
�� ���� ���� � ���� ����� �� ���������� .� �� '� ������
�� ��� �� ��� �������� � �������� �� ��� ��� ���� ������ ��� �� ��$����� ������ ���� ������ �� ��� �� ��� ��������� �������� ��������� A%B ��� A@B� ������ ���� ��� ������ ����� � ��� �������� � ���� �� ������ �� ���� ��� �� �� ���!
Digital Object Identifier: 10.4108/ICST.SIMUTOOLS2009.5580 http://dx.doi.org/10.4108/ICST.SIMUTOOLS2009.5580
P6: videorepositoryA (for PC)P5: video
repositoryindex
<keys>
<retrieve(keys, index)>
<"news, baseball, Oct. 1">
repo=="A"
repo=="null"
P2
P4 : service output
<repo,id>
<repo,id>
<repo,id>
P1: service input
Node 1 (P1,P4) Node 2 (P2,P5) Node 3 (P6, P3) Node 4 (P7)
<keys>
T1.α12
T1.start
T1.α12
<keys>T1.read
T1.commit
<keys,index>
<keys,index>
T5.α21
T5.start
T5.read
<null>
T5.α21
<null>
T2.α23
T2.read
T2.commit
<A>
<a>
<repo,id>
T3.α31
<id,v>
T3.read
repo=="B"
T4.α24
T4.start
<id>
T2.α23
T2.start
<index>
<index>
<INDEX>
<null>
<v>
T3.α31
<v>
<v>
T3.commit<v>
<a>
<repo,id,a>
<repo,id,a>
<id, transcode(retrieve(id,a))>
T3.start
<v>
T5.commit
T4.read<id>
T4.β41<id>
T4.α21
<φ>
T4.α21 T3.α34
<id,v>
<null>
<null><b>
<retrieve(id,b)>T4.commit
<id>
P3
P7: videorepository B(for mobile)
T3.α34
T3.read
T3.commit
<b><id,v>
<B>
<add(id,v,b)>
<id,v,b>
<id,v,b>
<id>
T4.α34
T4.read
T4.commit
<b>
<φ>
<b>
T4.β41
<b>
<b>
<b>
������ 1� 2�����&���� %�� ������� �� ��� ! ���� �� �� ��� ��� �� / &�� �
��� ���������� ������ ���� .� ������ �� ��� �� ����� �� ��
��� ���� � ������ � � ����� � �������� � ������ �� �� ��� ��
��� ���� ��� �� ������ � �������� ������������ �� �� �!�
������ �� ���� �������� �� �!������ ������ �� ��� �������� ��� �� �� ��� ������ ��� ������ � ��� �� �� ���� �������1�� ����� ���� �� ������������������ �� �� ��� ���� �� ���������� �� ������ ���� ��������� �� ��� ����� 6�� ����
�� ������������ �7 ������ ���� �������� A%B �� � ��������
���� 1������ �� ���� ��� ������ ����� � � �� ��� ���� ������� ��������� �� ������ �� ������ �� ��� ����� ����
���� �������� A%B � �� ������ ������ 2� ���� �� ��� ������ ������� ��� �!����� � ���������
+�+ */�� �//���� �� �� �.�/�� ����2�� �� �� ������ ������� �� ��� ���������� � � ��������
��� �� ��������� ���� � ����� ������ ����������� %������
����� �� ������� ��� ������� � ��� ��� ��� ���� ���� �����
�� �� ����� ������� �� ���� 1�� �� ��� ��� ����� � ��� ���
��� ����� � ��� ����� ���� ��� ������ � ���� ��� ����
1� ��������� ��� �� ����� � �� � (9?) ��� ��� � ��� ���
������� �� � �� ��� �� �� � ����� ����� ������ �� ���
������ �� �� ������ � �� � ����� ������ 4��� ��� � �����
�� �� ����������� �� � ��� �� � ������� �� �� �������� ��
������� �� �!������ �������� � ���$�������������� ������� ��
�� � ����� ���� �� ���� �������� ����� ������� ����� � �
����������� ��������� %���������� � (9?)� ������ �������
� � �� ��� �� �� � ����� ������ �� ����� �������� �� ������
�� �� � ����� ����� � �������� ���� � � �� �������
������ 1�� ����� ���� �� ������ �� �������� ����� �� ��
� ����� ������ �� ������ �������� ��� �� �!����� ��������
�� ������� � � �� ��� ��� ��� ������� �!������� ���� ����
����� � ��� �� ����� ����� �� �� �������� 1�� ������ ���
����� � (9?) ��� � ������ �������� �� �� ������� ������
1�� ��� �������� � �� ����� �������� �� �������
������ .� ������ ������� � ���� ���� �������� �������
�� ���� �� ����������� �� �� � ����� ����� ��� �� �������
1�� ����� � ������ �� ����������� �� � ������� ��� �� ��
��� �� ���������� � +���� =�
+�0 �� . � � ��� ���� "�� �� �1 ��. ��� ���5� �!���� �� ������� ��� ��� �� � ������� ���
��� �� � � �� ��� ��� 1�� ������� ���� � ���1��� ��������
�� � ��� �� ��� �� �������� ���� �� ������ �� � ����� �����
6������ �� � �� ���� ����7� ��� ����� � ������� ����� ��
�� ��� �� ���� � � �� �� ���1���� �� ����� ����������
���� �� ������ �� ������ H��� ������ ���1��� �����������
� �� ���� �� �������� �� �� � ����� �����
�� ������ �� �� ������ �� � ������ ���� A�����B 6� �
���� � �� ��� ��� ������� ��� � � �� � (9?)7 � �� ���1����
�� �� ������� ����� ����� � ��� � �������� �� ��� ���� 6����
��� ���� � �������7 �� � ������� ���������� ������� ���� ����
� � ���� �� .� � ���� � �� �� ����� A�����B � ���� �� �� ���� �
� ������� ���� �� ��� �� ��� �� ���� ����� A�����B � ���� ��
1���� ������ ��� ������ ������ ���� �� ��� ��� ��� ��� A�����
������B � �������� ��� ��� (<)� 3�� �� � ����� �� ����
���������� ������ ��� ���� �� ������ � �� �!����� ��
������ �� �� �� ��� ��� .� �� �������� ������� ���������
�� ������ ��� ���������� �� ���� ������ �� ��� ����� �����
%���� � � ������� ����� �� � � �� ��� ��� �� ������� � ���
��� �� ������ ������ �� �� ���� � ����� ��� ������� �������
�����
�� = ����� � ������� ����� �� �� ��� �� �� �� ' ��
���� � ����� ����� ����� �� �� ����� ������ ���� � 1���� 9�
1�� ������ ��� ����� � (&I) ��� � ������� �������� �� �� �����
���� 4���� �� ��� �� � ����� �!����� �� ���������� ���
����� ��� ���������� ��� ��� ��� � � �� ��� �� � � �������
�� ������ ��� ��� ���� ������� � ���� �� � �������� ����
���1���� �� ���������� ������� .� �� �������� ��� �� ��
� ����� ����� �� ��� ��� ������ �� � ������ � ������� �� ��
���� �� ���� �� �!����� �� �� ������ 6���� � ���� � ������
�� ������ ��� �� �� ������7� .� �� =� ���� � � ������� ���� ������ ���� �� �� ���� ��� ����� ��� ����� �� �� ���
����� �� �� �� ���� �� � ���� 6� ��$��� �� ��������7� ����9 ������������ ����� �� ���� � ���� & ���� ��� ����� ������� �� ���������� ����� A������B 6 � ���� ���� ��
��� ����� 9 ��� & ������ �� ���������� ����� A������B7�
%��������� � ���� &� �� ���� �� ���� ��� ���! � � ����
Digital Object Identifier: 10.4108/ICST.SIMUTOOLS2009.5580 http://dx.doi.org/10.4108/ICST.SIMUTOOLS2009.5580
��� �� ����� �������������� ������ � �������� �� � ���� ������� �� � ���� &� 1�� ������� �� ���� �� �� ��� ����� ����������� � ����� �� ��� �� �� � ����� �� �� ���� ���� �� ������ J����B � ��� ��� �� ���� ��� ���� �������� �� ������� �� �� ��� ��� �������� �������������� ������� 1��
������ ��� ���� �� �� ���1���� �� �� = ������������� ��
��� �� �� �� '�
0� ���!,���!� !�"����)!��2�� ������� �� ������ ����� ������ �� �� �������� �����
���� ���������- 67 ��������� ����� � �������� �� ��� ��
������� ������ �� ��� ���� 67 ������ � ��������� �� � ��
��� �� �� ������� ��� �� �������� ��� ������� �� A�����B
�������� �� ������ ��� ���� ����������� �� �� ��� ���� 67 ����
�� � ��� ���� �� ������� ������� ��� �� ��������� ����
� ���1���� ��� �!����� �� ��� ��� �� � ����� ������ ��� 6 7
������ � ������� �� ������ � ����� ����� ��� ��� �����
0�� � ��� ���� ��. � ,������ ��� ��������� 2 3�
1�� ������� ��� �� �������� ���� �� �� ��� � ��� �� ���
�� ���� #�3 1����� ����� �������� � #�3 1���� KDF ������
��� � �������� ��� �� �� � �� ��� �� ������ ���� ��� ����
����������� KDF ������ ������� ��� �� �������� D���� ��� ��
�������� ���� ���� ���� �������� �� � ����� ������ ���� ��
�� ������ �� � ����� ����� ��� �� ����� �������� .� ���������
��� �����
1�� ��� �� �������� ��� �� � ����� ��� �� �������� ���
� �� � �� �������� ������ ���� ��������� ���� �� � � ��
�������� �� �������� �� ������� ���������� �� � ����� ������
����� �� ������ �� ����������� �� �� ��� ��� 2�����
�� ����������� � ���� ���� �� ����� ����� ��������� 6.F�7
����� � �� (9?) ��� ���� �� ������� ������� ��� ���
���� � ������ �� ��� #�FHK � ��� � �� ������� �������
��� ���� � ����� ������ ���� �� ���� �� �� ��� �����������
� ���� �� �� ��������� ��:�� � �������� @���� �� �� ��� ��
����� ������ ����� �� ������������ ������� ��� �� �������
�� � ��� ��� �� �� �� ������� ��� �� ��������� 4��� ���
��� � ������ ��������� �� ������ ����� �������� ���� ��
������ ��� �� � ���� ������������ 1� ���� ���� ������������
�� ��� �� ���� �������� ���� �� � ����� �������8 �����
���� �� �� � ����� ��� ���� 6����� ��� �������7 ��� �� � ���
��� ���� ���� 6#�> ����7 ���� ��� ������� ������ � ����� �
�� ����� 1���� �� ��� ���� � ��� ���� �� ������� �����
��� ��� � ������ �� ������� �� �!����� �� �� ��� ��� ��
������ ������ ���� �� ���� ������ � �� ���� ��� ��� �����
���� �� �� ���� � +���� =�
0� ��. � !4����1�� ��������� �� �� ��� � �!����� ������ � ����� � ��
/� 1�� ������ � ������� �� �� ��������� �� ��� �� ������
��� ������� � ���������� ��� � �� �� � ����� ������ 1�� ����
������ ������ �� �� �������� �� �� ������� ��� ���� ����
���� #�3 ���� ������ ��� � ����� ��������� �� ������� ��
�!������ �� ��� ����� �� � ����� ����� ��� �� �!����� ��
������� �������� � �� �������� ��� ��� �� �� ���������
1�� ��� �� ������ ��� ��� ��� ����� �� ��� �������� ��� ���
������ ��� ��� ��� ���� ��� � ����� ������� ������ �� ������
�� �!������ �� �������� ��� ������ ����� ��� ��� ����
1�� ����� ������� ���� �� ��$���� ���� ����� ������ ��
��������� ���� �������� 1���� ��$���� �� #�3 �������� �
�� � ������������ ���� �� �� ��� ��� 1�� ��$��� � ������
������ �� ����� ���������� 1�� ����� ������� ���� ��$����
CPN Interpreter
ControllerSystem
Controller
Overlay Nodes Node A
Node B
Node C
Commands for Execution
Data Exchange
Service Access Pointrequest
Input / Output Data
SystemInterface
Usersrequest
reply
UserInterface
Data Exchange
Data Exchange
reply
������ 3� �������� �� ������� �"������
SSH ClientSSH Client
Node 3
System Controller
Event MonitorNode MapperMessageProcessor
Node 2
SSH Client
Overlay NodesSCP Client etc.SCP Client etc.SCP Client etc.
I/O Controller
Data Synchronizer
Node 1Command Controller
SSH Client I/O
NodeMaintainer
������ 4� ������ ���������
�� ��������� � �� ������������ ��� ��� �� � ����� ������
%��� �!����� �� ��� ��� �� ����� ������� ���� �� �� ����
�� �� ��� �� ��� ������ ���� � �� ����� ����� 1�� ���� �
��� ��� � �� ���� �� � >;F�
1�� ������ ��������� � ������� �� ����� � �� 0� 1�� ����
������ ������� �� �!����� �� � �� � ����� ����� �� ���� ��
�������� ���� �� #�3 ��������� ���� �� ����� ����� ��
����� �� #�3 �������� ��� ������� �� ������� ��� �� �
�� ��������� %��� ����� �� 6�������7 ������ ������� �����
�� �� ��� �� � �� � ����� ����� �� �!���� ���� �������� 1��
�������� ���� ����� � � ��� � ����� ���� �� ������� �����
���� �� ����� �� ���� ����� � �!���� �� ��� �� �� ��������
�� � ����� ���� �� ���� ������ D������ ��������� ������
�� ����� ��������� ��� �� � ����� ����� � ���� �� �� ���
��������� D���� ��� �� �������� �� � ����� ����� �� � ���1�
�� ��� �� �� �� ����� � ����� ����� � ���� �� � ��� ���
���� H ��� �������� � ��������� ���� �� +����� +4��� 6++47
������� ��� �� ����������� ���������� ��� �� �� �����
��������� � �������� � �� ������� .�2 �� �� ++4 ��������
������ ��� ����� � � ������� ������� �� ���������� ��
������ �������� ������ �� ����� ��������� ��� �� � �����
������ ������ ���� ��� �������� ������� �� ��� ���� ��������
� � ��� � ����� ���� ���� �� +#� �� �� ;+L3# ���������
1�� ����� ��������� ��� �� ����� ������� �� ���������
�� #�3 �������� ��� �� � ����� ������ ���� �� #�3 ����
Digital Object Identifier: 10.4108/ICST.SIMUTOOLS2009.5580 http://dx.doi.org/10.4108/ICST.SIMUTOOLS2009.5580
/ &�� !� ������ ���������5� ���� �� ��� ����� � ����
������� ���� �� ����8� ���� ��
������ ���� ���� � �������� ��$��� � ��������� ���� �� ��� ��� ������ � �������� ��$���
���� ������������ ���� �������� �� �������� �� ����������� ������� �!����������� ������ �!���������� ���� ���� ���� ���� � �����!���� ��� �!���� ��� ���� �!���� ����� ����� ������ � ��������
��� �� �����8 ������ �� ���� �����! $� ���� ��� ��
����� ���� �� �!������� ������� �� ������ � ���� ��� ��
�������� �� ���������� � � ������� ��� �!����� � �� ����
��������� � ����� ������ 4���� �� ��� �� � ��� ����� ��
���� �� ������� � �� ���������� ���� �� ������� �����
���� �� ������� 6���������� �� ������ �� ���� ����7 ���
��$��� ���� �!����� ��� �� �!������ � �� =� ����!!��
�� ���� E ��� � ������ A�� ������������������ ��B �� � ����� ���� 1�� ������ ��������� � ������ � ������� �� ���
���� �� ���� �������� " ��� �� ������ ��� ��� �����������
�!����� �� ��� ���������� +������� �� ��������� �� �����
��� ������ � ����� ����� 6���������� �� ���������� ������7
��� ��$��� � ��������� ������ 1�� � �� ����� ����� �� ��
�!����� �� �� �������� ��� �� ���������� �� ���� ��� ����
��������� �� ����� ����� � �� #�3 ��������� 1�� #�3
��������� ���� �� ���� �� �������� ������ �� �������� ��
����� � �� ���� ������ ��� ���� ������ �� �� ����� ������
���������� ������ �� ������� ����� ��� ���� �� �� ����
����� ���� �� � �� ������ �� ��� �� �� �� � �� ������ �
�������������� #�3 �������� ������� ���� ��� �� ���� ����
����� �� ��� ���� �� ��� �� �� ��� ���� 1�� � ���� � ���
���� �� ������ �������� ��� �� .� ��� ����� �� #�3 ��������
����� � ����� �� �� ����� ���������� �� ������� � �����
�!����� �� ��� ��� �� � ����� ������ ��� ���� ����� � ���� ��
������ ��� ��� ���������� �� ���� �� �� � ����� ������
0�+ �.�/�� ��� ������/ ��� �����5 )��6�2��
1�� � ����� ����� �!���� �� ��������� ���� ���������� �
�� ������� �� ��� ��� ������� ���� ��� �!������� ��� ���
���� ������ �������� � �� �������� � �� �� ����� ����
������� 1���� �������� ��� ���� � 1���� &�
�� ��� �� ���� �� ����� ���������� � �� ���� �� �� ��
� ����� ����� ���� ������� ��� ���� �� � ����� ����� ���
���� ��������� ��$��� �� �� ���� ������� ���� ��� ���
���� �� ��� ����� �� ���� ��$��� �� �� �������� �� �� ����
��� ���������� 4��� ��� � �� ����� �� �������� �� �� ��
���� ��$��� ��� �� ����� ��������� ���� ������ �� ���������
���� ���� �� ��� �����
1� � ������ �� �������� �� �� � ��������� � ������!��
�� ������ �� ������ �� �� � ����� ��� ����� ������ �������
���� �� ��� �� �������� ��������� ����� 4���� �� �����
����� ��� �� ��� ��������� � �� �� �� ��� �� �� �������
���8� �������� � �� � ����� ��� ��������� 1� ������ ��������
��������� �� ���� �� ����� ������� �� ��� �� �!�� ���
������ �� < ����� �� �!����� ����� ���� ��� ����������
��� ����������� � ��������� ���� ���� " � ���� # �� ���������
���� I�&=� I�&= ��� I�=� ������ ����
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Overlay Node A Overlay Node B
comm1
comm2
comm3
Occupancy Ratio comm1, comm2, comm3 = 0.25, 0.25, 0.5
comm1 comm3 comm2comm3
Tx Queue comm1
comm2
comm3
Tx Queue
Tx Queue Rx Queue
Rx Queue
Rx Queue
comm3
comm2
comm1
������ 6� ����� � ��� ������
/ &�� ,� -������ �� ���" �� ����� � ����
3��� .���!
3��� % <I3��� @ 90=3��� # ?II3��� " &II
7� !(*!��)!���# ����$.� ����� � ���� �� ������ �� ���� ��� ������ �� ��� �� �
������� �� ������� ������� �� ���� ��� ����� ��� ��������
�� �� �!����� ��� ��� �� ���� �� ��� ������� ��� ����� �����
�� �� ������� �� ������� ������� ��� ������� � ��� ���
�� ����������� �� � � �� ��� ��� �� ���������� �� ��� ���
� �� ���� �� �!��� ����� � �� � (9?)� .� �� �� �������
�������� �� ��� ��� � ��� ����� � ������� ����� �� � � ��
��� ��� 1���� �� ������ �� ������ ��� �� �� �� � ����� ���
���� ��� � ����� �� �������� ��� �� ��� ������ ���� �������
1�� ������ ������ ��� ��� ���� ��� ��� �� � ��� �� �� ����
������������
%� �� �������� �!������ �� ������� � �� � ����������
�� ��� �� ����� � ��� �� � � ����������� ����� �� ���
� ����$���� D�H�& �� � ��� ����$���� �������� �������
��� � ������$���� D�H�' �� � ��� ������ ������� ����
���� 6 ��?7� %���� �� ������ ���� �������� � �� ���� ���
���� ������ �� 9IID��� F%3� +��� �� �������� �� � ������
�� ������� ������� �� �� � �������� �� �!����� �� �� �
��������� ��� � ���� ������� ��� ��� �� ��� ������������
����������� ���!�� ����� �� �� ���� �� �� � ���� �� �� �!��
���� ��� 6�������� ������ ����� ����� ����� �����������7�
1���� E ����� ���� ���!���
.� �� ��������� �� ��������� �� �� ������� ������� ��
�� ��� ��� ��� �� � ������� ����������� 1�� ������� ���
���� ������� .� �� ��� ������ �� ��� � �� ��� ������ ���
����� ���������� ���� �� �� ��� �������� ���� ��
����������� �� �� ��������� ��� �� ��� �� ��������� � ���
��� ������ ���������� 1�� ��� ��� �� ���������� � ���
���� �� ������ � �� ������ �� �������� �!������� �����
������ .� �� ������ ������ �� ��� �!���� �� ��� ��� �� ��
��������� �� �� � ����� ������ ��� ������ �� �!����� ����
�� ������� ��� ��� ����� �� ��� �!����� �� �� �� ����
���� ������ �� ����������� ���!�� �� � ����� ����� ��� ��
�!����� ����������� 4��� ��� �� ����� � �� ���� �� ����
��� ����� ���� � ��� � ������� � ���� �� ����������
�� � ���� ����������� �� ��������� �� ��������� �����
�� ��������� ���� #����$������ � �� ��� ������ �� �����
��������� �� ��� �� �� ��� �!����� ��� ��������� ����
7�� �� � �/ *8��
Digital Object Identifier: 10.4108/ICST.SIMUTOOLS2009.5580 http://dx.doi.org/10.4108/ICST.SIMUTOOLS2009.5580
P01:
P02:
P03: P04:
P05: P06:
P07: P08: P09:
P10: P11:
T01: Assemble and Analyze
T02: Demultiplex
T03: Decode and Shrink T04: Mixing
T05: Encode T06: Encode T07: Encode
T08: Multiplex T09: Multiplex
������ 7� ����� �� ����� ��� ������� #�� ���� �� ����� �
&��� � ���� 8���� ��� ����������(
/ &�� 0� -� �� ��� ��� � &�� #� ��� ���� � �� ��(
3��� ����� %�������
3��� % �I9� �I&� �IE3��� @ �I'� �I/3��� # �I<� �I?� �993��� " �I=� �I0� �9I
% � �� ��� �� ��� ������ � ����� ����� �� ������� ����
1��������� � ����� � �!���� �� ��� �� ��������� �� �� � ����
�� ����� ���� ������ � ����� ����� �� ����� �� �������� 4���
� ��� � �� ��� �� ������� ������ �� �� �� ������� ���� ��
� ����� ������ ����� � � � ��� ���� �������� ��� �� ���� ��
������ ������ 1��������� �� ��� � �� ����� ����� �������� ��
�� �� ��� ������ �� �� ��� �!������� ����� � ����� �����
��� �� ������� �� �� �������� �� ��� �� .F� ��������
� �� � (9?) ��� �� �������� ��:�� � �������
$��� ��
�������������
�
�
���� � �
��
�
����� % ��� � ����� �� �� �� � ����� ����� ��� �� �� �� ����
����� ������ ���� ��� ��� 6� � ���� � �� �7 � � I�9 ������
�� ��������� ������ �� � 6�� �7 ������� ���� ���� � � ����
� ��� ������� ������ � � ��� �� ��� 1���� �� ��� � �� ���
��� �������� �� ������ �� ������ ������ $��� ���:�� �
�� �������� � �� � (9?)� �� �� ��������� ��� ��� �� ������
������� ������ ����� �������� ���� � � �� � 1���� '�
%��������� � ����� � � ����� �� ������ ��� �� ����� ��
������ ����� �������� �� �!���� �� ��� �� �� �� � ����� ���
���� ���� ��� ������ "���� �� �!����� �� �� ��� ��� ��
� ����� ����� ������ �� � ����� #�> ���� � ������� ���� ������
��� �� � ����� ������ �������� � ���� ��� � ���� ������
%��� �� �!����� �� �� ��� ��� �� ������� �� �!����� ����
�������� ���� �� � ����� ����� ��� ��� ��� � �� ����� ����
������� �� 9I ����� �� ��� ���� ��� �� ����������� �����
1�� ����� ��� �� �� ����� ����� ���� ��� �� ���� ���� ��
/ &�� 1� -� �� ��� ��� � &�� #� ��� ����� �� ��(
3��� ����� %�������
3��� % �I9� �I&3��� @ �IE� �I'� �I=3��� # �I/� �I<� �I?� �993��� " �I0� �9I
������� ��� �!����� ��� �� ������������ �!������� ���� ���
�� ����� ��� ����� �� #�> ���� ��� ������ �������� �� ����
���� � �� ������������ ���
.� �� �!������� �� �������� �� �� �� ��� �� ���� � ��
�� � ����� �� ����� � �� ��$������ ��� &&' ������� 6��� ��
!��!� �� �� 9I7� 1�� �������� �� �� �� ��� �� � �������
�������� �� �� ������ ��� � �� ��� ���� ���� �����
�� �!����� �� �� ��� �� � ����� �� �!����� �� �� ��� ���
+��� � ������ ��� � ������ � ���� � ��� ��� � � ��$����� ��
������� 6�!����� ��� ��� ���������7� .� �� 9I� �� ����� �
�� �� �!����� �� �� ������ �� � ���� ��� ����� ��� �������� �� �!����� �� �� � ��������� ������� ��� ������ ��� ���� @���� �� �� ������ � �� ������ ������ �� �� ������ �� ��� �� �� �!����� ��������
7� ����� *8��F� � ����� �� ����� �� ��$���� �������� ������ �
���� �� ����������� ���!� � �!���� � ������ ������ � � ����
��� �� ��� �&� ����� �� ����������� ���! �� ���� �� D����
� ��� �� '��� �� � I�9 6�����7 ������ �� ������ �� ��� ��
����� � � ������ � ���� � 6�� ���� � ���7 �� �� 6�� ���� �
����7� >��� ���� �������� �� ������� �� �������� �������
��� �������� ������ � ����� �� �� �� ��� �!����� �� �
������
$��� ��
���
�
���
�
�&�'���
����� � � �� �� �� ������ ��� �
���� �� �� ��� ���� � � �!�
���� �� ������ ������ � ����� �� �� ����� �� ��� � � ��
��������� �!����� ��� ���� �� ����� ������ ���� � �� � 1��
��� =�
�� �� � �!����� �� ������ ��� �� ��� �������� � �������
������ �� 99 ����� �� �� ���� ��� �� ������������ ��
����� � �� �� �������� �� � ?? ������� ��� � ���� ��� ����
�� ������ � �� ��� ������ 1���� �� ������ ������ ����
����� ��������� � ������ �� ���������� �� � ����
������������ 4��� ��� ���� ��� ��� ���� �������� � �� 99�
1�� ����� ����� �� �� ������ �� �� � ����� ��� ���� "
��� # � ��� �� �� ������ �� ���� ���� � ���� 1���������
�� � ����� �� ������� �� ���� �� ����������� �� ����
�� ���� � ����� ����� .� �� ��� ��� ������ ������ �� �� �
������ �� ����������� �� ������ �� ������ �� ��� �!�
������� ��� �� �!����� �� �� �������� 4��� ��� �� 99
����� �� �� �� ������� �� ��� ���������� ��� ����� ����
��������� 1��������� � �� ��� ������ �� �� � ���� �� ���
����� ������ �� �������� ��� ��������� ��� �!�����
����
7�+ �8 �� *8��F� (��
��� ����� �� ��� 6�����7 �� ��� �� � ������� ���
6� � � �� �7 ��� �� )��� ����� �� � ����� ��� �������� ����
���� � � ���� �� ���� ��� �� ������ �� �������� � �� ������
Digital Object Identifier: 10.4108/ICST.SIMUTOOLS2009.5580 http://dx.doi.org/10.4108/ICST.SIMUTOOLS2009.5580
�
�
�
�
��
�
�
�
�
�
�
��
�
�
�
��
�
��
� �
�
�
�
�
�
��
��
��
�
�
�
�
�
�
�
Node D
Node B
Node C
Node A
50 1000 [sec]150 200 224
Node A
Node B
Node C
Node D
100 Mbps
CPU Load [%]Network
Load [Mbps]
T01
T03
T02
T04
T08
T05
T07
T06
T09
100 %
100 %
100 %
100 %
100 Mbps
100 Mbps
�
Subtask execution
Data communication
(Upload)
Data communication
(Download)
Process waiting for
execution
Critical path
Data stream
� �
� �
�
50 1000 [sec]150 200 224
������ �9� /���� �� �� �� ��� ������� � ��� ������� �� #� ��� ���� � �� ��(
/ &�� 3� -� �� ��� ��� � &�� #� ��� ����� �� ��(
3��� ����� %�������
3��� % �I<� �I?� �993��� @ �I'� �I/3��� # �I9� �I&� �IE� �I=3��� " �I0� �9I
������ >��� ���� ������ �� �� � ��� �� �������� �������
$��� ��
���
�
���
�
�&�'���
��
�������������
�
�
(����� � ��� �(����� � �
��
)���
� ����� �� ��� �� �� �!����� �� ��� ��������� ���
�� ����� �� ��� � � ��� �������� �!����� ��� ���� ��
� ������ ����� � �� 9&� 1�� �������� �� � <' �������
��� ��� �� ��������� ��� �� �������� ����� ��� �� �����
������ �� ����� ���� � ���� ����������� ��� ���� ���� ��
��� ��� ������ ������ �������� ��� ��
9� �!#��!� %���;������� ���� ��� ���� �������� ��� �������� � �� .����
�� ��� ��� ������� ������� �������� ���� �� �&� ����
���� (9/)� ��� ������� (?� 9I)� ��� ��� �� � ����� (/� 90�
9<) ��� ������ %� ������ �� ������ ������ � ��� ����
.����������� ������� �������� � �� ��������� �� � ���
��� �������� +��� �������� ������� � � ������ ��� �������
������������ ��� ������ �� ������� ������ �������� �� ����
� ���� ���� �� ������ ������� ��� �� ���������� �� �����
� ������� � �������� ��� ��� �� � ����� �������� ������
����� ������� ���������� � ��� ��������� ������� ��
���� � ������� �� ���� �������� � ��� �� ��� ��� ���� ��
������ �� ���������� ������ ���� �������� ��� ��� ����
1� � ������ ���� �� ���� ��������� � � ����� �������� �� �
���� ���������������� ����� ����������� �� � ���� ������
���� (9� 99� 9&� 9=� 9/)�
2 ����� (99) ��� ��� � ������� ������� �� � ����� ���
������ 1�� � � ��������� �� ��� �� ���� ������� � ��������
�� ��� � ������ � ����� ��� ���� �� �!������ �� ���������
��� � �������� ��� ������ ��� ���� �� �������� ��������
�� � ����� ������� ��� �� ������ �� ������� � ��������� ��
�� �� ������� �� ��������� �� �� � ����� �������� %����
%����� (9) ����� � ��������� ������� ��� ��� �� ������
�� � �������� ���� ��� �������� � ��� ��������� ������ �
�!���� ��� ���� +������ ���������� ��� (9&� 9/) ����� �� ���� �
��� �� �������8 ����� � ������� ������� ��� ���� D%#H�
"23 (9=) ����� ������� �� ������ �� � ������ ��� �������� ��
������� ��� ��� �!����� �� �&� ������� �� ������� � ���
��� �������� ��� ����� ������� ��� �����F���
#������� �� �� ��� � ������������ � ��� ����� �� ����
�� ��� ��� �� ��� ��������� ���� � ����� ������ ��������
���� % ��� �� ��� �� ���� � � ��������� ���� ���� � �����
��� �� ������ ��� �� ������� ��� ��� ������ �� ����� ���
�� ���� ����� �� � ����� ������ ���������� 1�� �������
����� �� �� � �� ��� �� �������� � ���������� ��� �� �
���� �� �� �������8 ���� � ���� ������� �������� �������
%���� �� �������� ������ ������ ������ �� ����������� ��
�� ��� �� ���� ���� � �� ��:�� � �������� +� ���� ��:�� �
������� ��� ��� ��� ��� �� ��� ������ �� ��������� �� ����
����� �� ���� ������������ % ����� �� ������� ��� ����
�� �!��� ������ ��� ���� � ��� ����
:� ����#�����
Digital Object Identifier: 10.4108/ICST.SIMUTOOLS2009.5580 http://dx.doi.org/10.4108/ICST.SIMUTOOLS2009.5580
�
��
�
�
�
��
�
�
� �
�
��
�
�
��
�
��
� �
�
�
�
�
��
��
��
�
�
�
�
�
Node D
Node B
Node C
Node A
Node A
Node B
Node C
Node D
100 Mbps100 %
CPU Load [%]
Network Load
[Mbps]
Subtask execution
Data communication
(Upload)
Data communication
(Download)
Process waiting for
execution
Critical path
100 %
100 %
100 %
100 Mbps
100 Mbps
Data stream
T01
T03
T02
T04
T08
T06
T07
T05
T09
� �
� �
�
100 Mbps
25 500 [sec]75 10099
25 500 75 10099
������ ��� /���� �� �� �� ��� ������� � ��� ������� �� #� ��� ����� �� ��(
.� �� ������ �� �� � �������� �� ������� �� ������� �� �
������ ��� �������� �� �� ������� �� � ����� ��� ���� .� ����
������ �� �� � ���� ���1��� ��� ������ ���� ��� ���� ��� ���
��������� � � ��������� ��� ���������������� ���� 1����
�� �� � �������� � ��� ��� ��� �� � ������� ����� �� ��
��� �� ���� �� ���������� �� ������ � ����� ������ �����
������ 2�� ��� ������� �� ������� ��������� ��� �� ��
� ����� ����� �!���� �� ������� ���� �� �� ���������� "���
�� �� ��� �� ��� ������ �� ������ �� � ����� ���� ���
�������� �� ���������� �� �� ������ �������� ��� �� ����
��� ������ � ���� ����������� "� ������� ���� ��� ��
��� �� �������� ��� ��� ��� ������� �� ������������ ������
$��� ����� ��� �� ������� ����� %� �!�������� ���� ����
� ������ �������� �!����� � � ��� 1�� ���� ����������
�� ������ �� ���� ��� ��� ��� ��� ��� � ������� ��������
��� �� � � �� ��� �� ��� ��� ����� ��������� � �� �����
������ �� ���� �� ������ �� � �� � ����� ������ �������
��� % �������� �� �� ���� �� ��������� ������ ��� ��� ��
��������� ���� ������� ������ ���� �� �� ������� ����
#�������� �� ��� ������ �� ������ ��� ��� � �� ������ ���
�������� �� ��� ������� � �!��� �� ������ ��� ��� � ��
����� � ���� ������ ���� �� �&� ������� �� ������ ��������
.� ��������� �� ����� ��� � �� �� �������� �� ��� ��� �� ������
����� � ����� ������� ���� �� �����F���
;� �����%#!�,)!���1�� ���� ��� �������� � ��� �� ;������� ��� "� �������
������� �� A>�$���� +�� �� �������B 6&II<7� 1�� D���� ��
.������ %����� ��� #����������� M�����
<� �!=!�!��!�(9) "� @����� D� #������� F� F$���� ��� D� C���� %�����*
% ����� ������������ � ����� ������� .� !"# $%&'
��� ������ �� ��� (��� !��� "�� ��� #������ )%%&
(���������� ��������� �� ����� *��������� �����
<&N?9� .HHH #������ +����� &II/�
(&) F� %� #������� �� C� H� O�� � ��� 1� ;����� 2� ��
������� �� ������� ��� ��������� ������� .� ��� ��
+,�� (�� *��� �� #���� ���� � -����� �� ����� ���� +../
01�*� &.+2� ����� ==&N=/9� +�������C������ 9??E�
(E) M� �� ������� ��� F� O�������� >��� �������� ��� ���
� � ����� ���� ����� ��� ����������� ����� �� 1#�
��������� .� ��� �� )� 3������� �� �� �� � 4�� ��
*������ ����� ���� � ������5*��� ����� &9N'I� 9???�
(') 4� M� ������ ��� O� F��������� 1�� ������� �� �������
������ �� ����� �� ������������������� .� ��� ��
(�� ���� �� ������ � �� *�� ������ *��������� 01�*�
6%2� ����� 9&EN9'0� 9?0?�
(=) 4� M� ������ ��� O� F��������� +���� ������� ��
������ �� ��� ���� -������� � *������� � ��� ��
9E697*9I?N9E/� 9?<9�
(/) K� ��� O� 3������� ��� @� L�� +������* %� �������
����������� ��� �� �������� ���������� .� ��� ��
(��� (�� ��������� �� 7������������ � ����������
*�������� 07��*�+/2� &II'�
(0) �� 4���� ��� C� ���� % ������ �!������� ��������� ��
�� .+"3 ���� ��� �������� .� ��� �� +)�� (�� *��� ��
#���� ���� � -����� �� ����� ����� ����� 9N&9� 9??9�
(<) O� M������ *������ ����� ���� 8�� *�� ����9 #������
������ � �� �� � 4�� "����� +' 8�� *�� �����
D��������� � 1�������� #������ +������ %� H%1#+
+����� +�������C������ 9??0�
(?) H� O������� "� �������� "� %�������� M� #���� ���
D� F������� +�G��������� ��� ������� �������
��� ��� *�������� �� � ��� � : ������������ E697*0<N<E�
&II9�
Digital Object Identifier: 10.4108/ICST.SIMUTOOLS2009.5580 http://dx.doi.org/10.4108/ICST.SIMUTOOLS2009.5580
�
�
�
�
�
�
�
�
�
�
�
�
��
�
�
��
�
�
��
�
��
�
�
�
�
�
�
Node D
Node B
Node A
Node C
25 500 [sec]75 84
Node C
Node B
Node A
Node D
100 %
T01
T04
T09
T08
�
T02
T03
T05
�
�
�
T06
�T07
�
�
100 %
100 %
100 %
25 500 [sec]75 84
100 Mbps
100 Mbps
100 Mbps
CPU Load [%]Network
Load [Mbps]
�
Critical path
� �
� �
�
Subtaskexecution
Data communication
(Upload)
Data communication
(Download)
Process waiting for
execution
Data stream
������ �!� /���� �� �� �� ��� ������� � ��� ������� �� #� ��� ����� �� ��(
(9I) +� D� F������ #� "� +���� D� ;� +���� ��� C� +� ������
�����G���� ��� ������G����* >��� �������
������� � ����� ��� ����� �������� �������� �
���������� ������� *���������� ;����� �� &II&�
(99) @� F� M� ���� ��� D� ����� 2 �����* % �������
��������� ����������� ��� � ����� ��������
������������ .� ��� ������ �� ��� <����
#*�5(<(�54���(= (���������� ������� *������� �
0������� )%%,29 ��� 1� ���� ����� �� *������� � ��� ��
����� 9E=N9='� &II'�
(9&) @� 1� F��� 1� #����� M� D� 4��������� �� D�����
1� ;������ ��� .� +���� .��������� ������� � � �������
�(;>�� >��� ���� ?�� � E?6=7*0=N?I� "������� &II=�
(9E) M� F� ;�������� ��� D� +���� "������ � ������ �����
�� ����� �� �������� ��� ���� .� ��� �� +6�� (�� *���
�� #���� ���� � -����� �� ����� ���� 01�*� +%.+2� �����
'IIN'9?� 9??/�
(9') %� ;����� F� ������ 4� F������ D� F������� M� P ������
D� +����� D� ����������� +� #��������� ��� O� M������
#�3 1���� ��� ����� �������� ��� �������� ��������
��� ���� .� ��� �� ),�� (�� *��� �� #���� ���� �
-����� �� ����� ����� &IIE�
(9=) %� ;�������� #� O����� +� @��� "� O���� ��� %� C�����
D%#H"23* D��������� ��� ���������� �������
� ������� ��� ������� � ����� �������� .� ��� ������
�� ��� 4���(=5#*� ��������� �� �������� �������
������ � (������������ 0���()%%,� ����� &/0N&<I�
&II'�
(9/) O� +����� L� 1������ ��� +� +������� 2 ����� ��� ��* %�
� ����� ��������� ����� *������� *������ ������
E96&7*'I&N'9&� ������� &II<�
(90) D� ����� @� F� ��� Q� F� � ���* 1������ ���������������
��� ���� ��� �� �������� � ��� �� � ����� �������� .�
��� �� ),�� (�� *��� �� ���������� *�������� �������
0(*�*�)%%,2� &II'�
(9<) "� K� ��� O� 3������� ���� ��� �� ���� � �� � �����
���� ��� �� ���!� ������� .� ��� �� (�� *��� ��
�������� *�������� � ���������� )%%) 0��*�)%%)2�
&II&�
(9?) 4� L�������� O� H�� ���� %� 4������ ��� 1� 4�������
% ������ �������� � ����� ������ ������� ��� ��
� ������ .� ��� �� +@�� #*� (�� 3������� �� ������� �
>������� ������� ������� ��� ������ #��� � "���
0�>���#" )%%@2� ����� =0N/&� &II=�
(&I) 4� L�������� O� H�� ���� �� � @�������� ���
1� 4������� "�� �� ������� ���������� ���� ��� ��
���������� ���� �� ������������������� *�������
�������� !������ =9697*&=<9N&<'� M��� &II0�
Digital Object Identifier: 10.4108/ICST.SIMUTOOLS2009.5580 http://dx.doi.org/10.4108/ICST.SIMUTOOLS2009.5580