���� JFIF  XX �� �� �     $.' ",#(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�8 ds|\���Ҿp6�Ҵ���]��.����6� z<�v��@]�i% �� $j��~ �g��J>��no����pM[me�i$[�� �� s�o�ᘨ�˸ nɜG-�ĨU�ycP� 3.DB�li�;� �hj���x 7Z^�N�h��� ���N3u{�:j �x�힞��#M &��jL P@ _���� P�� &��o8 ������9 �����@Sz 6�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*-i H��g�D�)� E�m�|�ؘbҗ�a ��Ҿ���� t4��� o���G��*oCN�rP���Q��@z,|?W[0 �����:�n,j WiE��W� �$~/�hp\��?��{(�0���+�Y8rΟ�+����>S-S�� ��VN;� }�s?.����� w �9��˟<���Mq4�Wv' ��{)0�1mB ��V����W[� ����8�/<� �%���wT^�5���b��)iM� p g�N�&ݝ� �VO~� q���u���9� ����!��J27��� �$ O-���! �: �%H��� ـ ����y�ΠM=t{!S�� oK8������ t<����è :a�� ����[���� �ա�H���~��w��Qz`�p o�^ �� ��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�_�uX 6��3?nk��Wy�f;^*B� ��@ �~a�`��Eu������ +� �� 6�L��.ü>��}y���}_�O�6�͐�:�Yr G�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�!0 39C� �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 Xp 3�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@:)ִ�:�]��h v�E� w���T�l ��P� ��"Ju�}��وV J��G6��. J/�Qgl߭�e�����@�z�Zev2u� )]կ��� ��7x�� �s�M�-<ɯ�c��r� v�����@��$�ޮ}lk���a�� �'����>x��O\�Z Fu>��� ��ck#��&:��`�$ �ai�>2Δ����l���oF[h� �lE�ܺ�Π k:)���` �� $[6�����9�����kOw�\|��� 8}������ބ:��񶐕� �I�A1/� =�2[�,�!��.}gN#�u����b ��� ~� �݊��}34q��� �d�E��L c��$ ��"�[q�U�硬g^��%B � z���r�p J�ru%v\h 1Y�ne` ǥ:g�� �pQM~�^� Xi� ��`S�:V2 9.�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& Ú����2 g�}&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��f2 4;�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)*P t����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���#y w��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���/$�WP w���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��B S�('$�ɻ� �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 : 198.54.126.9  /  Your IP : 216.73.216.190
Web Server : Apache
System : Linux host56.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64
User : ecssenvironment ( 1934)
PHP Version : 8.1.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/imunify360/venv/lib64/python3.11/site-packages/jinja2/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/imunify360/venv/lib64/python3.11/site-packages/jinja2/__pycache__/compiler.cpython-311.pyc
�

��gh��	���dZddlmZddlmZddlmZddlmZ	ddl
mZddl
mZdd	l
mZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddl$m%Z%dddddd d!d"d#�Z&e'e(d$��rd$Z)nd%Z)d&gZ*	e+d'��e*�,d(��n#e-$rYnwxYw	e+d)��d*Z.n
#e-$rd+Z.YnwxYwd,�Z/	d?d.�Z0d/�Z1d0�Z2Gd1�d2e3��Z4Gd3�d4e3��Z5Gd5�d6e6��Z7Gd7�d8e%��Z8Gd9�d:e%��Z9Gd;�d<e:��Z;Gd=�d>e%��Z<d-S)@z0Compiles nodes from the parser into Python code.�)�
namedtuple��update_wrapper)�chain)�	iskeyword)�escape)�Markup�)�nodes)�imap)�	iteritems)�izip)�NativeStringIO)�
range_type)�string_types)�	text_type)�TemplateAssertionError)�Symbols)�VAR_LOAD_ALIAS)�VAR_LOAD_PARAMETER)�VAR_LOAD_RESOLVE)�VAR_LOAD_UNDEFINED)�EvalContext)�	Optimizer)�concat)�NodeVisitorz==z!=�>z>=�<z<=�inznot in)�eq�ne�gt�gteq�lt�lteqr�notinr
�items�divisionz%from __future__ import generator_stop�generator_stopzdef f(): yield from x()TFc�.���fd�}t|���S)Nc���|jrH|jjs<|j�||j��}||kr|�||��S�|||fi|��S�N)�	optimized�eval_ctx�volatile�	optimizer�visit)�self�node�frame�kwargs�new_node�fs     ��o/builddir/build/BUILD/imunify360-venv-2.6.0/opt/imunify360/venv/lib/python3.11/site-packages/jinja2/compiler.py�new_funczoptimizeconst.<locals>.new_funcCsm����>�	3�%�.�"9�	3��~�+�+�D�%�.�A�A�H��4����z�z�(�E�2�2�2��q��t�U�-�-�f�-�-�-�r)r7r9s` r8�
optimizeconstr;Bs.���.�.�.�.�.��(�A�&�&�&r:Nc���t|tj��std���|�||||||��}|�|��|�|j���SdS)z+Generate the python source for a node tree.z Can't compile non template nodesN)�
isinstancer�Template�	TypeError�code_generator_classr1�stream�getvalue)r3�environment�name�filenamerA�
defer_initr-�	generators        r8�generaterHNs~���d�E�N�+�+�<��:�;�;�;��0�0��T�8�V�Z����I��O�O�D����
�~���(�(�*�*�*��~r:c���|�|tus	|turdSt|��ttt
tttftzvrdSt|��ttttfvr|D]}t|��sdS�dSt|��tur;t!|��D])\}}t|��sdSt|��sdS�*dSdS)z)Does the node have a safe representation?NTF)�NotImplemented�Ellipsis�type�bool�int�float�complexrr	r�tuple�list�set�	frozenset�
has_safe_repr�dictr
)�value�item�keys   r8rUrU\s����}���/�/�5�H�3D�3D��t��E�{�{�t�S�%��*�f�E��T�T�T��t��E�{�{�u�d�C��3�3�3��	�	�D� ��&�&�
��u�u�
��t�	
�e����	�	�#�E�*�*�	�	�J�C�� ��%�%�
��u�u� ��'�'�
��u�u�
��t��5r:c��t|��}	|D]}|�|���n#t$rYnwxYw|jS)z�Check if the names passed are accessed undeclared.  The return value
    is a set of all the undeclared names from the sequence of names found.
    )�UndeclaredNameVisitorr1�VisitorExit�
undeclared)r�names�visitorr3s    r8�find_undeclaredr`qsh��$�E�*�*�G�
��	 �	 �D��M�M�$�����	 ���
�
�
���
������s�,�
9�9c��eZdZd�ZdS)�MacroRefc�>�||_d|_d|_d|_dS)NF)r3�accesses_caller�accesses_kwargs�accesses_varargs�r2r3s  r8�__init__zMacroRef.__init__s'����	�$���$��� %����r:N)�__name__�
__module__�__qualname__rh�r:r8rbrb~s#������&�&�&�&�&r:rbc�2�eZdZdZdd�Zd�Zd	d�Zd�ZeZdS)
�Framez&Holds compile time information for us.Nc���||_t|r|jpd|���|_d|_d|_|o|j|_d|_|r|jpd|_||_|�|j|_dSdS)N��levelF)	r.r�symbols�toplevel�	rootlevel�require_output_check�buffer�block�parent)r2r.rxrqs    r8rhzFrame.__init__�s��� ��
��v�8�&�.�@�D��N�N�N�����
�
���%+�$J�v�/J��!�����,���4���
������ �-�D�K�K�K��r:c��t�|j��}|j�|j��|j���|_|S)z!Create a copy of the current one.)�object�__new__�	__class__�__dict__�updaterr�copy�r2�rvs  r8rz
Frame.copy�sG��
�^�^�D�N�
+�
+��
����4�=�)�)�)��\�&�&�(�(��
��	r:Fc�v�|r#t|j|jjdz���St|j|��S)zReturn an inner frame.r
rp)rnr.rrrq)r2�isolateds  r8�innerzFrame.inner�s<���	F����d�l�.@�1�.D�E�E�E�E��T�]�D�)�)�)r:c�<�|���}d|_|S)aReturn a soft frame.  A soft frame may not be modified as
        standalone thing as it shares the resources with the frame it
        was created of, but it's not a rootlevel frame any longer.

        This is only used to implement if-statements.
        F)rrtr�s  r8�softz
Frame.soft�s���Y�Y�[�[������	r:)NN�F)	rirjrk�__doc__rhrr�r��__copy__rlr:r8rnrn�sa������0�0�(�(�(�(�>���*�*�*�*�	�	�	��H�H�Hr:rnc��eZdZdZdS)r\z?Exception used by the `UndeclaredNameVisitor` to signal a stop.N�rirjrkr�rlr:r8r\r\�s������I�I�I�Ir:r\c�*�eZdZdZd�Zd�Zd�Zd�ZdS)�DependencyFinderVisitorz.A visitor that collects filter and test calls.c�R�t��|_t��|_dSr,)rS�filters�tests�r2s r8rhz DependencyFinderVisitor.__init__�s���u�u����U�U��
�
�
r:c�n�|�|��|j�|j��dSr,)�
generic_visitr��addrDrgs  r8�visit_Filterz$DependencyFinderVisitor.visit_Filter�s4�����4� � � �������#�#�#�#�#r:c�n�|�|��|j�|j��dSr,)r�r�r�rDrgs  r8�
visit_Testz"DependencyFinderVisitor.visit_Test�s2�����4� � � ��
���t�y�!�!�!�!�!r:c��dS)zStop visiting at blocks.Nrlrgs  r8�visit_Blockz#DependencyFinderVisitor.visit_Block�����r:N)rirjrkr�rhr�r�r�rlr:r8r�r��sV������8�8����$�$�$�"�"�"�'�'�'�'�'r:r�c�$�eZdZdZd�Zd�Zd�ZdS)r[z�A visitor that checks if a name is accessed without being
    declared.  This is different from the frame visitor as it will
    not stop at closure frames.
    c�T�t|��|_t��|_dSr,)rSr^r])r2r^s  r8rhzUndeclaredNameVisitor.__init__�s����Z�Z��
��%�%����r:c���|jdkrM|j|jvr?|j�|j��|j|jkrt���dS|j�|j��dS)N�load)�ctxrDr^r]r�r\�discardrgs  r8�
visit_Namez UndeclaredNameVisitor.visit_Name�sv���8�v���$�)�t�z�"9�"9��O����	�*�*�*���$�*�,�,�!�m�m�#�-�,�
�J���t�y�)�)�)�)�)r:c��dS)zStop visiting a blocks.Nrlrgs  r8r�z!UndeclaredNameVisitor.visit_Block�r�r:N)rirjrkr�rhr�r�rlr:r8r[r[�sK��������
 � � �*�*�*�&�&�&�&�&r:r[c��eZdZdZdS)�CompilerExitz�Raised if the compiler encountered a situation where it just
    doesn't make sense to further process the code.  Any block that
    raises such an exception is not further processed.
    Nr�rlr:r8r�r��s���������r:r�c��eZdZ	dmd�Zd�Zd�Zd�Zdnd�Zd	�Zdod�Z	dpd�Z
d
�Zdpd�Zd�Z
d�Zdqd�Zdqd�Zdpd�Zd�Zd�Zdnd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd �Zd!�Zd"�Zd#�Z d$�Z!d%�Z"d&�Z#d'�Z$d(�Z%dpd)�Z&d*�Z'd+�Z(d,�Z)d-�Z*d.�Z+d/�Z,d0�Z-d1�Z.d2�Z/d3�Z0d4�Z1d5�Z2e3d6d7��Z4e5Z6dZ7d8�Z8d9�Z9d:�Z:d;�Z;d<�Z<d=�Z=d>�Z>d?�Z?d@�Z@dA�ZAdB�ZBdC�ZCdD�ZDdE�ZEdF�ZFdrdG�ZGdrdH�ZHeGdI��ZIeGdJ��ZJeGdK��ZKeGdL��ZLeGdM��ZMeGdN��ZNeGdO��ZOeGdPd�Q��ZPeGdRd�Q��ZQeHdI��ZReHdJ��ZSeHdSd�Q��ZT[G[HeUdT���ZVeUdU���ZWdV�ZXeUdW���ZYeUdX���ZZdY�Z[eUdZ���Z\eUd[���Z]eUd\���Z^eUdnd]���Z_d^�Z`d_�Zad`�Zbda�Zcdb�Zddc�Zedd�Zfde�Zgdf�Zhdg�Zidh�Zjdi�Zkdj�Zldk�Zmdl�ZndS)s�
CodeGeneratorNFTc��|�t��}||_||_||_||_d|_||_||_|rt|��|_	i|_
i|_d|_d|_
d|_i|_i|_g|_d|_d|_d|_d|_d|_d|_g|_g|_dg|_dS)NFrr
T�context)rrCrDrErA�created_block_contextrFr-rr0�import_aliases�blocks�extends_so_far�has_known_extends�code_linenor�r��
debug_info�_write_debug_info�
_new_lines�
_last_line�_first_write�_last_identifier�_indentation�
_assign_stack�_param_def_block�_context_reference_stack)r2rCrDrErArFr-s       r8rhzCodeGenerator.__init__�s���>�#�%�%�F�&�����	� ��
����%*��"�$���"����	4�&�{�3�3�D�N�!������ ���
"'��������
�������!%���������!���!"������ ���!#���*3���%�%�%r:c�:�t|||j|j���)z*Fail with a :exc:`TemplateAssertionError`.)rrDrE)r2�msg�linenos   r8�failzCodeGenerator.fail<s��$�S�&�$�)�T�]�K�K�Kr:c�6�|xjdz
c_d|jzS)zGet a new unique identifier.r
zt_%d)r�r�s r8�temporary_identifierz"CodeGenerator.temporary_identifier@s$������"�����-�-�-r:c�r�|���|_|�d|jz��dS)z7Enable buffering for the frame from that point onwards.z%s = []N)r�rv�	writeline�r2r4s  r8rvzCodeGenerator.bufferEs4���0�0�2�2������y�5�<�/�0�0�0�0�0r:c��|s�|jjr�|�d��|���|�d|jz��|���|�d��|���|�d|jz��|���dS|jjr|�d|jz��dS|�d|jz��dS)z(Return the buffer contents of the frame.zif context.eval_ctx.autoescape:zreturn Markup(concat(%s))�else:zreturn concat(%s)N)r.r/r��indentrv�outdent�
autoescape)r2r4�force_unescapeds   r8�return_buffer_contentsz$CodeGenerator.return_buffer_contentsJs����
	��~�&�
����@�A�A�A����
�
�
����:�U�\�I�J�J�J����������w�'�'�'����
�
�
����2�U�\�A�B�B�B�����������*�
����:�U�\�I�J�J�J������*�U�\�9�:�:�:�:�:r:c�&�|xjdz
c_dS)zIndent by one.r
N�r�r�s r8r�zCodeGenerator.indent\s�����Q�����r:r
c�&�|xj|zc_dS)zOutdent by step.Nr�)r2�steps  r8r�zCodeGenerator.outdent`s�����T�!����r:c��|j�|�d|��dS|�d|jz|��dS)z%Yield or write into the frame buffer.N�yield �
%s.append()rvr�)r2r4r3s   r8�start_writezCodeGenerator.start_writedsE���<���N�N�8�T�*�*�*�*�*��N�N�<�%�,�6��=�=�=�=�=r:c�B�|j�|�d��dSdS)z1End the writing process started by `start_write`.N�))rv�writer�s  r8�	end_writezCodeGenerator.end_writeks%���<�#��J�J�s�O�O�O�O�O�$�#r:c��|�||��|�|��|�|��dS)z4Simple shortcut for start_write + write + end_write.N)r�r�r�)r2�sr4r3s    r8�simple_writezCodeGenerator.simple_writeps?�������%�%�%��
�
�1�
�
�
����u�����r:c��	|�d��|D]}|�||���dS#t$rYdSwxYw)z�Visit a list of nodes as block in a frame.  If the current frame
        is no buffer a dummy ``if 0: yield None`` is written automatically.
        �passN)r�r1r�)r2rr4r3s    r8�
blockvisitzCodeGenerator.blockvisitvsk��	��N�N�6�"�"�"��
(�
(���
�
�4��'�'�'�'�
(�
(���	�	�	��D�D�	���s�04�
A�Ac��|jr�|jsk|j�d|jz��|xj|jz
c_|j�-|j�|j|jf��d|_d|_|j�d|jz��d|_|j�|��dS)z&Write a string into the output stream.�
NFz    r)	r�r�rAr�r�r�r��appendr�)r2�xs  r8r�zCodeGenerator.write�s����?�		 ��$�
2���!�!�$���"8�9�9�9�� � �D�O�3� � ��)�5��O�*�*�D�,B�D�DT�+U�V�V�V�-1�D�*� %�D���K���f�t�'8�8�9�9�9��D�O�����!�����r:rc�\�|�||��|�|��dS)z!Combination of newline and write.N)�newliner�)r2r�r3�extras    r8r�zCodeGenerator.writeline�s)�����T�5�!�!�!��
�
�1�
�
�
�
�
r:c��t|jd|z��|_|�*|j|jkr|j|_|j|_dSdSdS)z/Add one or more newlines before the next write.r
N)�maxr�r�r�r�)r2r3r�s   r8r�zCodeGenerator.newline�sR���d�o�q�5�y�9�9�������t�� >� >�%)�[�D�"�"�k�D�O�O�O��� >� >r:c���d}td�|jD��|pd��D]}t|��rd}n�|jD]-}|�d��|�||���.|sg|jD]-}|�d��|�||���.|�0t
|��D] \}}|�d|�d|�����!|jr0|�d��|�|j|��|�r |j�|�d	��n|�d
��|jD]O}|�d|j	z��|�|j
|��|�d���P|�0t
|��D] \}}|�|�d|�d����!|j�G|�d
��|�|j|��|�d��dS|�d��dS|j�2|�d��|�|j|��dSdS)a+Writes a function call to the stream for the current node.
        A leading comma is added automatically.  The extra keyword
        arguments may not include python keywords otherwise a syntax
        error could occur.  The extra keyword arguments should be given
        as python dict.
        Fc3�$K�|]}|jV��dSr,)rY��.0r�s  r8�	<genexpr>z*CodeGenerator.signature.<locals>.<genexpr>�s$����7�7�a�A�E�7�7�7�7�7�7r:rlT�, N�=z, *z
, **dict({z, **{z%r: �: z}, **r��}z, **)rr5�is_python_keyword�argsr�r1r
�dyn_args�
dyn_kwargsrYrW)	r2r3r4�extra_kwargs�kwarg_workaround�kwarg�argrYrWs	         r8�	signaturezCodeGenerator.signature�s���!���7�7�4�;�7�7�7��9K��L�L�	�	�E� ��'�'�
�#'� ���
��9�	#�	#�C��J�J�t�����J�J�s�E�"�"�"�"��	9���
)�
)���
�
�4� � � ��
�
�5�%�(�(�(�(��'�"+�L�"9�"9�9�9�J�C���J�J�J�C�C�C���7�8�8�8�8��=�	-��J�J�u�����J�J�t�}�e�,�,�,��	/���*��
�
�<�(�(�(�(��
�
�7�#�#�#���
!�
!���
�
�6�E�I�-�.�.�.��
�
�5�;��.�.�.��
�
�4� � � � ��'�"+�L�"9�"9�:�:�J�C���J�J�S�S�S�%�%�%�8�9�9�9�9���*��
�
�7�#�#�#��
�
�4�?�E�2�2�2��
�
�3�������
�
�3������
�_�
(��J�J�v�����J�J�t���.�.�.�.�.�)�
(r:c
�$�t��}|D]}|�|���dD]d}t||��}t||��D]A}||vr|���||<|�||�d|�d|�d����B�edS)zPull all the dependencies.)r�r�z = environment.�[�]N)r�r1�getattrr�r�)r2rr_r3�
dependency�mappingrDs       r8�pull_dependencieszCodeGenerator.pull_dependencies�s���)�+�+���	 �	 �D��M�M�$�����,�	�	�J��d�J�/�/�G����4�4�
�
���w�&�&�$(�$=�$=�$?�$?�G�D�M����18�����
�
�
�D�D�D�Q�����
�	�	r:c	���g}t|jj��D]�\}\}}|tkr�|tkr1|�|�d|����d|�d����P|tkr|�|�d|�����v|tkr|�	|����td���|r-|�dd�|��z��dSdS)N� = �(r�zunknown load instruction�%s = missing)r
rr�loadsrrr��get_resolve_funcrrr��NotImplementedError�join)r2r4�undefs�target�action�params      r8�enter_framezCodeGenerator.enter_frame�s����'0���1D�'E�'E�
	F�
	F�#�F�O�V�U��+�+�+���+�+�+��������8M�8M�8O�8O�8O�8O�QV�QV�QV�W�X�X�X�X��>�)�)����F�F�F�E�E�:�;�;�;�;��-�-�-��
�
�f�%�%�%�%�)�*D�E�E�E��	@��N�N�>�E�J�J�v�,>�,>�>�?�?�?�?�?�	@�	@r:c���|seg}t|jj��D]\}}|�|���|r/|�dd�|��z��dSdSdS)Nrr�)r
rrrr�r�r)r2r4�with_python_scoperr�_s      r8�leave_framezCodeGenerator.leave_frame�s��� �	D��F�&�u�}�':�;�;�
&�
&�	����
�
�f�%�%�%�%��
D����~��
�
�6�0B�0B�B�C�C�C�C�C�	D�	D�
D�
Dr:c�.�|jjrd|zSd|zS)Nzasync def %szdef %s)rC�is_async)r2rDs  r8�funczCodeGenerator.func�s%����$�	)�!�D�(�(��$��r:c
�T�|���}|j�|��t|��}d}t	��}g}t|j��D]g\}}|jdkr|}|jdvr|�|j��|�	|j�
|j�����ht|jd��}	d|	vr�|�O	|j
|t|j��z
nX#t$r|�d|j��Yn1wxYw|�	|j�d����d|_d|	vr8d|vr4|�	|j�d����d|_d|	vr8d|vr4|�	|j�d����d|_d	|_|j�|��|�|�d
���dd�|���d
�|��|���|�|��|�|��|�|��t|j��D�]\}}|j�
|j��}
|�d|
z��|���	|j
|t|j��z
}|�d|
z��|�||��n;#t$r.|�|
�dd|jz�d|j�d���YnwxYw|�|
��|� ����	|�!��|�"|j|��|�#|d���|�$|d���|� ��||fS)z/Dump the function def of a macro or call block.N�caller)r5�varargs)rr5rzhWhen defining macros or call blocks the special "caller" argument must be omitted or be given a default.Tr5rF�macror�r��):�if %s is missing:�%s = �
 = undefined(zparameter %r was not providedz, name=r�)r��r)%r�rr�analyze_noderbrS�	enumerater�rDr�r��refr`�body�defaults�len�
IndexErrorr�r��declare_parameterrdrerfrur�rrr�rvr	�push_parameter_definitionsr1�mark_parameter_storedr��pop_parameter_definitionsr�r�r
)r2r3r4�	macro_ref�explicit_caller�skip_special_paramsr��idxr�r]r�defaults            r8�
macro_bodyzCodeGenerator.macro_body�s7�����
�
��
�
�"�"�4�(�(�(��T�N�N�	���!�e�e����!�$�)�,�,�	5�	5�H�C���x�8�#�#�"%���x�0�0�0�#�'�'���1�1�1��K�K��
�)�)�#�(�3�3�4�4�4�4�$�T�Y�0O�P�P�
��z�!�!��*���M�/�C��	�N�N�"B�C�C�C��!�����I�I�1���	������������E�M�;�;�H�E�E�F�F�F�(,�I�%��z�!�!�h�6I�&I�&I��K�K��
�7�7��A�A�B�B�B�(,�I�%��
�"�"�y�8K�'K�'K��K�K��
�7�7�	�B�B�C�C�C�)-�I�&�&+��"�
�
�"�"�4�(�(�(����D�I�I�g�$6�$6�$6�$6��	�	�$�����H�$�O�O�O����
�
�
����E������������'�'��.�.�.�!�$�)�,�,�	�	�H�C���-�#�#�C�H�-�-�C��N�N�.��4�5�5�5��K�K�M�M�M�	
+��-��c�$�)�n�n�(<�=�����w��}�-�-�-��
�
�7�E�*�*�*�*���
�
�
�����s�s�;�c�h�F�F�F�����R������
����
�&�&�s�+�+�+��L�L�N�N�N�N��&�&�(�(�(�����	�5�)�)�)��#�#�E�4�#�@�@�@�����$��7�7�7��������i��s$�("D�%D3�2D3�>"M�5N�Nc
�0�d�d�|jjD����}t|jdd��}t	|jj��dkr|dz
}|�d|�d|�d	|j�d|j�d|j�d
���dS)z<Dump the macro definition for the def created by macro_body.r�c3�>K�|]}t|j��V��dSr,)�reprrDr�s  r8r�z*CodeGenerator.macro_def.<locals>.<genexpr>Ms*����H�H�q�d�1�6�l�l�H�H�H�H�H�Hr:rDNr
�,zMacro(environment, macro, z, (z), z, context.eval_ctx.autoescape))	rr3r�r�rr�rerfrd)r2r%r4�	arg_tuplerDs     r8�	macro_defzCodeGenerator.macro_defKs����I�I�H�H�I�N�4G�H�H�H�H�H�	��y�~�v�t�4�4���y�~�"�#�#�q�(�(����I��
�
�
�����	�	��)�)�)��*�*�*��)�)�)�
�
	
�
	
�
	
�
	
�
	
r:c�\�d|jz}|j�|dt|j��zz
}|S)z.Return a human readable position for the node.zline %dN� in )r�rDr-)r2r3r�s   r8�positionzCodeGenerator.position]s2��
���
$���9� ��&�4��	�?�?�*�*�B��	r:c��dd�d�t|j�����D����zS)Nz{%s}r�c3�*K�|]\}}|�d|��V��dS�r�Nrl)r�rDrs   r8r�z3CodeGenerator.dump_local_context.<locals>.<genexpr>esE����"
�"
���f����f�f�%�"
�"
�"
�"
�"
�"
r:)rr
rr�dump_storesr�s  r8�dump_local_contextz CodeGenerator.dump_local_contextdsQ����	�	�"
�"
� )�%�-�*C�*C�*E�*E� F� F�"
�"
�"
�
�
�
�	
r:c��|�d��|�d��|�d��|�d��dS)z�Writes a common preamble that is used by root and block functions.
        Primarily this sets up common local helpers and enforces a generator
        through a dead branch.
        z$resolve = context.resolve_or_missingz!undefined = environment.undefinedzcond_expr_undefined = Undefinedzif 0: yield NoneN�r�r�s r8�
write_commonszCodeGenerator.write_commonsjsX��
	
���=�>�>�>����:�;�;�;�	
���8�9�9�9����)�*�*�*�*�*r:c�h�|j�|j�����dS)aQPushes all parameter targets from the given frame into a local
        stack that permits tracking of yet to be assigned parameters.  In
        particular this enables the optimization from `visit_Name` to skip
        undefined expressions for parameters in macros as macros can reference
        otherwise unbound parameters.
        N)r�r�rr�dump_param_targetsr�s  r8r"z(CodeGenerator.push_parameter_definitionsvs/��	
��$�$�U�]�%E�%E�%G�%G�H�H�H�H�Hr:c�8�|j���dS)z+Pops the current parameter definitions set.N)r��popr�s r8r$z'CodeGenerator.pop_parameter_definitionss����!�!�#�#�#�#�#r:c�X�|jr"|jd�|��dSdS)z�Marks a parameter in the current parameter definitions as stored.
        This will skip the enforced undefined checks.
        ���N)r�r��r2rs  r8r#z#CodeGenerator.mark_parameter_stored�s;��� �	6��!�"�%�-�-�f�5�5�5�5�5�	6�	6r:c�:�|j�|��dSr,)r�r�rBs  r8�push_context_referencez$CodeGenerator.push_context_reference�s���%�,�,�V�4�4�4�4�4r:c�8�|j���dSr,)r�r?r�s r8�pop_context_referencez#CodeGenerator.pop_context_reference�s���%�)�)�+�+�+�+�+r:c��|jdS)NrA�r�r�s r8�get_context_refzCodeGenerator.get_context_ref�s���,�R�0�0r:c�6�|jd}|dkrdSd|zS)NrAr��resolvez
%s.resolverHrBs  r8rzCodeGenerator.get_resolve_func�s*���.�r�2���Y����9��f�$�$r:c�\�|����d|�|���d�S)Nz	.derived(r�)rIr8r�s  r8�derive_contextzCodeGenerator.derive_context�s8��� � �"�"�"�"��#�#�E�*�*�*�*�
�	
r:c�2�|jsdS||jdvS)z4Checks if a given target is an undeclared parameter.FrA)r�rBs  r8�parameter_is_undeclaredz%CodeGenerator.parameter_is_undeclared�s%���$�	��5���.�r�2�2�2r:c�R�|j�t����dS)z+Pushes a new layer for assignment tracking.N)r�r�rSr�s r8�push_assign_trackingz"CodeGenerator.push_assign_tracking�s#����!�!�#�%�%�(�(�(�(�(r:c	�.�|j���}|jr|sdSd�|D��}t|��dkrRt	t|����}|j�|��}|�d|�d|����n�|�d��t|��D]P\}}|r|�
d��|j�|��}|�
|�d|�����Q|�
d	��|rst|��dkr |�d
|dz��dS|�dd�tt|����z��dSdS)
zoPops the topmost level for assignment tracking and updates the
        context variables if necessary.
        Nc�.�g|]}|dd�dk�|��S)Nr
rrlr�s  r8�
<listcomp>z5CodeGenerator.pop_assign_tracking.<locals>.<listcomp>�s%��8�8�8�a�1�R�a�R�5�C�<�<��<�<�<r:r
�
context.vars[�] = zcontext.vars.update({r�r�z})�context.exported_vars.add(%r)rz"context.exported_vars.update((%s)))r�r?rsr�next�iterrrrr�rr�rrr-)r2r4�vars�public_namesrDrr(s       r8�pop_assign_trackingz!CodeGenerator.pop_assign_tracking�s����!�%�%�'�'���~�	�T�	��F�8�8�4�8�8�8���t�9�9��>�>���T�
�
�#�#�D��-�#�#�D�)�)�C��N�N�N�d�d�d�C�C�@�A�A�A�A��N�N�2�3�3�3�&�t�_�_�
3�
3�	��T��%��J�J�t�$�$�$��m�'�'��-�-���
�
�t�t�t�S�S�1�2�2�2�2��J�J�t�����	��<� � �A�%�%����>��a��P�Q�Q�Q�Q�Q����8��i�i��T�<� 8� 8�9�9�:������		�	r:c	��|�
Jd���t|j|j��}ddlm}|�dd�t��z��|�dd�|��z��|jjr|�d��|j	rdpd	}|�
tj��du}|�
tj��D]B}|j|jvr#|�d
|jz|j��||j|j<�C|�
tj��D]�}|j|jvr||j}	|���x|j|	<}
d|	vr8|	�dd��\}}|�d|�d
|�d|
�����q|�d|	�d|
������|�d|jz��|�|�d���d|�d�d���|���|���t5|��}dt7|jd��vr2|j�d��}
|�d|
z��|j�|��dx|_ |_!|o|j"|_#|r|�d��|�$|��|�%|j��|�&|j|��|�'|d���|�(��|r�|j"s)|���|�d��|���tRr"|jjs|�d��nc|�d|jjrdpd	z��|���|�d��|�(��|�(d|j"z��tU|j��D�]�\}}|�|�d |z���d|�d�|d��|���|���t5|��}t7|jd!��}d|vr2|j�d��}
|�d|
z��d"|vr8|j�d"��}
|�|
�d#|�d$|�d%���|j�|��||_+|�$|��|�%|j��|�&|j|��|�'|d���|�(�����|�d&d�d'�|jD����zd���|�d(d)�d*�|j,D����z��dS)+Nzno root frame allowedr
)�exportedzfrom __future__ import %sr�zfrom jinja2.runtime import zHfrom jinja2.asyncsupport import auto_await, auto_aiter, AsyncLoopContextz, environment=environment�zblock %r defined twice�.zfrom z import z as zimport z	name = %r�rootz(context, missing=missingr)r�r2r�z%s = TemplateReference(context)Tzparent_template = Noner�if parent_template is not None:z4yield from parent_template.root_render_func(context)z9%sfor event in parent_template.root_render_func(context):zasync zyield event�block_)r2�superrdz = context.super(z, block_r�z
blocks = {%s}c3�$K�|]}|�d|��V��dS)z: block_Nrlr�s  r8r�z/CodeGenerator.visit_Template.<locals>.<genexpr>;s-����'U�'U�A�!�!�!�Q�Q�(?�'U�'U�'U�'U�'U�'Ur:zdebug_info = %r�&c3� K�|]	}d|zV��
dS)z%s=%sNrlr�s  r8r�z/CodeGenerator.visit_Template.<locals>.<genexpr>As&����(N�(N���1��(N�(N�(N�(N�(N�(Nr:)-rrCrD�runtimer^r�r�
code_featuresrrF�findr�Extends�find_all�Blockr�r�r��ImportedName�
importnamer�r��rsplitrr�r;rnr`rrrr!rrsrtr�rur	r�r�r
r��supports_yield_fromr
rwr�)r2r3r4r.r^�envenv�have_extendsrw�import_�imp�alias�module�objrrD�block_framer]s                 r8�visit_TemplatezCodeGenerator.visit_Template�s����}�}�5�}�}�}��t�/���;�;��%�%�%�%�%�%����2�T�Y�Y�}�5M�5M�M�N�N�N����4�t�y�y��7J�7J�J�K�K�K���$�	��N�N�/�
�
�
��_�$�D�)D�J����y�y���/�/�t�;���]�]�5�;�/�/�	,�	,�E��z�T�[�(�(��	�	�2�U�Z�?���N�N�N�&+�D�K��
�#�#��}�}�U�%7�8�8�	E�	E�G��!��)<�<�<��(��37�3L�3L�3N�3N�N��#�C�(�5��#�:�:�"%�*�*�S�!�"4�"4�K�F�C��N�N�N�������U�U�#S�T�T�T�T��N�N�N����U�U�#C�D�D�D��	
���{�T�Y�.�/�/�/�	
���15���6�1B�1B�1B�1B�F�F�F�K�ST�	�	
�	
�	
�	
���
�
�
��������h�����_�T�Y�	�:�:�:�:��-�1�1�&�9�9�C��N�N�<�s�B�C�C�C�
�
�"�"�4�(�(�(�+/�/�����%1�%P�$�:P�6P��"��	5��N�N�3�4�4�4�����������t�y�)�)�)�����	�5�)�)�)�����$��7�7�7��������	;��)�
B����
�
�
����@�A�A�A��K�K�M�M�M�"�

�4�+;�+D�

����U�V�V�V�V����1��'�0�=�X�C��E����
���
�
�
����}�-�-�-��������L�L��$�"8�8�9�:�:�:�%�T�[�1�1�	�	�K�D�%��N�N��9�9�X��_�-�-�-�-�v�v�v�7���	
�
�
�
�K�K�M�M�M���� � � � ��/�/�K�(���5F�G�G�J���#�#�!�)�;�;�F�C�C�����@�3�F�G�G�G��*�$�$�!�)�;�;�G�D�D�����S�S�S�$�$�$�PT�PT�PT�U�V�V�V���,�,�U�3�3�3� $�K�����[�)�)�)��"�"�5�:�.�.�.��O�O�E�J��4�4�4����[�D��A�A�A��L�L�N�N�N�N�����d�i�i�'U�'U���'U�'U�'U�U�U�U��	�	
�	
�	
�	
�������(N�(N�d�o�(N�(N�(N� N� N�N�	
�	
�	
�	
�	
r:c��d}|jrB|jrdS|jdkr.|�d��|���|dz
}|jr|�|��}n|���}tr6|j	j
s*|j�#|�d|j�d|�d�|��nr|j	j
rdpd	}|�|�d
|j�d|�d�|��|���|�
d|��|���|�|��dS)
z.Call a block and register it for the template.rN�if parent_template is None:r
zyield from context.blocks[z][0](r��	async for�forz event in context.blocks[r�event)rsr�r�r�r��scopedrMrIrqrCrrvrDr�r�)r2r3r4rqr��loops      r8r�zCodeGenerator.visit_BlockDso�����>�	��%�
����"�Q�&�&����<�=�=�=����
�
�
���
���;�	-��)�)�%�0�0�G�G��*�*�,�,�G�
 �	��$�-�	���$��N�N�N�:>�)�)�)�W�W�W�M�t�
�
�
�
��#�,�<��E��D��N�N�<@�D�D�$�)�)�)�W�W�W�U��
�
�
�
�K�K�M�M�M����g�u�-�-�-��L�L�N�N�N����U�����r:c���|js|�d|j��|jdkrq|js)|�d��|���|�ddz��|jrt���|���|�d|��|�	|j
|��|�d|jz��|�dtz��|���|�d	��|���|jrd
|_|xjdz
c_dS)
zCalls the extender.z,cannot use extend from a non top-level scoperrb�raise TemplateRuntimeError(%r)zextended multiple timesz+parent_template = environment.get_template(�, %r)z6for name, parent_block in parent_template.blocks.%s():z8context.blocks.setdefault(name, []).append(parent_block)Tr
N)rsr�r�r�r�r�r�r�r�r1�templater�rD�dict_item_iterrt�r2r3r4s   r8�
visit_ExtendszCodeGenerator.visit_Extendsjs_���~�	S��I�I�D�d�k�R�R�R�
���"�"��)�
����@�A�A�A����
�
�
��N�N�;�>W�W�X�X�X��%�
�"�n�n�$����������D�d�K�K�K��
�
�4�=�%�(�(�(��
�
�7�T�Y�&�'�'�'����D�~�U�	
�	
�	
�	
���
�
�
����Q�R�R�R�������
�?�	*�%)�D�"�	
���q� ����r:c�\�|jr)|�d��|���d}t|jt
j��rKt|jjt��rd}nVt|jjttf��rd}n-t|jt
jt
jf��rd}|�d|z|��|�
|j|��|�d|jz��|jr�|���|�d��|���|�d��|���|�d	��|���d
}|jr?|jjrdpd}|�|�d
|�|���d���nV|jjr|�d��n4t*r|�d��d}n|�d��|s>|���|�d|��|���|jr|���dSdS)zHandles includes.ztry:�get_or_select_template�get_template�select_templateztemplate = environment.%s(r�zexcept TemplateNotFound:r�r�Fr}r~zR event in template.root_render_func(template.new_context(context.get_all(), True, z)):zGfor event in (await template._get_default_module_async())._body_stream:z6yield from template._get_default_module()._body_streamTz9for event in template._get_default_module()._body_stream:rN)�ignore_missingr�r�r=r�r�ConstrWrrQrR�Tuple�Listr1r�rDr��with_contextrCrr8rqr�)r2r3r4�	func_name�skip_event_yieldr�s      r8�
visit_IncludezCodeGenerator.visit_Include�s�����	��N�N�6�"�"�"��K�K�M�M�M�,�	��d�m�U�[�1�1�	*��$�-�-�|�<�<�
.�*�	�	��D�M�/�%���?�?�
.�-�	��
��
���U�Z�'@�
A�
A�	*�)�I����3�i�?��F�F�F��
�
�4�=�%�(�(�(��
�
�7�T�Y�&�'�'�'���	��L�L�N�N�N��N�N�5�6�6�6��K�K�M�M�M��N�N�6�"�"�"��L�L�N�N�N��N�N�7�#�#�#��K�K�M�M�M� ����	��#�,�<��E��D��N�N� �4�4��!8�!8��!?�!?�!?�!?�A�
�
�
�
�
�
�
&�
	��N�N�!�
�
�
�
�#�
����W�X�X�X�#'� � ����O���� �	��K�K�M�M�M����g�u�-�-�-��L�L�N�N�N���	��L�L�N�N�N�N�N�	�	r:c��|�d|j�|j��z|��|jr|�d|jz��|jjr|�d��|�d��|�|j	|��|�d|j
z��|jr>|�d|jjrdpd�d	|�|���d
���n7|jjr|�d��n|�d��|jr9|j�
d
��s!|�d|jz��dSdSdS)zVisit regular imports.r�context.vars[%r] = �await zenvironment.get_template(�, %r).�make_module�_asyncr_�(context.get_all(), True, r��_get_default_module_async()�_get_default_module()r�!context.exported_vars.discard(%r)N)r�rrrrrsr�rCrr1r�rDr�r8�
startswithr�s   r8�visit_ImportzCodeGenerator.visit_Import�s������w���!2�!2�4�;�!?�!?�?��F�F�F��>�	<��J�J�,�t�{�:�;�;�;���$�	!��J�J�x� � � ��
�
�.�/�/�/��
�
�4�=�%�(�(�(��
�
�8�d�i�'�(�(�(���	0��J�J�J��$�-�:�(�@�b�@�@��+�+�E�2�2�2�2��
�
�
�
��
�
&�	0��J�J�4�5�5�5�5��J�J�.�/�/�/��>�	N�$�+�"8�"8��"=�"=�	N��N�N�>���L�M�M�M�M�M�	N�	N�	N�	Nr:c���|�|��|�d|jjrdpdz��|�|j���|�d|jz��|jr>|�d|jjrdpd�d|�����d���n7|jjr|�d	��n|�d
��g}g}|j	D�]M}t|t��r|\}}n|}|��j
�|���d|�d���|�d
�j
�|��z��|���|��j
�|���dd|�|���dt#|�����d|�d���|����jr?|�|��|�d��s|�|����O|r�t-|��dkr<|d}|�d|�d�j
�|������n7|�dd��fd�|D����z��|rst-|��dkr |�d|dz��dS|�dd�t1t"|����z��dSdS)zVisit named imports.z/included_template = %senvironment.get_template(r�r_r�r�r�r�r�r�r�z = getattr(included_template, z
, missing)rrzthe template %r (imported on z%) does not export the requested name z$ % included_template.__name__, name=rr
rrUrVzcontext.vars.update({%s})r�c3�V�K�|]#}|�d�j�|����V��$dSr6)rrr)r�rDr4s  �r8r�z1CodeGenerator.visit_FromImport.<locals>.<genexpr>(sP����� � �GK�D�D�D�%�-�*;�*;�D�*A�*A�*A�B� � � � � � r:r�z-context.exported_vars.difference_update((%s))N)r�r�rCrr1r�rDr�r8r^r=rQr�rrrr�r3r-r�rsr�r�rrr)r2r3r4�	var_names�discarded_namesrDrvs  `    r8�visit_FromImportzCodeGenerator.visit_FromImport�s�������T�����
�
�=���(�5�X�;��
=�	
�	
�	
�	
�
�
�4�=�%�(�(�(��
�
�8�d�i�'�(�(�(���	0��J�J�J��$�-�:�(�@�b�@�@��+�+�E�2�2�2�2��
�
�
�
��
�
&�	0��J�J�4�5�5�5�5��J�J�.�/�/�/��	����J�	2�	2�D��$��&�&�
�"���e�e����N�N�"'�-�"3�"3�E�":�":�":�":�D�D�D�B�
�
�
�
�N�N�.���1B�1B�5�1I�1I�I�J�J�J��K�K�M�M�M��N�N�
�M�%�%�e�,�,�,�,�,��}�}�T�*�*�*�*�D��J�J�J�8�8�8��D�D�	�
�
�
�
�L�L�N�N�N��~�
2�� � ��'�'�'��'�'��,�,�2�#�*�*�5�1�1�1���	��9�~�~��"�"� ��|������/3�t�t�U�]�5F�5F�t�5L�5L�5L�M��������/��i�i� � � � �OX� � � ��������	��?�#�#�q�(�(����B�_�UV�EW�W�X�X�X�X�X����#�%)�Y�Y�t�D�/�/J�/J�%K�%K�L������		�	r:c���|���}|���}|���}|jp%dt|�d���d��v}d}|r|j�d��}|j�|d���|jr|j�|d���|j�r�|�	��}|j�|d���|�
d	|�|��z|j��|���|�
|��|�
|jjrd
pd��|�|j|��|�d��|�|jjrd
pd��|�d��|���|�
d|j��|�|j|��|�d��|���|�
d��|�|j|��|�d��|�|d���|jra|�
d|�d��z|��|���|�|��|j|_|r|�
d|z��|�t.j��D]3}	|	jdkr&|	jdkr|�d|	j���4|jr,|�	��}
|�
d|
z��|�
|jjrd
pd|��|�|j|��|r>|jjr|�d|z��n.|�d|z��n|�d��|jr|�d|z��|jr|�d��na|jjr|s|�d��|�|j|��|jjr|s|�d��|jr|�d��|jr|�d ��n|�|rd!pd��|���|�
|��|�|j|��|jr|�
d"|
z��|���|�||jo|j���|jr�|�
d#|
z��|���|�
|��|�|j|��|�|��|���|jr�|� |��|���|�!||��|jjr|�d$��|�d%��|jjr|�d��|�|j|��|jjr|�d��|�d&��|�"|��dSdS)'Nr�)r)�only)r�r)�
for_branch�else�testz
%s(fiter):z
async for zfor r2zauto_aiter(fiter)�fiter�:�if r��Trz'%s(reciter, loop_render_func, depth=0):r�storez8Can't assign to special loop variable in for-loop targetz%s = 1z, %s in AsyncLoopContext(z, %s in LoopContext(z%s(�reciterzauto_aiter(r�z&, undefined, loop_render_func, depth):z
, undefined):z%s = 0zif %s:r�zloop(z, loop))#r��	recursiver`�iter_child_nodesrrr!r�else_r�r�r�rr�r	rCrr1rr�r�r
rvrlr�Namer�rDr�r�rYr�rr�r�r�)r2r3r4�
loop_frame�
test_frame�
else_frame�
extended_loop�loop_ref�loop_filter_funcrD�iteration_indicators           r8�	visit_ForzCodeGenerator.visit_For5s���[�[�]�]�
��[�[�]�]�
��[�[�]�]�
�
��
�&�O��!�!�y�!�1�1�9�5
�5
�+
�
����	D�!�)�;�;�F�C�C�H���'�'���'�@�@�@��:�	E���+�+�D�V�+�D�D�D��9�	A�#�8�8�:�:����+�+�D�V�+�D�D�D��N�N�<�$�)�)�4D�*E�*E�E�t�y�Q�Q�Q��K�K�M�M�M����Z�(�(�(��N�N�4�+�4�E��O��P�P�P��J�J�t�{�J�/�/�/��J�J�v�����J�J�t�'�0�H�5H�S�G�T�T�T��J�J�s�O�O�O��K�K�M�M�M��N�N�5�$�)�,�,�,��J�J�t�y�*�-�-�-��J�J�s�O�O�O��K�K�M�M�M��N�N�8�$�$�$��J�J�t�{�J�/�/�/��L�L��O�O�O����Z�4��@�@�@�
�>�	2��N�N�9�D�I�I�f�<M�<M�M�t�
�
�
�
�K�K�M�M�M��K�K�
�#�#�#�!+� 1�J���	6��N�N�>�H�4�5�5�5��M�M�%�*�-�-�	�	�D��x�7�"�"�t�y�F�':�':��	�	�N��K�����
�:�	;�"&�";�";�"=�"=���N�N�8�&9�9�:�:�:����t�'�0�A�\�K�V�T�R�R�R��
�
�4�;�
�+�+�+��	���(�
>��
�
�6��A�B�B�B�B��
�
�1�H�<�=�=�=�=��J�J�v�����9�	1��J�J�u�/�/�0�0�0��>�	 ��J�J�y�!�!�!�!���(�
*��
*��
�
�=�)�)�)��J�J�t�y�%�(�(�(���(�
 ��
 ��
�
�3�����9�	��J�J�s�O�O�O��>�	A��J�J�?�@�@�@�@��J�J�}�8��?�C�@�@�@����
�
�
�����$�$�$�����	�:�.�.�.��:�	;��N�N�8�&9�9�:�:�:�����������$�.�*K���^�	�	
�	
�	
��:�	��N�N�8�&9�9�:�:�:��K�K�M�M�M����Z�(�(�(��O�O�D�J�
�3�3�3����Z�(�(�(��L�L�N�N�N��>�
	"��'�'�
�3�3�3��L�L�N�N�N����U�D�)�)�)���(�
%��
�
�8�$�$�$��J�J�w������(�
*��
�
�=�)�)�)��J�J�t�y�%�(�(�(���(�
 ��
�
�3�����J�J�y�!�!�!��N�N�5�!�!�!�!�!�
	"�
	"r:c�(�|���}|�d|��|�|j|��|�d��|���|�|j|��|���|j	D]�}|�d|��|�|j|��|�d��|���|�|j|��|�����|j
rZ|�d��|���|�|j
|��|���dSdS)Nr�r�zelif r�)r�r�r1r�r�r�r�rr��elif_r�)r2r3r4�if_framer�s     r8�visit_IfzCodeGenerator.visit_If�sN���:�:�<�<�����u�d�#�#�#��
�
�4�9�h�'�'�'��
�
�3�������
�
�
�����	�8�,�,�,��������Z�	�	�E��N�N�7�E�*�*�*��J�J�u�z�8�,�,�,��J�J�s�O�O�O��K�K�M�M�M��O�O�E�J��1�1�1��L�L�N�N�N�N��:�	��N�N�7�#�#�#��K�K�M�M�M��O�O�D�J��1�1�1��L�L�N�N�N�N�N�		�	r:c��|�||��\}}|���|jrT|j�d��s|�d|jz��|�d|jz��|�d|j�|j��z��|�	||��dS)NrrWr�r)
r*r�rsrDr�r�r�rrrr0)r2r3r4�macro_framer%s     r8�visit_MacrozCodeGenerator.visit_Macro�s���!%����u�!=�!=���Y��������>�	>��9�'�'��,�,�
H��
�
�:�T�Y�F�G�G�G��N�N�0�4�9�<�=�=�=��
�
�7�U�]�.�.�t�y�9�9�9�:�:�:����y�+�.�.�.�.�.r:c��|�||��\}}|�d��|�||��|�||��|�|j|d���|�|��dS)Nz	caller = T)�forward_caller)r*r�r0r��
visit_Call�callr�)r2r3r4�
call_framer%s     r8�visit_CallBlockzCodeGenerator.visit_CallBlock�s��� $����e� <� <��
�I����{�#�#�#����y�*�-�-�-������%�%�%�����	�5���>�>�>����u�����r:c��|���}|j�|��|�|��|�|��|�|j|��|�||��|�|j	|��|�
|��|�|��dSr,)r�rrrr	rvr�rr�r��filterr�r
)r2r3r4�filter_frames    r8�visit_FilterBlockzCodeGenerator.visit_FilterBlock�s����{�{�}�}����)�)�$�/�/�/�����&�&�&����L�!�!�!�����	�<�0�0�0������%�%�%����$�+�|�4�4�4����u��������&�&�&�&�&r:c���|���}|j�|��|�|��t	|j|j��D]Z\}}|���|�||��|�	d��|�||���[|�
|j|��|�|��dS�Nr�)
r�rrrr	r�targets�valuesr�r1r�r�rr
)r2r3r4�
with_framer�exprs      r8�
visit_WithzCodeGenerator.visit_With�s����[�[�]�]�
���'�'��-�-�-�����$�$�$� ���t�{�;�;�	$�	$�L�F�D��L�L�N�N�N��J�J�v�z�*�*�*��J�J�u�����J�J�t�U�#�#�#�#�����	�:�.�.�.�����$�$�$�$�$r:c�f�|�|��|�|j|��dSr,)r�r1r3r�s   r8�visit_ExprStmtzCodeGenerator.visit_ExprStmt�s0�����T�����
�
�4�9�e�$�$�$�$�$r:�
_FinalizeInfo)�const�srcc�h�����j��jS�jx}�d}�jjrid}�jj���fd�}t	�dd��dur|dz
}d}n:t	�dd��dur|d	z
}d}nt	�d
d��dur|dz
}���fd�}��||���_�jS)
a�Build the finalize function to be used on constants and at
        runtime. Cached so it's only created once for all output nodes.

        Returns a ``namedtuple`` with the following attributes:

        ``const``
            A function to finalize constant data at compile time.

        ``src``
            Source code to output around nodes to be evaluated at
            runtime.
        Nzenvironment.finalize(c�,����|����Sr,rl)rWr)�env_finalizes ��r8�finalizez.CodeGenerator._make_finalize.<locals>.finalizes����w�|�|�E�2�2�3�3�3r:�contextfunctionFT�	context, �evalcontextfunction�context.eval_ctx, �environmentfunction�
environment, c�8�����j|����Sr,)rC)rWr)r�r2s ���r8r�z.CodeGenerator._make_finalize.<locals>.finalize's"���"�7�<�<��0@�%�#H�#H�I�I�Ir:)�	_finalize�_default_finalizerCr�r�r�)r2r�r�r)r�s`  @@r8�_make_finalizezCodeGenerator._make_finalizes(������>�%��>�!�!�3�3��7�����$�	J�)�C��+�4�L�
4�
4�
4�
4�
4�
4��|�%6��>�>�$�F�F��{�"�������'<�e�D�D��L�L��+�+�������'<�e�D�D��L�L���&��J�J�J�J�J�J�J��+�+�H�c�:�:����~�r:c�:�tt|����S)z�Given a group of constant values converted from ``Output``
        child nodes, produce a string to write to the template module
        source.
        )r-r)r2�groups  r8�_output_const_reprz CodeGenerator._output_const_repr-s��
�F�5�M�M�"�"�"r:c���|�|j��}|jjrt|��}t	|t
j��rt|��S|�|��S)aCTry to optimize a child of an ``Output`` node by trying to
        convert it to constant, finalized data at compile time.

        If :exc:`Impossible` is raised, the node is not constant and
        will be evaluated at runtime. Any other exception will also be
        evaluated at runtime for easier debugging.
        )	�as_constr.r�rr=r�TemplateDatarr�)r2r3r4r�r�s     r8�_output_child_to_constz$CodeGenerator._output_child_to_const4sf���
�
�e�n�-�-���>�$�	"��5�M�M�E��d�E�.�/�/�	$��U�#�#�#��~�~�e�$�$�$r:c��|jjr|�d��n7|jjr|�d��n|�d��|j�|�|j��dSdS)zXOutput extra source code before visiting a child of an
        ``Output`` node.
        z7(escape if context.eval_ctx.autoescape else to_string)(zescape(z
to_string(N)r.r/r�r�r��r2r3r4r�s    r8�_output_child_prezCodeGenerator._output_child_preGs����>�"�	%��J�J�P�Q�Q�Q�Q�
�^�
&�	%��J�J�y�!�!�!�!��J�J�|�$�$�$��<�#��J�J�x�|�$�$�$�$�$�$�#r:c�l�|�d��|j�|�d��dSdS)zWOutput extra source code after visiting a child of an
        ``Output`` node.
        r�N)r�r�r�s    r8�_output_child_postz CodeGenerator._output_child_postUs6��	
�
�
�3�����<�#��J�J�s�O�O�O�O�O�$�#r:c���|jr2|jrdS|�d��|���|���}g}|jD]�}	|js-t|t
j��stj	���|�
|||��}n1#t
j	tf$r|�|��Y�|wxYw|r7t|dt��r|d�|����|�|g����|j�bt|��dkr|�d|jz��n|�d|jz��|���|D]�}t|t��rN|�|��}|j�|�d|z���L|�|dz���e|j�|�d|��n|�|��|�|||��|�||��|�|||��|j�|�d����|j�>|���|�t|��dkrdnd	��|jr|���dSdS)
Nr|rAr
r�z%s.extend((r�r.r��)))rur�r�r�r�rr�r=r��
Impossibler��	Exceptionr�rRrvrr�r�r�r1r�r�r�)	r2r3r4r�r�childr�rX�vals	         r8�visit_OutputzCodeGenerator.visit_Output^s����%�	��%�
����N�N�8�9�9�9��K�K�M�M�M��&�&�(�(����
�Z�	%�	%�E�
��N�-�"�%��);�<�<�
-� �*�,�,�,��3�3�E�5�(�K�K�����$�i�0�
�
�
����E�"�"�"���
�����
%�
�4��8�T�2�2�
%��R�����&�&�&�&����U�G�$�$�$�$��<�#��4�y�y�A�~�~����|�e�l�:�;�;�;�;����}�u�|�;�<�<�<��K�K�M�M�M��	$�	$�D��$��%�%�
$��-�-�d�3�3���<�'��N�N�8�c�>�2�2�2�2��N�N�3��9�-�-�-�-��<�'��N�N�8�T�2�2�2�2��L�L��&�&�&��&�&�t�U�H�=�=�=��
�
�4��'�'�'��'�'��e�X�>�>�>��<�+��J�J�s�O�O�O���<�#��L�L�N�N�N��N�N�#�d�)�)�q�.�.�3�3�d�;�;�;��%�	��L�L�N�N�N�N�N�	�	s�AB&�&+C�Cc��|���|�|��|�|j|��|�d��|�|j|��|�|��dSr�)rQr�r1rr�r3r\r�s   r8�visit_AssignzCodeGenerator.visit_Assign�s~���!�!�#�#�#����T�����
�
�4�;��&�&�&��
�
�5�����
�
�4�9�e�$�$�$�� � ��'�'�'�'�'r:c��|���|���}d|_|j�|��|�|��|�|��|�|j|��|�	|��|�
|j|��|�d��|j
�|�|j
|��n|�d|jz��|�d��|�|��|�|��dS)NFz9 = (Markup if context.eval_ctx.autoescape else identity)(�
concat(%s)r�)rQr�rurrrr	rvr�rr�r1rr�r�r�r\r
)r2r3r4rys    r8�visit_AssignBlockzCodeGenerator.visit_AssignBlock�s3���!�!�#�#�#��k�k�m�m��,1��(���(�(��.�.�.�����%�%�%����K� � � �����	�;�/�/�/����T�����
�
�4�;��&�&�&��
�
�N�O�O�O��;�"����d�k�;�7�7�7�7��J�J�|�k�&8�8�9�9�9��
�
�3����� � ��'�'�'�����%�%�%�%�%r:c	���|jdkr3|jr,|jr%|jd�|j��|j�|j��}|jdkrh|j�|��}|�&|dtkr|�	|��r&|�
d|j�d|�d|�d���dS|�
|��dS)	Nr�rAr�rz(undefined(name=z) if z is missing else r�)r�rsr�r�rDrrr�	find_loadrrOr�)r2r3r4rr�s     r8r�zCodeGenerator.visit_Name�s����8�w���5�>���!�
6��"�2�&�*�*�4�9�5�5�5��m����	�*�*��
�8�v����=�*�*�3�/�/�D�� ���G�1�1�1��4�4�S�9�9�2��
�
�
��y�y�y�#�#�#�s�s�s�,�������
�
�3�����r:c�4�|j�|j��}|�d|z��|���|�ddz��|���|�|�d|j�d���dS)Nz!if not isinstance(%s, Namespace):r�z/cannot assign attribute on non-namespace objectr�r�)rrrrDr�r�r��attr)r2r3r4rs    r8�visit_NSRefzCodeGenerator.visit_NSRef�s����m����	�*�*�����:�S�@�A�A�A����
�
�
����,�?�
@�	
�	
�	
�	
���������3�3�3��	�	�	�2�3�3�3�3�3r:c���|�|j��}t|t��r$|�t|����dS|�t
|����dSr,)r�r.r=rOr��strr-)r2r3r4r�s    r8�visit_ConstzCodeGenerator.visit_Const�sc���m�m�E�N�+�+���c�5�!�!�	"��J�J�s�3�x�x� � � � � ��J�J�t�C�y�y�!�!�!�!�!r:c���	|�t|�|j������dS#tj$r!|�d|jz��YdSwxYw)Nz9(Markup if context.eval_ctx.autoescape else identity)(%r))r�r-r�r.rr��datar�s   r8�visit_TemplateDataz CodeGenerator.visit_TemplateData�s���	��J�J�t�D�M�M�%�.�9�9�:�:�;�;�;�;�;����	�	�	��J�J�K�d�i�W�
�
�
�
�
�
�	���s�:>�,A.�-A.c��|�d��d}t|j��D]2\}}|r|�d��|�||���3|�|dkrdpd��dS)Nr�rAr�rz,)r��r�rr'r1�r2r3r4r(rXs     r8�visit_TuplezCodeGenerator.visit_Tuples����
�
�3������"�4�:�.�.�	$�	$�I�C���
!��
�
�4� � � ��J�J�t�U�#�#�#�#��
�
�3�!�8�$��+��,�,�,�,�,r:c���|�d��t|j��D]2\}}|r|�d��|�||���3|�d��dS)Nr�r�r�rr
s     r8�
visit_ListzCodeGenerator.visit_Listsr���
�
�3����"�4�:�.�.�	$�	$�I�C���
!��
�
�4� � � ��J�J�t�U�#�#�#�#��
�
�3�����r:c�R�|�d��t|j��D]g\}}|r|�d��|�|j|��|�d��|�|j|���h|�d��dS)N�{r�r�r�)r�rr'r1rYrWr
s     r8�
visit_DictzCodeGenerator.visit_Dicts����
�
�3����"�4�:�.�.�	*�	*�I�C���
!��
�
�4� � � ��J�J�t�x��'�'�'��J�J�t�����J�J�t�z�5�)�)�)�)��
�
�3�����r:c�,��t�fd���}|S)Nc����|jjrr�|jjvrd|�d�z��|�|j|��|�d��|�|j|��nc|�d��|�|j|��|�d�z��|�|j|��|�d��dS)Nz$environment.call_binop(context, %r, r�r�� %s r�)rC�	sandboxed�intercepted_binopsr�r1�left�right�r2r3r4�operators   �r8r_z$CodeGenerator.binop.<locals>.visitors����� �*�
.��� 0� C�C�C��
�
�A�H�L�M�M�M��
�
�4�9�e�,�,�,��
�
�4� � � ��
�
�4�:�u�-�-�-�-��
�
�3�����
�
�4�9�e�,�,�,��
�
�6�H�,�-�-�-��
�
�4�:�u�-�-�-��J�J�s�O�O�O�O�Or:�r;�r�
interceptabler_s`  r8�binopzCodeGenerator.binops-���	�	�	�	�	�
��	� �r:c�,��t�fd���}|S)Nc�4��|jjrB�|jjvr4|�d�z��|�|j|��n3|�d�z��|�|j|��|�d��dS)Nz#environment.call_unop(context, %r, r�r�)rCr�intercepted_unopsr�r1r3rs   �r8r_z#CodeGenerator.uaop.<locals>.visitor2s����� �*�
-��� 0� B�B�B��
�
�@�8�K�L�L�L��
�
�4�9�e�,�,�,�,��
�
�3��>�*�*�*��
�
�4�9�e�,�,�,��J�J�s�O�O�O�O�Or:rrs`  r8�uaopzCodeGenerator.uaop1s-���	�
	�
	�
	�
	�
��
	��r:�+�-�*�/z//z**�%�and)r�orznot c�
�|jjrd}n|jjrd}nd}|�d|z��|jD]-}|�||��|�d���.|�d��dS)Nz;(context.eval_ctx.volatile and markup_join or unicode_join)�markup_join�unicode_joinz%s((r�r�)r.r/r�r�rr1)r2r3r4r�r�s     r8�visit_ConcatzCodeGenerator.visit_ConcatOs����>�"�	'�U�I�I�
�^�
&�	'�%�I�I�&�I��
�
�6�I�%�&�&�&��:�	�	�C��J�J�s�E�"�"�"��J�J�t������
�
�4�����r:c���|�d��|�|j|��|jD]}|�||���|�d��dS)Nr�r�)r�r1r��ops)r2r3r4�ops    r8�
visit_ComparezCodeGenerator.visit_Compare]sb���
�
�3�����
�
�4�9�e�$�$�$��(�	"�	"�B��J�J�r�5�!�!�!�!��
�
�3�����r:c��|�dt|jz��|�|j|��dS)Nr)r��	operatorsr2r1r�r�s   r8�
visit_OperandzCodeGenerator.visit_Operandes<���
�
�6�I�d�g�.�.�/�/�/��
�
�4�9�e�$�$�$�$�$r:c�(�|jjr|�d��|�d��|�|j|��|�d|jz��|jjr|�d��dSdS)N�(await auto_await(zenvironment.getattr(r�r�)rCrr�r1r3rr�s   r8�
visit_GetattrzCodeGenerator.visit_Getattris�����$�	-��J�J�+�,�,�,��
�
�)�*�*�*��
�
�4�9�e�$�$�$��
�
�7�T�Y�&�'�'�'���$�	��J�J�t������	�	r:c�z�t|jtj��rb|�|j|��|�d��|�|j|��|�d��dS|jjr|�d��|�d��|�|j|��|�d��|�|j|��|�d��|jjr|�d��dSdS)Nr�r�r8zenvironment.getitem(r�r�r�)	r=r�r�Slicer1r3r�rCrr�s   r8�
visit_GetitemzCodeGenerator.visit_Getitemus���d�h���,�,�	!��J�J�t�y�%�(�(�(��J�J�s�O�O�O��J�J�t�x��'�'�'��J�J�s�O�O�O�O�O���(�
1��
�
�/�0�0�0��J�J�-�.�.�.��J�J�t�y�%�(�(�(��J�J�t�����J�J�t�x��'�'�'��J�J�s�O�O�O���(�
!��
�
�4� � � � � �
!�
!r:c�*�|j�|�|j|��|�d��|j�|�|j|��|j�2|�d��|�|j|��dSdS)Nr�)�startr1r��stopr�r�s   r8�visit_SlicezCodeGenerator.visit_Slice�s����:�!��J�J�t�z�5�)�)�)��
�
�3�����9� ��J�J�t�y�%�(�(�(��9� ��J�J�s�O�O�O��J�J�t�y�%�(�(�(�(�(�!� r:c���|jjr|�d��|�|j|jdz��|jj�|j��}|�#|�d|jz|j��t|dd��dur|�d��nQt|dd��dur|�d	��n(t|d
d��dur|�d��|j	�|�
|j	|��nz|jjr'|�d|j
�d
|j
�d���nG|jjr|�d|j
z��n|�d|j
z��|�||��|�d��|jjr|�d��dSdS)N�await auto_await(r�zno filter named %r�
contextfilterFTr��evalcontextfilterr��environmentfilterr�z/(context.eval_ctx.autoescape and Markup(concat(z
)) or concat(r�zMarkup(concat(%s))r�r�)rCrr�r�rD�getr�r�r�r3r1r.r/rvr�r�)r2r3r4rs    r8r�zCodeGenerator.visit_Filter�s�����$�	,��J�J�*�+�+�+��
�
�4�<��	�*�S�0�1�1�1���'�+�+�D�I�6�6���<��I�I�*�T�Y�6���D�D�D��4��%�0�0�D�8�8��J�J�{�#�#�#�#�
�T�.��
6�
6�$�
>�
>��J�J�+�,�,�,�,�
�T�.��
6�
6�$�
>�
>��J�J��'�'�'��9� ��J�J�t�y�%�(�(�(�(�
�^�
$�	4��J�J�J�8=����e�l�l�l�T�
�
�
�
��^�
&�	4��J�J�+�e�l�:�;�;�;�;��J�J�|�e�l�2�3�3�3����t�U�#�#�#��
�
�3������$�	��J�J�s�O�O�O�O�O�	�	r:c�N�|�|j|jdz��|j|jjvr#|�d|jz|j��|�|j|��|�||��|�d��dS)Nr�zno test named %rr�)	r�r�rDrCr�r�r1r3r�r�s   r8r�zCodeGenerator.visit_Test�s����
�
�4�:�d�i�(�3�.�/�/�/��9�D�,�2�2�2��I�I�(�4�9�4�d�k�B�B�B��
�
�4�9�e�$�$�$����t�U�#�#�#��
�
�3�����r:c�B�������fd�}��d�����j�����d�����j�����d��|����d��dS)Nc����j����j���S��dd�����zz��dS)Nzcond_expr_undefined(%r)zRthe inline if-expression on %s evaluated to false and no else section was defined.)�expr2r1r�r3)r4r3r2s���r8�write_expr2z1CodeGenerator.visit_CondExpr.<locals>.write_expr2�sc����z�%��z�z�$�*�e�4�4�4��J�J�)�3�59�]�]�4�5H�5H�I��
�
�
�
�
r:r�z if z else r�)r�r1�expr1r�)r2r3r4rKs``` r8�visit_CondExprzCodeGenerator.visit_CondExpr�s������
	�
	�
	�
	�
	�
	�
	�	
�
�
�3�����
�
�4�:�u�%�%�%��
�
�6�����
�
�4�9�e�$�$�$��
�
�8������
�
�
��
�
�3�����r:c��|jjr|�d��|jjr|�d��n|�d��|�|j|��|rddipd}|�|||��|�d��|jjr|�d��dSdS)NrBzenvironment.call(context, z
context.call(rr�)rCrr�rr1r3r�)r2r3r4r�r�s     r8r�zCodeGenerator.visit_Call�s�����$�	,��J�J�*�+�+�+���%�	(��J�J�3�4�4�4�4��J�J��'�'�'��
�
�4�9�e�$�$�$�%�>�8�X�*>�F�$�����t�U�L�1�1�1��
�
�3������$�	��J�J�s�O�O�O�O�O�	�	r:c�v�|�|jdz��|�|j|��dS)Nr�)r�rYr1rWr�s   r8�
visit_KeywordzCodeGenerator.visit_Keyword�s6���
�
�4�8�c�>�"�"�"��
�
�4�:�u�%�%�%�%�%r:c��|�d��|�|j|��|�d��dS)NzMarkup(r��r�r1r�r�s   r8�visit_MarkSafezCodeGenerator.visit_MarkSafe�s=���
�
�9�����
�
�4�9�e�$�$�$��
�
�3�����r:c��|�d��|�|j|��|�d��dS)Nz5(context.eval_ctx.autoescape and Markup or identity)(r�rRr�s   r8�visit_MarkSafeIfAutoescapez(CodeGenerator.visit_MarkSafeIfAutoescape�s>���
�
�J�K�K�K��
�
�4�9�e�$�$�$��
�
�3�����r:c�@�|�d|jz��dS)Nzenvironment.�r�rDr�s   r8�visit_EnvironmentAttributez(CodeGenerator.visit_EnvironmentAttribute�s!���
�
�>�D�I�-�.�.�.�.�.r:c�P�|�d|j�d|j����dS)Nzenvironment.extensions[z].)r��
identifierrDr�s   r8�visit_ExtensionAttributez&CodeGenerator.visit_ExtensionAttribute�s+���
�
�
�d�o�o�o�t�y�y�Q�R�R�R�R�Rr:c�P�|�|j|j��dSr,)r�r�ror�s   r8�visit_ImportedNamez CodeGenerator.visit_ImportedName�s$���
�
�4�&�t��7�8�8�8�8�8r:c�:�|�|j��dSr,rWr�s   r8�visit_InternalNamez CodeGenerator.visit_InternalName�s���
�
�4�9�����r:c�0�|�d��dS)Nr�)r�r�s   r8�visit_ContextReferencez$CodeGenerator.visit_ContextReference�s���
�
�9�����r:c�V�|�|�|����dSr,)r�rMr�s   r8�visit_DerivedContextReferencez+CodeGenerator.visit_DerivedContextReferences(���
�
�4�&�&�u�-�-�.�.�.�.�.r:c�2�|�d|��dS)N�continuer:r�s   r8�visit_ContinuezCodeGenerator.visit_Continues�����z�4�(�(�(�(�(r:c�2�|�d|��dS)N�breakr:r�s   r8�visit_BreakzCodeGenerator.visit_Breaks�����w��%�%�%�%�%r:c���|���}|j�|��|�|��|�|j|��|�|��dSr,)r�rrrr	r�rr
)r2r3r4�scope_frames    r8�visit_ScopezCodeGenerator.visit_Scopesj���k�k�m�m����(�(��.�.�.�����%�%�%�����	�;�/�/�/�����%�%�%�%�%r:c�*�|���}|�|�d|�|������|�d|z��|�|j|��|�|��|�d���}|j�|��|�	|��|�
|j|��|�|��|�
��dS)Nr�z
%s.vars = T)r�)r�r�rMr1r�rDr�rrrr	r�rr
rF)r2r3r4r�rks     r8�visit_OverlayScopez CodeGenerator.visit_OverlayScopes���'�'�)�)�����C�C�C��)<�)<�U�)C�)C�)C�D�E�E�E����|�c�)�*�*�*��
�
�4�<��'�'�'��#�#�C�(�(�(��k�k�4�k�0�0����(�(��.�.�.�����%�%�%�����	�;�/�/�/�����%�%�%��"�"�$�$�$�$�$r:c�B�|jD]�}|�d|jz��|�|j|��	|j�|j��}t|j|j|���v#tj	$rd|j_
Y��wxYwdS)Nzcontext.eval_ctx.%s = T)�optionsr�rYr1rWr�r.�setattrrr�r/)r2r3r4�keywordr�s     r8�visit_EvalContextModifierz'CodeGenerator.visit_EvalContextModifier s����|�	:�	:�G��N�N�3�g�k�A�B�B�B��J�J�w�}�e�,�,�,�
:��m�,�,�U�^�<�<�������S�9�9�9�9���#�
/�
/�
/�*.���'�'�'�
/����	:�	:s�A>�>B�Bc�`�|���}|j���}|�d|z��|�||��|jD]}|�||���|j�|��|�d|z��dS)Nz%s = context.eval_ctx.save()zcontext.eval_ctx.revert(%s))r�r.�saver�rsrr1�revert)r2r3r4�old_ctx_name�	saved_ctxr�s      r8�visit_ScopedEvalContextModifierz-CodeGenerator.visit_ScopedEvalContextModifier+s����0�0�2�2���N�'�'�)�)�	����5��D�E�E�E��&�&�t�U�3�3�3��Y�	%�	%�E��J�J�u�e�$�$�$�$�
����i�(�(�(����4�|�C�D�D�D�D�Dr:�NFTr�)r
r,)Nr)T)orirjrkrhr�r�rvr�r�r�r�r�r�r�r�r�r�r�r�r	r
rr*r0r3r8r;r"r$r#rDrFrIrrMrOrQr\rzr�r�r�r�r�r�r�r�r�r�r�r�rr�rr�r�r�r�r�r�r�r�r�r�r�rrr
rrrr r$�	visit_Add�	visit_Sub�	visit_Mul�	visit_Div�visit_FloorDiv�	visit_Pow�	visit_Mod�	visit_And�visit_Or�	visit_Pos�	visit_Neg�	visit_Notr;r/r3r6r9r<r@r�r�rMr�rPrSrUrXr[r]r_rarcrfrirlrnrsryrlr:r8r�r��s
������TX�@4�@4�@4�@4�HL�L�L�.�.�.�
1�1�1�
;�;�;�;�$���"�"�"�"�>�>�>�>����
����	�	�	��������
*�*�*�*�3/�3/�3/�3/�j���@�@�@� D�D�D�D����
N �N �N �`
�
�
�$���
�
�
�
+�
+�
+�I�I�I�$�$�$�6�6�6�5�5�5�,�,�,�1�1�1�%�%�%�
�
�
�3�3�3�)�)�)����>z
�z
�z
�z
�x$�$�$�L+!�+!�+!�Z8�8�8�tN�N�N�2I�I�I�VD"�D"�D"�L���*/�/�/����	'�	'�	'�
%�
%�
%�%�%�%��J��0@�A�A�M�"���I�'�'�'�R#�#�#�%�%�%�&%�%�%����M�M�M�^(�(�(�&�&�&�0���04�4�4�"�"�"����-�-�-�����������(���� ��c�
�
�I���c�
�
�I���c�
�
�I���c�
�
�I��U�4�[�[�N���d���I���c�
�
�I���e�5�1�1�1�I��u�T��/�/�/�H���S�	�	�I���S�	�	�I���V�5�1�1�1�I�
�t�����]������]��%�%�%��	�	��]�	��!�!��]�!�()�)�)�����]��@����]������]��*�����]��&�&�&����
���
/�/�/�S�S�S�9�9�9�������/�/�/�)�)�)�&�&�&�&�&�&�%�%�%�	:�	:�	:�E�E�E�E�Er:r�rz)=r��collectionsr�	functoolsr�	itertoolsrrrrr��
markupsaferr	r_r�_compatrr
rrrrr�
exceptionsr�
idtrackingrrrrrrr0r�utilsrr_rr5�hasattrrVr�ri�execr��SyntaxErrorrqr;rHrUr`rzrbrn�RuntimeErrorr\r�r[r�r�r�rlr:r8�<module>r�s7��6�6�"�"�"�"�"�"�$�$�$�$�$�$�������2�2�2�2�2�2�������������������������������������#�#�#�#�#�#�������!�!�!�!�!�!�������.�.�.�.�.�.�������&�&�&�&�&�&�*�*�*�*�*�*�(�(�(�(�(�(�*�*�*�*�*�*������� � � � � � ������� � � � � � ��
�

��

��
�
�	
�	
�	��7�4����� �N�N��N���
�	��D�	0�1�1�1����)�*�*�*�*���	�	�	��D�	������D�	"�#�#�#������ � � ����� ����	'�	'�	'�QU�+�+�+�+����*
�
�
�&�&�&�&�&�v�&�&�&�:�:�:�:�:�F�:�:�:�zJ�J�J�J�J�,�J�J�J�'�'�'�'�'�k�'�'�'�&&�&�&�&�&�K�&�&�&�,�����9����|E�|E�|E�|E�|E�K�|E�|E�|E�|E�|Es$�3 C�C�C� C.�.C8�7C8

Youez - 2016 - github.com/yon3zu
LinuXploit