����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.80
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/imh-python/lib/python3.9/site-packages/pygit2/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/imh-python/lib/python3.9/site-packages/pygit2/__pycache__/repository.cpython-39.pyc
a

n�h���@s|ddlmZddlmZddlZddlmZddlZddlmZ	m
Z
ddlmZmZm
Z
ddlmZmZmZdd	lmZdd
lmZmZmZddlmZddlmZmZmZmZdd
lmZddlmZddlmZddlm Z ddl!m!Z!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(ddl)m*Z*m+Z+ddl,m-Z-ddl.m/Z/Gdd�de	�Z0Gdd�d�Z1Gdd�d�Z2Gdd�de0�ZdS) �)�BytesIO��	hexdigitsN)�time�)�
Repository�init_file_backend)�Oid�
GIT_OID_HEXSZ�GIT_OID_MINPREFIXLEN)�GIT_CHECKOUT_SAFE�GIT_CHECKOUT_RECREATE_MISSING�GIT_DIFF_NORMAL)�GIT_FILEMODE_LINK)�GIT_BRANCH_LOCAL�GIT_BRANCH_REMOTE�GIT_BRANCH_ALL)�GIT_REF_SYMBOLIC)�	Reference�Tree�Commit�Blob)�InvalidSpecError)�git_fetch_options)�Config)�check_error)�ffi�C)�Index)�RemoteCollection)�Blame)�to_bytes�StrArray)�	Submodule)�PackBuilderc	sLeZdZ�fdd�Zdd�Zdd�Zdd�Zdhd
d�Zdd
�Zdidd�Z	dd�Z
djdd�Zdkdd�Zdd�Z
dd�Zdd�Zdd�Zed d!��Zed"d#��Zdld$d%�Zd&d'�Zedmd(d)��Zd*d+�Zdnd,d-�Zd.d/�Zdod0d1�Zd2d3�Zd4d5�Zd	d	ded6d7fd8d9�Zd:d;�Z dpd<d=�Z!ed>d?��Z"e#j$e#j%e#j&e#j'd@�Z(e#j)e#j*e#j+e#j,dA�Z-dBdiZ.e#j/e#j0e#j1e#j2e#j3e#j4e#j5e#j6dC�Z7iZ8e9dDdE��Z:e9dFiifdGdH��Z;dIdJ�Z<dFiifdKdL�Z=dFiifdMdN�Z>dqdOdP�Z?drdQdR�Z@edsdSdT��ZAdtdUdV�ZBdudWdX�ZCdvdYdZ�ZDdwd\d]�ZEd^d_�ZFdxd`da�ZGedbdc��ZHddde�ZIdydfdg�ZJ�ZKS)z�BaseRepositorycst�j|i|��|��dS�N)�super�__init__�_common_init��self�args�kwargs��	__class__���/root/rpmbuild/BUILDROOT/imh-python39-modules-3.9.7-92.el8.x86_64/opt/imh-python/lib/python3.9/site-packages/pygit2/repository.pyr(8szBaseRepository.__init__cCsRt|�|_t|�|_t|�|_t�d�}|jdd�t�	|�dd�<|d|_
dS�N�git_repository **r)�BranchesZbranches�
ReferencesZ
referencesr�remotesr�new�_pointer�buffer�_repo)r+Z	repo_cptrr0r0r1r)<s



zBaseRepository._common_initcOs|jj|i|��S)zYread(oid) -> type, data, size

        Read raw object data from the repository.
        )�odb�readr*r0r0r1r<HszBaseRepository.readcOs|jj|i|��S)z�write(type, data) -> Oid

        Write raw object data into the repository. First arg is the object
        type, the second one a buffer with data. Return the Oid of the created
        object.)r;�writer*r0r0r1r=OszBaseRepository.writeNcsH�fdd�}|p|}t��}|dur.|�|�||�|j|d�|jS)aTPack the objects in the odb chosen by the pack_delegate function
        and write .pack and .idx files for them.

        Returns: the number of objects written to the pack

        Parameters:

        path
            The path to which the .pack and .idx files should be written. None will write to the default location.

        pack_delegate
            The method which will provide add the objects to the pack builder. Defaults to all objects.

        n_threads
            The number of threads the PackBuilder will spawn. If set to 0 libgit2 will autodetect the number of CPUs.
        cs�jD]}|�|�qdSr&)r;�add)Zpack_builder�obj�r+r0r1�pack_all_objectsis
z-BaseRepository.pack.<locals>.pack_all_objectsN��path)r$Zset_threadsr=Zwritten_objects_count)r+rCZ
pack_delegateZ	n_threadsrA�builderr0r@r1�packWs
zBaseRepository.packcCs
t|j�Sr&)�iterr;r@r0r0r1�__iter__xszBaseRepository.__iter__TcCs�t�d�}t�dt|��}t�dt|��}|r2dnd}t�||j|||�}	t|	�t�||d�}
t�d�}t�	|tj
�t||jd��4}t�d�}
t�
|
|
j|�}	|�|	�Wd�n1s�0Yt�|
dd	�t�|
j�}	t|	�|
S)
ahAdd a submodule to the index.

        Returns: the submodule that was added.

        Parameters:

        url
            The URL of the submdoule.

        path
            The path within the parent repository to add the submodule

        link
            Should workdir contain a gitlink to the repo in .git/modules vs. repo directly in workdir.
        �git_submodule **�char[]rr�git_submodule_update_options *��optsr3NT)rr7r!rZgit_submodule_add_setupr:rr#�_from_c�!git_submodule_update_init_options�$GIT_SUBMODULE_UPDATE_OPTIONS_VERSIONr�
fetch_optsZgit_submodule_clone�_submrZgit_submodule_add_finalize)r+�urlrC�link�	callbacks�csubZcurl�cpathZgitlink�err�submodule_instancerL�payloadZcrepor0r0r1�
add_submodule{s"


(zBaseRepository.add_submodulecCsBt�d�}t�dt|��}t�||j|�}t|�t�||d�S)z?
        Lookup submodule information by name or path.
        rHrIr)	rr7r!rZgit_submodule_lookupr:rr#rM)r+rCrUrVrWr0r0r1�lookup_submodule�s

zBaseRepository.lookup_submoduleFc
Cs�|dur|��}t�d�}t�|tj�t||jd��J}|r@dnd}|D](}|�|�}t�	|j
||�}	|�|	�qHWd�n1s�0YdS)a�
        Update a submodule. This will clone a missing submodule and checkout
        the subrepository to the commit specified in the index of the
        containing repository. If the submodule repository doesn't contain the
        target commit (e.g. because fetchRecurseSubmodules isn't set), then the
        submodule is fetched using the fetch options supplied in options.
        NrJrKrr)Zlistall_submodulesrr7rrNrOrrPr[Zgit_submodule_updaterQr)
r+Z
submodules�initrTrLrY�i�	submodulerXrWr0r0r1�update_submodules�s

*z BaseRepository.update_submodulescCs|�|�}|dur|S|Sr&��git_object_lookup_prefix)r+�key�default�valuer0r0r1�get�s
zBaseRepository.getcCs|�|�}|durt|��|Sr&)ra�KeyError)r+rbrdr0r0r1�__getitem__�s
zBaseRepository.__getitem__cCs|�|�duSr&r`�r+rbr0r0r1�__contains__�szBaseRepository.__contains__cCs
d|jS)Nzpygit2.Repository(%r)rBr@r0r0r1�__repr__�szBaseRepository.__repr__cCst�dt�|j�||�S)NzUse repo.remotes.create(..))�warnings�warn�DeprecationWarningr6�create)r+�namerRr0r0r1�
create_remote�szBaseRepository.create_remotecCs0t�d�}t�||j�}t|�t�||d�S)z�The configuration file for this repository.

        If a the configuration hasn't been set yet, the default config for
        repository will be returned, including global and system configurations
        (if they are available).
        �
git_config **r)rr7rZgit_repository_configr:rr�from_c�r+ZcconfigrWr0r0r1�config�s
zBaseRepository.configcCs0t�d�}t�||j�}t|�t�||d�S)z�A snapshot for this repositiory's configuration

        This allows reads over multiple values to use the same version
        of the configuration files.
        rqr)rr7rZgit_repository_config_snapshotr:rrrrrsr0r0r1�config_snapshot�s
zBaseRepository.config_snapshotcCsbt|�tup8tdd�|D��o8tt|�ko4tkn}|rP|j||||d�S|j||||d�S)a�Create a new reference "name" which points to an object or to
        another reference.

        Based on the type and value of the target parameter, this method tries
        to guess whether it is a direct or a symbolic reference.

        Keyword arguments:

        force: bool
            If True references will be overridden, otherwise (the default) an
            exception is raised.

        message: str
            Optional message to use for the reflog.

        Examples::

            repo.create_reference('refs/heads/foo', repo.head.target)
            repo.create_reference('refs/tags/foo', 'refs/heads/master')
            repo.create_reference('refs/tags/foo', 'bbb78a9cec580')
        css|]}|tvVqdSr&r)�.0�cr0r0r1�	<genexpr>�z2BaseRepository.create_reference.<locals>.<genexpr>)�message)�typer	�allr�lenr
Zcreate_reference_directZcreate_reference_symbolic)r+ro�target�forcerz�directr0r0r1�create_references�
�
�zBaseRepository.create_referencec	CsFz|�|�}Wn$ttfy2d}|�|�}Yn0|�t�}||fS)a�Convert a reference-like short name "ref-ish" to a valid
        (commit, reference) pair.

        If ref-ish points to a commit, the reference element of the result
        will be None.

        Examples::

            repo.resolve_refish('mybranch')
            repo.resolve_refish('sometag')
            repo.resolve_refish('origin/master')
            repo.resolve_refish('bbb78a9')
        N)Zlookup_reference_dwimrfr�revparse_single�peelr)r+Zrefish�	reference�commitr0r0r1�resolve_refish&s
zBaseRepository.resolve_refishcCs�t�d�}tt�|d��g}ttB|_|r2||_|rVt�dt|��}|�	|�||_
|rxt|�}|�	|�|jd|_
||fS)Nzgit_checkout_options *rrIr)rr7rrZgit_checkout_init_optionsrr
Zcheckout_strategyr!�appendZtarget_directoryr"�array�paths)Zstrategy�	directoryr��copts�refs�
target_dirZstrarrayr0r0r1�_checkout_args_to_optionsAs



z(BaseRepository._checkout_args_to_optionscKs*tjfi|��\}}tt�|j|��dS)zICheckout HEAD

        For arguments, see Repository.checkout().
        N)rr�rrZgit_checkout_headr:)r+r-r�r�r0r0r1�
checkout_head\szBaseRepository.checkout_headcKs8tjfi|��\}}tt�|j|r(|jntj|��dS)znCheckout the given index or the repository's index

        For arguments, see Repository.checkout().
        N)	rr�rrZgit_checkout_indexr:�_indexr�NULL)r+�indexr-r�r�r0r0r1�checkout_indexdszBaseRepository.checkout_indexcKsVtjfi|��\}}t�d�}|jdd�t�|�dd�<tt�|j	|d|��dS)zVCheckout the given treeish

        For arguments, see Repository.checkout().
        �
git_object **Nr)
rr�rr7r8r9rrZgit_checkout_treer:)r+�treeishr-r�r��cptrr0r0r1�
checkout_treels
zBaseRepository.checkout_treecKs�|dur|jfi|��S|dkr0|jfi|��St|t�rF|}|j}n
|�|�}|��j}||}|j|fi|��d|vr�|�	|�dS)a�
        Checkout the given reference using the given strategy, and update the
        HEAD.
        The reference may be a reference name or a Reference object.
        The default strategy is GIT_CHECKOUT_SAFE | GIT_CHECKOUT_RECREATE_MISSING.

        If no reference is given, checkout from the index.

        Parameters:

        refname : str or Reference
            The reference to checkout. After checkout, the current branch will
            be switched to this one.

        strategy : int
            A ``GIT_CHECKOUT_`` value. The default is ``GIT_CHECKOUT_SAFE``.

        directory : str
            Alternative checkout path to workdir.

        paths : list[str]
            A list of files to checkout from the given reference.
            If paths is provided, HEAD will not be set to the reference.

        Examples:

        * To checkout from the HEAD, just pass 'HEAD'::

            >>> checkout('HEAD')

          This is identical to calling checkout_head().
        N�HEADr�)
r�r��
isinstancerro�lookup_reference�resolver~r��set_head)r+Zrefnamer-r��oidr�r0r0r1�checkoutws#


zBaseRepository.checkoutcCsht|t�rJt�d�}|jdd�t�|�dd�<t�|j|�}t	|�dSt�
|jt|��}t	|�dS)z�
        Set HEAD to point to the given target.

        Parameters:

        target
            The new target for HEAD. Can be a string or Oid (to detach).
        �	git_oid *N)r�r	rr7�rawr9rZ git_repository_set_head_detachedr:rZgit_repository_set_headr!)r+r~r�rWr0r0r1r��s


zBaseRepository.set_headcCs�|durdSt|t�s t|t�r,|�|�}nt|t�r>||}z|�t�}WnDty�z|�t�}Wn"ty�t	dt
|���Yn0Yn0|S)Nzunexpected "%s")r��str�bytesr�r	r�r�	Exceptionr�	TypeErrorr{)r+r?r0r0r1Z__whatever_to_tree_or_blob�s
z)BaseRepository.__whatever_to_tree_or_blob�rc	Cs�|�|�}|�|�}gd�}|||g}t|t�rVt|t�rV|j|fitt||����S|durr|durr|jj|�St|t�r�|dur�|r�|j|jg|�R�S|j|�St|t	�r�t|t	�r�|�
|�Std��dS)a�
        Show changes between the working tree and the index or a tree,
        changes between the index and a tree, changes between two trees, or
        changes between two blobs.

        Keyword arguments:

        a
            None, a str (that refers to an Object, see revparse_single()) or a
            Reference object.
            If None, b must be None, too. In this case the working directory is
            compared with the index. Otherwise the referred object is compared to
            'b'.

        b
            None, a str (that refers to an Object, see revparse_single()) or a
            Reference object.
            If None, the working directory is compared to 'a'. (except
            'cached' is True, in which case the index is compared to 'a').
            Otherwise the referred object is compared to 'a'

        cached
            If 'b' is None, by default the working directory is compared to 'a'.
            If 'cached' is set to True, the index/staging area is used for comparing.

        flag
            A combination of GIT_DIFF_* constants. For a list of the constants,
            with a description, see git_diff_option_t in
            https://github.com/libgit2/libgit2/blob/master/include/git2/diff.h

        context_lines
            The number of unchanged lines that define the boundary of a hunk
            (and to display before and after)

        interhunk_lines
            The maximum number of unchanged lines between hunk boundaries
            before the hunks will be merged into a one

        Examples::

          # Changes in the working tree not yet staged for the next commit
          >>> diff()

          # Changes between the index and your last commit
          >>> diff(cached=True)

          # Changes in the working tree since your last commit
          >>> diff('HEAD')

          # Changes between commits
          >>> t0 = revparse_single('HEAD')
          >>> t1 = revparse_single('HEAD^')
          >>> diff(t0, t1)
          >>> diff('HEAD', 'HEAD^') # equivalent

        If you want to diff a tree against an empty tree, use the low level
        API (Tree.diff_to_tree()) directly.
        )�flags�
context_lines�interhunk_linesNz$Only blobs and treeish can be diffed)�)_BaseRepository__whatever_to_tree_or_blobr�rZdiff_to_tree�dict�zipr�Zdiff_to_workdirZ
diff_to_indexr�diff�
ValueError)	r+�a�b�cachedr�r�r�Zopt_keysZ
opt_valuesr0r0r1r��s=




zBaseRepository.diffcCst�|j�dS)z�Remove all the metadata associated with an ongoing command like
        merge, revert, cherry-pick, etc. For example: MERGE_HEAD, MERGE_MSG,
        etc.
        N)rZgit_repository_state_cleanupr:r@r0r0r1�
state_cleanup:szBaseRepository.state_cleanupcCs�t�d�}t�|tj�|r"||_|rVt|t�s:t|d�}|jt�	t�
|d��dd�<|r�t|t�snt|d�}|jt�	t�
|d��dd�<|r�||_|r�||_t�d�}	t�
|	|jt|�|�}
t|
�t�||	d�S)a�
        Return a Blame object for a single file.

        Parameters:

        path
            Path to the file to blame.

        flags
            A GIT_BLAME_* constant.

        min_match_characters
            The number of alphanum chars that must be detected as moving/copying
            within a file for it to associate those lines with the parent commit.

        newest_commit
            The id of the newest commit to consider.

        oldest_commit
            The id of the oldest commit to consider.

        min_line
            The first line in the file to blame.

        max_line
            The last line in the file to blame.

        Examples::

            repo.blame('foo.c', flags=GIT_BLAME_TRACK_COPIES_SAME_FILE)
        zgit_blame_options *)�hex�
newest_commitN�
oldest_commitzgit_blame **r)rr7rZgit_blame_init_optionsZGIT_BLAME_OPTIONS_VERSION�min_match_charactersr�r	r�r9Z	addressof�min_line�max_lineZgit_blame_filer:r!rr rM)r+rCr�r�r�r�r�r��optionsZcblamerWr0r0r1�blameDs(#





zBaseRepository.blamecCs0t�d�}t�||j�}t|dd�t�||�S)z/Index representing the repository's index file.�git_index **T)�io)rr7rZgit_repository_indexr:rrrr)r+�cindexrWr0r0r1r��s
zBaseRepository.index)�normal�ours�theirs�union)�find_renamesZfail_on_conflictZ	skip_reucZno_recursiver�)Zstandard_styleZdiff3_styleZsimplify_alnumZignore_whitespaceZignore_whitespace_changeZignore_whitespace_eolZpatienceZminimalc
CsVi|�|�}d}|��D]8\}}|�|d�}	|	durDtd||f��|r||	O}q|S)z�
        Converts a dict eg {"find_renames": True, "skip_reuc": True} to
        a bitmask eg C.GIT_MERGE_FIND_RENAMES | C.GIT_MERGE_SKIP_REUC.
        rNzunknown %s: %s)�itemsrer�)
�clsZ	flag_dictZ
flag_defaults�mapping�labelZmerged_dictZbitmask�k�v�enumr0r0r1�_flag_dict_to_bitmask�s
z$BaseRepository._flag_dict_to_bitmaskr�c	Cs�|j�|d�}|dur"td|��t�||j|jd�}|�||j|jd�}t	�
d�}t�|tj
�}t|�||_||_||_|S)zReturn a 'git_merge_opts *'Nzunknown favor: %sz
merge flagzmerge file_flag�git_merge_options *)�_FAVOR_TO_ENUMrer�rr��_MERGE_FLAG_DEFAULTS�_MERGE_FLAG_TO_ENUM�_MERGE_FILE_FLAG_DEFAULTS�_MERGE_FILE_FLAG_TO_ENUMrr7r�git_merge_init_options�GIT_MERGE_OPTIONS_VERSIONrZ
file_favorr��
file_flags)	r��favorr�r�Z	favor_valZ
flags_bitmaskZfile_flags_bitmaskrLrWr0r0r1�_merge_options�s,��
zBaseRepository._merge_optionsc
Cs�t�d�}|dur|��n
tjtjf\}}|dur:|��n
tjtjf\}}|durZ|��n
tjtjf\}	}
t�||j|||	tj�}t|�t�|j	|j
��d�}t�|�|S)a`Merge files from index. Return a string with the merge result
        containing possible conflicts.

        ancestor
            The index entry which will be used as a common
            ancestor.
        ours
            The index entry to take as "ours" or base.
        theirs
            The index entry which will be merged into "ours"
        zgit_merge_file_result *N�utf-8)
rr7Z_to_cr�rZgit_merge_file_from_indexr:r�string�ptrr}�decodeZgit_merge_file_result_free)
r+�ancestorr�r�ZcmergeresultZ	cancestorZancestor_str_refZcoursZours_str_refZctheirsZtheirs_str_refrW�retr0r0r1�merge_file_from_index�s(
������
z$BaseRepository.merge_file_from_indexcCs�t�d�}t�d�}t�d�}t|ttf�r4||}t|ttf�rJ||}|�t�}|�t�}|�|||�}	|jdd�t�	|�dd�<|jdd�t�	|�dd�<t
�||j|d|d|	�}
t
|
�t�||�S)a�
        Merge two arbitrary commits.

        Returns: an index with the result of the merge.

        Parameters:

        ours
            The commit to take as "ours" or base.

        theirs
            The commit which will be merged into "ours"

        favor
            How to deal with file-level conflicts. Can be one of

            * normal (default). Conflicts will be preserved.
            * ours. The "ours" side of the conflict region is used.
            * theirs. The "theirs" side of the conflict region is used.
            * union. Unique lines from each side will be used.

            For all but NORMAL, the index will not record a conflict.

        flags
            A dict of str: bool to turn on or off functionality while merging.
            If a key is not present, the default will be used. The keys are:

            * find_renames. Detect file renames. Defaults to True.
            * fail_on_conflict. If a conflict occurs, exit immediately instead
              of attempting to continue resolving conflicts.
            * skip_reuc. Do not write the REUC extension on the generated index.
            * no_recursive. If the commits being merged have multiple merge
              bases, do not build a recursive merge base (by merging the
              multiple merge bases), instead simply use the first base.

        file_flags
            A dict of str: bool to turn on or off functionality while merging.
            If a key is not present, the default will be used. The keys are:

            * standard_style. Create standard conflicted merge files.
            * diff3_style. Create diff3-style file.
            * simplify_alnum. Condense non-alphanumeric regions for simplified
              diff file.
            * ignore_whitespace. Ignore all whitespace.
            * ignore_whitespace_change. Ignore changes in amount of whitespace.
            * ignore_whitespace_eol. Ignore whitespace at end of line.
            * patience. Use the "patience diff" algorithm
            * minimal. Take extra time to find minimal diff

        Both "ours" and "theirs" can be any object which peels to a commit or
        the id (string or Oid) of an object which peels to a commit.
        �
git_commit **r�Nr)rr7r�r�r	r�rr�r8r9rZgit_merge_commitsr:rrrr)r+r�r�r�r�r��ours_ptr�
theirs_ptrr�rLrWr0r0r1�
merge_commits�s6




zBaseRepository.merge_commitsc
Cs t�d�}t�d�}t�d�}	t�d�}
t|ttf�r>||}t|ttf�rT||}t|ttf�rj||}|�t�}|�t�}|�t�}|�|||�}|jdd�t�	|�dd�<|jdd�t�	|�dd�<|jdd�t�	|	�dd�<t
�|
|j|d|d|	d|�}t
|�t�||
�S)a�
        Merge two trees.

        Returns: an Index that reflects the result of the merge.

        Parameters:

        ancestor
            The tree which is the common ancestor between 'ours' and 'theirs'.

        ours
            The commit to take as "ours" or base.

        theirs
            The commit which will be merged into "ours".

        favor
            How to deal with file-level conflicts. Can be one of:

            * normal (default). Conflicts will be preserved.
            * ours. The "ours" side of the conflict region is used.
            * theirs. The "theirs" side of the conflict region is used.
            * union. Unique lines from each side will be used.

            For all but NORMAL, the index will not record a conflict.

        flags
            A dict of str: bool to turn on or off functionality while merging.
            If a key is not present, the default will be used. The keys are:

            * find_renames. Detect file renames. Defaults to True.
            * fail_on_conflict. If a conflict occurs, exit immediately instead
              of attempting to continue resolving conflicts.
            * skip_reuc. Do not write the REUC extension on the generated index.
            * no_recursive. If the commits being merged have multiple merge
              bases, do not build a recursive merge base (by merging the
              multiple merge bases), instead simply use the first base.

        file_flags
            A dict of str: bool to turn on or off functionality while merging.
            If a key is not present, the default will be used. The keys are:

            * standard_style. Create standard conflicted merge files.
            * diff3_style. Create diff3-style file.
            * simplify_alnum. Condense non-alphanumeric regions for simplified
              diff file.
            * ignore_whitespace. Ignore all whitespace.
            * ignore_whitespace_change. Ignore changes in amount of whitespace.
            * ignore_whitespace_eol. Ignore whitespace at end of line.
            * patience. Use the "patience diff" algorithm
            * minimal. Take extra time to find minimal diff
        zgit_tree **r�Nr)rr7r�r�r	r�rr�r8r9rZgit_merge_treesr:rrrr)
r+r�r�r�r�r�r�Zancestor_ptrr�r�r�rLrWr0r0r1�merge_treesHs(6






"zBaseRepository.merge_treesc

Cs�t�d�}
t�|
tj�|dur&||
_|dur4||
_|rNt�dt|��}||
_|dur\||
_	|durj||
_
t�d�}|r�t|t�r�|�
|�}|�t�}
t�d�}|
jdd�t�|�dd�<t�||d|
�}nt�||j|
�}t|�z�t�d�}t�|tj�|du�r||_|du�r"||_d}|	�rBt�dt|	��}||_t�dtjdf�}t�||d|�}t|�z.t�|j��d	�Wt� |�Wt�!|d�St� |�0Wt�!|d�nt�!|d�0dS)
a�
        Describe a commit-ish or the current working tree.

        Returns: The description (str).

        Parameters:

        committish : `str`, :class:`~.Reference`, or :class:`~.Commit`
            Commit-ish object or object name to describe, or `None` to describe
            the current working tree.

        max_candidates_tags : int
            The number of candidate tags to consider. Increasing above 10 will
            take slightly longer but may produce a more accurate result. A
            value of 0 will cause only exact matches to be output.

        describe_strategy : int
            Can be one of:

            * `GIT_DESCRIBE_DEFAULT` - Only match annotated tags. (This is
              equivalent to setting this parameter to `None`.)
            * `GIT_DESCRIBE_TAGS` - Match everything under refs/tags/
              (includes lightweight tags).
            * `GIT_DESCRIBE_ALL` - Match everything under refs/ (includes
              branches).

        pattern : str
            Only consider tags matching the given `glob(7)` pattern, excluding
            the "refs/tags/" prefix.

        only_follow_first_parent : bool
            Follow only the first parent commit upon seeing a merge commit.

        show_commit_oid_as_fallback : bool
            Show uniquely abbreviated commit object as fallback.

        abbreviated_size : int
            The minimum number of hexadecimal digits to show for abbreviated
            object names. A value of 0 will suppress long format, only showing
            the closest tag.

        always_use_long_format : bool
            Always output the long format (the nearest tag, the number of
            commits, and the abbrevated commit name) even when the committish
            matches a tag.

        dirty_suffix : str
            A string to append if the working tree is dirty.

        Example::

            repo.describe(pattern='public/*', dirty_suffix='-dirty')
        zgit_describe_options *NrIzgit_describe_result **r�rzgit_describe_format_options *z	git_buf *r�)"rr7rZgit_describe_init_optionsZGIT_DESCRIBE_OPTIONS_VERSION�max_candidates_tags�describe_strategyr!�pattern�only_follow_first_parent�show_commit_oid_as_fallbackr�r�r�r�rr8r9Zgit_describe_commitZgit_describe_workdirr:rZ git_describe_init_format_optionsZ#GIT_DESCRIBE_FORMAT_OPTIONS_VERSION�abbreviated_size�always_use_long_format�dirty_suffixr�Zgit_describe_formatr�r�r�Zgit_buf_disposeZgit_describe_result_free)r+Z
committishr�r�r�r�r�r�r�r�r�Zpattern_char�resultr�r�rWZformat_optionsZ	dirty_ptr�bufr0r0r1�describe�sZ;









��zBaseRepository.describecCs�|rt�dt|��}ntj}d}||tjO}||tjO}||tjO}t�d�}|jdd�t�	|�dd�<t�d�}	t�
|	|j|d||�}
t|
�t
tt�	|	�dd��d�S)a�
        Save changes to the working directory to the stash.

        Returns: The Oid of the stash merge commit (Oid).

        Parameters:

        stasher : Signature
            The identity of the person doing the stashing.

        message : str
            An optional description of stashed state.

        keep_index : bool
            Leave changes already added to the index in the working directory.

        include_untracked : bool
            Also stash untracked files.

        include_ignored : bool
            Also stash ignored files.

        Example::

            >>> repo = pygit2.Repository('.')
            >>> repo.stash(repo.default_signature(), 'WIP: stashing')
        rIrzgit_signature **Nr�)r�)rr7r!r�rZGIT_STASH_KEEP_INDEXZGIT_STASH_INCLUDE_UNTRACKEDZGIT_STASH_INCLUDE_IGNOREDr8r9Zgit_stash_saver:rr	r�)r+ZstasherrzZ
keep_indexZinclude_untrackedZinclude_ignoredZ	stash_msgr�Zstasher_cptrZcoidrWr0r0r1�stashs

zBaseRepository.stashcKsLt�d�}tt�|d��|tj}||_tjfi|��\}}|d|_	|S)Nzgit_stash_apply_options *rr)
rr7rrZgit_stash_apply_init_optionsZGIT_STASH_APPLY_REINSTATE_INDEXr�rr�Zcheckout_options)Zreinstate_indexr-�
stash_optsr�r�r�r0r0r1�_stash_args_to_optionsEs


z%BaseRepository._stash_args_to_optionscKs(tjfi|��}tt�|j||��dS)a�
        Apply a stashed state in the stash list to the working directory.

        Parameters:

        index : int
            The position within the stash list of the stash to apply. 0 is the
            most recent stash.

        reinstate_index : bool
            Try to reinstate stashed changes to the index.

        The checkout options may be customized using the same arguments taken by
        Repository.checkout().

        Example::

            >>> repo = pygit2.Repository('.')
            >>> repo.stash(repo.default_signature(), 'WIP: stashing')
            >>> repo.stash_apply(strategy=GIT_CHECKOUT_ALLOW_CONFLICTS)
        N)rr�rrZgit_stash_applyr:�r+r�r-r�r0r0r1�stash_applyRszBaseRepository.stash_applycCstt�|j|��dS)z�
        Remove a stashed state from the stash list.

        Parameters:

        index : int
            The position within the stash list of the stash to remove. 0 is
            the most recent stash.
        N)rrZgit_stash_dropr:)r+r�r0r0r1�
stash_dropks
zBaseRepository.stash_dropcKs(tjfi|��}tt�|j||��dS)zwApply a stashed state and remove it from the stash list.

        For arguments, see Repository.stash_apply().
        N)rr�rrZ
git_stash_popr:r�r0r0r1�	stash_popwszBaseRepository.stash_pop�cCst|t�r|}t|ttf�r$||}|sRz|�t�}|jj}WntyPYn0|s`t	t��}|�t�}t
�}|�|�|D]�}||j�
�}	t�||j�}
t|	�|
_||
_d|
_|
_|jtkr�tj|
_|	�d�|
_d|
_d|
_|�|
�q~||jj|
_|�|
t|	��q~dS)aK
        Write treeish into an archive.

        If no timestamp is provided and 'treeish' is a commit, its committer
        timestamp will be used. Otherwise the current time will be used.

        All path names in the archive are added to 'prefix', which defaults to
        an empty string.

        Parameters:

        treeish
            The treeish to write.

        archive
            An archive from the 'tarfile' module.

        timestamp
            Timestamp to use for the files in the archive.

        prefix
            Extra prefix to add to the path names in the archive.

        Example::

            >>> import tarfile, pygit2
            >>>> with tarfile.open('foo.tar', 'w') as archive:
            >>>>     repo = pygit2.Repository('.')
            >>>>     repo.write_archive(repo.head.target, archive)
        �rootr�i�rN)r�rr�r	r�rZ	committerrr��intrZ	read_tree�idZread_raw�tarfile�TarInforCr}�size�mtime�uname�gname�moder�SYMTYPEr{r��linkname�addfile�filemoder)r+r��archive�	timestamp�prefix�treer�r��entry�content�infor0r0r1�
write_archive�s:!






zBaseRepository.write_archivecCs�t|t�s|�|�}t|t�s(|�|�}t�d�t�d�}}t�d�t�d�}}|jdd�t�|�dd�<|jdd�t�|�dd�<t�|||j	||�}t
|�t|d�t|d�fS)a;
        Calculate how many different commits are in the non-common parts of the
        history between the two given ids.

        Ahead is how many commits are in the ancestry of the 'local' commit
        which are not in the 'upstream' commit. Behind is the opposite.

        Returns: a tuple of two integers with the number of commits ahead and
        behind respectively.

        Parameters:

        local
            The commit which is considered the local or current state.

        upstream
            The commit which is considered the upstream.
        zsize_t*r�Nr)r�r	�	expand_idrr7r�r9rZgit_graph_ahead_behindr:rr�)r+�localZupstreamZaheadZbehindZoid1Zoid2rWr0r0r1�ahead_behind�s



zBaseRepository.ahead_behindcCs�t�d�}t�||j|t|�t|��}t|�t�|d�}|tjkrJdS|tj	krXdS|tj
krfdS|tjkr�t�|d��
d�Sds�Jd��dS)a�
        Retrieve an attribute for a file by path.

        Returns: a boolean, None if the value is unspecified, or string with
        the value of the attribute.

        Parameters:

        path
            The path of the file to look up attributes for, relative to the
            workdir root.

        name
            The name of the attribute to look up.

        flags
            A combination of GIT_ATTR_CHECK_ flags which determine the
            lookup order.
        �char **rNTFr�z+the attribute value from libgit2 is invalid)rr7rZgit_attr_getr:r!rZgit_attr_valueZGIT_ATTR_UNSPECIFIED_TZGIT_ATTR_TRUE_TZGIT_ATTR_FALSE_TZGIT_ATTR_VALUE_Tr�r�)r+rCror�ZcvaluerWZ	attr_kindr0r0r1�get_attr�s




zBaseRepository.get_attrcCsLt�d�}t�d�}t�|||j�}t|�t�|��d�t�|��d�fS)Nr
r�)rr7rZgit_repository_identr:rr�r�)r+�cnameZcemailrWr0r0r1�idents


zBaseRepository.identcCs$t�|jt|�t|��}t|�dS)aSet the identity to be used for reference operations

        Updates to some references also append data to their
        reflog. You can use this method to set what identity will be
        used. If none is set, it will be read from the configuration.
        N)rZgit_repository_set_identr:r!r)r+ro�emailrWr0r0r1�	set_ident&szBaseRepository.set_identc	Cs�t�d�}t�d�}t�d�}|jdd�t�|�dd�<|jdd�t�|�dd�<t�d�}t�|tj�}t|�t�||j	|d|d||�}t|�t
�||�S)a�
        Reverts the given Commit against the given "our" Commit, producing an
        Index that reflects the result of the revert.

        Returns: an Index with the result of the revert.

        Parameters:

        revert_commit
            The Commit to revert.

        our_commit
            The Commit to revert against (eg, HEAD).

        mainline
            The parent of the revert Commit, if it is a merge (i.e. 1, 2).
        r�r�Nr�r)rr7r8r9rr�r�rZgit_revert_commitr:rrr)	r+�
revert_commitZ
our_commitZmainliner�Zrevert_commit_ptrZour_commit_ptrrLrWr0r0r1r1s



�zBaseRepository.revert_commit)NNN)TN)NFN)N)FN)NNN)N)N)NNNNNN)	NNNNNNNNN)NFFF)F)r)r)r)Nr�)r)r)L�__name__�
__module__�__qualname__r(r)r<r=rErGrZr[r_rergrirjrp�propertyrtrur�r��staticmethodr�r�r�r�r�r�r�rr�r�r�r�rZGIT_MERGE_FILE_FAVOR_NORMALZGIT_MERGE_FILE_FAVOR_OURSZGIT_MERGE_FILE_FAVOR_THEIRSZGIT_MERGE_FILE_FAVOR_UNIONr�ZGIT_MERGE_FIND_RENAMESZGIT_MERGE_FAIL_ON_CONFLICTZGIT_MERGE_SKIP_REUCZGIT_MERGE_NO_RECURSIVEr�r�ZGIT_MERGE_FILE_STYLE_MERGEZGIT_MERGE_FILE_STYLE_DIFF3ZGIT_MERGE_FILE_SIMPLIFY_ALNUMZ GIT_MERGE_FILE_IGNORE_WHITESPACEZ'GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGEZ$GIT_MERGE_FILE_IGNORE_WHITESPACE_EOLZGIT_MERGE_FILE_DIFF_PATIENCEZGIT_MERGE_FILE_DIFF_MINIMALr�r��classmethodr�r�r�r�r�r�r�r�r�r�r�r	rrrrr�
__classcell__r0r0r.r1r%7s�
!
*





#

;�
X
�
=
����
!LT�
x�
1



K&
)
	r%c@s\eZdZedfdd�Zdd�Zdd�Zdd	�Zddd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)r4NcCsn||_||_|dur<t|t�r&|j}nt|t�s<|j�|�}||_|tkrjt	|t
|d�|_t	|t|d�|_
dS)N)�flagr�)�_repository�_flagr�rr�r	r
�_commitrr4rrr�remote)r+�
repositoryrr�r0r0r1r(Xs

zBranches.__init__cCs`d}|jt@r|j�|t�}|dur<|jt@r<|j�|t�}|dusN|�|�s\td�|���|S)NzBranch not found: {})rrrZ
lookup_branchr�_validrf�format)r+ro�branchr0r0r1rgfs
zBranches.__getitem__cCs$z
||WStyYdS0dSr&�rfrhr0r0r1ress
zBranches.getccs6|j�|j�D]"}|jdus*|�|�dur|VqdSr&)rZlistall_branchesrrre)r+�branch_namer0r0r1rGyszBranches.__iter__FcCs|j�|||�Sr&)rZ
create_branch)r+ror�rr0r0r1rn~szBranches.createcCs||��dSr&��delete�r+ror0r0r1r'�szBranches.deletecCs:|jtkr|��}|jdup8|j|jkp8|j�|j|j�Sr&)r{rr�rr~rZ
descendant_of)r+r#r0r0r1r!�s


��zBranches._validcCs|jdusJ�t|j|j|�Sr&)rr4rr)r+r�r0r0r1�with_commit�szBranches.with_commitcCs|�|�duSr&�rer(r0r0r1ri�szBranches.__contains__)F)
rrrrr(rgrerGrnr'r!r)rir0r0r0r1r4Vs


r4c@sZeZdZdd�Zdd�Zdd�Zdd�Zdd
d�Zdd
�Zdd�Z	e
dd��Zdd�ZdS)r5cCs
||_dSr&)r)r+r r0r0r1r(�szReferences.__init__cCs|j�|�Sr&)rr�r(r0r0r1rg�szReferences.__getitem__cCs$z
||WStyYdS0dSr&r$rhr0r0r1re�s
zReferences.getccs|j��D]
}|Vq
dSr&)rZlistall_references)r+�ref_namer0r0r1rG�szReferences.__iter__FcCs|j�|||�Sr&)rr�)r+ror~rr0r0r1rn�szReferences.createcCs||��dSr&r&r(r0r0r1r'�szReferences.deletecCs|�|�duSr&r*r(r0r0r1ri�szReferences.__contains__cCs
|j��Sr&)rZlistall_reference_objectsr@r0r0r1�objects�szReferences.objectscCs
|j��Sr&)rZcompress_referencesr@r0r0r1�compress�szReferences.compressN)F)
rrrr(rgrerGrnr'rirr,r-r0r0r0r1r5�s

r5cs.eZdZd�fdd�	Ze�fdd��Z�ZS)rNrcsT|durFt|d�r|��}t|t�s.|�d�}t||�}t��|�n
t���dS)a�
        The Repository constructor will commonly be called with one argument,
        the path of the repository to open.

        Alternatively, constructing a repository with no arguments will create
        a repository with no backends. You can use this path to create
        repositories with custom backends. Note that most operations on the
        repository are considered invalid and may lead to undefined behavior if
        attempted before providing an odb and refdb via set_odb and set_refdb.

        Parameters:

        path : str
        The path to open - if not provided, the repository will have no backend.

        flags : int
        Flags controlling how to open the repository can optionally be provided - any combination of:
        -   GIT_REPOSITORY_OPEN_NO_SEARCH
        -   GIT_REPOSITORY_OPEN_CROSS_FS
        -   GIT_REPOSITORY_OPEN_BARE
        -   GIT_REPOSITORY_OPEN_NO_DOTGIT
        -   GIT_REPOSITORY_OPEN_FROM_ENV
        N�
__fspath__r�)�hasattrr.r�r�r�rr'r()r+rCr�Zpath_backendr.r0r1r(�s



zRepository.__init__csLt�d�}||d<|�|�}t||��tt�|�dd��|�|��|Sr2)rr7�__new__r'rMr�r9r))r�r�Zownedr��repor.r0r1rM�s

$zRepository._from_c)Nr)rrrr(rrMrr0r0r.r1r�s#r)3r�rr�rr�rrkZ_pygit2rZ_Repositoryrr	r
rrr
rrrrrrrrrrrrTrrtr�errorsrrrr�rrrr�r �utilsr!r"r^r#Zpackbuilderr$r%r4r5r0r0r0r1�<module>sH)@#

Youez - 2016 - github.com/yon3zu
LinuXploit