JezK
Edit File: autorules.a9666452ab65e9abd4f07a13a0ccd952678e585e4377c4dfc6a6c7698e0dc512.srule
�� ��š � � K � w � � � � � � � � � j � C uuuuL|EL�����EN�p���b��q��L��L��L��L��L��M��M��M��]V\V\V 7T6T6z:Iתw��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�-��F�F�F�B�B�B�B�I֖�F��F��F��F��V����DR�l��l��l��l��\�2��M�<���3��3��3��3��3��3��3��3��3��3Ҷm&S &R"R"R#S#S#SG3@3@3@fT2gO}k}pz}#Yz:P?}R4vE'cT&''i %k >v+i2{;q0{ )f +g$u$$O\4Z0Z0Ze,@6Ze9U#Zp,U#Zp,U#Zp,U#Zp,U#Zp,U#Zp,U#Oe,@6Op,U#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Oe,@j#Zp9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@a(On'@a(On'@a(On'@a(On'@a(On'@6Op9@6Op9@6Op9@6Op9@6Op9@a(On'@a(On'@a(On'@a(On'@a(On'@6Op9@6Op9@6Op9@6Op9@6Op9@a(On'@a(On'@a(On'@a(On'@a(On'@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Qn9^a6Qn'@a(On'@a(On'@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op9@6Op,Uj6Ze9Uj6D{9Kt6D{9Kt6D{9Kt6D{9Kt6D{9Kt6D{9Kt6D{'Ut(Z{'Ut(Z{'Ut(Z{'Ut(Z{'Ut(Z{'Ut(Z{'Ut(Z{'Ua=Zn2Ua=Zn'@a(On'@a(On'@a(On'@a(On'@a(On'@a(On'@a(On'@a(On'@a(On'@a(On'@a(On'@a(On'@a(Z{'Ut(Z{'Ua=Zn2Ua=Zn2Ua=Zn2Ua=Zn2Ua=Zn2Ua=Zn2Ua=Zn2Ua=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp2K=Dp'^(De'Kj(De'Kj(De'Kj(De'Kj(De'Kj(Bc'Ml(Bc'Mj.Be!Mj.Be!Mj.Be!Mj.Be'Kj(De'Kj(De'Kj(De'Kj(De'Kj(De'Kj(De'Kj(De'Kj(De'Kj(De'Kj(De'Kj(De'Kj(De'Kj(De'Kj(DjTkJTkJTkJ>J>J>J>J>J>J>J>J>J>J>JC.C.C.C{S)S)S)>T>T>T>JC.K.K.K{8'��Ĩ[�P;S;S;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[;[