diff --git a/Episode 00 - Template/Main.py b/Episode 00 - Template/Main.py index 4115ceb4..f225dc0c 100644 --- a/Episode 00 - Template/Main.py +++ b/Episode 00 - Template/Main.py @@ -1,3 +1,4 @@ print("helo dunia!!!!!!!") print("apa kabar kalian?") -print("instalasi berhasil") \ No newline at end of file +print("instalasi berhasil") +printf("ini coba coba bang") diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/django-admin b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/django-admin old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/django-admin.py b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/django-admin.py old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/easy_install b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/easy_install old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/easy_install-3.6 b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/easy_install-3.6 old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/f2py b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/f2py old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/pip b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/pip old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/pip3 b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/pip3 old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/pip3.6 b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/pip3.6 old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python deleted file mode 120000 index b8a0adbb..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python +++ /dev/null @@ -1 +0,0 @@ -python3 \ No newline at end of file diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python new file mode 100644 index 00000000..b8a0adbb --- /dev/null +++ b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python3 b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python3 deleted file mode 120000 index 6b2efc80..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python3 +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 \ No newline at end of file diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python3 b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python3 new file mode 100644 index 00000000..6b2efc80 --- /dev/null +++ b/Versi Lama 34 - Virtual Environment/Environment/project1/bin/python3 @@ -0,0 +1 @@ +/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 \ No newline at end of file diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/Django-2.0.2.dist-info/RECORD b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/Django-2.0.2.dist-info/RECORD index 3841680f..43b9b91e 100644 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/Django-2.0.2.dist-info/RECORD +++ b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/Django-2.0.2.dist-info/RECORD @@ -1,4174 +1,4174 @@ -../../../bin/django-admin.py,sha256=OOv0QKYqhDD2O4X3HQx3gFFQ-CC7hSLnWuzZnQXeiiA,115 -Django-2.0.2.dist-info/DESCRIPTION.rst,sha256=OCTuuN6LcWulhHS3d5rfjdsQtW22n7HENFRh6jC6ego,10 -Django-2.0.2.dist-info/LICENSE.txt,sha256=uEZBXRtRTpwd_xSiLeuQbXlLxUbKYSn5UKGM0JHipmk,1552 -Django-2.0.2.dist-info/METADATA,sha256=2EB47t_FbGQegCzaJky9FPY9UrDmz8MSmUTHGgKO4jo,1416 -Django-2.0.2.dist-info/RECORD,, -Django-2.0.2.dist-info/WHEEL,sha256=8Lm45v9gcYRm70DrgFGVe4WsUtUMi1_0Tso1hqPGMjA,92 -Django-2.0.2.dist-info/entry_points.txt,sha256=daYW_s0r8Z5eiRi_bNU6vodHqVUXQWzm-DHFOQHTV2Q,83 -Django-2.0.2.dist-info/metadata.json,sha256=I_hnWAuICPnX-re_A_sCgpVKTT39lRYBsdNoCQ9klrE,1724 -Django-2.0.2.dist-info/top_level.txt,sha256=V_goijg9tfO20ox_7os6CcnPvmBavbxu46LpJiNLwjA,7 -django/__init__.py,sha256=ZFCYEVK3Qz5h_uHO7MS0APF6ii9nDg58hARUO4DP-Z8,799 -django/__main__.py,sha256=9a5To1vQXqf2Jg_eh8nLvIc0GXmDjEXv4jE1QZEqBFk,211 -django/shortcuts.py,sha256=d1jMwK1YgOlbORjIHB-vsrFGLMzMJUZY94a1T24LkKo,5574 -django/apps/__init__.py,sha256=t0F4yceU4SbybMeWBvpuE6RsGaENmQCVbNSdSuXiEMs,90 -django/apps/config.py,sha256=meyWjXLt0qgPfqM14KGaWsZakbga-wuHXsu2gkHyQ-s,8047 -django/apps/registry.py,sha256=rvRxqCTbLRjxxqPcV5Sm2D5D7rmtFyzuDbBEKU4z5xk,17220 -django/bin/django-admin.py,sha256=FWxg_nmLPNGqXwSMw0QvZsKNQsiVBHrSsNfgALIXqQ0,128 -django/conf/__init__.py,sha256=mFe5TxmoKTgqXEDRjqLOhwBQPz-TNEjQQakBcpVzkbY,7437 -django/conf/global_settings.py,sha256=QMugwAHe6GGHqpxV9M8eKhn_iLlRSnpymfIsYhc3zgw,22040 -django/conf/app_template/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/app_template/admin.py-tpl,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63 -django/conf/app_template/apps.py-tpl,sha256=lZ1k1B3K5ntPWSn-CSd0cvDuijeoQE43wztE0tXyeMQ,114 -django/conf/app_template/models.py-tpl,sha256=Vjc0p2XbAPgE6HyTF6vll98A4eDhA5AvaQqsc4kQ9AQ,57 -django/conf/app_template/tests.py-tpl,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60 -django/conf/app_template/views.py-tpl,sha256=xc1IQHrsij7j33TUbo-_oewy3vs03pw_etpBWaMYJl0,63 -django/conf/app_template/migrations/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/__init__.py,sha256=Cdnzc1w8PQMTASYhYm_LzJsmCYlGch9SijWoHzWwbMc,12502 -django/conf/locale/af/LC_MESSAGES/django.mo,sha256=oO8Q8uo31WbyeXWMlhClD2zAxGaMsbtktlX36H6Zl5I,19601 -django/conf/locale/af/LC_MESSAGES/django.po,sha256=HYviyVp2v3RyrgemBfKclJRSt1Hk71dRt2pUtjMHvV4,25003 -django/conf/locale/ar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ar/formats.py,sha256=XBXR6_xAY_oHs5rAu5YGJii6-yenWQJ2HFqtyava8rs,694 -django/conf/locale/ar/LC_MESSAGES/django.mo,sha256=6cugqE9KpudwHt4yr_qBqazc-WNVth60LPfSrEnekIQ,30712 -django/conf/locale/ar/LC_MESSAGES/django.po,sha256=9tVjHdBZa3DDYWeHGdwaHpik-RbDTf3PFZl90iEDgNo,35055 -django/conf/locale/ast/LC_MESSAGES/django.mo,sha256=kmN-K4eQG_EvU565NnThO5qSkfcIMLXizk57RoM0YmM,16665 -django/conf/locale/ast/LC_MESSAGES/django.po,sha256=WnsaXWzvgTohaW7h5L6H5FG7QM8y5FifzB3GaahFLQY,23619 -django/conf/locale/az/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/az/formats.py,sha256=qAxKv_-_ubsfH4qdtvvgCqDirBh9TnuemaLzdC5D5-s,1189 -django/conf/locale/az/LC_MESSAGES/django.mo,sha256=FrJmdBMwFu2tX12djk8B_QfPQKwwL7Zkyx-K6Ua-6RA,19457 -django/conf/locale/az/LC_MESSAGES/django.po,sha256=ZyqOTC22KTFhIKGWXqBtxExu8cMA-x8Ir34Oph3R_hw,24955 -django/conf/locale/be/LC_MESSAGES/django.mo,sha256=IxeJVl8TKn7HAi9VLoWmv8wAfo_pm6x4BVLOva_0rvg,34723 -django/conf/locale/be/LC_MESSAGES/django.po,sha256=kgt3xyXCb3FdmIyYe1XPSoRFsjxbYPXHJijwD2RydwE,36995 -django/conf/locale/bg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/bg/formats.py,sha256=K9JbkJuXdmr8z1KAACBvDxa8mIJIQ8-DfHLlvjkfm38,703 -django/conf/locale/bg/LC_MESSAGES/django.mo,sha256=oSaycuek5hekuOlUDZvgBWiC8pprSjVlhsPyQqnF2Ss,29687 -django/conf/locale/bg/LC_MESSAGES/django.po,sha256=STgBTki870oeyGqYyPPlyg4WmkdzlDvAUAhsBwHsWTs,32975 -django/conf/locale/bn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/bn/formats.py,sha256=1O63vMDv5MG9um4AvMREKAoqlOZyC46WMEWG9q8PMS8,962 -django/conf/locale/bn/LC_MESSAGES/django.mo,sha256=K7EKhxgCWLfWGA8MenkboQ_pNwo45lAkwrZkGrjIc-c,17250 -django/conf/locale/bn/LC_MESSAGES/django.po,sha256=CUr8W_emf9KSw8z-F26P7drK6z_CCovR9AjWycLpAP4,26693 -django/conf/locale/br/LC_MESSAGES/django.mo,sha256=7bGRE2oO2IICAbPgDCB1Sg_8ljqGvcs-YGsOespgPKo,14948 -django/conf/locale/br/LC_MESSAGES/django.po,sha256=U5SoZEn-03J1MGF76dtjNuCcEqslQEJJOl46RiNnK4Q,22771 -django/conf/locale/bs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/bs/formats.py,sha256=iuBajy6bgF-2V0j5xZjv9832ToLnUMyRvzVDK4vqO74,703 -django/conf/locale/bs/LC_MESSAGES/django.mo,sha256=DKLskkhih8rc42NtUXt-OZXD7r983w9Ddc4qSmakFis,11073 -django/conf/locale/bs/LC_MESSAGES/django.po,sha256=H4rrXQrd0ph_bHUvxgncbH29mhwtm2__XGo7QhH-ROY,21671 -django/conf/locale/ca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ca/formats.py,sha256=rPWIibPg8b8w7NwBy7rohbFEFcxTPrkrSjv_MP2CYBY,949 -django/conf/locale/ca/LC_MESSAGES/django.mo,sha256=h7GJelxKdhaHwVo7tsVhBfnkOOiN6WAARq70pNk__vk,23602 -django/conf/locale/ca/LC_MESSAGES/django.po,sha256=343ow5vc51Tlljd1wuJGJyDT2M1eKBsKUWAnCOVW47g,26986 -django/conf/locale/cs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/cs/formats.py,sha256=tlbaEQ994P6Bj-UliXagMW4Yu1D_neGspDOaQLL5HlU,1635 -django/conf/locale/cs/LC_MESSAGES/django.mo,sha256=P4HhR6_GMVxh91AVwSff8B044Zprfzz9JPRHK9mIgSA,27206 -django/conf/locale/cs/LC_MESSAGES/django.po,sha256=_XDU6clyHyzOuZALSTdnG7QGwiZ06VD3jd8CohcZRwA,29391 -django/conf/locale/cy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/cy/formats.py,sha256=WKp8F3IiISrgxXItSpIB1c0a8xFY8CsEzqXMQRYbsPQ,1755 -django/conf/locale/cy/LC_MESSAGES/django.mo,sha256=CJL04VXl3vjRWff93fzWDLeEJPw_Il7G5YzjCHdZZok,22280 -django/conf/locale/cy/LC_MESSAGES/django.po,sha256=C14r9gUOnCV5fNb4YZ-NN-fnLlZl1xHBP3H0tu-LgRk,27045 -django/conf/locale/da/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/da/formats.py,sha256=YQaL8Y3H0AOPvJzxwiDXwtqrbY0EyHNGtfMu4BGha0Y,939 -django/conf/locale/da/LC_MESSAGES/django.mo,sha256=dPsLukRWrR5r2aCOX1XQ3asDFWSIzsQSeHq_0BWev5Y,25647 -django/conf/locale/da/LC_MESSAGES/django.po,sha256=XnFp_eWVFEOjcV9Itf2GUvlXsepSNeqzghnTCc57b3o,27690 -django/conf/locale/de/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/de/formats.py,sha256=yPGP3kCbQCU0VY3P-Kuxx2yl7eWFMsMtGu5xzDdr6jo,1033 -django/conf/locale/de/LC_MESSAGES/django.mo,sha256=b6y542k7Nq5UxezQr9fZzciSW4s46wYqTwL7B-suGgg,27098 -django/conf/locale/de/LC_MESSAGES/django.po,sha256=2QIe6vGtkh8a-L0nY_sL_wO_nBJ8-MgEuylz0hPPpfs,29126 -django/conf/locale/de_CH/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/de_CH/formats.py,sha256=a6uQQxZrtRAd_8GesmMEjWa-quvjBq3gJ5Ka17sy1yM,1377 -django/conf/locale/dsb/LC_MESSAGES/django.mo,sha256=dU5WKb8hS__Iy-H5Q1HeLgNK_LyZ96KOAOj_2s0E1eI,28362 -django/conf/locale/dsb/LC_MESSAGES/django.po,sha256=YE4oOqyXRuHtqc0NuOP8544aUG4GjRVZXGFDU7BJtBU,30549 -django/conf/locale/el/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/el/formats.py,sha256=0WF_ISbYSN0NtPuOk1sFsYITCPb3IG2jEaAxVSXLaqU,1385 -django/conf/locale/el/LC_MESSAGES/django.mo,sha256=qjPNmi81vdMnfgpvNVjv6QI2CslBIlMq9dKKaT17D3k,32036 -django/conf/locale/el/LC_MESSAGES/django.po,sha256=AiuSDxNIfaeItrzgk46v88hfwdEqb62r6YuTy4FBvBc,35102 -django/conf/locale/en/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/en/formats.py,sha256=HImytl2xU0ui_bdhmp6GZWLqfHIRf_1iidtajlfgh7g,1748 -django/conf/locale/en/LC_MESSAGES/django.mo,sha256=mVpSj1AoAdDdW3zPZIg5ZDsDbkSUQUMACg_BbWHGFig,356 -django/conf/locale/en/LC_MESSAGES/django.po,sha256=WROjQo_CcfZJGOtsH-Ep0CTxXdMWYrzNhD9IXMcoa30,28066 -django/conf/locale/en_AU/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/en_AU/formats.py,sha256=TnVSM6iUeAMqyfDNLnjGKwBiziVA7gwvokERm549Zzw,2050 -django/conf/locale/en_AU/LC_MESSAGES/django.mo,sha256=vx8-wkZxPq-WseGghwXuLAK5MdDsRScKnrgBATVarwc,16288 -django/conf/locale/en_AU/LC_MESSAGES/django.po,sha256=-9v7S5GrwT9045EePAWwUIqtXmOo_9W9dRQ6kFsCBmQ,23221 -django/conf/locale/en_GB/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/en_GB/formats.py,sha256=wp-VCJ2IY5nEjQSejomReMG2YyE_6ra4hEiSbYFt6yI,2050 -django/conf/locale/en_GB/LC_MESSAGES/django.mo,sha256=whAV7H3YTMcdt-gFyKY5naykTaV19x1gZoO8SJh2_TI,13133 -django/conf/locale/en_GB/LC_MESSAGES/django.po,sha256=vpqOmBh0ccf7P5-lcwFgxUhCJw35BWi39aALjmEa5nY,22060 -django/conf/locale/eo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/eo/formats.py,sha256=rNeBMpv6p-eJSzdZvTyGuDDDIm3xY7FKsEpeyFZ05p0,2268 -django/conf/locale/eo/LC_MESSAGES/django.mo,sha256=_69wzsjZ_TVeVNnQh2fqf2TTaWhtWffOpJGpnhrpXlc,23163 -django/conf/locale/eo/LC_MESSAGES/django.po,sha256=Q0lnN6zJ1dzXYrUCKEUqW4sIq3FTKw3yhtsQOb0YZ5c,26628 -django/conf/locale/es/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es/formats.py,sha256=xks_4TjYTSGyz9cIYaE8OM3wbueP3ooM2QTsqNPOMF8,947 -django/conf/locale/es/LC_MESSAGES/django.mo,sha256=6Ky02Z4XSO36xG1qVcJ1e8Pi44EM6xGGbkzoOyozzS8,26351 -django/conf/locale/es/LC_MESSAGES/django.po,sha256=aNH_N2BZmk8ysiPgD_AQcPPoZ7npDsbiFVPITX8UDfg,29080 -django/conf/locale/es_AR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_AR/formats.py,sha256=vhHFN4lkzOQARRXhgt5s8M7ITTLZMMLVwbjby-Y_UEk,933 -django/conf/locale/es_AR/LC_MESSAGES/django.mo,sha256=3DhKGVuSoZFkpi0ikLShRAppMfpHdJDwdpJGRVhsB8Q,26793 -django/conf/locale/es_AR/LC_MESSAGES/django.po,sha256=gwW4R0-DWtORr2sB_0sE5dvPactzxOltwh1bdmNtWi0,28697 -django/conf/locale/es_CO/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_CO/formats.py,sha256=kvTsKSaK7oDWK6a-SeO3V3e__64SjtDBMWoq0ouVDJ4,700 -django/conf/locale/es_CO/LC_MESSAGES/django.mo,sha256=bXSa4kJtVu9xeQOFgP7RTfirJgEynWk4R32KSKjEezM,22791 -django/conf/locale/es_CO/LC_MESSAGES/django.po,sha256=8X_pdt0Amtvbw3AZUE_fKMy20ItYR-zS1caqnHxKjIE,26533 -django/conf/locale/es_MX/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_MX/formats.py,sha256=vrMMOSU8lh48jeVc1y69jdgSSI-AFLXp5-UbmH7zT0w,824 -django/conf/locale/es_MX/LC_MESSAGES/django.mo,sha256=0WYdCPgyC0XpF8to_bbyw__IRA5LGj8izt8DoCH1m6I,15095 -django/conf/locale/es_MX/LC_MESSAGES/django.po,sha256=rwJvZGP-6uQX1bvQSW4pVE4y4dfriVZOCfkWRzC9QBI,23042 -django/conf/locale/es_NI/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_NI/formats.py,sha256=QMfHoEWcpR_8yLaE66w5UjmPjtgTAU7Yli8JHgSxGRI,740 -django/conf/locale/es_PR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_PR/formats.py,sha256=mYKWumkfGElGDL92G0nO_loBoSOOFKs0ktsI3--nlLQ,671 -django/conf/locale/es_VE/LC_MESSAGES/django.mo,sha256=93zneQv56yHv9DfaIJ0cIv8wBk_E8RCjUgAZYHgfdYc,23797 -django/conf/locale/es_VE/LC_MESSAGES/django.po,sha256=m5bxw3vZNZwDNt5riWNjAqzgYFsMS2PM124ek3JALus,27070 -django/conf/locale/et/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/et/formats.py,sha256=2V0pYSzXqv1cbkYAAQnk_3J8dynoX0Lma6J6M3bLnBg,705 -django/conf/locale/et/LC_MESSAGES/django.mo,sha256=-cUSFc8kAJ3I70QPVeys0XZ_9YsDHQRj0H7IltFBiAw,23987 -django/conf/locale/et/LC_MESSAGES/django.po,sha256=GA_0u-rXtGmH3K6kMHi_HsZec3IYH61nuQlKoVuIyAQ,27017 -django/conf/locale/eu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/eu/formats.py,sha256=8dIjaFxQlsd79KO-kHFNgt-vyYqrx3K9_OJf_NMIYEM,747 -django/conf/locale/eu/LC_MESSAGES/django.mo,sha256=l_3VH9HqLql5QuzpmLe5FR7Ky5zCV0B-WAlqzC04K_Q,25947 -django/conf/locale/eu/LC_MESSAGES/django.po,sha256=5CCDd1k-WpE5LAnl5GAkZUMcqVw0D7qFvlCDZvVtViQ,28143 -django/conf/locale/fa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/fa/formats.py,sha256=sZyCeIQAo6HCtKr5t6W6y8Ll_Y5Yh0zXuy9qz5CaUz8,720 -django/conf/locale/fa/LC_MESSAGES/django.mo,sha256=q4Eww63ggp2Zj0Ski_GCnnURIUu9_Y6EofPfpw6lDM8,26023 -django/conf/locale/fa/LC_MESSAGES/django.po,sha256=BU_qdBlidEoBDUJRoBgzO85HF90s5ehfWLgJEpwC1Pc,29571 -django/conf/locale/fi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/fi/formats.py,sha256=bZW36V91AaMAp_xJURr2FWfEFGUnts7MBE3euHF8De0,1323 -django/conf/locale/fi/LC_MESSAGES/django.mo,sha256=5b6NAxHFOuETT9c5_XoLhy-q4bgubXo1HLpY_rYZ-08,23713 -django/conf/locale/fi/LC_MESSAGES/django.po,sha256=hdp0Z724jce_5FPmczkqnZ7mBVSt9Efaa8ldEfynNOs,27016 -django/conf/locale/fr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/fr/formats.py,sha256=S3BK2FbOdZdUUsPp8IHMb4GpDm_ctIIE1z4ZX3L7F1I,1387 -django/conf/locale/fr/LC_MESSAGES/django.mo,sha256=x_IT_zrxvWvvPvii4RI21VR-GqUodZRKad00NnOhOKw,27235 -django/conf/locale/fr/LC_MESSAGES/django.po,sha256=AI2wbCH2n1HKqnD5x4I1YBQqCoGTZQRG4MtZ8o-YSD8,29318 -django/conf/locale/fy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/fy/formats.py,sha256=-wHp-HFUatmTEgGiQ7ekCMFMB8jpAQD4UC4mmhjRTL8,656 -django/conf/locale/fy/LC_MESSAGES/django.mo,sha256=N13eBeS5pewXpx3yIAwiqB8ISjw-J2ku99dncOnz_lY,2525 -django/conf/locale/fy/LC_MESSAGES/django.po,sha256=GyR8MjHB6fS3NuxDCsNegt9rZPyst5pMqs0i0WWIXUM,19283 -django/conf/locale/ga/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ga/formats.py,sha256=o1K6fb8AwJ5iHqSxWirH_qLhFp54vRmQ0cUDeEQJFZg,680 -django/conf/locale/ga/LC_MESSAGES/django.mo,sha256=Iw1dcW6tAoIFBgjFAWyfXH7lXz__fRrS7cktYtcQ_IM,15097 -django/conf/locale/ga/LC_MESSAGES/django.po,sha256=Adp1JYadvckm_A4nlXZGM-hPAz_8bcdNw08BlEQNorQ,24000 -django/conf/locale/gd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/gd/formats.py,sha256=4H_tXzwJIVIn9uxvszCWP9clNzY1dtCA9NC42JhvnBs,713 -django/conf/locale/gd/LC_MESSAGES/django.mo,sha256=CZ8l9P68RnGriRwFwq9zYZKAtomBej5OPw2hxSvMe9A,29409 -django/conf/locale/gd/LC_MESSAGES/django.po,sha256=V_jU770O0WkLt0eTOhlamk6seUSrVF5m2dnmN9o2NNs,31733 -django/conf/locale/gl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/gl/formats.py,sha256=BIDA50C9zjxUG7c-yFrdhxs0ROEP9OtJGCmCJDVtMbQ,755 -django/conf/locale/gl/LC_MESSAGES/django.mo,sha256=sNVgEfEr_q6kth4MHJvBOZ34H-LkrkiFfjBsfmKA9fc,15342 -django/conf/locale/gl/LC_MESSAGES/django.po,sha256=6Zu_Oi6Xa7igkyjA8jp0BxvkLIYgguXnGFcRwPG3uO8,23283 -django/conf/locale/he/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/he/formats.py,sha256=XqXL6y_1InNsVBDVBUVsiN4dPSfanXc-5ZCh3c6HaiM,710 -django/conf/locale/he/LC_MESSAGES/django.mo,sha256=34i0neJ_XbU9-IbZtpSEd0fLZaZWlKsiNifALt6TuUo,28516 -django/conf/locale/he/LC_MESSAGES/django.po,sha256=wEQFKastjSqb-7DCXk7JMET2VVnLlUo4bxH6ldDjmSc,30310 -django/conf/locale/hi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/hi/formats.py,sha256=y0O5F4C31wgJMXPdVrQvNqYKVyr8-Z1hf5o0N9P3i7M,682 -django/conf/locale/hi/LC_MESSAGES/django.mo,sha256=4v9ljgKHyBd4tqUr_5CBNS8rNtLsFERsFOK-zx8kYvY,19270 -django/conf/locale/hi/LC_MESSAGES/django.po,sha256=Ennlas9mqLL6pqYRXhEHK8OPyXNq9I0aKoizn0aeKLk,27774 -django/conf/locale/hr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/hr/formats.py,sha256=VYQw5JpFK4GKOB9LhVcUSLprU7_66QP1JBu2XWss4L0,2039 -django/conf/locale/hr/LC_MESSAGES/django.mo,sha256=Y5qAfjbubIQDJIbkJzw7tfzUsuIlEYUlsvGfvEYiFP8,24409 -django/conf/locale/hr/LC_MESSAGES/django.po,sha256=iOHjAFvvu8OiBeh2IukSFXEkL-Uqr_dDEKKCAlvGtjo,28207 -django/conf/locale/hsb/LC_MESSAGES/django.mo,sha256=KBjg59sQQa660xIws3jFnkidggEqrun697cEPFjBUXc,28113 -django/conf/locale/hsb/LC_MESSAGES/django.po,sha256=jPcsXLZq7Q8b1TOIGIrDiNPVxcIYkwoISfYLKZpedr8,30279 -django/conf/locale/hu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/hu/formats.py,sha256=WSlkhX-1FPj0NuP_a_XmlCADrJZIRZ-xGmDhJ7M5O8w,1050 -django/conf/locale/hu/LC_MESSAGES/django.mo,sha256=b_P30VSZRI-9QTc8AqTk6qucg_axzcLHGebh3sFTwFU,26971 -django/conf/locale/hu/LC_MESSAGES/django.po,sha256=TUAoYIGuZlX45dkxIu-Yo-drlhn0otTLwN7WQvIfgfo,29023 -django/conf/locale/ia/LC_MESSAGES/django.mo,sha256=uctHDWY1qKSlNlcdaEGswjWkPYy3BDJawUbAfEddk4Y,23125 -django/conf/locale/ia/LC_MESSAGES/django.po,sha256=ckopqh_kKLtaJC9upyGY4hh9NSkF-iHsZOm9sur4-A4,26641 -django/conf/locale/id/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/id/formats.py,sha256=uwSpqmGF6Pyy3cnYEgyNH5m6ttoXNC_pofpbjqoAO_I,2068 -django/conf/locale/id/LC_MESSAGES/django.mo,sha256=SuTCKPRarUZl4g7gFCsL834Y99UbzbWrVl06il9wwpA,23697 -django/conf/locale/id/LC_MESSAGES/django.po,sha256=i4RgdcAWsxMrZ90uf4d8Vx_2zhJTLoGe8azy3qpdsbw,26511 -django/conf/locale/io/LC_MESSAGES/django.mo,sha256=1PUSoRgjcrjc8OHIvkjAAh0xtSkSaafGZuO6SYkx5CY,14965 -django/conf/locale/io/LC_MESSAGES/django.po,sha256=aURK_SeTtqM8ko_kI_AM5jWyqKAb1iuqNvOKQ1GQ0SE,22892 -django/conf/locale/is/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/is/formats.py,sha256=-OxThHQAWwCVrfVLDAkstCQUfaAHpbJhRPQlqZO_wGo,686 -django/conf/locale/is/LC_MESSAGES/django.mo,sha256=AvZcNA6n03-Rmw-EfkKGyhoOVvL3gankv6ejIp36-x8,24147 -django/conf/locale/is/LC_MESSAGES/django.po,sha256=kCl05ojMd_bNrU8pY-c-MynWqwvAX1EGjaHZ3_KXtlg,27444 -django/conf/locale/it/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/it/formats.py,sha256=coYr_ErN7oALN5ciqpRQcnb-xr3DFxjFpUSvaaoRhS8,2012 -django/conf/locale/it/LC_MESSAGES/django.mo,sha256=bxZBTLEDM9eaLX0rWzkFZNxpjbj14JH5ffm-SpYBPnA,26205 -django/conf/locale/it/LC_MESSAGES/django.po,sha256=9tNPsF-8oMThT1PHqUWloj6jVtXoDlCdQqsQnKHpGjc,28559 -django/conf/locale/ja/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ja/formats.py,sha256=O84swETmvV3yxAifRl5iTADyg-ivY5rcXvtQz2B4rrI,727 -django/conf/locale/ja/LC_MESSAGES/django.mo,sha256=75ugNx1DM89An10tR1tDqFZ8YvTojekPRs_HjKUnuus,28164 -django/conf/locale/ja/LC_MESSAGES/django.po,sha256=gAKbzPUxu2LaYCfy0BA-KgcBUzCbVG1Hr3g0cPilVeI,30184 -django/conf/locale/ka/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ka/formats.py,sha256=dxWVYJ3XpryXgl8Kzp1he0AbIMNtvJStaGmmdFJim-E,2113 -django/conf/locale/ka/LC_MESSAGES/django.mo,sha256=Vj2D4EU6RlcW3eQWucpRc99TSrT0xWMYFgPLGVbVRLM,24566 -django/conf/locale/ka/LC_MESSAGES/django.po,sha256=GcUnKM13CyKi8cgO_AhLaOt3ydZo54UC6U4pThjIMWg,30933 -django/conf/locale/kab/LC_MESSAGES/django.mo,sha256=Y1q3K0U7gFl_0wxVd9BnpaUK8NjBajk_T8lFgyDC_ks,7200 -django/conf/locale/kab/LC_MESSAGES/django.po,sha256=iyxoGXMzvIyj3FedGLNrDDQqv4qRunq_2BZ8_FCOcoY,19730 -django/conf/locale/kk/LC_MESSAGES/django.mo,sha256=qfkw2mX6miyS4HSrpgmIKbwMbqYPKht5RPpS5rDPJWM,13954 -django/conf/locale/kk/LC_MESSAGES/django.po,sha256=8BBGZTtUavPWyQvDf5QcF6zDA3t0O6UdjcNf0uH_TX4,23661 -django/conf/locale/km/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/km/formats.py,sha256=vNqsdfFBQTY5yKjEvCXlZWurKM1WmBH0FbFnpIVQIPY,748 -django/conf/locale/km/LC_MESSAGES/django.mo,sha256=IkYee7gjLxKUUaJ1xrWlm-mGFy-1Q5YQTfOcKaqsdG8,7284 -django/conf/locale/km/LC_MESSAGES/django.po,sha256=BUyjSCQne8sySq1dLsqmKCzCJMja562ocRYcNiZOKPk,21508 -django/conf/locale/kn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/kn/formats.py,sha256=LwKQw1gobRYRnusHe3ZI2pbCtA1N1GfkCK03LcKFpcg,678 -django/conf/locale/kn/LC_MESSAGES/django.mo,sha256=Q0Wq7NKSYt5JqDWuV3gi4EPtqe-p3S9dJxJu8qn8NmE,18655 -django/conf/locale/kn/LC_MESSAGES/django.po,sha256=unXArg6NUEnyrEP8TYdeVK8CBtFzPJkianlfPgmzUzE,28177 -django/conf/locale/ko/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ko/formats.py,sha256=5-5Ht40mgk0covYgNoqZNi0yX1ldjC5VIGsZLb6CF9E,2253 -django/conf/locale/ko/LC_MESSAGES/django.mo,sha256=yhYOQLfUmkFTz9ZEwOUY_EeH2fT9_HaNdK3hI1J9BbY,26594 -django/conf/locale/ko/LC_MESSAGES/django.po,sha256=vJTX4e9Didb1PXWT5Rd7Ul8D2lYSTZZepw__qxXGunU,28873 -django/conf/locale/lb/LC_MESSAGES/django.mo,sha256=3JKBA-zIROxVEJFv8eoUKrVoRFjbY9bBk16jQF7Wp3s,8069 -django/conf/locale/lb/LC_MESSAGES/django.po,sha256=v1_uBQpRI8fT88whqpah66AmaJG_uIX65_sRZEN2LPg,20131 -django/conf/locale/lt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/lt/formats.py,sha256=ZLmKWFgKwrHeDeTO6fPyRLjgxkU3QCK3f0LxnYhLvqg,1763 -django/conf/locale/lt/LC_MESSAGES/django.mo,sha256=vh0vsbuEwlfh4QSa64_ufOGZyjkb3VuPRhhTNKz8lQE,27392 -django/conf/locale/lt/LC_MESSAGES/django.po,sha256=D_3yf43LDN_Xd_tF66iJjNF1qW9FPFp8f9KGn0VQJ_8,29731 -django/conf/locale/lv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/lv/formats.py,sha256=Q42-XZ5aWtfoKhKuf07148Ir6-UrjaWNNeA8erBtlCE,1839 -django/conf/locale/lv/LC_MESSAGES/django.mo,sha256=79KKe_LrjEN8JS1upbgSp6N5852PdGkdJy6mhhOSKII,27033 -django/conf/locale/lv/LC_MESSAGES/django.po,sha256=aCdYvg739kJRlh0FE5jJGDaLCrQ_tsgLzWgVn0dPMMM,29210 -django/conf/locale/mk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/mk/formats.py,sha256=DJVFqbqW7dq6GPzh_MSRQvQAicBtVUwRHX8RSLgqpFg,1675 -django/conf/locale/mk/LC_MESSAGES/django.mo,sha256=GqcYWwCPmQZeBa9sxroK0LQYqlpwE9CPc088bpmv2Kg,29431 -django/conf/locale/mk/LC_MESSAGES/django.po,sha256=VZT-VhVOlcQaJKau3giyN24XA4GG1aLR6U9e-dDmJWQ,32812 -django/conf/locale/ml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ml/formats.py,sha256=HImytl2xU0ui_bdhmp6GZWLqfHIRf_1iidtajlfgh7g,1748 -django/conf/locale/ml/LC_MESSAGES/django.mo,sha256=UcQSpkAl4anGotopGvF5ddOhz0JlnR4SL-yDIiJAY_U,26733 -django/conf/locale/ml/LC_MESSAGES/django.po,sha256=aQeFRGiFB7vke7NuGuO7rZ2GuL94rZ_tqpfY-_U38a8,33211 -django/conf/locale/mn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/mn/formats.py,sha256=EbTyiGTOXJdZxUwleItvk_CwK5MMl9R0pGniEUL-7HY,674 -django/conf/locale/mn/LC_MESSAGES/django.mo,sha256=alhmXO_Eqc8PFKh3lN1FW7VR5iiGShbRK76yQOqbzr0,28042 -django/conf/locale/mn/LC_MESSAGES/django.po,sha256=-XgvjCXIeFr9Rm9EdwyBJkMCWgzwcmshjTdUDZr0xao,31351 -django/conf/locale/mr/LC_MESSAGES/django.mo,sha256=Jy_VbHVKhgNj9MSmdLv3ouVYXYjJ_JFTn8_zmYoYcyg,1652 -django/conf/locale/mr/LC_MESSAGES/django.po,sha256=yyPm1I1uqXG8VkS6yTrwECvi6p07RRep5h9iXx_v7eQ,18910 -django/conf/locale/my/LC_MESSAGES/django.mo,sha256=5pYLrTOipARNLlpG5dp0VZYJUQNqdt0vK2blo1x6keg,2650 -django/conf/locale/my/LC_MESSAGES/django.po,sha256=IVACCaTwYgAANqlcrthvSLFK9zvlOLhJTFRWCRBm11U,19193 -django/conf/locale/nb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/nb/formats.py,sha256=y7XWPhuOv7QkDBvx4qkwehmqRpqwLzn75FWn-25mvcc,1699 -django/conf/locale/nb/LC_MESSAGES/django.mo,sha256=49Oyc61QoCTz-VU5mH5ifESqWtLI39edLfvh_9nlFyU,25567 -django/conf/locale/nb/LC_MESSAGES/django.po,sha256=Fx88KqyJjJOdDlv0zEvj8bhDN9OQScnQfpOVl4QK5UE,27704 -django/conf/locale/ne/LC_MESSAGES/django.mo,sha256=goDEutWg6y8KqC20fqxg2qpTAYRYx5CPSNLw25IsVA0,27921 -django/conf/locale/ne/LC_MESSAGES/django.po,sha256=GeDsYbeil3nlhB1G1JTfSPch502XZHGS2JZjtxDAuzs,32888 -django/conf/locale/nl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/nl/formats.py,sha256=zpsypiDhFuZzGidyQYWPoeMwrL4cEsGqdZGTu4BdaAs,4405 -django/conf/locale/nl/LC_MESSAGES/django.mo,sha256=GjOycm_b8DrWGSq-_OWTMoRuhxOcW_PnxdmOc7k17oY,23480 -django/conf/locale/nl/LC_MESSAGES/django.po,sha256=n7_lU4fXpjbKmt5_0JN33FW2IXjQyWL0Ybwl2E-FzPM,27252 -django/conf/locale/nn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/nn/formats.py,sha256=TUcKUtEJ_kmvbW_vgHU64jsFkyPYBorssU_HEUK8hrw,1743 -django/conf/locale/nn/LC_MESSAGES/django.mo,sha256=yfZvfqfpLCx3lV_LMd3Rw0Y4TTUvJQznZGwmf46nhnY,14256 -django/conf/locale/nn/LC_MESSAGES/django.po,sha256=JguzOlZ92jdHfp1eV3U5zKyxTaphpSjGSxXAIxSEspA,22522 -django/conf/locale/os/LC_MESSAGES/django.mo,sha256=GouuR0wncfpOVJurgDeTkrdKvzaH1iZxr-4IsXVEd6Q,19250 -django/conf/locale/os/LC_MESSAGES/django.po,sha256=DFnTZKUg_hGp2Pu8lJ0_vfZONAUl8JpK8UOhQtWFWR8,26392 -django/conf/locale/pa/LC_MESSAGES/django.mo,sha256=MZHSQcl584TTogQpYXzE1o_AqfZlwpvkb1CeXksVseI,11501 -django/conf/locale/pa/LC_MESSAGES/django.po,sha256=-mzScJHrkxIMp4tbbd8NA1EG6V2_pail2PYhaJ8FWxU,22591 -django/conf/locale/pl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/pl/formats.py,sha256=l_l0TfQ4pXGC3HmhhzKyYagS6i9CJTaOcUZvT4zU4PY,1080 -django/conf/locale/pl/LC_MESSAGES/django.mo,sha256=zBDy55ZDVr8J1T-juKv4jsCCO5BvK1I57YzbBuQA_qY,28447 -django/conf/locale/pl/LC_MESSAGES/django.po,sha256=Ipa60phKqYDjypo_M1PKUhiGi9E4kbyPn6cc4hpRcE0,31667 -django/conf/locale/pt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/pt/formats.py,sha256=VULz9oqB_gAJKfl6vsblpUzHwX3bYJXC4STqRcObJLg,1650 -django/conf/locale/pt/LC_MESSAGES/django.mo,sha256=sn4p2gmHihkh2p30YOdcmuQbYomVgD8igFWR-ptN-78,26222 -django/conf/locale/pt/LC_MESSAGES/django.po,sha256=9n3qfFngx6h2a69O91et9c97peQL6DeV7QhGT5J7mrY,28362 -django/conf/locale/pt_BR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/pt_BR/formats.py,sha256=qRqGFjJ1lXCpRxj-UZ8Rxe4BKPe66ZN2ZZ6KblVTBig,1367 -django/conf/locale/pt_BR/LC_MESSAGES/django.mo,sha256=l-gLW0mKPtwMhWEFdF5SU6_OfdBsmjHXpspCn1X0ewg,25639 -django/conf/locale/pt_BR/LC_MESSAGES/django.po,sha256=YcLVLWR9juH0uRXsSqGCzUZm_RqQ7A31juOwQL_Cu0w,28689 -django/conf/locale/ro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ro/formats.py,sha256=3Ej_afExYIcmvjTEOtSxjVSZHU9DWaaS0Wiudra4Ocs,706 -django/conf/locale/ro/LC_MESSAGES/django.mo,sha256=s5dQy0ku0G5agJ9zZxldGkLou6BKL65j4h7NaXHHIS4,24423 -django/conf/locale/ro/LC_MESSAGES/django.po,sha256=7k9VFSOwqnpenN8h78diHkGHvFhnP2uPqiZJrxEtmeY,28111 -django/conf/locale/ru/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ru/formats.py,sha256=xH12699iN_1SB_SeBILcMZNTS51PqVzZmNfoTO_9K5A,1200 -django/conf/locale/ru/LC_MESSAGES/django.mo,sha256=Qim_pvrCtbMmAn0rskvOmQDpxSbOoJ3EdYstonJCIF0,36378 -django/conf/locale/ru/LC_MESSAGES/django.po,sha256=RWFXm64RZIelVHsHvcBwNQ0l4Dxz4kOEgk9M6wzSRVs,39215 -django/conf/locale/sk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sk/formats.py,sha256=ptsIRV-fDQlK4vPtzjwjbdY8mbcnPYYvjZaUOkK2C98,1106 -django/conf/locale/sk/LC_MESSAGES/django.mo,sha256=NNB1m2vlnW2A3eyMWxBy-QZn2HXLbha-N3zbsYtWbqM,26984 -django/conf/locale/sk/LC_MESSAGES/django.po,sha256=CPBvqkeL69Xh-tvGVoZuFJXgC6Hey6o1Sigp9Dcdl6U,29108 -django/conf/locale/sl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sl/formats.py,sha256=HZs6dDurYXA8v1nX9vq5Q4q1wV11t9lanI-7xDAGWcw,2051 -django/conf/locale/sl/LC_MESSAGES/django.mo,sha256=XZqEBvorAV1sX6f5bN98wkhn2flP-Bz4vJ7NdF1K61w,27117 -django/conf/locale/sl/LC_MESSAGES/django.po,sha256=CtrUJcbJrSin_NuwYV2cAzyP3D756a9ZcEVL0IgiVzM,29800 -django/conf/locale/sq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sq/formats.py,sha256=z_d_y6d46eL14p3WPaFxzB2zfF_YJNF1V4SF612VFJE,686 -django/conf/locale/sq/LC_MESSAGES/django.mo,sha256=QqpQtbQQISl4isaXmsVkMJW2qa75i6fztcsxY4l8np4,26370 -django/conf/locale/sq/LC_MESSAGES/django.po,sha256=fcud0pDHA_9X0EC6dtVpggH5zxs9RKlCD0tQZAINOgA,28477 -django/conf/locale/sr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sr/formats.py,sha256=hfwSNM9kkDAtDPkSas2QWX1qHIt7GsBgmQ80TUvBTsM,1944 -django/conf/locale/sr/LC_MESSAGES/django.mo,sha256=1eWU2_oPwrnZ0gAgfapAsYVhI14xc2f8GrsZ7l_cvRc,32008 -django/conf/locale/sr/LC_MESSAGES/django.po,sha256=BZjS3ARe8XKNkcgh-jrRuJx7rJrhYF97-l6-ATf2eiU,34276 -django/conf/locale/sr_Latn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sr_Latn/formats.py,sha256=hfwSNM9kkDAtDPkSas2QWX1qHIt7GsBgmQ80TUvBTsM,1944 -django/conf/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=ZPxsx5ss8kBzJ3uJi3kht-_y2a2nsELUZ3Q3W4__14c,13331 -django/conf/locale/sr_Latn/LC_MESSAGES/django.po,sha256=WsytYWCapT0sgjh_-JVnHRP90Ji0s0gLjHeyzdKuljw,22535 -django/conf/locale/sv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sv/formats.py,sha256=FkRAuHHGvheCTO5U-G5DZ8vqCF2pQ6AZ2cpKkFM8fMM,1502 -django/conf/locale/sv/LC_MESSAGES/django.mo,sha256=hPkakE_AE1GVMnSagAL1XXHWYn-PgG3-NSBfX2rDwDw,22952 -django/conf/locale/sv/LC_MESSAGES/django.po,sha256=KFSWF32m7oMpu8DfD3SJGlfIpabM3xmCUGuC4I1zHbk,26841 -django/conf/locale/sw/LC_MESSAGES/django.mo,sha256=ZHWikD3fPZeBsrQ7qg9iHfzEt5DoQU1rBXvMd5Wzdtk,14903 -django/conf/locale/sw/LC_MESSAGES/django.po,sha256=9BcGhrZMf5gJzw02YCt4QyUdQYVphHUb13oHKy9eTEU,22800 -django/conf/locale/ta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ta/formats.py,sha256=gyLOpk7u1e7LNBoQDHLs4kIw04y7vmGoG9v1aq7NjmE,680 -django/conf/locale/ta/LC_MESSAGES/django.mo,sha256=UsBQWhTd5y0OBsH7Zr8cVX7NV7P6waHpc_0RcpWQPH0,7155 -django/conf/locale/ta/LC_MESSAGES/django.po,sha256=EG-DZKUybRWuFEQ8jHIf171sdnZzpjnbaDXJQuffRVo,21547 -django/conf/locale/te/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/te/formats.py,sha256=a133NPw7ry2WYGs7b3X7PGBC-GHUtN2S5zcjLp9CTJw,678 -django/conf/locale/te/LC_MESSAGES/django.mo,sha256=h0T8JGVo0EzGXSbwDVWulpVs0PLJM0gfro_QTk5SHEY,13321 -django/conf/locale/te/LC_MESSAGES/django.po,sha256=G0x90aGtPjtouO99ZQMN9Nf-YW83d_qxMSc-7CrwhX4,24597 -django/conf/locale/th/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/th/formats.py,sha256=ykqZkZXnqRp0aROoD2fBC3InCIHComUNELfIRL1RBAA,1070 -django/conf/locale/th/LC_MESSAGES/django.mo,sha256=6EW5yaTtSlrZts7qo4LL5rgx1qQcSx7h2v6R-YzA0sw,19036 -django/conf/locale/th/LC_MESSAGES/django.po,sha256=37RzmfwXH2sn5LxHSCjDCS4ICdZtDJ7Oe1yJ2FwtXeI,27292 -django/conf/locale/tr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/tr/formats.py,sha256=Z6ZDt8-hgzX_NZbvc_npFYSGw6C_j7OKcV4ZQHBUyuc,1074 -django/conf/locale/tr/LC_MESSAGES/django.mo,sha256=phj8jyZwfik0vifndLSCQpPoeUxchEmIt2Uz5nK4bKU,26680 -django/conf/locale/tr/LC_MESSAGES/django.po,sha256=ZZQdmqGVOC5y2uZV_ZslYOZYDbQK50cAA2KZx-rEKxw,28903 -django/conf/locale/tt/LC_MESSAGES/django.mo,sha256=2YqPqclnPPiORixIWcuw2Ne-w_LzYjLsV3o1Ye1AQwo,15352 -django/conf/locale/tt/LC_MESSAGES/django.po,sha256=o4_JxmlTXHAEoSx6vHxiKiZP1va_aRT5kFxIjXZcjSI,24745 -django/conf/locale/udm/LC_MESSAGES/django.mo,sha256=eeu0nDatoybuYCF6z3hXG4XA1rs6FgX2x9d8r8cYc4Q,13564 -django/conf/locale/udm/LC_MESSAGES/django.po,sha256=61Shy8V_t2ChpP-ZehJ82iauo12bKnuVnNRkWg1844k,22914 -django/conf/locale/uk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/uk/formats.py,sha256=FJHWiQfZjPDWyfTWwQXAKBjp1XCtFvYb-obqalBPFTA,1359 -django/conf/locale/uk/LC_MESSAGES/django.mo,sha256=H5AFM_sw3QYK6XdcwyPOYwhL6VFRo4WnlCHmP6lDlyU,31645 -django/conf/locale/uk/LC_MESSAGES/django.po,sha256=LT92TVaJ8nR9lxyHtXfcZHZihoWh45uypZnhuSMlsU8,35111 -django/conf/locale/ur/LC_MESSAGES/django.mo,sha256=TdYByXk7rMGxKyhaBpPX2tH8SaNJpRZKMYdiXDTGiOg,12566 -django/conf/locale/ur/LC_MESSAGES/django.po,sha256=HE5mzhoMdTYdTih4smcZV4N7BMjwiC7jE9urU1D1c8A,23108 -django/conf/locale/vi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/vi/formats.py,sha256=8KCSVtk3N4Wsrlx6hGDj8PbVV6sYshglfyLtpCbFrxQ,760 -django/conf/locale/vi/LC_MESSAGES/django.mo,sha256=MDt-w99IwQWBwpqjtPagMXe6UlMGacU2w4PFw1vxYNw,19452 -django/conf/locale/vi/LC_MESSAGES/django.po,sha256=BJ50rmwgIa1K52YOcQ9AidcKx1h_Edw5rS-TDylAqUw,25483 -django/conf/locale/zh_Hans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/zh_Hans/formats.py,sha256=I8nkL38iWW2p8eRlPy3mK85btInMIK9mxILxmBjm8ic,1743 -django/conf/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=kMTs432GsXu7-0jFPUjugLHl2pg7or0URuKgN-K4bmA,22528 -django/conf/locale/zh_Hans/LC_MESSAGES/django.po,sha256=xGCO2-YAtsRpiOamZ62SwzMpwYOClcXijNUA9ppqR7Y,25991 -django/conf/locale/zh_Hant/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/zh_Hant/formats.py,sha256=I8nkL38iWW2p8eRlPy3mK85btInMIK9mxILxmBjm8ic,1743 -django/conf/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=SUuSJPPbvgREC74P17DcFrbJBNHob7WR9c-j95TxnJo,22354 -django/conf/locale/zh_Hant/LC_MESSAGES/django.po,sha256=u7LiD_jsKJdv1KoTD1rTyJhasKaIkODIF8dkdM1gvrw,25554 -django/conf/project_template/manage.py-tpl,sha256=L9sKzlpvlJtysHenCAVoERXvXFvUn_FtfNApKHC4PQM,550 -django/conf/project_template/project_name/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/project_template/project_name/settings.py-tpl,sha256=4JwYHW6nbDUufEkQOQjOY08slnLMETQAJ9dqr4PjsmU,3210 -django/conf/project_template/project_name/urls.py-tpl,sha256=vrokVPIRgYajr3Osw2_D1gCndrJ-waGU3tkpnzhWync,775 -django/conf/project_template/project_name/wsgi.py-tpl,sha256=YlvOJDVlRT5GdECwWEpeK8i6gRsliG3sLQog8cYPsC8,428 -django/conf/urls/__init__.py,sha256=Lp9Zc17tRy3bVwULxq1_8qBloXbgmqiQiIzzbqkqDSk,402 -django/conf/urls/i18n.py,sha256=TG_09WedGtcOhijJtDxxcQkcOU15Dikq0NkLGVvwvCI,1184 -django/conf/urls/static.py,sha256=3Hr170gzVpmIOsHUQOpgG16LE6nG_U5L8kSoSiNKeFQ,844 -django/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/admin/__init__.py,sha256=K5IZ6J5ujshspna6ubTvpFfTBjU7p8EhsbvW6G7fMwY,1243 -django/contrib/admin/actions.py,sha256=MFwZgt4qFQvwrm_AP2FIg3cGxuIlEfpYVE4T9x2tbL0,3207 -django/contrib/admin/apps.py,sha256=IKXRyRFIiWUmwm0-wigmpAE-iEHH_XqNl6FRSmEZfXQ,708 -django/contrib/admin/checks.py,sha256=YQgseIL_rhM8HF6QjKyJY1j1peMXHVybePHTR82aA1I,41793 -django/contrib/admin/decorators.py,sha256=jQS6FQ2PxaqGYTYNa4jdx-qSVPV9Uf5bRhbC9PF0BMM,969 -django/contrib/admin/exceptions.py,sha256=lWAupa8HTBROgZbDeYS1n_vOl_85dcmPhDwz0-Ke1ug,331 -django/contrib/admin/filters.py,sha256=3iKFsSTchtIsz4Zo9vtcs-voWwxTG1YjRo_Pc2nk4BQ,17821 -django/contrib/admin/forms.py,sha256=Ft6mb1iOIb3zXBRakRipI6TB_7d6D_mSrGQ9olj7k2k,934 -django/contrib/admin/helpers.py,sha256=ORpSrYvcLw8MOAfN_Q3rE0dcP3k6R8Op6XSbLVuOONc,14309 -django/contrib/admin/models.py,sha256=ALiXbQuBrWgN8ZKFFNK0JWV9YGLzmzuFh6GUhoIQSIw,5454 -django/contrib/admin/options.py,sha256=WWINyw6GU-YJVMc0zD1kko06D-gsl9j2uru6G_dvKQQ,83849 -django/contrib/admin/sites.py,sha256=SD4gdJ3Qa5OfJ0xC1VtykAbID40DokIduHbD7-_7kmk,20011 -django/contrib/admin/tests.py,sha256=Y7_BrWS4T7vMc7lW5ba5I4uBlEC5OgAaslLb_90NYNM,7307 -django/contrib/admin/utils.py,sha256=-ljhmigMpLkEJ-qFXND5Eemw3e4u6Ad0TvIKmuMdsQo,18493 -django/contrib/admin/widgets.py,sha256=ryoY02Z626J_I7LANRcJl3LJ2q75LmozZWK3CGeBjGY,17633 -django/contrib/admin/locale/af/LC_MESSAGES/django.mo,sha256=sbS-86l1kVvdcIV7n0xHqcy6iL14Ktnym0CifEkrEd4,9372 -django/contrib/admin/locale/af/LC_MESSAGES/django.po,sha256=vNkvN5lbhg5iRk42-5rlR0zqQpsraIXXsc7Ke9kO0z0,14280 -django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo,sha256=GDKkp7mc4LaMwT_Eli1rPLCwo75R4htvXfyCLWRvJdw,1158 -django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po,sha256=VM1QB16Nr0Ng2Wyp4o6ZlgthbWma7moHerugSzA4SnA,3590 -django/contrib/admin/locale/am/LC_MESSAGES/django.mo,sha256=UOwMxYH1r5AEBpu-P9zxHazk3kwI4CtsPosGIYtl6Hs,8309 -django/contrib/admin/locale/am/LC_MESSAGES/django.po,sha256=NmsIZoBEQwyBIqbKjkwCJ2_iMHnMKB87atoT0iuNXrw,14651 -django/contrib/admin/locale/ar/LC_MESSAGES/django.mo,sha256=7E9CSjJJz57SEjyHsobheQ8LmEqqKFVvZKpMIoUbKYE,17849 -django/contrib/admin/locale/ar/LC_MESSAGES/django.po,sha256=F7dXAV4kbHcMYEXfC35sOCTvZvF5qKUcEbWkALp1X4c,19814 -django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.mo,sha256=gLwHSlr1xGvsbFO1S8mnqM-NVzCUQ75n-X1NCBeANe8,4959 -django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.po,sha256=1lgw43gz9MCvcujDQ4eGUvo8Qn5DE2fGvSC_qOs5bEs,6200 -django/contrib/admin/locale/ast/LC_MESSAGES/django.mo,sha256=3uffu2zPbQ1rExUsG_ambggq854Vy8HbullkCYdazA4,2476 -django/contrib/admin/locale/ast/LC_MESSAGES/django.po,sha256=wCWFh9viYUhTGOX0mW3fpN2z0kdE6b7IaA-A5zzb3Yo,11676 -django/contrib/admin/locale/ast/LC_MESSAGES/djangojs.mo,sha256=kiG-lzQidkXER5s_6POO1G91mcAv9VAkAXI25jdYBLE,2137 -django/contrib/admin/locale/ast/LC_MESSAGES/djangojs.po,sha256=s4s6aHocTlzGcFi0p7cFGTi3K8AgoPvFCv7-Hji6At0,4085 -django/contrib/admin/locale/az/LC_MESSAGES/django.mo,sha256=LOjKRPic0sZ08s6zz3X437dx2daSubEQjoInd1kqzwo,16510 -django/contrib/admin/locale/az/LC_MESSAGES/django.po,sha256=brvf3-52qjX9CYAi247YxqcTv8w-QFzUPbUPtCFoT8g,17812 -django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mo,sha256=lwMWU4eHd5TLqpkeebGktXq1cSsqzE-siTD_IcA3bZk,4621 -django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po,sha256=72nOuDSiU2fb_RgmJ_sNpVpTBSFX1oVydPm-QqD8AX0,5102 -django/contrib/admin/locale/be/LC_MESSAGES/django.mo,sha256=5CbgzJ_iVyPTxTpToPEhgVSSfh-EhyjsCK75ecbQtrE,20007 -django/contrib/admin/locale/be/LC_MESSAGES/django.po,sha256=kRmThfssQtP_dr4JX2U2o-9qwwicZiM7i9QT9eSjrx0,21277 -django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mo,sha256=kDqYyYbnP_oh-pw8kOJGGcFtx-MxI-UARlB5f53ow2w,5942 -django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po,sha256=GsjZtvw8_OQNTrNgyUgGfSZvAC1pg2sse8oILC3J6bs,6451 -django/contrib/admin/locale/bg/LC_MESSAGES/django.mo,sha256=iJzYciumvR_r42WmC3yjTdiWrQmS94p_x0gTWvV9lOc,20070 -django/contrib/admin/locale/bg/LC_MESSAGES/django.po,sha256=9ouezfohVViX6NFG57IFXTzcuMSvAafd6NKncMFJBds,21493 -django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.mo,sha256=TGNzP1smzgZmo5-s4VKD1E-nWTMtCSjp_hco1a0j4BQ,5565 -django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.po,sha256=5uiQqnTyz0R-1vJTHqY0opwnQhMfgPoB-PxOkGpxNwk,6016 -django/contrib/admin/locale/bn/LC_MESSAGES/django.mo,sha256=fKmzDwzLp0Qlv4bvWscf0evanPRAXwR04B6IeJ7wGSw,15247 -django/contrib/admin/locale/bn/LC_MESSAGES/django.po,sha256=-go1WtUozfqbnKlUQr-jNnvEXf98eIZjq-C8KjRJ6NA,19812 -django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.mo,sha256=t_OiMyPMsR2IdH65qfD9qvQfpWbwFueNuY72XSed2Io,2313 -django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.po,sha256=iFwEJi4k3ULklCq9eQNUhKVblivQPJIoC_6lbyEkotY,4576 -django/contrib/admin/locale/br/LC_MESSAGES/django.mo,sha256=y2EAyyZjxtXQg7R5xONVix9311e3HK77vYTldQOT-jA,4253 -django/contrib/admin/locale/br/LC_MESSAGES/django.po,sha256=iOq3m2j2dErBRmyMocQm31vI__5a56CoZNYa7Gn3n7w,12167 -django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo,sha256=R87byb_aioGPaUZX_0gtH7ZQ6sSKcu3YYTVepbExSzs,1366 -django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po,sha256=DfrcykHREmLpVQ9qLZEqIdAO9skkMaqbX5FnAqOo0AY,3687 -django/contrib/admin/locale/bs/LC_MESSAGES/django.mo,sha256=44D550fxiO59Pczu5HZ6gvWEClsfmMuaxQWbA4lCW2M,8845 -django/contrib/admin/locale/bs/LC_MESSAGES/django.po,sha256=FrieR1JB4ssdWwYitJVpZO-odzPBKrW4ZsGK9LA595I,14317 -django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.mo,sha256=SupUK-RLDcqJkpLEsOVjgZOWBRKQMALZLRXGEnA623M,1183 -django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.po,sha256=TOtcfw-Spn5Y8Yugv2OlPoaZ5DRwJjRIl-YKiyU092U,3831 -django/contrib/admin/locale/ca/LC_MESSAGES/django.mo,sha256=gQ-g3OzRpyqae7U8BLAPQvczbYFe4Goutvbz_N1e838,16585 -django/contrib/admin/locale/ca/LC_MESSAGES/django.po,sha256=txJB9CZNOXBvLMZteXPodWku5aiDu0hyW4F2u_XHOng,17942 -django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.mo,sha256=jQuQQAoB-_hggWhGXDFhk71xu70rKF0GqHN-DjR9o-c,4560 -django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po,sha256=Mfn1tgpuhe05MBQShhMoJDZ7L5Nn2p1jFy_jYIt0H0g,5098 -django/contrib/admin/locale/cs/LC_MESSAGES/django.mo,sha256=BEM-fRNY0w99W0GE7X9G09dySM3Qgzf9CwA2ufKrkSE,16572 -django/contrib/admin/locale/cs/LC_MESSAGES/django.po,sha256=uVKGJgKc23jUIQ4_vIlhy6d0ZwsnlwNnPx5bgaSpaYM,18026 -django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo,sha256=BvxuAQ-ndFx2opXSg8FUhBLfOs1DBAdL5rweypbNuUU,4819 -django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po,sha256=YOnd2RyXmM8-K2OgVVubcXuy-St7FesLrRUb7mXVEdI,5393 -django/contrib/admin/locale/cy/LC_MESSAGES/django.mo,sha256=7ifUyqraN1n0hbyTVb_UjRIG1jdn1HcwehugHBiQvHs,12521 -django/contrib/admin/locale/cy/LC_MESSAGES/django.po,sha256=bS_gUoKklZwd3Vs0YlRTt24-k5ure5ObTu-b5nB5qCA,15918 -django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.mo,sha256=fOCA1fXEmJw_QaXEISLkuBhaMnEmP1ssP9lhqdCCC3c,3801 -django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po,sha256=OVcS-3tlMJS_T58qnZbWLGczHwFyAjbuWr35YwuxAVM,5082 -django/contrib/admin/locale/da/LC_MESSAGES/django.mo,sha256=_u56MXv-Dh5k-0QHZImE3Ds3VTky6sVa1iDD3_omR5U,15961 -django/contrib/admin/locale/da/LC_MESSAGES/django.po,sha256=U7PqDwHI5VaX7wiHdKvmGQTwKzGuYry-UeQSk55DQCk,17343 -django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo,sha256=_2EDOsYDt9p-b5L-SAPRXOD2CtrUbgqPrS9cYmoIbtM,4518 -django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po,sha256=zw_JfNVAMhMOgYVCl-ZNMjch4ui4mmUucLBtqbwXHBc,5120 -django/contrib/admin/locale/de/LC_MESSAGES/django.mo,sha256=hyMoYk3p3PM18E6CzbhwRuUpnVU4vjwjnsrHT9P0R2o,16793 -django/contrib/admin/locale/de/LC_MESSAGES/django.po,sha256=4sDSiyev5dDjId1T2IuUvXle7YeETy5FINeMiczEVhI,18192 -django/contrib/admin/locale/de/LC_MESSAGES/djangojs.mo,sha256=_aUsqSeIo9dHAiy6daB-BLselNy7tuPUEf7kVCgEByM,4602 -django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po,sha256=ilCflt4q60Rr1D9wEPNpZQMvJO1R7udNsRgZiml3PdI,5068 -django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo,sha256=sG9r565jG5n98DOZ1zDr8fViR-j7CCcBlgxhftCPCNM,16835 -django/contrib/admin/locale/dsb/LC_MESSAGES/django.po,sha256=cMR5KtWeMqKRQOP6IYT_nr0kGfSmYIWeJJ92DiXH9Gg,18071 -django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.mo,sha256=Bl1Tcn0LYM6ZunclcgjvXXLAdezS3SXU-9IGZ0hvbPw,5016 -django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.po,sha256=aK07LLjObo3lQfVMj6GmR4THIkKFODAQz7iZ99spzJA,5490 -django/contrib/admin/locale/el/LC_MESSAGES/django.mo,sha256=JY7lZREod67l_l1XFlAAEVdscW878SJSo7EUSR65zo8,22536 -django/contrib/admin/locale/el/LC_MESSAGES/django.po,sha256=6yqiFfL07fjR_P31kWlS1LANHzDMFPh2j2aUUXQQcdc,24100 -django/contrib/admin/locale/el/LC_MESSAGES/djangojs.mo,sha256=vfha6S1wDTxgteeprHdCY6j1SnSWDdbC67aoks7TVFw,5888 -django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po,sha256=GJQytMIHNrJeWWnpaoGud4M6aiJCtJ7csyXzmfS6GZs,6560 -django/contrib/admin/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/admin/locale/en/LC_MESSAGES/django.po,sha256=bJ9vJyvU1p21jk5-aCdWdoOX8mQGev0heavhj_q3bgA,22308 -django/contrib/admin/locale/en/LC_MESSAGES/djangojs.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po,sha256=Ktbb5PuFfGQarYm7GVnzqqJulz7Bpa3fcfuqD7pXMKI,6555 -django/contrib/admin/locale/en_AU/LC_MESSAGES/django.mo,sha256=DVjhYEbArfdAQLuE0YAG99eWxa9_eNEz2o9A6X6MrEY,2894 -django/contrib/admin/locale/en_AU/LC_MESSAGES/django.po,sha256=CO7AV-NmmmwnXyBIybSfNZLdXiavphWsd9LNZQNqDL4,11800 -django/contrib/admin/locale/en_AU/LC_MESSAGES/djangojs.mo,sha256=LWNYXUicANYZeiNx4mb6pFpjnsaggPTxTBCbNKxPtFw,1714 -django/contrib/admin/locale/en_AU/LC_MESSAGES/djangojs.po,sha256=UZk0oHToRtHzlviraFzWcZlpVAOk_W2oq4NquxevQoE,3966 -django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo,sha256=F4L7ZjQkHdiMTPlhKIjbXPYenu9LWqvlntuAy6zhTj4,10744 -django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po,sha256=SbpW4kc3NmETWmfwmEzv-c46iXM1g-InxuHt7nlT26s,14840 -django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.mo,sha256=hW325c2HlYIIdvNE308c935_IaDu7_qeP-NlwPnklhQ,3147 -django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po,sha256=Ol5j1-BLbtSIDgbcC0o7tg_uHImcjJQmkA4-kSmZY9o,4581 -django/contrib/admin/locale/eo/LC_MESSAGES/django.mo,sha256=-w9IlfkMqlEUNhnVfSsg9TATFVTlJ4mlDwXMriUdlHE,15832 -django/contrib/admin/locale/eo/LC_MESSAGES/django.po,sha256=CODDYgsHCPnoTUaLauQDH8ahODyvTxtS98z-E824JMQ,17329 -django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo,sha256=QwYzm1KkoyCZ2YwrkXUUCOT2qnFCcyetCCa4U1Z1c_A,4452 -django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po,sha256=8czUc1ju9YopCCqr5RMIIOwmolJTSBFWZsN-FhrIcnI,5040 -django/contrib/admin/locale/es/LC_MESSAGES/django.mo,sha256=Rbe3xIQLcfJ2wqvXuNkRqxruYe2NbeiaZ8bw04nn5IE,16810 -django/contrib/admin/locale/es/LC_MESSAGES/django.po,sha256=5R2fAMPaLooJBsx35H-VyhHlOqNyQHF2fEuHKPoEaRo,18682 -django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo,sha256=44RpmIC1vT7OGz4ubSAzoiU8OysfLsnueZcIqdF6gjQ,4627 -django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po,sha256=t2Jn5RZo7e-UzqVwgBAejuBceWCidWjXvd--cWEq6rI,5302 -django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo,sha256=sWkRtdW090y-8rC8Q0kOR8AEr_Z5Y4kxcUD_Tm9RDkA,16955 -django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po,sha256=qI3MouJlakkdZgC_V7sxMiv54am09-1ublI8o5RYoFY,18242 -django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo,sha256=lqWxSD90JLBg2ei316TPHGNTgwWyzl9u0-Zy7aQ5WFI,4892 -django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po,sha256=qZJMi1DsBy2tl2MMo322wTjaO0yb0n5ALzc1tK4SZQM,5350 -django/contrib/admin/locale/es_CO/LC_MESSAGES/django.mo,sha256=0k8kSiwIawYCa-Lao0uetNPLUzd4m_me3tCAVBvgcSw,15156 -django/contrib/admin/locale/es_CO/LC_MESSAGES/django.po,sha256=4T_syIsVY-nyvn5gEAtfN-ejPrJSUpNT2dmzufxaBsE,17782 -django/contrib/admin/locale/es_CO/LC_MESSAGES/djangojs.mo,sha256=PLS10KgX10kxyy7MUkiyLjqhMzRgkAFGPmzugx9AGfs,3895 -django/contrib/admin/locale/es_CO/LC_MESSAGES/djangojs.po,sha256=Y4bkC8vkJE6kqLbN8t56dR5670B06sB2fbtVzmQygK8,5176 -django/contrib/admin/locale/es_MX/LC_MESSAGES/django.mo,sha256=lQwxsrvK8ZQaqErLj2Uc_6ot5QiczaWgFqIr9K0tzwc,14127 -django/contrib/admin/locale/es_MX/LC_MESSAGES/django.po,sha256=b9BB_rwofNmIl98JB6jA-61AnYq-GvbITLtsOEi_NBM,16964 -django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.mo,sha256=2w3CMJFBugP8xMOmXsDU82xUm8cWGRUGZQX5XjiTCpM,3380 -django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.po,sha256=OP9cBsdCf3zZAXiKBMJPvY1AHwC_WE1k2vKlzVCtUec,4761 -django/contrib/admin/locale/es_VE/LC_MESSAGES/django.mo,sha256=himCORjsM-U3QMYoURSRbVv09i0P7-cfVh26aQgGnKg,16837 -django/contrib/admin/locale/es_VE/LC_MESSAGES/django.po,sha256=mlmaSYIHpa-Vp3f3NJfdt2RXB88CVZRoPEMfl-tccr0,18144 -django/contrib/admin/locale/es_VE/LC_MESSAGES/djangojs.mo,sha256=Zy-Hj_Mr2FiMiGGrZyssN7GZJrbxRj3_yKQFZKR36Ro,4635 -django/contrib/admin/locale/es_VE/LC_MESSAGES/djangojs.po,sha256=RI8CIdewjL3bAivniMOl7lA9tD7caP4zEo2WK71cX7c,5151 -django/contrib/admin/locale/et/LC_MESSAGES/django.mo,sha256=vJSz-k6PQ80EKg80PqUbrGTRmmEX6x-0sS-ZkwLbC_w,15696 -django/contrib/admin/locale/et/LC_MESSAGES/django.po,sha256=6_gwIXeLN-jQcS_6zqP9Gro1LQDO-qm0tzw5tijDKgA,17175 -django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo,sha256=GOfcPo6Tge73JsPGShWCmepOAvdGgEcdrVTUI-Fxjm4,4394 -django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po,sha256=6qIvrAmlBVY6KM56LkrAl51R9sL-Hnw4u4GNgCoqbRg,4930 -django/contrib/admin/locale/eu/LC_MESSAGES/django.mo,sha256=ctSeJLgjy2FeKVwAGxerVNCfiKYImTNtDOwgnje60wA,15909 -django/contrib/admin/locale/eu/LC_MESSAGES/django.po,sha256=AAm15QBeFLRDHeG3Rrfqh5Gl1wXPEzQ4vlBa3E8cIag,17308 -django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.mo,sha256=bZHiuTFj8MNrO3AntBAY5iUhmCa6LSluGLYw504RKWg,4522 -django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po,sha256=eMpM70UTWIiCDigCgYVOZ9JKQ2IidYZxYcUWunvG8js,5051 -django/contrib/admin/locale/fa/LC_MESSAGES/django.mo,sha256=SDTXAM7LYcv8d5cGoSyVdU5vvRNt619p8MD3EW0eOho,19131 -django/contrib/admin/locale/fa/LC_MESSAGES/django.po,sha256=zwzLWBUq_aHJuKCfKU4KolI4pYrENet8Rj12A4och3k,20529 -django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo,sha256=nvG_i8FrtkTPLpZqCkEYSaVJFiRPYLosBhc1s-FsgnI,5068 -django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po,sha256=XVI2k0cGr-1iqrDL8-k-vbgmPQJm3DH58cw_O5cR04s,5680 -django/contrib/admin/locale/fi/LC_MESSAGES/django.mo,sha256=tkuQsXPqB0dpG_PKYvssN-rTbQ-VP3bswgrckqJ9wfM,15923 -django/contrib/admin/locale/fi/LC_MESSAGES/django.po,sha256=aaVMgWFnz5ysorFBieY-vG7dDJN0wiEeUL-3tYxot2I,17217 -django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.mo,sha256=ez7WTtE6OE878kSxqXniDOQY-wdURYEfxYQXBQJTVpg,4561 -django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po,sha256=rquknGvUFlWNLcrOc1wwhAPn63PZA48qBN8oWiINiQ0,5045 -django/contrib/admin/locale/fr/LC_MESSAGES/django.mo,sha256=7Fne4TDRamUndHqhY5mhqfCIk4brV1tcx_ruEPFFRWo,17504 -django/contrib/admin/locale/fr/LC_MESSAGES/django.po,sha256=TMycKKdYQQsgU3ltPm-A2uPUIYgjBl__N20SIeTdvPk,18792 -django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo,sha256=1pABUr752ITt14MXm6yqZjU7lWcQ2ZYeymqnQOZqthU,4735 -django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po,sha256=Z2rPIY8xryfJqAYan2K5Rc0NOZTKTh80BvuWJav-Atg,5228 -django/contrib/admin/locale/fy/LC_MESSAGES/django.mo,sha256=mWnHXGJUtiewo1F0bsuJCE_YBh7-Ak9gjTpwjOAv-HI,476 -django/contrib/admin/locale/fy/LC_MESSAGES/django.po,sha256=oSKEF_DInUC42Xzhw9HiTobJjE2fLNI1VE5_p6rqnCE,10499 -django/contrib/admin/locale/fy/LC_MESSAGES/djangojs.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/admin/locale/fy/LC_MESSAGES/djangojs.po,sha256=efBDCcu43j4SRxN8duO5Yfe7NlpcM88kUPzz-qOkC04,2864 -django/contrib/admin/locale/ga/LC_MESSAGES/django.mo,sha256=wMM857oxSd8c182lYD2WMmoth4dOJ-a1FjHj9ZinZSk,13697 -django/contrib/admin/locale/ga/LC_MESSAGES/django.po,sha256=cGFmkA6XOhXyKycmoF_KbTHAgFDjx7fbF9LWwJXH7BM,16798 -django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo,sha256=fa2MlEm3XUig1C3X26u_kZzPKcUGR-Uy5jfwG6RQIJ4,4379 -django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po,sha256=ixvu6pm3asTKvHisWdcZ6YMb3fjsKOEnHZGG5g3l-tw,5725 -django/contrib/admin/locale/gd/LC_MESSAGES/django.mo,sha256=DMWU4a5b5M1rwDXYq_ZLWUVBRAqx0WX3GtUA79-e4yI,18177 -django/contrib/admin/locale/gd/LC_MESSAGES/django.po,sha256=J0nOji3Q30AYcCNEjh6EP_J_u2Y8G53SEhlRchQNTlY,19476 -django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.mo,sha256=uZigxSJ1bBQhvhVMAyp7R4-JlZE14b3mu3hCcnwMjMQ,5304 -django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.po,sha256=7x7qPCf9WcLBrmJ5uFbp4-9b8QsdYisoAlTVdtXmqYw,5809 -django/contrib/admin/locale/gl/LC_MESSAGES/django.mo,sha256=_9JW7LdCw2on4M1oz3Iyl_VMrhrw_0oVIQl4h_rCX6g,13246 -django/contrib/admin/locale/gl/LC_MESSAGES/django.po,sha256=xqdcVwIX5zPxq471crW0yxcOYcbZVaRwKiKx-MAGiqk,16436 -django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo,sha256=YkT7l3U9ffSGqXmu6S41Ex0r7tbK-0BKH5lS6O8PAGs,3279 -django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po,sha256=EDccOpm1mpT8mVRvu5LBsq8nao50oP1V7aKEnuRmtF8,4803 -django/contrib/admin/locale/he/LC_MESSAGES/django.mo,sha256=WNUBwLt_Utmj4vCzwh3OeXutt9toN9qXvboTfLkJ-10,17370 -django/contrib/admin/locale/he/LC_MESSAGES/django.po,sha256=XfXWu6hiL37UYyzMCBotIyLqrwaF8OEkUTRkHPbV6YM,18609 -django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo,sha256=n0yZEC29NoFalQke_EhZYRRFAzhPRdSZO4GbuzRl-X8,4775 -django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po,sha256=Qf_F0VXeqs2b3AM4c3s66VXTr4KyERDurdoINABK63s,5280 -django/contrib/admin/locale/hi/LC_MESSAGES/django.mo,sha256=EogCHT8iAURSuE34kZ0kwEIoz5VjgUQUG2eAIqDxReU,18457 -django/contrib/admin/locale/hi/LC_MESSAGES/django.po,sha256=NcTFbFyHhWOIieUpzIVL7aSDWZ8ZNmfnv5gcxhON1zc,21770 -django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.mo,sha256=yCUHDS17dQDKcAbqCg5q8ualaUgaa9qndORgM-tLCIw,4893 -django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.po,sha256=U9rb5tPMICK50bRyTl40lvn-tvh6xL_6o7xIPkzfKi0,6378 -django/contrib/admin/locale/hr/LC_MESSAGES/django.mo,sha256=s9m770GwDohk1TS2u2KaMbntt5Sh-ND4KbCZdozajKY,14774 -django/contrib/admin/locale/hr/LC_MESSAGES/django.po,sha256=Wfn3w39GHvKVV32DvmdfCdaghVxsstnxaGPokFkIFnw,17040 -django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo,sha256=rhZ3Jr6ItrGzeBqJUrHGeTamc3bgJmoMjasV9s0rmtQ,3360 -django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po,sha256=otuJ1-VmP-MVS1hEeBFbatdweeasHYAVUpLmJ7eE5p0,4870 -django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo,sha256=Hqf74Da0l2w6xVBew1-j3C9L-evR0rA3wcXcyqmAZ70,16584 -django/contrib/admin/locale/hsb/LC_MESSAGES/django.po,sha256=23265vZGcTehU9hwEGY4WndjIMwVteaPyk2zxpGW16g,17796 -django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.mo,sha256=t0FSFpoVBOf8tzw3EmKAaML5lcJJJRPIfTucfBj0zIU,5087 -django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.po,sha256=xrPdmcc1o1ZDMbTPvnNk84vsBPB7P2atlBK0e0RWyJ4,5564 -django/contrib/admin/locale/hu/LC_MESSAGES/django.mo,sha256=Zuhq5Tj-9a7_yFQGeSXNk-LSIUYeOvjBubLtOxm_-5k,16464 -django/contrib/admin/locale/hu/LC_MESSAGES/django.po,sha256=v-LWAj-ZX4YT9EMUnwPXheUbRN08_oahKigBDTtU8dI,17891 -django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo,sha256=71Dhytp7dJplmQzc9MHLTh0k-Fvy1gdeQwi9oafg1wg,4524 -django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po,sha256=bYu4XVz6wmeVfrY2PFxjeaR_RObBsAYQ-yzWxdMgmIo,5105 -django/contrib/admin/locale/ia/LC_MESSAGES/django.mo,sha256=SRKlr8RqW8FQhzMsXdA9HNqttO3hc0xf4QdQJd4Dy8c,11278 -django/contrib/admin/locale/ia/LC_MESSAGES/django.po,sha256=pBQLQsMinRNh0UzIHBy3qEW0etUWMhFALu4-h-woFyE,15337 -django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.mo,sha256=28MiqUf-0-p3PIaongqgPQp2F3D54MLAujPslVACAls,3177 -django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po,sha256=CauoEc8Fiowa8k6K-f9N8fQDle40qsgtXdNPDHBiudQ,4567 -django/contrib/admin/locale/id/LC_MESSAGES/django.mo,sha256=oqb4tMeB8Vz1TmHmeutmzxcFKdWSJKtN8tLVzxkDnUs,15684 -django/contrib/admin/locale/id/LC_MESSAGES/django.po,sha256=5EVJPBbM4YYV6WG9yaNb9cM-bPAhb0Fa0RXNGShYpww,17162 -django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo,sha256=_FT2WXJ4inRZDlWJe2iaU0idpJdBiE7Ecd1IcghrsH0,4407 -django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po,sha256=9FYLgVUUXqgYSndWDNilL0een9UTRIzzM3DY4or-SGM,4915 -django/contrib/admin/locale/io/LC_MESSAGES/django.mo,sha256=URiYZQZpROBedC-AkpVo0q3Tz78VfkmwN1W7j6jYpMo,12624 -django/contrib/admin/locale/io/LC_MESSAGES/django.po,sha256=y0WXY7v_9ff-ZbFasj33loG-xWlFO8ttvCB6YPyF7FQ,15562 -django/contrib/admin/locale/io/LC_MESSAGES/djangojs.mo,sha256=nMu5JhIy8Fjie0g5bT8-h42YElCiS00b4h8ej_Ie-w0,464 -django/contrib/admin/locale/io/LC_MESSAGES/djangojs.po,sha256=WLh40q6yDs-8ZG1hpz6kfMQDXuUzOZa7cqtEPDywxG4,2852 -django/contrib/admin/locale/is/LC_MESSAGES/django.mo,sha256=W-t3UPqpOhi4hWJVaISNGfppMIX47zJUkAP5vOKPezo,16223 -django/contrib/admin/locale/is/LC_MESSAGES/django.po,sha256=FH_HTXGBIkBO2tqPdIZoruNfPMDChqTlocxNF9yQubA,17530 -django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo,sha256=q2W800Di3ibCO32xisxqpO8GHwTB9bEYBfXgYXgb87k,4587 -django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po,sha256=C_hcOfRSmZtA9vTuaT9X5btk_z61SKcaDbF86yDfgks,5122 -django/contrib/admin/locale/it/LC_MESSAGES/django.mo,sha256=Px0LhGU8va1jCIcZFr-1iYkKJO3TSvAKutXD66jK4OA,16441 -django/contrib/admin/locale/it/LC_MESSAGES/django.po,sha256=EA8sEhnHNDlzO68oAvWsqnYBXbMi6A0Piv8aP8zyK0M,18020 -django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo,sha256=P2wm_9ihqu1t1T3epDhlCia-OhwYNtTcfpAbOdjpElI,4537 -django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po,sha256=-cvn4xW3LgMTeLu7Zcurz_ezUOmc4NQNkCeseZdMTyU,5171 -django/contrib/admin/locale/ja/LC_MESSAGES/django.mo,sha256=XFhPX8zpz6GeYaXDKUyw1GTWfqDHO-DyT2MWP7qoD1o,17590 -django/contrib/admin/locale/ja/LC_MESSAGES/django.po,sha256=5dCIRF_yMYy5BmLu795IoJhBYlEF_qFIZ6gcEug65ss,18895 -django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo,sha256=Eki83Z0uecO6oyRrvVdCEMmctehw62HHRaoznf4sKtg,4688 -django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po,sha256=5_AkaIMOx1h-mcr1C3m-JoSiIRx754BN6Qw-e8RFQ1E,5098 -django/contrib/admin/locale/ka/LC_MESSAGES/django.mo,sha256=WtCZkU5d5VsUCboXo7GO8mXCq3Z4Z-2zp3Sj4j1aqk4,20248 -django/contrib/admin/locale/ka/LC_MESSAGES/django.po,sha256=GQutjRKrVbWLlHYeX5FUT-sLXh3zsskQSIDbQsqpKmk,23236 -django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo,sha256=7XSBdq-DMWfyGmAHJnwNaexOevuitsNiPDifnbUU19o,5199 -django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po,sha256=PB6VJ0zYdpjF9vwvOlTowt1rl-7j4QRKfj_YhrJqSas,6407 -django/contrib/admin/locale/kab/LC_MESSAGES/django.mo,sha256=9QKEWgr8YQV17OJ14rMusgV8b79ZgOOsX4aIFMZrEto,3531 -django/contrib/admin/locale/kab/LC_MESSAGES/django.po,sha256=cSOG_HqsNE4tA5YYDd6txMFoUul8d5UKvk77ZhaqOK0,11711 -django/contrib/admin/locale/kab/LC_MESSAGES/djangojs.mo,sha256=nqwZHJdtjHUSFDJmC0nPNyvWcAdcoRcN3f-4XPIItvs,1844 -django/contrib/admin/locale/kab/LC_MESSAGES/djangojs.po,sha256=tF3RH22p2E236Cv6lpIWQxtuPFeWOvJ-Ery3vBUv6co,3713 -django/contrib/admin/locale/kk/LC_MESSAGES/django.mo,sha256=LfA7cfm9aUcTTuVONlsbjLvWuQvcEwIw6k0awxSXxjU,12966 -django/contrib/admin/locale/kk/LC_MESSAGES/django.po,sha256=WPPFsL2v1BouI92iiSLF_KHtqr3LCUHOqz_QNNfWh3U,17442 -django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo,sha256=3TH-WxIbc7NPrGExH9ATKgCy13xJL-VMFtrjCLQhWF8,2380 -django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po,sha256=qiz_cxoDIyPNylWhKPF2yiHhRekfdFETSn2NbHyRKeg,4373 -django/contrib/admin/locale/km/LC_MESSAGES/django.mo,sha256=eOe9EcFPzAWrTjbGUr-m6RAz2TryC-qHKbqRP337lPY,10403 -django/contrib/admin/locale/km/LC_MESSAGES/django.po,sha256=RSxy5vY2sgC43h-9sl6eomkFvxClvH_Ka4lFiwTvc2I,17103 -django/contrib/admin/locale/km/LC_MESSAGES/djangojs.mo,sha256=Ja8PIXmw6FMREHZhhBtGrr3nRKQF_rVjgLasGPnU95w,1334 -django/contrib/admin/locale/km/LC_MESSAGES/djangojs.po,sha256=LH4h4toEgpVBb9yjw7d9JQ8sdU0WIZD-M025JNlLXAU,3846 -django/contrib/admin/locale/kn/LC_MESSAGES/django.mo,sha256=955iPq05ru6tm_iPFVMebxwvZMtEa5_7GaFG1mPt6HU,9203 -django/contrib/admin/locale/kn/LC_MESSAGES/django.po,sha256=xMGtsVCItMTs18xdFQHELdVZKCwTNNyKfb8n1ARcFws,16053 -django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.mo,sha256=dHzxizjDQWiZeRfBqnVFcK1yk1-M5p1KOfQ1ya9TMVU,1872 -django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po,sha256=MqRj6ozyr1e9-qNORUTJXNahe6SL3ee3OveSm3efV4g,4214 -django/contrib/admin/locale/ko/LC_MESSAGES/django.mo,sha256=HGwZQLyvo7ZwhhapTwI04leRIA1B5_g-JR5SmRaWTo8,17006 -django/contrib/admin/locale/ko/LC_MESSAGES/django.po,sha256=cZ7N1sxBgJtL52SaB3pC-9kzEkglcVp9zi3oOmRqLME,18444 -django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo,sha256=ejjPHM0HjXBXfsyFGyxAnzj7K296EK7kgxhMhT8-9wA,4493 -django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po,sha256=R4ruBO7896mDe8ksU8iIwVjZM_6OB0dohAaek0Srkbg,5029 -django/contrib/admin/locale/lb/LC_MESSAGES/django.mo,sha256=8GGM2sYG6GQTQwQFJ7lbg7w32SvqgSzNRZIUi9dIe6M,913 -django/contrib/admin/locale/lb/LC_MESSAGES/django.po,sha256=PZ3sL-HvghnlIdrdPovNJP6wDrdDMSYp_M1ok6dodrw,11078 -django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po,sha256=fiMelo6K0_RITx8b9k26X1R86Ck2daQXm86FLJpzt20,2862 -django/contrib/admin/locale/lt/LC_MESSAGES/django.mo,sha256=bYiOprxWo54Uky70hmTIzjiSTqfWarP57-KUOWjy7eo,16410 -django/contrib/admin/locale/lt/LC_MESSAGES/django.po,sha256=sARv8FpCWC2oQskLGebVYI56v9shcPScbMHONJXyaD0,17835 -django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo,sha256=ixKwmi59zj8oVCzxFYjXVRE3_EKQFdS7fZYrtngIDtU,4934 -django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po,sha256=Zzq-hPaQUe3r7WMOWAuoTITVUkTtkDnYwShy5vogaAE,5570 -django/contrib/admin/locale/lv/LC_MESSAGES/django.mo,sha256=xD7Wvz9_Yn-PoqyhsQid1fv0IO7irGTiQ3V7w4rYuPU,16220 -django/contrib/admin/locale/lv/LC_MESSAGES/django.po,sha256=z_tyZSi-D7zSEV-keRnvlKARqgmJzp6Dl497PcKUJPo,17595 -django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo,sha256=fPfAqPJxqmFRYSPlLch8eBKfXwZ7jTPBlcs3-LXMu7k,4908 -django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po,sha256=pAwBGRKZVtF0I0XqlrO_UMo7WWd_P0WgLOunzGJQaYA,5428 -django/contrib/admin/locale/mk/LC_MESSAGES/django.mo,sha256=luKonZA7H7yeCILl4BWXsYn_BncPzYy7_sfCWq7vlI4,20661 -django/contrib/admin/locale/mk/LC_MESSAGES/django.po,sha256=LyznsrasvV6Rtq7X6NnIrdZESGo_PlhISShHrCTbDgc,22056 -django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.mo,sha256=ZyQQ49zqs8GiS73XBaSd5l3Rh3vOA0glMpX98GH6nhU,5633 -django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.po,sha256=bWph0TVgwC-Fmlof8_4SiR21uCFm9rftp59AMZ3WIYA,6188 -django/contrib/admin/locale/ml/LC_MESSAGES/django.mo,sha256=RzG1Bu5fVUe0yagKxq5PL9HhDkuVRydQQbcAvbDqzGk,21581 -django/contrib/admin/locale/ml/LC_MESSAGES/django.po,sha256=w1xncysUEfTk6owbX6_2PMAH5emG_DMBOsshmc_64So,24562 -django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo,sha256=ALD2ba1V37Xo9mWShD9KNr7iE3F30nytEbHnP1gxz8o,6362 -django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po,sha256=Fa_b2gBa-JJkxGrJhdQ-T0QigGLeHnu8lhhmdqKiq6s,7607 -django/contrib/admin/locale/mn/LC_MESSAGES/django.mo,sha256=ew8-JvbkDihdAdNh9bC17H7BL0qw6ETwGWIg2EdXWDs,20092 -django/contrib/admin/locale/mn/LC_MESSAGES/django.po,sha256=18g6zBpC4sQ5ZbbKhsdsMdEUYr0ylV3KbCyFuoKF02c,21513 -django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo,sha256=HJcGCl8vBHrHekjm19W-ZNXQxKZ9rhyvU_xlJQYb5IE,4416 -django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po,sha256=gt7CYBxKtPypxhBPUMrkiLA88oL4_6tkKNqc_yb1Mzw,5610 -django/contrib/admin/locale/mr/LC_MESSAGES/django.mo,sha256=UAxGnGliid2PTx6SMgIuHVfbCcqVvcwC4FQUWtDuSTc,468 -django/contrib/admin/locale/mr/LC_MESSAGES/django.po,sha256=TNARpu8Pfmu9fGOLUP0bRwqqDdyFmlh9rWjFspboTyc,10491 -django/contrib/admin/locale/mr/LC_MESSAGES/djangojs.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/admin/locale/mr/LC_MESSAGES/djangojs.po,sha256=uGe9kH2mwrab97Ue77oggJBlrpzZNckKGRUMU1vaigs,2856 -django/contrib/admin/locale/my/LC_MESSAGES/django.mo,sha256=xvlgM0vdYxZuA7kPQR7LhrLzgmyVCHAvqaqvFhKX9wY,3677 -django/contrib/admin/locale/my/LC_MESSAGES/django.po,sha256=zdUCYcyq2-vKudkYvFcjk95YUtbMDDSKQHCysmQ-Pvc,12522 -django/contrib/admin/locale/my/LC_MESSAGES/djangojs.mo,sha256=1fS9FfWi8b9NJKm3DBKETmuffsrTX-_OHo9fkCCXzpg,3268 -django/contrib/admin/locale/my/LC_MESSAGES/djangojs.po,sha256=-z1j108uoswi9YZfh3vSIswLXu1iUKgDXNdZNEA0yrA,5062 -django/contrib/admin/locale/nb/LC_MESSAGES/django.mo,sha256=IroGpA0_OpPSHjw8llcKD7XoPMqtLLPcYtyiUTQXG6k,15643 -django/contrib/admin/locale/nb/LC_MESSAGES/django.po,sha256=U_vdIdGmmEvivVU2Z5ZgZwvdsjM31d9zjZl6clc4bx0,17068 -django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo,sha256=VSt2qyv3IsyongCj9VUuceksd2L7X8uluPJMeGgfOIo,4375 -django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po,sha256=NJ1EcuXD8LEuLwe_FbOe1NEgAoAi-v2qljCiYrxhA9M,4915 -django/contrib/admin/locale/ne/LC_MESSAGES/django.mo,sha256=vkGnGxQFgLe9TFxEalAj-wLa0mos4ylG24clOGzRWr8,15710 -django/contrib/admin/locale/ne/LC_MESSAGES/django.po,sha256=qWDifq6NZdeyYS2uM7OFuypxeWCmBkCZBKhVEOAvd5g,19569 -django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.mo,sha256=mJdtpLT9k4vDbN9fk2fOeiy4q720B3pLD3OjLbAjmUI,5362 -django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.po,sha256=N91RciTV1m7e8-6Ihod5U2xR9K0vrLoFnyXjn2ta098,6458 -django/contrib/admin/locale/nl/LC_MESSAGES/django.mo,sha256=8ec19xPOxXsG7ttdJ-6eGJrHAA67wnrEviCtYFA9baY,16306 -django/contrib/admin/locale/nl/LC_MESSAGES/django.po,sha256=d0A1Q8pzcJPkU-01FDcNMQqs-1jXSm4KDcV3qSny3PY,17945 -django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo,sha256=BYmzOwUt7vwLyHTSkbf8JTxS53E4KZLfEQQNVSxmAgw,4691 -django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po,sha256=2oLuixuq2iE_du5djJdQVw5yapVsp8pUz652XXaYN3k,5421 -django/contrib/admin/locale/nn/LC_MESSAGES/django.mo,sha256=zKIlvBLMvoqrXO90TqPJcdTEXkVweUWpz6ynsWeg8mU,10943 -django/contrib/admin/locale/nn/LC_MESSAGES/django.po,sha256=-CFana0-PPFwv1jcdyjYuLK2OYOPva-xxMjlVhvsoCw,14999 -django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.mo,sha256=A7MT59BoyOSiM7W0phx8LLKQyH4Q8AEu6jUsBjUBOoE,3120 -django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.po,sha256=tCXUV4F6FhMa-K0SBw9lQ0U2KY5kcMpGzT7jzKSvceo,4578 -django/contrib/admin/locale/os/LC_MESSAGES/django.mo,sha256=c51PwfOeLU2YcVNEEPCK6kG4ZyNc79jUFLuNopmsRR8,14978 -django/contrib/admin/locale/os/LC_MESSAGES/django.po,sha256=yugDw7iziHto6s6ATNDK4yuG6FN6yJUvYKhrGxvKmcY,18188 -django/contrib/admin/locale/os/LC_MESSAGES/djangojs.mo,sha256=0gMkAyO4Zi85e9qRuMYmxm6JV98WvyRffOKbBVJ_fLQ,3806 -django/contrib/admin/locale/os/LC_MESSAGES/djangojs.po,sha256=skiTlhgUEN8uKk7ihl2z-Rxr1ZXqu5qV4wB4q9qXVq0,5208 -django/contrib/admin/locale/pa/LC_MESSAGES/django.mo,sha256=XRkVFMMBuHA86K16qlN5X2c1DliD-hUwFIB9NIbhPXk,10171 -django/contrib/admin/locale/pa/LC_MESSAGES/django.po,sha256=XTZMIuOCZRC7aG-iRSokjDy9f126VV63S6TLX0sKrOA,16093 -django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo,sha256=lwkcLUw3N-uFwqP2p1sZzaMVeXUGIMPDO-IPoYnalGo,1207 -django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po,sha256=7BYA76FmHAJVe_GRt2fIYei57Sk3B7G_qHy-lrCUxgs,3717 -django/contrib/admin/locale/pl/LC_MESSAGES/django.mo,sha256=dntS1vfCNnlxUdEvjWxkE9JF3MO1MaUIPibBMyrQ5z4,16767 -django/contrib/admin/locale/pl/LC_MESSAGES/django.po,sha256=SrgLr7XJKVbUlKKmfEwmY-lqaLfUdso2hMk9UnwTrMM,18476 -django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo,sha256=ec1TSIUAbti7sn1vEkF_JwsAKtJw7AQ_P_QgyAq8R38,5124 -django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po,sha256=u0KYrSzRQm49ZVcLqocF0bJjzL8fQXjR5dHtrdWvYhc,5885 -django/contrib/admin/locale/pt/LC_MESSAGES/django.mo,sha256=kJQFBZeg8oTQySbwGEA2U5KX-SD4jSNDTQKqNkwADJM,16612 -django/contrib/admin/locale/pt/LC_MESSAGES/django.po,sha256=tkaISKw8FWa0AWjwqyGJO8h_HQRy_-NjOAHezoOFynk,18021 -django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.mo,sha256=D6-8QwX6lsACkEcYXq1tK_4W2q_NMc6g5lZQJDZRFHw,4579 -django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po,sha256=__a9WBgO_o0suf2xvMhyRk_Wkg2tfqNHmJOM5YF86sk,5118 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo,sha256=5LfoCVXCKPB0YoxVvijk6viVmNH6DOjQT0LdSV3wTPI,16398 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po,sha256=pHFIJArrkTV8TTp90h7J-Irf3wLjA4zhXxoXValg8X4,18246 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo,sha256=wOoG2N8JrONQDPsXZ0LstCOUwL0Dtkrg5tv5LUfdLPQ,4619 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po,sha256=VGvet4lDdbvOiWQiXEJzZncw5KpeiK6vPITwmIiwLXU,5256 -django/contrib/admin/locale/ro/LC_MESSAGES/django.mo,sha256=i9xCmjjK89RDyZbv4byzzXp10n-XzwsLpFrkNcpmKD8,16508 -django/contrib/admin/locale/ro/LC_MESSAGES/django.po,sha256=KXM5hrWJOmXe0uJ8hAcnAyubdFmfiHGqQD4TlDiVIB4,17936 -django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo,sha256=ecZWK29CdeMH21OfOuv0dZ9907hWu_1gUsUeDxRJd-c,4711 -django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po,sha256=2Vm36kASBB8RlNTWV3xnLkl06qGbPex4zJeXKV1ihCc,5388 -django/contrib/admin/locale/ru/LC_MESSAGES/django.mo,sha256=UUsVqTtdz3RrPeo3zNTpyfzj6q9X6akrEW_iiYhTMM8,21129 -django/contrib/admin/locale/ru/LC_MESSAGES/django.po,sha256=2aSRrHBP4Is4ROggjZmEXkb3AhWadFbBJBfAkwTslXo,22684 -django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo,sha256=aKfi6-U6lHDVoCT0vnr5u02POMb2ZZq6RBWkYM3ZTGs,6564 -django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po,sha256=qJElbC05QixcTmPe4_QN_p0UiiXxVXRMXEK8ZsTYS58,7372 -django/contrib/admin/locale/sk/LC_MESSAGES/django.mo,sha256=qfJ6iSOPH215iuk7dGbbbkYFbDTFr3DgXTH5PKyakX0,16405 -django/contrib/admin/locale/sk/LC_MESSAGES/django.po,sha256=_efzcdpl-KkRFglILyRBp2lXLu1jAnoeWjFHRmE4vio,17792 -django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo,sha256=FIrWSjWt0qRGLmjt3wODBr4Dm9rfGGJNo_aQomRlL9w,4551 -django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po,sha256=8ExPrvCwSNeOwGOrWwpw3CASDDSYFdINzbj90oX9kfo,5176 -django/contrib/admin/locale/sl/LC_MESSAGES/django.mo,sha256=iqcg1DYwwDVacRAKJ3QR4fTmKQhRGXU4WkwYco9ASaA,16136 -django/contrib/admin/locale/sl/LC_MESSAGES/django.po,sha256=VeIJDh1PojyUy-4AdPcVezbQ-XVWqp04vFE_u3KU2tU,17508 -django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.mo,sha256=0jqGv5lgcfyxh9pdnB0Nt7e0bF2G0nO-iVWJjKwyZqI,4724 -django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po,sha256=1DEs7obfCCf-hNM2nIkMizcRcq1KoLBvngMaXLlozUo,5269 -django/contrib/admin/locale/sq/LC_MESSAGES/django.mo,sha256=mz4DGjNy67A6s3gbYuWSrjeGyQgZ29HjEQ22c7oq3HA,16593 -django/contrib/admin/locale/sq/LC_MESSAGES/django.po,sha256=1TlVYvPiB1UztB-fEAcw0iTs0rzd2NrBKH4XXv7-eq0,17876 -django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo,sha256=Kke8CoU6tgem52SEYXyN-GD31iE0X2DtXljgEx2u5Dc,4590 -django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po,sha256=Xr0i6Ru0KgO1fmXHJbF_8_QC6mCVU8lKKNDB0lQWVdU,5052 -django/contrib/admin/locale/sr/LC_MESSAGES/django.mo,sha256=GdgygmaQEZxa5svkL62lo09VScrFCdlr1bXeaDyF0yU,14126 -django/contrib/admin/locale/sr/LC_MESSAGES/django.po,sha256=QghWs3rh7s_9E01A08E4DpZlaI0gUdNERXJ0ppsTOkw,18244 -django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo,sha256=tU7FI7MZSQ8-uj0yeHXsPFxTscrVNAVNyowrPVp6ShA,3493 -django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po,sha256=jAYqG0qPzVOYfL9rmyqXaamk-dJOX3Y7eZamJRjQgJU,4944 -django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=MCdPPbt_Rob5o-oiXrrh04yJdpzj1_LH2u6iNQrUZ0U,11339 -django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po,sha256=z7Kmej61JawIMlGVei9SznO_yzgijWZ5P-YZDNZQGxI,15457 -django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo,sha256=Q9Z-L--PCpPQkbqm2JmNX0jGQt42RVX9I7LdQLEgoQQ,2978 -django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po,sha256=ltYFTnxmwOTZjaSuR_w5aTMw1jpU4fcblD4EopYvnfQ,4429 -django/contrib/admin/locale/sv/LC_MESSAGES/django.mo,sha256=NCnsGQ3f2H8e-KKPQqurbzEK1C2GwmzzyS_4QEyuI9M,15933 -django/contrib/admin/locale/sv/LC_MESSAGES/django.po,sha256=v5aY4NPh1JcTxQComXQqt7s2oaoaBJrtpMJP0LWy8HM,17467 -django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mo,sha256=Q9UBnIR3KTna0BtGSZyXiehzxj8rP2I2NEi_2tTKUTU,4541 -django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po,sha256=SfGsoatvFSE1fsWsg_aVZl7gNsI0dtEmaro_0cGu9m4,5206 -django/contrib/admin/locale/sw/LC_MESSAGES/django.mo,sha256=Mtj7jvbugkVTj0qyJ_AMokWEa2btJNSG2XrhpY0U1Mc,14353 -django/contrib/admin/locale/sw/LC_MESSAGES/django.po,sha256=ElU-s0MgtNKF_aXdo-uugBnuJIDzHqMmy1ToMDQhuD0,16419 -django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.mo,sha256=p0pi6-Zg-qsDVMDjNHO4aav3GfJ3tKKhy6MK7mPtC50,3647 -django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.po,sha256=lZFP7Po4BM_QMTj-SXGlew1hqyJApZxu0lxMP-YduHI,4809 -django/contrib/admin/locale/ta/LC_MESSAGES/django.mo,sha256=ZdtNRZLRqquwMk7mE0XmTzEjTno9Zni3mV6j4DXL4nI,10179 -django/contrib/admin/locale/ta/LC_MESSAGES/django.po,sha256=D0TCLM4FFF7K9NqUGXNFE2KfoEzx5IHcJQ6-dYQi2Eg,16881 -django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.mo,sha256=2-37FOw9Bge0ahIRxFajzxvMkAZL2zBiQFaELmqyhhY,1379 -django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.po,sha256=Qs-D7N3ZVzpZVxXtMWKOzJfSmu_Mk9pge5W15f21ihI,3930 -django/contrib/admin/locale/te/LC_MESSAGES/django.mo,sha256=aIAG0Ey4154R2wa-vNe2x8X4fz2L958zRmTpCaXZzds,10590 -django/contrib/admin/locale/te/LC_MESSAGES/django.po,sha256=-zJYrDNmIs5fp37VsG4EAOVefgbBNl75c-Pp3RGBDAM,16941 -django/contrib/admin/locale/te/LC_MESSAGES/djangojs.mo,sha256=VozLzWQwrY-USvin5XyVPtUUKEmCr0dxaWC6J14BReo,1362 -django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po,sha256=HI8IfXqJf4I6i-XZB8ELGyp5ZNr-oi5hW9h7n_8XSaQ,3919 -django/contrib/admin/locale/th/LC_MESSAGES/django.mo,sha256=3M_F_61KZCpwDW59j69WocWl5BvdOP2kP0ghqjWuvtU,18775 -django/contrib/admin/locale/th/LC_MESSAGES/django.po,sha256=L2VnfVan4tJ0Lafv0Mc7oVNy2HG6l2tlwDaetLCpByY,21693 -django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo,sha256=Pf2RPgOPysCBvi_5dA73rGrrfs6E4fwtQslrJ0C1-0E,5584 -django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po,sha256=dJWCRdd48kZYyhWcOrqqrBIrFKnZt5BL4Dj0pLH-vYk,6386 -django/contrib/admin/locale/tr/LC_MESSAGES/django.mo,sha256=AMH9iJeDnFNroamlplOgstt5LCDMLYaQHf11ZeHaZGA,16541 -django/contrib/admin/locale/tr/LC_MESSAGES/django.po,sha256=l554XQjF1bObdqocEkUUEOd83PS_Evs6on3YdLnzZXQ,18065 -django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo,sha256=_UZ4Vl3iMn2jr69RdNsamDcQUi8Z40gb_cXGM6v7htM,4547 -django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po,sha256=DH2pZ5OEc8jhW3gzRvq9E_Z6pUA7yayyikszK86MBYg,5070 -django/contrib/admin/locale/tt/LC_MESSAGES/django.mo,sha256=ObJ8zwVLhFsS6XZK_36AkNRCeznoJJwLTMh4_LLGPAA,12952 -django/contrib/admin/locale/tt/LC_MESSAGES/django.po,sha256=VDjg5nDrLqRGXpxCyQudEC_n-6kTCIYsOl3izt1Eblc,17329 -django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.mo,sha256=Sz5qnMHWfLXjaCIHxQNrwac4c0w4oeAAQubn5R7KL84,2607 -django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.po,sha256=_Uh3yH_RXVB3PP75RFztvSzVykVq0SQjy9QtTnyH3Qk,4541 -django/contrib/admin/locale/udm/LC_MESSAGES/django.mo,sha256=2Q_lfocM7OEjFKebqNR24ZBqUiIee7Lm1rmS5tPGdZA,622 -django/contrib/admin/locale/udm/LC_MESSAGES/django.po,sha256=L4TgEk2Fm2mtKqhZroE6k_gfz1VC-_dXe39CiJvaOPE,10496 -django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.po,sha256=ZLYr0yHdMYAl7Z7ipNSNjRFIMNYmzIjT7PsKNMT6XVk,2811 -django/contrib/admin/locale/uk/LC_MESSAGES/django.mo,sha256=JK10EB3jmFUpbEEyhY0IjzI_xn1-47n3UL8aFcIPT70,20138 -django/contrib/admin/locale/uk/LC_MESSAGES/django.po,sha256=UjHVH3lDzepPD_qTUuwPC1FVF3stpaJhzXTq4me5wUY,21839 -django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo,sha256=0PeSJdHf986VwD8vDLQLdrfJJv2Vw57c_vo8XLcu4Io,5574 -django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po,sha256=roROo3W4qdlg2-XQwUnF3rnqazVwFSQvJ3wnyYBYXrU,6256 -django/contrib/admin/locale/ur/LC_MESSAGES/django.mo,sha256=HvyjnSeLhUf1JVDy759V_TI7ygZfLaMhLnoCBJxhH_s,13106 -django/contrib/admin/locale/ur/LC_MESSAGES/django.po,sha256=BFxxLbHs-UZWEmbvtWJNA7xeuvO9wDc32H2ysKZQvF4,17531 -django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.mo,sha256=eYN9Q9KKTV2W0UuqRc-gg7y42yFAvJP8avMeZM-W7mw,2678 -django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.po,sha256=Nj-6L6axLrqA0RHUQbidNAT33sXYfVdGcX4egVua-Pk,4646 -django/contrib/admin/locale/vi/LC_MESSAGES/django.mo,sha256=jl3bBXOh26m8Egaw3N8VIs_x4Gnf_iUmLZVW2zyaTpU,14951 -django/contrib/admin/locale/vi/LC_MESSAGES/django.po,sha256=eDAYTe4FiiMZO3dzMFu_3qNqYDC7s1gXRUeBSOePIrQ,17618 -django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.mo,sha256=M_wqHg1NO-I7xfY-mMZ29BqUAqGzlizgJ3_DIGBWOUc,3733 -django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po,sha256=d3YtQhNuCqtfMO3u5-6zoNhhGBNYkoUhTrxz7I3PRkQ,5018 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=NSmADSF_aWntgUC5L_-9ureIotlq308r173LP9Mk4zg,15154 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po,sha256=rwmGfveq0K18ua5DyMcTXlWxnFICex4ZD2F5MoZN0Hk,16754 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo,sha256=hHInOZe0GSIyBaXEax7mVKbf-pbDVZViNRPD2ia9fLE,4230 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po,sha256=lDyl7tV3bT5CTtfrzdcVbTlxahnhwPvs5R33Ig1Govk,4911 -django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=kEKX-cQPRFCNkiqNs1BnyzEvJQF-EzA814ASnYPFMsw,15152 -django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.po,sha256=iH3w7Xt_MelkZefKi8F0yAWN6QGdQCJBz8VaFY4maUg,16531 -django/contrib/admin/locale/zh_Hant/LC_MESSAGES/djangojs.mo,sha256=yFwS8aTJUAG5lN4tYLCxx-FLfTsiOxXrCEhlIA-9vcs,4230 -django/contrib/admin/locale/zh_Hant/LC_MESSAGES/djangojs.po,sha256=C4Yk5yuYcmaovVs_CS8YFYY2iS4RGi0oNaUpTm7akeU,4724 -django/contrib/admin/migrations/0001_initial.py,sha256=0p5TjterT80FOrCxhO7YqZPag-xnyRin_mQ01Qj579o,1893 -django/contrib/admin/migrations/0002_logentry_remove_auto_add.py,sha256=_7XFWubtQ7NG0eQ02MqtxXQmjBmYc6Od5rwcAiT1aCs,554 -django/contrib/admin/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/admin/static/admin/css/autocomplete.css,sha256=MGqRzeZ1idtUnRM7MnEHw7ClmOVe_Uo7SdLoudapNMU,8440 -django/contrib/admin/static/admin/css/base.css,sha256=Pplnc9jKFUDyZvspY9dqhhACUvR33cf4Lp0DkK6zEdA,16106 -django/contrib/admin/static/admin/css/changelists.css,sha256=z-w-H416nJzM01ysLRhynHH-4zyjtkoDlzRPFDARX6U,6170 -django/contrib/admin/static/admin/css/dashboard.css,sha256=M_duSlzrcec1HXMWlLXJQkFw4m6v2dgB3PRaJlWQo14,412 -django/contrib/admin/static/admin/css/fonts.css,sha256=SnBl3KjeUZqRmZw3F0iNm1YpqFhjrNC_fNN0H2TkuYc,423 -django/contrib/admin/static/admin/css/forms.css,sha256=NtSdGKiwEksxVFU-0XeP8Ijv69Zp9sMGYrZqYTh9_s8,8173 -django/contrib/admin/static/admin/css/login.css,sha256=lHpzTw50VkxttDANxGiCnANx46B8HaROciU_sRHbTRs,1203 -django/contrib/admin/static/admin/css/responsive.css,sha256=UAMABM7h5rRZ8FocJw4bfx36Q5XtIDm4ddXN8lMC4SQ,17894 -django/contrib/admin/static/admin/css/responsive_rtl.css,sha256=kdXYUgMd5uXiLthyjc1pv4VXCu9Wy8Mxk1q_f8eQNz0,1859 -django/contrib/admin/static/admin/css/rtl.css,sha256=4FQYhqc4pttIAS0ealmRFrEIwirPs7v9YK3f7DxqTEQ,3731 -django/contrib/admin/static/admin/css/widgets.css,sha256=FbxIKiGYkWjZwRMm5A_Qv-kKrhsPnfzhsF1j28eSqnA,10340 -django/contrib/admin/static/admin/css/vendor/select2/LICENSE-SELECT2.md,sha256=Py5KwtTr_nv_wJAqcAa1YqXiIY_0XyS08UQXZhXiqNo,1124 -django/contrib/admin/static/admin/css/vendor/select2/select2.css,sha256=xqxV4FDj5tslOz6MV13pdnXgf63lJwViadn__ciKmIs,17604 -django/contrib/admin/static/admin/css/vendor/select2/select2.min.css,sha256=xJOZHfpxLR_uhh1BwYFS5fhmOAdIRQaiOul5F_b7v3s,15196 -django/contrib/admin/static/admin/fonts/LICENSE.txt,sha256=Pd-b5cKP4n2tFDpdx27qJSIq0d1ok0oEcGTlbtL6QMU,11560 -django/contrib/admin/static/admin/fonts/README.txt,sha256=8aTEGqGae4MewJx-muqQ1E4xgkwarj9lGmbjKp2vOpo,137 -django/contrib/admin/static/admin/fonts/Roboto-Bold-webfont.woff,sha256=NPwBegIIh-Ky0wNS1D5R7FNrAOZV6koNgbKynKYRfUM,82564 -django/contrib/admin/static/admin/fonts/Roboto-Light-webfont.woff,sha256=ZPkI7tYTAgKLZN-hXqCYnBxc5aa-Se3BMBILeYVu6uQ,81348 -django/contrib/admin/static/admin/fonts/Roboto-Regular-webfont.woff,sha256=cX0lRkeH5ff6E_fLaT8SATtvSBNuv7JcQ-5u_Fye3-Q,80304 -django/contrib/admin/static/admin/img/LICENSE,sha256=0RT6_zSIwWwxmzI13EH5AjnT1j2YU3MwM9j3U19cAAQ,1081 -django/contrib/admin/static/admin/img/README.txt,sha256=M5PZqSUBMTJ36I0D8RMKomdAXz3aQhEvoTHXoHfiNM0,318 -django/contrib/admin/static/admin/img/calendar-icons.svg,sha256=gbMu26nfxZphlqKFcVOXpcv5zhv5x_Qm_P4ba0Ze84I,1094 -django/contrib/admin/static/admin/img/icon-addlink.svg,sha256=kBtPJJ3qeQPWeNftvprZiR51NYaZ2n_ZwJatY9-Zx1Q,331 -django/contrib/admin/static/admin/img/icon-alert.svg,sha256=aXtd9PA66tccls-TJfyECQrmdWrj8ROWKC0tJKa7twA,504 -django/contrib/admin/static/admin/img/icon-calendar.svg,sha256=_bcF7a_R94UpOfLf-R0plVobNUeeTto9UMiUIHBcSHY,1086 -django/contrib/admin/static/admin/img/icon-changelink.svg,sha256=clM2ew94bwVa2xQ6bvfKx8xLtk0i-u5AybNlyP8k-UM,380 -django/contrib/admin/static/admin/img/icon-clock.svg,sha256=k55Yv6R6-TyS8hlL3Kye0IMNihgORFjoJjHY21vtpEA,677 -django/contrib/admin/static/admin/img/icon-deletelink.svg,sha256=06XOHo5y59UfNBtO8jMBHQqmXt8UmohlSMloUuZ6d0A,392 -django/contrib/admin/static/admin/img/icon-no.svg,sha256=QqBaTrrp3KhYJxLYB5E-0cn_s4A_Y8PImYdWjfQSM-c,560 -django/contrib/admin/static/admin/img/icon-unknown-alt.svg,sha256=LyL9oJtR0U49kGHYKMxmmm1vAw3qsfXR7uzZH76sZ_g,655 -django/contrib/admin/static/admin/img/icon-unknown.svg,sha256=ePcXlyi7cob_IcJOpZ66uiymyFgMPHl8p9iEn_eE3fc,655 -django/contrib/admin/static/admin/img/icon-yes.svg,sha256=_H4JqLywJ-NxoPLqSqk9aGJcxEdZwtSFua1TuI9kIcM,436 -django/contrib/admin/static/admin/img/inline-delete.svg,sha256=Ni1z8eDYBOveVDqtoaGyEMWG5Mdnt9dniiuBWTlnr5Y,560 -django/contrib/admin/static/admin/img/search.svg,sha256=HgvLPNT7FfgYvmbt1Al1yhXgmzYHzMg8BuDLnU9qpMU,458 -django/contrib/admin/static/admin/img/selector-icons.svg,sha256=0RJyrulJ_UR9aYP7Wbvs5jYayBVhLoXR26zawNMZ0JQ,3291 -django/contrib/admin/static/admin/img/sorting-icons.svg,sha256=cCvcp4i3MAr-mo8LE_h8ZRu3LD7Ma9BtpK-p24O3lVA,1097 -django/contrib/admin/static/admin/img/tooltag-add.svg,sha256=fTZCouGMJC6Qq2xlqw_h9fFodVtLmDMrpmZacGVJYZQ,331 -django/contrib/admin/static/admin/img/tooltag-arrowright.svg,sha256=GIAqy_4Oor9cDMNC2fSaEGh-3gqScvqREaULnix3wHc,280 -django/contrib/admin/static/admin/img/gis/move_vertex_off.svg,sha256=ou-ppUNyy5QZCKFYlcrzGBwEEiTDX5mmJvM8rpwC5DM,1129 -django/contrib/admin/static/admin/img/gis/move_vertex_on.svg,sha256=DgmcezWDms_3VhgqgYUGn-RGFHyScBP0MeX8PwHy_nE,1129 -django/contrib/admin/static/admin/js/SelectBox.js,sha256=xB_jbdmwUFitjqFcGankTIkhcTGaluR9rmBoVy0w4fg,5755 -django/contrib/admin/static/admin/js/SelectFilter2.js,sha256=haJFnUq97-Uat1iVigFh9y0ssqTcIjKjba8NbHkv5fA,12680 -django/contrib/admin/static/admin/js/actions.js,sha256=PveOc3V1J5uCsTIgKlujfaZjXgXh_grkxGNgZUuPV_4,6502 -django/contrib/admin/static/admin/js/actions.min.js,sha256=5yXpKSwzdlPdUsxCu_yrYTa68mJuNyD5Pzs6kbaSeiI,3161 -django/contrib/admin/static/admin/js/autocomplete.js,sha256=LgImTP2VTEaJKqxBqvJKRa-mfenZBjeVg7LnHetaxQU,1124 -django/contrib/admin/static/admin/js/calendar.js,sha256=8ej_F8SBtoFhNmmoLwONpyVwOJHd5JBWUMe1mwgxpwE,7777 -django/contrib/admin/static/admin/js/cancel.js,sha256=A9TJZ9Ih6xWf-3ETNJXwXYgzCRu6BlMQhncwS6KWiSk,204 -django/contrib/admin/static/admin/js/change_form.js,sha256=J-beGDyqR6uyb3iW_OI9Yo0ZFrfwJVqNFFDeL7-njqA,712 -django/contrib/admin/static/admin/js/collapse.js,sha256=089NhKcy5cbhzScg6vWEfoXxItzFpxVsYYJ2C7KMQUE,1151 -django/contrib/admin/static/admin/js/collapse.min.js,sha256=2ouFB9PV4qb6btAYqFc-mMUc651Jq4ZPVXJ7AaF_ZTY,1634 -django/contrib/admin/static/admin/js/core.js,sha256=9XcoubW_oyev18M3x8f82mYQ7S2IyL75jZmu4XaIdBo,7134 -django/contrib/admin/static/admin/js/inlines.js,sha256=l9QepZOAUgZ9rEJ-OcR_3Lh3JQtsza9H8y3k0CLBvqE,13673 -django/contrib/admin/static/admin/js/inlines.min.js,sha256=rQt0u9jd1SyYaNhQWb34UHBxRMctRmtIT1O7WMJK3Rc,5824 -django/contrib/admin/static/admin/js/jquery.init.js,sha256=Gr-yEd61wY6uBDMhOaVq-amfciz7EZhMvJfai_WxrHE,363 -django/contrib/admin/static/admin/js/popup_response.js,sha256=7XyHe9SDYkB8OMxF7fhL6N5l4Oxf-gXqzGlpPK63tcc,569 -django/contrib/admin/static/admin/js/prepopulate.js,sha256=PCNwmurilcnTH8ve8QXdAM0rHHWvLIaCU6HEnyRKJyg,1538 -django/contrib/admin/static/admin/js/prepopulate.min.js,sha256=pVBz-2RAxr0d6ebCNjkfOEiUXtd9f6Ppwtl7HOHw2Pk,372 -django/contrib/admin/static/admin/js/prepopulate_init.js,sha256=uD3_ZoYfJ62mcSgqzHfePA3Y5jaOBjxn7SU0LuYFgEE,495 -django/contrib/admin/static/admin/js/timeparse.js,sha256=oVk0xpGmRjS0V2sMsjGulzMSNDvIr1gQ6_fpivvh_kQ,2984 -django/contrib/admin/static/admin/js/urlify.js,sha256=58xpviBrxcL0ojOn0tAyAUfcqMCcA74qQZtpJ7_gN9c,8729 -django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js,sha256=R2WRhH2444LARslaEB01MB8MyLh_XnRvuUJiVvnAYV0,20283 -django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js,sha256=GEruiyMhTd6Q5pX-C5z3z0Xv4BMcpGFKuonaAYuSW0A,6897 -django/contrib/admin/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt,sha256=GIg3JQapSjFSu38FkC7Wm4cW4HUcvoWPb0YdP5LxKfU,1282 -django/contrib/admin/static/admin/js/vendor/jquery/jquery.js,sha256=laXWtGydpwqJ8JA-X9x2miwmaiKhn8tVmOVEigRNtP4,258648 -django/contrib/admin/static/admin/js/vendor/jquery/jquery.min.js,sha256=a23g1Nt4dtEYOj7bR-vTu7-T8VP13humZFBJNIYoEJo,85659 -django/contrib/admin/static/admin/js/vendor/select2/LICENSE-SELECT2.md,sha256=Py5KwtTr_nv_wJAqcAa1YqXiIY_0XyS08UQXZhXiqNo,1124 -django/contrib/admin/static/admin/js/vendor/select2/select2.full.js,sha256=nwWu44AW64pJgDdb4wY7wcWkfUPTfBgwjHkIsnBFUE4,161832 -django/contrib/admin/static/admin/js/vendor/select2/select2.full.min.js,sha256=FJuLxhiJiX-5Qgs0c2JYLIyJ5i0o4ccg6DQ6zgitCYY,75005 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ar.js,sha256=fgVH5qCYQqvtWwa8MGiOx4VSKCg5d_BkMbaknNoncWw,887 -django/contrib/admin/static/admin/js/vendor/select2/i18n/az.js,sha256=WWCwFlKHxZLGDAAacF2YQr1PG6tyPXg7We5DluFuhy4,701 -django/contrib/admin/static/admin/js/vendor/select2/i18n/bg.js,sha256=Lk9-DE7eC6VpLXhcuqR8ggkcZ_AgwJEG3dLADTyMbZs,906 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ca.js,sha256=f1f8z2aYYgqr6cv7AUE_opdjU_XIUDAMvzsSvODkZpA,876 -django/contrib/admin/static/admin/js/vendor/select2/i18n/cs.js,sha256=6WZZ97shyY3gGqfAXak1RDwtD2lVkMPA0jEwwqR30d0,1236 -django/contrib/admin/static/admin/js/vendor/select2/i18n/da.js,sha256=Q-ozOz1DL2NBOPIypU8vjoCxaCiZqJ2rY7_JBQcjrBk,818 -django/contrib/admin/static/admin/js/vendor/select2/i18n/de.js,sha256=mtjCIpmIYVw5CLf7IpjBWp6VtFzdKh_YtZFtpIeIStc,775 -django/contrib/admin/static/admin/js/vendor/select2/i18n/el.js,sha256=HbjnKG1fGks6EHWR6103C5kk8rMLE5_rsPGx9d1jxKY,1132 -django/contrib/admin/static/admin/js/vendor/select2/i18n/en.js,sha256=B-OOZousHwJa-Uuf48D4XzfPJSKCQ3vH_LidT-9KT0c,827 -django/contrib/admin/static/admin/js/vendor/select2/i18n/es.js,sha256=yqV8yK-bz_cS9XBVDUQmbKSykDsXHcqgxlKbPyxDIdw,871 -django/contrib/admin/static/admin/js/vendor/select2/i18n/et.js,sha256=mewAy-15ytAbjTqxZrEZj3p9KebGjBMphc2mIlpgeAE,775 -django/contrib/admin/static/admin/js/vendor/select2/i18n/eu.js,sha256=pmySl5IBT6bSgcOVug5n-518CxqpGf63RUYnwfdq-m8,844 -django/contrib/admin/static/admin/js/vendor/select2/i18n/fa.js,sha256=47-FmirjxeJnuR_90g3OU4DyBYdDXSL0_8qjZ2rnI7U,1004 -django/contrib/admin/static/admin/js/vendor/select2/i18n/fi.js,sha256=CqyMDXQHszgqi0HzoPM0-DtJQGVKAHFCxQq8JDO7zxY,703 -django/contrib/admin/static/admin/js/vendor/select2/i18n/fr.js,sha256=pjC1r5EyH3ebWwWk_DF2mH0Y58yQvOEG6slmjh__SoQ,902 -django/contrib/admin/static/admin/js/vendor/select2/i18n/gl.js,sha256=WObjYM2vK4OgLqH8fS5H_25e_GjqvAOwshQEwJiUT_k,800 -django/contrib/admin/static/admin/js/vendor/select2/i18n/he.js,sha256=RHcoZ7GaEGyF6TaLim-eW4FoQHJJZkPX1XCLpxuakDg,951 -django/contrib/admin/static/admin/js/vendor/select2/i18n/hi.js,sha256=hTkDBVj8ZSlpkXv7JXNWBN3NWxc8lZPBio3ERyy5NQw,1125 -django/contrib/admin/static/admin/js/vendor/select2/i18n/hr.js,sha256=83bnotTzaNwZmyOhQYT6UlRKflq2tqTWn7Wd9SNbY18,839 -django/contrib/admin/static/admin/js/vendor/select2/i18n/hu.js,sha256=OiDzwQj-cuXGt3NNDQw1wN2jaOjob4uDPUk2mU8D5Bs,727 -django/contrib/admin/static/admin/js/vendor/select2/i18n/id.js,sha256=4ccurwgeaJOSzk97ZFplJ2j4UePW47_mZ14fd1l9k5Y,752 -django/contrib/admin/static/admin/js/vendor/select2/i18n/is.js,sha256=6XBFQypKZoXi46_cW5oCQVFnbOvV0tmbsylkIuf2jNI,773 -django/contrib/admin/static/admin/js/vendor/select2/i18n/it.js,sha256=0u_2rM4AQ5f31vCb-GyMsqRm5UiioLlYZQML0GJZft0,876 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ja.js,sha256=iVNfAjWOdeLGYsPy54JSqQ70Q7LGO7T9BshHeos1YoQ,848 -django/contrib/admin/static/admin/js/vendor/select2/i18n/km.js,sha256=CEd7gx5c131ZQEim-sdwFnM-8R_W4ILk3s3B59pqMcI,1065 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ko.js,sha256=PZqna7eaSjadvZWOF-EwX0oQ9MD1jHRpRqsv3ieZXHc,854 -django/contrib/admin/static/admin/js/vendor/select2/i18n/lt.js,sha256=4aX2ESzIxXXM_45PjloFzbdOkEBvG8l0Lzbn9a07S-Y,913 -django/contrib/admin/static/admin/js/vendor/select2/i18n/lv.js,sha256=m_9yurF2g_oLJPoFsrFyyUOooOjSde5x9jLllVgYa68,872 -django/contrib/admin/static/admin/js/vendor/select2/i18n/mk.js,sha256=AzBhv0x9TUGCUeNsuSSN3UnT1wSBZhtgp9B7LoXccHs,979 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ms.js,sha256=--btj7UZrXBbhKESfI-z_6YxYJXAlkTxPIEXateVQ54,791 -django/contrib/admin/static/admin/js/vendor/select2/i18n/nb.js,sha256=gQM3p_YY-hjZ9own3O0rZJYHqK4CYxFBJTrkTvICyK8,785 -django/contrib/admin/static/admin/js/vendor/select2/i18n/nl.js,sha256=4N5ht1J1MjVCGRqU8Dzo81MZhKeQxAo-fvMDqaiQosg,896 -django/contrib/admin/static/admin/js/vendor/select2/i18n/pl.js,sha256=ir3_tPNqhQ6ri-J3YyOlsZJrbdBvUC3ibpYsEfdMtgg,925 -django/contrib/admin/static/admin/js/vendor/select2/i18n/pt-BR.js,sha256=nfaZQpzSrOFJ0VRsxEmlH6azVlcRQpilM7-uHZbD3r0,853 -django/contrib/admin/static/admin/js/vendor/select2/i18n/pt.js,sha256=0Hmb5IG2hPFnhMzYFjMOza5OIqJEiD7WlqHy6YDNzQA,859 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ro.js,sha256=oLsIzIZQGT7HZqhJ8DXqoiP1JE4OnSQPRBAMWXhvdSM,909 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ru.js,sha256=YOIol4UzD2BGvz28zaarwdUDawpKTmEpIcvkwakmAHQ,1127 -django/contrib/admin/static/admin/js/vendor/select2/i18n/sk.js,sha256=T5nCVJX52HimSLw8yrMKTSdvLbSysaopsKtoknIoNhg,1184 -django/contrib/admin/static/admin/js/vendor/select2/i18n/sr-Cyrl.js,sha256=s5f_D0U7r2thU6UPBAJJ8rzKFUQmRgzE5Y3K07amhbk,1067 -django/contrib/admin/static/admin/js/vendor/select2/i18n/sr.js,sha256=zRM5Y0fpg0u0V7rkR4-ZgHELW2gj4YDEDa0sx_zye2o,938 -django/contrib/admin/static/admin/js/vendor/select2/i18n/sv.js,sha256=UEGr4C1Cs20s2iaMBzmWDew9hlVg8h9ZQZvVpwGnwXI,786 -django/contrib/admin/static/admin/js/vendor/select2/i18n/th.js,sha256=TbMY7IxUby7KiZKng-SEHvCavoks7d8hN77192lLfMY,951 -django/contrib/admin/static/admin/js/vendor/select2/i18n/tr.js,sha256=yqv5e--8eGpw9uZDk0GAfR0nxYnYdj5qegnFHxSAjM4,720 -django/contrib/admin/static/admin/js/vendor/select2/i18n/uk.js,sha256=LsPBQ5q5xisqXxgdV4Yf8CU8FO7mhnYRUxm7tJXNl4E,1117 -django/contrib/admin/static/admin/js/vendor/select2/i18n/vi.js,sha256=ZWpJDPBtRbDJ3YyQ4Z02Le6BRnN0gRxSAoFzYqFE7Nw,801 -django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-CN.js,sha256=J4dFzbG57aghBD5x1PmkURHSi5y6AytiJgcl9iq-3z0,769 -django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-TW.js,sha256=zqyrNXby3B33G7De41AQ-OFpy-Cgi3vTXZm_-IGnsXY,708 -django/contrib/admin/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt,sha256=tyAi9RwLIDwjSrjyBhtyJIkgOHWM469_UzZTr1MmRys,1103 -django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js,sha256=TjYx21bQgQXDFTdvSqSUh7S8TkYRjT4L4X-SlWNR8CE,128820 -django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.min.js,sha256=E-Plu9EZfyt0PJCSYrCkHuPquVVj9V7g7jQklIOgGDU,62474 -django/contrib/admin/templates/admin/404.html,sha256=o528Ro8Q0JMgd7mtszp8nl1ADHNA12AyclVdmGQnYGc,268 -django/contrib/admin/templates/admin/500.html,sha256=AUIdN7Ka_1KRAGzvo1GvwAHCSJNIbo8oNSF07cMKcj4,527 -django/contrib/admin/templates/admin/actions.html,sha256=FQYsvoJrq949UZHjL1j65Ne_gnSHmMMbgSfUhE-1ciM,1012 -django/contrib/admin/templates/admin/app_index.html,sha256=BSJsWtgum_H2hCxcb2xe-XJozbVOVpUBN_KTe8pcRts,385 -django/contrib/admin/templates/admin/base.html,sha256=oK_cRQ70cxqj0vFdKS0EulJeGPrnJ_ODnjcKZfy6uLA,3668 -django/contrib/admin/templates/admin/base_site.html,sha256=1v0vGrcN4FNEIF_VBiQE6yf2HPdkKhag2_v0AUsaGmM,316 -django/contrib/admin/templates/admin/change_form.html,sha256=Ta-hNbm9cOOU4ht4OpFaYW5r19mtgWn4jJC79gRB5vY,3356 -django/contrib/admin/templates/admin/change_list.html,sha256=zoB-LaxqWYhG4ftnYmjm7K1EqBr4nXlU-dG4nOnueBc,3253 -django/contrib/admin/templates/admin/change_list_results.html,sha256=jZ9lN7EYWsG9Gt7_4eA-HjXHic46v-Dl-e61ruSFWVE,1553 -django/contrib/admin/templates/admin/date_hierarchy.html,sha256=uW1_ZMd-7biE28Ix2pQiY1lTvRX1VjyZhUkp-IHA0NI,372 -django/contrib/admin/templates/admin/delete_confirmation.html,sha256=-TrukS8C9205zRv63WI7s9WOa0-O42_jsClKCE_SgSA,2405 -django/contrib/admin/templates/admin/delete_selected_confirmation.html,sha256=856nsJUtL_3yArQAFdJFKI2WCiV8Z3VoLd8F8TUCy7s,2320 -django/contrib/admin/templates/admin/filter.html,sha256=A59SgwTTgEf2iYjV0IiDIixSZ7yCu1Fs66n0Vguu-NI,330 -django/contrib/admin/templates/admin/index.html,sha256=lwKJMWsD4tdmZRUeutXWAqUWch-DmFZAJh3dwEnH-Ek,2983 -django/contrib/admin/templates/admin/invalid_setup.html,sha256=58ugkYPi6FHmS--y77fhLAdUr4PyrtGwTg6-hm0_Xxg,437 -django/contrib/admin/templates/admin/login.html,sha256=l5s6CMlDeZ7_9nea9JAarSO8ECJ7JgKyrpdfpYxXjKc,1876 -django/contrib/admin/templates/admin/object_history.html,sha256=tjE0pTYaSM43e8QxjNabL2FmrB5wPKm8V3jpuziwPdI,1444 -django/contrib/admin/templates/admin/pagination.html,sha256=h5ZgDSNezRlvz22KhtaRY-3GCnEe8AjRcjCfEktVgWA,554 -django/contrib/admin/templates/admin/popup_response.html,sha256=DDlE_fEKHsGvPcSRy4zFAw_czr3hcCj6YcKRXBNfQEM,358 -django/contrib/admin/templates/admin/prepopulated_fields_js.html,sha256=Q3QxBgVvxePpiz502FjSHOS3szSlHkvUQoPe8sF1YDs,245 -django/contrib/admin/templates/admin/related_widget_wrapper.html,sha256=0xA6-N9cO3ED4W397pwjvjbj5ZS5yhZjeqe89Ri6VHs,1397 -django/contrib/admin/templates/admin/search_form.html,sha256=umCPvMnvXX_BlHs_296pKniVn7Ycg-nKk3nKwrwNAQc,1027 -django/contrib/admin/templates/admin/submit_line.html,sha256=CvdFFZBKfGcspS2MgJbmmDCwcHv9hG9NPBxJ_MzY530,790 -django/contrib/admin/templates/admin/auth/user/add_form.html,sha256=pMsoxDLGJDzjIkcMmKdTYEnUzZ1ESEhBeDLCW17XN5k,310 -django/contrib/admin/templates/admin/auth/user/change_password.html,sha256=a3gZLx4MfgZJrj_fllruwyfy293mmMmVqjcvmsA5dIc,2347 -django/contrib/admin/templates/admin/edit_inline/stacked.html,sha256=fn7GWmIBXEj3ShZ7zzfsQvNzYk5v_tZtzy1C7rWVqAI,2092 -django/contrib/admin/templates/admin/edit_inline/tabular.html,sha256=AZ8eO6PNTKrrRZaaGrhWNbcublSExIKyvz3eJoeOy7c,3897 -django/contrib/admin/templates/admin/includes/fieldset.html,sha256=-_S9dzsEGnmo10xioe7v833gY3tGHBIphzOJ_8rM1fM,1788 -django/contrib/admin/templates/admin/includes/object_delete_summary.html,sha256=i_I2BADSutoccAxARIwbP4VRlDHsag-llDOi3kjcoXw,188 -django/contrib/admin/templates/admin/widgets/clearable_file_input.html,sha256=xmlmv2ioEI6ozk5KbzBjC75SNKuYlO07EzjANQ8tH4w,574 -django/contrib/admin/templates/admin/widgets/foreign_key_raw_id.html,sha256=0-PzMOEe3KSRVOBeivruUc8nJRcziIqWO-DyU8pvgEE,346 -django/contrib/admin/templates/admin/widgets/many_to_many_raw_id.html,sha256=w18JMKnPKrw6QyqIXBcdPs3YJlTRtHK5HGxj0lVkMlY,54 -django/contrib/admin/templates/admin/widgets/radio.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html,sha256=QBovkKbXrGTBy7DzbWQ3Q16WihHW8txvWgV6vdumbnw,1406 -django/contrib/admin/templates/admin/widgets/split_datetime.html,sha256=ORI1EM3mf4g49PgEE6GWTpVnXdRpKP-0dPtLCbDEHQ0,240 -django/contrib/admin/templates/admin/widgets/url.html,sha256=HDc93YIZhUNe-2gXKLt4SFwrap_wE68aaJXY5JcXCVs,226 -django/contrib/admin/templates/registration/logged_out.html,sha256=9NdzlTMq7QQpj2ftUqZ7FPeHDv0KYbjETF8qMJVGGqI,374 -django/contrib/admin/templates/registration/password_change_done.html,sha256=ldLa6UAVgn_FiKQ9TkO2EZraTBZx1URJrRGOn-_VZJs,671 -django/contrib/admin/templates/registration/password_change_form.html,sha256=W8eYpuusNCZ6EZRkT--QWyXR5rHDienElsw-cMDjB1w,2050 -django/contrib/admin/templates/registration/password_reset_complete.html,sha256=RD0DbFybLTVfHtkU4yN7HG3YXY-xs_BLVgl3vSB7czU,505 -django/contrib/admin/templates/registration/password_reset_confirm.html,sha256=oEDhtdzhrmIc9BhaAgaxvw0qBcpI4I_BQLt5GE8teXI,1373 -django/contrib/admin/templates/registration/password_reset_done.html,sha256=ofGCzPs--2mOPLlGcTbZJAoZQkEpfwFb5reLxaKq12g,669 -django/contrib/admin/templates/registration/password_reset_email.html,sha256=d_NtuuiWTS9AZu6qObmp-lux0UkUCdA9ZUIUKyYJeHE,582 -django/contrib/admin/templates/registration/password_reset_form.html,sha256=b-wxQ_mk7FtqeJ6KQcXbEeXlMWCaiNGafj-7dPeHfDg,970 -django/contrib/admin/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/admin/templatetags/admin_list.py,sha256=6yW09uGViJQ-yLdvoql3q7JnXKdDD408M4l7jeucTjk,16860 -django/contrib/admin/templatetags/admin_modify.py,sha256=uQy-5HqVSeZWnfH98AjGmjIR6oR1rm9Yt71xQYieMhk,3004 -django/contrib/admin/templatetags/admin_static.py,sha256=yDOpxEP2OK0N0e4-wbVd2vepUUmgGPJ7-SYxAE0rJ_4,304 -django/contrib/admin/templatetags/admin_urls.py,sha256=19YZ6jO3NIhyyfHvmBU2UWCJpkxCILIWbXRB7SWPZiQ,1773 -django/contrib/admin/templatetags/log.py,sha256=mxV6mvfVJo0qRCelkjRBNWfrurLABhZvGQlcp5Bn4IU,2079 -django/contrib/admin/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/admin/views/autocomplete.py,sha256=7uZSnvQ1GPdYx6zDEJjCoqIqng8piIzrSmlIPjOJADM,1964 -django/contrib/admin/views/decorators.py,sha256=J4wYcyaFr_-xY1ANl6QF4cFhOupRvjjmBotN0FshVYg,658 -django/contrib/admin/views/main.py,sha256=9NsN36bB79iNYywLeN5FueTjts1FLgeEETMcKuFl2Fk,16874 -django/contrib/admindocs/__init__.py,sha256=oY-eBzAOwpf5g222-vlH5BWHpDzpkj_DW7_XGDj7zgI,69 -django/contrib/admindocs/apps.py,sha256=rV3aWVevgI6o8_9WY0yQ62O5CSMRRZrVwZFt1gpfKk0,216 -django/contrib/admindocs/middleware.py,sha256=j9Anxm6K7DVThuWTeTHgfadMstpRdR4zizJHw9j_lYs,1296 -django/contrib/admindocs/urls.py,sha256=zdHaV60yJMjuLqO9xU0H-j7hz1PmSsepEWZA2GH-eI0,1310 -django/contrib/admindocs/utils.py,sha256=kfCASCLPgCYySKSH2GumnAHWgnHau9n93D_5PhgKEJ4,7961 -django/contrib/admindocs/views.py,sha256=4iuHM403VE_ucFh_VD7u5KHmSL-B6CmbVhoho3nVYZI,16994 -django/contrib/admindocs/locale/af/LC_MESSAGES/django.mo,sha256=GFydi1uBAAkOzJP0FXBCbQFNzX9jK7xqXNsiK7JsOwM,705 -django/contrib/admindocs/locale/af/LC_MESSAGES/django.po,sha256=7nIsCfz1HabA8oPvLBqaofdN8nlFYRi3roXxDpUe_Hs,4680 -django/contrib/admindocs/locale/ar/LC_MESSAGES/django.mo,sha256=IoUExlNwqSYql6zMAuXcFt0cmkjMc_i0fb0qp7cBQlA,7286 -django/contrib/admindocs/locale/ar/LC_MESSAGES/django.po,sha256=KT8AOJeiYBk4dyJCyLnHAQJcOP3Fjw6XHOjmHsJ9pEY,7924 -django/contrib/admindocs/locale/ast/LC_MESSAGES/django.mo,sha256=d4u-2zZXnnueWm9CLSnt4TRWgZk2NMlrA6gaytJ2gdU,715 -django/contrib/admindocs/locale/ast/LC_MESSAGES/django.po,sha256=TUkc-Hm4h1kD0NKyndteW97jH6bWcJMFXUuw2Bd62qo,4578 -django/contrib/admindocs/locale/az/LC_MESSAGES/django.mo,sha256=yWjmqVrGit7XjELYepZ9R48eOKma5Wau2RkkSSiJrgc,1687 -django/contrib/admindocs/locale/az/LC_MESSAGES/django.po,sha256=wGdq-g4u8ssHHvODJB-knjZdrP6noxRW9APn_kmOz7w,4993 -django/contrib/admindocs/locale/be/LC_MESSAGES/django.mo,sha256=KY94OxY-NFsFbfZG9cFw77xw68YLDWyuYs04rxwpyU8,8185 -django/contrib/admindocs/locale/be/LC_MESSAGES/django.po,sha256=ijhluxI7Wn9PcZUDG3O8VpRsRVU6AYwZEdkUBfgXAS0,8707 -django/contrib/admindocs/locale/bg/LC_MESSAGES/django.mo,sha256=n9GdBZljKJBmfups8Zt82lpHgEWvonacXztOS6qbAjM,7837 -django/contrib/admindocs/locale/bg/LC_MESSAGES/django.po,sha256=SrmOtJ6nOi3lrgEwr-s76jYzN7lZs05dbEwh9OFxFHU,8692 -django/contrib/admindocs/locale/bn/LC_MESSAGES/django.mo,sha256=NOKVcE8id9G1OctSly4C5lm64CgEF8dohX-Pdyt4kCM,3794 -django/contrib/admindocs/locale/bn/LC_MESSAGES/django.po,sha256=6M7LjIEjvDTjyraxz70On_TIsgqJPLW7omQ0Fz_zyfQ,6266 -django/contrib/admindocs/locale/br/LC_MESSAGES/django.mo,sha256=dxEi_MIOMsiHtDRZwhHnvst54jP1Y18NPEy4v7B-6uI,706 -django/contrib/admindocs/locale/br/LC_MESSAGES/django.po,sha256=GAovZYbTZJ6wcLz7Wc0u8FhXvFD68nV7Cs7JOCs6McA,4572 -django/contrib/admindocs/locale/bs/LC_MESSAGES/django.mo,sha256=clvhu0z3IF5Nt0tZ85hOt4M37pnGEWeIYumE20vLpsI,1730 -django/contrib/admindocs/locale/bs/LC_MESSAGES/django.po,sha256=1-OrVWFqLpeXQFfh7JNjJtvWjVww7iB2s96dcSgLy90,5042 -django/contrib/admindocs/locale/ca/LC_MESSAGES/django.mo,sha256=RZp6R180mKEuO_zKKaMfhP8qDQge9obnuF4qKxvn7Mk,6681 -django/contrib/admindocs/locale/ca/LC_MESSAGES/django.po,sha256=xZfd_o522aYaeqISmPK9vpSuDAWS4XJ1ODULTzaDFg8,7337 -django/contrib/admindocs/locale/cs/LC_MESSAGES/django.mo,sha256=VNltiwoPS5USDnvrYfs_GfzUEO3FYtqKH_jkle5vAoY,6588 -django/contrib/admindocs/locale/cs/LC_MESSAGES/django.po,sha256=1hoetCtTnTTHxG8SijCTqltOJbguOMnfho-ZvXCaI2A,7150 -django/contrib/admindocs/locale/cy/LC_MESSAGES/django.mo,sha256=sYeCCq0CMrFWjT6rKtmFrpC09OEFpYLSI3vu9WtpVTY,5401 -django/contrib/admindocs/locale/cy/LC_MESSAGES/django.po,sha256=GhdikiXtx8Aea459uifQtBjHuTlyUeiKu0_rR_mDKyg,6512 -django/contrib/admindocs/locale/da/LC_MESSAGES/django.mo,sha256=SWw8DiXbYPQCc8nwUPOt68FRUgrd_Eb7Dw9SqKXWrhY,6458 -django/contrib/admindocs/locale/da/LC_MESSAGES/django.po,sha256=_j2DkNr1pVGMcVLA4F1lzurLyS8ElKR4w8qWyhSlUOw,7062 -django/contrib/admindocs/locale/de/LC_MESSAGES/django.mo,sha256=6KJ9OfmvE6yzBF-n6sboLq4vv_o0uhLeevUEAZj-uEo,6585 -django/contrib/admindocs/locale/de/LC_MESSAGES/django.po,sha256=y2kXww5nrZpLJZtWm45d1hUCCq2HeplU9hAtDiOj9qo,7097 -django/contrib/admindocs/locale/dsb/LC_MESSAGES/django.mo,sha256=jJNiddLBOMe9oeadm1h4iDRUqaTmfbJ28fS3h141VCk,6836 -django/contrib/admindocs/locale/dsb/LC_MESSAGES/django.po,sha256=MQQidlh2Ljp0ChO92tVJ_gkbTC0kpEbNAMOC2F903qM,7314 -django/contrib/admindocs/locale/el/LC_MESSAGES/django.mo,sha256=dJy15irtJqzPFc_yHS3LTeXYmPu0-bIlyrDPfbE5pSE,8598 -django/contrib/admindocs/locale/el/LC_MESSAGES/django.po,sha256=82wcERwp7_v3l66v3GKdlT-lVGhwGs8DK0184SbV3zk,9259 -django/contrib/admindocs/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/admindocs/locale/en/LC_MESSAGES/django.po,sha256=nR84XXUZlLxu-CriBHo6ljWVqGmeARQvZVvyIIF6JHY,10680 -django/contrib/admindocs/locale/en_AU/LC_MESSAGES/django.mo,sha256=BQ54LF9Tx88m-pG_QVz_nm_vqvoy6pVJzL8urSO4l1Q,486 -django/contrib/admindocs/locale/en_AU/LC_MESSAGES/django.po,sha256=ho7s1uKEs9FGooyZBurvSjvFz1gDSX6R4G2ZKpF1c9Q,5070 -django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.mo,sha256=xKGbswq1kuWCbn4zCgUQUb58fEGlICIOr00oSdCgtU4,1821 -django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.po,sha256=No09XHkzYVFBgZqo7bPlJk6QD9heE0oaI3JmnrU_p24,4992 -django/contrib/admindocs/locale/eo/LC_MESSAGES/django.mo,sha256=cwozZwZY0TylDQe7JguENqwGIqVhq0PCHK0htOixhsA,6391 -django/contrib/admindocs/locale/eo/LC_MESSAGES/django.po,sha256=WvbW_97wH7tBCbQqzDi0sr4hbsL74V621Bn7lFrMQ4U,6879 -django/contrib/admindocs/locale/es/LC_MESSAGES/django.mo,sha256=OYjdorHASk8cvZfzh4S1tzsB8ukZZQqEP8CJ8ZZD_-w,6673 -django/contrib/admindocs/locale/es/LC_MESSAGES/django.po,sha256=0d-YNcIC4QxJ4c0J62mqCjz7CbrgZZx1J_E4t7PPk7M,7516 -django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.mo,sha256=1-41H1OzEb3L-4LV9OfnbazGm0VQ5oPRxjOpxnjvjLA,6691 -django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.po,sha256=VBSHCqICgxdcVhVH4OvIvocIlv5BOP2QI6xQBgWp3Lk,7247 -django/contrib/admindocs/locale/es_CO/LC_MESSAGES/django.mo,sha256=KFjQyWtSxH_kTdSJ-kNUDAFt3qVZI_3Tlpg2pdkvJfs,6476 -django/contrib/admindocs/locale/es_CO/LC_MESSAGES/django.po,sha256=dwrTVjYmueLiVPu2yiJ_fkFF8ZeRntABoVND5H2WIRI,7038 -django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.mo,sha256=3hZiFFVO8J9cC624LUt4lBweqmpgdksRtvt2TLq5Jqs,1853 -django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.po,sha256=gNmx1QTbmyMxP3ftGXGWJH_sVGThiSe_VNKkd7M9jOY,5043 -django/contrib/admindocs/locale/es_VE/LC_MESSAGES/django.mo,sha256=sMwJ7t5GqPF496w-PvBYUneZ9uSwmi5jP-sWulhc6BM,6663 -django/contrib/admindocs/locale/es_VE/LC_MESSAGES/django.po,sha256=ZOcE0f95Q6uD9SelK6bQlKtS2c3JX9QxNYCihPdlM5o,7201 -django/contrib/admindocs/locale/et/LC_MESSAGES/django.mo,sha256=cQwLB8r0hRdWCxp2P8atYGambrKLR18GorVlp_O995M,6402 -django/contrib/admindocs/locale/et/LC_MESSAGES/django.po,sha256=Q3hVcRl3jtexQufNAZWacz3F_VRL1IctRMXYxdXArNE,7009 -django/contrib/admindocs/locale/eu/LC_MESSAGES/django.mo,sha256=WHgK7vGaqjO4MwjBkWz2Y3ABPXCqfnwSGelazRhOiuo,6479 -django/contrib/admindocs/locale/eu/LC_MESSAGES/django.po,sha256=718XgJN7UQcHgE9ku0VyFp7Frs-cvmCTO1o-xS5kpqc,7099 -django/contrib/admindocs/locale/fa/LC_MESSAGES/django.mo,sha256=vpV8y738ijv-UNjfjHMQJXWSCFz5TI_x-MxMur26YEA,7527 -django/contrib/admindocs/locale/fa/LC_MESSAGES/django.po,sha256=Sr9omRw87ylh6cltzJUTxaf3XkkgrMMmTgmTiEYOjaw,8193 -django/contrib/admindocs/locale/fi/LC_MESSAGES/django.mo,sha256=-iPQyWSVn46CF-huqytiomENda1cM0VGAnnVRlwlezQ,6413 -django/contrib/admindocs/locale/fi/LC_MESSAGES/django.po,sha256=AG_WPvp2-c8mQy_Gp4tUACvqN-ACKbr-jxMKb86ilKQ,6945 -django/contrib/admindocs/locale/fr/LC_MESSAGES/django.mo,sha256=9zA2vLYc2wdtnOE2fISo6gd6odAfJARyM3jhwptf2hU,6790 -django/contrib/admindocs/locale/fr/LC_MESSAGES/django.po,sha256=ky8I8laqpSvJSPmqWd5S3kaIVb0QVv1aciUeGxlc3vY,7312 -django/contrib/admindocs/locale/fy/LC_MESSAGES/django.mo,sha256=_xVO-FkPPoTla_R0CzktpRuafD9fuIP_G5N-Q08PxNg,476 -django/contrib/admindocs/locale/fy/LC_MESSAGES/django.po,sha256=b3CRH9bSUl_jjb9s51RlvFXp3bmsmuxTfN_MTmIIVNA,5060 -django/contrib/admindocs/locale/ga/LC_MESSAGES/django.mo,sha256=46M_sp2khE2Bq-p-wPmlzv0cLx7lGnshgsVz8JFIERY,1938 -django/contrib/admindocs/locale/ga/LC_MESSAGES/django.po,sha256=xT1ZwLHeW8MKXziKxQjAC3vNUlM4Na9jZS2YSqGGNoI,5149 -django/contrib/admindocs/locale/gd/LC_MESSAGES/django.mo,sha256=g_HxI2sDlCSI4QMkXmCM1BaBLyA_zm605-lrwWklIWI,6995 -django/contrib/admindocs/locale/gd/LC_MESSAGES/django.po,sha256=8EmFRNWJ1zAdwlK6BMgYe6aw7KwGyDkdUujaYyZJxlI,7477 -django/contrib/admindocs/locale/gl/LC_MESSAGES/django.mo,sha256=CYtHrSyH_Lw0YxmmmndEnMPU-cw5TMr-8NHUjz6v7JM,2265 -django/contrib/admindocs/locale/gl/LC_MESSAGES/django.po,sha256=0S2CJju3EIiEp6kqJIn0Jl1IyRAg2-5ovYMOW0YRtVA,5188 -django/contrib/admindocs/locale/he/LC_MESSAGES/django.mo,sha256=4Ym47IXEM19SY2kPynEXhawHxZ0cehjyOW-wD_eDo48,6912 -django/contrib/admindocs/locale/he/LC_MESSAGES/django.po,sha256=vTP_2GdJOAQLefDgnOnV7lLGoJM7LpHWijrKmDOIXOM,7408 -django/contrib/admindocs/locale/hi/LC_MESSAGES/django.mo,sha256=sZhObIxqrmFu5Y-ZOQC0JGM3ly4IVFr02yqOOOHnDag,2297 -django/contrib/admindocs/locale/hi/LC_MESSAGES/django.po,sha256=X6UfEc6q0BeaxVP_C4priFt8irhh-YGOUUzNQyVnEYY,5506 -django/contrib/admindocs/locale/hr/LC_MESSAGES/django.mo,sha256=fMsayjODNoCdbpBAk9GHtIUaGJGFz4sD9qYrguj-BQA,2550 -django/contrib/admindocs/locale/hr/LC_MESSAGES/django.po,sha256=qi2IB-fBkGovlEz2JAQRUNE54MDdf5gjNJWXM-dIG1s,5403 -django/contrib/admindocs/locale/hsb/LC_MESSAGES/django.mo,sha256=ft4a_FXwxSoabWHHBrX9e9g3SzQG5aYBkOAFki6OK0M,6797 -django/contrib/admindocs/locale/hsb/LC_MESSAGES/django.po,sha256=eQY8M7whVdInK2EeqaeyZCWTH33-qlB2a1IU8eF3uLs,7278 -django/contrib/admindocs/locale/hu/LC_MESSAGES/django.mo,sha256=pAK3eTIgFlPjtJw-3rkd765P78o-LhgM94O8yNBJab8,6660 -django/contrib/admindocs/locale/hu/LC_MESSAGES/django.po,sha256=pJnWzCsWYOZhu0MjMdP3CsTe7Fff4REALZR1SmsJ22Y,7196 -django/contrib/admindocs/locale/ia/LC_MESSAGES/django.mo,sha256=KklX2loobVtA6PqHOZHwF1_A9YeVGlqORinHW09iupI,1860 -django/contrib/admindocs/locale/ia/LC_MESSAGES/django.po,sha256=Z7btOCeARREgdH4CIJlVob_f89r2M9j55IDtTLtgWJU,5028 -django/contrib/admindocs/locale/id/LC_MESSAGES/django.mo,sha256=ls_B8o3QtpvZj8Wbjye1ls_LqgOP3oP-6jcuJzHslkE,6367 -django/contrib/admindocs/locale/id/LC_MESSAGES/django.po,sha256=fHTl0NjPK9xFvhLwLZqgfzTRtrvs6QTpLcAtNaZSQmI,6989 -django/contrib/admindocs/locale/io/LC_MESSAGES/django.mo,sha256=5t9Vurrh6hGqKohwsZIoveGeYCsUvRBRMz9M7k9XYY8,464 -django/contrib/admindocs/locale/io/LC_MESSAGES/django.po,sha256=SVZZEmaS1WbXFRlLLGg5bzUe09pXR23TeJtHUbhyl0w,5048 -django/contrib/admindocs/locale/is/LC_MESSAGES/django.mo,sha256=pEr-_MJi4D-WpNyFaQe3tVKVLq_9V-a4eIF18B3Qyko,1828 -django/contrib/admindocs/locale/is/LC_MESSAGES/django.po,sha256=-mD5fFnL6xUqeW4MITzm8Lvx6KXq4C9DGsEM9kDluZ8,5045 -django/contrib/admindocs/locale/it/LC_MESSAGES/django.mo,sha256=AhGl2DDlIiX9AS3VSj14Hpl86Khrh0USuIIrNajfAvA,6480 -django/contrib/admindocs/locale/it/LC_MESSAGES/django.po,sha256=EWpNc6wFL9vzmTjeB323GlnyuIQ3zy3H-5swX9FIPYA,7155 -django/contrib/admindocs/locale/ja/LC_MESSAGES/django.mo,sha256=F4QwDOvTwCEzGa1E9PoX-VHkF5uJoUcHDVzGl-Fkvc0,7377 -django/contrib/admindocs/locale/ja/LC_MESSAGES/django.po,sha256=Cljuw8oHQafTq2Uw6oDhM4C0Lt_JlQKFebkpkr_zWhA,7936 -django/contrib/admindocs/locale/ka/LC_MESSAGES/django.mo,sha256=COGIfQILK7_Xb1pGl4Z98LLQWYr-EH6_TI3IM7Wv5P0,4441 -django/contrib/admindocs/locale/ka/LC_MESSAGES/django.po,sha256=lx9qSUbU-STxRaqOePfwKZn8n9teql4UiyFN3uIZFMc,6795 -django/contrib/admindocs/locale/kab/LC_MESSAGES/django.mo,sha256=XTuWnZOdXhCFXEW4Hp0zFtUtAF0wJHaFpQqoDUTWYGw,1289 -django/contrib/admindocs/locale/kab/LC_MESSAGES/django.po,sha256=lQWewMZncWUvGhpkgU_rtwWHcgAyvhIkrDfjFu1l-d8,4716 -django/contrib/admindocs/locale/kk/LC_MESSAGES/django.mo,sha256=ZgQRp2IwERnwWKnFOSx6L-no9bnndzut_g4-zwhHpgM,1623 -django/contrib/admindocs/locale/kk/LC_MESSAGES/django.po,sha256=704iJamoOiNc3VKDMzV0bwsWjEfxSS1PQru7TP37wAA,5085 -django/contrib/admindocs/locale/km/LC_MESSAGES/django.mo,sha256=Fff1K0qzialXE_tLiGM_iO5kh8eAmQhPZ0h-eB9iNOU,1476 -django/contrib/admindocs/locale/km/LC_MESSAGES/django.po,sha256=E_CaaYc4GqOPgPh2t7iuo0Uf4HSQQFWAoxSOCG-uEGU,4998 -django/contrib/admindocs/locale/kn/LC_MESSAGES/django.mo,sha256=lisxE1zzW-Spdm7hIzXxDAfS7bM-RdrAG_mQVwz9WMU,1656 -django/contrib/admindocs/locale/kn/LC_MESSAGES/django.po,sha256=fbiHUPdw_iXrOvgiIvPTJI3WPLD_T77VBfhqW6gjq1c,5178 -django/contrib/admindocs/locale/ko/LC_MESSAGES/django.mo,sha256=eZaKtL6wL4GjEnx6wKO2wJoV-BrTjGyPpKHx8pZ7Fug,6609 -django/contrib/admindocs/locale/ko/LC_MESSAGES/django.po,sha256=mlCXxR8y6pV9egVZTsCucsKAi4D-wiSSwq1wMGqHjcg,7285 -django/contrib/admindocs/locale/lb/LC_MESSAGES/django.mo,sha256=N0hKFuAdDIq5clRKZirGh4_YDLsxi1PSX3DVe_CZe4k,474 -django/contrib/admindocs/locale/lb/LC_MESSAGES/django.po,sha256=B46-wRHMKUMcbvMCdojOCxqIVL5qVEh4Czo20Qgz6oU,5058 -django/contrib/admindocs/locale/lt/LC_MESSAGES/django.mo,sha256=o7X4bUYV9OhbG1DbQRZ4fSa-bd0QtaQgkqOuMUMXZTA,6673 -django/contrib/admindocs/locale/lt/LC_MESSAGES/django.po,sha256=XIo4qct4l8y7xpJOqWuSd6dTManhrpqX4WVxUvlJvy8,7373 -django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mo,sha256=lHUI2I_Xj9zQQXReg_StrXPNvNxqme0fcjHqQO545jM,6487 -django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po,sha256=uPOUrYKB-osuZ0Hg9vSSvirrKT1gdSOy1gDRHLGe9-g,7049 -django/contrib/admindocs/locale/mk/LC_MESSAGES/django.mo,sha256=8H9IpRASM7O2-Ql1doVgM9c4ybZ2KcfnJr12PpprgP4,8290 -django/contrib/admindocs/locale/mk/LC_MESSAGES/django.po,sha256=Uew7tEljjgmslgfYJOP9JF9ELp6NbhkZG_v50CZgBg8,8929 -django/contrib/admindocs/locale/ml/LC_MESSAGES/django.mo,sha256=iGH5F1BE1GELyWawhc5QFoX318GIJY-2XvgSGtg3Cig,2704 -django/contrib/admindocs/locale/ml/LC_MESSAGES/django.po,sha256=KkLQj0wABCqrFHA9vwv236zstN359cPsg6cjxRZ_OuM,5911 -django/contrib/admindocs/locale/mn/LC_MESSAGES/django.mo,sha256=KqdcvSpqmjRfA8M4nGB9Cnu9Auj4pTu9aH07XtCep3I,7607 -django/contrib/admindocs/locale/mn/LC_MESSAGES/django.po,sha256=PGhlnzDKyAIRzaPCbNujpxSpf_JaOG66LK_NMlnZy6I,8316 -django/contrib/admindocs/locale/mr/LC_MESSAGES/django.mo,sha256=LDGC7YRyVBU50W-iH0MuESunlRXrNfNjwjXRCBdfFVg,468 -django/contrib/admindocs/locale/mr/LC_MESSAGES/django.po,sha256=5cUgPltXyS2Z0kIKF5ER8f5DuBhwmAINJQyfHj652d0,5052 -django/contrib/admindocs/locale/my/LC_MESSAGES/django.mo,sha256=AsdUmou0FjCiML3QOeXMdbHiaSt2GdGMcEKRJFonLOQ,1721 -django/contrib/admindocs/locale/my/LC_MESSAGES/django.po,sha256=c75V-PprKrWzgrHbfrZOpm00U_zZRzxAUr2U_j8MF4w,5189 -django/contrib/admindocs/locale/nb/LC_MESSAGES/django.mo,sha256=-bqqbUhhOeXaLpNaBPdvAOMVOcUycSn_LMc4KQZ3-cI,6346 -django/contrib/admindocs/locale/nb/LC_MESSAGES/django.po,sha256=Pinb5oYBHqxDF0X5PXcZ4ypW2awXBE4q2p3eYVjTDRo,6935 -django/contrib/admindocs/locale/ne/LC_MESSAGES/django.mo,sha256=vx3Rcm4p1TNT1NXHEVk5q6C5Cux_5zK3ozwNorGzUjk,1505 -django/contrib/admindocs/locale/ne/LC_MESSAGES/django.po,sha256=FTpLzGCFoGAAeZjGI-ZlyaLVfUKwsV758Ca8o5AjREQ,5009 -django/contrib/admindocs/locale/nl/LC_MESSAGES/django.mo,sha256=q2AkgM7vSz-4oNmeBdkzlJ6CYeHotSz46pouZzRfrRM,6349 -django/contrib/admindocs/locale/nl/LC_MESSAGES/django.po,sha256=051HnemeTAcVvvNxkFKzYzxQso-WwM0u1pnRPJil688,6998 -django/contrib/admindocs/locale/nn/LC_MESSAGES/django.mo,sha256=Dx-A4dlDEoOKrtvis1mWfvwA2Urj-QAiKNmBy--v0oY,1662 -django/contrib/admindocs/locale/nn/LC_MESSAGES/django.po,sha256=VAHAyol0YEaHd0TaGxaQuVUIR72QB3VUnB1ARtr-AWw,4974 -django/contrib/admindocs/locale/os/LC_MESSAGES/django.mo,sha256=zSQBgSj4jSu5Km0itNgDtbkb1SbxzRvQeZ5M9sXHI8k,2044 -django/contrib/admindocs/locale/os/LC_MESSAGES/django.po,sha256=hZlMmmqfbGmoiElGbJg7Fp791ZuOpRFrSu09xBXt6z4,5215 -django/contrib/admindocs/locale/pa/LC_MESSAGES/django.mo,sha256=yFeO0eZIksXeDhAl3CrnkL1CF7PHz1PII2kIxGA0opQ,1275 -django/contrib/admindocs/locale/pa/LC_MESSAGES/django.po,sha256=DA5LFFLOXHIJIqrrnj9k_rqL-wr63RYX_i-IJFhBuc0,4900 -django/contrib/admindocs/locale/pl/LC_MESSAGES/django.mo,sha256=EesxAXz7TGC7Llv85MWiqgXmJboTTCXcTw-58RvOQH0,6652 -django/contrib/admindocs/locale/pl/LC_MESSAGES/django.po,sha256=F9BXW5MygjhwJ0yw672hRl7c6612caR60KOxfcaZcKM,7455 -django/contrib/admindocs/locale/pt/LC_MESSAGES/django.mo,sha256=WcXhSlbGdJgVMvydkPYYee7iOQ9SYdrLkquzgIBhVWU,6566 -django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po,sha256=J98Hxa-ApyzRevBwcAldK9bRYbkn5DFw3Z5P7SMEwx0,7191 -django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.mo,sha256=7R52AIZM0NjoASXDmNLzv4x1fePtn9Fj3HJy3iSOsz4,6601 -django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po,sha256=gIraoQfr6DLWV418adqzym7untmC4fN42WT6X057_A4,7404 -django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mo,sha256=OahWPVuzae_CG3hTXkqycHG97TIIfkS4hnVe8SXQ_cg,6804 -django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po,sha256=tgjbrXGCnM5K-vDsAMLO46G6AMPijNz-0Y0hQgctX0I,7416 -django/contrib/admindocs/locale/ru/LC_MESSAGES/django.mo,sha256=m6sfSIxFI5WJjxdSXZvDcm9A1xIxXJD2r5-UdeIbdlc,8569 -django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po,sha256=i0xEq4zScDKrmRJODgIewx_kUMkmeIPxPNE42Vw9AsI,9226 -django/contrib/admindocs/locale/sk/LC_MESSAGES/django.mo,sha256=_hYfHHwypg7psErP-3c2TY2xITIxaLaAfNofrfoboTA,6637 -django/contrib/admindocs/locale/sk/LC_MESSAGES/django.po,sha256=zIULDrr3lkg5PGLyjXEXM_VGrAUtfmYMHo8G0H6zrRg,7286 -django/contrib/admindocs/locale/sl/LC_MESSAGES/django.mo,sha256=FMg_s9ZpeRD42OsSF9bpe8pRQ7wP7-a9WWnaVliqXpU,6508 -django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po,sha256=JWO_WZAwBpXw-4FoB7rkWXGhi9aEVq1tH2fOC69rcgg,7105 -django/contrib/admindocs/locale/sq/LC_MESSAGES/django.mo,sha256=lbUhjyQWbGARQ6BggqWH1tO6kNi5lMwu-523mC9JCMA,6565 -django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po,sha256=ZA_o7xIUMTVYadovn4Yxl7W54nGzPnIBjkrL66V8pAE,7081 -django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mo,sha256=GnfckcHcuOaXYY1wNmI6VQmGjPX3dpnhgtANIdz8NrE,2217 -django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po,sha256=bYCdRzdUTTmg-UYF-IWSHvA1H0g7C0T2Z3wrWbLwGkw,5425 -django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=au90IT43VR162L2jEsYqhRpso2dvOjpCPSCFiglokTc,1932 -django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po,sha256=tJ4tHLJj0tDaVZba3WIkI0kg95_jEYWTmqXD0rFb6T8,5140 -django/contrib/admindocs/locale/sv/LC_MESSAGES/django.mo,sha256=cxjvRWC4s9h6TWzY4OE6pec3wh9gbMI_cpKNcfi3RSI,5661 -django/contrib/admindocs/locale/sv/LC_MESSAGES/django.po,sha256=t11gzFzreJ2Z7TWPvUTD2Lc8DXDlOQUj7TfSYjGG21w,6672 -django/contrib/admindocs/locale/sw/LC_MESSAGES/django.mo,sha256=pyJfGL7UdPrJAVlCB3YimXxTjTfEkoZQWX-CSpDkcWc,1808 -django/contrib/admindocs/locale/sw/LC_MESSAGES/django.po,sha256=SIywrLX1UGx4OiPxoxUYelmQ1YaY2LMa3dxynGQpHp8,4929 -django/contrib/admindocs/locale/ta/LC_MESSAGES/django.mo,sha256=8SjQ9eGGyaZGhkuDoZTdtYKuqcVyEtWrJuSabvNRUVM,1675 -django/contrib/admindocs/locale/ta/LC_MESSAGES/django.po,sha256=k593yzVqpSQOsdpuF-rdsSLwKQU8S_QFMRpZXww__1A,5194 -django/contrib/admindocs/locale/te/LC_MESSAGES/django.mo,sha256=eAzNpYRy_G1erCcKDAMnJC4809ITRHvJjO3vpyAC_mk,1684 -django/contrib/admindocs/locale/te/LC_MESSAGES/django.po,sha256=oDg_J8JxepFKIe5m6lDKVC4YWQ_gDLibgNyQ3508VOM,5204 -django/contrib/admindocs/locale/th/LC_MESSAGES/django.mo,sha256=bHK49r45Q1nX4qv0a0jtDja9swKbDHHJVLa3gM13Cb4,2167 -django/contrib/admindocs/locale/th/LC_MESSAGES/django.po,sha256=_GMgPrD8Zs0lPKQOMlBmVu1I59yXSV42kfkrHzeiehY,5372 -django/contrib/admindocs/locale/tr/LC_MESSAGES/django.mo,sha256=qK7BooitjyWEj-KtIR6mkGVfqrAh92un_D2RDYqHfK0,6625 -django/contrib/admindocs/locale/tr/LC_MESSAGES/django.po,sha256=9Q2F3sWt8Y5WA6y8is8BZb74g80PaazArlZmim7X40E,7235 -django/contrib/admindocs/locale/tt/LC_MESSAGES/django.mo,sha256=pQmAQOPbrBVzBqtoQ0dsFWFwC6LxA5mQZ9QPqL6pSFw,1869 -django/contrib/admindocs/locale/tt/LC_MESSAGES/django.po,sha256=NCLv7sSwvEficUOSoMJlHGqjgjYvrvm2V3j1Gkviw80,5181 -django/contrib/admindocs/locale/udm/LC_MESSAGES/django.mo,sha256=hwDLYgadsKrQEPi9HiuMWF6jiiYUSy4y-7PVNJMaNpY,618 -django/contrib/admindocs/locale/udm/LC_MESSAGES/django.po,sha256=29fpfn4p8KxxrBdg4QB0GW_l8genZVV0kYi50zO-qKs,5099 -django/contrib/admindocs/locale/uk/LC_MESSAGES/django.mo,sha256=uAW0HQdedzkV7MlXBeG9-wlinGHmPKYEn1_-4GVwTc4,8342 -django/contrib/admindocs/locale/uk/LC_MESSAGES/django.po,sha256=KD3jmpidDrTxzOPlqygz760kW1TztPYb-KPq_fi1dUs,9125 -django/contrib/admindocs/locale/ur/LC_MESSAGES/django.mo,sha256=VNg9o_7M0Z2LC0n3_-iwF3zYmncRJHaFqqpxuPmMq84,1836 -django/contrib/admindocs/locale/ur/LC_MESSAGES/django.po,sha256=QTg85c4Z13hMN_PnhjaLX3wx6TU4SH4hPTzNBfNVaMU,5148 -django/contrib/admindocs/locale/vi/LC_MESSAGES/django.mo,sha256=F6dyo00yeyUND_w1Ocm9SL_MUdXb60QQpmAQPto53IU,1306 -django/contrib/admindocs/locale/vi/LC_MESSAGES/django.po,sha256=JrVKjT848Y1cS4tpH-eRivFNwM-cUs886UEhY2FkTPw,4836 -django/contrib/admindocs/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=ofyr93DAtNADnsn3OWY5fo8Rh6VL8w9DRJXeUe2zod8,6110 -django/contrib/admindocs/locale/zh_Hans/LC_MESSAGES/django.po,sha256=bMvp2QdcvV36p7SOvqGgCE6ov1nPyU-EDiHJzNVGTHI,6761 -django/contrib/admindocs/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=R7NJ9FsGg7h6sETHiXL8jCN6vk_R5AP5vSY9u6R2d1I,4747 -django/contrib/admindocs/locale/zh_Hant/LC_MESSAGES/django.po,sha256=lFWmaYFnY4pf8HQ1WJSAlX6HrOGIdHp_aqMb4e5pgVY,6138 -django/contrib/admindocs/templates/admin_doc/bookmarklets.html,sha256=KbUjr9cygmTvlCiilIGvDTvLuYDdvi4HqzLLK_UBAHw,1333 -django/contrib/admindocs/templates/admin_doc/index.html,sha256=o1Z-Z6Dx8jzLwjihNnhROUOUKK_ILALjWGlMYz4U8u8,1313 -django/contrib/admindocs/templates/admin_doc/missing_docutils.html,sha256=LA8fyI_q_kRmE0e99XgiIDry3GRQ7ZjAu9EYBuCLT3Q,734 -django/contrib/admindocs/templates/admin_doc/model_detail.html,sha256=OfrSMc1vE_qItQrHO6GBBkwlhOQKex03ogvJJSyr2Jg,1824 -django/contrib/admindocs/templates/admin_doc/model_index.html,sha256=ow10WgNZUa6fUCp23ZmvR-kVdYUL29i3HBJ_iwlezfw,1322 -django/contrib/admindocs/templates/admin_doc/template_detail.html,sha256=xN-QihBsDVvpAI3C219Q__FMijnxw8j-wevYkk_mxMQ,995 -django/contrib/admindocs/templates/admin_doc/template_filter_index.html,sha256=PAzC_vpGSddmcza2UXWRuoSkhd0YVYiK_EEtP3eWJQo,1751 -django/contrib/admindocs/templates/admin_doc/template_tag_index.html,sha256=hmLoj_nh53MVJdnqrrlIg36rgSXj4k0IlimMSsQQmVE,1707 -django/contrib/admindocs/templates/admin_doc/view_detail.html,sha256=4mNkUt1_Q8ZGsvsZ1XMirPWNzJyptYMXZVIdPo9UVMc,896 -django/contrib/admindocs/templates/admin_doc/view_index.html,sha256=McuormWD-bVpIiSbnRvy09A-AURhMJeEhy9YX-kbzfs,1684 -django/contrib/auth/__init__.py,sha256=ADkkXnZcCe1qdMn77UgkgKnxZLTjk6gYocI5ZvEcpDE,9206 -django/contrib/auth/admin.py,sha256=5ibrsi934r3-9V7KhSYDm-59mcIaCm6jOXZ2AFTFwHg,8682 -django/contrib/auth/apps.py,sha256=fJNu_-e4MK2zPm9EvUfMBVrW9rw74zsiYih4SmhufW4,956 -django/contrib/auth/backends.py,sha256=_P9ZSQ0NeMFMuRdCsTuXSbnpVFdSQnm7nAZmtv4I06g,6684 -django/contrib/auth/base_user.py,sha256=DS1kB_lYyHW_CbibFanrC7Ow0Lubp8Wifkvsu6uIKYU,4561 -django/contrib/auth/checks.py,sha256=eml6rKyw4rEIHxBJUcqChUdvfEh69Monyjkm9FDTOoY,6355 -django/contrib/auth/common-passwords.txt.gz,sha256=EQsJeKUVEhNdKz_y83Tyip8sTs6R2eIKEAZpfmI66LE,3876 -django/contrib/auth/context_processors.py,sha256=Vb91feuKV9a3BBgR0hrrGmZvVPw0JyYgeA_mRX9QK1c,1822 -django/contrib/auth/decorators.py,sha256=m7U2K7FSMimPdRQd6ozp_asje5srCBmNnvlxh7wfqek,2893 -django/contrib/auth/forms.py,sha256=Op7cZFagwd45v0ZCC9l13xNPLUosJ-2PAlOmT0vcZgQ,15003 -django/contrib/auth/hashers.py,sha256=rq942WSDgrRntTMeGpdYxtP6Z16ADGXFqgeKP8nnHG0,22132 -django/contrib/auth/middleware.py,sha256=ihtkwdqyINaDDix1w3WKE9GayaGABY88j6drV0mHGDs,5399 -django/contrib/auth/mixins.py,sha256=NE4XTW5ooDIkFynB7bYvPmn2nZ4rfmf1No7oSmXCVOE,3809 -django/contrib/auth/models.py,sha256=cNiEZ8zgI9rDGsc4mKqMC9d0NECuoemroE7Dcabn71E,14263 -django/contrib/auth/password_validation.py,sha256=QNm-95BUKXU3naaKGtF9666EU2FTyoKHAPmSyZ3Ar8s,7464 -django/contrib/auth/signals.py,sha256=_QNYY-RzkwTvY3FRo01AW1S-D9l8lVb3ebt6F1GBfMU,227 -django/contrib/auth/tokens.py,sha256=YFS_0l8A2Fpdm0BR9vmRgMjPmdchgEWgPXfmux7XcPo,2823 -django/contrib/auth/urls.py,sha256=6M54eTFdCFEqW0pzzKND4R5-8S9JrzoPcaVt0qA3JXc,1054 -django/contrib/auth/validators.py,sha256=AXlNhfwEd2sonzVAsitbBvKLnBc9CqdGuAmjUB8mEPM,685 -django/contrib/auth/views.py,sha256=cmzrxmsp3zvuB4FYvLh1tDBLC_O3GzgfswfjxrNlICg,22468 -django/contrib/auth/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/auth/handlers/modwsgi.py,sha256=h0T065RiZwMAh3ai2IMeiEQdzmWK62qah7WmOlou6CI,1298 -django/contrib/auth/locale/af/LC_MESSAGES/django.mo,sha256=35F25KM8TCmA0iGFdN_v_SI-3BExezOffEgr_urb06Y,649 -django/contrib/auth/locale/af/LC_MESSAGES/django.po,sha256=cuKRtpHnljceWKGqx8qZAb08XeHd5co3CHRO2V_m4CI,4879 -django/contrib/auth/locale/ar/LC_MESSAGES/django.mo,sha256=lw7pjDDz5lRnSE6bvyGjdcuX06-mUxRZ6AOGreBP8o0,8705 -django/contrib/auth/locale/ar/LC_MESSAGES/django.po,sha256=3RZUD_C65heRnHppLoljc8REA_l1Df-vJ5rvhjEPr-g,9762 -django/contrib/auth/locale/ast/LC_MESSAGES/django.mo,sha256=Pt3gYY3j8Eroo4lAEmf-LR6u9U56mpE3vqLhjR4Uq-o,2250 -django/contrib/auth/locale/ast/LC_MESSAGES/django.po,sha256=Kiq4s8d1HnYpo3DQGlgUl3bOkxmgGW8CvGp9AbryRk8,5440 -django/contrib/auth/locale/az/LC_MESSAGES/django.mo,sha256=ljzBNGFBc9lV1K2goFd5o2GZf1T46_zCYylYRiKr9eE,5859 -django/contrib/auth/locale/az/LC_MESSAGES/django.po,sha256=hMBPuh7FKj4JPV-i45h44r_6ctuRNQCGq1e61bzYOJY,6828 -django/contrib/auth/locale/be/LC_MESSAGES/django.mo,sha256=YmJ7Gh14qYbk1OTHXqR4GEVdHcxGRHnpgf7xqzUKCR8,10008 -django/contrib/auth/locale/be/LC_MESSAGES/django.po,sha256=vPm5UJWEbhpoAslJhfvHyeTw6MGAfkrvSMd3EbnnmGk,10285 -django/contrib/auth/locale/bg/LC_MESSAGES/django.mo,sha256=ZwwXfAeWM92GObhxU6zzGu36KJUpkGOuEeprRMu5mZc,8751 -django/contrib/auth/locale/bg/LC_MESSAGES/django.po,sha256=_a2hoIiJRbvW3ymKAkAp-UZNk5AiUy5HqPBBby74Jew,9492 -django/contrib/auth/locale/bn/LC_MESSAGES/django.mo,sha256=cJSawQn3rNh2I57zK9vRi0r1xc598Wr26AyHh6D50ZQ,5455 -django/contrib/auth/locale/bn/LC_MESSAGES/django.po,sha256=5Vqd4n9ab98IMev4GHLxpO7f4r9nnhC3Nfx27HQNd8s,7671 -django/contrib/auth/locale/br/LC_MESSAGES/django.mo,sha256=iQPFHHrb3nWLLStmlg8shzOkpQ959Gx1pION6tEwBvA,1144 -django/contrib/auth/locale/br/LC_MESSAGES/django.po,sha256=unynO4-jNqwaRC7j8xp-tLbGu8vdHNfqbvT0Bc394XQ,5051 -django/contrib/auth/locale/bs/LC_MESSAGES/django.mo,sha256=1i1CxyXwfskDZtItZQuEpZFlV3cpIo6Ls7Ocs0X3VTA,2963 -django/contrib/auth/locale/bs/LC_MESSAGES/django.po,sha256=C5CQ5vqjuLscWSKHVu0niGzmhxX0y-pf_eiuEr-ZmGU,5793 -django/contrib/auth/locale/ca/LC_MESSAGES/django.mo,sha256=jyns0csr6qPjXSwGuP0PCaz2Ag1a1ZZsm5ZohyT8T3M,7313 -django/contrib/auth/locale/ca/LC_MESSAGES/django.po,sha256=0rG9MwaIJYcLa01txFBOK_wy6Aq1i5eDfnPQhVQznDs,7791 -django/contrib/auth/locale/cs/LC_MESSAGES/django.mo,sha256=1ujTab5YmMkipbkj_DMzigtnHTGc_aVTjviCpvitbBs,7621 -django/contrib/auth/locale/cs/LC_MESSAGES/django.po,sha256=mr9Rbn-dtvmF7I4DW-jvKUvIuELCYnReNOex4u_TPv0,8000 -django/contrib/auth/locale/cy/LC_MESSAGES/django.mo,sha256=lSfCwEVteW4PDaiGKPDxnSnlDUcGMkPfsxIluExZar0,4338 -django/contrib/auth/locale/cy/LC_MESSAGES/django.po,sha256=-LPAKGXNzB77lVHfCRmFlH3SUaLgOXk_YxfC0BomcEs,6353 -django/contrib/auth/locale/da/LC_MESSAGES/django.mo,sha256=uavulGt9dlP0FcOlQMvNTjF7nNcMNEJEd13EGrKjrmM,7452 -django/contrib/auth/locale/da/LC_MESSAGES/django.po,sha256=agG-MuUFTaZ_hFpqomiNhGQx5BKFOQL8z43QnGGFVB0,7765 -django/contrib/auth/locale/de/LC_MESSAGES/django.mo,sha256=Z4KFdT7BIn3DIVkwpdodfiFcvWTeVQEPUWU4QgMOYcc,7514 -django/contrib/auth/locale/de/LC_MESSAGES/django.po,sha256=plqGyseVxlR310SFqvPrkXParg-7Z-MfdNBk1UiD52Y,7919 -django/contrib/auth/locale/dsb/LC_MESSAGES/django.mo,sha256=BAAXuvUHRZYPdNoKFh1UiqBYAbyOC2SQRCpQGuW1zR4,8096 -django/contrib/auth/locale/dsb/LC_MESSAGES/django.po,sha256=UopznBtYDxdKbSenij3cIiBcdnsDhzyCnieIdVlkJEU,8350 -django/contrib/auth/locale/el/LC_MESSAGES/django.mo,sha256=OI3Z-VdpAfDr3oU6x6SdSOGzzEqeykqqP-Wkx4qUKnI,9665 -django/contrib/auth/locale/el/LC_MESSAGES/django.po,sha256=yvuBOwLGg3z7oC4dSbbA9pdKRxl1vNeJlPtgl6mVvBQ,10373 -django/contrib/auth/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/auth/locale/en/LC_MESSAGES/django.po,sha256=m_pwsxUew88m8RWQ-67V473WosKFWfV2nkSTWxIyt50,7918 -django/contrib/auth/locale/en_AU/LC_MESSAGES/django.mo,sha256=74v8gY8VcSrDgsPDaIMET5frCvtzgLE8oHgX1xNWUvw,3650 -django/contrib/auth/locale/en_AU/LC_MESSAGES/django.po,sha256=lg-LFEeZXxGsNNZ656ePDvAAncjuy0LKuQxUFvQCUJk,5921 -django/contrib/auth/locale/en_GB/LC_MESSAGES/django.mo,sha256=p57gDaYVvgEk1x80Hq4Pn2SZbsp9ly3XrJ5Ttlt2yOE,3179 -django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po,sha256=-yDflw5-81VOlyqkmLJN17FRuwDrhYXItFUJwx2aqpE,5787 -django/contrib/auth/locale/eo/LC_MESSAGES/django.mo,sha256=1lSTFZiD5KczQ4FfsgDg6pDo7W4gYn9XeimIf-tum84,7019 -django/contrib/auth/locale/eo/LC_MESSAGES/django.po,sha256=zwyShsKg1ngFq2TlraR2iinx47K7Z87RjiujsNDut2A,7438 -django/contrib/auth/locale/es/LC_MESSAGES/django.mo,sha256=fu-Qpqz4XyYu1_irM742YYT4KUFa2niDZuVo1bbXpTM,7766 -django/contrib/auth/locale/es/LC_MESSAGES/django.po,sha256=U3C1QK5ZVLREVepW6oLVnD3hBNhdlv7ZrjzzMyDLcY4,8427 -django/contrib/auth/locale/es_AR/LC_MESSAGES/django.mo,sha256=DnK67G_cBQ62T8FzOeT9UAe5dkYOOYo__cUoCRAcv8w,7920 -django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po,sha256=vcwNz5PSwMs5vOIFR-xN4ZIjYfzTOAmiYTJHAFFDaxU,8146 -django/contrib/auth/locale/es_CO/LC_MESSAGES/django.mo,sha256=K5VaKTyeV_WoKsLR1x8ZG4VQmk3azj6ZM8Phqjs81So,6529 -django/contrib/auth/locale/es_CO/LC_MESSAGES/django.po,sha256=qJywTaYi7TmeMB1sjwsiwG8GXtxAOaOX0voj7lLVZRw,7703 -django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mo,sha256=B5WKjfMrvFMcj7xi7-0BsH-G_KhGvTcSycyzjQGC2WA,7514 -django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po,sha256=Dsj4cZ0E2KsZphTh3zgJjy45CgWwj85O1QmMmPaJYAA,7936 -django/contrib/auth/locale/es_VE/LC_MESSAGES/django.mo,sha256=GwpZytNHtK7Y9dqQKDiVi4SfA1AtPlk824_k7awqrdI,7415 -django/contrib/auth/locale/es_VE/LC_MESSAGES/django.po,sha256=G3mSCo_XGRUfOAKUeP_UNfWVzDPpbQrVYQt8Hv3VZVM,7824 -django/contrib/auth/locale/et/LC_MESSAGES/django.mo,sha256=DgY1GY3M_oBtdW692gk2RxcrGMiy7Eqdg2mD0iHsNVo,7432 -django/contrib/auth/locale/et/LC_MESSAGES/django.po,sha256=Wvqd4XplrtEA2dXg1SLGFgWcchkh3gPHgj8cOovQ3XU,7842 -django/contrib/auth/locale/eu/LC_MESSAGES/django.mo,sha256=JUzadyH5nBxQQON6vHo6fYVD0jPoB0KuSAxiRxzaot8,7406 -django/contrib/auth/locale/eu/LC_MESSAGES/django.po,sha256=b7aQGkp-u3VHd6LC1LHsZ1uCkKXqo5duvUFy-UhHMi0,7778 -django/contrib/auth/locale/fa/LC_MESSAGES/django.mo,sha256=I82T66B_dQGhcrQkJFNA8wB1nGmqFCTo2XLQzzvD-bA,8263 -django/contrib/auth/locale/fa/LC_MESSAGES/django.po,sha256=nxq_eDjLj3fBZpKW5UYFCGOMdgSMztHrUIRE1plBrlI,8733 -django/contrib/auth/locale/fi/LC_MESSAGES/django.mo,sha256=xjjxjOsXyJ4is_tTXHdiA46lKK_-23F9qMTPn5ivF20,7195 -django/contrib/auth/locale/fi/LC_MESSAGES/django.po,sha256=AFYR_nqn9iYHL8OgxF1WQD3IrifkNjLGL2aK4TF_l94,7650 -django/contrib/auth/locale/fr/LC_MESSAGES/django.mo,sha256=3sYnsgpWnJRUbbcoGfTHnwPrxH74VZv-O9zfOFxYQ3o,8114 -django/contrib/auth/locale/fr/LC_MESSAGES/django.po,sha256=4Oy8cvyYG5ep2xvE6hEmEszu1wJJ7oHEgUdY6MCsteI,8449 -django/contrib/auth/locale/fy/LC_MESSAGES/django.mo,sha256=95N-77SHF0AzQEer5LuBKu5n5oWf3pbH6_hQGvDrlP4,476 -django/contrib/auth/locale/fy/LC_MESSAGES/django.po,sha256=8XOzOFx-WerF7whzTie03hgO-dkbUFZneyrpZtat5JY,3704 -django/contrib/auth/locale/ga/LC_MESSAGES/django.mo,sha256=Nd02Ed9ACCY6JCCSwtiWl3DTODLFFu9Mq6JVlr5YbYk,3572 -django/contrib/auth/locale/ga/LC_MESSAGES/django.po,sha256=FQJMR5DosuKqo4vvF0NAQnjfqbH54MSzqL2-4BO4-uM,6127 -django/contrib/auth/locale/gd/LC_MESSAGES/django.mo,sha256=VviVmi6nVpH5U3za23353_MXTIkExdVJOFzdu1FDCgo,8720 -django/contrib/auth/locale/gd/LC_MESSAGES/django.po,sha256=Vn_dHeBR4q-Nb-Z14MGE9xFiDKK7eaNa8ySM0dhT-2Q,9018 -django/contrib/auth/locale/gl/LC_MESSAGES/django.mo,sha256=Lm4HI1LS28Nw5ZHcVjdMgEsFjeV6UqQwI14ZeEgbK9A,3891 -django/contrib/auth/locale/gl/LC_MESSAGES/django.po,sha256=4V3U-_ZcnXpNQOOfLls18ACidluItzXxFaGfJlu0YM8,6299 -django/contrib/auth/locale/he/LC_MESSAGES/django.mo,sha256=tEK7AbBitn98v0SWBP9kLob5fNMgbxSXuUKMo1PGU7E,8170 -django/contrib/auth/locale/he/LC_MESSAGES/django.po,sha256=qqAb7YNgjfhvy6O7LrJBPwoeJFZSc6hvhbvtbuqSQuU,8432 -django/contrib/auth/locale/hi/LC_MESSAGES/django.mo,sha256=7CxV1H37hMbgKIhnAWx-aJmipLRosJe1qg8BH2CABfw,5364 -django/contrib/auth/locale/hi/LC_MESSAGES/django.po,sha256=DU5YM6r1kd5fo40yqFXzEaNh42ezFQFQ-0dmVqkaKQ0,7769 -django/contrib/auth/locale/hr/LC_MESSAGES/django.mo,sha256=GEap3QClwCkuwQZKJE7qOZl93RRxmyyvTTnOTYaAWUo,5894 -django/contrib/auth/locale/hr/LC_MESSAGES/django.po,sha256=ALftoYSaI1U90RNDEvnaFATbw1SL0m8fNXAyl6DkSvo,7355 -django/contrib/auth/locale/hsb/LC_MESSAGES/django.mo,sha256=PanVy6rcRBJ_Mr-BVKk8GIQOFZvtNz5Frga_GC5Ulmc,7925 -django/contrib/auth/locale/hsb/LC_MESSAGES/django.po,sha256=ZctqPoxjR1ofZ35OjDqaFi4QWcPXW6U_uGkudpOiAAc,8170 -django/contrib/auth/locale/hu/LC_MESSAGES/django.mo,sha256=JG0ZJ06LWE0XHjm7oS2n5tycMRkNGAV1qDJVkR7O45I,7691 -django/contrib/auth/locale/hu/LC_MESSAGES/django.po,sha256=3GSfUuXh7T7xH4_bLtgihH575dP63o1pSH0o7c8df2o,7999 -django/contrib/auth/locale/ia/LC_MESSAGES/django.mo,sha256=oTzOm7fRjn79_pU9zy6D_Ehex5FK7hjQYe4soeHhRkk,3314 -django/contrib/auth/locale/ia/LC_MESSAGES/django.po,sha256=LzJOXjj1Fa61zk3v2d-aWS48eva2S0b0jJ9r5CqiFDY,5881 -django/contrib/auth/locale/id/LC_MESSAGES/django.mo,sha256=iLbDPmfr31uL7Uddi1Pby-r4RYMa-W2feB-1Pii4ft4,6905 -django/contrib/auth/locale/id/LC_MESSAGES/django.po,sha256=vTmla-e84YuBcTlZYQmoeXvf4XX9m_Nij1PkA4hHJI8,7399 -django/contrib/auth/locale/io/LC_MESSAGES/django.mo,sha256=YwAS3aWljAGXWcBhGU_GLVuGJbHJnGY8kUCE89CPdks,464 -django/contrib/auth/locale/io/LC_MESSAGES/django.po,sha256=W36JXuA1HQ72LspixRxeuvxogVxtk7ZBbT0VWI38_oM,3692 -django/contrib/auth/locale/is/LC_MESSAGES/django.mo,sha256=04pHypFYzzOUc9O0fS0n9EiPjG5w3KV96ffMYtXddrA,7540 -django/contrib/auth/locale/is/LC_MESSAGES/django.po,sha256=Pdy1izQ1K718XqGdb8OZaxY7yoTnzq300x-etW9mdvo,7890 -django/contrib/auth/locale/it/LC_MESSAGES/django.mo,sha256=msIGxB__lTtLXQT_SdoVxBN6j2RbXrbXWHxxZIhGHxA,7583 -django/contrib/auth/locale/it/LC_MESSAGES/django.po,sha256=EQqX3Zr1LsRLAdW6zqOIKl8BmS-3WBPfJe0vNM4laJ0,8067 -django/contrib/auth/locale/ja/LC_MESSAGES/django.mo,sha256=Y-VZ90RSHfLpf0DDBhf3BS_OY_6E2nPDUte5Ufw3Wxc,8061 -django/contrib/auth/locale/ja/LC_MESSAGES/django.po,sha256=uJ1M0Xnlw7-fB_4W2okaAqxJNNomkGCRd9zsWcxC7j4,8289 -django/contrib/auth/locale/ka/LC_MESSAGES/django.mo,sha256=KjxMsgKo8oENzzjbFvGDdVmUfePS7kGBc3qsC8c6KJc,7469 -django/contrib/auth/locale/ka/LC_MESSAGES/django.po,sha256=oXdeF4_XUZpmmefS9TEf84Xzsv6yUnRk3_3ywkiRQSI,9142 -django/contrib/auth/locale/kab/LC_MESSAGES/django.mo,sha256=9qKeQ-gDByoOdSxDpSbLaM4uSP5sIi7qlTn8tJidVDs,2982 -django/contrib/auth/locale/kab/LC_MESSAGES/django.po,sha256=8cq5_rjRXPzTvn1jPo6H_Jcrv6IXkWr8n9fTPvghsS8,5670 -django/contrib/auth/locale/kk/LC_MESSAGES/django.mo,sha256=wHr5bBn3AUg5n8nrFrYOEEYL9eawegKsucA3_HAn0vc,3578 -django/contrib/auth/locale/kk/LC_MESSAGES/django.po,sha256=UqbVs6vZEsq36xliqcIrd5Tkc5fBkXXncnQs6iJ6kxc,6329 -django/contrib/auth/locale/km/LC_MESSAGES/django.mo,sha256=FahcwnCgzEamtWcDEPOiJ4KpXCIHbnSowfSRdRQ2F9U,2609 -django/contrib/auth/locale/km/LC_MESSAGES/django.po,sha256=lvRHHIkClbt_8-9Yn0xY57dMxcS72z4sUkxLb4cohP0,5973 -django/contrib/auth/locale/kn/LC_MESSAGES/django.mo,sha256=u0YygqGJYljBZwI9rm0rRk_DdgaBEMA1etL-Lk-7Mls,4024 -django/contrib/auth/locale/kn/LC_MESSAGES/django.po,sha256=HKQ1t2yhh9OwsqvMft337VpPmi8KU8PhF2M8gKOdtXw,6951 -django/contrib/auth/locale/ko/LC_MESSAGES/django.mo,sha256=r1de3B_rb-ImWCAmmZ8_c1y7bUK3Hyi7kRvcSKCTiFg,7612 -django/contrib/auth/locale/ko/LC_MESSAGES/django.po,sha256=V4hYbR-Vj32MeFWyD4D1iQ7HhbdPx4ZNLT1FKGxepkU,8205 -django/contrib/auth/locale/lb/LC_MESSAGES/django.mo,sha256=OFhpMA1ZXhrs5fwZPO5IjubvWDiju4wfwWiV94SFkiA,474 -django/contrib/auth/locale/lb/LC_MESSAGES/django.po,sha256=dOfY9HjTfMQ0nkRYumw_3ZaywbUrTgT-oTXAnrRyfxo,3702 -django/contrib/auth/locale/lt/LC_MESSAGES/django.mo,sha256=TL-YXmT-4SL3SQnfoSDj3ZXigEDUOeaH6BNLQ4MgfY0,7929 -django/contrib/auth/locale/lt/LC_MESSAGES/django.po,sha256=ByL1FwqJjhhbXeXXLaJky1d-QaqET22VdCwgO5Fhpew,8370 -django/contrib/auth/locale/lv/LC_MESSAGES/django.mo,sha256=C4vwTheGFS-olcfQNMeNPYqa9WK9NHxOXb1dH8410LQ,7601 -django/contrib/auth/locale/lv/LC_MESSAGES/django.po,sha256=jofkfLKbcFtLRTI_Zdg23Nt0wA2vo8DommZE18ZAYZ8,7874 -django/contrib/auth/locale/mk/LC_MESSAGES/django.mo,sha256=XS9dslnD_YBeD07P8WQkss1gT7GIV-qLiCx4i5_Vd_k,9235 -django/contrib/auth/locale/mk/LC_MESSAGES/django.po,sha256=QOLgcwHub9Uo318P2z6sp69MI8syIIWCcr4VOom9vfs,9799 -django/contrib/auth/locale/ml/LC_MESSAGES/django.mo,sha256=wwy7Yrk5EIlcAhTXvsdCL0jdgLcHQyutnmXFvp9R88Q,12518 -django/contrib/auth/locale/ml/LC_MESSAGES/django.po,sha256=lXrI-ijDEft9yR2EzPfFAvb0mlxFNHAVMBICabzCziA,12967 -django/contrib/auth/locale/mn/LC_MESSAGES/django.mo,sha256=hBYT0p3LcvIKKPtIn2NzPk_2di9L8jYrUt9j3TcVvaY,9403 -django/contrib/auth/locale/mn/LC_MESSAGES/django.po,sha256=R3wAEwnefEHZsma8J-XOn4XlLtuWYKDPLwJ99DUYmvE,9913 -django/contrib/auth/locale/mr/LC_MESSAGES/django.mo,sha256=zGuqUTqcWZZn8lZY56lf5tB0_lELn7Dd0Gj78wwO5T4,468 -django/contrib/auth/locale/mr/LC_MESSAGES/django.po,sha256=yLW9WuaBHqdp9PXoDEw7c05Vt0oOtlks5TS8oxYPAO8,3696 -django/contrib/auth/locale/my/LC_MESSAGES/django.mo,sha256=gYzFJKi15RbphgG1IHbJF3yGz3P2D9vaPoHZpA7LoH8,1026 -django/contrib/auth/locale/my/LC_MESSAGES/django.po,sha256=lH5mrq-MyY8gvrNkH2_20rkjFnbviq23wIUqIjPIgFI,5130 -django/contrib/auth/locale/nb/LC_MESSAGES/django.mo,sha256=Lg5Yf7DbiD8m_MUIYyD8u5GE3yuL5NE2DYLZ9fcaMrk,7222 -django/contrib/auth/locale/nb/LC_MESSAGES/django.po,sha256=zy1cf3zV3nFpE8ZwKKKJea2LxBw0VWZQ_F38OzlSfTY,7570 -django/contrib/auth/locale/ne/LC_MESSAGES/django.mo,sha256=HjSDANdwt_kfQcRUP6UCAH4MpCIut9IsvV43I9HDDjY,6446 -django/contrib/auth/locale/ne/LC_MESSAGES/django.po,sha256=OsLI1fkijl6UjQxSLj0jlzw4D6fDTFiau5-Tv176tHc,8023 -django/contrib/auth/locale/nl/LC_MESSAGES/django.mo,sha256=TAQwgOYLysAewTxS1dvUfAz84Orr9ucxxBhGsQjt6_k,7149 -django/contrib/auth/locale/nl/LC_MESSAGES/django.po,sha256=HPOTVHrMT_eP39W8b-tSWVo0l5_hIPTE0LZI0a4w5M8,7952 -django/contrib/auth/locale/nn/LC_MESSAGES/django.mo,sha256=020nmL8b1yQL0ZyrDAdr0ZOsEGmNxvUpp9ISPBOVI8U,2801 -django/contrib/auth/locale/nn/LC_MESSAGES/django.po,sha256=SKgBiBM1llWFIvVjWRR0r2i3O8VcAdWe-PUhxckqmbE,5590 -django/contrib/auth/locale/os/LC_MESSAGES/django.mo,sha256=DVsYGz-31nofEjZla4YhM5L7qoBnQaYnZ4TBki03AI4,4434 -django/contrib/auth/locale/os/LC_MESSAGES/django.po,sha256=Akc1qelQWRA1DE6xseoK_zsY7SFI8SpiVflsSTUhQLw,6715 -django/contrib/auth/locale/pa/LC_MESSAGES/django.mo,sha256=PeOLukzQ_CZjWBa5FGVyBEysat4Gwv40xGMS29UKRww,3666 -django/contrib/auth/locale/pa/LC_MESSAGES/django.po,sha256=7ts9PUSuvfXGRLpfyVirJLDtsQcsVWFXDepVKUVlmtc,6476 -django/contrib/auth/locale/pl/LC_MESSAGES/django.mo,sha256=IcLJy8lUmTL9r4pr4nLyBbul9Xs8XpX-G_XpJVTM15E,7920 -django/contrib/auth/locale/pl/LC_MESSAGES/django.po,sha256=JIvbUKlDSMiHhnA8rz0Befg8IbIBXXYFCZ-AwtQej_g,8605 -django/contrib/auth/locale/pt/LC_MESSAGES/django.mo,sha256=oyKCSXRo55UiO3-JKcodMUnK7fuOuQxQrXcU7XkWidA,7756 -django/contrib/auth/locale/pt/LC_MESSAGES/django.po,sha256=tEazw0kctJ3BaP21IblsMhno6qooOGW54zwende522Q,8128 -django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.mo,sha256=Laj_VAYZZX8xYAKcYotpIvPLTECd6tRQS3RjQJuO9MU,7564 -django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po,sha256=AaOc5jr5L7JwCOukc9WOWZNQvTHiMPopqQy-herWno0,8386 -django/contrib/auth/locale/ro/LC_MESSAGES/django.mo,sha256=GTrhRGvEd1NNoSSFhdA-ao-PB5E7vIeiQKMAgmb1Rqg,7577 -django/contrib/auth/locale/ro/LC_MESSAGES/django.po,sha256=O4kxImnFkz_CjgOIBYknzqudNOb8mSNEkMWif1IkowA,8140 -django/contrib/auth/locale/ru/LC_MESSAGES/django.mo,sha256=tfK9L7EYNZd9d1k_EGQrDcr8ruUGJ1JbRJ3-TvJ6cR8,10482 -django/contrib/auth/locale/ru/LC_MESSAGES/django.po,sha256=nQnaxPKmCJ6N2VVJzNDNt6oeqwSxG0lfY60DSDotJ94,10959 -django/contrib/auth/locale/sk/LC_MESSAGES/django.mo,sha256=shT_E4LFHMuUSjvTtFtaTFfFREhuTS8FjFhje5ZF5yo,7651 -django/contrib/auth/locale/sk/LC_MESSAGES/django.po,sha256=aanpDooZWeV-wuByaJ6TB-Qa7fpjc-bshcpM_qgcRrU,7977 -django/contrib/auth/locale/sl/LC_MESSAGES/django.mo,sha256=Ey2oRfp3vCJ3_IesSu4wOnP5XiP_9nzbYU_1r3U2x34,7251 -django/contrib/auth/locale/sl/LC_MESSAGES/django.po,sha256=zHNt3AOf2qICzP4pPtlHKOvwiBZTemQjwHk43k9LpXE,7787 -django/contrib/auth/locale/sq/LC_MESSAGES/django.mo,sha256=Nrfoks9rpAdeYtAvbd78imw20YrBQLbqXezC28GG5Xg,7846 -django/contrib/auth/locale/sq/LC_MESSAGES/django.po,sha256=DMF3vHqmlERrwKnlOjkWYZlChWHzcS1x2Ldcx63hD2E,8115 -django/contrib/auth/locale/sr/LC_MESSAGES/django.mo,sha256=XPJB-rwpS8c7sEH7RChft-DHllMWqUEoTFLA06Q_noc,9754 -django/contrib/auth/locale/sr/LC_MESSAGES/django.po,sha256=HPk2yuyvr9krU3CEf6p5v_4cLFG-Cu1lXsFTs1C9vmo,10010 -django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=hwAo5ishpZZ9kb9WHrSMHdxmWV9afdxOHgVEwWqb4VE,3293 -django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.po,sha256=qccS0IkO-JT504Y2uVGY5nPYfN8EA_58I9z492iQHKI,5934 -django/contrib/auth/locale/sv/LC_MESSAGES/django.mo,sha256=tuAuMr-3VSXhfmQP0k_3UWderNnNajDkXWDFbBtiHZY,7114 -django/contrib/auth/locale/sv/LC_MESSAGES/django.po,sha256=kG2_emZy-aAnZVZY4ZmIjYs4mJLvfpIdWyqGUGyFSUY,7758 -django/contrib/auth/locale/sw/LC_MESSAGES/django.mo,sha256=I_lEsKuMGm07X1vM3-ReGDx2j09PGLkWcG0onC8q1uQ,5029 -django/contrib/auth/locale/sw/LC_MESSAGES/django.po,sha256=TiZS5mh0oN0e6dFEdh-FK81Vk-tdv35ngJ-EbM1yX80,6455 -django/contrib/auth/locale/ta/LC_MESSAGES/django.mo,sha256=T1t5CKEb8hIumvbOtai-z4LKj2et8sX-PgBMd0B3zuA,2679 -django/contrib/auth/locale/ta/LC_MESSAGES/django.po,sha256=X8UDNmk02X9q1leNV1qWWwPNakhvNd45mCKkQ8EpZQQ,6069 -django/contrib/auth/locale/te/LC_MESSAGES/django.mo,sha256=i9hG4thA0P-Hc-S2oX7GufWFDO4Y_LF4RcdQ22cbLyE,2955 -django/contrib/auth/locale/te/LC_MESSAGES/django.po,sha256=txND8Izv2oEjSlcsx3q6l5fEUqsS-zv-sjVVILB1Bmc,6267 -django/contrib/auth/locale/th/LC_MESSAGES/django.mo,sha256=zRpZ2xM5JEQoHtfXm2_XYdhe2FtaqH-hULJadLJ1MHU,6013 -django/contrib/auth/locale/th/LC_MESSAGES/django.po,sha256=Yhh_AQS_aM_9f_yHNNSu_3THbrU-gOoMpfiDKhkaSHo,7914 -django/contrib/auth/locale/tr/LC_MESSAGES/django.mo,sha256=MqxtamKKi0P7UmWiiNz9jGOp_obhLij6WBMZwS5La-I,7480 -django/contrib/auth/locale/tr/LC_MESSAGES/django.po,sha256=Mz7mRvzk7qBnn1yF62en2OiMlgLNuaIbwDzwz7tzhV0,8027 -django/contrib/auth/locale/tt/LC_MESSAGES/django.mo,sha256=g4pTk8QLQFCOkU29RZvR1wOd1hkOZe_o5GV9Cg5u8N4,1371 -django/contrib/auth/locale/tt/LC_MESSAGES/django.po,sha256=owkJ7iPT-zJYkuKLykfWsw8j7O8hbgzVTOD0DVv956E,5222 -django/contrib/auth/locale/udm/LC_MESSAGES/django.mo,sha256=zey19UQmS79AJFxHGrOziExPDDpJ1AbUegbCRm0x0hM,462 -django/contrib/auth/locale/udm/LC_MESSAGES/django.po,sha256=gLVgaMGg0GA3Tey1_nWIjV1lnM7czLC0XR9NFBgL2Zk,3690 -django/contrib/auth/locale/uk/LC_MESSAGES/django.mo,sha256=2Ihvae_DFOKfxd_lWW6dpR-i9QdG2Lk8wnnnpy4bN-U,9698 -django/contrib/auth/locale/uk/LC_MESSAGES/django.po,sha256=vGh5I8B2p7ZsOeyKjDMKkl070m2Z6St1bkCAuwqjV5k,10274 -django/contrib/auth/locale/ur/LC_MESSAGES/django.mo,sha256=rippTNHoh49W19c4HDUF8G5Yo3SknL3C87Afu8YXxzA,698 -django/contrib/auth/locale/ur/LC_MESSAGES/django.po,sha256=gwSd8noEwbcvDE1Q4ZsrftvoWMwhw1J15gvdtK6E9ns,4925 -django/contrib/auth/locale/vi/LC_MESSAGES/django.mo,sha256=4YOb_ZbCI90UB01DpNsBAe6qqrc3P209Bz22FSVqvog,4703 -django/contrib/auth/locale/vi/LC_MESSAGES/django.po,sha256=1YjTrGYr04j9GtG8w0c7v71pHjHU8mHzT7tChroyfaw,6723 -django/contrib/auth/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=m8Z9joKBAtYCmTUNIk5cW1zU5LXRAWT8CqlbGxFtfwc,6487 -django/contrib/auth/locale/zh_Hans/LC_MESSAGES/django.po,sha256=pXmwS9J3vhg_2MUZ0w50gz7x_QzU2N2hEo3uWbtcuPo,7088 -django/contrib/auth/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=6nzvm0k9hv0Y5eFCmJhnFkCs_mbQ3ebJgIm5wmp7GGg,6435 -django/contrib/auth/locale/zh_Hant/LC_MESSAGES/django.po,sha256=g88Ny9_ar1ut6gENTRbShIzlxKTRv_qzjgXRnKFUVkE,6979 -django/contrib/auth/management/__init__.py,sha256=ubESj2X1ZwPmRdesZtlTfE4_v14RfqUTCaXOmCfr1GE,4601 -django/contrib/auth/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/auth/management/commands/changepassword.py,sha256=GHKZIJ2YBzQW4SvqezkjTPj-W7VwNFD1wokko9rFQFI,2581 -django/contrib/auth/management/commands/createsuperuser.py,sha256=be_zrcb9NXycAYTafDW2nTgb8t8ZiS6X1Hx8DNHYEqo,8531 -django/contrib/auth/migrations/0001_initial.py,sha256=bz7B12K5Ovs0aiXfZGMEbVtWAeV05JyLKDGyMrhCd_c,4960 -django/contrib/auth/migrations/0002_alter_permission_name_max_length.py,sha256=xSlhMiUbrVCPMOwmwVNAUgYjZih3t-ieALNm7rQ1OI0,347 -django/contrib/auth/migrations/0003_alter_user_email_max_length.py,sha256=bPcpCTPAJV2NgrwEa6WFfxkhbPmj5J-EqU1HM3RXtq0,389 -django/contrib/auth/migrations/0004_alter_user_username_opts.py,sha256=aN0oHoA5q2bKpJN8SnI8T9GNtTBKzLRFozL87tNh8_I,785 -django/contrib/auth/migrations/0005_alter_user_last_login_null.py,sha256=0s9ZPGWNP9HT7TmXAuChMLLwL1Ml5SdQwNs9qfy5dN4,381 -django/contrib/auth/migrations/0006_require_contenttypes_0002.py,sha256=_S7o_MhU0lAnPhDEt0kh1sBmpCLXW88VBuATERiMBlk,370 -django/contrib/auth/migrations/0007_alter_validators_add_error_messages.py,sha256=JeJpm_jyu2CbBckw4xJt0DlwQ4SDg2fyHqduRLZ1HFI,740 -django/contrib/auth/migrations/0008_alter_user_username_max_length.py,sha256=KpeVuknt_7WErQO_WLDSCMg1sJkXCXjNQ5I4u_l99kc,752 -django/contrib/auth/migrations/0009_alter_user_last_name_max_length.py,sha256=rwLs5SDzFJsDKtCfyMP6XueUPHiRvRMein3wXMzHeDk,386 -django/contrib/auth/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/auth/templates/auth/widgets/read_only_password_hash.html,sha256=cMrG-iMsrVQ6Qd6T_Xz21b6WIWhXxaIwgNDW2NpDpuM,185 -django/contrib/auth/templates/registration/password_reset_subject.txt,sha256=j8rO05woNdwv8-_F6EMy6FTZGMf-Dp9usdUJXSZHs7Q,124 -django/contrib/contenttypes/__init__.py,sha256=OVcoCHYF9hFs-AnFfg2tjmdetuqx9-Zhi9pdGPAgwH4,75 -django/contrib/contenttypes/admin.py,sha256=ktSb2Pj0gFwoxA-gkvSn19l-0qy4WFSFfYYTGYwe7HM,5212 -django/contrib/contenttypes/apps.py,sha256=lVmnJW7DgIc42uc0V5vZL8qxnsnVijQmgelhs3nybIE,797 -django/contrib/contenttypes/checks.py,sha256=ooW997jE1y5goWgO3dzc7tfJt5Z4tJPWRRSG1P1-AcU,1234 -django/contrib/contenttypes/fields.py,sha256=X-VUW7-3ynJvafPujw0pkAgU6xsfONIfiCttw7rTkn8,26607 -django/contrib/contenttypes/forms.py,sha256=9Lk374J-AHUP1P97oTnbTqQrU_Z0NcsqBsILzYco1pU,3557 -django/contrib/contenttypes/models.py,sha256=QX-nY08YMDN5cUqKNFf6G0IVFs9oIeKa8hOIl5jkTjE,6491 -django/contrib/contenttypes/views.py,sha256=2IwvlE6KGhDUJMGTFkY6iXShu_jpATDM-kQcc3MDpLU,3634 -django/contrib/contenttypes/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 -django/contrib/contenttypes/locale/af/LC_MESSAGES/django.po,sha256=dnZ6zKmthl5qt6fhnexYool7hu1YdO8TQj5tPLC6q10,985 -django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.mo,sha256=YXeD6WDlMQ7No_1PbR1PYE7As6GYXSQBVKkWdF_bHMo,1259 -django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.po,sha256=PHvyo3UF4beWdczghk7xqrtJEu-u4802Yn6fmQvKbtA,1504 -django/contrib/contenttypes/locale/ast/LC_MESSAGES/django.mo,sha256=y88CPGGbwTVRmZYIipCNIWkn4OuzuxEk2QCYsBhc7RY,643 -django/contrib/contenttypes/locale/ast/LC_MESSAGES/django.po,sha256=H-qMo5ikva84ycnlmBT4XXEWhzMIw-r7J_zuqxo3wu4,1088 -django/contrib/contenttypes/locale/az/LC_MESSAGES/django.mo,sha256=aaKSEUnbZZMDDl4lrNpG6e18R73kD_-nY2A_dAtHtxw,1101 -django/contrib/contenttypes/locale/az/LC_MESSAGES/django.po,sha256=txoRBy2uMeiT7aUzjADfXnf8FF3zjmCr_mLsFbVcpXs,1314 -django/contrib/contenttypes/locale/be/LC_MESSAGES/django.mo,sha256=lQjyKyBbwBjIl1rn6itLToQIKMvG-v-TjECiGepZrnw,1394 -django/contrib/contenttypes/locale/be/LC_MESSAGES/django.po,sha256=V04WIP5qYaBOaku2AV2tNSsGKFoloDHmOjskG2o3uEM,1575 -django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.mo,sha256=yVH2saAhE3bVtamkCeIBDQuJpn2awfF2M7ISujswiRU,1267 -django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.po,sha256=YdzC82ifG-pPY5Iy4mXIBj9Qq583g37OqZir-jpbUpc,1576 -django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.mo,sha256=2Z1GL6c1ukKQCMcls7R0_n4eNdH3YOXZSR8nCct7SLI,1201 -django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.po,sha256=PLjnppx0FxfGBQMuWVjo0N4sW2QYc2DAEMK6ziGWUc8,1491 -django/contrib/contenttypes/locale/br/LC_MESSAGES/django.mo,sha256=rvGRznrZFfJMa6J5btjn8KusuGfyf5enHi5riU3PkeE,466 -django/contrib/contenttypes/locale/br/LC_MESSAGES/django.po,sha256=-XOhrrNUB3sVOViU-XWriDZM_kDHcx9Ofq3d6GXP5tw,981 -django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.mo,sha256=klj9n7AKBkTf7pIa9m9b-itsy4UlbYPnHiuvSLcFZXY,700 -django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.po,sha256=pmJaMBLWbYtYFFXYBvPEvwXkTPdjQDv2WkFI5jNGmTI,1151 -django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.mo,sha256=SMwTCqtIJedetZYstY4lcKqTD9xoE4vuvyOaDRENcTg,1134 -django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.po,sha256=__UUPN27_GLZxOATgFO_THR-H9e5JARo52vGyuGXrFs,1360 -django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.mo,sha256=LI0-cpzOVLuvK9CVX8ueIB0l8vfe4ypW1285QAE2PsI,1089 -django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.po,sha256=We7jqbXO1c0EUfAa7WezsSHy1dNIrjZZjeOs2k3BU-8,1306 -django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.mo,sha256=2QyCWeXFyymoFu0Jz1iVFgOIdLtt4N1rCZATZAwiH-8,1159 -django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.po,sha256=ZWDxQTHJcw1UYav1C3MX08wCFrSeJNNI2mKjzRVd6H0,1385 -django/contrib/contenttypes/locale/da/LC_MESSAGES/django.mo,sha256=wIEwYctl3CsjBou71rpRvGiR24jcVSEgQW1kNeb1Lsg,1081 -django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po,sha256=k_ztS6LIORMJ0T45_XMFHMDWdvh4rMfURYbKV37Bo7Y,1346 -django/contrib/contenttypes/locale/de/LC_MESSAGES/django.mo,sha256=WdGKHOdSGoscynVfOmjXD3_NRPOoTzZNWYjYdEVzahY,1092 -django/contrib/contenttypes/locale/de/LC_MESSAGES/django.po,sha256=141sVDNz98hS_QxjyM5GEEfpvHnL8Dvbmjb_P-RtkFk,1299 -django/contrib/contenttypes/locale/dsb/LC_MESSAGES/django.mo,sha256=JfVRcAuhU7jt3iv8orjFpzFZUEWa9Tf98Z0KwKynBB0,1169 -django/contrib/contenttypes/locale/dsb/LC_MESSAGES/django.po,sha256=2vfMUWWYDKZ9K8ujm1OgYSwl04cVDUUE5-942VGz150,1346 -django/contrib/contenttypes/locale/el/LC_MESSAGES/django.mo,sha256=cGjt7dcY9L6GusXl9eQgezR9phjMqfTUixC9hFC4ORc,1323 -django/contrib/contenttypes/locale/el/LC_MESSAGES/django.po,sha256=VWwuQYX1La2lvPZJwp-cprA-jyxe0qTxxT0neb9AegM,1634 -django/contrib/contenttypes/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/contenttypes/locale/en/LC_MESSAGES/django.po,sha256=ENzOpatkejwQ6F1IwZAYsMWNGtTHAVPlKCKcVrTygSI,1106 -django/contrib/contenttypes/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 -django/contrib/contenttypes/locale/en_AU/LC_MESSAGES/django.po,sha256=wmxyIJtz628AbsxgkB-MjdImcIJWhcW7NV3tWbDpedg,1001 -django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.mo,sha256=_uM-jg43W7Pz8RQhMcR_o15wRkDaYD8aRcl2_NFGoNs,1053 -django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.po,sha256=SyzwSvqAgKF8BEhXYh4598GYP583OK2GUXH1lc4iDMk,1298 -django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.mo,sha256=MFC-mQeWLeFry7d2EXeAf2G47YRLLKFhenGLCwo5O9A,1087 -django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.po,sha256=BgQ7lRtsjD-XHaNvlHMu9AxCCqx38XdOCG4zYpKgDn4,1279 -django/contrib/contenttypes/locale/es/LC_MESSAGES/django.mo,sha256=rG5-Lt7Mutoa42O_5I2rjcQ5p0rnA2T-cDMbgxaJsYU,1142 -django/contrib/contenttypes/locale/es/LC_MESSAGES/django.po,sha256=iR5eAl6d6Ol2Ufd9hQWfau8vNG0pPKvSgTToqvGMGK8,1417 -django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.mo,sha256=iSq2trgItDc4apHlZdZey4vVJF2k38KrKQRorDvHmG8,1121 -django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.po,sha256=ejs7IoMryYl-stXjIx7slZ3pESU-3X3NUogwIbSDHBo,1328 -django/contrib/contenttypes/locale/es_CO/LC_MESSAGES/django.mo,sha256=aACo1rOrgs_BYK3AWzXEljCdAc4bC3BXpyXrwE4lzAs,1158 -django/contrib/contenttypes/locale/es_CO/LC_MESSAGES/django.po,sha256=vemhoL-sESessGmIlHoRvtWICqF2aO05WvcGesUZBRM,1338 -django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.mo,sha256=hfjH_3T9YfIhOGEE25TflbKWoiZZvmagaVW2YcNDKq8,1109 -django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.po,sha256=Tkt5m04QFdBiPVbRWRh9tiyVL4K6E9Qe42xdmeVaRxQ,1303 -django/contrib/contenttypes/locale/es_VE/LC_MESSAGES/django.mo,sha256=TVGDydYVg_jGfnYghk_cUFjCCtpGchuoTB4Vf0XJPYk,1152 -django/contrib/contenttypes/locale/es_VE/LC_MESSAGES/django.po,sha256=vJW37vuKYb_KpXBPmoNSqtNstFgCDlKmw-8iOoSCenU,1342 -django/contrib/contenttypes/locale/et/LC_MESSAGES/django.mo,sha256=Rs8vsaZp2RX68U_dQge4wkZQMfH8Dh1br4IWkKzfECA,1066 -django/contrib/contenttypes/locale/et/LC_MESSAGES/django.po,sha256=AIl4zK9fs3_euQMwu0ORQZWPyBrIikvQfq-fhiRu2ug,1323 -django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.mo,sha256=K0f1cXEhfg_djPzgCL9wC0iHGWF_JGIhWGFL0Y970g0,1077 -django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.po,sha256=sSuVV0o8MeWN6BxlaeKcjKA3h4H29fCo1kKEtkczEp4,1344 -django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.mo,sha256=eVhLFdG5NJQB8-cYHcMlR0AdGXXlBnkBIqqe3IgkU4M,1165 -django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.po,sha256=_xEtLhrIwJ7Ahg15NSgMLN-NqbSKnt-gDg34mxLr7x4,1421 -django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.mo,sha256=yZNZ0btS15XQPW5sGVQWqUbQ3_ZIGD0JjgMcz2-_xgU,1073 -django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.po,sha256=LTt_nF73_BxrerGmK4ly__1PeesGNpWlH3CSLETMvuI,1316 -django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.mo,sha256=--hcS97AwKMSkriQKcZ9hdSF9swN732tII_b7JszY4k,1112 -django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.po,sha256=yk486-Y0VCwUGQy3DjfvpM0o2UlHREVXy_SufqkkWKQ,1367 -django/contrib/contenttypes/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/contenttypes/locale/fy/LC_MESSAGES/django.po,sha256=SB07aEGG7n4oX_5rqHB6OnjpK_K0KwFM7YxaWYNpB_4,991 -django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.mo,sha256=EAAOl8HU8C0iFiXVZbPg3AGXdtWM7ap_YUZYFneSdDE,1083 -django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.po,sha256=5C7iIB2OJBRPy-mnj4S1AzZL8_7c8ccZZGstHryg5Qw,1335 -django/contrib/contenttypes/locale/gd/LC_MESSAGES/django.mo,sha256=GXwvJ2csT38SBvqMB_YoPQ_Swcy7mhZYDEr1nQBNOgc,1191 -django/contrib/contenttypes/locale/gd/LC_MESSAGES/django.po,sha256=H4U-T07ZGgSF2LjOng5g8N-jC92SFeO5Fg9u1-g954g,1346 -django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.mo,sha256=gMDLuxVazSNvwLmi5AqJEsxugmDVLk8DlxseHRRoQoc,1072 -django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.po,sha256=hFPL2GH-o6XN0SKu5kqgiEaGT8lKnbi_zmlUNCn3Obg,1364 -django/contrib/contenttypes/locale/he/LC_MESSAGES/django.mo,sha256=X_d2S4YQ-5G3dniw7i4fo-LX-JFMjM1HPsDBuYe2VxU,1162 -django/contrib/contenttypes/locale/he/LC_MESSAGES/django.po,sha256=8vyWhH8zO7PLwpEDI9ZNNUpA5ihgtl8BfQEUvPZ_Vjk,1380 -django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.mo,sha256=KAZuQMKOvIPj3a7GrNJE3yhT70O2abCEF2GOsbwTE5A,1321 -django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.po,sha256=PcsNgu2YmT0biklhwOF_nSvoGTvWVKw2IsBxIwSVAtI,1577 -django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.mo,sha256=DbOUA8ks3phsEwQvethkwZ9-ymrd36aQ6mP7OnGdpjU,1167 -django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.po,sha256=722KxvayO6YXByAmO4gfsfzyVbT-HqqrLYQsr02KDc8,1445 -django/contrib/contenttypes/locale/hsb/LC_MESSAGES/django.mo,sha256=IEjKVQBez7h6phH_ozALY0sNjQmcDSAtCFn7JbBOFMg,1143 -django/contrib/contenttypes/locale/hsb/LC_MESSAGES/django.po,sha256=VlIhdng3HZ-r9XzbdJWtQ4m1UMpmdnpBLWInGMTciZE,1320 -django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.mo,sha256=3fpAT3FGjXjajM3Omz_vcIZ7uqmvSgr4zfB7lfMfhas,1103 -django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.po,sha256=zLI8xh3t_p23EITZnZ7Dme2MXexL9Rt8chxpj8W7w9g,1336 -django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.mo,sha256=3yDFJFxh16B2WigXeJxZV9vOyRxnjZ4MAUq3T_-PHGs,1079 -django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.po,sha256=4JsXrJxsMVVu9Y6OuFrwMV5L4Dglh9XJ5sp9CHDGHaA,1288 -django/contrib/contenttypes/locale/id/LC_MESSAGES/django.mo,sha256=9o50TqX6hHloHvBJbf4pkK4a554L5UmiJnp9vGfq25k,1066 -django/contrib/contenttypes/locale/id/LC_MESSAGES/django.po,sha256=xMRNmOipOt-18KLux7PrJn8NS25qMCVLxmmceR1P93s,1374 -django/contrib/contenttypes/locale/io/LC_MESSAGES/django.mo,sha256=3SSRXx4tYiMUc00LZ9kGHuvTgaWpsICEf5G208CEqgg,1051 -django/contrib/contenttypes/locale/io/LC_MESSAGES/django.po,sha256=1ku9WPcenn47DOF05HL2eRqghZeRYfklo2huYUrkeJ0,1266 -django/contrib/contenttypes/locale/is/LC_MESSAGES/django.mo,sha256=Lzl9gXdkji1Eg4vKahCW8ZIJY8U1hBs52O2hQftopPc,1086 -django/contrib/contenttypes/locale/is/LC_MESSAGES/django.po,sha256=YY0C2qJRSc1cX__k-vm4LXhJZJl731NXYe2w3gTSCGU,1351 -django/contrib/contenttypes/locale/it/LC_MESSAGES/django.mo,sha256=gr8UGpZMY39rE8z0vNEDQyxh_ZD7lC3Py8Dj4B24iHg,1098 -django/contrib/contenttypes/locale/it/LC_MESSAGES/django.po,sha256=wycvlyGUXqjmDSg0FluwvM4XpY2NU0oaKob02Q7236s,1391 -django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.mo,sha256=U-RemvFRnmWnRDBADa3r4tlbwUFBIUCf7aLdd3sJazE,1239 -django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.po,sha256=V6smnquz_1esdvNi-dmuHzRNXqs-AjfWSKq2NJq2GPY,1469 -django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.mo,sha256=1_yGL68sK0QG_mhwFAVdksiDlB57_1W5QkL7NGGE5L0,1429 -django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.po,sha256=fr8rGQDWgUQSv-ZjXhSAR5P_zWLhQ7bq1cHLKIzY4bY,1649 -django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.mo,sha256=gSqcLKqq8Uc5ZYs8x3gMPIBXmU-uCoO1_yTdKjNEnZA,663 -django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.po,sha256=9J7K6vTsq3MiJfdb0zu_6YPTEm2Xuqrg_6y9OIhD0lU,1125 -django/contrib/contenttypes/locale/km/LC_MESSAGES/django.mo,sha256=BXifukxf48Lr0t0V3Y0GJUMhD1KiHN1wwbueoK0MW1A,678 -django/contrib/contenttypes/locale/km/LC_MESSAGES/django.po,sha256=fTPlBbnaNbLZxjzJutGvqe33t6dWsEKiHQYaw27m7KQ,1123 -django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.mo,sha256=a4sDGaiyiWn-1jFozYI4vdAvuHXrs8gbZErP_SAUk9Y,714 -django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.po,sha256=QDD_q_loZtGRlhmaqgNDtJ_5AjVFQ8fSmypvaWLOwp4,1162 -django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.mo,sha256=N6Keqbx9NmPby_m9jswXWPLTdeeM-_9SQlFbheRzpC8,1127 -django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.po,sha256=bLGMv1dLIEKhsoBfuWXs_FQly0prT4udebB5uu4CexU,1338 -django/contrib/contenttypes/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/contenttypes/locale/lb/LC_MESSAGES/django.po,sha256=dwVKpCRYmXTD9h69v5ivkZe-yFtvdZNZ3VfuyIl4olY,989 -django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.mo,sha256=dGhfE64u9frd0haBj9I-SyDbvUtbp5bF6eKwa1Dbl7M,1147 -django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.po,sha256=ZRyyj9yLNnKOVqX7x3BKwB8_FD-gzPNhkK5sDRS7aic,1417 -django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mo,sha256=4Qk6bGcd2qjhz6j6RYGdB3E7z7X4yVZTH2X-ob7QRYI,1090 -django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po,sha256=22qvaurZjlCA-z3JXBUikzIhAmcmdW9h-pbk0ujvQSg,1299 -django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.mo,sha256=KTFZWm0F4S6lmi1FX76YKOyJqIZN5cTsiTBI_D4ADHs,1258 -django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.po,sha256=mQZosS90S-Bil6-EoGjs9BDWYlvOF6mtUDZ8h9NxEdE,1534 -django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.mo,sha256=rtmLWfuxJED-1KuqkUT8F5CU1KGJP0Of718n2Gl_gI0,1378 -django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.po,sha256=Z-kL9X9CD7rYfa4Uoykye2UgCNQlgyql0HTv1eUXAf4,1634 -django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.mo,sha256=J6kKYjUOsQxptNXDcCaY4d3dHJio4HRibRk3qfwO6Xc,1225 -django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.po,sha256=x8aRJH2WQvMBBWlQt3T3vpV4yHeZXLmRTT1U0at4ZIk,1525 -django/contrib/contenttypes/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/contenttypes/locale/mr/LC_MESSAGES/django.po,sha256=FgZKD9E-By0NztUnBM4llpR59K0MJSIMZIrJYGKDqpc,983 -django/contrib/contenttypes/locale/my/LC_MESSAGES/django.mo,sha256=YYa2PFe9iJygqL-LZclfpgR6rBmIvx61JRpBkKS6Hrs,1554 -django/contrib/contenttypes/locale/my/LC_MESSAGES/django.po,sha256=6F3nXd9mBc-msMchkC8OwAHME1x1O90xrsZp7xmynpU,1732 -django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.mo,sha256=RMxLSKOqQ6omrnSlAoRohWOEC0SBwYwJyO6QGaPo5KU,1081 -django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.po,sha256=xgm6KYjgFPyYM0HXu3qY6uamoyeuhJ8xR_KBWLZ6IY0,1382 -django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.mo,sha256=-zZAn5cex4PkScoZVqS74PUMThJJuovZSk3WUKZ8hnw,1344 -django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.po,sha256=1ZCUkulQ9Gxb50yMKFKWaTJli2SinBeNj0KpXkKpsNE,1519 -django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.mo,sha256=GNmKVTDJDUPkYa8OZCY0FMdE0I-Gz3tXkO8SHRLDM7s,1095 -django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.po,sha256=aP9U2fAeZIOfui-xAUoBqKK02_aYvVqmjSHXQQ5qVKc,1373 -django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.mo,sha256=jfxiglKOxjX2xdbLDnJhujJiGcbDJv3NDcUUCWrZmuU,1054 -django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.po,sha256=c1sz3ssHULL1c5gpbEOy4Xo2Nh0_2ar_Zg4nECouM4k,1299 -django/contrib/contenttypes/locale/os/LC_MESSAGES/django.mo,sha256=QV533Wu-UpjV3XiCe83jlz7XGuwgRviV0ggoeMaIOIY,1116 -django/contrib/contenttypes/locale/os/LC_MESSAGES/django.po,sha256=UZahnxo8z6oWJfEz4JNHGng0EAifXYtJupB6lx0JB60,1334 -django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.mo,sha256=qacd7eywof8rvJpstNfEmbHgvDiQ9gmkcyG7gfato8s,697 -django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.po,sha256=Kq2NTzdbgq8Q9jLLgV-ZJaSRj43D1dDHcRIgNnJXu-s,1145 -django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.mo,sha256=a57HnU25bDdtrep5ksckyx7BsCQSHbBvZ-W3Hp6CVDQ,1251 -django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.po,sha256=KC_XKtt7QieDVfsu-uEY3eT9miIIQfs1Ied7ebQaK7A,1539 -django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.mo,sha256=MjyyKlA75YtEG9m6hm0GxKhU-cF3m1PA_j63BuIPPlE,1125 -django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.po,sha256=X2Rec6LXIqPa9AVqF4J2mzYrwfls1BdUfN8XOe0zkdQ,1379 -django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.mo,sha256=fPCrA5N-k2uOHyZtBVolLM-CiFyv7luskvTKoJiDF4o,1137 -django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.po,sha256=x-dcuvjBVXVe4zBNxd4vbwYAMzeOCNzVFLc7S_te_fI,1414 -django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.mo,sha256=sCthDD10v7GY2cui9Jj9HK8cofVEg2WERCm6aktOM-4,1142 -django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.po,sha256=n-BPEfua0Gd6FN0rsP7qAlTGbQEZ14NnDMA8jI2844Y,1407 -django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.mo,sha256=EYIBQ4DumWdn6zC8Oy2QDdMsdwDZz4patKbuhFxN1AY,1426 -django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.po,sha256=YULjNSTutYL3FhT4njhz9pQiP_xmoAVuJTBb1Hzio04,1728 -django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.mo,sha256=l17JNwlQmm8X-fgAYOhPB2QGLuZwPewUKcWo0xMhI48,1097 -django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.po,sha256=rrW-DlZKHoH5rcu3zIlrlfDZ6Oqxwd-Ojs3nP5Sxkjk,1347 -django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.mo,sha256=sMML-ubI_9YdKptzeri1du8FOdKcEzJbe4Tt0J4ePFI,1147 -django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.po,sha256=0zxiyzRWWDNVpNNLlcwl-OLh5sLukma1vm-kYrGHYrE,1392 -django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.mo,sha256=xXE5L6OmOz3oI9xYKyS8VKb37NDJ8buQOhjwtuMnwNs,1103 -django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.po,sha256=_z4SsvtdEmT91TqVd-GXMzNK86H-6LmnWTUK4ZBi878,1276 -django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.mo,sha256=30cZcBCG80SyqkJnUa6jDLt3zsNQM_QFKMExL_2AFS4,1200 -django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.po,sha256=Z4OrUiZJjXUyezsMCG0EQQy544VjttcSisErfl5R9Do,1449 -django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=vcI1t6JnIHne3zm62a9mK-JsPbNIi7UAJCQoSpK7nYs,1113 -django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.po,sha256=8NppRxgViJC45KSIoKhK-gEsRcv3Bk35DpS1zX_57ig,1362 -django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.mo,sha256=Vxpt3I_YJ8DtIqlRSJAvl8GgQ8LM7mZ-L7QVrilDeqU,1067 -django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.po,sha256=5vvFP5ivC-iPmp5mGx5jmzvVS33tb9vg-KjzUQkb9ZA,1307 -django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.mo,sha256=XLPle0JYPPkmm5xpJRmWztMTF1_3a2ZubWE4ur2sav8,563 -django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.po,sha256=jRc8Eh6VuWgqc4kM-rxjbVE3yV9uip6mOJLdD6yxGLM,1009 -django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.mo,sha256=L3eF4z9QSmIPqzEWrNk8-2uLteQUMsuxiD9VZyRuSfo,678 -django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.po,sha256=iDb9lRU_-YPmO5tEQeXEZeGeFe-wVZy4k444sp_vTgw,1123 -django/contrib/contenttypes/locale/te/LC_MESSAGES/django.mo,sha256=S_UF_mZbYfScD6Z36aB-kwtTflTeX3Wt4k7z_pEcOV8,690 -django/contrib/contenttypes/locale/te/LC_MESSAGES/django.po,sha256=aAGMMoJPg_pF9_rCNZmda5A_TvDCvQfYEL64Xdoa4jo,1135 -django/contrib/contenttypes/locale/th/LC_MESSAGES/django.mo,sha256=qilt-uZMvt0uw-zFz7-eCmkGEx3XYz7NNo9Xbq3s7uI,1186 -django/contrib/contenttypes/locale/th/LC_MESSAGES/django.po,sha256=42F34fNEn_3yQKBBJnCLttNeyktuLVpilhMyepOd6dg,1444 -django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.mo,sha256=97r7jUJMbkhpnk4fEy-sg3oMDQU8N8A76qrXKX7CNxg,1121 -django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.po,sha256=fS_Vgpat2dLaXgpT4bsUPjJx_1B_6vb25qH0vH92ZVk,1355 -django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.mo,sha256=_LQ1N04FgosdDLUYXJOEqpCB2Mg92q95cBRgYPi1MyY,659 -django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.po,sha256=L7wMMpxGnpQiKd_mjv2bJpE2iqCJ8XwiXK0IN4EHSbM,1110 -django/contrib/contenttypes/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/contenttypes/locale/udm/LC_MESSAGES/django.po,sha256=YVyej0nAhhEf7knk4vCeRQhmSQeGZLhMPPXyIyWObnM,977 -django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.mo,sha256=pspQZ5Ppnsu-qsoR7IGqgL_G2cLUzZ2Yo6aQ8GdL2OM,1275 -django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.po,sha256=pBDlyBCEOeDPfKYs-gxtrgd_bwUgwpu4BaYHuYgAPG8,1553 -django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.mo,sha256=OJs_EmDBps-9a_KjFJnrS8IqtJfd25LaSWeyG8u8UfI,671 -django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.po,sha256=f0FnsaAM_qrBuCXzLnkBrW5uFfVc6pUh7S-qp4918Ng,1122 -django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.mo,sha256=kGYgEI1gHkyU4y_73mBJN1hlKC2JujVXMg6iCdWncDg,1155 -django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.po,sha256=RIDUgsElfRF8bvBdUKtshizuMnupdMGAM896s7qZKD4,1439 -django/contrib/contenttypes/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=KTYCw4pEOPOfAObHiyBQTzZBX1mY0r9095QLAZfjvQM,1062 -django/contrib/contenttypes/locale/zh_Hans/LC_MESSAGES/django.po,sha256=bJp1GCxJwVfqD-rMAWTBg9OLIKginTCMs0V6mESrVrc,1353 -django/contrib/contenttypes/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=fPIlKpeLGhOtsbLsJOef5d5Y8jCyT9hFiOfZ1v9yFTQ,1083 -django/contrib/contenttypes/locale/zh_Hant/LC_MESSAGES/django.po,sha256=Jwtnwk0R2c2Kh7KUg0t0GKjQrMO48YUNntbCT6dIHAM,1329 -django/contrib/contenttypes/management/__init__.py,sha256=KKf4YWuuvUAOf5l2Xn5zEIR4WHA8vKQ5R5paVfYAPeM,4857 -django/contrib/contenttypes/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/contenttypes/management/commands/remove_stale_contenttypes.py,sha256=2YgWYGPx8YQPbXuyE_iLNUwvPTczlKTSyNlOqAqFCxg,3340 -django/contrib/contenttypes/migrations/0001_initial.py,sha256=o3bVVr-O_eUNiloAC1z-JIHDoCJQ4ifdA-6DhdVUrp8,1157 -django/contrib/contenttypes/migrations/0002_remove_content_type_name.py,sha256=4h1AUWSWAvwfEMAaopJZce-yNj1AVpCYFAk2E-Ur-wM,1103 -django/contrib/contenttypes/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/flatpages/__init__.py,sha256=pa6Mmr3sfZ2KBkXHAvYIw_haRx8tSqTNZluUKg5zQCk,69 -django/contrib/flatpages/admin.py,sha256=m_TsFRA36bunPrg2dSdxDJpWLfJkiaVmE3kcYAO9trY,654 -django/contrib/flatpages/apps.py,sha256=EMKrGuulQwqXlcGKRvmISVaiqSNVwwUetEeEo3PTjxA,198 -django/contrib/flatpages/forms.py,sha256=nPf6qYRonlEWjWMNwIPP-MH0fp8CbB4KSqtdlOUqM30,2017 -django/contrib/flatpages/middleware.py,sha256=aXeOeOkUmpdkGOyqZnkR-l1VrDQ161RWIWa3WPBhGac,784 -django/contrib/flatpages/models.py,sha256=LDnyMzLbmSmpmEemdgzrx2urg8PtnRgY2jxbC-uQH9g,1483 -django/contrib/flatpages/sitemaps.py,sha256=0WGMLfr61H5aVX1inE4X_BJhx2b_lw4LKMO4OQGiDX4,554 -django/contrib/flatpages/urls.py,sha256=v_bP8Axlf0XLgb2kJVdEPDqW8WY7RkwSwm7_BH_0eWE,179 -django/contrib/flatpages/views.py,sha256=DLrol_x7lYfvd_b8EYgFeOYled3TgSoR-KZOOaTzJAQ,2747 -django/contrib/flatpages/locale/af/LC_MESSAGES/django.mo,sha256=BSKjpE5gwL80eq94I3LQEcOBNZtO24gViYsX0rnAoqo,498 -django/contrib/flatpages/locale/af/LC_MESSAGES/django.po,sha256=oXnvhSmWyQR78N4EdWHNydolwiGFZlugkGBmT0BYPto,1541 -django/contrib/flatpages/locale/ar/LC_MESSAGES/django.mo,sha256=G1GCOfhvPoJA5XpI3hE6zIxyhgec1ZUjHEt4lprfRr4,2475 -django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po,sha256=ZypIMRzRQA72sV4lVB8RVUtLjcmbqhow97-e20R02uk,2732 -django/contrib/flatpages/locale/ast/LC_MESSAGES/django.mo,sha256=4SEsEE2hIZJwQUNs8jDgN6qVynnUYJUIE4w-usHKA6M,924 -django/contrib/flatpages/locale/ast/LC_MESSAGES/django.po,sha256=5UlyS59bVo1lccM6ZgdYSgHe9NLt_WeOdXX-swLKubU,1746 -django/contrib/flatpages/locale/az/LC_MESSAGES/django.mo,sha256=sJvplYk3-3shfvnTKzCiCEQGbCa_aFLatZZHtop_4FI,2208 -django/contrib/flatpages/locale/az/LC_MESSAGES/django.po,sha256=Pn2wkV8ks1JO7GJwsfH1VilE4vS6u6Xd0IC2qaKYPwA,2452 -django/contrib/flatpages/locale/be/LC_MESSAGES/django.mo,sha256=N1snVmwE9oa2Hi_77quF7DhOFJwFNdv07x6pSXF_hKE,2801 -django/contrib/flatpages/locale/be/LC_MESSAGES/django.po,sha256=4iBnHyRJ1XkixqUWrmxfMlmKsqyZYhMb3zsI0aLIJwY,2933 -django/contrib/flatpages/locale/bg/LC_MESSAGES/django.mo,sha256=p3RZmS9PAqdlAmbc7UswSoG0t1eeuXYDp1WZ3mWfFow,2569 -django/contrib/flatpages/locale/bg/LC_MESSAGES/django.po,sha256=DqRp9KTLxks9tNEXs2g_jvIp7dI92jXLkKNDNyLhHac,2779 -django/contrib/flatpages/locale/bn/LC_MESSAGES/django.mo,sha256=2oK2Rm0UtAI7QFRwpUR5aE3-fOltE6kTilsTbah737Y,2988 -django/contrib/flatpages/locale/bn/LC_MESSAGES/django.po,sha256=QrbX69iqXOD6oByLcgPkD1QzAkfthpfTjezIFQ-6kVg,3172 -django/contrib/flatpages/locale/br/LC_MESSAGES/django.mo,sha256=_m3TodHXctSnFhWgDjhjR_UYM_3ubQY3R3I2LzWQlNU,552 -django/contrib/flatpages/locale/br/LC_MESSAGES/django.po,sha256=zU2tcXdz1_jX7J7AVnc0SXPqiZmDQt_qOJHNhJugY_E,1582 -django/contrib/flatpages/locale/bs/LC_MESSAGES/django.mo,sha256=bd7ID7OsEhp57JRw_TXoTwsVQNkFYiR_sxSkgi4WvZU,1782 -django/contrib/flatpages/locale/bs/LC_MESSAGES/django.po,sha256=IyFvI5mL_qesEjf6NO1nNQbRHhCAZQm0UhIpmGjrSwQ,2233 -django/contrib/flatpages/locale/ca/LC_MESSAGES/django.mo,sha256=j1mWP6oP9vPMYYiWzroFogBkdJ44L8vo8a51BlyvnVk,2109 -django/contrib/flatpages/locale/ca/LC_MESSAGES/django.po,sha256=VaR3IToa3T7mKaUkiS7JK_LUmHuHofyAE2WxY9Vae3M,2366 -django/contrib/flatpages/locale/cs/LC_MESSAGES/django.mo,sha256=9n_6uvEk16UHLssYV8HlpcJKar0HnHm0TIURgNJZ-bQ,2165 -django/contrib/flatpages/locale/cs/LC_MESSAGES/django.po,sha256=Y6T7KviH4wdsDZnuwkyswJKEyEwhCU7S5-_NMex9W5s,2380 -django/contrib/flatpages/locale/cy/LC_MESSAGES/django.mo,sha256=zr_2vsDZsrby3U8AmvlJMU3q1U_4IrrTmz6oS29OWtQ,2163 -django/contrib/flatpages/locale/cy/LC_MESSAGES/django.po,sha256=E_NC_wtuhWKYKB3YvYGB9ccJgKI3AfIZlB2HpXSyOsk,2370 -django/contrib/flatpages/locale/da/LC_MESSAGES/django.mo,sha256=7vFgp-kRn7fAnvAWhJFylN6D0SrQi9EB2HFT_FPYVnw,2126 -django/contrib/flatpages/locale/da/LC_MESSAGES/django.po,sha256=x8IOaIO2_-sBInHl6NtwOXK9UjUdha8dxXeB3fMwjxQ,2381 -django/contrib/flatpages/locale/de/LC_MESSAGES/django.mo,sha256=v4pUUVzPH3UBtzBuCBSJsHYzaltnzB-0rI-ls6h1e1M,2216 -django/contrib/flatpages/locale/de/LC_MESSAGES/django.po,sha256=ArWO6LbvSwJmStJLmdUXeXuMS_EtHeQc-4V235941Bk,2378 -django/contrib/flatpages/locale/dsb/LC_MESSAGES/django.mo,sha256=oOMFAVGXlFSVKb7tP5lXzpsa-Oe89kEOrPMw4D94MzI,2238 -django/contrib/flatpages/locale/dsb/LC_MESSAGES/django.po,sha256=3ZUiORps5eyxizvpaZCtEk_QM05vW98VhARAZuL20Z8,2367 -django/contrib/flatpages/locale/el/LC_MESSAGES/django.mo,sha256=pvt5Rt9LI2rMQgw5ewp-0_CB62JGvTlkt53sB27iC8c,2672 -django/contrib/flatpages/locale/el/LC_MESSAGES/django.po,sha256=AibJM9Y833DnSXMriBKsFwNhsw_gEaMWUtnu01KLKzM,2933 -django/contrib/flatpages/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/flatpages/locale/en/LC_MESSAGES/django.po,sha256=hsfxD-TQ_jPyo2ASN8f2Ukhf8HNL_l2zXJBhuLjhfAs,2037 -django/contrib/flatpages/locale/en_AU/LC_MESSAGES/django.mo,sha256=cuifXT2XlF4c_bR6ECRhlraSZyA7q4ZLhUgwvW73miw,486 -django/contrib/flatpages/locale/en_AU/LC_MESSAGES/django.po,sha256=ZMAJRrjovd_cdWvzkuEiJ-9ZU9rqRTwoA3x8uY2khcs,1533 -django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.mo,sha256=7zyXYOsqFkUGxclW-VPPxrQTZKDuiYQ7MQJy4m8FClo,1989 -django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.po,sha256=oHrBd6lVnO7-SdnO-Taa7iIyiqp_q2mQZjkuuU3Qa_s,2232 -django/contrib/flatpages/locale/eo/LC_MESSAGES/django.mo,sha256=WzjywoFu5mUt8Kpy6Xsbu1nn9fb4kUOZ58v81JyBsFE,2159 -django/contrib/flatpages/locale/eo/LC_MESSAGES/django.po,sha256=ydx_XVE9E9qPCnYDFa3xSoRiLNxolyTovaaZoFT7BWs,2380 -django/contrib/flatpages/locale/es/LC_MESSAGES/django.mo,sha256=SrjGOoAsyqXCSt3oLJMyodrJohU3Enlpbnd7g3ufvdg,2131 -django/contrib/flatpages/locale/es/LC_MESSAGES/django.po,sha256=DZnMRB9gSqjxTiywwOsLMTCCDfCoKphQnywWwqIuhVE,2448 -django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.mo,sha256=Mo9LtJd1QNX-GR6qjIluDEHmGF-djq7NXMIebz01uBE,2128 -django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.po,sha256=kGM0_ssp3T5xAPZOgiJ6xtbwtOtoaon1_AFKmaV61VQ,2289 -django/contrib/flatpages/locale/es_CO/LC_MESSAGES/django.mo,sha256=jt8wzeYky5AEnoNuAv8W4nGgd45XsMbpEdRuLnptr3U,2140 -django/contrib/flatpages/locale/es_CO/LC_MESSAGES/django.po,sha256=xrbAayPoxT7yksXOGPb-0Nc-4g14UmWANaKTD4ItAFA,2366 -django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.mo,sha256=Y5IOKRzooJHIhJzD9q4PKOe39Z4Rrdz8dBKuvmGkqWU,2062 -django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.po,sha256=Y-EXhw-jISttA9FGMz7gY_kB-hQ3wEyKEaOc2gu2hKQ,2246 -django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.mo,sha256=EI6WskepXUmbwCPBNFKqLGNcWFVZIbvXayOHxOCLZKo,2187 -django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.po,sha256=ipG6a0A2d0Pyum8GcknA-aNExVLjSyuUqbgHM9VdRQo,2393 -django/contrib/flatpages/locale/et/LC_MESSAGES/django.mo,sha256=1pqbiN3UlyuN26dXLazlUUZudJEjyjaPEb2D2jejd38,2095 -django/contrib/flatpages/locale/et/LC_MESSAGES/django.po,sha256=4yQAnUtnnqzAjRAAZD95Z69gLqkXgDVko4xeg24dOaU,2302 -django/contrib/flatpages/locale/eu/LC_MESSAGES/django.mo,sha256=rxbI25MXmkDh7FbLDiXBzjkw-6nF1eBKldVjgvMSKEs,2099 -django/contrib/flatpages/locale/eu/LC_MESSAGES/django.po,sha256=XT4Br06IcCptR5w5Mbtw-e_sOKvSLJFCq5Rg0M-jl6g,2326 -django/contrib/flatpages/locale/fa/LC_MESSAGES/django.mo,sha256=Zc-OsiwBJYrvVY6tefxec0VC97uD8__foLTLT_V0rCY,2459 -django/contrib/flatpages/locale/fa/LC_MESSAGES/django.po,sha256=H48bg8qlnzAQn22fEYZbYV_PhTiTao7KAezN5BekDyE,2717 -django/contrib/flatpages/locale/fi/LC_MESSAGES/django.mo,sha256=K_-A8ccHnFcWnViuPAKR7IxhcG0YWNG7iCKYOxxXgMg,2127 -django/contrib/flatpages/locale/fi/LC_MESSAGES/django.po,sha256=-Ik04K4va6HcOoG8bWukAsHThf3IWREZGeRzewYfC7o,2366 -django/contrib/flatpages/locale/fr/LC_MESSAGES/django.mo,sha256=tkV7tWmHWkJdlD62Xd8qdBhIvYO2kTG1ueQqE-OTg_4,2265 -django/contrib/flatpages/locale/fr/LC_MESSAGES/django.po,sha256=ZweF8qPKLnPd5LZhj0YyiMLT2vKnzZqkn_0Gok-h_9c,2521 -django/contrib/flatpages/locale/fy/LC_MESSAGES/django.mo,sha256=DRsFoZKo36F34XaiQg_0KUOr3NS_MG3UHptzOI4uEAU,476 -django/contrib/flatpages/locale/fy/LC_MESSAGES/django.po,sha256=9JIrRVsPL1m0NPN6uHiaAYxJXHp5IghZmQhVSkGo5g8,1523 -django/contrib/flatpages/locale/ga/LC_MESSAGES/django.mo,sha256=KKvDhZULHQ4JQ_31ltLkk88H2BKUbBXDQFSvdKFqjn8,2191 -django/contrib/flatpages/locale/ga/LC_MESSAGES/django.po,sha256=Yat7oU2XPQFQ8vhNq1nJFAlX2rqfxz4mjpU5TcnaYO8,2400 -django/contrib/flatpages/locale/gd/LC_MESSAGES/django.mo,sha256=FC4qtdjuLYBtEtORo74AaRAQF4FUdj4RWg6Bn1wpY3c,2295 -django/contrib/flatpages/locale/gd/LC_MESSAGES/django.po,sha256=SYC8csqVmTyI1OYFj41YSHcm_WEo0O8BK_VbIBC1Cng,2423 -django/contrib/flatpages/locale/gl/LC_MESSAGES/django.mo,sha256=VXyPsc6cXB97dJJFGfD8Oh2lYpn8TFYjIOeFUQeYpVU,2039 -django/contrib/flatpages/locale/gl/LC_MESSAGES/django.po,sha256=MzE7lepmRu60wy9gn6Wxx-LtKIO9JwScSdJ3SyLRU9s,2366 -django/contrib/flatpages/locale/he/LC_MESSAGES/django.mo,sha256=M5oju900kd_9dwqlSx9HNke8y0Jc1o3e1EC0bm4wDHc,2275 -django/contrib/flatpages/locale/he/LC_MESSAGES/django.po,sha256=BpycciP76QNqeVXjqWPmqv21MI4zX4ruJpCNX1S1BVg,2494 -django/contrib/flatpages/locale/hi/LC_MESSAGES/django.mo,sha256=w29ukoF48C7iJ6nE045YoWi7Zcrgu_oXoxT-r6gcQy8,2770 -django/contrib/flatpages/locale/hi/LC_MESSAGES/django.po,sha256=nXq5y1FqMGVhpXpQVdV3uU5JcUtBc2BIrf-n__C2q30,3055 -django/contrib/flatpages/locale/hr/LC_MESSAGES/django.mo,sha256=Mt4gpBuUXvcBl8K714ls4PimHQqee82jFxY1BEAYQOE,2188 -django/contrib/flatpages/locale/hr/LC_MESSAGES/django.po,sha256=ZbUMJY6a-os-xDmcDCJNrN4-YqRe9b_zJ4V5gt2wlGI,2421 -django/contrib/flatpages/locale/hsb/LC_MESSAGES/django.mo,sha256=I6UXOeEqgMtWQ_A7NFAKO-EPJ-9CtPkWfVVaoi9tAYY,2230 -django/contrib/flatpages/locale/hsb/LC_MESSAGES/django.po,sha256=d1GMjWo_zvZF12npVhHcYQpiDdjzrThsLcNrbGxRHOQ,2359 -django/contrib/flatpages/locale/hu/LC_MESSAGES/django.mo,sha256=S_cyw_dLh5sDX50qBwW7Zx4dieBsDV0JFbbGfbNzbNA,2147 -django/contrib/flatpages/locale/hu/LC_MESSAGES/django.po,sha256=dtTflYcyVqoGY4m6OwZVQwIsjH_o1ONrvl1oYvfoXGg,2364 -django/contrib/flatpages/locale/ia/LC_MESSAGES/django.mo,sha256=bochtCPlc268n0WLF0bJtUUT-XveZLPOZPQUetnOWfU,500 -django/contrib/flatpages/locale/ia/LC_MESSAGES/django.po,sha256=gOJ850e8sFcjR2G79zGn3_0-9-KSy591i7ketBRFjyw,1543 -django/contrib/flatpages/locale/id/LC_MESSAGES/django.mo,sha256=In75DDfKVuNVdDttaXMrI1CgOY6r3dcqM8cTiEhvRJU,2085 -django/contrib/flatpages/locale/id/LC_MESSAGES/django.po,sha256=_tD-pxVJDZBMytzB4G7MHCrTnkwm998u7Hl4ak3fSXw,2309 -django/contrib/flatpages/locale/io/LC_MESSAGES/django.mo,sha256=N8R9dXw_cnBSbZtwRbX6Tzw5XMr_ZdRkn0UmsQFDTi4,464 -django/contrib/flatpages/locale/io/LC_MESSAGES/django.po,sha256=_pJveonUOmMu3T6WS-tV1OFh-8egW0o7vU3i5YqgChA,1511 -django/contrib/flatpages/locale/is/LC_MESSAGES/django.mo,sha256=11iv2x1miXJ_z-eeP8PW6WSgXVe6Xa9SZc0GZCou6e0,2113 -django/contrib/flatpages/locale/is/LC_MESSAGES/django.po,sha256=6w9mwwDYZbWElNI6W25XmlmYvre7hvz-WZW1iiHeXXQ,2326 -django/contrib/flatpages/locale/it/LC_MESSAGES/django.mo,sha256=-k6ntTZ3GIGMy8Y8qO33vI8OQb637Gyf4PZjv4nQtmg,2099 -django/contrib/flatpages/locale/it/LC_MESSAGES/django.po,sha256=gB7uHMzrbBgOy3SXO2lp7Z1f1E5xEcSLQ6doVWo-Kq4,2284 -django/contrib/flatpages/locale/ja/LC_MESSAGES/django.mo,sha256=Xzvu1WllXyp-WQsDHaoagMUDgc6KCjJ_4y9dqsK05VU,2303 -django/contrib/flatpages/locale/ja/LC_MESSAGES/django.po,sha256=nC-PDQ8ec_H9bqSmY9n7YgN2BJl0fnFz_xLvRrmrOig,2529 -django/contrib/flatpages/locale/ka/LC_MESSAGES/django.mo,sha256=R4OSbZ-lGxMdeJYsaXVXpo6-KSZWeKPuErKmEsUvEQE,3022 -django/contrib/flatpages/locale/ka/LC_MESSAGES/django.po,sha256=YCVnkX9uayvAQjYy_2jS7fYb36meoMJTKSc2lfoUbeM,3301 -django/contrib/flatpages/locale/kk/LC_MESSAGES/django.mo,sha256=lF8VW--EOBeVKjUWE3KEczl03OJ4-86Ik7jyzaP6li4,2494 -django/contrib/flatpages/locale/kk/LC_MESSAGES/django.po,sha256=UIq5mqQ-Zr5GEuAFDcskzfRcIfOdgI30jV1-BRCEVIg,2697 -django/contrib/flatpages/locale/km/LC_MESSAGES/django.mo,sha256=FYRfhNSqBtavYb10sHZNfB-xwLwdZEfVEzX116nBs-k,1942 -django/contrib/flatpages/locale/km/LC_MESSAGES/django.po,sha256=d2AfbR78U0rJqbFmJQvwiBl_QvYIeSwsPKEnfYM4JZA,2471 -django/contrib/flatpages/locale/kn/LC_MESSAGES/django.mo,sha256=n5HCZEPYN_YIVCXrgA1qhxvfhZtDbhfiannJy5EkHkI,1902 -django/contrib/flatpages/locale/kn/LC_MESSAGES/django.po,sha256=o9xnLjwDw7L49Mkyr8C6aQZ13Yq5MYx1JYXEtcIsiWU,2437 -django/contrib/flatpages/locale/ko/LC_MESSAGES/django.mo,sha256=joCZXqODbZSmwhc5j9NAzsnKYBom-rAg_PqvxLNx0BA,2183 -django/contrib/flatpages/locale/ko/LC_MESSAGES/django.po,sha256=CI4VoUAU2FgPi9fN3igFE4R1Wm0OffrbI5gQ_Cs50pU,2497 -django/contrib/flatpages/locale/lb/LC_MESSAGES/django.mo,sha256=Wkvlh5L_7CopayfNM5Z_xahmyVje1nYOBfQJyqucI_0,502 -django/contrib/flatpages/locale/lb/LC_MESSAGES/django.po,sha256=gGeTuniu3ZZ835t9HR-UtwCcd2s_Yr7ihIUm3jgQ7Y0,1545 -django/contrib/flatpages/locale/lt/LC_MESSAGES/django.mo,sha256=rv76BjAoYYM5OlPpXk1QUvRo9TSmLkUnynY7ySWQ1cY,2272 -django/contrib/flatpages/locale/lt/LC_MESSAGES/django.po,sha256=L3El0c8USYE6T4Wm4hZr-6hFOFeU90NJwtPY4-KQw0s,2529 -django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mo,sha256=fYcpSppdN1c6qe1OGc5OObIT3ojSxJ-HiUJ6KDE98K4,2190 -django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po,sha256=GEzjTZID0XbIwVuxtb_RFODLK4G5plSra8FD2If3wpw,2351 -django/contrib/flatpages/locale/mk/LC_MESSAGES/django.mo,sha256=55H8w6fB-B-RYlKKkGw3fg2m-djxUoEp_XpupK-ZL70,2699 -django/contrib/flatpages/locale/mk/LC_MESSAGES/django.po,sha256=OhHJ5OVWb0jvNaOB3wip9tSIZ1yaPPLkfQR--uUEyUI,2989 -django/contrib/flatpages/locale/ml/LC_MESSAGES/django.mo,sha256=b2-4gs63dCf0Twzj9HuYlac89PnnHc27C4ygeAZ7FZA,3228 -django/contrib/flatpages/locale/ml/LC_MESSAGES/django.po,sha256=4u8TlRINfXHYSfxQkU2w0qzFJhP-iuvDVgDbcaCcM80,3461 -django/contrib/flatpages/locale/mn/LC_MESSAGES/django.mo,sha256=Ogm4nShs2OSRqtHyfxpTa88HBHUDVAHeUZeScxk1cKw,2600 -django/contrib/flatpages/locale/mn/LC_MESSAGES/django.po,sha256=FwnRhnzmufcD50ua9K3hASBMlMXAG4uGZs5BskzbU3g,2830 -django/contrib/flatpages/locale/mr/LC_MESSAGES/django.mo,sha256=GvSfsp0Op7st6Ifd8zp8Cj4tTHoFMltQb4p64pebrqI,468 -django/contrib/flatpages/locale/mr/LC_MESSAGES/django.po,sha256=sayU0AfVaSFpBj0dT32Ri55LRafQFUHLi03K06kI7gc,1515 -django/contrib/flatpages/locale/my/LC_MESSAGES/django.mo,sha256=OcbiA7tJPkyt_WNrqyvoFjHt7WL7tMGHV06AZSxzkho,507 -django/contrib/flatpages/locale/my/LC_MESSAGES/django.po,sha256=EPWE566Vn7tax0PYUKq93vtydvmt-A4ooIau9Cwcdfc,1550 -django/contrib/flatpages/locale/nb/LC_MESSAGES/django.mo,sha256=kKYaglGpmMbp6txY0IAFusugcXp_JKhJx2k_8kgqagE,2092 -django/contrib/flatpages/locale/nb/LC_MESSAGES/django.po,sha256=mNXJFfnCRfH4FwvEQokXLntyhha9I-vZ98L5Aj5stWk,2374 -django/contrib/flatpages/locale/ne/LC_MESSAGES/django.mo,sha256=gDZKhcku1NVlSs5ZPPupc7RI8HOF7ex0R4Rs8tMmrYE,1500 -django/contrib/flatpages/locale/ne/LC_MESSAGES/django.po,sha256=GWlzsDaMsJkOvw2TidJOEf1Fvxx9WxGdGAtfZIHkHwk,2178 -django/contrib/flatpages/locale/nl/LC_MESSAGES/django.mo,sha256=u0BmOl8D3l0MLNM0zsFIA2i2XyiOXDHg5ZJdkmsfm7Q,2115 -django/contrib/flatpages/locale/nl/LC_MESSAGES/django.po,sha256=ybQ5HXn9NkjatZJvQkcUnPdBQ7KTCHJsfwPe66lIZnY,2473 -django/contrib/flatpages/locale/nn/LC_MESSAGES/django.mo,sha256=A50zQJ-0YYPjPCeeEa-gwqA2N5eON13YW8SJZvtJBZc,1693 -django/contrib/flatpages/locale/nn/LC_MESSAGES/django.po,sha256=H5hnBsH3sUdlPkMjxiqNnh8izcrTSAs6o-ywlNCTKtw,2119 -django/contrib/flatpages/locale/os/LC_MESSAGES/django.mo,sha256=cXGTA5M229UFsgc7hEiI9vI9SEBrNQ8d3A0XrtazO6w,2329 -django/contrib/flatpages/locale/os/LC_MESSAGES/django.po,sha256=m-qoTiKePeFviKGH1rJRjZRH-doJ2Fe4DcZ6W52rG8s,2546 -django/contrib/flatpages/locale/pa/LC_MESSAGES/django.mo,sha256=69_ZsZ4nWlQ0krS6Mx3oL6c4sP5W9mx-yAmOhZOnjPU,903 -django/contrib/flatpages/locale/pa/LC_MESSAGES/django.po,sha256=N6gkoRXP5MefEnjywzRiE3aeU6kHQ0TUG6IGdLV7uww,1780 -django/contrib/flatpages/locale/pl/LC_MESSAGES/django.mo,sha256=T_OGt7vhizxrtAcSWmBLL6FUrWe4kt2oJes0R2X6y0k,2302 -django/contrib/flatpages/locale/pl/LC_MESSAGES/django.po,sha256=y3NQanfR8fBGD87ukbs9GRCCzqBZgnvYuigQrzEo_Zw,2562 -django/contrib/flatpages/locale/pt/LC_MESSAGES/django.mo,sha256=xD2pWdS3XMg7gAqBrUBmCEXFsOzEs0Npe8AJnlpueRY,2115 -django/contrib/flatpages/locale/pt/LC_MESSAGES/django.po,sha256=-K2jipPUWjXpfSPq3upnC_bvtaRAeOw0OLRFv03HWFY,2326 -django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.mo,sha256=3HkwLPl8gJx5NysmUHdIY2HaqAmhYtq33HKhCN7ht0M,2130 -django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.po,sha256=nCm3nt3DT5r-Dl8QUsgqPRJULNs0H8jFk9Ba_yL6N3E,2584 -django/contrib/flatpages/locale/ro/LC_MESSAGES/django.mo,sha256=nMOBt3XPjuoBGujcURWhYAyZVT7_5X0EEnbaFUWTu3M,2197 -django/contrib/flatpages/locale/ro/LC_MESSAGES/django.po,sha256=8td78SC46GvgmjsoHP_bsB_rYkOsfCfSeTc-Ib_F-KQ,2460 -django/contrib/flatpages/locale/ru/LC_MESSAGES/django.mo,sha256=KLrfdIDEPg_YqAiMIozJna_5UORc1VtIqQdsRiBiBa4,2741 -django/contrib/flatpages/locale/ru/LC_MESSAGES/django.po,sha256=sJrfCiup7Jt-FSZgpe9ulDWjv1BBjJf9A8R3r-nO-eQ,3029 -django/contrib/flatpages/locale/sk/LC_MESSAGES/django.mo,sha256=fah0acDTuIuhH3mfTJOKgHj7cIOD1EjYKVjKNOW6UAY,2155 -django/contrib/flatpages/locale/sk/LC_MESSAGES/django.po,sha256=5G2EKb5cvzJFGtITe8XUaRHOhojdCNH4Fjg8j24qtCs,2367 -django/contrib/flatpages/locale/sl/LC_MESSAGES/django.mo,sha256=MBjwhw6wppQUl0Lb_rShXZj_Sq-JLSkdYU5Xhi0OtYY,2173 -django/contrib/flatpages/locale/sl/LC_MESSAGES/django.po,sha256=6zbOXzkLTsdWRKAhuLzBVBc53n6MQKpvOeHw4cRrAlc,2400 -django/contrib/flatpages/locale/sq/LC_MESSAGES/django.mo,sha256=XZyziioVIY30Evbjp4CEZM3wrdfkz1i7ttY2rsZ2Yt0,2181 -django/contrib/flatpages/locale/sq/LC_MESSAGES/django.po,sha256=JWg31JWs6D9N3C2ZhTFOWrKHml1qEo8lJ7_8GV_ECzM,2353 -django/contrib/flatpages/locale/sr/LC_MESSAGES/django.mo,sha256=mnUUlaDt-hkiJ7orA11ULhHyUk9AKCP_JiezKE1b6fI,2513 -django/contrib/flatpages/locale/sr/LC_MESSAGES/django.po,sha256=Mvp8LVG262rcobi4IPSi8Hh6-osv6MI3hCuAPYC_vhw,2763 -django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=9iKmAQk1hlW0W_BmRr4_hSiGd9RdwiDZFS4giqW7On8,2125 -django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.po,sha256=Mr83YokpIM_KFfcRmMhaBov9MmkR0yMrHhwWFZmChos,2378 -django/contrib/flatpages/locale/sv/LC_MESSAGES/django.mo,sha256=j827YPTO2kPrexfXi28gRnfghHuK7cvy5DT6SAvFWAQ,2132 -django/contrib/flatpages/locale/sv/LC_MESSAGES/django.po,sha256=XSfmwVTEukv3zW4_1noCiYGFc4rabIWX-Vngo-Vd06k,2372 -django/contrib/flatpages/locale/sw/LC_MESSAGES/django.mo,sha256=Lhf99AGmazKJHzWk2tkGrMInoYOq0mtdCd8SGblnVCQ,1537 -django/contrib/flatpages/locale/sw/LC_MESSAGES/django.po,sha256=cos3eahuznpTfTdl1Vj_07fCOSYE8C9CRYHCBLYZrVw,1991 -django/contrib/flatpages/locale/ta/LC_MESSAGES/django.mo,sha256=nNuoOX-FPAmTvM79o7colM4C7TtBroTFxYtETPPatcQ,1945 -django/contrib/flatpages/locale/ta/LC_MESSAGES/django.po,sha256=XE4SndPZPLf1yXGl5xQSb0uor4OE8CKJ0EIXBRDA3qU,2474 -django/contrib/flatpages/locale/te/LC_MESSAGES/django.mo,sha256=bMxhDMTQc_WseqoeqJMCSNy71o4U5tJZYgD2G0p-jD0,1238 -django/contrib/flatpages/locale/te/LC_MESSAGES/django.po,sha256=tmUWOrAZ98B9T6Cai8AgLCfb_rLeoPVGjDTgdsMOY1Y,2000 -django/contrib/flatpages/locale/th/LC_MESSAGES/django.mo,sha256=mct17_099pUn0aGuHu8AlZG6UqdKDpYLojqGYDLRXRg,2698 -django/contrib/flatpages/locale/th/LC_MESSAGES/django.po,sha256=PEcRx5AtXrDZvlNGWFH-0arroD8nZbutdJBe8_I02ag,2941 -django/contrib/flatpages/locale/tr/LC_MESSAGES/django.mo,sha256=Mlha5uTnMJybOxODh03SXHnOc9ORncJ5fSCKrAuaZKw,2136 -django/contrib/flatpages/locale/tr/LC_MESSAGES/django.po,sha256=Bn8ASUcnuOWD8YNEgjoZ7GU_WzhCYKuAG6WUP-WAB-A,2383 -django/contrib/flatpages/locale/tt/LC_MESSAGES/django.mo,sha256=9RfCKyn0ZNYsqLvFNmY18xVMl7wnmDq5uXscrsFfupk,2007 -django/contrib/flatpages/locale/tt/LC_MESSAGES/django.po,sha256=SUwalSl8JWI9tuDswmnGT8SjuWR3DQGND9roNxJtH1o,2402 -django/contrib/flatpages/locale/udm/LC_MESSAGES/django.mo,sha256=7KhzWgskBlHmi-v61Ax9fjc3NBwHB17WppdNMuz-rEc,490 -django/contrib/flatpages/locale/udm/LC_MESSAGES/django.po,sha256=zidjP05Hx1OpXGqWEmF2cg9SFxASM4loOV85uW7zV5U,1533 -django/contrib/flatpages/locale/uk/LC_MESSAGES/django.mo,sha256=TnZ0ya0EGbkIFAcZFW-YVBOiiwlxg9Ci9Q8Ud9_ZbgI,2624 -django/contrib/flatpages/locale/uk/LC_MESSAGES/django.po,sha256=5deZ17O4Gtj1UG6Edzj7HJoLiJfA4fV_oNZQSUtVfRY,2897 -django/contrib/flatpages/locale/ur/LC_MESSAGES/django.mo,sha256=Li4gVdFoNOskGKAKiNuse6B2sz6ePGqGvZu7aGXMNy0,1976 -django/contrib/flatpages/locale/ur/LC_MESSAGES/django.po,sha256=hDasKiKrYov9YaNIHIpoooJo0Bzba___IuN2Hl6ofSc,2371 -django/contrib/flatpages/locale/vi/LC_MESSAGES/django.mo,sha256=FsFUi96oGTWGlZwM4qSMpuL1M2TAxsW51qO70TrybSM,1035 -django/contrib/flatpages/locale/vi/LC_MESSAGES/django.po,sha256=ITX3MWd7nlWPxTCoNPl22_OMLTt0rfvajGvTVwo0QC8,1900 -django/contrib/flatpages/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=4PBYHqvZ8tsWOppfMjHvA4fhchWqPSJdaYm96_Xu734,1994 -django/contrib/flatpages/locale/zh_Hans/LC_MESSAGES/django.po,sha256=2z96jKF7PQrb2IXZO1p2Ta77e95vA-epdnB3wK3wcYo,2279 -django/contrib/flatpages/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=a-KLBISo2n7mn10SuNfT0K883RTjKjPYCpHCAivUz18,2053 -django/contrib/flatpages/locale/zh_Hant/LC_MESSAGES/django.po,sha256=GtvYArHRgiEQo5KSIYd4lsOeHCrXkWaZIiKFH4m1peM,2283 -django/contrib/flatpages/migrations/0001_initial.py,sha256=dLSlPpjfc6jMKhxYPsw6yKohxn4ejRXVOJ1VyJf12r4,1710 -django/contrib/flatpages/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/flatpages/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/flatpages/templatetags/flatpages.py,sha256=AH29WWZNLWH2B2GMt7cHoN9-Bmxn5k1w9Qi48Uhn-kc,3576 -django/contrib/gis/__init__.py,sha256=GTSQJbKqQkNiljWZylYy_ofRICJeqIkfqmnC9ZdxZ2I,57 -django/contrib/gis/apps.py,sha256=wEquhS1IKyUphVzs9QL4J-94onezMkC5tK_WkrUEa3o,396 -django/contrib/gis/feeds.py,sha256=vCYhNC7qRvPIPGLw8GnAqi-c1SCwQJlwuBtZ36n7LSY,5733 -django/contrib/gis/geometry.py,sha256=sTXZdh3D1UGGDBP-WZ2jvLUVstcJ_2Kn1_PlKJshNDo,677 -django/contrib/gis/measure.py,sha256=BLWTkDMMunvaN9lR8QDujmKOxUyhBQKy10Auo0npDaQ,11948 -django/contrib/gis/ptr.py,sha256=3YoUTosG8oZ2comaW7OczuCtAQMyioRPjDjbIqs0gLI,1276 -django/contrib/gis/shortcuts.py,sha256=fHf3HYP6MP8GeuBW6G3y6d30Mjxa6IL2xtmblDjS8k4,1027 -django/contrib/gis/views.py,sha256=GpOJ8W5gk-xbB8y3wPe2dvoVutPKZqswhcMWCETBnx0,698 -django/contrib/gis/admin/__init__.py,sha256=Hni2JCw5ihVuor2HupxDffokiBOG11tu74EcKhiO89w,486 -django/contrib/gis/admin/options.py,sha256=TBV8szg0bCDSYfYupX_wwPf55pBo-8k_KfuM5FUV8vU,5330 -django/contrib/gis/admin/widgets.py,sha256=_X3Li-k9q0m7soBvu0Vu3jwwmODZWTx9A3IswYKeXLM,4720 -django/contrib/gis/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/utils.py,sha256=y4q0N0oDplot6dZQIFnjGPqVsTiGyLTmEMt5-xj-2b4,784 -django/contrib/gis/db/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/base/adapter.py,sha256=gzUjdM_lU9pBK3NlrX_Fx1W96TT1cYJdWZjhV7eQZ4s,482 -django/contrib/gis/db/backends/base/features.py,sha256=F4Xhc-OSHsV-IjB2PbcU_DcVmRITXYnOe2xgXOj_iHo,3406 -django/contrib/gis/db/backends/base/models.py,sha256=vkDweNsExmKWkHNSae9G6P-fT-SMdIgHZ85i31ihXg0,3962 -django/contrib/gis/db/backends/base/operations.py,sha256=v3jyAGBz8oqtShYzvoYLa8oyWjmKcwl-HQB-usnPT8w,6321 -django/contrib/gis/db/backends/mysql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/mysql/base.py,sha256=rz8tnvXJlY4V6liWxYshuxQE-uTNuKSBogCz_GtXoaY,507 -django/contrib/gis/db/backends/mysql/features.py,sha256=zyl131i6rwEqn3prTzMMOgy7AuUfcCCNx4lKj9YmXQ4,756 -django/contrib/gis/db/backends/mysql/introspection.py,sha256=-Ff3nDRI7Rz3Cc33UlD0TgajjNH5rde9u0SKTMwuAUw,1771 -django/contrib/gis/db/backends/mysql/operations.py,sha256=RRD37VSAMHbVoBfU7TA1LI_9x4Wox8Yw_Cw0Evj3tnE,4077 -django/contrib/gis/db/backends/mysql/schema.py,sha256=I8eJcKXqiyv15ATHLs5qVsHfWDE07lf0_-iaNdGv0ew,2890 -django/contrib/gis/db/backends/oracle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/oracle/adapter.py,sha256=y9ewCXAoQZ4iXCHzf_bsRwSXpCHdK9HJyUZy_1AiA40,1872 -django/contrib/gis/db/backends/oracle/base.py,sha256=NQYlEvE4ioobvMd7u2WC7vMtDiRq_KtilGprD6qfJCo,516 -django/contrib/gis/db/backends/oracle/features.py,sha256=lHjxvF4bQqlv8VQGgXhCNrfnDgbUUm6GwjYeva4HKMc,420 -django/contrib/gis/db/backends/oracle/introspection.py,sha256=NrjdXhbXbEtYEYQfohbBlxD1pMlhmcW44S_z_ZL09Ns,1839 -django/contrib/gis/db/backends/oracle/models.py,sha256=qn2TayTuC67MD7gEZo954DKa5ddB9CNS4rTkXkdXo8E,2084 -django/contrib/gis/db/backends/oracle/operations.py,sha256=wMg1U6JAJga-n_16Ht-CCsngxi4I2xnozNao8ye25oE,8269 -django/contrib/gis/db/backends/oracle/schema.py,sha256=wnb56CJ9Er40E4Yw7RK1hOOYZAHRJJFbNGNK9E9IHRk,3916 -django/contrib/gis/db/backends/postgis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/postgis/adapter.py,sha256=Qa1z5H2p2iDegEmuQDH_yUR8sbmYvg1S51F7BArng7g,2154 -django/contrib/gis/db/backends/postgis/base.py,sha256=sFCNoMHRzd-a_MRc9hv-tyVHEODmGveyIopbP6CTPCg,937 -django/contrib/gis/db/backends/postgis/const.py,sha256=a536866Z3EPWtcjYUXewOe0QjyfFIhxRTk_tFmRu1NA,1484 -django/contrib/gis/db/backends/postgis/features.py,sha256=iBZqX6o1YBrmw5pSUYeft-ga6FGa05J-9ADFNsRtLgk,422 -django/contrib/gis/db/backends/postgis/introspection.py,sha256=EMl6H0OOQzzKLMKDOuMQXwaxo6S0JMQ4WRmynFcmxEA,5410 -django/contrib/gis/db/backends/postgis/models.py,sha256=EE3RLh8ywcJ7NAYhPAQbORChwsgntssvDqXkLxDGR2A,1962 -django/contrib/gis/db/backends/postgis/operations.py,sha256=r0RfufIz-seq2JPpzdiz_lEy5Jrw9wYrL9dMbkpnPqA,15946 -django/contrib/gis/db/backends/postgis/pgraster.py,sha256=xo7S1sR_xaaUGCZOcZlNriSLb_Rw7yTkPHgcy-9o7Xo,4586 -django/contrib/gis/db/backends/postgis/schema.py,sha256=8OLvoGWRnm8WNhVzfd_4hk58I_IErPMdvswL2D4DG2I,2647 -django/contrib/gis/db/backends/spatialite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/spatialite/adapter.py,sha256=y74p_UEgLtoYjNZEi72mwcJOh_b-MzJ7sZd68WJXBiY,317 -django/contrib/gis/db/backends/spatialite/base.py,sha256=UeWmlPtr1VUZgogPV-S-poAds4hgcGcrAhIBzery3f4,2875 -django/contrib/gis/db/backends/spatialite/client.py,sha256=NsqD2vAnfjqn_FbQnCQeAqbGyZf9oa6gl7EPsMTPf8c,138 -django/contrib/gis/db/backends/spatialite/features.py,sha256=UcNZz6Pn5ULxxafA35EqapaopfrG1A77LDfadKUuwX0,783 -django/contrib/gis/db/backends/spatialite/introspection.py,sha256=hfvLrbpXfCJaEHnajPR4UNS69bHL_WGvQi6s0vYsy0A,3169 -django/contrib/gis/db/backends/spatialite/models.py,sha256=Im-NSbDbUMjvZgZpABrOMuKqmygbcKxTZv0k1YZf1gE,1890 -django/contrib/gis/db/backends/spatialite/operations.py,sha256=nnET48MGuG6ZP2YUVJaVYvlEtdNbm-MTjvuCPIO-BGY,8309 -django/contrib/gis/db/backends/spatialite/schema.py,sha256=WLvCcCOqdTcBmsjaBNt15YwVzE05vXzQVvfGva6q1Xo,6838 -django/contrib/gis/db/models/__init__.py,sha256=BR3kQAefIv4O1NksiVCUShwlSO4OCNoUGan6dCRGIyU,817 -django/contrib/gis/db/models/aggregates.py,sha256=6pu08PWnXFhFe2yWOoaBKVk87pcIm5LSKSlIlM3hJ24,2583 -django/contrib/gis/db/models/fields.py,sha256=dXgNMhVzzoqMxrTv8lOb-7yxBVX-jr1CzxzuKk9gRFQ,13514 -django/contrib/gis/db/models/functions.py,sha256=1mpm9lPWFUmZoF1EsFYKQJlYPql6R8n5TiDG7R6giJo,16264 -django/contrib/gis/db/models/lookups.py,sha256=vmQVxVe62O0hcTIsd-03bQl2R7JdwYx6Fzz4MMKa7g8,10878 -django/contrib/gis/db/models/proxy.py,sha256=F_y7gVePcxpywNxMMEzS0A_t4LCbkhfrOllQZ0ZDPgU,3172 -django/contrib/gis/db/models/sql/__init__.py,sha256=oYJYL-5DAO-DIcpIQ7Jmeq_cuKapRB83V1KLVIs_5iU,139 -django/contrib/gis/db/models/sql/conversion.py,sha256=gG1mTUWb33YK_Uf1ZJRg5MRhkCTLtgajD3xxi7thODA,2400 -django/contrib/gis/forms/__init__.py,sha256=fREam1OSkDWr9ugUMNZMFn8Y9TufpRCn3Glj14DTMbQ,298 -django/contrib/gis/forms/fields.py,sha256=0cXtGt9PdutO4Ouk-q6qddReN2C-64lFSUPfuHqTvco,4114 -django/contrib/gis/forms/widgets.py,sha256=Lt4WZC58wtrZw8BCg-_1exsaocMujJC4m47EusatfwI,3515 -django/contrib/gis/gdal/LICENSE,sha256=VwoEWoNyts1qAOMOuv6OPo38Cn_j1O8sxfFtQZ62Ous,1526 -django/contrib/gis/gdal/__init__.py,sha256=Zs9bOGm9RStYhhlWCnqRNChJG4K_oWDPRXYylplur1Q,1760 -django/contrib/gis/gdal/base.py,sha256=yymyL0vZRMBfiFUzrehvaeaunIxMH5ucGjPRfKj-rAo,181 -django/contrib/gis/gdal/datasource.py,sha256=ItTc0jrMn0fTDBIoHVjhjskIrRjKKYEXaP5G6t21LHY,4490 -django/contrib/gis/gdal/driver.py,sha256=iBp2Vk6UV-fPJWsIxBc-pUdVmG51GHTSgOyDD-Dg9lc,3262 -django/contrib/gis/gdal/envelope.py,sha256=ZsX4QPtg60yVl5MMjc_mbolnbA0lWWV-85ZW4IHWIbU,6973 -django/contrib/gis/gdal/error.py,sha256=WNtvm0k-Msbo5pW2rO1_5fDvLRqoF8D5ka9UC6hfclM,1575 -django/contrib/gis/gdal/feature.py,sha256=41qBdM1bVmKh4W-5QO6-3mrEbyL-1lCEGgclsOIJAzg,3927 -django/contrib/gis/gdal/field.py,sha256=64_BJ1SyJXqByVPiQB2HU6_5KiPSe2IE-5Wq4heKbEo,6699 -django/contrib/gis/gdal/geometries.py,sha256=tvtVLuW-W23tlp-rGGj4Fx6aNqFNxDqr2hAlAjdjO2Y,24515 -django/contrib/gis/gdal/geomtype.py,sha256=wV9vW9lalMtMSEja161xMdZVqmaf6rR-PC2GdzeIwMs,3175 -django/contrib/gis/gdal/layer.py,sha256=NeFb78T4O8KBuAUfMdR2t-tK5UO4GCCSGd3ZY5Temyo,8537 -django/contrib/gis/gdal/libgdal.py,sha256=H0sugVJuTEPvjJZ2S3SUjZOs_9yn4Yq5FDYV4UNOEhw,3612 -django/contrib/gis/gdal/srs.py,sha256=jJDIApRPMhm6gQNVKmqCzrgufx1MFo44Eu7tk_Elu7k,11540 -django/contrib/gis/gdal/prototypes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/gdal/prototypes/ds.py,sha256=AAu7QnwigZ-3Dme-uHsOySlT1TGvAYSvqF1pZtauMto,4413 -django/contrib/gis/gdal/prototypes/errcheck.py,sha256=81MQSCm3lvq8LYMi7t901Z82X9ChgApD0MC6jh2TKT4,4151 -django/contrib/gis/gdal/prototypes/generation.py,sha256=WmFEbrwQQJpdHd5bBZYYO07bsR_3Sv8ZFQXNjGgffGA,4612 -django/contrib/gis/gdal/prototypes/geom.py,sha256=ELRO7bR8RxO3HIuxtitr06yhsG4DxYTlRsTa6NenTqI,4946 -django/contrib/gis/gdal/prototypes/raster.py,sha256=aXOXg3B_NcFt4AoX6sDSr0u_yEvhWPF2D00qhxCFnzc,5763 -django/contrib/gis/gdal/prototypes/srs.py,sha256=yzAqWOFjP626Kovwd1HOlJuWcT3kuLCFq_PCVNN7Gaw,3540 -django/contrib/gis/gdal/raster/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/gdal/raster/band.py,sha256=jGoWznyK-4MYElT3KpuUTyWjGmv_Eou_c76BqBXMMR4,8304 -django/contrib/gis/gdal/raster/base.py,sha256=VJk16KfArc2SbTjRK3iLuFmzXW1B7VUSctG0Jc6m4Vg,3014 -django/contrib/gis/gdal/raster/const.py,sha256=D976ENrWFWdoH1fS5DuyhcS8ix7zJB8UIu4_NvEJtgI,2889 -django/contrib/gis/gdal/raster/source.py,sha256=3URK_Vp9VsObLWLDB5tT59XVAUs-pBUsJrojeD6fdJE,16854 -django/contrib/gis/geoip2/__init__.py,sha256=uIUWQyMsbSrYL-oVqFsmhqQkYGrh7pHLIVvIM3W_EG4,822 -django/contrib/gis/geoip2/base.py,sha256=BuT-N9PuRqjuP8kohfKxvnft-nI7J7orPzLrOUDF2qE,9033 -django/contrib/gis/geoip2/resources.py,sha256=UFle7-6gOKg-En5z_uaO3VzlUmhGoSxWsy_hbIh-tjQ,651 -django/contrib/gis/geos/LICENSE,sha256=CL8kt1USOK4yUpUkVCWxyuua0PQvni0wPHs1NQJjIEU,1530 -django/contrib/gis/geos/__init__.py,sha256=DXFaljVp6gf-E0XAbfO1JnYjPYSDfGZQ2VLtGYBcUZQ,648 -django/contrib/gis/geos/base.py,sha256=NdlFg5l9akvDp87aqzh9dk0A3ZH2TI3cOq10mmmuHBk,181 -django/contrib/gis/geos/collections.py,sha256=OHpBZoruCk_rySBZ4gpEA2ZWLODFCHwkOyGIn1wxGJc,4162 -django/contrib/gis/geos/coordseq.py,sha256=cMGg3XPm2x3VYjkYys8rojRG7uzMez8FpOr2HD-Jy8Q,6419 -django/contrib/gis/geos/error.py,sha256=r3SNTnwDBI6HtuyL3mQ_iEEeKlOqqqdkHnhNoUkMohw,104 -django/contrib/gis/geos/factory.py,sha256=f6u2m1AtmYYHk_KrIC9fxt7VGsJokJVoSWEx-DkPWx0,961 -django/contrib/gis/geos/geometry.py,sha256=Gbz_K0_QMluq69V-wxp2AQwScueIz5K5bBgxkLXY__g,24845 -django/contrib/gis/geos/io.py,sha256=Om5DBSlttixUc3WQAGZDhzPdb5JTe82728oImIj_l3k,787 -django/contrib/gis/geos/libgeos.py,sha256=AtMP5GPGgjPPQzgzk8G-fxDFWlhd7e-LWR4idA3dXh8,5127 -django/contrib/gis/geos/linestring.py,sha256=xBs4p9osA_zUK6xCdgg_nBLBmbvZ_Qxa7aZ8T5ao0vs,5960 -django/contrib/gis/geos/mutable_list.py,sha256=_dHOe_CF9jQGv0UFbKUwSqLWcl4EQBFLJ0wtO8cf5Y4,10489 -django/contrib/gis/geos/point.py,sha256=vBBmdajc7GXisTdRDriHEJRc0irjNJsTF8qDtHr5o4U,4443 -django/contrib/gis/geos/polygon.py,sha256=qYVaXi9rxs3yUQH-z2Kqr4vw5Pjd-HneTa7iB6r-86c,6691 -django/contrib/gis/geos/prepared.py,sha256=rJf35HOTxPrrk_yA-YR9bQlL_pPDKecuhwZlcww8lxY,1575 -django/contrib/gis/geos/prototypes/__init__.py,sha256=0jfLanLmI1q-3NIpdIZr3EHnMzhPRXMhbCNIHf3glfI,1221 -django/contrib/gis/geos/prototypes/coordseq.py,sha256=jd8jmxXbhZjNmWRad9917ar8ozDIih-EnFvmamgLxm0,2989 -django/contrib/gis/geos/prototypes/errcheck.py,sha256=YTUBFoHU5pZOAamBPgogFymDswgnMr1_KL59sZfInYo,2654 -django/contrib/gis/geos/prototypes/geom.py,sha256=FoWEduMbbWb6_blM2IJOP_WkYCVISLksuXOaFAL_9c8,3565 -django/contrib/gis/geos/prototypes/io.py,sha256=q9LPSy0ZKDGag8pn8XhswRI8E42EzBy3kqmWTTxYRM4,11118 -django/contrib/gis/geos/prototypes/misc.py,sha256=7Xwk0HG__JtPt6wJD-ieMkD-7KxpnofYrHSk6NEUeJo,1161 -django/contrib/gis/geos/prototypes/predicates.py,sha256=Ya06ir7LZQBSUypB05iv9gpvZowOSLIKa4fhCnhZuYY,1587 -django/contrib/gis/geos/prototypes/prepared.py,sha256=SC7g9_vvsW_ty7LKqlMzJfF9v3EvsJX9-j3kpSeCRfY,1184 -django/contrib/gis/geos/prototypes/threadsafe.py,sha256=mMS57uRZmYrsWluD4Y8Sej5gH7IFiGCHjERfQMsE6Ak,2389 -django/contrib/gis/geos/prototypes/topology.py,sha256=AD9s3yytjEaF6YZpa7nBufZlxaC7lM8q7GfXaEWRvxY,2139 -django/contrib/gis/locale/af/LC_MESSAGES/django.mo,sha256=TN3GddZjlqXnhK8UKLlMoMIXNw2szzj7BeRjoKjsR5c,470 -django/contrib/gis/locale/af/LC_MESSAGES/django.po,sha256=XPdXaQsZ6yDPxF3jVMEI4bli_5jrEawoO-8DHMk8Q_A,1478 -django/contrib/gis/locale/ar/LC_MESSAGES/django.mo,sha256=q0DhiLoyS8WBktN150bvtusd885p2E7e23VMFAqJPj0,2428 -django/contrib/gis/locale/ar/LC_MESSAGES/django.po,sha256=rnZPCzub0GRmC3FwmfyhATesLcm4yTRNr8jDSvM9wBQ,2639 -django/contrib/gis/locale/ast/LC_MESSAGES/django.mo,sha256=8o0Us4wR14bdv1M5oBeczYC4oW5uKnycWrj1-lMIqV4,850 -django/contrib/gis/locale/ast/LC_MESSAGES/django.po,sha256=0beyFcBkBOUNvPP45iqewTNv2ExvCPvDYwpafCJY5QM,1684 -django/contrib/gis/locale/az/LC_MESSAGES/django.mo,sha256=Fa4dVabHbnYIaJNor3mac1dXOHEEiO2MN9LqGe-r5kg,1211 -django/contrib/gis/locale/az/LC_MESSAGES/django.po,sha256=Xj1cR_yGYeqHDiNU-UVoWjVevwAfT7bOTj5Cbbx49pk,1801 -django/contrib/gis/locale/be/LC_MESSAGES/django.mo,sha256=ySlqE1WXTqM5DGsE_fEF5pipbyqj4A10SZgvQlFAyKc,2488 -django/contrib/gis/locale/be/LC_MESSAGES/django.po,sha256=HzR5MKPYfc-xeRnb0oPIi9OLa-iA86_IbbM3Poj8h_k,2651 -django/contrib/gis/locale/bg/LC_MESSAGES/django.mo,sha256=1A5wo7PLz0uWsNMHv_affxjNnBsY3UQNz7zHszu56do,2452 -django/contrib/gis/locale/bg/LC_MESSAGES/django.po,sha256=5Onup09U6w85AFWvjs2QKnYXoMhnnw9u4eUlIa5QoXU,2670 -django/contrib/gis/locale/bn/LC_MESSAGES/django.mo,sha256=7oNsr_vHQfsanyP-o1FG8jZTSBK8jB3eK2fA9AqNOx4,1070 -django/contrib/gis/locale/bn/LC_MESSAGES/django.po,sha256=PTa9EFZdqfznUH7si3Rq3zp1kNkTOnn2HRTEYXQSOdM,1929 -django/contrib/gis/locale/br/LC_MESSAGES/django.mo,sha256=dKdyM_SsEERl7fEYUej6idqQpQVVm2oeBdQwzcxGU8s,466 -django/contrib/gis/locale/br/LC_MESSAGES/django.po,sha256=mcr1XLHBS7WvX4S086rope0RX_WhkpZd93t-1S9A0O0,1512 -django/contrib/gis/locale/bs/LC_MESSAGES/django.mo,sha256=9EdKtZkY0FX2NlX_q0tIxXD-Di0SNQJZk3jo7cend0A,1308 -django/contrib/gis/locale/bs/LC_MESSAGES/django.po,sha256=eu_qF8dbmlDiRKGNIz80XtIunrF8QIOcy8O28X02GvQ,1905 -django/contrib/gis/locale/ca/LC_MESSAGES/django.mo,sha256=_ghgN_u_2yqPFt8oKksLPQeJxn1dz_o23Z-OAa3xKTQ,2043 -django/contrib/gis/locale/ca/LC_MESSAGES/django.po,sha256=o5dQ-gYO9WPYQf4EFhpl3GLHzu-KU3MDYAn3Y_YVpMs,2313 -django/contrib/gis/locale/cs/LC_MESSAGES/django.mo,sha256=fxe9guXFqd6Vc8c-srZ-h-FEK9P00CfogO1PlP5AmiA,2058 -django/contrib/gis/locale/cs/LC_MESSAGES/django.po,sha256=C7CHSputPGEzUKZ3Q6dX5xOBtwkiqOsjHxHz-oUuMkg,2259 -django/contrib/gis/locale/cy/LC_MESSAGES/django.mo,sha256=vUG_wzZaMumPwIlKwuN7GFcS9gnE5rpflxoA_MPM_po,1430 -django/contrib/gis/locale/cy/LC_MESSAGES/django.po,sha256=_QjXT6cySUXrjtHaJ3046z-5PoXkCqtOhvA7MCZsXxk,1900 -django/contrib/gis/locale/da/LC_MESSAGES/django.mo,sha256=qSfQxrORzIWKkcgjsCOOsTGhr8qU7DhqbWRxbQzkGXI,1934 -django/contrib/gis/locale/da/LC_MESSAGES/django.po,sha256=5vF_PjA29rtkd3WaIcwT4w0_69hqSN-1GFhKVtoAHh0,2176 -django/contrib/gis/locale/de/LC_MESSAGES/django.mo,sha256=mI3SuiIrcN27uvquzq7O9wtKIjaVQjHAesncCgBg8_g,1999 -django/contrib/gis/locale/de/LC_MESSAGES/django.po,sha256=4m3n1PEqvjKftQWz4s_ElJzZuCVzdWGbIKEHoBrhEy4,2151 -django/contrib/gis/locale/dsb/LC_MESSAGES/django.mo,sha256=69wcPviGvpI2TxiSEux2GnUo1tu0CeZgQKBjJZrEeRk,2109 -django/contrib/gis/locale/dsb/LC_MESSAGES/django.po,sha256=koNMmuvSPrHBxNsE0EH4zPcDZeFAyBHR_qQnp3HT80o,2226 -django/contrib/gis/locale/el/LC_MESSAGES/django.mo,sha256=8QAS4MCktYLFsCgcIVflPXePYAWwr6iEZ7K8_axi_5U,2519 -django/contrib/gis/locale/el/LC_MESSAGES/django.po,sha256=6JVoYCUCUznxgQYlOCWJw1Ad6SR3Fa9jlorSCYkiwLw,2886 -django/contrib/gis/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/gis/locale/en/LC_MESSAGES/django.po,sha256=xQNCkGkE6LwUS33QmgHTaLg0TQNbO9IPElF6RkYrY9c,2223 -django/contrib/gis/locale/en_AU/LC_MESSAGES/django.mo,sha256=IPn5kRqOvv5S7jpbIUw8PEUkHlyjEL-4GuOANd1iAzI,486 -django/contrib/gis/locale/en_AU/LC_MESSAGES/django.po,sha256=x_58HmrHRia2LoYhmmN_NLb1J3f7oTDvwumgTo0LowI,1494 -django/contrib/gis/locale/en_GB/LC_MESSAGES/django.mo,sha256=WkORQDOsFuV2bI7hwVsJr_JTWnDQ8ZaK-VYugqnLv3w,1369 -django/contrib/gis/locale/en_GB/LC_MESSAGES/django.po,sha256=KWPMoX-X-gQhb47zoVsa79-16-SiCGpO0s4xkcGv9z0,1910 -django/contrib/gis/locale/eo/LC_MESSAGES/django.mo,sha256=qls9V1jybymGCdsutcjP6fT5oMaI-GXnt_oNfwq-Yhs,1960 -django/contrib/gis/locale/eo/LC_MESSAGES/django.po,sha256=WPSkCxwq3ZnR-_L-W-CnS0_Qne3ekX7ZAZVaubiWw5s,2155 -django/contrib/gis/locale/es/LC_MESSAGES/django.mo,sha256=l88snQomLTK7JQQ5MGdUWGf_6MqiyZWqnCuZPAMctoQ,2056 -django/contrib/gis/locale/es/LC_MESSAGES/django.po,sha256=e4YW5wz0R2oI8VmEZGgMsLVycbmv3ILDjetpjS8ZXl4,2423 -django/contrib/gis/locale/es_AR/LC_MESSAGES/django.mo,sha256=-SlY9HeeMlg87yZM-mtG-drnsT_jncUOeoY4PPHkjrk,2069 -django/contrib/gis/locale/es_AR/LC_MESSAGES/django.po,sha256=XfXzSvB-x2nMclRwxMDWhPqw8vQMRtWVr4SyvD1XFn8,2219 -django/contrib/gis/locale/es_CO/LC_MESSAGES/django.mo,sha256=P79E99bXjthakFYr1BMobTKqJN9S1aj3vfzMTbGRhCY,1865 -django/contrib/gis/locale/es_CO/LC_MESSAGES/django.po,sha256=tyu8_dFA9JKeQ2VCpCUy_6yX97SPJcDwVqqAuf_xgks,2347 -django/contrib/gis/locale/es_MX/LC_MESSAGES/django.mo,sha256=bC-uMgJXdbKHQ-w7ez-6vh9E_2YSgCF_LkOQlvb60BU,1441 -django/contrib/gis/locale/es_MX/LC_MESSAGES/django.po,sha256=MYO9fGclp_VvLG5tXDjXY3J_1FXI4lDv23rGElXAyjA,1928 -django/contrib/gis/locale/es_VE/LC_MESSAGES/django.mo,sha256=5YVIO9AOtmjky90DAXVyU0YltfQ4NLEpVYRTTk7SZ5o,486 -django/contrib/gis/locale/es_VE/LC_MESSAGES/django.po,sha256=R8suLsdDnSUEKNlXzow3O6WIT5NcboZoCjir9GfSTSQ,1494 -django/contrib/gis/locale/et/LC_MESSAGES/django.mo,sha256=RuQYV9MWvWzcX0lI4ot2cY2_49yJPOqeExNx05MpeFg,1961 -django/contrib/gis/locale/et/LC_MESSAGES/django.po,sha256=4yl0Zfmt0mOSJluCw97oJdiWmf3x84a3qtSQDsUZYv8,2239 -django/contrib/gis/locale/eu/LC_MESSAGES/django.mo,sha256=EChDnXv1Tgk0JvMp3RuDsk-0LkgZ2Xig8nckmikewLA,1973 -django/contrib/gis/locale/eu/LC_MESSAGES/django.po,sha256=sj_W9oCmbYENT-zGnTNtAT-ZsI3z7IOhgUxooQNFbpc,2191 -django/contrib/gis/locale/fa/LC_MESSAGES/django.mo,sha256=ecBNKfMWmDppr1J-RArykdidJZtNxbzfGpxEGhmsp3s,2275 -django/contrib/gis/locale/fa/LC_MESSAGES/django.po,sha256=lYBduv3O2QN7oZtoUzyBxx8e9f2_VGFU0CcpGNom5Ps,2583 -django/contrib/gis/locale/fi/LC_MESSAGES/django.mo,sha256=L_1vFA-I0vQddIdLpNyATweN04E5cRw-4Xr81D67Q_c,1946 -django/contrib/gis/locale/fi/LC_MESSAGES/django.po,sha256=WSrldLannVh0Vnmm18X5FwHoieLQYXz0CoF2SY52w0M,2127 -django/contrib/gis/locale/fr/LC_MESSAGES/django.mo,sha256=asAhstLR7EmVyuijAii40LOtdcsapHaChkfIvhlsdrQ,2082 -django/contrib/gis/locale/fr/LC_MESSAGES/django.po,sha256=GvRJJNZL55BRARg2TozwQjRprLUNMQxtzfB94Qs0Ye8,2290 -django/contrib/gis/locale/fy/LC_MESSAGES/django.mo,sha256=2kCnWU_giddm3bAHMgDy0QqNwOb9qOiEyCEaYo1WdqQ,476 -django/contrib/gis/locale/fy/LC_MESSAGES/django.po,sha256=7ncWhxC5OLhXslQYv5unWurhyyu_vRsi4bGflZ6T2oQ,1484 -django/contrib/gis/locale/ga/LC_MESSAGES/django.mo,sha256=m6Owcr-5pln54TXcZFAkYEYDjYiAkT8bGFyw4nowNHA,1420 -django/contrib/gis/locale/ga/LC_MESSAGES/django.po,sha256=I0kyTnYBPSdYr8RontzhGPShJhylVAdRLBGWRQr2E7g,1968 -django/contrib/gis/locale/gd/LC_MESSAGES/django.mo,sha256=GR9860LI6qrGdaqUYG8GskC_EeGHBetVojk0TSTIIO8,2142 -django/contrib/gis/locale/gd/LC_MESSAGES/django.po,sha256=l9fNaI3A5mmULDsg-D-cc-hhlGOYlP4JrxJJn4YU4hM,2260 -django/contrib/gis/locale/gl/LC_MESSAGES/django.mo,sha256=4OUuNpkYRWjKz_EoY1zDzKOK8YptrwUutQqFvSKsLUs,1421 -django/contrib/gis/locale/gl/LC_MESSAGES/django.po,sha256=s9tiYQLnv1_uzyLpi3qqV_zwJNic1AGFsUGc3FhJbMo,2006 -django/contrib/gis/locale/he/LC_MESSAGES/django.mo,sha256=Lv18lxyH_Fnq9kfqbthOhc5ZyFj4cP2BKAPmT8zF-rk,2142 -django/contrib/gis/locale/he/LC_MESSAGES/django.po,sha256=p3lU7h8Y9VDBBSDGhYCKyF3ohDmVkUCWSHWUiwmXgg8,2296 -django/contrib/gis/locale/hi/LC_MESSAGES/django.mo,sha256=3nsy5mxKTPtx0EpqBNA_TJXmLmVZ4BPUZG72ZEe8OPM,1818 -django/contrib/gis/locale/hi/LC_MESSAGES/django.po,sha256=jTFG2gqqYAQct9-to0xL2kUFQu-ebR4j7RGfxn4sBAg,2372 -django/contrib/gis/locale/hr/LC_MESSAGES/django.mo,sha256=0XrRj2oriNZxNhEwTryo2zdMf-85-4X7fy7OJhB5ub4,1549 -django/contrib/gis/locale/hr/LC_MESSAGES/django.po,sha256=iijzoBoD_EJ1n-a5ys5CKnjzZzG299zPoCN-REFkeqE,2132 -django/contrib/gis/locale/hsb/LC_MESSAGES/django.mo,sha256=W3LtmsG61dOj4oNOEDuZC4iOco8jbFkrBUhhW1rxXVE,2083 -django/contrib/gis/locale/hsb/LC_MESSAGES/django.po,sha256=WmUI-Hqp2yLFJNYKU7-ko7bJY25pcPqPblu0rkSDKVk,2203 -django/contrib/gis/locale/hu/LC_MESSAGES/django.mo,sha256=Gbu1WlCo21lsqVrfAJHD0SsrQ4RxQ5Wsqhp9sJuHmEA,1941 -django/contrib/gis/locale/hu/LC_MESSAGES/django.po,sha256=dJCoSLIugFyOoPuewWcquN_UCqJG3gYZzb1IiO_2r5Y,2173 -django/contrib/gis/locale/ia/LC_MESSAGES/django.mo,sha256=9MZnSXkQUIfbYB2f4XEtYo_FzuVi5OlsYcX9K_REz3c,1899 -django/contrib/gis/locale/ia/LC_MESSAGES/django.po,sha256=f7OuqSzGHQNldBHp62VIWjqP0BB0bvo8qEx9_wzH090,2116 -django/contrib/gis/locale/id/LC_MESSAGES/django.mo,sha256=vkdSqp0U3LhTfejwHLhnwjQ4OFFN0GVKrquxTWgLIh0,1983 -django/contrib/gis/locale/id/LC_MESSAGES/django.po,sha256=Zz3Yd6id4X3rfjqiYt_CmyPpLYnFY1fuTUKRnZnDMdA,2322 -django/contrib/gis/locale/io/LC_MESSAGES/django.mo,sha256=_yUgF2fBUxVAZAPNw2ROyWly5-Bq0niGdNEzo2qbp8k,464 -django/contrib/gis/locale/io/LC_MESSAGES/django.po,sha256=fgGJ1xzliMK0MlVoV9CQn_BuuS3Kl71Kh5YEybGFS0Y,1472 -django/contrib/gis/locale/is/LC_MESSAGES/django.mo,sha256=CBNZj4uA2niVY5uA7MKHu21Ou8d3wp_EJCWC8w3Y0JY,1317 -django/contrib/gis/locale/is/LC_MESSAGES/django.po,sha256=SUst5hGJO9veiC6SWB0oLEHzMXNqxMG8l8oLpoTQFt0,1865 -django/contrib/gis/locale/it/LC_MESSAGES/django.mo,sha256=px9x5hMusGf2LB2Vz9AijSpeppg3gUCI0dHfBb_F44A,2009 -django/contrib/gis/locale/it/LC_MESSAGES/django.po,sha256=RZRPvW8eAvd0-KnEQ0lPz0gSPmvq1um0rsEgmoIQMsU,2309 -django/contrib/gis/locale/ja/LC_MESSAGES/django.mo,sha256=knTOfVviVceaAEp9xeh4WUE-ro2lkUIUTtkA-9yk3Bs,2124 -django/contrib/gis/locale/ja/LC_MESSAGES/django.po,sha256=mqD9ZpqXvAL7adXVWyVlIyD7meIcyXI6RXqRQD5cRm8,2287 -django/contrib/gis/locale/ka/LC_MESSAGES/django.mo,sha256=iqWQ9j8yanPjDhwi9cNSktYgfLVnofIsdICnAg2Y_to,1991 -django/contrib/gis/locale/ka/LC_MESSAGES/django.po,sha256=tWoXkbWfNsZ2A28_JUvc1wtyVT6m7Hl9nJgfxXGqkgY,2566 -django/contrib/gis/locale/kk/LC_MESSAGES/django.mo,sha256=NtgQONp0UncUNvrh0W2R7u7Ja8H33R-a-tsQShWq-QI,1349 -django/contrib/gis/locale/kk/LC_MESSAGES/django.po,sha256=_wNvDk36C_UegH0Ex6ov8P--cKm-J7XtusXYsjVVZno,1974 -django/contrib/gis/locale/km/LC_MESSAGES/django.mo,sha256=T0aZIZ_gHqHpQyejnBeX40jdcfhrCOjgKjNm2hLrpNE,459 -django/contrib/gis/locale/km/LC_MESSAGES/django.po,sha256=7ARjFcuPQJG0OGLJu9pVfSiAwc2Q-1tT6xcLeKeom1c,1467 -django/contrib/gis/locale/kn/LC_MESSAGES/django.mo,sha256=EkJRlJJSHZJvNZJuOLpO4IIUEoyi_fpKwNWe0OGFcy4,461 -django/contrib/gis/locale/kn/LC_MESSAGES/django.po,sha256=NM3FRy48SSVsUIQc8xh0ZKAgTVAP8iK8elp7NQ6-IdE,1469 -django/contrib/gis/locale/ko/LC_MESSAGES/django.mo,sha256=7SSr6cP3b0vM5z224tJIqmwwWWHGoU0al4LNGbwxtQM,1975 -django/contrib/gis/locale/ko/LC_MESSAGES/django.po,sha256=aXVjYftxj1FONeotkCZkAoQxCCFs5cYb4ceGPSnUScA,2299 -django/contrib/gis/locale/lb/LC_MESSAGES/django.mo,sha256=XAyZQUi8jDr47VpSAHp_8nQb0KvSMJHo5THojsToFdk,474 -django/contrib/gis/locale/lb/LC_MESSAGES/django.po,sha256=5rfudPpH4snSq2iVm9E81EBwM0S2vbkY2WBGhpuga1Q,1482 -django/contrib/gis/locale/lt/LC_MESSAGES/django.mo,sha256=fd8XOToFWDIDe-aklIn3mgvO-uyqgfqSmWDcNURfrNM,2045 -django/contrib/gis/locale/lt/LC_MESSAGES/django.po,sha256=Dvoe-wywlJzqXJPBqia5O98CgV3iDQUWGKJE46HsMPA,2279 -django/contrib/gis/locale/lv/LC_MESSAGES/django.mo,sha256=vE7Ygn4CAsS7tQkrPb8kGVEchTioQxtZTxatJZXVL5k,2057 -django/contrib/gis/locale/lv/LC_MESSAGES/django.po,sha256=6qKFeIFtMexJFuz3TSxGL9vkKYmz_lCr9pDfLPTLzYw,2200 -django/contrib/gis/locale/mk/LC_MESSAGES/django.mo,sha256=PVw73LWWNvaNd95zQbAIA7LA7JNmpf61YIoyuOca2_s,2620 -django/contrib/gis/locale/mk/LC_MESSAGES/django.po,sha256=eusHVHXHRfdw1_JyuBW7H7WPCHFR_z1NBqr79AVqAk0,2927 -django/contrib/gis/locale/ml/LC_MESSAGES/django.mo,sha256=Kl9okrE3AzTPa5WQ-IGxYVNSRo2y_VEdgDcOyJ_Je78,2049 -django/contrib/gis/locale/ml/LC_MESSAGES/django.po,sha256=PWg8atPKfOsnVxg_uro8zYO9KCE1UVhfy_zmCWG0Bdk,2603 -django/contrib/gis/locale/mn/LC_MESSAGES/django.mo,sha256=-Nn70s2On94C-jmSZwTppW2q7_W5xgMpzPXYmxZSKXs,2433 -django/contrib/gis/locale/mn/LC_MESSAGES/django.po,sha256=I0ZHocPlRYrogJtzEGVPsWWHpoVEa7e2KYP9Ystlj60,2770 -django/contrib/gis/locale/mr/LC_MESSAGES/django.mo,sha256=sO2E__g61S0p5I6aEwnoAsA3epxv7_Jn55TyF0PZCUA,468 -django/contrib/gis/locale/mr/LC_MESSAGES/django.po,sha256=McWaLXfWmYTDeeDbIOrV80gwnv07KCtNIt0OXW_v7vw,1476 -django/contrib/gis/locale/my/LC_MESSAGES/django.mo,sha256=i6JlVxP_finJ6vMVsv_csixtZa1qGs3ezVJZDIsE7G8,461 -django/contrib/gis/locale/my/LC_MESSAGES/django.po,sha256=eqtpOzHodtyr15aVOVVMtirg6XSUm6n7BsQpSIZ6D2k,1469 -django/contrib/gis/locale/nb/LC_MESSAGES/django.mo,sha256=AmVS8gbKlqYHpr-v2UdOuYt17wO2WMhVJzfDWX6Tl78,1930 -django/contrib/gis/locale/nb/LC_MESSAGES/django.po,sha256=psdNBDn8IvOyAChU7NqUKIOIssUocfQKSsXnt-89fd8,2146 -django/contrib/gis/locale/ne/LC_MESSAGES/django.mo,sha256=nB-Ta8w57S6hIAhAdWZjDT0Dg6JYGbAt5FofIhJT7k8,982 -django/contrib/gis/locale/ne/LC_MESSAGES/django.po,sha256=eMH6uKZZZYn-P3kmHumiO4z9M4923s9tWGhHuJ0eWuI,1825 -django/contrib/gis/locale/nl/LC_MESSAGES/django.mo,sha256=CFaHe1W7ULU7jUefJeyqykCqCofePc9EZv_YEGjDd-g,1992 -django/contrib/gis/locale/nl/LC_MESSAGES/django.po,sha256=pRNsGMNCI3G1lc9q3_a-Y4pRlABO8Q73XfOJHN0QMnk,2348 -django/contrib/gis/locale/nn/LC_MESSAGES/django.mo,sha256=32x5_V6o_BQBefFmyajOg3ssClw-DMEdvzXkY90fV3Q,1202 -django/contrib/gis/locale/nn/LC_MESSAGES/django.po,sha256=NWA3nD8ZwAZxG9EkE6TW0POJgB6HTeC4J6GOlTMD7j4,1796 -django/contrib/gis/locale/os/LC_MESSAGES/django.mo,sha256=02NpGC8WPjxmPqQkfv9Kj2JbtECdQCtgecf_Tjk1CZc,1594 -django/contrib/gis/locale/os/LC_MESSAGES/django.po,sha256=JBIsv5nJg3Wof7Xy7odCI_xKRBLN_Hlbb__kNqNW4Xw,2161 -django/contrib/gis/locale/pa/LC_MESSAGES/django.mo,sha256=JR1NxG5_h_dFE_7p6trBWWIx-QqWYIgfGomnjaCsWAA,1265 -django/contrib/gis/locale/pa/LC_MESSAGES/django.po,sha256=Ejd_8dq_M0E9XFijk0qj4oC-8_oe48GWWHXhvOrFlnY,1993 -django/contrib/gis/locale/pl/LC_MESSAGES/django.mo,sha256=aLv23YOFYR22AY3BLP5xcDHKTqc_GVjm_FZdTNr0-Jk,2138 -django/contrib/gis/locale/pl/LC_MESSAGES/django.po,sha256=uEQ59IxEJATHQOsZcvNRdR8kd-Iv7PRTHw3dR68GID8,2497 -django/contrib/gis/locale/pt/LC_MESSAGES/django.mo,sha256=sE5PPOHzfT8QQXuV5w0m2pnBTRhKYs_vFhk8p_A4Jg0,2036 -django/contrib/gis/locale/pt/LC_MESSAGES/django.po,sha256=TFt6Oj1NlCM3pgs2dIgFZR3S3y_g7oR7S-XRBlM4924,2443 -django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.mo,sha256=hsj4npR8H05FKM0fiQf83kSip7a8871_AQUY5dyAqj8,2011 -django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.po,sha256=NLnhgZjJxx0EUy4s_8sqQFSWOa0or0CiEjUoPlTH4pc,2311 -django/contrib/gis/locale/ro/LC_MESSAGES/django.mo,sha256=YSbX0Y_T44pBLpKmaVN7leNXBDwHZB4EWQaU9Go3szM,2047 -django/contrib/gis/locale/ro/LC_MESSAGES/django.po,sha256=QBwAO5P2FYzCSoXF52MSEtncAAimw9YQKO8HvCPbF5U,2260 -django/contrib/gis/locale/ru/LC_MESSAGES/django.mo,sha256=5uccCKKgLtin1jcp_1j4aiv5FEzX6LxRNEL3i11m7ts,2583 -django/contrib/gis/locale/ru/LC_MESSAGES/django.po,sha256=Pvs1ADP2MtalAHAZ04cpQeQPXsKBCVeggPW8GP-nsPQ,2862 -django/contrib/gis/locale/sk/LC_MESSAGES/django.mo,sha256=_LWDbFebq9jEa1YYsSMOruTk0oRaU9sxPGml1YPuink,2010 -django/contrib/gis/locale/sk/LC_MESSAGES/django.po,sha256=Iz_iHKaDzNhLM5vJd3bbzsCXzKhoEGeqECZxEgBIiGc,2244 -django/contrib/gis/locale/sl/LC_MESSAGES/django.mo,sha256=9-efMT2MoEMa5-SApGWTRiyfvI6vmZzLeMg7qGAr7_A,2067 -django/contrib/gis/locale/sl/LC_MESSAGES/django.po,sha256=foZY7N5QkuAQS7nc3CdnJerCPk-lhSb1xZqU11pNGNo,2303 -django/contrib/gis/locale/sq/LC_MESSAGES/django.mo,sha256=LVdXsubPRVA-1-VeEJEWoGoAWR9kK072boRKaqzyb28,1918 -django/contrib/gis/locale/sq/LC_MESSAGES/django.po,sha256=PFeGnVwfzGcFRm2SCV8-iB5z9TVwyN66qz5X9NClQkQ,2148 -django/contrib/gis/locale/sr/LC_MESSAGES/django.mo,sha256=uoDnM1GV8llXNiLCcB9pKaz-nDVXler4gS1SqmpLAig,1700 -django/contrib/gis/locale/sr/LC_MESSAGES/django.po,sha256=irXO-5rFtSqy0aoN2zhc32kJ4zWlPJYSb-zgEKJtO-4,2239 -django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=i-pBCBcNZMz-3rRcQEJrXZLmPHF7YtIEJnzcsAzgma8,1470 -django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po,sha256=MpcOTqw1HiPzr7IikrEwm63x4ypUv9BnQCOKYSjqL0A,2009 -django/contrib/gis/locale/sv/LC_MESSAGES/django.mo,sha256=6TDgv3FdLP-BvB5BszCB7JcNzk2oDLXxuAkXgg7tYRY,1733 -django/contrib/gis/locale/sv/LC_MESSAGES/django.po,sha256=oY3QRFadk2S9aBs9zPrQRN9glDbqRD80srUFlqXffy0,2113 -django/contrib/gis/locale/sw/LC_MESSAGES/django.mo,sha256=uBhpGHluGwYpODTE-xhdJD2e6PHleN07wLE-kjrXr_M,1426 -django/contrib/gis/locale/sw/LC_MESSAGES/django.po,sha256=nHXQQMYYXT1ec3lIBxQIDIAwLtXucX47M4Cozy08kko,1889 -django/contrib/gis/locale/ta/LC_MESSAGES/django.mo,sha256=Rboo36cGKwTebe_MiW4bOiMsRO2isB0EAyJJcoy_F6s,466 -django/contrib/gis/locale/ta/LC_MESSAGES/django.po,sha256=sLYW8_5BSVoSLWUr13BbKRe0hNJ_cBMEtmjCPBdTlAk,1474 -django/contrib/gis/locale/te/LC_MESSAGES/django.mo,sha256=xDkaSztnzQ33Oc-GxHoSuutSIwK9A5Bg3qXEdEvo4h4,824 -django/contrib/gis/locale/te/LC_MESSAGES/django.po,sha256=nYryhktJumcwtZDGZ43xBxWljvdd-cUeBrAYFZOryVg,1772 -django/contrib/gis/locale/th/LC_MESSAGES/django.mo,sha256=0kekAr7eXc_papwPAxEZ3TxHOBg6EPzdR3q4hmAxOjg,1835 -django/contrib/gis/locale/th/LC_MESSAGES/django.po,sha256=WJPdoZjLfvepGGMhfBB1EHCpxtxxfv80lRjPG9kGErM,2433 -django/contrib/gis/locale/tr/LC_MESSAGES/django.mo,sha256=cWFAsuse0yQPdsVGAxFbPOBDxLapMnvMsa50-4-gGYk,2024 -django/contrib/gis/locale/tr/LC_MESSAGES/django.po,sha256=Vqsqw1yPPdZqd5unj76FQAbuQrxKKnxtpQS_33nBGRQ,2259 -django/contrib/gis/locale/tt/LC_MESSAGES/django.mo,sha256=cGVPrWCe4WquVV77CacaJwgLSnJN0oEAepTzNMD-OWk,1470 -django/contrib/gis/locale/tt/LC_MESSAGES/django.po,sha256=98yeRs-JcMGTyizOpEuQenlnWJMYTR1-rG3HGhKCykk,2072 -django/contrib/gis/locale/udm/LC_MESSAGES/django.mo,sha256=I6bfLvRfMn79DO6bVIGfYSVeZY54N6c8BNO7OyyOOsw,462 -django/contrib/gis/locale/udm/LC_MESSAGES/django.po,sha256=B1PCuPYtNOrrhu4fKKJgkqxUrcEyifS2Y3kw-iTmSIk,1470 -django/contrib/gis/locale/uk/LC_MESSAGES/django.mo,sha256=5uJgGDDQi8RTRNxbQToKE7FVLOK73w5Wgmf6zCa66Uk,2455 -django/contrib/gis/locale/uk/LC_MESSAGES/django.po,sha256=fsxwSb93uD59ms8jdO84qx8C5rKy74TDcH12yaKs8mY,2873 -django/contrib/gis/locale/ur/LC_MESSAGES/django.mo,sha256=tB5tz7EscuE9IksBofNuyFjk89-h5X7sJhCKlIho5SY,1410 -django/contrib/gis/locale/ur/LC_MESSAGES/django.po,sha256=16m0t10Syv76UcI7y-EXfQHETePmrWX4QMVfyeuX1fQ,2007 -django/contrib/gis/locale/vi/LC_MESSAGES/django.mo,sha256=NT5T0FRCC2XINdtaCFCVUxb5VRv8ta62nE8wwSHGTrc,1384 -django/contrib/gis/locale/vi/LC_MESSAGES/django.po,sha256=y77GtqH5bv1wR78xN5JLHusmQzoENTH9kLf9Y3xz5xk,1957 -django/contrib/gis/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=rjeFyj0X_v3qP8NHY8L-szEEYmbfB4jO_wcV8f2_ntY,1879 -django/contrib/gis/locale/zh_Hans/LC_MESSAGES/django.po,sha256=GFZzUTmlQXZ1pDhwaYgH9_Lr8OQp9s402jHfHmX9Jso,2245 -django/contrib/gis/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=SRSpoSMtx8PDTpHroMUymZ_-Eu7zzjqPDBiAm3XSV2I,2012 -django/contrib/gis/locale/zh_Hant/LC_MESSAGES/django.po,sha256=b6NQK1--AC67NiUaOew_ajDIj5uSrPzW_rUpLU71yA8,2277 -django/contrib/gis/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/management/commands/inspectdb.py,sha256=Z2Do56mM2tBvnujnCk5C7JhI3z_LQWB4L0M626hmumk,750 -django/contrib/gis/management/commands/ogrinspect.py,sha256=Vv-MAfE0uNieJF6W9gQ4TO-IHCCQvL1qAU7lyEK4izk,5848 -django/contrib/gis/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/serializers/geojson.py,sha256=J7XIwlzEyhKJF7x-4H-RjnXazkNybsX-vFpxz5InNQY,2716 -django/contrib/gis/sitemaps/__init__.py,sha256=eVHUxfzw1VQn6bqH3D8bE471s8bNJSB3phuAI-zg9gA,138 -django/contrib/gis/sitemaps/kml.py,sha256=kbKyIt-_u7zZJB8uPG4Cfi7axA5ms2ltdonctm5zewA,2413 -django/contrib/gis/sitemaps/views.py,sha256=4xrd2NEQjsPx9582Pa0R2IEzx5NpP5unqCUsPjURgto,2313 -django/contrib/gis/static/gis/css/ol3.css,sha256=pJADzfx4_NL2C1onFpU-muconAA5NThN4sEqSNyY_So,657 -django/contrib/gis/static/gis/img/draw_line_off.svg,sha256=6XW83xsR5-Guh27UH3y5UFn9y9FB9T_Zc4kSPA-xSOI,918 -django/contrib/gis/static/gis/img/draw_line_on.svg,sha256=Hx-pXu4ped11esG6YjXP1GfZC5q84zrFQDPUo1C7FGA,892 -django/contrib/gis/static/gis/img/draw_point_off.svg,sha256=PICrywZPwuBkaQAKxR9nBJ0AlfTzPHtVn_up_rSiHH4,803 -django/contrib/gis/static/gis/img/draw_point_on.svg,sha256=raGk3oc8w87rJfLdtZ4nIXJyU3OChCcTd4oH-XAMmmM,803 -django/contrib/gis/static/gis/img/draw_polygon_off.svg,sha256=gnVmjeZE2jOvjfyx7mhazMDBXJ6KtSDrV9f0nSzkv3A,981 -django/contrib/gis/static/gis/img/draw_polygon_on.svg,sha256=ybJ9Ww7-bsojKQJtjErLd2cCOgrIzyqgIR9QNhH_ZfA,982 -django/contrib/gis/static/gis/js/OLMapWidget.js,sha256=-Ry6ICBpsfq3XoAU2SshQeCyMuaGd1ZlgPgHapgKFWU,8981 -django/contrib/gis/templates/gis/openlayers-osm.html,sha256=TeiUqCjt73W8Hgrp_6zAtk_ZMBxskNN6KHSmnJ1-GD4,378 -django/contrib/gis/templates/gis/openlayers.html,sha256=P_sBibtZ8ybiBG6dtYbVhRgDYJE-oKYPzl452xad5Ok,1912 -django/contrib/gis/templates/gis/admin/openlayers.html,sha256=GsjT4sNA-2iHRe7PJKsBIGDEAa29vGXwFNNACowj1lw,1867 -django/contrib/gis/templates/gis/admin/openlayers.js,sha256=KoT3VUMAez9-5QoT5U6OJXzt3MLxlTrJMMwINjQ_k7M,8975 -django/contrib/gis/templates/gis/admin/osm.html,sha256=yvYyZPmgP64r1JT3eZCDun5ENJaaN3d3wbTdCxIOvSo,111 -django/contrib/gis/templates/gis/admin/osm.js,sha256=0wFRJXKZ2plp7tb0F9fgkMzp4NrKZXcHiMkKDJeHMRw,128 -django/contrib/gis/templates/gis/kml/base.kml,sha256=VYnJaGgFVHRzDjiFjbcgI-jxlUos4B4Z1hx_JeI2ZXU,219 -django/contrib/gis/templates/gis/kml/placemarks.kml,sha256=TEC81sDL9RK2FVeH0aFJTwIzs6_YWcMeGnHkACJV1Uc,360 -django/contrib/gis/utils/__init__.py,sha256=OmngSNhywEjrNKGXysMlq_iFYvx7ycDWojpCqF6JYLo,579 -django/contrib/gis/utils/layermapping.py,sha256=rvQRfEa5lBrnXKMPjyrG5NmiV3Au_6YwJvdU7YgCePQ,27125 -django/contrib/gis/utils/ogrinfo.py,sha256=VmbxQ5Ri4zjtTxNymuxJp3t3cAntUC83YBMp9PuMMSU,1934 -django/contrib/gis/utils/ogrinspect.py,sha256=DEitGcJBpsFKWjHzFwQQukIuwBR90n2-NTKt0vYU-VY,8935 -django/contrib/gis/utils/srs.py,sha256=SIVPj3MmKhp-C9IPdM6o5KRRdj38fYIpmo-FjzrwBCM,3024 -django/contrib/humanize/__init__.py,sha256=88gkwJxqbRpmigRG0Gu3GNQkXGtTNpica4nf3go-_cI,67 -django/contrib/humanize/apps.py,sha256=ODfDrSH8m3y3xYlyIIwm7DZmrNcoYKG2K8l5mU64V7g,194 -django/contrib/humanize/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 -django/contrib/humanize/locale/af/LC_MESSAGES/django.po,sha256=_77Io7jI-3P2kHpR-ZFd8jw0B1kQxhLiUWR3B2Bud8g,4726 -django/contrib/humanize/locale/ar/LC_MESSAGES/django.mo,sha256=YSyNaNTh2nILzWMH0F61fl7jX0yb4erZhQO1EBo2HiU,7691 -django/contrib/humanize/locale/ar/LC_MESSAGES/django.po,sha256=VAN7tVSYQZfZV5RfTe-wvQOVA9Q1ylLQRrFb9ihMpqs,11035 -django/contrib/humanize/locale/ast/LC_MESSAGES/django.mo,sha256=WvBk8V6g1vgzGqZ_rR-4p7SMh43PFnDnRhIS9HSwdoQ,3468 -django/contrib/humanize/locale/ast/LC_MESSAGES/django.po,sha256=S9lcUf2y5wR8Ufa-Rlz-M73Z3bMo7zji_63cXwtDK2I,5762 -django/contrib/humanize/locale/az/LC_MESSAGES/django.mo,sha256=_6wnH7WjAaZe5rZYn79VyioxWkMeoZTjhhF-AkbkQAU,4102 -django/contrib/humanize/locale/az/LC_MESSAGES/django.po,sha256=c0ZcxuMs82_JUksowREIsrHajdHZFlyaxFkBbw_6K90,6074 -django/contrib/humanize/locale/be/LC_MESSAGES/django.mo,sha256=HEtO6H9OxRn6ybMtRjkD6deu7sMA49GY988Nc5r2nNY,6681 -django/contrib/humanize/locale/be/LC_MESSAGES/django.po,sha256=GM21lBORfcLeQMaif6tuxrPd45srvSDvzaThGCdjs7o,9256 -django/contrib/humanize/locale/bg/LC_MESSAGES/django.mo,sha256=1mRaFPsm5ITFyfdFdqdeY-_Om2OYKua5YWSEP192WR8,4645 -django/contrib/humanize/locale/bg/LC_MESSAGES/django.po,sha256=kTyRblfWlBUMxd_czXTOe-39CcX68X6e4DTmYm3V2gc,6684 -django/contrib/humanize/locale/bn/LC_MESSAGES/django.mo,sha256=jbL4ucZxxtexI10jgldtgnDie3I23XR3u-PrMMMqP6U,4026 -django/contrib/humanize/locale/bn/LC_MESSAGES/django.po,sha256=0l4yyy7q3OIWyFk_PW0y883Vw2Pmu48UcnLM9OBxB68,6545 -django/contrib/humanize/locale/br/LC_MESSAGES/django.mo,sha256=o4it7f3WLq3THeeEZw083KnkuZUqD_xWipLVyMu9ONU,4069 -django/contrib/humanize/locale/br/LC_MESSAGES/django.po,sha256=oHgr0-e4-Xu_hIWqCtKk_SBNV57MU93GNhuN4V4S1zg,5957 -django/contrib/humanize/locale/bs/LC_MESSAGES/django.mo,sha256=1-RNRHPgZR_9UyiEn9Djp4mggP3fywKZho45E1nGMjM,1416 -django/contrib/humanize/locale/bs/LC_MESSAGES/django.po,sha256=M017Iu3hyXmINZkhCmn2he-FB8rQ7rXN0KRkWgrp7LI,5498 -django/contrib/humanize/locale/ca/LC_MESSAGES/django.mo,sha256=U3wnUZ-xwFZsYCd2Brr3rPVMVlatpnuXRYMCHYtB240,4040 -django/contrib/humanize/locale/ca/LC_MESSAGES/django.po,sha256=YgPF3fjBFqj4wmZ1r0I4sS9fRv65my9so4fjyfGbH6o,6025 -django/contrib/humanize/locale/cs/LC_MESSAGES/django.mo,sha256=SsuK8dcYBRPs2_sT8Xnbq2k5swS4Sm1XUsdIQFXl0W0,4706 -django/contrib/humanize/locale/cs/LC_MESSAGES/django.po,sha256=olnH60vKAYaPcP2vYomYuA8q8iJnr2BqdpNIcErIx0k,6976 -django/contrib/humanize/locale/cy/LC_MESSAGES/django.mo,sha256=VjJiaUUhvX9tjOEe6x2Bdp7scvZirVcUsA4-iE2-ElQ,5241 -django/contrib/humanize/locale/cy/LC_MESSAGES/django.po,sha256=sylmceSq-NPvtr_FjklQXoBAfueKu7hrjEpMAsVbQC4,7813 -django/contrib/humanize/locale/da/LC_MESSAGES/django.mo,sha256=J2fWZWpFuD0XvGi5B8cm3-xrDqAHk2Qlfz-Ciwblvr8,4108 -django/contrib/humanize/locale/da/LC_MESSAGES/django.po,sha256=MwloOPiuBPv1DAC12FEqTOHZWkFkpl5jc8naP_BLvk8,6120 -django/contrib/humanize/locale/de/LC_MESSAGES/django.mo,sha256=ZDdNGQvTBkJDDoT1Bq9XxEMpxs4sFY10wuOfSvlTeoQ,4152 -django/contrib/humanize/locale/de/LC_MESSAGES/django.po,sha256=N_Tl5t0zQYGS7iWNIi68TSrA8-Nvv0oJ38nbz64p1wE,6118 -django/contrib/humanize/locale/dsb/LC_MESSAGES/django.mo,sha256=wD8ibBn17MzmF1HjqqksgFUsSwjUdS_JSOWlAQGK34g,5467 -django/contrib/humanize/locale/dsb/LC_MESSAGES/django.po,sha256=YTU1ebIY0g5RSlZowpHwSQtGpxeVOXLIFHNLUm5QvVY,8033 -django/contrib/humanize/locale/el/LC_MESSAGES/django.mo,sha256=xibi0Bv45kBRYEyFnkgNFf0InnGJyv9KQIWDlfj7LUM,5350 -django/contrib/humanize/locale/el/LC_MESSAGES/django.po,sha256=WW9fqED-lBmgvt6UfGTo-B_KGn_OQXRUSHEUZPXbn9g,7428 -django/contrib/humanize/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/humanize/locale/en/LC_MESSAGES/django.po,sha256=2ykg4liEm0g1uv0iZlDXvIZQOvrT3AxMhgnm1QfTy5Y,7085 -django/contrib/humanize/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 -django/contrib/humanize/locale/en_AU/LC_MESSAGES/django.po,sha256=dVOlMtk3-d-KrNLM5Rji-Xrk6Y_n801ofjGQvxSu67M,4742 -django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.mo,sha256=mkx192XQM3tt1xYG8EOacMfa-BvgzYCbSsJQsWZGeAo,3461 -django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po,sha256=MArKzXxY1104jxaq3kvDZs2WzOGYxicfJxFKsLzFavw,5801 -django/contrib/humanize/locale/eo/LC_MESSAGES/django.mo,sha256=Htv0o1DV8no2MfC8M-lfl8HPGZc6HIVxMGIjVSwmyy8,4107 -django/contrib/humanize/locale/eo/LC_MESSAGES/django.po,sha256=FFtvhZULWsOgl0XSEBngqs3BRp_l7WUiRcXDzbP7K1w,6016 -django/contrib/humanize/locale/es/LC_MESSAGES/django.mo,sha256=0aram7l_JemTmkw04jdlWXh1DOlmPWQD7_O3srdOP6o,4183 -django/contrib/humanize/locale/es/LC_MESSAGES/django.po,sha256=bOM7KA6NTTwRGbR1o0o-5JrXM_mOIIPGxASwtoTl_9o,6306 -django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mo,sha256=J_GRAcxrsRqeVJIPcA16DeDPWuh8EAzX6UW4ncv8yFI,4254 -django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po,sha256=LgnGvLxoWS2hh7_26pTpyCKtkcmqUWGaYrvLn2pqgWU,6270 -django/contrib/humanize/locale/es_CO/LC_MESSAGES/django.mo,sha256=2GhQNtNOjK5mTov5RvnuJFTYbdoGBkDGLxzvJ8Vsrfs,4203 -django/contrib/humanize/locale/es_CO/LC_MESSAGES/django.po,sha256=JBf2fHO8jWi6dFdgZhstKXwyot_qT3iJBixQZc3l330,6326 -django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.mo,sha256=82DL2ztdq10X5RIceshK1nO99DW5628ZIjaN8Xzp9ok,3939 -django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.po,sha256=-O7AQluA5Kce9-bd04GN4tfQKoCxb8Sa7EZR6TZBCdM,6032 -django/contrib/humanize/locale/es_VE/LC_MESSAGES/django.mo,sha256=cJECzKpD99RRIpVFKQW65x0Nvpzrm5Fuhfi-nxOWmkM,942 -django/contrib/humanize/locale/es_VE/LC_MESSAGES/django.po,sha256=tDdYtvRILgeDMgZqKHSebe7Z5ZgI1bZhDdvGVtj_anM,4832 -django/contrib/humanize/locale/et/LC_MESSAGES/django.mo,sha256=WBBZ7Uk5nL-Z6qfYQ-LAtpcxyLy4LC36gKgLn1f5in8,4197 -django/contrib/humanize/locale/et/LC_MESSAGES/django.po,sha256=n_nuAVBjwJd-RZXrbINpxubHetNJijvg5NJRUmECmGc,6213 -django/contrib/humanize/locale/eu/LC_MESSAGES/django.mo,sha256=pw2s1xZV8yS4QaKCS-qq6aihFDGObWcKjPSVLcgqN-E,4041 -django/contrib/humanize/locale/eu/LC_MESSAGES/django.po,sha256=LoWxuo_7aXHEAIJRu4S9rKqdvnXr4VMOqHjMd70OnA0,6119 -django/contrib/humanize/locale/fa/LC_MESSAGES/django.mo,sha256=zQlQmEyZ0ErUlfLg62AqOf5w8EnbgTw5VpuOEBQlGXo,3754 -django/contrib/humanize/locale/fa/LC_MESSAGES/django.po,sha256=iF8fvnzRtCx_HYOZhXbXu10T9R6jc7ZmvKItAicFWEg,5538 -django/contrib/humanize/locale/fi/LC_MESSAGES/django.mo,sha256=qlx3w4Y0CNcC5rIrbig_sqCvKAwh_IS-YseoQX3zymc,4177 -django/contrib/humanize/locale/fi/LC_MESSAGES/django.po,sha256=6xTZvvC_VxAyAQpUibJUDu4V2Gdryy8vJc2OviaYNnw,6180 -django/contrib/humanize/locale/fr/LC_MESSAGES/django.mo,sha256=PFCsv1q5W_Y5-2cHfyle9bQyLMz_IxnI3q99kJ7L038,4174 -django/contrib/humanize/locale/fr/LC_MESSAGES/django.po,sha256=TFedN6WujsxMXJpevuHLM7xhoeeMT7fIAlo91b5o8lk,6178 -django/contrib/humanize/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/humanize/locale/fy/LC_MESSAGES/django.po,sha256=pPvcGgBWiZwQ5yh30OlYs-YZUd_XsFro71T9wErVv0M,4732 -django/contrib/humanize/locale/ga/LC_MESSAGES/django.mo,sha256=vzp6R9xVQ6KRr5NMSkVCQfDea6ZvdoFiOuenzSHyZmI,4929 -django/contrib/humanize/locale/ga/LC_MESSAGES/django.po,sha256=fKw4frizXXcH-B9TKdFQXeoBhSodgraE_g37yuwXTHs,8304 -django/contrib/humanize/locale/gd/LC_MESSAGES/django.mo,sha256=ZMkrFR1irolryUIAZNb4XTpv1f0HRFK70VVNulqE2lI,5545 -django/contrib/humanize/locale/gd/LC_MESSAGES/django.po,sha256=OS7umBbdKJjPvA39Zn38MkdOAPtyLKz8MNmgN2Pwsms,8086 -django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo,sha256=ChoVHsJ_bVIaHtHxhxuUK99Zu1tvRu0iY5vhtB1LDMg,3474 -django/contrib/humanize/locale/gl/LC_MESSAGES/django.po,sha256=U5D505aBKEdg80BGWddcwWuzmYdoNHx1WEPzVHQfbTE,5903 -django/contrib/humanize/locale/he/LC_MESSAGES/django.mo,sha256=9jTg6s4yQ4f4idhWe8oGDxuQ5P-agqWxAxbv06n_klU,4525 -django/contrib/humanize/locale/he/LC_MESSAGES/django.po,sha256=EWmtd-po5Le2ZC7OEz0LCNaLadS7enVop6yUlV1pxhA,6510 -django/contrib/humanize/locale/hi/LC_MESSAGES/django.mo,sha256=qrzm-6vXIUsxA7nOxa-210-6iO-3BPBj67vKfhTOPrY,4131 -django/contrib/humanize/locale/hi/LC_MESSAGES/django.po,sha256=BrypbKaQGOyY_Gl1-aHXiBVlRqrbSjGfZ2OK8omj_9M,6527 -django/contrib/humanize/locale/hr/LC_MESSAGES/django.mo,sha256=29XTvFJHex31hbu2qsOfl5kOusz-zls9eqlxtvw_H0s,1274 -django/contrib/humanize/locale/hr/LC_MESSAGES/django.po,sha256=OuEH4fJE6Fk-s0BMqoxxdlUAtndvvKK7N8Iy-9BP3qA,5424 -django/contrib/humanize/locale/hsb/LC_MESSAGES/django.mo,sha256=aQsAoaJWWQ9XMl5MS8hLXJh1jh1at0ar8RwFq9K6Usw,5530 -django/contrib/humanize/locale/hsb/LC_MESSAGES/django.po,sha256=LpEwVdqV3JsobMp_yEUGBgAY5Wxep1mZtoivYTD4mnQ,8096 -django/contrib/humanize/locale/hu/LC_MESSAGES/django.mo,sha256=-DeFtfmzqaT_H5ZkORSFshsQQIP9roBcLM2Ug7yQ4no,4086 -django/contrib/humanize/locale/hu/LC_MESSAGES/django.po,sha256=6vGKFvNDvijsgNEJcMJ2VTCEvIynq2QqT3-WU4lYUsI,6062 -django/contrib/humanize/locale/hy/LC_MESSAGES/django.mo,sha256=bIhc8KbvaJystkLcJfZt5vJdQ4uL2XfXyuVEIbZP59c,1058 -django/contrib/humanize/locale/hy/LC_MESSAGES/django.po,sha256=EpFGmcz_Wt-kFQmXtV_OVUJDrhiz3WkciHgLeDboUEs,4860 -django/contrib/humanize/locale/ia/LC_MESSAGES/django.mo,sha256=d0m-FddFnKp08fQYQSC9Wr6M4THVU7ibt3zkIpx_Y_A,4167 -django/contrib/humanize/locale/ia/LC_MESSAGES/django.po,sha256=qX6fAZyn54hmtTU62oJcHF8p4QcYnoO2ZNczVjvjOeE,6067 -django/contrib/humanize/locale/id/LC_MESSAGES/django.mo,sha256=F1JT8OXmLl8XkhOnlHdv0HTeIv1yMalwWdklh2EDdXA,3553 -django/contrib/humanize/locale/id/LC_MESSAGES/django.po,sha256=8CMXZfWpMh8y_MPfZOlW4cylctUuSeKkiDYhk-Nr6zU,5284 -django/contrib/humanize/locale/io/LC_MESSAGES/django.mo,sha256=nMu5JhIy8Fjie0g5bT8-h42YElCiS00b4h8ej_Ie-w0,464 -django/contrib/humanize/locale/io/LC_MESSAGES/django.po,sha256=RUs8JkpT0toKOLwdv1oCbcBP298EOk02dkdNSJiC-_A,4720 -django/contrib/humanize/locale/is/LC_MESSAGES/django.mo,sha256=xc_nb854oMBP_bcFq-3aYUHjBgau18XsxbmS7tnSOb0,3586 -django/contrib/humanize/locale/is/LC_MESSAGES/django.po,sha256=GgWsXviADjyKEHQ99jXhQBeSaIUF45HCMOm-IVChT1k,6027 -django/contrib/humanize/locale/it/LC_MESSAGES/django.mo,sha256=NstBWl50Vp62dm8AP2GmLNABjkTu4o4vzwVHYFn-YmQ,4690 -django/contrib/humanize/locale/it/LC_MESSAGES/django.po,sha256=SMBC53O2Ze4N1RbIgxxAH9eZ5YvjyPIoz0kal6p7aus,6877 -django/contrib/humanize/locale/ja/LC_MESSAGES/django.mo,sha256=Z712qDg5UNqsCOJukUk6JQVjrjlegE4vkEfSBLWjZco,3678 -django/contrib/humanize/locale/ja/LC_MESSAGES/django.po,sha256=M64-U-_x1PWYPsVWCpNKtYyhSCLHuxB1Lqt4y4VW-K4,5323 -django/contrib/humanize/locale/ka/LC_MESSAGES/django.mo,sha256=I_5NXFxdCGnJKI29_h3OgemK9KulPiv0P60qEQjdra8,4139 -django/contrib/humanize/locale/ka/LC_MESSAGES/django.po,sha256=wUMRbhz5wpw-Rn8WepMIyADzgOUD7RLu3WxAW6t93p4,5740 -django/contrib/humanize/locale/kk/LC_MESSAGES/django.mo,sha256=uP7HkHrdX0b7z2MsxSuHyDGBFYxZPckBhSbgrn7gcok,2106 -django/contrib/humanize/locale/kk/LC_MESSAGES/django.po,sha256=BL9eeoyhV_geughzhF-Zc-_slFDsCZawngCPaeA8tUY,4878 -django/contrib/humanize/locale/km/LC_MESSAGES/django.mo,sha256=mfXs9p8VokORs6JqIfaSSnQshZEhS90rRFhOIHjW7CI,459 -django/contrib/humanize/locale/km/LC_MESSAGES/django.po,sha256=JQBEHtcy-hrV_GVWIjvUJyOf3dZ5jUzzN8DUTAbHKUg,4351 -django/contrib/humanize/locale/kn/LC_MESSAGES/django.mo,sha256=Oq3DIPjgCqkn8VZMb6ael7T8fQ7LnWobPPAZKQSFHl4,461 -django/contrib/humanize/locale/kn/LC_MESSAGES/django.po,sha256=yrXx6TInsxjnyJfhl8sXTLmYedd2jaAku9L_38CKR5A,4353 -django/contrib/humanize/locale/ko/LC_MESSAGES/django.mo,sha256=zNjlVckSQWWpGBMdgp0LNBxosfnlaP8Z0J-20jyWNLE,3673 -django/contrib/humanize/locale/ko/LC_MESSAGES/django.po,sha256=lprgxAY85u1w0ZceHZsnEoZ3WiRxEr8ciU9K9MQyKTE,5344 -django/contrib/humanize/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/humanize/locale/lb/LC_MESSAGES/django.po,sha256=_y0QFS5Kzx6uhwOnzmoHtCrbufMrhaTLsHD0LfMqtcM,4730 -django/contrib/humanize/locale/lt/LC_MESSAGES/django.mo,sha256=5Iy5CNukpm6h8oIP9xNvXP5kLCp9nfJKyN3qYkFCWas,5036 -django/contrib/humanize/locale/lt/LC_MESSAGES/django.po,sha256=shVVrEuZNDFRQzR8RabtVOf5fOZDJitGFeLV_SawPVQ,7321 -django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo,sha256=ZjMj_0KJke8TwheDUrXIZ5IPlMd22nZBVo739aK5cQU,4848 -django/contrib/humanize/locale/lv/LC_MESSAGES/django.po,sha256=htt4OY9m2zjsW5T_ckINDUSkW4ju91FN00rDePOXs3w,7234 -django/contrib/humanize/locale/mk/LC_MESSAGES/django.mo,sha256=htUgd6rcaeRPDf6UrEb18onz-Ayltw9LTvWRgEkXm08,4761 -django/contrib/humanize/locale/mk/LC_MESSAGES/django.po,sha256=Wl9Rt8j8WA_0jyxKCswIovSiCQD-ZWFYXbhFsCUKIWo,6665 -django/contrib/humanize/locale/ml/LC_MESSAGES/django.mo,sha256=QcVVfN27E0YIc_pdCJthRXo_iDizt36qkElzHuOGYsk,5077 -django/contrib/humanize/locale/ml/LC_MESSAGES/django.po,sha256=gYQAu95Pu-VPWUZFDb7eF8pkwct0i1OSMqYByxJdI0E,7420 -django/contrib/humanize/locale/mn/LC_MESSAGES/django.mo,sha256=odf7zKCb8BS_HWZWQngzYxogRDNBGw6-d65Asfuy-_4,4613 -django/contrib/humanize/locale/mn/LC_MESSAGES/django.po,sha256=PJzeZnx5jWNppTV1OcwSGpqqqnCpBMEAloPRdofkQGE,6603 -django/contrib/humanize/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/humanize/locale/mr/LC_MESSAGES/django.po,sha256=M44sYiBJ7woVZZlDO8rPDQmS_Lz6pDTCajdheyxtdaI,4724 -django/contrib/humanize/locale/my/LC_MESSAGES/django.mo,sha256=55CWHz34sy9k6TfOeVI9GYvE9GRa3pjSRE6DSPk9uQ8,3479 -django/contrib/humanize/locale/my/LC_MESSAGES/django.po,sha256=jCiDhSqARfqKcMLEHJd-Xe6zo3Uc9QpiCh3BbAAA5UE,5433 -django/contrib/humanize/locale/nb/LC_MESSAGES/django.mo,sha256=E5s-_ssH4NicLXQpzv-yVjXhZNV_w0M53trqY8CvcAc,4133 -django/contrib/humanize/locale/nb/LC_MESSAGES/django.po,sha256=vEXWpyGxQeB0kLgjBXc_uSfVay9G8kQT4ZgiPp_vW-c,6084 -django/contrib/humanize/locale/ne/LC_MESSAGES/django.mo,sha256=OR0cBS_sNftLjHBLtQkRsA_SOxlc41G83vBGCvYaG2I,2285 -django/contrib/humanize/locale/ne/LC_MESSAGES/django.po,sha256=t9ukUPhAxkNlLlAMI2ftMUATPBS29UQ7q76WN2rjBWA,5544 -django/contrib/humanize/locale/nl/LC_MESSAGES/django.mo,sha256=MrUWmjHP-PnKHOVw9sv_lY9Zc9C7gc7_Q-pvMv-v_ck,4092 -django/contrib/humanize/locale/nl/LC_MESSAGES/django.po,sha256=-wMck9RFlhmRhNNwgrNtbvq8xSsc7-9enw6R6MFXZUk,6174 -django/contrib/humanize/locale/nn/LC_MESSAGES/django.mo,sha256=_Qbyf366ApSCU09Er6CvEf5WrA8s6ZzsyZXs44BoT10,3482 -django/contrib/humanize/locale/nn/LC_MESSAGES/django.po,sha256=qkEeQKQ8XwPKtTv2Y8RscAnE4QarinOze3Y3BTIEMCk,5818 -django/contrib/humanize/locale/os/LC_MESSAGES/django.mo,sha256=BwS3Mj7z_Fg5s7Qm-bGLVhzYLZ8nPgXoB0gXLnrMGWc,3902 -django/contrib/humanize/locale/os/LC_MESSAGES/django.po,sha256=CGrxyL5l-5HexruOc7QDyRbum7piADf-nY8zjDP9wVM,6212 -django/contrib/humanize/locale/pa/LC_MESSAGES/django.mo,sha256=TH1GkAhaVVLk2jrcqAmdxZprWyikAX6qMP0eIlr2tWM,1569 -django/contrib/humanize/locale/pa/LC_MESSAGES/django.po,sha256=_7oP0Hn-IU7IPLv_Qxg_wstLEdhgWNBBTCWYwSycMb0,5200 -django/contrib/humanize/locale/pl/LC_MESSAGES/django.mo,sha256=LDdQZOQCF8mP_zYa9V-92yzwveCWTNNfDProLGv1twc,5529 -django/contrib/humanize/locale/pl/LC_MESSAGES/django.po,sha256=F4kNtZQzHDszLbqq8HnqkpPmhJz8jcEC5Bunm5PzTKU,8321 -django/contrib/humanize/locale/pt/LC_MESSAGES/django.mo,sha256=DdrToaq5E5Kap-zxhG8wf8zbAc8HZg1lu-2SD9i1i0Y,4154 -django/contrib/humanize/locale/pt/LC_MESSAGES/django.po,sha256=Jea815CpFnPMEUwW9bxGrFXhchmspQADY6_Yw3oajtY,6175 -django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mo,sha256=YIcwaSVUZsZA7Ewy1hnx0GlsNBSAcP-OuG596Js5XYU,4209 -django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po,sha256=Ohofjmm5KL5cVMEx6RaOGAINUK8i0TibNqxmKor2Opo,6284 -django/contrib/humanize/locale/ro/LC_MESSAGES/django.mo,sha256=DEGe-uMxn0J32A-4Oxymv_B9ijMzqu1SCL2tx887oxc,4809 -django/contrib/humanize/locale/ro/LC_MESSAGES/django.po,sha256=4QeGoZoQ48-J0BeWhTf4EPrtLMNvCBrxnOxbxEprZVU,7192 -django/contrib/humanize/locale/ru/LC_MESSAGES/django.mo,sha256=iSO02s7aCtRW9B3e8CioHFCfaBC1SsMlOhVs-cWX2XE,6887 -django/contrib/humanize/locale/ru/LC_MESSAGES/django.po,sha256=5AXIQgGoyaHVSLW81HTKrCpegh80FZL4NnIwe3iUxGw,9697 -django/contrib/humanize/locale/sk/LC_MESSAGES/django.mo,sha256=U4iWXostWL1gUvrIbalfqhYjhL0mvlig3mlD1DU8_m8,4762 -django/contrib/humanize/locale/sk/LC_MESSAGES/django.po,sha256=kJUNxtiRawS2QtJqNRq2UtlRwF58kTH_fqPu1pD7t9M,7112 -django/contrib/humanize/locale/sl/LC_MESSAGES/django.mo,sha256=f_07etc_G4OdYiUBKPkPqKm2iINqXoNsHUi3alUBgeo,5430 -django/contrib/humanize/locale/sl/LC_MESSAGES/django.po,sha256=mleF0fvn0oEfszhGLoaQkWofTwZJurKrJlIH8o-6kAI,8166 -django/contrib/humanize/locale/sq/LC_MESSAGES/django.mo,sha256=CRP5lgqDsEGndO2njVsrzz3teaHui_tcXxT2E-x-_pE,4126 -django/contrib/humanize/locale/sq/LC_MESSAGES/django.po,sha256=48tIBBQaneqtWnvldp113UVTYQ6LcDVGmGZJMW1EzvM,6083 -django/contrib/humanize/locale/sr/LC_MESSAGES/django.mo,sha256=cooZLInAmU3nmov6__XS5MOTEN77NPuwNAL1n7XyqJw,542 -django/contrib/humanize/locale/sr/LC_MESSAGES/django.po,sha256=kY7hZI2ci8VP3I1PNXBhGNchggUzIsKl_7VOI-QMeW4,5165 -django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=PaGxGtTZSzguwipvTdOhO7bvM8WlzCWb1RCEaIupRUQ,562 -django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po,sha256=FrPnMu6xX0NypoRYRAOBhdICGSv8geuHXQKKn3Gd9ck,5185 -django/contrib/humanize/locale/sv/LC_MESSAGES/django.mo,sha256=BwB7K9qfHGNIdP65Pa70lTZRSdhkX5F4eoAZLOtaVSk,4097 -django/contrib/humanize/locale/sv/LC_MESSAGES/django.po,sha256=1l0V8_sXXtqT75eOa6ZyhOm0ltLOP5sK34yDKAjGGf4,6111 -django/contrib/humanize/locale/sw/LC_MESSAGES/django.mo,sha256=cxjSUqegq1JX08xIAUgqq9ByP-HuqaXuxWM8Y2gHdB4,4146 -django/contrib/humanize/locale/sw/LC_MESSAGES/django.po,sha256=bPYrLJ2yY_lZ3y1K-RguNi-qrxq2r-GLlsz1gZcm2A8,6031 -django/contrib/humanize/locale/ta/LC_MESSAGES/django.mo,sha256=1X2vH0iZOwM0uYX9BccJUXqK-rOuhcu5isRzMpnjh2o,466 -django/contrib/humanize/locale/ta/LC_MESSAGES/django.po,sha256=8x1lMzq2KOJveX92ADSuqNmXGIEYf7fZ1JfIJPysS04,4722 -django/contrib/humanize/locale/te/LC_MESSAGES/django.mo,sha256=iKd4dW9tan8xPxgaSoenIGp1qQpvSHHXUw45Tj2ATKQ,1327 -django/contrib/humanize/locale/te/LC_MESSAGES/django.po,sha256=FQdjWKMsiv-qehYZ4AtN9iKRf8Rifzcm5TZzMkQVfQI,5103 -django/contrib/humanize/locale/th/LC_MESSAGES/django.mo,sha256=wg--ON3KI_VvonwNy04eSkKQSGVz89IJF8Kf41WBWzo,3922 -django/contrib/humanize/locale/th/LC_MESSAGES/django.po,sha256=qrDqW3DS1yxUIdUqMKRHygg2kcUXyx3nZuNxsx11tcg,5689 -django/contrib/humanize/locale/tr/LC_MESSAGES/django.mo,sha256=feX8ZCE3GJqnN71FLVcLesBuERKmi9Uutj3ebW27Nns,4109 -django/contrib/humanize/locale/tr/LC_MESSAGES/django.po,sha256=g0bK25v2vJgzRTS3XeohzEohWwysrLFuECj0GE4WpBA,6154 -django/contrib/humanize/locale/tt/LC_MESSAGES/django.mo,sha256=z8VgtMhlfyDo7bERDfrDmcYV5aqOeBY7LDgqa5DRxDM,3243 -django/contrib/humanize/locale/tt/LC_MESSAGES/django.po,sha256=j_tRbg1hzLBFAmPQt0HoN-_WzWFtA07PloCkqhvNkcY,5201 -django/contrib/humanize/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/humanize/locale/udm/LC_MESSAGES/django.po,sha256=AR55jQHmMrbA6RyHGOtqdvUtTFlxWnqvfMy8vZK25Bo,4354 -django/contrib/humanize/locale/uk/LC_MESSAGES/django.mo,sha256=zCT4FX9Uve9UODCIxXiJQEbn56QoYO1QQdNX_q3kq9g,5964 -django/contrib/humanize/locale/uk/LC_MESSAGES/django.po,sha256=AsBjFUJ0sZ7wa3aGVV5AduEkqOLwcGfp6muVI2nwEUU,8397 -django/contrib/humanize/locale/ur/LC_MESSAGES/django.mo,sha256=MF9uX26-4FFIz-QpDUbUHUNLQ1APaMLQmISMIaPsOBE,1347 -django/contrib/humanize/locale/ur/LC_MESSAGES/django.po,sha256=D5UhcPEcQ16fsBEdkk_zmpjIF6f0gEv0P86z_pK_1eA,5015 -django/contrib/humanize/locale/vi/LC_MESSAGES/django.mo,sha256=ZUK_Na0vnfdhjo0MgnBWnGFU34sxcMf_h0MeyuysKG8,3646 -django/contrib/humanize/locale/vi/LC_MESSAGES/django.po,sha256=DzRpXObt9yP5RK_slWruaIhnVI0-JXux2hn_uGsVZiE,5235 -django/contrib/humanize/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=NvsjXwBi6Scg55ZMkZ4BbqNR-Svo-oey1x87Wv2hBgs,3573 -django/contrib/humanize/locale/zh_Hans/LC_MESSAGES/django.po,sha256=gGuUfdDHyxX7nkaMMP_Ii9Q0QEkBI7cgMIOVMGRc_Ag,5336 -django/contrib/humanize/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=MXoemB7iwj3zMOZfPxRi9rc_1xsYZKPpGerwZjbM2m8,3314 -django/contrib/humanize/locale/zh_Hant/LC_MESSAGES/django.po,sha256=RSmQwPspRIe0U15m4zYz7x8VAiXHp6z55oLXxk9yFKE,5130 -django/contrib/humanize/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/humanize/templatetags/humanize.py,sha256=eafUdDGaq8YJEZ0OoWO_0tlxDfpQ2iJ6lRPUqoih4z0,9288 -django/contrib/messages/__init__.py,sha256=PcKzOk4zt5345uws-agcbNdhYMsIOJzV7-p7nwxJorI,175 -django/contrib/messages/api.py,sha256=sWP2DP-n8ZWOTM-BLFDGrH_l-voGwrSxC0OgEyJt1F4,3071 -django/contrib/messages/apps.py,sha256=yGXBKfV5WF_ElcPbX4wJjXq6jzp39ttnO7sp8N_IzOQ,194 -django/contrib/messages/constants.py,sha256=WZxjzvEoKI7mgChSFp_g9e-zUH8r6JLhu9sFsftTGNA,312 -django/contrib/messages/context_processors.py,sha256=0LniZjxZ7Fx2BxYdJ0tcruhG4kkBEEhsc7Urcf31NnE,354 -django/contrib/messages/middleware.py,sha256=4L-bzgSjTw-Kgh8Wg8MOqkJPyilaxyXi_jH1UpP1h-U,986 -django/contrib/messages/utils.py,sha256=wvGHYnU9zocxzwIEkFgo5deHxZ5aDlAY7q2MpyOPLFk,284 -django/contrib/messages/views.py,sha256=R5xD2DLmAO0x6EGpE8TX5bku4zioOiYkQnAtf6r-VAE,523 -django/contrib/messages/storage/__init__.py,sha256=gXDHbQ9KgQdfhYOla9Qj59_SlE9WURQiKzIA0cFH0DQ,392 -django/contrib/messages/storage/base.py,sha256=SyLyVQeRdmPvVt9SO4srCdIb0m2oBu1H_iOx40M48BM,5643 -django/contrib/messages/storage/cookie.py,sha256=CTDV2dYgm_DQsnkY8nZOO6gLYanYTCQ9Z05xm1XUyxY,6463 -django/contrib/messages/storage/fallback.py,sha256=irMgvzx5RgSaZLOPHR_pS5wCwK6HY7ABvOAzDk7Hhno,2145 -django/contrib/messages/storage/session.py,sha256=KTAqur1KMJUc-liD-I0mVDYbafMS23zxZfnFz4XPiiU,1729 -django/contrib/postgres/__init__.py,sha256=jtn9-mwOISc5D_YUoQ5z_3sN4bEPNxBOCDzbGNag_mc,67 -django/contrib/postgres/apps.py,sha256=PQiKQDH4lXf6xzNoJoi8J1xdueCnc3wefrfa1VMfRLA,1614 -django/contrib/postgres/functions.py,sha256=zHeAyKR5MhnsIGI5qbtmRdxPm8OtycEBE5OmCNyynD8,252 -django/contrib/postgres/indexes.py,sha256=y5Lb_DDiRBXKO2B6RgiS4IaHNhj5u3Ai3wnHISO6kwQ,3623 -django/contrib/postgres/lookups.py,sha256=p-1NZhB4kXC1e-lvJTDHh2Qpiz7A4W7TuG9NuvdF_4Y,1578 -django/contrib/postgres/operations.py,sha256=R8jm7u9K5dPvdbmsSvCO95x8oI7LSat01CeXtPUzL5c,2010 -django/contrib/postgres/search.py,sha256=h5Ri5X0aha29YMMfLM1OKq7rrKWeSTidHzXFhRIYV-Q,8295 -django/contrib/postgres/signals.py,sha256=MmUklgaTW1-UBMGQTxNO_1fsO7mZugGs9ScovuCIyJo,2245 -django/contrib/postgres/utils.py,sha256=46XKNKRB1aUUU7ALNiDLrZpPWbAwanxUxuTir7XDuDI,1188 -django/contrib/postgres/validators.py,sha256=h1d2Sw-gU3hfkgXNjjIf5TUDSjTeY-2xBQD1N3zj7GQ,2688 -django/contrib/postgres/aggregates/__init__.py,sha256=QCznqMKqPbpraxSi1Y8-B7_MYlL42F1kEWZ1HeLgTKs,65 -django/contrib/postgres/aggregates/general.py,sha256=nRA1EiUk9_H9IDu1M5mxLm48Nl2S4L9l_SrCfBBlBis,1481 -django/contrib/postgres/aggregates/statistics.py,sha256=NWyxMgDsfQ3f5yvqAcxJ13LayjGkRPj90wVJa4k7QdM,1691 -django/contrib/postgres/fields/__init__.py,sha256=Xo8wuWPwVNOkKY-EwV9U1zusQ2DjMXXtL7_8R_xAi5s,148 -django/contrib/postgres/fields/array.py,sha256=h3JPunEEF7VgrLi48DBDiYCRXni14LtiLOXRM5QvBMU,10220 -django/contrib/postgres/fields/citext.py,sha256=G40UZv4zop8Zrq2vMhluZ-MT7yPLEc8IEDi3hZ27gGw,439 -django/contrib/postgres/fields/hstore.py,sha256=sXoTtghueLtLl7dlVXFKSj7km3G_ZV9zVau_6Q4F-3w,3144 -django/contrib/postgres/fields/jsonb.py,sha256=8Mt9v2dGV1Pi2r8ux5ttwwbg9W-uHe7tg3B2DZcgoDw,5603 -django/contrib/postgres/fields/ranges.py,sha256=ozBEsZjvGQGWOZTN8VupDMVL19mHLXMyWZpESVgzWC0,7565 -django/contrib/postgres/fields/utils.py,sha256=TV-Aj9VpBb13I2iuziSDURttZtz355XakxXnFwvtGio,95 -django/contrib/postgres/forms/__init__.py,sha256=GSqucR50I9jrZUYZUFVmb8nV_FSlXu1BcCpFck2pVXI,118 -django/contrib/postgres/forms/array.py,sha256=7TU7UZr8hcbzbOyfh8rg79okSPctxrD-zFDsIv1Cvq0,7083 -django/contrib/postgres/forms/hstore.py,sha256=G2s-SO0VGK4oUgP8uNYopU5FM6143tfF814qpWKNTLE,1756 -django/contrib/postgres/forms/jsonb.py,sha256=JSDIyLVREKtesUGNmznxX06NqAFEBR0lCrlHMogNfic,1335 -django/contrib/postgres/forms/ranges.py,sha256=_LWXysT2AdvgSsAtNyPxHP0hgTolsQoUOCLWT7KukoA,3069 -django/contrib/postgres/jinja2/postgres/widgets/split_array.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/contrib/postgres/locale/ar/LC_MESSAGES/django.mo,sha256=AFcSJOhEOAWVIXw9q7FoyyT9G1ufw530IG2GwOYNOJw,4416 -django/contrib/postgres/locale/ar/LC_MESSAGES/django.po,sha256=ZEYrujwMpePljEsEjgJrRgHvQWn6zP9zYVkan83TyuU,5017 -django/contrib/postgres/locale/be/LC_MESSAGES/django.mo,sha256=nDK0-dYUAORaNB--uNHLQfvSnZZfe0yGdQwAe0AMFkU,4490 -django/contrib/postgres/locale/be/LC_MESSAGES/django.po,sha256=MoFwiR6pvjrN0YhFrhmAcQ4IQ6TRkFiVXf7TB8zjcQo,4964 -django/contrib/postgres/locale/bg/LC_MESSAGES/django.mo,sha256=7VaGqc8TO0NVL-eZbxVuGb8J6atQ_aC3C3Nh3G9zcJQ,3439 -django/contrib/postgres/locale/bg/LC_MESSAGES/django.po,sha256=9S2pgIZFOv3qp0QunLFUfPiNk40RZjHIiVA39Uj3zFs,4010 -django/contrib/postgres/locale/ca/LC_MESSAGES/django.mo,sha256=FpOKL9S0AWN5r2epnr7SdDX6VmwjBrHNGCSisxjw6H0,3167 -django/contrib/postgres/locale/ca/LC_MESSAGES/django.po,sha256=O3JMTA3jFpV0oV3GPpBSDsv98KBe6MDXJCO1c50VjiQ,3577 -django/contrib/postgres/locale/cs/LC_MESSAGES/django.mo,sha256=_9TFrq4kX_TSgSnIYV36rAadZZgPWoXnoh52-5E5yMs,3430 -django/contrib/postgres/locale/cs/LC_MESSAGES/django.po,sha256=2h_nqHgcMkU5YXoS4NpTmREoV7eUHQeRhmlkZEqT3G4,3863 -django/contrib/postgres/locale/da/LC_MESSAGES/django.mo,sha256=lTWGoAM4SCEn1UWK8fw1qyW8AwB4U6SW9LdWjs5Z1D8,3168 -django/contrib/postgres/locale/da/LC_MESSAGES/django.po,sha256=9syIhFzERg9Kojmz-QXYzm4F1F4UnPps79XwMx6p31M,3559 -django/contrib/postgres/locale/de/LC_MESSAGES/django.mo,sha256=1K356glWEevm4oteYtUKV1Loh1fpAjjlrFgF9yfwjcI,3275 -django/contrib/postgres/locale/de/LC_MESSAGES/django.po,sha256=MXPu492vKgQLLHngr6m2d08YUNAcwz01e3h9GxfbvIE,3723 -django/contrib/postgres/locale/dsb/LC_MESSAGES/django.mo,sha256=TPK-iwbKFpXnPtct5K13cTbdFSxHHyAUlS4U9nVysZI,3856 -django/contrib/postgres/locale/dsb/LC_MESSAGES/django.po,sha256=FiSOY82p0UWnkXS05BeEQ5Uzhs74ZlNaxFIMMSRGpVo,4289 -django/contrib/postgres/locale/el/LC_MESSAGES/django.mo,sha256=kHjTGVK-3Y06GyjqRBi5_Ki_epzPUYt7zQKpukUOwFo,3918 -django/contrib/postgres/locale/el/LC_MESSAGES/django.po,sha256=VP82YDf9x1EmSOVmBY7zkgQcX7EfQQZFUpeRV3dtHtk,4407 -django/contrib/postgres/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/postgres/locale/en/LC_MESSAGES/django.po,sha256=IfHN0MYCktjtf0jKfyb4I1oEU9fqhCyqS4X4qZr2lDs,3131 -django/contrib/postgres/locale/eo/LC_MESSAGES/django.mo,sha256=N1T-nA1IdhKKDbZ76nV968OSMMbteXwwBdhzRi3taWs,3149 -django/contrib/postgres/locale/eo/LC_MESSAGES/django.po,sha256=KJbhFGHiJI2chKO9BytzpzRvlSsBvkNqoxP1N0okdko,3528 -django/contrib/postgres/locale/es/LC_MESSAGES/django.mo,sha256=9tNVeSpK1jUt7V2qZyKwbJbfJl3vH2Sy_3Y2GkvLnSY,3177 -django/contrib/postgres/locale/es/LC_MESSAGES/django.po,sha256=9N3ZeiyEZ7_DIgskPFIAIoEGLAGhiPMJdR-SHftisOo,3688 -django/contrib/postgres/locale/es_AR/LC_MESSAGES/django.mo,sha256=NbkQzNZxVjBSH6NmFhvKxtU1FJzlbSjNTaq53Ml5WKQ,3173 -django/contrib/postgres/locale/es_AR/LC_MESSAGES/django.po,sha256=0jrDzJ2PbzuKxBKlpUtEXLMsjVTio-CIaHRooYbIuR8,3511 -django/contrib/postgres/locale/es_CO/LC_MESSAGES/django.mo,sha256=wmkoFFXblYw1ufz4gcSntO79yq20mHl8hlbj4Hhmcug,2903 -django/contrib/postgres/locale/es_CO/LC_MESSAGES/django.po,sha256=Br2Lo11i-EeryGFsRmUWr_PD6_xk8kavVzdwqtR7AuU,3579 -django/contrib/postgres/locale/es_MX/LC_MESSAGES/django.mo,sha256=4-c48HNLkDnIIPIBOaIhxoOf4muYRRelX0rR0dVrpAE,882 -django/contrib/postgres/locale/es_MX/LC_MESSAGES/django.po,sha256=5HmM8uVQkt869MyzuQIk5C6czFe4MTRz5CBmgeN_V14,2496 -django/contrib/postgres/locale/et/LC_MESSAGES/django.mo,sha256=_BZuR25C1mzMVR2LTXE4u4QaP5ht7C7q8PjsnAEEQO8,3081 -django/contrib/postgres/locale/et/LC_MESSAGES/django.po,sha256=BF6hMf4uD6sFFXBJoudgimwKCj25jlzt7rjK3lg-BFA,3592 -django/contrib/postgres/locale/eu/LC_MESSAGES/django.mo,sha256=T7pDulEqODUPdC4sI4w-COAM5nT9C3jbAas8i24l_ms,3139 -django/contrib/postgres/locale/eu/LC_MESSAGES/django.po,sha256=OQlFVw0YFSF6s6iG6omYP1ISwevmSmAVSrH1FrqE2G8,3545 -django/contrib/postgres/locale/fa/LC_MESSAGES/django.mo,sha256=TlOdD8SW4sddFi5kAk0p0mvgDuq7SNre4LWZnOxBu9s,3134 -django/contrib/postgres/locale/fa/LC_MESSAGES/django.po,sha256=hE9GISly_L-wxF7CjHDv35GuHLcK8sLsVOpimMmtfHw,3638 -django/contrib/postgres/locale/fi/LC_MESSAGES/django.mo,sha256=eVu4C_rIzT2fQGNbJDEkrQb4pjF00lOPAixxqpYvbhs,3212 -django/contrib/postgres/locale/fi/LC_MESSAGES/django.po,sha256=zILj96C-jR-bjBRVVLScZngm7MRA-BtUM4j4IUMNJ48,3555 -django/contrib/postgres/locale/fr/LC_MESSAGES/django.mo,sha256=YomiZJPQJn88dkoaw7oXHGbq3oR3i35KopCGndxu5bY,3394 -django/contrib/postgres/locale/fr/LC_MESSAGES/django.po,sha256=t1fRjfzAQ0Y1nN9vSe5SUsBMw4NZXr_ensyHcOPrDr0,3752 -django/contrib/postgres/locale/gd/LC_MESSAGES/django.mo,sha256=-KqMRc027ysJr0R1rjgM3zJGeJpl8S3IXhmZTTmbrag,3830 -django/contrib/postgres/locale/gd/LC_MESSAGES/django.po,sha256=SflmgOSRvtcVT3ik94Cln-B0-wrkEmtraJUOXaKlGEc,4260 -django/contrib/postgres/locale/gl/LC_MESSAGES/django.mo,sha256=YlBrsev1RIUA4Zxbnl_ufkTANki4VM9O42Ge07u5QPc,722 -django/contrib/postgres/locale/gl/LC_MESSAGES/django.po,sha256=h4Z-Fdi9o1MG33vCWGMHqSj6dklYy653vGkq81lYeKA,2433 -django/contrib/postgres/locale/he/LC_MESSAGES/django.mo,sha256=KTUQ0NyBzsVOp1lEtbAmCaLiDHSf1R9EX_tV14oHm_g,3496 -django/contrib/postgres/locale/he/LC_MESSAGES/django.po,sha256=Ea3_H_jUWZLm9q22bcN_ClKkyehTjXAcCujRvgsTav8,3832 -django/contrib/postgres/locale/hr/LC_MESSAGES/django.mo,sha256=oIY9TCvkVmv-fGbGs-N2acx5VC3PNzZxWW4FRjWbTUQ,1217 -django/contrib/postgres/locale/hr/LC_MESSAGES/django.po,sha256=EnvgxKmz6qBe6cH05CAm0bO5zuXkAOYFnRF5c4LmIRo,2762 -django/contrib/postgres/locale/hsb/LC_MESSAGES/django.mo,sha256=3h5K1tt9ykZjomwtSU3J7XZfF__yAL7RpFRzi0lHFcY,3770 -django/contrib/postgres/locale/hsb/LC_MESSAGES/django.po,sha256=TWUk3s8iDmS4msL0w1gwWpqLDXqfPDA9oq_c4U2PECE,4197 -django/contrib/postgres/locale/hu/LC_MESSAGES/django.mo,sha256=Qe5bXdGZLV0wG8bZhGK1ybGjATkKZ7OHaqEOcbZGcA4,3182 -django/contrib/postgres/locale/hu/LC_MESSAGES/django.po,sha256=puxHgfIWm0Vd3RHp1TnOKnY1mQ1hsDWNJar8NVNsyfk,3591 -django/contrib/postgres/locale/ia/LC_MESSAGES/django.mo,sha256=dnyXX0ii0CFMrI02mZhkCzY66KTFdWXBOlXjo6gP_Ps,758 -django/contrib/postgres/locale/ia/LC_MESSAGES/django.po,sha256=jNRfADlv6JldyeezHt_3LXpudpmA-cXr73GIe3aPd6E,2475 -django/contrib/postgres/locale/id/LC_MESSAGES/django.mo,sha256=2HRHOOC--1Rvm2goSDBk_sSIW1DjXwh3rNEEPKJqwOw,3039 -django/contrib/postgres/locale/id/LC_MESSAGES/django.po,sha256=6yQ_Evu0aiIabZcwIgsFmDaDxWBvbZh_3hDK8aVyUsw,3557 -django/contrib/postgres/locale/is/LC_MESSAGES/django.mo,sha256=B5rRF5HIz4ervHG45GxzSVDYL6rclTOUREuaP28sCjs,3213 -django/contrib/postgres/locale/is/LC_MESSAGES/django.po,sha256=mIm4o1WDfQ1wBQuGXMzm1AulMIDU6iZPvYEMWvZqUSw,3571 -django/contrib/postgres/locale/it/LC_MESSAGES/django.mo,sha256=kW6Oh5NNTvpiMewskoW3AmU9WcY_zO0OTcscgwbStrE,3249 -django/contrib/postgres/locale/it/LC_MESSAGES/django.po,sha256=vBOsM6PRYKQrPrOEe1PlhPGyZbGs-3YVCSnUlnfaYlM,3805 -django/contrib/postgres/locale/ja/LC_MESSAGES/django.mo,sha256=jvSBcIEgAlIsRCPz997u-5eH9Ioi5YjuktReayURCAU,3350 -django/contrib/postgres/locale/ja/LC_MESSAGES/django.po,sha256=-YHBmtzc_xG-E_vbndLBd0ax_9mexkuTDGVCyEEYhpM,3665 -django/contrib/postgres/locale/ka/LC_MESSAGES/django.mo,sha256=0ChFF9W99iPidTL-CC2R0owYonG-UKys7TS_2W97V3E,767 -django/contrib/postgres/locale/ka/LC_MESSAGES/django.po,sha256=i5KHzekJykKxdFgAYpQ_KBzFY3R3TXr9FrQcdHKVYko,2494 -django/contrib/postgres/locale/kk/LC_MESSAGES/django.mo,sha256=TGzYaFdRPsEqIo6tsjScDSDKuQLMYOrr8grzA0l45kc,868 -django/contrib/postgres/locale/kk/LC_MESSAGES/django.po,sha256=JL7TPe92MWWX9U1ARGPmBPKQU2EZ9lJamiwn_C51aK4,2552 -django/contrib/postgres/locale/ko/LC_MESSAGES/django.mo,sha256=0koE2OIe1bizQsdtvO2nrcY48kM72eHGRn7KOgeXm44,3194 -django/contrib/postgres/locale/ko/LC_MESSAGES/django.po,sha256=e_D3CoKvNmfnfKqV9drQdj9c2VaYQEjFU87C3a30AIM,3637 -django/contrib/postgres/locale/lt/LC_MESSAGES/django.mo,sha256=zlgggxW5wR_ougmTMYWEaAxLC7_ZTEOQwtifN-EupOQ,3564 -django/contrib/postgres/locale/lt/LC_MESSAGES/django.po,sha256=FDEsLus6STxMRg6LRLKfTZ8es554yLP_pvHQ-g5tbSM,3954 -django/contrib/postgres/locale/lv/LC_MESSAGES/django.mo,sha256=68lVQD3NgI3dfKKl2Gsb-O8x9AWCSzgrRJZmA9adBwY,3399 -django/contrib/postgres/locale/lv/LC_MESSAGES/django.po,sha256=SptJipFI0GvtcTvVozDCvSi_Lq1qk-vOsCh4whDOKjQ,3825 -django/contrib/postgres/locale/mk/LC_MESSAGES/django.mo,sha256=UFofPo5u8GZFQeJUXpXv9WkzN8-L3RYB4QtpWSPZucw,3717 -django/contrib/postgres/locale/mk/LC_MESSAGES/django.po,sha256=p6bHPCPH1XuUJ_62EXW3fXnaKCtAvuDLAvS3H1JcX9s,4284 -django/contrib/postgres/locale/mn/LC_MESSAGES/django.mo,sha256=emgB5tVUbpnT76xUh0nuMKryQyYMrySCQ4dlYQeCYco,3755 -django/contrib/postgres/locale/mn/LC_MESSAGES/django.po,sha256=6GKhHqnrt-Sg3JtYHiy-_-1l1MLBymREuQRXKQgmOCM,4229 -django/contrib/postgres/locale/nb/LC_MESSAGES/django.mo,sha256=1TOafNdcKTEJaAolBV-RpA7fxDe46wkxYJuSXSYQ9Mw,3113 -django/contrib/postgres/locale/nb/LC_MESSAGES/django.po,sha256=VSSxNYqiKX30j6n2ju3_1iYHFx4TIqDeT2Vp9R24hOc,3482 -django/contrib/postgres/locale/ne/LC_MESSAGES/django.mo,sha256=wZ0UYJI4qUpPjLvsPCqRCuHbEKpBz9uOh6qncgXh59g,934 -django/contrib/postgres/locale/ne/LC_MESSAGES/django.po,sha256=ndvFMUw2XzBukzedzXUiPQfnnOitrOlJtz2TZgv0TX4,2590 -django/contrib/postgres/locale/nl/LC_MESSAGES/django.mo,sha256=SluBtCazF6LA_EpX5pAwJP1mOtH9vJcv7d_8ZjNyPuE,3243 -django/contrib/postgres/locale/nl/LC_MESSAGES/django.po,sha256=FgAgj21e2fPZwmQPoToqKPrxeYFrDGx01Heo9SU9sgM,3745 -django/contrib/postgres/locale/pl/LC_MESSAGES/django.mo,sha256=Tlrhv__Nj1jD5CGGChirF-ujHGO32F6r3DclQkdMB1A,3740 -django/contrib/postgres/locale/pl/LC_MESSAGES/django.po,sha256=x8RdxSRhRq2l9WmQTamN2-gRtkaWObfVP83tblcEM6M,4381 -django/contrib/postgres/locale/pt/LC_MESSAGES/django.mo,sha256=rXcN8bscv14PzPRIDxmJGHcRPNUdEbOE_cWFI-hjf1g,3136 -django/contrib/postgres/locale/pt/LC_MESSAGES/django.po,sha256=Urf8o67oVUpzTHuWGna3Cn6FxgRKPbCVI2CtXmRP220,3576 -django/contrib/postgres/locale/pt_BR/LC_MESSAGES/django.mo,sha256=jJvTRzWJVEEo1ash3rhm1rFbF7FJvt188MPHPsbpIzo,3194 -django/contrib/postgres/locale/pt_BR/LC_MESSAGES/django.po,sha256=uEY62Tl09VUmV_f-CPPITyvk-I8jBePzqPZajrrekjo,3855 -django/contrib/postgres/locale/ro/LC_MESSAGES/django.mo,sha256=xQdeGHTLGLDBDDiehtzGnTdZh8oQrVG9hGRTh0FT56g,3488 -django/contrib/postgres/locale/ro/LC_MESSAGES/django.po,sha256=RIOdMn_XBWqafZrxV5vjPs-lZLkGi5-jpxsRentFcFM,3907 -django/contrib/postgres/locale/ru/LC_MESSAGES/django.mo,sha256=MU2dyAcO-xeF1y6Ea_MSEFGbc-8y_7p1GH-NRJe62Cs,5123 -django/contrib/postgres/locale/ru/LC_MESSAGES/django.po,sha256=hcl1Uuof6ENYVPQ_7ycEAzxghpoGwMKYFjK_DU-D6_A,5773 -django/contrib/postgres/locale/sk/LC_MESSAGES/django.mo,sha256=CLTqMW_0M-gEqH3Z_-uXanLMi2IxLr6y9u323Q3OJg8,3400 -django/contrib/postgres/locale/sk/LC_MESSAGES/django.po,sha256=D-HhtGgJQ0KnSnf6dHTo9LpetvruFJ7hw_XjjBq_z7g,3777 -django/contrib/postgres/locale/sl/LC_MESSAGES/django.mo,sha256=BT1LywwWuDO9iENJm-pqBksEisuETBlh0r4ILn4wgx0,3524 -django/contrib/postgres/locale/sl/LC_MESSAGES/django.po,sha256=YmFNHoKR5av9ychiCloy5OXeL_v-rDzA0vYqUy84umc,3988 -django/contrib/postgres/locale/sq/LC_MESSAGES/django.mo,sha256=0143JMFtUYLXOoSRvFydzC-xl1V6QkbL3oHQ-QBOoZk,3110 -django/contrib/postgres/locale/sq/LC_MESSAGES/django.po,sha256=GuT0Ax6Vka7xdSgXyr4-0_nuxIcihRSs8xMiTCQBGdE,3516 -django/contrib/postgres/locale/sv/LC_MESSAGES/django.mo,sha256=i4z7Yn_Ows9G_UoCW8zIulJIrAfB1sJWib-kpG7Y_PA,2875 -django/contrib/postgres/locale/sv/LC_MESSAGES/django.po,sha256=5VjgW0c_nTPeh_4nsiUHpv_toFn0c5ytKfM06g-NrlQ,3477 -django/contrib/postgres/locale/tr/LC_MESSAGES/django.mo,sha256=WX43GC_VDxf-36UxWrab6dCBPBvPj9O06hVoWzsS8JU,3164 -django/contrib/postgres/locale/tr/LC_MESSAGES/django.po,sha256=sfqVCqaFZtbRnDmqTVK4190-AYKJwgyMopuYjkjXmh4,3511 -django/contrib/postgres/locale/uk/LC_MESSAGES/django.mo,sha256=3uPY2QOsonJJ67IZipxS45D6nhiS0p1-egxWqQBIyU8,4309 -django/contrib/postgres/locale/uk/LC_MESSAGES/django.po,sha256=n2qxj5e7ipENpTFganpkcSAJUMnASM2w5l0YxmTijzg,4861 -django/contrib/postgres/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=t4Zea1ndeWCQMDYvdprtTDkyPXnqg3lAV7WB5TAZFNI,2854 -django/contrib/postgres/locale/zh_Hans/LC_MESSAGES/django.po,sha256=4ICKRVdfo78YeoAK_G7DvlWz-ixUWNDCbBkGVHnDhH8,3242 -django/contrib/postgres/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=65JDiksp4dDMlCPrCbbSZ-DDEXSD3rnPKF8o-RpdptA,2864 -django/contrib/postgres/locale/zh_Hant/LC_MESSAGES/django.po,sha256=MMLZpVZw1SdxWoscLSO9k2YTO5YX2GXFhSag99zNpoI,3211 -django/contrib/postgres/templates/postgres/widgets/split_array.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/contrib/redirects/__init__.py,sha256=9vdTkDvH0443yn0qXx59j4dXPn3P-Pf9lB8AWrSp_Bk,69 -django/contrib/redirects/admin.py,sha256=P9wp8yIvDjJSfIXpWYM2ftDlVhKvte_0AM9Ky_j1JIs,314 -django/contrib/redirects/apps.py,sha256=BvTvN3IXCv7yEKqhxwCDiSCZ3695YXNttEvmONHNxC4,197 -django/contrib/redirects/middleware.py,sha256=kJfTIj8G2loRgiEJkqiYEredzt4xhNAfDaTZkk9Coyo,1926 -django/contrib/redirects/models.py,sha256=x9f9oGGbUDsn1If6zLwDpkwW3M2Anl-Zj845WA121fg,985 -django/contrib/redirects/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 -django/contrib/redirects/locale/af/LC_MESSAGES/django.po,sha256=azk3eRV64rp6_41m5S1vkDRZ5YZ_OjJ6pfn4wqOlKnQ,942 -django/contrib/redirects/locale/ar/LC_MESSAGES/django.mo,sha256=BX8CzqhOiPIE2dZ1J-bomSuudCMDs8MKbZ1aCzFUrXk,1342 -django/contrib/redirects/locale/ar/LC_MESSAGES/django.po,sha256=v4WQ_5jy6a_JupP7YLLxVIOB82UjIDZJ09uuFCaJCIc,1533 -django/contrib/redirects/locale/ast/LC_MESSAGES/django.mo,sha256=a1ixBQQIdBZ7o-ADnF2r74CBtPLsuatG7txjc05_GXI,1071 -django/contrib/redirects/locale/ast/LC_MESSAGES/django.po,sha256=PguAqeIUeTMWsADOYLTxoC6AuKrCloi8HN18hbm3pZ0,1266 -django/contrib/redirects/locale/az/LC_MESSAGES/django.mo,sha256=gxyTtthfuZik5KWZbsKzhsCa27pnDA7OdBkZt2Jnxn0,1157 -django/contrib/redirects/locale/az/LC_MESSAGES/django.po,sha256=5uyUelawIxgtoK4zA5w8VkSuoJPdjSBrJRud1zm1JjU,1341 -django/contrib/redirects/locale/be/LC_MESSAGES/django.mo,sha256=JBUJpaQqNT_SW5cYMKfb3b3s-DL5MDkLapmukI3-49M,1437 -django/contrib/redirects/locale/be/LC_MESSAGES/django.po,sha256=nqxsr8UCgQUhsUnvuQCMYiX4PbCQw9q5MGKDCUi3XaI,1622 -django/contrib/redirects/locale/bg/LC_MESSAGES/django.mo,sha256=fEXrzyixSGCWaWu5XxVsjRKMlPwYkORpFtAiwNNShvM,1268 -django/contrib/redirects/locale/bg/LC_MESSAGES/django.po,sha256=_Xha-uOePDqOqOVmYgcR8auVgNT3CS-Z_V_vwyTlwfk,1493 -django/contrib/redirects/locale/bn/LC_MESSAGES/django.mo,sha256=SbQh_pgxNCogvUFud7xW9T6NTAvpaQb2jngXCtpjICM,1319 -django/contrib/redirects/locale/bn/LC_MESSAGES/django.po,sha256=LgUuiPryDLSXxo_4KMCdjM5XC3BiRfINuEk0s5PUQYQ,1511 -django/contrib/redirects/locale/br/LC_MESSAGES/django.mo,sha256=KZmOd_vXlUypXn4XPYl1JBQkxbyOp6y9FAKdvrx8YSs,623 -django/contrib/redirects/locale/br/LC_MESSAGES/django.po,sha256=wdH-Wb6xCL3bY7rfW0ZCRNHeDH3yTG7ZDxzcdWXtSkU,1025 -django/contrib/redirects/locale/bs/LC_MESSAGES/django.mo,sha256=0Yak4rXHjRRXLu3oYYzvS8qxvk2v4IFvUiDPA68a5YI,1115 -django/contrib/redirects/locale/bs/LC_MESSAGES/django.po,sha256=s9Nhx3H4074hlSqo1zgQRJbozakdJTwA1aTuMSqEJWw,1316 -django/contrib/redirects/locale/ca/LC_MESSAGES/django.mo,sha256=sqFznyD9vEvzgzVCTHrzsDmv6ZJy5UCzV15pLacScjc,1137 -django/contrib/redirects/locale/ca/LC_MESSAGES/django.po,sha256=GQhL6KJW4kwv-xta5DcPUlPOMXf5hgs8emZgSUGjbmk,1366 -django/contrib/redirects/locale/cs/LC_MESSAGES/django.mo,sha256=s7dsB2LPmW6QjaBORdOClb7-HbJdjt927l8PL0ej-9k,1156 -django/contrib/redirects/locale/cs/LC_MESSAGES/django.po,sha256=Q94mVP6Q8sBz7NyEzkiXX43hSqHA8CrIv0_u2EHdgS8,1377 -django/contrib/redirects/locale/cy/LC_MESSAGES/django.mo,sha256=NSGoK12A7gbtuAuzQEVFPNSZMqqmhHyRvTEn9PUm9So,1132 -django/contrib/redirects/locale/cy/LC_MESSAGES/django.po,sha256=jDmC64z5exPnO9zwRkBmpa9v3DBlaeHRhqZYPoWqiIY,1360 -django/contrib/redirects/locale/da/LC_MESSAGES/django.mo,sha256=fMxR__ME05FmYKVrcs77ggfqe03Nuvx_Iz2X0Fz89JM,1114 -django/contrib/redirects/locale/da/LC_MESSAGES/django.po,sha256=dpFo8F_pITvs9VafhSfJkS57__5I7Y9HAKjBa1kPrQo,1294 -django/contrib/redirects/locale/de/LC_MESSAGES/django.mo,sha256=iPnuOSbyoQESXyU3arhhm0ESlXrP3OxOkKL9ZpHy_6Q,1136 -django/contrib/redirects/locale/de/LC_MESSAGES/django.po,sha256=kAY-193685fKksD0PcEyC1-lZlXSL8oxVCnoOf6BdVc,1310 -django/contrib/redirects/locale/dsb/LC_MESSAGES/django.mo,sha256=wAFETbVpnUkTChU3d58C2qUdh0_klrwZ5X0yqSavBeY,1242 -django/contrib/redirects/locale/dsb/LC_MESSAGES/django.po,sha256=b1CcYJx9s6swmeXvcI6VE2b_FU_i2_xsHyB4IyAYMoQ,1386 -django/contrib/redirects/locale/el/LC_MESSAGES/django.mo,sha256=kzCurtbtzdZsJOzqLbTtn3kjltOnBq6Nd8p8EFTllF0,1384 -django/contrib/redirects/locale/el/LC_MESSAGES/django.po,sha256=-lFhtPYSaYaS81Zh1CX9vxx0lvQDpAUsTBRNT48ne94,1611 -django/contrib/redirects/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/redirects/locale/en/LC_MESSAGES/django.po,sha256=dKYdOJRafKUDXGsaRIoLCLt2PhwziQgp9SHMEhhfrD8,1098 -django/contrib/redirects/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 -django/contrib/redirects/locale/en_AU/LC_MESSAGES/django.po,sha256=CcP5GVZaImhRgohA5zy5K3rCscOlBtn81DB-V26-Wxg,958 -django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.mo,sha256=VscL30uJnV-eiQZITpBCy0xk_FfKdnMh4O9Hk4HGxww,1053 -django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.po,sha256=loe8xIVjZ7eyteQNLPoa-QceBZdgky22dR6deK5ubmA,1246 -django/contrib/redirects/locale/eo/LC_MESSAGES/django.mo,sha256=pZo0DSbfGGTHi-jgaTGp29kJK-iplaai-WXJoOPluMA,1138 -django/contrib/redirects/locale/eo/LC_MESSAGES/django.po,sha256=3AxFPHffYw3svHe-MR3zuVGLMtkJPL_SX_vB_ztx98c,1414 -django/contrib/redirects/locale/es/LC_MESSAGES/django.mo,sha256=RfNvdDrQeIfIw9I0dpnRjs10QzAFx-h-NRqYIfHx5gQ,1143 -django/contrib/redirects/locale/es/LC_MESSAGES/django.po,sha256=FePzvVGRJi6SmLm988JAbM3PADj1Bjn_XjGa7SFykkU,1392 -django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.mo,sha256=-e7vnpqOe9kFR63URFVovUR6-7HCLK7etTOBGVfPCSE,1127 -django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.po,sha256=IaqYpNmhkP2xb9kcCGy6k4S12pVHKbOQSEFVgWFMIZU,1296 -django/contrib/redirects/locale/es_CO/LC_MESSAGES/django.mo,sha256=wcAMOiqsgz2KEpRwirRH9FNoto6vmo_hxthrQJi0IHU,1147 -django/contrib/redirects/locale/es_CO/LC_MESSAGES/django.po,sha256=n8DM14vHekZRayH0B6Pm3L5XnSo4lto4ZAdu4OhcOmc,1291 -django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.mo,sha256=aU__Eh-OzuEO7sRI45r-7Jnpz9QQpEKtqAZuWpfwQyQ,1136 -django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.po,sha256=KyfWRFCA5kcBpi1uVK_rosEfYFs5mzpBvTsK5rdK4j0,1331 -django/contrib/redirects/locale/es_VE/LC_MESSAGES/django.mo,sha256=59fZBDut-htCj38ZUoqPjhXJPjZBz-xpU9__QFr3kLs,486 -django/contrib/redirects/locale/es_VE/LC_MESSAGES/django.po,sha256=f4XZW8OHjRJoztMJtSDCxd2_Mfy-XK44hLtigjGSsZY,958 -django/contrib/redirects/locale/et/LC_MESSAGES/django.mo,sha256=1KWgSYZUyo6JbwlQHdCg9IRwI4-llys7MfkFRCN10C8,1122 -django/contrib/redirects/locale/et/LC_MESSAGES/django.po,sha256=j0-f8wRSbi6oM8fwRmG1LptZrgUYCyoHzNE3sGuDmoU,1346 -django/contrib/redirects/locale/eu/LC_MESSAGES/django.mo,sha256=c0en4U_IaOUGF0Tt8lMwCm2Fmv3bAiT-D8BO9pNVFIM,1119 -django/contrib/redirects/locale/eu/LC_MESSAGES/django.po,sha256=W-tZOxWXSOzUgZSKRG_CoOf7XjxYuQEMZp0D59EZK9A,1304 -django/contrib/redirects/locale/fa/LC_MESSAGES/django.mo,sha256=WEtbdwPLTpiEZqTb6hJZMeLjL1snmGDWbzoYwa3BQnI,1241 -django/contrib/redirects/locale/fa/LC_MESSAGES/django.po,sha256=-XfgGc8mlwIWIk0NvtWZlwBrcDG3Mrj9k7FLDJMKQl4,1463 -django/contrib/redirects/locale/fi/LC_MESSAGES/django.mo,sha256=mCSVYBr0r3ieZPuORu4t1bsxHVnXg5_4cV8C59RC-vk,1158 -django/contrib/redirects/locale/fi/LC_MESSAGES/django.po,sha256=5hNG5JNitRLU1YrFwSOnyiMRTlRw4rXgyTjRImXEy-g,1368 -django/contrib/redirects/locale/fr/LC_MESSAGES/django.mo,sha256=8lXEASsnoQMclcQ8itMj93Zkitfu1IFUwWuPaZJRa8o,1141 -django/contrib/redirects/locale/fr/LC_MESSAGES/django.po,sha256=uJ9ql71ntuAmpmbs2-Rq2jXcblGuPWfXUu0twdjflIg,1326 -django/contrib/redirects/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/redirects/locale/fy/LC_MESSAGES/django.po,sha256=D7xverCbf3kTCcFM8h7EKWM5DcxZRqeOSKDB1irbKeE,948 -django/contrib/redirects/locale/ga/LC_MESSAGES/django.mo,sha256=gISo2m96gx4SsY_EaEXDSQyMD7YfEN64-u4CbD83xbY,1073 -django/contrib/redirects/locale/ga/LC_MESSAGES/django.po,sha256=oi_ywO2DyKXhN40BE0TRLzFKvS9TK2JEsUvR6_EbW3E,1279 -django/contrib/redirects/locale/gd/LC_MESSAGES/django.mo,sha256=fcIwOFja3uSj8spusyE3ECkiugkvGk9pa5DLsGSkSMQ,1252 -django/contrib/redirects/locale/gd/LC_MESSAGES/django.po,sha256=CkNt_Ra3yA9uKDy4BeK6in2lc63VSqqlK2JPQ6s4S-Q,1371 -django/contrib/redirects/locale/gl/LC_MESSAGES/django.mo,sha256=09ZB4Eobqeq9xrV2DL4-nwtsOvrfBH6BA7Gk8MxAtbc,1079 -django/contrib/redirects/locale/gl/LC_MESSAGES/django.po,sha256=9j_NYHGLTppHe2y0m4vjkKt1p1g9d59QpN8uAzq4eL4,1295 -django/contrib/redirects/locale/he/LC_MESSAGES/django.mo,sha256=cVPF03bdLcUiZt52toHoPXMqE5rEYPU0vEb5uIZwH_4,1128 -django/contrib/redirects/locale/he/LC_MESSAGES/django.po,sha256=Ycu8QAgIhJm-zN3_dlJelXKK87YQZV8Ahc5i7AUtkVk,1302 -django/contrib/redirects/locale/hi/LC_MESSAGES/django.mo,sha256=onR8L7Kvkx6HgFLK7jT-wA_zjarBN8pyltG6BbKFIWU,1409 -django/contrib/redirects/locale/hi/LC_MESSAGES/django.po,sha256=fNv9_qwR9iS-pjWNXnrUFIqvc10lwg3bfj5lgdQOy1U,1649 -django/contrib/redirects/locale/hr/LC_MESSAGES/django.mo,sha256=7wHi6Uu0czZhI6v0ndJJ1wSkalTRfn7D5ovyw8tr4U4,1207 -django/contrib/redirects/locale/hr/LC_MESSAGES/django.po,sha256=HtxZwZ-ymmf-XID0z5s7nGYg-4gJL8i6FDGWt9i4Wns,1406 -django/contrib/redirects/locale/hsb/LC_MESSAGES/django.mo,sha256=l_NcBALI4Tsc0cM_PtEXzWWM5AQsf-OEcULlf4TZv8E,1236 -django/contrib/redirects/locale/hsb/LC_MESSAGES/django.po,sha256=xoWJStp4xkPdJHjk39BhlSC0Nh0qSSLe4dXiYa3IEBU,1380 -django/contrib/redirects/locale/hu/LC_MESSAGES/django.mo,sha256=4rxfQPYRySmOlKWO7LIGzNuYyNlP-EsuK7IRpgIkdQY,1152 -django/contrib/redirects/locale/hu/LC_MESSAGES/django.po,sha256=8OaJ7UgFJXbpxEtnLu9UuOwOjAoE9MFVEU5cXT0ThUU,1329 -django/contrib/redirects/locale/ia/LC_MESSAGES/django.mo,sha256=PDB5ZQP6iH31xN6N2YmPZYjt6zzc88TRmh9_gAWH2U0,1152 -django/contrib/redirects/locale/ia/LC_MESSAGES/django.po,sha256=GXjbzY-cQz2QLx_iuqgijT7VUMcoNKL7prbP6yIbj8E,1297 -django/contrib/redirects/locale/id/LC_MESSAGES/django.mo,sha256=ef2SKKOPZ3wDl-z-kZ3q6UVAjvgIGuioHi9U3PR_knE,1098 -django/contrib/redirects/locale/id/LC_MESSAGES/django.po,sha256=5axvDDh3Yg5NzMC4Ayr0noUOr7tOgU-BJ9S8j_sv-yY,1319 -django/contrib/redirects/locale/io/LC_MESSAGES/django.mo,sha256=vz7TWRML-DFDFapbEXTByb9-pRQwoeJ0ApSdh6nOzXY,1019 -django/contrib/redirects/locale/io/LC_MESSAGES/django.po,sha256=obStuMYYSQ7x2utkGS3gekdPfnsNAwp3DcNwlwdg1sI,1228 -django/contrib/redirects/locale/is/LC_MESSAGES/django.mo,sha256=OnT5N5YqvG6Vto1GM4vK9hu_gn19_Icfj-d55Exds_E,1065 -django/contrib/redirects/locale/is/LC_MESSAGES/django.po,sha256=qsstQGFLj6Tkzfzak2UjIRh5sZQLSeD9YN6kYBLKJnc,1278 -django/contrib/redirects/locale/it/LC_MESSAGES/django.mo,sha256=nFyQf8zpMFSgbDT85GHnOxQQbuss2Dp_DlwhgLvPVAQ,1105 -django/contrib/redirects/locale/it/LC_MESSAGES/django.po,sha256=_mI90dLhi--cxkJWjtTT9_JLesqyMOPKYrfGhzwVDQs,1307 -django/contrib/redirects/locale/ja/LC_MESSAGES/django.mo,sha256=98oXXZ0raebFOFB23-p5VaAhbW46kwC9jxM8I2FAV_U,1148 -django/contrib/redirects/locale/ja/LC_MESSAGES/django.po,sha256=XJQiqtbTrwDIBQCWfYJcHuXYDh7gr0HvCTiuGXcZtIQ,1324 -django/contrib/redirects/locale/ka/LC_MESSAGES/django.mo,sha256=0aOLKrhUX6YAIMNyt6KES9q2iFk2GupEr76WeGlJMkk,1511 -django/contrib/redirects/locale/ka/LC_MESSAGES/django.po,sha256=bK3ULAIG00Nszoz74r-W3W8CihaoijYkWlc6sUqJXrg,1720 -django/contrib/redirects/locale/kab/LC_MESSAGES/django.mo,sha256=Ogx9NXK1Nfw4ctZfp-slIL81ziDX3f4DZ01OkVNY5Tw,699 -django/contrib/redirects/locale/kab/LC_MESSAGES/django.po,sha256=gI6aUPkXH-XzKrStDsMCMNfQKDEc-D1ffqE-Z-ItQuI,1001 -django/contrib/redirects/locale/kk/LC_MESSAGES/django.mo,sha256=KVLc6PKL1MP_Px0LmpoW2lIvgLiSzlvoJ9062F-s3Zw,1261 -django/contrib/redirects/locale/kk/LC_MESSAGES/django.po,sha256=k3TtiYJ7x50M19DCu2eLcsCroKusJ3paiC2RvZ-920A,1473 -django/contrib/redirects/locale/km/LC_MESSAGES/django.mo,sha256=tcW1s7jvTG0cagtdRNT0jSNkhX-B903LKl7bK31ZvJU,1248 -django/contrib/redirects/locale/km/LC_MESSAGES/django.po,sha256=KJ4h1umpfFLdsWZtsfXoeOl6cUPUD97U4ISWt80UZ2U,1437 -django/contrib/redirects/locale/kn/LC_MESSAGES/django.mo,sha256=-gqNBZVFvxqOiPWUb9jH4myXufHHfdyr_yROTfpk2jU,1396 -django/contrib/redirects/locale/kn/LC_MESSAGES/django.po,sha256=qFM2v3ys7E5u-WJE7CR-2IMrDTqFjNq96OQ1syMDWoI,1588 -django/contrib/redirects/locale/ko/LC_MESSAGES/django.mo,sha256=gXKWhQ8zEU7D1DwkUmXXaeqgXjiVuGSFVm8S7P4dNVs,1112 -django/contrib/redirects/locale/ko/LC_MESSAGES/django.po,sha256=q8A446VIdu6xIbjzmZxw4X0z3SfJL5Jffi_1C_IfKWM,1343 -django/contrib/redirects/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/redirects/locale/lb/LC_MESSAGES/django.po,sha256=Hv1CF9CC78YuVVNpklDtPJDU5-iIUeuXcljewmc9akg,946 -django/contrib/redirects/locale/lt/LC_MESSAGES/django.mo,sha256=reiFMXJnvE4XUosbKjyvUFzl4IKjlJoFK1gVJE9Tbnc,1191 -django/contrib/redirects/locale/lt/LC_MESSAGES/django.po,sha256=3D3sSO1D9XyRpiT57l-0emy7V11uKCWJYqpEzmmpUzE,1377 -django/contrib/redirects/locale/lv/LC_MESSAGES/django.mo,sha256=gH-QSWtlMTIuvz0HkCQwCUKPsaGH6ffjS8DIlJK-D38,1179 -django/contrib/redirects/locale/lv/LC_MESSAGES/django.po,sha256=EHJnRXo3G9mhYYySGHC-6pF1CRB2RHJaLGzcscYh9fY,1355 -django/contrib/redirects/locale/mk/LC_MESSAGES/django.mo,sha256=3XGgf2K60LclScPKcgw07TId6x535AW5jtGVJ9lC01A,1353 -django/contrib/redirects/locale/mk/LC_MESSAGES/django.po,sha256=Smsdpid5VByoxvnfzju_XOlp6aTPl8qshFptot3cRYM,1596 -django/contrib/redirects/locale/ml/LC_MESSAGES/django.mo,sha256=WuMPevyQxt3VojPPf9rJPK7oWAL9V-S3j8EkEwz1Mx0,1331 -django/contrib/redirects/locale/ml/LC_MESSAGES/django.po,sha256=4fRYoLwqxL1W6SPbAfoU5lP6lTY9uuZzByNws_s4lf0,1520 -django/contrib/redirects/locale/mn/LC_MESSAGES/django.mo,sha256=14fdHC_hZrRaA0EAFzBJy8BHj4jMMX6l2e6rLLBtJ8E,1274 -django/contrib/redirects/locale/mn/LC_MESSAGES/django.po,sha256=7_QzUWf5l0P-7gM35p9UW7bOj33NabQq_zSrekUeZsY,1502 -django/contrib/redirects/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/redirects/locale/mr/LC_MESSAGES/django.po,sha256=0aGKTlriCJoP-Tirl-qCl7tjjpjURhgCjRGmurHVO3c,940 -django/contrib/redirects/locale/my/LC_MESSAGES/django.mo,sha256=H5-y9A3_1yIXJzC4sSuHqhURxhOlnYEL8Nvc0IF4zUE,549 -django/contrib/redirects/locale/my/LC_MESSAGES/django.po,sha256=MZGNt0jMQA6aHA6OmjvaC_ajvRWfUfDiKkV0j3_E480,1052 -django/contrib/redirects/locale/nb/LC_MESSAGES/django.mo,sha256=flh3A8h-hu_Ed0dGUAPH7ZxF1WC9sYB2NqCPkNPfMLQ,1147 -django/contrib/redirects/locale/nb/LC_MESSAGES/django.po,sha256=9v20yzVkeilgDRfoXetQNytBShYEsgOLVctsZpzOfBI,1405 -django/contrib/redirects/locale/ne/LC_MESSAGES/django.mo,sha256=TxTnBGIi5k0PKAjADeCuOAJQV5dtzLrsFRXBXtfszWI,1420 -django/contrib/redirects/locale/ne/LC_MESSAGES/django.po,sha256=5b5R-6AlSIQrDyTtcmquoW5xrQRGZwlxZpBpZfVo5t4,1607 -django/contrib/redirects/locale/nl/LC_MESSAGES/django.mo,sha256=mDRSlzw-0KGJ-8Z3A7LDGV_yH4U3yJ0qcqDoAUPr8cQ,1114 -django/contrib/redirects/locale/nl/LC_MESSAGES/django.po,sha256=-QPs1pytBa5UQrosBERvmcNwb03q_sfrIiztr9OeL5M,1356 -django/contrib/redirects/locale/nn/LC_MESSAGES/django.mo,sha256=oiw7wSgqGUrHIdec6sIa7OlHXGME5iWA9h1UUlhl6Mw,1072 -django/contrib/redirects/locale/nn/LC_MESSAGES/django.po,sha256=pfu1XKvB-9DS_5dAbvjGzZCKAYxBEtnStJlBJxRSEXk,1267 -django/contrib/redirects/locale/os/LC_MESSAGES/django.mo,sha256=joQ-ibV9_6ctGMNPLZQLCx5fUamRQngs6_LDd_s9sMQ,1150 -django/contrib/redirects/locale/os/LC_MESSAGES/django.po,sha256=ZwFWiuGS9comy7r2kMnKuqaPOvVehVdAAuFvXM5ldxM,1358 -django/contrib/redirects/locale/pa/LC_MESSAGES/django.mo,sha256=MY-OIDNXlZth-ZRoOJ52nlUPg_51_F5k0NBIpc7GZEw,748 -django/contrib/redirects/locale/pa/LC_MESSAGES/django.po,sha256=TPDTK2ZvDyvO1ob8Qfr64QDbHVWAREfEeBO5w9jf63E,1199 -django/contrib/redirects/locale/pl/LC_MESSAGES/django.mo,sha256=DrsiZaeqMKkydQS2QyGCePj39Jh7aWR6DCMxBhZdaOU,1279 -django/contrib/redirects/locale/pl/LC_MESSAGES/django.po,sha256=0Dp53dQhxQyt_NDNuRYs2vcsQzPkbyo5RzewEY35CEc,1512 -django/contrib/redirects/locale/pt/LC_MESSAGES/django.mo,sha256=WocPaVk3fQEz_MLmGVtFBGwsThD-gNU7GDocqEbeaBA,1129 -django/contrib/redirects/locale/pt/LC_MESSAGES/django.po,sha256=ptCzoE41c9uFAbgSjb6VHSFYPEUv_51YyBdoThXN3XA,1350 -django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.mo,sha256=VN3i7dnTRkGwPmOfTXnQW3GNDpBpbc9gvBed2Mz0gQw,1162 -django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po,sha256=DXFcxZ75Jz0l5uQV2skTW3y6WJVpjor7lr6vg2eADfA,1408 -django/contrib/redirects/locale/ro/LC_MESSAGES/django.mo,sha256=HSQTOHGdyzkHlm6Ti1FBLU7Oj896At-xJJnwQF4Orgw,1222 -django/contrib/redirects/locale/ro/LC_MESSAGES/django.po,sha256=OYNV39_gWPt8ZgHDs6Bkv5_o4rveTnnlhcZLXhbwPXw,1453 -django/contrib/redirects/locale/ru/LC_MESSAGES/django.mo,sha256=pV_IGa3dFWwIymZyWyVdmQHdJO2dpMTm0ut3W1qBz0I,1456 -django/contrib/redirects/locale/ru/LC_MESSAGES/django.po,sha256=Mz9QdfJfRwOGxvZ4VmvXgBDImvp0uHZMCg4Z6-Yvf3I,1669 -django/contrib/redirects/locale/sk/LC_MESSAGES/django.mo,sha256=4U3JX_UnnYmBNtKseSUobgTslILeZWfn37Dg7q52svY,1160 -django/contrib/redirects/locale/sk/LC_MESSAGES/django.po,sha256=8tDwfdkGAXo4eAR66nfkIdegbyjc3-qBfrMZgrf_cF4,1376 -django/contrib/redirects/locale/sl/LC_MESSAGES/django.mo,sha256=GAZtOFSUxsOHdXs3AzT40D-3JFWIlNDZU_Z-cMvdaHo,1173 -django/contrib/redirects/locale/sl/LC_MESSAGES/django.po,sha256=gkZTyxNh8L2gNxyLVzm-M1HTiK8KDvughTa2MK9NzWo,1351 -django/contrib/redirects/locale/sq/LC_MESSAGES/django.mo,sha256=Js-5m2a1qd32OUxH-iPrgdUGfmMMaAjAXEZHpmQxr-0,1125 -django/contrib/redirects/locale/sq/LC_MESSAGES/django.po,sha256=WpenX8X1zZ6vAM7xi0kAmEXtPX-hz-m1QS4V7UzBeBQ,1307 -django/contrib/redirects/locale/sr/LC_MESSAGES/django.mo,sha256=j3-tpIjJ0vePNMQz4tmZkH3SBfnhA50MFSIHPOHbwHA,1254 -django/contrib/redirects/locale/sr/LC_MESSAGES/django.po,sha256=7GYy8bPElrcLH1CSZ2jXxfxH0-fCkDt7K-jgrWKBM1M,1455 -django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=zVEFUwMO0OobVJnpMEsN0cPG-H1o01idHsRFbM5D7i0,1132 -django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.po,sha256=50ukHV96cGLGb2LBLAhAwmD4nf6Rv0x8unJrzq30ZXA,1333 -django/contrib/redirects/locale/sv/LC_MESSAGES/django.mo,sha256=y1KpTjzF2FWY_x373UyaEFTTNYPT6hroB6zvA1ev010,1147 -django/contrib/redirects/locale/sv/LC_MESSAGES/django.po,sha256=7Us64PRHRyIZ8D7lY6HCef9xXnoSfwWI3YYtlNEaFSo,1362 -django/contrib/redirects/locale/sw/LC_MESSAGES/django.mo,sha256=oJnTp9CTgNsg5TSOV_aPZIUXdr6-l65hAZbaARZCO2w,1078 -django/contrib/redirects/locale/sw/LC_MESSAGES/django.po,sha256=CTVwA3O7GUQb7l1WpbmT8kOfqr7DpqnIyQt3HWJ6YTQ,1245 -django/contrib/redirects/locale/ta/LC_MESSAGES/django.mo,sha256=AE6Py2_CV2gQKjKQAa_UgkLT9i61x3i1hegQpRGuZZM,1502 -django/contrib/redirects/locale/ta/LC_MESSAGES/django.po,sha256=ojdq8p4HnwtK0n6By2I6_xuucOpJIobJEGRMGc_TrS8,1700 -django/contrib/redirects/locale/te/LC_MESSAGES/django.mo,sha256=Gtcs4cbgrD7-bSkPKiPbM5DcjONS2fSdHhvWdbs_E1M,467 -django/contrib/redirects/locale/te/LC_MESSAGES/django.po,sha256=RT-t3TjcOLyNQQWljVrIcPWErKssh_HQMyGujloy-EI,939 -django/contrib/redirects/locale/th/LC_MESSAGES/django.mo,sha256=cnPvlsVYioWu6g3wRN7j0TGfUvi2mSHjygsLe5XQ_RA,1210 -django/contrib/redirects/locale/th/LC_MESSAGES/django.po,sha256=ACxr7blSSbcHljHKwvU5JBJ24pgNv9aKg1RdP4H5kGY,1393 -django/contrib/redirects/locale/tr/LC_MESSAGES/django.mo,sha256=RiZJ_Acsxwz0d4q1JTZWPnbCpW8uiedE_X8PRJdZB0E,1124 -django/contrib/redirects/locale/tr/LC_MESSAGES/django.po,sha256=Gr6fwZ2nLkbosrikKpSgODsRf40GKXBc3RL9pOffCGM,1348 -django/contrib/redirects/locale/tt/LC_MESSAGES/django.mo,sha256=Hf1JXcCGNwedxy1nVRM_pQ0yUebC-tvOXr7P0h86JyI,1178 -django/contrib/redirects/locale/tt/LC_MESSAGES/django.po,sha256=2WCyBQtqZk-8GXgtu-x94JYSNrryy2QoMnirhiBrgV0,1376 -django/contrib/redirects/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/redirects/locale/udm/LC_MESSAGES/django.po,sha256=xsxlm4itpyLlLdPQRIHLuvTYRvruhM3Ezc9jtp3XSm4,934 -django/contrib/redirects/locale/uk/LC_MESSAGES/django.mo,sha256=nCpHZGF8aYaw3UDrSXugypDHEIkWYHXncmyC_YHzxw0,1414 -django/contrib/redirects/locale/uk/LC_MESSAGES/django.po,sha256=-UDqtKOxcTA4C4O0QW7GnjtnXtEmwDfvfLmNQFMI1No,1700 -django/contrib/redirects/locale/ur/LC_MESSAGES/django.mo,sha256=CQkt-yxyAaTd_Aj1ZZC8s5-4fI2TRyTEZ-SYJZgpRrQ,1138 -django/contrib/redirects/locale/ur/LC_MESSAGES/django.po,sha256=CkhmN49PvYTccvlSRu8qGpcbx2C-1aY7K3Lq1VC2fuM,1330 -django/contrib/redirects/locale/vi/LC_MESSAGES/django.mo,sha256=BquXycJKh-7-D9p-rGUNnjqzs1d6S1YhEJjFW8_ARFA,1106 -django/contrib/redirects/locale/vi/LC_MESSAGES/django.po,sha256=xsCASrGZNbQk4d1mhsTZBcCpPJ0KO6Jr4Zz1wfnL67s,1301 -django/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=q_V-681leIEKkVUTw0QmkxkW94pNP_O2IWu6K8mWJrk,1089 -django/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.po,sha256=zT9NRup3gaT5-i9Tz_l1Fz_vjctz2bwq5mgAb9T1vtc,1315 -django/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=35HyQ7p6_pB1xNNbNzjNX8JhMa5HOzAmkF5YUgC70N0,1096 -django/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.po,sha256=bbDd7Y0E1xAv7EmqAQI3am7VhDo3NxBgjRP8WvolS1s,1313 -django/contrib/redirects/migrations/0001_initial.py,sha256=jl-W40P9AY3VHUP69TmXS3lKVFlwGVIHJ04lEFBkgEY,1491 -django/contrib/redirects/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sessions/__init__.py,sha256=W7kKt-gCROzrUA6UpIRAit3SHa-coN4_A4fphGikCEk,67 -django/contrib/sessions/apps.py,sha256=q_fkp7a7_1GT14XHkHgNIET0sItgfBeFT7B137_KeZM,194 -django/contrib/sessions/base_session.py,sha256=5FofwClB_ukwCsXPfJbzUvKoYaMQ78B_lWXU0fqSg1k,1490 -django/contrib/sessions/exceptions.py,sha256=epvfG9haHc8p34Ic6IqUSC-Yj06Ruh2TSm9G6HQMdno,256 -django/contrib/sessions/middleware.py,sha256=sbpLTYtkGNo5TfYaHPestSVrhMEbcGL9LXRDk4OD5LQ,3423 -django/contrib/sessions/models.py,sha256=vmROoszsXHnPHoSbFca8k-U9Z8Wg6EAHYeEK87VHHk8,1257 -django/contrib/sessions/serializers.py,sha256=FUUY-XXwipIA085gJSNNcTxVQqo12YE9EFainIxNPdU,394 -django/contrib/sessions/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sessions/backends/base.py,sha256=aFxoGhXQaZb6nj6Q_KbpyFWjrYUuDOOLh3uY3objGFc,11967 -django/contrib/sessions/backends/cache.py,sha256=-qeSz07gUidiY_xq7imMJ3SP17J_rLsIO50KxOhq_8E,2713 -django/contrib/sessions/backends/cached_db.py,sha256=S1EMi_8GiSbImzdndIvzX8iMnJwHI-G1km40fbZeLXg,2686 -django/contrib/sessions/backends/db.py,sha256=JVPC09-K9a7yIhvFDWPfpu6QP7A0jeUkome5dbLXELY,3703 -django/contrib/sessions/backends/file.py,sha256=iI2Q3qdHDEAbYpGBdvkTeWDU3Rrx_DsR--OjIAXX_bI,7906 -django/contrib/sessions/backends/signed_cookies.py,sha256=jcBrD3gUHrdETWf6JvwDVCFe4eAiRbH8i2oMJjwpXPs,2696 -django/contrib/sessions/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 -django/contrib/sessions/locale/af/LC_MESSAGES/django.po,sha256=fdRPUBMVUrpvAi9zsvwSnts55Wdnj4r2kLxKeroIsSM,745 -django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo,sha256=yoepqaR68PTGLx--cAOzP94Sqyl5xIYpeQ0IFWgY380,846 -django/contrib/sessions/locale/ar/LC_MESSAGES/django.po,sha256=ZgwtBYIdtnqp_8nKHXF1NVJFzQU81-3yv9b7STrQHMc,995 -django/contrib/sessions/locale/ast/LC_MESSAGES/django.mo,sha256=hz2m-PkrHby2CKfIOARj6kCzisT-Vs0syfDSTx_iVVw,702 -django/contrib/sessions/locale/ast/LC_MESSAGES/django.po,sha256=M90j1Nx6oDJ16hguUkfKYlyb5OymUeZ5xzPixWxSC7I,846 -django/contrib/sessions/locale/az/LC_MESSAGES/django.mo,sha256=XJskCf7jcxBH-i_gqfJIHVO3Loh3w6_kIyod5nxLu7Y,700 -django/contrib/sessions/locale/az/LC_MESSAGES/django.po,sha256=74663H2-Uz-RMRfDN8E4-Z5LxZ6deAlgdEdvpa-_YK0,846 -django/contrib/sessions/locale/be/LC_MESSAGES/django.mo,sha256=8b7MeFDTL6VStOnVHtkb_o4Iiy0gTHoCwTUbT1vRr9Q,895 -django/contrib/sessions/locale/be/LC_MESSAGES/django.po,sha256=tHsYVn3XNTcukB0SrHUWP1iV763rrQHCimOyJHRPiek,1023 -django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo,sha256=DGp3j3E0-5bBjFCKx9c6Jcz9ZaXysd2DgVPuxROWDmU,783 -django/contrib/sessions/locale/bg/LC_MESSAGES/django.po,sha256=AEgnW2F8S85JZOh4JVJ6nLynsmHRZOBBoOluVxHosVo,942 -django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo,sha256=0BdFN7ou9tmoVG00fCA-frb1Tri3iKz43W7SWal398s,762 -django/contrib/sessions/locale/bn/LC_MESSAGES/django.po,sha256=LycmTel6LXV2HGGN6qzlAfID-cVEQCNnW1Nv_hbWXJk,909 -django/contrib/sessions/locale/br/LC_MESSAGES/django.mo,sha256=-tOybnibUnlB-jOPm9-oi40D1fhoszQ7fvq6vMhiwOg,536 -django/contrib/sessions/locale/br/LC_MESSAGES/django.po,sha256=lQiZ3aJ1B4o1-LHuXMyYWlUetaAAvMleqr0pFT1acww,787 -django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo,sha256=M7TvlJMrSUAFhp7oUSpUKejnbTuIK-19yiGBBECl9Sc,759 -django/contrib/sessions/locale/bs/LC_MESSAGES/django.po,sha256=Ur0AeRjXUsLgDJhcGiw75hRk4Qe98DzPBOocD7GFDRQ,909 -django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo,sha256=tbaZ48PaihGGD9-2oTKiMFY3kbXjU59nNciCRINOBNk,738 -django/contrib/sessions/locale/ca/LC_MESSAGES/django.po,sha256=tJuJdehKuD9aXOauWOkE5idQhsVsLbeg1Usmc6N_SP0,906 -django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo,sha256=4ZL8ECaHYx2PdPoQlpQ1YiNVVyQRH1TR5NblBRmmxB8,747 -django/contrib/sessions/locale/cs/LC_MESSAGES/django.po,sha256=-Y7fL3Ge6Cfiet1UZtA6xejOnpD0FPj37ruqImKxKn4,906 -django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo,sha256=GeWVeV2PvgLQV8ecVUA2g3-VvdzMsedgIDUSpn8DByk,774 -django/contrib/sessions/locale/cy/LC_MESSAGES/django.po,sha256=zo18MXtkEdO1L0Q6ewFurx3lsEWTCdh0JpQJTmvw5bY,952 -django/contrib/sessions/locale/da/LC_MESSAGES/django.mo,sha256=cR9YutBJxPiisDQ-C14H2J7TiNOVmna3094Vuq0txqs,722 -django/contrib/sessions/locale/da/LC_MESSAGES/django.po,sha256=qX_Oo7niVo57bazlIYFA6bnVmPBclUUTWvZFYNLaG04,880 -django/contrib/sessions/locale/de/LC_MESSAGES/django.mo,sha256=N3kTal0YK9z7Te3zYGLbJmoSB6oWaviWDLGdPlsPa9g,721 -django/contrib/sessions/locale/de/LC_MESSAGES/django.po,sha256=0qnfDeCUQN2buKn6R0MvwhQP05XWxSu-xgvfxvnJe3k,844 -django/contrib/sessions/locale/dsb/LC_MESSAGES/django.mo,sha256=RABl3WZmY6gLh4IqmTUhoBEXygDzjp_5lLF1MU9U5fA,810 -django/contrib/sessions/locale/dsb/LC_MESSAGES/django.po,sha256=cItKs5tASYHzDxfTg0A_dgBQounpzoGyOEFn18E_W_g,934 -django/contrib/sessions/locale/el/LC_MESSAGES/django.mo,sha256=QbTbmcfgc8_4r5hFrIghDhk2XQ4f8_emKmqupMG2ah0,809 -django/contrib/sessions/locale/el/LC_MESSAGES/django.po,sha256=HeaEbpVmFhhrZt2NsZteYaYoeo8FYKZF0IoNJwtzZkc,971 -django/contrib/sessions/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/sessions/locale/en/LC_MESSAGES/django.po,sha256=afaM-IIUZtcRZduojUTS8tT0w7C4Ya9lXgReOvq_iF0,804 -django/contrib/sessions/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 -django/contrib/sessions/locale/en_AU/LC_MESSAGES/django.po,sha256=gvnvUpim1l7oImnzPXqBww-Uz0TgGjzCLaaszpdkQ10,761 -django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo,sha256=T5NQCTYkpERfP9yKbUvixT0VdBt1zGmGB8ITlkVc420,707 -django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po,sha256=1ks_VE1qpEfPcyKg0HybkTG0-DTttTHTfUPhQCR53sw,849 -django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo,sha256=eBvYQbZS_WxVV3QCSZAOyHNIljC2ZXxVc4mktUuXVjI,727 -django/contrib/sessions/locale/eo/LC_MESSAGES/django.po,sha256=Ru9xicyTgHWVHh26hO2nQNFRQmwBnYKEagsS8TZRv3E,917 -django/contrib/sessions/locale/es/LC_MESSAGES/django.mo,sha256=jbHSvHjO2OCLlBD66LefocKOEbefWbPhj-l3NugiWuc,734 -django/contrib/sessions/locale/es/LC_MESSAGES/django.po,sha256=fY5WXeONEXHeuBlH0LkvzdZ2CSgbvLZ8BJc429aIbhI,909 -django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo,sha256=ACc53N0nFsdhIhvuinICI6XhGhHwxMeZjA--46TAXso,735 -django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po,sha256=AnmvjeOA7EBTJ6wMOkCl8JRLVYRU8KS0egPijcKutns,879 -django/contrib/sessions/locale/es_CO/LC_MESSAGES/django.mo,sha256=UP7ia0gV9W-l0Qq5AS4ZPadJtml8iuzzlS5C9guMgh8,754 -django/contrib/sessions/locale/es_CO/LC_MESSAGES/django.po,sha256=_XeiiRWvDaGjofamsRHr5up_EQvcw0w-GLLeWK27Af8,878 -django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo,sha256=MDM0K3xMvyf8ymvAurHYuacpxfG_YfJFyNnp1uuc6yY,756 -django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po,sha256=Y7VNa16F_yyK7_XJvF36rR2XNW8aBJK4UDweufyXpxE,892 -django/contrib/sessions/locale/es_VE/LC_MESSAGES/django.mo,sha256=59fZBDut-htCj38ZUoqPjhXJPjZBz-xpU9__QFr3kLs,486 -django/contrib/sessions/locale/es_VE/LC_MESSAGES/django.po,sha256=zWjgB0AmsmhX2tjk1PgldttqY56Czz8epOVCaYWXTLU,761 -django/contrib/sessions/locale/et/LC_MESSAGES/django.mo,sha256=aL1jZWourEC7jtjsuBZHD-Gw9lpL6L1SoqjTtzguxD0,737 -django/contrib/sessions/locale/et/LC_MESSAGES/django.po,sha256=VNBYohAOs59jYWkjVMY-v2zwVy5AKrtBbFRJZLwdCFg,899 -django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo,sha256=M9piOB_t-ZnfN6pX-jeY0yWh2S_5cCuo1oGiy7X65A4,728 -django/contrib/sessions/locale/eu/LC_MESSAGES/django.po,sha256=bHdSoknoH0_dy26e93tWVdO4TT7rnCPXlSLPsYAhwyw,893 -django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo,sha256=6DdJcqaYuBnhpFFHR42w-RqML0eQPFMAUEEDY0Redy8,755 -django/contrib/sessions/locale/fa/LC_MESSAGES/django.po,sha256=NgJlLPsS9FXjRzKqGgUTkNG9puYrBRf0KQK-QqXMIxQ,916 -django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo,sha256=oAugvlTEvJmG8KsZw09WcfnifYY5oHnGo4lxcxqKeaY,721 -django/contrib/sessions/locale/fi/LC_MESSAGES/django.po,sha256=BVVrjbZZtLGAuZ9HK63p769CbjZFZMlS4BewSMfNMKU,889 -django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo,sha256=HQ3DEjxHQeHRYmu7SYVSDl1ZQHhamnw-mJ5vci5io1g,733 -django/contrib/sessions/locale/fr/LC_MESSAGES/django.po,sha256=hARxGdtBOzEZ_iVyzkNvcKlgyM8fOkdXTH3upj2XFYM,893 -django/contrib/sessions/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/sessions/locale/fy/LC_MESSAGES/django.po,sha256=U-VEY4WbmIkmrnPK4Mv-B-pbdtDzusBCVmE8iHyvzFU,751 -django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo,sha256=pYchS6m-SPtKOFLAw0IJwW6DKXu6VnwPeKl6X80e8hI,747 -django/contrib/sessions/locale/ga/LC_MESSAGES/django.po,sha256=ArrEYC58VzWDKq2RAYXi5VsxzD6RUon1pyA7NUj9pEE,894 -django/contrib/sessions/locale/gd/LC_MESSAGES/django.mo,sha256=Yi8blY_fUD5YTlnUD6YXZvv1qjm4QDriO6CJIUe1wIk,791 -django/contrib/sessions/locale/gd/LC_MESSAGES/django.po,sha256=fEa40AUqA5vh743Zqv0FO2WxSFXGYk4IzUR4BoaP-C4,890 -django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo,sha256=uQ2ZmtUNoVCB2mSlMGSy-j4a_hu9PBfJDo796d8beFA,701 -django/contrib/sessions/locale/gl/LC_MESSAGES/django.po,sha256=FovTLHdVK15N9FI9lFFAOP4zt7GsvO0kKdocgeVDkNk,902 -django/contrib/sessions/locale/he/LC_MESSAGES/django.mo,sha256=qhgjSWfGAOgl-i7iwzSrJttx88xcj1pB0iLkEK64mJU,809 -django/contrib/sessions/locale/he/LC_MESSAGES/django.po,sha256=gtBgkC2bpVyWm8B5pjV3-9tBo0xqUsJuJz2neN79isg,969 -django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo,sha256=naqxOjfAnNKy3qqnUG-4LGf9arLRJpjyWWmSj5tEfao,759 -django/contrib/sessions/locale/hi/LC_MESSAGES/django.po,sha256=WnTGvOz9YINMcUJg2BYCaHceZLKaTfsba_0AZtRNP38,951 -django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo,sha256=axyJAmXmadpFxIhu8rroVD8NsGGadQemh9-_ZDo7L1U,819 -django/contrib/sessions/locale/hr/LC_MESSAGES/django.po,sha256=3G-qOYXBO-eMWWsa5LwTCW9M1oF0hlWgEz7hAK8hJqI,998 -django/contrib/sessions/locale/hsb/LC_MESSAGES/django.mo,sha256=_OXpOlCt4KU0i65Iw4LMjSsyn__E9wH20l9vDNBSEzw,805 -django/contrib/sessions/locale/hsb/LC_MESSAGES/django.po,sha256=yv3vX_UCDrdl07GQ79Mnytwgz2oTvySYOG9enzMpFJA,929 -django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo,sha256=ik40LnsWkKYEUioJB9e11EX9XZ-qWMa-S7haxGhM-iI,727 -django/contrib/sessions/locale/hu/LC_MESSAGES/django.po,sha256=1-UWEEsFxRwmshP2x4pJbitWIGZ1YMeDDxnAX-XGNxc,884 -django/contrib/sessions/locale/ia/LC_MESSAGES/django.mo,sha256=-o4aQPNJeqSDRSLqcKuYvJuKNBbFqDJDe3IzHgSgZeQ,744 -django/contrib/sessions/locale/ia/LC_MESSAGES/django.po,sha256=PULLDd3QOIU03kgradgQzT6IicoPhLPlUvFgRl-tGbA,869 -django/contrib/sessions/locale/id/LC_MESSAGES/django.mo,sha256=mOaIF0NGOO0-dt-nhHL-i3cfvt9-JKTbyUkFWPqDS9Y,705 -django/contrib/sessions/locale/id/LC_MESSAGES/django.po,sha256=EA6AJno3CaFOO-dEU9VQ_GEI-RAXS0v0uFqn1RJGjEs,914 -django/contrib/sessions/locale/io/LC_MESSAGES/django.mo,sha256=_rqAY6reegqmxmWc-pW8_kDaG9zflZuD-PGOVFsjRHo,683 -django/contrib/sessions/locale/io/LC_MESSAGES/django.po,sha256=tbKMxGuB6mh_m0ex9rO9KkTy6qyuRW2ERrQsGwmPiaw,840 -django/contrib/sessions/locale/is/LC_MESSAGES/django.mo,sha256=3QeMl-MCnBie9Sc_aQ1I7BrBhkbuArpoSJP95UEs4lg,706 -django/contrib/sessions/locale/is/LC_MESSAGES/django.po,sha256=LADIFJv8L5vgDJxiQUmKPSN64zzzrIKImh8wpLBEVWQ,853 -django/contrib/sessions/locale/it/LC_MESSAGES/django.mo,sha256=qTY3O-0FbbpZ5-BR5xOJWP0rlnIkBZf-oSawW_YJWlk,726 -django/contrib/sessions/locale/it/LC_MESSAGES/django.po,sha256=hEv0iTGLuUvEBk-lF-w7a9P3ifC0-eiodNtuSc7cXhg,869 -django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo,sha256=hbv9FzWzXRIGRh_Kf_FLQB34xfmPU_9RQKn9u1kJqGU,757 -django/contrib/sessions/locale/ja/LC_MESSAGES/django.po,sha256=ppGx5ekOWGgDF3vzyrWsqnFUZ-sVZZhiOhvAzl_8v54,920 -django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo,sha256=VZ-ysrDbea_-tMV-1xtlTeW62IAy2RWR94V3Y1iSh4U,803 -django/contrib/sessions/locale/ka/LC_MESSAGES/django.po,sha256=MDOG7BAO8Ez75CfgERCq1zA3syJbvQKpc4wBVlryfqQ,950 -django/contrib/sessions/locale/kab/LC_MESSAGES/django.mo,sha256=W_yE0NDPJrVznA2Qb89VuprJNwyxSg59ovvjkQe6mAs,743 -django/contrib/sessions/locale/kab/LC_MESSAGES/django.po,sha256=FJeEuv4P3NT_PpWHEUsQVSWXu65nYkJ6Z2AlbSKb0ZA,821 -django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo,sha256=FROGz_MuIhsIU5_-EYV38cHnRZrc3-OxxkBeK0ax9Rk,810 -django/contrib/sessions/locale/kk/LC_MESSAGES/django.po,sha256=l5gu1XfvRMNhCHBl-NTGoUHWa0nRSxqSDt0zljpr7Kg,1024 -django/contrib/sessions/locale/km/LC_MESSAGES/django.mo,sha256=VOuKsIG2DEeCA5JdheuMIeJlpmAhKrI6lD4KWYqIIPk,929 -django/contrib/sessions/locale/km/LC_MESSAGES/django.po,sha256=09i6Nd_rUK7UqFpJ70LMXTR6xS0NuGETRLe0CopMVBk,1073 -django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo,sha256=X5svX5_r3xZUy4OjUuo2gItc5PIOSjZOvE5IZwnM6Io,814 -django/contrib/sessions/locale/kn/LC_MESSAGES/django.po,sha256=Rq-I2veQe5l7Q7HG9pRY_mKeNcxhSRDgqphKbuNpoNc,961 -django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo,sha256=EUyVQYGtiFJg01mP30a0iOqBYHvpzHAcGTZM28Ubs5Q,700 -django/contrib/sessions/locale/ko/LC_MESSAGES/django.po,sha256=PjntvSzRz_Aekj9VFhGsP5yO6rAsxTMzwFj58JqToIU,855 -django/contrib/sessions/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/sessions/locale/lb/LC_MESSAGES/django.po,sha256=3igeAnQjDg6D7ItBkQQhyBoFJOZlBxT7NoZiExwD-Fo,749 -django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo,sha256=L9w8-qxlDlCqR_2P0PZegfhok_I61n0mJ1koJxzufy4,786 -django/contrib/sessions/locale/lt/LC_MESSAGES/django.po,sha256=7e5BmXuaHHgGX5W1eC6wIH2QyMTNOg4JZjkZM0i-jTc,952 -django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo,sha256=exEzDUNwNS0GLsUkKPu_SfqBxU7T6VRA_T2schIQZ88,753 -django/contrib/sessions/locale/lv/LC_MESSAGES/django.po,sha256=fBgQEbsGg1ECVm1PFDrS2sfKs2eqmsqrSYzx9ELotNQ,909 -django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo,sha256=4oTWp8-qzUQBiqG32hNieABgT3O17q2C4iEhcFtAxLA,816 -django/contrib/sessions/locale/mk/LC_MESSAGES/django.po,sha256=afApb5YRhPXUWR8yF_TTym73u0ov7lWiwRda1-uNiLY,988 -django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo,sha256=P1z831CbjKP38Sd_-d6_1P7V8fFXOGS6pyznw_x7dhg,780 -django/contrib/sessions/locale/ml/LC_MESSAGES/django.po,sha256=eTDbMq3x_kk7YkSzVLYk9szi1D3EwDwqeSnmuOXVxyY,927 -django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo,sha256=NgVteIZT90EJ3TJCQFzMHfxeZ5m9IGcGnMYd5SaMnT4,769 -django/contrib/sessions/locale/mn/LC_MESSAGES/django.po,sha256=PmEcp36DnnvGScoVjc6GtRK9XIxnXHnHaD6ZflOIXP8,972 -django/contrib/sessions/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/sessions/locale/mr/LC_MESSAGES/django.po,sha256=FQRdZ-qIDuvTCrwbnWfxoxNi8rywLSebcNbxGvr-hb0,743 -django/contrib/sessions/locale/my/LC_MESSAGES/django.mo,sha256=8zzzyfJYok969YuAwDUaa6YhxaSi3wcXy3HRNXDb_70,872 -django/contrib/sessions/locale/my/LC_MESSAGES/django.po,sha256=mfs0zRBI0tugyyEfXBZzZ_FMIohydq6EYPZGra678pw,997 -django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo,sha256=hfJ1NCFgcAAtUvNEpaZ9b31PyidHxDGicifUWANIbM8,717 -django/contrib/sessions/locale/nb/LC_MESSAGES/django.po,sha256=yXr6oYuiu01oELdQKuztQFWz8x5C2zS5OzEfU9MHJsU,908 -django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo,sha256=slFgMrqGVtLRHdGorLGPpB09SM92_WnbnRR0rlpNlPQ,802 -django/contrib/sessions/locale/ne/LC_MESSAGES/django.po,sha256=1vyoiGnnaB8f9SFz8PGfzpw6V_NoL78DQwjjnB6fS98,978 -django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo,sha256=X-ZuB8Zn9c5saUvUf8gj9R8gyrQuKUyUDVfs_0IvCY0,733 -django/contrib/sessions/locale/nl/LC_MESSAGES/django.po,sha256=smRr-QPGm6h6hdXxghggWES8b2NnL7yDQ07coUypa8g,909 -django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo,sha256=042gOyJuXb51nG7gxI_rYst9QWuB3thtAeevKpDLFVQ,695 -django/contrib/sessions/locale/nn/LC_MESSAGES/django.po,sha256=j2kDL1vDsHoBX_ky6_S0tWxaqFst6v7OLqqlt6N2ECI,842 -django/contrib/sessions/locale/os/LC_MESSAGES/django.mo,sha256=xVux1Ag45Jo9HQBbkrRzcWrNjqP09nMQl16jIh0YVlo,732 -django/contrib/sessions/locale/os/LC_MESSAGES/django.po,sha256=1hG5Vsz2a2yW05_Z9cTNrBKtK9VRPZuQdx4KJ_0n98o,892 -django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo,sha256=qEx4r_ONwXK1-qYD5uxxXEQPqK5I6rf38QZoUSm7UVA,771 -django/contrib/sessions/locale/pa/LC_MESSAGES/django.po,sha256=M7fmVGP8DtZGEuTV3iJhuWWqILVUTDZvUey_mrP4_fM,918 -django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo,sha256=55aWzhu56-g9b84xx-zfBDIDd_pH82iLu7Nx87HcCRU,869 -django/contrib/sessions/locale/pl/LC_MESSAGES/django.po,sha256=C_MJBB-vwTZbx-t4-mzun-RxHhdOVv04b6xrWdnTv8E,1084 -django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo,sha256=dlJF7hF4GjLmQPdAJhtf-FCKX26XsOmZlChOcxxIqPk,738 -django/contrib/sessions/locale/pt/LC_MESSAGES/django.po,sha256=cOycrw3HCHjSYBadpalyrg5LdRTlqZCTyMh93GOQ8O0,896 -django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo,sha256=XHNF5D8oXIia3e3LYwxd46a2JOgDc_ykvc8yuo21fT0,757 -django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po,sha256=K_zxKaUKngWPFpvHgXOcymJEsiONSw-OrVrroRXmUUk,924 -django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo,sha256=WR9I9Gum_pq7Qg2Gzhf-zAv43OwR_uDtsbhtx4Ta5gE,776 -django/contrib/sessions/locale/ro/LC_MESSAGES/django.po,sha256=fEgVxL_0Llnjspu9EsXBf8AVL0DGdfF7NgV88G7WN1E,987 -django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo,sha256=n-8vXR5spEbdfyeWOYWC_6kBbAppNoRrWYgqKFY6gJA,913 -django/contrib/sessions/locale/ru/LC_MESSAGES/django.po,sha256=sNqNGdoof6eXzFlh4YIp1O54MdDOAFDjD3GvAFsNP8k,1101 -django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo,sha256=Yntm624Wt410RwuNPU1c-WwQoyrRrBs69VlKMlNUHeQ,766 -django/contrib/sessions/locale/sk/LC_MESSAGES/django.po,sha256=JIvzoKw_r4jZXWEaHvIYAZDAzrEkfpr0WM9dNfUlzBE,924 -django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo,sha256=EE6mB8BiYRyAxK6qzurRWcaYVs96FO_4rERYQdtIt3k,770 -django/contrib/sessions/locale/sl/LC_MESSAGES/django.po,sha256=KTjBWyvaNCHbpV9K6vbnavwxxXqf2DlIqVPv7MVFcO8,928 -django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo,sha256=3mGqKLgno-t7B3jyQpSaIJfDVAxbfOSDr5G9OUE7fqc,724 -django/contrib/sessions/locale/sq/LC_MESSAGES/django.po,sha256=9pzp7834LQKafe5fJzC4OKsAd6XfgtEQl6K6hVLaBQM,844 -django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo,sha256=PcSKdLH8nNGRHXNEjFJ7VQ1eu9eEsVWdkJU-TiDxjZE,812 -django/contrib/sessions/locale/sr/LC_MESSAGES/django.po,sha256=Kp5NsKVESKMcb4LHVa3DmKaktexzuE3Bsv5TmELbiEI,962 -django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=dWZsW7FyUMuFszdDvWNALmijsEwI5s8BrNrDz36KmJ4,787 -django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po,sha256=HZQeob-g8_DNCmn7jzDPzM4MP4e3oncK2nF3Kdace84,937 -django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo,sha256=SGbr0K_5iAMA22MfseAldMDgLSEBrI56pCtyV8tMAPc,707 -django/contrib/sessions/locale/sv/LC_MESSAGES/django.po,sha256=vraY3915wBYGeYu9Ro0-TlBeLWqGZP1fbckLv8y47Ys,853 -django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo,sha256=Edhqp8yuBnrGtJqPO7jxobeXN4uU5wKSLrOsFO1F23k,743 -django/contrib/sessions/locale/sw/LC_MESSAGES/django.po,sha256=iY4rN4T-AA2FBQA7DiWWFvrclqKiDYQefqwwVw61-f8,858 -django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo,sha256=qLIThhFQbJKc1_UVr7wVIm1rJfK2rO5m84BCB_oKq7s,801 -django/contrib/sessions/locale/ta/LC_MESSAGES/django.po,sha256=bYqtYf9XgP9IKKFJXh0u64JhRhDvPPUliI1J-NeRpKE,945 -django/contrib/sessions/locale/te/LC_MESSAGES/django.mo,sha256=kteZeivEckt4AmAeKgmgouMQo1qqSQrI8M42B16gMnQ,786 -django/contrib/sessions/locale/te/LC_MESSAGES/django.po,sha256=dQgiNS52RHrL6bV9CEO7Jk9lk3YUQrUBDCg_bP2OSZc,980 -django/contrib/sessions/locale/th/LC_MESSAGES/django.mo,sha256=xJE3u78wMj916Y4aJoeqduxa1L1QqiWzgNTtz1FXWJQ,757 -django/contrib/sessions/locale/th/LC_MESSAGES/django.po,sha256=Ks4o9M9Oo7E_A3bFnthS4RkI7Ht0ijPFkMCalItdj3w,901 -django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo,sha256=H-DMP3N3AHZj1Q9aYeBOMA10nN1CIuJkUEY7QAy1b3g,726 -django/contrib/sessions/locale/tr/LC_MESSAGES/django.po,sha256=XYKo0_P5xitYehvjMzEw2MTp_Nza-cIXEECV3dA6BmY,863 -django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo,sha256=Q-FGu_ljTsxXO_EWu7zCzGwoqFXkeoTzWSlvx85VLGc,806 -django/contrib/sessions/locale/tt/LC_MESSAGES/django.po,sha256=UC85dFs_1836noZTuZEzPqAjQMFfSvj7oGmEWOGcfCA,962 -django/contrib/sessions/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/sessions/locale/udm/LC_MESSAGES/django.po,sha256=CPml2Fn9Ax_qO5brCFDLPBoTiNdvsvJb1btQ0COwUfY,737 -django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo,sha256=jzNrLuFghQMCHNRQ0ihnKMCicgear0yWiTOLnvdPszw,841 -django/contrib/sessions/locale/uk/LC_MESSAGES/django.po,sha256=GM9kNL1VoFSRfbHB5KiivIbp-nJl1aZ69wL2xszNqlM,1017 -django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo,sha256=FkGIiHegr8HR8zjVyJ9TTW1T9WYtAL5Mg77nRKnKqWk,729 -django/contrib/sessions/locale/ur/LC_MESSAGES/django.po,sha256=qR4QEBTP6CH09XFCzsPSPg2Dv0LqzbRV_I67HO2OUwk,879 -django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo,sha256=KriTpT-Hgr10DMnY5Bmbd4isxmSFLmav8vg2tuL2Bb8,679 -django/contrib/sessions/locale/vi/LC_MESSAGES/django.po,sha256=M7S46Q0Q961ykz_5FCAN8SXQ54w8tp4rZeZpy6bPtXs,909 -django/contrib/sessions/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=zsbhIMocgB8Yn1XEBxbIIbBh8tLifvvYNlhe5U61ch8,722 -django/contrib/sessions/locale/zh_Hans/LC_MESSAGES/django.po,sha256=tPshgXjEv6pME4N082ztamJhd5whHB2_IV_egdP-LlQ,889 -django/contrib/sessions/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=WZzfpFKZ41Pu8Q9SuhGu3hXwp4eiq8Dt8vdiQfxvF9M,733 -django/contrib/sessions/locale/zh_Hant/LC_MESSAGES/django.po,sha256=6IRDQu6-PAYh6SyEIcKdhuR172lX0buY8qqsU0QXlYU,898 -django/contrib/sessions/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sessions/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sessions/management/commands/clearsessions.py,sha256=yDcSmK65l5H1-2hiHhDlN0zivQrxm_ihNKLKt6MmRiQ,650 -django/contrib/sessions/migrations/0001_initial.py,sha256=F7fzk2d9hDPjUwx2w-lXdZcFG1h4HyHnkfcJ6aK7C-0,955 -django/contrib/sessions/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sitemaps/__init__.py,sha256=4pL-xZ3nNPbczruFZqnL8xTH5KrGL_C1AgdfBMfWfwY,5632 -django/contrib/sitemaps/apps.py,sha256=ktY9PcWsmv5TOlvEdG6IL8ZBbGMtZRpO24j5g7DGilU,195 -django/contrib/sitemaps/views.py,sha256=KP-cCkD4VGFbd4ZavWK79gAkZa83APeRgTx-eouny4M,3516 -django/contrib/sitemaps/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sitemaps/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sitemaps/management/commands/ping_google.py,sha256=IzUg9OZa2e3AjwX4bCFEldXzaLsT4O4WnbUgeUKe6qg,412 -django/contrib/sitemaps/templates/sitemap.xml,sha256=KTiksPVpo22dkRjjavoJtckzo-Rin7aZ_QgbC42Y8O0,479 -django/contrib/sitemaps/templates/sitemap_index.xml,sha256=VqDmRlWMx9kC6taiBoi1h9JVspV54ou3nFjE8Nfofl8,209 -django/contrib/sites/__init__.py,sha256=qIj6PsbyT_DVkvjrASve-9F8GeoCKv6sO0-jlEhRJv4,61 -django/contrib/sites/admin.py,sha256=ClzCRn4fUPWO1dNlEWEPjSDInnK87XbNRmadvjYs1go,214 -django/contrib/sites/apps.py,sha256=xRYkn8bbxOK7rSsDiLHPkxUqAN4iscVMvwKIjiwdj94,365 -django/contrib/sites/management.py,sha256=K6cgSOdN4ins_TiWjUIkGFwuibJmshTlFonqYT2QKrw,1597 -django/contrib/sites/managers.py,sha256=OJfKicEOuqcD0B7NuH4scszrknQZ-X1Nf1PL0XgWqLM,1929 -django/contrib/sites/middleware.py,sha256=qYcVHsHOg0VxQNS4saoLHkdF503nJR-D7Z01vE0SvUM,309 -django/contrib/sites/models.py,sha256=gj4u6mr8lvOlBJNaF3pSqAT6tk4YnktmaKlpBuDNE0A,3729 -django/contrib/sites/requests.py,sha256=74RhONzbRqEGoNXLu4T7ZjAFKYvCLmY_XQWnGRz6jdw,640 -django/contrib/sites/shortcuts.py,sha256=RZr1iT8zY_z8o52PIWEBFCQL03pE28pp6708LveS240,581 -django/contrib/sites/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 -django/contrib/sites/locale/af/LC_MESSAGES/django.po,sha256=WNd-q5lgjiRfXAGb7iv5iUkCnS_RcI098GNjn4MezDc,775 -django/contrib/sites/locale/ar/LC_MESSAGES/django.mo,sha256=kLoytp2jvhWn6p1c8kNVua2sYAMnrpS4xnbluHD22Vs,947 -django/contrib/sites/locale/ar/LC_MESSAGES/django.po,sha256=HYA3pA29GktzXBP-soUEn9VP2vkZuhVIXVA8TNPCHCs,1135 -django/contrib/sites/locale/ast/LC_MESSAGES/django.mo,sha256=eEvaeiGnZFBPGzKLlRz4M9AHemgJVAb-yNpbpxRqtd0,774 -django/contrib/sites/locale/ast/LC_MESSAGES/django.po,sha256=huBohKzLpdaJRFMFXXSDhDCUOqVqyWXfxb8_lLOkUd0,915 -django/contrib/sites/locale/az/LC_MESSAGES/django.mo,sha256=TOdJMsIhxYvxT1-ZFiPD5JDhA9fBBpu84tpiYhv7tgE,608 -django/contrib/sites/locale/az/LC_MESSAGES/django.po,sha256=M5mYWSyOohsNTtC_BWlDbw4PTsQWdEnbirf_4S0zInw,835 -django/contrib/sites/locale/be/LC_MESSAGES/django.mo,sha256=b-0febeZF-EX53E--W-G3lkpiozt7En6yfDIJYnNrQw,1024 -django/contrib/sites/locale/be/LC_MESSAGES/django.po,sha256=W5FhVJKcmd3WHl2Lpd5NJUsc7_sE_1Pipk3CVPoGPa4,1152 -django/contrib/sites/locale/bg/LC_MESSAGES/django.mo,sha256=a2R52umIQIhnzFaFYSRhQ6nBlywE8RGMj2FUOFmyb0A,904 -django/contrib/sites/locale/bg/LC_MESSAGES/django.po,sha256=awB8RMS-qByhNB6eH2f0Oyxb3SH8waLhrZ--rokGfaI,1118 -django/contrib/sites/locale/bn/LC_MESSAGES/django.mo,sha256=cI3a9_L-OC7gtdyRNaGX7A5w0Za0M4ERnYB7rSNkuRU,925 -django/contrib/sites/locale/bn/LC_MESSAGES/django.po,sha256=8ZxYF16bgtTZSZRZFok6IJxUV02vIztoVx2qXqwO8NM,1090 -django/contrib/sites/locale/br/LC_MESSAGES/django.mo,sha256=YMRHUamxztFILZxGTecQvUitRUcMnvLdqCoARq-NISM,628 -django/contrib/sites/locale/br/LC_MESSAGES/django.po,sha256=S0kQZf-Z5XrqJEPc03kHB1XrmQcjYboEq7KeEegaoCc,848 -django/contrib/sites/locale/bs/LC_MESSAGES/django.mo,sha256=bDeqQNme586LnQRQdvOWaLGZssjOoECef3vMq_OCXno,692 -django/contrib/sites/locale/bs/LC_MESSAGES/django.po,sha256=xRTWInDNiLxikjwsjgW_pYjhy24zOro90-909ns9fig,923 -django/contrib/sites/locale/ca/LC_MESSAGES/django.mo,sha256=lEUuQEpgDY3bVWzRONrPzYlojRoNduT16_oYDkkbdfk,791 -django/contrib/sites/locale/ca/LC_MESSAGES/django.po,sha256=aORAoVn69iG1ynmEfnkBzBO-UZOzzbkPVOU-ZvfMtZg,996 -django/contrib/sites/locale/cs/LC_MESSAGES/django.mo,sha256=1T_5VDHXNjFLGDhvUFYEx6LNM-7jENMvSjUzcA8njeQ,815 -django/contrib/sites/locale/cs/LC_MESSAGES/django.po,sha256=UCoVCD6JhUxB2IgegTnFQqd3_yPBkZ-5HJhif4v5Awg,979 -django/contrib/sites/locale/cy/LC_MESSAGES/django.mo,sha256=70pOie0K__hkmM9oBUaQfVwHjK8Cl48E26kRQL2mtew,835 -django/contrib/sites/locale/cy/LC_MESSAGES/django.po,sha256=FAZrVc72x-4R1A-1qYOBwADoXngC_F6FO8nRjr5-Z6g,1013 -django/contrib/sites/locale/da/LC_MESSAGES/django.mo,sha256=_vLc8KTeuNCWqBAAajbYl9KSnn5tbrBC8unB0gwdsCw,794 -django/contrib/sites/locale/da/LC_MESSAGES/django.po,sha256=Po1Z6u52CFCyz9hLfK009pMbZzZgHrBse0ViX8wCYm8,957 -django/contrib/sites/locale/de/LC_MESSAGES/django.mo,sha256=5Q6X0_bDQ1ZRpkTy7UpPNzrhmQsB9Q0P1agB7koRyzs,792 -django/contrib/sites/locale/de/LC_MESSAGES/django.po,sha256=aD0wBinqtDUPvBbwtHrLEhFdoVRx1nOh17cJFuWhN3U,980 -django/contrib/sites/locale/dsb/LC_MESSAGES/django.mo,sha256=pPpWYsYp81MTrqCsGF0QnGktZNIll70bdBwSkuVE8go,868 -django/contrib/sites/locale/dsb/LC_MESSAGES/django.po,sha256=IA3G8AKJls20gzfxnrfPzivMNpL8A0zBQBg7OyzrP6g,992 -django/contrib/sites/locale/el/LC_MESSAGES/django.mo,sha256=G9o1zLGysUePGzZRicQ2aIIrc2UXMLTQmdpbrUMfWBU,878 -django/contrib/sites/locale/el/LC_MESSAGES/django.po,sha256=RBi_D-_znYuV6LXfTlSOf1Mvuyl96fIyEoiZ-lgeyWs,1133 -django/contrib/sites/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/sites/locale/en/LC_MESSAGES/django.po,sha256=tSjfrNZ_FqLHsXjm5NuTyo5-JpdlPLsPZjFqF2APhy8,817 -django/contrib/sites/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 -django/contrib/sites/locale/en_AU/LC_MESSAGES/django.po,sha256=7V9dBdbfHa9aGAfs9nw6ivSxX30CqaYc1ptfplTAPJc,791 -django/contrib/sites/locale/en_GB/LC_MESSAGES/django.mo,sha256=FbSh7msJdrHsXr0EtDMuODFzSANG_HJ3iBlW8ePpqFs,639 -django/contrib/sites/locale/en_GB/LC_MESSAGES/django.po,sha256=Ib-DIuTWlrN3kg99kLCuqWJVtt1NWaFD4UbDFK6d4KY,862 -django/contrib/sites/locale/eo/LC_MESSAGES/django.mo,sha256=N4KkH12OHxic3pp1okeBhpfDx8XxxpULk3UC219vjWU,792 -django/contrib/sites/locale/eo/LC_MESSAGES/django.po,sha256=ymXSJaFJWGBO903ObqR-ows-p4T3KyUplc_p_3r1uk8,1043 -django/contrib/sites/locale/es/LC_MESSAGES/django.mo,sha256=qLN1uoCdslxdYWgdjgSBi7szllP-mQZtHbuZnNOthsQ,804 -django/contrib/sites/locale/es/LC_MESSAGES/django.po,sha256=QClia2zY39269VSQzkQsLwwukthN6u2JBsjbLNxA1VQ,1066 -django/contrib/sites/locale/es_AR/LC_MESSAGES/django.mo,sha256=sMZ_BBcxMK440lFG-dT6ekbGMIfLDvNHGL-sV6bUycU,817 -django/contrib/sites/locale/es_AR/LC_MESSAGES/django.po,sha256=RwyNylXbyxdSXn6qRDXd99-GaEPlmr6TicHTUW0boaQ,969 -django/contrib/sites/locale/es_CO/LC_MESSAGES/django.mo,sha256=a4Xje2M26wyIx6Wlg6puHo_OXjiDEy7b0FquT9gbThA,825 -django/contrib/sites/locale/es_CO/LC_MESSAGES/django.po,sha256=9bnRhVD099JzkheO80l65dufjuawsj9aSFgFu5A-lnM,949 -django/contrib/sites/locale/es_MX/LC_MESSAGES/django.mo,sha256=AtGta5jBL9XNBvfSpsCcnDtDhvcb89ALl4hNjSPxibM,809 -django/contrib/sites/locale/es_MX/LC_MESSAGES/django.po,sha256=TnkpQp-7swH-x9cytUJe-QJRd2n_pYMVo0ltDw9Pu8o,991 -django/contrib/sites/locale/es_VE/LC_MESSAGES/django.mo,sha256=59fZBDut-htCj38ZUoqPjhXJPjZBz-xpU9__QFr3kLs,486 -django/contrib/sites/locale/es_VE/LC_MESSAGES/django.po,sha256=8PWXy2L1l67wDIi98Q45j7OpVITr0Lt4zwitAnB-d_o,791 -django/contrib/sites/locale/et/LC_MESSAGES/django.mo,sha256=I2E-49UQsG-F26OeAfnKlfUdA3YCkUSV8ffA-GMSkE0,788 -django/contrib/sites/locale/et/LC_MESSAGES/django.po,sha256=mEfD6EyQ15PPivb5FTlkabt3Lo_XGtomI9XzHrrh34Y,992 -django/contrib/sites/locale/eu/LC_MESSAGES/django.mo,sha256=1HTAFI3DvTAflLJsN7NVtSd4XOTlfoeLGFyYCOX69Ec,807 -django/contrib/sites/locale/eu/LC_MESSAGES/django.po,sha256=NWxdE5-mF6Ak4nPRpCFEgAMIsVDe9YBEZl81v9kEuX8,1023 -django/contrib/sites/locale/fa/LC_MESSAGES/django.mo,sha256=odtsOpZ6noNqwDb18HDc2e6nz3NMsa-wrTN-9dk7d9w,872 -django/contrib/sites/locale/fa/LC_MESSAGES/django.po,sha256=uL2I9XjqIxqTUKf6buewtm9rwflM23pxspFMs7w4SPM,1088 -django/contrib/sites/locale/fi/LC_MESSAGES/django.mo,sha256=I5DUeLk1ChUC32q5uzriABCLLJpJKNbEK4BfqylPQzg,786 -django/contrib/sites/locale/fi/LC_MESSAGES/django.po,sha256=LH2sFIKM3YHPoz9zIu10z1DFv1svXphBdOhXNy4a17s,929 -django/contrib/sites/locale/fr/LC_MESSAGES/django.mo,sha256=lQe7mHXWDoQGSEZyK0TsPOwvnR-rjAzt8-FeLTCeXyU,797 -django/contrib/sites/locale/fr/LC_MESSAGES/django.po,sha256=u24rHDJ47AoBgcmBwI1tIescAgbjFxov6y906H_uhK0,999 -django/contrib/sites/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/sites/locale/fy/LC_MESSAGES/django.po,sha256=Yh6Lw0QI2Me0zCtlyXraFLjERKqklB6-IJLDTjH_jTs,781 -django/contrib/sites/locale/ga/LC_MESSAGES/django.mo,sha256=D-SyqmEcQP_7oIwiRG7PCdoWqFsy55cnmXcf2hx53vU,668 -django/contrib/sites/locale/ga/LC_MESSAGES/django.po,sha256=foWIcJ5jB0QCWmRbYiAju_05v4-jAq0yHC7wjdzhKD0,896 -django/contrib/sites/locale/gd/LC_MESSAGES/django.mo,sha256=df4XIGGD6FIyMUXsb-SoSqNfBFAsRXf4qYtolh_C964,858 -django/contrib/sites/locale/gd/LC_MESSAGES/django.po,sha256=NPKp7A5-y-MR7r8r4WqtcVQJEHCIOP5mLTd0cIfUsug,957 -django/contrib/sites/locale/gl/LC_MESSAGES/django.mo,sha256=QUJdJV71VT-4iVQ5mUAeyszTVhD2LlmmPQv0WpPWttU,742 -django/contrib/sites/locale/gl/LC_MESSAGES/django.po,sha256=cLcejsFyoFk0fRX9fAcl9owHoxiD593QZZeZTfObBVw,940 -django/contrib/sites/locale/he/LC_MESSAGES/django.mo,sha256=L3bganfG4gHqp2WXGh4rfWmmbaIxHaGc7-ypAqjSL_E,820 -django/contrib/sites/locale/he/LC_MESSAGES/django.po,sha256=nT0Gu0iWpFV7ZJ6SAdcogZccCz3CV-R5rgqwEl5NA6c,985 -django/contrib/sites/locale/hi/LC_MESSAGES/django.mo,sha256=J4oIS1vJnCvdCCUD4tlTUVyTe4Xn0gKcWedfhH4C0t0,665 -django/contrib/sites/locale/hi/LC_MESSAGES/django.po,sha256=INBrm37jL3okBHuzX8MSN1vMptj77a-4kwQkAyt8w_8,890 -django/contrib/sites/locale/hr/LC_MESSAGES/django.mo,sha256=KjDUhEaOuYSMexcURu2UgfkatN2rrUcAbCUbcpVSInk,876 -django/contrib/sites/locale/hr/LC_MESSAGES/django.po,sha256=-nFMFkVuDoKYDFV_zdNULOqQlnqtiCG57aakN5hqlmg,1055 -django/contrib/sites/locale/hsb/LC_MESSAGES/django.mo,sha256=RyHVb7u9aRn5BXmWzR1gApbZlOioPDJ59ufR1Oo3e8Y,863 -django/contrib/sites/locale/hsb/LC_MESSAGES/django.po,sha256=Aq54y5Gb14bIt28oDDrFltnSOk31Z2YalwaJMDMXfWc,987 -django/contrib/sites/locale/hu/LC_MESSAGES/django.mo,sha256=P--LN84U2BeZAvRVR-OiWl4R02cTTBi2o8XR2yHIwIU,796 -django/contrib/sites/locale/hu/LC_MESSAGES/django.po,sha256=b0VhyFdNaZZR5MH1vFsLL69FmICN8Dz-sTRk0PdK49E,953 -django/contrib/sites/locale/hy/LC_MESSAGES/django.mo,sha256=Hs9XwRHRkHicLWt_NvWvr7nMocmY-Kc8XphhVSAMQRc,906 -django/contrib/sites/locale/hy/LC_MESSAGES/django.po,sha256=MU4hXXGfjXKfYcjxDYzFfsEUIelz5ZzyQLkeSrUQKa0,1049 -django/contrib/sites/locale/ia/LC_MESSAGES/django.mo,sha256=gRMs-W5EiY26gqzwnDXEMbeb1vs0bYZ2DC2a9VCciew,809 -django/contrib/sites/locale/ia/LC_MESSAGES/django.po,sha256=HXZzn9ACIqfR2YoyvpK2FjZ7QuEq_RVZ1kSC4nxMgeg,934 -django/contrib/sites/locale/id/LC_MESSAGES/django.mo,sha256=__2E_2TmVUcbf1ygxtS1lHvkhv8L0mdTAtJpBsdH24Y,791 -django/contrib/sites/locale/id/LC_MESSAGES/django.po,sha256=e5teAHiMjLR8RDlg8q99qtW-K81ltcIiBIdb1MZw2sE,1000 -django/contrib/sites/locale/io/LC_MESSAGES/django.mo,sha256=W-NP0b-zR1oWUZnHZ6fPu5AC2Q6o7nUNoxssgeguUBo,760 -django/contrib/sites/locale/io/LC_MESSAGES/django.po,sha256=G4GUUz3rxoBjWTs-j5RFCvv52AEHiwrCBwom5hYeBSE,914 -django/contrib/sites/locale/is/LC_MESSAGES/django.mo,sha256=lkJgTzDjh5PNfIJpOS2DxKmwVUs9Sl5XwFHv4YdCB30,812 -django/contrib/sites/locale/is/LC_MESSAGES/django.po,sha256=1DVgAcHSZVyDd5xn483oqICIG4ooyZY8ko7A3aDogKM,976 -django/contrib/sites/locale/it/LC_MESSAGES/django.mo,sha256=6NQjjtDMudnAgnDCkemOXinzX0J-eAE5gSq1F8kjusY,795 -django/contrib/sites/locale/it/LC_MESSAGES/django.po,sha256=zxavlLMmp1t1rCDsgrw12kVgxiK5EyR_mOalSu8-ws8,984 -django/contrib/sites/locale/ja/LC_MESSAGES/django.mo,sha256=RNuCS6wv8uK5TmXkSH_7SjsbUFkf24spZfTsvfoTKro,814 -django/contrib/sites/locale/ja/LC_MESSAGES/django.po,sha256=e-cj92VOVc5ycIY6NwyFh5bO7Q9q5vp5CG4dOzd_eWQ,982 -django/contrib/sites/locale/ka/LC_MESSAGES/django.mo,sha256=m8GTqr9j0ijn0YJhvnsYwlk5oYcASKbHg_5hLqZ91TI,993 -django/contrib/sites/locale/ka/LC_MESSAGES/django.po,sha256=BCsMvNq-3Pi9-VnUvpUQaGx6pbCgI8rCcIHUA8VL4as,1155 -django/contrib/sites/locale/kab/LC_MESSAGES/django.mo,sha256=Utdj5gH5YPeaYMjeMzF-vjqYvYTCipre2qCBkEJSc-Y,808 -django/contrib/sites/locale/kab/LC_MESSAGES/django.po,sha256=d78Z-YanYZkyP5tpasj8oAa5RimVEmce6dlq5vDSscA,886 -django/contrib/sites/locale/kk/LC_MESSAGES/django.mo,sha256=T2dTZ83vBRfQb2dRaKOrhvO00BHQu_2bu0O0k7RsvGA,895 -django/contrib/sites/locale/kk/LC_MESSAGES/django.po,sha256=9ixNnoE3BxfBj4Xza0FM5qInd0uiNnAlXgDb_KaICn4,1057 -django/contrib/sites/locale/km/LC_MESSAGES/django.mo,sha256=Q7pn5E4qN957j20-iCHgrfI-p8sm3Tc8O2DWeuH0By8,701 -django/contrib/sites/locale/km/LC_MESSAGES/django.po,sha256=TOs76vlCMYOZrdHgXPWZhQH1kTBQTpzsDJ8N4kbJQ7E,926 -django/contrib/sites/locale/kn/LC_MESSAGES/django.mo,sha256=fikclDn-FKU_t9lZeBtQciisS3Kqv4tJHtu923OXLJI,676 -django/contrib/sites/locale/kn/LC_MESSAGES/django.po,sha256=p_P7L0KAUoKNLH8vuHV4_2mTWK1m1tjep5XgRqbWd2k,904 -django/contrib/sites/locale/ko/LC_MESSAGES/django.mo,sha256=wlfoWG-vmMSCipUJVVC0Y_W7QbGNNE-oEnVwl_6-AmY,807 -django/contrib/sites/locale/ko/LC_MESSAGES/django.po,sha256=TENAk9obGUxFwMnJQj_V9sZxEKJj4DyWMuGpx3Ft_pM,1049 -django/contrib/sites/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/sites/locale/lb/LC_MESSAGES/django.po,sha256=1yRdK9Zyh7kcWG7wUexuF9-zxEaKLS2gG3ggVOHbRJ8,779 -django/contrib/sites/locale/lt/LC_MESSAGES/django.mo,sha256=bK6PJtd7DaOgDukkzuqos5ktgdjSF_ffL9IJTQY839s,869 -django/contrib/sites/locale/lt/LC_MESSAGES/django.po,sha256=9q7QfFf_IR2A1Cr_9aLVIWf-McR0LivtRC284w2_bo0,1124 -django/contrib/sites/locale/lv/LC_MESSAGES/django.mo,sha256=t9bQiVqpAmXrq8QijN4Lh0n6EGUGQjnuH7hDcu21z4c,823 -django/contrib/sites/locale/lv/LC_MESSAGES/django.po,sha256=vMaEtXGosD3AcTomiuctbOpjLes8TRBnumLe8DC4yq4,1023 -django/contrib/sites/locale/mk/LC_MESSAGES/django.mo,sha256=_YXasRJRWjYmmiEWCrAoqnrKuHHPBG_v_EYTUe16Nfo,885 -django/contrib/sites/locale/mk/LC_MESSAGES/django.po,sha256=AgdIjiSpN0P5o5rr5Ie4sFhnmS5d4doB1ffk91lmOvY,1062 -django/contrib/sites/locale/ml/LC_MESSAGES/django.mo,sha256=A-_05uveKw1FGXzhxRh5VJ8j2lXXD6fwBFWXCDZ50Fs,708 -django/contrib/sites/locale/ml/LC_MESSAGES/django.po,sha256=_kDMypYyCURw-LiLp1Pfqc2kS6_5slPDXHRPGmdxbzM,936 -django/contrib/sites/locale/mn/LC_MESSAGES/django.mo,sha256=w2sqJRAe0wyz_IuCZ_Ocubs_VHL6wV1BcutWPz0dseQ,867 -django/contrib/sites/locale/mn/LC_MESSAGES/django.po,sha256=Zh_Eao0kLZsrQ8wkL1f-pRrsAtNJOspu45uStq5t8Mo,1127 -django/contrib/sites/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/sites/locale/mr/LC_MESSAGES/django.po,sha256=pqnjF5oxvpMyjijy6JfI8qJbbbowZzE5tZF0DMYiCBs,773 -django/contrib/sites/locale/my/LC_MESSAGES/django.mo,sha256=jN59e9wRheZYx1A4t_BKc7Hx11J5LJg2wQRd21aQv08,961 -django/contrib/sites/locale/my/LC_MESSAGES/django.po,sha256=EhqYIW5-rX33YjsDsBwfiFb3BK6fZKVc3CRYeJpZX1E,1086 -django/contrib/sites/locale/nb/LC_MESSAGES/django.mo,sha256=AaiHGcmcciy5IMBPVAShcc1OQOETJvBCv7GYHMcIQMA,793 -django/contrib/sites/locale/nb/LC_MESSAGES/django.po,sha256=936zoN1sPSiiq7GuH01umrw8W6BtymYEU3bCfOQyfWE,1000 -django/contrib/sites/locale/ne/LC_MESSAGES/django.mo,sha256=wM13WrA4uMhfpU1GKFMcbVBh5LRB4v-v-t7t4AHqaU4,899 -django/contrib/sites/locale/ne/LC_MESSAGES/django.po,sha256=9_78nN66h6ioTnd0OO6YM8MHbqw8uoiaSAyn69aT8Ag,1021 -django/contrib/sites/locale/nl/LC_MESSAGES/django.mo,sha256=FDIRQORWGlTLABZ7384C48vf1U80aWbMNK82eBSlonc,788 -django/contrib/sites/locale/nl/LC_MESSAGES/django.po,sha256=s2qsDEhcEVxBsVjxQduYhej6dMosoPhdPeR3Drl2aXA,1005 -django/contrib/sites/locale/nn/LC_MESSAGES/django.mo,sha256=m1SUw5bhDUemD8yMGDxcWdhbUMtzZ9WXWXtV2AHIzBs,633 -django/contrib/sites/locale/nn/LC_MESSAGES/django.po,sha256=i8BQyewiU2ymkAkj12M2MJBVbCJPp8PB8_NcQiScaD4,861 -django/contrib/sites/locale/os/LC_MESSAGES/django.mo,sha256=Su06FkWMOPzBxoung3bEju_EnyAEAXROoe33imO65uQ,806 -django/contrib/sites/locale/os/LC_MESSAGES/django.po,sha256=4i4rX6aXDUKjq64T02iStqV2V2erUsSVnTivh2XtQeY,963 -django/contrib/sites/locale/pa/LC_MESSAGES/django.mo,sha256=tOHiisOtZrTyIFoo4Ipn_XFH9hhu-ubJLMdOML5ZUgk,684 -django/contrib/sites/locale/pa/LC_MESSAGES/django.po,sha256=ztGyuqvzxRfNjqDG0rMLCu_oQ8V3Dxdsx0WZoYUyNv8,912 -django/contrib/sites/locale/pl/LC_MESSAGES/django.mo,sha256=TbH30lyyQ2QpAxc5XJKWCBNV3WUl7wOL4a-BKkeyUdM,944 -django/contrib/sites/locale/pl/LC_MESSAGES/django.po,sha256=-kQ49UvXITMy1vjJoN_emuazV_EjNDQnZDERXWNoKvw,1181 -django/contrib/sites/locale/pt/LC_MESSAGES/django.mo,sha256=PrcFQ04lFJ7mIYThXbW6acmDigEFIoLAC0PYk5hfaJs,797 -django/contrib/sites/locale/pt/LC_MESSAGES/django.po,sha256=Aj8hYI9W5nk5uxKHj1oE-b9bxmmuoeXLKaJDPfI2x2o,993 -django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.mo,sha256=BsFfarOR6Qk67fB-tTWgGhuOReJSgjwJBkIzZsv28vo,824 -django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.po,sha256=jfvgelpWn2VQqYe2_CE39SLTsscCckvjuZo6dWII28c,1023 -django/contrib/sites/locale/ro/LC_MESSAGES/django.mo,sha256=oGsZw4_uYpaH6adMxnAuifJgHeZ_ytRZ4rFhiNfRQkQ,857 -django/contrib/sites/locale/ro/LC_MESSAGES/django.po,sha256=tWbWVbjFFELNzSXX4_5ltmzEeEJsY3pKwgEOjgV_W_8,1112 -django/contrib/sites/locale/ru/LC_MESSAGES/django.mo,sha256=bIZJWMpm2O5S6RC_2cfkrp5NXaTU2GWSsMr0wHVEmcw,1016 -django/contrib/sites/locale/ru/LC_MESSAGES/django.po,sha256=jHy5GR05ZSjLmAwaVNq3m0WdhO9GYxge3rDBziqesA8,1300 -django/contrib/sites/locale/sk/LC_MESSAGES/django.mo,sha256=-EYdm14ZjoR8bd7Rv2b5G7UJVSKmZa1ItLsdATR3-Cg,822 -django/contrib/sites/locale/sk/LC_MESSAGES/django.po,sha256=L2YRNq26DdT3OUFhw25ncZBgs232v6kSsAUTc0beIC8,1019 -django/contrib/sites/locale/sl/LC_MESSAGES/django.mo,sha256=JmkpTKJGWgnBM3CqOUriGvrDnvg2YWabIU2kbYAOM4s,845 -django/contrib/sites/locale/sl/LC_MESSAGES/django.po,sha256=qWrWrSz5r3UOVraX08ILt3TTmfyTDGKbJKbTlN9YImU,1059 -django/contrib/sites/locale/sq/LC_MESSAGES/django.mo,sha256=gVY4vWlvDvWI9mSlFfIWqHP4a_NNFt-0CFzStPRXuoQ,810 -django/contrib/sites/locale/sq/LC_MESSAGES/django.po,sha256=zg3ALcMNZErAS_xFxmtv6TmXZ0vxobX5AzCwOSRSwc8,930 -django/contrib/sites/locale/sr/LC_MESSAGES/django.mo,sha256=jFpsqetfcXxdEnY3fX-Jhxa2f0iSALLqptW6jzk0flc,724 -django/contrib/sites/locale/sr/LC_MESSAGES/django.po,sha256=ZJ5yq6aiVQhms2KE2SQlNjxyzTYZuN0MxNbFylzlfTQ,955 -django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=pK37c--H6ehAyUtViy5viEbJwVtnhF5Z2O6tG28kWgo,714 -django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.po,sha256=FC_JIIl1hwnjzth_e1M3icJgnS1BibXZEtpK10Aef0w,945 -django/contrib/sites/locale/sv/LC_MESSAGES/django.mo,sha256=qmhdn3N2C_DR_FYrUaFSacVjghgfb0CuWKanVRJSTq8,792 -django/contrib/sites/locale/sv/LC_MESSAGES/django.po,sha256=dDVuuuHGpZIoT6dU48aT2j4nEuGrd6zZ3FiZEs3TCeE,987 -django/contrib/sites/locale/sw/LC_MESSAGES/django.mo,sha256=cWjjDdFXBGmpUm03UDtgdDrREa2r75oMsXiEPT_Bx3g,781 -django/contrib/sites/locale/sw/LC_MESSAGES/django.po,sha256=oOKNdztQQU0sd6XmLI-n3ONmTL7jx3Q0z1YD8673Wi8,901 -django/contrib/sites/locale/ta/LC_MESSAGES/django.mo,sha256=CLO41KsSKqBrgtrHi6fmXaBk-_Y2l4KBLDJctZuZyWY,714 -django/contrib/sites/locale/ta/LC_MESSAGES/django.po,sha256=YsTITHg7ikkNcsP29tDgkZrUdtO0s9PrV1XPu4mgqCw,939 -django/contrib/sites/locale/te/LC_MESSAGES/django.mo,sha256=GmIWuVyIOcoQoAmr2HxCwBDE9JUYEktzYig93H_4v50,687 -django/contrib/sites/locale/te/LC_MESSAGES/django.po,sha256=jbncxU9H3EjXxWPsEoCKJhKi392XXTGvWyuenqLDxps,912 -django/contrib/sites/locale/th/LC_MESSAGES/django.mo,sha256=4BQRjNbPJEQog4oe8CUHxHXszfZpw09Qa3XIku41eac,850 -django/contrib/sites/locale/th/LC_MESSAGES/django.po,sha256=OpTsWP-Whkf-j4qdjdOh-Gw72qJtiLyMllKefENTAcA,1047 -django/contrib/sites/locale/tr/LC_MESSAGES/django.mo,sha256=NxEKAJFmns0tWftlgyKXHJcBKBxo6ImR4SjIw8-zbgk,799 -django/contrib/sites/locale/tr/LC_MESSAGES/django.po,sha256=L9tsnwxw1BEJD-Nm3m1RAS7ekgdmyC0ETs_mr7tQw1E,1043 -django/contrib/sites/locale/tt/LC_MESSAGES/django.mo,sha256=gmmjXeEQUlBpfDmouhxE-qpEtv-iWdQSobYL5MWprZc,706 -django/contrib/sites/locale/tt/LC_MESSAGES/django.po,sha256=yj49TjwcZ4YrGqnJrKh3neKydlTgwYduto9KsmxI_eI,930 -django/contrib/sites/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/sites/locale/udm/LC_MESSAGES/django.po,sha256=vrLZ0XJF63CO3IucbQpd12lxuoM9S8tTUv6cpu3g81c,767 -django/contrib/sites/locale/uk/LC_MESSAGES/django.mo,sha256=H4806mPqOoHJFm549F7drzsfkvAXWKmn1w_WVwQx9rk,960 -django/contrib/sites/locale/uk/LC_MESSAGES/django.po,sha256=jmJKTuGLhfP4rg8M_d86XR4X8qYB-JAtEf6jRKuzi3w,1187 -django/contrib/sites/locale/ur/LC_MESSAGES/django.mo,sha256=s6QL8AB_Mp9haXS4n1r9b0YhEUECPxUyPrHTMI3agts,654 -django/contrib/sites/locale/ur/LC_MESSAGES/django.po,sha256=R9tv3qtett8CUGackoHrc5XADeygVKAE0Fz8YzK2PZ4,885 -django/contrib/sites/locale/vi/LC_MESSAGES/django.mo,sha256=YOaKcdrN1238Zdm81jUkc2cpxjInAbdnhsSqHP_jQsI,762 -django/contrib/sites/locale/vi/LC_MESSAGES/django.po,sha256=AHcqR2p0fdscLvzbJO_a-CzMzaeRL4LOw4HB9K3noVQ,989 -django/contrib/sites/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=7D9_pDY5lBRpo1kfzIQL-PNvIg-ofCm7cBHE1-JWlMk,779 -django/contrib/sites/locale/zh_Hans/LC_MESSAGES/django.po,sha256=xI_N00xhV8dWDp4fg5Mmj9ivOBBdHP79T3-JYXPyc5M,946 -django/contrib/sites/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=0F6Qmh1smIXlOUNDaDwDajyyGecc1azfwh8BhXrpETo,790 -django/contrib/sites/locale/zh_Hant/LC_MESSAGES/django.po,sha256=ixbXNBNKNfrpI_B0O_zktTfo63sRFMOk1B1uIh4DGGg,1046 -django/contrib/sites/migrations/0001_initial.py,sha256=CkzQ6PgORwSokrpq6Dj6u-WCEtcuSf4Pau6UyiBpSlA,1069 -django/contrib/sites/migrations/0002_alter_domain_unique.py,sha256=HECWqP0R0hp77p_ubI5bI9DqEXIiGOTTszAr4EpgtVE,517 -django/contrib/sites/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/staticfiles/__init__.py,sha256=eGxMURIKxiv-dE7rP1hwNgUhfzUN36-Bc58jCpHgmCE,73 -django/contrib/staticfiles/apps.py,sha256=q0Tfga23RfN9gCRPhopgChqOFqbtGfkc3-VeH1CRClg,413 -django/contrib/staticfiles/checks.py,sha256=rH9A8NIYtEkA_PRYXQJxndm243O6Mz6GwyqWSUe3f24,391 -django/contrib/staticfiles/finders.py,sha256=a46SgWyQxKlZY_UdfBnOLVvIs8HHQ7Nc8xy2EquuiD4,10158 -django/contrib/staticfiles/handlers.py,sha256=WLg6lshuKMSfFPfPLeDDer3_1TrEIg-OpCEdcp4uqEg,2329 -django/contrib/staticfiles/storage.py,sha256=mIhWdkv-HCRivTWdozB7vnRP7OjnWjZFarUlfjNj-uM,19152 -django/contrib/staticfiles/testing.py,sha256=4X-EtOfXnwkJAyFT8qe4H4sbVTKgM65klLUtY81KHiE,463 -django/contrib/staticfiles/urls.py,sha256=owDM_hdyPeRmxYxZisSMoplwnzWrptI_W8-3K2f7ITA,498 -django/contrib/staticfiles/utils.py,sha256=vrtb1g0Zt1idSZmBAAJ2qLOxGcyb7uWAxqlxZ7C7B40,1954 -django/contrib/staticfiles/views.py,sha256=CaWZq4AHEbOGW7mg_0mbkGUP8KJTlVNnofDBNIhRUo4,1264 -django/contrib/staticfiles/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/staticfiles/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/staticfiles/management/commands/collectstatic.py,sha256=sFhpb9H0M6v0HElRwdURTtkyXKqZfqfwd0C0J9EXP1w,15136 -django/contrib/staticfiles/management/commands/findstatic.py,sha256=R5CN75jGnvsV16MQ23eWake_EBE7NG94ExKL-54NqYQ,1539 -django/contrib/staticfiles/management/commands/runserver.py,sha256=uv-h6a8AOs0c92ILT_3Mu0UTBoCiQzThpUEmR-blj70,1318 -django/contrib/staticfiles/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/staticfiles/templatetags/staticfiles.py,sha256=P3ixCkaCvU8wTQYePYgZh0mWzyeE0y4SDXltF8TWB6M,537 -django/contrib/syndication/__init__.py,sha256=b5C6iIdbIOHf5wvcm1QJYsspErH3TyWJnCDYS9NjFY4,73 -django/contrib/syndication/apps.py,sha256=hXquFH_3BL6NNR2cxLU-vHlBJZ3OCjbcl8jkzCNvE64,203 -django/contrib/syndication/views.py,sha256=kXBT4kGjWBqmYVU0BFrMxMyqkdPeUjgIr-TGp5HvCS0,8617 -django/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/exceptions.py,sha256=V61tsXhjxUnLxfNVAQBUUhvSgvdDhLL3ajIS5TCGlyI,5275 -django/core/paginator.py,sha256=tUAUQ5XA_aSw1Ws-3qJfxXKzeVoKGiThoie9mbAj_6s,5884 -django/core/signals.py,sha256=uGRybHCJZ74by2HV-9JEWvfmnw_scuhcxaRP3UmZDjE,247 -django/core/signing.py,sha256=fRflzQnv2LA99q7vBCu3FXrtA_6mNefufR-6OlSQAtI,6660 -django/core/validators.py,sha256=M5V3aRs0qjsI1mM4-jKw1FHR4IPf-ntPGN3es2rVwZ0,18596 -django/core/wsgi.py,sha256=2sYMSe3IBrENeQT7rys-04CRmf8hW2Q2CjlkBUIyjHk,388 -django/core/cache/__init__.py,sha256=gfjHtXklQU4M8vluEtpJf-mG3q7UHATaGrluiYAzO_0,3711 -django/core/cache/utils.py,sha256=EakHn48OQtJP7OCLwkfACYZjVqjBtcdp86xGJbgPXVc,432 -django/core/cache/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/cache/backends/base.py,sha256=hn98WTdIDebq0oy5SAVq08-pkmGAbt75rLOCqAvuji4,9799 -django/core/cache/backends/db.py,sha256=qVcCIEztElRPXAbAG0a9vz27qgv1ZFjwunyDtSo_kEo,8939 -django/core/cache/backends/dummy.py,sha256=DtugeHHs1doIp2dV3CX5dkoJ5dj6bJ7rtKmHNBogBYg,1218 -django/core/cache/backends/filebased.py,sha256=osnUkOsfqK3dxctG8p3UtT4j_8TIs2Cq8Ppj4Bq9qSU,4884 -django/core/cache/backends/locmem.py,sha256=ibbZBYB3SVcbwgvEz-R5k33F4G_ycuxBoTfz06wWbDc,4198 -django/core/cache/backends/memcached.py,sha256=KigcrxWadhCmb8A1suMMJt0xxfTbsqfi0InDHXxP5YY,7956 -django/core/checks/__init__.py,sha256=_HP2dErvPYginc0R1Bwblq1R-gykN2sxcYCCyMaalHg,879 -django/core/checks/caches.py,sha256=jhyfX_m6TepTYRBa-j3qh1owD1W-3jmceu8b8dIFqVk,415 -django/core/checks/database.py,sha256=IpXyIS-TDTH4p037aG2l0qWnAVFtp8ozJEsXMvaoIu8,261 -django/core/checks/messages.py,sha256=ZbasGH7L_MeIGIwb_nYiO9Z_MXF0-aXO1ru2xFACj6Y,2161 -django/core/checks/model_checks.py,sha256=Gif4kfndBdBe4sc2NfLThe__qKcJBY5eqD-2Oh6takA,6183 -django/core/checks/registry.py,sha256=qk77K8-s8jfZR0ej7Rx-iemsXEkKF47d0VB4pmEnqa8,3108 -django/core/checks/templates.py,sha256=GnnM1ZW3CIk22KmyK094qzgGIrxmIULFGfPPuvnArFI,1185 -django/core/checks/urls.py,sha256=lA8wbw2WDC-e4ZAr-9ooEWtGvrNyMh1G-MZbojGq9W8,3246 -django/core/checks/compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/checks/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/checks/security/base.py,sha256=JsF8UvJLlWXF2ysswWaT08Mqd6KDt4weOUr1-spCZt8,6743 -django/core/checks/security/csrf.py,sha256=CH09reOHXQEdCMqhlejyh0IsGwDQkFeHRYO25glZTYE,1259 -django/core/checks/security/sessions.py,sha256=vvsxKEwb3qHgnCG0R5KUkfUpMHuZMfxjo9-X-2BTp-4,2558 -django/core/files/__init__.py,sha256=OjalFLvs-vPaTE3vP0eYZWyNwMj9pLJZNgG4AcGn2_Y,60 -django/core/files/base.py,sha256=E2Tanv7zjeBZYrGgph4FShEMtv1MPN0fs1mS_L-JOiY,4984 -django/core/files/images.py,sha256=_lnhvkwnXJ_Dih6nNIAm9UvTwxOd7CSPi4MjPVxMybY,2377 -django/core/files/locks.py,sha256=nn0KJG_yXoIT_pHqzeZhBkQsA1tghaVzN-p4DA5VER4,3512 -django/core/files/move.py,sha256=1R3xTJKI9Plo0xRknz-Uv2_QQRw_vmr-rUEcrTJloMA,2956 -django/core/files/storage.py,sha256=tEzJUiMS6W_dk0IceFRtqAwi1vMC7H-wFjocBe7zN94,14633 -django/core/files/temp.py,sha256=jR1S5j-UtRMbQEYpHAY-yffp6QCKxngbzqi6MA1tOwI,2501 -django/core/files/uploadedfile.py,sha256=hHaPethGK2DEBIZzf7UeSRVznea4qHgsv_zHWjQe5ho,3928 -django/core/files/uploadhandler.py,sha256=n4edWZI6txsO-UTW6L3X5aX2krSr7rxu6h5LQwdR_48,6539 -django/core/files/utils.py,sha256=5Ady6JuzCYb_VAtSwc9Dr-iTmpuMIVuJ3RKck1-sYzk,1752 -django/core/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/handlers/base.py,sha256=nF21s4mXxClfbkT4pQ1MSLlcJVXi1RqfVshDcUSw0ow,6867 -django/core/handlers/exception.py,sha256=SoirxgN-UU96fJMJ_LtBbPE4A4WXgYUc-sKo64LsmnQ,4691 -django/core/handlers/wsgi.py,sha256=8mRSLDdUkPebrtjdcJpdl5OQufxzZemjDg_f2KDCdAc,8029 -django/core/mail/__init__.py,sha256=LBC94qDGLULxasR97XAb0xGssr29-EbNUTDpbtnQ6iE,4484 -django/core/mail/message.py,sha256=vyEe2o3YC0rvabe3PXh4DHXtnjR0lrQ4ySdgXsfRcy8,17159 -django/core/mail/utils.py,sha256=nUQWqzPAZfqWY2J7SsYfVlihYMYz6i_A8H5D0pSkBvo,452 -django/core/mail/backends/__init__.py,sha256=VJ_9dBWKA48MXBZXVUaTy9NhgfRonapA6UAjVFEPKD8,37 -django/core/mail/backends/base.py,sha256=f9Oeaw1RAiPHmsTdQakeYzEabfOtULz0UvldP4Cydpk,1660 -django/core/mail/backends/console.py,sha256=l1XFESBbk1Ney5bUgjCYVPoSDzjobzIK3GMQyxQX1Qk,1402 -django/core/mail/backends/dummy.py,sha256=sI7tAa3MfG43UHARduttBvEAYYfiLasgF39jzaZPu9E,234 -django/core/mail/backends/filebased.py,sha256=OPRc5lDsB9Gble251fwXp0oq1qKeZM9T2JTcZwL_5js,2715 -django/core/mail/backends/locmem.py,sha256=OgTK_4QGhsBdqtDKY6bwYNKw2MXudc0PSF5GNVqS7gk,884 -django/core/mail/backends/smtp.py,sha256=TE2v-96rSgN7nZ_3CfrNc7-0Utk4ALB3obRw-TXfz90,5302 -django/core/management/__init__.py,sha256=WHEr3W3YgriQXmQ0osrNqh0eV6KMjZA0oW6YIl880tc,15323 -django/core/management/base.py,sha256=O9HYlEe3B5wNdIv3Hbpay-nunhnFP1Xm_wHeuIeDEuY,20363 -django/core/management/color.py,sha256=jAThS-IMFpjAFQ15P6Ncv7ze33dR1gFz_fXfzHBrcnI,1821 -django/core/management/sql.py,sha256=bnxEUUIJScj6A67s0txpq4RT8sh0n-RS5ZxcNqySaAU,1921 -django/core/management/templates.py,sha256=x7PeOu2FCAFOMc3v0Y95s_LJQVmCBFv-g5RqUXNoH5c,13714 -django/core/management/utils.py,sha256=kZFPEyKenZUWEaz1Ko8c5XScI7MhmHjloPfWyiaHMCA,3490 -django/core/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/management/commands/check.py,sha256=nwmRA9rdeavDPmIpZGmUG79fftjradKtrogNIN4CakA,2312 -django/core/management/commands/compilemessages.py,sha256=F4zYpo3xuK30ri5Ja5RquPsP-esQJ3DHhkz6SNmsqNo,5073 -django/core/management/commands/createcachetable.py,sha256=zgcn_QHH_fTh181L1pcRBmRVrNCUgQPyGyKxahQ8kvI,4376 -django/core/management/commands/dbshell.py,sha256=OeexBQJXEUArOKWGKpBSsaA043X1UokzNWc_EDbJi5M,1240 -django/core/management/commands/diffsettings.py,sha256=3as-r5_kfS8lw93SO7xUNs12p_IGVOzG43UTLdcMXx8,3369 -django/core/management/commands/dumpdata.py,sha256=uJ1znSWHk06pugtNdgly_gfWaNpQwOtqI59CgvJHI-Y,8607 -django/core/management/commands/flush.py,sha256=9lJy_cGMajdVmrLwdFpYqDCN89G69xYcjwBNfOpkRVc,3590 -django/core/management/commands/inspectdb.py,sha256=gqP7PCdnmdAPI1YHOeuheG-7qEl9Ch-697rFaFJ5J40,12852 -django/core/management/commands/loaddata.py,sha256=rXZ31_IItpXlzAKf2S9X1TOCFGKQcG3OVrGbJJ5p_1Y,14267 -django/core/management/commands/makemessages.py,sha256=0fzXP5GmPGfWJkoQ_reY8G0Furt5tT1rWXPfa2FBL80,27468 -django/core/management/commands/makemigrations.py,sha256=OMeTnpJfYla4xQicyJLCmUmHwH39_jSebzREdLyVyfI,14261 -django/core/management/commands/migrate.py,sha256=Pk4ZVi3YlnCm-ZN0lB0fp_XzKAHHBROA1pW9c8o3Oio,14044 -django/core/management/commands/runserver.py,sha256=X1wCUWzjCeL8_nLnCwrVaJD2Od0zdNezguiq0maNYgI,6347 -django/core/management/commands/sendtestemail.py,sha256=quvNqm0lfl3vvDfL0S0pBtW1te7LGcYNUrrac4lMAAg,1488 -django/core/management/commands/shell.py,sha256=BROjrvPNCp1kC6jArrOEgzdyj0f6MNh4p760w2NdCyE,4055 -django/core/management/commands/showmigrations.py,sha256=OQ2ovRjgy4A_LRUtFe6u2siUn0xqUBD-Qj3o7Ke5Rqs,5333 -django/core/management/commands/sqlflush.py,sha256=mNxqSBp-fF36h3JMtEsDvYzCysxDA5R0IjhyiYyDMiI,795 -django/core/management/commands/sqlmigrate.py,sha256=bKBsq3ldex8SR8GhMnrA7FS8kpXGjjy8lax_EL6Bc3E,2742 -django/core/management/commands/sqlsequencereset.py,sha256=hCyc6og7K4cDbVflf85lusgoQz0fWiOylo6Jtlold8U,872 -django/core/management/commands/squashmigrations.py,sha256=m__NLsjU9-4YHJKOfcMmNdkklbLTEVLJ4epxpLjQVCM,9351 -django/core/management/commands/startapp.py,sha256=rvXApmLdP3gBinKaOMJtT1g3YrgVTlHteqNqFioNu8Y,503 -django/core/management/commands/startproject.py,sha256=ygP95ZEldotgEVmxDYBPUyAedNQTTwJulKLinGUxZtg,688 -django/core/management/commands/test.py,sha256=SexB7-Cdz4P3E9BcH8eGPOHuTKE5d0tCzyWfKNBQ0S8,2231 -django/core/management/commands/testserver.py,sha256=Veo-U69NUEyFuM_O9tG7GjRZ3aR2vWzcaVWahAIdS_M,2117 -django/core/serializers/__init__.py,sha256=74Jfha4K1Jxuciz0JCUPqXVUbGAqM0WhkzROJ1-Vfyk,8201 -django/core/serializers/base.py,sha256=AdJDQc0c2XXwsBrZs7VM8rZr6pUsP4JCJIYBXDc0EGc,7732 -django/core/serializers/json.py,sha256=sKfzArRjK2zNaRUxYRBbUWmoQfDUKzyKdIKu1gBeKnc,3352 -django/core/serializers/python.py,sha256=BIJQvWkHt0AAAL3oM_TVM2foFwqNRmx4XDIHcrrazxc,7320 -django/core/serializers/pyyaml.py,sha256=SXwXHjs0_29tycOtXXs-lWGS--SBBVeHlNb-rjheCak,2674 -django/core/serializers/xml_serializer.py,sha256=5TnYdZtx4uWbgCOf-xrknNtJNM7KvObtaCjpxg0CHxY,15138 -django/core/servers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/servers/basehttp.py,sha256=e60X0mo7GHl6SAR7w-s4NT4YI9n9eeHpWLZvt4ZhqT8,6065 -django/db/__init__.py,sha256=1mrVglcKwooIWzGxQPgRevVkgd1iBAa7ESWPUAZNcS8,2128 -django/db/transaction.py,sha256=tHQFzfrcupqrrv_Ux8wvRKYOsEi8WiwYdMHX7wTpjqY,11229 -django/db/utils.py,sha256=jDaaur7BVLCU87RRPCS9gBW_I_QOdraOk4f1vWn3cXY,9790 -django/db/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/ddl_references.py,sha256=dBg6xSNpyH3YdHInd5afAo6oU_USpv828lnrg78tmug,5792 -django/db/backends/signals.py,sha256=rAFB5bUdnk5jckIT4PwVwEuE6aj4dbtasRHcRnIyH6Y,95 -django/db/backends/utils.py,sha256=14Jf5WWbG4qQ49iXQmguidWt4WuxEDyWghoiG6oacyE,8688 -django/db/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/base/base.py,sha256=qLA8aM_ZOJleEXDKsYssvbJOyGcGweUI71BkwiW1wBs,24431 -django/db/backends/base/client.py,sha256=r6dcRhY5tPx9lzDZhbcDC1z9LDdXxRe_vtkgYQSmuEI,513 -django/db/backends/base/creation.py,sha256=jMCa7C65YTELVTteIbGPoLtilqnNNB-ay9TcM2iL-tY,11972 -django/db/backends/base/features.py,sha256=yDtSTHZS-IW5MVG6AzEWTa-XzfsEuv1aI8UKorAKe9k,10909 -django/db/backends/base/introspection.py,sha256=G0ejTl_mFSCse_4kbAcqssS_3x20wSyPQDgvzXNmJkQ,8035 -django/db/backends/base/operations.py,sha256=vJWV22M8sfN4czjzroZQ903rU9Py-KwP8DImqROUGgA,24665 -django/db/backends/base/schema.py,sha256=dvBBGiZ6VmRes-nbMbPcCUIlyQJ8ruzTFjgQjUmdA3c,49505 -django/db/backends/base/validation.py,sha256=4zIAVsePyETiRtK7CAw78y4ZiCPISs0Pv17mFWy2Tr4,1040 -django/db/backends/dummy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/dummy/base.py,sha256=ZsB_hKOW9tuaNbZt64fGY6tk0_FqMiF72rp8TE3NrDA,2244 -django/db/backends/dummy/features.py,sha256=m_ZHTydiox34PXZGj9AbbpjZni9UW44eKvz_VNbM7Ug,153 -django/db/backends/mysql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/mysql/base.py,sha256=FZoDgaLnLLxhEN8i-nIIRaz-B2dM__jFMS_gIEstjWM,14072 -django/db/backends/mysql/client.py,sha256=vvt1-wevYeQR4JmklrmZ_nrUrXdMaAXQOV7j42XZx4M,1834 -django/db/backends/mysql/compiler.py,sha256=J30bWgLviaWfUktegN7YnXmp6CaEZ6u8VeuiN4DUk4E,704 -django/db/backends/mysql/creation.py,sha256=vFhQ2zYbGrC_TrIc7wBcbh_i7apGD-t0ZG0h3vD_IJQ,3265 -django/db/backends/mysql/features.py,sha256=t6RO73Hp-Ji397xqN4wnhdRvxVLyu9OgHyXUHuh6uIY,3538 -django/db/backends/mysql/introspection.py,sha256=J803HLgJTly4WwD8_uWGUjmUjDJwAW-FyKFWZIF1i5I,10201 -django/db/backends/mysql/operations.py,sha256=fBXLCjk1t2rCTwuNNZFJm5je4RAUKYsiJyE62Do0PJs,11358 -django/db/backends/mysql/schema.py,sha256=jXTAKbeFSFu5g1WVmHtX7B4UJFWoF0DJN66birCgOQs,4479 -django/db/backends/mysql/validation.py,sha256=C0MLttf0KGEU9i0N1jrXwprRgSV0uT7qL4Eu9yllpRQ,2565 -django/db/backends/oracle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/oracle/base.py,sha256=Bjx8wY7N9oGDSjvKP96-9j2IbqCSrNrNl_3Sd1mSb58,22638 -django/db/backends/oracle/client.py,sha256=efoAYVH76x_AMMqq1h8JNaCpq_UtlktyuYuXLZfze4E,331 -django/db/backends/oracle/compiler.py,sha256=I4vNNZ3qYrZ8mV4yL4YCyDOyExUaFbrYOcA-gywqWgg,2437 -django/db/backends/oracle/creation.py,sha256=-oOjmWy8kXznf3VH7TQt2Miq3B0Xvn7hy0cvuTPa6BM,18640 -django/db/backends/oracle/features.py,sha256=Zb68pUqzB79OEHDWtTkBYdxlDfoDk6hZiCyDAP2pqqc,2088 -django/db/backends/oracle/functions.py,sha256=PHMO9cApG1EhZPD4E0Vd6dzPmE_Dzouf9GIWbF1X7kc,768 -django/db/backends/oracle/introspection.py,sha256=MKc51u-u3kD3lPJIEUkWHSfByHOu2-CQpo0Q9KD2NLs,11946 -django/db/backends/oracle/operations.py,sha256=KMN3WeC_Tt3VGuYXMevqq9pq2Yopwauo54GXOJdqnlo,23939 -django/db/backends/oracle/schema.py,sha256=GFR1jojMnqcPiZmf00iWYK2aD-ao5caTH09iUyaY0pc,7358 -django/db/backends/oracle/utils.py,sha256=nQVsE_cwQZeyvLwFhZ_UTvGs3SdoGCzeCJ82UD3Rhj0,1457 -django/db/backends/oracle/validation.py,sha256=O1Vx5ljfyEVo9W-o4OVsu_OTfZ5V5P9HX3kNMtdE75o,860 -django/db/backends/postgresql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/postgresql/base.py,sha256=lY3G4HLKY4gCR08T_rC4khafOcLrDtqBLfcuMXqaBAo,10558 -django/db/backends/postgresql/client.py,sha256=EbqEen1Nkp5sb4RVn1tawrbEioXQjbGI6M72FfTg79w,2382 -django/db/backends/postgresql/creation.py,sha256=rGjKMO8KH-vKrrHXrSInMvthrtkTMyDIgIQB5p6GmnQ,2928 -django/db/backends/postgresql/features.py,sha256=v_5YfdP7eSpGAXyPIlBe8aiSYuWb8eiNJD6l0NxyOp4,2429 -django/db/backends/postgresql/introspection.py,sha256=B9SNIsDMP_TX-YmrvGq2gPeTuClp41x3RrxQEY4eafs,11775 -django/db/backends/postgresql/operations.py,sha256=0eDv7U7RMBeeh8rVHBSiPNLpZb_uHtaLja0alxUbkuc,11123 -django/db/backends/postgresql/schema.py,sha256=10GrHRQlQ5j1pGh6vjdxgWP7yChyBmpi7605asUA8ic,6402 -django/db/backends/postgresql/utils.py,sha256=3GXuTEoyPNqfUcXOCVnC-gw7xdAV17ZvZYb4Qu6f7Mc,176 -django/db/backends/postgresql_psycopg2/__init__.py,sha256=5v4iwk9d_ENPQMdjDfQxvPKTlOXxfaWsnaR-qgCPMcM,261 -django/db/backends/postgresql_psycopg2/base.py,sha256=g2aAztfMtAL93F8tGmO1W2YQbmr-w5sm_Obopi4JHX4,40 -django/db/backends/postgresql_psycopg2/client.py,sha256=IRCmGthBTRhO2RVGdyuxWLJowAc5H1_-1azwzrvJ-Ag,42 -django/db/backends/postgresql_psycopg2/creation.py,sha256=K2mX3uKrYKPu6snParWOUpdPE7njMl7d5F_9rWTEMy4,44 -django/db/backends/postgresql_psycopg2/features.py,sha256=5wEMe_Zj-SGxQ5AF06SH7ghMuamD_y7ddvJ9LBqZxhA,44 -django/db/backends/postgresql_psycopg2/introspection.py,sha256=uhjKJBighkTzV0JeFYJsYedni4w5I_N9LpIwDaPmOsE,49 -django/db/backends/postgresql_psycopg2/operations.py,sha256=xkIOUX-rLI6YjTKtEHYEK89whe2J1T-FKNVRBW2Jbh4,46 -django/db/backends/postgresql_psycopg2/schema.py,sha256=R-3T1eOq2-yD66L2--ICntPF2ZsLZ-Ok4TV4FGxyG5c,42 -django/db/backends/postgresql_psycopg2/utils.py,sha256=eneNs5az6_Q07x0q991G7ZABYgE-YgMg9-Xk35LT7PM,41 -django/db/backends/sqlite3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/sqlite3/base.py,sha256=79X7iB3L9yeqh2ASIat0g5TZZGoI3aBELsS2Vph4Obc,18674 -django/db/backends/sqlite3/client.py,sha256=wiSj2r4sCG-n3SwFKJV2mVEw9GFXiyFbHgD_Ic_DjxA,311 -django/db/backends/sqlite3/creation.py,sha256=eQToSSfszeS-SyQzihO4FAcEFREKrNlJbQReTaFRUXk,4866 -django/db/backends/sqlite3/features.py,sha256=tBceqqJ_bGtQDLVHrWzFS3acvTNAVechQMIY9utgRL4,2347 -django/db/backends/sqlite3/introspection.py,sha256=YJYVQfFZOUDYKuxAAH-ZnGRZuh_yjaumboYvi8FxdQ0,13221 -django/db/backends/sqlite3/operations.py,sha256=7oRNkRsIHdZyBSFpHBfmSJO1S1GbzR9Z1QwGqzB-hPg,11862 -django/db/backends/sqlite3/schema.py,sha256=Qsw58FtoeInfasOFncAFD4T39zXkqSU8ISZO3iRiy5g,17548 -django/db/migrations/__init__.py,sha256=Oa4RvfEa6hITCqdcqwXYC66YknFKyluuy7vtNbSc-L4,97 -django/db/migrations/autodetector.py,sha256=laJi1HxlaEB4HsBbn4pdVytV-_zUClv7BgLClIm8bu0,59878 -django/db/migrations/exceptions.py,sha256=LCj-jTC1MhrKCyarNxhWWhQFIU2DGkUV4AtLwIEZ1MQ,1205 -django/db/migrations/executor.py,sha256=3goKbSuwv_VMZJd2bnYp9B9KU1Hn6Sy3wJpZ2L5CMHA,17479 -django/db/migrations/graph.py,sha256=7dVuynqL0AtIAug6wvaHT8YWB68pbnLrHFoPwFMjX-Q,15508 -django/db/migrations/loader.py,sha256=VZtwhgnKJ3jIv58o6aMGoNY_qS5PhIPY8k5EZdn6k9I,14786 -django/db/migrations/migration.py,sha256=XsGy8wvCWZBX-s3oGzovrwfYd_ffz0RYhWZ2D08AVug,8235 -django/db/migrations/optimizer.py,sha256=c2dt0t4AOVKLOCYYWZJm9C0IteVzTkD8D7r2Lh4A8iE,2803 -django/db/migrations/questioner.py,sha256=N18IZJrKLzaKFb9781l-Bnq-py0R-LEstzhGHnTLJoQ,9839 -django/db/migrations/recorder.py,sha256=YV9VB2IWX9n4Qf3EuZyryu2OHGIy2syacpaW4LNktIc,2891 -django/db/migrations/serializer.py,sha256=UWpSdTpc8JJm5GaPrDENs11sU8q0_9IenXUkFKMllrs,13457 -django/db/migrations/state.py,sha256=jFbM1wda7EwjrliAiz1HOFKDUbIpDGqSQSHynkQhJdU,25204 -django/db/migrations/topological_sort.py,sha256=M8VCyxJq-OOn-i-d6HgFYi0A77iOO7H6-iAjlqabywE,1141 -django/db/migrations/utils.py,sha256=ApIIVhNrnnZ79yzrbPeREFsk5kxLCuOd1rwh3dDaNLI,388 -django/db/migrations/writer.py,sha256=p_oLWrhPVvNrgpxXNTcfTLSHBGXOJSo5Ax4yHinXHCQ,11085 -django/db/migrations/operations/__init__.py,sha256=AsJk4Z1G6-hLJRWkyOLpP3lApxn4OmP4h1yqPrnUlfU,700 -django/db/migrations/operations/base.py,sha256=tYSvlbstzKKr2VSHnsn7PrKr8FL748C3oc253Auds4k,4830 -django/db/migrations/operations/fields.py,sha256=0PflYROnEv-J7Mayci7VOX9HtshT-pF_P_LSSexq0i4,13496 -django/db/migrations/operations/models.py,sha256=KLsnlPqlyqoHV-nUhFgiW4_OzCUwP39_0rJXhLgGuOM,32632 -django/db/migrations/operations/special.py,sha256=6vO2RRgaUPnxEjbkTX3QwAN-LaadZFHYpFHouAaMmig,7792 -django/db/migrations/operations/utils.py,sha256=E1pAxwoutzNe0TDZBTaGwjtu7p2Vmt14sFidLl_q3OI,527 -django/db/models/__init__.py,sha256=WL0qmZ8SIT8XaOaMcICSheau1rQ2zSOBC-G97P6Atdw,2928 -django/db/models/aggregates.py,sha256=8UxgzXRT57RuQVsxppfD10Z37-1o5bzIyWoeBHvA04w,6821 -django/db/models/base.py,sha256=cQJEIh3Uo4FZ9WsaaC82OEbiuAiHqZHqMqkI0SKsP1Y,71296 -django/db/models/constants.py,sha256=BstFLrG_rKBHL-IZ7iqXY9uSKLL6IOKOjheXBetCan0,117 -django/db/models/deletion.py,sha256=wG5lFqNLzIl60u9ARCmpZqPY-F3hrpcc4Q9GI9jMFgA,13584 -django/db/models/expressions.py,sha256=KunNfzMtw_ajODKF7ATlFLrIMwRqUqoJQnXd1NewdwU,47502 -django/db/models/indexes.py,sha256=PjGjFIUEeNGqWsYVou2txCNV8pmUeb-Noc8pwEMP7d4,4759 -django/db/models/lookups.py,sha256=0wg5loWajDmX4w0gjX92WbKfQsTrIsnq8NvnAqW4iz0,20976 -django/db/models/manager.py,sha256=SPZrZ3SUTGFQd7J23mcH2sj16HMTfs1M4oZQg2GlUoQ,6828 -django/db/models/options.py,sha256=ZSXf8SObwmC2iF2bEY-9skbh42leTBOZJgzZmcptSVo,34835 -django/db/models/query.py,sha256=crU2Zc5tbvZ37Hq_FamFVqTuEitJVixUeX0dfNtPZA8,74693 -django/db/models/query_utils.py,sha256=mSQtOVHWfqapebkzwTxsc1n97LMyjU7F9Nc2PpbOomk,12027 -django/db/models/signals.py,sha256=CJt6W3JnXMzRc2BQP0s_Qj6Q_PSC4hBTYnWyPatbjoU,2161 -django/db/models/utils.py,sha256=1mQ_zPVpHleO_BFdEU714a09NMvSmR65-T3P31hhMEk,852 -django/db/models/fields/__init__.py,sha256=Fj9F7DO5aqOlNPAZZHwgx_Kq9CSibXW3WzEJW-Hr5FE,85914 -django/db/models/fields/files.py,sha256=NDHAitUxI4O5k7RW74yIviqdJIZSezb60nknXlhgLPY,17906 -django/db/models/fields/mixins.py,sha256=5Ckq4d1cZODHfViLGcUyuJwvVPyV-Kfd2aZJzY4ckxc,816 -django/db/models/fields/proxy.py,sha256=fcJ2d1ZiY0sEouSq9SV7W1fm5eE3C_nMGky3Ma347dk,515 -django/db/models/fields/related.py,sha256=YSMq9uF8UETnnUfn-DHko46zY0Q870weHmYnzjfXX58,68335 -django/db/models/fields/related_descriptors.py,sha256=vONHdFpi4ARo3hruFYZYpLp6E8yuByGbQzpjWX-4S_M,49460 -django/db/models/fields/related_lookups.py,sha256=-T9rIa4aOgy3Uy8Q0QkTj8Npux0E8P4ZSVAf9jsMf6I,7023 -django/db/models/fields/reverse_related.py,sha256=j-YOys46oqP7T-8xfjz3_5FcOWR_hMBBp2xg8xfFmSs,10046 -django/db/models/functions/__init__.py,sha256=QliWCZZiyOGHEaBMAwujzgV-Zrf8O9bNCgqb8CxXkrE,1174 -django/db/models/functions/base.py,sha256=9vjosVnqGU82AvEtHlrvDoTgYMbJbvf2QBxuhWzRFMc,7155 -django/db/models/functions/datetime.py,sha256=7KlQP-hcAQCGQcka3695m5JZ08Oe8aEmSvowSQgIr_c,9967 -django/db/models/functions/window.py,sha256=quryNTlbAO5vImSRbIQNxyFJ7jAq_M_1vmuyZSCgyMs,2948 -django/db/models/sql/__init__.py,sha256=OcwrDD5reAtAe_L3iB6sm7uqzi1JOaoozN-p8veYZrc,252 -django/db/models/sql/compiler.py,sha256=6NWDvBQCKXXMtRosWS6YDbScxf9zHdKhh9B-u7eBvW4,66355 -django/db/models/sql/constants.py,sha256=p9_PSAOMk-5Gj2bR6mzrQZ5HGOFPxRCdxRk3Y8l1cXA,1039 -django/db/models/sql/datastructures.py,sha256=LPRTkrZ7Is1d4MMo29mWXV7s4W3u9f16UNAce3pk3a4,6721 -django/db/models/sql/query.py,sha256=tXt0czLKAc2iQvajqAGHeG7QANNLCF1mvgr0pcEFPz4,96644 -django/db/models/sql/subqueries.py,sha256=Hvu5xnsO4VLDDHKR6Q3h63VsiyASI3PCHQvU9i15G0w,7198 -django/db/models/sql/where.py,sha256=QQShEZva9Wa040FE_hfYpgUGPXBxm5JJBgTJcyWW4fo,7967 -django/dispatch/__init__.py,sha256=aZs1qtjOnhy8LWricxId1AQgpSUee-WCF-EzCj6o6qs,288 -django/dispatch/dispatcher.py,sha256=cZ9MkTFtcL366cFUAw8oOK9v9ofbhMWWyoL5aDG0P58,10848 -django/dispatch/license.txt,sha256=VABMS2BpZOvBY68W0EYHwW5Cj4p4oCb-y1P3DAn0qU8,1743 -django/forms/__init__.py,sha256=S6ckOMmvUX-vVST6AC-M8BzsfVQwuEUAdHWabMN-OGI,368 -django/forms/boundfield.py,sha256=aZmGbbiIJ_yA5iPw-sLCwWycQsCeKKaCFPVie7EzhVY,10749 -django/forms/fields.py,sha256=U76WvH2B-EeHm5edo1dRFtexkvUrNlzKbFCj_s4sjHU,44053 -django/forms/forms.py,sha256=WcLs14zO32u6QwNMOymzZXlh_hYSnrk5P1CgZIhixEM,20240 -django/forms/formsets.py,sha256=dkr74GXWf9L-dfcEe7JRmF_pqR2rIwOi7F7OxV5FmJY,18191 -django/forms/models.py,sha256=UVhQ7V6liv0TobbrjwTRs4yOZV-4zPQGzgzEJ-5xE3o,56012 -django/forms/renderers.py,sha256=mcfyrCSCSAYQTmII5g-82ZynuAv4S_P4FxLQ59ZYQck,1972 -django/forms/utils.py,sha256=3oMmxvzaruMZPMcEYCLOS8MUH4NK6SIyiAhW2kTVeME,5736 -django/forms/widgets.py,sha256=wfWrMZ3dJ_8WVqNaOoxG_OhNsYM2-3Gu078DCsytYKE,36684 -django/forms/jinja2/django/forms/widgets/attrs.html,sha256=_J2P-AOpHFhIwaqCNcrJFxEY4s-KPdy0Wcq0KlarIG0,172 -django/forms/jinja2/django/forms/widgets/checkbox.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/checkbox_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 -django/forms/jinja2/django/forms/widgets/checkbox_select.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/forms/jinja2/django/forms/widgets/clearable_file_input.html,sha256=4dmO2jGov35wB0hbbEQJG_8CWcD1czjWy6ViQ9TIJcc,467 -django/forms/jinja2/django/forms/widgets/date.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/datetime.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/email.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/file.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/hidden.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/input.html,sha256=_Cr3sQVyv3alcf77UOGvxAabSINCATkVX3qqlEP_ciE,174 -django/forms/jinja2/django/forms/widgets/input_option.html,sha256=ZjX4w2EeSaPnWjhBiVpi5L-IriTjQ5s7fsS6gTMy5U0,205 -django/forms/jinja2/django/forms/widgets/multiple_hidden.html,sha256=T54-n1ZeUlTd-svM3C4tLF42umKM0R5A7fdfsdthwkA,54 -django/forms/jinja2/django/forms/widgets/multiple_input.html,sha256=O9W9tLA_gdxNqN_No2Tesd8_2GhOTyKEkCOnp_rUBn4,431 -django/forms/jinja2/django/forms/widgets/multiwidget.html,sha256=pr-MxRyucRxn_HvBGZvbc3JbFyrAolbroxvA4zmPz2Y,86 -django/forms/jinja2/django/forms/widgets/number.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/password.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/radio.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/forms/jinja2/django/forms/widgets/radio_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 -django/forms/jinja2/django/forms/widgets/select.html,sha256=ESyDzbLTtM7-OG34EuSUnvxCtyP5IrQsZh0jGFrIdEA,365 -django/forms/jinja2/django/forms/widgets/select_date.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/jinja2/django/forms/widgets/select_option.html,sha256=tNa1D3G8iy2ZcWeKyI-mijjDjRmMaqSo-jnAR_VS3Qc,110 -django/forms/jinja2/django/forms/widgets/splitdatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/jinja2/django/forms/widgets/splithiddendatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/jinja2/django/forms/widgets/text.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/textarea.html,sha256=Av1Y-hpXUU2AjrhnUivgZFKNBLdwCSZSeuSmCqmCkDA,145 -django/forms/jinja2/django/forms/widgets/time.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/url.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/attrs.html,sha256=9ylIPv5EZg-rx2qPLgobRkw6Zq_WJSM8kt106PpSYa0,172 -django/forms/templates/django/forms/widgets/checkbox.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/checkbox_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 -django/forms/templates/django/forms/widgets/checkbox_select.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/forms/templates/django/forms/widgets/clearable_file_input.html,sha256=4dmO2jGov35wB0hbbEQJG_8CWcD1czjWy6ViQ9TIJcc,467 -django/forms/templates/django/forms/widgets/date.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/datetime.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/email.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/file.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/hidden.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/input.html,sha256=522egUaO0QWqTWwqBIEdTZI23I_fqKpWw64hMEaccm0,191 -django/forms/templates/django/forms/widgets/input_option.html,sha256=ZjX4w2EeSaPnWjhBiVpi5L-IriTjQ5s7fsS6gTMy5U0,205 -django/forms/templates/django/forms/widgets/multiple_hidden.html,sha256=T54-n1ZeUlTd-svM3C4tLF42umKM0R5A7fdfsdthwkA,54 -django/forms/templates/django/forms/widgets/multiple_input.html,sha256=HwEaZLEiZYdPJ6brC9QWRGaIKzcX5UA2Tj5Rsq_NvOk,462 -django/forms/templates/django/forms/widgets/multiwidget.html,sha256=slk4AgCdXnVmFvavhjVcsza0quTOP2LG50D8wna0dw0,117 -django/forms/templates/django/forms/widgets/number.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/password.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/radio.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/forms/templates/django/forms/widgets/radio_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 -django/forms/templates/django/forms/widgets/select.html,sha256=7U0RzjeESG87ENzQjPRUF71gvKvGjVVvXcpsW2-BTR4,384 -django/forms/templates/django/forms/widgets/select_date.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/templates/django/forms/widgets/select_option.html,sha256=N_psd0JYCqNhx2eh2oyvkF2KU2dv7M9mtMw_4BLYq8A,127 -django/forms/templates/django/forms/widgets/splitdatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/templates/django/forms/widgets/splithiddendatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/templates/django/forms/widgets/text.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/textarea.html,sha256=Av1Y-hpXUU2AjrhnUivgZFKNBLdwCSZSeuSmCqmCkDA,145 -django/forms/templates/django/forms/widgets/time.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/url.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/http/__init__.py,sha256=5JImoB1BZNuZBOt5qyDX7t51McYbkDLX45eKmNN_Fes,1010 -django/http/cookie.py,sha256=7pFpsa7ITOB2LNv6lbXbt3DKwdJlFgsAKKSWFUmwO2w,1128 -django/http/multipartparser.py,sha256=xbOHPiGnO4mx7MyANA22hfduNKI1uKL5TSGrcVWepyE,24832 -django/http/request.py,sha256=93--k0OOpiRW-d6SbAnzXxbCUhXpvo2S_4wNbrgEo8U,20584 -django/http/response.py,sha256=7eN5TuQS2MEZ1HVpeGJPgp7527fNh7Y5hKjdZla4eWw,17512 -django/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/middleware/cache.py,sha256=6_rVV_p0NXY75nfrU0JOt56O--x8CQ6ZcbGWnzjW3Eg,7570 -django/middleware/clickjacking.py,sha256=4rzsG5m_Z2VabN7J_5ZVeFj14X3FAbs0iU5LKoBb9js,1733 -django/middleware/common.py,sha256=-C_VQObEpT9G9Y7OFx8UVNAwJhWQfSDicV0-WhEe-KM,8584 -django/middleware/csrf.py,sha256=L5zmV7loWuWktjUEUcFdPpjg5gXAPHyaO-zJpCpCasw,13363 -django/middleware/gzip.py,sha256=oq6J0L_1NLZuvV1F1MxuFPzdUS71301py0GWHBAmk2k,2060 -django/middleware/http.py,sha256=UO8H-fZpzpwiGDSD0sPoRqCAb3klksH25LFqkV6Dq8I,1636 -django/middleware/locale.py,sha256=QcxeqrDmZdEar1yhkGusYUIG0DdTlnkkf_E9L6SWy-o,3058 -django/middleware/security.py,sha256=he5CoJN5d5v61X2qDJr2eYGOetAK6X6l3O_1c0Zd69k,2016 -django/template/__init__.py,sha256=t5onT26DOSny4Qi7iz_a82M5WJydvPpkb6hFjE010CE,1871 -django/template/base.py,sha256=-abjmQn2vTQxlgnuMJ5JgJwvWBnTJFFtuv1QbwQCXgc,38215 -django/template/context.py,sha256=LkyuI1J-5iZk04ByzgQn7uxksqkTwWf7cHK--ucWIPU,9076 -django/template/context_processors.py,sha256=drfyVYugSe1lg9VIbsC3oRLUG64Gw94Oq77FLfk2ZNI,2407 -django/template/defaultfilters.py,sha256=DCLCHdfQkseWVBRZxvf1Iyhkbwc419gNzKW4djYmw3o,25806 -django/template/defaulttags.py,sha256=b88tlGSi5OWIPjwtoWmYmzsG8QXCagiea8fB8MWxNlU,49943 -django/template/engine.py,sha256=dWgo-JaCkgA0SCI_JmG5ZihzL0lbDZf5rTJyU1un49o,6886 -django/template/exceptions.py,sha256=awd7B80xhFB574Lt2IdIyHCpD6KGGyuKGkIoalr9deo,1340 -django/template/library.py,sha256=g2gi5FfSug-Wak2P4Weg7qGcwHrwIy47vse35YYkLbk,12812 -django/template/loader.py,sha256=-t5cTnWJrxtS2vyg9cguz4rXxlTBni4XoJUuqJNglPI,2054 -django/template/loader_tags.py,sha256=ZDcJWpCogd9NecVimLthqnSfdRV3yQInZ7_fnagWKQQ,13329 -django/template/response.py,sha256=dBq9wQvYEvCtHqpeK6Diw-yYkcQpbVDIeL22nckII3Q,5425 -django/template/smartif.py,sha256=QBvsTtD4YiyGoU4hXrW8vqR0CBAFOZGuDoRP3aGEgOs,6408 -django/template/utils.py,sha256=xQ-lHLzXrSFx4xc9E2Tja6MZHKGkKRRATxKwvCe3MPU,3665 -django/template/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/template/backends/base.py,sha256=qu6TlykN2JAUeQqIbiGujYG1dEsXZmAMpnzmLP0gSPg,2757 -django/template/backends/django.py,sha256=_w350tmHAMSLOw-b2o9rR0Wn6YX3QMkpHkkpvbo_EwI,4186 -django/template/backends/dummy.py,sha256=Nl313SxX1rxE1F-5AHCljgejrYpYCx-QXJpNUkQWXR4,1767 -django/template/backends/jinja2.py,sha256=bx8DcA2PqqzDmcgegY11pm5EhmD_gWTTLauGo91imL4,3504 -django/template/backends/utils.py,sha256=Wler787-GWAoQb6m7qaWdCfQoSBkHFLFECAdFe8xO_E,416 -django/template/loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/template/loaders/app_directories.py,sha256=w3a84EAXWX12w7F1CyxIQ_lFiTwxFS7xf3rCEcnUqyc,313 -django/template/loaders/base.py,sha256=kvjmN-UHxdd6Pwgkexw7IHL0YeJQgXXbuz_tdj5ciKc,1558 -django/template/loaders/cached.py,sha256=n1t8aaDO_gq4aQUI2bFUSDDIE-SqrVzrXsvw661NTys,3669 -django/template/loaders/filesystem.py,sha256=OWTnIwWbVj-Td5VrOkKw1G_6pIuz1Vnh5CedZN5glyU,1507 -django/template/loaders/locmem.py,sha256=8cBYI8wPOOnIx_3v7fC5jezA_6pJLqgqObeLwHXQJKo,673 -django/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/templatetags/cache.py,sha256=otY3c4Ti9YLxFfOuIX5TZ7w12aGDPkyGfQNsaPVZ_M0,3401 -django/templatetags/i18n.py,sha256=Nzk-jyMfH9Z7jkNTQV_yRNVvftJDKYpIvJiRTtFLCuw,19093 -django/templatetags/l10n.py,sha256=__KS2RJf9mlS9EMzYooKoP6XquP4FDwyOr_xaD3TAAM,1689 -django/templatetags/static.py,sha256=om3cu4NVaH4MVUq-XPLxPVNlLUCxTbbp0qAVVSaClj4,4502 -django/templatetags/tz.py,sha256=HFzJsvh-x9yjoju4kiIpKAI0U_4crtoftqiT8llM_u8,5400 -django/test/__init__.py,sha256=5FrmvgBrxzZo5UVLW9HZ1iHBMMhcnXcNL5Y2xnaqVPA,682 -django/test/client.py,sha256=PY1YqhOaqguGApZHRmvRi9XePB6oP4CgjM7RMQk6OvI,26876 -django/test/html.py,sha256=su6cUczjfqucIrEhyp2Y_6JGH8uesJrpcvcbH1GTvvI,7570 -django/test/runner.py,sha256=nMc4VuyKDusaL8CyV0l3N_Pu0uGhwl-OxmXfHepDNN0,25346 -django/test/selenium.py,sha256=DFTUveBYZfODKHU_XN-UJpvm4VXeg-_uxTEH4SsC3fY,3271 -django/test/signals.py,sha256=BQlO0pXZTOdcbhgW1gJLc16WW2Q75wx_2wheG5kCh9U,6729 -django/test/testcases.py,sha256=pezhRHclmZiPt4TH5O0-hVSYNRNpibv7oY1ON795wOg,55089 -django/test/utils.py,sha256=8Wepq7h56ONrPu5t2LUWnu6OD5B6n0MfXhh7ordVO1U,28391 -django/urls/__init__.py,sha256=FdHfNv5NwWEIt1EqEpRY7xJ-i4tD-SCLj0tq3qT6X1E,959 -django/urls/base.py,sha256=ol5Wujd0NvWuBj8fQ66t6wx2nzWtCpVcg76uOvEqzOY,5529 -django/urls/conf.py,sha256=8Xug9NhJXDEysRXWrY2iHf0snfJMUmQkYZAomPltWMY,2946 -django/urls/converters.py,sha256=uukXCTD66n8NX_fiArq_s4p4to0oPqzuChNi6lpSAR8,1300 -django/urls/exceptions.py,sha256=alLNjkORtAxneC00g4qnRpG5wouOHvJvGbymdpKtG_I,115 -django/urls/resolvers.py,sha256=pPfTI9AAzEl_qerP-ndQwWzef1kyUsZvK9x8HTENpYo,25068 -django/urls/utils.py,sha256=VHDcmggNRHSbPJAql5KJhe7wX4pSjrKb64Fu-p14D9Q,2152 -django/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/utils/_os.py,sha256=CYxm1Ju2X5bl2fKKsYyCgemWdv6LPhEiDkaV3t_zf30,2435 -django/utils/archive.py,sha256=lWCX77dPtL6whlRjc2XaMqX8YP_9WPBMbw13n5Iu9Sg,7462 -django/utils/autoreload.py,sha256=QAj1ss_lF8hyTOMAACPso-Z6lNJM31044yLZFIIO-Hc,10325 -django/utils/baseconv.py,sha256=xYReIqcF2FFD85BqDrl48xo4UijII9D6YyC-FHsUPbw,2989 -django/utils/cache.py,sha256=yFegtgHpRPdb0KrTVmnDA66d-VEEmTRl8DQM-8hHzUc,16413 -django/utils/crypto.py,sha256=kmctPFVOMrZv-ZZJ_AnFsNSz3HBem3_J0vPqXPDo3l4,3092 -django/utils/datastructures.py,sha256=LECZu-BbSk2ZjunU1MGhC40lnA-12YuGEZ0uZp0zeOA,8559 -django/utils/dateformat.py,sha256=YyUXezYqG_R-hMqSh4Q50qyTfvReD_4TTHVD2c1zH4U,11508 -django/utils/dateparse.py,sha256=bg5SFVRFkUG4E06ZmU9HMvlVVz8OWTLW0OM9MAQXdF4,4731 -django/utils/dates.py,sha256=LczKNLLK2B6tg9FlrZUXgH9E9w14IqpuJHFUHLq2nCg,2295 -django/utils/datetime_safe.py,sha256=OnmCe-x1GMGDSiamEWqXEqAeTYyYrCAXUjKmgla1SmA,2837 -django/utils/deconstruct.py,sha256=hcO_7qassSI5dTfQ5CPttA8s3f9yaF8UnqKKma3bI6M,1975 -django/utils/decorators.py,sha256=6AftjSerJAtOAMjFGRbo3yTWvcaeRs0Li6jBslwPCAU,6796 -django/utils/deprecation.py,sha256=GvTCItgsfYJFhCvQ0pcmuyDDkaT5SCghhddns3YCzA0,3352 -django/utils/duration.py,sha256=e9u-nFSTt94c2xY91ZPILFei93yJbudefWlyCfYDd5s,1112 -django/utils/encoding.py,sha256=5CQjnr34WWGN2aoevn3CoQy8OZmaIBtWITi4_eybjU0,8994 -django/utils/feedgenerator.py,sha256=GLhiXNYDBZGJUa0FQU6nL-q1wvLaro01cdljGJn7AGI,16280 -django/utils/formats.py,sha256=cbcND7BRRcA3FW9OXKR0ZUVcPip4bHzDMDXjAq1broo,8945 -django/utils/functional.py,sha256=agR0TMLGS89cRAH0q1_5C7oq_jWG8UGWCR8AQzK_c1U,13347 -django/utils/html.py,sha256=yDvseYz1eYZo7COE01fhKugqho2tK1DUXKTVuL_ucIQ,13219 -django/utils/html_parser.py,sha256=r4_58apC-2nTlsb8U_IhAV6CkXyyomECwNUceXd1FjE,522 -django/utils/http.py,sha256=4cUoYHT_j2qV4WRbhOAmbl0OTNxBswsd8pdIYdWrI_k,15138 -django/utils/inspect.py,sha256=QWQvmtteqKw5m-EMj4ZK2ZwSx-DslUVk91z0Nkilylw,1688 -django/utils/ipv6.py,sha256=WBkmZXdtbIHgcaWDKm4ElRvzyu_wKLCW2aA18g1RCJo,1350 -django/utils/itercompat.py,sha256=lacIDjczhxbwG4ON_KfG1H6VNPOGOpbRhnVhbedo2CY,184 -django/utils/jslex.py,sha256=jOes0kfZoIIPxPMNWkXMJ6D3x3f95B5cZWKXo38Rhcc,7707 -django/utils/log.py,sha256=NlJM6lVKcNIPORfcmIEbPWihftyrs0UVn9SPFsBXv0A,6379 -django/utils/lorem_ipsum.py,sha256=P_BSLsITDP2ZW9EJPy6ciFneib0iz9ezBz2LD7CViRE,4775 -django/utils/lru_cache.py,sha256=4g-svLUmsvn2wlS-rPEJbFr_ODqoar5qxwIjGxrLlxA,256 -django/utils/module_loading.py,sha256=zmTlFLAdv20BhBHoPCDBBT2N7PAUrkYctAUDHF1kUPs,3649 -django/utils/numberformat.py,sha256=fuSLvYVK4lo_Wd71yWP5fxBKeOpMQ3fipIDkvw5TlHU,2476 -django/utils/regex_helper.py,sha256=ZNQL2n_QLFhDSSbOJUrV6LazOZ-L1BU8wROjlOP2MCY,12621 -django/utils/safestring.py,sha256=zI0FSoQ-pRtGzOP8vpxn9BePHXyTxMNh9hfrRNKV6EM,2473 -django/utils/six.py,sha256=ecocr7GKytCmp9FbyOLDUR4_0vngcOjMJItxTGnTRV8,30502 -django/utils/synch.py,sha256=xPLelilO5ExgCHStSIszcYCAADOsghfDERY4ehkMGtM,2550 -django/utils/termcolors.py,sha256=JrysYBjC72oq0WBL6EJ44A8ZEij_S7QsivoRQugxPEk,7362 -django/utils/text.py,sha256=mWw4XoUQAjE5i0bFd5OVzW9G2nXFYWVK4ui0RQBOtVU,14092 -django/utils/timesince.py,sha256=WVWenJ0639Kazt7-EhytpC5gnE99cAhP0azQasBcIaQ,2788 -django/utils/timezone.py,sha256=52BTXPDyAIDIjsbpM6AJ76VqMok7DtXN04aYHZjnR00,8234 -django/utils/tree.py,sha256=ZxMnEXezuaZPH1zrz5YggQZiSUuU9pxAfloM18JAc1g,4851 -django/utils/version.py,sha256=_XvHClAZhpqbwXr4wO5iUqT_BeuK2F8q6l21hL0Iy5U,2818 -django/utils/xmlutils.py,sha256=B3FOKaFNynp0fC1wliItPSKzNABSyc-0x897F7kEVj4,1184 -django/utils/translation/__init__.py,sha256=7-Prpm1Z_r4U9k5bC0QXtq1SZBx9H9txsz90k7spzuU,7499 -django/utils/translation/template.py,sha256=62Ipn0LYDaZwAPM9OQWgH8aKkuZ-xaIkj41bTio-1q0,9979 -django/utils/translation/trans_null.py,sha256=20q6ayK6V2aylDQzcFmtz-X3faye3SKedb9nDMl4opQ,1258 -django/utils/translation/trans_real.py,sha256=zgGTEZVPucPAnKOSrYKvs4dmPVs7R8ka68nVDdSkASg,18540 -django/views/__init__.py,sha256=DGdAuGC0t1bMju9i-B9p_gqPgRIFHtLXTdIxNKWFGsw,63 -django/views/csrf.py,sha256=TOnXES5w0BmUvyq7whGB6Z6Ds4-RotIVammFGN88UKY,6252 -django/views/debug.py,sha256=sDUdXdsVRLcJqccq7HqY6LDi0BaaUYNY3mHqpKLB0f0,20367 -django/views/defaults.py,sha256=Q7qxucjUHPoQmjjT_p93erxGXNaNK2THO4OZrhTMw-k,4260 -django/views/i18n.py,sha256=I73xYV604j0tek35-o1r0-LO__5aEXiT4v8K1gDDAUE,11735 -django/views/static.py,sha256=FS-Z_Vvd1By9dOQdg2NeqgSI_7NU4KRmAuqubAfndxo,4623 -django/views/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/views/decorators/cache.py,sha256=uSLzb61mCuFKIm8tR3Gs_NP1H7U-BOEU_QOc3IhBC_4,1705 -django/views/decorators/clickjacking.py,sha256=EW-DRe2dR8yg4Rf8HRHl8c4-C8mL3HKGa6PxZRKmFtU,1565 -django/views/decorators/csrf.py,sha256=xPWVVNw_DBidvX_ZVYvN7CePt1HpxpUxsb6wMr0Oe4Y,2073 -django/views/decorators/debug.py,sha256=Q_ul_n8M89WoPL87mDYomZ74mv_djuudZZ-b-uB1I6s,2569 -django/views/decorators/gzip.py,sha256=PtpSGd8BePa1utGqvKMFzpLtZJxpV2_Jej8llw5bCJY,253 -django/views/decorators/http.py,sha256=iMl98tvpUXs4mSg-d0S4soAV-E_ynr3MlRpwyff6CRY,4715 -django/views/decorators/vary.py,sha256=6wEXI5yBFZYDVednNPc0bYbXGG-QzkIUQ-50ErDrA_k,1084 -django/views/generic/__init__.py,sha256=WTnzEXnKyJqzHlLu_VsXInYg-GokDNBCUYNV_U6U-ok,822 -django/views/generic/base.py,sha256=QnQhKsAP8E83lwZo5Py8iOgjIoXfi_a6nrmmQoGfK08,7429 -django/views/generic/dates.py,sha256=V9AXAGCcMsiO5YxSFSQTCx19bACQaY_wBM5GH-5dbaI,25251 -django/views/generic/detail.py,sha256=X8fJS4Dg7qMSkstsDnGBpYw6Lmyr18tNYhRsoSBZNqk,6521 -django/views/generic/edit.py,sha256=bJAQ5HAK_upREBxmgUDWAbUMd56gw3Qk1Emiglmx7c8,8342 -django/views/generic/list.py,sha256=Z1ti5yZADM1rT-s_QqUyoRGDBeEX6rkoZxoE_CE0iMY,7388 -django/views/templates/default_urlconf.html,sha256=uTxHyCtjPV09MlXNBOjSq5meAfkhmJ72hCvlDOEtMwU,16595 -django/views/templates/technical_404.html,sha256=nZT2gkPAYc7G8VNJXst-dEyim0t83xjX-TtCGtxJZwc,2453 -django/views/templates/technical_500.html,sha256=ez3ErTVw3TUUhQOTipX6rHFpN9eiysKVRTz-maEwS2g,17218 -django/views/templates/technical_500.txt,sha256=7VWOipQg2poVyusbM8dQHRyRR-iUB_dOehAoF0HBHNM,3367 -../../../bin/django-admin,sha256=tCPpfc-HOy0szljTTFsVa3UktEG3uAQM0Z7Ef5RASAw,308 -Django-2.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -django/templatetags/__pycache__/tz.cpython-36.pyc,, -django/templatetags/__pycache__/l10n.cpython-36.pyc,, -django/templatetags/__pycache__/i18n.cpython-36.pyc,, -django/templatetags/__pycache__/cache.cpython-36.pyc,, -django/templatetags/__pycache__/static.cpython-36.pyc,, -django/templatetags/__pycache__/__init__.cpython-36.pyc,, -django/middleware/__pycache__/csrf.cpython-36.pyc,, -django/middleware/__pycache__/clickjacking.cpython-36.pyc,, -django/middleware/__pycache__/common.cpython-36.pyc,, -django/middleware/__pycache__/gzip.cpython-36.pyc,, -django/middleware/__pycache__/locale.cpython-36.pyc,, -django/middleware/__pycache__/security.cpython-36.pyc,, -django/middleware/__pycache__/cache.cpython-36.pyc,, -django/middleware/__pycache__/http.cpython-36.pyc,, -django/middleware/__pycache__/__init__.cpython-36.pyc,, -django/forms/__pycache__/renderers.cpython-36.pyc,, -django/forms/__pycache__/boundfield.cpython-36.pyc,, -django/forms/__pycache__/widgets.cpython-36.pyc,, -django/forms/__pycache__/forms.cpython-36.pyc,, -django/forms/__pycache__/models.cpython-36.pyc,, -django/forms/__pycache__/formsets.cpython-36.pyc,, -django/forms/__pycache__/utils.cpython-36.pyc,, -django/forms/__pycache__/fields.cpython-36.pyc,, -django/forms/__pycache__/__init__.cpython-36.pyc,, -django/core/cache/backends/__pycache__/locmem.cpython-36.pyc,, -django/core/cache/backends/__pycache__/db.cpython-36.pyc,, -django/core/cache/backends/__pycache__/base.cpython-36.pyc,, -django/core/cache/backends/__pycache__/dummy.cpython-36.pyc,, -django/core/cache/backends/__pycache__/__init__.cpython-36.pyc,, -django/core/cache/backends/__pycache__/filebased.cpython-36.pyc,, -django/core/cache/backends/__pycache__/memcached.cpython-36.pyc,, -django/core/cache/__pycache__/utils.cpython-36.pyc,, -django/core/cache/__pycache__/__init__.cpython-36.pyc,, -django/core/mail/backends/__pycache__/smtp.cpython-36.pyc,, -django/core/mail/backends/__pycache__/console.cpython-36.pyc,, -django/core/mail/backends/__pycache__/locmem.cpython-36.pyc,, -django/core/mail/backends/__pycache__/base.cpython-36.pyc,, -django/core/mail/backends/__pycache__/dummy.cpython-36.pyc,, -django/core/mail/backends/__pycache__/__init__.cpython-36.pyc,, -django/core/mail/backends/__pycache__/filebased.cpython-36.pyc,, -django/core/mail/__pycache__/message.cpython-36.pyc,, -django/core/mail/__pycache__/utils.cpython-36.pyc,, -django/core/mail/__pycache__/__init__.cpython-36.pyc,, -django/core/checks/compatibility/__pycache__/__init__.cpython-36.pyc,, -django/core/checks/security/__pycache__/sessions.cpython-36.pyc,, -django/core/checks/security/__pycache__/csrf.cpython-36.pyc,, -django/core/checks/security/__pycache__/base.cpython-36.pyc,, -django/core/checks/security/__pycache__/__init__.cpython-36.pyc,, -django/core/checks/__pycache__/model_checks.cpython-36.pyc,, -django/core/checks/__pycache__/database.cpython-36.pyc,, -django/core/checks/__pycache__/messages.cpython-36.pyc,, -django/core/checks/__pycache__/templates.cpython-36.pyc,, -django/core/checks/__pycache__/caches.cpython-36.pyc,, -django/core/checks/__pycache__/registry.cpython-36.pyc,, -django/core/checks/__pycache__/__init__.cpython-36.pyc,, -django/core/checks/__pycache__/urls.cpython-36.pyc,, -django/core/management/__pycache__/sql.cpython-36.pyc,, -django/core/management/__pycache__/templates.cpython-36.pyc,, -django/core/management/__pycache__/base.cpython-36.pyc,, -django/core/management/__pycache__/color.cpython-36.pyc,, -django/core/management/__pycache__/utils.cpython-36.pyc,, -django/core/management/__pycache__/__init__.cpython-36.pyc,, -django/core/management/commands/__pycache__/sqlmigrate.cpython-36.pyc,, -django/core/management/commands/__pycache__/startproject.cpython-36.pyc,, -django/core/management/commands/__pycache__/dumpdata.cpython-36.pyc,, -django/core/management/commands/__pycache__/dbshell.cpython-36.pyc,, -django/core/management/commands/__pycache__/showmigrations.cpython-36.pyc,, -django/core/management/commands/__pycache__/sqlflush.cpython-36.pyc,, -django/core/management/commands/__pycache__/compilemessages.cpython-36.pyc,, -django/core/management/commands/__pycache__/startapp.cpython-36.pyc,, -django/core/management/commands/__pycache__/loaddata.cpython-36.pyc,, -django/core/management/commands/__pycache__/squashmigrations.cpython-36.pyc,, -django/core/management/commands/__pycache__/makemessages.cpython-36.pyc,, -django/core/management/commands/__pycache__/sqlsequencereset.cpython-36.pyc,, -django/core/management/commands/__pycache__/check.cpython-36.pyc,, -django/core/management/commands/__pycache__/makemigrations.cpython-36.pyc,, -django/core/management/commands/__pycache__/inspectdb.cpython-36.pyc,, -django/core/management/commands/__pycache__/migrate.cpython-36.pyc,, -django/core/management/commands/__pycache__/testserver.cpython-36.pyc,, -django/core/management/commands/__pycache__/sendtestemail.cpython-36.pyc,, -django/core/management/commands/__pycache__/diffsettings.cpython-36.pyc,, -django/core/management/commands/__pycache__/flush.cpython-36.pyc,, -django/core/management/commands/__pycache__/runserver.cpython-36.pyc,, -django/core/management/commands/__pycache__/shell.cpython-36.pyc,, -django/core/management/commands/__pycache__/__init__.cpython-36.pyc,, -django/core/management/commands/__pycache__/test.cpython-36.pyc,, -django/core/management/commands/__pycache__/createcachetable.cpython-36.pyc,, -django/core/__pycache__/exceptions.cpython-36.pyc,, -django/core/__pycache__/signals.cpython-36.pyc,, -django/core/__pycache__/paginator.cpython-36.pyc,, -django/core/__pycache__/validators.cpython-36.pyc,, -django/core/__pycache__/signing.cpython-36.pyc,, -django/core/__pycache__/wsgi.cpython-36.pyc,, -django/core/__pycache__/__init__.cpython-36.pyc,, -django/core/serializers/__pycache__/xml_serializer.cpython-36.pyc,, -django/core/serializers/__pycache__/pyyaml.cpython-36.pyc,, -django/core/serializers/__pycache__/python.cpython-36.pyc,, -django/core/serializers/__pycache__/base.cpython-36.pyc,, -django/core/serializers/__pycache__/__init__.cpython-36.pyc,, -django/core/serializers/__pycache__/json.cpython-36.pyc,, -django/core/files/__pycache__/uploadedfile.cpython-36.pyc,, -django/core/files/__pycache__/temp.cpython-36.pyc,, -django/core/files/__pycache__/storage.cpython-36.pyc,, -django/core/files/__pycache__/uploadhandler.cpython-36.pyc,, -django/core/files/__pycache__/images.cpython-36.pyc,, -django/core/files/__pycache__/move.cpython-36.pyc,, -django/core/files/__pycache__/base.cpython-36.pyc,, -django/core/files/__pycache__/utils.cpython-36.pyc,, -django/core/files/__pycache__/__init__.cpython-36.pyc,, -django/core/files/__pycache__/locks.cpython-36.pyc,, -django/core/handlers/__pycache__/base.cpython-36.pyc,, -django/core/handlers/__pycache__/wsgi.cpython-36.pyc,, -django/core/handlers/__pycache__/exception.cpython-36.pyc,, -django/core/handlers/__pycache__/__init__.cpython-36.pyc,, -django/core/servers/__pycache__/basehttp.cpython-36.pyc,, -django/core/servers/__pycache__/__init__.cpython-36.pyc,, -django/test/__pycache__/client.cpython-36.pyc,, -django/test/__pycache__/testcases.cpython-36.pyc,, -django/test/__pycache__/signals.cpython-36.pyc,, -django/test/__pycache__/utils.cpython-36.pyc,, -django/test/__pycache__/selenium.cpython-36.pyc,, -django/test/__pycache__/__init__.cpython-36.pyc,, -django/test/__pycache__/html.cpython-36.pyc,, -django/test/__pycache__/runner.cpython-36.pyc,, -django/bin/__pycache__/django-admin.cpython-36.pyc,, -django/dispatch/__pycache__/dispatcher.cpython-36.pyc,, -django/dispatch/__pycache__/__init__.cpython-36.pyc,, -django/template/backends/__pycache__/django.cpython-36.pyc,, -django/template/backends/__pycache__/jinja2.cpython-36.pyc,, -django/template/backends/__pycache__/base.cpython-36.pyc,, -django/template/backends/__pycache__/utils.cpython-36.pyc,, -django/template/backends/__pycache__/dummy.cpython-36.pyc,, -django/template/backends/__pycache__/__init__.cpython-36.pyc,, -django/template/__pycache__/engine.cpython-36.pyc,, -django/template/__pycache__/defaulttags.cpython-36.pyc,, -django/template/__pycache__/response.cpython-36.pyc,, -django/template/__pycache__/context_processors.cpython-36.pyc,, -django/template/__pycache__/exceptions.cpython-36.pyc,, -django/template/__pycache__/smartif.cpython-36.pyc,, -django/template/__pycache__/defaultfilters.cpython-36.pyc,, -django/template/__pycache__/loader.cpython-36.pyc,, -django/template/__pycache__/base.cpython-36.pyc,, -django/template/__pycache__/loader_tags.cpython-36.pyc,, -django/template/__pycache__/utils.cpython-36.pyc,, -django/template/__pycache__/library.cpython-36.pyc,, -django/template/__pycache__/context.cpython-36.pyc,, -django/template/__pycache__/__init__.cpython-36.pyc,, -django/template/loaders/__pycache__/cached.cpython-36.pyc,, -django/template/loaders/__pycache__/app_directories.cpython-36.pyc,, -django/template/loaders/__pycache__/locmem.cpython-36.pyc,, -django/template/loaders/__pycache__/filesystem.cpython-36.pyc,, -django/template/loaders/__pycache__/base.cpython-36.pyc,, -django/template/loaders/__pycache__/__init__.cpython-36.pyc,, -django/utils/translation/__pycache__/trans_real.cpython-36.pyc,, -django/utils/translation/__pycache__/template.cpython-36.pyc,, -django/utils/translation/__pycache__/__init__.cpython-36.pyc,, -django/utils/translation/__pycache__/trans_null.cpython-36.pyc,, -django/utils/__pycache__/tree.cpython-36.pyc,, -django/utils/__pycache__/inspect.cpython-36.pyc,, -django/utils/__pycache__/feedgenerator.cpython-36.pyc,, -django/utils/__pycache__/synch.cpython-36.pyc,, -django/utils/__pycache__/duration.cpython-36.pyc,, -django/utils/__pycache__/dateformat.cpython-36.pyc,, -django/utils/__pycache__/timesince.cpython-36.pyc,, -django/utils/__pycache__/datastructures.cpython-36.pyc,, -django/utils/__pycache__/version.cpython-36.pyc,, -django/utils/__pycache__/deprecation.cpython-36.pyc,, -django/utils/__pycache__/xmlutils.cpython-36.pyc,, -django/utils/__pycache__/functional.cpython-36.pyc,, -django/utils/__pycache__/ipv6.cpython-36.pyc,, -django/utils/__pycache__/itercompat.cpython-36.pyc,, -django/utils/__pycache__/_os.cpython-36.pyc,, -django/utils/__pycache__/safestring.cpython-36.pyc,, -django/utils/__pycache__/archive.cpython-36.pyc,, -django/utils/__pycache__/text.cpython-36.pyc,, -django/utils/__pycache__/datetime_safe.cpython-36.pyc,, -django/utils/__pycache__/six.cpython-36.pyc,, -django/utils/__pycache__/formats.cpython-36.pyc,, -django/utils/__pycache__/encoding.cpython-36.pyc,, -django/utils/__pycache__/baseconv.cpython-36.pyc,, -django/utils/__pycache__/lru_cache.cpython-36.pyc,, -django/utils/__pycache__/deconstruct.cpython-36.pyc,, -django/utils/__pycache__/crypto.cpython-36.pyc,, -django/utils/__pycache__/log.cpython-36.pyc,, -django/utils/__pycache__/numberformat.cpython-36.pyc,, -django/utils/__pycache__/termcolors.cpython-36.pyc,, -django/utils/__pycache__/autoreload.cpython-36.pyc,, -django/utils/__pycache__/cache.cpython-36.pyc,, -django/utils/__pycache__/lorem_ipsum.cpython-36.pyc,, -django/utils/__pycache__/dates.cpython-36.pyc,, -django/utils/__pycache__/http.cpython-36.pyc,, -django/utils/__pycache__/jslex.cpython-36.pyc,, -django/utils/__pycache__/html_parser.cpython-36.pyc,, -django/utils/__pycache__/__init__.cpython-36.pyc,, -django/utils/__pycache__/decorators.cpython-36.pyc,, -django/utils/__pycache__/dateparse.cpython-36.pyc,, -django/utils/__pycache__/html.cpython-36.pyc,, -django/utils/__pycache__/regex_helper.cpython-36.pyc,, -django/utils/__pycache__/module_loading.cpython-36.pyc,, -django/utils/__pycache__/timezone.cpython-36.pyc,, -django/__pycache__/shortcuts.cpython-36.pyc,, -django/__pycache__/__main__.cpython-36.pyc,, -django/__pycache__/__init__.cpython-36.pyc,, -django/contrib/syndication/__pycache__/views.cpython-36.pyc,, -django/contrib/syndication/__pycache__/apps.cpython-36.pyc,, -django/contrib/syndication/__pycache__/__init__.cpython-36.pyc,, -django/contrib/messages/__pycache__/constants.cpython-36.pyc,, -django/contrib/messages/__pycache__/context_processors.cpython-36.pyc,, -django/contrib/messages/__pycache__/views.cpython-36.pyc,, -django/contrib/messages/__pycache__/middleware.cpython-36.pyc,, -django/contrib/messages/__pycache__/apps.cpython-36.pyc,, -django/contrib/messages/__pycache__/utils.cpython-36.pyc,, -django/contrib/messages/__pycache__/__init__.cpython-36.pyc,, -django/contrib/messages/__pycache__/api.cpython-36.pyc,, -django/contrib/messages/storage/__pycache__/base.cpython-36.pyc,, -django/contrib/messages/storage/__pycache__/cookie.cpython-36.pyc,, -django/contrib/messages/storage/__pycache__/fallback.cpython-36.pyc,, -django/contrib/messages/storage/__pycache__/session.cpython-36.pyc,, -django/contrib/messages/storage/__pycache__/__init__.cpython-36.pyc,, -django/contrib/auth/migrations/__pycache__/0001_initial.cpython-36.pyc,, -django/contrib/auth/migrations/__pycache__/0008_alter_user_username_max_length.cpython-36.pyc,, -django/contrib/auth/migrations/__pycache__/0006_require_contenttypes_0002.cpython-36.pyc,, -django/contrib/auth/migrations/__pycache__/0003_alter_user_email_max_length.cpython-36.pyc,, -django/contrib/auth/migrations/__pycache__/0002_alter_permission_name_max_length.cpython-36.pyc,, -django/contrib/auth/migrations/__pycache__/0007_alter_validators_add_error_messages.cpython-36.pyc,, -django/contrib/auth/migrations/__pycache__/__init__.cpython-36.pyc,, -django/contrib/auth/migrations/__pycache__/0004_alter_user_username_opts.cpython-36.pyc,, -django/contrib/auth/migrations/__pycache__/0005_alter_user_last_login_null.cpython-36.pyc,, -django/contrib/auth/migrations/__pycache__/0009_alter_user_last_name_max_length.cpython-36.pyc,, -django/contrib/auth/management/__pycache__/__init__.cpython-36.pyc,, -django/contrib/auth/management/commands/__pycache__/createsuperuser.cpython-36.pyc,, -django/contrib/auth/management/commands/__pycache__/changepassword.cpython-36.pyc,, -django/contrib/auth/management/commands/__pycache__/__init__.cpython-36.pyc,, -django/contrib/auth/__pycache__/context_processors.cpython-36.pyc,, -django/contrib/auth/__pycache__/checks.cpython-36.pyc,, -django/contrib/auth/__pycache__/admin.cpython-36.pyc,, -django/contrib/auth/__pycache__/password_validation.cpython-36.pyc,, -django/contrib/auth/__pycache__/forms.cpython-36.pyc,, -django/contrib/auth/__pycache__/signals.cpython-36.pyc,, -django/contrib/auth/__pycache__/models.cpython-36.pyc,, -django/contrib/auth/__pycache__/mixins.cpython-36.pyc,, -django/contrib/auth/__pycache__/views.cpython-36.pyc,, -django/contrib/auth/__pycache__/tokens.cpython-36.pyc,, -django/contrib/auth/__pycache__/middleware.cpython-36.pyc,, -django/contrib/auth/__pycache__/validators.cpython-36.pyc,, -django/contrib/auth/__pycache__/apps.cpython-36.pyc,, -django/contrib/auth/__pycache__/base_user.cpython-36.pyc,, -django/contrib/auth/__pycache__/hashers.cpython-36.pyc,, -django/contrib/auth/__pycache__/__init__.cpython-36.pyc,, -django/contrib/auth/__pycache__/decorators.cpython-36.pyc,, -django/contrib/auth/__pycache__/urls.cpython-36.pyc,, -django/contrib/auth/__pycache__/backends.cpython-36.pyc,, -django/contrib/auth/handlers/__pycache__/modwsgi.cpython-36.pyc,, -django/contrib/auth/handlers/__pycache__/__init__.cpython-36.pyc,, -django/contrib/admin/templatetags/__pycache__/admin_list.cpython-36.pyc,, -django/contrib/admin/templatetags/__pycache__/admin_static.cpython-36.pyc,, -django/contrib/admin/templatetags/__pycache__/log.cpython-36.pyc,, -django/contrib/admin/templatetags/__pycache__/admin_modify.cpython-36.pyc,, -django/contrib/admin/templatetags/__pycache__/__init__.cpython-36.pyc,, -django/contrib/admin/templatetags/__pycache__/admin_urls.cpython-36.pyc,, -django/contrib/admin/migrations/__pycache__/0001_initial.cpython-36.pyc,, -django/contrib/admin/migrations/__pycache__/0002_logentry_remove_auto_add.cpython-36.pyc,, -django/contrib/admin/migrations/__pycache__/__init__.cpython-36.pyc,, -django/contrib/admin/__pycache__/exceptions.cpython-36.pyc,, -django/contrib/admin/__pycache__/checks.cpython-36.pyc,, -django/contrib/admin/__pycache__/widgets.cpython-36.pyc,, -django/contrib/admin/__pycache__/forms.cpython-36.pyc,, -django/contrib/admin/__pycache__/models.cpython-36.pyc,, -django/contrib/admin/__pycache__/sites.cpython-36.pyc,, -django/contrib/admin/__pycache__/tests.cpython-36.pyc,, -django/contrib/admin/__pycache__/actions.cpython-36.pyc,, -django/contrib/admin/__pycache__/apps.cpython-36.pyc,, -django/contrib/admin/__pycache__/utils.cpython-36.pyc,, -django/contrib/admin/__pycache__/helpers.cpython-36.pyc,, -django/contrib/admin/__pycache__/filters.cpython-36.pyc,, -django/contrib/admin/__pycache__/options.cpython-36.pyc,, -django/contrib/admin/__pycache__/__init__.cpython-36.pyc,, -django/contrib/admin/__pycache__/decorators.cpython-36.pyc,, -django/contrib/admin/views/__pycache__/autocomplete.cpython-36.pyc,, -django/contrib/admin/views/__pycache__/main.cpython-36.pyc,, -django/contrib/admin/views/__pycache__/__init__.cpython-36.pyc,, -django/contrib/admin/views/__pycache__/decorators.cpython-36.pyc,, -django/contrib/staticfiles/templatetags/__pycache__/staticfiles.cpython-36.pyc,, -django/contrib/staticfiles/templatetags/__pycache__/__init__.cpython-36.pyc,, -django/contrib/staticfiles/management/__pycache__/__init__.cpython-36.pyc,, -django/contrib/staticfiles/management/commands/__pycache__/findstatic.cpython-36.pyc,, -django/contrib/staticfiles/management/commands/__pycache__/collectstatic.cpython-36.pyc,, -django/contrib/staticfiles/management/commands/__pycache__/runserver.cpython-36.pyc,, -django/contrib/staticfiles/management/commands/__pycache__/__init__.cpython-36.pyc,, -django/contrib/staticfiles/__pycache__/handlers.cpython-36.pyc,, -django/contrib/staticfiles/__pycache__/checks.cpython-36.pyc,, -django/contrib/staticfiles/__pycache__/storage.cpython-36.pyc,, -django/contrib/staticfiles/__pycache__/testing.cpython-36.pyc,, -django/contrib/staticfiles/__pycache__/views.cpython-36.pyc,, -django/contrib/staticfiles/__pycache__/apps.cpython-36.pyc,, -django/contrib/staticfiles/__pycache__/finders.cpython-36.pyc,, -django/contrib/staticfiles/__pycache__/utils.cpython-36.pyc,, -django/contrib/staticfiles/__pycache__/__init__.cpython-36.pyc,, -django/contrib/staticfiles/__pycache__/urls.cpython-36.pyc,, -django/contrib/__pycache__/__init__.cpython-36.pyc,, -django/contrib/flatpages/templatetags/__pycache__/flatpages.cpython-36.pyc,, -django/contrib/flatpages/templatetags/__pycache__/__init__.cpython-36.pyc,, -django/contrib/flatpages/migrations/__pycache__/0001_initial.cpython-36.pyc,, -django/contrib/flatpages/migrations/__pycache__/__init__.cpython-36.pyc,, -django/contrib/flatpages/__pycache__/admin.cpython-36.pyc,, -django/contrib/flatpages/__pycache__/forms.cpython-36.pyc,, -django/contrib/flatpages/__pycache__/models.cpython-36.pyc,, -django/contrib/flatpages/__pycache__/views.cpython-36.pyc,, -django/contrib/flatpages/__pycache__/middleware.cpython-36.pyc,, -django/contrib/flatpages/__pycache__/apps.cpython-36.pyc,, -django/contrib/flatpages/__pycache__/sitemaps.cpython-36.pyc,, -django/contrib/flatpages/__pycache__/__init__.cpython-36.pyc,, -django/contrib/flatpages/__pycache__/urls.cpython-36.pyc,, -django/contrib/sites/migrations/__pycache__/0001_initial.cpython-36.pyc,, -django/contrib/sites/migrations/__pycache__/0002_alter_domain_unique.cpython-36.pyc,, -django/contrib/sites/migrations/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sites/__pycache__/managers.cpython-36.pyc,, -django/contrib/sites/__pycache__/admin.cpython-36.pyc,, -django/contrib/sites/__pycache__/shortcuts.cpython-36.pyc,, -django/contrib/sites/__pycache__/models.cpython-36.pyc,, -django/contrib/sites/__pycache__/management.cpython-36.pyc,, -django/contrib/sites/__pycache__/middleware.cpython-36.pyc,, -django/contrib/sites/__pycache__/apps.cpython-36.pyc,, -django/contrib/sites/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sites/__pycache__/requests.cpython-36.pyc,, -django/contrib/postgres/forms/__pycache__/jsonb.cpython-36.pyc,, -django/contrib/postgres/forms/__pycache__/array.cpython-36.pyc,, -django/contrib/postgres/forms/__pycache__/ranges.cpython-36.pyc,, -django/contrib/postgres/forms/__pycache__/hstore.cpython-36.pyc,, -django/contrib/postgres/forms/__pycache__/__init__.cpython-36.pyc,, -django/contrib/postgres/aggregates/__pycache__/general.cpython-36.pyc,, -django/contrib/postgres/aggregates/__pycache__/statistics.cpython-36.pyc,, -django/contrib/postgres/aggregates/__pycache__/__init__.cpython-36.pyc,, -django/contrib/postgres/__pycache__/lookups.cpython-36.pyc,, -django/contrib/postgres/__pycache__/signals.cpython-36.pyc,, -django/contrib/postgres/__pycache__/operations.cpython-36.pyc,, -django/contrib/postgres/__pycache__/functions.cpython-36.pyc,, -django/contrib/postgres/__pycache__/indexes.cpython-36.pyc,, -django/contrib/postgres/__pycache__/validators.cpython-36.pyc,, -django/contrib/postgres/__pycache__/apps.cpython-36.pyc,, -django/contrib/postgres/__pycache__/search.cpython-36.pyc,, -django/contrib/postgres/__pycache__/utils.cpython-36.pyc,, -django/contrib/postgres/__pycache__/__init__.cpython-36.pyc,, -django/contrib/postgres/fields/__pycache__/jsonb.cpython-36.pyc,, -django/contrib/postgres/fields/__pycache__/array.cpython-36.pyc,, -django/contrib/postgres/fields/__pycache__/ranges.cpython-36.pyc,, -django/contrib/postgres/fields/__pycache__/citext.cpython-36.pyc,, -django/contrib/postgres/fields/__pycache__/utils.cpython-36.pyc,, -django/contrib/postgres/fields/__pycache__/hstore.cpython-36.pyc,, -django/contrib/postgres/fields/__pycache__/__init__.cpython-36.pyc,, -django/contrib/redirects/migrations/__pycache__/0001_initial.cpython-36.pyc,, -django/contrib/redirects/migrations/__pycache__/__init__.cpython-36.pyc,, -django/contrib/redirects/__pycache__/admin.cpython-36.pyc,, -django/contrib/redirects/__pycache__/models.cpython-36.pyc,, -django/contrib/redirects/__pycache__/middleware.cpython-36.pyc,, -django/contrib/redirects/__pycache__/apps.cpython-36.pyc,, -django/contrib/redirects/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sessions/migrations/__pycache__/0001_initial.cpython-36.pyc,, -django/contrib/sessions/migrations/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sessions/backends/__pycache__/signed_cookies.cpython-36.pyc,, -django/contrib/sessions/backends/__pycache__/cached_db.cpython-36.pyc,, -django/contrib/sessions/backends/__pycache__/db.cpython-36.pyc,, -django/contrib/sessions/backends/__pycache__/file.cpython-36.pyc,, -django/contrib/sessions/backends/__pycache__/base.cpython-36.pyc,, -django/contrib/sessions/backends/__pycache__/cache.cpython-36.pyc,, -django/contrib/sessions/backends/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sessions/management/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sessions/management/commands/__pycache__/clearsessions.cpython-36.pyc,, -django/contrib/sessions/management/commands/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sessions/__pycache__/serializers.cpython-36.pyc,, -django/contrib/sessions/__pycache__/base_session.cpython-36.pyc,, -django/contrib/sessions/__pycache__/exceptions.cpython-36.pyc,, -django/contrib/sessions/__pycache__/models.cpython-36.pyc,, -django/contrib/sessions/__pycache__/middleware.cpython-36.pyc,, -django/contrib/sessions/__pycache__/apps.cpython-36.pyc,, -django/contrib/sessions/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sitemaps/management/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sitemaps/management/commands/__pycache__/ping_google.cpython-36.pyc,, -django/contrib/sitemaps/management/commands/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sitemaps/__pycache__/views.cpython-36.pyc,, -django/contrib/sitemaps/__pycache__/apps.cpython-36.pyc,, -django/contrib/sitemaps/__pycache__/__init__.cpython-36.pyc,, -django/contrib/humanize/templatetags/__pycache__/humanize.cpython-36.pyc,, -django/contrib/humanize/templatetags/__pycache__/__init__.cpython-36.pyc,, -django/contrib/humanize/__pycache__/apps.cpython-36.pyc,, -django/contrib/humanize/__pycache__/__init__.cpython-36.pyc,, -django/contrib/contenttypes/migrations/__pycache__/0001_initial.cpython-36.pyc,, -django/contrib/contenttypes/migrations/__pycache__/0002_remove_content_type_name.cpython-36.pyc,, -django/contrib/contenttypes/migrations/__pycache__/__init__.cpython-36.pyc,, -django/contrib/contenttypes/management/__pycache__/__init__.cpython-36.pyc,, -django/contrib/contenttypes/management/commands/__pycache__/remove_stale_contenttypes.cpython-36.pyc,, -django/contrib/contenttypes/management/commands/__pycache__/__init__.cpython-36.pyc,, -django/contrib/contenttypes/__pycache__/checks.cpython-36.pyc,, -django/contrib/contenttypes/__pycache__/admin.cpython-36.pyc,, -django/contrib/contenttypes/__pycache__/forms.cpython-36.pyc,, -django/contrib/contenttypes/__pycache__/models.cpython-36.pyc,, -django/contrib/contenttypes/__pycache__/views.cpython-36.pyc,, -django/contrib/contenttypes/__pycache__/apps.cpython-36.pyc,, -django/contrib/contenttypes/__pycache__/fields.cpython-36.pyc,, -django/contrib/contenttypes/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/libgeos.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/prepared.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/point.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/factory.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/base.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/linestring.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/collections.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/mutable_list.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/polygon.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/geometry.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/coordseq.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/io.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/geos/__pycache__/error.cpython-36.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/predicates.cpython-36.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/prepared.cpython-36.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/topology.cpython-36.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/errcheck.cpython-36.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/threadsafe.cpython-36.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/coordseq.cpython-36.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/io.cpython-36.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/geom.cpython-36.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/misc.cpython-36.pyc,, -django/contrib/gis/forms/__pycache__/widgets.cpython-36.pyc,, -django/contrib/gis/forms/__pycache__/fields.cpython-36.pyc,, -django/contrib/gis/forms/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/feature.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/field.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/envelope.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/srs.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/layer.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/datasource.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/libgdal.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/geometries.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/base.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/geomtype.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/error.cpython-36.pyc,, -django/contrib/gis/gdal/__pycache__/driver.cpython-36.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/generation.cpython-36.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/srs.cpython-36.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/errcheck.cpython-36.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/raster.cpython-36.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/ds.cpython-36.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/geom.cpython-36.pyc,, -django/contrib/gis/gdal/raster/__pycache__/const.cpython-36.pyc,, -django/contrib/gis/gdal/raster/__pycache__/band.cpython-36.pyc,, -django/contrib/gis/gdal/raster/__pycache__/base.cpython-36.pyc,, -django/contrib/gis/gdal/raster/__pycache__/source.cpython-36.pyc,, -django/contrib/gis/gdal/raster/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/admin/__pycache__/widgets.cpython-36.pyc,, -django/contrib/gis/admin/__pycache__/options.cpython-36.pyc,, -django/contrib/gis/admin/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/management/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/management/commands/__pycache__/inspectdb.cpython-36.pyc,, -django/contrib/gis/management/commands/__pycache__/ogrinspect.cpython-36.pyc,, -django/contrib/gis/management/commands/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/utils/__pycache__/ogrinfo.cpython-36.pyc,, -django/contrib/gis/utils/__pycache__/srs.cpython-36.pyc,, -django/contrib/gis/utils/__pycache__/ogrinspect.cpython-36.pyc,, -django/contrib/gis/utils/__pycache__/layermapping.cpython-36.pyc,, -django/contrib/gis/utils/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/__pycache__/measure.cpython-36.pyc,, -django/contrib/gis/__pycache__/feeds.cpython-36.pyc,, -django/contrib/gis/__pycache__/shortcuts.cpython-36.pyc,, -django/contrib/gis/__pycache__/views.cpython-36.pyc,, -django/contrib/gis/__pycache__/apps.cpython-36.pyc,, -django/contrib/gis/__pycache__/geometry.cpython-36.pyc,, -django/contrib/gis/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/__pycache__/ptr.cpython-36.pyc,, -django/contrib/gis/serializers/__pycache__/geojson.cpython-36.pyc,, -django/contrib/gis/serializers/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/sitemaps/__pycache__/views.cpython-36.pyc,, -django/contrib/gis/sitemaps/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/sitemaps/__pycache__/kml.cpython-36.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/introspection.cpython-36.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/operations.cpython-36.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/models.cpython-36.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/base.cpython-36.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/features.cpython-36.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/adapter.cpython-36.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/schema.cpython-36.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/db/backends/__pycache__/utils.cpython-36.pyc,, -django/contrib/gis/db/backends/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/introspection.cpython-36.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/operations.cpython-36.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/const.cpython-36.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/models.cpython-36.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/base.cpython-36.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/features.cpython-36.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/adapter.cpython-36.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/schema.cpython-36.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/pgraster.cpython-36.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/introspection.cpython-36.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/operations.cpython-36.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/base.cpython-36.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/features.cpython-36.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/schema.cpython-36.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/introspection.cpython-36.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/client.cpython-36.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/operations.cpython-36.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/models.cpython-36.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/base.cpython-36.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/features.cpython-36.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/adapter.cpython-36.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/schema.cpython-36.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/db/backends/base/__pycache__/operations.cpython-36.pyc,, -django/contrib/gis/db/backends/base/__pycache__/models.cpython-36.pyc,, -django/contrib/gis/db/backends/base/__pycache__/features.cpython-36.pyc,, -django/contrib/gis/db/backends/base/__pycache__/adapter.cpython-36.pyc,, -django/contrib/gis/db/backends/base/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/db/models/__pycache__/lookups.cpython-36.pyc,, -django/contrib/gis/db/models/__pycache__/proxy.cpython-36.pyc,, -django/contrib/gis/db/models/__pycache__/functions.cpython-36.pyc,, -django/contrib/gis/db/models/__pycache__/aggregates.cpython-36.pyc,, -django/contrib/gis/db/models/__pycache__/fields.cpython-36.pyc,, -django/contrib/gis/db/models/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/db/models/sql/__pycache__/conversion.cpython-36.pyc,, -django/contrib/gis/db/models/sql/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/db/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/geoip2/__pycache__/resources.cpython-36.pyc,, -django/contrib/gis/geoip2/__pycache__/base.cpython-36.pyc,, -django/contrib/gis/geoip2/__pycache__/__init__.cpython-36.pyc,, -django/contrib/admindocs/__pycache__/views.cpython-36.pyc,, -django/contrib/admindocs/__pycache__/middleware.cpython-36.pyc,, -django/contrib/admindocs/__pycache__/apps.cpython-36.pyc,, -django/contrib/admindocs/__pycache__/utils.cpython-36.pyc,, -django/contrib/admindocs/__pycache__/__init__.cpython-36.pyc,, -django/contrib/admindocs/__pycache__/urls.cpython-36.pyc,, -django/http/__pycache__/response.cpython-36.pyc,, -django/http/__pycache__/multipartparser.cpython-36.pyc,, -django/http/__pycache__/request.cpython-36.pyc,, -django/http/__pycache__/cookie.cpython-36.pyc,, -django/http/__pycache__/__init__.cpython-36.pyc,, -django/urls/__pycache__/resolvers.cpython-36.pyc,, -django/urls/__pycache__/exceptions.cpython-36.pyc,, -django/urls/__pycache__/converters.cpython-36.pyc,, -django/urls/__pycache__/base.cpython-36.pyc,, -django/urls/__pycache__/utils.cpython-36.pyc,, -django/urls/__pycache__/conf.cpython-36.pyc,, -django/urls/__pycache__/__init__.cpython-36.pyc,, -django/db/migrations/__pycache__/exceptions.cpython-36.pyc,, -django/db/migrations/__pycache__/serializer.cpython-36.pyc,, -django/db/migrations/__pycache__/loader.cpython-36.pyc,, -django/db/migrations/__pycache__/state.cpython-36.pyc,, -django/db/migrations/__pycache__/autodetector.cpython-36.pyc,, -django/db/migrations/__pycache__/recorder.cpython-36.pyc,, -django/db/migrations/__pycache__/questioner.cpython-36.pyc,, -django/db/migrations/__pycache__/optimizer.cpython-36.pyc,, -django/db/migrations/__pycache__/writer.cpython-36.pyc,, -django/db/migrations/__pycache__/executor.cpython-36.pyc,, -django/db/migrations/__pycache__/topological_sort.cpython-36.pyc,, -django/db/migrations/__pycache__/migration.cpython-36.pyc,, -django/db/migrations/__pycache__/utils.cpython-36.pyc,, -django/db/migrations/__pycache__/__init__.cpython-36.pyc,, -django/db/migrations/__pycache__/graph.cpython-36.pyc,, -django/db/migrations/operations/__pycache__/models.cpython-36.pyc,, -django/db/migrations/operations/__pycache__/base.cpython-36.pyc,, -django/db/migrations/operations/__pycache__/special.cpython-36.pyc,, -django/db/migrations/operations/__pycache__/utils.cpython-36.pyc,, -django/db/migrations/operations/__pycache__/fields.cpython-36.pyc,, -django/db/migrations/operations/__pycache__/__init__.cpython-36.pyc,, -django/db/backends/postgresql/__pycache__/introspection.cpython-36.pyc,, -django/db/backends/postgresql/__pycache__/client.cpython-36.pyc,, -django/db/backends/postgresql/__pycache__/operations.cpython-36.pyc,, -django/db/backends/postgresql/__pycache__/creation.cpython-36.pyc,, -django/db/backends/postgresql/__pycache__/base.cpython-36.pyc,, -django/db/backends/postgresql/__pycache__/features.cpython-36.pyc,, -django/db/backends/postgresql/__pycache__/schema.cpython-36.pyc,, -django/db/backends/postgresql/__pycache__/utils.cpython-36.pyc,, -django/db/backends/postgresql/__pycache__/__init__.cpython-36.pyc,, -django/db/backends/dummy/__pycache__/base.cpython-36.pyc,, -django/db/backends/dummy/__pycache__/features.cpython-36.pyc,, -django/db/backends/dummy/__pycache__/__init__.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/introspection.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/client.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/operations.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/creation.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/functions.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/compiler.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/base.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/features.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/schema.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/utils.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/validation.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/__init__.cpython-36.pyc,, -django/db/backends/__pycache__/ddl_references.cpython-36.pyc,, -django/db/backends/__pycache__/signals.cpython-36.pyc,, -django/db/backends/__pycache__/utils.cpython-36.pyc,, -django/db/backends/__pycache__/__init__.cpython-36.pyc,, -django/db/backends/postgresql_psycopg2/__pycache__/introspection.cpython-36.pyc,, -django/db/backends/postgresql_psycopg2/__pycache__/client.cpython-36.pyc,, -django/db/backends/postgresql_psycopg2/__pycache__/operations.cpython-36.pyc,, -django/db/backends/postgresql_psycopg2/__pycache__/creation.cpython-36.pyc,, -django/db/backends/postgresql_psycopg2/__pycache__/base.cpython-36.pyc,, -django/db/backends/postgresql_psycopg2/__pycache__/features.cpython-36.pyc,, -django/db/backends/postgresql_psycopg2/__pycache__/schema.cpython-36.pyc,, -django/db/backends/postgresql_psycopg2/__pycache__/utils.cpython-36.pyc,, -django/db/backends/postgresql_psycopg2/__pycache__/__init__.cpython-36.pyc,, -django/db/backends/sqlite3/__pycache__/introspection.cpython-36.pyc,, -django/db/backends/sqlite3/__pycache__/client.cpython-36.pyc,, -django/db/backends/sqlite3/__pycache__/operations.cpython-36.pyc,, -django/db/backends/sqlite3/__pycache__/creation.cpython-36.pyc,, -django/db/backends/sqlite3/__pycache__/base.cpython-36.pyc,, -django/db/backends/sqlite3/__pycache__/features.cpython-36.pyc,, -django/db/backends/sqlite3/__pycache__/schema.cpython-36.pyc,, -django/db/backends/sqlite3/__pycache__/__init__.cpython-36.pyc,, -django/db/backends/mysql/__pycache__/introspection.cpython-36.pyc,, -django/db/backends/mysql/__pycache__/client.cpython-36.pyc,, -django/db/backends/mysql/__pycache__/operations.cpython-36.pyc,, -django/db/backends/mysql/__pycache__/creation.cpython-36.pyc,, -django/db/backends/mysql/__pycache__/compiler.cpython-36.pyc,, -django/db/backends/mysql/__pycache__/base.cpython-36.pyc,, -django/db/backends/mysql/__pycache__/features.cpython-36.pyc,, -django/db/backends/mysql/__pycache__/schema.cpython-36.pyc,, -django/db/backends/mysql/__pycache__/validation.cpython-36.pyc,, -django/db/backends/mysql/__pycache__/__init__.cpython-36.pyc,, -django/db/backends/base/__pycache__/introspection.cpython-36.pyc,, -django/db/backends/base/__pycache__/client.cpython-36.pyc,, -django/db/backends/base/__pycache__/operations.cpython-36.pyc,, -django/db/backends/base/__pycache__/creation.cpython-36.pyc,, -django/db/backends/base/__pycache__/base.cpython-36.pyc,, -django/db/backends/base/__pycache__/features.cpython-36.pyc,, -django/db/backends/base/__pycache__/schema.cpython-36.pyc,, -django/db/backends/base/__pycache__/validation.cpython-36.pyc,, -django/db/backends/base/__pycache__/__init__.cpython-36.pyc,, -django/db/models/__pycache__/lookups.cpython-36.pyc,, -django/db/models/__pycache__/expressions.cpython-36.pyc,, -django/db/models/__pycache__/constants.cpython-36.pyc,, -django/db/models/__pycache__/query_utils.cpython-36.pyc,, -django/db/models/__pycache__/query.cpython-36.pyc,, -django/db/models/__pycache__/signals.cpython-36.pyc,, -django/db/models/__pycache__/indexes.cpython-36.pyc,, -django/db/models/__pycache__/base.cpython-36.pyc,, -django/db/models/__pycache__/deletion.cpython-36.pyc,, -django/db/models/__pycache__/utils.cpython-36.pyc,, -django/db/models/__pycache__/aggregates.cpython-36.pyc,, -django/db/models/__pycache__/manager.cpython-36.pyc,, -django/db/models/__pycache__/options.cpython-36.pyc,, -django/db/models/__pycache__/__init__.cpython-36.pyc,, -django/db/models/functions/__pycache__/datetime.cpython-36.pyc,, -django/db/models/functions/__pycache__/window.cpython-36.pyc,, -django/db/models/functions/__pycache__/base.cpython-36.pyc,, -django/db/models/functions/__pycache__/__init__.cpython-36.pyc,, -django/db/models/fields/__pycache__/related.cpython-36.pyc,, -django/db/models/fields/__pycache__/proxy.cpython-36.pyc,, -django/db/models/fields/__pycache__/files.cpython-36.pyc,, -django/db/models/fields/__pycache__/mixins.cpython-36.pyc,, -django/db/models/fields/__pycache__/related_lookups.cpython-36.pyc,, -django/db/models/fields/__pycache__/related_descriptors.cpython-36.pyc,, -django/db/models/fields/__pycache__/reverse_related.cpython-36.pyc,, -django/db/models/fields/__pycache__/__init__.cpython-36.pyc,, -django/db/models/sql/__pycache__/constants.cpython-36.pyc,, -django/db/models/sql/__pycache__/datastructures.cpython-36.pyc,, -django/db/models/sql/__pycache__/query.cpython-36.pyc,, -django/db/models/sql/__pycache__/compiler.cpython-36.pyc,, -django/db/models/sql/__pycache__/subqueries.cpython-36.pyc,, -django/db/models/sql/__pycache__/where.cpython-36.pyc,, -django/db/models/sql/__pycache__/__init__.cpython-36.pyc,, -django/db/__pycache__/transaction.cpython-36.pyc,, -django/db/__pycache__/utils.cpython-36.pyc,, -django/db/__pycache__/__init__.cpython-36.pyc,, -django/views/decorators/__pycache__/debug.cpython-36.pyc,, -django/views/decorators/__pycache__/csrf.cpython-36.pyc,, -django/views/decorators/__pycache__/clickjacking.cpython-36.pyc,, -django/views/decorators/__pycache__/gzip.cpython-36.pyc,, -django/views/decorators/__pycache__/vary.cpython-36.pyc,, -django/views/decorators/__pycache__/cache.cpython-36.pyc,, -django/views/decorators/__pycache__/http.cpython-36.pyc,, -django/views/decorators/__pycache__/__init__.cpython-36.pyc,, -django/views/__pycache__/debug.cpython-36.pyc,, -django/views/__pycache__/csrf.cpython-36.pyc,, -django/views/__pycache__/i18n.cpython-36.pyc,, -django/views/__pycache__/defaults.cpython-36.pyc,, -django/views/__pycache__/static.cpython-36.pyc,, -django/views/__pycache__/__init__.cpython-36.pyc,, -django/views/generic/__pycache__/edit.cpython-36.pyc,, -django/views/generic/__pycache__/list.cpython-36.pyc,, -django/views/generic/__pycache__/detail.cpython-36.pyc,, -django/views/generic/__pycache__/base.cpython-36.pyc,, -django/views/generic/__pycache__/dates.cpython-36.pyc,, -django/views/generic/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/sl/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/sl/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/sk/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/sk/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/pl/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/pl/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/vi/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/vi/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/sq/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/sq/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/de_CH/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/de_CH/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/sv/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/sv/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/ga/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/ga/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/he/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/he/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/km/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/km/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/nn/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/nn/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/da/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/da/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/es_NI/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/es_NI/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/mn/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/mn/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/pt_BR/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/pt_BR/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/es_CO/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/es_CO/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/ja/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/ja/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/el/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/el/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/lv/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/lv/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/fy/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/fy/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/it/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/it/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/ca/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/ca/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/is/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/is/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/cs/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/cs/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/te/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/te/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/zh_Hans/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/zh_Hans/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/ru/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/ru/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/zh_Hant/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/zh_Hant/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/ro/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/ro/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/pt/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/pt/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/uk/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/uk/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/sr/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/sr/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/en_AU/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/en_AU/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/en_GB/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/en_GB/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/es_PR/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/es_PR/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/ml/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/ml/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/es_MX/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/es_MX/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/mk/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/mk/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/kn/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/kn/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/bs/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/bs/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/ar/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/ar/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/gl/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/gl/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/hr/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/hr/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/hu/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/hu/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/nl/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/nl/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/bg/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/bg/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/bn/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/bn/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/es_AR/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/es_AR/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/nb/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/nb/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/hi/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/hi/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/ka/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/ka/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/de/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/de/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/az/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/az/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/gd/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/gd/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/ko/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/ko/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/fi/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/fi/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/sr_Latn/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/sr_Latn/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/eo/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/eo/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/id/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/id/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/fr/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/fr/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/es/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/es/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/et/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/et/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/en/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/en/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/fa/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/fa/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/lt/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/lt/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/cy/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/cy/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/eu/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/eu/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/ta/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/ta/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/th/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/th/__pycache__/__init__.cpython-36.pyc,, -django/conf/locale/tr/__pycache__/formats.cpython-36.pyc,, -django/conf/locale/tr/__pycache__/__init__.cpython-36.pyc,, -django/conf/__pycache__/global_settings.cpython-36.pyc,, -django/conf/__pycache__/__init__.cpython-36.pyc,, -django/conf/urls/__pycache__/i18n.cpython-36.pyc,, -django/conf/urls/__pycache__/static.cpython-36.pyc,, -django/conf/urls/__pycache__/__init__.cpython-36.pyc,, -django/apps/__pycache__/config.cpython-36.pyc,, -django/apps/__pycache__/registry.cpython-36.pyc,, -django/apps/__pycache__/__init__.cpython-36.pyc,, -../../../bin/__pycache__/django-admin.cpython-36.pyc,, +../../../bin/django-admin.py,sha256=OOv0QKYqhDD2O4X3HQx3gFFQ-CC7hSLnWuzZnQXeiiA,115 +Django-2.0.2.dist-info/DESCRIPTION.rst,sha256=OCTuuN6LcWulhHS3d5rfjdsQtW22n7HENFRh6jC6ego,10 +Django-2.0.2.dist-info/LICENSE.txt,sha256=uEZBXRtRTpwd_xSiLeuQbXlLxUbKYSn5UKGM0JHipmk,1552 +Django-2.0.2.dist-info/METADATA,sha256=2EB47t_FbGQegCzaJky9FPY9UrDmz8MSmUTHGgKO4jo,1416 +Django-2.0.2.dist-info/RECORD,, +Django-2.0.2.dist-info/WHEEL,sha256=8Lm45v9gcYRm70DrgFGVe4WsUtUMi1_0Tso1hqPGMjA,92 +Django-2.0.2.dist-info/entry_points.txt,sha256=daYW_s0r8Z5eiRi_bNU6vodHqVUXQWzm-DHFOQHTV2Q,83 +Django-2.0.2.dist-info/metadata.json,sha256=I_hnWAuICPnX-re_A_sCgpVKTT39lRYBsdNoCQ9klrE,1724 +Django-2.0.2.dist-info/top_level.txt,sha256=V_goijg9tfO20ox_7os6CcnPvmBavbxu46LpJiNLwjA,7 +django/__init__.py,sha256=ZFCYEVK3Qz5h_uHO7MS0APF6ii9nDg58hARUO4DP-Z8,799 +django/__main__.py,sha256=9a5To1vQXqf2Jg_eh8nLvIc0GXmDjEXv4jE1QZEqBFk,211 +django/shortcuts.py,sha256=d1jMwK1YgOlbORjIHB-vsrFGLMzMJUZY94a1T24LkKo,5574 +django/apps/__init__.py,sha256=t0F4yceU4SbybMeWBvpuE6RsGaENmQCVbNSdSuXiEMs,90 +django/apps/config.py,sha256=meyWjXLt0qgPfqM14KGaWsZakbga-wuHXsu2gkHyQ-s,8047 +django/apps/registry.py,sha256=rvRxqCTbLRjxxqPcV5Sm2D5D7rmtFyzuDbBEKU4z5xk,17220 +django/bin/django-admin.py,sha256=FWxg_nmLPNGqXwSMw0QvZsKNQsiVBHrSsNfgALIXqQ0,128 +django/conf/__init__.py,sha256=mFe5TxmoKTgqXEDRjqLOhwBQPz-TNEjQQakBcpVzkbY,7437 +django/conf/global_settings.py,sha256=QMugwAHe6GGHqpxV9M8eKhn_iLlRSnpymfIsYhc3zgw,22040 +django/conf/app_template/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/app_template/admin.py-tpl,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63 +django/conf/app_template/apps.py-tpl,sha256=lZ1k1B3K5ntPWSn-CSd0cvDuijeoQE43wztE0tXyeMQ,114 +django/conf/app_template/models.py-tpl,sha256=Vjc0p2XbAPgE6HyTF6vll98A4eDhA5AvaQqsc4kQ9AQ,57 +django/conf/app_template/tests.py-tpl,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60 +django/conf/app_template/views.py-tpl,sha256=xc1IQHrsij7j33TUbo-_oewy3vs03pw_etpBWaMYJl0,63 +django/conf/app_template/migrations/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/__init__.py,sha256=Cdnzc1w8PQMTASYhYm_LzJsmCYlGch9SijWoHzWwbMc,12502 +django/conf/locale/af/LC_MESSAGES/django.mo,sha256=oO8Q8uo31WbyeXWMlhClD2zAxGaMsbtktlX36H6Zl5I,19601 +django/conf/locale/af/LC_MESSAGES/django.po,sha256=HYviyVp2v3RyrgemBfKclJRSt1Hk71dRt2pUtjMHvV4,25003 +django/conf/locale/ar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/ar/formats.py,sha256=XBXR6_xAY_oHs5rAu5YGJii6-yenWQJ2HFqtyava8rs,694 +django/conf/locale/ar/LC_MESSAGES/django.mo,sha256=6cugqE9KpudwHt4yr_qBqazc-WNVth60LPfSrEnekIQ,30712 +django/conf/locale/ar/LC_MESSAGES/django.po,sha256=9tVjHdBZa3DDYWeHGdwaHpik-RbDTf3PFZl90iEDgNo,35055 +django/conf/locale/ast/LC_MESSAGES/django.mo,sha256=kmN-K4eQG_EvU565NnThO5qSkfcIMLXizk57RoM0YmM,16665 +django/conf/locale/ast/LC_MESSAGES/django.po,sha256=WnsaXWzvgTohaW7h5L6H5FG7QM8y5FifzB3GaahFLQY,23619 +django/conf/locale/az/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/az/formats.py,sha256=qAxKv_-_ubsfH4qdtvvgCqDirBh9TnuemaLzdC5D5-s,1189 +django/conf/locale/az/LC_MESSAGES/django.mo,sha256=FrJmdBMwFu2tX12djk8B_QfPQKwwL7Zkyx-K6Ua-6RA,19457 +django/conf/locale/az/LC_MESSAGES/django.po,sha256=ZyqOTC22KTFhIKGWXqBtxExu8cMA-x8Ir34Oph3R_hw,24955 +django/conf/locale/be/LC_MESSAGES/django.mo,sha256=IxeJVl8TKn7HAi9VLoWmv8wAfo_pm6x4BVLOva_0rvg,34723 +django/conf/locale/be/LC_MESSAGES/django.po,sha256=kgt3xyXCb3FdmIyYe1XPSoRFsjxbYPXHJijwD2RydwE,36995 +django/conf/locale/bg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/bg/formats.py,sha256=K9JbkJuXdmr8z1KAACBvDxa8mIJIQ8-DfHLlvjkfm38,703 +django/conf/locale/bg/LC_MESSAGES/django.mo,sha256=oSaycuek5hekuOlUDZvgBWiC8pprSjVlhsPyQqnF2Ss,29687 +django/conf/locale/bg/LC_MESSAGES/django.po,sha256=STgBTki870oeyGqYyPPlyg4WmkdzlDvAUAhsBwHsWTs,32975 +django/conf/locale/bn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/bn/formats.py,sha256=1O63vMDv5MG9um4AvMREKAoqlOZyC46WMEWG9q8PMS8,962 +django/conf/locale/bn/LC_MESSAGES/django.mo,sha256=K7EKhxgCWLfWGA8MenkboQ_pNwo45lAkwrZkGrjIc-c,17250 +django/conf/locale/bn/LC_MESSAGES/django.po,sha256=CUr8W_emf9KSw8z-F26P7drK6z_CCovR9AjWycLpAP4,26693 +django/conf/locale/br/LC_MESSAGES/django.mo,sha256=7bGRE2oO2IICAbPgDCB1Sg_8ljqGvcs-YGsOespgPKo,14948 +django/conf/locale/br/LC_MESSAGES/django.po,sha256=U5SoZEn-03J1MGF76dtjNuCcEqslQEJJOl46RiNnK4Q,22771 +django/conf/locale/bs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/bs/formats.py,sha256=iuBajy6bgF-2V0j5xZjv9832ToLnUMyRvzVDK4vqO74,703 +django/conf/locale/bs/LC_MESSAGES/django.mo,sha256=DKLskkhih8rc42NtUXt-OZXD7r983w9Ddc4qSmakFis,11073 +django/conf/locale/bs/LC_MESSAGES/django.po,sha256=H4rrXQrd0ph_bHUvxgncbH29mhwtm2__XGo7QhH-ROY,21671 +django/conf/locale/ca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/ca/formats.py,sha256=rPWIibPg8b8w7NwBy7rohbFEFcxTPrkrSjv_MP2CYBY,949 +django/conf/locale/ca/LC_MESSAGES/django.mo,sha256=h7GJelxKdhaHwVo7tsVhBfnkOOiN6WAARq70pNk__vk,23602 +django/conf/locale/ca/LC_MESSAGES/django.po,sha256=343ow5vc51Tlljd1wuJGJyDT2M1eKBsKUWAnCOVW47g,26986 +django/conf/locale/cs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/cs/formats.py,sha256=tlbaEQ994P6Bj-UliXagMW4Yu1D_neGspDOaQLL5HlU,1635 +django/conf/locale/cs/LC_MESSAGES/django.mo,sha256=P4HhR6_GMVxh91AVwSff8B044Zprfzz9JPRHK9mIgSA,27206 +django/conf/locale/cs/LC_MESSAGES/django.po,sha256=_XDU6clyHyzOuZALSTdnG7QGwiZ06VD3jd8CohcZRwA,29391 +django/conf/locale/cy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/cy/formats.py,sha256=WKp8F3IiISrgxXItSpIB1c0a8xFY8CsEzqXMQRYbsPQ,1755 +django/conf/locale/cy/LC_MESSAGES/django.mo,sha256=CJL04VXl3vjRWff93fzWDLeEJPw_Il7G5YzjCHdZZok,22280 +django/conf/locale/cy/LC_MESSAGES/django.po,sha256=C14r9gUOnCV5fNb4YZ-NN-fnLlZl1xHBP3H0tu-LgRk,27045 +django/conf/locale/da/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/da/formats.py,sha256=YQaL8Y3H0AOPvJzxwiDXwtqrbY0EyHNGtfMu4BGha0Y,939 +django/conf/locale/da/LC_MESSAGES/django.mo,sha256=dPsLukRWrR5r2aCOX1XQ3asDFWSIzsQSeHq_0BWev5Y,25647 +django/conf/locale/da/LC_MESSAGES/django.po,sha256=XnFp_eWVFEOjcV9Itf2GUvlXsepSNeqzghnTCc57b3o,27690 +django/conf/locale/de/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/de/formats.py,sha256=yPGP3kCbQCU0VY3P-Kuxx2yl7eWFMsMtGu5xzDdr6jo,1033 +django/conf/locale/de/LC_MESSAGES/django.mo,sha256=b6y542k7Nq5UxezQr9fZzciSW4s46wYqTwL7B-suGgg,27098 +django/conf/locale/de/LC_MESSAGES/django.po,sha256=2QIe6vGtkh8a-L0nY_sL_wO_nBJ8-MgEuylz0hPPpfs,29126 +django/conf/locale/de_CH/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/de_CH/formats.py,sha256=a6uQQxZrtRAd_8GesmMEjWa-quvjBq3gJ5Ka17sy1yM,1377 +django/conf/locale/dsb/LC_MESSAGES/django.mo,sha256=dU5WKb8hS__Iy-H5Q1HeLgNK_LyZ96KOAOj_2s0E1eI,28362 +django/conf/locale/dsb/LC_MESSAGES/django.po,sha256=YE4oOqyXRuHtqc0NuOP8544aUG4GjRVZXGFDU7BJtBU,30549 +django/conf/locale/el/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/el/formats.py,sha256=0WF_ISbYSN0NtPuOk1sFsYITCPb3IG2jEaAxVSXLaqU,1385 +django/conf/locale/el/LC_MESSAGES/django.mo,sha256=qjPNmi81vdMnfgpvNVjv6QI2CslBIlMq9dKKaT17D3k,32036 +django/conf/locale/el/LC_MESSAGES/django.po,sha256=AiuSDxNIfaeItrzgk46v88hfwdEqb62r6YuTy4FBvBc,35102 +django/conf/locale/en/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/en/formats.py,sha256=HImytl2xU0ui_bdhmp6GZWLqfHIRf_1iidtajlfgh7g,1748 +django/conf/locale/en/LC_MESSAGES/django.mo,sha256=mVpSj1AoAdDdW3zPZIg5ZDsDbkSUQUMACg_BbWHGFig,356 +django/conf/locale/en/LC_MESSAGES/django.po,sha256=WROjQo_CcfZJGOtsH-Ep0CTxXdMWYrzNhD9IXMcoa30,28066 +django/conf/locale/en_AU/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/en_AU/formats.py,sha256=TnVSM6iUeAMqyfDNLnjGKwBiziVA7gwvokERm549Zzw,2050 +django/conf/locale/en_AU/LC_MESSAGES/django.mo,sha256=vx8-wkZxPq-WseGghwXuLAK5MdDsRScKnrgBATVarwc,16288 +django/conf/locale/en_AU/LC_MESSAGES/django.po,sha256=-9v7S5GrwT9045EePAWwUIqtXmOo_9W9dRQ6kFsCBmQ,23221 +django/conf/locale/en_GB/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/en_GB/formats.py,sha256=wp-VCJ2IY5nEjQSejomReMG2YyE_6ra4hEiSbYFt6yI,2050 +django/conf/locale/en_GB/LC_MESSAGES/django.mo,sha256=whAV7H3YTMcdt-gFyKY5naykTaV19x1gZoO8SJh2_TI,13133 +django/conf/locale/en_GB/LC_MESSAGES/django.po,sha256=vpqOmBh0ccf7P5-lcwFgxUhCJw35BWi39aALjmEa5nY,22060 +django/conf/locale/eo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/eo/formats.py,sha256=rNeBMpv6p-eJSzdZvTyGuDDDIm3xY7FKsEpeyFZ05p0,2268 +django/conf/locale/eo/LC_MESSAGES/django.mo,sha256=_69wzsjZ_TVeVNnQh2fqf2TTaWhtWffOpJGpnhrpXlc,23163 +django/conf/locale/eo/LC_MESSAGES/django.po,sha256=Q0lnN6zJ1dzXYrUCKEUqW4sIq3FTKw3yhtsQOb0YZ5c,26628 +django/conf/locale/es/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/es/formats.py,sha256=xks_4TjYTSGyz9cIYaE8OM3wbueP3ooM2QTsqNPOMF8,947 +django/conf/locale/es/LC_MESSAGES/django.mo,sha256=6Ky02Z4XSO36xG1qVcJ1e8Pi44EM6xGGbkzoOyozzS8,26351 +django/conf/locale/es/LC_MESSAGES/django.po,sha256=aNH_N2BZmk8ysiPgD_AQcPPoZ7npDsbiFVPITX8UDfg,29080 +django/conf/locale/es_AR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/es_AR/formats.py,sha256=vhHFN4lkzOQARRXhgt5s8M7ITTLZMMLVwbjby-Y_UEk,933 +django/conf/locale/es_AR/LC_MESSAGES/django.mo,sha256=3DhKGVuSoZFkpi0ikLShRAppMfpHdJDwdpJGRVhsB8Q,26793 +django/conf/locale/es_AR/LC_MESSAGES/django.po,sha256=gwW4R0-DWtORr2sB_0sE5dvPactzxOltwh1bdmNtWi0,28697 +django/conf/locale/es_CO/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/es_CO/formats.py,sha256=kvTsKSaK7oDWK6a-SeO3V3e__64SjtDBMWoq0ouVDJ4,700 +django/conf/locale/es_CO/LC_MESSAGES/django.mo,sha256=bXSa4kJtVu9xeQOFgP7RTfirJgEynWk4R32KSKjEezM,22791 +django/conf/locale/es_CO/LC_MESSAGES/django.po,sha256=8X_pdt0Amtvbw3AZUE_fKMy20ItYR-zS1caqnHxKjIE,26533 +django/conf/locale/es_MX/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/es_MX/formats.py,sha256=vrMMOSU8lh48jeVc1y69jdgSSI-AFLXp5-UbmH7zT0w,824 +django/conf/locale/es_MX/LC_MESSAGES/django.mo,sha256=0WYdCPgyC0XpF8to_bbyw__IRA5LGj8izt8DoCH1m6I,15095 +django/conf/locale/es_MX/LC_MESSAGES/django.po,sha256=rwJvZGP-6uQX1bvQSW4pVE4y4dfriVZOCfkWRzC9QBI,23042 +django/conf/locale/es_NI/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/es_NI/formats.py,sha256=QMfHoEWcpR_8yLaE66w5UjmPjtgTAU7Yli8JHgSxGRI,740 +django/conf/locale/es_PR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/es_PR/formats.py,sha256=mYKWumkfGElGDL92G0nO_loBoSOOFKs0ktsI3--nlLQ,671 +django/conf/locale/es_VE/LC_MESSAGES/django.mo,sha256=93zneQv56yHv9DfaIJ0cIv8wBk_E8RCjUgAZYHgfdYc,23797 +django/conf/locale/es_VE/LC_MESSAGES/django.po,sha256=m5bxw3vZNZwDNt5riWNjAqzgYFsMS2PM124ek3JALus,27070 +django/conf/locale/et/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/et/formats.py,sha256=2V0pYSzXqv1cbkYAAQnk_3J8dynoX0Lma6J6M3bLnBg,705 +django/conf/locale/et/LC_MESSAGES/django.mo,sha256=-cUSFc8kAJ3I70QPVeys0XZ_9YsDHQRj0H7IltFBiAw,23987 +django/conf/locale/et/LC_MESSAGES/django.po,sha256=GA_0u-rXtGmH3K6kMHi_HsZec3IYH61nuQlKoVuIyAQ,27017 +django/conf/locale/eu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/eu/formats.py,sha256=8dIjaFxQlsd79KO-kHFNgt-vyYqrx3K9_OJf_NMIYEM,747 +django/conf/locale/eu/LC_MESSAGES/django.mo,sha256=l_3VH9HqLql5QuzpmLe5FR7Ky5zCV0B-WAlqzC04K_Q,25947 +django/conf/locale/eu/LC_MESSAGES/django.po,sha256=5CCDd1k-WpE5LAnl5GAkZUMcqVw0D7qFvlCDZvVtViQ,28143 +django/conf/locale/fa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/fa/formats.py,sha256=sZyCeIQAo6HCtKr5t6W6y8Ll_Y5Yh0zXuy9qz5CaUz8,720 +django/conf/locale/fa/LC_MESSAGES/django.mo,sha256=q4Eww63ggp2Zj0Ski_GCnnURIUu9_Y6EofPfpw6lDM8,26023 +django/conf/locale/fa/LC_MESSAGES/django.po,sha256=BU_qdBlidEoBDUJRoBgzO85HF90s5ehfWLgJEpwC1Pc,29571 +django/conf/locale/fi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/fi/formats.py,sha256=bZW36V91AaMAp_xJURr2FWfEFGUnts7MBE3euHF8De0,1323 +django/conf/locale/fi/LC_MESSAGES/django.mo,sha256=5b6NAxHFOuETT9c5_XoLhy-q4bgubXo1HLpY_rYZ-08,23713 +django/conf/locale/fi/LC_MESSAGES/django.po,sha256=hdp0Z724jce_5FPmczkqnZ7mBVSt9Efaa8ldEfynNOs,27016 +django/conf/locale/fr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/fr/formats.py,sha256=S3BK2FbOdZdUUsPp8IHMb4GpDm_ctIIE1z4ZX3L7F1I,1387 +django/conf/locale/fr/LC_MESSAGES/django.mo,sha256=x_IT_zrxvWvvPvii4RI21VR-GqUodZRKad00NnOhOKw,27235 +django/conf/locale/fr/LC_MESSAGES/django.po,sha256=AI2wbCH2n1HKqnD5x4I1YBQqCoGTZQRG4MtZ8o-YSD8,29318 +django/conf/locale/fy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/fy/formats.py,sha256=-wHp-HFUatmTEgGiQ7ekCMFMB8jpAQD4UC4mmhjRTL8,656 +django/conf/locale/fy/LC_MESSAGES/django.mo,sha256=N13eBeS5pewXpx3yIAwiqB8ISjw-J2ku99dncOnz_lY,2525 +django/conf/locale/fy/LC_MESSAGES/django.po,sha256=GyR8MjHB6fS3NuxDCsNegt9rZPyst5pMqs0i0WWIXUM,19283 +django/conf/locale/ga/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/ga/formats.py,sha256=o1K6fb8AwJ5iHqSxWirH_qLhFp54vRmQ0cUDeEQJFZg,680 +django/conf/locale/ga/LC_MESSAGES/django.mo,sha256=Iw1dcW6tAoIFBgjFAWyfXH7lXz__fRrS7cktYtcQ_IM,15097 +django/conf/locale/ga/LC_MESSAGES/django.po,sha256=Adp1JYadvckm_A4nlXZGM-hPAz_8bcdNw08BlEQNorQ,24000 +django/conf/locale/gd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/gd/formats.py,sha256=4H_tXzwJIVIn9uxvszCWP9clNzY1dtCA9NC42JhvnBs,713 +django/conf/locale/gd/LC_MESSAGES/django.mo,sha256=CZ8l9P68RnGriRwFwq9zYZKAtomBej5OPw2hxSvMe9A,29409 +django/conf/locale/gd/LC_MESSAGES/django.po,sha256=V_jU770O0WkLt0eTOhlamk6seUSrVF5m2dnmN9o2NNs,31733 +django/conf/locale/gl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/gl/formats.py,sha256=BIDA50C9zjxUG7c-yFrdhxs0ROEP9OtJGCmCJDVtMbQ,755 +django/conf/locale/gl/LC_MESSAGES/django.mo,sha256=sNVgEfEr_q6kth4MHJvBOZ34H-LkrkiFfjBsfmKA9fc,15342 +django/conf/locale/gl/LC_MESSAGES/django.po,sha256=6Zu_Oi6Xa7igkyjA8jp0BxvkLIYgguXnGFcRwPG3uO8,23283 +django/conf/locale/he/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/he/formats.py,sha256=XqXL6y_1InNsVBDVBUVsiN4dPSfanXc-5ZCh3c6HaiM,710 +django/conf/locale/he/LC_MESSAGES/django.mo,sha256=34i0neJ_XbU9-IbZtpSEd0fLZaZWlKsiNifALt6TuUo,28516 +django/conf/locale/he/LC_MESSAGES/django.po,sha256=wEQFKastjSqb-7DCXk7JMET2VVnLlUo4bxH6ldDjmSc,30310 +django/conf/locale/hi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/hi/formats.py,sha256=y0O5F4C31wgJMXPdVrQvNqYKVyr8-Z1hf5o0N9P3i7M,682 +django/conf/locale/hi/LC_MESSAGES/django.mo,sha256=4v9ljgKHyBd4tqUr_5CBNS8rNtLsFERsFOK-zx8kYvY,19270 +django/conf/locale/hi/LC_MESSAGES/django.po,sha256=Ennlas9mqLL6pqYRXhEHK8OPyXNq9I0aKoizn0aeKLk,27774 +django/conf/locale/hr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/hr/formats.py,sha256=VYQw5JpFK4GKOB9LhVcUSLprU7_66QP1JBu2XWss4L0,2039 +django/conf/locale/hr/LC_MESSAGES/django.mo,sha256=Y5qAfjbubIQDJIbkJzw7tfzUsuIlEYUlsvGfvEYiFP8,24409 +django/conf/locale/hr/LC_MESSAGES/django.po,sha256=iOHjAFvvu8OiBeh2IukSFXEkL-Uqr_dDEKKCAlvGtjo,28207 +django/conf/locale/hsb/LC_MESSAGES/django.mo,sha256=KBjg59sQQa660xIws3jFnkidggEqrun697cEPFjBUXc,28113 +django/conf/locale/hsb/LC_MESSAGES/django.po,sha256=jPcsXLZq7Q8b1TOIGIrDiNPVxcIYkwoISfYLKZpedr8,30279 +django/conf/locale/hu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/hu/formats.py,sha256=WSlkhX-1FPj0NuP_a_XmlCADrJZIRZ-xGmDhJ7M5O8w,1050 +django/conf/locale/hu/LC_MESSAGES/django.mo,sha256=b_P30VSZRI-9QTc8AqTk6qucg_axzcLHGebh3sFTwFU,26971 +django/conf/locale/hu/LC_MESSAGES/django.po,sha256=TUAoYIGuZlX45dkxIu-Yo-drlhn0otTLwN7WQvIfgfo,29023 +django/conf/locale/ia/LC_MESSAGES/django.mo,sha256=uctHDWY1qKSlNlcdaEGswjWkPYy3BDJawUbAfEddk4Y,23125 +django/conf/locale/ia/LC_MESSAGES/django.po,sha256=ckopqh_kKLtaJC9upyGY4hh9NSkF-iHsZOm9sur4-A4,26641 +django/conf/locale/id/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/id/formats.py,sha256=uwSpqmGF6Pyy3cnYEgyNH5m6ttoXNC_pofpbjqoAO_I,2068 +django/conf/locale/id/LC_MESSAGES/django.mo,sha256=SuTCKPRarUZl4g7gFCsL834Y99UbzbWrVl06il9wwpA,23697 +django/conf/locale/id/LC_MESSAGES/django.po,sha256=i4RgdcAWsxMrZ90uf4d8Vx_2zhJTLoGe8azy3qpdsbw,26511 +django/conf/locale/io/LC_MESSAGES/django.mo,sha256=1PUSoRgjcrjc8OHIvkjAAh0xtSkSaafGZuO6SYkx5CY,14965 +django/conf/locale/io/LC_MESSAGES/django.po,sha256=aURK_SeTtqM8ko_kI_AM5jWyqKAb1iuqNvOKQ1GQ0SE,22892 +django/conf/locale/is/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/is/formats.py,sha256=-OxThHQAWwCVrfVLDAkstCQUfaAHpbJhRPQlqZO_wGo,686 +django/conf/locale/is/LC_MESSAGES/django.mo,sha256=AvZcNA6n03-Rmw-EfkKGyhoOVvL3gankv6ejIp36-x8,24147 +django/conf/locale/is/LC_MESSAGES/django.po,sha256=kCl05ojMd_bNrU8pY-c-MynWqwvAX1EGjaHZ3_KXtlg,27444 +django/conf/locale/it/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/it/formats.py,sha256=coYr_ErN7oALN5ciqpRQcnb-xr3DFxjFpUSvaaoRhS8,2012 +django/conf/locale/it/LC_MESSAGES/django.mo,sha256=bxZBTLEDM9eaLX0rWzkFZNxpjbj14JH5ffm-SpYBPnA,26205 +django/conf/locale/it/LC_MESSAGES/django.po,sha256=9tNPsF-8oMThT1PHqUWloj6jVtXoDlCdQqsQnKHpGjc,28559 +django/conf/locale/ja/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/ja/formats.py,sha256=O84swETmvV3yxAifRl5iTADyg-ivY5rcXvtQz2B4rrI,727 +django/conf/locale/ja/LC_MESSAGES/django.mo,sha256=75ugNx1DM89An10tR1tDqFZ8YvTojekPRs_HjKUnuus,28164 +django/conf/locale/ja/LC_MESSAGES/django.po,sha256=gAKbzPUxu2LaYCfy0BA-KgcBUzCbVG1Hr3g0cPilVeI,30184 +django/conf/locale/ka/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/ka/formats.py,sha256=dxWVYJ3XpryXgl8Kzp1he0AbIMNtvJStaGmmdFJim-E,2113 +django/conf/locale/ka/LC_MESSAGES/django.mo,sha256=Vj2D4EU6RlcW3eQWucpRc99TSrT0xWMYFgPLGVbVRLM,24566 +django/conf/locale/ka/LC_MESSAGES/django.po,sha256=GcUnKM13CyKi8cgO_AhLaOt3ydZo54UC6U4pThjIMWg,30933 +django/conf/locale/kab/LC_MESSAGES/django.mo,sha256=Y1q3K0U7gFl_0wxVd9BnpaUK8NjBajk_T8lFgyDC_ks,7200 +django/conf/locale/kab/LC_MESSAGES/django.po,sha256=iyxoGXMzvIyj3FedGLNrDDQqv4qRunq_2BZ8_FCOcoY,19730 +django/conf/locale/kk/LC_MESSAGES/django.mo,sha256=qfkw2mX6miyS4HSrpgmIKbwMbqYPKht5RPpS5rDPJWM,13954 +django/conf/locale/kk/LC_MESSAGES/django.po,sha256=8BBGZTtUavPWyQvDf5QcF6zDA3t0O6UdjcNf0uH_TX4,23661 +django/conf/locale/km/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/km/formats.py,sha256=vNqsdfFBQTY5yKjEvCXlZWurKM1WmBH0FbFnpIVQIPY,748 +django/conf/locale/km/LC_MESSAGES/django.mo,sha256=IkYee7gjLxKUUaJ1xrWlm-mGFy-1Q5YQTfOcKaqsdG8,7284 +django/conf/locale/km/LC_MESSAGES/django.po,sha256=BUyjSCQne8sySq1dLsqmKCzCJMja562ocRYcNiZOKPk,21508 +django/conf/locale/kn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/kn/formats.py,sha256=LwKQw1gobRYRnusHe3ZI2pbCtA1N1GfkCK03LcKFpcg,678 +django/conf/locale/kn/LC_MESSAGES/django.mo,sha256=Q0Wq7NKSYt5JqDWuV3gi4EPtqe-p3S9dJxJu8qn8NmE,18655 +django/conf/locale/kn/LC_MESSAGES/django.po,sha256=unXArg6NUEnyrEP8TYdeVK8CBtFzPJkianlfPgmzUzE,28177 +django/conf/locale/ko/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/ko/formats.py,sha256=5-5Ht40mgk0covYgNoqZNi0yX1ldjC5VIGsZLb6CF9E,2253 +django/conf/locale/ko/LC_MESSAGES/django.mo,sha256=yhYOQLfUmkFTz9ZEwOUY_EeH2fT9_HaNdK3hI1J9BbY,26594 +django/conf/locale/ko/LC_MESSAGES/django.po,sha256=vJTX4e9Didb1PXWT5Rd7Ul8D2lYSTZZepw__qxXGunU,28873 +django/conf/locale/lb/LC_MESSAGES/django.mo,sha256=3JKBA-zIROxVEJFv8eoUKrVoRFjbY9bBk16jQF7Wp3s,8069 +django/conf/locale/lb/LC_MESSAGES/django.po,sha256=v1_uBQpRI8fT88whqpah66AmaJG_uIX65_sRZEN2LPg,20131 +django/conf/locale/lt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/lt/formats.py,sha256=ZLmKWFgKwrHeDeTO6fPyRLjgxkU3QCK3f0LxnYhLvqg,1763 +django/conf/locale/lt/LC_MESSAGES/django.mo,sha256=vh0vsbuEwlfh4QSa64_ufOGZyjkb3VuPRhhTNKz8lQE,27392 +django/conf/locale/lt/LC_MESSAGES/django.po,sha256=D_3yf43LDN_Xd_tF66iJjNF1qW9FPFp8f9KGn0VQJ_8,29731 +django/conf/locale/lv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/lv/formats.py,sha256=Q42-XZ5aWtfoKhKuf07148Ir6-UrjaWNNeA8erBtlCE,1839 +django/conf/locale/lv/LC_MESSAGES/django.mo,sha256=79KKe_LrjEN8JS1upbgSp6N5852PdGkdJy6mhhOSKII,27033 +django/conf/locale/lv/LC_MESSAGES/django.po,sha256=aCdYvg739kJRlh0FE5jJGDaLCrQ_tsgLzWgVn0dPMMM,29210 +django/conf/locale/mk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/mk/formats.py,sha256=DJVFqbqW7dq6GPzh_MSRQvQAicBtVUwRHX8RSLgqpFg,1675 +django/conf/locale/mk/LC_MESSAGES/django.mo,sha256=GqcYWwCPmQZeBa9sxroK0LQYqlpwE9CPc088bpmv2Kg,29431 +django/conf/locale/mk/LC_MESSAGES/django.po,sha256=VZT-VhVOlcQaJKau3giyN24XA4GG1aLR6U9e-dDmJWQ,32812 +django/conf/locale/ml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/ml/formats.py,sha256=HImytl2xU0ui_bdhmp6GZWLqfHIRf_1iidtajlfgh7g,1748 +django/conf/locale/ml/LC_MESSAGES/django.mo,sha256=UcQSpkAl4anGotopGvF5ddOhz0JlnR4SL-yDIiJAY_U,26733 +django/conf/locale/ml/LC_MESSAGES/django.po,sha256=aQeFRGiFB7vke7NuGuO7rZ2GuL94rZ_tqpfY-_U38a8,33211 +django/conf/locale/mn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/mn/formats.py,sha256=EbTyiGTOXJdZxUwleItvk_CwK5MMl9R0pGniEUL-7HY,674 +django/conf/locale/mn/LC_MESSAGES/django.mo,sha256=alhmXO_Eqc8PFKh3lN1FW7VR5iiGShbRK76yQOqbzr0,28042 +django/conf/locale/mn/LC_MESSAGES/django.po,sha256=-XgvjCXIeFr9Rm9EdwyBJkMCWgzwcmshjTdUDZr0xao,31351 +django/conf/locale/mr/LC_MESSAGES/django.mo,sha256=Jy_VbHVKhgNj9MSmdLv3ouVYXYjJ_JFTn8_zmYoYcyg,1652 +django/conf/locale/mr/LC_MESSAGES/django.po,sha256=yyPm1I1uqXG8VkS6yTrwECvi6p07RRep5h9iXx_v7eQ,18910 +django/conf/locale/my/LC_MESSAGES/django.mo,sha256=5pYLrTOipARNLlpG5dp0VZYJUQNqdt0vK2blo1x6keg,2650 +django/conf/locale/my/LC_MESSAGES/django.po,sha256=IVACCaTwYgAANqlcrthvSLFK9zvlOLhJTFRWCRBm11U,19193 +django/conf/locale/nb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/nb/formats.py,sha256=y7XWPhuOv7QkDBvx4qkwehmqRpqwLzn75FWn-25mvcc,1699 +django/conf/locale/nb/LC_MESSAGES/django.mo,sha256=49Oyc61QoCTz-VU5mH5ifESqWtLI39edLfvh_9nlFyU,25567 +django/conf/locale/nb/LC_MESSAGES/django.po,sha256=Fx88KqyJjJOdDlv0zEvj8bhDN9OQScnQfpOVl4QK5UE,27704 +django/conf/locale/ne/LC_MESSAGES/django.mo,sha256=goDEutWg6y8KqC20fqxg2qpTAYRYx5CPSNLw25IsVA0,27921 +django/conf/locale/ne/LC_MESSAGES/django.po,sha256=GeDsYbeil3nlhB1G1JTfSPch502XZHGS2JZjtxDAuzs,32888 +django/conf/locale/nl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/nl/formats.py,sha256=zpsypiDhFuZzGidyQYWPoeMwrL4cEsGqdZGTu4BdaAs,4405 +django/conf/locale/nl/LC_MESSAGES/django.mo,sha256=GjOycm_b8DrWGSq-_OWTMoRuhxOcW_PnxdmOc7k17oY,23480 +django/conf/locale/nl/LC_MESSAGES/django.po,sha256=n7_lU4fXpjbKmt5_0JN33FW2IXjQyWL0Ybwl2E-FzPM,27252 +django/conf/locale/nn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/nn/formats.py,sha256=TUcKUtEJ_kmvbW_vgHU64jsFkyPYBorssU_HEUK8hrw,1743 +django/conf/locale/nn/LC_MESSAGES/django.mo,sha256=yfZvfqfpLCx3lV_LMd3Rw0Y4TTUvJQznZGwmf46nhnY,14256 +django/conf/locale/nn/LC_MESSAGES/django.po,sha256=JguzOlZ92jdHfp1eV3U5zKyxTaphpSjGSxXAIxSEspA,22522 +django/conf/locale/os/LC_MESSAGES/django.mo,sha256=GouuR0wncfpOVJurgDeTkrdKvzaH1iZxr-4IsXVEd6Q,19250 +django/conf/locale/os/LC_MESSAGES/django.po,sha256=DFnTZKUg_hGp2Pu8lJ0_vfZONAUl8JpK8UOhQtWFWR8,26392 +django/conf/locale/pa/LC_MESSAGES/django.mo,sha256=MZHSQcl584TTogQpYXzE1o_AqfZlwpvkb1CeXksVseI,11501 +django/conf/locale/pa/LC_MESSAGES/django.po,sha256=-mzScJHrkxIMp4tbbd8NA1EG6V2_pail2PYhaJ8FWxU,22591 +django/conf/locale/pl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/pl/formats.py,sha256=l_l0TfQ4pXGC3HmhhzKyYagS6i9CJTaOcUZvT4zU4PY,1080 +django/conf/locale/pl/LC_MESSAGES/django.mo,sha256=zBDy55ZDVr8J1T-juKv4jsCCO5BvK1I57YzbBuQA_qY,28447 +django/conf/locale/pl/LC_MESSAGES/django.po,sha256=Ipa60phKqYDjypo_M1PKUhiGi9E4kbyPn6cc4hpRcE0,31667 +django/conf/locale/pt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/pt/formats.py,sha256=VULz9oqB_gAJKfl6vsblpUzHwX3bYJXC4STqRcObJLg,1650 +django/conf/locale/pt/LC_MESSAGES/django.mo,sha256=sn4p2gmHihkh2p30YOdcmuQbYomVgD8igFWR-ptN-78,26222 +django/conf/locale/pt/LC_MESSAGES/django.po,sha256=9n3qfFngx6h2a69O91et9c97peQL6DeV7QhGT5J7mrY,28362 +django/conf/locale/pt_BR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/pt_BR/formats.py,sha256=qRqGFjJ1lXCpRxj-UZ8Rxe4BKPe66ZN2ZZ6KblVTBig,1367 +django/conf/locale/pt_BR/LC_MESSAGES/django.mo,sha256=l-gLW0mKPtwMhWEFdF5SU6_OfdBsmjHXpspCn1X0ewg,25639 +django/conf/locale/pt_BR/LC_MESSAGES/django.po,sha256=YcLVLWR9juH0uRXsSqGCzUZm_RqQ7A31juOwQL_Cu0w,28689 +django/conf/locale/ro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/ro/formats.py,sha256=3Ej_afExYIcmvjTEOtSxjVSZHU9DWaaS0Wiudra4Ocs,706 +django/conf/locale/ro/LC_MESSAGES/django.mo,sha256=s5dQy0ku0G5agJ9zZxldGkLou6BKL65j4h7NaXHHIS4,24423 +django/conf/locale/ro/LC_MESSAGES/django.po,sha256=7k9VFSOwqnpenN8h78diHkGHvFhnP2uPqiZJrxEtmeY,28111 +django/conf/locale/ru/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/ru/formats.py,sha256=xH12699iN_1SB_SeBILcMZNTS51PqVzZmNfoTO_9K5A,1200 +django/conf/locale/ru/LC_MESSAGES/django.mo,sha256=Qim_pvrCtbMmAn0rskvOmQDpxSbOoJ3EdYstonJCIF0,36378 +django/conf/locale/ru/LC_MESSAGES/django.po,sha256=RWFXm64RZIelVHsHvcBwNQ0l4Dxz4kOEgk9M6wzSRVs,39215 +django/conf/locale/sk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/sk/formats.py,sha256=ptsIRV-fDQlK4vPtzjwjbdY8mbcnPYYvjZaUOkK2C98,1106 +django/conf/locale/sk/LC_MESSAGES/django.mo,sha256=NNB1m2vlnW2A3eyMWxBy-QZn2HXLbha-N3zbsYtWbqM,26984 +django/conf/locale/sk/LC_MESSAGES/django.po,sha256=CPBvqkeL69Xh-tvGVoZuFJXgC6Hey6o1Sigp9Dcdl6U,29108 +django/conf/locale/sl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/sl/formats.py,sha256=HZs6dDurYXA8v1nX9vq5Q4q1wV11t9lanI-7xDAGWcw,2051 +django/conf/locale/sl/LC_MESSAGES/django.mo,sha256=XZqEBvorAV1sX6f5bN98wkhn2flP-Bz4vJ7NdF1K61w,27117 +django/conf/locale/sl/LC_MESSAGES/django.po,sha256=CtrUJcbJrSin_NuwYV2cAzyP3D756a9ZcEVL0IgiVzM,29800 +django/conf/locale/sq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/sq/formats.py,sha256=z_d_y6d46eL14p3WPaFxzB2zfF_YJNF1V4SF612VFJE,686 +django/conf/locale/sq/LC_MESSAGES/django.mo,sha256=QqpQtbQQISl4isaXmsVkMJW2qa75i6fztcsxY4l8np4,26370 +django/conf/locale/sq/LC_MESSAGES/django.po,sha256=fcud0pDHA_9X0EC6dtVpggH5zxs9RKlCD0tQZAINOgA,28477 +django/conf/locale/sr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/sr/formats.py,sha256=hfwSNM9kkDAtDPkSas2QWX1qHIt7GsBgmQ80TUvBTsM,1944 +django/conf/locale/sr/LC_MESSAGES/django.mo,sha256=1eWU2_oPwrnZ0gAgfapAsYVhI14xc2f8GrsZ7l_cvRc,32008 +django/conf/locale/sr/LC_MESSAGES/django.po,sha256=BZjS3ARe8XKNkcgh-jrRuJx7rJrhYF97-l6-ATf2eiU,34276 +django/conf/locale/sr_Latn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/sr_Latn/formats.py,sha256=hfwSNM9kkDAtDPkSas2QWX1qHIt7GsBgmQ80TUvBTsM,1944 +django/conf/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=ZPxsx5ss8kBzJ3uJi3kht-_y2a2nsELUZ3Q3W4__14c,13331 +django/conf/locale/sr_Latn/LC_MESSAGES/django.po,sha256=WsytYWCapT0sgjh_-JVnHRP90Ji0s0gLjHeyzdKuljw,22535 +django/conf/locale/sv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/sv/formats.py,sha256=FkRAuHHGvheCTO5U-G5DZ8vqCF2pQ6AZ2cpKkFM8fMM,1502 +django/conf/locale/sv/LC_MESSAGES/django.mo,sha256=hPkakE_AE1GVMnSagAL1XXHWYn-PgG3-NSBfX2rDwDw,22952 +django/conf/locale/sv/LC_MESSAGES/django.po,sha256=KFSWF32m7oMpu8DfD3SJGlfIpabM3xmCUGuC4I1zHbk,26841 +django/conf/locale/sw/LC_MESSAGES/django.mo,sha256=ZHWikD3fPZeBsrQ7qg9iHfzEt5DoQU1rBXvMd5Wzdtk,14903 +django/conf/locale/sw/LC_MESSAGES/django.po,sha256=9BcGhrZMf5gJzw02YCt4QyUdQYVphHUb13oHKy9eTEU,22800 +django/conf/locale/ta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/ta/formats.py,sha256=gyLOpk7u1e7LNBoQDHLs4kIw04y7vmGoG9v1aq7NjmE,680 +django/conf/locale/ta/LC_MESSAGES/django.mo,sha256=UsBQWhTd5y0OBsH7Zr8cVX7NV7P6waHpc_0RcpWQPH0,7155 +django/conf/locale/ta/LC_MESSAGES/django.po,sha256=EG-DZKUybRWuFEQ8jHIf171sdnZzpjnbaDXJQuffRVo,21547 +django/conf/locale/te/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/te/formats.py,sha256=a133NPw7ry2WYGs7b3X7PGBC-GHUtN2S5zcjLp9CTJw,678 +django/conf/locale/te/LC_MESSAGES/django.mo,sha256=h0T8JGVo0EzGXSbwDVWulpVs0PLJM0gfro_QTk5SHEY,13321 +django/conf/locale/te/LC_MESSAGES/django.po,sha256=G0x90aGtPjtouO99ZQMN9Nf-YW83d_qxMSc-7CrwhX4,24597 +django/conf/locale/th/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/th/formats.py,sha256=ykqZkZXnqRp0aROoD2fBC3InCIHComUNELfIRL1RBAA,1070 +django/conf/locale/th/LC_MESSAGES/django.mo,sha256=6EW5yaTtSlrZts7qo4LL5rgx1qQcSx7h2v6R-YzA0sw,19036 +django/conf/locale/th/LC_MESSAGES/django.po,sha256=37RzmfwXH2sn5LxHSCjDCS4ICdZtDJ7Oe1yJ2FwtXeI,27292 +django/conf/locale/tr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/tr/formats.py,sha256=Z6ZDt8-hgzX_NZbvc_npFYSGw6C_j7OKcV4ZQHBUyuc,1074 +django/conf/locale/tr/LC_MESSAGES/django.mo,sha256=phj8jyZwfik0vifndLSCQpPoeUxchEmIt2Uz5nK4bKU,26680 +django/conf/locale/tr/LC_MESSAGES/django.po,sha256=ZZQdmqGVOC5y2uZV_ZslYOZYDbQK50cAA2KZx-rEKxw,28903 +django/conf/locale/tt/LC_MESSAGES/django.mo,sha256=2YqPqclnPPiORixIWcuw2Ne-w_LzYjLsV3o1Ye1AQwo,15352 +django/conf/locale/tt/LC_MESSAGES/django.po,sha256=o4_JxmlTXHAEoSx6vHxiKiZP1va_aRT5kFxIjXZcjSI,24745 +django/conf/locale/udm/LC_MESSAGES/django.mo,sha256=eeu0nDatoybuYCF6z3hXG4XA1rs6FgX2x9d8r8cYc4Q,13564 +django/conf/locale/udm/LC_MESSAGES/django.po,sha256=61Shy8V_t2ChpP-ZehJ82iauo12bKnuVnNRkWg1844k,22914 +django/conf/locale/uk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/uk/formats.py,sha256=FJHWiQfZjPDWyfTWwQXAKBjp1XCtFvYb-obqalBPFTA,1359 +django/conf/locale/uk/LC_MESSAGES/django.mo,sha256=H5AFM_sw3QYK6XdcwyPOYwhL6VFRo4WnlCHmP6lDlyU,31645 +django/conf/locale/uk/LC_MESSAGES/django.po,sha256=LT92TVaJ8nR9lxyHtXfcZHZihoWh45uypZnhuSMlsU8,35111 +django/conf/locale/ur/LC_MESSAGES/django.mo,sha256=TdYByXk7rMGxKyhaBpPX2tH8SaNJpRZKMYdiXDTGiOg,12566 +django/conf/locale/ur/LC_MESSAGES/django.po,sha256=HE5mzhoMdTYdTih4smcZV4N7BMjwiC7jE9urU1D1c8A,23108 +django/conf/locale/vi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/vi/formats.py,sha256=8KCSVtk3N4Wsrlx6hGDj8PbVV6sYshglfyLtpCbFrxQ,760 +django/conf/locale/vi/LC_MESSAGES/django.mo,sha256=MDt-w99IwQWBwpqjtPagMXe6UlMGacU2w4PFw1vxYNw,19452 +django/conf/locale/vi/LC_MESSAGES/django.po,sha256=BJ50rmwgIa1K52YOcQ9AidcKx1h_Edw5rS-TDylAqUw,25483 +django/conf/locale/zh_Hans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/zh_Hans/formats.py,sha256=I8nkL38iWW2p8eRlPy3mK85btInMIK9mxILxmBjm8ic,1743 +django/conf/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=kMTs432GsXu7-0jFPUjugLHl2pg7or0URuKgN-K4bmA,22528 +django/conf/locale/zh_Hans/LC_MESSAGES/django.po,sha256=xGCO2-YAtsRpiOamZ62SwzMpwYOClcXijNUA9ppqR7Y,25991 +django/conf/locale/zh_Hant/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/locale/zh_Hant/formats.py,sha256=I8nkL38iWW2p8eRlPy3mK85btInMIK9mxILxmBjm8ic,1743 +django/conf/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=SUuSJPPbvgREC74P17DcFrbJBNHob7WR9c-j95TxnJo,22354 +django/conf/locale/zh_Hant/LC_MESSAGES/django.po,sha256=u7LiD_jsKJdv1KoTD1rTyJhasKaIkODIF8dkdM1gvrw,25554 +django/conf/project_template/manage.py-tpl,sha256=L9sKzlpvlJtysHenCAVoERXvXFvUn_FtfNApKHC4PQM,550 +django/conf/project_template/project_name/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/conf/project_template/project_name/settings.py-tpl,sha256=4JwYHW6nbDUufEkQOQjOY08slnLMETQAJ9dqr4PjsmU,3210 +django/conf/project_template/project_name/urls.py-tpl,sha256=vrokVPIRgYajr3Osw2_D1gCndrJ-waGU3tkpnzhWync,775 +django/conf/project_template/project_name/wsgi.py-tpl,sha256=YlvOJDVlRT5GdECwWEpeK8i6gRsliG3sLQog8cYPsC8,428 +django/conf/urls/__init__.py,sha256=Lp9Zc17tRy3bVwULxq1_8qBloXbgmqiQiIzzbqkqDSk,402 +django/conf/urls/i18n.py,sha256=TG_09WedGtcOhijJtDxxcQkcOU15Dikq0NkLGVvwvCI,1184 +django/conf/urls/static.py,sha256=3Hr170gzVpmIOsHUQOpgG16LE6nG_U5L8kSoSiNKeFQ,844 +django/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/admin/__init__.py,sha256=K5IZ6J5ujshspna6ubTvpFfTBjU7p8EhsbvW6G7fMwY,1243 +django/contrib/admin/actions.py,sha256=MFwZgt4qFQvwrm_AP2FIg3cGxuIlEfpYVE4T9x2tbL0,3207 +django/contrib/admin/apps.py,sha256=IKXRyRFIiWUmwm0-wigmpAE-iEHH_XqNl6FRSmEZfXQ,708 +django/contrib/admin/checks.py,sha256=YQgseIL_rhM8HF6QjKyJY1j1peMXHVybePHTR82aA1I,41793 +django/contrib/admin/decorators.py,sha256=jQS6FQ2PxaqGYTYNa4jdx-qSVPV9Uf5bRhbC9PF0BMM,969 +django/contrib/admin/exceptions.py,sha256=lWAupa8HTBROgZbDeYS1n_vOl_85dcmPhDwz0-Ke1ug,331 +django/contrib/admin/filters.py,sha256=3iKFsSTchtIsz4Zo9vtcs-voWwxTG1YjRo_Pc2nk4BQ,17821 +django/contrib/admin/forms.py,sha256=Ft6mb1iOIb3zXBRakRipI6TB_7d6D_mSrGQ9olj7k2k,934 +django/contrib/admin/helpers.py,sha256=ORpSrYvcLw8MOAfN_Q3rE0dcP3k6R8Op6XSbLVuOONc,14309 +django/contrib/admin/models.py,sha256=ALiXbQuBrWgN8ZKFFNK0JWV9YGLzmzuFh6GUhoIQSIw,5454 +django/contrib/admin/options.py,sha256=WWINyw6GU-YJVMc0zD1kko06D-gsl9j2uru6G_dvKQQ,83849 +django/contrib/admin/sites.py,sha256=SD4gdJ3Qa5OfJ0xC1VtykAbID40DokIduHbD7-_7kmk,20011 +django/contrib/admin/tests.py,sha256=Y7_BrWS4T7vMc7lW5ba5I4uBlEC5OgAaslLb_90NYNM,7307 +django/contrib/admin/utils.py,sha256=-ljhmigMpLkEJ-qFXND5Eemw3e4u6Ad0TvIKmuMdsQo,18493 +django/contrib/admin/widgets.py,sha256=ryoY02Z626J_I7LANRcJl3LJ2q75LmozZWK3CGeBjGY,17633 +django/contrib/admin/locale/af/LC_MESSAGES/django.mo,sha256=sbS-86l1kVvdcIV7n0xHqcy6iL14Ktnym0CifEkrEd4,9372 +django/contrib/admin/locale/af/LC_MESSAGES/django.po,sha256=vNkvN5lbhg5iRk42-5rlR0zqQpsraIXXsc7Ke9kO0z0,14280 +django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo,sha256=GDKkp7mc4LaMwT_Eli1rPLCwo75R4htvXfyCLWRvJdw,1158 +django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po,sha256=VM1QB16Nr0Ng2Wyp4o6ZlgthbWma7moHerugSzA4SnA,3590 +django/contrib/admin/locale/am/LC_MESSAGES/django.mo,sha256=UOwMxYH1r5AEBpu-P9zxHazk3kwI4CtsPosGIYtl6Hs,8309 +django/contrib/admin/locale/am/LC_MESSAGES/django.po,sha256=NmsIZoBEQwyBIqbKjkwCJ2_iMHnMKB87atoT0iuNXrw,14651 +django/contrib/admin/locale/ar/LC_MESSAGES/django.mo,sha256=7E9CSjJJz57SEjyHsobheQ8LmEqqKFVvZKpMIoUbKYE,17849 +django/contrib/admin/locale/ar/LC_MESSAGES/django.po,sha256=F7dXAV4kbHcMYEXfC35sOCTvZvF5qKUcEbWkALp1X4c,19814 +django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.mo,sha256=gLwHSlr1xGvsbFO1S8mnqM-NVzCUQ75n-X1NCBeANe8,4959 +django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.po,sha256=1lgw43gz9MCvcujDQ4eGUvo8Qn5DE2fGvSC_qOs5bEs,6200 +django/contrib/admin/locale/ast/LC_MESSAGES/django.mo,sha256=3uffu2zPbQ1rExUsG_ambggq854Vy8HbullkCYdazA4,2476 +django/contrib/admin/locale/ast/LC_MESSAGES/django.po,sha256=wCWFh9viYUhTGOX0mW3fpN2z0kdE6b7IaA-A5zzb3Yo,11676 +django/contrib/admin/locale/ast/LC_MESSAGES/djangojs.mo,sha256=kiG-lzQidkXER5s_6POO1G91mcAv9VAkAXI25jdYBLE,2137 +django/contrib/admin/locale/ast/LC_MESSAGES/djangojs.po,sha256=s4s6aHocTlzGcFi0p7cFGTi3K8AgoPvFCv7-Hji6At0,4085 +django/contrib/admin/locale/az/LC_MESSAGES/django.mo,sha256=LOjKRPic0sZ08s6zz3X437dx2daSubEQjoInd1kqzwo,16510 +django/contrib/admin/locale/az/LC_MESSAGES/django.po,sha256=brvf3-52qjX9CYAi247YxqcTv8w-QFzUPbUPtCFoT8g,17812 +django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mo,sha256=lwMWU4eHd5TLqpkeebGktXq1cSsqzE-siTD_IcA3bZk,4621 +django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po,sha256=72nOuDSiU2fb_RgmJ_sNpVpTBSFX1oVydPm-QqD8AX0,5102 +django/contrib/admin/locale/be/LC_MESSAGES/django.mo,sha256=5CbgzJ_iVyPTxTpToPEhgVSSfh-EhyjsCK75ecbQtrE,20007 +django/contrib/admin/locale/be/LC_MESSAGES/django.po,sha256=kRmThfssQtP_dr4JX2U2o-9qwwicZiM7i9QT9eSjrx0,21277 +django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mo,sha256=kDqYyYbnP_oh-pw8kOJGGcFtx-MxI-UARlB5f53ow2w,5942 +django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po,sha256=GsjZtvw8_OQNTrNgyUgGfSZvAC1pg2sse8oILC3J6bs,6451 +django/contrib/admin/locale/bg/LC_MESSAGES/django.mo,sha256=iJzYciumvR_r42WmC3yjTdiWrQmS94p_x0gTWvV9lOc,20070 +django/contrib/admin/locale/bg/LC_MESSAGES/django.po,sha256=9ouezfohVViX6NFG57IFXTzcuMSvAafd6NKncMFJBds,21493 +django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.mo,sha256=TGNzP1smzgZmo5-s4VKD1E-nWTMtCSjp_hco1a0j4BQ,5565 +django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.po,sha256=5uiQqnTyz0R-1vJTHqY0opwnQhMfgPoB-PxOkGpxNwk,6016 +django/contrib/admin/locale/bn/LC_MESSAGES/django.mo,sha256=fKmzDwzLp0Qlv4bvWscf0evanPRAXwR04B6IeJ7wGSw,15247 +django/contrib/admin/locale/bn/LC_MESSAGES/django.po,sha256=-go1WtUozfqbnKlUQr-jNnvEXf98eIZjq-C8KjRJ6NA,19812 +django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.mo,sha256=t_OiMyPMsR2IdH65qfD9qvQfpWbwFueNuY72XSed2Io,2313 +django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.po,sha256=iFwEJi4k3ULklCq9eQNUhKVblivQPJIoC_6lbyEkotY,4576 +django/contrib/admin/locale/br/LC_MESSAGES/django.mo,sha256=y2EAyyZjxtXQg7R5xONVix9311e3HK77vYTldQOT-jA,4253 +django/contrib/admin/locale/br/LC_MESSAGES/django.po,sha256=iOq3m2j2dErBRmyMocQm31vI__5a56CoZNYa7Gn3n7w,12167 +django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo,sha256=R87byb_aioGPaUZX_0gtH7ZQ6sSKcu3YYTVepbExSzs,1366 +django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po,sha256=DfrcykHREmLpVQ9qLZEqIdAO9skkMaqbX5FnAqOo0AY,3687 +django/contrib/admin/locale/bs/LC_MESSAGES/django.mo,sha256=44D550fxiO59Pczu5HZ6gvWEClsfmMuaxQWbA4lCW2M,8845 +django/contrib/admin/locale/bs/LC_MESSAGES/django.po,sha256=FrieR1JB4ssdWwYitJVpZO-odzPBKrW4ZsGK9LA595I,14317 +django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.mo,sha256=SupUK-RLDcqJkpLEsOVjgZOWBRKQMALZLRXGEnA623M,1183 +django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.po,sha256=TOtcfw-Spn5Y8Yugv2OlPoaZ5DRwJjRIl-YKiyU092U,3831 +django/contrib/admin/locale/ca/LC_MESSAGES/django.mo,sha256=gQ-g3OzRpyqae7U8BLAPQvczbYFe4Goutvbz_N1e838,16585 +django/contrib/admin/locale/ca/LC_MESSAGES/django.po,sha256=txJB9CZNOXBvLMZteXPodWku5aiDu0hyW4F2u_XHOng,17942 +django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.mo,sha256=jQuQQAoB-_hggWhGXDFhk71xu70rKF0GqHN-DjR9o-c,4560 +django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po,sha256=Mfn1tgpuhe05MBQShhMoJDZ7L5Nn2p1jFy_jYIt0H0g,5098 +django/contrib/admin/locale/cs/LC_MESSAGES/django.mo,sha256=BEM-fRNY0w99W0GE7X9G09dySM3Qgzf9CwA2ufKrkSE,16572 +django/contrib/admin/locale/cs/LC_MESSAGES/django.po,sha256=uVKGJgKc23jUIQ4_vIlhy6d0ZwsnlwNnPx5bgaSpaYM,18026 +django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo,sha256=BvxuAQ-ndFx2opXSg8FUhBLfOs1DBAdL5rweypbNuUU,4819 +django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po,sha256=YOnd2RyXmM8-K2OgVVubcXuy-St7FesLrRUb7mXVEdI,5393 +django/contrib/admin/locale/cy/LC_MESSAGES/django.mo,sha256=7ifUyqraN1n0hbyTVb_UjRIG1jdn1HcwehugHBiQvHs,12521 +django/contrib/admin/locale/cy/LC_MESSAGES/django.po,sha256=bS_gUoKklZwd3Vs0YlRTt24-k5ure5ObTu-b5nB5qCA,15918 +django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.mo,sha256=fOCA1fXEmJw_QaXEISLkuBhaMnEmP1ssP9lhqdCCC3c,3801 +django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po,sha256=OVcS-3tlMJS_T58qnZbWLGczHwFyAjbuWr35YwuxAVM,5082 +django/contrib/admin/locale/da/LC_MESSAGES/django.mo,sha256=_u56MXv-Dh5k-0QHZImE3Ds3VTky6sVa1iDD3_omR5U,15961 +django/contrib/admin/locale/da/LC_MESSAGES/django.po,sha256=U7PqDwHI5VaX7wiHdKvmGQTwKzGuYry-UeQSk55DQCk,17343 +django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo,sha256=_2EDOsYDt9p-b5L-SAPRXOD2CtrUbgqPrS9cYmoIbtM,4518 +django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po,sha256=zw_JfNVAMhMOgYVCl-ZNMjch4ui4mmUucLBtqbwXHBc,5120 +django/contrib/admin/locale/de/LC_MESSAGES/django.mo,sha256=hyMoYk3p3PM18E6CzbhwRuUpnVU4vjwjnsrHT9P0R2o,16793 +django/contrib/admin/locale/de/LC_MESSAGES/django.po,sha256=4sDSiyev5dDjId1T2IuUvXle7YeETy5FINeMiczEVhI,18192 +django/contrib/admin/locale/de/LC_MESSAGES/djangojs.mo,sha256=_aUsqSeIo9dHAiy6daB-BLselNy7tuPUEf7kVCgEByM,4602 +django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po,sha256=ilCflt4q60Rr1D9wEPNpZQMvJO1R7udNsRgZiml3PdI,5068 +django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo,sha256=sG9r565jG5n98DOZ1zDr8fViR-j7CCcBlgxhftCPCNM,16835 +django/contrib/admin/locale/dsb/LC_MESSAGES/django.po,sha256=cMR5KtWeMqKRQOP6IYT_nr0kGfSmYIWeJJ92DiXH9Gg,18071 +django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.mo,sha256=Bl1Tcn0LYM6ZunclcgjvXXLAdezS3SXU-9IGZ0hvbPw,5016 +django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.po,sha256=aK07LLjObo3lQfVMj6GmR4THIkKFODAQz7iZ99spzJA,5490 +django/contrib/admin/locale/el/LC_MESSAGES/django.mo,sha256=JY7lZREod67l_l1XFlAAEVdscW878SJSo7EUSR65zo8,22536 +django/contrib/admin/locale/el/LC_MESSAGES/django.po,sha256=6yqiFfL07fjR_P31kWlS1LANHzDMFPh2j2aUUXQQcdc,24100 +django/contrib/admin/locale/el/LC_MESSAGES/djangojs.mo,sha256=vfha6S1wDTxgteeprHdCY6j1SnSWDdbC67aoks7TVFw,5888 +django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po,sha256=GJQytMIHNrJeWWnpaoGud4M6aiJCtJ7csyXzmfS6GZs,6560 +django/contrib/admin/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/admin/locale/en/LC_MESSAGES/django.po,sha256=bJ9vJyvU1p21jk5-aCdWdoOX8mQGev0heavhj_q3bgA,22308 +django/contrib/admin/locale/en/LC_MESSAGES/djangojs.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po,sha256=Ktbb5PuFfGQarYm7GVnzqqJulz7Bpa3fcfuqD7pXMKI,6555 +django/contrib/admin/locale/en_AU/LC_MESSAGES/django.mo,sha256=DVjhYEbArfdAQLuE0YAG99eWxa9_eNEz2o9A6X6MrEY,2894 +django/contrib/admin/locale/en_AU/LC_MESSAGES/django.po,sha256=CO7AV-NmmmwnXyBIybSfNZLdXiavphWsd9LNZQNqDL4,11800 +django/contrib/admin/locale/en_AU/LC_MESSAGES/djangojs.mo,sha256=LWNYXUicANYZeiNx4mb6pFpjnsaggPTxTBCbNKxPtFw,1714 +django/contrib/admin/locale/en_AU/LC_MESSAGES/djangojs.po,sha256=UZk0oHToRtHzlviraFzWcZlpVAOk_W2oq4NquxevQoE,3966 +django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo,sha256=F4L7ZjQkHdiMTPlhKIjbXPYenu9LWqvlntuAy6zhTj4,10744 +django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po,sha256=SbpW4kc3NmETWmfwmEzv-c46iXM1g-InxuHt7nlT26s,14840 +django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.mo,sha256=hW325c2HlYIIdvNE308c935_IaDu7_qeP-NlwPnklhQ,3147 +django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po,sha256=Ol5j1-BLbtSIDgbcC0o7tg_uHImcjJQmkA4-kSmZY9o,4581 +django/contrib/admin/locale/eo/LC_MESSAGES/django.mo,sha256=-w9IlfkMqlEUNhnVfSsg9TATFVTlJ4mlDwXMriUdlHE,15832 +django/contrib/admin/locale/eo/LC_MESSAGES/django.po,sha256=CODDYgsHCPnoTUaLauQDH8ahODyvTxtS98z-E824JMQ,17329 +django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo,sha256=QwYzm1KkoyCZ2YwrkXUUCOT2qnFCcyetCCa4U1Z1c_A,4452 +django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po,sha256=8czUc1ju9YopCCqr5RMIIOwmolJTSBFWZsN-FhrIcnI,5040 +django/contrib/admin/locale/es/LC_MESSAGES/django.mo,sha256=Rbe3xIQLcfJ2wqvXuNkRqxruYe2NbeiaZ8bw04nn5IE,16810 +django/contrib/admin/locale/es/LC_MESSAGES/django.po,sha256=5R2fAMPaLooJBsx35H-VyhHlOqNyQHF2fEuHKPoEaRo,18682 +django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo,sha256=44RpmIC1vT7OGz4ubSAzoiU8OysfLsnueZcIqdF6gjQ,4627 +django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po,sha256=t2Jn5RZo7e-UzqVwgBAejuBceWCidWjXvd--cWEq6rI,5302 +django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo,sha256=sWkRtdW090y-8rC8Q0kOR8AEr_Z5Y4kxcUD_Tm9RDkA,16955 +django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po,sha256=qI3MouJlakkdZgC_V7sxMiv54am09-1ublI8o5RYoFY,18242 +django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo,sha256=lqWxSD90JLBg2ei316TPHGNTgwWyzl9u0-Zy7aQ5WFI,4892 +django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po,sha256=qZJMi1DsBy2tl2MMo322wTjaO0yb0n5ALzc1tK4SZQM,5350 +django/contrib/admin/locale/es_CO/LC_MESSAGES/django.mo,sha256=0k8kSiwIawYCa-Lao0uetNPLUzd4m_me3tCAVBvgcSw,15156 +django/contrib/admin/locale/es_CO/LC_MESSAGES/django.po,sha256=4T_syIsVY-nyvn5gEAtfN-ejPrJSUpNT2dmzufxaBsE,17782 +django/contrib/admin/locale/es_CO/LC_MESSAGES/djangojs.mo,sha256=PLS10KgX10kxyy7MUkiyLjqhMzRgkAFGPmzugx9AGfs,3895 +django/contrib/admin/locale/es_CO/LC_MESSAGES/djangojs.po,sha256=Y4bkC8vkJE6kqLbN8t56dR5670B06sB2fbtVzmQygK8,5176 +django/contrib/admin/locale/es_MX/LC_MESSAGES/django.mo,sha256=lQwxsrvK8ZQaqErLj2Uc_6ot5QiczaWgFqIr9K0tzwc,14127 +django/contrib/admin/locale/es_MX/LC_MESSAGES/django.po,sha256=b9BB_rwofNmIl98JB6jA-61AnYq-GvbITLtsOEi_NBM,16964 +django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.mo,sha256=2w3CMJFBugP8xMOmXsDU82xUm8cWGRUGZQX5XjiTCpM,3380 +django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.po,sha256=OP9cBsdCf3zZAXiKBMJPvY1AHwC_WE1k2vKlzVCtUec,4761 +django/contrib/admin/locale/es_VE/LC_MESSAGES/django.mo,sha256=himCORjsM-U3QMYoURSRbVv09i0P7-cfVh26aQgGnKg,16837 +django/contrib/admin/locale/es_VE/LC_MESSAGES/django.po,sha256=mlmaSYIHpa-Vp3f3NJfdt2RXB88CVZRoPEMfl-tccr0,18144 +django/contrib/admin/locale/es_VE/LC_MESSAGES/djangojs.mo,sha256=Zy-Hj_Mr2FiMiGGrZyssN7GZJrbxRj3_yKQFZKR36Ro,4635 +django/contrib/admin/locale/es_VE/LC_MESSAGES/djangojs.po,sha256=RI8CIdewjL3bAivniMOl7lA9tD7caP4zEo2WK71cX7c,5151 +django/contrib/admin/locale/et/LC_MESSAGES/django.mo,sha256=vJSz-k6PQ80EKg80PqUbrGTRmmEX6x-0sS-ZkwLbC_w,15696 +django/contrib/admin/locale/et/LC_MESSAGES/django.po,sha256=6_gwIXeLN-jQcS_6zqP9Gro1LQDO-qm0tzw5tijDKgA,17175 +django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo,sha256=GOfcPo6Tge73JsPGShWCmepOAvdGgEcdrVTUI-Fxjm4,4394 +django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po,sha256=6qIvrAmlBVY6KM56LkrAl51R9sL-Hnw4u4GNgCoqbRg,4930 +django/contrib/admin/locale/eu/LC_MESSAGES/django.mo,sha256=ctSeJLgjy2FeKVwAGxerVNCfiKYImTNtDOwgnje60wA,15909 +django/contrib/admin/locale/eu/LC_MESSAGES/django.po,sha256=AAm15QBeFLRDHeG3Rrfqh5Gl1wXPEzQ4vlBa3E8cIag,17308 +django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.mo,sha256=bZHiuTFj8MNrO3AntBAY5iUhmCa6LSluGLYw504RKWg,4522 +django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po,sha256=eMpM70UTWIiCDigCgYVOZ9JKQ2IidYZxYcUWunvG8js,5051 +django/contrib/admin/locale/fa/LC_MESSAGES/django.mo,sha256=SDTXAM7LYcv8d5cGoSyVdU5vvRNt619p8MD3EW0eOho,19131 +django/contrib/admin/locale/fa/LC_MESSAGES/django.po,sha256=zwzLWBUq_aHJuKCfKU4KolI4pYrENet8Rj12A4och3k,20529 +django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo,sha256=nvG_i8FrtkTPLpZqCkEYSaVJFiRPYLosBhc1s-FsgnI,5068 +django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po,sha256=XVI2k0cGr-1iqrDL8-k-vbgmPQJm3DH58cw_O5cR04s,5680 +django/contrib/admin/locale/fi/LC_MESSAGES/django.mo,sha256=tkuQsXPqB0dpG_PKYvssN-rTbQ-VP3bswgrckqJ9wfM,15923 +django/contrib/admin/locale/fi/LC_MESSAGES/django.po,sha256=aaVMgWFnz5ysorFBieY-vG7dDJN0wiEeUL-3tYxot2I,17217 +django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.mo,sha256=ez7WTtE6OE878kSxqXniDOQY-wdURYEfxYQXBQJTVpg,4561 +django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po,sha256=rquknGvUFlWNLcrOc1wwhAPn63PZA48qBN8oWiINiQ0,5045 +django/contrib/admin/locale/fr/LC_MESSAGES/django.mo,sha256=7Fne4TDRamUndHqhY5mhqfCIk4brV1tcx_ruEPFFRWo,17504 +django/contrib/admin/locale/fr/LC_MESSAGES/django.po,sha256=TMycKKdYQQsgU3ltPm-A2uPUIYgjBl__N20SIeTdvPk,18792 +django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo,sha256=1pABUr752ITt14MXm6yqZjU7lWcQ2ZYeymqnQOZqthU,4735 +django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po,sha256=Z2rPIY8xryfJqAYan2K5Rc0NOZTKTh80BvuWJav-Atg,5228 +django/contrib/admin/locale/fy/LC_MESSAGES/django.mo,sha256=mWnHXGJUtiewo1F0bsuJCE_YBh7-Ak9gjTpwjOAv-HI,476 +django/contrib/admin/locale/fy/LC_MESSAGES/django.po,sha256=oSKEF_DInUC42Xzhw9HiTobJjE2fLNI1VE5_p6rqnCE,10499 +django/contrib/admin/locale/fy/LC_MESSAGES/djangojs.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 +django/contrib/admin/locale/fy/LC_MESSAGES/djangojs.po,sha256=efBDCcu43j4SRxN8duO5Yfe7NlpcM88kUPzz-qOkC04,2864 +django/contrib/admin/locale/ga/LC_MESSAGES/django.mo,sha256=wMM857oxSd8c182lYD2WMmoth4dOJ-a1FjHj9ZinZSk,13697 +django/contrib/admin/locale/ga/LC_MESSAGES/django.po,sha256=cGFmkA6XOhXyKycmoF_KbTHAgFDjx7fbF9LWwJXH7BM,16798 +django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo,sha256=fa2MlEm3XUig1C3X26u_kZzPKcUGR-Uy5jfwG6RQIJ4,4379 +django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po,sha256=ixvu6pm3asTKvHisWdcZ6YMb3fjsKOEnHZGG5g3l-tw,5725 +django/contrib/admin/locale/gd/LC_MESSAGES/django.mo,sha256=DMWU4a5b5M1rwDXYq_ZLWUVBRAqx0WX3GtUA79-e4yI,18177 +django/contrib/admin/locale/gd/LC_MESSAGES/django.po,sha256=J0nOji3Q30AYcCNEjh6EP_J_u2Y8G53SEhlRchQNTlY,19476 +django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.mo,sha256=uZigxSJ1bBQhvhVMAyp7R4-JlZE14b3mu3hCcnwMjMQ,5304 +django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.po,sha256=7x7qPCf9WcLBrmJ5uFbp4-9b8QsdYisoAlTVdtXmqYw,5809 +django/contrib/admin/locale/gl/LC_MESSAGES/django.mo,sha256=_9JW7LdCw2on4M1oz3Iyl_VMrhrw_0oVIQl4h_rCX6g,13246 +django/contrib/admin/locale/gl/LC_MESSAGES/django.po,sha256=xqdcVwIX5zPxq471crW0yxcOYcbZVaRwKiKx-MAGiqk,16436 +django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo,sha256=YkT7l3U9ffSGqXmu6S41Ex0r7tbK-0BKH5lS6O8PAGs,3279 +django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po,sha256=EDccOpm1mpT8mVRvu5LBsq8nao50oP1V7aKEnuRmtF8,4803 +django/contrib/admin/locale/he/LC_MESSAGES/django.mo,sha256=WNUBwLt_Utmj4vCzwh3OeXutt9toN9qXvboTfLkJ-10,17370 +django/contrib/admin/locale/he/LC_MESSAGES/django.po,sha256=XfXWu6hiL37UYyzMCBotIyLqrwaF8OEkUTRkHPbV6YM,18609 +django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo,sha256=n0yZEC29NoFalQke_EhZYRRFAzhPRdSZO4GbuzRl-X8,4775 +django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po,sha256=Qf_F0VXeqs2b3AM4c3s66VXTr4KyERDurdoINABK63s,5280 +django/contrib/admin/locale/hi/LC_MESSAGES/django.mo,sha256=EogCHT8iAURSuE34kZ0kwEIoz5VjgUQUG2eAIqDxReU,18457 +django/contrib/admin/locale/hi/LC_MESSAGES/django.po,sha256=NcTFbFyHhWOIieUpzIVL7aSDWZ8ZNmfnv5gcxhON1zc,21770 +django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.mo,sha256=yCUHDS17dQDKcAbqCg5q8ualaUgaa9qndORgM-tLCIw,4893 +django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.po,sha256=U9rb5tPMICK50bRyTl40lvn-tvh6xL_6o7xIPkzfKi0,6378 +django/contrib/admin/locale/hr/LC_MESSAGES/django.mo,sha256=s9m770GwDohk1TS2u2KaMbntt5Sh-ND4KbCZdozajKY,14774 +django/contrib/admin/locale/hr/LC_MESSAGES/django.po,sha256=Wfn3w39GHvKVV32DvmdfCdaghVxsstnxaGPokFkIFnw,17040 +django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo,sha256=rhZ3Jr6ItrGzeBqJUrHGeTamc3bgJmoMjasV9s0rmtQ,3360 +django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po,sha256=otuJ1-VmP-MVS1hEeBFbatdweeasHYAVUpLmJ7eE5p0,4870 +django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo,sha256=Hqf74Da0l2w6xVBew1-j3C9L-evR0rA3wcXcyqmAZ70,16584 +django/contrib/admin/locale/hsb/LC_MESSAGES/django.po,sha256=23265vZGcTehU9hwEGY4WndjIMwVteaPyk2zxpGW16g,17796 +django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.mo,sha256=t0FSFpoVBOf8tzw3EmKAaML5lcJJJRPIfTucfBj0zIU,5087 +django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.po,sha256=xrPdmcc1o1ZDMbTPvnNk84vsBPB7P2atlBK0e0RWyJ4,5564 +django/contrib/admin/locale/hu/LC_MESSAGES/django.mo,sha256=Zuhq5Tj-9a7_yFQGeSXNk-LSIUYeOvjBubLtOxm_-5k,16464 +django/contrib/admin/locale/hu/LC_MESSAGES/django.po,sha256=v-LWAj-ZX4YT9EMUnwPXheUbRN08_oahKigBDTtU8dI,17891 +django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo,sha256=71Dhytp7dJplmQzc9MHLTh0k-Fvy1gdeQwi9oafg1wg,4524 +django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po,sha256=bYu4XVz6wmeVfrY2PFxjeaR_RObBsAYQ-yzWxdMgmIo,5105 +django/contrib/admin/locale/ia/LC_MESSAGES/django.mo,sha256=SRKlr8RqW8FQhzMsXdA9HNqttO3hc0xf4QdQJd4Dy8c,11278 +django/contrib/admin/locale/ia/LC_MESSAGES/django.po,sha256=pBQLQsMinRNh0UzIHBy3qEW0etUWMhFALu4-h-woFyE,15337 +django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.mo,sha256=28MiqUf-0-p3PIaongqgPQp2F3D54MLAujPslVACAls,3177 +django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po,sha256=CauoEc8Fiowa8k6K-f9N8fQDle40qsgtXdNPDHBiudQ,4567 +django/contrib/admin/locale/id/LC_MESSAGES/django.mo,sha256=oqb4tMeB8Vz1TmHmeutmzxcFKdWSJKtN8tLVzxkDnUs,15684 +django/contrib/admin/locale/id/LC_MESSAGES/django.po,sha256=5EVJPBbM4YYV6WG9yaNb9cM-bPAhb0Fa0RXNGShYpww,17162 +django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo,sha256=_FT2WXJ4inRZDlWJe2iaU0idpJdBiE7Ecd1IcghrsH0,4407 +django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po,sha256=9FYLgVUUXqgYSndWDNilL0een9UTRIzzM3DY4or-SGM,4915 +django/contrib/admin/locale/io/LC_MESSAGES/django.mo,sha256=URiYZQZpROBedC-AkpVo0q3Tz78VfkmwN1W7j6jYpMo,12624 +django/contrib/admin/locale/io/LC_MESSAGES/django.po,sha256=y0WXY7v_9ff-ZbFasj33loG-xWlFO8ttvCB6YPyF7FQ,15562 +django/contrib/admin/locale/io/LC_MESSAGES/djangojs.mo,sha256=nMu5JhIy8Fjie0g5bT8-h42YElCiS00b4h8ej_Ie-w0,464 +django/contrib/admin/locale/io/LC_MESSAGES/djangojs.po,sha256=WLh40q6yDs-8ZG1hpz6kfMQDXuUzOZa7cqtEPDywxG4,2852 +django/contrib/admin/locale/is/LC_MESSAGES/django.mo,sha256=W-t3UPqpOhi4hWJVaISNGfppMIX47zJUkAP5vOKPezo,16223 +django/contrib/admin/locale/is/LC_MESSAGES/django.po,sha256=FH_HTXGBIkBO2tqPdIZoruNfPMDChqTlocxNF9yQubA,17530 +django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo,sha256=q2W800Di3ibCO32xisxqpO8GHwTB9bEYBfXgYXgb87k,4587 +django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po,sha256=C_hcOfRSmZtA9vTuaT9X5btk_z61SKcaDbF86yDfgks,5122 +django/contrib/admin/locale/it/LC_MESSAGES/django.mo,sha256=Px0LhGU8va1jCIcZFr-1iYkKJO3TSvAKutXD66jK4OA,16441 +django/contrib/admin/locale/it/LC_MESSAGES/django.po,sha256=EA8sEhnHNDlzO68oAvWsqnYBXbMi6A0Piv8aP8zyK0M,18020 +django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo,sha256=P2wm_9ihqu1t1T3epDhlCia-OhwYNtTcfpAbOdjpElI,4537 +django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po,sha256=-cvn4xW3LgMTeLu7Zcurz_ezUOmc4NQNkCeseZdMTyU,5171 +django/contrib/admin/locale/ja/LC_MESSAGES/django.mo,sha256=XFhPX8zpz6GeYaXDKUyw1GTWfqDHO-DyT2MWP7qoD1o,17590 +django/contrib/admin/locale/ja/LC_MESSAGES/django.po,sha256=5dCIRF_yMYy5BmLu795IoJhBYlEF_qFIZ6gcEug65ss,18895 +django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo,sha256=Eki83Z0uecO6oyRrvVdCEMmctehw62HHRaoznf4sKtg,4688 +django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po,sha256=5_AkaIMOx1h-mcr1C3m-JoSiIRx754BN6Qw-e8RFQ1E,5098 +django/contrib/admin/locale/ka/LC_MESSAGES/django.mo,sha256=WtCZkU5d5VsUCboXo7GO8mXCq3Z4Z-2zp3Sj4j1aqk4,20248 +django/contrib/admin/locale/ka/LC_MESSAGES/django.po,sha256=GQutjRKrVbWLlHYeX5FUT-sLXh3zsskQSIDbQsqpKmk,23236 +django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo,sha256=7XSBdq-DMWfyGmAHJnwNaexOevuitsNiPDifnbUU19o,5199 +django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po,sha256=PB6VJ0zYdpjF9vwvOlTowt1rl-7j4QRKfj_YhrJqSas,6407 +django/contrib/admin/locale/kab/LC_MESSAGES/django.mo,sha256=9QKEWgr8YQV17OJ14rMusgV8b79ZgOOsX4aIFMZrEto,3531 +django/contrib/admin/locale/kab/LC_MESSAGES/django.po,sha256=cSOG_HqsNE4tA5YYDd6txMFoUul8d5UKvk77ZhaqOK0,11711 +django/contrib/admin/locale/kab/LC_MESSAGES/djangojs.mo,sha256=nqwZHJdtjHUSFDJmC0nPNyvWcAdcoRcN3f-4XPIItvs,1844 +django/contrib/admin/locale/kab/LC_MESSAGES/djangojs.po,sha256=tF3RH22p2E236Cv6lpIWQxtuPFeWOvJ-Ery3vBUv6co,3713 +django/contrib/admin/locale/kk/LC_MESSAGES/django.mo,sha256=LfA7cfm9aUcTTuVONlsbjLvWuQvcEwIw6k0awxSXxjU,12966 +django/contrib/admin/locale/kk/LC_MESSAGES/django.po,sha256=WPPFsL2v1BouI92iiSLF_KHtqr3LCUHOqz_QNNfWh3U,17442 +django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo,sha256=3TH-WxIbc7NPrGExH9ATKgCy13xJL-VMFtrjCLQhWF8,2380 +django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po,sha256=qiz_cxoDIyPNylWhKPF2yiHhRekfdFETSn2NbHyRKeg,4373 +django/contrib/admin/locale/km/LC_MESSAGES/django.mo,sha256=eOe9EcFPzAWrTjbGUr-m6RAz2TryC-qHKbqRP337lPY,10403 +django/contrib/admin/locale/km/LC_MESSAGES/django.po,sha256=RSxy5vY2sgC43h-9sl6eomkFvxClvH_Ka4lFiwTvc2I,17103 +django/contrib/admin/locale/km/LC_MESSAGES/djangojs.mo,sha256=Ja8PIXmw6FMREHZhhBtGrr3nRKQF_rVjgLasGPnU95w,1334 +django/contrib/admin/locale/km/LC_MESSAGES/djangojs.po,sha256=LH4h4toEgpVBb9yjw7d9JQ8sdU0WIZD-M025JNlLXAU,3846 +django/contrib/admin/locale/kn/LC_MESSAGES/django.mo,sha256=955iPq05ru6tm_iPFVMebxwvZMtEa5_7GaFG1mPt6HU,9203 +django/contrib/admin/locale/kn/LC_MESSAGES/django.po,sha256=xMGtsVCItMTs18xdFQHELdVZKCwTNNyKfb8n1ARcFws,16053 +django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.mo,sha256=dHzxizjDQWiZeRfBqnVFcK1yk1-M5p1KOfQ1ya9TMVU,1872 +django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po,sha256=MqRj6ozyr1e9-qNORUTJXNahe6SL3ee3OveSm3efV4g,4214 +django/contrib/admin/locale/ko/LC_MESSAGES/django.mo,sha256=HGwZQLyvo7ZwhhapTwI04leRIA1B5_g-JR5SmRaWTo8,17006 +django/contrib/admin/locale/ko/LC_MESSAGES/django.po,sha256=cZ7N1sxBgJtL52SaB3pC-9kzEkglcVp9zi3oOmRqLME,18444 +django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo,sha256=ejjPHM0HjXBXfsyFGyxAnzj7K296EK7kgxhMhT8-9wA,4493 +django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po,sha256=R4ruBO7896mDe8ksU8iIwVjZM_6OB0dohAaek0Srkbg,5029 +django/contrib/admin/locale/lb/LC_MESSAGES/django.mo,sha256=8GGM2sYG6GQTQwQFJ7lbg7w32SvqgSzNRZIUi9dIe6M,913 +django/contrib/admin/locale/lb/LC_MESSAGES/django.po,sha256=PZ3sL-HvghnlIdrdPovNJP6wDrdDMSYp_M1ok6dodrw,11078 +django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 +django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po,sha256=fiMelo6K0_RITx8b9k26X1R86Ck2daQXm86FLJpzt20,2862 +django/contrib/admin/locale/lt/LC_MESSAGES/django.mo,sha256=bYiOprxWo54Uky70hmTIzjiSTqfWarP57-KUOWjy7eo,16410 +django/contrib/admin/locale/lt/LC_MESSAGES/django.po,sha256=sARv8FpCWC2oQskLGebVYI56v9shcPScbMHONJXyaD0,17835 +django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo,sha256=ixKwmi59zj8oVCzxFYjXVRE3_EKQFdS7fZYrtngIDtU,4934 +django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po,sha256=Zzq-hPaQUe3r7WMOWAuoTITVUkTtkDnYwShy5vogaAE,5570 +django/contrib/admin/locale/lv/LC_MESSAGES/django.mo,sha256=xD7Wvz9_Yn-PoqyhsQid1fv0IO7irGTiQ3V7w4rYuPU,16220 +django/contrib/admin/locale/lv/LC_MESSAGES/django.po,sha256=z_tyZSi-D7zSEV-keRnvlKARqgmJzp6Dl497PcKUJPo,17595 +django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo,sha256=fPfAqPJxqmFRYSPlLch8eBKfXwZ7jTPBlcs3-LXMu7k,4908 +django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po,sha256=pAwBGRKZVtF0I0XqlrO_UMo7WWd_P0WgLOunzGJQaYA,5428 +django/contrib/admin/locale/mk/LC_MESSAGES/django.mo,sha256=luKonZA7H7yeCILl4BWXsYn_BncPzYy7_sfCWq7vlI4,20661 +django/contrib/admin/locale/mk/LC_MESSAGES/django.po,sha256=LyznsrasvV6Rtq7X6NnIrdZESGo_PlhISShHrCTbDgc,22056 +django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.mo,sha256=ZyQQ49zqs8GiS73XBaSd5l3Rh3vOA0glMpX98GH6nhU,5633 +django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.po,sha256=bWph0TVgwC-Fmlof8_4SiR21uCFm9rftp59AMZ3WIYA,6188 +django/contrib/admin/locale/ml/LC_MESSAGES/django.mo,sha256=RzG1Bu5fVUe0yagKxq5PL9HhDkuVRydQQbcAvbDqzGk,21581 +django/contrib/admin/locale/ml/LC_MESSAGES/django.po,sha256=w1xncysUEfTk6owbX6_2PMAH5emG_DMBOsshmc_64So,24562 +django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo,sha256=ALD2ba1V37Xo9mWShD9KNr7iE3F30nytEbHnP1gxz8o,6362 +django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po,sha256=Fa_b2gBa-JJkxGrJhdQ-T0QigGLeHnu8lhhmdqKiq6s,7607 +django/contrib/admin/locale/mn/LC_MESSAGES/django.mo,sha256=ew8-JvbkDihdAdNh9bC17H7BL0qw6ETwGWIg2EdXWDs,20092 +django/contrib/admin/locale/mn/LC_MESSAGES/django.po,sha256=18g6zBpC4sQ5ZbbKhsdsMdEUYr0ylV3KbCyFuoKF02c,21513 +django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo,sha256=HJcGCl8vBHrHekjm19W-ZNXQxKZ9rhyvU_xlJQYb5IE,4416 +django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po,sha256=gt7CYBxKtPypxhBPUMrkiLA88oL4_6tkKNqc_yb1Mzw,5610 +django/contrib/admin/locale/mr/LC_MESSAGES/django.mo,sha256=UAxGnGliid2PTx6SMgIuHVfbCcqVvcwC4FQUWtDuSTc,468 +django/contrib/admin/locale/mr/LC_MESSAGES/django.po,sha256=TNARpu8Pfmu9fGOLUP0bRwqqDdyFmlh9rWjFspboTyc,10491 +django/contrib/admin/locale/mr/LC_MESSAGES/djangojs.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 +django/contrib/admin/locale/mr/LC_MESSAGES/djangojs.po,sha256=uGe9kH2mwrab97Ue77oggJBlrpzZNckKGRUMU1vaigs,2856 +django/contrib/admin/locale/my/LC_MESSAGES/django.mo,sha256=xvlgM0vdYxZuA7kPQR7LhrLzgmyVCHAvqaqvFhKX9wY,3677 +django/contrib/admin/locale/my/LC_MESSAGES/django.po,sha256=zdUCYcyq2-vKudkYvFcjk95YUtbMDDSKQHCysmQ-Pvc,12522 +django/contrib/admin/locale/my/LC_MESSAGES/djangojs.mo,sha256=1fS9FfWi8b9NJKm3DBKETmuffsrTX-_OHo9fkCCXzpg,3268 +django/contrib/admin/locale/my/LC_MESSAGES/djangojs.po,sha256=-z1j108uoswi9YZfh3vSIswLXu1iUKgDXNdZNEA0yrA,5062 +django/contrib/admin/locale/nb/LC_MESSAGES/django.mo,sha256=IroGpA0_OpPSHjw8llcKD7XoPMqtLLPcYtyiUTQXG6k,15643 +django/contrib/admin/locale/nb/LC_MESSAGES/django.po,sha256=U_vdIdGmmEvivVU2Z5ZgZwvdsjM31d9zjZl6clc4bx0,17068 +django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo,sha256=VSt2qyv3IsyongCj9VUuceksd2L7X8uluPJMeGgfOIo,4375 +django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po,sha256=NJ1EcuXD8LEuLwe_FbOe1NEgAoAi-v2qljCiYrxhA9M,4915 +django/contrib/admin/locale/ne/LC_MESSAGES/django.mo,sha256=vkGnGxQFgLe9TFxEalAj-wLa0mos4ylG24clOGzRWr8,15710 +django/contrib/admin/locale/ne/LC_MESSAGES/django.po,sha256=qWDifq6NZdeyYS2uM7OFuypxeWCmBkCZBKhVEOAvd5g,19569 +django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.mo,sha256=mJdtpLT9k4vDbN9fk2fOeiy4q720B3pLD3OjLbAjmUI,5362 +django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.po,sha256=N91RciTV1m7e8-6Ihod5U2xR9K0vrLoFnyXjn2ta098,6458 +django/contrib/admin/locale/nl/LC_MESSAGES/django.mo,sha256=8ec19xPOxXsG7ttdJ-6eGJrHAA67wnrEviCtYFA9baY,16306 +django/contrib/admin/locale/nl/LC_MESSAGES/django.po,sha256=d0A1Q8pzcJPkU-01FDcNMQqs-1jXSm4KDcV3qSny3PY,17945 +django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo,sha256=BYmzOwUt7vwLyHTSkbf8JTxS53E4KZLfEQQNVSxmAgw,4691 +django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po,sha256=2oLuixuq2iE_du5djJdQVw5yapVsp8pUz652XXaYN3k,5421 +django/contrib/admin/locale/nn/LC_MESSAGES/django.mo,sha256=zKIlvBLMvoqrXO90TqPJcdTEXkVweUWpz6ynsWeg8mU,10943 +django/contrib/admin/locale/nn/LC_MESSAGES/django.po,sha256=-CFana0-PPFwv1jcdyjYuLK2OYOPva-xxMjlVhvsoCw,14999 +django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.mo,sha256=A7MT59BoyOSiM7W0phx8LLKQyH4Q8AEu6jUsBjUBOoE,3120 +django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.po,sha256=tCXUV4F6FhMa-K0SBw9lQ0U2KY5kcMpGzT7jzKSvceo,4578 +django/contrib/admin/locale/os/LC_MESSAGES/django.mo,sha256=c51PwfOeLU2YcVNEEPCK6kG4ZyNc79jUFLuNopmsRR8,14978 +django/contrib/admin/locale/os/LC_MESSAGES/django.po,sha256=yugDw7iziHto6s6ATNDK4yuG6FN6yJUvYKhrGxvKmcY,18188 +django/contrib/admin/locale/os/LC_MESSAGES/djangojs.mo,sha256=0gMkAyO4Zi85e9qRuMYmxm6JV98WvyRffOKbBVJ_fLQ,3806 +django/contrib/admin/locale/os/LC_MESSAGES/djangojs.po,sha256=skiTlhgUEN8uKk7ihl2z-Rxr1ZXqu5qV4wB4q9qXVq0,5208 +django/contrib/admin/locale/pa/LC_MESSAGES/django.mo,sha256=XRkVFMMBuHA86K16qlN5X2c1DliD-hUwFIB9NIbhPXk,10171 +django/contrib/admin/locale/pa/LC_MESSAGES/django.po,sha256=XTZMIuOCZRC7aG-iRSokjDy9f126VV63S6TLX0sKrOA,16093 +django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo,sha256=lwkcLUw3N-uFwqP2p1sZzaMVeXUGIMPDO-IPoYnalGo,1207 +django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po,sha256=7BYA76FmHAJVe_GRt2fIYei57Sk3B7G_qHy-lrCUxgs,3717 +django/contrib/admin/locale/pl/LC_MESSAGES/django.mo,sha256=dntS1vfCNnlxUdEvjWxkE9JF3MO1MaUIPibBMyrQ5z4,16767 +django/contrib/admin/locale/pl/LC_MESSAGES/django.po,sha256=SrgLr7XJKVbUlKKmfEwmY-lqaLfUdso2hMk9UnwTrMM,18476 +django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo,sha256=ec1TSIUAbti7sn1vEkF_JwsAKtJw7AQ_P_QgyAq8R38,5124 +django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po,sha256=u0KYrSzRQm49ZVcLqocF0bJjzL8fQXjR5dHtrdWvYhc,5885 +django/contrib/admin/locale/pt/LC_MESSAGES/django.mo,sha256=kJQFBZeg8oTQySbwGEA2U5KX-SD4jSNDTQKqNkwADJM,16612 +django/contrib/admin/locale/pt/LC_MESSAGES/django.po,sha256=tkaISKw8FWa0AWjwqyGJO8h_HQRy_-NjOAHezoOFynk,18021 +django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.mo,sha256=D6-8QwX6lsACkEcYXq1tK_4W2q_NMc6g5lZQJDZRFHw,4579 +django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po,sha256=__a9WBgO_o0suf2xvMhyRk_Wkg2tfqNHmJOM5YF86sk,5118 +django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo,sha256=5LfoCVXCKPB0YoxVvijk6viVmNH6DOjQT0LdSV3wTPI,16398 +django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po,sha256=pHFIJArrkTV8TTp90h7J-Irf3wLjA4zhXxoXValg8X4,18246 +django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo,sha256=wOoG2N8JrONQDPsXZ0LstCOUwL0Dtkrg5tv5LUfdLPQ,4619 +django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po,sha256=VGvet4lDdbvOiWQiXEJzZncw5KpeiK6vPITwmIiwLXU,5256 +django/contrib/admin/locale/ro/LC_MESSAGES/django.mo,sha256=i9xCmjjK89RDyZbv4byzzXp10n-XzwsLpFrkNcpmKD8,16508 +django/contrib/admin/locale/ro/LC_MESSAGES/django.po,sha256=KXM5hrWJOmXe0uJ8hAcnAyubdFmfiHGqQD4TlDiVIB4,17936 +django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo,sha256=ecZWK29CdeMH21OfOuv0dZ9907hWu_1gUsUeDxRJd-c,4711 +django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po,sha256=2Vm36kASBB8RlNTWV3xnLkl06qGbPex4zJeXKV1ihCc,5388 +django/contrib/admin/locale/ru/LC_MESSAGES/django.mo,sha256=UUsVqTtdz3RrPeo3zNTpyfzj6q9X6akrEW_iiYhTMM8,21129 +django/contrib/admin/locale/ru/LC_MESSAGES/django.po,sha256=2aSRrHBP4Is4ROggjZmEXkb3AhWadFbBJBfAkwTslXo,22684 +django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo,sha256=aKfi6-U6lHDVoCT0vnr5u02POMb2ZZq6RBWkYM3ZTGs,6564 +django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po,sha256=qJElbC05QixcTmPe4_QN_p0UiiXxVXRMXEK8ZsTYS58,7372 +django/contrib/admin/locale/sk/LC_MESSAGES/django.mo,sha256=qfJ6iSOPH215iuk7dGbbbkYFbDTFr3DgXTH5PKyakX0,16405 +django/contrib/admin/locale/sk/LC_MESSAGES/django.po,sha256=_efzcdpl-KkRFglILyRBp2lXLu1jAnoeWjFHRmE4vio,17792 +django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo,sha256=FIrWSjWt0qRGLmjt3wODBr4Dm9rfGGJNo_aQomRlL9w,4551 +django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po,sha256=8ExPrvCwSNeOwGOrWwpw3CASDDSYFdINzbj90oX9kfo,5176 +django/contrib/admin/locale/sl/LC_MESSAGES/django.mo,sha256=iqcg1DYwwDVacRAKJ3QR4fTmKQhRGXU4WkwYco9ASaA,16136 +django/contrib/admin/locale/sl/LC_MESSAGES/django.po,sha256=VeIJDh1PojyUy-4AdPcVezbQ-XVWqp04vFE_u3KU2tU,17508 +django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.mo,sha256=0jqGv5lgcfyxh9pdnB0Nt7e0bF2G0nO-iVWJjKwyZqI,4724 +django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po,sha256=1DEs7obfCCf-hNM2nIkMizcRcq1KoLBvngMaXLlozUo,5269 +django/contrib/admin/locale/sq/LC_MESSAGES/django.mo,sha256=mz4DGjNy67A6s3gbYuWSrjeGyQgZ29HjEQ22c7oq3HA,16593 +django/contrib/admin/locale/sq/LC_MESSAGES/django.po,sha256=1TlVYvPiB1UztB-fEAcw0iTs0rzd2NrBKH4XXv7-eq0,17876 +django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo,sha256=Kke8CoU6tgem52SEYXyN-GD31iE0X2DtXljgEx2u5Dc,4590 +django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po,sha256=Xr0i6Ru0KgO1fmXHJbF_8_QC6mCVU8lKKNDB0lQWVdU,5052 +django/contrib/admin/locale/sr/LC_MESSAGES/django.mo,sha256=GdgygmaQEZxa5svkL62lo09VScrFCdlr1bXeaDyF0yU,14126 +django/contrib/admin/locale/sr/LC_MESSAGES/django.po,sha256=QghWs3rh7s_9E01A08E4DpZlaI0gUdNERXJ0ppsTOkw,18244 +django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo,sha256=tU7FI7MZSQ8-uj0yeHXsPFxTscrVNAVNyowrPVp6ShA,3493 +django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po,sha256=jAYqG0qPzVOYfL9rmyqXaamk-dJOX3Y7eZamJRjQgJU,4944 +django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=MCdPPbt_Rob5o-oiXrrh04yJdpzj1_LH2u6iNQrUZ0U,11339 +django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po,sha256=z7Kmej61JawIMlGVei9SznO_yzgijWZ5P-YZDNZQGxI,15457 +django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo,sha256=Q9Z-L--PCpPQkbqm2JmNX0jGQt42RVX9I7LdQLEgoQQ,2978 +django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po,sha256=ltYFTnxmwOTZjaSuR_w5aTMw1jpU4fcblD4EopYvnfQ,4429 +django/contrib/admin/locale/sv/LC_MESSAGES/django.mo,sha256=NCnsGQ3f2H8e-KKPQqurbzEK1C2GwmzzyS_4QEyuI9M,15933 +django/contrib/admin/locale/sv/LC_MESSAGES/django.po,sha256=v5aY4NPh1JcTxQComXQqt7s2oaoaBJrtpMJP0LWy8HM,17467 +django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mo,sha256=Q9UBnIR3KTna0BtGSZyXiehzxj8rP2I2NEi_2tTKUTU,4541 +django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po,sha256=SfGsoatvFSE1fsWsg_aVZl7gNsI0dtEmaro_0cGu9m4,5206 +django/contrib/admin/locale/sw/LC_MESSAGES/django.mo,sha256=Mtj7jvbugkVTj0qyJ_AMokWEa2btJNSG2XrhpY0U1Mc,14353 +django/contrib/admin/locale/sw/LC_MESSAGES/django.po,sha256=ElU-s0MgtNKF_aXdo-uugBnuJIDzHqMmy1ToMDQhuD0,16419 +django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.mo,sha256=p0pi6-Zg-qsDVMDjNHO4aav3GfJ3tKKhy6MK7mPtC50,3647 +django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.po,sha256=lZFP7Po4BM_QMTj-SXGlew1hqyJApZxu0lxMP-YduHI,4809 +django/contrib/admin/locale/ta/LC_MESSAGES/django.mo,sha256=ZdtNRZLRqquwMk7mE0XmTzEjTno9Zni3mV6j4DXL4nI,10179 +django/contrib/admin/locale/ta/LC_MESSAGES/django.po,sha256=D0TCLM4FFF7K9NqUGXNFE2KfoEzx5IHcJQ6-dYQi2Eg,16881 +django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.mo,sha256=2-37FOw9Bge0ahIRxFajzxvMkAZL2zBiQFaELmqyhhY,1379 +django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.po,sha256=Qs-D7N3ZVzpZVxXtMWKOzJfSmu_Mk9pge5W15f21ihI,3930 +django/contrib/admin/locale/te/LC_MESSAGES/django.mo,sha256=aIAG0Ey4154R2wa-vNe2x8X4fz2L958zRmTpCaXZzds,10590 +django/contrib/admin/locale/te/LC_MESSAGES/django.po,sha256=-zJYrDNmIs5fp37VsG4EAOVefgbBNl75c-Pp3RGBDAM,16941 +django/contrib/admin/locale/te/LC_MESSAGES/djangojs.mo,sha256=VozLzWQwrY-USvin5XyVPtUUKEmCr0dxaWC6J14BReo,1362 +django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po,sha256=HI8IfXqJf4I6i-XZB8ELGyp5ZNr-oi5hW9h7n_8XSaQ,3919 +django/contrib/admin/locale/th/LC_MESSAGES/django.mo,sha256=3M_F_61KZCpwDW59j69WocWl5BvdOP2kP0ghqjWuvtU,18775 +django/contrib/admin/locale/th/LC_MESSAGES/django.po,sha256=L2VnfVan4tJ0Lafv0Mc7oVNy2HG6l2tlwDaetLCpByY,21693 +django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo,sha256=Pf2RPgOPysCBvi_5dA73rGrrfs6E4fwtQslrJ0C1-0E,5584 +django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po,sha256=dJWCRdd48kZYyhWcOrqqrBIrFKnZt5BL4Dj0pLH-vYk,6386 +django/contrib/admin/locale/tr/LC_MESSAGES/django.mo,sha256=AMH9iJeDnFNroamlplOgstt5LCDMLYaQHf11ZeHaZGA,16541 +django/contrib/admin/locale/tr/LC_MESSAGES/django.po,sha256=l554XQjF1bObdqocEkUUEOd83PS_Evs6on3YdLnzZXQ,18065 +django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo,sha256=_UZ4Vl3iMn2jr69RdNsamDcQUi8Z40gb_cXGM6v7htM,4547 +django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po,sha256=DH2pZ5OEc8jhW3gzRvq9E_Z6pUA7yayyikszK86MBYg,5070 +django/contrib/admin/locale/tt/LC_MESSAGES/django.mo,sha256=ObJ8zwVLhFsS6XZK_36AkNRCeznoJJwLTMh4_LLGPAA,12952 +django/contrib/admin/locale/tt/LC_MESSAGES/django.po,sha256=VDjg5nDrLqRGXpxCyQudEC_n-6kTCIYsOl3izt1Eblc,17329 +django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.mo,sha256=Sz5qnMHWfLXjaCIHxQNrwac4c0w4oeAAQubn5R7KL84,2607 +django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.po,sha256=_Uh3yH_RXVB3PP75RFztvSzVykVq0SQjy9QtTnyH3Qk,4541 +django/contrib/admin/locale/udm/LC_MESSAGES/django.mo,sha256=2Q_lfocM7OEjFKebqNR24ZBqUiIee7Lm1rmS5tPGdZA,622 +django/contrib/admin/locale/udm/LC_MESSAGES/django.po,sha256=L4TgEk2Fm2mtKqhZroE6k_gfz1VC-_dXe39CiJvaOPE,10496 +django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 +django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.po,sha256=ZLYr0yHdMYAl7Z7ipNSNjRFIMNYmzIjT7PsKNMT6XVk,2811 +django/contrib/admin/locale/uk/LC_MESSAGES/django.mo,sha256=JK10EB3jmFUpbEEyhY0IjzI_xn1-47n3UL8aFcIPT70,20138 +django/contrib/admin/locale/uk/LC_MESSAGES/django.po,sha256=UjHVH3lDzepPD_qTUuwPC1FVF3stpaJhzXTq4me5wUY,21839 +django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo,sha256=0PeSJdHf986VwD8vDLQLdrfJJv2Vw57c_vo8XLcu4Io,5574 +django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po,sha256=roROo3W4qdlg2-XQwUnF3rnqazVwFSQvJ3wnyYBYXrU,6256 +django/contrib/admin/locale/ur/LC_MESSAGES/django.mo,sha256=HvyjnSeLhUf1JVDy759V_TI7ygZfLaMhLnoCBJxhH_s,13106 +django/contrib/admin/locale/ur/LC_MESSAGES/django.po,sha256=BFxxLbHs-UZWEmbvtWJNA7xeuvO9wDc32H2ysKZQvF4,17531 +django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.mo,sha256=eYN9Q9KKTV2W0UuqRc-gg7y42yFAvJP8avMeZM-W7mw,2678 +django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.po,sha256=Nj-6L6axLrqA0RHUQbidNAT33sXYfVdGcX4egVua-Pk,4646 +django/contrib/admin/locale/vi/LC_MESSAGES/django.mo,sha256=jl3bBXOh26m8Egaw3N8VIs_x4Gnf_iUmLZVW2zyaTpU,14951 +django/contrib/admin/locale/vi/LC_MESSAGES/django.po,sha256=eDAYTe4FiiMZO3dzMFu_3qNqYDC7s1gXRUeBSOePIrQ,17618 +django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.mo,sha256=M_wqHg1NO-I7xfY-mMZ29BqUAqGzlizgJ3_DIGBWOUc,3733 +django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po,sha256=d3YtQhNuCqtfMO3u5-6zoNhhGBNYkoUhTrxz7I3PRkQ,5018 +django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=NSmADSF_aWntgUC5L_-9ureIotlq308r173LP9Mk4zg,15154 +django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po,sha256=rwmGfveq0K18ua5DyMcTXlWxnFICex4ZD2F5MoZN0Hk,16754 +django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo,sha256=hHInOZe0GSIyBaXEax7mVKbf-pbDVZViNRPD2ia9fLE,4230 +django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po,sha256=lDyl7tV3bT5CTtfrzdcVbTlxahnhwPvs5R33Ig1Govk,4911 +django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=kEKX-cQPRFCNkiqNs1BnyzEvJQF-EzA814ASnYPFMsw,15152 +django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.po,sha256=iH3w7Xt_MelkZefKi8F0yAWN6QGdQCJBz8VaFY4maUg,16531 +django/contrib/admin/locale/zh_Hant/LC_MESSAGES/djangojs.mo,sha256=yFwS8aTJUAG5lN4tYLCxx-FLfTsiOxXrCEhlIA-9vcs,4230 +django/contrib/admin/locale/zh_Hant/LC_MESSAGES/djangojs.po,sha256=C4Yk5yuYcmaovVs_CS8YFYY2iS4RGi0oNaUpTm7akeU,4724 +django/contrib/admin/migrations/0001_initial.py,sha256=0p5TjterT80FOrCxhO7YqZPag-xnyRin_mQ01Qj579o,1893 +django/contrib/admin/migrations/0002_logentry_remove_auto_add.py,sha256=_7XFWubtQ7NG0eQ02MqtxXQmjBmYc6Od5rwcAiT1aCs,554 +django/contrib/admin/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/admin/static/admin/css/autocomplete.css,sha256=MGqRzeZ1idtUnRM7MnEHw7ClmOVe_Uo7SdLoudapNMU,8440 +django/contrib/admin/static/admin/css/base.css,sha256=Pplnc9jKFUDyZvspY9dqhhACUvR33cf4Lp0DkK6zEdA,16106 +django/contrib/admin/static/admin/css/changelists.css,sha256=z-w-H416nJzM01ysLRhynHH-4zyjtkoDlzRPFDARX6U,6170 +django/contrib/admin/static/admin/css/dashboard.css,sha256=M_duSlzrcec1HXMWlLXJQkFw4m6v2dgB3PRaJlWQo14,412 +django/contrib/admin/static/admin/css/fonts.css,sha256=SnBl3KjeUZqRmZw3F0iNm1YpqFhjrNC_fNN0H2TkuYc,423 +django/contrib/admin/static/admin/css/forms.css,sha256=NtSdGKiwEksxVFU-0XeP8Ijv69Zp9sMGYrZqYTh9_s8,8173 +django/contrib/admin/static/admin/css/login.css,sha256=lHpzTw50VkxttDANxGiCnANx46B8HaROciU_sRHbTRs,1203 +django/contrib/admin/static/admin/css/responsive.css,sha256=UAMABM7h5rRZ8FocJw4bfx36Q5XtIDm4ddXN8lMC4SQ,17894 +django/contrib/admin/static/admin/css/responsive_rtl.css,sha256=kdXYUgMd5uXiLthyjc1pv4VXCu9Wy8Mxk1q_f8eQNz0,1859 +django/contrib/admin/static/admin/css/rtl.css,sha256=4FQYhqc4pttIAS0ealmRFrEIwirPs7v9YK3f7DxqTEQ,3731 +django/contrib/admin/static/admin/css/widgets.css,sha256=FbxIKiGYkWjZwRMm5A_Qv-kKrhsPnfzhsF1j28eSqnA,10340 +django/contrib/admin/static/admin/css/vendor/select2/LICENSE-SELECT2.md,sha256=Py5KwtTr_nv_wJAqcAa1YqXiIY_0XyS08UQXZhXiqNo,1124 +django/contrib/admin/static/admin/css/vendor/select2/select2.css,sha256=xqxV4FDj5tslOz6MV13pdnXgf63lJwViadn__ciKmIs,17604 +django/contrib/admin/static/admin/css/vendor/select2/select2.min.css,sha256=xJOZHfpxLR_uhh1BwYFS5fhmOAdIRQaiOul5F_b7v3s,15196 +django/contrib/admin/static/admin/fonts/LICENSE.txt,sha256=Pd-b5cKP4n2tFDpdx27qJSIq0d1ok0oEcGTlbtL6QMU,11560 +django/contrib/admin/static/admin/fonts/README.txt,sha256=8aTEGqGae4MewJx-muqQ1E4xgkwarj9lGmbjKp2vOpo,137 +django/contrib/admin/static/admin/fonts/Roboto-Bold-webfont.woff,sha256=NPwBegIIh-Ky0wNS1D5R7FNrAOZV6koNgbKynKYRfUM,82564 +django/contrib/admin/static/admin/fonts/Roboto-Light-webfont.woff,sha256=ZPkI7tYTAgKLZN-hXqCYnBxc5aa-Se3BMBILeYVu6uQ,81348 +django/contrib/admin/static/admin/fonts/Roboto-Regular-webfont.woff,sha256=cX0lRkeH5ff6E_fLaT8SATtvSBNuv7JcQ-5u_Fye3-Q,80304 +django/contrib/admin/static/admin/img/LICENSE,sha256=0RT6_zSIwWwxmzI13EH5AjnT1j2YU3MwM9j3U19cAAQ,1081 +django/contrib/admin/static/admin/img/README.txt,sha256=M5PZqSUBMTJ36I0D8RMKomdAXz3aQhEvoTHXoHfiNM0,318 +django/contrib/admin/static/admin/img/calendar-icons.svg,sha256=gbMu26nfxZphlqKFcVOXpcv5zhv5x_Qm_P4ba0Ze84I,1094 +django/contrib/admin/static/admin/img/icon-addlink.svg,sha256=kBtPJJ3qeQPWeNftvprZiR51NYaZ2n_ZwJatY9-Zx1Q,331 +django/contrib/admin/static/admin/img/icon-alert.svg,sha256=aXtd9PA66tccls-TJfyECQrmdWrj8ROWKC0tJKa7twA,504 +django/contrib/admin/static/admin/img/icon-calendar.svg,sha256=_bcF7a_R94UpOfLf-R0plVobNUeeTto9UMiUIHBcSHY,1086 +django/contrib/admin/static/admin/img/icon-changelink.svg,sha256=clM2ew94bwVa2xQ6bvfKx8xLtk0i-u5AybNlyP8k-UM,380 +django/contrib/admin/static/admin/img/icon-clock.svg,sha256=k55Yv6R6-TyS8hlL3Kye0IMNihgORFjoJjHY21vtpEA,677 +django/contrib/admin/static/admin/img/icon-deletelink.svg,sha256=06XOHo5y59UfNBtO8jMBHQqmXt8UmohlSMloUuZ6d0A,392 +django/contrib/admin/static/admin/img/icon-no.svg,sha256=QqBaTrrp3KhYJxLYB5E-0cn_s4A_Y8PImYdWjfQSM-c,560 +django/contrib/admin/static/admin/img/icon-unknown-alt.svg,sha256=LyL9oJtR0U49kGHYKMxmmm1vAw3qsfXR7uzZH76sZ_g,655 +django/contrib/admin/static/admin/img/icon-unknown.svg,sha256=ePcXlyi7cob_IcJOpZ66uiymyFgMPHl8p9iEn_eE3fc,655 +django/contrib/admin/static/admin/img/icon-yes.svg,sha256=_H4JqLywJ-NxoPLqSqk9aGJcxEdZwtSFua1TuI9kIcM,436 +django/contrib/admin/static/admin/img/inline-delete.svg,sha256=Ni1z8eDYBOveVDqtoaGyEMWG5Mdnt9dniiuBWTlnr5Y,560 +django/contrib/admin/static/admin/img/search.svg,sha256=HgvLPNT7FfgYvmbt1Al1yhXgmzYHzMg8BuDLnU9qpMU,458 +django/contrib/admin/static/admin/img/selector-icons.svg,sha256=0RJyrulJ_UR9aYP7Wbvs5jYayBVhLoXR26zawNMZ0JQ,3291 +django/contrib/admin/static/admin/img/sorting-icons.svg,sha256=cCvcp4i3MAr-mo8LE_h8ZRu3LD7Ma9BtpK-p24O3lVA,1097 +django/contrib/admin/static/admin/img/tooltag-add.svg,sha256=fTZCouGMJC6Qq2xlqw_h9fFodVtLmDMrpmZacGVJYZQ,331 +django/contrib/admin/static/admin/img/tooltag-arrowright.svg,sha256=GIAqy_4Oor9cDMNC2fSaEGh-3gqScvqREaULnix3wHc,280 +django/contrib/admin/static/admin/img/gis/move_vertex_off.svg,sha256=ou-ppUNyy5QZCKFYlcrzGBwEEiTDX5mmJvM8rpwC5DM,1129 +django/contrib/admin/static/admin/img/gis/move_vertex_on.svg,sha256=DgmcezWDms_3VhgqgYUGn-RGFHyScBP0MeX8PwHy_nE,1129 +django/contrib/admin/static/admin/js/SelectBox.js,sha256=xB_jbdmwUFitjqFcGankTIkhcTGaluR9rmBoVy0w4fg,5755 +django/contrib/admin/static/admin/js/SelectFilter2.js,sha256=haJFnUq97-Uat1iVigFh9y0ssqTcIjKjba8NbHkv5fA,12680 +django/contrib/admin/static/admin/js/actions.js,sha256=PveOc3V1J5uCsTIgKlujfaZjXgXh_grkxGNgZUuPV_4,6502 +django/contrib/admin/static/admin/js/actions.min.js,sha256=5yXpKSwzdlPdUsxCu_yrYTa68mJuNyD5Pzs6kbaSeiI,3161 +django/contrib/admin/static/admin/js/autocomplete.js,sha256=LgImTP2VTEaJKqxBqvJKRa-mfenZBjeVg7LnHetaxQU,1124 +django/contrib/admin/static/admin/js/calendar.js,sha256=8ej_F8SBtoFhNmmoLwONpyVwOJHd5JBWUMe1mwgxpwE,7777 +django/contrib/admin/static/admin/js/cancel.js,sha256=A9TJZ9Ih6xWf-3ETNJXwXYgzCRu6BlMQhncwS6KWiSk,204 +django/contrib/admin/static/admin/js/change_form.js,sha256=J-beGDyqR6uyb3iW_OI9Yo0ZFrfwJVqNFFDeL7-njqA,712 +django/contrib/admin/static/admin/js/collapse.js,sha256=089NhKcy5cbhzScg6vWEfoXxItzFpxVsYYJ2C7KMQUE,1151 +django/contrib/admin/static/admin/js/collapse.min.js,sha256=2ouFB9PV4qb6btAYqFc-mMUc651Jq4ZPVXJ7AaF_ZTY,1634 +django/contrib/admin/static/admin/js/core.js,sha256=9XcoubW_oyev18M3x8f82mYQ7S2IyL75jZmu4XaIdBo,7134 +django/contrib/admin/static/admin/js/inlines.js,sha256=l9QepZOAUgZ9rEJ-OcR_3Lh3JQtsza9H8y3k0CLBvqE,13673 +django/contrib/admin/static/admin/js/inlines.min.js,sha256=rQt0u9jd1SyYaNhQWb34UHBxRMctRmtIT1O7WMJK3Rc,5824 +django/contrib/admin/static/admin/js/jquery.init.js,sha256=Gr-yEd61wY6uBDMhOaVq-amfciz7EZhMvJfai_WxrHE,363 +django/contrib/admin/static/admin/js/popup_response.js,sha256=7XyHe9SDYkB8OMxF7fhL6N5l4Oxf-gXqzGlpPK63tcc,569 +django/contrib/admin/static/admin/js/prepopulate.js,sha256=PCNwmurilcnTH8ve8QXdAM0rHHWvLIaCU6HEnyRKJyg,1538 +django/contrib/admin/static/admin/js/prepopulate.min.js,sha256=pVBz-2RAxr0d6ebCNjkfOEiUXtd9f6Ppwtl7HOHw2Pk,372 +django/contrib/admin/static/admin/js/prepopulate_init.js,sha256=uD3_ZoYfJ62mcSgqzHfePA3Y5jaOBjxn7SU0LuYFgEE,495 +django/contrib/admin/static/admin/js/timeparse.js,sha256=oVk0xpGmRjS0V2sMsjGulzMSNDvIr1gQ6_fpivvh_kQ,2984 +django/contrib/admin/static/admin/js/urlify.js,sha256=58xpviBrxcL0ojOn0tAyAUfcqMCcA74qQZtpJ7_gN9c,8729 +django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js,sha256=R2WRhH2444LARslaEB01MB8MyLh_XnRvuUJiVvnAYV0,20283 +django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js,sha256=GEruiyMhTd6Q5pX-C5z3z0Xv4BMcpGFKuonaAYuSW0A,6897 +django/contrib/admin/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt,sha256=GIg3JQapSjFSu38FkC7Wm4cW4HUcvoWPb0YdP5LxKfU,1282 +django/contrib/admin/static/admin/js/vendor/jquery/jquery.js,sha256=laXWtGydpwqJ8JA-X9x2miwmaiKhn8tVmOVEigRNtP4,258648 +django/contrib/admin/static/admin/js/vendor/jquery/jquery.min.js,sha256=a23g1Nt4dtEYOj7bR-vTu7-T8VP13humZFBJNIYoEJo,85659 +django/contrib/admin/static/admin/js/vendor/select2/LICENSE-SELECT2.md,sha256=Py5KwtTr_nv_wJAqcAa1YqXiIY_0XyS08UQXZhXiqNo,1124 +django/contrib/admin/static/admin/js/vendor/select2/select2.full.js,sha256=nwWu44AW64pJgDdb4wY7wcWkfUPTfBgwjHkIsnBFUE4,161832 +django/contrib/admin/static/admin/js/vendor/select2/select2.full.min.js,sha256=FJuLxhiJiX-5Qgs0c2JYLIyJ5i0o4ccg6DQ6zgitCYY,75005 +django/contrib/admin/static/admin/js/vendor/select2/i18n/ar.js,sha256=fgVH5qCYQqvtWwa8MGiOx4VSKCg5d_BkMbaknNoncWw,887 +django/contrib/admin/static/admin/js/vendor/select2/i18n/az.js,sha256=WWCwFlKHxZLGDAAacF2YQr1PG6tyPXg7We5DluFuhy4,701 +django/contrib/admin/static/admin/js/vendor/select2/i18n/bg.js,sha256=Lk9-DE7eC6VpLXhcuqR8ggkcZ_AgwJEG3dLADTyMbZs,906 +django/contrib/admin/static/admin/js/vendor/select2/i18n/ca.js,sha256=f1f8z2aYYgqr6cv7AUE_opdjU_XIUDAMvzsSvODkZpA,876 +django/contrib/admin/static/admin/js/vendor/select2/i18n/cs.js,sha256=6WZZ97shyY3gGqfAXak1RDwtD2lVkMPA0jEwwqR30d0,1236 +django/contrib/admin/static/admin/js/vendor/select2/i18n/da.js,sha256=Q-ozOz1DL2NBOPIypU8vjoCxaCiZqJ2rY7_JBQcjrBk,818 +django/contrib/admin/static/admin/js/vendor/select2/i18n/de.js,sha256=mtjCIpmIYVw5CLf7IpjBWp6VtFzdKh_YtZFtpIeIStc,775 +django/contrib/admin/static/admin/js/vendor/select2/i18n/el.js,sha256=HbjnKG1fGks6EHWR6103C5kk8rMLE5_rsPGx9d1jxKY,1132 +django/contrib/admin/static/admin/js/vendor/select2/i18n/en.js,sha256=B-OOZousHwJa-Uuf48D4XzfPJSKCQ3vH_LidT-9KT0c,827 +django/contrib/admin/static/admin/js/vendor/select2/i18n/es.js,sha256=yqV8yK-bz_cS9XBVDUQmbKSykDsXHcqgxlKbPyxDIdw,871 +django/contrib/admin/static/admin/js/vendor/select2/i18n/et.js,sha256=mewAy-15ytAbjTqxZrEZj3p9KebGjBMphc2mIlpgeAE,775 +django/contrib/admin/static/admin/js/vendor/select2/i18n/eu.js,sha256=pmySl5IBT6bSgcOVug5n-518CxqpGf63RUYnwfdq-m8,844 +django/contrib/admin/static/admin/js/vendor/select2/i18n/fa.js,sha256=47-FmirjxeJnuR_90g3OU4DyBYdDXSL0_8qjZ2rnI7U,1004 +django/contrib/admin/static/admin/js/vendor/select2/i18n/fi.js,sha256=CqyMDXQHszgqi0HzoPM0-DtJQGVKAHFCxQq8JDO7zxY,703 +django/contrib/admin/static/admin/js/vendor/select2/i18n/fr.js,sha256=pjC1r5EyH3ebWwWk_DF2mH0Y58yQvOEG6slmjh__SoQ,902 +django/contrib/admin/static/admin/js/vendor/select2/i18n/gl.js,sha256=WObjYM2vK4OgLqH8fS5H_25e_GjqvAOwshQEwJiUT_k,800 +django/contrib/admin/static/admin/js/vendor/select2/i18n/he.js,sha256=RHcoZ7GaEGyF6TaLim-eW4FoQHJJZkPX1XCLpxuakDg,951 +django/contrib/admin/static/admin/js/vendor/select2/i18n/hi.js,sha256=hTkDBVj8ZSlpkXv7JXNWBN3NWxc8lZPBio3ERyy5NQw,1125 +django/contrib/admin/static/admin/js/vendor/select2/i18n/hr.js,sha256=83bnotTzaNwZmyOhQYT6UlRKflq2tqTWn7Wd9SNbY18,839 +django/contrib/admin/static/admin/js/vendor/select2/i18n/hu.js,sha256=OiDzwQj-cuXGt3NNDQw1wN2jaOjob4uDPUk2mU8D5Bs,727 +django/contrib/admin/static/admin/js/vendor/select2/i18n/id.js,sha256=4ccurwgeaJOSzk97ZFplJ2j4UePW47_mZ14fd1l9k5Y,752 +django/contrib/admin/static/admin/js/vendor/select2/i18n/is.js,sha256=6XBFQypKZoXi46_cW5oCQVFnbOvV0tmbsylkIuf2jNI,773 +django/contrib/admin/static/admin/js/vendor/select2/i18n/it.js,sha256=0u_2rM4AQ5f31vCb-GyMsqRm5UiioLlYZQML0GJZft0,876 +django/contrib/admin/static/admin/js/vendor/select2/i18n/ja.js,sha256=iVNfAjWOdeLGYsPy54JSqQ70Q7LGO7T9BshHeos1YoQ,848 +django/contrib/admin/static/admin/js/vendor/select2/i18n/km.js,sha256=CEd7gx5c131ZQEim-sdwFnM-8R_W4ILk3s3B59pqMcI,1065 +django/contrib/admin/static/admin/js/vendor/select2/i18n/ko.js,sha256=PZqna7eaSjadvZWOF-EwX0oQ9MD1jHRpRqsv3ieZXHc,854 +django/contrib/admin/static/admin/js/vendor/select2/i18n/lt.js,sha256=4aX2ESzIxXXM_45PjloFzbdOkEBvG8l0Lzbn9a07S-Y,913 +django/contrib/admin/static/admin/js/vendor/select2/i18n/lv.js,sha256=m_9yurF2g_oLJPoFsrFyyUOooOjSde5x9jLllVgYa68,872 +django/contrib/admin/static/admin/js/vendor/select2/i18n/mk.js,sha256=AzBhv0x9TUGCUeNsuSSN3UnT1wSBZhtgp9B7LoXccHs,979 +django/contrib/admin/static/admin/js/vendor/select2/i18n/ms.js,sha256=--btj7UZrXBbhKESfI-z_6YxYJXAlkTxPIEXateVQ54,791 +django/contrib/admin/static/admin/js/vendor/select2/i18n/nb.js,sha256=gQM3p_YY-hjZ9own3O0rZJYHqK4CYxFBJTrkTvICyK8,785 +django/contrib/admin/static/admin/js/vendor/select2/i18n/nl.js,sha256=4N5ht1J1MjVCGRqU8Dzo81MZhKeQxAo-fvMDqaiQosg,896 +django/contrib/admin/static/admin/js/vendor/select2/i18n/pl.js,sha256=ir3_tPNqhQ6ri-J3YyOlsZJrbdBvUC3ibpYsEfdMtgg,925 +django/contrib/admin/static/admin/js/vendor/select2/i18n/pt-BR.js,sha256=nfaZQpzSrOFJ0VRsxEmlH6azVlcRQpilM7-uHZbD3r0,853 +django/contrib/admin/static/admin/js/vendor/select2/i18n/pt.js,sha256=0Hmb5IG2hPFnhMzYFjMOza5OIqJEiD7WlqHy6YDNzQA,859 +django/contrib/admin/static/admin/js/vendor/select2/i18n/ro.js,sha256=oLsIzIZQGT7HZqhJ8DXqoiP1JE4OnSQPRBAMWXhvdSM,909 +django/contrib/admin/static/admin/js/vendor/select2/i18n/ru.js,sha256=YOIol4UzD2BGvz28zaarwdUDawpKTmEpIcvkwakmAHQ,1127 +django/contrib/admin/static/admin/js/vendor/select2/i18n/sk.js,sha256=T5nCVJX52HimSLw8yrMKTSdvLbSysaopsKtoknIoNhg,1184 +django/contrib/admin/static/admin/js/vendor/select2/i18n/sr-Cyrl.js,sha256=s5f_D0U7r2thU6UPBAJJ8rzKFUQmRgzE5Y3K07amhbk,1067 +django/contrib/admin/static/admin/js/vendor/select2/i18n/sr.js,sha256=zRM5Y0fpg0u0V7rkR4-ZgHELW2gj4YDEDa0sx_zye2o,938 +django/contrib/admin/static/admin/js/vendor/select2/i18n/sv.js,sha256=UEGr4C1Cs20s2iaMBzmWDew9hlVg8h9ZQZvVpwGnwXI,786 +django/contrib/admin/static/admin/js/vendor/select2/i18n/th.js,sha256=TbMY7IxUby7KiZKng-SEHvCavoks7d8hN77192lLfMY,951 +django/contrib/admin/static/admin/js/vendor/select2/i18n/tr.js,sha256=yqv5e--8eGpw9uZDk0GAfR0nxYnYdj5qegnFHxSAjM4,720 +django/contrib/admin/static/admin/js/vendor/select2/i18n/uk.js,sha256=LsPBQ5q5xisqXxgdV4Yf8CU8FO7mhnYRUxm7tJXNl4E,1117 +django/contrib/admin/static/admin/js/vendor/select2/i18n/vi.js,sha256=ZWpJDPBtRbDJ3YyQ4Z02Le6BRnN0gRxSAoFzYqFE7Nw,801 +django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-CN.js,sha256=J4dFzbG57aghBD5x1PmkURHSi5y6AytiJgcl9iq-3z0,769 +django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-TW.js,sha256=zqyrNXby3B33G7De41AQ-OFpy-Cgi3vTXZm_-IGnsXY,708 +django/contrib/admin/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt,sha256=tyAi9RwLIDwjSrjyBhtyJIkgOHWM469_UzZTr1MmRys,1103 +django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js,sha256=TjYx21bQgQXDFTdvSqSUh7S8TkYRjT4L4X-SlWNR8CE,128820 +django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.min.js,sha256=E-Plu9EZfyt0PJCSYrCkHuPquVVj9V7g7jQklIOgGDU,62474 +django/contrib/admin/templates/admin/404.html,sha256=o528Ro8Q0JMgd7mtszp8nl1ADHNA12AyclVdmGQnYGc,268 +django/contrib/admin/templates/admin/500.html,sha256=AUIdN7Ka_1KRAGzvo1GvwAHCSJNIbo8oNSF07cMKcj4,527 +django/contrib/admin/templates/admin/actions.html,sha256=FQYsvoJrq949UZHjL1j65Ne_gnSHmMMbgSfUhE-1ciM,1012 +django/contrib/admin/templates/admin/app_index.html,sha256=BSJsWtgum_H2hCxcb2xe-XJozbVOVpUBN_KTe8pcRts,385 +django/contrib/admin/templates/admin/base.html,sha256=oK_cRQ70cxqj0vFdKS0EulJeGPrnJ_ODnjcKZfy6uLA,3668 +django/contrib/admin/templates/admin/base_site.html,sha256=1v0vGrcN4FNEIF_VBiQE6yf2HPdkKhag2_v0AUsaGmM,316 +django/contrib/admin/templates/admin/change_form.html,sha256=Ta-hNbm9cOOU4ht4OpFaYW5r19mtgWn4jJC79gRB5vY,3356 +django/contrib/admin/templates/admin/change_list.html,sha256=zoB-LaxqWYhG4ftnYmjm7K1EqBr4nXlU-dG4nOnueBc,3253 +django/contrib/admin/templates/admin/change_list_results.html,sha256=jZ9lN7EYWsG9Gt7_4eA-HjXHic46v-Dl-e61ruSFWVE,1553 +django/contrib/admin/templates/admin/date_hierarchy.html,sha256=uW1_ZMd-7biE28Ix2pQiY1lTvRX1VjyZhUkp-IHA0NI,372 +django/contrib/admin/templates/admin/delete_confirmation.html,sha256=-TrukS8C9205zRv63WI7s9WOa0-O42_jsClKCE_SgSA,2405 +django/contrib/admin/templates/admin/delete_selected_confirmation.html,sha256=856nsJUtL_3yArQAFdJFKI2WCiV8Z3VoLd8F8TUCy7s,2320 +django/contrib/admin/templates/admin/filter.html,sha256=A59SgwTTgEf2iYjV0IiDIixSZ7yCu1Fs66n0Vguu-NI,330 +django/contrib/admin/templates/admin/index.html,sha256=lwKJMWsD4tdmZRUeutXWAqUWch-DmFZAJh3dwEnH-Ek,2983 +django/contrib/admin/templates/admin/invalid_setup.html,sha256=58ugkYPi6FHmS--y77fhLAdUr4PyrtGwTg6-hm0_Xxg,437 +django/contrib/admin/templates/admin/login.html,sha256=l5s6CMlDeZ7_9nea9JAarSO8ECJ7JgKyrpdfpYxXjKc,1876 +django/contrib/admin/templates/admin/object_history.html,sha256=tjE0pTYaSM43e8QxjNabL2FmrB5wPKm8V3jpuziwPdI,1444 +django/contrib/admin/templates/admin/pagination.html,sha256=h5ZgDSNezRlvz22KhtaRY-3GCnEe8AjRcjCfEktVgWA,554 +django/contrib/admin/templates/admin/popup_response.html,sha256=DDlE_fEKHsGvPcSRy4zFAw_czr3hcCj6YcKRXBNfQEM,358 +django/contrib/admin/templates/admin/prepopulated_fields_js.html,sha256=Q3QxBgVvxePpiz502FjSHOS3szSlHkvUQoPe8sF1YDs,245 +django/contrib/admin/templates/admin/related_widget_wrapper.html,sha256=0xA6-N9cO3ED4W397pwjvjbj5ZS5yhZjeqe89Ri6VHs,1397 +django/contrib/admin/templates/admin/search_form.html,sha256=umCPvMnvXX_BlHs_296pKniVn7Ycg-nKk3nKwrwNAQc,1027 +django/contrib/admin/templates/admin/submit_line.html,sha256=CvdFFZBKfGcspS2MgJbmmDCwcHv9hG9NPBxJ_MzY530,790 +django/contrib/admin/templates/admin/auth/user/add_form.html,sha256=pMsoxDLGJDzjIkcMmKdTYEnUzZ1ESEhBeDLCW17XN5k,310 +django/contrib/admin/templates/admin/auth/user/change_password.html,sha256=a3gZLx4MfgZJrj_fllruwyfy293mmMmVqjcvmsA5dIc,2347 +django/contrib/admin/templates/admin/edit_inline/stacked.html,sha256=fn7GWmIBXEj3ShZ7zzfsQvNzYk5v_tZtzy1C7rWVqAI,2092 +django/contrib/admin/templates/admin/edit_inline/tabular.html,sha256=AZ8eO6PNTKrrRZaaGrhWNbcublSExIKyvz3eJoeOy7c,3897 +django/contrib/admin/templates/admin/includes/fieldset.html,sha256=-_S9dzsEGnmo10xioe7v833gY3tGHBIphzOJ_8rM1fM,1788 +django/contrib/admin/templates/admin/includes/object_delete_summary.html,sha256=i_I2BADSutoccAxARIwbP4VRlDHsag-llDOi3kjcoXw,188 +django/contrib/admin/templates/admin/widgets/clearable_file_input.html,sha256=xmlmv2ioEI6ozk5KbzBjC75SNKuYlO07EzjANQ8tH4w,574 +django/contrib/admin/templates/admin/widgets/foreign_key_raw_id.html,sha256=0-PzMOEe3KSRVOBeivruUc8nJRcziIqWO-DyU8pvgEE,346 +django/contrib/admin/templates/admin/widgets/many_to_many_raw_id.html,sha256=w18JMKnPKrw6QyqIXBcdPs3YJlTRtHK5HGxj0lVkMlY,54 +django/contrib/admin/templates/admin/widgets/radio.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 +django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html,sha256=QBovkKbXrGTBy7DzbWQ3Q16WihHW8txvWgV6vdumbnw,1406 +django/contrib/admin/templates/admin/widgets/split_datetime.html,sha256=ORI1EM3mf4g49PgEE6GWTpVnXdRpKP-0dPtLCbDEHQ0,240 +django/contrib/admin/templates/admin/widgets/url.html,sha256=HDc93YIZhUNe-2gXKLt4SFwrap_wE68aaJXY5JcXCVs,226 +django/contrib/admin/templates/registration/logged_out.html,sha256=9NdzlTMq7QQpj2ftUqZ7FPeHDv0KYbjETF8qMJVGGqI,374 +django/contrib/admin/templates/registration/password_change_done.html,sha256=ldLa6UAVgn_FiKQ9TkO2EZraTBZx1URJrRGOn-_VZJs,671 +django/contrib/admin/templates/registration/password_change_form.html,sha256=W8eYpuusNCZ6EZRkT--QWyXR5rHDienElsw-cMDjB1w,2050 +django/contrib/admin/templates/registration/password_reset_complete.html,sha256=RD0DbFybLTVfHtkU4yN7HG3YXY-xs_BLVgl3vSB7czU,505 +django/contrib/admin/templates/registration/password_reset_confirm.html,sha256=oEDhtdzhrmIc9BhaAgaxvw0qBcpI4I_BQLt5GE8teXI,1373 +django/contrib/admin/templates/registration/password_reset_done.html,sha256=ofGCzPs--2mOPLlGcTbZJAoZQkEpfwFb5reLxaKq12g,669 +django/contrib/admin/templates/registration/password_reset_email.html,sha256=d_NtuuiWTS9AZu6qObmp-lux0UkUCdA9ZUIUKyYJeHE,582 +django/contrib/admin/templates/registration/password_reset_form.html,sha256=b-wxQ_mk7FtqeJ6KQcXbEeXlMWCaiNGafj-7dPeHfDg,970 +django/contrib/admin/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/admin/templatetags/admin_list.py,sha256=6yW09uGViJQ-yLdvoql3q7JnXKdDD408M4l7jeucTjk,16860 +django/contrib/admin/templatetags/admin_modify.py,sha256=uQy-5HqVSeZWnfH98AjGmjIR6oR1rm9Yt71xQYieMhk,3004 +django/contrib/admin/templatetags/admin_static.py,sha256=yDOpxEP2OK0N0e4-wbVd2vepUUmgGPJ7-SYxAE0rJ_4,304 +django/contrib/admin/templatetags/admin_urls.py,sha256=19YZ6jO3NIhyyfHvmBU2UWCJpkxCILIWbXRB7SWPZiQ,1773 +django/contrib/admin/templatetags/log.py,sha256=mxV6mvfVJo0qRCelkjRBNWfrurLABhZvGQlcp5Bn4IU,2079 +django/contrib/admin/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/admin/views/autocomplete.py,sha256=7uZSnvQ1GPdYx6zDEJjCoqIqng8piIzrSmlIPjOJADM,1964 +django/contrib/admin/views/decorators.py,sha256=J4wYcyaFr_-xY1ANl6QF4cFhOupRvjjmBotN0FshVYg,658 +django/contrib/admin/views/main.py,sha256=9NsN36bB79iNYywLeN5FueTjts1FLgeEETMcKuFl2Fk,16874 +django/contrib/admindocs/__init__.py,sha256=oY-eBzAOwpf5g222-vlH5BWHpDzpkj_DW7_XGDj7zgI,69 +django/contrib/admindocs/apps.py,sha256=rV3aWVevgI6o8_9WY0yQ62O5CSMRRZrVwZFt1gpfKk0,216 +django/contrib/admindocs/middleware.py,sha256=j9Anxm6K7DVThuWTeTHgfadMstpRdR4zizJHw9j_lYs,1296 +django/contrib/admindocs/urls.py,sha256=zdHaV60yJMjuLqO9xU0H-j7hz1PmSsepEWZA2GH-eI0,1310 +django/contrib/admindocs/utils.py,sha256=kfCASCLPgCYySKSH2GumnAHWgnHau9n93D_5PhgKEJ4,7961 +django/contrib/admindocs/views.py,sha256=4iuHM403VE_ucFh_VD7u5KHmSL-B6CmbVhoho3nVYZI,16994 +django/contrib/admindocs/locale/af/LC_MESSAGES/django.mo,sha256=GFydi1uBAAkOzJP0FXBCbQFNzX9jK7xqXNsiK7JsOwM,705 +django/contrib/admindocs/locale/af/LC_MESSAGES/django.po,sha256=7nIsCfz1HabA8oPvLBqaofdN8nlFYRi3roXxDpUe_Hs,4680 +django/contrib/admindocs/locale/ar/LC_MESSAGES/django.mo,sha256=IoUExlNwqSYql6zMAuXcFt0cmkjMc_i0fb0qp7cBQlA,7286 +django/contrib/admindocs/locale/ar/LC_MESSAGES/django.po,sha256=KT8AOJeiYBk4dyJCyLnHAQJcOP3Fjw6XHOjmHsJ9pEY,7924 +django/contrib/admindocs/locale/ast/LC_MESSAGES/django.mo,sha256=d4u-2zZXnnueWm9CLSnt4TRWgZk2NMlrA6gaytJ2gdU,715 +django/contrib/admindocs/locale/ast/LC_MESSAGES/django.po,sha256=TUkc-Hm4h1kD0NKyndteW97jH6bWcJMFXUuw2Bd62qo,4578 +django/contrib/admindocs/locale/az/LC_MESSAGES/django.mo,sha256=yWjmqVrGit7XjELYepZ9R48eOKma5Wau2RkkSSiJrgc,1687 +django/contrib/admindocs/locale/az/LC_MESSAGES/django.po,sha256=wGdq-g4u8ssHHvODJB-knjZdrP6noxRW9APn_kmOz7w,4993 +django/contrib/admindocs/locale/be/LC_MESSAGES/django.mo,sha256=KY94OxY-NFsFbfZG9cFw77xw68YLDWyuYs04rxwpyU8,8185 +django/contrib/admindocs/locale/be/LC_MESSAGES/django.po,sha256=ijhluxI7Wn9PcZUDG3O8VpRsRVU6AYwZEdkUBfgXAS0,8707 +django/contrib/admindocs/locale/bg/LC_MESSAGES/django.mo,sha256=n9GdBZljKJBmfups8Zt82lpHgEWvonacXztOS6qbAjM,7837 +django/contrib/admindocs/locale/bg/LC_MESSAGES/django.po,sha256=SrmOtJ6nOi3lrgEwr-s76jYzN7lZs05dbEwh9OFxFHU,8692 +django/contrib/admindocs/locale/bn/LC_MESSAGES/django.mo,sha256=NOKVcE8id9G1OctSly4C5lm64CgEF8dohX-Pdyt4kCM,3794 +django/contrib/admindocs/locale/bn/LC_MESSAGES/django.po,sha256=6M7LjIEjvDTjyraxz70On_TIsgqJPLW7omQ0Fz_zyfQ,6266 +django/contrib/admindocs/locale/br/LC_MESSAGES/django.mo,sha256=dxEi_MIOMsiHtDRZwhHnvst54jP1Y18NPEy4v7B-6uI,706 +django/contrib/admindocs/locale/br/LC_MESSAGES/django.po,sha256=GAovZYbTZJ6wcLz7Wc0u8FhXvFD68nV7Cs7JOCs6McA,4572 +django/contrib/admindocs/locale/bs/LC_MESSAGES/django.mo,sha256=clvhu0z3IF5Nt0tZ85hOt4M37pnGEWeIYumE20vLpsI,1730 +django/contrib/admindocs/locale/bs/LC_MESSAGES/django.po,sha256=1-OrVWFqLpeXQFfh7JNjJtvWjVww7iB2s96dcSgLy90,5042 +django/contrib/admindocs/locale/ca/LC_MESSAGES/django.mo,sha256=RZp6R180mKEuO_zKKaMfhP8qDQge9obnuF4qKxvn7Mk,6681 +django/contrib/admindocs/locale/ca/LC_MESSAGES/django.po,sha256=xZfd_o522aYaeqISmPK9vpSuDAWS4XJ1ODULTzaDFg8,7337 +django/contrib/admindocs/locale/cs/LC_MESSAGES/django.mo,sha256=VNltiwoPS5USDnvrYfs_GfzUEO3FYtqKH_jkle5vAoY,6588 +django/contrib/admindocs/locale/cs/LC_MESSAGES/django.po,sha256=1hoetCtTnTTHxG8SijCTqltOJbguOMnfho-ZvXCaI2A,7150 +django/contrib/admindocs/locale/cy/LC_MESSAGES/django.mo,sha256=sYeCCq0CMrFWjT6rKtmFrpC09OEFpYLSI3vu9WtpVTY,5401 +django/contrib/admindocs/locale/cy/LC_MESSAGES/django.po,sha256=GhdikiXtx8Aea459uifQtBjHuTlyUeiKu0_rR_mDKyg,6512 +django/contrib/admindocs/locale/da/LC_MESSAGES/django.mo,sha256=SWw8DiXbYPQCc8nwUPOt68FRUgrd_Eb7Dw9SqKXWrhY,6458 +django/contrib/admindocs/locale/da/LC_MESSAGES/django.po,sha256=_j2DkNr1pVGMcVLA4F1lzurLyS8ElKR4w8qWyhSlUOw,7062 +django/contrib/admindocs/locale/de/LC_MESSAGES/django.mo,sha256=6KJ9OfmvE6yzBF-n6sboLq4vv_o0uhLeevUEAZj-uEo,6585 +django/contrib/admindocs/locale/de/LC_MESSAGES/django.po,sha256=y2kXww5nrZpLJZtWm45d1hUCCq2HeplU9hAtDiOj9qo,7097 +django/contrib/admindocs/locale/dsb/LC_MESSAGES/django.mo,sha256=jJNiddLBOMe9oeadm1h4iDRUqaTmfbJ28fS3h141VCk,6836 +django/contrib/admindocs/locale/dsb/LC_MESSAGES/django.po,sha256=MQQidlh2Ljp0ChO92tVJ_gkbTC0kpEbNAMOC2F903qM,7314 +django/contrib/admindocs/locale/el/LC_MESSAGES/django.mo,sha256=dJy15irtJqzPFc_yHS3LTeXYmPu0-bIlyrDPfbE5pSE,8598 +django/contrib/admindocs/locale/el/LC_MESSAGES/django.po,sha256=82wcERwp7_v3l66v3GKdlT-lVGhwGs8DK0184SbV3zk,9259 +django/contrib/admindocs/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/admindocs/locale/en/LC_MESSAGES/django.po,sha256=nR84XXUZlLxu-CriBHo6ljWVqGmeARQvZVvyIIF6JHY,10680 +django/contrib/admindocs/locale/en_AU/LC_MESSAGES/django.mo,sha256=BQ54LF9Tx88m-pG_QVz_nm_vqvoy6pVJzL8urSO4l1Q,486 +django/contrib/admindocs/locale/en_AU/LC_MESSAGES/django.po,sha256=ho7s1uKEs9FGooyZBurvSjvFz1gDSX6R4G2ZKpF1c9Q,5070 +django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.mo,sha256=xKGbswq1kuWCbn4zCgUQUb58fEGlICIOr00oSdCgtU4,1821 +django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.po,sha256=No09XHkzYVFBgZqo7bPlJk6QD9heE0oaI3JmnrU_p24,4992 +django/contrib/admindocs/locale/eo/LC_MESSAGES/django.mo,sha256=cwozZwZY0TylDQe7JguENqwGIqVhq0PCHK0htOixhsA,6391 +django/contrib/admindocs/locale/eo/LC_MESSAGES/django.po,sha256=WvbW_97wH7tBCbQqzDi0sr4hbsL74V621Bn7lFrMQ4U,6879 +django/contrib/admindocs/locale/es/LC_MESSAGES/django.mo,sha256=OYjdorHASk8cvZfzh4S1tzsB8ukZZQqEP8CJ8ZZD_-w,6673 +django/contrib/admindocs/locale/es/LC_MESSAGES/django.po,sha256=0d-YNcIC4QxJ4c0J62mqCjz7CbrgZZx1J_E4t7PPk7M,7516 +django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.mo,sha256=1-41H1OzEb3L-4LV9OfnbazGm0VQ5oPRxjOpxnjvjLA,6691 +django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.po,sha256=VBSHCqICgxdcVhVH4OvIvocIlv5BOP2QI6xQBgWp3Lk,7247 +django/contrib/admindocs/locale/es_CO/LC_MESSAGES/django.mo,sha256=KFjQyWtSxH_kTdSJ-kNUDAFt3qVZI_3Tlpg2pdkvJfs,6476 +django/contrib/admindocs/locale/es_CO/LC_MESSAGES/django.po,sha256=dwrTVjYmueLiVPu2yiJ_fkFF8ZeRntABoVND5H2WIRI,7038 +django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.mo,sha256=3hZiFFVO8J9cC624LUt4lBweqmpgdksRtvt2TLq5Jqs,1853 +django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.po,sha256=gNmx1QTbmyMxP3ftGXGWJH_sVGThiSe_VNKkd7M9jOY,5043 +django/contrib/admindocs/locale/es_VE/LC_MESSAGES/django.mo,sha256=sMwJ7t5GqPF496w-PvBYUneZ9uSwmi5jP-sWulhc6BM,6663 +django/contrib/admindocs/locale/es_VE/LC_MESSAGES/django.po,sha256=ZOcE0f95Q6uD9SelK6bQlKtS2c3JX9QxNYCihPdlM5o,7201 +django/contrib/admindocs/locale/et/LC_MESSAGES/django.mo,sha256=cQwLB8r0hRdWCxp2P8atYGambrKLR18GorVlp_O995M,6402 +django/contrib/admindocs/locale/et/LC_MESSAGES/django.po,sha256=Q3hVcRl3jtexQufNAZWacz3F_VRL1IctRMXYxdXArNE,7009 +django/contrib/admindocs/locale/eu/LC_MESSAGES/django.mo,sha256=WHgK7vGaqjO4MwjBkWz2Y3ABPXCqfnwSGelazRhOiuo,6479 +django/contrib/admindocs/locale/eu/LC_MESSAGES/django.po,sha256=718XgJN7UQcHgE9ku0VyFp7Frs-cvmCTO1o-xS5kpqc,7099 +django/contrib/admindocs/locale/fa/LC_MESSAGES/django.mo,sha256=vpV8y738ijv-UNjfjHMQJXWSCFz5TI_x-MxMur26YEA,7527 +django/contrib/admindocs/locale/fa/LC_MESSAGES/django.po,sha256=Sr9omRw87ylh6cltzJUTxaf3XkkgrMMmTgmTiEYOjaw,8193 +django/contrib/admindocs/locale/fi/LC_MESSAGES/django.mo,sha256=-iPQyWSVn46CF-huqytiomENda1cM0VGAnnVRlwlezQ,6413 +django/contrib/admindocs/locale/fi/LC_MESSAGES/django.po,sha256=AG_WPvp2-c8mQy_Gp4tUACvqN-ACKbr-jxMKb86ilKQ,6945 +django/contrib/admindocs/locale/fr/LC_MESSAGES/django.mo,sha256=9zA2vLYc2wdtnOE2fISo6gd6odAfJARyM3jhwptf2hU,6790 +django/contrib/admindocs/locale/fr/LC_MESSAGES/django.po,sha256=ky8I8laqpSvJSPmqWd5S3kaIVb0QVv1aciUeGxlc3vY,7312 +django/contrib/admindocs/locale/fy/LC_MESSAGES/django.mo,sha256=_xVO-FkPPoTla_R0CzktpRuafD9fuIP_G5N-Q08PxNg,476 +django/contrib/admindocs/locale/fy/LC_MESSAGES/django.po,sha256=b3CRH9bSUl_jjb9s51RlvFXp3bmsmuxTfN_MTmIIVNA,5060 +django/contrib/admindocs/locale/ga/LC_MESSAGES/django.mo,sha256=46M_sp2khE2Bq-p-wPmlzv0cLx7lGnshgsVz8JFIERY,1938 +django/contrib/admindocs/locale/ga/LC_MESSAGES/django.po,sha256=xT1ZwLHeW8MKXziKxQjAC3vNUlM4Na9jZS2YSqGGNoI,5149 +django/contrib/admindocs/locale/gd/LC_MESSAGES/django.mo,sha256=g_HxI2sDlCSI4QMkXmCM1BaBLyA_zm605-lrwWklIWI,6995 +django/contrib/admindocs/locale/gd/LC_MESSAGES/django.po,sha256=8EmFRNWJ1zAdwlK6BMgYe6aw7KwGyDkdUujaYyZJxlI,7477 +django/contrib/admindocs/locale/gl/LC_MESSAGES/django.mo,sha256=CYtHrSyH_Lw0YxmmmndEnMPU-cw5TMr-8NHUjz6v7JM,2265 +django/contrib/admindocs/locale/gl/LC_MESSAGES/django.po,sha256=0S2CJju3EIiEp6kqJIn0Jl1IyRAg2-5ovYMOW0YRtVA,5188 +django/contrib/admindocs/locale/he/LC_MESSAGES/django.mo,sha256=4Ym47IXEM19SY2kPynEXhawHxZ0cehjyOW-wD_eDo48,6912 +django/contrib/admindocs/locale/he/LC_MESSAGES/django.po,sha256=vTP_2GdJOAQLefDgnOnV7lLGoJM7LpHWijrKmDOIXOM,7408 +django/contrib/admindocs/locale/hi/LC_MESSAGES/django.mo,sha256=sZhObIxqrmFu5Y-ZOQC0JGM3ly4IVFr02yqOOOHnDag,2297 +django/contrib/admindocs/locale/hi/LC_MESSAGES/django.po,sha256=X6UfEc6q0BeaxVP_C4priFt8irhh-YGOUUzNQyVnEYY,5506 +django/contrib/admindocs/locale/hr/LC_MESSAGES/django.mo,sha256=fMsayjODNoCdbpBAk9GHtIUaGJGFz4sD9qYrguj-BQA,2550 +django/contrib/admindocs/locale/hr/LC_MESSAGES/django.po,sha256=qi2IB-fBkGovlEz2JAQRUNE54MDdf5gjNJWXM-dIG1s,5403 +django/contrib/admindocs/locale/hsb/LC_MESSAGES/django.mo,sha256=ft4a_FXwxSoabWHHBrX9e9g3SzQG5aYBkOAFki6OK0M,6797 +django/contrib/admindocs/locale/hsb/LC_MESSAGES/django.po,sha256=eQY8M7whVdInK2EeqaeyZCWTH33-qlB2a1IU8eF3uLs,7278 +django/contrib/admindocs/locale/hu/LC_MESSAGES/django.mo,sha256=pAK3eTIgFlPjtJw-3rkd765P78o-LhgM94O8yNBJab8,6660 +django/contrib/admindocs/locale/hu/LC_MESSAGES/django.po,sha256=pJnWzCsWYOZhu0MjMdP3CsTe7Fff4REALZR1SmsJ22Y,7196 +django/contrib/admindocs/locale/ia/LC_MESSAGES/django.mo,sha256=KklX2loobVtA6PqHOZHwF1_A9YeVGlqORinHW09iupI,1860 +django/contrib/admindocs/locale/ia/LC_MESSAGES/django.po,sha256=Z7btOCeARREgdH4CIJlVob_f89r2M9j55IDtTLtgWJU,5028 +django/contrib/admindocs/locale/id/LC_MESSAGES/django.mo,sha256=ls_B8o3QtpvZj8Wbjye1ls_LqgOP3oP-6jcuJzHslkE,6367 +django/contrib/admindocs/locale/id/LC_MESSAGES/django.po,sha256=fHTl0NjPK9xFvhLwLZqgfzTRtrvs6QTpLcAtNaZSQmI,6989 +django/contrib/admindocs/locale/io/LC_MESSAGES/django.mo,sha256=5t9Vurrh6hGqKohwsZIoveGeYCsUvRBRMz9M7k9XYY8,464 +django/contrib/admindocs/locale/io/LC_MESSAGES/django.po,sha256=SVZZEmaS1WbXFRlLLGg5bzUe09pXR23TeJtHUbhyl0w,5048 +django/contrib/admindocs/locale/is/LC_MESSAGES/django.mo,sha256=pEr-_MJi4D-WpNyFaQe3tVKVLq_9V-a4eIF18B3Qyko,1828 +django/contrib/admindocs/locale/is/LC_MESSAGES/django.po,sha256=-mD5fFnL6xUqeW4MITzm8Lvx6KXq4C9DGsEM9kDluZ8,5045 +django/contrib/admindocs/locale/it/LC_MESSAGES/django.mo,sha256=AhGl2DDlIiX9AS3VSj14Hpl86Khrh0USuIIrNajfAvA,6480 +django/contrib/admindocs/locale/it/LC_MESSAGES/django.po,sha256=EWpNc6wFL9vzmTjeB323GlnyuIQ3zy3H-5swX9FIPYA,7155 +django/contrib/admindocs/locale/ja/LC_MESSAGES/django.mo,sha256=F4QwDOvTwCEzGa1E9PoX-VHkF5uJoUcHDVzGl-Fkvc0,7377 +django/contrib/admindocs/locale/ja/LC_MESSAGES/django.po,sha256=Cljuw8oHQafTq2Uw6oDhM4C0Lt_JlQKFebkpkr_zWhA,7936 +django/contrib/admindocs/locale/ka/LC_MESSAGES/django.mo,sha256=COGIfQILK7_Xb1pGl4Z98LLQWYr-EH6_TI3IM7Wv5P0,4441 +django/contrib/admindocs/locale/ka/LC_MESSAGES/django.po,sha256=lx9qSUbU-STxRaqOePfwKZn8n9teql4UiyFN3uIZFMc,6795 +django/contrib/admindocs/locale/kab/LC_MESSAGES/django.mo,sha256=XTuWnZOdXhCFXEW4Hp0zFtUtAF0wJHaFpQqoDUTWYGw,1289 +django/contrib/admindocs/locale/kab/LC_MESSAGES/django.po,sha256=lQWewMZncWUvGhpkgU_rtwWHcgAyvhIkrDfjFu1l-d8,4716 +django/contrib/admindocs/locale/kk/LC_MESSAGES/django.mo,sha256=ZgQRp2IwERnwWKnFOSx6L-no9bnndzut_g4-zwhHpgM,1623 +django/contrib/admindocs/locale/kk/LC_MESSAGES/django.po,sha256=704iJamoOiNc3VKDMzV0bwsWjEfxSS1PQru7TP37wAA,5085 +django/contrib/admindocs/locale/km/LC_MESSAGES/django.mo,sha256=Fff1K0qzialXE_tLiGM_iO5kh8eAmQhPZ0h-eB9iNOU,1476 +django/contrib/admindocs/locale/km/LC_MESSAGES/django.po,sha256=E_CaaYc4GqOPgPh2t7iuo0Uf4HSQQFWAoxSOCG-uEGU,4998 +django/contrib/admindocs/locale/kn/LC_MESSAGES/django.mo,sha256=lisxE1zzW-Spdm7hIzXxDAfS7bM-RdrAG_mQVwz9WMU,1656 +django/contrib/admindocs/locale/kn/LC_MESSAGES/django.po,sha256=fbiHUPdw_iXrOvgiIvPTJI3WPLD_T77VBfhqW6gjq1c,5178 +django/contrib/admindocs/locale/ko/LC_MESSAGES/django.mo,sha256=eZaKtL6wL4GjEnx6wKO2wJoV-BrTjGyPpKHx8pZ7Fug,6609 +django/contrib/admindocs/locale/ko/LC_MESSAGES/django.po,sha256=mlCXxR8y6pV9egVZTsCucsKAi4D-wiSSwq1wMGqHjcg,7285 +django/contrib/admindocs/locale/lb/LC_MESSAGES/django.mo,sha256=N0hKFuAdDIq5clRKZirGh4_YDLsxi1PSX3DVe_CZe4k,474 +django/contrib/admindocs/locale/lb/LC_MESSAGES/django.po,sha256=B46-wRHMKUMcbvMCdojOCxqIVL5qVEh4Czo20Qgz6oU,5058 +django/contrib/admindocs/locale/lt/LC_MESSAGES/django.mo,sha256=o7X4bUYV9OhbG1DbQRZ4fSa-bd0QtaQgkqOuMUMXZTA,6673 +django/contrib/admindocs/locale/lt/LC_MESSAGES/django.po,sha256=XIo4qct4l8y7xpJOqWuSd6dTManhrpqX4WVxUvlJvy8,7373 +django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mo,sha256=lHUI2I_Xj9zQQXReg_StrXPNvNxqme0fcjHqQO545jM,6487 +django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po,sha256=uPOUrYKB-osuZ0Hg9vSSvirrKT1gdSOy1gDRHLGe9-g,7049 +django/contrib/admindocs/locale/mk/LC_MESSAGES/django.mo,sha256=8H9IpRASM7O2-Ql1doVgM9c4ybZ2KcfnJr12PpprgP4,8290 +django/contrib/admindocs/locale/mk/LC_MESSAGES/django.po,sha256=Uew7tEljjgmslgfYJOP9JF9ELp6NbhkZG_v50CZgBg8,8929 +django/contrib/admindocs/locale/ml/LC_MESSAGES/django.mo,sha256=iGH5F1BE1GELyWawhc5QFoX318GIJY-2XvgSGtg3Cig,2704 +django/contrib/admindocs/locale/ml/LC_MESSAGES/django.po,sha256=KkLQj0wABCqrFHA9vwv236zstN359cPsg6cjxRZ_OuM,5911 +django/contrib/admindocs/locale/mn/LC_MESSAGES/django.mo,sha256=KqdcvSpqmjRfA8M4nGB9Cnu9Auj4pTu9aH07XtCep3I,7607 +django/contrib/admindocs/locale/mn/LC_MESSAGES/django.po,sha256=PGhlnzDKyAIRzaPCbNujpxSpf_JaOG66LK_NMlnZy6I,8316 +django/contrib/admindocs/locale/mr/LC_MESSAGES/django.mo,sha256=LDGC7YRyVBU50W-iH0MuESunlRXrNfNjwjXRCBdfFVg,468 +django/contrib/admindocs/locale/mr/LC_MESSAGES/django.po,sha256=5cUgPltXyS2Z0kIKF5ER8f5DuBhwmAINJQyfHj652d0,5052 +django/contrib/admindocs/locale/my/LC_MESSAGES/django.mo,sha256=AsdUmou0FjCiML3QOeXMdbHiaSt2GdGMcEKRJFonLOQ,1721 +django/contrib/admindocs/locale/my/LC_MESSAGES/django.po,sha256=c75V-PprKrWzgrHbfrZOpm00U_zZRzxAUr2U_j8MF4w,5189 +django/contrib/admindocs/locale/nb/LC_MESSAGES/django.mo,sha256=-bqqbUhhOeXaLpNaBPdvAOMVOcUycSn_LMc4KQZ3-cI,6346 +django/contrib/admindocs/locale/nb/LC_MESSAGES/django.po,sha256=Pinb5oYBHqxDF0X5PXcZ4ypW2awXBE4q2p3eYVjTDRo,6935 +django/contrib/admindocs/locale/ne/LC_MESSAGES/django.mo,sha256=vx3Rcm4p1TNT1NXHEVk5q6C5Cux_5zK3ozwNorGzUjk,1505 +django/contrib/admindocs/locale/ne/LC_MESSAGES/django.po,sha256=FTpLzGCFoGAAeZjGI-ZlyaLVfUKwsV758Ca8o5AjREQ,5009 +django/contrib/admindocs/locale/nl/LC_MESSAGES/django.mo,sha256=q2AkgM7vSz-4oNmeBdkzlJ6CYeHotSz46pouZzRfrRM,6349 +django/contrib/admindocs/locale/nl/LC_MESSAGES/django.po,sha256=051HnemeTAcVvvNxkFKzYzxQso-WwM0u1pnRPJil688,6998 +django/contrib/admindocs/locale/nn/LC_MESSAGES/django.mo,sha256=Dx-A4dlDEoOKrtvis1mWfvwA2Urj-QAiKNmBy--v0oY,1662 +django/contrib/admindocs/locale/nn/LC_MESSAGES/django.po,sha256=VAHAyol0YEaHd0TaGxaQuVUIR72QB3VUnB1ARtr-AWw,4974 +django/contrib/admindocs/locale/os/LC_MESSAGES/django.mo,sha256=zSQBgSj4jSu5Km0itNgDtbkb1SbxzRvQeZ5M9sXHI8k,2044 +django/contrib/admindocs/locale/os/LC_MESSAGES/django.po,sha256=hZlMmmqfbGmoiElGbJg7Fp791ZuOpRFrSu09xBXt6z4,5215 +django/contrib/admindocs/locale/pa/LC_MESSAGES/django.mo,sha256=yFeO0eZIksXeDhAl3CrnkL1CF7PHz1PII2kIxGA0opQ,1275 +django/contrib/admindocs/locale/pa/LC_MESSAGES/django.po,sha256=DA5LFFLOXHIJIqrrnj9k_rqL-wr63RYX_i-IJFhBuc0,4900 +django/contrib/admindocs/locale/pl/LC_MESSAGES/django.mo,sha256=EesxAXz7TGC7Llv85MWiqgXmJboTTCXcTw-58RvOQH0,6652 +django/contrib/admindocs/locale/pl/LC_MESSAGES/django.po,sha256=F9BXW5MygjhwJ0yw672hRl7c6612caR60KOxfcaZcKM,7455 +django/contrib/admindocs/locale/pt/LC_MESSAGES/django.mo,sha256=WcXhSlbGdJgVMvydkPYYee7iOQ9SYdrLkquzgIBhVWU,6566 +django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po,sha256=J98Hxa-ApyzRevBwcAldK9bRYbkn5DFw3Z5P7SMEwx0,7191 +django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.mo,sha256=7R52AIZM0NjoASXDmNLzv4x1fePtn9Fj3HJy3iSOsz4,6601 +django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po,sha256=gIraoQfr6DLWV418adqzym7untmC4fN42WT6X057_A4,7404 +django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mo,sha256=OahWPVuzae_CG3hTXkqycHG97TIIfkS4hnVe8SXQ_cg,6804 +django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po,sha256=tgjbrXGCnM5K-vDsAMLO46G6AMPijNz-0Y0hQgctX0I,7416 +django/contrib/admindocs/locale/ru/LC_MESSAGES/django.mo,sha256=m6sfSIxFI5WJjxdSXZvDcm9A1xIxXJD2r5-UdeIbdlc,8569 +django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po,sha256=i0xEq4zScDKrmRJODgIewx_kUMkmeIPxPNE42Vw9AsI,9226 +django/contrib/admindocs/locale/sk/LC_MESSAGES/django.mo,sha256=_hYfHHwypg7psErP-3c2TY2xITIxaLaAfNofrfoboTA,6637 +django/contrib/admindocs/locale/sk/LC_MESSAGES/django.po,sha256=zIULDrr3lkg5PGLyjXEXM_VGrAUtfmYMHo8G0H6zrRg,7286 +django/contrib/admindocs/locale/sl/LC_MESSAGES/django.mo,sha256=FMg_s9ZpeRD42OsSF9bpe8pRQ7wP7-a9WWnaVliqXpU,6508 +django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po,sha256=JWO_WZAwBpXw-4FoB7rkWXGhi9aEVq1tH2fOC69rcgg,7105 +django/contrib/admindocs/locale/sq/LC_MESSAGES/django.mo,sha256=lbUhjyQWbGARQ6BggqWH1tO6kNi5lMwu-523mC9JCMA,6565 +django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po,sha256=ZA_o7xIUMTVYadovn4Yxl7W54nGzPnIBjkrL66V8pAE,7081 +django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mo,sha256=GnfckcHcuOaXYY1wNmI6VQmGjPX3dpnhgtANIdz8NrE,2217 +django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po,sha256=bYCdRzdUTTmg-UYF-IWSHvA1H0g7C0T2Z3wrWbLwGkw,5425 +django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=au90IT43VR162L2jEsYqhRpso2dvOjpCPSCFiglokTc,1932 +django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po,sha256=tJ4tHLJj0tDaVZba3WIkI0kg95_jEYWTmqXD0rFb6T8,5140 +django/contrib/admindocs/locale/sv/LC_MESSAGES/django.mo,sha256=cxjvRWC4s9h6TWzY4OE6pec3wh9gbMI_cpKNcfi3RSI,5661 +django/contrib/admindocs/locale/sv/LC_MESSAGES/django.po,sha256=t11gzFzreJ2Z7TWPvUTD2Lc8DXDlOQUj7TfSYjGG21w,6672 +django/contrib/admindocs/locale/sw/LC_MESSAGES/django.mo,sha256=pyJfGL7UdPrJAVlCB3YimXxTjTfEkoZQWX-CSpDkcWc,1808 +django/contrib/admindocs/locale/sw/LC_MESSAGES/django.po,sha256=SIywrLX1UGx4OiPxoxUYelmQ1YaY2LMa3dxynGQpHp8,4929 +django/contrib/admindocs/locale/ta/LC_MESSAGES/django.mo,sha256=8SjQ9eGGyaZGhkuDoZTdtYKuqcVyEtWrJuSabvNRUVM,1675 +django/contrib/admindocs/locale/ta/LC_MESSAGES/django.po,sha256=k593yzVqpSQOsdpuF-rdsSLwKQU8S_QFMRpZXww__1A,5194 +django/contrib/admindocs/locale/te/LC_MESSAGES/django.mo,sha256=eAzNpYRy_G1erCcKDAMnJC4809ITRHvJjO3vpyAC_mk,1684 +django/contrib/admindocs/locale/te/LC_MESSAGES/django.po,sha256=oDg_J8JxepFKIe5m6lDKVC4YWQ_gDLibgNyQ3508VOM,5204 +django/contrib/admindocs/locale/th/LC_MESSAGES/django.mo,sha256=bHK49r45Q1nX4qv0a0jtDja9swKbDHHJVLa3gM13Cb4,2167 +django/contrib/admindocs/locale/th/LC_MESSAGES/django.po,sha256=_GMgPrD8Zs0lPKQOMlBmVu1I59yXSV42kfkrHzeiehY,5372 +django/contrib/admindocs/locale/tr/LC_MESSAGES/django.mo,sha256=qK7BooitjyWEj-KtIR6mkGVfqrAh92un_D2RDYqHfK0,6625 +django/contrib/admindocs/locale/tr/LC_MESSAGES/django.po,sha256=9Q2F3sWt8Y5WA6y8is8BZb74g80PaazArlZmim7X40E,7235 +django/contrib/admindocs/locale/tt/LC_MESSAGES/django.mo,sha256=pQmAQOPbrBVzBqtoQ0dsFWFwC6LxA5mQZ9QPqL6pSFw,1869 +django/contrib/admindocs/locale/tt/LC_MESSAGES/django.po,sha256=NCLv7sSwvEficUOSoMJlHGqjgjYvrvm2V3j1Gkviw80,5181 +django/contrib/admindocs/locale/udm/LC_MESSAGES/django.mo,sha256=hwDLYgadsKrQEPi9HiuMWF6jiiYUSy4y-7PVNJMaNpY,618 +django/contrib/admindocs/locale/udm/LC_MESSAGES/django.po,sha256=29fpfn4p8KxxrBdg4QB0GW_l8genZVV0kYi50zO-qKs,5099 +django/contrib/admindocs/locale/uk/LC_MESSAGES/django.mo,sha256=uAW0HQdedzkV7MlXBeG9-wlinGHmPKYEn1_-4GVwTc4,8342 +django/contrib/admindocs/locale/uk/LC_MESSAGES/django.po,sha256=KD3jmpidDrTxzOPlqygz760kW1TztPYb-KPq_fi1dUs,9125 +django/contrib/admindocs/locale/ur/LC_MESSAGES/django.mo,sha256=VNg9o_7M0Z2LC0n3_-iwF3zYmncRJHaFqqpxuPmMq84,1836 +django/contrib/admindocs/locale/ur/LC_MESSAGES/django.po,sha256=QTg85c4Z13hMN_PnhjaLX3wx6TU4SH4hPTzNBfNVaMU,5148 +django/contrib/admindocs/locale/vi/LC_MESSAGES/django.mo,sha256=F6dyo00yeyUND_w1Ocm9SL_MUdXb60QQpmAQPto53IU,1306 +django/contrib/admindocs/locale/vi/LC_MESSAGES/django.po,sha256=JrVKjT848Y1cS4tpH-eRivFNwM-cUs886UEhY2FkTPw,4836 +django/contrib/admindocs/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=ofyr93DAtNADnsn3OWY5fo8Rh6VL8w9DRJXeUe2zod8,6110 +django/contrib/admindocs/locale/zh_Hans/LC_MESSAGES/django.po,sha256=bMvp2QdcvV36p7SOvqGgCE6ov1nPyU-EDiHJzNVGTHI,6761 +django/contrib/admindocs/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=R7NJ9FsGg7h6sETHiXL8jCN6vk_R5AP5vSY9u6R2d1I,4747 +django/contrib/admindocs/locale/zh_Hant/LC_MESSAGES/django.po,sha256=lFWmaYFnY4pf8HQ1WJSAlX6HrOGIdHp_aqMb4e5pgVY,6138 +django/contrib/admindocs/templates/admin_doc/bookmarklets.html,sha256=KbUjr9cygmTvlCiilIGvDTvLuYDdvi4HqzLLK_UBAHw,1333 +django/contrib/admindocs/templates/admin_doc/index.html,sha256=o1Z-Z6Dx8jzLwjihNnhROUOUKK_ILALjWGlMYz4U8u8,1313 +django/contrib/admindocs/templates/admin_doc/missing_docutils.html,sha256=LA8fyI_q_kRmE0e99XgiIDry3GRQ7ZjAu9EYBuCLT3Q,734 +django/contrib/admindocs/templates/admin_doc/model_detail.html,sha256=OfrSMc1vE_qItQrHO6GBBkwlhOQKex03ogvJJSyr2Jg,1824 +django/contrib/admindocs/templates/admin_doc/model_index.html,sha256=ow10WgNZUa6fUCp23ZmvR-kVdYUL29i3HBJ_iwlezfw,1322 +django/contrib/admindocs/templates/admin_doc/template_detail.html,sha256=xN-QihBsDVvpAI3C219Q__FMijnxw8j-wevYkk_mxMQ,995 +django/contrib/admindocs/templates/admin_doc/template_filter_index.html,sha256=PAzC_vpGSddmcza2UXWRuoSkhd0YVYiK_EEtP3eWJQo,1751 +django/contrib/admindocs/templates/admin_doc/template_tag_index.html,sha256=hmLoj_nh53MVJdnqrrlIg36rgSXj4k0IlimMSsQQmVE,1707 +django/contrib/admindocs/templates/admin_doc/view_detail.html,sha256=4mNkUt1_Q8ZGsvsZ1XMirPWNzJyptYMXZVIdPo9UVMc,896 +django/contrib/admindocs/templates/admin_doc/view_index.html,sha256=McuormWD-bVpIiSbnRvy09A-AURhMJeEhy9YX-kbzfs,1684 +django/contrib/auth/__init__.py,sha256=ADkkXnZcCe1qdMn77UgkgKnxZLTjk6gYocI5ZvEcpDE,9206 +django/contrib/auth/admin.py,sha256=5ibrsi934r3-9V7KhSYDm-59mcIaCm6jOXZ2AFTFwHg,8682 +django/contrib/auth/apps.py,sha256=fJNu_-e4MK2zPm9EvUfMBVrW9rw74zsiYih4SmhufW4,956 +django/contrib/auth/backends.py,sha256=_P9ZSQ0NeMFMuRdCsTuXSbnpVFdSQnm7nAZmtv4I06g,6684 +django/contrib/auth/base_user.py,sha256=DS1kB_lYyHW_CbibFanrC7Ow0Lubp8Wifkvsu6uIKYU,4561 +django/contrib/auth/checks.py,sha256=eml6rKyw4rEIHxBJUcqChUdvfEh69Monyjkm9FDTOoY,6355 +django/contrib/auth/common-passwords.txt.gz,sha256=EQsJeKUVEhNdKz_y83Tyip8sTs6R2eIKEAZpfmI66LE,3876 +django/contrib/auth/context_processors.py,sha256=Vb91feuKV9a3BBgR0hrrGmZvVPw0JyYgeA_mRX9QK1c,1822 +django/contrib/auth/decorators.py,sha256=m7U2K7FSMimPdRQd6ozp_asje5srCBmNnvlxh7wfqek,2893 +django/contrib/auth/forms.py,sha256=Op7cZFagwd45v0ZCC9l13xNPLUosJ-2PAlOmT0vcZgQ,15003 +django/contrib/auth/hashers.py,sha256=rq942WSDgrRntTMeGpdYxtP6Z16ADGXFqgeKP8nnHG0,22132 +django/contrib/auth/middleware.py,sha256=ihtkwdqyINaDDix1w3WKE9GayaGABY88j6drV0mHGDs,5399 +django/contrib/auth/mixins.py,sha256=NE4XTW5ooDIkFynB7bYvPmn2nZ4rfmf1No7oSmXCVOE,3809 +django/contrib/auth/models.py,sha256=cNiEZ8zgI9rDGsc4mKqMC9d0NECuoemroE7Dcabn71E,14263 +django/contrib/auth/password_validation.py,sha256=QNm-95BUKXU3naaKGtF9666EU2FTyoKHAPmSyZ3Ar8s,7464 +django/contrib/auth/signals.py,sha256=_QNYY-RzkwTvY3FRo01AW1S-D9l8lVb3ebt6F1GBfMU,227 +django/contrib/auth/tokens.py,sha256=YFS_0l8A2Fpdm0BR9vmRgMjPmdchgEWgPXfmux7XcPo,2823 +django/contrib/auth/urls.py,sha256=6M54eTFdCFEqW0pzzKND4R5-8S9JrzoPcaVt0qA3JXc,1054 +django/contrib/auth/validators.py,sha256=AXlNhfwEd2sonzVAsitbBvKLnBc9CqdGuAmjUB8mEPM,685 +django/contrib/auth/views.py,sha256=cmzrxmsp3zvuB4FYvLh1tDBLC_O3GzgfswfjxrNlICg,22468 +django/contrib/auth/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/auth/handlers/modwsgi.py,sha256=h0T065RiZwMAh3ai2IMeiEQdzmWK62qah7WmOlou6CI,1298 +django/contrib/auth/locale/af/LC_MESSAGES/django.mo,sha256=35F25KM8TCmA0iGFdN_v_SI-3BExezOffEgr_urb06Y,649 +django/contrib/auth/locale/af/LC_MESSAGES/django.po,sha256=cuKRtpHnljceWKGqx8qZAb08XeHd5co3CHRO2V_m4CI,4879 +django/contrib/auth/locale/ar/LC_MESSAGES/django.mo,sha256=lw7pjDDz5lRnSE6bvyGjdcuX06-mUxRZ6AOGreBP8o0,8705 +django/contrib/auth/locale/ar/LC_MESSAGES/django.po,sha256=3RZUD_C65heRnHppLoljc8REA_l1Df-vJ5rvhjEPr-g,9762 +django/contrib/auth/locale/ast/LC_MESSAGES/django.mo,sha256=Pt3gYY3j8Eroo4lAEmf-LR6u9U56mpE3vqLhjR4Uq-o,2250 +django/contrib/auth/locale/ast/LC_MESSAGES/django.po,sha256=Kiq4s8d1HnYpo3DQGlgUl3bOkxmgGW8CvGp9AbryRk8,5440 +django/contrib/auth/locale/az/LC_MESSAGES/django.mo,sha256=ljzBNGFBc9lV1K2goFd5o2GZf1T46_zCYylYRiKr9eE,5859 +django/contrib/auth/locale/az/LC_MESSAGES/django.po,sha256=hMBPuh7FKj4JPV-i45h44r_6ctuRNQCGq1e61bzYOJY,6828 +django/contrib/auth/locale/be/LC_MESSAGES/django.mo,sha256=YmJ7Gh14qYbk1OTHXqR4GEVdHcxGRHnpgf7xqzUKCR8,10008 +django/contrib/auth/locale/be/LC_MESSAGES/django.po,sha256=vPm5UJWEbhpoAslJhfvHyeTw6MGAfkrvSMd3EbnnmGk,10285 +django/contrib/auth/locale/bg/LC_MESSAGES/django.mo,sha256=ZwwXfAeWM92GObhxU6zzGu36KJUpkGOuEeprRMu5mZc,8751 +django/contrib/auth/locale/bg/LC_MESSAGES/django.po,sha256=_a2hoIiJRbvW3ymKAkAp-UZNk5AiUy5HqPBBby74Jew,9492 +django/contrib/auth/locale/bn/LC_MESSAGES/django.mo,sha256=cJSawQn3rNh2I57zK9vRi0r1xc598Wr26AyHh6D50ZQ,5455 +django/contrib/auth/locale/bn/LC_MESSAGES/django.po,sha256=5Vqd4n9ab98IMev4GHLxpO7f4r9nnhC3Nfx27HQNd8s,7671 +django/contrib/auth/locale/br/LC_MESSAGES/django.mo,sha256=iQPFHHrb3nWLLStmlg8shzOkpQ959Gx1pION6tEwBvA,1144 +django/contrib/auth/locale/br/LC_MESSAGES/django.po,sha256=unynO4-jNqwaRC7j8xp-tLbGu8vdHNfqbvT0Bc394XQ,5051 +django/contrib/auth/locale/bs/LC_MESSAGES/django.mo,sha256=1i1CxyXwfskDZtItZQuEpZFlV3cpIo6Ls7Ocs0X3VTA,2963 +django/contrib/auth/locale/bs/LC_MESSAGES/django.po,sha256=C5CQ5vqjuLscWSKHVu0niGzmhxX0y-pf_eiuEr-ZmGU,5793 +django/contrib/auth/locale/ca/LC_MESSAGES/django.mo,sha256=jyns0csr6qPjXSwGuP0PCaz2Ag1a1ZZsm5ZohyT8T3M,7313 +django/contrib/auth/locale/ca/LC_MESSAGES/django.po,sha256=0rG9MwaIJYcLa01txFBOK_wy6Aq1i5eDfnPQhVQznDs,7791 +django/contrib/auth/locale/cs/LC_MESSAGES/django.mo,sha256=1ujTab5YmMkipbkj_DMzigtnHTGc_aVTjviCpvitbBs,7621 +django/contrib/auth/locale/cs/LC_MESSAGES/django.po,sha256=mr9Rbn-dtvmF7I4DW-jvKUvIuELCYnReNOex4u_TPv0,8000 +django/contrib/auth/locale/cy/LC_MESSAGES/django.mo,sha256=lSfCwEVteW4PDaiGKPDxnSnlDUcGMkPfsxIluExZar0,4338 +django/contrib/auth/locale/cy/LC_MESSAGES/django.po,sha256=-LPAKGXNzB77lVHfCRmFlH3SUaLgOXk_YxfC0BomcEs,6353 +django/contrib/auth/locale/da/LC_MESSAGES/django.mo,sha256=uavulGt9dlP0FcOlQMvNTjF7nNcMNEJEd13EGrKjrmM,7452 +django/contrib/auth/locale/da/LC_MESSAGES/django.po,sha256=agG-MuUFTaZ_hFpqomiNhGQx5BKFOQL8z43QnGGFVB0,7765 +django/contrib/auth/locale/de/LC_MESSAGES/django.mo,sha256=Z4KFdT7BIn3DIVkwpdodfiFcvWTeVQEPUWU4QgMOYcc,7514 +django/contrib/auth/locale/de/LC_MESSAGES/django.po,sha256=plqGyseVxlR310SFqvPrkXParg-7Z-MfdNBk1UiD52Y,7919 +django/contrib/auth/locale/dsb/LC_MESSAGES/django.mo,sha256=BAAXuvUHRZYPdNoKFh1UiqBYAbyOC2SQRCpQGuW1zR4,8096 +django/contrib/auth/locale/dsb/LC_MESSAGES/django.po,sha256=UopznBtYDxdKbSenij3cIiBcdnsDhzyCnieIdVlkJEU,8350 +django/contrib/auth/locale/el/LC_MESSAGES/django.mo,sha256=OI3Z-VdpAfDr3oU6x6SdSOGzzEqeykqqP-Wkx4qUKnI,9665 +django/contrib/auth/locale/el/LC_MESSAGES/django.po,sha256=yvuBOwLGg3z7oC4dSbbA9pdKRxl1vNeJlPtgl6mVvBQ,10373 +django/contrib/auth/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/auth/locale/en/LC_MESSAGES/django.po,sha256=m_pwsxUew88m8RWQ-67V473WosKFWfV2nkSTWxIyt50,7918 +django/contrib/auth/locale/en_AU/LC_MESSAGES/django.mo,sha256=74v8gY8VcSrDgsPDaIMET5frCvtzgLE8oHgX1xNWUvw,3650 +django/contrib/auth/locale/en_AU/LC_MESSAGES/django.po,sha256=lg-LFEeZXxGsNNZ656ePDvAAncjuy0LKuQxUFvQCUJk,5921 +django/contrib/auth/locale/en_GB/LC_MESSAGES/django.mo,sha256=p57gDaYVvgEk1x80Hq4Pn2SZbsp9ly3XrJ5Ttlt2yOE,3179 +django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po,sha256=-yDflw5-81VOlyqkmLJN17FRuwDrhYXItFUJwx2aqpE,5787 +django/contrib/auth/locale/eo/LC_MESSAGES/django.mo,sha256=1lSTFZiD5KczQ4FfsgDg6pDo7W4gYn9XeimIf-tum84,7019 +django/contrib/auth/locale/eo/LC_MESSAGES/django.po,sha256=zwyShsKg1ngFq2TlraR2iinx47K7Z87RjiujsNDut2A,7438 +django/contrib/auth/locale/es/LC_MESSAGES/django.mo,sha256=fu-Qpqz4XyYu1_irM742YYT4KUFa2niDZuVo1bbXpTM,7766 +django/contrib/auth/locale/es/LC_MESSAGES/django.po,sha256=U3C1QK5ZVLREVepW6oLVnD3hBNhdlv7ZrjzzMyDLcY4,8427 +django/contrib/auth/locale/es_AR/LC_MESSAGES/django.mo,sha256=DnK67G_cBQ62T8FzOeT9UAe5dkYOOYo__cUoCRAcv8w,7920 +django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po,sha256=vcwNz5PSwMs5vOIFR-xN4ZIjYfzTOAmiYTJHAFFDaxU,8146 +django/contrib/auth/locale/es_CO/LC_MESSAGES/django.mo,sha256=K5VaKTyeV_WoKsLR1x8ZG4VQmk3azj6ZM8Phqjs81So,6529 +django/contrib/auth/locale/es_CO/LC_MESSAGES/django.po,sha256=qJywTaYi7TmeMB1sjwsiwG8GXtxAOaOX0voj7lLVZRw,7703 +django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mo,sha256=B5WKjfMrvFMcj7xi7-0BsH-G_KhGvTcSycyzjQGC2WA,7514 +django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po,sha256=Dsj4cZ0E2KsZphTh3zgJjy45CgWwj85O1QmMmPaJYAA,7936 +django/contrib/auth/locale/es_VE/LC_MESSAGES/django.mo,sha256=GwpZytNHtK7Y9dqQKDiVi4SfA1AtPlk824_k7awqrdI,7415 +django/contrib/auth/locale/es_VE/LC_MESSAGES/django.po,sha256=G3mSCo_XGRUfOAKUeP_UNfWVzDPpbQrVYQt8Hv3VZVM,7824 +django/contrib/auth/locale/et/LC_MESSAGES/django.mo,sha256=DgY1GY3M_oBtdW692gk2RxcrGMiy7Eqdg2mD0iHsNVo,7432 +django/contrib/auth/locale/et/LC_MESSAGES/django.po,sha256=Wvqd4XplrtEA2dXg1SLGFgWcchkh3gPHgj8cOovQ3XU,7842 +django/contrib/auth/locale/eu/LC_MESSAGES/django.mo,sha256=JUzadyH5nBxQQON6vHo6fYVD0jPoB0KuSAxiRxzaot8,7406 +django/contrib/auth/locale/eu/LC_MESSAGES/django.po,sha256=b7aQGkp-u3VHd6LC1LHsZ1uCkKXqo5duvUFy-UhHMi0,7778 +django/contrib/auth/locale/fa/LC_MESSAGES/django.mo,sha256=I82T66B_dQGhcrQkJFNA8wB1nGmqFCTo2XLQzzvD-bA,8263 +django/contrib/auth/locale/fa/LC_MESSAGES/django.po,sha256=nxq_eDjLj3fBZpKW5UYFCGOMdgSMztHrUIRE1plBrlI,8733 +django/contrib/auth/locale/fi/LC_MESSAGES/django.mo,sha256=xjjxjOsXyJ4is_tTXHdiA46lKK_-23F9qMTPn5ivF20,7195 +django/contrib/auth/locale/fi/LC_MESSAGES/django.po,sha256=AFYR_nqn9iYHL8OgxF1WQD3IrifkNjLGL2aK4TF_l94,7650 +django/contrib/auth/locale/fr/LC_MESSAGES/django.mo,sha256=3sYnsgpWnJRUbbcoGfTHnwPrxH74VZv-O9zfOFxYQ3o,8114 +django/contrib/auth/locale/fr/LC_MESSAGES/django.po,sha256=4Oy8cvyYG5ep2xvE6hEmEszu1wJJ7oHEgUdY6MCsteI,8449 +django/contrib/auth/locale/fy/LC_MESSAGES/django.mo,sha256=95N-77SHF0AzQEer5LuBKu5n5oWf3pbH6_hQGvDrlP4,476 +django/contrib/auth/locale/fy/LC_MESSAGES/django.po,sha256=8XOzOFx-WerF7whzTie03hgO-dkbUFZneyrpZtat5JY,3704 +django/contrib/auth/locale/ga/LC_MESSAGES/django.mo,sha256=Nd02Ed9ACCY6JCCSwtiWl3DTODLFFu9Mq6JVlr5YbYk,3572 +django/contrib/auth/locale/ga/LC_MESSAGES/django.po,sha256=FQJMR5DosuKqo4vvF0NAQnjfqbH54MSzqL2-4BO4-uM,6127 +django/contrib/auth/locale/gd/LC_MESSAGES/django.mo,sha256=VviVmi6nVpH5U3za23353_MXTIkExdVJOFzdu1FDCgo,8720 +django/contrib/auth/locale/gd/LC_MESSAGES/django.po,sha256=Vn_dHeBR4q-Nb-Z14MGE9xFiDKK7eaNa8ySM0dhT-2Q,9018 +django/contrib/auth/locale/gl/LC_MESSAGES/django.mo,sha256=Lm4HI1LS28Nw5ZHcVjdMgEsFjeV6UqQwI14ZeEgbK9A,3891 +django/contrib/auth/locale/gl/LC_MESSAGES/django.po,sha256=4V3U-_ZcnXpNQOOfLls18ACidluItzXxFaGfJlu0YM8,6299 +django/contrib/auth/locale/he/LC_MESSAGES/django.mo,sha256=tEK7AbBitn98v0SWBP9kLob5fNMgbxSXuUKMo1PGU7E,8170 +django/contrib/auth/locale/he/LC_MESSAGES/django.po,sha256=qqAb7YNgjfhvy6O7LrJBPwoeJFZSc6hvhbvtbuqSQuU,8432 +django/contrib/auth/locale/hi/LC_MESSAGES/django.mo,sha256=7CxV1H37hMbgKIhnAWx-aJmipLRosJe1qg8BH2CABfw,5364 +django/contrib/auth/locale/hi/LC_MESSAGES/django.po,sha256=DU5YM6r1kd5fo40yqFXzEaNh42ezFQFQ-0dmVqkaKQ0,7769 +django/contrib/auth/locale/hr/LC_MESSAGES/django.mo,sha256=GEap3QClwCkuwQZKJE7qOZl93RRxmyyvTTnOTYaAWUo,5894 +django/contrib/auth/locale/hr/LC_MESSAGES/django.po,sha256=ALftoYSaI1U90RNDEvnaFATbw1SL0m8fNXAyl6DkSvo,7355 +django/contrib/auth/locale/hsb/LC_MESSAGES/django.mo,sha256=PanVy6rcRBJ_Mr-BVKk8GIQOFZvtNz5Frga_GC5Ulmc,7925 +django/contrib/auth/locale/hsb/LC_MESSAGES/django.po,sha256=ZctqPoxjR1ofZ35OjDqaFi4QWcPXW6U_uGkudpOiAAc,8170 +django/contrib/auth/locale/hu/LC_MESSAGES/django.mo,sha256=JG0ZJ06LWE0XHjm7oS2n5tycMRkNGAV1qDJVkR7O45I,7691 +django/contrib/auth/locale/hu/LC_MESSAGES/django.po,sha256=3GSfUuXh7T7xH4_bLtgihH575dP63o1pSH0o7c8df2o,7999 +django/contrib/auth/locale/ia/LC_MESSAGES/django.mo,sha256=oTzOm7fRjn79_pU9zy6D_Ehex5FK7hjQYe4soeHhRkk,3314 +django/contrib/auth/locale/ia/LC_MESSAGES/django.po,sha256=LzJOXjj1Fa61zk3v2d-aWS48eva2S0b0jJ9r5CqiFDY,5881 +django/contrib/auth/locale/id/LC_MESSAGES/django.mo,sha256=iLbDPmfr31uL7Uddi1Pby-r4RYMa-W2feB-1Pii4ft4,6905 +django/contrib/auth/locale/id/LC_MESSAGES/django.po,sha256=vTmla-e84YuBcTlZYQmoeXvf4XX9m_Nij1PkA4hHJI8,7399 +django/contrib/auth/locale/io/LC_MESSAGES/django.mo,sha256=YwAS3aWljAGXWcBhGU_GLVuGJbHJnGY8kUCE89CPdks,464 +django/contrib/auth/locale/io/LC_MESSAGES/django.po,sha256=W36JXuA1HQ72LspixRxeuvxogVxtk7ZBbT0VWI38_oM,3692 +django/contrib/auth/locale/is/LC_MESSAGES/django.mo,sha256=04pHypFYzzOUc9O0fS0n9EiPjG5w3KV96ffMYtXddrA,7540 +django/contrib/auth/locale/is/LC_MESSAGES/django.po,sha256=Pdy1izQ1K718XqGdb8OZaxY7yoTnzq300x-etW9mdvo,7890 +django/contrib/auth/locale/it/LC_MESSAGES/django.mo,sha256=msIGxB__lTtLXQT_SdoVxBN6j2RbXrbXWHxxZIhGHxA,7583 +django/contrib/auth/locale/it/LC_MESSAGES/django.po,sha256=EQqX3Zr1LsRLAdW6zqOIKl8BmS-3WBPfJe0vNM4laJ0,8067 +django/contrib/auth/locale/ja/LC_MESSAGES/django.mo,sha256=Y-VZ90RSHfLpf0DDBhf3BS_OY_6E2nPDUte5Ufw3Wxc,8061 +django/contrib/auth/locale/ja/LC_MESSAGES/django.po,sha256=uJ1M0Xnlw7-fB_4W2okaAqxJNNomkGCRd9zsWcxC7j4,8289 +django/contrib/auth/locale/ka/LC_MESSAGES/django.mo,sha256=KjxMsgKo8oENzzjbFvGDdVmUfePS7kGBc3qsC8c6KJc,7469 +django/contrib/auth/locale/ka/LC_MESSAGES/django.po,sha256=oXdeF4_XUZpmmefS9TEf84Xzsv6yUnRk3_3ywkiRQSI,9142 +django/contrib/auth/locale/kab/LC_MESSAGES/django.mo,sha256=9qKeQ-gDByoOdSxDpSbLaM4uSP5sIi7qlTn8tJidVDs,2982 +django/contrib/auth/locale/kab/LC_MESSAGES/django.po,sha256=8cq5_rjRXPzTvn1jPo6H_Jcrv6IXkWr8n9fTPvghsS8,5670 +django/contrib/auth/locale/kk/LC_MESSAGES/django.mo,sha256=wHr5bBn3AUg5n8nrFrYOEEYL9eawegKsucA3_HAn0vc,3578 +django/contrib/auth/locale/kk/LC_MESSAGES/django.po,sha256=UqbVs6vZEsq36xliqcIrd5Tkc5fBkXXncnQs6iJ6kxc,6329 +django/contrib/auth/locale/km/LC_MESSAGES/django.mo,sha256=FahcwnCgzEamtWcDEPOiJ4KpXCIHbnSowfSRdRQ2F9U,2609 +django/contrib/auth/locale/km/LC_MESSAGES/django.po,sha256=lvRHHIkClbt_8-9Yn0xY57dMxcS72z4sUkxLb4cohP0,5973 +django/contrib/auth/locale/kn/LC_MESSAGES/django.mo,sha256=u0YygqGJYljBZwI9rm0rRk_DdgaBEMA1etL-Lk-7Mls,4024 +django/contrib/auth/locale/kn/LC_MESSAGES/django.po,sha256=HKQ1t2yhh9OwsqvMft337VpPmi8KU8PhF2M8gKOdtXw,6951 +django/contrib/auth/locale/ko/LC_MESSAGES/django.mo,sha256=r1de3B_rb-ImWCAmmZ8_c1y7bUK3Hyi7kRvcSKCTiFg,7612 +django/contrib/auth/locale/ko/LC_MESSAGES/django.po,sha256=V4hYbR-Vj32MeFWyD4D1iQ7HhbdPx4ZNLT1FKGxepkU,8205 +django/contrib/auth/locale/lb/LC_MESSAGES/django.mo,sha256=OFhpMA1ZXhrs5fwZPO5IjubvWDiju4wfwWiV94SFkiA,474 +django/contrib/auth/locale/lb/LC_MESSAGES/django.po,sha256=dOfY9HjTfMQ0nkRYumw_3ZaywbUrTgT-oTXAnrRyfxo,3702 +django/contrib/auth/locale/lt/LC_MESSAGES/django.mo,sha256=TL-YXmT-4SL3SQnfoSDj3ZXigEDUOeaH6BNLQ4MgfY0,7929 +django/contrib/auth/locale/lt/LC_MESSAGES/django.po,sha256=ByL1FwqJjhhbXeXXLaJky1d-QaqET22VdCwgO5Fhpew,8370 +django/contrib/auth/locale/lv/LC_MESSAGES/django.mo,sha256=C4vwTheGFS-olcfQNMeNPYqa9WK9NHxOXb1dH8410LQ,7601 +django/contrib/auth/locale/lv/LC_MESSAGES/django.po,sha256=jofkfLKbcFtLRTI_Zdg23Nt0wA2vo8DommZE18ZAYZ8,7874 +django/contrib/auth/locale/mk/LC_MESSAGES/django.mo,sha256=XS9dslnD_YBeD07P8WQkss1gT7GIV-qLiCx4i5_Vd_k,9235 +django/contrib/auth/locale/mk/LC_MESSAGES/django.po,sha256=QOLgcwHub9Uo318P2z6sp69MI8syIIWCcr4VOom9vfs,9799 +django/contrib/auth/locale/ml/LC_MESSAGES/django.mo,sha256=wwy7Yrk5EIlcAhTXvsdCL0jdgLcHQyutnmXFvp9R88Q,12518 +django/contrib/auth/locale/ml/LC_MESSAGES/django.po,sha256=lXrI-ijDEft9yR2EzPfFAvb0mlxFNHAVMBICabzCziA,12967 +django/contrib/auth/locale/mn/LC_MESSAGES/django.mo,sha256=hBYT0p3LcvIKKPtIn2NzPk_2di9L8jYrUt9j3TcVvaY,9403 +django/contrib/auth/locale/mn/LC_MESSAGES/django.po,sha256=R3wAEwnefEHZsma8J-XOn4XlLtuWYKDPLwJ99DUYmvE,9913 +django/contrib/auth/locale/mr/LC_MESSAGES/django.mo,sha256=zGuqUTqcWZZn8lZY56lf5tB0_lELn7Dd0Gj78wwO5T4,468 +django/contrib/auth/locale/mr/LC_MESSAGES/django.po,sha256=yLW9WuaBHqdp9PXoDEw7c05Vt0oOtlks5TS8oxYPAO8,3696 +django/contrib/auth/locale/my/LC_MESSAGES/django.mo,sha256=gYzFJKi15RbphgG1IHbJF3yGz3P2D9vaPoHZpA7LoH8,1026 +django/contrib/auth/locale/my/LC_MESSAGES/django.po,sha256=lH5mrq-MyY8gvrNkH2_20rkjFnbviq23wIUqIjPIgFI,5130 +django/contrib/auth/locale/nb/LC_MESSAGES/django.mo,sha256=Lg5Yf7DbiD8m_MUIYyD8u5GE3yuL5NE2DYLZ9fcaMrk,7222 +django/contrib/auth/locale/nb/LC_MESSAGES/django.po,sha256=zy1cf3zV3nFpE8ZwKKKJea2LxBw0VWZQ_F38OzlSfTY,7570 +django/contrib/auth/locale/ne/LC_MESSAGES/django.mo,sha256=HjSDANdwt_kfQcRUP6UCAH4MpCIut9IsvV43I9HDDjY,6446 +django/contrib/auth/locale/ne/LC_MESSAGES/django.po,sha256=OsLI1fkijl6UjQxSLj0jlzw4D6fDTFiau5-Tv176tHc,8023 +django/contrib/auth/locale/nl/LC_MESSAGES/django.mo,sha256=TAQwgOYLysAewTxS1dvUfAz84Orr9ucxxBhGsQjt6_k,7149 +django/contrib/auth/locale/nl/LC_MESSAGES/django.po,sha256=HPOTVHrMT_eP39W8b-tSWVo0l5_hIPTE0LZI0a4w5M8,7952 +django/contrib/auth/locale/nn/LC_MESSAGES/django.mo,sha256=020nmL8b1yQL0ZyrDAdr0ZOsEGmNxvUpp9ISPBOVI8U,2801 +django/contrib/auth/locale/nn/LC_MESSAGES/django.po,sha256=SKgBiBM1llWFIvVjWRR0r2i3O8VcAdWe-PUhxckqmbE,5590 +django/contrib/auth/locale/os/LC_MESSAGES/django.mo,sha256=DVsYGz-31nofEjZla4YhM5L7qoBnQaYnZ4TBki03AI4,4434 +django/contrib/auth/locale/os/LC_MESSAGES/django.po,sha256=Akc1qelQWRA1DE6xseoK_zsY7SFI8SpiVflsSTUhQLw,6715 +django/contrib/auth/locale/pa/LC_MESSAGES/django.mo,sha256=PeOLukzQ_CZjWBa5FGVyBEysat4Gwv40xGMS29UKRww,3666 +django/contrib/auth/locale/pa/LC_MESSAGES/django.po,sha256=7ts9PUSuvfXGRLpfyVirJLDtsQcsVWFXDepVKUVlmtc,6476 +django/contrib/auth/locale/pl/LC_MESSAGES/django.mo,sha256=IcLJy8lUmTL9r4pr4nLyBbul9Xs8XpX-G_XpJVTM15E,7920 +django/contrib/auth/locale/pl/LC_MESSAGES/django.po,sha256=JIvbUKlDSMiHhnA8rz0Befg8IbIBXXYFCZ-AwtQej_g,8605 +django/contrib/auth/locale/pt/LC_MESSAGES/django.mo,sha256=oyKCSXRo55UiO3-JKcodMUnK7fuOuQxQrXcU7XkWidA,7756 +django/contrib/auth/locale/pt/LC_MESSAGES/django.po,sha256=tEazw0kctJ3BaP21IblsMhno6qooOGW54zwende522Q,8128 +django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.mo,sha256=Laj_VAYZZX8xYAKcYotpIvPLTECd6tRQS3RjQJuO9MU,7564 +django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po,sha256=AaOc5jr5L7JwCOukc9WOWZNQvTHiMPopqQy-herWno0,8386 +django/contrib/auth/locale/ro/LC_MESSAGES/django.mo,sha256=GTrhRGvEd1NNoSSFhdA-ao-PB5E7vIeiQKMAgmb1Rqg,7577 +django/contrib/auth/locale/ro/LC_MESSAGES/django.po,sha256=O4kxImnFkz_CjgOIBYknzqudNOb8mSNEkMWif1IkowA,8140 +django/contrib/auth/locale/ru/LC_MESSAGES/django.mo,sha256=tfK9L7EYNZd9d1k_EGQrDcr8ruUGJ1JbRJ3-TvJ6cR8,10482 +django/contrib/auth/locale/ru/LC_MESSAGES/django.po,sha256=nQnaxPKmCJ6N2VVJzNDNt6oeqwSxG0lfY60DSDotJ94,10959 +django/contrib/auth/locale/sk/LC_MESSAGES/django.mo,sha256=shT_E4LFHMuUSjvTtFtaTFfFREhuTS8FjFhje5ZF5yo,7651 +django/contrib/auth/locale/sk/LC_MESSAGES/django.po,sha256=aanpDooZWeV-wuByaJ6TB-Qa7fpjc-bshcpM_qgcRrU,7977 +django/contrib/auth/locale/sl/LC_MESSAGES/django.mo,sha256=Ey2oRfp3vCJ3_IesSu4wOnP5XiP_9nzbYU_1r3U2x34,7251 +django/contrib/auth/locale/sl/LC_MESSAGES/django.po,sha256=zHNt3AOf2qICzP4pPtlHKOvwiBZTemQjwHk43k9LpXE,7787 +django/contrib/auth/locale/sq/LC_MESSAGES/django.mo,sha256=Nrfoks9rpAdeYtAvbd78imw20YrBQLbqXezC28GG5Xg,7846 +django/contrib/auth/locale/sq/LC_MESSAGES/django.po,sha256=DMF3vHqmlERrwKnlOjkWYZlChWHzcS1x2Ldcx63hD2E,8115 +django/contrib/auth/locale/sr/LC_MESSAGES/django.mo,sha256=XPJB-rwpS8c7sEH7RChft-DHllMWqUEoTFLA06Q_noc,9754 +django/contrib/auth/locale/sr/LC_MESSAGES/django.po,sha256=HPk2yuyvr9krU3CEf6p5v_4cLFG-Cu1lXsFTs1C9vmo,10010 +django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=hwAo5ishpZZ9kb9WHrSMHdxmWV9afdxOHgVEwWqb4VE,3293 +django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.po,sha256=qccS0IkO-JT504Y2uVGY5nPYfN8EA_58I9z492iQHKI,5934 +django/contrib/auth/locale/sv/LC_MESSAGES/django.mo,sha256=tuAuMr-3VSXhfmQP0k_3UWderNnNajDkXWDFbBtiHZY,7114 +django/contrib/auth/locale/sv/LC_MESSAGES/django.po,sha256=kG2_emZy-aAnZVZY4ZmIjYs4mJLvfpIdWyqGUGyFSUY,7758 +django/contrib/auth/locale/sw/LC_MESSAGES/django.mo,sha256=I_lEsKuMGm07X1vM3-ReGDx2j09PGLkWcG0onC8q1uQ,5029 +django/contrib/auth/locale/sw/LC_MESSAGES/django.po,sha256=TiZS5mh0oN0e6dFEdh-FK81Vk-tdv35ngJ-EbM1yX80,6455 +django/contrib/auth/locale/ta/LC_MESSAGES/django.mo,sha256=T1t5CKEb8hIumvbOtai-z4LKj2et8sX-PgBMd0B3zuA,2679 +django/contrib/auth/locale/ta/LC_MESSAGES/django.po,sha256=X8UDNmk02X9q1leNV1qWWwPNakhvNd45mCKkQ8EpZQQ,6069 +django/contrib/auth/locale/te/LC_MESSAGES/django.mo,sha256=i9hG4thA0P-Hc-S2oX7GufWFDO4Y_LF4RcdQ22cbLyE,2955 +django/contrib/auth/locale/te/LC_MESSAGES/django.po,sha256=txND8Izv2oEjSlcsx3q6l5fEUqsS-zv-sjVVILB1Bmc,6267 +django/contrib/auth/locale/th/LC_MESSAGES/django.mo,sha256=zRpZ2xM5JEQoHtfXm2_XYdhe2FtaqH-hULJadLJ1MHU,6013 +django/contrib/auth/locale/th/LC_MESSAGES/django.po,sha256=Yhh_AQS_aM_9f_yHNNSu_3THbrU-gOoMpfiDKhkaSHo,7914 +django/contrib/auth/locale/tr/LC_MESSAGES/django.mo,sha256=MqxtamKKi0P7UmWiiNz9jGOp_obhLij6WBMZwS5La-I,7480 +django/contrib/auth/locale/tr/LC_MESSAGES/django.po,sha256=Mz7mRvzk7qBnn1yF62en2OiMlgLNuaIbwDzwz7tzhV0,8027 +django/contrib/auth/locale/tt/LC_MESSAGES/django.mo,sha256=g4pTk8QLQFCOkU29RZvR1wOd1hkOZe_o5GV9Cg5u8N4,1371 +django/contrib/auth/locale/tt/LC_MESSAGES/django.po,sha256=owkJ7iPT-zJYkuKLykfWsw8j7O8hbgzVTOD0DVv956E,5222 +django/contrib/auth/locale/udm/LC_MESSAGES/django.mo,sha256=zey19UQmS79AJFxHGrOziExPDDpJ1AbUegbCRm0x0hM,462 +django/contrib/auth/locale/udm/LC_MESSAGES/django.po,sha256=gLVgaMGg0GA3Tey1_nWIjV1lnM7czLC0XR9NFBgL2Zk,3690 +django/contrib/auth/locale/uk/LC_MESSAGES/django.mo,sha256=2Ihvae_DFOKfxd_lWW6dpR-i9QdG2Lk8wnnnpy4bN-U,9698 +django/contrib/auth/locale/uk/LC_MESSAGES/django.po,sha256=vGh5I8B2p7ZsOeyKjDMKkl070m2Z6St1bkCAuwqjV5k,10274 +django/contrib/auth/locale/ur/LC_MESSAGES/django.mo,sha256=rippTNHoh49W19c4HDUF8G5Yo3SknL3C87Afu8YXxzA,698 +django/contrib/auth/locale/ur/LC_MESSAGES/django.po,sha256=gwSd8noEwbcvDE1Q4ZsrftvoWMwhw1J15gvdtK6E9ns,4925 +django/contrib/auth/locale/vi/LC_MESSAGES/django.mo,sha256=4YOb_ZbCI90UB01DpNsBAe6qqrc3P209Bz22FSVqvog,4703 +django/contrib/auth/locale/vi/LC_MESSAGES/django.po,sha256=1YjTrGYr04j9GtG8w0c7v71pHjHU8mHzT7tChroyfaw,6723 +django/contrib/auth/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=m8Z9joKBAtYCmTUNIk5cW1zU5LXRAWT8CqlbGxFtfwc,6487 +django/contrib/auth/locale/zh_Hans/LC_MESSAGES/django.po,sha256=pXmwS9J3vhg_2MUZ0w50gz7x_QzU2N2hEo3uWbtcuPo,7088 +django/contrib/auth/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=6nzvm0k9hv0Y5eFCmJhnFkCs_mbQ3ebJgIm5wmp7GGg,6435 +django/contrib/auth/locale/zh_Hant/LC_MESSAGES/django.po,sha256=g88Ny9_ar1ut6gENTRbShIzlxKTRv_qzjgXRnKFUVkE,6979 +django/contrib/auth/management/__init__.py,sha256=ubESj2X1ZwPmRdesZtlTfE4_v14RfqUTCaXOmCfr1GE,4601 +django/contrib/auth/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/auth/management/commands/changepassword.py,sha256=GHKZIJ2YBzQW4SvqezkjTPj-W7VwNFD1wokko9rFQFI,2581 +django/contrib/auth/management/commands/createsuperuser.py,sha256=be_zrcb9NXycAYTafDW2nTgb8t8ZiS6X1Hx8DNHYEqo,8531 +django/contrib/auth/migrations/0001_initial.py,sha256=bz7B12K5Ovs0aiXfZGMEbVtWAeV05JyLKDGyMrhCd_c,4960 +django/contrib/auth/migrations/0002_alter_permission_name_max_length.py,sha256=xSlhMiUbrVCPMOwmwVNAUgYjZih3t-ieALNm7rQ1OI0,347 +django/contrib/auth/migrations/0003_alter_user_email_max_length.py,sha256=bPcpCTPAJV2NgrwEa6WFfxkhbPmj5J-EqU1HM3RXtq0,389 +django/contrib/auth/migrations/0004_alter_user_username_opts.py,sha256=aN0oHoA5q2bKpJN8SnI8T9GNtTBKzLRFozL87tNh8_I,785 +django/contrib/auth/migrations/0005_alter_user_last_login_null.py,sha256=0s9ZPGWNP9HT7TmXAuChMLLwL1Ml5SdQwNs9qfy5dN4,381 +django/contrib/auth/migrations/0006_require_contenttypes_0002.py,sha256=_S7o_MhU0lAnPhDEt0kh1sBmpCLXW88VBuATERiMBlk,370 +django/contrib/auth/migrations/0007_alter_validators_add_error_messages.py,sha256=JeJpm_jyu2CbBckw4xJt0DlwQ4SDg2fyHqduRLZ1HFI,740 +django/contrib/auth/migrations/0008_alter_user_username_max_length.py,sha256=KpeVuknt_7WErQO_WLDSCMg1sJkXCXjNQ5I4u_l99kc,752 +django/contrib/auth/migrations/0009_alter_user_last_name_max_length.py,sha256=rwLs5SDzFJsDKtCfyMP6XueUPHiRvRMein3wXMzHeDk,386 +django/contrib/auth/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/auth/templates/auth/widgets/read_only_password_hash.html,sha256=cMrG-iMsrVQ6Qd6T_Xz21b6WIWhXxaIwgNDW2NpDpuM,185 +django/contrib/auth/templates/registration/password_reset_subject.txt,sha256=j8rO05woNdwv8-_F6EMy6FTZGMf-Dp9usdUJXSZHs7Q,124 +django/contrib/contenttypes/__init__.py,sha256=OVcoCHYF9hFs-AnFfg2tjmdetuqx9-Zhi9pdGPAgwH4,75 +django/contrib/contenttypes/admin.py,sha256=ktSb2Pj0gFwoxA-gkvSn19l-0qy4WFSFfYYTGYwe7HM,5212 +django/contrib/contenttypes/apps.py,sha256=lVmnJW7DgIc42uc0V5vZL8qxnsnVijQmgelhs3nybIE,797 +django/contrib/contenttypes/checks.py,sha256=ooW997jE1y5goWgO3dzc7tfJt5Z4tJPWRRSG1P1-AcU,1234 +django/contrib/contenttypes/fields.py,sha256=X-VUW7-3ynJvafPujw0pkAgU6xsfONIfiCttw7rTkn8,26607 +django/contrib/contenttypes/forms.py,sha256=9Lk374J-AHUP1P97oTnbTqQrU_Z0NcsqBsILzYco1pU,3557 +django/contrib/contenttypes/models.py,sha256=QX-nY08YMDN5cUqKNFf6G0IVFs9oIeKa8hOIl5jkTjE,6491 +django/contrib/contenttypes/views.py,sha256=2IwvlE6KGhDUJMGTFkY6iXShu_jpATDM-kQcc3MDpLU,3634 +django/contrib/contenttypes/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 +django/contrib/contenttypes/locale/af/LC_MESSAGES/django.po,sha256=dnZ6zKmthl5qt6fhnexYool7hu1YdO8TQj5tPLC6q10,985 +django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.mo,sha256=YXeD6WDlMQ7No_1PbR1PYE7As6GYXSQBVKkWdF_bHMo,1259 +django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.po,sha256=PHvyo3UF4beWdczghk7xqrtJEu-u4802Yn6fmQvKbtA,1504 +django/contrib/contenttypes/locale/ast/LC_MESSAGES/django.mo,sha256=y88CPGGbwTVRmZYIipCNIWkn4OuzuxEk2QCYsBhc7RY,643 +django/contrib/contenttypes/locale/ast/LC_MESSAGES/django.po,sha256=H-qMo5ikva84ycnlmBT4XXEWhzMIw-r7J_zuqxo3wu4,1088 +django/contrib/contenttypes/locale/az/LC_MESSAGES/django.mo,sha256=aaKSEUnbZZMDDl4lrNpG6e18R73kD_-nY2A_dAtHtxw,1101 +django/contrib/contenttypes/locale/az/LC_MESSAGES/django.po,sha256=txoRBy2uMeiT7aUzjADfXnf8FF3zjmCr_mLsFbVcpXs,1314 +django/contrib/contenttypes/locale/be/LC_MESSAGES/django.mo,sha256=lQjyKyBbwBjIl1rn6itLToQIKMvG-v-TjECiGepZrnw,1394 +django/contrib/contenttypes/locale/be/LC_MESSAGES/django.po,sha256=V04WIP5qYaBOaku2AV2tNSsGKFoloDHmOjskG2o3uEM,1575 +django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.mo,sha256=yVH2saAhE3bVtamkCeIBDQuJpn2awfF2M7ISujswiRU,1267 +django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.po,sha256=YdzC82ifG-pPY5Iy4mXIBj9Qq583g37OqZir-jpbUpc,1576 +django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.mo,sha256=2Z1GL6c1ukKQCMcls7R0_n4eNdH3YOXZSR8nCct7SLI,1201 +django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.po,sha256=PLjnppx0FxfGBQMuWVjo0N4sW2QYc2DAEMK6ziGWUc8,1491 +django/contrib/contenttypes/locale/br/LC_MESSAGES/django.mo,sha256=rvGRznrZFfJMa6J5btjn8KusuGfyf5enHi5riU3PkeE,466 +django/contrib/contenttypes/locale/br/LC_MESSAGES/django.po,sha256=-XOhrrNUB3sVOViU-XWriDZM_kDHcx9Ofq3d6GXP5tw,981 +django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.mo,sha256=klj9n7AKBkTf7pIa9m9b-itsy4UlbYPnHiuvSLcFZXY,700 +django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.po,sha256=pmJaMBLWbYtYFFXYBvPEvwXkTPdjQDv2WkFI5jNGmTI,1151 +django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.mo,sha256=SMwTCqtIJedetZYstY4lcKqTD9xoE4vuvyOaDRENcTg,1134 +django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.po,sha256=__UUPN27_GLZxOATgFO_THR-H9e5JARo52vGyuGXrFs,1360 +django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.mo,sha256=LI0-cpzOVLuvK9CVX8ueIB0l8vfe4ypW1285QAE2PsI,1089 +django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.po,sha256=We7jqbXO1c0EUfAa7WezsSHy1dNIrjZZjeOs2k3BU-8,1306 +django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.mo,sha256=2QyCWeXFyymoFu0Jz1iVFgOIdLtt4N1rCZATZAwiH-8,1159 +django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.po,sha256=ZWDxQTHJcw1UYav1C3MX08wCFrSeJNNI2mKjzRVd6H0,1385 +django/contrib/contenttypes/locale/da/LC_MESSAGES/django.mo,sha256=wIEwYctl3CsjBou71rpRvGiR24jcVSEgQW1kNeb1Lsg,1081 +django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po,sha256=k_ztS6LIORMJ0T45_XMFHMDWdvh4rMfURYbKV37Bo7Y,1346 +django/contrib/contenttypes/locale/de/LC_MESSAGES/django.mo,sha256=WdGKHOdSGoscynVfOmjXD3_NRPOoTzZNWYjYdEVzahY,1092 +django/contrib/contenttypes/locale/de/LC_MESSAGES/django.po,sha256=141sVDNz98hS_QxjyM5GEEfpvHnL8Dvbmjb_P-RtkFk,1299 +django/contrib/contenttypes/locale/dsb/LC_MESSAGES/django.mo,sha256=JfVRcAuhU7jt3iv8orjFpzFZUEWa9Tf98Z0KwKynBB0,1169 +django/contrib/contenttypes/locale/dsb/LC_MESSAGES/django.po,sha256=2vfMUWWYDKZ9K8ujm1OgYSwl04cVDUUE5-942VGz150,1346 +django/contrib/contenttypes/locale/el/LC_MESSAGES/django.mo,sha256=cGjt7dcY9L6GusXl9eQgezR9phjMqfTUixC9hFC4ORc,1323 +django/contrib/contenttypes/locale/el/LC_MESSAGES/django.po,sha256=VWwuQYX1La2lvPZJwp-cprA-jyxe0qTxxT0neb9AegM,1634 +django/contrib/contenttypes/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/contenttypes/locale/en/LC_MESSAGES/django.po,sha256=ENzOpatkejwQ6F1IwZAYsMWNGtTHAVPlKCKcVrTygSI,1106 +django/contrib/contenttypes/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 +django/contrib/contenttypes/locale/en_AU/LC_MESSAGES/django.po,sha256=wmxyIJtz628AbsxgkB-MjdImcIJWhcW7NV3tWbDpedg,1001 +django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.mo,sha256=_uM-jg43W7Pz8RQhMcR_o15wRkDaYD8aRcl2_NFGoNs,1053 +django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.po,sha256=SyzwSvqAgKF8BEhXYh4598GYP583OK2GUXH1lc4iDMk,1298 +django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.mo,sha256=MFC-mQeWLeFry7d2EXeAf2G47YRLLKFhenGLCwo5O9A,1087 +django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.po,sha256=BgQ7lRtsjD-XHaNvlHMu9AxCCqx38XdOCG4zYpKgDn4,1279 +django/contrib/contenttypes/locale/es/LC_MESSAGES/django.mo,sha256=rG5-Lt7Mutoa42O_5I2rjcQ5p0rnA2T-cDMbgxaJsYU,1142 +django/contrib/contenttypes/locale/es/LC_MESSAGES/django.po,sha256=iR5eAl6d6Ol2Ufd9hQWfau8vNG0pPKvSgTToqvGMGK8,1417 +django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.mo,sha256=iSq2trgItDc4apHlZdZey4vVJF2k38KrKQRorDvHmG8,1121 +django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.po,sha256=ejs7IoMryYl-stXjIx7slZ3pESU-3X3NUogwIbSDHBo,1328 +django/contrib/contenttypes/locale/es_CO/LC_MESSAGES/django.mo,sha256=aACo1rOrgs_BYK3AWzXEljCdAc4bC3BXpyXrwE4lzAs,1158 +django/contrib/contenttypes/locale/es_CO/LC_MESSAGES/django.po,sha256=vemhoL-sESessGmIlHoRvtWICqF2aO05WvcGesUZBRM,1338 +django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.mo,sha256=hfjH_3T9YfIhOGEE25TflbKWoiZZvmagaVW2YcNDKq8,1109 +django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.po,sha256=Tkt5m04QFdBiPVbRWRh9tiyVL4K6E9Qe42xdmeVaRxQ,1303 +django/contrib/contenttypes/locale/es_VE/LC_MESSAGES/django.mo,sha256=TVGDydYVg_jGfnYghk_cUFjCCtpGchuoTB4Vf0XJPYk,1152 +django/contrib/contenttypes/locale/es_VE/LC_MESSAGES/django.po,sha256=vJW37vuKYb_KpXBPmoNSqtNstFgCDlKmw-8iOoSCenU,1342 +django/contrib/contenttypes/locale/et/LC_MESSAGES/django.mo,sha256=Rs8vsaZp2RX68U_dQge4wkZQMfH8Dh1br4IWkKzfECA,1066 +django/contrib/contenttypes/locale/et/LC_MESSAGES/django.po,sha256=AIl4zK9fs3_euQMwu0ORQZWPyBrIikvQfq-fhiRu2ug,1323 +django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.mo,sha256=K0f1cXEhfg_djPzgCL9wC0iHGWF_JGIhWGFL0Y970g0,1077 +django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.po,sha256=sSuVV0o8MeWN6BxlaeKcjKA3h4H29fCo1kKEtkczEp4,1344 +django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.mo,sha256=eVhLFdG5NJQB8-cYHcMlR0AdGXXlBnkBIqqe3IgkU4M,1165 +django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.po,sha256=_xEtLhrIwJ7Ahg15NSgMLN-NqbSKnt-gDg34mxLr7x4,1421 +django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.mo,sha256=yZNZ0btS15XQPW5sGVQWqUbQ3_ZIGD0JjgMcz2-_xgU,1073 +django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.po,sha256=LTt_nF73_BxrerGmK4ly__1PeesGNpWlH3CSLETMvuI,1316 +django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.mo,sha256=--hcS97AwKMSkriQKcZ9hdSF9swN732tII_b7JszY4k,1112 +django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.po,sha256=yk486-Y0VCwUGQy3DjfvpM0o2UlHREVXy_SufqkkWKQ,1367 +django/contrib/contenttypes/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 +django/contrib/contenttypes/locale/fy/LC_MESSAGES/django.po,sha256=SB07aEGG7n4oX_5rqHB6OnjpK_K0KwFM7YxaWYNpB_4,991 +django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.mo,sha256=EAAOl8HU8C0iFiXVZbPg3AGXdtWM7ap_YUZYFneSdDE,1083 +django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.po,sha256=5C7iIB2OJBRPy-mnj4S1AzZL8_7c8ccZZGstHryg5Qw,1335 +django/contrib/contenttypes/locale/gd/LC_MESSAGES/django.mo,sha256=GXwvJ2csT38SBvqMB_YoPQ_Swcy7mhZYDEr1nQBNOgc,1191 +django/contrib/contenttypes/locale/gd/LC_MESSAGES/django.po,sha256=H4U-T07ZGgSF2LjOng5g8N-jC92SFeO5Fg9u1-g954g,1346 +django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.mo,sha256=gMDLuxVazSNvwLmi5AqJEsxugmDVLk8DlxseHRRoQoc,1072 +django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.po,sha256=hFPL2GH-o6XN0SKu5kqgiEaGT8lKnbi_zmlUNCn3Obg,1364 +django/contrib/contenttypes/locale/he/LC_MESSAGES/django.mo,sha256=X_d2S4YQ-5G3dniw7i4fo-LX-JFMjM1HPsDBuYe2VxU,1162 +django/contrib/contenttypes/locale/he/LC_MESSAGES/django.po,sha256=8vyWhH8zO7PLwpEDI9ZNNUpA5ihgtl8BfQEUvPZ_Vjk,1380 +django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.mo,sha256=KAZuQMKOvIPj3a7GrNJE3yhT70O2abCEF2GOsbwTE5A,1321 +django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.po,sha256=PcsNgu2YmT0biklhwOF_nSvoGTvWVKw2IsBxIwSVAtI,1577 +django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.mo,sha256=DbOUA8ks3phsEwQvethkwZ9-ymrd36aQ6mP7OnGdpjU,1167 +django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.po,sha256=722KxvayO6YXByAmO4gfsfzyVbT-HqqrLYQsr02KDc8,1445 +django/contrib/contenttypes/locale/hsb/LC_MESSAGES/django.mo,sha256=IEjKVQBez7h6phH_ozALY0sNjQmcDSAtCFn7JbBOFMg,1143 +django/contrib/contenttypes/locale/hsb/LC_MESSAGES/django.po,sha256=VlIhdng3HZ-r9XzbdJWtQ4m1UMpmdnpBLWInGMTciZE,1320 +django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.mo,sha256=3fpAT3FGjXjajM3Omz_vcIZ7uqmvSgr4zfB7lfMfhas,1103 +django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.po,sha256=zLI8xh3t_p23EITZnZ7Dme2MXexL9Rt8chxpj8W7w9g,1336 +django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.mo,sha256=3yDFJFxh16B2WigXeJxZV9vOyRxnjZ4MAUq3T_-PHGs,1079 +django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.po,sha256=4JsXrJxsMVVu9Y6OuFrwMV5L4Dglh9XJ5sp9CHDGHaA,1288 +django/contrib/contenttypes/locale/id/LC_MESSAGES/django.mo,sha256=9o50TqX6hHloHvBJbf4pkK4a554L5UmiJnp9vGfq25k,1066 +django/contrib/contenttypes/locale/id/LC_MESSAGES/django.po,sha256=xMRNmOipOt-18KLux7PrJn8NS25qMCVLxmmceR1P93s,1374 +django/contrib/contenttypes/locale/io/LC_MESSAGES/django.mo,sha256=3SSRXx4tYiMUc00LZ9kGHuvTgaWpsICEf5G208CEqgg,1051 +django/contrib/contenttypes/locale/io/LC_MESSAGES/django.po,sha256=1ku9WPcenn47DOF05HL2eRqghZeRYfklo2huYUrkeJ0,1266 +django/contrib/contenttypes/locale/is/LC_MESSAGES/django.mo,sha256=Lzl9gXdkji1Eg4vKahCW8ZIJY8U1hBs52O2hQftopPc,1086 +django/contrib/contenttypes/locale/is/LC_MESSAGES/django.po,sha256=YY0C2qJRSc1cX__k-vm4LXhJZJl731NXYe2w3gTSCGU,1351 +django/contrib/contenttypes/locale/it/LC_MESSAGES/django.mo,sha256=gr8UGpZMY39rE8z0vNEDQyxh_ZD7lC3Py8Dj4B24iHg,1098 +django/contrib/contenttypes/locale/it/LC_MESSAGES/django.po,sha256=wycvlyGUXqjmDSg0FluwvM4XpY2NU0oaKob02Q7236s,1391 +django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.mo,sha256=U-RemvFRnmWnRDBADa3r4tlbwUFBIUCf7aLdd3sJazE,1239 +django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.po,sha256=V6smnquz_1esdvNi-dmuHzRNXqs-AjfWSKq2NJq2GPY,1469 +django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.mo,sha256=1_yGL68sK0QG_mhwFAVdksiDlB57_1W5QkL7NGGE5L0,1429 +django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.po,sha256=fr8rGQDWgUQSv-ZjXhSAR5P_zWLhQ7bq1cHLKIzY4bY,1649 +django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.mo,sha256=gSqcLKqq8Uc5ZYs8x3gMPIBXmU-uCoO1_yTdKjNEnZA,663 +django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.po,sha256=9J7K6vTsq3MiJfdb0zu_6YPTEm2Xuqrg_6y9OIhD0lU,1125 +django/contrib/contenttypes/locale/km/LC_MESSAGES/django.mo,sha256=BXifukxf48Lr0t0V3Y0GJUMhD1KiHN1wwbueoK0MW1A,678 +django/contrib/contenttypes/locale/km/LC_MESSAGES/django.po,sha256=fTPlBbnaNbLZxjzJutGvqe33t6dWsEKiHQYaw27m7KQ,1123 +django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.mo,sha256=a4sDGaiyiWn-1jFozYI4vdAvuHXrs8gbZErP_SAUk9Y,714 +django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.po,sha256=QDD_q_loZtGRlhmaqgNDtJ_5AjVFQ8fSmypvaWLOwp4,1162 +django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.mo,sha256=N6Keqbx9NmPby_m9jswXWPLTdeeM-_9SQlFbheRzpC8,1127 +django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.po,sha256=bLGMv1dLIEKhsoBfuWXs_FQly0prT4udebB5uu4CexU,1338 +django/contrib/contenttypes/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 +django/contrib/contenttypes/locale/lb/LC_MESSAGES/django.po,sha256=dwVKpCRYmXTD9h69v5ivkZe-yFtvdZNZ3VfuyIl4olY,989 +django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.mo,sha256=dGhfE64u9frd0haBj9I-SyDbvUtbp5bF6eKwa1Dbl7M,1147 +django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.po,sha256=ZRyyj9yLNnKOVqX7x3BKwB8_FD-gzPNhkK5sDRS7aic,1417 +django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mo,sha256=4Qk6bGcd2qjhz6j6RYGdB3E7z7X4yVZTH2X-ob7QRYI,1090 +django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po,sha256=22qvaurZjlCA-z3JXBUikzIhAmcmdW9h-pbk0ujvQSg,1299 +django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.mo,sha256=KTFZWm0F4S6lmi1FX76YKOyJqIZN5cTsiTBI_D4ADHs,1258 +django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.po,sha256=mQZosS90S-Bil6-EoGjs9BDWYlvOF6mtUDZ8h9NxEdE,1534 +django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.mo,sha256=rtmLWfuxJED-1KuqkUT8F5CU1KGJP0Of718n2Gl_gI0,1378 +django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.po,sha256=Z-kL9X9CD7rYfa4Uoykye2UgCNQlgyql0HTv1eUXAf4,1634 +django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.mo,sha256=J6kKYjUOsQxptNXDcCaY4d3dHJio4HRibRk3qfwO6Xc,1225 +django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.po,sha256=x8aRJH2WQvMBBWlQt3T3vpV4yHeZXLmRTT1U0at4ZIk,1525 +django/contrib/contenttypes/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 +django/contrib/contenttypes/locale/mr/LC_MESSAGES/django.po,sha256=FgZKD9E-By0NztUnBM4llpR59K0MJSIMZIrJYGKDqpc,983 +django/contrib/contenttypes/locale/my/LC_MESSAGES/django.mo,sha256=YYa2PFe9iJygqL-LZclfpgR6rBmIvx61JRpBkKS6Hrs,1554 +django/contrib/contenttypes/locale/my/LC_MESSAGES/django.po,sha256=6F3nXd9mBc-msMchkC8OwAHME1x1O90xrsZp7xmynpU,1732 +django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.mo,sha256=RMxLSKOqQ6omrnSlAoRohWOEC0SBwYwJyO6QGaPo5KU,1081 +django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.po,sha256=xgm6KYjgFPyYM0HXu3qY6uamoyeuhJ8xR_KBWLZ6IY0,1382 +django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.mo,sha256=-zZAn5cex4PkScoZVqS74PUMThJJuovZSk3WUKZ8hnw,1344 +django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.po,sha256=1ZCUkulQ9Gxb50yMKFKWaTJli2SinBeNj0KpXkKpsNE,1519 +django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.mo,sha256=GNmKVTDJDUPkYa8OZCY0FMdE0I-Gz3tXkO8SHRLDM7s,1095 +django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.po,sha256=aP9U2fAeZIOfui-xAUoBqKK02_aYvVqmjSHXQQ5qVKc,1373 +django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.mo,sha256=jfxiglKOxjX2xdbLDnJhujJiGcbDJv3NDcUUCWrZmuU,1054 +django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.po,sha256=c1sz3ssHULL1c5gpbEOy4Xo2Nh0_2ar_Zg4nECouM4k,1299 +django/contrib/contenttypes/locale/os/LC_MESSAGES/django.mo,sha256=QV533Wu-UpjV3XiCe83jlz7XGuwgRviV0ggoeMaIOIY,1116 +django/contrib/contenttypes/locale/os/LC_MESSAGES/django.po,sha256=UZahnxo8z6oWJfEz4JNHGng0EAifXYtJupB6lx0JB60,1334 +django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.mo,sha256=qacd7eywof8rvJpstNfEmbHgvDiQ9gmkcyG7gfato8s,697 +django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.po,sha256=Kq2NTzdbgq8Q9jLLgV-ZJaSRj43D1dDHcRIgNnJXu-s,1145 +django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.mo,sha256=a57HnU25bDdtrep5ksckyx7BsCQSHbBvZ-W3Hp6CVDQ,1251 +django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.po,sha256=KC_XKtt7QieDVfsu-uEY3eT9miIIQfs1Ied7ebQaK7A,1539 +django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.mo,sha256=MjyyKlA75YtEG9m6hm0GxKhU-cF3m1PA_j63BuIPPlE,1125 +django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.po,sha256=X2Rec6LXIqPa9AVqF4J2mzYrwfls1BdUfN8XOe0zkdQ,1379 +django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.mo,sha256=fPCrA5N-k2uOHyZtBVolLM-CiFyv7luskvTKoJiDF4o,1137 +django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.po,sha256=x-dcuvjBVXVe4zBNxd4vbwYAMzeOCNzVFLc7S_te_fI,1414 +django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.mo,sha256=sCthDD10v7GY2cui9Jj9HK8cofVEg2WERCm6aktOM-4,1142 +django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.po,sha256=n-BPEfua0Gd6FN0rsP7qAlTGbQEZ14NnDMA8jI2844Y,1407 +django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.mo,sha256=EYIBQ4DumWdn6zC8Oy2QDdMsdwDZz4patKbuhFxN1AY,1426 +django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.po,sha256=YULjNSTutYL3FhT4njhz9pQiP_xmoAVuJTBb1Hzio04,1728 +django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.mo,sha256=l17JNwlQmm8X-fgAYOhPB2QGLuZwPewUKcWo0xMhI48,1097 +django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.po,sha256=rrW-DlZKHoH5rcu3zIlrlfDZ6Oqxwd-Ojs3nP5Sxkjk,1347 +django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.mo,sha256=sMML-ubI_9YdKptzeri1du8FOdKcEzJbe4Tt0J4ePFI,1147 +django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.po,sha256=0zxiyzRWWDNVpNNLlcwl-OLh5sLukma1vm-kYrGHYrE,1392 +django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.mo,sha256=xXE5L6OmOz3oI9xYKyS8VKb37NDJ8buQOhjwtuMnwNs,1103 +django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.po,sha256=_z4SsvtdEmT91TqVd-GXMzNK86H-6LmnWTUK4ZBi878,1276 +django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.mo,sha256=30cZcBCG80SyqkJnUa6jDLt3zsNQM_QFKMExL_2AFS4,1200 +django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.po,sha256=Z4OrUiZJjXUyezsMCG0EQQy544VjttcSisErfl5R9Do,1449 +django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=vcI1t6JnIHne3zm62a9mK-JsPbNIi7UAJCQoSpK7nYs,1113 +django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.po,sha256=8NppRxgViJC45KSIoKhK-gEsRcv3Bk35DpS1zX_57ig,1362 +django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.mo,sha256=Vxpt3I_YJ8DtIqlRSJAvl8GgQ8LM7mZ-L7QVrilDeqU,1067 +django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.po,sha256=5vvFP5ivC-iPmp5mGx5jmzvVS33tb9vg-KjzUQkb9ZA,1307 +django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.mo,sha256=XLPle0JYPPkmm5xpJRmWztMTF1_3a2ZubWE4ur2sav8,563 +django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.po,sha256=jRc8Eh6VuWgqc4kM-rxjbVE3yV9uip6mOJLdD6yxGLM,1009 +django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.mo,sha256=L3eF4z9QSmIPqzEWrNk8-2uLteQUMsuxiD9VZyRuSfo,678 +django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.po,sha256=iDb9lRU_-YPmO5tEQeXEZeGeFe-wVZy4k444sp_vTgw,1123 +django/contrib/contenttypes/locale/te/LC_MESSAGES/django.mo,sha256=S_UF_mZbYfScD6Z36aB-kwtTflTeX3Wt4k7z_pEcOV8,690 +django/contrib/contenttypes/locale/te/LC_MESSAGES/django.po,sha256=aAGMMoJPg_pF9_rCNZmda5A_TvDCvQfYEL64Xdoa4jo,1135 +django/contrib/contenttypes/locale/th/LC_MESSAGES/django.mo,sha256=qilt-uZMvt0uw-zFz7-eCmkGEx3XYz7NNo9Xbq3s7uI,1186 +django/contrib/contenttypes/locale/th/LC_MESSAGES/django.po,sha256=42F34fNEn_3yQKBBJnCLttNeyktuLVpilhMyepOd6dg,1444 +django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.mo,sha256=97r7jUJMbkhpnk4fEy-sg3oMDQU8N8A76qrXKX7CNxg,1121 +django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.po,sha256=fS_Vgpat2dLaXgpT4bsUPjJx_1B_6vb25qH0vH92ZVk,1355 +django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.mo,sha256=_LQ1N04FgosdDLUYXJOEqpCB2Mg92q95cBRgYPi1MyY,659 +django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.po,sha256=L7wMMpxGnpQiKd_mjv2bJpE2iqCJ8XwiXK0IN4EHSbM,1110 +django/contrib/contenttypes/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 +django/contrib/contenttypes/locale/udm/LC_MESSAGES/django.po,sha256=YVyej0nAhhEf7knk4vCeRQhmSQeGZLhMPPXyIyWObnM,977 +django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.mo,sha256=pspQZ5Ppnsu-qsoR7IGqgL_G2cLUzZ2Yo6aQ8GdL2OM,1275 +django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.po,sha256=pBDlyBCEOeDPfKYs-gxtrgd_bwUgwpu4BaYHuYgAPG8,1553 +django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.mo,sha256=OJs_EmDBps-9a_KjFJnrS8IqtJfd25LaSWeyG8u8UfI,671 +django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.po,sha256=f0FnsaAM_qrBuCXzLnkBrW5uFfVc6pUh7S-qp4918Ng,1122 +django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.mo,sha256=kGYgEI1gHkyU4y_73mBJN1hlKC2JujVXMg6iCdWncDg,1155 +django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.po,sha256=RIDUgsElfRF8bvBdUKtshizuMnupdMGAM896s7qZKD4,1439 +django/contrib/contenttypes/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=KTYCw4pEOPOfAObHiyBQTzZBX1mY0r9095QLAZfjvQM,1062 +django/contrib/contenttypes/locale/zh_Hans/LC_MESSAGES/django.po,sha256=bJp1GCxJwVfqD-rMAWTBg9OLIKginTCMs0V6mESrVrc,1353 +django/contrib/contenttypes/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=fPIlKpeLGhOtsbLsJOef5d5Y8jCyT9hFiOfZ1v9yFTQ,1083 +django/contrib/contenttypes/locale/zh_Hant/LC_MESSAGES/django.po,sha256=Jwtnwk0R2c2Kh7KUg0t0GKjQrMO48YUNntbCT6dIHAM,1329 +django/contrib/contenttypes/management/__init__.py,sha256=KKf4YWuuvUAOf5l2Xn5zEIR4WHA8vKQ5R5paVfYAPeM,4857 +django/contrib/contenttypes/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/contenttypes/management/commands/remove_stale_contenttypes.py,sha256=2YgWYGPx8YQPbXuyE_iLNUwvPTczlKTSyNlOqAqFCxg,3340 +django/contrib/contenttypes/migrations/0001_initial.py,sha256=o3bVVr-O_eUNiloAC1z-JIHDoCJQ4ifdA-6DhdVUrp8,1157 +django/contrib/contenttypes/migrations/0002_remove_content_type_name.py,sha256=4h1AUWSWAvwfEMAaopJZce-yNj1AVpCYFAk2E-Ur-wM,1103 +django/contrib/contenttypes/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/flatpages/__init__.py,sha256=pa6Mmr3sfZ2KBkXHAvYIw_haRx8tSqTNZluUKg5zQCk,69 +django/contrib/flatpages/admin.py,sha256=m_TsFRA36bunPrg2dSdxDJpWLfJkiaVmE3kcYAO9trY,654 +django/contrib/flatpages/apps.py,sha256=EMKrGuulQwqXlcGKRvmISVaiqSNVwwUetEeEo3PTjxA,198 +django/contrib/flatpages/forms.py,sha256=nPf6qYRonlEWjWMNwIPP-MH0fp8CbB4KSqtdlOUqM30,2017 +django/contrib/flatpages/middleware.py,sha256=aXeOeOkUmpdkGOyqZnkR-l1VrDQ161RWIWa3WPBhGac,784 +django/contrib/flatpages/models.py,sha256=LDnyMzLbmSmpmEemdgzrx2urg8PtnRgY2jxbC-uQH9g,1483 +django/contrib/flatpages/sitemaps.py,sha256=0WGMLfr61H5aVX1inE4X_BJhx2b_lw4LKMO4OQGiDX4,554 +django/contrib/flatpages/urls.py,sha256=v_bP8Axlf0XLgb2kJVdEPDqW8WY7RkwSwm7_BH_0eWE,179 +django/contrib/flatpages/views.py,sha256=DLrol_x7lYfvd_b8EYgFeOYled3TgSoR-KZOOaTzJAQ,2747 +django/contrib/flatpages/locale/af/LC_MESSAGES/django.mo,sha256=BSKjpE5gwL80eq94I3LQEcOBNZtO24gViYsX0rnAoqo,498 +django/contrib/flatpages/locale/af/LC_MESSAGES/django.po,sha256=oXnvhSmWyQR78N4EdWHNydolwiGFZlugkGBmT0BYPto,1541 +django/contrib/flatpages/locale/ar/LC_MESSAGES/django.mo,sha256=G1GCOfhvPoJA5XpI3hE6zIxyhgec1ZUjHEt4lprfRr4,2475 +django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po,sha256=ZypIMRzRQA72sV4lVB8RVUtLjcmbqhow97-e20R02uk,2732 +django/contrib/flatpages/locale/ast/LC_MESSAGES/django.mo,sha256=4SEsEE2hIZJwQUNs8jDgN6qVynnUYJUIE4w-usHKA6M,924 +django/contrib/flatpages/locale/ast/LC_MESSAGES/django.po,sha256=5UlyS59bVo1lccM6ZgdYSgHe9NLt_WeOdXX-swLKubU,1746 +django/contrib/flatpages/locale/az/LC_MESSAGES/django.mo,sha256=sJvplYk3-3shfvnTKzCiCEQGbCa_aFLatZZHtop_4FI,2208 +django/contrib/flatpages/locale/az/LC_MESSAGES/django.po,sha256=Pn2wkV8ks1JO7GJwsfH1VilE4vS6u6Xd0IC2qaKYPwA,2452 +django/contrib/flatpages/locale/be/LC_MESSAGES/django.mo,sha256=N1snVmwE9oa2Hi_77quF7DhOFJwFNdv07x6pSXF_hKE,2801 +django/contrib/flatpages/locale/be/LC_MESSAGES/django.po,sha256=4iBnHyRJ1XkixqUWrmxfMlmKsqyZYhMb3zsI0aLIJwY,2933 +django/contrib/flatpages/locale/bg/LC_MESSAGES/django.mo,sha256=p3RZmS9PAqdlAmbc7UswSoG0t1eeuXYDp1WZ3mWfFow,2569 +django/contrib/flatpages/locale/bg/LC_MESSAGES/django.po,sha256=DqRp9KTLxks9tNEXs2g_jvIp7dI92jXLkKNDNyLhHac,2779 +django/contrib/flatpages/locale/bn/LC_MESSAGES/django.mo,sha256=2oK2Rm0UtAI7QFRwpUR5aE3-fOltE6kTilsTbah737Y,2988 +django/contrib/flatpages/locale/bn/LC_MESSAGES/django.po,sha256=QrbX69iqXOD6oByLcgPkD1QzAkfthpfTjezIFQ-6kVg,3172 +django/contrib/flatpages/locale/br/LC_MESSAGES/django.mo,sha256=_m3TodHXctSnFhWgDjhjR_UYM_3ubQY3R3I2LzWQlNU,552 +django/contrib/flatpages/locale/br/LC_MESSAGES/django.po,sha256=zU2tcXdz1_jX7J7AVnc0SXPqiZmDQt_qOJHNhJugY_E,1582 +django/contrib/flatpages/locale/bs/LC_MESSAGES/django.mo,sha256=bd7ID7OsEhp57JRw_TXoTwsVQNkFYiR_sxSkgi4WvZU,1782 +django/contrib/flatpages/locale/bs/LC_MESSAGES/django.po,sha256=IyFvI5mL_qesEjf6NO1nNQbRHhCAZQm0UhIpmGjrSwQ,2233 +django/contrib/flatpages/locale/ca/LC_MESSAGES/django.mo,sha256=j1mWP6oP9vPMYYiWzroFogBkdJ44L8vo8a51BlyvnVk,2109 +django/contrib/flatpages/locale/ca/LC_MESSAGES/django.po,sha256=VaR3IToa3T7mKaUkiS7JK_LUmHuHofyAE2WxY9Vae3M,2366 +django/contrib/flatpages/locale/cs/LC_MESSAGES/django.mo,sha256=9n_6uvEk16UHLssYV8HlpcJKar0HnHm0TIURgNJZ-bQ,2165 +django/contrib/flatpages/locale/cs/LC_MESSAGES/django.po,sha256=Y6T7KviH4wdsDZnuwkyswJKEyEwhCU7S5-_NMex9W5s,2380 +django/contrib/flatpages/locale/cy/LC_MESSAGES/django.mo,sha256=zr_2vsDZsrby3U8AmvlJMU3q1U_4IrrTmz6oS29OWtQ,2163 +django/contrib/flatpages/locale/cy/LC_MESSAGES/django.po,sha256=E_NC_wtuhWKYKB3YvYGB9ccJgKI3AfIZlB2HpXSyOsk,2370 +django/contrib/flatpages/locale/da/LC_MESSAGES/django.mo,sha256=7vFgp-kRn7fAnvAWhJFylN6D0SrQi9EB2HFT_FPYVnw,2126 +django/contrib/flatpages/locale/da/LC_MESSAGES/django.po,sha256=x8IOaIO2_-sBInHl6NtwOXK9UjUdha8dxXeB3fMwjxQ,2381 +django/contrib/flatpages/locale/de/LC_MESSAGES/django.mo,sha256=v4pUUVzPH3UBtzBuCBSJsHYzaltnzB-0rI-ls6h1e1M,2216 +django/contrib/flatpages/locale/de/LC_MESSAGES/django.po,sha256=ArWO6LbvSwJmStJLmdUXeXuMS_EtHeQc-4V235941Bk,2378 +django/contrib/flatpages/locale/dsb/LC_MESSAGES/django.mo,sha256=oOMFAVGXlFSVKb7tP5lXzpsa-Oe89kEOrPMw4D94MzI,2238 +django/contrib/flatpages/locale/dsb/LC_MESSAGES/django.po,sha256=3ZUiORps5eyxizvpaZCtEk_QM05vW98VhARAZuL20Z8,2367 +django/contrib/flatpages/locale/el/LC_MESSAGES/django.mo,sha256=pvt5Rt9LI2rMQgw5ewp-0_CB62JGvTlkt53sB27iC8c,2672 +django/contrib/flatpages/locale/el/LC_MESSAGES/django.po,sha256=AibJM9Y833DnSXMriBKsFwNhsw_gEaMWUtnu01KLKzM,2933 +django/contrib/flatpages/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/flatpages/locale/en/LC_MESSAGES/django.po,sha256=hsfxD-TQ_jPyo2ASN8f2Ukhf8HNL_l2zXJBhuLjhfAs,2037 +django/contrib/flatpages/locale/en_AU/LC_MESSAGES/django.mo,sha256=cuifXT2XlF4c_bR6ECRhlraSZyA7q4ZLhUgwvW73miw,486 +django/contrib/flatpages/locale/en_AU/LC_MESSAGES/django.po,sha256=ZMAJRrjovd_cdWvzkuEiJ-9ZU9rqRTwoA3x8uY2khcs,1533 +django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.mo,sha256=7zyXYOsqFkUGxclW-VPPxrQTZKDuiYQ7MQJy4m8FClo,1989 +django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.po,sha256=oHrBd6lVnO7-SdnO-Taa7iIyiqp_q2mQZjkuuU3Qa_s,2232 +django/contrib/flatpages/locale/eo/LC_MESSAGES/django.mo,sha256=WzjywoFu5mUt8Kpy6Xsbu1nn9fb4kUOZ58v81JyBsFE,2159 +django/contrib/flatpages/locale/eo/LC_MESSAGES/django.po,sha256=ydx_XVE9E9qPCnYDFa3xSoRiLNxolyTovaaZoFT7BWs,2380 +django/contrib/flatpages/locale/es/LC_MESSAGES/django.mo,sha256=SrjGOoAsyqXCSt3oLJMyodrJohU3Enlpbnd7g3ufvdg,2131 +django/contrib/flatpages/locale/es/LC_MESSAGES/django.po,sha256=DZnMRB9gSqjxTiywwOsLMTCCDfCoKphQnywWwqIuhVE,2448 +django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.mo,sha256=Mo9LtJd1QNX-GR6qjIluDEHmGF-djq7NXMIebz01uBE,2128 +django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.po,sha256=kGM0_ssp3T5xAPZOgiJ6xtbwtOtoaon1_AFKmaV61VQ,2289 +django/contrib/flatpages/locale/es_CO/LC_MESSAGES/django.mo,sha256=jt8wzeYky5AEnoNuAv8W4nGgd45XsMbpEdRuLnptr3U,2140 +django/contrib/flatpages/locale/es_CO/LC_MESSAGES/django.po,sha256=xrbAayPoxT7yksXOGPb-0Nc-4g14UmWANaKTD4ItAFA,2366 +django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.mo,sha256=Y5IOKRzooJHIhJzD9q4PKOe39Z4Rrdz8dBKuvmGkqWU,2062 +django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.po,sha256=Y-EXhw-jISttA9FGMz7gY_kB-hQ3wEyKEaOc2gu2hKQ,2246 +django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.mo,sha256=EI6WskepXUmbwCPBNFKqLGNcWFVZIbvXayOHxOCLZKo,2187 +django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.po,sha256=ipG6a0A2d0Pyum8GcknA-aNExVLjSyuUqbgHM9VdRQo,2393 +django/contrib/flatpages/locale/et/LC_MESSAGES/django.mo,sha256=1pqbiN3UlyuN26dXLazlUUZudJEjyjaPEb2D2jejd38,2095 +django/contrib/flatpages/locale/et/LC_MESSAGES/django.po,sha256=4yQAnUtnnqzAjRAAZD95Z69gLqkXgDVko4xeg24dOaU,2302 +django/contrib/flatpages/locale/eu/LC_MESSAGES/django.mo,sha256=rxbI25MXmkDh7FbLDiXBzjkw-6nF1eBKldVjgvMSKEs,2099 +django/contrib/flatpages/locale/eu/LC_MESSAGES/django.po,sha256=XT4Br06IcCptR5w5Mbtw-e_sOKvSLJFCq5Rg0M-jl6g,2326 +django/contrib/flatpages/locale/fa/LC_MESSAGES/django.mo,sha256=Zc-OsiwBJYrvVY6tefxec0VC97uD8__foLTLT_V0rCY,2459 +django/contrib/flatpages/locale/fa/LC_MESSAGES/django.po,sha256=H48bg8qlnzAQn22fEYZbYV_PhTiTao7KAezN5BekDyE,2717 +django/contrib/flatpages/locale/fi/LC_MESSAGES/django.mo,sha256=K_-A8ccHnFcWnViuPAKR7IxhcG0YWNG7iCKYOxxXgMg,2127 +django/contrib/flatpages/locale/fi/LC_MESSAGES/django.po,sha256=-Ik04K4va6HcOoG8bWukAsHThf3IWREZGeRzewYfC7o,2366 +django/contrib/flatpages/locale/fr/LC_MESSAGES/django.mo,sha256=tkV7tWmHWkJdlD62Xd8qdBhIvYO2kTG1ueQqE-OTg_4,2265 +django/contrib/flatpages/locale/fr/LC_MESSAGES/django.po,sha256=ZweF8qPKLnPd5LZhj0YyiMLT2vKnzZqkn_0Gok-h_9c,2521 +django/contrib/flatpages/locale/fy/LC_MESSAGES/django.mo,sha256=DRsFoZKo36F34XaiQg_0KUOr3NS_MG3UHptzOI4uEAU,476 +django/contrib/flatpages/locale/fy/LC_MESSAGES/django.po,sha256=9JIrRVsPL1m0NPN6uHiaAYxJXHp5IghZmQhVSkGo5g8,1523 +django/contrib/flatpages/locale/ga/LC_MESSAGES/django.mo,sha256=KKvDhZULHQ4JQ_31ltLkk88H2BKUbBXDQFSvdKFqjn8,2191 +django/contrib/flatpages/locale/ga/LC_MESSAGES/django.po,sha256=Yat7oU2XPQFQ8vhNq1nJFAlX2rqfxz4mjpU5TcnaYO8,2400 +django/contrib/flatpages/locale/gd/LC_MESSAGES/django.mo,sha256=FC4qtdjuLYBtEtORo74AaRAQF4FUdj4RWg6Bn1wpY3c,2295 +django/contrib/flatpages/locale/gd/LC_MESSAGES/django.po,sha256=SYC8csqVmTyI1OYFj41YSHcm_WEo0O8BK_VbIBC1Cng,2423 +django/contrib/flatpages/locale/gl/LC_MESSAGES/django.mo,sha256=VXyPsc6cXB97dJJFGfD8Oh2lYpn8TFYjIOeFUQeYpVU,2039 +django/contrib/flatpages/locale/gl/LC_MESSAGES/django.po,sha256=MzE7lepmRu60wy9gn6Wxx-LtKIO9JwScSdJ3SyLRU9s,2366 +django/contrib/flatpages/locale/he/LC_MESSAGES/django.mo,sha256=M5oju900kd_9dwqlSx9HNke8y0Jc1o3e1EC0bm4wDHc,2275 +django/contrib/flatpages/locale/he/LC_MESSAGES/django.po,sha256=BpycciP76QNqeVXjqWPmqv21MI4zX4ruJpCNX1S1BVg,2494 +django/contrib/flatpages/locale/hi/LC_MESSAGES/django.mo,sha256=w29ukoF48C7iJ6nE045YoWi7Zcrgu_oXoxT-r6gcQy8,2770 +django/contrib/flatpages/locale/hi/LC_MESSAGES/django.po,sha256=nXq5y1FqMGVhpXpQVdV3uU5JcUtBc2BIrf-n__C2q30,3055 +django/contrib/flatpages/locale/hr/LC_MESSAGES/django.mo,sha256=Mt4gpBuUXvcBl8K714ls4PimHQqee82jFxY1BEAYQOE,2188 +django/contrib/flatpages/locale/hr/LC_MESSAGES/django.po,sha256=ZbUMJY6a-os-xDmcDCJNrN4-YqRe9b_zJ4V5gt2wlGI,2421 +django/contrib/flatpages/locale/hsb/LC_MESSAGES/django.mo,sha256=I6UXOeEqgMtWQ_A7NFAKO-EPJ-9CtPkWfVVaoi9tAYY,2230 +django/contrib/flatpages/locale/hsb/LC_MESSAGES/django.po,sha256=d1GMjWo_zvZF12npVhHcYQpiDdjzrThsLcNrbGxRHOQ,2359 +django/contrib/flatpages/locale/hu/LC_MESSAGES/django.mo,sha256=S_cyw_dLh5sDX50qBwW7Zx4dieBsDV0JFbbGfbNzbNA,2147 +django/contrib/flatpages/locale/hu/LC_MESSAGES/django.po,sha256=dtTflYcyVqoGY4m6OwZVQwIsjH_o1ONrvl1oYvfoXGg,2364 +django/contrib/flatpages/locale/ia/LC_MESSAGES/django.mo,sha256=bochtCPlc268n0WLF0bJtUUT-XveZLPOZPQUetnOWfU,500 +django/contrib/flatpages/locale/ia/LC_MESSAGES/django.po,sha256=gOJ850e8sFcjR2G79zGn3_0-9-KSy591i7ketBRFjyw,1543 +django/contrib/flatpages/locale/id/LC_MESSAGES/django.mo,sha256=In75DDfKVuNVdDttaXMrI1CgOY6r3dcqM8cTiEhvRJU,2085 +django/contrib/flatpages/locale/id/LC_MESSAGES/django.po,sha256=_tD-pxVJDZBMytzB4G7MHCrTnkwm998u7Hl4ak3fSXw,2309 +django/contrib/flatpages/locale/io/LC_MESSAGES/django.mo,sha256=N8R9dXw_cnBSbZtwRbX6Tzw5XMr_ZdRkn0UmsQFDTi4,464 +django/contrib/flatpages/locale/io/LC_MESSAGES/django.po,sha256=_pJveonUOmMu3T6WS-tV1OFh-8egW0o7vU3i5YqgChA,1511 +django/contrib/flatpages/locale/is/LC_MESSAGES/django.mo,sha256=11iv2x1miXJ_z-eeP8PW6WSgXVe6Xa9SZc0GZCou6e0,2113 +django/contrib/flatpages/locale/is/LC_MESSAGES/django.po,sha256=6w9mwwDYZbWElNI6W25XmlmYvre7hvz-WZW1iiHeXXQ,2326 +django/contrib/flatpages/locale/it/LC_MESSAGES/django.mo,sha256=-k6ntTZ3GIGMy8Y8qO33vI8OQb637Gyf4PZjv4nQtmg,2099 +django/contrib/flatpages/locale/it/LC_MESSAGES/django.po,sha256=gB7uHMzrbBgOy3SXO2lp7Z1f1E5xEcSLQ6doVWo-Kq4,2284 +django/contrib/flatpages/locale/ja/LC_MESSAGES/django.mo,sha256=Xzvu1WllXyp-WQsDHaoagMUDgc6KCjJ_4y9dqsK05VU,2303 +django/contrib/flatpages/locale/ja/LC_MESSAGES/django.po,sha256=nC-PDQ8ec_H9bqSmY9n7YgN2BJl0fnFz_xLvRrmrOig,2529 +django/contrib/flatpages/locale/ka/LC_MESSAGES/django.mo,sha256=R4OSbZ-lGxMdeJYsaXVXpo6-KSZWeKPuErKmEsUvEQE,3022 +django/contrib/flatpages/locale/ka/LC_MESSAGES/django.po,sha256=YCVnkX9uayvAQjYy_2jS7fYb36meoMJTKSc2lfoUbeM,3301 +django/contrib/flatpages/locale/kk/LC_MESSAGES/django.mo,sha256=lF8VW--EOBeVKjUWE3KEczl03OJ4-86Ik7jyzaP6li4,2494 +django/contrib/flatpages/locale/kk/LC_MESSAGES/django.po,sha256=UIq5mqQ-Zr5GEuAFDcskzfRcIfOdgI30jV1-BRCEVIg,2697 +django/contrib/flatpages/locale/km/LC_MESSAGES/django.mo,sha256=FYRfhNSqBtavYb10sHZNfB-xwLwdZEfVEzX116nBs-k,1942 +django/contrib/flatpages/locale/km/LC_MESSAGES/django.po,sha256=d2AfbR78U0rJqbFmJQvwiBl_QvYIeSwsPKEnfYM4JZA,2471 +django/contrib/flatpages/locale/kn/LC_MESSAGES/django.mo,sha256=n5HCZEPYN_YIVCXrgA1qhxvfhZtDbhfiannJy5EkHkI,1902 +django/contrib/flatpages/locale/kn/LC_MESSAGES/django.po,sha256=o9xnLjwDw7L49Mkyr8C6aQZ13Yq5MYx1JYXEtcIsiWU,2437 +django/contrib/flatpages/locale/ko/LC_MESSAGES/django.mo,sha256=joCZXqODbZSmwhc5j9NAzsnKYBom-rAg_PqvxLNx0BA,2183 +django/contrib/flatpages/locale/ko/LC_MESSAGES/django.po,sha256=CI4VoUAU2FgPi9fN3igFE4R1Wm0OffrbI5gQ_Cs50pU,2497 +django/contrib/flatpages/locale/lb/LC_MESSAGES/django.mo,sha256=Wkvlh5L_7CopayfNM5Z_xahmyVje1nYOBfQJyqucI_0,502 +django/contrib/flatpages/locale/lb/LC_MESSAGES/django.po,sha256=gGeTuniu3ZZ835t9HR-UtwCcd2s_Yr7ihIUm3jgQ7Y0,1545 +django/contrib/flatpages/locale/lt/LC_MESSAGES/django.mo,sha256=rv76BjAoYYM5OlPpXk1QUvRo9TSmLkUnynY7ySWQ1cY,2272 +django/contrib/flatpages/locale/lt/LC_MESSAGES/django.po,sha256=L3El0c8USYE6T4Wm4hZr-6hFOFeU90NJwtPY4-KQw0s,2529 +django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mo,sha256=fYcpSppdN1c6qe1OGc5OObIT3ojSxJ-HiUJ6KDE98K4,2190 +django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po,sha256=GEzjTZID0XbIwVuxtb_RFODLK4G5plSra8FD2If3wpw,2351 +django/contrib/flatpages/locale/mk/LC_MESSAGES/django.mo,sha256=55H8w6fB-B-RYlKKkGw3fg2m-djxUoEp_XpupK-ZL70,2699 +django/contrib/flatpages/locale/mk/LC_MESSAGES/django.po,sha256=OhHJ5OVWb0jvNaOB3wip9tSIZ1yaPPLkfQR--uUEyUI,2989 +django/contrib/flatpages/locale/ml/LC_MESSAGES/django.mo,sha256=b2-4gs63dCf0Twzj9HuYlac89PnnHc27C4ygeAZ7FZA,3228 +django/contrib/flatpages/locale/ml/LC_MESSAGES/django.po,sha256=4u8TlRINfXHYSfxQkU2w0qzFJhP-iuvDVgDbcaCcM80,3461 +django/contrib/flatpages/locale/mn/LC_MESSAGES/django.mo,sha256=Ogm4nShs2OSRqtHyfxpTa88HBHUDVAHeUZeScxk1cKw,2600 +django/contrib/flatpages/locale/mn/LC_MESSAGES/django.po,sha256=FwnRhnzmufcD50ua9K3hASBMlMXAG4uGZs5BskzbU3g,2830 +django/contrib/flatpages/locale/mr/LC_MESSAGES/django.mo,sha256=GvSfsp0Op7st6Ifd8zp8Cj4tTHoFMltQb4p64pebrqI,468 +django/contrib/flatpages/locale/mr/LC_MESSAGES/django.po,sha256=sayU0AfVaSFpBj0dT32Ri55LRafQFUHLi03K06kI7gc,1515 +django/contrib/flatpages/locale/my/LC_MESSAGES/django.mo,sha256=OcbiA7tJPkyt_WNrqyvoFjHt7WL7tMGHV06AZSxzkho,507 +django/contrib/flatpages/locale/my/LC_MESSAGES/django.po,sha256=EPWE566Vn7tax0PYUKq93vtydvmt-A4ooIau9Cwcdfc,1550 +django/contrib/flatpages/locale/nb/LC_MESSAGES/django.mo,sha256=kKYaglGpmMbp6txY0IAFusugcXp_JKhJx2k_8kgqagE,2092 +django/contrib/flatpages/locale/nb/LC_MESSAGES/django.po,sha256=mNXJFfnCRfH4FwvEQokXLntyhha9I-vZ98L5Aj5stWk,2374 +django/contrib/flatpages/locale/ne/LC_MESSAGES/django.mo,sha256=gDZKhcku1NVlSs5ZPPupc7RI8HOF7ex0R4Rs8tMmrYE,1500 +django/contrib/flatpages/locale/ne/LC_MESSAGES/django.po,sha256=GWlzsDaMsJkOvw2TidJOEf1Fvxx9WxGdGAtfZIHkHwk,2178 +django/contrib/flatpages/locale/nl/LC_MESSAGES/django.mo,sha256=u0BmOl8D3l0MLNM0zsFIA2i2XyiOXDHg5ZJdkmsfm7Q,2115 +django/contrib/flatpages/locale/nl/LC_MESSAGES/django.po,sha256=ybQ5HXn9NkjatZJvQkcUnPdBQ7KTCHJsfwPe66lIZnY,2473 +django/contrib/flatpages/locale/nn/LC_MESSAGES/django.mo,sha256=A50zQJ-0YYPjPCeeEa-gwqA2N5eON13YW8SJZvtJBZc,1693 +django/contrib/flatpages/locale/nn/LC_MESSAGES/django.po,sha256=H5hnBsH3sUdlPkMjxiqNnh8izcrTSAs6o-ywlNCTKtw,2119 +django/contrib/flatpages/locale/os/LC_MESSAGES/django.mo,sha256=cXGTA5M229UFsgc7hEiI9vI9SEBrNQ8d3A0XrtazO6w,2329 +django/contrib/flatpages/locale/os/LC_MESSAGES/django.po,sha256=m-qoTiKePeFviKGH1rJRjZRH-doJ2Fe4DcZ6W52rG8s,2546 +django/contrib/flatpages/locale/pa/LC_MESSAGES/django.mo,sha256=69_ZsZ4nWlQ0krS6Mx3oL6c4sP5W9mx-yAmOhZOnjPU,903 +django/contrib/flatpages/locale/pa/LC_MESSAGES/django.po,sha256=N6gkoRXP5MefEnjywzRiE3aeU6kHQ0TUG6IGdLV7uww,1780 +django/contrib/flatpages/locale/pl/LC_MESSAGES/django.mo,sha256=T_OGt7vhizxrtAcSWmBLL6FUrWe4kt2oJes0R2X6y0k,2302 +django/contrib/flatpages/locale/pl/LC_MESSAGES/django.po,sha256=y3NQanfR8fBGD87ukbs9GRCCzqBZgnvYuigQrzEo_Zw,2562 +django/contrib/flatpages/locale/pt/LC_MESSAGES/django.mo,sha256=xD2pWdS3XMg7gAqBrUBmCEXFsOzEs0Npe8AJnlpueRY,2115 +django/contrib/flatpages/locale/pt/LC_MESSAGES/django.po,sha256=-K2jipPUWjXpfSPq3upnC_bvtaRAeOw0OLRFv03HWFY,2326 +django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.mo,sha256=3HkwLPl8gJx5NysmUHdIY2HaqAmhYtq33HKhCN7ht0M,2130 +django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.po,sha256=nCm3nt3DT5r-Dl8QUsgqPRJULNs0H8jFk9Ba_yL6N3E,2584 +django/contrib/flatpages/locale/ro/LC_MESSAGES/django.mo,sha256=nMOBt3XPjuoBGujcURWhYAyZVT7_5X0EEnbaFUWTu3M,2197 +django/contrib/flatpages/locale/ro/LC_MESSAGES/django.po,sha256=8td78SC46GvgmjsoHP_bsB_rYkOsfCfSeTc-Ib_F-KQ,2460 +django/contrib/flatpages/locale/ru/LC_MESSAGES/django.mo,sha256=KLrfdIDEPg_YqAiMIozJna_5UORc1VtIqQdsRiBiBa4,2741 +django/contrib/flatpages/locale/ru/LC_MESSAGES/django.po,sha256=sJrfCiup7Jt-FSZgpe9ulDWjv1BBjJf9A8R3r-nO-eQ,3029 +django/contrib/flatpages/locale/sk/LC_MESSAGES/django.mo,sha256=fah0acDTuIuhH3mfTJOKgHj7cIOD1EjYKVjKNOW6UAY,2155 +django/contrib/flatpages/locale/sk/LC_MESSAGES/django.po,sha256=5G2EKb5cvzJFGtITe8XUaRHOhojdCNH4Fjg8j24qtCs,2367 +django/contrib/flatpages/locale/sl/LC_MESSAGES/django.mo,sha256=MBjwhw6wppQUl0Lb_rShXZj_Sq-JLSkdYU5Xhi0OtYY,2173 +django/contrib/flatpages/locale/sl/LC_MESSAGES/django.po,sha256=6zbOXzkLTsdWRKAhuLzBVBc53n6MQKpvOeHw4cRrAlc,2400 +django/contrib/flatpages/locale/sq/LC_MESSAGES/django.mo,sha256=XZyziioVIY30Evbjp4CEZM3wrdfkz1i7ttY2rsZ2Yt0,2181 +django/contrib/flatpages/locale/sq/LC_MESSAGES/django.po,sha256=JWg31JWs6D9N3C2ZhTFOWrKHml1qEo8lJ7_8GV_ECzM,2353 +django/contrib/flatpages/locale/sr/LC_MESSAGES/django.mo,sha256=mnUUlaDt-hkiJ7orA11ULhHyUk9AKCP_JiezKE1b6fI,2513 +django/contrib/flatpages/locale/sr/LC_MESSAGES/django.po,sha256=Mvp8LVG262rcobi4IPSi8Hh6-osv6MI3hCuAPYC_vhw,2763 +django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=9iKmAQk1hlW0W_BmRr4_hSiGd9RdwiDZFS4giqW7On8,2125 +django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.po,sha256=Mr83YokpIM_KFfcRmMhaBov9MmkR0yMrHhwWFZmChos,2378 +django/contrib/flatpages/locale/sv/LC_MESSAGES/django.mo,sha256=j827YPTO2kPrexfXi28gRnfghHuK7cvy5DT6SAvFWAQ,2132 +django/contrib/flatpages/locale/sv/LC_MESSAGES/django.po,sha256=XSfmwVTEukv3zW4_1noCiYGFc4rabIWX-Vngo-Vd06k,2372 +django/contrib/flatpages/locale/sw/LC_MESSAGES/django.mo,sha256=Lhf99AGmazKJHzWk2tkGrMInoYOq0mtdCd8SGblnVCQ,1537 +django/contrib/flatpages/locale/sw/LC_MESSAGES/django.po,sha256=cos3eahuznpTfTdl1Vj_07fCOSYE8C9CRYHCBLYZrVw,1991 +django/contrib/flatpages/locale/ta/LC_MESSAGES/django.mo,sha256=nNuoOX-FPAmTvM79o7colM4C7TtBroTFxYtETPPatcQ,1945 +django/contrib/flatpages/locale/ta/LC_MESSAGES/django.po,sha256=XE4SndPZPLf1yXGl5xQSb0uor4OE8CKJ0EIXBRDA3qU,2474 +django/contrib/flatpages/locale/te/LC_MESSAGES/django.mo,sha256=bMxhDMTQc_WseqoeqJMCSNy71o4U5tJZYgD2G0p-jD0,1238 +django/contrib/flatpages/locale/te/LC_MESSAGES/django.po,sha256=tmUWOrAZ98B9T6Cai8AgLCfb_rLeoPVGjDTgdsMOY1Y,2000 +django/contrib/flatpages/locale/th/LC_MESSAGES/django.mo,sha256=mct17_099pUn0aGuHu8AlZG6UqdKDpYLojqGYDLRXRg,2698 +django/contrib/flatpages/locale/th/LC_MESSAGES/django.po,sha256=PEcRx5AtXrDZvlNGWFH-0arroD8nZbutdJBe8_I02ag,2941 +django/contrib/flatpages/locale/tr/LC_MESSAGES/django.mo,sha256=Mlha5uTnMJybOxODh03SXHnOc9ORncJ5fSCKrAuaZKw,2136 +django/contrib/flatpages/locale/tr/LC_MESSAGES/django.po,sha256=Bn8ASUcnuOWD8YNEgjoZ7GU_WzhCYKuAG6WUP-WAB-A,2383 +django/contrib/flatpages/locale/tt/LC_MESSAGES/django.mo,sha256=9RfCKyn0ZNYsqLvFNmY18xVMl7wnmDq5uXscrsFfupk,2007 +django/contrib/flatpages/locale/tt/LC_MESSAGES/django.po,sha256=SUwalSl8JWI9tuDswmnGT8SjuWR3DQGND9roNxJtH1o,2402 +django/contrib/flatpages/locale/udm/LC_MESSAGES/django.mo,sha256=7KhzWgskBlHmi-v61Ax9fjc3NBwHB17WppdNMuz-rEc,490 +django/contrib/flatpages/locale/udm/LC_MESSAGES/django.po,sha256=zidjP05Hx1OpXGqWEmF2cg9SFxASM4loOV85uW7zV5U,1533 +django/contrib/flatpages/locale/uk/LC_MESSAGES/django.mo,sha256=TnZ0ya0EGbkIFAcZFW-YVBOiiwlxg9Ci9Q8Ud9_ZbgI,2624 +django/contrib/flatpages/locale/uk/LC_MESSAGES/django.po,sha256=5deZ17O4Gtj1UG6Edzj7HJoLiJfA4fV_oNZQSUtVfRY,2897 +django/contrib/flatpages/locale/ur/LC_MESSAGES/django.mo,sha256=Li4gVdFoNOskGKAKiNuse6B2sz6ePGqGvZu7aGXMNy0,1976 +django/contrib/flatpages/locale/ur/LC_MESSAGES/django.po,sha256=hDasKiKrYov9YaNIHIpoooJo0Bzba___IuN2Hl6ofSc,2371 +django/contrib/flatpages/locale/vi/LC_MESSAGES/django.mo,sha256=FsFUi96oGTWGlZwM4qSMpuL1M2TAxsW51qO70TrybSM,1035 +django/contrib/flatpages/locale/vi/LC_MESSAGES/django.po,sha256=ITX3MWd7nlWPxTCoNPl22_OMLTt0rfvajGvTVwo0QC8,1900 +django/contrib/flatpages/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=4PBYHqvZ8tsWOppfMjHvA4fhchWqPSJdaYm96_Xu734,1994 +django/contrib/flatpages/locale/zh_Hans/LC_MESSAGES/django.po,sha256=2z96jKF7PQrb2IXZO1p2Ta77e95vA-epdnB3wK3wcYo,2279 +django/contrib/flatpages/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=a-KLBISo2n7mn10SuNfT0K883RTjKjPYCpHCAivUz18,2053 +django/contrib/flatpages/locale/zh_Hant/LC_MESSAGES/django.po,sha256=GtvYArHRgiEQo5KSIYd4lsOeHCrXkWaZIiKFH4m1peM,2283 +django/contrib/flatpages/migrations/0001_initial.py,sha256=dLSlPpjfc6jMKhxYPsw6yKohxn4ejRXVOJ1VyJf12r4,1710 +django/contrib/flatpages/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/flatpages/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/flatpages/templatetags/flatpages.py,sha256=AH29WWZNLWH2B2GMt7cHoN9-Bmxn5k1w9Qi48Uhn-kc,3576 +django/contrib/gis/__init__.py,sha256=GTSQJbKqQkNiljWZylYy_ofRICJeqIkfqmnC9ZdxZ2I,57 +django/contrib/gis/apps.py,sha256=wEquhS1IKyUphVzs9QL4J-94onezMkC5tK_WkrUEa3o,396 +django/contrib/gis/feeds.py,sha256=vCYhNC7qRvPIPGLw8GnAqi-c1SCwQJlwuBtZ36n7LSY,5733 +django/contrib/gis/geometry.py,sha256=sTXZdh3D1UGGDBP-WZ2jvLUVstcJ_2Kn1_PlKJshNDo,677 +django/contrib/gis/measure.py,sha256=BLWTkDMMunvaN9lR8QDujmKOxUyhBQKy10Auo0npDaQ,11948 +django/contrib/gis/ptr.py,sha256=3YoUTosG8oZ2comaW7OczuCtAQMyioRPjDjbIqs0gLI,1276 +django/contrib/gis/shortcuts.py,sha256=fHf3HYP6MP8GeuBW6G3y6d30Mjxa6IL2xtmblDjS8k4,1027 +django/contrib/gis/views.py,sha256=GpOJ8W5gk-xbB8y3wPe2dvoVutPKZqswhcMWCETBnx0,698 +django/contrib/gis/admin/__init__.py,sha256=Hni2JCw5ihVuor2HupxDffokiBOG11tu74EcKhiO89w,486 +django/contrib/gis/admin/options.py,sha256=TBV8szg0bCDSYfYupX_wwPf55pBo-8k_KfuM5FUV8vU,5330 +django/contrib/gis/admin/widgets.py,sha256=_X3Li-k9q0m7soBvu0Vu3jwwmODZWTx9A3IswYKeXLM,4720 +django/contrib/gis/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/db/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/db/backends/utils.py,sha256=y4q0N0oDplot6dZQIFnjGPqVsTiGyLTmEMt5-xj-2b4,784 +django/contrib/gis/db/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/db/backends/base/adapter.py,sha256=gzUjdM_lU9pBK3NlrX_Fx1W96TT1cYJdWZjhV7eQZ4s,482 +django/contrib/gis/db/backends/base/features.py,sha256=F4Xhc-OSHsV-IjB2PbcU_DcVmRITXYnOe2xgXOj_iHo,3406 +django/contrib/gis/db/backends/base/models.py,sha256=vkDweNsExmKWkHNSae9G6P-fT-SMdIgHZ85i31ihXg0,3962 +django/contrib/gis/db/backends/base/operations.py,sha256=v3jyAGBz8oqtShYzvoYLa8oyWjmKcwl-HQB-usnPT8w,6321 +django/contrib/gis/db/backends/mysql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/db/backends/mysql/base.py,sha256=rz8tnvXJlY4V6liWxYshuxQE-uTNuKSBogCz_GtXoaY,507 +django/contrib/gis/db/backends/mysql/features.py,sha256=zyl131i6rwEqn3prTzMMOgy7AuUfcCCNx4lKj9YmXQ4,756 +django/contrib/gis/db/backends/mysql/introspection.py,sha256=-Ff3nDRI7Rz3Cc33UlD0TgajjNH5rde9u0SKTMwuAUw,1771 +django/contrib/gis/db/backends/mysql/operations.py,sha256=RRD37VSAMHbVoBfU7TA1LI_9x4Wox8Yw_Cw0Evj3tnE,4077 +django/contrib/gis/db/backends/mysql/schema.py,sha256=I8eJcKXqiyv15ATHLs5qVsHfWDE07lf0_-iaNdGv0ew,2890 +django/contrib/gis/db/backends/oracle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/db/backends/oracle/adapter.py,sha256=y9ewCXAoQZ4iXCHzf_bsRwSXpCHdK9HJyUZy_1AiA40,1872 +django/contrib/gis/db/backends/oracle/base.py,sha256=NQYlEvE4ioobvMd7u2WC7vMtDiRq_KtilGprD6qfJCo,516 +django/contrib/gis/db/backends/oracle/features.py,sha256=lHjxvF4bQqlv8VQGgXhCNrfnDgbUUm6GwjYeva4HKMc,420 +django/contrib/gis/db/backends/oracle/introspection.py,sha256=NrjdXhbXbEtYEYQfohbBlxD1pMlhmcW44S_z_ZL09Ns,1839 +django/contrib/gis/db/backends/oracle/models.py,sha256=qn2TayTuC67MD7gEZo954DKa5ddB9CNS4rTkXkdXo8E,2084 +django/contrib/gis/db/backends/oracle/operations.py,sha256=wMg1U6JAJga-n_16Ht-CCsngxi4I2xnozNao8ye25oE,8269 +django/contrib/gis/db/backends/oracle/schema.py,sha256=wnb56CJ9Er40E4Yw7RK1hOOYZAHRJJFbNGNK9E9IHRk,3916 +django/contrib/gis/db/backends/postgis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/db/backends/postgis/adapter.py,sha256=Qa1z5H2p2iDegEmuQDH_yUR8sbmYvg1S51F7BArng7g,2154 +django/contrib/gis/db/backends/postgis/base.py,sha256=sFCNoMHRzd-a_MRc9hv-tyVHEODmGveyIopbP6CTPCg,937 +django/contrib/gis/db/backends/postgis/const.py,sha256=a536866Z3EPWtcjYUXewOe0QjyfFIhxRTk_tFmRu1NA,1484 +django/contrib/gis/db/backends/postgis/features.py,sha256=iBZqX6o1YBrmw5pSUYeft-ga6FGa05J-9ADFNsRtLgk,422 +django/contrib/gis/db/backends/postgis/introspection.py,sha256=EMl6H0OOQzzKLMKDOuMQXwaxo6S0JMQ4WRmynFcmxEA,5410 +django/contrib/gis/db/backends/postgis/models.py,sha256=EE3RLh8ywcJ7NAYhPAQbORChwsgntssvDqXkLxDGR2A,1962 +django/contrib/gis/db/backends/postgis/operations.py,sha256=r0RfufIz-seq2JPpzdiz_lEy5Jrw9wYrL9dMbkpnPqA,15946 +django/contrib/gis/db/backends/postgis/pgraster.py,sha256=xo7S1sR_xaaUGCZOcZlNriSLb_Rw7yTkPHgcy-9o7Xo,4586 +django/contrib/gis/db/backends/postgis/schema.py,sha256=8OLvoGWRnm8WNhVzfd_4hk58I_IErPMdvswL2D4DG2I,2647 +django/contrib/gis/db/backends/spatialite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/db/backends/spatialite/adapter.py,sha256=y74p_UEgLtoYjNZEi72mwcJOh_b-MzJ7sZd68WJXBiY,317 +django/contrib/gis/db/backends/spatialite/base.py,sha256=UeWmlPtr1VUZgogPV-S-poAds4hgcGcrAhIBzery3f4,2875 +django/contrib/gis/db/backends/spatialite/client.py,sha256=NsqD2vAnfjqn_FbQnCQeAqbGyZf9oa6gl7EPsMTPf8c,138 +django/contrib/gis/db/backends/spatialite/features.py,sha256=UcNZz6Pn5ULxxafA35EqapaopfrG1A77LDfadKUuwX0,783 +django/contrib/gis/db/backends/spatialite/introspection.py,sha256=hfvLrbpXfCJaEHnajPR4UNS69bHL_WGvQi6s0vYsy0A,3169 +django/contrib/gis/db/backends/spatialite/models.py,sha256=Im-NSbDbUMjvZgZpABrOMuKqmygbcKxTZv0k1YZf1gE,1890 +django/contrib/gis/db/backends/spatialite/operations.py,sha256=nnET48MGuG6ZP2YUVJaVYvlEtdNbm-MTjvuCPIO-BGY,8309 +django/contrib/gis/db/backends/spatialite/schema.py,sha256=WLvCcCOqdTcBmsjaBNt15YwVzE05vXzQVvfGva6q1Xo,6838 +django/contrib/gis/db/models/__init__.py,sha256=BR3kQAefIv4O1NksiVCUShwlSO4OCNoUGan6dCRGIyU,817 +django/contrib/gis/db/models/aggregates.py,sha256=6pu08PWnXFhFe2yWOoaBKVk87pcIm5LSKSlIlM3hJ24,2583 +django/contrib/gis/db/models/fields.py,sha256=dXgNMhVzzoqMxrTv8lOb-7yxBVX-jr1CzxzuKk9gRFQ,13514 +django/contrib/gis/db/models/functions.py,sha256=1mpm9lPWFUmZoF1EsFYKQJlYPql6R8n5TiDG7R6giJo,16264 +django/contrib/gis/db/models/lookups.py,sha256=vmQVxVe62O0hcTIsd-03bQl2R7JdwYx6Fzz4MMKa7g8,10878 +django/contrib/gis/db/models/proxy.py,sha256=F_y7gVePcxpywNxMMEzS0A_t4LCbkhfrOllQZ0ZDPgU,3172 +django/contrib/gis/db/models/sql/__init__.py,sha256=oYJYL-5DAO-DIcpIQ7Jmeq_cuKapRB83V1KLVIs_5iU,139 +django/contrib/gis/db/models/sql/conversion.py,sha256=gG1mTUWb33YK_Uf1ZJRg5MRhkCTLtgajD3xxi7thODA,2400 +django/contrib/gis/forms/__init__.py,sha256=fREam1OSkDWr9ugUMNZMFn8Y9TufpRCn3Glj14DTMbQ,298 +django/contrib/gis/forms/fields.py,sha256=0cXtGt9PdutO4Ouk-q6qddReN2C-64lFSUPfuHqTvco,4114 +django/contrib/gis/forms/widgets.py,sha256=Lt4WZC58wtrZw8BCg-_1exsaocMujJC4m47EusatfwI,3515 +django/contrib/gis/gdal/LICENSE,sha256=VwoEWoNyts1qAOMOuv6OPo38Cn_j1O8sxfFtQZ62Ous,1526 +django/contrib/gis/gdal/__init__.py,sha256=Zs9bOGm9RStYhhlWCnqRNChJG4K_oWDPRXYylplur1Q,1760 +django/contrib/gis/gdal/base.py,sha256=yymyL0vZRMBfiFUzrehvaeaunIxMH5ucGjPRfKj-rAo,181 +django/contrib/gis/gdal/datasource.py,sha256=ItTc0jrMn0fTDBIoHVjhjskIrRjKKYEXaP5G6t21LHY,4490 +django/contrib/gis/gdal/driver.py,sha256=iBp2Vk6UV-fPJWsIxBc-pUdVmG51GHTSgOyDD-Dg9lc,3262 +django/contrib/gis/gdal/envelope.py,sha256=ZsX4QPtg60yVl5MMjc_mbolnbA0lWWV-85ZW4IHWIbU,6973 +django/contrib/gis/gdal/error.py,sha256=WNtvm0k-Msbo5pW2rO1_5fDvLRqoF8D5ka9UC6hfclM,1575 +django/contrib/gis/gdal/feature.py,sha256=41qBdM1bVmKh4W-5QO6-3mrEbyL-1lCEGgclsOIJAzg,3927 +django/contrib/gis/gdal/field.py,sha256=64_BJ1SyJXqByVPiQB2HU6_5KiPSe2IE-5Wq4heKbEo,6699 +django/contrib/gis/gdal/geometries.py,sha256=tvtVLuW-W23tlp-rGGj4Fx6aNqFNxDqr2hAlAjdjO2Y,24515 +django/contrib/gis/gdal/geomtype.py,sha256=wV9vW9lalMtMSEja161xMdZVqmaf6rR-PC2GdzeIwMs,3175 +django/contrib/gis/gdal/layer.py,sha256=NeFb78T4O8KBuAUfMdR2t-tK5UO4GCCSGd3ZY5Temyo,8537 +django/contrib/gis/gdal/libgdal.py,sha256=H0sugVJuTEPvjJZ2S3SUjZOs_9yn4Yq5FDYV4UNOEhw,3612 +django/contrib/gis/gdal/srs.py,sha256=jJDIApRPMhm6gQNVKmqCzrgufx1MFo44Eu7tk_Elu7k,11540 +django/contrib/gis/gdal/prototypes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/gdal/prototypes/ds.py,sha256=AAu7QnwigZ-3Dme-uHsOySlT1TGvAYSvqF1pZtauMto,4413 +django/contrib/gis/gdal/prototypes/errcheck.py,sha256=81MQSCm3lvq8LYMi7t901Z82X9ChgApD0MC6jh2TKT4,4151 +django/contrib/gis/gdal/prototypes/generation.py,sha256=WmFEbrwQQJpdHd5bBZYYO07bsR_3Sv8ZFQXNjGgffGA,4612 +django/contrib/gis/gdal/prototypes/geom.py,sha256=ELRO7bR8RxO3HIuxtitr06yhsG4DxYTlRsTa6NenTqI,4946 +django/contrib/gis/gdal/prototypes/raster.py,sha256=aXOXg3B_NcFt4AoX6sDSr0u_yEvhWPF2D00qhxCFnzc,5763 +django/contrib/gis/gdal/prototypes/srs.py,sha256=yzAqWOFjP626Kovwd1HOlJuWcT3kuLCFq_PCVNN7Gaw,3540 +django/contrib/gis/gdal/raster/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/gdal/raster/band.py,sha256=jGoWznyK-4MYElT3KpuUTyWjGmv_Eou_c76BqBXMMR4,8304 +django/contrib/gis/gdal/raster/base.py,sha256=VJk16KfArc2SbTjRK3iLuFmzXW1B7VUSctG0Jc6m4Vg,3014 +django/contrib/gis/gdal/raster/const.py,sha256=D976ENrWFWdoH1fS5DuyhcS8ix7zJB8UIu4_NvEJtgI,2889 +django/contrib/gis/gdal/raster/source.py,sha256=3URK_Vp9VsObLWLDB5tT59XVAUs-pBUsJrojeD6fdJE,16854 +django/contrib/gis/geoip2/__init__.py,sha256=uIUWQyMsbSrYL-oVqFsmhqQkYGrh7pHLIVvIM3W_EG4,822 +django/contrib/gis/geoip2/base.py,sha256=BuT-N9PuRqjuP8kohfKxvnft-nI7J7orPzLrOUDF2qE,9033 +django/contrib/gis/geoip2/resources.py,sha256=UFle7-6gOKg-En5z_uaO3VzlUmhGoSxWsy_hbIh-tjQ,651 +django/contrib/gis/geos/LICENSE,sha256=CL8kt1USOK4yUpUkVCWxyuua0PQvni0wPHs1NQJjIEU,1530 +django/contrib/gis/geos/__init__.py,sha256=DXFaljVp6gf-E0XAbfO1JnYjPYSDfGZQ2VLtGYBcUZQ,648 +django/contrib/gis/geos/base.py,sha256=NdlFg5l9akvDp87aqzh9dk0A3ZH2TI3cOq10mmmuHBk,181 +django/contrib/gis/geos/collections.py,sha256=OHpBZoruCk_rySBZ4gpEA2ZWLODFCHwkOyGIn1wxGJc,4162 +django/contrib/gis/geos/coordseq.py,sha256=cMGg3XPm2x3VYjkYys8rojRG7uzMez8FpOr2HD-Jy8Q,6419 +django/contrib/gis/geos/error.py,sha256=r3SNTnwDBI6HtuyL3mQ_iEEeKlOqqqdkHnhNoUkMohw,104 +django/contrib/gis/geos/factory.py,sha256=f6u2m1AtmYYHk_KrIC9fxt7VGsJokJVoSWEx-DkPWx0,961 +django/contrib/gis/geos/geometry.py,sha256=Gbz_K0_QMluq69V-wxp2AQwScueIz5K5bBgxkLXY__g,24845 +django/contrib/gis/geos/io.py,sha256=Om5DBSlttixUc3WQAGZDhzPdb5JTe82728oImIj_l3k,787 +django/contrib/gis/geos/libgeos.py,sha256=AtMP5GPGgjPPQzgzk8G-fxDFWlhd7e-LWR4idA3dXh8,5127 +django/contrib/gis/geos/linestring.py,sha256=xBs4p9osA_zUK6xCdgg_nBLBmbvZ_Qxa7aZ8T5ao0vs,5960 +django/contrib/gis/geos/mutable_list.py,sha256=_dHOe_CF9jQGv0UFbKUwSqLWcl4EQBFLJ0wtO8cf5Y4,10489 +django/contrib/gis/geos/point.py,sha256=vBBmdajc7GXisTdRDriHEJRc0irjNJsTF8qDtHr5o4U,4443 +django/contrib/gis/geos/polygon.py,sha256=qYVaXi9rxs3yUQH-z2Kqr4vw5Pjd-HneTa7iB6r-86c,6691 +django/contrib/gis/geos/prepared.py,sha256=rJf35HOTxPrrk_yA-YR9bQlL_pPDKecuhwZlcww8lxY,1575 +django/contrib/gis/geos/prototypes/__init__.py,sha256=0jfLanLmI1q-3NIpdIZr3EHnMzhPRXMhbCNIHf3glfI,1221 +django/contrib/gis/geos/prototypes/coordseq.py,sha256=jd8jmxXbhZjNmWRad9917ar8ozDIih-EnFvmamgLxm0,2989 +django/contrib/gis/geos/prototypes/errcheck.py,sha256=YTUBFoHU5pZOAamBPgogFymDswgnMr1_KL59sZfInYo,2654 +django/contrib/gis/geos/prototypes/geom.py,sha256=FoWEduMbbWb6_blM2IJOP_WkYCVISLksuXOaFAL_9c8,3565 +django/contrib/gis/geos/prototypes/io.py,sha256=q9LPSy0ZKDGag8pn8XhswRI8E42EzBy3kqmWTTxYRM4,11118 +django/contrib/gis/geos/prototypes/misc.py,sha256=7Xwk0HG__JtPt6wJD-ieMkD-7KxpnofYrHSk6NEUeJo,1161 +django/contrib/gis/geos/prototypes/predicates.py,sha256=Ya06ir7LZQBSUypB05iv9gpvZowOSLIKa4fhCnhZuYY,1587 +django/contrib/gis/geos/prototypes/prepared.py,sha256=SC7g9_vvsW_ty7LKqlMzJfF9v3EvsJX9-j3kpSeCRfY,1184 +django/contrib/gis/geos/prototypes/threadsafe.py,sha256=mMS57uRZmYrsWluD4Y8Sej5gH7IFiGCHjERfQMsE6Ak,2389 +django/contrib/gis/geos/prototypes/topology.py,sha256=AD9s3yytjEaF6YZpa7nBufZlxaC7lM8q7GfXaEWRvxY,2139 +django/contrib/gis/locale/af/LC_MESSAGES/django.mo,sha256=TN3GddZjlqXnhK8UKLlMoMIXNw2szzj7BeRjoKjsR5c,470 +django/contrib/gis/locale/af/LC_MESSAGES/django.po,sha256=XPdXaQsZ6yDPxF3jVMEI4bli_5jrEawoO-8DHMk8Q_A,1478 +django/contrib/gis/locale/ar/LC_MESSAGES/django.mo,sha256=q0DhiLoyS8WBktN150bvtusd885p2E7e23VMFAqJPj0,2428 +django/contrib/gis/locale/ar/LC_MESSAGES/django.po,sha256=rnZPCzub0GRmC3FwmfyhATesLcm4yTRNr8jDSvM9wBQ,2639 +django/contrib/gis/locale/ast/LC_MESSAGES/django.mo,sha256=8o0Us4wR14bdv1M5oBeczYC4oW5uKnycWrj1-lMIqV4,850 +django/contrib/gis/locale/ast/LC_MESSAGES/django.po,sha256=0beyFcBkBOUNvPP45iqewTNv2ExvCPvDYwpafCJY5QM,1684 +django/contrib/gis/locale/az/LC_MESSAGES/django.mo,sha256=Fa4dVabHbnYIaJNor3mac1dXOHEEiO2MN9LqGe-r5kg,1211 +django/contrib/gis/locale/az/LC_MESSAGES/django.po,sha256=Xj1cR_yGYeqHDiNU-UVoWjVevwAfT7bOTj5Cbbx49pk,1801 +django/contrib/gis/locale/be/LC_MESSAGES/django.mo,sha256=ySlqE1WXTqM5DGsE_fEF5pipbyqj4A10SZgvQlFAyKc,2488 +django/contrib/gis/locale/be/LC_MESSAGES/django.po,sha256=HzR5MKPYfc-xeRnb0oPIi9OLa-iA86_IbbM3Poj8h_k,2651 +django/contrib/gis/locale/bg/LC_MESSAGES/django.mo,sha256=1A5wo7PLz0uWsNMHv_affxjNnBsY3UQNz7zHszu56do,2452 +django/contrib/gis/locale/bg/LC_MESSAGES/django.po,sha256=5Onup09U6w85AFWvjs2QKnYXoMhnnw9u4eUlIa5QoXU,2670 +django/contrib/gis/locale/bn/LC_MESSAGES/django.mo,sha256=7oNsr_vHQfsanyP-o1FG8jZTSBK8jB3eK2fA9AqNOx4,1070 +django/contrib/gis/locale/bn/LC_MESSAGES/django.po,sha256=PTa9EFZdqfznUH7si3Rq3zp1kNkTOnn2HRTEYXQSOdM,1929 +django/contrib/gis/locale/br/LC_MESSAGES/django.mo,sha256=dKdyM_SsEERl7fEYUej6idqQpQVVm2oeBdQwzcxGU8s,466 +django/contrib/gis/locale/br/LC_MESSAGES/django.po,sha256=mcr1XLHBS7WvX4S086rope0RX_WhkpZd93t-1S9A0O0,1512 +django/contrib/gis/locale/bs/LC_MESSAGES/django.mo,sha256=9EdKtZkY0FX2NlX_q0tIxXD-Di0SNQJZk3jo7cend0A,1308 +django/contrib/gis/locale/bs/LC_MESSAGES/django.po,sha256=eu_qF8dbmlDiRKGNIz80XtIunrF8QIOcy8O28X02GvQ,1905 +django/contrib/gis/locale/ca/LC_MESSAGES/django.mo,sha256=_ghgN_u_2yqPFt8oKksLPQeJxn1dz_o23Z-OAa3xKTQ,2043 +django/contrib/gis/locale/ca/LC_MESSAGES/django.po,sha256=o5dQ-gYO9WPYQf4EFhpl3GLHzu-KU3MDYAn3Y_YVpMs,2313 +django/contrib/gis/locale/cs/LC_MESSAGES/django.mo,sha256=fxe9guXFqd6Vc8c-srZ-h-FEK9P00CfogO1PlP5AmiA,2058 +django/contrib/gis/locale/cs/LC_MESSAGES/django.po,sha256=C7CHSputPGEzUKZ3Q6dX5xOBtwkiqOsjHxHz-oUuMkg,2259 +django/contrib/gis/locale/cy/LC_MESSAGES/django.mo,sha256=vUG_wzZaMumPwIlKwuN7GFcS9gnE5rpflxoA_MPM_po,1430 +django/contrib/gis/locale/cy/LC_MESSAGES/django.po,sha256=_QjXT6cySUXrjtHaJ3046z-5PoXkCqtOhvA7MCZsXxk,1900 +django/contrib/gis/locale/da/LC_MESSAGES/django.mo,sha256=qSfQxrORzIWKkcgjsCOOsTGhr8qU7DhqbWRxbQzkGXI,1934 +django/contrib/gis/locale/da/LC_MESSAGES/django.po,sha256=5vF_PjA29rtkd3WaIcwT4w0_69hqSN-1GFhKVtoAHh0,2176 +django/contrib/gis/locale/de/LC_MESSAGES/django.mo,sha256=mI3SuiIrcN27uvquzq7O9wtKIjaVQjHAesncCgBg8_g,1999 +django/contrib/gis/locale/de/LC_MESSAGES/django.po,sha256=4m3n1PEqvjKftQWz4s_ElJzZuCVzdWGbIKEHoBrhEy4,2151 +django/contrib/gis/locale/dsb/LC_MESSAGES/django.mo,sha256=69wcPviGvpI2TxiSEux2GnUo1tu0CeZgQKBjJZrEeRk,2109 +django/contrib/gis/locale/dsb/LC_MESSAGES/django.po,sha256=koNMmuvSPrHBxNsE0EH4zPcDZeFAyBHR_qQnp3HT80o,2226 +django/contrib/gis/locale/el/LC_MESSAGES/django.mo,sha256=8QAS4MCktYLFsCgcIVflPXePYAWwr6iEZ7K8_axi_5U,2519 +django/contrib/gis/locale/el/LC_MESSAGES/django.po,sha256=6JVoYCUCUznxgQYlOCWJw1Ad6SR3Fa9jlorSCYkiwLw,2886 +django/contrib/gis/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/gis/locale/en/LC_MESSAGES/django.po,sha256=xQNCkGkE6LwUS33QmgHTaLg0TQNbO9IPElF6RkYrY9c,2223 +django/contrib/gis/locale/en_AU/LC_MESSAGES/django.mo,sha256=IPn5kRqOvv5S7jpbIUw8PEUkHlyjEL-4GuOANd1iAzI,486 +django/contrib/gis/locale/en_AU/LC_MESSAGES/django.po,sha256=x_58HmrHRia2LoYhmmN_NLb1J3f7oTDvwumgTo0LowI,1494 +django/contrib/gis/locale/en_GB/LC_MESSAGES/django.mo,sha256=WkORQDOsFuV2bI7hwVsJr_JTWnDQ8ZaK-VYugqnLv3w,1369 +django/contrib/gis/locale/en_GB/LC_MESSAGES/django.po,sha256=KWPMoX-X-gQhb47zoVsa79-16-SiCGpO0s4xkcGv9z0,1910 +django/contrib/gis/locale/eo/LC_MESSAGES/django.mo,sha256=qls9V1jybymGCdsutcjP6fT5oMaI-GXnt_oNfwq-Yhs,1960 +django/contrib/gis/locale/eo/LC_MESSAGES/django.po,sha256=WPSkCxwq3ZnR-_L-W-CnS0_Qne3ekX7ZAZVaubiWw5s,2155 +django/contrib/gis/locale/es/LC_MESSAGES/django.mo,sha256=l88snQomLTK7JQQ5MGdUWGf_6MqiyZWqnCuZPAMctoQ,2056 +django/contrib/gis/locale/es/LC_MESSAGES/django.po,sha256=e4YW5wz0R2oI8VmEZGgMsLVycbmv3ILDjetpjS8ZXl4,2423 +django/contrib/gis/locale/es_AR/LC_MESSAGES/django.mo,sha256=-SlY9HeeMlg87yZM-mtG-drnsT_jncUOeoY4PPHkjrk,2069 +django/contrib/gis/locale/es_AR/LC_MESSAGES/django.po,sha256=XfXzSvB-x2nMclRwxMDWhPqw8vQMRtWVr4SyvD1XFn8,2219 +django/contrib/gis/locale/es_CO/LC_MESSAGES/django.mo,sha256=P79E99bXjthakFYr1BMobTKqJN9S1aj3vfzMTbGRhCY,1865 +django/contrib/gis/locale/es_CO/LC_MESSAGES/django.po,sha256=tyu8_dFA9JKeQ2VCpCUy_6yX97SPJcDwVqqAuf_xgks,2347 +django/contrib/gis/locale/es_MX/LC_MESSAGES/django.mo,sha256=bC-uMgJXdbKHQ-w7ez-6vh9E_2YSgCF_LkOQlvb60BU,1441 +django/contrib/gis/locale/es_MX/LC_MESSAGES/django.po,sha256=MYO9fGclp_VvLG5tXDjXY3J_1FXI4lDv23rGElXAyjA,1928 +django/contrib/gis/locale/es_VE/LC_MESSAGES/django.mo,sha256=5YVIO9AOtmjky90DAXVyU0YltfQ4NLEpVYRTTk7SZ5o,486 +django/contrib/gis/locale/es_VE/LC_MESSAGES/django.po,sha256=R8suLsdDnSUEKNlXzow3O6WIT5NcboZoCjir9GfSTSQ,1494 +django/contrib/gis/locale/et/LC_MESSAGES/django.mo,sha256=RuQYV9MWvWzcX0lI4ot2cY2_49yJPOqeExNx05MpeFg,1961 +django/contrib/gis/locale/et/LC_MESSAGES/django.po,sha256=4yl0Zfmt0mOSJluCw97oJdiWmf3x84a3qtSQDsUZYv8,2239 +django/contrib/gis/locale/eu/LC_MESSAGES/django.mo,sha256=EChDnXv1Tgk0JvMp3RuDsk-0LkgZ2Xig8nckmikewLA,1973 +django/contrib/gis/locale/eu/LC_MESSAGES/django.po,sha256=sj_W9oCmbYENT-zGnTNtAT-ZsI3z7IOhgUxooQNFbpc,2191 +django/contrib/gis/locale/fa/LC_MESSAGES/django.mo,sha256=ecBNKfMWmDppr1J-RArykdidJZtNxbzfGpxEGhmsp3s,2275 +django/contrib/gis/locale/fa/LC_MESSAGES/django.po,sha256=lYBduv3O2QN7oZtoUzyBxx8e9f2_VGFU0CcpGNom5Ps,2583 +django/contrib/gis/locale/fi/LC_MESSAGES/django.mo,sha256=L_1vFA-I0vQddIdLpNyATweN04E5cRw-4Xr81D67Q_c,1946 +django/contrib/gis/locale/fi/LC_MESSAGES/django.po,sha256=WSrldLannVh0Vnmm18X5FwHoieLQYXz0CoF2SY52w0M,2127 +django/contrib/gis/locale/fr/LC_MESSAGES/django.mo,sha256=asAhstLR7EmVyuijAii40LOtdcsapHaChkfIvhlsdrQ,2082 +django/contrib/gis/locale/fr/LC_MESSAGES/django.po,sha256=GvRJJNZL55BRARg2TozwQjRprLUNMQxtzfB94Qs0Ye8,2290 +django/contrib/gis/locale/fy/LC_MESSAGES/django.mo,sha256=2kCnWU_giddm3bAHMgDy0QqNwOb9qOiEyCEaYo1WdqQ,476 +django/contrib/gis/locale/fy/LC_MESSAGES/django.po,sha256=7ncWhxC5OLhXslQYv5unWurhyyu_vRsi4bGflZ6T2oQ,1484 +django/contrib/gis/locale/ga/LC_MESSAGES/django.mo,sha256=m6Owcr-5pln54TXcZFAkYEYDjYiAkT8bGFyw4nowNHA,1420 +django/contrib/gis/locale/ga/LC_MESSAGES/django.po,sha256=I0kyTnYBPSdYr8RontzhGPShJhylVAdRLBGWRQr2E7g,1968 +django/contrib/gis/locale/gd/LC_MESSAGES/django.mo,sha256=GR9860LI6qrGdaqUYG8GskC_EeGHBetVojk0TSTIIO8,2142 +django/contrib/gis/locale/gd/LC_MESSAGES/django.po,sha256=l9fNaI3A5mmULDsg-D-cc-hhlGOYlP4JrxJJn4YU4hM,2260 +django/contrib/gis/locale/gl/LC_MESSAGES/django.mo,sha256=4OUuNpkYRWjKz_EoY1zDzKOK8YptrwUutQqFvSKsLUs,1421 +django/contrib/gis/locale/gl/LC_MESSAGES/django.po,sha256=s9tiYQLnv1_uzyLpi3qqV_zwJNic1AGFsUGc3FhJbMo,2006 +django/contrib/gis/locale/he/LC_MESSAGES/django.mo,sha256=Lv18lxyH_Fnq9kfqbthOhc5ZyFj4cP2BKAPmT8zF-rk,2142 +django/contrib/gis/locale/he/LC_MESSAGES/django.po,sha256=p3lU7h8Y9VDBBSDGhYCKyF3ohDmVkUCWSHWUiwmXgg8,2296 +django/contrib/gis/locale/hi/LC_MESSAGES/django.mo,sha256=3nsy5mxKTPtx0EpqBNA_TJXmLmVZ4BPUZG72ZEe8OPM,1818 +django/contrib/gis/locale/hi/LC_MESSAGES/django.po,sha256=jTFG2gqqYAQct9-to0xL2kUFQu-ebR4j7RGfxn4sBAg,2372 +django/contrib/gis/locale/hr/LC_MESSAGES/django.mo,sha256=0XrRj2oriNZxNhEwTryo2zdMf-85-4X7fy7OJhB5ub4,1549 +django/contrib/gis/locale/hr/LC_MESSAGES/django.po,sha256=iijzoBoD_EJ1n-a5ys5CKnjzZzG299zPoCN-REFkeqE,2132 +django/contrib/gis/locale/hsb/LC_MESSAGES/django.mo,sha256=W3LtmsG61dOj4oNOEDuZC4iOco8jbFkrBUhhW1rxXVE,2083 +django/contrib/gis/locale/hsb/LC_MESSAGES/django.po,sha256=WmUI-Hqp2yLFJNYKU7-ko7bJY25pcPqPblu0rkSDKVk,2203 +django/contrib/gis/locale/hu/LC_MESSAGES/django.mo,sha256=Gbu1WlCo21lsqVrfAJHD0SsrQ4RxQ5Wsqhp9sJuHmEA,1941 +django/contrib/gis/locale/hu/LC_MESSAGES/django.po,sha256=dJCoSLIugFyOoPuewWcquN_UCqJG3gYZzb1IiO_2r5Y,2173 +django/contrib/gis/locale/ia/LC_MESSAGES/django.mo,sha256=9MZnSXkQUIfbYB2f4XEtYo_FzuVi5OlsYcX9K_REz3c,1899 +django/contrib/gis/locale/ia/LC_MESSAGES/django.po,sha256=f7OuqSzGHQNldBHp62VIWjqP0BB0bvo8qEx9_wzH090,2116 +django/contrib/gis/locale/id/LC_MESSAGES/django.mo,sha256=vkdSqp0U3LhTfejwHLhnwjQ4OFFN0GVKrquxTWgLIh0,1983 +django/contrib/gis/locale/id/LC_MESSAGES/django.po,sha256=Zz3Yd6id4X3rfjqiYt_CmyPpLYnFY1fuTUKRnZnDMdA,2322 +django/contrib/gis/locale/io/LC_MESSAGES/django.mo,sha256=_yUgF2fBUxVAZAPNw2ROyWly5-Bq0niGdNEzo2qbp8k,464 +django/contrib/gis/locale/io/LC_MESSAGES/django.po,sha256=fgGJ1xzliMK0MlVoV9CQn_BuuS3Kl71Kh5YEybGFS0Y,1472 +django/contrib/gis/locale/is/LC_MESSAGES/django.mo,sha256=CBNZj4uA2niVY5uA7MKHu21Ou8d3wp_EJCWC8w3Y0JY,1317 +django/contrib/gis/locale/is/LC_MESSAGES/django.po,sha256=SUst5hGJO9veiC6SWB0oLEHzMXNqxMG8l8oLpoTQFt0,1865 +django/contrib/gis/locale/it/LC_MESSAGES/django.mo,sha256=px9x5hMusGf2LB2Vz9AijSpeppg3gUCI0dHfBb_F44A,2009 +django/contrib/gis/locale/it/LC_MESSAGES/django.po,sha256=RZRPvW8eAvd0-KnEQ0lPz0gSPmvq1um0rsEgmoIQMsU,2309 +django/contrib/gis/locale/ja/LC_MESSAGES/django.mo,sha256=knTOfVviVceaAEp9xeh4WUE-ro2lkUIUTtkA-9yk3Bs,2124 +django/contrib/gis/locale/ja/LC_MESSAGES/django.po,sha256=mqD9ZpqXvAL7adXVWyVlIyD7meIcyXI6RXqRQD5cRm8,2287 +django/contrib/gis/locale/ka/LC_MESSAGES/django.mo,sha256=iqWQ9j8yanPjDhwi9cNSktYgfLVnofIsdICnAg2Y_to,1991 +django/contrib/gis/locale/ka/LC_MESSAGES/django.po,sha256=tWoXkbWfNsZ2A28_JUvc1wtyVT6m7Hl9nJgfxXGqkgY,2566 +django/contrib/gis/locale/kk/LC_MESSAGES/django.mo,sha256=NtgQONp0UncUNvrh0W2R7u7Ja8H33R-a-tsQShWq-QI,1349 +django/contrib/gis/locale/kk/LC_MESSAGES/django.po,sha256=_wNvDk36C_UegH0Ex6ov8P--cKm-J7XtusXYsjVVZno,1974 +django/contrib/gis/locale/km/LC_MESSAGES/django.mo,sha256=T0aZIZ_gHqHpQyejnBeX40jdcfhrCOjgKjNm2hLrpNE,459 +django/contrib/gis/locale/km/LC_MESSAGES/django.po,sha256=7ARjFcuPQJG0OGLJu9pVfSiAwc2Q-1tT6xcLeKeom1c,1467 +django/contrib/gis/locale/kn/LC_MESSAGES/django.mo,sha256=EkJRlJJSHZJvNZJuOLpO4IIUEoyi_fpKwNWe0OGFcy4,461 +django/contrib/gis/locale/kn/LC_MESSAGES/django.po,sha256=NM3FRy48SSVsUIQc8xh0ZKAgTVAP8iK8elp7NQ6-IdE,1469 +django/contrib/gis/locale/ko/LC_MESSAGES/django.mo,sha256=7SSr6cP3b0vM5z224tJIqmwwWWHGoU0al4LNGbwxtQM,1975 +django/contrib/gis/locale/ko/LC_MESSAGES/django.po,sha256=aXVjYftxj1FONeotkCZkAoQxCCFs5cYb4ceGPSnUScA,2299 +django/contrib/gis/locale/lb/LC_MESSAGES/django.mo,sha256=XAyZQUi8jDr47VpSAHp_8nQb0KvSMJHo5THojsToFdk,474 +django/contrib/gis/locale/lb/LC_MESSAGES/django.po,sha256=5rfudPpH4snSq2iVm9E81EBwM0S2vbkY2WBGhpuga1Q,1482 +django/contrib/gis/locale/lt/LC_MESSAGES/django.mo,sha256=fd8XOToFWDIDe-aklIn3mgvO-uyqgfqSmWDcNURfrNM,2045 +django/contrib/gis/locale/lt/LC_MESSAGES/django.po,sha256=Dvoe-wywlJzqXJPBqia5O98CgV3iDQUWGKJE46HsMPA,2279 +django/contrib/gis/locale/lv/LC_MESSAGES/django.mo,sha256=vE7Ygn4CAsS7tQkrPb8kGVEchTioQxtZTxatJZXVL5k,2057 +django/contrib/gis/locale/lv/LC_MESSAGES/django.po,sha256=6qKFeIFtMexJFuz3TSxGL9vkKYmz_lCr9pDfLPTLzYw,2200 +django/contrib/gis/locale/mk/LC_MESSAGES/django.mo,sha256=PVw73LWWNvaNd95zQbAIA7LA7JNmpf61YIoyuOca2_s,2620 +django/contrib/gis/locale/mk/LC_MESSAGES/django.po,sha256=eusHVHXHRfdw1_JyuBW7H7WPCHFR_z1NBqr79AVqAk0,2927 +django/contrib/gis/locale/ml/LC_MESSAGES/django.mo,sha256=Kl9okrE3AzTPa5WQ-IGxYVNSRo2y_VEdgDcOyJ_Je78,2049 +django/contrib/gis/locale/ml/LC_MESSAGES/django.po,sha256=PWg8atPKfOsnVxg_uro8zYO9KCE1UVhfy_zmCWG0Bdk,2603 +django/contrib/gis/locale/mn/LC_MESSAGES/django.mo,sha256=-Nn70s2On94C-jmSZwTppW2q7_W5xgMpzPXYmxZSKXs,2433 +django/contrib/gis/locale/mn/LC_MESSAGES/django.po,sha256=I0ZHocPlRYrogJtzEGVPsWWHpoVEa7e2KYP9Ystlj60,2770 +django/contrib/gis/locale/mr/LC_MESSAGES/django.mo,sha256=sO2E__g61S0p5I6aEwnoAsA3epxv7_Jn55TyF0PZCUA,468 +django/contrib/gis/locale/mr/LC_MESSAGES/django.po,sha256=McWaLXfWmYTDeeDbIOrV80gwnv07KCtNIt0OXW_v7vw,1476 +django/contrib/gis/locale/my/LC_MESSAGES/django.mo,sha256=i6JlVxP_finJ6vMVsv_csixtZa1qGs3ezVJZDIsE7G8,461 +django/contrib/gis/locale/my/LC_MESSAGES/django.po,sha256=eqtpOzHodtyr15aVOVVMtirg6XSUm6n7BsQpSIZ6D2k,1469 +django/contrib/gis/locale/nb/LC_MESSAGES/django.mo,sha256=AmVS8gbKlqYHpr-v2UdOuYt17wO2WMhVJzfDWX6Tl78,1930 +django/contrib/gis/locale/nb/LC_MESSAGES/django.po,sha256=psdNBDn8IvOyAChU7NqUKIOIssUocfQKSsXnt-89fd8,2146 +django/contrib/gis/locale/ne/LC_MESSAGES/django.mo,sha256=nB-Ta8w57S6hIAhAdWZjDT0Dg6JYGbAt5FofIhJT7k8,982 +django/contrib/gis/locale/ne/LC_MESSAGES/django.po,sha256=eMH6uKZZZYn-P3kmHumiO4z9M4923s9tWGhHuJ0eWuI,1825 +django/contrib/gis/locale/nl/LC_MESSAGES/django.mo,sha256=CFaHe1W7ULU7jUefJeyqykCqCofePc9EZv_YEGjDd-g,1992 +django/contrib/gis/locale/nl/LC_MESSAGES/django.po,sha256=pRNsGMNCI3G1lc9q3_a-Y4pRlABO8Q73XfOJHN0QMnk,2348 +django/contrib/gis/locale/nn/LC_MESSAGES/django.mo,sha256=32x5_V6o_BQBefFmyajOg3ssClw-DMEdvzXkY90fV3Q,1202 +django/contrib/gis/locale/nn/LC_MESSAGES/django.po,sha256=NWA3nD8ZwAZxG9EkE6TW0POJgB6HTeC4J6GOlTMD7j4,1796 +django/contrib/gis/locale/os/LC_MESSAGES/django.mo,sha256=02NpGC8WPjxmPqQkfv9Kj2JbtECdQCtgecf_Tjk1CZc,1594 +django/contrib/gis/locale/os/LC_MESSAGES/django.po,sha256=JBIsv5nJg3Wof7Xy7odCI_xKRBLN_Hlbb__kNqNW4Xw,2161 +django/contrib/gis/locale/pa/LC_MESSAGES/django.mo,sha256=JR1NxG5_h_dFE_7p6trBWWIx-QqWYIgfGomnjaCsWAA,1265 +django/contrib/gis/locale/pa/LC_MESSAGES/django.po,sha256=Ejd_8dq_M0E9XFijk0qj4oC-8_oe48GWWHXhvOrFlnY,1993 +django/contrib/gis/locale/pl/LC_MESSAGES/django.mo,sha256=aLv23YOFYR22AY3BLP5xcDHKTqc_GVjm_FZdTNr0-Jk,2138 +django/contrib/gis/locale/pl/LC_MESSAGES/django.po,sha256=uEQ59IxEJATHQOsZcvNRdR8kd-Iv7PRTHw3dR68GID8,2497 +django/contrib/gis/locale/pt/LC_MESSAGES/django.mo,sha256=sE5PPOHzfT8QQXuV5w0m2pnBTRhKYs_vFhk8p_A4Jg0,2036 +django/contrib/gis/locale/pt/LC_MESSAGES/django.po,sha256=TFt6Oj1NlCM3pgs2dIgFZR3S3y_g7oR7S-XRBlM4924,2443 +django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.mo,sha256=hsj4npR8H05FKM0fiQf83kSip7a8871_AQUY5dyAqj8,2011 +django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.po,sha256=NLnhgZjJxx0EUy4s_8sqQFSWOa0or0CiEjUoPlTH4pc,2311 +django/contrib/gis/locale/ro/LC_MESSAGES/django.mo,sha256=YSbX0Y_T44pBLpKmaVN7leNXBDwHZB4EWQaU9Go3szM,2047 +django/contrib/gis/locale/ro/LC_MESSAGES/django.po,sha256=QBwAO5P2FYzCSoXF52MSEtncAAimw9YQKO8HvCPbF5U,2260 +django/contrib/gis/locale/ru/LC_MESSAGES/django.mo,sha256=5uccCKKgLtin1jcp_1j4aiv5FEzX6LxRNEL3i11m7ts,2583 +django/contrib/gis/locale/ru/LC_MESSAGES/django.po,sha256=Pvs1ADP2MtalAHAZ04cpQeQPXsKBCVeggPW8GP-nsPQ,2862 +django/contrib/gis/locale/sk/LC_MESSAGES/django.mo,sha256=_LWDbFebq9jEa1YYsSMOruTk0oRaU9sxPGml1YPuink,2010 +django/contrib/gis/locale/sk/LC_MESSAGES/django.po,sha256=Iz_iHKaDzNhLM5vJd3bbzsCXzKhoEGeqECZxEgBIiGc,2244 +django/contrib/gis/locale/sl/LC_MESSAGES/django.mo,sha256=9-efMT2MoEMa5-SApGWTRiyfvI6vmZzLeMg7qGAr7_A,2067 +django/contrib/gis/locale/sl/LC_MESSAGES/django.po,sha256=foZY7N5QkuAQS7nc3CdnJerCPk-lhSb1xZqU11pNGNo,2303 +django/contrib/gis/locale/sq/LC_MESSAGES/django.mo,sha256=LVdXsubPRVA-1-VeEJEWoGoAWR9kK072boRKaqzyb28,1918 +django/contrib/gis/locale/sq/LC_MESSAGES/django.po,sha256=PFeGnVwfzGcFRm2SCV8-iB5z9TVwyN66qz5X9NClQkQ,2148 +django/contrib/gis/locale/sr/LC_MESSAGES/django.mo,sha256=uoDnM1GV8llXNiLCcB9pKaz-nDVXler4gS1SqmpLAig,1700 +django/contrib/gis/locale/sr/LC_MESSAGES/django.po,sha256=irXO-5rFtSqy0aoN2zhc32kJ4zWlPJYSb-zgEKJtO-4,2239 +django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=i-pBCBcNZMz-3rRcQEJrXZLmPHF7YtIEJnzcsAzgma8,1470 +django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po,sha256=MpcOTqw1HiPzr7IikrEwm63x4ypUv9BnQCOKYSjqL0A,2009 +django/contrib/gis/locale/sv/LC_MESSAGES/django.mo,sha256=6TDgv3FdLP-BvB5BszCB7JcNzk2oDLXxuAkXgg7tYRY,1733 +django/contrib/gis/locale/sv/LC_MESSAGES/django.po,sha256=oY3QRFadk2S9aBs9zPrQRN9glDbqRD80srUFlqXffy0,2113 +django/contrib/gis/locale/sw/LC_MESSAGES/django.mo,sha256=uBhpGHluGwYpODTE-xhdJD2e6PHleN07wLE-kjrXr_M,1426 +django/contrib/gis/locale/sw/LC_MESSAGES/django.po,sha256=nHXQQMYYXT1ec3lIBxQIDIAwLtXucX47M4Cozy08kko,1889 +django/contrib/gis/locale/ta/LC_MESSAGES/django.mo,sha256=Rboo36cGKwTebe_MiW4bOiMsRO2isB0EAyJJcoy_F6s,466 +django/contrib/gis/locale/ta/LC_MESSAGES/django.po,sha256=sLYW8_5BSVoSLWUr13BbKRe0hNJ_cBMEtmjCPBdTlAk,1474 +django/contrib/gis/locale/te/LC_MESSAGES/django.mo,sha256=xDkaSztnzQ33Oc-GxHoSuutSIwK9A5Bg3qXEdEvo4h4,824 +django/contrib/gis/locale/te/LC_MESSAGES/django.po,sha256=nYryhktJumcwtZDGZ43xBxWljvdd-cUeBrAYFZOryVg,1772 +django/contrib/gis/locale/th/LC_MESSAGES/django.mo,sha256=0kekAr7eXc_papwPAxEZ3TxHOBg6EPzdR3q4hmAxOjg,1835 +django/contrib/gis/locale/th/LC_MESSAGES/django.po,sha256=WJPdoZjLfvepGGMhfBB1EHCpxtxxfv80lRjPG9kGErM,2433 +django/contrib/gis/locale/tr/LC_MESSAGES/django.mo,sha256=cWFAsuse0yQPdsVGAxFbPOBDxLapMnvMsa50-4-gGYk,2024 +django/contrib/gis/locale/tr/LC_MESSAGES/django.po,sha256=Vqsqw1yPPdZqd5unj76FQAbuQrxKKnxtpQS_33nBGRQ,2259 +django/contrib/gis/locale/tt/LC_MESSAGES/django.mo,sha256=cGVPrWCe4WquVV77CacaJwgLSnJN0oEAepTzNMD-OWk,1470 +django/contrib/gis/locale/tt/LC_MESSAGES/django.po,sha256=98yeRs-JcMGTyizOpEuQenlnWJMYTR1-rG3HGhKCykk,2072 +django/contrib/gis/locale/udm/LC_MESSAGES/django.mo,sha256=I6bfLvRfMn79DO6bVIGfYSVeZY54N6c8BNO7OyyOOsw,462 +django/contrib/gis/locale/udm/LC_MESSAGES/django.po,sha256=B1PCuPYtNOrrhu4fKKJgkqxUrcEyifS2Y3kw-iTmSIk,1470 +django/contrib/gis/locale/uk/LC_MESSAGES/django.mo,sha256=5uJgGDDQi8RTRNxbQToKE7FVLOK73w5Wgmf6zCa66Uk,2455 +django/contrib/gis/locale/uk/LC_MESSAGES/django.po,sha256=fsxwSb93uD59ms8jdO84qx8C5rKy74TDcH12yaKs8mY,2873 +django/contrib/gis/locale/ur/LC_MESSAGES/django.mo,sha256=tB5tz7EscuE9IksBofNuyFjk89-h5X7sJhCKlIho5SY,1410 +django/contrib/gis/locale/ur/LC_MESSAGES/django.po,sha256=16m0t10Syv76UcI7y-EXfQHETePmrWX4QMVfyeuX1fQ,2007 +django/contrib/gis/locale/vi/LC_MESSAGES/django.mo,sha256=NT5T0FRCC2XINdtaCFCVUxb5VRv8ta62nE8wwSHGTrc,1384 +django/contrib/gis/locale/vi/LC_MESSAGES/django.po,sha256=y77GtqH5bv1wR78xN5JLHusmQzoENTH9kLf9Y3xz5xk,1957 +django/contrib/gis/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=rjeFyj0X_v3qP8NHY8L-szEEYmbfB4jO_wcV8f2_ntY,1879 +django/contrib/gis/locale/zh_Hans/LC_MESSAGES/django.po,sha256=GFZzUTmlQXZ1pDhwaYgH9_Lr8OQp9s402jHfHmX9Jso,2245 +django/contrib/gis/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=SRSpoSMtx8PDTpHroMUymZ_-Eu7zzjqPDBiAm3XSV2I,2012 +django/contrib/gis/locale/zh_Hant/LC_MESSAGES/django.po,sha256=b6NQK1--AC67NiUaOew_ajDIj5uSrPzW_rUpLU71yA8,2277 +django/contrib/gis/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/management/commands/inspectdb.py,sha256=Z2Do56mM2tBvnujnCk5C7JhI3z_LQWB4L0M626hmumk,750 +django/contrib/gis/management/commands/ogrinspect.py,sha256=Vv-MAfE0uNieJF6W9gQ4TO-IHCCQvL1qAU7lyEK4izk,5848 +django/contrib/gis/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/gis/serializers/geojson.py,sha256=J7XIwlzEyhKJF7x-4H-RjnXazkNybsX-vFpxz5InNQY,2716 +django/contrib/gis/sitemaps/__init__.py,sha256=eVHUxfzw1VQn6bqH3D8bE471s8bNJSB3phuAI-zg9gA,138 +django/contrib/gis/sitemaps/kml.py,sha256=kbKyIt-_u7zZJB8uPG4Cfi7axA5ms2ltdonctm5zewA,2413 +django/contrib/gis/sitemaps/views.py,sha256=4xrd2NEQjsPx9582Pa0R2IEzx5NpP5unqCUsPjURgto,2313 +django/contrib/gis/static/gis/css/ol3.css,sha256=pJADzfx4_NL2C1onFpU-muconAA5NThN4sEqSNyY_So,657 +django/contrib/gis/static/gis/img/draw_line_off.svg,sha256=6XW83xsR5-Guh27UH3y5UFn9y9FB9T_Zc4kSPA-xSOI,918 +django/contrib/gis/static/gis/img/draw_line_on.svg,sha256=Hx-pXu4ped11esG6YjXP1GfZC5q84zrFQDPUo1C7FGA,892 +django/contrib/gis/static/gis/img/draw_point_off.svg,sha256=PICrywZPwuBkaQAKxR9nBJ0AlfTzPHtVn_up_rSiHH4,803 +django/contrib/gis/static/gis/img/draw_point_on.svg,sha256=raGk3oc8w87rJfLdtZ4nIXJyU3OChCcTd4oH-XAMmmM,803 +django/contrib/gis/static/gis/img/draw_polygon_off.svg,sha256=gnVmjeZE2jOvjfyx7mhazMDBXJ6KtSDrV9f0nSzkv3A,981 +django/contrib/gis/static/gis/img/draw_polygon_on.svg,sha256=ybJ9Ww7-bsojKQJtjErLd2cCOgrIzyqgIR9QNhH_ZfA,982 +django/contrib/gis/static/gis/js/OLMapWidget.js,sha256=-Ry6ICBpsfq3XoAU2SshQeCyMuaGd1ZlgPgHapgKFWU,8981 +django/contrib/gis/templates/gis/openlayers-osm.html,sha256=TeiUqCjt73W8Hgrp_6zAtk_ZMBxskNN6KHSmnJ1-GD4,378 +django/contrib/gis/templates/gis/openlayers.html,sha256=P_sBibtZ8ybiBG6dtYbVhRgDYJE-oKYPzl452xad5Ok,1912 +django/contrib/gis/templates/gis/admin/openlayers.html,sha256=GsjT4sNA-2iHRe7PJKsBIGDEAa29vGXwFNNACowj1lw,1867 +django/contrib/gis/templates/gis/admin/openlayers.js,sha256=KoT3VUMAez9-5QoT5U6OJXzt3MLxlTrJMMwINjQ_k7M,8975 +django/contrib/gis/templates/gis/admin/osm.html,sha256=yvYyZPmgP64r1JT3eZCDun5ENJaaN3d3wbTdCxIOvSo,111 +django/contrib/gis/templates/gis/admin/osm.js,sha256=0wFRJXKZ2plp7tb0F9fgkMzp4NrKZXcHiMkKDJeHMRw,128 +django/contrib/gis/templates/gis/kml/base.kml,sha256=VYnJaGgFVHRzDjiFjbcgI-jxlUos4B4Z1hx_JeI2ZXU,219 +django/contrib/gis/templates/gis/kml/placemarks.kml,sha256=TEC81sDL9RK2FVeH0aFJTwIzs6_YWcMeGnHkACJV1Uc,360 +django/contrib/gis/utils/__init__.py,sha256=OmngSNhywEjrNKGXysMlq_iFYvx7ycDWojpCqF6JYLo,579 +django/contrib/gis/utils/layermapping.py,sha256=rvQRfEa5lBrnXKMPjyrG5NmiV3Au_6YwJvdU7YgCePQ,27125 +django/contrib/gis/utils/ogrinfo.py,sha256=VmbxQ5Ri4zjtTxNymuxJp3t3cAntUC83YBMp9PuMMSU,1934 +django/contrib/gis/utils/ogrinspect.py,sha256=DEitGcJBpsFKWjHzFwQQukIuwBR90n2-NTKt0vYU-VY,8935 +django/contrib/gis/utils/srs.py,sha256=SIVPj3MmKhp-C9IPdM6o5KRRdj38fYIpmo-FjzrwBCM,3024 +django/contrib/humanize/__init__.py,sha256=88gkwJxqbRpmigRG0Gu3GNQkXGtTNpica4nf3go-_cI,67 +django/contrib/humanize/apps.py,sha256=ODfDrSH8m3y3xYlyIIwm7DZmrNcoYKG2K8l5mU64V7g,194 +django/contrib/humanize/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 +django/contrib/humanize/locale/af/LC_MESSAGES/django.po,sha256=_77Io7jI-3P2kHpR-ZFd8jw0B1kQxhLiUWR3B2Bud8g,4726 +django/contrib/humanize/locale/ar/LC_MESSAGES/django.mo,sha256=YSyNaNTh2nILzWMH0F61fl7jX0yb4erZhQO1EBo2HiU,7691 +django/contrib/humanize/locale/ar/LC_MESSAGES/django.po,sha256=VAN7tVSYQZfZV5RfTe-wvQOVA9Q1ylLQRrFb9ihMpqs,11035 +django/contrib/humanize/locale/ast/LC_MESSAGES/django.mo,sha256=WvBk8V6g1vgzGqZ_rR-4p7SMh43PFnDnRhIS9HSwdoQ,3468 +django/contrib/humanize/locale/ast/LC_MESSAGES/django.po,sha256=S9lcUf2y5wR8Ufa-Rlz-M73Z3bMo7zji_63cXwtDK2I,5762 +django/contrib/humanize/locale/az/LC_MESSAGES/django.mo,sha256=_6wnH7WjAaZe5rZYn79VyioxWkMeoZTjhhF-AkbkQAU,4102 +django/contrib/humanize/locale/az/LC_MESSAGES/django.po,sha256=c0ZcxuMs82_JUksowREIsrHajdHZFlyaxFkBbw_6K90,6074 +django/contrib/humanize/locale/be/LC_MESSAGES/django.mo,sha256=HEtO6H9OxRn6ybMtRjkD6deu7sMA49GY988Nc5r2nNY,6681 +django/contrib/humanize/locale/be/LC_MESSAGES/django.po,sha256=GM21lBORfcLeQMaif6tuxrPd45srvSDvzaThGCdjs7o,9256 +django/contrib/humanize/locale/bg/LC_MESSAGES/django.mo,sha256=1mRaFPsm5ITFyfdFdqdeY-_Om2OYKua5YWSEP192WR8,4645 +django/contrib/humanize/locale/bg/LC_MESSAGES/django.po,sha256=kTyRblfWlBUMxd_czXTOe-39CcX68X6e4DTmYm3V2gc,6684 +django/contrib/humanize/locale/bn/LC_MESSAGES/django.mo,sha256=jbL4ucZxxtexI10jgldtgnDie3I23XR3u-PrMMMqP6U,4026 +django/contrib/humanize/locale/bn/LC_MESSAGES/django.po,sha256=0l4yyy7q3OIWyFk_PW0y883Vw2Pmu48UcnLM9OBxB68,6545 +django/contrib/humanize/locale/br/LC_MESSAGES/django.mo,sha256=o4it7f3WLq3THeeEZw083KnkuZUqD_xWipLVyMu9ONU,4069 +django/contrib/humanize/locale/br/LC_MESSAGES/django.po,sha256=oHgr0-e4-Xu_hIWqCtKk_SBNV57MU93GNhuN4V4S1zg,5957 +django/contrib/humanize/locale/bs/LC_MESSAGES/django.mo,sha256=1-RNRHPgZR_9UyiEn9Djp4mggP3fywKZho45E1nGMjM,1416 +django/contrib/humanize/locale/bs/LC_MESSAGES/django.po,sha256=M017Iu3hyXmINZkhCmn2he-FB8rQ7rXN0KRkWgrp7LI,5498 +django/contrib/humanize/locale/ca/LC_MESSAGES/django.mo,sha256=U3wnUZ-xwFZsYCd2Brr3rPVMVlatpnuXRYMCHYtB240,4040 +django/contrib/humanize/locale/ca/LC_MESSAGES/django.po,sha256=YgPF3fjBFqj4wmZ1r0I4sS9fRv65my9so4fjyfGbH6o,6025 +django/contrib/humanize/locale/cs/LC_MESSAGES/django.mo,sha256=SsuK8dcYBRPs2_sT8Xnbq2k5swS4Sm1XUsdIQFXl0W0,4706 +django/contrib/humanize/locale/cs/LC_MESSAGES/django.po,sha256=olnH60vKAYaPcP2vYomYuA8q8iJnr2BqdpNIcErIx0k,6976 +django/contrib/humanize/locale/cy/LC_MESSAGES/django.mo,sha256=VjJiaUUhvX9tjOEe6x2Bdp7scvZirVcUsA4-iE2-ElQ,5241 +django/contrib/humanize/locale/cy/LC_MESSAGES/django.po,sha256=sylmceSq-NPvtr_FjklQXoBAfueKu7hrjEpMAsVbQC4,7813 +django/contrib/humanize/locale/da/LC_MESSAGES/django.mo,sha256=J2fWZWpFuD0XvGi5B8cm3-xrDqAHk2Qlfz-Ciwblvr8,4108 +django/contrib/humanize/locale/da/LC_MESSAGES/django.po,sha256=MwloOPiuBPv1DAC12FEqTOHZWkFkpl5jc8naP_BLvk8,6120 +django/contrib/humanize/locale/de/LC_MESSAGES/django.mo,sha256=ZDdNGQvTBkJDDoT1Bq9XxEMpxs4sFY10wuOfSvlTeoQ,4152 +django/contrib/humanize/locale/de/LC_MESSAGES/django.po,sha256=N_Tl5t0zQYGS7iWNIi68TSrA8-Nvv0oJ38nbz64p1wE,6118 +django/contrib/humanize/locale/dsb/LC_MESSAGES/django.mo,sha256=wD8ibBn17MzmF1HjqqksgFUsSwjUdS_JSOWlAQGK34g,5467 +django/contrib/humanize/locale/dsb/LC_MESSAGES/django.po,sha256=YTU1ebIY0g5RSlZowpHwSQtGpxeVOXLIFHNLUm5QvVY,8033 +django/contrib/humanize/locale/el/LC_MESSAGES/django.mo,sha256=xibi0Bv45kBRYEyFnkgNFf0InnGJyv9KQIWDlfj7LUM,5350 +django/contrib/humanize/locale/el/LC_MESSAGES/django.po,sha256=WW9fqED-lBmgvt6UfGTo-B_KGn_OQXRUSHEUZPXbn9g,7428 +django/contrib/humanize/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/humanize/locale/en/LC_MESSAGES/django.po,sha256=2ykg4liEm0g1uv0iZlDXvIZQOvrT3AxMhgnm1QfTy5Y,7085 +django/contrib/humanize/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 +django/contrib/humanize/locale/en_AU/LC_MESSAGES/django.po,sha256=dVOlMtk3-d-KrNLM5Rji-Xrk6Y_n801ofjGQvxSu67M,4742 +django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.mo,sha256=mkx192XQM3tt1xYG8EOacMfa-BvgzYCbSsJQsWZGeAo,3461 +django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po,sha256=MArKzXxY1104jxaq3kvDZs2WzOGYxicfJxFKsLzFavw,5801 +django/contrib/humanize/locale/eo/LC_MESSAGES/django.mo,sha256=Htv0o1DV8no2MfC8M-lfl8HPGZc6HIVxMGIjVSwmyy8,4107 +django/contrib/humanize/locale/eo/LC_MESSAGES/django.po,sha256=FFtvhZULWsOgl0XSEBngqs3BRp_l7WUiRcXDzbP7K1w,6016 +django/contrib/humanize/locale/es/LC_MESSAGES/django.mo,sha256=0aram7l_JemTmkw04jdlWXh1DOlmPWQD7_O3srdOP6o,4183 +django/contrib/humanize/locale/es/LC_MESSAGES/django.po,sha256=bOM7KA6NTTwRGbR1o0o-5JrXM_mOIIPGxASwtoTl_9o,6306 +django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mo,sha256=J_GRAcxrsRqeVJIPcA16DeDPWuh8EAzX6UW4ncv8yFI,4254 +django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po,sha256=LgnGvLxoWS2hh7_26pTpyCKtkcmqUWGaYrvLn2pqgWU,6270 +django/contrib/humanize/locale/es_CO/LC_MESSAGES/django.mo,sha256=2GhQNtNOjK5mTov5RvnuJFTYbdoGBkDGLxzvJ8Vsrfs,4203 +django/contrib/humanize/locale/es_CO/LC_MESSAGES/django.po,sha256=JBf2fHO8jWi6dFdgZhstKXwyot_qT3iJBixQZc3l330,6326 +django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.mo,sha256=82DL2ztdq10X5RIceshK1nO99DW5628ZIjaN8Xzp9ok,3939 +django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.po,sha256=-O7AQluA5Kce9-bd04GN4tfQKoCxb8Sa7EZR6TZBCdM,6032 +django/contrib/humanize/locale/es_VE/LC_MESSAGES/django.mo,sha256=cJECzKpD99RRIpVFKQW65x0Nvpzrm5Fuhfi-nxOWmkM,942 +django/contrib/humanize/locale/es_VE/LC_MESSAGES/django.po,sha256=tDdYtvRILgeDMgZqKHSebe7Z5ZgI1bZhDdvGVtj_anM,4832 +django/contrib/humanize/locale/et/LC_MESSAGES/django.mo,sha256=WBBZ7Uk5nL-Z6qfYQ-LAtpcxyLy4LC36gKgLn1f5in8,4197 +django/contrib/humanize/locale/et/LC_MESSAGES/django.po,sha256=n_nuAVBjwJd-RZXrbINpxubHetNJijvg5NJRUmECmGc,6213 +django/contrib/humanize/locale/eu/LC_MESSAGES/django.mo,sha256=pw2s1xZV8yS4QaKCS-qq6aihFDGObWcKjPSVLcgqN-E,4041 +django/contrib/humanize/locale/eu/LC_MESSAGES/django.po,sha256=LoWxuo_7aXHEAIJRu4S9rKqdvnXr4VMOqHjMd70OnA0,6119 +django/contrib/humanize/locale/fa/LC_MESSAGES/django.mo,sha256=zQlQmEyZ0ErUlfLg62AqOf5w8EnbgTw5VpuOEBQlGXo,3754 +django/contrib/humanize/locale/fa/LC_MESSAGES/django.po,sha256=iF8fvnzRtCx_HYOZhXbXu10T9R6jc7ZmvKItAicFWEg,5538 +django/contrib/humanize/locale/fi/LC_MESSAGES/django.mo,sha256=qlx3w4Y0CNcC5rIrbig_sqCvKAwh_IS-YseoQX3zymc,4177 +django/contrib/humanize/locale/fi/LC_MESSAGES/django.po,sha256=6xTZvvC_VxAyAQpUibJUDu4V2Gdryy8vJc2OviaYNnw,6180 +django/contrib/humanize/locale/fr/LC_MESSAGES/django.mo,sha256=PFCsv1q5W_Y5-2cHfyle9bQyLMz_IxnI3q99kJ7L038,4174 +django/contrib/humanize/locale/fr/LC_MESSAGES/django.po,sha256=TFedN6WujsxMXJpevuHLM7xhoeeMT7fIAlo91b5o8lk,6178 +django/contrib/humanize/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 +django/contrib/humanize/locale/fy/LC_MESSAGES/django.po,sha256=pPvcGgBWiZwQ5yh30OlYs-YZUd_XsFro71T9wErVv0M,4732 +django/contrib/humanize/locale/ga/LC_MESSAGES/django.mo,sha256=vzp6R9xVQ6KRr5NMSkVCQfDea6ZvdoFiOuenzSHyZmI,4929 +django/contrib/humanize/locale/ga/LC_MESSAGES/django.po,sha256=fKw4frizXXcH-B9TKdFQXeoBhSodgraE_g37yuwXTHs,8304 +django/contrib/humanize/locale/gd/LC_MESSAGES/django.mo,sha256=ZMkrFR1irolryUIAZNb4XTpv1f0HRFK70VVNulqE2lI,5545 +django/contrib/humanize/locale/gd/LC_MESSAGES/django.po,sha256=OS7umBbdKJjPvA39Zn38MkdOAPtyLKz8MNmgN2Pwsms,8086 +django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo,sha256=ChoVHsJ_bVIaHtHxhxuUK99Zu1tvRu0iY5vhtB1LDMg,3474 +django/contrib/humanize/locale/gl/LC_MESSAGES/django.po,sha256=U5D505aBKEdg80BGWddcwWuzmYdoNHx1WEPzVHQfbTE,5903 +django/contrib/humanize/locale/he/LC_MESSAGES/django.mo,sha256=9jTg6s4yQ4f4idhWe8oGDxuQ5P-agqWxAxbv06n_klU,4525 +django/contrib/humanize/locale/he/LC_MESSAGES/django.po,sha256=EWmtd-po5Le2ZC7OEz0LCNaLadS7enVop6yUlV1pxhA,6510 +django/contrib/humanize/locale/hi/LC_MESSAGES/django.mo,sha256=qrzm-6vXIUsxA7nOxa-210-6iO-3BPBj67vKfhTOPrY,4131 +django/contrib/humanize/locale/hi/LC_MESSAGES/django.po,sha256=BrypbKaQGOyY_Gl1-aHXiBVlRqrbSjGfZ2OK8omj_9M,6527 +django/contrib/humanize/locale/hr/LC_MESSAGES/django.mo,sha256=29XTvFJHex31hbu2qsOfl5kOusz-zls9eqlxtvw_H0s,1274 +django/contrib/humanize/locale/hr/LC_MESSAGES/django.po,sha256=OuEH4fJE6Fk-s0BMqoxxdlUAtndvvKK7N8Iy-9BP3qA,5424 +django/contrib/humanize/locale/hsb/LC_MESSAGES/django.mo,sha256=aQsAoaJWWQ9XMl5MS8hLXJh1jh1at0ar8RwFq9K6Usw,5530 +django/contrib/humanize/locale/hsb/LC_MESSAGES/django.po,sha256=LpEwVdqV3JsobMp_yEUGBgAY5Wxep1mZtoivYTD4mnQ,8096 +django/contrib/humanize/locale/hu/LC_MESSAGES/django.mo,sha256=-DeFtfmzqaT_H5ZkORSFshsQQIP9roBcLM2Ug7yQ4no,4086 +django/contrib/humanize/locale/hu/LC_MESSAGES/django.po,sha256=6vGKFvNDvijsgNEJcMJ2VTCEvIynq2QqT3-WU4lYUsI,6062 +django/contrib/humanize/locale/hy/LC_MESSAGES/django.mo,sha256=bIhc8KbvaJystkLcJfZt5vJdQ4uL2XfXyuVEIbZP59c,1058 +django/contrib/humanize/locale/hy/LC_MESSAGES/django.po,sha256=EpFGmcz_Wt-kFQmXtV_OVUJDrhiz3WkciHgLeDboUEs,4860 +django/contrib/humanize/locale/ia/LC_MESSAGES/django.mo,sha256=d0m-FddFnKp08fQYQSC9Wr6M4THVU7ibt3zkIpx_Y_A,4167 +django/contrib/humanize/locale/ia/LC_MESSAGES/django.po,sha256=qX6fAZyn54hmtTU62oJcHF8p4QcYnoO2ZNczVjvjOeE,6067 +django/contrib/humanize/locale/id/LC_MESSAGES/django.mo,sha256=F1JT8OXmLl8XkhOnlHdv0HTeIv1yMalwWdklh2EDdXA,3553 +django/contrib/humanize/locale/id/LC_MESSAGES/django.po,sha256=8CMXZfWpMh8y_MPfZOlW4cylctUuSeKkiDYhk-Nr6zU,5284 +django/contrib/humanize/locale/io/LC_MESSAGES/django.mo,sha256=nMu5JhIy8Fjie0g5bT8-h42YElCiS00b4h8ej_Ie-w0,464 +django/contrib/humanize/locale/io/LC_MESSAGES/django.po,sha256=RUs8JkpT0toKOLwdv1oCbcBP298EOk02dkdNSJiC-_A,4720 +django/contrib/humanize/locale/is/LC_MESSAGES/django.mo,sha256=xc_nb854oMBP_bcFq-3aYUHjBgau18XsxbmS7tnSOb0,3586 +django/contrib/humanize/locale/is/LC_MESSAGES/django.po,sha256=GgWsXviADjyKEHQ99jXhQBeSaIUF45HCMOm-IVChT1k,6027 +django/contrib/humanize/locale/it/LC_MESSAGES/django.mo,sha256=NstBWl50Vp62dm8AP2GmLNABjkTu4o4vzwVHYFn-YmQ,4690 +django/contrib/humanize/locale/it/LC_MESSAGES/django.po,sha256=SMBC53O2Ze4N1RbIgxxAH9eZ5YvjyPIoz0kal6p7aus,6877 +django/contrib/humanize/locale/ja/LC_MESSAGES/django.mo,sha256=Z712qDg5UNqsCOJukUk6JQVjrjlegE4vkEfSBLWjZco,3678 +django/contrib/humanize/locale/ja/LC_MESSAGES/django.po,sha256=M64-U-_x1PWYPsVWCpNKtYyhSCLHuxB1Lqt4y4VW-K4,5323 +django/contrib/humanize/locale/ka/LC_MESSAGES/django.mo,sha256=I_5NXFxdCGnJKI29_h3OgemK9KulPiv0P60qEQjdra8,4139 +django/contrib/humanize/locale/ka/LC_MESSAGES/django.po,sha256=wUMRbhz5wpw-Rn8WepMIyADzgOUD7RLu3WxAW6t93p4,5740 +django/contrib/humanize/locale/kk/LC_MESSAGES/django.mo,sha256=uP7HkHrdX0b7z2MsxSuHyDGBFYxZPckBhSbgrn7gcok,2106 +django/contrib/humanize/locale/kk/LC_MESSAGES/django.po,sha256=BL9eeoyhV_geughzhF-Zc-_slFDsCZawngCPaeA8tUY,4878 +django/contrib/humanize/locale/km/LC_MESSAGES/django.mo,sha256=mfXs9p8VokORs6JqIfaSSnQshZEhS90rRFhOIHjW7CI,459 +django/contrib/humanize/locale/km/LC_MESSAGES/django.po,sha256=JQBEHtcy-hrV_GVWIjvUJyOf3dZ5jUzzN8DUTAbHKUg,4351 +django/contrib/humanize/locale/kn/LC_MESSAGES/django.mo,sha256=Oq3DIPjgCqkn8VZMb6ael7T8fQ7LnWobPPAZKQSFHl4,461 +django/contrib/humanize/locale/kn/LC_MESSAGES/django.po,sha256=yrXx6TInsxjnyJfhl8sXTLmYedd2jaAku9L_38CKR5A,4353 +django/contrib/humanize/locale/ko/LC_MESSAGES/django.mo,sha256=zNjlVckSQWWpGBMdgp0LNBxosfnlaP8Z0J-20jyWNLE,3673 +django/contrib/humanize/locale/ko/LC_MESSAGES/django.po,sha256=lprgxAY85u1w0ZceHZsnEoZ3WiRxEr8ciU9K9MQyKTE,5344 +django/contrib/humanize/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 +django/contrib/humanize/locale/lb/LC_MESSAGES/django.po,sha256=_y0QFS5Kzx6uhwOnzmoHtCrbufMrhaTLsHD0LfMqtcM,4730 +django/contrib/humanize/locale/lt/LC_MESSAGES/django.mo,sha256=5Iy5CNukpm6h8oIP9xNvXP5kLCp9nfJKyN3qYkFCWas,5036 +django/contrib/humanize/locale/lt/LC_MESSAGES/django.po,sha256=shVVrEuZNDFRQzR8RabtVOf5fOZDJitGFeLV_SawPVQ,7321 +django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo,sha256=ZjMj_0KJke8TwheDUrXIZ5IPlMd22nZBVo739aK5cQU,4848 +django/contrib/humanize/locale/lv/LC_MESSAGES/django.po,sha256=htt4OY9m2zjsW5T_ckINDUSkW4ju91FN00rDePOXs3w,7234 +django/contrib/humanize/locale/mk/LC_MESSAGES/django.mo,sha256=htUgd6rcaeRPDf6UrEb18onz-Ayltw9LTvWRgEkXm08,4761 +django/contrib/humanize/locale/mk/LC_MESSAGES/django.po,sha256=Wl9Rt8j8WA_0jyxKCswIovSiCQD-ZWFYXbhFsCUKIWo,6665 +django/contrib/humanize/locale/ml/LC_MESSAGES/django.mo,sha256=QcVVfN27E0YIc_pdCJthRXo_iDizt36qkElzHuOGYsk,5077 +django/contrib/humanize/locale/ml/LC_MESSAGES/django.po,sha256=gYQAu95Pu-VPWUZFDb7eF8pkwct0i1OSMqYByxJdI0E,7420 +django/contrib/humanize/locale/mn/LC_MESSAGES/django.mo,sha256=odf7zKCb8BS_HWZWQngzYxogRDNBGw6-d65Asfuy-_4,4613 +django/contrib/humanize/locale/mn/LC_MESSAGES/django.po,sha256=PJzeZnx5jWNppTV1OcwSGpqqqnCpBMEAloPRdofkQGE,6603 +django/contrib/humanize/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 +django/contrib/humanize/locale/mr/LC_MESSAGES/django.po,sha256=M44sYiBJ7woVZZlDO8rPDQmS_Lz6pDTCajdheyxtdaI,4724 +django/contrib/humanize/locale/my/LC_MESSAGES/django.mo,sha256=55CWHz34sy9k6TfOeVI9GYvE9GRa3pjSRE6DSPk9uQ8,3479 +django/contrib/humanize/locale/my/LC_MESSAGES/django.po,sha256=jCiDhSqARfqKcMLEHJd-Xe6zo3Uc9QpiCh3BbAAA5UE,5433 +django/contrib/humanize/locale/nb/LC_MESSAGES/django.mo,sha256=E5s-_ssH4NicLXQpzv-yVjXhZNV_w0M53trqY8CvcAc,4133 +django/contrib/humanize/locale/nb/LC_MESSAGES/django.po,sha256=vEXWpyGxQeB0kLgjBXc_uSfVay9G8kQT4ZgiPp_vW-c,6084 +django/contrib/humanize/locale/ne/LC_MESSAGES/django.mo,sha256=OR0cBS_sNftLjHBLtQkRsA_SOxlc41G83vBGCvYaG2I,2285 +django/contrib/humanize/locale/ne/LC_MESSAGES/django.po,sha256=t9ukUPhAxkNlLlAMI2ftMUATPBS29UQ7q76WN2rjBWA,5544 +django/contrib/humanize/locale/nl/LC_MESSAGES/django.mo,sha256=MrUWmjHP-PnKHOVw9sv_lY9Zc9C7gc7_Q-pvMv-v_ck,4092 +django/contrib/humanize/locale/nl/LC_MESSAGES/django.po,sha256=-wMck9RFlhmRhNNwgrNtbvq8xSsc7-9enw6R6MFXZUk,6174 +django/contrib/humanize/locale/nn/LC_MESSAGES/django.mo,sha256=_Qbyf366ApSCU09Er6CvEf5WrA8s6ZzsyZXs44BoT10,3482 +django/contrib/humanize/locale/nn/LC_MESSAGES/django.po,sha256=qkEeQKQ8XwPKtTv2Y8RscAnE4QarinOze3Y3BTIEMCk,5818 +django/contrib/humanize/locale/os/LC_MESSAGES/django.mo,sha256=BwS3Mj7z_Fg5s7Qm-bGLVhzYLZ8nPgXoB0gXLnrMGWc,3902 +django/contrib/humanize/locale/os/LC_MESSAGES/django.po,sha256=CGrxyL5l-5HexruOc7QDyRbum7piADf-nY8zjDP9wVM,6212 +django/contrib/humanize/locale/pa/LC_MESSAGES/django.mo,sha256=TH1GkAhaVVLk2jrcqAmdxZprWyikAX6qMP0eIlr2tWM,1569 +django/contrib/humanize/locale/pa/LC_MESSAGES/django.po,sha256=_7oP0Hn-IU7IPLv_Qxg_wstLEdhgWNBBTCWYwSycMb0,5200 +django/contrib/humanize/locale/pl/LC_MESSAGES/django.mo,sha256=LDdQZOQCF8mP_zYa9V-92yzwveCWTNNfDProLGv1twc,5529 +django/contrib/humanize/locale/pl/LC_MESSAGES/django.po,sha256=F4kNtZQzHDszLbqq8HnqkpPmhJz8jcEC5Bunm5PzTKU,8321 +django/contrib/humanize/locale/pt/LC_MESSAGES/django.mo,sha256=DdrToaq5E5Kap-zxhG8wf8zbAc8HZg1lu-2SD9i1i0Y,4154 +django/contrib/humanize/locale/pt/LC_MESSAGES/django.po,sha256=Jea815CpFnPMEUwW9bxGrFXhchmspQADY6_Yw3oajtY,6175 +django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mo,sha256=YIcwaSVUZsZA7Ewy1hnx0GlsNBSAcP-OuG596Js5XYU,4209 +django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po,sha256=Ohofjmm5KL5cVMEx6RaOGAINUK8i0TibNqxmKor2Opo,6284 +django/contrib/humanize/locale/ro/LC_MESSAGES/django.mo,sha256=DEGe-uMxn0J32A-4Oxymv_B9ijMzqu1SCL2tx887oxc,4809 +django/contrib/humanize/locale/ro/LC_MESSAGES/django.po,sha256=4QeGoZoQ48-J0BeWhTf4EPrtLMNvCBrxnOxbxEprZVU,7192 +django/contrib/humanize/locale/ru/LC_MESSAGES/django.mo,sha256=iSO02s7aCtRW9B3e8CioHFCfaBC1SsMlOhVs-cWX2XE,6887 +django/contrib/humanize/locale/ru/LC_MESSAGES/django.po,sha256=5AXIQgGoyaHVSLW81HTKrCpegh80FZL4NnIwe3iUxGw,9697 +django/contrib/humanize/locale/sk/LC_MESSAGES/django.mo,sha256=U4iWXostWL1gUvrIbalfqhYjhL0mvlig3mlD1DU8_m8,4762 +django/contrib/humanize/locale/sk/LC_MESSAGES/django.po,sha256=kJUNxtiRawS2QtJqNRq2UtlRwF58kTH_fqPu1pD7t9M,7112 +django/contrib/humanize/locale/sl/LC_MESSAGES/django.mo,sha256=f_07etc_G4OdYiUBKPkPqKm2iINqXoNsHUi3alUBgeo,5430 +django/contrib/humanize/locale/sl/LC_MESSAGES/django.po,sha256=mleF0fvn0oEfszhGLoaQkWofTwZJurKrJlIH8o-6kAI,8166 +django/contrib/humanize/locale/sq/LC_MESSAGES/django.mo,sha256=CRP5lgqDsEGndO2njVsrzz3teaHui_tcXxT2E-x-_pE,4126 +django/contrib/humanize/locale/sq/LC_MESSAGES/django.po,sha256=48tIBBQaneqtWnvldp113UVTYQ6LcDVGmGZJMW1EzvM,6083 +django/contrib/humanize/locale/sr/LC_MESSAGES/django.mo,sha256=cooZLInAmU3nmov6__XS5MOTEN77NPuwNAL1n7XyqJw,542 +django/contrib/humanize/locale/sr/LC_MESSAGES/django.po,sha256=kY7hZI2ci8VP3I1PNXBhGNchggUzIsKl_7VOI-QMeW4,5165 +django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=PaGxGtTZSzguwipvTdOhO7bvM8WlzCWb1RCEaIupRUQ,562 +django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po,sha256=FrPnMu6xX0NypoRYRAOBhdICGSv8geuHXQKKn3Gd9ck,5185 +django/contrib/humanize/locale/sv/LC_MESSAGES/django.mo,sha256=BwB7K9qfHGNIdP65Pa70lTZRSdhkX5F4eoAZLOtaVSk,4097 +django/contrib/humanize/locale/sv/LC_MESSAGES/django.po,sha256=1l0V8_sXXtqT75eOa6ZyhOm0ltLOP5sK34yDKAjGGf4,6111 +django/contrib/humanize/locale/sw/LC_MESSAGES/django.mo,sha256=cxjSUqegq1JX08xIAUgqq9ByP-HuqaXuxWM8Y2gHdB4,4146 +django/contrib/humanize/locale/sw/LC_MESSAGES/django.po,sha256=bPYrLJ2yY_lZ3y1K-RguNi-qrxq2r-GLlsz1gZcm2A8,6031 +django/contrib/humanize/locale/ta/LC_MESSAGES/django.mo,sha256=1X2vH0iZOwM0uYX9BccJUXqK-rOuhcu5isRzMpnjh2o,466 +django/contrib/humanize/locale/ta/LC_MESSAGES/django.po,sha256=8x1lMzq2KOJveX92ADSuqNmXGIEYf7fZ1JfIJPysS04,4722 +django/contrib/humanize/locale/te/LC_MESSAGES/django.mo,sha256=iKd4dW9tan8xPxgaSoenIGp1qQpvSHHXUw45Tj2ATKQ,1327 +django/contrib/humanize/locale/te/LC_MESSAGES/django.po,sha256=FQdjWKMsiv-qehYZ4AtN9iKRf8Rifzcm5TZzMkQVfQI,5103 +django/contrib/humanize/locale/th/LC_MESSAGES/django.mo,sha256=wg--ON3KI_VvonwNy04eSkKQSGVz89IJF8Kf41WBWzo,3922 +django/contrib/humanize/locale/th/LC_MESSAGES/django.po,sha256=qrDqW3DS1yxUIdUqMKRHygg2kcUXyx3nZuNxsx11tcg,5689 +django/contrib/humanize/locale/tr/LC_MESSAGES/django.mo,sha256=feX8ZCE3GJqnN71FLVcLesBuERKmi9Uutj3ebW27Nns,4109 +django/contrib/humanize/locale/tr/LC_MESSAGES/django.po,sha256=g0bK25v2vJgzRTS3XeohzEohWwysrLFuECj0GE4WpBA,6154 +django/contrib/humanize/locale/tt/LC_MESSAGES/django.mo,sha256=z8VgtMhlfyDo7bERDfrDmcYV5aqOeBY7LDgqa5DRxDM,3243 +django/contrib/humanize/locale/tt/LC_MESSAGES/django.po,sha256=j_tRbg1hzLBFAmPQt0HoN-_WzWFtA07PloCkqhvNkcY,5201 +django/contrib/humanize/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 +django/contrib/humanize/locale/udm/LC_MESSAGES/django.po,sha256=AR55jQHmMrbA6RyHGOtqdvUtTFlxWnqvfMy8vZK25Bo,4354 +django/contrib/humanize/locale/uk/LC_MESSAGES/django.mo,sha256=zCT4FX9Uve9UODCIxXiJQEbn56QoYO1QQdNX_q3kq9g,5964 +django/contrib/humanize/locale/uk/LC_MESSAGES/django.po,sha256=AsBjFUJ0sZ7wa3aGVV5AduEkqOLwcGfp6muVI2nwEUU,8397 +django/contrib/humanize/locale/ur/LC_MESSAGES/django.mo,sha256=MF9uX26-4FFIz-QpDUbUHUNLQ1APaMLQmISMIaPsOBE,1347 +django/contrib/humanize/locale/ur/LC_MESSAGES/django.po,sha256=D5UhcPEcQ16fsBEdkk_zmpjIF6f0gEv0P86z_pK_1eA,5015 +django/contrib/humanize/locale/vi/LC_MESSAGES/django.mo,sha256=ZUK_Na0vnfdhjo0MgnBWnGFU34sxcMf_h0MeyuysKG8,3646 +django/contrib/humanize/locale/vi/LC_MESSAGES/django.po,sha256=DzRpXObt9yP5RK_slWruaIhnVI0-JXux2hn_uGsVZiE,5235 +django/contrib/humanize/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=NvsjXwBi6Scg55ZMkZ4BbqNR-Svo-oey1x87Wv2hBgs,3573 +django/contrib/humanize/locale/zh_Hans/LC_MESSAGES/django.po,sha256=gGuUfdDHyxX7nkaMMP_Ii9Q0QEkBI7cgMIOVMGRc_Ag,5336 +django/contrib/humanize/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=MXoemB7iwj3zMOZfPxRi9rc_1xsYZKPpGerwZjbM2m8,3314 +django/contrib/humanize/locale/zh_Hant/LC_MESSAGES/django.po,sha256=RSmQwPspRIe0U15m4zYz7x8VAiXHp6z55oLXxk9yFKE,5130 +django/contrib/humanize/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/humanize/templatetags/humanize.py,sha256=eafUdDGaq8YJEZ0OoWO_0tlxDfpQ2iJ6lRPUqoih4z0,9288 +django/contrib/messages/__init__.py,sha256=PcKzOk4zt5345uws-agcbNdhYMsIOJzV7-p7nwxJorI,175 +django/contrib/messages/api.py,sha256=sWP2DP-n8ZWOTM-BLFDGrH_l-voGwrSxC0OgEyJt1F4,3071 +django/contrib/messages/apps.py,sha256=yGXBKfV5WF_ElcPbX4wJjXq6jzp39ttnO7sp8N_IzOQ,194 +django/contrib/messages/constants.py,sha256=WZxjzvEoKI7mgChSFp_g9e-zUH8r6JLhu9sFsftTGNA,312 +django/contrib/messages/context_processors.py,sha256=0LniZjxZ7Fx2BxYdJ0tcruhG4kkBEEhsc7Urcf31NnE,354 +django/contrib/messages/middleware.py,sha256=4L-bzgSjTw-Kgh8Wg8MOqkJPyilaxyXi_jH1UpP1h-U,986 +django/contrib/messages/utils.py,sha256=wvGHYnU9zocxzwIEkFgo5deHxZ5aDlAY7q2MpyOPLFk,284 +django/contrib/messages/views.py,sha256=R5xD2DLmAO0x6EGpE8TX5bku4zioOiYkQnAtf6r-VAE,523 +django/contrib/messages/storage/__init__.py,sha256=gXDHbQ9KgQdfhYOla9Qj59_SlE9WURQiKzIA0cFH0DQ,392 +django/contrib/messages/storage/base.py,sha256=SyLyVQeRdmPvVt9SO4srCdIb0m2oBu1H_iOx40M48BM,5643 +django/contrib/messages/storage/cookie.py,sha256=CTDV2dYgm_DQsnkY8nZOO6gLYanYTCQ9Z05xm1XUyxY,6463 +django/contrib/messages/storage/fallback.py,sha256=irMgvzx5RgSaZLOPHR_pS5wCwK6HY7ABvOAzDk7Hhno,2145 +django/contrib/messages/storage/session.py,sha256=KTAqur1KMJUc-liD-I0mVDYbafMS23zxZfnFz4XPiiU,1729 +django/contrib/postgres/__init__.py,sha256=jtn9-mwOISc5D_YUoQ5z_3sN4bEPNxBOCDzbGNag_mc,67 +django/contrib/postgres/apps.py,sha256=PQiKQDH4lXf6xzNoJoi8J1xdueCnc3wefrfa1VMfRLA,1614 +django/contrib/postgres/functions.py,sha256=zHeAyKR5MhnsIGI5qbtmRdxPm8OtycEBE5OmCNyynD8,252 +django/contrib/postgres/indexes.py,sha256=y5Lb_DDiRBXKO2B6RgiS4IaHNhj5u3Ai3wnHISO6kwQ,3623 +django/contrib/postgres/lookups.py,sha256=p-1NZhB4kXC1e-lvJTDHh2Qpiz7A4W7TuG9NuvdF_4Y,1578 +django/contrib/postgres/operations.py,sha256=R8jm7u9K5dPvdbmsSvCO95x8oI7LSat01CeXtPUzL5c,2010 +django/contrib/postgres/search.py,sha256=h5Ri5X0aha29YMMfLM1OKq7rrKWeSTidHzXFhRIYV-Q,8295 +django/contrib/postgres/signals.py,sha256=MmUklgaTW1-UBMGQTxNO_1fsO7mZugGs9ScovuCIyJo,2245 +django/contrib/postgres/utils.py,sha256=46XKNKRB1aUUU7ALNiDLrZpPWbAwanxUxuTir7XDuDI,1188 +django/contrib/postgres/validators.py,sha256=h1d2Sw-gU3hfkgXNjjIf5TUDSjTeY-2xBQD1N3zj7GQ,2688 +django/contrib/postgres/aggregates/__init__.py,sha256=QCznqMKqPbpraxSi1Y8-B7_MYlL42F1kEWZ1HeLgTKs,65 +django/contrib/postgres/aggregates/general.py,sha256=nRA1EiUk9_H9IDu1M5mxLm48Nl2S4L9l_SrCfBBlBis,1481 +django/contrib/postgres/aggregates/statistics.py,sha256=NWyxMgDsfQ3f5yvqAcxJ13LayjGkRPj90wVJa4k7QdM,1691 +django/contrib/postgres/fields/__init__.py,sha256=Xo8wuWPwVNOkKY-EwV9U1zusQ2DjMXXtL7_8R_xAi5s,148 +django/contrib/postgres/fields/array.py,sha256=h3JPunEEF7VgrLi48DBDiYCRXni14LtiLOXRM5QvBMU,10220 +django/contrib/postgres/fields/citext.py,sha256=G40UZv4zop8Zrq2vMhluZ-MT7yPLEc8IEDi3hZ27gGw,439 +django/contrib/postgres/fields/hstore.py,sha256=sXoTtghueLtLl7dlVXFKSj7km3G_ZV9zVau_6Q4F-3w,3144 +django/contrib/postgres/fields/jsonb.py,sha256=8Mt9v2dGV1Pi2r8ux5ttwwbg9W-uHe7tg3B2DZcgoDw,5603 +django/contrib/postgres/fields/ranges.py,sha256=ozBEsZjvGQGWOZTN8VupDMVL19mHLXMyWZpESVgzWC0,7565 +django/contrib/postgres/fields/utils.py,sha256=TV-Aj9VpBb13I2iuziSDURttZtz355XakxXnFwvtGio,95 +django/contrib/postgres/forms/__init__.py,sha256=GSqucR50I9jrZUYZUFVmb8nV_FSlXu1BcCpFck2pVXI,118 +django/contrib/postgres/forms/array.py,sha256=7TU7UZr8hcbzbOyfh8rg79okSPctxrD-zFDsIv1Cvq0,7083 +django/contrib/postgres/forms/hstore.py,sha256=G2s-SO0VGK4oUgP8uNYopU5FM6143tfF814qpWKNTLE,1756 +django/contrib/postgres/forms/jsonb.py,sha256=JSDIyLVREKtesUGNmznxX06NqAFEBR0lCrlHMogNfic,1335 +django/contrib/postgres/forms/ranges.py,sha256=_LWXysT2AdvgSsAtNyPxHP0hgTolsQoUOCLWT7KukoA,3069 +django/contrib/postgres/jinja2/postgres/widgets/split_array.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 +django/contrib/postgres/locale/ar/LC_MESSAGES/django.mo,sha256=AFcSJOhEOAWVIXw9q7FoyyT9G1ufw530IG2GwOYNOJw,4416 +django/contrib/postgres/locale/ar/LC_MESSAGES/django.po,sha256=ZEYrujwMpePljEsEjgJrRgHvQWn6zP9zYVkan83TyuU,5017 +django/contrib/postgres/locale/be/LC_MESSAGES/django.mo,sha256=nDK0-dYUAORaNB--uNHLQfvSnZZfe0yGdQwAe0AMFkU,4490 +django/contrib/postgres/locale/be/LC_MESSAGES/django.po,sha256=MoFwiR6pvjrN0YhFrhmAcQ4IQ6TRkFiVXf7TB8zjcQo,4964 +django/contrib/postgres/locale/bg/LC_MESSAGES/django.mo,sha256=7VaGqc8TO0NVL-eZbxVuGb8J6atQ_aC3C3Nh3G9zcJQ,3439 +django/contrib/postgres/locale/bg/LC_MESSAGES/django.po,sha256=9S2pgIZFOv3qp0QunLFUfPiNk40RZjHIiVA39Uj3zFs,4010 +django/contrib/postgres/locale/ca/LC_MESSAGES/django.mo,sha256=FpOKL9S0AWN5r2epnr7SdDX6VmwjBrHNGCSisxjw6H0,3167 +django/contrib/postgres/locale/ca/LC_MESSAGES/django.po,sha256=O3JMTA3jFpV0oV3GPpBSDsv98KBe6MDXJCO1c50VjiQ,3577 +django/contrib/postgres/locale/cs/LC_MESSAGES/django.mo,sha256=_9TFrq4kX_TSgSnIYV36rAadZZgPWoXnoh52-5E5yMs,3430 +django/contrib/postgres/locale/cs/LC_MESSAGES/django.po,sha256=2h_nqHgcMkU5YXoS4NpTmREoV7eUHQeRhmlkZEqT3G4,3863 +django/contrib/postgres/locale/da/LC_MESSAGES/django.mo,sha256=lTWGoAM4SCEn1UWK8fw1qyW8AwB4U6SW9LdWjs5Z1D8,3168 +django/contrib/postgres/locale/da/LC_MESSAGES/django.po,sha256=9syIhFzERg9Kojmz-QXYzm4F1F4UnPps79XwMx6p31M,3559 +django/contrib/postgres/locale/de/LC_MESSAGES/django.mo,sha256=1K356glWEevm4oteYtUKV1Loh1fpAjjlrFgF9yfwjcI,3275 +django/contrib/postgres/locale/de/LC_MESSAGES/django.po,sha256=MXPu492vKgQLLHngr6m2d08YUNAcwz01e3h9GxfbvIE,3723 +django/contrib/postgres/locale/dsb/LC_MESSAGES/django.mo,sha256=TPK-iwbKFpXnPtct5K13cTbdFSxHHyAUlS4U9nVysZI,3856 +django/contrib/postgres/locale/dsb/LC_MESSAGES/django.po,sha256=FiSOY82p0UWnkXS05BeEQ5Uzhs74ZlNaxFIMMSRGpVo,4289 +django/contrib/postgres/locale/el/LC_MESSAGES/django.mo,sha256=kHjTGVK-3Y06GyjqRBi5_Ki_epzPUYt7zQKpukUOwFo,3918 +django/contrib/postgres/locale/el/LC_MESSAGES/django.po,sha256=VP82YDf9x1EmSOVmBY7zkgQcX7EfQQZFUpeRV3dtHtk,4407 +django/contrib/postgres/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/postgres/locale/en/LC_MESSAGES/django.po,sha256=IfHN0MYCktjtf0jKfyb4I1oEU9fqhCyqS4X4qZr2lDs,3131 +django/contrib/postgres/locale/eo/LC_MESSAGES/django.mo,sha256=N1T-nA1IdhKKDbZ76nV968OSMMbteXwwBdhzRi3taWs,3149 +django/contrib/postgres/locale/eo/LC_MESSAGES/django.po,sha256=KJbhFGHiJI2chKO9BytzpzRvlSsBvkNqoxP1N0okdko,3528 +django/contrib/postgres/locale/es/LC_MESSAGES/django.mo,sha256=9tNVeSpK1jUt7V2qZyKwbJbfJl3vH2Sy_3Y2GkvLnSY,3177 +django/contrib/postgres/locale/es/LC_MESSAGES/django.po,sha256=9N3ZeiyEZ7_DIgskPFIAIoEGLAGhiPMJdR-SHftisOo,3688 +django/contrib/postgres/locale/es_AR/LC_MESSAGES/django.mo,sha256=NbkQzNZxVjBSH6NmFhvKxtU1FJzlbSjNTaq53Ml5WKQ,3173 +django/contrib/postgres/locale/es_AR/LC_MESSAGES/django.po,sha256=0jrDzJ2PbzuKxBKlpUtEXLMsjVTio-CIaHRooYbIuR8,3511 +django/contrib/postgres/locale/es_CO/LC_MESSAGES/django.mo,sha256=wmkoFFXblYw1ufz4gcSntO79yq20mHl8hlbj4Hhmcug,2903 +django/contrib/postgres/locale/es_CO/LC_MESSAGES/django.po,sha256=Br2Lo11i-EeryGFsRmUWr_PD6_xk8kavVzdwqtR7AuU,3579 +django/contrib/postgres/locale/es_MX/LC_MESSAGES/django.mo,sha256=4-c48HNLkDnIIPIBOaIhxoOf4muYRRelX0rR0dVrpAE,882 +django/contrib/postgres/locale/es_MX/LC_MESSAGES/django.po,sha256=5HmM8uVQkt869MyzuQIk5C6czFe4MTRz5CBmgeN_V14,2496 +django/contrib/postgres/locale/et/LC_MESSAGES/django.mo,sha256=_BZuR25C1mzMVR2LTXE4u4QaP5ht7C7q8PjsnAEEQO8,3081 +django/contrib/postgres/locale/et/LC_MESSAGES/django.po,sha256=BF6hMf4uD6sFFXBJoudgimwKCj25jlzt7rjK3lg-BFA,3592 +django/contrib/postgres/locale/eu/LC_MESSAGES/django.mo,sha256=T7pDulEqODUPdC4sI4w-COAM5nT9C3jbAas8i24l_ms,3139 +django/contrib/postgres/locale/eu/LC_MESSAGES/django.po,sha256=OQlFVw0YFSF6s6iG6omYP1ISwevmSmAVSrH1FrqE2G8,3545 +django/contrib/postgres/locale/fa/LC_MESSAGES/django.mo,sha256=TlOdD8SW4sddFi5kAk0p0mvgDuq7SNre4LWZnOxBu9s,3134 +django/contrib/postgres/locale/fa/LC_MESSAGES/django.po,sha256=hE9GISly_L-wxF7CjHDv35GuHLcK8sLsVOpimMmtfHw,3638 +django/contrib/postgres/locale/fi/LC_MESSAGES/django.mo,sha256=eVu4C_rIzT2fQGNbJDEkrQb4pjF00lOPAixxqpYvbhs,3212 +django/contrib/postgres/locale/fi/LC_MESSAGES/django.po,sha256=zILj96C-jR-bjBRVVLScZngm7MRA-BtUM4j4IUMNJ48,3555 +django/contrib/postgres/locale/fr/LC_MESSAGES/django.mo,sha256=YomiZJPQJn88dkoaw7oXHGbq3oR3i35KopCGndxu5bY,3394 +django/contrib/postgres/locale/fr/LC_MESSAGES/django.po,sha256=t1fRjfzAQ0Y1nN9vSe5SUsBMw4NZXr_ensyHcOPrDr0,3752 +django/contrib/postgres/locale/gd/LC_MESSAGES/django.mo,sha256=-KqMRc027ysJr0R1rjgM3zJGeJpl8S3IXhmZTTmbrag,3830 +django/contrib/postgres/locale/gd/LC_MESSAGES/django.po,sha256=SflmgOSRvtcVT3ik94Cln-B0-wrkEmtraJUOXaKlGEc,4260 +django/contrib/postgres/locale/gl/LC_MESSAGES/django.mo,sha256=YlBrsev1RIUA4Zxbnl_ufkTANki4VM9O42Ge07u5QPc,722 +django/contrib/postgres/locale/gl/LC_MESSAGES/django.po,sha256=h4Z-Fdi9o1MG33vCWGMHqSj6dklYy653vGkq81lYeKA,2433 +django/contrib/postgres/locale/he/LC_MESSAGES/django.mo,sha256=KTUQ0NyBzsVOp1lEtbAmCaLiDHSf1R9EX_tV14oHm_g,3496 +django/contrib/postgres/locale/he/LC_MESSAGES/django.po,sha256=Ea3_H_jUWZLm9q22bcN_ClKkyehTjXAcCujRvgsTav8,3832 +django/contrib/postgres/locale/hr/LC_MESSAGES/django.mo,sha256=oIY9TCvkVmv-fGbGs-N2acx5VC3PNzZxWW4FRjWbTUQ,1217 +django/contrib/postgres/locale/hr/LC_MESSAGES/django.po,sha256=EnvgxKmz6qBe6cH05CAm0bO5zuXkAOYFnRF5c4LmIRo,2762 +django/contrib/postgres/locale/hsb/LC_MESSAGES/django.mo,sha256=3h5K1tt9ykZjomwtSU3J7XZfF__yAL7RpFRzi0lHFcY,3770 +django/contrib/postgres/locale/hsb/LC_MESSAGES/django.po,sha256=TWUk3s8iDmS4msL0w1gwWpqLDXqfPDA9oq_c4U2PECE,4197 +django/contrib/postgres/locale/hu/LC_MESSAGES/django.mo,sha256=Qe5bXdGZLV0wG8bZhGK1ybGjATkKZ7OHaqEOcbZGcA4,3182 +django/contrib/postgres/locale/hu/LC_MESSAGES/django.po,sha256=puxHgfIWm0Vd3RHp1TnOKnY1mQ1hsDWNJar8NVNsyfk,3591 +django/contrib/postgres/locale/ia/LC_MESSAGES/django.mo,sha256=dnyXX0ii0CFMrI02mZhkCzY66KTFdWXBOlXjo6gP_Ps,758 +django/contrib/postgres/locale/ia/LC_MESSAGES/django.po,sha256=jNRfADlv6JldyeezHt_3LXpudpmA-cXr73GIe3aPd6E,2475 +django/contrib/postgres/locale/id/LC_MESSAGES/django.mo,sha256=2HRHOOC--1Rvm2goSDBk_sSIW1DjXwh3rNEEPKJqwOw,3039 +django/contrib/postgres/locale/id/LC_MESSAGES/django.po,sha256=6yQ_Evu0aiIabZcwIgsFmDaDxWBvbZh_3hDK8aVyUsw,3557 +django/contrib/postgres/locale/is/LC_MESSAGES/django.mo,sha256=B5rRF5HIz4ervHG45GxzSVDYL6rclTOUREuaP28sCjs,3213 +django/contrib/postgres/locale/is/LC_MESSAGES/django.po,sha256=mIm4o1WDfQ1wBQuGXMzm1AulMIDU6iZPvYEMWvZqUSw,3571 +django/contrib/postgres/locale/it/LC_MESSAGES/django.mo,sha256=kW6Oh5NNTvpiMewskoW3AmU9WcY_zO0OTcscgwbStrE,3249 +django/contrib/postgres/locale/it/LC_MESSAGES/django.po,sha256=vBOsM6PRYKQrPrOEe1PlhPGyZbGs-3YVCSnUlnfaYlM,3805 +django/contrib/postgres/locale/ja/LC_MESSAGES/django.mo,sha256=jvSBcIEgAlIsRCPz997u-5eH9Ioi5YjuktReayURCAU,3350 +django/contrib/postgres/locale/ja/LC_MESSAGES/django.po,sha256=-YHBmtzc_xG-E_vbndLBd0ax_9mexkuTDGVCyEEYhpM,3665 +django/contrib/postgres/locale/ka/LC_MESSAGES/django.mo,sha256=0ChFF9W99iPidTL-CC2R0owYonG-UKys7TS_2W97V3E,767 +django/contrib/postgres/locale/ka/LC_MESSAGES/django.po,sha256=i5KHzekJykKxdFgAYpQ_KBzFY3R3TXr9FrQcdHKVYko,2494 +django/contrib/postgres/locale/kk/LC_MESSAGES/django.mo,sha256=TGzYaFdRPsEqIo6tsjScDSDKuQLMYOrr8grzA0l45kc,868 +django/contrib/postgres/locale/kk/LC_MESSAGES/django.po,sha256=JL7TPe92MWWX9U1ARGPmBPKQU2EZ9lJamiwn_C51aK4,2552 +django/contrib/postgres/locale/ko/LC_MESSAGES/django.mo,sha256=0koE2OIe1bizQsdtvO2nrcY48kM72eHGRn7KOgeXm44,3194 +django/contrib/postgres/locale/ko/LC_MESSAGES/django.po,sha256=e_D3CoKvNmfnfKqV9drQdj9c2VaYQEjFU87C3a30AIM,3637 +django/contrib/postgres/locale/lt/LC_MESSAGES/django.mo,sha256=zlgggxW5wR_ougmTMYWEaAxLC7_ZTEOQwtifN-EupOQ,3564 +django/contrib/postgres/locale/lt/LC_MESSAGES/django.po,sha256=FDEsLus6STxMRg6LRLKfTZ8es554yLP_pvHQ-g5tbSM,3954 +django/contrib/postgres/locale/lv/LC_MESSAGES/django.mo,sha256=68lVQD3NgI3dfKKl2Gsb-O8x9AWCSzgrRJZmA9adBwY,3399 +django/contrib/postgres/locale/lv/LC_MESSAGES/django.po,sha256=SptJipFI0GvtcTvVozDCvSi_Lq1qk-vOsCh4whDOKjQ,3825 +django/contrib/postgres/locale/mk/LC_MESSAGES/django.mo,sha256=UFofPo5u8GZFQeJUXpXv9WkzN8-L3RYB4QtpWSPZucw,3717 +django/contrib/postgres/locale/mk/LC_MESSAGES/django.po,sha256=p6bHPCPH1XuUJ_62EXW3fXnaKCtAvuDLAvS3H1JcX9s,4284 +django/contrib/postgres/locale/mn/LC_MESSAGES/django.mo,sha256=emgB5tVUbpnT76xUh0nuMKryQyYMrySCQ4dlYQeCYco,3755 +django/contrib/postgres/locale/mn/LC_MESSAGES/django.po,sha256=6GKhHqnrt-Sg3JtYHiy-_-1l1MLBymREuQRXKQgmOCM,4229 +django/contrib/postgres/locale/nb/LC_MESSAGES/django.mo,sha256=1TOafNdcKTEJaAolBV-RpA7fxDe46wkxYJuSXSYQ9Mw,3113 +django/contrib/postgres/locale/nb/LC_MESSAGES/django.po,sha256=VSSxNYqiKX30j6n2ju3_1iYHFx4TIqDeT2Vp9R24hOc,3482 +django/contrib/postgres/locale/ne/LC_MESSAGES/django.mo,sha256=wZ0UYJI4qUpPjLvsPCqRCuHbEKpBz9uOh6qncgXh59g,934 +django/contrib/postgres/locale/ne/LC_MESSAGES/django.po,sha256=ndvFMUw2XzBukzedzXUiPQfnnOitrOlJtz2TZgv0TX4,2590 +django/contrib/postgres/locale/nl/LC_MESSAGES/django.mo,sha256=SluBtCazF6LA_EpX5pAwJP1mOtH9vJcv7d_8ZjNyPuE,3243 +django/contrib/postgres/locale/nl/LC_MESSAGES/django.po,sha256=FgAgj21e2fPZwmQPoToqKPrxeYFrDGx01Heo9SU9sgM,3745 +django/contrib/postgres/locale/pl/LC_MESSAGES/django.mo,sha256=Tlrhv__Nj1jD5CGGChirF-ujHGO32F6r3DclQkdMB1A,3740 +django/contrib/postgres/locale/pl/LC_MESSAGES/django.po,sha256=x8RdxSRhRq2l9WmQTamN2-gRtkaWObfVP83tblcEM6M,4381 +django/contrib/postgres/locale/pt/LC_MESSAGES/django.mo,sha256=rXcN8bscv14PzPRIDxmJGHcRPNUdEbOE_cWFI-hjf1g,3136 +django/contrib/postgres/locale/pt/LC_MESSAGES/django.po,sha256=Urf8o67oVUpzTHuWGna3Cn6FxgRKPbCVI2CtXmRP220,3576 +django/contrib/postgres/locale/pt_BR/LC_MESSAGES/django.mo,sha256=jJvTRzWJVEEo1ash3rhm1rFbF7FJvt188MPHPsbpIzo,3194 +django/contrib/postgres/locale/pt_BR/LC_MESSAGES/django.po,sha256=uEY62Tl09VUmV_f-CPPITyvk-I8jBePzqPZajrrekjo,3855 +django/contrib/postgres/locale/ro/LC_MESSAGES/django.mo,sha256=xQdeGHTLGLDBDDiehtzGnTdZh8oQrVG9hGRTh0FT56g,3488 +django/contrib/postgres/locale/ro/LC_MESSAGES/django.po,sha256=RIOdMn_XBWqafZrxV5vjPs-lZLkGi5-jpxsRentFcFM,3907 +django/contrib/postgres/locale/ru/LC_MESSAGES/django.mo,sha256=MU2dyAcO-xeF1y6Ea_MSEFGbc-8y_7p1GH-NRJe62Cs,5123 +django/contrib/postgres/locale/ru/LC_MESSAGES/django.po,sha256=hcl1Uuof6ENYVPQ_7ycEAzxghpoGwMKYFjK_DU-D6_A,5773 +django/contrib/postgres/locale/sk/LC_MESSAGES/django.mo,sha256=CLTqMW_0M-gEqH3Z_-uXanLMi2IxLr6y9u323Q3OJg8,3400 +django/contrib/postgres/locale/sk/LC_MESSAGES/django.po,sha256=D-HhtGgJQ0KnSnf6dHTo9LpetvruFJ7hw_XjjBq_z7g,3777 +django/contrib/postgres/locale/sl/LC_MESSAGES/django.mo,sha256=BT1LywwWuDO9iENJm-pqBksEisuETBlh0r4ILn4wgx0,3524 +django/contrib/postgres/locale/sl/LC_MESSAGES/django.po,sha256=YmFNHoKR5av9ychiCloy5OXeL_v-rDzA0vYqUy84umc,3988 +django/contrib/postgres/locale/sq/LC_MESSAGES/django.mo,sha256=0143JMFtUYLXOoSRvFydzC-xl1V6QkbL3oHQ-QBOoZk,3110 +django/contrib/postgres/locale/sq/LC_MESSAGES/django.po,sha256=GuT0Ax6Vka7xdSgXyr4-0_nuxIcihRSs8xMiTCQBGdE,3516 +django/contrib/postgres/locale/sv/LC_MESSAGES/django.mo,sha256=i4z7Yn_Ows9G_UoCW8zIulJIrAfB1sJWib-kpG7Y_PA,2875 +django/contrib/postgres/locale/sv/LC_MESSAGES/django.po,sha256=5VjgW0c_nTPeh_4nsiUHpv_toFn0c5ytKfM06g-NrlQ,3477 +django/contrib/postgres/locale/tr/LC_MESSAGES/django.mo,sha256=WX43GC_VDxf-36UxWrab6dCBPBvPj9O06hVoWzsS8JU,3164 +django/contrib/postgres/locale/tr/LC_MESSAGES/django.po,sha256=sfqVCqaFZtbRnDmqTVK4190-AYKJwgyMopuYjkjXmh4,3511 +django/contrib/postgres/locale/uk/LC_MESSAGES/django.mo,sha256=3uPY2QOsonJJ67IZipxS45D6nhiS0p1-egxWqQBIyU8,4309 +django/contrib/postgres/locale/uk/LC_MESSAGES/django.po,sha256=n2qxj5e7ipENpTFganpkcSAJUMnASM2w5l0YxmTijzg,4861 +django/contrib/postgres/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=t4Zea1ndeWCQMDYvdprtTDkyPXnqg3lAV7WB5TAZFNI,2854 +django/contrib/postgres/locale/zh_Hans/LC_MESSAGES/django.po,sha256=4ICKRVdfo78YeoAK_G7DvlWz-ixUWNDCbBkGVHnDhH8,3242 +django/contrib/postgres/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=65JDiksp4dDMlCPrCbbSZ-DDEXSD3rnPKF8o-RpdptA,2864 +django/contrib/postgres/locale/zh_Hant/LC_MESSAGES/django.po,sha256=MMLZpVZw1SdxWoscLSO9k2YTO5YX2GXFhSag99zNpoI,3211 +django/contrib/postgres/templates/postgres/widgets/split_array.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 +django/contrib/redirects/__init__.py,sha256=9vdTkDvH0443yn0qXx59j4dXPn3P-Pf9lB8AWrSp_Bk,69 +django/contrib/redirects/admin.py,sha256=P9wp8yIvDjJSfIXpWYM2ftDlVhKvte_0AM9Ky_j1JIs,314 +django/contrib/redirects/apps.py,sha256=BvTvN3IXCv7yEKqhxwCDiSCZ3695YXNttEvmONHNxC4,197 +django/contrib/redirects/middleware.py,sha256=kJfTIj8G2loRgiEJkqiYEredzt4xhNAfDaTZkk9Coyo,1926 +django/contrib/redirects/models.py,sha256=x9f9oGGbUDsn1If6zLwDpkwW3M2Anl-Zj845WA121fg,985 +django/contrib/redirects/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 +django/contrib/redirects/locale/af/LC_MESSAGES/django.po,sha256=azk3eRV64rp6_41m5S1vkDRZ5YZ_OjJ6pfn4wqOlKnQ,942 +django/contrib/redirects/locale/ar/LC_MESSAGES/django.mo,sha256=BX8CzqhOiPIE2dZ1J-bomSuudCMDs8MKbZ1aCzFUrXk,1342 +django/contrib/redirects/locale/ar/LC_MESSAGES/django.po,sha256=v4WQ_5jy6a_JupP7YLLxVIOB82UjIDZJ09uuFCaJCIc,1533 +django/contrib/redirects/locale/ast/LC_MESSAGES/django.mo,sha256=a1ixBQQIdBZ7o-ADnF2r74CBtPLsuatG7txjc05_GXI,1071 +django/contrib/redirects/locale/ast/LC_MESSAGES/django.po,sha256=PguAqeIUeTMWsADOYLTxoC6AuKrCloi8HN18hbm3pZ0,1266 +django/contrib/redirects/locale/az/LC_MESSAGES/django.mo,sha256=gxyTtthfuZik5KWZbsKzhsCa27pnDA7OdBkZt2Jnxn0,1157 +django/contrib/redirects/locale/az/LC_MESSAGES/django.po,sha256=5uyUelawIxgtoK4zA5w8VkSuoJPdjSBrJRud1zm1JjU,1341 +django/contrib/redirects/locale/be/LC_MESSAGES/django.mo,sha256=JBUJpaQqNT_SW5cYMKfb3b3s-DL5MDkLapmukI3-49M,1437 +django/contrib/redirects/locale/be/LC_MESSAGES/django.po,sha256=nqxsr8UCgQUhsUnvuQCMYiX4PbCQw9q5MGKDCUi3XaI,1622 +django/contrib/redirects/locale/bg/LC_MESSAGES/django.mo,sha256=fEXrzyixSGCWaWu5XxVsjRKMlPwYkORpFtAiwNNShvM,1268 +django/contrib/redirects/locale/bg/LC_MESSAGES/django.po,sha256=_Xha-uOePDqOqOVmYgcR8auVgNT3CS-Z_V_vwyTlwfk,1493 +django/contrib/redirects/locale/bn/LC_MESSAGES/django.mo,sha256=SbQh_pgxNCogvUFud7xW9T6NTAvpaQb2jngXCtpjICM,1319 +django/contrib/redirects/locale/bn/LC_MESSAGES/django.po,sha256=LgUuiPryDLSXxo_4KMCdjM5XC3BiRfINuEk0s5PUQYQ,1511 +django/contrib/redirects/locale/br/LC_MESSAGES/django.mo,sha256=KZmOd_vXlUypXn4XPYl1JBQkxbyOp6y9FAKdvrx8YSs,623 +django/contrib/redirects/locale/br/LC_MESSAGES/django.po,sha256=wdH-Wb6xCL3bY7rfW0ZCRNHeDH3yTG7ZDxzcdWXtSkU,1025 +django/contrib/redirects/locale/bs/LC_MESSAGES/django.mo,sha256=0Yak4rXHjRRXLu3oYYzvS8qxvk2v4IFvUiDPA68a5YI,1115 +django/contrib/redirects/locale/bs/LC_MESSAGES/django.po,sha256=s9Nhx3H4074hlSqo1zgQRJbozakdJTwA1aTuMSqEJWw,1316 +django/contrib/redirects/locale/ca/LC_MESSAGES/django.mo,sha256=sqFznyD9vEvzgzVCTHrzsDmv6ZJy5UCzV15pLacScjc,1137 +django/contrib/redirects/locale/ca/LC_MESSAGES/django.po,sha256=GQhL6KJW4kwv-xta5DcPUlPOMXf5hgs8emZgSUGjbmk,1366 +django/contrib/redirects/locale/cs/LC_MESSAGES/django.mo,sha256=s7dsB2LPmW6QjaBORdOClb7-HbJdjt927l8PL0ej-9k,1156 +django/contrib/redirects/locale/cs/LC_MESSAGES/django.po,sha256=Q94mVP6Q8sBz7NyEzkiXX43hSqHA8CrIv0_u2EHdgS8,1377 +django/contrib/redirects/locale/cy/LC_MESSAGES/django.mo,sha256=NSGoK12A7gbtuAuzQEVFPNSZMqqmhHyRvTEn9PUm9So,1132 +django/contrib/redirects/locale/cy/LC_MESSAGES/django.po,sha256=jDmC64z5exPnO9zwRkBmpa9v3DBlaeHRhqZYPoWqiIY,1360 +django/contrib/redirects/locale/da/LC_MESSAGES/django.mo,sha256=fMxR__ME05FmYKVrcs77ggfqe03Nuvx_Iz2X0Fz89JM,1114 +django/contrib/redirects/locale/da/LC_MESSAGES/django.po,sha256=dpFo8F_pITvs9VafhSfJkS57__5I7Y9HAKjBa1kPrQo,1294 +django/contrib/redirects/locale/de/LC_MESSAGES/django.mo,sha256=iPnuOSbyoQESXyU3arhhm0ESlXrP3OxOkKL9ZpHy_6Q,1136 +django/contrib/redirects/locale/de/LC_MESSAGES/django.po,sha256=kAY-193685fKksD0PcEyC1-lZlXSL8oxVCnoOf6BdVc,1310 +django/contrib/redirects/locale/dsb/LC_MESSAGES/django.mo,sha256=wAFETbVpnUkTChU3d58C2qUdh0_klrwZ5X0yqSavBeY,1242 +django/contrib/redirects/locale/dsb/LC_MESSAGES/django.po,sha256=b1CcYJx9s6swmeXvcI6VE2b_FU_i2_xsHyB4IyAYMoQ,1386 +django/contrib/redirects/locale/el/LC_MESSAGES/django.mo,sha256=kzCurtbtzdZsJOzqLbTtn3kjltOnBq6Nd8p8EFTllF0,1384 +django/contrib/redirects/locale/el/LC_MESSAGES/django.po,sha256=-lFhtPYSaYaS81Zh1CX9vxx0lvQDpAUsTBRNT48ne94,1611 +django/contrib/redirects/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/redirects/locale/en/LC_MESSAGES/django.po,sha256=dKYdOJRafKUDXGsaRIoLCLt2PhwziQgp9SHMEhhfrD8,1098 +django/contrib/redirects/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 +django/contrib/redirects/locale/en_AU/LC_MESSAGES/django.po,sha256=CcP5GVZaImhRgohA5zy5K3rCscOlBtn81DB-V26-Wxg,958 +django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.mo,sha256=VscL30uJnV-eiQZITpBCy0xk_FfKdnMh4O9Hk4HGxww,1053 +django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.po,sha256=loe8xIVjZ7eyteQNLPoa-QceBZdgky22dR6deK5ubmA,1246 +django/contrib/redirects/locale/eo/LC_MESSAGES/django.mo,sha256=pZo0DSbfGGTHi-jgaTGp29kJK-iplaai-WXJoOPluMA,1138 +django/contrib/redirects/locale/eo/LC_MESSAGES/django.po,sha256=3AxFPHffYw3svHe-MR3zuVGLMtkJPL_SX_vB_ztx98c,1414 +django/contrib/redirects/locale/es/LC_MESSAGES/django.mo,sha256=RfNvdDrQeIfIw9I0dpnRjs10QzAFx-h-NRqYIfHx5gQ,1143 +django/contrib/redirects/locale/es/LC_MESSAGES/django.po,sha256=FePzvVGRJi6SmLm988JAbM3PADj1Bjn_XjGa7SFykkU,1392 +django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.mo,sha256=-e7vnpqOe9kFR63URFVovUR6-7HCLK7etTOBGVfPCSE,1127 +django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.po,sha256=IaqYpNmhkP2xb9kcCGy6k4S12pVHKbOQSEFVgWFMIZU,1296 +django/contrib/redirects/locale/es_CO/LC_MESSAGES/django.mo,sha256=wcAMOiqsgz2KEpRwirRH9FNoto6vmo_hxthrQJi0IHU,1147 +django/contrib/redirects/locale/es_CO/LC_MESSAGES/django.po,sha256=n8DM14vHekZRayH0B6Pm3L5XnSo4lto4ZAdu4OhcOmc,1291 +django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.mo,sha256=aU__Eh-OzuEO7sRI45r-7Jnpz9QQpEKtqAZuWpfwQyQ,1136 +django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.po,sha256=KyfWRFCA5kcBpi1uVK_rosEfYFs5mzpBvTsK5rdK4j0,1331 +django/contrib/redirects/locale/es_VE/LC_MESSAGES/django.mo,sha256=59fZBDut-htCj38ZUoqPjhXJPjZBz-xpU9__QFr3kLs,486 +django/contrib/redirects/locale/es_VE/LC_MESSAGES/django.po,sha256=f4XZW8OHjRJoztMJtSDCxd2_Mfy-XK44hLtigjGSsZY,958 +django/contrib/redirects/locale/et/LC_MESSAGES/django.mo,sha256=1KWgSYZUyo6JbwlQHdCg9IRwI4-llys7MfkFRCN10C8,1122 +django/contrib/redirects/locale/et/LC_MESSAGES/django.po,sha256=j0-f8wRSbi6oM8fwRmG1LptZrgUYCyoHzNE3sGuDmoU,1346 +django/contrib/redirects/locale/eu/LC_MESSAGES/django.mo,sha256=c0en4U_IaOUGF0Tt8lMwCm2Fmv3bAiT-D8BO9pNVFIM,1119 +django/contrib/redirects/locale/eu/LC_MESSAGES/django.po,sha256=W-tZOxWXSOzUgZSKRG_CoOf7XjxYuQEMZp0D59EZK9A,1304 +django/contrib/redirects/locale/fa/LC_MESSAGES/django.mo,sha256=WEtbdwPLTpiEZqTb6hJZMeLjL1snmGDWbzoYwa3BQnI,1241 +django/contrib/redirects/locale/fa/LC_MESSAGES/django.po,sha256=-XfgGc8mlwIWIk0NvtWZlwBrcDG3Mrj9k7FLDJMKQl4,1463 +django/contrib/redirects/locale/fi/LC_MESSAGES/django.mo,sha256=mCSVYBr0r3ieZPuORu4t1bsxHVnXg5_4cV8C59RC-vk,1158 +django/contrib/redirects/locale/fi/LC_MESSAGES/django.po,sha256=5hNG5JNitRLU1YrFwSOnyiMRTlRw4rXgyTjRImXEy-g,1368 +django/contrib/redirects/locale/fr/LC_MESSAGES/django.mo,sha256=8lXEASsnoQMclcQ8itMj93Zkitfu1IFUwWuPaZJRa8o,1141 +django/contrib/redirects/locale/fr/LC_MESSAGES/django.po,sha256=uJ9ql71ntuAmpmbs2-Rq2jXcblGuPWfXUu0twdjflIg,1326 +django/contrib/redirects/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 +django/contrib/redirects/locale/fy/LC_MESSAGES/django.po,sha256=D7xverCbf3kTCcFM8h7EKWM5DcxZRqeOSKDB1irbKeE,948 +django/contrib/redirects/locale/ga/LC_MESSAGES/django.mo,sha256=gISo2m96gx4SsY_EaEXDSQyMD7YfEN64-u4CbD83xbY,1073 +django/contrib/redirects/locale/ga/LC_MESSAGES/django.po,sha256=oi_ywO2DyKXhN40BE0TRLzFKvS9TK2JEsUvR6_EbW3E,1279 +django/contrib/redirects/locale/gd/LC_MESSAGES/django.mo,sha256=fcIwOFja3uSj8spusyE3ECkiugkvGk9pa5DLsGSkSMQ,1252 +django/contrib/redirects/locale/gd/LC_MESSAGES/django.po,sha256=CkNt_Ra3yA9uKDy4BeK6in2lc63VSqqlK2JPQ6s4S-Q,1371 +django/contrib/redirects/locale/gl/LC_MESSAGES/django.mo,sha256=09ZB4Eobqeq9xrV2DL4-nwtsOvrfBH6BA7Gk8MxAtbc,1079 +django/contrib/redirects/locale/gl/LC_MESSAGES/django.po,sha256=9j_NYHGLTppHe2y0m4vjkKt1p1g9d59QpN8uAzq4eL4,1295 +django/contrib/redirects/locale/he/LC_MESSAGES/django.mo,sha256=cVPF03bdLcUiZt52toHoPXMqE5rEYPU0vEb5uIZwH_4,1128 +django/contrib/redirects/locale/he/LC_MESSAGES/django.po,sha256=Ycu8QAgIhJm-zN3_dlJelXKK87YQZV8Ahc5i7AUtkVk,1302 +django/contrib/redirects/locale/hi/LC_MESSAGES/django.mo,sha256=onR8L7Kvkx6HgFLK7jT-wA_zjarBN8pyltG6BbKFIWU,1409 +django/contrib/redirects/locale/hi/LC_MESSAGES/django.po,sha256=fNv9_qwR9iS-pjWNXnrUFIqvc10lwg3bfj5lgdQOy1U,1649 +django/contrib/redirects/locale/hr/LC_MESSAGES/django.mo,sha256=7wHi6Uu0czZhI6v0ndJJ1wSkalTRfn7D5ovyw8tr4U4,1207 +django/contrib/redirects/locale/hr/LC_MESSAGES/django.po,sha256=HtxZwZ-ymmf-XID0z5s7nGYg-4gJL8i6FDGWt9i4Wns,1406 +django/contrib/redirects/locale/hsb/LC_MESSAGES/django.mo,sha256=l_NcBALI4Tsc0cM_PtEXzWWM5AQsf-OEcULlf4TZv8E,1236 +django/contrib/redirects/locale/hsb/LC_MESSAGES/django.po,sha256=xoWJStp4xkPdJHjk39BhlSC0Nh0qSSLe4dXiYa3IEBU,1380 +django/contrib/redirects/locale/hu/LC_MESSAGES/django.mo,sha256=4rxfQPYRySmOlKWO7LIGzNuYyNlP-EsuK7IRpgIkdQY,1152 +django/contrib/redirects/locale/hu/LC_MESSAGES/django.po,sha256=8OaJ7UgFJXbpxEtnLu9UuOwOjAoE9MFVEU5cXT0ThUU,1329 +django/contrib/redirects/locale/ia/LC_MESSAGES/django.mo,sha256=PDB5ZQP6iH31xN6N2YmPZYjt6zzc88TRmh9_gAWH2U0,1152 +django/contrib/redirects/locale/ia/LC_MESSAGES/django.po,sha256=GXjbzY-cQz2QLx_iuqgijT7VUMcoNKL7prbP6yIbj8E,1297 +django/contrib/redirects/locale/id/LC_MESSAGES/django.mo,sha256=ef2SKKOPZ3wDl-z-kZ3q6UVAjvgIGuioHi9U3PR_knE,1098 +django/contrib/redirects/locale/id/LC_MESSAGES/django.po,sha256=5axvDDh3Yg5NzMC4Ayr0noUOr7tOgU-BJ9S8j_sv-yY,1319 +django/contrib/redirects/locale/io/LC_MESSAGES/django.mo,sha256=vz7TWRML-DFDFapbEXTByb9-pRQwoeJ0ApSdh6nOzXY,1019 +django/contrib/redirects/locale/io/LC_MESSAGES/django.po,sha256=obStuMYYSQ7x2utkGS3gekdPfnsNAwp3DcNwlwdg1sI,1228 +django/contrib/redirects/locale/is/LC_MESSAGES/django.mo,sha256=OnT5N5YqvG6Vto1GM4vK9hu_gn19_Icfj-d55Exds_E,1065 +django/contrib/redirects/locale/is/LC_MESSAGES/django.po,sha256=qsstQGFLj6Tkzfzak2UjIRh5sZQLSeD9YN6kYBLKJnc,1278 +django/contrib/redirects/locale/it/LC_MESSAGES/django.mo,sha256=nFyQf8zpMFSgbDT85GHnOxQQbuss2Dp_DlwhgLvPVAQ,1105 +django/contrib/redirects/locale/it/LC_MESSAGES/django.po,sha256=_mI90dLhi--cxkJWjtTT9_JLesqyMOPKYrfGhzwVDQs,1307 +django/contrib/redirects/locale/ja/LC_MESSAGES/django.mo,sha256=98oXXZ0raebFOFB23-p5VaAhbW46kwC9jxM8I2FAV_U,1148 +django/contrib/redirects/locale/ja/LC_MESSAGES/django.po,sha256=XJQiqtbTrwDIBQCWfYJcHuXYDh7gr0HvCTiuGXcZtIQ,1324 +django/contrib/redirects/locale/ka/LC_MESSAGES/django.mo,sha256=0aOLKrhUX6YAIMNyt6KES9q2iFk2GupEr76WeGlJMkk,1511 +django/contrib/redirects/locale/ka/LC_MESSAGES/django.po,sha256=bK3ULAIG00Nszoz74r-W3W8CihaoijYkWlc6sUqJXrg,1720 +django/contrib/redirects/locale/kab/LC_MESSAGES/django.mo,sha256=Ogx9NXK1Nfw4ctZfp-slIL81ziDX3f4DZ01OkVNY5Tw,699 +django/contrib/redirects/locale/kab/LC_MESSAGES/django.po,sha256=gI6aUPkXH-XzKrStDsMCMNfQKDEc-D1ffqE-Z-ItQuI,1001 +django/contrib/redirects/locale/kk/LC_MESSAGES/django.mo,sha256=KVLc6PKL1MP_Px0LmpoW2lIvgLiSzlvoJ9062F-s3Zw,1261 +django/contrib/redirects/locale/kk/LC_MESSAGES/django.po,sha256=k3TtiYJ7x50M19DCu2eLcsCroKusJ3paiC2RvZ-920A,1473 +django/contrib/redirects/locale/km/LC_MESSAGES/django.mo,sha256=tcW1s7jvTG0cagtdRNT0jSNkhX-B903LKl7bK31ZvJU,1248 +django/contrib/redirects/locale/km/LC_MESSAGES/django.po,sha256=KJ4h1umpfFLdsWZtsfXoeOl6cUPUD97U4ISWt80UZ2U,1437 +django/contrib/redirects/locale/kn/LC_MESSAGES/django.mo,sha256=-gqNBZVFvxqOiPWUb9jH4myXufHHfdyr_yROTfpk2jU,1396 +django/contrib/redirects/locale/kn/LC_MESSAGES/django.po,sha256=qFM2v3ys7E5u-WJE7CR-2IMrDTqFjNq96OQ1syMDWoI,1588 +django/contrib/redirects/locale/ko/LC_MESSAGES/django.mo,sha256=gXKWhQ8zEU7D1DwkUmXXaeqgXjiVuGSFVm8S7P4dNVs,1112 +django/contrib/redirects/locale/ko/LC_MESSAGES/django.po,sha256=q8A446VIdu6xIbjzmZxw4X0z3SfJL5Jffi_1C_IfKWM,1343 +django/contrib/redirects/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 +django/contrib/redirects/locale/lb/LC_MESSAGES/django.po,sha256=Hv1CF9CC78YuVVNpklDtPJDU5-iIUeuXcljewmc9akg,946 +django/contrib/redirects/locale/lt/LC_MESSAGES/django.mo,sha256=reiFMXJnvE4XUosbKjyvUFzl4IKjlJoFK1gVJE9Tbnc,1191 +django/contrib/redirects/locale/lt/LC_MESSAGES/django.po,sha256=3D3sSO1D9XyRpiT57l-0emy7V11uKCWJYqpEzmmpUzE,1377 +django/contrib/redirects/locale/lv/LC_MESSAGES/django.mo,sha256=gH-QSWtlMTIuvz0HkCQwCUKPsaGH6ffjS8DIlJK-D38,1179 +django/contrib/redirects/locale/lv/LC_MESSAGES/django.po,sha256=EHJnRXo3G9mhYYySGHC-6pF1CRB2RHJaLGzcscYh9fY,1355 +django/contrib/redirects/locale/mk/LC_MESSAGES/django.mo,sha256=3XGgf2K60LclScPKcgw07TId6x535AW5jtGVJ9lC01A,1353 +django/contrib/redirects/locale/mk/LC_MESSAGES/django.po,sha256=Smsdpid5VByoxvnfzju_XOlp6aTPl8qshFptot3cRYM,1596 +django/contrib/redirects/locale/ml/LC_MESSAGES/django.mo,sha256=WuMPevyQxt3VojPPf9rJPK7oWAL9V-S3j8EkEwz1Mx0,1331 +django/contrib/redirects/locale/ml/LC_MESSAGES/django.po,sha256=4fRYoLwqxL1W6SPbAfoU5lP6lTY9uuZzByNws_s4lf0,1520 +django/contrib/redirects/locale/mn/LC_MESSAGES/django.mo,sha256=14fdHC_hZrRaA0EAFzBJy8BHj4jMMX6l2e6rLLBtJ8E,1274 +django/contrib/redirects/locale/mn/LC_MESSAGES/django.po,sha256=7_QzUWf5l0P-7gM35p9UW7bOj33NabQq_zSrekUeZsY,1502 +django/contrib/redirects/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 +django/contrib/redirects/locale/mr/LC_MESSAGES/django.po,sha256=0aGKTlriCJoP-Tirl-qCl7tjjpjURhgCjRGmurHVO3c,940 +django/contrib/redirects/locale/my/LC_MESSAGES/django.mo,sha256=H5-y9A3_1yIXJzC4sSuHqhURxhOlnYEL8Nvc0IF4zUE,549 +django/contrib/redirects/locale/my/LC_MESSAGES/django.po,sha256=MZGNt0jMQA6aHA6OmjvaC_ajvRWfUfDiKkV0j3_E480,1052 +django/contrib/redirects/locale/nb/LC_MESSAGES/django.mo,sha256=flh3A8h-hu_Ed0dGUAPH7ZxF1WC9sYB2NqCPkNPfMLQ,1147 +django/contrib/redirects/locale/nb/LC_MESSAGES/django.po,sha256=9v20yzVkeilgDRfoXetQNytBShYEsgOLVctsZpzOfBI,1405 +django/contrib/redirects/locale/ne/LC_MESSAGES/django.mo,sha256=TxTnBGIi5k0PKAjADeCuOAJQV5dtzLrsFRXBXtfszWI,1420 +django/contrib/redirects/locale/ne/LC_MESSAGES/django.po,sha256=5b5R-6AlSIQrDyTtcmquoW5xrQRGZwlxZpBpZfVo5t4,1607 +django/contrib/redirects/locale/nl/LC_MESSAGES/django.mo,sha256=mDRSlzw-0KGJ-8Z3A7LDGV_yH4U3yJ0qcqDoAUPr8cQ,1114 +django/contrib/redirects/locale/nl/LC_MESSAGES/django.po,sha256=-QPs1pytBa5UQrosBERvmcNwb03q_sfrIiztr9OeL5M,1356 +django/contrib/redirects/locale/nn/LC_MESSAGES/django.mo,sha256=oiw7wSgqGUrHIdec6sIa7OlHXGME5iWA9h1UUlhl6Mw,1072 +django/contrib/redirects/locale/nn/LC_MESSAGES/django.po,sha256=pfu1XKvB-9DS_5dAbvjGzZCKAYxBEtnStJlBJxRSEXk,1267 +django/contrib/redirects/locale/os/LC_MESSAGES/django.mo,sha256=joQ-ibV9_6ctGMNPLZQLCx5fUamRQngs6_LDd_s9sMQ,1150 +django/contrib/redirects/locale/os/LC_MESSAGES/django.po,sha256=ZwFWiuGS9comy7r2kMnKuqaPOvVehVdAAuFvXM5ldxM,1358 +django/contrib/redirects/locale/pa/LC_MESSAGES/django.mo,sha256=MY-OIDNXlZth-ZRoOJ52nlUPg_51_F5k0NBIpc7GZEw,748 +django/contrib/redirects/locale/pa/LC_MESSAGES/django.po,sha256=TPDTK2ZvDyvO1ob8Qfr64QDbHVWAREfEeBO5w9jf63E,1199 +django/contrib/redirects/locale/pl/LC_MESSAGES/django.mo,sha256=DrsiZaeqMKkydQS2QyGCePj39Jh7aWR6DCMxBhZdaOU,1279 +django/contrib/redirects/locale/pl/LC_MESSAGES/django.po,sha256=0Dp53dQhxQyt_NDNuRYs2vcsQzPkbyo5RzewEY35CEc,1512 +django/contrib/redirects/locale/pt/LC_MESSAGES/django.mo,sha256=WocPaVk3fQEz_MLmGVtFBGwsThD-gNU7GDocqEbeaBA,1129 +django/contrib/redirects/locale/pt/LC_MESSAGES/django.po,sha256=ptCzoE41c9uFAbgSjb6VHSFYPEUv_51YyBdoThXN3XA,1350 +django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.mo,sha256=VN3i7dnTRkGwPmOfTXnQW3GNDpBpbc9gvBed2Mz0gQw,1162 +django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po,sha256=DXFcxZ75Jz0l5uQV2skTW3y6WJVpjor7lr6vg2eADfA,1408 +django/contrib/redirects/locale/ro/LC_MESSAGES/django.mo,sha256=HSQTOHGdyzkHlm6Ti1FBLU7Oj896At-xJJnwQF4Orgw,1222 +django/contrib/redirects/locale/ro/LC_MESSAGES/django.po,sha256=OYNV39_gWPt8ZgHDs6Bkv5_o4rveTnnlhcZLXhbwPXw,1453 +django/contrib/redirects/locale/ru/LC_MESSAGES/django.mo,sha256=pV_IGa3dFWwIymZyWyVdmQHdJO2dpMTm0ut3W1qBz0I,1456 +django/contrib/redirects/locale/ru/LC_MESSAGES/django.po,sha256=Mz9QdfJfRwOGxvZ4VmvXgBDImvp0uHZMCg4Z6-Yvf3I,1669 +django/contrib/redirects/locale/sk/LC_MESSAGES/django.mo,sha256=4U3JX_UnnYmBNtKseSUobgTslILeZWfn37Dg7q52svY,1160 +django/contrib/redirects/locale/sk/LC_MESSAGES/django.po,sha256=8tDwfdkGAXo4eAR66nfkIdegbyjc3-qBfrMZgrf_cF4,1376 +django/contrib/redirects/locale/sl/LC_MESSAGES/django.mo,sha256=GAZtOFSUxsOHdXs3AzT40D-3JFWIlNDZU_Z-cMvdaHo,1173 +django/contrib/redirects/locale/sl/LC_MESSAGES/django.po,sha256=gkZTyxNh8L2gNxyLVzm-M1HTiK8KDvughTa2MK9NzWo,1351 +django/contrib/redirects/locale/sq/LC_MESSAGES/django.mo,sha256=Js-5m2a1qd32OUxH-iPrgdUGfmMMaAjAXEZHpmQxr-0,1125 +django/contrib/redirects/locale/sq/LC_MESSAGES/django.po,sha256=WpenX8X1zZ6vAM7xi0kAmEXtPX-hz-m1QS4V7UzBeBQ,1307 +django/contrib/redirects/locale/sr/LC_MESSAGES/django.mo,sha256=j3-tpIjJ0vePNMQz4tmZkH3SBfnhA50MFSIHPOHbwHA,1254 +django/contrib/redirects/locale/sr/LC_MESSAGES/django.po,sha256=7GYy8bPElrcLH1CSZ2jXxfxH0-fCkDt7K-jgrWKBM1M,1455 +django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=zVEFUwMO0OobVJnpMEsN0cPG-H1o01idHsRFbM5D7i0,1132 +django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.po,sha256=50ukHV96cGLGb2LBLAhAwmD4nf6Rv0x8unJrzq30ZXA,1333 +django/contrib/redirects/locale/sv/LC_MESSAGES/django.mo,sha256=y1KpTjzF2FWY_x373UyaEFTTNYPT6hroB6zvA1ev010,1147 +django/contrib/redirects/locale/sv/LC_MESSAGES/django.po,sha256=7Us64PRHRyIZ8D7lY6HCef9xXnoSfwWI3YYtlNEaFSo,1362 +django/contrib/redirects/locale/sw/LC_MESSAGES/django.mo,sha256=oJnTp9CTgNsg5TSOV_aPZIUXdr6-l65hAZbaARZCO2w,1078 +django/contrib/redirects/locale/sw/LC_MESSAGES/django.po,sha256=CTVwA3O7GUQb7l1WpbmT8kOfqr7DpqnIyQt3HWJ6YTQ,1245 +django/contrib/redirects/locale/ta/LC_MESSAGES/django.mo,sha256=AE6Py2_CV2gQKjKQAa_UgkLT9i61x3i1hegQpRGuZZM,1502 +django/contrib/redirects/locale/ta/LC_MESSAGES/django.po,sha256=ojdq8p4HnwtK0n6By2I6_xuucOpJIobJEGRMGc_TrS8,1700 +django/contrib/redirects/locale/te/LC_MESSAGES/django.mo,sha256=Gtcs4cbgrD7-bSkPKiPbM5DcjONS2fSdHhvWdbs_E1M,467 +django/contrib/redirects/locale/te/LC_MESSAGES/django.po,sha256=RT-t3TjcOLyNQQWljVrIcPWErKssh_HQMyGujloy-EI,939 +django/contrib/redirects/locale/th/LC_MESSAGES/django.mo,sha256=cnPvlsVYioWu6g3wRN7j0TGfUvi2mSHjygsLe5XQ_RA,1210 +django/contrib/redirects/locale/th/LC_MESSAGES/django.po,sha256=ACxr7blSSbcHljHKwvU5JBJ24pgNv9aKg1RdP4H5kGY,1393 +django/contrib/redirects/locale/tr/LC_MESSAGES/django.mo,sha256=RiZJ_Acsxwz0d4q1JTZWPnbCpW8uiedE_X8PRJdZB0E,1124 +django/contrib/redirects/locale/tr/LC_MESSAGES/django.po,sha256=Gr6fwZ2nLkbosrikKpSgODsRf40GKXBc3RL9pOffCGM,1348 +django/contrib/redirects/locale/tt/LC_MESSAGES/django.mo,sha256=Hf1JXcCGNwedxy1nVRM_pQ0yUebC-tvOXr7P0h86JyI,1178 +django/contrib/redirects/locale/tt/LC_MESSAGES/django.po,sha256=2WCyBQtqZk-8GXgtu-x94JYSNrryy2QoMnirhiBrgV0,1376 +django/contrib/redirects/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 +django/contrib/redirects/locale/udm/LC_MESSAGES/django.po,sha256=xsxlm4itpyLlLdPQRIHLuvTYRvruhM3Ezc9jtp3XSm4,934 +django/contrib/redirects/locale/uk/LC_MESSAGES/django.mo,sha256=nCpHZGF8aYaw3UDrSXugypDHEIkWYHXncmyC_YHzxw0,1414 +django/contrib/redirects/locale/uk/LC_MESSAGES/django.po,sha256=-UDqtKOxcTA4C4O0QW7GnjtnXtEmwDfvfLmNQFMI1No,1700 +django/contrib/redirects/locale/ur/LC_MESSAGES/django.mo,sha256=CQkt-yxyAaTd_Aj1ZZC8s5-4fI2TRyTEZ-SYJZgpRrQ,1138 +django/contrib/redirects/locale/ur/LC_MESSAGES/django.po,sha256=CkhmN49PvYTccvlSRu8qGpcbx2C-1aY7K3Lq1VC2fuM,1330 +django/contrib/redirects/locale/vi/LC_MESSAGES/django.mo,sha256=BquXycJKh-7-D9p-rGUNnjqzs1d6S1YhEJjFW8_ARFA,1106 +django/contrib/redirects/locale/vi/LC_MESSAGES/django.po,sha256=xsCASrGZNbQk4d1mhsTZBcCpPJ0KO6Jr4Zz1wfnL67s,1301 +django/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=q_V-681leIEKkVUTw0QmkxkW94pNP_O2IWu6K8mWJrk,1089 +django/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.po,sha256=zT9NRup3gaT5-i9Tz_l1Fz_vjctz2bwq5mgAb9T1vtc,1315 +django/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=35HyQ7p6_pB1xNNbNzjNX8JhMa5HOzAmkF5YUgC70N0,1096 +django/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.po,sha256=bbDd7Y0E1xAv7EmqAQI3am7VhDo3NxBgjRP8WvolS1s,1313 +django/contrib/redirects/migrations/0001_initial.py,sha256=jl-W40P9AY3VHUP69TmXS3lKVFlwGVIHJ04lEFBkgEY,1491 +django/contrib/redirects/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/sessions/__init__.py,sha256=W7kKt-gCROzrUA6UpIRAit3SHa-coN4_A4fphGikCEk,67 +django/contrib/sessions/apps.py,sha256=q_fkp7a7_1GT14XHkHgNIET0sItgfBeFT7B137_KeZM,194 +django/contrib/sessions/base_session.py,sha256=5FofwClB_ukwCsXPfJbzUvKoYaMQ78B_lWXU0fqSg1k,1490 +django/contrib/sessions/exceptions.py,sha256=epvfG9haHc8p34Ic6IqUSC-Yj06Ruh2TSm9G6HQMdno,256 +django/contrib/sessions/middleware.py,sha256=sbpLTYtkGNo5TfYaHPestSVrhMEbcGL9LXRDk4OD5LQ,3423 +django/contrib/sessions/models.py,sha256=vmROoszsXHnPHoSbFca8k-U9Z8Wg6EAHYeEK87VHHk8,1257 +django/contrib/sessions/serializers.py,sha256=FUUY-XXwipIA085gJSNNcTxVQqo12YE9EFainIxNPdU,394 +django/contrib/sessions/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/sessions/backends/base.py,sha256=aFxoGhXQaZb6nj6Q_KbpyFWjrYUuDOOLh3uY3objGFc,11967 +django/contrib/sessions/backends/cache.py,sha256=-qeSz07gUidiY_xq7imMJ3SP17J_rLsIO50KxOhq_8E,2713 +django/contrib/sessions/backends/cached_db.py,sha256=S1EMi_8GiSbImzdndIvzX8iMnJwHI-G1km40fbZeLXg,2686 +django/contrib/sessions/backends/db.py,sha256=JVPC09-K9a7yIhvFDWPfpu6QP7A0jeUkome5dbLXELY,3703 +django/contrib/sessions/backends/file.py,sha256=iI2Q3qdHDEAbYpGBdvkTeWDU3Rrx_DsR--OjIAXX_bI,7906 +django/contrib/sessions/backends/signed_cookies.py,sha256=jcBrD3gUHrdETWf6JvwDVCFe4eAiRbH8i2oMJjwpXPs,2696 +django/contrib/sessions/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 +django/contrib/sessions/locale/af/LC_MESSAGES/django.po,sha256=fdRPUBMVUrpvAi9zsvwSnts55Wdnj4r2kLxKeroIsSM,745 +django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo,sha256=yoepqaR68PTGLx--cAOzP94Sqyl5xIYpeQ0IFWgY380,846 +django/contrib/sessions/locale/ar/LC_MESSAGES/django.po,sha256=ZgwtBYIdtnqp_8nKHXF1NVJFzQU81-3yv9b7STrQHMc,995 +django/contrib/sessions/locale/ast/LC_MESSAGES/django.mo,sha256=hz2m-PkrHby2CKfIOARj6kCzisT-Vs0syfDSTx_iVVw,702 +django/contrib/sessions/locale/ast/LC_MESSAGES/django.po,sha256=M90j1Nx6oDJ16hguUkfKYlyb5OymUeZ5xzPixWxSC7I,846 +django/contrib/sessions/locale/az/LC_MESSAGES/django.mo,sha256=XJskCf7jcxBH-i_gqfJIHVO3Loh3w6_kIyod5nxLu7Y,700 +django/contrib/sessions/locale/az/LC_MESSAGES/django.po,sha256=74663H2-Uz-RMRfDN8E4-Z5LxZ6deAlgdEdvpa-_YK0,846 +django/contrib/sessions/locale/be/LC_MESSAGES/django.mo,sha256=8b7MeFDTL6VStOnVHtkb_o4Iiy0gTHoCwTUbT1vRr9Q,895 +django/contrib/sessions/locale/be/LC_MESSAGES/django.po,sha256=tHsYVn3XNTcukB0SrHUWP1iV763rrQHCimOyJHRPiek,1023 +django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo,sha256=DGp3j3E0-5bBjFCKx9c6Jcz9ZaXysd2DgVPuxROWDmU,783 +django/contrib/sessions/locale/bg/LC_MESSAGES/django.po,sha256=AEgnW2F8S85JZOh4JVJ6nLynsmHRZOBBoOluVxHosVo,942 +django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo,sha256=0BdFN7ou9tmoVG00fCA-frb1Tri3iKz43W7SWal398s,762 +django/contrib/sessions/locale/bn/LC_MESSAGES/django.po,sha256=LycmTel6LXV2HGGN6qzlAfID-cVEQCNnW1Nv_hbWXJk,909 +django/contrib/sessions/locale/br/LC_MESSAGES/django.mo,sha256=-tOybnibUnlB-jOPm9-oi40D1fhoszQ7fvq6vMhiwOg,536 +django/contrib/sessions/locale/br/LC_MESSAGES/django.po,sha256=lQiZ3aJ1B4o1-LHuXMyYWlUetaAAvMleqr0pFT1acww,787 +django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo,sha256=M7TvlJMrSUAFhp7oUSpUKejnbTuIK-19yiGBBECl9Sc,759 +django/contrib/sessions/locale/bs/LC_MESSAGES/django.po,sha256=Ur0AeRjXUsLgDJhcGiw75hRk4Qe98DzPBOocD7GFDRQ,909 +django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo,sha256=tbaZ48PaihGGD9-2oTKiMFY3kbXjU59nNciCRINOBNk,738 +django/contrib/sessions/locale/ca/LC_MESSAGES/django.po,sha256=tJuJdehKuD9aXOauWOkE5idQhsVsLbeg1Usmc6N_SP0,906 +django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo,sha256=4ZL8ECaHYx2PdPoQlpQ1YiNVVyQRH1TR5NblBRmmxB8,747 +django/contrib/sessions/locale/cs/LC_MESSAGES/django.po,sha256=-Y7fL3Ge6Cfiet1UZtA6xejOnpD0FPj37ruqImKxKn4,906 +django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo,sha256=GeWVeV2PvgLQV8ecVUA2g3-VvdzMsedgIDUSpn8DByk,774 +django/contrib/sessions/locale/cy/LC_MESSAGES/django.po,sha256=zo18MXtkEdO1L0Q6ewFurx3lsEWTCdh0JpQJTmvw5bY,952 +django/contrib/sessions/locale/da/LC_MESSAGES/django.mo,sha256=cR9YutBJxPiisDQ-C14H2J7TiNOVmna3094Vuq0txqs,722 +django/contrib/sessions/locale/da/LC_MESSAGES/django.po,sha256=qX_Oo7niVo57bazlIYFA6bnVmPBclUUTWvZFYNLaG04,880 +django/contrib/sessions/locale/de/LC_MESSAGES/django.mo,sha256=N3kTal0YK9z7Te3zYGLbJmoSB6oWaviWDLGdPlsPa9g,721 +django/contrib/sessions/locale/de/LC_MESSAGES/django.po,sha256=0qnfDeCUQN2buKn6R0MvwhQP05XWxSu-xgvfxvnJe3k,844 +django/contrib/sessions/locale/dsb/LC_MESSAGES/django.mo,sha256=RABl3WZmY6gLh4IqmTUhoBEXygDzjp_5lLF1MU9U5fA,810 +django/contrib/sessions/locale/dsb/LC_MESSAGES/django.po,sha256=cItKs5tASYHzDxfTg0A_dgBQounpzoGyOEFn18E_W_g,934 +django/contrib/sessions/locale/el/LC_MESSAGES/django.mo,sha256=QbTbmcfgc8_4r5hFrIghDhk2XQ4f8_emKmqupMG2ah0,809 +django/contrib/sessions/locale/el/LC_MESSAGES/django.po,sha256=HeaEbpVmFhhrZt2NsZteYaYoeo8FYKZF0IoNJwtzZkc,971 +django/contrib/sessions/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/sessions/locale/en/LC_MESSAGES/django.po,sha256=afaM-IIUZtcRZduojUTS8tT0w7C4Ya9lXgReOvq_iF0,804 +django/contrib/sessions/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 +django/contrib/sessions/locale/en_AU/LC_MESSAGES/django.po,sha256=gvnvUpim1l7oImnzPXqBww-Uz0TgGjzCLaaszpdkQ10,761 +django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo,sha256=T5NQCTYkpERfP9yKbUvixT0VdBt1zGmGB8ITlkVc420,707 +django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po,sha256=1ks_VE1qpEfPcyKg0HybkTG0-DTttTHTfUPhQCR53sw,849 +django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo,sha256=eBvYQbZS_WxVV3QCSZAOyHNIljC2ZXxVc4mktUuXVjI,727 +django/contrib/sessions/locale/eo/LC_MESSAGES/django.po,sha256=Ru9xicyTgHWVHh26hO2nQNFRQmwBnYKEagsS8TZRv3E,917 +django/contrib/sessions/locale/es/LC_MESSAGES/django.mo,sha256=jbHSvHjO2OCLlBD66LefocKOEbefWbPhj-l3NugiWuc,734 +django/contrib/sessions/locale/es/LC_MESSAGES/django.po,sha256=fY5WXeONEXHeuBlH0LkvzdZ2CSgbvLZ8BJc429aIbhI,909 +django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo,sha256=ACc53N0nFsdhIhvuinICI6XhGhHwxMeZjA--46TAXso,735 +django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po,sha256=AnmvjeOA7EBTJ6wMOkCl8JRLVYRU8KS0egPijcKutns,879 +django/contrib/sessions/locale/es_CO/LC_MESSAGES/django.mo,sha256=UP7ia0gV9W-l0Qq5AS4ZPadJtml8iuzzlS5C9guMgh8,754 +django/contrib/sessions/locale/es_CO/LC_MESSAGES/django.po,sha256=_XeiiRWvDaGjofamsRHr5up_EQvcw0w-GLLeWK27Af8,878 +django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo,sha256=MDM0K3xMvyf8ymvAurHYuacpxfG_YfJFyNnp1uuc6yY,756 +django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po,sha256=Y7VNa16F_yyK7_XJvF36rR2XNW8aBJK4UDweufyXpxE,892 +django/contrib/sessions/locale/es_VE/LC_MESSAGES/django.mo,sha256=59fZBDut-htCj38ZUoqPjhXJPjZBz-xpU9__QFr3kLs,486 +django/contrib/sessions/locale/es_VE/LC_MESSAGES/django.po,sha256=zWjgB0AmsmhX2tjk1PgldttqY56Czz8epOVCaYWXTLU,761 +django/contrib/sessions/locale/et/LC_MESSAGES/django.mo,sha256=aL1jZWourEC7jtjsuBZHD-Gw9lpL6L1SoqjTtzguxD0,737 +django/contrib/sessions/locale/et/LC_MESSAGES/django.po,sha256=VNBYohAOs59jYWkjVMY-v2zwVy5AKrtBbFRJZLwdCFg,899 +django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo,sha256=M9piOB_t-ZnfN6pX-jeY0yWh2S_5cCuo1oGiy7X65A4,728 +django/contrib/sessions/locale/eu/LC_MESSAGES/django.po,sha256=bHdSoknoH0_dy26e93tWVdO4TT7rnCPXlSLPsYAhwyw,893 +django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo,sha256=6DdJcqaYuBnhpFFHR42w-RqML0eQPFMAUEEDY0Redy8,755 +django/contrib/sessions/locale/fa/LC_MESSAGES/django.po,sha256=NgJlLPsS9FXjRzKqGgUTkNG9puYrBRf0KQK-QqXMIxQ,916 +django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo,sha256=oAugvlTEvJmG8KsZw09WcfnifYY5oHnGo4lxcxqKeaY,721 +django/contrib/sessions/locale/fi/LC_MESSAGES/django.po,sha256=BVVrjbZZtLGAuZ9HK63p769CbjZFZMlS4BewSMfNMKU,889 +django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo,sha256=HQ3DEjxHQeHRYmu7SYVSDl1ZQHhamnw-mJ5vci5io1g,733 +django/contrib/sessions/locale/fr/LC_MESSAGES/django.po,sha256=hARxGdtBOzEZ_iVyzkNvcKlgyM8fOkdXTH3upj2XFYM,893 +django/contrib/sessions/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 +django/contrib/sessions/locale/fy/LC_MESSAGES/django.po,sha256=U-VEY4WbmIkmrnPK4Mv-B-pbdtDzusBCVmE8iHyvzFU,751 +django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo,sha256=pYchS6m-SPtKOFLAw0IJwW6DKXu6VnwPeKl6X80e8hI,747 +django/contrib/sessions/locale/ga/LC_MESSAGES/django.po,sha256=ArrEYC58VzWDKq2RAYXi5VsxzD6RUon1pyA7NUj9pEE,894 +django/contrib/sessions/locale/gd/LC_MESSAGES/django.mo,sha256=Yi8blY_fUD5YTlnUD6YXZvv1qjm4QDriO6CJIUe1wIk,791 +django/contrib/sessions/locale/gd/LC_MESSAGES/django.po,sha256=fEa40AUqA5vh743Zqv0FO2WxSFXGYk4IzUR4BoaP-C4,890 +django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo,sha256=uQ2ZmtUNoVCB2mSlMGSy-j4a_hu9PBfJDo796d8beFA,701 +django/contrib/sessions/locale/gl/LC_MESSAGES/django.po,sha256=FovTLHdVK15N9FI9lFFAOP4zt7GsvO0kKdocgeVDkNk,902 +django/contrib/sessions/locale/he/LC_MESSAGES/django.mo,sha256=qhgjSWfGAOgl-i7iwzSrJttx88xcj1pB0iLkEK64mJU,809 +django/contrib/sessions/locale/he/LC_MESSAGES/django.po,sha256=gtBgkC2bpVyWm8B5pjV3-9tBo0xqUsJuJz2neN79isg,969 +django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo,sha256=naqxOjfAnNKy3qqnUG-4LGf9arLRJpjyWWmSj5tEfao,759 +django/contrib/sessions/locale/hi/LC_MESSAGES/django.po,sha256=WnTGvOz9YINMcUJg2BYCaHceZLKaTfsba_0AZtRNP38,951 +django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo,sha256=axyJAmXmadpFxIhu8rroVD8NsGGadQemh9-_ZDo7L1U,819 +django/contrib/sessions/locale/hr/LC_MESSAGES/django.po,sha256=3G-qOYXBO-eMWWsa5LwTCW9M1oF0hlWgEz7hAK8hJqI,998 +django/contrib/sessions/locale/hsb/LC_MESSAGES/django.mo,sha256=_OXpOlCt4KU0i65Iw4LMjSsyn__E9wH20l9vDNBSEzw,805 +django/contrib/sessions/locale/hsb/LC_MESSAGES/django.po,sha256=yv3vX_UCDrdl07GQ79Mnytwgz2oTvySYOG9enzMpFJA,929 +django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo,sha256=ik40LnsWkKYEUioJB9e11EX9XZ-qWMa-S7haxGhM-iI,727 +django/contrib/sessions/locale/hu/LC_MESSAGES/django.po,sha256=1-UWEEsFxRwmshP2x4pJbitWIGZ1YMeDDxnAX-XGNxc,884 +django/contrib/sessions/locale/ia/LC_MESSAGES/django.mo,sha256=-o4aQPNJeqSDRSLqcKuYvJuKNBbFqDJDe3IzHgSgZeQ,744 +django/contrib/sessions/locale/ia/LC_MESSAGES/django.po,sha256=PULLDd3QOIU03kgradgQzT6IicoPhLPlUvFgRl-tGbA,869 +django/contrib/sessions/locale/id/LC_MESSAGES/django.mo,sha256=mOaIF0NGOO0-dt-nhHL-i3cfvt9-JKTbyUkFWPqDS9Y,705 +django/contrib/sessions/locale/id/LC_MESSAGES/django.po,sha256=EA6AJno3CaFOO-dEU9VQ_GEI-RAXS0v0uFqn1RJGjEs,914 +django/contrib/sessions/locale/io/LC_MESSAGES/django.mo,sha256=_rqAY6reegqmxmWc-pW8_kDaG9zflZuD-PGOVFsjRHo,683 +django/contrib/sessions/locale/io/LC_MESSAGES/django.po,sha256=tbKMxGuB6mh_m0ex9rO9KkTy6qyuRW2ERrQsGwmPiaw,840 +django/contrib/sessions/locale/is/LC_MESSAGES/django.mo,sha256=3QeMl-MCnBie9Sc_aQ1I7BrBhkbuArpoSJP95UEs4lg,706 +django/contrib/sessions/locale/is/LC_MESSAGES/django.po,sha256=LADIFJv8L5vgDJxiQUmKPSN64zzzrIKImh8wpLBEVWQ,853 +django/contrib/sessions/locale/it/LC_MESSAGES/django.mo,sha256=qTY3O-0FbbpZ5-BR5xOJWP0rlnIkBZf-oSawW_YJWlk,726 +django/contrib/sessions/locale/it/LC_MESSAGES/django.po,sha256=hEv0iTGLuUvEBk-lF-w7a9P3ifC0-eiodNtuSc7cXhg,869 +django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo,sha256=hbv9FzWzXRIGRh_Kf_FLQB34xfmPU_9RQKn9u1kJqGU,757 +django/contrib/sessions/locale/ja/LC_MESSAGES/django.po,sha256=ppGx5ekOWGgDF3vzyrWsqnFUZ-sVZZhiOhvAzl_8v54,920 +django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo,sha256=VZ-ysrDbea_-tMV-1xtlTeW62IAy2RWR94V3Y1iSh4U,803 +django/contrib/sessions/locale/ka/LC_MESSAGES/django.po,sha256=MDOG7BAO8Ez75CfgERCq1zA3syJbvQKpc4wBVlryfqQ,950 +django/contrib/sessions/locale/kab/LC_MESSAGES/django.mo,sha256=W_yE0NDPJrVznA2Qb89VuprJNwyxSg59ovvjkQe6mAs,743 +django/contrib/sessions/locale/kab/LC_MESSAGES/django.po,sha256=FJeEuv4P3NT_PpWHEUsQVSWXu65nYkJ6Z2AlbSKb0ZA,821 +django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo,sha256=FROGz_MuIhsIU5_-EYV38cHnRZrc3-OxxkBeK0ax9Rk,810 +django/contrib/sessions/locale/kk/LC_MESSAGES/django.po,sha256=l5gu1XfvRMNhCHBl-NTGoUHWa0nRSxqSDt0zljpr7Kg,1024 +django/contrib/sessions/locale/km/LC_MESSAGES/django.mo,sha256=VOuKsIG2DEeCA5JdheuMIeJlpmAhKrI6lD4KWYqIIPk,929 +django/contrib/sessions/locale/km/LC_MESSAGES/django.po,sha256=09i6Nd_rUK7UqFpJ70LMXTR6xS0NuGETRLe0CopMVBk,1073 +django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo,sha256=X5svX5_r3xZUy4OjUuo2gItc5PIOSjZOvE5IZwnM6Io,814 +django/contrib/sessions/locale/kn/LC_MESSAGES/django.po,sha256=Rq-I2veQe5l7Q7HG9pRY_mKeNcxhSRDgqphKbuNpoNc,961 +django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo,sha256=EUyVQYGtiFJg01mP30a0iOqBYHvpzHAcGTZM28Ubs5Q,700 +django/contrib/sessions/locale/ko/LC_MESSAGES/django.po,sha256=PjntvSzRz_Aekj9VFhGsP5yO6rAsxTMzwFj58JqToIU,855 +django/contrib/sessions/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 +django/contrib/sessions/locale/lb/LC_MESSAGES/django.po,sha256=3igeAnQjDg6D7ItBkQQhyBoFJOZlBxT7NoZiExwD-Fo,749 +django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo,sha256=L9w8-qxlDlCqR_2P0PZegfhok_I61n0mJ1koJxzufy4,786 +django/contrib/sessions/locale/lt/LC_MESSAGES/django.po,sha256=7e5BmXuaHHgGX5W1eC6wIH2QyMTNOg4JZjkZM0i-jTc,952 +django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo,sha256=exEzDUNwNS0GLsUkKPu_SfqBxU7T6VRA_T2schIQZ88,753 +django/contrib/sessions/locale/lv/LC_MESSAGES/django.po,sha256=fBgQEbsGg1ECVm1PFDrS2sfKs2eqmsqrSYzx9ELotNQ,909 +django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo,sha256=4oTWp8-qzUQBiqG32hNieABgT3O17q2C4iEhcFtAxLA,816 +django/contrib/sessions/locale/mk/LC_MESSAGES/django.po,sha256=afApb5YRhPXUWR8yF_TTym73u0ov7lWiwRda1-uNiLY,988 +django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo,sha256=P1z831CbjKP38Sd_-d6_1P7V8fFXOGS6pyznw_x7dhg,780 +django/contrib/sessions/locale/ml/LC_MESSAGES/django.po,sha256=eTDbMq3x_kk7YkSzVLYk9szi1D3EwDwqeSnmuOXVxyY,927 +django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo,sha256=NgVteIZT90EJ3TJCQFzMHfxeZ5m9IGcGnMYd5SaMnT4,769 +django/contrib/sessions/locale/mn/LC_MESSAGES/django.po,sha256=PmEcp36DnnvGScoVjc6GtRK9XIxnXHnHaD6ZflOIXP8,972 +django/contrib/sessions/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 +django/contrib/sessions/locale/mr/LC_MESSAGES/django.po,sha256=FQRdZ-qIDuvTCrwbnWfxoxNi8rywLSebcNbxGvr-hb0,743 +django/contrib/sessions/locale/my/LC_MESSAGES/django.mo,sha256=8zzzyfJYok969YuAwDUaa6YhxaSi3wcXy3HRNXDb_70,872 +django/contrib/sessions/locale/my/LC_MESSAGES/django.po,sha256=mfs0zRBI0tugyyEfXBZzZ_FMIohydq6EYPZGra678pw,997 +django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo,sha256=hfJ1NCFgcAAtUvNEpaZ9b31PyidHxDGicifUWANIbM8,717 +django/contrib/sessions/locale/nb/LC_MESSAGES/django.po,sha256=yXr6oYuiu01oELdQKuztQFWz8x5C2zS5OzEfU9MHJsU,908 +django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo,sha256=slFgMrqGVtLRHdGorLGPpB09SM92_WnbnRR0rlpNlPQ,802 +django/contrib/sessions/locale/ne/LC_MESSAGES/django.po,sha256=1vyoiGnnaB8f9SFz8PGfzpw6V_NoL78DQwjjnB6fS98,978 +django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo,sha256=X-ZuB8Zn9c5saUvUf8gj9R8gyrQuKUyUDVfs_0IvCY0,733 +django/contrib/sessions/locale/nl/LC_MESSAGES/django.po,sha256=smRr-QPGm6h6hdXxghggWES8b2NnL7yDQ07coUypa8g,909 +django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo,sha256=042gOyJuXb51nG7gxI_rYst9QWuB3thtAeevKpDLFVQ,695 +django/contrib/sessions/locale/nn/LC_MESSAGES/django.po,sha256=j2kDL1vDsHoBX_ky6_S0tWxaqFst6v7OLqqlt6N2ECI,842 +django/contrib/sessions/locale/os/LC_MESSAGES/django.mo,sha256=xVux1Ag45Jo9HQBbkrRzcWrNjqP09nMQl16jIh0YVlo,732 +django/contrib/sessions/locale/os/LC_MESSAGES/django.po,sha256=1hG5Vsz2a2yW05_Z9cTNrBKtK9VRPZuQdx4KJ_0n98o,892 +django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo,sha256=qEx4r_ONwXK1-qYD5uxxXEQPqK5I6rf38QZoUSm7UVA,771 +django/contrib/sessions/locale/pa/LC_MESSAGES/django.po,sha256=M7fmVGP8DtZGEuTV3iJhuWWqILVUTDZvUey_mrP4_fM,918 +django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo,sha256=55aWzhu56-g9b84xx-zfBDIDd_pH82iLu7Nx87HcCRU,869 +django/contrib/sessions/locale/pl/LC_MESSAGES/django.po,sha256=C_MJBB-vwTZbx-t4-mzun-RxHhdOVv04b6xrWdnTv8E,1084 +django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo,sha256=dlJF7hF4GjLmQPdAJhtf-FCKX26XsOmZlChOcxxIqPk,738 +django/contrib/sessions/locale/pt/LC_MESSAGES/django.po,sha256=cOycrw3HCHjSYBadpalyrg5LdRTlqZCTyMh93GOQ8O0,896 +django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo,sha256=XHNF5D8oXIia3e3LYwxd46a2JOgDc_ykvc8yuo21fT0,757 +django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po,sha256=K_zxKaUKngWPFpvHgXOcymJEsiONSw-OrVrroRXmUUk,924 +django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo,sha256=WR9I9Gum_pq7Qg2Gzhf-zAv43OwR_uDtsbhtx4Ta5gE,776 +django/contrib/sessions/locale/ro/LC_MESSAGES/django.po,sha256=fEgVxL_0Llnjspu9EsXBf8AVL0DGdfF7NgV88G7WN1E,987 +django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo,sha256=n-8vXR5spEbdfyeWOYWC_6kBbAppNoRrWYgqKFY6gJA,913 +django/contrib/sessions/locale/ru/LC_MESSAGES/django.po,sha256=sNqNGdoof6eXzFlh4YIp1O54MdDOAFDjD3GvAFsNP8k,1101 +django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo,sha256=Yntm624Wt410RwuNPU1c-WwQoyrRrBs69VlKMlNUHeQ,766 +django/contrib/sessions/locale/sk/LC_MESSAGES/django.po,sha256=JIvzoKw_r4jZXWEaHvIYAZDAzrEkfpr0WM9dNfUlzBE,924 +django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo,sha256=EE6mB8BiYRyAxK6qzurRWcaYVs96FO_4rERYQdtIt3k,770 +django/contrib/sessions/locale/sl/LC_MESSAGES/django.po,sha256=KTjBWyvaNCHbpV9K6vbnavwxxXqf2DlIqVPv7MVFcO8,928 +django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo,sha256=3mGqKLgno-t7B3jyQpSaIJfDVAxbfOSDr5G9OUE7fqc,724 +django/contrib/sessions/locale/sq/LC_MESSAGES/django.po,sha256=9pzp7834LQKafe5fJzC4OKsAd6XfgtEQl6K6hVLaBQM,844 +django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo,sha256=PcSKdLH8nNGRHXNEjFJ7VQ1eu9eEsVWdkJU-TiDxjZE,812 +django/contrib/sessions/locale/sr/LC_MESSAGES/django.po,sha256=Kp5NsKVESKMcb4LHVa3DmKaktexzuE3Bsv5TmELbiEI,962 +django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=dWZsW7FyUMuFszdDvWNALmijsEwI5s8BrNrDz36KmJ4,787 +django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po,sha256=HZQeob-g8_DNCmn7jzDPzM4MP4e3oncK2nF3Kdace84,937 +django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo,sha256=SGbr0K_5iAMA22MfseAldMDgLSEBrI56pCtyV8tMAPc,707 +django/contrib/sessions/locale/sv/LC_MESSAGES/django.po,sha256=vraY3915wBYGeYu9Ro0-TlBeLWqGZP1fbckLv8y47Ys,853 +django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo,sha256=Edhqp8yuBnrGtJqPO7jxobeXN4uU5wKSLrOsFO1F23k,743 +django/contrib/sessions/locale/sw/LC_MESSAGES/django.po,sha256=iY4rN4T-AA2FBQA7DiWWFvrclqKiDYQefqwwVw61-f8,858 +django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo,sha256=qLIThhFQbJKc1_UVr7wVIm1rJfK2rO5m84BCB_oKq7s,801 +django/contrib/sessions/locale/ta/LC_MESSAGES/django.po,sha256=bYqtYf9XgP9IKKFJXh0u64JhRhDvPPUliI1J-NeRpKE,945 +django/contrib/sessions/locale/te/LC_MESSAGES/django.mo,sha256=kteZeivEckt4AmAeKgmgouMQo1qqSQrI8M42B16gMnQ,786 +django/contrib/sessions/locale/te/LC_MESSAGES/django.po,sha256=dQgiNS52RHrL6bV9CEO7Jk9lk3YUQrUBDCg_bP2OSZc,980 +django/contrib/sessions/locale/th/LC_MESSAGES/django.mo,sha256=xJE3u78wMj916Y4aJoeqduxa1L1QqiWzgNTtz1FXWJQ,757 +django/contrib/sessions/locale/th/LC_MESSAGES/django.po,sha256=Ks4o9M9Oo7E_A3bFnthS4RkI7Ht0ijPFkMCalItdj3w,901 +django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo,sha256=H-DMP3N3AHZj1Q9aYeBOMA10nN1CIuJkUEY7QAy1b3g,726 +django/contrib/sessions/locale/tr/LC_MESSAGES/django.po,sha256=XYKo0_P5xitYehvjMzEw2MTp_Nza-cIXEECV3dA6BmY,863 +django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo,sha256=Q-FGu_ljTsxXO_EWu7zCzGwoqFXkeoTzWSlvx85VLGc,806 +django/contrib/sessions/locale/tt/LC_MESSAGES/django.po,sha256=UC85dFs_1836noZTuZEzPqAjQMFfSvj7oGmEWOGcfCA,962 +django/contrib/sessions/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 +django/contrib/sessions/locale/udm/LC_MESSAGES/django.po,sha256=CPml2Fn9Ax_qO5brCFDLPBoTiNdvsvJb1btQ0COwUfY,737 +django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo,sha256=jzNrLuFghQMCHNRQ0ihnKMCicgear0yWiTOLnvdPszw,841 +django/contrib/sessions/locale/uk/LC_MESSAGES/django.po,sha256=GM9kNL1VoFSRfbHB5KiivIbp-nJl1aZ69wL2xszNqlM,1017 +django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo,sha256=FkGIiHegr8HR8zjVyJ9TTW1T9WYtAL5Mg77nRKnKqWk,729 +django/contrib/sessions/locale/ur/LC_MESSAGES/django.po,sha256=qR4QEBTP6CH09XFCzsPSPg2Dv0LqzbRV_I67HO2OUwk,879 +django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo,sha256=KriTpT-Hgr10DMnY5Bmbd4isxmSFLmav8vg2tuL2Bb8,679 +django/contrib/sessions/locale/vi/LC_MESSAGES/django.po,sha256=M7S46Q0Q961ykz_5FCAN8SXQ54w8tp4rZeZpy6bPtXs,909 +django/contrib/sessions/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=zsbhIMocgB8Yn1XEBxbIIbBh8tLifvvYNlhe5U61ch8,722 +django/contrib/sessions/locale/zh_Hans/LC_MESSAGES/django.po,sha256=tPshgXjEv6pME4N082ztamJhd5whHB2_IV_egdP-LlQ,889 +django/contrib/sessions/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=WZzfpFKZ41Pu8Q9SuhGu3hXwp4eiq8Dt8vdiQfxvF9M,733 +django/contrib/sessions/locale/zh_Hant/LC_MESSAGES/django.po,sha256=6IRDQu6-PAYh6SyEIcKdhuR172lX0buY8qqsU0QXlYU,898 +django/contrib/sessions/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/sessions/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/sessions/management/commands/clearsessions.py,sha256=yDcSmK65l5H1-2hiHhDlN0zivQrxm_ihNKLKt6MmRiQ,650 +django/contrib/sessions/migrations/0001_initial.py,sha256=F7fzk2d9hDPjUwx2w-lXdZcFG1h4HyHnkfcJ6aK7C-0,955 +django/contrib/sessions/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/sitemaps/__init__.py,sha256=4pL-xZ3nNPbczruFZqnL8xTH5KrGL_C1AgdfBMfWfwY,5632 +django/contrib/sitemaps/apps.py,sha256=ktY9PcWsmv5TOlvEdG6IL8ZBbGMtZRpO24j5g7DGilU,195 +django/contrib/sitemaps/views.py,sha256=KP-cCkD4VGFbd4ZavWK79gAkZa83APeRgTx-eouny4M,3516 +django/contrib/sitemaps/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/sitemaps/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/sitemaps/management/commands/ping_google.py,sha256=IzUg9OZa2e3AjwX4bCFEldXzaLsT4O4WnbUgeUKe6qg,412 +django/contrib/sitemaps/templates/sitemap.xml,sha256=KTiksPVpo22dkRjjavoJtckzo-Rin7aZ_QgbC42Y8O0,479 +django/contrib/sitemaps/templates/sitemap_index.xml,sha256=VqDmRlWMx9kC6taiBoi1h9JVspV54ou3nFjE8Nfofl8,209 +django/contrib/sites/__init__.py,sha256=qIj6PsbyT_DVkvjrASve-9F8GeoCKv6sO0-jlEhRJv4,61 +django/contrib/sites/admin.py,sha256=ClzCRn4fUPWO1dNlEWEPjSDInnK87XbNRmadvjYs1go,214 +django/contrib/sites/apps.py,sha256=xRYkn8bbxOK7rSsDiLHPkxUqAN4iscVMvwKIjiwdj94,365 +django/contrib/sites/management.py,sha256=K6cgSOdN4ins_TiWjUIkGFwuibJmshTlFonqYT2QKrw,1597 +django/contrib/sites/managers.py,sha256=OJfKicEOuqcD0B7NuH4scszrknQZ-X1Nf1PL0XgWqLM,1929 +django/contrib/sites/middleware.py,sha256=qYcVHsHOg0VxQNS4saoLHkdF503nJR-D7Z01vE0SvUM,309 +django/contrib/sites/models.py,sha256=gj4u6mr8lvOlBJNaF3pSqAT6tk4YnktmaKlpBuDNE0A,3729 +django/contrib/sites/requests.py,sha256=74RhONzbRqEGoNXLu4T7ZjAFKYvCLmY_XQWnGRz6jdw,640 +django/contrib/sites/shortcuts.py,sha256=RZr1iT8zY_z8o52PIWEBFCQL03pE28pp6708LveS240,581 +django/contrib/sites/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 +django/contrib/sites/locale/af/LC_MESSAGES/django.po,sha256=WNd-q5lgjiRfXAGb7iv5iUkCnS_RcI098GNjn4MezDc,775 +django/contrib/sites/locale/ar/LC_MESSAGES/django.mo,sha256=kLoytp2jvhWn6p1c8kNVua2sYAMnrpS4xnbluHD22Vs,947 +django/contrib/sites/locale/ar/LC_MESSAGES/django.po,sha256=HYA3pA29GktzXBP-soUEn9VP2vkZuhVIXVA8TNPCHCs,1135 +django/contrib/sites/locale/ast/LC_MESSAGES/django.mo,sha256=eEvaeiGnZFBPGzKLlRz4M9AHemgJVAb-yNpbpxRqtd0,774 +django/contrib/sites/locale/ast/LC_MESSAGES/django.po,sha256=huBohKzLpdaJRFMFXXSDhDCUOqVqyWXfxb8_lLOkUd0,915 +django/contrib/sites/locale/az/LC_MESSAGES/django.mo,sha256=TOdJMsIhxYvxT1-ZFiPD5JDhA9fBBpu84tpiYhv7tgE,608 +django/contrib/sites/locale/az/LC_MESSAGES/django.po,sha256=M5mYWSyOohsNTtC_BWlDbw4PTsQWdEnbirf_4S0zInw,835 +django/contrib/sites/locale/be/LC_MESSAGES/django.mo,sha256=b-0febeZF-EX53E--W-G3lkpiozt7En6yfDIJYnNrQw,1024 +django/contrib/sites/locale/be/LC_MESSAGES/django.po,sha256=W5FhVJKcmd3WHl2Lpd5NJUsc7_sE_1Pipk3CVPoGPa4,1152 +django/contrib/sites/locale/bg/LC_MESSAGES/django.mo,sha256=a2R52umIQIhnzFaFYSRhQ6nBlywE8RGMj2FUOFmyb0A,904 +django/contrib/sites/locale/bg/LC_MESSAGES/django.po,sha256=awB8RMS-qByhNB6eH2f0Oyxb3SH8waLhrZ--rokGfaI,1118 +django/contrib/sites/locale/bn/LC_MESSAGES/django.mo,sha256=cI3a9_L-OC7gtdyRNaGX7A5w0Za0M4ERnYB7rSNkuRU,925 +django/contrib/sites/locale/bn/LC_MESSAGES/django.po,sha256=8ZxYF16bgtTZSZRZFok6IJxUV02vIztoVx2qXqwO8NM,1090 +django/contrib/sites/locale/br/LC_MESSAGES/django.mo,sha256=YMRHUamxztFILZxGTecQvUitRUcMnvLdqCoARq-NISM,628 +django/contrib/sites/locale/br/LC_MESSAGES/django.po,sha256=S0kQZf-Z5XrqJEPc03kHB1XrmQcjYboEq7KeEegaoCc,848 +django/contrib/sites/locale/bs/LC_MESSAGES/django.mo,sha256=bDeqQNme586LnQRQdvOWaLGZssjOoECef3vMq_OCXno,692 +django/contrib/sites/locale/bs/LC_MESSAGES/django.po,sha256=xRTWInDNiLxikjwsjgW_pYjhy24zOro90-909ns9fig,923 +django/contrib/sites/locale/ca/LC_MESSAGES/django.mo,sha256=lEUuQEpgDY3bVWzRONrPzYlojRoNduT16_oYDkkbdfk,791 +django/contrib/sites/locale/ca/LC_MESSAGES/django.po,sha256=aORAoVn69iG1ynmEfnkBzBO-UZOzzbkPVOU-ZvfMtZg,996 +django/contrib/sites/locale/cs/LC_MESSAGES/django.mo,sha256=1T_5VDHXNjFLGDhvUFYEx6LNM-7jENMvSjUzcA8njeQ,815 +django/contrib/sites/locale/cs/LC_MESSAGES/django.po,sha256=UCoVCD6JhUxB2IgegTnFQqd3_yPBkZ-5HJhif4v5Awg,979 +django/contrib/sites/locale/cy/LC_MESSAGES/django.mo,sha256=70pOie0K__hkmM9oBUaQfVwHjK8Cl48E26kRQL2mtew,835 +django/contrib/sites/locale/cy/LC_MESSAGES/django.po,sha256=FAZrVc72x-4R1A-1qYOBwADoXngC_F6FO8nRjr5-Z6g,1013 +django/contrib/sites/locale/da/LC_MESSAGES/django.mo,sha256=_vLc8KTeuNCWqBAAajbYl9KSnn5tbrBC8unB0gwdsCw,794 +django/contrib/sites/locale/da/LC_MESSAGES/django.po,sha256=Po1Z6u52CFCyz9hLfK009pMbZzZgHrBse0ViX8wCYm8,957 +django/contrib/sites/locale/de/LC_MESSAGES/django.mo,sha256=5Q6X0_bDQ1ZRpkTy7UpPNzrhmQsB9Q0P1agB7koRyzs,792 +django/contrib/sites/locale/de/LC_MESSAGES/django.po,sha256=aD0wBinqtDUPvBbwtHrLEhFdoVRx1nOh17cJFuWhN3U,980 +django/contrib/sites/locale/dsb/LC_MESSAGES/django.mo,sha256=pPpWYsYp81MTrqCsGF0QnGktZNIll70bdBwSkuVE8go,868 +django/contrib/sites/locale/dsb/LC_MESSAGES/django.po,sha256=IA3G8AKJls20gzfxnrfPzivMNpL8A0zBQBg7OyzrP6g,992 +django/contrib/sites/locale/el/LC_MESSAGES/django.mo,sha256=G9o1zLGysUePGzZRicQ2aIIrc2UXMLTQmdpbrUMfWBU,878 +django/contrib/sites/locale/el/LC_MESSAGES/django.po,sha256=RBi_D-_znYuV6LXfTlSOf1Mvuyl96fIyEoiZ-lgeyWs,1133 +django/contrib/sites/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 +django/contrib/sites/locale/en/LC_MESSAGES/django.po,sha256=tSjfrNZ_FqLHsXjm5NuTyo5-JpdlPLsPZjFqF2APhy8,817 +django/contrib/sites/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 +django/contrib/sites/locale/en_AU/LC_MESSAGES/django.po,sha256=7V9dBdbfHa9aGAfs9nw6ivSxX30CqaYc1ptfplTAPJc,791 +django/contrib/sites/locale/en_GB/LC_MESSAGES/django.mo,sha256=FbSh7msJdrHsXr0EtDMuODFzSANG_HJ3iBlW8ePpqFs,639 +django/contrib/sites/locale/en_GB/LC_MESSAGES/django.po,sha256=Ib-DIuTWlrN3kg99kLCuqWJVtt1NWaFD4UbDFK6d4KY,862 +django/contrib/sites/locale/eo/LC_MESSAGES/django.mo,sha256=N4KkH12OHxic3pp1okeBhpfDx8XxxpULk3UC219vjWU,792 +django/contrib/sites/locale/eo/LC_MESSAGES/django.po,sha256=ymXSJaFJWGBO903ObqR-ows-p4T3KyUplc_p_3r1uk8,1043 +django/contrib/sites/locale/es/LC_MESSAGES/django.mo,sha256=qLN1uoCdslxdYWgdjgSBi7szllP-mQZtHbuZnNOthsQ,804 +django/contrib/sites/locale/es/LC_MESSAGES/django.po,sha256=QClia2zY39269VSQzkQsLwwukthN6u2JBsjbLNxA1VQ,1066 +django/contrib/sites/locale/es_AR/LC_MESSAGES/django.mo,sha256=sMZ_BBcxMK440lFG-dT6ekbGMIfLDvNHGL-sV6bUycU,817 +django/contrib/sites/locale/es_AR/LC_MESSAGES/django.po,sha256=RwyNylXbyxdSXn6qRDXd99-GaEPlmr6TicHTUW0boaQ,969 +django/contrib/sites/locale/es_CO/LC_MESSAGES/django.mo,sha256=a4Xje2M26wyIx6Wlg6puHo_OXjiDEy7b0FquT9gbThA,825 +django/contrib/sites/locale/es_CO/LC_MESSAGES/django.po,sha256=9bnRhVD099JzkheO80l65dufjuawsj9aSFgFu5A-lnM,949 +django/contrib/sites/locale/es_MX/LC_MESSAGES/django.mo,sha256=AtGta5jBL9XNBvfSpsCcnDtDhvcb89ALl4hNjSPxibM,809 +django/contrib/sites/locale/es_MX/LC_MESSAGES/django.po,sha256=TnkpQp-7swH-x9cytUJe-QJRd2n_pYMVo0ltDw9Pu8o,991 +django/contrib/sites/locale/es_VE/LC_MESSAGES/django.mo,sha256=59fZBDut-htCj38ZUoqPjhXJPjZBz-xpU9__QFr3kLs,486 +django/contrib/sites/locale/es_VE/LC_MESSAGES/django.po,sha256=8PWXy2L1l67wDIi98Q45j7OpVITr0Lt4zwitAnB-d_o,791 +django/contrib/sites/locale/et/LC_MESSAGES/django.mo,sha256=I2E-49UQsG-F26OeAfnKlfUdA3YCkUSV8ffA-GMSkE0,788 +django/contrib/sites/locale/et/LC_MESSAGES/django.po,sha256=mEfD6EyQ15PPivb5FTlkabt3Lo_XGtomI9XzHrrh34Y,992 +django/contrib/sites/locale/eu/LC_MESSAGES/django.mo,sha256=1HTAFI3DvTAflLJsN7NVtSd4XOTlfoeLGFyYCOX69Ec,807 +django/contrib/sites/locale/eu/LC_MESSAGES/django.po,sha256=NWxdE5-mF6Ak4nPRpCFEgAMIsVDe9YBEZl81v9kEuX8,1023 +django/contrib/sites/locale/fa/LC_MESSAGES/django.mo,sha256=odtsOpZ6noNqwDb18HDc2e6nz3NMsa-wrTN-9dk7d9w,872 +django/contrib/sites/locale/fa/LC_MESSAGES/django.po,sha256=uL2I9XjqIxqTUKf6buewtm9rwflM23pxspFMs7w4SPM,1088 +django/contrib/sites/locale/fi/LC_MESSAGES/django.mo,sha256=I5DUeLk1ChUC32q5uzriABCLLJpJKNbEK4BfqylPQzg,786 +django/contrib/sites/locale/fi/LC_MESSAGES/django.po,sha256=LH2sFIKM3YHPoz9zIu10z1DFv1svXphBdOhXNy4a17s,929 +django/contrib/sites/locale/fr/LC_MESSAGES/django.mo,sha256=lQe7mHXWDoQGSEZyK0TsPOwvnR-rjAzt8-FeLTCeXyU,797 +django/contrib/sites/locale/fr/LC_MESSAGES/django.po,sha256=u24rHDJ47AoBgcmBwI1tIescAgbjFxov6y906H_uhK0,999 +django/contrib/sites/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 +django/contrib/sites/locale/fy/LC_MESSAGES/django.po,sha256=Yh6Lw0QI2Me0zCtlyXraFLjERKqklB6-IJLDTjH_jTs,781 +django/contrib/sites/locale/ga/LC_MESSAGES/django.mo,sha256=D-SyqmEcQP_7oIwiRG7PCdoWqFsy55cnmXcf2hx53vU,668 +django/contrib/sites/locale/ga/LC_MESSAGES/django.po,sha256=foWIcJ5jB0QCWmRbYiAju_05v4-jAq0yHC7wjdzhKD0,896 +django/contrib/sites/locale/gd/LC_MESSAGES/django.mo,sha256=df4XIGGD6FIyMUXsb-SoSqNfBFAsRXf4qYtolh_C964,858 +django/contrib/sites/locale/gd/LC_MESSAGES/django.po,sha256=NPKp7A5-y-MR7r8r4WqtcVQJEHCIOP5mLTd0cIfUsug,957 +django/contrib/sites/locale/gl/LC_MESSAGES/django.mo,sha256=QUJdJV71VT-4iVQ5mUAeyszTVhD2LlmmPQv0WpPWttU,742 +django/contrib/sites/locale/gl/LC_MESSAGES/django.po,sha256=cLcejsFyoFk0fRX9fAcl9owHoxiD593QZZeZTfObBVw,940 +django/contrib/sites/locale/he/LC_MESSAGES/django.mo,sha256=L3bganfG4gHqp2WXGh4rfWmmbaIxHaGc7-ypAqjSL_E,820 +django/contrib/sites/locale/he/LC_MESSAGES/django.po,sha256=nT0Gu0iWpFV7ZJ6SAdcogZccCz3CV-R5rgqwEl5NA6c,985 +django/contrib/sites/locale/hi/LC_MESSAGES/django.mo,sha256=J4oIS1vJnCvdCCUD4tlTUVyTe4Xn0gKcWedfhH4C0t0,665 +django/contrib/sites/locale/hi/LC_MESSAGES/django.po,sha256=INBrm37jL3okBHuzX8MSN1vMptj77a-4kwQkAyt8w_8,890 +django/contrib/sites/locale/hr/LC_MESSAGES/django.mo,sha256=KjDUhEaOuYSMexcURu2UgfkatN2rrUcAbCUbcpVSInk,876 +django/contrib/sites/locale/hr/LC_MESSAGES/django.po,sha256=-nFMFkVuDoKYDFV_zdNULOqQlnqtiCG57aakN5hqlmg,1055 +django/contrib/sites/locale/hsb/LC_MESSAGES/django.mo,sha256=RyHVb7u9aRn5BXmWzR1gApbZlOioPDJ59ufR1Oo3e8Y,863 +django/contrib/sites/locale/hsb/LC_MESSAGES/django.po,sha256=Aq54y5Gb14bIt28oDDrFltnSOk31Z2YalwaJMDMXfWc,987 +django/contrib/sites/locale/hu/LC_MESSAGES/django.mo,sha256=P--LN84U2BeZAvRVR-OiWl4R02cTTBi2o8XR2yHIwIU,796 +django/contrib/sites/locale/hu/LC_MESSAGES/django.po,sha256=b0VhyFdNaZZR5MH1vFsLL69FmICN8Dz-sTRk0PdK49E,953 +django/contrib/sites/locale/hy/LC_MESSAGES/django.mo,sha256=Hs9XwRHRkHicLWt_NvWvr7nMocmY-Kc8XphhVSAMQRc,906 +django/contrib/sites/locale/hy/LC_MESSAGES/django.po,sha256=MU4hXXGfjXKfYcjxDYzFfsEUIelz5ZzyQLkeSrUQKa0,1049 +django/contrib/sites/locale/ia/LC_MESSAGES/django.mo,sha256=gRMs-W5EiY26gqzwnDXEMbeb1vs0bYZ2DC2a9VCciew,809 +django/contrib/sites/locale/ia/LC_MESSAGES/django.po,sha256=HXZzn9ACIqfR2YoyvpK2FjZ7QuEq_RVZ1kSC4nxMgeg,934 +django/contrib/sites/locale/id/LC_MESSAGES/django.mo,sha256=__2E_2TmVUcbf1ygxtS1lHvkhv8L0mdTAtJpBsdH24Y,791 +django/contrib/sites/locale/id/LC_MESSAGES/django.po,sha256=e5teAHiMjLR8RDlg8q99qtW-K81ltcIiBIdb1MZw2sE,1000 +django/contrib/sites/locale/io/LC_MESSAGES/django.mo,sha256=W-NP0b-zR1oWUZnHZ6fPu5AC2Q6o7nUNoxssgeguUBo,760 +django/contrib/sites/locale/io/LC_MESSAGES/django.po,sha256=G4GUUz3rxoBjWTs-j5RFCvv52AEHiwrCBwom5hYeBSE,914 +django/contrib/sites/locale/is/LC_MESSAGES/django.mo,sha256=lkJgTzDjh5PNfIJpOS2DxKmwVUs9Sl5XwFHv4YdCB30,812 +django/contrib/sites/locale/is/LC_MESSAGES/django.po,sha256=1DVgAcHSZVyDd5xn483oqICIG4ooyZY8ko7A3aDogKM,976 +django/contrib/sites/locale/it/LC_MESSAGES/django.mo,sha256=6NQjjtDMudnAgnDCkemOXinzX0J-eAE5gSq1F8kjusY,795 +django/contrib/sites/locale/it/LC_MESSAGES/django.po,sha256=zxavlLMmp1t1rCDsgrw12kVgxiK5EyR_mOalSu8-ws8,984 +django/contrib/sites/locale/ja/LC_MESSAGES/django.mo,sha256=RNuCS6wv8uK5TmXkSH_7SjsbUFkf24spZfTsvfoTKro,814 +django/contrib/sites/locale/ja/LC_MESSAGES/django.po,sha256=e-cj92VOVc5ycIY6NwyFh5bO7Q9q5vp5CG4dOzd_eWQ,982 +django/contrib/sites/locale/ka/LC_MESSAGES/django.mo,sha256=m8GTqr9j0ijn0YJhvnsYwlk5oYcASKbHg_5hLqZ91TI,993 +django/contrib/sites/locale/ka/LC_MESSAGES/django.po,sha256=BCsMvNq-3Pi9-VnUvpUQaGx6pbCgI8rCcIHUA8VL4as,1155 +django/contrib/sites/locale/kab/LC_MESSAGES/django.mo,sha256=Utdj5gH5YPeaYMjeMzF-vjqYvYTCipre2qCBkEJSc-Y,808 +django/contrib/sites/locale/kab/LC_MESSAGES/django.po,sha256=d78Z-YanYZkyP5tpasj8oAa5RimVEmce6dlq5vDSscA,886 +django/contrib/sites/locale/kk/LC_MESSAGES/django.mo,sha256=T2dTZ83vBRfQb2dRaKOrhvO00BHQu_2bu0O0k7RsvGA,895 +django/contrib/sites/locale/kk/LC_MESSAGES/django.po,sha256=9ixNnoE3BxfBj4Xza0FM5qInd0uiNnAlXgDb_KaICn4,1057 +django/contrib/sites/locale/km/LC_MESSAGES/django.mo,sha256=Q7pn5E4qN957j20-iCHgrfI-p8sm3Tc8O2DWeuH0By8,701 +django/contrib/sites/locale/km/LC_MESSAGES/django.po,sha256=TOs76vlCMYOZrdHgXPWZhQH1kTBQTpzsDJ8N4kbJQ7E,926 +django/contrib/sites/locale/kn/LC_MESSAGES/django.mo,sha256=fikclDn-FKU_t9lZeBtQciisS3Kqv4tJHtu923OXLJI,676 +django/contrib/sites/locale/kn/LC_MESSAGES/django.po,sha256=p_P7L0KAUoKNLH8vuHV4_2mTWK1m1tjep5XgRqbWd2k,904 +django/contrib/sites/locale/ko/LC_MESSAGES/django.mo,sha256=wlfoWG-vmMSCipUJVVC0Y_W7QbGNNE-oEnVwl_6-AmY,807 +django/contrib/sites/locale/ko/LC_MESSAGES/django.po,sha256=TENAk9obGUxFwMnJQj_V9sZxEKJj4DyWMuGpx3Ft_pM,1049 +django/contrib/sites/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 +django/contrib/sites/locale/lb/LC_MESSAGES/django.po,sha256=1yRdK9Zyh7kcWG7wUexuF9-zxEaKLS2gG3ggVOHbRJ8,779 +django/contrib/sites/locale/lt/LC_MESSAGES/django.mo,sha256=bK6PJtd7DaOgDukkzuqos5ktgdjSF_ffL9IJTQY839s,869 +django/contrib/sites/locale/lt/LC_MESSAGES/django.po,sha256=9q7QfFf_IR2A1Cr_9aLVIWf-McR0LivtRC284w2_bo0,1124 +django/contrib/sites/locale/lv/LC_MESSAGES/django.mo,sha256=t9bQiVqpAmXrq8QijN4Lh0n6EGUGQjnuH7hDcu21z4c,823 +django/contrib/sites/locale/lv/LC_MESSAGES/django.po,sha256=vMaEtXGosD3AcTomiuctbOpjLes8TRBnumLe8DC4yq4,1023 +django/contrib/sites/locale/mk/LC_MESSAGES/django.mo,sha256=_YXasRJRWjYmmiEWCrAoqnrKuHHPBG_v_EYTUe16Nfo,885 +django/contrib/sites/locale/mk/LC_MESSAGES/django.po,sha256=AgdIjiSpN0P5o5rr5Ie4sFhnmS5d4doB1ffk91lmOvY,1062 +django/contrib/sites/locale/ml/LC_MESSAGES/django.mo,sha256=A-_05uveKw1FGXzhxRh5VJ8j2lXXD6fwBFWXCDZ50Fs,708 +django/contrib/sites/locale/ml/LC_MESSAGES/django.po,sha256=_kDMypYyCURw-LiLp1Pfqc2kS6_5slPDXHRPGmdxbzM,936 +django/contrib/sites/locale/mn/LC_MESSAGES/django.mo,sha256=w2sqJRAe0wyz_IuCZ_Ocubs_VHL6wV1BcutWPz0dseQ,867 +django/contrib/sites/locale/mn/LC_MESSAGES/django.po,sha256=Zh_Eao0kLZsrQ8wkL1f-pRrsAtNJOspu45uStq5t8Mo,1127 +django/contrib/sites/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 +django/contrib/sites/locale/mr/LC_MESSAGES/django.po,sha256=pqnjF5oxvpMyjijy6JfI8qJbbbowZzE5tZF0DMYiCBs,773 +django/contrib/sites/locale/my/LC_MESSAGES/django.mo,sha256=jN59e9wRheZYx1A4t_BKc7Hx11J5LJg2wQRd21aQv08,961 +django/contrib/sites/locale/my/LC_MESSAGES/django.po,sha256=EhqYIW5-rX33YjsDsBwfiFb3BK6fZKVc3CRYeJpZX1E,1086 +django/contrib/sites/locale/nb/LC_MESSAGES/django.mo,sha256=AaiHGcmcciy5IMBPVAShcc1OQOETJvBCv7GYHMcIQMA,793 +django/contrib/sites/locale/nb/LC_MESSAGES/django.po,sha256=936zoN1sPSiiq7GuH01umrw8W6BtymYEU3bCfOQyfWE,1000 +django/contrib/sites/locale/ne/LC_MESSAGES/django.mo,sha256=wM13WrA4uMhfpU1GKFMcbVBh5LRB4v-v-t7t4AHqaU4,899 +django/contrib/sites/locale/ne/LC_MESSAGES/django.po,sha256=9_78nN66h6ioTnd0OO6YM8MHbqw8uoiaSAyn69aT8Ag,1021 +django/contrib/sites/locale/nl/LC_MESSAGES/django.mo,sha256=FDIRQORWGlTLABZ7384C48vf1U80aWbMNK82eBSlonc,788 +django/contrib/sites/locale/nl/LC_MESSAGES/django.po,sha256=s2qsDEhcEVxBsVjxQduYhej6dMosoPhdPeR3Drl2aXA,1005 +django/contrib/sites/locale/nn/LC_MESSAGES/django.mo,sha256=m1SUw5bhDUemD8yMGDxcWdhbUMtzZ9WXWXtV2AHIzBs,633 +django/contrib/sites/locale/nn/LC_MESSAGES/django.po,sha256=i8BQyewiU2ymkAkj12M2MJBVbCJPp8PB8_NcQiScaD4,861 +django/contrib/sites/locale/os/LC_MESSAGES/django.mo,sha256=Su06FkWMOPzBxoung3bEju_EnyAEAXROoe33imO65uQ,806 +django/contrib/sites/locale/os/LC_MESSAGES/django.po,sha256=4i4rX6aXDUKjq64T02iStqV2V2erUsSVnTivh2XtQeY,963 +django/contrib/sites/locale/pa/LC_MESSAGES/django.mo,sha256=tOHiisOtZrTyIFoo4Ipn_XFH9hhu-ubJLMdOML5ZUgk,684 +django/contrib/sites/locale/pa/LC_MESSAGES/django.po,sha256=ztGyuqvzxRfNjqDG0rMLCu_oQ8V3Dxdsx0WZoYUyNv8,912 +django/contrib/sites/locale/pl/LC_MESSAGES/django.mo,sha256=TbH30lyyQ2QpAxc5XJKWCBNV3WUl7wOL4a-BKkeyUdM,944 +django/contrib/sites/locale/pl/LC_MESSAGES/django.po,sha256=-kQ49UvXITMy1vjJoN_emuazV_EjNDQnZDERXWNoKvw,1181 +django/contrib/sites/locale/pt/LC_MESSAGES/django.mo,sha256=PrcFQ04lFJ7mIYThXbW6acmDigEFIoLAC0PYk5hfaJs,797 +django/contrib/sites/locale/pt/LC_MESSAGES/django.po,sha256=Aj8hYI9W5nk5uxKHj1oE-b9bxmmuoeXLKaJDPfI2x2o,993 +django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.mo,sha256=BsFfarOR6Qk67fB-tTWgGhuOReJSgjwJBkIzZsv28vo,824 +django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.po,sha256=jfvgelpWn2VQqYe2_CE39SLTsscCckvjuZo6dWII28c,1023 +django/contrib/sites/locale/ro/LC_MESSAGES/django.mo,sha256=oGsZw4_uYpaH6adMxnAuifJgHeZ_ytRZ4rFhiNfRQkQ,857 +django/contrib/sites/locale/ro/LC_MESSAGES/django.po,sha256=tWbWVbjFFELNzSXX4_5ltmzEeEJsY3pKwgEOjgV_W_8,1112 +django/contrib/sites/locale/ru/LC_MESSAGES/django.mo,sha256=bIZJWMpm2O5S6RC_2cfkrp5NXaTU2GWSsMr0wHVEmcw,1016 +django/contrib/sites/locale/ru/LC_MESSAGES/django.po,sha256=jHy5GR05ZSjLmAwaVNq3m0WdhO9GYxge3rDBziqesA8,1300 +django/contrib/sites/locale/sk/LC_MESSAGES/django.mo,sha256=-EYdm14ZjoR8bd7Rv2b5G7UJVSKmZa1ItLsdATR3-Cg,822 +django/contrib/sites/locale/sk/LC_MESSAGES/django.po,sha256=L2YRNq26DdT3OUFhw25ncZBgs232v6kSsAUTc0beIC8,1019 +django/contrib/sites/locale/sl/LC_MESSAGES/django.mo,sha256=JmkpTKJGWgnBM3CqOUriGvrDnvg2YWabIU2kbYAOM4s,845 +django/contrib/sites/locale/sl/LC_MESSAGES/django.po,sha256=qWrWrSz5r3UOVraX08ILt3TTmfyTDGKbJKbTlN9YImU,1059 +django/contrib/sites/locale/sq/LC_MESSAGES/django.mo,sha256=gVY4vWlvDvWI9mSlFfIWqHP4a_NNFt-0CFzStPRXuoQ,810 +django/contrib/sites/locale/sq/LC_MESSAGES/django.po,sha256=zg3ALcMNZErAS_xFxmtv6TmXZ0vxobX5AzCwOSRSwc8,930 +django/contrib/sites/locale/sr/LC_MESSAGES/django.mo,sha256=jFpsqetfcXxdEnY3fX-Jhxa2f0iSALLqptW6jzk0flc,724 +django/contrib/sites/locale/sr/LC_MESSAGES/django.po,sha256=ZJ5yq6aiVQhms2KE2SQlNjxyzTYZuN0MxNbFylzlfTQ,955 +django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=pK37c--H6ehAyUtViy5viEbJwVtnhF5Z2O6tG28kWgo,714 +django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.po,sha256=FC_JIIl1hwnjzth_e1M3icJgnS1BibXZEtpK10Aef0w,945 +django/contrib/sites/locale/sv/LC_MESSAGES/django.mo,sha256=qmhdn3N2C_DR_FYrUaFSacVjghgfb0CuWKanVRJSTq8,792 +django/contrib/sites/locale/sv/LC_MESSAGES/django.po,sha256=dDVuuuHGpZIoT6dU48aT2j4nEuGrd6zZ3FiZEs3TCeE,987 +django/contrib/sites/locale/sw/LC_MESSAGES/django.mo,sha256=cWjjDdFXBGmpUm03UDtgdDrREa2r75oMsXiEPT_Bx3g,781 +django/contrib/sites/locale/sw/LC_MESSAGES/django.po,sha256=oOKNdztQQU0sd6XmLI-n3ONmTL7jx3Q0z1YD8673Wi8,901 +django/contrib/sites/locale/ta/LC_MESSAGES/django.mo,sha256=CLO41KsSKqBrgtrHi6fmXaBk-_Y2l4KBLDJctZuZyWY,714 +django/contrib/sites/locale/ta/LC_MESSAGES/django.po,sha256=YsTITHg7ikkNcsP29tDgkZrUdtO0s9PrV1XPu4mgqCw,939 +django/contrib/sites/locale/te/LC_MESSAGES/django.mo,sha256=GmIWuVyIOcoQoAmr2HxCwBDE9JUYEktzYig93H_4v50,687 +django/contrib/sites/locale/te/LC_MESSAGES/django.po,sha256=jbncxU9H3EjXxWPsEoCKJhKi392XXTGvWyuenqLDxps,912 +django/contrib/sites/locale/th/LC_MESSAGES/django.mo,sha256=4BQRjNbPJEQog4oe8CUHxHXszfZpw09Qa3XIku41eac,850 +django/contrib/sites/locale/th/LC_MESSAGES/django.po,sha256=OpTsWP-Whkf-j4qdjdOh-Gw72qJtiLyMllKefENTAcA,1047 +django/contrib/sites/locale/tr/LC_MESSAGES/django.mo,sha256=NxEKAJFmns0tWftlgyKXHJcBKBxo6ImR4SjIw8-zbgk,799 +django/contrib/sites/locale/tr/LC_MESSAGES/django.po,sha256=L9tsnwxw1BEJD-Nm3m1RAS7ekgdmyC0ETs_mr7tQw1E,1043 +django/contrib/sites/locale/tt/LC_MESSAGES/django.mo,sha256=gmmjXeEQUlBpfDmouhxE-qpEtv-iWdQSobYL5MWprZc,706 +django/contrib/sites/locale/tt/LC_MESSAGES/django.po,sha256=yj49TjwcZ4YrGqnJrKh3neKydlTgwYduto9KsmxI_eI,930 +django/contrib/sites/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 +django/contrib/sites/locale/udm/LC_MESSAGES/django.po,sha256=vrLZ0XJF63CO3IucbQpd12lxuoM9S8tTUv6cpu3g81c,767 +django/contrib/sites/locale/uk/LC_MESSAGES/django.mo,sha256=H4806mPqOoHJFm549F7drzsfkvAXWKmn1w_WVwQx9rk,960 +django/contrib/sites/locale/uk/LC_MESSAGES/django.po,sha256=jmJKTuGLhfP4rg8M_d86XR4X8qYB-JAtEf6jRKuzi3w,1187 +django/contrib/sites/locale/ur/LC_MESSAGES/django.mo,sha256=s6QL8AB_Mp9haXS4n1r9b0YhEUECPxUyPrHTMI3agts,654 +django/contrib/sites/locale/ur/LC_MESSAGES/django.po,sha256=R9tv3qtett8CUGackoHrc5XADeygVKAE0Fz8YzK2PZ4,885 +django/contrib/sites/locale/vi/LC_MESSAGES/django.mo,sha256=YOaKcdrN1238Zdm81jUkc2cpxjInAbdnhsSqHP_jQsI,762 +django/contrib/sites/locale/vi/LC_MESSAGES/django.po,sha256=AHcqR2p0fdscLvzbJO_a-CzMzaeRL4LOw4HB9K3noVQ,989 +django/contrib/sites/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=7D9_pDY5lBRpo1kfzIQL-PNvIg-ofCm7cBHE1-JWlMk,779 +django/contrib/sites/locale/zh_Hans/LC_MESSAGES/django.po,sha256=xI_N00xhV8dWDp4fg5Mmj9ivOBBdHP79T3-JYXPyc5M,946 +django/contrib/sites/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=0F6Qmh1smIXlOUNDaDwDajyyGecc1azfwh8BhXrpETo,790 +django/contrib/sites/locale/zh_Hant/LC_MESSAGES/django.po,sha256=ixbXNBNKNfrpI_B0O_zktTfo63sRFMOk1B1uIh4DGGg,1046 +django/contrib/sites/migrations/0001_initial.py,sha256=CkzQ6PgORwSokrpq6Dj6u-WCEtcuSf4Pau6UyiBpSlA,1069 +django/contrib/sites/migrations/0002_alter_domain_unique.py,sha256=HECWqP0R0hp77p_ubI5bI9DqEXIiGOTTszAr4EpgtVE,517 +django/contrib/sites/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/staticfiles/__init__.py,sha256=eGxMURIKxiv-dE7rP1hwNgUhfzUN36-Bc58jCpHgmCE,73 +django/contrib/staticfiles/apps.py,sha256=q0Tfga23RfN9gCRPhopgChqOFqbtGfkc3-VeH1CRClg,413 +django/contrib/staticfiles/checks.py,sha256=rH9A8NIYtEkA_PRYXQJxndm243O6Mz6GwyqWSUe3f24,391 +django/contrib/staticfiles/finders.py,sha256=a46SgWyQxKlZY_UdfBnOLVvIs8HHQ7Nc8xy2EquuiD4,10158 +django/contrib/staticfiles/handlers.py,sha256=WLg6lshuKMSfFPfPLeDDer3_1TrEIg-OpCEdcp4uqEg,2329 +django/contrib/staticfiles/storage.py,sha256=mIhWdkv-HCRivTWdozB7vnRP7OjnWjZFarUlfjNj-uM,19152 +django/contrib/staticfiles/testing.py,sha256=4X-EtOfXnwkJAyFT8qe4H4sbVTKgM65klLUtY81KHiE,463 +django/contrib/staticfiles/urls.py,sha256=owDM_hdyPeRmxYxZisSMoplwnzWrptI_W8-3K2f7ITA,498 +django/contrib/staticfiles/utils.py,sha256=vrtb1g0Zt1idSZmBAAJ2qLOxGcyb7uWAxqlxZ7C7B40,1954 +django/contrib/staticfiles/views.py,sha256=CaWZq4AHEbOGW7mg_0mbkGUP8KJTlVNnofDBNIhRUo4,1264 +django/contrib/staticfiles/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/staticfiles/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/staticfiles/management/commands/collectstatic.py,sha256=sFhpb9H0M6v0HElRwdURTtkyXKqZfqfwd0C0J9EXP1w,15136 +django/contrib/staticfiles/management/commands/findstatic.py,sha256=R5CN75jGnvsV16MQ23eWake_EBE7NG94ExKL-54NqYQ,1539 +django/contrib/staticfiles/management/commands/runserver.py,sha256=uv-h6a8AOs0c92ILT_3Mu0UTBoCiQzThpUEmR-blj70,1318 +django/contrib/staticfiles/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/staticfiles/templatetags/staticfiles.py,sha256=P3ixCkaCvU8wTQYePYgZh0mWzyeE0y4SDXltF8TWB6M,537 +django/contrib/syndication/__init__.py,sha256=b5C6iIdbIOHf5wvcm1QJYsspErH3TyWJnCDYS9NjFY4,73 +django/contrib/syndication/apps.py,sha256=hXquFH_3BL6NNR2cxLU-vHlBJZ3OCjbcl8jkzCNvE64,203 +django/contrib/syndication/views.py,sha256=kXBT4kGjWBqmYVU0BFrMxMyqkdPeUjgIr-TGp5HvCS0,8617 +django/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/core/exceptions.py,sha256=V61tsXhjxUnLxfNVAQBUUhvSgvdDhLL3ajIS5TCGlyI,5275 +django/core/paginator.py,sha256=tUAUQ5XA_aSw1Ws-3qJfxXKzeVoKGiThoie9mbAj_6s,5884 +django/core/signals.py,sha256=uGRybHCJZ74by2HV-9JEWvfmnw_scuhcxaRP3UmZDjE,247 +django/core/signing.py,sha256=fRflzQnv2LA99q7vBCu3FXrtA_6mNefufR-6OlSQAtI,6660 +django/core/validators.py,sha256=M5V3aRs0qjsI1mM4-jKw1FHR4IPf-ntPGN3es2rVwZ0,18596 +django/core/wsgi.py,sha256=2sYMSe3IBrENeQT7rys-04CRmf8hW2Q2CjlkBUIyjHk,388 +django/core/cache/__init__.py,sha256=gfjHtXklQU4M8vluEtpJf-mG3q7UHATaGrluiYAzO_0,3711 +django/core/cache/utils.py,sha256=EakHn48OQtJP7OCLwkfACYZjVqjBtcdp86xGJbgPXVc,432 +django/core/cache/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/core/cache/backends/base.py,sha256=hn98WTdIDebq0oy5SAVq08-pkmGAbt75rLOCqAvuji4,9799 +django/core/cache/backends/db.py,sha256=qVcCIEztElRPXAbAG0a9vz27qgv1ZFjwunyDtSo_kEo,8939 +django/core/cache/backends/dummy.py,sha256=DtugeHHs1doIp2dV3CX5dkoJ5dj6bJ7rtKmHNBogBYg,1218 +django/core/cache/backends/filebased.py,sha256=osnUkOsfqK3dxctG8p3UtT4j_8TIs2Cq8Ppj4Bq9qSU,4884 +django/core/cache/backends/locmem.py,sha256=ibbZBYB3SVcbwgvEz-R5k33F4G_ycuxBoTfz06wWbDc,4198 +django/core/cache/backends/memcached.py,sha256=KigcrxWadhCmb8A1suMMJt0xxfTbsqfi0InDHXxP5YY,7956 +django/core/checks/__init__.py,sha256=_HP2dErvPYginc0R1Bwblq1R-gykN2sxcYCCyMaalHg,879 +django/core/checks/caches.py,sha256=jhyfX_m6TepTYRBa-j3qh1owD1W-3jmceu8b8dIFqVk,415 +django/core/checks/database.py,sha256=IpXyIS-TDTH4p037aG2l0qWnAVFtp8ozJEsXMvaoIu8,261 +django/core/checks/messages.py,sha256=ZbasGH7L_MeIGIwb_nYiO9Z_MXF0-aXO1ru2xFACj6Y,2161 +django/core/checks/model_checks.py,sha256=Gif4kfndBdBe4sc2NfLThe__qKcJBY5eqD-2Oh6takA,6183 +django/core/checks/registry.py,sha256=qk77K8-s8jfZR0ej7Rx-iemsXEkKF47d0VB4pmEnqa8,3108 +django/core/checks/templates.py,sha256=GnnM1ZW3CIk22KmyK094qzgGIrxmIULFGfPPuvnArFI,1185 +django/core/checks/urls.py,sha256=lA8wbw2WDC-e4ZAr-9ooEWtGvrNyMh1G-MZbojGq9W8,3246 +django/core/checks/compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/core/checks/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/core/checks/security/base.py,sha256=JsF8UvJLlWXF2ysswWaT08Mqd6KDt4weOUr1-spCZt8,6743 +django/core/checks/security/csrf.py,sha256=CH09reOHXQEdCMqhlejyh0IsGwDQkFeHRYO25glZTYE,1259 +django/core/checks/security/sessions.py,sha256=vvsxKEwb3qHgnCG0R5KUkfUpMHuZMfxjo9-X-2BTp-4,2558 +django/core/files/__init__.py,sha256=OjalFLvs-vPaTE3vP0eYZWyNwMj9pLJZNgG4AcGn2_Y,60 +django/core/files/base.py,sha256=E2Tanv7zjeBZYrGgph4FShEMtv1MPN0fs1mS_L-JOiY,4984 +django/core/files/images.py,sha256=_lnhvkwnXJ_Dih6nNIAm9UvTwxOd7CSPi4MjPVxMybY,2377 +django/core/files/locks.py,sha256=nn0KJG_yXoIT_pHqzeZhBkQsA1tghaVzN-p4DA5VER4,3512 +django/core/files/move.py,sha256=1R3xTJKI9Plo0xRknz-Uv2_QQRw_vmr-rUEcrTJloMA,2956 +django/core/files/storage.py,sha256=tEzJUiMS6W_dk0IceFRtqAwi1vMC7H-wFjocBe7zN94,14633 +django/core/files/temp.py,sha256=jR1S5j-UtRMbQEYpHAY-yffp6QCKxngbzqi6MA1tOwI,2501 +django/core/files/uploadedfile.py,sha256=hHaPethGK2DEBIZzf7UeSRVznea4qHgsv_zHWjQe5ho,3928 +django/core/files/uploadhandler.py,sha256=n4edWZI6txsO-UTW6L3X5aX2krSr7rxu6h5LQwdR_48,6539 +django/core/files/utils.py,sha256=5Ady6JuzCYb_VAtSwc9Dr-iTmpuMIVuJ3RKck1-sYzk,1752 +django/core/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/core/handlers/base.py,sha256=nF21s4mXxClfbkT4pQ1MSLlcJVXi1RqfVshDcUSw0ow,6867 +django/core/handlers/exception.py,sha256=SoirxgN-UU96fJMJ_LtBbPE4A4WXgYUc-sKo64LsmnQ,4691 +django/core/handlers/wsgi.py,sha256=8mRSLDdUkPebrtjdcJpdl5OQufxzZemjDg_f2KDCdAc,8029 +django/core/mail/__init__.py,sha256=LBC94qDGLULxasR97XAb0xGssr29-EbNUTDpbtnQ6iE,4484 +django/core/mail/message.py,sha256=vyEe2o3YC0rvabe3PXh4DHXtnjR0lrQ4ySdgXsfRcy8,17159 +django/core/mail/utils.py,sha256=nUQWqzPAZfqWY2J7SsYfVlihYMYz6i_A8H5D0pSkBvo,452 +django/core/mail/backends/__init__.py,sha256=VJ_9dBWKA48MXBZXVUaTy9NhgfRonapA6UAjVFEPKD8,37 +django/core/mail/backends/base.py,sha256=f9Oeaw1RAiPHmsTdQakeYzEabfOtULz0UvldP4Cydpk,1660 +django/core/mail/backends/console.py,sha256=l1XFESBbk1Ney5bUgjCYVPoSDzjobzIK3GMQyxQX1Qk,1402 +django/core/mail/backends/dummy.py,sha256=sI7tAa3MfG43UHARduttBvEAYYfiLasgF39jzaZPu9E,234 +django/core/mail/backends/filebased.py,sha256=OPRc5lDsB9Gble251fwXp0oq1qKeZM9T2JTcZwL_5js,2715 +django/core/mail/backends/locmem.py,sha256=OgTK_4QGhsBdqtDKY6bwYNKw2MXudc0PSF5GNVqS7gk,884 +django/core/mail/backends/smtp.py,sha256=TE2v-96rSgN7nZ_3CfrNc7-0Utk4ALB3obRw-TXfz90,5302 +django/core/management/__init__.py,sha256=WHEr3W3YgriQXmQ0osrNqh0eV6KMjZA0oW6YIl880tc,15323 +django/core/management/base.py,sha256=O9HYlEe3B5wNdIv3Hbpay-nunhnFP1Xm_wHeuIeDEuY,20363 +django/core/management/color.py,sha256=jAThS-IMFpjAFQ15P6Ncv7ze33dR1gFz_fXfzHBrcnI,1821 +django/core/management/sql.py,sha256=bnxEUUIJScj6A67s0txpq4RT8sh0n-RS5ZxcNqySaAU,1921 +django/core/management/templates.py,sha256=x7PeOu2FCAFOMc3v0Y95s_LJQVmCBFv-g5RqUXNoH5c,13714 +django/core/management/utils.py,sha256=kZFPEyKenZUWEaz1Ko8c5XScI7MhmHjloPfWyiaHMCA,3490 +django/core/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/core/management/commands/check.py,sha256=nwmRA9rdeavDPmIpZGmUG79fftjradKtrogNIN4CakA,2312 +django/core/management/commands/compilemessages.py,sha256=F4zYpo3xuK30ri5Ja5RquPsP-esQJ3DHhkz6SNmsqNo,5073 +django/core/management/commands/createcachetable.py,sha256=zgcn_QHH_fTh181L1pcRBmRVrNCUgQPyGyKxahQ8kvI,4376 +django/core/management/commands/dbshell.py,sha256=OeexBQJXEUArOKWGKpBSsaA043X1UokzNWc_EDbJi5M,1240 +django/core/management/commands/diffsettings.py,sha256=3as-r5_kfS8lw93SO7xUNs12p_IGVOzG43UTLdcMXx8,3369 +django/core/management/commands/dumpdata.py,sha256=uJ1znSWHk06pugtNdgly_gfWaNpQwOtqI59CgvJHI-Y,8607 +django/core/management/commands/flush.py,sha256=9lJy_cGMajdVmrLwdFpYqDCN89G69xYcjwBNfOpkRVc,3590 +django/core/management/commands/inspectdb.py,sha256=gqP7PCdnmdAPI1YHOeuheG-7qEl9Ch-697rFaFJ5J40,12852 +django/core/management/commands/loaddata.py,sha256=rXZ31_IItpXlzAKf2S9X1TOCFGKQcG3OVrGbJJ5p_1Y,14267 +django/core/management/commands/makemessages.py,sha256=0fzXP5GmPGfWJkoQ_reY8G0Furt5tT1rWXPfa2FBL80,27468 +django/core/management/commands/makemigrations.py,sha256=OMeTnpJfYla4xQicyJLCmUmHwH39_jSebzREdLyVyfI,14261 +django/core/management/commands/migrate.py,sha256=Pk4ZVi3YlnCm-ZN0lB0fp_XzKAHHBROA1pW9c8o3Oio,14044 +django/core/management/commands/runserver.py,sha256=X1wCUWzjCeL8_nLnCwrVaJD2Od0zdNezguiq0maNYgI,6347 +django/core/management/commands/sendtestemail.py,sha256=quvNqm0lfl3vvDfL0S0pBtW1te7LGcYNUrrac4lMAAg,1488 +django/core/management/commands/shell.py,sha256=BROjrvPNCp1kC6jArrOEgzdyj0f6MNh4p760w2NdCyE,4055 +django/core/management/commands/showmigrations.py,sha256=OQ2ovRjgy4A_LRUtFe6u2siUn0xqUBD-Qj3o7Ke5Rqs,5333 +django/core/management/commands/sqlflush.py,sha256=mNxqSBp-fF36h3JMtEsDvYzCysxDA5R0IjhyiYyDMiI,795 +django/core/management/commands/sqlmigrate.py,sha256=bKBsq3ldex8SR8GhMnrA7FS8kpXGjjy8lax_EL6Bc3E,2742 +django/core/management/commands/sqlsequencereset.py,sha256=hCyc6og7K4cDbVflf85lusgoQz0fWiOylo6Jtlold8U,872 +django/core/management/commands/squashmigrations.py,sha256=m__NLsjU9-4YHJKOfcMmNdkklbLTEVLJ4epxpLjQVCM,9351 +django/core/management/commands/startapp.py,sha256=rvXApmLdP3gBinKaOMJtT1g3YrgVTlHteqNqFioNu8Y,503 +django/core/management/commands/startproject.py,sha256=ygP95ZEldotgEVmxDYBPUyAedNQTTwJulKLinGUxZtg,688 +django/core/management/commands/test.py,sha256=SexB7-Cdz4P3E9BcH8eGPOHuTKE5d0tCzyWfKNBQ0S8,2231 +django/core/management/commands/testserver.py,sha256=Veo-U69NUEyFuM_O9tG7GjRZ3aR2vWzcaVWahAIdS_M,2117 +django/core/serializers/__init__.py,sha256=74Jfha4K1Jxuciz0JCUPqXVUbGAqM0WhkzROJ1-Vfyk,8201 +django/core/serializers/base.py,sha256=AdJDQc0c2XXwsBrZs7VM8rZr6pUsP4JCJIYBXDc0EGc,7732 +django/core/serializers/json.py,sha256=sKfzArRjK2zNaRUxYRBbUWmoQfDUKzyKdIKu1gBeKnc,3352 +django/core/serializers/python.py,sha256=BIJQvWkHt0AAAL3oM_TVM2foFwqNRmx4XDIHcrrazxc,7320 +django/core/serializers/pyyaml.py,sha256=SXwXHjs0_29tycOtXXs-lWGS--SBBVeHlNb-rjheCak,2674 +django/core/serializers/xml_serializer.py,sha256=5TnYdZtx4uWbgCOf-xrknNtJNM7KvObtaCjpxg0CHxY,15138 +django/core/servers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/core/servers/basehttp.py,sha256=e60X0mo7GHl6SAR7w-s4NT4YI9n9eeHpWLZvt4ZhqT8,6065 +django/db/__init__.py,sha256=1mrVglcKwooIWzGxQPgRevVkgd1iBAa7ESWPUAZNcS8,2128 +django/db/transaction.py,sha256=tHQFzfrcupqrrv_Ux8wvRKYOsEi8WiwYdMHX7wTpjqY,11229 +django/db/utils.py,sha256=jDaaur7BVLCU87RRPCS9gBW_I_QOdraOk4f1vWn3cXY,9790 +django/db/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/db/backends/ddl_references.py,sha256=dBg6xSNpyH3YdHInd5afAo6oU_USpv828lnrg78tmug,5792 +django/db/backends/signals.py,sha256=rAFB5bUdnk5jckIT4PwVwEuE6aj4dbtasRHcRnIyH6Y,95 +django/db/backends/utils.py,sha256=14Jf5WWbG4qQ49iXQmguidWt4WuxEDyWghoiG6oacyE,8688 +django/db/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/db/backends/base/base.py,sha256=qLA8aM_ZOJleEXDKsYssvbJOyGcGweUI71BkwiW1wBs,24431 +django/db/backends/base/client.py,sha256=r6dcRhY5tPx9lzDZhbcDC1z9LDdXxRe_vtkgYQSmuEI,513 +django/db/backends/base/creation.py,sha256=jMCa7C65YTELVTteIbGPoLtilqnNNB-ay9TcM2iL-tY,11972 +django/db/backends/base/features.py,sha256=yDtSTHZS-IW5MVG6AzEWTa-XzfsEuv1aI8UKorAKe9k,10909 +django/db/backends/base/introspection.py,sha256=G0ejTl_mFSCse_4kbAcqssS_3x20wSyPQDgvzXNmJkQ,8035 +django/db/backends/base/operations.py,sha256=vJWV22M8sfN4czjzroZQ903rU9Py-KwP8DImqROUGgA,24665 +django/db/backends/base/schema.py,sha256=dvBBGiZ6VmRes-nbMbPcCUIlyQJ8ruzTFjgQjUmdA3c,49505 +django/db/backends/base/validation.py,sha256=4zIAVsePyETiRtK7CAw78y4ZiCPISs0Pv17mFWy2Tr4,1040 +django/db/backends/dummy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/db/backends/dummy/base.py,sha256=ZsB_hKOW9tuaNbZt64fGY6tk0_FqMiF72rp8TE3NrDA,2244 +django/db/backends/dummy/features.py,sha256=m_ZHTydiox34PXZGj9AbbpjZni9UW44eKvz_VNbM7Ug,153 +django/db/backends/mysql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/db/backends/mysql/base.py,sha256=FZoDgaLnLLxhEN8i-nIIRaz-B2dM__jFMS_gIEstjWM,14072 +django/db/backends/mysql/client.py,sha256=vvt1-wevYeQR4JmklrmZ_nrUrXdMaAXQOV7j42XZx4M,1834 +django/db/backends/mysql/compiler.py,sha256=J30bWgLviaWfUktegN7YnXmp6CaEZ6u8VeuiN4DUk4E,704 +django/db/backends/mysql/creation.py,sha256=vFhQ2zYbGrC_TrIc7wBcbh_i7apGD-t0ZG0h3vD_IJQ,3265 +django/db/backends/mysql/features.py,sha256=t6RO73Hp-Ji397xqN4wnhdRvxVLyu9OgHyXUHuh6uIY,3538 +django/db/backends/mysql/introspection.py,sha256=J803HLgJTly4WwD8_uWGUjmUjDJwAW-FyKFWZIF1i5I,10201 +django/db/backends/mysql/operations.py,sha256=fBXLCjk1t2rCTwuNNZFJm5je4RAUKYsiJyE62Do0PJs,11358 +django/db/backends/mysql/schema.py,sha256=jXTAKbeFSFu5g1WVmHtX7B4UJFWoF0DJN66birCgOQs,4479 +django/db/backends/mysql/validation.py,sha256=C0MLttf0KGEU9i0N1jrXwprRgSV0uT7qL4Eu9yllpRQ,2565 +django/db/backends/oracle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/db/backends/oracle/base.py,sha256=Bjx8wY7N9oGDSjvKP96-9j2IbqCSrNrNl_3Sd1mSb58,22638 +django/db/backends/oracle/client.py,sha256=efoAYVH76x_AMMqq1h8JNaCpq_UtlktyuYuXLZfze4E,331 +django/db/backends/oracle/compiler.py,sha256=I4vNNZ3qYrZ8mV4yL4YCyDOyExUaFbrYOcA-gywqWgg,2437 +django/db/backends/oracle/creation.py,sha256=-oOjmWy8kXznf3VH7TQt2Miq3B0Xvn7hy0cvuTPa6BM,18640 +django/db/backends/oracle/features.py,sha256=Zb68pUqzB79OEHDWtTkBYdxlDfoDk6hZiCyDAP2pqqc,2088 +django/db/backends/oracle/functions.py,sha256=PHMO9cApG1EhZPD4E0Vd6dzPmE_Dzouf9GIWbF1X7kc,768 +django/db/backends/oracle/introspection.py,sha256=MKc51u-u3kD3lPJIEUkWHSfByHOu2-CQpo0Q9KD2NLs,11946 +django/db/backends/oracle/operations.py,sha256=KMN3WeC_Tt3VGuYXMevqq9pq2Yopwauo54GXOJdqnlo,23939 +django/db/backends/oracle/schema.py,sha256=GFR1jojMnqcPiZmf00iWYK2aD-ao5caTH09iUyaY0pc,7358 +django/db/backends/oracle/utils.py,sha256=nQVsE_cwQZeyvLwFhZ_UTvGs3SdoGCzeCJ82UD3Rhj0,1457 +django/db/backends/oracle/validation.py,sha256=O1Vx5ljfyEVo9W-o4OVsu_OTfZ5V5P9HX3kNMtdE75o,860 +django/db/backends/postgresql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/db/backends/postgresql/base.py,sha256=lY3G4HLKY4gCR08T_rC4khafOcLrDtqBLfcuMXqaBAo,10558 +django/db/backends/postgresql/client.py,sha256=EbqEen1Nkp5sb4RVn1tawrbEioXQjbGI6M72FfTg79w,2382 +django/db/backends/postgresql/creation.py,sha256=rGjKMO8KH-vKrrHXrSInMvthrtkTMyDIgIQB5p6GmnQ,2928 +django/db/backends/postgresql/features.py,sha256=v_5YfdP7eSpGAXyPIlBe8aiSYuWb8eiNJD6l0NxyOp4,2429 +django/db/backends/postgresql/introspection.py,sha256=B9SNIsDMP_TX-YmrvGq2gPeTuClp41x3RrxQEY4eafs,11775 +django/db/backends/postgresql/operations.py,sha256=0eDv7U7RMBeeh8rVHBSiPNLpZb_uHtaLja0alxUbkuc,11123 +django/db/backends/postgresql/schema.py,sha256=10GrHRQlQ5j1pGh6vjdxgWP7yChyBmpi7605asUA8ic,6402 +django/db/backends/postgresql/utils.py,sha256=3GXuTEoyPNqfUcXOCVnC-gw7xdAV17ZvZYb4Qu6f7Mc,176 +django/db/backends/postgresql_psycopg2/__init__.py,sha256=5v4iwk9d_ENPQMdjDfQxvPKTlOXxfaWsnaR-qgCPMcM,261 +django/db/backends/postgresql_psycopg2/base.py,sha256=g2aAztfMtAL93F8tGmO1W2YQbmr-w5sm_Obopi4JHX4,40 +django/db/backends/postgresql_psycopg2/client.py,sha256=IRCmGthBTRhO2RVGdyuxWLJowAc5H1_-1azwzrvJ-Ag,42 +django/db/backends/postgresql_psycopg2/creation.py,sha256=K2mX3uKrYKPu6snParWOUpdPE7njMl7d5F_9rWTEMy4,44 +django/db/backends/postgresql_psycopg2/features.py,sha256=5wEMe_Zj-SGxQ5AF06SH7ghMuamD_y7ddvJ9LBqZxhA,44 +django/db/backends/postgresql_psycopg2/introspection.py,sha256=uhjKJBighkTzV0JeFYJsYedni4w5I_N9LpIwDaPmOsE,49 +django/db/backends/postgresql_psycopg2/operations.py,sha256=xkIOUX-rLI6YjTKtEHYEK89whe2J1T-FKNVRBW2Jbh4,46 +django/db/backends/postgresql_psycopg2/schema.py,sha256=R-3T1eOq2-yD66L2--ICntPF2ZsLZ-Ok4TV4FGxyG5c,42 +django/db/backends/postgresql_psycopg2/utils.py,sha256=eneNs5az6_Q07x0q991G7ZABYgE-YgMg9-Xk35LT7PM,41 +django/db/backends/sqlite3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/db/backends/sqlite3/base.py,sha256=79X7iB3L9yeqh2ASIat0g5TZZGoI3aBELsS2Vph4Obc,18674 +django/db/backends/sqlite3/client.py,sha256=wiSj2r4sCG-n3SwFKJV2mVEw9GFXiyFbHgD_Ic_DjxA,311 +django/db/backends/sqlite3/creation.py,sha256=eQToSSfszeS-SyQzihO4FAcEFREKrNlJbQReTaFRUXk,4866 +django/db/backends/sqlite3/features.py,sha256=tBceqqJ_bGtQDLVHrWzFS3acvTNAVechQMIY9utgRL4,2347 +django/db/backends/sqlite3/introspection.py,sha256=YJYVQfFZOUDYKuxAAH-ZnGRZuh_yjaumboYvi8FxdQ0,13221 +django/db/backends/sqlite3/operations.py,sha256=7oRNkRsIHdZyBSFpHBfmSJO1S1GbzR9Z1QwGqzB-hPg,11862 +django/db/backends/sqlite3/schema.py,sha256=Qsw58FtoeInfasOFncAFD4T39zXkqSU8ISZO3iRiy5g,17548 +django/db/migrations/__init__.py,sha256=Oa4RvfEa6hITCqdcqwXYC66YknFKyluuy7vtNbSc-L4,97 +django/db/migrations/autodetector.py,sha256=laJi1HxlaEB4HsBbn4pdVytV-_zUClv7BgLClIm8bu0,59878 +django/db/migrations/exceptions.py,sha256=LCj-jTC1MhrKCyarNxhWWhQFIU2DGkUV4AtLwIEZ1MQ,1205 +django/db/migrations/executor.py,sha256=3goKbSuwv_VMZJd2bnYp9B9KU1Hn6Sy3wJpZ2L5CMHA,17479 +django/db/migrations/graph.py,sha256=7dVuynqL0AtIAug6wvaHT8YWB68pbnLrHFoPwFMjX-Q,15508 +django/db/migrations/loader.py,sha256=VZtwhgnKJ3jIv58o6aMGoNY_qS5PhIPY8k5EZdn6k9I,14786 +django/db/migrations/migration.py,sha256=XsGy8wvCWZBX-s3oGzovrwfYd_ffz0RYhWZ2D08AVug,8235 +django/db/migrations/optimizer.py,sha256=c2dt0t4AOVKLOCYYWZJm9C0IteVzTkD8D7r2Lh4A8iE,2803 +django/db/migrations/questioner.py,sha256=N18IZJrKLzaKFb9781l-Bnq-py0R-LEstzhGHnTLJoQ,9839 +django/db/migrations/recorder.py,sha256=YV9VB2IWX9n4Qf3EuZyryu2OHGIy2syacpaW4LNktIc,2891 +django/db/migrations/serializer.py,sha256=UWpSdTpc8JJm5GaPrDENs11sU8q0_9IenXUkFKMllrs,13457 +django/db/migrations/state.py,sha256=jFbM1wda7EwjrliAiz1HOFKDUbIpDGqSQSHynkQhJdU,25204 +django/db/migrations/topological_sort.py,sha256=M8VCyxJq-OOn-i-d6HgFYi0A77iOO7H6-iAjlqabywE,1141 +django/db/migrations/utils.py,sha256=ApIIVhNrnnZ79yzrbPeREFsk5kxLCuOd1rwh3dDaNLI,388 +django/db/migrations/writer.py,sha256=p_oLWrhPVvNrgpxXNTcfTLSHBGXOJSo5Ax4yHinXHCQ,11085 +django/db/migrations/operations/__init__.py,sha256=AsJk4Z1G6-hLJRWkyOLpP3lApxn4OmP4h1yqPrnUlfU,700 +django/db/migrations/operations/base.py,sha256=tYSvlbstzKKr2VSHnsn7PrKr8FL748C3oc253Auds4k,4830 +django/db/migrations/operations/fields.py,sha256=0PflYROnEv-J7Mayci7VOX9HtshT-pF_P_LSSexq0i4,13496 +django/db/migrations/operations/models.py,sha256=KLsnlPqlyqoHV-nUhFgiW4_OzCUwP39_0rJXhLgGuOM,32632 +django/db/migrations/operations/special.py,sha256=6vO2RRgaUPnxEjbkTX3QwAN-LaadZFHYpFHouAaMmig,7792 +django/db/migrations/operations/utils.py,sha256=E1pAxwoutzNe0TDZBTaGwjtu7p2Vmt14sFidLl_q3OI,527 +django/db/models/__init__.py,sha256=WL0qmZ8SIT8XaOaMcICSheau1rQ2zSOBC-G97P6Atdw,2928 +django/db/models/aggregates.py,sha256=8UxgzXRT57RuQVsxppfD10Z37-1o5bzIyWoeBHvA04w,6821 +django/db/models/base.py,sha256=cQJEIh3Uo4FZ9WsaaC82OEbiuAiHqZHqMqkI0SKsP1Y,71296 +django/db/models/constants.py,sha256=BstFLrG_rKBHL-IZ7iqXY9uSKLL6IOKOjheXBetCan0,117 +django/db/models/deletion.py,sha256=wG5lFqNLzIl60u9ARCmpZqPY-F3hrpcc4Q9GI9jMFgA,13584 +django/db/models/expressions.py,sha256=KunNfzMtw_ajODKF7ATlFLrIMwRqUqoJQnXd1NewdwU,47502 +django/db/models/indexes.py,sha256=PjGjFIUEeNGqWsYVou2txCNV8pmUeb-Noc8pwEMP7d4,4759 +django/db/models/lookups.py,sha256=0wg5loWajDmX4w0gjX92WbKfQsTrIsnq8NvnAqW4iz0,20976 +django/db/models/manager.py,sha256=SPZrZ3SUTGFQd7J23mcH2sj16HMTfs1M4oZQg2GlUoQ,6828 +django/db/models/options.py,sha256=ZSXf8SObwmC2iF2bEY-9skbh42leTBOZJgzZmcptSVo,34835 +django/db/models/query.py,sha256=crU2Zc5tbvZ37Hq_FamFVqTuEitJVixUeX0dfNtPZA8,74693 +django/db/models/query_utils.py,sha256=mSQtOVHWfqapebkzwTxsc1n97LMyjU7F9Nc2PpbOomk,12027 +django/db/models/signals.py,sha256=CJt6W3JnXMzRc2BQP0s_Qj6Q_PSC4hBTYnWyPatbjoU,2161 +django/db/models/utils.py,sha256=1mQ_zPVpHleO_BFdEU714a09NMvSmR65-T3P31hhMEk,852 +django/db/models/fields/__init__.py,sha256=Fj9F7DO5aqOlNPAZZHwgx_Kq9CSibXW3WzEJW-Hr5FE,85914 +django/db/models/fields/files.py,sha256=NDHAitUxI4O5k7RW74yIviqdJIZSezb60nknXlhgLPY,17906 +django/db/models/fields/mixins.py,sha256=5Ckq4d1cZODHfViLGcUyuJwvVPyV-Kfd2aZJzY4ckxc,816 +django/db/models/fields/proxy.py,sha256=fcJ2d1ZiY0sEouSq9SV7W1fm5eE3C_nMGky3Ma347dk,515 +django/db/models/fields/related.py,sha256=YSMq9uF8UETnnUfn-DHko46zY0Q870weHmYnzjfXX58,68335 +django/db/models/fields/related_descriptors.py,sha256=vONHdFpi4ARo3hruFYZYpLp6E8yuByGbQzpjWX-4S_M,49460 +django/db/models/fields/related_lookups.py,sha256=-T9rIa4aOgy3Uy8Q0QkTj8Npux0E8P4ZSVAf9jsMf6I,7023 +django/db/models/fields/reverse_related.py,sha256=j-YOys46oqP7T-8xfjz3_5FcOWR_hMBBp2xg8xfFmSs,10046 +django/db/models/functions/__init__.py,sha256=QliWCZZiyOGHEaBMAwujzgV-Zrf8O9bNCgqb8CxXkrE,1174 +django/db/models/functions/base.py,sha256=9vjosVnqGU82AvEtHlrvDoTgYMbJbvf2QBxuhWzRFMc,7155 +django/db/models/functions/datetime.py,sha256=7KlQP-hcAQCGQcka3695m5JZ08Oe8aEmSvowSQgIr_c,9967 +django/db/models/functions/window.py,sha256=quryNTlbAO5vImSRbIQNxyFJ7jAq_M_1vmuyZSCgyMs,2948 +django/db/models/sql/__init__.py,sha256=OcwrDD5reAtAe_L3iB6sm7uqzi1JOaoozN-p8veYZrc,252 +django/db/models/sql/compiler.py,sha256=6NWDvBQCKXXMtRosWS6YDbScxf9zHdKhh9B-u7eBvW4,66355 +django/db/models/sql/constants.py,sha256=p9_PSAOMk-5Gj2bR6mzrQZ5HGOFPxRCdxRk3Y8l1cXA,1039 +django/db/models/sql/datastructures.py,sha256=LPRTkrZ7Is1d4MMo29mWXV7s4W3u9f16UNAce3pk3a4,6721 +django/db/models/sql/query.py,sha256=tXt0czLKAc2iQvajqAGHeG7QANNLCF1mvgr0pcEFPz4,96644 +django/db/models/sql/subqueries.py,sha256=Hvu5xnsO4VLDDHKR6Q3h63VsiyASI3PCHQvU9i15G0w,7198 +django/db/models/sql/where.py,sha256=QQShEZva9Wa040FE_hfYpgUGPXBxm5JJBgTJcyWW4fo,7967 +django/dispatch/__init__.py,sha256=aZs1qtjOnhy8LWricxId1AQgpSUee-WCF-EzCj6o6qs,288 +django/dispatch/dispatcher.py,sha256=cZ9MkTFtcL366cFUAw8oOK9v9ofbhMWWyoL5aDG0P58,10848 +django/dispatch/license.txt,sha256=VABMS2BpZOvBY68W0EYHwW5Cj4p4oCb-y1P3DAn0qU8,1743 +django/forms/__init__.py,sha256=S6ckOMmvUX-vVST6AC-M8BzsfVQwuEUAdHWabMN-OGI,368 +django/forms/boundfield.py,sha256=aZmGbbiIJ_yA5iPw-sLCwWycQsCeKKaCFPVie7EzhVY,10749 +django/forms/fields.py,sha256=U76WvH2B-EeHm5edo1dRFtexkvUrNlzKbFCj_s4sjHU,44053 +django/forms/forms.py,sha256=WcLs14zO32u6QwNMOymzZXlh_hYSnrk5P1CgZIhixEM,20240 +django/forms/formsets.py,sha256=dkr74GXWf9L-dfcEe7JRmF_pqR2rIwOi7F7OxV5FmJY,18191 +django/forms/models.py,sha256=UVhQ7V6liv0TobbrjwTRs4yOZV-4zPQGzgzEJ-5xE3o,56012 +django/forms/renderers.py,sha256=mcfyrCSCSAYQTmII5g-82ZynuAv4S_P4FxLQ59ZYQck,1972 +django/forms/utils.py,sha256=3oMmxvzaruMZPMcEYCLOS8MUH4NK6SIyiAhW2kTVeME,5736 +django/forms/widgets.py,sha256=wfWrMZ3dJ_8WVqNaOoxG_OhNsYM2-3Gu078DCsytYKE,36684 +django/forms/jinja2/django/forms/widgets/attrs.html,sha256=_J2P-AOpHFhIwaqCNcrJFxEY4s-KPdy0Wcq0KlarIG0,172 +django/forms/jinja2/django/forms/widgets/checkbox.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/jinja2/django/forms/widgets/checkbox_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 +django/forms/jinja2/django/forms/widgets/checkbox_select.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 +django/forms/jinja2/django/forms/widgets/clearable_file_input.html,sha256=4dmO2jGov35wB0hbbEQJG_8CWcD1czjWy6ViQ9TIJcc,467 +django/forms/jinja2/django/forms/widgets/date.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/jinja2/django/forms/widgets/datetime.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/jinja2/django/forms/widgets/email.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/jinja2/django/forms/widgets/file.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/jinja2/django/forms/widgets/hidden.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/jinja2/django/forms/widgets/input.html,sha256=_Cr3sQVyv3alcf77UOGvxAabSINCATkVX3qqlEP_ciE,174 +django/forms/jinja2/django/forms/widgets/input_option.html,sha256=ZjX4w2EeSaPnWjhBiVpi5L-IriTjQ5s7fsS6gTMy5U0,205 +django/forms/jinja2/django/forms/widgets/multiple_hidden.html,sha256=T54-n1ZeUlTd-svM3C4tLF42umKM0R5A7fdfsdthwkA,54 +django/forms/jinja2/django/forms/widgets/multiple_input.html,sha256=O9W9tLA_gdxNqN_No2Tesd8_2GhOTyKEkCOnp_rUBn4,431 +django/forms/jinja2/django/forms/widgets/multiwidget.html,sha256=pr-MxRyucRxn_HvBGZvbc3JbFyrAolbroxvA4zmPz2Y,86 +django/forms/jinja2/django/forms/widgets/number.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/jinja2/django/forms/widgets/password.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/jinja2/django/forms/widgets/radio.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 +django/forms/jinja2/django/forms/widgets/radio_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 +django/forms/jinja2/django/forms/widgets/select.html,sha256=ESyDzbLTtM7-OG34EuSUnvxCtyP5IrQsZh0jGFrIdEA,365 +django/forms/jinja2/django/forms/widgets/select_date.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 +django/forms/jinja2/django/forms/widgets/select_option.html,sha256=tNa1D3G8iy2ZcWeKyI-mijjDjRmMaqSo-jnAR_VS3Qc,110 +django/forms/jinja2/django/forms/widgets/splitdatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 +django/forms/jinja2/django/forms/widgets/splithiddendatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 +django/forms/jinja2/django/forms/widgets/text.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/jinja2/django/forms/widgets/textarea.html,sha256=Av1Y-hpXUU2AjrhnUivgZFKNBLdwCSZSeuSmCqmCkDA,145 +django/forms/jinja2/django/forms/widgets/time.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/jinja2/django/forms/widgets/url.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/attrs.html,sha256=9ylIPv5EZg-rx2qPLgobRkw6Zq_WJSM8kt106PpSYa0,172 +django/forms/templates/django/forms/widgets/checkbox.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/checkbox_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 +django/forms/templates/django/forms/widgets/checkbox_select.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 +django/forms/templates/django/forms/widgets/clearable_file_input.html,sha256=4dmO2jGov35wB0hbbEQJG_8CWcD1czjWy6ViQ9TIJcc,467 +django/forms/templates/django/forms/widgets/date.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/datetime.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/email.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/file.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/hidden.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/input.html,sha256=522egUaO0QWqTWwqBIEdTZI23I_fqKpWw64hMEaccm0,191 +django/forms/templates/django/forms/widgets/input_option.html,sha256=ZjX4w2EeSaPnWjhBiVpi5L-IriTjQ5s7fsS6gTMy5U0,205 +django/forms/templates/django/forms/widgets/multiple_hidden.html,sha256=T54-n1ZeUlTd-svM3C4tLF42umKM0R5A7fdfsdthwkA,54 +django/forms/templates/django/forms/widgets/multiple_input.html,sha256=HwEaZLEiZYdPJ6brC9QWRGaIKzcX5UA2Tj5Rsq_NvOk,462 +django/forms/templates/django/forms/widgets/multiwidget.html,sha256=slk4AgCdXnVmFvavhjVcsza0quTOP2LG50D8wna0dw0,117 +django/forms/templates/django/forms/widgets/number.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/password.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/radio.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 +django/forms/templates/django/forms/widgets/radio_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 +django/forms/templates/django/forms/widgets/select.html,sha256=7U0RzjeESG87ENzQjPRUF71gvKvGjVVvXcpsW2-BTR4,384 +django/forms/templates/django/forms/widgets/select_date.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 +django/forms/templates/django/forms/widgets/select_option.html,sha256=N_psd0JYCqNhx2eh2oyvkF2KU2dv7M9mtMw_4BLYq8A,127 +django/forms/templates/django/forms/widgets/splitdatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 +django/forms/templates/django/forms/widgets/splithiddendatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 +django/forms/templates/django/forms/widgets/text.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/textarea.html,sha256=Av1Y-hpXUU2AjrhnUivgZFKNBLdwCSZSeuSmCqmCkDA,145 +django/forms/templates/django/forms/widgets/time.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/forms/templates/django/forms/widgets/url.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 +django/http/__init__.py,sha256=5JImoB1BZNuZBOt5qyDX7t51McYbkDLX45eKmNN_Fes,1010 +django/http/cookie.py,sha256=7pFpsa7ITOB2LNv6lbXbt3DKwdJlFgsAKKSWFUmwO2w,1128 +django/http/multipartparser.py,sha256=xbOHPiGnO4mx7MyANA22hfduNKI1uKL5TSGrcVWepyE,24832 +django/http/request.py,sha256=93--k0OOpiRW-d6SbAnzXxbCUhXpvo2S_4wNbrgEo8U,20584 +django/http/response.py,sha256=7eN5TuQS2MEZ1HVpeGJPgp7527fNh7Y5hKjdZla4eWw,17512 +django/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/middleware/cache.py,sha256=6_rVV_p0NXY75nfrU0JOt56O--x8CQ6ZcbGWnzjW3Eg,7570 +django/middleware/clickjacking.py,sha256=4rzsG5m_Z2VabN7J_5ZVeFj14X3FAbs0iU5LKoBb9js,1733 +django/middleware/common.py,sha256=-C_VQObEpT9G9Y7OFx8UVNAwJhWQfSDicV0-WhEe-KM,8584 +django/middleware/csrf.py,sha256=L5zmV7loWuWktjUEUcFdPpjg5gXAPHyaO-zJpCpCasw,13363 +django/middleware/gzip.py,sha256=oq6J0L_1NLZuvV1F1MxuFPzdUS71301py0GWHBAmk2k,2060 +django/middleware/http.py,sha256=UO8H-fZpzpwiGDSD0sPoRqCAb3klksH25LFqkV6Dq8I,1636 +django/middleware/locale.py,sha256=QcxeqrDmZdEar1yhkGusYUIG0DdTlnkkf_E9L6SWy-o,3058 +django/middleware/security.py,sha256=he5CoJN5d5v61X2qDJr2eYGOetAK6X6l3O_1c0Zd69k,2016 +django/template/__init__.py,sha256=t5onT26DOSny4Qi7iz_a82M5WJydvPpkb6hFjE010CE,1871 +django/template/base.py,sha256=-abjmQn2vTQxlgnuMJ5JgJwvWBnTJFFtuv1QbwQCXgc,38215 +django/template/context.py,sha256=LkyuI1J-5iZk04ByzgQn7uxksqkTwWf7cHK--ucWIPU,9076 +django/template/context_processors.py,sha256=drfyVYugSe1lg9VIbsC3oRLUG64Gw94Oq77FLfk2ZNI,2407 +django/template/defaultfilters.py,sha256=DCLCHdfQkseWVBRZxvf1Iyhkbwc419gNzKW4djYmw3o,25806 +django/template/defaulttags.py,sha256=b88tlGSi5OWIPjwtoWmYmzsG8QXCagiea8fB8MWxNlU,49943 +django/template/engine.py,sha256=dWgo-JaCkgA0SCI_JmG5ZihzL0lbDZf5rTJyU1un49o,6886 +django/template/exceptions.py,sha256=awd7B80xhFB574Lt2IdIyHCpD6KGGyuKGkIoalr9deo,1340 +django/template/library.py,sha256=g2gi5FfSug-Wak2P4Weg7qGcwHrwIy47vse35YYkLbk,12812 +django/template/loader.py,sha256=-t5cTnWJrxtS2vyg9cguz4rXxlTBni4XoJUuqJNglPI,2054 +django/template/loader_tags.py,sha256=ZDcJWpCogd9NecVimLthqnSfdRV3yQInZ7_fnagWKQQ,13329 +django/template/response.py,sha256=dBq9wQvYEvCtHqpeK6Diw-yYkcQpbVDIeL22nckII3Q,5425 +django/template/smartif.py,sha256=QBvsTtD4YiyGoU4hXrW8vqR0CBAFOZGuDoRP3aGEgOs,6408 +django/template/utils.py,sha256=xQ-lHLzXrSFx4xc9E2Tja6MZHKGkKRRATxKwvCe3MPU,3665 +django/template/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/template/backends/base.py,sha256=qu6TlykN2JAUeQqIbiGujYG1dEsXZmAMpnzmLP0gSPg,2757 +django/template/backends/django.py,sha256=_w350tmHAMSLOw-b2o9rR0Wn6YX3QMkpHkkpvbo_EwI,4186 +django/template/backends/dummy.py,sha256=Nl313SxX1rxE1F-5AHCljgejrYpYCx-QXJpNUkQWXR4,1767 +django/template/backends/jinja2.py,sha256=bx8DcA2PqqzDmcgegY11pm5EhmD_gWTTLauGo91imL4,3504 +django/template/backends/utils.py,sha256=Wler787-GWAoQb6m7qaWdCfQoSBkHFLFECAdFe8xO_E,416 +django/template/loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/template/loaders/app_directories.py,sha256=w3a84EAXWX12w7F1CyxIQ_lFiTwxFS7xf3rCEcnUqyc,313 +django/template/loaders/base.py,sha256=kvjmN-UHxdd6Pwgkexw7IHL0YeJQgXXbuz_tdj5ciKc,1558 +django/template/loaders/cached.py,sha256=n1t8aaDO_gq4aQUI2bFUSDDIE-SqrVzrXsvw661NTys,3669 +django/template/loaders/filesystem.py,sha256=OWTnIwWbVj-Td5VrOkKw1G_6pIuz1Vnh5CedZN5glyU,1507 +django/template/loaders/locmem.py,sha256=8cBYI8wPOOnIx_3v7fC5jezA_6pJLqgqObeLwHXQJKo,673 +django/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/templatetags/cache.py,sha256=otY3c4Ti9YLxFfOuIX5TZ7w12aGDPkyGfQNsaPVZ_M0,3401 +django/templatetags/i18n.py,sha256=Nzk-jyMfH9Z7jkNTQV_yRNVvftJDKYpIvJiRTtFLCuw,19093 +django/templatetags/l10n.py,sha256=__KS2RJf9mlS9EMzYooKoP6XquP4FDwyOr_xaD3TAAM,1689 +django/templatetags/static.py,sha256=om3cu4NVaH4MVUq-XPLxPVNlLUCxTbbp0qAVVSaClj4,4502 +django/templatetags/tz.py,sha256=HFzJsvh-x9yjoju4kiIpKAI0U_4crtoftqiT8llM_u8,5400 +django/test/__init__.py,sha256=5FrmvgBrxzZo5UVLW9HZ1iHBMMhcnXcNL5Y2xnaqVPA,682 +django/test/client.py,sha256=PY1YqhOaqguGApZHRmvRi9XePB6oP4CgjM7RMQk6OvI,26876 +django/test/html.py,sha256=su6cUczjfqucIrEhyp2Y_6JGH8uesJrpcvcbH1GTvvI,7570 +django/test/runner.py,sha256=nMc4VuyKDusaL8CyV0l3N_Pu0uGhwl-OxmXfHepDNN0,25346 +django/test/selenium.py,sha256=DFTUveBYZfODKHU_XN-UJpvm4VXeg-_uxTEH4SsC3fY,3271 +django/test/signals.py,sha256=BQlO0pXZTOdcbhgW1gJLc16WW2Q75wx_2wheG5kCh9U,6729 +django/test/testcases.py,sha256=pezhRHclmZiPt4TH5O0-hVSYNRNpibv7oY1ON795wOg,55089 +django/test/utils.py,sha256=8Wepq7h56ONrPu5t2LUWnu6OD5B6n0MfXhh7ordVO1U,28391 +django/urls/__init__.py,sha256=FdHfNv5NwWEIt1EqEpRY7xJ-i4tD-SCLj0tq3qT6X1E,959 +django/urls/base.py,sha256=ol5Wujd0NvWuBj8fQ66t6wx2nzWtCpVcg76uOvEqzOY,5529 +django/urls/conf.py,sha256=8Xug9NhJXDEysRXWrY2iHf0snfJMUmQkYZAomPltWMY,2946 +django/urls/converters.py,sha256=uukXCTD66n8NX_fiArq_s4p4to0oPqzuChNi6lpSAR8,1300 +django/urls/exceptions.py,sha256=alLNjkORtAxneC00g4qnRpG5wouOHvJvGbymdpKtG_I,115 +django/urls/resolvers.py,sha256=pPfTI9AAzEl_qerP-ndQwWzef1kyUsZvK9x8HTENpYo,25068 +django/urls/utils.py,sha256=VHDcmggNRHSbPJAql5KJhe7wX4pSjrKb64Fu-p14D9Q,2152 +django/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/utils/_os.py,sha256=CYxm1Ju2X5bl2fKKsYyCgemWdv6LPhEiDkaV3t_zf30,2435 +django/utils/archive.py,sha256=lWCX77dPtL6whlRjc2XaMqX8YP_9WPBMbw13n5Iu9Sg,7462 +django/utils/autoreload.py,sha256=QAj1ss_lF8hyTOMAACPso-Z6lNJM31044yLZFIIO-Hc,10325 +django/utils/baseconv.py,sha256=xYReIqcF2FFD85BqDrl48xo4UijII9D6YyC-FHsUPbw,2989 +django/utils/cache.py,sha256=yFegtgHpRPdb0KrTVmnDA66d-VEEmTRl8DQM-8hHzUc,16413 +django/utils/crypto.py,sha256=kmctPFVOMrZv-ZZJ_AnFsNSz3HBem3_J0vPqXPDo3l4,3092 +django/utils/datastructures.py,sha256=LECZu-BbSk2ZjunU1MGhC40lnA-12YuGEZ0uZp0zeOA,8559 +django/utils/dateformat.py,sha256=YyUXezYqG_R-hMqSh4Q50qyTfvReD_4TTHVD2c1zH4U,11508 +django/utils/dateparse.py,sha256=bg5SFVRFkUG4E06ZmU9HMvlVVz8OWTLW0OM9MAQXdF4,4731 +django/utils/dates.py,sha256=LczKNLLK2B6tg9FlrZUXgH9E9w14IqpuJHFUHLq2nCg,2295 +django/utils/datetime_safe.py,sha256=OnmCe-x1GMGDSiamEWqXEqAeTYyYrCAXUjKmgla1SmA,2837 +django/utils/deconstruct.py,sha256=hcO_7qassSI5dTfQ5CPttA8s3f9yaF8UnqKKma3bI6M,1975 +django/utils/decorators.py,sha256=6AftjSerJAtOAMjFGRbo3yTWvcaeRs0Li6jBslwPCAU,6796 +django/utils/deprecation.py,sha256=GvTCItgsfYJFhCvQ0pcmuyDDkaT5SCghhddns3YCzA0,3352 +django/utils/duration.py,sha256=e9u-nFSTt94c2xY91ZPILFei93yJbudefWlyCfYDd5s,1112 +django/utils/encoding.py,sha256=5CQjnr34WWGN2aoevn3CoQy8OZmaIBtWITi4_eybjU0,8994 +django/utils/feedgenerator.py,sha256=GLhiXNYDBZGJUa0FQU6nL-q1wvLaro01cdljGJn7AGI,16280 +django/utils/formats.py,sha256=cbcND7BRRcA3FW9OXKR0ZUVcPip4bHzDMDXjAq1broo,8945 +django/utils/functional.py,sha256=agR0TMLGS89cRAH0q1_5C7oq_jWG8UGWCR8AQzK_c1U,13347 +django/utils/html.py,sha256=yDvseYz1eYZo7COE01fhKugqho2tK1DUXKTVuL_ucIQ,13219 +django/utils/html_parser.py,sha256=r4_58apC-2nTlsb8U_IhAV6CkXyyomECwNUceXd1FjE,522 +django/utils/http.py,sha256=4cUoYHT_j2qV4WRbhOAmbl0OTNxBswsd8pdIYdWrI_k,15138 +django/utils/inspect.py,sha256=QWQvmtteqKw5m-EMj4ZK2ZwSx-DslUVk91z0Nkilylw,1688 +django/utils/ipv6.py,sha256=WBkmZXdtbIHgcaWDKm4ElRvzyu_wKLCW2aA18g1RCJo,1350 +django/utils/itercompat.py,sha256=lacIDjczhxbwG4ON_KfG1H6VNPOGOpbRhnVhbedo2CY,184 +django/utils/jslex.py,sha256=jOes0kfZoIIPxPMNWkXMJ6D3x3f95B5cZWKXo38Rhcc,7707 +django/utils/log.py,sha256=NlJM6lVKcNIPORfcmIEbPWihftyrs0UVn9SPFsBXv0A,6379 +django/utils/lorem_ipsum.py,sha256=P_BSLsITDP2ZW9EJPy6ciFneib0iz9ezBz2LD7CViRE,4775 +django/utils/lru_cache.py,sha256=4g-svLUmsvn2wlS-rPEJbFr_ODqoar5qxwIjGxrLlxA,256 +django/utils/module_loading.py,sha256=zmTlFLAdv20BhBHoPCDBBT2N7PAUrkYctAUDHF1kUPs,3649 +django/utils/numberformat.py,sha256=fuSLvYVK4lo_Wd71yWP5fxBKeOpMQ3fipIDkvw5TlHU,2476 +django/utils/regex_helper.py,sha256=ZNQL2n_QLFhDSSbOJUrV6LazOZ-L1BU8wROjlOP2MCY,12621 +django/utils/safestring.py,sha256=zI0FSoQ-pRtGzOP8vpxn9BePHXyTxMNh9hfrRNKV6EM,2473 +django/utils/six.py,sha256=ecocr7GKytCmp9FbyOLDUR4_0vngcOjMJItxTGnTRV8,30502 +django/utils/synch.py,sha256=xPLelilO5ExgCHStSIszcYCAADOsghfDERY4ehkMGtM,2550 +django/utils/termcolors.py,sha256=JrysYBjC72oq0WBL6EJ44A8ZEij_S7QsivoRQugxPEk,7362 +django/utils/text.py,sha256=mWw4XoUQAjE5i0bFd5OVzW9G2nXFYWVK4ui0RQBOtVU,14092 +django/utils/timesince.py,sha256=WVWenJ0639Kazt7-EhytpC5gnE99cAhP0azQasBcIaQ,2788 +django/utils/timezone.py,sha256=52BTXPDyAIDIjsbpM6AJ76VqMok7DtXN04aYHZjnR00,8234 +django/utils/tree.py,sha256=ZxMnEXezuaZPH1zrz5YggQZiSUuU9pxAfloM18JAc1g,4851 +django/utils/version.py,sha256=_XvHClAZhpqbwXr4wO5iUqT_BeuK2F8q6l21hL0Iy5U,2818 +django/utils/xmlutils.py,sha256=B3FOKaFNynp0fC1wliItPSKzNABSyc-0x897F7kEVj4,1184 +django/utils/translation/__init__.py,sha256=7-Prpm1Z_r4U9k5bC0QXtq1SZBx9H9txsz90k7spzuU,7499 +django/utils/translation/template.py,sha256=62Ipn0LYDaZwAPM9OQWgH8aKkuZ-xaIkj41bTio-1q0,9979 +django/utils/translation/trans_null.py,sha256=20q6ayK6V2aylDQzcFmtz-X3faye3SKedb9nDMl4opQ,1258 +django/utils/translation/trans_real.py,sha256=zgGTEZVPucPAnKOSrYKvs4dmPVs7R8ka68nVDdSkASg,18540 +django/views/__init__.py,sha256=DGdAuGC0t1bMju9i-B9p_gqPgRIFHtLXTdIxNKWFGsw,63 +django/views/csrf.py,sha256=TOnXES5w0BmUvyq7whGB6Z6Ds4-RotIVammFGN88UKY,6252 +django/views/debug.py,sha256=sDUdXdsVRLcJqccq7HqY6LDi0BaaUYNY3mHqpKLB0f0,20367 +django/views/defaults.py,sha256=Q7qxucjUHPoQmjjT_p93erxGXNaNK2THO4OZrhTMw-k,4260 +django/views/i18n.py,sha256=I73xYV604j0tek35-o1r0-LO__5aEXiT4v8K1gDDAUE,11735 +django/views/static.py,sha256=FS-Z_Vvd1By9dOQdg2NeqgSI_7NU4KRmAuqubAfndxo,4623 +django/views/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/views/decorators/cache.py,sha256=uSLzb61mCuFKIm8tR3Gs_NP1H7U-BOEU_QOc3IhBC_4,1705 +django/views/decorators/clickjacking.py,sha256=EW-DRe2dR8yg4Rf8HRHl8c4-C8mL3HKGa6PxZRKmFtU,1565 +django/views/decorators/csrf.py,sha256=xPWVVNw_DBidvX_ZVYvN7CePt1HpxpUxsb6wMr0Oe4Y,2073 +django/views/decorators/debug.py,sha256=Q_ul_n8M89WoPL87mDYomZ74mv_djuudZZ-b-uB1I6s,2569 +django/views/decorators/gzip.py,sha256=PtpSGd8BePa1utGqvKMFzpLtZJxpV2_Jej8llw5bCJY,253 +django/views/decorators/http.py,sha256=iMl98tvpUXs4mSg-d0S4soAV-E_ynr3MlRpwyff6CRY,4715 +django/views/decorators/vary.py,sha256=6wEXI5yBFZYDVednNPc0bYbXGG-QzkIUQ-50ErDrA_k,1084 +django/views/generic/__init__.py,sha256=WTnzEXnKyJqzHlLu_VsXInYg-GokDNBCUYNV_U6U-ok,822 +django/views/generic/base.py,sha256=QnQhKsAP8E83lwZo5Py8iOgjIoXfi_a6nrmmQoGfK08,7429 +django/views/generic/dates.py,sha256=V9AXAGCcMsiO5YxSFSQTCx19bACQaY_wBM5GH-5dbaI,25251 +django/views/generic/detail.py,sha256=X8fJS4Dg7qMSkstsDnGBpYw6Lmyr18tNYhRsoSBZNqk,6521 +django/views/generic/edit.py,sha256=bJAQ5HAK_upREBxmgUDWAbUMd56gw3Qk1Emiglmx7c8,8342 +django/views/generic/list.py,sha256=Z1ti5yZADM1rT-s_QqUyoRGDBeEX6rkoZxoE_CE0iMY,7388 +django/views/templates/default_urlconf.html,sha256=uTxHyCtjPV09MlXNBOjSq5meAfkhmJ72hCvlDOEtMwU,16595 +django/views/templates/technical_404.html,sha256=nZT2gkPAYc7G8VNJXst-dEyim0t83xjX-TtCGtxJZwc,2453 +django/views/templates/technical_500.html,sha256=ez3ErTVw3TUUhQOTipX6rHFpN9eiysKVRTz-maEwS2g,17218 +django/views/templates/technical_500.txt,sha256=7VWOipQg2poVyusbM8dQHRyRR-iUB_dOehAoF0HBHNM,3367 +../../../bin/django-admin,sha256=tCPpfc-HOy0szljTTFsVa3UktEG3uAQM0Z7Ef5RASAw,308 +Django-2.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +django/templatetags/__pycache__/tz.cpython-36.pyc,, +django/templatetags/__pycache__/l10n.cpython-36.pyc,, +django/templatetags/__pycache__/i18n.cpython-36.pyc,, +django/templatetags/__pycache__/cache.cpython-36.pyc,, +django/templatetags/__pycache__/static.cpython-36.pyc,, +django/templatetags/__pycache__/__init__.cpython-36.pyc,, +django/middleware/__pycache__/csrf.cpython-36.pyc,, +django/middleware/__pycache__/clickjacking.cpython-36.pyc,, +django/middleware/__pycache__/common.cpython-36.pyc,, +django/middleware/__pycache__/gzip.cpython-36.pyc,, +django/middleware/__pycache__/locale.cpython-36.pyc,, +django/middleware/__pycache__/security.cpython-36.pyc,, +django/middleware/__pycache__/cache.cpython-36.pyc,, +django/middleware/__pycache__/http.cpython-36.pyc,, +django/middleware/__pycache__/__init__.cpython-36.pyc,, +django/forms/__pycache__/renderers.cpython-36.pyc,, +django/forms/__pycache__/boundfield.cpython-36.pyc,, +django/forms/__pycache__/widgets.cpython-36.pyc,, +django/forms/__pycache__/forms.cpython-36.pyc,, +django/forms/__pycache__/models.cpython-36.pyc,, +django/forms/__pycache__/formsets.cpython-36.pyc,, +django/forms/__pycache__/utils.cpython-36.pyc,, +django/forms/__pycache__/fields.cpython-36.pyc,, +django/forms/__pycache__/__init__.cpython-36.pyc,, +django/core/cache/backends/__pycache__/locmem.cpython-36.pyc,, +django/core/cache/backends/__pycache__/db.cpython-36.pyc,, +django/core/cache/backends/__pycache__/base.cpython-36.pyc,, +django/core/cache/backends/__pycache__/dummy.cpython-36.pyc,, +django/core/cache/backends/__pycache__/__init__.cpython-36.pyc,, +django/core/cache/backends/__pycache__/filebased.cpython-36.pyc,, +django/core/cache/backends/__pycache__/memcached.cpython-36.pyc,, +django/core/cache/__pycache__/utils.cpython-36.pyc,, +django/core/cache/__pycache__/__init__.cpython-36.pyc,, +django/core/mail/backends/__pycache__/smtp.cpython-36.pyc,, +django/core/mail/backends/__pycache__/console.cpython-36.pyc,, +django/core/mail/backends/__pycache__/locmem.cpython-36.pyc,, +django/core/mail/backends/__pycache__/base.cpython-36.pyc,, +django/core/mail/backends/__pycache__/dummy.cpython-36.pyc,, +django/core/mail/backends/__pycache__/__init__.cpython-36.pyc,, +django/core/mail/backends/__pycache__/filebased.cpython-36.pyc,, +django/core/mail/__pycache__/message.cpython-36.pyc,, +django/core/mail/__pycache__/utils.cpython-36.pyc,, +django/core/mail/__pycache__/__init__.cpython-36.pyc,, +django/core/checks/compatibility/__pycache__/__init__.cpython-36.pyc,, +django/core/checks/security/__pycache__/sessions.cpython-36.pyc,, +django/core/checks/security/__pycache__/csrf.cpython-36.pyc,, +django/core/checks/security/__pycache__/base.cpython-36.pyc,, +django/core/checks/security/__pycache__/__init__.cpython-36.pyc,, +django/core/checks/__pycache__/model_checks.cpython-36.pyc,, +django/core/checks/__pycache__/database.cpython-36.pyc,, +django/core/checks/__pycache__/messages.cpython-36.pyc,, +django/core/checks/__pycache__/templates.cpython-36.pyc,, +django/core/checks/__pycache__/caches.cpython-36.pyc,, +django/core/checks/__pycache__/registry.cpython-36.pyc,, +django/core/checks/__pycache__/__init__.cpython-36.pyc,, +django/core/checks/__pycache__/urls.cpython-36.pyc,, +django/core/management/__pycache__/sql.cpython-36.pyc,, +django/core/management/__pycache__/templates.cpython-36.pyc,, +django/core/management/__pycache__/base.cpython-36.pyc,, +django/core/management/__pycache__/color.cpython-36.pyc,, +django/core/management/__pycache__/utils.cpython-36.pyc,, +django/core/management/__pycache__/__init__.cpython-36.pyc,, +django/core/management/commands/__pycache__/sqlmigrate.cpython-36.pyc,, +django/core/management/commands/__pycache__/startproject.cpython-36.pyc,, +django/core/management/commands/__pycache__/dumpdata.cpython-36.pyc,, +django/core/management/commands/__pycache__/dbshell.cpython-36.pyc,, +django/core/management/commands/__pycache__/showmigrations.cpython-36.pyc,, +django/core/management/commands/__pycache__/sqlflush.cpython-36.pyc,, +django/core/management/commands/__pycache__/compilemessages.cpython-36.pyc,, +django/core/management/commands/__pycache__/startapp.cpython-36.pyc,, +django/core/management/commands/__pycache__/loaddata.cpython-36.pyc,, +django/core/management/commands/__pycache__/squashmigrations.cpython-36.pyc,, +django/core/management/commands/__pycache__/makemessages.cpython-36.pyc,, +django/core/management/commands/__pycache__/sqlsequencereset.cpython-36.pyc,, +django/core/management/commands/__pycache__/check.cpython-36.pyc,, +django/core/management/commands/__pycache__/makemigrations.cpython-36.pyc,, +django/core/management/commands/__pycache__/inspectdb.cpython-36.pyc,, +django/core/management/commands/__pycache__/migrate.cpython-36.pyc,, +django/core/management/commands/__pycache__/testserver.cpython-36.pyc,, +django/core/management/commands/__pycache__/sendtestemail.cpython-36.pyc,, +django/core/management/commands/__pycache__/diffsettings.cpython-36.pyc,, +django/core/management/commands/__pycache__/flush.cpython-36.pyc,, +django/core/management/commands/__pycache__/runserver.cpython-36.pyc,, +django/core/management/commands/__pycache__/shell.cpython-36.pyc,, +django/core/management/commands/__pycache__/__init__.cpython-36.pyc,, +django/core/management/commands/__pycache__/test.cpython-36.pyc,, +django/core/management/commands/__pycache__/createcachetable.cpython-36.pyc,, +django/core/__pycache__/exceptions.cpython-36.pyc,, +django/core/__pycache__/signals.cpython-36.pyc,, +django/core/__pycache__/paginator.cpython-36.pyc,, +django/core/__pycache__/validators.cpython-36.pyc,, +django/core/__pycache__/signing.cpython-36.pyc,, +django/core/__pycache__/wsgi.cpython-36.pyc,, +django/core/__pycache__/__init__.cpython-36.pyc,, +django/core/serializers/__pycache__/xml_serializer.cpython-36.pyc,, +django/core/serializers/__pycache__/pyyaml.cpython-36.pyc,, +django/core/serializers/__pycache__/python.cpython-36.pyc,, +django/core/serializers/__pycache__/base.cpython-36.pyc,, +django/core/serializers/__pycache__/__init__.cpython-36.pyc,, +django/core/serializers/__pycache__/json.cpython-36.pyc,, +django/core/files/__pycache__/uploadedfile.cpython-36.pyc,, +django/core/files/__pycache__/temp.cpython-36.pyc,, +django/core/files/__pycache__/storage.cpython-36.pyc,, +django/core/files/__pycache__/uploadhandler.cpython-36.pyc,, +django/core/files/__pycache__/images.cpython-36.pyc,, +django/core/files/__pycache__/move.cpython-36.pyc,, +django/core/files/__pycache__/base.cpython-36.pyc,, +django/core/files/__pycache__/utils.cpython-36.pyc,, +django/core/files/__pycache__/__init__.cpython-36.pyc,, +django/core/files/__pycache__/locks.cpython-36.pyc,, +django/core/handlers/__pycache__/base.cpython-36.pyc,, +django/core/handlers/__pycache__/wsgi.cpython-36.pyc,, +django/core/handlers/__pycache__/exception.cpython-36.pyc,, +django/core/handlers/__pycache__/__init__.cpython-36.pyc,, +django/core/servers/__pycache__/basehttp.cpython-36.pyc,, +django/core/servers/__pycache__/__init__.cpython-36.pyc,, +django/test/__pycache__/client.cpython-36.pyc,, +django/test/__pycache__/testcases.cpython-36.pyc,, +django/test/__pycache__/signals.cpython-36.pyc,, +django/test/__pycache__/utils.cpython-36.pyc,, +django/test/__pycache__/selenium.cpython-36.pyc,, +django/test/__pycache__/__init__.cpython-36.pyc,, +django/test/__pycache__/html.cpython-36.pyc,, +django/test/__pycache__/runner.cpython-36.pyc,, +django/bin/__pycache__/django-admin.cpython-36.pyc,, +django/dispatch/__pycache__/dispatcher.cpython-36.pyc,, +django/dispatch/__pycache__/__init__.cpython-36.pyc,, +django/template/backends/__pycache__/django.cpython-36.pyc,, +django/template/backends/__pycache__/jinja2.cpython-36.pyc,, +django/template/backends/__pycache__/base.cpython-36.pyc,, +django/template/backends/__pycache__/utils.cpython-36.pyc,, +django/template/backends/__pycache__/dummy.cpython-36.pyc,, +django/template/backends/__pycache__/__init__.cpython-36.pyc,, +django/template/__pycache__/engine.cpython-36.pyc,, +django/template/__pycache__/defaulttags.cpython-36.pyc,, +django/template/__pycache__/response.cpython-36.pyc,, +django/template/__pycache__/context_processors.cpython-36.pyc,, +django/template/__pycache__/exceptions.cpython-36.pyc,, +django/template/__pycache__/smartif.cpython-36.pyc,, +django/template/__pycache__/defaultfilters.cpython-36.pyc,, +django/template/__pycache__/loader.cpython-36.pyc,, +django/template/__pycache__/base.cpython-36.pyc,, +django/template/__pycache__/loader_tags.cpython-36.pyc,, +django/template/__pycache__/utils.cpython-36.pyc,, +django/template/__pycache__/library.cpython-36.pyc,, +django/template/__pycache__/context.cpython-36.pyc,, +django/template/__pycache__/__init__.cpython-36.pyc,, +django/template/loaders/__pycache__/cached.cpython-36.pyc,, +django/template/loaders/__pycache__/app_directories.cpython-36.pyc,, +django/template/loaders/__pycache__/locmem.cpython-36.pyc,, +django/template/loaders/__pycache__/filesystem.cpython-36.pyc,, +django/template/loaders/__pycache__/base.cpython-36.pyc,, +django/template/loaders/__pycache__/__init__.cpython-36.pyc,, +django/utils/translation/__pycache__/trans_real.cpython-36.pyc,, +django/utils/translation/__pycache__/template.cpython-36.pyc,, +django/utils/translation/__pycache__/__init__.cpython-36.pyc,, +django/utils/translation/__pycache__/trans_null.cpython-36.pyc,, +django/utils/__pycache__/tree.cpython-36.pyc,, +django/utils/__pycache__/inspect.cpython-36.pyc,, +django/utils/__pycache__/feedgenerator.cpython-36.pyc,, +django/utils/__pycache__/synch.cpython-36.pyc,, +django/utils/__pycache__/duration.cpython-36.pyc,, +django/utils/__pycache__/dateformat.cpython-36.pyc,, +django/utils/__pycache__/timesince.cpython-36.pyc,, +django/utils/__pycache__/datastructures.cpython-36.pyc,, +django/utils/__pycache__/version.cpython-36.pyc,, +django/utils/__pycache__/deprecation.cpython-36.pyc,, +django/utils/__pycache__/xmlutils.cpython-36.pyc,, +django/utils/__pycache__/functional.cpython-36.pyc,, +django/utils/__pycache__/ipv6.cpython-36.pyc,, +django/utils/__pycache__/itercompat.cpython-36.pyc,, +django/utils/__pycache__/_os.cpython-36.pyc,, +django/utils/__pycache__/safestring.cpython-36.pyc,, +django/utils/__pycache__/archive.cpython-36.pyc,, +django/utils/__pycache__/text.cpython-36.pyc,, +django/utils/__pycache__/datetime_safe.cpython-36.pyc,, +django/utils/__pycache__/six.cpython-36.pyc,, +django/utils/__pycache__/formats.cpython-36.pyc,, +django/utils/__pycache__/encoding.cpython-36.pyc,, +django/utils/__pycache__/baseconv.cpython-36.pyc,, +django/utils/__pycache__/lru_cache.cpython-36.pyc,, +django/utils/__pycache__/deconstruct.cpython-36.pyc,, +django/utils/__pycache__/crypto.cpython-36.pyc,, +django/utils/__pycache__/log.cpython-36.pyc,, +django/utils/__pycache__/numberformat.cpython-36.pyc,, +django/utils/__pycache__/termcolors.cpython-36.pyc,, +django/utils/__pycache__/autoreload.cpython-36.pyc,, +django/utils/__pycache__/cache.cpython-36.pyc,, +django/utils/__pycache__/lorem_ipsum.cpython-36.pyc,, +django/utils/__pycache__/dates.cpython-36.pyc,, +django/utils/__pycache__/http.cpython-36.pyc,, +django/utils/__pycache__/jslex.cpython-36.pyc,, +django/utils/__pycache__/html_parser.cpython-36.pyc,, +django/utils/__pycache__/__init__.cpython-36.pyc,, +django/utils/__pycache__/decorators.cpython-36.pyc,, +django/utils/__pycache__/dateparse.cpython-36.pyc,, +django/utils/__pycache__/html.cpython-36.pyc,, +django/utils/__pycache__/regex_helper.cpython-36.pyc,, +django/utils/__pycache__/module_loading.cpython-36.pyc,, +django/utils/__pycache__/timezone.cpython-36.pyc,, +django/__pycache__/shortcuts.cpython-36.pyc,, +django/__pycache__/__main__.cpython-36.pyc,, +django/__pycache__/__init__.cpython-36.pyc,, +django/contrib/syndication/__pycache__/views.cpython-36.pyc,, +django/contrib/syndication/__pycache__/apps.cpython-36.pyc,, +django/contrib/syndication/__pycache__/__init__.cpython-36.pyc,, +django/contrib/messages/__pycache__/constants.cpython-36.pyc,, +django/contrib/messages/__pycache__/context_processors.cpython-36.pyc,, +django/contrib/messages/__pycache__/views.cpython-36.pyc,, +django/contrib/messages/__pycache__/middleware.cpython-36.pyc,, +django/contrib/messages/__pycache__/apps.cpython-36.pyc,, +django/contrib/messages/__pycache__/utils.cpython-36.pyc,, +django/contrib/messages/__pycache__/__init__.cpython-36.pyc,, +django/contrib/messages/__pycache__/api.cpython-36.pyc,, +django/contrib/messages/storage/__pycache__/base.cpython-36.pyc,, +django/contrib/messages/storage/__pycache__/cookie.cpython-36.pyc,, +django/contrib/messages/storage/__pycache__/fallback.cpython-36.pyc,, +django/contrib/messages/storage/__pycache__/session.cpython-36.pyc,, +django/contrib/messages/storage/__pycache__/__init__.cpython-36.pyc,, +django/contrib/auth/migrations/__pycache__/0001_initial.cpython-36.pyc,, +django/contrib/auth/migrations/__pycache__/0008_alter_user_username_max_length.cpython-36.pyc,, +django/contrib/auth/migrations/__pycache__/0006_require_contenttypes_0002.cpython-36.pyc,, +django/contrib/auth/migrations/__pycache__/0003_alter_user_email_max_length.cpython-36.pyc,, +django/contrib/auth/migrations/__pycache__/0002_alter_permission_name_max_length.cpython-36.pyc,, +django/contrib/auth/migrations/__pycache__/0007_alter_validators_add_error_messages.cpython-36.pyc,, +django/contrib/auth/migrations/__pycache__/__init__.cpython-36.pyc,, +django/contrib/auth/migrations/__pycache__/0004_alter_user_username_opts.cpython-36.pyc,, +django/contrib/auth/migrations/__pycache__/0005_alter_user_last_login_null.cpython-36.pyc,, +django/contrib/auth/migrations/__pycache__/0009_alter_user_last_name_max_length.cpython-36.pyc,, +django/contrib/auth/management/__pycache__/__init__.cpython-36.pyc,, +django/contrib/auth/management/commands/__pycache__/createsuperuser.cpython-36.pyc,, +django/contrib/auth/management/commands/__pycache__/changepassword.cpython-36.pyc,, +django/contrib/auth/management/commands/__pycache__/__init__.cpython-36.pyc,, +django/contrib/auth/__pycache__/context_processors.cpython-36.pyc,, +django/contrib/auth/__pycache__/checks.cpython-36.pyc,, +django/contrib/auth/__pycache__/admin.cpython-36.pyc,, +django/contrib/auth/__pycache__/password_validation.cpython-36.pyc,, +django/contrib/auth/__pycache__/forms.cpython-36.pyc,, +django/contrib/auth/__pycache__/signals.cpython-36.pyc,, +django/contrib/auth/__pycache__/models.cpython-36.pyc,, +django/contrib/auth/__pycache__/mixins.cpython-36.pyc,, +django/contrib/auth/__pycache__/views.cpython-36.pyc,, +django/contrib/auth/__pycache__/tokens.cpython-36.pyc,, +django/contrib/auth/__pycache__/middleware.cpython-36.pyc,, +django/contrib/auth/__pycache__/validators.cpython-36.pyc,, +django/contrib/auth/__pycache__/apps.cpython-36.pyc,, +django/contrib/auth/__pycache__/base_user.cpython-36.pyc,, +django/contrib/auth/__pycache__/hashers.cpython-36.pyc,, +django/contrib/auth/__pycache__/__init__.cpython-36.pyc,, +django/contrib/auth/__pycache__/decorators.cpython-36.pyc,, +django/contrib/auth/__pycache__/urls.cpython-36.pyc,, +django/contrib/auth/__pycache__/backends.cpython-36.pyc,, +django/contrib/auth/handlers/__pycache__/modwsgi.cpython-36.pyc,, +django/contrib/auth/handlers/__pycache__/__init__.cpython-36.pyc,, +django/contrib/admin/templatetags/__pycache__/admin_list.cpython-36.pyc,, +django/contrib/admin/templatetags/__pycache__/admin_static.cpython-36.pyc,, +django/contrib/admin/templatetags/__pycache__/log.cpython-36.pyc,, +django/contrib/admin/templatetags/__pycache__/admin_modify.cpython-36.pyc,, +django/contrib/admin/templatetags/__pycache__/__init__.cpython-36.pyc,, +django/contrib/admin/templatetags/__pycache__/admin_urls.cpython-36.pyc,, +django/contrib/admin/migrations/__pycache__/0001_initial.cpython-36.pyc,, +django/contrib/admin/migrations/__pycache__/0002_logentry_remove_auto_add.cpython-36.pyc,, +django/contrib/admin/migrations/__pycache__/__init__.cpython-36.pyc,, +django/contrib/admin/__pycache__/exceptions.cpython-36.pyc,, +django/contrib/admin/__pycache__/checks.cpython-36.pyc,, +django/contrib/admin/__pycache__/widgets.cpython-36.pyc,, +django/contrib/admin/__pycache__/forms.cpython-36.pyc,, +django/contrib/admin/__pycache__/models.cpython-36.pyc,, +django/contrib/admin/__pycache__/sites.cpython-36.pyc,, +django/contrib/admin/__pycache__/tests.cpython-36.pyc,, +django/contrib/admin/__pycache__/actions.cpython-36.pyc,, +django/contrib/admin/__pycache__/apps.cpython-36.pyc,, +django/contrib/admin/__pycache__/utils.cpython-36.pyc,, +django/contrib/admin/__pycache__/helpers.cpython-36.pyc,, +django/contrib/admin/__pycache__/filters.cpython-36.pyc,, +django/contrib/admin/__pycache__/options.cpython-36.pyc,, +django/contrib/admin/__pycache__/__init__.cpython-36.pyc,, +django/contrib/admin/__pycache__/decorators.cpython-36.pyc,, +django/contrib/admin/views/__pycache__/autocomplete.cpython-36.pyc,, +django/contrib/admin/views/__pycache__/main.cpython-36.pyc,, +django/contrib/admin/views/__pycache__/__init__.cpython-36.pyc,, +django/contrib/admin/views/__pycache__/decorators.cpython-36.pyc,, +django/contrib/staticfiles/templatetags/__pycache__/staticfiles.cpython-36.pyc,, +django/contrib/staticfiles/templatetags/__pycache__/__init__.cpython-36.pyc,, +django/contrib/staticfiles/management/__pycache__/__init__.cpython-36.pyc,, +django/contrib/staticfiles/management/commands/__pycache__/findstatic.cpython-36.pyc,, +django/contrib/staticfiles/management/commands/__pycache__/collectstatic.cpython-36.pyc,, +django/contrib/staticfiles/management/commands/__pycache__/runserver.cpython-36.pyc,, +django/contrib/staticfiles/management/commands/__pycache__/__init__.cpython-36.pyc,, +django/contrib/staticfiles/__pycache__/handlers.cpython-36.pyc,, +django/contrib/staticfiles/__pycache__/checks.cpython-36.pyc,, +django/contrib/staticfiles/__pycache__/storage.cpython-36.pyc,, +django/contrib/staticfiles/__pycache__/testing.cpython-36.pyc,, +django/contrib/staticfiles/__pycache__/views.cpython-36.pyc,, +django/contrib/staticfiles/__pycache__/apps.cpython-36.pyc,, +django/contrib/staticfiles/__pycache__/finders.cpython-36.pyc,, +django/contrib/staticfiles/__pycache__/utils.cpython-36.pyc,, +django/contrib/staticfiles/__pycache__/__init__.cpython-36.pyc,, +django/contrib/staticfiles/__pycache__/urls.cpython-36.pyc,, +django/contrib/__pycache__/__init__.cpython-36.pyc,, +django/contrib/flatpages/templatetags/__pycache__/flatpages.cpython-36.pyc,, +django/contrib/flatpages/templatetags/__pycache__/__init__.cpython-36.pyc,, +django/contrib/flatpages/migrations/__pycache__/0001_initial.cpython-36.pyc,, +django/contrib/flatpages/migrations/__pycache__/__init__.cpython-36.pyc,, +django/contrib/flatpages/__pycache__/admin.cpython-36.pyc,, +django/contrib/flatpages/__pycache__/forms.cpython-36.pyc,, +django/contrib/flatpages/__pycache__/models.cpython-36.pyc,, +django/contrib/flatpages/__pycache__/views.cpython-36.pyc,, +django/contrib/flatpages/__pycache__/middleware.cpython-36.pyc,, +django/contrib/flatpages/__pycache__/apps.cpython-36.pyc,, +django/contrib/flatpages/__pycache__/sitemaps.cpython-36.pyc,, +django/contrib/flatpages/__pycache__/__init__.cpython-36.pyc,, +django/contrib/flatpages/__pycache__/urls.cpython-36.pyc,, +django/contrib/sites/migrations/__pycache__/0001_initial.cpython-36.pyc,, +django/contrib/sites/migrations/__pycache__/0002_alter_domain_unique.cpython-36.pyc,, +django/contrib/sites/migrations/__pycache__/__init__.cpython-36.pyc,, +django/contrib/sites/__pycache__/managers.cpython-36.pyc,, +django/contrib/sites/__pycache__/admin.cpython-36.pyc,, +django/contrib/sites/__pycache__/shortcuts.cpython-36.pyc,, +django/contrib/sites/__pycache__/models.cpython-36.pyc,, +django/contrib/sites/__pycache__/management.cpython-36.pyc,, +django/contrib/sites/__pycache__/middleware.cpython-36.pyc,, +django/contrib/sites/__pycache__/apps.cpython-36.pyc,, +django/contrib/sites/__pycache__/__init__.cpython-36.pyc,, +django/contrib/sites/__pycache__/requests.cpython-36.pyc,, +django/contrib/postgres/forms/__pycache__/jsonb.cpython-36.pyc,, +django/contrib/postgres/forms/__pycache__/array.cpython-36.pyc,, +django/contrib/postgres/forms/__pycache__/ranges.cpython-36.pyc,, +django/contrib/postgres/forms/__pycache__/hstore.cpython-36.pyc,, +django/contrib/postgres/forms/__pycache__/__init__.cpython-36.pyc,, +django/contrib/postgres/aggregates/__pycache__/general.cpython-36.pyc,, +django/contrib/postgres/aggregates/__pycache__/statistics.cpython-36.pyc,, +django/contrib/postgres/aggregates/__pycache__/__init__.cpython-36.pyc,, +django/contrib/postgres/__pycache__/lookups.cpython-36.pyc,, +django/contrib/postgres/__pycache__/signals.cpython-36.pyc,, +django/contrib/postgres/__pycache__/operations.cpython-36.pyc,, +django/contrib/postgres/__pycache__/functions.cpython-36.pyc,, +django/contrib/postgres/__pycache__/indexes.cpython-36.pyc,, +django/contrib/postgres/__pycache__/validators.cpython-36.pyc,, +django/contrib/postgres/__pycache__/apps.cpython-36.pyc,, +django/contrib/postgres/__pycache__/search.cpython-36.pyc,, +django/contrib/postgres/__pycache__/utils.cpython-36.pyc,, +django/contrib/postgres/__pycache__/__init__.cpython-36.pyc,, +django/contrib/postgres/fields/__pycache__/jsonb.cpython-36.pyc,, +django/contrib/postgres/fields/__pycache__/array.cpython-36.pyc,, +django/contrib/postgres/fields/__pycache__/ranges.cpython-36.pyc,, +django/contrib/postgres/fields/__pycache__/citext.cpython-36.pyc,, +django/contrib/postgres/fields/__pycache__/utils.cpython-36.pyc,, +django/contrib/postgres/fields/__pycache__/hstore.cpython-36.pyc,, +django/contrib/postgres/fields/__pycache__/__init__.cpython-36.pyc,, +django/contrib/redirects/migrations/__pycache__/0001_initial.cpython-36.pyc,, +django/contrib/redirects/migrations/__pycache__/__init__.cpython-36.pyc,, +django/contrib/redirects/__pycache__/admin.cpython-36.pyc,, +django/contrib/redirects/__pycache__/models.cpython-36.pyc,, +django/contrib/redirects/__pycache__/middleware.cpython-36.pyc,, +django/contrib/redirects/__pycache__/apps.cpython-36.pyc,, +django/contrib/redirects/__pycache__/__init__.cpython-36.pyc,, +django/contrib/sessions/migrations/__pycache__/0001_initial.cpython-36.pyc,, +django/contrib/sessions/migrations/__pycache__/__init__.cpython-36.pyc,, +django/contrib/sessions/backends/__pycache__/signed_cookies.cpython-36.pyc,, +django/contrib/sessions/backends/__pycache__/cached_db.cpython-36.pyc,, +django/contrib/sessions/backends/__pycache__/db.cpython-36.pyc,, +django/contrib/sessions/backends/__pycache__/file.cpython-36.pyc,, +django/contrib/sessions/backends/__pycache__/base.cpython-36.pyc,, +django/contrib/sessions/backends/__pycache__/cache.cpython-36.pyc,, +django/contrib/sessions/backends/__pycache__/__init__.cpython-36.pyc,, +django/contrib/sessions/management/__pycache__/__init__.cpython-36.pyc,, +django/contrib/sessions/management/commands/__pycache__/clearsessions.cpython-36.pyc,, +django/contrib/sessions/management/commands/__pycache__/__init__.cpython-36.pyc,, +django/contrib/sessions/__pycache__/serializers.cpython-36.pyc,, +django/contrib/sessions/__pycache__/base_session.cpython-36.pyc,, +django/contrib/sessions/__pycache__/exceptions.cpython-36.pyc,, +django/contrib/sessions/__pycache__/models.cpython-36.pyc,, +django/contrib/sessions/__pycache__/middleware.cpython-36.pyc,, +django/contrib/sessions/__pycache__/apps.cpython-36.pyc,, +django/contrib/sessions/__pycache__/__init__.cpython-36.pyc,, +django/contrib/sitemaps/management/__pycache__/__init__.cpython-36.pyc,, +django/contrib/sitemaps/management/commands/__pycache__/ping_google.cpython-36.pyc,, +django/contrib/sitemaps/management/commands/__pycache__/__init__.cpython-36.pyc,, +django/contrib/sitemaps/__pycache__/views.cpython-36.pyc,, +django/contrib/sitemaps/__pycache__/apps.cpython-36.pyc,, +django/contrib/sitemaps/__pycache__/__init__.cpython-36.pyc,, +django/contrib/humanize/templatetags/__pycache__/humanize.cpython-36.pyc,, +django/contrib/humanize/templatetags/__pycache__/__init__.cpython-36.pyc,, +django/contrib/humanize/__pycache__/apps.cpython-36.pyc,, +django/contrib/humanize/__pycache__/__init__.cpython-36.pyc,, +django/contrib/contenttypes/migrations/__pycache__/0001_initial.cpython-36.pyc,, +django/contrib/contenttypes/migrations/__pycache__/0002_remove_content_type_name.cpython-36.pyc,, +django/contrib/contenttypes/migrations/__pycache__/__init__.cpython-36.pyc,, +django/contrib/contenttypes/management/__pycache__/__init__.cpython-36.pyc,, +django/contrib/contenttypes/management/commands/__pycache__/remove_stale_contenttypes.cpython-36.pyc,, +django/contrib/contenttypes/management/commands/__pycache__/__init__.cpython-36.pyc,, +django/contrib/contenttypes/__pycache__/checks.cpython-36.pyc,, +django/contrib/contenttypes/__pycache__/admin.cpython-36.pyc,, +django/contrib/contenttypes/__pycache__/forms.cpython-36.pyc,, +django/contrib/contenttypes/__pycache__/models.cpython-36.pyc,, +django/contrib/contenttypes/__pycache__/views.cpython-36.pyc,, +django/contrib/contenttypes/__pycache__/apps.cpython-36.pyc,, +django/contrib/contenttypes/__pycache__/fields.cpython-36.pyc,, +django/contrib/contenttypes/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/libgeos.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/prepared.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/point.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/factory.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/base.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/linestring.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/collections.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/mutable_list.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/polygon.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/geometry.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/coordseq.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/io.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/geos/__pycache__/error.cpython-36.pyc,, +django/contrib/gis/geos/prototypes/__pycache__/predicates.cpython-36.pyc,, +django/contrib/gis/geos/prototypes/__pycache__/prepared.cpython-36.pyc,, +django/contrib/gis/geos/prototypes/__pycache__/topology.cpython-36.pyc,, +django/contrib/gis/geos/prototypes/__pycache__/errcheck.cpython-36.pyc,, +django/contrib/gis/geos/prototypes/__pycache__/threadsafe.cpython-36.pyc,, +django/contrib/gis/geos/prototypes/__pycache__/coordseq.cpython-36.pyc,, +django/contrib/gis/geos/prototypes/__pycache__/io.cpython-36.pyc,, +django/contrib/gis/geos/prototypes/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/geos/prototypes/__pycache__/geom.cpython-36.pyc,, +django/contrib/gis/geos/prototypes/__pycache__/misc.cpython-36.pyc,, +django/contrib/gis/forms/__pycache__/widgets.cpython-36.pyc,, +django/contrib/gis/forms/__pycache__/fields.cpython-36.pyc,, +django/contrib/gis/forms/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/feature.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/field.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/envelope.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/srs.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/layer.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/datasource.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/libgdal.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/geometries.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/base.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/geomtype.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/error.cpython-36.pyc,, +django/contrib/gis/gdal/__pycache__/driver.cpython-36.pyc,, +django/contrib/gis/gdal/prototypes/__pycache__/generation.cpython-36.pyc,, +django/contrib/gis/gdal/prototypes/__pycache__/srs.cpython-36.pyc,, +django/contrib/gis/gdal/prototypes/__pycache__/errcheck.cpython-36.pyc,, +django/contrib/gis/gdal/prototypes/__pycache__/raster.cpython-36.pyc,, +django/contrib/gis/gdal/prototypes/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/gdal/prototypes/__pycache__/ds.cpython-36.pyc,, +django/contrib/gis/gdal/prototypes/__pycache__/geom.cpython-36.pyc,, +django/contrib/gis/gdal/raster/__pycache__/const.cpython-36.pyc,, +django/contrib/gis/gdal/raster/__pycache__/band.cpython-36.pyc,, +django/contrib/gis/gdal/raster/__pycache__/base.cpython-36.pyc,, +django/contrib/gis/gdal/raster/__pycache__/source.cpython-36.pyc,, +django/contrib/gis/gdal/raster/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/admin/__pycache__/widgets.cpython-36.pyc,, +django/contrib/gis/admin/__pycache__/options.cpython-36.pyc,, +django/contrib/gis/admin/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/management/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/management/commands/__pycache__/inspectdb.cpython-36.pyc,, +django/contrib/gis/management/commands/__pycache__/ogrinspect.cpython-36.pyc,, +django/contrib/gis/management/commands/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/utils/__pycache__/ogrinfo.cpython-36.pyc,, +django/contrib/gis/utils/__pycache__/srs.cpython-36.pyc,, +django/contrib/gis/utils/__pycache__/ogrinspect.cpython-36.pyc,, +django/contrib/gis/utils/__pycache__/layermapping.cpython-36.pyc,, +django/contrib/gis/utils/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/__pycache__/measure.cpython-36.pyc,, +django/contrib/gis/__pycache__/feeds.cpython-36.pyc,, +django/contrib/gis/__pycache__/shortcuts.cpython-36.pyc,, +django/contrib/gis/__pycache__/views.cpython-36.pyc,, +django/contrib/gis/__pycache__/apps.cpython-36.pyc,, +django/contrib/gis/__pycache__/geometry.cpython-36.pyc,, +django/contrib/gis/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/__pycache__/ptr.cpython-36.pyc,, +django/contrib/gis/serializers/__pycache__/geojson.cpython-36.pyc,, +django/contrib/gis/serializers/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/sitemaps/__pycache__/views.cpython-36.pyc,, +django/contrib/gis/sitemaps/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/sitemaps/__pycache__/kml.cpython-36.pyc,, +django/contrib/gis/db/backends/oracle/__pycache__/introspection.cpython-36.pyc,, +django/contrib/gis/db/backends/oracle/__pycache__/operations.cpython-36.pyc,, +django/contrib/gis/db/backends/oracle/__pycache__/models.cpython-36.pyc,, +django/contrib/gis/db/backends/oracle/__pycache__/base.cpython-36.pyc,, +django/contrib/gis/db/backends/oracle/__pycache__/features.cpython-36.pyc,, +django/contrib/gis/db/backends/oracle/__pycache__/adapter.cpython-36.pyc,, +django/contrib/gis/db/backends/oracle/__pycache__/schema.cpython-36.pyc,, +django/contrib/gis/db/backends/oracle/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/db/backends/__pycache__/utils.cpython-36.pyc,, +django/contrib/gis/db/backends/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/db/backends/postgis/__pycache__/introspection.cpython-36.pyc,, +django/contrib/gis/db/backends/postgis/__pycache__/operations.cpython-36.pyc,, +django/contrib/gis/db/backends/postgis/__pycache__/const.cpython-36.pyc,, +django/contrib/gis/db/backends/postgis/__pycache__/models.cpython-36.pyc,, +django/contrib/gis/db/backends/postgis/__pycache__/base.cpython-36.pyc,, +django/contrib/gis/db/backends/postgis/__pycache__/features.cpython-36.pyc,, +django/contrib/gis/db/backends/postgis/__pycache__/adapter.cpython-36.pyc,, +django/contrib/gis/db/backends/postgis/__pycache__/schema.cpython-36.pyc,, +django/contrib/gis/db/backends/postgis/__pycache__/pgraster.cpython-36.pyc,, +django/contrib/gis/db/backends/postgis/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/db/backends/mysql/__pycache__/introspection.cpython-36.pyc,, +django/contrib/gis/db/backends/mysql/__pycache__/operations.cpython-36.pyc,, +django/contrib/gis/db/backends/mysql/__pycache__/base.cpython-36.pyc,, +django/contrib/gis/db/backends/mysql/__pycache__/features.cpython-36.pyc,, +django/contrib/gis/db/backends/mysql/__pycache__/schema.cpython-36.pyc,, +django/contrib/gis/db/backends/mysql/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/db/backends/spatialite/__pycache__/introspection.cpython-36.pyc,, +django/contrib/gis/db/backends/spatialite/__pycache__/client.cpython-36.pyc,, +django/contrib/gis/db/backends/spatialite/__pycache__/operations.cpython-36.pyc,, +django/contrib/gis/db/backends/spatialite/__pycache__/models.cpython-36.pyc,, +django/contrib/gis/db/backends/spatialite/__pycache__/base.cpython-36.pyc,, +django/contrib/gis/db/backends/spatialite/__pycache__/features.cpython-36.pyc,, +django/contrib/gis/db/backends/spatialite/__pycache__/adapter.cpython-36.pyc,, +django/contrib/gis/db/backends/spatialite/__pycache__/schema.cpython-36.pyc,, +django/contrib/gis/db/backends/spatialite/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/db/backends/base/__pycache__/operations.cpython-36.pyc,, +django/contrib/gis/db/backends/base/__pycache__/models.cpython-36.pyc,, +django/contrib/gis/db/backends/base/__pycache__/features.cpython-36.pyc,, +django/contrib/gis/db/backends/base/__pycache__/adapter.cpython-36.pyc,, +django/contrib/gis/db/backends/base/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/db/models/__pycache__/lookups.cpython-36.pyc,, +django/contrib/gis/db/models/__pycache__/proxy.cpython-36.pyc,, +django/contrib/gis/db/models/__pycache__/functions.cpython-36.pyc,, +django/contrib/gis/db/models/__pycache__/aggregates.cpython-36.pyc,, +django/contrib/gis/db/models/__pycache__/fields.cpython-36.pyc,, +django/contrib/gis/db/models/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/db/models/sql/__pycache__/conversion.cpython-36.pyc,, +django/contrib/gis/db/models/sql/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/db/__pycache__/__init__.cpython-36.pyc,, +django/contrib/gis/geoip2/__pycache__/resources.cpython-36.pyc,, +django/contrib/gis/geoip2/__pycache__/base.cpython-36.pyc,, +django/contrib/gis/geoip2/__pycache__/__init__.cpython-36.pyc,, +django/contrib/admindocs/__pycache__/views.cpython-36.pyc,, +django/contrib/admindocs/__pycache__/middleware.cpython-36.pyc,, +django/contrib/admindocs/__pycache__/apps.cpython-36.pyc,, +django/contrib/admindocs/__pycache__/utils.cpython-36.pyc,, +django/contrib/admindocs/__pycache__/__init__.cpython-36.pyc,, +django/contrib/admindocs/__pycache__/urls.cpython-36.pyc,, +django/http/__pycache__/response.cpython-36.pyc,, +django/http/__pycache__/multipartparser.cpython-36.pyc,, +django/http/__pycache__/request.cpython-36.pyc,, +django/http/__pycache__/cookie.cpython-36.pyc,, +django/http/__pycache__/__init__.cpython-36.pyc,, +django/urls/__pycache__/resolvers.cpython-36.pyc,, +django/urls/__pycache__/exceptions.cpython-36.pyc,, +django/urls/__pycache__/converters.cpython-36.pyc,, +django/urls/__pycache__/base.cpython-36.pyc,, +django/urls/__pycache__/utils.cpython-36.pyc,, +django/urls/__pycache__/conf.cpython-36.pyc,, +django/urls/__pycache__/__init__.cpython-36.pyc,, +django/db/migrations/__pycache__/exceptions.cpython-36.pyc,, +django/db/migrations/__pycache__/serializer.cpython-36.pyc,, +django/db/migrations/__pycache__/loader.cpython-36.pyc,, +django/db/migrations/__pycache__/state.cpython-36.pyc,, +django/db/migrations/__pycache__/autodetector.cpython-36.pyc,, +django/db/migrations/__pycache__/recorder.cpython-36.pyc,, +django/db/migrations/__pycache__/questioner.cpython-36.pyc,, +django/db/migrations/__pycache__/optimizer.cpython-36.pyc,, +django/db/migrations/__pycache__/writer.cpython-36.pyc,, +django/db/migrations/__pycache__/executor.cpython-36.pyc,, +django/db/migrations/__pycache__/topological_sort.cpython-36.pyc,, +django/db/migrations/__pycache__/migration.cpython-36.pyc,, +django/db/migrations/__pycache__/utils.cpython-36.pyc,, +django/db/migrations/__pycache__/__init__.cpython-36.pyc,, +django/db/migrations/__pycache__/graph.cpython-36.pyc,, +django/db/migrations/operations/__pycache__/models.cpython-36.pyc,, +django/db/migrations/operations/__pycache__/base.cpython-36.pyc,, +django/db/migrations/operations/__pycache__/special.cpython-36.pyc,, +django/db/migrations/operations/__pycache__/utils.cpython-36.pyc,, +django/db/migrations/operations/__pycache__/fields.cpython-36.pyc,, +django/db/migrations/operations/__pycache__/__init__.cpython-36.pyc,, +django/db/backends/postgresql/__pycache__/introspection.cpython-36.pyc,, +django/db/backends/postgresql/__pycache__/client.cpython-36.pyc,, +django/db/backends/postgresql/__pycache__/operations.cpython-36.pyc,, +django/db/backends/postgresql/__pycache__/creation.cpython-36.pyc,, +django/db/backends/postgresql/__pycache__/base.cpython-36.pyc,, +django/db/backends/postgresql/__pycache__/features.cpython-36.pyc,, +django/db/backends/postgresql/__pycache__/schema.cpython-36.pyc,, +django/db/backends/postgresql/__pycache__/utils.cpython-36.pyc,, +django/db/backends/postgresql/__pycache__/__init__.cpython-36.pyc,, +django/db/backends/dummy/__pycache__/base.cpython-36.pyc,, +django/db/backends/dummy/__pycache__/features.cpython-36.pyc,, +django/db/backends/dummy/__pycache__/__init__.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/introspection.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/client.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/operations.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/creation.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/functions.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/compiler.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/base.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/features.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/schema.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/utils.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/validation.cpython-36.pyc,, +django/db/backends/oracle/__pycache__/__init__.cpython-36.pyc,, +django/db/backends/__pycache__/ddl_references.cpython-36.pyc,, +django/db/backends/__pycache__/signals.cpython-36.pyc,, +django/db/backends/__pycache__/utils.cpython-36.pyc,, +django/db/backends/__pycache__/__init__.cpython-36.pyc,, +django/db/backends/postgresql_psycopg2/__pycache__/introspection.cpython-36.pyc,, +django/db/backends/postgresql_psycopg2/__pycache__/client.cpython-36.pyc,, +django/db/backends/postgresql_psycopg2/__pycache__/operations.cpython-36.pyc,, +django/db/backends/postgresql_psycopg2/__pycache__/creation.cpython-36.pyc,, +django/db/backends/postgresql_psycopg2/__pycache__/base.cpython-36.pyc,, +django/db/backends/postgresql_psycopg2/__pycache__/features.cpython-36.pyc,, +django/db/backends/postgresql_psycopg2/__pycache__/schema.cpython-36.pyc,, +django/db/backends/postgresql_psycopg2/__pycache__/utils.cpython-36.pyc,, +django/db/backends/postgresql_psycopg2/__pycache__/__init__.cpython-36.pyc,, +django/db/backends/sqlite3/__pycache__/introspection.cpython-36.pyc,, +django/db/backends/sqlite3/__pycache__/client.cpython-36.pyc,, +django/db/backends/sqlite3/__pycache__/operations.cpython-36.pyc,, +django/db/backends/sqlite3/__pycache__/creation.cpython-36.pyc,, +django/db/backends/sqlite3/__pycache__/base.cpython-36.pyc,, +django/db/backends/sqlite3/__pycache__/features.cpython-36.pyc,, +django/db/backends/sqlite3/__pycache__/schema.cpython-36.pyc,, +django/db/backends/sqlite3/__pycache__/__init__.cpython-36.pyc,, +django/db/backends/mysql/__pycache__/introspection.cpython-36.pyc,, +django/db/backends/mysql/__pycache__/client.cpython-36.pyc,, +django/db/backends/mysql/__pycache__/operations.cpython-36.pyc,, +django/db/backends/mysql/__pycache__/creation.cpython-36.pyc,, +django/db/backends/mysql/__pycache__/compiler.cpython-36.pyc,, +django/db/backends/mysql/__pycache__/base.cpython-36.pyc,, +django/db/backends/mysql/__pycache__/features.cpython-36.pyc,, +django/db/backends/mysql/__pycache__/schema.cpython-36.pyc,, +django/db/backends/mysql/__pycache__/validation.cpython-36.pyc,, +django/db/backends/mysql/__pycache__/__init__.cpython-36.pyc,, +django/db/backends/base/__pycache__/introspection.cpython-36.pyc,, +django/db/backends/base/__pycache__/client.cpython-36.pyc,, +django/db/backends/base/__pycache__/operations.cpython-36.pyc,, +django/db/backends/base/__pycache__/creation.cpython-36.pyc,, +django/db/backends/base/__pycache__/base.cpython-36.pyc,, +django/db/backends/base/__pycache__/features.cpython-36.pyc,, +django/db/backends/base/__pycache__/schema.cpython-36.pyc,, +django/db/backends/base/__pycache__/validation.cpython-36.pyc,, +django/db/backends/base/__pycache__/__init__.cpython-36.pyc,, +django/db/models/__pycache__/lookups.cpython-36.pyc,, +django/db/models/__pycache__/expressions.cpython-36.pyc,, +django/db/models/__pycache__/constants.cpython-36.pyc,, +django/db/models/__pycache__/query_utils.cpython-36.pyc,, +django/db/models/__pycache__/query.cpython-36.pyc,, +django/db/models/__pycache__/signals.cpython-36.pyc,, +django/db/models/__pycache__/indexes.cpython-36.pyc,, +django/db/models/__pycache__/base.cpython-36.pyc,, +django/db/models/__pycache__/deletion.cpython-36.pyc,, +django/db/models/__pycache__/utils.cpython-36.pyc,, +django/db/models/__pycache__/aggregates.cpython-36.pyc,, +django/db/models/__pycache__/manager.cpython-36.pyc,, +django/db/models/__pycache__/options.cpython-36.pyc,, +django/db/models/__pycache__/__init__.cpython-36.pyc,, +django/db/models/functions/__pycache__/datetime.cpython-36.pyc,, +django/db/models/functions/__pycache__/window.cpython-36.pyc,, +django/db/models/functions/__pycache__/base.cpython-36.pyc,, +django/db/models/functions/__pycache__/__init__.cpython-36.pyc,, +django/db/models/fields/__pycache__/related.cpython-36.pyc,, +django/db/models/fields/__pycache__/proxy.cpython-36.pyc,, +django/db/models/fields/__pycache__/files.cpython-36.pyc,, +django/db/models/fields/__pycache__/mixins.cpython-36.pyc,, +django/db/models/fields/__pycache__/related_lookups.cpython-36.pyc,, +django/db/models/fields/__pycache__/related_descriptors.cpython-36.pyc,, +django/db/models/fields/__pycache__/reverse_related.cpython-36.pyc,, +django/db/models/fields/__pycache__/__init__.cpython-36.pyc,, +django/db/models/sql/__pycache__/constants.cpython-36.pyc,, +django/db/models/sql/__pycache__/datastructures.cpython-36.pyc,, +django/db/models/sql/__pycache__/query.cpython-36.pyc,, +django/db/models/sql/__pycache__/compiler.cpython-36.pyc,, +django/db/models/sql/__pycache__/subqueries.cpython-36.pyc,, +django/db/models/sql/__pycache__/where.cpython-36.pyc,, +django/db/models/sql/__pycache__/__init__.cpython-36.pyc,, +django/db/__pycache__/transaction.cpython-36.pyc,, +django/db/__pycache__/utils.cpython-36.pyc,, +django/db/__pycache__/__init__.cpython-36.pyc,, +django/views/decorators/__pycache__/debug.cpython-36.pyc,, +django/views/decorators/__pycache__/csrf.cpython-36.pyc,, +django/views/decorators/__pycache__/clickjacking.cpython-36.pyc,, +django/views/decorators/__pycache__/gzip.cpython-36.pyc,, +django/views/decorators/__pycache__/vary.cpython-36.pyc,, +django/views/decorators/__pycache__/cache.cpython-36.pyc,, +django/views/decorators/__pycache__/http.cpython-36.pyc,, +django/views/decorators/__pycache__/__init__.cpython-36.pyc,, +django/views/__pycache__/debug.cpython-36.pyc,, +django/views/__pycache__/csrf.cpython-36.pyc,, +django/views/__pycache__/i18n.cpython-36.pyc,, +django/views/__pycache__/defaults.cpython-36.pyc,, +django/views/__pycache__/static.cpython-36.pyc,, +django/views/__pycache__/__init__.cpython-36.pyc,, +django/views/generic/__pycache__/edit.cpython-36.pyc,, +django/views/generic/__pycache__/list.cpython-36.pyc,, +django/views/generic/__pycache__/detail.cpython-36.pyc,, +django/views/generic/__pycache__/base.cpython-36.pyc,, +django/views/generic/__pycache__/dates.cpython-36.pyc,, +django/views/generic/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/sl/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/sl/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/sk/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/sk/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/pl/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/pl/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/vi/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/vi/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/sq/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/sq/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/de_CH/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/de_CH/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/sv/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/sv/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/ga/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/ga/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/he/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/he/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/km/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/km/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/nn/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/nn/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/da/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/da/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/es_NI/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/es_NI/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/mn/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/mn/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/pt_BR/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/pt_BR/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/es_CO/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/es_CO/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/ja/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/ja/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/el/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/el/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/lv/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/lv/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/fy/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/fy/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/it/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/it/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/ca/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/ca/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/is/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/is/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/cs/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/cs/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/te/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/te/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/zh_Hans/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/zh_Hans/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/ru/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/ru/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/zh_Hant/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/zh_Hant/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/ro/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/ro/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/pt/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/pt/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/uk/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/uk/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/sr/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/sr/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/en_AU/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/en_AU/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/en_GB/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/en_GB/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/es_PR/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/es_PR/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/ml/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/ml/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/es_MX/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/es_MX/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/mk/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/mk/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/kn/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/kn/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/bs/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/bs/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/ar/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/ar/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/gl/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/gl/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/hr/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/hr/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/hu/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/hu/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/nl/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/nl/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/bg/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/bg/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/bn/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/bn/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/es_AR/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/es_AR/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/nb/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/nb/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/hi/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/hi/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/ka/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/ka/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/de/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/de/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/az/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/az/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/gd/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/gd/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/ko/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/ko/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/fi/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/fi/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/sr_Latn/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/sr_Latn/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/eo/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/eo/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/id/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/id/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/fr/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/fr/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/es/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/es/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/et/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/et/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/en/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/en/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/fa/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/fa/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/lt/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/lt/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/cy/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/cy/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/eu/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/eu/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/ta/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/ta/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/th/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/th/__pycache__/__init__.cpython-36.pyc,, +django/conf/locale/tr/__pycache__/formats.cpython-36.pyc,, +django/conf/locale/tr/__pycache__/__init__.cpython-36.pyc,, +django/conf/__pycache__/global_settings.cpython-36.pyc,, +django/conf/__pycache__/__init__.cpython-36.pyc,, +django/conf/urls/__pycache__/i18n.cpython-36.pyc,, +django/conf/urls/__pycache__/static.cpython-36.pyc,, +django/conf/urls/__pycache__/__init__.cpython-36.pyc,, +django/apps/__pycache__/config.cpython-36.pyc,, +django/apps/__pycache__/registry.cpython-36.pyc,, +django/apps/__pycache__/__init__.cpython-36.pyc,, +../../../bin/__pycache__/django-admin.cpython-36.pyc,, diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/bin/django-admin.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/bin/django-admin.py old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/conf/project_template/manage.py-tpl b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/conf/project_template/manage.py-tpl old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/admin/migrations/__pycache__/0002_logentry_remove_auto_add.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/admin/migrations/__pycache__/0002_logentry_remove_auto_add.cpython-36.pyc deleted file mode 100644 index 0fcb51c0..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/admin/migrations/__pycache__/0002_logentry_remove_auto_add.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/admin/static/admin/fonts/LICENSE.txt b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/admin/static/admin/fonts/LICENSE.txt index 75b52484..d6456956 100644 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/admin/static/admin/fonts/LICENSE.txt +++ b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/admin/static/admin/fonts/LICENSE.txt @@ -1,202 +1,202 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0002_alter_permission_name_max_length.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0002_alter_permission_name_max_length.cpython-36.pyc deleted file mode 100644 index b98b8f4b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0002_alter_permission_name_max_length.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0003_alter_user_email_max_length.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0003_alter_user_email_max_length.cpython-36.pyc deleted file mode 100644 index cb2bd616..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0003_alter_user_email_max_length.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0004_alter_user_username_opts.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0004_alter_user_username_opts.cpython-36.pyc deleted file mode 100644 index d135b523..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0004_alter_user_username_opts.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0005_alter_user_last_login_null.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0005_alter_user_last_login_null.cpython-36.pyc deleted file mode 100644 index cc1a72fb..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0005_alter_user_last_login_null.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0006_require_contenttypes_0002.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0006_require_contenttypes_0002.cpython-36.pyc deleted file mode 100644 index c71cc0e6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0006_require_contenttypes_0002.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0007_alter_validators_add_error_messages.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0007_alter_validators_add_error_messages.cpython-36.pyc deleted file mode 100644 index ab3d70fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0007_alter_validators_add_error_messages.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0008_alter_user_username_max_length.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0008_alter_user_username_max_length.cpython-36.pyc deleted file mode 100644 index 8976ad0b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0008_alter_user_username_max_length.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0009_alter_user_last_name_max_length.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0009_alter_user_last_name_max_length.cpython-36.pyc deleted file mode 100644 index e03cf66c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/auth/migrations/__pycache__/0009_alter_user_last_name_max_length.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/contenttypes/management/commands/__pycache__/remove_stale_contenttypes.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/contenttypes/management/commands/__pycache__/remove_stale_contenttypes.cpython-36.pyc deleted file mode 100644 index a10d9277..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/contenttypes/management/commands/__pycache__/remove_stale_contenttypes.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/contenttypes/migrations/__pycache__/0002_remove_content_type_name.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/contenttypes/migrations/__pycache__/0002_remove_content_type_name.cpython-36.pyc deleted file mode 100644 index bb5f7319..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/contenttypes/migrations/__pycache__/0002_remove_content_type_name.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/__pycache__/collectstatic.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/__pycache__/collectstatic.cpython-36.pyc deleted file mode 100644 index ca215355..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/__pycache__/collectstatic.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy-1.14.0.dist-info/RECORD b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy-1.14.0.dist-info/RECORD index 70711a36..fc083e9f 100644 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy-1.14.0.dist-info/RECORD +++ b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy-1.14.0.dist-info/RECORD @@ -1,747 +1,747 @@ -numpy/__config__.py,sha256=KNB1kK5pX6g-tTxs41ZfrD32q1asv7QolLtKuOQELjE,1519 -numpy/__init__.py,sha256=0GuK-LaEiJRiqvrRckRIORF2gDvUeVsVuTIqTIiheQg,6251 -numpy/_distributor_init.py,sha256=IgPkSK3H9bgjFeUfWuXhjKrgetQl5ztUW-rTyjGHK3c,331 -numpy/_globals.py,sha256=qf1yKIuK_D0imA5KlGE8iIwMg8-cPjDOn09XDTpQ3-k,1859 -numpy/_import_tools.py,sha256=3SF2nj5PVN-dvo90nyR_MKDesG_CkdjsKjnEJz5dVtg,13234 -numpy/add_newdocs.py,sha256=YsVuFJ3tvj9yfNA5owaHPrpL_Me-tfHA9Hf3-dtY2UA,234747 -numpy/conftest.py,sha256=oeEsLztUga9GPjZv6DkotBI_LPyaG0dP1sPxiILtxyg,1557 -numpy/ctypeslib.py,sha256=x1f8LcCdsjyBebwgN6dAiidqZ2yDtOgABTTyKq26eD4,14730 -numpy/dual.py,sha256=YCy6m-ZNQ4dnUdHm7IXtqdJhxu-Od2_IALF9t9IGGvI,1864 -numpy/LICENSE.txt,sha256=LZqeBuw7X8mx5HrtuCzD2Tbxik_IGPTL59XiwxN--20,42197 -numpy/matlib.py,sha256=bfk5RflWhOjnBKhpU4L-WDafyzoNIy5-K-8MMyIauN8,9809 -numpy/setup.py,sha256=lsyhnRXfo0ybq63nVUX8HnYhQ1mI0bSic-mk-lK3wnc,920 -numpy/version.py,sha256=N8joN8hIjl-JnoNgGod1XOrcuPE8Q3GkmPRb2gZ9XJc,294 -numpy/compat/__init__.py,sha256=MHle4gJcrXh1w4SNv0mz5rbUTAjAzHnyO3rtbSW3AUo,498 -numpy/compat/_inspect.py,sha256=e3YHRFlppbfcnSSwlAdlxON5cSW0pEZT6zh7qRlvlkM,7554 -numpy/compat/py3k.py,sha256=ppRKNypmqiWf7uiHBPpa1zPsHRQj-FGjwH1l3VRO3H0,3637 -numpy/compat/setup.py,sha256=XpMi600IpZvzlNAuOaiwxAUZXDEhzEU4HYh1_p2kBCY,371 -numpy/core/__init__.py,sha256=odFytSn-HunBsWr8_QBcoA_RbQaH2fLFDb3gN70K_R8,3044 -numpy/core/_dummy.cpython-36m-darwin.so,sha256=Yr6euqkb2Jh1uaHOZvT-r26pbuANiL6UsRq3nmVZSO4,25264 -numpy/core/_internal.py,sha256=dfk2fEU4fpw0bo1acllt9eN82Mqh0f8hWaNhiVKe5pI,21639 -numpy/core/_methods.py,sha256=84BTKNFGhQO1xiQLHAnbgHFiogU086c8AXJGFQ-hqxc,4704 -numpy/core/arrayprint.py,sha256=nLARQljOwPsUSb_Ar8y8PxQw7XQ4vcjGfs-_7Aff8n8,54746 -numpy/core/cversions.py,sha256=ukYNpkei0Coi7DOcbroXuDoXc6kl5odxmcy_39pszA0,413 -numpy/core/defchararray.py,sha256=cWV-tZK51T9EGNzAjminv-7tjUh_Ccak1tvBnZk-8W8,67369 -numpy/core/einsumfunc.py,sha256=rt-Myg_N27dcgpVVKdkhqLMMklr8OtNAd303MczLfmY,39801 -numpy/core/fromnumeric.py,sha256=k1NoHWD7lliZtgnZOd6ojSBZWQjH3atynpFVR41WJ7c,100637 -numpy/core/function_base.py,sha256=kvzSPr9FxeyXxhR1_1XOMlmDW0Dw4u1KECF3aUEtTGg,12340 -numpy/core/generate_numpy_api.py,sha256=PSNxF101-jn99AzQNLRxu4tXT9SzoUTmOhL1w_-tV_A,7506 -numpy/core/getlimits.py,sha256=bD7KdPDYEwVyBn7MuybKjBFTxWuFWFu5A-bsTjLx9zE,18422 -numpy/core/info.py,sha256=SjDs9EfOswEy-ABgUr9f09v83sUdhmwFXRlaZbOGCnA,4692 -numpy/core/machar.py,sha256=I083PVybsu10wDgHzs7vxpvd1KigQuoSqCqSRBKn84A,10789 -numpy/core/memmap.py,sha256=GTz2LUpjGeHk5D4PNcsTT7GJK-fNzzX2outwZ7yb78Q,11432 -numpy/core/multiarray.cpython-36m-darwin.so,sha256=zVxKm3-ARIpmmB8A_wRHVXPfolmi6yfIi9cJAe-NawA,4633048 -numpy/core/multiarray_tests.cpython-36m-darwin.so,sha256=AewE56ndAKIrCiHdXlwHyQljeLFOJNNx3gj6S2i2ATs,222604 -numpy/core/numeric.py,sha256=lGlzGIWQeeJFbZWuSWVwcK5KHOMrEX-TsERZt3cJq1A,85731 -numpy/core/numerictypes.py,sha256=hyWsBr_u8zEkwOoZGyqxl4Hw8r6pLRWJulfNbSDk_fo,29102 -numpy/core/operand_flag_tests.cpython-36m-darwin.so,sha256=aONV3cB0lZjTjXuLCEdG_zKSKlHn-ftyfZI1dkUlWLI,26768 -numpy/core/records.py,sha256=0Gw_S2n2kt9PUQB80Hw1p-TBVo5NsIKCUHsBJJqQUtc,29609 -numpy/core/setup.py,sha256=-BWphQJ41KoTzf4rrg_VpuHNzf5Zz3svG11r90VTfas,41477 -numpy/core/setup_common.py,sha256=ANouzwSb8f8SLYIvhomoY_ct_xPUB85qo-j02OwYuOc,15953 -numpy/core/shape_base.py,sha256=e9au6U6FRQgcbBCqKC2yzbIiruqH0EUuob1LhyVJQIA,18548 -numpy/core/struct_ufunc_test.cpython-36m-darwin.so,sha256=wRHi5yd7SmNcgeluSTTAjEK07It88ctJB7Xuow8GcnA,26844 -numpy/core/test_rational.cpython-36m-darwin.so,sha256=z-5v5c_-av2LZ3bbpFLIamAEjUnW-shd_r3ppdlPY3w,125328 -numpy/core/umath.cpython-36m-darwin.so,sha256=6vnHqJ-0pAIySnzAaNejiXdGigZgYhm5XM8TXlO_5C4,2348376 -numpy/core/umath_tests.cpython-36m-darwin.so,sha256=nQYkoDVTuC_PPwklxKiNfWmpsawCDEpgH0EL5KqUsT4,54108 -numpy/core/include/numpy/__multiarray_api.h,sha256=yepclh-ePKzaERkl10dDfs_HaR6vhu6n7-sI_zZWyjw,61035 -numpy/core/include/numpy/__ufunc_api.h,sha256=z3FkGMT6z9c6j0ODa2A4QY-54qmIyLy-O7LjoSgluq0,11657 -numpy/core/include/numpy/_neighborhood_iterator_imp.h,sha256=hNiUJ3gmJRxdjByk5R5jmLeBKpNfaP_29KLHFuTrSIA,1861 -numpy/core/include/numpy/_numpyconfig.h,sha256=Hm9f4N4IO7JFjrGKbrAaBeSLRKGseOIQ99z_gvYF2j8,982 -numpy/core/include/numpy/arrayobject.h,sha256=SXj-2avTHV8mNWvv7sOYHLKkRKcafDG7_HNpQNot1GE,164 -numpy/core/include/numpy/arrayscalars.h,sha256=vC7QCznlT8vkyvxbIh4QNwi1LR7UkP7GJ1j_0ZiJa1E,3509 -numpy/core/include/numpy/halffloat.h,sha256=ohvyl3Kz3mB1hW3MRzxwPDH-0L9WWM_eKhvYLjtT_2w,1878 -numpy/core/include/numpy/multiarray_api.txt,sha256=pSPa8_5viPnySHv8QTQpNOM3Bx4_dDirI_WmdGYd5hk,55812 -numpy/core/include/numpy/ndarrayobject.h,sha256=DzoNq38b7T78jcML3cEQ-Xf3l15goFWMag0C6vgj9KU,10891 -numpy/core/include/numpy/ndarraytypes.h,sha256=Adea0CadJ5obrdnPodrY1B_TqjyC3wdsxqvX0D6yiGw,64303 -numpy/core/include/numpy/noprefix.h,sha256=YE-lWegAdZKI5lf44AW5jiWbnmO6hircWzj_WMFrLT4,6786 -numpy/core/include/numpy/npy_1_7_deprecated_api.h,sha256=NxVeVL9P08clRuJlLQJIfH9QrgVtkqtndelZESo23NY,4604 -numpy/core/include/numpy/npy_3kcompat.h,sha256=0cNvBxix_U8mqFgqGjC-Ht08WUT3oy32ugKXPNJM3AM,12181 -numpy/core/include/numpy/npy_common.h,sha256=i-I_roGPEsePJCUNk6PSBp3Aa4Kd6wTxyZfgnU-RnxM,37647 -numpy/core/include/numpy/npy_cpu.h,sha256=s8TmXL352YGFC--KCSp-_4iQxXFU58Y5XsDfEFHInH8,2988 -numpy/core/include/numpy/npy_endian.h,sha256=t_w5L4fDg3rmaHa3ZmhcZ-1dkTYV-FKdNCR8NBY_MUs,2288 -numpy/core/include/numpy/npy_interrupt.h,sha256=wMRh41xeFmGEOkwxJpeLp9U-9mCbUv7VeAdAu28p9Kw,3439 -numpy/core/include/numpy/npy_math.h,sha256=o1g_kScKQi6Z_a51-iosiQKSBfG0OqsvsD7sE13Z0Ms,18520 -numpy/core/include/numpy/npy_no_deprecated_api.h,sha256=X-wRYdpuwIuerTnBblKjR7Dqsv8rqxn01RFLVWUHvi8,567 -numpy/core/include/numpy/npy_os.h,sha256=cEvEvpD92EeFjsjRelw1dXJaHYL-0yPJDuz3VeSJs4E,817 -numpy/core/include/numpy/numpyconfig.h,sha256=rBffDZbJysfclc1p9K9DulOKMDMrrU_FRfsx0THGV78,1167 -numpy/core/include/numpy/old_defines.h,sha256=7eiZoi7JrdVT9LXKCoeta5AoIncGa98GcVlWqDrLjwk,6306 -numpy/core/include/numpy/oldnumeric.h,sha256=Yo-LiSzVfDK2YyhlH41ff4gS0m-lv8XjI4JcAzpdy94,708 -numpy/core/include/numpy/ufunc_api.txt,sha256=RZO1PJ1AqVk61bQH1lfqYNzM6CF4dqM_06WVLJ8Qbek,6134 -numpy/core/include/numpy/ufuncobject.h,sha256=9osdJ72Vfkb9UJzs52ssKf0Wmgs_vzMch4NBuEyc12U,12524 -numpy/core/include/numpy/utils.h,sha256=0RTrU1-0V98LJnba5hTGSUoRnxo4HwM9cm2zbxC8B6E,628 -numpy/core/lib/libnpymath.a,sha256=C2Xz9A7N-3wFDyoQh4BdQfWbe7Ygte65Ca3A0_b8DnM,231440 -numpy/core/lib/npy-pkg-config/mlib.ini,sha256=puARujEiRP-jFD3s9Jwpe6E1fgT9T3YIny-pWJRDYNE,139 -numpy/core/lib/npy-pkg-config/npymath.ini,sha256=kamUNrYKAmXqQa8BcNv7D5sLqHh6bnChM0_5rZCsTfY,360 -numpy/core/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/core/tests/test_abc.py,sha256=uWVQeG8pu3Eak8dHmK5GoeFGiIKBl76aAH-H74p4viw,2472 -numpy/core/tests/test_api.py,sha256=31FydyeHAiv73IcvWpRDX-AkqqYXMpCT5jEev6a6FfQ,18906 -numpy/core/tests/test_arrayprint.py,sha256=07RKEerhMbQt4dxcYGRYKIO7hQLh5e7TKke9pIZVndY,27957 -numpy/core/tests/test_datetime.py,sha256=qN740FxwSsIjmx9ZJBOi7_Z_8uNfNgePr9nQN13k51Y,93390 -numpy/core/tests/test_defchararray.py,sha256=lGJ_u02CgPbEOnRvestVxOJWzylQynImvMRp5f6aNpo,25693 -numpy/core/tests/test_deprecations.py,sha256=ElzfuBRZCYyLXObr2bAXKX3OCvaQAk6kW1kwzZ3TO0Q,19598 -numpy/core/tests/test_dtype.py,sha256=i60gacyb_slOdsIMoXyYnpRC48qWJAKnZ2LpuFHXpLk,28965 -numpy/core/tests/test_einsum.py,sha256=nBMQTSTy7Yj42mum-U8AnrIzf6-LDpP2eZG55-ba3k8,39521 -numpy/core/tests/test_errstate.py,sha256=xGJRBGIbiTvriGlwv3T0iQIZwwcEPZrpYSp6ac5HycU,1576 -numpy/core/tests/test_extint128.py,sha256=u_5xQOmBzUFPFaztHzXxl5U4Ox4ToG-rRIZp9lO0jqQ,5784 -numpy/core/tests/test_function_base.py,sha256=wjsCGDRdrCcsZF-gsqr7XDEf0OBD3PV-MJr6p52B-mA,11413 -numpy/core/tests/test_getlimits.py,sha256=mhxn555VivUhj8tMpoNVbnQmS4hN5j67MeeuGHgoQ2c,4586 -numpy/core/tests/test_half.py,sha256=prMe4YaH8Ik00mv8A7mSJcDUzdjOPqtxvbHmAK8wvP0,18627 -numpy/core/tests/test_indexerrors.py,sha256=MZ9PlkCfGlwxxO7CoA1kqAU_I3W9wDEmiwshji5mkpA,4926 -numpy/core/tests/test_indexing.py,sha256=rGOF3VobxsrjTd4vnDv8HuYfQhKIR8QSxyKadPGpRNI,50084 -numpy/core/tests/test_item_selection.py,sha256=Gdjd3jHB7NQVO1jU-y81YkGTGz1J6rNtSduaTFLXTfg,3669 -numpy/core/tests/test_longdouble.py,sha256=kQruH03nz6XlFjNGHMIGjnsVYM57nui9KH6bN-FKXb8,5960 -numpy/core/tests/test_machar.py,sha256=QmnKVIV53faHjIBHUsYQ7KjX-SRmrE0lLFuipNLx7Jw,1235 -numpy/core/tests/test_mem_overlap.py,sha256=4mHDxV16229uyI1t0drROq_XwwqD17-VrJDN5pChAy8,29564 -numpy/core/tests/test_memmap.py,sha256=5RM3mT_-vGjtoYYatgseRjqDs0jhoxalplGDDXNeEmc,7031 -numpy/core/tests/test_multiarray.py,sha256=hY1G1e71SuXUACnKIUBKchU2VR0I6gvjTbZu4YhH44s,272174 -numpy/core/tests/test_nditer.py,sha256=gl6UBW2k9YTZ-UwWJnbMBP31wovmzS8_hVrNEqXqQqY,106132 -numpy/core/tests/test_numeric.py,sha256=YD1IIWn4PxKAoRgWPJkv_-P-L-1mVubSwgxhx0MLzAc,102126 -numpy/core/tests/test_numerictypes.py,sha256=WqBR5OzIA0C--i-sVeiO1ayUvF-gQUBhZxDtQY0VGN8,15412 -numpy/core/tests/test_print.py,sha256=zpPMWJLXgzVJ7uPR7PlZWe28nr_MyymSO5cXPgzK1ro,8089 -numpy/core/tests/test_records.py,sha256=JaqAyHLMO1c5vMT7hG_Q82NB-lU7hbQ5SkKDLThmaN4,15346 -numpy/core/tests/test_regression.py,sha256=Lfuhv6CvzL5uPWJ_o9Q3DT2I8g8xNOTpz7SYjADthO4,79720 -numpy/core/tests/test_scalar_ctors.py,sha256=vbEucXNOW8AQWwISsGAwUgNKuUKDmGzZp2-rbeDj6_M,2362 -numpy/core/tests/test_scalarinherit.py,sha256=rs8sDrtinrYxOe9uQQ_u5t_zTb3jPc75cAUzdjbGW8c,1867 -numpy/core/tests/test_scalarmath.py,sha256=6bTYxUaNSdeBXvv36HBEvyAMfTbxFVCgCvc5B8alQcU,26626 -numpy/core/tests/test_scalarprint.py,sha256=kmR5OkfHx4-pLVSfYXVAM0OPP-paTzKWguIe9b6GQ9c,10734 -numpy/core/tests/test_shape_base.py,sha256=nJ79bbZtvT6MDxjlHhBzr2yKvWwLbJh18RcvUoZk6_g,20299 -numpy/core/tests/test_ufunc.py,sha256=UFhzMdHyOkcTnmBQqi1P0_9fCrkYqkPHzGCpVyHb_5g,55288 -numpy/core/tests/test_umath.py,sha256=NdltEL3YSOuVoJQ8GWVqCuqIJYzdG0K39C9h8ZxGPF0,99032 -numpy/core/tests/test_umath_complex.py,sha256=i_RpeNLgtGakbxHH6VHBi-VlPFqzjLExEKIpPMSLajQ,19656 -numpy/core/tests/test_unicode.py,sha256=kgAgXK1bK7eoPR5jb-hcsVmMEUpVZNkcp814fOGQwvc,13733 -numpy/core/tests/data/astype_copy.pkl,sha256=lWSzCcvzRB_wpuRGj92spGIw-rNPFcd9hwJaRVvfWdk,716 -numpy/core/tests/data/recarray_from_file.fits,sha256=NA0kliz31FlLnYxv3ppzeruONqNYkuEvts5wzXEeIc4,8640 -numpy/distutils/__config__.py,sha256=KNB1kK5pX6g-tTxs41ZfrD32q1asv7QolLtKuOQELjE,1519 -numpy/distutils/__init__.py,sha256=AEelgCxrNenX-csNhVCrMNIBHGB895HovZJejj_qwVY,1088 -numpy/distutils/__version__.py,sha256=SSRZKvGfvg_GpYbXWtI5gaTK0NGW9nBBCyNghaaXBh8,151 -numpy/distutils/ccompiler.py,sha256=ZQ9GILkgK3c-jipD572npLpSdTXOsd_h1ieNrzqxlU4,28547 -numpy/distutils/compat.py,sha256=xzkW8JgJgGTmye34QCYTIkLfsXBvmPu4tvgCwXNdiU0,218 -numpy/distutils/conv_template.py,sha256=nBPvD1z_mWZg0j9rAyRITxk7bfOfUVJ3yJ34dCiWIwI,9709 -numpy/distutils/core.py,sha256=4r-OVRLoRKp4KzgTjb_Ov7qXDw1NO89x5ShjUoDw34c,8183 -numpy/distutils/cpuinfo.py,sha256=AHJuQeg78_P5EReO1kLd-MAohvB-GfV8zuRh7F8hltI,23015 -numpy/distutils/environment.py,sha256=XBqttd7d6sBr_-XA2nLG7gaRnLS4b_wKd0GoLLG1VQ8,2346 -numpy/distutils/exec_command.py,sha256=G3X8i0rWikxyCe0mwlmiEdmG6_J0OwtbY5-fanqKN8U,8663 -numpy/distutils/extension.py,sha256=q_NjgW-sOoeEBbeSEJwFh411mTgsF7BzGYso61Wf0qg,2967 -numpy/distutils/from_template.py,sha256=U-XEiWrYDXbZUEa8NKykjJpZolzPlBLP8F-kSVhlRb8,7830 -numpy/distutils/info.py,sha256=lNxUhbJnzWjA47P2I_9NW-tuVrjGzL62jHDlQJ3pp6E,157 -numpy/distutils/intelccompiler.py,sha256=1qzr6PMxi0UkR0NUY3rt3gqww9GwJ-Gbe91yxQKlieU,4291 -numpy/distutils/lib2def.py,sha256=i4qqVsMLKHcQIrPXlVhKUQtCAVLw0ePlk08CfOgGLgs,3512 -numpy/distutils/line_endings.py,sha256=aBO2e754iin4Ylo7FNwlBg6nPudXMnQZYdhVhf-E3aA,2053 -numpy/distutils/log.py,sha256=yHzdtNdTg6YtvO50Hu-Le5WJ7Typ2TvaCYabelTaUO0,2745 -numpy/distutils/mingw32ccompiler.py,sha256=VSgUBrHQ0jGARQOmIHR2i2xuy9Qba8Y1A9DQzJRJiMo,25201 -numpy/distutils/misc_util.py,sha256=j0MbOeJgUf1rojMKNVwuq7Z4bPZaBQ8xO0Frqkujork,82201 -numpy/distutils/msvc9compiler.py,sha256=TuPYjPFp3nYQSIG1goNxuOly7o3VMx-H35POMpycB3k,2258 -numpy/distutils/msvccompiler.py,sha256=BTj0LPytcNNxcYJ5AUtQUQiD8ZhYNrzCCGkNxSnwdQI,1991 -numpy/distutils/npy_pkg_config.py,sha256=TOlCf_L1pSQyvsFl60dinf1Fnly4Hg5U9u4krTtCsMk,13243 -numpy/distutils/numpy_distribution.py,sha256=lbnEW1OxWxC_1n2sKd0Q3fC5QnNdFuAkNAlvXF99zIQ,700 -numpy/distutils/pathccompiler.py,sha256=FjNouOTL8u4gLMbJW7GdT0RlsD2nXV1_SEBNZj9QdpQ,779 -numpy/distutils/setup.py,sha256=q3DcCZNkK_jHsC0imocewd4uCKQWWXjkzd4nkBmkMFI,611 -numpy/distutils/system_info.py,sha256=J8IpdAc3goPXByTXxCLsFPUbIGLsUihqCyuEqr31BdY,89501 -numpy/distutils/unixccompiler.py,sha256=nut8kzEi9BQpXcy5qNcy0w0d6BQ5o6ghJx2f0D4DH-w,5156 -numpy/distutils/command/__init__.py,sha256=l5r9aYwIEq1D-JJc8WFUxABk6Ip28FpRK_ok7wSLRZE,1098 -numpy/distutils/command/autodist.py,sha256=1oytviCdsUjm3YxLLVePvWEqxyz0eDRRqvfokDm2sXQ,2048 -numpy/distutils/command/bdist_rpm.py,sha256=rhhIyFzkd5NGi6lZaft44EBPZB3zZFRDc75klJYnbw8,775 -numpy/distutils/command/build.py,sha256=6Q9bDubq5WfwR1K5woDFXed692szD0Rq-5Ckv2xpoK4,1618 -numpy/distutils/command/build_clib.py,sha256=_Y3upI_slekgMk2CI2vplOXj5p1_aEHa-F9_nJ0HOgg,13389 -numpy/distutils/command/build_ext.py,sha256=2oQs0Pv-k3wtr7iEKZxRxK1x2sB3egTGxIvsXhCutqY,25264 -numpy/distutils/command/build_py.py,sha256=7TBGLz0va0PW6sEX-aUjsXdzvhuSbJGgIrMim1JTwu4,1210 -numpy/distutils/command/build_scripts.py,sha256=ze19jHBhC3JggKLbL9wgs9I3mG7ls-V2NbykvleNwgQ,1731 -numpy/distutils/command/build_src.py,sha256=PFSMXRvahsP7oDK1sZXvb-tC2gCv6wupeuXJkrp6xzw,30946 -numpy/distutils/command/config.py,sha256=PhU3G1GEShA2nUJM6jzVxZpqSxG8faRJiOwXw7zZuwc,18010 -numpy/distutils/command/config_compiler.py,sha256=enSybR68NCFnY7wKHTeU4sCmc0zGenL0oZ_8F7Cn-H0,4379 -numpy/distutils/command/develop.py,sha256=nYM5yjhKtGKh_3wZwrvEQBLYHKldz64aU-0iSycSkXA,641 -numpy/distutils/command/egg_info.py,sha256=pdiCFQiQuIpf_xmVk9Njl7iowY9CxGn9KRbU-A9eBfg,987 -numpy/distutils/command/install.py,sha256=yBj3NM6sctAbG3QR5Y4qPs7YjxpW7EoKeMPEkNWf2qU,3127 -numpy/distutils/command/install_clib.py,sha256=6tUO3FbF_b_e_Ly31qod9rB4yHA2z8m2mh6qry1a4yk,1315 -numpy/distutils/command/install_data.py,sha256=7iWTw93ty2sBPwHwg_EEhgQhZSZe6SsKdfTS9RbUR9A,914 -numpy/distutils/command/install_headers.py,sha256=NbZwt-Joo80z_1TfxA-mIWXm2L9Mmh4ZLht7HAuveoo,985 -numpy/distutils/command/sdist.py,sha256=tHmlb0RzD8x04dswPXEua9H_b6GuHWY1V3hYkwJDKvA,799 -numpy/distutils/fcompiler/__init__.py,sha256=FHfaXHp4Ga31vxbFs7LxIkUy0dxwZnnm-My5Z1ncCos,39347 -numpy/distutils/fcompiler/absoft.py,sha256=JCcA8aa-D86JVZKe5ERnL3BGpB2nm2cphkhwhqilQog,5567 -numpy/distutils/fcompiler/compaq.py,sha256=djulalEdV6b58ofcEw14Uoq5-aNgblJMqLIzNwmJ2SE,4109 -numpy/distutils/fcompiler/g95.py,sha256=K68RRAvOvyKoh-jsD9J4ZDsHltrGnJ_AllxULhy6iOE,1396 -numpy/distutils/fcompiler/gnu.py,sha256=WX5n9rIa0LEDKDBBE6DeYm2eZw5skcdxo5b0gaMXe-w,19763 -numpy/distutils/fcompiler/hpux.py,sha256=xpNfy7vCKWPnJ5M3JPnjMAewKBAfKN5hFX3hvEL2zaM,1419 -numpy/distutils/fcompiler/ibm.py,sha256=hkOqy4vPXozEm8Ln4ucWpTfdLlBPOF_bLROOJZvXdKU,3435 -numpy/distutils/fcompiler/intel.py,sha256=to4dvvaWYUOKesTnaFP3kw1kwekY_nPEOO7OIqrmSgE,6773 -numpy/distutils/fcompiler/lahey.py,sha256=pJ0-xgtYwyYXgt8JlN8PFeYYEWB3vOmFkNx6UUFXzuM,1393 -numpy/distutils/fcompiler/mips.py,sha256=IxLojWR1oi0VW93PxPpHQXRwZcYffD1dunllQW2w19A,1780 -numpy/distutils/fcompiler/nag.py,sha256=eiTvBopdCgVh5-HDTryVbRrYvf4r_Sqse1mruTt5Blo,2608 -numpy/distutils/fcompiler/none.py,sha256=N6adoFAf8inIQfCDEBzK5cGI3hLIWWpHmQXux8iJDfA,824 -numpy/distutils/fcompiler/pathf95.py,sha256=Xf1JMB30PDSoNpA1Y-vKPRBeNO0XfSi0dvVQvvdjfUQ,1127 -numpy/distutils/fcompiler/pg.py,sha256=Ix3xah0mbBdx7IqJ3ic7YlzL5HtiBYKtN5PBMd6SDDE,4213 -numpy/distutils/fcompiler/sun.py,sha256=HRyTh2aoHKuL7Lnb96_a1kXkNFaSv7mNFgzUnYYuzYQ,1645 -numpy/distutils/fcompiler/vast.py,sha256=LJ21-WIJsiquLtjdDaNsJqblwN5wuM2FZsYl1R40vN8,1733 -numpy/distutils/mingw/gfortran_vs2003_hack.c,sha256=F3PYZ7LTP_Q1svGVX8N7oRYWpd15LqaiyBoQk5SkQiA,74 -numpy/distutils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/distutils/tests/test_exec_command.py,sha256=eL_MDj2PFcUb45viH2CZQhnhJhC3iotC2fB681ywBp0,7216 -numpy/distutils/tests/test_fcompiler_gnu.py,sha256=D0F-UPIQi8XpFg8iiqFG7ZpCD0YEsYc_tuGRdjG18pU,2288 -numpy/distutils/tests/test_fcompiler_intel.py,sha256=9RZqwxN4PrdGOI-4Z4AYMHMlGEfAUQI3Epq-Sk3TKeM,1210 -numpy/distutils/tests/test_fcompiler_nagfor.py,sha256=IhprctRe_6_5-oprg0mSCa0oD-nlYDSVdz5sXhHH8BA,1247 -numpy/distutils/tests/test_misc_util.py,sha256=4I_8nme1cH-34OJbc9Ja-snSwZ0Zh28JmxY8CkyECvY,3308 -numpy/distutils/tests/test_npy_pkg_config.py,sha256=vfWrY-F5ov7Jv_7mYgXvmwgbd_9qIKZUGHQ-mzbsLio,2709 -numpy/distutils/tests/test_system_info.py,sha256=NROPLl2fFOVdg791f7eWza6q0cuKRiQdWg5pt4JWZJc,7485 -numpy/doc/__init__.py,sha256=BDpxTM0iw2F4thjBkYqjIXX57F5KfIaH8xMd67N6Jh0,574 -numpy/doc/basics.py,sha256=CV0B_8jUvTIR4oCIKnoAxQtrX0rkMHKizO8_5WNZVQ8,7918 -numpy/doc/broadcasting.py,sha256=pUtsDrdRgi7usB8pv37Vx-EZMPk7fpcDDjCCpK9pCWc,5565 -numpy/doc/byteswapping.py,sha256=vbQ7Zy3R0fVPX4zpJB-TzcV4g1nffzok4kDqD9x_Guk,5346 -numpy/doc/constants.py,sha256=Jc0iAiU7KhzmyQ683LwKIaDpmoZyttmePYDvdz4d7EM,8882 -numpy/doc/creation.py,sha256=_ztD3TE-I2sUj3u9v9iQQ2XLKE_u00kzrQeFLLPclQA,5501 -numpy/doc/glossary.py,sha256=cUJhYpuduXVsNwK7IUcgUfx-EbF3rWWGiGhpjmpzc5o,12371 -numpy/doc/indexing.py,sha256=DtFUsUXpNoxCHpNSPfQ_hwI1FCleStL5fdnzP_Z9hLQ,15669 -numpy/doc/internals.py,sha256=xYp6lv4yyV0ZIo_qCvLCAWxDa0rhu7FNrTmpXY1isO4,9669 -numpy/doc/misc.py,sha256=g-tgHRpjmlCrHC-VPdlx_ZAX3ATvkre0oY-TiIc6Izw,6194 -numpy/doc/structured_arrays.py,sha256=ZPXD7-Svyq7Ur6FrkQ_oD-KyrnPZU2ZMxNHC1K_w-mc,22918 -numpy/doc/subclassing.py,sha256=NOBCa__cX2n_9A0ShdDWBAxVrovruYaouK9uAKbvidk,28560 -numpy/doc/ufuncs.py,sha256=vsAkCLEMh7Qa_3x4WbDMY3IQsDCLdOCuB_6P2aEcVLg,5427 -numpy/f2py/__init__.py,sha256=uCYsZBr66CpP0Ek0_PysG2jc1xJCqtzy0j8Ge-5QpUw,2027 -numpy/f2py/__main__.py,sha256=MLrjKb74kCDL3GuZ28623zgDH5iBXRUH4eEHOK_NN0Y,739 -numpy/f2py/__version__.py,sha256=rEHB9hlWmpryhNa0EmMnlAlDCGI4GXILC9CZUEV3Wew,254 -numpy/f2py/auxfuncs.py,sha256=mDvaBo3Y8tYpXLZfq8DCv6UZ3-2JqWc_iNBZRxGesb0,21826 -numpy/f2py/capi_maps.py,sha256=ObU9I3tM5ksYnn_JurrUEqyCM03yXrwJ81aD-8OuO0Y,31539 -numpy/f2py/cb_rules.py,sha256=su1u0Ckj3w0A19l6Ykgy4MfHQjF8EhZFXZ9YoW1xSLE,22356 -numpy/f2py/cfuncs.py,sha256=Tt4r-psLgzrUIb_B6KK-S1SySSH6Qt0WODCJHgnc-yQ,45113 -numpy/f2py/common_rules.py,sha256=qLhn27JDPFqhl-rATOkXX_L5GEq6-6N_7ERP3ued0Po,5030 -numpy/f2py/crackfortran.py,sha256=_wSk5fU_AKbXxROajBLnyEMidUAjHIFNhdy5V7g6Lpw,128404 -numpy/f2py/diagnose.py,sha256=VNuNTGnQaXn9Fn2jlueYt47634CvLQSaAWJWy_Nxwnw,5295 -numpy/f2py/f2py2e.py,sha256=N3JCJy-_96vqHQmoWcY3EvHIlhNWd_Ch9tgpT2laACA,22908 -numpy/f2py/f2py_testing.py,sha256=8rkBjUsNhBavpoBgi_bqDS8H8tBdd5BR8hrE6ENsIAo,1523 -numpy/f2py/f90mod_rules.py,sha256=YFK4MPkGHBxshAInbcapnumX3qlu0h6ya6GQpS8zWLk,9850 -numpy/f2py/func2subr.py,sha256=Oy12rqUa1vcXvzR6g8yx8jSYDwfKt5Jqiebf1QaWX1o,9224 -numpy/f2py/info.py,sha256=Mk1-neqpqYQ6njoVUCKHmMkyFkAqYeWH4cGZr8NfKiI,136 -numpy/f2py/rules.py,sha256=DDX0Vv1ALXnYAexMBjvlFniqt-vnzBB908T6kEARXTw,58525 -numpy/f2py/setup.py,sha256=zNM8_TSn1IK88xsJlat-itELgQzmV6i_yC_TyLzUTZI,3925 -numpy/f2py/use_rules.py,sha256=L6nTSJnxougQ2PVAzR7s-1spidcfDp9tzLIFAJe3gUI,3652 -numpy/f2py/src/fortranobject.c,sha256=TudGxLhRglhZEiySF_NC9KEPWAhCpNfUd7ymbfEsEIw,35813 -numpy/f2py/src/fortranobject.h,sha256=TbUsTEKqs4MM4bLxXCG7stY5r8x6zl0s6s_xRVzhgYc,4931 -numpy/f2py/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/f2py/tests/test_array_from_pyobj.py,sha256=jFY96nTVlk8e6kB38ijsIxBveAfBiK5JFIl6KYHRxXU,22111 -numpy/f2py/tests/test_assumed_shape.py,sha256=rhwzCgHihXONSMCdPh6UJjW65sx9nsKJyB9qEsoQUuA,1001 -numpy/f2py/tests/test_block_docstring.py,sha256=CDIq4TZ7OSn6-sLZk1bDVfG3UZMg4F763c7S063ZMro,623 -numpy/f2py/tests/test_callback.py,sha256=znNm7999PKsarlcLI4E1v6A9WXa1uF6H1fAZZ6wzu4k,4014 -numpy/f2py/tests/test_common.py,sha256=YAywQPUAXGCzHhJp6BwX-pdB-xjEOjJSfe99vdnnTXA,900 -numpy/f2py/tests/test_kind.py,sha256=nJtZKnB3JPEUW0C1WiZhFuuM_D-A6BY-0Rs_rDb_6j0,1126 -numpy/f2py/tests/test_mixed.py,sha256=WBaXSr0KbxLcIAYxTGmhKy8GI9jYvGhqDODvpVcjrPM,975 -numpy/f2py/tests/test_parameter.py,sha256=4xrIfF1gxWtSxXkMR8n4mD_-K_vxeGeSo4ST_LbR7yA,3977 -numpy/f2py/tests/test_regression.py,sha256=osrlIzj2-mrhxg2R3atBt3mBwDH_5_UtKfx8_IvL3nA,829 -numpy/f2py/tests/test_return_character.py,sha256=hh2QHvq1NozQLr2qvhnRPQ22WIo4M8H6UYvi0HYrViA,3869 -numpy/f2py/tests/test_return_complex.py,sha256=I1vkLbSsBxx5-0KAvZa6GDxuK9G3ozZEJp-hAJn1ir8,4784 -numpy/f2py/tests/test_return_integer.py,sha256=EXG73yTSQzztSLz0YtC6kdA1E5nxGngH0yNpdIlRJzU,4696 -numpy/f2py/tests/test_return_logical.py,sha256=ZUPQXuDON9vYopK35H4Z5b7mlr5U7TQ9DezjPlBQOSI,4950 -numpy/f2py/tests/test_return_real.py,sha256=RUYgQ_2dqp0wDhSOBJuoEkq3K8d2MGLnIq_A-ztfbPI,5410 -numpy/f2py/tests/test_size.py,sha256=xmhIHCd9o4oCoVPjf7UgzZ5xE0dNiH1OKKvg05bRNYs,1388 -numpy/f2py/tests/test_string.py,sha256=ZCQCbbemJkG0BlUGPwfHqwI35ZGiS3hJXJ-iJPkOR7k,728 -numpy/f2py/tests/util.py,sha256=ZHJqbYloVpUet0FhgJRNRZ-2oH3bMqBuDISaleosHh8,9454 -numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c,sha256=eeOSoN7luwRZ9Z8NMc8XGEs-vLu4qbdyyxdJPui98oE,8801 -numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap,sha256=But9r9m4iL7EGq_haMW8IiQ4VivH0TgUozxX4pPvdpE,29 -numpy/f2py/tests/src/assumed_shape/foo_free.f90,sha256=oBwbGSlbr9MkFyhVO2aldjc01dr9GHrMrSiRQek8U64,460 -numpy/f2py/tests/src/assumed_shape/foo_mod.f90,sha256=rfzw3QdI-eaDSl-hslCgGpd5tHftJOVhXvb21Y9Gf6M,499 -numpy/f2py/tests/src/assumed_shape/foo_use.f90,sha256=rmT9k4jP9Ru1PLcGqepw9Jc6P9XNXM0axY7o4hi9lUw,269 -numpy/f2py/tests/src/assumed_shape/precision.f90,sha256=r08JeTVmTTExA-hYZ6HzaxVwBn1GMbPAuuwBhBDtJUk,130 -numpy/f2py/tests/src/common/block.f,sha256=GQ0Pd-VMX3H3a-__f2SuosSdwNXHpBqoGnQDjf8aG9g,224 -numpy/f2py/tests/src/kind/foo.f90,sha256=zIHpw1KdkWbTzbXb73hPbCg4N2Htj3XL8DIwM7seXpo,347 -numpy/f2py/tests/src/mixed/foo.f,sha256=90zmbSHloY1XQYcPb8B5d9bv9mCZx8Z8AMTtgDwJDz8,85 -numpy/f2py/tests/src/mixed/foo_fixed.f90,sha256=pxKuPzxF3Kn5khyFq9ayCsQiolxB3SaNtcWaK5j6Rv4,179 -numpy/f2py/tests/src/mixed/foo_free.f90,sha256=fIQ71wrBc00JUAVUj_r3QF9SdeNniBiMw6Ly7CGgPWU,139 -numpy/f2py/tests/src/parameter/constant_both.f90,sha256=-bBf2eqHb-uFxgo6Q7iAtVUUQzrGFqzhHDNaxwSICfQ,1939 -numpy/f2py/tests/src/parameter/constant_compound.f90,sha256=re7pfzcuaquiOia53UT7qNNrTYu2euGKOF4IhoLmT6g,469 -numpy/f2py/tests/src/parameter/constant_integer.f90,sha256=nEmMLitKoSAG7gBBEQLWumogN-KS3DBZOAZJWcSDnFw,612 -numpy/f2py/tests/src/parameter/constant_non_compound.f90,sha256=IcxESVLKJUZ1k9uYKoSb8Hfm9-O_4rVnlkiUU2diy8Q,609 -numpy/f2py/tests/src/parameter/constant_real.f90,sha256=quNbDsM1Ts2rN4WtPO67S9Xi_8l2cXabWRO00CPQSSQ,610 -numpy/f2py/tests/src/regression/inout.f90,sha256=CpHpgMrf0bqA1W3Ozo3vInDz0RP904S7LkpdAH6ODck,277 -numpy/f2py/tests/src/size/foo.f90,sha256=IlFAQazwBRr3zyT7v36-tV0-fXtB1d7WFp6S1JVMstg,815 -numpy/f2py/tests/src/string/char.f90,sha256=ihr_BH9lY7eXcQpHHDQhFoKcbu7VMOX5QP2Tlr7xlaM,618 -numpy/fft/__init__.py,sha256=rmPQWW6qxubvIN7bE2DsN7fR27PWYl64T-rcDFaFcc8,258 -numpy/fft/fftpack.py,sha256=kmkcYonedtyVy1J-98r94Rm6mdUmzix0_kxJXxDq__A,46059 -numpy/fft/fftpack_lite.cpython-36m-darwin.so,sha256=mxARu93uXoUyqOCf5uipXBPbdzpsMj-F68Ddtuq7v9E,107000 -numpy/fft/helper.py,sha256=aZruJcPfb9mKdgTbdhK0er-puvpi0nIVpjI2BiUnjvw,9523 -numpy/fft/info.py,sha256=831NwiCI33uiLx21G7kFCwzZuFxDfmU8n-2LG4FJm2w,7235 -numpy/fft/setup.py,sha256=VR1boee7xZd3lOQVRJ3083I0kYqq_-RCo6CK6UK8Lso,550 -numpy/fft/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/fft/tests/test_fftpack.py,sha256=ivCFMYzRuBVXOwsZJ1HI5FchBsSxNCIyUvhns5DLqlA,7097 -numpy/fft/tests/test_helper.py,sha256=-fY_zZLkSagcL1CAQJAXXSfij1u-tHtxFKKnVaZPXzw,5999 -numpy/lib/__init__.py,sha256=PHzVALHyh1EqdvCw-lhDTH28gXSKjU5-1QSX_azB5QQ,1301 -numpy/lib/_datasource.py,sha256=S_sHqV8T4o3SdrJQ1dzO435zawHX8_fSgWyJMnr20eU,25311 -numpy/lib/_iotools.py,sha256=HVNgaZlOet3H3AiNZL0xl_P8zRkZDW7RI21UgpYGdcI,32616 -numpy/lib/_version.py,sha256=CwmJlO0-MIWJhksrX0Dr_qUDDn-R0oe3Od2I-qLjLs0,4867 -numpy/lib/arraypad.py,sha256=35naV74C2JsxpUYti53PkvPPctR72OrvY_XHDmpz45g,51857 -numpy/lib/arraysetops.py,sha256=Mp-bXIYEcBAHOGlJtAMWVSQwjvZhloS9RtCZ5pQn_o8,20345 -numpy/lib/arrayterator.py,sha256=niYNI2qhySUT5j_3gl07pPbkmY4GJqdwIGaMZyPil84,7191 -numpy/lib/financial.py,sha256=AYHgzhkSiGzm7uRDzmy_3l2pnBKb0re3RUkf4Txeffo,24495 -numpy/lib/format.py,sha256=QFswc50ngoVRafhCtPAgs3Bzhw-OIz6KMRGKOL6Wlqk,29010 -numpy/lib/function_base.py,sha256=S-PYR35reVOR96Uv5X-eiLWYq-tdX3b2a8QSe20jI_A,170032 -numpy/lib/index_tricks.py,sha256=exaSLwRXrJxphFaAv8YF6F9eeUV-95K1CFbyMf7DMRY,26680 -numpy/lib/info.py,sha256=oVczF_pC_CMZC2h2adb2HHza_1qF3qI065j4RBrd-I4,6616 -numpy/lib/mixins.py,sha256=r9doCR1X0arm4q5Nq9qpktMkbRqC51jT_lY8tPJwFgI,7284 -numpy/lib/nanfunctions.py,sha256=JqkUx-LuKLIgX3h2ajC-nQRXDvJxM9p-RhJrb8QrqQs,50854 -numpy/lib/npyio.py,sha256=P6m34vUqI5ZF-Kam7MKEWHvndpCblcWZpikJrbIYJnc,82746 -numpy/lib/polynomial.py,sha256=qTJt-MbtgncmHDU3kd-9ECJi5_E8Xg4Ol9VkqQ1LGuk,38572 -numpy/lib/recfunctions.py,sha256=MrevY2p_tiOII900opEunMd_RZYdocE8_DyeyGUhROE,37016 -numpy/lib/scimath.py,sha256=DVHIce1T85pQnmVF-FusyuIdlQoxt45R2FRx500tcqg,14085 -numpy/lib/setup.py,sha256=os9eV9wSzwTQlfxeoQ33gYQ4wOj1_6EvqcROc8PyGbE,379 -numpy/lib/shape_base.py,sha256=WVSQXCj0oRlmvFr5981L0tzka27Ckvy-JDTFIPM3Uec,28668 -numpy/lib/stride_tricks.py,sha256=uQzHxT2vuGOrDi4y9TkVu-zAthbXujy9V62Rq7HgvnM,8785 -numpy/lib/twodim_base.py,sha256=5pkBest69BJpDyi-KaWG_20yWDv7Ke7oNVrhPYxnFG8,25817 -numpy/lib/type_check.py,sha256=2_-ktL6-z-5MmJ0FedQwqTGawaLu_gn7eXY31pQNZ3g,16500 -numpy/lib/ufunclike.py,sha256=_3VJxYIXlcbkMPQVYKzHn8hwlFzHCYnyKzuBCy0YFYY,5714 -numpy/lib/user_array.py,sha256=7nJPlDfP-04Lcq8iH_cqBbSEsx5cHCcj-2Py-oh-5t0,7817 -numpy/lib/utils.py,sha256=oE5_ULQxkNcx2Slje7SGBOQYONW3XrMGTOnmwE7l114,36340 -numpy/lib/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/lib/tests/test__datasource.py,sha256=XiGdTJUjCMfTtMvlspgpGY3ZtHgKAIndGeaPi0g7yDU,10330 -numpy/lib/tests/test__iotools.py,sha256=nytmznzSAUJlJ1zNgSuwe9PrCtU2UC65-XY05diCfCk,13575 -numpy/lib/tests/test__version.py,sha256=-4O_MvSGwZYSzgtt7oWYotmZo9uEF8_95Or73F3X82g,2125 -numpy/lib/tests/test_arraypad.py,sha256=bWRUKL-SEoSvEX52aDPHzYfd61a4pgGpUhILaTaODfc,43647 -numpy/lib/tests/test_arraysetops.py,sha256=53YzcBGeaqxr4ZswYVwjnMgwWvnNIsHVw367KSPSaII,17352 -numpy/lib/tests/test_arrayterator.py,sha256=8_VQ1qF4aDQSUS21Tmdr9JStdRhah0t5UiltpH6sH9A,1455 -numpy/lib/tests/test_financial.py,sha256=4BPj5ad2weNU8qCdF1hlkfvqD2d4X5nf-9uak4eGTr0,17168 -numpy/lib/tests/test_format.py,sha256=_LT78W5o7j9qQWoUapwDxkZJxK3ZhLSsmQMJXjIqGLQ,34531 -numpy/lib/tests/test_function_base.py,sha256=dxkKKwue3xhWhj8uz7qEoKTiY8DAnPFnpv0miy-iijY,132980 -numpy/lib/tests/test_index_tricks.py,sha256=wGSNDPkPqvrfyicGhTOXhr_NmD12F8TXCOZSsADZEIc,13689 -numpy/lib/tests/test_io.py,sha256=zkQfKHUHc_wztQZBIafv0DTH1zuNm2fc7rhT21rhNPI,92159 -numpy/lib/tests/test_mixins.py,sha256=m2fHvYB8x2aoq5BMEokFE-d_KwqnHPPwAWCVo0_pcaY,6849 -numpy/lib/tests/test_nanfunctions.py,sha256=f-W1hIQ3ICdQLKjQKyt3lmHALavzFzf69RNP_dALtkU,34835 -numpy/lib/tests/test_packbits.py,sha256=OnJy_WawkZFlWN1QkdEwyc6nHzJeUqtwMjC-4Rpga3c,12929 -numpy/lib/tests/test_polynomial.py,sha256=Eh941Ic5R5EA1rnp2B1wTar8yHJ94tZnQ28WxbnRUEg,7152 -numpy/lib/tests/test_recfunctions.py,sha256=tUnPXYKpQt6gAa4by0GaFj-Xpm4WqHWWNfrWGxtv9K0,34762 -numpy/lib/tests/test_regression.py,sha256=o-CSZTTADq6SVofa5IKz5UfwAhH3n941Es_JN3aNAF8,8542 -numpy/lib/tests/test_shape_base.py,sha256=GrhZu2UyaNbyxv2ygDmPVBpwYlgqkRnGZt9WJLmBOqQ,19369 -numpy/lib/tests/test_stride_tricks.py,sha256=vjzfmvFvNIXba9NWH_liwfRjEJmHTaZ-ldgGsDAWcok,15042 -numpy/lib/tests/test_twodim_base.py,sha256=B3994ugqF7j2oKONswbGRT1mh4nYmgiGi5V4J26Ostw,17754 -numpy/lib/tests/test_type_check.py,sha256=TpJyb02riykSRclI3JzATjFJnebwm6y476FIJq4XzZ4,13103 -numpy/lib/tests/test_ufunclike.py,sha256=l9_QV0l7BrSe-OvcE-x3t8PQniH02LpMuOdmkobwT6E,3018 -numpy/lib/tests/test_utils.py,sha256=MNjkCaB0glBaVLMGZ9i88g8RIPHmkdbnt47bLWjgCvU,1656 -numpy/lib/tests/data/py2-objarr.npy,sha256=F4cyUC-_TB9QSFLAo2c7c44rC6NUYIgrfGx9PqWPSKk,258 -numpy/lib/tests/data/py2-objarr.npz,sha256=xo13HBT0FbFZ2qvZz0LWGDb3SuQASSaXh7rKfVcJjx4,366 -numpy/lib/tests/data/py3-objarr.npy,sha256=pTTVh8ezp-lwAK3fkgvdKU8Arp5NMKznVD-M6Ex_uA0,341 -numpy/lib/tests/data/py3-objarr.npz,sha256=qQR0gS57e9ta16d_vCQjaaKM74gPdlwCPkp55P-qrdw,449 -numpy/lib/tests/data/python3.npy,sha256=X0ad3hAaLGXig9LtSHAo-BgOvLlFfPYMnZuVIxRmj-0,96 -numpy/lib/tests/data/win64python2.npy,sha256=agOcgHVYFJrV-nrRJDbGnUnF4ZTPYXuSeF-Mtg7GMpc,96 -numpy/linalg/__init__.py,sha256=tj2YrJ_U5GzK7TnL5ho_OcevkID77anudX6UOQMSi_Q,2332 -numpy/linalg/_umath_linalg.cpython-36m-darwin.so,sha256=lr7GZsDFDNwgs-AOcfzMi5qH_3W6ZsQVMgrSK3bqUv4,295636 -numpy/linalg/info.py,sha256=AbXPYYabJK5In0F9IMk-oVWZgDyEaoU45Wnq6RtuCJs,1198 -numpy/linalg/lapack_lite.cpython-36m-darwin.so,sha256=7lsmjV8iyR174s9darQWcFvzXd-819YTTt_MU2PHyIM,41388 -numpy/linalg/linalg.py,sha256=INtXPo5vRC3mnOfGEGSb1FsGCtcFHsg2wdkkNWcx-PA,80393 -numpy/linalg/setup.py,sha256=k1X4EfRWACFtJYfb8Wiol_-pPnEMtqURxQ8H9FwFHWg,1878 -numpy/linalg/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/linalg/tests/test_build.py,sha256=k-3igsO1Dr2vbQhPtqAOvfN28ePChgfnRwHyQhWboEk,1756 -numpy/linalg/tests/test_deprecations.py,sha256=cxhhn3Mvm4HzSvQC2_2QzSBROGqzO5xmPXgUUT1U7vY,776 -numpy/linalg/tests/test_linalg.py,sha256=DXbltD8RG0pYxkfNASo9rCUWgeV7rYhvTHHg1PdewzI,62388 -numpy/linalg/tests/test_regression.py,sha256=gZ5Kue5JPjh6W1_R6LdEd2yIzIjbz85Kfx_rRq2XKlc,5741 -numpy/ma/__init__.py,sha256=NakwmSxyO7pTIVFvYrm5OiYZrMWMMiw-DO59Qd6VWzY,1476 -numpy/ma/bench.py,sha256=2nGYYxQVHYD_htXZCvBZLLot8Ui4uPKbJDdG2AnpfAU,4917 -numpy/ma/core.py,sha256=en4LY_KgNdSUf7fTR6khcR2-oBq1gASReLMFlP_SFNY,255508 -numpy/ma/extras.py,sha256=wKnrRtgcKhCq5zLHFKMVJqikxi9drIdIVWvuoUtbIRA,55952 -numpy/ma/mrecords.py,sha256=oP1xpA8UVf9x5tg_AUL-AMNK0RLxL8IfYUFwHgVq3uY,27435 -numpy/ma/setup.py,sha256=zkieH8BeiGVXl3Wlt_WeP9kciZlyAZY20DDu4SGk4b4,429 -numpy/ma/testutils.py,sha256=H6Wp21rUlT2PxxDsTcUPw9Wt0E_d1GmJyY74cL0maVI,10384 -numpy/ma/timer_comparison.py,sha256=Q1AyfHzNrWzVTrx6ebL9HgpQEkEJPHAkbWuTK_0bBkQ,15586 -numpy/ma/version.py,sha256=KpJAmUE1s1TpbgqgdBpDoslxm7kOMpczLjEzLMGv9Ag,380 -numpy/ma/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/ma/tests/test_core.py,sha256=Gbj-nAZD_eN1YNxrUUL1Dkgh0o6JCn-unCxjulHjHpo,191393 -numpy/ma/tests/test_deprecations.py,sha256=4kO2Er_A_Q1UYqirSAUAA7HBYjX7DAYnIFK8dZX6UpY,2410 -numpy/ma/tests/test_extras.py,sha256=18VmH3Vt9Ee7HdFRn-ML0bUFgQl4h_26Kv0W2OBjQSo,63757 -numpy/ma/tests/test_mrecords.py,sha256=YVDiXN5ftH2cFk8RHySwXKzelR_hKQ9Vs5Vn9db7Elk,19929 -numpy/ma/tests/test_old_ma.py,sha256=lk7RN2yNl90MrzWL375CCnL4L4zOrGADZr-pm0AiSoA,32135 -numpy/ma/tests/test_regression.py,sha256=M8LjQXAWve4Huq_Hq9OFgPOHOnclTPTxwV0VWEjAquQ,2437 -numpy/ma/tests/test_subclassing.py,sha256=pmLM0i9vlGq7CkOI7tds498Vv_gLvosPpbTdAmQ-jGU,13666 -numpy/matrixlib/__init__.py,sha256=TRuVRSDBgQyy2LYdfFMF8pXy21U1oz-cUzYqzB4Jz-w,290 -numpy/matrixlib/defmatrix.py,sha256=O_RESv1d67zCwxNX3PFe4oakGOWHVFjGpaviHNIhjcY,32973 -numpy/matrixlib/setup.py,sha256=o7I_gBds6j6ckztbKLhSXW3XHSItol8bab-rBZ6GH4I,448 -numpy/matrixlib/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/matrixlib/tests/test_defmatrix.py,sha256=zyQWTySr8WNjK3GpSSYts2rZTwTHWzDDwyzKQwKPJ2o,15078 -numpy/matrixlib/tests/test_multiarray.py,sha256=klsqFOr-xcE4E5__hjDQKT7fCuVX6t0rIQKDhFfRmCA,705 -numpy/matrixlib/tests/test_numeric.py,sha256=BJKSHDhKjqbOseYJmRcX81XkH_vRNRTDUPWzDmwGn4Q,585 -numpy/matrixlib/tests/test_regression.py,sha256=Jbrv4musHvJ07LKkZxnszZw91qZCZt-Dq1_cb_OM1cU,1082 -numpy/polynomial/__init__.py,sha256=fPyRn9sVQVoaSkR9eyA3hBIGH-5CIHumfFGKsJyuiso,1140 -numpy/polynomial/_polybase.py,sha256=IA8qqX91j96nuB23A_ti2xf2fUjkc24h9XAggfCK4NE,30092 -numpy/polynomial/chebyshev.py,sha256=glORsz3AlRpEWpcRjLnNZPbwu54Sj-ZJiZ2gP8j6FlA,66969 -numpy/polynomial/hermite.py,sha256=ODyNNvaR_d4p24dzw4IZJoYv3xn-YbJqVXQCvTO09yg,57896 -numpy/polynomial/hermite_e.py,sha256=AnQpOv53EXOA0udPGerbNDtVaHf7PlrBDoQx813j6xo,58086 -numpy/polynomial/laguerre.py,sha256=dNugySZSshYOKmwpTZddauJmGx0Dg4LsfuBj3ELkZNM,56309 -numpy/polynomial/legendre.py,sha256=ch8-m6CDGa1yDAwFgaAE5EPKN_i6sIXhr_3w8ru4jBs,57404 -numpy/polynomial/polynomial.py,sha256=XFkmg-AVztRRsWG58ImTskBQXVHidZtdVvbRR-UL22I,52808 -numpy/polynomial/polyutils.py,sha256=2qA03OFnMiXQj6aF0vIUWN2B99D4yd-dEMSMOYDOLf0,11529 -numpy/polynomial/setup.py,sha256=PKIUV6Jh7_0jBboPp3IHPmp6LWVs4tbIkdu_FtmI_5U,385 -numpy/polynomial/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/polynomial/tests/test_chebyshev.py,sha256=RhRGJHG8PGHxSFxjo97LAzYmkGTb7DCmBYccz2hx_LE,20420 -numpy/polynomial/tests/test_classes.py,sha256=WublDB8DP9Ctm_pYnKm3AGnU74kWLLKoZ7SkGobUH9s,19014 -numpy/polynomial/tests/test_hermite.py,sha256=oEn5RZei2YRQCYhlTeLFj4l2RP7S8n_zqmm8BFuL25I,18459 -numpy/polynomial/tests/test_hermite_e.py,sha256=Ooi50d60cSXVHrgDO4hbJVAMDnY3EwFebu2_6x1Il9Y,18789 -numpy/polynomial/tests/test_laguerre.py,sha256=6e76enKt2Pata0ChTj8hA7Pi1fNyZKmjltge9mSWDPc,17398 -numpy/polynomial/tests/test_legendre.py,sha256=EcpWqnkxiOSHkoySCLxU9fPcHfJAPM1MUhaUQyOlHDQ,18162 -numpy/polynomial/tests/test_polynomial.py,sha256=W8CHkyfY1SC57OrRuus1mybbS5b0lkZiHOudHwZF6DQ,19253 -numpy/polynomial/tests/test_polyutils.py,sha256=mulI4VvH_ckIiS3yvwikZKMqdm3EsuvBe4PaCuN2jUo,3085 -numpy/polynomial/tests/test_printing.py,sha256=Q0QZvZvFJvp1HoCz9k4cJdq-RaBHY_YdlcvEq5r-oUg,2140 -numpy/random/__init__.py,sha256=FMKIhJsSSWqFMCzq76AmU_I2yTJglaILDxsIZQPUAbM,5481 -numpy/random/info.py,sha256=HBoOc2MYiM2OaTikwmnDURZzfBsgl5aO3SKILwy4Lyo,5199 -numpy/random/mtrand.cpython-36m-darwin.so,sha256=olB-7lgPde0PaJQQJsWwcKojd-ul2J_bZs6BJNzefqI,2067124 -numpy/random/randomkit.h,sha256=TJrx_QZpTTgUGGfe2KHzUcyfmBeYTVTXrL4EAOT9Ctg,6799 -numpy/random/setup.py,sha256=gbPg4AuCkC4PXNY6j5xzcELwidc7lWBplkkRstSWJxg,2312 -numpy/random/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/random/tests/test_random.py,sha256=VOYdHiN8-BDsce-1CaTi91yCXIvLlnL6N_Gnc7SUscc,65295 -numpy/random/tests/test_regression.py,sha256=heOwWyBfzwrvE-cJXF-kkn56iCsDo2wbLyQB0bxau5U,5119 -numpy/testing/__init__.py,sha256=TrkadhNa5VAuFepMPZMMqs66qPZ-1MWSkRZojVJ4Sjw,475 -numpy/testing/decorators.py,sha256=hUCjkX2SuoE2wOW8oAPs7qvvycv2JiSIZdEzhjz9FK4,128 -numpy/testing/noseclasses.py,sha256=sMSGBp-kViFZ914tLQXid4I8m4jyC5Cn-bKLZm2OU3s,130 -numpy/testing/nosetester.py,sha256=AkEgoiTrftdr5sj-xUialE51x1ZM6LKvojLn1iGmw94,289 -numpy/testing/print_coercion_tables.py,sha256=F44AObcou_xytUWszku8t1bWuui-4I_18o7Z7zW8l18,2705 -numpy/testing/setup.py,sha256=7cb2FQ6qCZQ34wpFHwvLT8CeLba-4uIQn_l9Ne5CvBQ,677 -numpy/testing/utils.py,sha256=sMSKhLZnShlID7JPhKEbeB521MEMs-Ls5yHWvCwGL-c,926 -numpy/testing/nose_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/testing/nose_tools/decorators.py,sha256=6oT8kgtzKwQdvE82Azs0CSauv7o27CYldCElRjUi1KI,8591 -numpy/testing/nose_tools/noseclasses.py,sha256=qDYaNTSFcFT-UFQXrY_xJkQ5JwKDNl1-kpfy-HypzIg,14599 -numpy/testing/nose_tools/nosetester.py,sha256=KHMPbyE8WNJzYHkn9gXJvjqxJAZP0tOlErpJ9uWi8Iw,20562 -numpy/testing/nose_tools/parameterized.py,sha256=4N9SU33K5xndAmOD0baX7cP5PTEwCSDzGmbIUxBtp7c,18286 -numpy/testing/nose_tools/utils.py,sha256=MSREOiECLgDi7lBU-ghB33QM_VNihRzdAMOhNOI5nTY,75434 -numpy/testing/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/testing/tests/test_decorators.py,sha256=mSMOAM-EdSP6xWJHgFdr-i4oDEKcpJKDMhPU9oV5yjI,4554 -numpy/testing/tests/test_doctesting.py,sha256=9ej2qLODMR5e6NpL6ALHmVCsyiqZ7OXzrSPU_dcB4SE,1322 -numpy/testing/tests/test_utils.py,sha256=tID4AwZohRr434lyuk8OIIyn61_75TXl4g2W5UszfvE,46239 -numpy/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -numpy/tests/test_ctypeslib.py,sha256=10Zeegov5bWWLhXFmUS7bkdfSySHXBLFX9DOuaJNeC0,4331 -numpy/tests/test_matlib.py,sha256=vhXHiXHrSs5KRk2JU_w2WAWzVSabiDTlpCSB1FNJc3U,1988 -numpy/tests/test_numpy_version.py,sha256=ailN5HiL7gZdBgneFzZhUKANCtwUNLszH8OAL07pDU4,717 -numpy/tests/test_reloading.py,sha256=M490VKOCvV8x2IA_WrDm4HjcaA5EDrrC65v8PPSY5eY,1038 -numpy/tests/test_scripts.py,sha256=bZyJm0n1fJAN7iOgAI0irqKG9hf8Y9Yi-_76xRIYy_k,3059 -numpy/tests/test_warnings.py,sha256=x7IcCHSuv4hQ5elz3ZVN-L0jxfXlTaXS567LGXUbQTo,2686 -../../../bin/f2py,sha256=igh72wSs0uvdQH3TY3kqzkkmBSKKdb9RuZOCULFjLSE,748 -numpy-1.14.0.dist-info/DESCRIPTION.rst,sha256=jIxOnyL-SJx2zWu8D0b7_U3ryV6Nj7agM4Q18YJw1v4,884 -numpy-1.14.0.dist-info/METADATA,sha256=gi-e07GO4N_jh9UJX4UCWN1L3kfIr1gXUwVSe5h2VAs,2251 -numpy-1.14.0.dist-info/metadata.json,sha256=1V3L1ANpQ2cKSO72olue1DM1-YsKIVlBu-z_sYVdrz0,1369 -numpy-1.14.0.dist-info/RECORD,, -numpy-1.14.0.dist-info/top_level.txt,sha256=4J9lbBMLnAiyxatxh8iRKV5Entd_6-oqbO7pzJjMsPw,6 -numpy-1.14.0.dist-info/WHEEL,sha256=TJcAbsNKv2tiiR-l4ikYQkXgouGWw0EOV7WZPrRyWl4,249 -numpy-1.14.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -numpy/distutils/tests/__pycache__/test_fcompiler_gnu.cpython-36.pyc,, -numpy/distutils/tests/__pycache__/test_misc_util.cpython-36.pyc,, -numpy/distutils/tests/__pycache__/test_fcompiler_intel.cpython-36.pyc,, -numpy/distutils/tests/__pycache__/test_npy_pkg_config.cpython-36.pyc,, -numpy/distutils/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/distutils/tests/__pycache__/test_exec_command.cpython-36.pyc,, -numpy/distutils/tests/__pycache__/test_fcompiler_nagfor.cpython-36.pyc,, -numpy/distutils/tests/__pycache__/test_system_info.cpython-36.pyc,, -numpy/distutils/__pycache__/conv_template.cpython-36.pyc,, -numpy/distutils/__pycache__/exec_command.cpython-36.pyc,, -numpy/distutils/__pycache__/misc_util.cpython-36.pyc,, -numpy/distutils/__pycache__/__version__.cpython-36.pyc,, -numpy/distutils/__pycache__/ccompiler.cpython-36.pyc,, -numpy/distutils/__pycache__/setup.cpython-36.pyc,, -numpy/distutils/__pycache__/npy_pkg_config.cpython-36.pyc,, -numpy/distutils/__pycache__/environment.cpython-36.pyc,, -numpy/distutils/__pycache__/cpuinfo.cpython-36.pyc,, -numpy/distutils/__pycache__/line_endings.cpython-36.pyc,, -numpy/distutils/__pycache__/msvccompiler.cpython-36.pyc,, -numpy/distutils/__pycache__/info.cpython-36.pyc,, -numpy/distutils/__pycache__/compat.cpython-36.pyc,, -numpy/distutils/__pycache__/msvc9compiler.cpython-36.pyc,, -numpy/distutils/__pycache__/system_info.cpython-36.pyc,, -numpy/distutils/__pycache__/pathccompiler.cpython-36.pyc,, -numpy/distutils/__pycache__/log.cpython-36.pyc,, -numpy/distutils/__pycache__/unixccompiler.cpython-36.pyc,, -numpy/distutils/__pycache__/lib2def.cpython-36.pyc,, -numpy/distutils/__pycache__/intelccompiler.cpython-36.pyc,, -numpy/distutils/__pycache__/core.cpython-36.pyc,, -numpy/distutils/__pycache__/from_template.cpython-36.pyc,, -numpy/distutils/__pycache__/numpy_distribution.cpython-36.pyc,, -numpy/distutils/__pycache__/__init__.cpython-36.pyc,, -numpy/distutils/__pycache__/extension.cpython-36.pyc,, -numpy/distutils/__pycache__/mingw32ccompiler.cpython-36.pyc,, -numpy/distutils/__pycache__/__config__.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/compaq.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/none.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/gnu.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/ibm.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/lahey.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/absoft.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/pg.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/nag.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/intel.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/vast.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/sun.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/pathf95.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/g95.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/__init__.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/hpux.cpython-36.pyc,, -numpy/distutils/fcompiler/__pycache__/mips.cpython-36.pyc,, -numpy/distutils/command/__pycache__/build_src.cpython-36.pyc,, -numpy/distutils/command/__pycache__/install_data.cpython-36.pyc,, -numpy/distutils/command/__pycache__/build.cpython-36.pyc,, -numpy/distutils/command/__pycache__/config.cpython-36.pyc,, -numpy/distutils/command/__pycache__/bdist_rpm.cpython-36.pyc,, -numpy/distutils/command/__pycache__/develop.cpython-36.pyc,, -numpy/distutils/command/__pycache__/build_py.cpython-36.pyc,, -numpy/distutils/command/__pycache__/build_clib.cpython-36.pyc,, -numpy/distutils/command/__pycache__/install_headers.cpython-36.pyc,, -numpy/distutils/command/__pycache__/sdist.cpython-36.pyc,, -numpy/distutils/command/__pycache__/build_scripts.cpython-36.pyc,, -numpy/distutils/command/__pycache__/install.cpython-36.pyc,, -numpy/distutils/command/__pycache__/egg_info.cpython-36.pyc,, -numpy/distutils/command/__pycache__/install_clib.cpython-36.pyc,, -numpy/distutils/command/__pycache__/config_compiler.cpython-36.pyc,, -numpy/distutils/command/__pycache__/build_ext.cpython-36.pyc,, -numpy/distutils/command/__pycache__/__init__.cpython-36.pyc,, -numpy/distutils/command/__pycache__/autodist.cpython-36.pyc,, -numpy/compat/__pycache__/_inspect.cpython-36.pyc,, -numpy/compat/__pycache__/setup.cpython-36.pyc,, -numpy/compat/__pycache__/py3k.cpython-36.pyc,, -numpy/compat/__pycache__/__init__.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_abc.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_umath_complex.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_nditer.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_scalarmath.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_numeric.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_errstate.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_mem_overlap.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_api.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_getlimits.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_defchararray.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_function_base.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_half.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_indexing.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_records.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_ufunc.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_numerictypes.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_multiarray.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_datetime.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_machar.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_memmap.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_umath.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_einsum.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_item_selection.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_arrayprint.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_shape_base.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_deprecations.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_indexerrors.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_dtype.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_scalarprint.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_scalar_ctors.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_print.cpython-36.pyc,, -numpy/core/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_unicode.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_regression.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_extint128.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_scalarinherit.cpython-36.pyc,, -numpy/core/tests/__pycache__/test_longdouble.cpython-36.pyc,, -numpy/core/__pycache__/arrayprint.cpython-36.pyc,, -numpy/core/__pycache__/shape_base.cpython-36.pyc,, -numpy/core/__pycache__/records.cpython-36.pyc,, -numpy/core/__pycache__/setup.cpython-36.pyc,, -numpy/core/__pycache__/setup_common.cpython-36.pyc,, -numpy/core/__pycache__/machar.cpython-36.pyc,, -numpy/core/__pycache__/cversions.cpython-36.pyc,, -numpy/core/__pycache__/memmap.cpython-36.pyc,, -numpy/core/__pycache__/numeric.cpython-36.pyc,, -numpy/core/__pycache__/info.cpython-36.pyc,, -numpy/core/__pycache__/numerictypes.cpython-36.pyc,, -numpy/core/__pycache__/getlimits.cpython-36.pyc,, -numpy/core/__pycache__/_internal.cpython-36.pyc,, -numpy/core/__pycache__/_methods.cpython-36.pyc,, -numpy/core/__pycache__/defchararray.cpython-36.pyc,, -numpy/core/__pycache__/generate_numpy_api.cpython-36.pyc,, -numpy/core/__pycache__/fromnumeric.cpython-36.pyc,, -numpy/core/__pycache__/einsumfunc.cpython-36.pyc,, -numpy/core/__pycache__/__init__.cpython-36.pyc,, -numpy/core/__pycache__/function_base.cpython-36.pyc,, -numpy/linalg/tests/__pycache__/test_linalg.cpython-36.pyc,, -numpy/linalg/tests/__pycache__/test_build.cpython-36.pyc,, -numpy/linalg/tests/__pycache__/test_deprecations.cpython-36.pyc,, -numpy/linalg/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/linalg/tests/__pycache__/test_regression.cpython-36.pyc,, -numpy/linalg/__pycache__/setup.cpython-36.pyc,, -numpy/linalg/__pycache__/linalg.cpython-36.pyc,, -numpy/linalg/__pycache__/info.cpython-36.pyc,, -numpy/linalg/__pycache__/__init__.cpython-36.pyc,, -numpy/ma/tests/__pycache__/test_mrecords.cpython-36.pyc,, -numpy/ma/tests/__pycache__/test_subclassing.cpython-36.pyc,, -numpy/ma/tests/__pycache__/test_extras.cpython-36.pyc,, -numpy/ma/tests/__pycache__/test_core.cpython-36.pyc,, -numpy/ma/tests/__pycache__/test_old_ma.cpython-36.pyc,, -numpy/ma/tests/__pycache__/test_deprecations.cpython-36.pyc,, -numpy/ma/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/ma/tests/__pycache__/test_regression.cpython-36.pyc,, -numpy/ma/__pycache__/bench.cpython-36.pyc,, -numpy/ma/__pycache__/version.cpython-36.pyc,, -numpy/ma/__pycache__/setup.cpython-36.pyc,, -numpy/ma/__pycache__/testutils.cpython-36.pyc,, -numpy/ma/__pycache__/timer_comparison.cpython-36.pyc,, -numpy/ma/__pycache__/extras.cpython-36.pyc,, -numpy/ma/__pycache__/mrecords.cpython-36.pyc,, -numpy/ma/__pycache__/core.cpython-36.pyc,, -numpy/ma/__pycache__/__init__.cpython-36.pyc,, -numpy/tests/__pycache__/test_warnings.cpython-36.pyc,, -numpy/tests/__pycache__/test_reloading.cpython-36.pyc,, -numpy/tests/__pycache__/test_numpy_version.cpython-36.pyc,, -numpy/tests/__pycache__/test_scripts.cpython-36.pyc,, -numpy/tests/__pycache__/test_ctypeslib.cpython-36.pyc,, -numpy/tests/__pycache__/test_matlib.cpython-36.pyc,, -numpy/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/__pycache__/conftest.cpython-36.pyc,, -numpy/__pycache__/matlib.cpython-36.pyc,, -numpy/__pycache__/version.cpython-36.pyc,, -numpy/__pycache__/setup.cpython-36.pyc,, -numpy/__pycache__/ctypeslib.cpython-36.pyc,, -numpy/__pycache__/add_newdocs.cpython-36.pyc,, -numpy/__pycache__/_distributor_init.cpython-36.pyc,, -numpy/__pycache__/__init__.cpython-36.pyc,, -numpy/__pycache__/_globals.cpython-36.pyc,, -numpy/__pycache__/_import_tools.cpython-36.pyc,, -numpy/__pycache__/dual.cpython-36.pyc,, -numpy/__pycache__/__config__.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/util.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_mixed.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_string.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_return_complex.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_return_character.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_parameter.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_size.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_return_real.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_kind.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_common.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_block_docstring.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_return_logical.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_array_from_pyobj.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_callback.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_return_integer.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_regression.cpython-36.pyc,, -numpy/f2py/tests/__pycache__/test_assumed_shape.cpython-36.pyc,, -numpy/f2py/__pycache__/f2py_testing.cpython-36.pyc,, -numpy/f2py/__pycache__/cfuncs.cpython-36.pyc,, -numpy/f2py/__pycache__/__version__.cpython-36.pyc,, -numpy/f2py/__pycache__/f90mod_rules.cpython-36.pyc,, -numpy/f2py/__pycache__/common_rules.cpython-36.pyc,, -numpy/f2py/__pycache__/setup.cpython-36.pyc,, -numpy/f2py/__pycache__/cb_rules.cpython-36.pyc,, -numpy/f2py/__pycache__/rules.cpython-36.pyc,, -numpy/f2py/__pycache__/crackfortran.cpython-36.pyc,, -numpy/f2py/__pycache__/use_rules.cpython-36.pyc,, -numpy/f2py/__pycache__/info.cpython-36.pyc,, -numpy/f2py/__pycache__/diagnose.cpython-36.pyc,, -numpy/f2py/__pycache__/__main__.cpython-36.pyc,, -numpy/f2py/__pycache__/capi_maps.cpython-36.pyc,, -numpy/f2py/__pycache__/auxfuncs.cpython-36.pyc,, -numpy/f2py/__pycache__/func2subr.cpython-36.pyc,, -numpy/f2py/__pycache__/f2py2e.cpython-36.pyc,, -numpy/f2py/__pycache__/__init__.cpython-36.pyc,, -numpy/testing/nose_tools/__pycache__/parameterized.cpython-36.pyc,, -numpy/testing/nose_tools/__pycache__/noseclasses.cpython-36.pyc,, -numpy/testing/nose_tools/__pycache__/utils.cpython-36.pyc,, -numpy/testing/nose_tools/__pycache__/__init__.cpython-36.pyc,, -numpy/testing/nose_tools/__pycache__/decorators.cpython-36.pyc,, -numpy/testing/nose_tools/__pycache__/nosetester.cpython-36.pyc,, -numpy/testing/tests/__pycache__/test_doctesting.cpython-36.pyc,, -numpy/testing/tests/__pycache__/test_utils.cpython-36.pyc,, -numpy/testing/tests/__pycache__/test_decorators.cpython-36.pyc,, -numpy/testing/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/testing/__pycache__/setup.cpython-36.pyc,, -numpy/testing/__pycache__/noseclasses.cpython-36.pyc,, -numpy/testing/__pycache__/utils.cpython-36.pyc,, -numpy/testing/__pycache__/print_coercion_tables.cpython-36.pyc,, -numpy/testing/__pycache__/__init__.cpython-36.pyc,, -numpy/testing/__pycache__/decorators.cpython-36.pyc,, -numpy/testing/__pycache__/nosetester.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_index_tricks.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_type_check.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_arraysetops.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_io.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_format.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_stride_tricks.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test__datasource.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_utils.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_function_base.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test__iotools.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_nanfunctions.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_recfunctions.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test__version.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_twodim_base.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_packbits.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_arraypad.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_mixins.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_shape_base.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_ufunclike.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_arrayterator.cpython-36.pyc,, -numpy/lib/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_regression.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_financial.cpython-36.pyc,, -numpy/lib/tests/__pycache__/test_polynomial.cpython-36.pyc,, -numpy/lib/__pycache__/shape_base.cpython-36.pyc,, -numpy/lib/__pycache__/arraypad.cpython-36.pyc,, -numpy/lib/__pycache__/_version.cpython-36.pyc,, -numpy/lib/__pycache__/setup.cpython-36.pyc,, -numpy/lib/__pycache__/financial.cpython-36.pyc,, -numpy/lib/__pycache__/arrayterator.cpython-36.pyc,, -numpy/lib/__pycache__/_datasource.cpython-36.pyc,, -numpy/lib/__pycache__/polynomial.cpython-36.pyc,, -numpy/lib/__pycache__/npyio.cpython-36.pyc,, -numpy/lib/__pycache__/scimath.cpython-36.pyc,, -numpy/lib/__pycache__/ufunclike.cpython-36.pyc,, -numpy/lib/__pycache__/mixins.cpython-36.pyc,, -numpy/lib/__pycache__/recfunctions.cpython-36.pyc,, -numpy/lib/__pycache__/info.cpython-36.pyc,, -numpy/lib/__pycache__/arraysetops.cpython-36.pyc,, -numpy/lib/__pycache__/nanfunctions.cpython-36.pyc,, -numpy/lib/__pycache__/stride_tricks.cpython-36.pyc,, -numpy/lib/__pycache__/user_array.cpython-36.pyc,, -numpy/lib/__pycache__/utils.cpython-36.pyc,, -numpy/lib/__pycache__/type_check.cpython-36.pyc,, -numpy/lib/__pycache__/__init__.cpython-36.pyc,, -numpy/lib/__pycache__/twodim_base.cpython-36.pyc,, -numpy/lib/__pycache__/function_base.cpython-36.pyc,, -numpy/lib/__pycache__/index_tricks.cpython-36.pyc,, -numpy/lib/__pycache__/format.cpython-36.pyc,, -numpy/lib/__pycache__/_iotools.cpython-36.pyc,, -numpy/fft/tests/__pycache__/test_fftpack.cpython-36.pyc,, -numpy/fft/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/fft/tests/__pycache__/test_helper.cpython-36.pyc,, -numpy/fft/__pycache__/setup.cpython-36.pyc,, -numpy/fft/__pycache__/helper.cpython-36.pyc,, -numpy/fft/__pycache__/fftpack.cpython-36.pyc,, -numpy/fft/__pycache__/info.cpython-36.pyc,, -numpy/fft/__pycache__/__init__.cpython-36.pyc,, -numpy/doc/__pycache__/glossary.cpython-36.pyc,, -numpy/doc/__pycache__/constants.cpython-36.pyc,, -numpy/doc/__pycache__/ufuncs.cpython-36.pyc,, -numpy/doc/__pycache__/broadcasting.cpython-36.pyc,, -numpy/doc/__pycache__/basics.cpython-36.pyc,, -numpy/doc/__pycache__/creation.cpython-36.pyc,, -numpy/doc/__pycache__/subclassing.cpython-36.pyc,, -numpy/doc/__pycache__/byteswapping.cpython-36.pyc,, -numpy/doc/__pycache__/indexing.cpython-36.pyc,, -numpy/doc/__pycache__/internals.cpython-36.pyc,, -numpy/doc/__pycache__/__init__.cpython-36.pyc,, -numpy/doc/__pycache__/misc.cpython-36.pyc,, -numpy/doc/__pycache__/structured_arrays.cpython-36.pyc,, -numpy/random/tests/__pycache__/test_random.cpython-36.pyc,, -numpy/random/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/random/tests/__pycache__/test_regression.cpython-36.pyc,, -numpy/random/__pycache__/setup.cpython-36.pyc,, -numpy/random/__pycache__/info.cpython-36.pyc,, -numpy/random/__pycache__/__init__.cpython-36.pyc,, -numpy/matrixlib/tests/__pycache__/test_numeric.cpython-36.pyc,, -numpy/matrixlib/tests/__pycache__/test_multiarray.cpython-36.pyc,, -numpy/matrixlib/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/matrixlib/tests/__pycache__/test_regression.cpython-36.pyc,, -numpy/matrixlib/tests/__pycache__/test_defmatrix.cpython-36.pyc,, -numpy/matrixlib/__pycache__/defmatrix.cpython-36.pyc,, -numpy/matrixlib/__pycache__/setup.cpython-36.pyc,, -numpy/matrixlib/__pycache__/__init__.cpython-36.pyc,, -numpy/polynomial/tests/__pycache__/test_hermite_e.cpython-36.pyc,, -numpy/polynomial/tests/__pycache__/test_printing.cpython-36.pyc,, -numpy/polynomial/tests/__pycache__/test_laguerre.cpython-36.pyc,, -numpy/polynomial/tests/__pycache__/test_hermite.cpython-36.pyc,, -numpy/polynomial/tests/__pycache__/test_classes.cpython-36.pyc,, -numpy/polynomial/tests/__pycache__/test_legendre.cpython-36.pyc,, -numpy/polynomial/tests/__pycache__/test_chebyshev.cpython-36.pyc,, -numpy/polynomial/tests/__pycache__/__init__.cpython-36.pyc,, -numpy/polynomial/tests/__pycache__/test_polyutils.cpython-36.pyc,, -numpy/polynomial/tests/__pycache__/test_polynomial.cpython-36.pyc,, -numpy/polynomial/__pycache__/chebyshev.cpython-36.pyc,, -numpy/polynomial/__pycache__/legendre.cpython-36.pyc,, -numpy/polynomial/__pycache__/hermite.cpython-36.pyc,, -numpy/polynomial/__pycache__/setup.cpython-36.pyc,, -numpy/polynomial/__pycache__/polyutils.cpython-36.pyc,, -numpy/polynomial/__pycache__/polynomial.cpython-36.pyc,, -numpy/polynomial/__pycache__/_polybase.cpython-36.pyc,, -numpy/polynomial/__pycache__/hermite_e.cpython-36.pyc,, -numpy/polynomial/__pycache__/__init__.cpython-36.pyc,, -numpy/polynomial/__pycache__/laguerre.cpython-36.pyc,, +numpy/__config__.py,sha256=KNB1kK5pX6g-tTxs41ZfrD32q1asv7QolLtKuOQELjE,1519 +numpy/__init__.py,sha256=0GuK-LaEiJRiqvrRckRIORF2gDvUeVsVuTIqTIiheQg,6251 +numpy/_distributor_init.py,sha256=IgPkSK3H9bgjFeUfWuXhjKrgetQl5ztUW-rTyjGHK3c,331 +numpy/_globals.py,sha256=qf1yKIuK_D0imA5KlGE8iIwMg8-cPjDOn09XDTpQ3-k,1859 +numpy/_import_tools.py,sha256=3SF2nj5PVN-dvo90nyR_MKDesG_CkdjsKjnEJz5dVtg,13234 +numpy/add_newdocs.py,sha256=YsVuFJ3tvj9yfNA5owaHPrpL_Me-tfHA9Hf3-dtY2UA,234747 +numpy/conftest.py,sha256=oeEsLztUga9GPjZv6DkotBI_LPyaG0dP1sPxiILtxyg,1557 +numpy/ctypeslib.py,sha256=x1f8LcCdsjyBebwgN6dAiidqZ2yDtOgABTTyKq26eD4,14730 +numpy/dual.py,sha256=YCy6m-ZNQ4dnUdHm7IXtqdJhxu-Od2_IALF9t9IGGvI,1864 +numpy/LICENSE.txt,sha256=LZqeBuw7X8mx5HrtuCzD2Tbxik_IGPTL59XiwxN--20,42197 +numpy/matlib.py,sha256=bfk5RflWhOjnBKhpU4L-WDafyzoNIy5-K-8MMyIauN8,9809 +numpy/setup.py,sha256=lsyhnRXfo0ybq63nVUX8HnYhQ1mI0bSic-mk-lK3wnc,920 +numpy/version.py,sha256=N8joN8hIjl-JnoNgGod1XOrcuPE8Q3GkmPRb2gZ9XJc,294 +numpy/compat/__init__.py,sha256=MHle4gJcrXh1w4SNv0mz5rbUTAjAzHnyO3rtbSW3AUo,498 +numpy/compat/_inspect.py,sha256=e3YHRFlppbfcnSSwlAdlxON5cSW0pEZT6zh7qRlvlkM,7554 +numpy/compat/py3k.py,sha256=ppRKNypmqiWf7uiHBPpa1zPsHRQj-FGjwH1l3VRO3H0,3637 +numpy/compat/setup.py,sha256=XpMi600IpZvzlNAuOaiwxAUZXDEhzEU4HYh1_p2kBCY,371 +numpy/core/__init__.py,sha256=odFytSn-HunBsWr8_QBcoA_RbQaH2fLFDb3gN70K_R8,3044 +numpy/core/_dummy.cpython-36m-darwin.so,sha256=Yr6euqkb2Jh1uaHOZvT-r26pbuANiL6UsRq3nmVZSO4,25264 +numpy/core/_internal.py,sha256=dfk2fEU4fpw0bo1acllt9eN82Mqh0f8hWaNhiVKe5pI,21639 +numpy/core/_methods.py,sha256=84BTKNFGhQO1xiQLHAnbgHFiogU086c8AXJGFQ-hqxc,4704 +numpy/core/arrayprint.py,sha256=nLARQljOwPsUSb_Ar8y8PxQw7XQ4vcjGfs-_7Aff8n8,54746 +numpy/core/cversions.py,sha256=ukYNpkei0Coi7DOcbroXuDoXc6kl5odxmcy_39pszA0,413 +numpy/core/defchararray.py,sha256=cWV-tZK51T9EGNzAjminv-7tjUh_Ccak1tvBnZk-8W8,67369 +numpy/core/einsumfunc.py,sha256=rt-Myg_N27dcgpVVKdkhqLMMklr8OtNAd303MczLfmY,39801 +numpy/core/fromnumeric.py,sha256=k1NoHWD7lliZtgnZOd6ojSBZWQjH3atynpFVR41WJ7c,100637 +numpy/core/function_base.py,sha256=kvzSPr9FxeyXxhR1_1XOMlmDW0Dw4u1KECF3aUEtTGg,12340 +numpy/core/generate_numpy_api.py,sha256=PSNxF101-jn99AzQNLRxu4tXT9SzoUTmOhL1w_-tV_A,7506 +numpy/core/getlimits.py,sha256=bD7KdPDYEwVyBn7MuybKjBFTxWuFWFu5A-bsTjLx9zE,18422 +numpy/core/info.py,sha256=SjDs9EfOswEy-ABgUr9f09v83sUdhmwFXRlaZbOGCnA,4692 +numpy/core/machar.py,sha256=I083PVybsu10wDgHzs7vxpvd1KigQuoSqCqSRBKn84A,10789 +numpy/core/memmap.py,sha256=GTz2LUpjGeHk5D4PNcsTT7GJK-fNzzX2outwZ7yb78Q,11432 +numpy/core/multiarray.cpython-36m-darwin.so,sha256=zVxKm3-ARIpmmB8A_wRHVXPfolmi6yfIi9cJAe-NawA,4633048 +numpy/core/multiarray_tests.cpython-36m-darwin.so,sha256=AewE56ndAKIrCiHdXlwHyQljeLFOJNNx3gj6S2i2ATs,222604 +numpy/core/numeric.py,sha256=lGlzGIWQeeJFbZWuSWVwcK5KHOMrEX-TsERZt3cJq1A,85731 +numpy/core/numerictypes.py,sha256=hyWsBr_u8zEkwOoZGyqxl4Hw8r6pLRWJulfNbSDk_fo,29102 +numpy/core/operand_flag_tests.cpython-36m-darwin.so,sha256=aONV3cB0lZjTjXuLCEdG_zKSKlHn-ftyfZI1dkUlWLI,26768 +numpy/core/records.py,sha256=0Gw_S2n2kt9PUQB80Hw1p-TBVo5NsIKCUHsBJJqQUtc,29609 +numpy/core/setup.py,sha256=-BWphQJ41KoTzf4rrg_VpuHNzf5Zz3svG11r90VTfas,41477 +numpy/core/setup_common.py,sha256=ANouzwSb8f8SLYIvhomoY_ct_xPUB85qo-j02OwYuOc,15953 +numpy/core/shape_base.py,sha256=e9au6U6FRQgcbBCqKC2yzbIiruqH0EUuob1LhyVJQIA,18548 +numpy/core/struct_ufunc_test.cpython-36m-darwin.so,sha256=wRHi5yd7SmNcgeluSTTAjEK07It88ctJB7Xuow8GcnA,26844 +numpy/core/test_rational.cpython-36m-darwin.so,sha256=z-5v5c_-av2LZ3bbpFLIamAEjUnW-shd_r3ppdlPY3w,125328 +numpy/core/umath.cpython-36m-darwin.so,sha256=6vnHqJ-0pAIySnzAaNejiXdGigZgYhm5XM8TXlO_5C4,2348376 +numpy/core/umath_tests.cpython-36m-darwin.so,sha256=nQYkoDVTuC_PPwklxKiNfWmpsawCDEpgH0EL5KqUsT4,54108 +numpy/core/include/numpy/__multiarray_api.h,sha256=yepclh-ePKzaERkl10dDfs_HaR6vhu6n7-sI_zZWyjw,61035 +numpy/core/include/numpy/__ufunc_api.h,sha256=z3FkGMT6z9c6j0ODa2A4QY-54qmIyLy-O7LjoSgluq0,11657 +numpy/core/include/numpy/_neighborhood_iterator_imp.h,sha256=hNiUJ3gmJRxdjByk5R5jmLeBKpNfaP_29KLHFuTrSIA,1861 +numpy/core/include/numpy/_numpyconfig.h,sha256=Hm9f4N4IO7JFjrGKbrAaBeSLRKGseOIQ99z_gvYF2j8,982 +numpy/core/include/numpy/arrayobject.h,sha256=SXj-2avTHV8mNWvv7sOYHLKkRKcafDG7_HNpQNot1GE,164 +numpy/core/include/numpy/arrayscalars.h,sha256=vC7QCznlT8vkyvxbIh4QNwi1LR7UkP7GJ1j_0ZiJa1E,3509 +numpy/core/include/numpy/halffloat.h,sha256=ohvyl3Kz3mB1hW3MRzxwPDH-0L9WWM_eKhvYLjtT_2w,1878 +numpy/core/include/numpy/multiarray_api.txt,sha256=pSPa8_5viPnySHv8QTQpNOM3Bx4_dDirI_WmdGYd5hk,55812 +numpy/core/include/numpy/ndarrayobject.h,sha256=DzoNq38b7T78jcML3cEQ-Xf3l15goFWMag0C6vgj9KU,10891 +numpy/core/include/numpy/ndarraytypes.h,sha256=Adea0CadJ5obrdnPodrY1B_TqjyC3wdsxqvX0D6yiGw,64303 +numpy/core/include/numpy/noprefix.h,sha256=YE-lWegAdZKI5lf44AW5jiWbnmO6hircWzj_WMFrLT4,6786 +numpy/core/include/numpy/npy_1_7_deprecated_api.h,sha256=NxVeVL9P08clRuJlLQJIfH9QrgVtkqtndelZESo23NY,4604 +numpy/core/include/numpy/npy_3kcompat.h,sha256=0cNvBxix_U8mqFgqGjC-Ht08WUT3oy32ugKXPNJM3AM,12181 +numpy/core/include/numpy/npy_common.h,sha256=i-I_roGPEsePJCUNk6PSBp3Aa4Kd6wTxyZfgnU-RnxM,37647 +numpy/core/include/numpy/npy_cpu.h,sha256=s8TmXL352YGFC--KCSp-_4iQxXFU58Y5XsDfEFHInH8,2988 +numpy/core/include/numpy/npy_endian.h,sha256=t_w5L4fDg3rmaHa3ZmhcZ-1dkTYV-FKdNCR8NBY_MUs,2288 +numpy/core/include/numpy/npy_interrupt.h,sha256=wMRh41xeFmGEOkwxJpeLp9U-9mCbUv7VeAdAu28p9Kw,3439 +numpy/core/include/numpy/npy_math.h,sha256=o1g_kScKQi6Z_a51-iosiQKSBfG0OqsvsD7sE13Z0Ms,18520 +numpy/core/include/numpy/npy_no_deprecated_api.h,sha256=X-wRYdpuwIuerTnBblKjR7Dqsv8rqxn01RFLVWUHvi8,567 +numpy/core/include/numpy/npy_os.h,sha256=cEvEvpD92EeFjsjRelw1dXJaHYL-0yPJDuz3VeSJs4E,817 +numpy/core/include/numpy/numpyconfig.h,sha256=rBffDZbJysfclc1p9K9DulOKMDMrrU_FRfsx0THGV78,1167 +numpy/core/include/numpy/old_defines.h,sha256=7eiZoi7JrdVT9LXKCoeta5AoIncGa98GcVlWqDrLjwk,6306 +numpy/core/include/numpy/oldnumeric.h,sha256=Yo-LiSzVfDK2YyhlH41ff4gS0m-lv8XjI4JcAzpdy94,708 +numpy/core/include/numpy/ufunc_api.txt,sha256=RZO1PJ1AqVk61bQH1lfqYNzM6CF4dqM_06WVLJ8Qbek,6134 +numpy/core/include/numpy/ufuncobject.h,sha256=9osdJ72Vfkb9UJzs52ssKf0Wmgs_vzMch4NBuEyc12U,12524 +numpy/core/include/numpy/utils.h,sha256=0RTrU1-0V98LJnba5hTGSUoRnxo4HwM9cm2zbxC8B6E,628 +numpy/core/lib/libnpymath.a,sha256=C2Xz9A7N-3wFDyoQh4BdQfWbe7Ygte65Ca3A0_b8DnM,231440 +numpy/core/lib/npy-pkg-config/mlib.ini,sha256=puARujEiRP-jFD3s9Jwpe6E1fgT9T3YIny-pWJRDYNE,139 +numpy/core/lib/npy-pkg-config/npymath.ini,sha256=kamUNrYKAmXqQa8BcNv7D5sLqHh6bnChM0_5rZCsTfY,360 +numpy/core/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/core/tests/test_abc.py,sha256=uWVQeG8pu3Eak8dHmK5GoeFGiIKBl76aAH-H74p4viw,2472 +numpy/core/tests/test_api.py,sha256=31FydyeHAiv73IcvWpRDX-AkqqYXMpCT5jEev6a6FfQ,18906 +numpy/core/tests/test_arrayprint.py,sha256=07RKEerhMbQt4dxcYGRYKIO7hQLh5e7TKke9pIZVndY,27957 +numpy/core/tests/test_datetime.py,sha256=qN740FxwSsIjmx9ZJBOi7_Z_8uNfNgePr9nQN13k51Y,93390 +numpy/core/tests/test_defchararray.py,sha256=lGJ_u02CgPbEOnRvestVxOJWzylQynImvMRp5f6aNpo,25693 +numpy/core/tests/test_deprecations.py,sha256=ElzfuBRZCYyLXObr2bAXKX3OCvaQAk6kW1kwzZ3TO0Q,19598 +numpy/core/tests/test_dtype.py,sha256=i60gacyb_slOdsIMoXyYnpRC48qWJAKnZ2LpuFHXpLk,28965 +numpy/core/tests/test_einsum.py,sha256=nBMQTSTy7Yj42mum-U8AnrIzf6-LDpP2eZG55-ba3k8,39521 +numpy/core/tests/test_errstate.py,sha256=xGJRBGIbiTvriGlwv3T0iQIZwwcEPZrpYSp6ac5HycU,1576 +numpy/core/tests/test_extint128.py,sha256=u_5xQOmBzUFPFaztHzXxl5U4Ox4ToG-rRIZp9lO0jqQ,5784 +numpy/core/tests/test_function_base.py,sha256=wjsCGDRdrCcsZF-gsqr7XDEf0OBD3PV-MJr6p52B-mA,11413 +numpy/core/tests/test_getlimits.py,sha256=mhxn555VivUhj8tMpoNVbnQmS4hN5j67MeeuGHgoQ2c,4586 +numpy/core/tests/test_half.py,sha256=prMe4YaH8Ik00mv8A7mSJcDUzdjOPqtxvbHmAK8wvP0,18627 +numpy/core/tests/test_indexerrors.py,sha256=MZ9PlkCfGlwxxO7CoA1kqAU_I3W9wDEmiwshji5mkpA,4926 +numpy/core/tests/test_indexing.py,sha256=rGOF3VobxsrjTd4vnDv8HuYfQhKIR8QSxyKadPGpRNI,50084 +numpy/core/tests/test_item_selection.py,sha256=Gdjd3jHB7NQVO1jU-y81YkGTGz1J6rNtSduaTFLXTfg,3669 +numpy/core/tests/test_longdouble.py,sha256=kQruH03nz6XlFjNGHMIGjnsVYM57nui9KH6bN-FKXb8,5960 +numpy/core/tests/test_machar.py,sha256=QmnKVIV53faHjIBHUsYQ7KjX-SRmrE0lLFuipNLx7Jw,1235 +numpy/core/tests/test_mem_overlap.py,sha256=4mHDxV16229uyI1t0drROq_XwwqD17-VrJDN5pChAy8,29564 +numpy/core/tests/test_memmap.py,sha256=5RM3mT_-vGjtoYYatgseRjqDs0jhoxalplGDDXNeEmc,7031 +numpy/core/tests/test_multiarray.py,sha256=hY1G1e71SuXUACnKIUBKchU2VR0I6gvjTbZu4YhH44s,272174 +numpy/core/tests/test_nditer.py,sha256=gl6UBW2k9YTZ-UwWJnbMBP31wovmzS8_hVrNEqXqQqY,106132 +numpy/core/tests/test_numeric.py,sha256=YD1IIWn4PxKAoRgWPJkv_-P-L-1mVubSwgxhx0MLzAc,102126 +numpy/core/tests/test_numerictypes.py,sha256=WqBR5OzIA0C--i-sVeiO1ayUvF-gQUBhZxDtQY0VGN8,15412 +numpy/core/tests/test_print.py,sha256=zpPMWJLXgzVJ7uPR7PlZWe28nr_MyymSO5cXPgzK1ro,8089 +numpy/core/tests/test_records.py,sha256=JaqAyHLMO1c5vMT7hG_Q82NB-lU7hbQ5SkKDLThmaN4,15346 +numpy/core/tests/test_regression.py,sha256=Lfuhv6CvzL5uPWJ_o9Q3DT2I8g8xNOTpz7SYjADthO4,79720 +numpy/core/tests/test_scalar_ctors.py,sha256=vbEucXNOW8AQWwISsGAwUgNKuUKDmGzZp2-rbeDj6_M,2362 +numpy/core/tests/test_scalarinherit.py,sha256=rs8sDrtinrYxOe9uQQ_u5t_zTb3jPc75cAUzdjbGW8c,1867 +numpy/core/tests/test_scalarmath.py,sha256=6bTYxUaNSdeBXvv36HBEvyAMfTbxFVCgCvc5B8alQcU,26626 +numpy/core/tests/test_scalarprint.py,sha256=kmR5OkfHx4-pLVSfYXVAM0OPP-paTzKWguIe9b6GQ9c,10734 +numpy/core/tests/test_shape_base.py,sha256=nJ79bbZtvT6MDxjlHhBzr2yKvWwLbJh18RcvUoZk6_g,20299 +numpy/core/tests/test_ufunc.py,sha256=UFhzMdHyOkcTnmBQqi1P0_9fCrkYqkPHzGCpVyHb_5g,55288 +numpy/core/tests/test_umath.py,sha256=NdltEL3YSOuVoJQ8GWVqCuqIJYzdG0K39C9h8ZxGPF0,99032 +numpy/core/tests/test_umath_complex.py,sha256=i_RpeNLgtGakbxHH6VHBi-VlPFqzjLExEKIpPMSLajQ,19656 +numpy/core/tests/test_unicode.py,sha256=kgAgXK1bK7eoPR5jb-hcsVmMEUpVZNkcp814fOGQwvc,13733 +numpy/core/tests/data/astype_copy.pkl,sha256=lWSzCcvzRB_wpuRGj92spGIw-rNPFcd9hwJaRVvfWdk,716 +numpy/core/tests/data/recarray_from_file.fits,sha256=NA0kliz31FlLnYxv3ppzeruONqNYkuEvts5wzXEeIc4,8640 +numpy/distutils/__config__.py,sha256=KNB1kK5pX6g-tTxs41ZfrD32q1asv7QolLtKuOQELjE,1519 +numpy/distutils/__init__.py,sha256=AEelgCxrNenX-csNhVCrMNIBHGB895HovZJejj_qwVY,1088 +numpy/distutils/__version__.py,sha256=SSRZKvGfvg_GpYbXWtI5gaTK0NGW9nBBCyNghaaXBh8,151 +numpy/distutils/ccompiler.py,sha256=ZQ9GILkgK3c-jipD572npLpSdTXOsd_h1ieNrzqxlU4,28547 +numpy/distutils/compat.py,sha256=xzkW8JgJgGTmye34QCYTIkLfsXBvmPu4tvgCwXNdiU0,218 +numpy/distutils/conv_template.py,sha256=nBPvD1z_mWZg0j9rAyRITxk7bfOfUVJ3yJ34dCiWIwI,9709 +numpy/distutils/core.py,sha256=4r-OVRLoRKp4KzgTjb_Ov7qXDw1NO89x5ShjUoDw34c,8183 +numpy/distutils/cpuinfo.py,sha256=AHJuQeg78_P5EReO1kLd-MAohvB-GfV8zuRh7F8hltI,23015 +numpy/distutils/environment.py,sha256=XBqttd7d6sBr_-XA2nLG7gaRnLS4b_wKd0GoLLG1VQ8,2346 +numpy/distutils/exec_command.py,sha256=G3X8i0rWikxyCe0mwlmiEdmG6_J0OwtbY5-fanqKN8U,8663 +numpy/distutils/extension.py,sha256=q_NjgW-sOoeEBbeSEJwFh411mTgsF7BzGYso61Wf0qg,2967 +numpy/distutils/from_template.py,sha256=U-XEiWrYDXbZUEa8NKykjJpZolzPlBLP8F-kSVhlRb8,7830 +numpy/distutils/info.py,sha256=lNxUhbJnzWjA47P2I_9NW-tuVrjGzL62jHDlQJ3pp6E,157 +numpy/distutils/intelccompiler.py,sha256=1qzr6PMxi0UkR0NUY3rt3gqww9GwJ-Gbe91yxQKlieU,4291 +numpy/distutils/lib2def.py,sha256=i4qqVsMLKHcQIrPXlVhKUQtCAVLw0ePlk08CfOgGLgs,3512 +numpy/distutils/line_endings.py,sha256=aBO2e754iin4Ylo7FNwlBg6nPudXMnQZYdhVhf-E3aA,2053 +numpy/distutils/log.py,sha256=yHzdtNdTg6YtvO50Hu-Le5WJ7Typ2TvaCYabelTaUO0,2745 +numpy/distutils/mingw32ccompiler.py,sha256=VSgUBrHQ0jGARQOmIHR2i2xuy9Qba8Y1A9DQzJRJiMo,25201 +numpy/distutils/misc_util.py,sha256=j0MbOeJgUf1rojMKNVwuq7Z4bPZaBQ8xO0Frqkujork,82201 +numpy/distutils/msvc9compiler.py,sha256=TuPYjPFp3nYQSIG1goNxuOly7o3VMx-H35POMpycB3k,2258 +numpy/distutils/msvccompiler.py,sha256=BTj0LPytcNNxcYJ5AUtQUQiD8ZhYNrzCCGkNxSnwdQI,1991 +numpy/distutils/npy_pkg_config.py,sha256=TOlCf_L1pSQyvsFl60dinf1Fnly4Hg5U9u4krTtCsMk,13243 +numpy/distutils/numpy_distribution.py,sha256=lbnEW1OxWxC_1n2sKd0Q3fC5QnNdFuAkNAlvXF99zIQ,700 +numpy/distutils/pathccompiler.py,sha256=FjNouOTL8u4gLMbJW7GdT0RlsD2nXV1_SEBNZj9QdpQ,779 +numpy/distutils/setup.py,sha256=q3DcCZNkK_jHsC0imocewd4uCKQWWXjkzd4nkBmkMFI,611 +numpy/distutils/system_info.py,sha256=J8IpdAc3goPXByTXxCLsFPUbIGLsUihqCyuEqr31BdY,89501 +numpy/distutils/unixccompiler.py,sha256=nut8kzEi9BQpXcy5qNcy0w0d6BQ5o6ghJx2f0D4DH-w,5156 +numpy/distutils/command/__init__.py,sha256=l5r9aYwIEq1D-JJc8WFUxABk6Ip28FpRK_ok7wSLRZE,1098 +numpy/distutils/command/autodist.py,sha256=1oytviCdsUjm3YxLLVePvWEqxyz0eDRRqvfokDm2sXQ,2048 +numpy/distutils/command/bdist_rpm.py,sha256=rhhIyFzkd5NGi6lZaft44EBPZB3zZFRDc75klJYnbw8,775 +numpy/distutils/command/build.py,sha256=6Q9bDubq5WfwR1K5woDFXed692szD0Rq-5Ckv2xpoK4,1618 +numpy/distutils/command/build_clib.py,sha256=_Y3upI_slekgMk2CI2vplOXj5p1_aEHa-F9_nJ0HOgg,13389 +numpy/distutils/command/build_ext.py,sha256=2oQs0Pv-k3wtr7iEKZxRxK1x2sB3egTGxIvsXhCutqY,25264 +numpy/distutils/command/build_py.py,sha256=7TBGLz0va0PW6sEX-aUjsXdzvhuSbJGgIrMim1JTwu4,1210 +numpy/distutils/command/build_scripts.py,sha256=ze19jHBhC3JggKLbL9wgs9I3mG7ls-V2NbykvleNwgQ,1731 +numpy/distutils/command/build_src.py,sha256=PFSMXRvahsP7oDK1sZXvb-tC2gCv6wupeuXJkrp6xzw,30946 +numpy/distutils/command/config.py,sha256=PhU3G1GEShA2nUJM6jzVxZpqSxG8faRJiOwXw7zZuwc,18010 +numpy/distutils/command/config_compiler.py,sha256=enSybR68NCFnY7wKHTeU4sCmc0zGenL0oZ_8F7Cn-H0,4379 +numpy/distutils/command/develop.py,sha256=nYM5yjhKtGKh_3wZwrvEQBLYHKldz64aU-0iSycSkXA,641 +numpy/distutils/command/egg_info.py,sha256=pdiCFQiQuIpf_xmVk9Njl7iowY9CxGn9KRbU-A9eBfg,987 +numpy/distutils/command/install.py,sha256=yBj3NM6sctAbG3QR5Y4qPs7YjxpW7EoKeMPEkNWf2qU,3127 +numpy/distutils/command/install_clib.py,sha256=6tUO3FbF_b_e_Ly31qod9rB4yHA2z8m2mh6qry1a4yk,1315 +numpy/distutils/command/install_data.py,sha256=7iWTw93ty2sBPwHwg_EEhgQhZSZe6SsKdfTS9RbUR9A,914 +numpy/distutils/command/install_headers.py,sha256=NbZwt-Joo80z_1TfxA-mIWXm2L9Mmh4ZLht7HAuveoo,985 +numpy/distutils/command/sdist.py,sha256=tHmlb0RzD8x04dswPXEua9H_b6GuHWY1V3hYkwJDKvA,799 +numpy/distutils/fcompiler/__init__.py,sha256=FHfaXHp4Ga31vxbFs7LxIkUy0dxwZnnm-My5Z1ncCos,39347 +numpy/distutils/fcompiler/absoft.py,sha256=JCcA8aa-D86JVZKe5ERnL3BGpB2nm2cphkhwhqilQog,5567 +numpy/distutils/fcompiler/compaq.py,sha256=djulalEdV6b58ofcEw14Uoq5-aNgblJMqLIzNwmJ2SE,4109 +numpy/distutils/fcompiler/g95.py,sha256=K68RRAvOvyKoh-jsD9J4ZDsHltrGnJ_AllxULhy6iOE,1396 +numpy/distutils/fcompiler/gnu.py,sha256=WX5n9rIa0LEDKDBBE6DeYm2eZw5skcdxo5b0gaMXe-w,19763 +numpy/distutils/fcompiler/hpux.py,sha256=xpNfy7vCKWPnJ5M3JPnjMAewKBAfKN5hFX3hvEL2zaM,1419 +numpy/distutils/fcompiler/ibm.py,sha256=hkOqy4vPXozEm8Ln4ucWpTfdLlBPOF_bLROOJZvXdKU,3435 +numpy/distutils/fcompiler/intel.py,sha256=to4dvvaWYUOKesTnaFP3kw1kwekY_nPEOO7OIqrmSgE,6773 +numpy/distutils/fcompiler/lahey.py,sha256=pJ0-xgtYwyYXgt8JlN8PFeYYEWB3vOmFkNx6UUFXzuM,1393 +numpy/distutils/fcompiler/mips.py,sha256=IxLojWR1oi0VW93PxPpHQXRwZcYffD1dunllQW2w19A,1780 +numpy/distutils/fcompiler/nag.py,sha256=eiTvBopdCgVh5-HDTryVbRrYvf4r_Sqse1mruTt5Blo,2608 +numpy/distutils/fcompiler/none.py,sha256=N6adoFAf8inIQfCDEBzK5cGI3hLIWWpHmQXux8iJDfA,824 +numpy/distutils/fcompiler/pathf95.py,sha256=Xf1JMB30PDSoNpA1Y-vKPRBeNO0XfSi0dvVQvvdjfUQ,1127 +numpy/distutils/fcompiler/pg.py,sha256=Ix3xah0mbBdx7IqJ3ic7YlzL5HtiBYKtN5PBMd6SDDE,4213 +numpy/distutils/fcompiler/sun.py,sha256=HRyTh2aoHKuL7Lnb96_a1kXkNFaSv7mNFgzUnYYuzYQ,1645 +numpy/distutils/fcompiler/vast.py,sha256=LJ21-WIJsiquLtjdDaNsJqblwN5wuM2FZsYl1R40vN8,1733 +numpy/distutils/mingw/gfortran_vs2003_hack.c,sha256=F3PYZ7LTP_Q1svGVX8N7oRYWpd15LqaiyBoQk5SkQiA,74 +numpy/distutils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/distutils/tests/test_exec_command.py,sha256=eL_MDj2PFcUb45viH2CZQhnhJhC3iotC2fB681ywBp0,7216 +numpy/distutils/tests/test_fcompiler_gnu.py,sha256=D0F-UPIQi8XpFg8iiqFG7ZpCD0YEsYc_tuGRdjG18pU,2288 +numpy/distutils/tests/test_fcompiler_intel.py,sha256=9RZqwxN4PrdGOI-4Z4AYMHMlGEfAUQI3Epq-Sk3TKeM,1210 +numpy/distutils/tests/test_fcompiler_nagfor.py,sha256=IhprctRe_6_5-oprg0mSCa0oD-nlYDSVdz5sXhHH8BA,1247 +numpy/distutils/tests/test_misc_util.py,sha256=4I_8nme1cH-34OJbc9Ja-snSwZ0Zh28JmxY8CkyECvY,3308 +numpy/distutils/tests/test_npy_pkg_config.py,sha256=vfWrY-F5ov7Jv_7mYgXvmwgbd_9qIKZUGHQ-mzbsLio,2709 +numpy/distutils/tests/test_system_info.py,sha256=NROPLl2fFOVdg791f7eWza6q0cuKRiQdWg5pt4JWZJc,7485 +numpy/doc/__init__.py,sha256=BDpxTM0iw2F4thjBkYqjIXX57F5KfIaH8xMd67N6Jh0,574 +numpy/doc/basics.py,sha256=CV0B_8jUvTIR4oCIKnoAxQtrX0rkMHKizO8_5WNZVQ8,7918 +numpy/doc/broadcasting.py,sha256=pUtsDrdRgi7usB8pv37Vx-EZMPk7fpcDDjCCpK9pCWc,5565 +numpy/doc/byteswapping.py,sha256=vbQ7Zy3R0fVPX4zpJB-TzcV4g1nffzok4kDqD9x_Guk,5346 +numpy/doc/constants.py,sha256=Jc0iAiU7KhzmyQ683LwKIaDpmoZyttmePYDvdz4d7EM,8882 +numpy/doc/creation.py,sha256=_ztD3TE-I2sUj3u9v9iQQ2XLKE_u00kzrQeFLLPclQA,5501 +numpy/doc/glossary.py,sha256=cUJhYpuduXVsNwK7IUcgUfx-EbF3rWWGiGhpjmpzc5o,12371 +numpy/doc/indexing.py,sha256=DtFUsUXpNoxCHpNSPfQ_hwI1FCleStL5fdnzP_Z9hLQ,15669 +numpy/doc/internals.py,sha256=xYp6lv4yyV0ZIo_qCvLCAWxDa0rhu7FNrTmpXY1isO4,9669 +numpy/doc/misc.py,sha256=g-tgHRpjmlCrHC-VPdlx_ZAX3ATvkre0oY-TiIc6Izw,6194 +numpy/doc/structured_arrays.py,sha256=ZPXD7-Svyq7Ur6FrkQ_oD-KyrnPZU2ZMxNHC1K_w-mc,22918 +numpy/doc/subclassing.py,sha256=NOBCa__cX2n_9A0ShdDWBAxVrovruYaouK9uAKbvidk,28560 +numpy/doc/ufuncs.py,sha256=vsAkCLEMh7Qa_3x4WbDMY3IQsDCLdOCuB_6P2aEcVLg,5427 +numpy/f2py/__init__.py,sha256=uCYsZBr66CpP0Ek0_PysG2jc1xJCqtzy0j8Ge-5QpUw,2027 +numpy/f2py/__main__.py,sha256=MLrjKb74kCDL3GuZ28623zgDH5iBXRUH4eEHOK_NN0Y,739 +numpy/f2py/__version__.py,sha256=rEHB9hlWmpryhNa0EmMnlAlDCGI4GXILC9CZUEV3Wew,254 +numpy/f2py/auxfuncs.py,sha256=mDvaBo3Y8tYpXLZfq8DCv6UZ3-2JqWc_iNBZRxGesb0,21826 +numpy/f2py/capi_maps.py,sha256=ObU9I3tM5ksYnn_JurrUEqyCM03yXrwJ81aD-8OuO0Y,31539 +numpy/f2py/cb_rules.py,sha256=su1u0Ckj3w0A19l6Ykgy4MfHQjF8EhZFXZ9YoW1xSLE,22356 +numpy/f2py/cfuncs.py,sha256=Tt4r-psLgzrUIb_B6KK-S1SySSH6Qt0WODCJHgnc-yQ,45113 +numpy/f2py/common_rules.py,sha256=qLhn27JDPFqhl-rATOkXX_L5GEq6-6N_7ERP3ued0Po,5030 +numpy/f2py/crackfortran.py,sha256=_wSk5fU_AKbXxROajBLnyEMidUAjHIFNhdy5V7g6Lpw,128404 +numpy/f2py/diagnose.py,sha256=VNuNTGnQaXn9Fn2jlueYt47634CvLQSaAWJWy_Nxwnw,5295 +numpy/f2py/f2py2e.py,sha256=N3JCJy-_96vqHQmoWcY3EvHIlhNWd_Ch9tgpT2laACA,22908 +numpy/f2py/f2py_testing.py,sha256=8rkBjUsNhBavpoBgi_bqDS8H8tBdd5BR8hrE6ENsIAo,1523 +numpy/f2py/f90mod_rules.py,sha256=YFK4MPkGHBxshAInbcapnumX3qlu0h6ya6GQpS8zWLk,9850 +numpy/f2py/func2subr.py,sha256=Oy12rqUa1vcXvzR6g8yx8jSYDwfKt5Jqiebf1QaWX1o,9224 +numpy/f2py/info.py,sha256=Mk1-neqpqYQ6njoVUCKHmMkyFkAqYeWH4cGZr8NfKiI,136 +numpy/f2py/rules.py,sha256=DDX0Vv1ALXnYAexMBjvlFniqt-vnzBB908T6kEARXTw,58525 +numpy/f2py/setup.py,sha256=zNM8_TSn1IK88xsJlat-itELgQzmV6i_yC_TyLzUTZI,3925 +numpy/f2py/use_rules.py,sha256=L6nTSJnxougQ2PVAzR7s-1spidcfDp9tzLIFAJe3gUI,3652 +numpy/f2py/src/fortranobject.c,sha256=TudGxLhRglhZEiySF_NC9KEPWAhCpNfUd7ymbfEsEIw,35813 +numpy/f2py/src/fortranobject.h,sha256=TbUsTEKqs4MM4bLxXCG7stY5r8x6zl0s6s_xRVzhgYc,4931 +numpy/f2py/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/f2py/tests/test_array_from_pyobj.py,sha256=jFY96nTVlk8e6kB38ijsIxBveAfBiK5JFIl6KYHRxXU,22111 +numpy/f2py/tests/test_assumed_shape.py,sha256=rhwzCgHihXONSMCdPh6UJjW65sx9nsKJyB9qEsoQUuA,1001 +numpy/f2py/tests/test_block_docstring.py,sha256=CDIq4TZ7OSn6-sLZk1bDVfG3UZMg4F763c7S063ZMro,623 +numpy/f2py/tests/test_callback.py,sha256=znNm7999PKsarlcLI4E1v6A9WXa1uF6H1fAZZ6wzu4k,4014 +numpy/f2py/tests/test_common.py,sha256=YAywQPUAXGCzHhJp6BwX-pdB-xjEOjJSfe99vdnnTXA,900 +numpy/f2py/tests/test_kind.py,sha256=nJtZKnB3JPEUW0C1WiZhFuuM_D-A6BY-0Rs_rDb_6j0,1126 +numpy/f2py/tests/test_mixed.py,sha256=WBaXSr0KbxLcIAYxTGmhKy8GI9jYvGhqDODvpVcjrPM,975 +numpy/f2py/tests/test_parameter.py,sha256=4xrIfF1gxWtSxXkMR8n4mD_-K_vxeGeSo4ST_LbR7yA,3977 +numpy/f2py/tests/test_regression.py,sha256=osrlIzj2-mrhxg2R3atBt3mBwDH_5_UtKfx8_IvL3nA,829 +numpy/f2py/tests/test_return_character.py,sha256=hh2QHvq1NozQLr2qvhnRPQ22WIo4M8H6UYvi0HYrViA,3869 +numpy/f2py/tests/test_return_complex.py,sha256=I1vkLbSsBxx5-0KAvZa6GDxuK9G3ozZEJp-hAJn1ir8,4784 +numpy/f2py/tests/test_return_integer.py,sha256=EXG73yTSQzztSLz0YtC6kdA1E5nxGngH0yNpdIlRJzU,4696 +numpy/f2py/tests/test_return_logical.py,sha256=ZUPQXuDON9vYopK35H4Z5b7mlr5U7TQ9DezjPlBQOSI,4950 +numpy/f2py/tests/test_return_real.py,sha256=RUYgQ_2dqp0wDhSOBJuoEkq3K8d2MGLnIq_A-ztfbPI,5410 +numpy/f2py/tests/test_size.py,sha256=xmhIHCd9o4oCoVPjf7UgzZ5xE0dNiH1OKKvg05bRNYs,1388 +numpy/f2py/tests/test_string.py,sha256=ZCQCbbemJkG0BlUGPwfHqwI35ZGiS3hJXJ-iJPkOR7k,728 +numpy/f2py/tests/util.py,sha256=ZHJqbYloVpUet0FhgJRNRZ-2oH3bMqBuDISaleosHh8,9454 +numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c,sha256=eeOSoN7luwRZ9Z8NMc8XGEs-vLu4qbdyyxdJPui98oE,8801 +numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap,sha256=But9r9m4iL7EGq_haMW8IiQ4VivH0TgUozxX4pPvdpE,29 +numpy/f2py/tests/src/assumed_shape/foo_free.f90,sha256=oBwbGSlbr9MkFyhVO2aldjc01dr9GHrMrSiRQek8U64,460 +numpy/f2py/tests/src/assumed_shape/foo_mod.f90,sha256=rfzw3QdI-eaDSl-hslCgGpd5tHftJOVhXvb21Y9Gf6M,499 +numpy/f2py/tests/src/assumed_shape/foo_use.f90,sha256=rmT9k4jP9Ru1PLcGqepw9Jc6P9XNXM0axY7o4hi9lUw,269 +numpy/f2py/tests/src/assumed_shape/precision.f90,sha256=r08JeTVmTTExA-hYZ6HzaxVwBn1GMbPAuuwBhBDtJUk,130 +numpy/f2py/tests/src/common/block.f,sha256=GQ0Pd-VMX3H3a-__f2SuosSdwNXHpBqoGnQDjf8aG9g,224 +numpy/f2py/tests/src/kind/foo.f90,sha256=zIHpw1KdkWbTzbXb73hPbCg4N2Htj3XL8DIwM7seXpo,347 +numpy/f2py/tests/src/mixed/foo.f,sha256=90zmbSHloY1XQYcPb8B5d9bv9mCZx8Z8AMTtgDwJDz8,85 +numpy/f2py/tests/src/mixed/foo_fixed.f90,sha256=pxKuPzxF3Kn5khyFq9ayCsQiolxB3SaNtcWaK5j6Rv4,179 +numpy/f2py/tests/src/mixed/foo_free.f90,sha256=fIQ71wrBc00JUAVUj_r3QF9SdeNniBiMw6Ly7CGgPWU,139 +numpy/f2py/tests/src/parameter/constant_both.f90,sha256=-bBf2eqHb-uFxgo6Q7iAtVUUQzrGFqzhHDNaxwSICfQ,1939 +numpy/f2py/tests/src/parameter/constant_compound.f90,sha256=re7pfzcuaquiOia53UT7qNNrTYu2euGKOF4IhoLmT6g,469 +numpy/f2py/tests/src/parameter/constant_integer.f90,sha256=nEmMLitKoSAG7gBBEQLWumogN-KS3DBZOAZJWcSDnFw,612 +numpy/f2py/tests/src/parameter/constant_non_compound.f90,sha256=IcxESVLKJUZ1k9uYKoSb8Hfm9-O_4rVnlkiUU2diy8Q,609 +numpy/f2py/tests/src/parameter/constant_real.f90,sha256=quNbDsM1Ts2rN4WtPO67S9Xi_8l2cXabWRO00CPQSSQ,610 +numpy/f2py/tests/src/regression/inout.f90,sha256=CpHpgMrf0bqA1W3Ozo3vInDz0RP904S7LkpdAH6ODck,277 +numpy/f2py/tests/src/size/foo.f90,sha256=IlFAQazwBRr3zyT7v36-tV0-fXtB1d7WFp6S1JVMstg,815 +numpy/f2py/tests/src/string/char.f90,sha256=ihr_BH9lY7eXcQpHHDQhFoKcbu7VMOX5QP2Tlr7xlaM,618 +numpy/fft/__init__.py,sha256=rmPQWW6qxubvIN7bE2DsN7fR27PWYl64T-rcDFaFcc8,258 +numpy/fft/fftpack.py,sha256=kmkcYonedtyVy1J-98r94Rm6mdUmzix0_kxJXxDq__A,46059 +numpy/fft/fftpack_lite.cpython-36m-darwin.so,sha256=mxARu93uXoUyqOCf5uipXBPbdzpsMj-F68Ddtuq7v9E,107000 +numpy/fft/helper.py,sha256=aZruJcPfb9mKdgTbdhK0er-puvpi0nIVpjI2BiUnjvw,9523 +numpy/fft/info.py,sha256=831NwiCI33uiLx21G7kFCwzZuFxDfmU8n-2LG4FJm2w,7235 +numpy/fft/setup.py,sha256=VR1boee7xZd3lOQVRJ3083I0kYqq_-RCo6CK6UK8Lso,550 +numpy/fft/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/fft/tests/test_fftpack.py,sha256=ivCFMYzRuBVXOwsZJ1HI5FchBsSxNCIyUvhns5DLqlA,7097 +numpy/fft/tests/test_helper.py,sha256=-fY_zZLkSagcL1CAQJAXXSfij1u-tHtxFKKnVaZPXzw,5999 +numpy/lib/__init__.py,sha256=PHzVALHyh1EqdvCw-lhDTH28gXSKjU5-1QSX_azB5QQ,1301 +numpy/lib/_datasource.py,sha256=S_sHqV8T4o3SdrJQ1dzO435zawHX8_fSgWyJMnr20eU,25311 +numpy/lib/_iotools.py,sha256=HVNgaZlOet3H3AiNZL0xl_P8zRkZDW7RI21UgpYGdcI,32616 +numpy/lib/_version.py,sha256=CwmJlO0-MIWJhksrX0Dr_qUDDn-R0oe3Od2I-qLjLs0,4867 +numpy/lib/arraypad.py,sha256=35naV74C2JsxpUYti53PkvPPctR72OrvY_XHDmpz45g,51857 +numpy/lib/arraysetops.py,sha256=Mp-bXIYEcBAHOGlJtAMWVSQwjvZhloS9RtCZ5pQn_o8,20345 +numpy/lib/arrayterator.py,sha256=niYNI2qhySUT5j_3gl07pPbkmY4GJqdwIGaMZyPil84,7191 +numpy/lib/financial.py,sha256=AYHgzhkSiGzm7uRDzmy_3l2pnBKb0re3RUkf4Txeffo,24495 +numpy/lib/format.py,sha256=QFswc50ngoVRafhCtPAgs3Bzhw-OIz6KMRGKOL6Wlqk,29010 +numpy/lib/function_base.py,sha256=S-PYR35reVOR96Uv5X-eiLWYq-tdX3b2a8QSe20jI_A,170032 +numpy/lib/index_tricks.py,sha256=exaSLwRXrJxphFaAv8YF6F9eeUV-95K1CFbyMf7DMRY,26680 +numpy/lib/info.py,sha256=oVczF_pC_CMZC2h2adb2HHza_1qF3qI065j4RBrd-I4,6616 +numpy/lib/mixins.py,sha256=r9doCR1X0arm4q5Nq9qpktMkbRqC51jT_lY8tPJwFgI,7284 +numpy/lib/nanfunctions.py,sha256=JqkUx-LuKLIgX3h2ajC-nQRXDvJxM9p-RhJrb8QrqQs,50854 +numpy/lib/npyio.py,sha256=P6m34vUqI5ZF-Kam7MKEWHvndpCblcWZpikJrbIYJnc,82746 +numpy/lib/polynomial.py,sha256=qTJt-MbtgncmHDU3kd-9ECJi5_E8Xg4Ol9VkqQ1LGuk,38572 +numpy/lib/recfunctions.py,sha256=MrevY2p_tiOII900opEunMd_RZYdocE8_DyeyGUhROE,37016 +numpy/lib/scimath.py,sha256=DVHIce1T85pQnmVF-FusyuIdlQoxt45R2FRx500tcqg,14085 +numpy/lib/setup.py,sha256=os9eV9wSzwTQlfxeoQ33gYQ4wOj1_6EvqcROc8PyGbE,379 +numpy/lib/shape_base.py,sha256=WVSQXCj0oRlmvFr5981L0tzka27Ckvy-JDTFIPM3Uec,28668 +numpy/lib/stride_tricks.py,sha256=uQzHxT2vuGOrDi4y9TkVu-zAthbXujy9V62Rq7HgvnM,8785 +numpy/lib/twodim_base.py,sha256=5pkBest69BJpDyi-KaWG_20yWDv7Ke7oNVrhPYxnFG8,25817 +numpy/lib/type_check.py,sha256=2_-ktL6-z-5MmJ0FedQwqTGawaLu_gn7eXY31pQNZ3g,16500 +numpy/lib/ufunclike.py,sha256=_3VJxYIXlcbkMPQVYKzHn8hwlFzHCYnyKzuBCy0YFYY,5714 +numpy/lib/user_array.py,sha256=7nJPlDfP-04Lcq8iH_cqBbSEsx5cHCcj-2Py-oh-5t0,7817 +numpy/lib/utils.py,sha256=oE5_ULQxkNcx2Slje7SGBOQYONW3XrMGTOnmwE7l114,36340 +numpy/lib/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/lib/tests/test__datasource.py,sha256=XiGdTJUjCMfTtMvlspgpGY3ZtHgKAIndGeaPi0g7yDU,10330 +numpy/lib/tests/test__iotools.py,sha256=nytmznzSAUJlJ1zNgSuwe9PrCtU2UC65-XY05diCfCk,13575 +numpy/lib/tests/test__version.py,sha256=-4O_MvSGwZYSzgtt7oWYotmZo9uEF8_95Or73F3X82g,2125 +numpy/lib/tests/test_arraypad.py,sha256=bWRUKL-SEoSvEX52aDPHzYfd61a4pgGpUhILaTaODfc,43647 +numpy/lib/tests/test_arraysetops.py,sha256=53YzcBGeaqxr4ZswYVwjnMgwWvnNIsHVw367KSPSaII,17352 +numpy/lib/tests/test_arrayterator.py,sha256=8_VQ1qF4aDQSUS21Tmdr9JStdRhah0t5UiltpH6sH9A,1455 +numpy/lib/tests/test_financial.py,sha256=4BPj5ad2weNU8qCdF1hlkfvqD2d4X5nf-9uak4eGTr0,17168 +numpy/lib/tests/test_format.py,sha256=_LT78W5o7j9qQWoUapwDxkZJxK3ZhLSsmQMJXjIqGLQ,34531 +numpy/lib/tests/test_function_base.py,sha256=dxkKKwue3xhWhj8uz7qEoKTiY8DAnPFnpv0miy-iijY,132980 +numpy/lib/tests/test_index_tricks.py,sha256=wGSNDPkPqvrfyicGhTOXhr_NmD12F8TXCOZSsADZEIc,13689 +numpy/lib/tests/test_io.py,sha256=zkQfKHUHc_wztQZBIafv0DTH1zuNm2fc7rhT21rhNPI,92159 +numpy/lib/tests/test_mixins.py,sha256=m2fHvYB8x2aoq5BMEokFE-d_KwqnHPPwAWCVo0_pcaY,6849 +numpy/lib/tests/test_nanfunctions.py,sha256=f-W1hIQ3ICdQLKjQKyt3lmHALavzFzf69RNP_dALtkU,34835 +numpy/lib/tests/test_packbits.py,sha256=OnJy_WawkZFlWN1QkdEwyc6nHzJeUqtwMjC-4Rpga3c,12929 +numpy/lib/tests/test_polynomial.py,sha256=Eh941Ic5R5EA1rnp2B1wTar8yHJ94tZnQ28WxbnRUEg,7152 +numpy/lib/tests/test_recfunctions.py,sha256=tUnPXYKpQt6gAa4by0GaFj-Xpm4WqHWWNfrWGxtv9K0,34762 +numpy/lib/tests/test_regression.py,sha256=o-CSZTTADq6SVofa5IKz5UfwAhH3n941Es_JN3aNAF8,8542 +numpy/lib/tests/test_shape_base.py,sha256=GrhZu2UyaNbyxv2ygDmPVBpwYlgqkRnGZt9WJLmBOqQ,19369 +numpy/lib/tests/test_stride_tricks.py,sha256=vjzfmvFvNIXba9NWH_liwfRjEJmHTaZ-ldgGsDAWcok,15042 +numpy/lib/tests/test_twodim_base.py,sha256=B3994ugqF7j2oKONswbGRT1mh4nYmgiGi5V4J26Ostw,17754 +numpy/lib/tests/test_type_check.py,sha256=TpJyb02riykSRclI3JzATjFJnebwm6y476FIJq4XzZ4,13103 +numpy/lib/tests/test_ufunclike.py,sha256=l9_QV0l7BrSe-OvcE-x3t8PQniH02LpMuOdmkobwT6E,3018 +numpy/lib/tests/test_utils.py,sha256=MNjkCaB0glBaVLMGZ9i88g8RIPHmkdbnt47bLWjgCvU,1656 +numpy/lib/tests/data/py2-objarr.npy,sha256=F4cyUC-_TB9QSFLAo2c7c44rC6NUYIgrfGx9PqWPSKk,258 +numpy/lib/tests/data/py2-objarr.npz,sha256=xo13HBT0FbFZ2qvZz0LWGDb3SuQASSaXh7rKfVcJjx4,366 +numpy/lib/tests/data/py3-objarr.npy,sha256=pTTVh8ezp-lwAK3fkgvdKU8Arp5NMKznVD-M6Ex_uA0,341 +numpy/lib/tests/data/py3-objarr.npz,sha256=qQR0gS57e9ta16d_vCQjaaKM74gPdlwCPkp55P-qrdw,449 +numpy/lib/tests/data/python3.npy,sha256=X0ad3hAaLGXig9LtSHAo-BgOvLlFfPYMnZuVIxRmj-0,96 +numpy/lib/tests/data/win64python2.npy,sha256=agOcgHVYFJrV-nrRJDbGnUnF4ZTPYXuSeF-Mtg7GMpc,96 +numpy/linalg/__init__.py,sha256=tj2YrJ_U5GzK7TnL5ho_OcevkID77anudX6UOQMSi_Q,2332 +numpy/linalg/_umath_linalg.cpython-36m-darwin.so,sha256=lr7GZsDFDNwgs-AOcfzMi5qH_3W6ZsQVMgrSK3bqUv4,295636 +numpy/linalg/info.py,sha256=AbXPYYabJK5In0F9IMk-oVWZgDyEaoU45Wnq6RtuCJs,1198 +numpy/linalg/lapack_lite.cpython-36m-darwin.so,sha256=7lsmjV8iyR174s9darQWcFvzXd-819YTTt_MU2PHyIM,41388 +numpy/linalg/linalg.py,sha256=INtXPo5vRC3mnOfGEGSb1FsGCtcFHsg2wdkkNWcx-PA,80393 +numpy/linalg/setup.py,sha256=k1X4EfRWACFtJYfb8Wiol_-pPnEMtqURxQ8H9FwFHWg,1878 +numpy/linalg/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/linalg/tests/test_build.py,sha256=k-3igsO1Dr2vbQhPtqAOvfN28ePChgfnRwHyQhWboEk,1756 +numpy/linalg/tests/test_deprecations.py,sha256=cxhhn3Mvm4HzSvQC2_2QzSBROGqzO5xmPXgUUT1U7vY,776 +numpy/linalg/tests/test_linalg.py,sha256=DXbltD8RG0pYxkfNASo9rCUWgeV7rYhvTHHg1PdewzI,62388 +numpy/linalg/tests/test_regression.py,sha256=gZ5Kue5JPjh6W1_R6LdEd2yIzIjbz85Kfx_rRq2XKlc,5741 +numpy/ma/__init__.py,sha256=NakwmSxyO7pTIVFvYrm5OiYZrMWMMiw-DO59Qd6VWzY,1476 +numpy/ma/bench.py,sha256=2nGYYxQVHYD_htXZCvBZLLot8Ui4uPKbJDdG2AnpfAU,4917 +numpy/ma/core.py,sha256=en4LY_KgNdSUf7fTR6khcR2-oBq1gASReLMFlP_SFNY,255508 +numpy/ma/extras.py,sha256=wKnrRtgcKhCq5zLHFKMVJqikxi9drIdIVWvuoUtbIRA,55952 +numpy/ma/mrecords.py,sha256=oP1xpA8UVf9x5tg_AUL-AMNK0RLxL8IfYUFwHgVq3uY,27435 +numpy/ma/setup.py,sha256=zkieH8BeiGVXl3Wlt_WeP9kciZlyAZY20DDu4SGk4b4,429 +numpy/ma/testutils.py,sha256=H6Wp21rUlT2PxxDsTcUPw9Wt0E_d1GmJyY74cL0maVI,10384 +numpy/ma/timer_comparison.py,sha256=Q1AyfHzNrWzVTrx6ebL9HgpQEkEJPHAkbWuTK_0bBkQ,15586 +numpy/ma/version.py,sha256=KpJAmUE1s1TpbgqgdBpDoslxm7kOMpczLjEzLMGv9Ag,380 +numpy/ma/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/ma/tests/test_core.py,sha256=Gbj-nAZD_eN1YNxrUUL1Dkgh0o6JCn-unCxjulHjHpo,191393 +numpy/ma/tests/test_deprecations.py,sha256=4kO2Er_A_Q1UYqirSAUAA7HBYjX7DAYnIFK8dZX6UpY,2410 +numpy/ma/tests/test_extras.py,sha256=18VmH3Vt9Ee7HdFRn-ML0bUFgQl4h_26Kv0W2OBjQSo,63757 +numpy/ma/tests/test_mrecords.py,sha256=YVDiXN5ftH2cFk8RHySwXKzelR_hKQ9Vs5Vn9db7Elk,19929 +numpy/ma/tests/test_old_ma.py,sha256=lk7RN2yNl90MrzWL375CCnL4L4zOrGADZr-pm0AiSoA,32135 +numpy/ma/tests/test_regression.py,sha256=M8LjQXAWve4Huq_Hq9OFgPOHOnclTPTxwV0VWEjAquQ,2437 +numpy/ma/tests/test_subclassing.py,sha256=pmLM0i9vlGq7CkOI7tds498Vv_gLvosPpbTdAmQ-jGU,13666 +numpy/matrixlib/__init__.py,sha256=TRuVRSDBgQyy2LYdfFMF8pXy21U1oz-cUzYqzB4Jz-w,290 +numpy/matrixlib/defmatrix.py,sha256=O_RESv1d67zCwxNX3PFe4oakGOWHVFjGpaviHNIhjcY,32973 +numpy/matrixlib/setup.py,sha256=o7I_gBds6j6ckztbKLhSXW3XHSItol8bab-rBZ6GH4I,448 +numpy/matrixlib/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/matrixlib/tests/test_defmatrix.py,sha256=zyQWTySr8WNjK3GpSSYts2rZTwTHWzDDwyzKQwKPJ2o,15078 +numpy/matrixlib/tests/test_multiarray.py,sha256=klsqFOr-xcE4E5__hjDQKT7fCuVX6t0rIQKDhFfRmCA,705 +numpy/matrixlib/tests/test_numeric.py,sha256=BJKSHDhKjqbOseYJmRcX81XkH_vRNRTDUPWzDmwGn4Q,585 +numpy/matrixlib/tests/test_regression.py,sha256=Jbrv4musHvJ07LKkZxnszZw91qZCZt-Dq1_cb_OM1cU,1082 +numpy/polynomial/__init__.py,sha256=fPyRn9sVQVoaSkR9eyA3hBIGH-5CIHumfFGKsJyuiso,1140 +numpy/polynomial/_polybase.py,sha256=IA8qqX91j96nuB23A_ti2xf2fUjkc24h9XAggfCK4NE,30092 +numpy/polynomial/chebyshev.py,sha256=glORsz3AlRpEWpcRjLnNZPbwu54Sj-ZJiZ2gP8j6FlA,66969 +numpy/polynomial/hermite.py,sha256=ODyNNvaR_d4p24dzw4IZJoYv3xn-YbJqVXQCvTO09yg,57896 +numpy/polynomial/hermite_e.py,sha256=AnQpOv53EXOA0udPGerbNDtVaHf7PlrBDoQx813j6xo,58086 +numpy/polynomial/laguerre.py,sha256=dNugySZSshYOKmwpTZddauJmGx0Dg4LsfuBj3ELkZNM,56309 +numpy/polynomial/legendre.py,sha256=ch8-m6CDGa1yDAwFgaAE5EPKN_i6sIXhr_3w8ru4jBs,57404 +numpy/polynomial/polynomial.py,sha256=XFkmg-AVztRRsWG58ImTskBQXVHidZtdVvbRR-UL22I,52808 +numpy/polynomial/polyutils.py,sha256=2qA03OFnMiXQj6aF0vIUWN2B99D4yd-dEMSMOYDOLf0,11529 +numpy/polynomial/setup.py,sha256=PKIUV6Jh7_0jBboPp3IHPmp6LWVs4tbIkdu_FtmI_5U,385 +numpy/polynomial/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/polynomial/tests/test_chebyshev.py,sha256=RhRGJHG8PGHxSFxjo97LAzYmkGTb7DCmBYccz2hx_LE,20420 +numpy/polynomial/tests/test_classes.py,sha256=WublDB8DP9Ctm_pYnKm3AGnU74kWLLKoZ7SkGobUH9s,19014 +numpy/polynomial/tests/test_hermite.py,sha256=oEn5RZei2YRQCYhlTeLFj4l2RP7S8n_zqmm8BFuL25I,18459 +numpy/polynomial/tests/test_hermite_e.py,sha256=Ooi50d60cSXVHrgDO4hbJVAMDnY3EwFebu2_6x1Il9Y,18789 +numpy/polynomial/tests/test_laguerre.py,sha256=6e76enKt2Pata0ChTj8hA7Pi1fNyZKmjltge9mSWDPc,17398 +numpy/polynomial/tests/test_legendre.py,sha256=EcpWqnkxiOSHkoySCLxU9fPcHfJAPM1MUhaUQyOlHDQ,18162 +numpy/polynomial/tests/test_polynomial.py,sha256=W8CHkyfY1SC57OrRuus1mybbS5b0lkZiHOudHwZF6DQ,19253 +numpy/polynomial/tests/test_polyutils.py,sha256=mulI4VvH_ckIiS3yvwikZKMqdm3EsuvBe4PaCuN2jUo,3085 +numpy/polynomial/tests/test_printing.py,sha256=Q0QZvZvFJvp1HoCz9k4cJdq-RaBHY_YdlcvEq5r-oUg,2140 +numpy/random/__init__.py,sha256=FMKIhJsSSWqFMCzq76AmU_I2yTJglaILDxsIZQPUAbM,5481 +numpy/random/info.py,sha256=HBoOc2MYiM2OaTikwmnDURZzfBsgl5aO3SKILwy4Lyo,5199 +numpy/random/mtrand.cpython-36m-darwin.so,sha256=olB-7lgPde0PaJQQJsWwcKojd-ul2J_bZs6BJNzefqI,2067124 +numpy/random/randomkit.h,sha256=TJrx_QZpTTgUGGfe2KHzUcyfmBeYTVTXrL4EAOT9Ctg,6799 +numpy/random/setup.py,sha256=gbPg4AuCkC4PXNY6j5xzcELwidc7lWBplkkRstSWJxg,2312 +numpy/random/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/random/tests/test_random.py,sha256=VOYdHiN8-BDsce-1CaTi91yCXIvLlnL6N_Gnc7SUscc,65295 +numpy/random/tests/test_regression.py,sha256=heOwWyBfzwrvE-cJXF-kkn56iCsDo2wbLyQB0bxau5U,5119 +numpy/testing/__init__.py,sha256=TrkadhNa5VAuFepMPZMMqs66qPZ-1MWSkRZojVJ4Sjw,475 +numpy/testing/decorators.py,sha256=hUCjkX2SuoE2wOW8oAPs7qvvycv2JiSIZdEzhjz9FK4,128 +numpy/testing/noseclasses.py,sha256=sMSGBp-kViFZ914tLQXid4I8m4jyC5Cn-bKLZm2OU3s,130 +numpy/testing/nosetester.py,sha256=AkEgoiTrftdr5sj-xUialE51x1ZM6LKvojLn1iGmw94,289 +numpy/testing/print_coercion_tables.py,sha256=F44AObcou_xytUWszku8t1bWuui-4I_18o7Z7zW8l18,2705 +numpy/testing/setup.py,sha256=7cb2FQ6qCZQ34wpFHwvLT8CeLba-4uIQn_l9Ne5CvBQ,677 +numpy/testing/utils.py,sha256=sMSKhLZnShlID7JPhKEbeB521MEMs-Ls5yHWvCwGL-c,926 +numpy/testing/nose_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/testing/nose_tools/decorators.py,sha256=6oT8kgtzKwQdvE82Azs0CSauv7o27CYldCElRjUi1KI,8591 +numpy/testing/nose_tools/noseclasses.py,sha256=qDYaNTSFcFT-UFQXrY_xJkQ5JwKDNl1-kpfy-HypzIg,14599 +numpy/testing/nose_tools/nosetester.py,sha256=KHMPbyE8WNJzYHkn9gXJvjqxJAZP0tOlErpJ9uWi8Iw,20562 +numpy/testing/nose_tools/parameterized.py,sha256=4N9SU33K5xndAmOD0baX7cP5PTEwCSDzGmbIUxBtp7c,18286 +numpy/testing/nose_tools/utils.py,sha256=MSREOiECLgDi7lBU-ghB33QM_VNihRzdAMOhNOI5nTY,75434 +numpy/testing/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/testing/tests/test_decorators.py,sha256=mSMOAM-EdSP6xWJHgFdr-i4oDEKcpJKDMhPU9oV5yjI,4554 +numpy/testing/tests/test_doctesting.py,sha256=9ej2qLODMR5e6NpL6ALHmVCsyiqZ7OXzrSPU_dcB4SE,1322 +numpy/testing/tests/test_utils.py,sha256=tID4AwZohRr434lyuk8OIIyn61_75TXl4g2W5UszfvE,46239 +numpy/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/tests/test_ctypeslib.py,sha256=10Zeegov5bWWLhXFmUS7bkdfSySHXBLFX9DOuaJNeC0,4331 +numpy/tests/test_matlib.py,sha256=vhXHiXHrSs5KRk2JU_w2WAWzVSabiDTlpCSB1FNJc3U,1988 +numpy/tests/test_numpy_version.py,sha256=ailN5HiL7gZdBgneFzZhUKANCtwUNLszH8OAL07pDU4,717 +numpy/tests/test_reloading.py,sha256=M490VKOCvV8x2IA_WrDm4HjcaA5EDrrC65v8PPSY5eY,1038 +numpy/tests/test_scripts.py,sha256=bZyJm0n1fJAN7iOgAI0irqKG9hf8Y9Yi-_76xRIYy_k,3059 +numpy/tests/test_warnings.py,sha256=x7IcCHSuv4hQ5elz3ZVN-L0jxfXlTaXS567LGXUbQTo,2686 +../../../bin/f2py,sha256=igh72wSs0uvdQH3TY3kqzkkmBSKKdb9RuZOCULFjLSE,748 +numpy-1.14.0.dist-info/DESCRIPTION.rst,sha256=jIxOnyL-SJx2zWu8D0b7_U3ryV6Nj7agM4Q18YJw1v4,884 +numpy-1.14.0.dist-info/METADATA,sha256=gi-e07GO4N_jh9UJX4UCWN1L3kfIr1gXUwVSe5h2VAs,2251 +numpy-1.14.0.dist-info/metadata.json,sha256=1V3L1ANpQ2cKSO72olue1DM1-YsKIVlBu-z_sYVdrz0,1369 +numpy-1.14.0.dist-info/RECORD,, +numpy-1.14.0.dist-info/top_level.txt,sha256=4J9lbBMLnAiyxatxh8iRKV5Entd_6-oqbO7pzJjMsPw,6 +numpy-1.14.0.dist-info/WHEEL,sha256=TJcAbsNKv2tiiR-l4ikYQkXgouGWw0EOV7WZPrRyWl4,249 +numpy-1.14.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +numpy/distutils/tests/__pycache__/test_fcompiler_gnu.cpython-36.pyc,, +numpy/distutils/tests/__pycache__/test_misc_util.cpython-36.pyc,, +numpy/distutils/tests/__pycache__/test_fcompiler_intel.cpython-36.pyc,, +numpy/distutils/tests/__pycache__/test_npy_pkg_config.cpython-36.pyc,, +numpy/distutils/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/distutils/tests/__pycache__/test_exec_command.cpython-36.pyc,, +numpy/distutils/tests/__pycache__/test_fcompiler_nagfor.cpython-36.pyc,, +numpy/distutils/tests/__pycache__/test_system_info.cpython-36.pyc,, +numpy/distutils/__pycache__/conv_template.cpython-36.pyc,, +numpy/distutils/__pycache__/exec_command.cpython-36.pyc,, +numpy/distutils/__pycache__/misc_util.cpython-36.pyc,, +numpy/distutils/__pycache__/__version__.cpython-36.pyc,, +numpy/distutils/__pycache__/ccompiler.cpython-36.pyc,, +numpy/distutils/__pycache__/setup.cpython-36.pyc,, +numpy/distutils/__pycache__/npy_pkg_config.cpython-36.pyc,, +numpy/distutils/__pycache__/environment.cpython-36.pyc,, +numpy/distutils/__pycache__/cpuinfo.cpython-36.pyc,, +numpy/distutils/__pycache__/line_endings.cpython-36.pyc,, +numpy/distutils/__pycache__/msvccompiler.cpython-36.pyc,, +numpy/distutils/__pycache__/info.cpython-36.pyc,, +numpy/distutils/__pycache__/compat.cpython-36.pyc,, +numpy/distutils/__pycache__/msvc9compiler.cpython-36.pyc,, +numpy/distutils/__pycache__/system_info.cpython-36.pyc,, +numpy/distutils/__pycache__/pathccompiler.cpython-36.pyc,, +numpy/distutils/__pycache__/log.cpython-36.pyc,, +numpy/distutils/__pycache__/unixccompiler.cpython-36.pyc,, +numpy/distutils/__pycache__/lib2def.cpython-36.pyc,, +numpy/distutils/__pycache__/intelccompiler.cpython-36.pyc,, +numpy/distutils/__pycache__/core.cpython-36.pyc,, +numpy/distutils/__pycache__/from_template.cpython-36.pyc,, +numpy/distutils/__pycache__/numpy_distribution.cpython-36.pyc,, +numpy/distutils/__pycache__/__init__.cpython-36.pyc,, +numpy/distutils/__pycache__/extension.cpython-36.pyc,, +numpy/distutils/__pycache__/mingw32ccompiler.cpython-36.pyc,, +numpy/distutils/__pycache__/__config__.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/compaq.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/none.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/gnu.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/ibm.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/lahey.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/absoft.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/pg.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/nag.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/intel.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/vast.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/sun.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/pathf95.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/g95.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/__init__.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/hpux.cpython-36.pyc,, +numpy/distutils/fcompiler/__pycache__/mips.cpython-36.pyc,, +numpy/distutils/command/__pycache__/build_src.cpython-36.pyc,, +numpy/distutils/command/__pycache__/install_data.cpython-36.pyc,, +numpy/distutils/command/__pycache__/build.cpython-36.pyc,, +numpy/distutils/command/__pycache__/config.cpython-36.pyc,, +numpy/distutils/command/__pycache__/bdist_rpm.cpython-36.pyc,, +numpy/distutils/command/__pycache__/develop.cpython-36.pyc,, +numpy/distutils/command/__pycache__/build_py.cpython-36.pyc,, +numpy/distutils/command/__pycache__/build_clib.cpython-36.pyc,, +numpy/distutils/command/__pycache__/install_headers.cpython-36.pyc,, +numpy/distutils/command/__pycache__/sdist.cpython-36.pyc,, +numpy/distutils/command/__pycache__/build_scripts.cpython-36.pyc,, +numpy/distutils/command/__pycache__/install.cpython-36.pyc,, +numpy/distutils/command/__pycache__/egg_info.cpython-36.pyc,, +numpy/distutils/command/__pycache__/install_clib.cpython-36.pyc,, +numpy/distutils/command/__pycache__/config_compiler.cpython-36.pyc,, +numpy/distutils/command/__pycache__/build_ext.cpython-36.pyc,, +numpy/distutils/command/__pycache__/__init__.cpython-36.pyc,, +numpy/distutils/command/__pycache__/autodist.cpython-36.pyc,, +numpy/compat/__pycache__/_inspect.cpython-36.pyc,, +numpy/compat/__pycache__/setup.cpython-36.pyc,, +numpy/compat/__pycache__/py3k.cpython-36.pyc,, +numpy/compat/__pycache__/__init__.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_abc.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_umath_complex.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_nditer.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_scalarmath.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_numeric.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_errstate.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_mem_overlap.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_api.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_getlimits.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_defchararray.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_function_base.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_half.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_indexing.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_records.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_ufunc.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_numerictypes.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_multiarray.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_datetime.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_machar.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_memmap.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_umath.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_einsum.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_item_selection.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_arrayprint.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_shape_base.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_deprecations.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_indexerrors.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_dtype.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_scalarprint.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_scalar_ctors.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_print.cpython-36.pyc,, +numpy/core/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_unicode.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_regression.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_extint128.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_scalarinherit.cpython-36.pyc,, +numpy/core/tests/__pycache__/test_longdouble.cpython-36.pyc,, +numpy/core/__pycache__/arrayprint.cpython-36.pyc,, +numpy/core/__pycache__/shape_base.cpython-36.pyc,, +numpy/core/__pycache__/records.cpython-36.pyc,, +numpy/core/__pycache__/setup.cpython-36.pyc,, +numpy/core/__pycache__/setup_common.cpython-36.pyc,, +numpy/core/__pycache__/machar.cpython-36.pyc,, +numpy/core/__pycache__/cversions.cpython-36.pyc,, +numpy/core/__pycache__/memmap.cpython-36.pyc,, +numpy/core/__pycache__/numeric.cpython-36.pyc,, +numpy/core/__pycache__/info.cpython-36.pyc,, +numpy/core/__pycache__/numerictypes.cpython-36.pyc,, +numpy/core/__pycache__/getlimits.cpython-36.pyc,, +numpy/core/__pycache__/_internal.cpython-36.pyc,, +numpy/core/__pycache__/_methods.cpython-36.pyc,, +numpy/core/__pycache__/defchararray.cpython-36.pyc,, +numpy/core/__pycache__/generate_numpy_api.cpython-36.pyc,, +numpy/core/__pycache__/fromnumeric.cpython-36.pyc,, +numpy/core/__pycache__/einsumfunc.cpython-36.pyc,, +numpy/core/__pycache__/__init__.cpython-36.pyc,, +numpy/core/__pycache__/function_base.cpython-36.pyc,, +numpy/linalg/tests/__pycache__/test_linalg.cpython-36.pyc,, +numpy/linalg/tests/__pycache__/test_build.cpython-36.pyc,, +numpy/linalg/tests/__pycache__/test_deprecations.cpython-36.pyc,, +numpy/linalg/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/linalg/tests/__pycache__/test_regression.cpython-36.pyc,, +numpy/linalg/__pycache__/setup.cpython-36.pyc,, +numpy/linalg/__pycache__/linalg.cpython-36.pyc,, +numpy/linalg/__pycache__/info.cpython-36.pyc,, +numpy/linalg/__pycache__/__init__.cpython-36.pyc,, +numpy/ma/tests/__pycache__/test_mrecords.cpython-36.pyc,, +numpy/ma/tests/__pycache__/test_subclassing.cpython-36.pyc,, +numpy/ma/tests/__pycache__/test_extras.cpython-36.pyc,, +numpy/ma/tests/__pycache__/test_core.cpython-36.pyc,, +numpy/ma/tests/__pycache__/test_old_ma.cpython-36.pyc,, +numpy/ma/tests/__pycache__/test_deprecations.cpython-36.pyc,, +numpy/ma/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/ma/tests/__pycache__/test_regression.cpython-36.pyc,, +numpy/ma/__pycache__/bench.cpython-36.pyc,, +numpy/ma/__pycache__/version.cpython-36.pyc,, +numpy/ma/__pycache__/setup.cpython-36.pyc,, +numpy/ma/__pycache__/testutils.cpython-36.pyc,, +numpy/ma/__pycache__/timer_comparison.cpython-36.pyc,, +numpy/ma/__pycache__/extras.cpython-36.pyc,, +numpy/ma/__pycache__/mrecords.cpython-36.pyc,, +numpy/ma/__pycache__/core.cpython-36.pyc,, +numpy/ma/__pycache__/__init__.cpython-36.pyc,, +numpy/tests/__pycache__/test_warnings.cpython-36.pyc,, +numpy/tests/__pycache__/test_reloading.cpython-36.pyc,, +numpy/tests/__pycache__/test_numpy_version.cpython-36.pyc,, +numpy/tests/__pycache__/test_scripts.cpython-36.pyc,, +numpy/tests/__pycache__/test_ctypeslib.cpython-36.pyc,, +numpy/tests/__pycache__/test_matlib.cpython-36.pyc,, +numpy/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/__pycache__/conftest.cpython-36.pyc,, +numpy/__pycache__/matlib.cpython-36.pyc,, +numpy/__pycache__/version.cpython-36.pyc,, +numpy/__pycache__/setup.cpython-36.pyc,, +numpy/__pycache__/ctypeslib.cpython-36.pyc,, +numpy/__pycache__/add_newdocs.cpython-36.pyc,, +numpy/__pycache__/_distributor_init.cpython-36.pyc,, +numpy/__pycache__/__init__.cpython-36.pyc,, +numpy/__pycache__/_globals.cpython-36.pyc,, +numpy/__pycache__/_import_tools.cpython-36.pyc,, +numpy/__pycache__/dual.cpython-36.pyc,, +numpy/__pycache__/__config__.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/util.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_mixed.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_string.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_return_complex.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_return_character.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_parameter.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_size.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_return_real.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_kind.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_common.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_block_docstring.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_return_logical.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_array_from_pyobj.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_callback.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_return_integer.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_regression.cpython-36.pyc,, +numpy/f2py/tests/__pycache__/test_assumed_shape.cpython-36.pyc,, +numpy/f2py/__pycache__/f2py_testing.cpython-36.pyc,, +numpy/f2py/__pycache__/cfuncs.cpython-36.pyc,, +numpy/f2py/__pycache__/__version__.cpython-36.pyc,, +numpy/f2py/__pycache__/f90mod_rules.cpython-36.pyc,, +numpy/f2py/__pycache__/common_rules.cpython-36.pyc,, +numpy/f2py/__pycache__/setup.cpython-36.pyc,, +numpy/f2py/__pycache__/cb_rules.cpython-36.pyc,, +numpy/f2py/__pycache__/rules.cpython-36.pyc,, +numpy/f2py/__pycache__/crackfortran.cpython-36.pyc,, +numpy/f2py/__pycache__/use_rules.cpython-36.pyc,, +numpy/f2py/__pycache__/info.cpython-36.pyc,, +numpy/f2py/__pycache__/diagnose.cpython-36.pyc,, +numpy/f2py/__pycache__/__main__.cpython-36.pyc,, +numpy/f2py/__pycache__/capi_maps.cpython-36.pyc,, +numpy/f2py/__pycache__/auxfuncs.cpython-36.pyc,, +numpy/f2py/__pycache__/func2subr.cpython-36.pyc,, +numpy/f2py/__pycache__/f2py2e.cpython-36.pyc,, +numpy/f2py/__pycache__/__init__.cpython-36.pyc,, +numpy/testing/nose_tools/__pycache__/parameterized.cpython-36.pyc,, +numpy/testing/nose_tools/__pycache__/noseclasses.cpython-36.pyc,, +numpy/testing/nose_tools/__pycache__/utils.cpython-36.pyc,, +numpy/testing/nose_tools/__pycache__/__init__.cpython-36.pyc,, +numpy/testing/nose_tools/__pycache__/decorators.cpython-36.pyc,, +numpy/testing/nose_tools/__pycache__/nosetester.cpython-36.pyc,, +numpy/testing/tests/__pycache__/test_doctesting.cpython-36.pyc,, +numpy/testing/tests/__pycache__/test_utils.cpython-36.pyc,, +numpy/testing/tests/__pycache__/test_decorators.cpython-36.pyc,, +numpy/testing/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/testing/__pycache__/setup.cpython-36.pyc,, +numpy/testing/__pycache__/noseclasses.cpython-36.pyc,, +numpy/testing/__pycache__/utils.cpython-36.pyc,, +numpy/testing/__pycache__/print_coercion_tables.cpython-36.pyc,, +numpy/testing/__pycache__/__init__.cpython-36.pyc,, +numpy/testing/__pycache__/decorators.cpython-36.pyc,, +numpy/testing/__pycache__/nosetester.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_index_tricks.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_type_check.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_arraysetops.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_io.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_format.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_stride_tricks.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test__datasource.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_utils.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_function_base.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test__iotools.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_nanfunctions.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_recfunctions.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test__version.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_twodim_base.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_packbits.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_arraypad.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_mixins.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_shape_base.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_ufunclike.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_arrayterator.cpython-36.pyc,, +numpy/lib/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_regression.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_financial.cpython-36.pyc,, +numpy/lib/tests/__pycache__/test_polynomial.cpython-36.pyc,, +numpy/lib/__pycache__/shape_base.cpython-36.pyc,, +numpy/lib/__pycache__/arraypad.cpython-36.pyc,, +numpy/lib/__pycache__/_version.cpython-36.pyc,, +numpy/lib/__pycache__/setup.cpython-36.pyc,, +numpy/lib/__pycache__/financial.cpython-36.pyc,, +numpy/lib/__pycache__/arrayterator.cpython-36.pyc,, +numpy/lib/__pycache__/_datasource.cpython-36.pyc,, +numpy/lib/__pycache__/polynomial.cpython-36.pyc,, +numpy/lib/__pycache__/npyio.cpython-36.pyc,, +numpy/lib/__pycache__/scimath.cpython-36.pyc,, +numpy/lib/__pycache__/ufunclike.cpython-36.pyc,, +numpy/lib/__pycache__/mixins.cpython-36.pyc,, +numpy/lib/__pycache__/recfunctions.cpython-36.pyc,, +numpy/lib/__pycache__/info.cpython-36.pyc,, +numpy/lib/__pycache__/arraysetops.cpython-36.pyc,, +numpy/lib/__pycache__/nanfunctions.cpython-36.pyc,, +numpy/lib/__pycache__/stride_tricks.cpython-36.pyc,, +numpy/lib/__pycache__/user_array.cpython-36.pyc,, +numpy/lib/__pycache__/utils.cpython-36.pyc,, +numpy/lib/__pycache__/type_check.cpython-36.pyc,, +numpy/lib/__pycache__/__init__.cpython-36.pyc,, +numpy/lib/__pycache__/twodim_base.cpython-36.pyc,, +numpy/lib/__pycache__/function_base.cpython-36.pyc,, +numpy/lib/__pycache__/index_tricks.cpython-36.pyc,, +numpy/lib/__pycache__/format.cpython-36.pyc,, +numpy/lib/__pycache__/_iotools.cpython-36.pyc,, +numpy/fft/tests/__pycache__/test_fftpack.cpython-36.pyc,, +numpy/fft/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/fft/tests/__pycache__/test_helper.cpython-36.pyc,, +numpy/fft/__pycache__/setup.cpython-36.pyc,, +numpy/fft/__pycache__/helper.cpython-36.pyc,, +numpy/fft/__pycache__/fftpack.cpython-36.pyc,, +numpy/fft/__pycache__/info.cpython-36.pyc,, +numpy/fft/__pycache__/__init__.cpython-36.pyc,, +numpy/doc/__pycache__/glossary.cpython-36.pyc,, +numpy/doc/__pycache__/constants.cpython-36.pyc,, +numpy/doc/__pycache__/ufuncs.cpython-36.pyc,, +numpy/doc/__pycache__/broadcasting.cpython-36.pyc,, +numpy/doc/__pycache__/basics.cpython-36.pyc,, +numpy/doc/__pycache__/creation.cpython-36.pyc,, +numpy/doc/__pycache__/subclassing.cpython-36.pyc,, +numpy/doc/__pycache__/byteswapping.cpython-36.pyc,, +numpy/doc/__pycache__/indexing.cpython-36.pyc,, +numpy/doc/__pycache__/internals.cpython-36.pyc,, +numpy/doc/__pycache__/__init__.cpython-36.pyc,, +numpy/doc/__pycache__/misc.cpython-36.pyc,, +numpy/doc/__pycache__/structured_arrays.cpython-36.pyc,, +numpy/random/tests/__pycache__/test_random.cpython-36.pyc,, +numpy/random/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/random/tests/__pycache__/test_regression.cpython-36.pyc,, +numpy/random/__pycache__/setup.cpython-36.pyc,, +numpy/random/__pycache__/info.cpython-36.pyc,, +numpy/random/__pycache__/__init__.cpython-36.pyc,, +numpy/matrixlib/tests/__pycache__/test_numeric.cpython-36.pyc,, +numpy/matrixlib/tests/__pycache__/test_multiarray.cpython-36.pyc,, +numpy/matrixlib/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/matrixlib/tests/__pycache__/test_regression.cpython-36.pyc,, +numpy/matrixlib/tests/__pycache__/test_defmatrix.cpython-36.pyc,, +numpy/matrixlib/__pycache__/defmatrix.cpython-36.pyc,, +numpy/matrixlib/__pycache__/setup.cpython-36.pyc,, +numpy/matrixlib/__pycache__/__init__.cpython-36.pyc,, +numpy/polynomial/tests/__pycache__/test_hermite_e.cpython-36.pyc,, +numpy/polynomial/tests/__pycache__/test_printing.cpython-36.pyc,, +numpy/polynomial/tests/__pycache__/test_laguerre.cpython-36.pyc,, +numpy/polynomial/tests/__pycache__/test_hermite.cpython-36.pyc,, +numpy/polynomial/tests/__pycache__/test_classes.cpython-36.pyc,, +numpy/polynomial/tests/__pycache__/test_legendre.cpython-36.pyc,, +numpy/polynomial/tests/__pycache__/test_chebyshev.cpython-36.pyc,, +numpy/polynomial/tests/__pycache__/__init__.cpython-36.pyc,, +numpy/polynomial/tests/__pycache__/test_polyutils.cpython-36.pyc,, +numpy/polynomial/tests/__pycache__/test_polynomial.cpython-36.pyc,, +numpy/polynomial/__pycache__/chebyshev.cpython-36.pyc,, +numpy/polynomial/__pycache__/legendre.cpython-36.pyc,, +numpy/polynomial/__pycache__/hermite.cpython-36.pyc,, +numpy/polynomial/__pycache__/setup.cpython-36.pyc,, +numpy/polynomial/__pycache__/polyutils.cpython-36.pyc,, +numpy/polynomial/__pycache__/polynomial.cpython-36.pyc,, +numpy/polynomial/__pycache__/_polybase.cpython-36.pyc,, +numpy/polynomial/__pycache__/hermite_e.cpython-36.pyc,, +numpy/polynomial/__pycache__/__init__.cpython-36.pyc,, +numpy/polynomial/__pycache__/laguerre.cpython-36.pyc,, diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/_dummy.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/_dummy.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/multiarray.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/multiarray.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/multiarray_tests.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/multiarray_tests.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/operand_flag_tests.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/operand_flag_tests.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/struct_ufunc_test.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/struct_ufunc_test.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/test_rational.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/test_rational.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/umath.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/umath.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/umath_tests.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/core/umath_tests.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/fft/fftpack_lite.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/fft/fftpack_lite.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/linalg/_umath_linalg.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/linalg/_umath_linalg.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/linalg/lapack_lite.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/linalg/lapack_lite.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/random/mtrand.cpython-36m-darwin.so b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/numpy/random/mtrand.cpython-36m-darwin.so old mode 100755 new mode 100644 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD index 3c956a26..5b07f4dc 100644 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD +++ b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD @@ -1,501 +1,501 @@ -pip/__init__.py,sha256=00QWSreEBjb8Y8sPs8HeqgLXSB-3UrONJxo4J5APxEc,11348 -pip/__main__.py,sha256=V6Kh-IEDEFpt1cahRE6MajUF_14qJR_Qsvn4MjWZXzE,584 -pip/basecommand.py,sha256=TTlmZesQ4Vuxcto2KqwZGmgmN5ioHEl_DeFev9ie_SA,11910 -pip/baseparser.py,sha256=AKMOeF3fTrRroiv0DmTQbdiLW0DQux2KqGC_dJJB9d0,10465 -pip/cmdoptions.py,sha256=8JCcF2kKAF2cFnV77oW-3DsHJifr9jF2WuChzzwgcwg,16474 -pip/download.py,sha256=rA0wbmqC2n9ejX481YJSidmKgQqQDjdaxkHkHlAN68k,32171 -pip/exceptions.py,sha256=BvqH-Jw3tP2b-2IJ2kjrQemOAPMqKrQMLRIZHZQpJXk,8121 -pip/index.py,sha256=L6UhtAEZc2qw7BqfQrkPQcw2gCgEw3GukLRSA95BNyI,39950 -pip/locations.py,sha256=9rJRlgonC6QC2zGDIn_7mXaoZ9_tF_IHM2BQhWVRgbo,5626 -pip/pep425tags.py,sha256=q3kec4f6NHszuGYIhGIbVvs896D06uJAnKFgJ_wce44,10980 -pip/status_codes.py,sha256=F6uDG6Gj7RNKQJUDnd87QKqI16Us-t-B0wPF_4QMpWc,156 -pip/wheel.py,sha256=QSWmGs2ui-n4UMWm0JUY6aMCcwNKungVzbWsxI9KlJQ,32010 -pip/_vendor/__init__.py,sha256=WaaSJ3roSSJ_Uv4yKAxlGohKEH9YUA3aIh1Xg2IjfgU,4670 -pip/_vendor/appdirs.py,sha256=-9UOIZy62ahCQVY9-b7Nn6_5_4Y6ooHnv72tM8iHi9Y,22368 -pip/_vendor/distro.py,sha256=A4Douw9pcqdYxDTp5b-OR02fxVXnfWs-wC1wA89rhRk,38349 -pip/_vendor/ipaddress.py,sha256=wimbqcE7rwwETlucn8A_4Qd_-NKXPOBcNxJHarUoXng,80176 -pip/_vendor/ordereddict.py,sha256=4KsFuc6V8IgHROCHUu-4vCrr21ZPPea7Z0cvX9AjQ7w,4094 -pip/_vendor/pyparsing.py,sha256=7vAuUVbh6txUKQR2IzJ8_9DKmD5vtm5MDssWkI0ka8o,224171 -pip/_vendor/re-vendor.py,sha256=PcdZ40d0ohMsdJmA4t0AeAWbPXi1tFsvAwA5KE5FGeY,773 -pip/_vendor/retrying.py,sha256=k3fflf5_Mm0XcIJYhB7Tj34bqCCPhUDkYbx1NvW2FPE,9972 -pip/_vendor/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 -pip/_vendor/cachecontrol/__init__.py,sha256=UPyFlz0dIjxusu5ITig9UDFJdSY5LTwijhldn0AfyzU,302 -pip/_vendor/cachecontrol/_cmd.py,sha256=MPxZfZd2LKDzVrs55X3wA1rsI2YuP8evLZSwQj0dIk0,1320 -pip/_vendor/cachecontrol/adapter.py,sha256=RaGYyRA-RA1J0AnE67GzEYFPBu4YH4EQUvQqTKa57iM,4608 -pip/_vendor/cachecontrol/cache.py,sha256=xtl-V-pr9KSt9VvFDRCB9yrHPEvqvbk-5M1vAInZb5k,790 -pip/_vendor/cachecontrol/compat.py,sha256=uyovOpd1ehI3J1XeBqJvcsIp6fvkjBpoQmu_0J2st8c,416 -pip/_vendor/cachecontrol/controller.py,sha256=elDsLcaYA15ncodRmHnWQp6ekU_ocEGtDeGLbsnTjzo,13024 -pip/_vendor/cachecontrol/filewrapper.py,sha256=_K8cStmXqD33m15PfsQ8rlpo6FfXjVbKmjvLXyICRgI,2531 -pip/_vendor/cachecontrol/heuristics.py,sha256=WtJrVsyWjpP9WoUiDVdTZZRNBCz5ZVptaQpYnqofDQU,4141 -pip/_vendor/cachecontrol/serialize.py,sha256=XM6elG9DSNexwaOCgMjUtfrHHW5NAB6TSbIf3x235xs,6536 -pip/_vendor/cachecontrol/wrapper.py,sha256=Kqyu_3TW_54XDudha4-HF21vyEOAJ4ZnRXFysTiLmXA,498 -pip/_vendor/cachecontrol/caches/__init__.py,sha256=uWnUtyMvHY_LULaL_4_IR1F_xPgK5zHfJyRnBq4DnPE,369 -pip/_vendor/cachecontrol/caches/file_cache.py,sha256=FsDug3bwUAQ3okjjfGzxlDaBf2fwVSn1iBKMTL6SyGU,3532 -pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=XywqxkS9MkCaflTOY_wjrE02neKdywB9YwlOBbP7Ywc,973 -pip/_vendor/colorama/__init__.py,sha256=9xByrTvk9upkL5NGV5It2Eje4-kzNLwa_1lGPWpXoNU,240 -pip/_vendor/colorama/ansi.py,sha256=Fi0un-QLqRm-v7o_nKiOqyC8PapBJK7DLV_q9LKtTO0,2524 -pip/_vendor/colorama/ansitowin32.py,sha256=gJZB35Lbdjatykd2zrUUnokMzkvcFgscyn_tNxxMFHA,9668 -pip/_vendor/colorama/initialise.py,sha256=cHqVJtb82OG7HUCxvQ2joG7N_CoxbIKbI_fgryZkj20,1917 -pip/_vendor/colorama/win32.py,sha256=_SCEoTK_GA2tU1nhbayKKac-v9Jn98lCPIFOeFMGCHQ,5365 -pip/_vendor/colorama/winterm.py,sha256=V7U7ojwG1q4n6PKripjEvW_htYQi5ueXSM3LUUoqqDY,6290 -pip/_vendor/distlib/__init__.py,sha256=-aUeNNCfiIG_1Tqf19BH0xLNuBKGX1I7lNhcLYgFUEA,581 -pip/_vendor/distlib/compat.py,sha256=FzKlP9dNUMH-j_1LCVnjgx6KgUbpnRjTjYkTkDYRPlI,40801 -pip/_vendor/distlib/database.py,sha256=jniJmYk0Mj2t6gZYbnn68TvQwnVZ0kXyeuf_3AxFclk,49672 -pip/_vendor/distlib/index.py,sha256=Cw8gxFq_7xXvdgExL3efjLAY3EAPDMSL3VA42RkbQBs,21085 -pip/_vendor/distlib/locators.py,sha256=hD_Hm3aSL9DklY9Cxyct2n_74gZ0xNFFGB5L7M6ds14,51013 -pip/_vendor/distlib/manifest.py,sha256=3qEuZhHlDbvyYZ1BZbdapDAivgMgUwWpZ00cmXqcn18,14810 -pip/_vendor/distlib/markers.py,sha256=iRrVWwpyVwjkKJSX8NEQ92_MRMwpROcfNGKCD-Ch1QM,6282 -pip/_vendor/distlib/metadata.py,sha256=hUsf7Qh2Ae4CCkL33qK8ppwC8ZTzT7ep6Hj9RKpijKU,38833 -pip/_vendor/distlib/resources.py,sha256=VFBVbFqLVqDBSQDXcFQHrX1KEcuoDxTK699Ydi_beyc,10766 -pip/_vendor/distlib/scripts.py,sha256=xpehNfISGPTNxQZu02K9Rw2QbNx_2Q4emePv3W5X0iw,15224 -pip/_vendor/distlib/t32.exe,sha256=cp0UAUDDr1tGAx8adlKxWbCHIa-oB3bxev5zYzgAr8E,89088 -pip/_vendor/distlib/t64.exe,sha256=FiljDPcX9qvoe9FYE_9pNEHqbqMnhcCOuI_oLJ4F9F8,97792 -pip/_vendor/distlib/util.py,sha256=E2wU-RZShPMFUMJr9kPmemTULinM4qDzosNPihCuKE0,52991 -pip/_vendor/distlib/version.py,sha256=CgghOUylxGD7dEA2S3MvWjx7mY_2bWsluF0Of3Yxl4Y,23711 -pip/_vendor/distlib/w32.exe,sha256=LItrBJesEqt2QTQuB-yha2YbMegURHmHmdSxhjBqmnc,85504 -pip/_vendor/distlib/w64.exe,sha256=n_PioBC7ltz7sAk1WLbLzZJgS4R2axSy_0HPf8ZCsEg,94208 -pip/_vendor/distlib/wheel.py,sha256=UP53cKxOM5r7bHSS-n5prF6hwJEVsMW9ZNJutOuC26c,39115 -pip/_vendor/distlib/_backport/__init__.py,sha256=bqS_dTOH6uW9iGgd0uzfpPjo6vZ4xpPZ7kyfZJ2vNaw,274 -pip/_vendor/distlib/_backport/misc.py,sha256=KWecINdbFNOxSOP1fGF680CJnaC6S4fBRgEtaYTw0ig,971 -pip/_vendor/distlib/_backport/shutil.py,sha256=VW1t3uYqUjWZH7jV-6QiimLhnldoV5uIpH4EuiT1jfw,25647 -pip/_vendor/distlib/_backport/sysconfig.cfg,sha256=swZKxq9RY5e9r3PXCrlvQPMsvOdiWZBTHLEbqS8LJLU,2617 -pip/_vendor/distlib/_backport/sysconfig.py,sha256=eSEyJg7jxF_eHlHG8IOtl93kb07UoMIRp1wYsPeGi9k,26955 -pip/_vendor/distlib/_backport/tarfile.py,sha256=Ihp7rXRcjbIKw8COm9wSePV9ARGXbSF9gGXAMn2Q-KU,92628 -pip/_vendor/html5lib/__init__.py,sha256=JsIwmFldk-9raBadPSTS74JrfmJvozc-3aekMi7Hr9s,780 -pip/_vendor/html5lib/_ihatexml.py,sha256=tzXygYmisUmiEUt2v7E1Ab50AKQsrD-SglPRnY75vME,16705 -pip/_vendor/html5lib/_inputstream.py,sha256=C4lX5gUBwebOWy41hYP2ZBpkPVNvxk_hZBm3OVyPZM4,32532 -pip/_vendor/html5lib/_tokenizer.py,sha256=YAaOEBD6qc5ISq9Xt9Nif1OFgcybTTfMdwqBkZhpAq4,76580 -pip/_vendor/html5lib/_utils.py,sha256=bS6THVlL8ZyTcI6CIxiM6xxuHsE8i1j5Ogd3Ha1G84U,4096 -pip/_vendor/html5lib/constants.py,sha256=Dfc1Fv3_9frktgWjg4tbj-CjMMp02Ko9qMe4il1BVdo,83387 -pip/_vendor/html5lib/html5parser.py,sha256=Dmlu9hlq5w_id6mBZyY_sE5LukIACgvG4kpgIsded8Q,117170 -pip/_vendor/html5lib/serializer.py,sha256=Urrsa0cPPLqNX-UbJWS2gUhs_06qVbNxZvUnrmGZK6E,14177 -pip/_vendor/html5lib/_trie/__init__.py,sha256=8VR1bcgD2OpeS2XExpu5yBhP_Q1K-lwKbBKICBPf1kU,289 -pip/_vendor/html5lib/_trie/_base.py,sha256=6P_AcIoGjtwB2qAlhV8H4VP-ztQxoXFGwt4NyMqG_Kw,979 -pip/_vendor/html5lib/_trie/datrie.py,sha256=EQpqSfkZRuTbE-DuhW7xMdVDxdZNZ0CfmnYfHA_3zxM,1178 -pip/_vendor/html5lib/_trie/py.py,sha256=wXmQLrZRf4MyWNyg0m3h81m9InhLR7GJ002mIIZh-8o,1775 -pip/_vendor/html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/html5lib/filters/alphabeticalattributes.py,sha256=DXv-P2vdQ5F3OTWM6QZ6KhyDlAWm90pbfrD1Bk9D_l0,621 -pip/_vendor/html5lib/filters/base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286 -pip/_vendor/html5lib/filters/inject_meta_charset.py,sha256=2Q_JnMscn_tNbV_qpgYN_5M3PnBGfmuvECMKDExHUcY,2742 -pip/_vendor/html5lib/filters/lint.py,sha256=qf5cLrT6xXd8V7GH1R_3lKxIjuJSfpbWTpSwaglYdDw,3365 -pip/_vendor/html5lib/filters/optionaltags.py,sha256=EHig4kM-QiLjuxVJ3FAAFNy-10k4aV6HJbQzHKZ_3u8,10534 -pip/_vendor/html5lib/filters/sanitizer.py,sha256=7PqJrhm6mo3JvaHk2IQW7i74Or7Qtd-FV8UftJIyDys,25112 -pip/_vendor/html5lib/filters/whitespace.py,sha256=KPt067nYTqqi8KLTClyynn4eVzNDC_-MApXNVHRXVX0,1139 -pip/_vendor/html5lib/treeadapters/__init__.py,sha256=l3LcqMSEyoh99Jh_eWjGexHnIvKhLAXoP-LDz88whuM,208 -pip/_vendor/html5lib/treeadapters/genshi.py,sha256=6VIuHDNoExv1JWv3ePj6V5CM-tcyiUSWe5_Hd2ejbwY,1555 -pip/_vendor/html5lib/treeadapters/sax.py,sha256=3of4vvaUYIAic7pngebwJV24hpOS7Zg9ggJa_WQegy4,1661 -pip/_vendor/html5lib/treebuilders/__init__.py,sha256=UlB4orkTgZhFIKQdXrtiWn9cpKSsuhnOQOIHeD0Fv4k,3406 -pip/_vendor/html5lib/treebuilders/base.py,sha256=4vdjm_Z2f_GTQBwKnWlrzVcctTb-K5sfN8pXDaWODiA,13942 -pip/_vendor/html5lib/treebuilders/dom.py,sha256=SY3MsijXyzdNPc8aK5IQsupBoM8J67y56DgNtGvsb9g,8835 -pip/_vendor/html5lib/treebuilders/etree.py,sha256=aqIBOGj_dFYqBURIcTegGNBhAIJOw5iFDHb4jrkYH-8,12764 -pip/_vendor/html5lib/treebuilders/etree_lxml.py,sha256=CEgwHMIQZvIDFAqct4kqPkVtyKIm9efHFq_VeExEPCA,14161 -pip/_vendor/html5lib/treewalkers/__init__.py,sha256=CFpUOCfLuhAgVJ8NYk9wviCu1khYnv7XRStvyzU1Fws,5544 -pip/_vendor/html5lib/treewalkers/base.py,sha256=ei-2cFbNFd0gRjyaFmxnxZGLNID4o0bHFCH9bMyZ5Bk,4939 -pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua0mOi7HBukc,1413 -pip/_vendor/html5lib/treewalkers/etree.py,sha256=8jVLEY2FjgN4RFugwhAh44l9ScVYoDStQFCnlPwvafI,4684 -pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=sY6wfRshWTllu6n48TPWpKsQRPp-0CQrT0hj_AdzHSU,6309 -pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309 -pip/_vendor/lockfile/__init__.py,sha256=Tqpz90DwKYfhPsfzVOJl84TL87pdFE5ePNHdXAxs4Tk,9371 -pip/_vendor/lockfile/linklockfile.py,sha256=C7OH3H4GdK68u4FQgp8fkP2kO4fyUTSyj3X6blgfobc,2652 -pip/_vendor/lockfile/mkdirlockfile.py,sha256=e3qgIL-etZMLsS-3ft19iW_8IQ360HNkGOqE3yBKsUw,3096 -pip/_vendor/lockfile/pidlockfile.py,sha256=ukH9uk6NFuxyVmG5QiWw4iKq3fT7MjqUguX95avYPIY,6090 -pip/_vendor/lockfile/sqlitelockfile.py,sha256=o2TMkMRY0iwn-iL1XMRRIFStMUkS4i3ajceeYNntKFg,5506 -pip/_vendor/lockfile/symlinklockfile.py,sha256=ABwXXmvTHvCl5viPblShL3PG-gGsLiT1roAMfDRwhi8,2616 -pip/_vendor/packaging/__about__.py,sha256=zkcCPTN_6TcLW0Nrlg0176-R1QQ_WVPTm8sz1R4-HjM,720 -pip/_vendor/packaging/__init__.py,sha256=_vNac5TrzwsrzbOFIbF-5cHqc_Y2aPT2D7zrIR06BOo,513 -pip/_vendor/packaging/_compat.py,sha256=Vi_A0rAQeHbU-a9X0tt1yQm9RqkgQbDSxzRw8WlU9kA,860 -pip/_vendor/packaging/_structures.py,sha256=RImECJ4c_wTlaTYYwZYLHEiebDMaAJmK1oPARhw1T5o,1416 -pip/_vendor/packaging/markers.py,sha256=mtg2nphJE1oQO39g1DgsdPsMO-guBBClpR-AEYFrbMg,8230 -pip/_vendor/packaging/requirements.py,sha256=SD7dVJGjdPUqtoHb47qwK6wWJTQd-ZXWjxpJg83UcBA,4327 -pip/_vendor/packaging/specifiers.py,sha256=SAMRerzO3fK2IkFZCaZkuwZaL_EGqHNOz4pni4vhnN0,28025 -pip/_vendor/packaging/utils.py,sha256=3m6WvPm6NNxE8rkTGmn0r75B_GZSGg7ikafxHsBN1WA,421 -pip/_vendor/packaging/version.py,sha256=OwGnxYfr2ghNzYx59qWIBkrK3SnB6n-Zfd1XaLpnnM0,11556 -pip/_vendor/pkg_resources/__init__.py,sha256=CcwuHtCBZn9OTkmgF9cFpadIAMhlrnZTVKTOo4V2p58,103230 -pip/_vendor/progress/__init__.py,sha256=Wn1074LUDZovd4zfoVYojnPBgOc6ctHbQX7rp_p8lRA,3023 -pip/_vendor/progress/bar.py,sha256=YNPJeRrwYVKFO2nyaEwsQjYByamMWTgJMvQO1NpD-AY,2685 -pip/_vendor/progress/counter.py,sha256=kEqA8jWEdwrc6P_9VaRx7bjOHwk9gxl-Q9oVbQ08v5c,1502 -pip/_vendor/progress/helpers.py,sha256=FehfwZTv-5cCfsbcMlvlUkm3xZ0cRhsev6XVpmeTF4c,2854 -pip/_vendor/progress/spinner.py,sha256=iCVtUQbaJUFHTjn1ZLPQLPYeao4lC9aXAa_HxIeUK6k,1314 -pip/_vendor/requests/__init__.py,sha256=Cde-qxOWcslaEcPvKAJQPFbY8_va8PMbU7Rssr7vViI,2326 -pip/_vendor/requests/adapters.py,sha256=DJdgax91PyS2s6_oZPELbuLWNlM2xGguNu62sqcOUik,19740 -pip/_vendor/requests/api.py,sha256=PgminOpD8hLLKLNs0RWLKr1HpNc4Qxr_6uen8q2c9CI,5794 -pip/_vendor/requests/auth.py,sha256=eBLtJlcTZxRG7xKXCvGQBLO9a-PxFgMf2qTUbtZwMJM,8175 -pip/_vendor/requests/cacert.pem,sha256=5xzWFRrSP0ZsXiW6emg8UQ_w497lT4qWCv32OO8R1ME,344712 -pip/_vendor/requests/certs.py,sha256=Aa-oStu9f2lVi8VM9Aw1xaAtTIz7bhu5CGKNPEW1waM,625 -pip/_vendor/requests/compat.py,sha256=0cgWB43LEX5OrX1O4k-bPbFlIbWXgEd412DSDJtF1Y8,1687 -pip/_vendor/requests/cookies.py,sha256=awMI0hm3SKheMEDTqO8AIadc2XmnCGKPCTNw_4hlM3Q,18208 -pip/_vendor/requests/exceptions.py,sha256=x-MGvDASYKSstuCNYTA5IT_EAcxTp5knE3WPMrgkrlI,2860 -pip/_vendor/requests/hooks.py,sha256=HXAHoC1FNTFRZX6-lNdvPM7Tst4kvGwYTN-AOKRxoRU,767 -pip/_vendor/requests/models.py,sha256=YHuL2khGDFxeWc-NMJIcfFqvYJ0dKs1mXfj1Fuff1J8,30532 -pip/_vendor/requests/sessions.py,sha256=H7HpKRLKeu1MSH5W1-PI2GMCFLN4bz5i3OFqjjgzE5k,25609 -pip/_vendor/requests/status_codes.py,sha256=uwVHcMPkHV3FElDLlnDTH3KULZIAGxaovbBxrjWm8N0,3316 -pip/_vendor/requests/structures.py,sha256=yexCvWbX40M6E8mLQOpAGZZ-ZoAnyaT2dni-Bp-b42g,3012 -pip/_vendor/requests/utils.py,sha256=9d3jqnA8avsF9N1QPmsk2pJgo2pxuExrN2hoIhtLggY,24163 -pip/_vendor/requests/packages/__init__.py,sha256=CVheqNRcXIkAi5037RhxeqbAqd0QhrK1o9R9kS2xvuI,1384 -pip/_vendor/requests/packages/chardet/__init__.py,sha256=XuTKCYOR7JwsoHxqZTYH86LVyMDbDI3s1s0W_qoGEBM,1295 -pip/_vendor/requests/packages/chardet/big5freq.py,sha256=D8oTdz-GM7Jg8TsaWJDm65vM_OLHC3xub6qUJ3rOgsQ,82594 -pip/_vendor/requests/packages/chardet/big5prober.py,sha256=XX96C--6WKYW36mL-z7pJSAtc169Z8ZImByCP4pEN9A,1684 -pip/_vendor/requests/packages/chardet/chardetect.py,sha256=f4299UZG6uWd3i3r_N0OdrFj2sA9JFI54PAmDLAFmWA,2504 -pip/_vendor/requests/packages/chardet/chardistribution.py,sha256=cUARQFr1oTLXeJCDQrDRkUP778AvSMzhSCnG8VLCV58,9226 -pip/_vendor/requests/packages/chardet/charsetgroupprober.py,sha256=0lKk7VE516fgMw119tNefFqLOxKfIE9WfdkpIT69OKU,3791 -pip/_vendor/requests/packages/chardet/charsetprober.py,sha256=Z48o2KiOj23FNqYH8FqzhH5m1qdm3rI8DcTm2Yqtklg,1902 -pip/_vendor/requests/packages/chardet/codingstatemachine.py,sha256=E85rYhHVMw9xDEJVgiQhp0OnLGr6i2r8_7QOWMKTH08,2318 -pip/_vendor/requests/packages/chardet/compat.py,sha256=5mm6yrHwef1JEG5OxkPJlSq5lkjLVpEGh3iPgFBkpkM,1157 -pip/_vendor/requests/packages/chardet/constants.py,sha256=-UnY8U7EP7z9fTyd09yq35BEkSFEAUAiv9ohd1DW1s4,1335 -pip/_vendor/requests/packages/chardet/cp949prober.py,sha256=FMvdLyB7fejPXRsTbca7LK1P3RUvvssmjUNyaEfz8zY,1782 -pip/_vendor/requests/packages/chardet/escprober.py,sha256=q5TcQKeVq31WxrW7Sv8yjpZkjEoaHO8S92EJZ9hodys,3187 -pip/_vendor/requests/packages/chardet/escsm.py,sha256=7iljEKN8lXTh8JFXPUSwlibMno6R6ksq4evLxbkzfro,7839 -pip/_vendor/requests/packages/chardet/eucjpprober.py,sha256=5IpfSEjAb7h3hcGMd6dkU80O900C2N6xku28rdYFKuc,3678 -pip/_vendor/requests/packages/chardet/euckrfreq.py,sha256=T5saK5mImySG5ygQPtsp6o2uKulouCwYm2ElOyFkJqU,45978 -pip/_vendor/requests/packages/chardet/euckrprober.py,sha256=Wo7dnZ5Erw_nB4H-m5alMiOxOuJUmGHlwCSaGqExDZA,1675 -pip/_vendor/requests/packages/chardet/euctwfreq.py,sha256=G_I0BW9i1w0ONeeUwIYqV7_U09buIHdqh-wNHVaql7I,34872 -pip/_vendor/requests/packages/chardet/euctwprober.py,sha256=upS2P6GuT5ujOxXYw-RJLcT7A4PTuo27KGUKU4UZpIQ,1676 -pip/_vendor/requests/packages/chardet/gb2312freq.py,sha256=M2gFdo_qQ_BslStEchrPW5CrPEZEacC0uyDLw4ok-kY,36011 -pip/_vendor/requests/packages/chardet/gb2312prober.py,sha256=VWnjoRa83Y6V6oczMaxyUr0uy48iCnC2nzk9zfEIRHc,1681 -pip/_vendor/requests/packages/chardet/hebrewprober.py,sha256=8pdoUfsVXf_L4BnJde_BewS6H2yInV5688eu0nFhLHY,13359 -pip/_vendor/requests/packages/chardet/jisfreq.py,sha256=ZcL4R5ekHHbP2KCYGakVMBsiKqZZZAABzhwi-uRkOps,47315 -pip/_vendor/requests/packages/chardet/jpcntx.py,sha256=yftmp0QaF6RJO5SJs8I7LU5AF4rwP23ebeCQL4BM1OY,19348 -pip/_vendor/requests/packages/chardet/langbulgarianmodel.py,sha256=ZyPsA796MSVhYdfWhMCgKWckupAKAnKqWcE3Cl3ej6o,12784 -pip/_vendor/requests/packages/chardet/langcyrillicmodel.py,sha256=fkcd5OvogUp-GrNDWAZPgkYsSRCD2omotAEvqjlmLKE,17725 -pip/_vendor/requests/packages/chardet/langgreekmodel.py,sha256=QHMy31CH_ot67UCtmurCEKqKx2WwoaKrw2YCYYBK2Lw,12628 -pip/_vendor/requests/packages/chardet/langhebrewmodel.py,sha256=4ASl5vzKJPng4H278VHKtRYC03TpQpenlHTcsmZH1rE,11318 -pip/_vendor/requests/packages/chardet/langhungarianmodel.py,sha256=SXwuUzh49_cBeMXhshRHdrhlkz0T8_pZWV_pdqBKNFk,12536 -pip/_vendor/requests/packages/chardet/langthaimodel.py,sha256=-k7djh3dGKngAGnt3WfuoJN7acDcWcmHAPojhaUd7q4,11275 -pip/_vendor/requests/packages/chardet/latin1prober.py,sha256=238JHOxH8aRudJY2NmeSv5s7i0Qe3GuklIU3HlYybvg,5232 -pip/_vendor/requests/packages/chardet/mbcharsetprober.py,sha256=9rOCjDVsmSMp6e7q2syqak22j7lrbUZhJhMee2gbVL0,3268 -pip/_vendor/requests/packages/chardet/mbcsgroupprober.py,sha256=SHRzNPLpDXfMJLA8phCHVU0WgqbgDCNxDQMolGX_7yk,1967 -pip/_vendor/requests/packages/chardet/mbcssm.py,sha256=IKwJXyxu34n6NojmxVxC60MLFtJKm-hIfxaFEnb3uBA,19590 -pip/_vendor/requests/packages/chardet/sbcharsetprober.py,sha256=Xq0lODqJnDgxglBiQI4BqTFiPbn63-0a5XNA5-hVu7U,4793 -pip/_vendor/requests/packages/chardet/sbcsgroupprober.py,sha256=8hLyH8RAG-aohBo7o_KciWVgRo42ZE_zEtuNG1JMRYI,3291 -pip/_vendor/requests/packages/chardet/sjisprober.py,sha256=UYOmiMDzttYIkSDoOB08UEagivJpUXz4tuWiWzTiOr8,3764 -pip/_vendor/requests/packages/chardet/universaldetector.py,sha256=h-E2x6XSCzlNjycYWG0Fe4Cf1SGdaIzUNu2HCphpMZA,6840 -pip/_vendor/requests/packages/chardet/utf8prober.py,sha256=7tdNZGrJY7jZUBD483GGMkiP0Tx8Fp-cGvWHoAsilHg,2652 -pip/_vendor/requests/packages/urllib3/__init__.py,sha256=EF9pbHgMzqQek2Y6EZ82A8B6wETFeW7bK0K-HoZ3Ffo,2852 -pip/_vendor/requests/packages/urllib3/_collections.py,sha256=RP-cHyTx4AgYwvoETK8q1IVRbWFJnE0VV692ZHSbU68,10553 -pip/_vendor/requests/packages/urllib3/connection.py,sha256=QCmkelYgtbc06DfJtgs22na78kRTLCTbLb-OSWLbt-A,11617 -pip/_vendor/requests/packages/urllib3/connectionpool.py,sha256=fls19n1Y4jnwOBsZz_9F01i08xH2gZXEIyyDmWd-mKU,33591 -pip/_vendor/requests/packages/urllib3/exceptions.py,sha256=zGjhZCR1wefEnCN5b7WouQ3UhXesJ2bRKYIeWusaFJs,5599 -pip/_vendor/requests/packages/urllib3/fields.py,sha256=WUMvCLvnw7XemBq6AmCgNPJwyIJL_vWaMHaA2FLlscM,5931 -pip/_vendor/requests/packages/urllib3/filepost.py,sha256=NvLlFsdt8ih_Q4S2ekQF3CJG0nOXs32YI-G04_AdT2g,2320 -pip/_vendor/requests/packages/urllib3/poolmanager.py,sha256=9Uf0fUk0aR_s1auXgwceoN2gbaIQ08lrum_cGEA9-_U,13092 -pip/_vendor/requests/packages/urllib3/request.py,sha256=jET7OvA3FSjxABBRGhCyMdPvM9XuJA6df9gRhkJiJiY,5988 -pip/_vendor/requests/packages/urllib3/response.py,sha256=wxJSV_6pyh6Cgx7XFVGpNhpZCbh4eL7lCSFaU4ixXXc,18615 -pip/_vendor/requests/packages/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/requests/packages/urllib3/contrib/appengine.py,sha256=NdN_xOgDLMadUPe_dN3wdan_DH9-fxVNqFgq19tbqQs,7937 -pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py,sha256=r-vMDMXAGbix9a7-IhbKVTATmAst-5g4hKYOLf8Kd5M,4531 -pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py,sha256=JsdAh0gL4XvQzhOEBRoFtJN91qLf1LFIDEFZs95445I,11778 -pip/_vendor/requests/packages/urllib3/contrib/socks.py,sha256=uPHtE6R8uyUbD9R8l2wO80c87WDGZ9rou3kNOwV74eA,5668 -pip/_vendor/requests/packages/urllib3/packages/__init__.py,sha256=nlChrGzkjCkmhCX9HrF_qHPUgosfsPQkVIJxiiLhk9g,109 -pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py,sha256=VQaPONfhVMsb8B63Xg7ZOydJqIE_jzeMhVN3Pec6ogw,8935 -pip/_vendor/requests/packages/urllib3/packages/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py,sha256=cOWMIn1orgJoA35p6pSzO_-Dc6iOX9Dhl6D2sL9b_2o,460 -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=fK28k37hL7-D79v9iM2fHgNK9Q1Pw0M7qVRL4rkfFjQ,3778 -pip/_vendor/requests/packages/urllib3/util/__init__.py,sha256=n2QE9_0Bb6u8tf7LUc4qKe8V-Hz9G8lEOc9j_30Q8d0,892 -pip/_vendor/requests/packages/urllib3/util/connection.py,sha256=7B5Mmepg5Xd399VKE__VHxD2ObapYFrB3mWJ_EnIebs,4744 -pip/_vendor/requests/packages/urllib3/util/request.py,sha256=ZMDewRK-mjlK72szGIIjzYnLIn-zPP0WgJUMjKeZ6Tg,2128 -pip/_vendor/requests/packages/urllib3/util/response.py,sha256=1UFd5TIp9MyBp4xgnZoyQZscZVPPr0tWRaXNR5w_vds,2165 -pip/_vendor/requests/packages/urllib3/util/retry.py,sha256=5eA3GHR_L14qz66NU6gr-v5VbKYsvdEqOvCcsx1oLKo,10664 -pip/_vendor/requests/packages/urllib3/util/ssl_.py,sha256=7xR_jvQLTQA1U006wJ1bl2KuLGnD1qQvUcFM2uysedw,11622 -pip/_vendor/requests/packages/urllib3/util/timeout.py,sha256=ioAIYptFyBG7eU_r8_ZmO45hpj1dJE6WCvrGR9dNFjs,9596 -pip/_vendor/requests/packages/urllib3/util/url.py,sha256=EcX4ZfmgKWcqM4sY9FlC-yN4y_snuURPV0TpUPHNjnc,5879 -pip/_vendor/webencodings/__init__.py,sha256=t7rAQQxXwalY-ak9hTl73qHjhia9UH-sL-e00qQrBpo,10576 -pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979 -pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305 -pip/_vendor/webencodings/tests.py,sha256=7vTk7LgOJn_t1XtT_viofZlEJ7cJCzPe_hvVHOkcQl8,6562 -pip/_vendor/webencodings/x_user_defined.py,sha256=72cfPRhbfkRCGkkA8ZnvVV7UnoiLb5uPMhXwhrXiLPk,4306 -pip/commands/__init__.py,sha256=2Uq3HCdjchJD9FL1LB7rd5v6UySVAVizX0W3EX3hIoE,2244 -pip/commands/check.py,sha256=-A7GI1-WZBh9a4P6UoH_aR-J7I8Lz8ly7m3wnCjmevs,1382 -pip/commands/completion.py,sha256=kkPgVX7SUcJ_8Juw5GkgWaxHN9_45wmAr9mGs1zXEEs,2453 -pip/commands/download.py,sha256=8RuuPmSYgAq3iEDTqZY_1PDXRqREdUULHNjWJeAv7Mo,7810 -pip/commands/freeze.py,sha256=h6-yFMpjCjbNj8-gOm5UuoF6cg14N5rPV4TCi3_CeuI,2835 -pip/commands/hash.py,sha256=MCt4jEFyfoce0lVeNEz1x49uaTY-VDkKiBvvxrVcHkw,1597 -pip/commands/help.py,sha256=84HWkEdnGP_AEBHnn8gJP2Te0XTXRKFoXqXopbOZTNo,982 -pip/commands/install.py,sha256=ovG9p9n1X2NPqMgFVtSuT9kMbLAdx1r3YSSiXSvgOKI,17412 -pip/commands/list.py,sha256=93bCiFyt2Qut_YHkYHJMZHpXladmxsjS-yOtZeb3uqI,11369 -pip/commands/search.py,sha256=oTs9QNdefnrmCV_JeftG0PGiMuYVmiEDF1OUaYsmDao,4502 -pip/commands/show.py,sha256=ZYM57_7U8KP9MQIIyHKQdZxmiEZByy-DRzB697VFoTY,5891 -pip/commands/uninstall.py,sha256=tz8cXz4WdpUdnt3RvpdQwH6_SNMB50egBIZWa1dwfcc,2884 -pip/commands/wheel.py,sha256=z5SEhws2YRMb0Ml1IEkg6jFZMLRpLl86bHCrQbYt5zo,7729 -pip/compat/__init__.py,sha256=2Xs_IpsmdRgHbQgQO0c8_lPvHJnQXHyGWxPbLbYJL4c,4672 -pip/compat/dictconfig.py,sha256=dRrelPDWrceDSzFT51RTEVY2GuM7UDyc5Igh_tn4Fvk,23096 -pip/models/__init__.py,sha256=0Rs7_RA4DxeOkWT5Cq4CQzDrSEhvYcN3TH2cazr72PE,71 -pip/models/index.py,sha256=pUfbO__v3mD9j-2n_ClwPS8pVyx4l2wIwyvWt8GMCRA,487 -pip/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/operations/check.py,sha256=uwUN9cs1sPo7c0Sj6pRrSv7b22Pk29SXUImTelVchMQ,1590 -pip/operations/freeze.py,sha256=k-7w7LsM-RpPv7ERBzHiPpYkH-GuYfHLyR-Cp_1VPL0,5194 -pip/req/__init__.py,sha256=vFwZY8_Vc1WU1zFAespg1My_r_AT3n7cN0W9eX0EFqk,276 -pip/req/req_file.py,sha256=fG9MDsXUNPhmGwxUiwrIXEynyD8Q7s3L47-hLZPDXq0,11926 -pip/req/req_install.py,sha256=gYrH-lwQMmt55VVbav_EtRIPu94cQbHFHm_Kq6AeHbg,46487 -pip/req/req_set.py,sha256=jHspXqcA2FxcF05dgUIAZ5huYPv6bn0wRUX0Z7PKmaA,34462 -pip/req/req_uninstall.py,sha256=fdH2VgCjEC8NRYDS7fRu3ZJaBBUEy-N5muwxDX5MBNM,6897 -pip/utils/__init__.py,sha256=HX_wYS15oiYOz-H3qG1Kbi1CY7AGWCNK5jloiD0fauc,27187 -pip/utils/appdirs.py,sha256=kj2LK-I2fC5QnEh_A_v-ev_IQMcXaWWF5DE39sNvCLQ,8811 -pip/utils/build.py,sha256=4smLRrfSCmXmjEnVnMFh2tBEpNcSLRe6J0ejZJ-wWJE,1312 -pip/utils/deprecation.py,sha256=X_FMjtDbMJqfqEkdRrki-mYyIdPB6I6DHUTCA_ChY6M,2232 -pip/utils/encoding.py,sha256=NQxGiFS5GbeAveLZTnx92t5r0PYqvt0iRnP2u9SGG1w,971 -pip/utils/filesystem.py,sha256=ZEVBuYM3fqr2_lgOESh4Y7fPFszGD474zVm_M3Mb5Tk,899 -pip/utils/glibc.py,sha256=jcQYjt_oJLPKVZB28Kauy4Sw70zS-wawxoU1HHX36_0,2939 -pip/utils/hashes.py,sha256=oMk7cd3PbJgzpSQyXq1MytMud5f6H5Oa2YY5hYuCq6I,2866 -pip/utils/logging.py,sha256=7yWu4gZw-Qclj7X80QVdpGWkdTWGKT4LiUVKcE04pro,3327 -pip/utils/outdated.py,sha256=fNwOCL5r2EftPGhgCYGMKu032HC8cV-JAr9lp0HmToM,5455 -pip/utils/packaging.py,sha256=qhmli14odw6DIhWJgQYS2Q0RrSbr8nXNcG48f5yTRms,2080 -pip/utils/setuptools_build.py,sha256=0blfscmNJW_iZ5DcswJeDB_PbtTEjfK9RL1R1WEDW2E,278 -pip/utils/ui.py,sha256=pbDkSAeumZ6jdZcOJ2yAbx8iBgeP2zfpqNnLJK1gskQ,11597 -pip/vcs/__init__.py,sha256=WafFliUTHMmsSISV8PHp1M5EXDNSWyJr78zKaQmPLdY,12374 -pip/vcs/bazaar.py,sha256=tYTwc4b4off8mr0O2o8SiGejqBDJxcbDBMSMd9-ISYc,3803 -pip/vcs/git.py,sha256=5LfWryi78A-2ULjEZJvCTarJ_3l8venwXASlwm8hiug,11197 -pip/vcs/mercurial.py,sha256=xG6rDiwHCRytJEs23SIHBXl_SwQo2jkkdD_6rVVP5h4,3472 -pip/vcs/subversion.py,sha256=GAuX2Sk7IZvJyEzENKcVld_wGBrQ3fpXDlXjapZEYdI,9350 -pip-9.0.1.dist-info/DESCRIPTION.rst,sha256=Va8Wj1XBpTbVQ2Z41mZRJdALEeziiS_ZewWn1H2ecY4,1287 -pip-9.0.1.dist-info/METADATA,sha256=mvs_tLoKAbECXY_6QHiVWQsagSL-1UjolQTpScT8JSk,2529 -pip-9.0.1.dist-info/RECORD,, -pip-9.0.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 -pip-9.0.1.dist-info/entry_points.txt,sha256=GWc-Wb9WUKZ1EuVWNz-G0l3BeIpbNJLx0OJbZ61AAV0,68 -pip-9.0.1.dist-info/metadata.json,sha256=aqvkETDy4mHUBob-2Fn5WWlXORi_M2OSfQ2HQCUU_Fk,1565 -pip-9.0.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -../../../bin/pip,sha256=rlrvRQhvU5Cu7xG_8MsC70R6lIPjNozmDHlu8cfUl5U,247 -../../../bin/pip3,sha256=rlrvRQhvU5Cu7xG_8MsC70R6lIPjNozmDHlu8cfUl5U,247 -../../../bin/pip3.6,sha256=rlrvRQhvU5Cu7xG_8MsC70R6lIPjNozmDHlu8cfUl5U,247 -pip-9.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pip/compat/__pycache__/dictconfig.cpython-36.pyc,, -pip/compat/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/_structures.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/version.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/requirements.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/markers.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/_compat.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/__about__.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/utils.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/webencodings/__pycache__/labels.cpython-36.pyc,, -pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc,, -pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc,, -pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc,, -pip/_vendor/progress/__pycache__/bar.cpython-36.pyc,, -pip/_vendor/progress/__pycache__/counter.cpython-36.pyc,, -pip/_vendor/progress/__pycache__/spinner.cpython-36.pyc,, -pip/_vendor/progress/__pycache__/helpers.cpython-36.pyc,, -pip/_vendor/progress/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-36.pyc,, -pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-36.pyc,, -pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/distlib/_backport/__pycache__/misc.cpython-36.pyc,, -pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/manifest.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/util.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/database.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/scripts.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/wheel.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/locators.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/version.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/index.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/markers.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/resources.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/compat.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/metadata.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/win32.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/initialise.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/winterm.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/ansitowin32.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/linklockfile.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/symlinklockfile.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/controller.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/serialize.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/compat.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/cache.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/adapter.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-36.pyc,, -pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-36.pyc,, -pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/__pycache__/appdirs.cpython-36.pyc,, -pip/_vendor/__pycache__/ipaddress.cpython-36.pyc,, -pip/_vendor/__pycache__/six.cpython-36.pyc,, -pip/_vendor/__pycache__/retrying.cpython-36.pyc,, -pip/_vendor/__pycache__/re-vendor.cpython-36.pyc,, -pip/_vendor/__pycache__/distro.cpython-36.pyc,, -pip/_vendor/__pycache__/ordereddict.cpython-36.pyc,, -pip/_vendor/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/__pycache__/pyparsing.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/exceptions.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/certs.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/structures.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/sessions.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/status_codes.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/models.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/compat.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/adapters.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/hooks.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/auth.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/utils.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/cookies.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/api.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/sjisprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/mbcharsetprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/eucjpprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/chardetect.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/cp949prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/constants.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euctwfreq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/gb2312prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euckrprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euckrfreq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/chardistribution.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/escsm.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euctwprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/big5freq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/compat.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/hebrewprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/latin1prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/universaldetector.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/escprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/utf8prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/gb2312freq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langthaimodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/jpcntx.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/mbcssm.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/big5prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/jisfreq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/charsetprober.cpython-36.pyc,, -pip/_vendor/requests/packages/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/timeout.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/poolmanager.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/response.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/exceptions.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/request.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/filepost.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/connectionpool.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/connection.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/_collections.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/fields.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/__pycache__/six.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/lint.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/base.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-36.pyc,, -pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-36.pyc,, -pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-36.pyc,, -pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-36.pyc,, -pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-36.pyc,, -pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/constants.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/serializer.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/html5parser.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/_utils.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/_inputstream.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-36.pyc,, -pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-36.pyc,, -pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-36.pyc,, -pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/_trie/__pycache__/py.cpython-36.pyc,, -pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-36.pyc,, -pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-36.pyc,, -pip/_vendor/pkg_resources/__pycache__/__init__.cpython-36.pyc,, -pip/utils/__pycache__/logging.cpython-36.pyc,, -pip/utils/__pycache__/appdirs.cpython-36.pyc,, -pip/utils/__pycache__/build.cpython-36.pyc,, -pip/utils/__pycache__/deprecation.cpython-36.pyc,, -pip/utils/__pycache__/filesystem.cpython-36.pyc,, -pip/utils/__pycache__/glibc.cpython-36.pyc,, -pip/utils/__pycache__/outdated.cpython-36.pyc,, -pip/utils/__pycache__/encoding.cpython-36.pyc,, -pip/utils/__pycache__/hashes.cpython-36.pyc,, -pip/utils/__pycache__/packaging.cpython-36.pyc,, -pip/utils/__pycache__/ui.cpython-36.pyc,, -pip/utils/__pycache__/setuptools_build.cpython-36.pyc,, -pip/utils/__pycache__/__init__.cpython-36.pyc,, -pip/models/__pycache__/index.cpython-36.pyc,, -pip/models/__pycache__/__init__.cpython-36.pyc,, -pip/__pycache__/exceptions.cpython-36.pyc,, -pip/__pycache__/wheel.cpython-36.pyc,, -pip/__pycache__/status_codes.cpython-36.pyc,, -pip/__pycache__/index.cpython-36.pyc,, -pip/__pycache__/download.cpython-36.pyc,, -pip/__pycache__/basecommand.cpython-36.pyc,, -pip/__pycache__/locations.cpython-36.pyc,, -pip/__pycache__/__main__.cpython-36.pyc,, -pip/__pycache__/pep425tags.cpython-36.pyc,, -pip/__pycache__/__init__.cpython-36.pyc,, -pip/__pycache__/baseparser.cpython-36.pyc,, -pip/__pycache__/cmdoptions.cpython-36.pyc,, -pip/operations/__pycache__/check.cpython-36.pyc,, -pip/operations/__pycache__/freeze.cpython-36.pyc,, -pip/operations/__pycache__/__init__.cpython-36.pyc,, -pip/req/__pycache__/req_set.cpython-36.pyc,, -pip/req/__pycache__/req_uninstall.cpython-36.pyc,, -pip/req/__pycache__/req_install.cpython-36.pyc,, -pip/req/__pycache__/req_file.cpython-36.pyc,, -pip/req/__pycache__/__init__.cpython-36.pyc,, -pip/vcs/__pycache__/subversion.cpython-36.pyc,, -pip/vcs/__pycache__/git.cpython-36.pyc,, -pip/vcs/__pycache__/__init__.cpython-36.pyc,, -pip/vcs/__pycache__/mercurial.cpython-36.pyc,, -pip/vcs/__pycache__/bazaar.cpython-36.pyc,, -pip/commands/__pycache__/show.cpython-36.pyc,, -pip/commands/__pycache__/help.cpython-36.pyc,, -pip/commands/__pycache__/wheel.cpython-36.pyc,, -pip/commands/__pycache__/completion.cpython-36.pyc,, -pip/commands/__pycache__/check.cpython-36.pyc,, -pip/commands/__pycache__/download.cpython-36.pyc,, -pip/commands/__pycache__/hash.cpython-36.pyc,, -pip/commands/__pycache__/list.cpython-36.pyc,, -pip/commands/__pycache__/install.cpython-36.pyc,, -pip/commands/__pycache__/search.cpython-36.pyc,, -pip/commands/__pycache__/freeze.cpython-36.pyc,, -pip/commands/__pycache__/uninstall.cpython-36.pyc,, -pip/commands/__pycache__/__init__.cpython-36.pyc,, +pip/__init__.py,sha256=00QWSreEBjb8Y8sPs8HeqgLXSB-3UrONJxo4J5APxEc,11348 +pip/__main__.py,sha256=V6Kh-IEDEFpt1cahRE6MajUF_14qJR_Qsvn4MjWZXzE,584 +pip/basecommand.py,sha256=TTlmZesQ4Vuxcto2KqwZGmgmN5ioHEl_DeFev9ie_SA,11910 +pip/baseparser.py,sha256=AKMOeF3fTrRroiv0DmTQbdiLW0DQux2KqGC_dJJB9d0,10465 +pip/cmdoptions.py,sha256=8JCcF2kKAF2cFnV77oW-3DsHJifr9jF2WuChzzwgcwg,16474 +pip/download.py,sha256=rA0wbmqC2n9ejX481YJSidmKgQqQDjdaxkHkHlAN68k,32171 +pip/exceptions.py,sha256=BvqH-Jw3tP2b-2IJ2kjrQemOAPMqKrQMLRIZHZQpJXk,8121 +pip/index.py,sha256=L6UhtAEZc2qw7BqfQrkPQcw2gCgEw3GukLRSA95BNyI,39950 +pip/locations.py,sha256=9rJRlgonC6QC2zGDIn_7mXaoZ9_tF_IHM2BQhWVRgbo,5626 +pip/pep425tags.py,sha256=q3kec4f6NHszuGYIhGIbVvs896D06uJAnKFgJ_wce44,10980 +pip/status_codes.py,sha256=F6uDG6Gj7RNKQJUDnd87QKqI16Us-t-B0wPF_4QMpWc,156 +pip/wheel.py,sha256=QSWmGs2ui-n4UMWm0JUY6aMCcwNKungVzbWsxI9KlJQ,32010 +pip/_vendor/__init__.py,sha256=WaaSJ3roSSJ_Uv4yKAxlGohKEH9YUA3aIh1Xg2IjfgU,4670 +pip/_vendor/appdirs.py,sha256=-9UOIZy62ahCQVY9-b7Nn6_5_4Y6ooHnv72tM8iHi9Y,22368 +pip/_vendor/distro.py,sha256=A4Douw9pcqdYxDTp5b-OR02fxVXnfWs-wC1wA89rhRk,38349 +pip/_vendor/ipaddress.py,sha256=wimbqcE7rwwETlucn8A_4Qd_-NKXPOBcNxJHarUoXng,80176 +pip/_vendor/ordereddict.py,sha256=4KsFuc6V8IgHROCHUu-4vCrr21ZPPea7Z0cvX9AjQ7w,4094 +pip/_vendor/pyparsing.py,sha256=7vAuUVbh6txUKQR2IzJ8_9DKmD5vtm5MDssWkI0ka8o,224171 +pip/_vendor/re-vendor.py,sha256=PcdZ40d0ohMsdJmA4t0AeAWbPXi1tFsvAwA5KE5FGeY,773 +pip/_vendor/retrying.py,sha256=k3fflf5_Mm0XcIJYhB7Tj34bqCCPhUDkYbx1NvW2FPE,9972 +pip/_vendor/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 +pip/_vendor/cachecontrol/__init__.py,sha256=UPyFlz0dIjxusu5ITig9UDFJdSY5LTwijhldn0AfyzU,302 +pip/_vendor/cachecontrol/_cmd.py,sha256=MPxZfZd2LKDzVrs55X3wA1rsI2YuP8evLZSwQj0dIk0,1320 +pip/_vendor/cachecontrol/adapter.py,sha256=RaGYyRA-RA1J0AnE67GzEYFPBu4YH4EQUvQqTKa57iM,4608 +pip/_vendor/cachecontrol/cache.py,sha256=xtl-V-pr9KSt9VvFDRCB9yrHPEvqvbk-5M1vAInZb5k,790 +pip/_vendor/cachecontrol/compat.py,sha256=uyovOpd1ehI3J1XeBqJvcsIp6fvkjBpoQmu_0J2st8c,416 +pip/_vendor/cachecontrol/controller.py,sha256=elDsLcaYA15ncodRmHnWQp6ekU_ocEGtDeGLbsnTjzo,13024 +pip/_vendor/cachecontrol/filewrapper.py,sha256=_K8cStmXqD33m15PfsQ8rlpo6FfXjVbKmjvLXyICRgI,2531 +pip/_vendor/cachecontrol/heuristics.py,sha256=WtJrVsyWjpP9WoUiDVdTZZRNBCz5ZVptaQpYnqofDQU,4141 +pip/_vendor/cachecontrol/serialize.py,sha256=XM6elG9DSNexwaOCgMjUtfrHHW5NAB6TSbIf3x235xs,6536 +pip/_vendor/cachecontrol/wrapper.py,sha256=Kqyu_3TW_54XDudha4-HF21vyEOAJ4ZnRXFysTiLmXA,498 +pip/_vendor/cachecontrol/caches/__init__.py,sha256=uWnUtyMvHY_LULaL_4_IR1F_xPgK5zHfJyRnBq4DnPE,369 +pip/_vendor/cachecontrol/caches/file_cache.py,sha256=FsDug3bwUAQ3okjjfGzxlDaBf2fwVSn1iBKMTL6SyGU,3532 +pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=XywqxkS9MkCaflTOY_wjrE02neKdywB9YwlOBbP7Ywc,973 +pip/_vendor/colorama/__init__.py,sha256=9xByrTvk9upkL5NGV5It2Eje4-kzNLwa_1lGPWpXoNU,240 +pip/_vendor/colorama/ansi.py,sha256=Fi0un-QLqRm-v7o_nKiOqyC8PapBJK7DLV_q9LKtTO0,2524 +pip/_vendor/colorama/ansitowin32.py,sha256=gJZB35Lbdjatykd2zrUUnokMzkvcFgscyn_tNxxMFHA,9668 +pip/_vendor/colorama/initialise.py,sha256=cHqVJtb82OG7HUCxvQ2joG7N_CoxbIKbI_fgryZkj20,1917 +pip/_vendor/colorama/win32.py,sha256=_SCEoTK_GA2tU1nhbayKKac-v9Jn98lCPIFOeFMGCHQ,5365 +pip/_vendor/colorama/winterm.py,sha256=V7U7ojwG1q4n6PKripjEvW_htYQi5ueXSM3LUUoqqDY,6290 +pip/_vendor/distlib/__init__.py,sha256=-aUeNNCfiIG_1Tqf19BH0xLNuBKGX1I7lNhcLYgFUEA,581 +pip/_vendor/distlib/compat.py,sha256=FzKlP9dNUMH-j_1LCVnjgx6KgUbpnRjTjYkTkDYRPlI,40801 +pip/_vendor/distlib/database.py,sha256=jniJmYk0Mj2t6gZYbnn68TvQwnVZ0kXyeuf_3AxFclk,49672 +pip/_vendor/distlib/index.py,sha256=Cw8gxFq_7xXvdgExL3efjLAY3EAPDMSL3VA42RkbQBs,21085 +pip/_vendor/distlib/locators.py,sha256=hD_Hm3aSL9DklY9Cxyct2n_74gZ0xNFFGB5L7M6ds14,51013 +pip/_vendor/distlib/manifest.py,sha256=3qEuZhHlDbvyYZ1BZbdapDAivgMgUwWpZ00cmXqcn18,14810 +pip/_vendor/distlib/markers.py,sha256=iRrVWwpyVwjkKJSX8NEQ92_MRMwpROcfNGKCD-Ch1QM,6282 +pip/_vendor/distlib/metadata.py,sha256=hUsf7Qh2Ae4CCkL33qK8ppwC8ZTzT7ep6Hj9RKpijKU,38833 +pip/_vendor/distlib/resources.py,sha256=VFBVbFqLVqDBSQDXcFQHrX1KEcuoDxTK699Ydi_beyc,10766 +pip/_vendor/distlib/scripts.py,sha256=xpehNfISGPTNxQZu02K9Rw2QbNx_2Q4emePv3W5X0iw,15224 +pip/_vendor/distlib/t32.exe,sha256=cp0UAUDDr1tGAx8adlKxWbCHIa-oB3bxev5zYzgAr8E,89088 +pip/_vendor/distlib/t64.exe,sha256=FiljDPcX9qvoe9FYE_9pNEHqbqMnhcCOuI_oLJ4F9F8,97792 +pip/_vendor/distlib/util.py,sha256=E2wU-RZShPMFUMJr9kPmemTULinM4qDzosNPihCuKE0,52991 +pip/_vendor/distlib/version.py,sha256=CgghOUylxGD7dEA2S3MvWjx7mY_2bWsluF0Of3Yxl4Y,23711 +pip/_vendor/distlib/w32.exe,sha256=LItrBJesEqt2QTQuB-yha2YbMegURHmHmdSxhjBqmnc,85504 +pip/_vendor/distlib/w64.exe,sha256=n_PioBC7ltz7sAk1WLbLzZJgS4R2axSy_0HPf8ZCsEg,94208 +pip/_vendor/distlib/wheel.py,sha256=UP53cKxOM5r7bHSS-n5prF6hwJEVsMW9ZNJutOuC26c,39115 +pip/_vendor/distlib/_backport/__init__.py,sha256=bqS_dTOH6uW9iGgd0uzfpPjo6vZ4xpPZ7kyfZJ2vNaw,274 +pip/_vendor/distlib/_backport/misc.py,sha256=KWecINdbFNOxSOP1fGF680CJnaC6S4fBRgEtaYTw0ig,971 +pip/_vendor/distlib/_backport/shutil.py,sha256=VW1t3uYqUjWZH7jV-6QiimLhnldoV5uIpH4EuiT1jfw,25647 +pip/_vendor/distlib/_backport/sysconfig.cfg,sha256=swZKxq9RY5e9r3PXCrlvQPMsvOdiWZBTHLEbqS8LJLU,2617 +pip/_vendor/distlib/_backport/sysconfig.py,sha256=eSEyJg7jxF_eHlHG8IOtl93kb07UoMIRp1wYsPeGi9k,26955 +pip/_vendor/distlib/_backport/tarfile.py,sha256=Ihp7rXRcjbIKw8COm9wSePV9ARGXbSF9gGXAMn2Q-KU,92628 +pip/_vendor/html5lib/__init__.py,sha256=JsIwmFldk-9raBadPSTS74JrfmJvozc-3aekMi7Hr9s,780 +pip/_vendor/html5lib/_ihatexml.py,sha256=tzXygYmisUmiEUt2v7E1Ab50AKQsrD-SglPRnY75vME,16705 +pip/_vendor/html5lib/_inputstream.py,sha256=C4lX5gUBwebOWy41hYP2ZBpkPVNvxk_hZBm3OVyPZM4,32532 +pip/_vendor/html5lib/_tokenizer.py,sha256=YAaOEBD6qc5ISq9Xt9Nif1OFgcybTTfMdwqBkZhpAq4,76580 +pip/_vendor/html5lib/_utils.py,sha256=bS6THVlL8ZyTcI6CIxiM6xxuHsE8i1j5Ogd3Ha1G84U,4096 +pip/_vendor/html5lib/constants.py,sha256=Dfc1Fv3_9frktgWjg4tbj-CjMMp02Ko9qMe4il1BVdo,83387 +pip/_vendor/html5lib/html5parser.py,sha256=Dmlu9hlq5w_id6mBZyY_sE5LukIACgvG4kpgIsded8Q,117170 +pip/_vendor/html5lib/serializer.py,sha256=Urrsa0cPPLqNX-UbJWS2gUhs_06qVbNxZvUnrmGZK6E,14177 +pip/_vendor/html5lib/_trie/__init__.py,sha256=8VR1bcgD2OpeS2XExpu5yBhP_Q1K-lwKbBKICBPf1kU,289 +pip/_vendor/html5lib/_trie/_base.py,sha256=6P_AcIoGjtwB2qAlhV8H4VP-ztQxoXFGwt4NyMqG_Kw,979 +pip/_vendor/html5lib/_trie/datrie.py,sha256=EQpqSfkZRuTbE-DuhW7xMdVDxdZNZ0CfmnYfHA_3zxM,1178 +pip/_vendor/html5lib/_trie/py.py,sha256=wXmQLrZRf4MyWNyg0m3h81m9InhLR7GJ002mIIZh-8o,1775 +pip/_vendor/html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/html5lib/filters/alphabeticalattributes.py,sha256=DXv-P2vdQ5F3OTWM6QZ6KhyDlAWm90pbfrD1Bk9D_l0,621 +pip/_vendor/html5lib/filters/base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286 +pip/_vendor/html5lib/filters/inject_meta_charset.py,sha256=2Q_JnMscn_tNbV_qpgYN_5M3PnBGfmuvECMKDExHUcY,2742 +pip/_vendor/html5lib/filters/lint.py,sha256=qf5cLrT6xXd8V7GH1R_3lKxIjuJSfpbWTpSwaglYdDw,3365 +pip/_vendor/html5lib/filters/optionaltags.py,sha256=EHig4kM-QiLjuxVJ3FAAFNy-10k4aV6HJbQzHKZ_3u8,10534 +pip/_vendor/html5lib/filters/sanitizer.py,sha256=7PqJrhm6mo3JvaHk2IQW7i74Or7Qtd-FV8UftJIyDys,25112 +pip/_vendor/html5lib/filters/whitespace.py,sha256=KPt067nYTqqi8KLTClyynn4eVzNDC_-MApXNVHRXVX0,1139 +pip/_vendor/html5lib/treeadapters/__init__.py,sha256=l3LcqMSEyoh99Jh_eWjGexHnIvKhLAXoP-LDz88whuM,208 +pip/_vendor/html5lib/treeadapters/genshi.py,sha256=6VIuHDNoExv1JWv3ePj6V5CM-tcyiUSWe5_Hd2ejbwY,1555 +pip/_vendor/html5lib/treeadapters/sax.py,sha256=3of4vvaUYIAic7pngebwJV24hpOS7Zg9ggJa_WQegy4,1661 +pip/_vendor/html5lib/treebuilders/__init__.py,sha256=UlB4orkTgZhFIKQdXrtiWn9cpKSsuhnOQOIHeD0Fv4k,3406 +pip/_vendor/html5lib/treebuilders/base.py,sha256=4vdjm_Z2f_GTQBwKnWlrzVcctTb-K5sfN8pXDaWODiA,13942 +pip/_vendor/html5lib/treebuilders/dom.py,sha256=SY3MsijXyzdNPc8aK5IQsupBoM8J67y56DgNtGvsb9g,8835 +pip/_vendor/html5lib/treebuilders/etree.py,sha256=aqIBOGj_dFYqBURIcTegGNBhAIJOw5iFDHb4jrkYH-8,12764 +pip/_vendor/html5lib/treebuilders/etree_lxml.py,sha256=CEgwHMIQZvIDFAqct4kqPkVtyKIm9efHFq_VeExEPCA,14161 +pip/_vendor/html5lib/treewalkers/__init__.py,sha256=CFpUOCfLuhAgVJ8NYk9wviCu1khYnv7XRStvyzU1Fws,5544 +pip/_vendor/html5lib/treewalkers/base.py,sha256=ei-2cFbNFd0gRjyaFmxnxZGLNID4o0bHFCH9bMyZ5Bk,4939 +pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua0mOi7HBukc,1413 +pip/_vendor/html5lib/treewalkers/etree.py,sha256=8jVLEY2FjgN4RFugwhAh44l9ScVYoDStQFCnlPwvafI,4684 +pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=sY6wfRshWTllu6n48TPWpKsQRPp-0CQrT0hj_AdzHSU,6309 +pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309 +pip/_vendor/lockfile/__init__.py,sha256=Tqpz90DwKYfhPsfzVOJl84TL87pdFE5ePNHdXAxs4Tk,9371 +pip/_vendor/lockfile/linklockfile.py,sha256=C7OH3H4GdK68u4FQgp8fkP2kO4fyUTSyj3X6blgfobc,2652 +pip/_vendor/lockfile/mkdirlockfile.py,sha256=e3qgIL-etZMLsS-3ft19iW_8IQ360HNkGOqE3yBKsUw,3096 +pip/_vendor/lockfile/pidlockfile.py,sha256=ukH9uk6NFuxyVmG5QiWw4iKq3fT7MjqUguX95avYPIY,6090 +pip/_vendor/lockfile/sqlitelockfile.py,sha256=o2TMkMRY0iwn-iL1XMRRIFStMUkS4i3ajceeYNntKFg,5506 +pip/_vendor/lockfile/symlinklockfile.py,sha256=ABwXXmvTHvCl5viPblShL3PG-gGsLiT1roAMfDRwhi8,2616 +pip/_vendor/packaging/__about__.py,sha256=zkcCPTN_6TcLW0Nrlg0176-R1QQ_WVPTm8sz1R4-HjM,720 +pip/_vendor/packaging/__init__.py,sha256=_vNac5TrzwsrzbOFIbF-5cHqc_Y2aPT2D7zrIR06BOo,513 +pip/_vendor/packaging/_compat.py,sha256=Vi_A0rAQeHbU-a9X0tt1yQm9RqkgQbDSxzRw8WlU9kA,860 +pip/_vendor/packaging/_structures.py,sha256=RImECJ4c_wTlaTYYwZYLHEiebDMaAJmK1oPARhw1T5o,1416 +pip/_vendor/packaging/markers.py,sha256=mtg2nphJE1oQO39g1DgsdPsMO-guBBClpR-AEYFrbMg,8230 +pip/_vendor/packaging/requirements.py,sha256=SD7dVJGjdPUqtoHb47qwK6wWJTQd-ZXWjxpJg83UcBA,4327 +pip/_vendor/packaging/specifiers.py,sha256=SAMRerzO3fK2IkFZCaZkuwZaL_EGqHNOz4pni4vhnN0,28025 +pip/_vendor/packaging/utils.py,sha256=3m6WvPm6NNxE8rkTGmn0r75B_GZSGg7ikafxHsBN1WA,421 +pip/_vendor/packaging/version.py,sha256=OwGnxYfr2ghNzYx59qWIBkrK3SnB6n-Zfd1XaLpnnM0,11556 +pip/_vendor/pkg_resources/__init__.py,sha256=CcwuHtCBZn9OTkmgF9cFpadIAMhlrnZTVKTOo4V2p58,103230 +pip/_vendor/progress/__init__.py,sha256=Wn1074LUDZovd4zfoVYojnPBgOc6ctHbQX7rp_p8lRA,3023 +pip/_vendor/progress/bar.py,sha256=YNPJeRrwYVKFO2nyaEwsQjYByamMWTgJMvQO1NpD-AY,2685 +pip/_vendor/progress/counter.py,sha256=kEqA8jWEdwrc6P_9VaRx7bjOHwk9gxl-Q9oVbQ08v5c,1502 +pip/_vendor/progress/helpers.py,sha256=FehfwZTv-5cCfsbcMlvlUkm3xZ0cRhsev6XVpmeTF4c,2854 +pip/_vendor/progress/spinner.py,sha256=iCVtUQbaJUFHTjn1ZLPQLPYeao4lC9aXAa_HxIeUK6k,1314 +pip/_vendor/requests/__init__.py,sha256=Cde-qxOWcslaEcPvKAJQPFbY8_va8PMbU7Rssr7vViI,2326 +pip/_vendor/requests/adapters.py,sha256=DJdgax91PyS2s6_oZPELbuLWNlM2xGguNu62sqcOUik,19740 +pip/_vendor/requests/api.py,sha256=PgminOpD8hLLKLNs0RWLKr1HpNc4Qxr_6uen8q2c9CI,5794 +pip/_vendor/requests/auth.py,sha256=eBLtJlcTZxRG7xKXCvGQBLO9a-PxFgMf2qTUbtZwMJM,8175 +pip/_vendor/requests/cacert.pem,sha256=5xzWFRrSP0ZsXiW6emg8UQ_w497lT4qWCv32OO8R1ME,344712 +pip/_vendor/requests/certs.py,sha256=Aa-oStu9f2lVi8VM9Aw1xaAtTIz7bhu5CGKNPEW1waM,625 +pip/_vendor/requests/compat.py,sha256=0cgWB43LEX5OrX1O4k-bPbFlIbWXgEd412DSDJtF1Y8,1687 +pip/_vendor/requests/cookies.py,sha256=awMI0hm3SKheMEDTqO8AIadc2XmnCGKPCTNw_4hlM3Q,18208 +pip/_vendor/requests/exceptions.py,sha256=x-MGvDASYKSstuCNYTA5IT_EAcxTp5knE3WPMrgkrlI,2860 +pip/_vendor/requests/hooks.py,sha256=HXAHoC1FNTFRZX6-lNdvPM7Tst4kvGwYTN-AOKRxoRU,767 +pip/_vendor/requests/models.py,sha256=YHuL2khGDFxeWc-NMJIcfFqvYJ0dKs1mXfj1Fuff1J8,30532 +pip/_vendor/requests/sessions.py,sha256=H7HpKRLKeu1MSH5W1-PI2GMCFLN4bz5i3OFqjjgzE5k,25609 +pip/_vendor/requests/status_codes.py,sha256=uwVHcMPkHV3FElDLlnDTH3KULZIAGxaovbBxrjWm8N0,3316 +pip/_vendor/requests/structures.py,sha256=yexCvWbX40M6E8mLQOpAGZZ-ZoAnyaT2dni-Bp-b42g,3012 +pip/_vendor/requests/utils.py,sha256=9d3jqnA8avsF9N1QPmsk2pJgo2pxuExrN2hoIhtLggY,24163 +pip/_vendor/requests/packages/__init__.py,sha256=CVheqNRcXIkAi5037RhxeqbAqd0QhrK1o9R9kS2xvuI,1384 +pip/_vendor/requests/packages/chardet/__init__.py,sha256=XuTKCYOR7JwsoHxqZTYH86LVyMDbDI3s1s0W_qoGEBM,1295 +pip/_vendor/requests/packages/chardet/big5freq.py,sha256=D8oTdz-GM7Jg8TsaWJDm65vM_OLHC3xub6qUJ3rOgsQ,82594 +pip/_vendor/requests/packages/chardet/big5prober.py,sha256=XX96C--6WKYW36mL-z7pJSAtc169Z8ZImByCP4pEN9A,1684 +pip/_vendor/requests/packages/chardet/chardetect.py,sha256=f4299UZG6uWd3i3r_N0OdrFj2sA9JFI54PAmDLAFmWA,2504 +pip/_vendor/requests/packages/chardet/chardistribution.py,sha256=cUARQFr1oTLXeJCDQrDRkUP778AvSMzhSCnG8VLCV58,9226 +pip/_vendor/requests/packages/chardet/charsetgroupprober.py,sha256=0lKk7VE516fgMw119tNefFqLOxKfIE9WfdkpIT69OKU,3791 +pip/_vendor/requests/packages/chardet/charsetprober.py,sha256=Z48o2KiOj23FNqYH8FqzhH5m1qdm3rI8DcTm2Yqtklg,1902 +pip/_vendor/requests/packages/chardet/codingstatemachine.py,sha256=E85rYhHVMw9xDEJVgiQhp0OnLGr6i2r8_7QOWMKTH08,2318 +pip/_vendor/requests/packages/chardet/compat.py,sha256=5mm6yrHwef1JEG5OxkPJlSq5lkjLVpEGh3iPgFBkpkM,1157 +pip/_vendor/requests/packages/chardet/constants.py,sha256=-UnY8U7EP7z9fTyd09yq35BEkSFEAUAiv9ohd1DW1s4,1335 +pip/_vendor/requests/packages/chardet/cp949prober.py,sha256=FMvdLyB7fejPXRsTbca7LK1P3RUvvssmjUNyaEfz8zY,1782 +pip/_vendor/requests/packages/chardet/escprober.py,sha256=q5TcQKeVq31WxrW7Sv8yjpZkjEoaHO8S92EJZ9hodys,3187 +pip/_vendor/requests/packages/chardet/escsm.py,sha256=7iljEKN8lXTh8JFXPUSwlibMno6R6ksq4evLxbkzfro,7839 +pip/_vendor/requests/packages/chardet/eucjpprober.py,sha256=5IpfSEjAb7h3hcGMd6dkU80O900C2N6xku28rdYFKuc,3678 +pip/_vendor/requests/packages/chardet/euckrfreq.py,sha256=T5saK5mImySG5ygQPtsp6o2uKulouCwYm2ElOyFkJqU,45978 +pip/_vendor/requests/packages/chardet/euckrprober.py,sha256=Wo7dnZ5Erw_nB4H-m5alMiOxOuJUmGHlwCSaGqExDZA,1675 +pip/_vendor/requests/packages/chardet/euctwfreq.py,sha256=G_I0BW9i1w0ONeeUwIYqV7_U09buIHdqh-wNHVaql7I,34872 +pip/_vendor/requests/packages/chardet/euctwprober.py,sha256=upS2P6GuT5ujOxXYw-RJLcT7A4PTuo27KGUKU4UZpIQ,1676 +pip/_vendor/requests/packages/chardet/gb2312freq.py,sha256=M2gFdo_qQ_BslStEchrPW5CrPEZEacC0uyDLw4ok-kY,36011 +pip/_vendor/requests/packages/chardet/gb2312prober.py,sha256=VWnjoRa83Y6V6oczMaxyUr0uy48iCnC2nzk9zfEIRHc,1681 +pip/_vendor/requests/packages/chardet/hebrewprober.py,sha256=8pdoUfsVXf_L4BnJde_BewS6H2yInV5688eu0nFhLHY,13359 +pip/_vendor/requests/packages/chardet/jisfreq.py,sha256=ZcL4R5ekHHbP2KCYGakVMBsiKqZZZAABzhwi-uRkOps,47315 +pip/_vendor/requests/packages/chardet/jpcntx.py,sha256=yftmp0QaF6RJO5SJs8I7LU5AF4rwP23ebeCQL4BM1OY,19348 +pip/_vendor/requests/packages/chardet/langbulgarianmodel.py,sha256=ZyPsA796MSVhYdfWhMCgKWckupAKAnKqWcE3Cl3ej6o,12784 +pip/_vendor/requests/packages/chardet/langcyrillicmodel.py,sha256=fkcd5OvogUp-GrNDWAZPgkYsSRCD2omotAEvqjlmLKE,17725 +pip/_vendor/requests/packages/chardet/langgreekmodel.py,sha256=QHMy31CH_ot67UCtmurCEKqKx2WwoaKrw2YCYYBK2Lw,12628 +pip/_vendor/requests/packages/chardet/langhebrewmodel.py,sha256=4ASl5vzKJPng4H278VHKtRYC03TpQpenlHTcsmZH1rE,11318 +pip/_vendor/requests/packages/chardet/langhungarianmodel.py,sha256=SXwuUzh49_cBeMXhshRHdrhlkz0T8_pZWV_pdqBKNFk,12536 +pip/_vendor/requests/packages/chardet/langthaimodel.py,sha256=-k7djh3dGKngAGnt3WfuoJN7acDcWcmHAPojhaUd7q4,11275 +pip/_vendor/requests/packages/chardet/latin1prober.py,sha256=238JHOxH8aRudJY2NmeSv5s7i0Qe3GuklIU3HlYybvg,5232 +pip/_vendor/requests/packages/chardet/mbcharsetprober.py,sha256=9rOCjDVsmSMp6e7q2syqak22j7lrbUZhJhMee2gbVL0,3268 +pip/_vendor/requests/packages/chardet/mbcsgroupprober.py,sha256=SHRzNPLpDXfMJLA8phCHVU0WgqbgDCNxDQMolGX_7yk,1967 +pip/_vendor/requests/packages/chardet/mbcssm.py,sha256=IKwJXyxu34n6NojmxVxC60MLFtJKm-hIfxaFEnb3uBA,19590 +pip/_vendor/requests/packages/chardet/sbcharsetprober.py,sha256=Xq0lODqJnDgxglBiQI4BqTFiPbn63-0a5XNA5-hVu7U,4793 +pip/_vendor/requests/packages/chardet/sbcsgroupprober.py,sha256=8hLyH8RAG-aohBo7o_KciWVgRo42ZE_zEtuNG1JMRYI,3291 +pip/_vendor/requests/packages/chardet/sjisprober.py,sha256=UYOmiMDzttYIkSDoOB08UEagivJpUXz4tuWiWzTiOr8,3764 +pip/_vendor/requests/packages/chardet/universaldetector.py,sha256=h-E2x6XSCzlNjycYWG0Fe4Cf1SGdaIzUNu2HCphpMZA,6840 +pip/_vendor/requests/packages/chardet/utf8prober.py,sha256=7tdNZGrJY7jZUBD483GGMkiP0Tx8Fp-cGvWHoAsilHg,2652 +pip/_vendor/requests/packages/urllib3/__init__.py,sha256=EF9pbHgMzqQek2Y6EZ82A8B6wETFeW7bK0K-HoZ3Ffo,2852 +pip/_vendor/requests/packages/urllib3/_collections.py,sha256=RP-cHyTx4AgYwvoETK8q1IVRbWFJnE0VV692ZHSbU68,10553 +pip/_vendor/requests/packages/urllib3/connection.py,sha256=QCmkelYgtbc06DfJtgs22na78kRTLCTbLb-OSWLbt-A,11617 +pip/_vendor/requests/packages/urllib3/connectionpool.py,sha256=fls19n1Y4jnwOBsZz_9F01i08xH2gZXEIyyDmWd-mKU,33591 +pip/_vendor/requests/packages/urllib3/exceptions.py,sha256=zGjhZCR1wefEnCN5b7WouQ3UhXesJ2bRKYIeWusaFJs,5599 +pip/_vendor/requests/packages/urllib3/fields.py,sha256=WUMvCLvnw7XemBq6AmCgNPJwyIJL_vWaMHaA2FLlscM,5931 +pip/_vendor/requests/packages/urllib3/filepost.py,sha256=NvLlFsdt8ih_Q4S2ekQF3CJG0nOXs32YI-G04_AdT2g,2320 +pip/_vendor/requests/packages/urllib3/poolmanager.py,sha256=9Uf0fUk0aR_s1auXgwceoN2gbaIQ08lrum_cGEA9-_U,13092 +pip/_vendor/requests/packages/urllib3/request.py,sha256=jET7OvA3FSjxABBRGhCyMdPvM9XuJA6df9gRhkJiJiY,5988 +pip/_vendor/requests/packages/urllib3/response.py,sha256=wxJSV_6pyh6Cgx7XFVGpNhpZCbh4eL7lCSFaU4ixXXc,18615 +pip/_vendor/requests/packages/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/requests/packages/urllib3/contrib/appengine.py,sha256=NdN_xOgDLMadUPe_dN3wdan_DH9-fxVNqFgq19tbqQs,7937 +pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py,sha256=r-vMDMXAGbix9a7-IhbKVTATmAst-5g4hKYOLf8Kd5M,4531 +pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py,sha256=JsdAh0gL4XvQzhOEBRoFtJN91qLf1LFIDEFZs95445I,11778 +pip/_vendor/requests/packages/urllib3/contrib/socks.py,sha256=uPHtE6R8uyUbD9R8l2wO80c87WDGZ9rou3kNOwV74eA,5668 +pip/_vendor/requests/packages/urllib3/packages/__init__.py,sha256=nlChrGzkjCkmhCX9HrF_qHPUgosfsPQkVIJxiiLhk9g,109 +pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py,sha256=VQaPONfhVMsb8B63Xg7ZOydJqIE_jzeMhVN3Pec6ogw,8935 +pip/_vendor/requests/packages/urllib3/packages/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py,sha256=cOWMIn1orgJoA35p6pSzO_-Dc6iOX9Dhl6D2sL9b_2o,460 +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=fK28k37hL7-D79v9iM2fHgNK9Q1Pw0M7qVRL4rkfFjQ,3778 +pip/_vendor/requests/packages/urllib3/util/__init__.py,sha256=n2QE9_0Bb6u8tf7LUc4qKe8V-Hz9G8lEOc9j_30Q8d0,892 +pip/_vendor/requests/packages/urllib3/util/connection.py,sha256=7B5Mmepg5Xd399VKE__VHxD2ObapYFrB3mWJ_EnIebs,4744 +pip/_vendor/requests/packages/urllib3/util/request.py,sha256=ZMDewRK-mjlK72szGIIjzYnLIn-zPP0WgJUMjKeZ6Tg,2128 +pip/_vendor/requests/packages/urllib3/util/response.py,sha256=1UFd5TIp9MyBp4xgnZoyQZscZVPPr0tWRaXNR5w_vds,2165 +pip/_vendor/requests/packages/urllib3/util/retry.py,sha256=5eA3GHR_L14qz66NU6gr-v5VbKYsvdEqOvCcsx1oLKo,10664 +pip/_vendor/requests/packages/urllib3/util/ssl_.py,sha256=7xR_jvQLTQA1U006wJ1bl2KuLGnD1qQvUcFM2uysedw,11622 +pip/_vendor/requests/packages/urllib3/util/timeout.py,sha256=ioAIYptFyBG7eU_r8_ZmO45hpj1dJE6WCvrGR9dNFjs,9596 +pip/_vendor/requests/packages/urllib3/util/url.py,sha256=EcX4ZfmgKWcqM4sY9FlC-yN4y_snuURPV0TpUPHNjnc,5879 +pip/_vendor/webencodings/__init__.py,sha256=t7rAQQxXwalY-ak9hTl73qHjhia9UH-sL-e00qQrBpo,10576 +pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979 +pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305 +pip/_vendor/webencodings/tests.py,sha256=7vTk7LgOJn_t1XtT_viofZlEJ7cJCzPe_hvVHOkcQl8,6562 +pip/_vendor/webencodings/x_user_defined.py,sha256=72cfPRhbfkRCGkkA8ZnvVV7UnoiLb5uPMhXwhrXiLPk,4306 +pip/commands/__init__.py,sha256=2Uq3HCdjchJD9FL1LB7rd5v6UySVAVizX0W3EX3hIoE,2244 +pip/commands/check.py,sha256=-A7GI1-WZBh9a4P6UoH_aR-J7I8Lz8ly7m3wnCjmevs,1382 +pip/commands/completion.py,sha256=kkPgVX7SUcJ_8Juw5GkgWaxHN9_45wmAr9mGs1zXEEs,2453 +pip/commands/download.py,sha256=8RuuPmSYgAq3iEDTqZY_1PDXRqREdUULHNjWJeAv7Mo,7810 +pip/commands/freeze.py,sha256=h6-yFMpjCjbNj8-gOm5UuoF6cg14N5rPV4TCi3_CeuI,2835 +pip/commands/hash.py,sha256=MCt4jEFyfoce0lVeNEz1x49uaTY-VDkKiBvvxrVcHkw,1597 +pip/commands/help.py,sha256=84HWkEdnGP_AEBHnn8gJP2Te0XTXRKFoXqXopbOZTNo,982 +pip/commands/install.py,sha256=ovG9p9n1X2NPqMgFVtSuT9kMbLAdx1r3YSSiXSvgOKI,17412 +pip/commands/list.py,sha256=93bCiFyt2Qut_YHkYHJMZHpXladmxsjS-yOtZeb3uqI,11369 +pip/commands/search.py,sha256=oTs9QNdefnrmCV_JeftG0PGiMuYVmiEDF1OUaYsmDao,4502 +pip/commands/show.py,sha256=ZYM57_7U8KP9MQIIyHKQdZxmiEZByy-DRzB697VFoTY,5891 +pip/commands/uninstall.py,sha256=tz8cXz4WdpUdnt3RvpdQwH6_SNMB50egBIZWa1dwfcc,2884 +pip/commands/wheel.py,sha256=z5SEhws2YRMb0Ml1IEkg6jFZMLRpLl86bHCrQbYt5zo,7729 +pip/compat/__init__.py,sha256=2Xs_IpsmdRgHbQgQO0c8_lPvHJnQXHyGWxPbLbYJL4c,4672 +pip/compat/dictconfig.py,sha256=dRrelPDWrceDSzFT51RTEVY2GuM7UDyc5Igh_tn4Fvk,23096 +pip/models/__init__.py,sha256=0Rs7_RA4DxeOkWT5Cq4CQzDrSEhvYcN3TH2cazr72PE,71 +pip/models/index.py,sha256=pUfbO__v3mD9j-2n_ClwPS8pVyx4l2wIwyvWt8GMCRA,487 +pip/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/operations/check.py,sha256=uwUN9cs1sPo7c0Sj6pRrSv7b22Pk29SXUImTelVchMQ,1590 +pip/operations/freeze.py,sha256=k-7w7LsM-RpPv7ERBzHiPpYkH-GuYfHLyR-Cp_1VPL0,5194 +pip/req/__init__.py,sha256=vFwZY8_Vc1WU1zFAespg1My_r_AT3n7cN0W9eX0EFqk,276 +pip/req/req_file.py,sha256=fG9MDsXUNPhmGwxUiwrIXEynyD8Q7s3L47-hLZPDXq0,11926 +pip/req/req_install.py,sha256=gYrH-lwQMmt55VVbav_EtRIPu94cQbHFHm_Kq6AeHbg,46487 +pip/req/req_set.py,sha256=jHspXqcA2FxcF05dgUIAZ5huYPv6bn0wRUX0Z7PKmaA,34462 +pip/req/req_uninstall.py,sha256=fdH2VgCjEC8NRYDS7fRu3ZJaBBUEy-N5muwxDX5MBNM,6897 +pip/utils/__init__.py,sha256=HX_wYS15oiYOz-H3qG1Kbi1CY7AGWCNK5jloiD0fauc,27187 +pip/utils/appdirs.py,sha256=kj2LK-I2fC5QnEh_A_v-ev_IQMcXaWWF5DE39sNvCLQ,8811 +pip/utils/build.py,sha256=4smLRrfSCmXmjEnVnMFh2tBEpNcSLRe6J0ejZJ-wWJE,1312 +pip/utils/deprecation.py,sha256=X_FMjtDbMJqfqEkdRrki-mYyIdPB6I6DHUTCA_ChY6M,2232 +pip/utils/encoding.py,sha256=NQxGiFS5GbeAveLZTnx92t5r0PYqvt0iRnP2u9SGG1w,971 +pip/utils/filesystem.py,sha256=ZEVBuYM3fqr2_lgOESh4Y7fPFszGD474zVm_M3Mb5Tk,899 +pip/utils/glibc.py,sha256=jcQYjt_oJLPKVZB28Kauy4Sw70zS-wawxoU1HHX36_0,2939 +pip/utils/hashes.py,sha256=oMk7cd3PbJgzpSQyXq1MytMud5f6H5Oa2YY5hYuCq6I,2866 +pip/utils/logging.py,sha256=7yWu4gZw-Qclj7X80QVdpGWkdTWGKT4LiUVKcE04pro,3327 +pip/utils/outdated.py,sha256=fNwOCL5r2EftPGhgCYGMKu032HC8cV-JAr9lp0HmToM,5455 +pip/utils/packaging.py,sha256=qhmli14odw6DIhWJgQYS2Q0RrSbr8nXNcG48f5yTRms,2080 +pip/utils/setuptools_build.py,sha256=0blfscmNJW_iZ5DcswJeDB_PbtTEjfK9RL1R1WEDW2E,278 +pip/utils/ui.py,sha256=pbDkSAeumZ6jdZcOJ2yAbx8iBgeP2zfpqNnLJK1gskQ,11597 +pip/vcs/__init__.py,sha256=WafFliUTHMmsSISV8PHp1M5EXDNSWyJr78zKaQmPLdY,12374 +pip/vcs/bazaar.py,sha256=tYTwc4b4off8mr0O2o8SiGejqBDJxcbDBMSMd9-ISYc,3803 +pip/vcs/git.py,sha256=5LfWryi78A-2ULjEZJvCTarJ_3l8venwXASlwm8hiug,11197 +pip/vcs/mercurial.py,sha256=xG6rDiwHCRytJEs23SIHBXl_SwQo2jkkdD_6rVVP5h4,3472 +pip/vcs/subversion.py,sha256=GAuX2Sk7IZvJyEzENKcVld_wGBrQ3fpXDlXjapZEYdI,9350 +pip-9.0.1.dist-info/DESCRIPTION.rst,sha256=Va8Wj1XBpTbVQ2Z41mZRJdALEeziiS_ZewWn1H2ecY4,1287 +pip-9.0.1.dist-info/METADATA,sha256=mvs_tLoKAbECXY_6QHiVWQsagSL-1UjolQTpScT8JSk,2529 +pip-9.0.1.dist-info/RECORD,, +pip-9.0.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +pip-9.0.1.dist-info/entry_points.txt,sha256=GWc-Wb9WUKZ1EuVWNz-G0l3BeIpbNJLx0OJbZ61AAV0,68 +pip-9.0.1.dist-info/metadata.json,sha256=aqvkETDy4mHUBob-2Fn5WWlXORi_M2OSfQ2HQCUU_Fk,1565 +pip-9.0.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +../../../bin/pip,sha256=rlrvRQhvU5Cu7xG_8MsC70R6lIPjNozmDHlu8cfUl5U,247 +../../../bin/pip3,sha256=rlrvRQhvU5Cu7xG_8MsC70R6lIPjNozmDHlu8cfUl5U,247 +../../../bin/pip3.6,sha256=rlrvRQhvU5Cu7xG_8MsC70R6lIPjNozmDHlu8cfUl5U,247 +pip-9.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip/compat/__pycache__/dictconfig.cpython-36.pyc,, +pip/compat/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/_structures.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/version.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/requirements.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/markers.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/_compat.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/__about__.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/utils.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/labels.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/bar.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/counter.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/spinner.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/helpers.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/misc.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/manifest.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/util.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/database.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/scripts.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/wheel.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/locators.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/version.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/index.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/markers.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/resources.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/metadata.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/win32.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/initialise.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/winterm.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/ansitowin32.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/linklockfile.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/symlinklockfile.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/controller.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/serialize.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/cache.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/adapter.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-36.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-36.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/__pycache__/appdirs.cpython-36.pyc,, +pip/_vendor/__pycache__/ipaddress.cpython-36.pyc,, +pip/_vendor/__pycache__/six.cpython-36.pyc,, +pip/_vendor/__pycache__/retrying.cpython-36.pyc,, +pip/_vendor/__pycache__/re-vendor.cpython-36.pyc,, +pip/_vendor/__pycache__/distro.cpython-36.pyc,, +pip/_vendor/__pycache__/ordereddict.cpython-36.pyc,, +pip/_vendor/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/__pycache__/pyparsing.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/exceptions.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/certs.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/structures.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/sessions.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/status_codes.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/models.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/adapters.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/hooks.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/auth.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/utils.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/cookies.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/api.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/sjisprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/mbcharsetprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/eucjpprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/chardetect.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/cp949prober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/constants.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/euctwfreq.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/gb2312prober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/euckrprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/euckrfreq.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/chardistribution.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/escsm.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/euctwprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/big5freq.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/hebrewprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/latin1prober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/universaldetector.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/escprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/utf8prober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/gb2312freq.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langthaimodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/jpcntx.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/mbcssm.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/big5prober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/jisfreq.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/charsetprober.cpython-36.pyc,, +pip/_vendor/requests/packages/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/timeout.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/poolmanager.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/response.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/exceptions.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/request.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/filepost.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/connectionpool.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/connection.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/_collections.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/fields.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/packages/__pycache__/six.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/lint.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/base.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/constants.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/serializer.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/html5parser.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_utils.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_inputstream.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/py.cpython-36.pyc,, +pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-36.pyc,, +pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-36.pyc,, +pip/_vendor/pkg_resources/__pycache__/__init__.cpython-36.pyc,, +pip/utils/__pycache__/logging.cpython-36.pyc,, +pip/utils/__pycache__/appdirs.cpython-36.pyc,, +pip/utils/__pycache__/build.cpython-36.pyc,, +pip/utils/__pycache__/deprecation.cpython-36.pyc,, +pip/utils/__pycache__/filesystem.cpython-36.pyc,, +pip/utils/__pycache__/glibc.cpython-36.pyc,, +pip/utils/__pycache__/outdated.cpython-36.pyc,, +pip/utils/__pycache__/encoding.cpython-36.pyc,, +pip/utils/__pycache__/hashes.cpython-36.pyc,, +pip/utils/__pycache__/packaging.cpython-36.pyc,, +pip/utils/__pycache__/ui.cpython-36.pyc,, +pip/utils/__pycache__/setuptools_build.cpython-36.pyc,, +pip/utils/__pycache__/__init__.cpython-36.pyc,, +pip/models/__pycache__/index.cpython-36.pyc,, +pip/models/__pycache__/__init__.cpython-36.pyc,, +pip/__pycache__/exceptions.cpython-36.pyc,, +pip/__pycache__/wheel.cpython-36.pyc,, +pip/__pycache__/status_codes.cpython-36.pyc,, +pip/__pycache__/index.cpython-36.pyc,, +pip/__pycache__/download.cpython-36.pyc,, +pip/__pycache__/basecommand.cpython-36.pyc,, +pip/__pycache__/locations.cpython-36.pyc,, +pip/__pycache__/__main__.cpython-36.pyc,, +pip/__pycache__/pep425tags.cpython-36.pyc,, +pip/__pycache__/__init__.cpython-36.pyc,, +pip/__pycache__/baseparser.cpython-36.pyc,, +pip/__pycache__/cmdoptions.cpython-36.pyc,, +pip/operations/__pycache__/check.cpython-36.pyc,, +pip/operations/__pycache__/freeze.cpython-36.pyc,, +pip/operations/__pycache__/__init__.cpython-36.pyc,, +pip/req/__pycache__/req_set.cpython-36.pyc,, +pip/req/__pycache__/req_uninstall.cpython-36.pyc,, +pip/req/__pycache__/req_install.cpython-36.pyc,, +pip/req/__pycache__/req_file.cpython-36.pyc,, +pip/req/__pycache__/__init__.cpython-36.pyc,, +pip/vcs/__pycache__/subversion.cpython-36.pyc,, +pip/vcs/__pycache__/git.cpython-36.pyc,, +pip/vcs/__pycache__/__init__.cpython-36.pyc,, +pip/vcs/__pycache__/mercurial.cpython-36.pyc,, +pip/vcs/__pycache__/bazaar.cpython-36.pyc,, +pip/commands/__pycache__/show.cpython-36.pyc,, +pip/commands/__pycache__/help.cpython-36.pyc,, +pip/commands/__pycache__/wheel.cpython-36.pyc,, +pip/commands/__pycache__/completion.cpython-36.pyc,, +pip/commands/__pycache__/check.cpython-36.pyc,, +pip/commands/__pycache__/download.cpython-36.pyc,, +pip/commands/__pycache__/hash.cpython-36.pyc,, +pip/commands/__pycache__/list.cpython-36.pyc,, +pip/commands/__pycache__/install.cpython-36.pyc,, +pip/commands/__pycache__/search.cpython-36.pyc,, +pip/commands/__pycache__/freeze.cpython-36.pyc,, +pip/commands/__pycache__/uninstall.cpython-36.pyc,, +pip/commands/__pycache__/__init__.cpython-36.pyc,, diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index b3f847cc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc deleted file mode 100644 index 1fed0f41..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py deleted file mode 100644 index 52f42873..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +++ /dev/null @@ -1,105 +0,0 @@ -"""The match_hostname() function from Python 3.3.3, essential when using SSL.""" - -# Note: This file is under the PSF license as the code comes from the python -# stdlib. http://docs.python.org/3/license.html - -import re - -__version__ = '3.4.0.2' - -class CertificateError(ValueError): - pass - - -def _dnsname_match(dn, hostname, max_wildcards=1): - """Matching according to RFC 6125, section 6.4.3 - - http://tools.ietf.org/html/rfc6125#section-6.4.3 - """ - pats = [] - if not dn: - return False - - # Ported from python3-syntax: - # leftmost, *remainder = dn.split(r'.') - parts = dn.split(r'.') - leftmost = parts[0] - remainder = parts[1:] - - wildcards = leftmost.count('*') - if wildcards > max_wildcards: - # Issue #17980: avoid denials of service by refusing more - # than one wildcard per fragment. A survey of established - # policy among SSL implementations showed it to be a - # reasonable choice. - raise CertificateError( - "too many wildcards in certificate DNS name: " + repr(dn)) - - # speed up common case w/o wildcards - if not wildcards: - return dn.lower() == hostname.lower() - - # RFC 6125, section 6.4.3, subitem 1. - # The client SHOULD NOT attempt to match a presented identifier in which - # the wildcard character comprises a label other than the left-most label. - if leftmost == '*': - # When '*' is a fragment by itself, it matches a non-empty dotless - # fragment. - pats.append('[^.]+') - elif leftmost.startswith('xn--') or hostname.startswith('xn--'): - # RFC 6125, section 6.4.3, subitem 3. - # The client SHOULD NOT attempt to match a presented identifier - # where the wildcard character is embedded within an A-label or - # U-label of an internationalized domain name. - pats.append(re.escape(leftmost)) - else: - # Otherwise, '*' matches any dotless string, e.g. www* - pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) - - # add the remaining fragments, ignore any wildcards - for frag in remainder: - pats.append(re.escape(frag)) - - pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) - return pat.match(hostname) - - -def match_hostname(cert, hostname): - """Verify that *cert* (in decoded format as returned by - SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 - rules are followed, but IP addresses are not accepted for *hostname*. - - CertificateError is raised on failure. On success, the function - returns nothing. - """ - if not cert: - raise ValueError("empty or no certificate") - dnsnames = [] - san = cert.get('subjectAltName', ()) - for key, value in san: - if key == 'DNS': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if not dnsnames: - # The subject is only checked when there is no dNSName entry - # in subjectAltName - for sub in cert.get('subject', ()): - for key, value in sub: - # XXX according to RFC 2818, the most specific Common Name - # must be used. - if key == 'commonName': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if len(dnsnames) > 1: - raise CertificateError("hostname %r " - "doesn't match either of %s" - % (hostname, ', '.join(map(repr, dnsnames)))) - elif len(dnsnames) == 1: - raise CertificateError("hostname %r " - "doesn't match %r" - % (hostname, dnsnames[0])) - else: - raise CertificateError("no appropriate commonName or " - "subjectAltName fields were found") diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.py deleted file mode 100644 index 7ed00b1c..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.py +++ /dev/null @@ -1,367 +0,0 @@ -from __future__ import absolute_import -import collections -import functools -import logging - -try: # Python 3 - from urllib.parse import urljoin -except ImportError: - from urlparse import urljoin - -from ._collections import RecentlyUsedContainer -from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool -from .connectionpool import port_by_scheme -from .exceptions import LocationValueError, MaxRetryError, ProxySchemeUnknown -from .request import RequestMethods -from .util.url import parse_url -from .util.retry import Retry - - -__all__ = ['PoolManager', 'ProxyManager', 'proxy_from_url'] - - -log = logging.getLogger(__name__) - -SSL_KEYWORDS = ('key_file', 'cert_file', 'cert_reqs', 'ca_certs', - 'ssl_version', 'ca_cert_dir') - -# The base fields to use when determining what pool to get a connection from; -# these do not rely on the ``connection_pool_kw`` and can be determined by the -# URL and potentially the ``urllib3.connection.port_by_scheme`` dictionary. -# -# All custom key schemes should include the fields in this key at a minimum. -BasePoolKey = collections.namedtuple('BasePoolKey', ('scheme', 'host', 'port')) - -# The fields to use when determining what pool to get a HTTP and HTTPS -# connection from. All additional fields must be present in the PoolManager's -# ``connection_pool_kw`` instance variable. -HTTPPoolKey = collections.namedtuple( - 'HTTPPoolKey', BasePoolKey._fields + ('timeout', 'retries', 'strict', - 'block', 'source_address') -) -HTTPSPoolKey = collections.namedtuple( - 'HTTPSPoolKey', HTTPPoolKey._fields + SSL_KEYWORDS -) - - -def _default_key_normalizer(key_class, request_context): - """ - Create a pool key of type ``key_class`` for a request. - - According to RFC 3986, both the scheme and host are case-insensitive. - Therefore, this function normalizes both before constructing the pool - key for an HTTPS request. If you wish to change this behaviour, provide - alternate callables to ``key_fn_by_scheme``. - - :param key_class: - The class to use when constructing the key. This should be a namedtuple - with the ``scheme`` and ``host`` keys at a minimum. - - :param request_context: - A dictionary-like object that contain the context for a request. - It should contain a key for each field in the :class:`HTTPPoolKey` - """ - context = {} - for key in key_class._fields: - context[key] = request_context.get(key) - context['scheme'] = context['scheme'].lower() - context['host'] = context['host'].lower() - return key_class(**context) - - -# A dictionary that maps a scheme to a callable that creates a pool key. -# This can be used to alter the way pool keys are constructed, if desired. -# Each PoolManager makes a copy of this dictionary so they can be configured -# globally here, or individually on the instance. -key_fn_by_scheme = { - 'http': functools.partial(_default_key_normalizer, HTTPPoolKey), - 'https': functools.partial(_default_key_normalizer, HTTPSPoolKey), -} - -pool_classes_by_scheme = { - 'http': HTTPConnectionPool, - 'https': HTTPSConnectionPool, -} - - -class PoolManager(RequestMethods): - """ - Allows for arbitrary requests while transparently keeping track of - necessary connection pools for you. - - :param num_pools: - Number of connection pools to cache before discarding the least - recently used pool. - - :param headers: - Headers to include with all requests, unless other headers are given - explicitly. - - :param \**connection_pool_kw: - Additional parameters are used to create fresh - :class:`urllib3.connectionpool.ConnectionPool` instances. - - Example:: - - >>> manager = PoolManager(num_pools=2) - >>> r = manager.request('GET', 'http://google.com/') - >>> r = manager.request('GET', 'http://google.com/mail') - >>> r = manager.request('GET', 'http://yahoo.com/') - >>> len(manager.pools) - 2 - - """ - - proxy = None - - def __init__(self, num_pools=10, headers=None, **connection_pool_kw): - RequestMethods.__init__(self, headers) - self.connection_pool_kw = connection_pool_kw - self.pools = RecentlyUsedContainer(num_pools, - dispose_func=lambda p: p.close()) - - # Locally set the pool classes and keys so other PoolManagers can - # override them. - self.pool_classes_by_scheme = pool_classes_by_scheme - self.key_fn_by_scheme = key_fn_by_scheme.copy() - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - self.clear() - # Return False to re-raise any potential exceptions - return False - - def _new_pool(self, scheme, host, port): - """ - Create a new :class:`ConnectionPool` based on host, port and scheme. - - This method is used to actually create the connection pools handed out - by :meth:`connection_from_url` and companion methods. It is intended - to be overridden for customization. - """ - pool_cls = self.pool_classes_by_scheme[scheme] - kwargs = self.connection_pool_kw - if scheme == 'http': - kwargs = self.connection_pool_kw.copy() - for kw in SSL_KEYWORDS: - kwargs.pop(kw, None) - - return pool_cls(host, port, **kwargs) - - def clear(self): - """ - Empty our store of pools and direct them all to close. - - This will not affect in-flight connections, but they will not be - re-used after completion. - """ - self.pools.clear() - - def connection_from_host(self, host, port=None, scheme='http'): - """ - Get a :class:`ConnectionPool` based on the host, port, and scheme. - - If ``port`` isn't given, it will be derived from the ``scheme`` using - ``urllib3.connectionpool.port_by_scheme``. - """ - - if not host: - raise LocationValueError("No host specified.") - - request_context = self.connection_pool_kw.copy() - request_context['scheme'] = scheme or 'http' - if not port: - port = port_by_scheme.get(request_context['scheme'].lower(), 80) - request_context['port'] = port - request_context['host'] = host - - return self.connection_from_context(request_context) - - def connection_from_context(self, request_context): - """ - Get a :class:`ConnectionPool` based on the request context. - - ``request_context`` must at least contain the ``scheme`` key and its - value must be a key in ``key_fn_by_scheme`` instance variable. - """ - scheme = request_context['scheme'].lower() - pool_key_constructor = self.key_fn_by_scheme[scheme] - pool_key = pool_key_constructor(request_context) - - return self.connection_from_pool_key(pool_key) - - def connection_from_pool_key(self, pool_key): - """ - Get a :class:`ConnectionPool` based on the provided pool key. - - ``pool_key`` should be a namedtuple that only contains immutable - objects. At a minimum it must have the ``scheme``, ``host``, and - ``port`` fields. - """ - with self.pools.lock: - # If the scheme, host, or port doesn't match existing open - # connections, open a new ConnectionPool. - pool = self.pools.get(pool_key) - if pool: - return pool - - # Make a fresh ConnectionPool of the desired type - pool = self._new_pool(pool_key.scheme, pool_key.host, pool_key.port) - self.pools[pool_key] = pool - - return pool - - def connection_from_url(self, url): - """ - Similar to :func:`urllib3.connectionpool.connection_from_url` but - doesn't pass any additional parameters to the - :class:`urllib3.connectionpool.ConnectionPool` constructor. - - Additional parameters are taken from the :class:`.PoolManager` - constructor. - """ - u = parse_url(url) - return self.connection_from_host(u.host, port=u.port, scheme=u.scheme) - - def urlopen(self, method, url, redirect=True, **kw): - """ - Same as :meth:`urllib3.connectionpool.HTTPConnectionPool.urlopen` - with custom cross-host redirect logic and only sends the request-uri - portion of the ``url``. - - The given ``url`` parameter must be absolute, such that an appropriate - :class:`urllib3.connectionpool.ConnectionPool` can be chosen for it. - """ - u = parse_url(url) - conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme) - - kw['assert_same_host'] = False - kw['redirect'] = False - if 'headers' not in kw: - kw['headers'] = self.headers - - if self.proxy is not None and u.scheme == "http": - response = conn.urlopen(method, url, **kw) - else: - response = conn.urlopen(method, u.request_uri, **kw) - - redirect_location = redirect and response.get_redirect_location() - if not redirect_location: - return response - - # Support relative URLs for redirecting. - redirect_location = urljoin(url, redirect_location) - - # RFC 7231, Section 6.4.4 - if response.status == 303: - method = 'GET' - - retries = kw.get('retries') - if not isinstance(retries, Retry): - retries = Retry.from_int(retries, redirect=redirect) - - try: - retries = retries.increment(method, url, response=response, _pool=conn) - except MaxRetryError: - if retries.raise_on_redirect: - raise - return response - - kw['retries'] = retries - kw['redirect'] = redirect - - log.info("Redirecting %s -> %s", url, redirect_location) - return self.urlopen(method, redirect_location, **kw) - - -class ProxyManager(PoolManager): - """ - Behaves just like :class:`PoolManager`, but sends all requests through - the defined proxy, using the CONNECT method for HTTPS URLs. - - :param proxy_url: - The URL of the proxy to be used. - - :param proxy_headers: - A dictionary contaning headers that will be sent to the proxy. In case - of HTTP they are being sent with each request, while in the - HTTPS/CONNECT case they are sent only once. Could be used for proxy - authentication. - - Example: - >>> proxy = urllib3.ProxyManager('http://localhost:3128/') - >>> r1 = proxy.request('GET', 'http://google.com/') - >>> r2 = proxy.request('GET', 'http://httpbin.org/') - >>> len(proxy.pools) - 1 - >>> r3 = proxy.request('GET', 'https://httpbin.org/') - >>> r4 = proxy.request('GET', 'https://twitter.com/') - >>> len(proxy.pools) - 3 - - """ - - def __init__(self, proxy_url, num_pools=10, headers=None, - proxy_headers=None, **connection_pool_kw): - - if isinstance(proxy_url, HTTPConnectionPool): - proxy_url = '%s://%s:%i' % (proxy_url.scheme, proxy_url.host, - proxy_url.port) - proxy = parse_url(proxy_url) - if not proxy.port: - port = port_by_scheme.get(proxy.scheme, 80) - proxy = proxy._replace(port=port) - - if proxy.scheme not in ("http", "https"): - raise ProxySchemeUnknown(proxy.scheme) - - self.proxy = proxy - self.proxy_headers = proxy_headers or {} - - connection_pool_kw['_proxy'] = self.proxy - connection_pool_kw['_proxy_headers'] = self.proxy_headers - - super(ProxyManager, self).__init__( - num_pools, headers, **connection_pool_kw) - - def connection_from_host(self, host, port=None, scheme='http'): - if scheme == "https": - return super(ProxyManager, self).connection_from_host( - host, port, scheme) - - return super(ProxyManager, self).connection_from_host( - self.proxy.host, self.proxy.port, self.proxy.scheme) - - def _set_proxy_headers(self, url, headers=None): - """ - Sets headers needed by proxies: specifically, the Accept and Host - headers. Only sets headers not provided by the user. - """ - headers_ = {'Accept': '*/*'} - - netloc = parse_url(url).netloc - if netloc: - headers_['Host'] = netloc - - if headers: - headers_.update(headers) - return headers_ - - def urlopen(self, method, url, redirect=True, **kw): - "Same as HTTP(S)ConnectionPool.urlopen, ``url`` must be absolute." - u = parse_url(url) - - if u.scheme == "http": - # For proxied HTTPS requests, httplib sets the necessary headers - # on the CONNECT to the proxy. For HTTP, we'll definitely - # need to set 'Host' at the very least. - headers = kw.get('headers', self.headers) - kw['headers'] = self._set_proxy_headers(url, headers) - - return super(ProxyManager, self).urlopen(method, url, redirect=redirect, **kw) - - -def proxy_from_url(url, **kw): - return ProxyManager(proxy_url=url, **kw) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/request.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/request.py deleted file mode 100644 index d5aa62d8..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/request.py +++ /dev/null @@ -1,151 +0,0 @@ -from __future__ import absolute_import -try: - from urllib.parse import urlencode -except ImportError: - from urllib import urlencode - -from .filepost import encode_multipart_formdata - - -__all__ = ['RequestMethods'] - - -class RequestMethods(object): - """ - Convenience mixin for classes who implement a :meth:`urlopen` method, such - as :class:`~urllib3.connectionpool.HTTPConnectionPool` and - :class:`~urllib3.poolmanager.PoolManager`. - - Provides behavior for making common types of HTTP request methods and - decides which type of request field encoding to use. - - Specifically, - - :meth:`.request_encode_url` is for sending requests whose fields are - encoded in the URL (such as GET, HEAD, DELETE). - - :meth:`.request_encode_body` is for sending requests whose fields are - encoded in the *body* of the request using multipart or www-form-urlencoded - (such as for POST, PUT, PATCH). - - :meth:`.request` is for making any kind of request, it will look up the - appropriate encoding format and use one of the above two methods to make - the request. - - Initializer parameters: - - :param headers: - Headers to include with all requests, unless other headers are given - explicitly. - """ - - _encode_url_methods = set(['DELETE', 'GET', 'HEAD', 'OPTIONS']) - - def __init__(self, headers=None): - self.headers = headers or {} - - def urlopen(self, method, url, body=None, headers=None, - encode_multipart=True, multipart_boundary=None, - **kw): # Abstract - raise NotImplemented("Classes extending RequestMethods must implement " - "their own ``urlopen`` method.") - - def request(self, method, url, fields=None, headers=None, **urlopen_kw): - """ - Make a request using :meth:`urlopen` with the appropriate encoding of - ``fields`` based on the ``method`` used. - - This is a convenience method that requires the least amount of manual - effort. It can be used in most situations, while still having the - option to drop down to more specific methods when necessary, such as - :meth:`request_encode_url`, :meth:`request_encode_body`, - or even the lowest level :meth:`urlopen`. - """ - method = method.upper() - - if method in self._encode_url_methods: - return self.request_encode_url(method, url, fields=fields, - headers=headers, - **urlopen_kw) - else: - return self.request_encode_body(method, url, fields=fields, - headers=headers, - **urlopen_kw) - - def request_encode_url(self, method, url, fields=None, headers=None, - **urlopen_kw): - """ - Make a request using :meth:`urlopen` with the ``fields`` encoded in - the url. This is useful for request methods like GET, HEAD, DELETE, etc. - """ - if headers is None: - headers = self.headers - - extra_kw = {'headers': headers} - extra_kw.update(urlopen_kw) - - if fields: - url += '?' + urlencode(fields) - - return self.urlopen(method, url, **extra_kw) - - def request_encode_body(self, method, url, fields=None, headers=None, - encode_multipart=True, multipart_boundary=None, - **urlopen_kw): - """ - Make a request using :meth:`urlopen` with the ``fields`` encoded in - the body. This is useful for request methods like POST, PUT, PATCH, etc. - - When ``encode_multipart=True`` (default), then - :meth:`urllib3.filepost.encode_multipart_formdata` is used to encode - the payload with the appropriate content type. Otherwise - :meth:`urllib.urlencode` is used with the - 'application/x-www-form-urlencoded' content type. - - Multipart encoding must be used when posting files, and it's reasonably - safe to use it in other times too. However, it may break request - signing, such as with OAuth. - - Supports an optional ``fields`` parameter of key/value strings AND - key/filetuple. A filetuple is a (filename, data, MIME type) tuple where - the MIME type is optional. For example:: - - fields = { - 'foo': 'bar', - 'fakefile': ('foofile.txt', 'contents of foofile'), - 'realfile': ('barfile.txt', open('realfile').read()), - 'typedfile': ('bazfile.bin', open('bazfile').read(), - 'image/jpeg'), - 'nonamefile': 'contents of nonamefile field', - } - - When uploading a file, providing a filename (the first parameter of the - tuple) is optional but recommended to best mimick behavior of browsers. - - Note that if ``headers`` are supplied, the 'Content-Type' header will - be overwritten because it depends on the dynamic random boundary string - which is used to compose the body of the request. The random boundary - string can be explicitly set with the ``multipart_boundary`` parameter. - """ - if headers is None: - headers = self.headers - - extra_kw = {'headers': {}} - - if fields: - if 'body' in urlopen_kw: - raise TypeError( - "request got values for both 'fields' and 'body', can only specify one.") - - if encode_multipart: - body, content_type = encode_multipart_formdata(fields, boundary=multipart_boundary) - else: - body, content_type = urlencode(fields), 'application/x-www-form-urlencoded' - - extra_kw['body'] = body - extra_kw['headers'] = {'Content-Type': content_type} - - extra_kw['headers'].update(headers) - extra_kw.update(urlopen_kw) - - return self.urlopen(method, url, **extra_kw) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/response.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/response.py deleted file mode 100644 index 55679032..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/response.py +++ /dev/null @@ -1,530 +0,0 @@ -from __future__ import absolute_import -from contextlib import contextmanager -import zlib -import io -from socket import timeout as SocketTimeout -from socket import error as SocketError - -from ._collections import HTTPHeaderDict -from .exceptions import ( - ProtocolError, DecodeError, ReadTimeoutError, ResponseNotChunked -) -from .packages.six import string_types as basestring, binary_type, PY3 -from .packages.six.moves import http_client as httplib -from .connection import HTTPException, BaseSSLError -from .util.response import is_fp_closed, is_response_to_head - - -class DeflateDecoder(object): - - def __init__(self): - self._first_try = True - self._data = binary_type() - self._obj = zlib.decompressobj() - - def __getattr__(self, name): - return getattr(self._obj, name) - - def decompress(self, data): - if not data: - return data - - if not self._first_try: - return self._obj.decompress(data) - - self._data += data - try: - return self._obj.decompress(data) - except zlib.error: - self._first_try = False - self._obj = zlib.decompressobj(-zlib.MAX_WBITS) - try: - return self.decompress(self._data) - finally: - self._data = None - - -class GzipDecoder(object): - - def __init__(self): - self._obj = zlib.decompressobj(16 + zlib.MAX_WBITS) - - def __getattr__(self, name): - return getattr(self._obj, name) - - def decompress(self, data): - if not data: - return data - return self._obj.decompress(data) - - -def _get_decoder(mode): - if mode == 'gzip': - return GzipDecoder() - - return DeflateDecoder() - - -class HTTPResponse(io.IOBase): - """ - HTTP Response container. - - Backwards-compatible to httplib's HTTPResponse but the response ``body`` is - loaded and decoded on-demand when the ``data`` property is accessed. This - class is also compatible with the Python standard library's :mod:`io` - module, and can hence be treated as a readable object in the context of that - framework. - - Extra parameters for behaviour not present in httplib.HTTPResponse: - - :param preload_content: - If True, the response's body will be preloaded during construction. - - :param decode_content: - If True, attempts to decode specific content-encoding's based on headers - (like 'gzip' and 'deflate') will be skipped and raw data will be used - instead. - - :param original_response: - When this HTTPResponse wrapper is generated from an httplib.HTTPResponse - object, it's convenient to include the original for debug purposes. It's - otherwise unused. - """ - - CONTENT_DECODERS = ['gzip', 'deflate'] - REDIRECT_STATUSES = [301, 302, 303, 307, 308] - - def __init__(self, body='', headers=None, status=0, version=0, reason=None, - strict=0, preload_content=True, decode_content=True, - original_response=None, pool=None, connection=None): - - if isinstance(headers, HTTPHeaderDict): - self.headers = headers - else: - self.headers = HTTPHeaderDict(headers) - self.status = status - self.version = version - self.reason = reason - self.strict = strict - self.decode_content = decode_content - - self._decoder = None - self._body = None - self._fp = None - self._original_response = original_response - self._fp_bytes_read = 0 - - if body and isinstance(body, (basestring, binary_type)): - self._body = body - - self._pool = pool - self._connection = connection - - if hasattr(body, 'read'): - self._fp = body - - # Are we using the chunked-style of transfer encoding? - self.chunked = False - self.chunk_left = None - tr_enc = self.headers.get('transfer-encoding', '').lower() - # Don't incur the penalty of creating a list and then discarding it - encodings = (enc.strip() for enc in tr_enc.split(",")) - if "chunked" in encodings: - self.chunked = True - - # If requested, preload the body. - if preload_content and not self._body: - self._body = self.read(decode_content=decode_content) - - def get_redirect_location(self): - """ - Should we redirect and where to? - - :returns: Truthy redirect location string if we got a redirect status - code and valid location. ``None`` if redirect status and no - location. ``False`` if not a redirect status code. - """ - if self.status in self.REDIRECT_STATUSES: - return self.headers.get('location') - - return False - - def release_conn(self): - if not self._pool or not self._connection: - return - - self._pool._put_conn(self._connection) - self._connection = None - - @property - def data(self): - # For backwords-compat with earlier urllib3 0.4 and earlier. - if self._body: - return self._body - - if self._fp: - return self.read(cache_content=True) - - @property - def connection(self): - return self._connection - - def tell(self): - """ - Obtain the number of bytes pulled over the wire so far. May differ from - the amount of content returned by :meth:``HTTPResponse.read`` if bytes - are encoded on the wire (e.g, compressed). - """ - return self._fp_bytes_read - - def _init_decoder(self): - """ - Set-up the _decoder attribute if necessar. - """ - # Note: content-encoding value should be case-insensitive, per RFC 7230 - # Section 3.2 - content_encoding = self.headers.get('content-encoding', '').lower() - if self._decoder is None and content_encoding in self.CONTENT_DECODERS: - self._decoder = _get_decoder(content_encoding) - - def _decode(self, data, decode_content, flush_decoder): - """ - Decode the data passed in and potentially flush the decoder. - """ - try: - if decode_content and self._decoder: - data = self._decoder.decompress(data) - except (IOError, zlib.error) as e: - content_encoding = self.headers.get('content-encoding', '').lower() - raise DecodeError( - "Received response with content-encoding: %s, but " - "failed to decode it." % content_encoding, e) - - if flush_decoder and decode_content: - data += self._flush_decoder() - - return data - - def _flush_decoder(self): - """ - Flushes the decoder. Should only be called if the decoder is actually - being used. - """ - if self._decoder: - buf = self._decoder.decompress(b'') - return buf + self._decoder.flush() - - return b'' - - @contextmanager - def _error_catcher(self): - """ - Catch low-level python exceptions, instead re-raising urllib3 - variants, so that low-level exceptions are not leaked in the - high-level api. - - On exit, release the connection back to the pool. - """ - clean_exit = False - - try: - try: - yield - - except SocketTimeout: - # FIXME: Ideally we'd like to include the url in the ReadTimeoutError but - # there is yet no clean way to get at it from this context. - raise ReadTimeoutError(self._pool, None, 'Read timed out.') - - except BaseSSLError as e: - # FIXME: Is there a better way to differentiate between SSLErrors? - if 'read operation timed out' not in str(e): # Defensive: - # This shouldn't happen but just in case we're missing an edge - # case, let's avoid swallowing SSL errors. - raise - - raise ReadTimeoutError(self._pool, None, 'Read timed out.') - - except (HTTPException, SocketError) as e: - # This includes IncompleteRead. - raise ProtocolError('Connection broken: %r' % e, e) - - # If no exception is thrown, we should avoid cleaning up - # unnecessarily. - clean_exit = True - finally: - # If we didn't terminate cleanly, we need to throw away our - # connection. - if not clean_exit: - # The response may not be closed but we're not going to use it - # anymore so close it now to ensure that the connection is - # released back to the pool. - if self._original_response: - self._original_response.close() - - # Closing the response may not actually be sufficient to close - # everything, so if we have a hold of the connection close that - # too. - if self._connection: - self._connection.close() - - # If we hold the original response but it's closed now, we should - # return the connection back to the pool. - if self._original_response and self._original_response.isclosed(): - self.release_conn() - - def read(self, amt=None, decode_content=None, cache_content=False): - """ - Similar to :meth:`httplib.HTTPResponse.read`, but with two additional - parameters: ``decode_content`` and ``cache_content``. - - :param amt: - How much of the content to read. If specified, caching is skipped - because it doesn't make sense to cache partial content as the full - response. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - - :param cache_content: - If True, will save the returned data such that the same result is - returned despite of the state of the underlying file object. This - is useful if you want the ``.data`` property to continue working - after having ``.read()`` the file object. (Overridden if ``amt`` is - set.) - """ - self._init_decoder() - if decode_content is None: - decode_content = self.decode_content - - if self._fp is None: - return - - flush_decoder = False - data = None - - with self._error_catcher(): - if amt is None: - # cStringIO doesn't like amt=None - data = self._fp.read() - flush_decoder = True - else: - cache_content = False - data = self._fp.read(amt) - if amt != 0 and not data: # Platform-specific: Buggy versions of Python. - # Close the connection when no data is returned - # - # This is redundant to what httplib/http.client _should_ - # already do. However, versions of python released before - # December 15, 2012 (http://bugs.python.org/issue16298) do - # not properly close the connection in all cases. There is - # no harm in redundantly calling close. - self._fp.close() - flush_decoder = True - - if data: - self._fp_bytes_read += len(data) - - data = self._decode(data, decode_content, flush_decoder) - - if cache_content: - self._body = data - - return data - - def stream(self, amt=2**16, decode_content=None): - """ - A generator wrapper for the read() method. A call will block until - ``amt`` bytes have been read from the connection or until the - connection is closed. - - :param amt: - How much of the content to read. The generator will return up to - much data per iteration, but may return less. This is particularly - likely when using compressed data. However, the empty string will - never be returned. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - """ - if self.chunked: - for line in self.read_chunked(amt, decode_content=decode_content): - yield line - else: - while not is_fp_closed(self._fp): - data = self.read(amt=amt, decode_content=decode_content) - - if data: - yield data - - @classmethod - def from_httplib(ResponseCls, r, **response_kw): - """ - Given an :class:`httplib.HTTPResponse` instance ``r``, return a - corresponding :class:`urllib3.response.HTTPResponse` object. - - Remaining parameters are passed to the HTTPResponse constructor, along - with ``original_response=r``. - """ - headers = r.msg - - if not isinstance(headers, HTTPHeaderDict): - if PY3: # Python 3 - headers = HTTPHeaderDict(headers.items()) - else: # Python 2 - headers = HTTPHeaderDict.from_httplib(headers) - - # HTTPResponse objects in Python 3 don't have a .strict attribute - strict = getattr(r, 'strict', 0) - resp = ResponseCls(body=r, - headers=headers, - status=r.status, - version=r.version, - reason=r.reason, - strict=strict, - original_response=r, - **response_kw) - return resp - - # Backwards-compatibility methods for httplib.HTTPResponse - def getheaders(self): - return self.headers - - def getheader(self, name, default=None): - return self.headers.get(name, default) - - # Overrides from io.IOBase - def close(self): - if not self.closed: - self._fp.close() - - if self._connection: - self._connection.close() - - @property - def closed(self): - if self._fp is None: - return True - elif hasattr(self._fp, 'closed'): - return self._fp.closed - elif hasattr(self._fp, 'isclosed'): # Python 2 - return self._fp.isclosed() - else: - return True - - def fileno(self): - if self._fp is None: - raise IOError("HTTPResponse has no file to get a fileno from") - elif hasattr(self._fp, "fileno"): - return self._fp.fileno() - else: - raise IOError("The file-like object this HTTPResponse is wrapped " - "around has no file descriptor") - - def flush(self): - if self._fp is not None and hasattr(self._fp, 'flush'): - return self._fp.flush() - - def readable(self): - # This method is required for `io` module compatibility. - return True - - def readinto(self, b): - # This method is required for `io` module compatibility. - temp = self.read(len(b)) - if len(temp) == 0: - return 0 - else: - b[:len(temp)] = temp - return len(temp) - - def _update_chunk_length(self): - # First, we'll figure out length of a chunk and then - # we'll try to read it from socket. - if self.chunk_left is not None: - return - line = self._fp.fp.readline() - line = line.split(b';', 1)[0] - try: - self.chunk_left = int(line, 16) - except ValueError: - # Invalid chunked protocol response, abort. - self.close() - raise httplib.IncompleteRead(line) - - def _handle_chunk(self, amt): - returned_chunk = None - if amt is None: - chunk = self._fp._safe_read(self.chunk_left) - returned_chunk = chunk - self._fp._safe_read(2) # Toss the CRLF at the end of the chunk. - self.chunk_left = None - elif amt < self.chunk_left: - value = self._fp._safe_read(amt) - self.chunk_left = self.chunk_left - amt - returned_chunk = value - elif amt == self.chunk_left: - value = self._fp._safe_read(amt) - self._fp._safe_read(2) # Toss the CRLF at the end of the chunk. - self.chunk_left = None - returned_chunk = value - else: # amt > self.chunk_left - returned_chunk = self._fp._safe_read(self.chunk_left) - self._fp._safe_read(2) # Toss the CRLF at the end of the chunk. - self.chunk_left = None - return returned_chunk - - def read_chunked(self, amt=None, decode_content=None): - """ - Similar to :meth:`HTTPResponse.read`, but with an additional - parameter: ``decode_content``. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - """ - self._init_decoder() - # FIXME: Rewrite this method and make it a class with a better structured logic. - if not self.chunked: - raise ResponseNotChunked( - "Response is not chunked. " - "Header 'transfer-encoding: chunked' is missing.") - - # Don't bother reading the body of a HEAD request. - if self._original_response and is_response_to_head(self._original_response): - self._original_response.close() - return - - with self._error_catcher(): - while True: - self._update_chunk_length() - if self.chunk_left == 0: - break - chunk = self._handle_chunk(amt) - decoded = self._decode(chunk, decode_content=decode_content, - flush_decoder=False) - if decoded: - yield decoded - - if decode_content: - # On CPython and PyPy, we should never need to flush the - # decoder. However, on Jython we *might* need to, so - # lets defensively do it anyway. - decoded = self._flush_decoder() - if decoded: # Platform-specific: Jython. - yield decoded - - # Chunk content ends with \r\n: discard it. - while True: - line = self._fp.fp.readline() - if not line: - # Some sites may not end with '\r\n'. - break - if line == b'\r\n': - break - - # We read everything; close the "file". - if self._original_response: - self._original_response.close() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py deleted file mode 100644 index 4778cf99..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py +++ /dev/null @@ -1,46 +0,0 @@ -from __future__ import absolute_import -# For backwards compatibility, provide imports that used to be here. -from .connection import is_connection_dropped -from .request import make_headers -from .response import is_fp_closed -from .ssl_ import ( - SSLContext, - HAS_SNI, - IS_PYOPENSSL, - assert_fingerprint, - resolve_cert_reqs, - resolve_ssl_version, - ssl_wrap_socket, -) -from .timeout import ( - current_time, - Timeout, -) - -from .retry import Retry -from .url import ( - get_host, - parse_url, - split_first, - Url, -) - -__all__ = ( - 'HAS_SNI', - 'IS_PYOPENSSL', - 'SSLContext', - 'Retry', - 'Timeout', - 'Url', - 'assert_fingerprint', - 'current_time', - 'is_connection_dropped', - 'is_fp_closed', - 'get_host', - 'parse_url', - 'make_headers', - 'resolve_cert_reqs', - 'resolve_ssl_version', - 'split_first', - 'ssl_wrap_socket', -) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 18b645dd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc deleted file mode 100644 index f3013bb0..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-36.pyc deleted file mode 100644 index 8dd28b45..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc deleted file mode 100644 index 4ca54c6d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc deleted file mode 100644 index ce09e660..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc deleted file mode 100644 index 5323f859..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/timeout.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/timeout.cpython-36.pyc deleted file mode 100644 index 231bc3fb..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/timeout.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc deleted file mode 100644 index 936b2926..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py deleted file mode 100644 index 5e761352..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py +++ /dev/null @@ -1,144 +0,0 @@ -from __future__ import absolute_import -import socket -try: - from select import poll, POLLIN -except ImportError: # `poll` doesn't exist on OSX and other platforms - poll = False - try: - from select import select - except ImportError: # `select` doesn't exist on AppEngine. - select = False - - -def is_connection_dropped(conn): # Platform-specific - """ - Returns True if the connection is dropped and should be closed. - - :param conn: - :class:`httplib.HTTPConnection` object. - - Note: For platforms like AppEngine, this will always return ``False`` to - let the platform handle connection recycling transparently for us. - """ - sock = getattr(conn, 'sock', False) - if sock is False: # Platform-specific: AppEngine - return False - if sock is None: # Connection already closed (such as by httplib). - return True - - if not poll: - if not select: # Platform-specific: AppEngine - return False - - try: - return select([sock], [], [], 0.0)[0] - except socket.error: - return True - - # This version is better on platforms that support it. - p = poll() - p.register(sock, POLLIN) - for (fno, ev) in p.poll(0.0): - if fno == sock.fileno(): - # Either data is buffered (bad), or the connection is dropped. - return True - - -# This function is copied from socket.py in the Python 2.7 standard -# library test suite. Added to its signature is only `socket_options`. -# One additional modification is that we avoid binding to IPv6 servers -# discovered in DNS if the system doesn't have IPv6 functionality. -def create_connection(address, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, - source_address=None, socket_options=None): - """Connect to *address* and return the socket object. - - Convenience function. Connect to *address* (a 2-tuple ``(host, - port)``) and return the socket object. Passing the optional - *timeout* parameter will set the timeout on the socket instance - before attempting to connect. If no *timeout* is supplied, the - global default timeout setting returned by :func:`getdefaulttimeout` - is used. If *source_address* is set it must be a tuple of (host, port) - for the socket to bind as a source address before making the connection. - An host of '' or port 0 tells the OS to use the default. - """ - - host, port = address - if host.startswith('['): - host = host.strip('[]') - err = None - - # Using the value from allowed_gai_family() in the context of getaddrinfo lets - # us select whether to work with IPv4 DNS records, IPv6 records, or both. - # The original create_connection function always returns all records. - family = allowed_gai_family() - - for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): - af, socktype, proto, canonname, sa = res - sock = None - try: - sock = socket.socket(af, socktype, proto) - - # If provided, set socket level options before connecting. - _set_socket_options(sock, socket_options) - - if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT: - sock.settimeout(timeout) - if source_address: - sock.bind(source_address) - sock.connect(sa) - return sock - - except socket.error as e: - err = e - if sock is not None: - sock.close() - sock = None - - if err is not None: - raise err - - raise socket.error("getaddrinfo returns an empty list") - - -def _set_socket_options(sock, options): - if options is None: - return - - for opt in options: - sock.setsockopt(*opt) - - -def allowed_gai_family(): - """This function is designed to work in the context of - getaddrinfo, where family=socket.AF_UNSPEC is the default and - will perform a DNS search for both IPv6 and IPv4 records.""" - - family = socket.AF_INET - if HAS_IPV6: - family = socket.AF_UNSPEC - return family - - -def _has_ipv6(host): - """ Returns True if the system can bind an IPv6 address. """ - sock = None - has_ipv6 = False - - if socket.has_ipv6: - # has_ipv6 returns true if cPython was compiled with IPv6 support. - # It does not tell us if the system has IPv6 support enabled. To - # determine that we must bind to an IPv6 address. - # https://github.com/shazow/urllib3/pull/611 - # https://bugs.python.org/issue658327 - try: - sock = socket.socket(socket.AF_INET6) - sock.bind((host, 0)) - has_ipv6 = True - except Exception: - pass - - if sock: - sock.close() - return has_ipv6 - -HAS_IPV6 = _has_ipv6('::1') diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py deleted file mode 100644 index 73779315..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py +++ /dev/null @@ -1,72 +0,0 @@ -from __future__ import absolute_import -from base64 import b64encode - -from ..packages.six import b - -ACCEPT_ENCODING = 'gzip,deflate' - - -def make_headers(keep_alive=None, accept_encoding=None, user_agent=None, - basic_auth=None, proxy_basic_auth=None, disable_cache=None): - """ - Shortcuts for generating request headers. - - :param keep_alive: - If ``True``, adds 'connection: keep-alive' header. - - :param accept_encoding: - Can be a boolean, list, or string. - ``True`` translates to 'gzip,deflate'. - List will get joined by comma. - String will be used as provided. - - :param user_agent: - String representing the user-agent you want, such as - "python-urllib3/0.6" - - :param basic_auth: - Colon-separated username:password string for 'authorization: basic ...' - auth header. - - :param proxy_basic_auth: - Colon-separated username:password string for 'proxy-authorization: basic ...' - auth header. - - :param disable_cache: - If ``True``, adds 'cache-control: no-cache' header. - - Example:: - - >>> make_headers(keep_alive=True, user_agent="Batman/1.0") - {'connection': 'keep-alive', 'user-agent': 'Batman/1.0'} - >>> make_headers(accept_encoding=True) - {'accept-encoding': 'gzip,deflate'} - """ - headers = {} - if accept_encoding: - if isinstance(accept_encoding, str): - pass - elif isinstance(accept_encoding, list): - accept_encoding = ','.join(accept_encoding) - else: - accept_encoding = ACCEPT_ENCODING - headers['accept-encoding'] = accept_encoding - - if user_agent: - headers['user-agent'] = user_agent - - if keep_alive: - headers['connection'] = 'keep-alive' - - if basic_auth: - headers['authorization'] = 'Basic ' + \ - b64encode(b(basic_auth)).decode('utf-8') - - if proxy_basic_auth: - headers['proxy-authorization'] = 'Basic ' + \ - b64encode(b(proxy_basic_auth)).decode('utf-8') - - if disable_cache: - headers['cache-control'] = 'no-cache' - - return headers diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py deleted file mode 100644 index 0b5c75c1..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py +++ /dev/null @@ -1,74 +0,0 @@ -from __future__ import absolute_import -from ..packages.six.moves import http_client as httplib - -from ..exceptions import HeaderParsingError - - -def is_fp_closed(obj): - """ - Checks whether a given file-like object is closed. - - :param obj: - The file-like object to check. - """ - - try: - # Check via the official file-like-object way. - return obj.closed - except AttributeError: - pass - - try: - # Check if the object is a container for another file-like object that - # gets released on exhaustion (e.g. HTTPResponse). - return obj.fp is None - except AttributeError: - pass - - raise ValueError("Unable to determine whether fp is closed.") - - -def assert_header_parsing(headers): - """ - Asserts whether all headers have been successfully parsed. - Extracts encountered errors from the result of parsing headers. - - Only works on Python 3. - - :param headers: Headers to verify. - :type headers: `httplib.HTTPMessage`. - - :raises urllib3.exceptions.HeaderParsingError: - If parsing errors are found. - """ - - # This will fail silently if we pass in the wrong kind of parameter. - # To make debugging easier add an explicit check. - if not isinstance(headers, httplib.HTTPMessage): - raise TypeError('expected httplib.Message, got {0}.'.format( - type(headers))) - - defects = getattr(headers, 'defects', None) - get_payload = getattr(headers, 'get_payload', None) - - unparsed_data = None - if get_payload: # Platform-specific: Python 3. - unparsed_data = get_payload() - - if defects or unparsed_data: - raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data) - - -def is_response_to_head(response): - """ - Checks whether the request of a response has been a HEAD-request. - Handles the quirks of AppEngine. - - :param conn: - :type conn: :class:`httplib.HTTPResponse` - """ - # FIXME: Can we do this somehow without accessing private httplib _method? - method = response._method - if isinstance(method, int): # Platform-specific: Appengine - return method == 3 - return method.upper() == 'HEAD' diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.py deleted file mode 100644 index d379833c..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.py +++ /dev/null @@ -1,300 +0,0 @@ -from __future__ import absolute_import -import time -import logging - -from ..exceptions import ( - ConnectTimeoutError, - MaxRetryError, - ProtocolError, - ReadTimeoutError, - ResponseError, -) -from ..packages import six - - -log = logging.getLogger(__name__) - - -class Retry(object): - """ Retry configuration. - - Each retry attempt will create a new Retry object with updated values, so - they can be safely reused. - - Retries can be defined as a default for a pool:: - - retries = Retry(connect=5, read=2, redirect=5) - http = PoolManager(retries=retries) - response = http.request('GET', 'http://example.com/') - - Or per-request (which overrides the default for the pool):: - - response = http.request('GET', 'http://example.com/', retries=Retry(10)) - - Retries can be disabled by passing ``False``:: - - response = http.request('GET', 'http://example.com/', retries=False) - - Errors will be wrapped in :class:`~urllib3.exceptions.MaxRetryError` unless - retries are disabled, in which case the causing exception will be raised. - - :param int total: - Total number of retries to allow. Takes precedence over other counts. - - Set to ``None`` to remove this constraint and fall back on other - counts. It's a good idea to set this to some sensibly-high value to - account for unexpected edge cases and avoid infinite retry loops. - - Set to ``0`` to fail on the first retry. - - Set to ``False`` to disable and imply ``raise_on_redirect=False``. - - :param int connect: - How many connection-related errors to retry on. - - These are errors raised before the request is sent to the remote server, - which we assume has not triggered the server to process the request. - - Set to ``0`` to fail on the first retry of this type. - - :param int read: - How many times to retry on read errors. - - These errors are raised after the request was sent to the server, so the - request may have side-effects. - - Set to ``0`` to fail on the first retry of this type. - - :param int redirect: - How many redirects to perform. Limit this to avoid infinite redirect - loops. - - A redirect is a HTTP response with a status code 301, 302, 303, 307 or - 308. - - Set to ``0`` to fail on the first retry of this type. - - Set to ``False`` to disable and imply ``raise_on_redirect=False``. - - :param iterable method_whitelist: - Set of uppercased HTTP method verbs that we should retry on. - - By default, we only retry on methods which are considered to be - idempotent (multiple requests with the same parameters end with the - same state). See :attr:`Retry.DEFAULT_METHOD_WHITELIST`. - - Set to a ``False`` value to retry on any verb. - - :param iterable status_forcelist: - A set of integer HTTP status codes that we should force a retry on. - A retry is initiated if the request method is in ``method_whitelist`` - and the response status code is in ``status_forcelist``. - - By default, this is disabled with ``None``. - - :param float backoff_factor: - A backoff factor to apply between attempts after the second try - (most errors are resolved immediately by a second try without a - delay). urllib3 will sleep for:: - - {backoff factor} * (2 ^ ({number of total retries} - 1)) - - seconds. If the backoff_factor is 0.1, then :func:`.sleep` will sleep - for [0.0s, 0.2s, 0.4s, ...] between retries. It will never be longer - than :attr:`Retry.BACKOFF_MAX`. - - By default, backoff is disabled (set to 0). - - :param bool raise_on_redirect: Whether, if the number of redirects is - exhausted, to raise a MaxRetryError, or to return a response with a - response code in the 3xx range. - - :param bool raise_on_status: Similar meaning to ``raise_on_redirect``: - whether we should raise an exception, or return a response, - if status falls in ``status_forcelist`` range and retries have - been exhausted. - """ - - DEFAULT_METHOD_WHITELIST = frozenset([ - 'HEAD', 'GET', 'PUT', 'DELETE', 'OPTIONS', 'TRACE']) - - #: Maximum backoff time. - BACKOFF_MAX = 120 - - def __init__(self, total=10, connect=None, read=None, redirect=None, - method_whitelist=DEFAULT_METHOD_WHITELIST, status_forcelist=None, - backoff_factor=0, raise_on_redirect=True, raise_on_status=True, - _observed_errors=0): - - self.total = total - self.connect = connect - self.read = read - - if redirect is False or total is False: - redirect = 0 - raise_on_redirect = False - - self.redirect = redirect - self.status_forcelist = status_forcelist or set() - self.method_whitelist = method_whitelist - self.backoff_factor = backoff_factor - self.raise_on_redirect = raise_on_redirect - self.raise_on_status = raise_on_status - self._observed_errors = _observed_errors # TODO: use .history instead? - - def new(self, **kw): - params = dict( - total=self.total, - connect=self.connect, read=self.read, redirect=self.redirect, - method_whitelist=self.method_whitelist, - status_forcelist=self.status_forcelist, - backoff_factor=self.backoff_factor, - raise_on_redirect=self.raise_on_redirect, - raise_on_status=self.raise_on_status, - _observed_errors=self._observed_errors, - ) - params.update(kw) - return type(self)(**params) - - @classmethod - def from_int(cls, retries, redirect=True, default=None): - """ Backwards-compatibility for the old retries format.""" - if retries is None: - retries = default if default is not None else cls.DEFAULT - - if isinstance(retries, Retry): - return retries - - redirect = bool(redirect) and None - new_retries = cls(retries, redirect=redirect) - log.debug("Converted retries value: %r -> %r", retries, new_retries) - return new_retries - - def get_backoff_time(self): - """ Formula for computing the current backoff - - :rtype: float - """ - if self._observed_errors <= 1: - return 0 - - backoff_value = self.backoff_factor * (2 ** (self._observed_errors - 1)) - return min(self.BACKOFF_MAX, backoff_value) - - def sleep(self): - """ Sleep between retry attempts using an exponential backoff. - - By default, the backoff factor is 0 and this method will return - immediately. - """ - backoff = self.get_backoff_time() - if backoff <= 0: - return - time.sleep(backoff) - - def _is_connection_error(self, err): - """ Errors when we're fairly sure that the server did not receive the - request, so it should be safe to retry. - """ - return isinstance(err, ConnectTimeoutError) - - def _is_read_error(self, err): - """ Errors that occur after the request has been started, so we should - assume that the server began processing it. - """ - return isinstance(err, (ReadTimeoutError, ProtocolError)) - - def is_forced_retry(self, method, status_code): - """ Is this method/status code retryable? (Based on method/codes whitelists) - """ - if self.method_whitelist and method.upper() not in self.method_whitelist: - return False - - return self.status_forcelist and status_code in self.status_forcelist - - def is_exhausted(self): - """ Are we out of retries? """ - retry_counts = (self.total, self.connect, self.read, self.redirect) - retry_counts = list(filter(None, retry_counts)) - if not retry_counts: - return False - - return min(retry_counts) < 0 - - def increment(self, method=None, url=None, response=None, error=None, - _pool=None, _stacktrace=None): - """ Return a new Retry object with incremented retry counters. - - :param response: A response object, or None, if the server did not - return a response. - :type response: :class:`~urllib3.response.HTTPResponse` - :param Exception error: An error encountered during the request, or - None if the response was received successfully. - - :return: A new ``Retry`` object. - """ - if self.total is False and error: - # Disabled, indicate to re-raise the error. - raise six.reraise(type(error), error, _stacktrace) - - total = self.total - if total is not None: - total -= 1 - - _observed_errors = self._observed_errors - connect = self.connect - read = self.read - redirect = self.redirect - cause = 'unknown' - - if error and self._is_connection_error(error): - # Connect retry? - if connect is False: - raise six.reraise(type(error), error, _stacktrace) - elif connect is not None: - connect -= 1 - _observed_errors += 1 - - elif error and self._is_read_error(error): - # Read retry? - if read is False: - raise six.reraise(type(error), error, _stacktrace) - elif read is not None: - read -= 1 - _observed_errors += 1 - - elif response and response.get_redirect_location(): - # Redirect retry? - if redirect is not None: - redirect -= 1 - cause = 'too many redirects' - - else: - # Incrementing because of a server error like a 500 in - # status_forcelist and a the given method is in the whitelist - _observed_errors += 1 - cause = ResponseError.GENERIC_ERROR - if response and response.status: - cause = ResponseError.SPECIFIC_ERROR.format( - status_code=response.status) - - new_retry = self.new( - total=total, - connect=connect, read=read, redirect=redirect, - _observed_errors=_observed_errors) - - if new_retry.is_exhausted(): - raise MaxRetryError(_pool, url, error or ResponseError(cause)) - - log.debug("Incremented Retry for (url='%s'): %r", url, new_retry) - - return new_retry - - def __repr__(self): - return ('{cls.__name__}(total={self.total}, connect={self.connect}, ' - 'read={self.read}, redirect={self.redirect})').format( - cls=type(self), self=self) - - -# For backwards compatibility (equivalent to pre-v1.9): -Retry.DEFAULT = Retry(3) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py deleted file mode 100644 index 4a64d7ef..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py +++ /dev/null @@ -1,320 +0,0 @@ -from __future__ import absolute_import -import errno -import warnings -import hmac - -from binascii import hexlify, unhexlify -from hashlib import md5, sha1, sha256 - -from ..exceptions import SSLError, InsecurePlatformWarning, SNIMissingWarning - - -SSLContext = None -HAS_SNI = False -create_default_context = None -IS_PYOPENSSL = False - -# Maps the length of a digest to a possible hash function producing this digest -HASHFUNC_MAP = { - 32: md5, - 40: sha1, - 64: sha256, -} - - -def _const_compare_digest_backport(a, b): - """ - Compare two digests of equal length in constant time. - - The digests must be of type str/bytes. - Returns True if the digests match, and False otherwise. - """ - result = abs(len(a) - len(b)) - for l, r in zip(bytearray(a), bytearray(b)): - result |= l ^ r - return result == 0 - - -_const_compare_digest = getattr(hmac, 'compare_digest', - _const_compare_digest_backport) - - -try: # Test for SSL features - import ssl - from ssl import wrap_socket, CERT_NONE, PROTOCOL_SSLv23 - from ssl import HAS_SNI # Has SNI? -except ImportError: - pass - - -try: - from ssl import OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_COMPRESSION -except ImportError: - OP_NO_SSLv2, OP_NO_SSLv3 = 0x1000000, 0x2000000 - OP_NO_COMPRESSION = 0x20000 - -# A secure default. -# Sources for more information on TLS ciphers: -# -# - https://wiki.mozilla.org/Security/Server_Side_TLS -# - https://www.ssllabs.com/projects/best-practices/index.html -# - https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ -# -# The general intent is: -# - Prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE), -# - prefer ECDHE over DHE for better performance, -# - prefer any AES-GCM over any AES-CBC for better performance and security, -# - use 3DES as fallback which is secure but slow, -# - disable NULL authentication, MD5 MACs and DSS for security reasons. -DEFAULT_CIPHERS = ( - 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:' - 'DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES:!aNULL:' - '!eNULL:!MD5' -) - -try: - from ssl import SSLContext # Modern SSL? -except ImportError: - import sys - - class SSLContext(object): # Platform-specific: Python 2 & 3.1 - supports_set_ciphers = ((2, 7) <= sys.version_info < (3,) or - (3, 2) <= sys.version_info) - - def __init__(self, protocol_version): - self.protocol = protocol_version - # Use default values from a real SSLContext - self.check_hostname = False - self.verify_mode = ssl.CERT_NONE - self.ca_certs = None - self.options = 0 - self.certfile = None - self.keyfile = None - self.ciphers = None - - def load_cert_chain(self, certfile, keyfile): - self.certfile = certfile - self.keyfile = keyfile - - def load_verify_locations(self, cafile=None, capath=None): - self.ca_certs = cafile - - if capath is not None: - raise SSLError("CA directories not supported in older Pythons") - - def set_ciphers(self, cipher_suite): - if not self.supports_set_ciphers: - raise TypeError( - 'Your version of Python does not support setting ' - 'a custom cipher suite. Please upgrade to Python ' - '2.7, 3.2, or later if you need this functionality.' - ) - self.ciphers = cipher_suite - - def wrap_socket(self, socket, server_hostname=None, server_side=False): - warnings.warn( - 'A true SSLContext object is not available. This prevents ' - 'urllib3 from configuring SSL appropriately and may cause ' - 'certain SSL connections to fail. You can upgrade to a newer ' - 'version of Python to solve this. For more information, see ' - 'https://urllib3.readthedocs.io/en/latest/security.html' - '#insecureplatformwarning.', - InsecurePlatformWarning - ) - kwargs = { - 'keyfile': self.keyfile, - 'certfile': self.certfile, - 'ca_certs': self.ca_certs, - 'cert_reqs': self.verify_mode, - 'ssl_version': self.protocol, - 'server_side': server_side, - } - if self.supports_set_ciphers: # Platform-specific: Python 2.7+ - return wrap_socket(socket, ciphers=self.ciphers, **kwargs) - else: # Platform-specific: Python 2.6 - return wrap_socket(socket, **kwargs) - - -def assert_fingerprint(cert, fingerprint): - """ - Checks if given fingerprint matches the supplied certificate. - - :param cert: - Certificate as bytes object. - :param fingerprint: - Fingerprint as string of hexdigits, can be interspersed by colons. - """ - - fingerprint = fingerprint.replace(':', '').lower() - digest_length = len(fingerprint) - hashfunc = HASHFUNC_MAP.get(digest_length) - if not hashfunc: - raise SSLError( - 'Fingerprint of invalid length: {0}'.format(fingerprint)) - - # We need encode() here for py32; works on py2 and p33. - fingerprint_bytes = unhexlify(fingerprint.encode()) - - cert_digest = hashfunc(cert).digest() - - if not _const_compare_digest(cert_digest, fingerprint_bytes): - raise SSLError('Fingerprints did not match. Expected "{0}", got "{1}".' - .format(fingerprint, hexlify(cert_digest))) - - -def resolve_cert_reqs(candidate): - """ - Resolves the argument to a numeric constant, which can be passed to - the wrap_socket function/method from the ssl module. - Defaults to :data:`ssl.CERT_NONE`. - If given a string it is assumed to be the name of the constant in the - :mod:`ssl` module or its abbrevation. - (So you can specify `REQUIRED` instead of `CERT_REQUIRED`. - If it's neither `None` nor a string we assume it is already the numeric - constant which can directly be passed to wrap_socket. - """ - if candidate is None: - return CERT_NONE - - if isinstance(candidate, str): - res = getattr(ssl, candidate, None) - if res is None: - res = getattr(ssl, 'CERT_' + candidate) - return res - - return candidate - - -def resolve_ssl_version(candidate): - """ - like resolve_cert_reqs - """ - if candidate is None: - return PROTOCOL_SSLv23 - - if isinstance(candidate, str): - res = getattr(ssl, candidate, None) - if res is None: - res = getattr(ssl, 'PROTOCOL_' + candidate) - return res - - return candidate - - -def create_urllib3_context(ssl_version=None, cert_reqs=None, - options=None, ciphers=None): - """All arguments have the same meaning as ``ssl_wrap_socket``. - - By default, this function does a lot of the same work that - ``ssl.create_default_context`` does on Python 3.4+. It: - - - Disables SSLv2, SSLv3, and compression - - Sets a restricted set of server ciphers - - If you wish to enable SSLv3, you can do:: - - from urllib3.util import ssl_ - context = ssl_.create_urllib3_context() - context.options &= ~ssl_.OP_NO_SSLv3 - - You can do the same to enable compression (substituting ``COMPRESSION`` - for ``SSLv3`` in the last line above). - - :param ssl_version: - The desired protocol version to use. This will default to - PROTOCOL_SSLv23 which will negotiate the highest protocol that both - the server and your installation of OpenSSL support. - :param cert_reqs: - Whether to require the certificate verification. This defaults to - ``ssl.CERT_REQUIRED``. - :param options: - Specific OpenSSL options. These default to ``ssl.OP_NO_SSLv2``, - ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION``. - :param ciphers: - Which cipher suites to allow the server to select. - :returns: - Constructed SSLContext object with specified options - :rtype: SSLContext - """ - context = SSLContext(ssl_version or ssl.PROTOCOL_SSLv23) - - # Setting the default here, as we may have no ssl module on import - cert_reqs = ssl.CERT_REQUIRED if cert_reqs is None else cert_reqs - - if options is None: - options = 0 - # SSLv2 is easily broken and is considered harmful and dangerous - options |= OP_NO_SSLv2 - # SSLv3 has several problems and is now dangerous - options |= OP_NO_SSLv3 - # Disable compression to prevent CRIME attacks for OpenSSL 1.0+ - # (issue #309) - options |= OP_NO_COMPRESSION - - context.options |= options - - if getattr(context, 'supports_set_ciphers', True): # Platform-specific: Python 2.6 - context.set_ciphers(ciphers or DEFAULT_CIPHERS) - - context.verify_mode = cert_reqs - if getattr(context, 'check_hostname', None) is not None: # Platform-specific: Python 3.2 - # We do our own verification, including fingerprints and alternative - # hostnames. So disable it here - context.check_hostname = False - return context - - -def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None, - ca_certs=None, server_hostname=None, - ssl_version=None, ciphers=None, ssl_context=None, - ca_cert_dir=None): - """ - All arguments except for server_hostname, ssl_context, and ca_cert_dir have - the same meaning as they do when using :func:`ssl.wrap_socket`. - - :param server_hostname: - When SNI is supported, the expected hostname of the certificate - :param ssl_context: - A pre-made :class:`SSLContext` object. If none is provided, one will - be created using :func:`create_urllib3_context`. - :param ciphers: - A string of ciphers we wish the client to support. This is not - supported on Python 2.6 as the ssl module does not support it. - :param ca_cert_dir: - A directory containing CA certificates in multiple separate files, as - supported by OpenSSL's -CApath flag or the capath argument to - SSLContext.load_verify_locations(). - """ - context = ssl_context - if context is None: - context = create_urllib3_context(ssl_version, cert_reqs, - ciphers=ciphers) - - if ca_certs or ca_cert_dir: - try: - context.load_verify_locations(ca_certs, ca_cert_dir) - except IOError as e: # Platform-specific: Python 2.6, 2.7, 3.2 - raise SSLError(e) - # Py33 raises FileNotFoundError which subclasses OSError - # These are not equivalent unless we check the errno attribute - except OSError as e: # Platform-specific: Python 3.3 and beyond - if e.errno == errno.ENOENT: - raise SSLError(e) - raise - - if certfile: - context.load_cert_chain(certfile, keyfile) - if HAS_SNI: # Platform-specific: OpenSSL with enabled SNI - return context.wrap_socket(sock, server_hostname=server_hostname) - - warnings.warn( - 'An HTTPS request has been made, but the SNI (Subject Name ' - 'Indication) extension to TLS is not available on this platform. ' - 'This may cause the server to present an incorrect TLS ' - 'certificate, which can cause validation failures. You can upgrade to ' - 'a newer version of Python to solve this. For more information, see ' - 'https://urllib3.readthedocs.io/en/latest/security.html' - '#snimissingwarning.', - SNIMissingWarning - ) - return context.wrap_socket(sock) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.py deleted file mode 100644 index ff62f476..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.py +++ /dev/null @@ -1,242 +0,0 @@ -from __future__ import absolute_import -# The default socket timeout, used by httplib to indicate that no timeout was -# specified by the user -from socket import _GLOBAL_DEFAULT_TIMEOUT -import time - -from ..exceptions import TimeoutStateError - -# A sentinel value to indicate that no timeout was specified by the user in -# urllib3 -_Default = object() - - -def current_time(): - """ - Retrieve the current time. This function is mocked out in unit testing. - """ - return time.time() - - -class Timeout(object): - """ Timeout configuration. - - Timeouts can be defined as a default for a pool:: - - timeout = Timeout(connect=2.0, read=7.0) - http = PoolManager(timeout=timeout) - response = http.request('GET', 'http://example.com/') - - Or per-request (which overrides the default for the pool):: - - response = http.request('GET', 'http://example.com/', timeout=Timeout(10)) - - Timeouts can be disabled by setting all the parameters to ``None``:: - - no_timeout = Timeout(connect=None, read=None) - response = http.request('GET', 'http://example.com/, timeout=no_timeout) - - - :param total: - This combines the connect and read timeouts into one; the read timeout - will be set to the time leftover from the connect attempt. In the - event that both a connect timeout and a total are specified, or a read - timeout and a total are specified, the shorter timeout will be applied. - - Defaults to None. - - :type total: integer, float, or None - - :param connect: - The maximum amount of time to wait for a connection attempt to a server - to succeed. Omitting the parameter will default the connect timeout to - the system default, probably `the global default timeout in socket.py - `_. - None will set an infinite timeout for connection attempts. - - :type connect: integer, float, or None - - :param read: - The maximum amount of time to wait between consecutive - read operations for a response from the server. Omitting - the parameter will default the read timeout to the system - default, probably `the global default timeout in socket.py - `_. - None will set an infinite timeout. - - :type read: integer, float, or None - - .. note:: - - Many factors can affect the total amount of time for urllib3 to return - an HTTP response. - - For example, Python's DNS resolver does not obey the timeout specified - on the socket. Other factors that can affect total request time include - high CPU load, high swap, the program running at a low priority level, - or other behaviors. - - In addition, the read and total timeouts only measure the time between - read operations on the socket connecting the client and the server, - not the total amount of time for the request to return a complete - response. For most requests, the timeout is raised because the server - has not sent the first byte in the specified time. This is not always - the case; if a server streams one byte every fifteen seconds, a timeout - of 20 seconds will not trigger, even though the request will take - several minutes to complete. - - If your goal is to cut off any request after a set amount of wall clock - time, consider having a second "watcher" thread to cut off a slow - request. - """ - - #: A sentinel object representing the default timeout value - DEFAULT_TIMEOUT = _GLOBAL_DEFAULT_TIMEOUT - - def __init__(self, total=None, connect=_Default, read=_Default): - self._connect = self._validate_timeout(connect, 'connect') - self._read = self._validate_timeout(read, 'read') - self.total = self._validate_timeout(total, 'total') - self._start_connect = None - - def __str__(self): - return '%s(connect=%r, read=%r, total=%r)' % ( - type(self).__name__, self._connect, self._read, self.total) - - @classmethod - def _validate_timeout(cls, value, name): - """ Check that a timeout attribute is valid. - - :param value: The timeout value to validate - :param name: The name of the timeout attribute to validate. This is - used to specify in error messages. - :return: The validated and casted version of the given value. - :raises ValueError: If the type is not an integer or a float, or if it - is a numeric value less than zero. - """ - if value is _Default: - return cls.DEFAULT_TIMEOUT - - if value is None or value is cls.DEFAULT_TIMEOUT: - return value - - try: - float(value) - except (TypeError, ValueError): - raise ValueError("Timeout value %s was %s, but it must be an " - "int or float." % (name, value)) - - try: - if value < 0: - raise ValueError("Attempted to set %s timeout to %s, but the " - "timeout cannot be set to a value less " - "than 0." % (name, value)) - except TypeError: # Python 3 - raise ValueError("Timeout value %s was %s, but it must be an " - "int or float." % (name, value)) - - return value - - @classmethod - def from_float(cls, timeout): - """ Create a new Timeout from a legacy timeout value. - - The timeout value used by httplib.py sets the same timeout on the - connect(), and recv() socket requests. This creates a :class:`Timeout` - object that sets the individual timeouts to the ``timeout`` value - passed to this function. - - :param timeout: The legacy timeout value. - :type timeout: integer, float, sentinel default object, or None - :return: Timeout object - :rtype: :class:`Timeout` - """ - return Timeout(read=timeout, connect=timeout) - - def clone(self): - """ Create a copy of the timeout object - - Timeout properties are stored per-pool but each request needs a fresh - Timeout object to ensure each one has its own start/stop configured. - - :return: a copy of the timeout object - :rtype: :class:`Timeout` - """ - # We can't use copy.deepcopy because that will also create a new object - # for _GLOBAL_DEFAULT_TIMEOUT, which socket.py uses as a sentinel to - # detect the user default. - return Timeout(connect=self._connect, read=self._read, - total=self.total) - - def start_connect(self): - """ Start the timeout clock, used during a connect() attempt - - :raises urllib3.exceptions.TimeoutStateError: if you attempt - to start a timer that has been started already. - """ - if self._start_connect is not None: - raise TimeoutStateError("Timeout timer has already been started.") - self._start_connect = current_time() - return self._start_connect - - def get_connect_duration(self): - """ Gets the time elapsed since the call to :meth:`start_connect`. - - :return: Elapsed time. - :rtype: float - :raises urllib3.exceptions.TimeoutStateError: if you attempt - to get duration for a timer that hasn't been started. - """ - if self._start_connect is None: - raise TimeoutStateError("Can't get connect duration for timer " - "that has not started.") - return current_time() - self._start_connect - - @property - def connect_timeout(self): - """ Get the value to use when setting a connection timeout. - - This will be a positive float or integer, the value None - (never timeout), or the default system timeout. - - :return: Connect timeout. - :rtype: int, float, :attr:`Timeout.DEFAULT_TIMEOUT` or None - """ - if self.total is None: - return self._connect - - if self._connect is None or self._connect is self.DEFAULT_TIMEOUT: - return self.total - - return min(self._connect, self.total) - - @property - def read_timeout(self): - """ Get the value for the read timeout. - - This assumes some time has elapsed in the connection timeout and - computes the read timeout appropriately. - - If self.total is set, the read timeout is dependent on the amount of - time taken by the connect timeout. If the connection time has not been - established, a :exc:`~urllib3.exceptions.TimeoutStateError` will be - raised. - - :return: Value to use for the read timeout. - :rtype: int, float, :attr:`Timeout.DEFAULT_TIMEOUT` or None - :raises urllib3.exceptions.TimeoutStateError: If :meth:`start_connect` - has not yet been called on this object. - """ - if (self.total is not None and - self.total is not self.DEFAULT_TIMEOUT and - self._read is not None and - self._read is not self.DEFAULT_TIMEOUT): - # In case the connect timeout has not yet been established. - if self._start_connect is None: - return self._read - return max(0, min(self.total - self.get_connect_duration(), - self._read)) - elif self.total is not None and self.total is not self.DEFAULT_TIMEOUT: - return max(0, self.total - self.get_connect_duration()) - else: - return self._read diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/url.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/url.py deleted file mode 100644 index e996204a..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/url.py +++ /dev/null @@ -1,217 +0,0 @@ -from __future__ import absolute_import -from collections import namedtuple - -from ..exceptions import LocationParseError - - -url_attrs = ['scheme', 'auth', 'host', 'port', 'path', 'query', 'fragment'] - - -class Url(namedtuple('Url', url_attrs)): - """ - Datastructure for representing an HTTP URL. Used as a return value for - :func:`parse_url`. - """ - slots = () - - def __new__(cls, scheme=None, auth=None, host=None, port=None, path=None, - query=None, fragment=None): - if path and not path.startswith('/'): - path = '/' + path - return super(Url, cls).__new__(cls, scheme, auth, host, port, path, - query, fragment) - - @property - def hostname(self): - """For backwards-compatibility with urlparse. We're nice like that.""" - return self.host - - @property - def request_uri(self): - """Absolute path including the query string.""" - uri = self.path or '/' - - if self.query is not None: - uri += '?' + self.query - - return uri - - @property - def netloc(self): - """Network location including host and port""" - if self.port: - return '%s:%d' % (self.host, self.port) - return self.host - - @property - def url(self): - """ - Convert self into a url - - This function should more or less round-trip with :func:`.parse_url`. The - returned url may not be exactly the same as the url inputted to - :func:`.parse_url`, but it should be equivalent by the RFC (e.g., urls - with a blank port will have : removed). - - Example: :: - - >>> U = parse_url('http://google.com/mail/') - >>> U.url - 'http://google.com/mail/' - >>> Url('http', 'username:password', 'host.com', 80, - ... '/path', 'query', 'fragment').url - 'http://username:password@host.com:80/path?query#fragment' - """ - scheme, auth, host, port, path, query, fragment = self - url = '' - - # We use "is not None" we want things to happen with empty strings (or 0 port) - if scheme is not None: - url += scheme + '://' - if auth is not None: - url += auth + '@' - if host is not None: - url += host - if port is not None: - url += ':' + str(port) - if path is not None: - url += path - if query is not None: - url += '?' + query - if fragment is not None: - url += '#' + fragment - - return url - - def __str__(self): - return self.url - - -def split_first(s, delims): - """ - Given a string and an iterable of delimiters, split on the first found - delimiter. Return two split parts and the matched delimiter. - - If not found, then the first part is the full input string. - - Example:: - - >>> split_first('foo/bar?baz', '?/=') - ('foo', 'bar?baz', '/') - >>> split_first('foo/bar?baz', '123') - ('foo/bar?baz', '', None) - - Scales linearly with number of delims. Not ideal for large number of delims. - """ - min_idx = None - min_delim = None - for d in delims: - idx = s.find(d) - if idx < 0: - continue - - if min_idx is None or idx < min_idx: - min_idx = idx - min_delim = d - - if min_idx is None or min_idx < 0: - return s, '', None - - return s[:min_idx], s[min_idx + 1:], min_delim - - -def parse_url(url): - """ - Given a url, return a parsed :class:`.Url` namedtuple. Best-effort is - performed to parse incomplete urls. Fields not provided will be None. - - Partly backwards-compatible with :mod:`urlparse`. - - Example:: - - >>> parse_url('http://google.com/mail/') - Url(scheme='http', host='google.com', port=None, path='/mail/', ...) - >>> parse_url('google.com:80') - Url(scheme=None, host='google.com', port=80, path=None, ...) - >>> parse_url('/foo?bar') - Url(scheme=None, host=None, port=None, path='/foo', query='bar', ...) - """ - - # While this code has overlap with stdlib's urlparse, it is much - # simplified for our needs and less annoying. - # Additionally, this implementations does silly things to be optimal - # on CPython. - - if not url: - # Empty - return Url() - - scheme = None - auth = None - host = None - port = None - path = None - fragment = None - query = None - - # Scheme - if '://' in url: - scheme, url = url.split('://', 1) - - # Find the earliest Authority Terminator - # (http://tools.ietf.org/html/rfc3986#section-3.2) - url, path_, delim = split_first(url, ['/', '?', '#']) - - if delim: - # Reassemble the path - path = delim + path_ - - # Auth - if '@' in url: - # Last '@' denotes end of auth part - auth, url = url.rsplit('@', 1) - - # IPv6 - if url and url[0] == '[': - host, url = url.split(']', 1) - host += ']' - - # Port - if ':' in url: - _host, port = url.split(':', 1) - - if not host: - host = _host - - if port: - # If given, ports must be integers. - if not port.isdigit(): - raise LocationParseError(url) - port = int(port) - else: - # Blank ports are cool, too. (rfc3986#section-3.2.3) - port = None - - elif not host and url: - host = url - - if not path: - return Url(scheme, auth, host, port, path, query, fragment) - - # Fragment - if '#' in path: - path, fragment = path.split('#', 1) - - # Query - if '?' in path: - path, query = path.split('?', 1) - - return Url(scheme, auth, host, port, path, query, fragment) - - -def get_host(url): - """ - Deprecated. Use :func:`.parse_url` instead. - """ - p = parse_url(url) - return p.scheme or 'http', p.hostname, p.port diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py deleted file mode 100644 index bcbcc880..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py +++ /dev/null @@ -1,712 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -requests.session -~~~~~~~~~~~~~~~~ - -This module provides a Session object to manage and persist settings across -requests (cookies, auth, proxies). -""" -import os -from collections import Mapping -from datetime import datetime - -from .auth import _basic_auth_str -from .compat import cookielib, OrderedDict, urljoin, urlparse -from .cookies import ( - cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar, merge_cookies) -from .models import Request, PreparedRequest, DEFAULT_REDIRECT_LIMIT -from .hooks import default_hooks, dispatch_hook -from .utils import to_key_val_list, default_headers, to_native_string -from .exceptions import ( - TooManyRedirects, InvalidSchema, ChunkedEncodingError, ContentDecodingError) -from .packages.urllib3._collections import RecentlyUsedContainer -from .structures import CaseInsensitiveDict - -from .adapters import HTTPAdapter - -from .utils import ( - requote_uri, get_environ_proxies, get_netrc_auth, should_bypass_proxies, - get_auth_from_url -) - -from .status_codes import codes - -# formerly defined here, reexposed here for backward compatibility -from .models import REDIRECT_STATI - -REDIRECT_CACHE_SIZE = 1000 - - -def merge_setting(request_setting, session_setting, dict_class=OrderedDict): - """Determines appropriate setting for a given request, taking into account - the explicit setting on that request, and the setting in the session. If a - setting is a dictionary, they will be merged together using `dict_class` - """ - - if session_setting is None: - return request_setting - - if request_setting is None: - return session_setting - - # Bypass if not a dictionary (e.g. verify) - if not ( - isinstance(session_setting, Mapping) and - isinstance(request_setting, Mapping) - ): - return request_setting - - merged_setting = dict_class(to_key_val_list(session_setting)) - merged_setting.update(to_key_val_list(request_setting)) - - # Remove keys that are set to None. Extract keys first to avoid altering - # the dictionary during iteration. - none_keys = [k for (k, v) in merged_setting.items() if v is None] - for key in none_keys: - del merged_setting[key] - - return merged_setting - - -def merge_hooks(request_hooks, session_hooks, dict_class=OrderedDict): - """Properly merges both requests and session hooks. - - This is necessary because when request_hooks == {'response': []}, the - merge breaks Session hooks entirely. - """ - if session_hooks is None or session_hooks.get('response') == []: - return request_hooks - - if request_hooks is None or request_hooks.get('response') == []: - return session_hooks - - return merge_setting(request_hooks, session_hooks, dict_class) - - -class SessionRedirectMixin(object): - def resolve_redirects(self, resp, req, stream=False, timeout=None, - verify=True, cert=None, proxies=None, **adapter_kwargs): - """Receives a Response. Returns a generator of Responses.""" - - i = 0 - hist = [] # keep track of history - - while resp.is_redirect: - prepared_request = req.copy() - - if i > 0: - # Update history and keep track of redirects. - hist.append(resp) - new_hist = list(hist) - resp.history = new_hist - - try: - resp.content # Consume socket so it can be released - except (ChunkedEncodingError, ContentDecodingError, RuntimeError): - resp.raw.read(decode_content=False) - - if i >= self.max_redirects: - raise TooManyRedirects('Exceeded %s redirects.' % self.max_redirects, response=resp) - - # Release the connection back into the pool. - resp.close() - - url = resp.headers['location'] - - # Handle redirection without scheme (see: RFC 1808 Section 4) - if url.startswith('//'): - parsed_rurl = urlparse(resp.url) - url = '%s:%s' % (parsed_rurl.scheme, url) - - # The scheme should be lower case... - parsed = urlparse(url) - url = parsed.geturl() - - # Facilitate relative 'location' headers, as allowed by RFC 7231. - # (e.g. '/path/to/resource' instead of 'http://domain.tld/path/to/resource') - # Compliant with RFC3986, we percent encode the url. - if not parsed.netloc: - url = urljoin(resp.url, requote_uri(url)) - else: - url = requote_uri(url) - - prepared_request.url = to_native_string(url) - # Cache the url, unless it redirects to itself. - if resp.is_permanent_redirect and req.url != prepared_request.url: - self.redirect_cache[req.url] = prepared_request.url - - self.rebuild_method(prepared_request, resp) - - # https://github.com/kennethreitz/requests/issues/1084 - if resp.status_code not in (codes.temporary_redirect, codes.permanent_redirect): - # https://github.com/kennethreitz/requests/issues/3490 - purged_headers = ('Content-Length', 'Content-Type', 'Transfer-Encoding') - for header in purged_headers: - prepared_request.headers.pop(header, None) - prepared_request.body = None - - headers = prepared_request.headers - try: - del headers['Cookie'] - except KeyError: - pass - - # Extract any cookies sent on the response to the cookiejar - # in the new request. Because we've mutated our copied prepared - # request, use the old one that we haven't yet touched. - extract_cookies_to_jar(prepared_request._cookies, req, resp.raw) - prepared_request._cookies.update(self.cookies) - prepared_request.prepare_cookies(prepared_request._cookies) - - # Rebuild auth and proxy information. - proxies = self.rebuild_proxies(prepared_request, proxies) - self.rebuild_auth(prepared_request, resp) - - # Override the original request. - req = prepared_request - - resp = self.send( - req, - stream=stream, - timeout=timeout, - verify=verify, - cert=cert, - proxies=proxies, - allow_redirects=False, - **adapter_kwargs - ) - - extract_cookies_to_jar(self.cookies, prepared_request, resp.raw) - - i += 1 - yield resp - - def rebuild_auth(self, prepared_request, response): - """When being redirected we may want to strip authentication from the - request to avoid leaking credentials. This method intelligently removes - and reapplies authentication where possible to avoid credential loss. - """ - headers = prepared_request.headers - url = prepared_request.url - - if 'Authorization' in headers: - # If we get redirected to a new host, we should strip out any - # authentication headers. - original_parsed = urlparse(response.request.url) - redirect_parsed = urlparse(url) - - if (original_parsed.hostname != redirect_parsed.hostname): - del headers['Authorization'] - - # .netrc might have more auth for us on our new host. - new_auth = get_netrc_auth(url) if self.trust_env else None - if new_auth is not None: - prepared_request.prepare_auth(new_auth) - - return - - def rebuild_proxies(self, prepared_request, proxies): - """This method re-evaluates the proxy configuration by considering the - environment variables. If we are redirected to a URL covered by - NO_PROXY, we strip the proxy configuration. Otherwise, we set missing - proxy keys for this URL (in case they were stripped by a previous - redirect). - - This method also replaces the Proxy-Authorization header where - necessary. - - :rtype: dict - """ - headers = prepared_request.headers - url = prepared_request.url - scheme = urlparse(url).scheme - new_proxies = proxies.copy() if proxies is not None else {} - - if self.trust_env and not should_bypass_proxies(url): - environ_proxies = get_environ_proxies(url) - - proxy = environ_proxies.get('all', environ_proxies.get(scheme)) - - if proxy: - new_proxies.setdefault(scheme, proxy) - - if 'Proxy-Authorization' in headers: - del headers['Proxy-Authorization'] - - try: - username, password = get_auth_from_url(new_proxies[scheme]) - except KeyError: - username, password = None, None - - if username and password: - headers['Proxy-Authorization'] = _basic_auth_str(username, password) - - return new_proxies - - def rebuild_method(self, prepared_request, response): - """When being redirected we may want to change the method of the request - based on certain specs or browser behavior. - """ - method = prepared_request.method - - # http://tools.ietf.org/html/rfc7231#section-6.4.4 - if response.status_code == codes.see_other and method != 'HEAD': - method = 'GET' - - # Do what the browsers do, despite standards... - # First, turn 302s into GETs. - if response.status_code == codes.found and method != 'HEAD': - method = 'GET' - - # Second, if a POST is responded to with a 301, turn it into a GET. - # This bizarre behaviour is explained in Issue 1704. - if response.status_code == codes.moved and method == 'POST': - method = 'GET' - - prepared_request.method = method - - -class Session(SessionRedirectMixin): - """A Requests session. - - Provides cookie persistence, connection-pooling, and configuration. - - Basic Usage:: - - >>> import requests - >>> s = requests.Session() - >>> s.get('http://httpbin.org/get') - - - Or as a context manager:: - - >>> with requests.Session() as s: - >>> s.get('http://httpbin.org/get') - - """ - - __attrs__ = [ - 'headers', 'cookies', 'auth', 'proxies', 'hooks', 'params', 'verify', - 'cert', 'prefetch', 'adapters', 'stream', 'trust_env', - 'max_redirects', - ] - - def __init__(self): - - #: A case-insensitive dictionary of headers to be sent on each - #: :class:`Request ` sent from this - #: :class:`Session `. - self.headers = default_headers() - - #: Default Authentication tuple or object to attach to - #: :class:`Request `. - self.auth = None - - #: Dictionary mapping protocol or protocol and host to the URL of the proxy - #: (e.g. {'http': 'foo.bar:3128', 'http://host.name': 'foo.bar:4012'}) to - #: be used on each :class:`Request `. - self.proxies = {} - - #: Event-handling hooks. - self.hooks = default_hooks() - - #: Dictionary of querystring data to attach to each - #: :class:`Request `. The dictionary values may be lists for - #: representing multivalued query parameters. - self.params = {} - - #: Stream response content default. - self.stream = False - - #: SSL Verification default. - self.verify = True - - #: SSL certificate default. - self.cert = None - - #: Maximum number of redirects allowed. If the request exceeds this - #: limit, a :class:`TooManyRedirects` exception is raised. - #: This defaults to requests.models.DEFAULT_REDIRECT_LIMIT, which is - #: 30. - self.max_redirects = DEFAULT_REDIRECT_LIMIT - - #: Trust environment settings for proxy configuration, default - #: authentication and similar. - self.trust_env = True - - #: A CookieJar containing all currently outstanding cookies set on this - #: session. By default it is a - #: :class:`RequestsCookieJar `, but - #: may be any other ``cookielib.CookieJar`` compatible object. - self.cookies = cookiejar_from_dict({}) - - # Default connection adapters. - self.adapters = OrderedDict() - self.mount('https://', HTTPAdapter()) - self.mount('http://', HTTPAdapter()) - - # Only store 1000 redirects to prevent using infinite memory - self.redirect_cache = RecentlyUsedContainer(REDIRECT_CACHE_SIZE) - - def __enter__(self): - return self - - def __exit__(self, *args): - self.close() - - def prepare_request(self, request): - """Constructs a :class:`PreparedRequest ` for - transmission and returns it. The :class:`PreparedRequest` has settings - merged from the :class:`Request ` instance and those of the - :class:`Session`. - - :param request: :class:`Request` instance to prepare with this - session's settings. - :rtype: requests.PreparedRequest - """ - cookies = request.cookies or {} - - # Bootstrap CookieJar. - if not isinstance(cookies, cookielib.CookieJar): - cookies = cookiejar_from_dict(cookies) - - # Merge with session cookies - merged_cookies = merge_cookies( - merge_cookies(RequestsCookieJar(), self.cookies), cookies) - - # Set environment's basic authentication if not explicitly set. - auth = request.auth - if self.trust_env and not auth and not self.auth: - auth = get_netrc_auth(request.url) - - p = PreparedRequest() - p.prepare( - method=request.method.upper(), - url=request.url, - files=request.files, - data=request.data, - json=request.json, - headers=merge_setting(request.headers, self.headers, dict_class=CaseInsensitiveDict), - params=merge_setting(request.params, self.params), - auth=merge_setting(auth, self.auth), - cookies=merged_cookies, - hooks=merge_hooks(request.hooks, self.hooks), - ) - return p - - def request(self, method, url, - params=None, - data=None, - headers=None, - cookies=None, - files=None, - auth=None, - timeout=None, - allow_redirects=True, - proxies=None, - hooks=None, - stream=None, - verify=None, - cert=None, - json=None): - """Constructs a :class:`Request `, prepares it and sends it. - Returns :class:`Response ` object. - - :param method: method for the new :class:`Request` object. - :param url: URL for the new :class:`Request` object. - :param params: (optional) Dictionary or bytes to be sent in the query - string for the :class:`Request`. - :param data: (optional) Dictionary, bytes, or file-like object to send - in the body of the :class:`Request`. - :param json: (optional) json to send in the body of the - :class:`Request`. - :param headers: (optional) Dictionary of HTTP Headers to send with the - :class:`Request`. - :param cookies: (optional) Dict or CookieJar object to send with the - :class:`Request`. - :param files: (optional) Dictionary of ``'filename': file-like-objects`` - for multipart encoding upload. - :param auth: (optional) Auth tuple or callable to enable - Basic/Digest/Custom HTTP Auth. - :param timeout: (optional) How long to wait for the server to send - data before giving up, as a float, or a :ref:`(connect timeout, - read timeout) ` tuple. - :type timeout: float or tuple - :param allow_redirects: (optional) Set to True by default. - :type allow_redirects: bool - :param proxies: (optional) Dictionary mapping protocol or protocol and - hostname to the URL of the proxy. - :param stream: (optional) whether to immediately download the response - content. Defaults to ``False``. - :param verify: (optional) whether the SSL cert will be verified. - A CA_BUNDLE path can also be provided. Defaults to ``True``. - :param cert: (optional) if String, path to ssl client cert file (.pem). - If Tuple, ('cert', 'key') pair. - :rtype: requests.Response - """ - # Create the Request. - req = Request( - method = method.upper(), - url = url, - headers = headers, - files = files, - data = data or {}, - json = json, - params = params or {}, - auth = auth, - cookies = cookies, - hooks = hooks, - ) - prep = self.prepare_request(req) - - proxies = proxies or {} - - settings = self.merge_environment_settings( - prep.url, proxies, stream, verify, cert - ) - - # Send the request. - send_kwargs = { - 'timeout': timeout, - 'allow_redirects': allow_redirects, - } - send_kwargs.update(settings) - resp = self.send(prep, **send_kwargs) - - return resp - - def get(self, url, **kwargs): - """Sends a GET request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - kwargs.setdefault('allow_redirects', True) - return self.request('GET', url, **kwargs) - - def options(self, url, **kwargs): - """Sends a OPTIONS request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - kwargs.setdefault('allow_redirects', True) - return self.request('OPTIONS', url, **kwargs) - - def head(self, url, **kwargs): - """Sends a HEAD request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - kwargs.setdefault('allow_redirects', False) - return self.request('HEAD', url, **kwargs) - - def post(self, url, data=None, json=None, **kwargs): - """Sends a POST request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. - :param json: (optional) json to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request('POST', url, data=data, json=json, **kwargs) - - def put(self, url, data=None, **kwargs): - """Sends a PUT request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request('PUT', url, data=data, **kwargs) - - def patch(self, url, data=None, **kwargs): - """Sends a PATCH request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request('PATCH', url, data=data, **kwargs) - - def delete(self, url, **kwargs): - """Sends a DELETE request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request('DELETE', url, **kwargs) - - def send(self, request, **kwargs): - """ - Send a given PreparedRequest. - - :rtype: requests.Response - """ - # Set defaults that the hooks can utilize to ensure they always have - # the correct parameters to reproduce the previous request. - kwargs.setdefault('stream', self.stream) - kwargs.setdefault('verify', self.verify) - kwargs.setdefault('cert', self.cert) - kwargs.setdefault('proxies', self.proxies) - - # It's possible that users might accidentally send a Request object. - # Guard against that specific failure case. - if isinstance(request, Request): - raise ValueError('You can only send PreparedRequests.') - - # Set up variables needed for resolve_redirects and dispatching of hooks - allow_redirects = kwargs.pop('allow_redirects', True) - stream = kwargs.get('stream') - hooks = request.hooks - - # Resolve URL in redirect cache, if available. - if allow_redirects: - checked_urls = set() - while request.url in self.redirect_cache: - checked_urls.add(request.url) - new_url = self.redirect_cache.get(request.url) - if new_url in checked_urls: - break - request.url = new_url - - # Get the appropriate adapter to use - adapter = self.get_adapter(url=request.url) - - # Start time (approximately) of the request - start = datetime.utcnow() - - # Send the request - r = adapter.send(request, **kwargs) - - # Total elapsed time of the request (approximately) - r.elapsed = datetime.utcnow() - start - - # Response manipulation hooks - r = dispatch_hook('response', hooks, r, **kwargs) - - # Persist cookies - if r.history: - - # If the hooks create history then we want those cookies too - for resp in r.history: - extract_cookies_to_jar(self.cookies, resp.request, resp.raw) - - extract_cookies_to_jar(self.cookies, request, r.raw) - - # Redirect resolving generator. - gen = self.resolve_redirects(r, request, **kwargs) - - # Resolve redirects if allowed. - history = [resp for resp in gen] if allow_redirects else [] - - # Shuffle things around if there's history. - if history: - # Insert the first (original) request at the start - history.insert(0, r) - # Get the last request made - r = history.pop() - r.history = history - - if not stream: - r.content - - return r - - def merge_environment_settings(self, url, proxies, stream, verify, cert): - """ - Check the environment and merge it with some settings. - - :rtype: dict - """ - # Gather clues from the surrounding environment. - if self.trust_env: - # Set environment's proxies. - env_proxies = get_environ_proxies(url) or {} - for (k, v) in env_proxies.items(): - proxies.setdefault(k, v) - - # Look for requests environment configuration and be compatible - # with cURL. - if verify is True or verify is None: - verify = (os.environ.get('REQUESTS_CA_BUNDLE') or - os.environ.get('CURL_CA_BUNDLE')) - - # Merge all the kwargs. - proxies = merge_setting(proxies, self.proxies) - stream = merge_setting(stream, self.stream) - verify = merge_setting(verify, self.verify) - cert = merge_setting(cert, self.cert) - - return {'verify': verify, 'proxies': proxies, 'stream': stream, - 'cert': cert} - - def get_adapter(self, url): - """ - Returns the appropriate connection adapter for the given URL. - - :rtype: requests.adapters.BaseAdapter - """ - for (prefix, adapter) in self.adapters.items(): - - if url.lower().startswith(prefix): - return adapter - - # Nothing matches :-/ - raise InvalidSchema("No connection adapters were found for '%s'" % url) - - def close(self): - """Closes all adapters and as such the session""" - for v in self.adapters.values(): - v.close() - - def mount(self, prefix, adapter): - """Registers a connection adapter to a prefix. - - Adapters are sorted in descending order by key length. - """ - self.adapters[prefix] = adapter - keys_to_move = [k for k in self.adapters if len(k) < len(prefix)] - - for key in keys_to_move: - self.adapters[key] = self.adapters.pop(key) - - def __getstate__(self): - state = dict((attr, getattr(self, attr, None)) for attr in self.__attrs__) - state['redirect_cache'] = dict(self.redirect_cache) - return state - - def __setstate__(self, state): - redirect_cache = state.pop('redirect_cache', {}) - for attr, value in state.items(): - setattr(self, attr, value) - - self.redirect_cache = RecentlyUsedContainer(REDIRECT_CACHE_SIZE) - for redirect, to in redirect_cache.items(): - self.redirect_cache[redirect] = to - - -def session(): - """ - Returns a :class:`Session` for context-management. - - :rtype: Session - """ - - return Session() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/status_codes.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/status_codes.py deleted file mode 100644 index db2986bb..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/status_codes.py +++ /dev/null @@ -1,91 +0,0 @@ -# -*- coding: utf-8 -*- - -from .structures import LookupDict - -_codes = { - - # Informational. - 100: ('continue',), - 101: ('switching_protocols',), - 102: ('processing',), - 103: ('checkpoint',), - 122: ('uri_too_long', 'request_uri_too_long'), - 200: ('ok', 'okay', 'all_ok', 'all_okay', 'all_good', '\\o/', '✓'), - 201: ('created',), - 202: ('accepted',), - 203: ('non_authoritative_info', 'non_authoritative_information'), - 204: ('no_content',), - 205: ('reset_content', 'reset'), - 206: ('partial_content', 'partial'), - 207: ('multi_status', 'multiple_status', 'multi_stati', 'multiple_stati'), - 208: ('already_reported',), - 226: ('im_used',), - - # Redirection. - 300: ('multiple_choices',), - 301: ('moved_permanently', 'moved', '\\o-'), - 302: ('found',), - 303: ('see_other', 'other'), - 304: ('not_modified',), - 305: ('use_proxy',), - 306: ('switch_proxy',), - 307: ('temporary_redirect', 'temporary_moved', 'temporary'), - 308: ('permanent_redirect', - 'resume_incomplete', 'resume',), # These 2 to be removed in 3.0 - - # Client Error. - 400: ('bad_request', 'bad'), - 401: ('unauthorized',), - 402: ('payment_required', 'payment'), - 403: ('forbidden',), - 404: ('not_found', '-o-'), - 405: ('method_not_allowed', 'not_allowed'), - 406: ('not_acceptable',), - 407: ('proxy_authentication_required', 'proxy_auth', 'proxy_authentication'), - 408: ('request_timeout', 'timeout'), - 409: ('conflict',), - 410: ('gone',), - 411: ('length_required',), - 412: ('precondition_failed', 'precondition'), - 413: ('request_entity_too_large',), - 414: ('request_uri_too_large',), - 415: ('unsupported_media_type', 'unsupported_media', 'media_type'), - 416: ('requested_range_not_satisfiable', 'requested_range', 'range_not_satisfiable'), - 417: ('expectation_failed',), - 418: ('im_a_teapot', 'teapot', 'i_am_a_teapot'), - 421: ('misdirected_request',), - 422: ('unprocessable_entity', 'unprocessable'), - 423: ('locked',), - 424: ('failed_dependency', 'dependency'), - 425: ('unordered_collection', 'unordered'), - 426: ('upgrade_required', 'upgrade'), - 428: ('precondition_required', 'precondition'), - 429: ('too_many_requests', 'too_many'), - 431: ('header_fields_too_large', 'fields_too_large'), - 444: ('no_response', 'none'), - 449: ('retry_with', 'retry'), - 450: ('blocked_by_windows_parental_controls', 'parental_controls'), - 451: ('unavailable_for_legal_reasons', 'legal_reasons'), - 499: ('client_closed_request',), - - # Server Error. - 500: ('internal_server_error', 'server_error', '/o\\', '✗'), - 501: ('not_implemented',), - 502: ('bad_gateway',), - 503: ('service_unavailable', 'unavailable'), - 504: ('gateway_timeout',), - 505: ('http_version_not_supported', 'http_version'), - 506: ('variant_also_negotiates',), - 507: ('insufficient_storage',), - 509: ('bandwidth_limit_exceeded', 'bandwidth'), - 510: ('not_extended',), - 511: ('network_authentication_required', 'network_auth', 'network_authentication'), -} - -codes = LookupDict(name='status_codes') - -for code, titles in _codes.items(): - for title in titles: - setattr(codes, title, code) - if not title.startswith('\\'): - setattr(codes, title.upper(), code) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/structures.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/structures.py deleted file mode 100644 index 05d2b3f5..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/structures.py +++ /dev/null @@ -1,105 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -requests.structures -~~~~~~~~~~~~~~~~~~~ - -Data structures that power Requests. -""" - -import collections - -from .compat import OrderedDict - - -class CaseInsensitiveDict(collections.MutableMapping): - """A case-insensitive ``dict``-like object. - - Implements all methods and operations of - ``collections.MutableMapping`` as well as dict's ``copy``. Also - provides ``lower_items``. - - All keys are expected to be strings. The structure remembers the - case of the last key to be set, and ``iter(instance)``, - ``keys()``, ``items()``, ``iterkeys()``, and ``iteritems()`` - will contain case-sensitive keys. However, querying and contains - testing is case insensitive:: - - cid = CaseInsensitiveDict() - cid['Accept'] = 'application/json' - cid['aCCEPT'] == 'application/json' # True - list(cid) == ['Accept'] # True - - For example, ``headers['content-encoding']`` will return the - value of a ``'Content-Encoding'`` response header, regardless - of how the header name was originally stored. - - If the constructor, ``.update``, or equality comparison - operations are given keys that have equal ``.lower()``s, the - behavior is undefined. - """ - - def __init__(self, data=None, **kwargs): - self._store = OrderedDict() - if data is None: - data = {} - self.update(data, **kwargs) - - def __setitem__(self, key, value): - # Use the lowercased key for lookups, but store the actual - # key alongside the value. - self._store[key.lower()] = (key, value) - - def __getitem__(self, key): - return self._store[key.lower()][1] - - def __delitem__(self, key): - del self._store[key.lower()] - - def __iter__(self): - return (casedkey for casedkey, mappedvalue in self._store.values()) - - def __len__(self): - return len(self._store) - - def lower_items(self): - """Like iteritems(), but with all lowercase keys.""" - return ( - (lowerkey, keyval[1]) - for (lowerkey, keyval) - in self._store.items() - ) - - def __eq__(self, other): - if isinstance(other, collections.Mapping): - other = CaseInsensitiveDict(other) - else: - return NotImplemented - # Compare insensitively - return dict(self.lower_items()) == dict(other.lower_items()) - - # Copy is required - def copy(self): - return CaseInsensitiveDict(self._store.values()) - - def __repr__(self): - return str(dict(self.items())) - - -class LookupDict(dict): - """Dictionary lookup object.""" - - def __init__(self, name=None): - self.name = name - super(LookupDict, self).__init__() - - def __repr__(self): - return '' % (self.name) - - def __getitem__(self, key): - # We allow fall-through here, so values default to None - - return self.__dict__.get(key, None) - - def get(self, key, default=None): - return self.__dict__.get(key, default) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/utils.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/utils.py deleted file mode 100644 index 30a03ca1..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/requests/utils.py +++ /dev/null @@ -1,817 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -requests.utils -~~~~~~~~~~~~~~ - -This module provides utility functions that are used within Requests -that are also useful for external consumption. -""" - -import cgi -import codecs -import collections -import io -import os -import re -import socket -import struct -import warnings - -from . import __version__ -from . import certs -from .compat import parse_http_list as _parse_list_header -from .compat import (quote, urlparse, bytes, str, OrderedDict, unquote, is_py2, - builtin_str, getproxies, proxy_bypass, urlunparse, - basestring) -from .cookies import RequestsCookieJar, cookiejar_from_dict -from .structures import CaseInsensitiveDict -from .exceptions import InvalidURL, InvalidHeader, FileModeWarning - -_hush_pyflakes = (RequestsCookieJar,) - -NETRC_FILES = ('.netrc', '_netrc') - -DEFAULT_CA_BUNDLE_PATH = certs.where() - - -def dict_to_sequence(d): - """Returns an internal sequence dictionary update.""" - - if hasattr(d, 'items'): - d = d.items() - - return d - - -def super_len(o): - total_length = 0 - current_position = 0 - - if hasattr(o, '__len__'): - total_length = len(o) - - elif hasattr(o, 'len'): - total_length = o.len - - elif hasattr(o, 'getvalue'): - # e.g. BytesIO, cStringIO.StringIO - total_length = len(o.getvalue()) - - elif hasattr(o, 'fileno'): - try: - fileno = o.fileno() - except io.UnsupportedOperation: - pass - else: - total_length = os.fstat(fileno).st_size - - # Having used fstat to determine the file length, we need to - # confirm that this file was opened up in binary mode. - if 'b' not in o.mode: - warnings.warn(( - "Requests has determined the content-length for this " - "request using the binary size of the file: however, the " - "file has been opened in text mode (i.e. without the 'b' " - "flag in the mode). This may lead to an incorrect " - "content-length. In Requests 3.0, support will be removed " - "for files in text mode."), - FileModeWarning - ) - - if hasattr(o, 'tell'): - try: - current_position = o.tell() - except (OSError, IOError): - # This can happen in some weird situations, such as when the file - # is actually a special file descriptor like stdin. In this - # instance, we don't know what the length is, so set it to zero and - # let requests chunk it instead. - current_position = total_length - - return max(0, total_length - current_position) - - -def get_netrc_auth(url, raise_errors=False): - """Returns the Requests tuple auth for a given url from netrc.""" - - try: - from netrc import netrc, NetrcParseError - - netrc_path = None - - for f in NETRC_FILES: - try: - loc = os.path.expanduser('~/{0}'.format(f)) - except KeyError: - # os.path.expanduser can fail when $HOME is undefined and - # getpwuid fails. See http://bugs.python.org/issue20164 & - # https://github.com/kennethreitz/requests/issues/1846 - return - - if os.path.exists(loc): - netrc_path = loc - break - - # Abort early if there isn't one. - if netrc_path is None: - return - - ri = urlparse(url) - - # Strip port numbers from netloc. This weird `if...encode`` dance is - # used for Python 3.2, which doesn't support unicode literals. - splitstr = b':' - if isinstance(url, str): - splitstr = splitstr.decode('ascii') - host = ri.netloc.split(splitstr)[0] - - try: - _netrc = netrc(netrc_path).authenticators(host) - if _netrc: - # Return with login / password - login_i = (0 if _netrc[0] else 1) - return (_netrc[login_i], _netrc[2]) - except (NetrcParseError, IOError): - # If there was a parsing error or a permissions issue reading the file, - # we'll just skip netrc auth unless explicitly asked to raise errors. - if raise_errors: - raise - - # AppEngine hackiness. - except (ImportError, AttributeError): - pass - - -def guess_filename(obj): - """Tries to guess the filename of the given object.""" - name = getattr(obj, 'name', None) - if (name and isinstance(name, basestring) and name[0] != '<' and - name[-1] != '>'): - return os.path.basename(name) - - -def from_key_val_list(value): - """Take an object and test to see if it can be represented as a - dictionary. Unless it can not be represented as such, return an - OrderedDict, e.g., - - :: - - >>> from_key_val_list([('key', 'val')]) - OrderedDict([('key', 'val')]) - >>> from_key_val_list('string') - ValueError: need more than 1 value to unpack - >>> from_key_val_list({'key': 'val'}) - OrderedDict([('key', 'val')]) - - :rtype: OrderedDict - """ - if value is None: - return None - - if isinstance(value, (str, bytes, bool, int)): - raise ValueError('cannot encode objects that are not 2-tuples') - - return OrderedDict(value) - - -def to_key_val_list(value): - """Take an object and test to see if it can be represented as a - dictionary. If it can be, return a list of tuples, e.g., - - :: - - >>> to_key_val_list([('key', 'val')]) - [('key', 'val')] - >>> to_key_val_list({'key': 'val'}) - [('key', 'val')] - >>> to_key_val_list('string') - ValueError: cannot encode objects that are not 2-tuples. - - :rtype: list - """ - if value is None: - return None - - if isinstance(value, (str, bytes, bool, int)): - raise ValueError('cannot encode objects that are not 2-tuples') - - if isinstance(value, collections.Mapping): - value = value.items() - - return list(value) - - -# From mitsuhiko/werkzeug (used with permission). -def parse_list_header(value): - """Parse lists as described by RFC 2068 Section 2. - - In particular, parse comma-separated lists where the elements of - the list may include quoted-strings. A quoted-string could - contain a comma. A non-quoted string could have quotes in the - middle. Quotes are removed automatically after parsing. - - It basically works like :func:`parse_set_header` just that items - may appear multiple times and case sensitivity is preserved. - - The return value is a standard :class:`list`: - - >>> parse_list_header('token, "quoted value"') - ['token', 'quoted value'] - - To create a header from the :class:`list` again, use the - :func:`dump_header` function. - - :param value: a string with a list header. - :return: :class:`list` - :rtype: list - """ - result = [] - for item in _parse_list_header(value): - if item[:1] == item[-1:] == '"': - item = unquote_header_value(item[1:-1]) - result.append(item) - return result - - -# From mitsuhiko/werkzeug (used with permission). -def parse_dict_header(value): - """Parse lists of key, value pairs as described by RFC 2068 Section 2 and - convert them into a python dict: - - >>> d = parse_dict_header('foo="is a fish", bar="as well"') - >>> type(d) is dict - True - >>> sorted(d.items()) - [('bar', 'as well'), ('foo', 'is a fish')] - - If there is no value for a key it will be `None`: - - >>> parse_dict_header('key_without_value') - {'key_without_value': None} - - To create a header from the :class:`dict` again, use the - :func:`dump_header` function. - - :param value: a string with a dict header. - :return: :class:`dict` - :rtype: dict - """ - result = {} - for item in _parse_list_header(value): - if '=' not in item: - result[item] = None - continue - name, value = item.split('=', 1) - if value[:1] == value[-1:] == '"': - value = unquote_header_value(value[1:-1]) - result[name] = value - return result - - -# From mitsuhiko/werkzeug (used with permission). -def unquote_header_value(value, is_filename=False): - r"""Unquotes a header value. (Reversal of :func:`quote_header_value`). - This does not use the real unquoting but what browsers are actually - using for quoting. - - :param value: the header value to unquote. - :rtype: str - """ - if value and value[0] == value[-1] == '"': - # this is not the real unquoting, but fixing this so that the - # RFC is met will result in bugs with internet explorer and - # probably some other browsers as well. IE for example is - # uploading files with "C:\foo\bar.txt" as filename - value = value[1:-1] - - # if this is a filename and the starting characters look like - # a UNC path, then just return the value without quotes. Using the - # replace sequence below on a UNC path has the effect of turning - # the leading double slash into a single slash and then - # _fix_ie_filename() doesn't work correctly. See #458. - if not is_filename or value[:2] != '\\\\': - return value.replace('\\\\', '\\').replace('\\"', '"') - return value - - -def dict_from_cookiejar(cj): - """Returns a key/value dictionary from a CookieJar. - - :param cj: CookieJar object to extract cookies from. - :rtype: dict - """ - - cookie_dict = {} - - for cookie in cj: - cookie_dict[cookie.name] = cookie.value - - return cookie_dict - - -def add_dict_to_cookiejar(cj, cookie_dict): - """Returns a CookieJar from a key/value dictionary. - - :param cj: CookieJar to insert cookies into. - :param cookie_dict: Dict of key/values to insert into CookieJar. - :rtype: CookieJar - """ - - cj2 = cookiejar_from_dict(cookie_dict) - cj.update(cj2) - return cj - - -def get_encodings_from_content(content): - """Returns encodings from given content string. - - :param content: bytestring to extract encodings from. - """ - warnings.warn(( - 'In requests 3.0, get_encodings_from_content will be removed. For ' - 'more information, please see the discussion on issue #2266. (This' - ' warning should only appear once.)'), - DeprecationWarning) - - charset_re = re.compile(r']', flags=re.I) - pragma_re = re.compile(r']', flags=re.I) - xml_re = re.compile(r'^<\?xml.*?encoding=["\']*(.+?)["\'>]') - - return (charset_re.findall(content) + - pragma_re.findall(content) + - xml_re.findall(content)) - - -def get_encoding_from_headers(headers): - """Returns encodings from given HTTP Header Dict. - - :param headers: dictionary to extract encoding from. - :rtype: str - """ - - content_type = headers.get('content-type') - - if not content_type: - return None - - content_type, params = cgi.parse_header(content_type) - - if 'charset' in params: - return params['charset'].strip("'\"") - - if 'text' in content_type: - return 'ISO-8859-1' - - -def stream_decode_response_unicode(iterator, r): - """Stream decodes a iterator.""" - - if r.encoding is None: - for item in iterator: - yield item - return - - decoder = codecs.getincrementaldecoder(r.encoding)(errors='replace') - for chunk in iterator: - rv = decoder.decode(chunk) - if rv: - yield rv - rv = decoder.decode(b'', final=True) - if rv: - yield rv - - -def iter_slices(string, slice_length): - """Iterate over slices of a string.""" - pos = 0 - if slice_length is None or slice_length <= 0: - slice_length = len(string) - while pos < len(string): - yield string[pos:pos + slice_length] - pos += slice_length - - -def get_unicode_from_response(r): - """Returns the requested content back in unicode. - - :param r: Response object to get unicode content from. - - Tried: - - 1. charset from content-type - 2. fall back and replace all unicode characters - - :rtype: str - """ - warnings.warn(( - 'In requests 3.0, get_unicode_from_response will be removed. For ' - 'more information, please see the discussion on issue #2266. (This' - ' warning should only appear once.)'), - DeprecationWarning) - - tried_encodings = [] - - # Try charset from content-type - encoding = get_encoding_from_headers(r.headers) - - if encoding: - try: - return str(r.content, encoding) - except UnicodeError: - tried_encodings.append(encoding) - - # Fall back: - try: - return str(r.content, encoding, errors='replace') - except TypeError: - return r.content - - -# The unreserved URI characters (RFC 3986) -UNRESERVED_SET = frozenset( - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" - + "0123456789-._~") - - -def unquote_unreserved(uri): - """Un-escape any percent-escape sequences in a URI that are unreserved - characters. This leaves all reserved, illegal and non-ASCII bytes encoded. - - :rtype: str - """ - parts = uri.split('%') - for i in range(1, len(parts)): - h = parts[i][0:2] - if len(h) == 2 and h.isalnum(): - try: - c = chr(int(h, 16)) - except ValueError: - raise InvalidURL("Invalid percent-escape sequence: '%s'" % h) - - if c in UNRESERVED_SET: - parts[i] = c + parts[i][2:] - else: - parts[i] = '%' + parts[i] - else: - parts[i] = '%' + parts[i] - return ''.join(parts) - - -def requote_uri(uri): - """Re-quote the given URI. - - This function passes the given URI through an unquote/quote cycle to - ensure that it is fully and consistently quoted. - - :rtype: str - """ - safe_with_percent = "!#$%&'()*+,/:;=?@[]~" - safe_without_percent = "!#$&'()*+,/:;=?@[]~" - try: - # Unquote only the unreserved characters - # Then quote only illegal characters (do not quote reserved, - # unreserved, or '%') - return quote(unquote_unreserved(uri), safe=safe_with_percent) - except InvalidURL: - # We couldn't unquote the given URI, so let's try quoting it, but - # there may be unquoted '%'s in the URI. We need to make sure they're - # properly quoted so they do not cause issues elsewhere. - return quote(uri, safe=safe_without_percent) - - -def address_in_network(ip, net): - """This function allows you to check if on IP belongs to a network subnet - - Example: returns True if ip = 192.168.1.1 and net = 192.168.1.0/24 - returns False if ip = 192.168.1.1 and net = 192.168.100.0/24 - - :rtype: bool - """ - ipaddr = struct.unpack('=L', socket.inet_aton(ip))[0] - netaddr, bits = net.split('/') - netmask = struct.unpack('=L', socket.inet_aton(dotted_netmask(int(bits))))[0] - network = struct.unpack('=L', socket.inet_aton(netaddr))[0] & netmask - return (ipaddr & netmask) == (network & netmask) - - -def dotted_netmask(mask): - """Converts mask from /xx format to xxx.xxx.xxx.xxx - - Example: if mask is 24 function returns 255.255.255.0 - - :rtype: str - """ - bits = 0xffffffff ^ (1 << 32 - mask) - 1 - return socket.inet_ntoa(struct.pack('>I', bits)) - - -def is_ipv4_address(string_ip): - """ - :rtype: bool - """ - try: - socket.inet_aton(string_ip) - except socket.error: - return False - return True - - -def is_valid_cidr(string_network): - """ - Very simple check of the cidr format in no_proxy variable. - - :rtype: bool - """ - if string_network.count('/') == 1: - try: - mask = int(string_network.split('/')[1]) - except ValueError: - return False - - if mask < 1 or mask > 32: - return False - - try: - socket.inet_aton(string_network.split('/')[0]) - except socket.error: - return False - else: - return False - return True - - -def should_bypass_proxies(url): - """ - Returns whether we should bypass proxies or not. - - :rtype: bool - """ - get_proxy = lambda k: os.environ.get(k) or os.environ.get(k.upper()) - - # First check whether no_proxy is defined. If it is, check that the URL - # we're getting isn't in the no_proxy list. - no_proxy = get_proxy('no_proxy') - netloc = urlparse(url).netloc - - if no_proxy: - # We need to check whether we match here. We need to see if we match - # the end of the netloc, both with and without the port. - no_proxy = ( - host for host in no_proxy.replace(' ', '').split(',') if host - ) - - ip = netloc.split(':')[0] - if is_ipv4_address(ip): - for proxy_ip in no_proxy: - if is_valid_cidr(proxy_ip): - if address_in_network(ip, proxy_ip): - return True - elif ip == proxy_ip: - # If no_proxy ip was defined in plain IP notation instead of cidr notation & - # matches the IP of the index - return True - else: - for host in no_proxy: - if netloc.endswith(host) or netloc.split(':')[0].endswith(host): - # The URL does match something in no_proxy, so we don't want - # to apply the proxies on this URL. - return True - - # If the system proxy settings indicate that this URL should be bypassed, - # don't proxy. - # The proxy_bypass function is incredibly buggy on macOS in early versions - # of Python 2.6, so allow this call to fail. Only catch the specific - # exceptions we've seen, though: this call failing in other ways can reveal - # legitimate problems. - try: - bypass = proxy_bypass(netloc) - except (TypeError, socket.gaierror): - bypass = False - - if bypass: - return True - - return False - - -def get_environ_proxies(url): - """ - Return a dict of environment proxies. - - :rtype: dict - """ - if should_bypass_proxies(url): - return {} - else: - return getproxies() - - -def select_proxy(url, proxies): - """Select a proxy for the url, if applicable. - - :param url: The url being for the request - :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs - """ - proxies = proxies or {} - urlparts = urlparse(url) - if urlparts.hostname is None: - return proxies.get('all', proxies.get(urlparts.scheme)) - - proxy_keys = [ - 'all://' + urlparts.hostname, - 'all', - urlparts.scheme + '://' + urlparts.hostname, - urlparts.scheme, - ] - proxy = None - for proxy_key in proxy_keys: - if proxy_key in proxies: - proxy = proxies[proxy_key] - break - - return proxy - - -def default_user_agent(name="python-requests"): - """ - Return a string representing the default user agent. - - :rtype: str - """ - return '%s/%s' % (name, __version__) - - -def default_headers(): - """ - :rtype: requests.structures.CaseInsensitiveDict - """ - return CaseInsensitiveDict({ - 'User-Agent': default_user_agent(), - 'Accept-Encoding': ', '.join(('gzip', 'deflate')), - 'Accept': '*/*', - 'Connection': 'keep-alive', - }) - - -def parse_header_links(value): - """Return a dict of parsed link headers proxies. - - i.e. Link: ; rel=front; type="image/jpeg",; rel=back;type="image/jpeg" - - :rtype: list - """ - - links = [] - - replace_chars = ' \'"' - - for val in re.split(', *<', value): - try: - url, params = val.split(';', 1) - except ValueError: - url, params = val, '' - - link = {'url': url.strip('<> \'"')} - - for param in params.split(';'): - try: - key, value = param.split('=') - except ValueError: - break - - link[key.strip(replace_chars)] = value.strip(replace_chars) - - links.append(link) - - return links - - -# Null bytes; no need to recreate these on each call to guess_json_utf -_null = '\x00'.encode('ascii') # encoding to ASCII for Python 3 -_null2 = _null * 2 -_null3 = _null * 3 - - -def guess_json_utf(data): - """ - :rtype: str - """ - # JSON always starts with two ASCII characters, so detection is as - # easy as counting the nulls and from their location and count - # determine the encoding. Also detect a BOM, if present. - sample = data[:4] - if sample in (codecs.BOM_UTF32_LE, codecs.BOM32_BE): - return 'utf-32' # BOM included - if sample[:3] == codecs.BOM_UTF8: - return 'utf-8-sig' # BOM included, MS style (discouraged) - if sample[:2] in (codecs.BOM_UTF16_LE, codecs.BOM_UTF16_BE): - return 'utf-16' # BOM included - nullcount = sample.count(_null) - if nullcount == 0: - return 'utf-8' - if nullcount == 2: - if sample[::2] == _null2: # 1st and 3rd are null - return 'utf-16-be' - if sample[1::2] == _null2: # 2nd and 4th are null - return 'utf-16-le' - # Did not detect 2 valid UTF-16 ascii-range characters - if nullcount == 3: - if sample[:3] == _null3: - return 'utf-32-be' - if sample[1:] == _null3: - return 'utf-32-le' - # Did not detect a valid UTF-32 ascii-range character - return None - - -def prepend_scheme_if_needed(url, new_scheme): - """Given a URL that may or may not have a scheme, prepend the given scheme. - Does not replace a present scheme with the one provided as an argument. - - :rtype: str - """ - scheme, netloc, path, params, query, fragment = urlparse(url, new_scheme) - - # urlparse is a finicky beast, and sometimes decides that there isn't a - # netloc present. Assume that it's being over-cautious, and switch netloc - # and path if urlparse decided there was no netloc. - if not netloc: - netloc, path = path, netloc - - return urlunparse((scheme, netloc, path, params, query, fragment)) - - -def get_auth_from_url(url): - """Given a url with authentication components, extract them into a tuple of - username,password. - - :rtype: (str,str) - """ - parsed = urlparse(url) - - try: - auth = (unquote(parsed.username), unquote(parsed.password)) - except (AttributeError, TypeError): - auth = ('', '') - - return auth - - -def to_native_string(string, encoding='ascii'): - """Given a string object, regardless of type, returns a representation of - that string in the native string type, encoding and decoding where - necessary. This assumes ASCII unless told otherwise. - """ - if isinstance(string, builtin_str): - out = string - else: - if is_py2: - out = string.encode(encoding) - else: - out = string.decode(encoding) - - return out - - -# Moved outside of function to avoid recompile every call -_CLEAN_HEADER_REGEX_BYTE = re.compile(b'^\\S[^\\r\\n]*$|^$') -_CLEAN_HEADER_REGEX_STR = re.compile(r'^\S[^\r\n]*$|^$') - -def check_header_validity(header): - """Verifies that header value is a string which doesn't contain - leading whitespace or return characters. This prevents unintended - header injection. - - :param header: tuple, in the format (name, value). - """ - name, value = header - - if isinstance(value, bytes): - pat = _CLEAN_HEADER_REGEX_BYTE - else: - pat = _CLEAN_HEADER_REGEX_STR - try: - if not pat.match(value): - raise InvalidHeader("Invalid return character or leading space in header: %s" % name) - except TypeError: - raise InvalidHeader("Header value %s must be of type str or bytes, " - "not %s" % (value, type(value))) - - -def urldefragauth(url): - """ - Given a url remove the fragment and the authentication part. - - :rtype: str - """ - scheme, netloc, path, params, query, fragment = urlparse(url) - - # see func:`prepend_scheme_if_needed` - if not netloc: - netloc, path = path, netloc - - netloc = netloc.rsplit('@', 1)[-1] - - return urlunparse((scheme, netloc, path, params, query, '')) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/retrying.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/retrying.py deleted file mode 100644 index 6d1e627a..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/retrying.py +++ /dev/null @@ -1,267 +0,0 @@ -## Copyright 2013-2014 Ray Holder -## -## Licensed under the Apache License, Version 2.0 (the "License"); -## you may not use this file except in compliance with the License. -## You may obtain a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, software -## distributed under the License is distributed on an "AS IS" BASIS, -## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -## See the License for the specific language governing permissions and -## limitations under the License. - -import random -from pip._vendor import six -import sys -import time -import traceback - - -# sys.maxint / 2, since Python 3.2 doesn't have a sys.maxint... -MAX_WAIT = 1073741823 - - -def retry(*dargs, **dkw): - """ - Decorator function that instantiates the Retrying object - @param *dargs: positional arguments passed to Retrying object - @param **dkw: keyword arguments passed to the Retrying object - """ - # support both @retry and @retry() as valid syntax - if len(dargs) == 1 and callable(dargs[0]): - def wrap_simple(f): - - @six.wraps(f) - def wrapped_f(*args, **kw): - return Retrying().call(f, *args, **kw) - - return wrapped_f - - return wrap_simple(dargs[0]) - - else: - def wrap(f): - - @six.wraps(f) - def wrapped_f(*args, **kw): - return Retrying(*dargs, **dkw).call(f, *args, **kw) - - return wrapped_f - - return wrap - - -class Retrying(object): - - def __init__(self, - stop=None, wait=None, - stop_max_attempt_number=None, - stop_max_delay=None, - wait_fixed=None, - wait_random_min=None, wait_random_max=None, - wait_incrementing_start=None, wait_incrementing_increment=None, - wait_exponential_multiplier=None, wait_exponential_max=None, - retry_on_exception=None, - retry_on_result=None, - wrap_exception=False, - stop_func=None, - wait_func=None, - wait_jitter_max=None): - - self._stop_max_attempt_number = 5 if stop_max_attempt_number is None else stop_max_attempt_number - self._stop_max_delay = 100 if stop_max_delay is None else stop_max_delay - self._wait_fixed = 1000 if wait_fixed is None else wait_fixed - self._wait_random_min = 0 if wait_random_min is None else wait_random_min - self._wait_random_max = 1000 if wait_random_max is None else wait_random_max - self._wait_incrementing_start = 0 if wait_incrementing_start is None else wait_incrementing_start - self._wait_incrementing_increment = 100 if wait_incrementing_increment is None else wait_incrementing_increment - self._wait_exponential_multiplier = 1 if wait_exponential_multiplier is None else wait_exponential_multiplier - self._wait_exponential_max = MAX_WAIT if wait_exponential_max is None else wait_exponential_max - self._wait_jitter_max = 0 if wait_jitter_max is None else wait_jitter_max - - # TODO add chaining of stop behaviors - # stop behavior - stop_funcs = [] - if stop_max_attempt_number is not None: - stop_funcs.append(self.stop_after_attempt) - - if stop_max_delay is not None: - stop_funcs.append(self.stop_after_delay) - - if stop_func is not None: - self.stop = stop_func - - elif stop is None: - self.stop = lambda attempts, delay: any(f(attempts, delay) for f in stop_funcs) - - else: - self.stop = getattr(self, stop) - - # TODO add chaining of wait behaviors - # wait behavior - wait_funcs = [lambda *args, **kwargs: 0] - if wait_fixed is not None: - wait_funcs.append(self.fixed_sleep) - - if wait_random_min is not None or wait_random_max is not None: - wait_funcs.append(self.random_sleep) - - if wait_incrementing_start is not None or wait_incrementing_increment is not None: - wait_funcs.append(self.incrementing_sleep) - - if wait_exponential_multiplier is not None or wait_exponential_max is not None: - wait_funcs.append(self.exponential_sleep) - - if wait_func is not None: - self.wait = wait_func - - elif wait is None: - self.wait = lambda attempts, delay: max(f(attempts, delay) for f in wait_funcs) - - else: - self.wait = getattr(self, wait) - - # retry on exception filter - if retry_on_exception is None: - self._retry_on_exception = self.always_reject - else: - self._retry_on_exception = retry_on_exception - - # TODO simplify retrying by Exception types - # retry on result filter - if retry_on_result is None: - self._retry_on_result = self.never_reject - else: - self._retry_on_result = retry_on_result - - self._wrap_exception = wrap_exception - - def stop_after_attempt(self, previous_attempt_number, delay_since_first_attempt_ms): - """Stop after the previous attempt >= stop_max_attempt_number.""" - return previous_attempt_number >= self._stop_max_attempt_number - - def stop_after_delay(self, previous_attempt_number, delay_since_first_attempt_ms): - """Stop after the time from the first attempt >= stop_max_delay.""" - return delay_since_first_attempt_ms >= self._stop_max_delay - - def no_sleep(self, previous_attempt_number, delay_since_first_attempt_ms): - """Don't sleep at all before retrying.""" - return 0 - - def fixed_sleep(self, previous_attempt_number, delay_since_first_attempt_ms): - """Sleep a fixed amount of time between each retry.""" - return self._wait_fixed - - def random_sleep(self, previous_attempt_number, delay_since_first_attempt_ms): - """Sleep a random amount of time between wait_random_min and wait_random_max""" - return random.randint(self._wait_random_min, self._wait_random_max) - - def incrementing_sleep(self, previous_attempt_number, delay_since_first_attempt_ms): - """ - Sleep an incremental amount of time after each attempt, starting at - wait_incrementing_start and incrementing by wait_incrementing_increment - """ - result = self._wait_incrementing_start + (self._wait_incrementing_increment * (previous_attempt_number - 1)) - if result < 0: - result = 0 - return result - - def exponential_sleep(self, previous_attempt_number, delay_since_first_attempt_ms): - exp = 2 ** previous_attempt_number - result = self._wait_exponential_multiplier * exp - if result > self._wait_exponential_max: - result = self._wait_exponential_max - if result < 0: - result = 0 - return result - - def never_reject(self, result): - return False - - def always_reject(self, result): - return True - - def should_reject(self, attempt): - reject = False - if attempt.has_exception: - reject |= self._retry_on_exception(attempt.value[1]) - else: - reject |= self._retry_on_result(attempt.value) - - return reject - - def call(self, fn, *args, **kwargs): - start_time = int(round(time.time() * 1000)) - attempt_number = 1 - while True: - try: - attempt = Attempt(fn(*args, **kwargs), attempt_number, False) - except: - tb = sys.exc_info() - attempt = Attempt(tb, attempt_number, True) - - if not self.should_reject(attempt): - return attempt.get(self._wrap_exception) - - delay_since_first_attempt_ms = int(round(time.time() * 1000)) - start_time - if self.stop(attempt_number, delay_since_first_attempt_ms): - if not self._wrap_exception and attempt.has_exception: - # get() on an attempt with an exception should cause it to be raised, but raise just in case - raise attempt.get() - else: - raise RetryError(attempt) - else: - sleep = self.wait(attempt_number, delay_since_first_attempt_ms) - if self._wait_jitter_max: - jitter = random.random() * self._wait_jitter_max - sleep = sleep + max(0, jitter) - time.sleep(sleep / 1000.0) - - attempt_number += 1 - - -class Attempt(object): - """ - An Attempt encapsulates a call to a target function that may end as a - normal return value from the function or an Exception depending on what - occurred during the execution. - """ - - def __init__(self, value, attempt_number, has_exception): - self.value = value - self.attempt_number = attempt_number - self.has_exception = has_exception - - def get(self, wrap_exception=False): - """ - Return the return value of this Attempt instance or raise an Exception. - If wrap_exception is true, this Attempt is wrapped inside of a - RetryError before being raised. - """ - if self.has_exception: - if wrap_exception: - raise RetryError(self) - else: - six.reraise(self.value[0], self.value[1], self.value[2]) - else: - return self.value - - def __repr__(self): - if self.has_exception: - return "Attempts: {0}, Error:\n{1}".format(self.attempt_number, "".join(traceback.format_tb(self.value[2]))) - else: - return "Attempts: {0}, Value: {1}".format(self.attempt_number, self.value) - - -class RetryError(Exception): - """ - A RetryError encapsulates the last Attempt instance right before giving up. - """ - - def __init__(self, last_attempt): - self.last_attempt = last_attempt - - def __str__(self): - return "RetryError[{0}]".format(self.last_attempt) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/six.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/six.py deleted file mode 100644 index 190c0239..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/six.py +++ /dev/null @@ -1,868 +0,0 @@ -"""Utilities for writing code that runs on Python 2 and 3""" - -# Copyright (c) 2010-2015 Benjamin Peterson -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -from __future__ import absolute_import - -import functools -import itertools -import operator -import sys -import types - -__author__ = "Benjamin Peterson " -__version__ = "1.10.0" - - -# Useful for very coarse version differentiation. -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] == 3 -PY34 = sys.version_info[0:2] >= (3, 4) - -if PY3: - string_types = str, - integer_types = int, - class_types = type, - text_type = str - binary_type = bytes - - MAXSIZE = sys.maxsize -else: - string_types = basestring, - integer_types = (int, long) - class_types = (type, types.ClassType) - text_type = unicode - binary_type = str - - if sys.platform.startswith("java"): - # Jython always uses 32 bits. - MAXSIZE = int((1 << 31) - 1) - else: - # It's possible to have sizeof(long) != sizeof(Py_ssize_t). - class X(object): - - def __len__(self): - return 1 << 31 - try: - len(X()) - except OverflowError: - # 32-bit - MAXSIZE = int((1 << 31) - 1) - else: - # 64-bit - MAXSIZE = int((1 << 63) - 1) - del X - - -def _add_doc(func, doc): - """Add documentation to a function.""" - func.__doc__ = doc - - -def _import_module(name): - """Import module, returning the module after the last dot.""" - __import__(name) - return sys.modules[name] - - -class _LazyDescr(object): - - def __init__(self, name): - self.name = name - - def __get__(self, obj, tp): - result = self._resolve() - setattr(obj, self.name, result) # Invokes __set__. - try: - # This is a bit ugly, but it avoids running this again by - # removing this descriptor. - delattr(obj.__class__, self.name) - except AttributeError: - pass - return result - - -class MovedModule(_LazyDescr): - - def __init__(self, name, old, new=None): - super(MovedModule, self).__init__(name) - if PY3: - if new is None: - new = name - self.mod = new - else: - self.mod = old - - def _resolve(self): - return _import_module(self.mod) - - def __getattr__(self, attr): - _module = self._resolve() - value = getattr(_module, attr) - setattr(self, attr, value) - return value - - -class _LazyModule(types.ModuleType): - - def __init__(self, name): - super(_LazyModule, self).__init__(name) - self.__doc__ = self.__class__.__doc__ - - def __dir__(self): - attrs = ["__doc__", "__name__"] - attrs += [attr.name for attr in self._moved_attributes] - return attrs - - # Subclasses should override this - _moved_attributes = [] - - -class MovedAttribute(_LazyDescr): - - def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None): - super(MovedAttribute, self).__init__(name) - if PY3: - if new_mod is None: - new_mod = name - self.mod = new_mod - if new_attr is None: - if old_attr is None: - new_attr = name - else: - new_attr = old_attr - self.attr = new_attr - else: - self.mod = old_mod - if old_attr is None: - old_attr = name - self.attr = old_attr - - def _resolve(self): - module = _import_module(self.mod) - return getattr(module, self.attr) - - -class _SixMetaPathImporter(object): - - """ - A meta path importer to import six.moves and its submodules. - - This class implements a PEP302 finder and loader. It should be compatible - with Python 2.5 and all existing versions of Python3 - """ - - def __init__(self, six_module_name): - self.name = six_module_name - self.known_modules = {} - - def _add_module(self, mod, *fullnames): - for fullname in fullnames: - self.known_modules[self.name + "." + fullname] = mod - - def _get_module(self, fullname): - return self.known_modules[self.name + "." + fullname] - - def find_module(self, fullname, path=None): - if fullname in self.known_modules: - return self - return None - - def __get_module(self, fullname): - try: - return self.known_modules[fullname] - except KeyError: - raise ImportError("This loader does not know module " + fullname) - - def load_module(self, fullname): - try: - # in case of a reload - return sys.modules[fullname] - except KeyError: - pass - mod = self.__get_module(fullname) - if isinstance(mod, MovedModule): - mod = mod._resolve() - else: - mod.__loader__ = self - sys.modules[fullname] = mod - return mod - - def is_package(self, fullname): - """ - Return true, if the named module is a package. - - We need this method to get correct spec objects with - Python 3.4 (see PEP451) - """ - return hasattr(self.__get_module(fullname), "__path__") - - def get_code(self, fullname): - """Return None - - Required, if is_package is implemented""" - self.__get_module(fullname) # eventually raises ImportError - return None - get_source = get_code # same as get_code - -_importer = _SixMetaPathImporter(__name__) - - -class _MovedItems(_LazyModule): - - """Lazy loading of moved objects""" - __path__ = [] # mark as package - - -_moved_attributes = [ - MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"), - MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), - MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"), - MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), - MovedAttribute("intern", "__builtin__", "sys"), - MovedAttribute("map", "itertools", "builtins", "imap", "map"), - MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"), - MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"), - MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"), - MovedAttribute("reduce", "__builtin__", "functools"), - MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), - MovedAttribute("StringIO", "StringIO", "io"), - MovedAttribute("UserDict", "UserDict", "collections"), - MovedAttribute("UserList", "UserList", "collections"), - MovedAttribute("UserString", "UserString", "collections"), - MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), - MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), - MovedModule("builtins", "__builtin__"), - MovedModule("configparser", "ConfigParser"), - MovedModule("copyreg", "copy_reg"), - MovedModule("dbm_gnu", "gdbm", "dbm.gnu"), - MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"), - MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), - MovedModule("http_cookies", "Cookie", "http.cookies"), - MovedModule("html_entities", "htmlentitydefs", "html.entities"), - MovedModule("html_parser", "HTMLParser", "html.parser"), - MovedModule("http_client", "httplib", "http.client"), - MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"), - MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"), - MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"), - MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"), - MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), - MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"), - MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"), - MovedModule("cPickle", "cPickle", "pickle"), - MovedModule("queue", "Queue"), - MovedModule("reprlib", "repr"), - MovedModule("socketserver", "SocketServer"), - MovedModule("_thread", "thread", "_thread"), - MovedModule("tkinter", "Tkinter"), - MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"), - MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"), - MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"), - MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"), - MovedModule("tkinter_tix", "Tix", "tkinter.tix"), - MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"), - MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"), - MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"), - MovedModule("tkinter_colorchooser", "tkColorChooser", - "tkinter.colorchooser"), - MovedModule("tkinter_commondialog", "tkCommonDialog", - "tkinter.commondialog"), - MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"), - MovedModule("tkinter_font", "tkFont", "tkinter.font"), - MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"), - MovedModule("tkinter_tksimpledialog", "tkSimpleDialog", - "tkinter.simpledialog"), - MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"), - MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"), - MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"), - MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), - MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), - MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), -] -# Add windows specific modules. -if sys.platform == "win32": - _moved_attributes += [ - MovedModule("winreg", "_winreg"), - ] - -for attr in _moved_attributes: - setattr(_MovedItems, attr.name, attr) - if isinstance(attr, MovedModule): - _importer._add_module(attr, "moves." + attr.name) -del attr - -_MovedItems._moved_attributes = _moved_attributes - -moves = _MovedItems(__name__ + ".moves") -_importer._add_module(moves, "moves") - - -class Module_six_moves_urllib_parse(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_parse""" - - -_urllib_parse_moved_attributes = [ - MovedAttribute("ParseResult", "urlparse", "urllib.parse"), - MovedAttribute("SplitResult", "urlparse", "urllib.parse"), - MovedAttribute("parse_qs", "urlparse", "urllib.parse"), - MovedAttribute("parse_qsl", "urlparse", "urllib.parse"), - MovedAttribute("urldefrag", "urlparse", "urllib.parse"), - MovedAttribute("urljoin", "urlparse", "urllib.parse"), - MovedAttribute("urlparse", "urlparse", "urllib.parse"), - MovedAttribute("urlsplit", "urlparse", "urllib.parse"), - MovedAttribute("urlunparse", "urlparse", "urllib.parse"), - MovedAttribute("urlunsplit", "urlparse", "urllib.parse"), - MovedAttribute("quote", "urllib", "urllib.parse"), - MovedAttribute("quote_plus", "urllib", "urllib.parse"), - MovedAttribute("unquote", "urllib", "urllib.parse"), - MovedAttribute("unquote_plus", "urllib", "urllib.parse"), - MovedAttribute("urlencode", "urllib", "urllib.parse"), - MovedAttribute("splitquery", "urllib", "urllib.parse"), - MovedAttribute("splittag", "urllib", "urllib.parse"), - MovedAttribute("splituser", "urllib", "urllib.parse"), - MovedAttribute("uses_fragment", "urlparse", "urllib.parse"), - MovedAttribute("uses_netloc", "urlparse", "urllib.parse"), - MovedAttribute("uses_params", "urlparse", "urllib.parse"), - MovedAttribute("uses_query", "urlparse", "urllib.parse"), - MovedAttribute("uses_relative", "urlparse", "urllib.parse"), -] -for attr in _urllib_parse_moved_attributes: - setattr(Module_six_moves_urllib_parse, attr.name, attr) -del attr - -Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes - -_importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse"), - "moves.urllib_parse", "moves.urllib.parse") - - -class Module_six_moves_urllib_error(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_error""" - - -_urllib_error_moved_attributes = [ - MovedAttribute("URLError", "urllib2", "urllib.error"), - MovedAttribute("HTTPError", "urllib2", "urllib.error"), - MovedAttribute("ContentTooShortError", "urllib", "urllib.error"), -] -for attr in _urllib_error_moved_attributes: - setattr(Module_six_moves_urllib_error, attr.name, attr) -del attr - -Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes - -_importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.error"), - "moves.urllib_error", "moves.urllib.error") - - -class Module_six_moves_urllib_request(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_request""" - - -_urllib_request_moved_attributes = [ - MovedAttribute("urlopen", "urllib2", "urllib.request"), - MovedAttribute("install_opener", "urllib2", "urllib.request"), - MovedAttribute("build_opener", "urllib2", "urllib.request"), - MovedAttribute("pathname2url", "urllib", "urllib.request"), - MovedAttribute("url2pathname", "urllib", "urllib.request"), - MovedAttribute("getproxies", "urllib", "urllib.request"), - MovedAttribute("Request", "urllib2", "urllib.request"), - MovedAttribute("OpenerDirector", "urllib2", "urllib.request"), - MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"), - MovedAttribute("ProxyHandler", "urllib2", "urllib.request"), - MovedAttribute("BaseHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"), - MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"), - MovedAttribute("FileHandler", "urllib2", "urllib.request"), - MovedAttribute("FTPHandler", "urllib2", "urllib.request"), - MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"), - MovedAttribute("UnknownHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"), - MovedAttribute("urlretrieve", "urllib", "urllib.request"), - MovedAttribute("urlcleanup", "urllib", "urllib.request"), - MovedAttribute("URLopener", "urllib", "urllib.request"), - MovedAttribute("FancyURLopener", "urllib", "urllib.request"), - MovedAttribute("proxy_bypass", "urllib", "urllib.request"), -] -for attr in _urllib_request_moved_attributes: - setattr(Module_six_moves_urllib_request, attr.name, attr) -del attr - -Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes - -_importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib.request"), - "moves.urllib_request", "moves.urllib.request") - - -class Module_six_moves_urllib_response(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_response""" - - -_urllib_response_moved_attributes = [ - MovedAttribute("addbase", "urllib", "urllib.response"), - MovedAttribute("addclosehook", "urllib", "urllib.response"), - MovedAttribute("addinfo", "urllib", "urllib.response"), - MovedAttribute("addinfourl", "urllib", "urllib.response"), -] -for attr in _urllib_response_moved_attributes: - setattr(Module_six_moves_urllib_response, attr.name, attr) -del attr - -Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes - -_importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib.response"), - "moves.urllib_response", "moves.urllib.response") - - -class Module_six_moves_urllib_robotparser(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_robotparser""" - - -_urllib_robotparser_moved_attributes = [ - MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"), -] -for attr in _urllib_robotparser_moved_attributes: - setattr(Module_six_moves_urllib_robotparser, attr.name, attr) -del attr - -Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes - -_importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser"), - "moves.urllib_robotparser", "moves.urllib.robotparser") - - -class Module_six_moves_urllib(types.ModuleType): - - """Create a six.moves.urllib namespace that resembles the Python 3 namespace""" - __path__ = [] # mark as package - parse = _importer._get_module("moves.urllib_parse") - error = _importer._get_module("moves.urllib_error") - request = _importer._get_module("moves.urllib_request") - response = _importer._get_module("moves.urllib_response") - robotparser = _importer._get_module("moves.urllib_robotparser") - - def __dir__(self): - return ['parse', 'error', 'request', 'response', 'robotparser'] - -_importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"), - "moves.urllib") - - -def add_move(move): - """Add an item to six.moves.""" - setattr(_MovedItems, move.name, move) - - -def remove_move(name): - """Remove item from six.moves.""" - try: - delattr(_MovedItems, name) - except AttributeError: - try: - del moves.__dict__[name] - except KeyError: - raise AttributeError("no such move, %r" % (name,)) - - -if PY3: - _meth_func = "__func__" - _meth_self = "__self__" - - _func_closure = "__closure__" - _func_code = "__code__" - _func_defaults = "__defaults__" - _func_globals = "__globals__" -else: - _meth_func = "im_func" - _meth_self = "im_self" - - _func_closure = "func_closure" - _func_code = "func_code" - _func_defaults = "func_defaults" - _func_globals = "func_globals" - - -try: - advance_iterator = next -except NameError: - def advance_iterator(it): - return it.next() -next = advance_iterator - - -try: - callable = callable -except NameError: - def callable(obj): - return any("__call__" in klass.__dict__ for klass in type(obj).__mro__) - - -if PY3: - def get_unbound_function(unbound): - return unbound - - create_bound_method = types.MethodType - - def create_unbound_method(func, cls): - return func - - Iterator = object -else: - def get_unbound_function(unbound): - return unbound.im_func - - def create_bound_method(func, obj): - return types.MethodType(func, obj, obj.__class__) - - def create_unbound_method(func, cls): - return types.MethodType(func, None, cls) - - class Iterator(object): - - def next(self): - return type(self).__next__(self) - - callable = callable -_add_doc(get_unbound_function, - """Get the function out of a possibly unbound function""") - - -get_method_function = operator.attrgetter(_meth_func) -get_method_self = operator.attrgetter(_meth_self) -get_function_closure = operator.attrgetter(_func_closure) -get_function_code = operator.attrgetter(_func_code) -get_function_defaults = operator.attrgetter(_func_defaults) -get_function_globals = operator.attrgetter(_func_globals) - - -if PY3: - def iterkeys(d, **kw): - return iter(d.keys(**kw)) - - def itervalues(d, **kw): - return iter(d.values(**kw)) - - def iteritems(d, **kw): - return iter(d.items(**kw)) - - def iterlists(d, **kw): - return iter(d.lists(**kw)) - - viewkeys = operator.methodcaller("keys") - - viewvalues = operator.methodcaller("values") - - viewitems = operator.methodcaller("items") -else: - def iterkeys(d, **kw): - return d.iterkeys(**kw) - - def itervalues(d, **kw): - return d.itervalues(**kw) - - def iteritems(d, **kw): - return d.iteritems(**kw) - - def iterlists(d, **kw): - return d.iterlists(**kw) - - viewkeys = operator.methodcaller("viewkeys") - - viewvalues = operator.methodcaller("viewvalues") - - viewitems = operator.methodcaller("viewitems") - -_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.") -_add_doc(itervalues, "Return an iterator over the values of a dictionary.") -_add_doc(iteritems, - "Return an iterator over the (key, value) pairs of a dictionary.") -_add_doc(iterlists, - "Return an iterator over the (key, [values]) pairs of a dictionary.") - - -if PY3: - def b(s): - return s.encode("latin-1") - - def u(s): - return s - unichr = chr - import struct - int2byte = struct.Struct(">B").pack - del struct - byte2int = operator.itemgetter(0) - indexbytes = operator.getitem - iterbytes = iter - import io - StringIO = io.StringIO - BytesIO = io.BytesIO - _assertCountEqual = "assertCountEqual" - if sys.version_info[1] <= 1: - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" - else: - _assertRaisesRegex = "assertRaisesRegex" - _assertRegex = "assertRegex" -else: - def b(s): - return s - # Workaround for standalone backslash - - def u(s): - return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape") - unichr = unichr - int2byte = chr - - def byte2int(bs): - return ord(bs[0]) - - def indexbytes(buf, i): - return ord(buf[i]) - iterbytes = functools.partial(itertools.imap, ord) - import StringIO - StringIO = BytesIO = StringIO.StringIO - _assertCountEqual = "assertItemsEqual" - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" -_add_doc(b, """Byte literal""") -_add_doc(u, """Text literal""") - - -def assertCountEqual(self, *args, **kwargs): - return getattr(self, _assertCountEqual)(*args, **kwargs) - - -def assertRaisesRegex(self, *args, **kwargs): - return getattr(self, _assertRaisesRegex)(*args, **kwargs) - - -def assertRegex(self, *args, **kwargs): - return getattr(self, _assertRegex)(*args, **kwargs) - - -if PY3: - exec_ = getattr(moves.builtins, "exec") - - def reraise(tp, value, tb=None): - if value is None: - value = tp() - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - -else: - def exec_(_code_, _globs_=None, _locs_=None): - """Execute code in a namespace.""" - if _globs_ is None: - frame = sys._getframe(1) - _globs_ = frame.f_globals - if _locs_ is None: - _locs_ = frame.f_locals - del frame - elif _locs_ is None: - _locs_ = _globs_ - exec("""exec _code_ in _globs_, _locs_""") - - exec_("""def reraise(tp, value, tb=None): - raise tp, value, tb -""") - - -if sys.version_info[:2] == (3, 2): - exec_("""def raise_from(value, from_value): - if from_value is None: - raise value - raise value from from_value -""") -elif sys.version_info[:2] > (3, 2): - exec_("""def raise_from(value, from_value): - raise value from from_value -""") -else: - def raise_from(value, from_value): - raise value - - -print_ = getattr(moves.builtins, "print", None) -if print_ is None: - def print_(*args, **kwargs): - """The new-style print function for Python 2.4 and 2.5.""" - fp = kwargs.pop("file", sys.stdout) - if fp is None: - return - - def write(data): - if not isinstance(data, basestring): - data = str(data) - # If the file has an encoding, encode unicode with it. - if (isinstance(fp, file) and - isinstance(data, unicode) and - fp.encoding is not None): - errors = getattr(fp, "errors", None) - if errors is None: - errors = "strict" - data = data.encode(fp.encoding, errors) - fp.write(data) - want_unicode = False - sep = kwargs.pop("sep", None) - if sep is not None: - if isinstance(sep, unicode): - want_unicode = True - elif not isinstance(sep, str): - raise TypeError("sep must be None or a string") - end = kwargs.pop("end", None) - if end is not None: - if isinstance(end, unicode): - want_unicode = True - elif not isinstance(end, str): - raise TypeError("end must be None or a string") - if kwargs: - raise TypeError("invalid keyword arguments to print()") - if not want_unicode: - for arg in args: - if isinstance(arg, unicode): - want_unicode = True - break - if want_unicode: - newline = unicode("\n") - space = unicode(" ") - else: - newline = "\n" - space = " " - if sep is None: - sep = space - if end is None: - end = newline - for i, arg in enumerate(args): - if i: - write(sep) - write(arg) - write(end) -if sys.version_info[:2] < (3, 3): - _print = print_ - - def print_(*args, **kwargs): - fp = kwargs.get("file", sys.stdout) - flush = kwargs.pop("flush", False) - _print(*args, **kwargs) - if flush and fp is not None: - fp.flush() - -_add_doc(reraise, """Reraise an exception.""") - -if sys.version_info[0:2] < (3, 4): - def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, - updated=functools.WRAPPER_UPDATES): - def wrapper(f): - f = functools.wraps(wrapped, assigned, updated)(f) - f.__wrapped__ = wrapped - return f - return wrapper -else: - wraps = functools.wraps - - -def with_metaclass(meta, *bases): - """Create a base class with a metaclass.""" - # This requires a bit of explanation: the basic idea is to make a dummy - # metaclass for one level of class instantiation that replaces itself with - # the actual metaclass. - class metaclass(meta): - - def __new__(cls, name, this_bases, d): - return meta(name, bases, d) - return type.__new__(metaclass, 'temporary_class', (), {}) - - -def add_metaclass(metaclass): - """Class decorator for creating a class with a metaclass.""" - def wrapper(cls): - orig_vars = cls.__dict__.copy() - slots = orig_vars.get('__slots__') - if slots is not None: - if isinstance(slots, str): - slots = [slots] - for slots_var in slots: - orig_vars.pop(slots_var) - orig_vars.pop('__dict__', None) - orig_vars.pop('__weakref__', None) - return metaclass(cls.__name__, cls.__bases__, orig_vars) - return wrapper - - -def python_2_unicode_compatible(klass): - """ - A decorator that defines __unicode__ and __str__ methods under Python 2. - Under Python 3 it does nothing. - - To support Python 2 and 3 with a single code base, define a __str__ method - returning text and apply this decorator to the class. - """ - if PY2: - if '__str__' not in klass.__dict__: - raise ValueError("@python_2_unicode_compatible cannot be applied " - "to %s because it doesn't define __str__()." % - klass.__name__) - klass.__unicode__ = klass.__str__ - klass.__str__ = lambda self: self.__unicode__().encode('utf-8') - return klass - - -# Complete the moves implementation. -# This code is at the end of this module to speed up module loading. -# Turn this module into a package. -__path__ = [] # required for PEP 302 and PEP 451 -__package__ = __name__ # see PEP 366 @ReservedAssignment -if globals().get("__spec__") is not None: - __spec__.submodule_search_locations = [] # PEP 451 @UndefinedVariable -# Remove other six meta path importers, since they cause problems. This can -# happen if six is removed from sys.modules and then reloaded. (Setuptools does -# this for some reason.) -if sys.meta_path: - for i, importer in enumerate(sys.meta_path): - # Here's some real nastiness: Another "instance" of the six module might - # be floating around. Therefore, we can't use isinstance() to check for - # the six meta path importer, since the other six instance will have - # inserted an importer with different class. - if (type(importer).__name__ == "_SixMetaPathImporter" and - importer.name == __name__): - del sys.meta_path[i] - break - del i, importer -# Finally, add the importer to the meta path import hook. -sys.meta_path.append(_importer) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__init__.py deleted file mode 100644 index 03d5d357..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__init__.py +++ /dev/null @@ -1,342 +0,0 @@ -# coding: utf8 -""" - - webencodings - ~~~~~~~~~~~~ - - This is a Python implementation of the `WHATWG Encoding standard - `. See README for details. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -from __future__ import unicode_literals - -import codecs - -from .labels import LABELS - - -VERSION = '0.5' - - -# Some names in Encoding are not valid Python aliases. Remap these. -PYTHON_NAMES = { - 'iso-8859-8-i': 'iso-8859-8', - 'x-mac-cyrillic': 'mac-cyrillic', - 'macintosh': 'mac-roman', - 'windows-874': 'cp874'} - -CACHE = {} - - -def ascii_lower(string): - r"""Transform (only) ASCII letters to lower case: A-Z is mapped to a-z. - - :param string: An Unicode string. - :returns: A new Unicode string. - - This is used for `ASCII case-insensitive - `_ - matching of encoding labels. - The same matching is also used, among other things, - for `CSS keywords `_. - - This is different from the :meth:`~py:str.lower` method of Unicode strings - which also affect non-ASCII characters, - sometimes mapping them into the ASCII range: - - >>> keyword = u'Bac\N{KELVIN SIGN}ground' - >>> assert keyword.lower() == u'background' - >>> assert ascii_lower(keyword) != keyword.lower() - >>> assert ascii_lower(keyword) == u'bac\N{KELVIN SIGN}ground' - - """ - # This turns out to be faster than unicode.translate() - return string.encode('utf8').lower().decode('utf8') - - -def lookup(label): - """ - Look for an encoding by its label. - This is the spec’s `get an encoding - `_ algorithm. - Supported labels are listed there. - - :param label: A string. - :returns: - An :class:`Encoding` object, or :obj:`None` for an unknown label. - - """ - # Only strip ASCII whitespace: U+0009, U+000A, U+000C, U+000D, and U+0020. - label = ascii_lower(label.strip('\t\n\f\r ')) - name = LABELS.get(label) - if name is None: - return None - encoding = CACHE.get(name) - if encoding is None: - if name == 'x-user-defined': - from .x_user_defined import codec_info - else: - python_name = PYTHON_NAMES.get(name, name) - # Any python_name value that gets to here should be valid. - codec_info = codecs.lookup(python_name) - encoding = Encoding(name, codec_info) - CACHE[name] = encoding - return encoding - - -def _get_encoding(encoding_or_label): - """ - Accept either an encoding object or label. - - :param encoding: An :class:`Encoding` object or a label string. - :returns: An :class:`Encoding` object. - :raises: :exc:`~exceptions.LookupError` for an unknown label. - - """ - if hasattr(encoding_or_label, 'codec_info'): - return encoding_or_label - - encoding = lookup(encoding_or_label) - if encoding is None: - raise LookupError('Unknown encoding label: %r' % encoding_or_label) - return encoding - - -class Encoding(object): - """Reresents a character encoding such as UTF-8, - that can be used for decoding or encoding. - - .. attribute:: name - - Canonical name of the encoding - - .. attribute:: codec_info - - The actual implementation of the encoding, - a stdlib :class:`~codecs.CodecInfo` object. - See :func:`codecs.register`. - - """ - def __init__(self, name, codec_info): - self.name = name - self.codec_info = codec_info - - def __repr__(self): - return '' % self.name - - -#: The UTF-8 encoding. Should be used for new content and formats. -UTF8 = lookup('utf-8') - -_UTF16LE = lookup('utf-16le') -_UTF16BE = lookup('utf-16be') - - -def decode(input, fallback_encoding, errors='replace'): - """ - Decode a single string. - - :param input: A byte string - :param fallback_encoding: - An :class:`Encoding` object or a label string. - The encoding to use if :obj:`input` does note have a BOM. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - :return: - A ``(output, encoding)`` tuple of an Unicode string - and an :obj:`Encoding`. - - """ - # Fail early if `encoding` is an invalid label. - fallback_encoding = _get_encoding(fallback_encoding) - bom_encoding, input = _detect_bom(input) - encoding = bom_encoding or fallback_encoding - return encoding.codec_info.decode(input, errors)[0], encoding - - -def _detect_bom(input): - """Return (bom_encoding, input), with any BOM removed from the input.""" - if input.startswith(b'\xFF\xFE'): - return _UTF16LE, input[2:] - if input.startswith(b'\xFE\xFF'): - return _UTF16BE, input[2:] - if input.startswith(b'\xEF\xBB\xBF'): - return UTF8, input[3:] - return None, input - - -def encode(input, encoding=UTF8, errors='strict'): - """ - Encode a single string. - - :param input: An Unicode string. - :param encoding: An :class:`Encoding` object or a label string. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - :return: A byte string. - - """ - return _get_encoding(encoding).codec_info.encode(input, errors)[0] - - -def iter_decode(input, fallback_encoding, errors='replace'): - """ - "Pull"-based decoder. - - :param input: - An iterable of byte strings. - - The input is first consumed just enough to determine the encoding - based on the precense of a BOM, - then consumed on demand when the return value is. - :param fallback_encoding: - An :class:`Encoding` object or a label string. - The encoding to use if :obj:`input` does note have a BOM. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - :returns: - An ``(output, encoding)`` tuple. - :obj:`output` is an iterable of Unicode strings, - :obj:`encoding` is the :obj:`Encoding` that is being used. - - """ - - decoder = IncrementalDecoder(fallback_encoding, errors) - generator = _iter_decode_generator(input, decoder) - encoding = next(generator) - return generator, encoding - - -def _iter_decode_generator(input, decoder): - """Return a generator that first yields the :obj:`Encoding`, - then yields output chukns as Unicode strings. - - """ - decode = decoder.decode - input = iter(input) - for chunck in input: - output = decode(chunck) - if output: - assert decoder.encoding is not None - yield decoder.encoding - yield output - break - else: - # Input exhausted without determining the encoding - output = decode(b'', final=True) - assert decoder.encoding is not None - yield decoder.encoding - if output: - yield output - return - - for chunck in input: - output = decode(chunck) - if output: - yield output - output = decode(b'', final=True) - if output: - yield output - - -def iter_encode(input, encoding=UTF8, errors='strict'): - """ - “Pull”-based encoder. - - :param input: An iterable of Unicode strings. - :param encoding: An :class:`Encoding` object or a label string. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - :returns: An iterable of byte strings. - - """ - # Fail early if `encoding` is an invalid label. - encode = IncrementalEncoder(encoding, errors).encode - return _iter_encode_generator(input, encode) - - -def _iter_encode_generator(input, encode): - for chunck in input: - output = encode(chunck) - if output: - yield output - output = encode('', final=True) - if output: - yield output - - -class IncrementalDecoder(object): - """ - “Push”-based decoder. - - :param fallback_encoding: - An :class:`Encoding` object or a label string. - The encoding to use if :obj:`input` does note have a BOM. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - - """ - def __init__(self, fallback_encoding, errors='replace'): - # Fail early if `encoding` is an invalid label. - self._fallback_encoding = _get_encoding(fallback_encoding) - self._errors = errors - self._buffer = b'' - self._decoder = None - #: The actual :class:`Encoding` that is being used, - #: or :obj:`None` if that is not determined yet. - #: (Ie. if there is not enough input yet to determine - #: if there is a BOM.) - self.encoding = None # Not known yet. - - def decode(self, input, final=False): - """Decode one chunk of the input. - - :param input: A byte string. - :param final: - Indicate that no more input is available. - Must be :obj:`True` if this is the last call. - :returns: An Unicode string. - - """ - decoder = self._decoder - if decoder is not None: - return decoder(input, final) - - input = self._buffer + input - encoding, input = _detect_bom(input) - if encoding is None: - if len(input) < 3 and not final: # Not enough data yet. - self._buffer = input - return '' - else: # No BOM - encoding = self._fallback_encoding - decoder = encoding.codec_info.incrementaldecoder(self._errors).decode - self._decoder = decoder - self.encoding = encoding - return decoder(input, final) - - -class IncrementalEncoder(object): - """ - “Push”-based encoder. - - :param encoding: An :class:`Encoding` object or a label string. - :param errors: Type of error handling. See :func:`codecs.register`. - :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. - - .. method:: encode(input, final=False) - - :param input: An Unicode string. - :param final: - Indicate that no more input is available. - Must be :obj:`True` if this is the last call. - :returns: A byte string. - - """ - def __init__(self, encoding=UTF8, errors='strict'): - encoding = _get_encoding(encoding) - self.encode = encoding.codec_info.incrementalencoder(errors).encode diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 129e2a7e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-36.pyc deleted file mode 100644 index 6a73fea4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc deleted file mode 100644 index 62b4f2d7..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc deleted file mode 100644 index b7e4ebdf..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc deleted file mode 100644 index eec63a5a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/labels.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/labels.py deleted file mode 100644 index 29cbf91e..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/labels.py +++ /dev/null @@ -1,231 +0,0 @@ -""" - - webencodings.labels - ~~~~~~~~~~~~~~~~~~~ - - Map encoding labels to their name. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -# XXX Do not edit! -# This file is automatically generated by mklabels.py - -LABELS = { - 'unicode-1-1-utf-8': 'utf-8', - 'utf-8': 'utf-8', - 'utf8': 'utf-8', - '866': 'ibm866', - 'cp866': 'ibm866', - 'csibm866': 'ibm866', - 'ibm866': 'ibm866', - 'csisolatin2': 'iso-8859-2', - 'iso-8859-2': 'iso-8859-2', - 'iso-ir-101': 'iso-8859-2', - 'iso8859-2': 'iso-8859-2', - 'iso88592': 'iso-8859-2', - 'iso_8859-2': 'iso-8859-2', - 'iso_8859-2:1987': 'iso-8859-2', - 'l2': 'iso-8859-2', - 'latin2': 'iso-8859-2', - 'csisolatin3': 'iso-8859-3', - 'iso-8859-3': 'iso-8859-3', - 'iso-ir-109': 'iso-8859-3', - 'iso8859-3': 'iso-8859-3', - 'iso88593': 'iso-8859-3', - 'iso_8859-3': 'iso-8859-3', - 'iso_8859-3:1988': 'iso-8859-3', - 'l3': 'iso-8859-3', - 'latin3': 'iso-8859-3', - 'csisolatin4': 'iso-8859-4', - 'iso-8859-4': 'iso-8859-4', - 'iso-ir-110': 'iso-8859-4', - 'iso8859-4': 'iso-8859-4', - 'iso88594': 'iso-8859-4', - 'iso_8859-4': 'iso-8859-4', - 'iso_8859-4:1988': 'iso-8859-4', - 'l4': 'iso-8859-4', - 'latin4': 'iso-8859-4', - 'csisolatincyrillic': 'iso-8859-5', - 'cyrillic': 'iso-8859-5', - 'iso-8859-5': 'iso-8859-5', - 'iso-ir-144': 'iso-8859-5', - 'iso8859-5': 'iso-8859-5', - 'iso88595': 'iso-8859-5', - 'iso_8859-5': 'iso-8859-5', - 'iso_8859-5:1988': 'iso-8859-5', - 'arabic': 'iso-8859-6', - 'asmo-708': 'iso-8859-6', - 'csiso88596e': 'iso-8859-6', - 'csiso88596i': 'iso-8859-6', - 'csisolatinarabic': 'iso-8859-6', - 'ecma-114': 'iso-8859-6', - 'iso-8859-6': 'iso-8859-6', - 'iso-8859-6-e': 'iso-8859-6', - 'iso-8859-6-i': 'iso-8859-6', - 'iso-ir-127': 'iso-8859-6', - 'iso8859-6': 'iso-8859-6', - 'iso88596': 'iso-8859-6', - 'iso_8859-6': 'iso-8859-6', - 'iso_8859-6:1987': 'iso-8859-6', - 'csisolatingreek': 'iso-8859-7', - 'ecma-118': 'iso-8859-7', - 'elot_928': 'iso-8859-7', - 'greek': 'iso-8859-7', - 'greek8': 'iso-8859-7', - 'iso-8859-7': 'iso-8859-7', - 'iso-ir-126': 'iso-8859-7', - 'iso8859-7': 'iso-8859-7', - 'iso88597': 'iso-8859-7', - 'iso_8859-7': 'iso-8859-7', - 'iso_8859-7:1987': 'iso-8859-7', - 'sun_eu_greek': 'iso-8859-7', - 'csiso88598e': 'iso-8859-8', - 'csisolatinhebrew': 'iso-8859-8', - 'hebrew': 'iso-8859-8', - 'iso-8859-8': 'iso-8859-8', - 'iso-8859-8-e': 'iso-8859-8', - 'iso-ir-138': 'iso-8859-8', - 'iso8859-8': 'iso-8859-8', - 'iso88598': 'iso-8859-8', - 'iso_8859-8': 'iso-8859-8', - 'iso_8859-8:1988': 'iso-8859-8', - 'visual': 'iso-8859-8', - 'csiso88598i': 'iso-8859-8-i', - 'iso-8859-8-i': 'iso-8859-8-i', - 'logical': 'iso-8859-8-i', - 'csisolatin6': 'iso-8859-10', - 'iso-8859-10': 'iso-8859-10', - 'iso-ir-157': 'iso-8859-10', - 'iso8859-10': 'iso-8859-10', - 'iso885910': 'iso-8859-10', - 'l6': 'iso-8859-10', - 'latin6': 'iso-8859-10', - 'iso-8859-13': 'iso-8859-13', - 'iso8859-13': 'iso-8859-13', - 'iso885913': 'iso-8859-13', - 'iso-8859-14': 'iso-8859-14', - 'iso8859-14': 'iso-8859-14', - 'iso885914': 'iso-8859-14', - 'csisolatin9': 'iso-8859-15', - 'iso-8859-15': 'iso-8859-15', - 'iso8859-15': 'iso-8859-15', - 'iso885915': 'iso-8859-15', - 'iso_8859-15': 'iso-8859-15', - 'l9': 'iso-8859-15', - 'iso-8859-16': 'iso-8859-16', - 'cskoi8r': 'koi8-r', - 'koi': 'koi8-r', - 'koi8': 'koi8-r', - 'koi8-r': 'koi8-r', - 'koi8_r': 'koi8-r', - 'koi8-u': 'koi8-u', - 'csmacintosh': 'macintosh', - 'mac': 'macintosh', - 'macintosh': 'macintosh', - 'x-mac-roman': 'macintosh', - 'dos-874': 'windows-874', - 'iso-8859-11': 'windows-874', - 'iso8859-11': 'windows-874', - 'iso885911': 'windows-874', - 'tis-620': 'windows-874', - 'windows-874': 'windows-874', - 'cp1250': 'windows-1250', - 'windows-1250': 'windows-1250', - 'x-cp1250': 'windows-1250', - 'cp1251': 'windows-1251', - 'windows-1251': 'windows-1251', - 'x-cp1251': 'windows-1251', - 'ansi_x3.4-1968': 'windows-1252', - 'ascii': 'windows-1252', - 'cp1252': 'windows-1252', - 'cp819': 'windows-1252', - 'csisolatin1': 'windows-1252', - 'ibm819': 'windows-1252', - 'iso-8859-1': 'windows-1252', - 'iso-ir-100': 'windows-1252', - 'iso8859-1': 'windows-1252', - 'iso88591': 'windows-1252', - 'iso_8859-1': 'windows-1252', - 'iso_8859-1:1987': 'windows-1252', - 'l1': 'windows-1252', - 'latin1': 'windows-1252', - 'us-ascii': 'windows-1252', - 'windows-1252': 'windows-1252', - 'x-cp1252': 'windows-1252', - 'cp1253': 'windows-1253', - 'windows-1253': 'windows-1253', - 'x-cp1253': 'windows-1253', - 'cp1254': 'windows-1254', - 'csisolatin5': 'windows-1254', - 'iso-8859-9': 'windows-1254', - 'iso-ir-148': 'windows-1254', - 'iso8859-9': 'windows-1254', - 'iso88599': 'windows-1254', - 'iso_8859-9': 'windows-1254', - 'iso_8859-9:1989': 'windows-1254', - 'l5': 'windows-1254', - 'latin5': 'windows-1254', - 'windows-1254': 'windows-1254', - 'x-cp1254': 'windows-1254', - 'cp1255': 'windows-1255', - 'windows-1255': 'windows-1255', - 'x-cp1255': 'windows-1255', - 'cp1256': 'windows-1256', - 'windows-1256': 'windows-1256', - 'x-cp1256': 'windows-1256', - 'cp1257': 'windows-1257', - 'windows-1257': 'windows-1257', - 'x-cp1257': 'windows-1257', - 'cp1258': 'windows-1258', - 'windows-1258': 'windows-1258', - 'x-cp1258': 'windows-1258', - 'x-mac-cyrillic': 'x-mac-cyrillic', - 'x-mac-ukrainian': 'x-mac-cyrillic', - 'chinese': 'gbk', - 'csgb2312': 'gbk', - 'csiso58gb231280': 'gbk', - 'gb2312': 'gbk', - 'gb_2312': 'gbk', - 'gb_2312-80': 'gbk', - 'gbk': 'gbk', - 'iso-ir-58': 'gbk', - 'x-gbk': 'gbk', - 'gb18030': 'gb18030', - 'hz-gb-2312': 'hz-gb-2312', - 'big5': 'big5', - 'big5-hkscs': 'big5', - 'cn-big5': 'big5', - 'csbig5': 'big5', - 'x-x-big5': 'big5', - 'cseucpkdfmtjapanese': 'euc-jp', - 'euc-jp': 'euc-jp', - 'x-euc-jp': 'euc-jp', - 'csiso2022jp': 'iso-2022-jp', - 'iso-2022-jp': 'iso-2022-jp', - 'csshiftjis': 'shift_jis', - 'ms_kanji': 'shift_jis', - 'shift-jis': 'shift_jis', - 'shift_jis': 'shift_jis', - 'sjis': 'shift_jis', - 'windows-31j': 'shift_jis', - 'x-sjis': 'shift_jis', - 'cseuckr': 'euc-kr', - 'csksc56011987': 'euc-kr', - 'euc-kr': 'euc-kr', - 'iso-ir-149': 'euc-kr', - 'korean': 'euc-kr', - 'ks_c_5601-1987': 'euc-kr', - 'ks_c_5601-1989': 'euc-kr', - 'ksc5601': 'euc-kr', - 'ksc_5601': 'euc-kr', - 'windows-949': 'euc-kr', - 'csiso2022kr': 'iso-2022-kr', - 'iso-2022-kr': 'iso-2022-kr', - 'utf-16be': 'utf-16be', - 'utf-16': 'utf-16le', - 'utf-16le': 'utf-16le', - 'x-user-defined': 'x-user-defined', -} diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/mklabels.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/mklabels.py deleted file mode 100644 index 295dc928..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/mklabels.py +++ /dev/null @@ -1,59 +0,0 @@ -""" - - webencodings.mklabels - ~~~~~~~~~~~~~~~~~~~~~ - - Regenarate the webencodings.labels module. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -import json -try: - from urllib import urlopen -except ImportError: - from urllib.request import urlopen - - -def assert_lower(string): - assert string == string.lower() - return string - - -def generate(url): - parts = ['''\ -""" - - webencodings.labels - ~~~~~~~~~~~~~~~~~~~ - - Map encoding labels to their name. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -# XXX Do not edit! -# This file is automatically generated by mklabels.py - -LABELS = { -'''] - labels = [ - (repr(assert_lower(label)).lstrip('u'), - repr(encoding['name']).lstrip('u')) - for category in json.loads(urlopen(url).read().decode('ascii')) - for encoding in category['encodings'] - for label in encoding['labels']] - max_len = max(len(label) for label, name in labels) - parts.extend( - ' %s:%s %s,\n' % (label, ' ' * (max_len - len(label)), name) - for label, name in labels) - parts.append('}') - return ''.join(parts) - - -if __name__ == '__main__': - print(generate('http://encoding.spec.whatwg.org/encodings.json')) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/tests.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/tests.py deleted file mode 100644 index b8c5653e..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/tests.py +++ /dev/null @@ -1,153 +0,0 @@ -# coding: utf8 -""" - - webencodings.tests - ~~~~~~~~~~~~~~~~~~ - - A basic test suite for Encoding. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -from __future__ import unicode_literals - -from . import (lookup, LABELS, decode, encode, iter_decode, iter_encode, - IncrementalDecoder, IncrementalEncoder, UTF8) - - -def assert_raises(exception, function, *args, **kwargs): - try: - function(*args, **kwargs) - except exception: - return - else: # pragma: no cover - raise AssertionError('Did not raise %s.' % exception) - - -def test_labels(): - assert lookup('utf-8').name == 'utf-8' - assert lookup('Utf-8').name == 'utf-8' - assert lookup('UTF-8').name == 'utf-8' - assert lookup('utf8').name == 'utf-8' - assert lookup('utf8').name == 'utf-8' - assert lookup('utf8 ').name == 'utf-8' - assert lookup(' \r\nutf8\t').name == 'utf-8' - assert lookup('u8') is None # Python label. - assert lookup('utf-8 ') is None # Non-ASCII white space. - - assert lookup('US-ASCII').name == 'windows-1252' - assert lookup('iso-8859-1').name == 'windows-1252' - assert lookup('latin1').name == 'windows-1252' - assert lookup('LATIN1').name == 'windows-1252' - assert lookup('latin-1') is None - assert lookup('LATİN1') is None # ASCII-only case insensitivity. - - -def test_all_labels(): - for label in LABELS: - assert decode(b'', label) == ('', lookup(label)) - assert encode('', label) == b'' - for repeat in [0, 1, 12]: - output, _ = iter_decode([b''] * repeat, label) - assert list(output) == [] - assert list(iter_encode([''] * repeat, label)) == [] - decoder = IncrementalDecoder(label) - assert decoder.decode(b'') == '' - assert decoder.decode(b'', final=True) == '' - encoder = IncrementalEncoder(label) - assert encoder.encode('') == b'' - assert encoder.encode('', final=True) == b'' - # All encoding names are valid labels too: - for name in set(LABELS.values()): - assert lookup(name).name == name - - -def test_invalid_label(): - assert_raises(LookupError, decode, b'\xEF\xBB\xBF\xc3\xa9', 'invalid') - assert_raises(LookupError, encode, 'é', 'invalid') - assert_raises(LookupError, iter_decode, [], 'invalid') - assert_raises(LookupError, iter_encode, [], 'invalid') - assert_raises(LookupError, IncrementalDecoder, 'invalid') - assert_raises(LookupError, IncrementalEncoder, 'invalid') - - -def test_decode(): - assert decode(b'\x80', 'latin1') == ('€', lookup('latin1')) - assert decode(b'\x80', lookup('latin1')) == ('€', lookup('latin1')) - assert decode(b'\xc3\xa9', 'utf8') == ('é', lookup('utf8')) - assert decode(b'\xc3\xa9', UTF8) == ('é', lookup('utf8')) - assert decode(b'\xc3\xa9', 'ascii') == ('é', lookup('ascii')) - assert decode(b'\xEF\xBB\xBF\xc3\xa9', 'ascii') == ('é', lookup('utf8')) # UTF-8 with BOM - - assert decode(b'\xFE\xFF\x00\xe9', 'ascii') == ('é', lookup('utf-16be')) # UTF-16-BE with BOM - assert decode(b'\xFF\xFE\xe9\x00', 'ascii') == ('é', lookup('utf-16le')) # UTF-16-LE with BOM - assert decode(b'\xFE\xFF\xe9\x00', 'ascii') == ('\ue900', lookup('utf-16be')) - assert decode(b'\xFF\xFE\x00\xe9', 'ascii') == ('\ue900', lookup('utf-16le')) - - assert decode(b'\x00\xe9', 'UTF-16BE') == ('é', lookup('utf-16be')) - assert decode(b'\xe9\x00', 'UTF-16LE') == ('é', lookup('utf-16le')) - assert decode(b'\xe9\x00', 'UTF-16') == ('é', lookup('utf-16le')) - - assert decode(b'\xe9\x00', 'UTF-16BE') == ('\ue900', lookup('utf-16be')) - assert decode(b'\x00\xe9', 'UTF-16LE') == ('\ue900', lookup('utf-16le')) - assert decode(b'\x00\xe9', 'UTF-16') == ('\ue900', lookup('utf-16le')) - - -def test_encode(): - assert encode('é', 'latin1') == b'\xe9' - assert encode('é', 'utf8') == b'\xc3\xa9' - assert encode('é', 'utf8') == b'\xc3\xa9' - assert encode('é', 'utf-16') == b'\xe9\x00' - assert encode('é', 'utf-16le') == b'\xe9\x00' - assert encode('é', 'utf-16be') == b'\x00\xe9' - - -def test_iter_decode(): - def iter_decode_to_string(input, fallback_encoding): - output, _encoding = iter_decode(input, fallback_encoding) - return ''.join(output) - assert iter_decode_to_string([], 'latin1') == '' - assert iter_decode_to_string([b''], 'latin1') == '' - assert iter_decode_to_string([b'\xe9'], 'latin1') == 'é' - assert iter_decode_to_string([b'hello'], 'latin1') == 'hello' - assert iter_decode_to_string([b'he', b'llo'], 'latin1') == 'hello' - assert iter_decode_to_string([b'hell', b'o'], 'latin1') == 'hello' - assert iter_decode_to_string([b'\xc3\xa9'], 'latin1') == 'é' - assert iter_decode_to_string([b'\xEF\xBB\xBF\xc3\xa9'], 'latin1') == 'é' - assert iter_decode_to_string([ - b'\xEF\xBB\xBF', b'\xc3', b'\xa9'], 'latin1') == 'é' - assert iter_decode_to_string([ - b'\xEF\xBB\xBF', b'a', b'\xc3'], 'latin1') == 'a\uFFFD' - assert iter_decode_to_string([ - b'', b'\xEF', b'', b'', b'\xBB\xBF\xc3', b'\xa9'], 'latin1') == 'é' - assert iter_decode_to_string([b'\xEF\xBB\xBF'], 'latin1') == '' - assert iter_decode_to_string([b'\xEF\xBB'], 'latin1') == 'ï»' - assert iter_decode_to_string([b'\xFE\xFF\x00\xe9'], 'latin1') == 'é' - assert iter_decode_to_string([b'\xFF\xFE\xe9\x00'], 'latin1') == 'é' - assert iter_decode_to_string([ - b'', b'\xFF', b'', b'', b'\xFE\xe9', b'\x00'], 'latin1') == 'é' - assert iter_decode_to_string([ - b'', b'h\xe9', b'llo'], 'x-user-defined') == 'h\uF7E9llo' - - -def test_iter_encode(): - assert b''.join(iter_encode([], 'latin1')) == b'' - assert b''.join(iter_encode([''], 'latin1')) == b'' - assert b''.join(iter_encode(['é'], 'latin1')) == b'\xe9' - assert b''.join(iter_encode(['', 'é', '', ''], 'latin1')) == b'\xe9' - assert b''.join(iter_encode(['', 'é', '', ''], 'utf-16')) == b'\xe9\x00' - assert b''.join(iter_encode(['', 'é', '', ''], 'utf-16le')) == b'\xe9\x00' - assert b''.join(iter_encode(['', 'é', '', ''], 'utf-16be')) == b'\x00\xe9' - assert b''.join(iter_encode([ - '', 'h\uF7E9', '', 'llo'], 'x-user-defined')) == b'h\xe9llo' - - -def test_x_user_defined(): - encoded = b'2,\x0c\x0b\x1aO\xd9#\xcb\x0f\xc9\xbbt\xcf\xa8\xca' - decoded = '2,\x0c\x0b\x1aO\uf7d9#\uf7cb\x0f\uf7c9\uf7bbt\uf7cf\uf7a8\uf7ca' - encoded = b'aa' - decoded = 'aa' - assert decode(encoded, 'x-user-defined') == (decoded, lookup('x-user-defined')) - assert encode(decoded, 'x-user-defined') == encoded diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/x_user_defined.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/x_user_defined.py deleted file mode 100644 index f0daa11a..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/_vendor/webencodings/x_user_defined.py +++ /dev/null @@ -1,325 +0,0 @@ -# coding: utf8 -""" - - webencodings.x_user_defined - ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - An implementation of the x-user-defined encoding. - - :copyright: Copyright 2012 by Simon Sapin - :license: BSD, see LICENSE for details. - -""" - -from __future__ import unicode_literals - -import codecs - - -### Codec APIs - -class Codec(codecs.Codec): - - def encode(self, input, errors='strict'): - return codecs.charmap_encode(input, errors, encoding_table) - - def decode(self, input, errors='strict'): - return codecs.charmap_decode(input, errors, decoding_table) - - -class IncrementalEncoder(codecs.IncrementalEncoder): - def encode(self, input, final=False): - return codecs.charmap_encode(input, self.errors, encoding_table)[0] - - -class IncrementalDecoder(codecs.IncrementalDecoder): - def decode(self, input, final=False): - return codecs.charmap_decode(input, self.errors, decoding_table)[0] - - -class StreamWriter(Codec, codecs.StreamWriter): - pass - - -class StreamReader(Codec, codecs.StreamReader): - pass - - -### encodings module API - -codec_info = codecs.CodecInfo( - name='x-user-defined', - encode=Codec().encode, - decode=Codec().decode, - incrementalencoder=IncrementalEncoder, - incrementaldecoder=IncrementalDecoder, - streamreader=StreamReader, - streamwriter=StreamWriter, -) - - -### Decoding Table - -# Python 3: -# for c in range(256): print(' %r' % chr(c if c < 128 else c + 0xF700)) -decoding_table = ( - '\x00' - '\x01' - '\x02' - '\x03' - '\x04' - '\x05' - '\x06' - '\x07' - '\x08' - '\t' - '\n' - '\x0b' - '\x0c' - '\r' - '\x0e' - '\x0f' - '\x10' - '\x11' - '\x12' - '\x13' - '\x14' - '\x15' - '\x16' - '\x17' - '\x18' - '\x19' - '\x1a' - '\x1b' - '\x1c' - '\x1d' - '\x1e' - '\x1f' - ' ' - '!' - '"' - '#' - '$' - '%' - '&' - "'" - '(' - ')' - '*' - '+' - ',' - '-' - '.' - '/' - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - ':' - ';' - '<' - '=' - '>' - '?' - '@' - 'A' - 'B' - 'C' - 'D' - 'E' - 'F' - 'G' - 'H' - 'I' - 'J' - 'K' - 'L' - 'M' - 'N' - 'O' - 'P' - 'Q' - 'R' - 'S' - 'T' - 'U' - 'V' - 'W' - 'X' - 'Y' - 'Z' - '[' - '\\' - ']' - '^' - '_' - '`' - 'a' - 'b' - 'c' - 'd' - 'e' - 'f' - 'g' - 'h' - 'i' - 'j' - 'k' - 'l' - 'm' - 'n' - 'o' - 'p' - 'q' - 'r' - 's' - 't' - 'u' - 'v' - 'w' - 'x' - 'y' - 'z' - '{' - '|' - '}' - '~' - '\x7f' - '\uf780' - '\uf781' - '\uf782' - '\uf783' - '\uf784' - '\uf785' - '\uf786' - '\uf787' - '\uf788' - '\uf789' - '\uf78a' - '\uf78b' - '\uf78c' - '\uf78d' - '\uf78e' - '\uf78f' - '\uf790' - '\uf791' - '\uf792' - '\uf793' - '\uf794' - '\uf795' - '\uf796' - '\uf797' - '\uf798' - '\uf799' - '\uf79a' - '\uf79b' - '\uf79c' - '\uf79d' - '\uf79e' - '\uf79f' - '\uf7a0' - '\uf7a1' - '\uf7a2' - '\uf7a3' - '\uf7a4' - '\uf7a5' - '\uf7a6' - '\uf7a7' - '\uf7a8' - '\uf7a9' - '\uf7aa' - '\uf7ab' - '\uf7ac' - '\uf7ad' - '\uf7ae' - '\uf7af' - '\uf7b0' - '\uf7b1' - '\uf7b2' - '\uf7b3' - '\uf7b4' - '\uf7b5' - '\uf7b6' - '\uf7b7' - '\uf7b8' - '\uf7b9' - '\uf7ba' - '\uf7bb' - '\uf7bc' - '\uf7bd' - '\uf7be' - '\uf7bf' - '\uf7c0' - '\uf7c1' - '\uf7c2' - '\uf7c3' - '\uf7c4' - '\uf7c5' - '\uf7c6' - '\uf7c7' - '\uf7c8' - '\uf7c9' - '\uf7ca' - '\uf7cb' - '\uf7cc' - '\uf7cd' - '\uf7ce' - '\uf7cf' - '\uf7d0' - '\uf7d1' - '\uf7d2' - '\uf7d3' - '\uf7d4' - '\uf7d5' - '\uf7d6' - '\uf7d7' - '\uf7d8' - '\uf7d9' - '\uf7da' - '\uf7db' - '\uf7dc' - '\uf7dd' - '\uf7de' - '\uf7df' - '\uf7e0' - '\uf7e1' - '\uf7e2' - '\uf7e3' - '\uf7e4' - '\uf7e5' - '\uf7e6' - '\uf7e7' - '\uf7e8' - '\uf7e9' - '\uf7ea' - '\uf7eb' - '\uf7ec' - '\uf7ed' - '\uf7ee' - '\uf7ef' - '\uf7f0' - '\uf7f1' - '\uf7f2' - '\uf7f3' - '\uf7f4' - '\uf7f5' - '\uf7f6' - '\uf7f7' - '\uf7f8' - '\uf7f9' - '\uf7fa' - '\uf7fb' - '\uf7fc' - '\uf7fd' - '\uf7fe' - '\uf7ff' -) - -### Encoding table -encoding_table = codecs.charmap_build(decoding_table) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/basecommand.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/basecommand.py deleted file mode 100644 index 54c67067..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/basecommand.py +++ /dev/null @@ -1,337 +0,0 @@ -"""Base Command class, and related routines""" -from __future__ import absolute_import - -import logging -import os -import sys -import optparse -import warnings - -from pip import cmdoptions -from pip.index import PackageFinder -from pip.locations import running_under_virtualenv -from pip.download import PipSession -from pip.exceptions import (BadCommand, InstallationError, UninstallationError, - CommandError, PreviousBuildDirError) - -from pip.compat import logging_dictConfig -from pip.baseparser import ConfigOptionParser, UpdatingDefaultsHelpFormatter -from pip.req import InstallRequirement, parse_requirements -from pip.status_codes import ( - SUCCESS, ERROR, UNKNOWN_ERROR, VIRTUALENV_NOT_FOUND, - PREVIOUS_BUILD_DIR_ERROR, -) -from pip.utils import deprecation, get_prog, normalize_path -from pip.utils.logging import IndentingFormatter -from pip.utils.outdated import pip_version_check - - -__all__ = ['Command'] - - -logger = logging.getLogger(__name__) - - -class Command(object): - name = None - usage = None - hidden = False - log_streams = ("ext://sys.stdout", "ext://sys.stderr") - - def __init__(self, isolated=False): - parser_kw = { - 'usage': self.usage, - 'prog': '%s %s' % (get_prog(), self.name), - 'formatter': UpdatingDefaultsHelpFormatter(), - 'add_help_option': False, - 'name': self.name, - 'description': self.__doc__, - 'isolated': isolated, - } - - self.parser = ConfigOptionParser(**parser_kw) - - # Commands should add options to this option group - optgroup_name = '%s Options' % self.name.capitalize() - self.cmd_opts = optparse.OptionGroup(self.parser, optgroup_name) - - # Add the general options - gen_opts = cmdoptions.make_option_group( - cmdoptions.general_group, - self.parser, - ) - self.parser.add_option_group(gen_opts) - - def _build_session(self, options, retries=None, timeout=None): - session = PipSession( - cache=( - normalize_path(os.path.join(options.cache_dir, "http")) - if options.cache_dir else None - ), - retries=retries if retries is not None else options.retries, - insecure_hosts=options.trusted_hosts, - ) - - # Handle custom ca-bundles from the user - if options.cert: - session.verify = options.cert - - # Handle SSL client certificate - if options.client_cert: - session.cert = options.client_cert - - # Handle timeouts - if options.timeout or timeout: - session.timeout = ( - timeout if timeout is not None else options.timeout - ) - - # Handle configured proxies - if options.proxy: - session.proxies = { - "http": options.proxy, - "https": options.proxy, - } - - # Determine if we can prompt the user for authentication or not - session.auth.prompting = not options.no_input - - return session - - def parse_args(self, args): - # factored out for testability - return self.parser.parse_args(args) - - def main(self, args): - options, args = self.parse_args(args) - - if options.quiet: - if options.quiet == 1: - level = "WARNING" - if options.quiet == 2: - level = "ERROR" - else: - level = "CRITICAL" - elif options.verbose: - level = "DEBUG" - else: - level = "INFO" - - # The root logger should match the "console" level *unless* we - # specified "--log" to send debug logs to a file. - root_level = level - if options.log: - root_level = "DEBUG" - - logging_dictConfig({ - "version": 1, - "disable_existing_loggers": False, - "filters": { - "exclude_warnings": { - "()": "pip.utils.logging.MaxLevelFilter", - "level": logging.WARNING, - }, - }, - "formatters": { - "indent": { - "()": IndentingFormatter, - "format": "%(message)s", - }, - }, - "handlers": { - "console": { - "level": level, - "class": "pip.utils.logging.ColorizedStreamHandler", - "stream": self.log_streams[0], - "filters": ["exclude_warnings"], - "formatter": "indent", - }, - "console_errors": { - "level": "WARNING", - "class": "pip.utils.logging.ColorizedStreamHandler", - "stream": self.log_streams[1], - "formatter": "indent", - }, - "user_log": { - "level": "DEBUG", - "class": "pip.utils.logging.BetterRotatingFileHandler", - "filename": options.log or "/dev/null", - "delay": True, - "formatter": "indent", - }, - }, - "root": { - "level": root_level, - "handlers": list(filter(None, [ - "console", - "console_errors", - "user_log" if options.log else None, - ])), - }, - # Disable any logging besides WARNING unless we have DEBUG level - # logging enabled. These use both pip._vendor and the bare names - # for the case where someone unbundles our libraries. - "loggers": dict( - ( - name, - { - "level": ( - "WARNING" - if level in ["INFO", "ERROR"] - else "DEBUG" - ), - }, - ) - for name in ["pip._vendor", "distlib", "requests", "urllib3"] - ), - }) - - if sys.version_info[:2] == (2, 6): - warnings.warn( - "Python 2.6 is no longer supported by the Python core team, " - "please upgrade your Python. A future version of pip will " - "drop support for Python 2.6", - deprecation.Python26DeprecationWarning - ) - - # TODO: try to get these passing down from the command? - # without resorting to os.environ to hold these. - - if options.no_input: - os.environ['PIP_NO_INPUT'] = '1' - - if options.exists_action: - os.environ['PIP_EXISTS_ACTION'] = ' '.join(options.exists_action) - - if options.require_venv: - # If a venv is required check if it can really be found - if not running_under_virtualenv(): - logger.critical( - 'Could not find an activated virtualenv (required).' - ) - sys.exit(VIRTUALENV_NOT_FOUND) - - try: - status = self.run(options, args) - # FIXME: all commands should return an exit status - # and when it is done, isinstance is not needed anymore - if isinstance(status, int): - return status - except PreviousBuildDirError as exc: - logger.critical(str(exc)) - logger.debug('Exception information:', exc_info=True) - - return PREVIOUS_BUILD_DIR_ERROR - except (InstallationError, UninstallationError, BadCommand) as exc: - logger.critical(str(exc)) - logger.debug('Exception information:', exc_info=True) - - return ERROR - except CommandError as exc: - logger.critical('ERROR: %s', exc) - logger.debug('Exception information:', exc_info=True) - - return ERROR - except KeyboardInterrupt: - logger.critical('Operation cancelled by user') - logger.debug('Exception information:', exc_info=True) - - return ERROR - except: - logger.critical('Exception:', exc_info=True) - - return UNKNOWN_ERROR - finally: - # Check if we're using the latest version of pip available - if (not options.disable_pip_version_check and not - getattr(options, "no_index", False)): - with self._build_session( - options, - retries=0, - timeout=min(5, options.timeout)) as session: - pip_version_check(session) - - return SUCCESS - - -class RequirementCommand(Command): - - @staticmethod - def populate_requirement_set(requirement_set, args, options, finder, - session, name, wheel_cache): - """ - Marshal cmd line args into a requirement set. - """ - for filename in options.constraints: - for req in parse_requirements( - filename, - constraint=True, finder=finder, options=options, - session=session, wheel_cache=wheel_cache): - requirement_set.add_requirement(req) - - for req in args: - requirement_set.add_requirement( - InstallRequirement.from_line( - req, None, isolated=options.isolated_mode, - wheel_cache=wheel_cache - ) - ) - - for req in options.editables: - requirement_set.add_requirement( - InstallRequirement.from_editable( - req, - default_vcs=options.default_vcs, - isolated=options.isolated_mode, - wheel_cache=wheel_cache - ) - ) - - found_req_in_file = False - for filename in options.requirements: - for req in parse_requirements( - filename, - finder=finder, options=options, session=session, - wheel_cache=wheel_cache): - found_req_in_file = True - requirement_set.add_requirement(req) - # If --require-hashes was a line in a requirements file, tell - # RequirementSet about it: - requirement_set.require_hashes = options.require_hashes - - if not (args or options.editables or found_req_in_file): - opts = {'name': name} - if options.find_links: - msg = ('You must give at least one requirement to ' - '%(name)s (maybe you meant "pip %(name)s ' - '%(links)s"?)' % - dict(opts, links=' '.join(options.find_links))) - else: - msg = ('You must give at least one requirement ' - 'to %(name)s (see "pip help %(name)s")' % opts) - logger.warning(msg) - - def _build_package_finder(self, options, session, - platform=None, python_versions=None, - abi=None, implementation=None): - """ - Create a package finder appropriate to this requirement command. - """ - index_urls = [options.index_url] + options.extra_index_urls - if options.no_index: - logger.debug('Ignoring indexes: %s', ','.join(index_urls)) - index_urls = [] - - return PackageFinder( - find_links=options.find_links, - format_control=options.format_control, - index_urls=index_urls, - trusted_hosts=options.trusted_hosts, - allow_all_prereleases=options.pre, - process_dependency_links=options.process_dependency_links, - session=session, - platform=platform, - versions=python_versions, - abi=abi, - implementation=implementation, - ) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/baseparser.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/baseparser.py deleted file mode 100644 index 2dd45330..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/baseparser.py +++ /dev/null @@ -1,293 +0,0 @@ -"""Base option parser setup""" -from __future__ import absolute_import - -import sys -import optparse -import os -import re -import textwrap -from distutils.util import strtobool - -from pip._vendor.six import string_types -from pip._vendor.six.moves import configparser -from pip.locations import ( - legacy_config_file, config_basename, running_under_virtualenv, - site_config_files -) -from pip.utils import appdirs, get_terminal_size - - -_environ_prefix_re = re.compile(r"^PIP_", re.I) - - -class PrettyHelpFormatter(optparse.IndentedHelpFormatter): - """A prettier/less verbose help formatter for optparse.""" - - def __init__(self, *args, **kwargs): - # help position must be aligned with __init__.parseopts.description - kwargs['max_help_position'] = 30 - kwargs['indent_increment'] = 1 - kwargs['width'] = get_terminal_size()[0] - 2 - optparse.IndentedHelpFormatter.__init__(self, *args, **kwargs) - - def format_option_strings(self, option): - return self._format_option_strings(option, ' <%s>', ', ') - - def _format_option_strings(self, option, mvarfmt=' <%s>', optsep=', '): - """ - Return a comma-separated list of option strings and metavars. - - :param option: tuple of (short opt, long opt), e.g: ('-f', '--format') - :param mvarfmt: metavar format string - evaluated as mvarfmt % metavar - :param optsep: separator - """ - opts = [] - - if option._short_opts: - opts.append(option._short_opts[0]) - if option._long_opts: - opts.append(option._long_opts[0]) - if len(opts) > 1: - opts.insert(1, optsep) - - if option.takes_value(): - metavar = option.metavar or option.dest.lower() - opts.append(mvarfmt % metavar.lower()) - - return ''.join(opts) - - def format_heading(self, heading): - if heading == 'Options': - return '' - return heading + ':\n' - - def format_usage(self, usage): - """ - Ensure there is only one newline between usage and the first heading - if there is no description. - """ - msg = '\nUsage: %s\n' % self.indent_lines(textwrap.dedent(usage), " ") - return msg - - def format_description(self, description): - # leave full control over description to us - if description: - if hasattr(self.parser, 'main'): - label = 'Commands' - else: - label = 'Description' - # some doc strings have initial newlines, some don't - description = description.lstrip('\n') - # some doc strings have final newlines and spaces, some don't - description = description.rstrip() - # dedent, then reindent - description = self.indent_lines(textwrap.dedent(description), " ") - description = '%s:\n%s\n' % (label, description) - return description - else: - return '' - - def format_epilog(self, epilog): - # leave full control over epilog to us - if epilog: - return epilog - else: - return '' - - def indent_lines(self, text, indent): - new_lines = [indent + line for line in text.split('\n')] - return "\n".join(new_lines) - - -class UpdatingDefaultsHelpFormatter(PrettyHelpFormatter): - """Custom help formatter for use in ConfigOptionParser. - - This is updates the defaults before expanding them, allowing - them to show up correctly in the help listing. - """ - - def expand_default(self, option): - if self.parser is not None: - self.parser._update_defaults(self.parser.defaults) - return optparse.IndentedHelpFormatter.expand_default(self, option) - - -class CustomOptionParser(optparse.OptionParser): - - def insert_option_group(self, idx, *args, **kwargs): - """Insert an OptionGroup at a given position.""" - group = self.add_option_group(*args, **kwargs) - - self.option_groups.pop() - self.option_groups.insert(idx, group) - - return group - - @property - def option_list_all(self): - """Get a list of all options, including those in option groups.""" - res = self.option_list[:] - for i in self.option_groups: - res.extend(i.option_list) - - return res - - -class ConfigOptionParser(CustomOptionParser): - """Custom option parser which updates its defaults by checking the - configuration files and environmental variables""" - - isolated = False - - def __init__(self, *args, **kwargs): - self.config = configparser.RawConfigParser() - self.name = kwargs.pop('name') - self.isolated = kwargs.pop("isolated", False) - self.files = self.get_config_files() - if self.files: - self.config.read(self.files) - assert self.name - optparse.OptionParser.__init__(self, *args, **kwargs) - - def get_config_files(self): - # the files returned by this method will be parsed in order with the - # first files listed being overridden by later files in standard - # ConfigParser fashion - config_file = os.environ.get('PIP_CONFIG_FILE', False) - if config_file == os.devnull: - return [] - - # at the base we have any site-wide configuration - files = list(site_config_files) - - # per-user configuration next - if not self.isolated: - if config_file and os.path.exists(config_file): - files.append(config_file) - else: - # This is the legacy config file, we consider it to be a lower - # priority than the new file location. - files.append(legacy_config_file) - - # This is the new config file, we consider it to be a higher - # priority than the legacy file. - files.append( - os.path.join( - appdirs.user_config_dir("pip"), - config_basename, - ) - ) - - # finally virtualenv configuration first trumping others - if running_under_virtualenv(): - venv_config_file = os.path.join( - sys.prefix, - config_basename, - ) - if os.path.exists(venv_config_file): - files.append(venv_config_file) - - return files - - def check_default(self, option, key, val): - try: - return option.check_value(key, val) - except optparse.OptionValueError as exc: - print("An error occurred during configuration: %s" % exc) - sys.exit(3) - - def _update_defaults(self, defaults): - """Updates the given defaults with values from the config files and - the environ. Does a little special handling for certain types of - options (lists).""" - # Then go and look for the other sources of configuration: - config = {} - # 1. config files - for section in ('global', self.name): - config.update( - self.normalize_keys(self.get_config_section(section)) - ) - # 2. environmental variables - if not self.isolated: - config.update(self.normalize_keys(self.get_environ_vars())) - # Accumulate complex default state. - self.values = optparse.Values(self.defaults) - late_eval = set() - # Then set the options with those values - for key, val in config.items(): - # ignore empty values - if not val: - continue - - option = self.get_option(key) - # Ignore options not present in this parser. E.g. non-globals put - # in [global] by users that want them to apply to all applicable - # commands. - if option is None: - continue - - if option.action in ('store_true', 'store_false', 'count'): - val = strtobool(val) - elif option.action == 'append': - val = val.split() - val = [self.check_default(option, key, v) for v in val] - elif option.action == 'callback': - late_eval.add(option.dest) - opt_str = option.get_opt_string() - val = option.convert_value(opt_str, val) - # From take_action - args = option.callback_args or () - kwargs = option.callback_kwargs or {} - option.callback(option, opt_str, val, self, *args, **kwargs) - else: - val = self.check_default(option, key, val) - - defaults[option.dest] = val - - for key in late_eval: - defaults[key] = getattr(self.values, key) - self.values = None - return defaults - - def normalize_keys(self, items): - """Return a config dictionary with normalized keys regardless of - whether the keys were specified in environment variables or in config - files""" - normalized = {} - for key, val in items: - key = key.replace('_', '-') - if not key.startswith('--'): - key = '--%s' % key # only prefer long opts - normalized[key] = val - return normalized - - def get_config_section(self, name): - """Get a section of a configuration""" - if self.config.has_section(name): - return self.config.items(name) - return [] - - def get_environ_vars(self): - """Returns a generator with all environmental vars with prefix PIP_""" - for key, val in os.environ.items(): - if _environ_prefix_re.search(key): - yield (_environ_prefix_re.sub("", key).lower(), val) - - def get_default_values(self): - """Overriding to make updating the defaults after instantiation of - the option parser possible, _update_defaults() does the dirty work.""" - if not self.process_default_values: - # Old, pre-Optik 1.5 behaviour. - return optparse.Values(self.defaults) - - defaults = self._update_defaults(self.defaults.copy()) # ours - for option in self._get_all_options(): - default = defaults.get(option.dest) - if isinstance(default, string_types): - opt_str = option.get_opt_string() - defaults[option.dest] = option.check_value(opt_str, default) - return optparse.Values(defaults) - - def error(self, msg): - self.print_usage(sys.stderr) - self.exit(2, "%s\n" % msg) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/cmdoptions.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/cmdoptions.py deleted file mode 100644 index f71488cd..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/cmdoptions.py +++ /dev/null @@ -1,633 +0,0 @@ -""" -shared options and groups - -The principle here is to define options once, but *not* instantiate them -globally. One reason being that options with action='append' can carry state -between parses. pip parses general options twice internally, and shouldn't -pass on state. To be consistent, all options will follow this design. - -""" -from __future__ import absolute_import - -from functools import partial -from optparse import OptionGroup, SUPPRESS_HELP, Option -import warnings - -from pip.index import ( - FormatControl, fmt_ctl_handle_mutual_exclude, fmt_ctl_no_binary, - fmt_ctl_no_use_wheel) -from pip.models import PyPI -from pip.locations import USER_CACHE_DIR, src_prefix -from pip.utils.hashes import STRONG_HASHES - - -def make_option_group(group, parser): - """ - Return an OptionGroup object - group -- assumed to be dict with 'name' and 'options' keys - parser -- an optparse Parser - """ - option_group = OptionGroup(parser, group['name']) - for option in group['options']: - option_group.add_option(option()) - return option_group - - -def resolve_wheel_no_use_binary(options): - if not options.use_wheel: - control = options.format_control - fmt_ctl_no_use_wheel(control) - - -def check_install_build_global(options, check_options=None): - """Disable wheels if per-setup.py call options are set. - - :param options: The OptionParser options to update. - :param check_options: The options to check, if not supplied defaults to - options. - """ - if check_options is None: - check_options = options - - def getname(n): - return getattr(check_options, n, None) - names = ["build_options", "global_options", "install_options"] - if any(map(getname, names)): - control = options.format_control - fmt_ctl_no_binary(control) - warnings.warn( - 'Disabling all use of wheels due to the use of --build-options ' - '/ --global-options / --install-options.', stacklevel=2) - - -########### -# options # -########### - -help_ = partial( - Option, - '-h', '--help', - dest='help', - action='help', - help='Show help.') - -isolated_mode = partial( - Option, - "--isolated", - dest="isolated_mode", - action="store_true", - default=False, - help=( - "Run pip in an isolated mode, ignoring environment variables and user " - "configuration." - ), -) - -require_virtualenv = partial( - Option, - # Run only if inside a virtualenv, bail if not. - '--require-virtualenv', '--require-venv', - dest='require_venv', - action='store_true', - default=False, - help=SUPPRESS_HELP) - -verbose = partial( - Option, - '-v', '--verbose', - dest='verbose', - action='count', - default=0, - help='Give more output. Option is additive, and can be used up to 3 times.' -) - -version = partial( - Option, - '-V', '--version', - dest='version', - action='store_true', - help='Show version and exit.') - -quiet = partial( - Option, - '-q', '--quiet', - dest='quiet', - action='count', - default=0, - help=('Give less output. Option is additive, and can be used up to 3' - ' times (corresponding to WARNING, ERROR, and CRITICAL logging' - ' levels).') -) - -log = partial( - Option, - "--log", "--log-file", "--local-log", - dest="log", - metavar="path", - help="Path to a verbose appending log." -) - -no_input = partial( - Option, - # Don't ask for input - '--no-input', - dest='no_input', - action='store_true', - default=False, - help=SUPPRESS_HELP) - -proxy = partial( - Option, - '--proxy', - dest='proxy', - type='str', - default='', - help="Specify a proxy in the form [user:passwd@]proxy.server:port.") - -retries = partial( - Option, - '--retries', - dest='retries', - type='int', - default=5, - help="Maximum number of retries each connection should attempt " - "(default %default times).") - -timeout = partial( - Option, - '--timeout', '--default-timeout', - metavar='sec', - dest='timeout', - type='float', - default=15, - help='Set the socket timeout (default %default seconds).') - -default_vcs = partial( - Option, - # The default version control system for editables, e.g. 'svn' - '--default-vcs', - dest='default_vcs', - type='str', - default='', - help=SUPPRESS_HELP) - -skip_requirements_regex = partial( - Option, - # A regex to be used to skip requirements - '--skip-requirements-regex', - dest='skip_requirements_regex', - type='str', - default='', - help=SUPPRESS_HELP) - - -def exists_action(): - return Option( - # Option when path already exist - '--exists-action', - dest='exists_action', - type='choice', - choices=['s', 'i', 'w', 'b', 'a'], - default=[], - action='append', - metavar='action', - help="Default action when a path already exists: " - "(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.") - - -cert = partial( - Option, - '--cert', - dest='cert', - type='str', - metavar='path', - help="Path to alternate CA bundle.") - -client_cert = partial( - Option, - '--client-cert', - dest='client_cert', - type='str', - default=None, - metavar='path', - help="Path to SSL client certificate, a single file containing the " - "private key and the certificate in PEM format.") - -index_url = partial( - Option, - '-i', '--index-url', '--pypi-url', - dest='index_url', - metavar='URL', - default=PyPI.simple_url, - help="Base URL of Python Package Index (default %default). " - "This should point to a repository compliant with PEP 503 " - "(the simple repository API) or a local directory laid out " - "in the same format.") - - -def extra_index_url(): - return Option( - '--extra-index-url', - dest='extra_index_urls', - metavar='URL', - action='append', - default=[], - help="Extra URLs of package indexes to use in addition to " - "--index-url. Should follow the same rules as " - "--index-url." - ) - - -no_index = partial( - Option, - '--no-index', - dest='no_index', - action='store_true', - default=False, - help='Ignore package index (only looking at --find-links URLs instead).') - - -def find_links(): - return Option( - '-f', '--find-links', - dest='find_links', - action='append', - default=[], - metavar='url', - help="If a url or path to an html file, then parse for links to " - "archives. If a local path or file:// url that's a directory, " - "then look for archives in the directory listing.") - - -def allow_external(): - return Option( - "--allow-external", - dest="allow_external", - action="append", - default=[], - metavar="PACKAGE", - help=SUPPRESS_HELP, - ) - - -allow_all_external = partial( - Option, - "--allow-all-external", - dest="allow_all_external", - action="store_true", - default=False, - help=SUPPRESS_HELP, -) - - -def trusted_host(): - return Option( - "--trusted-host", - dest="trusted_hosts", - action="append", - metavar="HOSTNAME", - default=[], - help="Mark this host as trusted, even though it does not have valid " - "or any HTTPS.", - ) - - -# Remove after 7.0 -no_allow_external = partial( - Option, - "--no-allow-external", - dest="allow_all_external", - action="store_false", - default=False, - help=SUPPRESS_HELP, -) - - -# Remove --allow-insecure after 7.0 -def allow_unsafe(): - return Option( - "--allow-unverified", "--allow-insecure", - dest="allow_unverified", - action="append", - default=[], - metavar="PACKAGE", - help=SUPPRESS_HELP, - ) - -# Remove after 7.0 -no_allow_unsafe = partial( - Option, - "--no-allow-insecure", - dest="allow_all_insecure", - action="store_false", - default=False, - help=SUPPRESS_HELP -) - -# Remove after 1.5 -process_dependency_links = partial( - Option, - "--process-dependency-links", - dest="process_dependency_links", - action="store_true", - default=False, - help="Enable the processing of dependency links.", -) - - -def constraints(): - return Option( - '-c', '--constraint', - dest='constraints', - action='append', - default=[], - metavar='file', - help='Constrain versions using the given constraints file. ' - 'This option can be used multiple times.') - - -def requirements(): - return Option( - '-r', '--requirement', - dest='requirements', - action='append', - default=[], - metavar='file', - help='Install from the given requirements file. ' - 'This option can be used multiple times.') - - -def editable(): - return Option( - '-e', '--editable', - dest='editables', - action='append', - default=[], - metavar='path/url', - help=('Install a project in editable mode (i.e. setuptools ' - '"develop mode") from a local project path or a VCS url.'), - ) - -src = partial( - Option, - '--src', '--source', '--source-dir', '--source-directory', - dest='src_dir', - metavar='dir', - default=src_prefix, - help='Directory to check out editable projects into. ' - 'The default in a virtualenv is "/src". ' - 'The default for global installs is "/src".' -) - -# XXX: deprecated, remove in 9.0 -use_wheel = partial( - Option, - '--use-wheel', - dest='use_wheel', - action='store_true', - default=True, - help=SUPPRESS_HELP, -) - -# XXX: deprecated, remove in 9.0 -no_use_wheel = partial( - Option, - '--no-use-wheel', - dest='use_wheel', - action='store_false', - default=True, - help=('Do not Find and prefer wheel archives when searching indexes and ' - 'find-links locations. DEPRECATED in favour of --no-binary.'), -) - - -def _get_format_control(values, option): - """Get a format_control object.""" - return getattr(values, option.dest) - - -def _handle_no_binary(option, opt_str, value, parser): - existing = getattr(parser.values, option.dest) - fmt_ctl_handle_mutual_exclude( - value, existing.no_binary, existing.only_binary) - - -def _handle_only_binary(option, opt_str, value, parser): - existing = getattr(parser.values, option.dest) - fmt_ctl_handle_mutual_exclude( - value, existing.only_binary, existing.no_binary) - - -def no_binary(): - return Option( - "--no-binary", dest="format_control", action="callback", - callback=_handle_no_binary, type="str", - default=FormatControl(set(), set()), - help="Do not use binary packages. Can be supplied multiple times, and " - "each time adds to the existing value. Accepts either :all: to " - "disable all binary packages, :none: to empty the set, or one or " - "more package names with commas between them. Note that some " - "packages are tricky to compile and may fail to install when " - "this option is used on them.") - - -def only_binary(): - return Option( - "--only-binary", dest="format_control", action="callback", - callback=_handle_only_binary, type="str", - default=FormatControl(set(), set()), - help="Do not use source packages. Can be supplied multiple times, and " - "each time adds to the existing value. Accepts either :all: to " - "disable all source packages, :none: to empty the set, or one or " - "more package names with commas between them. Packages without " - "binary distributions will fail to install when this option is " - "used on them.") - - -cache_dir = partial( - Option, - "--cache-dir", - dest="cache_dir", - default=USER_CACHE_DIR, - metavar="dir", - help="Store the cache data in ." -) - -no_cache = partial( - Option, - "--no-cache-dir", - dest="cache_dir", - action="store_false", - help="Disable the cache.", -) - -no_deps = partial( - Option, - '--no-deps', '--no-dependencies', - dest='ignore_dependencies', - action='store_true', - default=False, - help="Don't install package dependencies.") - -build_dir = partial( - Option, - '-b', '--build', '--build-dir', '--build-directory', - dest='build_dir', - metavar='dir', - help='Directory to unpack packages into and build in.' -) - -ignore_requires_python = partial( - Option, - '--ignore-requires-python', - dest='ignore_requires_python', - action='store_true', - help='Ignore the Requires-Python information.') - -install_options = partial( - Option, - '--install-option', - dest='install_options', - action='append', - metavar='options', - help="Extra arguments to be supplied to the setup.py install " - "command (use like --install-option=\"--install-scripts=/usr/local/" - "bin\"). Use multiple --install-option options to pass multiple " - "options to setup.py install. If you are using an option with a " - "directory path, be sure to use absolute path.") - -global_options = partial( - Option, - '--global-option', - dest='global_options', - action='append', - metavar='options', - help="Extra global options to be supplied to the setup.py " - "call before the install command.") - -no_clean = partial( - Option, - '--no-clean', - action='store_true', - default=False, - help="Don't clean up build directories.") - -pre = partial( - Option, - '--pre', - action='store_true', - default=False, - help="Include pre-release and development versions. By default, " - "pip only finds stable versions.") - -disable_pip_version_check = partial( - Option, - "--disable-pip-version-check", - dest="disable_pip_version_check", - action="store_true", - default=False, - help="Don't periodically check PyPI to determine whether a new version " - "of pip is available for download. Implied with --no-index.") - -# Deprecated, Remove later -always_unzip = partial( - Option, - '-Z', '--always-unzip', - dest='always_unzip', - action='store_true', - help=SUPPRESS_HELP, -) - - -def _merge_hash(option, opt_str, value, parser): - """Given a value spelled "algo:digest", append the digest to a list - pointed to in a dict by the algo name.""" - if not parser.values.hashes: - parser.values.hashes = {} - try: - algo, digest = value.split(':', 1) - except ValueError: - parser.error('Arguments to %s must be a hash name ' - 'followed by a value, like --hash=sha256:abcde...' % - opt_str) - if algo not in STRONG_HASHES: - parser.error('Allowed hash algorithms for %s are %s.' % - (opt_str, ', '.join(STRONG_HASHES))) - parser.values.hashes.setdefault(algo, []).append(digest) - - -hash = partial( - Option, - '--hash', - # Hash values eventually end up in InstallRequirement.hashes due to - # __dict__ copying in process_line(). - dest='hashes', - action='callback', - callback=_merge_hash, - type='string', - help="Verify that the package's archive matches this " - 'hash before installing. Example: --hash=sha256:abcdef...') - - -require_hashes = partial( - Option, - '--require-hashes', - dest='require_hashes', - action='store_true', - default=False, - help='Require a hash to check each requirement against, for ' - 'repeatable installs. This option is implied when any package in a ' - 'requirements file has a --hash option.') - - -########## -# groups # -########## - -general_group = { - 'name': 'General Options', - 'options': [ - help_, - isolated_mode, - require_virtualenv, - verbose, - version, - quiet, - log, - no_input, - proxy, - retries, - timeout, - default_vcs, - skip_requirements_regex, - exists_action, - trusted_host, - cert, - client_cert, - cache_dir, - no_cache, - disable_pip_version_check, - ] -} - -non_deprecated_index_group = { - 'name': 'Package Index Options', - 'options': [ - index_url, - extra_index_url, - no_index, - find_links, - process_dependency_links, - ] -} - -index_group = { - 'name': 'Package Index Options (including deprecated options)', - 'options': non_deprecated_index_group['options'] + [ - allow_external, - allow_all_external, - no_allow_external, - allow_unsafe, - no_allow_unsafe, - ] -} diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__init__.py deleted file mode 100644 index 62c64ebe..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__init__.py +++ /dev/null @@ -1,86 +0,0 @@ -""" -Package containing all pip commands -""" -from __future__ import absolute_import - -from pip.commands.completion import CompletionCommand -from pip.commands.download import DownloadCommand -from pip.commands.freeze import FreezeCommand -from pip.commands.hash import HashCommand -from pip.commands.help import HelpCommand -from pip.commands.list import ListCommand -from pip.commands.check import CheckCommand -from pip.commands.search import SearchCommand -from pip.commands.show import ShowCommand -from pip.commands.install import InstallCommand -from pip.commands.uninstall import UninstallCommand -from pip.commands.wheel import WheelCommand - - -commands_dict = { - CompletionCommand.name: CompletionCommand, - FreezeCommand.name: FreezeCommand, - HashCommand.name: HashCommand, - HelpCommand.name: HelpCommand, - SearchCommand.name: SearchCommand, - ShowCommand.name: ShowCommand, - InstallCommand.name: InstallCommand, - UninstallCommand.name: UninstallCommand, - DownloadCommand.name: DownloadCommand, - ListCommand.name: ListCommand, - CheckCommand.name: CheckCommand, - WheelCommand.name: WheelCommand, -} - - -commands_order = [ - InstallCommand, - DownloadCommand, - UninstallCommand, - FreezeCommand, - ListCommand, - ShowCommand, - CheckCommand, - SearchCommand, - WheelCommand, - HashCommand, - CompletionCommand, - HelpCommand, -] - - -def get_summaries(ordered=True): - """Yields sorted (command name, command summary) tuples.""" - - if ordered: - cmditems = _sort_commands(commands_dict, commands_order) - else: - cmditems = commands_dict.items() - - for name, command_class in cmditems: - yield (name, command_class.summary) - - -def get_similar_commands(name): - """Command name auto-correct.""" - from difflib import get_close_matches - - name = name.lower() - - close_commands = get_close_matches(name, commands_dict.keys()) - - if close_commands: - return close_commands[0] - else: - return False - - -def _sort_commands(cmddict, order): - def keyfn(key): - try: - return order.index(key[1]) - except ValueError: - # unordered items should come last - return 0xff - - return sorted(cmddict.items(), key=keyfn) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 119cee19..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/check.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/check.cpython-36.pyc deleted file mode 100644 index cdd4f44a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/check.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/completion.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/completion.cpython-36.pyc deleted file mode 100644 index e35a32be..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/completion.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/download.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/download.cpython-36.pyc deleted file mode 100644 index 7de73d72..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/download.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/freeze.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/freeze.cpython-36.pyc deleted file mode 100644 index a785d677..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/freeze.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/hash.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/hash.cpython-36.pyc deleted file mode 100644 index 8492c51d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/hash.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/help.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/help.cpython-36.pyc deleted file mode 100644 index 0e95199c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/help.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/install.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/install.cpython-36.pyc deleted file mode 100644 index 4b1fedfd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/install.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/list.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/list.cpython-36.pyc deleted file mode 100644 index 2cd2b0e1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/list.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/search.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/search.cpython-36.pyc deleted file mode 100644 index b680ee75..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/search.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/show.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/show.cpython-36.pyc deleted file mode 100644 index 0b761af3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/show.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/uninstall.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/uninstall.cpython-36.pyc deleted file mode 100644 index 38eba66f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/uninstall.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/wheel.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/wheel.cpython-36.pyc deleted file mode 100644 index b81c23dd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/__pycache__/wheel.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/check.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/check.py deleted file mode 100644 index 70458adf..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/check.py +++ /dev/null @@ -1,39 +0,0 @@ -import logging - -from pip.basecommand import Command -from pip.operations.check import check_requirements -from pip.utils import get_installed_distributions - - -logger = logging.getLogger(__name__) - - -class CheckCommand(Command): - """Verify installed packages have compatible dependencies.""" - name = 'check' - usage = """ - %prog [options]""" - summary = 'Verify installed packages have compatible dependencies.' - - def run(self, options, args): - dists = get_installed_distributions(local_only=False, skip=()) - missing_reqs_dict, incompatible_reqs_dict = check_requirements(dists) - - for dist in dists: - key = '%s==%s' % (dist.project_name, dist.version) - - for requirement in missing_reqs_dict.get(key, []): - logger.info( - "%s %s requires %s, which is not installed.", - dist.project_name, dist.version, requirement.project_name) - - for requirement, actual in incompatible_reqs_dict.get(key, []): - logger.info( - "%s %s has requirement %s, but you have %s %s.", - dist.project_name, dist.version, requirement, - actual.project_name, actual.version) - - if missing_reqs_dict or incompatible_reqs_dict: - return 1 - else: - logger.info("No broken requirements found.") diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/completion.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/completion.py deleted file mode 100644 index 66e41a67..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/completion.py +++ /dev/null @@ -1,81 +0,0 @@ -from __future__ import absolute_import - -import sys -from pip.basecommand import Command - -BASE_COMPLETION = """ -# pip %(shell)s completion start%(script)s# pip %(shell)s completion end -""" - -COMPLETION_SCRIPTS = { - 'bash': """ -_pip_completion() -{ - COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \\ - COMP_CWORD=$COMP_CWORD \\ - PIP_AUTO_COMPLETE=1 $1 ) ) -} -complete -o default -F _pip_completion pip -""", 'zsh': """ -function _pip_completion { - local words cword - read -Ac words - read -cn cword - reply=( $( COMP_WORDS="$words[*]" \\ - COMP_CWORD=$(( cword-1 )) \\ - PIP_AUTO_COMPLETE=1 $words[1] ) ) -} -compctl -K _pip_completion pip -""", 'fish': """ -function __fish_complete_pip - set -lx COMP_WORDS (commandline -o) "" - set -lx COMP_CWORD (math (contains -i -- (commandline -t) $COMP_WORDS)-1) - set -lx PIP_AUTO_COMPLETE 1 - string split \ -- (eval $COMP_WORDS[1]) -end -complete -fa "(__fish_complete_pip)" -c pip -"""} - - -class CompletionCommand(Command): - """A helper command to be used for command completion.""" - name = 'completion' - summary = 'A helper command used for command completion.' - - def __init__(self, *args, **kw): - super(CompletionCommand, self).__init__(*args, **kw) - - cmd_opts = self.cmd_opts - - cmd_opts.add_option( - '--bash', '-b', - action='store_const', - const='bash', - dest='shell', - help='Emit completion code for bash') - cmd_opts.add_option( - '--zsh', '-z', - action='store_const', - const='zsh', - dest='shell', - help='Emit completion code for zsh') - cmd_opts.add_option( - '--fish', '-f', - action='store_const', - const='fish', - dest='shell', - help='Emit completion code for fish') - - self.parser.insert_option_group(0, cmd_opts) - - def run(self, options, args): - """Prints the completion code of the given shell""" - shells = COMPLETION_SCRIPTS.keys() - shell_options = ['--' + shell for shell in sorted(shells)] - if options.shell in shells: - script = COMPLETION_SCRIPTS.get(options.shell, '') - print(BASE_COMPLETION % {'script': script, 'shell': options.shell}) - else: - sys.stderr.write( - 'ERROR: You must pass %s\n' % ' or '.join(shell_options) - ) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/download.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/download.py deleted file mode 100644 index 4bc06408..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/download.py +++ /dev/null @@ -1,212 +0,0 @@ -from __future__ import absolute_import - -import logging -import os - -from pip.exceptions import CommandError -from pip.index import FormatControl -from pip.req import RequirementSet -from pip.basecommand import RequirementCommand -from pip import cmdoptions -from pip.utils import ensure_dir, normalize_path -from pip.utils.build import BuildDirectory -from pip.utils.filesystem import check_path_owner - - -logger = logging.getLogger(__name__) - - -class DownloadCommand(RequirementCommand): - """ - Download packages from: - - - PyPI (and other indexes) using requirement specifiers. - - VCS project urls. - - Local project directories. - - Local or remote source archives. - - pip also supports downloading from "requirements files", which provide - an easy way to specify a whole environment to be downloaded. - """ - name = 'download' - - usage = """ - %prog [options] [package-index-options] ... - %prog [options] -r [package-index-options] ... - %prog [options] [-e] ... - %prog [options] [-e] ... - %prog [options] ...""" - - summary = 'Download packages.' - - def __init__(self, *args, **kw): - super(DownloadCommand, self).__init__(*args, **kw) - - cmd_opts = self.cmd_opts - - cmd_opts.add_option(cmdoptions.constraints()) - cmd_opts.add_option(cmdoptions.editable()) - cmd_opts.add_option(cmdoptions.requirements()) - cmd_opts.add_option(cmdoptions.build_dir()) - cmd_opts.add_option(cmdoptions.no_deps()) - cmd_opts.add_option(cmdoptions.global_options()) - cmd_opts.add_option(cmdoptions.no_binary()) - cmd_opts.add_option(cmdoptions.only_binary()) - cmd_opts.add_option(cmdoptions.src()) - cmd_opts.add_option(cmdoptions.pre()) - cmd_opts.add_option(cmdoptions.no_clean()) - cmd_opts.add_option(cmdoptions.require_hashes()) - - cmd_opts.add_option( - '-d', '--dest', '--destination-dir', '--destination-directory', - dest='download_dir', - metavar='dir', - default=os.curdir, - help=("Download packages into ."), - ) - - cmd_opts.add_option( - '--platform', - dest='platform', - metavar='platform', - default=None, - help=("Only download wheels compatible with . " - "Defaults to the platform of the running system."), - ) - - cmd_opts.add_option( - '--python-version', - dest='python_version', - metavar='python_version', - default=None, - help=("Only download wheels compatible with Python " - "interpreter version . If not specified, then the " - "current system interpreter minor version is used. A major " - "version (e.g. '2') can be specified to match all " - "minor revs of that major version. A minor version " - "(e.g. '34') can also be specified."), - ) - - cmd_opts.add_option( - '--implementation', - dest='implementation', - metavar='implementation', - default=None, - help=("Only download wheels compatible with Python " - "implementation , e.g. 'pp', 'jy', 'cp', " - " or 'ip'. If not specified, then the current " - "interpreter implementation is used. Use 'py' to force " - "implementation-agnostic wheels."), - ) - - cmd_opts.add_option( - '--abi', - dest='abi', - metavar='abi', - default=None, - help=("Only download wheels compatible with Python " - "abi , e.g. 'pypy_41'. If not specified, then the " - "current interpreter abi tag is used. Generally " - "you will need to specify --implementation, " - "--platform, and --python-version when using " - "this option."), - ) - - index_opts = cmdoptions.make_option_group( - cmdoptions.non_deprecated_index_group, - self.parser, - ) - - self.parser.insert_option_group(0, index_opts) - self.parser.insert_option_group(0, cmd_opts) - - def run(self, options, args): - options.ignore_installed = True - - if options.python_version: - python_versions = [options.python_version] - else: - python_versions = None - - dist_restriction_set = any([ - options.python_version, - options.platform, - options.abi, - options.implementation, - ]) - binary_only = FormatControl(set(), set([':all:'])) - if dist_restriction_set and options.format_control != binary_only: - raise CommandError( - "--only-binary=:all: must be set and --no-binary must not " - "be set (or must be set to :none:) when restricting platform " - "and interpreter constraints using --python-version, " - "--platform, --abi, or --implementation." - ) - - options.src_dir = os.path.abspath(options.src_dir) - options.download_dir = normalize_path(options.download_dir) - - ensure_dir(options.download_dir) - - with self._build_session(options) as session: - finder = self._build_package_finder( - options=options, - session=session, - platform=options.platform, - python_versions=python_versions, - abi=options.abi, - implementation=options.implementation, - ) - build_delete = (not (options.no_clean or options.build_dir)) - if options.cache_dir and not check_path_owner(options.cache_dir): - logger.warning( - "The directory '%s' or its parent directory is not owned " - "by the current user and caching wheels has been " - "disabled. check the permissions and owner of that " - "directory. If executing pip with sudo, you may want " - "sudo's -H flag.", - options.cache_dir, - ) - options.cache_dir = None - - with BuildDirectory(options.build_dir, - delete=build_delete) as build_dir: - - requirement_set = RequirementSet( - build_dir=build_dir, - src_dir=options.src_dir, - download_dir=options.download_dir, - ignore_installed=True, - ignore_dependencies=options.ignore_dependencies, - session=session, - isolated=options.isolated_mode, - require_hashes=options.require_hashes - ) - self.populate_requirement_set( - requirement_set, - args, - options, - finder, - session, - self.name, - None - ) - - if not requirement_set.has_requirements: - return - - requirement_set.prepare_files(finder) - - downloaded = ' '.join([ - req.name for req in requirement_set.successfully_downloaded - ]) - if downloaded: - logger.info( - 'Successfully downloaded %s', downloaded - ) - - # Clean up - if not options.no_clean: - requirement_set.cleanup_files() - - return requirement_set diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/freeze.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/freeze.py deleted file mode 100644 index c1987961..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/freeze.py +++ /dev/null @@ -1,87 +0,0 @@ -from __future__ import absolute_import - -import sys - -import pip -from pip.compat import stdlib_pkgs -from pip.basecommand import Command -from pip.operations.freeze import freeze -from pip.wheel import WheelCache - - -DEV_PKGS = ('pip', 'setuptools', 'distribute', 'wheel') - - -class FreezeCommand(Command): - """ - Output installed packages in requirements format. - - packages are listed in a case-insensitive sorted order. - """ - name = 'freeze' - usage = """ - %prog [options]""" - summary = 'Output installed packages in requirements format.' - log_streams = ("ext://sys.stderr", "ext://sys.stderr") - - def __init__(self, *args, **kw): - super(FreezeCommand, self).__init__(*args, **kw) - - self.cmd_opts.add_option( - '-r', '--requirement', - dest='requirements', - action='append', - default=[], - metavar='file', - help="Use the order in the given requirements file and its " - "comments when generating output. This option can be " - "used multiple times.") - self.cmd_opts.add_option( - '-f', '--find-links', - dest='find_links', - action='append', - default=[], - metavar='URL', - help='URL for finding packages, which will be added to the ' - 'output.') - self.cmd_opts.add_option( - '-l', '--local', - dest='local', - action='store_true', - default=False, - help='If in a virtualenv that has global access, do not output ' - 'globally-installed packages.') - self.cmd_opts.add_option( - '--user', - dest='user', - action='store_true', - default=False, - help='Only output packages installed in user-site.') - self.cmd_opts.add_option( - '--all', - dest='freeze_all', - action='store_true', - help='Do not skip these packages in the output:' - ' %s' % ', '.join(DEV_PKGS)) - - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options, args): - format_control = pip.index.FormatControl(set(), set()) - wheel_cache = WheelCache(options.cache_dir, format_control) - skip = set(stdlib_pkgs) - if not options.freeze_all: - skip.update(DEV_PKGS) - - freeze_kwargs = dict( - requirement=options.requirements, - find_links=options.find_links, - local_only=options.local, - user_only=options.user, - skip_regex=options.skip_requirements_regex, - isolated=options.isolated_mode, - wheel_cache=wheel_cache, - skip=skip) - - for line in freeze(**freeze_kwargs): - sys.stdout.write(line + '\n') diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/hash.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/hash.py deleted file mode 100644 index 27cca0bf..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/hash.py +++ /dev/null @@ -1,57 +0,0 @@ -from __future__ import absolute_import - -import hashlib -import logging -import sys - -from pip.basecommand import Command -from pip.status_codes import ERROR -from pip.utils import read_chunks -from pip.utils.hashes import FAVORITE_HASH, STRONG_HASHES - - -logger = logging.getLogger(__name__) - - -class HashCommand(Command): - """ - Compute a hash of a local package archive. - - These can be used with --hash in a requirements file to do repeatable - installs. - - """ - name = 'hash' - usage = '%prog [options] ...' - summary = 'Compute hashes of package archives.' - - def __init__(self, *args, **kw): - super(HashCommand, self).__init__(*args, **kw) - self.cmd_opts.add_option( - '-a', '--algorithm', - dest='algorithm', - choices=STRONG_HASHES, - action='store', - default=FAVORITE_HASH, - help='The hash algorithm to use: one of %s' % - ', '.join(STRONG_HASHES)) - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options, args): - if not args: - self.parser.print_usage(sys.stderr) - return ERROR - - algorithm = options.algorithm - for path in args: - logger.info('%s:\n--hash=%s:%s', - path, algorithm, _hash_of_file(path, algorithm)) - - -def _hash_of_file(path, algorithm): - """Return the hash digest of a file.""" - with open(path, 'rb') as archive: - hash = hashlib.new(algorithm) - for chunk in read_chunks(archive): - hash.update(chunk) - return hash.hexdigest() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/help.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/help.py deleted file mode 100644 index 11722f1e..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/help.py +++ /dev/null @@ -1,35 +0,0 @@ -from __future__ import absolute_import - -from pip.basecommand import Command, SUCCESS -from pip.exceptions import CommandError - - -class HelpCommand(Command): - """Show help for commands""" - name = 'help' - usage = """ - %prog """ - summary = 'Show help for commands.' - - def run(self, options, args): - from pip.commands import commands_dict, get_similar_commands - - try: - # 'pip help' with no args is handled by pip.__init__.parseopt() - cmd_name = args[0] # the command we need help for - except IndexError: - return SUCCESS - - if cmd_name not in commands_dict: - guess = get_similar_commands(cmd_name) - - msg = ['unknown command "%s"' % cmd_name] - if guess: - msg.append('maybe you meant "%s"' % guess) - - raise CommandError(' - '.join(msg)) - - command = commands_dict[cmd_name]() - command.parser.print_help() - - return SUCCESS diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/install.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/install.py deleted file mode 100644 index 227c5264..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/install.py +++ /dev/null @@ -1,437 +0,0 @@ -from __future__ import absolute_import - -import logging -import operator -import os -import tempfile -import shutil -import warnings -try: - import wheel -except ImportError: - wheel = None - -from pip.req import RequirementSet -from pip.basecommand import RequirementCommand -from pip.locations import virtualenv_no_global, distutils_scheme -from pip.exceptions import ( - InstallationError, CommandError, PreviousBuildDirError, -) -from pip import cmdoptions -from pip.utils import ensure_dir, get_installed_version -from pip.utils.build import BuildDirectory -from pip.utils.deprecation import RemovedInPip10Warning -from pip.utils.filesystem import check_path_owner -from pip.wheel import WheelCache, WheelBuilder - - -logger = logging.getLogger(__name__) - - -class InstallCommand(RequirementCommand): - """ - Install packages from: - - - PyPI (and other indexes) using requirement specifiers. - - VCS project urls. - - Local project directories. - - Local or remote source archives. - - pip also supports installing from "requirements files", which provide - an easy way to specify a whole environment to be installed. - """ - name = 'install' - - usage = """ - %prog [options] [package-index-options] ... - %prog [options] -r [package-index-options] ... - %prog [options] [-e] ... - %prog [options] [-e] ... - %prog [options] ...""" - - summary = 'Install packages.' - - def __init__(self, *args, **kw): - super(InstallCommand, self).__init__(*args, **kw) - - cmd_opts = self.cmd_opts - - cmd_opts.add_option(cmdoptions.constraints()) - cmd_opts.add_option(cmdoptions.editable()) - cmd_opts.add_option(cmdoptions.requirements()) - cmd_opts.add_option(cmdoptions.build_dir()) - - cmd_opts.add_option( - '-t', '--target', - dest='target_dir', - metavar='dir', - default=None, - help='Install packages into . ' - 'By default this will not replace existing files/folders in ' - '. Use --upgrade to replace existing packages in ' - 'with new versions.' - ) - - cmd_opts.add_option( - '-d', '--download', '--download-dir', '--download-directory', - dest='download_dir', - metavar='dir', - default=None, - help=("Download packages into instead of installing them, " - "regardless of what's already installed."), - ) - - cmd_opts.add_option(cmdoptions.src()) - - cmd_opts.add_option( - '-U', '--upgrade', - dest='upgrade', - action='store_true', - help='Upgrade all specified packages to the newest available ' - 'version. The handling of dependencies depends on the ' - 'upgrade-strategy used.' - ) - - cmd_opts.add_option( - '--upgrade-strategy', - dest='upgrade_strategy', - default='eager', - choices=['only-if-needed', 'eager'], - help='Determines how dependency upgrading should be handled. ' - '"eager" - dependencies are upgraded regardless of ' - 'whether the currently installed version satisfies the ' - 'requirements of the upgraded package(s). ' - '"only-if-needed" - are upgraded only when they do not ' - 'satisfy the requirements of the upgraded package(s).' - ) - - cmd_opts.add_option( - '--force-reinstall', - dest='force_reinstall', - action='store_true', - help='When upgrading, reinstall all packages even if they are ' - 'already up-to-date.') - - cmd_opts.add_option( - '-I', '--ignore-installed', - dest='ignore_installed', - action='store_true', - help='Ignore the installed packages (reinstalling instead).') - - cmd_opts.add_option(cmdoptions.ignore_requires_python()) - cmd_opts.add_option(cmdoptions.no_deps()) - - cmd_opts.add_option(cmdoptions.install_options()) - cmd_opts.add_option(cmdoptions.global_options()) - - cmd_opts.add_option( - '--user', - dest='use_user_site', - action='store_true', - help="Install to the Python user install directory for your " - "platform. Typically ~/.local/, or %APPDATA%\Python on " - "Windows. (See the Python documentation for site.USER_BASE " - "for full details.)") - - cmd_opts.add_option( - '--egg', - dest='as_egg', - action='store_true', - help="Install packages as eggs, not 'flat', like pip normally " - "does. This option is not about installing *from* eggs. " - "(WARNING: Because this option overrides pip's normal install" - " logic, requirements files may not behave as expected.)") - - cmd_opts.add_option( - '--root', - dest='root_path', - metavar='dir', - default=None, - help="Install everything relative to this alternate root " - "directory.") - - cmd_opts.add_option( - '--prefix', - dest='prefix_path', - metavar='dir', - default=None, - help="Installation prefix where lib, bin and other top-level " - "folders are placed") - - cmd_opts.add_option( - "--compile", - action="store_true", - dest="compile", - default=True, - help="Compile py files to pyc", - ) - - cmd_opts.add_option( - "--no-compile", - action="store_false", - dest="compile", - help="Do not compile py files to pyc", - ) - - cmd_opts.add_option(cmdoptions.use_wheel()) - cmd_opts.add_option(cmdoptions.no_use_wheel()) - cmd_opts.add_option(cmdoptions.no_binary()) - cmd_opts.add_option(cmdoptions.only_binary()) - cmd_opts.add_option(cmdoptions.pre()) - cmd_opts.add_option(cmdoptions.no_clean()) - cmd_opts.add_option(cmdoptions.require_hashes()) - - index_opts = cmdoptions.make_option_group( - cmdoptions.index_group, - self.parser, - ) - - self.parser.insert_option_group(0, index_opts) - self.parser.insert_option_group(0, cmd_opts) - - def run(self, options, args): - cmdoptions.resolve_wheel_no_use_binary(options) - cmdoptions.check_install_build_global(options) - - if options.as_egg: - warnings.warn( - "--egg has been deprecated and will be removed in the future. " - "This flag is mutually exclusive with large parts of pip, and " - "actually using it invalidates pip's ability to manage the " - "installation process.", - RemovedInPip10Warning, - ) - - if options.allow_external: - warnings.warn( - "--allow-external has been deprecated and will be removed in " - "the future. Due to changes in the repository protocol, it no " - "longer has any effect.", - RemovedInPip10Warning, - ) - - if options.allow_all_external: - warnings.warn( - "--allow-all-external has been deprecated and will be removed " - "in the future. Due to changes in the repository protocol, it " - "no longer has any effect.", - RemovedInPip10Warning, - ) - - if options.allow_unverified: - warnings.warn( - "--allow-unverified has been deprecated and will be removed " - "in the future. Due to changes in the repository protocol, it " - "no longer has any effect.", - RemovedInPip10Warning, - ) - - if options.download_dir: - warnings.warn( - "pip install --download has been deprecated and will be " - "removed in the future. Pip now has a download command that " - "should be used instead.", - RemovedInPip10Warning, - ) - options.ignore_installed = True - - if options.build_dir: - options.build_dir = os.path.abspath(options.build_dir) - - options.src_dir = os.path.abspath(options.src_dir) - install_options = options.install_options or [] - if options.use_user_site: - if options.prefix_path: - raise CommandError( - "Can not combine '--user' and '--prefix' as they imply " - "different installation locations" - ) - if virtualenv_no_global(): - raise InstallationError( - "Can not perform a '--user' install. User site-packages " - "are not visible in this virtualenv." - ) - install_options.append('--user') - install_options.append('--prefix=') - - temp_target_dir = None - if options.target_dir: - options.ignore_installed = True - temp_target_dir = tempfile.mkdtemp() - options.target_dir = os.path.abspath(options.target_dir) - if (os.path.exists(options.target_dir) and not - os.path.isdir(options.target_dir)): - raise CommandError( - "Target path exists but is not a directory, will not " - "continue." - ) - install_options.append('--home=' + temp_target_dir) - - global_options = options.global_options or [] - - with self._build_session(options) as session: - - finder = self._build_package_finder(options, session) - build_delete = (not (options.no_clean or options.build_dir)) - wheel_cache = WheelCache(options.cache_dir, options.format_control) - if options.cache_dir and not check_path_owner(options.cache_dir): - logger.warning( - "The directory '%s' or its parent directory is not owned " - "by the current user and caching wheels has been " - "disabled. check the permissions and owner of that " - "directory. If executing pip with sudo, you may want " - "sudo's -H flag.", - options.cache_dir, - ) - options.cache_dir = None - - with BuildDirectory(options.build_dir, - delete=build_delete) as build_dir: - requirement_set = RequirementSet( - build_dir=build_dir, - src_dir=options.src_dir, - download_dir=options.download_dir, - upgrade=options.upgrade, - upgrade_strategy=options.upgrade_strategy, - as_egg=options.as_egg, - ignore_installed=options.ignore_installed, - ignore_dependencies=options.ignore_dependencies, - ignore_requires_python=options.ignore_requires_python, - force_reinstall=options.force_reinstall, - use_user_site=options.use_user_site, - target_dir=temp_target_dir, - session=session, - pycompile=options.compile, - isolated=options.isolated_mode, - wheel_cache=wheel_cache, - require_hashes=options.require_hashes, - ) - - self.populate_requirement_set( - requirement_set, args, options, finder, session, self.name, - wheel_cache - ) - - if not requirement_set.has_requirements: - return - - try: - if (options.download_dir or not wheel or not - options.cache_dir): - # on -d don't do complex things like building - # wheels, and don't try to build wheels when wheel is - # not installed. - requirement_set.prepare_files(finder) - else: - # build wheels before install. - wb = WheelBuilder( - requirement_set, - finder, - build_options=[], - global_options=[], - ) - # Ignore the result: a failed wheel will be - # installed from the sdist/vcs whatever. - wb.build(autobuilding=True) - - if not options.download_dir: - requirement_set.install( - install_options, - global_options, - root=options.root_path, - prefix=options.prefix_path, - ) - - possible_lib_locations = get_lib_location_guesses( - user=options.use_user_site, - home=temp_target_dir, - root=options.root_path, - prefix=options.prefix_path, - isolated=options.isolated_mode, - ) - reqs = sorted( - requirement_set.successfully_installed, - key=operator.attrgetter('name')) - items = [] - for req in reqs: - item = req.name - try: - installed_version = get_installed_version( - req.name, possible_lib_locations - ) - if installed_version: - item += '-' + installed_version - except Exception: - pass - items.append(item) - installed = ' '.join(items) - if installed: - logger.info('Successfully installed %s', installed) - else: - downloaded = ' '.join([ - req.name - for req in requirement_set.successfully_downloaded - ]) - if downloaded: - logger.info( - 'Successfully downloaded %s', downloaded - ) - except PreviousBuildDirError: - options.no_clean = True - raise - finally: - # Clean up - if not options.no_clean: - requirement_set.cleanup_files() - - if options.target_dir: - ensure_dir(options.target_dir) - - # Checking both purelib and platlib directories for installed - # packages to be moved to target directory - lib_dir_list = [] - - purelib_dir = distutils_scheme('', home=temp_target_dir)['purelib'] - platlib_dir = distutils_scheme('', home=temp_target_dir)['platlib'] - - if os.path.exists(purelib_dir): - lib_dir_list.append(purelib_dir) - if os.path.exists(platlib_dir) and platlib_dir != purelib_dir: - lib_dir_list.append(platlib_dir) - - for lib_dir in lib_dir_list: - for item in os.listdir(lib_dir): - target_item_dir = os.path.join(options.target_dir, item) - if os.path.exists(target_item_dir): - if not options.upgrade: - logger.warning( - 'Target directory %s already exists. Specify ' - '--upgrade to force replacement.', - target_item_dir - ) - continue - if os.path.islink(target_item_dir): - logger.warning( - 'Target directory %s already exists and is ' - 'a link. Pip will not automatically replace ' - 'links, please remove if replacement is ' - 'desired.', - target_item_dir - ) - continue - if os.path.isdir(target_item_dir): - shutil.rmtree(target_item_dir) - else: - os.remove(target_item_dir) - - shutil.move( - os.path.join(lib_dir, item), - target_item_dir - ) - shutil.rmtree(temp_target_dir) - return requirement_set - - -def get_lib_location_guesses(*args, **kwargs): - scheme = distutils_scheme('', *args, **kwargs) - return [scheme['purelib'], scheme['platlib']] diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/list.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/list.py deleted file mode 100644 index 6f6995d7..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/list.py +++ /dev/null @@ -1,337 +0,0 @@ -from __future__ import absolute_import - -import json -import logging -import warnings -try: - from itertools import zip_longest -except ImportError: - from itertools import izip_longest as zip_longest - -from pip._vendor import six - -from pip.basecommand import Command -from pip.exceptions import CommandError -from pip.index import PackageFinder -from pip.utils import ( - get_installed_distributions, dist_is_editable) -from pip.utils.deprecation import RemovedInPip10Warning -from pip.cmdoptions import make_option_group, index_group - -logger = logging.getLogger(__name__) - - -class ListCommand(Command): - """ - List installed packages, including editables. - - Packages are listed in a case-insensitive sorted order. - """ - name = 'list' - usage = """ - %prog [options]""" - summary = 'List installed packages.' - - def __init__(self, *args, **kw): - super(ListCommand, self).__init__(*args, **kw) - - cmd_opts = self.cmd_opts - - cmd_opts.add_option( - '-o', '--outdated', - action='store_true', - default=False, - help='List outdated packages') - cmd_opts.add_option( - '-u', '--uptodate', - action='store_true', - default=False, - help='List uptodate packages') - cmd_opts.add_option( - '-e', '--editable', - action='store_true', - default=False, - help='List editable projects.') - cmd_opts.add_option( - '-l', '--local', - action='store_true', - default=False, - help=('If in a virtualenv that has global access, do not list ' - 'globally-installed packages.'), - ) - self.cmd_opts.add_option( - '--user', - dest='user', - action='store_true', - default=False, - help='Only output packages installed in user-site.') - - cmd_opts.add_option( - '--pre', - action='store_true', - default=False, - help=("Include pre-release and development versions. By default, " - "pip only finds stable versions."), - ) - - cmd_opts.add_option( - '--format', - action='store', - dest='list_format', - choices=('legacy', 'columns', 'freeze', 'json'), - help="Select the output format among: legacy (default), columns, " - "freeze or json.", - ) - - cmd_opts.add_option( - '--not-required', - action='store_true', - dest='not_required', - help="List packages that are not dependencies of " - "installed packages.", - ) - - index_opts = make_option_group(index_group, self.parser) - - self.parser.insert_option_group(0, index_opts) - self.parser.insert_option_group(0, cmd_opts) - - def _build_package_finder(self, options, index_urls, session): - """ - Create a package finder appropriate to this list command. - """ - return PackageFinder( - find_links=options.find_links, - index_urls=index_urls, - allow_all_prereleases=options.pre, - trusted_hosts=options.trusted_hosts, - process_dependency_links=options.process_dependency_links, - session=session, - ) - - def run(self, options, args): - if options.allow_external: - warnings.warn( - "--allow-external has been deprecated and will be removed in " - "the future. Due to changes in the repository protocol, it no " - "longer has any effect.", - RemovedInPip10Warning, - ) - - if options.allow_all_external: - warnings.warn( - "--allow-all-external has been deprecated and will be removed " - "in the future. Due to changes in the repository protocol, it " - "no longer has any effect.", - RemovedInPip10Warning, - ) - - if options.allow_unverified: - warnings.warn( - "--allow-unverified has been deprecated and will be removed " - "in the future. Due to changes in the repository protocol, it " - "no longer has any effect.", - RemovedInPip10Warning, - ) - - if options.list_format is None: - warnings.warn( - "The default format will switch to columns in the future. " - "You can use --format=(legacy|columns) (or define a " - "format=(legacy|columns) in your pip.conf under the [list] " - "section) to disable this warning.", - RemovedInPip10Warning, - ) - - if options.outdated and options.uptodate: - raise CommandError( - "Options --outdated and --uptodate cannot be combined.") - - packages = get_installed_distributions( - local_only=options.local, - user_only=options.user, - editables_only=options.editable, - ) - - if options.outdated: - packages = self.get_outdated(packages, options) - elif options.uptodate: - packages = self.get_uptodate(packages, options) - - if options.not_required: - packages = self.get_not_required(packages, options) - - self.output_package_listing(packages, options) - - def get_outdated(self, packages, options): - return [ - dist for dist in self.iter_packages_latest_infos(packages, options) - if dist.latest_version > dist.parsed_version - ] - - def get_uptodate(self, packages, options): - return [ - dist for dist in self.iter_packages_latest_infos(packages, options) - if dist.latest_version == dist.parsed_version - ] - - def get_not_required(self, packages, options): - dep_keys = set() - for dist in packages: - dep_keys.update(requirement.key for requirement in dist.requires()) - return set(pkg for pkg in packages if pkg.key not in dep_keys) - - def iter_packages_latest_infos(self, packages, options): - index_urls = [options.index_url] + options.extra_index_urls - if options.no_index: - logger.debug('Ignoring indexes: %s', ','.join(index_urls)) - index_urls = [] - - dependency_links = [] - for dist in packages: - if dist.has_metadata('dependency_links.txt'): - dependency_links.extend( - dist.get_metadata_lines('dependency_links.txt'), - ) - - with self._build_session(options) as session: - finder = self._build_package_finder(options, index_urls, session) - finder.add_dependency_links(dependency_links) - - for dist in packages: - typ = 'unknown' - all_candidates = finder.find_all_candidates(dist.key) - if not options.pre: - # Remove prereleases - all_candidates = [candidate for candidate in all_candidates - if not candidate.version.is_prerelease] - - if not all_candidates: - continue - best_candidate = max(all_candidates, - key=finder._candidate_sort_key) - remote_version = best_candidate.version - if best_candidate.location.is_wheel: - typ = 'wheel' - else: - typ = 'sdist' - # This is dirty but makes the rest of the code much cleaner - dist.latest_version = remote_version - dist.latest_filetype = typ - yield dist - - def output_legacy(self, dist): - if dist_is_editable(dist): - return '%s (%s, %s)' % ( - dist.project_name, - dist.version, - dist.location, - ) - else: - return '%s (%s)' % (dist.project_name, dist.version) - - def output_legacy_latest(self, dist): - return '%s - Latest: %s [%s]' % ( - self.output_legacy(dist), - dist.latest_version, - dist.latest_filetype, - ) - - def output_package_listing(self, packages, options): - packages = sorted( - packages, - key=lambda dist: dist.project_name.lower(), - ) - if options.list_format == 'columns' and packages: - data, header = format_for_columns(packages, options) - self.output_package_listing_columns(data, header) - elif options.list_format == 'freeze': - for dist in packages: - logger.info("%s==%s", dist.project_name, dist.version) - elif options.list_format == 'json': - logger.info(format_for_json(packages, options)) - else: # legacy - for dist in packages: - if options.outdated: - logger.info(self.output_legacy_latest(dist)) - else: - logger.info(self.output_legacy(dist)) - - def output_package_listing_columns(self, data, header): - # insert the header first: we need to know the size of column names - if len(data) > 0: - data.insert(0, header) - - pkg_strings, sizes = tabulate(data) - - # Create and add a separator. - if len(data) > 0: - pkg_strings.insert(1, " ".join(map(lambda x: '-' * x, sizes))) - - for val in pkg_strings: - logger.info(val) - - -def tabulate(vals): - # From pfmoore on GitHub: - # https://github.com/pypa/pip/issues/3651#issuecomment-216932564 - assert len(vals) > 0 - - sizes = [0] * max(len(x) for x in vals) - for row in vals: - sizes = [max(s, len(str(c))) for s, c in zip_longest(sizes, row)] - - result = [] - for row in vals: - display = " ".join([str(c).ljust(s) if c is not None else '' - for s, c in zip_longest(sizes, row)]) - result.append(display) - - return result, sizes - - -def format_for_columns(pkgs, options): - """ - Convert the package data into something usable - by output_package_listing_columns. - """ - running_outdated = options.outdated - # Adjust the header for the `pip list --outdated` case. - if running_outdated: - header = ["Package", "Version", "Latest", "Type"] - else: - header = ["Package", "Version"] - - data = [] - if any(dist_is_editable(x) for x in pkgs): - header.append("Location") - - for proj in pkgs: - # if we're working on the 'outdated' list, separate out the - # latest_version and type - row = [proj.project_name, proj.version] - - if running_outdated: - row.append(proj.latest_version) - row.append(proj.latest_filetype) - - if dist_is_editable(proj): - row.append(proj.location) - - data.append(row) - - return data, header - - -def format_for_json(packages, options): - data = [] - for dist in packages: - info = { - 'name': dist.project_name, - 'version': six.text_type(dist.version), - } - if options.outdated: - info['latest_version'] = six.text_type(dist.latest_version) - info['latest_filetype'] = dist.latest_filetype - data.append(info) - return json.dumps(data) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/search.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/search.py deleted file mode 100644 index bd2ea8ad..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/search.py +++ /dev/null @@ -1,133 +0,0 @@ -from __future__ import absolute_import - -import logging -import sys -import textwrap - -from pip.basecommand import Command, SUCCESS -from pip.compat import OrderedDict -from pip.download import PipXmlrpcTransport -from pip.models import PyPI -from pip.utils import get_terminal_size -from pip.utils.logging import indent_log -from pip.exceptions import CommandError -from pip.status_codes import NO_MATCHES_FOUND -from pip._vendor.packaging.version import parse as parse_version -from pip._vendor import pkg_resources -from pip._vendor.six.moves import xmlrpc_client - - -logger = logging.getLogger(__name__) - - -class SearchCommand(Command): - """Search for PyPI packages whose name or summary contains .""" - name = 'search' - usage = """ - %prog [options] """ - summary = 'Search PyPI for packages.' - - def __init__(self, *args, **kw): - super(SearchCommand, self).__init__(*args, **kw) - self.cmd_opts.add_option( - '-i', '--index', - dest='index', - metavar='URL', - default=PyPI.pypi_url, - help='Base URL of Python Package Index (default %default)') - - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options, args): - if not args: - raise CommandError('Missing required argument (search query).') - query = args - pypi_hits = self.search(query, options) - hits = transform_hits(pypi_hits) - - terminal_width = None - if sys.stdout.isatty(): - terminal_width = get_terminal_size()[0] - - print_results(hits, terminal_width=terminal_width) - if pypi_hits: - return SUCCESS - return NO_MATCHES_FOUND - - def search(self, query, options): - index_url = options.index - with self._build_session(options) as session: - transport = PipXmlrpcTransport(index_url, session) - pypi = xmlrpc_client.ServerProxy(index_url, transport) - hits = pypi.search({'name': query, 'summary': query}, 'or') - return hits - - -def transform_hits(hits): - """ - The list from pypi is really a list of versions. We want a list of - packages with the list of versions stored inline. This converts the - list from pypi into one we can use. - """ - packages = OrderedDict() - for hit in hits: - name = hit['name'] - summary = hit['summary'] - version = hit['version'] - - if name not in packages.keys(): - packages[name] = { - 'name': name, - 'summary': summary, - 'versions': [version], - } - else: - packages[name]['versions'].append(version) - - # if this is the highest version, replace summary and score - if version == highest_version(packages[name]['versions']): - packages[name]['summary'] = summary - - return list(packages.values()) - - -def print_results(hits, name_column_width=None, terminal_width=None): - if not hits: - return - if name_column_width is None: - name_column_width = max([ - len(hit['name']) + len(hit.get('versions', ['-'])[-1]) - for hit in hits - ]) + 4 - - installed_packages = [p.project_name for p in pkg_resources.working_set] - for hit in hits: - name = hit['name'] - summary = hit['summary'] or '' - version = hit.get('versions', ['-'])[-1] - if terminal_width is not None: - target_width = terminal_width - name_column_width - 5 - if target_width > 10: - # wrap and indent summary to fit terminal - summary = textwrap.wrap(summary, target_width) - summary = ('\n' + ' ' * (name_column_width + 3)).join(summary) - - line = '%-*s - %s' % (name_column_width, - '%s (%s)' % (name, version), summary) - try: - logger.info(line) - if name in installed_packages: - dist = pkg_resources.get_distribution(name) - with indent_log(): - latest = highest_version(hit['versions']) - if dist.version == latest: - logger.info('INSTALLED: %s (latest)', dist.version) - else: - logger.info('INSTALLED: %s', dist.version) - logger.info('LATEST: %s', latest) - except UnicodeEncodeError: - pass - - -def highest_version(versions): - return max(versions, key=parse_version) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/show.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/show.py deleted file mode 100644 index 111c16d1..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/show.py +++ /dev/null @@ -1,154 +0,0 @@ -from __future__ import absolute_import - -from email.parser import FeedParser -import logging -import os - -from pip.basecommand import Command -from pip.status_codes import SUCCESS, ERROR -from pip._vendor import pkg_resources -from pip._vendor.packaging.utils import canonicalize_name - - -logger = logging.getLogger(__name__) - - -class ShowCommand(Command): - """Show information about one or more installed packages.""" - name = 'show' - usage = """ - %prog [options] ...""" - summary = 'Show information about installed packages.' - - def __init__(self, *args, **kw): - super(ShowCommand, self).__init__(*args, **kw) - self.cmd_opts.add_option( - '-f', '--files', - dest='files', - action='store_true', - default=False, - help='Show the full list of installed files for each package.') - - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options, args): - if not args: - logger.warning('ERROR: Please provide a package name or names.') - return ERROR - query = args - - results = search_packages_info(query) - if not print_results( - results, list_files=options.files, verbose=options.verbose): - return ERROR - return SUCCESS - - -def search_packages_info(query): - """ - Gather details from installed distributions. Print distribution name, - version, location, and installed files. Installed files requires a - pip generated 'installed-files.txt' in the distributions '.egg-info' - directory. - """ - installed = {} - for p in pkg_resources.working_set: - installed[canonicalize_name(p.project_name)] = p - - query_names = [canonicalize_name(name) for name in query] - - for dist in [installed[pkg] for pkg in query_names if pkg in installed]: - package = { - 'name': dist.project_name, - 'version': dist.version, - 'location': dist.location, - 'requires': [dep.project_name for dep in dist.requires()], - } - file_list = None - metadata = None - if isinstance(dist, pkg_resources.DistInfoDistribution): - # RECORDs should be part of .dist-info metadatas - if dist.has_metadata('RECORD'): - lines = dist.get_metadata_lines('RECORD') - paths = [l.split(',')[0] for l in lines] - paths = [os.path.join(dist.location, p) for p in paths] - file_list = [os.path.relpath(p, dist.location) for p in paths] - - if dist.has_metadata('METADATA'): - metadata = dist.get_metadata('METADATA') - else: - # Otherwise use pip's log for .egg-info's - if dist.has_metadata('installed-files.txt'): - paths = dist.get_metadata_lines('installed-files.txt') - paths = [os.path.join(dist.egg_info, p) for p in paths] - file_list = [os.path.relpath(p, dist.location) for p in paths] - - if dist.has_metadata('PKG-INFO'): - metadata = dist.get_metadata('PKG-INFO') - - if dist.has_metadata('entry_points.txt'): - entry_points = dist.get_metadata_lines('entry_points.txt') - package['entry_points'] = entry_points - - if dist.has_metadata('INSTALLER'): - for line in dist.get_metadata_lines('INSTALLER'): - if line.strip(): - package['installer'] = line.strip() - break - - # @todo: Should pkg_resources.Distribution have a - # `get_pkg_info` method? - feed_parser = FeedParser() - feed_parser.feed(metadata) - pkg_info_dict = feed_parser.close() - for key in ('metadata-version', 'summary', - 'home-page', 'author', 'author-email', 'license'): - package[key] = pkg_info_dict.get(key) - - # It looks like FeedParser cannot deal with repeated headers - classifiers = [] - for line in metadata.splitlines(): - if line.startswith('Classifier: '): - classifiers.append(line[len('Classifier: '):]) - package['classifiers'] = classifiers - - if file_list: - package['files'] = sorted(file_list) - yield package - - -def print_results(distributions, list_files=False, verbose=False): - """ - Print the informations from installed distributions found. - """ - results_printed = False - for i, dist in enumerate(distributions): - results_printed = True - if i > 0: - logger.info("---") - logger.info("Name: %s", dist.get('name', '')) - logger.info("Version: %s", dist.get('version', '')) - logger.info("Summary: %s", dist.get('summary', '')) - logger.info("Home-page: %s", dist.get('home-page', '')) - logger.info("Author: %s", dist.get('author', '')) - logger.info("Author-email: %s", dist.get('author-email', '')) - logger.info("License: %s", dist.get('license', '')) - logger.info("Location: %s", dist.get('location', '')) - logger.info("Requires: %s", ', '.join(dist.get('requires', []))) - if verbose: - logger.info("Metadata-Version: %s", - dist.get('metadata-version', '')) - logger.info("Installer: %s", dist.get('installer', '')) - logger.info("Classifiers:") - for classifier in dist.get('classifiers', []): - logger.info(" %s", classifier) - logger.info("Entry-points:") - for entry in dist.get('entry_points', []): - logger.info(" %s", entry.strip()) - if list_files: - logger.info("Files:") - for line in dist.get('files', []): - logger.info(" %s", line.strip()) - if "files" not in dist: - logger.info("Cannot locate installed-files.txt") - return results_printed diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/uninstall.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/uninstall.py deleted file mode 100644 index 8ba1a7c6..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/uninstall.py +++ /dev/null @@ -1,76 +0,0 @@ -from __future__ import absolute_import - -import pip -from pip.wheel import WheelCache -from pip.req import InstallRequirement, RequirementSet, parse_requirements -from pip.basecommand import Command -from pip.exceptions import InstallationError - - -class UninstallCommand(Command): - """ - Uninstall packages. - - pip is able to uninstall most installed packages. Known exceptions are: - - - Pure distutils packages installed with ``python setup.py install``, which - leave behind no metadata to determine what files were installed. - - Script wrappers installed by ``python setup.py develop``. - """ - name = 'uninstall' - usage = """ - %prog [options] ... - %prog [options] -r ...""" - summary = 'Uninstall packages.' - - def __init__(self, *args, **kw): - super(UninstallCommand, self).__init__(*args, **kw) - self.cmd_opts.add_option( - '-r', '--requirement', - dest='requirements', - action='append', - default=[], - metavar='file', - help='Uninstall all the packages listed in the given requirements ' - 'file. This option can be used multiple times.', - ) - self.cmd_opts.add_option( - '-y', '--yes', - dest='yes', - action='store_true', - help="Don't ask for confirmation of uninstall deletions.") - - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options, args): - with self._build_session(options) as session: - format_control = pip.index.FormatControl(set(), set()) - wheel_cache = WheelCache(options.cache_dir, format_control) - requirement_set = RequirementSet( - build_dir=None, - src_dir=None, - download_dir=None, - isolated=options.isolated_mode, - session=session, - wheel_cache=wheel_cache, - ) - for name in args: - requirement_set.add_requirement( - InstallRequirement.from_line( - name, isolated=options.isolated_mode, - wheel_cache=wheel_cache - ) - ) - for filename in options.requirements: - for req in parse_requirements( - filename, - options=options, - session=session, - wheel_cache=wheel_cache): - requirement_set.add_requirement(req) - if not requirement_set.has_requirements: - raise InstallationError( - 'You must give at least one requirement to %(name)s (see ' - '"pip help %(name)s")' % dict(name=self.name) - ) - requirement_set.uninstall(auto_confirm=options.yes) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/wheel.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/wheel.py deleted file mode 100644 index 70e95eb8..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/commands/wheel.py +++ /dev/null @@ -1,208 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import absolute_import - -import logging -import os -import warnings - -from pip.basecommand import RequirementCommand -from pip.exceptions import CommandError, PreviousBuildDirError -from pip.req import RequirementSet -from pip.utils import import_or_raise -from pip.utils.build import BuildDirectory -from pip.utils.deprecation import RemovedInPip10Warning -from pip.wheel import WheelCache, WheelBuilder -from pip import cmdoptions - - -logger = logging.getLogger(__name__) - - -class WheelCommand(RequirementCommand): - """ - Build Wheel archives for your requirements and dependencies. - - Wheel is a built-package format, and offers the advantage of not - recompiling your software during every install. For more details, see the - wheel docs: https://wheel.readthedocs.io/en/latest/ - - Requirements: setuptools>=0.8, and wheel. - - 'pip wheel' uses the bdist_wheel setuptools extension from the wheel - package to build individual wheels. - - """ - - name = 'wheel' - usage = """ - %prog [options] ... - %prog [options] -r ... - %prog [options] [-e] ... - %prog [options] [-e] ... - %prog [options] ...""" - - summary = 'Build wheels from your requirements.' - - def __init__(self, *args, **kw): - super(WheelCommand, self).__init__(*args, **kw) - - cmd_opts = self.cmd_opts - - cmd_opts.add_option( - '-w', '--wheel-dir', - dest='wheel_dir', - metavar='dir', - default=os.curdir, - help=("Build wheels into , where the default is the " - "current working directory."), - ) - cmd_opts.add_option(cmdoptions.use_wheel()) - cmd_opts.add_option(cmdoptions.no_use_wheel()) - cmd_opts.add_option(cmdoptions.no_binary()) - cmd_opts.add_option(cmdoptions.only_binary()) - cmd_opts.add_option( - '--build-option', - dest='build_options', - metavar='options', - action='append', - help="Extra arguments to be supplied to 'setup.py bdist_wheel'.") - cmd_opts.add_option(cmdoptions.constraints()) - cmd_opts.add_option(cmdoptions.editable()) - cmd_opts.add_option(cmdoptions.requirements()) - cmd_opts.add_option(cmdoptions.src()) - cmd_opts.add_option(cmdoptions.ignore_requires_python()) - cmd_opts.add_option(cmdoptions.no_deps()) - cmd_opts.add_option(cmdoptions.build_dir()) - - cmd_opts.add_option( - '--global-option', - dest='global_options', - action='append', - metavar='options', - help="Extra global options to be supplied to the setup.py " - "call before the 'bdist_wheel' command.") - - cmd_opts.add_option( - '--pre', - action='store_true', - default=False, - help=("Include pre-release and development versions. By default, " - "pip only finds stable versions."), - ) - - cmd_opts.add_option(cmdoptions.no_clean()) - cmd_opts.add_option(cmdoptions.require_hashes()) - - index_opts = cmdoptions.make_option_group( - cmdoptions.index_group, - self.parser, - ) - - self.parser.insert_option_group(0, index_opts) - self.parser.insert_option_group(0, cmd_opts) - - def check_required_packages(self): - import_or_raise( - 'wheel.bdist_wheel', - CommandError, - "'pip wheel' requires the 'wheel' package. To fix this, run: " - "pip install wheel" - ) - pkg_resources = import_or_raise( - 'pkg_resources', - CommandError, - "'pip wheel' requires setuptools >= 0.8 for dist-info support." - " To fix this, run: pip install --upgrade setuptools" - ) - if not hasattr(pkg_resources, 'DistInfoDistribution'): - raise CommandError( - "'pip wheel' requires setuptools >= 0.8 for dist-info " - "support. To fix this, run: pip install --upgrade " - "setuptools" - ) - - def run(self, options, args): - self.check_required_packages() - cmdoptions.resolve_wheel_no_use_binary(options) - cmdoptions.check_install_build_global(options) - - if options.allow_external: - warnings.warn( - "--allow-external has been deprecated and will be removed in " - "the future. Due to changes in the repository protocol, it no " - "longer has any effect.", - RemovedInPip10Warning, - ) - - if options.allow_all_external: - warnings.warn( - "--allow-all-external has been deprecated and will be removed " - "in the future. Due to changes in the repository protocol, it " - "no longer has any effect.", - RemovedInPip10Warning, - ) - - if options.allow_unverified: - warnings.warn( - "--allow-unverified has been deprecated and will be removed " - "in the future. Due to changes in the repository protocol, it " - "no longer has any effect.", - RemovedInPip10Warning, - ) - - index_urls = [options.index_url] + options.extra_index_urls - if options.no_index: - logger.debug('Ignoring indexes: %s', ','.join(index_urls)) - index_urls = [] - - if options.build_dir: - options.build_dir = os.path.abspath(options.build_dir) - - options.src_dir = os.path.abspath(options.src_dir) - - with self._build_session(options) as session: - finder = self._build_package_finder(options, session) - build_delete = (not (options.no_clean or options.build_dir)) - wheel_cache = WheelCache(options.cache_dir, options.format_control) - with BuildDirectory(options.build_dir, - delete=build_delete) as build_dir: - requirement_set = RequirementSet( - build_dir=build_dir, - src_dir=options.src_dir, - download_dir=None, - ignore_dependencies=options.ignore_dependencies, - ignore_installed=True, - ignore_requires_python=options.ignore_requires_python, - isolated=options.isolated_mode, - session=session, - wheel_cache=wheel_cache, - wheel_download_dir=options.wheel_dir, - require_hashes=options.require_hashes - ) - - self.populate_requirement_set( - requirement_set, args, options, finder, session, self.name, - wheel_cache - ) - - if not requirement_set.has_requirements: - return - - try: - # build wheels - wb = WheelBuilder( - requirement_set, - finder, - build_options=options.build_options or [], - global_options=options.global_options or [], - ) - if not wb.build(): - raise CommandError( - "Failed to build one or more wheels" - ) - except PreviousBuildDirError: - options.no_clean = True - raise - finally: - if not options.no_clean: - requirement_set.cleanup_files() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/__init__.py deleted file mode 100644 index 099672cd..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/__init__.py +++ /dev/null @@ -1,164 +0,0 @@ -"""Stuff that differs in different Python versions and platform -distributions.""" -from __future__ import absolute_import, division - -import os -import sys - -from pip._vendor.six import text_type - -try: - from logging.config import dictConfig as logging_dictConfig -except ImportError: - from pip.compat.dictconfig import dictConfig as logging_dictConfig - -try: - from collections import OrderedDict -except ImportError: - from pip._vendor.ordereddict import OrderedDict - -try: - import ipaddress -except ImportError: - try: - from pip._vendor import ipaddress - except ImportError: - import ipaddr as ipaddress - ipaddress.ip_address = ipaddress.IPAddress - ipaddress.ip_network = ipaddress.IPNetwork - - -try: - import sysconfig - - def get_stdlib(): - paths = [ - sysconfig.get_path("stdlib"), - sysconfig.get_path("platstdlib"), - ] - return set(filter(bool, paths)) -except ImportError: - from distutils import sysconfig - - def get_stdlib(): - paths = [ - sysconfig.get_python_lib(standard_lib=True), - sysconfig.get_python_lib(standard_lib=True, plat_specific=True), - ] - return set(filter(bool, paths)) - - -__all__ = [ - "logging_dictConfig", "ipaddress", "uses_pycache", "console_to_str", - "native_str", "get_path_uid", "stdlib_pkgs", "WINDOWS", "samefile", - "OrderedDict", -] - - -if sys.version_info >= (3, 4): - uses_pycache = True - from importlib.util import cache_from_source -else: - import imp - uses_pycache = hasattr(imp, 'cache_from_source') - if uses_pycache: - cache_from_source = imp.cache_from_source - else: - cache_from_source = None - - -if sys.version_info >= (3,): - def console_to_str(s): - try: - return s.decode(sys.__stdout__.encoding) - except UnicodeDecodeError: - return s.decode('utf_8') - - def native_str(s, replace=False): - if isinstance(s, bytes): - return s.decode('utf-8', 'replace' if replace else 'strict') - return s - -else: - def console_to_str(s): - return s - - def native_str(s, replace=False): - # Replace is ignored -- unicode to UTF-8 can't fail - if isinstance(s, text_type): - return s.encode('utf-8') - return s - - -def total_seconds(td): - if hasattr(td, "total_seconds"): - return td.total_seconds() - else: - val = td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 ** 6 - return val / 10 ** 6 - - -def get_path_uid(path): - """ - Return path's uid. - - Does not follow symlinks: - https://github.com/pypa/pip/pull/935#discussion_r5307003 - - Placed this function in compat due to differences on AIX and - Jython, that should eventually go away. - - :raises OSError: When path is a symlink or can't be read. - """ - if hasattr(os, 'O_NOFOLLOW'): - fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW) - file_uid = os.fstat(fd).st_uid - os.close(fd) - else: # AIX and Jython - # WARNING: time of check vulnerability, but best we can do w/o NOFOLLOW - if not os.path.islink(path): - # older versions of Jython don't have `os.fstat` - file_uid = os.stat(path).st_uid - else: - # raise OSError for parity with os.O_NOFOLLOW above - raise OSError( - "%s is a symlink; Will not return uid for symlinks" % path - ) - return file_uid - - -def expanduser(path): - """ - Expand ~ and ~user constructions. - - Includes a workaround for http://bugs.python.org/issue14768 - """ - expanded = os.path.expanduser(path) - if path.startswith('~/') and expanded.startswith('//'): - expanded = expanded[1:] - return expanded - - -# packages in the stdlib that may have installation metadata, but should not be -# considered 'installed'. this theoretically could be determined based on -# dist.location (py27:`sysconfig.get_paths()['stdlib']`, -# py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may -# make this ineffective, so hard-coding -stdlib_pkgs = ('python', 'wsgiref') -if sys.version_info >= (2, 7): - stdlib_pkgs += ('argparse',) - - -# windows detection, covers cpython and ironpython -WINDOWS = (sys.platform.startswith("win") or - (sys.platform == 'cli' and os.name == 'nt')) - - -def samefile(file1, file2): - """Provide an alternative for os.path.samefile on Windows/Python2""" - if hasattr(os.path, 'samefile'): - return os.path.samefile(file1, file2) - else: - path1 = os.path.normcase(os.path.abspath(file1)) - path2 = os.path.normcase(os.path.abspath(file2)) - return path1 == path2 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 3def80cb..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/__pycache__/dictconfig.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/__pycache__/dictconfig.cpython-36.pyc deleted file mode 100644 index 46c3b74e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/__pycache__/dictconfig.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/dictconfig.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/dictconfig.py deleted file mode 100644 index ec684aac..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/compat/dictconfig.py +++ /dev/null @@ -1,565 +0,0 @@ -# This is a copy of the Python logging.config.dictconfig module, -# reproduced with permission. It is provided here for backwards -# compatibility for Python versions prior to 2.7. -# -# Copyright 2009-2010 by Vinay Sajip. All Rights Reserved. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation for any purpose and without fee is hereby granted, -# provided that the above copyright notice appear in all copies and that -# both that copyright notice and this permission notice appear in -# supporting documentation, and that the name of Vinay Sajip -# not be used in advertising or publicity pertaining to distribution -# of the software without specific, written prior permission. -# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL -# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER -# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT -# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -from __future__ import absolute_import - -import logging.handlers -import re -import sys -import types - -from pip._vendor import six - -# flake8: noqa - -IDENTIFIER = re.compile('^[a-z_][a-z0-9_]*$', re.I) - - -def valid_ident(s): - m = IDENTIFIER.match(s) - if not m: - raise ValueError('Not a valid Python identifier: %r' % s) - return True - -# -# This function is defined in logging only in recent versions of Python -# -try: - from logging import _checkLevel -except ImportError: - def _checkLevel(level): - if isinstance(level, int): - rv = level - elif str(level) == level: - if level not in logging._levelNames: - raise ValueError('Unknown level: %r' % level) - rv = logging._levelNames[level] - else: - raise TypeError('Level not an integer or a ' - 'valid string: %r' % level) - return rv - -# The ConvertingXXX classes are wrappers around standard Python containers, -# and they serve to convert any suitable values in the container. The -# conversion converts base dicts, lists and tuples to their wrapped -# equivalents, whereas strings which match a conversion format are converted -# appropriately. -# -# Each wrapper should have a configurator attribute holding the actual -# configurator to use for conversion. - - -class ConvertingDict(dict): - """A converting dictionary wrapper.""" - - def __getitem__(self, key): - value = dict.__getitem__(self, key) - result = self.configurator.convert(value) - # If the converted value is different, save for next time - if value is not result: - self[key] = result - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - def get(self, key, default=None): - value = dict.get(self, key, default) - result = self.configurator.convert(value) - # If the converted value is different, save for next time - if value is not result: - self[key] = result - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - def pop(self, key, default=None): - value = dict.pop(self, key, default) - result = self.configurator.convert(value) - if value is not result: - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - -class ConvertingList(list): - """A converting list wrapper.""" - def __getitem__(self, key): - value = list.__getitem__(self, key) - result = self.configurator.convert(value) - # If the converted value is different, save for next time - if value is not result: - self[key] = result - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - def pop(self, idx=-1): - value = list.pop(self, idx) - result = self.configurator.convert(value) - if value is not result: - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - return result - - -class ConvertingTuple(tuple): - """A converting tuple wrapper.""" - def __getitem__(self, key): - value = tuple.__getitem__(self, key) - result = self.configurator.convert(value) - if value is not result: - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - -class BaseConfigurator(object): - """ - The configurator base class which defines some useful defaults. - """ - - CONVERT_PATTERN = re.compile(r'^(?P[a-z]+)://(?P.*)$') - - WORD_PATTERN = re.compile(r'^\s*(\w+)\s*') - DOT_PATTERN = re.compile(r'^\.\s*(\w+)\s*') - INDEX_PATTERN = re.compile(r'^\[\s*(\w+)\s*\]\s*') - DIGIT_PATTERN = re.compile(r'^\d+$') - - value_converters = { - 'ext' : 'ext_convert', - 'cfg' : 'cfg_convert', - } - - # We might want to use a different one, e.g. importlib - importer = __import__ - - def __init__(self, config): - self.config = ConvertingDict(config) - self.config.configurator = self - - def resolve(self, s): - """ - Resolve strings to objects using standard import and attribute - syntax. - """ - name = s.split('.') - used = name.pop(0) - try: - found = self.importer(used) - for frag in name: - used += '.' + frag - try: - found = getattr(found, frag) - except AttributeError: - self.importer(used) - found = getattr(found, frag) - return found - except ImportError: - e, tb = sys.exc_info()[1:] - v = ValueError('Cannot resolve %r: %s' % (s, e)) - v.__cause__, v.__traceback__ = e, tb - raise v - - def ext_convert(self, value): - """Default converter for the ext:// protocol.""" - return self.resolve(value) - - def cfg_convert(self, value): - """Default converter for the cfg:// protocol.""" - rest = value - m = self.WORD_PATTERN.match(rest) - if m is None: - raise ValueError("Unable to convert %r" % value) - else: - rest = rest[m.end():] - d = self.config[m.groups()[0]] - # print d, rest - while rest: - m = self.DOT_PATTERN.match(rest) - if m: - d = d[m.groups()[0]] - else: - m = self.INDEX_PATTERN.match(rest) - if m: - idx = m.groups()[0] - if not self.DIGIT_PATTERN.match(idx): - d = d[idx] - else: - try: - n = int(idx) # try as number first (most likely) - d = d[n] - except TypeError: - d = d[idx] - if m: - rest = rest[m.end():] - else: - raise ValueError('Unable to convert ' - '%r at %r' % (value, rest)) - # rest should be empty - return d - - def convert(self, value): - """ - Convert values to an appropriate type. dicts, lists and tuples are - replaced by their converting alternatives. Strings are checked to - see if they have a conversion format and are converted if they do. - """ - if not isinstance(value, ConvertingDict) and isinstance(value, dict): - value = ConvertingDict(value) - value.configurator = self - elif not isinstance(value, ConvertingList) and isinstance(value, list): - value = ConvertingList(value) - value.configurator = self - elif not isinstance(value, ConvertingTuple) and\ - isinstance(value, tuple): - value = ConvertingTuple(value) - value.configurator = self - elif isinstance(value, six.string_types): # str for py3k - m = self.CONVERT_PATTERN.match(value) - if m: - d = m.groupdict() - prefix = d['prefix'] - converter = self.value_converters.get(prefix, None) - if converter: - suffix = d['suffix'] - converter = getattr(self, converter) - value = converter(suffix) - return value - - def configure_custom(self, config): - """Configure an object with a user-supplied factory.""" - c = config.pop('()') - if not hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType: - c = self.resolve(c) - props = config.pop('.', None) - # Check for valid identifiers - kwargs = dict((k, config[k]) for k in config if valid_ident(k)) - result = c(**kwargs) - if props: - for name, value in props.items(): - setattr(result, name, value) - return result - - def as_tuple(self, value): - """Utility function which converts lists to tuples.""" - if isinstance(value, list): - value = tuple(value) - return value - - -class DictConfigurator(BaseConfigurator): - """ - Configure logging using a dictionary-like object to describe the - configuration. - """ - - def configure(self): - """Do the configuration.""" - - config = self.config - if 'version' not in config: - raise ValueError("dictionary doesn't specify a version") - if config['version'] != 1: - raise ValueError("Unsupported version: %s" % config['version']) - incremental = config.pop('incremental', False) - EMPTY_DICT = {} - logging._acquireLock() - try: - if incremental: - handlers = config.get('handlers', EMPTY_DICT) - # incremental handler config only if handler name - # ties in to logging._handlers (Python 2.7) - if sys.version_info[:2] == (2, 7): - for name in handlers: - if name not in logging._handlers: - raise ValueError('No handler found with ' - 'name %r' % name) - else: - try: - handler = logging._handlers[name] - handler_config = handlers[name] - level = handler_config.get('level', None) - if level: - handler.setLevel(_checkLevel(level)) - except StandardError as e: - raise ValueError('Unable to configure handler ' - '%r: %s' % (name, e)) - loggers = config.get('loggers', EMPTY_DICT) - for name in loggers: - try: - self.configure_logger(name, loggers[name], True) - except StandardError as e: - raise ValueError('Unable to configure logger ' - '%r: %s' % (name, e)) - root = config.get('root', None) - if root: - try: - self.configure_root(root, True) - except StandardError as e: - raise ValueError('Unable to configure root ' - 'logger: %s' % e) - else: - disable_existing = config.pop('disable_existing_loggers', True) - - logging._handlers.clear() - del logging._handlerList[:] - - # Do formatters first - they don't refer to anything else - formatters = config.get('formatters', EMPTY_DICT) - for name in formatters: - try: - formatters[name] = self.configure_formatter( - formatters[name]) - except StandardError as e: - raise ValueError('Unable to configure ' - 'formatter %r: %s' % (name, e)) - # Next, do filters - they don't refer to anything else, either - filters = config.get('filters', EMPTY_DICT) - for name in filters: - try: - filters[name] = self.configure_filter(filters[name]) - except StandardError as e: - raise ValueError('Unable to configure ' - 'filter %r: %s' % (name, e)) - - # Next, do handlers - they refer to formatters and filters - # As handlers can refer to other handlers, sort the keys - # to allow a deterministic order of configuration - handlers = config.get('handlers', EMPTY_DICT) - for name in sorted(handlers): - try: - handler = self.configure_handler(handlers[name]) - handler.name = name - handlers[name] = handler - except StandardError as e: - raise ValueError('Unable to configure handler ' - '%r: %s' % (name, e)) - # Next, do loggers - they refer to handlers and filters - - # we don't want to lose the existing loggers, - # since other threads may have pointers to them. - # existing is set to contain all existing loggers, - # and as we go through the new configuration we - # remove any which are configured. At the end, - # what's left in existing is the set of loggers - # which were in the previous configuration but - # which are not in the new configuration. - root = logging.root - existing = list(root.manager.loggerDict) - # The list needs to be sorted so that we can - # avoid disabling child loggers of explicitly - # named loggers. With a sorted list it is easier - # to find the child loggers. - existing.sort() - # We'll keep the list of existing loggers - # which are children of named loggers here... - child_loggers = [] - # now set up the new ones... - loggers = config.get('loggers', EMPTY_DICT) - for name in loggers: - if name in existing: - i = existing.index(name) - prefixed = name + "." - pflen = len(prefixed) - num_existing = len(existing) - i = i + 1 # look at the entry after name - while (i < num_existing) and\ - (existing[i][:pflen] == prefixed): - child_loggers.append(existing[i]) - i = i + 1 - existing.remove(name) - try: - self.configure_logger(name, loggers[name]) - except StandardError as e: - raise ValueError('Unable to configure logger ' - '%r: %s' % (name, e)) - - # Disable any old loggers. There's no point deleting - # them as other threads may continue to hold references - # and by disabling them, you stop them doing any logging. - # However, don't disable children of named loggers, as that's - # probably not what was intended by the user. - for log in existing: - logger = root.manager.loggerDict[log] - if log in child_loggers: - logger.level = logging.NOTSET - logger.handlers = [] - logger.propagate = True - elif disable_existing: - logger.disabled = True - - # And finally, do the root logger - root = config.get('root', None) - if root: - try: - self.configure_root(root) - except StandardError as e: - raise ValueError('Unable to configure root ' - 'logger: %s' % e) - finally: - logging._releaseLock() - - def configure_formatter(self, config): - """Configure a formatter from a dictionary.""" - if '()' in config: - factory = config['()'] # for use in exception handler - try: - result = self.configure_custom(config) - except TypeError as te: - if "'format'" not in str(te): - raise - # Name of parameter changed from fmt to format. - # Retry with old name. - # This is so that code can be used with older Python versions - #(e.g. by Django) - config['fmt'] = config.pop('format') - config['()'] = factory - result = self.configure_custom(config) - else: - fmt = config.get('format', None) - dfmt = config.get('datefmt', None) - result = logging.Formatter(fmt, dfmt) - return result - - def configure_filter(self, config): - """Configure a filter from a dictionary.""" - if '()' in config: - result = self.configure_custom(config) - else: - name = config.get('name', '') - result = logging.Filter(name) - return result - - def add_filters(self, filterer, filters): - """Add filters to a filterer from a list of names.""" - for f in filters: - try: - filterer.addFilter(self.config['filters'][f]) - except StandardError as e: - raise ValueError('Unable to add filter %r: %s' % (f, e)) - - def configure_handler(self, config): - """Configure a handler from a dictionary.""" - formatter = config.pop('formatter', None) - if formatter: - try: - formatter = self.config['formatters'][formatter] - except StandardError as e: - raise ValueError('Unable to set formatter ' - '%r: %s' % (formatter, e)) - level = config.pop('level', None) - filters = config.pop('filters', None) - if '()' in config: - c = config.pop('()') - if not hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType: - c = self.resolve(c) - factory = c - else: - klass = self.resolve(config.pop('class')) - # Special case for handler which refers to another handler - if issubclass(klass, logging.handlers.MemoryHandler) and\ - 'target' in config: - try: - config['target'] = self.config['handlers'][config['target']] - except StandardError as e: - raise ValueError('Unable to set target handler ' - '%r: %s' % (config['target'], e)) - elif issubclass(klass, logging.handlers.SMTPHandler) and\ - 'mailhost' in config: - config['mailhost'] = self.as_tuple(config['mailhost']) - elif issubclass(klass, logging.handlers.SysLogHandler) and\ - 'address' in config: - config['address'] = self.as_tuple(config['address']) - factory = klass - kwargs = dict((k, config[k]) for k in config if valid_ident(k)) - try: - result = factory(**kwargs) - except TypeError as te: - if "'stream'" not in str(te): - raise - # The argument name changed from strm to stream - # Retry with old name. - # This is so that code can be used with older Python versions - #(e.g. by Django) - kwargs['strm'] = kwargs.pop('stream') - result = factory(**kwargs) - if formatter: - result.setFormatter(formatter) - if level is not None: - result.setLevel(_checkLevel(level)) - if filters: - self.add_filters(result, filters) - return result - - def add_handlers(self, logger, handlers): - """Add handlers to a logger from a list of names.""" - for h in handlers: - try: - logger.addHandler(self.config['handlers'][h]) - except StandardError as e: - raise ValueError('Unable to add handler %r: %s' % (h, e)) - - def common_logger_config(self, logger, config, incremental=False): - """ - Perform configuration which is common to root and non-root loggers. - """ - level = config.get('level', None) - if level is not None: - logger.setLevel(_checkLevel(level)) - if not incremental: - # Remove any existing handlers - for h in logger.handlers[:]: - logger.removeHandler(h) - handlers = config.get('handlers', None) - if handlers: - self.add_handlers(logger, handlers) - filters = config.get('filters', None) - if filters: - self.add_filters(logger, filters) - - def configure_logger(self, name, config, incremental=False): - """Configure a non-root logger from a dictionary.""" - logger = logging.getLogger(name) - self.common_logger_config(logger, config, incremental) - propagate = config.get('propagate', None) - if propagate is not None: - logger.propagate = propagate - - def configure_root(self, config, incremental=False): - """Configure a root logger from a dictionary.""" - root = logging.getLogger() - self.common_logger_config(root, config, incremental) - -dictConfigClass = DictConfigurator - - -def dictConfig(config): - """Configure logging using a dictionary.""" - dictConfigClass(config).configure() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/download.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/download.py deleted file mode 100644 index 54d3131d..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/download.py +++ /dev/null @@ -1,906 +0,0 @@ -from __future__ import absolute_import - -import cgi -import email.utils -import getpass -import json -import logging -import mimetypes -import os -import platform -import re -import shutil -import sys -import tempfile - -try: - import ssl # noqa - HAS_TLS = True -except ImportError: - HAS_TLS = False - -from pip._vendor.six.moves.urllib import parse as urllib_parse -from pip._vendor.six.moves.urllib import request as urllib_request - -import pip - -from pip.exceptions import InstallationError, HashMismatch -from pip.models import PyPI -from pip.utils import (splitext, rmtree, format_size, display_path, - backup_dir, ask_path_exists, unpack_file, - ARCHIVE_EXTENSIONS, consume, call_subprocess) -from pip.utils.encoding import auto_decode -from pip.utils.filesystem import check_path_owner -from pip.utils.logging import indent_log -from pip.utils.setuptools_build import SETUPTOOLS_SHIM -from pip.utils.glibc import libc_ver -from pip.utils.ui import DownloadProgressBar, DownloadProgressSpinner -from pip.locations import write_delete_marker_file -from pip.vcs import vcs -from pip._vendor import requests, six -from pip._vendor.requests.adapters import BaseAdapter, HTTPAdapter -from pip._vendor.requests.auth import AuthBase, HTTPBasicAuth -from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response -from pip._vendor.requests.utils import get_netrc_auth -from pip._vendor.requests.structures import CaseInsensitiveDict -from pip._vendor.requests.packages import urllib3 -from pip._vendor.cachecontrol import CacheControlAdapter -from pip._vendor.cachecontrol.caches import FileCache -from pip._vendor.lockfile import LockError -from pip._vendor.six.moves import xmlrpc_client - - -__all__ = ['get_file_content', - 'is_url', 'url_to_path', 'path_to_url', - 'is_archive_file', 'unpack_vcs_link', - 'unpack_file_url', 'is_vcs_url', 'is_file_url', - 'unpack_http_url', 'unpack_url'] - - -logger = logging.getLogger(__name__) - - -def user_agent(): - """ - Return a string representing the user agent. - """ - data = { - "installer": {"name": "pip", "version": pip.__version__}, - "python": platform.python_version(), - "implementation": { - "name": platform.python_implementation(), - }, - } - - if data["implementation"]["name"] == 'CPython': - data["implementation"]["version"] = platform.python_version() - elif data["implementation"]["name"] == 'PyPy': - if sys.pypy_version_info.releaselevel == 'final': - pypy_version_info = sys.pypy_version_info[:3] - else: - pypy_version_info = sys.pypy_version_info - data["implementation"]["version"] = ".".join( - [str(x) for x in pypy_version_info] - ) - elif data["implementation"]["name"] == 'Jython': - # Complete Guess - data["implementation"]["version"] = platform.python_version() - elif data["implementation"]["name"] == 'IronPython': - # Complete Guess - data["implementation"]["version"] = platform.python_version() - - if sys.platform.startswith("linux"): - from pip._vendor import distro - distro_infos = dict(filter( - lambda x: x[1], - zip(["name", "version", "id"], distro.linux_distribution()), - )) - libc = dict(filter( - lambda x: x[1], - zip(["lib", "version"], libc_ver()), - )) - if libc: - distro_infos["libc"] = libc - if distro_infos: - data["distro"] = distro_infos - - if sys.platform.startswith("darwin") and platform.mac_ver()[0]: - data["distro"] = {"name": "macOS", "version": platform.mac_ver()[0]} - - if platform.system(): - data.setdefault("system", {})["name"] = platform.system() - - if platform.release(): - data.setdefault("system", {})["release"] = platform.release() - - if platform.machine(): - data["cpu"] = platform.machine() - - # Python 2.6 doesn't have ssl.OPENSSL_VERSION. - if HAS_TLS and sys.version_info[:2] > (2, 6): - data["openssl_version"] = ssl.OPENSSL_VERSION - - return "{data[installer][name]}/{data[installer][version]} {json}".format( - data=data, - json=json.dumps(data, separators=(",", ":"), sort_keys=True), - ) - - -class MultiDomainBasicAuth(AuthBase): - - def __init__(self, prompting=True): - self.prompting = prompting - self.passwords = {} - - def __call__(self, req): - parsed = urllib_parse.urlparse(req.url) - - # Get the netloc without any embedded credentials - netloc = parsed.netloc.rsplit("@", 1)[-1] - - # Set the url of the request to the url without any credentials - req.url = urllib_parse.urlunparse(parsed[:1] + (netloc,) + parsed[2:]) - - # Use any stored credentials that we have for this netloc - username, password = self.passwords.get(netloc, (None, None)) - - # Extract credentials embedded in the url if we have none stored - if username is None: - username, password = self.parse_credentials(parsed.netloc) - - # Get creds from netrc if we still don't have them - if username is None and password is None: - netrc_auth = get_netrc_auth(req.url) - username, password = netrc_auth if netrc_auth else (None, None) - - if username or password: - # Store the username and password - self.passwords[netloc] = (username, password) - - # Send the basic auth with this request - req = HTTPBasicAuth(username or "", password or "")(req) - - # Attach a hook to handle 401 responses - req.register_hook("response", self.handle_401) - - return req - - def handle_401(self, resp, **kwargs): - # We only care about 401 responses, anything else we want to just - # pass through the actual response - if resp.status_code != 401: - return resp - - # We are not able to prompt the user so simply return the response - if not self.prompting: - return resp - - parsed = urllib_parse.urlparse(resp.url) - - # Prompt the user for a new username and password - username = six.moves.input("User for %s: " % parsed.netloc) - password = getpass.getpass("Password: ") - - # Store the new username and password to use for future requests - if username or password: - self.passwords[parsed.netloc] = (username, password) - - # Consume content and release the original connection to allow our new - # request to reuse the same one. - resp.content - resp.raw.release_conn() - - # Add our new username and password to the request - req = HTTPBasicAuth(username or "", password or "")(resp.request) - - # Send our new request - new_resp = resp.connection.send(req, **kwargs) - new_resp.history.append(resp) - - return new_resp - - def parse_credentials(self, netloc): - if "@" in netloc: - userinfo = netloc.rsplit("@", 1)[0] - if ":" in userinfo: - return userinfo.split(":", 1) - return userinfo, None - return None, None - - -class LocalFSAdapter(BaseAdapter): - - def send(self, request, stream=None, timeout=None, verify=None, cert=None, - proxies=None): - pathname = url_to_path(request.url) - - resp = Response() - resp.status_code = 200 - resp.url = request.url - - try: - stats = os.stat(pathname) - except OSError as exc: - resp.status_code = 404 - resp.raw = exc - else: - modified = email.utils.formatdate(stats.st_mtime, usegmt=True) - content_type = mimetypes.guess_type(pathname)[0] or "text/plain" - resp.headers = CaseInsensitiveDict({ - "Content-Type": content_type, - "Content-Length": stats.st_size, - "Last-Modified": modified, - }) - - resp.raw = open(pathname, "rb") - resp.close = resp.raw.close - - return resp - - def close(self): - pass - - -class SafeFileCache(FileCache): - """ - A file based cache which is safe to use even when the target directory may - not be accessible or writable. - """ - - def __init__(self, *args, **kwargs): - super(SafeFileCache, self).__init__(*args, **kwargs) - - # Check to ensure that the directory containing our cache directory - # is owned by the user current executing pip. If it does not exist - # we will check the parent directory until we find one that does exist. - # If it is not owned by the user executing pip then we will disable - # the cache and log a warning. - if not check_path_owner(self.directory): - logger.warning( - "The directory '%s' or its parent directory is not owned by " - "the current user and the cache has been disabled. Please " - "check the permissions and owner of that directory. If " - "executing pip with sudo, you may want sudo's -H flag.", - self.directory, - ) - - # Set our directory to None to disable the Cache - self.directory = None - - def get(self, *args, **kwargs): - # If we don't have a directory, then the cache should be a no-op. - if self.directory is None: - return - - try: - return super(SafeFileCache, self).get(*args, **kwargs) - except (LockError, OSError, IOError): - # We intentionally silence this error, if we can't access the cache - # then we can just skip caching and process the request as if - # caching wasn't enabled. - pass - - def set(self, *args, **kwargs): - # If we don't have a directory, then the cache should be a no-op. - if self.directory is None: - return - - try: - return super(SafeFileCache, self).set(*args, **kwargs) - except (LockError, OSError, IOError): - # We intentionally silence this error, if we can't access the cache - # then we can just skip caching and process the request as if - # caching wasn't enabled. - pass - - def delete(self, *args, **kwargs): - # If we don't have a directory, then the cache should be a no-op. - if self.directory is None: - return - - try: - return super(SafeFileCache, self).delete(*args, **kwargs) - except (LockError, OSError, IOError): - # We intentionally silence this error, if we can't access the cache - # then we can just skip caching and process the request as if - # caching wasn't enabled. - pass - - -class InsecureHTTPAdapter(HTTPAdapter): - - def cert_verify(self, conn, url, verify, cert): - conn.cert_reqs = 'CERT_NONE' - conn.ca_certs = None - - -class PipSession(requests.Session): - - timeout = None - - def __init__(self, *args, **kwargs): - retries = kwargs.pop("retries", 0) - cache = kwargs.pop("cache", None) - insecure_hosts = kwargs.pop("insecure_hosts", []) - - super(PipSession, self).__init__(*args, **kwargs) - - # Attach our User Agent to the request - self.headers["User-Agent"] = user_agent() - - # Attach our Authentication handler to the session - self.auth = MultiDomainBasicAuth() - - # Create our urllib3.Retry instance which will allow us to customize - # how we handle retries. - retries = urllib3.Retry( - # Set the total number of retries that a particular request can - # have. - total=retries, - - # A 503 error from PyPI typically means that the Fastly -> Origin - # connection got interrupted in some way. A 503 error in general - # is typically considered a transient error so we'll go ahead and - # retry it. - status_forcelist=[503], - - # Add a small amount of back off between failed requests in - # order to prevent hammering the service. - backoff_factor=0.25, - ) - - # We want to _only_ cache responses on securely fetched origins. We do - # this because we can't validate the response of an insecurely fetched - # origin, and we don't want someone to be able to poison the cache and - # require manual eviction from the cache to fix it. - if cache: - secure_adapter = CacheControlAdapter( - cache=SafeFileCache(cache, use_dir_lock=True), - max_retries=retries, - ) - else: - secure_adapter = HTTPAdapter(max_retries=retries) - - # Our Insecure HTTPAdapter disables HTTPS validation. It does not - # support caching (see above) so we'll use it for all http:// URLs as - # well as any https:// host that we've marked as ignoring TLS errors - # for. - insecure_adapter = InsecureHTTPAdapter(max_retries=retries) - - self.mount("https://", secure_adapter) - self.mount("http://", insecure_adapter) - - # Enable file:// urls - self.mount("file://", LocalFSAdapter()) - - # We want to use a non-validating adapter for any requests which are - # deemed insecure. - for host in insecure_hosts: - self.mount("https://{0}/".format(host), insecure_adapter) - - def request(self, method, url, *args, **kwargs): - # Allow setting a default timeout on a session - kwargs.setdefault("timeout", self.timeout) - - # Dispatch the actual request - return super(PipSession, self).request(method, url, *args, **kwargs) - - -def get_file_content(url, comes_from=None, session=None): - """Gets the content of a file; it may be a filename, file: URL, or - http: URL. Returns (location, content). Content is unicode.""" - if session is None: - raise TypeError( - "get_file_content() missing 1 required keyword argument: 'session'" - ) - - match = _scheme_re.search(url) - if match: - scheme = match.group(1).lower() - if (scheme == 'file' and comes_from and - comes_from.startswith('http')): - raise InstallationError( - 'Requirements file %s references URL %s, which is local' - % (comes_from, url)) - if scheme == 'file': - path = url.split(':', 1)[1] - path = path.replace('\\', '/') - match = _url_slash_drive_re.match(path) - if match: - path = match.group(1) + ':' + path.split('|', 1)[1] - path = urllib_parse.unquote(path) - if path.startswith('/'): - path = '/' + path.lstrip('/') - url = path - else: - # FIXME: catch some errors - resp = session.get(url) - resp.raise_for_status() - return resp.url, resp.text - try: - with open(url, 'rb') as f: - content = auto_decode(f.read()) - except IOError as exc: - raise InstallationError( - 'Could not open requirements file: %s' % str(exc) - ) - return url, content - - -_scheme_re = re.compile(r'^(http|https|file):', re.I) -_url_slash_drive_re = re.compile(r'/*([a-z])\|', re.I) - - -def is_url(name): - """Returns true if the name looks like a URL""" - if ':' not in name: - return False - scheme = name.split(':', 1)[0].lower() - return scheme in ['http', 'https', 'file', 'ftp'] + vcs.all_schemes - - -def url_to_path(url): - """ - Convert a file: URL to a path. - """ - assert url.startswith('file:'), ( - "You can only turn file: urls into filenames (not %r)" % url) - - _, netloc, path, _, _ = urllib_parse.urlsplit(url) - - # if we have a UNC path, prepend UNC share notation - if netloc: - netloc = '\\\\' + netloc - - path = urllib_request.url2pathname(netloc + path) - return path - - -def path_to_url(path): - """ - Convert a path to a file: URL. The path will be made absolute and have - quoted path parts. - """ - path = os.path.normpath(os.path.abspath(path)) - url = urllib_parse.urljoin('file:', urllib_request.pathname2url(path)) - return url - - -def is_archive_file(name): - """Return True if `name` is a considered as an archive file.""" - ext = splitext(name)[1].lower() - if ext in ARCHIVE_EXTENSIONS: - return True - return False - - -def unpack_vcs_link(link, location): - vcs_backend = _get_used_vcs_backend(link) - vcs_backend.unpack(location) - - -def _get_used_vcs_backend(link): - for backend in vcs.backends: - if link.scheme in backend.schemes: - vcs_backend = backend(link.url) - return vcs_backend - - -def is_vcs_url(link): - return bool(_get_used_vcs_backend(link)) - - -def is_file_url(link): - return link.url.lower().startswith('file:') - - -def is_dir_url(link): - """Return whether a file:// Link points to a directory. - - ``link`` must not have any other scheme but file://. Call is_file_url() - first. - - """ - link_path = url_to_path(link.url_without_fragment) - return os.path.isdir(link_path) - - -def _progress_indicator(iterable, *args, **kwargs): - return iterable - - -def _download_url(resp, link, content_file, hashes): - try: - total_length = int(resp.headers['content-length']) - except (ValueError, KeyError, TypeError): - total_length = 0 - - cached_resp = getattr(resp, "from_cache", False) - - if logger.getEffectiveLevel() > logging.INFO: - show_progress = False - elif cached_resp: - show_progress = False - elif total_length > (40 * 1000): - show_progress = True - elif not total_length: - show_progress = True - else: - show_progress = False - - show_url = link.show_url - - def resp_read(chunk_size): - try: - # Special case for urllib3. - for chunk in resp.raw.stream( - chunk_size, - # We use decode_content=False here because we don't - # want urllib3 to mess with the raw bytes we get - # from the server. If we decompress inside of - # urllib3 then we cannot verify the checksum - # because the checksum will be of the compressed - # file. This breakage will only occur if the - # server adds a Content-Encoding header, which - # depends on how the server was configured: - # - Some servers will notice that the file isn't a - # compressible file and will leave the file alone - # and with an empty Content-Encoding - # - Some servers will notice that the file is - # already compressed and will leave the file - # alone and will add a Content-Encoding: gzip - # header - # - Some servers won't notice anything at all and - # will take a file that's already been compressed - # and compress it again and set the - # Content-Encoding: gzip header - # - # By setting this not to decode automatically we - # hope to eliminate problems with the second case. - decode_content=False): - yield chunk - except AttributeError: - # Standard file-like object. - while True: - chunk = resp.raw.read(chunk_size) - if not chunk: - break - yield chunk - - def written_chunks(chunks): - for chunk in chunks: - content_file.write(chunk) - yield chunk - - progress_indicator = _progress_indicator - - if link.netloc == PyPI.netloc: - url = show_url - else: - url = link.url_without_fragment - - if show_progress: # We don't show progress on cached responses - if total_length: - logger.info("Downloading %s (%s)", url, format_size(total_length)) - progress_indicator = DownloadProgressBar(max=total_length).iter - else: - logger.info("Downloading %s", url) - progress_indicator = DownloadProgressSpinner().iter - elif cached_resp: - logger.info("Using cached %s", url) - else: - logger.info("Downloading %s", url) - - logger.debug('Downloading from URL %s', link) - - downloaded_chunks = written_chunks( - progress_indicator( - resp_read(CONTENT_CHUNK_SIZE), - CONTENT_CHUNK_SIZE - ) - ) - if hashes: - hashes.check_against_chunks(downloaded_chunks) - else: - consume(downloaded_chunks) - - -def _copy_file(filename, location, link): - copy = True - download_location = os.path.join(location, link.filename) - if os.path.exists(download_location): - response = ask_path_exists( - 'The file %s exists. (i)gnore, (w)ipe, (b)ackup, (a)abort' % - display_path(download_location), ('i', 'w', 'b', 'a')) - if response == 'i': - copy = False - elif response == 'w': - logger.warning('Deleting %s', display_path(download_location)) - os.remove(download_location) - elif response == 'b': - dest_file = backup_dir(download_location) - logger.warning( - 'Backing up %s to %s', - display_path(download_location), - display_path(dest_file), - ) - shutil.move(download_location, dest_file) - elif response == 'a': - sys.exit(-1) - if copy: - shutil.copy(filename, download_location) - logger.info('Saved %s', display_path(download_location)) - - -def unpack_http_url(link, location, download_dir=None, - session=None, hashes=None): - if session is None: - raise TypeError( - "unpack_http_url() missing 1 required keyword argument: 'session'" - ) - - temp_dir = tempfile.mkdtemp('-unpack', 'pip-') - - # If a download dir is specified, is the file already downloaded there? - already_downloaded_path = None - if download_dir: - already_downloaded_path = _check_download_dir(link, - download_dir, - hashes) - - if already_downloaded_path: - from_path = already_downloaded_path - content_type = mimetypes.guess_type(from_path)[0] - else: - # let's download to a tmp dir - from_path, content_type = _download_http_url(link, - session, - temp_dir, - hashes) - - # unpack the archive to the build dir location. even when only downloading - # archives, they have to be unpacked to parse dependencies - unpack_file(from_path, location, content_type, link) - - # a download dir is specified; let's copy the archive there - if download_dir and not already_downloaded_path: - _copy_file(from_path, download_dir, link) - - if not already_downloaded_path: - os.unlink(from_path) - rmtree(temp_dir) - - -def unpack_file_url(link, location, download_dir=None, hashes=None): - """Unpack link into location. - - If download_dir is provided and link points to a file, make a copy - of the link file inside download_dir. - """ - link_path = url_to_path(link.url_without_fragment) - - # If it's a url to a local directory - if is_dir_url(link): - if os.path.isdir(location): - rmtree(location) - shutil.copytree(link_path, location, symlinks=True) - if download_dir: - logger.info('Link is a directory, ignoring download_dir') - return - - # If --require-hashes is off, `hashes` is either empty, the - # link's embedded hash, or MissingHashes; it is required to - # match. If --require-hashes is on, we are satisfied by any - # hash in `hashes` matching: a URL-based or an option-based - # one; no internet-sourced hash will be in `hashes`. - if hashes: - hashes.check_against_path(link_path) - - # If a download dir is specified, is the file already there and valid? - already_downloaded_path = None - if download_dir: - already_downloaded_path = _check_download_dir(link, - download_dir, - hashes) - - if already_downloaded_path: - from_path = already_downloaded_path - else: - from_path = link_path - - content_type = mimetypes.guess_type(from_path)[0] - - # unpack the archive to the build dir location. even when only downloading - # archives, they have to be unpacked to parse dependencies - unpack_file(from_path, location, content_type, link) - - # a download dir is specified and not already downloaded - if download_dir and not already_downloaded_path: - _copy_file(from_path, download_dir, link) - - -def _copy_dist_from_dir(link_path, location): - """Copy distribution files in `link_path` to `location`. - - Invoked when user requests to install a local directory. E.g.: - - pip install . - pip install ~/dev/git-repos/python-prompt-toolkit - - """ - - # Note: This is currently VERY SLOW if you have a lot of data in the - # directory, because it copies everything with `shutil.copytree`. - # What it should really do is build an sdist and install that. - # See https://github.com/pypa/pip/issues/2195 - - if os.path.isdir(location): - rmtree(location) - - # build an sdist - setup_py = 'setup.py' - sdist_args = [sys.executable] - sdist_args.append('-c') - sdist_args.append(SETUPTOOLS_SHIM % setup_py) - sdist_args.append('sdist') - sdist_args += ['--dist-dir', location] - logger.info('Running setup.py sdist for %s', link_path) - - with indent_log(): - call_subprocess(sdist_args, cwd=link_path, show_stdout=False) - - # unpack sdist into `location` - sdist = os.path.join(location, os.listdir(location)[0]) - logger.info('Unpacking sdist %s into %s', sdist, location) - unpack_file(sdist, location, content_type=None, link=None) - - -class PipXmlrpcTransport(xmlrpc_client.Transport): - """Provide a `xmlrpclib.Transport` implementation via a `PipSession` - object. - """ - - def __init__(self, index_url, session, use_datetime=False): - xmlrpc_client.Transport.__init__(self, use_datetime) - index_parts = urllib_parse.urlparse(index_url) - self._scheme = index_parts.scheme - self._session = session - - def request(self, host, handler, request_body, verbose=False): - parts = (self._scheme, host, handler, None, None, None) - url = urllib_parse.urlunparse(parts) - try: - headers = {'Content-Type': 'text/xml'} - response = self._session.post(url, data=request_body, - headers=headers, stream=True) - response.raise_for_status() - self.verbose = verbose - return self.parse_response(response.raw) - except requests.HTTPError as exc: - logger.critical( - "HTTP error %s while getting %s", - exc.response.status_code, url, - ) - raise - - -def unpack_url(link, location, download_dir=None, - only_download=False, session=None, hashes=None): - """Unpack link. - If link is a VCS link: - if only_download, export into download_dir and ignore location - else unpack into location - for other types of link: - - unpack into location - - if download_dir, copy the file into download_dir - - if only_download, mark location for deletion - - :param hashes: A Hashes object, one of whose embedded hashes must match, - or HashMismatch will be raised. If the Hashes is empty, no matches are - required, and unhashable types of requirements (like VCS ones, which - would ordinarily raise HashUnsupported) are allowed. - """ - # non-editable vcs urls - if is_vcs_url(link): - unpack_vcs_link(link, location) - - # file urls - elif is_file_url(link): - unpack_file_url(link, location, download_dir, hashes=hashes) - - # http urls - else: - if session is None: - session = PipSession() - - unpack_http_url( - link, - location, - download_dir, - session, - hashes=hashes - ) - if only_download: - write_delete_marker_file(location) - - -def _download_http_url(link, session, temp_dir, hashes): - """Download link url into temp_dir using provided session""" - target_url = link.url.split('#', 1)[0] - try: - resp = session.get( - target_url, - # We use Accept-Encoding: identity here because requests - # defaults to accepting compressed responses. This breaks in - # a variety of ways depending on how the server is configured. - # - Some servers will notice that the file isn't a compressible - # file and will leave the file alone and with an empty - # Content-Encoding - # - Some servers will notice that the file is already - # compressed and will leave the file alone and will add a - # Content-Encoding: gzip header - # - Some servers won't notice anything at all and will take - # a file that's already been compressed and compress it again - # and set the Content-Encoding: gzip header - # By setting this to request only the identity encoding We're - # hoping to eliminate the third case. Hopefully there does not - # exist a server which when given a file will notice it is - # already compressed and that you're not asking for a - # compressed file and will then decompress it before sending - # because if that's the case I don't think it'll ever be - # possible to make this work. - headers={"Accept-Encoding": "identity"}, - stream=True, - ) - resp.raise_for_status() - except requests.HTTPError as exc: - logger.critical( - "HTTP error %s while getting %s", exc.response.status_code, link, - ) - raise - - content_type = resp.headers.get('content-type', '') - filename = link.filename # fallback - # Have a look at the Content-Disposition header for a better guess - content_disposition = resp.headers.get('content-disposition') - if content_disposition: - type, params = cgi.parse_header(content_disposition) - # We use ``or`` here because we don't want to use an "empty" value - # from the filename param. - filename = params.get('filename') or filename - ext = splitext(filename)[1] - if not ext: - ext = mimetypes.guess_extension(content_type) - if ext: - filename += ext - if not ext and link.url != resp.url: - ext = os.path.splitext(resp.url)[1] - if ext: - filename += ext - file_path = os.path.join(temp_dir, filename) - with open(file_path, 'wb') as content_file: - _download_url(resp, link, content_file, hashes) - return file_path, content_type - - -def _check_download_dir(link, download_dir, hashes): - """ Check download_dir for previously downloaded file with correct hash - If a correct file is found return its path else None - """ - download_path = os.path.join(download_dir, link.filename) - if os.path.exists(download_path): - # If already downloaded, does its hash match? - logger.info('File was already downloaded %s', download_path) - if hashes: - try: - hashes.check_against_path(download_path) - except HashMismatch: - logger.warning( - 'Previously-downloaded file %s has bad hash. ' - 'Re-downloading.', - download_path - ) - os.unlink(download_path) - return None - return download_path - return None diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/exceptions.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/exceptions.py deleted file mode 100644 index 50b527f9..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/exceptions.py +++ /dev/null @@ -1,244 +0,0 @@ -"""Exceptions used throughout package""" -from __future__ import absolute_import - -from itertools import chain, groupby, repeat - -from pip._vendor.six import iteritems - - -class PipError(Exception): - """Base pip exception""" - - -class InstallationError(PipError): - """General exception during installation""" - - -class UninstallationError(PipError): - """General exception during uninstallation""" - - -class DistributionNotFound(InstallationError): - """Raised when a distribution cannot be found to satisfy a requirement""" - - -class RequirementsFileParseError(InstallationError): - """Raised when a general error occurs parsing a requirements file line.""" - - -class BestVersionAlreadyInstalled(PipError): - """Raised when the most up-to-date version of a package is already - installed.""" - - -class BadCommand(PipError): - """Raised when virtualenv or a command is not found""" - - -class CommandError(PipError): - """Raised when there is an error in command-line arguments""" - - -class PreviousBuildDirError(PipError): - """Raised when there's a previous conflicting build directory""" - - -class InvalidWheelFilename(InstallationError): - """Invalid wheel filename.""" - - -class UnsupportedWheel(InstallationError): - """Unsupported wheel.""" - - -class HashErrors(InstallationError): - """Multiple HashError instances rolled into one for reporting""" - - def __init__(self): - self.errors = [] - - def append(self, error): - self.errors.append(error) - - def __str__(self): - lines = [] - self.errors.sort(key=lambda e: e.order) - for cls, errors_of_cls in groupby(self.errors, lambda e: e.__class__): - lines.append(cls.head) - lines.extend(e.body() for e in errors_of_cls) - if lines: - return '\n'.join(lines) - - def __nonzero__(self): - return bool(self.errors) - - def __bool__(self): - return self.__nonzero__() - - -class HashError(InstallationError): - """ - A failure to verify a package against known-good hashes - - :cvar order: An int sorting hash exception classes by difficulty of - recovery (lower being harder), so the user doesn't bother fretting - about unpinned packages when he has deeper issues, like VCS - dependencies, to deal with. Also keeps error reports in a - deterministic order. - :cvar head: A section heading for display above potentially many - exceptions of this kind - :ivar req: The InstallRequirement that triggered this error. This is - pasted on after the exception is instantiated, because it's not - typically available earlier. - - """ - req = None - head = '' - - def body(self): - """Return a summary of me for display under the heading. - - This default implementation simply prints a description of the - triggering requirement. - - :param req: The InstallRequirement that provoked this error, with - populate_link() having already been called - - """ - return ' %s' % self._requirement_name() - - def __str__(self): - return '%s\n%s' % (self.head, self.body()) - - def _requirement_name(self): - """Return a description of the requirement that triggered me. - - This default implementation returns long description of the req, with - line numbers - - """ - return str(self.req) if self.req else 'unknown package' - - -class VcsHashUnsupported(HashError): - """A hash was provided for a version-control-system-based requirement, but - we don't have a method for hashing those.""" - - order = 0 - head = ("Can't verify hashes for these requirements because we don't " - "have a way to hash version control repositories:") - - -class DirectoryUrlHashUnsupported(HashError): - """A hash was provided for a version-control-system-based requirement, but - we don't have a method for hashing those.""" - - order = 1 - head = ("Can't verify hashes for these file:// requirements because they " - "point to directories:") - - -class HashMissing(HashError): - """A hash was needed for a requirement but is absent.""" - - order = 2 - head = ('Hashes are required in --require-hashes mode, but they are ' - 'missing from some requirements. Here is a list of those ' - 'requirements along with the hashes their downloaded archives ' - 'actually had. Add lines like these to your requirements files to ' - 'prevent tampering. (If you did not enable --require-hashes ' - 'manually, note that it turns on automatically when any package ' - 'has a hash.)') - - def __init__(self, gotten_hash): - """ - :param gotten_hash: The hash of the (possibly malicious) archive we - just downloaded - """ - self.gotten_hash = gotten_hash - - def body(self): - from pip.utils.hashes import FAVORITE_HASH # Dodge circular import. - - package = None - if self.req: - # In the case of URL-based requirements, display the original URL - # seen in the requirements file rather than the package name, - # so the output can be directly copied into the requirements file. - package = (self.req.original_link if self.req.original_link - # In case someone feeds something downright stupid - # to InstallRequirement's constructor. - else getattr(self.req, 'req', None)) - return ' %s --hash=%s:%s' % (package or 'unknown package', - FAVORITE_HASH, - self.gotten_hash) - - -class HashUnpinned(HashError): - """A requirement had a hash specified but was not pinned to a specific - version.""" - - order = 3 - head = ('In --require-hashes mode, all requirements must have their ' - 'versions pinned with ==. These do not:') - - -class HashMismatch(HashError): - """ - Distribution file hash values don't match. - - :ivar package_name: The name of the package that triggered the hash - mismatch. Feel free to write to this after the exception is raise to - improve its error message. - - """ - order = 4 - head = ('THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS ' - 'FILE. If you have updated the package versions, please update ' - 'the hashes. Otherwise, examine the package contents carefully; ' - 'someone may have tampered with them.') - - def __init__(self, allowed, gots): - """ - :param allowed: A dict of algorithm names pointing to lists of allowed - hex digests - :param gots: A dict of algorithm names pointing to hashes we - actually got from the files under suspicion - """ - self.allowed = allowed - self.gots = gots - - def body(self): - return ' %s:\n%s' % (self._requirement_name(), - self._hash_comparison()) - - def _hash_comparison(self): - """ - Return a comparison of actual and expected hash values. - - Example:: - - Expected sha256 abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde - or 123451234512345123451234512345123451234512345 - Got bcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdef - - """ - def hash_then_or(hash_name): - # For now, all the decent hashes have 6-char names, so we can get - # away with hard-coding space literals. - return chain([hash_name], repeat(' or')) - - lines = [] - for hash_name, expecteds in iteritems(self.allowed): - prefix = hash_then_or(hash_name) - lines.extend((' Expected %s %s' % (next(prefix), e)) - for e in expecteds) - lines.append(' Got %s\n' % - self.gots[hash_name].hexdigest()) - prefix = ' or' - return '\n'.join(lines) - - -class UnsupportedPythonVersion(InstallationError): - """Unsupported python version according to Requires-Python package - metadata.""" diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/index.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/index.py deleted file mode 100644 index f653f6e6..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/index.py +++ /dev/null @@ -1,1102 +0,0 @@ -"""Routines related to PyPI, indexes""" -from __future__ import absolute_import - -import logging -import cgi -from collections import namedtuple -import itertools -import sys -import os -import re -import mimetypes -import posixpath -import warnings - -from pip._vendor.six.moves.urllib import parse as urllib_parse -from pip._vendor.six.moves.urllib import request as urllib_request - -from pip.compat import ipaddress -from pip.utils import ( - cached_property, splitext, normalize_path, - ARCHIVE_EXTENSIONS, SUPPORTED_EXTENSIONS, -) -from pip.utils.deprecation import RemovedInPip10Warning -from pip.utils.logging import indent_log -from pip.utils.packaging import check_requires_python -from pip.exceptions import ( - DistributionNotFound, BestVersionAlreadyInstalled, InvalidWheelFilename, - UnsupportedWheel, -) -from pip.download import HAS_TLS, is_url, path_to_url, url_to_path -from pip.wheel import Wheel, wheel_ext -from pip.pep425tags import get_supported -from pip._vendor import html5lib, requests, six -from pip._vendor.packaging.version import parse as parse_version -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.packaging import specifiers -from pip._vendor.requests.exceptions import SSLError -from pip._vendor.distlib.compat import unescape - - -__all__ = ['FormatControl', 'fmt_ctl_handle_mutual_exclude', 'PackageFinder'] - - -SECURE_ORIGINS = [ - # protocol, hostname, port - # Taken from Chrome's list of secure origins (See: http://bit.ly/1qrySKC) - ("https", "*", "*"), - ("*", "localhost", "*"), - ("*", "127.0.0.0/8", "*"), - ("*", "::1/128", "*"), - ("file", "*", None), - # ssh is always secure. - ("ssh", "*", "*"), -] - - -logger = logging.getLogger(__name__) - - -class InstallationCandidate(object): - - def __init__(self, project, version, location): - self.project = project - self.version = parse_version(version) - self.location = location - self._key = (self.project, self.version, self.location) - - def __repr__(self): - return "".format( - self.project, self.version, self.location, - ) - - def __hash__(self): - return hash(self._key) - - def __lt__(self, other): - return self._compare(other, lambda s, o: s < o) - - def __le__(self, other): - return self._compare(other, lambda s, o: s <= o) - - def __eq__(self, other): - return self._compare(other, lambda s, o: s == o) - - def __ge__(self, other): - return self._compare(other, lambda s, o: s >= o) - - def __gt__(self, other): - return self._compare(other, lambda s, o: s > o) - - def __ne__(self, other): - return self._compare(other, lambda s, o: s != o) - - def _compare(self, other, method): - if not isinstance(other, InstallationCandidate): - return NotImplemented - - return method(self._key, other._key) - - -class PackageFinder(object): - """This finds packages. - - This is meant to match easy_install's technique for looking for - packages, by reading pages and looking for appropriate links. - """ - - def __init__(self, find_links, index_urls, allow_all_prereleases=False, - trusted_hosts=None, process_dependency_links=False, - session=None, format_control=None, platform=None, - versions=None, abi=None, implementation=None): - """Create a PackageFinder. - - :param format_control: A FormatControl object or None. Used to control - the selection of source packages / binary packages when consulting - the index and links. - :param platform: A string or None. If None, searches for packages - that are supported by the current system. Otherwise, will find - packages that can be built on the platform passed in. These - packages will only be downloaded for distribution: they will - not be built locally. - :param versions: A list of strings or None. This is passed directly - to pep425tags.py in the get_supported() method. - :param abi: A string or None. This is passed directly - to pep425tags.py in the get_supported() method. - :param implementation: A string or None. This is passed directly - to pep425tags.py in the get_supported() method. - """ - if session is None: - raise TypeError( - "PackageFinder() missing 1 required keyword argument: " - "'session'" - ) - - # Build find_links. If an argument starts with ~, it may be - # a local file relative to a home directory. So try normalizing - # it and if it exists, use the normalized version. - # This is deliberately conservative - it might be fine just to - # blindly normalize anything starting with a ~... - self.find_links = [] - for link in find_links: - if link.startswith('~'): - new_link = normalize_path(link) - if os.path.exists(new_link): - link = new_link - self.find_links.append(link) - - self.index_urls = index_urls - self.dependency_links = [] - - # These are boring links that have already been logged somehow: - self.logged_links = set() - - self.format_control = format_control or FormatControl(set(), set()) - - # Domains that we won't emit warnings for when not using HTTPS - self.secure_origins = [ - ("*", host, "*") - for host in (trusted_hosts if trusted_hosts else []) - ] - - # Do we want to allow _all_ pre-releases? - self.allow_all_prereleases = allow_all_prereleases - - # Do we process dependency links? - self.process_dependency_links = process_dependency_links - - # The Session we'll use to make requests - self.session = session - - # The valid tags to check potential found wheel candidates against - self.valid_tags = get_supported( - versions=versions, - platform=platform, - abi=abi, - impl=implementation, - ) - - # If we don't have TLS enabled, then WARN if anyplace we're looking - # relies on TLS. - if not HAS_TLS: - for link in itertools.chain(self.index_urls, self.find_links): - parsed = urllib_parse.urlparse(link) - if parsed.scheme == "https": - logger.warning( - "pip is configured with locations that require " - "TLS/SSL, however the ssl module in Python is not " - "available." - ) - break - - def add_dependency_links(self, links): - # # FIXME: this shouldn't be global list this, it should only - # # apply to requirements of the package that specifies the - # # dependency_links value - # # FIXME: also, we should track comes_from (i.e., use Link) - if self.process_dependency_links: - warnings.warn( - "Dependency Links processing has been deprecated and will be " - "removed in a future release.", - RemovedInPip10Warning, - ) - self.dependency_links.extend(links) - - @staticmethod - def _sort_locations(locations, expand_dir=False): - """ - Sort locations into "files" (archives) and "urls", and return - a pair of lists (files,urls) - """ - files = [] - urls = [] - - # puts the url for the given file path into the appropriate list - def sort_path(path): - url = path_to_url(path) - if mimetypes.guess_type(url, strict=False)[0] == 'text/html': - urls.append(url) - else: - files.append(url) - - for url in locations: - - is_local_path = os.path.exists(url) - is_file_url = url.startswith('file:') - - if is_local_path or is_file_url: - if is_local_path: - path = url - else: - path = url_to_path(url) - if os.path.isdir(path): - if expand_dir: - path = os.path.realpath(path) - for item in os.listdir(path): - sort_path(os.path.join(path, item)) - elif is_file_url: - urls.append(url) - elif os.path.isfile(path): - sort_path(path) - else: - logger.warning( - "Url '%s' is ignored: it is neither a file " - "nor a directory.", url) - elif is_url(url): - # Only add url with clear scheme - urls.append(url) - else: - logger.warning( - "Url '%s' is ignored. It is either a non-existing " - "path or lacks a specific scheme.", url) - - return files, urls - - def _candidate_sort_key(self, candidate): - """ - Function used to generate link sort key for link tuples. - The greater the return value, the more preferred it is. - If not finding wheels, then sorted by version only. - If finding wheels, then the sort order is by version, then: - 1. existing installs - 2. wheels ordered via Wheel.support_index_min(self.valid_tags) - 3. source archives - Note: it was considered to embed this logic into the Link - comparison operators, but then different sdist links - with the same version, would have to be considered equal - """ - support_num = len(self.valid_tags) - if candidate.location.is_wheel: - # can raise InvalidWheelFilename - wheel = Wheel(candidate.location.filename) - if not wheel.supported(self.valid_tags): - raise UnsupportedWheel( - "%s is not a supported wheel for this platform. It " - "can't be sorted." % wheel.filename - ) - pri = -(wheel.support_index_min(self.valid_tags)) - else: # sdist - pri = -(support_num) - return (candidate.version, pri) - - def _validate_secure_origin(self, logger, location): - # Determine if this url used a secure transport mechanism - parsed = urllib_parse.urlparse(str(location)) - origin = (parsed.scheme, parsed.hostname, parsed.port) - - # The protocol to use to see if the protocol matches. - # Don't count the repository type as part of the protocol: in - # cases such as "git+ssh", only use "ssh". (I.e., Only verify against - # the last scheme.) - protocol = origin[0].rsplit('+', 1)[-1] - - # Determine if our origin is a secure origin by looking through our - # hardcoded list of secure origins, as well as any additional ones - # configured on this PackageFinder instance. - for secure_origin in (SECURE_ORIGINS + self.secure_origins): - if protocol != secure_origin[0] and secure_origin[0] != "*": - continue - - try: - # We need to do this decode dance to ensure that we have a - # unicode object, even on Python 2.x. - addr = ipaddress.ip_address( - origin[1] - if ( - isinstance(origin[1], six.text_type) or - origin[1] is None - ) - else origin[1].decode("utf8") - ) - network = ipaddress.ip_network( - secure_origin[1] - if isinstance(secure_origin[1], six.text_type) - else secure_origin[1].decode("utf8") - ) - except ValueError: - # We don't have both a valid address or a valid network, so - # we'll check this origin against hostnames. - if (origin[1] and - origin[1].lower() != secure_origin[1].lower() and - secure_origin[1] != "*"): - continue - else: - # We have a valid address and network, so see if the address - # is contained within the network. - if addr not in network: - continue - - # Check to see if the port patches - if (origin[2] != secure_origin[2] and - secure_origin[2] != "*" and - secure_origin[2] is not None): - continue - - # If we've gotten here, then this origin matches the current - # secure origin and we should return True - return True - - # If we've gotten to this point, then the origin isn't secure and we - # will not accept it as a valid location to search. We will however - # log a warning that we are ignoring it. - logger.warning( - "The repository located at %s is not a trusted or secure host and " - "is being ignored. If this repository is available via HTTPS it " - "is recommended to use HTTPS instead, otherwise you may silence " - "this warning and allow it anyways with '--trusted-host %s'.", - parsed.hostname, - parsed.hostname, - ) - - return False - - def _get_index_urls_locations(self, project_name): - """Returns the locations found via self.index_urls - - Checks the url_name on the main (first in the list) index and - use this url_name to produce all locations - """ - - def mkurl_pypi_url(url): - loc = posixpath.join( - url, - urllib_parse.quote(canonicalize_name(project_name))) - # For maximum compatibility with easy_install, ensure the path - # ends in a trailing slash. Although this isn't in the spec - # (and PyPI can handle it without the slash) some other index - # implementations might break if they relied on easy_install's - # behavior. - if not loc.endswith('/'): - loc = loc + '/' - return loc - - return [mkurl_pypi_url(url) for url in self.index_urls] - - def find_all_candidates(self, project_name): - """Find all available InstallationCandidate for project_name - - This checks index_urls, find_links and dependency_links. - All versions found are returned as an InstallationCandidate list. - - See _link_package_versions for details on which files are accepted - """ - index_locations = self._get_index_urls_locations(project_name) - index_file_loc, index_url_loc = self._sort_locations(index_locations) - fl_file_loc, fl_url_loc = self._sort_locations( - self.find_links, expand_dir=True) - dep_file_loc, dep_url_loc = self._sort_locations(self.dependency_links) - - file_locations = ( - Link(url) for url in itertools.chain( - index_file_loc, fl_file_loc, dep_file_loc) - ) - - # We trust every url that the user has given us whether it was given - # via --index-url or --find-links - # We explicitly do not trust links that came from dependency_links - # We want to filter out any thing which does not have a secure origin. - url_locations = [ - link for link in itertools.chain( - (Link(url) for url in index_url_loc), - (Link(url) for url in fl_url_loc), - (Link(url) for url in dep_url_loc), - ) - if self._validate_secure_origin(logger, link) - ] - - logger.debug('%d location(s) to search for versions of %s:', - len(url_locations), project_name) - - for location in url_locations: - logger.debug('* %s', location) - - canonical_name = canonicalize_name(project_name) - formats = fmt_ctl_formats(self.format_control, canonical_name) - search = Search(project_name, canonical_name, formats) - find_links_versions = self._package_versions( - # We trust every directly linked archive in find_links - (Link(url, '-f') for url in self.find_links), - search - ) - - page_versions = [] - for page in self._get_pages(url_locations, project_name): - logger.debug('Analyzing links from page %s', page.url) - with indent_log(): - page_versions.extend( - self._package_versions(page.links, search) - ) - - dependency_versions = self._package_versions( - (Link(url) for url in self.dependency_links), search - ) - if dependency_versions: - logger.debug( - 'dependency_links found: %s', - ', '.join([ - version.location.url for version in dependency_versions - ]) - ) - - file_versions = self._package_versions(file_locations, search) - if file_versions: - file_versions.sort(reverse=True) - logger.debug( - 'Local files found: %s', - ', '.join([ - url_to_path(candidate.location.url) - for candidate in file_versions - ]) - ) - - # This is an intentional priority ordering - return ( - file_versions + find_links_versions + page_versions + - dependency_versions - ) - - def find_requirement(self, req, upgrade): - """Try to find a Link matching req - - Expects req, an InstallRequirement and upgrade, a boolean - Returns a Link if found, - Raises DistributionNotFound or BestVersionAlreadyInstalled otherwise - """ - all_candidates = self.find_all_candidates(req.name) - - # Filter out anything which doesn't match our specifier - compatible_versions = set( - req.specifier.filter( - # We turn the version object into a str here because otherwise - # when we're debundled but setuptools isn't, Python will see - # packaging.version.Version and - # pkg_resources._vendor.packaging.version.Version as different - # types. This way we'll use a str as a common data interchange - # format. If we stop using the pkg_resources provided specifier - # and start using our own, we can drop the cast to str(). - [str(c.version) for c in all_candidates], - prereleases=( - self.allow_all_prereleases - if self.allow_all_prereleases else None - ), - ) - ) - applicable_candidates = [ - # Again, converting to str to deal with debundling. - c for c in all_candidates if str(c.version) in compatible_versions - ] - - if applicable_candidates: - best_candidate = max(applicable_candidates, - key=self._candidate_sort_key) - else: - best_candidate = None - - if req.satisfied_by is not None: - installed_version = parse_version(req.satisfied_by.version) - else: - installed_version = None - - if installed_version is None and best_candidate is None: - logger.critical( - 'Could not find a version that satisfies the requirement %s ' - '(from versions: %s)', - req, - ', '.join( - sorted( - set(str(c.version) for c in all_candidates), - key=parse_version, - ) - ) - ) - - raise DistributionNotFound( - 'No matching distribution found for %s' % req - ) - - best_installed = False - if installed_version and ( - best_candidate is None or - best_candidate.version <= installed_version): - best_installed = True - - if not upgrade and installed_version is not None: - if best_installed: - logger.debug( - 'Existing installed version (%s) is most up-to-date and ' - 'satisfies requirement', - installed_version, - ) - else: - logger.debug( - 'Existing installed version (%s) satisfies requirement ' - '(most up-to-date version is %s)', - installed_version, - best_candidate.version, - ) - return None - - if best_installed: - # We have an existing version, and its the best version - logger.debug( - 'Installed version (%s) is most up-to-date (past versions: ' - '%s)', - installed_version, - ', '.join(sorted(compatible_versions, key=parse_version)) or - "none", - ) - raise BestVersionAlreadyInstalled - - logger.debug( - 'Using version %s (newest of versions: %s)', - best_candidate.version, - ', '.join(sorted(compatible_versions, key=parse_version)) - ) - return best_candidate.location - - def _get_pages(self, locations, project_name): - """ - Yields (page, page_url) from the given locations, skipping - locations that have errors. - """ - seen = set() - for location in locations: - if location in seen: - continue - seen.add(location) - - page = self._get_page(location) - if page is None: - continue - - yield page - - _py_version_re = re.compile(r'-py([123]\.?[0-9]?)$') - - def _sort_links(self, links): - """ - Returns elements of links in order, non-egg links first, egg links - second, while eliminating duplicates - """ - eggs, no_eggs = [], [] - seen = set() - for link in links: - if link not in seen: - seen.add(link) - if link.egg_fragment: - eggs.append(link) - else: - no_eggs.append(link) - return no_eggs + eggs - - def _package_versions(self, links, search): - result = [] - for link in self._sort_links(links): - v = self._link_package_versions(link, search) - if v is not None: - result.append(v) - return result - - def _log_skipped_link(self, link, reason): - if link not in self.logged_links: - logger.debug('Skipping link %s; %s', link, reason) - self.logged_links.add(link) - - def _link_package_versions(self, link, search): - """Return an InstallationCandidate or None""" - version = None - if link.egg_fragment: - egg_info = link.egg_fragment - ext = link.ext - else: - egg_info, ext = link.splitext() - if not ext: - self._log_skipped_link(link, 'not a file') - return - if ext not in SUPPORTED_EXTENSIONS: - self._log_skipped_link( - link, 'unsupported archive format: %s' % ext) - return - if "binary" not in search.formats and ext == wheel_ext: - self._log_skipped_link( - link, 'No binaries permitted for %s' % search.supplied) - return - if "macosx10" in link.path and ext == '.zip': - self._log_skipped_link(link, 'macosx10 one') - return - if ext == wheel_ext: - try: - wheel = Wheel(link.filename) - except InvalidWheelFilename: - self._log_skipped_link(link, 'invalid wheel filename') - return - if canonicalize_name(wheel.name) != search.canonical: - self._log_skipped_link( - link, 'wrong project name (not %s)' % search.supplied) - return - - if not wheel.supported(self.valid_tags): - self._log_skipped_link( - link, 'it is not compatible with this Python') - return - - version = wheel.version - - # This should be up by the search.ok_binary check, but see issue 2700. - if "source" not in search.formats and ext != wheel_ext: - self._log_skipped_link( - link, 'No sources permitted for %s' % search.supplied) - return - - if not version: - version = egg_info_matches(egg_info, search.supplied, link) - if version is None: - self._log_skipped_link( - link, 'wrong project name (not %s)' % search.supplied) - return - - match = self._py_version_re.search(version) - if match: - version = version[:match.start()] - py_version = match.group(1) - if py_version != sys.version[:3]: - self._log_skipped_link( - link, 'Python version is incorrect') - return - try: - support_this_python = check_requires_python(link.requires_python) - except specifiers.InvalidSpecifier: - logger.debug("Package %s has an invalid Requires-Python entry: %s", - link.filename, link.requires_python) - support_this_python = True - - if not support_this_python: - logger.debug("The package %s is incompatible with the python" - "version in use. Acceptable python versions are:%s", - link, link.requires_python) - return - logger.debug('Found link %s, version: %s', link, version) - - return InstallationCandidate(search.supplied, version, link) - - def _get_page(self, link): - return HTMLPage.get_page(link, session=self.session) - - -def egg_info_matches( - egg_info, search_name, link, - _egg_info_re=re.compile(r'([a-z0-9_.]+)-([a-z0-9_.!+-]+)', re.I)): - """Pull the version part out of a string. - - :param egg_info: The string to parse. E.g. foo-2.1 - :param search_name: The name of the package this belongs to. None to - infer the name. Note that this cannot unambiguously parse strings - like foo-2-2 which might be foo, 2-2 or foo-2, 2. - :param link: The link the string came from, for logging on failure. - """ - match = _egg_info_re.search(egg_info) - if not match: - logger.debug('Could not parse version from link: %s', link) - return None - if search_name is None: - full_match = match.group(0) - return full_match[full_match.index('-'):] - name = match.group(0).lower() - # To match the "safe" name that pkg_resources creates: - name = name.replace('_', '-') - # project name and version must be separated by a dash - look_for = search_name.lower() + "-" - if name.startswith(look_for): - return match.group(0)[len(look_for):] - else: - return None - - -class HTMLPage(object): - """Represents one page, along with its URL""" - - def __init__(self, content, url, headers=None): - # Determine if we have any encoding information in our headers - encoding = None - if headers and "Content-Type" in headers: - content_type, params = cgi.parse_header(headers["Content-Type"]) - - if "charset" in params: - encoding = params['charset'] - - self.content = content - self.parsed = html5lib.parse( - self.content, - transport_encoding=encoding, - namespaceHTMLElements=False, - ) - self.url = url - self.headers = headers - - def __str__(self): - return self.url - - @classmethod - def get_page(cls, link, skip_archives=True, session=None): - if session is None: - raise TypeError( - "get_page() missing 1 required keyword argument: 'session'" - ) - - url = link.url - url = url.split('#', 1)[0] - - # Check for VCS schemes that do not support lookup as web pages. - from pip.vcs import VcsSupport - for scheme in VcsSupport.schemes: - if url.lower().startswith(scheme) and url[len(scheme)] in '+:': - logger.debug('Cannot look at %s URL %s', scheme, link) - return None - - try: - if skip_archives: - filename = link.filename - for bad_ext in ARCHIVE_EXTENSIONS: - if filename.endswith(bad_ext): - content_type = cls._get_content_type( - url, session=session, - ) - if content_type.lower().startswith('text/html'): - break - else: - logger.debug( - 'Skipping page %s because of Content-Type: %s', - link, - content_type, - ) - return - - logger.debug('Getting page %s', url) - - # Tack index.html onto file:// URLs that point to directories - (scheme, netloc, path, params, query, fragment) = \ - urllib_parse.urlparse(url) - if (scheme == 'file' and - os.path.isdir(urllib_request.url2pathname(path))): - # add trailing slash if not present so urljoin doesn't trim - # final segment - if not url.endswith('/'): - url += '/' - url = urllib_parse.urljoin(url, 'index.html') - logger.debug(' file: URL is directory, getting %s', url) - - resp = session.get( - url, - headers={ - "Accept": "text/html", - "Cache-Control": "max-age=600", - }, - ) - resp.raise_for_status() - - # The check for archives above only works if the url ends with - # something that looks like an archive. However that is not a - # requirement of an url. Unless we issue a HEAD request on every - # url we cannot know ahead of time for sure if something is HTML - # or not. However we can check after we've downloaded it. - content_type = resp.headers.get('Content-Type', 'unknown') - if not content_type.lower().startswith("text/html"): - logger.debug( - 'Skipping page %s because of Content-Type: %s', - link, - content_type, - ) - return - - inst = cls(resp.content, resp.url, resp.headers) - except requests.HTTPError as exc: - cls._handle_fail(link, exc, url) - except SSLError as exc: - reason = ("There was a problem confirming the ssl certificate: " - "%s" % exc) - cls._handle_fail(link, reason, url, meth=logger.info) - except requests.ConnectionError as exc: - cls._handle_fail(link, "connection error: %s" % exc, url) - except requests.Timeout: - cls._handle_fail(link, "timed out", url) - else: - return inst - - @staticmethod - def _handle_fail(link, reason, url, meth=None): - if meth is None: - meth = logger.debug - - meth("Could not fetch URL %s: %s - skipping", link, reason) - - @staticmethod - def _get_content_type(url, session): - """Get the Content-Type of the given url, using a HEAD request""" - scheme, netloc, path, query, fragment = urllib_parse.urlsplit(url) - if scheme not in ('http', 'https'): - # FIXME: some warning or something? - # assertion error? - return '' - - resp = session.head(url, allow_redirects=True) - resp.raise_for_status() - - return resp.headers.get("Content-Type", "") - - @cached_property - def base_url(self): - bases = [ - x for x in self.parsed.findall(".//base") - if x.get("href") is not None - ] - if bases and bases[0].get("href"): - return bases[0].get("href") - else: - return self.url - - @property - def links(self): - """Yields all links in the page""" - for anchor in self.parsed.findall(".//a"): - if anchor.get("href"): - href = anchor.get("href") - url = self.clean_link( - urllib_parse.urljoin(self.base_url, href) - ) - pyrequire = anchor.get('data-requires-python') - pyrequire = unescape(pyrequire) if pyrequire else None - yield Link(url, self, requires_python=pyrequire) - - _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I) - - def clean_link(self, url): - """Makes sure a link is fully encoded. That is, if a ' ' shows up in - the link, it will be rewritten to %20 (while not over-quoting - % or other characters).""" - return self._clean_re.sub( - lambda match: '%%%2x' % ord(match.group(0)), url) - - -class Link(object): - - def __init__(self, url, comes_from=None, requires_python=None): - """ - Object representing a parsed link from https://pypi.python.org/simple/* - - url: - url of the resource pointed to (href of the link) - comes_from: - instance of HTMLPage where the link was found, or string. - requires_python: - String containing the `Requires-Python` metadata field, specified - in PEP 345. This may be specified by a data-requires-python - attribute in the HTML link tag, as described in PEP 503. - """ - - # url can be a UNC windows share - if url.startswith('\\\\'): - url = path_to_url(url) - - self.url = url - self.comes_from = comes_from - self.requires_python = requires_python if requires_python else None - - def __str__(self): - if self.requires_python: - rp = ' (requires-python:%s)' % self.requires_python - else: - rp = '' - if self.comes_from: - return '%s (from %s)%s' % (self.url, self.comes_from, rp) - else: - return str(self.url) - - def __repr__(self): - return '' % self - - def __eq__(self, other): - if not isinstance(other, Link): - return NotImplemented - return self.url == other.url - - def __ne__(self, other): - if not isinstance(other, Link): - return NotImplemented - return self.url != other.url - - def __lt__(self, other): - if not isinstance(other, Link): - return NotImplemented - return self.url < other.url - - def __le__(self, other): - if not isinstance(other, Link): - return NotImplemented - return self.url <= other.url - - def __gt__(self, other): - if not isinstance(other, Link): - return NotImplemented - return self.url > other.url - - def __ge__(self, other): - if not isinstance(other, Link): - return NotImplemented - return self.url >= other.url - - def __hash__(self): - return hash(self.url) - - @property - def filename(self): - _, netloc, path, _, _ = urllib_parse.urlsplit(self.url) - name = posixpath.basename(path.rstrip('/')) or netloc - name = urllib_parse.unquote(name) - assert name, ('URL %r produced no filename' % self.url) - return name - - @property - def scheme(self): - return urllib_parse.urlsplit(self.url)[0] - - @property - def netloc(self): - return urllib_parse.urlsplit(self.url)[1] - - @property - def path(self): - return urllib_parse.unquote(urllib_parse.urlsplit(self.url)[2]) - - def splitext(self): - return splitext(posixpath.basename(self.path.rstrip('/'))) - - @property - def ext(self): - return self.splitext()[1] - - @property - def url_without_fragment(self): - scheme, netloc, path, query, fragment = urllib_parse.urlsplit(self.url) - return urllib_parse.urlunsplit((scheme, netloc, path, query, None)) - - _egg_fragment_re = re.compile(r'[#&]egg=([^&]*)') - - @property - def egg_fragment(self): - match = self._egg_fragment_re.search(self.url) - if not match: - return None - return match.group(1) - - _subdirectory_fragment_re = re.compile(r'[#&]subdirectory=([^&]*)') - - @property - def subdirectory_fragment(self): - match = self._subdirectory_fragment_re.search(self.url) - if not match: - return None - return match.group(1) - - _hash_re = re.compile( - r'(sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)' - ) - - @property - def hash(self): - match = self._hash_re.search(self.url) - if match: - return match.group(2) - return None - - @property - def hash_name(self): - match = self._hash_re.search(self.url) - if match: - return match.group(1) - return None - - @property - def show_url(self): - return posixpath.basename(self.url.split('#', 1)[0].split('?', 1)[0]) - - @property - def is_wheel(self): - return self.ext == wheel_ext - - @property - def is_artifact(self): - """ - Determines if this points to an actual artifact (e.g. a tarball) or if - it points to an "abstract" thing like a path or a VCS location. - """ - from pip.vcs import vcs - - if self.scheme in vcs.all_schemes: - return False - - return True - - -FormatControl = namedtuple('FormatControl', 'no_binary only_binary') -"""This object has two fields, no_binary and only_binary. - -If a field is falsy, it isn't set. If it is {':all:'}, it should match all -packages except those listed in the other field. Only one field can be set -to {':all:'} at a time. The rest of the time exact package name matches -are listed, with any given package only showing up in one field at a time. -""" - - -def fmt_ctl_handle_mutual_exclude(value, target, other): - new = value.split(',') - while ':all:' in new: - other.clear() - target.clear() - target.add(':all:') - del new[:new.index(':all:') + 1] - if ':none:' not in new: - # Without a none, we want to discard everything as :all: covers it - return - for name in new: - if name == ':none:': - target.clear() - continue - name = canonicalize_name(name) - other.discard(name) - target.add(name) - - -def fmt_ctl_formats(fmt_ctl, canonical_name): - result = set(["binary", "source"]) - if canonical_name in fmt_ctl.only_binary: - result.discard('source') - elif canonical_name in fmt_ctl.no_binary: - result.discard('binary') - elif ':all:' in fmt_ctl.only_binary: - result.discard('source') - elif ':all:' in fmt_ctl.no_binary: - result.discard('binary') - return frozenset(result) - - -def fmt_ctl_no_binary(fmt_ctl): - fmt_ctl_handle_mutual_exclude( - ':all:', fmt_ctl.no_binary, fmt_ctl.only_binary) - - -def fmt_ctl_no_use_wheel(fmt_ctl): - fmt_ctl_no_binary(fmt_ctl) - warnings.warn( - '--no-use-wheel is deprecated and will be removed in the future. ' - ' Please use --no-binary :all: instead.', RemovedInPip10Warning, - stacklevel=2) - - -Search = namedtuple('Search', 'supplied canonical formats') -"""Capture key aspects of a search. - -:attribute supplied: The user supplied package. -:attribute canonical: The canonical package name. -:attribute formats: The formats allowed for this package. Should be a set - with 'binary' or 'source' or both in it. -""" diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/locations.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/locations.py deleted file mode 100644 index e598ef10..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/locations.py +++ /dev/null @@ -1,182 +0,0 @@ -"""Locations where we look for configs, install stuff, etc""" -from __future__ import absolute_import - -import os -import os.path -import site -import sys - -from distutils import sysconfig -from distutils.command.install import install, SCHEME_KEYS # noqa - -from pip.compat import WINDOWS, expanduser -from pip.utils import appdirs - - -# Application Directories -USER_CACHE_DIR = appdirs.user_cache_dir("pip") - - -DELETE_MARKER_MESSAGE = '''\ -This file is placed here by pip to indicate the source was put -here by pip. - -Once this package is successfully installed this source code will be -deleted (unless you remove this file). -''' -PIP_DELETE_MARKER_FILENAME = 'pip-delete-this-directory.txt' - - -def write_delete_marker_file(directory): - """ - Write the pip delete marker file into this directory. - """ - filepath = os.path.join(directory, PIP_DELETE_MARKER_FILENAME) - with open(filepath, 'w') as marker_fp: - marker_fp.write(DELETE_MARKER_MESSAGE) - - -def running_under_virtualenv(): - """ - Return True if we're running inside a virtualenv, False otherwise. - - """ - if hasattr(sys, 'real_prefix'): - return True - elif sys.prefix != getattr(sys, "base_prefix", sys.prefix): - return True - - return False - - -def virtualenv_no_global(): - """ - Return True if in a venv and no system site packages. - """ - # this mirrors the logic in virtualenv.py for locating the - # no-global-site-packages.txt file - site_mod_dir = os.path.dirname(os.path.abspath(site.__file__)) - no_global_file = os.path.join(site_mod_dir, 'no-global-site-packages.txt') - if running_under_virtualenv() and os.path.isfile(no_global_file): - return True - - -if running_under_virtualenv(): - src_prefix = os.path.join(sys.prefix, 'src') -else: - # FIXME: keep src in cwd for now (it is not a temporary folder) - try: - src_prefix = os.path.join(os.getcwd(), 'src') - except OSError: - # In case the current working directory has been renamed or deleted - sys.exit( - "The folder you are executing pip from can no longer be found." - ) - -# under macOS + virtualenv sys.prefix is not properly resolved -# it is something like /path/to/python/bin/.. -# Note: using realpath due to tmp dirs on OSX being symlinks -src_prefix = os.path.abspath(src_prefix) - -# FIXME doesn't account for venv linked to global site-packages - -site_packages = sysconfig.get_python_lib() -user_site = site.USER_SITE -user_dir = expanduser('~') -if WINDOWS: - bin_py = os.path.join(sys.prefix, 'Scripts') - bin_user = os.path.join(user_site, 'Scripts') - # buildout uses 'bin' on Windows too? - if not os.path.exists(bin_py): - bin_py = os.path.join(sys.prefix, 'bin') - bin_user = os.path.join(user_site, 'bin') - - config_basename = 'pip.ini' - - legacy_storage_dir = os.path.join(user_dir, 'pip') - legacy_config_file = os.path.join( - legacy_storage_dir, - config_basename, - ) -else: - bin_py = os.path.join(sys.prefix, 'bin') - bin_user = os.path.join(user_site, 'bin') - - config_basename = 'pip.conf' - - legacy_storage_dir = os.path.join(user_dir, '.pip') - legacy_config_file = os.path.join( - legacy_storage_dir, - config_basename, - ) - - # Forcing to use /usr/local/bin for standard macOS framework installs - # Also log to ~/Library/Logs/ for use with the Console.app log viewer - if sys.platform[:6] == 'darwin' and sys.prefix[:16] == '/System/Library/': - bin_py = '/usr/local/bin' - -site_config_files = [ - os.path.join(path, config_basename) - for path in appdirs.site_config_dirs('pip') -] - - -def distutils_scheme(dist_name, user=False, home=None, root=None, - isolated=False, prefix=None): - """ - Return a distutils install scheme - """ - from distutils.dist import Distribution - - scheme = {} - - if isolated: - extra_dist_args = {"script_args": ["--no-user-cfg"]} - else: - extra_dist_args = {} - dist_args = {'name': dist_name} - dist_args.update(extra_dist_args) - - d = Distribution(dist_args) - d.parse_config_files() - i = d.get_command_obj('install', create=True) - # NOTE: setting user or home has the side-effect of creating the home dir - # or user base for installations during finalize_options() - # ideally, we'd prefer a scheme class that has no side-effects. - assert not (user and prefix), "user={0} prefix={1}".format(user, prefix) - i.user = user or i.user - if user: - i.prefix = "" - i.prefix = prefix or i.prefix - i.home = home or i.home - i.root = root or i.root - i.finalize_options() - for key in SCHEME_KEYS: - scheme[key] = getattr(i, 'install_' + key) - - # install_lib specified in setup.cfg should install *everything* - # into there (i.e. it takes precedence over both purelib and - # platlib). Note, i.install_lib is *always* set after - # finalize_options(); we only want to override here if the user - # has explicitly requested it hence going back to the config - if 'install_lib' in d.get_option_dict('install'): - scheme.update(dict(purelib=i.install_lib, platlib=i.install_lib)) - - if running_under_virtualenv(): - scheme['headers'] = os.path.join( - sys.prefix, - 'include', - 'site', - 'python' + sys.version[:3], - dist_name, - ) - - if root is not None: - path_no_drive = os.path.splitdrive( - os.path.abspath(scheme["headers"]))[1] - scheme["headers"] = os.path.join( - root, - path_no_drive[1:], - ) - - return scheme diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/__init__.py deleted file mode 100644 index 1d727d7e..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from pip.models.index import Index, PyPI - - -__all__ = ["Index", "PyPI"] diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index eddcf38a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/__pycache__/index.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/__pycache__/index.cpython-36.pyc deleted file mode 100644 index bf1bb41a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/__pycache__/index.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/index.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/index.py deleted file mode 100644 index be991198..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/models/index.py +++ /dev/null @@ -1,16 +0,0 @@ -from pip._vendor.six.moves.urllib import parse as urllib_parse - - -class Index(object): - def __init__(self, url): - self.url = url - self.netloc = urllib_parse.urlsplit(url).netloc - self.simple_url = self.url_to_path('simple') - self.pypi_url = self.url_to_path('pypi') - self.pip_json_url = self.url_to_path('pypi/pip/json') - - def url_to_path(self, path): - return urllib_parse.urljoin(self.url, path) - - -PyPI = Index('https://pypi.python.org/') diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index caa26a87..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__pycache__/check.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__pycache__/check.cpython-36.pyc deleted file mode 100644 index 39df97f1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__pycache__/check.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__pycache__/freeze.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__pycache__/freeze.cpython-36.pyc deleted file mode 100644 index 62befaa9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/__pycache__/freeze.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/check.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/check.py deleted file mode 100644 index 2cf67aae..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/check.py +++ /dev/null @@ -1,49 +0,0 @@ - - -def check_requirements(installed_dists): - missing_reqs_dict = {} - incompatible_reqs_dict = {} - - for dist in installed_dists: - key = '%s==%s' % (dist.project_name, dist.version) - - missing_reqs = list(get_missing_reqs(dist, installed_dists)) - if missing_reqs: - missing_reqs_dict[key] = missing_reqs - - incompatible_reqs = list(get_incompatible_reqs( - dist, installed_dists)) - if incompatible_reqs: - incompatible_reqs_dict[key] = incompatible_reqs - - return (missing_reqs_dict, incompatible_reqs_dict) - - -def get_missing_reqs(dist, installed_dists): - """Return all of the requirements of `dist` that aren't present in - `installed_dists`. - - """ - installed_names = set(d.project_name.lower() for d in installed_dists) - missing_requirements = set() - - for requirement in dist.requires(): - if requirement.project_name.lower() not in installed_names: - missing_requirements.add(requirement) - yield requirement - - -def get_incompatible_reqs(dist, installed_dists): - """Return all of the requirements of `dist` that are present in - `installed_dists`, but have incompatible versions. - - """ - installed_dists_by_name = {} - for installed_dist in installed_dists: - installed_dists_by_name[installed_dist.project_name] = installed_dist - - for requirement in dist.requires(): - present_dist = installed_dists_by_name.get(requirement.project_name) - - if present_dist and present_dist not in requirement: - yield (requirement, present_dist) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/freeze.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/freeze.py deleted file mode 100644 index 920c2c12..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/operations/freeze.py +++ /dev/null @@ -1,132 +0,0 @@ -from __future__ import absolute_import - -import logging -import re - -import pip -from pip.req import InstallRequirement -from pip.req.req_file import COMMENT_RE -from pip.utils import get_installed_distributions -from pip._vendor import pkg_resources -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.pkg_resources import RequirementParseError - - -logger = logging.getLogger(__name__) - - -def freeze( - requirement=None, - find_links=None, local_only=None, user_only=None, skip_regex=None, - default_vcs=None, - isolated=False, - wheel_cache=None, - skip=()): - find_links = find_links or [] - skip_match = None - - if skip_regex: - skip_match = re.compile(skip_regex).search - - dependency_links = [] - - for dist in pkg_resources.working_set: - if dist.has_metadata('dependency_links.txt'): - dependency_links.extend( - dist.get_metadata_lines('dependency_links.txt') - ) - for link in find_links: - if '#egg=' in link: - dependency_links.append(link) - for link in find_links: - yield '-f %s' % link - installations = {} - for dist in get_installed_distributions(local_only=local_only, - skip=(), - user_only=user_only): - try: - req = pip.FrozenRequirement.from_dist( - dist, - dependency_links - ) - except RequirementParseError: - logger.warning( - "Could not parse requirement: %s", - dist.project_name - ) - continue - installations[req.name] = req - - if requirement: - # the options that don't get turned into an InstallRequirement - # should only be emitted once, even if the same option is in multiple - # requirements files, so we need to keep track of what has been emitted - # so that we don't emit it again if it's seen again - emitted_options = set() - for req_file_path in requirement: - with open(req_file_path) as req_file: - for line in req_file: - if (not line.strip() or - line.strip().startswith('#') or - (skip_match and skip_match(line)) or - line.startswith(( - '-r', '--requirement', - '-Z', '--always-unzip', - '-f', '--find-links', - '-i', '--index-url', - '--pre', - '--trusted-host', - '--process-dependency-links', - '--extra-index-url'))): - line = line.rstrip() - if line not in emitted_options: - emitted_options.add(line) - yield line - continue - - if line.startswith('-e') or line.startswith('--editable'): - if line.startswith('-e'): - line = line[2:].strip() - else: - line = line[len('--editable'):].strip().lstrip('=') - line_req = InstallRequirement.from_editable( - line, - default_vcs=default_vcs, - isolated=isolated, - wheel_cache=wheel_cache, - ) - else: - line_req = InstallRequirement.from_line( - COMMENT_RE.sub('', line).strip(), - isolated=isolated, - wheel_cache=wheel_cache, - ) - - if not line_req.name: - logger.info( - "Skipping line in requirement file [%s] because " - "it's not clear what it would install: %s", - req_file_path, line.strip(), - ) - logger.info( - " (add #egg=PackageName to the URL to avoid" - " this warning)" - ) - elif line_req.name not in installations: - logger.warning( - "Requirement file [%s] contains %s, but that " - "package is not installed", - req_file_path, COMMENT_RE.sub('', line).strip(), - ) - else: - yield str(installations[line_req.name]).rstrip() - del installations[line_req.name] - - yield( - '## The following requirements were added by ' - 'pip freeze:' - ) - for installation in sorted( - installations.values(), key=lambda x: x.name.lower()): - if canonicalize_name(installation.name) not in skip: - yield str(installation).rstrip() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/pep425tags.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/pep425tags.py deleted file mode 100644 index ad202ef3..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/pep425tags.py +++ /dev/null @@ -1,324 +0,0 @@ -"""Generate and work with PEP 425 Compatibility Tags.""" -from __future__ import absolute_import - -import re -import sys -import warnings -import platform -import logging - -try: - import sysconfig -except ImportError: # pragma nocover - # Python < 2.7 - import distutils.sysconfig as sysconfig -import distutils.util - -from pip.compat import OrderedDict -import pip.utils.glibc - -logger = logging.getLogger(__name__) - -_osx_arch_pat = re.compile(r'(.+)_(\d+)_(\d+)_(.+)') - - -def get_config_var(var): - try: - return sysconfig.get_config_var(var) - except IOError as e: # Issue #1074 - warnings.warn("{0}".format(e), RuntimeWarning) - return None - - -def get_abbr_impl(): - """Return abbreviated implementation name.""" - if hasattr(sys, 'pypy_version_info'): - pyimpl = 'pp' - elif sys.platform.startswith('java'): - pyimpl = 'jy' - elif sys.platform == 'cli': - pyimpl = 'ip' - else: - pyimpl = 'cp' - return pyimpl - - -def get_impl_ver(): - """Return implementation version.""" - impl_ver = get_config_var("py_version_nodot") - if not impl_ver or get_abbr_impl() == 'pp': - impl_ver = ''.join(map(str, get_impl_version_info())) - return impl_ver - - -def get_impl_version_info(): - """Return sys.version_info-like tuple for use in decrementing the minor - version.""" - if get_abbr_impl() == 'pp': - # as per https://github.com/pypa/pip/issues/2882 - return (sys.version_info[0], sys.pypy_version_info.major, - sys.pypy_version_info.minor) - else: - return sys.version_info[0], sys.version_info[1] - - -def get_impl_tag(): - """ - Returns the Tag for this specific implementation. - """ - return "{0}{1}".format(get_abbr_impl(), get_impl_ver()) - - -def get_flag(var, fallback, expected=True, warn=True): - """Use a fallback method for determining SOABI flags if the needed config - var is unset or unavailable.""" - val = get_config_var(var) - if val is None: - if warn: - logger.debug("Config variable '%s' is unset, Python ABI tag may " - "be incorrect", var) - return fallback() - return val == expected - - -def get_abi_tag(): - """Return the ABI tag based on SOABI (if available) or emulate SOABI - (CPython 2, PyPy).""" - soabi = get_config_var('SOABI') - impl = get_abbr_impl() - if not soabi and impl in ('cp', 'pp') and hasattr(sys, 'maxunicode'): - d = '' - m = '' - u = '' - if get_flag('Py_DEBUG', - lambda: hasattr(sys, 'gettotalrefcount'), - warn=(impl == 'cp')): - d = 'd' - if get_flag('WITH_PYMALLOC', - lambda: impl == 'cp', - warn=(impl == 'cp')): - m = 'm' - if get_flag('Py_UNICODE_SIZE', - lambda: sys.maxunicode == 0x10ffff, - expected=4, - warn=(impl == 'cp' and - sys.version_info < (3, 3))) \ - and sys.version_info < (3, 3): - u = 'u' - abi = '%s%s%s%s%s' % (impl, get_impl_ver(), d, m, u) - elif soabi and soabi.startswith('cpython-'): - abi = 'cp' + soabi.split('-')[1] - elif soabi: - abi = soabi.replace('.', '_').replace('-', '_') - else: - abi = None - return abi - - -def _is_running_32bit(): - return sys.maxsize == 2147483647 - - -def get_platform(): - """Return our platform name 'win32', 'linux_x86_64'""" - if sys.platform == 'darwin': - # distutils.util.get_platform() returns the release based on the value - # of MACOSX_DEPLOYMENT_TARGET on which Python was built, which may - # be significantly older than the user's current machine. - release, _, machine = platform.mac_ver() - split_ver = release.split('.') - - if machine == "x86_64" and _is_running_32bit(): - machine = "i386" - elif machine == "ppc64" and _is_running_32bit(): - machine = "ppc" - - return 'macosx_{0}_{1}_{2}'.format(split_ver[0], split_ver[1], machine) - - # XXX remove distutils dependency - result = distutils.util.get_platform().replace('.', '_').replace('-', '_') - if result == "linux_x86_64" and _is_running_32bit(): - # 32 bit Python program (running on a 64 bit Linux): pip should only - # install and run 32 bit compiled extensions in that case. - result = "linux_i686" - - return result - - -def is_manylinux1_compatible(): - # Only Linux, and only x86-64 / i686 - if get_platform() not in ("linux_x86_64", "linux_i686"): - return False - - # Check for presence of _manylinux module - try: - import _manylinux - return bool(_manylinux.manylinux1_compatible) - except (ImportError, AttributeError): - # Fall through to heuristic check below - pass - - # Check glibc version. CentOS 5 uses glibc 2.5. - return pip.utils.glibc.have_compatible_glibc(2, 5) - - -def get_darwin_arches(major, minor, machine): - """Return a list of supported arches (including group arches) for - the given major, minor and machine architecture of an macOS machine. - """ - arches = [] - - def _supports_arch(major, minor, arch): - # Looking at the application support for macOS versions in the chart - # provided by https://en.wikipedia.org/wiki/OS_X#Versions it appears - # our timeline looks roughly like: - # - # 10.0 - Introduces ppc support. - # 10.4 - Introduces ppc64, i386, and x86_64 support, however the ppc64 - # and x86_64 support is CLI only, and cannot be used for GUI - # applications. - # 10.5 - Extends ppc64 and x86_64 support to cover GUI applications. - # 10.6 - Drops support for ppc64 - # 10.7 - Drops support for ppc - # - # Given that we do not know if we're installing a CLI or a GUI - # application, we must be conservative and assume it might be a GUI - # application and behave as if ppc64 and x86_64 support did not occur - # until 10.5. - # - # Note: The above information is taken from the "Application support" - # column in the chart not the "Processor support" since I believe - # that we care about what instruction sets an application can use - # not which processors the OS supports. - if arch == 'ppc': - return (major, minor) <= (10, 5) - if arch == 'ppc64': - return (major, minor) == (10, 5) - if arch == 'i386': - return (major, minor) >= (10, 4) - if arch == 'x86_64': - return (major, minor) >= (10, 5) - if arch in groups: - for garch in groups[arch]: - if _supports_arch(major, minor, garch): - return True - return False - - groups = OrderedDict([ - ("fat", ("i386", "ppc")), - ("intel", ("x86_64", "i386")), - ("fat64", ("x86_64", "ppc64")), - ("fat32", ("x86_64", "i386", "ppc")), - ]) - - if _supports_arch(major, minor, machine): - arches.append(machine) - - for garch in groups: - if machine in groups[garch] and _supports_arch(major, minor, garch): - arches.append(garch) - - arches.append('universal') - - return arches - - -def get_supported(versions=None, noarch=False, platform=None, - impl=None, abi=None): - """Return a list of supported tags for each version specified in - `versions`. - - :param versions: a list of string versions, of the form ["33", "32"], - or None. The first version will be assumed to support our ABI. - :param platform: specify the exact platform you want valid - tags for, or None. If None, use the local system platform. - :param impl: specify the exact implementation you want valid - tags for, or None. If None, use the local interpreter impl. - :param abi: specify the exact abi you want valid - tags for, or None. If None, use the local interpreter abi. - """ - supported = [] - - # Versions must be given with respect to the preference - if versions is None: - versions = [] - version_info = get_impl_version_info() - major = version_info[:-1] - # Support all previous minor Python versions. - for minor in range(version_info[-1], -1, -1): - versions.append(''.join(map(str, major + (minor,)))) - - impl = impl or get_abbr_impl() - - abis = [] - - abi = abi or get_abi_tag() - if abi: - abis[0:0] = [abi] - - abi3s = set() - import imp - for suffix in imp.get_suffixes(): - if suffix[0].startswith('.abi'): - abi3s.add(suffix[0].split('.', 2)[1]) - - abis.extend(sorted(list(abi3s))) - - abis.append('none') - - if not noarch: - arch = platform or get_platform() - if arch.startswith('macosx'): - # support macosx-10.6-intel on macosx-10.9-x86_64 - match = _osx_arch_pat.match(arch) - if match: - name, major, minor, actual_arch = match.groups() - tpl = '{0}_{1}_%i_%s'.format(name, major) - arches = [] - for m in reversed(range(int(minor) + 1)): - for a in get_darwin_arches(int(major), m, actual_arch): - arches.append(tpl % (m, a)) - else: - # arch pattern didn't match (?!) - arches = [arch] - elif platform is None and is_manylinux1_compatible(): - arches = [arch.replace('linux', 'manylinux1'), arch] - else: - arches = [arch] - - # Current version, current API (built specifically for our Python): - for abi in abis: - for arch in arches: - supported.append(('%s%s' % (impl, versions[0]), abi, arch)) - - # abi3 modules compatible with older version of Python - for version in versions[1:]: - # abi3 was introduced in Python 3.2 - if version in ('31', '30'): - break - for abi in abi3s: # empty set if not Python 3 - for arch in arches: - supported.append(("%s%s" % (impl, version), abi, arch)) - - # Has binaries, does not use the Python API: - for arch in arches: - supported.append(('py%s' % (versions[0][0]), 'none', arch)) - - # No abi / arch, but requires our implementation: - supported.append(('%s%s' % (impl, versions[0]), 'none', 'any')) - # Tagged specifically as being cross-version compatible - # (with just the major version specified) - supported.append(('%s%s' % (impl, versions[0][0]), 'none', 'any')) - - # No abi / arch, generic Python - for i, version in enumerate(versions): - supported.append(('py%s' % (version,), 'none', 'any')) - if i == 0: - supported.append(('py%s' % (version[0]), 'none', 'any')) - - return supported - -supported_tags = get_supported() -supported_tags_noarch = get_supported(noarch=True) - -implementation_tag = get_impl_tag() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__init__.py deleted file mode 100644 index 00185a43..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -from __future__ import absolute_import - -from .req_install import InstallRequirement -from .req_set import RequirementSet, Requirements -from .req_file import parse_requirements - -__all__ = [ - "RequirementSet", "Requirements", "InstallRequirement", - "parse_requirements", -] diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 807d3cf9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_file.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_file.cpython-36.pyc deleted file mode 100644 index 1f62a9f9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_file.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_install.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_install.cpython-36.pyc deleted file mode 100644 index 1dc10e82..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_install.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_set.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_set.cpython-36.pyc deleted file mode 100644 index 36e7d717..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_set.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_uninstall.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_uninstall.cpython-36.pyc deleted file mode 100644 index 76609620..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/__pycache__/req_uninstall.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_file.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_file.py deleted file mode 100644 index 821df227..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_file.py +++ /dev/null @@ -1,342 +0,0 @@ -""" -Requirements file parsing -""" - -from __future__ import absolute_import - -import os -import re -import shlex -import sys -import optparse -import warnings - -from pip._vendor.six.moves.urllib import parse as urllib_parse -from pip._vendor.six.moves import filterfalse - -import pip -from pip.download import get_file_content -from pip.req.req_install import InstallRequirement -from pip.exceptions import (RequirementsFileParseError) -from pip.utils.deprecation import RemovedInPip10Warning -from pip import cmdoptions - -__all__ = ['parse_requirements'] - -SCHEME_RE = re.compile(r'^(http|https|file):', re.I) -COMMENT_RE = re.compile(r'(^|\s)+#.*$') - -SUPPORTED_OPTIONS = [ - cmdoptions.constraints, - cmdoptions.editable, - cmdoptions.requirements, - cmdoptions.no_index, - cmdoptions.index_url, - cmdoptions.find_links, - cmdoptions.extra_index_url, - cmdoptions.allow_external, - cmdoptions.allow_all_external, - cmdoptions.no_allow_external, - cmdoptions.allow_unsafe, - cmdoptions.no_allow_unsafe, - cmdoptions.use_wheel, - cmdoptions.no_use_wheel, - cmdoptions.always_unzip, - cmdoptions.no_binary, - cmdoptions.only_binary, - cmdoptions.pre, - cmdoptions.process_dependency_links, - cmdoptions.trusted_host, - cmdoptions.require_hashes, -] - -# options to be passed to requirements -SUPPORTED_OPTIONS_REQ = [ - cmdoptions.install_options, - cmdoptions.global_options, - cmdoptions.hash, -] - -# the 'dest' string values -SUPPORTED_OPTIONS_REQ_DEST = [o().dest for o in SUPPORTED_OPTIONS_REQ] - - -def parse_requirements(filename, finder=None, comes_from=None, options=None, - session=None, constraint=False, wheel_cache=None): - """Parse a requirements file and yield InstallRequirement instances. - - :param filename: Path or url of requirements file. - :param finder: Instance of pip.index.PackageFinder. - :param comes_from: Origin description of requirements. - :param options: cli options. - :param session: Instance of pip.download.PipSession. - :param constraint: If true, parsing a constraint file rather than - requirements file. - :param wheel_cache: Instance of pip.wheel.WheelCache - """ - if session is None: - raise TypeError( - "parse_requirements() missing 1 required keyword argument: " - "'session'" - ) - - _, content = get_file_content( - filename, comes_from=comes_from, session=session - ) - - lines_enum = preprocess(content, options) - - for line_number, line in lines_enum: - req_iter = process_line(line, filename, line_number, finder, - comes_from, options, session, wheel_cache, - constraint=constraint) - for req in req_iter: - yield req - - -def preprocess(content, options): - """Split, filter, and join lines, and return a line iterator - - :param content: the content of the requirements file - :param options: cli options - """ - lines_enum = enumerate(content.splitlines(), start=1) - lines_enum = join_lines(lines_enum) - lines_enum = ignore_comments(lines_enum) - lines_enum = skip_regex(lines_enum, options) - return lines_enum - - -def process_line(line, filename, line_number, finder=None, comes_from=None, - options=None, session=None, wheel_cache=None, - constraint=False): - """Process a single requirements line; This can result in creating/yielding - requirements, or updating the finder. - - For lines that contain requirements, the only options that have an effect - are from SUPPORTED_OPTIONS_REQ, and they are scoped to the - requirement. Other options from SUPPORTED_OPTIONS may be present, but are - ignored. - - For lines that do not contain requirements, the only options that have an - effect are from SUPPORTED_OPTIONS. Options from SUPPORTED_OPTIONS_REQ may - be present, but are ignored. These lines may contain multiple options - (although our docs imply only one is supported), and all our parsed and - affect the finder. - - :param constraint: If True, parsing a constraints file. - :param options: OptionParser options that we may update - """ - parser = build_parser() - defaults = parser.get_default_values() - defaults.index_url = None - if finder: - # `finder.format_control` will be updated during parsing - defaults.format_control = finder.format_control - args_str, options_str = break_args_options(line) - if sys.version_info < (2, 7, 3): - # Prior to 2.7.3, shlex cannot deal with unicode entries - options_str = options_str.encode('utf8') - opts, _ = parser.parse_args(shlex.split(options_str), defaults) - - # preserve for the nested code path - line_comes_from = '%s %s (line %s)' % ( - '-c' if constraint else '-r', filename, line_number) - - # yield a line requirement - if args_str: - isolated = options.isolated_mode if options else False - if options: - cmdoptions.check_install_build_global(options, opts) - # get the options that apply to requirements - req_options = {} - for dest in SUPPORTED_OPTIONS_REQ_DEST: - if dest in opts.__dict__ and opts.__dict__[dest]: - req_options[dest] = opts.__dict__[dest] - yield InstallRequirement.from_line( - args_str, line_comes_from, constraint=constraint, - isolated=isolated, options=req_options, wheel_cache=wheel_cache - ) - - # yield an editable requirement - elif opts.editables: - isolated = options.isolated_mode if options else False - default_vcs = options.default_vcs if options else None - yield InstallRequirement.from_editable( - opts.editables[0], comes_from=line_comes_from, - constraint=constraint, default_vcs=default_vcs, isolated=isolated, - wheel_cache=wheel_cache - ) - - # parse a nested requirements file - elif opts.requirements or opts.constraints: - if opts.requirements: - req_path = opts.requirements[0] - nested_constraint = False - else: - req_path = opts.constraints[0] - nested_constraint = True - # original file is over http - if SCHEME_RE.search(filename): - # do a url join so relative paths work - req_path = urllib_parse.urljoin(filename, req_path) - # original file and nested file are paths - elif not SCHEME_RE.search(req_path): - # do a join so relative paths work - req_path = os.path.join(os.path.dirname(filename), req_path) - # TODO: Why not use `comes_from='-r {} (line {})'` here as well? - parser = parse_requirements( - req_path, finder, comes_from, options, session, - constraint=nested_constraint, wheel_cache=wheel_cache - ) - for req in parser: - yield req - - # percolate hash-checking option upward - elif opts.require_hashes: - options.require_hashes = opts.require_hashes - - # set finder options - elif finder: - if opts.allow_external: - warnings.warn( - "--allow-external has been deprecated and will be removed in " - "the future. Due to changes in the repository protocol, it no " - "longer has any effect.", - RemovedInPip10Warning, - ) - - if opts.allow_all_external: - warnings.warn( - "--allow-all-external has been deprecated and will be removed " - "in the future. Due to changes in the repository protocol, it " - "no longer has any effect.", - RemovedInPip10Warning, - ) - - if opts.allow_unverified: - warnings.warn( - "--allow-unverified has been deprecated and will be removed " - "in the future. Due to changes in the repository protocol, it " - "no longer has any effect.", - RemovedInPip10Warning, - ) - - if opts.index_url: - finder.index_urls = [opts.index_url] - if opts.use_wheel is False: - finder.use_wheel = False - pip.index.fmt_ctl_no_use_wheel(finder.format_control) - if opts.no_index is True: - finder.index_urls = [] - if opts.extra_index_urls: - finder.index_urls.extend(opts.extra_index_urls) - if opts.find_links: - # FIXME: it would be nice to keep track of the source - # of the find_links: support a find-links local path - # relative to a requirements file. - value = opts.find_links[0] - req_dir = os.path.dirname(os.path.abspath(filename)) - relative_to_reqs_file = os.path.join(req_dir, value) - if os.path.exists(relative_to_reqs_file): - value = relative_to_reqs_file - finder.find_links.append(value) - if opts.pre: - finder.allow_all_prereleases = True - if opts.process_dependency_links: - finder.process_dependency_links = True - if opts.trusted_hosts: - finder.secure_origins.extend( - ("*", host, "*") for host in opts.trusted_hosts) - - -def break_args_options(line): - """Break up the line into an args and options string. We only want to shlex - (and then optparse) the options, not the args. args can contain markers - which are corrupted by shlex. - """ - tokens = line.split(' ') - args = [] - options = tokens[:] - for token in tokens: - if token.startswith('-') or token.startswith('--'): - break - else: - args.append(token) - options.pop(0) - return ' '.join(args), ' '.join(options) - - -def build_parser(): - """ - Return a parser for parsing requirement lines - """ - parser = optparse.OptionParser(add_help_option=False) - - option_factories = SUPPORTED_OPTIONS + SUPPORTED_OPTIONS_REQ - for option_factory in option_factories: - option = option_factory() - parser.add_option(option) - - # By default optparse sys.exits on parsing errors. We want to wrap - # that in our own exception. - def parser_exit(self, msg): - raise RequirementsFileParseError(msg) - parser.exit = parser_exit - - return parser - - -def join_lines(lines_enum): - """Joins a line ending in '\' with the previous line (except when following - comments). The joined line takes on the index of the first line. - """ - primary_line_number = None - new_line = [] - for line_number, line in lines_enum: - if not line.endswith('\\') or COMMENT_RE.match(line): - if COMMENT_RE.match(line): - # this ensures comments are always matched later - line = ' ' + line - if new_line: - new_line.append(line) - yield primary_line_number, ''.join(new_line) - new_line = [] - else: - yield line_number, line - else: - if not new_line: - primary_line_number = line_number - new_line.append(line.strip('\\')) - - # last line contains \ - if new_line: - yield primary_line_number, ''.join(new_line) - - # TODO: handle space after '\'. - - -def ignore_comments(lines_enum): - """ - Strips comments and filter empty lines. - """ - for line_number, line in lines_enum: - line = COMMENT_RE.sub('', line) - line = line.strip() - if line: - yield line_number, line - - -def skip_regex(lines_enum, options): - """ - Skip lines that match '--skip-requirements-regex' pattern - - Note: the regex pattern is only built once - """ - skip_regex = options.skip_requirements_regex if options else None - if skip_regex: - pattern = re.compile(skip_regex) - lines_enum = filterfalse( - lambda e: pattern.search(e[1]), - lines_enum) - return lines_enum diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_install.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_install.py deleted file mode 100644 index 1a98f377..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_install.py +++ /dev/null @@ -1,1204 +0,0 @@ -from __future__ import absolute_import - -import logging -import os -import re -import shutil -import sys -import tempfile -import traceback -import warnings -import zipfile - -from distutils import sysconfig -from distutils.util import change_root -from email.parser import FeedParser - -from pip._vendor import pkg_resources, six -from pip._vendor.packaging import specifiers -from pip._vendor.packaging.markers import Marker -from pip._vendor.packaging.requirements import InvalidRequirement, Requirement -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.packaging.version import Version, parse as parse_version -from pip._vendor.six.moves import configparser - -import pip.wheel - -from pip.compat import native_str, get_stdlib, WINDOWS -from pip.download import is_url, url_to_path, path_to_url, is_archive_file -from pip.exceptions import ( - InstallationError, UninstallationError, -) -from pip.locations import ( - bin_py, running_under_virtualenv, PIP_DELETE_MARKER_FILENAME, bin_user, -) -from pip.utils import ( - display_path, rmtree, ask_path_exists, backup_dir, is_installable_dir, - dist_in_usersite, dist_in_site_packages, egg_link_path, - call_subprocess, read_text_file, FakeFile, _make_build_dir, ensure_dir, - get_installed_version, normalize_path, dist_is_local, -) - -from pip.utils.hashes import Hashes -from pip.utils.deprecation import RemovedInPip10Warning -from pip.utils.logging import indent_log -from pip.utils.setuptools_build import SETUPTOOLS_SHIM -from pip.utils.ui import open_spinner -from pip.req.req_uninstall import UninstallPathSet -from pip.vcs import vcs -from pip.wheel import move_wheel_files, Wheel - - -logger = logging.getLogger(__name__) - -operators = specifiers.Specifier._operators.keys() - - -def _strip_extras(path): - m = re.match(r'^(.+)(\[[^\]]+\])$', path) - extras = None - if m: - path_no_extras = m.group(1) - extras = m.group(2) - else: - path_no_extras = path - - return path_no_extras, extras - - -def _safe_extras(extras): - return set(pkg_resources.safe_extra(extra) for extra in extras) - - -class InstallRequirement(object): - - def __init__(self, req, comes_from, source_dir=None, editable=False, - link=None, as_egg=False, update=True, - pycompile=True, markers=None, isolated=False, options=None, - wheel_cache=None, constraint=False): - self.extras = () - if isinstance(req, six.string_types): - try: - req = Requirement(req) - except InvalidRequirement: - if os.path.sep in req: - add_msg = "It looks like a path. Does it exist ?" - elif '=' in req and not any(op in req for op in operators): - add_msg = "= is not a valid operator. Did you mean == ?" - else: - add_msg = traceback.format_exc() - raise InstallationError( - "Invalid requirement: '%s'\n%s" % (req, add_msg)) - self.extras = _safe_extras(req.extras) - - self.req = req - self.comes_from = comes_from - self.constraint = constraint - self.source_dir = source_dir - self.editable = editable - - self._wheel_cache = wheel_cache - self.link = self.original_link = link - self.as_egg = as_egg - if markers is not None: - self.markers = markers - else: - self.markers = req and req.marker - self._egg_info_path = None - # This holds the pkg_resources.Distribution object if this requirement - # is already available: - self.satisfied_by = None - # This hold the pkg_resources.Distribution object if this requirement - # conflicts with another installed distribution: - self.conflicts_with = None - # Temporary build location - self._temp_build_dir = None - # Used to store the global directory where the _temp_build_dir should - # have been created. Cf _correct_build_location method. - self._ideal_build_dir = None - # True if the editable should be updated: - self.update = update - # Set to True after successful installation - self.install_succeeded = None - # UninstallPathSet of uninstalled distribution (for possible rollback) - self.uninstalled = None - # Set True if a legitimate do-nothing-on-uninstall has happened - e.g. - # system site packages, stdlib packages. - self.nothing_to_uninstall = False - self.use_user_site = False - self.target_dir = None - self.options = options if options else {} - self.pycompile = pycompile - # Set to True after successful preparation of this requirement - self.prepared = False - - self.isolated = isolated - - @classmethod - def from_editable(cls, editable_req, comes_from=None, default_vcs=None, - isolated=False, options=None, wheel_cache=None, - constraint=False): - from pip.index import Link - - name, url, extras_override = parse_editable( - editable_req, default_vcs) - if url.startswith('file:'): - source_dir = url_to_path(url) - else: - source_dir = None - - res = cls(name, comes_from, source_dir=source_dir, - editable=True, - link=Link(url), - constraint=constraint, - isolated=isolated, - options=options if options else {}, - wheel_cache=wheel_cache) - - if extras_override is not None: - res.extras = _safe_extras(extras_override) - - return res - - @classmethod - def from_line( - cls, name, comes_from=None, isolated=False, options=None, - wheel_cache=None, constraint=False): - """Creates an InstallRequirement from a name, which might be a - requirement, directory containing 'setup.py', filename, or URL. - """ - from pip.index import Link - - if is_url(name): - marker_sep = '; ' - else: - marker_sep = ';' - if marker_sep in name: - name, markers = name.split(marker_sep, 1) - markers = markers.strip() - if not markers: - markers = None - else: - markers = Marker(markers) - else: - markers = None - name = name.strip() - req = None - path = os.path.normpath(os.path.abspath(name)) - link = None - extras = None - - if is_url(name): - link = Link(name) - else: - p, extras = _strip_extras(path) - if (os.path.isdir(p) and - (os.path.sep in name or name.startswith('.'))): - - if not is_installable_dir(p): - raise InstallationError( - "Directory %r is not installable. File 'setup.py' " - "not found." % name - ) - link = Link(path_to_url(p)) - elif is_archive_file(p): - if not os.path.isfile(p): - logger.warning( - 'Requirement %r looks like a filename, but the ' - 'file does not exist', - name - ) - link = Link(path_to_url(p)) - - # it's a local file, dir, or url - if link: - # Handle relative file URLs - if link.scheme == 'file' and re.search(r'\.\./', link.url): - link = Link( - path_to_url(os.path.normpath(os.path.abspath(link.path)))) - # wheel file - if link.is_wheel: - wheel = Wheel(link.filename) # can raise InvalidWheelFilename - req = "%s==%s" % (wheel.name, wheel.version) - else: - # set the req to the egg fragment. when it's not there, this - # will become an 'unnamed' requirement - req = link.egg_fragment - - # a requirement specifier - else: - req = name - - options = options if options else {} - res = cls(req, comes_from, link=link, markers=markers, - isolated=isolated, options=options, - wheel_cache=wheel_cache, constraint=constraint) - - if extras: - res.extras = _safe_extras( - Requirement('placeholder' + extras).extras) - - return res - - def __str__(self): - if self.req: - s = str(self.req) - if self.link: - s += ' from %s' % self.link.url - else: - s = self.link.url if self.link else None - if self.satisfied_by is not None: - s += ' in %s' % display_path(self.satisfied_by.location) - if self.comes_from: - if isinstance(self.comes_from, six.string_types): - comes_from = self.comes_from - else: - comes_from = self.comes_from.from_path() - if comes_from: - s += ' (from %s)' % comes_from - return s - - def __repr__(self): - return '<%s object: %s editable=%r>' % ( - self.__class__.__name__, str(self), self.editable) - - def populate_link(self, finder, upgrade, require_hashes): - """Ensure that if a link can be found for this, that it is found. - - Note that self.link may still be None - if Upgrade is False and the - requirement is already installed. - - If require_hashes is True, don't use the wheel cache, because cached - wheels, always built locally, have different hashes than the files - downloaded from the index server and thus throw false hash mismatches. - Furthermore, cached wheels at present have undeterministic contents due - to file modification times. - """ - if self.link is None: - self.link = finder.find_requirement(self, upgrade) - if self._wheel_cache is not None and not require_hashes: - old_link = self.link - self.link = self._wheel_cache.cached_wheel(self.link, self.name) - if old_link != self.link: - logger.debug('Using cached wheel link: %s', self.link) - - @property - def specifier(self): - return self.req.specifier - - @property - def is_pinned(self): - """Return whether I am pinned to an exact version. - - For example, some-package==1.2 is pinned; some-package>1.2 is not. - """ - specifiers = self.specifier - return (len(specifiers) == 1 and - next(iter(specifiers)).operator in ('==', '===')) - - def from_path(self): - if self.req is None: - return None - s = str(self.req) - if self.comes_from: - if isinstance(self.comes_from, six.string_types): - comes_from = self.comes_from - else: - comes_from = self.comes_from.from_path() - if comes_from: - s += '->' + comes_from - return s - - def build_location(self, build_dir): - if self._temp_build_dir is not None: - return self._temp_build_dir - if self.req is None: - # for requirement via a path to a directory: the name of the - # package is not available yet so we create a temp directory - # Once run_egg_info will have run, we'll be able - # to fix it via _correct_build_location - # Some systems have /tmp as a symlink which confuses custom - # builds (such as numpy). Thus, we ensure that the real path - # is returned. - self._temp_build_dir = os.path.realpath( - tempfile.mkdtemp('-build', 'pip-') - ) - self._ideal_build_dir = build_dir - return self._temp_build_dir - if self.editable: - name = self.name.lower() - else: - name = self.name - # FIXME: Is there a better place to create the build_dir? (hg and bzr - # need this) - if not os.path.exists(build_dir): - logger.debug('Creating directory %s', build_dir) - _make_build_dir(build_dir) - return os.path.join(build_dir, name) - - def _correct_build_location(self): - """Move self._temp_build_dir to self._ideal_build_dir/self.req.name - - For some requirements (e.g. a path to a directory), the name of the - package is not available until we run egg_info, so the build_location - will return a temporary directory and store the _ideal_build_dir. - - This is only called by self.egg_info_path to fix the temporary build - directory. - """ - if self.source_dir is not None: - return - assert self.req is not None - assert self._temp_build_dir - assert self._ideal_build_dir - old_location = self._temp_build_dir - self._temp_build_dir = None - new_location = self.build_location(self._ideal_build_dir) - if os.path.exists(new_location): - raise InstallationError( - 'A package already exists in %s; please remove it to continue' - % display_path(new_location)) - logger.debug( - 'Moving package %s from %s to new location %s', - self, display_path(old_location), display_path(new_location), - ) - shutil.move(old_location, new_location) - self._temp_build_dir = new_location - self._ideal_build_dir = None - self.source_dir = new_location - self._egg_info_path = None - - @property - def name(self): - if self.req is None: - return None - return native_str(pkg_resources.safe_name(self.req.name)) - - @property - def setup_py_dir(self): - return os.path.join( - self.source_dir, - self.link and self.link.subdirectory_fragment or '') - - @property - def setup_py(self): - assert self.source_dir, "No source dir for %s" % self - try: - import setuptools # noqa - except ImportError: - if get_installed_version('setuptools') is None: - add_msg = "Please install setuptools." - else: - add_msg = traceback.format_exc() - # Setuptools is not available - raise InstallationError( - "Could not import setuptools which is required to " - "install from a source distribution.\n%s" % add_msg - ) - - setup_py = os.path.join(self.setup_py_dir, 'setup.py') - - # Python2 __file__ should not be unicode - if six.PY2 and isinstance(setup_py, six.text_type): - setup_py = setup_py.encode(sys.getfilesystemencoding()) - - return setup_py - - def run_egg_info(self): - assert self.source_dir - if self.name: - logger.debug( - 'Running setup.py (path:%s) egg_info for package %s', - self.setup_py, self.name, - ) - else: - logger.debug( - 'Running setup.py (path:%s) egg_info for package from %s', - self.setup_py, self.link, - ) - - with indent_log(): - script = SETUPTOOLS_SHIM % self.setup_py - base_cmd = [sys.executable, '-c', script] - if self.isolated: - base_cmd += ["--no-user-cfg"] - egg_info_cmd = base_cmd + ['egg_info'] - # We can't put the .egg-info files at the root, because then the - # source code will be mistaken for an installed egg, causing - # problems - if self.editable: - egg_base_option = [] - else: - egg_info_dir = os.path.join(self.setup_py_dir, 'pip-egg-info') - ensure_dir(egg_info_dir) - egg_base_option = ['--egg-base', 'pip-egg-info'] - call_subprocess( - egg_info_cmd + egg_base_option, - cwd=self.setup_py_dir, - show_stdout=False, - command_desc='python setup.py egg_info') - - if not self.req: - if isinstance(parse_version(self.pkg_info()["Version"]), Version): - op = "==" - else: - op = "===" - self.req = Requirement( - "".join([ - self.pkg_info()["Name"], - op, - self.pkg_info()["Version"], - ]) - ) - self._correct_build_location() - else: - metadata_name = canonicalize_name(self.pkg_info()["Name"]) - if canonicalize_name(self.req.name) != metadata_name: - logger.warning( - 'Running setup.py (path:%s) egg_info for package %s ' - 'produced metadata for project name %s. Fix your ' - '#egg=%s fragments.', - self.setup_py, self.name, metadata_name, self.name - ) - self.req = Requirement(metadata_name) - - def egg_info_data(self, filename): - if self.satisfied_by is not None: - if not self.satisfied_by.has_metadata(filename): - return None - return self.satisfied_by.get_metadata(filename) - assert self.source_dir - filename = self.egg_info_path(filename) - if not os.path.exists(filename): - return None - data = read_text_file(filename) - return data - - def egg_info_path(self, filename): - if self._egg_info_path is None: - if self.editable: - base = self.source_dir - else: - base = os.path.join(self.setup_py_dir, 'pip-egg-info') - filenames = os.listdir(base) - if self.editable: - filenames = [] - for root, dirs, files in os.walk(base): - for dir in vcs.dirnames: - if dir in dirs: - dirs.remove(dir) - # Iterate over a copy of ``dirs``, since mutating - # a list while iterating over it can cause trouble. - # (See https://github.com/pypa/pip/pull/462.) - for dir in list(dirs): - # Don't search in anything that looks like a virtualenv - # environment - if ( - os.path.lexists( - os.path.join(root, dir, 'bin', 'python') - ) or - os.path.exists( - os.path.join( - root, dir, 'Scripts', 'Python.exe' - ) - )): - dirs.remove(dir) - # Also don't search through tests - elif dir == 'test' or dir == 'tests': - dirs.remove(dir) - filenames.extend([os.path.join(root, dir) - for dir in dirs]) - filenames = [f for f in filenames if f.endswith('.egg-info')] - - if not filenames: - raise InstallationError( - 'No files/directories in %s (from %s)' % (base, filename) - ) - assert filenames, \ - "No files/directories in %s (from %s)" % (base, filename) - - # if we have more than one match, we pick the toplevel one. This - # can easily be the case if there is a dist folder which contains - # an extracted tarball for testing purposes. - if len(filenames) > 1: - filenames.sort( - key=lambda x: x.count(os.path.sep) + - (os.path.altsep and x.count(os.path.altsep) or 0) - ) - self._egg_info_path = os.path.join(base, filenames[0]) - return os.path.join(self._egg_info_path, filename) - - def pkg_info(self): - p = FeedParser() - data = self.egg_info_data('PKG-INFO') - if not data: - logger.warning( - 'No PKG-INFO file found in %s', - display_path(self.egg_info_path('PKG-INFO')), - ) - p.feed(data or '') - return p.close() - - _requirements_section_re = re.compile(r'\[(.*?)\]') - - @property - def installed_version(self): - return get_installed_version(self.name) - - def assert_source_matches_version(self): - assert self.source_dir - version = self.pkg_info()['version'] - if self.req.specifier and version not in self.req.specifier: - logger.warning( - 'Requested %s, but installing version %s', - self, - self.installed_version, - ) - else: - logger.debug( - 'Source in %s has version %s, which satisfies requirement %s', - display_path(self.source_dir), - version, - self, - ) - - def update_editable(self, obtain=True): - if not self.link: - logger.debug( - "Cannot update repository at %s; repository location is " - "unknown", - self.source_dir, - ) - return - assert self.editable - assert self.source_dir - if self.link.scheme == 'file': - # Static paths don't get updated - return - assert '+' in self.link.url, "bad url: %r" % self.link.url - if not self.update: - return - vc_type, url = self.link.url.split('+', 1) - backend = vcs.get_backend(vc_type) - if backend: - vcs_backend = backend(self.link.url) - if obtain: - vcs_backend.obtain(self.source_dir) - else: - vcs_backend.export(self.source_dir) - else: - assert 0, ( - 'Unexpected version control type (in %s): %s' - % (self.link, vc_type)) - - def uninstall(self, auto_confirm=False): - """ - Uninstall the distribution currently satisfying this requirement. - - Prompts before removing or modifying files unless - ``auto_confirm`` is True. - - Refuses to delete or modify files outside of ``sys.prefix`` - - thus uninstallation within a virtual environment can only - modify that virtual environment, even if the virtualenv is - linked to global site-packages. - - """ - if not self.check_if_exists(): - raise UninstallationError( - "Cannot uninstall requirement %s, not installed" % (self.name,) - ) - dist = self.satisfied_by or self.conflicts_with - - dist_path = normalize_path(dist.location) - if not dist_is_local(dist): - logger.info( - "Not uninstalling %s at %s, outside environment %s", - dist.key, - dist_path, - sys.prefix, - ) - self.nothing_to_uninstall = True - return - - if dist_path in get_stdlib(): - logger.info( - "Not uninstalling %s at %s, as it is in the standard library.", - dist.key, - dist_path, - ) - self.nothing_to_uninstall = True - return - - paths_to_remove = UninstallPathSet(dist) - develop_egg_link = egg_link_path(dist) - develop_egg_link_egg_info = '{0}.egg-info'.format( - pkg_resources.to_filename(dist.project_name)) - egg_info_exists = dist.egg_info and os.path.exists(dist.egg_info) - # Special case for distutils installed package - distutils_egg_info = getattr(dist._provider, 'path', None) - - # Uninstall cases order do matter as in the case of 2 installs of the - # same package, pip needs to uninstall the currently detected version - if (egg_info_exists and dist.egg_info.endswith('.egg-info') and - not dist.egg_info.endswith(develop_egg_link_egg_info)): - # if dist.egg_info.endswith(develop_egg_link_egg_info), we - # are in fact in the develop_egg_link case - paths_to_remove.add(dist.egg_info) - if dist.has_metadata('installed-files.txt'): - for installed_file in dist.get_metadata( - 'installed-files.txt').splitlines(): - path = os.path.normpath( - os.path.join(dist.egg_info, installed_file) - ) - paths_to_remove.add(path) - # FIXME: need a test for this elif block - # occurs with --single-version-externally-managed/--record outside - # of pip - elif dist.has_metadata('top_level.txt'): - if dist.has_metadata('namespace_packages.txt'): - namespaces = dist.get_metadata('namespace_packages.txt') - else: - namespaces = [] - for top_level_pkg in [ - p for p - in dist.get_metadata('top_level.txt').splitlines() - if p and p not in namespaces]: - path = os.path.join(dist.location, top_level_pkg) - paths_to_remove.add(path) - paths_to_remove.add(path + '.py') - paths_to_remove.add(path + '.pyc') - paths_to_remove.add(path + '.pyo') - - elif distutils_egg_info: - warnings.warn( - "Uninstalling a distutils installed project ({0}) has been " - "deprecated and will be removed in a future version. This is " - "due to the fact that uninstalling a distutils project will " - "only partially uninstall the project.".format(self.name), - RemovedInPip10Warning, - ) - paths_to_remove.add(distutils_egg_info) - - elif dist.location.endswith('.egg'): - # package installed by easy_install - # We cannot match on dist.egg_name because it can slightly vary - # i.e. setuptools-0.6c11-py2.6.egg vs setuptools-0.6rc11-py2.6.egg - paths_to_remove.add(dist.location) - easy_install_egg = os.path.split(dist.location)[1] - easy_install_pth = os.path.join(os.path.dirname(dist.location), - 'easy-install.pth') - paths_to_remove.add_pth(easy_install_pth, './' + easy_install_egg) - - elif egg_info_exists and dist.egg_info.endswith('.dist-info'): - for path in pip.wheel.uninstallation_paths(dist): - paths_to_remove.add(path) - - elif develop_egg_link: - # develop egg - with open(develop_egg_link, 'r') as fh: - link_pointer = os.path.normcase(fh.readline().strip()) - assert (link_pointer == dist.location), ( - 'Egg-link %s does not match installed location of %s ' - '(at %s)' % (link_pointer, self.name, dist.location) - ) - paths_to_remove.add(develop_egg_link) - easy_install_pth = os.path.join(os.path.dirname(develop_egg_link), - 'easy-install.pth') - paths_to_remove.add_pth(easy_install_pth, dist.location) - - else: - logger.debug( - 'Not sure how to uninstall: %s - Check: %s', - dist, dist.location) - - # find distutils scripts= scripts - if dist.has_metadata('scripts') and dist.metadata_isdir('scripts'): - for script in dist.metadata_listdir('scripts'): - if dist_in_usersite(dist): - bin_dir = bin_user - else: - bin_dir = bin_py - paths_to_remove.add(os.path.join(bin_dir, script)) - if WINDOWS: - paths_to_remove.add(os.path.join(bin_dir, script) + '.bat') - - # find console_scripts - if dist.has_metadata('entry_points.txt'): - if six.PY2: - options = {} - else: - options = {"delimiters": ('=', )} - config = configparser.SafeConfigParser(**options) - config.readfp( - FakeFile(dist.get_metadata_lines('entry_points.txt')) - ) - if config.has_section('console_scripts'): - for name, value in config.items('console_scripts'): - if dist_in_usersite(dist): - bin_dir = bin_user - else: - bin_dir = bin_py - paths_to_remove.add(os.path.join(bin_dir, name)) - if WINDOWS: - paths_to_remove.add( - os.path.join(bin_dir, name) + '.exe' - ) - paths_to_remove.add( - os.path.join(bin_dir, name) + '.exe.manifest' - ) - paths_to_remove.add( - os.path.join(bin_dir, name) + '-script.py' - ) - - paths_to_remove.remove(auto_confirm) - self.uninstalled = paths_to_remove - - def rollback_uninstall(self): - if self.uninstalled: - self.uninstalled.rollback() - else: - logger.error( - "Can't rollback %s, nothing uninstalled.", self.name, - ) - - def commit_uninstall(self): - if self.uninstalled: - self.uninstalled.commit() - elif not self.nothing_to_uninstall: - logger.error( - "Can't commit %s, nothing uninstalled.", self.name, - ) - - def archive(self, build_dir): - assert self.source_dir - create_archive = True - archive_name = '%s-%s.zip' % (self.name, self.pkg_info()["version"]) - archive_path = os.path.join(build_dir, archive_name) - if os.path.exists(archive_path): - response = ask_path_exists( - 'The file %s exists. (i)gnore, (w)ipe, (b)ackup, (a)bort ' % - display_path(archive_path), ('i', 'w', 'b', 'a')) - if response == 'i': - create_archive = False - elif response == 'w': - logger.warning('Deleting %s', display_path(archive_path)) - os.remove(archive_path) - elif response == 'b': - dest_file = backup_dir(archive_path) - logger.warning( - 'Backing up %s to %s', - display_path(archive_path), - display_path(dest_file), - ) - shutil.move(archive_path, dest_file) - elif response == 'a': - sys.exit(-1) - if create_archive: - zip = zipfile.ZipFile( - archive_path, 'w', zipfile.ZIP_DEFLATED, - allowZip64=True - ) - dir = os.path.normcase(os.path.abspath(self.setup_py_dir)) - for dirpath, dirnames, filenames in os.walk(dir): - if 'pip-egg-info' in dirnames: - dirnames.remove('pip-egg-info') - for dirname in dirnames: - dirname = os.path.join(dirpath, dirname) - name = self._clean_zip_name(dirname, dir) - zipdir = zipfile.ZipInfo(self.name + '/' + name + '/') - zipdir.external_attr = 0x1ED << 16 # 0o755 - zip.writestr(zipdir, '') - for filename in filenames: - if filename == PIP_DELETE_MARKER_FILENAME: - continue - filename = os.path.join(dirpath, filename) - name = self._clean_zip_name(filename, dir) - zip.write(filename, self.name + '/' + name) - zip.close() - logger.info('Saved %s', display_path(archive_path)) - - def _clean_zip_name(self, name, prefix): - assert name.startswith(prefix + os.path.sep), ( - "name %r doesn't start with prefix %r" % (name, prefix) - ) - name = name[len(prefix) + 1:] - name = name.replace(os.path.sep, '/') - return name - - def match_markers(self, extras_requested=None): - if not extras_requested: - # Provide an extra to safely evaluate the markers - # without matching any extra - extras_requested = ('',) - if self.markers is not None: - return any( - self.markers.evaluate({'extra': extra}) - for extra in extras_requested) - else: - return True - - def install(self, install_options, global_options=[], root=None, - prefix=None): - if self.editable: - self.install_editable( - install_options, global_options, prefix=prefix) - return - if self.is_wheel: - version = pip.wheel.wheel_version(self.source_dir) - pip.wheel.check_compatibility(version, self.name) - - self.move_wheel_files(self.source_dir, root=root, prefix=prefix) - self.install_succeeded = True - return - - # Extend the list of global and install options passed on to - # the setup.py call with the ones from the requirements file. - # Options specified in requirements file override those - # specified on the command line, since the last option given - # to setup.py is the one that is used. - global_options += self.options.get('global_options', []) - install_options += self.options.get('install_options', []) - - if self.isolated: - global_options = list(global_options) + ["--no-user-cfg"] - - temp_location = tempfile.mkdtemp('-record', 'pip-') - record_filename = os.path.join(temp_location, 'install-record.txt') - try: - install_args = self.get_install_args( - global_options, record_filename, root, prefix) - msg = 'Running setup.py install for %s' % (self.name,) - with open_spinner(msg) as spinner: - with indent_log(): - call_subprocess( - install_args + install_options, - cwd=self.setup_py_dir, - show_stdout=False, - spinner=spinner, - ) - - if not os.path.exists(record_filename): - logger.debug('Record file %s not found', record_filename) - return - self.install_succeeded = True - if self.as_egg: - # there's no --always-unzip option we can pass to install - # command so we unable to save the installed-files.txt - return - - def prepend_root(path): - if root is None or not os.path.isabs(path): - return path - else: - return change_root(root, path) - - with open(record_filename) as f: - for line in f: - directory = os.path.dirname(line) - if directory.endswith('.egg-info'): - egg_info_dir = prepend_root(directory) - break - else: - logger.warning( - 'Could not find .egg-info directory in install record' - ' for %s', - self, - ) - # FIXME: put the record somewhere - # FIXME: should this be an error? - return - new_lines = [] - with open(record_filename) as f: - for line in f: - filename = line.strip() - if os.path.isdir(filename): - filename += os.path.sep - new_lines.append( - os.path.relpath( - prepend_root(filename), egg_info_dir) - ) - inst_files_path = os.path.join(egg_info_dir, 'installed-files.txt') - with open(inst_files_path, 'w') as f: - f.write('\n'.join(new_lines) + '\n') - finally: - if os.path.exists(record_filename): - os.remove(record_filename) - rmtree(temp_location) - - def ensure_has_source_dir(self, parent_dir): - """Ensure that a source_dir is set. - - This will create a temporary build dir if the name of the requirement - isn't known yet. - - :param parent_dir: The ideal pip parent_dir for the source_dir. - Generally src_dir for editables and build_dir for sdists. - :return: self.source_dir - """ - if self.source_dir is None: - self.source_dir = self.build_location(parent_dir) - return self.source_dir - - def get_install_args(self, global_options, record_filename, root, prefix): - install_args = [sys.executable, "-u"] - install_args.append('-c') - install_args.append(SETUPTOOLS_SHIM % self.setup_py) - install_args += list(global_options) + \ - ['install', '--record', record_filename] - - if not self.as_egg: - install_args += ['--single-version-externally-managed'] - - if root is not None: - install_args += ['--root', root] - if prefix is not None: - install_args += ['--prefix', prefix] - - if self.pycompile: - install_args += ["--compile"] - else: - install_args += ["--no-compile"] - - if running_under_virtualenv(): - py_ver_str = 'python' + sysconfig.get_python_version() - install_args += ['--install-headers', - os.path.join(sys.prefix, 'include', 'site', - py_ver_str, self.name)] - - return install_args - - def remove_temporary_source(self): - """Remove the source files from this requirement, if they are marked - for deletion""" - if self.source_dir and os.path.exists( - os.path.join(self.source_dir, PIP_DELETE_MARKER_FILENAME)): - logger.debug('Removing source in %s', self.source_dir) - rmtree(self.source_dir) - self.source_dir = None - if self._temp_build_dir and os.path.exists(self._temp_build_dir): - rmtree(self._temp_build_dir) - self._temp_build_dir = None - - def install_editable(self, install_options, - global_options=(), prefix=None): - logger.info('Running setup.py develop for %s', self.name) - - if self.isolated: - global_options = list(global_options) + ["--no-user-cfg"] - - if prefix: - prefix_param = ['--prefix={0}'.format(prefix)] - install_options = list(install_options) + prefix_param - - with indent_log(): - # FIXME: should we do --install-headers here too? - call_subprocess( - [ - sys.executable, - '-c', - SETUPTOOLS_SHIM % self.setup_py - ] + - list(global_options) + - ['develop', '--no-deps'] + - list(install_options), - - cwd=self.setup_py_dir, - show_stdout=False) - - self.install_succeeded = True - - def check_if_exists(self): - """Find an installed distribution that satisfies or conflicts - with this requirement, and set self.satisfied_by or - self.conflicts_with appropriately. - """ - if self.req is None: - return False - try: - # get_distribution() will resolve the entire list of requirements - # anyway, and we've already determined that we need the requirement - # in question, so strip the marker so that we don't try to - # evaluate it. - no_marker = Requirement(str(self.req)) - no_marker.marker = None - self.satisfied_by = pkg_resources.get_distribution(str(no_marker)) - if self.editable and self.satisfied_by: - self.conflicts_with = self.satisfied_by - # when installing editables, nothing pre-existing should ever - # satisfy - self.satisfied_by = None - return True - except pkg_resources.DistributionNotFound: - return False - except pkg_resources.VersionConflict: - existing_dist = pkg_resources.get_distribution( - self.req.name - ) - if self.use_user_site: - if dist_in_usersite(existing_dist): - self.conflicts_with = existing_dist - elif (running_under_virtualenv() and - dist_in_site_packages(existing_dist)): - raise InstallationError( - "Will not install to the user site because it will " - "lack sys.path precedence to %s in %s" % - (existing_dist.project_name, existing_dist.location) - ) - else: - self.conflicts_with = existing_dist - return True - - @property - def is_wheel(self): - return self.link and self.link.is_wheel - - def move_wheel_files(self, wheeldir, root=None, prefix=None): - move_wheel_files( - self.name, self.req, wheeldir, - user=self.use_user_site, - home=self.target_dir, - root=root, - prefix=prefix, - pycompile=self.pycompile, - isolated=self.isolated, - ) - - def get_dist(self): - """Return a pkg_resources.Distribution built from self.egg_info_path""" - egg_info = self.egg_info_path('').rstrip('/') - base_dir = os.path.dirname(egg_info) - metadata = pkg_resources.PathMetadata(base_dir, egg_info) - dist_name = os.path.splitext(os.path.basename(egg_info))[0] - return pkg_resources.Distribution( - os.path.dirname(egg_info), - project_name=dist_name, - metadata=metadata) - - @property - def has_hash_options(self): - """Return whether any known-good hashes are specified as options. - - These activate --require-hashes mode; hashes specified as part of a - URL do not. - - """ - return bool(self.options.get('hashes', {})) - - def hashes(self, trust_internet=True): - """Return a hash-comparer that considers my option- and URL-based - hashes to be known-good. - - Hashes in URLs--ones embedded in the requirements file, not ones - downloaded from an index server--are almost peers with ones from - flags. They satisfy --require-hashes (whether it was implicitly or - explicitly activated) but do not activate it. md5 and sha224 are not - allowed in flags, which should nudge people toward good algos. We - always OR all hashes together, even ones from URLs. - - :param trust_internet: Whether to trust URL-based (#md5=...) hashes - downloaded from the internet, as by populate_link() - - """ - good_hashes = self.options.get('hashes', {}).copy() - link = self.link if trust_internet else self.original_link - if link and link.hash: - good_hashes.setdefault(link.hash_name, []).append(link.hash) - return Hashes(good_hashes) - - -def _strip_postfix(req): - """ - Strip req postfix ( -dev, 0.2, etc ) - """ - # FIXME: use package_to_requirement? - match = re.search(r'^(.*?)(?:-dev|-\d.*)$', req) - if match: - # Strip off -dev, -0.2, etc. - req = match.group(1) - return req - - -def parse_editable(editable_req, default_vcs=None): - """Parses an editable requirement into: - - a requirement name - - an URL - - extras - - editable options - Accepted requirements: - svn+http://blahblah@rev#egg=Foobar[baz]&subdirectory=version_subdir - .[some_extra] - """ - - from pip.index import Link - - url = editable_req - extras = None - - # If a file path is specified with extras, strip off the extras. - m = re.match(r'^(.+)(\[[^\]]+\])$', url) - if m: - url_no_extras = m.group(1) - extras = m.group(2) - else: - url_no_extras = url - - if os.path.isdir(url_no_extras): - if not os.path.exists(os.path.join(url_no_extras, 'setup.py')): - raise InstallationError( - "Directory %r is not installable. File 'setup.py' not found." % - url_no_extras - ) - # Treating it as code that has already been checked out - url_no_extras = path_to_url(url_no_extras) - - if url_no_extras.lower().startswith('file:'): - package_name = Link(url_no_extras).egg_fragment - if extras: - return ( - package_name, - url_no_extras, - Requirement("placeholder" + extras.lower()).extras, - ) - else: - return package_name, url_no_extras, None - - for version_control in vcs: - if url.lower().startswith('%s:' % version_control): - url = '%s+%s' % (version_control, url) - break - - if '+' not in url: - if default_vcs: - warnings.warn( - "--default-vcs has been deprecated and will be removed in " - "the future.", - RemovedInPip10Warning, - ) - url = default_vcs + '+' + url - else: - raise InstallationError( - '%s should either be a path to a local project or a VCS url ' - 'beginning with svn+, git+, hg+, or bzr+' % - editable_req - ) - - vc_type = url.split('+', 1)[0].lower() - - if not vcs.get_backend(vc_type): - error_message = 'For --editable=%s only ' % editable_req + \ - ', '.join([backend.name + '+URL' for backend in vcs.backends]) + \ - ' is currently supported' - raise InstallationError(error_message) - - package_name = Link(url).egg_fragment - if not package_name: - raise InstallationError( - "Could not detect requirement name, please specify one with #egg=" - ) - if not package_name: - raise InstallationError( - '--editable=%s is not the right format; it must have ' - '#egg=Package' % editable_req - ) - return _strip_postfix(package_name), url, None diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_set.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_set.py deleted file mode 100644 index 76aec061..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_set.py +++ /dev/null @@ -1,798 +0,0 @@ -from __future__ import absolute_import - -from collections import defaultdict -from itertools import chain -import logging -import os - -from pip._vendor import pkg_resources -from pip._vendor import requests - -from pip.compat import expanduser -from pip.download import (is_file_url, is_dir_url, is_vcs_url, url_to_path, - unpack_url) -from pip.exceptions import (InstallationError, BestVersionAlreadyInstalled, - DistributionNotFound, PreviousBuildDirError, - HashError, HashErrors, HashUnpinned, - DirectoryUrlHashUnsupported, VcsHashUnsupported, - UnsupportedPythonVersion) -from pip.req.req_install import InstallRequirement -from pip.utils import ( - display_path, dist_in_usersite, ensure_dir, normalize_path) -from pip.utils.hashes import MissingHashes -from pip.utils.logging import indent_log -from pip.utils.packaging import check_dist_requires_python -from pip.vcs import vcs -from pip.wheel import Wheel - -logger = logging.getLogger(__name__) - - -class Requirements(object): - - def __init__(self): - self._keys = [] - self._dict = {} - - def keys(self): - return self._keys - - def values(self): - return [self._dict[key] for key in self._keys] - - def __contains__(self, item): - return item in self._keys - - def __setitem__(self, key, value): - if key not in self._keys: - self._keys.append(key) - self._dict[key] = value - - def __getitem__(self, key): - return self._dict[key] - - def __repr__(self): - values = ['%s: %s' % (repr(k), repr(self[k])) for k in self.keys()] - return 'Requirements({%s})' % ', '.join(values) - - -class DistAbstraction(object): - """Abstracts out the wheel vs non-wheel prepare_files logic. - - The requirements for anything installable are as follows: - - we must be able to determine the requirement name - (or we can't correctly handle the non-upgrade case). - - we must be able to generate a list of run-time dependencies - without installing any additional packages (or we would - have to either burn time by doing temporary isolated installs - or alternatively violate pips 'don't start installing unless - all requirements are available' rule - neither of which are - desirable). - - for packages with setup requirements, we must also be able - to determine their requirements without installing additional - packages (for the same reason as run-time dependencies) - - we must be able to create a Distribution object exposing the - above metadata. - """ - - def __init__(self, req_to_install): - self.req_to_install = req_to_install - - def dist(self, finder): - """Return a setuptools Dist object.""" - raise NotImplementedError(self.dist) - - def prep_for_dist(self): - """Ensure that we can get a Dist for this requirement.""" - raise NotImplementedError(self.dist) - - -def make_abstract_dist(req_to_install): - """Factory to make an abstract dist object. - - Preconditions: Either an editable req with a source_dir, or satisfied_by or - a wheel link, or a non-editable req with a source_dir. - - :return: A concrete DistAbstraction. - """ - if req_to_install.editable: - return IsSDist(req_to_install) - elif req_to_install.link and req_to_install.link.is_wheel: - return IsWheel(req_to_install) - else: - return IsSDist(req_to_install) - - -class IsWheel(DistAbstraction): - - def dist(self, finder): - return list(pkg_resources.find_distributions( - self.req_to_install.source_dir))[0] - - def prep_for_dist(self): - # FIXME:https://github.com/pypa/pip/issues/1112 - pass - - -class IsSDist(DistAbstraction): - - def dist(self, finder): - dist = self.req_to_install.get_dist() - # FIXME: shouldn't be globally added: - if dist.has_metadata('dependency_links.txt'): - finder.add_dependency_links( - dist.get_metadata_lines('dependency_links.txt') - ) - return dist - - def prep_for_dist(self): - self.req_to_install.run_egg_info() - self.req_to_install.assert_source_matches_version() - - -class Installed(DistAbstraction): - - def dist(self, finder): - return self.req_to_install.satisfied_by - - def prep_for_dist(self): - pass - - -class RequirementSet(object): - - def __init__(self, build_dir, src_dir, download_dir, upgrade=False, - upgrade_strategy=None, ignore_installed=False, as_egg=False, - target_dir=None, ignore_dependencies=False, - force_reinstall=False, use_user_site=False, session=None, - pycompile=True, isolated=False, wheel_download_dir=None, - wheel_cache=None, require_hashes=False, - ignore_requires_python=False): - """Create a RequirementSet. - - :param wheel_download_dir: Where still-packed .whl files should be - written to. If None they are written to the download_dir parameter. - Separate to download_dir to permit only keeping wheel archives for - pip wheel. - :param download_dir: Where still packed archives should be written to. - If None they are not saved, and are deleted immediately after - unpacking. - :param wheel_cache: The pip wheel cache, for passing to - InstallRequirement. - """ - if session is None: - raise TypeError( - "RequirementSet() missing 1 required keyword argument: " - "'session'" - ) - - self.build_dir = build_dir - self.src_dir = src_dir - # XXX: download_dir and wheel_download_dir overlap semantically and may - # be combined if we're willing to have non-wheel archives present in - # the wheelhouse output by 'pip wheel'. - self.download_dir = download_dir - self.upgrade = upgrade - self.upgrade_strategy = upgrade_strategy - self.ignore_installed = ignore_installed - self.force_reinstall = force_reinstall - self.requirements = Requirements() - # Mapping of alias: real_name - self.requirement_aliases = {} - self.unnamed_requirements = [] - self.ignore_dependencies = ignore_dependencies - self.ignore_requires_python = ignore_requires_python - self.successfully_downloaded = [] - self.successfully_installed = [] - self.reqs_to_cleanup = [] - self.as_egg = as_egg - self.use_user_site = use_user_site - self.target_dir = target_dir # set from --target option - self.session = session - self.pycompile = pycompile - self.isolated = isolated - if wheel_download_dir: - wheel_download_dir = normalize_path(wheel_download_dir) - self.wheel_download_dir = wheel_download_dir - self._wheel_cache = wheel_cache - self.require_hashes = require_hashes - # Maps from install_req -> dependencies_of_install_req - self._dependencies = defaultdict(list) - - def __str__(self): - reqs = [req for req in self.requirements.values() - if not req.comes_from] - reqs.sort(key=lambda req: req.name.lower()) - return ' '.join([str(req.req) for req in reqs]) - - def __repr__(self): - reqs = [req for req in self.requirements.values()] - reqs.sort(key=lambda req: req.name.lower()) - reqs_str = ', '.join([str(req.req) for req in reqs]) - return ('<%s object; %d requirement(s): %s>' - % (self.__class__.__name__, len(reqs), reqs_str)) - - def add_requirement(self, install_req, parent_req_name=None, - extras_requested=None): - """Add install_req as a requirement to install. - - :param parent_req_name: The name of the requirement that needed this - added. The name is used because when multiple unnamed requirements - resolve to the same name, we could otherwise end up with dependency - links that point outside the Requirements set. parent_req must - already be added. Note that None implies that this is a user - supplied requirement, vs an inferred one. - :param extras_requested: an iterable of extras used to evaluate the - environement markers. - :return: Additional requirements to scan. That is either [] if - the requirement is not applicable, or [install_req] if the - requirement is applicable and has just been added. - """ - name = install_req.name - if not install_req.match_markers(extras_requested): - logger.warning("Ignoring %s: markers '%s' don't match your " - "environment", install_req.name, - install_req.markers) - return [] - - # This check has to come after we filter requirements with the - # environment markers. - if install_req.link and install_req.link.is_wheel: - wheel = Wheel(install_req.link.filename) - if not wheel.supported(): - raise InstallationError( - "%s is not a supported wheel on this platform." % - wheel.filename - ) - - install_req.as_egg = self.as_egg - install_req.use_user_site = self.use_user_site - install_req.target_dir = self.target_dir - install_req.pycompile = self.pycompile - install_req.is_direct = (parent_req_name is None) - - if not name: - # url or path requirement w/o an egg fragment - self.unnamed_requirements.append(install_req) - return [install_req] - else: - try: - existing_req = self.get_requirement(name) - except KeyError: - existing_req = None - if (parent_req_name is None and existing_req and not - existing_req.constraint and - existing_req.extras == install_req.extras and not - existing_req.req.specifier == install_req.req.specifier): - raise InstallationError( - 'Double requirement given: %s (already in %s, name=%r)' - % (install_req, existing_req, name)) - if not existing_req: - # Add requirement - self.requirements[name] = install_req - # FIXME: what about other normalizations? E.g., _ vs. -? - if name.lower() != name: - self.requirement_aliases[name.lower()] = name - result = [install_req] - else: - # Assume there's no need to scan, and that we've already - # encountered this for scanning. - result = [] - if not install_req.constraint and existing_req.constraint: - if (install_req.link and not (existing_req.link and - install_req.link.path == existing_req.link.path)): - self.reqs_to_cleanup.append(install_req) - raise InstallationError( - "Could not satisfy constraints for '%s': " - "installation from path or url cannot be " - "constrained to a version" % name) - # If we're now installing a constraint, mark the existing - # object for real installation. - existing_req.constraint = False - existing_req.extras = tuple( - sorted(set(existing_req.extras).union( - set(install_req.extras)))) - logger.debug("Setting %s extras to: %s", - existing_req, existing_req.extras) - # And now we need to scan this. - result = [existing_req] - # Canonicalise to the already-added object for the backref - # check below. - install_req = existing_req - if parent_req_name: - parent_req = self.get_requirement(parent_req_name) - self._dependencies[parent_req].append(install_req) - return result - - def has_requirement(self, project_name): - name = project_name.lower() - if (name in self.requirements and - not self.requirements[name].constraint or - name in self.requirement_aliases and - not self.requirements[self.requirement_aliases[name]].constraint): - return True - return False - - @property - def has_requirements(self): - return list(req for req in self.requirements.values() if not - req.constraint) or self.unnamed_requirements - - @property - def is_download(self): - if self.download_dir: - self.download_dir = expanduser(self.download_dir) - if os.path.exists(self.download_dir): - return True - else: - logger.critical('Could not find download directory') - raise InstallationError( - "Could not find or access download directory '%s'" - % display_path(self.download_dir)) - return False - - def get_requirement(self, project_name): - for name in project_name, project_name.lower(): - if name in self.requirements: - return self.requirements[name] - if name in self.requirement_aliases: - return self.requirements[self.requirement_aliases[name]] - raise KeyError("No project with the name %r" % project_name) - - def uninstall(self, auto_confirm=False): - for req in self.requirements.values(): - if req.constraint: - continue - req.uninstall(auto_confirm=auto_confirm) - req.commit_uninstall() - - def prepare_files(self, finder): - """ - Prepare process. Create temp directories, download and/or unpack files. - """ - # make the wheelhouse - if self.wheel_download_dir: - ensure_dir(self.wheel_download_dir) - - # If any top-level requirement has a hash specified, enter - # hash-checking mode, which requires hashes from all. - root_reqs = self.unnamed_requirements + self.requirements.values() - require_hashes = (self.require_hashes or - any(req.has_hash_options for req in root_reqs)) - if require_hashes and self.as_egg: - raise InstallationError( - '--egg is not allowed with --require-hashes mode, since it ' - 'delegates dependency resolution to setuptools and could thus ' - 'result in installation of unhashed packages.') - - # Actually prepare the files, and collect any exceptions. Most hash - # exceptions cannot be checked ahead of time, because - # req.populate_link() needs to be called before we can make decisions - # based on link type. - discovered_reqs = [] - hash_errors = HashErrors() - for req in chain(root_reqs, discovered_reqs): - try: - discovered_reqs.extend(self._prepare_file( - finder, - req, - require_hashes=require_hashes, - ignore_dependencies=self.ignore_dependencies)) - except HashError as exc: - exc.req = req - hash_errors.append(exc) - - if hash_errors: - raise hash_errors - - def _is_upgrade_allowed(self, req): - return self.upgrade and ( - self.upgrade_strategy == "eager" or ( - self.upgrade_strategy == "only-if-needed" and req.is_direct - ) - ) - - def _check_skip_installed(self, req_to_install, finder): - """Check if req_to_install should be skipped. - - This will check if the req is installed, and whether we should upgrade - or reinstall it, taking into account all the relevant user options. - - After calling this req_to_install will only have satisfied_by set to - None if the req_to_install is to be upgraded/reinstalled etc. Any - other value will be a dist recording the current thing installed that - satisfies the requirement. - - Note that for vcs urls and the like we can't assess skipping in this - routine - we simply identify that we need to pull the thing down, - then later on it is pulled down and introspected to assess upgrade/ - reinstalls etc. - - :return: A text reason for why it was skipped, or None. - """ - # Check whether to upgrade/reinstall this req or not. - req_to_install.check_if_exists() - if req_to_install.satisfied_by: - upgrade_allowed = self._is_upgrade_allowed(req_to_install) - - # Is the best version is installed. - best_installed = False - - if upgrade_allowed: - # For link based requirements we have to pull the - # tree down and inspect to assess the version #, so - # its handled way down. - if not (self.force_reinstall or req_to_install.link): - try: - finder.find_requirement( - req_to_install, upgrade_allowed) - except BestVersionAlreadyInstalled: - best_installed = True - except DistributionNotFound: - # No distribution found, so we squash the - # error - it will be raised later when we - # re-try later to do the install. - # Why don't we just raise here? - pass - - if not best_installed: - # don't uninstall conflict if user install and - # conflict is not user install - if not (self.use_user_site and not - dist_in_usersite(req_to_install.satisfied_by)): - req_to_install.conflicts_with = \ - req_to_install.satisfied_by - req_to_install.satisfied_by = None - - # Figure out a nice message to say why we're skipping this. - if best_installed: - skip_reason = 'already up-to-date' - elif self.upgrade_strategy == "only-if-needed": - skip_reason = 'not upgraded as not directly required' - else: - skip_reason = 'already satisfied' - - return skip_reason - else: - return None - - def _prepare_file(self, - finder, - req_to_install, - require_hashes=False, - ignore_dependencies=False): - """Prepare a single requirements file. - - :return: A list of additional InstallRequirements to also install. - """ - # Tell user what we are doing for this requirement: - # obtain (editable), skipping, processing (local url), collecting - # (remote url or package name) - if req_to_install.constraint or req_to_install.prepared: - return [] - - req_to_install.prepared = True - - # ###################### # - # # print log messages # # - # ###################### # - if req_to_install.editable: - logger.info('Obtaining %s', req_to_install) - else: - # satisfied_by is only evaluated by calling _check_skip_installed, - # so it must be None here. - assert req_to_install.satisfied_by is None - if not self.ignore_installed: - skip_reason = self._check_skip_installed( - req_to_install, finder) - - if req_to_install.satisfied_by: - assert skip_reason is not None, ( - '_check_skip_installed returned None but ' - 'req_to_install.satisfied_by is set to %r' - % (req_to_install.satisfied_by,)) - logger.info( - 'Requirement %s: %s', skip_reason, - req_to_install) - else: - if (req_to_install.link and - req_to_install.link.scheme == 'file'): - path = url_to_path(req_to_install.link.url) - logger.info('Processing %s', display_path(path)) - else: - logger.info('Collecting %s', req_to_install) - - with indent_log(): - # ################################ # - # # vcs update or unpack archive # # - # ################################ # - if req_to_install.editable: - if require_hashes: - raise InstallationError( - 'The editable requirement %s cannot be installed when ' - 'requiring hashes, because there is no single file to ' - 'hash.' % req_to_install) - req_to_install.ensure_has_source_dir(self.src_dir) - req_to_install.update_editable(not self.is_download) - abstract_dist = make_abstract_dist(req_to_install) - abstract_dist.prep_for_dist() - if self.is_download: - req_to_install.archive(self.download_dir) - req_to_install.check_if_exists() - elif req_to_install.satisfied_by: - if require_hashes: - logger.debug( - 'Since it is already installed, we are trusting this ' - 'package without checking its hash. To ensure a ' - 'completely repeatable environment, install into an ' - 'empty virtualenv.') - abstract_dist = Installed(req_to_install) - else: - # @@ if filesystem packages are not marked - # editable in a req, a non deterministic error - # occurs when the script attempts to unpack the - # build directory - req_to_install.ensure_has_source_dir(self.build_dir) - # If a checkout exists, it's unwise to keep going. version - # inconsistencies are logged later, but do not fail the - # installation. - # FIXME: this won't upgrade when there's an existing - # package unpacked in `req_to_install.source_dir` - if os.path.exists( - os.path.join(req_to_install.source_dir, 'setup.py')): - raise PreviousBuildDirError( - "pip can't proceed with requirements '%s' due to a" - " pre-existing build directory (%s). This is " - "likely due to a previous installation that failed" - ". pip is being responsible and not assuming it " - "can delete this. Please delete it and try again." - % (req_to_install, req_to_install.source_dir) - ) - req_to_install.populate_link( - finder, - self._is_upgrade_allowed(req_to_install), - require_hashes - ) - # We can't hit this spot and have populate_link return None. - # req_to_install.satisfied_by is None here (because we're - # guarded) and upgrade has no impact except when satisfied_by - # is not None. - # Then inside find_requirement existing_applicable -> False - # If no new versions are found, DistributionNotFound is raised, - # otherwise a result is guaranteed. - assert req_to_install.link - link = req_to_install.link - - # Now that we have the real link, we can tell what kind of - # requirements we have and raise some more informative errors - # than otherwise. (For example, we can raise VcsHashUnsupported - # for a VCS URL rather than HashMissing.) - if require_hashes: - # We could check these first 2 conditions inside - # unpack_url and save repetition of conditions, but then - # we would report less-useful error messages for - # unhashable requirements, complaining that there's no - # hash provided. - if is_vcs_url(link): - raise VcsHashUnsupported() - elif is_file_url(link) and is_dir_url(link): - raise DirectoryUrlHashUnsupported() - if (not req_to_install.original_link and - not req_to_install.is_pinned): - # Unpinned packages are asking for trouble when a new - # version is uploaded. This isn't a security check, but - # it saves users a surprising hash mismatch in the - # future. - # - # file:/// URLs aren't pinnable, so don't complain - # about them not being pinned. - raise HashUnpinned() - hashes = req_to_install.hashes( - trust_internet=not require_hashes) - if require_hashes and not hashes: - # Known-good hashes are missing for this requirement, so - # shim it with a facade object that will provoke hash - # computation and then raise a HashMissing exception - # showing the user what the hash should be. - hashes = MissingHashes() - - try: - download_dir = self.download_dir - # We always delete unpacked sdists after pip ran. - autodelete_unpacked = True - if req_to_install.link.is_wheel \ - and self.wheel_download_dir: - # when doing 'pip wheel` we download wheels to a - # dedicated dir. - download_dir = self.wheel_download_dir - if req_to_install.link.is_wheel: - if download_dir: - # When downloading, we only unpack wheels to get - # metadata. - autodelete_unpacked = True - else: - # When installing a wheel, we use the unpacked - # wheel. - autodelete_unpacked = False - unpack_url( - req_to_install.link, req_to_install.source_dir, - download_dir, autodelete_unpacked, - session=self.session, hashes=hashes) - except requests.HTTPError as exc: - logger.critical( - 'Could not install requirement %s because ' - 'of error %s', - req_to_install, - exc, - ) - raise InstallationError( - 'Could not install requirement %s because ' - 'of HTTP error %s for URL %s' % - (req_to_install, exc, req_to_install.link) - ) - abstract_dist = make_abstract_dist(req_to_install) - abstract_dist.prep_for_dist() - if self.is_download: - # Make a .zip of the source_dir we already created. - if req_to_install.link.scheme in vcs.all_schemes: - req_to_install.archive(self.download_dir) - # req_to_install.req is only avail after unpack for URL - # pkgs repeat check_if_exists to uninstall-on-upgrade - # (#14) - if not self.ignore_installed: - req_to_install.check_if_exists() - if req_to_install.satisfied_by: - if self.upgrade or self.ignore_installed: - # don't uninstall conflict if user install and - # conflict is not user install - if not (self.use_user_site and not - dist_in_usersite( - req_to_install.satisfied_by)): - req_to_install.conflicts_with = \ - req_to_install.satisfied_by - req_to_install.satisfied_by = None - else: - logger.info( - 'Requirement already satisfied (use ' - '--upgrade to upgrade): %s', - req_to_install, - ) - - # ###################### # - # # parse dependencies # # - # ###################### # - dist = abstract_dist.dist(finder) - try: - check_dist_requires_python(dist) - except UnsupportedPythonVersion as e: - if self.ignore_requires_python: - logger.warning(e.args[0]) - else: - req_to_install.remove_temporary_source() - raise - more_reqs = [] - - def add_req(subreq, extras_requested): - sub_install_req = InstallRequirement( - str(subreq), - req_to_install, - isolated=self.isolated, - wheel_cache=self._wheel_cache, - ) - more_reqs.extend(self.add_requirement( - sub_install_req, req_to_install.name, - extras_requested=extras_requested)) - - # We add req_to_install before its dependencies, so that we - # can refer to it when adding dependencies. - if not self.has_requirement(req_to_install.name): - # 'unnamed' requirements will get added here - self.add_requirement(req_to_install, None) - - if not ignore_dependencies: - if (req_to_install.extras): - logger.debug( - "Installing extra requirements: %r", - ','.join(req_to_install.extras), - ) - missing_requested = sorted( - set(req_to_install.extras) - set(dist.extras) - ) - for missing in missing_requested: - logger.warning( - '%s does not provide the extra \'%s\'', - dist, missing - ) - - available_requested = sorted( - set(dist.extras) & set(req_to_install.extras) - ) - for subreq in dist.requires(available_requested): - add_req(subreq, extras_requested=available_requested) - - # cleanup tmp src - self.reqs_to_cleanup.append(req_to_install) - - if not req_to_install.editable and not req_to_install.satisfied_by: - # XXX: --no-install leads this to report 'Successfully - # downloaded' for only non-editable reqs, even though we took - # action on them. - self.successfully_downloaded.append(req_to_install) - - return more_reqs - - def cleanup_files(self): - """Clean up files, remove builds.""" - logger.debug('Cleaning up...') - with indent_log(): - for req in self.reqs_to_cleanup: - req.remove_temporary_source() - - def _to_install(self): - """Create the installation order. - - The installation order is topological - requirements are installed - before the requiring thing. We break cycles at an arbitrary point, - and make no other guarantees. - """ - # The current implementation, which we may change at any point - # installs the user specified things in the order given, except when - # dependencies must come earlier to achieve topological order. - order = [] - ordered_reqs = set() - - def schedule(req): - if req.satisfied_by or req in ordered_reqs: - return - if req.constraint: - return - ordered_reqs.add(req) - for dep in self._dependencies[req]: - schedule(dep) - order.append(req) - for install_req in self.requirements.values(): - schedule(install_req) - return order - - def install(self, install_options, global_options=(), *args, **kwargs): - """ - Install everything in this set (after having downloaded and unpacked - the packages) - """ - to_install = self._to_install() - - if to_install: - logger.info( - 'Installing collected packages: %s', - ', '.join([req.name for req in to_install]), - ) - - with indent_log(): - for requirement in to_install: - if requirement.conflicts_with: - logger.info( - 'Found existing installation: %s', - requirement.conflicts_with, - ) - with indent_log(): - requirement.uninstall(auto_confirm=True) - try: - requirement.install( - install_options, - global_options, - *args, - **kwargs - ) - except: - # if install did not succeed, rollback previous uninstall - if (requirement.conflicts_with and not - requirement.install_succeeded): - requirement.rollback_uninstall() - raise - else: - if (requirement.conflicts_with and - requirement.install_succeeded): - requirement.commit_uninstall() - requirement.remove_temporary_source() - - self.successfully_installed = to_install diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_uninstall.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_uninstall.py deleted file mode 100644 index 5248430a..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/req/req_uninstall.py +++ /dev/null @@ -1,195 +0,0 @@ -from __future__ import absolute_import - -import logging -import os -import tempfile - -from pip.compat import uses_pycache, WINDOWS, cache_from_source -from pip.exceptions import UninstallationError -from pip.utils import rmtree, ask, is_local, renames, normalize_path -from pip.utils.logging import indent_log - - -logger = logging.getLogger(__name__) - - -class UninstallPathSet(object): - """A set of file paths to be removed in the uninstallation of a - requirement.""" - def __init__(self, dist): - self.paths = set() - self._refuse = set() - self.pth = {} - self.dist = dist - self.save_dir = None - self._moved_paths = [] - - def _permitted(self, path): - """ - Return True if the given path is one we are permitted to - remove/modify, False otherwise. - - """ - return is_local(path) - - def add(self, path): - head, tail = os.path.split(path) - - # we normalize the head to resolve parent directory symlinks, but not - # the tail, since we only want to uninstall symlinks, not their targets - path = os.path.join(normalize_path(head), os.path.normcase(tail)) - - if not os.path.exists(path): - return - if self._permitted(path): - self.paths.add(path) - else: - self._refuse.add(path) - - # __pycache__ files can show up after 'installed-files.txt' is created, - # due to imports - if os.path.splitext(path)[1] == '.py' and uses_pycache: - self.add(cache_from_source(path)) - - def add_pth(self, pth_file, entry): - pth_file = normalize_path(pth_file) - if self._permitted(pth_file): - if pth_file not in self.pth: - self.pth[pth_file] = UninstallPthEntries(pth_file) - self.pth[pth_file].add(entry) - else: - self._refuse.add(pth_file) - - def compact(self, paths): - """Compact a path set to contain the minimal number of paths - necessary to contain all paths in the set. If /a/path/ and - /a/path/to/a/file.txt are both in the set, leave only the - shorter path.""" - short_paths = set() - for path in sorted(paths, key=len): - if not any([ - (path.startswith(shortpath) and - path[len(shortpath.rstrip(os.path.sep))] == os.path.sep) - for shortpath in short_paths]): - short_paths.add(path) - return short_paths - - def _stash(self, path): - return os.path.join( - self.save_dir, os.path.splitdrive(path)[1].lstrip(os.path.sep)) - - def remove(self, auto_confirm=False): - """Remove paths in ``self.paths`` with confirmation (unless - ``auto_confirm`` is True).""" - if not self.paths: - logger.info( - "Can't uninstall '%s'. No files were found to uninstall.", - self.dist.project_name, - ) - return - logger.info( - 'Uninstalling %s-%s:', - self.dist.project_name, self.dist.version - ) - - with indent_log(): - paths = sorted(self.compact(self.paths)) - - if auto_confirm: - response = 'y' - else: - for path in paths: - logger.info(path) - response = ask('Proceed (y/n)? ', ('y', 'n')) - if self._refuse: - logger.info('Not removing or modifying (outside of prefix):') - for path in self.compact(self._refuse): - logger.info(path) - if response == 'y': - self.save_dir = tempfile.mkdtemp(suffix='-uninstall', - prefix='pip-') - for path in paths: - new_path = self._stash(path) - logger.debug('Removing file or directory %s', path) - self._moved_paths.append(path) - renames(path, new_path) - for pth in self.pth.values(): - pth.remove() - logger.info( - 'Successfully uninstalled %s-%s', - self.dist.project_name, self.dist.version - ) - - def rollback(self): - """Rollback the changes previously made by remove().""" - if self.save_dir is None: - logger.error( - "Can't roll back %s; was not uninstalled", - self.dist.project_name, - ) - return False - logger.info('Rolling back uninstall of %s', self.dist.project_name) - for path in self._moved_paths: - tmp_path = self._stash(path) - logger.debug('Replacing %s', path) - renames(tmp_path, path) - for pth in self.pth.values(): - pth.rollback() - - def commit(self): - """Remove temporary save dir: rollback will no longer be possible.""" - if self.save_dir is not None: - rmtree(self.save_dir) - self.save_dir = None - self._moved_paths = [] - - -class UninstallPthEntries(object): - def __init__(self, pth_file): - if not os.path.isfile(pth_file): - raise UninstallationError( - "Cannot remove entries from nonexistent file %s" % pth_file - ) - self.file = pth_file - self.entries = set() - self._saved_lines = None - - def add(self, entry): - entry = os.path.normcase(entry) - # On Windows, os.path.normcase converts the entry to use - # backslashes. This is correct for entries that describe absolute - # paths outside of site-packages, but all the others use forward - # slashes. - if WINDOWS and not os.path.splitdrive(entry)[0]: - entry = entry.replace('\\', '/') - self.entries.add(entry) - - def remove(self): - logger.debug('Removing pth entries from %s:', self.file) - with open(self.file, 'rb') as fh: - # windows uses '\r\n' with py3k, but uses '\n' with py2.x - lines = fh.readlines() - self._saved_lines = lines - if any(b'\r\n' in line for line in lines): - endline = '\r\n' - else: - endline = '\n' - for entry in self.entries: - try: - logger.debug('Removing entry: %s', entry) - lines.remove((entry + endline).encode("utf-8")) - except ValueError: - pass - with open(self.file, 'wb') as fh: - fh.writelines(lines) - - def rollback(self): - if self._saved_lines is None: - logger.error( - 'Cannot roll back changes to %s, none were made', self.file - ) - return False - logger.debug('Rolling %s back to previous state', self.file) - with open(self.file, 'wb') as fh: - fh.writelines(self._saved_lines) - return True diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/status_codes.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/status_codes.py deleted file mode 100644 index 275360a3..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/status_codes.py +++ /dev/null @@ -1,8 +0,0 @@ -from __future__ import absolute_import - -SUCCESS = 0 -ERROR = 1 -UNKNOWN_ERROR = 2 -VIRTUALENV_NOT_FOUND = 3 -PREVIOUS_BUILD_DIR_ERROR = 4 -NO_MATCHES_FOUND = 23 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__init__.py deleted file mode 100644 index 815bd338..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__init__.py +++ /dev/null @@ -1,852 +0,0 @@ -from __future__ import absolute_import - -from collections import deque -import contextlib -import errno -import io -import locale -# we have a submodule named 'logging' which would shadow this if we used the -# regular name: -import logging as std_logging -import re -import os -import posixpath -import shutil -import stat -import subprocess -import sys -import tarfile -import zipfile - -from pip.exceptions import InstallationError -from pip.compat import console_to_str, expanduser, stdlib_pkgs -from pip.locations import ( - site_packages, user_site, running_under_virtualenv, virtualenv_no_global, - write_delete_marker_file, -) -from pip._vendor import pkg_resources -from pip._vendor.six.moves import input -from pip._vendor.six import PY2 -from pip._vendor.retrying import retry - -if PY2: - from io import BytesIO as StringIO -else: - from io import StringIO - -__all__ = ['rmtree', 'display_path', 'backup_dir', - 'ask', 'splitext', - 'format_size', 'is_installable_dir', - 'is_svn_page', 'file_contents', - 'split_leading_dir', 'has_leading_dir', - 'normalize_path', - 'renames', 'get_terminal_size', 'get_prog', - 'unzip_file', 'untar_file', 'unpack_file', 'call_subprocess', - 'captured_stdout', 'ensure_dir', - 'ARCHIVE_EXTENSIONS', 'SUPPORTED_EXTENSIONS', - 'get_installed_version'] - - -logger = std_logging.getLogger(__name__) - -BZ2_EXTENSIONS = ('.tar.bz2', '.tbz') -XZ_EXTENSIONS = ('.tar.xz', '.txz', '.tlz', '.tar.lz', '.tar.lzma') -ZIP_EXTENSIONS = ('.zip', '.whl') -TAR_EXTENSIONS = ('.tar.gz', '.tgz', '.tar') -ARCHIVE_EXTENSIONS = ( - ZIP_EXTENSIONS + BZ2_EXTENSIONS + TAR_EXTENSIONS + XZ_EXTENSIONS) -SUPPORTED_EXTENSIONS = ZIP_EXTENSIONS + TAR_EXTENSIONS -try: - import bz2 # noqa - SUPPORTED_EXTENSIONS += BZ2_EXTENSIONS -except ImportError: - logger.debug('bz2 module is not available') - -try: - # Only for Python 3.3+ - import lzma # noqa - SUPPORTED_EXTENSIONS += XZ_EXTENSIONS -except ImportError: - logger.debug('lzma module is not available') - - -def import_or_raise(pkg_or_module_string, ExceptionType, *args, **kwargs): - try: - return __import__(pkg_or_module_string) - except ImportError: - raise ExceptionType(*args, **kwargs) - - -def ensure_dir(path): - """os.path.makedirs without EEXIST.""" - try: - os.makedirs(path) - except OSError as e: - if e.errno != errno.EEXIST: - raise - - -def get_prog(): - try: - if os.path.basename(sys.argv[0]) in ('__main__.py', '-c'): - return "%s -m pip" % sys.executable - except (AttributeError, TypeError, IndexError): - pass - return 'pip' - - -# Retry every half second for up to 3 seconds -@retry(stop_max_delay=3000, wait_fixed=500) -def rmtree(dir, ignore_errors=False): - shutil.rmtree(dir, ignore_errors=ignore_errors, - onerror=rmtree_errorhandler) - - -def rmtree_errorhandler(func, path, exc_info): - """On Windows, the files in .svn are read-only, so when rmtree() tries to - remove them, an exception is thrown. We catch that here, remove the - read-only attribute, and hopefully continue without problems.""" - # if file type currently read only - if os.stat(path).st_mode & stat.S_IREAD: - # convert to read/write - os.chmod(path, stat.S_IWRITE) - # use the original function to repeat the operation - func(path) - return - else: - raise - - -def display_path(path): - """Gives the display value for a given path, making it relative to cwd - if possible.""" - path = os.path.normcase(os.path.abspath(path)) - if sys.version_info[0] == 2: - path = path.decode(sys.getfilesystemencoding(), 'replace') - path = path.encode(sys.getdefaultencoding(), 'replace') - if path.startswith(os.getcwd() + os.path.sep): - path = '.' + path[len(os.getcwd()):] - return path - - -def backup_dir(dir, ext='.bak'): - """Figure out the name of a directory to back up the given dir to - (adding .bak, .bak2, etc)""" - n = 1 - extension = ext - while os.path.exists(dir + extension): - n += 1 - extension = ext + str(n) - return dir + extension - - -def ask_path_exists(message, options): - for action in os.environ.get('PIP_EXISTS_ACTION', '').split(): - if action in options: - return action - return ask(message, options) - - -def ask(message, options): - """Ask the message interactively, with the given possible responses""" - while 1: - if os.environ.get('PIP_NO_INPUT'): - raise Exception( - 'No input was expected ($PIP_NO_INPUT set); question: %s' % - message - ) - response = input(message) - response = response.strip().lower() - if response not in options: - print( - 'Your response (%r) was not one of the expected responses: ' - '%s' % (response, ', '.join(options)) - ) - else: - return response - - -def format_size(bytes): - if bytes > 1000 * 1000: - return '%.1fMB' % (bytes / 1000.0 / 1000) - elif bytes > 10 * 1000: - return '%ikB' % (bytes / 1000) - elif bytes > 1000: - return '%.1fkB' % (bytes / 1000.0) - else: - return '%ibytes' % bytes - - -def is_installable_dir(path): - """Return True if `path` is a directory containing a setup.py file.""" - if not os.path.isdir(path): - return False - setup_py = os.path.join(path, 'setup.py') - if os.path.isfile(setup_py): - return True - return False - - -def is_svn_page(html): - """ - Returns true if the page appears to be the index page of an svn repository - """ - return (re.search(r'[^<]*Revision \d+:', html) and - re.search(r'Powered by (?:<a[^>]*?>)?Subversion', html, re.I)) - - -def file_contents(filename): - with open(filename, 'rb') as fp: - return fp.read().decode('utf-8') - - -def read_chunks(file, size=io.DEFAULT_BUFFER_SIZE): - """Yield pieces of data from a file-like object until EOF.""" - while True: - chunk = file.read(size) - if not chunk: - break - yield chunk - - -def split_leading_dir(path): - path = path.lstrip('/').lstrip('\\') - if '/' in path and (('\\' in path and path.find('/') < path.find('\\')) or - '\\' not in path): - return path.split('/', 1) - elif '\\' in path: - return path.split('\\', 1) - else: - return path, '' - - -def has_leading_dir(paths): - """Returns true if all the paths have the same leading path name - (i.e., everything is in one subdirectory in an archive)""" - common_prefix = None - for path in paths: - prefix, rest = split_leading_dir(path) - if not prefix: - return False - elif common_prefix is None: - common_prefix = prefix - elif prefix != common_prefix: - return False - return True - - -def normalize_path(path, resolve_symlinks=True): - """ - Convert a path to its canonical, case-normalized, absolute version. - - """ - path = expanduser(path) - if resolve_symlinks: - path = os.path.realpath(path) - else: - path = os.path.abspath(path) - return os.path.normcase(path) - - -def splitext(path): - """Like os.path.splitext, but take off .tar too""" - base, ext = posixpath.splitext(path) - if base.lower().endswith('.tar'): - ext = base[-4:] + ext - base = base[:-4] - return base, ext - - -def renames(old, new): - """Like os.renames(), but handles renaming across devices.""" - # Implementation borrowed from os.renames(). - head, tail = os.path.split(new) - if head and tail and not os.path.exists(head): - os.makedirs(head) - - shutil.move(old, new) - - head, tail = os.path.split(old) - if head and tail: - try: - os.removedirs(head) - except OSError: - pass - - -def is_local(path): - """ - Return True if path is within sys.prefix, if we're running in a virtualenv. - - If we're not in a virtualenv, all paths are considered "local." - - """ - if not running_under_virtualenv(): - return True - return normalize_path(path).startswith(normalize_path(sys.prefix)) - - -def dist_is_local(dist): - """ - Return True if given Distribution object is installed locally - (i.e. within current virtualenv). - - Always True if we're not in a virtualenv. - - """ - return is_local(dist_location(dist)) - - -def dist_in_usersite(dist): - """ - Return True if given Distribution is installed in user site. - """ - norm_path = normalize_path(dist_location(dist)) - return norm_path.startswith(normalize_path(user_site)) - - -def dist_in_site_packages(dist): - """ - Return True if given Distribution is installed in - distutils.sysconfig.get_python_lib(). - """ - return normalize_path( - dist_location(dist) - ).startswith(normalize_path(site_packages)) - - -def dist_is_editable(dist): - """Is distribution an editable install?""" - for path_item in sys.path: - egg_link = os.path.join(path_item, dist.project_name + '.egg-link') - if os.path.isfile(egg_link): - return True - return False - - -def get_installed_distributions(local_only=True, - skip=stdlib_pkgs, - include_editables=True, - editables_only=False, - user_only=False): - """ - Return a list of installed Distribution objects. - - If ``local_only`` is True (default), only return installations - local to the current virtualenv, if in a virtualenv. - - ``skip`` argument is an iterable of lower-case project names to - ignore; defaults to stdlib_pkgs - - If ``editables`` is False, don't report editables. - - If ``editables_only`` is True , only report editables. - - If ``user_only`` is True , only report installations in the user - site directory. - - """ - if local_only: - local_test = dist_is_local - else: - def local_test(d): - return True - - if include_editables: - def editable_test(d): - return True - else: - def editable_test(d): - return not dist_is_editable(d) - - if editables_only: - def editables_only_test(d): - return dist_is_editable(d) - else: - def editables_only_test(d): - return True - - if user_only: - user_test = dist_in_usersite - else: - def user_test(d): - return True - - return [d for d in pkg_resources.working_set - if local_test(d) and - d.key not in skip and - editable_test(d) and - editables_only_test(d) and - user_test(d) - ] - - -def egg_link_path(dist): - """ - Return the path for the .egg-link file if it exists, otherwise, None. - - There's 3 scenarios: - 1) not in a virtualenv - try to find in site.USER_SITE, then site_packages - 2) in a no-global virtualenv - try to find in site_packages - 3) in a yes-global virtualenv - try to find in site_packages, then site.USER_SITE - (don't look in global location) - - For #1 and #3, there could be odd cases, where there's an egg-link in 2 - locations. - - This method will just return the first one found. - """ - sites = [] - if running_under_virtualenv(): - if virtualenv_no_global(): - sites.append(site_packages) - else: - sites.append(site_packages) - if user_site: - sites.append(user_site) - else: - if user_site: - sites.append(user_site) - sites.append(site_packages) - - for site in sites: - egglink = os.path.join(site, dist.project_name) + '.egg-link' - if os.path.isfile(egglink): - return egglink - - -def dist_location(dist): - """ - Get the site-packages location of this distribution. Generally - this is dist.location, except in the case of develop-installed - packages, where dist.location is the source code location, and we - want to know where the egg-link file is. - - """ - egg_link = egg_link_path(dist) - if egg_link: - return egg_link - return dist.location - - -def get_terminal_size(): - """Returns a tuple (x, y) representing the width(x) and the height(x) - in characters of the terminal window.""" - def ioctl_GWINSZ(fd): - try: - import fcntl - import termios - import struct - cr = struct.unpack( - 'hh', - fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234') - ) - except: - return None - if cr == (0, 0): - return None - return cr - cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2) - if not cr: - try: - fd = os.open(os.ctermid(), os.O_RDONLY) - cr = ioctl_GWINSZ(fd) - os.close(fd) - except: - pass - if not cr: - cr = (os.environ.get('LINES', 25), os.environ.get('COLUMNS', 80)) - return int(cr[1]), int(cr[0]) - - -def current_umask(): - """Get the current umask which involves having to set it temporarily.""" - mask = os.umask(0) - os.umask(mask) - return mask - - -def unzip_file(filename, location, flatten=True): - """ - Unzip the file (with path `filename`) to the destination `location`. All - files are written based on system defaults and umask (i.e. permissions are - not preserved), except that regular file members with any execute - permissions (user, group, or world) have "chmod +x" applied after being - written. Note that for windows, any execute changes using os.chmod are - no-ops per the python docs. - """ - ensure_dir(location) - zipfp = open(filename, 'rb') - try: - zip = zipfile.ZipFile(zipfp, allowZip64=True) - leading = has_leading_dir(zip.namelist()) and flatten - for info in zip.infolist(): - name = info.filename - data = zip.read(name) - fn = name - if leading: - fn = split_leading_dir(name)[1] - fn = os.path.join(location, fn) - dir = os.path.dirname(fn) - if fn.endswith('/') or fn.endswith('\\'): - # A directory - ensure_dir(fn) - else: - ensure_dir(dir) - fp = open(fn, 'wb') - try: - fp.write(data) - finally: - fp.close() - mode = info.external_attr >> 16 - # if mode and regular file and any execute permissions for - # user/group/world? - if mode and stat.S_ISREG(mode) and mode & 0o111: - # make dest file have execute for user/group/world - # (chmod +x) no-op on windows per python docs - os.chmod(fn, (0o777 - current_umask() | 0o111)) - finally: - zipfp.close() - - -def untar_file(filename, location): - """ - Untar the file (with path `filename`) to the destination `location`. - All files are written based on system defaults and umask (i.e. permissions - are not preserved), except that regular file members with any execute - permissions (user, group, or world) have "chmod +x" applied after being - written. Note that for windows, any execute changes using os.chmod are - no-ops per the python docs. - """ - ensure_dir(location) - if filename.lower().endswith('.gz') or filename.lower().endswith('.tgz'): - mode = 'r:gz' - elif filename.lower().endswith(BZ2_EXTENSIONS): - mode = 'r:bz2' - elif filename.lower().endswith(XZ_EXTENSIONS): - mode = 'r:xz' - elif filename.lower().endswith('.tar'): - mode = 'r' - else: - logger.warning( - 'Cannot determine compression type for file %s', filename, - ) - mode = 'r:*' - tar = tarfile.open(filename, mode) - try: - # note: python<=2.5 doesn't seem to know about pax headers, filter them - leading = has_leading_dir([ - member.name for member in tar.getmembers() - if member.name != 'pax_global_header' - ]) - for member in tar.getmembers(): - fn = member.name - if fn == 'pax_global_header': - continue - if leading: - fn = split_leading_dir(fn)[1] - path = os.path.join(location, fn) - if member.isdir(): - ensure_dir(path) - elif member.issym(): - try: - tar._extract_member(member, path) - except Exception as exc: - # Some corrupt tar files seem to produce this - # (specifically bad symlinks) - logger.warning( - 'In the tar file %s the member %s is invalid: %s', - filename, member.name, exc, - ) - continue - else: - try: - fp = tar.extractfile(member) - except (KeyError, AttributeError) as exc: - # Some corrupt tar files seem to produce this - # (specifically bad symlinks) - logger.warning( - 'In the tar file %s the member %s is invalid: %s', - filename, member.name, exc, - ) - continue - ensure_dir(os.path.dirname(path)) - with open(path, 'wb') as destfp: - shutil.copyfileobj(fp, destfp) - fp.close() - # Update the timestamp (useful for cython compiled files) - tar.utime(member, path) - # member have any execute permissions for user/group/world? - if member.mode & 0o111: - # make dest file have execute for user/group/world - # no-op on windows per python docs - os.chmod(path, (0o777 - current_umask() | 0o111)) - finally: - tar.close() - - -def unpack_file(filename, location, content_type, link): - filename = os.path.realpath(filename) - if (content_type == 'application/zip' or - filename.lower().endswith(ZIP_EXTENSIONS) or - zipfile.is_zipfile(filename)): - unzip_file( - filename, - location, - flatten=not filename.endswith('.whl') - ) - elif (content_type == 'application/x-gzip' or - tarfile.is_tarfile(filename) or - filename.lower().endswith( - TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS)): - untar_file(filename, location) - elif (content_type and content_type.startswith('text/html') and - is_svn_page(file_contents(filename))): - # We don't really care about this - from pip.vcs.subversion import Subversion - Subversion('svn+' + link.url).unpack(location) - else: - # FIXME: handle? - # FIXME: magic signatures? - logger.critical( - 'Cannot unpack file %s (downloaded from %s, content-type: %s); ' - 'cannot detect archive format', - filename, location, content_type, - ) - raise InstallationError( - 'Cannot determine archive format of %s' % location - ) - - -def call_subprocess(cmd, show_stdout=True, cwd=None, - on_returncode='raise', - command_desc=None, - extra_environ=None, spinner=None): - # This function's handling of subprocess output is confusing and I - # previously broke it terribly, so as penance I will write a long comment - # explaining things. - # - # The obvious thing that affects output is the show_stdout= - # kwarg. show_stdout=True means, let the subprocess write directly to our - # stdout. Even though it is nominally the default, it is almost never used - # inside pip (and should not be used in new code without a very good - # reason); as of 2016-02-22 it is only used in a few places inside the VCS - # wrapper code. Ideally we should get rid of it entirely, because it - # creates a lot of complexity here for a rarely used feature. - # - # Most places in pip set show_stdout=False. What this means is: - # - We connect the child stdout to a pipe, which we read. - # - By default, we hide the output but show a spinner -- unless the - # subprocess exits with an error, in which case we show the output. - # - If the --verbose option was passed (= loglevel is DEBUG), then we show - # the output unconditionally. (But in this case we don't want to show - # the output a second time if it turns out that there was an error.) - # - # stderr is always merged with stdout (even if show_stdout=True). - if show_stdout: - stdout = None - else: - stdout = subprocess.PIPE - if command_desc is None: - cmd_parts = [] - for part in cmd: - if ' ' in part or '\n' in part or '"' in part or "'" in part: - part = '"%s"' % part.replace('"', '\\"') - cmd_parts.append(part) - command_desc = ' '.join(cmd_parts) - logger.debug("Running command %s", command_desc) - env = os.environ.copy() - if extra_environ: - env.update(extra_environ) - try: - proc = subprocess.Popen( - cmd, stderr=subprocess.STDOUT, stdin=None, stdout=stdout, - cwd=cwd, env=env) - except Exception as exc: - logger.critical( - "Error %s while executing command %s", exc, command_desc, - ) - raise - if stdout is not None: - all_output = [] - while True: - line = console_to_str(proc.stdout.readline()) - if not line: - break - line = line.rstrip() - all_output.append(line + '\n') - if logger.getEffectiveLevel() <= std_logging.DEBUG: - # Show the line immediately - logger.debug(line) - else: - # Update the spinner - if spinner is not None: - spinner.spin() - proc.wait() - if spinner is not None: - if proc.returncode: - spinner.finish("error") - else: - spinner.finish("done") - if proc.returncode: - if on_returncode == 'raise': - if (logger.getEffectiveLevel() > std_logging.DEBUG and - not show_stdout): - logger.info( - 'Complete output from command %s:', command_desc, - ) - logger.info( - ''.join(all_output) + - '\n----------------------------------------' - ) - raise InstallationError( - 'Command "%s" failed with error code %s in %s' - % (command_desc, proc.returncode, cwd)) - elif on_returncode == 'warn': - logger.warning( - 'Command "%s" had error code %s in %s', - command_desc, proc.returncode, cwd, - ) - elif on_returncode == 'ignore': - pass - else: - raise ValueError('Invalid value: on_returncode=%s' % - repr(on_returncode)) - if not show_stdout: - return ''.join(all_output) - - -def read_text_file(filename): - """Return the contents of *filename*. - - Try to decode the file contents with utf-8, the preferred system encoding - (e.g., cp1252 on some Windows machines), and latin1, in that order. - Decoding a byte string with latin1 will never raise an error. In the worst - case, the returned string will contain some garbage characters. - - """ - with open(filename, 'rb') as fp: - data = fp.read() - - encodings = ['utf-8', locale.getpreferredencoding(False), 'latin1'] - for enc in encodings: - try: - data = data.decode(enc) - except UnicodeDecodeError: - continue - break - - assert type(data) != bytes # Latin1 should have worked. - return data - - -def _make_build_dir(build_dir): - os.makedirs(build_dir) - write_delete_marker_file(build_dir) - - -class FakeFile(object): - """Wrap a list of lines in an object with readline() to make - ConfigParser happy.""" - def __init__(self, lines): - self._gen = (l for l in lines) - - def readline(self): - try: - try: - return next(self._gen) - except NameError: - return self._gen.next() - except StopIteration: - return '' - - def __iter__(self): - return self._gen - - -class StreamWrapper(StringIO): - - @classmethod - def from_stream(cls, orig_stream): - cls.orig_stream = orig_stream - return cls() - - # compileall.compile_dir() needs stdout.encoding to print to stdout - @property - def encoding(self): - return self.orig_stream.encoding - - -@contextlib.contextmanager -def captured_output(stream_name): - """Return a context manager used by captured_stdout/stdin/stderr - that temporarily replaces the sys stream *stream_name* with a StringIO. - - Taken from Lib/support/__init__.py in the CPython repo. - """ - orig_stdout = getattr(sys, stream_name) - setattr(sys, stream_name, StreamWrapper.from_stream(orig_stdout)) - try: - yield getattr(sys, stream_name) - finally: - setattr(sys, stream_name, orig_stdout) - - -def captured_stdout(): - """Capture the output of sys.stdout: - - with captured_stdout() as stdout: - print('hello') - self.assertEqual(stdout.getvalue(), 'hello\n') - - Taken from Lib/support/__init__.py in the CPython repo. - """ - return captured_output('stdout') - - -class cached_property(object): - """A property that is only computed once per instance and then replaces - itself with an ordinary attribute. Deleting the attribute resets the - property. - - Source: https://github.com/bottlepy/bottle/blob/0.11.5/bottle.py#L175 - """ - - def __init__(self, func): - self.__doc__ = getattr(func, '__doc__') - self.func = func - - def __get__(self, obj, cls): - if obj is None: - # We're being accessed from the class itself, not from an object - return self - value = obj.__dict__[self.func.__name__] = self.func(obj) - return value - - -def get_installed_version(dist_name, lookup_dirs=None): - """Get the installed version of dist_name avoiding pkg_resources cache""" - # Create a requirement that we'll look for inside of setuptools. - req = pkg_resources.Requirement.parse(dist_name) - - # We want to avoid having this cached, so we need to construct a new - # working set each time. - if lookup_dirs is None: - working_set = pkg_resources.WorkingSet() - else: - working_set = pkg_resources.WorkingSet(lookup_dirs) - - # Get the installed distribution from our working set - dist = working_set.find(req) - - # Check to see if we got an installed distribution or not, if we did - # we want to return it's version. - return dist.version if dist else None - - -def consume(iterator): - """Consume an iterable at C speed.""" - deque(iterator, maxlen=0) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 28b038be..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/appdirs.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/appdirs.cpython-36.pyc deleted file mode 100644 index bb46949e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/appdirs.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/build.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/build.cpython-36.pyc deleted file mode 100644 index 5706f549..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/build.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/deprecation.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/deprecation.cpython-36.pyc deleted file mode 100644 index f3e3dbca..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/deprecation.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/encoding.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/encoding.cpython-36.pyc deleted file mode 100644 index 9fb6dcd0..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/encoding.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/filesystem.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/filesystem.cpython-36.pyc deleted file mode 100644 index 17a416b6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/filesystem.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/glibc.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/glibc.cpython-36.pyc deleted file mode 100644 index f82a6a97..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/glibc.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/hashes.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/hashes.cpython-36.pyc deleted file mode 100644 index 457c1d10..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/hashes.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/logging.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/logging.cpython-36.pyc deleted file mode 100644 index 2e92635a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/logging.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/outdated.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/outdated.cpython-36.pyc deleted file mode 100644 index afa0ef2a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/outdated.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/packaging.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/packaging.cpython-36.pyc deleted file mode 100644 index 6feaad7f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/packaging.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/setuptools_build.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/setuptools_build.cpython-36.pyc deleted file mode 100644 index ad933a9f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/setuptools_build.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/ui.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/ui.cpython-36.pyc deleted file mode 100644 index 7f1baaef..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/__pycache__/ui.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/appdirs.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/appdirs.py deleted file mode 100644 index 9b828014..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/appdirs.py +++ /dev/null @@ -1,248 +0,0 @@ -""" -This code was taken from https://github.com/ActiveState/appdirs and modified -to suit our purposes. -""" -from __future__ import absolute_import - -import os -import sys - -from pip.compat import WINDOWS, expanduser -from pip._vendor.six import PY2, text_type - - -def user_cache_dir(appname): - r""" - Return full path to the user-specific cache dir for this application. - - "appname" is the name of application. - - Typical user cache directories are: - macOS: ~/Library/Caches/<AppName> - Unix: ~/.cache/<AppName> (XDG default) - Windows: C:\Users\<username>\AppData\Local\<AppName>\Cache - - On Windows the only suggestion in the MSDN docs is that local settings go - in the `CSIDL_LOCAL_APPDATA` directory. This is identical to the - non-roaming app data dir (the default returned by `user_data_dir`). Apps - typically put cache data somewhere *under* the given dir here. Some - examples: - ...\Mozilla\Firefox\Profiles\<ProfileName>\Cache - ...\Acme\SuperApp\Cache\1.0 - - OPINION: This function appends "Cache" to the `CSIDL_LOCAL_APPDATA` value. - """ - if WINDOWS: - # Get the base path - path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA")) - - # When using Python 2, return paths as bytes on Windows like we do on - # other operating systems. See helper function docs for more details. - if PY2 and isinstance(path, text_type): - path = _win_path_to_bytes(path) - - # Add our app name and Cache directory to it - path = os.path.join(path, appname, "Cache") - elif sys.platform == "darwin": - # Get the base path - path = expanduser("~/Library/Caches") - - # Add our app name to it - path = os.path.join(path, appname) - else: - # Get the base path - path = os.getenv("XDG_CACHE_HOME", expanduser("~/.cache")) - - # Add our app name to it - path = os.path.join(path, appname) - - return path - - -def user_data_dir(appname, roaming=False): - """ - Return full path to the user-specific data dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "roaming" (boolean, default False) can be set True to use the Windows - roaming appdata directory. That means that for users on a Windows - network setup for roaming profiles, this user data will be - sync'd on login. See - <http://technet.microsoft.com/en-us/library/cc766489(WS.10).aspx> - for a discussion of issues. - - Typical user data directories are: - macOS: ~/Library/Application Support/<AppName> - Unix: ~/.local/share/<AppName> # or in - $XDG_DATA_HOME, if defined - Win XP (not roaming): C:\Documents and Settings\<username>\ ... - ...Application Data\<AppName> - Win XP (roaming): C:\Documents and Settings\<username>\Local ... - ...Settings\Application Data\<AppName> - Win 7 (not roaming): C:\\Users\<username>\AppData\Local\<AppName> - Win 7 (roaming): C:\\Users\<username>\AppData\Roaming\<AppName> - - For Unix, we follow the XDG spec and support $XDG_DATA_HOME. - That means, by default "~/.local/share/<AppName>". - """ - if WINDOWS: - const = roaming and "CSIDL_APPDATA" or "CSIDL_LOCAL_APPDATA" - path = os.path.join(os.path.normpath(_get_win_folder(const)), appname) - elif sys.platform == "darwin": - path = os.path.join( - expanduser('~/Library/Application Support/'), - appname, - ) - else: - path = os.path.join( - os.getenv('XDG_DATA_HOME', expanduser("~/.local/share")), - appname, - ) - - return path - - -def user_config_dir(appname, roaming=True): - """Return full path to the user-specific config dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "roaming" (boolean, default True) can be set False to not use the - Windows roaming appdata directory. That means that for users on a - Windows network setup for roaming profiles, this user data will be - sync'd on login. See - <http://technet.microsoft.com/en-us/library/cc766489(WS.10).aspx> - for a discussion of issues. - - Typical user data directories are: - macOS: same as user_data_dir - Unix: ~/.config/<AppName> - Win *: same as user_data_dir - - For Unix, we follow the XDG spec and support $XDG_CONFIG_HOME. - That means, by default "~/.config/<AppName>". - """ - if WINDOWS: - path = user_data_dir(appname, roaming=roaming) - elif sys.platform == "darwin": - path = user_data_dir(appname) - else: - path = os.getenv('XDG_CONFIG_HOME', expanduser("~/.config")) - path = os.path.join(path, appname) - - return path - - -# for the discussion regarding site_config_dirs locations -# see <https://github.com/pypa/pip/issues/1733> -def site_config_dirs(appname): - """Return a list of potential user-shared config dirs for this application. - - "appname" is the name of application. - - Typical user config directories are: - macOS: /Library/Application Support/<AppName>/ - Unix: /etc or $XDG_CONFIG_DIRS[i]/<AppName>/ for each value in - $XDG_CONFIG_DIRS - Win XP: C:\Documents and Settings\All Users\Application ... - ...Data\<AppName>\ - Vista: (Fail! "C:\ProgramData" is a hidden *system* directory - on Vista.) - Win 7: Hidden, but writeable on Win 7: - C:\ProgramData\<AppName>\ - """ - if WINDOWS: - path = os.path.normpath(_get_win_folder("CSIDL_COMMON_APPDATA")) - pathlist = [os.path.join(path, appname)] - elif sys.platform == 'darwin': - pathlist = [os.path.join('/Library/Application Support', appname)] - else: - # try looking in $XDG_CONFIG_DIRS - xdg_config_dirs = os.getenv('XDG_CONFIG_DIRS', '/etc/xdg') - if xdg_config_dirs: - pathlist = [ - os.path.join(expanduser(x), appname) - for x in xdg_config_dirs.split(os.pathsep) - ] - else: - pathlist = [] - - # always look in /etc directly as well - pathlist.append('/etc') - - return pathlist - - -# -- Windows support functions -- - -def _get_win_folder_from_registry(csidl_name): - """ - This is a fallback technique at best. I'm not sure if using the - registry for this guarantees us the correct answer for all CSIDL_* - names. - """ - import _winreg - - shell_folder_name = { - "CSIDL_APPDATA": "AppData", - "CSIDL_COMMON_APPDATA": "Common AppData", - "CSIDL_LOCAL_APPDATA": "Local AppData", - }[csidl_name] - - key = _winreg.OpenKey( - _winreg.HKEY_CURRENT_USER, - r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" - ) - directory, _type = _winreg.QueryValueEx(key, shell_folder_name) - return directory - - -def _get_win_folder_with_ctypes(csidl_name): - csidl_const = { - "CSIDL_APPDATA": 26, - "CSIDL_COMMON_APPDATA": 35, - "CSIDL_LOCAL_APPDATA": 28, - }[csidl_name] - - buf = ctypes.create_unicode_buffer(1024) - ctypes.windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf) - - # Downgrade to short path name if have highbit chars. See - # <http://bugs.activestate.com/show_bug.cgi?id=85099>. - has_high_char = False - for c in buf: - if ord(c) > 255: - has_high_char = True - break - if has_high_char: - buf2 = ctypes.create_unicode_buffer(1024) - if ctypes.windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024): - buf = buf2 - - return buf.value - -if WINDOWS: - try: - import ctypes - _get_win_folder = _get_win_folder_with_ctypes - except ImportError: - _get_win_folder = _get_win_folder_from_registry - - -def _win_path_to_bytes(path): - """Encode Windows paths to bytes. Only used on Python 2. - - Motivation is to be consistent with other operating systems where paths - are also returned as bytes. This avoids problems mixing bytes and Unicode - elsewhere in the codebase. For more details and discussion see - <https://github.com/pypa/pip/issues/3463>. - - If encoding using ASCII and MBCS fails, return the original Unicode path. - """ - for encoding in ('ASCII', 'MBCS'): - try: - return path.encode(encoding) - except (UnicodeEncodeError, LookupError): - pass - return path diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/build.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/build.py deleted file mode 100644 index fc65cfab..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/build.py +++ /dev/null @@ -1,42 +0,0 @@ -from __future__ import absolute_import - -import os.path -import tempfile - -from pip.utils import rmtree - - -class BuildDirectory(object): - - def __init__(self, name=None, delete=None): - # If we were not given an explicit directory, and we were not given an - # explicit delete option, then we'll default to deleting. - if name is None and delete is None: - delete = True - - if name is None: - # We realpath here because some systems have their default tmpdir - # symlinked to another directory. This tends to confuse build - # scripts, so we canonicalize the path by traversing potential - # symlinks here. - name = os.path.realpath(tempfile.mkdtemp(prefix="pip-build-")) - # If we were not given an explicit directory, and we were not given - # an explicit delete option, then we'll default to deleting. - if delete is None: - delete = True - - self.name = name - self.delete = delete - - def __repr__(self): - return "<{} {!r}>".format(self.__class__.__name__, self.name) - - def __enter__(self): - return self.name - - def __exit__(self, exc, value, tb): - self.cleanup() - - def cleanup(self): - if self.delete: - rmtree(self.name) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/deprecation.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/deprecation.py deleted file mode 100644 index c3f799e6..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/deprecation.py +++ /dev/null @@ -1,76 +0,0 @@ -""" -A module that implements tooling to enable easy warnings about deprecations. -""" -from __future__ import absolute_import - -import logging -import warnings - - -class PipDeprecationWarning(Warning): - pass - - -class Pending(object): - pass - - -class RemovedInPip10Warning(PipDeprecationWarning): - pass - - -class RemovedInPip11Warning(PipDeprecationWarning, Pending): - pass - - -class Python26DeprecationWarning(PipDeprecationWarning): - pass - - -# Warnings <-> Logging Integration - - -_warnings_showwarning = None - - -def _showwarning(message, category, filename, lineno, file=None, line=None): - if file is not None: - if _warnings_showwarning is not None: - _warnings_showwarning( - message, category, filename, lineno, file, line, - ) - else: - if issubclass(category, PipDeprecationWarning): - # We use a specially named logger which will handle all of the - # deprecation messages for pip. - logger = logging.getLogger("pip.deprecations") - - # This is purposely using the % formatter here instead of letting - # the logging module handle the interpolation. This is because we - # want it to appear as if someone typed this entire message out. - log_message = "DEPRECATION: %s" % message - - # PipDeprecationWarnings that are Pending still have at least 2 - # versions to go until they are removed so they can just be - # warnings. Otherwise, they will be removed in the very next - # version of pip. We want these to be more obvious so we use the - # ERROR logging level. - if issubclass(category, Pending): - logger.warning(log_message) - else: - logger.error(log_message) - else: - _warnings_showwarning( - message, category, filename, lineno, file, line, - ) - - -def install_warning_logger(): - # Enable our Deprecation Warnings - warnings.simplefilter("default", PipDeprecationWarning, append=True) - - global _warnings_showwarning - - if _warnings_showwarning is None: - _warnings_showwarning = warnings.showwarning - warnings.showwarning = _showwarning diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/encoding.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/encoding.py deleted file mode 100644 index 24831686..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/encoding.py +++ /dev/null @@ -1,31 +0,0 @@ -import codecs -import locale -import re - - -BOMS = [ - (codecs.BOM_UTF8, 'utf8'), - (codecs.BOM_UTF16, 'utf16'), - (codecs.BOM_UTF16_BE, 'utf16-be'), - (codecs.BOM_UTF16_LE, 'utf16-le'), - (codecs.BOM_UTF32, 'utf32'), - (codecs.BOM_UTF32_BE, 'utf32-be'), - (codecs.BOM_UTF32_LE, 'utf32-le'), -] - -ENCODING_RE = re.compile(b'coding[:=]\s*([-\w.]+)') - - -def auto_decode(data): - """Check a bytes string for a BOM to correctly detect the encoding - - Fallback to locale.getpreferredencoding(False) like open() on Python3""" - for bom, encoding in BOMS: - if data.startswith(bom): - return data[len(bom):].decode(encoding) - # Lets check the first two lines as in PEP263 - for line in data.split(b'\n')[:2]: - if line[0:1] == b'#' and ENCODING_RE.search(line): - encoding = ENCODING_RE.search(line).groups()[0].decode('ascii') - return data.decode(encoding) - return data.decode(locale.getpreferredencoding(False)) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/filesystem.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/filesystem.py deleted file mode 100644 index 25ad5166..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/filesystem.py +++ /dev/null @@ -1,28 +0,0 @@ -import os -import os.path - -from pip.compat import get_path_uid - - -def check_path_owner(path): - # If we don't have a way to check the effective uid of this process, then - # we'll just assume that we own the directory. - if not hasattr(os, "geteuid"): - return True - - previous = None - while path != previous: - if os.path.lexists(path): - # Check if path is writable by current user. - if os.geteuid() == 0: - # Special handling for root user in order to handle properly - # cases where users use sudo without -H flag. - try: - path_uid = get_path_uid(path) - except OSError: - return False - return path_uid == 0 - else: - return os.access(path, os.W_OK) - else: - previous, path = path, os.path.dirname(path) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/glibc.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/glibc.py deleted file mode 100644 index 7847885c..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/glibc.py +++ /dev/null @@ -1,81 +0,0 @@ -from __future__ import absolute_import - -import re -import ctypes -import platform -import warnings - - -def glibc_version_string(): - "Returns glibc version string, or None if not using glibc." - - # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen - # manpage says, "If filename is NULL, then the returned handle is for the - # main program". This way we can let the linker do the work to figure out - # which libc our process is actually using. - process_namespace = ctypes.CDLL(None) - try: - gnu_get_libc_version = process_namespace.gnu_get_libc_version - except AttributeError: - # Symbol doesn't exist -> therefore, we are not linked to - # glibc. - return None - - # Call gnu_get_libc_version, which returns a string like "2.5" - gnu_get_libc_version.restype = ctypes.c_char_p - version_str = gnu_get_libc_version() - # py2 / py3 compatibility: - if not isinstance(version_str, str): - version_str = version_str.decode("ascii") - - return version_str - - -# Separated out from have_compatible_glibc for easier unit testing -def check_glibc_version(version_str, required_major, minimum_minor): - # Parse string and check against requested version. - # - # We use a regexp instead of str.split because we want to discard any - # random junk that might come after the minor version -- this might happen - # in patched/forked versions of glibc (e.g. Linaro's version of glibc - # uses version strings like "2.20-2014.11"). See gh-3588. - m = re.match(r"(?P<major>[0-9]+)\.(?P<minor>[0-9]+)", version_str) - if not m: - warnings.warn("Expected glibc version with 2 components major.minor," - " got: %s" % version_str, RuntimeWarning) - return False - return (int(m.group("major")) == required_major and - int(m.group("minor")) >= minimum_minor) - - -def have_compatible_glibc(required_major, minimum_minor): - version_str = glibc_version_string() - if version_str is None: - return False - return check_glibc_version(version_str, required_major, minimum_minor) - - -# platform.libc_ver regularly returns completely nonsensical glibc -# versions. E.g. on my computer, platform says: -# -# ~$ python2.7 -c 'import platform; print(platform.libc_ver())' -# ('glibc', '2.7') -# ~$ python3.5 -c 'import platform; print(platform.libc_ver())' -# ('glibc', '2.9') -# -# But the truth is: -# -# ~$ ldd --version -# ldd (Debian GLIBC 2.22-11) 2.22 -# -# This is unfortunate, because it means that the linehaul data on libc -# versions that was generated by pip 8.1.2 and earlier is useless and -# misleading. Solution: instead of using platform, use our code that actually -# works. -def libc_ver(): - glibc_version = glibc_version_string() - if glibc_version is None: - # For non-glibc platforms, fall back on platform.libc_ver - return platform.libc_ver() - else: - return ("glibc", glibc_version) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/hashes.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/hashes.py deleted file mode 100644 index 96029700..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/hashes.py +++ /dev/null @@ -1,92 +0,0 @@ -from __future__ import absolute_import - -import hashlib - -from pip.exceptions import HashMismatch, HashMissing, InstallationError -from pip.utils import read_chunks -from pip._vendor.six import iteritems, iterkeys, itervalues - - -# The recommended hash algo of the moment. Change this whenever the state of -# the art changes; it won't hurt backward compatibility. -FAVORITE_HASH = 'sha256' - - -# Names of hashlib algorithms allowed by the --hash option and ``pip hash`` -# Currently, those are the ones at least as collision-resistant as sha256. -STRONG_HASHES = ['sha256', 'sha384', 'sha512'] - - -class Hashes(object): - """A wrapper that builds multiple hashes at once and checks them against - known-good values - - """ - def __init__(self, hashes=None): - """ - :param hashes: A dict of algorithm names pointing to lists of allowed - hex digests - """ - self._allowed = {} if hashes is None else hashes - - def check_against_chunks(self, chunks): - """Check good hashes against ones built from iterable of chunks of - data. - - Raise HashMismatch if none match. - - """ - gots = {} - for hash_name in iterkeys(self._allowed): - try: - gots[hash_name] = hashlib.new(hash_name) - except (ValueError, TypeError): - raise InstallationError('Unknown hash name: %s' % hash_name) - - for chunk in chunks: - for hash in itervalues(gots): - hash.update(chunk) - - for hash_name, got in iteritems(gots): - if got.hexdigest() in self._allowed[hash_name]: - return - self._raise(gots) - - def _raise(self, gots): - raise HashMismatch(self._allowed, gots) - - def check_against_file(self, file): - """Check good hashes against a file-like object - - Raise HashMismatch if none match. - - """ - return self.check_against_chunks(read_chunks(file)) - - def check_against_path(self, path): - with open(path, 'rb') as file: - return self.check_against_file(file) - - def __nonzero__(self): - """Return whether I know any known-good hashes.""" - return bool(self._allowed) - - def __bool__(self): - return self.__nonzero__() - - -class MissingHashes(Hashes): - """A workalike for Hashes used when we're missing a hash for a requirement - - It computes the actual hash of the requirement and raises a HashMissing - exception showing it to the user. - - """ - def __init__(self): - """Don't offer the ``hashes`` kwarg.""" - # Pass our favorite hash in to generate a "gotten hash". With the - # empty list, it will never match, so an error will always raise. - super(MissingHashes, self).__init__(hashes={FAVORITE_HASH: []}) - - def _raise(self, gots): - raise HashMissing(gots[FAVORITE_HASH].hexdigest()) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/logging.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/logging.py deleted file mode 100644 index 1c1053ab..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/logging.py +++ /dev/null @@ -1,130 +0,0 @@ -from __future__ import absolute_import - -import contextlib -import logging -import logging.handlers -import os - -try: - import threading -except ImportError: - import dummy_threading as threading - -from pip.compat import WINDOWS -from pip.utils import ensure_dir - -try: - from pip._vendor import colorama -# Lots of different errors can come from this, including SystemError and -# ImportError. -except Exception: - colorama = None - - -_log_state = threading.local() -_log_state.indentation = 0 - - -@contextlib.contextmanager -def indent_log(num=2): - """ - A context manager which will cause the log output to be indented for any - log messages emitted inside it. - """ - _log_state.indentation += num - try: - yield - finally: - _log_state.indentation -= num - - -def get_indentation(): - return getattr(_log_state, 'indentation', 0) - - -class IndentingFormatter(logging.Formatter): - - def format(self, record): - """ - Calls the standard formatter, but will indent all of the log messages - by our current indentation level. - """ - formatted = logging.Formatter.format(self, record) - formatted = "".join([ - (" " * get_indentation()) + line - for line in formatted.splitlines(True) - ]) - return formatted - - -def _color_wrap(*colors): - def wrapped(inp): - return "".join(list(colors) + [inp, colorama.Style.RESET_ALL]) - return wrapped - - -class ColorizedStreamHandler(logging.StreamHandler): - - # Don't build up a list of colors if we don't have colorama - if colorama: - COLORS = [ - # This needs to be in order from highest logging level to lowest. - (logging.ERROR, _color_wrap(colorama.Fore.RED)), - (logging.WARNING, _color_wrap(colorama.Fore.YELLOW)), - ] - else: - COLORS = [] - - def __init__(self, stream=None): - logging.StreamHandler.__init__(self, stream) - - if WINDOWS and colorama: - self.stream = colorama.AnsiToWin32(self.stream) - - def should_color(self): - # Don't colorize things if we do not have colorama - if not colorama: - return False - - real_stream = ( - self.stream if not isinstance(self.stream, colorama.AnsiToWin32) - else self.stream.wrapped - ) - - # If the stream is a tty we should color it - if hasattr(real_stream, "isatty") and real_stream.isatty(): - return True - - # If we have an ASNI term we should color it - if os.environ.get("TERM") == "ANSI": - return True - - # If anything else we should not color it - return False - - def format(self, record): - msg = logging.StreamHandler.format(self, record) - - if self.should_color(): - for level, color in self.COLORS: - if record.levelno >= level: - msg = color(msg) - break - - return msg - - -class BetterRotatingFileHandler(logging.handlers.RotatingFileHandler): - - def _open(self): - ensure_dir(os.path.dirname(self.baseFilename)) - return logging.handlers.RotatingFileHandler._open(self) - - -class MaxLevelFilter(logging.Filter): - - def __init__(self, level): - self.level = level - - def filter(self, record): - return record.levelno < self.level diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/outdated.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/outdated.py deleted file mode 100644 index 2164cc3c..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/outdated.py +++ /dev/null @@ -1,162 +0,0 @@ -from __future__ import absolute_import - -import datetime -import json -import logging -import os.path -import sys - -from pip._vendor import lockfile -from pip._vendor.packaging import version as packaging_version - -from pip.compat import total_seconds, WINDOWS -from pip.models import PyPI -from pip.locations import USER_CACHE_DIR, running_under_virtualenv -from pip.utils import ensure_dir, get_installed_version -from pip.utils.filesystem import check_path_owner - - -SELFCHECK_DATE_FMT = "%Y-%m-%dT%H:%M:%SZ" - - -logger = logging.getLogger(__name__) - - -class VirtualenvSelfCheckState(object): - def __init__(self): - self.statefile_path = os.path.join(sys.prefix, "pip-selfcheck.json") - - # Load the existing state - try: - with open(self.statefile_path) as statefile: - self.state = json.load(statefile) - except (IOError, ValueError): - self.state = {} - - def save(self, pypi_version, current_time): - # Attempt to write out our version check file - with open(self.statefile_path, "w") as statefile: - json.dump( - { - "last_check": current_time.strftime(SELFCHECK_DATE_FMT), - "pypi_version": pypi_version, - }, - statefile, - sort_keys=True, - separators=(",", ":") - ) - - -class GlobalSelfCheckState(object): - def __init__(self): - self.statefile_path = os.path.join(USER_CACHE_DIR, "selfcheck.json") - - # Load the existing state - try: - with open(self.statefile_path) as statefile: - self.state = json.load(statefile)[sys.prefix] - except (IOError, ValueError, KeyError): - self.state = {} - - def save(self, pypi_version, current_time): - # Check to make sure that we own the directory - if not check_path_owner(os.path.dirname(self.statefile_path)): - return - - # Now that we've ensured the directory is owned by this user, we'll go - # ahead and make sure that all our directories are created. - ensure_dir(os.path.dirname(self.statefile_path)) - - # Attempt to write out our version check file - with lockfile.LockFile(self.statefile_path): - if os.path.exists(self.statefile_path): - with open(self.statefile_path) as statefile: - state = json.load(statefile) - else: - state = {} - - state[sys.prefix] = { - "last_check": current_time.strftime(SELFCHECK_DATE_FMT), - "pypi_version": pypi_version, - } - - with open(self.statefile_path, "w") as statefile: - json.dump(state, statefile, sort_keys=True, - separators=(",", ":")) - - -def load_selfcheck_statefile(): - if running_under_virtualenv(): - return VirtualenvSelfCheckState() - else: - return GlobalSelfCheckState() - - -def pip_version_check(session): - """Check for an update for pip. - - Limit the frequency of checks to once per week. State is stored either in - the active virtualenv or in the user's USER_CACHE_DIR keyed off the prefix - of the pip script path. - """ - installed_version = get_installed_version("pip") - if installed_version is None: - return - - pip_version = packaging_version.parse(installed_version) - pypi_version = None - - try: - state = load_selfcheck_statefile() - - current_time = datetime.datetime.utcnow() - # Determine if we need to refresh the state - if "last_check" in state.state and "pypi_version" in state.state: - last_check = datetime.datetime.strptime( - state.state["last_check"], - SELFCHECK_DATE_FMT - ) - if total_seconds(current_time - last_check) < 7 * 24 * 60 * 60: - pypi_version = state.state["pypi_version"] - - # Refresh the version if we need to or just see if we need to warn - if pypi_version is None: - resp = session.get( - PyPI.pip_json_url, - headers={"Accept": "application/json"}, - ) - resp.raise_for_status() - pypi_version = [ - v for v in sorted( - list(resp.json()["releases"]), - key=packaging_version.parse, - ) - if not packaging_version.parse(v).is_prerelease - ][-1] - - # save that we've performed a check - state.save(pypi_version, current_time) - - remote_version = packaging_version.parse(pypi_version) - - # Determine if our pypi_version is older - if (pip_version < remote_version and - pip_version.base_version != remote_version.base_version): - # Advise "python -m pip" on Windows to avoid issues - # with overwriting pip.exe. - if WINDOWS: - pip_cmd = "python -m pip" - else: - pip_cmd = "pip" - logger.warning( - "You are using pip version %s, however version %s is " - "available.\nYou should consider upgrading via the " - "'%s install --upgrade pip' command.", - pip_version, pypi_version, pip_cmd - ) - - except Exception: - logger.debug( - "There was an error checking the latest version of pip", - exc_info=True, - ) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/packaging.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/packaging.py deleted file mode 100644 index e93b20d1..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/packaging.py +++ /dev/null @@ -1,63 +0,0 @@ -from __future__ import absolute_import - -from email.parser import FeedParser - -import logging -import sys - -from pip._vendor.packaging import specifiers -from pip._vendor.packaging import version -from pip._vendor import pkg_resources - -from pip import exceptions - -logger = logging.getLogger(__name__) - - -def check_requires_python(requires_python): - """ - Check if the python version in use match the `requires_python` specifier. - - Returns `True` if the version of python in use matches the requirement. - Returns `False` if the version of python in use does not matches the - requirement. - - Raises an InvalidSpecifier if `requires_python` have an invalid format. - """ - if requires_python is None: - # The package provides no information - return True - requires_python_specifier = specifiers.SpecifierSet(requires_python) - - # We only use major.minor.micro - python_version = version.parse('.'.join(map(str, sys.version_info[:3]))) - return python_version in requires_python_specifier - - -def get_metadata(dist): - if (isinstance(dist, pkg_resources.DistInfoDistribution) and - dist.has_metadata('METADATA')): - return dist.get_metadata('METADATA') - elif dist.has_metadata('PKG-INFO'): - return dist.get_metadata('PKG-INFO') - - -def check_dist_requires_python(dist): - metadata = get_metadata(dist) - feed_parser = FeedParser() - feed_parser.feed(metadata) - pkg_info_dict = feed_parser.close() - requires_python = pkg_info_dict.get('Requires-Python') - try: - if not check_requires_python(requires_python): - raise exceptions.UnsupportedPythonVersion( - "%s requires Python '%s' but the running Python is %s" % ( - dist.project_name, - requires_python, - '.'.join(map(str, sys.version_info[:3])),) - ) - except specifiers.InvalidSpecifier as e: - logger.warning( - "Package %s has an invalid Requires-Python entry %s - %s" % ( - dist.project_name, requires_python, e)) - return diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/setuptools_build.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/setuptools_build.py deleted file mode 100644 index 03973e97..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/setuptools_build.py +++ /dev/null @@ -1,8 +0,0 @@ -# Shim to wrap setup.py invocation with setuptools -SETUPTOOLS_SHIM = ( - "import setuptools, tokenize;__file__=%r;" - "f=getattr(tokenize, 'open', open)(__file__);" - "code=f.read().replace('\\r\\n', '\\n');" - "f.close();" - "exec(compile(code, __file__, 'exec'))" -) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/ui.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/ui.py deleted file mode 100644 index bba73e3b..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/utils/ui.py +++ /dev/null @@ -1,344 +0,0 @@ -from __future__ import absolute_import -from __future__ import division - -import itertools -import sys -from signal import signal, SIGINT, default_int_handler -import time -import contextlib -import logging - -from pip.compat import WINDOWS -from pip.utils import format_size -from pip.utils.logging import get_indentation -from pip._vendor import six -from pip._vendor.progress.bar import Bar, IncrementalBar -from pip._vendor.progress.helpers import (WritelnMixin, - HIDE_CURSOR, SHOW_CURSOR) -from pip._vendor.progress.spinner import Spinner - -try: - from pip._vendor import colorama -# Lots of different errors can come from this, including SystemError and -# ImportError. -except Exception: - colorama = None - -logger = logging.getLogger(__name__) - - -def _select_progress_class(preferred, fallback): - encoding = getattr(preferred.file, "encoding", None) - - # If we don't know what encoding this file is in, then we'll just assume - # that it doesn't support unicode and use the ASCII bar. - if not encoding: - return fallback - - # Collect all of the possible characters we want to use with the preferred - # bar. - characters = [ - getattr(preferred, "empty_fill", six.text_type()), - getattr(preferred, "fill", six.text_type()), - ] - characters += list(getattr(preferred, "phases", [])) - - # Try to decode the characters we're using for the bar using the encoding - # of the given file, if this works then we'll assume that we can use the - # fancier bar and if not we'll fall back to the plaintext bar. - try: - six.text_type().join(characters).encode(encoding) - except UnicodeEncodeError: - return fallback - else: - return preferred - - -_BaseBar = _select_progress_class(IncrementalBar, Bar) - - -class InterruptibleMixin(object): - """ - Helper to ensure that self.finish() gets called on keyboard interrupt. - - This allows downloads to be interrupted without leaving temporary state - (like hidden cursors) behind. - - This class is similar to the progress library's existing SigIntMixin - helper, but as of version 1.2, that helper has the following problems: - - 1. It calls sys.exit(). - 2. It discards the existing SIGINT handler completely. - 3. It leaves its own handler in place even after an uninterrupted finish, - which will have unexpected delayed effects if the user triggers an - unrelated keyboard interrupt some time after a progress-displaying - download has already completed, for example. - """ - - def __init__(self, *args, **kwargs): - """ - Save the original SIGINT handler for later. - """ - super(InterruptibleMixin, self).__init__(*args, **kwargs) - - self.original_handler = signal(SIGINT, self.handle_sigint) - - # If signal() returns None, the previous handler was not installed from - # Python, and we cannot restore it. This probably should not happen, - # but if it does, we must restore something sensible instead, at least. - # The least bad option should be Python's default SIGINT handler, which - # just raises KeyboardInterrupt. - if self.original_handler is None: - self.original_handler = default_int_handler - - def finish(self): - """ - Restore the original SIGINT handler after finishing. - - This should happen regardless of whether the progress display finishes - normally, or gets interrupted. - """ - super(InterruptibleMixin, self).finish() - signal(SIGINT, self.original_handler) - - def handle_sigint(self, signum, frame): - """ - Call self.finish() before delegating to the original SIGINT handler. - - This handler should only be in place while the progress display is - active. - """ - self.finish() - self.original_handler(signum, frame) - - -class DownloadProgressMixin(object): - - def __init__(self, *args, **kwargs): - super(DownloadProgressMixin, self).__init__(*args, **kwargs) - self.message = (" " * (get_indentation() + 2)) + self.message - - @property - def downloaded(self): - return format_size(self.index) - - @property - def download_speed(self): - # Avoid zero division errors... - if self.avg == 0.0: - return "..." - return format_size(1 / self.avg) + "/s" - - @property - def pretty_eta(self): - if self.eta: - return "eta %s" % self.eta_td - return "" - - def iter(self, it, n=1): - for x in it: - yield x - self.next(n) - self.finish() - - -class WindowsMixin(object): - - def __init__(self, *args, **kwargs): - # The Windows terminal does not support the hide/show cursor ANSI codes - # even with colorama. So we'll ensure that hide_cursor is False on - # Windows. - # This call neds to go before the super() call, so that hide_cursor - # is set in time. The base progress bar class writes the "hide cursor" - # code to the terminal in its init, so if we don't set this soon - # enough, we get a "hide" with no corresponding "show"... - if WINDOWS and self.hide_cursor: - self.hide_cursor = False - - super(WindowsMixin, self).__init__(*args, **kwargs) - - # Check if we are running on Windows and we have the colorama module, - # if we do then wrap our file with it. - if WINDOWS and colorama: - self.file = colorama.AnsiToWin32(self.file) - # The progress code expects to be able to call self.file.isatty() - # but the colorama.AnsiToWin32() object doesn't have that, so we'll - # add it. - self.file.isatty = lambda: self.file.wrapped.isatty() - # The progress code expects to be able to call self.file.flush() - # but the colorama.AnsiToWin32() object doesn't have that, so we'll - # add it. - self.file.flush = lambda: self.file.wrapped.flush() - - -class DownloadProgressBar(WindowsMixin, InterruptibleMixin, - DownloadProgressMixin, _BaseBar): - - file = sys.stdout - message = "%(percent)d%%" - suffix = "%(downloaded)s %(download_speed)s %(pretty_eta)s" - - -class DownloadProgressSpinner(WindowsMixin, InterruptibleMixin, - DownloadProgressMixin, WritelnMixin, Spinner): - - file = sys.stdout - suffix = "%(downloaded)s %(download_speed)s" - - def next_phase(self): - if not hasattr(self, "_phaser"): - self._phaser = itertools.cycle(self.phases) - return next(self._phaser) - - def update(self): - message = self.message % self - phase = self.next_phase() - suffix = self.suffix % self - line = ''.join([ - message, - " " if message else "", - phase, - " " if suffix else "", - suffix, - ]) - - self.writeln(line) - - -################################################################ -# Generic "something is happening" spinners -# -# We don't even try using progress.spinner.Spinner here because it's actually -# simpler to reimplement from scratch than to coerce their code into doing -# what we need. -################################################################ - -@contextlib.contextmanager -def hidden_cursor(file): - # The Windows terminal does not support the hide/show cursor ANSI codes, - # even via colorama. So don't even try. - if WINDOWS: - yield - # We don't want to clutter the output with control characters if we're - # writing to a file, or if the user is running with --quiet. - # See https://github.com/pypa/pip/issues/3418 - elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO: - yield - else: - file.write(HIDE_CURSOR) - try: - yield - finally: - file.write(SHOW_CURSOR) - - -class RateLimiter(object): - def __init__(self, min_update_interval_seconds): - self._min_update_interval_seconds = min_update_interval_seconds - self._last_update = 0 - - def ready(self): - now = time.time() - delta = now - self._last_update - return delta >= self._min_update_interval_seconds - - def reset(self): - self._last_update = time.time() - - -class InteractiveSpinner(object): - def __init__(self, message, file=None, spin_chars="-\\|/", - # Empirically, 8 updates/second looks nice - min_update_interval_seconds=0.125): - self._message = message - if file is None: - file = sys.stdout - self._file = file - self._rate_limiter = RateLimiter(min_update_interval_seconds) - self._finished = False - - self._spin_cycle = itertools.cycle(spin_chars) - - self._file.write(" " * get_indentation() + self._message + " ... ") - self._width = 0 - - def _write(self, status): - assert not self._finished - # Erase what we wrote before by backspacing to the beginning, writing - # spaces to overwrite the old text, and then backspacing again - backup = "\b" * self._width - self._file.write(backup + " " * self._width + backup) - # Now we have a blank slate to add our status - self._file.write(status) - self._width = len(status) - self._file.flush() - self._rate_limiter.reset() - - def spin(self): - if self._finished: - return - if not self._rate_limiter.ready(): - return - self._write(next(self._spin_cycle)) - - def finish(self, final_status): - if self._finished: - return - self._write(final_status) - self._file.write("\n") - self._file.flush() - self._finished = True - - -# Used for dumb terminals, non-interactive installs (no tty), etc. -# We still print updates occasionally (once every 60 seconds by default) to -# act as a keep-alive for systems like Travis-CI that take lack-of-output as -# an indication that a task has frozen. -class NonInteractiveSpinner(object): - def __init__(self, message, min_update_interval_seconds=60): - self._message = message - self._finished = False - self._rate_limiter = RateLimiter(min_update_interval_seconds) - self._update("started") - - def _update(self, status): - assert not self._finished - self._rate_limiter.reset() - logger.info("%s: %s", self._message, status) - - def spin(self): - if self._finished: - return - if not self._rate_limiter.ready(): - return - self._update("still running...") - - def finish(self, final_status): - if self._finished: - return - self._update("finished with status '%s'" % (final_status,)) - self._finished = True - - -@contextlib.contextmanager -def open_spinner(message): - # Interactive spinner goes directly to sys.stdout rather than being routed - # through the logging system, but it acts like it has level INFO, - # i.e. it's only displayed if we're at level INFO or better. - # Non-interactive spinner goes through the logging system, so it is always - # in sync with logging configuration. - if sys.stdout.isatty() and logger.getEffectiveLevel() <= logging.INFO: - spinner = InteractiveSpinner(message) - else: - spinner = NonInteractiveSpinner(message) - try: - with hidden_cursor(sys.stdout): - yield spinner - except KeyboardInterrupt: - spinner.finish("canceled") - raise - except Exception: - spinner.finish("error") - raise - else: - spinner.finish("done") diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__init__.py deleted file mode 100644 index 8d3dbb27..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__init__.py +++ /dev/null @@ -1,366 +0,0 @@ -"""Handles all VCS (version control) support""" -from __future__ import absolute_import - -import errno -import logging -import os -import shutil -import sys - -from pip._vendor.six.moves.urllib import parse as urllib_parse - -from pip.exceptions import BadCommand -from pip.utils import (display_path, backup_dir, call_subprocess, - rmtree, ask_path_exists) - - -__all__ = ['vcs', 'get_src_requirement'] - - -logger = logging.getLogger(__name__) - - -class VcsSupport(object): - _registry = {} - schemes = ['ssh', 'git', 'hg', 'bzr', 'sftp', 'svn'] - - def __init__(self): - # Register more schemes with urlparse for various version control - # systems - urllib_parse.uses_netloc.extend(self.schemes) - # Python >= 2.7.4, 3.3 doesn't have uses_fragment - if getattr(urllib_parse, 'uses_fragment', None): - urllib_parse.uses_fragment.extend(self.schemes) - super(VcsSupport, self).__init__() - - def __iter__(self): - return self._registry.__iter__() - - @property - def backends(self): - return list(self._registry.values()) - - @property - def dirnames(self): - return [backend.dirname for backend in self.backends] - - @property - def all_schemes(self): - schemes = [] - for backend in self.backends: - schemes.extend(backend.schemes) - return schemes - - def register(self, cls): - if not hasattr(cls, 'name'): - logger.warning('Cannot register VCS %s', cls.__name__) - return - if cls.name not in self._registry: - self._registry[cls.name] = cls - logger.debug('Registered VCS backend: %s', cls.name) - - def unregister(self, cls=None, name=None): - if name in self._registry: - del self._registry[name] - elif cls in self._registry.values(): - del self._registry[cls.name] - else: - logger.warning('Cannot unregister because no class or name given') - - def get_backend_name(self, location): - """ - Return the name of the version control backend if found at given - location, e.g. vcs.get_backend_name('/path/to/vcs/checkout') - """ - for vc_type in self._registry.values(): - if vc_type.controls_location(location): - logger.debug('Determine that %s uses VCS: %s', - location, vc_type.name) - return vc_type.name - return None - - def get_backend(self, name): - name = name.lower() - if name in self._registry: - return self._registry[name] - - def get_backend_from_location(self, location): - vc_type = self.get_backend_name(location) - if vc_type: - return self.get_backend(vc_type) - return None - - -vcs = VcsSupport() - - -class VersionControl(object): - name = '' - dirname = '' - # List of supported schemes for this Version Control - schemes = () - - def __init__(self, url=None, *args, **kwargs): - self.url = url - super(VersionControl, self).__init__(*args, **kwargs) - - def _is_local_repository(self, repo): - """ - posix absolute paths start with os.path.sep, - win32 ones start with drive (like c:\\folder) - """ - drive, tail = os.path.splitdrive(repo) - return repo.startswith(os.path.sep) or drive - - # See issue #1083 for why this method was introduced: - # https://github.com/pypa/pip/issues/1083 - def translate_egg_surname(self, surname): - # For example, Django has branches of the form "stable/1.7.x". - return surname.replace('/', '_') - - def export(self, location): - """ - Export the repository at the url to the destination location - i.e. only download the files, without vcs informations - """ - raise NotImplementedError - - def get_url_rev(self): - """ - Returns the correct repository URL and revision by parsing the given - repository URL - """ - error_message = ( - "Sorry, '%s' is a malformed VCS url. " - "The format is <vcs>+<protocol>://<url>, " - "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp" - ) - assert '+' in self.url, error_message % self.url - url = self.url.split('+', 1)[1] - scheme, netloc, path, query, frag = urllib_parse.urlsplit(url) - rev = None - if '@' in path: - path, rev = path.rsplit('@', 1) - url = urllib_parse.urlunsplit((scheme, netloc, path, query, '')) - return url, rev - - def get_info(self, location): - """ - Returns (url, revision), where both are strings - """ - assert not location.rstrip('/').endswith(self.dirname), \ - 'Bad directory: %s' % location - return self.get_url(location), self.get_revision(location) - - def normalize_url(self, url): - """ - Normalize a URL for comparison by unquoting it and removing any - trailing slash. - """ - return urllib_parse.unquote(url).rstrip('/') - - def compare_urls(self, url1, url2): - """ - Compare two repo URLs for identity, ignoring incidental differences. - """ - return (self.normalize_url(url1) == self.normalize_url(url2)) - - def obtain(self, dest): - """ - Called when installing or updating an editable package, takes the - source path of the checkout. - """ - raise NotImplementedError - - def switch(self, dest, url, rev_options): - """ - Switch the repo at ``dest`` to point to ``URL``. - """ - raise NotImplementedError - - def update(self, dest, rev_options): - """ - Update an already-existing repo to the given ``rev_options``. - """ - raise NotImplementedError - - def check_version(self, dest, rev_options): - """ - Return True if the version is identical to what exists and - doesn't need to be updated. - """ - raise NotImplementedError - - def check_destination(self, dest, url, rev_options, rev_display): - """ - Prepare a location to receive a checkout/clone. - - Return True if the location is ready for (and requires) a - checkout/clone, False otherwise. - """ - checkout = True - prompt = False - if os.path.exists(dest): - checkout = False - if os.path.exists(os.path.join(dest, self.dirname)): - existing_url = self.get_url(dest) - if self.compare_urls(existing_url, url): - logger.debug( - '%s in %s exists, and has correct URL (%s)', - self.repo_name.title(), - display_path(dest), - url, - ) - if not self.check_version(dest, rev_options): - logger.info( - 'Updating %s %s%s', - display_path(dest), - self.repo_name, - rev_display, - ) - self.update(dest, rev_options) - else: - logger.info( - 'Skipping because already up-to-date.') - else: - logger.warning( - '%s %s in %s exists with URL %s', - self.name, - self.repo_name, - display_path(dest), - existing_url, - ) - prompt = ('(s)witch, (i)gnore, (w)ipe, (b)ackup ', - ('s', 'i', 'w', 'b')) - else: - logger.warning( - 'Directory %s already exists, and is not a %s %s.', - dest, - self.name, - self.repo_name, - ) - prompt = ('(i)gnore, (w)ipe, (b)ackup ', ('i', 'w', 'b')) - if prompt: - logger.warning( - 'The plan is to install the %s repository %s', - self.name, - url, - ) - response = ask_path_exists('What to do? %s' % prompt[0], - prompt[1]) - - if response == 's': - logger.info( - 'Switching %s %s to %s%s', - self.repo_name, - display_path(dest), - url, - rev_display, - ) - self.switch(dest, url, rev_options) - elif response == 'i': - # do nothing - pass - elif response == 'w': - logger.warning('Deleting %s', display_path(dest)) - rmtree(dest) - checkout = True - elif response == 'b': - dest_dir = backup_dir(dest) - logger.warning( - 'Backing up %s to %s', display_path(dest), dest_dir, - ) - shutil.move(dest, dest_dir) - checkout = True - elif response == 'a': - sys.exit(-1) - return checkout - - def unpack(self, location): - """ - Clean up current location and download the url repository - (and vcs infos) into location - """ - if os.path.exists(location): - rmtree(location) - self.obtain(location) - - def get_src_requirement(self, dist, location): - """ - Return a string representing the requirement needed to - redownload the files currently present in location, something - like: - {repository_url}@{revision}#egg={project_name}-{version_identifier} - """ - raise NotImplementedError - - def get_url(self, location): - """ - Return the url used at location - Used in get_info or check_destination - """ - raise NotImplementedError - - def get_revision(self, location): - """ - Return the current revision of the files at location - Used in get_info - """ - raise NotImplementedError - - def run_command(self, cmd, show_stdout=True, cwd=None, - on_returncode='raise', - command_desc=None, - extra_environ=None, spinner=None): - """ - Run a VCS subcommand - This is simply a wrapper around call_subprocess that adds the VCS - command name, and checks that the VCS is available - """ - cmd = [self.name] + cmd - try: - return call_subprocess(cmd, show_stdout, cwd, - on_returncode, - command_desc, extra_environ, - spinner) - except OSError as e: - # errno.ENOENT = no such file or directory - # In other words, the VCS executable isn't available - if e.errno == errno.ENOENT: - raise BadCommand('Cannot find command %r' % self.name) - else: - raise # re-raise exception if a different error occurred - - @classmethod - def controls_location(cls, location): - """ - Check if a location is controlled by the vcs. - It is meant to be overridden to implement smarter detection - mechanisms for specific vcs. - """ - logger.debug('Checking in %s for %s (%s)...', - location, cls.dirname, cls.name) - path = os.path.join(location, cls.dirname) - return os.path.exists(path) - - -def get_src_requirement(dist, location): - version_control = vcs.get_backend_from_location(location) - if version_control: - try: - return version_control().get_src_requirement(dist, - location) - except BadCommand: - logger.warning( - 'cannot determine version of editable source in %s ' - '(%s command not found in path)', - location, - version_control.name, - ) - return dist.as_requirement() - logger.warning( - 'cannot determine version of editable source in %s (is not SVN ' - 'checkout, Git clone, Mercurial clone or Bazaar branch)', - location, - ) - return dist.as_requirement() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 8af1c5ac..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/bazaar.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/bazaar.cpython-36.pyc deleted file mode 100644 index 3598e9bb..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/bazaar.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/git.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/git.cpython-36.pyc deleted file mode 100644 index 0fb6aad3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/git.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/mercurial.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/mercurial.cpython-36.pyc deleted file mode 100644 index 035c3747..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/mercurial.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/subversion.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/subversion.cpython-36.pyc deleted file mode 100644 index 4670d6b3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/__pycache__/subversion.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/bazaar.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/bazaar.py deleted file mode 100644 index 0f095841..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/bazaar.py +++ /dev/null @@ -1,116 +0,0 @@ -from __future__ import absolute_import - -import logging -import os -import tempfile - -# TODO: Get this into six.moves.urllib.parse -try: - from urllib import parse as urllib_parse -except ImportError: - import urlparse as urllib_parse - -from pip.utils import rmtree, display_path -from pip.vcs import vcs, VersionControl -from pip.download import path_to_url - - -logger = logging.getLogger(__name__) - - -class Bazaar(VersionControl): - name = 'bzr' - dirname = '.bzr' - repo_name = 'branch' - schemes = ( - 'bzr', 'bzr+http', 'bzr+https', 'bzr+ssh', 'bzr+sftp', 'bzr+ftp', - 'bzr+lp', - ) - - def __init__(self, url=None, *args, **kwargs): - super(Bazaar, self).__init__(url, *args, **kwargs) - # Python >= 2.7.4, 3.3 doesn't have uses_fragment or non_hierarchical - # Register lp but do not expose as a scheme to support bzr+lp. - if getattr(urllib_parse, 'uses_fragment', None): - urllib_parse.uses_fragment.extend(['lp']) - urllib_parse.non_hierarchical.extend(['lp']) - - def export(self, location): - """ - Export the Bazaar repository at the url to the destination location - """ - temp_dir = tempfile.mkdtemp('-export', 'pip-') - self.unpack(temp_dir) - if os.path.exists(location): - # Remove the location to make sure Bazaar can export it correctly - rmtree(location) - try: - self.run_command(['export', location], cwd=temp_dir, - show_stdout=False) - finally: - rmtree(temp_dir) - - def switch(self, dest, url, rev_options): - self.run_command(['switch', url], cwd=dest) - - def update(self, dest, rev_options): - self.run_command(['pull', '-q'] + rev_options, cwd=dest) - - def obtain(self, dest): - url, rev = self.get_url_rev() - if rev: - rev_options = ['-r', rev] - rev_display = ' (to revision %s)' % rev - else: - rev_options = [] - rev_display = '' - if self.check_destination(dest, url, rev_options, rev_display): - logger.info( - 'Checking out %s%s to %s', - url, - rev_display, - display_path(dest), - ) - self.run_command(['branch', '-q'] + rev_options + [url, dest]) - - def get_url_rev(self): - # hotfix the URL scheme after removing bzr+ from bzr+ssh:// readd it - url, rev = super(Bazaar, self).get_url_rev() - if url.startswith('ssh://'): - url = 'bzr+' + url - return url, rev - - def get_url(self, location): - urls = self.run_command(['info'], show_stdout=False, cwd=location) - for line in urls.splitlines(): - line = line.strip() - for x in ('checkout of branch: ', - 'parent branch: '): - if line.startswith(x): - repo = line.split(x)[1] - if self._is_local_repository(repo): - return path_to_url(repo) - return repo - return None - - def get_revision(self, location): - revision = self.run_command( - ['revno'], show_stdout=False, cwd=location) - return revision.splitlines()[-1] - - def get_src_requirement(self, dist, location): - repo = self.get_url(location) - if not repo: - return None - if not repo.lower().startswith('bzr:'): - repo = 'bzr+' + repo - egg_project_name = dist.egg_name().split('-', 1)[0] - current_rev = self.get_revision(location) - return '%s@%s#egg=%s' % (repo, current_rev, egg_project_name) - - def check_version(self, dest, rev_options): - """Always assume the versions don't match""" - return False - - -vcs.register(Bazaar) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/git.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/git.py deleted file mode 100644 index 2187dd84..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/git.py +++ /dev/null @@ -1,300 +0,0 @@ -from __future__ import absolute_import - -import logging -import tempfile -import os.path - -from pip.compat import samefile -from pip.exceptions import BadCommand -from pip._vendor.six.moves.urllib import parse as urllib_parse -from pip._vendor.six.moves.urllib import request as urllib_request -from pip._vendor.packaging.version import parse as parse_version - -from pip.utils import display_path, rmtree -from pip.vcs import vcs, VersionControl - - -urlsplit = urllib_parse.urlsplit -urlunsplit = urllib_parse.urlunsplit - - -logger = logging.getLogger(__name__) - - -class Git(VersionControl): - name = 'git' - dirname = '.git' - repo_name = 'clone' - schemes = ( - 'git', 'git+http', 'git+https', 'git+ssh', 'git+git', 'git+file', - ) - - def __init__(self, url=None, *args, **kwargs): - - # Works around an apparent Git bug - # (see http://article.gmane.org/gmane.comp.version-control.git/146500) - if url: - scheme, netloc, path, query, fragment = urlsplit(url) - if scheme.endswith('file'): - initial_slashes = path[:-len(path.lstrip('/'))] - newpath = ( - initial_slashes + - urllib_request.url2pathname(path) - .replace('\\', '/').lstrip('/') - ) - url = urlunsplit((scheme, netloc, newpath, query, fragment)) - after_plus = scheme.find('+') + 1 - url = scheme[:after_plus] + urlunsplit( - (scheme[after_plus:], netloc, newpath, query, fragment), - ) - - super(Git, self).__init__(url, *args, **kwargs) - - def get_git_version(self): - VERSION_PFX = 'git version ' - version = self.run_command(['version'], show_stdout=False) - if version.startswith(VERSION_PFX): - version = version[len(VERSION_PFX):] - else: - version = '' - # get first 3 positions of the git version becasue - # on windows it is x.y.z.windows.t, and this parses as - # LegacyVersion which always smaller than a Version. - version = '.'.join(version.split('.')[:3]) - return parse_version(version) - - def export(self, location): - """Export the Git repository at the url to the destination location""" - temp_dir = tempfile.mkdtemp('-export', 'pip-') - self.unpack(temp_dir) - try: - if not location.endswith('/'): - location = location + '/' - self.run_command( - ['checkout-index', '-a', '-f', '--prefix', location], - show_stdout=False, cwd=temp_dir) - finally: - rmtree(temp_dir) - - def check_rev_options(self, rev, dest, rev_options): - """Check the revision options before checkout to compensate that tags - and branches may need origin/ as a prefix. - Returns the SHA1 of the branch or tag if found. - """ - revisions = self.get_short_refs(dest) - - origin_rev = 'origin/%s' % rev - if origin_rev in revisions: - # remote branch - return [revisions[origin_rev]] - elif rev in revisions: - # a local tag or branch name - return [revisions[rev]] - else: - logger.warning( - "Could not find a tag or branch '%s', assuming commit.", rev, - ) - return rev_options - - def check_version(self, dest, rev_options): - """ - Compare the current sha to the ref. ref may be a branch or tag name, - but current rev will always point to a sha. This means that a branch - or tag will never compare as True. So this ultimately only matches - against exact shas. - """ - return self.get_revision(dest).startswith(rev_options[0]) - - def switch(self, dest, url, rev_options): - self.run_command(['config', 'remote.origin.url', url], cwd=dest) - self.run_command(['checkout', '-q'] + rev_options, cwd=dest) - - self.update_submodules(dest) - - def update(self, dest, rev_options): - # First fetch changes from the default remote - if self.get_git_version() >= parse_version('1.9.0'): - # fetch tags in addition to everything else - self.run_command(['fetch', '-q', '--tags'], cwd=dest) - else: - self.run_command(['fetch', '-q'], cwd=dest) - # Then reset to wanted revision (maybe even origin/master) - if rev_options: - rev_options = self.check_rev_options( - rev_options[0], dest, rev_options, - ) - self.run_command(['reset', '--hard', '-q'] + rev_options, cwd=dest) - #: update submodules - self.update_submodules(dest) - - def obtain(self, dest): - url, rev = self.get_url_rev() - if rev: - rev_options = [rev] - rev_display = ' (to %s)' % rev - else: - rev_options = ['origin/master'] - rev_display = '' - if self.check_destination(dest, url, rev_options, rev_display): - logger.info( - 'Cloning %s%s to %s', url, rev_display, display_path(dest), - ) - self.run_command(['clone', '-q', url, dest]) - - if rev: - rev_options = self.check_rev_options(rev, dest, rev_options) - # Only do a checkout if rev_options differs from HEAD - if not self.check_version(dest, rev_options): - self.run_command( - ['checkout', '-q'] + rev_options, - cwd=dest, - ) - #: repo may contain submodules - self.update_submodules(dest) - - def get_url(self, location): - """Return URL of the first remote encountered.""" - remotes = self.run_command( - ['config', '--get-regexp', 'remote\..*\.url'], - show_stdout=False, cwd=location) - remotes = remotes.splitlines() - found_remote = remotes[0] - for remote in remotes: - if remote.startswith('remote.origin.url '): - found_remote = remote - break - url = found_remote.split(' ')[1] - return url.strip() - - def get_revision(self, location): - current_rev = self.run_command( - ['rev-parse', 'HEAD'], show_stdout=False, cwd=location) - return current_rev.strip() - - def get_full_refs(self, location): - """Yields tuples of (commit, ref) for branches and tags""" - output = self.run_command(['show-ref'], - show_stdout=False, cwd=location) - for line in output.strip().splitlines(): - commit, ref = line.split(' ', 1) - yield commit.strip(), ref.strip() - - def is_ref_remote(self, ref): - return ref.startswith('refs/remotes/') - - def is_ref_branch(self, ref): - return ref.startswith('refs/heads/') - - def is_ref_tag(self, ref): - return ref.startswith('refs/tags/') - - def is_ref_commit(self, ref): - """A ref is a commit sha if it is not anything else""" - return not any(( - self.is_ref_remote(ref), - self.is_ref_branch(ref), - self.is_ref_tag(ref), - )) - - # Should deprecate `get_refs` since it's ambiguous - def get_refs(self, location): - return self.get_short_refs(location) - - def get_short_refs(self, location): - """Return map of named refs (branches or tags) to commit hashes.""" - rv = {} - for commit, ref in self.get_full_refs(location): - ref_name = None - if self.is_ref_remote(ref): - ref_name = ref[len('refs/remotes/'):] - elif self.is_ref_branch(ref): - ref_name = ref[len('refs/heads/'):] - elif self.is_ref_tag(ref): - ref_name = ref[len('refs/tags/'):] - if ref_name is not None: - rv[ref_name] = commit - return rv - - def _get_subdirectory(self, location): - """Return the relative path of setup.py to the git repo root.""" - # find the repo root - git_dir = self.run_command(['rev-parse', '--git-dir'], - show_stdout=False, cwd=location).strip() - if not os.path.isabs(git_dir): - git_dir = os.path.join(location, git_dir) - root_dir = os.path.join(git_dir, '..') - # find setup.py - orig_location = location - while not os.path.exists(os.path.join(location, 'setup.py')): - last_location = location - location = os.path.dirname(location) - if location == last_location: - # We've traversed up to the root of the filesystem without - # finding setup.py - logger.warning( - "Could not find setup.py for directory %s (tried all " - "parent directories)", - orig_location, - ) - return None - # relative path of setup.py to repo root - if samefile(root_dir, location): - return None - return os.path.relpath(location, root_dir) - - def get_src_requirement(self, dist, location): - repo = self.get_url(location) - if not repo.lower().startswith('git:'): - repo = 'git+' + repo - egg_project_name = dist.egg_name().split('-', 1)[0] - if not repo: - return None - current_rev = self.get_revision(location) - req = '%s@%s#egg=%s' % (repo, current_rev, egg_project_name) - subdirectory = self._get_subdirectory(location) - if subdirectory: - req += '&subdirectory=' + subdirectory - return req - - def get_url_rev(self): - """ - Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'. - That's required because although they use SSH they sometimes doesn't - work with a ssh:// scheme (e.g. Github). But we need a scheme for - parsing. Hence we remove it again afterwards and return it as a stub. - """ - if '://' not in self.url: - assert 'file:' not in self.url - self.url = self.url.replace('git+', 'git+ssh://') - url, rev = super(Git, self).get_url_rev() - url = url.replace('ssh://', '') - else: - url, rev = super(Git, self).get_url_rev() - - return url, rev - - def update_submodules(self, location): - if not os.path.exists(os.path.join(location, '.gitmodules')): - return - self.run_command( - ['submodule', 'update', '--init', '--recursive', '-q'], - cwd=location, - ) - - @classmethod - def controls_location(cls, location): - if super(Git, cls).controls_location(location): - return True - try: - r = cls().run_command(['rev-parse'], - cwd=location, - show_stdout=False, - on_returncode='ignore') - return not r - except BadCommand: - logger.debug("could not determine if %s is under git control " - "because git is not available", location) - return False - - -vcs.register(Git) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/mercurial.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/mercurial.py deleted file mode 100644 index 1aa83b91..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/mercurial.py +++ /dev/null @@ -1,103 +0,0 @@ -from __future__ import absolute_import - -import logging -import os -import tempfile - -from pip.utils import display_path, rmtree -from pip.vcs import vcs, VersionControl -from pip.download import path_to_url -from pip._vendor.six.moves import configparser - - -logger = logging.getLogger(__name__) - - -class Mercurial(VersionControl): - name = 'hg' - dirname = '.hg' - repo_name = 'clone' - schemes = ('hg', 'hg+http', 'hg+https', 'hg+ssh', 'hg+static-http') - - def export(self, location): - """Export the Hg repository at the url to the destination location""" - temp_dir = tempfile.mkdtemp('-export', 'pip-') - self.unpack(temp_dir) - try: - self.run_command( - ['archive', location], show_stdout=False, cwd=temp_dir) - finally: - rmtree(temp_dir) - - def switch(self, dest, url, rev_options): - repo_config = os.path.join(dest, self.dirname, 'hgrc') - config = configparser.SafeConfigParser() - try: - config.read(repo_config) - config.set('paths', 'default', url) - with open(repo_config, 'w') as config_file: - config.write(config_file) - except (OSError, configparser.NoSectionError) as exc: - logger.warning( - 'Could not switch Mercurial repository to %s: %s', url, exc, - ) - else: - self.run_command(['update', '-q'] + rev_options, cwd=dest) - - def update(self, dest, rev_options): - self.run_command(['pull', '-q'], cwd=dest) - self.run_command(['update', '-q'] + rev_options, cwd=dest) - - def obtain(self, dest): - url, rev = self.get_url_rev() - if rev: - rev_options = [rev] - rev_display = ' (to revision %s)' % rev - else: - rev_options = [] - rev_display = '' - if self.check_destination(dest, url, rev_options, rev_display): - logger.info( - 'Cloning hg %s%s to %s', - url, - rev_display, - display_path(dest), - ) - self.run_command(['clone', '--noupdate', '-q', url, dest]) - self.run_command(['update', '-q'] + rev_options, cwd=dest) - - def get_url(self, location): - url = self.run_command( - ['showconfig', 'paths.default'], - show_stdout=False, cwd=location).strip() - if self._is_local_repository(url): - url = path_to_url(url) - return url.strip() - - def get_revision(self, location): - current_revision = self.run_command( - ['parents', '--template={rev}'], - show_stdout=False, cwd=location).strip() - return current_revision - - def get_revision_hash(self, location): - current_rev_hash = self.run_command( - ['parents', '--template={node}'], - show_stdout=False, cwd=location).strip() - return current_rev_hash - - def get_src_requirement(self, dist, location): - repo = self.get_url(location) - if not repo.lower().startswith('hg:'): - repo = 'hg+' + repo - egg_project_name = dist.egg_name().split('-', 1)[0] - if not repo: - return None - current_rev_hash = self.get_revision_hash(location) - return '%s@%s#egg=%s' % (repo, current_rev_hash, egg_project_name) - - def check_version(self, dest, rev_options): - """Always assume the versions don't match""" - return False - -vcs.register(Mercurial) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/subversion.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/subversion.py deleted file mode 100644 index 4b231566..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/vcs/subversion.py +++ /dev/null @@ -1,269 +0,0 @@ -from __future__ import absolute_import - -import logging -import os -import re - -from pip._vendor.six.moves.urllib import parse as urllib_parse - -from pip.index import Link -from pip.utils import rmtree, display_path -from pip.utils.logging import indent_log -from pip.vcs import vcs, VersionControl - -_svn_xml_url_re = re.compile('url="([^"]+)"') -_svn_rev_re = re.compile('committed-rev="(\d+)"') -_svn_url_re = re.compile(r'URL: (.+)') -_svn_revision_re = re.compile(r'Revision: (.+)') -_svn_info_xml_rev_re = re.compile(r'\s*revision="(\d+)"') -_svn_info_xml_url_re = re.compile(r'<url>(.*)</url>') - - -logger = logging.getLogger(__name__) - - -class Subversion(VersionControl): - name = 'svn' - dirname = '.svn' - repo_name = 'checkout' - schemes = ('svn', 'svn+ssh', 'svn+http', 'svn+https', 'svn+svn') - - def get_info(self, location): - """Returns (url, revision), where both are strings""" - assert not location.rstrip('/').endswith(self.dirname), \ - 'Bad directory: %s' % location - output = self.run_command( - ['info', location], - show_stdout=False, - extra_environ={'LANG': 'C'}, - ) - match = _svn_url_re.search(output) - if not match: - logger.warning( - 'Cannot determine URL of svn checkout %s', - display_path(location), - ) - logger.debug('Output that cannot be parsed: \n%s', output) - return None, None - url = match.group(1).strip() - match = _svn_revision_re.search(output) - if not match: - logger.warning( - 'Cannot determine revision of svn checkout %s', - display_path(location), - ) - logger.debug('Output that cannot be parsed: \n%s', output) - return url, None - return url, match.group(1) - - def export(self, location): - """Export the svn repository at the url to the destination location""" - url, rev = self.get_url_rev() - rev_options = get_rev_options(url, rev) - url = self.remove_auth_from_url(url) - logger.info('Exporting svn repository %s to %s', url, location) - with indent_log(): - if os.path.exists(location): - # Subversion doesn't like to check out over an existing - # directory --force fixes this, but was only added in svn 1.5 - rmtree(location) - self.run_command( - ['export'] + rev_options + [url, location], - show_stdout=False) - - def switch(self, dest, url, rev_options): - self.run_command(['switch'] + rev_options + [url, dest]) - - def update(self, dest, rev_options): - self.run_command(['update'] + rev_options + [dest]) - - def obtain(self, dest): - url, rev = self.get_url_rev() - rev_options = get_rev_options(url, rev) - url = self.remove_auth_from_url(url) - if rev: - rev_display = ' (to revision %s)' % rev - else: - rev_display = '' - if self.check_destination(dest, url, rev_options, rev_display): - logger.info( - 'Checking out %s%s to %s', - url, - rev_display, - display_path(dest), - ) - self.run_command(['checkout', '-q'] + rev_options + [url, dest]) - - def get_location(self, dist, dependency_links): - for url in dependency_links: - egg_fragment = Link(url).egg_fragment - if not egg_fragment: - continue - if '-' in egg_fragment: - # FIXME: will this work when a package has - in the name? - key = '-'.join(egg_fragment.split('-')[:-1]).lower() - else: - key = egg_fragment - if key == dist.key: - return url.split('#', 1)[0] - return None - - def get_revision(self, location): - """ - Return the maximum revision for all files under a given location - """ - # Note: taken from setuptools.command.egg_info - revision = 0 - - for base, dirs, files in os.walk(location): - if self.dirname not in dirs: - dirs[:] = [] - continue # no sense walking uncontrolled subdirs - dirs.remove(self.dirname) - entries_fn = os.path.join(base, self.dirname, 'entries') - if not os.path.exists(entries_fn): - # FIXME: should we warn? - continue - - dirurl, localrev = self._get_svn_url_rev(base) - - if base == location: - base_url = dirurl + '/' # save the root url - elif not dirurl or not dirurl.startswith(base_url): - dirs[:] = [] - continue # not part of the same svn tree, skip it - revision = max(revision, localrev) - return revision - - def get_url_rev(self): - # hotfix the URL scheme after removing svn+ from svn+ssh:// readd it - url, rev = super(Subversion, self).get_url_rev() - if url.startswith('ssh://'): - url = 'svn+' + url - return url, rev - - def get_url(self, location): - # In cases where the source is in a subdirectory, not alongside - # setup.py we have to look up in the location until we find a real - # setup.py - orig_location = location - while not os.path.exists(os.path.join(location, 'setup.py')): - last_location = location - location = os.path.dirname(location) - if location == last_location: - # We've traversed up to the root of the filesystem without - # finding setup.py - logger.warning( - "Could not find setup.py for directory %s (tried all " - "parent directories)", - orig_location, - ) - return None - - return self._get_svn_url_rev(location)[0] - - def _get_svn_url_rev(self, location): - from pip.exceptions import InstallationError - - entries_path = os.path.join(location, self.dirname, 'entries') - if os.path.exists(entries_path): - with open(entries_path) as f: - data = f.read() - else: # subversion >= 1.7 does not have the 'entries' file - data = '' - - if (data.startswith('8') or - data.startswith('9') or - data.startswith('10')): - data = list(map(str.splitlines, data.split('\n\x0c\n'))) - del data[0][0] # get rid of the '8' - url = data[0][3] - revs = [int(d[9]) for d in data if len(d) > 9 and d[9]] + [0] - elif data.startswith('<?xml'): - match = _svn_xml_url_re.search(data) - if not match: - raise ValueError('Badly formatted data: %r' % data) - url = match.group(1) # get repository URL - revs = [int(m.group(1)) for m in _svn_rev_re.finditer(data)] + [0] - else: - try: - # subversion >= 1.7 - xml = self.run_command( - ['info', '--xml', location], - show_stdout=False, - ) - url = _svn_info_xml_url_re.search(xml).group(1) - revs = [ - int(m.group(1)) for m in _svn_info_xml_rev_re.finditer(xml) - ] - except InstallationError: - url, revs = None, [] - - if revs: - rev = max(revs) - else: - rev = 0 - - return url, rev - - def get_src_requirement(self, dist, location): - repo = self.get_url(location) - if repo is None: - return None - # FIXME: why not project name? - egg_project_name = dist.egg_name().split('-', 1)[0] - rev = self.get_revision(location) - return 'svn+%s@%s#egg=%s' % (repo, rev, egg_project_name) - - def check_version(self, dest, rev_options): - """Always assume the versions don't match""" - return False - - @staticmethod - def remove_auth_from_url(url): - # Return a copy of url with 'username:password@' removed. - # username/pass params are passed to subversion through flags - # and are not recognized in the url. - - # parsed url - purl = urllib_parse.urlsplit(url) - stripped_netloc = \ - purl.netloc.split('@')[-1] - - # stripped url - url_pieces = ( - purl.scheme, stripped_netloc, purl.path, purl.query, purl.fragment - ) - surl = urllib_parse.urlunsplit(url_pieces) - return surl - - -def get_rev_options(url, rev): - if rev: - rev_options = ['-r', rev] - else: - rev_options = [] - - r = urllib_parse.urlsplit(url) - if hasattr(r, 'username'): - # >= Python-2.5 - username, password = r.username, r.password - else: - netloc = r[1] - if '@' in netloc: - auth = netloc.split('@')[0] - if ':' in auth: - username, password = auth.split(':', 1) - else: - username, password = auth, None - else: - username, password = None, None - - if username: - rev_options += ['--username', username] - if password: - rev_options += ['--password', password] - return rev_options - - -vcs.register(Subversion) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/wheel.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/wheel.py deleted file mode 100644 index 9ac9dffe..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pip/wheel.py +++ /dev/null @@ -1,853 +0,0 @@ -""" -Support for installing and building the "wheel" binary package format. -""" -from __future__ import absolute_import - -import compileall -import csv -import errno -import functools -import hashlib -import logging -import os -import os.path -import re -import shutil -import stat -import sys -import tempfile -import warnings - -from base64 import urlsafe_b64encode -from email.parser import Parser - -from pip._vendor.six import StringIO - -import pip -from pip.compat import expanduser -from pip.download import path_to_url, unpack_url -from pip.exceptions import ( - InstallationError, InvalidWheelFilename, UnsupportedWheel) -from pip.locations import distutils_scheme, PIP_DELETE_MARKER_FILENAME -from pip import pep425tags -from pip.utils import ( - call_subprocess, ensure_dir, captured_stdout, rmtree, read_chunks, -) -from pip.utils.ui import open_spinner -from pip.utils.logging import indent_log -from pip.utils.setuptools_build import SETUPTOOLS_SHIM -from pip._vendor.distlib.scripts import ScriptMaker -from pip._vendor import pkg_resources -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.six.moves import configparser - - -wheel_ext = '.whl' - -VERSION_COMPATIBLE = (1, 0) - - -logger = logging.getLogger(__name__) - - -class WheelCache(object): - """A cache of wheels for future installs.""" - - def __init__(self, cache_dir, format_control): - """Create a wheel cache. - - :param cache_dir: The root of the cache. - :param format_control: A pip.index.FormatControl object to limit - binaries being read from the cache. - """ - self._cache_dir = expanduser(cache_dir) if cache_dir else None - self._format_control = format_control - - def cached_wheel(self, link, package_name): - return cached_wheel( - self._cache_dir, link, self._format_control, package_name) - - -def _cache_for_link(cache_dir, link): - """ - Return a directory to store cached wheels in for link. - - Because there are M wheels for any one sdist, we provide a directory - to cache them in, and then consult that directory when looking up - cache hits. - - We only insert things into the cache if they have plausible version - numbers, so that we don't contaminate the cache with things that were not - unique. E.g. ./package might have dozens of installs done for it and build - a version of 0.0...and if we built and cached a wheel, we'd end up using - the same wheel even if the source has been edited. - - :param cache_dir: The cache_dir being used by pip. - :param link: The link of the sdist for which this will cache wheels. - """ - - # We want to generate an url to use as our cache key, we don't want to just - # re-use the URL because it might have other items in the fragment and we - # don't care about those. - key_parts = [link.url_without_fragment] - if link.hash_name is not None and link.hash is not None: - key_parts.append("=".join([link.hash_name, link.hash])) - key_url = "#".join(key_parts) - - # Encode our key url with sha224, we'll use this because it has similar - # security properties to sha256, but with a shorter total output (and thus - # less secure). However the differences don't make a lot of difference for - # our use case here. - hashed = hashlib.sha224(key_url.encode()).hexdigest() - - # We want to nest the directories some to prevent having a ton of top level - # directories where we might run out of sub directories on some FS. - parts = [hashed[:2], hashed[2:4], hashed[4:6], hashed[6:]] - - # Inside of the base location for cached wheels, expand our parts and join - # them all together. - return os.path.join(cache_dir, "wheels", *parts) - - -def cached_wheel(cache_dir, link, format_control, package_name): - if not cache_dir: - return link - if not link: - return link - if link.is_wheel: - return link - if not link.is_artifact: - return link - if not package_name: - return link - canonical_name = canonicalize_name(package_name) - formats = pip.index.fmt_ctl_formats(format_control, canonical_name) - if "binary" not in formats: - return link - root = _cache_for_link(cache_dir, link) - try: - wheel_names = os.listdir(root) - except OSError as e: - if e.errno in (errno.ENOENT, errno.ENOTDIR): - return link - raise - candidates = [] - for wheel_name in wheel_names: - try: - wheel = Wheel(wheel_name) - except InvalidWheelFilename: - continue - if not wheel.supported(): - # Built for a different python/arch/etc - continue - candidates.append((wheel.support_index_min(), wheel_name)) - if not candidates: - return link - candidates.sort() - path = os.path.join(root, candidates[0][1]) - return pip.index.Link(path_to_url(path)) - - -def rehash(path, algo='sha256', blocksize=1 << 20): - """Return (hash, length) for path using hashlib.new(algo)""" - h = hashlib.new(algo) - length = 0 - with open(path, 'rb') as f: - for block in read_chunks(f, size=blocksize): - length += len(block) - h.update(block) - digest = 'sha256=' + urlsafe_b64encode( - h.digest() - ).decode('latin1').rstrip('=') - return (digest, length) - - -def open_for_csv(name, mode): - if sys.version_info[0] < 3: - nl = {} - bin = 'b' - else: - nl = {'newline': ''} - bin = '' - return open(name, mode + bin, **nl) - - -def fix_script(path): - """Replace #!python with #!/path/to/python - Return True if file was changed.""" - # XXX RECORD hashes will need to be updated - if os.path.isfile(path): - with open(path, 'rb') as script: - firstline = script.readline() - if not firstline.startswith(b'#!python'): - return False - exename = sys.executable.encode(sys.getfilesystemencoding()) - firstline = b'#!' + exename + os.linesep.encode("ascii") - rest = script.read() - with open(path, 'wb') as script: - script.write(firstline) - script.write(rest) - return True - -dist_info_re = re.compile(r"""^(?P<namever>(?P<name>.+?)(-(?P<ver>\d.+?))?) - \.dist-info$""", re.VERBOSE) - - -def root_is_purelib(name, wheeldir): - """ - Return True if the extracted wheel in wheeldir should go into purelib. - """ - name_folded = name.replace("-", "_") - for item in os.listdir(wheeldir): - match = dist_info_re.match(item) - if match and match.group('name') == name_folded: - with open(os.path.join(wheeldir, item, 'WHEEL')) as wheel: - for line in wheel: - line = line.lower().rstrip() - if line == "root-is-purelib: true": - return True - return False - - -def get_entrypoints(filename): - if not os.path.exists(filename): - return {}, {} - - # This is done because you can pass a string to entry_points wrappers which - # means that they may or may not be valid INI files. The attempt here is to - # strip leading and trailing whitespace in order to make them valid INI - # files. - with open(filename) as fp: - data = StringIO() - for line in fp: - data.write(line.strip()) - data.write("\n") - data.seek(0) - - cp = configparser.RawConfigParser() - cp.optionxform = lambda option: option - cp.readfp(data) - - console = {} - gui = {} - if cp.has_section('console_scripts'): - console = dict(cp.items('console_scripts')) - if cp.has_section('gui_scripts'): - gui = dict(cp.items('gui_scripts')) - return console, gui - - -def move_wheel_files(name, req, wheeldir, user=False, home=None, root=None, - pycompile=True, scheme=None, isolated=False, prefix=None): - """Install a wheel""" - - if not scheme: - scheme = distutils_scheme( - name, user=user, home=home, root=root, isolated=isolated, - prefix=prefix, - ) - - if root_is_purelib(name, wheeldir): - lib_dir = scheme['purelib'] - else: - lib_dir = scheme['platlib'] - - info_dir = [] - data_dirs = [] - source = wheeldir.rstrip(os.path.sep) + os.path.sep - - # Record details of the files moved - # installed = files copied from the wheel to the destination - # changed = files changed while installing (scripts #! line typically) - # generated = files newly generated during the install (script wrappers) - installed = {} - changed = set() - generated = [] - - # Compile all of the pyc files that we're going to be installing - if pycompile: - with captured_stdout() as stdout: - with warnings.catch_warnings(): - warnings.filterwarnings('ignore') - compileall.compile_dir(source, force=True, quiet=True) - logger.debug(stdout.getvalue()) - - def normpath(src, p): - return os.path.relpath(src, p).replace(os.path.sep, '/') - - def record_installed(srcfile, destfile, modified=False): - """Map archive RECORD paths to installation RECORD paths.""" - oldpath = normpath(srcfile, wheeldir) - newpath = normpath(destfile, lib_dir) - installed[oldpath] = newpath - if modified: - changed.add(destfile) - - def clobber(source, dest, is_base, fixer=None, filter=None): - ensure_dir(dest) # common for the 'include' path - - for dir, subdirs, files in os.walk(source): - basedir = dir[len(source):].lstrip(os.path.sep) - destdir = os.path.join(dest, basedir) - if is_base and basedir.split(os.path.sep, 1)[0].endswith('.data'): - continue - for s in subdirs: - destsubdir = os.path.join(dest, basedir, s) - if is_base and basedir == '' and destsubdir.endswith('.data'): - data_dirs.append(s) - continue - elif (is_base and - s.endswith('.dist-info') and - canonicalize_name(s).startswith( - canonicalize_name(req.name))): - assert not info_dir, ('Multiple .dist-info directories: ' + - destsubdir + ', ' + - ', '.join(info_dir)) - info_dir.append(destsubdir) - for f in files: - # Skip unwanted files - if filter and filter(f): - continue - srcfile = os.path.join(dir, f) - destfile = os.path.join(dest, basedir, f) - # directory creation is lazy and after the file filtering above - # to ensure we don't install empty dirs; empty dirs can't be - # uninstalled. - ensure_dir(destdir) - - # We use copyfile (not move, copy, or copy2) to be extra sure - # that we are not moving directories over (copyfile fails for - # directories) as well as to ensure that we are not copying - # over any metadata because we want more control over what - # metadata we actually copy over. - shutil.copyfile(srcfile, destfile) - - # Copy over the metadata for the file, currently this only - # includes the atime and mtime. - st = os.stat(srcfile) - if hasattr(os, "utime"): - os.utime(destfile, (st.st_atime, st.st_mtime)) - - # If our file is executable, then make our destination file - # executable. - if os.access(srcfile, os.X_OK): - st = os.stat(srcfile) - permissions = ( - st.st_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH - ) - os.chmod(destfile, permissions) - - changed = False - if fixer: - changed = fixer(destfile) - record_installed(srcfile, destfile, changed) - - clobber(source, lib_dir, True) - - assert info_dir, "%s .dist-info directory not found" % req - - # Get the defined entry points - ep_file = os.path.join(info_dir[0], 'entry_points.txt') - console, gui = get_entrypoints(ep_file) - - def is_entrypoint_wrapper(name): - # EP, EP.exe and EP-script.py are scripts generated for - # entry point EP by setuptools - if name.lower().endswith('.exe'): - matchname = name[:-4] - elif name.lower().endswith('-script.py'): - matchname = name[:-10] - elif name.lower().endswith(".pya"): - matchname = name[:-4] - else: - matchname = name - # Ignore setuptools-generated scripts - return (matchname in console or matchname in gui) - - for datadir in data_dirs: - fixer = None - filter = None - for subdir in os.listdir(os.path.join(wheeldir, datadir)): - fixer = None - if subdir == 'scripts': - fixer = fix_script - filter = is_entrypoint_wrapper - source = os.path.join(wheeldir, datadir, subdir) - dest = scheme[subdir] - clobber(source, dest, False, fixer=fixer, filter=filter) - - maker = ScriptMaker(None, scheme['scripts']) - - # Ensure old scripts are overwritten. - # See https://github.com/pypa/pip/issues/1800 - maker.clobber = True - - # Ensure we don't generate any variants for scripts because this is almost - # never what somebody wants. - # See https://bitbucket.org/pypa/distlib/issue/35/ - maker.variants = set(('', )) - - # This is required because otherwise distlib creates scripts that are not - # executable. - # See https://bitbucket.org/pypa/distlib/issue/32/ - maker.set_mode = True - - # Simplify the script and fix the fact that the default script swallows - # every single stack trace. - # See https://bitbucket.org/pypa/distlib/issue/34/ - # See https://bitbucket.org/pypa/distlib/issue/33/ - def _get_script_text(entry): - if entry.suffix is None: - raise InstallationError( - "Invalid script entry point: %s for req: %s - A callable " - "suffix is required. Cf https://packaging.python.org/en/" - "latest/distributing.html#console-scripts for more " - "information." % (entry, req) - ) - return maker.script_template % { - "module": entry.prefix, - "import_name": entry.suffix.split(".")[0], - "func": entry.suffix, - } - - maker._get_script_text = _get_script_text - maker.script_template = """# -*- coding: utf-8 -*- -import re -import sys - -from %(module)s import %(import_name)s - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(%(func)s()) -""" - - # Special case pip and setuptools to generate versioned wrappers - # - # The issue is that some projects (specifically, pip and setuptools) use - # code in setup.py to create "versioned" entry points - pip2.7 on Python - # 2.7, pip3.3 on Python 3.3, etc. But these entry points are baked into - # the wheel metadata at build time, and so if the wheel is installed with - # a *different* version of Python the entry points will be wrong. The - # correct fix for this is to enhance the metadata to be able to describe - # such versioned entry points, but that won't happen till Metadata 2.0 is - # available. - # In the meantime, projects using versioned entry points will either have - # incorrect versioned entry points, or they will not be able to distribute - # "universal" wheels (i.e., they will need a wheel per Python version). - # - # Because setuptools and pip are bundled with _ensurepip and virtualenv, - # we need to use universal wheels. So, as a stopgap until Metadata 2.0, we - # override the versioned entry points in the wheel and generate the - # correct ones. This code is purely a short-term measure until Metadata 2.0 - # is available. - # - # To add the level of hack in this section of code, in order to support - # ensurepip this code will look for an ``ENSUREPIP_OPTIONS`` environment - # variable which will control which version scripts get installed. - # - # ENSUREPIP_OPTIONS=altinstall - # - Only pipX.Y and easy_install-X.Y will be generated and installed - # ENSUREPIP_OPTIONS=install - # - pipX.Y, pipX, easy_install-X.Y will be generated and installed. Note - # that this option is technically if ENSUREPIP_OPTIONS is set and is - # not altinstall - # DEFAULT - # - The default behavior is to install pip, pipX, pipX.Y, easy_install - # and easy_install-X.Y. - pip_script = console.pop('pip', None) - if pip_script: - if "ENSUREPIP_OPTIONS" not in os.environ: - spec = 'pip = ' + pip_script - generated.extend(maker.make(spec)) - - if os.environ.get("ENSUREPIP_OPTIONS", "") != "altinstall": - spec = 'pip%s = %s' % (sys.version[:1], pip_script) - generated.extend(maker.make(spec)) - - spec = 'pip%s = %s' % (sys.version[:3], pip_script) - generated.extend(maker.make(spec)) - # Delete any other versioned pip entry points - pip_ep = [k for k in console if re.match(r'pip(\d(\.\d)?)?$', k)] - for k in pip_ep: - del console[k] - easy_install_script = console.pop('easy_install', None) - if easy_install_script: - if "ENSUREPIP_OPTIONS" not in os.environ: - spec = 'easy_install = ' + easy_install_script - generated.extend(maker.make(spec)) - - spec = 'easy_install-%s = %s' % (sys.version[:3], easy_install_script) - generated.extend(maker.make(spec)) - # Delete any other versioned easy_install entry points - easy_install_ep = [ - k for k in console if re.match(r'easy_install(-\d\.\d)?$', k) - ] - for k in easy_install_ep: - del console[k] - - # Generate the console and GUI entry points specified in the wheel - if len(console) > 0: - generated.extend( - maker.make_multiple(['%s = %s' % kv for kv in console.items()]) - ) - if len(gui) > 0: - generated.extend( - maker.make_multiple( - ['%s = %s' % kv for kv in gui.items()], - {'gui': True} - ) - ) - - # Record pip as the installer - installer = os.path.join(info_dir[0], 'INSTALLER') - temp_installer = os.path.join(info_dir[0], 'INSTALLER.pip') - with open(temp_installer, 'wb') as installer_file: - installer_file.write(b'pip\n') - shutil.move(temp_installer, installer) - generated.append(installer) - - # Record details of all files installed - record = os.path.join(info_dir[0], 'RECORD') - temp_record = os.path.join(info_dir[0], 'RECORD.pip') - with open_for_csv(record, 'r') as record_in: - with open_for_csv(temp_record, 'w+') as record_out: - reader = csv.reader(record_in) - writer = csv.writer(record_out) - for row in reader: - row[0] = installed.pop(row[0], row[0]) - if row[0] in changed: - row[1], row[2] = rehash(row[0]) - writer.writerow(row) - for f in generated: - h, l = rehash(f) - writer.writerow((normpath(f, lib_dir), h, l)) - for f in installed: - writer.writerow((installed[f], '', '')) - shutil.move(temp_record, record) - - -def _unique(fn): - @functools.wraps(fn) - def unique(*args, **kw): - seen = set() - for item in fn(*args, **kw): - if item not in seen: - seen.add(item) - yield item - return unique - - -# TODO: this goes somewhere besides the wheel module -@_unique -def uninstallation_paths(dist): - """ - Yield all the uninstallation paths for dist based on RECORD-without-.pyc - - Yield paths to all the files in RECORD. For each .py file in RECORD, add - the .pyc in the same directory. - - UninstallPathSet.add() takes care of the __pycache__ .pyc. - """ - from pip.utils import FakeFile # circular import - r = csv.reader(FakeFile(dist.get_metadata_lines('RECORD'))) - for row in r: - path = os.path.join(dist.location, row[0]) - yield path - if path.endswith('.py'): - dn, fn = os.path.split(path) - base = fn[:-3] - path = os.path.join(dn, base + '.pyc') - yield path - - -def wheel_version(source_dir): - """ - Return the Wheel-Version of an extracted wheel, if possible. - - Otherwise, return False if we couldn't parse / extract it. - """ - try: - dist = [d for d in pkg_resources.find_on_path(None, source_dir)][0] - - wheel_data = dist.get_metadata('WHEEL') - wheel_data = Parser().parsestr(wheel_data) - - version = wheel_data['Wheel-Version'].strip() - version = tuple(map(int, version.split('.'))) - return version - except: - return False - - -def check_compatibility(version, name): - """ - Raises errors or warns if called with an incompatible Wheel-Version. - - Pip should refuse to install a Wheel-Version that's a major series - ahead of what it's compatible with (e.g 2.0 > 1.1); and warn when - installing a version only minor version ahead (e.g 1.2 > 1.1). - - version: a 2-tuple representing a Wheel-Version (Major, Minor) - name: name of wheel or package to raise exception about - - :raises UnsupportedWheel: when an incompatible Wheel-Version is given - """ - if not version: - raise UnsupportedWheel( - "%s is in an unsupported or invalid wheel" % name - ) - if version[0] > VERSION_COMPATIBLE[0]: - raise UnsupportedWheel( - "%s's Wheel-Version (%s) is not compatible with this version " - "of pip" % (name, '.'.join(map(str, version))) - ) - elif version > VERSION_COMPATIBLE: - logger.warning( - 'Installing from a newer Wheel-Version (%s)', - '.'.join(map(str, version)), - ) - - -class Wheel(object): - """A wheel file""" - - # TODO: maybe move the install code into this class - - wheel_file_re = re.compile( - r"""^(?P<namever>(?P<name>.+?)-(?P<ver>\d.*?)) - ((-(?P<build>\d.*?))?-(?P<pyver>.+?)-(?P<abi>.+?)-(?P<plat>.+?) - \.whl|\.dist-info)$""", - re.VERBOSE - ) - - def __init__(self, filename): - """ - :raises InvalidWheelFilename: when the filename is invalid for a wheel - """ - wheel_info = self.wheel_file_re.match(filename) - if not wheel_info: - raise InvalidWheelFilename( - "%s is not a valid wheel filename." % filename - ) - self.filename = filename - self.name = wheel_info.group('name').replace('_', '-') - # we'll assume "_" means "-" due to wheel naming scheme - # (https://github.com/pypa/pip/issues/1150) - self.version = wheel_info.group('ver').replace('_', '-') - self.pyversions = wheel_info.group('pyver').split('.') - self.abis = wheel_info.group('abi').split('.') - self.plats = wheel_info.group('plat').split('.') - - # All the tag combinations from this file - self.file_tags = set( - (x, y, z) for x in self.pyversions - for y in self.abis for z in self.plats - ) - - def support_index_min(self, tags=None): - """ - Return the lowest index that one of the wheel's file_tag combinations - achieves in the supported_tags list e.g. if there are 8 supported tags, - and one of the file tags is first in the list, then return 0. Returns - None is the wheel is not supported. - """ - if tags is None: # for mock - tags = pep425tags.supported_tags - indexes = [tags.index(c) for c in self.file_tags if c in tags] - return min(indexes) if indexes else None - - def supported(self, tags=None): - """Is this wheel supported on this system?""" - if tags is None: # for mock - tags = pep425tags.supported_tags - return bool(set(tags).intersection(self.file_tags)) - - -class WheelBuilder(object): - """Build wheels from a RequirementSet.""" - - def __init__(self, requirement_set, finder, build_options=None, - global_options=None): - self.requirement_set = requirement_set - self.finder = finder - self._cache_root = requirement_set._wheel_cache._cache_dir - self._wheel_dir = requirement_set.wheel_download_dir - self.build_options = build_options or [] - self.global_options = global_options or [] - - def _build_one(self, req, output_dir, python_tag=None): - """Build one wheel. - - :return: The filename of the built wheel, or None if the build failed. - """ - tempd = tempfile.mkdtemp('pip-wheel-') - try: - if self.__build_one(req, tempd, python_tag=python_tag): - try: - wheel_name = os.listdir(tempd)[0] - wheel_path = os.path.join(output_dir, wheel_name) - shutil.move(os.path.join(tempd, wheel_name), wheel_path) - logger.info('Stored in directory: %s', output_dir) - return wheel_path - except: - pass - # Ignore return, we can't do anything else useful. - self._clean_one(req) - return None - finally: - rmtree(tempd) - - def _base_setup_args(self, req): - return [ - sys.executable, "-u", '-c', - SETUPTOOLS_SHIM % req.setup_py - ] + list(self.global_options) - - def __build_one(self, req, tempd, python_tag=None): - base_args = self._base_setup_args(req) - - spin_message = 'Running setup.py bdist_wheel for %s' % (req.name,) - with open_spinner(spin_message) as spinner: - logger.debug('Destination directory: %s', tempd) - wheel_args = base_args + ['bdist_wheel', '-d', tempd] \ - + self.build_options - - if python_tag is not None: - wheel_args += ["--python-tag", python_tag] - - try: - call_subprocess(wheel_args, cwd=req.setup_py_dir, - show_stdout=False, spinner=spinner) - return True - except: - spinner.finish("error") - logger.error('Failed building wheel for %s', req.name) - return False - - def _clean_one(self, req): - base_args = self._base_setup_args(req) - - logger.info('Running setup.py clean for %s', req.name) - clean_args = base_args + ['clean', '--all'] - try: - call_subprocess(clean_args, cwd=req.source_dir, show_stdout=False) - return True - except: - logger.error('Failed cleaning build dir for %s', req.name) - return False - - def build(self, autobuilding=False): - """Build wheels. - - :param unpack: If True, replace the sdist we built from with the - newly built wheel, in preparation for installation. - :return: True if all the wheels built correctly. - """ - assert self._wheel_dir or (autobuilding and self._cache_root) - # unpack sdists and constructs req set - self.requirement_set.prepare_files(self.finder) - - reqset = self.requirement_set.requirements.values() - - buildset = [] - for req in reqset: - if req.constraint: - continue - if req.is_wheel: - if not autobuilding: - logger.info( - 'Skipping %s, due to already being wheel.', req.name) - elif autobuilding and req.editable: - pass - elif autobuilding and req.link and not req.link.is_artifact: - pass - elif autobuilding and not req.source_dir: - pass - else: - if autobuilding: - link = req.link - base, ext = link.splitext() - if pip.index.egg_info_matches(base, None, link) is None: - # Doesn't look like a package - don't autobuild a wheel - # because we'll have no way to lookup the result sanely - continue - if "binary" not in pip.index.fmt_ctl_formats( - self.finder.format_control, - canonicalize_name(req.name)): - logger.info( - "Skipping bdist_wheel for %s, due to binaries " - "being disabled for it.", req.name) - continue - buildset.append(req) - - if not buildset: - return True - - # Build the wheels. - logger.info( - 'Building wheels for collected packages: %s', - ', '.join([req.name for req in buildset]), - ) - with indent_log(): - build_success, build_failure = [], [] - for req in buildset: - python_tag = None - if autobuilding: - python_tag = pep425tags.implementation_tag - output_dir = _cache_for_link(self._cache_root, req.link) - try: - ensure_dir(output_dir) - except OSError as e: - logger.warning("Building wheel for %s failed: %s", - req.name, e) - build_failure.append(req) - continue - else: - output_dir = self._wheel_dir - wheel_file = self._build_one( - req, output_dir, - python_tag=python_tag, - ) - if wheel_file: - build_success.append(req) - if autobuilding: - # XXX: This is mildly duplicative with prepare_files, - # but not close enough to pull out to a single common - # method. - # The code below assumes temporary source dirs - - # prevent it doing bad things. - if req.source_dir and not os.path.exists(os.path.join( - req.source_dir, PIP_DELETE_MARKER_FILENAME)): - raise AssertionError( - "bad source dir - missing marker") - # Delete the source we built the wheel from - req.remove_temporary_source() - # set the build directory again - name is known from - # the work prepare_files did. - req.source_dir = req.build_location( - self.requirement_set.build_dir) - # Update the link for this. - req.link = pip.index.Link( - path_to_url(wheel_file)) - assert req.link.is_wheel - # extract the wheel into the dir - unpack_url( - req.link, req.source_dir, None, False, - session=self.requirement_set.session) - else: - build_failure.append(req) - - # notify success/failure - if build_success: - logger.info( - 'Successfully built %s', - ' '.join([req.name for req in build_success]), - ) - if build_failure: - logger.info( - 'Failed to build %s', - ' '.join([req.name for req in build_failure]), - ) - # Return True if all builds were successful - return len(build_failure) == 0 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/__init__.py deleted file mode 100644 index a323857c..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/__init__.py +++ /dev/null @@ -1,3051 +0,0 @@ -# coding: utf-8 -""" -Package resource API --------------------- - -A resource is a logical file contained within a package, or a logical -subdirectory thereof. The package resource API expects resource names -to have their path parts separated with ``/``, *not* whatever the local -path separator is. Do not use os.path operations to manipulate resource -names being passed into the API. - -The package resource API is designed to work with normal filesystem packages, -.egg files, and unpacked .egg files. It can also work in a limited way with -.zip files and with custom PEP 302 loaders that support the ``get_data()`` -method. -""" - -from __future__ import absolute_import - -import sys -import os -import io -import time -import re -import types -import zipfile -import zipimport -import warnings -import stat -import functools -import pkgutil -import operator -import platform -import collections -import plistlib -import email.parser -import tempfile -import textwrap -import itertools -from pkgutil import get_importer - -try: - import _imp -except ImportError: - # Python 3.2 compatibility - import imp as _imp - -from pkg_resources.extern import six -from pkg_resources.extern.six.moves import urllib, map, filter - -# capture these to bypass sandboxing -from os import utime -try: - from os import mkdir, rename, unlink - WRITE_SUPPORT = True -except ImportError: - # no write support, probably under GAE - WRITE_SUPPORT = False - -from os import open as os_open -from os.path import isdir, split - -try: - import importlib.machinery as importlib_machinery - # access attribute to force import under delayed import mechanisms. - importlib_machinery.__name__ -except ImportError: - importlib_machinery = None - -from pkg_resources.extern import appdirs -from pkg_resources.extern import packaging -__import__('pkg_resources.extern.packaging.version') -__import__('pkg_resources.extern.packaging.specifiers') -__import__('pkg_resources.extern.packaging.requirements') -__import__('pkg_resources.extern.packaging.markers') - -if (3, 0) < sys.version_info < (3, 3): - msg = ( - "Support for Python 3.0-3.2 has been dropped. Future versions " - "will fail here." - ) - warnings.warn(msg) - -# declare some globals that will be defined later to -# satisfy the linters. -require = None -working_set = None - - -class PEP440Warning(RuntimeWarning): - """ - Used when there is an issue with a version or specifier not complying with - PEP 440. - """ - - -class _SetuptoolsVersionMixin(object): - def __hash__(self): - return super(_SetuptoolsVersionMixin, self).__hash__() - - def __lt__(self, other): - if isinstance(other, tuple): - return tuple(self) < other - else: - return super(_SetuptoolsVersionMixin, self).__lt__(other) - - def __le__(self, other): - if isinstance(other, tuple): - return tuple(self) <= other - else: - return super(_SetuptoolsVersionMixin, self).__le__(other) - - def __eq__(self, other): - if isinstance(other, tuple): - return tuple(self) == other - else: - return super(_SetuptoolsVersionMixin, self).__eq__(other) - - def __ge__(self, other): - if isinstance(other, tuple): - return tuple(self) >= other - else: - return super(_SetuptoolsVersionMixin, self).__ge__(other) - - def __gt__(self, other): - if isinstance(other, tuple): - return tuple(self) > other - else: - return super(_SetuptoolsVersionMixin, self).__gt__(other) - - def __ne__(self, other): - if isinstance(other, tuple): - return tuple(self) != other - else: - return super(_SetuptoolsVersionMixin, self).__ne__(other) - - def __getitem__(self, key): - return tuple(self)[key] - - def __iter__(self): - component_re = re.compile(r'(\d+ | [a-z]+ | \.| -)', re.VERBOSE) - replace = { - 'pre': 'c', - 'preview': 'c', - '-': 'final-', - 'rc': 'c', - 'dev': '@', - }.get - - def _parse_version_parts(s): - for part in component_re.split(s): - part = replace(part, part) - if not part or part == '.': - continue - if part[:1] in '0123456789': - # pad for numeric comparison - yield part.zfill(8) - else: - yield '*' + part - - # ensure that alpha/beta/candidate are before final - yield '*final' - - def old_parse_version(s): - parts = [] - for part in _parse_version_parts(s.lower()): - if part.startswith('*'): - # remove '-' before a prerelease tag - if part < '*final': - while parts and parts[-1] == '*final-': - parts.pop() - # remove trailing zeros from each series of numeric parts - while parts and parts[-1] == '00000000': - parts.pop() - parts.append(part) - return tuple(parts) - - # Warn for use of this function - warnings.warn( - "You have iterated over the result of " - "pkg_resources.parse_version. This is a legacy behavior which is " - "inconsistent with the new version class introduced in setuptools " - "8.0. In most cases, conversion to a tuple is unnecessary. For " - "comparison of versions, sort the Version instances directly. If " - "you have another use case requiring the tuple, please file a " - "bug with the setuptools project describing that need.", - RuntimeWarning, - stacklevel=1, - ) - - for part in old_parse_version(str(self)): - yield part - - -class SetuptoolsVersion(_SetuptoolsVersionMixin, packaging.version.Version): - pass - - -class SetuptoolsLegacyVersion(_SetuptoolsVersionMixin, - packaging.version.LegacyVersion): - pass - - -def parse_version(v): - try: - return SetuptoolsVersion(v) - except packaging.version.InvalidVersion: - return SetuptoolsLegacyVersion(v) - - -_state_vars = {} - - -def _declare_state(vartype, **kw): - globals().update(kw) - _state_vars.update(dict.fromkeys(kw, vartype)) - - -def __getstate__(): - state = {} - g = globals() - for k, v in _state_vars.items(): - state[k] = g['_sget_' + v](g[k]) - return state - - -def __setstate__(state): - g = globals() - for k, v in state.items(): - g['_sset_' + _state_vars[k]](k, g[k], v) - return state - - -def _sget_dict(val): - return val.copy() - - -def _sset_dict(key, ob, state): - ob.clear() - ob.update(state) - - -def _sget_object(val): - return val.__getstate__() - - -def _sset_object(key, ob, state): - ob.__setstate__(state) - - -_sget_none = _sset_none = lambda *args: None - - -def get_supported_platform(): - """Return this platform's maximum compatible version. - - distutils.util.get_platform() normally reports the minimum version - of Mac OS X that would be required to *use* extensions produced by - distutils. But what we want when checking compatibility is to know the - version of Mac OS X that we are *running*. To allow usage of packages that - explicitly require a newer version of Mac OS X, we must also know the - current version of the OS. - - If this condition occurs for any other platform with a version in its - platform strings, this function should be extended accordingly. - """ - plat = get_build_platform() - m = macosVersionString.match(plat) - if m is not None and sys.platform == "darwin": - try: - plat = 'macosx-%s-%s' % ('.'.join(_macosx_vers()[:2]), m.group(3)) - except ValueError: - # not Mac OS X - pass - return plat - - -__all__ = [ - # Basic resource access and distribution/entry point discovery - 'require', 'run_script', 'get_provider', 'get_distribution', - 'load_entry_point', 'get_entry_map', 'get_entry_info', - 'iter_entry_points', - 'resource_string', 'resource_stream', 'resource_filename', - 'resource_listdir', 'resource_exists', 'resource_isdir', - - # Environmental control - 'declare_namespace', 'working_set', 'add_activation_listener', - 'find_distributions', 'set_extraction_path', 'cleanup_resources', - 'get_default_cache', - - # Primary implementation classes - 'Environment', 'WorkingSet', 'ResourceManager', - 'Distribution', 'Requirement', 'EntryPoint', - - # Exceptions - 'ResolutionError', 'VersionConflict', 'DistributionNotFound', - 'UnknownExtra', 'ExtractionError', - - # Warnings - 'PEP440Warning', - - # Parsing functions and string utilities - 'parse_requirements', 'parse_version', 'safe_name', 'safe_version', - 'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections', - 'safe_extra', 'to_filename', 'invalid_marker', 'evaluate_marker', - - # filesystem utilities - 'ensure_directory', 'normalize_path', - - # Distribution "precedence" constants - 'EGG_DIST', 'BINARY_DIST', 'SOURCE_DIST', 'CHECKOUT_DIST', 'DEVELOP_DIST', - - # "Provider" interfaces, implementations, and registration/lookup APIs - 'IMetadataProvider', 'IResourceProvider', 'FileMetadata', - 'PathMetadata', 'EggMetadata', 'EmptyProvider', 'empty_provider', - 'NullProvider', 'EggProvider', 'DefaultProvider', 'ZipProvider', - 'register_finder', 'register_namespace_handler', 'register_loader_type', - 'fixup_namespace_packages', 'get_importer', - - # Deprecated/backward compatibility only - 'run_main', 'AvailableDistributions', -] - - -class ResolutionError(Exception): - """Abstract base for dependency resolution errors""" - - def __repr__(self): - return self.__class__.__name__ + repr(self.args) - - -class VersionConflict(ResolutionError): - """ - An already-installed version conflicts with the requested version. - - Should be initialized with the installed Distribution and the requested - Requirement. - """ - - _template = "{self.dist} is installed but {self.req} is required" - - @property - def dist(self): - return self.args[0] - - @property - def req(self): - return self.args[1] - - def report(self): - return self._template.format(**locals()) - - def with_context(self, required_by): - """ - If required_by is non-empty, return a version of self that is a - ContextualVersionConflict. - """ - if not required_by: - return self - args = self.args + (required_by,) - return ContextualVersionConflict(*args) - - -class ContextualVersionConflict(VersionConflict): - """ - A VersionConflict that accepts a third parameter, the set of the - requirements that required the installed Distribution. - """ - - _template = VersionConflict._template + ' by {self.required_by}' - - @property - def required_by(self): - return self.args[2] - - -class DistributionNotFound(ResolutionError): - """A requested distribution was not found""" - - _template = ("The '{self.req}' distribution was not found " - "and is required by {self.requirers_str}") - - @property - def req(self): - return self.args[0] - - @property - def requirers(self): - return self.args[1] - - @property - def requirers_str(self): - if not self.requirers: - return 'the application' - return ', '.join(self.requirers) - - def report(self): - return self._template.format(**locals()) - - def __str__(self): - return self.report() - - -class UnknownExtra(ResolutionError): - """Distribution doesn't have an "extra feature" of the given name""" - - -_provider_factories = {} - -PY_MAJOR = sys.version[:3] -EGG_DIST = 3 -BINARY_DIST = 2 -SOURCE_DIST = 1 -CHECKOUT_DIST = 0 -DEVELOP_DIST = -1 - - -def register_loader_type(loader_type, provider_factory): - """Register `provider_factory` to make providers for `loader_type` - - `loader_type` is the type or class of a PEP 302 ``module.__loader__``, - and `provider_factory` is a function that, passed a *module* object, - returns an ``IResourceProvider`` for that module. - """ - _provider_factories[loader_type] = provider_factory - - -def get_provider(moduleOrReq): - """Return an IResourceProvider for the named module or requirement""" - if isinstance(moduleOrReq, Requirement): - return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0] - try: - module = sys.modules[moduleOrReq] - except KeyError: - __import__(moduleOrReq) - module = sys.modules[moduleOrReq] - loader = getattr(module, '__loader__', None) - return _find_adapter(_provider_factories, loader)(module) - - -def _macosx_vers(_cache=[]): - if not _cache: - version = platform.mac_ver()[0] - # fallback for MacPorts - if version == '': - plist = '/System/Library/CoreServices/SystemVersion.plist' - if os.path.exists(plist): - if hasattr(plistlib, 'readPlist'): - plist_content = plistlib.readPlist(plist) - if 'ProductVersion' in plist_content: - version = plist_content['ProductVersion'] - - _cache.append(version.split('.')) - return _cache[0] - - -def _macosx_arch(machine): - return {'PowerPC': 'ppc', 'Power_Macintosh': 'ppc'}.get(machine, machine) - - -def get_build_platform(): - """Return this platform's string for platform-specific distributions - - XXX Currently this is the same as ``distutils.util.get_platform()``, but it - needs some hacks for Linux and Mac OS X. - """ - try: - # Python 2.7 or >=3.2 - from sysconfig import get_platform - except ImportError: - from distutils.util import get_platform - - plat = get_platform() - if sys.platform == "darwin" and not plat.startswith('macosx-'): - try: - version = _macosx_vers() - machine = os.uname()[4].replace(" ", "_") - return "macosx-%d.%d-%s" % (int(version[0]), int(version[1]), - _macosx_arch(machine)) - except ValueError: - # if someone is running a non-Mac darwin system, this will fall - # through to the default implementation - pass - return plat - - -macosVersionString = re.compile(r"macosx-(\d+)\.(\d+)-(.*)") -darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)") -# XXX backward compat -get_platform = get_build_platform - - -def compatible_platforms(provided, required): - """Can code for the `provided` platform run on the `required` platform? - - Returns true if either platform is ``None``, or the platforms are equal. - - XXX Needs compatibility checks for Linux and other unixy OSes. - """ - if provided is None or required is None or provided == required: - # easy case - return True - - # Mac OS X special cases - reqMac = macosVersionString.match(required) - if reqMac: - provMac = macosVersionString.match(provided) - - # is this a Mac package? - if not provMac: - # this is backwards compatibility for packages built before - # setuptools 0.6. All packages built after this point will - # use the new macosx designation. - provDarwin = darwinVersionString.match(provided) - if provDarwin: - dversion = int(provDarwin.group(1)) - macosversion = "%s.%s" % (reqMac.group(1), reqMac.group(2)) - if dversion == 7 and macosversion >= "10.3" or \ - dversion == 8 and macosversion >= "10.4": - return True - # egg isn't macosx or legacy darwin - return False - - # are they the same major version and machine type? - if provMac.group(1) != reqMac.group(1) or \ - provMac.group(3) != reqMac.group(3): - return False - - # is the required OS major update >= the provided one? - if int(provMac.group(2)) > int(reqMac.group(2)): - return False - - return True - - # XXX Linux and other platforms' special cases should go here - return False - - -def run_script(dist_spec, script_name): - """Locate distribution `dist_spec` and run its `script_name` script""" - ns = sys._getframe(1).f_globals - name = ns['__name__'] - ns.clear() - ns['__name__'] = name - require(dist_spec)[0].run_script(script_name, ns) - - -# backward compatibility -run_main = run_script - - -def get_distribution(dist): - """Return a current distribution object for a Requirement or string""" - if isinstance(dist, six.string_types): - dist = Requirement.parse(dist) - if isinstance(dist, Requirement): - dist = get_provider(dist) - if not isinstance(dist, Distribution): - raise TypeError("Expected string, Requirement, or Distribution", dist) - return dist - - -def load_entry_point(dist, group, name): - """Return `name` entry point of `group` for `dist` or raise ImportError""" - return get_distribution(dist).load_entry_point(group, name) - - -def get_entry_map(dist, group=None): - """Return the entry point map for `group`, or the full entry map""" - return get_distribution(dist).get_entry_map(group) - - -def get_entry_info(dist, group, name): - """Return the EntryPoint object for `group`+`name`, or ``None``""" - return get_distribution(dist).get_entry_info(group, name) - - -class IMetadataProvider: - def has_metadata(name): - """Does the package's distribution contain the named metadata?""" - - def get_metadata(name): - """The named metadata resource as a string""" - - def get_metadata_lines(name): - """Yield named metadata resource as list of non-blank non-comment lines - - Leading and trailing whitespace is stripped from each line, and lines - with ``#`` as the first non-blank character are omitted.""" - - def metadata_isdir(name): - """Is the named metadata a directory? (like ``os.path.isdir()``)""" - - def metadata_listdir(name): - """List of metadata names in the directory (like ``os.listdir()``)""" - - def run_script(script_name, namespace): - """Execute the named script in the supplied namespace dictionary""" - - -class IResourceProvider(IMetadataProvider): - """An object that provides access to package resources""" - - def get_resource_filename(manager, resource_name): - """Return a true filesystem path for `resource_name` - - `manager` must be an ``IResourceManager``""" - - def get_resource_stream(manager, resource_name): - """Return a readable file-like object for `resource_name` - - `manager` must be an ``IResourceManager``""" - - def get_resource_string(manager, resource_name): - """Return a string containing the contents of `resource_name` - - `manager` must be an ``IResourceManager``""" - - def has_resource(resource_name): - """Does the package contain the named resource?""" - - def resource_isdir(resource_name): - """Is the named resource a directory? (like ``os.path.isdir()``)""" - - def resource_listdir(resource_name): - """List of resource names in the directory (like ``os.listdir()``)""" - - -class WorkingSet(object): - """A collection of active distributions on sys.path (or a similar list)""" - - def __init__(self, entries=None): - """Create working set from list of path entries (default=sys.path)""" - self.entries = [] - self.entry_keys = {} - self.by_key = {} - self.callbacks = [] - - if entries is None: - entries = sys.path - - for entry in entries: - self.add_entry(entry) - - @classmethod - def _build_master(cls): - """ - Prepare the master working set. - """ - ws = cls() - try: - from __main__ import __requires__ - except ImportError: - # The main program does not list any requirements - return ws - - # ensure the requirements are met - try: - ws.require(__requires__) - except VersionConflict: - return cls._build_from_requirements(__requires__) - - return ws - - @classmethod - def _build_from_requirements(cls, req_spec): - """ - Build a working set from a requirement spec. Rewrites sys.path. - """ - # try it without defaults already on sys.path - # by starting with an empty path - ws = cls([]) - reqs = parse_requirements(req_spec) - dists = ws.resolve(reqs, Environment()) - for dist in dists: - ws.add(dist) - - # add any missing entries from sys.path - for entry in sys.path: - if entry not in ws.entries: - ws.add_entry(entry) - - # then copy back to sys.path - sys.path[:] = ws.entries - return ws - - def add_entry(self, entry): - """Add a path item to ``.entries``, finding any distributions on it - - ``find_distributions(entry, True)`` is used to find distributions - corresponding to the path entry, and they are added. `entry` is - always appended to ``.entries``, even if it is already present. - (This is because ``sys.path`` can contain the same value more than - once, and the ``.entries`` of the ``sys.path`` WorkingSet should always - equal ``sys.path``.) - """ - self.entry_keys.setdefault(entry, []) - self.entries.append(entry) - for dist in find_distributions(entry, True): - self.add(dist, entry, False) - - def __contains__(self, dist): - """True if `dist` is the active distribution for its project""" - return self.by_key.get(dist.key) == dist - - def find(self, req): - """Find a distribution matching requirement `req` - - If there is an active distribution for the requested project, this - returns it as long as it meets the version requirement specified by - `req`. But, if there is an active distribution for the project and it - does *not* meet the `req` requirement, ``VersionConflict`` is raised. - If there is no active distribution for the requested project, ``None`` - is returned. - """ - dist = self.by_key.get(req.key) - if dist is not None and dist not in req: - # XXX add more info - raise VersionConflict(dist, req) - return dist - - def iter_entry_points(self, group, name=None): - """Yield entry point objects from `group` matching `name` - - If `name` is None, yields all entry points in `group` from all - distributions in the working set, otherwise only ones matching - both `group` and `name` are yielded (in distribution order). - """ - for dist in self: - entries = dist.get_entry_map(group) - if name is None: - for ep in entries.values(): - yield ep - elif name in entries: - yield entries[name] - - def run_script(self, requires, script_name): - """Locate distribution for `requires` and run `script_name` script""" - ns = sys._getframe(1).f_globals - name = ns['__name__'] - ns.clear() - ns['__name__'] = name - self.require(requires)[0].run_script(script_name, ns) - - def __iter__(self): - """Yield distributions for non-duplicate projects in the working set - - The yield order is the order in which the items' path entries were - added to the working set. - """ - seen = {} - for item in self.entries: - if item not in self.entry_keys: - # workaround a cache issue - continue - - for key in self.entry_keys[item]: - if key not in seen: - seen[key] = 1 - yield self.by_key[key] - - def add(self, dist, entry=None, insert=True, replace=False): - """Add `dist` to working set, associated with `entry` - - If `entry` is unspecified, it defaults to the ``.location`` of `dist`. - On exit from this routine, `entry` is added to the end of the working - set's ``.entries`` (if it wasn't already present). - - `dist` is only added to the working set if it's for a project that - doesn't already have a distribution in the set, unless `replace=True`. - If it's added, any callbacks registered with the ``subscribe()`` method - will be called. - """ - if insert: - dist.insert_on(self.entries, entry, replace=replace) - - if entry is None: - entry = dist.location - keys = self.entry_keys.setdefault(entry, []) - keys2 = self.entry_keys.setdefault(dist.location, []) - if not replace and dist.key in self.by_key: - # ignore hidden distros - return - - self.by_key[dist.key] = dist - if dist.key not in keys: - keys.append(dist.key) - if dist.key not in keys2: - keys2.append(dist.key) - self._added_new(dist) - - def resolve(self, requirements, env=None, installer=None, - replace_conflicting=False): - """List all distributions needed to (recursively) meet `requirements` - - `requirements` must be a sequence of ``Requirement`` objects. `env`, - if supplied, should be an ``Environment`` instance. If - not supplied, it defaults to all distributions available within any - entry or distribution in the working set. `installer`, if supplied, - will be invoked with each requirement that cannot be met by an - already-installed distribution; it should return a ``Distribution`` or - ``None``. - - Unless `replace_conflicting=True`, raises a VersionConflict exception if - any requirements are found on the path that have the correct name but - the wrong version. Otherwise, if an `installer` is supplied it will be - invoked to obtain the correct version of the requirement and activate - it. - """ - - # set up the stack - requirements = list(requirements)[::-1] - # set of processed requirements - processed = {} - # key -> dist - best = {} - to_activate = [] - - req_extras = _ReqExtras() - - # Mapping of requirement to set of distributions that required it; - # useful for reporting info about conflicts. - required_by = collections.defaultdict(set) - - while requirements: - # process dependencies breadth-first - req = requirements.pop(0) - if req in processed: - # Ignore cyclic or redundant dependencies - continue - - if not req_extras.markers_pass(req): - continue - - dist = best.get(req.key) - if dist is None: - # Find the best distribution and add it to the map - dist = self.by_key.get(req.key) - if dist is None or (dist not in req and replace_conflicting): - ws = self - if env is None: - if dist is None: - env = Environment(self.entries) - else: - # Use an empty environment and workingset to avoid - # any further conflicts with the conflicting - # distribution - env = Environment([]) - ws = WorkingSet([]) - dist = best[req.key] = env.best_match(req, ws, installer) - if dist is None: - requirers = required_by.get(req, None) - raise DistributionNotFound(req, requirers) - to_activate.append(dist) - if dist not in req: - # Oops, the "best" so far conflicts with a dependency - dependent_req = required_by[req] - raise VersionConflict(dist, req).with_context(dependent_req) - - # push the new requirements onto the stack - new_requirements = dist.requires(req.extras)[::-1] - requirements.extend(new_requirements) - - # Register the new requirements needed by req - for new_requirement in new_requirements: - required_by[new_requirement].add(req.project_name) - req_extras[new_requirement] = req.extras - - processed[req] = True - - # return list of distros to activate - return to_activate - - def find_plugins(self, plugin_env, full_env=None, installer=None, - fallback=True): - """Find all activatable distributions in `plugin_env` - - Example usage:: - - distributions, errors = working_set.find_plugins( - Environment(plugin_dirlist) - ) - # add plugins+libs to sys.path - map(working_set.add, distributions) - # display errors - print('Could not load', errors) - - The `plugin_env` should be an ``Environment`` instance that contains - only distributions that are in the project's "plugin directory" or - directories. The `full_env`, if supplied, should be an ``Environment`` - contains all currently-available distributions. If `full_env` is not - supplied, one is created automatically from the ``WorkingSet`` this - method is called on, which will typically mean that every directory on - ``sys.path`` will be scanned for distributions. - - `installer` is a standard installer callback as used by the - ``resolve()`` method. The `fallback` flag indicates whether we should - attempt to resolve older versions of a plugin if the newest version - cannot be resolved. - - This method returns a 2-tuple: (`distributions`, `error_info`), where - `distributions` is a list of the distributions found in `plugin_env` - that were loadable, along with any other distributions that are needed - to resolve their dependencies. `error_info` is a dictionary mapping - unloadable plugin distributions to an exception instance describing the - error that occurred. Usually this will be a ``DistributionNotFound`` or - ``VersionConflict`` instance. - """ - - plugin_projects = list(plugin_env) - # scan project names in alphabetic order - plugin_projects.sort() - - error_info = {} - distributions = {} - - if full_env is None: - env = Environment(self.entries) - env += plugin_env - else: - env = full_env + plugin_env - - shadow_set = self.__class__([]) - # put all our entries in shadow_set - list(map(shadow_set.add, self)) - - for project_name in plugin_projects: - - for dist in plugin_env[project_name]: - - req = [dist.as_requirement()] - - try: - resolvees = shadow_set.resolve(req, env, installer) - - except ResolutionError as v: - # save error info - error_info[dist] = v - if fallback: - # try the next older version of project - continue - else: - # give up on this project, keep going - break - - else: - list(map(shadow_set.add, resolvees)) - distributions.update(dict.fromkeys(resolvees)) - - # success, no need to try any more versions of this project - break - - distributions = list(distributions) - distributions.sort() - - return distributions, error_info - - def require(self, *requirements): - """Ensure that distributions matching `requirements` are activated - - `requirements` must be a string or a (possibly-nested) sequence - thereof, specifying the distributions and versions required. The - return value is a sequence of the distributions that needed to be - activated to fulfill the requirements; all relevant distributions are - included, even if they were already activated in this working set. - """ - needed = self.resolve(parse_requirements(requirements)) - - for dist in needed: - self.add(dist) - - return needed - - def subscribe(self, callback, existing=True): - """Invoke `callback` for all distributions - - If `existing=True` (default), - call on all existing ones, as well. - """ - if callback in self.callbacks: - return - self.callbacks.append(callback) - if not existing: - return - for dist in self: - callback(dist) - - def _added_new(self, dist): - for callback in self.callbacks: - callback(dist) - - def __getstate__(self): - return ( - self.entries[:], self.entry_keys.copy(), self.by_key.copy(), - self.callbacks[:] - ) - - def __setstate__(self, e_k_b_c): - entries, keys, by_key, callbacks = e_k_b_c - self.entries = entries[:] - self.entry_keys = keys.copy() - self.by_key = by_key.copy() - self.callbacks = callbacks[:] - - -class _ReqExtras(dict): - """ - Map each requirement to the extras that demanded it. - """ - - def markers_pass(self, req): - """ - Evaluate markers for req against each extra that - demanded it. - - Return False if the req has a marker and fails - evaluation. Otherwise, return True. - """ - extra_evals = ( - req.marker.evaluate({'extra': extra}) - for extra in self.get(req, ()) + (None,) - ) - return not req.marker or any(extra_evals) - - -class Environment(object): - """Searchable snapshot of distributions on a search path""" - - def __init__(self, search_path=None, platform=get_supported_platform(), - python=PY_MAJOR): - """Snapshot distributions available on a search path - - Any distributions found on `search_path` are added to the environment. - `search_path` should be a sequence of ``sys.path`` items. If not - supplied, ``sys.path`` is used. - - `platform` is an optional string specifying the name of the platform - that platform-specific distributions must be compatible with. If - unspecified, it defaults to the current platform. `python` is an - optional string naming the desired version of Python (e.g. ``'3.3'``); - it defaults to the current version. - - You may explicitly set `platform` (and/or `python`) to ``None`` if you - wish to map *all* distributions, not just those compatible with the - running platform or Python version. - """ - self._distmap = {} - self.platform = platform - self.python = python - self.scan(search_path) - - def can_add(self, dist): - """Is distribution `dist` acceptable for this environment? - - The distribution must match the platform and python version - requirements specified when this environment was created, or False - is returned. - """ - return (self.python is None or dist.py_version is None - or dist.py_version == self.python) \ - and compatible_platforms(dist.platform, self.platform) - - def remove(self, dist): - """Remove `dist` from the environment""" - self._distmap[dist.key].remove(dist) - - def scan(self, search_path=None): - """Scan `search_path` for distributions usable in this environment - - Any distributions found are added to the environment. - `search_path` should be a sequence of ``sys.path`` items. If not - supplied, ``sys.path`` is used. Only distributions conforming to - the platform/python version defined at initialization are added. - """ - if search_path is None: - search_path = sys.path - - for item in search_path: - for dist in find_distributions(item): - self.add(dist) - - def __getitem__(self, project_name): - """Return a newest-to-oldest list of distributions for `project_name` - - Uses case-insensitive `project_name` comparison, assuming all the - project's distributions use their project's name converted to all - lowercase as their key. - - """ - distribution_key = project_name.lower() - return self._distmap.get(distribution_key, []) - - def add(self, dist): - """Add `dist` if we ``can_add()`` it and it has not already been added - """ - if self.can_add(dist) and dist.has_version(): - dists = self._distmap.setdefault(dist.key, []) - if dist not in dists: - dists.append(dist) - dists.sort(key=operator.attrgetter('hashcmp'), reverse=True) - - def best_match(self, req, working_set, installer=None): - """Find distribution best matching `req` and usable on `working_set` - - This calls the ``find(req)`` method of the `working_set` to see if a - suitable distribution is already active. (This may raise - ``VersionConflict`` if an unsuitable version of the project is already - active in the specified `working_set`.) If a suitable distribution - isn't active, this method returns the newest distribution in the - environment that meets the ``Requirement`` in `req`. If no suitable - distribution is found, and `installer` is supplied, then the result of - calling the environment's ``obtain(req, installer)`` method will be - returned. - """ - dist = working_set.find(req) - if dist is not None: - return dist - for dist in self[req.key]: - if dist in req: - return dist - # try to download/install - return self.obtain(req, installer) - - def obtain(self, requirement, installer=None): - """Obtain a distribution matching `requirement` (e.g. via download) - - Obtain a distro that matches requirement (e.g. via download). In the - base ``Environment`` class, this routine just returns - ``installer(requirement)``, unless `installer` is None, in which case - None is returned instead. This method is a hook that allows subclasses - to attempt other ways of obtaining a distribution before falling back - to the `installer` argument.""" - if installer is not None: - return installer(requirement) - - def __iter__(self): - """Yield the unique project names of the available distributions""" - for key in self._distmap.keys(): - if self[key]: - yield key - - def __iadd__(self, other): - """In-place addition of a distribution or environment""" - if isinstance(other, Distribution): - self.add(other) - elif isinstance(other, Environment): - for project in other: - for dist in other[project]: - self.add(dist) - else: - raise TypeError("Can't add %r to environment" % (other,)) - return self - - def __add__(self, other): - """Add an environment or distribution to an environment""" - new = self.__class__([], platform=None, python=None) - for env in self, other: - new += env - return new - - -# XXX backward compatibility -AvailableDistributions = Environment - - -class ExtractionError(RuntimeError): - """An error occurred extracting a resource - - The following attributes are available from instances of this exception: - - manager - The resource manager that raised this exception - - cache_path - The base directory for resource extraction - - original_error - The exception instance that caused extraction to fail - """ - - -class ResourceManager: - """Manage resource extraction and packages""" - extraction_path = None - - def __init__(self): - self.cached_files = {} - - def resource_exists(self, package_or_requirement, resource_name): - """Does the named resource exist?""" - return get_provider(package_or_requirement).has_resource(resource_name) - - def resource_isdir(self, package_or_requirement, resource_name): - """Is the named resource an existing directory?""" - return get_provider(package_or_requirement).resource_isdir( - resource_name - ) - - def resource_filename(self, package_or_requirement, resource_name): - """Return a true filesystem path for specified resource""" - return get_provider(package_or_requirement).get_resource_filename( - self, resource_name - ) - - def resource_stream(self, package_or_requirement, resource_name): - """Return a readable file-like object for specified resource""" - return get_provider(package_or_requirement).get_resource_stream( - self, resource_name - ) - - def resource_string(self, package_or_requirement, resource_name): - """Return specified resource as a string""" - return get_provider(package_or_requirement).get_resource_string( - self, resource_name - ) - - def resource_listdir(self, package_or_requirement, resource_name): - """List the contents of the named resource directory""" - return get_provider(package_or_requirement).resource_listdir( - resource_name - ) - - def extraction_error(self): - """Give an error message for problems extracting file(s)""" - - old_exc = sys.exc_info()[1] - cache_path = self.extraction_path or get_default_cache() - - tmpl = textwrap.dedent(""" - Can't extract file(s) to egg cache - - The following error occurred while trying to extract file(s) to the Python egg - cache: - - {old_exc} - - The Python egg cache directory is currently set to: - - {cache_path} - - Perhaps your account does not have write access to this directory? You can - change the cache directory by setting the PYTHON_EGG_CACHE environment - variable to point to an accessible directory. - """).lstrip() - err = ExtractionError(tmpl.format(**locals())) - err.manager = self - err.cache_path = cache_path - err.original_error = old_exc - raise err - - def get_cache_path(self, archive_name, names=()): - """Return absolute location in cache for `archive_name` and `names` - - The parent directory of the resulting path will be created if it does - not already exist. `archive_name` should be the base filename of the - enclosing egg (which may not be the name of the enclosing zipfile!), - including its ".egg" extension. `names`, if provided, should be a - sequence of path name parts "under" the egg's extraction location. - - This method should only be called by resource providers that need to - obtain an extraction location, and only for names they intend to - extract, as it tracks the generated names for possible cleanup later. - """ - extract_path = self.extraction_path or get_default_cache() - target_path = os.path.join(extract_path, archive_name + '-tmp', *names) - try: - _bypass_ensure_directory(target_path) - except: - self.extraction_error() - - self._warn_unsafe_extraction_path(extract_path) - - self.cached_files[target_path] = 1 - return target_path - - @staticmethod - def _warn_unsafe_extraction_path(path): - """ - If the default extraction path is overridden and set to an insecure - location, such as /tmp, it opens up an opportunity for an attacker to - replace an extracted file with an unauthorized payload. Warn the user - if a known insecure location is used. - - See Distribute #375 for more details. - """ - if os.name == 'nt' and not path.startswith(os.environ['windir']): - # On Windows, permissions are generally restrictive by default - # and temp directories are not writable by other users, so - # bypass the warning. - return - mode = os.stat(path).st_mode - if mode & stat.S_IWOTH or mode & stat.S_IWGRP: - msg = ("%s is writable by group/others and vulnerable to attack " - "when " - "used with get_resource_filename. Consider a more secure " - "location (set with .set_extraction_path or the " - "PYTHON_EGG_CACHE environment variable)." % path) - warnings.warn(msg, UserWarning) - - def postprocess(self, tempname, filename): - """Perform any platform-specific postprocessing of `tempname` - - This is where Mac header rewrites should be done; other platforms don't - have anything special they should do. - - Resource providers should call this method ONLY after successfully - extracting a compressed resource. They must NOT call it on resources - that are already in the filesystem. - - `tempname` is the current (temporary) name of the file, and `filename` - is the name it will be renamed to by the caller after this routine - returns. - """ - - if os.name == 'posix': - # Make the resource executable - mode = ((os.stat(tempname).st_mode) | 0o555) & 0o7777 - os.chmod(tempname, mode) - - def set_extraction_path(self, path): - """Set the base path where resources will be extracted to, if needed. - - If you do not call this routine before any extractions take place, the - path defaults to the return value of ``get_default_cache()``. (Which - is based on the ``PYTHON_EGG_CACHE`` environment variable, with various - platform-specific fallbacks. See that routine's documentation for more - details.) - - Resources are extracted to subdirectories of this path based upon - information given by the ``IResourceProvider``. You may set this to a - temporary directory, but then you must call ``cleanup_resources()`` to - delete the extracted files when done. There is no guarantee that - ``cleanup_resources()`` will be able to remove all extracted files. - - (Note: you may not change the extraction path for a given resource - manager once resources have been extracted, unless you first call - ``cleanup_resources()``.) - """ - if self.cached_files: - raise ValueError( - "Can't change extraction path, files already extracted" - ) - - self.extraction_path = path - - def cleanup_resources(self, force=False): - """ - Delete all extracted resource files and directories, returning a list - of the file and directory names that could not be successfully removed. - This function does not have any concurrency protection, so it should - generally only be called when the extraction path is a temporary - directory exclusive to a single process. This method is not - automatically called; you must call it explicitly or register it as an - ``atexit`` function if you wish to ensure cleanup of a temporary - directory used for extractions. - """ - # XXX - - -def get_default_cache(): - """ - Return the ``PYTHON_EGG_CACHE`` environment variable - or a platform-relevant user cache dir for an app - named "Python-Eggs". - """ - return ( - os.environ.get('PYTHON_EGG_CACHE') - or appdirs.user_cache_dir(appname='Python-Eggs') - ) - - -def safe_name(name): - """Convert an arbitrary string to a standard distribution name - - Any runs of non-alphanumeric/. characters are replaced with a single '-'. - """ - return re.sub('[^A-Za-z0-9.]+', '-', name) - - -def safe_version(version): - """ - Convert an arbitrary string to a standard version string - """ - try: - # normalize the version - return str(packaging.version.Version(version)) - except packaging.version.InvalidVersion: - version = version.replace(' ', '.') - return re.sub('[^A-Za-z0-9.]+', '-', version) - - -def safe_extra(extra): - """Convert an arbitrary string to a standard 'extra' name - - Any runs of non-alphanumeric characters are replaced with a single '_', - and the result is always lowercased. - """ - return re.sub('[^A-Za-z0-9.-]+', '_', extra).lower() - - -def to_filename(name): - """Convert a project or version name to its filename-escaped form - - Any '-' characters are currently replaced with '_'. - """ - return name.replace('-', '_') - - -def invalid_marker(text): - """ - Validate text as a PEP 508 environment marker; return an exception - if invalid or False otherwise. - """ - try: - evaluate_marker(text) - except SyntaxError as e: - e.filename = None - e.lineno = None - return e - return False - - -def evaluate_marker(text, extra=None): - """ - Evaluate a PEP 508 environment marker. - Return a boolean indicating the marker result in this environment. - Raise SyntaxError if marker is invalid. - - This implementation uses the 'pyparsing' module. - """ - try: - marker = packaging.markers.Marker(text) - return marker.evaluate() - except packaging.markers.InvalidMarker as e: - raise SyntaxError(e) - - -class NullProvider: - """Try to implement resources and metadata for arbitrary PEP 302 loaders""" - - egg_name = None - egg_info = None - loader = None - - def __init__(self, module): - self.loader = getattr(module, '__loader__', None) - self.module_path = os.path.dirname(getattr(module, '__file__', '')) - - def get_resource_filename(self, manager, resource_name): - return self._fn(self.module_path, resource_name) - - def get_resource_stream(self, manager, resource_name): - return io.BytesIO(self.get_resource_string(manager, resource_name)) - - def get_resource_string(self, manager, resource_name): - return self._get(self._fn(self.module_path, resource_name)) - - def has_resource(self, resource_name): - return self._has(self._fn(self.module_path, resource_name)) - - def has_metadata(self, name): - return self.egg_info and self._has(self._fn(self.egg_info, name)) - - def get_metadata(self, name): - if not self.egg_info: - return "" - value = self._get(self._fn(self.egg_info, name)) - return value.decode('utf-8') if six.PY3 else value - - def get_metadata_lines(self, name): - return yield_lines(self.get_metadata(name)) - - def resource_isdir(self, resource_name): - return self._isdir(self._fn(self.module_path, resource_name)) - - def metadata_isdir(self, name): - return self.egg_info and self._isdir(self._fn(self.egg_info, name)) - - def resource_listdir(self, resource_name): - return self._listdir(self._fn(self.module_path, resource_name)) - - def metadata_listdir(self, name): - if self.egg_info: - return self._listdir(self._fn(self.egg_info, name)) - return [] - - def run_script(self, script_name, namespace): - script = 'scripts/' + script_name - if not self.has_metadata(script): - raise ResolutionError("No script named %r" % script_name) - script_text = self.get_metadata(script).replace('\r\n', '\n') - script_text = script_text.replace('\r', '\n') - script_filename = self._fn(self.egg_info, script) - namespace['__file__'] = script_filename - if os.path.exists(script_filename): - source = open(script_filename).read() - code = compile(source, script_filename, 'exec') - exec(code, namespace, namespace) - else: - from linecache import cache - cache[script_filename] = ( - len(script_text), 0, script_text.split('\n'), script_filename - ) - script_code = compile(script_text, script_filename, 'exec') - exec(script_code, namespace, namespace) - - def _has(self, path): - raise NotImplementedError( - "Can't perform this operation for unregistered loader type" - ) - - def _isdir(self, path): - raise NotImplementedError( - "Can't perform this operation for unregistered loader type" - ) - - def _listdir(self, path): - raise NotImplementedError( - "Can't perform this operation for unregistered loader type" - ) - - def _fn(self, base, resource_name): - if resource_name: - return os.path.join(base, *resource_name.split('/')) - return base - - def _get(self, path): - if hasattr(self.loader, 'get_data'): - return self.loader.get_data(path) - raise NotImplementedError( - "Can't perform this operation for loaders without 'get_data()'" - ) - - -register_loader_type(object, NullProvider) - - -class EggProvider(NullProvider): - """Provider based on a virtual filesystem""" - - def __init__(self, module): - NullProvider.__init__(self, module) - self._setup_prefix() - - def _setup_prefix(self): - # we assume here that our metadata may be nested inside a "basket" - # of multiple eggs; that's why we use module_path instead of .archive - path = self.module_path - old = None - while path != old: - if _is_unpacked_egg(path): - self.egg_name = os.path.basename(path) - self.egg_info = os.path.join(path, 'EGG-INFO') - self.egg_root = path - break - old = path - path, base = os.path.split(path) - - -class DefaultProvider(EggProvider): - """Provides access to package resources in the filesystem""" - - def _has(self, path): - return os.path.exists(path) - - def _isdir(self, path): - return os.path.isdir(path) - - def _listdir(self, path): - return os.listdir(path) - - def get_resource_stream(self, manager, resource_name): - return open(self._fn(self.module_path, resource_name), 'rb') - - def _get(self, path): - with open(path, 'rb') as stream: - return stream.read() - - @classmethod - def _register(cls): - loader_cls = getattr(importlib_machinery, 'SourceFileLoader', - type(None)) - register_loader_type(loader_cls, cls) - - -DefaultProvider._register() - - -class EmptyProvider(NullProvider): - """Provider that returns nothing for all requests""" - - _isdir = _has = lambda self, path: False - _get = lambda self, path: '' - _listdir = lambda self, path: [] - module_path = None - - def __init__(self): - pass - - -empty_provider = EmptyProvider() - - -class ZipManifests(dict): - """ - zip manifest builder - """ - - @classmethod - def build(cls, path): - """ - Build a dictionary similar to the zipimport directory - caches, except instead of tuples, store ZipInfo objects. - - Use a platform-specific path separator (os.sep) for the path keys - for compatibility with pypy on Windows. - """ - with ContextualZipFile(path) as zfile: - items = ( - ( - name.replace('/', os.sep), - zfile.getinfo(name), - ) - for name in zfile.namelist() - ) - return dict(items) - - load = build - - -class MemoizedZipManifests(ZipManifests): - """ - Memoized zipfile manifests. - """ - manifest_mod = collections.namedtuple('manifest_mod', 'manifest mtime') - - def load(self, path): - """ - Load a manifest at path or return a suitable manifest already loaded. - """ - path = os.path.normpath(path) - mtime = os.stat(path).st_mtime - - if path not in self or self[path].mtime != mtime: - manifest = self.build(path) - self[path] = self.manifest_mod(manifest, mtime) - - return self[path].manifest - - -class ContextualZipFile(zipfile.ZipFile): - """ - Supplement ZipFile class to support context manager for Python 2.6 - """ - - def __enter__(self): - return self - - def __exit__(self, type, value, traceback): - self.close() - - def __new__(cls, *args, **kwargs): - """ - Construct a ZipFile or ContextualZipFile as appropriate - """ - if hasattr(zipfile.ZipFile, '__exit__'): - return zipfile.ZipFile(*args, **kwargs) - return super(ContextualZipFile, cls).__new__(cls) - - -class ZipProvider(EggProvider): - """Resource support for zips and eggs""" - - eagers = None - _zip_manifests = MemoizedZipManifests() - - def __init__(self, module): - EggProvider.__init__(self, module) - self.zip_pre = self.loader.archive + os.sep - - def _zipinfo_name(self, fspath): - # Convert a virtual filename (full path to file) into a zipfile subpath - # usable with the zipimport directory cache for our target archive - if fspath.startswith(self.zip_pre): - return fspath[len(self.zip_pre):] - raise AssertionError( - "%s is not a subpath of %s" % (fspath, self.zip_pre) - ) - - def _parts(self, zip_path): - # Convert a zipfile subpath into an egg-relative path part list. - # pseudo-fs path - fspath = self.zip_pre + zip_path - if fspath.startswith(self.egg_root + os.sep): - return fspath[len(self.egg_root) + 1:].split(os.sep) - raise AssertionError( - "%s is not a subpath of %s" % (fspath, self.egg_root) - ) - - @property - def zipinfo(self): - return self._zip_manifests.load(self.loader.archive) - - def get_resource_filename(self, manager, resource_name): - if not self.egg_name: - raise NotImplementedError( - "resource_filename() only supported for .egg, not .zip" - ) - # no need to lock for extraction, since we use temp names - zip_path = self._resource_to_zip(resource_name) - eagers = self._get_eager_resources() - if '/'.join(self._parts(zip_path)) in eagers: - for name in eagers: - self._extract_resource(manager, self._eager_to_zip(name)) - return self._extract_resource(manager, zip_path) - - @staticmethod - def _get_date_and_size(zip_stat): - size = zip_stat.file_size - # ymdhms+wday, yday, dst - date_time = zip_stat.date_time + (0, 0, -1) - # 1980 offset already done - timestamp = time.mktime(date_time) - return timestamp, size - - def _extract_resource(self, manager, zip_path): - - if zip_path in self._index(): - for name in self._index()[zip_path]: - last = self._extract_resource( - manager, os.path.join(zip_path, name) - ) - # return the extracted directory name - return os.path.dirname(last) - - timestamp, size = self._get_date_and_size(self.zipinfo[zip_path]) - - if not WRITE_SUPPORT: - raise IOError('"os.rename" and "os.unlink" are not supported ' - 'on this platform') - try: - - real_path = manager.get_cache_path( - self.egg_name, self._parts(zip_path) - ) - - if self._is_current(real_path, zip_path): - return real_path - - outf, tmpnam = _mkstemp(".$extract", dir=os.path.dirname(real_path)) - os.write(outf, self.loader.get_data(zip_path)) - os.close(outf) - utime(tmpnam, (timestamp, timestamp)) - manager.postprocess(tmpnam, real_path) - - try: - rename(tmpnam, real_path) - - except os.error: - if os.path.isfile(real_path): - if self._is_current(real_path, zip_path): - # the file became current since it was checked above, - # so proceed. - return real_path - # Windows, del old file and retry - elif os.name == 'nt': - unlink(real_path) - rename(tmpnam, real_path) - return real_path - raise - - except os.error: - # report a user-friendly error - manager.extraction_error() - - return real_path - - def _is_current(self, file_path, zip_path): - """ - Return True if the file_path is current for this zip_path - """ - timestamp, size = self._get_date_and_size(self.zipinfo[zip_path]) - if not os.path.isfile(file_path): - return False - stat = os.stat(file_path) - if stat.st_size != size or stat.st_mtime != timestamp: - return False - # check that the contents match - zip_contents = self.loader.get_data(zip_path) - with open(file_path, 'rb') as f: - file_contents = f.read() - return zip_contents == file_contents - - def _get_eager_resources(self): - if self.eagers is None: - eagers = [] - for name in ('native_libs.txt', 'eager_resources.txt'): - if self.has_metadata(name): - eagers.extend(self.get_metadata_lines(name)) - self.eagers = eagers - return self.eagers - - def _index(self): - try: - return self._dirindex - except AttributeError: - ind = {} - for path in self.zipinfo: - parts = path.split(os.sep) - while parts: - parent = os.sep.join(parts[:-1]) - if parent in ind: - ind[parent].append(parts[-1]) - break - else: - ind[parent] = [parts.pop()] - self._dirindex = ind - return ind - - def _has(self, fspath): - zip_path = self._zipinfo_name(fspath) - return zip_path in self.zipinfo or zip_path in self._index() - - def _isdir(self, fspath): - return self._zipinfo_name(fspath) in self._index() - - def _listdir(self, fspath): - return list(self._index().get(self._zipinfo_name(fspath), ())) - - def _eager_to_zip(self, resource_name): - return self._zipinfo_name(self._fn(self.egg_root, resource_name)) - - def _resource_to_zip(self, resource_name): - return self._zipinfo_name(self._fn(self.module_path, resource_name)) - - -register_loader_type(zipimport.zipimporter, ZipProvider) - - -class FileMetadata(EmptyProvider): - """Metadata handler for standalone PKG-INFO files - - Usage:: - - metadata = FileMetadata("/path/to/PKG-INFO") - - This provider rejects all data and metadata requests except for PKG-INFO, - which is treated as existing, and will be the contents of the file at - the provided location. - """ - - def __init__(self, path): - self.path = path - - def has_metadata(self, name): - return name == 'PKG-INFO' and os.path.isfile(self.path) - - def get_metadata(self, name): - if name != 'PKG-INFO': - raise KeyError("No metadata except PKG-INFO is available") - - with io.open(self.path, encoding='utf-8', errors="replace") as f: - metadata = f.read() - self._warn_on_replacement(metadata) - return metadata - - def _warn_on_replacement(self, metadata): - # Python 2.6 and 3.2 compat for: replacement_char = '�' - replacement_char = b'\xef\xbf\xbd'.decode('utf-8') - if replacement_char in metadata: - tmpl = "{self.path} could not be properly decoded in UTF-8" - msg = tmpl.format(**locals()) - warnings.warn(msg) - - def get_metadata_lines(self, name): - return yield_lines(self.get_metadata(name)) - - -class PathMetadata(DefaultProvider): - """Metadata provider for egg directories - - Usage:: - - # Development eggs: - - egg_info = "/path/to/PackageName.egg-info" - base_dir = os.path.dirname(egg_info) - metadata = PathMetadata(base_dir, egg_info) - dist_name = os.path.splitext(os.path.basename(egg_info))[0] - dist = Distribution(basedir, project_name=dist_name, metadata=metadata) - - # Unpacked egg directories: - - egg_path = "/path/to/PackageName-ver-pyver-etc.egg" - metadata = PathMetadata(egg_path, os.path.join(egg_path,'EGG-INFO')) - dist = Distribution.from_filename(egg_path, metadata=metadata) - """ - - def __init__(self, path, egg_info): - self.module_path = path - self.egg_info = egg_info - - -class EggMetadata(ZipProvider): - """Metadata provider for .egg files""" - - def __init__(self, importer): - """Create a metadata provider from a zipimporter""" - - self.zip_pre = importer.archive + os.sep - self.loader = importer - if importer.prefix: - self.module_path = os.path.join(importer.archive, importer.prefix) - else: - self.module_path = importer.archive - self._setup_prefix() - - -_declare_state('dict', _distribution_finders={}) - - -def register_finder(importer_type, distribution_finder): - """Register `distribution_finder` to find distributions in sys.path items - - `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item - handler), and `distribution_finder` is a callable that, passed a path - item and the importer instance, yields ``Distribution`` instances found on - that path item. See ``pkg_resources.find_on_path`` for an example.""" - _distribution_finders[importer_type] = distribution_finder - - -def find_distributions(path_item, only=False): - """Yield distributions accessible via `path_item`""" - importer = get_importer(path_item) - finder = _find_adapter(_distribution_finders, importer) - return finder(importer, path_item, only) - - -def find_eggs_in_zip(importer, path_item, only=False): - """ - Find eggs in zip files; possibly multiple nested eggs. - """ - if importer.archive.endswith('.whl'): - # wheels are not supported with this finder - # they don't have PKG-INFO metadata, and won't ever contain eggs - return - metadata = EggMetadata(importer) - if metadata.has_metadata('PKG-INFO'): - yield Distribution.from_filename(path_item, metadata=metadata) - if only: - # don't yield nested distros - return - for subitem in metadata.resource_listdir('/'): - if _is_unpacked_egg(subitem): - subpath = os.path.join(path_item, subitem) - for dist in find_eggs_in_zip(zipimport.zipimporter(subpath), subpath): - yield dist - - -register_finder(zipimport.zipimporter, find_eggs_in_zip) - - -def find_nothing(importer, path_item, only=False): - return () - - -register_finder(object, find_nothing) - - -def _by_version_descending(names): - """ - Given a list of filenames, return them in descending order - by version number. - - >>> names = 'bar', 'foo', 'Python-2.7.10.egg', 'Python-2.7.2.egg' - >>> _by_version_descending(names) - ['Python-2.7.10.egg', 'Python-2.7.2.egg', 'foo', 'bar'] - >>> names = 'Setuptools-1.2.3b1.egg', 'Setuptools-1.2.3.egg' - >>> _by_version_descending(names) - ['Setuptools-1.2.3.egg', 'Setuptools-1.2.3b1.egg'] - >>> names = 'Setuptools-1.2.3b1.egg', 'Setuptools-1.2.3.post1.egg' - >>> _by_version_descending(names) - ['Setuptools-1.2.3.post1.egg', 'Setuptools-1.2.3b1.egg'] - """ - def _by_version(name): - """ - Parse each component of the filename - """ - name, ext = os.path.splitext(name) - parts = itertools.chain(name.split('-'), [ext]) - return [packaging.version.parse(part) for part in parts] - - return sorted(names, key=_by_version, reverse=True) - - -def find_on_path(importer, path_item, only=False): - """Yield distributions accessible on a sys.path directory""" - path_item = _normalize_cached(path_item) - - if os.path.isdir(path_item) and os.access(path_item, os.R_OK): - if _is_unpacked_egg(path_item): - yield Distribution.from_filename( - path_item, metadata=PathMetadata( - path_item, os.path.join(path_item, 'EGG-INFO') - ) - ) - else: - # scan for .egg and .egg-info in directory - path_item_entries = _by_version_descending(os.listdir(path_item)) - for entry in path_item_entries: - lower = entry.lower() - if lower.endswith('.egg-info') or lower.endswith('.dist-info'): - fullpath = os.path.join(path_item, entry) - if os.path.isdir(fullpath): - # egg-info directory, allow getting metadata - if len(os.listdir(fullpath)) == 0: - # Empty egg directory, skip. - continue - metadata = PathMetadata(path_item, fullpath) - else: - metadata = FileMetadata(fullpath) - yield Distribution.from_location( - path_item, entry, metadata, precedence=DEVELOP_DIST - ) - elif not only and _is_unpacked_egg(entry): - dists = find_distributions(os.path.join(path_item, entry)) - for dist in dists: - yield dist - elif not only and lower.endswith('.egg-link'): - with open(os.path.join(path_item, entry)) as entry_file: - entry_lines = entry_file.readlines() - for line in entry_lines: - if not line.strip(): - continue - path = os.path.join(path_item, line.rstrip()) - dists = find_distributions(path) - for item in dists: - yield item - break - - -register_finder(pkgutil.ImpImporter, find_on_path) - -if hasattr(importlib_machinery, 'FileFinder'): - register_finder(importlib_machinery.FileFinder, find_on_path) - -_declare_state('dict', _namespace_handlers={}) -_declare_state('dict', _namespace_packages={}) - - -def register_namespace_handler(importer_type, namespace_handler): - """Register `namespace_handler` to declare namespace packages - - `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item - handler), and `namespace_handler` is a callable like this:: - - def namespace_handler(importer, path_entry, moduleName, module): - # return a path_entry to use for child packages - - Namespace handlers are only called if the importer object has already - agreed that it can handle the relevant path item, and they should only - return a subpath if the module __path__ does not already contain an - equivalent subpath. For an example namespace handler, see - ``pkg_resources.file_ns_handler``. - """ - _namespace_handlers[importer_type] = namespace_handler - - -def _handle_ns(packageName, path_item): - """Ensure that named package includes a subpath of path_item (if needed)""" - - importer = get_importer(path_item) - if importer is None: - return None - loader = importer.find_module(packageName) - if loader is None: - return None - module = sys.modules.get(packageName) - if module is None: - module = sys.modules[packageName] = types.ModuleType(packageName) - module.__path__ = [] - _set_parent_ns(packageName) - elif not hasattr(module, '__path__'): - raise TypeError("Not a package:", packageName) - handler = _find_adapter(_namespace_handlers, importer) - subpath = handler(importer, path_item, packageName, module) - if subpath is not None: - path = module.__path__ - path.append(subpath) - loader.load_module(packageName) - _rebuild_mod_path(path, packageName, module) - return subpath - - -def _rebuild_mod_path(orig_path, package_name, module): - """ - Rebuild module.__path__ ensuring that all entries are ordered - corresponding to their sys.path order - """ - sys_path = [_normalize_cached(p) for p in sys.path] - - def safe_sys_path_index(entry): - """ - Workaround for #520 and #513. - """ - try: - return sys_path.index(entry) - except ValueError: - return float('inf') - - def position_in_sys_path(path): - """ - Return the ordinal of the path based on its position in sys.path - """ - path_parts = path.split(os.sep) - module_parts = package_name.count('.') + 1 - parts = path_parts[:-module_parts] - return safe_sys_path_index(_normalize_cached(os.sep.join(parts))) - - orig_path.sort(key=position_in_sys_path) - module.__path__[:] = [_normalize_cached(p) for p in orig_path] - - -def declare_namespace(packageName): - """Declare that package 'packageName' is a namespace package""" - - _imp.acquire_lock() - try: - if packageName in _namespace_packages: - return - - path, parent = sys.path, None - if '.' in packageName: - parent = '.'.join(packageName.split('.')[:-1]) - declare_namespace(parent) - if parent not in _namespace_packages: - __import__(parent) - try: - path = sys.modules[parent].__path__ - except AttributeError: - raise TypeError("Not a package:", parent) - - # Track what packages are namespaces, so when new path items are added, - # they can be updated - _namespace_packages.setdefault(parent, []).append(packageName) - _namespace_packages.setdefault(packageName, []) - - for path_item in path: - # Ensure all the parent's path items are reflected in the child, - # if they apply - _handle_ns(packageName, path_item) - - finally: - _imp.release_lock() - - -def fixup_namespace_packages(path_item, parent=None): - """Ensure that previously-declared namespace packages include path_item""" - _imp.acquire_lock() - try: - for package in _namespace_packages.get(parent, ()): - subpath = _handle_ns(package, path_item) - if subpath: - fixup_namespace_packages(subpath, package) - finally: - _imp.release_lock() - - -def file_ns_handler(importer, path_item, packageName, module): - """Compute an ns-package subpath for a filesystem or zipfile importer""" - - subpath = os.path.join(path_item, packageName.split('.')[-1]) - normalized = _normalize_cached(subpath) - for item in module.__path__: - if _normalize_cached(item) == normalized: - break - else: - # Only return the path if it's not already there - return subpath - - -register_namespace_handler(pkgutil.ImpImporter, file_ns_handler) -register_namespace_handler(zipimport.zipimporter, file_ns_handler) - -if hasattr(importlib_machinery, 'FileFinder'): - register_namespace_handler(importlib_machinery.FileFinder, file_ns_handler) - - -def null_ns_handler(importer, path_item, packageName, module): - return None - - -register_namespace_handler(object, null_ns_handler) - - -def normalize_path(filename): - """Normalize a file/dir name for comparison purposes""" - return os.path.normcase(os.path.realpath(filename)) - - -def _normalize_cached(filename, _cache={}): - try: - return _cache[filename] - except KeyError: - _cache[filename] = result = normalize_path(filename) - return result - - -def _is_unpacked_egg(path): - """ - Determine if given path appears to be an unpacked egg. - """ - return ( - path.lower().endswith('.egg') - ) - - -def _set_parent_ns(packageName): - parts = packageName.split('.') - name = parts.pop() - if parts: - parent = '.'.join(parts) - setattr(sys.modules[parent], name, sys.modules[packageName]) - - -def yield_lines(strs): - """Yield non-empty/non-comment lines of a string or sequence""" - if isinstance(strs, six.string_types): - for s in strs.splitlines(): - s = s.strip() - # skip blank lines/comments - if s and not s.startswith('#'): - yield s - else: - for ss in strs: - for s in yield_lines(ss): - yield s - - -MODULE = re.compile(r"\w+(\.\w+)*$").match -EGG_NAME = re.compile( - r""" - (?P<name>[^-]+) ( - -(?P<ver>[^-]+) ( - -py(?P<pyver>[^-]+) ( - -(?P<plat>.+) - )? - )? - )? - """, - re.VERBOSE | re.IGNORECASE, -).match - - -class EntryPoint(object): - """Object representing an advertised importable object""" - - def __init__(self, name, module_name, attrs=(), extras=(), dist=None): - if not MODULE(module_name): - raise ValueError("Invalid module name", module_name) - self.name = name - self.module_name = module_name - self.attrs = tuple(attrs) - self.extras = Requirement.parse(("x[%s]" % ','.join(extras))).extras - self.dist = dist - - def __str__(self): - s = "%s = %s" % (self.name, self.module_name) - if self.attrs: - s += ':' + '.'.join(self.attrs) - if self.extras: - s += ' [%s]' % ','.join(self.extras) - return s - - def __repr__(self): - return "EntryPoint.parse(%r)" % str(self) - - def load(self, require=True, *args, **kwargs): - """ - Require packages for this EntryPoint, then resolve it. - """ - if not require or args or kwargs: - warnings.warn( - "Parameters to load are deprecated. Call .resolve and " - ".require separately.", - DeprecationWarning, - stacklevel=2, - ) - if require: - self.require(*args, **kwargs) - return self.resolve() - - def resolve(self): - """ - Resolve the entry point from its module and attrs. - """ - module = __import__(self.module_name, fromlist=['__name__'], level=0) - try: - return functools.reduce(getattr, self.attrs, module) - except AttributeError as exc: - raise ImportError(str(exc)) - - def require(self, env=None, installer=None): - if self.extras and not self.dist: - raise UnknownExtra("Can't require() without a distribution", self) - reqs = self.dist.requires(self.extras) - items = working_set.resolve(reqs, env, installer) - list(map(working_set.add, items)) - - pattern = re.compile( - r'\s*' - r'(?P<name>.+?)\s*' - r'=\s*' - r'(?P<module>[\w.]+)\s*' - r'(:\s*(?P<attr>[\w.]+))?\s*' - r'(?P<extras>\[.*\])?\s*$' - ) - - @classmethod - def parse(cls, src, dist=None): - """Parse a single entry point from string `src` - - Entry point syntax follows the form:: - - name = some.module:some.attr [extra1, extra2] - - The entry name and module name are required, but the ``:attrs`` and - ``[extras]`` parts are optional - """ - m = cls.pattern.match(src) - if not m: - msg = "EntryPoint must be in 'name=module:attrs [extras]' format" - raise ValueError(msg, src) - res = m.groupdict() - extras = cls._parse_extras(res['extras']) - attrs = res['attr'].split('.') if res['attr'] else () - return cls(res['name'], res['module'], attrs, extras, dist) - - @classmethod - def _parse_extras(cls, extras_spec): - if not extras_spec: - return () - req = Requirement.parse('x' + extras_spec) - if req.specs: - raise ValueError() - return req.extras - - @classmethod - def parse_group(cls, group, lines, dist=None): - """Parse an entry point group""" - if not MODULE(group): - raise ValueError("Invalid group name", group) - this = {} - for line in yield_lines(lines): - ep = cls.parse(line, dist) - if ep.name in this: - raise ValueError("Duplicate entry point", group, ep.name) - this[ep.name] = ep - return this - - @classmethod - def parse_map(cls, data, dist=None): - """Parse a map of entry point groups""" - if isinstance(data, dict): - data = data.items() - else: - data = split_sections(data) - maps = {} - for group, lines in data: - if group is None: - if not lines: - continue - raise ValueError("Entry points must be listed in groups") - group = group.strip() - if group in maps: - raise ValueError("Duplicate group name", group) - maps[group] = cls.parse_group(group, lines, dist) - return maps - - -def _remove_md5_fragment(location): - if not location: - return '' - parsed = urllib.parse.urlparse(location) - if parsed[-1].startswith('md5='): - return urllib.parse.urlunparse(parsed[:-1] + ('',)) - return location - - -def _version_from_file(lines): - """ - Given an iterable of lines from a Metadata file, return - the value of the Version field, if present, or None otherwise. - """ - is_version_line = lambda line: line.lower().startswith('version:') - version_lines = filter(is_version_line, lines) - line = next(iter(version_lines), '') - _, _, value = line.partition(':') - return safe_version(value.strip()) or None - - -class Distribution(object): - """Wrap an actual or potential sys.path entry w/metadata""" - PKG_INFO = 'PKG-INFO' - - def __init__(self, location=None, metadata=None, project_name=None, - version=None, py_version=PY_MAJOR, platform=None, - precedence=EGG_DIST): - self.project_name = safe_name(project_name or 'Unknown') - if version is not None: - self._version = safe_version(version) - self.py_version = py_version - self.platform = platform - self.location = location - self.precedence = precedence - self._provider = metadata or empty_provider - - @classmethod - def from_location(cls, location, basename, metadata=None, **kw): - project_name, version, py_version, platform = [None] * 4 - basename, ext = os.path.splitext(basename) - if ext.lower() in _distributionImpl: - cls = _distributionImpl[ext.lower()] - - match = EGG_NAME(basename) - if match: - project_name, version, py_version, platform = match.group( - 'name', 'ver', 'pyver', 'plat' - ) - return cls( - location, metadata, project_name=project_name, version=version, - py_version=py_version, platform=platform, **kw - )._reload_version() - - def _reload_version(self): - return self - - @property - def hashcmp(self): - return ( - self.parsed_version, - self.precedence, - self.key, - _remove_md5_fragment(self.location), - self.py_version or '', - self.platform or '', - ) - - def __hash__(self): - return hash(self.hashcmp) - - def __lt__(self, other): - return self.hashcmp < other.hashcmp - - def __le__(self, other): - return self.hashcmp <= other.hashcmp - - def __gt__(self, other): - return self.hashcmp > other.hashcmp - - def __ge__(self, other): - return self.hashcmp >= other.hashcmp - - def __eq__(self, other): - if not isinstance(other, self.__class__): - # It's not a Distribution, so they are not equal - return False - return self.hashcmp == other.hashcmp - - def __ne__(self, other): - return not self == other - - # These properties have to be lazy so that we don't have to load any - # metadata until/unless it's actually needed. (i.e., some distributions - # may not know their name or version without loading PKG-INFO) - - @property - def key(self): - try: - return self._key - except AttributeError: - self._key = key = self.project_name.lower() - return key - - @property - def parsed_version(self): - if not hasattr(self, "_parsed_version"): - self._parsed_version = parse_version(self.version) - - return self._parsed_version - - def _warn_legacy_version(self): - LV = packaging.version.LegacyVersion - is_legacy = isinstance(self._parsed_version, LV) - if not is_legacy: - return - - # While an empty version is technically a legacy version and - # is not a valid PEP 440 version, it's also unlikely to - # actually come from someone and instead it is more likely that - # it comes from setuptools attempting to parse a filename and - # including it in the list. So for that we'll gate this warning - # on if the version is anything at all or not. - if not self.version: - return - - tmpl = textwrap.dedent(""" - '{project_name} ({version})' is being parsed as a legacy, - non PEP 440, - version. You may find odd behavior and sort order. - In particular it will be sorted as less than 0.0. It - is recommended to migrate to PEP 440 compatible - versions. - """).strip().replace('\n', ' ') - - warnings.warn(tmpl.format(**vars(self)), PEP440Warning) - - @property - def version(self): - try: - return self._version - except AttributeError: - version = _version_from_file(self._get_metadata(self.PKG_INFO)) - if version is None: - tmpl = "Missing 'Version:' header and/or %s file" - raise ValueError(tmpl % self.PKG_INFO, self) - return version - - @property - def _dep_map(self): - try: - return self.__dep_map - except AttributeError: - dm = self.__dep_map = {None: []} - for name in 'requires.txt', 'depends.txt': - for extra, reqs in split_sections(self._get_metadata(name)): - if extra: - if ':' in extra: - extra, marker = extra.split(':', 1) - if invalid_marker(marker): - # XXX warn - reqs = [] - elif not evaluate_marker(marker): - reqs = [] - extra = safe_extra(extra) or None - dm.setdefault(extra, []).extend(parse_requirements(reqs)) - return dm - - def requires(self, extras=()): - """List of Requirements needed for this distro if `extras` are used""" - dm = self._dep_map - deps = [] - deps.extend(dm.get(None, ())) - for ext in extras: - try: - deps.extend(dm[safe_extra(ext)]) - except KeyError: - raise UnknownExtra( - "%s has no such extra feature %r" % (self, ext) - ) - return deps - - def _get_metadata(self, name): - if self.has_metadata(name): - for line in self.get_metadata_lines(name): - yield line - - def activate(self, path=None, replace=False): - """Ensure distribution is importable on `path` (default=sys.path)""" - if path is None: - path = sys.path - self.insert_on(path, replace=replace) - if path is sys.path: - fixup_namespace_packages(self.location) - for pkg in self._get_metadata('namespace_packages.txt'): - if pkg in sys.modules: - declare_namespace(pkg) - - def egg_name(self): - """Return what this distribution's standard .egg filename should be""" - filename = "%s-%s-py%s" % ( - to_filename(self.project_name), to_filename(self.version), - self.py_version or PY_MAJOR - ) - - if self.platform: - filename += '-' + self.platform - return filename - - def __repr__(self): - if self.location: - return "%s (%s)" % (self, self.location) - else: - return str(self) - - def __str__(self): - try: - version = getattr(self, 'version', None) - except ValueError: - version = None - version = version or "[unknown version]" - return "%s %s" % (self.project_name, version) - - def __getattr__(self, attr): - """Delegate all unrecognized public attributes to .metadata provider""" - if attr.startswith('_'): - raise AttributeError(attr) - return getattr(self._provider, attr) - - @classmethod - def from_filename(cls, filename, metadata=None, **kw): - return cls.from_location( - _normalize_cached(filename), os.path.basename(filename), metadata, - **kw - ) - - def as_requirement(self): - """Return a ``Requirement`` that matches this distribution exactly""" - if isinstance(self.parsed_version, packaging.version.Version): - spec = "%s==%s" % (self.project_name, self.parsed_version) - else: - spec = "%s===%s" % (self.project_name, self.parsed_version) - - return Requirement.parse(spec) - - def load_entry_point(self, group, name): - """Return the `name` entry point of `group` or raise ImportError""" - ep = self.get_entry_info(group, name) - if ep is None: - raise ImportError("Entry point %r not found" % ((group, name),)) - return ep.load() - - def get_entry_map(self, group=None): - """Return the entry point map for `group`, or the full entry map""" - try: - ep_map = self._ep_map - except AttributeError: - ep_map = self._ep_map = EntryPoint.parse_map( - self._get_metadata('entry_points.txt'), self - ) - if group is not None: - return ep_map.get(group, {}) - return ep_map - - def get_entry_info(self, group, name): - """Return the EntryPoint object for `group`+`name`, or ``None``""" - return self.get_entry_map(group).get(name) - - def insert_on(self, path, loc=None, replace=False): - """Ensure self.location is on path - - If replace=False (default): - - If location is already in path anywhere, do nothing. - - Else: - - If it's an egg and its parent directory is on path, - insert just ahead of the parent. - - Else: add to the end of path. - If replace=True: - - If location is already on path anywhere (not eggs) - or higher priority than its parent (eggs) - do nothing. - - Else: - - If it's an egg and its parent directory is on path, - insert just ahead of the parent, - removing any lower-priority entries. - - Else: add it to the front of path. - """ - - loc = loc or self.location - if not loc: - return - - nloc = _normalize_cached(loc) - bdir = os.path.dirname(nloc) - npath = [(p and _normalize_cached(p) or p) for p in path] - - for p, item in enumerate(npath): - if item == nloc: - if replace: - break - else: - # don't modify path (even removing duplicates) if found and not replace - return - elif item == bdir and self.precedence == EGG_DIST: - # if it's an .egg, give it precedence over its directory - # UNLESS it's already been added to sys.path and replace=False - if (not replace) and nloc in npath[p:]: - return - if path is sys.path: - self.check_version_conflict() - path.insert(p, loc) - npath.insert(p, nloc) - break - else: - if path is sys.path: - self.check_version_conflict() - if replace: - path.insert(0, loc) - else: - path.append(loc) - return - - # p is the spot where we found or inserted loc; now remove duplicates - while True: - try: - np = npath.index(nloc, p + 1) - except ValueError: - break - else: - del npath[np], path[np] - # ha! - p = np - - return - - def check_version_conflict(self): - if self.key == 'setuptools': - # ignore the inevitable setuptools self-conflicts :( - return - - nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt')) - loc = normalize_path(self.location) - for modname in self._get_metadata('top_level.txt'): - if (modname not in sys.modules or modname in nsp - or modname in _namespace_packages): - continue - if modname in ('pkg_resources', 'setuptools', 'site'): - continue - fn = getattr(sys.modules[modname], '__file__', None) - if fn and (normalize_path(fn).startswith(loc) or - fn.startswith(self.location)): - continue - issue_warning( - "Module %s was already imported from %s, but %s is being added" - " to sys.path" % (modname, fn, self.location), - ) - - def has_version(self): - try: - self.version - except ValueError: - issue_warning("Unbuilt egg for " + repr(self)) - return False - return True - - def clone(self, **kw): - """Copy this distribution, substituting in any changed keyword args""" - names = 'project_name version py_version platform location precedence' - for attr in names.split(): - kw.setdefault(attr, getattr(self, attr, None)) - kw.setdefault('metadata', self._provider) - return self.__class__(**kw) - - @property - def extras(self): - return [dep for dep in self._dep_map if dep] - - -class EggInfoDistribution(Distribution): - def _reload_version(self): - """ - Packages installed by distutils (e.g. numpy or scipy), - which uses an old safe_version, and so - their version numbers can get mangled when - converted to filenames (e.g., 1.11.0.dev0+2329eae to - 1.11.0.dev0_2329eae). These distributions will not be - parsed properly - downstream by Distribution and safe_version, so - take an extra step and try to get the version number from - the metadata file itself instead of the filename. - """ - md_version = _version_from_file(self._get_metadata(self.PKG_INFO)) - if md_version: - self._version = md_version - return self - - -class DistInfoDistribution(Distribution): - """Wrap an actual or potential sys.path entry w/metadata, .dist-info style""" - PKG_INFO = 'METADATA' - EQEQ = re.compile(r"([\(,])\s*(\d.*?)\s*([,\)])") - - @property - def _parsed_pkg_info(self): - """Parse and cache metadata""" - try: - return self._pkg_info - except AttributeError: - metadata = self.get_metadata(self.PKG_INFO) - self._pkg_info = email.parser.Parser().parsestr(metadata) - return self._pkg_info - - @property - def _dep_map(self): - try: - return self.__dep_map - except AttributeError: - self.__dep_map = self._compute_dependencies() - return self.__dep_map - - def _compute_dependencies(self): - """Recompute this distribution's dependencies.""" - dm = self.__dep_map = {None: []} - - reqs = [] - # Including any condition expressions - for req in self._parsed_pkg_info.get_all('Requires-Dist') or []: - reqs.extend(parse_requirements(req)) - - def reqs_for_extra(extra): - for req in reqs: - if not req.marker or req.marker.evaluate({'extra': extra}): - yield req - - common = frozenset(reqs_for_extra(None)) - dm[None].extend(common) - - for extra in self._parsed_pkg_info.get_all('Provides-Extra') or []: - s_extra = safe_extra(extra.strip()) - dm[s_extra] = list(frozenset(reqs_for_extra(extra)) - common) - - return dm - - -_distributionImpl = { - '.egg': Distribution, - '.egg-info': EggInfoDistribution, - '.dist-info': DistInfoDistribution, - } - - -def issue_warning(*args, **kw): - level = 1 - g = globals() - try: - # find the first stack frame that is *not* code in - # the pkg_resources module, to use for the warning - while sys._getframe(level).f_globals is g: - level += 1 - except ValueError: - pass - warnings.warn(stacklevel=level + 1, *args, **kw) - - -class RequirementParseError(ValueError): - def __str__(self): - return ' '.join(self.args) - - -def parse_requirements(strs): - """Yield ``Requirement`` objects for each specification in `strs` - - `strs` must be a string, or a (possibly-nested) iterable thereof. - """ - # create a steppable iterator, so we can handle \-continuations - lines = iter(yield_lines(strs)) - - for line in lines: - # Drop comments -- a hash without a space may be in a URL. - if ' #' in line: - line = line[:line.find(' #')] - # If there is a line continuation, drop it, and append the next line. - if line.endswith('\\'): - line = line[:-2].strip() - line += next(lines) - yield Requirement(line) - - -class Requirement(packaging.requirements.Requirement): - def __init__(self, requirement_string): - """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!""" - try: - super(Requirement, self).__init__(requirement_string) - except packaging.requirements.InvalidRequirement as e: - raise RequirementParseError(str(e)) - self.unsafe_name = self.name - project_name = safe_name(self.name) - self.project_name, self.key = project_name, project_name.lower() - self.specs = [ - (spec.operator, spec.version) for spec in self.specifier] - self.extras = tuple(map(safe_extra, self.extras)) - self.hashCmp = ( - self.key, - self.specifier, - frozenset(self.extras), - str(self.marker) if self.marker else None, - ) - self.__hash = hash(self.hashCmp) - - def __eq__(self, other): - return ( - isinstance(other, Requirement) and - self.hashCmp == other.hashCmp - ) - - def __ne__(self, other): - return not self == other - - def __contains__(self, item): - if isinstance(item, Distribution): - if item.key != self.key: - return False - - item = item.version - - # Allow prereleases always in order to match the previous behavior of - # this method. In the future this should be smarter and follow PEP 440 - # more accurately. - return self.specifier.contains(item, prereleases=True) - - def __hash__(self): - return self.__hash - - def __repr__(self): return "Requirement.parse(%r)" % str(self) - - @staticmethod - def parse(s): - req, = parse_requirements(s) - return req - - -def _get_mro(cls): - """Get an mro for a type or classic class""" - if not isinstance(cls, type): - - class cls(cls, object): - pass - - return cls.__mro__[1:] - return cls.__mro__ - - -def _find_adapter(registry, ob): - """Return an adapter factory for `ob` from `registry`""" - for t in _get_mro(getattr(ob, '__class__', type(ob))): - if t in registry: - return registry[t] - - -def ensure_directory(path): - """Ensure that the parent directory of `path` exists""" - dirname = os.path.dirname(path) - if not os.path.isdir(dirname): - os.makedirs(dirname) - - -def _bypass_ensure_directory(path): - """Sandbox-bypassing version of ensure_directory()""" - if not WRITE_SUPPORT: - raise IOError('"os.mkdir" not supported on this platform.') - dirname, filename = split(path) - if dirname and filename and not isdir(dirname): - _bypass_ensure_directory(dirname) - mkdir(dirname, 0o755) - - -def split_sections(s): - """Split a string or iterable thereof into (section, content) pairs - - Each ``section`` is a stripped version of the section header ("[section]") - and each ``content`` is a list of stripped lines excluding blank lines and - comment-only lines. If there are any such lines before the first section - header, they're returned in a first ``section`` of ``None``. - """ - section = None - content = [] - for line in yield_lines(s): - if line.startswith("["): - if line.endswith("]"): - if section or content: - yield section, content - section = line[1:-1].strip() - content = [] - else: - raise ValueError("Invalid section heading", line) - else: - content.append(line) - - # wrap up last segment - yield section, content - - -def _mkstemp(*args, **kw): - old_open = os.open - try: - # temporarily bypass sandboxing - os.open = os_open - return tempfile.mkstemp(*args, **kw) - finally: - # and then put it back - os.open = old_open - - -# Silence the PEP440Warning by default, so that end users don't get hit by it -# randomly just because they use pkg_resources. We want to append the rule -# because we want earlier uses of filterwarnings to take precedence over this -# one. -warnings.filterwarnings("ignore", category=PEP440Warning, append=True) - - -# from jaraco.functools 1.3 -def _call_aside(f, *args, **kwargs): - f(*args, **kwargs) - return f - - -@_call_aside -def _initialize(g=globals()): - "Set up global resource manager (deliberately not state-saved)" - manager = ResourceManager() - g['_manager'] = manager - for name in dir(manager): - if not name.startswith('_'): - g[name] = getattr(manager, name) - - -@_call_aside -def _initialize_master_working_set(): - """ - Prepare the master working set and make the ``require()`` - API available. - - This function has explicit effects on the global state - of pkg_resources. It is intended to be invoked once at - the initialization of this module. - - Invocation by other packages is unsupported and done - at their own risk. - """ - working_set = WorkingSet._build_master() - _declare_state('object', working_set=working_set) - - require = working_set.require - iter_entry_points = working_set.iter_entry_points - add_activation_listener = working_set.subscribe - run_script = working_set.run_script - # backward compatibility - run_main = run_script - # Activate all distributions already on sys.path with replace=False and - # ensure that all distributions added to the working set in the future - # (e.g. by calling ``require()``) will get activated as well, - # with higher priority (replace=True). - dist = None # ensure dist is defined for del dist below - for dist in working_set: - dist.activate(replace=False) - del dist - add_activation_listener(lambda dist: dist.activate(replace=True), existing=False) - working_set.entries = [] - # match order - list(map(working_set.add_entry, sys.path)) - globals().update(locals()) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 12590e4f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 3c0384fa..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc deleted file mode 100644 index 57c1c359..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc deleted file mode 100644 index 35bdf14e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.pyc deleted file mode 100644 index 2233e3c3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/appdirs.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/appdirs.py deleted file mode 100644 index f4dba095..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/appdirs.py +++ /dev/null @@ -1,552 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Copyright (c) 2005-2010 ActiveState Software Inc. -# Copyright (c) 2013 Eddy Petrișor - -"""Utilities for determining application-specific dirs. - -See <http://github.com/ActiveState/appdirs> for details and usage. -""" -# Dev Notes: -# - MSDN on where to store app data files: -# http://support.microsoft.com/default.aspx?scid=kb;en-us;310294#XSLTH3194121123120121120120 -# - Mac OS X: http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/index.html -# - XDG spec for Un*x: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html - -__version_info__ = (1, 4, 0) -__version__ = '.'.join(map(str, __version_info__)) - - -import sys -import os - -PY3 = sys.version_info[0] == 3 - -if PY3: - unicode = str - -if sys.platform.startswith('java'): - import platform - os_name = platform.java_ver()[3][0] - if os_name.startswith('Windows'): # "Windows XP", "Windows 7", etc. - system = 'win32' - elif os_name.startswith('Mac'): # "Mac OS X", etc. - system = 'darwin' - else: # "Linux", "SunOS", "FreeBSD", etc. - # Setting this to "linux2" is not ideal, but only Windows or Mac - # are actually checked for and the rest of the module expects - # *sys.platform* style strings. - system = 'linux2' -else: - system = sys.platform - - - -def user_data_dir(appname=None, appauthor=None, version=None, roaming=False): - r"""Return full path to the user-specific data dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be "<major>.<minor>". - Only applied when appname is present. - "roaming" (boolean, default False) can be set True to use the Windows - roaming appdata directory. That means that for users on a Windows - network setup for roaming profiles, this user data will be - sync'd on login. See - <http://technet.microsoft.com/en-us/library/cc766489(WS.10).aspx> - for a discussion of issues. - - Typical user data directories are: - Mac OS X: ~/Library/Application Support/<AppName> - Unix: ~/.local/share/<AppName> # or in $XDG_DATA_HOME, if defined - Win XP (not roaming): C:\Documents and Settings\<username>\Application Data\<AppAuthor>\<AppName> - Win XP (roaming): C:\Documents and Settings\<username>\Local Settings\Application Data\<AppAuthor>\<AppName> - Win 7 (not roaming): C:\Users\<username>\AppData\Local\<AppAuthor>\<AppName> - Win 7 (roaming): C:\Users\<username>\AppData\Roaming\<AppAuthor>\<AppName> - - For Unix, we follow the XDG spec and support $XDG_DATA_HOME. - That means, by default "~/.local/share/<AppName>". - """ - if system == "win32": - if appauthor is None: - appauthor = appname - const = roaming and "CSIDL_APPDATA" or "CSIDL_LOCAL_APPDATA" - path = os.path.normpath(_get_win_folder(const)) - if appname: - if appauthor is not False: - path = os.path.join(path, appauthor, appname) - else: - path = os.path.join(path, appname) - elif system == 'darwin': - path = os.path.expanduser('~/Library/Application Support/') - if appname: - path = os.path.join(path, appname) - else: - path = os.getenv('XDG_DATA_HOME', os.path.expanduser("~/.local/share")) - if appname: - path = os.path.join(path, appname) - if appname and version: - path = os.path.join(path, version) - return path - - -def site_data_dir(appname=None, appauthor=None, version=None, multipath=False): - """Return full path to the user-shared data dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be "<major>.<minor>". - Only applied when appname is present. - "multipath" is an optional parameter only applicable to *nix - which indicates that the entire list of data dirs should be - returned. By default, the first item from XDG_DATA_DIRS is - returned, or '/usr/local/share/<AppName>', - if XDG_DATA_DIRS is not set - - Typical user data directories are: - Mac OS X: /Library/Application Support/<AppName> - Unix: /usr/local/share/<AppName> or /usr/share/<AppName> - Win XP: C:\Documents and Settings\All Users\Application Data\<AppAuthor>\<AppName> - Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) - Win 7: C:\ProgramData\<AppAuthor>\<AppName> # Hidden, but writeable on Win 7. - - For Unix, this is using the $XDG_DATA_DIRS[0] default. - - WARNING: Do not use this on Windows. See the Vista-Fail note above for why. - """ - if system == "win32": - if appauthor is None: - appauthor = appname - path = os.path.normpath(_get_win_folder("CSIDL_COMMON_APPDATA")) - if appname: - if appauthor is not False: - path = os.path.join(path, appauthor, appname) - else: - path = os.path.join(path, appname) - elif system == 'darwin': - path = os.path.expanduser('/Library/Application Support') - if appname: - path = os.path.join(path, appname) - else: - # XDG default for $XDG_DATA_DIRS - # only first, if multipath is False - path = os.getenv('XDG_DATA_DIRS', - os.pathsep.join(['/usr/local/share', '/usr/share'])) - pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] - if appname: - if version: - appname = os.path.join(appname, version) - pathlist = [os.sep.join([x, appname]) for x in pathlist] - - if multipath: - path = os.pathsep.join(pathlist) - else: - path = pathlist[0] - return path - - if appname and version: - path = os.path.join(path, version) - return path - - -def user_config_dir(appname=None, appauthor=None, version=None, roaming=False): - r"""Return full path to the user-specific config dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be "<major>.<minor>". - Only applied when appname is present. - "roaming" (boolean, default False) can be set True to use the Windows - roaming appdata directory. That means that for users on a Windows - network setup for roaming profiles, this user data will be - sync'd on login. See - <http://technet.microsoft.com/en-us/library/cc766489(WS.10).aspx> - for a discussion of issues. - - Typical user data directories are: - Mac OS X: same as user_data_dir - Unix: ~/.config/<AppName> # or in $XDG_CONFIG_HOME, if defined - Win *: same as user_data_dir - - For Unix, we follow the XDG spec and support $XDG_CONFIG_HOME. - That means, by deafult "~/.config/<AppName>". - """ - if system in ["win32", "darwin"]: - path = user_data_dir(appname, appauthor, None, roaming) - else: - path = os.getenv('XDG_CONFIG_HOME', os.path.expanduser("~/.config")) - if appname: - path = os.path.join(path, appname) - if appname and version: - path = os.path.join(path, version) - return path - - -def site_config_dir(appname=None, appauthor=None, version=None, multipath=False): - """Return full path to the user-shared data dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be "<major>.<minor>". - Only applied when appname is present. - "multipath" is an optional parameter only applicable to *nix - which indicates that the entire list of config dirs should be - returned. By default, the first item from XDG_CONFIG_DIRS is - returned, or '/etc/xdg/<AppName>', if XDG_CONFIG_DIRS is not set - - Typical user data directories are: - Mac OS X: same as site_data_dir - Unix: /etc/xdg/<AppName> or $XDG_CONFIG_DIRS[i]/<AppName> for each value in - $XDG_CONFIG_DIRS - Win *: same as site_data_dir - Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) - - For Unix, this is using the $XDG_CONFIG_DIRS[0] default, if multipath=False - - WARNING: Do not use this on Windows. See the Vista-Fail note above for why. - """ - if system in ["win32", "darwin"]: - path = site_data_dir(appname, appauthor) - if appname and version: - path = os.path.join(path, version) - else: - # XDG default for $XDG_CONFIG_DIRS - # only first, if multipath is False - path = os.getenv('XDG_CONFIG_DIRS', '/etc/xdg') - pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] - if appname: - if version: - appname = os.path.join(appname, version) - pathlist = [os.sep.join([x, appname]) for x in pathlist] - - if multipath: - path = os.pathsep.join(pathlist) - else: - path = pathlist[0] - return path - - -def user_cache_dir(appname=None, appauthor=None, version=None, opinion=True): - r"""Return full path to the user-specific cache dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be "<major>.<minor>". - Only applied when appname is present. - "opinion" (boolean) can be False to disable the appending of - "Cache" to the base app data dir for Windows. See - discussion below. - - Typical user cache directories are: - Mac OS X: ~/Library/Caches/<AppName> - Unix: ~/.cache/<AppName> (XDG default) - Win XP: C:\Documents and Settings\<username>\Local Settings\Application Data\<AppAuthor>\<AppName>\Cache - Vista: C:\Users\<username>\AppData\Local\<AppAuthor>\<AppName>\Cache - - On Windows the only suggestion in the MSDN docs is that local settings go in - the `CSIDL_LOCAL_APPDATA` directory. This is identical to the non-roaming - app data dir (the default returned by `user_data_dir` above). Apps typically - put cache data somewhere *under* the given dir here. Some examples: - ...\Mozilla\Firefox\Profiles\<ProfileName>\Cache - ...\Acme\SuperApp\Cache\1.0 - OPINION: This function appends "Cache" to the `CSIDL_LOCAL_APPDATA` value. - This can be disabled with the `opinion=False` option. - """ - if system == "win32": - if appauthor is None: - appauthor = appname - path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA")) - if appname: - if appauthor is not False: - path = os.path.join(path, appauthor, appname) - else: - path = os.path.join(path, appname) - if opinion: - path = os.path.join(path, "Cache") - elif system == 'darwin': - path = os.path.expanduser('~/Library/Caches') - if appname: - path = os.path.join(path, appname) - else: - path = os.getenv('XDG_CACHE_HOME', os.path.expanduser('~/.cache')) - if appname: - path = os.path.join(path, appname) - if appname and version: - path = os.path.join(path, version) - return path - - -def user_log_dir(appname=None, appauthor=None, version=None, opinion=True): - r"""Return full path to the user-specific log dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be "<major>.<minor>". - Only applied when appname is present. - "opinion" (boolean) can be False to disable the appending of - "Logs" to the base app data dir for Windows, and "log" to the - base cache dir for Unix. See discussion below. - - Typical user cache directories are: - Mac OS X: ~/Library/Logs/<AppName> - Unix: ~/.cache/<AppName>/log # or under $XDG_CACHE_HOME if defined - Win XP: C:\Documents and Settings\<username>\Local Settings\Application Data\<AppAuthor>\<AppName>\Logs - Vista: C:\Users\<username>\AppData\Local\<AppAuthor>\<AppName>\Logs - - On Windows the only suggestion in the MSDN docs is that local settings - go in the `CSIDL_LOCAL_APPDATA` directory. (Note: I'm interested in - examples of what some windows apps use for a logs dir.) - - OPINION: This function appends "Logs" to the `CSIDL_LOCAL_APPDATA` - value for Windows and appends "log" to the user cache dir for Unix. - This can be disabled with the `opinion=False` option. - """ - if system == "darwin": - path = os.path.join( - os.path.expanduser('~/Library/Logs'), - appname) - elif system == "win32": - path = user_data_dir(appname, appauthor, version) - version = False - if opinion: - path = os.path.join(path, "Logs") - else: - path = user_cache_dir(appname, appauthor, version) - version = False - if opinion: - path = os.path.join(path, "log") - if appname and version: - path = os.path.join(path, version) - return path - - -class AppDirs(object): - """Convenience wrapper for getting application dirs.""" - def __init__(self, appname, appauthor=None, version=None, roaming=False, - multipath=False): - self.appname = appname - self.appauthor = appauthor - self.version = version - self.roaming = roaming - self.multipath = multipath - - @property - def user_data_dir(self): - return user_data_dir(self.appname, self.appauthor, - version=self.version, roaming=self.roaming) - - @property - def site_data_dir(self): - return site_data_dir(self.appname, self.appauthor, - version=self.version, multipath=self.multipath) - - @property - def user_config_dir(self): - return user_config_dir(self.appname, self.appauthor, - version=self.version, roaming=self.roaming) - - @property - def site_config_dir(self): - return site_config_dir(self.appname, self.appauthor, - version=self.version, multipath=self.multipath) - - @property - def user_cache_dir(self): - return user_cache_dir(self.appname, self.appauthor, - version=self.version) - - @property - def user_log_dir(self): - return user_log_dir(self.appname, self.appauthor, - version=self.version) - - -#---- internal support stuff - -def _get_win_folder_from_registry(csidl_name): - """This is a fallback technique at best. I'm not sure if using the - registry for this guarantees us the correct answer for all CSIDL_* - names. - """ - import _winreg - - shell_folder_name = { - "CSIDL_APPDATA": "AppData", - "CSIDL_COMMON_APPDATA": "Common AppData", - "CSIDL_LOCAL_APPDATA": "Local AppData", - }[csidl_name] - - key = _winreg.OpenKey( - _winreg.HKEY_CURRENT_USER, - r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" - ) - dir, type = _winreg.QueryValueEx(key, shell_folder_name) - return dir - - -def _get_win_folder_with_pywin32(csidl_name): - from win32com.shell import shellcon, shell - dir = shell.SHGetFolderPath(0, getattr(shellcon, csidl_name), 0, 0) - # Try to make this a unicode path because SHGetFolderPath does - # not return unicode strings when there is unicode data in the - # path. - try: - dir = unicode(dir) - - # Downgrade to short path name if have highbit chars. See - # <http://bugs.activestate.com/show_bug.cgi?id=85099>. - has_high_char = False - for c in dir: - if ord(c) > 255: - has_high_char = True - break - if has_high_char: - try: - import win32api - dir = win32api.GetShortPathName(dir) - except ImportError: - pass - except UnicodeError: - pass - return dir - - -def _get_win_folder_with_ctypes(csidl_name): - import ctypes - - csidl_const = { - "CSIDL_APPDATA": 26, - "CSIDL_COMMON_APPDATA": 35, - "CSIDL_LOCAL_APPDATA": 28, - }[csidl_name] - - buf = ctypes.create_unicode_buffer(1024) - ctypes.windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf) - - # Downgrade to short path name if have highbit chars. See - # <http://bugs.activestate.com/show_bug.cgi?id=85099>. - has_high_char = False - for c in buf: - if ord(c) > 255: - has_high_char = True - break - if has_high_char: - buf2 = ctypes.create_unicode_buffer(1024) - if ctypes.windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024): - buf = buf2 - - return buf.value - -def _get_win_folder_with_jna(csidl_name): - import array - from com.sun import jna - from com.sun.jna.platform import win32 - - buf_size = win32.WinDef.MAX_PATH * 2 - buf = array.zeros('c', buf_size) - shell = win32.Shell32.INSTANCE - shell.SHGetFolderPath(None, getattr(win32.ShlObj, csidl_name), None, win32.ShlObj.SHGFP_TYPE_CURRENT, buf) - dir = jna.Native.toString(buf.tostring()).rstrip("\0") - - # Downgrade to short path name if have highbit chars. See - # <http://bugs.activestate.com/show_bug.cgi?id=85099>. - has_high_char = False - for c in dir: - if ord(c) > 255: - has_high_char = True - break - if has_high_char: - buf = array.zeros('c', buf_size) - kernel = win32.Kernel32.INSTANCE - if kernal.GetShortPathName(dir, buf, buf_size): - dir = jna.Native.toString(buf.tostring()).rstrip("\0") - - return dir - -if system == "win32": - try: - import win32com.shell - _get_win_folder = _get_win_folder_with_pywin32 - except ImportError: - try: - from ctypes import windll - _get_win_folder = _get_win_folder_with_ctypes - except ImportError: - try: - import com.sun.jna - _get_win_folder = _get_win_folder_with_jna - except ImportError: - _get_win_folder = _get_win_folder_from_registry - - -#---- self test code - -if __name__ == "__main__": - appname = "MyApp" - appauthor = "MyCompany" - - props = ("user_data_dir", "site_data_dir", - "user_config_dir", "site_config_dir", - "user_cache_dir", "user_log_dir") - - print("-- app dirs (with optional 'version')") - dirs = AppDirs(appname, appauthor, version="1.0") - for prop in props: - print("%s: %s" % (prop, getattr(dirs, prop))) - - print("\n-- app dirs (without optional 'version')") - dirs = AppDirs(appname, appauthor) - for prop in props: - print("%s: %s" % (prop, getattr(dirs, prop))) - - print("\n-- app dirs (without optional 'appauthor')") - dirs = AppDirs(appname) - for prop in props: - print("%s: %s" % (prop, getattr(dirs, prop))) - - print("\n-- app dirs (with disabled 'appauthor')") - dirs = AppDirs(appname, appauthor=False) - for prop in props: - print("%s: %s" % (prop, getattr(dirs, prop))) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__about__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__about__.py deleted file mode 100644 index c21a758b..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__about__.py +++ /dev/null @@ -1,21 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. -from __future__ import absolute_import, division, print_function - -__all__ = [ - "__title__", "__summary__", "__uri__", "__version__", "__author__", - "__email__", "__license__", "__copyright__", -] - -__title__ = "packaging" -__summary__ = "Core utilities for Python packages" -__uri__ = "https://github.com/pypa/packaging" - -__version__ = "16.7" - -__author__ = "Donald Stufft and individual contributors" -__email__ = "donald@stufft.io" - -__license__ = "BSD or Apache License, Version 2.0" -__copyright__ = "Copyright 2014-2016 %s" % __author__ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__init__.py deleted file mode 100644 index 5ee62202..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. -from __future__ import absolute_import, division, print_function - -from .__about__ import ( - __author__, __copyright__, __email__, __license__, __summary__, __title__, - __uri__, __version__ -) - -__all__ = [ - "__title__", "__summary__", "__uri__", "__version__", "__author__", - "__email__", "__license__", "__copyright__", -] diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc deleted file mode 100644 index 2fba030a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 148c44bc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc deleted file mode 100644 index 7ce38f70..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc deleted file mode 100644 index 12943271..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc deleted file mode 100644 index 3c39e23a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc deleted file mode 100644 index 21877b4d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc deleted file mode 100644 index b6b65c89..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc deleted file mode 100644 index 973aa978..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc deleted file mode 100644 index 2802c3a2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_compat.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_compat.py deleted file mode 100644 index 210bb80b..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_compat.py +++ /dev/null @@ -1,30 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. -from __future__ import absolute_import, division, print_function - -import sys - - -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] == 3 - -# flake8: noqa - -if PY3: - string_types = str, -else: - string_types = basestring, - - -def with_metaclass(meta, *bases): - """ - Create a base class with a metaclass. - """ - # This requires a bit of explanation: the basic idea is to make a dummy - # metaclass for one level of class instantiation that replaces itself with - # the actual metaclass. - class metaclass(meta): - def __new__(cls, name, this_bases, d): - return meta(name, bases, d) - return type.__new__(metaclass, 'temporary_class', (), {}) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_structures.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_structures.py deleted file mode 100644 index ccc27861..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_structures.py +++ /dev/null @@ -1,68 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. -from __future__ import absolute_import, division, print_function - - -class Infinity(object): - - def __repr__(self): - return "Infinity" - - def __hash__(self): - return hash(repr(self)) - - def __lt__(self, other): - return False - - def __le__(self, other): - return False - - def __eq__(self, other): - return isinstance(other, self.__class__) - - def __ne__(self, other): - return not isinstance(other, self.__class__) - - def __gt__(self, other): - return True - - def __ge__(self, other): - return True - - def __neg__(self): - return NegativeInfinity - -Infinity = Infinity() - - -class NegativeInfinity(object): - - def __repr__(self): - return "-Infinity" - - def __hash__(self): - return hash(repr(self)) - - def __lt__(self, other): - return True - - def __le__(self, other): - return True - - def __eq__(self, other): - return isinstance(other, self.__class__) - - def __ne__(self, other): - return not isinstance(other, self.__class__) - - def __gt__(self, other): - return False - - def __ge__(self, other): - return False - - def __neg__(self): - return Infinity - -NegativeInfinity = NegativeInfinity() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/markers.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/markers.py deleted file mode 100644 index c5d29cd9..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/markers.py +++ /dev/null @@ -1,287 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. -from __future__ import absolute_import, division, print_function - -import operator -import os -import platform -import sys - -from pkg_resources.extern.pyparsing import ParseException, ParseResults, stringStart, stringEnd -from pkg_resources.extern.pyparsing import ZeroOrMore, Group, Forward, QuotedString -from pkg_resources.extern.pyparsing import Literal as L # noqa - -from ._compat import string_types -from .specifiers import Specifier, InvalidSpecifier - - -__all__ = [ - "InvalidMarker", "UndefinedComparison", "UndefinedEnvironmentName", - "Marker", "default_environment", -] - - -class InvalidMarker(ValueError): - """ - An invalid marker was found, users should refer to PEP 508. - """ - - -class UndefinedComparison(ValueError): - """ - An invalid operation was attempted on a value that doesn't support it. - """ - - -class UndefinedEnvironmentName(ValueError): - """ - A name was attempted to be used that does not exist inside of the - environment. - """ - - -class Node(object): - - def __init__(self, value): - self.value = value - - def __str__(self): - return str(self.value) - - def __repr__(self): - return "<{0}({1!r})>".format(self.__class__.__name__, str(self)) - - -class Variable(Node): - pass - - -class Value(Node): - pass - - -VARIABLE = ( - L("implementation_version") | - L("platform_python_implementation") | - L("implementation_name") | - L("python_full_version") | - L("platform_release") | - L("platform_version") | - L("platform_machine") | - L("platform_system") | - L("python_version") | - L("sys_platform") | - L("os_name") | - L("os.name") | # PEP-345 - L("sys.platform") | # PEP-345 - L("platform.version") | # PEP-345 - L("platform.machine") | # PEP-345 - L("platform.python_implementation") | # PEP-345 - L("python_implementation") | # undocumented setuptools legacy - L("extra") -) -ALIASES = { - 'os.name': 'os_name', - 'sys.platform': 'sys_platform', - 'platform.version': 'platform_version', - 'platform.machine': 'platform_machine', - 'platform.python_implementation': 'platform_python_implementation', - 'python_implementation': 'platform_python_implementation' -} -VARIABLE.setParseAction(lambda s, l, t: Variable(ALIASES.get(t[0], t[0]))) - -VERSION_CMP = ( - L("===") | - L("==") | - L(">=") | - L("<=") | - L("!=") | - L("~=") | - L(">") | - L("<") -) - -MARKER_OP = VERSION_CMP | L("not in") | L("in") - -MARKER_VALUE = QuotedString("'") | QuotedString('"') -MARKER_VALUE.setParseAction(lambda s, l, t: Value(t[0])) - -BOOLOP = L("and") | L("or") - -MARKER_VAR = VARIABLE | MARKER_VALUE - -MARKER_ITEM = Group(MARKER_VAR + MARKER_OP + MARKER_VAR) -MARKER_ITEM.setParseAction(lambda s, l, t: tuple(t[0])) - -LPAREN = L("(").suppress() -RPAREN = L(")").suppress() - -MARKER_EXPR = Forward() -MARKER_ATOM = MARKER_ITEM | Group(LPAREN + MARKER_EXPR + RPAREN) -MARKER_EXPR << MARKER_ATOM + ZeroOrMore(BOOLOP + MARKER_EXPR) - -MARKER = stringStart + MARKER_EXPR + stringEnd - - -def _coerce_parse_result(results): - if isinstance(results, ParseResults): - return [_coerce_parse_result(i) for i in results] - else: - return results - - -def _format_marker(marker, first=True): - assert isinstance(marker, (list, tuple, string_types)) - - # Sometimes we have a structure like [[...]] which is a single item list - # where the single item is itself it's own list. In that case we want skip - # the rest of this function so that we don't get extraneous () on the - # outside. - if (isinstance(marker, list) and len(marker) == 1 and - isinstance(marker[0], (list, tuple))): - return _format_marker(marker[0]) - - if isinstance(marker, list): - inner = (_format_marker(m, first=False) for m in marker) - if first: - return " ".join(inner) - else: - return "(" + " ".join(inner) + ")" - elif isinstance(marker, tuple): - return '{0} {1} "{2}"'.format(*marker) - else: - return marker - - -_operators = { - "in": lambda lhs, rhs: lhs in rhs, - "not in": lambda lhs, rhs: lhs not in rhs, - "<": operator.lt, - "<=": operator.le, - "==": operator.eq, - "!=": operator.ne, - ">=": operator.ge, - ">": operator.gt, -} - - -def _eval_op(lhs, op, rhs): - try: - spec = Specifier("".join([op, rhs])) - except InvalidSpecifier: - pass - else: - return spec.contains(lhs) - - oper = _operators.get(op) - if oper is None: - raise UndefinedComparison( - "Undefined {0!r} on {1!r} and {2!r}.".format(op, lhs, rhs) - ) - - return oper(lhs, rhs) - - -_undefined = object() - - -def _get_env(environment, name): - value = environment.get(name, _undefined) - - if value is _undefined: - raise UndefinedEnvironmentName( - "{0!r} does not exist in evaluation environment.".format(name) - ) - - return value - - -def _evaluate_markers(markers, environment): - groups = [[]] - - for marker in markers: - assert isinstance(marker, (list, tuple, string_types)) - - if isinstance(marker, list): - groups[-1].append(_evaluate_markers(marker, environment)) - elif isinstance(marker, tuple): - lhs, op, rhs = marker - - if isinstance(lhs, Variable): - lhs_value = _get_env(environment, lhs.value) - rhs_value = rhs.value - else: - lhs_value = lhs.value - rhs_value = _get_env(environment, rhs.value) - - groups[-1].append(_eval_op(lhs_value, op, rhs_value)) - else: - assert marker in ["and", "or"] - if marker == "or": - groups.append([]) - - return any(all(item) for item in groups) - - -def format_full_version(info): - version = '{0.major}.{0.minor}.{0.micro}'.format(info) - kind = info.releaselevel - if kind != 'final': - version += kind[0] + str(info.serial) - return version - - -def default_environment(): - if hasattr(sys, 'implementation'): - iver = format_full_version(sys.implementation.version) - implementation_name = sys.implementation.name - else: - iver = '0' - implementation_name = '' - - return { - "implementation_name": implementation_name, - "implementation_version": iver, - "os_name": os.name, - "platform_machine": platform.machine(), - "platform_release": platform.release(), - "platform_system": platform.system(), - "platform_version": platform.version(), - "python_full_version": platform.python_version(), - "platform_python_implementation": platform.python_implementation(), - "python_version": platform.python_version()[:3], - "sys_platform": sys.platform, - } - - -class Marker(object): - - def __init__(self, marker): - try: - self._markers = _coerce_parse_result(MARKER.parseString(marker)) - except ParseException as e: - err_str = "Invalid marker: {0!r}, parse error at {1!r}".format( - marker, marker[e.loc:e.loc + 8]) - raise InvalidMarker(err_str) - - def __str__(self): - return _format_marker(self._markers) - - def __repr__(self): - return "<Marker({0!r})>".format(str(self)) - - def evaluate(self, environment=None): - """Evaluate a marker. - - Return the boolean from evaluating the given marker against the - environment. environment is an optional argument to override all or - part of the determined environment. - - The environment is determined from the current Python process. - """ - current_environment = default_environment() - if environment is not None: - current_environment.update(environment) - - return _evaluate_markers(self._markers, current_environment) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py deleted file mode 100644 index 0c8c4a38..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py +++ /dev/null @@ -1,127 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. -from __future__ import absolute_import, division, print_function - -import string -import re - -from pkg_resources.extern.pyparsing import stringStart, stringEnd, originalTextFor, ParseException -from pkg_resources.extern.pyparsing import ZeroOrMore, Word, Optional, Regex, Combine -from pkg_resources.extern.pyparsing import Literal as L # noqa -from pkg_resources.extern.six.moves.urllib import parse as urlparse - -from .markers import MARKER_EXPR, Marker -from .specifiers import LegacySpecifier, Specifier, SpecifierSet - - -class InvalidRequirement(ValueError): - """ - An invalid requirement was found, users should refer to PEP 508. - """ - - -ALPHANUM = Word(string.ascii_letters + string.digits) - -LBRACKET = L("[").suppress() -RBRACKET = L("]").suppress() -LPAREN = L("(").suppress() -RPAREN = L(")").suppress() -COMMA = L(",").suppress() -SEMICOLON = L(";").suppress() -AT = L("@").suppress() - -PUNCTUATION = Word("-_.") -IDENTIFIER_END = ALPHANUM | (ZeroOrMore(PUNCTUATION) + ALPHANUM) -IDENTIFIER = Combine(ALPHANUM + ZeroOrMore(IDENTIFIER_END)) - -NAME = IDENTIFIER("name") -EXTRA = IDENTIFIER - -URI = Regex(r'[^ ]+')("url") -URL = (AT + URI) - -EXTRAS_LIST = EXTRA + ZeroOrMore(COMMA + EXTRA) -EXTRAS = (LBRACKET + Optional(EXTRAS_LIST) + RBRACKET)("extras") - -VERSION_PEP440 = Regex(Specifier._regex_str, re.VERBOSE | re.IGNORECASE) -VERSION_LEGACY = Regex(LegacySpecifier._regex_str, re.VERBOSE | re.IGNORECASE) - -VERSION_ONE = VERSION_PEP440 ^ VERSION_LEGACY -VERSION_MANY = Combine(VERSION_ONE + ZeroOrMore(COMMA + VERSION_ONE), - joinString=",", adjacent=False)("_raw_spec") -_VERSION_SPEC = Optional(((LPAREN + VERSION_MANY + RPAREN) | VERSION_MANY)) -_VERSION_SPEC.setParseAction(lambda s, l, t: t._raw_spec or '') - -VERSION_SPEC = originalTextFor(_VERSION_SPEC)("specifier") -VERSION_SPEC.setParseAction(lambda s, l, t: t[1]) - -MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker") -MARKER_EXPR.setParseAction( - lambda s, l, t: Marker(s[t._original_start:t._original_end]) -) -MARKER_SEPERATOR = SEMICOLON -MARKER = MARKER_SEPERATOR + MARKER_EXPR - -VERSION_AND_MARKER = VERSION_SPEC + Optional(MARKER) -URL_AND_MARKER = URL + Optional(MARKER) - -NAMED_REQUIREMENT = \ - NAME + Optional(EXTRAS) + (URL_AND_MARKER | VERSION_AND_MARKER) - -REQUIREMENT = stringStart + NAMED_REQUIREMENT + stringEnd - - -class Requirement(object): - """Parse a requirement. - - Parse a given requirement string into its parts, such as name, specifier, - URL, and extras. Raises InvalidRequirement on a badly-formed requirement - string. - """ - - # TODO: Can we test whether something is contained within a requirement? - # If so how do we do that? Do we need to test against the _name_ of - # the thing as well as the version? What about the markers? - # TODO: Can we normalize the name and extra name? - - def __init__(self, requirement_string): - try: - req = REQUIREMENT.parseString(requirement_string) - except ParseException as e: - raise InvalidRequirement( - "Invalid requirement, parse error at \"{0!r}\"".format( - requirement_string[e.loc:e.loc + 8])) - - self.name = req.name - if req.url: - parsed_url = urlparse.urlparse(req.url) - if not (parsed_url.scheme and parsed_url.netloc) or ( - not parsed_url.scheme and not parsed_url.netloc): - raise InvalidRequirement("Invalid URL given") - self.url = req.url - else: - self.url = None - self.extras = set(req.extras.asList() if req.extras else []) - self.specifier = SpecifierSet(req.specifier) - self.marker = req.marker if req.marker else None - - def __str__(self): - parts = [self.name] - - if self.extras: - parts.append("[{0}]".format(",".join(sorted(self.extras)))) - - if self.specifier: - parts.append(str(self.specifier)) - - if self.url: - parts.append("@ {0}".format(self.url)) - - if self.marker: - parts.append("; {0}".format(self.marker)) - - return "".join(parts) - - def __repr__(self): - return "<Requirement({0!r})>".format(str(self)) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/specifiers.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/specifiers.py deleted file mode 100644 index 7f5a76cf..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/specifiers.py +++ /dev/null @@ -1,774 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. -from __future__ import absolute_import, division, print_function - -import abc -import functools -import itertools -import re - -from ._compat import string_types, with_metaclass -from .version import Version, LegacyVersion, parse - - -class InvalidSpecifier(ValueError): - """ - An invalid specifier was found, users should refer to PEP 440. - """ - - -class BaseSpecifier(with_metaclass(abc.ABCMeta, object)): - - @abc.abstractmethod - def __str__(self): - """ - Returns the str representation of this Specifier like object. This - should be representative of the Specifier itself. - """ - - @abc.abstractmethod - def __hash__(self): - """ - Returns a hash value for this Specifier like object. - """ - - @abc.abstractmethod - def __eq__(self, other): - """ - Returns a boolean representing whether or not the two Specifier like - objects are equal. - """ - - @abc.abstractmethod - def __ne__(self, other): - """ - Returns a boolean representing whether or not the two Specifier like - objects are not equal. - """ - - @abc.abstractproperty - def prereleases(self): - """ - Returns whether or not pre-releases as a whole are allowed by this - specifier. - """ - - @prereleases.setter - def prereleases(self, value): - """ - Sets whether or not pre-releases as a whole are allowed by this - specifier. - """ - - @abc.abstractmethod - def contains(self, item, prereleases=None): - """ - Determines if the given item is contained within this specifier. - """ - - @abc.abstractmethod - def filter(self, iterable, prereleases=None): - """ - Takes an iterable of items and filters them so that only items which - are contained within this specifier are allowed in it. - """ - - -class _IndividualSpecifier(BaseSpecifier): - - _operators = {} - - def __init__(self, spec="", prereleases=None): - match = self._regex.search(spec) - if not match: - raise InvalidSpecifier("Invalid specifier: '{0}'".format(spec)) - - self._spec = ( - match.group("operator").strip(), - match.group("version").strip(), - ) - - # Store whether or not this Specifier should accept prereleases - self._prereleases = prereleases - - def __repr__(self): - pre = ( - ", prereleases={0!r}".format(self.prereleases) - if self._prereleases is not None - else "" - ) - - return "<{0}({1!r}{2})>".format( - self.__class__.__name__, - str(self), - pre, - ) - - def __str__(self): - return "{0}{1}".format(*self._spec) - - def __hash__(self): - return hash(self._spec) - - def __eq__(self, other): - if isinstance(other, string_types): - try: - other = self.__class__(other) - except InvalidSpecifier: - return NotImplemented - elif not isinstance(other, self.__class__): - return NotImplemented - - return self._spec == other._spec - - def __ne__(self, other): - if isinstance(other, string_types): - try: - other = self.__class__(other) - except InvalidSpecifier: - return NotImplemented - elif not isinstance(other, self.__class__): - return NotImplemented - - return self._spec != other._spec - - def _get_operator(self, op): - return getattr(self, "_compare_{0}".format(self._operators[op])) - - def _coerce_version(self, version): - if not isinstance(version, (LegacyVersion, Version)): - version = parse(version) - return version - - @property - def operator(self): - return self._spec[0] - - @property - def version(self): - return self._spec[1] - - @property - def prereleases(self): - return self._prereleases - - @prereleases.setter - def prereleases(self, value): - self._prereleases = value - - def __contains__(self, item): - return self.contains(item) - - def contains(self, item, prereleases=None): - # Determine if prereleases are to be allowed or not. - if prereleases is None: - prereleases = self.prereleases - - # Normalize item to a Version or LegacyVersion, this allows us to have - # a shortcut for ``"2.0" in Specifier(">=2") - item = self._coerce_version(item) - - # Determine if we should be supporting prereleases in this specifier - # or not, if we do not support prereleases than we can short circuit - # logic if this version is a prereleases. - if item.is_prerelease and not prereleases: - return False - - # Actually do the comparison to determine if this item is contained - # within this Specifier or not. - return self._get_operator(self.operator)(item, self.version) - - def filter(self, iterable, prereleases=None): - yielded = False - found_prereleases = [] - - kw = {"prereleases": prereleases if prereleases is not None else True} - - # Attempt to iterate over all the values in the iterable and if any of - # them match, yield them. - for version in iterable: - parsed_version = self._coerce_version(version) - - if self.contains(parsed_version, **kw): - # If our version is a prerelease, and we were not set to allow - # prereleases, then we'll store it for later incase nothing - # else matches this specifier. - if (parsed_version.is_prerelease and not - (prereleases or self.prereleases)): - found_prereleases.append(version) - # Either this is not a prerelease, or we should have been - # accepting prereleases from the begining. - else: - yielded = True - yield version - - # Now that we've iterated over everything, determine if we've yielded - # any values, and if we have not and we have any prereleases stored up - # then we will go ahead and yield the prereleases. - if not yielded and found_prereleases: - for version in found_prereleases: - yield version - - -class LegacySpecifier(_IndividualSpecifier): - - _regex_str = ( - r""" - (?P<operator>(==|!=|<=|>=|<|>)) - \s* - (?P<version> - [^,;\s)]* # Since this is a "legacy" specifier, and the version - # string can be just about anything, we match everything - # except for whitespace, a semi-colon for marker support, - # a closing paren since versions can be enclosed in - # them, and a comma since it's a version separator. - ) - """ - ) - - _regex = re.compile( - r"^\s*" + _regex_str + r"\s*$", re.VERBOSE | re.IGNORECASE) - - _operators = { - "==": "equal", - "!=": "not_equal", - "<=": "less_than_equal", - ">=": "greater_than_equal", - "<": "less_than", - ">": "greater_than", - } - - def _coerce_version(self, version): - if not isinstance(version, LegacyVersion): - version = LegacyVersion(str(version)) - return version - - def _compare_equal(self, prospective, spec): - return prospective == self._coerce_version(spec) - - def _compare_not_equal(self, prospective, spec): - return prospective != self._coerce_version(spec) - - def _compare_less_than_equal(self, prospective, spec): - return prospective <= self._coerce_version(spec) - - def _compare_greater_than_equal(self, prospective, spec): - return prospective >= self._coerce_version(spec) - - def _compare_less_than(self, prospective, spec): - return prospective < self._coerce_version(spec) - - def _compare_greater_than(self, prospective, spec): - return prospective > self._coerce_version(spec) - - -def _require_version_compare(fn): - @functools.wraps(fn) - def wrapped(self, prospective, spec): - if not isinstance(prospective, Version): - return False - return fn(self, prospective, spec) - return wrapped - - -class Specifier(_IndividualSpecifier): - - _regex_str = ( - r""" - (?P<operator>(~=|==|!=|<=|>=|<|>|===)) - (?P<version> - (?: - # The identity operators allow for an escape hatch that will - # do an exact string match of the version you wish to install. - # This will not be parsed by PEP 440 and we cannot determine - # any semantic meaning from it. This operator is discouraged - # but included entirely as an escape hatch. - (?<====) # Only match for the identity operator - \s* - [^\s]* # We just match everything, except for whitespace - # since we are only testing for strict identity. - ) - | - (?: - # The (non)equality operators allow for wild card and local - # versions to be specified so we have to define these two - # operators separately to enable that. - (?<===|!=) # Only match for equals and not equals - - \s* - v? - (?:[0-9]+!)? # epoch - [0-9]+(?:\.[0-9]+)* # release - (?: # pre release - [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) - [-_\.]? - [0-9]* - )? - (?: # post release - (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) - )? - - # You cannot use a wild card and a dev or local version - # together so group them with a | and make them optional. - (?: - (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release - (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local - | - \.\* # Wild card syntax of .* - )? - ) - | - (?: - # The compatible operator requires at least two digits in the - # release segment. - (?<=~=) # Only match for the compatible operator - - \s* - v? - (?:[0-9]+!)? # epoch - [0-9]+(?:\.[0-9]+)+ # release (We have a + instead of a *) - (?: # pre release - [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) - [-_\.]? - [0-9]* - )? - (?: # post release - (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) - )? - (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release - ) - | - (?: - # All other operators only allow a sub set of what the - # (non)equality operators do. Specifically they do not allow - # local versions to be specified nor do they allow the prefix - # matching wild cards. - (?<!==|!=|~=) # We have special cases for these - # operators so we want to make sure they - # don't match here. - - \s* - v? - (?:[0-9]+!)? # epoch - [0-9]+(?:\.[0-9]+)* # release - (?: # pre release - [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) - [-_\.]? - [0-9]* - )? - (?: # post release - (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) - )? - (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release - ) - ) - """ - ) - - _regex = re.compile( - r"^\s*" + _regex_str + r"\s*$", re.VERBOSE | re.IGNORECASE) - - _operators = { - "~=": "compatible", - "==": "equal", - "!=": "not_equal", - "<=": "less_than_equal", - ">=": "greater_than_equal", - "<": "less_than", - ">": "greater_than", - "===": "arbitrary", - } - - @_require_version_compare - def _compare_compatible(self, prospective, spec): - # Compatible releases have an equivalent combination of >= and ==. That - # is that ~=2.2 is equivalent to >=2.2,==2.*. This allows us to - # implement this in terms of the other specifiers instead of - # implementing it ourselves. The only thing we need to do is construct - # the other specifiers. - - # We want everything but the last item in the version, but we want to - # ignore post and dev releases and we want to treat the pre-release as - # it's own separate segment. - prefix = ".".join( - list( - itertools.takewhile( - lambda x: (not x.startswith("post") and not - x.startswith("dev")), - _version_split(spec), - ) - )[:-1] - ) - - # Add the prefix notation to the end of our string - prefix += ".*" - - return (self._get_operator(">=")(prospective, spec) and - self._get_operator("==")(prospective, prefix)) - - @_require_version_compare - def _compare_equal(self, prospective, spec): - # We need special logic to handle prefix matching - if spec.endswith(".*"): - # In the case of prefix matching we want to ignore local segment. - prospective = Version(prospective.public) - # Split the spec out by dots, and pretend that there is an implicit - # dot in between a release segment and a pre-release segment. - spec = _version_split(spec[:-2]) # Remove the trailing .* - - # Split the prospective version out by dots, and pretend that there - # is an implicit dot in between a release segment and a pre-release - # segment. - prospective = _version_split(str(prospective)) - - # Shorten the prospective version to be the same length as the spec - # so that we can determine if the specifier is a prefix of the - # prospective version or not. - prospective = prospective[:len(spec)] - - # Pad out our two sides with zeros so that they both equal the same - # length. - spec, prospective = _pad_version(spec, prospective) - else: - # Convert our spec string into a Version - spec = Version(spec) - - # If the specifier does not have a local segment, then we want to - # act as if the prospective version also does not have a local - # segment. - if not spec.local: - prospective = Version(prospective.public) - - return prospective == spec - - @_require_version_compare - def _compare_not_equal(self, prospective, spec): - return not self._compare_equal(prospective, spec) - - @_require_version_compare - def _compare_less_than_equal(self, prospective, spec): - return prospective <= Version(spec) - - @_require_version_compare - def _compare_greater_than_equal(self, prospective, spec): - return prospective >= Version(spec) - - @_require_version_compare - def _compare_less_than(self, prospective, spec): - # Convert our spec to a Version instance, since we'll want to work with - # it as a version. - spec = Version(spec) - - # Check to see if the prospective version is less than the spec - # version. If it's not we can short circuit and just return False now - # instead of doing extra unneeded work. - if not prospective < spec: - return False - - # This special case is here so that, unless the specifier itself - # includes is a pre-release version, that we do not accept pre-release - # versions for the version mentioned in the specifier (e.g. <3.1 should - # not match 3.1.dev0, but should match 3.0.dev0). - if not spec.is_prerelease and prospective.is_prerelease: - if Version(prospective.base_version) == Version(spec.base_version): - return False - - # If we've gotten to here, it means that prospective version is both - # less than the spec version *and* it's not a pre-release of the same - # version in the spec. - return True - - @_require_version_compare - def _compare_greater_than(self, prospective, spec): - # Convert our spec to a Version instance, since we'll want to work with - # it as a version. - spec = Version(spec) - - # Check to see if the prospective version is greater than the spec - # version. If it's not we can short circuit and just return False now - # instead of doing extra unneeded work. - if not prospective > spec: - return False - - # This special case is here so that, unless the specifier itself - # includes is a post-release version, that we do not accept - # post-release versions for the version mentioned in the specifier - # (e.g. >3.1 should not match 3.0.post0, but should match 3.2.post0). - if not spec.is_postrelease and prospective.is_postrelease: - if Version(prospective.base_version) == Version(spec.base_version): - return False - - # Ensure that we do not allow a local version of the version mentioned - # in the specifier, which is techincally greater than, to match. - if prospective.local is not None: - if Version(prospective.base_version) == Version(spec.base_version): - return False - - # If we've gotten to here, it means that prospective version is both - # greater than the spec version *and* it's not a pre-release of the - # same version in the spec. - return True - - def _compare_arbitrary(self, prospective, spec): - return str(prospective).lower() == str(spec).lower() - - @property - def prereleases(self): - # If there is an explicit prereleases set for this, then we'll just - # blindly use that. - if self._prereleases is not None: - return self._prereleases - - # Look at all of our specifiers and determine if they are inclusive - # operators, and if they are if they are including an explicit - # prerelease. - operator, version = self._spec - if operator in ["==", ">=", "<=", "~=", "==="]: - # The == specifier can include a trailing .*, if it does we - # want to remove before parsing. - if operator == "==" and version.endswith(".*"): - version = version[:-2] - - # Parse the version, and if it is a pre-release than this - # specifier allows pre-releases. - if parse(version).is_prerelease: - return True - - return False - - @prereleases.setter - def prereleases(self, value): - self._prereleases = value - - -_prefix_regex = re.compile(r"^([0-9]+)((?:a|b|c|rc)[0-9]+)$") - - -def _version_split(version): - result = [] - for item in version.split("."): - match = _prefix_regex.search(item) - if match: - result.extend(match.groups()) - else: - result.append(item) - return result - - -def _pad_version(left, right): - left_split, right_split = [], [] - - # Get the release segment of our versions - left_split.append(list(itertools.takewhile(lambda x: x.isdigit(), left))) - right_split.append(list(itertools.takewhile(lambda x: x.isdigit(), right))) - - # Get the rest of our versions - left_split.append(left[len(left_split[0]):]) - right_split.append(right[len(right_split[0]):]) - - # Insert our padding - left_split.insert( - 1, - ["0"] * max(0, len(right_split[0]) - len(left_split[0])), - ) - right_split.insert( - 1, - ["0"] * max(0, len(left_split[0]) - len(right_split[0])), - ) - - return ( - list(itertools.chain(*left_split)), - list(itertools.chain(*right_split)), - ) - - -class SpecifierSet(BaseSpecifier): - - def __init__(self, specifiers="", prereleases=None): - # Split on , to break each indidivual specifier into it's own item, and - # strip each item to remove leading/trailing whitespace. - specifiers = [s.strip() for s in specifiers.split(",") if s.strip()] - - # Parsed each individual specifier, attempting first to make it a - # Specifier and falling back to a LegacySpecifier. - parsed = set() - for specifier in specifiers: - try: - parsed.add(Specifier(specifier)) - except InvalidSpecifier: - parsed.add(LegacySpecifier(specifier)) - - # Turn our parsed specifiers into a frozen set and save them for later. - self._specs = frozenset(parsed) - - # Store our prereleases value so we can use it later to determine if - # we accept prereleases or not. - self._prereleases = prereleases - - def __repr__(self): - pre = ( - ", prereleases={0!r}".format(self.prereleases) - if self._prereleases is not None - else "" - ) - - return "<SpecifierSet({0!r}{1})>".format(str(self), pre) - - def __str__(self): - return ",".join(sorted(str(s) for s in self._specs)) - - def __hash__(self): - return hash(self._specs) - - def __and__(self, other): - if isinstance(other, string_types): - other = SpecifierSet(other) - elif not isinstance(other, SpecifierSet): - return NotImplemented - - specifier = SpecifierSet() - specifier._specs = frozenset(self._specs | other._specs) - - if self._prereleases is None and other._prereleases is not None: - specifier._prereleases = other._prereleases - elif self._prereleases is not None and other._prereleases is None: - specifier._prereleases = self._prereleases - elif self._prereleases == other._prereleases: - specifier._prereleases = self._prereleases - else: - raise ValueError( - "Cannot combine SpecifierSets with True and False prerelease " - "overrides." - ) - - return specifier - - def __eq__(self, other): - if isinstance(other, string_types): - other = SpecifierSet(other) - elif isinstance(other, _IndividualSpecifier): - other = SpecifierSet(str(other)) - elif not isinstance(other, SpecifierSet): - return NotImplemented - - return self._specs == other._specs - - def __ne__(self, other): - if isinstance(other, string_types): - other = SpecifierSet(other) - elif isinstance(other, _IndividualSpecifier): - other = SpecifierSet(str(other)) - elif not isinstance(other, SpecifierSet): - return NotImplemented - - return self._specs != other._specs - - def __len__(self): - return len(self._specs) - - def __iter__(self): - return iter(self._specs) - - @property - def prereleases(self): - # If we have been given an explicit prerelease modifier, then we'll - # pass that through here. - if self._prereleases is not None: - return self._prereleases - - # If we don't have any specifiers, and we don't have a forced value, - # then we'll just return None since we don't know if this should have - # pre-releases or not. - if not self._specs: - return None - - # Otherwise we'll see if any of the given specifiers accept - # prereleases, if any of them do we'll return True, otherwise False. - return any(s.prereleases for s in self._specs) - - @prereleases.setter - def prereleases(self, value): - self._prereleases = value - - def __contains__(self, item): - return self.contains(item) - - def contains(self, item, prereleases=None): - # Ensure that our item is a Version or LegacyVersion instance. - if not isinstance(item, (LegacyVersion, Version)): - item = parse(item) - - # Determine if we're forcing a prerelease or not, if we're not forcing - # one for this particular filter call, then we'll use whatever the - # SpecifierSet thinks for whether or not we should support prereleases. - if prereleases is None: - prereleases = self.prereleases - - # We can determine if we're going to allow pre-releases by looking to - # see if any of the underlying items supports them. If none of them do - # and this item is a pre-release then we do not allow it and we can - # short circuit that here. - # Note: This means that 1.0.dev1 would not be contained in something - # like >=1.0.devabc however it would be in >=1.0.debabc,>0.0.dev0 - if not prereleases and item.is_prerelease: - return False - - # We simply dispatch to the underlying specs here to make sure that the - # given version is contained within all of them. - # Note: This use of all() here means that an empty set of specifiers - # will always return True, this is an explicit design decision. - return all( - s.contains(item, prereleases=prereleases) - for s in self._specs - ) - - def filter(self, iterable, prereleases=None): - # Determine if we're forcing a prerelease or not, if we're not forcing - # one for this particular filter call, then we'll use whatever the - # SpecifierSet thinks for whether or not we should support prereleases. - if prereleases is None: - prereleases = self.prereleases - - # If we have any specifiers, then we want to wrap our iterable in the - # filter method for each one, this will act as a logical AND amongst - # each specifier. - if self._specs: - for spec in self._specs: - iterable = spec.filter(iterable, prereleases=bool(prereleases)) - return iterable - # If we do not have any specifiers, then we need to have a rough filter - # which will filter out any pre-releases, unless there are no final - # releases, and which will filter out LegacyVersion in general. - else: - filtered = [] - found_prereleases = [] - - for item in iterable: - # Ensure that we some kind of Version class for this item. - if not isinstance(item, (LegacyVersion, Version)): - parsed_version = parse(item) - else: - parsed_version = item - - # Filter out any item which is parsed as a LegacyVersion - if isinstance(parsed_version, LegacyVersion): - continue - - # Store any item which is a pre-release for later unless we've - # already found a final version or we are accepting prereleases - if parsed_version.is_prerelease and not prereleases: - if not filtered: - found_prereleases.append(item) - else: - filtered.append(item) - - # If we've found no items except for pre-releases, then we'll go - # ahead and use the pre-releases - if not filtered and found_prereleases and prereleases is None: - return found_prereleases - - return filtered diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/utils.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/utils.py deleted file mode 100644 index 942387ce..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/utils.py +++ /dev/null @@ -1,14 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. -from __future__ import absolute_import, division, print_function - -import re - - -_canonicalize_regex = re.compile(r"[-_.]+") - - -def canonicalize_name(name): - # This is taken from PEP 503. - return _canonicalize_regex.sub("-", name).lower() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/version.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/version.py deleted file mode 100644 index 83b5ee8c..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/version.py +++ /dev/null @@ -1,393 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. -from __future__ import absolute_import, division, print_function - -import collections -import itertools -import re - -from ._structures import Infinity - - -__all__ = [ - "parse", "Version", "LegacyVersion", "InvalidVersion", "VERSION_PATTERN" -] - - -_Version = collections.namedtuple( - "_Version", - ["epoch", "release", "dev", "pre", "post", "local"], -) - - -def parse(version): - """ - Parse the given version string and return either a :class:`Version` object - or a :class:`LegacyVersion` object depending on if the given version is - a valid PEP 440 version or a legacy version. - """ - try: - return Version(version) - except InvalidVersion: - return LegacyVersion(version) - - -class InvalidVersion(ValueError): - """ - An invalid version was found, users should refer to PEP 440. - """ - - -class _BaseVersion(object): - - def __hash__(self): - return hash(self._key) - - def __lt__(self, other): - return self._compare(other, lambda s, o: s < o) - - def __le__(self, other): - return self._compare(other, lambda s, o: s <= o) - - def __eq__(self, other): - return self._compare(other, lambda s, o: s == o) - - def __ge__(self, other): - return self._compare(other, lambda s, o: s >= o) - - def __gt__(self, other): - return self._compare(other, lambda s, o: s > o) - - def __ne__(self, other): - return self._compare(other, lambda s, o: s != o) - - def _compare(self, other, method): - if not isinstance(other, _BaseVersion): - return NotImplemented - - return method(self._key, other._key) - - -class LegacyVersion(_BaseVersion): - - def __init__(self, version): - self._version = str(version) - self._key = _legacy_cmpkey(self._version) - - def __str__(self): - return self._version - - def __repr__(self): - return "<LegacyVersion({0})>".format(repr(str(self))) - - @property - def public(self): - return self._version - - @property - def base_version(self): - return self._version - - @property - def local(self): - return None - - @property - def is_prerelease(self): - return False - - @property - def is_postrelease(self): - return False - - -_legacy_version_component_re = re.compile( - r"(\d+ | [a-z]+ | \.| -)", re.VERBOSE, -) - -_legacy_version_replacement_map = { - "pre": "c", "preview": "c", "-": "final-", "rc": "c", "dev": "@", -} - - -def _parse_version_parts(s): - for part in _legacy_version_component_re.split(s): - part = _legacy_version_replacement_map.get(part, part) - - if not part or part == ".": - continue - - if part[:1] in "0123456789": - # pad for numeric comparison - yield part.zfill(8) - else: - yield "*" + part - - # ensure that alpha/beta/candidate are before final - yield "*final" - - -def _legacy_cmpkey(version): - # We hardcode an epoch of -1 here. A PEP 440 version can only have a epoch - # greater than or equal to 0. This will effectively put the LegacyVersion, - # which uses the defacto standard originally implemented by setuptools, - # as before all PEP 440 versions. - epoch = -1 - - # This scheme is taken from pkg_resources.parse_version setuptools prior to - # it's adoption of the packaging library. - parts = [] - for part in _parse_version_parts(version.lower()): - if part.startswith("*"): - # remove "-" before a prerelease tag - if part < "*final": - while parts and parts[-1] == "*final-": - parts.pop() - - # remove trailing zeros from each series of numeric parts - while parts and parts[-1] == "00000000": - parts.pop() - - parts.append(part) - parts = tuple(parts) - - return epoch, parts - -# Deliberately not anchored to the start and end of the string, to make it -# easier for 3rd party code to reuse -VERSION_PATTERN = r""" - v? - (?: - (?:(?P<epoch>[0-9]+)!)? # epoch - (?P<release>[0-9]+(?:\.[0-9]+)*) # release segment - (?P<pre> # pre-release - [-_\.]? - (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview)) - [-_\.]? - (?P<pre_n>[0-9]+)? - )? - (?P<post> # post release - (?:-(?P<post_n1>[0-9]+)) - | - (?: - [-_\.]? - (?P<post_l>post|rev|r) - [-_\.]? - (?P<post_n2>[0-9]+)? - ) - )? - (?P<dev> # dev release - [-_\.]? - (?P<dev_l>dev) - [-_\.]? - (?P<dev_n>[0-9]+)? - )? - ) - (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))? # local version -""" - - -class Version(_BaseVersion): - - _regex = re.compile( - r"^\s*" + VERSION_PATTERN + r"\s*$", - re.VERBOSE | re.IGNORECASE, - ) - - def __init__(self, version): - # Validate the version and parse it into pieces - match = self._regex.search(version) - if not match: - raise InvalidVersion("Invalid version: '{0}'".format(version)) - - # Store the parsed out pieces of the version - self._version = _Version( - epoch=int(match.group("epoch")) if match.group("epoch") else 0, - release=tuple(int(i) for i in match.group("release").split(".")), - pre=_parse_letter_version( - match.group("pre_l"), - match.group("pre_n"), - ), - post=_parse_letter_version( - match.group("post_l"), - match.group("post_n1") or match.group("post_n2"), - ), - dev=_parse_letter_version( - match.group("dev_l"), - match.group("dev_n"), - ), - local=_parse_local_version(match.group("local")), - ) - - # Generate a key which will be used for sorting - self._key = _cmpkey( - self._version.epoch, - self._version.release, - self._version.pre, - self._version.post, - self._version.dev, - self._version.local, - ) - - def __repr__(self): - return "<Version({0})>".format(repr(str(self))) - - def __str__(self): - parts = [] - - # Epoch - if self._version.epoch != 0: - parts.append("{0}!".format(self._version.epoch)) - - # Release segment - parts.append(".".join(str(x) for x in self._version.release)) - - # Pre-release - if self._version.pre is not None: - parts.append("".join(str(x) for x in self._version.pre)) - - # Post-release - if self._version.post is not None: - parts.append(".post{0}".format(self._version.post[1])) - - # Development release - if self._version.dev is not None: - parts.append(".dev{0}".format(self._version.dev[1])) - - # Local version segment - if self._version.local is not None: - parts.append( - "+{0}".format(".".join(str(x) for x in self._version.local)) - ) - - return "".join(parts) - - @property - def public(self): - return str(self).split("+", 1)[0] - - @property - def base_version(self): - parts = [] - - # Epoch - if self._version.epoch != 0: - parts.append("{0}!".format(self._version.epoch)) - - # Release segment - parts.append(".".join(str(x) for x in self._version.release)) - - return "".join(parts) - - @property - def local(self): - version_string = str(self) - if "+" in version_string: - return version_string.split("+", 1)[1] - - @property - def is_prerelease(self): - return bool(self._version.dev or self._version.pre) - - @property - def is_postrelease(self): - return bool(self._version.post) - - -def _parse_letter_version(letter, number): - if letter: - # We consider there to be an implicit 0 in a pre-release if there is - # not a numeral associated with it. - if number is None: - number = 0 - - # We normalize any letters to their lower case form - letter = letter.lower() - - # We consider some words to be alternate spellings of other words and - # in those cases we want to normalize the spellings to our preferred - # spelling. - if letter == "alpha": - letter = "a" - elif letter == "beta": - letter = "b" - elif letter in ["c", "pre", "preview"]: - letter = "rc" - elif letter in ["rev", "r"]: - letter = "post" - - return letter, int(number) - if not letter and number: - # We assume if we are given a number, but we are not given a letter - # then this is using the implicit post release syntax (e.g. 1.0-1) - letter = "post" - - return letter, int(number) - - -_local_version_seperators = re.compile(r"[\._-]") - - -def _parse_local_version(local): - """ - Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve"). - """ - if local is not None: - return tuple( - part.lower() if not part.isdigit() else int(part) - for part in _local_version_seperators.split(local) - ) - - -def _cmpkey(epoch, release, pre, post, dev, local): - # When we compare a release version, we want to compare it with all of the - # trailing zeros removed. So we'll use a reverse the list, drop all the now - # leading zeros until we come to something non zero, then take the rest - # re-reverse it back into the correct order and make it a tuple and use - # that for our sorting key. - release = tuple( - reversed(list( - itertools.dropwhile( - lambda x: x == 0, - reversed(release), - ) - )) - ) - - # We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0. - # We'll do this by abusing the pre segment, but we _only_ want to do this - # if there is not a pre or a post segment. If we have one of those then - # the normal sorting rules will handle this case correctly. - if pre is None and post is None and dev is not None: - pre = -Infinity - # Versions without a pre-release (except as noted above) should sort after - # those with one. - elif pre is None: - pre = Infinity - - # Versions without a post segment should sort before those with one. - if post is None: - post = -Infinity - - # Versions without a development segment should sort after those with one. - if dev is None: - dev = Infinity - - if local is None: - # Versions without a local segment should sort before those with one. - local = -Infinity - else: - # Versions with a local segment need that segment parsed to implement - # the sorting rules in PEP440. - # - Alpha numeric segments sort before numeric segments - # - Alpha numeric segments sort lexicographically - # - Numeric segments sort numerically - # - Shorter versions sort before longer versions when the prefixes - # match exactly - local = tuple( - (i, "") if isinstance(i, int) else (-Infinity, i) - for i in local - ) - - return epoch, release, pre, post, dev, local diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py deleted file mode 100644 index a2122435..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py +++ /dev/null @@ -1,5696 +0,0 @@ -# module pyparsing.py -# -# Copyright (c) 2003-2016 Paul T. McGuire -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# - -__doc__ = \ -""" -pyparsing module - Classes and methods to define and execute parsing grammars - -The pyparsing module is an alternative approach to creating and executing simple grammars, -vs. the traditional lex/yacc approach, or the use of regular expressions. With pyparsing, you -don't need to learn a new syntax for defining grammars or matching expressions - the parsing module -provides a library of classes that you use to construct the grammar directly in Python. - -Here is a program to parse "Hello, World!" (or any greeting of the form -C{"<salutation>, <addressee>!"}), built up using L{Word}, L{Literal}, and L{And} elements -(L{'+'<ParserElement.__add__>} operator gives L{And} expressions, strings are auto-converted to -L{Literal} expressions):: - - from pyparsing import Word, alphas - - # define grammar of a greeting - greet = Word(alphas) + "," + Word(alphas) + "!" - - hello = "Hello, World!" - print (hello, "->", greet.parseString(hello)) - -The program outputs the following:: - - Hello, World! -> ['Hello', ',', 'World', '!'] - -The Python representation of the grammar is quite readable, owing to the self-explanatory -class names, and the use of '+', '|' and '^' operators. - -The L{ParseResults} object returned from L{ParserElement.parseString<ParserElement.parseString>} can be accessed as a nested list, a dictionary, or an -object with named attributes. - -The pyparsing module handles some of the problems that are typically vexing when writing text parsers: - - extra or missing whitespace (the above program will also handle "Hello,World!", "Hello , World !", etc.) - - quoted strings - - embedded comments -""" - -__version__ = "2.1.10" -__versionTime__ = "07 Oct 2016 01:31 UTC" -__author__ = "Paul McGuire <ptmcg@users.sourceforge.net>" - -import string -from weakref import ref as wkref -import copy -import sys -import warnings -import re -import sre_constants -import collections -import pprint -import traceback -import types -from datetime import datetime - -try: - from _thread import RLock -except ImportError: - from threading import RLock - -try: - from collections import OrderedDict as _OrderedDict -except ImportError: - try: - from ordereddict import OrderedDict as _OrderedDict - except ImportError: - _OrderedDict = None - -#~ sys.stderr.write( "testing pyparsing module, version %s, %s\n" % (__version__,__versionTime__ ) ) - -__all__ = [ -'And', 'CaselessKeyword', 'CaselessLiteral', 'CharsNotIn', 'Combine', 'Dict', 'Each', 'Empty', -'FollowedBy', 'Forward', 'GoToColumn', 'Group', 'Keyword', 'LineEnd', 'LineStart', 'Literal', -'MatchFirst', 'NoMatch', 'NotAny', 'OneOrMore', 'OnlyOnce', 'Optional', 'Or', -'ParseBaseException', 'ParseElementEnhance', 'ParseException', 'ParseExpression', 'ParseFatalException', -'ParseResults', 'ParseSyntaxException', 'ParserElement', 'QuotedString', 'RecursiveGrammarException', -'Regex', 'SkipTo', 'StringEnd', 'StringStart', 'Suppress', 'Token', 'TokenConverter', -'White', 'Word', 'WordEnd', 'WordStart', 'ZeroOrMore', -'alphanums', 'alphas', 'alphas8bit', 'anyCloseTag', 'anyOpenTag', 'cStyleComment', 'col', -'commaSeparatedList', 'commonHTMLEntity', 'countedArray', 'cppStyleComment', 'dblQuotedString', -'dblSlashComment', 'delimitedList', 'dictOf', 'downcaseTokens', 'empty', 'hexnums', -'htmlComment', 'javaStyleComment', 'line', 'lineEnd', 'lineStart', 'lineno', -'makeHTMLTags', 'makeXMLTags', 'matchOnlyAtCol', 'matchPreviousExpr', 'matchPreviousLiteral', -'nestedExpr', 'nullDebugAction', 'nums', 'oneOf', 'opAssoc', 'operatorPrecedence', 'printables', -'punc8bit', 'pythonStyleComment', 'quotedString', 'removeQuotes', 'replaceHTMLEntity', -'replaceWith', 'restOfLine', 'sglQuotedString', 'srange', 'stringEnd', -'stringStart', 'traceParseAction', 'unicodeString', 'upcaseTokens', 'withAttribute', -'indentedBlock', 'originalTextFor', 'ungroup', 'infixNotation','locatedExpr', 'withClass', -'CloseMatch', 'tokenMap', 'pyparsing_common', -] - -system_version = tuple(sys.version_info)[:3] -PY_3 = system_version[0] == 3 -if PY_3: - _MAX_INT = sys.maxsize - basestring = str - unichr = chr - _ustr = str - - # build list of single arg builtins, that can be used as parse actions - singleArgBuiltins = [sum, len, sorted, reversed, list, tuple, set, any, all, min, max] - -else: - _MAX_INT = sys.maxint - range = xrange - - def _ustr(obj): - """Drop-in replacement for str(obj) that tries to be Unicode friendly. It first tries - str(obj). If that fails with a UnicodeEncodeError, then it tries unicode(obj). It - then < returns the unicode object | encodes it with the default encoding | ... >. - """ - if isinstance(obj,unicode): - return obj - - try: - # If this works, then _ustr(obj) has the same behaviour as str(obj), so - # it won't break any existing code. - return str(obj) - - except UnicodeEncodeError: - # Else encode it - ret = unicode(obj).encode(sys.getdefaultencoding(), 'xmlcharrefreplace') - xmlcharref = Regex('&#\d+;') - xmlcharref.setParseAction(lambda t: '\\u' + hex(int(t[0][2:-1]))[2:]) - return xmlcharref.transformString(ret) - - # build list of single arg builtins, tolerant of Python version, that can be used as parse actions - singleArgBuiltins = [] - import __builtin__ - for fname in "sum len sorted reversed list tuple set any all min max".split(): - try: - singleArgBuiltins.append(getattr(__builtin__,fname)) - except AttributeError: - continue - -_generatorType = type((y for y in range(1))) - -def _xml_escape(data): - """Escape &, <, >, ", ', etc. in a string of data.""" - - # ampersand must be replaced first - from_symbols = '&><"\'' - to_symbols = ('&'+s+';' for s in "amp gt lt quot apos".split()) - for from_,to_ in zip(from_symbols, to_symbols): - data = data.replace(from_, to_) - return data - -class _Constants(object): - pass - -alphas = string.ascii_uppercase + string.ascii_lowercase -nums = "0123456789" -hexnums = nums + "ABCDEFabcdef" -alphanums = alphas + nums -_bslash = chr(92) -printables = "".join(c for c in string.printable if c not in string.whitespace) - -class ParseBaseException(Exception): - """base exception class for all parsing runtime exceptions""" - # Performance tuning: we construct a *lot* of these, so keep this - # constructor as small and fast as possible - def __init__( self, pstr, loc=0, msg=None, elem=None ): - self.loc = loc - if msg is None: - self.msg = pstr - self.pstr = "" - else: - self.msg = msg - self.pstr = pstr - self.parserElement = elem - self.args = (pstr, loc, msg) - - @classmethod - def _from_exception(cls, pe): - """ - internal factory method to simplify creating one type of ParseException - from another - avoids having __init__ signature conflicts among subclasses - """ - return cls(pe.pstr, pe.loc, pe.msg, pe.parserElement) - - def __getattr__( self, aname ): - """supported attributes by name are: - - lineno - returns the line number of the exception text - - col - returns the column number of the exception text - - line - returns the line containing the exception text - """ - if( aname == "lineno" ): - return lineno( self.loc, self.pstr ) - elif( aname in ("col", "column") ): - return col( self.loc, self.pstr ) - elif( aname == "line" ): - return line( self.loc, self.pstr ) - else: - raise AttributeError(aname) - - def __str__( self ): - return "%s (at char %d), (line:%d, col:%d)" % \ - ( self.msg, self.loc, self.lineno, self.column ) - def __repr__( self ): - return _ustr(self) - def markInputline( self, markerString = ">!<" ): - """Extracts the exception line from the input string, and marks - the location of the exception with a special symbol. - """ - line_str = self.line - line_column = self.column - 1 - if markerString: - line_str = "".join((line_str[:line_column], - markerString, line_str[line_column:])) - return line_str.strip() - def __dir__(self): - return "lineno col line".split() + dir(type(self)) - -class ParseException(ParseBaseException): - """ - Exception thrown when parse expressions don't match class; - supported attributes by name are: - - lineno - returns the line number of the exception text - - col - returns the column number of the exception text - - line - returns the line containing the exception text - - Example:: - try: - Word(nums).setName("integer").parseString("ABC") - except ParseException as pe: - print(pe) - print("column: {}".format(pe.col)) - - prints:: - Expected integer (at char 0), (line:1, col:1) - column: 1 - """ - pass - -class ParseFatalException(ParseBaseException): - """user-throwable exception thrown when inconsistent parse content - is found; stops all parsing immediately""" - pass - -class ParseSyntaxException(ParseFatalException): - """just like L{ParseFatalException}, but thrown internally when an - L{ErrorStop<And._ErrorStop>} ('-' operator) indicates that parsing is to stop - immediately because an unbacktrackable syntax error has been found""" - pass - -#~ class ReparseException(ParseBaseException): - #~ """Experimental class - parse actions can raise this exception to cause - #~ pyparsing to reparse the input string: - #~ - with a modified input string, and/or - #~ - with a modified start location - #~ Set the values of the ReparseException in the constructor, and raise the - #~ exception in a parse action to cause pyparsing to use the new string/location. - #~ Setting the values as None causes no change to be made. - #~ """ - #~ def __init_( self, newstring, restartLoc ): - #~ self.newParseText = newstring - #~ self.reparseLoc = restartLoc - -class RecursiveGrammarException(Exception): - """exception thrown by L{ParserElement.validate} if the grammar could be improperly recursive""" - def __init__( self, parseElementList ): - self.parseElementTrace = parseElementList - - def __str__( self ): - return "RecursiveGrammarException: %s" % self.parseElementTrace - -class _ParseResultsWithOffset(object): - def __init__(self,p1,p2): - self.tup = (p1,p2) - def __getitem__(self,i): - return self.tup[i] - def __repr__(self): - return repr(self.tup[0]) - def setOffset(self,i): - self.tup = (self.tup[0],i) - -class ParseResults(object): - """ - Structured parse results, to provide multiple means of access to the parsed data: - - as a list (C{len(results)}) - - by list index (C{results[0], results[1]}, etc.) - - by attribute (C{results.<resultsName>} - see L{ParserElement.setResultsName}) - - Example:: - integer = Word(nums) - date_str = (integer.setResultsName("year") + '/' - + integer.setResultsName("month") + '/' - + integer.setResultsName("day")) - # equivalent form: - # date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - # parseString returns a ParseResults object - result = date_str.parseString("1999/12/31") - - def test(s, fn=repr): - print("%s -> %s" % (s, fn(eval(s)))) - test("list(result)") - test("result[0]") - test("result['month']") - test("result.day") - test("'month' in result") - test("'minutes' in result") - test("result.dump()", str) - prints:: - list(result) -> ['1999', '/', '12', '/', '31'] - result[0] -> '1999' - result['month'] -> '12' - result.day -> '31' - 'month' in result -> True - 'minutes' in result -> False - result.dump() -> ['1999', '/', '12', '/', '31'] - - day: 31 - - month: 12 - - year: 1999 - """ - def __new__(cls, toklist=None, name=None, asList=True, modal=True ): - if isinstance(toklist, cls): - return toklist - retobj = object.__new__(cls) - retobj.__doinit = True - return retobj - - # Performance tuning: we construct a *lot* of these, so keep this - # constructor as small and fast as possible - def __init__( self, toklist=None, name=None, asList=True, modal=True, isinstance=isinstance ): - if self.__doinit: - self.__doinit = False - self.__name = None - self.__parent = None - self.__accumNames = {} - self.__asList = asList - self.__modal = modal - if toklist is None: - toklist = [] - if isinstance(toklist, list): - self.__toklist = toklist[:] - elif isinstance(toklist, _generatorType): - self.__toklist = list(toklist) - else: - self.__toklist = [toklist] - self.__tokdict = dict() - - if name is not None and name: - if not modal: - self.__accumNames[name] = 0 - if isinstance(name,int): - name = _ustr(name) # will always return a str, but use _ustr for consistency - self.__name = name - if not (isinstance(toklist, (type(None), basestring, list)) and toklist in (None,'',[])): - if isinstance(toklist,basestring): - toklist = [ toklist ] - if asList: - if isinstance(toklist,ParseResults): - self[name] = _ParseResultsWithOffset(toklist.copy(),0) - else: - self[name] = _ParseResultsWithOffset(ParseResults(toklist[0]),0) - self[name].__name = name - else: - try: - self[name] = toklist[0] - except (KeyError,TypeError,IndexError): - self[name] = toklist - - def __getitem__( self, i ): - if isinstance( i, (int,slice) ): - return self.__toklist[i] - else: - if i not in self.__accumNames: - return self.__tokdict[i][-1][0] - else: - return ParseResults([ v[0] for v in self.__tokdict[i] ]) - - def __setitem__( self, k, v, isinstance=isinstance ): - if isinstance(v,_ParseResultsWithOffset): - self.__tokdict[k] = self.__tokdict.get(k,list()) + [v] - sub = v[0] - elif isinstance(k,(int,slice)): - self.__toklist[k] = v - sub = v - else: - self.__tokdict[k] = self.__tokdict.get(k,list()) + [_ParseResultsWithOffset(v,0)] - sub = v - if isinstance(sub,ParseResults): - sub.__parent = wkref(self) - - def __delitem__( self, i ): - if isinstance(i,(int,slice)): - mylen = len( self.__toklist ) - del self.__toklist[i] - - # convert int to slice - if isinstance(i, int): - if i < 0: - i += mylen - i = slice(i, i+1) - # get removed indices - removed = list(range(*i.indices(mylen))) - removed.reverse() - # fixup indices in token dictionary - for name,occurrences in self.__tokdict.items(): - for j in removed: - for k, (value, position) in enumerate(occurrences): - occurrences[k] = _ParseResultsWithOffset(value, position - (position > j)) - else: - del self.__tokdict[i] - - def __contains__( self, k ): - return k in self.__tokdict - - def __len__( self ): return len( self.__toklist ) - def __bool__(self): return ( not not self.__toklist ) - __nonzero__ = __bool__ - def __iter__( self ): return iter( self.__toklist ) - def __reversed__( self ): return iter( self.__toklist[::-1] ) - def _iterkeys( self ): - if hasattr(self.__tokdict, "iterkeys"): - return self.__tokdict.iterkeys() - else: - return iter(self.__tokdict) - - def _itervalues( self ): - return (self[k] for k in self._iterkeys()) - - def _iteritems( self ): - return ((k, self[k]) for k in self._iterkeys()) - - if PY_3: - keys = _iterkeys - """Returns an iterator of all named result keys (Python 3.x only).""" - - values = _itervalues - """Returns an iterator of all named result values (Python 3.x only).""" - - items = _iteritems - """Returns an iterator of all named result key-value tuples (Python 3.x only).""" - - else: - iterkeys = _iterkeys - """Returns an iterator of all named result keys (Python 2.x only).""" - - itervalues = _itervalues - """Returns an iterator of all named result values (Python 2.x only).""" - - iteritems = _iteritems - """Returns an iterator of all named result key-value tuples (Python 2.x only).""" - - def keys( self ): - """Returns all named result keys (as a list in Python 2.x, as an iterator in Python 3.x).""" - return list(self.iterkeys()) - - def values( self ): - """Returns all named result values (as a list in Python 2.x, as an iterator in Python 3.x).""" - return list(self.itervalues()) - - def items( self ): - """Returns all named result key-values (as a list of tuples in Python 2.x, as an iterator in Python 3.x).""" - return list(self.iteritems()) - - def haskeys( self ): - """Since keys() returns an iterator, this method is helpful in bypassing - code that looks for the existence of any defined results names.""" - return bool(self.__tokdict) - - def pop( self, *args, **kwargs): - """ - Removes and returns item at specified index (default=C{last}). - Supports both C{list} and C{dict} semantics for C{pop()}. If passed no - argument or an integer argument, it will use C{list} semantics - and pop tokens from the list of parsed tokens. If passed a - non-integer argument (most likely a string), it will use C{dict} - semantics and pop the corresponding value from any defined - results names. A second default return value argument is - supported, just as in C{dict.pop()}. - - Example:: - def remove_first(tokens): - tokens.pop(0) - print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321'] - print(OneOrMore(Word(nums)).addParseAction(remove_first).parseString("0 123 321")) # -> ['123', '321'] - - label = Word(alphas) - patt = label("LABEL") + OneOrMore(Word(nums)) - print(patt.parseString("AAB 123 321").dump()) - - # Use pop() in a parse action to remove named result (note that corresponding value is not - # removed from list form of results) - def remove_LABEL(tokens): - tokens.pop("LABEL") - return tokens - patt.addParseAction(remove_LABEL) - print(patt.parseString("AAB 123 321").dump()) - prints:: - ['AAB', '123', '321'] - - LABEL: AAB - - ['AAB', '123', '321'] - """ - if not args: - args = [-1] - for k,v in kwargs.items(): - if k == 'default': - args = (args[0], v) - else: - raise TypeError("pop() got an unexpected keyword argument '%s'" % k) - if (isinstance(args[0], int) or - len(args) == 1 or - args[0] in self): - index = args[0] - ret = self[index] - del self[index] - return ret - else: - defaultvalue = args[1] - return defaultvalue - - def get(self, key, defaultValue=None): - """ - Returns named result matching the given key, or if there is no - such name, then returns the given C{defaultValue} or C{None} if no - C{defaultValue} is specified. - - Similar to C{dict.get()}. - - Example:: - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - result = date_str.parseString("1999/12/31") - print(result.get("year")) # -> '1999' - print(result.get("hour", "not specified")) # -> 'not specified' - print(result.get("hour")) # -> None - """ - if key in self: - return self[key] - else: - return defaultValue - - def insert( self, index, insStr ): - """ - Inserts new element at location index in the list of parsed tokens. - - Similar to C{list.insert()}. - - Example:: - print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321'] - - # use a parse action to insert the parse location in the front of the parsed results - def insert_locn(locn, tokens): - tokens.insert(0, locn) - print(OneOrMore(Word(nums)).addParseAction(insert_locn).parseString("0 123 321")) # -> [0, '0', '123', '321'] - """ - self.__toklist.insert(index, insStr) - # fixup indices in token dictionary - for name,occurrences in self.__tokdict.items(): - for k, (value, position) in enumerate(occurrences): - occurrences[k] = _ParseResultsWithOffset(value, position + (position > index)) - - def append( self, item ): - """ - Add single element to end of ParseResults list of elements. - - Example:: - print(OneOrMore(Word(nums)).parseString("0 123 321")) # -> ['0', '123', '321'] - - # use a parse action to compute the sum of the parsed integers, and add it to the end - def append_sum(tokens): - tokens.append(sum(map(int, tokens))) - print(OneOrMore(Word(nums)).addParseAction(append_sum).parseString("0 123 321")) # -> ['0', '123', '321', 444] - """ - self.__toklist.append(item) - - def extend( self, itemseq ): - """ - Add sequence of elements to end of ParseResults list of elements. - - Example:: - patt = OneOrMore(Word(alphas)) - - # use a parse action to append the reverse of the matched strings, to make a palindrome - def make_palindrome(tokens): - tokens.extend(reversed([t[::-1] for t in tokens])) - return ''.join(tokens) - print(patt.addParseAction(make_palindrome).parseString("lskdj sdlkjf lksd")) # -> 'lskdjsdlkjflksddsklfjkldsjdksl' - """ - if isinstance(itemseq, ParseResults): - self += itemseq - else: - self.__toklist.extend(itemseq) - - def clear( self ): - """ - Clear all elements and results names. - """ - del self.__toklist[:] - self.__tokdict.clear() - - def __getattr__( self, name ): - try: - return self[name] - except KeyError: - return "" - - if name in self.__tokdict: - if name not in self.__accumNames: - return self.__tokdict[name][-1][0] - else: - return ParseResults([ v[0] for v in self.__tokdict[name] ]) - else: - return "" - - def __add__( self, other ): - ret = self.copy() - ret += other - return ret - - def __iadd__( self, other ): - if other.__tokdict: - offset = len(self.__toklist) - addoffset = lambda a: offset if a<0 else a+offset - otheritems = other.__tokdict.items() - otherdictitems = [(k, _ParseResultsWithOffset(v[0],addoffset(v[1])) ) - for (k,vlist) in otheritems for v in vlist] - for k,v in otherdictitems: - self[k] = v - if isinstance(v[0],ParseResults): - v[0].__parent = wkref(self) - - self.__toklist += other.__toklist - self.__accumNames.update( other.__accumNames ) - return self - - def __radd__(self, other): - if isinstance(other,int) and other == 0: - # useful for merging many ParseResults using sum() builtin - return self.copy() - else: - # this may raise a TypeError - so be it - return other + self - - def __repr__( self ): - return "(%s, %s)" % ( repr( self.__toklist ), repr( self.__tokdict ) ) - - def __str__( self ): - return '[' + ', '.join(_ustr(i) if isinstance(i, ParseResults) else repr(i) for i in self.__toklist) + ']' - - def _asStringList( self, sep='' ): - out = [] - for item in self.__toklist: - if out and sep: - out.append(sep) - if isinstance( item, ParseResults ): - out += item._asStringList() - else: - out.append( _ustr(item) ) - return out - - def asList( self ): - """ - Returns the parse results as a nested list of matching tokens, all converted to strings. - - Example:: - patt = OneOrMore(Word(alphas)) - result = patt.parseString("sldkj lsdkj sldkj") - # even though the result prints in string-like form, it is actually a pyparsing ParseResults - print(type(result), result) # -> <class 'pyparsing.ParseResults'> ['sldkj', 'lsdkj', 'sldkj'] - - # Use asList() to create an actual list - result_list = result.asList() - print(type(result_list), result_list) # -> <class 'list'> ['sldkj', 'lsdkj', 'sldkj'] - """ - return [res.asList() if isinstance(res,ParseResults) else res for res in self.__toklist] - - def asDict( self ): - """ - Returns the named parse results as a nested dictionary. - - Example:: - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - result = date_str.parseString('12/31/1999') - print(type(result), repr(result)) # -> <class 'pyparsing.ParseResults'> (['12', '/', '31', '/', '1999'], {'day': [('1999', 4)], 'year': [('12', 0)], 'month': [('31', 2)]}) - - result_dict = result.asDict() - print(type(result_dict), repr(result_dict)) # -> <class 'dict'> {'day': '1999', 'year': '12', 'month': '31'} - - # even though a ParseResults supports dict-like access, sometime you just need to have a dict - import json - print(json.dumps(result)) # -> Exception: TypeError: ... is not JSON serializable - print(json.dumps(result.asDict())) # -> {"month": "31", "day": "1999", "year": "12"} - """ - if PY_3: - item_fn = self.items - else: - item_fn = self.iteritems - - def toItem(obj): - if isinstance(obj, ParseResults): - if obj.haskeys(): - return obj.asDict() - else: - return [toItem(v) for v in obj] - else: - return obj - - return dict((k,toItem(v)) for k,v in item_fn()) - - def copy( self ): - """ - Returns a new copy of a C{ParseResults} object. - """ - ret = ParseResults( self.__toklist ) - ret.__tokdict = self.__tokdict.copy() - ret.__parent = self.__parent - ret.__accumNames.update( self.__accumNames ) - ret.__name = self.__name - return ret - - def asXML( self, doctag=None, namedItemsOnly=False, indent="", formatted=True ): - """ - (Deprecated) Returns the parse results as XML. Tags are created for tokens and lists that have defined results names. - """ - nl = "\n" - out = [] - namedItems = dict((v[1],k) for (k,vlist) in self.__tokdict.items() - for v in vlist) - nextLevelIndent = indent + " " - - # collapse out indents if formatting is not desired - if not formatted: - indent = "" - nextLevelIndent = "" - nl = "" - - selfTag = None - if doctag is not None: - selfTag = doctag - else: - if self.__name: - selfTag = self.__name - - if not selfTag: - if namedItemsOnly: - return "" - else: - selfTag = "ITEM" - - out += [ nl, indent, "<", selfTag, ">" ] - - for i,res in enumerate(self.__toklist): - if isinstance(res,ParseResults): - if i in namedItems: - out += [ res.asXML(namedItems[i], - namedItemsOnly and doctag is None, - nextLevelIndent, - formatted)] - else: - out += [ res.asXML(None, - namedItemsOnly and doctag is None, - nextLevelIndent, - formatted)] - else: - # individual token, see if there is a name for it - resTag = None - if i in namedItems: - resTag = namedItems[i] - if not resTag: - if namedItemsOnly: - continue - else: - resTag = "ITEM" - xmlBodyText = _xml_escape(_ustr(res)) - out += [ nl, nextLevelIndent, "<", resTag, ">", - xmlBodyText, - "</", resTag, ">" ] - - out += [ nl, indent, "</", selfTag, ">" ] - return "".join(out) - - def __lookup(self,sub): - for k,vlist in self.__tokdict.items(): - for v,loc in vlist: - if sub is v: - return k - return None - - def getName(self): - """ - Returns the results name for this token expression. Useful when several - different expressions might match at a particular location. - - Example:: - integer = Word(nums) - ssn_expr = Regex(r"\d\d\d-\d\d-\d\d\d\d") - house_number_expr = Suppress('#') + Word(nums, alphanums) - user_data = (Group(house_number_expr)("house_number") - | Group(ssn_expr)("ssn") - | Group(integer)("age")) - user_info = OneOrMore(user_data) - - result = user_info.parseString("22 111-22-3333 #221B") - for item in result: - print(item.getName(), ':', item[0]) - prints:: - age : 22 - ssn : 111-22-3333 - house_number : 221B - """ - if self.__name: - return self.__name - elif self.__parent: - par = self.__parent() - if par: - return par.__lookup(self) - else: - return None - elif (len(self) == 1 and - len(self.__tokdict) == 1 and - next(iter(self.__tokdict.values()))[0][1] in (0,-1)): - return next(iter(self.__tokdict.keys())) - else: - return None - - def dump(self, indent='', depth=0, full=True): - """ - Diagnostic method for listing out the contents of a C{ParseResults}. - Accepts an optional C{indent} argument so that this string can be embedded - in a nested display of other data. - - Example:: - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - result = date_str.parseString('12/31/1999') - print(result.dump()) - prints:: - ['12', '/', '31', '/', '1999'] - - day: 1999 - - month: 31 - - year: 12 - """ - out = [] - NL = '\n' - out.append( indent+_ustr(self.asList()) ) - if full: - if self.haskeys(): - items = sorted((str(k), v) for k,v in self.items()) - for k,v in items: - if out: - out.append(NL) - out.append( "%s%s- %s: " % (indent,(' '*depth), k) ) - if isinstance(v,ParseResults): - if v: - out.append( v.dump(indent,depth+1) ) - else: - out.append(_ustr(v)) - else: - out.append(repr(v)) - elif any(isinstance(vv,ParseResults) for vv in self): - v = self - for i,vv in enumerate(v): - if isinstance(vv,ParseResults): - out.append("\n%s%s[%d]:\n%s%s%s" % (indent,(' '*(depth)),i,indent,(' '*(depth+1)),vv.dump(indent,depth+1) )) - else: - out.append("\n%s%s[%d]:\n%s%s%s" % (indent,(' '*(depth)),i,indent,(' '*(depth+1)),_ustr(vv))) - - return "".join(out) - - def pprint(self, *args, **kwargs): - """ - Pretty-printer for parsed results as a list, using the C{pprint} module. - Accepts additional positional or keyword args as defined for the - C{pprint.pprint} method. (U{http://docs.python.org/3/library/pprint.html#pprint.pprint}) - - Example:: - ident = Word(alphas, alphanums) - num = Word(nums) - func = Forward() - term = ident | num | Group('(' + func + ')') - func <<= ident + Group(Optional(delimitedList(term))) - result = func.parseString("fna a,b,(fnb c,d,200),100") - result.pprint(width=40) - prints:: - ['fna', - ['a', - 'b', - ['(', 'fnb', ['c', 'd', '200'], ')'], - '100']] - """ - pprint.pprint(self.asList(), *args, **kwargs) - - # add support for pickle protocol - def __getstate__(self): - return ( self.__toklist, - ( self.__tokdict.copy(), - self.__parent is not None and self.__parent() or None, - self.__accumNames, - self.__name ) ) - - def __setstate__(self,state): - self.__toklist = state[0] - (self.__tokdict, - par, - inAccumNames, - self.__name) = state[1] - self.__accumNames = {} - self.__accumNames.update(inAccumNames) - if par is not None: - self.__parent = wkref(par) - else: - self.__parent = None - - def __getnewargs__(self): - return self.__toklist, self.__name, self.__asList, self.__modal - - def __dir__(self): - return (dir(type(self)) + list(self.keys())) - -collections.MutableMapping.register(ParseResults) - -def col (loc,strg): - """Returns current column within a string, counting newlines as line separators. - The first column is number 1. - - Note: the default parsing behavior is to expand tabs in the input string - before starting the parsing process. See L{I{ParserElement.parseString}<ParserElement.parseString>} for more information - on parsing strings containing C{<TAB>}s, and suggested methods to maintain a - consistent view of the parsed string, the parse location, and line and column - positions within the parsed string. - """ - s = strg - return 1 if 0<loc<len(s) and s[loc-1] == '\n' else loc - s.rfind("\n", 0, loc) - -def lineno(loc,strg): - """Returns current line number within a string, counting newlines as line separators. - The first line is number 1. - - Note: the default parsing behavior is to expand tabs in the input string - before starting the parsing process. See L{I{ParserElement.parseString}<ParserElement.parseString>} for more information - on parsing strings containing C{<TAB>}s, and suggested methods to maintain a - consistent view of the parsed string, the parse location, and line and column - positions within the parsed string. - """ - return strg.count("\n",0,loc) + 1 - -def line( loc, strg ): - """Returns the line of text containing loc within a string, counting newlines as line separators. - """ - lastCR = strg.rfind("\n", 0, loc) - nextCR = strg.find("\n", loc) - if nextCR >= 0: - return strg[lastCR+1:nextCR] - else: - return strg[lastCR+1:] - -def _defaultStartDebugAction( instring, loc, expr ): - print (("Match " + _ustr(expr) + " at loc " + _ustr(loc) + "(%d,%d)" % ( lineno(loc,instring), col(loc,instring) ))) - -def _defaultSuccessDebugAction( instring, startloc, endloc, expr, toks ): - print ("Matched " + _ustr(expr) + " -> " + str(toks.asList())) - -def _defaultExceptionDebugAction( instring, loc, expr, exc ): - print ("Exception raised:" + _ustr(exc)) - -def nullDebugAction(*args): - """'Do-nothing' debug action, to suppress debugging output during parsing.""" - pass - -# Only works on Python 3.x - nonlocal is toxic to Python 2 installs -#~ 'decorator to trim function calls to match the arity of the target' -#~ def _trim_arity(func, maxargs=3): - #~ if func in singleArgBuiltins: - #~ return lambda s,l,t: func(t) - #~ limit = 0 - #~ foundArity = False - #~ def wrapper(*args): - #~ nonlocal limit,foundArity - #~ while 1: - #~ try: - #~ ret = func(*args[limit:]) - #~ foundArity = True - #~ return ret - #~ except TypeError: - #~ if limit == maxargs or foundArity: - #~ raise - #~ limit += 1 - #~ continue - #~ return wrapper - -# this version is Python 2.x-3.x cross-compatible -'decorator to trim function calls to match the arity of the target' -def _trim_arity(func, maxargs=2): - if func in singleArgBuiltins: - return lambda s,l,t: func(t) - limit = [0] - foundArity = [False] - - # traceback return data structure changed in Py3.5 - normalize back to plain tuples - if system_version[:2] >= (3,5): - def extract_stack(limit=0): - # special handling for Python 3.5.0 - extra deep call stack by 1 - offset = -3 if system_version == (3,5,0) else -2 - frame_summary = traceback.extract_stack(limit=-offset+limit-1)[offset] - return [(frame_summary.filename, frame_summary.lineno)] - def extract_tb(tb, limit=0): - frames = traceback.extract_tb(tb, limit=limit) - frame_summary = frames[-1] - return [(frame_summary.filename, frame_summary.lineno)] - else: - extract_stack = traceback.extract_stack - extract_tb = traceback.extract_tb - - # synthesize what would be returned by traceback.extract_stack at the call to - # user's parse action 'func', so that we don't incur call penalty at parse time - - LINE_DIFF = 6 - # IF ANY CODE CHANGES, EVEN JUST COMMENTS OR BLANK LINES, BETWEEN THE NEXT LINE AND - # THE CALL TO FUNC INSIDE WRAPPER, LINE_DIFF MUST BE MODIFIED!!!! - this_line = extract_stack(limit=2)[-1] - pa_call_line_synth = (this_line[0], this_line[1]+LINE_DIFF) - - def wrapper(*args): - while 1: - try: - ret = func(*args[limit[0]:]) - foundArity[0] = True - return ret - except TypeError: - # re-raise TypeErrors if they did not come from our arity testing - if foundArity[0]: - raise - else: - try: - tb = sys.exc_info()[-1] - if not extract_tb(tb, limit=2)[-1][:2] == pa_call_line_synth: - raise - finally: - del tb - - if limit[0] <= maxargs: - limit[0] += 1 - continue - raise - - # copy func name to wrapper for sensible debug output - func_name = "<parse action>" - try: - func_name = getattr(func, '__name__', - getattr(func, '__class__').__name__) - except Exception: - func_name = str(func) - wrapper.__name__ = func_name - - return wrapper - -class ParserElement(object): - """Abstract base level parser element class.""" - DEFAULT_WHITE_CHARS = " \n\t\r" - verbose_stacktrace = False - - @staticmethod - def setDefaultWhitespaceChars( chars ): - r""" - Overrides the default whitespace chars - - Example:: - # default whitespace chars are space, <TAB> and newline - OneOrMore(Word(alphas)).parseString("abc def\nghi jkl") # -> ['abc', 'def', 'ghi', 'jkl'] - - # change to just treat newline as significant - ParserElement.setDefaultWhitespaceChars(" \t") - OneOrMore(Word(alphas)).parseString("abc def\nghi jkl") # -> ['abc', 'def'] - """ - ParserElement.DEFAULT_WHITE_CHARS = chars - - @staticmethod - def inlineLiteralsUsing(cls): - """ - Set class to be used for inclusion of string literals into a parser. - - Example:: - # default literal class used is Literal - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - date_str.parseString("1999/12/31") # -> ['1999', '/', '12', '/', '31'] - - - # change to Suppress - ParserElement.inlineLiteralsUsing(Suppress) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - date_str.parseString("1999/12/31") # -> ['1999', '12', '31'] - """ - ParserElement._literalStringClass = cls - - def __init__( self, savelist=False ): - self.parseAction = list() - self.failAction = None - #~ self.name = "<unknown>" # don't define self.name, let subclasses try/except upcall - self.strRepr = None - self.resultsName = None - self.saveAsList = savelist - self.skipWhitespace = True - self.whiteChars = ParserElement.DEFAULT_WHITE_CHARS - self.copyDefaultWhiteChars = True - self.mayReturnEmpty = False # used when checking for left-recursion - self.keepTabs = False - self.ignoreExprs = list() - self.debug = False - self.streamlined = False - self.mayIndexError = True # used to optimize exception handling for subclasses that don't advance parse index - self.errmsg = "" - self.modalResults = True # used to mark results names as modal (report only last) or cumulative (list all) - self.debugActions = ( None, None, None ) #custom debug actions - self.re = None - self.callPreparse = True # used to avoid redundant calls to preParse - self.callDuringTry = False - - def copy( self ): - """ - Make a copy of this C{ParserElement}. Useful for defining different parse actions - for the same parsing pattern, using copies of the original parse element. - - Example:: - integer = Word(nums).setParseAction(lambda toks: int(toks[0])) - integerK = integer.copy().addParseAction(lambda toks: toks[0]*1024) + Suppress("K") - integerM = integer.copy().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress("M") - - print(OneOrMore(integerK | integerM | integer).parseString("5K 100 640K 256M")) - prints:: - [5120, 100, 655360, 268435456] - Equivalent form of C{expr.copy()} is just C{expr()}:: - integerM = integer().addParseAction(lambda toks: toks[0]*1024*1024) + Suppress("M") - """ - cpy = copy.copy( self ) - cpy.parseAction = self.parseAction[:] - cpy.ignoreExprs = self.ignoreExprs[:] - if self.copyDefaultWhiteChars: - cpy.whiteChars = ParserElement.DEFAULT_WHITE_CHARS - return cpy - - def setName( self, name ): - """ - Define name for this expression, makes debugging and exception messages clearer. - - Example:: - Word(nums).parseString("ABC") # -> Exception: Expected W:(0123...) (at char 0), (line:1, col:1) - Word(nums).setName("integer").parseString("ABC") # -> Exception: Expected integer (at char 0), (line:1, col:1) - """ - self.name = name - self.errmsg = "Expected " + self.name - if hasattr(self,"exception"): - self.exception.msg = self.errmsg - return self - - def setResultsName( self, name, listAllMatches=False ): - """ - Define name for referencing matching tokens as a nested attribute - of the returned parse results. - NOTE: this returns a *copy* of the original C{ParserElement} object; - this is so that the client can define a basic element, such as an - integer, and reference it in multiple places with different names. - - You can also set results names using the abbreviated syntax, - C{expr("name")} in place of C{expr.setResultsName("name")} - - see L{I{__call__}<__call__>}. - - Example:: - date_str = (integer.setResultsName("year") + '/' - + integer.setResultsName("month") + '/' - + integer.setResultsName("day")) - - # equivalent form: - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - """ - newself = self.copy() - if name.endswith("*"): - name = name[:-1] - listAllMatches=True - newself.resultsName = name - newself.modalResults = not listAllMatches - return newself - - def setBreak(self,breakFlag = True): - """Method to invoke the Python pdb debugger when this element is - about to be parsed. Set C{breakFlag} to True to enable, False to - disable. - """ - if breakFlag: - _parseMethod = self._parse - def breaker(instring, loc, doActions=True, callPreParse=True): - import pdb - pdb.set_trace() - return _parseMethod( instring, loc, doActions, callPreParse ) - breaker._originalParseMethod = _parseMethod - self._parse = breaker - else: - if hasattr(self._parse,"_originalParseMethod"): - self._parse = self._parse._originalParseMethod - return self - - def setParseAction( self, *fns, **kwargs ): - """ - Define action to perform when successfully matching parse element definition. - Parse action fn is a callable method with 0-3 arguments, called as C{fn(s,loc,toks)}, - C{fn(loc,toks)}, C{fn(toks)}, or just C{fn()}, where: - - s = the original string being parsed (see note below) - - loc = the location of the matching substring - - toks = a list of the matched tokens, packaged as a C{L{ParseResults}} object - If the functions in fns modify the tokens, they can return them as the return - value from fn, and the modified list of tokens will replace the original. - Otherwise, fn does not need to return any value. - - Optional keyword arguments: - - callDuringTry = (default=C{False}) indicate if parse action should be run during lookaheads and alternate testing - - Note: the default parsing behavior is to expand tabs in the input string - before starting the parsing process. See L{I{parseString}<parseString>} for more information - on parsing strings containing C{<TAB>}s, and suggested methods to maintain a - consistent view of the parsed string, the parse location, and line and column - positions within the parsed string. - - Example:: - integer = Word(nums) - date_str = integer + '/' + integer + '/' + integer - - date_str.parseString("1999/12/31") # -> ['1999', '/', '12', '/', '31'] - - # use parse action to convert to ints at parse time - integer = Word(nums).setParseAction(lambda toks: int(toks[0])) - date_str = integer + '/' + integer + '/' + integer - - # note that integer fields are now ints, not strings - date_str.parseString("1999/12/31") # -> [1999, '/', 12, '/', 31] - """ - self.parseAction = list(map(_trim_arity, list(fns))) - self.callDuringTry = kwargs.get("callDuringTry", False) - return self - - def addParseAction( self, *fns, **kwargs ): - """ - Add parse action to expression's list of parse actions. See L{I{setParseAction}<setParseAction>}. - - See examples in L{I{copy}<copy>}. - """ - self.parseAction += list(map(_trim_arity, list(fns))) - self.callDuringTry = self.callDuringTry or kwargs.get("callDuringTry", False) - return self - - def addCondition(self, *fns, **kwargs): - """Add a boolean predicate function to expression's list of parse actions. See - L{I{setParseAction}<setParseAction>} for function call signatures. Unlike C{setParseAction}, - functions passed to C{addCondition} need to return boolean success/fail of the condition. - - Optional keyword arguments: - - message = define a custom message to be used in the raised exception - - fatal = if True, will raise ParseFatalException to stop parsing immediately; otherwise will raise ParseException - - Example:: - integer = Word(nums).setParseAction(lambda toks: int(toks[0])) - year_int = integer.copy() - year_int.addCondition(lambda toks: toks[0] >= 2000, message="Only support years 2000 and later") - date_str = year_int + '/' + integer + '/' + integer - - result = date_str.parseString("1999/12/31") # -> Exception: Only support years 2000 and later (at char 0), (line:1, col:1) - """ - msg = kwargs.get("message", "failed user-defined condition") - exc_type = ParseFatalException if kwargs.get("fatal", False) else ParseException - for fn in fns: - def pa(s,l,t): - if not bool(_trim_arity(fn)(s,l,t)): - raise exc_type(s,l,msg) - self.parseAction.append(pa) - self.callDuringTry = self.callDuringTry or kwargs.get("callDuringTry", False) - return self - - def setFailAction( self, fn ): - """Define action to perform if parsing fails at this expression. - Fail acton fn is a callable function that takes the arguments - C{fn(s,loc,expr,err)} where: - - s = string being parsed - - loc = location where expression match was attempted and failed - - expr = the parse expression that failed - - err = the exception thrown - The function returns no value. It may throw C{L{ParseFatalException}} - if it is desired to stop parsing immediately.""" - self.failAction = fn - return self - - def _skipIgnorables( self, instring, loc ): - exprsFound = True - while exprsFound: - exprsFound = False - for e in self.ignoreExprs: - try: - while 1: - loc,dummy = e._parse( instring, loc ) - exprsFound = True - except ParseException: - pass - return loc - - def preParse( self, instring, loc ): - if self.ignoreExprs: - loc = self._skipIgnorables( instring, loc ) - - if self.skipWhitespace: - wt = self.whiteChars - instrlen = len(instring) - while loc < instrlen and instring[loc] in wt: - loc += 1 - - return loc - - def parseImpl( self, instring, loc, doActions=True ): - return loc, [] - - def postParse( self, instring, loc, tokenlist ): - return tokenlist - - #~ @profile - def _parseNoCache( self, instring, loc, doActions=True, callPreParse=True ): - debugging = ( self.debug ) #and doActions ) - - if debugging or self.failAction: - #~ print ("Match",self,"at loc",loc,"(%d,%d)" % ( lineno(loc,instring), col(loc,instring) )) - if (self.debugActions[0] ): - self.debugActions[0]( instring, loc, self ) - if callPreParse and self.callPreparse: - preloc = self.preParse( instring, loc ) - else: - preloc = loc - tokensStart = preloc - try: - try: - loc,tokens = self.parseImpl( instring, preloc, doActions ) - except IndexError: - raise ParseException( instring, len(instring), self.errmsg, self ) - except ParseBaseException as err: - #~ print ("Exception raised:", err) - if self.debugActions[2]: - self.debugActions[2]( instring, tokensStart, self, err ) - if self.failAction: - self.failAction( instring, tokensStart, self, err ) - raise - else: - if callPreParse and self.callPreparse: - preloc = self.preParse( instring, loc ) - else: - preloc = loc - tokensStart = preloc - if self.mayIndexError or loc >= len(instring): - try: - loc,tokens = self.parseImpl( instring, preloc, doActions ) - except IndexError: - raise ParseException( instring, len(instring), self.errmsg, self ) - else: - loc,tokens = self.parseImpl( instring, preloc, doActions ) - - tokens = self.postParse( instring, loc, tokens ) - - retTokens = ParseResults( tokens, self.resultsName, asList=self.saveAsList, modal=self.modalResults ) - if self.parseAction and (doActions or self.callDuringTry): - if debugging: - try: - for fn in self.parseAction: - tokens = fn( instring, tokensStart, retTokens ) - if tokens is not None: - retTokens = ParseResults( tokens, - self.resultsName, - asList=self.saveAsList and isinstance(tokens,(ParseResults,list)), - modal=self.modalResults ) - except ParseBaseException as err: - #~ print "Exception raised in user parse action:", err - if (self.debugActions[2] ): - self.debugActions[2]( instring, tokensStart, self, err ) - raise - else: - for fn in self.parseAction: - tokens = fn( instring, tokensStart, retTokens ) - if tokens is not None: - retTokens = ParseResults( tokens, - self.resultsName, - asList=self.saveAsList and isinstance(tokens,(ParseResults,list)), - modal=self.modalResults ) - - if debugging: - #~ print ("Matched",self,"->",retTokens.asList()) - if (self.debugActions[1] ): - self.debugActions[1]( instring, tokensStart, loc, self, retTokens ) - - return loc, retTokens - - def tryParse( self, instring, loc ): - try: - return self._parse( instring, loc, doActions=False )[0] - except ParseFatalException: - raise ParseException( instring, loc, self.errmsg, self) - - def canParseNext(self, instring, loc): - try: - self.tryParse(instring, loc) - except (ParseException, IndexError): - return False - else: - return True - - class _UnboundedCache(object): - def __init__(self): - cache = {} - self.not_in_cache = not_in_cache = object() - - def get(self, key): - return cache.get(key, not_in_cache) - - def set(self, key, value): - cache[key] = value - - def clear(self): - cache.clear() - - self.get = types.MethodType(get, self) - self.set = types.MethodType(set, self) - self.clear = types.MethodType(clear, self) - - if _OrderedDict is not None: - class _FifoCache(object): - def __init__(self, size): - self.not_in_cache = not_in_cache = object() - - cache = _OrderedDict() - - def get(self, key): - return cache.get(key, not_in_cache) - - def set(self, key, value): - cache[key] = value - if len(cache) > size: - cache.popitem(False) - - def clear(self): - cache.clear() - - self.get = types.MethodType(get, self) - self.set = types.MethodType(set, self) - self.clear = types.MethodType(clear, self) - - else: - class _FifoCache(object): - def __init__(self, size): - self.not_in_cache = not_in_cache = object() - - cache = {} - key_fifo = collections.deque([], size) - - def get(self, key): - return cache.get(key, not_in_cache) - - def set(self, key, value): - cache[key] = value - if len(cache) > size: - cache.pop(key_fifo.popleft(), None) - key_fifo.append(key) - - def clear(self): - cache.clear() - key_fifo.clear() - - self.get = types.MethodType(get, self) - self.set = types.MethodType(set, self) - self.clear = types.MethodType(clear, self) - - # argument cache for optimizing repeated calls when backtracking through recursive expressions - packrat_cache = {} # this is set later by enabledPackrat(); this is here so that resetCache() doesn't fail - packrat_cache_lock = RLock() - packrat_cache_stats = [0, 0] - - # this method gets repeatedly called during backtracking with the same arguments - - # we can cache these arguments and save ourselves the trouble of re-parsing the contained expression - def _parseCache( self, instring, loc, doActions=True, callPreParse=True ): - HIT, MISS = 0, 1 - lookup = (self, instring, loc, callPreParse, doActions) - with ParserElement.packrat_cache_lock: - cache = ParserElement.packrat_cache - value = cache.get(lookup) - if value is cache.not_in_cache: - ParserElement.packrat_cache_stats[MISS] += 1 - try: - value = self._parseNoCache(instring, loc, doActions, callPreParse) - except ParseBaseException as pe: - # cache a copy of the exception, without the traceback - cache.set(lookup, pe.__class__(*pe.args)) - raise - else: - cache.set(lookup, (value[0], value[1].copy())) - return value - else: - ParserElement.packrat_cache_stats[HIT] += 1 - if isinstance(value, Exception): - raise value - return (value[0], value[1].copy()) - - _parse = _parseNoCache - - @staticmethod - def resetCache(): - ParserElement.packrat_cache.clear() - ParserElement.packrat_cache_stats[:] = [0] * len(ParserElement.packrat_cache_stats) - - _packratEnabled = False - @staticmethod - def enablePackrat(cache_size_limit=128): - """Enables "packrat" parsing, which adds memoizing to the parsing logic. - Repeated parse attempts at the same string location (which happens - often in many complex grammars) can immediately return a cached value, - instead of re-executing parsing/validating code. Memoizing is done of - both valid results and parsing exceptions. - - Parameters: - - cache_size_limit - (default=C{128}) - if an integer value is provided - will limit the size of the packrat cache; if None is passed, then - the cache size will be unbounded; if 0 is passed, the cache will - be effectively disabled. - - This speedup may break existing programs that use parse actions that - have side-effects. For this reason, packrat parsing is disabled when - you first import pyparsing. To activate the packrat feature, your - program must call the class method C{ParserElement.enablePackrat()}. If - your program uses C{psyco} to "compile as you go", you must call - C{enablePackrat} before calling C{psyco.full()}. If you do not do this, - Python will crash. For best results, call C{enablePackrat()} immediately - after importing pyparsing. - - Example:: - import pyparsing - pyparsing.ParserElement.enablePackrat() - """ - if not ParserElement._packratEnabled: - ParserElement._packratEnabled = True - if cache_size_limit is None: - ParserElement.packrat_cache = ParserElement._UnboundedCache() - else: - ParserElement.packrat_cache = ParserElement._FifoCache(cache_size_limit) - ParserElement._parse = ParserElement._parseCache - - def parseString( self, instring, parseAll=False ): - """ - Execute the parse expression with the given string. - This is the main interface to the client code, once the complete - expression has been built. - - If you want the grammar to require that the entire input string be - successfully parsed, then set C{parseAll} to True (equivalent to ending - the grammar with C{L{StringEnd()}}). - - Note: C{parseString} implicitly calls C{expandtabs()} on the input string, - in order to report proper column numbers in parse actions. - If the input string contains tabs and - the grammar uses parse actions that use the C{loc} argument to index into the - string being parsed, you can ensure you have a consistent view of the input - string by: - - calling C{parseWithTabs} on your grammar before calling C{parseString} - (see L{I{parseWithTabs}<parseWithTabs>}) - - define your parse action using the full C{(s,loc,toks)} signature, and - reference the input string using the parse action's C{s} argument - - explictly expand the tabs in your input string before calling - C{parseString} - - Example:: - Word('a').parseString('aaaaabaaa') # -> ['aaaaa'] - Word('a').parseString('aaaaabaaa', parseAll=True) # -> Exception: Expected end of text - """ - ParserElement.resetCache() - if not self.streamlined: - self.streamline() - #~ self.saveAsList = True - for e in self.ignoreExprs: - e.streamline() - if not self.keepTabs: - instring = instring.expandtabs() - try: - loc, tokens = self._parse( instring, 0 ) - if parseAll: - loc = self.preParse( instring, loc ) - se = Empty() + StringEnd() - se._parse( instring, loc ) - except ParseBaseException as exc: - if ParserElement.verbose_stacktrace: - raise - else: - # catch and re-raise exception from here, clears out pyparsing internal stack trace - raise exc - else: - return tokens - - def scanString( self, instring, maxMatches=_MAX_INT, overlap=False ): - """ - Scan the input string for expression matches. Each match will return the - matching tokens, start location, and end location. May be called with optional - C{maxMatches} argument, to clip scanning after 'n' matches are found. If - C{overlap} is specified, then overlapping matches will be reported. - - Note that the start and end locations are reported relative to the string - being parsed. See L{I{parseString}<parseString>} for more information on parsing - strings with embedded tabs. - - Example:: - source = "sldjf123lsdjjkf345sldkjf879lkjsfd987" - print(source) - for tokens,start,end in Word(alphas).scanString(source): - print(' '*start + '^'*(end-start)) - print(' '*start + tokens[0]) - - prints:: - - sldjf123lsdjjkf345sldkjf879lkjsfd987 - ^^^^^ - sldjf - ^^^^^^^ - lsdjjkf - ^^^^^^ - sldkjf - ^^^^^^ - lkjsfd - """ - if not self.streamlined: - self.streamline() - for e in self.ignoreExprs: - e.streamline() - - if not self.keepTabs: - instring = _ustr(instring).expandtabs() - instrlen = len(instring) - loc = 0 - preparseFn = self.preParse - parseFn = self._parse - ParserElement.resetCache() - matches = 0 - try: - while loc <= instrlen and matches < maxMatches: - try: - preloc = preparseFn( instring, loc ) - nextLoc,tokens = parseFn( instring, preloc, callPreParse=False ) - except ParseException: - loc = preloc+1 - else: - if nextLoc > loc: - matches += 1 - yield tokens, preloc, nextLoc - if overlap: - nextloc = preparseFn( instring, loc ) - if nextloc > loc: - loc = nextLoc - else: - loc += 1 - else: - loc = nextLoc - else: - loc = preloc+1 - except ParseBaseException as exc: - if ParserElement.verbose_stacktrace: - raise - else: - # catch and re-raise exception from here, clears out pyparsing internal stack trace - raise exc - - def transformString( self, instring ): - """ - Extension to C{L{scanString}}, to modify matching text with modified tokens that may - be returned from a parse action. To use C{transformString}, define a grammar and - attach a parse action to it that modifies the returned token list. - Invoking C{transformString()} on a target string will then scan for matches, - and replace the matched text patterns according to the logic in the parse - action. C{transformString()} returns the resulting transformed string. - - Example:: - wd = Word(alphas) - wd.setParseAction(lambda toks: toks[0].title()) - - print(wd.transformString("now is the winter of our discontent made glorious summer by this sun of york.")) - Prints:: - Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York. - """ - out = [] - lastE = 0 - # force preservation of <TAB>s, to minimize unwanted transformation of string, and to - # keep string locs straight between transformString and scanString - self.keepTabs = True - try: - for t,s,e in self.scanString( instring ): - out.append( instring[lastE:s] ) - if t: - if isinstance(t,ParseResults): - out += t.asList() - elif isinstance(t,list): - out += t - else: - out.append(t) - lastE = e - out.append(instring[lastE:]) - out = [o for o in out if o] - return "".join(map(_ustr,_flatten(out))) - except ParseBaseException as exc: - if ParserElement.verbose_stacktrace: - raise - else: - # catch and re-raise exception from here, clears out pyparsing internal stack trace - raise exc - - def searchString( self, instring, maxMatches=_MAX_INT ): - """ - Another extension to C{L{scanString}}, simplifying the access to the tokens found - to match the given parse expression. May be called with optional - C{maxMatches} argument, to clip searching after 'n' matches are found. - - Example:: - # a capitalized word starts with an uppercase letter, followed by zero or more lowercase letters - cap_word = Word(alphas.upper(), alphas.lower()) - - print(cap_word.searchString("More than Iron, more than Lead, more than Gold I need Electricity")) - prints:: - ['More', 'Iron', 'Lead', 'Gold', 'I'] - """ - try: - return ParseResults([ t for t,s,e in self.scanString( instring, maxMatches ) ]) - except ParseBaseException as exc: - if ParserElement.verbose_stacktrace: - raise - else: - # catch and re-raise exception from here, clears out pyparsing internal stack trace - raise exc - - def split(self, instring, maxsplit=_MAX_INT, includeSeparators=False): - """ - Generator method to split a string using the given expression as a separator. - May be called with optional C{maxsplit} argument, to limit the number of splits; - and the optional C{includeSeparators} argument (default=C{False}), if the separating - matching text should be included in the split results. - - Example:: - punc = oneOf(list(".,;:/-!?")) - print(list(punc.split("This, this?, this sentence, is badly punctuated!"))) - prints:: - ['This', ' this', '', ' this sentence', ' is badly punctuated', ''] - """ - splits = 0 - last = 0 - for t,s,e in self.scanString(instring, maxMatches=maxsplit): - yield instring[last:s] - if includeSeparators: - yield t[0] - last = e - yield instring[last:] - - def __add__(self, other ): - """ - Implementation of + operator - returns C{L{And}}. Adding strings to a ParserElement - converts them to L{Literal}s by default. - - Example:: - greet = Word(alphas) + "," + Word(alphas) + "!" - hello = "Hello, World!" - print (hello, "->", greet.parseString(hello)) - Prints:: - Hello, World! -> ['Hello', ',', 'World', '!'] - """ - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - if not isinstance( other, ParserElement ): - warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), - SyntaxWarning, stacklevel=2) - return None - return And( [ self, other ] ) - - def __radd__(self, other ): - """ - Implementation of + operator when left operand is not a C{L{ParserElement}} - """ - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - if not isinstance( other, ParserElement ): - warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), - SyntaxWarning, stacklevel=2) - return None - return other + self - - def __sub__(self, other): - """ - Implementation of - operator, returns C{L{And}} with error stop - """ - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - if not isinstance( other, ParserElement ): - warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), - SyntaxWarning, stacklevel=2) - return None - return And( [ self, And._ErrorStop(), other ] ) - - def __rsub__(self, other ): - """ - Implementation of - operator when left operand is not a C{L{ParserElement}} - """ - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - if not isinstance( other, ParserElement ): - warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), - SyntaxWarning, stacklevel=2) - return None - return other - self - - def __mul__(self,other): - """ - Implementation of * operator, allows use of C{expr * 3} in place of - C{expr + expr + expr}. Expressions may also me multiplied by a 2-integer - tuple, similar to C{{min,max}} multipliers in regular expressions. Tuples - may also include C{None} as in: - - C{expr*(n,None)} or C{expr*(n,)} is equivalent - to C{expr*n + L{ZeroOrMore}(expr)} - (read as "at least n instances of C{expr}") - - C{expr*(None,n)} is equivalent to C{expr*(0,n)} - (read as "0 to n instances of C{expr}") - - C{expr*(None,None)} is equivalent to C{L{ZeroOrMore}(expr)} - - C{expr*(1,None)} is equivalent to C{L{OneOrMore}(expr)} - - Note that C{expr*(None,n)} does not raise an exception if - more than n exprs exist in the input stream; that is, - C{expr*(None,n)} does not enforce a maximum number of expr - occurrences. If this behavior is desired, then write - C{expr*(None,n) + ~expr} - """ - if isinstance(other,int): - minElements, optElements = other,0 - elif isinstance(other,tuple): - other = (other + (None, None))[:2] - if other[0] is None: - other = (0, other[1]) - if isinstance(other[0],int) and other[1] is None: - if other[0] == 0: - return ZeroOrMore(self) - if other[0] == 1: - return OneOrMore(self) - else: - return self*other[0] + ZeroOrMore(self) - elif isinstance(other[0],int) and isinstance(other[1],int): - minElements, optElements = other - optElements -= minElements - else: - raise TypeError("cannot multiply 'ParserElement' and ('%s','%s') objects", type(other[0]),type(other[1])) - else: - raise TypeError("cannot multiply 'ParserElement' and '%s' objects", type(other)) - - if minElements < 0: - raise ValueError("cannot multiply ParserElement by negative value") - if optElements < 0: - raise ValueError("second tuple value must be greater or equal to first tuple value") - if minElements == optElements == 0: - raise ValueError("cannot multiply ParserElement by 0 or (0,0)") - - if (optElements): - def makeOptionalList(n): - if n>1: - return Optional(self + makeOptionalList(n-1)) - else: - return Optional(self) - if minElements: - if minElements == 1: - ret = self + makeOptionalList(optElements) - else: - ret = And([self]*minElements) + makeOptionalList(optElements) - else: - ret = makeOptionalList(optElements) - else: - if minElements == 1: - ret = self - else: - ret = And([self]*minElements) - return ret - - def __rmul__(self, other): - return self.__mul__(other) - - def __or__(self, other ): - """ - Implementation of | operator - returns C{L{MatchFirst}} - """ - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - if not isinstance( other, ParserElement ): - warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), - SyntaxWarning, stacklevel=2) - return None - return MatchFirst( [ self, other ] ) - - def __ror__(self, other ): - """ - Implementation of | operator when left operand is not a C{L{ParserElement}} - """ - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - if not isinstance( other, ParserElement ): - warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), - SyntaxWarning, stacklevel=2) - return None - return other | self - - def __xor__(self, other ): - """ - Implementation of ^ operator - returns C{L{Or}} - """ - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - if not isinstance( other, ParserElement ): - warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), - SyntaxWarning, stacklevel=2) - return None - return Or( [ self, other ] ) - - def __rxor__(self, other ): - """ - Implementation of ^ operator when left operand is not a C{L{ParserElement}} - """ - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - if not isinstance( other, ParserElement ): - warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), - SyntaxWarning, stacklevel=2) - return None - return other ^ self - - def __and__(self, other ): - """ - Implementation of & operator - returns C{L{Each}} - """ - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - if not isinstance( other, ParserElement ): - warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), - SyntaxWarning, stacklevel=2) - return None - return Each( [ self, other ] ) - - def __rand__(self, other ): - """ - Implementation of & operator when left operand is not a C{L{ParserElement}} - """ - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - if not isinstance( other, ParserElement ): - warnings.warn("Cannot combine element of type %s with ParserElement" % type(other), - SyntaxWarning, stacklevel=2) - return None - return other & self - - def __invert__( self ): - """ - Implementation of ~ operator - returns C{L{NotAny}} - """ - return NotAny( self ) - - def __call__(self, name=None): - """ - Shortcut for C{L{setResultsName}}, with C{listAllMatches=False}. - - If C{name} is given with a trailing C{'*'} character, then C{listAllMatches} will be - passed as C{True}. - - If C{name} is omitted, same as calling C{L{copy}}. - - Example:: - # these are equivalent - userdata = Word(alphas).setResultsName("name") + Word(nums+"-").setResultsName("socsecno") - userdata = Word(alphas)("name") + Word(nums+"-")("socsecno") - """ - if name is not None: - return self.setResultsName(name) - else: - return self.copy() - - def suppress( self ): - """ - Suppresses the output of this C{ParserElement}; useful to keep punctuation from - cluttering up returned output. - """ - return Suppress( self ) - - def leaveWhitespace( self ): - """ - Disables the skipping of whitespace before matching the characters in the - C{ParserElement}'s defined pattern. This is normally only used internally by - the pyparsing module, but may be needed in some whitespace-sensitive grammars. - """ - self.skipWhitespace = False - return self - - def setWhitespaceChars( self, chars ): - """ - Overrides the default whitespace chars - """ - self.skipWhitespace = True - self.whiteChars = chars - self.copyDefaultWhiteChars = False - return self - - def parseWithTabs( self ): - """ - Overrides default behavior to expand C{<TAB>}s to spaces before parsing the input string. - Must be called before C{parseString} when the input grammar contains elements that - match C{<TAB>} characters. - """ - self.keepTabs = True - return self - - def ignore( self, other ): - """ - Define expression to be ignored (e.g., comments) while doing pattern - matching; may be called repeatedly, to define multiple comment or other - ignorable patterns. - - Example:: - patt = OneOrMore(Word(alphas)) - patt.parseString('ablaj /* comment */ lskjd') # -> ['ablaj'] - - patt.ignore(cStyleComment) - patt.parseString('ablaj /* comment */ lskjd') # -> ['ablaj', 'lskjd'] - """ - if isinstance(other, basestring): - other = Suppress(other) - - if isinstance( other, Suppress ): - if other not in self.ignoreExprs: - self.ignoreExprs.append(other) - else: - self.ignoreExprs.append( Suppress( other.copy() ) ) - return self - - def setDebugActions( self, startAction, successAction, exceptionAction ): - """ - Enable display of debugging messages while doing pattern matching. - """ - self.debugActions = (startAction or _defaultStartDebugAction, - successAction or _defaultSuccessDebugAction, - exceptionAction or _defaultExceptionDebugAction) - self.debug = True - return self - - def setDebug( self, flag=True ): - """ - Enable display of debugging messages while doing pattern matching. - Set C{flag} to True to enable, False to disable. - - Example:: - wd = Word(alphas).setName("alphaword") - integer = Word(nums).setName("numword") - term = wd | integer - - # turn on debugging for wd - wd.setDebug() - - OneOrMore(term).parseString("abc 123 xyz 890") - - prints:: - Match alphaword at loc 0(1,1) - Matched alphaword -> ['abc'] - Match alphaword at loc 3(1,4) - Exception raised:Expected alphaword (at char 4), (line:1, col:5) - Match alphaword at loc 7(1,8) - Matched alphaword -> ['xyz'] - Match alphaword at loc 11(1,12) - Exception raised:Expected alphaword (at char 12), (line:1, col:13) - Match alphaword at loc 15(1,16) - Exception raised:Expected alphaword (at char 15), (line:1, col:16) - - The output shown is that produced by the default debug actions - custom debug actions can be - specified using L{setDebugActions}. Prior to attempting - to match the C{wd} expression, the debugging message C{"Match <exprname> at loc <n>(<line>,<col>)"} - is shown. Then if the parse succeeds, a C{"Matched"} message is shown, or an C{"Exception raised"} - message is shown. Also note the use of L{setName} to assign a human-readable name to the expression, - which makes debugging and exception messages easier to understand - for instance, the default - name created for the C{Word} expression without calling C{setName} is C{"W:(ABCD...)"}. - """ - if flag: - self.setDebugActions( _defaultStartDebugAction, _defaultSuccessDebugAction, _defaultExceptionDebugAction ) - else: - self.debug = False - return self - - def __str__( self ): - return self.name - - def __repr__( self ): - return _ustr(self) - - def streamline( self ): - self.streamlined = True - self.strRepr = None - return self - - def checkRecursion( self, parseElementList ): - pass - - def validate( self, validateTrace=[] ): - """ - Check defined expressions for valid structure, check for infinite recursive definitions. - """ - self.checkRecursion( [] ) - - def parseFile( self, file_or_filename, parseAll=False ): - """ - Execute the parse expression on the given file or filename. - If a filename is specified (instead of a file object), - the entire file is opened, read, and closed before parsing. - """ - try: - file_contents = file_or_filename.read() - except AttributeError: - with open(file_or_filename, "r") as f: - file_contents = f.read() - try: - return self.parseString(file_contents, parseAll) - except ParseBaseException as exc: - if ParserElement.verbose_stacktrace: - raise - else: - # catch and re-raise exception from here, clears out pyparsing internal stack trace - raise exc - - def __eq__(self,other): - if isinstance(other, ParserElement): - return self is other or vars(self) == vars(other) - elif isinstance(other, basestring): - return self.matches(other) - else: - return super(ParserElement,self)==other - - def __ne__(self,other): - return not (self == other) - - def __hash__(self): - return hash(id(self)) - - def __req__(self,other): - return self == other - - def __rne__(self,other): - return not (self == other) - - def matches(self, testString, parseAll=True): - """ - Method for quick testing of a parser against a test string. Good for simple - inline microtests of sub expressions while building up larger parser. - - Parameters: - - testString - to test against this expression for a match - - parseAll - (default=C{True}) - flag to pass to C{L{parseString}} when running tests - - Example:: - expr = Word(nums) - assert expr.matches("100") - """ - try: - self.parseString(_ustr(testString), parseAll=parseAll) - return True - except ParseBaseException: - return False - - def runTests(self, tests, parseAll=True, comment='#', fullDump=True, printResults=True, failureTests=False): - """ - Execute the parse expression on a series of test strings, showing each - test, the parsed results or where the parse failed. Quick and easy way to - run a parse expression against a list of sample strings. - - Parameters: - - tests - a list of separate test strings, or a multiline string of test strings - - parseAll - (default=C{True}) - flag to pass to C{L{parseString}} when running tests - - comment - (default=C{'#'}) - expression for indicating embedded comments in the test - string; pass None to disable comment filtering - - fullDump - (default=C{True}) - dump results as list followed by results names in nested outline; - if False, only dump nested list - - printResults - (default=C{True}) prints test output to stdout - - failureTests - (default=C{False}) indicates if these tests are expected to fail parsing - - Returns: a (success, results) tuple, where success indicates that all tests succeeded - (or failed if C{failureTests} is True), and the results contain a list of lines of each - test's output - - Example:: - number_expr = pyparsing_common.number.copy() - - result = number_expr.runTests(''' - # unsigned integer - 100 - # negative integer - -100 - # float with scientific notation - 6.02e23 - # integer with scientific notation - 1e-12 - ''') - print("Success" if result[0] else "Failed!") - - result = number_expr.runTests(''' - # stray character - 100Z - # missing leading digit before '.' - -.100 - # too many '.' - 3.14.159 - ''', failureTests=True) - print("Success" if result[0] else "Failed!") - prints:: - # unsigned integer - 100 - [100] - - # negative integer - -100 - [-100] - - # float with scientific notation - 6.02e23 - [6.02e+23] - - # integer with scientific notation - 1e-12 - [1e-12] - - Success - - # stray character - 100Z - ^ - FAIL: Expected end of text (at char 3), (line:1, col:4) - - # missing leading digit before '.' - -.100 - ^ - FAIL: Expected {real number with scientific notation | real number | signed integer} (at char 0), (line:1, col:1) - - # too many '.' - 3.14.159 - ^ - FAIL: Expected end of text (at char 4), (line:1, col:5) - - Success - - Each test string must be on a single line. If you want to test a string that spans multiple - lines, create a test like this:: - - expr.runTest(r"this is a test\\n of strings that spans \\n 3 lines") - - (Note that this is a raw string literal, you must include the leading 'r'.) - """ - if isinstance(tests, basestring): - tests = list(map(str.strip, tests.rstrip().splitlines())) - if isinstance(comment, basestring): - comment = Literal(comment) - allResults = [] - comments = [] - success = True - for t in tests: - if comment is not None and comment.matches(t, False) or comments and not t: - comments.append(t) - continue - if not t: - continue - out = ['\n'.join(comments), t] - comments = [] - try: - t = t.replace(r'\n','\n') - result = self.parseString(t, parseAll=parseAll) - out.append(result.dump(full=fullDump)) - success = success and not failureTests - except ParseBaseException as pe: - fatal = "(FATAL)" if isinstance(pe, ParseFatalException) else "" - if '\n' in t: - out.append(line(pe.loc, t)) - out.append(' '*(col(pe.loc,t)-1) + '^' + fatal) - else: - out.append(' '*pe.loc + '^' + fatal) - out.append("FAIL: " + str(pe)) - success = success and failureTests - result = pe - except Exception as exc: - out.append("FAIL-EXCEPTION: " + str(exc)) - success = success and failureTests - result = exc - - if printResults: - if fullDump: - out.append('') - print('\n'.join(out)) - - allResults.append((t, result)) - - return success, allResults - - -class Token(ParserElement): - """ - Abstract C{ParserElement} subclass, for defining atomic matching patterns. - """ - def __init__( self ): - super(Token,self).__init__( savelist=False ) - - -class Empty(Token): - """ - An empty token, will always match. - """ - def __init__( self ): - super(Empty,self).__init__() - self.name = "Empty" - self.mayReturnEmpty = True - self.mayIndexError = False - - -class NoMatch(Token): - """ - A token that will never match. - """ - def __init__( self ): - super(NoMatch,self).__init__() - self.name = "NoMatch" - self.mayReturnEmpty = True - self.mayIndexError = False - self.errmsg = "Unmatchable token" - - def parseImpl( self, instring, loc, doActions=True ): - raise ParseException(instring, loc, self.errmsg, self) - - -class Literal(Token): - """ - Token to exactly match a specified string. - - Example:: - Literal('blah').parseString('blah') # -> ['blah'] - Literal('blah').parseString('blahfooblah') # -> ['blah'] - Literal('blah').parseString('bla') # -> Exception: Expected "blah" - - For case-insensitive matching, use L{CaselessLiteral}. - - For keyword matching (force word break before and after the matched string), - use L{Keyword} or L{CaselessKeyword}. - """ - def __init__( self, matchString ): - super(Literal,self).__init__() - self.match = matchString - self.matchLen = len(matchString) - try: - self.firstMatchChar = matchString[0] - except IndexError: - warnings.warn("null string passed to Literal; use Empty() instead", - SyntaxWarning, stacklevel=2) - self.__class__ = Empty - self.name = '"%s"' % _ustr(self.match) - self.errmsg = "Expected " + self.name - self.mayReturnEmpty = False - self.mayIndexError = False - - # Performance tuning: this routine gets called a *lot* - # if this is a single character match string and the first character matches, - # short-circuit as quickly as possible, and avoid calling startswith - #~ @profile - def parseImpl( self, instring, loc, doActions=True ): - if (instring[loc] == self.firstMatchChar and - (self.matchLen==1 or instring.startswith(self.match,loc)) ): - return loc+self.matchLen, self.match - raise ParseException(instring, loc, self.errmsg, self) -_L = Literal -ParserElement._literalStringClass = Literal - -class Keyword(Token): - """ - Token to exactly match a specified string as a keyword, that is, it must be - immediately followed by a non-keyword character. Compare with C{L{Literal}}: - - C{Literal("if")} will match the leading C{'if'} in C{'ifAndOnlyIf'}. - - C{Keyword("if")} will not; it will only match the leading C{'if'} in C{'if x=1'}, or C{'if(y==2)'} - Accepts two optional constructor arguments in addition to the keyword string: - - C{identChars} is a string of characters that would be valid identifier characters, - defaulting to all alphanumerics + "_" and "$" - - C{caseless} allows case-insensitive matching, default is C{False}. - - Example:: - Keyword("start").parseString("start") # -> ['start'] - Keyword("start").parseString("starting") # -> Exception - - For case-insensitive matching, use L{CaselessKeyword}. - """ - DEFAULT_KEYWORD_CHARS = alphanums+"_$" - - def __init__( self, matchString, identChars=None, caseless=False ): - super(Keyword,self).__init__() - if identChars is None: - identChars = Keyword.DEFAULT_KEYWORD_CHARS - self.match = matchString - self.matchLen = len(matchString) - try: - self.firstMatchChar = matchString[0] - except IndexError: - warnings.warn("null string passed to Keyword; use Empty() instead", - SyntaxWarning, stacklevel=2) - self.name = '"%s"' % self.match - self.errmsg = "Expected " + self.name - self.mayReturnEmpty = False - self.mayIndexError = False - self.caseless = caseless - if caseless: - self.caselessmatch = matchString.upper() - identChars = identChars.upper() - self.identChars = set(identChars) - - def parseImpl( self, instring, loc, doActions=True ): - if self.caseless: - if ( (instring[ loc:loc+self.matchLen ].upper() == self.caselessmatch) and - (loc >= len(instring)-self.matchLen or instring[loc+self.matchLen].upper() not in self.identChars) and - (loc == 0 or instring[loc-1].upper() not in self.identChars) ): - return loc+self.matchLen, self.match - else: - if (instring[loc] == self.firstMatchChar and - (self.matchLen==1 or instring.startswith(self.match,loc)) and - (loc >= len(instring)-self.matchLen or instring[loc+self.matchLen] not in self.identChars) and - (loc == 0 or instring[loc-1] not in self.identChars) ): - return loc+self.matchLen, self.match - raise ParseException(instring, loc, self.errmsg, self) - - def copy(self): - c = super(Keyword,self).copy() - c.identChars = Keyword.DEFAULT_KEYWORD_CHARS - return c - - @staticmethod - def setDefaultKeywordChars( chars ): - """Overrides the default Keyword chars - """ - Keyword.DEFAULT_KEYWORD_CHARS = chars - -class CaselessLiteral(Literal): - """ - Token to match a specified string, ignoring case of letters. - Note: the matched results will always be in the case of the given - match string, NOT the case of the input text. - - Example:: - OneOrMore(CaselessLiteral("CMD")).parseString("cmd CMD Cmd10") # -> ['CMD', 'CMD', 'CMD'] - - (Contrast with example for L{CaselessKeyword}.) - """ - def __init__( self, matchString ): - super(CaselessLiteral,self).__init__( matchString.upper() ) - # Preserve the defining literal. - self.returnString = matchString - self.name = "'%s'" % self.returnString - self.errmsg = "Expected " + self.name - - def parseImpl( self, instring, loc, doActions=True ): - if instring[ loc:loc+self.matchLen ].upper() == self.match: - return loc+self.matchLen, self.returnString - raise ParseException(instring, loc, self.errmsg, self) - -class CaselessKeyword(Keyword): - """ - Caseless version of L{Keyword}. - - Example:: - OneOrMore(CaselessKeyword("CMD")).parseString("cmd CMD Cmd10") # -> ['CMD', 'CMD'] - - (Contrast with example for L{CaselessLiteral}.) - """ - def __init__( self, matchString, identChars=None ): - super(CaselessKeyword,self).__init__( matchString, identChars, caseless=True ) - - def parseImpl( self, instring, loc, doActions=True ): - if ( (instring[ loc:loc+self.matchLen ].upper() == self.caselessmatch) and - (loc >= len(instring)-self.matchLen or instring[loc+self.matchLen].upper() not in self.identChars) ): - return loc+self.matchLen, self.match - raise ParseException(instring, loc, self.errmsg, self) - -class CloseMatch(Token): - """ - A variation on L{Literal} which matches "close" matches, that is, - strings with at most 'n' mismatching characters. C{CloseMatch} takes parameters: - - C{match_string} - string to be matched - - C{maxMismatches} - (C{default=1}) maximum number of mismatches allowed to count as a match - - The results from a successful parse will contain the matched text from the input string and the following named results: - - C{mismatches} - a list of the positions within the match_string where mismatches were found - - C{original} - the original match_string used to compare against the input string - - If C{mismatches} is an empty list, then the match was an exact match. - - Example:: - patt = CloseMatch("ATCATCGAATGGA") - patt.parseString("ATCATCGAAXGGA") # -> (['ATCATCGAAXGGA'], {'mismatches': [[9]], 'original': ['ATCATCGAATGGA']}) - patt.parseString("ATCAXCGAAXGGA") # -> Exception: Expected 'ATCATCGAATGGA' (with up to 1 mismatches) (at char 0), (line:1, col:1) - - # exact match - patt.parseString("ATCATCGAATGGA") # -> (['ATCATCGAATGGA'], {'mismatches': [[]], 'original': ['ATCATCGAATGGA']}) - - # close match allowing up to 2 mismatches - patt = CloseMatch("ATCATCGAATGGA", maxMismatches=2) - patt.parseString("ATCAXCGAAXGGA") # -> (['ATCAXCGAAXGGA'], {'mismatches': [[4, 9]], 'original': ['ATCATCGAATGGA']}) - """ - def __init__(self, match_string, maxMismatches=1): - super(CloseMatch,self).__init__() - self.name = match_string - self.match_string = match_string - self.maxMismatches = maxMismatches - self.errmsg = "Expected %r (with up to %d mismatches)" % (self.match_string, self.maxMismatches) - self.mayIndexError = False - self.mayReturnEmpty = False - - def parseImpl( self, instring, loc, doActions=True ): - start = loc - instrlen = len(instring) - maxloc = start + len(self.match_string) - - if maxloc <= instrlen: - match_string = self.match_string - match_stringloc = 0 - mismatches = [] - maxMismatches = self.maxMismatches - - for match_stringloc,s_m in enumerate(zip(instring[loc:maxloc], self.match_string)): - src,mat = s_m - if src != mat: - mismatches.append(match_stringloc) - if len(mismatches) > maxMismatches: - break - else: - loc = match_stringloc + 1 - results = ParseResults([instring[start:loc]]) - results['original'] = self.match_string - results['mismatches'] = mismatches - return loc, results - - raise ParseException(instring, loc, self.errmsg, self) - - -class Word(Token): - """ - Token for matching words composed of allowed character sets. - Defined with string containing all allowed initial characters, - an optional string containing allowed body characters (if omitted, - defaults to the initial character set), and an optional minimum, - maximum, and/or exact length. The default value for C{min} is 1 (a - minimum value < 1 is not valid); the default values for C{max} and C{exact} - are 0, meaning no maximum or exact length restriction. An optional - C{excludeChars} parameter can list characters that might be found in - the input C{bodyChars} string; useful to define a word of all printables - except for one or two characters, for instance. - - L{srange} is useful for defining custom character set strings for defining - C{Word} expressions, using range notation from regular expression character sets. - - A common mistake is to use C{Word} to match a specific literal string, as in - C{Word("Address")}. Remember that C{Word} uses the string argument to define - I{sets} of matchable characters. This expression would match "Add", "AAA", - "dAred", or any other word made up of the characters 'A', 'd', 'r', 'e', and 's'. - To match an exact literal string, use L{Literal} or L{Keyword}. - - pyparsing includes helper strings for building Words: - - L{alphas} - - L{nums} - - L{alphanums} - - L{hexnums} - - L{alphas8bit} (alphabetic characters in ASCII range 128-255 - accented, tilded, umlauted, etc.) - - L{punc8bit} (non-alphabetic characters in ASCII range 128-255 - currency, symbols, superscripts, diacriticals, etc.) - - L{printables} (any non-whitespace character) - - Example:: - # a word composed of digits - integer = Word(nums) # equivalent to Word("0123456789") or Word(srange("0-9")) - - # a word with a leading capital, and zero or more lowercase - capital_word = Word(alphas.upper(), alphas.lower()) - - # hostnames are alphanumeric, with leading alpha, and '-' - hostname = Word(alphas, alphanums+'-') - - # roman numeral (not a strict parser, accepts invalid mix of characters) - roman = Word("IVXLCDM") - - # any string of non-whitespace characters, except for ',' - csv_value = Word(printables, excludeChars=",") - """ - def __init__( self, initChars, bodyChars=None, min=1, max=0, exact=0, asKeyword=False, excludeChars=None ): - super(Word,self).__init__() - if excludeChars: - initChars = ''.join(c for c in initChars if c not in excludeChars) - if bodyChars: - bodyChars = ''.join(c for c in bodyChars if c not in excludeChars) - self.initCharsOrig = initChars - self.initChars = set(initChars) - if bodyChars : - self.bodyCharsOrig = bodyChars - self.bodyChars = set(bodyChars) - else: - self.bodyCharsOrig = initChars - self.bodyChars = set(initChars) - - self.maxSpecified = max > 0 - - if min < 1: - raise ValueError("cannot specify a minimum length < 1; use Optional(Word()) if zero-length word is permitted") - - self.minLen = min - - if max > 0: - self.maxLen = max - else: - self.maxLen = _MAX_INT - - if exact > 0: - self.maxLen = exact - self.minLen = exact - - self.name = _ustr(self) - self.errmsg = "Expected " + self.name - self.mayIndexError = False - self.asKeyword = asKeyword - - if ' ' not in self.initCharsOrig+self.bodyCharsOrig and (min==1 and max==0 and exact==0): - if self.bodyCharsOrig == self.initCharsOrig: - self.reString = "[%s]+" % _escapeRegexRangeChars(self.initCharsOrig) - elif len(self.initCharsOrig) == 1: - self.reString = "%s[%s]*" % \ - (re.escape(self.initCharsOrig), - _escapeRegexRangeChars(self.bodyCharsOrig),) - else: - self.reString = "[%s][%s]*" % \ - (_escapeRegexRangeChars(self.initCharsOrig), - _escapeRegexRangeChars(self.bodyCharsOrig),) - if self.asKeyword: - self.reString = r"\b"+self.reString+r"\b" - try: - self.re = re.compile( self.reString ) - except Exception: - self.re = None - - def parseImpl( self, instring, loc, doActions=True ): - if self.re: - result = self.re.match(instring,loc) - if not result: - raise ParseException(instring, loc, self.errmsg, self) - - loc = result.end() - return loc, result.group() - - if not(instring[ loc ] in self.initChars): - raise ParseException(instring, loc, self.errmsg, self) - - start = loc - loc += 1 - instrlen = len(instring) - bodychars = self.bodyChars - maxloc = start + self.maxLen - maxloc = min( maxloc, instrlen ) - while loc < maxloc and instring[loc] in bodychars: - loc += 1 - - throwException = False - if loc - start < self.minLen: - throwException = True - if self.maxSpecified and loc < instrlen and instring[loc] in bodychars: - throwException = True - if self.asKeyword: - if (start>0 and instring[start-1] in bodychars) or (loc<instrlen and instring[loc] in bodychars): - throwException = True - - if throwException: - raise ParseException(instring, loc, self.errmsg, self) - - return loc, instring[start:loc] - - def __str__( self ): - try: - return super(Word,self).__str__() - except Exception: - pass - - - if self.strRepr is None: - - def charsAsStr(s): - if len(s)>4: - return s[:4]+"..." - else: - return s - - if ( self.initCharsOrig != self.bodyCharsOrig ): - self.strRepr = "W:(%s,%s)" % ( charsAsStr(self.initCharsOrig), charsAsStr(self.bodyCharsOrig) ) - else: - self.strRepr = "W:(%s)" % charsAsStr(self.initCharsOrig) - - return self.strRepr - - -class Regex(Token): - """ - Token for matching strings that match a given regular expression. - Defined with string specifying the regular expression in a form recognized by the inbuilt Python re module. - If the given regex contains named groups (defined using C{(?P<name>...)}), these will be preserved as - named parse results. - - Example:: - realnum = Regex(r"[+-]?\d+\.\d*") - date = Regex(r'(?P<year>\d{4})-(?P<month>\d\d?)-(?P<day>\d\d?)') - # ref: http://stackoverflow.com/questions/267399/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression - roman = Regex(r"M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})") - """ - compiledREtype = type(re.compile("[A-Z]")) - def __init__( self, pattern, flags=0): - """The parameters C{pattern} and C{flags} are passed to the C{re.compile()} function as-is. See the Python C{re} module for an explanation of the acceptable patterns and flags.""" - super(Regex,self).__init__() - - if isinstance(pattern, basestring): - if not pattern: - warnings.warn("null string passed to Regex; use Empty() instead", - SyntaxWarning, stacklevel=2) - - self.pattern = pattern - self.flags = flags - - try: - self.re = re.compile(self.pattern, self.flags) - self.reString = self.pattern - except sre_constants.error: - warnings.warn("invalid pattern (%s) passed to Regex" % pattern, - SyntaxWarning, stacklevel=2) - raise - - elif isinstance(pattern, Regex.compiledREtype): - self.re = pattern - self.pattern = \ - self.reString = str(pattern) - self.flags = flags - - else: - raise ValueError("Regex may only be constructed with a string or a compiled RE object") - - self.name = _ustr(self) - self.errmsg = "Expected " + self.name - self.mayIndexError = False - self.mayReturnEmpty = True - - def parseImpl( self, instring, loc, doActions=True ): - result = self.re.match(instring,loc) - if not result: - raise ParseException(instring, loc, self.errmsg, self) - - loc = result.end() - d = result.groupdict() - ret = ParseResults(result.group()) - if d: - for k in d: - ret[k] = d[k] - return loc,ret - - def __str__( self ): - try: - return super(Regex,self).__str__() - except Exception: - pass - - if self.strRepr is None: - self.strRepr = "Re:(%s)" % repr(self.pattern) - - return self.strRepr - - -class QuotedString(Token): - r""" - Token for matching strings that are delimited by quoting characters. - - Defined with the following parameters: - - quoteChar - string of one or more characters defining the quote delimiting string - - escChar - character to escape quotes, typically backslash (default=C{None}) - - escQuote - special quote sequence to escape an embedded quote string (such as SQL's "" to escape an embedded ") (default=C{None}) - - multiline - boolean indicating whether quotes can span multiple lines (default=C{False}) - - unquoteResults - boolean indicating whether the matched text should be unquoted (default=C{True}) - - endQuoteChar - string of one or more characters defining the end of the quote delimited string (default=C{None} => same as quoteChar) - - convertWhitespaceEscapes - convert escaped whitespace (C{'\t'}, C{'\n'}, etc.) to actual whitespace (default=C{True}) - - Example:: - qs = QuotedString('"') - print(qs.searchString('lsjdf "This is the quote" sldjf')) - complex_qs = QuotedString('{{', endQuoteChar='}}') - print(complex_qs.searchString('lsjdf {{This is the "quote"}} sldjf')) - sql_qs = QuotedString('"', escQuote='""') - print(sql_qs.searchString('lsjdf "This is the quote with ""embedded"" quotes" sldjf')) - prints:: - [['This is the quote']] - [['This is the "quote"']] - [['This is the quote with "embedded" quotes']] - """ - def __init__( self, quoteChar, escChar=None, escQuote=None, multiline=False, unquoteResults=True, endQuoteChar=None, convertWhitespaceEscapes=True): - super(QuotedString,self).__init__() - - # remove white space from quote chars - wont work anyway - quoteChar = quoteChar.strip() - if not quoteChar: - warnings.warn("quoteChar cannot be the empty string",SyntaxWarning,stacklevel=2) - raise SyntaxError() - - if endQuoteChar is None: - endQuoteChar = quoteChar - else: - endQuoteChar = endQuoteChar.strip() - if not endQuoteChar: - warnings.warn("endQuoteChar cannot be the empty string",SyntaxWarning,stacklevel=2) - raise SyntaxError() - - self.quoteChar = quoteChar - self.quoteCharLen = len(quoteChar) - self.firstQuoteChar = quoteChar[0] - self.endQuoteChar = endQuoteChar - self.endQuoteCharLen = len(endQuoteChar) - self.escChar = escChar - self.escQuote = escQuote - self.unquoteResults = unquoteResults - self.convertWhitespaceEscapes = convertWhitespaceEscapes - - if multiline: - self.flags = re.MULTILINE | re.DOTALL - self.pattern = r'%s(?:[^%s%s]' % \ - ( re.escape(self.quoteChar), - _escapeRegexRangeChars(self.endQuoteChar[0]), - (escChar is not None and _escapeRegexRangeChars(escChar) or '') ) - else: - self.flags = 0 - self.pattern = r'%s(?:[^%s\n\r%s]' % \ - ( re.escape(self.quoteChar), - _escapeRegexRangeChars(self.endQuoteChar[0]), - (escChar is not None and _escapeRegexRangeChars(escChar) or '') ) - if len(self.endQuoteChar) > 1: - self.pattern += ( - '|(?:' + ')|(?:'.join("%s[^%s]" % (re.escape(self.endQuoteChar[:i]), - _escapeRegexRangeChars(self.endQuoteChar[i])) - for i in range(len(self.endQuoteChar)-1,0,-1)) + ')' - ) - if escQuote: - self.pattern += (r'|(?:%s)' % re.escape(escQuote)) - if escChar: - self.pattern += (r'|(?:%s.)' % re.escape(escChar)) - self.escCharReplacePattern = re.escape(self.escChar)+"(.)" - self.pattern += (r')*%s' % re.escape(self.endQuoteChar)) - - try: - self.re = re.compile(self.pattern, self.flags) - self.reString = self.pattern - except sre_constants.error: - warnings.warn("invalid pattern (%s) passed to Regex" % self.pattern, - SyntaxWarning, stacklevel=2) - raise - - self.name = _ustr(self) - self.errmsg = "Expected " + self.name - self.mayIndexError = False - self.mayReturnEmpty = True - - def parseImpl( self, instring, loc, doActions=True ): - result = instring[loc] == self.firstQuoteChar and self.re.match(instring,loc) or None - if not result: - raise ParseException(instring, loc, self.errmsg, self) - - loc = result.end() - ret = result.group() - - if self.unquoteResults: - - # strip off quotes - ret = ret[self.quoteCharLen:-self.endQuoteCharLen] - - if isinstance(ret,basestring): - # replace escaped whitespace - if '\\' in ret and self.convertWhitespaceEscapes: - ws_map = { - r'\t' : '\t', - r'\n' : '\n', - r'\f' : '\f', - r'\r' : '\r', - } - for wslit,wschar in ws_map.items(): - ret = ret.replace(wslit, wschar) - - # replace escaped characters - if self.escChar: - ret = re.sub(self.escCharReplacePattern,"\g<1>",ret) - - # replace escaped quotes - if self.escQuote: - ret = ret.replace(self.escQuote, self.endQuoteChar) - - return loc, ret - - def __str__( self ): - try: - return super(QuotedString,self).__str__() - except Exception: - pass - - if self.strRepr is None: - self.strRepr = "quoted string, starting with %s ending with %s" % (self.quoteChar, self.endQuoteChar) - - return self.strRepr - - -class CharsNotIn(Token): - """ - Token for matching words composed of characters I{not} in a given set (will - include whitespace in matched characters if not listed in the provided exclusion set - see example). - Defined with string containing all disallowed characters, and an optional - minimum, maximum, and/or exact length. The default value for C{min} is 1 (a - minimum value < 1 is not valid); the default values for C{max} and C{exact} - are 0, meaning no maximum or exact length restriction. - - Example:: - # define a comma-separated-value as anything that is not a ',' - csv_value = CharsNotIn(',') - print(delimitedList(csv_value).parseString("dkls,lsdkjf,s12 34,@!#,213")) - prints:: - ['dkls', 'lsdkjf', 's12 34', '@!#', '213'] - """ - def __init__( self, notChars, min=1, max=0, exact=0 ): - super(CharsNotIn,self).__init__() - self.skipWhitespace = False - self.notChars = notChars - - if min < 1: - raise ValueError("cannot specify a minimum length < 1; use Optional(CharsNotIn()) if zero-length char group is permitted") - - self.minLen = min - - if max > 0: - self.maxLen = max - else: - self.maxLen = _MAX_INT - - if exact > 0: - self.maxLen = exact - self.minLen = exact - - self.name = _ustr(self) - self.errmsg = "Expected " + self.name - self.mayReturnEmpty = ( self.minLen == 0 ) - self.mayIndexError = False - - def parseImpl( self, instring, loc, doActions=True ): - if instring[loc] in self.notChars: - raise ParseException(instring, loc, self.errmsg, self) - - start = loc - loc += 1 - notchars = self.notChars - maxlen = min( start+self.maxLen, len(instring) ) - while loc < maxlen and \ - (instring[loc] not in notchars): - loc += 1 - - if loc - start < self.minLen: - raise ParseException(instring, loc, self.errmsg, self) - - return loc, instring[start:loc] - - def __str__( self ): - try: - return super(CharsNotIn, self).__str__() - except Exception: - pass - - if self.strRepr is None: - if len(self.notChars) > 4: - self.strRepr = "!W:(%s...)" % self.notChars[:4] - else: - self.strRepr = "!W:(%s)" % self.notChars - - return self.strRepr - -class White(Token): - """ - Special matching class for matching whitespace. Normally, whitespace is ignored - by pyparsing grammars. This class is included when some whitespace structures - are significant. Define with a string containing the whitespace characters to be - matched; default is C{" \\t\\r\\n"}. Also takes optional C{min}, C{max}, and C{exact} arguments, - as defined for the C{L{Word}} class. - """ - whiteStrs = { - " " : "<SPC>", - "\t": "<TAB>", - "\n": "<LF>", - "\r": "<CR>", - "\f": "<FF>", - } - def __init__(self, ws=" \t\r\n", min=1, max=0, exact=0): - super(White,self).__init__() - self.matchWhite = ws - self.setWhitespaceChars( "".join(c for c in self.whiteChars if c not in self.matchWhite) ) - #~ self.leaveWhitespace() - self.name = ("".join(White.whiteStrs[c] for c in self.matchWhite)) - self.mayReturnEmpty = True - self.errmsg = "Expected " + self.name - - self.minLen = min - - if max > 0: - self.maxLen = max - else: - self.maxLen = _MAX_INT - - if exact > 0: - self.maxLen = exact - self.minLen = exact - - def parseImpl( self, instring, loc, doActions=True ): - if not(instring[ loc ] in self.matchWhite): - raise ParseException(instring, loc, self.errmsg, self) - start = loc - loc += 1 - maxloc = start + self.maxLen - maxloc = min( maxloc, len(instring) ) - while loc < maxloc and instring[loc] in self.matchWhite: - loc += 1 - - if loc - start < self.minLen: - raise ParseException(instring, loc, self.errmsg, self) - - return loc, instring[start:loc] - - -class _PositionToken(Token): - def __init__( self ): - super(_PositionToken,self).__init__() - self.name=self.__class__.__name__ - self.mayReturnEmpty = True - self.mayIndexError = False - -class GoToColumn(_PositionToken): - """ - Token to advance to a specific column of input text; useful for tabular report scraping. - """ - def __init__( self, colno ): - super(GoToColumn,self).__init__() - self.col = colno - - def preParse( self, instring, loc ): - if col(loc,instring) != self.col: - instrlen = len(instring) - if self.ignoreExprs: - loc = self._skipIgnorables( instring, loc ) - while loc < instrlen and instring[loc].isspace() and col( loc, instring ) != self.col : - loc += 1 - return loc - - def parseImpl( self, instring, loc, doActions=True ): - thiscol = col( loc, instring ) - if thiscol > self.col: - raise ParseException( instring, loc, "Text not in expected column", self ) - newloc = loc + self.col - thiscol - ret = instring[ loc: newloc ] - return newloc, ret - - -class LineStart(_PositionToken): - """ - Matches if current position is at the beginning of a line within the parse string - - Example:: - - test = '''\ - AAA this line - AAA and this line - AAA but not this one - B AAA and definitely not this one - ''' - - for t in (LineStart() + 'AAA' + restOfLine).searchString(test): - print(t) - - Prints:: - ['AAA', ' this line'] - ['AAA', ' and this line'] - - """ - def __init__( self ): - super(LineStart,self).__init__() - self.errmsg = "Expected start of line" - - def parseImpl( self, instring, loc, doActions=True ): - if col(loc, instring) == 1: - return loc, [] - raise ParseException(instring, loc, self.errmsg, self) - -class LineEnd(_PositionToken): - """ - Matches if current position is at the end of a line within the parse string - """ - def __init__( self ): - super(LineEnd,self).__init__() - self.setWhitespaceChars( ParserElement.DEFAULT_WHITE_CHARS.replace("\n","") ) - self.errmsg = "Expected end of line" - - def parseImpl( self, instring, loc, doActions=True ): - if loc<len(instring): - if instring[loc] == "\n": - return loc+1, "\n" - else: - raise ParseException(instring, loc, self.errmsg, self) - elif loc == len(instring): - return loc+1, [] - else: - raise ParseException(instring, loc, self.errmsg, self) - -class StringStart(_PositionToken): - """ - Matches if current position is at the beginning of the parse string - """ - def __init__( self ): - super(StringStart,self).__init__() - self.errmsg = "Expected start of text" - - def parseImpl( self, instring, loc, doActions=True ): - if loc != 0: - # see if entire string up to here is just whitespace and ignoreables - if loc != self.preParse( instring, 0 ): - raise ParseException(instring, loc, self.errmsg, self) - return loc, [] - -class StringEnd(_PositionToken): - """ - Matches if current position is at the end of the parse string - """ - def __init__( self ): - super(StringEnd,self).__init__() - self.errmsg = "Expected end of text" - - def parseImpl( self, instring, loc, doActions=True ): - if loc < len(instring): - raise ParseException(instring, loc, self.errmsg, self) - elif loc == len(instring): - return loc+1, [] - elif loc > len(instring): - return loc, [] - else: - raise ParseException(instring, loc, self.errmsg, self) - -class WordStart(_PositionToken): - """ - Matches if the current position is at the beginning of a Word, and - is not preceded by any character in a given set of C{wordChars} - (default=C{printables}). To emulate the C{\b} behavior of regular expressions, - use C{WordStart(alphanums)}. C{WordStart} will also match at the beginning of - the string being parsed, or at the beginning of a line. - """ - def __init__(self, wordChars = printables): - super(WordStart,self).__init__() - self.wordChars = set(wordChars) - self.errmsg = "Not at the start of a word" - - def parseImpl(self, instring, loc, doActions=True ): - if loc != 0: - if (instring[loc-1] in self.wordChars or - instring[loc] not in self.wordChars): - raise ParseException(instring, loc, self.errmsg, self) - return loc, [] - -class WordEnd(_PositionToken): - """ - Matches if the current position is at the end of a Word, and - is not followed by any character in a given set of C{wordChars} - (default=C{printables}). To emulate the C{\b} behavior of regular expressions, - use C{WordEnd(alphanums)}. C{WordEnd} will also match at the end of - the string being parsed, or at the end of a line. - """ - def __init__(self, wordChars = printables): - super(WordEnd,self).__init__() - self.wordChars = set(wordChars) - self.skipWhitespace = False - self.errmsg = "Not at the end of a word" - - def parseImpl(self, instring, loc, doActions=True ): - instrlen = len(instring) - if instrlen>0 and loc<instrlen: - if (instring[loc] in self.wordChars or - instring[loc-1] not in self.wordChars): - raise ParseException(instring, loc, self.errmsg, self) - return loc, [] - - -class ParseExpression(ParserElement): - """ - Abstract subclass of ParserElement, for combining and post-processing parsed tokens. - """ - def __init__( self, exprs, savelist = False ): - super(ParseExpression,self).__init__(savelist) - if isinstance( exprs, _generatorType ): - exprs = list(exprs) - - if isinstance( exprs, basestring ): - self.exprs = [ ParserElement._literalStringClass( exprs ) ] - elif isinstance( exprs, collections.Iterable ): - exprs = list(exprs) - # if sequence of strings provided, wrap with Literal - if all(isinstance(expr, basestring) for expr in exprs): - exprs = map(ParserElement._literalStringClass, exprs) - self.exprs = list(exprs) - else: - try: - self.exprs = list( exprs ) - except TypeError: - self.exprs = [ exprs ] - self.callPreparse = False - - def __getitem__( self, i ): - return self.exprs[i] - - def append( self, other ): - self.exprs.append( other ) - self.strRepr = None - return self - - def leaveWhitespace( self ): - """Extends C{leaveWhitespace} defined in base class, and also invokes C{leaveWhitespace} on - all contained expressions.""" - self.skipWhitespace = False - self.exprs = [ e.copy() for e in self.exprs ] - for e in self.exprs: - e.leaveWhitespace() - return self - - def ignore( self, other ): - if isinstance( other, Suppress ): - if other not in self.ignoreExprs: - super( ParseExpression, self).ignore( other ) - for e in self.exprs: - e.ignore( self.ignoreExprs[-1] ) - else: - super( ParseExpression, self).ignore( other ) - for e in self.exprs: - e.ignore( self.ignoreExprs[-1] ) - return self - - def __str__( self ): - try: - return super(ParseExpression,self).__str__() - except Exception: - pass - - if self.strRepr is None: - self.strRepr = "%s:(%s)" % ( self.__class__.__name__, _ustr(self.exprs) ) - return self.strRepr - - def streamline( self ): - super(ParseExpression,self).streamline() - - for e in self.exprs: - e.streamline() - - # collapse nested And's of the form And( And( And( a,b), c), d) to And( a,b,c,d ) - # but only if there are no parse actions or resultsNames on the nested And's - # (likewise for Or's and MatchFirst's) - if ( len(self.exprs) == 2 ): - other = self.exprs[0] - if ( isinstance( other, self.__class__ ) and - not(other.parseAction) and - other.resultsName is None and - not other.debug ): - self.exprs = other.exprs[:] + [ self.exprs[1] ] - self.strRepr = None - self.mayReturnEmpty |= other.mayReturnEmpty - self.mayIndexError |= other.mayIndexError - - other = self.exprs[-1] - if ( isinstance( other, self.__class__ ) and - not(other.parseAction) and - other.resultsName is None and - not other.debug ): - self.exprs = self.exprs[:-1] + other.exprs[:] - self.strRepr = None - self.mayReturnEmpty |= other.mayReturnEmpty - self.mayIndexError |= other.mayIndexError - - self.errmsg = "Expected " + _ustr(self) - - return self - - def setResultsName( self, name, listAllMatches=False ): - ret = super(ParseExpression,self).setResultsName(name,listAllMatches) - return ret - - def validate( self, validateTrace=[] ): - tmp = validateTrace[:]+[self] - for e in self.exprs: - e.validate(tmp) - self.checkRecursion( [] ) - - def copy(self): - ret = super(ParseExpression,self).copy() - ret.exprs = [e.copy() for e in self.exprs] - return ret - -class And(ParseExpression): - """ - Requires all given C{ParseExpression}s to be found in the given order. - Expressions may be separated by whitespace. - May be constructed using the C{'+'} operator. - May also be constructed using the C{'-'} operator, which will suppress backtracking. - - Example:: - integer = Word(nums) - name_expr = OneOrMore(Word(alphas)) - - expr = And([integer("id"),name_expr("name"),integer("age")]) - # more easily written as: - expr = integer("id") + name_expr("name") + integer("age") - """ - - class _ErrorStop(Empty): - def __init__(self, *args, **kwargs): - super(And._ErrorStop,self).__init__(*args, **kwargs) - self.name = '-' - self.leaveWhitespace() - - def __init__( self, exprs, savelist = True ): - super(And,self).__init__(exprs, savelist) - self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) - self.setWhitespaceChars( self.exprs[0].whiteChars ) - self.skipWhitespace = self.exprs[0].skipWhitespace - self.callPreparse = True - - def parseImpl( self, instring, loc, doActions=True ): - # pass False as last arg to _parse for first element, since we already - # pre-parsed the string as part of our And pre-parsing - loc, resultlist = self.exprs[0]._parse( instring, loc, doActions, callPreParse=False ) - errorStop = False - for e in self.exprs[1:]: - if isinstance(e, And._ErrorStop): - errorStop = True - continue - if errorStop: - try: - loc, exprtokens = e._parse( instring, loc, doActions ) - except ParseSyntaxException: - raise - except ParseBaseException as pe: - pe.__traceback__ = None - raise ParseSyntaxException._from_exception(pe) - except IndexError: - raise ParseSyntaxException(instring, len(instring), self.errmsg, self) - else: - loc, exprtokens = e._parse( instring, loc, doActions ) - if exprtokens or exprtokens.haskeys(): - resultlist += exprtokens - return loc, resultlist - - def __iadd__(self, other ): - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - return self.append( other ) #And( [ self, other ] ) - - def checkRecursion( self, parseElementList ): - subRecCheckList = parseElementList[:] + [ self ] - for e in self.exprs: - e.checkRecursion( subRecCheckList ) - if not e.mayReturnEmpty: - break - - def __str__( self ): - if hasattr(self,"name"): - return self.name - - if self.strRepr is None: - self.strRepr = "{" + " ".join(_ustr(e) for e in self.exprs) + "}" - - return self.strRepr - - -class Or(ParseExpression): - """ - Requires that at least one C{ParseExpression} is found. - If two expressions match, the expression that matches the longest string will be used. - May be constructed using the C{'^'} operator. - - Example:: - # construct Or using '^' operator - - number = Word(nums) ^ Combine(Word(nums) + '.' + Word(nums)) - print(number.searchString("123 3.1416 789")) - prints:: - [['123'], ['3.1416'], ['789']] - """ - def __init__( self, exprs, savelist = False ): - super(Or,self).__init__(exprs, savelist) - if self.exprs: - self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs) - else: - self.mayReturnEmpty = True - - def parseImpl( self, instring, loc, doActions=True ): - maxExcLoc = -1 - maxException = None - matches = [] - for e in self.exprs: - try: - loc2 = e.tryParse( instring, loc ) - except ParseException as err: - err.__traceback__ = None - if err.loc > maxExcLoc: - maxException = err - maxExcLoc = err.loc - except IndexError: - if len(instring) > maxExcLoc: - maxException = ParseException(instring,len(instring),e.errmsg,self) - maxExcLoc = len(instring) - else: - # save match among all matches, to retry longest to shortest - matches.append((loc2, e)) - - if matches: - matches.sort(key=lambda x: -x[0]) - for _,e in matches: - try: - return e._parse( instring, loc, doActions ) - except ParseException as err: - err.__traceback__ = None - if err.loc > maxExcLoc: - maxException = err - maxExcLoc = err.loc - - if maxException is not None: - maxException.msg = self.errmsg - raise maxException - else: - raise ParseException(instring, loc, "no defined alternatives to match", self) - - - def __ixor__(self, other ): - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - return self.append( other ) #Or( [ self, other ] ) - - def __str__( self ): - if hasattr(self,"name"): - return self.name - - if self.strRepr is None: - self.strRepr = "{" + " ^ ".join(_ustr(e) for e in self.exprs) + "}" - - return self.strRepr - - def checkRecursion( self, parseElementList ): - subRecCheckList = parseElementList[:] + [ self ] - for e in self.exprs: - e.checkRecursion( subRecCheckList ) - - -class MatchFirst(ParseExpression): - """ - Requires that at least one C{ParseExpression} is found. - If two expressions match, the first one listed is the one that will match. - May be constructed using the C{'|'} operator. - - Example:: - # construct MatchFirst using '|' operator - - # watch the order of expressions to match - number = Word(nums) | Combine(Word(nums) + '.' + Word(nums)) - print(number.searchString("123 3.1416 789")) # Fail! -> [['123'], ['3'], ['1416'], ['789']] - - # put more selective expression first - number = Combine(Word(nums) + '.' + Word(nums)) | Word(nums) - print(number.searchString("123 3.1416 789")) # Better -> [['123'], ['3.1416'], ['789']] - """ - def __init__( self, exprs, savelist = False ): - super(MatchFirst,self).__init__(exprs, savelist) - if self.exprs: - self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs) - else: - self.mayReturnEmpty = True - - def parseImpl( self, instring, loc, doActions=True ): - maxExcLoc = -1 - maxException = None - for e in self.exprs: - try: - ret = e._parse( instring, loc, doActions ) - return ret - except ParseException as err: - if err.loc > maxExcLoc: - maxException = err - maxExcLoc = err.loc - except IndexError: - if len(instring) > maxExcLoc: - maxException = ParseException(instring,len(instring),e.errmsg,self) - maxExcLoc = len(instring) - - # only got here if no expression matched, raise exception for match that made it the furthest - else: - if maxException is not None: - maxException.msg = self.errmsg - raise maxException - else: - raise ParseException(instring, loc, "no defined alternatives to match", self) - - def __ior__(self, other ): - if isinstance( other, basestring ): - other = ParserElement._literalStringClass( other ) - return self.append( other ) #MatchFirst( [ self, other ] ) - - def __str__( self ): - if hasattr(self,"name"): - return self.name - - if self.strRepr is None: - self.strRepr = "{" + " | ".join(_ustr(e) for e in self.exprs) + "}" - - return self.strRepr - - def checkRecursion( self, parseElementList ): - subRecCheckList = parseElementList[:] + [ self ] - for e in self.exprs: - e.checkRecursion( subRecCheckList ) - - -class Each(ParseExpression): - """ - Requires all given C{ParseExpression}s to be found, but in any order. - Expressions may be separated by whitespace. - May be constructed using the C{'&'} operator. - - Example:: - color = oneOf("RED ORANGE YELLOW GREEN BLUE PURPLE BLACK WHITE BROWN") - shape_type = oneOf("SQUARE CIRCLE TRIANGLE STAR HEXAGON OCTAGON") - integer = Word(nums) - shape_attr = "shape:" + shape_type("shape") - posn_attr = "posn:" + Group(integer("x") + ',' + integer("y"))("posn") - color_attr = "color:" + color("color") - size_attr = "size:" + integer("size") - - # use Each (using operator '&') to accept attributes in any order - # (shape and posn are required, color and size are optional) - shape_spec = shape_attr & posn_attr & Optional(color_attr) & Optional(size_attr) - - shape_spec.runTests(''' - shape: SQUARE color: BLACK posn: 100, 120 - shape: CIRCLE size: 50 color: BLUE posn: 50,80 - color:GREEN size:20 shape:TRIANGLE posn:20,40 - ''' - ) - prints:: - shape: SQUARE color: BLACK posn: 100, 120 - ['shape:', 'SQUARE', 'color:', 'BLACK', 'posn:', ['100', ',', '120']] - - color: BLACK - - posn: ['100', ',', '120'] - - x: 100 - - y: 120 - - shape: SQUARE - - - shape: CIRCLE size: 50 color: BLUE posn: 50,80 - ['shape:', 'CIRCLE', 'size:', '50', 'color:', 'BLUE', 'posn:', ['50', ',', '80']] - - color: BLUE - - posn: ['50', ',', '80'] - - x: 50 - - y: 80 - - shape: CIRCLE - - size: 50 - - - color: GREEN size: 20 shape: TRIANGLE posn: 20,40 - ['color:', 'GREEN', 'size:', '20', 'shape:', 'TRIANGLE', 'posn:', ['20', ',', '40']] - - color: GREEN - - posn: ['20', ',', '40'] - - x: 20 - - y: 40 - - shape: TRIANGLE - - size: 20 - """ - def __init__( self, exprs, savelist = True ): - super(Each,self).__init__(exprs, savelist) - self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) - self.skipWhitespace = True - self.initExprGroups = True - - def parseImpl( self, instring, loc, doActions=True ): - if self.initExprGroups: - self.opt1map = dict((id(e.expr),e) for e in self.exprs if isinstance(e,Optional)) - opt1 = [ e.expr for e in self.exprs if isinstance(e,Optional) ] - opt2 = [ e for e in self.exprs if e.mayReturnEmpty and not isinstance(e,Optional)] - self.optionals = opt1 + opt2 - self.multioptionals = [ e.expr for e in self.exprs if isinstance(e,ZeroOrMore) ] - self.multirequired = [ e.expr for e in self.exprs if isinstance(e,OneOrMore) ] - self.required = [ e for e in self.exprs if not isinstance(e,(Optional,ZeroOrMore,OneOrMore)) ] - self.required += self.multirequired - self.initExprGroups = False - tmpLoc = loc - tmpReqd = self.required[:] - tmpOpt = self.optionals[:] - matchOrder = [] - - keepMatching = True - while keepMatching: - tmpExprs = tmpReqd + tmpOpt + self.multioptionals + self.multirequired - failed = [] - for e in tmpExprs: - try: - tmpLoc = e.tryParse( instring, tmpLoc ) - except ParseException: - failed.append(e) - else: - matchOrder.append(self.opt1map.get(id(e),e)) - if e in tmpReqd: - tmpReqd.remove(e) - elif e in tmpOpt: - tmpOpt.remove(e) - if len(failed) == len(tmpExprs): - keepMatching = False - - if tmpReqd: - missing = ", ".join(_ustr(e) for e in tmpReqd) - raise ParseException(instring,loc,"Missing one or more required elements (%s)" % missing ) - - # add any unmatched Optionals, in case they have default values defined - matchOrder += [e for e in self.exprs if isinstance(e,Optional) and e.expr in tmpOpt] - - resultlist = [] - for e in matchOrder: - loc,results = e._parse(instring,loc,doActions) - resultlist.append(results) - - finalResults = sum(resultlist, ParseResults([])) - return loc, finalResults - - def __str__( self ): - if hasattr(self,"name"): - return self.name - - if self.strRepr is None: - self.strRepr = "{" + " & ".join(_ustr(e) for e in self.exprs) + "}" - - return self.strRepr - - def checkRecursion( self, parseElementList ): - subRecCheckList = parseElementList[:] + [ self ] - for e in self.exprs: - e.checkRecursion( subRecCheckList ) - - -class ParseElementEnhance(ParserElement): - """ - Abstract subclass of C{ParserElement}, for combining and post-processing parsed tokens. - """ - def __init__( self, expr, savelist=False ): - super(ParseElementEnhance,self).__init__(savelist) - if isinstance( expr, basestring ): - if issubclass(ParserElement._literalStringClass, Token): - expr = ParserElement._literalStringClass(expr) - else: - expr = ParserElement._literalStringClass(Literal(expr)) - self.expr = expr - self.strRepr = None - if expr is not None: - self.mayIndexError = expr.mayIndexError - self.mayReturnEmpty = expr.mayReturnEmpty - self.setWhitespaceChars( expr.whiteChars ) - self.skipWhitespace = expr.skipWhitespace - self.saveAsList = expr.saveAsList - self.callPreparse = expr.callPreparse - self.ignoreExprs.extend(expr.ignoreExprs) - - def parseImpl( self, instring, loc, doActions=True ): - if self.expr is not None: - return self.expr._parse( instring, loc, doActions, callPreParse=False ) - else: - raise ParseException("",loc,self.errmsg,self) - - def leaveWhitespace( self ): - self.skipWhitespace = False - self.expr = self.expr.copy() - if self.expr is not None: - self.expr.leaveWhitespace() - return self - - def ignore( self, other ): - if isinstance( other, Suppress ): - if other not in self.ignoreExprs: - super( ParseElementEnhance, self).ignore( other ) - if self.expr is not None: - self.expr.ignore( self.ignoreExprs[-1] ) - else: - super( ParseElementEnhance, self).ignore( other ) - if self.expr is not None: - self.expr.ignore( self.ignoreExprs[-1] ) - return self - - def streamline( self ): - super(ParseElementEnhance,self).streamline() - if self.expr is not None: - self.expr.streamline() - return self - - def checkRecursion( self, parseElementList ): - if self in parseElementList: - raise RecursiveGrammarException( parseElementList+[self] ) - subRecCheckList = parseElementList[:] + [ self ] - if self.expr is not None: - self.expr.checkRecursion( subRecCheckList ) - - def validate( self, validateTrace=[] ): - tmp = validateTrace[:]+[self] - if self.expr is not None: - self.expr.validate(tmp) - self.checkRecursion( [] ) - - def __str__( self ): - try: - return super(ParseElementEnhance,self).__str__() - except Exception: - pass - - if self.strRepr is None and self.expr is not None: - self.strRepr = "%s:(%s)" % ( self.__class__.__name__, _ustr(self.expr) ) - return self.strRepr - - -class FollowedBy(ParseElementEnhance): - """ - Lookahead matching of the given parse expression. C{FollowedBy} - does I{not} advance the parsing position within the input string, it only - verifies that the specified parse expression matches at the current - position. C{FollowedBy} always returns a null token list. - - Example:: - # use FollowedBy to match a label only if it is followed by a ':' - data_word = Word(alphas) - label = data_word + FollowedBy(':') - attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)) - - OneOrMore(attr_expr).parseString("shape: SQUARE color: BLACK posn: upper left").pprint() - prints:: - [['shape', 'SQUARE'], ['color', 'BLACK'], ['posn', 'upper left']] - """ - def __init__( self, expr ): - super(FollowedBy,self).__init__(expr) - self.mayReturnEmpty = True - - def parseImpl( self, instring, loc, doActions=True ): - self.expr.tryParse( instring, loc ) - return loc, [] - - -class NotAny(ParseElementEnhance): - """ - Lookahead to disallow matching with the given parse expression. C{NotAny} - does I{not} advance the parsing position within the input string, it only - verifies that the specified parse expression does I{not} match at the current - position. Also, C{NotAny} does I{not} skip over leading whitespace. C{NotAny} - always returns a null token list. May be constructed using the '~' operator. - - Example:: - - """ - def __init__( self, expr ): - super(NotAny,self).__init__(expr) - #~ self.leaveWhitespace() - self.skipWhitespace = False # do NOT use self.leaveWhitespace(), don't want to propagate to exprs - self.mayReturnEmpty = True - self.errmsg = "Found unwanted token, "+_ustr(self.expr) - - def parseImpl( self, instring, loc, doActions=True ): - if self.expr.canParseNext(instring, loc): - raise ParseException(instring, loc, self.errmsg, self) - return loc, [] - - def __str__( self ): - if hasattr(self,"name"): - return self.name - - if self.strRepr is None: - self.strRepr = "~{" + _ustr(self.expr) + "}" - - return self.strRepr - -class _MultipleMatch(ParseElementEnhance): - def __init__( self, expr, stopOn=None): - super(_MultipleMatch, self).__init__(expr) - self.saveAsList = True - ender = stopOn - if isinstance(ender, basestring): - ender = ParserElement._literalStringClass(ender) - self.not_ender = ~ender if ender is not None else None - - def parseImpl( self, instring, loc, doActions=True ): - self_expr_parse = self.expr._parse - self_skip_ignorables = self._skipIgnorables - check_ender = self.not_ender is not None - if check_ender: - try_not_ender = self.not_ender.tryParse - - # must be at least one (but first see if we are the stopOn sentinel; - # if so, fail) - if check_ender: - try_not_ender(instring, loc) - loc, tokens = self_expr_parse( instring, loc, doActions, callPreParse=False ) - try: - hasIgnoreExprs = (not not self.ignoreExprs) - while 1: - if check_ender: - try_not_ender(instring, loc) - if hasIgnoreExprs: - preloc = self_skip_ignorables( instring, loc ) - else: - preloc = loc - loc, tmptokens = self_expr_parse( instring, preloc, doActions ) - if tmptokens or tmptokens.haskeys(): - tokens += tmptokens - except (ParseException,IndexError): - pass - - return loc, tokens - -class OneOrMore(_MultipleMatch): - """ - Repetition of one or more of the given expression. - - Parameters: - - expr - expression that must match one or more times - - stopOn - (default=C{None}) - expression for a terminating sentinel - (only required if the sentinel would ordinarily match the repetition - expression) - - Example:: - data_word = Word(alphas) - label = data_word + FollowedBy(':') - attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join)) - - text = "shape: SQUARE posn: upper left color: BLACK" - OneOrMore(attr_expr).parseString(text).pprint() # Fail! read 'color' as data instead of next label -> [['shape', 'SQUARE color']] - - # use stopOn attribute for OneOrMore to avoid reading label string as part of the data - attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)) - OneOrMore(attr_expr).parseString(text).pprint() # Better -> [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'BLACK']] - - # could also be written as - (attr_expr * (1,)).parseString(text).pprint() - """ - - def __str__( self ): - if hasattr(self,"name"): - return self.name - - if self.strRepr is None: - self.strRepr = "{" + _ustr(self.expr) + "}..." - - return self.strRepr - -class ZeroOrMore(_MultipleMatch): - """ - Optional repetition of zero or more of the given expression. - - Parameters: - - expr - expression that must match zero or more times - - stopOn - (default=C{None}) - expression for a terminating sentinel - (only required if the sentinel would ordinarily match the repetition - expression) - - Example: similar to L{OneOrMore} - """ - def __init__( self, expr, stopOn=None): - super(ZeroOrMore,self).__init__(expr, stopOn=stopOn) - self.mayReturnEmpty = True - - def parseImpl( self, instring, loc, doActions=True ): - try: - return super(ZeroOrMore, self).parseImpl(instring, loc, doActions) - except (ParseException,IndexError): - return loc, [] - - def __str__( self ): - if hasattr(self,"name"): - return self.name - - if self.strRepr is None: - self.strRepr = "[" + _ustr(self.expr) + "]..." - - return self.strRepr - -class _NullToken(object): - def __bool__(self): - return False - __nonzero__ = __bool__ - def __str__(self): - return "" - -_optionalNotMatched = _NullToken() -class Optional(ParseElementEnhance): - """ - Optional matching of the given expression. - - Parameters: - - expr - expression that must match zero or more times - - default (optional) - value to be returned if the optional expression is not found. - - Example:: - # US postal code can be a 5-digit zip, plus optional 4-digit qualifier - zip = Combine(Word(nums, exact=5) + Optional('-' + Word(nums, exact=4))) - zip.runTests(''' - # traditional ZIP code - 12345 - - # ZIP+4 form - 12101-0001 - - # invalid ZIP - 98765- - ''') - prints:: - # traditional ZIP code - 12345 - ['12345'] - - # ZIP+4 form - 12101-0001 - ['12101-0001'] - - # invalid ZIP - 98765- - ^ - FAIL: Expected end of text (at char 5), (line:1, col:6) - """ - def __init__( self, expr, default=_optionalNotMatched ): - super(Optional,self).__init__( expr, savelist=False ) - self.saveAsList = self.expr.saveAsList - self.defaultValue = default - self.mayReturnEmpty = True - - def parseImpl( self, instring, loc, doActions=True ): - try: - loc, tokens = self.expr._parse( instring, loc, doActions, callPreParse=False ) - except (ParseException,IndexError): - if self.defaultValue is not _optionalNotMatched: - if self.expr.resultsName: - tokens = ParseResults([ self.defaultValue ]) - tokens[self.expr.resultsName] = self.defaultValue - else: - tokens = [ self.defaultValue ] - else: - tokens = [] - return loc, tokens - - def __str__( self ): - if hasattr(self,"name"): - return self.name - - if self.strRepr is None: - self.strRepr = "[" + _ustr(self.expr) + "]" - - return self.strRepr - -class SkipTo(ParseElementEnhance): - """ - Token for skipping over all undefined text until the matched expression is found. - - Parameters: - - expr - target expression marking the end of the data to be skipped - - include - (default=C{False}) if True, the target expression is also parsed - (the skipped text and target expression are returned as a 2-element list). - - ignore - (default=C{None}) used to define grammars (typically quoted strings and - comments) that might contain false matches to the target expression - - failOn - (default=C{None}) define expressions that are not allowed to be - included in the skipped test; if found before the target expression is found, - the SkipTo is not a match - - Example:: - report = ''' - Outstanding Issues Report - 1 Jan 2000 - - # | Severity | Description | Days Open - -----+----------+-------------------------------------------+----------- - 101 | Critical | Intermittent system crash | 6 - 94 | Cosmetic | Spelling error on Login ('log|n') | 14 - 79 | Minor | System slow when running too many reports | 47 - ''' - integer = Word(nums) - SEP = Suppress('|') - # use SkipTo to simply match everything up until the next SEP - # - ignore quoted strings, so that a '|' character inside a quoted string does not match - # - parse action will call token.strip() for each matched token, i.e., the description body - string_data = SkipTo(SEP, ignore=quotedString) - string_data.setParseAction(tokenMap(str.strip)) - ticket_expr = (integer("issue_num") + SEP - + string_data("sev") + SEP - + string_data("desc") + SEP - + integer("days_open")) - - for tkt in ticket_expr.searchString(report): - print tkt.dump() - prints:: - ['101', 'Critical', 'Intermittent system crash', '6'] - - days_open: 6 - - desc: Intermittent system crash - - issue_num: 101 - - sev: Critical - ['94', 'Cosmetic', "Spelling error on Login ('log|n')", '14'] - - days_open: 14 - - desc: Spelling error on Login ('log|n') - - issue_num: 94 - - sev: Cosmetic - ['79', 'Minor', 'System slow when running too many reports', '47'] - - days_open: 47 - - desc: System slow when running too many reports - - issue_num: 79 - - sev: Minor - """ - def __init__( self, other, include=False, ignore=None, failOn=None ): - super( SkipTo, self ).__init__( other ) - self.ignoreExpr = ignore - self.mayReturnEmpty = True - self.mayIndexError = False - self.includeMatch = include - self.asList = False - if isinstance(failOn, basestring): - self.failOn = ParserElement._literalStringClass(failOn) - else: - self.failOn = failOn - self.errmsg = "No match found for "+_ustr(self.expr) - - def parseImpl( self, instring, loc, doActions=True ): - startloc = loc - instrlen = len(instring) - expr = self.expr - expr_parse = self.expr._parse - self_failOn_canParseNext = self.failOn.canParseNext if self.failOn is not None else None - self_ignoreExpr_tryParse = self.ignoreExpr.tryParse if self.ignoreExpr is not None else None - - tmploc = loc - while tmploc <= instrlen: - if self_failOn_canParseNext is not None: - # break if failOn expression matches - if self_failOn_canParseNext(instring, tmploc): - break - - if self_ignoreExpr_tryParse is not None: - # advance past ignore expressions - while 1: - try: - tmploc = self_ignoreExpr_tryParse(instring, tmploc) - except ParseBaseException: - break - - try: - expr_parse(instring, tmploc, doActions=False, callPreParse=False) - except (ParseException, IndexError): - # no match, advance loc in string - tmploc += 1 - else: - # matched skipto expr, done - break - - else: - # ran off the end of the input string without matching skipto expr, fail - raise ParseException(instring, loc, self.errmsg, self) - - # build up return values - loc = tmploc - skiptext = instring[startloc:loc] - skipresult = ParseResults(skiptext) - - if self.includeMatch: - loc, mat = expr_parse(instring,loc,doActions,callPreParse=False) - skipresult += mat - - return loc, skipresult - -class Forward(ParseElementEnhance): - """ - Forward declaration of an expression to be defined later - - used for recursive grammars, such as algebraic infix notation. - When the expression is known, it is assigned to the C{Forward} variable using the '<<' operator. - - Note: take care when assigning to C{Forward} not to overlook precedence of operators. - Specifically, '|' has a lower precedence than '<<', so that:: - fwdExpr << a | b | c - will actually be evaluated as:: - (fwdExpr << a) | b | c - thereby leaving b and c out as parseable alternatives. It is recommended that you - explicitly group the values inserted into the C{Forward}:: - fwdExpr << (a | b | c) - Converting to use the '<<=' operator instead will avoid this problem. - - See L{ParseResults.pprint} for an example of a recursive parser created using - C{Forward}. - """ - def __init__( self, other=None ): - super(Forward,self).__init__( other, savelist=False ) - - def __lshift__( self, other ): - if isinstance( other, basestring ): - other = ParserElement._literalStringClass(other) - self.expr = other - self.strRepr = None - self.mayIndexError = self.expr.mayIndexError - self.mayReturnEmpty = self.expr.mayReturnEmpty - self.setWhitespaceChars( self.expr.whiteChars ) - self.skipWhitespace = self.expr.skipWhitespace - self.saveAsList = self.expr.saveAsList - self.ignoreExprs.extend(self.expr.ignoreExprs) - return self - - def __ilshift__(self, other): - return self << other - - def leaveWhitespace( self ): - self.skipWhitespace = False - return self - - def streamline( self ): - if not self.streamlined: - self.streamlined = True - if self.expr is not None: - self.expr.streamline() - return self - - def validate( self, validateTrace=[] ): - if self not in validateTrace: - tmp = validateTrace[:]+[self] - if self.expr is not None: - self.expr.validate(tmp) - self.checkRecursion([]) - - def __str__( self ): - if hasattr(self,"name"): - return self.name - return self.__class__.__name__ + ": ..." - - # stubbed out for now - creates awful memory and perf issues - self._revertClass = self.__class__ - self.__class__ = _ForwardNoRecurse - try: - if self.expr is not None: - retString = _ustr(self.expr) - else: - retString = "None" - finally: - self.__class__ = self._revertClass - return self.__class__.__name__ + ": " + retString - - def copy(self): - if self.expr is not None: - return super(Forward,self).copy() - else: - ret = Forward() - ret <<= self - return ret - -class _ForwardNoRecurse(Forward): - def __str__( self ): - return "..." - -class TokenConverter(ParseElementEnhance): - """ - Abstract subclass of C{ParseExpression}, for converting parsed results. - """ - def __init__( self, expr, savelist=False ): - super(TokenConverter,self).__init__( expr )#, savelist ) - self.saveAsList = False - -class Combine(TokenConverter): - """ - Converter to concatenate all matching tokens to a single string. - By default, the matching patterns must also be contiguous in the input string; - this can be disabled by specifying C{'adjacent=False'} in the constructor. - - Example:: - real = Word(nums) + '.' + Word(nums) - print(real.parseString('3.1416')) # -> ['3', '.', '1416'] - # will also erroneously match the following - print(real.parseString('3. 1416')) # -> ['3', '.', '1416'] - - real = Combine(Word(nums) + '.' + Word(nums)) - print(real.parseString('3.1416')) # -> ['3.1416'] - # no match when there are internal spaces - print(real.parseString('3. 1416')) # -> Exception: Expected W:(0123...) - """ - def __init__( self, expr, joinString="", adjacent=True ): - super(Combine,self).__init__( expr ) - # suppress whitespace-stripping in contained parse expressions, but re-enable it on the Combine itself - if adjacent: - self.leaveWhitespace() - self.adjacent = adjacent - self.skipWhitespace = True - self.joinString = joinString - self.callPreparse = True - - def ignore( self, other ): - if self.adjacent: - ParserElement.ignore(self, other) - else: - super( Combine, self).ignore( other ) - return self - - def postParse( self, instring, loc, tokenlist ): - retToks = tokenlist.copy() - del retToks[:] - retToks += ParseResults([ "".join(tokenlist._asStringList(self.joinString)) ], modal=self.modalResults) - - if self.resultsName and retToks.haskeys(): - return [ retToks ] - else: - return retToks - -class Group(TokenConverter): - """ - Converter to return the matched tokens as a list - useful for returning tokens of C{L{ZeroOrMore}} and C{L{OneOrMore}} expressions. - - Example:: - ident = Word(alphas) - num = Word(nums) - term = ident | num - func = ident + Optional(delimitedList(term)) - print(func.parseString("fn a,b,100")) # -> ['fn', 'a', 'b', '100'] - - func = ident + Group(Optional(delimitedList(term))) - print(func.parseString("fn a,b,100")) # -> ['fn', ['a', 'b', '100']] - """ - def __init__( self, expr ): - super(Group,self).__init__( expr ) - self.saveAsList = True - - def postParse( self, instring, loc, tokenlist ): - return [ tokenlist ] - -class Dict(TokenConverter): - """ - Converter to return a repetitive expression as a list, but also as a dictionary. - Each element can also be referenced using the first token in the expression as its key. - Useful for tabular report scraping when the first column can be used as a item key. - - Example:: - data_word = Word(alphas) - label = data_word + FollowedBy(':') - attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join)) - - text = "shape: SQUARE posn: upper left color: light blue texture: burlap" - attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)) - - # print attributes as plain groups - print(OneOrMore(attr_expr).parseString(text).dump()) - - # instead of OneOrMore(expr), parse using Dict(OneOrMore(Group(expr))) - Dict will auto-assign names - result = Dict(OneOrMore(Group(attr_expr))).parseString(text) - print(result.dump()) - - # access named fields as dict entries, or output as dict - print(result['shape']) - print(result.asDict()) - prints:: - ['shape', 'SQUARE', 'posn', 'upper left', 'color', 'light blue', 'texture', 'burlap'] - - [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']] - - color: light blue - - posn: upper left - - shape: SQUARE - - texture: burlap - SQUARE - {'color': 'light blue', 'posn': 'upper left', 'texture': 'burlap', 'shape': 'SQUARE'} - See more examples at L{ParseResults} of accessing fields by results name. - """ - def __init__( self, expr ): - super(Dict,self).__init__( expr ) - self.saveAsList = True - - def postParse( self, instring, loc, tokenlist ): - for i,tok in enumerate(tokenlist): - if len(tok) == 0: - continue - ikey = tok[0] - if isinstance(ikey,int): - ikey = _ustr(tok[0]).strip() - if len(tok)==1: - tokenlist[ikey] = _ParseResultsWithOffset("",i) - elif len(tok)==2 and not isinstance(tok[1],ParseResults): - tokenlist[ikey] = _ParseResultsWithOffset(tok[1],i) - else: - dictvalue = tok.copy() #ParseResults(i) - del dictvalue[0] - if len(dictvalue)!= 1 or (isinstance(dictvalue,ParseResults) and dictvalue.haskeys()): - tokenlist[ikey] = _ParseResultsWithOffset(dictvalue,i) - else: - tokenlist[ikey] = _ParseResultsWithOffset(dictvalue[0],i) - - if self.resultsName: - return [ tokenlist ] - else: - return tokenlist - - -class Suppress(TokenConverter): - """ - Converter for ignoring the results of a parsed expression. - - Example:: - source = "a, b, c,d" - wd = Word(alphas) - wd_list1 = wd + ZeroOrMore(',' + wd) - print(wd_list1.parseString(source)) - - # often, delimiters that are useful during parsing are just in the - # way afterward - use Suppress to keep them out of the parsed output - wd_list2 = wd + ZeroOrMore(Suppress(',') + wd) - print(wd_list2.parseString(source)) - prints:: - ['a', ',', 'b', ',', 'c', ',', 'd'] - ['a', 'b', 'c', 'd'] - (See also L{delimitedList}.) - """ - def postParse( self, instring, loc, tokenlist ): - return [] - - def suppress( self ): - return self - - -class OnlyOnce(object): - """ - Wrapper for parse actions, to ensure they are only called once. - """ - def __init__(self, methodCall): - self.callable = _trim_arity(methodCall) - self.called = False - def __call__(self,s,l,t): - if not self.called: - results = self.callable(s,l,t) - self.called = True - return results - raise ParseException(s,l,"") - def reset(self): - self.called = False - -def traceParseAction(f): - """ - Decorator for debugging parse actions. - - When the parse action is called, this decorator will print C{">> entering I{method-name}(line:I{current_source_line}, I{parse_location}, I{matched_tokens})".} - When the parse action completes, the decorator will print C{"<<"} followed by the returned value, or any exception that the parse action raised. - - Example:: - wd = Word(alphas) - - @traceParseAction - def remove_duplicate_chars(tokens): - return ''.join(sorted(set(''.join(tokens))) - - wds = OneOrMore(wd).setParseAction(remove_duplicate_chars) - print(wds.parseString("slkdjs sld sldd sdlf sdljf")) - prints:: - >>entering remove_duplicate_chars(line: 'slkdjs sld sldd sdlf sdljf', 0, (['slkdjs', 'sld', 'sldd', 'sdlf', 'sdljf'], {})) - <<leaving remove_duplicate_chars (ret: 'dfjkls') - ['dfjkls'] - """ - f = _trim_arity(f) - def z(*paArgs): - thisFunc = f.__name__ - s,l,t = paArgs[-3:] - if len(paArgs)>3: - thisFunc = paArgs[0].__class__.__name__ + '.' + thisFunc - sys.stderr.write( ">>entering %s(line: '%s', %d, %r)\n" % (thisFunc,line(l,s),l,t) ) - try: - ret = f(*paArgs) - except Exception as exc: - sys.stderr.write( "<<leaving %s (exception: %s)\n" % (thisFunc,exc) ) - raise - sys.stderr.write( "<<leaving %s (ret: %r)\n" % (thisFunc,ret) ) - return ret - try: - z.__name__ = f.__name__ - except AttributeError: - pass - return z - -# -# global helpers -# -def delimitedList( expr, delim=",", combine=False ): - """ - Helper to define a delimited list of expressions - the delimiter defaults to ','. - By default, the list elements and delimiters can have intervening whitespace, and - comments, but this can be overridden by passing C{combine=True} in the constructor. - If C{combine} is set to C{True}, the matching tokens are returned as a single token - string, with the delimiters included; otherwise, the matching tokens are returned - as a list of tokens, with the delimiters suppressed. - - Example:: - delimitedList(Word(alphas)).parseString("aa,bb,cc") # -> ['aa', 'bb', 'cc'] - delimitedList(Word(hexnums), delim=':', combine=True).parseString("AA:BB:CC:DD:EE") # -> ['AA:BB:CC:DD:EE'] - """ - dlName = _ustr(expr)+" ["+_ustr(delim)+" "+_ustr(expr)+"]..." - if combine: - return Combine( expr + ZeroOrMore( delim + expr ) ).setName(dlName) - else: - return ( expr + ZeroOrMore( Suppress( delim ) + expr ) ).setName(dlName) - -def countedArray( expr, intExpr=None ): - """ - Helper to define a counted list of expressions. - This helper defines a pattern of the form:: - integer expr expr expr... - where the leading integer tells how many expr expressions follow. - The matched tokens returns the array of expr tokens as a list - the leading count token is suppressed. - - If C{intExpr} is specified, it should be a pyparsing expression that produces an integer value. - - Example:: - countedArray(Word(alphas)).parseString('2 ab cd ef') # -> ['ab', 'cd'] - - # in this parser, the leading integer value is given in binary, - # '10' indicating that 2 values are in the array - binaryConstant = Word('01').setParseAction(lambda t: int(t[0], 2)) - countedArray(Word(alphas), intExpr=binaryConstant).parseString('10 ab cd ef') # -> ['ab', 'cd'] - """ - arrayExpr = Forward() - def countFieldParseAction(s,l,t): - n = t[0] - arrayExpr << (n and Group(And([expr]*n)) or Group(empty)) - return [] - if intExpr is None: - intExpr = Word(nums).setParseAction(lambda t:int(t[0])) - else: - intExpr = intExpr.copy() - intExpr.setName("arrayLen") - intExpr.addParseAction(countFieldParseAction, callDuringTry=True) - return ( intExpr + arrayExpr ).setName('(len) ' + _ustr(expr) + '...') - -def _flatten(L): - ret = [] - for i in L: - if isinstance(i,list): - ret.extend(_flatten(i)) - else: - ret.append(i) - return ret - -def matchPreviousLiteral(expr): - """ - Helper to define an expression that is indirectly defined from - the tokens matched in a previous expression, that is, it looks - for a 'repeat' of a previous expression. For example:: - first = Word(nums) - second = matchPreviousLiteral(first) - matchExpr = first + ":" + second - will match C{"1:1"}, but not C{"1:2"}. Because this matches a - previous literal, will also match the leading C{"1:1"} in C{"1:10"}. - If this is not desired, use C{matchPreviousExpr}. - Do I{not} use with packrat parsing enabled. - """ - rep = Forward() - def copyTokenToRepeater(s,l,t): - if t: - if len(t) == 1: - rep << t[0] - else: - # flatten t tokens - tflat = _flatten(t.asList()) - rep << And(Literal(tt) for tt in tflat) - else: - rep << Empty() - expr.addParseAction(copyTokenToRepeater, callDuringTry=True) - rep.setName('(prev) ' + _ustr(expr)) - return rep - -def matchPreviousExpr(expr): - """ - Helper to define an expression that is indirectly defined from - the tokens matched in a previous expression, that is, it looks - for a 'repeat' of a previous expression. For example:: - first = Word(nums) - second = matchPreviousExpr(first) - matchExpr = first + ":" + second - will match C{"1:1"}, but not C{"1:2"}. Because this matches by - expressions, will I{not} match the leading C{"1:1"} in C{"1:10"}; - the expressions are evaluated first, and then compared, so - C{"1"} is compared with C{"10"}. - Do I{not} use with packrat parsing enabled. - """ - rep = Forward() - e2 = expr.copy() - rep <<= e2 - def copyTokenToRepeater(s,l,t): - matchTokens = _flatten(t.asList()) - def mustMatchTheseTokens(s,l,t): - theseTokens = _flatten(t.asList()) - if theseTokens != matchTokens: - raise ParseException("",0,"") - rep.setParseAction( mustMatchTheseTokens, callDuringTry=True ) - expr.addParseAction(copyTokenToRepeater, callDuringTry=True) - rep.setName('(prev) ' + _ustr(expr)) - return rep - -def _escapeRegexRangeChars(s): - #~ escape these chars: ^-] - for c in r"\^-]": - s = s.replace(c,_bslash+c) - s = s.replace("\n",r"\n") - s = s.replace("\t",r"\t") - return _ustr(s) - -def oneOf( strs, caseless=False, useRegex=True ): - """ - Helper to quickly define a set of alternative Literals, and makes sure to do - longest-first testing when there is a conflict, regardless of the input order, - but returns a C{L{MatchFirst}} for best performance. - - Parameters: - - strs - a string of space-delimited literals, or a collection of string literals - - caseless - (default=C{False}) - treat all literals as caseless - - useRegex - (default=C{True}) - as an optimization, will generate a Regex - object; otherwise, will generate a C{MatchFirst} object (if C{caseless=True}, or - if creating a C{Regex} raises an exception) - - Example:: - comp_oper = oneOf("< = > <= >= !=") - var = Word(alphas) - number = Word(nums) - term = var | number - comparison_expr = term + comp_oper + term - print(comparison_expr.searchString("B = 12 AA=23 B<=AA AA>12")) - prints:: - [['B', '=', '12'], ['AA', '=', '23'], ['B', '<=', 'AA'], ['AA', '>', '12']] - """ - if caseless: - isequal = ( lambda a,b: a.upper() == b.upper() ) - masks = ( lambda a,b: b.upper().startswith(a.upper()) ) - parseElementClass = CaselessLiteral - else: - isequal = ( lambda a,b: a == b ) - masks = ( lambda a,b: b.startswith(a) ) - parseElementClass = Literal - - symbols = [] - if isinstance(strs,basestring): - symbols = strs.split() - elif isinstance(strs, collections.Iterable): - symbols = list(strs) - else: - warnings.warn("Invalid argument to oneOf, expected string or iterable", - SyntaxWarning, stacklevel=2) - if not symbols: - return NoMatch() - - i = 0 - while i < len(symbols)-1: - cur = symbols[i] - for j,other in enumerate(symbols[i+1:]): - if ( isequal(other, cur) ): - del symbols[i+j+1] - break - elif ( masks(cur, other) ): - del symbols[i+j+1] - symbols.insert(i,other) - cur = other - break - else: - i += 1 - - if not caseless and useRegex: - #~ print (strs,"->", "|".join( [ _escapeRegexChars(sym) for sym in symbols] )) - try: - if len(symbols)==len("".join(symbols)): - return Regex( "[%s]" % "".join(_escapeRegexRangeChars(sym) for sym in symbols) ).setName(' | '.join(symbols)) - else: - return Regex( "|".join(re.escape(sym) for sym in symbols) ).setName(' | '.join(symbols)) - except Exception: - warnings.warn("Exception creating Regex for oneOf, building MatchFirst", - SyntaxWarning, stacklevel=2) - - - # last resort, just use MatchFirst - return MatchFirst(parseElementClass(sym) for sym in symbols).setName(' | '.join(symbols)) - -def dictOf( key, value ): - """ - Helper to easily and clearly define a dictionary by specifying the respective patterns - for the key and value. Takes care of defining the C{L{Dict}}, C{L{ZeroOrMore}}, and C{L{Group}} tokens - in the proper order. The key pattern can include delimiting markers or punctuation, - as long as they are suppressed, thereby leaving the significant key text. The value - pattern can include named results, so that the C{Dict} results can include named token - fields. - - Example:: - text = "shape: SQUARE posn: upper left color: light blue texture: burlap" - attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join)) - print(OneOrMore(attr_expr).parseString(text).dump()) - - attr_label = label - attr_value = Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join) - - # similar to Dict, but simpler call format - result = dictOf(attr_label, attr_value).parseString(text) - print(result.dump()) - print(result['shape']) - print(result.shape) # object attribute access works too - print(result.asDict()) - prints:: - [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']] - - color: light blue - - posn: upper left - - shape: SQUARE - - texture: burlap - SQUARE - SQUARE - {'color': 'light blue', 'shape': 'SQUARE', 'posn': 'upper left', 'texture': 'burlap'} - """ - return Dict( ZeroOrMore( Group ( key + value ) ) ) - -def originalTextFor(expr, asString=True): - """ - Helper to return the original, untokenized text for a given expression. Useful to - restore the parsed fields of an HTML start tag into the raw tag text itself, or to - revert separate tokens with intervening whitespace back to the original matching - input text. By default, returns astring containing the original parsed text. - - If the optional C{asString} argument is passed as C{False}, then the return value is a - C{L{ParseResults}} containing any results names that were originally matched, and a - single token containing the original matched text from the input string. So if - the expression passed to C{L{originalTextFor}} contains expressions with defined - results names, you must set C{asString} to C{False} if you want to preserve those - results name values. - - Example:: - src = "this is test <b> bold <i>text</i> </b> normal text " - for tag in ("b","i"): - opener,closer = makeHTMLTags(tag) - patt = originalTextFor(opener + SkipTo(closer) + closer) - print(patt.searchString(src)[0]) - prints:: - ['<b> bold <i>text</i> </b>'] - ['<i>text</i>'] - """ - locMarker = Empty().setParseAction(lambda s,loc,t: loc) - endlocMarker = locMarker.copy() - endlocMarker.callPreparse = False - matchExpr = locMarker("_original_start") + expr + endlocMarker("_original_end") - if asString: - extractText = lambda s,l,t: s[t._original_start:t._original_end] - else: - def extractText(s,l,t): - t[:] = [s[t.pop('_original_start'):t.pop('_original_end')]] - matchExpr.setParseAction(extractText) - matchExpr.ignoreExprs = expr.ignoreExprs - return matchExpr - -def ungroup(expr): - """ - Helper to undo pyparsing's default grouping of And expressions, even - if all but one are non-empty. - """ - return TokenConverter(expr).setParseAction(lambda t:t[0]) - -def locatedExpr(expr): - """ - Helper to decorate a returned token with its starting and ending locations in the input string. - This helper adds the following results names: - - locn_start = location where matched expression begins - - locn_end = location where matched expression ends - - value = the actual parsed results - - Be careful if the input text contains C{<TAB>} characters, you may want to call - C{L{ParserElement.parseWithTabs}} - - Example:: - wd = Word(alphas) - for match in locatedExpr(wd).searchString("ljsdf123lksdjjf123lkkjj1222"): - print(match) - prints:: - [[0, 'ljsdf', 5]] - [[8, 'lksdjjf', 15]] - [[18, 'lkkjj', 23]] - """ - locator = Empty().setParseAction(lambda s,l,t: l) - return Group(locator("locn_start") + expr("value") + locator.copy().leaveWhitespace()("locn_end")) - - -# convenience constants for positional expressions -empty = Empty().setName("empty") -lineStart = LineStart().setName("lineStart") -lineEnd = LineEnd().setName("lineEnd") -stringStart = StringStart().setName("stringStart") -stringEnd = StringEnd().setName("stringEnd") - -_escapedPunc = Word( _bslash, r"\[]-*.$+^?()~ ", exact=2 ).setParseAction(lambda s,l,t:t[0][1]) -_escapedHexChar = Regex(r"\\0?[xX][0-9a-fA-F]+").setParseAction(lambda s,l,t:unichr(int(t[0].lstrip(r'\0x'),16))) -_escapedOctChar = Regex(r"\\0[0-7]+").setParseAction(lambda s,l,t:unichr(int(t[0][1:],8))) -_singleChar = _escapedPunc | _escapedHexChar | _escapedOctChar | Word(printables, excludeChars=r'\]', exact=1) | Regex(r"\w", re.UNICODE) -_charRange = Group(_singleChar + Suppress("-") + _singleChar) -_reBracketExpr = Literal("[") + Optional("^").setResultsName("negate") + Group( OneOrMore( _charRange | _singleChar ) ).setResultsName("body") + "]" - -def srange(s): - r""" - Helper to easily define string ranges for use in Word construction. Borrows - syntax from regexp '[]' string range definitions:: - srange("[0-9]") -> "0123456789" - srange("[a-z]") -> "abcdefghijklmnopqrstuvwxyz" - srange("[a-z$_]") -> "abcdefghijklmnopqrstuvwxyz$_" - The input string must be enclosed in []'s, and the returned string is the expanded - character set joined into a single string. - The values enclosed in the []'s may be: - - a single character - - an escaped character with a leading backslash (such as C{\-} or C{\]}) - - an escaped hex character with a leading C{'\x'} (C{\x21}, which is a C{'!'} character) - (C{\0x##} is also supported for backwards compatibility) - - an escaped octal character with a leading C{'\0'} (C{\041}, which is a C{'!'} character) - - a range of any of the above, separated by a dash (C{'a-z'}, etc.) - - any combination of the above (C{'aeiouy'}, C{'a-zA-Z0-9_$'}, etc.) - """ - _expanded = lambda p: p if not isinstance(p,ParseResults) else ''.join(unichr(c) for c in range(ord(p[0]),ord(p[1])+1)) - try: - return "".join(_expanded(part) for part in _reBracketExpr.parseString(s).body) - except Exception: - return "" - -def matchOnlyAtCol(n): - """ - Helper method for defining parse actions that require matching at a specific - column in the input text. - """ - def verifyCol(strg,locn,toks): - if col(locn,strg) != n: - raise ParseException(strg,locn,"matched token not at column %d" % n) - return verifyCol - -def replaceWith(replStr): - """ - Helper method for common parse actions that simply return a literal value. Especially - useful when used with C{L{transformString<ParserElement.transformString>}()}. - - Example:: - num = Word(nums).setParseAction(lambda toks: int(toks[0])) - na = oneOf("N/A NA").setParseAction(replaceWith(math.nan)) - term = na | num - - OneOrMore(term).parseString("324 234 N/A 234") # -> [324, 234, nan, 234] - """ - return lambda s,l,t: [replStr] - -def removeQuotes(s,l,t): - """ - Helper parse action for removing quotation marks from parsed quoted strings. - - Example:: - # by default, quotation marks are included in parsed results - quotedString.parseString("'Now is the Winter of our Discontent'") # -> ["'Now is the Winter of our Discontent'"] - - # use removeQuotes to strip quotation marks from parsed results - quotedString.setParseAction(removeQuotes) - quotedString.parseString("'Now is the Winter of our Discontent'") # -> ["Now is the Winter of our Discontent"] - """ - return t[0][1:-1] - -def tokenMap(func, *args): - """ - Helper to define a parse action by mapping a function to all elements of a ParseResults list.If any additional - args are passed, they are forwarded to the given function as additional arguments after - the token, as in C{hex_integer = Word(hexnums).setParseAction(tokenMap(int, 16))}, which will convert the - parsed data to an integer using base 16. - - Example (compare the last to example in L{ParserElement.transformString}:: - hex_ints = OneOrMore(Word(hexnums)).setParseAction(tokenMap(int, 16)) - hex_ints.runTests(''' - 00 11 22 aa FF 0a 0d 1a - ''') - - upperword = Word(alphas).setParseAction(tokenMap(str.upper)) - OneOrMore(upperword).runTests(''' - my kingdom for a horse - ''') - - wd = Word(alphas).setParseAction(tokenMap(str.title)) - OneOrMore(wd).setParseAction(' '.join).runTests(''' - now is the winter of our discontent made glorious summer by this sun of york - ''') - prints:: - 00 11 22 aa FF 0a 0d 1a - [0, 17, 34, 170, 255, 10, 13, 26] - - my kingdom for a horse - ['MY', 'KINGDOM', 'FOR', 'A', 'HORSE'] - - now is the winter of our discontent made glorious summer by this sun of york - ['Now Is The Winter Of Our Discontent Made Glorious Summer By This Sun Of York'] - """ - def pa(s,l,t): - return [func(tokn, *args) for tokn in t] - - try: - func_name = getattr(func, '__name__', - getattr(func, '__class__').__name__) - except Exception: - func_name = str(func) - pa.__name__ = func_name - - return pa - -upcaseTokens = tokenMap(lambda t: _ustr(t).upper()) -"""(Deprecated) Helper parse action to convert tokens to upper case. Deprecated in favor of L{pyparsing_common.upcaseTokens}""" - -downcaseTokens = tokenMap(lambda t: _ustr(t).lower()) -"""(Deprecated) Helper parse action to convert tokens to lower case. Deprecated in favor of L{pyparsing_common.downcaseTokens}""" - -def _makeTags(tagStr, xml): - """Internal helper to construct opening and closing tag expressions, given a tag name""" - if isinstance(tagStr,basestring): - resname = tagStr - tagStr = Keyword(tagStr, caseless=not xml) - else: - resname = tagStr.name - - tagAttrName = Word(alphas,alphanums+"_-:") - if (xml): - tagAttrValue = dblQuotedString.copy().setParseAction( removeQuotes ) - openTag = Suppress("<") + tagStr("tag") + \ - Dict(ZeroOrMore(Group( tagAttrName + Suppress("=") + tagAttrValue ))) + \ - Optional("/",default=[False]).setResultsName("empty").setParseAction(lambda s,l,t:t[0]=='/') + Suppress(">") - else: - printablesLessRAbrack = "".join(c for c in printables if c not in ">") - tagAttrValue = quotedString.copy().setParseAction( removeQuotes ) | Word(printablesLessRAbrack) - openTag = Suppress("<") + tagStr("tag") + \ - Dict(ZeroOrMore(Group( tagAttrName.setParseAction(downcaseTokens) + \ - Optional( Suppress("=") + tagAttrValue ) ))) + \ - Optional("/",default=[False]).setResultsName("empty").setParseAction(lambda s,l,t:t[0]=='/') + Suppress(">") - closeTag = Combine(_L("</") + tagStr + ">") - - openTag = openTag.setResultsName("start"+"".join(resname.replace(":"," ").title().split())).setName("<%s>" % resname) - closeTag = closeTag.setResultsName("end"+"".join(resname.replace(":"," ").title().split())).setName("</%s>" % resname) - openTag.tag = resname - closeTag.tag = resname - return openTag, closeTag - -def makeHTMLTags(tagStr): - """ - Helper to construct opening and closing tag expressions for HTML, given a tag name. Matches - tags in either upper or lower case, attributes with namespaces and with quoted or unquoted values. - - Example:: - text = '<td>More info at the <a href="http://pyparsing.wikispaces.com">pyparsing</a> wiki page</td>' - # makeHTMLTags returns pyparsing expressions for the opening and closing tags as a 2-tuple - a,a_end = makeHTMLTags("A") - link_expr = a + SkipTo(a_end)("link_text") + a_end - - for link in link_expr.searchString(text): - # attributes in the <A> tag (like "href" shown here) are also accessible as named results - print(link.link_text, '->', link.href) - prints:: - pyparsing -> http://pyparsing.wikispaces.com - """ - return _makeTags( tagStr, False ) - -def makeXMLTags(tagStr): - """ - Helper to construct opening and closing tag expressions for XML, given a tag name. Matches - tags only in the given upper/lower case. - - Example: similar to L{makeHTMLTags} - """ - return _makeTags( tagStr, True ) - -def withAttribute(*args,**attrDict): - """ - Helper to create a validating parse action to be used with start tags created - with C{L{makeXMLTags}} or C{L{makeHTMLTags}}. Use C{withAttribute} to qualify a starting tag - with a required attribute value, to avoid false matches on common tags such as - C{<TD>} or C{<DIV>}. - - Call C{withAttribute} with a series of attribute names and values. Specify the list - of filter attributes names and values as: - - keyword arguments, as in C{(align="right")}, or - - as an explicit dict with C{**} operator, when an attribute name is also a Python - reserved word, as in C{**{"class":"Customer", "align":"right"}} - - a list of name-value tuples, as in ( ("ns1:class", "Customer"), ("ns2:align","right") ) - For attribute names with a namespace prefix, you must use the second form. Attribute - names are matched insensitive to upper/lower case. - - If just testing for C{class} (with or without a namespace), use C{L{withClass}}. - - To verify that the attribute exists, but without specifying a value, pass - C{withAttribute.ANY_VALUE} as the value. - - Example:: - html = ''' - <div> - Some text - <div type="grid">1 4 0 1 0</div> - <div type="graph">1,3 2,3 1,1</div> - <div>this has no type</div> - </div> - - ''' - div,div_end = makeHTMLTags("div") - - # only match div tag having a type attribute with value "grid" - div_grid = div().setParseAction(withAttribute(type="grid")) - grid_expr = div_grid + SkipTo(div | div_end)("body") - for grid_header in grid_expr.searchString(html): - print(grid_header.body) - - # construct a match with any div tag having a type attribute, regardless of the value - div_any_type = div().setParseAction(withAttribute(type=withAttribute.ANY_VALUE)) - div_expr = div_any_type + SkipTo(div | div_end)("body") - for div_header in div_expr.searchString(html): - print(div_header.body) - prints:: - 1 4 0 1 0 - - 1 4 0 1 0 - 1,3 2,3 1,1 - """ - if args: - attrs = args[:] - else: - attrs = attrDict.items() - attrs = [(k,v) for k,v in attrs] - def pa(s,l,tokens): - for attrName,attrValue in attrs: - if attrName not in tokens: - raise ParseException(s,l,"no matching attribute " + attrName) - if attrValue != withAttribute.ANY_VALUE and tokens[attrName] != attrValue: - raise ParseException(s,l,"attribute '%s' has value '%s', must be '%s'" % - (attrName, tokens[attrName], attrValue)) - return pa -withAttribute.ANY_VALUE = object() - -def withClass(classname, namespace=''): - """ - Simplified version of C{L{withAttribute}} when matching on a div class - made - difficult because C{class} is a reserved word in Python. - - Example:: - html = ''' - <div> - Some text - <div class="grid">1 4 0 1 0</div> - <div class="graph">1,3 2,3 1,1</div> - <div>this <div> has no class</div> - </div> - - ''' - div,div_end = makeHTMLTags("div") - div_grid = div().setParseAction(withClass("grid")) - - grid_expr = div_grid + SkipTo(div | div_end)("body") - for grid_header in grid_expr.searchString(html): - print(grid_header.body) - - div_any_type = div().setParseAction(withClass(withAttribute.ANY_VALUE)) - div_expr = div_any_type + SkipTo(div | div_end)("body") - for div_header in div_expr.searchString(html): - print(div_header.body) - prints:: - 1 4 0 1 0 - - 1 4 0 1 0 - 1,3 2,3 1,1 - """ - classattr = "%s:class" % namespace if namespace else "class" - return withAttribute(**{classattr : classname}) - -opAssoc = _Constants() -opAssoc.LEFT = object() -opAssoc.RIGHT = object() - -def infixNotation( baseExpr, opList, lpar=Suppress('('), rpar=Suppress(')') ): - """ - Helper method for constructing grammars of expressions made up of - operators working in a precedence hierarchy. Operators may be unary or - binary, left- or right-associative. Parse actions can also be attached - to operator expressions. The generated parser will also recognize the use - of parentheses to override operator precedences (see example below). - - Note: if you define a deep operator list, you may see performance issues - when using infixNotation. See L{ParserElement.enablePackrat} for a - mechanism to potentially improve your parser performance. - - Parameters: - - baseExpr - expression representing the most basic element for the nested - - opList - list of tuples, one for each operator precedence level in the - expression grammar; each tuple is of the form - (opExpr, numTerms, rightLeftAssoc, parseAction), where: - - opExpr is the pyparsing expression for the operator; - may also be a string, which will be converted to a Literal; - if numTerms is 3, opExpr is a tuple of two expressions, for the - two operators separating the 3 terms - - numTerms is the number of terms for this operator (must - be 1, 2, or 3) - - rightLeftAssoc is the indicator whether the operator is - right or left associative, using the pyparsing-defined - constants C{opAssoc.RIGHT} and C{opAssoc.LEFT}. - - parseAction is the parse action to be associated with - expressions matching this operator expression (the - parse action tuple member may be omitted) - - lpar - expression for matching left-parentheses (default=C{Suppress('(')}) - - rpar - expression for matching right-parentheses (default=C{Suppress(')')}) - - Example:: - # simple example of four-function arithmetic with ints and variable names - integer = pyparsing_common.signed_integer - varname = pyparsing_common.identifier - - arith_expr = infixNotation(integer | varname, - [ - ('-', 1, opAssoc.RIGHT), - (oneOf('* /'), 2, opAssoc.LEFT), - (oneOf('+ -'), 2, opAssoc.LEFT), - ]) - - arith_expr.runTests(''' - 5+3*6 - (5+3)*6 - -2--11 - ''', fullDump=False) - prints:: - 5+3*6 - [[5, '+', [3, '*', 6]]] - - (5+3)*6 - [[[5, '+', 3], '*', 6]] - - -2--11 - [[['-', 2], '-', ['-', 11]]] - """ - ret = Forward() - lastExpr = baseExpr | ( lpar + ret + rpar ) - for i,operDef in enumerate(opList): - opExpr,arity,rightLeftAssoc,pa = (operDef + (None,))[:4] - termName = "%s term" % opExpr if arity < 3 else "%s%s term" % opExpr - if arity == 3: - if opExpr is None or len(opExpr) != 2: - raise ValueError("if numterms=3, opExpr must be a tuple or list of two expressions") - opExpr1, opExpr2 = opExpr - thisExpr = Forward().setName(termName) - if rightLeftAssoc == opAssoc.LEFT: - if arity == 1: - matchExpr = FollowedBy(lastExpr + opExpr) + Group( lastExpr + OneOrMore( opExpr ) ) - elif arity == 2: - if opExpr is not None: - matchExpr = FollowedBy(lastExpr + opExpr + lastExpr) + Group( lastExpr + OneOrMore( opExpr + lastExpr ) ) - else: - matchExpr = FollowedBy(lastExpr+lastExpr) + Group( lastExpr + OneOrMore(lastExpr) ) - elif arity == 3: - matchExpr = FollowedBy(lastExpr + opExpr1 + lastExpr + opExpr2 + lastExpr) + \ - Group( lastExpr + opExpr1 + lastExpr + opExpr2 + lastExpr ) - else: - raise ValueError("operator must be unary (1), binary (2), or ternary (3)") - elif rightLeftAssoc == opAssoc.RIGHT: - if arity == 1: - # try to avoid LR with this extra test - if not isinstance(opExpr, Optional): - opExpr = Optional(opExpr) - matchExpr = FollowedBy(opExpr.expr + thisExpr) + Group( opExpr + thisExpr ) - elif arity == 2: - if opExpr is not None: - matchExpr = FollowedBy(lastExpr + opExpr + thisExpr) + Group( lastExpr + OneOrMore( opExpr + thisExpr ) ) - else: - matchExpr = FollowedBy(lastExpr + thisExpr) + Group( lastExpr + OneOrMore( thisExpr ) ) - elif arity == 3: - matchExpr = FollowedBy(lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr) + \ - Group( lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr ) - else: - raise ValueError("operator must be unary (1), binary (2), or ternary (3)") - else: - raise ValueError("operator must indicate right or left associativity") - if pa: - matchExpr.setParseAction( pa ) - thisExpr <<= ( matchExpr.setName(termName) | lastExpr ) - lastExpr = thisExpr - ret <<= lastExpr - return ret - -operatorPrecedence = infixNotation -"""(Deprecated) Former name of C{L{infixNotation}}, will be dropped in a future release.""" - -dblQuotedString = Combine(Regex(r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*')+'"').setName("string enclosed in double quotes") -sglQuotedString = Combine(Regex(r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*")+"'").setName("string enclosed in single quotes") -quotedString = Combine(Regex(r'"(?:[^"\n\r\\]|(?:"")|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*')+'"'| - Regex(r"'(?:[^'\n\r\\]|(?:'')|(?:\\(?:[^x]|x[0-9a-fA-F]+)))*")+"'").setName("quotedString using single or double quotes") -unicodeString = Combine(_L('u') + quotedString.copy()).setName("unicode string literal") - -def nestedExpr(opener="(", closer=")", content=None, ignoreExpr=quotedString.copy()): - """ - Helper method for defining nested lists enclosed in opening and closing - delimiters ("(" and ")" are the default). - - Parameters: - - opener - opening character for a nested list (default=C{"("}); can also be a pyparsing expression - - closer - closing character for a nested list (default=C{")"}); can also be a pyparsing expression - - content - expression for items within the nested lists (default=C{None}) - - ignoreExpr - expression for ignoring opening and closing delimiters (default=C{quotedString}) - - If an expression is not provided for the content argument, the nested - expression will capture all whitespace-delimited content between delimiters - as a list of separate values. - - Use the C{ignoreExpr} argument to define expressions that may contain - opening or closing characters that should not be treated as opening - or closing characters for nesting, such as quotedString or a comment - expression. Specify multiple expressions using an C{L{Or}} or C{L{MatchFirst}}. - The default is L{quotedString}, but if no expressions are to be ignored, - then pass C{None} for this argument. - - Example:: - data_type = oneOf("void int short long char float double") - decl_data_type = Combine(data_type + Optional(Word('*'))) - ident = Word(alphas+'_', alphanums+'_') - number = pyparsing_common.number - arg = Group(decl_data_type + ident) - LPAR,RPAR = map(Suppress, "()") - - code_body = nestedExpr('{', '}', ignoreExpr=(quotedString | cStyleComment)) - - c_function = (decl_data_type("type") - + ident("name") - + LPAR + Optional(delimitedList(arg), [])("args") + RPAR - + code_body("body")) - c_function.ignore(cStyleComment) - - source_code = ''' - int is_odd(int x) { - return (x%2); - } - - int dec_to_hex(char hchar) { - if (hchar >= '0' && hchar <= '9') { - return (ord(hchar)-ord('0')); - } else { - return (10+ord(hchar)-ord('A')); - } - } - ''' - for func in c_function.searchString(source_code): - print("%(name)s (%(type)s) args: %(args)s" % func) - - prints:: - is_odd (int) args: [['int', 'x']] - dec_to_hex (int) args: [['char', 'hchar']] - """ - if opener == closer: - raise ValueError("opening and closing strings cannot be the same") - if content is None: - if isinstance(opener,basestring) and isinstance(closer,basestring): - if len(opener) == 1 and len(closer)==1: - if ignoreExpr is not None: - content = (Combine(OneOrMore(~ignoreExpr + - CharsNotIn(opener+closer+ParserElement.DEFAULT_WHITE_CHARS,exact=1)) - ).setParseAction(lambda t:t[0].strip())) - else: - content = (empty.copy()+CharsNotIn(opener+closer+ParserElement.DEFAULT_WHITE_CHARS - ).setParseAction(lambda t:t[0].strip())) - else: - if ignoreExpr is not None: - content = (Combine(OneOrMore(~ignoreExpr + - ~Literal(opener) + ~Literal(closer) + - CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS,exact=1)) - ).setParseAction(lambda t:t[0].strip())) - else: - content = (Combine(OneOrMore(~Literal(opener) + ~Literal(closer) + - CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS,exact=1)) - ).setParseAction(lambda t:t[0].strip())) - else: - raise ValueError("opening and closing arguments must be strings if no content expression is given") - ret = Forward() - if ignoreExpr is not None: - ret <<= Group( Suppress(opener) + ZeroOrMore( ignoreExpr | ret | content ) + Suppress(closer) ) - else: - ret <<= Group( Suppress(opener) + ZeroOrMore( ret | content ) + Suppress(closer) ) - ret.setName('nested %s%s expression' % (opener,closer)) - return ret - -def indentedBlock(blockStatementExpr, indentStack, indent=True): - """ - Helper method for defining space-delimited indentation blocks, such as - those used to define block statements in Python source code. - - Parameters: - - blockStatementExpr - expression defining syntax of statement that - is repeated within the indented block - - indentStack - list created by caller to manage indentation stack - (multiple statementWithIndentedBlock expressions within a single grammar - should share a common indentStack) - - indent - boolean indicating whether block must be indented beyond the - the current level; set to False for block of left-most statements - (default=C{True}) - - A valid block must contain at least one C{blockStatement}. - - Example:: - data = ''' - def A(z): - A1 - B = 100 - G = A2 - A2 - A3 - B - def BB(a,b,c): - BB1 - def BBA(): - bba1 - bba2 - bba3 - C - D - def spam(x,y): - def eggs(z): - pass - ''' - - - indentStack = [1] - stmt = Forward() - - identifier = Word(alphas, alphanums) - funcDecl = ("def" + identifier + Group( "(" + Optional( delimitedList(identifier) ) + ")" ) + ":") - func_body = indentedBlock(stmt, indentStack) - funcDef = Group( funcDecl + func_body ) - - rvalue = Forward() - funcCall = Group(identifier + "(" + Optional(delimitedList(rvalue)) + ")") - rvalue << (funcCall | identifier | Word(nums)) - assignment = Group(identifier + "=" + rvalue) - stmt << ( funcDef | assignment | identifier ) - - module_body = OneOrMore(stmt) - - parseTree = module_body.parseString(data) - parseTree.pprint() - prints:: - [['def', - 'A', - ['(', 'z', ')'], - ':', - [['A1'], [['B', '=', '100']], [['G', '=', 'A2']], ['A2'], ['A3']]], - 'B', - ['def', - 'BB', - ['(', 'a', 'b', 'c', ')'], - ':', - [['BB1'], [['def', 'BBA', ['(', ')'], ':', [['bba1'], ['bba2'], ['bba3']]]]]], - 'C', - 'D', - ['def', - 'spam', - ['(', 'x', 'y', ')'], - ':', - [[['def', 'eggs', ['(', 'z', ')'], ':', [['pass']]]]]]] - """ - def checkPeerIndent(s,l,t): - if l >= len(s): return - curCol = col(l,s) - if curCol != indentStack[-1]: - if curCol > indentStack[-1]: - raise ParseFatalException(s,l,"illegal nesting") - raise ParseException(s,l,"not a peer entry") - - def checkSubIndent(s,l,t): - curCol = col(l,s) - if curCol > indentStack[-1]: - indentStack.append( curCol ) - else: - raise ParseException(s,l,"not a subentry") - - def checkUnindent(s,l,t): - if l >= len(s): return - curCol = col(l,s) - if not(indentStack and curCol < indentStack[-1] and curCol <= indentStack[-2]): - raise ParseException(s,l,"not an unindent") - indentStack.pop() - - NL = OneOrMore(LineEnd().setWhitespaceChars("\t ").suppress()) - INDENT = (Empty() + Empty().setParseAction(checkSubIndent)).setName('INDENT') - PEER = Empty().setParseAction(checkPeerIndent).setName('') - UNDENT = Empty().setParseAction(checkUnindent).setName('UNINDENT') - if indent: - smExpr = Group( Optional(NL) + - #~ FollowedBy(blockStatementExpr) + - INDENT + (OneOrMore( PEER + Group(blockStatementExpr) + Optional(NL) )) + UNDENT) - else: - smExpr = Group( Optional(NL) + - (OneOrMore( PEER + Group(blockStatementExpr) + Optional(NL) )) ) - blockStatementExpr.ignore(_bslash + LineEnd()) - return smExpr.setName('indented block') - -alphas8bit = srange(r"[\0xc0-\0xd6\0xd8-\0xf6\0xf8-\0xff]") -punc8bit = srange(r"[\0xa1-\0xbf\0xd7\0xf7]") - -anyOpenTag,anyCloseTag = makeHTMLTags(Word(alphas,alphanums+"_:").setName('any tag')) -_htmlEntityMap = dict(zip("gt lt amp nbsp quot apos".split(),'><& "\'')) -commonHTMLEntity = Regex('&(?P<entity>' + '|'.join(_htmlEntityMap.keys()) +");").setName("common HTML entity") -def replaceHTMLEntity(t): - """Helper parser action to replace common HTML entities with their special characters""" - return _htmlEntityMap.get(t.entity) - -# it's easy to get these comment structures wrong - they're very common, so may as well make them available -cStyleComment = Combine(Regex(r"/\*(?:[^*]|\*(?!/))*") + '*/').setName("C style comment") -"Comment of the form C{/* ... */}" - -htmlComment = Regex(r"<!--[\s\S]*?-->").setName("HTML comment") -"Comment of the form C{<!-- ... -->}" - -restOfLine = Regex(r".*").leaveWhitespace().setName("rest of line") -dblSlashComment = Regex(r"//(?:\\\n|[^\n])*").setName("// comment") -"Comment of the form C{// ... (to end of line)}" - -cppStyleComment = Combine(Regex(r"/\*(?:[^*]|\*(?!/))*") + '*/'| dblSlashComment).setName("C++ style comment") -"Comment of either form C{L{cStyleComment}} or C{L{dblSlashComment}}" - -javaStyleComment = cppStyleComment -"Same as C{L{cppStyleComment}}" - -pythonStyleComment = Regex(r"#.*").setName("Python style comment") -"Comment of the form C{# ... (to end of line)}" - -_commasepitem = Combine(OneOrMore(Word(printables, excludeChars=',') + - Optional( Word(" \t") + - ~Literal(",") + ~LineEnd() ) ) ).streamline().setName("commaItem") -commaSeparatedList = delimitedList( Optional( quotedString.copy() | _commasepitem, default="") ).setName("commaSeparatedList") -"""(Deprecated) Predefined expression of 1 or more printable words or quoted strings, separated by commas. - This expression is deprecated in favor of L{pyparsing_common.comma_separated_list}.""" - -# some other useful expressions - using lower-case class name since we are really using this as a namespace -class pyparsing_common: - """ - Here are some common low-level expressions that may be useful in jump-starting parser development: - - numeric forms (L{integers<integer>}, L{reals<real>}, L{scientific notation<sci_real>}) - - common L{programming identifiers<identifier>} - - network addresses (L{MAC<mac_address>}, L{IPv4<ipv4_address>}, L{IPv6<ipv6_address>}) - - ISO8601 L{dates<iso8601_date>} and L{datetime<iso8601_datetime>} - - L{UUID<uuid>} - - L{comma-separated list<comma_separated_list>} - Parse actions: - - C{L{convertToInteger}} - - C{L{convertToFloat}} - - C{L{convertToDate}} - - C{L{convertToDatetime}} - - C{L{stripHTMLTags}} - - C{L{upcaseTokens}} - - C{L{downcaseTokens}} - - Example:: - pyparsing_common.number.runTests(''' - # any int or real number, returned as the appropriate type - 100 - -100 - +100 - 3.14159 - 6.02e23 - 1e-12 - ''') - - pyparsing_common.fnumber.runTests(''' - # any int or real number, returned as float - 100 - -100 - +100 - 3.14159 - 6.02e23 - 1e-12 - ''') - - pyparsing_common.hex_integer.runTests(''' - # hex numbers - 100 - FF - ''') - - pyparsing_common.fraction.runTests(''' - # fractions - 1/2 - -3/4 - ''') - - pyparsing_common.mixed_integer.runTests(''' - # mixed fractions - 1 - 1/2 - -3/4 - 1-3/4 - ''') - - import uuid - pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID)) - pyparsing_common.uuid.runTests(''' - # uuid - 12345678-1234-5678-1234-567812345678 - ''') - prints:: - # any int or real number, returned as the appropriate type - 100 - [100] - - -100 - [-100] - - +100 - [100] - - 3.14159 - [3.14159] - - 6.02e23 - [6.02e+23] - - 1e-12 - [1e-12] - - # any int or real number, returned as float - 100 - [100.0] - - -100 - [-100.0] - - +100 - [100.0] - - 3.14159 - [3.14159] - - 6.02e23 - [6.02e+23] - - 1e-12 - [1e-12] - - # hex numbers - 100 - [256] - - FF - [255] - - # fractions - 1/2 - [0.5] - - -3/4 - [-0.75] - - # mixed fractions - 1 - [1] - - 1/2 - [0.5] - - -3/4 - [-0.75] - - 1-3/4 - [1.75] - - # uuid - 12345678-1234-5678-1234-567812345678 - [UUID('12345678-1234-5678-1234-567812345678')] - """ - - convertToInteger = tokenMap(int) - """ - Parse action for converting parsed integers to Python int - """ - - convertToFloat = tokenMap(float) - """ - Parse action for converting parsed numbers to Python float - """ - - integer = Word(nums).setName("integer").setParseAction(convertToInteger) - """expression that parses an unsigned integer, returns an int""" - - hex_integer = Word(hexnums).setName("hex integer").setParseAction(tokenMap(int,16)) - """expression that parses a hexadecimal integer, returns an int""" - - signed_integer = Regex(r'[+-]?\d+').setName("signed integer").setParseAction(convertToInteger) - """expression that parses an integer with optional leading sign, returns an int""" - - fraction = (signed_integer().setParseAction(convertToFloat) + '/' + signed_integer().setParseAction(convertToFloat)).setName("fraction") - """fractional expression of an integer divided by an integer, returns a float""" - fraction.addParseAction(lambda t: t[0]/t[-1]) - - mixed_integer = (fraction | signed_integer + Optional(Optional('-').suppress() + fraction)).setName("fraction or mixed integer-fraction") - """mixed integer of the form 'integer - fraction', with optional leading integer, returns float""" - mixed_integer.addParseAction(sum) - - real = Regex(r'[+-]?\d+\.\d*').setName("real number").setParseAction(convertToFloat) - """expression that parses a floating point number and returns a float""" - - sci_real = Regex(r'[+-]?\d+([eE][+-]?\d+|\.\d*([eE][+-]?\d+)?)').setName("real number with scientific notation").setParseAction(convertToFloat) - """expression that parses a floating point number with optional scientific notation and returns a float""" - - # streamlining this expression makes the docs nicer-looking - number = (sci_real | real | signed_integer).streamline() - """any numeric expression, returns the corresponding Python type""" - - fnumber = Regex(r'[+-]?\d+\.?\d*([eE][+-]?\d+)?').setName("fnumber").setParseAction(convertToFloat) - """any int or real number, returned as float""" - - identifier = Word(alphas+'_', alphanums+'_').setName("identifier") - """typical code identifier (leading alpha or '_', followed by 0 or more alphas, nums, or '_')""" - - ipv4_address = Regex(r'(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})){3}').setName("IPv4 address") - "IPv4 address (C{0.0.0.0 - 255.255.255.255})" - - _ipv6_part = Regex(r'[0-9a-fA-F]{1,4}').setName("hex_integer") - _full_ipv6_address = (_ipv6_part + (':' + _ipv6_part)*7).setName("full IPv6 address") - _short_ipv6_address = (Optional(_ipv6_part + (':' + _ipv6_part)*(0,6)) + "::" + Optional(_ipv6_part + (':' + _ipv6_part)*(0,6))).setName("short IPv6 address") - _short_ipv6_address.addCondition(lambda t: sum(1 for tt in t if pyparsing_common._ipv6_part.matches(tt)) < 8) - _mixed_ipv6_address = ("::ffff:" + ipv4_address).setName("mixed IPv6 address") - ipv6_address = Combine((_full_ipv6_address | _mixed_ipv6_address | _short_ipv6_address).setName("IPv6 address")).setName("IPv6 address") - "IPv6 address (long, short, or mixed form)" - - mac_address = Regex(r'[0-9a-fA-F]{2}([:.-])[0-9a-fA-F]{2}(?:\1[0-9a-fA-F]{2}){4}').setName("MAC address") - "MAC address xx:xx:xx:xx:xx (may also have '-' or '.' delimiters)" - - @staticmethod - def convertToDate(fmt="%Y-%m-%d"): - """ - Helper to create a parse action for converting parsed date string to Python datetime.date - - Params - - - fmt - format to be passed to datetime.strptime (default=C{"%Y-%m-%d"}) - - Example:: - date_expr = pyparsing_common.iso8601_date.copy() - date_expr.setParseAction(pyparsing_common.convertToDate()) - print(date_expr.parseString("1999-12-31")) - prints:: - [datetime.date(1999, 12, 31)] - """ - def cvt_fn(s,l,t): - try: - return datetime.strptime(t[0], fmt).date() - except ValueError as ve: - raise ParseException(s, l, str(ve)) - return cvt_fn - - @staticmethod - def convertToDatetime(fmt="%Y-%m-%dT%H:%M:%S.%f"): - """ - Helper to create a parse action for converting parsed datetime string to Python datetime.datetime - - Params - - - fmt - format to be passed to datetime.strptime (default=C{"%Y-%m-%dT%H:%M:%S.%f"}) - - Example:: - dt_expr = pyparsing_common.iso8601_datetime.copy() - dt_expr.setParseAction(pyparsing_common.convertToDatetime()) - print(dt_expr.parseString("1999-12-31T23:59:59.999")) - prints:: - [datetime.datetime(1999, 12, 31, 23, 59, 59, 999000)] - """ - def cvt_fn(s,l,t): - try: - return datetime.strptime(t[0], fmt) - except ValueError as ve: - raise ParseException(s, l, str(ve)) - return cvt_fn - - iso8601_date = Regex(r'(?P<year>\d{4})(?:-(?P<month>\d\d)(?:-(?P<day>\d\d))?)?').setName("ISO8601 date") - "ISO8601 date (C{yyyy-mm-dd})" - - iso8601_datetime = Regex(r'(?P<year>\d{4})-(?P<month>\d\d)-(?P<day>\d\d)[T ](?P<hour>\d\d):(?P<minute>\d\d)(:(?P<second>\d\d(\.\d*)?)?)?(?P<tz>Z|[+-]\d\d:?\d\d)?').setName("ISO8601 datetime") - "ISO8601 datetime (C{yyyy-mm-ddThh:mm:ss.s(Z|+-00:00)}) - trailing seconds, milliseconds, and timezone optional; accepts separating C{'T'} or C{' '}" - - uuid = Regex(r'[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}').setName("UUID") - "UUID (C{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx})" - - _html_stripper = anyOpenTag.suppress() | anyCloseTag.suppress() - @staticmethod - def stripHTMLTags(s, l, tokens): - """ - Parse action to remove HTML tags from web page HTML source - - Example:: - # strip HTML links from normal text - text = '<td>More info at the <a href="http://pyparsing.wikispaces.com">pyparsing</a> wiki page</td>' - td,td_end = makeHTMLTags("TD") - table_text = td + SkipTo(td_end).setParseAction(pyparsing_common.stripHTMLTags)("body") + td_end - - print(table_text.parseString(text).body) # -> 'More info at the pyparsing wiki page' - """ - return pyparsing_common._html_stripper.transformString(tokens[0]) - - _commasepitem = Combine(OneOrMore(~Literal(",") + ~LineEnd() + Word(printables, excludeChars=',') - + Optional( White(" \t") ) ) ).streamline().setName("commaItem") - comma_separated_list = delimitedList( Optional( quotedString.copy() | _commasepitem, default="") ).setName("comma separated list") - """Predefined expression of 1 or more printable words or quoted strings, separated by commas.""" - - upcaseTokens = staticmethod(tokenMap(lambda t: _ustr(t).upper())) - """Parse action to convert tokens to upper case.""" - - downcaseTokens = staticmethod(tokenMap(lambda t: _ustr(t).lower())) - """Parse action to convert tokens to lower case.""" - - -if __name__ == "__main__": - - selectToken = CaselessLiteral("select") - fromToken = CaselessLiteral("from") - - ident = Word(alphas, alphanums + "_$") - - columnName = delimitedList(ident, ".", combine=True).setParseAction(upcaseTokens) - columnNameList = Group(delimitedList(columnName)).setName("columns") - columnSpec = ('*' | columnNameList) - - tableName = delimitedList(ident, ".", combine=True).setParseAction(upcaseTokens) - tableNameList = Group(delimitedList(tableName)).setName("tables") - - simpleSQL = selectToken("command") + columnSpec("columns") + fromToken + tableNameList("tables") - - # demo runTests method, including embedded comments in test string - simpleSQL.runTests(""" - # '*' as column list and dotted table name - select * from SYS.XYZZY - - # caseless match on "SELECT", and casts back to "select" - SELECT * from XYZZY, ABC - - # list of column names, and mixed case SELECT keyword - Select AA,BB,CC from Sys.dual - - # multiple tables - Select A, B, C from Sys.dual, Table2 - - # invalid SELECT keyword - should fail - Xelect A, B, C from Sys.dual - - # incomplete command - should fail - Select - - # invalid column name - should fail - Select ^^^ frox Sys.dual - - """) - - pyparsing_common.number.runTests(""" - 100 - -100 - +100 - 3.14159 - 6.02e23 - 1e-12 - """) - - # any int or real number, returned as float - pyparsing_common.fnumber.runTests(""" - 100 - -100 - +100 - 3.14159 - 6.02e23 - 1e-12 - """) - - pyparsing_common.hex_integer.runTests(""" - 100 - FF - """) - - import uuid - pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID)) - pyparsing_common.uuid.runTests(""" - 12345678-1234-5678-1234-567812345678 - """) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/six.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/six.py deleted file mode 100644 index 190c0239..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/_vendor/six.py +++ /dev/null @@ -1,868 +0,0 @@ -"""Utilities for writing code that runs on Python 2 and 3""" - -# Copyright (c) 2010-2015 Benjamin Peterson -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -from __future__ import absolute_import - -import functools -import itertools -import operator -import sys -import types - -__author__ = "Benjamin Peterson <benjamin@python.org>" -__version__ = "1.10.0" - - -# Useful for very coarse version differentiation. -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] == 3 -PY34 = sys.version_info[0:2] >= (3, 4) - -if PY3: - string_types = str, - integer_types = int, - class_types = type, - text_type = str - binary_type = bytes - - MAXSIZE = sys.maxsize -else: - string_types = basestring, - integer_types = (int, long) - class_types = (type, types.ClassType) - text_type = unicode - binary_type = str - - if sys.platform.startswith("java"): - # Jython always uses 32 bits. - MAXSIZE = int((1 << 31) - 1) - else: - # It's possible to have sizeof(long) != sizeof(Py_ssize_t). - class X(object): - - def __len__(self): - return 1 << 31 - try: - len(X()) - except OverflowError: - # 32-bit - MAXSIZE = int((1 << 31) - 1) - else: - # 64-bit - MAXSIZE = int((1 << 63) - 1) - del X - - -def _add_doc(func, doc): - """Add documentation to a function.""" - func.__doc__ = doc - - -def _import_module(name): - """Import module, returning the module after the last dot.""" - __import__(name) - return sys.modules[name] - - -class _LazyDescr(object): - - def __init__(self, name): - self.name = name - - def __get__(self, obj, tp): - result = self._resolve() - setattr(obj, self.name, result) # Invokes __set__. - try: - # This is a bit ugly, but it avoids running this again by - # removing this descriptor. - delattr(obj.__class__, self.name) - except AttributeError: - pass - return result - - -class MovedModule(_LazyDescr): - - def __init__(self, name, old, new=None): - super(MovedModule, self).__init__(name) - if PY3: - if new is None: - new = name - self.mod = new - else: - self.mod = old - - def _resolve(self): - return _import_module(self.mod) - - def __getattr__(self, attr): - _module = self._resolve() - value = getattr(_module, attr) - setattr(self, attr, value) - return value - - -class _LazyModule(types.ModuleType): - - def __init__(self, name): - super(_LazyModule, self).__init__(name) - self.__doc__ = self.__class__.__doc__ - - def __dir__(self): - attrs = ["__doc__", "__name__"] - attrs += [attr.name for attr in self._moved_attributes] - return attrs - - # Subclasses should override this - _moved_attributes = [] - - -class MovedAttribute(_LazyDescr): - - def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None): - super(MovedAttribute, self).__init__(name) - if PY3: - if new_mod is None: - new_mod = name - self.mod = new_mod - if new_attr is None: - if old_attr is None: - new_attr = name - else: - new_attr = old_attr - self.attr = new_attr - else: - self.mod = old_mod - if old_attr is None: - old_attr = name - self.attr = old_attr - - def _resolve(self): - module = _import_module(self.mod) - return getattr(module, self.attr) - - -class _SixMetaPathImporter(object): - - """ - A meta path importer to import six.moves and its submodules. - - This class implements a PEP302 finder and loader. It should be compatible - with Python 2.5 and all existing versions of Python3 - """ - - def __init__(self, six_module_name): - self.name = six_module_name - self.known_modules = {} - - def _add_module(self, mod, *fullnames): - for fullname in fullnames: - self.known_modules[self.name + "." + fullname] = mod - - def _get_module(self, fullname): - return self.known_modules[self.name + "." + fullname] - - def find_module(self, fullname, path=None): - if fullname in self.known_modules: - return self - return None - - def __get_module(self, fullname): - try: - return self.known_modules[fullname] - except KeyError: - raise ImportError("This loader does not know module " + fullname) - - def load_module(self, fullname): - try: - # in case of a reload - return sys.modules[fullname] - except KeyError: - pass - mod = self.__get_module(fullname) - if isinstance(mod, MovedModule): - mod = mod._resolve() - else: - mod.__loader__ = self - sys.modules[fullname] = mod - return mod - - def is_package(self, fullname): - """ - Return true, if the named module is a package. - - We need this method to get correct spec objects with - Python 3.4 (see PEP451) - """ - return hasattr(self.__get_module(fullname), "__path__") - - def get_code(self, fullname): - """Return None - - Required, if is_package is implemented""" - self.__get_module(fullname) # eventually raises ImportError - return None - get_source = get_code # same as get_code - -_importer = _SixMetaPathImporter(__name__) - - -class _MovedItems(_LazyModule): - - """Lazy loading of moved objects""" - __path__ = [] # mark as package - - -_moved_attributes = [ - MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"), - MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), - MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"), - MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), - MovedAttribute("intern", "__builtin__", "sys"), - MovedAttribute("map", "itertools", "builtins", "imap", "map"), - MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"), - MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"), - MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"), - MovedAttribute("reduce", "__builtin__", "functools"), - MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), - MovedAttribute("StringIO", "StringIO", "io"), - MovedAttribute("UserDict", "UserDict", "collections"), - MovedAttribute("UserList", "UserList", "collections"), - MovedAttribute("UserString", "UserString", "collections"), - MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), - MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), - MovedModule("builtins", "__builtin__"), - MovedModule("configparser", "ConfigParser"), - MovedModule("copyreg", "copy_reg"), - MovedModule("dbm_gnu", "gdbm", "dbm.gnu"), - MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"), - MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), - MovedModule("http_cookies", "Cookie", "http.cookies"), - MovedModule("html_entities", "htmlentitydefs", "html.entities"), - MovedModule("html_parser", "HTMLParser", "html.parser"), - MovedModule("http_client", "httplib", "http.client"), - MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"), - MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"), - MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"), - MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"), - MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), - MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"), - MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"), - MovedModule("cPickle", "cPickle", "pickle"), - MovedModule("queue", "Queue"), - MovedModule("reprlib", "repr"), - MovedModule("socketserver", "SocketServer"), - MovedModule("_thread", "thread", "_thread"), - MovedModule("tkinter", "Tkinter"), - MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"), - MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"), - MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"), - MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"), - MovedModule("tkinter_tix", "Tix", "tkinter.tix"), - MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"), - MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"), - MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"), - MovedModule("tkinter_colorchooser", "tkColorChooser", - "tkinter.colorchooser"), - MovedModule("tkinter_commondialog", "tkCommonDialog", - "tkinter.commondialog"), - MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"), - MovedModule("tkinter_font", "tkFont", "tkinter.font"), - MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"), - MovedModule("tkinter_tksimpledialog", "tkSimpleDialog", - "tkinter.simpledialog"), - MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"), - MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"), - MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"), - MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), - MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), - MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), -] -# Add windows specific modules. -if sys.platform == "win32": - _moved_attributes += [ - MovedModule("winreg", "_winreg"), - ] - -for attr in _moved_attributes: - setattr(_MovedItems, attr.name, attr) - if isinstance(attr, MovedModule): - _importer._add_module(attr, "moves." + attr.name) -del attr - -_MovedItems._moved_attributes = _moved_attributes - -moves = _MovedItems(__name__ + ".moves") -_importer._add_module(moves, "moves") - - -class Module_six_moves_urllib_parse(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_parse""" - - -_urllib_parse_moved_attributes = [ - MovedAttribute("ParseResult", "urlparse", "urllib.parse"), - MovedAttribute("SplitResult", "urlparse", "urllib.parse"), - MovedAttribute("parse_qs", "urlparse", "urllib.parse"), - MovedAttribute("parse_qsl", "urlparse", "urllib.parse"), - MovedAttribute("urldefrag", "urlparse", "urllib.parse"), - MovedAttribute("urljoin", "urlparse", "urllib.parse"), - MovedAttribute("urlparse", "urlparse", "urllib.parse"), - MovedAttribute("urlsplit", "urlparse", "urllib.parse"), - MovedAttribute("urlunparse", "urlparse", "urllib.parse"), - MovedAttribute("urlunsplit", "urlparse", "urllib.parse"), - MovedAttribute("quote", "urllib", "urllib.parse"), - MovedAttribute("quote_plus", "urllib", "urllib.parse"), - MovedAttribute("unquote", "urllib", "urllib.parse"), - MovedAttribute("unquote_plus", "urllib", "urllib.parse"), - MovedAttribute("urlencode", "urllib", "urllib.parse"), - MovedAttribute("splitquery", "urllib", "urllib.parse"), - MovedAttribute("splittag", "urllib", "urllib.parse"), - MovedAttribute("splituser", "urllib", "urllib.parse"), - MovedAttribute("uses_fragment", "urlparse", "urllib.parse"), - MovedAttribute("uses_netloc", "urlparse", "urllib.parse"), - MovedAttribute("uses_params", "urlparse", "urllib.parse"), - MovedAttribute("uses_query", "urlparse", "urllib.parse"), - MovedAttribute("uses_relative", "urlparse", "urllib.parse"), -] -for attr in _urllib_parse_moved_attributes: - setattr(Module_six_moves_urllib_parse, attr.name, attr) -del attr - -Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes - -_importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse"), - "moves.urllib_parse", "moves.urllib.parse") - - -class Module_six_moves_urllib_error(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_error""" - - -_urllib_error_moved_attributes = [ - MovedAttribute("URLError", "urllib2", "urllib.error"), - MovedAttribute("HTTPError", "urllib2", "urllib.error"), - MovedAttribute("ContentTooShortError", "urllib", "urllib.error"), -] -for attr in _urllib_error_moved_attributes: - setattr(Module_six_moves_urllib_error, attr.name, attr) -del attr - -Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes - -_importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.error"), - "moves.urllib_error", "moves.urllib.error") - - -class Module_six_moves_urllib_request(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_request""" - - -_urllib_request_moved_attributes = [ - MovedAttribute("urlopen", "urllib2", "urllib.request"), - MovedAttribute("install_opener", "urllib2", "urllib.request"), - MovedAttribute("build_opener", "urllib2", "urllib.request"), - MovedAttribute("pathname2url", "urllib", "urllib.request"), - MovedAttribute("url2pathname", "urllib", "urllib.request"), - MovedAttribute("getproxies", "urllib", "urllib.request"), - MovedAttribute("Request", "urllib2", "urllib.request"), - MovedAttribute("OpenerDirector", "urllib2", "urllib.request"), - MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"), - MovedAttribute("ProxyHandler", "urllib2", "urllib.request"), - MovedAttribute("BaseHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"), - MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"), - MovedAttribute("FileHandler", "urllib2", "urllib.request"), - MovedAttribute("FTPHandler", "urllib2", "urllib.request"), - MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"), - MovedAttribute("UnknownHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"), - MovedAttribute("urlretrieve", "urllib", "urllib.request"), - MovedAttribute("urlcleanup", "urllib", "urllib.request"), - MovedAttribute("URLopener", "urllib", "urllib.request"), - MovedAttribute("FancyURLopener", "urllib", "urllib.request"), - MovedAttribute("proxy_bypass", "urllib", "urllib.request"), -] -for attr in _urllib_request_moved_attributes: - setattr(Module_six_moves_urllib_request, attr.name, attr) -del attr - -Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes - -_importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib.request"), - "moves.urllib_request", "moves.urllib.request") - - -class Module_six_moves_urllib_response(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_response""" - - -_urllib_response_moved_attributes = [ - MovedAttribute("addbase", "urllib", "urllib.response"), - MovedAttribute("addclosehook", "urllib", "urllib.response"), - MovedAttribute("addinfo", "urllib", "urllib.response"), - MovedAttribute("addinfourl", "urllib", "urllib.response"), -] -for attr in _urllib_response_moved_attributes: - setattr(Module_six_moves_urllib_response, attr.name, attr) -del attr - -Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes - -_importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib.response"), - "moves.urllib_response", "moves.urllib.response") - - -class Module_six_moves_urllib_robotparser(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_robotparser""" - - -_urllib_robotparser_moved_attributes = [ - MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"), -] -for attr in _urllib_robotparser_moved_attributes: - setattr(Module_six_moves_urllib_robotparser, attr.name, attr) -del attr - -Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes - -_importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser"), - "moves.urllib_robotparser", "moves.urllib.robotparser") - - -class Module_six_moves_urllib(types.ModuleType): - - """Create a six.moves.urllib namespace that resembles the Python 3 namespace""" - __path__ = [] # mark as package - parse = _importer._get_module("moves.urllib_parse") - error = _importer._get_module("moves.urllib_error") - request = _importer._get_module("moves.urllib_request") - response = _importer._get_module("moves.urllib_response") - robotparser = _importer._get_module("moves.urllib_robotparser") - - def __dir__(self): - return ['parse', 'error', 'request', 'response', 'robotparser'] - -_importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"), - "moves.urllib") - - -def add_move(move): - """Add an item to six.moves.""" - setattr(_MovedItems, move.name, move) - - -def remove_move(name): - """Remove item from six.moves.""" - try: - delattr(_MovedItems, name) - except AttributeError: - try: - del moves.__dict__[name] - except KeyError: - raise AttributeError("no such move, %r" % (name,)) - - -if PY3: - _meth_func = "__func__" - _meth_self = "__self__" - - _func_closure = "__closure__" - _func_code = "__code__" - _func_defaults = "__defaults__" - _func_globals = "__globals__" -else: - _meth_func = "im_func" - _meth_self = "im_self" - - _func_closure = "func_closure" - _func_code = "func_code" - _func_defaults = "func_defaults" - _func_globals = "func_globals" - - -try: - advance_iterator = next -except NameError: - def advance_iterator(it): - return it.next() -next = advance_iterator - - -try: - callable = callable -except NameError: - def callable(obj): - return any("__call__" in klass.__dict__ for klass in type(obj).__mro__) - - -if PY3: - def get_unbound_function(unbound): - return unbound - - create_bound_method = types.MethodType - - def create_unbound_method(func, cls): - return func - - Iterator = object -else: - def get_unbound_function(unbound): - return unbound.im_func - - def create_bound_method(func, obj): - return types.MethodType(func, obj, obj.__class__) - - def create_unbound_method(func, cls): - return types.MethodType(func, None, cls) - - class Iterator(object): - - def next(self): - return type(self).__next__(self) - - callable = callable -_add_doc(get_unbound_function, - """Get the function out of a possibly unbound function""") - - -get_method_function = operator.attrgetter(_meth_func) -get_method_self = operator.attrgetter(_meth_self) -get_function_closure = operator.attrgetter(_func_closure) -get_function_code = operator.attrgetter(_func_code) -get_function_defaults = operator.attrgetter(_func_defaults) -get_function_globals = operator.attrgetter(_func_globals) - - -if PY3: - def iterkeys(d, **kw): - return iter(d.keys(**kw)) - - def itervalues(d, **kw): - return iter(d.values(**kw)) - - def iteritems(d, **kw): - return iter(d.items(**kw)) - - def iterlists(d, **kw): - return iter(d.lists(**kw)) - - viewkeys = operator.methodcaller("keys") - - viewvalues = operator.methodcaller("values") - - viewitems = operator.methodcaller("items") -else: - def iterkeys(d, **kw): - return d.iterkeys(**kw) - - def itervalues(d, **kw): - return d.itervalues(**kw) - - def iteritems(d, **kw): - return d.iteritems(**kw) - - def iterlists(d, **kw): - return d.iterlists(**kw) - - viewkeys = operator.methodcaller("viewkeys") - - viewvalues = operator.methodcaller("viewvalues") - - viewitems = operator.methodcaller("viewitems") - -_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.") -_add_doc(itervalues, "Return an iterator over the values of a dictionary.") -_add_doc(iteritems, - "Return an iterator over the (key, value) pairs of a dictionary.") -_add_doc(iterlists, - "Return an iterator over the (key, [values]) pairs of a dictionary.") - - -if PY3: - def b(s): - return s.encode("latin-1") - - def u(s): - return s - unichr = chr - import struct - int2byte = struct.Struct(">B").pack - del struct - byte2int = operator.itemgetter(0) - indexbytes = operator.getitem - iterbytes = iter - import io - StringIO = io.StringIO - BytesIO = io.BytesIO - _assertCountEqual = "assertCountEqual" - if sys.version_info[1] <= 1: - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" - else: - _assertRaisesRegex = "assertRaisesRegex" - _assertRegex = "assertRegex" -else: - def b(s): - return s - # Workaround for standalone backslash - - def u(s): - return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape") - unichr = unichr - int2byte = chr - - def byte2int(bs): - return ord(bs[0]) - - def indexbytes(buf, i): - return ord(buf[i]) - iterbytes = functools.partial(itertools.imap, ord) - import StringIO - StringIO = BytesIO = StringIO.StringIO - _assertCountEqual = "assertItemsEqual" - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" -_add_doc(b, """Byte literal""") -_add_doc(u, """Text literal""") - - -def assertCountEqual(self, *args, **kwargs): - return getattr(self, _assertCountEqual)(*args, **kwargs) - - -def assertRaisesRegex(self, *args, **kwargs): - return getattr(self, _assertRaisesRegex)(*args, **kwargs) - - -def assertRegex(self, *args, **kwargs): - return getattr(self, _assertRegex)(*args, **kwargs) - - -if PY3: - exec_ = getattr(moves.builtins, "exec") - - def reraise(tp, value, tb=None): - if value is None: - value = tp() - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - -else: - def exec_(_code_, _globs_=None, _locs_=None): - """Execute code in a namespace.""" - if _globs_ is None: - frame = sys._getframe(1) - _globs_ = frame.f_globals - if _locs_ is None: - _locs_ = frame.f_locals - del frame - elif _locs_ is None: - _locs_ = _globs_ - exec("""exec _code_ in _globs_, _locs_""") - - exec_("""def reraise(tp, value, tb=None): - raise tp, value, tb -""") - - -if sys.version_info[:2] == (3, 2): - exec_("""def raise_from(value, from_value): - if from_value is None: - raise value - raise value from from_value -""") -elif sys.version_info[:2] > (3, 2): - exec_("""def raise_from(value, from_value): - raise value from from_value -""") -else: - def raise_from(value, from_value): - raise value - - -print_ = getattr(moves.builtins, "print", None) -if print_ is None: - def print_(*args, **kwargs): - """The new-style print function for Python 2.4 and 2.5.""" - fp = kwargs.pop("file", sys.stdout) - if fp is None: - return - - def write(data): - if not isinstance(data, basestring): - data = str(data) - # If the file has an encoding, encode unicode with it. - if (isinstance(fp, file) and - isinstance(data, unicode) and - fp.encoding is not None): - errors = getattr(fp, "errors", None) - if errors is None: - errors = "strict" - data = data.encode(fp.encoding, errors) - fp.write(data) - want_unicode = False - sep = kwargs.pop("sep", None) - if sep is not None: - if isinstance(sep, unicode): - want_unicode = True - elif not isinstance(sep, str): - raise TypeError("sep must be None or a string") - end = kwargs.pop("end", None) - if end is not None: - if isinstance(end, unicode): - want_unicode = True - elif not isinstance(end, str): - raise TypeError("end must be None or a string") - if kwargs: - raise TypeError("invalid keyword arguments to print()") - if not want_unicode: - for arg in args: - if isinstance(arg, unicode): - want_unicode = True - break - if want_unicode: - newline = unicode("\n") - space = unicode(" ") - else: - newline = "\n" - space = " " - if sep is None: - sep = space - if end is None: - end = newline - for i, arg in enumerate(args): - if i: - write(sep) - write(arg) - write(end) -if sys.version_info[:2] < (3, 3): - _print = print_ - - def print_(*args, **kwargs): - fp = kwargs.get("file", sys.stdout) - flush = kwargs.pop("flush", False) - _print(*args, **kwargs) - if flush and fp is not None: - fp.flush() - -_add_doc(reraise, """Reraise an exception.""") - -if sys.version_info[0:2] < (3, 4): - def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, - updated=functools.WRAPPER_UPDATES): - def wrapper(f): - f = functools.wraps(wrapped, assigned, updated)(f) - f.__wrapped__ = wrapped - return f - return wrapper -else: - wraps = functools.wraps - - -def with_metaclass(meta, *bases): - """Create a base class with a metaclass.""" - # This requires a bit of explanation: the basic idea is to make a dummy - # metaclass for one level of class instantiation that replaces itself with - # the actual metaclass. - class metaclass(meta): - - def __new__(cls, name, this_bases, d): - return meta(name, bases, d) - return type.__new__(metaclass, 'temporary_class', (), {}) - - -def add_metaclass(metaclass): - """Class decorator for creating a class with a metaclass.""" - def wrapper(cls): - orig_vars = cls.__dict__.copy() - slots = orig_vars.get('__slots__') - if slots is not None: - if isinstance(slots, str): - slots = [slots] - for slots_var in slots: - orig_vars.pop(slots_var) - orig_vars.pop('__dict__', None) - orig_vars.pop('__weakref__', None) - return metaclass(cls.__name__, cls.__bases__, orig_vars) - return wrapper - - -def python_2_unicode_compatible(klass): - """ - A decorator that defines __unicode__ and __str__ methods under Python 2. - Under Python 3 it does nothing. - - To support Python 2 and 3 with a single code base, define a __str__ method - returning text and apply this decorator to the class. - """ - if PY2: - if '__str__' not in klass.__dict__: - raise ValueError("@python_2_unicode_compatible cannot be applied " - "to %s because it doesn't define __str__()." % - klass.__name__) - klass.__unicode__ = klass.__str__ - klass.__str__ = lambda self: self.__unicode__().encode('utf-8') - return klass - - -# Complete the moves implementation. -# This code is at the end of this module to speed up module loading. -# Turn this module into a package. -__path__ = [] # required for PEP 302 and PEP 451 -__package__ = __name__ # see PEP 366 @ReservedAssignment -if globals().get("__spec__") is not None: - __spec__.submodule_search_locations = [] # PEP 451 @UndefinedVariable -# Remove other six meta path importers, since they cause problems. This can -# happen if six is removed from sys.modules and then reloaded. (Setuptools does -# this for some reason.) -if sys.meta_path: - for i, importer in enumerate(sys.meta_path): - # Here's some real nastiness: Another "instance" of the six module might - # be floating around. Therefore, we can't use isinstance() to check for - # the six meta path importer, since the other six instance will have - # inserted an importer with different class. - if (type(importer).__name__ == "_SixMetaPathImporter" and - importer.name == __name__): - del sys.meta_path[i] - break - del i, importer -# Finally, add the importer to the meta path import hook. -sys.meta_path.append(_importer) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/extern/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/extern/__init__.py deleted file mode 100644 index b4156fec..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/extern/__init__.py +++ /dev/null @@ -1,73 +0,0 @@ -import sys - - -class VendorImporter: - """ - A PEP 302 meta path importer for finding optionally-vendored - or otherwise naturally-installed packages from root_name. - """ - - def __init__(self, root_name, vendored_names=(), vendor_pkg=None): - self.root_name = root_name - self.vendored_names = set(vendored_names) - self.vendor_pkg = vendor_pkg or root_name.replace('extern', '_vendor') - - @property - def search_path(self): - """ - Search first the vendor package then as a natural package. - """ - yield self.vendor_pkg + '.' - yield '' - - def find_module(self, fullname, path=None): - """ - Return self when fullname starts with root_name and the - target module is one vendored through this importer. - """ - root, base, target = fullname.partition(self.root_name + '.') - if root: - return - if not any(map(target.startswith, self.vendored_names)): - return - return self - - def load_module(self, fullname): - """ - Iterate over the search path to locate and load fullname. - """ - root, base, target = fullname.partition(self.root_name + '.') - for prefix in self.search_path: - try: - extant = prefix + target - __import__(extant) - mod = sys.modules[extant] - sys.modules[fullname] = mod - # mysterious hack: - # Remove the reference to the extant package/module - # on later Python versions to cause relative imports - # in the vendor package to resolve the same modules - # as those going through this importer. - if sys.version_info > (3, 3): - del sys.modules[extant] - return mod - except ImportError: - pass - else: - raise ImportError( - "The '{target}' package is required; " - "normally this is bundled with this package so if you get " - "this warning, consult the packager of your " - "distribution.".format(**locals()) - ) - - def install(self): - """ - Install this importer into sys.meta_path if not already present. - """ - if self not in sys.meta_path: - sys.meta_path.append(self) - - -names = 'packaging', 'pyparsing', 'six', 'appdirs' -VendorImporter(__name__, names).install() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 6fc8deae..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/DESCRIPTION.rst b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/DESCRIPTION.rst deleted file mode 100644 index 00d3fed9..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,589 +0,0 @@ -pytz - World Timezone Definitions for Python -============================================ - -:Author: Stuart Bishop <stuart@stuartbishop.net> - -Introduction -~~~~~~~~~~~~ - -pytz brings the Olson tz database into Python. This library allows -accurate and cross platform timezone calculations using Python 2.4 -or higher. It also solves the issue of ambiguous times at the end -of daylight saving time, which you can read more about in the Python -Library Reference (``datetime.tzinfo``). - -Almost all of the Olson timezones are supported. - -.. note:: - - This library differs from the documented Python API for - tzinfo implementations; if you want to create local wallclock - times you need to use the ``localize()`` method documented in this - document. In addition, if you perform date arithmetic on local - times that cross DST boundaries, the result may be in an incorrect - timezone (ie. subtract 1 minute from 2002-10-27 1:00 EST and you get - 2002-10-27 0:59 EST instead of the correct 2002-10-27 1:59 EDT). A - ``normalize()`` method is provided to correct this. Unfortunately these - issues cannot be resolved without modifying the Python datetime - implementation (see PEP-431). - - -Installation -~~~~~~~~~~~~ - -This package can either be installed from a .egg file using setuptools, -or from the tarball using the standard Python distutils. - -If you are installing from a tarball, run the following command as an -administrative user:: - - python setup.py install - -If you are installing using setuptools, you don't even need to download -anything as the latest version will be downloaded for you -from the Python package index:: - - easy_install --upgrade pytz - -If you already have the .egg file, you can use that too:: - - easy_install pytz-2008g-py2.6.egg - - -Example & Usage -~~~~~~~~~~~~~~~ - -Localized times and date arithmetic ------------------------------------ - ->>> from datetime import datetime, timedelta ->>> from pytz import timezone ->>> import pytz ->>> utc = pytz.utc ->>> utc.zone -'UTC' ->>> eastern = timezone('US/Eastern') ->>> eastern.zone -'US/Eastern' ->>> amsterdam = timezone('Europe/Amsterdam') ->>> fmt = '%Y-%m-%d %H:%M:%S %Z%z' - -This library only supports two ways of building a localized time. The -first is to use the ``localize()`` method provided by the pytz library. -This is used to localize a naive datetime (datetime with no timezone -information): - ->>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0)) ->>> print(loc_dt.strftime(fmt)) -2002-10-27 06:00:00 EST-0500 - -The second way of building a localized time is by converting an existing -localized time using the standard ``astimezone()`` method: - ->>> ams_dt = loc_dt.astimezone(amsterdam) ->>> ams_dt.strftime(fmt) -'2002-10-27 12:00:00 CET+0100' - -Unfortunately using the tzinfo argument of the standard datetime -constructors ''does not work'' with pytz for many timezones. - ->>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt) -'2002-10-27 12:00:00 LMT+0020' - -It is safe for timezones without daylight saving transitions though, such -as UTC: - ->>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=pytz.utc).strftime(fmt) -'2002-10-27 12:00:00 UTC+0000' - -The preferred way of dealing with times is to always work in UTC, -converting to localtime only when generating output to be read -by humans. - ->>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc) ->>> loc_dt = utc_dt.astimezone(eastern) ->>> loc_dt.strftime(fmt) -'2002-10-27 01:00:00 EST-0500' - -This library also allows you to do date arithmetic using local -times, although it is more complicated than working in UTC as you -need to use the ``normalize()`` method to handle daylight saving time -and other timezone transitions. In this example, ``loc_dt`` is set -to the instant when daylight saving time ends in the US/Eastern -timezone. - ->>> before = loc_dt - timedelta(minutes=10) ->>> before.strftime(fmt) -'2002-10-27 00:50:00 EST-0500' ->>> eastern.normalize(before).strftime(fmt) -'2002-10-27 01:50:00 EDT-0400' ->>> after = eastern.normalize(before + timedelta(minutes=20)) ->>> after.strftime(fmt) -'2002-10-27 01:10:00 EST-0500' - -Creating local times is also tricky, and the reason why working with -local times is not recommended. Unfortunately, you cannot just pass -a ``tzinfo`` argument when constructing a datetime (see the next -section for more details) - ->>> dt = datetime(2002, 10, 27, 1, 30, 0) ->>> dt1 = eastern.localize(dt, is_dst=True) ->>> dt1.strftime(fmt) -'2002-10-27 01:30:00 EDT-0400' ->>> dt2 = eastern.localize(dt, is_dst=False) ->>> dt2.strftime(fmt) -'2002-10-27 01:30:00 EST-0500' - -Converting between timezones is more easily done, using the -standard astimezone method. - ->>> utc_dt = utc.localize(datetime.utcfromtimestamp(1143408899)) ->>> utc_dt.strftime(fmt) -'2006-03-26 21:34:59 UTC+0000' ->>> au_tz = timezone('Australia/Sydney') ->>> au_dt = utc_dt.astimezone(au_tz) ->>> au_dt.strftime(fmt) -'2006-03-27 08:34:59 AEDT+1100' ->>> utc_dt2 = au_dt.astimezone(utc) ->>> utc_dt2.strftime(fmt) -'2006-03-26 21:34:59 UTC+0000' ->>> utc_dt == utc_dt2 -True - -You can take shortcuts when dealing with the UTC side of timezone -conversions. ``normalize()`` and ``localize()`` are not really -necessary when there are no daylight saving time transitions to -deal with. - ->>> utc_dt = datetime.utcfromtimestamp(1143408899).replace(tzinfo=utc) ->>> utc_dt.strftime(fmt) -'2006-03-26 21:34:59 UTC+0000' ->>> au_tz = timezone('Australia/Sydney') ->>> au_dt = au_tz.normalize(utc_dt.astimezone(au_tz)) ->>> au_dt.strftime(fmt) -'2006-03-27 08:34:59 AEDT+1100' ->>> utc_dt2 = au_dt.astimezone(utc) ->>> utc_dt2.strftime(fmt) -'2006-03-26 21:34:59 UTC+0000' - - -``tzinfo`` API --------------- - -The ``tzinfo`` instances returned by the ``timezone()`` function have -been extended to cope with ambiguous times by adding an ``is_dst`` -parameter to the ``utcoffset()``, ``dst()`` && ``tzname()`` methods. - ->>> tz = timezone('America/St_Johns') - ->>> normal = datetime(2009, 9, 1) ->>> ambiguous = datetime(2009, 10, 31, 23, 30) - -The ``is_dst`` parameter is ignored for most timestamps. It is only used -during DST transition ambiguous periods to resolve that ambiguity. - ->>> tz.utcoffset(normal, is_dst=True) -datetime.timedelta(-1, 77400) ->>> tz.dst(normal, is_dst=True) -datetime.timedelta(0, 3600) ->>> tz.tzname(normal, is_dst=True) -'NDT' - ->>> tz.utcoffset(ambiguous, is_dst=True) -datetime.timedelta(-1, 77400) ->>> tz.dst(ambiguous, is_dst=True) -datetime.timedelta(0, 3600) ->>> tz.tzname(ambiguous, is_dst=True) -'NDT' - ->>> tz.utcoffset(normal, is_dst=False) -datetime.timedelta(-1, 77400) ->>> tz.dst(normal, is_dst=False) -datetime.timedelta(0, 3600) ->>> tz.tzname(normal, is_dst=False) -'NDT' - ->>> tz.utcoffset(ambiguous, is_dst=False) -datetime.timedelta(-1, 73800) ->>> tz.dst(ambiguous, is_dst=False) -datetime.timedelta(0) ->>> tz.tzname(ambiguous, is_dst=False) -'NST' - -If ``is_dst`` is not specified, ambiguous timestamps will raise -an ``pytz.exceptions.AmbiguousTimeError`` exception. - ->>> tz.utcoffset(normal) -datetime.timedelta(-1, 77400) ->>> tz.dst(normal) -datetime.timedelta(0, 3600) ->>> tz.tzname(normal) -'NDT' - ->>> import pytz.exceptions ->>> try: -... tz.utcoffset(ambiguous) -... except pytz.exceptions.AmbiguousTimeError: -... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous) -pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00 ->>> try: -... tz.dst(ambiguous) -... except pytz.exceptions.AmbiguousTimeError: -... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous) -pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00 ->>> try: -... tz.tzname(ambiguous) -... except pytz.exceptions.AmbiguousTimeError: -... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous) -pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00 - - -Problems with Localtime -~~~~~~~~~~~~~~~~~~~~~~~ - -The major problem we have to deal with is that certain datetimes -may occur twice in a year. For example, in the US/Eastern timezone -on the last Sunday morning in October, the following sequence -happens: - - - 01:00 EDT occurs - - 1 hour later, instead of 2:00am the clock is turned back 1 hour - and 01:00 happens again (this time 01:00 EST) - -In fact, every instant between 01:00 and 02:00 occurs twice. This means -that if you try and create a time in the 'US/Eastern' timezone -the standard datetime syntax, there is no way to specify if you meant -before of after the end-of-daylight-saving-time transition. Using the -pytz custom syntax, the best you can do is make an educated guess: - ->>> loc_dt = eastern.localize(datetime(2002, 10, 27, 1, 30, 00)) ->>> loc_dt.strftime(fmt) -'2002-10-27 01:30:00 EST-0500' - -As you can see, the system has chosen one for you and there is a 50% -chance of it being out by one hour. For some applications, this does -not matter. However, if you are trying to schedule meetings with people -in different timezones or analyze log files it is not acceptable. - -The best and simplest solution is to stick with using UTC. The pytz -package encourages using UTC for internal timezone representation by -including a special UTC implementation based on the standard Python -reference implementation in the Python documentation. - -The UTC timezone unpickles to be the same instance, and pickles to a -smaller size than other pytz tzinfo instances. The UTC implementation -can be obtained as pytz.utc, pytz.UTC, or pytz.timezone('UTC'). - ->>> import pickle, pytz ->>> dt = datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc) ->>> naive = dt.replace(tzinfo=None) ->>> p = pickle.dumps(dt, 1) ->>> naive_p = pickle.dumps(naive, 1) ->>> len(p) - len(naive_p) -17 ->>> new = pickle.loads(p) ->>> new == dt -True ->>> new is dt -False ->>> new.tzinfo is dt.tzinfo -True ->>> pytz.utc is pytz.UTC is pytz.timezone('UTC') -True - -Note that some other timezones are commonly thought of as the same (GMT, -Greenwich, Universal, etc.). The definition of UTC is distinct from these -other timezones, and they are not equivalent. For this reason, they will -not compare the same in Python. - ->>> utc == pytz.timezone('GMT') -False - -See the section `What is UTC`_, below. - -If you insist on working with local times, this library provides a -facility for constructing them unambiguously: - ->>> loc_dt = datetime(2002, 10, 27, 1, 30, 00) ->>> est_dt = eastern.localize(loc_dt, is_dst=True) ->>> edt_dt = eastern.localize(loc_dt, is_dst=False) ->>> print(est_dt.strftime(fmt) + ' / ' + edt_dt.strftime(fmt)) -2002-10-27 01:30:00 EDT-0400 / 2002-10-27 01:30:00 EST-0500 - -If you pass None as the is_dst flag to localize(), pytz will refuse to -guess and raise exceptions if you try to build ambiguous or non-existent -times. - -For example, 1:30am on 27th Oct 2002 happened twice in the US/Eastern -timezone when the clocks where put back at the end of Daylight Saving -Time: - ->>> dt = datetime(2002, 10, 27, 1, 30, 00) ->>> try: -... eastern.localize(dt, is_dst=None) -... except pytz.exceptions.AmbiguousTimeError: -... print('pytz.exceptions.AmbiguousTimeError: %s' % dt) -pytz.exceptions.AmbiguousTimeError: 2002-10-27 01:30:00 - -Similarly, 2:30am on 7th April 2002 never happened at all in the -US/Eastern timezone, as the clocks where put forward at 2:00am skipping -the entire hour: - ->>> dt = datetime(2002, 4, 7, 2, 30, 00) ->>> try: -... eastern.localize(dt, is_dst=None) -... except pytz.exceptions.NonExistentTimeError: -... print('pytz.exceptions.NonExistentTimeError: %s' % dt) -pytz.exceptions.NonExistentTimeError: 2002-04-07 02:30:00 - -Both of these exceptions share a common base class to make error handling -easier: - ->>> isinstance(pytz.AmbiguousTimeError(), pytz.InvalidTimeError) -True ->>> isinstance(pytz.NonExistentTimeError(), pytz.InvalidTimeError) -True - - -A special case is where countries change their timezone definitions -with no daylight savings time switch. For example, in 1915 Warsaw -switched from Warsaw time to Central European time with no daylight savings -transition. So at the stroke of midnight on August 5th 1915 the clocks -were wound back 24 minutes creating an ambiguous time period that cannot -be specified without referring to the timezone abbreviation or the -actual UTC offset. In this case midnight happened twice, neither time -during a daylight saving time period. pytz handles this transition by -treating the ambiguous period before the switch as daylight savings -time, and the ambiguous period after as standard time. - - ->>> warsaw = pytz.timezone('Europe/Warsaw') ->>> amb_dt1 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=True) ->>> amb_dt1.strftime(fmt) -'1915-08-04 23:59:59 WMT+0124' ->>> amb_dt2 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=False) ->>> amb_dt2.strftime(fmt) -'1915-08-04 23:59:59 CET+0100' ->>> switch_dt = warsaw.localize(datetime(1915, 8, 5, 00, 00, 00), is_dst=False) ->>> switch_dt.strftime(fmt) -'1915-08-05 00:00:00 CET+0100' ->>> str(switch_dt - amb_dt1) -'0:24:01' ->>> str(switch_dt - amb_dt2) -'0:00:01' - -The best way of creating a time during an ambiguous time period is -by converting from another timezone such as UTC: - ->>> utc_dt = datetime(1915, 8, 4, 22, 36, tzinfo=pytz.utc) ->>> utc_dt.astimezone(warsaw).strftime(fmt) -'1915-08-04 23:36:00 CET+0100' - -The standard Python way of handling all these ambiguities is not to -handle them, such as demonstrated in this example using the US/Eastern -timezone definition from the Python documentation (Note that this -implementation only works for dates between 1987 and 2006 - it is -included for tests only!): - ->>> from pytz.reference import Eastern # pytz.reference only for tests ->>> dt = datetime(2002, 10, 27, 0, 30, tzinfo=Eastern) ->>> str(dt) -'2002-10-27 00:30:00-04:00' ->>> str(dt + timedelta(hours=1)) -'2002-10-27 01:30:00-05:00' ->>> str(dt + timedelta(hours=2)) -'2002-10-27 02:30:00-05:00' ->>> str(dt + timedelta(hours=3)) -'2002-10-27 03:30:00-05:00' - -Notice the first two results? At first glance you might think they are -correct, but taking the UTC offset into account you find that they are -actually two hours appart instead of the 1 hour we asked for. - ->>> from pytz.reference import UTC # pytz.reference only for tests ->>> str(dt.astimezone(UTC)) -'2002-10-27 04:30:00+00:00' ->>> str((dt + timedelta(hours=1)).astimezone(UTC)) -'2002-10-27 06:30:00+00:00' - - -Country Information -~~~~~~~~~~~~~~~~~~~ - -A mechanism is provided to access the timezones commonly in use -for a particular country, looked up using the ISO 3166 country code. -It returns a list of strings that can be used to retrieve the relevant -tzinfo instance using ``pytz.timezone()``: - ->>> print(' '.join(pytz.country_timezones['nz'])) -Pacific/Auckland Pacific/Chatham - -The Olson database comes with a ISO 3166 country code to English country -name mapping that pytz exposes as a dictionary: - ->>> print(pytz.country_names['nz']) -New Zealand - - -What is UTC -~~~~~~~~~~~ - -'UTC' is `Coordinated Universal Time`_. It is a successor to, but distinct -from, Greenwich Mean Time (GMT) and the various definitions of Universal -Time. UTC is now the worldwide standard for regulating clocks and time -measurement. - -All other timezones are defined relative to UTC, and include offsets like -UTC+0800 - hours to add or subtract from UTC to derive the local time. No -daylight saving time occurs in UTC, making it a useful timezone to perform -date arithmetic without worrying about the confusion and ambiguities caused -by daylight saving time transitions, your country changing its timezone, or -mobile computers that roam through multiple timezones. - -.. _Coordinated Universal Time: https://en.wikipedia.org/wiki/Coordinated_Universal_Time - - -Helpers -~~~~~~~ - -There are two lists of timezones provided. - -``all_timezones`` is the exhaustive list of the timezone names that can -be used. - ->>> from pytz import all_timezones ->>> len(all_timezones) >= 500 -True ->>> 'Etc/Greenwich' in all_timezones -True - -``common_timezones`` is a list of useful, current timezones. It doesn't -contain deprecated zones or historical zones, except for a few I've -deemed in common usage, such as US/Eastern (open a bug report if you -think other timezones are deserving of being included here). It is also -a sequence of strings. - ->>> from pytz import common_timezones ->>> len(common_timezones) < len(all_timezones) -True ->>> 'Etc/Greenwich' in common_timezones -False ->>> 'Australia/Melbourne' in common_timezones -True ->>> 'US/Eastern' in common_timezones -True ->>> 'Canada/Eastern' in common_timezones -True ->>> 'Australia/Yancowinna' in all_timezones -True ->>> 'Australia/Yancowinna' in common_timezones -False - -Both ``common_timezones`` and ``all_timezones`` are alphabetically -sorted: - ->>> common_timezones_dupe = common_timezones[:] ->>> common_timezones_dupe.sort() ->>> common_timezones == common_timezones_dupe -True ->>> all_timezones_dupe = all_timezones[:] ->>> all_timezones_dupe.sort() ->>> all_timezones == all_timezones_dupe -True - -``all_timezones`` and ``common_timezones`` are also available as sets. - ->>> from pytz import all_timezones_set, common_timezones_set ->>> 'US/Eastern' in all_timezones_set -True ->>> 'US/Eastern' in common_timezones_set -True ->>> 'Australia/Victoria' in common_timezones_set -False - -You can also retrieve lists of timezones used by particular countries -using the ``country_timezones()`` function. It requires an ISO-3166 -two letter country code. - ->>> from pytz import country_timezones ->>> print(' '.join(country_timezones('ch'))) -Europe/Zurich ->>> print(' '.join(country_timezones('CH'))) -Europe/Zurich - - -Internationalization - i18n/l10n -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Pytz is an interface to the IANA database, which uses ASCII names. The `Unicode Consortium's Unicode Locales (CLDR) <http://cldr.unicode.org>`_ -project provides translations. Thomas Khyn's -`l18n <https://pypi.python.org/pypi/l18n>`_ package can be used to access -these translations from Python. - - -License -~~~~~~~ - -MIT license. - -This code is also available as part of Zope 3 under the Zope Public -License, Version 2.1 (ZPL). - -I'm happy to relicense this code if necessary for inclusion in other -open source projects. - - -Latest Versions -~~~~~~~~~~~~~~~ - -This package will be updated after releases of the Olson timezone -database. The latest version can be downloaded from the `Python Package -Index <http://pypi.python.org/pypi/pytz/>`_. The code that is used -to generate this distribution is hosted on launchpad.net and available -using git:: - - git clone https://git.launchpad.net/pytz - -A mirror on github is also available at https://github.com/stub42/pytz - -Announcements of new releases are made on -`Launchpad <https://launchpad.net/pytz>`_, and the -`Atom feed <http://feeds.launchpad.net/pytz/announcements.atom>`_ -hosted there. - - -Bugs, Feature Requests & Patches -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Bugs can be reported using `Launchpad <https://bugs.launchpad.net/pytz>`__. - - -Issues & Limitations -~~~~~~~~~~~~~~~~~~~~ - -- Offsets from UTC are rounded to the nearest whole minute, so timezones - such as Europe/Amsterdam pre 1937 will be up to 30 seconds out. This - is a limitation of the Python datetime library. - -- If you think a timezone definition is incorrect, I probably can't fix - it. pytz is a direct translation of the Olson timezone database, and - changes to the timezone definitions need to be made to this source. - If you find errors they should be reported to the time zone mailing - list, linked from http://www.iana.org/time-zones. - - -Further Reading -~~~~~~~~~~~~~~~ - -More info than you want to know about timezones: -http://www.twinsun.com/tz/tz-link.htm - - -Contact -~~~~~~~ - -Stuart Bishop <stuart@stuartbishop.net> - - - - diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/INSTALLER b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/METADATA b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/METADATA deleted file mode 100644 index 1ab7a867..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/METADATA +++ /dev/null @@ -1,622 +0,0 @@ -Metadata-Version: 2.0 -Name: pytz -Version: 2018.3 -Summary: World timezone definitions, modern and historical -Home-page: http://pythonhosted.org/pytz -Author: Stuart Bishop -Author-email: stuart@stuartbishop.net -License: MIT -Download-URL: http://pypi.python.org/pypi/pytz -Description-Content-Type: UNKNOWN -Keywords: timezone,tzinfo,datetime,olson,time -Platform: Independant -Classifier: Development Status :: 6 - Mature -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Natural Language :: English -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.4 -Classifier: Programming Language :: Python :: 2.5 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.0 -Classifier: Programming Language :: Python :: 3.1 -Classifier: Programming Language :: Python :: 3.2 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Software Development :: Libraries :: Python Modules - -pytz - World Timezone Definitions for Python -============================================ - -:Author: Stuart Bishop <stuart@stuartbishop.net> - -Introduction -~~~~~~~~~~~~ - -pytz brings the Olson tz database into Python. This library allows -accurate and cross platform timezone calculations using Python 2.4 -or higher. It also solves the issue of ambiguous times at the end -of daylight saving time, which you can read more about in the Python -Library Reference (``datetime.tzinfo``). - -Almost all of the Olson timezones are supported. - -.. note:: - - This library differs from the documented Python API for - tzinfo implementations; if you want to create local wallclock - times you need to use the ``localize()`` method documented in this - document. In addition, if you perform date arithmetic on local - times that cross DST boundaries, the result may be in an incorrect - timezone (ie. subtract 1 minute from 2002-10-27 1:00 EST and you get - 2002-10-27 0:59 EST instead of the correct 2002-10-27 1:59 EDT). A - ``normalize()`` method is provided to correct this. Unfortunately these - issues cannot be resolved without modifying the Python datetime - implementation (see PEP-431). - - -Installation -~~~~~~~~~~~~ - -This package can either be installed from a .egg file using setuptools, -or from the tarball using the standard Python distutils. - -If you are installing from a tarball, run the following command as an -administrative user:: - - python setup.py install - -If you are installing using setuptools, you don't even need to download -anything as the latest version will be downloaded for you -from the Python package index:: - - easy_install --upgrade pytz - -If you already have the .egg file, you can use that too:: - - easy_install pytz-2008g-py2.6.egg - - -Example & Usage -~~~~~~~~~~~~~~~ - -Localized times and date arithmetic ------------------------------------ - ->>> from datetime import datetime, timedelta ->>> from pytz import timezone ->>> import pytz ->>> utc = pytz.utc ->>> utc.zone -'UTC' ->>> eastern = timezone('US/Eastern') ->>> eastern.zone -'US/Eastern' ->>> amsterdam = timezone('Europe/Amsterdam') ->>> fmt = '%Y-%m-%d %H:%M:%S %Z%z' - -This library only supports two ways of building a localized time. The -first is to use the ``localize()`` method provided by the pytz library. -This is used to localize a naive datetime (datetime with no timezone -information): - ->>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0)) ->>> print(loc_dt.strftime(fmt)) -2002-10-27 06:00:00 EST-0500 - -The second way of building a localized time is by converting an existing -localized time using the standard ``astimezone()`` method: - ->>> ams_dt = loc_dt.astimezone(amsterdam) ->>> ams_dt.strftime(fmt) -'2002-10-27 12:00:00 CET+0100' - -Unfortunately using the tzinfo argument of the standard datetime -constructors ''does not work'' with pytz for many timezones. - ->>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt) -'2002-10-27 12:00:00 LMT+0020' - -It is safe for timezones without daylight saving transitions though, such -as UTC: - ->>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=pytz.utc).strftime(fmt) -'2002-10-27 12:00:00 UTC+0000' - -The preferred way of dealing with times is to always work in UTC, -converting to localtime only when generating output to be read -by humans. - ->>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc) ->>> loc_dt = utc_dt.astimezone(eastern) ->>> loc_dt.strftime(fmt) -'2002-10-27 01:00:00 EST-0500' - -This library also allows you to do date arithmetic using local -times, although it is more complicated than working in UTC as you -need to use the ``normalize()`` method to handle daylight saving time -and other timezone transitions. In this example, ``loc_dt`` is set -to the instant when daylight saving time ends in the US/Eastern -timezone. - ->>> before = loc_dt - timedelta(minutes=10) ->>> before.strftime(fmt) -'2002-10-27 00:50:00 EST-0500' ->>> eastern.normalize(before).strftime(fmt) -'2002-10-27 01:50:00 EDT-0400' ->>> after = eastern.normalize(before + timedelta(minutes=20)) ->>> after.strftime(fmt) -'2002-10-27 01:10:00 EST-0500' - -Creating local times is also tricky, and the reason why working with -local times is not recommended. Unfortunately, you cannot just pass -a ``tzinfo`` argument when constructing a datetime (see the next -section for more details) - ->>> dt = datetime(2002, 10, 27, 1, 30, 0) ->>> dt1 = eastern.localize(dt, is_dst=True) ->>> dt1.strftime(fmt) -'2002-10-27 01:30:00 EDT-0400' ->>> dt2 = eastern.localize(dt, is_dst=False) ->>> dt2.strftime(fmt) -'2002-10-27 01:30:00 EST-0500' - -Converting between timezones is more easily done, using the -standard astimezone method. - ->>> utc_dt = utc.localize(datetime.utcfromtimestamp(1143408899)) ->>> utc_dt.strftime(fmt) -'2006-03-26 21:34:59 UTC+0000' ->>> au_tz = timezone('Australia/Sydney') ->>> au_dt = utc_dt.astimezone(au_tz) ->>> au_dt.strftime(fmt) -'2006-03-27 08:34:59 AEDT+1100' ->>> utc_dt2 = au_dt.astimezone(utc) ->>> utc_dt2.strftime(fmt) -'2006-03-26 21:34:59 UTC+0000' ->>> utc_dt == utc_dt2 -True - -You can take shortcuts when dealing with the UTC side of timezone -conversions. ``normalize()`` and ``localize()`` are not really -necessary when there are no daylight saving time transitions to -deal with. - ->>> utc_dt = datetime.utcfromtimestamp(1143408899).replace(tzinfo=utc) ->>> utc_dt.strftime(fmt) -'2006-03-26 21:34:59 UTC+0000' ->>> au_tz = timezone('Australia/Sydney') ->>> au_dt = au_tz.normalize(utc_dt.astimezone(au_tz)) ->>> au_dt.strftime(fmt) -'2006-03-27 08:34:59 AEDT+1100' ->>> utc_dt2 = au_dt.astimezone(utc) ->>> utc_dt2.strftime(fmt) -'2006-03-26 21:34:59 UTC+0000' - - -``tzinfo`` API --------------- - -The ``tzinfo`` instances returned by the ``timezone()`` function have -been extended to cope with ambiguous times by adding an ``is_dst`` -parameter to the ``utcoffset()``, ``dst()`` && ``tzname()`` methods. - ->>> tz = timezone('America/St_Johns') - ->>> normal = datetime(2009, 9, 1) ->>> ambiguous = datetime(2009, 10, 31, 23, 30) - -The ``is_dst`` parameter is ignored for most timestamps. It is only used -during DST transition ambiguous periods to resolve that ambiguity. - ->>> tz.utcoffset(normal, is_dst=True) -datetime.timedelta(-1, 77400) ->>> tz.dst(normal, is_dst=True) -datetime.timedelta(0, 3600) ->>> tz.tzname(normal, is_dst=True) -'NDT' - ->>> tz.utcoffset(ambiguous, is_dst=True) -datetime.timedelta(-1, 77400) ->>> tz.dst(ambiguous, is_dst=True) -datetime.timedelta(0, 3600) ->>> tz.tzname(ambiguous, is_dst=True) -'NDT' - ->>> tz.utcoffset(normal, is_dst=False) -datetime.timedelta(-1, 77400) ->>> tz.dst(normal, is_dst=False) -datetime.timedelta(0, 3600) ->>> tz.tzname(normal, is_dst=False) -'NDT' - ->>> tz.utcoffset(ambiguous, is_dst=False) -datetime.timedelta(-1, 73800) ->>> tz.dst(ambiguous, is_dst=False) -datetime.timedelta(0) ->>> tz.tzname(ambiguous, is_dst=False) -'NST' - -If ``is_dst`` is not specified, ambiguous timestamps will raise -an ``pytz.exceptions.AmbiguousTimeError`` exception. - ->>> tz.utcoffset(normal) -datetime.timedelta(-1, 77400) ->>> tz.dst(normal) -datetime.timedelta(0, 3600) ->>> tz.tzname(normal) -'NDT' - ->>> import pytz.exceptions ->>> try: -... tz.utcoffset(ambiguous) -... except pytz.exceptions.AmbiguousTimeError: -... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous) -pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00 ->>> try: -... tz.dst(ambiguous) -... except pytz.exceptions.AmbiguousTimeError: -... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous) -pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00 ->>> try: -... tz.tzname(ambiguous) -... except pytz.exceptions.AmbiguousTimeError: -... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous) -pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00 - - -Problems with Localtime -~~~~~~~~~~~~~~~~~~~~~~~ - -The major problem we have to deal with is that certain datetimes -may occur twice in a year. For example, in the US/Eastern timezone -on the last Sunday morning in October, the following sequence -happens: - - - 01:00 EDT occurs - - 1 hour later, instead of 2:00am the clock is turned back 1 hour - and 01:00 happens again (this time 01:00 EST) - -In fact, every instant between 01:00 and 02:00 occurs twice. This means -that if you try and create a time in the 'US/Eastern' timezone -the standard datetime syntax, there is no way to specify if you meant -before of after the end-of-daylight-saving-time transition. Using the -pytz custom syntax, the best you can do is make an educated guess: - ->>> loc_dt = eastern.localize(datetime(2002, 10, 27, 1, 30, 00)) ->>> loc_dt.strftime(fmt) -'2002-10-27 01:30:00 EST-0500' - -As you can see, the system has chosen one for you and there is a 50% -chance of it being out by one hour. For some applications, this does -not matter. However, if you are trying to schedule meetings with people -in different timezones or analyze log files it is not acceptable. - -The best and simplest solution is to stick with using UTC. The pytz -package encourages using UTC for internal timezone representation by -including a special UTC implementation based on the standard Python -reference implementation in the Python documentation. - -The UTC timezone unpickles to be the same instance, and pickles to a -smaller size than other pytz tzinfo instances. The UTC implementation -can be obtained as pytz.utc, pytz.UTC, or pytz.timezone('UTC'). - ->>> import pickle, pytz ->>> dt = datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc) ->>> naive = dt.replace(tzinfo=None) ->>> p = pickle.dumps(dt, 1) ->>> naive_p = pickle.dumps(naive, 1) ->>> len(p) - len(naive_p) -17 ->>> new = pickle.loads(p) ->>> new == dt -True ->>> new is dt -False ->>> new.tzinfo is dt.tzinfo -True ->>> pytz.utc is pytz.UTC is pytz.timezone('UTC') -True - -Note that some other timezones are commonly thought of as the same (GMT, -Greenwich, Universal, etc.). The definition of UTC is distinct from these -other timezones, and they are not equivalent. For this reason, they will -not compare the same in Python. - ->>> utc == pytz.timezone('GMT') -False - -See the section `What is UTC`_, below. - -If you insist on working with local times, this library provides a -facility for constructing them unambiguously: - ->>> loc_dt = datetime(2002, 10, 27, 1, 30, 00) ->>> est_dt = eastern.localize(loc_dt, is_dst=True) ->>> edt_dt = eastern.localize(loc_dt, is_dst=False) ->>> print(est_dt.strftime(fmt) + ' / ' + edt_dt.strftime(fmt)) -2002-10-27 01:30:00 EDT-0400 / 2002-10-27 01:30:00 EST-0500 - -If you pass None as the is_dst flag to localize(), pytz will refuse to -guess and raise exceptions if you try to build ambiguous or non-existent -times. - -For example, 1:30am on 27th Oct 2002 happened twice in the US/Eastern -timezone when the clocks where put back at the end of Daylight Saving -Time: - ->>> dt = datetime(2002, 10, 27, 1, 30, 00) ->>> try: -... eastern.localize(dt, is_dst=None) -... except pytz.exceptions.AmbiguousTimeError: -... print('pytz.exceptions.AmbiguousTimeError: %s' % dt) -pytz.exceptions.AmbiguousTimeError: 2002-10-27 01:30:00 - -Similarly, 2:30am on 7th April 2002 never happened at all in the -US/Eastern timezone, as the clocks where put forward at 2:00am skipping -the entire hour: - ->>> dt = datetime(2002, 4, 7, 2, 30, 00) ->>> try: -... eastern.localize(dt, is_dst=None) -... except pytz.exceptions.NonExistentTimeError: -... print('pytz.exceptions.NonExistentTimeError: %s' % dt) -pytz.exceptions.NonExistentTimeError: 2002-04-07 02:30:00 - -Both of these exceptions share a common base class to make error handling -easier: - ->>> isinstance(pytz.AmbiguousTimeError(), pytz.InvalidTimeError) -True ->>> isinstance(pytz.NonExistentTimeError(), pytz.InvalidTimeError) -True - - -A special case is where countries change their timezone definitions -with no daylight savings time switch. For example, in 1915 Warsaw -switched from Warsaw time to Central European time with no daylight savings -transition. So at the stroke of midnight on August 5th 1915 the clocks -were wound back 24 minutes creating an ambiguous time period that cannot -be specified without referring to the timezone abbreviation or the -actual UTC offset. In this case midnight happened twice, neither time -during a daylight saving time period. pytz handles this transition by -treating the ambiguous period before the switch as daylight savings -time, and the ambiguous period after as standard time. - - ->>> warsaw = pytz.timezone('Europe/Warsaw') ->>> amb_dt1 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=True) ->>> amb_dt1.strftime(fmt) -'1915-08-04 23:59:59 WMT+0124' ->>> amb_dt2 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=False) ->>> amb_dt2.strftime(fmt) -'1915-08-04 23:59:59 CET+0100' ->>> switch_dt = warsaw.localize(datetime(1915, 8, 5, 00, 00, 00), is_dst=False) ->>> switch_dt.strftime(fmt) -'1915-08-05 00:00:00 CET+0100' ->>> str(switch_dt - amb_dt1) -'0:24:01' ->>> str(switch_dt - amb_dt2) -'0:00:01' - -The best way of creating a time during an ambiguous time period is -by converting from another timezone such as UTC: - ->>> utc_dt = datetime(1915, 8, 4, 22, 36, tzinfo=pytz.utc) ->>> utc_dt.astimezone(warsaw).strftime(fmt) -'1915-08-04 23:36:00 CET+0100' - -The standard Python way of handling all these ambiguities is not to -handle them, such as demonstrated in this example using the US/Eastern -timezone definition from the Python documentation (Note that this -implementation only works for dates between 1987 and 2006 - it is -included for tests only!): - ->>> from pytz.reference import Eastern # pytz.reference only for tests ->>> dt = datetime(2002, 10, 27, 0, 30, tzinfo=Eastern) ->>> str(dt) -'2002-10-27 00:30:00-04:00' ->>> str(dt + timedelta(hours=1)) -'2002-10-27 01:30:00-05:00' ->>> str(dt + timedelta(hours=2)) -'2002-10-27 02:30:00-05:00' ->>> str(dt + timedelta(hours=3)) -'2002-10-27 03:30:00-05:00' - -Notice the first two results? At first glance you might think they are -correct, but taking the UTC offset into account you find that they are -actually two hours appart instead of the 1 hour we asked for. - ->>> from pytz.reference import UTC # pytz.reference only for tests ->>> str(dt.astimezone(UTC)) -'2002-10-27 04:30:00+00:00' ->>> str((dt + timedelta(hours=1)).astimezone(UTC)) -'2002-10-27 06:30:00+00:00' - - -Country Information -~~~~~~~~~~~~~~~~~~~ - -A mechanism is provided to access the timezones commonly in use -for a particular country, looked up using the ISO 3166 country code. -It returns a list of strings that can be used to retrieve the relevant -tzinfo instance using ``pytz.timezone()``: - ->>> print(' '.join(pytz.country_timezones['nz'])) -Pacific/Auckland Pacific/Chatham - -The Olson database comes with a ISO 3166 country code to English country -name mapping that pytz exposes as a dictionary: - ->>> print(pytz.country_names['nz']) -New Zealand - - -What is UTC -~~~~~~~~~~~ - -'UTC' is `Coordinated Universal Time`_. It is a successor to, but distinct -from, Greenwich Mean Time (GMT) and the various definitions of Universal -Time. UTC is now the worldwide standard for regulating clocks and time -measurement. - -All other timezones are defined relative to UTC, and include offsets like -UTC+0800 - hours to add or subtract from UTC to derive the local time. No -daylight saving time occurs in UTC, making it a useful timezone to perform -date arithmetic without worrying about the confusion and ambiguities caused -by daylight saving time transitions, your country changing its timezone, or -mobile computers that roam through multiple timezones. - -.. _Coordinated Universal Time: https://en.wikipedia.org/wiki/Coordinated_Universal_Time - - -Helpers -~~~~~~~ - -There are two lists of timezones provided. - -``all_timezones`` is the exhaustive list of the timezone names that can -be used. - ->>> from pytz import all_timezones ->>> len(all_timezones) >= 500 -True ->>> 'Etc/Greenwich' in all_timezones -True - -``common_timezones`` is a list of useful, current timezones. It doesn't -contain deprecated zones or historical zones, except for a few I've -deemed in common usage, such as US/Eastern (open a bug report if you -think other timezones are deserving of being included here). It is also -a sequence of strings. - ->>> from pytz import common_timezones ->>> len(common_timezones) < len(all_timezones) -True ->>> 'Etc/Greenwich' in common_timezones -False ->>> 'Australia/Melbourne' in common_timezones -True ->>> 'US/Eastern' in common_timezones -True ->>> 'Canada/Eastern' in common_timezones -True ->>> 'Australia/Yancowinna' in all_timezones -True ->>> 'Australia/Yancowinna' in common_timezones -False - -Both ``common_timezones`` and ``all_timezones`` are alphabetically -sorted: - ->>> common_timezones_dupe = common_timezones[:] ->>> common_timezones_dupe.sort() ->>> common_timezones == common_timezones_dupe -True ->>> all_timezones_dupe = all_timezones[:] ->>> all_timezones_dupe.sort() ->>> all_timezones == all_timezones_dupe -True - -``all_timezones`` and ``common_timezones`` are also available as sets. - ->>> from pytz import all_timezones_set, common_timezones_set ->>> 'US/Eastern' in all_timezones_set -True ->>> 'US/Eastern' in common_timezones_set -True ->>> 'Australia/Victoria' in common_timezones_set -False - -You can also retrieve lists of timezones used by particular countries -using the ``country_timezones()`` function. It requires an ISO-3166 -two letter country code. - ->>> from pytz import country_timezones ->>> print(' '.join(country_timezones('ch'))) -Europe/Zurich ->>> print(' '.join(country_timezones('CH'))) -Europe/Zurich - - -Internationalization - i18n/l10n -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Pytz is an interface to the IANA database, which uses ASCII names. The `Unicode Consortium's Unicode Locales (CLDR) <http://cldr.unicode.org>`_ -project provides translations. Thomas Khyn's -`l18n <https://pypi.python.org/pypi/l18n>`_ package can be used to access -these translations from Python. - - -License -~~~~~~~ - -MIT license. - -This code is also available as part of Zope 3 under the Zope Public -License, Version 2.1 (ZPL). - -I'm happy to relicense this code if necessary for inclusion in other -open source projects. - - -Latest Versions -~~~~~~~~~~~~~~~ - -This package will be updated after releases of the Olson timezone -database. The latest version can be downloaded from the `Python Package -Index <http://pypi.python.org/pypi/pytz/>`_. The code that is used -to generate this distribution is hosted on launchpad.net and available -using git:: - - git clone https://git.launchpad.net/pytz - -A mirror on github is also available at https://github.com/stub42/pytz - -Announcements of new releases are made on -`Launchpad <https://launchpad.net/pytz>`_, and the -`Atom feed <http://feeds.launchpad.net/pytz/announcements.atom>`_ -hosted there. - - -Bugs, Feature Requests & Patches -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Bugs can be reported using `Launchpad <https://bugs.launchpad.net/pytz>`__. - - -Issues & Limitations -~~~~~~~~~~~~~~~~~~~~ - -- Offsets from UTC are rounded to the nearest whole minute, so timezones - such as Europe/Amsterdam pre 1937 will be up to 30 seconds out. This - is a limitation of the Python datetime library. - -- If you think a timezone definition is incorrect, I probably can't fix - it. pytz is a direct translation of the Olson timezone database, and - changes to the timezone definitions need to be made to this source. - If you find errors they should be reported to the time zone mailing - list, linked from http://www.iana.org/time-zones. - - -Further Reading -~~~~~~~~~~~~~~~ - -More info than you want to know about timezones: -http://www.twinsun.com/tz/tz-link.htm - - -Contact -~~~~~~~ - -Stuart Bishop <stuart@stuartbishop.net> - - - - diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/RECORD b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/RECORD deleted file mode 100644 index 61e79675..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/RECORD +++ /dev/null @@ -1,618 +0,0 @@ -pytz/__init__.py,sha256=HLT2xAEuJnK1FFTsEt6mINvFdtbDY57pp3gJaXzXH98,34206 -pytz/exceptions.py,sha256=_GCDPHpBk2r-CQIg3Kcyw8RCsLm2teJdnzT85bl5VsM,1329 -pytz/lazy.py,sha256=FVP_l131SClnqW_mrL_XCCGWhwZbK4q6sUKSJrhU-I4,5264 -pytz/reference.py,sha256=zUtCki7JFEmrzrjNsfMD7YL0lWDxynKc1Ubo4iXSs74,3778 -pytz/tzfile.py,sha256=g2CMhXZ1PX2slgg5_Kk9TvmIkVKeOjbuONHEfZP6jMk,4745 -pytz/tzinfo.py,sha256=SfaVN7gM9YbpXRY_fwaZN_afF_ToCWG9lzNoDhwoCOs,19343 -pytz/zoneinfo/CET,sha256=PAApBF9vgLxahPG7jtNiMEVHWcVFeOuajBldFPRCITw,2102 -pytz/zoneinfo/CST6CDT,sha256=ROi1aeYAJ2R_mAGjPQtDvgEGptP2zQWWd-DtZcm4uDE,2294 -pytz/zoneinfo/Cuba,sha256=eHH4daiBn0FcKSUZ2xWQVWoNwabOaRv0969V5nFvuJQ,2437 -pytz/zoneinfo/EET,sha256=C_bSZpq0XBOhyb5Hw1GXL-tnF3C5CmHZ0xP8YLchsrQ,1876 -pytz/zoneinfo/EST,sha256=yedfESpJj_ADRFUcPFxKYr0V1cIY7pUfQ2OrIYxdiOs,127 -pytz/zoneinfo/EST5EDT,sha256=ec4n4DonUgkeiknMfnzMmsIC1sUt1dIkVx_oImL77sg,2294 -pytz/zoneinfo/Egypt,sha256=J5u-H6YtpnOHxjWTtgu2VSUu9cjxic9DRpCHdArytPw,1972 -pytz/zoneinfo/Eire,sha256=_xmXLVYbO2qb2w7Gmj7TtZylzNGxSSnim_htdXJV7sI,3543 -pytz/zoneinfo/Factory,sha256=RsnkmUKmJyK5vxc3_LgTDdFgk4-qfANYYu8CY3w3qh0,148 -pytz/zoneinfo/GB,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687 -pytz/zoneinfo/GB-Eire,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687 -pytz/zoneinfo/GMT,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127 -pytz/zoneinfo/GMT+0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127 -pytz/zoneinfo/GMT-0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127 -pytz/zoneinfo/GMT0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127 -pytz/zoneinfo/Greenwich,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127 -pytz/zoneinfo/HST,sha256=RASL999hvc9FlywTQmsDnw002AlH1gomAxg7O2vkAn8,128 -pytz/zoneinfo/Hongkong,sha256=l4b75K2bgg9hpWZLO4XdYBqm6RUsk_9OFL1U7_348dU,1189 -pytz/zoneinfo/Iceland,sha256=nNzqaqHu2CdtP2Yg4MD_rpz8w3IsRD6mujkUeXXq-qM,1188 -pytz/zoneinfo/Iran,sha256=53RfdtZdlFhrpyM-e_9UkRiHSA-l4j8cU_5eV0P0seM,1718 -pytz/zoneinfo/Israel,sha256=YAGe4NHetuaZShpclRhh4dufmSpcAn-8TjYX-ULAIc8,2265 -pytz/zoneinfo/Jamaica,sha256=4HgRkHt_dzDZ_cphNjf-99hZrJ_h1GuKfaKAEBeFByU,507 -pytz/zoneinfo/Japan,sha256=TVmM6j_lW0SvvZxvYD90iWDkqYBuHqHof8Lyu5ghQ3c,318 -pytz/zoneinfo/Kwajalein,sha256=CQLqlpOXlUrsuxL6X5HToAlr1EO7rqNqlu5Lk9lXuiU,259 -pytz/zoneinfo/Libya,sha256=j_U_cHKGP7VvHnEzk5K23n5QZ176QzO54DK2d8nJpSc,655 -pytz/zoneinfo/MET,sha256=H_8zGkQU6YCX0zvsGpu_KhVdmRtXrNG7TBH4VZ-05RQ,2102 -pytz/zoneinfo/MST,sha256=-PthAFYIe7PKjs9c3LUwXBZStkn95RL2BrnuGzVW-54,127 -pytz/zoneinfo/MST7MDT,sha256=hUUtAxUmYhF46bJMka9pt-zDDfRwNmaTeJVhNcTnNdA,2294 -pytz/zoneinfo/NZ,sha256=17UXU4eseOKfe5Ah5BFRJ1a-KD7T0YGZQu9dRezzOOQ,2460 -pytz/zoneinfo/NZ-CHAT,sha256=WAGfL6op3H23CBKTIwpyh2kFTdfA0PqelujEKZ5xMU0,2087 -pytz/zoneinfo/Navajo,sha256=9N88x0x50HCiWnkndE06QioF2GKpojShIQXFyWTvsi0,2453 -pytz/zoneinfo/PRC,sha256=lTYiu9frnrqMO56M1dXsmM6moIWp3rHEPknoiaFU00Q,414 -pytz/zoneinfo/PST8PDT,sha256=TY5pvUPo1x8PWOEVWTgU1owaaqRBJVsXs-mpKp1u_EY,2294 -pytz/zoneinfo/Poland,sha256=aOdJPBygUOQTQGKnSqSk_DIVnAQrTJ2NQMi_ydJzxfo,2705 -pytz/zoneinfo/Portugal,sha256=BlJ3y2OSp8XCHaZKgYRl63gGRbljlax12oqWfPXX4m8,3453 -pytz/zoneinfo/ROC,sha256=Jc_QK8hHvcsR5YZEW6iGp2MV8fm-hvfnSUSm6OhkRUM,790 -pytz/zoneinfo/ROK,sha256=It6UZCqXimr0Y9sXXp-ToykuioGnSouSmJvCF0N57dY,531 -pytz/zoneinfo/Singapore,sha256=5pKf3kP_xIu6xAgbMbv3_UJkOzwm-t8yK96t6yPPx0g,424 -pytz/zoneinfo/Turkey,sha256=ldOJ2-YltB_ZTylyeN94QXWsuqtz3jhrzcJAcT43kVI,2166 -pytz/zoneinfo/UCT,sha256=s7dihjysJWmqM_faGSWEr9mWXO63Jj_tSth8GzXkx9g,127 -pytz/zoneinfo/UTC,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127 -pytz/zoneinfo/Universal,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127 -pytz/zoneinfo/W-SU,sha256=AtVVFtD51JeZgmC08Smu5Zhnt3qSC6LKDFixXshYjno,1544 -pytz/zoneinfo/WET,sha256=5efEYxKV5_FwheNTD5n8KYTMfkvbmgfbdwLejBjCqrE,1873 -pytz/zoneinfo/Zulu,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127 -pytz/zoneinfo/iso3166.tab,sha256=_ovReSwOfsa0JQfFijukM-vdrb9MMDHqym2pxB3vN9I,4445 -pytz/zoneinfo/leapseconds,sha256=_UTC3ZyD4sru4wvZDMAfpTjmvCbbdW4W14aSxDcLAgU,2196 -pytz/zoneinfo/posixrules,sha256=X6bczDAzUuEZXENIsYnzCFAU2KVqGXbI6KMr1P7baf0,3545 -pytz/zoneinfo/tzdata.zi,sha256=yzfNkSZ0FyPOYf26_uitFI9elj0sd7RxkAWWVPwj0dk,106443 -pytz/zoneinfo/zone.tab,sha256=ZGAZs-SsBpbFQjbi2U6h4_HjFzyhQPL4TE8hu8KvF3o,19161 -pytz/zoneinfo/zone1970.tab,sha256=LQZHiivjxhuGqRgOYLNyAbN9xYTan0Lv5lbffXa1zbU,17777 -pytz/zoneinfo/Africa/Abidjan,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Africa/Accra,sha256=6gqJ7DwlM5D3RhB8PqaTkicNjfDcLSrtbyP0z_hSv5E,842 -pytz/zoneinfo/Africa/Addis_Ababa,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Africa/Algiers,sha256=13fo7sueviaWkjSdqmtFskY-SjwtEHzNE5tiBsT6c8w,760 -pytz/zoneinfo/Africa/Asmara,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Africa/Asmera,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Africa/Bamako,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Africa/Bangui,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171 -pytz/zoneinfo/Africa/Banjul,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Africa/Bissau,sha256=lhNGThw-Sqv7WxXQvC6V8hK6Nw3XQYJBQnWMgyl39ss,208 -pytz/zoneinfo/Africa/Blantyre,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171 -pytz/zoneinfo/Africa/Brazzaville,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171 -pytz/zoneinfo/Africa/Bujumbura,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171 -pytz/zoneinfo/Africa/Cairo,sha256=J5u-H6YtpnOHxjWTtgu2VSUu9cjxic9DRpCHdArytPw,1972 -pytz/zoneinfo/Africa/Casablanca,sha256=es_hVvjPnP-Xq4-b5rgHkFiY0nZMtd9nFDRCDRfobWM,1643 -pytz/zoneinfo/Africa/Ceuta,sha256=OH0sNUEX_ioi9vO0KeQZOjMdPpPXAHpVxQs7nu3uY94,2059 -pytz/zoneinfo/Africa/Conakry,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Africa/Dakar,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Africa/Dar_es_Salaam,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Africa/Djibouti,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Africa/Douala,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171 -pytz/zoneinfo/Africa/El_Aaiun,sha256=y9Km_PfK3OXHdW4-AawIfk2KoAJcgxWbLwId-cAHdxI,1473 -pytz/zoneinfo/Africa/Freetown,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Africa/Gaborone,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171 -pytz/zoneinfo/Africa/Harare,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171 -pytz/zoneinfo/Africa/Johannesburg,sha256=_OxCRwkZBdiKC4aejlx-5rz7p9tsMQFluqlQeLC-Ma8,271 -pytz/zoneinfo/Africa/Juba,sha256=c9mGxwFzx2PpsmLb82cSC8Kk9j8AbB1BLqmtq3fgnaM,683 -pytz/zoneinfo/Africa/Kampala,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Africa/Khartoum,sha256=Ulapb3g4LoLbgK2FkSQMOIb8WPmoP-lFBuOhkvvPL04,713 -pytz/zoneinfo/Africa/Kigali,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171 -pytz/zoneinfo/Africa/Kinshasa,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171 -pytz/zoneinfo/Africa/Lagos,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171 -pytz/zoneinfo/Africa/Libreville,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171 -pytz/zoneinfo/Africa/Lome,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Africa/Luanda,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171 -pytz/zoneinfo/Africa/Lubumbashi,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171 -pytz/zoneinfo/Africa/Lusaka,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171 -pytz/zoneinfo/Africa/Malabo,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171 -pytz/zoneinfo/Africa/Maputo,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171 -pytz/zoneinfo/Africa/Maseru,sha256=_OxCRwkZBdiKC4aejlx-5rz7p9tsMQFluqlQeLC-Ma8,271 -pytz/zoneinfo/Africa/Mbabane,sha256=_OxCRwkZBdiKC4aejlx-5rz7p9tsMQFluqlQeLC-Ma8,271 -pytz/zoneinfo/Africa/Mogadishu,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Africa/Monrovia,sha256=P5ZyyYmDr1lbPGJ0z4E1coyIFaT5yY_7oENwdgnl0SI,233 -pytz/zoneinfo/Africa/Nairobi,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Africa/Ndjamena,sha256=sTkcjt0js_c-C_rPi4eIAcWCBspCNJwwsi_Lfo0T3jo,225 -pytz/zoneinfo/Africa/Niamey,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171 -pytz/zoneinfo/Africa/Nouakchott,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Africa/Ouagadougou,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Africa/Porto-Novo,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171 -pytz/zoneinfo/Africa/Sao_Tome,sha256=Map5E0yFog4RDS-pZlph5CYIni9SDIfVz4ms-hCtV5o,234 -pytz/zoneinfo/Africa/Timbuktu,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Africa/Tripoli,sha256=j_U_cHKGP7VvHnEzk5K23n5QZ176QzO54DK2d8nJpSc,655 -pytz/zoneinfo/Africa/Tunis,sha256=7sw0Q20d2WxJ1rZx7WG8WUVI0oCpZ1N6llOEG1N6mpI,710 -pytz/zoneinfo/Africa/Windhoek,sha256=J_O-sdbHdSbf8RXdse_wDHnm2oR50D5VZpEe7ahH9r0,1030 -pytz/zoneinfo/America/Adak,sha256=xFyU0xZBPI9mav9l7R-Den4tOSJi3jHOWfrC6Woe3IE,2365 -pytz/zoneinfo/America/Anchorage,sha256=9d8Kb3-dQ8u9PnTTOiP-aGCA61WWX12SRrboWbPbnRg,2380 -pytz/zoneinfo/America/Anguilla,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Antigua,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Araguaina,sha256=-3_i0G6O5cXZqKVoyMs377sAhoJPONG8TYUF-WO1lw0,910 -pytz/zoneinfo/America/Aruba,sha256=Aj2HeTLzXYiXcvVh954mbIVBuYTgzivSV3I6r8fYg8E,212 -pytz/zoneinfo/America/Asuncion,sha256=Hin3zcUwQZrTHkr8j8Kt9A2Vd_VeIXSjqCNYoCd4DKI,2077 -pytz/zoneinfo/America/Atikokan,sha256=wwImtHK1B7WjC2lVfVbyT8yOlGcRDk0-wVwsUd5dJFw,345 -pytz/zoneinfo/America/Atka,sha256=xFyU0xZBPI9mav9l7R-Den4tOSJi3jHOWfrC6Woe3IE,2365 -pytz/zoneinfo/America/Bahia,sha256=LhwbXiV54VpiO_03dNtwOkm5N3kOaLRKa5mjCMbsumY,1050 -pytz/zoneinfo/America/Bahia_Banderas,sha256=nQ4Nn2FoY1pfmFUKFw1COFT_W2Ys4Nh0w8uncZm_HL0,1588 -pytz/zoneinfo/America/Barbados,sha256=mxp4V6Aa4qOumlHgtAz77ZG6xGhXntPAi1RGYna7sfo,344 -pytz/zoneinfo/America/Belem,sha256=hHSfYHXeWdxivWk0MZSAbP1VJkG5Eqb46WyDyZkUoYc,602 -pytz/zoneinfo/America/Belize,sha256=605XqMZX0MJT704KWvEYySjm5YdVZAgacUVjrd_Usxo,978 -pytz/zoneinfo/America/Blanc-Sablon,sha256=x9ODv7foUzEDD4CRqQVaX0JONnRAfKDHbM4GtaAxb9s,307 -pytz/zoneinfo/America/Boa_Vista,sha256=xXpj8iKAwsRlh0FJVu_I_KrcNu1CJYm0iSncx6tPZoA,658 -pytz/zoneinfo/America/Bogota,sha256=NhHeNPdl8tZewFk-ecZ43jYJJUmJhoDcRjm4xo9xN7o,271 -pytz/zoneinfo/America/Boise,sha256=MzU-8FzN2n3r51fPhl7nvXgDHzjGeXuPv8EfkBD1WhA,2403 -pytz/zoneinfo/America/Buenos_Aires,sha256=hBubypR_Ks2a3Gy1wQFxIE7s7B5G5gQmVPNVyJ3rxD8,1109 -pytz/zoneinfo/America/Cambridge_Bay,sha256=CurtWxBO6ZqxOp9bWnqvf2yaf1m979FdPJlRVRx7X28,2098 -pytz/zoneinfo/America/Campo_Grande,sha256=72crPAY39eZ3MH2idZvCYa-k8H5S_kUZf4WyEfi7k2Q,2016 -pytz/zoneinfo/America/Cancun,sha256=0iMWhz8wl5nG-X_vuKCoiX0N9Os3b4S7C3FgLsJA0E8,816 -pytz/zoneinfo/America/Caracas,sha256=lOjvrojgltbdCr2iZh2CbABPDFh_l3gssvkR7XyULxo,289 -pytz/zoneinfo/America/Catamarca,sha256=6ESo80xxwtBL_axrEekTtfIOqf3bXRRUM9CDEIfxxdY,1109 -pytz/zoneinfo/America/Cayenne,sha256=r43odEf3CTdZpZXMPUA-X6e1H8NSCVnE2lSVb_ushWo,224 -pytz/zoneinfo/America/Cayman,sha256=_E-7oUZToxhvPFtxn3ub99ilgkQBBkz21QggVZLlWp8,203 -pytz/zoneinfo/America/Chicago,sha256=FD8puVcXOkYAgYcjCjgSW9OgOz28ug3B0bhmEzH3FpM,3585 -pytz/zoneinfo/America/Chihuahua,sha256=p9FQ5xbbWxyWuw5QJSuAMG4dnovMK_kKOucHGQbnFRM,1522 -pytz/zoneinfo/America/Coral_Harbour,sha256=wwImtHK1B7WjC2lVfVbyT8yOlGcRDk0-wVwsUd5dJFw,345 -pytz/zoneinfo/America/Cordoba,sha256=JUow-bmwBVg1DQwfQKHZyHOARbt_6I5WyBu7n70WECY,1109 -pytz/zoneinfo/America/Costa_Rica,sha256=Tm_ymnduBTImv1kOvnNIlvkVDWkHTyKhahxxmaFITsU,341 -pytz/zoneinfo/America/Creston,sha256=l7dL7sNxS-UYIZ8kUzzCHt-bU9AfSreSpv4PiJc0Ses,233 -pytz/zoneinfo/America/Cuiaba,sha256=HfZRqJDrg60x5QP6EGl1Vfc1l0rkUBtIc11nzd9fSis,1988 -pytz/zoneinfo/America/Curacao,sha256=Aj2HeTLzXYiXcvVh954mbIVBuYTgzivSV3I6r8fYg8E,212 -pytz/zoneinfo/America/Danmarkshavn,sha256=CH45zW8QtpRLaLHeVXKJ7zN2lGfxspgGuWoWz45Djm4,712 -pytz/zoneinfo/America/Dawson,sha256=LQG0thFN-LDtiqZGVPd3hC8gcpgY8VZqXzQdc-9wk9w,2093 -pytz/zoneinfo/America/Dawson_Creek,sha256=KdAkW8BNrcuxlqO2qBus4WlkURZqdBfVuyqGEPN-xbo,1059 -pytz/zoneinfo/America/Denver,sha256=9N88x0x50HCiWnkndE06QioF2GKpojShIQXFyWTvsi0,2453 -pytz/zoneinfo/America/Detroit,sha256=2QN63tOQ0w4uMPIwIGKtYEJlGyYTkocu93LK1a-u2So,2188 -pytz/zoneinfo/America/Dominica,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Edmonton,sha256=ZnjCP4ZXO2yV5sdIoxeqjOkPaGNrza0Y2wgecJhvtU4,2402 -pytz/zoneinfo/America/Eirunepe,sha256=B3YSePXFiGfGRWJcm4GeoJ5HA9dlZOIxl55I1tLgiBo,690 -pytz/zoneinfo/America/El_Salvador,sha256=YyFbIToxUFv9VF_VKxEhTLYU8T8PVZEfQU7bRChuf4o,250 -pytz/zoneinfo/America/Ensenada,sha256=2Ce5W0-ha4xW2aFjY0HJESZX5WeuhLN6m_yhM64xurs,2356 -pytz/zoneinfo/America/Fort_Nelson,sha256=586aAc3TE9IDUhEkMDQcJi4bkBgt5JD8lcEy2qwRjOc,2249 -pytz/zoneinfo/America/Fort_Wayne,sha256=VcLz_rJB-IQ16YduduLGnd_Q39NqJztVH_SA4s-tmf4,1675 -pytz/zoneinfo/America/Fortaleza,sha256=yjzWzdTsX5RXQs1yqR5Tl1bgrS6sPfpir8ITlwYe6pk,742 -pytz/zoneinfo/America/Glace_Bay,sha256=5q8k47nxJAq7hhj6wybuOh7MzSXS-kk2sqKLCwiA5VA,2206 -pytz/zoneinfo/America/Godthab,sha256=NWzS1OdMlYYit3OFrgUJteqH5pHyEgcjD2_h-mfiIK8,1892 -pytz/zoneinfo/America/Goose_Bay,sha256=8MBsahhBzcN7-zEcEcq6HJdNDWwnclwEtpZX58oRKkk,3219 -pytz/zoneinfo/America/Grand_Turk,sha256=h1R2sPXBY_cCe7LMDJsqKCSKfaAqML9B_yPcmaTM3F4,1881 -pytz/zoneinfo/America/Grenada,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Guadeloupe,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Guatemala,sha256=eVzCXl_-glqLPYbu2YrV-bufbRUt8rYk8OKmOxfw7kM,306 -pytz/zoneinfo/America/Guayaquil,sha256=b1LAz_MhANeX5kAyxM4Z-lqUt1t2ePG-s8DLVJzcAPc,271 -pytz/zoneinfo/America/Guyana,sha256=_6TbnvnIopAjVd5Zs2k6o9q9IeegYFR3K_zXVJAuk0I,266 -pytz/zoneinfo/America/Halifax,sha256=Yn4YIYxvPD9EbElwq-gWRnLip7qUvPhBseBq9QiblOo,3438 -pytz/zoneinfo/America/Havana,sha256=eHH4daiBn0FcKSUZ2xWQVWoNwabOaRv0969V5nFvuJQ,2437 -pytz/zoneinfo/America/Hermosillo,sha256=7G6yHQaPHKjoCp6CUgatG1oEseirst2YHGyQt2hriCA,454 -pytz/zoneinfo/America/Indianapolis,sha256=VcLz_rJB-IQ16YduduLGnd_Q39NqJztVH_SA4s-tmf4,1675 -pytz/zoneinfo/America/Inuvik,sha256=6mTLwL-Sz4jIkXIi8R24g49C4tQTYM2Bu5P2aaK8aFs,1928 -pytz/zoneinfo/America/Iqaluit,sha256=64eXJQuL2MPQmJO08mH_sb7dZohpoFHI4sgPbA1jQIw,2046 -pytz/zoneinfo/America/Jamaica,sha256=4HgRkHt_dzDZ_cphNjf-99hZrJ_h1GuKfaKAEBeFByU,507 -pytz/zoneinfo/America/Jujuy,sha256=Iz9D-JWwjyHNKJGPvbnCKJJRHAmWrGIS4BnD6GaspFU,1081 -pytz/zoneinfo/America/Juneau,sha256=gYWRPuaPfscs2Y787mjRtr0MME4wOi3GE7Bs2X5jM8g,2362 -pytz/zoneinfo/America/Knox_IN,sha256=nnXdbFLFM5yOKxlf-KxqchLixehLK-MCPMNVlywg2FY,2437 -pytz/zoneinfo/America/Kralendijk,sha256=Aj2HeTLzXYiXcvVh954mbIVBuYTgzivSV3I6r8fYg8E,212 -pytz/zoneinfo/America/La_Paz,sha256=HxCwE66oWtVcOz9l1o-gm7pKvn-1MRAYaYgj8KuQmog,257 -pytz/zoneinfo/America/Lima,sha256=X1FNUkWrud58Nfq-1MTMhvbAJ1SM0b4EzISxIoeOGtM,431 -pytz/zoneinfo/America/Los_Angeles,sha256=_qnWb_ZSLmnSIHPcToQXm3ysLjcrOY3C-v39thqesuE,2845 -pytz/zoneinfo/America/Louisville,sha256=d5xqbFZndPlPdU2tiTbqf39q-wKO2cdrdNjzdTVUOe4,2781 -pytz/zoneinfo/America/Lower_Princes,sha256=Aj2HeTLzXYiXcvVh954mbIVBuYTgzivSV3I6r8fYg8E,212 -pytz/zoneinfo/America/Maceio,sha256=MkHOjfAASgy12y6zgAo9_ncMwdJNFE_uJ4YsTddACEA,770 -pytz/zoneinfo/America/Managua,sha256=o8HwC8h57oTmI9JSUvH7j_2M9DzZyLi_Era17agEVoM,463 -pytz/zoneinfo/America/Manaus,sha256=4SE-e5fPpYC0-ccow0_6ZKarJ3sGtViJOymcINNSjmw,630 -pytz/zoneinfo/America/Marigot,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Martinique,sha256=4IfD5K4gI0oIZnrc9qtM0Dqzru5-A1J48nHdsLZc__I,257 -pytz/zoneinfo/America/Matamoros,sha256=Q5jYMd9L_P2br6Iqw1zVXbt9_V8lwThFLorfJ16hFzU,1416 -pytz/zoneinfo/America/Mazatlan,sha256=k0C3GbJQdzJizsYudx0SEQWu0WiDZyPfwwXjC7BM-7E,1564 -pytz/zoneinfo/America/Mendoza,sha256=1Q8kXPHus2UNu91Fcg3caxxeIq7eeYHyC57-LHrGjE0,1109 -pytz/zoneinfo/America/Menominee,sha256=Rs7VgOdINNLGioCmCuBaC3FQFLsrTa1nz5lKwgzirCI,2283 -pytz/zoneinfo/America/Merida,sha256=7Nz0sp97Q5FSuem1WfBNfUunWd2ULC_WhaTuNnmPyNE,1456 -pytz/zoneinfo/America/Metlakatla,sha256=Sa1eT8VJ0NsuLMbc0pNuyxK4WR28OoBv_PhD34JA9qA,1418 -pytz/zoneinfo/America/Mexico_City,sha256=iLw_yxqS7wU-CvSvkFPsvxKFX98Y-FmypU2Cbb-stlU,1618 -pytz/zoneinfo/America/Miquelon,sha256=Ifq8nCyv2O70avkSYEDM7W7yfWSNc9SJUReBQ-a7AGs,1696 -pytz/zoneinfo/America/Moncton,sha256=EwDVqTuzdsvyOokKI-oF-isilIbn631ZWceDQmD7t7c,3163 -pytz/zoneinfo/America/Monterrey,sha256=idrcqFLr9S5EBclYEyJVwl-xlWBNffm4RL9QtIoIZdg,1416 -pytz/zoneinfo/America/Montevideo,sha256=y1QV_QxR8tFy4drYCJCKdvsnYGIcVW-SrcxyDrmyR40,1537 -pytz/zoneinfo/America/Montreal,sha256=hC96ED36ycDCwzycw5KhE9JmrAZMXHSXiDq0G3l84ZQ,3503 -pytz/zoneinfo/America/Montserrat,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Nassau,sha256=TJmdvMbGBFrL7fb9SPW3CyDrjYsL2WEtK-qI3AOqn00,2284 -pytz/zoneinfo/America/New_York,sha256=X6bczDAzUuEZXENIsYnzCFAU2KVqGXbI6KMr1P7baf0,3545 -pytz/zoneinfo/America/Nipigon,sha256=cQDKS_MEQhH_jncNreILaDiA85ZfFG673XLGRKrsfDc,2131 -pytz/zoneinfo/America/Nome,sha256=0xK8eX6xs4TM-6DECCLVCy4KvzfV2qQ90-JV_cdXOwA,2376 -pytz/zoneinfo/America/Noronha,sha256=y06Wj0Fe1T52kQjJ1flxDomHFq90U205twd7BCbzlg0,742 -pytz/zoneinfo/America/Ojinaga,sha256=oH_4_j7jUx-Gavyg95N9hqzsGCb7PqplXVQwDsItxxM,1522 -pytz/zoneinfo/America/Panama,sha256=_E-7oUZToxhvPFtxn3ub99ilgkQBBkz21QggVZLlWp8,203 -pytz/zoneinfo/America/Pangnirtung,sha256=G2pJdlPfkiDDCgIth-wqoTIK-eUbs83Eh1bnLXcKZzg,2108 -pytz/zoneinfo/America/Paramaribo,sha256=VwObMaaLMLoHMZFs_6e5obu1K_dlD3qmIFLomo_J7fY,296 -pytz/zoneinfo/America/Phoenix,sha256=nAE-z4K27R3eI1tfyYP-nSPI1W1hAyP3yUxro817RWQ,353 -pytz/zoneinfo/America/Port-au-Prince,sha256=sLYK0cVXxBWW4PzH_IubOURMeClbFHzuSV4pmFoiXaY,1455 -pytz/zoneinfo/America/Port_of_Spain,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Porto_Acre,sha256=FshszMk8fr_v-uiA5DnOhIBV5CFXiYLVyr74quwV-AI,662 -pytz/zoneinfo/America/Porto_Velho,sha256=Kfjaqo_coJDfcUXmns3JNs0_7azqC3I_XJPaKoyA-XY,602 -pytz/zoneinfo/America/Puerto_Rico,sha256=fu5E4ct6yIX91QQoFcVIvLbKhM_43gB-UrU8C5rVPxk,255 -pytz/zoneinfo/America/Punta_Arenas,sha256=M-JrPIvz3XEAFR08GEKumqjvabFflhqi7uLh3DUIxuU,1911 -pytz/zoneinfo/America/Rainy_River,sha256=mnuN1Mlo3jH-Nf2f4HX62K_BWJIGcRn2OLWu8NIojYM,2131 -pytz/zoneinfo/America/Rankin_Inlet,sha256=s644zPowkevYA3_V4f0nFacgCJMvlFJqFfsap_rnItw,1930 -pytz/zoneinfo/America/Recife,sha256=zrttMMILALxDfU4KjGoMkdsSCjrvLCi8VpYPaCs_www,742 -pytz/zoneinfo/America/Regina,sha256=kp0HRXQHUpY3Ym0J9cqXW08FgB810L-sTjsAJ-_uZ3Y,994 -pytz/zoneinfo/America/Resolute,sha256=xSkUGAdwRyWwWRh7n0WAgPkRtt1DE-dBOdLH2sKHyQE,1930 -pytz/zoneinfo/America/Rio_Branco,sha256=FshszMk8fr_v-uiA5DnOhIBV5CFXiYLVyr74quwV-AI,662 -pytz/zoneinfo/America/Rosario,sha256=JUow-bmwBVg1DQwfQKHZyHOARbt_6I5WyBu7n70WECY,1109 -pytz/zoneinfo/America/Santa_Isabel,sha256=2Ce5W0-ha4xW2aFjY0HJESZX5WeuhLN6m_yhM64xurs,2356 -pytz/zoneinfo/America/Santarem,sha256=eEQNAfTFt8E9Hb5lALpxGI79z5AGmXnICiJNgxyL2Xs,632 -pytz/zoneinfo/America/Santiago,sha256=A0WTAf1TQ-LArMtXwKvnGlyZBA3v4mSkPTK0MENXMe4,2538 -pytz/zoneinfo/America/Santo_Domingo,sha256=rfNJ5McxSqppnEiTxYmwd_bfp9mlTqnq5Fllj5r0Hcc,491 -pytz/zoneinfo/America/Sao_Paulo,sha256=5U8tGHsI7_0tGsnE9m1rwKMTZwSIeShVelx_dMI69Ag,2016 -pytz/zoneinfo/America/Scoresbysund,sha256=xmh3LUkybN43mNFYCJ0vnO1DeI-QQ2Cm3GelOGiyj5Y,1930 -pytz/zoneinfo/America/Shiprock,sha256=9N88x0x50HCiWnkndE06QioF2GKpojShIQXFyWTvsi0,2453 -pytz/zoneinfo/America/Sitka,sha256=unm4ns2OZNukEZ8sWvI3MWdVfEvHG3sTSrJS4LdIX9s,2350 -pytz/zoneinfo/America/St_Barthelemy,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/St_Johns,sha256=K5YKWNbT9qJycH-UH1WxW4uj_Q_VX4aA6oSvax6YuuA,3664 -pytz/zoneinfo/America/St_Kitts,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/St_Lucia,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/St_Thomas,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/St_Vincent,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Swift_Current,sha256=a2Ap8ErAfDguINMV2npy2SBNgT74NYXwQlYuf2eIp48,574 -pytz/zoneinfo/America/Tegucigalpa,sha256=_SlanMaJqWZ4a24OydDxAXlqyLTwSm9SmxkpN986IRU,278 -pytz/zoneinfo/America/Thule,sha256=mkdKH8dkNDRw0xA2nNv21wB-phERbiW-po9g3fWmzWg,1528 -pytz/zoneinfo/America/Thunder_Bay,sha256=rvReFHQ2n1Lhr7HNfzEunwNcoTaGCSzyNRo1MTPhzuY,2211 -pytz/zoneinfo/America/Tijuana,sha256=2Ce5W0-ha4xW2aFjY0HJESZX5WeuhLN6m_yhM64xurs,2356 -pytz/zoneinfo/America/Toronto,sha256=hC96ED36ycDCwzycw5KhE9JmrAZMXHSXiDq0G3l84ZQ,3503 -pytz/zoneinfo/America/Tortola,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Vancouver,sha256=i0FLmiC-Ca1hIU3ustv_O7G9Hp01Gnms6udX-g--kd0,2901 -pytz/zoneinfo/America/Virgin,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170 -pytz/zoneinfo/America/Whitehorse,sha256=GGT-M9UeWHgKXIQApH58QubmZVq-SagswRpGEFkFgxM,2093 -pytz/zoneinfo/America/Winnipeg,sha256=d75cCPb46-UzD7hqYMREfqJUliBgn072p6emjRoS2dY,2891 -pytz/zoneinfo/America/Yakutat,sha256=B_GJ9JhzsTkpiey94Z0Z0zzWwWlTv35rknyi8QQPcQY,2314 -pytz/zoneinfo/America/Yellowknife,sha256=MUDef-QTb7SSDou47Y1wclbnjGcu384WV64iZy3mh2g,1980 -pytz/zoneinfo/America/Argentina/Buenos_Aires,sha256=hBubypR_Ks2a3Gy1wQFxIE7s7B5G5gQmVPNVyJ3rxD8,1109 -pytz/zoneinfo/America/Argentina/Catamarca,sha256=6ESo80xxwtBL_axrEekTtfIOqf3bXRRUM9CDEIfxxdY,1109 -pytz/zoneinfo/America/Argentina/ComodRivadavia,sha256=6ESo80xxwtBL_axrEekTtfIOqf3bXRRUM9CDEIfxxdY,1109 -pytz/zoneinfo/America/Argentina/Cordoba,sha256=JUow-bmwBVg1DQwfQKHZyHOARbt_6I5WyBu7n70WECY,1109 -pytz/zoneinfo/America/Argentina/Jujuy,sha256=Iz9D-JWwjyHNKJGPvbnCKJJRHAmWrGIS4BnD6GaspFU,1081 -pytz/zoneinfo/America/Argentina/La_Rioja,sha256=7cgtkiW4rjypEeqxT4IBqJFpKM-rIz4YL4B-cVzxhDU,1123 -pytz/zoneinfo/America/Argentina/Mendoza,sha256=1Q8kXPHus2UNu91Fcg3caxxeIq7eeYHyC57-LHrGjE0,1109 -pytz/zoneinfo/America/Argentina/Rio_Gallegos,sha256=92IGeyXMfmFBsGpurnd2TKzMy_6HFvE3DDPhaewuFyM,1109 -pytz/zoneinfo/America/Argentina/Salta,sha256=He7enBTtC03G5aQBEMcFYIPI_tVXuEqtwPoqBFQR5WA,1081 -pytz/zoneinfo/America/Argentina/San_Juan,sha256=EAwACwO5oOGcd42ega2OXCw020t9okxV1nwK2AUKZ8U,1123 -pytz/zoneinfo/America/Argentina/San_Luis,sha256=qxWxFBuHsTgeXK04b8N0tamiypIlBNpbhIB0-rkemrw,1139 -pytz/zoneinfo/America/Argentina/Tucuman,sha256=amI7vNIUTx5DiSd3CEveTiYTrm8iv5Le324dxuaCSLM,1137 -pytz/zoneinfo/America/Argentina/Ushuaia,sha256=AvmpZCaCPHvyX_FaHyQQaeLLFZadSNDGzDGq0Tp9D0k,1109 -pytz/zoneinfo/America/Indiana/Indianapolis,sha256=VcLz_rJB-IQ16YduduLGnd_Q39NqJztVH_SA4s-tmf4,1675 -pytz/zoneinfo/America/Indiana/Knox,sha256=nnXdbFLFM5yOKxlf-KxqchLixehLK-MCPMNVlywg2FY,2437 -pytz/zoneinfo/America/Indiana/Marengo,sha256=ZLuHZpp8FhRUsoPlhV4o3nZVRQaAzEA-6gVy5YDrJiU,1731 -pytz/zoneinfo/America/Indiana/Petersburg,sha256=PrXdUQ1nf5EY7EvKeJLbTtGBci-6-U75yxpEFxhAAyE,1913 -pytz/zoneinfo/America/Indiana/Tell_City,sha256=JoxThon0gV-Grh0QC0sHKnhdXmiwPecbdPQ3E1vFKEM,1735 -pytz/zoneinfo/America/Indiana/Vevay,sha256=XPcorCZ8zlG93xh1IZvw6ADVqqF3lNwsdAgpN3P1FuU,1423 -pytz/zoneinfo/America/Indiana/Vincennes,sha256=ip2zj3V1-eKmJMlGYSiSfK7w7qfpo4QWec1usSmwGdM,1703 -pytz/zoneinfo/America/Indiana/Winamac,sha256=0tyRkge425W9gq_2i4pJim077CwzIgulOB68oXHcwJU,1787 -pytz/zoneinfo/America/Kentucky/Louisville,sha256=d5xqbFZndPlPdU2tiTbqf39q-wKO2cdrdNjzdTVUOe4,2781 -pytz/zoneinfo/America/Kentucky/Monticello,sha256=uHCB5Gu-aIgWp-A8_cW07-EL1rkstaeA32sMhq9MGjc,2361 -pytz/zoneinfo/America/North_Dakota/Beulah,sha256=9gTrQvAZf17e_NbUMFGgtk5uEyfb0tPPqU0DSLI-H6g,2389 -pytz/zoneinfo/America/North_Dakota/Center,sha256=CO_qSvmitqWrJehhFs_PS5PBa6m3si92LZyzSB7POsg,2389 -pytz/zoneinfo/America/North_Dakota/New_Salem,sha256=xaQ-tndsMmsSUPkU8A6eAOEhubUfY2ZfkPJFN22iAXo,2389 -pytz/zoneinfo/Antarctica/Casey,sha256=Iugeekw_fyGr0Wg8Jb8wvyVhOxKogLYVnh29SnQMhZw,314 -pytz/zoneinfo/Antarctica/Davis,sha256=jex3sqIzidMMaApvsCQcrjLxwMcb8o_eFnm9sDWik5s,311 -pytz/zoneinfo/Antarctica/DumontDUrville,sha256=htHnKnytHZgX9X1FbjkYS3SUNqAng6Jy8hCZlK3fvVU,216 -pytz/zoneinfo/Antarctica/Macquarie,sha256=7cyqtCrc_H-khy_yK2P9wSijNU-n1EP4lbj3BozteI8,1543 -pytz/zoneinfo/Antarctica/Mawson,sha256=r6Suw22f-RmSlwtMZF4DiBDyXY5YEYpWVo28kiZwRUM,225 -pytz/zoneinfo/Antarctica/McMurdo,sha256=17UXU4eseOKfe5Ah5BFRJ1a-KD7T0YGZQu9dRezzOOQ,2460 -pytz/zoneinfo/Antarctica/Palmer,sha256=qj_H3RsfFZm_ce0yiuXbqB4JrD46kUaJ5-pf863CgYM,1432 -pytz/zoneinfo/Antarctica/Rothera,sha256=5n2et4tT06QVhlQCdY7KSVxpw0ftDKfVoCOMX3rAHYs,186 -pytz/zoneinfo/Antarctica/South_Pole,sha256=17UXU4eseOKfe5Ah5BFRJ1a-KD7T0YGZQu9dRezzOOQ,2460 -pytz/zoneinfo/Antarctica/Syowa,sha256=rvdl7Js_riztu68rUlUFAIqiTy9OBquuP3cKlnc4eHk,187 -pytz/zoneinfo/Antarctica/Troll,sha256=HYvf52cpJymYGZOmT9ii90WyQFjIvLzyG_OwttUHXC0,1176 -pytz/zoneinfo/Antarctica/Vostok,sha256=kD0gENiga-IM1XAA6J2S5vgwfco4EClCFaWM18fIY-I,187 -pytz/zoneinfo/Arctic/Longyearbyen,sha256=D6TmNdorF4-j6hP_OCnHAoRM-L1p4WvKjh0029kknQE,2251 -pytz/zoneinfo/Asia/Aden,sha256=MQLBdV2aZLLis2M4G79S1qAeuGak0s39DPfggyUXCU0,187 -pytz/zoneinfo/Asia/Almaty,sha256=RAFijG0qNkMO_d3sPZrrn_CR6F2qIdB4MpjN3-cMOMQ,1031 -pytz/zoneinfo/Asia/Amman,sha256=uhih-CP3fkeOcDDuuC3dcaXz-ubv31YyW3d2MEkS2gg,1877 -pytz/zoneinfo/Asia/Anadyr,sha256=tLiARdZiTiHLIzx8Yibt7oivtj4MqNTj31gNdKbIo0w,1222 -pytz/zoneinfo/Asia/Aqtau,sha256=4ueceTcbDIYBzI2p3GExRbYHIenFdDEO1Lf6mum6ows,1017 -pytz/zoneinfo/Asia/Aqtobe,sha256=zNKrBxj8imN7tEV25Mo_8mcVHMQIHcaX5p69Qm2-TB0,1047 -pytz/zoneinfo/Asia/Ashgabat,sha256=RihKzwD87pkYhu6Hn1B_lwvvQQWgXV4zBzagKzKdM3U,651 -pytz/zoneinfo/Asia/Ashkhabad,sha256=RihKzwD87pkYhu6Hn1B_lwvvQQWgXV4zBzagKzKdM3U,651 -pytz/zoneinfo/Asia/Atyrau,sha256=RIEq2hzMSatC3QTjxevo-fWSaCdlsOQAlyZiw0726TE,1025 -pytz/zoneinfo/Asia/Baghdad,sha256=lCupYy1WTx4p9g51p-31mNOwAVFezdfUA7FH5b9wPLE,1004 -pytz/zoneinfo/Asia/Bahrain,sha256=8V1FW1A6HZuZqbwV8n4Nh9m_PKyBAHCfajFA5jurVr0,225 -pytz/zoneinfo/Asia/Baku,sha256=jv_6GX9u4HR9YPSzfbiCPS9xLz33NQv7QEYWQdnnyjE,1269 -pytz/zoneinfo/Asia/Bangkok,sha256=z4ZnA6BbBnBp2wX4dYTVyKNIm8qtPkG7ASYJkEkVwRs,220 -pytz/zoneinfo/Asia/Barnaul,sha256=tVZVLYgcdynyGk-xDF5144ha_AjlOUYdQNbk41nc3X8,1255 -pytz/zoneinfo/Asia/Beirut,sha256=q9-lCe2YJFWHPBA1li2GQq6LiKt19_GppM9-6lzhIO8,2175 -pytz/zoneinfo/Asia/Bishkek,sha256=i0Sc9krX1GuuQZZ4f0cBK_0Imar9fKx3-HlN13MLQe4,1045 -pytz/zoneinfo/Asia/Brunei,sha256=zRTIn0Dq7Of4f5Z569b9wjNWwe4x2gMUAMWYBgRMpNE,229 -pytz/zoneinfo/Asia/Calcutta,sha256=xx17wQ1Sxk9Z6ujqxwHBsVa77D_Z_nUJcL7RXptAj6U,312 -pytz/zoneinfo/Asia/Chita,sha256=O8U3tsP2L7zRNM5MjljDUaV3C5IW8kg_HjbY7JA1s7w,1257 -pytz/zoneinfo/Asia/Choibalsan,sha256=bqCCcv547xUFi1gh0FPpB-qTfbm7bKj3HLmZekTGQxU,991 -pytz/zoneinfo/Asia/Chongqing,sha256=lTYiu9frnrqMO56M1dXsmM6moIWp3rHEPknoiaFU00Q,414 -pytz/zoneinfo/Asia/Chungking,sha256=lTYiu9frnrqMO56M1dXsmM6moIWp3rHEPknoiaFU00Q,414 -pytz/zoneinfo/Asia/Colombo,sha256=YBCKWuwII2tekTLTPecmSc3wH4VMhtAai9YJ2CC1abo,413 -pytz/zoneinfo/Asia/Dacca,sha256=sXYxwfswM__eFTkdL77E49KbhG_Sz7CJiYxrYTCOt7I,370 -pytz/zoneinfo/Asia/Damascus,sha256=D0LVcC7lKUTd5DBxVp3mRaXWaKOFxKLgzYqkPTnS6iE,2320 -pytz/zoneinfo/Asia/Dhaka,sha256=sXYxwfswM__eFTkdL77E49KbhG_Sz7CJiYxrYTCOt7I,370 -pytz/zoneinfo/Asia/Dili,sha256=H2kd8kTXNhPedYl1rcpUVO6akYIbP0OC6pt5PvBLH8Q,253 -pytz/zoneinfo/Asia/Dubai,sha256=UsGWhPtJQ3c9hsQ_eMete0audVeorp7RZQg0K9MZZ4o,187 -pytz/zoneinfo/Asia/Dushanbe,sha256=6DJSSg0CCjQBXkIxgr7AWSDB5ztBSaqxuzG3R5oKj0w,621 -pytz/zoneinfo/Asia/Famagusta,sha256=Sj5mdZwGD_XZ4zgWl4FngWHfW5rNmuxhRvHU08_ZAws,2042 -pytz/zoneinfo/Asia/Gaza,sha256=CyX6cPDZiEki7EtItwX9IeYYRdvFM7ho2X8GcoztcJk,2295 -pytz/zoneinfo/Asia/Harbin,sha256=lTYiu9frnrqMO56M1dXsmM6moIWp3rHEPknoiaFU00Q,414 -pytz/zoneinfo/Asia/Hebron,sha256=vhnpdBR0D4QJ0n8mlYX-8VloSV3i7GPymtZkhI3lCeg,2323 -pytz/zoneinfo/Asia/Ho_Chi_Minh,sha256=AT_8zxoFqee1CbVfa5SVad2eZ2v8zhDIhv_-WXRUQOU,389 -pytz/zoneinfo/Asia/Hong_Kong,sha256=l4b75K2bgg9hpWZLO4XdYBqm6RUsk_9OFL1U7_348dU,1189 -pytz/zoneinfo/Asia/Hovd,sha256=zcZfkT8rZ80dIyhpRFRsQvq7ZHILeKrzL4hgWhlDaJo,921 -pytz/zoneinfo/Asia/Irkutsk,sha256=d-2KOKnz5KZaXe1qhGCJxMimDrJFxHb37iDWJ4AwPu8,1276 -pytz/zoneinfo/Asia/Istanbul,sha256=ldOJ2-YltB_ZTylyeN94QXWsuqtz3jhrzcJAcT43kVI,2166 -pytz/zoneinfo/Asia/Jakarta,sha256=fqHD5ToNP0DLbXck8brLT8oc8K6W2atC8A8tMNwN7jo,392 -pytz/zoneinfo/Asia/Jayapura,sha256=xvok3i6D9HGHi44Q7NaIKOs6uh9JzkYtrHchZhOG6ww,251 -pytz/zoneinfo/Asia/Jerusalem,sha256=YAGe4NHetuaZShpclRhh4dufmSpcAn-8TjYX-ULAIc8,2265 -pytz/zoneinfo/Asia/Kabul,sha256=OGuYuVsZu-xSxtjzNOBKF49PmfK4oc6jPBQjdWaNcic,229 -pytz/zoneinfo/Asia/Kamchatka,sha256=pF1YfHE0YHy2_q3mr5oEIDw4se1IH3x86OsQ582XLKw,1198 -pytz/zoneinfo/Asia/Karachi,sha256=_EsqaK15763s9S8zP6GcuqXdCEzcm_lquLZadcVZo3A,417 -pytz/zoneinfo/Asia/Kashgar,sha256=muiGjfVEHOSsM6rtd39epog-uVBQt9ZtHl7FZIyeP8w,187 -pytz/zoneinfo/Asia/Kathmandu,sha256=XFV7hsXw_dGdEFr704vZ2qrRzQdenv2-gFR93Kha5a4,238 -pytz/zoneinfo/Asia/Katmandu,sha256=XFV7hsXw_dGdEFr704vZ2qrRzQdenv2-gFR93Kha5a4,238 -pytz/zoneinfo/Asia/Khandyga,sha256=AWnyrYKDL2RmmEytnMZz-0CY7hXhSyFSHOVPN6P6beM,1311 -pytz/zoneinfo/Asia/Kolkata,sha256=xx17wQ1Sxk9Z6ujqxwHBsVa77D_Z_nUJcL7RXptAj6U,312 -pytz/zoneinfo/Asia/Krasnoyarsk,sha256=kSLsPfnS8eF2ft-8nM5J58_5VJHLneI0xFiPmF6zYcg,1243 -pytz/zoneinfo/Asia/Kuala_Lumpur,sha256=Jo08wp2umFT-obkQnaKHNgLEiAaZTT898LnKmGP89Zs,424 -pytz/zoneinfo/Asia/Kuching,sha256=DQxo0s3c-UMQVrJ7iEyJlR3kVqSE_flqKxDHj68ZW9g,521 -pytz/zoneinfo/Asia/Kuwait,sha256=MQLBdV2aZLLis2M4G79S1qAeuGak0s39DPfggyUXCU0,187 -pytz/zoneinfo/Asia/Macao,sha256=HblvoKzHXMIYpHuzz0rPEB9sHWCbLPk6GUqiIL1A024,755 -pytz/zoneinfo/Asia/Macau,sha256=HblvoKzHXMIYpHuzz0rPEB9sHWCbLPk6GUqiIL1A024,755 -pytz/zoneinfo/Asia/Magadan,sha256=oy8CKyqps3D0GGYEfCi22WAHvsfn8F5P0aLwYREFfos,1258 -pytz/zoneinfo/Asia/Makassar,sha256=JPrJAWle9Dtz-os82eS_iTzrdXxSALZiiuag_HDwGVY,288 -pytz/zoneinfo/Asia/Manila,sha256=plPqwY61QQ1OaJIemnJqwyE9R4UjojT2rL1SZiHJjtc,367 -pytz/zoneinfo/Asia/Muscat,sha256=UsGWhPtJQ3c9hsQ_eMete0audVeorp7RZQg0K9MZZ4o,187 -pytz/zoneinfo/Asia/Nicosia,sha256=8qoqP3ekO3VYp1CKbNbFD999mR-dZNpZSP2QA5I7HXI,2016 -pytz/zoneinfo/Asia/Novokuznetsk,sha256=Rd8ggmbOQdzNrmpHtreCNaLnDE7rabKOMBJeA-e54NM,1197 -pytz/zoneinfo/Asia/Novosibirsk,sha256=U_VVwHg3jXJtttIDyWvufvybE4wQz9Y091CyjLYhK6U,1255 -pytz/zoneinfo/Asia/Omsk,sha256=4yv7l2J0ZXqJL1kYs_QuVsg42sBA4GrGDC02MYyA_Uk,1243 -pytz/zoneinfo/Asia/Oral,sha256=Td1mX4H5_-f6PHVA9QZd2tcidNoikTiF7v6GlRqFeZg,1039 -pytz/zoneinfo/Asia/Phnom_Penh,sha256=z4ZnA6BbBnBp2wX4dYTVyKNIm8qtPkG7ASYJkEkVwRs,220 -pytz/zoneinfo/Asia/Pontianak,sha256=JRasK8hP5kmKULyIZewA40mbOPL0hUA81QKFeKmNH9g,395 -pytz/zoneinfo/Asia/Pyongyang,sha256=rissnxFJK2dvRZhNnUA1RywJn1xrtWF_gtSxDZdvVo0,272 -pytz/zoneinfo/Asia/Qatar,sha256=8V1FW1A6HZuZqbwV8n4Nh9m_PKyBAHCfajFA5jurVr0,225 -pytz/zoneinfo/Asia/Qyzylorda,sha256=oUuEgD145jbzuaoGGUumf9IA16ejyospS_jWblF6mB4,1047 -pytz/zoneinfo/Asia/Rangoon,sha256=G0YFglrbrjxxNvPwVdfLrHb6rWJwNRbq-U_I0Q4d860,297 -pytz/zoneinfo/Asia/Riyadh,sha256=MQLBdV2aZLLis2M4G79S1qAeuGak0s39DPfggyUXCU0,187 -pytz/zoneinfo/Asia/Saigon,sha256=AT_8zxoFqee1CbVfa5SVad2eZ2v8zhDIhv_-WXRUQOU,389 -pytz/zoneinfo/Asia/Sakhalin,sha256=1q9n3YU-og7JKqOf3WR7cOwylgbnVlU2Aw291w8GIUg,1234 -pytz/zoneinfo/Asia/Samarkand,sha256=_ZKLVv8rb98eKMGY2Iceh5eUcxCd_DlaUdiq7Q77WSQ,619 -pytz/zoneinfo/Asia/Seoul,sha256=It6UZCqXimr0Y9sXXp-ToykuioGnSouSmJvCF0N57dY,531 -pytz/zoneinfo/Asia/Shanghai,sha256=lTYiu9frnrqMO56M1dXsmM6moIWp3rHEPknoiaFU00Q,414 -pytz/zoneinfo/Asia/Singapore,sha256=5pKf3kP_xIu6xAgbMbv3_UJkOzwm-t8yK96t6yPPx0g,424 -pytz/zoneinfo/Asia/Srednekolymsk,sha256=NcVF4k1hox9f1PpxLYtswJ7L393uEOW4WdaynlfZiAY,1244 -pytz/zoneinfo/Asia/Taipei,sha256=Jc_QK8hHvcsR5YZEW6iGp2MV8fm-hvfnSUSm6OhkRUM,790 -pytz/zoneinfo/Asia/Tashkent,sha256=hnTrUBzSXFQCWOlABs4VH5H2U4SegAqpeYZVG4nq1og,635 -pytz/zoneinfo/Asia/Tbilisi,sha256=vIjv31faZqqnHBXY-8NthyQq3Kd24QPd1VMapFyiEXc,1080 -pytz/zoneinfo/Asia/Tehran,sha256=53RfdtZdlFhrpyM-e_9UkRiHSA-l4j8cU_5eV0P0seM,1718 -pytz/zoneinfo/Asia/Tel_Aviv,sha256=YAGe4NHetuaZShpclRhh4dufmSpcAn-8TjYX-ULAIc8,2265 -pytz/zoneinfo/Asia/Thimbu,sha256=5UxNVlpL5fNCCbo1HHqt0QcdzPigOA1p4G6TakJSA6I,229 -pytz/zoneinfo/Asia/Thimphu,sha256=5UxNVlpL5fNCCbo1HHqt0QcdzPigOA1p4G6TakJSA6I,229 -pytz/zoneinfo/Asia/Tokyo,sha256=TVmM6j_lW0SvvZxvYD90iWDkqYBuHqHof8Lyu5ghQ3c,318 -pytz/zoneinfo/Asia/Tomsk,sha256=EULbQLkWeLSrPCk1NG9vC85qhDUzkqGrl9vroO4VgtU,1255 -pytz/zoneinfo/Asia/Ujung_Pandang,sha256=JPrJAWle9Dtz-os82eS_iTzrdXxSALZiiuag_HDwGVY,288 -pytz/zoneinfo/Asia/Ulaanbaatar,sha256=F6MdDqjq8NFIS1TlPWgD6uqoMnQNUho0Dh1cBz3pfiI,921 -pytz/zoneinfo/Asia/Ulan_Bator,sha256=F6MdDqjq8NFIS1TlPWgD6uqoMnQNUho0Dh1cBz3pfiI,921 -pytz/zoneinfo/Asia/Urumqi,sha256=muiGjfVEHOSsM6rtd39epog-uVBQt9ZtHl7FZIyeP8w,187 -pytz/zoneinfo/Asia/Ust-Nera,sha256=qw7b6IcYE-EVSNNGQVIYeKyhJjSkRoOUXSTvhQFr0Ko,1290 -pytz/zoneinfo/Asia/Vientiane,sha256=z4ZnA6BbBnBp2wX4dYTVyKNIm8qtPkG7ASYJkEkVwRs,220 -pytz/zoneinfo/Asia/Vladivostok,sha256=MutuFAWqBI5sujOW1LCa0E7QXCOdvLBU-C5Nu9LbvTE,1244 -pytz/zoneinfo/Asia/Yakutsk,sha256=VFA2qMtIBo1fb5i9KOuQu2wl0xNrWPAUhrh1eAUZII4,1243 -pytz/zoneinfo/Asia/Yangon,sha256=G0YFglrbrjxxNvPwVdfLrHb6rWJwNRbq-U_I0Q4d860,297 -pytz/zoneinfo/Asia/Yekaterinburg,sha256=iBnv8pqQrSwNNYj1bW6XTZlBnoAQS_yTEydPCjPgtZA,1281 -pytz/zoneinfo/Asia/Yerevan,sha256=LkVgEeng2MGVjBe_NBFv6JoyOQKAEOfbYa5GASyPIwQ,1213 -pytz/zoneinfo/Atlantic/Azores,sha256=LTa_HHde8eFANjfCnrm5rLqgTWhkqFMEwmKrKzYQPgQ,3477 -pytz/zoneinfo/Atlantic/Bermuda,sha256=Ri0gWQTzLct5MX-D3bTeoVSNUYSSF9w-QroXw8x_zwg,2004 -pytz/zoneinfo/Atlantic/Canary,sha256=RhfLGqdVFAA_GBkI6cz8HT0GLvIrsBloZ9vlMOwuFBY,1911 -pytz/zoneinfo/Atlantic/Cape_Verde,sha256=fuIInuQMbZtzQriYobQq8Lz8-dtg4bdyTuRujhLT-OQ,268 -pytz/zoneinfo/Atlantic/Faeroe,sha256=axpXafj_ouwpvymN_9f7Mk5iXjb8UnwUu2a2Ug5vdqc,1829 -pytz/zoneinfo/Atlantic/Faroe,sha256=axpXafj_ouwpvymN_9f7Mk5iXjb8UnwUu2a2Ug5vdqc,1829 -pytz/zoneinfo/Atlantic/Jan_Mayen,sha256=D6TmNdorF4-j6hP_OCnHAoRM-L1p4WvKjh0029kknQE,2251 -pytz/zoneinfo/Atlantic/Madeira,sha256=LxjcrU9Y3mrUujDXKRfDEGZCBD7yrjpDUuIHiBtMpTk,3468 -pytz/zoneinfo/Atlantic/Reykjavik,sha256=nNzqaqHu2CdtP2Yg4MD_rpz8w3IsRD6mujkUeXXq-qM,1188 -pytz/zoneinfo/Atlantic/South_Georgia,sha256=90Xco5ZMauPouIFm4Ntt9Ifuj25q1_saw61OarLgo2E,181 -pytz/zoneinfo/Atlantic/St_Helena,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170 -pytz/zoneinfo/Atlantic/Stanley,sha256=V-4n-sfXK6LDRyVwLlh2qidGKgmsS4QbQBIq_hA6TEE,1251 -pytz/zoneinfo/Australia/ACT,sha256=tUD44h7WprJiM24OsCDBirQ_KD6XdGE92YZCOVI-QjM,2223 -pytz/zoneinfo/Australia/Adelaide,sha256=c1R27vgWUtcYlXT4t6EclCqYaroktt3GRPvr0etJJFw,2238 -pytz/zoneinfo/Australia/Brisbane,sha256=dKyfXR0V7w9r2eacaHuQR_sfdJxZJ5R1aFch9XS0J8w,452 -pytz/zoneinfo/Australia/Broken_Hill,sha256=1kUWddO1r7hXLiy7TTgXMNoj2qO_y1dgH-b4FZhSN9s,2274 -pytz/zoneinfo/Australia/Canberra,sha256=tUD44h7WprJiM24OsCDBirQ_KD6XdGE92YZCOVI-QjM,2223 -pytz/zoneinfo/Australia/Currie,sha256=VDx6-uv92Qf41jfvzki_QcQH2nJli46cEvcgilTR2Eo,2223 -pytz/zoneinfo/Australia/Darwin,sha256=YXLYaHp4YI2ISwSQPTYFO9-1ZDNUGTCypCtAXLti3As,323 -pytz/zoneinfo/Australia/Eucla,sha256=Qsf5xEz42_1WSnU5uGJ42YKFR2V4vvS_wBzD_GHrsro,503 -pytz/zoneinfo/Australia/Hobart,sha256=3hu16C-Gd05wCCuQZGLgKgYiOOXE12FJVm4hscsxsjo,2335 -pytz/zoneinfo/Australia/LHI,sha256=CWJpde6GI4_V-FvCder62DvGlnCdeBRMwL1M7XWsry0,1889 -pytz/zoneinfo/Australia/Lindeman,sha256=Zj3zXwRKFcdDuXFuGDWVFH0MGDjpkUipRzYjrIIHa_k,522 -pytz/zoneinfo/Australia/Lord_Howe,sha256=CWJpde6GI4_V-FvCder62DvGlnCdeBRMwL1M7XWsry0,1889 -pytz/zoneinfo/Australia/Melbourne,sha256=JywfE9AeNealiFXLtTh4eVRRkorb8MjKKYK3nbH0UKc,2223 -pytz/zoneinfo/Australia/NSW,sha256=tUD44h7WprJiM24OsCDBirQ_KD6XdGE92YZCOVI-QjM,2223 -pytz/zoneinfo/Australia/North,sha256=YXLYaHp4YI2ISwSQPTYFO9-1ZDNUGTCypCtAXLti3As,323 -pytz/zoneinfo/Australia/Perth,sha256=Ts1KCFyp7Ft5AwFsLU4xEnYCSivNDDXUAoFljkhCH5M,479 -pytz/zoneinfo/Australia/Queensland,sha256=dKyfXR0V7w9r2eacaHuQR_sfdJxZJ5R1aFch9XS0J8w,452 -pytz/zoneinfo/Australia/South,sha256=c1R27vgWUtcYlXT4t6EclCqYaroktt3GRPvr0etJJFw,2238 -pytz/zoneinfo/Australia/Sydney,sha256=tUD44h7WprJiM24OsCDBirQ_KD6XdGE92YZCOVI-QjM,2223 -pytz/zoneinfo/Australia/Tasmania,sha256=3hu16C-Gd05wCCuQZGLgKgYiOOXE12FJVm4hscsxsjo,2335 -pytz/zoneinfo/Australia/Victoria,sha256=JywfE9AeNealiFXLtTh4eVRRkorb8MjKKYK3nbH0UKc,2223 -pytz/zoneinfo/Australia/West,sha256=Ts1KCFyp7Ft5AwFsLU4xEnYCSivNDDXUAoFljkhCH5M,479 -pytz/zoneinfo/Australia/Yancowinna,sha256=1kUWddO1r7hXLiy7TTgXMNoj2qO_y1dgH-b4FZhSN9s,2274 -pytz/zoneinfo/Brazil/Acre,sha256=FshszMk8fr_v-uiA5DnOhIBV5CFXiYLVyr74quwV-AI,662 -pytz/zoneinfo/Brazil/DeNoronha,sha256=y06Wj0Fe1T52kQjJ1flxDomHFq90U205twd7BCbzlg0,742 -pytz/zoneinfo/Brazil/East,sha256=5U8tGHsI7_0tGsnE9m1rwKMTZwSIeShVelx_dMI69Ag,2016 -pytz/zoneinfo/Brazil/West,sha256=4SE-e5fPpYC0-ccow0_6ZKarJ3sGtViJOymcINNSjmw,630 -pytz/zoneinfo/Canada/Atlantic,sha256=Yn4YIYxvPD9EbElwq-gWRnLip7qUvPhBseBq9QiblOo,3438 -pytz/zoneinfo/Canada/Central,sha256=d75cCPb46-UzD7hqYMREfqJUliBgn072p6emjRoS2dY,2891 -pytz/zoneinfo/Canada/Eastern,sha256=hC96ED36ycDCwzycw5KhE9JmrAZMXHSXiDq0G3l84ZQ,3503 -pytz/zoneinfo/Canada/Mountain,sha256=ZnjCP4ZXO2yV5sdIoxeqjOkPaGNrza0Y2wgecJhvtU4,2402 -pytz/zoneinfo/Canada/Newfoundland,sha256=K5YKWNbT9qJycH-UH1WxW4uj_Q_VX4aA6oSvax6YuuA,3664 -pytz/zoneinfo/Canada/Pacific,sha256=i0FLmiC-Ca1hIU3ustv_O7G9Hp01Gnms6udX-g--kd0,2901 -pytz/zoneinfo/Canada/Saskatchewan,sha256=kp0HRXQHUpY3Ym0J9cqXW08FgB810L-sTjsAJ-_uZ3Y,994 -pytz/zoneinfo/Canada/Yukon,sha256=GGT-M9UeWHgKXIQApH58QubmZVq-SagswRpGEFkFgxM,2093 -pytz/zoneinfo/Chile/Continental,sha256=A0WTAf1TQ-LArMtXwKvnGlyZBA3v4mSkPTK0MENXMe4,2538 -pytz/zoneinfo/Chile/EasterIsland,sha256=CdfM__TGTQVJnXqxIiruUWk4Rtzk4kprAWWzGKRkPG8,2242 -pytz/zoneinfo/Etc/GMT,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127 -pytz/zoneinfo/Etc/GMT+0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127 -pytz/zoneinfo/Etc/GMT+1,sha256=NdAE7bKgsRN64eo2We-OladTMw8HE_yUkp0PedgCGwc,148 -pytz/zoneinfo/Etc/GMT+10,sha256=R2JgPz9RwNUGPqVJ-aV4t-vybkf9cQmm40SVrD4Jsu0,149 -pytz/zoneinfo/Etc/GMT+11,sha256=iiNSHW6TMmKR29rPKFf4p4lwvvPdk6U1V9pMwuecNro,149 -pytz/zoneinfo/Etc/GMT+12,sha256=7HBG9-QSUvg5lQzgTj8g5BuiKOZ4quKkW1sFC6mQ5iY,149 -pytz/zoneinfo/Etc/GMT+2,sha256=ITGbjCY0qDSehMO-9CKZj23U95utkfefo4FFwfa2lN0,148 -pytz/zoneinfo/Etc/GMT+3,sha256=54Yd76CovF4O5Y2Kepk6wilQ4_7WCMlTLGgLdO9sxn8,148 -pytz/zoneinfo/Etc/GMT+4,sha256=Dwq3fFvspoIxSECQw47MHOIRsTVRHVQx3BmU-KJYDIk,148 -pytz/zoneinfo/Etc/GMT+5,sha256=vnzvMs8AlFILNE_EYbwodH5hfWBDuL4LCHHociXuhWg,148 -pytz/zoneinfo/Etc/GMT+6,sha256=0oXuyHOpGyZg_ymBYwRpMFbuYawem9NIXibEvMBn4EE,148 -pytz/zoneinfo/Etc/GMT+7,sha256=YxvlZZroNznhBW4Igom2Qsr00HvliH90xsyVTisOnlw,148 -pytz/zoneinfo/Etc/GMT+8,sha256=8O3l2BHg2LKDsYuArr5s5hcmdmTsMT_FvwHiiAqMQik,148 -pytz/zoneinfo/Etc/GMT+9,sha256=aqtVL5R5hrALLUP_KKMlere4iWcyK5zgZ-RcXqlswBQ,148 -pytz/zoneinfo/Etc/GMT-0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127 -pytz/zoneinfo/Etc/GMT-1,sha256=1ffwaC5xAA3jQ_zify6M_5435QywZL8PYSRdx_9oBu0,149 -pytz/zoneinfo/Etc/GMT-10,sha256=L9z9AMG-RjKYkdqStG9JJYs1wJ654RA-N4mj1YM463g,150 -pytz/zoneinfo/Etc/GMT-11,sha256=RDnIp9WoyHxHt6gb0ulTTIxnb2ENQDj987OVEIml25E,150 -pytz/zoneinfo/Etc/GMT-12,sha256=XwwsIc7EAg7DEWwDjKn_Xlqehj3bf8C-unE2wyGwWFE,150 -pytz/zoneinfo/Etc/GMT-13,sha256=DE5r_2NUQGN48r2xZfrgJfoQD-jH12xs-qu3Fvbwlso,150 -pytz/zoneinfo/Etc/GMT-14,sha256=RoX5LvpbvbYl3Y1kVKNAr4rAUQMItrZoR61fe8PE_IQ,150 -pytz/zoneinfo/Etc/GMT-2,sha256=UwM1smrAMG7cjwaDqDC8Hn9REa0ijfS3TBl9LLnDE4c,149 -pytz/zoneinfo/Etc/GMT-3,sha256=pZ4eSnByIqwi_vs6bcSVzvJmhyqU1R5cqGL_3nTvDEw,149 -pytz/zoneinfo/Etc/GMT-4,sha256=fWRx-INdpeeQb4Ig3ZZ0tmRXP-5lDwootatRqlSkUk4,149 -pytz/zoneinfo/Etc/GMT-5,sha256=M6Q5EwBIyLZACtCCsuQBHHuF-v6RceExEKqG8ma-36Q,149 -pytz/zoneinfo/Etc/GMT-6,sha256=8q4WvZo6mnV4jKE6KBvMOVZ8k6r1rVQC_L_rrEc7bPc,149 -pytz/zoneinfo/Etc/GMT-7,sha256=sON9m_SW83W3wCToG2rllDzLrOD_vstoTYvRhHxcuTo,149 -pytz/zoneinfo/Etc/GMT-8,sha256=XsZ4EfvOE-4jEj7uYHkb6MtfnIRFGuDYKXc4r5t_DMo,149 -pytz/zoneinfo/Etc/GMT-9,sha256=Fu1XzXw1d_3CLVdoOEHpIrIIpTXmEl5oa-T4cCp19IU,149 -pytz/zoneinfo/Etc/GMT0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127 -pytz/zoneinfo/Etc/Greenwich,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127 -pytz/zoneinfo/Etc/UCT,sha256=s7dihjysJWmqM_faGSWEr9mWXO63Jj_tSth8GzXkx9g,127 -pytz/zoneinfo/Etc/UTC,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127 -pytz/zoneinfo/Etc/Universal,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127 -pytz/zoneinfo/Etc/Zulu,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127 -pytz/zoneinfo/Europe/Amsterdam,sha256=ioE6xrjRtop5YCQsrlMloiaf0ceRsgP40i8t-jthuoc,2949 -pytz/zoneinfo/Europe/Andorra,sha256=rdVQXEcyJeM6iEoCEFYQqblQA_QpGVYkuVPBj3cTF68,1751 -pytz/zoneinfo/Europe/Astrakhan,sha256=oCdWH0k8AqBNaZkDoI6eeKx26zpxnEdJ2a6UgEGLqtg,1197 -pytz/zoneinfo/Europe/Athens,sha256=eZCQVRICwLhBf4NvrPdQSVc90cJ7XmretYT8xBQFETk,2271 -pytz/zoneinfo/Europe/Belfast,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687 -pytz/zoneinfo/Europe/Belgrade,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957 -pytz/zoneinfo/Europe/Berlin,sha256=frk9y6YD1Sj99TYWDvaRHBb4NK_PiM4jo4K5f_KDGdQ,2335 -pytz/zoneinfo/Europe/Bratislava,sha256=j8jen-3wPulZUVlbC3AwxwmQutEKYowKVecCP36Di7I,2272 -pytz/zoneinfo/Europe/Brussels,sha256=83KpA6alfaQ6b1ANas7M_HToANff6Ip-r1bKJWRVfmY,2970 -pytz/zoneinfo/Europe/Bucharest,sha256=OzoAFzM7L0ZuWcisPcDPeqTwpGCAQKMYD3UrGdapNSY,2221 -pytz/zoneinfo/Europe/Budapest,sha256=tn8sRpCofylOpdNa45Z8iqi94ieus2w4dyheTpShdBg,2405 -pytz/zoneinfo/Europe/Busingen,sha256=vEX4xsgZBHfNquRvdwWfq3T96SoC_Fe3M_B8uaVemKM,1918 -pytz/zoneinfo/Europe/Chisinau,sha256=V0nwHHjQwv1Q0NwigMGVfOBBntv8fEBzxn5tp4FT2Mg,2445 -pytz/zoneinfo/Europe/Copenhagen,sha256=0tmjWe8C0q_ik_QpxP1g_AT7-NHYNDybIk3PwRbAEag,2160 -pytz/zoneinfo/Europe/Dublin,sha256=_xmXLVYbO2qb2w7Gmj7TtZylzNGxSSnim_htdXJV7sI,3543 -pytz/zoneinfo/Europe/Gibraltar,sha256=x5CI9nul0_qa2Ym9Vzv97w6GyJ4xDqcLw-AeFNyhB14,3061 -pytz/zoneinfo/Europe/Guernsey,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687 -pytz/zoneinfo/Europe/Helsinki,sha256=7X2J-uH7QKlYLt1-A-0C1_6BukVrnB7Y1u5fC5MarUU,1909 -pytz/zoneinfo/Europe/Isle_of_Man,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687 -pytz/zoneinfo/Europe/Istanbul,sha256=ldOJ2-YltB_ZTylyeN94QXWsuqtz3jhrzcJAcT43kVI,2166 -pytz/zoneinfo/Europe/Jersey,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687 -pytz/zoneinfo/Europe/Kaliningrad,sha256=RQosb_adJitcXY71hEZOnIJ0s4mhw5t6vFqnBgjSlCU,1518 -pytz/zoneinfo/Europe/Kiev,sha256=JCkS3zIS4HJd7UqrJf2GnFLxPDzmGXZKiDrcu9k3r8U,2097 -pytz/zoneinfo/Europe/Kirov,sha256=pEJnMTy6Q_tnFiKvWxfNooXe8YT2Eh6OxgBxZGQ-PCU,1167 -pytz/zoneinfo/Europe/Lisbon,sha256=BlJ3y2OSp8XCHaZKgYRl63gGRbljlax12oqWfPXX4m8,3453 -pytz/zoneinfo/Europe/Ljubljana,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957 -pytz/zoneinfo/Europe/London,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687 -pytz/zoneinfo/Europe/Luxembourg,sha256=kLdiWSdMeKQPNKpbWFRbVAnt-7ov0I76GzAIlstAYu4,2974 -pytz/zoneinfo/Europe/Madrid,sha256=dBA60eSPcfTNm20cA9zZe1jYe7iv-wKx1pZ7IEA269Y,2637 -pytz/zoneinfo/Europe/Malta,sha256=fEE0yNN70VnjH9c56LG4IDqfMCN4i9nIO4EJ42Hu5dU,2629 -pytz/zoneinfo/Europe/Mariehamn,sha256=7X2J-uH7QKlYLt1-A-0C1_6BukVrnB7Y1u5fC5MarUU,1909 -pytz/zoneinfo/Europe/Minsk,sha256=yCqoMaaP7ByRjSM5PXlf752_TQlIeRvLproJ9Fs4JsQ,1370 -pytz/zoneinfo/Europe/Monaco,sha256=fHIzWYiEF7hqZqYJ_90L7PgWc8uz6LARExCItNJva80,2953 -pytz/zoneinfo/Europe/Moscow,sha256=AtVVFtD51JeZgmC08Smu5Zhnt3qSC6LKDFixXshYjno,1544 -pytz/zoneinfo/Europe/Nicosia,sha256=8qoqP3ekO3VYp1CKbNbFD999mR-dZNpZSP2QA5I7HXI,2016 -pytz/zoneinfo/Europe/Oslo,sha256=D6TmNdorF4-j6hP_OCnHAoRM-L1p4WvKjh0029kknQE,2251 -pytz/zoneinfo/Europe/Paris,sha256=c1sI4nN94rR-efWW81dLWp6QGeVtLq0M3BfAsp6EpYU,2971 -pytz/zoneinfo/Europe/Podgorica,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957 -pytz/zoneinfo/Europe/Prague,sha256=j8jen-3wPulZUVlbC3AwxwmQutEKYowKVecCP36Di7I,2272 -pytz/zoneinfo/Europe/Riga,sha256=edEN67qidDRY0N7B-3HTxXbOqA0kX4SBnagqJdk8FAE,2235 -pytz/zoneinfo/Europe/Rome,sha256=Pv8u8s3Gfi9c_USGbNtNRIlWuJ6uiw439jEm8gaO6Ik,2692 -pytz/zoneinfo/Europe/Samara,sha256=UieObyK_kA-u2kJmB4z6f-0lzB1WU700XPMJD95ukRQ,1253 -pytz/zoneinfo/Europe/San_Marino,sha256=Pv8u8s3Gfi9c_USGbNtNRIlWuJ6uiw439jEm8gaO6Ik,2692 -pytz/zoneinfo/Europe/Sarajevo,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957 -pytz/zoneinfo/Europe/Saratov,sha256=KasqBfY0EmVqFDUV_lchio4ZuckW39Bd4VqHr8wNmEk,1197 -pytz/zoneinfo/Europe/Simferopol,sha256=se5vcU_Yj9Yf7231T5WrrLgN0wNsJemhBwj-ybEcNM8,1490 -pytz/zoneinfo/Europe/Skopje,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957 -pytz/zoneinfo/Europe/Sofia,sha256=FoE_sw8uu3gqgGzgZkAU3fv5IYkNMuw9E5i9GCv5JFw,2130 -pytz/zoneinfo/Europe/Stockholm,sha256=B7JC-ePYFQZjv69Bf-fSCZJ_wpn6xId4m3CEGVbDUzU,1918 -pytz/zoneinfo/Europe/Tallinn,sha256=48S6kWwlUAxwnFY5XAQKutYqg0-vr1FjqJl0t_ZrAZo,2187 -pytz/zoneinfo/Europe/Tirane,sha256=YtvGBqMqX1DOyobG-W0IjqaJvO1goWI8mG8EXN6ccwo,2098 -pytz/zoneinfo/Europe/Tiraspol,sha256=V0nwHHjQwv1Q0NwigMGVfOBBntv8fEBzxn5tp4FT2Mg,2445 -pytz/zoneinfo/Europe/Ulyanovsk,sha256=nP6H4QhGU2nxTb9fju2ShQKPZQDAnQbMPnh76UxVy5E,1281 -pytz/zoneinfo/Europe/Uzhgorod,sha256=CYV1tOxlmXWMhbytjdIdibyiE6n4kMDq1t79FIeHBfM,2103 -pytz/zoneinfo/Europe/Vaduz,sha256=vEX4xsgZBHfNquRvdwWfq3T96SoC_Fe3M_B8uaVemKM,1918 -pytz/zoneinfo/Europe/Vatican,sha256=Pv8u8s3Gfi9c_USGbNtNRIlWuJ6uiw439jEm8gaO6Ik,2692 -pytz/zoneinfo/Europe/Vienna,sha256=vkLDKtfFTxXc9d2UJeKJ_SC-vphuXowkChHf7sRlUPc,2237 -pytz/zoneinfo/Europe/Vilnius,sha256=da3AqQaznig_XlAgmEo280tPWO8dMJnvvImf8H8DX34,2199 -pytz/zoneinfo/Europe/Volgograd,sha256=DYtZim_d5NJa9aBEmZbqFZnl0RsmfAOZZzM60iLpobY,1167 -pytz/zoneinfo/Europe/Warsaw,sha256=aOdJPBygUOQTQGKnSqSk_DIVnAQrTJ2NQMi_ydJzxfo,2705 -pytz/zoneinfo/Europe/Zagreb,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957 -pytz/zoneinfo/Europe/Zaporozhye,sha256=tsUSe1JRiBjjtCEeieXh6aR5zKZfd2Ogr7FF1RLDjjQ,2115 -pytz/zoneinfo/Europe/Zurich,sha256=vEX4xsgZBHfNquRvdwWfq3T96SoC_Fe3M_B8uaVemKM,1918 -pytz/zoneinfo/Indian/Antananarivo,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Indian/Chagos,sha256=-dL8AQ0RKF2EMCSOepyhbF_meUnnaIZvALO-cKoOqHE,225 -pytz/zoneinfo/Indian/Christmas,sha256=bQlKPZsCLtBPxT5KZlWIvXP07q7pwjZntGlEusXbvgU,182 -pytz/zoneinfo/Indian/Cocos,sha256=OlfERtZzSgdGWbhU7VbOxTxAgxozwQUs5u9LXw9rAAk,191 -pytz/zoneinfo/Indian/Comoro,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Indian/Kerguelen,sha256=Tcqj3AwmKAl0mdLP03qyrXABHuMb6ffkU5HqL67mOwc,187 -pytz/zoneinfo/Indian/Mahe,sha256=gqbjMTmwOU6xpcuf-xUKQt9db8LFatJkIoXx1eVT_Rc,187 -pytz/zoneinfo/Indian/Maldives,sha256=tbkzs_xVSRRYfGr5VwKkwNk5QUGHN6iJU3LqUUqn1HU,220 -pytz/zoneinfo/Indian/Mauritius,sha256=8ldGbe0M4aMkxj5uvDo5NU5s3gUE8dqjUTbGhVJ47w8,267 -pytz/zoneinfo/Indian/Mayotte,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285 -pytz/zoneinfo/Indian/Reunion,sha256=w9lerOsoBqgrHywJPz1zygz6ADStBEau--jEkE9qlV4,187 -pytz/zoneinfo/Mexico/BajaNorte,sha256=2Ce5W0-ha4xW2aFjY0HJESZX5WeuhLN6m_yhM64xurs,2356 -pytz/zoneinfo/Mexico/BajaSur,sha256=k0C3GbJQdzJizsYudx0SEQWu0WiDZyPfwwXjC7BM-7E,1564 -pytz/zoneinfo/Mexico/General,sha256=iLw_yxqS7wU-CvSvkFPsvxKFX98Y-FmypU2Cbb-stlU,1618 -pytz/zoneinfo/Pacific/Apia,sha256=-ySjHlON060LIs9HiNgMsX15E0YiUQ4qpnyHEtCXIcs,1134 -pytz/zoneinfo/Pacific/Auckland,sha256=17UXU4eseOKfe5Ah5BFRJ1a-KD7T0YGZQu9dRezzOOQ,2460 -pytz/zoneinfo/Pacific/Bougainville,sha256=wbZw1DSqbATL9ztkegflvn3PL_MGY-EMJODwz6vlWzY,296 -pytz/zoneinfo/Pacific/Chatham,sha256=WAGfL6op3H23CBKTIwpyh2kFTdfA0PqelujEKZ5xMU0,2087 -pytz/zoneinfo/Pacific/Chuuk,sha256=xS5vy1vR7giv8GVpgU-WEFwMGLf3n1C5AaC9fa95Kv0,183 -pytz/zoneinfo/Pacific/Easter,sha256=CdfM__TGTQVJnXqxIiruUWk4Rtzk4kprAWWzGKRkPG8,2242 -pytz/zoneinfo/Pacific/Efate,sha256=hdeSr_wnXfGhvc-QZ8tZ9rGri7k8RQzuEpOoFXpDxq0,492 -pytz/zoneinfo/Pacific/Enderbury,sha256=7wQKj2irOwQp5Y_r3MiJKMq8m3LAWgcziWc0nBQ-aRY,259 -pytz/zoneinfo/Pacific/Fakaofo,sha256=6827uX2Pp8miDs9ilk0gfx7YHnOjy-p33IvlFElQr20,221 -pytz/zoneinfo/Pacific/Fiji,sha256=QB9V_GcrmcI6UyDH4vqxWJkyMxOKuz9_kXHvsyMh3u8,1104 -pytz/zoneinfo/Pacific/Funafuti,sha256=gS8nZXbK5rvQE11AcA_eT85k-DD3X-qSjKvnfFHc5Xk,183 -pytz/zoneinfo/Pacific/Galapagos,sha256=NyfsZvcdhillY3fB86AExc-t4PbFK42ot8O6LTaZhgM,268 -pytz/zoneinfo/Pacific/Gambier,sha256=q9T35Rcx0lnjDsSzPCvLiZ4UfuEC6yeKGpsruAAcZNs,186 -pytz/zoneinfo/Pacific/Guadalcanal,sha256=pps6s6bmVBkzgxYJq4u8PtW_D_Z45Rkia435ZrSXPyA,188 -pytz/zoneinfo/Pacific/Guam,sha256=ZhNXbr302da-XrhJU50_dKT7E3rPa8-M2iDSjlxhLnc,225 -pytz/zoneinfo/Pacific/Honolulu,sha256=iIhYJL-RWppvOacDB5jagl40vnnRs1wkRGlqgcFZ8ug,276 -pytz/zoneinfo/Pacific/Johnston,sha256=iIhYJL-RWppvOacDB5jagl40vnnRs1wkRGlqgcFZ8ug,276 -pytz/zoneinfo/Pacific/Kiritimati,sha256=sVZD0n-D_hUauL7hWyTHcpRoQMWytE_JZakr-61FMYI,263 -pytz/zoneinfo/Pacific/Kosrae,sha256=sv8zf7bWQERLCFeLaUqG3WnGBYg0CU3pxqD0JxU1BwY,251 -pytz/zoneinfo/Pacific/Kwajalein,sha256=CQLqlpOXlUrsuxL6X5HToAlr1EO7rqNqlu5Lk9lXuiU,259 -pytz/zoneinfo/Pacific/Majuro,sha256=AUaIy2JAAQ9YuWZzUVzowgW99tikAznhN4zrKy_IrB0,221 -pytz/zoneinfo/Pacific/Marquesas,sha256=WmPeaBtT17_HKMXUkbKYarRzR6ny_RWm87b_l40vgm0,195 -pytz/zoneinfo/Pacific/Midway,sha256=chiirjhs1eiYGpQPa1b2-bYKZfPjvS7B_mydQ7rE2xo,196 -pytz/zoneinfo/Pacific/Nauru,sha256=ycOpbPxH12SVRZr8X8UDPknxXoTqD6bBNgzPY5nQPD0,282 -pytz/zoneinfo/Pacific/Niue,sha256=wWxzYx8oxBNR__kNMQi8V1HL1AAQ_fhy2hEqEOlzmlM,266 -pytz/zoneinfo/Pacific/Norfolk,sha256=MlnCrsJnd9hekhlCy_br-PUsIvJoqIfZ3aw9mJcqUYA,323 -pytz/zoneinfo/Pacific/Noumea,sha256=E-GLS7Qmw3ObNON9bNwA1IhyGgWGXN7KlK92JG9VpN4,328 -pytz/zoneinfo/Pacific/Pago_Pago,sha256=chiirjhs1eiYGpQPa1b2-bYKZfPjvS7B_mydQ7rE2xo,196 -pytz/zoneinfo/Pacific/Palau,sha256=Oa-WwW4Z_WAm0WzmQpH1kwQgp99T03Clri3oKmFnU4U,182 -pytz/zoneinfo/Pacific/Pitcairn,sha256=sK1MvocrTSCNRbxtMmKQzSQMGIYVDw7kJjg4YnaosLA,223 -pytz/zoneinfo/Pacific/Pohnpei,sha256=K_gUCmShapwdLwLACqVi80lhcli5YQOB6Ba6gAxZIVg,183 -pytz/zoneinfo/Pacific/Ponape,sha256=K_gUCmShapwdLwLACqVi80lhcli5YQOB6Ba6gAxZIVg,183 -pytz/zoneinfo/Pacific/Port_Moresby,sha256=H7RhP7S_JG9TfiZeRB_l9icTA330AzjP2Ay312joyl8,206 -pytz/zoneinfo/Pacific/Rarotonga,sha256=lpWohSiWZFEetl-TGGD1hOfFRD1vBbELUZeseDTUfN4,602 -pytz/zoneinfo/Pacific/Saipan,sha256=ZhNXbr302da-XrhJU50_dKT7E3rPa8-M2iDSjlxhLnc,225 -pytz/zoneinfo/Pacific/Samoa,sha256=chiirjhs1eiYGpQPa1b2-bYKZfPjvS7B_mydQ7rE2xo,196 -pytz/zoneinfo/Pacific/Tahiti,sha256=yaImId23N7XWNCaR3C2U4mXIGw50MBC2cTmG2xIvyFU,187 -pytz/zoneinfo/Pacific/Tarawa,sha256=KP6jhSgTWlT9ZC_j0ru0Gqjaa3yJLDmRqyYSqBFE55k,183 -pytz/zoneinfo/Pacific/Tongatapu,sha256=FNW_On_qIetsnmOXDR2tW5--3F9bD9P1Bp7nT3oPTY0,393 -pytz/zoneinfo/Pacific/Truk,sha256=xS5vy1vR7giv8GVpgU-WEFwMGLf3n1C5AaC9fa95Kv0,183 -pytz/zoneinfo/Pacific/Wake,sha256=A0anjPYQvEPq6HwKMy0wrFz5yVABpCZHMVY8zPPDgzE,183 -pytz/zoneinfo/Pacific/Wallis,sha256=g3aZvQetpj1jL8IwOmh-XvnhlOBjuseGBViFJYIG7lw,183 -pytz/zoneinfo/Pacific/Yap,sha256=xS5vy1vR7giv8GVpgU-WEFwMGLf3n1C5AaC9fa95Kv0,183 -pytz/zoneinfo/US/Alaska,sha256=9d8Kb3-dQ8u9PnTTOiP-aGCA61WWX12SRrboWbPbnRg,2380 -pytz/zoneinfo/US/Aleutian,sha256=xFyU0xZBPI9mav9l7R-Den4tOSJi3jHOWfrC6Woe3IE,2365 -pytz/zoneinfo/US/Arizona,sha256=nAE-z4K27R3eI1tfyYP-nSPI1W1hAyP3yUxro817RWQ,353 -pytz/zoneinfo/US/Central,sha256=FD8puVcXOkYAgYcjCjgSW9OgOz28ug3B0bhmEzH3FpM,3585 -pytz/zoneinfo/US/East-Indiana,sha256=VcLz_rJB-IQ16YduduLGnd_Q39NqJztVH_SA4s-tmf4,1675 -pytz/zoneinfo/US/Eastern,sha256=X6bczDAzUuEZXENIsYnzCFAU2KVqGXbI6KMr1P7baf0,3545 -pytz/zoneinfo/US/Hawaii,sha256=iIhYJL-RWppvOacDB5jagl40vnnRs1wkRGlqgcFZ8ug,276 -pytz/zoneinfo/US/Indiana-Starke,sha256=nnXdbFLFM5yOKxlf-KxqchLixehLK-MCPMNVlywg2FY,2437 -pytz/zoneinfo/US/Michigan,sha256=2QN63tOQ0w4uMPIwIGKtYEJlGyYTkocu93LK1a-u2So,2188 -pytz/zoneinfo/US/Mountain,sha256=9N88x0x50HCiWnkndE06QioF2GKpojShIQXFyWTvsi0,2453 -pytz/zoneinfo/US/Pacific,sha256=_qnWb_ZSLmnSIHPcToQXm3ysLjcrOY3C-v39thqesuE,2845 -pytz/zoneinfo/US/Samoa,sha256=chiirjhs1eiYGpQPa1b2-bYKZfPjvS7B_mydQ7rE2xo,196 -pytz-2018.3.dist-info/DESCRIPTION.rst,sha256=kkCa2BEeKlDxGt3XqnX62IzCU19tNG3EjoHhQAeerYI,19409 -pytz-2018.3.dist-info/METADATA,sha256=lekrfL4LUjtBihZ1-lL7AjaD2_atn9cZbOEZwhnI8Fg,20769 -pytz-2018.3.dist-info/RECORD,, -pytz-2018.3.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 -pytz-2018.3.dist-info/metadata.json,sha256=wTPnNKdZug-iNMrqAk6FT3JDhwm5_9_6jNjeNI3jTLo,1435 -pytz-2018.3.dist-info/top_level.txt,sha256=6xRYlt934v1yHb1JIrXgHyGxn3cqACvd-yE8ski_kcc,5 -pytz-2018.3.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 -pytz-2018.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pytz/__pycache__/exceptions.cpython-36.pyc,, -pytz/__pycache__/tzinfo.cpython-36.pyc,, -pytz/__pycache__/reference.cpython-36.pyc,, -pytz/__pycache__/lazy.cpython-36.pyc,, -pytz/__pycache__/tzfile.cpython-36.pyc,, -pytz/__pycache__/__init__.cpython-36.pyc,, diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/WHEEL b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/WHEEL deleted file mode 100644 index 8b6dd1b5..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.29.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/metadata.json b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/metadata.json deleted file mode 100644 index cc0e5845..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 6 - Mature", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.4", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules"], "description_content_type": "UNKNOWN", "download_url": "http://pypi.python.org/pypi/pytz", "extensions": {"python.details": {"contacts": [{"email": "stuart@stuartbishop.net", "name": "Stuart Bishop", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "http://pythonhosted.org/pytz"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["timezone", "tzinfo", "datetime", "olson", "time"], "license": "MIT", "metadata_version": "2.0", "name": "pytz", "platform": "Independant", "summary": "World timezone definitions, modern and historical", "version": "2018.3"} \ No newline at end of file diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/top_level.txt b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/top_level.txt deleted file mode 100644 index af44f198..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -pytz diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/zip-safe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/zip-safe deleted file mode 100644 index 8b137891..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz-2018.3.dist-info/zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__init__.py deleted file mode 100644 index 5f753b66..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__init__.py +++ /dev/null @@ -1,1529 +0,0 @@ -''' -datetime.tzinfo timezone definitions generated from the -Olson timezone database: - - ftp://elsie.nci.nih.gov/pub/tz*.tar.gz - -See the datetime section of the Python Library Reference for information -on how to use these modules. -''' - -import sys -import datetime -import os.path - -from pytz.exceptions import AmbiguousTimeError -from pytz.exceptions import InvalidTimeError -from pytz.exceptions import NonExistentTimeError -from pytz.exceptions import UnknownTimeZoneError -from pytz.lazy import LazyDict, LazyList, LazySet -from pytz.tzinfo import unpickler -from pytz.tzfile import build_tzinfo - - -# The IANA (nee Olson) database is updated several times a year. -OLSON_VERSION = '2018c' -VERSION = '2018.3' # Switching to pip compatible version numbering. -__version__ = VERSION - -OLSEN_VERSION = OLSON_VERSION # Old releases had this misspelling - -__all__ = [ - 'timezone', 'utc', 'country_timezones', 'country_names', - 'AmbiguousTimeError', 'InvalidTimeError', - 'NonExistentTimeError', 'UnknownTimeZoneError', - 'all_timezones', 'all_timezones_set', - 'common_timezones', 'common_timezones_set', -] - - -try: - unicode - -except NameError: # Python 3.x - - # Python 3.x doesn't have unicode(), making writing code - # for Python 2.3 and Python 3.x a pain. - unicode = str - - def ascii(s): - r""" - >>> ascii('Hello') - 'Hello' - >>> ascii('\N{TRADE MARK SIGN}') #doctest: +IGNORE_EXCEPTION_DETAIL - Traceback (most recent call last): - ... - UnicodeEncodeError: ... - """ - if type(s) == bytes: - s = s.decode('ASCII') - else: - s.encode('ASCII') # Raise an exception if not ASCII - return s # But the string - not a byte string. - -else: # Python 2.x - - def ascii(s): - r""" - >>> ascii('Hello') - 'Hello' - >>> ascii(u'Hello') - 'Hello' - >>> ascii(u'\N{TRADE MARK SIGN}') #doctest: +IGNORE_EXCEPTION_DETAIL - Traceback (most recent call last): - ... - UnicodeEncodeError: ... - """ - return s.encode('ASCII') - - -def open_resource(name): - """Open a resource from the zoneinfo subdir for reading. - - Uses the pkg_resources module if available and no standard file - found at the calculated location. - - It is possible to specify different location for zoneinfo - subdir by using the PYTZ_TZDATADIR environment variable. - """ - name_parts = name.lstrip('/').split('/') - for part in name_parts: - if part == os.path.pardir or os.path.sep in part: - raise ValueError('Bad path segment: %r' % part) - zoneinfo_dir = os.environ.get('PYTZ_TZDATADIR', None) - if zoneinfo_dir is not None: - filename = os.path.join(zoneinfo_dir, *name_parts) - else: - filename = os.path.join(os.path.dirname(__file__), - 'zoneinfo', *name_parts) - if not os.path.exists(filename): - # http://bugs.launchpad.net/bugs/383171 - we avoid using this - # unless absolutely necessary to help when a broken version of - # pkg_resources is installed. - try: - from pkg_resources import resource_stream - except ImportError: - resource_stream = None - - if resource_stream is not None: - return resource_stream(__name__, 'zoneinfo/' + name) - return open(filename, 'rb') - - -def resource_exists(name): - """Return true if the given resource exists""" - try: - open_resource(name).close() - return True - except IOError: - return False - - -_tzinfo_cache = {} - - -def timezone(zone): - r''' Return a datetime.tzinfo implementation for the given timezone - - >>> from datetime import datetime, timedelta - >>> utc = timezone('UTC') - >>> eastern = timezone('US/Eastern') - >>> eastern.zone - 'US/Eastern' - >>> timezone(unicode('US/Eastern')) is eastern - True - >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc) - >>> loc_dt = utc_dt.astimezone(eastern) - >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)' - >>> loc_dt.strftime(fmt) - '2002-10-27 01:00:00 EST (-0500)' - >>> (loc_dt - timedelta(minutes=10)).strftime(fmt) - '2002-10-27 00:50:00 EST (-0500)' - >>> eastern.normalize(loc_dt - timedelta(minutes=10)).strftime(fmt) - '2002-10-27 01:50:00 EDT (-0400)' - >>> (loc_dt + timedelta(minutes=10)).strftime(fmt) - '2002-10-27 01:10:00 EST (-0500)' - - Raises UnknownTimeZoneError if passed an unknown zone. - - >>> try: - ... timezone('Asia/Shangri-La') - ... except UnknownTimeZoneError: - ... print('Unknown') - Unknown - - >>> try: - ... timezone(unicode('\N{TRADE MARK SIGN}')) - ... except UnknownTimeZoneError: - ... print('Unknown') - Unknown - - ''' - if zone.upper() == 'UTC': - return utc - - try: - zone = ascii(zone) - except UnicodeEncodeError: - # All valid timezones are ASCII - raise UnknownTimeZoneError(zone) - - zone = _unmunge_zone(zone) - if zone not in _tzinfo_cache: - if zone in all_timezones_set: - fp = open_resource(zone) - try: - _tzinfo_cache[zone] = build_tzinfo(zone, fp) - finally: - fp.close() - else: - raise UnknownTimeZoneError(zone) - - return _tzinfo_cache[zone] - - -def _unmunge_zone(zone): - """Undo the time zone name munging done by older versions of pytz.""" - return zone.replace('_plus_', '+').replace('_minus_', '-') - - -ZERO = datetime.timedelta(0) -HOUR = datetime.timedelta(hours=1) - - -class UTC(datetime.tzinfo): - """UTC - - Optimized UTC implementation. It unpickles using the single module global - instance defined beneath this class declaration. - """ - zone = "UTC" - - _utcoffset = ZERO - _dst = ZERO - _tzname = zone - - def fromutc(self, dt): - if dt.tzinfo is None: - return self.localize(dt) - return super(utc.__class__, self).fromutc(dt) - - def utcoffset(self, dt): - return ZERO - - def tzname(self, dt): - return "UTC" - - def dst(self, dt): - return ZERO - - def __reduce__(self): - return _UTC, () - - def localize(self, dt, is_dst=False): - '''Convert naive time to local time''' - if dt.tzinfo is not None: - raise ValueError('Not naive datetime (tzinfo is already set)') - return dt.replace(tzinfo=self) - - def normalize(self, dt, is_dst=False): - '''Correct the timezone information on the given datetime''' - if dt.tzinfo is self: - return dt - if dt.tzinfo is None: - raise ValueError('Naive time - no tzinfo set') - return dt.astimezone(self) - - def __repr__(self): - return "<UTC>" - - def __str__(self): - return "UTC" - - -UTC = utc = UTC() # UTC is a singleton - - -def _UTC(): - """Factory function for utc unpickling. - - Makes sure that unpickling a utc instance always returns the same - module global. - - These examples belong in the UTC class above, but it is obscured; or in - the README.txt, but we are not depending on Python 2.4 so integrating - the README.txt examples with the unit tests is not trivial. - - >>> import datetime, pickle - >>> dt = datetime.datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc) - >>> naive = dt.replace(tzinfo=None) - >>> p = pickle.dumps(dt, 1) - >>> naive_p = pickle.dumps(naive, 1) - >>> len(p) - len(naive_p) - 17 - >>> new = pickle.loads(p) - >>> new == dt - True - >>> new is dt - False - >>> new.tzinfo is dt.tzinfo - True - >>> utc is UTC is timezone('UTC') - True - >>> utc is timezone('GMT') - False - """ - return utc -_UTC.__safe_for_unpickling__ = True - - -def _p(*args): - """Factory function for unpickling pytz tzinfo instances. - - Just a wrapper around tzinfo.unpickler to save a few bytes in each pickle - by shortening the path. - """ - return unpickler(*args) -_p.__safe_for_unpickling__ = True - - -class _CountryTimezoneDict(LazyDict): - """Map ISO 3166 country code to a list of timezone names commonly used - in that country. - - iso3166_code is the two letter code used to identify the country. - - >>> def print_list(list_of_strings): - ... 'We use a helper so doctests work under Python 2.3 -> 3.x' - ... for s in list_of_strings: - ... print(s) - - >>> print_list(country_timezones['nz']) - Pacific/Auckland - Pacific/Chatham - >>> print_list(country_timezones['ch']) - Europe/Zurich - >>> print_list(country_timezones['CH']) - Europe/Zurich - >>> print_list(country_timezones[unicode('ch')]) - Europe/Zurich - >>> print_list(country_timezones['XXX']) - Traceback (most recent call last): - ... - KeyError: 'XXX' - - Previously, this information was exposed as a function rather than a - dictionary. This is still supported:: - - >>> print_list(country_timezones('nz')) - Pacific/Auckland - Pacific/Chatham - """ - def __call__(self, iso3166_code): - """Backwards compatibility.""" - return self[iso3166_code] - - def _fill(self): - data = {} - zone_tab = open_resource('zone.tab') - try: - for line in zone_tab: - line = line.decode('UTF-8') - if line.startswith('#'): - continue - code, coordinates, zone = line.split(None, 4)[:3] - if zone not in all_timezones_set: - continue - try: - data[code].append(zone) - except KeyError: - data[code] = [zone] - self.data = data - finally: - zone_tab.close() - -country_timezones = _CountryTimezoneDict() - - -class _CountryNameDict(LazyDict): - '''Dictionary proving ISO3166 code -> English name. - - >>> print(country_names['au']) - Australia - ''' - def _fill(self): - data = {} - zone_tab = open_resource('iso3166.tab') - try: - for line in zone_tab.readlines(): - line = line.decode('UTF-8') - if line.startswith('#'): - continue - code, name = line.split(None, 1) - data[code] = name.strip() - self.data = data - finally: - zone_tab.close() - -country_names = _CountryNameDict() - - -# Time-zone info based solely on fixed offsets - -class _FixedOffset(datetime.tzinfo): - - zone = None # to match the standard pytz API - - def __init__(self, minutes): - if abs(minutes) >= 1440: - raise ValueError("absolute offset is too large", minutes) - self._minutes = minutes - self._offset = datetime.timedelta(minutes=minutes) - - def utcoffset(self, dt): - return self._offset - - def __reduce__(self): - return FixedOffset, (self._minutes, ) - - def dst(self, dt): - return ZERO - - def tzname(self, dt): - return None - - def __repr__(self): - return 'pytz.FixedOffset(%d)' % self._minutes - - def localize(self, dt, is_dst=False): - '''Convert naive time to local time''' - if dt.tzinfo is not None: - raise ValueError('Not naive datetime (tzinfo is already set)') - return dt.replace(tzinfo=self) - - def normalize(self, dt, is_dst=False): - '''Correct the timezone information on the given datetime''' - if dt.tzinfo is self: - return dt - if dt.tzinfo is None: - raise ValueError('Naive time - no tzinfo set') - return dt.astimezone(self) - - -def FixedOffset(offset, _tzinfos={}): - """return a fixed-offset timezone based off a number of minutes. - - >>> one = FixedOffset(-330) - >>> one - pytz.FixedOffset(-330) - >>> one.utcoffset(datetime.datetime.now()) - datetime.timedelta(-1, 66600) - >>> one.dst(datetime.datetime.now()) - datetime.timedelta(0) - - >>> two = FixedOffset(1380) - >>> two - pytz.FixedOffset(1380) - >>> two.utcoffset(datetime.datetime.now()) - datetime.timedelta(0, 82800) - >>> two.dst(datetime.datetime.now()) - datetime.timedelta(0) - - The datetime.timedelta must be between the range of -1 and 1 day, - non-inclusive. - - >>> FixedOffset(1440) - Traceback (most recent call last): - ... - ValueError: ('absolute offset is too large', 1440) - - >>> FixedOffset(-1440) - Traceback (most recent call last): - ... - ValueError: ('absolute offset is too large', -1440) - - An offset of 0 is special-cased to return UTC. - - >>> FixedOffset(0) is UTC - True - - There should always be only one instance of a FixedOffset per timedelta. - This should be true for multiple creation calls. - - >>> FixedOffset(-330) is one - True - >>> FixedOffset(1380) is two - True - - It should also be true for pickling. - - >>> import pickle - >>> pickle.loads(pickle.dumps(one)) is one - True - >>> pickle.loads(pickle.dumps(two)) is two - True - """ - if offset == 0: - return UTC - - info = _tzinfos.get(offset) - if info is None: - # We haven't seen this one before. we need to save it. - - # Use setdefault to avoid a race condition and make sure we have - # only one - info = _tzinfos.setdefault(offset, _FixedOffset(offset)) - - return info - -FixedOffset.__safe_for_unpickling__ = True - - -def _test(): - import doctest - sys.path.insert(0, os.pardir) - import pytz - return doctest.testmod(pytz) - -if __name__ == '__main__': - _test() -all_timezones = \ -['Africa/Abidjan', - 'Africa/Accra', - 'Africa/Addis_Ababa', - 'Africa/Algiers', - 'Africa/Asmara', - 'Africa/Asmera', - 'Africa/Bamako', - 'Africa/Bangui', - 'Africa/Banjul', - 'Africa/Bissau', - 'Africa/Blantyre', - 'Africa/Brazzaville', - 'Africa/Bujumbura', - 'Africa/Cairo', - 'Africa/Casablanca', - 'Africa/Ceuta', - 'Africa/Conakry', - 'Africa/Dakar', - 'Africa/Dar_es_Salaam', - 'Africa/Djibouti', - 'Africa/Douala', - 'Africa/El_Aaiun', - 'Africa/Freetown', - 'Africa/Gaborone', - 'Africa/Harare', - 'Africa/Johannesburg', - 'Africa/Juba', - 'Africa/Kampala', - 'Africa/Khartoum', - 'Africa/Kigali', - 'Africa/Kinshasa', - 'Africa/Lagos', - 'Africa/Libreville', - 'Africa/Lome', - 'Africa/Luanda', - 'Africa/Lubumbashi', - 'Africa/Lusaka', - 'Africa/Malabo', - 'Africa/Maputo', - 'Africa/Maseru', - 'Africa/Mbabane', - 'Africa/Mogadishu', - 'Africa/Monrovia', - 'Africa/Nairobi', - 'Africa/Ndjamena', - 'Africa/Niamey', - 'Africa/Nouakchott', - 'Africa/Ouagadougou', - 'Africa/Porto-Novo', - 'Africa/Sao_Tome', - 'Africa/Timbuktu', - 'Africa/Tripoli', - 'Africa/Tunis', - 'Africa/Windhoek', - 'America/Adak', - 'America/Anchorage', - 'America/Anguilla', - 'America/Antigua', - 'America/Araguaina', - 'America/Argentina/Buenos_Aires', - 'America/Argentina/Catamarca', - 'America/Argentina/ComodRivadavia', - 'America/Argentina/Cordoba', - 'America/Argentina/Jujuy', - 'America/Argentina/La_Rioja', - 'America/Argentina/Mendoza', - 'America/Argentina/Rio_Gallegos', - 'America/Argentina/Salta', - 'America/Argentina/San_Juan', - 'America/Argentina/San_Luis', - 'America/Argentina/Tucuman', - 'America/Argentina/Ushuaia', - 'America/Aruba', - 'America/Asuncion', - 'America/Atikokan', - 'America/Atka', - 'America/Bahia', - 'America/Bahia_Banderas', - 'America/Barbados', - 'America/Belem', - 'America/Belize', - 'America/Blanc-Sablon', - 'America/Boa_Vista', - 'America/Bogota', - 'America/Boise', - 'America/Buenos_Aires', - 'America/Cambridge_Bay', - 'America/Campo_Grande', - 'America/Cancun', - 'America/Caracas', - 'America/Catamarca', - 'America/Cayenne', - 'America/Cayman', - 'America/Chicago', - 'America/Chihuahua', - 'America/Coral_Harbour', - 'America/Cordoba', - 'America/Costa_Rica', - 'America/Creston', - 'America/Cuiaba', - 'America/Curacao', - 'America/Danmarkshavn', - 'America/Dawson', - 'America/Dawson_Creek', - 'America/Denver', - 'America/Detroit', - 'America/Dominica', - 'America/Edmonton', - 'America/Eirunepe', - 'America/El_Salvador', - 'America/Ensenada', - 'America/Fort_Nelson', - 'America/Fort_Wayne', - 'America/Fortaleza', - 'America/Glace_Bay', - 'America/Godthab', - 'America/Goose_Bay', - 'America/Grand_Turk', - 'America/Grenada', - 'America/Guadeloupe', - 'America/Guatemala', - 'America/Guayaquil', - 'America/Guyana', - 'America/Halifax', - 'America/Havana', - 'America/Hermosillo', - 'America/Indiana/Indianapolis', - 'America/Indiana/Knox', - 'America/Indiana/Marengo', - 'America/Indiana/Petersburg', - 'America/Indiana/Tell_City', - 'America/Indiana/Vevay', - 'America/Indiana/Vincennes', - 'America/Indiana/Winamac', - 'America/Indianapolis', - 'America/Inuvik', - 'America/Iqaluit', - 'America/Jamaica', - 'America/Jujuy', - 'America/Juneau', - 'America/Kentucky/Louisville', - 'America/Kentucky/Monticello', - 'America/Knox_IN', - 'America/Kralendijk', - 'America/La_Paz', - 'America/Lima', - 'America/Los_Angeles', - 'America/Louisville', - 'America/Lower_Princes', - 'America/Maceio', - 'America/Managua', - 'America/Manaus', - 'America/Marigot', - 'America/Martinique', - 'America/Matamoros', - 'America/Mazatlan', - 'America/Mendoza', - 'America/Menominee', - 'America/Merida', - 'America/Metlakatla', - 'America/Mexico_City', - 'America/Miquelon', - 'America/Moncton', - 'America/Monterrey', - 'America/Montevideo', - 'America/Montreal', - 'America/Montserrat', - 'America/Nassau', - 'America/New_York', - 'America/Nipigon', - 'America/Nome', - 'America/Noronha', - 'America/North_Dakota/Beulah', - 'America/North_Dakota/Center', - 'America/North_Dakota/New_Salem', - 'America/Ojinaga', - 'America/Panama', - 'America/Pangnirtung', - 'America/Paramaribo', - 'America/Phoenix', - 'America/Port-au-Prince', - 'America/Port_of_Spain', - 'America/Porto_Acre', - 'America/Porto_Velho', - 'America/Puerto_Rico', - 'America/Punta_Arenas', - 'America/Rainy_River', - 'America/Rankin_Inlet', - 'America/Recife', - 'America/Regina', - 'America/Resolute', - 'America/Rio_Branco', - 'America/Rosario', - 'America/Santa_Isabel', - 'America/Santarem', - 'America/Santiago', - 'America/Santo_Domingo', - 'America/Sao_Paulo', - 'America/Scoresbysund', - 'America/Shiprock', - 'America/Sitka', - 'America/St_Barthelemy', - 'America/St_Johns', - 'America/St_Kitts', - 'America/St_Lucia', - 'America/St_Thomas', - 'America/St_Vincent', - 'America/Swift_Current', - 'America/Tegucigalpa', - 'America/Thule', - 'America/Thunder_Bay', - 'America/Tijuana', - 'America/Toronto', - 'America/Tortola', - 'America/Vancouver', - 'America/Virgin', - 'America/Whitehorse', - 'America/Winnipeg', - 'America/Yakutat', - 'America/Yellowknife', - 'Antarctica/Casey', - 'Antarctica/Davis', - 'Antarctica/DumontDUrville', - 'Antarctica/Macquarie', - 'Antarctica/Mawson', - 'Antarctica/McMurdo', - 'Antarctica/Palmer', - 'Antarctica/Rothera', - 'Antarctica/South_Pole', - 'Antarctica/Syowa', - 'Antarctica/Troll', - 'Antarctica/Vostok', - 'Arctic/Longyearbyen', - 'Asia/Aden', - 'Asia/Almaty', - 'Asia/Amman', - 'Asia/Anadyr', - 'Asia/Aqtau', - 'Asia/Aqtobe', - 'Asia/Ashgabat', - 'Asia/Ashkhabad', - 'Asia/Atyrau', - 'Asia/Baghdad', - 'Asia/Bahrain', - 'Asia/Baku', - 'Asia/Bangkok', - 'Asia/Barnaul', - 'Asia/Beirut', - 'Asia/Bishkek', - 'Asia/Brunei', - 'Asia/Calcutta', - 'Asia/Chita', - 'Asia/Choibalsan', - 'Asia/Chongqing', - 'Asia/Chungking', - 'Asia/Colombo', - 'Asia/Dacca', - 'Asia/Damascus', - 'Asia/Dhaka', - 'Asia/Dili', - 'Asia/Dubai', - 'Asia/Dushanbe', - 'Asia/Famagusta', - 'Asia/Gaza', - 'Asia/Harbin', - 'Asia/Hebron', - 'Asia/Ho_Chi_Minh', - 'Asia/Hong_Kong', - 'Asia/Hovd', - 'Asia/Irkutsk', - 'Asia/Istanbul', - 'Asia/Jakarta', - 'Asia/Jayapura', - 'Asia/Jerusalem', - 'Asia/Kabul', - 'Asia/Kamchatka', - 'Asia/Karachi', - 'Asia/Kashgar', - 'Asia/Kathmandu', - 'Asia/Katmandu', - 'Asia/Khandyga', - 'Asia/Kolkata', - 'Asia/Krasnoyarsk', - 'Asia/Kuala_Lumpur', - 'Asia/Kuching', - 'Asia/Kuwait', - 'Asia/Macao', - 'Asia/Macau', - 'Asia/Magadan', - 'Asia/Makassar', - 'Asia/Manila', - 'Asia/Muscat', - 'Asia/Nicosia', - 'Asia/Novokuznetsk', - 'Asia/Novosibirsk', - 'Asia/Omsk', - 'Asia/Oral', - 'Asia/Phnom_Penh', - 'Asia/Pontianak', - 'Asia/Pyongyang', - 'Asia/Qatar', - 'Asia/Qyzylorda', - 'Asia/Rangoon', - 'Asia/Riyadh', - 'Asia/Saigon', - 'Asia/Sakhalin', - 'Asia/Samarkand', - 'Asia/Seoul', - 'Asia/Shanghai', - 'Asia/Singapore', - 'Asia/Srednekolymsk', - 'Asia/Taipei', - 'Asia/Tashkent', - 'Asia/Tbilisi', - 'Asia/Tehran', - 'Asia/Tel_Aviv', - 'Asia/Thimbu', - 'Asia/Thimphu', - 'Asia/Tokyo', - 'Asia/Tomsk', - 'Asia/Ujung_Pandang', - 'Asia/Ulaanbaatar', - 'Asia/Ulan_Bator', - 'Asia/Urumqi', - 'Asia/Ust-Nera', - 'Asia/Vientiane', - 'Asia/Vladivostok', - 'Asia/Yakutsk', - 'Asia/Yangon', - 'Asia/Yekaterinburg', - 'Asia/Yerevan', - 'Atlantic/Azores', - 'Atlantic/Bermuda', - 'Atlantic/Canary', - 'Atlantic/Cape_Verde', - 'Atlantic/Faeroe', - 'Atlantic/Faroe', - 'Atlantic/Jan_Mayen', - 'Atlantic/Madeira', - 'Atlantic/Reykjavik', - 'Atlantic/South_Georgia', - 'Atlantic/St_Helena', - 'Atlantic/Stanley', - 'Australia/ACT', - 'Australia/Adelaide', - 'Australia/Brisbane', - 'Australia/Broken_Hill', - 'Australia/Canberra', - 'Australia/Currie', - 'Australia/Darwin', - 'Australia/Eucla', - 'Australia/Hobart', - 'Australia/LHI', - 'Australia/Lindeman', - 'Australia/Lord_Howe', - 'Australia/Melbourne', - 'Australia/NSW', - 'Australia/North', - 'Australia/Perth', - 'Australia/Queensland', - 'Australia/South', - 'Australia/Sydney', - 'Australia/Tasmania', - 'Australia/Victoria', - 'Australia/West', - 'Australia/Yancowinna', - 'Brazil/Acre', - 'Brazil/DeNoronha', - 'Brazil/East', - 'Brazil/West', - 'CET', - 'CST6CDT', - 'Canada/Atlantic', - 'Canada/Central', - 'Canada/Eastern', - 'Canada/Mountain', - 'Canada/Newfoundland', - 'Canada/Pacific', - 'Canada/Saskatchewan', - 'Canada/Yukon', - 'Chile/Continental', - 'Chile/EasterIsland', - 'Cuba', - 'EET', - 'EST', - 'EST5EDT', - 'Egypt', - 'Eire', - 'Etc/GMT', - 'Etc/GMT+0', - 'Etc/GMT+1', - 'Etc/GMT+10', - 'Etc/GMT+11', - 'Etc/GMT+12', - 'Etc/GMT+2', - 'Etc/GMT+3', - 'Etc/GMT+4', - 'Etc/GMT+5', - 'Etc/GMT+6', - 'Etc/GMT+7', - 'Etc/GMT+8', - 'Etc/GMT+9', - 'Etc/GMT-0', - 'Etc/GMT-1', - 'Etc/GMT-10', - 'Etc/GMT-11', - 'Etc/GMT-12', - 'Etc/GMT-13', - 'Etc/GMT-14', - 'Etc/GMT-2', - 'Etc/GMT-3', - 'Etc/GMT-4', - 'Etc/GMT-5', - 'Etc/GMT-6', - 'Etc/GMT-7', - 'Etc/GMT-8', - 'Etc/GMT-9', - 'Etc/GMT0', - 'Etc/Greenwich', - 'Etc/UCT', - 'Etc/UTC', - 'Etc/Universal', - 'Etc/Zulu', - 'Europe/Amsterdam', - 'Europe/Andorra', - 'Europe/Astrakhan', - 'Europe/Athens', - 'Europe/Belfast', - 'Europe/Belgrade', - 'Europe/Berlin', - 'Europe/Bratislava', - 'Europe/Brussels', - 'Europe/Bucharest', - 'Europe/Budapest', - 'Europe/Busingen', - 'Europe/Chisinau', - 'Europe/Copenhagen', - 'Europe/Dublin', - 'Europe/Gibraltar', - 'Europe/Guernsey', - 'Europe/Helsinki', - 'Europe/Isle_of_Man', - 'Europe/Istanbul', - 'Europe/Jersey', - 'Europe/Kaliningrad', - 'Europe/Kiev', - 'Europe/Kirov', - 'Europe/Lisbon', - 'Europe/Ljubljana', - 'Europe/London', - 'Europe/Luxembourg', - 'Europe/Madrid', - 'Europe/Malta', - 'Europe/Mariehamn', - 'Europe/Minsk', - 'Europe/Monaco', - 'Europe/Moscow', - 'Europe/Nicosia', - 'Europe/Oslo', - 'Europe/Paris', - 'Europe/Podgorica', - 'Europe/Prague', - 'Europe/Riga', - 'Europe/Rome', - 'Europe/Samara', - 'Europe/San_Marino', - 'Europe/Sarajevo', - 'Europe/Saratov', - 'Europe/Simferopol', - 'Europe/Skopje', - 'Europe/Sofia', - 'Europe/Stockholm', - 'Europe/Tallinn', - 'Europe/Tirane', - 'Europe/Tiraspol', - 'Europe/Ulyanovsk', - 'Europe/Uzhgorod', - 'Europe/Vaduz', - 'Europe/Vatican', - 'Europe/Vienna', - 'Europe/Vilnius', - 'Europe/Volgograd', - 'Europe/Warsaw', - 'Europe/Zagreb', - 'Europe/Zaporozhye', - 'Europe/Zurich', - 'GB', - 'GB-Eire', - 'GMT', - 'GMT+0', - 'GMT-0', - 'GMT0', - 'Greenwich', - 'HST', - 'Hongkong', - 'Iceland', - 'Indian/Antananarivo', - 'Indian/Chagos', - 'Indian/Christmas', - 'Indian/Cocos', - 'Indian/Comoro', - 'Indian/Kerguelen', - 'Indian/Mahe', - 'Indian/Maldives', - 'Indian/Mauritius', - 'Indian/Mayotte', - 'Indian/Reunion', - 'Iran', - 'Israel', - 'Jamaica', - 'Japan', - 'Kwajalein', - 'Libya', - 'MET', - 'MST', - 'MST7MDT', - 'Mexico/BajaNorte', - 'Mexico/BajaSur', - 'Mexico/General', - 'NZ', - 'NZ-CHAT', - 'Navajo', - 'PRC', - 'PST8PDT', - 'Pacific/Apia', - 'Pacific/Auckland', - 'Pacific/Bougainville', - 'Pacific/Chatham', - 'Pacific/Chuuk', - 'Pacific/Easter', - 'Pacific/Efate', - 'Pacific/Enderbury', - 'Pacific/Fakaofo', - 'Pacific/Fiji', - 'Pacific/Funafuti', - 'Pacific/Galapagos', - 'Pacific/Gambier', - 'Pacific/Guadalcanal', - 'Pacific/Guam', - 'Pacific/Honolulu', - 'Pacific/Johnston', - 'Pacific/Kiritimati', - 'Pacific/Kosrae', - 'Pacific/Kwajalein', - 'Pacific/Majuro', - 'Pacific/Marquesas', - 'Pacific/Midway', - 'Pacific/Nauru', - 'Pacific/Niue', - 'Pacific/Norfolk', - 'Pacific/Noumea', - 'Pacific/Pago_Pago', - 'Pacific/Palau', - 'Pacific/Pitcairn', - 'Pacific/Pohnpei', - 'Pacific/Ponape', - 'Pacific/Port_Moresby', - 'Pacific/Rarotonga', - 'Pacific/Saipan', - 'Pacific/Samoa', - 'Pacific/Tahiti', - 'Pacific/Tarawa', - 'Pacific/Tongatapu', - 'Pacific/Truk', - 'Pacific/Wake', - 'Pacific/Wallis', - 'Pacific/Yap', - 'Poland', - 'Portugal', - 'ROC', - 'ROK', - 'Singapore', - 'Turkey', - 'UCT', - 'US/Alaska', - 'US/Aleutian', - 'US/Arizona', - 'US/Central', - 'US/East-Indiana', - 'US/Eastern', - 'US/Hawaii', - 'US/Indiana-Starke', - 'US/Michigan', - 'US/Mountain', - 'US/Pacific', - 'US/Samoa', - 'UTC', - 'Universal', - 'W-SU', - 'WET', - 'Zulu'] -all_timezones = LazyList( - tz for tz in all_timezones if resource_exists(tz)) - -all_timezones_set = LazySet(all_timezones) -common_timezones = \ -['Africa/Abidjan', - 'Africa/Accra', - 'Africa/Addis_Ababa', - 'Africa/Algiers', - 'Africa/Asmara', - 'Africa/Bamako', - 'Africa/Bangui', - 'Africa/Banjul', - 'Africa/Bissau', - 'Africa/Blantyre', - 'Africa/Brazzaville', - 'Africa/Bujumbura', - 'Africa/Cairo', - 'Africa/Casablanca', - 'Africa/Ceuta', - 'Africa/Conakry', - 'Africa/Dakar', - 'Africa/Dar_es_Salaam', - 'Africa/Djibouti', - 'Africa/Douala', - 'Africa/El_Aaiun', - 'Africa/Freetown', - 'Africa/Gaborone', - 'Africa/Harare', - 'Africa/Johannesburg', - 'Africa/Juba', - 'Africa/Kampala', - 'Africa/Khartoum', - 'Africa/Kigali', - 'Africa/Kinshasa', - 'Africa/Lagos', - 'Africa/Libreville', - 'Africa/Lome', - 'Africa/Luanda', - 'Africa/Lubumbashi', - 'Africa/Lusaka', - 'Africa/Malabo', - 'Africa/Maputo', - 'Africa/Maseru', - 'Africa/Mbabane', - 'Africa/Mogadishu', - 'Africa/Monrovia', - 'Africa/Nairobi', - 'Africa/Ndjamena', - 'Africa/Niamey', - 'Africa/Nouakchott', - 'Africa/Ouagadougou', - 'Africa/Porto-Novo', - 'Africa/Sao_Tome', - 'Africa/Tripoli', - 'Africa/Tunis', - 'Africa/Windhoek', - 'America/Adak', - 'America/Anchorage', - 'America/Anguilla', - 'America/Antigua', - 'America/Araguaina', - 'America/Argentina/Buenos_Aires', - 'America/Argentina/Catamarca', - 'America/Argentina/Cordoba', - 'America/Argentina/Jujuy', - 'America/Argentina/La_Rioja', - 'America/Argentina/Mendoza', - 'America/Argentina/Rio_Gallegos', - 'America/Argentina/Salta', - 'America/Argentina/San_Juan', - 'America/Argentina/San_Luis', - 'America/Argentina/Tucuman', - 'America/Argentina/Ushuaia', - 'America/Aruba', - 'America/Asuncion', - 'America/Atikokan', - 'America/Bahia', - 'America/Bahia_Banderas', - 'America/Barbados', - 'America/Belem', - 'America/Belize', - 'America/Blanc-Sablon', - 'America/Boa_Vista', - 'America/Bogota', - 'America/Boise', - 'America/Cambridge_Bay', - 'America/Campo_Grande', - 'America/Cancun', - 'America/Caracas', - 'America/Cayenne', - 'America/Cayman', - 'America/Chicago', - 'America/Chihuahua', - 'America/Costa_Rica', - 'America/Creston', - 'America/Cuiaba', - 'America/Curacao', - 'America/Danmarkshavn', - 'America/Dawson', - 'America/Dawson_Creek', - 'America/Denver', - 'America/Detroit', - 'America/Dominica', - 'America/Edmonton', - 'America/Eirunepe', - 'America/El_Salvador', - 'America/Fort_Nelson', - 'America/Fortaleza', - 'America/Glace_Bay', - 'America/Godthab', - 'America/Goose_Bay', - 'America/Grand_Turk', - 'America/Grenada', - 'America/Guadeloupe', - 'America/Guatemala', - 'America/Guayaquil', - 'America/Guyana', - 'America/Halifax', - 'America/Havana', - 'America/Hermosillo', - 'America/Indiana/Indianapolis', - 'America/Indiana/Knox', - 'America/Indiana/Marengo', - 'America/Indiana/Petersburg', - 'America/Indiana/Tell_City', - 'America/Indiana/Vevay', - 'America/Indiana/Vincennes', - 'America/Indiana/Winamac', - 'America/Inuvik', - 'America/Iqaluit', - 'America/Jamaica', - 'America/Juneau', - 'America/Kentucky/Louisville', - 'America/Kentucky/Monticello', - 'America/Kralendijk', - 'America/La_Paz', - 'America/Lima', - 'America/Los_Angeles', - 'America/Lower_Princes', - 'America/Maceio', - 'America/Managua', - 'America/Manaus', - 'America/Marigot', - 'America/Martinique', - 'America/Matamoros', - 'America/Mazatlan', - 'America/Menominee', - 'America/Merida', - 'America/Metlakatla', - 'America/Mexico_City', - 'America/Miquelon', - 'America/Moncton', - 'America/Monterrey', - 'America/Montevideo', - 'America/Montserrat', - 'America/Nassau', - 'America/New_York', - 'America/Nipigon', - 'America/Nome', - 'America/Noronha', - 'America/North_Dakota/Beulah', - 'America/North_Dakota/Center', - 'America/North_Dakota/New_Salem', - 'America/Ojinaga', - 'America/Panama', - 'America/Pangnirtung', - 'America/Paramaribo', - 'America/Phoenix', - 'America/Port-au-Prince', - 'America/Port_of_Spain', - 'America/Porto_Velho', - 'America/Puerto_Rico', - 'America/Punta_Arenas', - 'America/Rainy_River', - 'America/Rankin_Inlet', - 'America/Recife', - 'America/Regina', - 'America/Resolute', - 'America/Rio_Branco', - 'America/Santarem', - 'America/Santiago', - 'America/Santo_Domingo', - 'America/Sao_Paulo', - 'America/Scoresbysund', - 'America/Sitka', - 'America/St_Barthelemy', - 'America/St_Johns', - 'America/St_Kitts', - 'America/St_Lucia', - 'America/St_Thomas', - 'America/St_Vincent', - 'America/Swift_Current', - 'America/Tegucigalpa', - 'America/Thule', - 'America/Thunder_Bay', - 'America/Tijuana', - 'America/Toronto', - 'America/Tortola', - 'America/Vancouver', - 'America/Whitehorse', - 'America/Winnipeg', - 'America/Yakutat', - 'America/Yellowknife', - 'Antarctica/Casey', - 'Antarctica/Davis', - 'Antarctica/DumontDUrville', - 'Antarctica/Macquarie', - 'Antarctica/Mawson', - 'Antarctica/McMurdo', - 'Antarctica/Palmer', - 'Antarctica/Rothera', - 'Antarctica/Syowa', - 'Antarctica/Troll', - 'Antarctica/Vostok', - 'Arctic/Longyearbyen', - 'Asia/Aden', - 'Asia/Almaty', - 'Asia/Amman', - 'Asia/Anadyr', - 'Asia/Aqtau', - 'Asia/Aqtobe', - 'Asia/Ashgabat', - 'Asia/Atyrau', - 'Asia/Baghdad', - 'Asia/Bahrain', - 'Asia/Baku', - 'Asia/Bangkok', - 'Asia/Barnaul', - 'Asia/Beirut', - 'Asia/Bishkek', - 'Asia/Brunei', - 'Asia/Chita', - 'Asia/Choibalsan', - 'Asia/Colombo', - 'Asia/Damascus', - 'Asia/Dhaka', - 'Asia/Dili', - 'Asia/Dubai', - 'Asia/Dushanbe', - 'Asia/Famagusta', - 'Asia/Gaza', - 'Asia/Hebron', - 'Asia/Ho_Chi_Minh', - 'Asia/Hong_Kong', - 'Asia/Hovd', - 'Asia/Irkutsk', - 'Asia/Jakarta', - 'Asia/Jayapura', - 'Asia/Jerusalem', - 'Asia/Kabul', - 'Asia/Kamchatka', - 'Asia/Karachi', - 'Asia/Kathmandu', - 'Asia/Khandyga', - 'Asia/Kolkata', - 'Asia/Krasnoyarsk', - 'Asia/Kuala_Lumpur', - 'Asia/Kuching', - 'Asia/Kuwait', - 'Asia/Macau', - 'Asia/Magadan', - 'Asia/Makassar', - 'Asia/Manila', - 'Asia/Muscat', - 'Asia/Nicosia', - 'Asia/Novokuznetsk', - 'Asia/Novosibirsk', - 'Asia/Omsk', - 'Asia/Oral', - 'Asia/Phnom_Penh', - 'Asia/Pontianak', - 'Asia/Pyongyang', - 'Asia/Qatar', - 'Asia/Qyzylorda', - 'Asia/Riyadh', - 'Asia/Sakhalin', - 'Asia/Samarkand', - 'Asia/Seoul', - 'Asia/Shanghai', - 'Asia/Singapore', - 'Asia/Srednekolymsk', - 'Asia/Taipei', - 'Asia/Tashkent', - 'Asia/Tbilisi', - 'Asia/Tehran', - 'Asia/Thimphu', - 'Asia/Tokyo', - 'Asia/Tomsk', - 'Asia/Ulaanbaatar', - 'Asia/Urumqi', - 'Asia/Ust-Nera', - 'Asia/Vientiane', - 'Asia/Vladivostok', - 'Asia/Yakutsk', - 'Asia/Yangon', - 'Asia/Yekaterinburg', - 'Asia/Yerevan', - 'Atlantic/Azores', - 'Atlantic/Bermuda', - 'Atlantic/Canary', - 'Atlantic/Cape_Verde', - 'Atlantic/Faroe', - 'Atlantic/Madeira', - 'Atlantic/Reykjavik', - 'Atlantic/South_Georgia', - 'Atlantic/St_Helena', - 'Atlantic/Stanley', - 'Australia/Adelaide', - 'Australia/Brisbane', - 'Australia/Broken_Hill', - 'Australia/Currie', - 'Australia/Darwin', - 'Australia/Eucla', - 'Australia/Hobart', - 'Australia/Lindeman', - 'Australia/Lord_Howe', - 'Australia/Melbourne', - 'Australia/Perth', - 'Australia/Sydney', - 'Canada/Atlantic', - 'Canada/Central', - 'Canada/Eastern', - 'Canada/Mountain', - 'Canada/Newfoundland', - 'Canada/Pacific', - 'Europe/Amsterdam', - 'Europe/Andorra', - 'Europe/Astrakhan', - 'Europe/Athens', - 'Europe/Belgrade', - 'Europe/Berlin', - 'Europe/Bratislava', - 'Europe/Brussels', - 'Europe/Bucharest', - 'Europe/Budapest', - 'Europe/Busingen', - 'Europe/Chisinau', - 'Europe/Copenhagen', - 'Europe/Dublin', - 'Europe/Gibraltar', - 'Europe/Guernsey', - 'Europe/Helsinki', - 'Europe/Isle_of_Man', - 'Europe/Istanbul', - 'Europe/Jersey', - 'Europe/Kaliningrad', - 'Europe/Kiev', - 'Europe/Kirov', - 'Europe/Lisbon', - 'Europe/Ljubljana', - 'Europe/London', - 'Europe/Luxembourg', - 'Europe/Madrid', - 'Europe/Malta', - 'Europe/Mariehamn', - 'Europe/Minsk', - 'Europe/Monaco', - 'Europe/Moscow', - 'Europe/Oslo', - 'Europe/Paris', - 'Europe/Podgorica', - 'Europe/Prague', - 'Europe/Riga', - 'Europe/Rome', - 'Europe/Samara', - 'Europe/San_Marino', - 'Europe/Sarajevo', - 'Europe/Saratov', - 'Europe/Simferopol', - 'Europe/Skopje', - 'Europe/Sofia', - 'Europe/Stockholm', - 'Europe/Tallinn', - 'Europe/Tirane', - 'Europe/Ulyanovsk', - 'Europe/Uzhgorod', - 'Europe/Vaduz', - 'Europe/Vatican', - 'Europe/Vienna', - 'Europe/Vilnius', - 'Europe/Volgograd', - 'Europe/Warsaw', - 'Europe/Zagreb', - 'Europe/Zaporozhye', - 'Europe/Zurich', - 'GMT', - 'Indian/Antananarivo', - 'Indian/Chagos', - 'Indian/Christmas', - 'Indian/Cocos', - 'Indian/Comoro', - 'Indian/Kerguelen', - 'Indian/Mahe', - 'Indian/Maldives', - 'Indian/Mauritius', - 'Indian/Mayotte', - 'Indian/Reunion', - 'Pacific/Apia', - 'Pacific/Auckland', - 'Pacific/Bougainville', - 'Pacific/Chatham', - 'Pacific/Chuuk', - 'Pacific/Easter', - 'Pacific/Efate', - 'Pacific/Enderbury', - 'Pacific/Fakaofo', - 'Pacific/Fiji', - 'Pacific/Funafuti', - 'Pacific/Galapagos', - 'Pacific/Gambier', - 'Pacific/Guadalcanal', - 'Pacific/Guam', - 'Pacific/Honolulu', - 'Pacific/Kiritimati', - 'Pacific/Kosrae', - 'Pacific/Kwajalein', - 'Pacific/Majuro', - 'Pacific/Marquesas', - 'Pacific/Midway', - 'Pacific/Nauru', - 'Pacific/Niue', - 'Pacific/Norfolk', - 'Pacific/Noumea', - 'Pacific/Pago_Pago', - 'Pacific/Palau', - 'Pacific/Pitcairn', - 'Pacific/Pohnpei', - 'Pacific/Port_Moresby', - 'Pacific/Rarotonga', - 'Pacific/Saipan', - 'Pacific/Tahiti', - 'Pacific/Tarawa', - 'Pacific/Tongatapu', - 'Pacific/Wake', - 'Pacific/Wallis', - 'US/Alaska', - 'US/Arizona', - 'US/Central', - 'US/Eastern', - 'US/Hawaii', - 'US/Mountain', - 'US/Pacific', - 'UTC'] -common_timezones = LazyList( - tz for tz in common_timezones if tz in all_timezones) - -common_timezones_set = LazySet(common_timezones) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 51e024f8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/exceptions.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/exceptions.cpython-36.pyc deleted file mode 100644 index b77728b1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/exceptions.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/lazy.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/lazy.cpython-36.pyc deleted file mode 100644 index 399b2bb2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/lazy.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/reference.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/reference.cpython-36.pyc deleted file mode 100644 index 3bcec914..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/reference.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/tzfile.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/tzfile.cpython-36.pyc deleted file mode 100644 index 2572404c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/tzfile.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/tzinfo.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/tzinfo.cpython-36.pyc deleted file mode 100644 index 577dd9b0..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/__pycache__/tzinfo.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/exceptions.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/exceptions.py deleted file mode 100644 index 18df33e8..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/exceptions.py +++ /dev/null @@ -1,48 +0,0 @@ -''' -Custom exceptions raised by pytz. -''' - -__all__ = [ - 'UnknownTimeZoneError', 'InvalidTimeError', 'AmbiguousTimeError', - 'NonExistentTimeError', -] - - -class UnknownTimeZoneError(KeyError): - '''Exception raised when pytz is passed an unknown timezone. - - >>> isinstance(UnknownTimeZoneError(), LookupError) - True - - This class is actually a subclass of KeyError to provide backwards - compatibility with code relying on the undocumented behavior of earlier - pytz releases. - - >>> isinstance(UnknownTimeZoneError(), KeyError) - True - ''' - pass - - -class InvalidTimeError(Exception): - '''Base class for invalid time exceptions.''' - - -class AmbiguousTimeError(InvalidTimeError): - '''Exception raised when attempting to create an ambiguous wallclock time. - - At the end of a DST transition period, a particular wallclock time will - occur twice (once before the clocks are set back, once after). Both - possibilities may be correct, unless further information is supplied. - - See DstTzInfo.normalize() for more info - ''' - - -class NonExistentTimeError(InvalidTimeError): - '''Exception raised when attempting to create a wallclock time that - cannot exist. - - At the start of a DST transition period, the wallclock time jumps forward. - The instants jumped over never occur. - ''' diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/lazy.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/lazy.py deleted file mode 100644 index fe91ff8d..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/lazy.py +++ /dev/null @@ -1,169 +0,0 @@ -from threading import RLock -try: - from UserDict import DictMixin -except ImportError: - from collections import Mapping as DictMixin - - -# With lazy loading, we might end up with multiple threads triggering -# it at the same time. We need a lock. -_fill_lock = RLock() - - -class LazyDict(DictMixin): - """Dictionary populated on first use.""" - data = None - - def __getitem__(self, key): - if self.data is None: - _fill_lock.acquire() - try: - if self.data is None: - self._fill() - finally: - _fill_lock.release() - return self.data[key.upper()] - - def __contains__(self, key): - if self.data is None: - _fill_lock.acquire() - try: - if self.data is None: - self._fill() - finally: - _fill_lock.release() - return key in self.data - - def __iter__(self): - if self.data is None: - _fill_lock.acquire() - try: - if self.data is None: - self._fill() - finally: - _fill_lock.release() - return iter(self.data) - - def __len__(self): - if self.data is None: - _fill_lock.acquire() - try: - if self.data is None: - self._fill() - finally: - _fill_lock.release() - return len(self.data) - - def keys(self): - if self.data is None: - _fill_lock.acquire() - try: - if self.data is None: - self._fill() - finally: - _fill_lock.release() - return self.data.keys() - - -class LazyList(list): - """List populated on first use.""" - - _props = [ - '__str__', '__repr__', '__unicode__', - '__hash__', '__sizeof__', '__cmp__', - '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', - 'append', 'count', 'index', 'extend', 'insert', 'pop', 'remove', - 'reverse', 'sort', '__add__', '__radd__', '__iadd__', '__mul__', - '__rmul__', '__imul__', '__contains__', '__len__', '__nonzero__', - '__getitem__', '__setitem__', '__delitem__', '__iter__', - '__reversed__', '__getslice__', '__setslice__', '__delslice__'] - - def __new__(cls, fill_iter=None): - - if fill_iter is None: - return list() - - # We need a new class as we will be dynamically messing with its - # methods. - class LazyList(list): - pass - - fill_iter = [fill_iter] - - def lazy(name): - def _lazy(self, *args, **kw): - _fill_lock.acquire() - try: - if len(fill_iter) > 0: - list.extend(self, fill_iter.pop()) - for method_name in cls._props: - delattr(LazyList, method_name) - finally: - _fill_lock.release() - return getattr(list, name)(self, *args, **kw) - return _lazy - - for name in cls._props: - setattr(LazyList, name, lazy(name)) - - new_list = LazyList() - return new_list - -# Not all versions of Python declare the same magic methods. -# Filter out properties that don't exist in this version of Python -# from the list. -LazyList._props = [prop for prop in LazyList._props if hasattr(list, prop)] - - -class LazySet(set): - """Set populated on first use.""" - - _props = ( - '__str__', '__repr__', '__unicode__', - '__hash__', '__sizeof__', '__cmp__', - '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', - '__contains__', '__len__', '__nonzero__', - '__getitem__', '__setitem__', '__delitem__', '__iter__', - '__sub__', '__and__', '__xor__', '__or__', - '__rsub__', '__rand__', '__rxor__', '__ror__', - '__isub__', '__iand__', '__ixor__', '__ior__', - 'add', 'clear', 'copy', 'difference', 'difference_update', - 'discard', 'intersection', 'intersection_update', 'isdisjoint', - 'issubset', 'issuperset', 'pop', 'remove', - 'symmetric_difference', 'symmetric_difference_update', - 'union', 'update') - - def __new__(cls, fill_iter=None): - - if fill_iter is None: - return set() - - class LazySet(set): - pass - - fill_iter = [fill_iter] - - def lazy(name): - def _lazy(self, *args, **kw): - _fill_lock.acquire() - try: - if len(fill_iter) > 0: - for i in fill_iter.pop(): - set.add(self, i) - for method_name in cls._props: - delattr(LazySet, method_name) - finally: - _fill_lock.release() - return getattr(set, name)(self, *args, **kw) - return _lazy - - for name in cls._props: - setattr(LazySet, name, lazy(name)) - - new_set = LazySet() - return new_set - -# Not all versions of Python declare the same magic methods. -# Filter out properties that don't exist in this version of Python -# from the list. -LazySet._props = [prop for prop in LazySet._props if hasattr(set, prop)] diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/reference.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/reference.py deleted file mode 100644 index f765ca0a..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/reference.py +++ /dev/null @@ -1,140 +0,0 @@ -''' -Reference tzinfo implementations from the Python docs. -Used for testing against as they are only correct for the years -1987 to 2006. Do not use these for real code. -''' - -from datetime import tzinfo, timedelta, datetime -from pytz import HOUR, ZERO, UTC - -__all__ = [ - 'FixedOffset', - 'LocalTimezone', - 'USTimeZone', - 'Eastern', - 'Central', - 'Mountain', - 'Pacific', - 'UTC' -] - - -# A class building tzinfo objects for fixed-offset time zones. -# Note that FixedOffset(0, "UTC") is a different way to build a -# UTC tzinfo object. -class FixedOffset(tzinfo): - """Fixed offset in minutes east from UTC.""" - - def __init__(self, offset, name): - self.__offset = timedelta(minutes=offset) - self.__name = name - - def utcoffset(self, dt): - return self.__offset - - def tzname(self, dt): - return self.__name - - def dst(self, dt): - return ZERO - - -import time as _time - -STDOFFSET = timedelta(seconds=-_time.timezone) -if _time.daylight: - DSTOFFSET = timedelta(seconds=-_time.altzone) -else: - DSTOFFSET = STDOFFSET - -DSTDIFF = DSTOFFSET - STDOFFSET - - -# A class capturing the platform's idea of local time. -class LocalTimezone(tzinfo): - - def utcoffset(self, dt): - if self._isdst(dt): - return DSTOFFSET - else: - return STDOFFSET - - def dst(self, dt): - if self._isdst(dt): - return DSTDIFF - else: - return ZERO - - def tzname(self, dt): - return _time.tzname[self._isdst(dt)] - - def _isdst(self, dt): - tt = (dt.year, dt.month, dt.day, - dt.hour, dt.minute, dt.second, - dt.weekday(), 0, -1) - stamp = _time.mktime(tt) - tt = _time.localtime(stamp) - return tt.tm_isdst > 0 - -Local = LocalTimezone() - - -def first_sunday_on_or_after(dt): - days_to_go = 6 - dt.weekday() - if days_to_go: - dt += timedelta(days_to_go) - return dt - - -# In the US, DST starts at 2am (standard time) on the first Sunday in April. -DSTSTART = datetime(1, 4, 1, 2) -# and ends at 2am (DST time; 1am standard time) on the last Sunday of Oct. -# which is the first Sunday on or after Oct 25. -DSTEND = datetime(1, 10, 25, 1) - - -# A complete implementation of current DST rules for major US time zones. -class USTimeZone(tzinfo): - - def __init__(self, hours, reprname, stdname, dstname): - self.stdoffset = timedelta(hours=hours) - self.reprname = reprname - self.stdname = stdname - self.dstname = dstname - - def __repr__(self): - return self.reprname - - def tzname(self, dt): - if self.dst(dt): - return self.dstname - else: - return self.stdname - - def utcoffset(self, dt): - return self.stdoffset + self.dst(dt) - - def dst(self, dt): - if dt is None or dt.tzinfo is None: - # An exception may be sensible here, in one or both cases. - # It depends on how you want to treat them. The default - # fromutc() implementation (called by the default astimezone() - # implementation) passes a datetime with dt.tzinfo is self. - return ZERO - assert dt.tzinfo is self - - # Find first Sunday in April & the last in October. - start = first_sunday_on_or_after(DSTSTART.replace(year=dt.year)) - end = first_sunday_on_or_after(DSTEND.replace(year=dt.year)) - - # Can't compare naive to aware objects, so strip the timezone from - # dt first. - if start <= dt.replace(tzinfo=None) < end: - return HOUR - else: - return ZERO - -Eastern = USTimeZone(-5, "Eastern", "EST", "EDT") -Central = USTimeZone(-6, "Central", "CST", "CDT") -Mountain = USTimeZone(-7, "Mountain", "MST", "MDT") -Pacific = USTimeZone(-8, "Pacific", "PST", "PDT") diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/tzfile.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/tzfile.py deleted file mode 100644 index 25117f32..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/tzfile.py +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env python -''' -$Id: tzfile.py,v 1.8 2004/06/03 00:15:24 zenzen Exp $ -''' - -from datetime import datetime -from struct import unpack, calcsize - -from pytz.tzinfo import StaticTzInfo, DstTzInfo, memorized_ttinfo -from pytz.tzinfo import memorized_datetime, memorized_timedelta - - -def _byte_string(s): - """Cast a string or byte string to an ASCII byte string.""" - return s.encode('ASCII') - -_NULL = _byte_string('\0') - - -def _std_string(s): - """Cast a string or byte string to an ASCII string.""" - return str(s.decode('ASCII')) - - -def build_tzinfo(zone, fp): - head_fmt = '>4s c 15x 6l' - head_size = calcsize(head_fmt) - (magic, format, ttisgmtcnt, ttisstdcnt, leapcnt, timecnt, - typecnt, charcnt) = unpack(head_fmt, fp.read(head_size)) - - # Make sure it is a tzfile(5) file - assert magic == _byte_string('TZif'), 'Got magic %s' % repr(magic) - - # Read out the transition times, localtime indices and ttinfo structures. - data_fmt = '>%(timecnt)dl %(timecnt)dB %(ttinfo)s %(charcnt)ds' % dict( - timecnt=timecnt, ttinfo='lBB' * typecnt, charcnt=charcnt) - data_size = calcsize(data_fmt) - data = unpack(data_fmt, fp.read(data_size)) - - # make sure we unpacked the right number of values - assert len(data) == 2 * timecnt + 3 * typecnt + 1 - transitions = [memorized_datetime(trans) - for trans in data[:timecnt]] - lindexes = list(data[timecnt:2 * timecnt]) - ttinfo_raw = data[2 * timecnt:-1] - tznames_raw = data[-1] - del data - - # Process ttinfo into separate structs - ttinfo = [] - tznames = {} - i = 0 - while i < len(ttinfo_raw): - # have we looked up this timezone name yet? - tzname_offset = ttinfo_raw[i + 2] - if tzname_offset not in tznames: - nul = tznames_raw.find(_NULL, tzname_offset) - if nul < 0: - nul = len(tznames_raw) - tznames[tzname_offset] = _std_string( - tznames_raw[tzname_offset:nul]) - ttinfo.append((ttinfo_raw[i], - bool(ttinfo_raw[i + 1]), - tznames[tzname_offset])) - i += 3 - - # Now build the timezone object - if len(ttinfo) == 1 or len(transitions) == 0: - ttinfo[0][0], ttinfo[0][2] - cls = type(zone, (StaticTzInfo,), dict( - zone=zone, - _utcoffset=memorized_timedelta(ttinfo[0][0]), - _tzname=ttinfo[0][2])) - else: - # Early dates use the first standard time ttinfo - i = 0 - while ttinfo[i][1]: - i += 1 - if ttinfo[i] == ttinfo[lindexes[0]]: - transitions[0] = datetime.min - else: - transitions.insert(0, datetime.min) - lindexes.insert(0, i) - - # calculate transition info - transition_info = [] - for i in range(len(transitions)): - inf = ttinfo[lindexes[i]] - utcoffset = inf[0] - if not inf[1]: - dst = 0 - else: - for j in range(i - 1, -1, -1): - prev_inf = ttinfo[lindexes[j]] - if not prev_inf[1]: - break - dst = inf[0] - prev_inf[0] # dst offset - - # Bad dst? Look further. DST > 24 hours happens when - # a timzone has moved across the international dateline. - if dst <= 0 or dst > 3600 * 3: - for j in range(i + 1, len(transitions)): - stdinf = ttinfo[lindexes[j]] - if not stdinf[1]: - dst = inf[0] - stdinf[0] - if dst > 0: - break # Found a useful std time. - - tzname = inf[2] - - # Round utcoffset and dst to the nearest minute or the - # datetime library will complain. Conversions to these timezones - # might be up to plus or minus 30 seconds out, but it is - # the best we can do. - utcoffset = int((utcoffset + 30) // 60) * 60 - dst = int((dst + 30) // 60) * 60 - transition_info.append(memorized_ttinfo(utcoffset, dst, tzname)) - - cls = type(zone, (DstTzInfo,), dict( - zone=zone, - _utc_transition_times=transitions, - _transition_info=transition_info)) - - return cls() - -if __name__ == '__main__': - import os.path - from pprint import pprint - base = os.path.join(os.path.dirname(__file__), 'zoneinfo') - tz = build_tzinfo('Australia/Melbourne', - open(os.path.join(base, 'Australia', 'Melbourne'), 'rb')) - tz = build_tzinfo('US/Eastern', - open(os.path.join(base, 'US', 'Eastern'), 'rb')) - pprint(tz._utc_transition_times) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/tzinfo.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/tzinfo.py deleted file mode 100644 index d78c2edc..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/tzinfo.py +++ /dev/null @@ -1,577 +0,0 @@ -'''Base classes and helpers for building zone specific tzinfo classes''' - -from datetime import datetime, timedelta, tzinfo -from bisect import bisect_right -try: - set -except NameError: - from sets import Set as set - -import pytz -from pytz.exceptions import AmbiguousTimeError, NonExistentTimeError - -__all__ = [] - -_timedelta_cache = {} - - -def memorized_timedelta(seconds): - '''Create only one instance of each distinct timedelta''' - try: - return _timedelta_cache[seconds] - except KeyError: - delta = timedelta(seconds=seconds) - _timedelta_cache[seconds] = delta - return delta - -_epoch = datetime.utcfromtimestamp(0) -_datetime_cache = {0: _epoch} - - -def memorized_datetime(seconds): - '''Create only one instance of each distinct datetime''' - try: - return _datetime_cache[seconds] - except KeyError: - # NB. We can't just do datetime.utcfromtimestamp(seconds) as this - # fails with negative values under Windows (Bug #90096) - dt = _epoch + timedelta(seconds=seconds) - _datetime_cache[seconds] = dt - return dt - -_ttinfo_cache = {} - - -def memorized_ttinfo(*args): - '''Create only one instance of each distinct tuple''' - try: - return _ttinfo_cache[args] - except KeyError: - ttinfo = ( - memorized_timedelta(args[0]), - memorized_timedelta(args[1]), - args[2] - ) - _ttinfo_cache[args] = ttinfo - return ttinfo - -_notime = memorized_timedelta(0) - - -def _to_seconds(td): - '''Convert a timedelta to seconds''' - return td.seconds + td.days * 24 * 60 * 60 - - -class BaseTzInfo(tzinfo): - # Overridden in subclass - _utcoffset = None - _tzname = None - zone = None - - def __str__(self): - return self.zone - - -class StaticTzInfo(BaseTzInfo): - '''A timezone that has a constant offset from UTC - - These timezones are rare, as most locations have changed their - offset at some point in their history - ''' - def fromutc(self, dt): - '''See datetime.tzinfo.fromutc''' - if dt.tzinfo is not None and dt.tzinfo is not self: - raise ValueError('fromutc: dt.tzinfo is not self') - return (dt + self._utcoffset).replace(tzinfo=self) - - def utcoffset(self, dt, is_dst=None): - '''See datetime.tzinfo.utcoffset - - is_dst is ignored for StaticTzInfo, and exists only to - retain compatibility with DstTzInfo. - ''' - return self._utcoffset - - def dst(self, dt, is_dst=None): - '''See datetime.tzinfo.dst - - is_dst is ignored for StaticTzInfo, and exists only to - retain compatibility with DstTzInfo. - ''' - return _notime - - def tzname(self, dt, is_dst=None): - '''See datetime.tzinfo.tzname - - is_dst is ignored for StaticTzInfo, and exists only to - retain compatibility with DstTzInfo. - ''' - return self._tzname - - def localize(self, dt, is_dst=False): - '''Convert naive time to local time''' - if dt.tzinfo is not None: - raise ValueError('Not naive datetime (tzinfo is already set)') - return dt.replace(tzinfo=self) - - def normalize(self, dt, is_dst=False): - '''Correct the timezone information on the given datetime. - - This is normally a no-op, as StaticTzInfo timezones never have - ambiguous cases to correct: - - >>> from pytz import timezone - >>> gmt = timezone('GMT') - >>> isinstance(gmt, StaticTzInfo) - True - >>> dt = datetime(2011, 5, 8, 1, 2, 3, tzinfo=gmt) - >>> gmt.normalize(dt) is dt - True - - The supported method of converting between timezones is to use - datetime.astimezone(). Currently normalize() also works: - - >>> la = timezone('America/Los_Angeles') - >>> dt = la.localize(datetime(2011, 5, 7, 1, 2, 3)) - >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)' - >>> gmt.normalize(dt).strftime(fmt) - '2011-05-07 08:02:03 GMT (+0000)' - ''' - if dt.tzinfo is self: - return dt - if dt.tzinfo is None: - raise ValueError('Naive time - no tzinfo set') - return dt.astimezone(self) - - def __repr__(self): - return '<StaticTzInfo %r>' % (self.zone,) - - def __reduce__(self): - # Special pickle to zone remains a singleton and to cope with - # database changes. - return pytz._p, (self.zone,) - - -class DstTzInfo(BaseTzInfo): - '''A timezone that has a variable offset from UTC - - The offset might change if daylight saving time comes into effect, - or at a point in history when the region decides to change their - timezone definition. - ''' - # Overridden in subclass - - # Sorted list of DST transition times, UTC - _utc_transition_times = None - - # [(utcoffset, dstoffset, tzname)] corresponding to - # _utc_transition_times entries - _transition_info = None - - zone = None - - # Set in __init__ - - _tzinfos = None - _dst = None # DST offset - - def __init__(self, _inf=None, _tzinfos=None): - if _inf: - self._tzinfos = _tzinfos - self._utcoffset, self._dst, self._tzname = _inf - else: - _tzinfos = {} - self._tzinfos = _tzinfos - self._utcoffset, self._dst, self._tzname = ( - self._transition_info[0]) - _tzinfos[self._transition_info[0]] = self - for inf in self._transition_info[1:]: - if inf not in _tzinfos: - _tzinfos[inf] = self.__class__(inf, _tzinfos) - - def fromutc(self, dt): - '''See datetime.tzinfo.fromutc''' - if (dt.tzinfo is not None and - getattr(dt.tzinfo, '_tzinfos', None) is not self._tzinfos): - raise ValueError('fromutc: dt.tzinfo is not self') - dt = dt.replace(tzinfo=None) - idx = max(0, bisect_right(self._utc_transition_times, dt) - 1) - inf = self._transition_info[idx] - return (dt + inf[0]).replace(tzinfo=self._tzinfos[inf]) - - def normalize(self, dt): - '''Correct the timezone information on the given datetime - - If date arithmetic crosses DST boundaries, the tzinfo - is not magically adjusted. This method normalizes the - tzinfo to the correct one. - - To test, first we need to do some setup - - >>> from pytz import timezone - >>> utc = timezone('UTC') - >>> eastern = timezone('US/Eastern') - >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)' - - We next create a datetime right on an end-of-DST transition point, - the instant when the wallclocks are wound back one hour. - - >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc) - >>> loc_dt = utc_dt.astimezone(eastern) - >>> loc_dt.strftime(fmt) - '2002-10-27 01:00:00 EST (-0500)' - - Now, if we subtract a few minutes from it, note that the timezone - information has not changed. - - >>> before = loc_dt - timedelta(minutes=10) - >>> before.strftime(fmt) - '2002-10-27 00:50:00 EST (-0500)' - - But we can fix that by calling the normalize method - - >>> before = eastern.normalize(before) - >>> before.strftime(fmt) - '2002-10-27 01:50:00 EDT (-0400)' - - The supported method of converting between timezones is to use - datetime.astimezone(). Currently, normalize() also works: - - >>> th = timezone('Asia/Bangkok') - >>> am = timezone('Europe/Amsterdam') - >>> dt = th.localize(datetime(2011, 5, 7, 1, 2, 3)) - >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)' - >>> am.normalize(dt).strftime(fmt) - '2011-05-06 20:02:03 CEST (+0200)' - ''' - if dt.tzinfo is None: - raise ValueError('Naive time - no tzinfo set') - - # Convert dt in localtime to UTC - offset = dt.tzinfo._utcoffset - dt = dt.replace(tzinfo=None) - dt = dt - offset - # convert it back, and return it - return self.fromutc(dt) - - def localize(self, dt, is_dst=False): - '''Convert naive time to local time. - - This method should be used to construct localtimes, rather - than passing a tzinfo argument to a datetime constructor. - - is_dst is used to determine the correct timezone in the ambigous - period at the end of daylight saving time. - - >>> from pytz import timezone - >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)' - >>> amdam = timezone('Europe/Amsterdam') - >>> dt = datetime(2004, 10, 31, 2, 0, 0) - >>> loc_dt1 = amdam.localize(dt, is_dst=True) - >>> loc_dt2 = amdam.localize(dt, is_dst=False) - >>> loc_dt1.strftime(fmt) - '2004-10-31 02:00:00 CEST (+0200)' - >>> loc_dt2.strftime(fmt) - '2004-10-31 02:00:00 CET (+0100)' - >>> str(loc_dt2 - loc_dt1) - '1:00:00' - - Use is_dst=None to raise an AmbiguousTimeError for ambiguous - times at the end of daylight saving time - - >>> try: - ... loc_dt1 = amdam.localize(dt, is_dst=None) - ... except AmbiguousTimeError: - ... print('Ambiguous') - Ambiguous - - is_dst defaults to False - - >>> amdam.localize(dt) == amdam.localize(dt, False) - True - - is_dst is also used to determine the correct timezone in the - wallclock times jumped over at the start of daylight saving time. - - >>> pacific = timezone('US/Pacific') - >>> dt = datetime(2008, 3, 9, 2, 0, 0) - >>> ploc_dt1 = pacific.localize(dt, is_dst=True) - >>> ploc_dt2 = pacific.localize(dt, is_dst=False) - >>> ploc_dt1.strftime(fmt) - '2008-03-09 02:00:00 PDT (-0700)' - >>> ploc_dt2.strftime(fmt) - '2008-03-09 02:00:00 PST (-0800)' - >>> str(ploc_dt2 - ploc_dt1) - '1:00:00' - - Use is_dst=None to raise a NonExistentTimeError for these skipped - times. - - >>> try: - ... loc_dt1 = pacific.localize(dt, is_dst=None) - ... except NonExistentTimeError: - ... print('Non-existent') - Non-existent - ''' - if dt.tzinfo is not None: - raise ValueError('Not naive datetime (tzinfo is already set)') - - # Find the two best possibilities. - possible_loc_dt = set() - for delta in [timedelta(days=-1), timedelta(days=1)]: - loc_dt = dt + delta - idx = max(0, bisect_right( - self._utc_transition_times, loc_dt) - 1) - inf = self._transition_info[idx] - tzinfo = self._tzinfos[inf] - loc_dt = tzinfo.normalize(dt.replace(tzinfo=tzinfo)) - if loc_dt.replace(tzinfo=None) == dt: - possible_loc_dt.add(loc_dt) - - if len(possible_loc_dt) == 1: - return possible_loc_dt.pop() - - # If there are no possibly correct timezones, we are attempting - # to convert a time that never happened - the time period jumped - # during the start-of-DST transition period. - if len(possible_loc_dt) == 0: - # If we refuse to guess, raise an exception. - if is_dst is None: - raise NonExistentTimeError(dt) - - # If we are forcing the pre-DST side of the DST transition, we - # obtain the correct timezone by winding the clock forward a few - # hours. - elif is_dst: - return self.localize( - dt + timedelta(hours=6), is_dst=True) - timedelta(hours=6) - - # If we are forcing the post-DST side of the DST transition, we - # obtain the correct timezone by winding the clock back. - else: - return self.localize( - dt - timedelta(hours=6), - is_dst=False) + timedelta(hours=6) - - # If we get this far, we have multiple possible timezones - this - # is an ambiguous case occuring during the end-of-DST transition. - - # If told to be strict, raise an exception since we have an - # ambiguous case - if is_dst is None: - raise AmbiguousTimeError(dt) - - # Filter out the possiblilities that don't match the requested - # is_dst - filtered_possible_loc_dt = [ - p for p in possible_loc_dt if bool(p.tzinfo._dst) == is_dst - ] - - # Hopefully we only have one possibility left. Return it. - if len(filtered_possible_loc_dt) == 1: - return filtered_possible_loc_dt[0] - - if len(filtered_possible_loc_dt) == 0: - filtered_possible_loc_dt = list(possible_loc_dt) - - # If we get this far, we have in a wierd timezone transition - # where the clocks have been wound back but is_dst is the same - # in both (eg. Europe/Warsaw 1915 when they switched to CET). - # At this point, we just have to guess unless we allow more - # hints to be passed in (such as the UTC offset or abbreviation), - # but that is just getting silly. - # - # Choose the earliest (by UTC) applicable timezone if is_dst=True - # Choose the latest (by UTC) applicable timezone if is_dst=False - # i.e., behave like end-of-DST transition - dates = {} # utc -> local - for local_dt in filtered_possible_loc_dt: - utc_time = ( - local_dt.replace(tzinfo=None) - local_dt.tzinfo._utcoffset) - assert utc_time not in dates - dates[utc_time] = local_dt - return dates[[min, max][not is_dst](dates)] - - def utcoffset(self, dt, is_dst=None): - '''See datetime.tzinfo.utcoffset - - The is_dst parameter may be used to remove ambiguity during DST - transitions. - - >>> from pytz import timezone - >>> tz = timezone('America/St_Johns') - >>> ambiguous = datetime(2009, 10, 31, 23, 30) - - >>> tz.utcoffset(ambiguous, is_dst=False) - datetime.timedelta(-1, 73800) - - >>> tz.utcoffset(ambiguous, is_dst=True) - datetime.timedelta(-1, 77400) - - >>> try: - ... tz.utcoffset(ambiguous) - ... except AmbiguousTimeError: - ... print('Ambiguous') - Ambiguous - - ''' - if dt is None: - return None - elif dt.tzinfo is not self: - dt = self.localize(dt, is_dst) - return dt.tzinfo._utcoffset - else: - return self._utcoffset - - def dst(self, dt, is_dst=None): - '''See datetime.tzinfo.dst - - The is_dst parameter may be used to remove ambiguity during DST - transitions. - - >>> from pytz import timezone - >>> tz = timezone('America/St_Johns') - - >>> normal = datetime(2009, 9, 1) - - >>> tz.dst(normal) - datetime.timedelta(0, 3600) - >>> tz.dst(normal, is_dst=False) - datetime.timedelta(0, 3600) - >>> tz.dst(normal, is_dst=True) - datetime.timedelta(0, 3600) - - >>> ambiguous = datetime(2009, 10, 31, 23, 30) - - >>> tz.dst(ambiguous, is_dst=False) - datetime.timedelta(0) - >>> tz.dst(ambiguous, is_dst=True) - datetime.timedelta(0, 3600) - >>> try: - ... tz.dst(ambiguous) - ... except AmbiguousTimeError: - ... print('Ambiguous') - Ambiguous - - ''' - if dt is None: - return None - elif dt.tzinfo is not self: - dt = self.localize(dt, is_dst) - return dt.tzinfo._dst - else: - return self._dst - - def tzname(self, dt, is_dst=None): - '''See datetime.tzinfo.tzname - - The is_dst parameter may be used to remove ambiguity during DST - transitions. - - >>> from pytz import timezone - >>> tz = timezone('America/St_Johns') - - >>> normal = datetime(2009, 9, 1) - - >>> tz.tzname(normal) - 'NDT' - >>> tz.tzname(normal, is_dst=False) - 'NDT' - >>> tz.tzname(normal, is_dst=True) - 'NDT' - - >>> ambiguous = datetime(2009, 10, 31, 23, 30) - - >>> tz.tzname(ambiguous, is_dst=False) - 'NST' - >>> tz.tzname(ambiguous, is_dst=True) - 'NDT' - >>> try: - ... tz.tzname(ambiguous) - ... except AmbiguousTimeError: - ... print('Ambiguous') - Ambiguous - ''' - if dt is None: - return self.zone - elif dt.tzinfo is not self: - dt = self.localize(dt, is_dst) - return dt.tzinfo._tzname - else: - return self._tzname - - def __repr__(self): - if self._dst: - dst = 'DST' - else: - dst = 'STD' - if self._utcoffset > _notime: - return '<DstTzInfo %r %s+%s %s>' % ( - self.zone, self._tzname, self._utcoffset, dst - ) - else: - return '<DstTzInfo %r %s%s %s>' % ( - self.zone, self._tzname, self._utcoffset, dst - ) - - def __reduce__(self): - # Special pickle to zone remains a singleton and to cope with - # database changes. - return pytz._p, ( - self.zone, - _to_seconds(self._utcoffset), - _to_seconds(self._dst), - self._tzname - ) - - -def unpickler(zone, utcoffset=None, dstoffset=None, tzname=None): - """Factory function for unpickling pytz tzinfo instances. - - This is shared for both StaticTzInfo and DstTzInfo instances, because - database changes could cause a zones implementation to switch between - these two base classes and we can't break pickles on a pytz version - upgrade. - """ - # Raises a KeyError if zone no longer exists, which should never happen - # and would be a bug. - tz = pytz.timezone(zone) - - # A StaticTzInfo - just return it - if utcoffset is None: - return tz - - # This pickle was created from a DstTzInfo. We need to - # determine which of the list of tzinfo instances for this zone - # to use in order to restore the state of any datetime instances using - # it correctly. - utcoffset = memorized_timedelta(utcoffset) - dstoffset = memorized_timedelta(dstoffset) - try: - return tz._tzinfos[(utcoffset, dstoffset, tzname)] - except KeyError: - # The particular state requested in this timezone no longer exists. - # This indicates a corrupt pickle, or the timezone database has been - # corrected violently enough to make this particular - # (utcoffset,dstoffset) no longer exist in the zone, or the - # abbreviation has been changed. - pass - - # See if we can find an entry differing only by tzname. Abbreviations - # get changed from the initial guess by the database maintainers to - # match reality when this information is discovered. - for localized_tz in tz._tzinfos.values(): - if (localized_tz._utcoffset == utcoffset and - localized_tz._dst == dstoffset): - return localized_tz - - # This (utcoffset, dstoffset) information has been removed from the - # zone. Add it back. This might occur when the database maintainers have - # corrected incorrect information. datetime instances using this - # incorrect information will continue to do so, exactly as they were - # before being pickled. This is purely an overly paranoid safety net - I - # doubt this will ever been needed in real life. - inf = (utcoffset, dstoffset, tzname) - tz._tzinfos[inf] = tz.__class__(inf, tz._tzinfos) - return tz._tzinfos[inf] diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Abidjan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Abidjan deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Abidjan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Accra b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Accra deleted file mode 100644 index 8726e80d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Accra and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Addis_Ababa b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Addis_Ababa deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Addis_Ababa and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Algiers b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Algiers deleted file mode 100644 index 2a25f3ac..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Algiers and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Asmara b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Asmara deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Asmara and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Asmera b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Asmera deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Asmera and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bamako b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bamako deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bamako and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bangui b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bangui deleted file mode 100644 index b1c97cc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bangui and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Banjul b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Banjul deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Banjul and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bissau b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bissau deleted file mode 100644 index 4e6fbe10..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bissau and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Blantyre b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Blantyre deleted file mode 100644 index 5b871dba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Blantyre and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Brazzaville b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Brazzaville deleted file mode 100644 index b1c97cc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Brazzaville and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bujumbura b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bujumbura deleted file mode 100644 index 5b871dba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bujumbura and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Cairo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Cairo deleted file mode 100644 index ba097504..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Cairo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Casablanca b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Casablanca deleted file mode 100644 index 65de3445..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Casablanca and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ceuta b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ceuta deleted file mode 100644 index aaa657ff..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ceuta and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Conakry b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Conakry deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Conakry and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Dakar b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Dakar deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Dakar and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Dar_es_Salaam b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Dar_es_Salaam deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Dar_es_Salaam and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Djibouti b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Djibouti deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Djibouti and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Douala b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Douala deleted file mode 100644 index b1c97cc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Douala and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/El_Aaiun b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/El_Aaiun deleted file mode 100644 index f5f8ffbc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/El_Aaiun and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Freetown b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Freetown deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Freetown and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Gaborone b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Gaborone deleted file mode 100644 index 5b871dba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Gaborone and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Harare b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Harare deleted file mode 100644 index 5b871dba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Harare and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Johannesburg b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Johannesburg deleted file mode 100644 index ddf3652e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Johannesburg and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Juba b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Juba deleted file mode 100644 index 9fa71190..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Juba and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kampala b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kampala deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kampala and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Khartoum b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Khartoum deleted file mode 100644 index f2c9e303..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Khartoum and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kigali b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kigali deleted file mode 100644 index 5b871dba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kigali and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kinshasa b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kinshasa deleted file mode 100644 index b1c97cc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kinshasa and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lagos b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lagos deleted file mode 100644 index b1c97cc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lagos and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Libreville b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Libreville deleted file mode 100644 index b1c97cc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Libreville and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lome b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lome deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lome and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Luanda b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Luanda deleted file mode 100644 index b1c97cc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Luanda and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lubumbashi b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lubumbashi deleted file mode 100644 index 5b871dba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lubumbashi and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lusaka b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lusaka deleted file mode 100644 index 5b871dba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lusaka and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Malabo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Malabo deleted file mode 100644 index b1c97cc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Malabo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Maputo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Maputo deleted file mode 100644 index 5b871dba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Maputo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Maseru b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Maseru deleted file mode 100644 index ddf3652e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Maseru and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Mbabane b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Mbabane deleted file mode 100644 index ddf3652e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Mbabane and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Mogadishu b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Mogadishu deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Mogadishu and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Monrovia b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Monrovia deleted file mode 100644 index b434c67f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Monrovia and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Nairobi b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Nairobi deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Nairobi and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ndjamena b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ndjamena deleted file mode 100644 index bbfe19d6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ndjamena and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Niamey b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Niamey deleted file mode 100644 index b1c97cc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Niamey and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Nouakchott b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Nouakchott deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Nouakchott and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ouagadougou b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ouagadougou deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ouagadougou and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Porto-Novo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Porto-Novo deleted file mode 100644 index b1c97cc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Porto-Novo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Sao_Tome b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Sao_Tome deleted file mode 100644 index 3c0d33b0..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Sao_Tome and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Timbuktu b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Timbuktu deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Timbuktu and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Tripoli b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Tripoli deleted file mode 100644 index b32e2202..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Tripoli and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Tunis b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Tunis deleted file mode 100644 index 4bd3885a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Tunis and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Windhoek b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Windhoek deleted file mode 100644 index 358f11e3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Windhoek and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Adak b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Adak deleted file mode 100644 index 5696e0f8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Adak and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Anchorage b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Anchorage deleted file mode 100644 index 6c8bdf22..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Anchorage and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Anguilla b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Anguilla deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Anguilla and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Antigua b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Antigua deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Antigua and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Araguaina b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Araguaina deleted file mode 100644 index 8b295a98..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Araguaina and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Buenos_Aires b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Buenos_Aires deleted file mode 100644 index e4866ce1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Buenos_Aires and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Catamarca b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Catamarca deleted file mode 100644 index 9fe9ad64..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Catamarca and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/ComodRivadavia b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/ComodRivadavia deleted file mode 100644 index 9fe9ad64..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/ComodRivadavia and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Cordoba b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Cordoba deleted file mode 100644 index 8c58f8c2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Cordoba and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Jujuy b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Jujuy deleted file mode 100644 index a74ba046..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Jujuy and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/La_Rioja b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/La_Rioja deleted file mode 100644 index cb184d6a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/La_Rioja and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Mendoza b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Mendoza deleted file mode 100644 index 5e8c44c8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Mendoza and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Rio_Gallegos b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Rio_Gallegos deleted file mode 100644 index 966a529b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Rio_Gallegos and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Salta b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Salta deleted file mode 100644 index b19aa222..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Salta and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/San_Juan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/San_Juan deleted file mode 100644 index 9e5ade61..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/San_Juan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/San_Luis b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/San_Luis deleted file mode 100644 index af8aa998..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/San_Luis and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Tucuman b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Tucuman deleted file mode 100644 index bbb03a0c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Tucuman and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Ushuaia b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Ushuaia deleted file mode 100644 index 07e4e9f0..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Ushuaia and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Aruba b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Aruba deleted file mode 100644 index d308336b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Aruba and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Asuncion b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Asuncion deleted file mode 100644 index 3c61ddb5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Asuncion and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Atikokan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Atikokan deleted file mode 100644 index 5708b55a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Atikokan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Atka b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Atka deleted file mode 100644 index 5696e0f8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Atka and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Bahia b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Bahia deleted file mode 100644 index 6008a574..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Bahia and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Bahia_Banderas b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Bahia_Banderas deleted file mode 100644 index 21e2b719..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Bahia_Banderas and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Barbados b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Barbados deleted file mode 100644 index 63399360..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Barbados and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Belem b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Belem deleted file mode 100644 index b8e13b02..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Belem and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Belize b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Belize deleted file mode 100644 index 7dcc4fc5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Belize and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Blanc-Sablon b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Blanc-Sablon deleted file mode 100644 index abcde7d9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Blanc-Sablon and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Boa_Vista b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Boa_Vista deleted file mode 100644 index f7769048..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Boa_Vista and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Bogota b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Bogota deleted file mode 100644 index d8934466..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Bogota and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Boise b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Boise deleted file mode 100644 index ada6d64b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Boise and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Buenos_Aires b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Buenos_Aires deleted file mode 100644 index e4866ce1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Buenos_Aires and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cambridge_Bay b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cambridge_Bay deleted file mode 100644 index d322f01e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cambridge_Bay and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Campo_Grande b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Campo_Grande deleted file mode 100644 index de52bb68..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Campo_Grande and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cancun b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cancun deleted file mode 100644 index 7e69f73d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cancun and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Caracas b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Caracas deleted file mode 100644 index c8cab1af..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Caracas and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Catamarca b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Catamarca deleted file mode 100644 index 9fe9ad64..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Catamarca and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cayenne b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cayenne deleted file mode 100644 index 6db64098..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cayenne and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cayman b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cayman deleted file mode 100644 index 5c1c0637..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cayman and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Chicago b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Chicago deleted file mode 100644 index 3dd8f0fa..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Chicago and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Chihuahua b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Chihuahua deleted file mode 100644 index e3adbdbf..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Chihuahua and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Coral_Harbour b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Coral_Harbour deleted file mode 100644 index 5708b55a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Coral_Harbour and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cordoba b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cordoba deleted file mode 100644 index 8c58f8c2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cordoba and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Costa_Rica b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Costa_Rica deleted file mode 100644 index c247133e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Costa_Rica and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Creston b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Creston deleted file mode 100644 index 798f627a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Creston and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cuiaba b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cuiaba deleted file mode 100644 index 145c89e0..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Cuiaba and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Curacao b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Curacao deleted file mode 100644 index d308336b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Curacao and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Danmarkshavn b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Danmarkshavn deleted file mode 100644 index ad68c722..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Danmarkshavn and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Dawson b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Dawson deleted file mode 100644 index 61c96889..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Dawson and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Dawson_Creek b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Dawson_Creek deleted file mode 100644 index 78f90763..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Dawson_Creek and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Denver b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Denver deleted file mode 100644 index 7fc66917..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Denver and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Detroit b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Detroit deleted file mode 100644 index e3ea5c3e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Detroit and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Dominica b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Dominica deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Dominica and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Edmonton b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Edmonton deleted file mode 100644 index d02fbcd4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Edmonton and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Eirunepe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Eirunepe deleted file mode 100644 index 41047f29..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Eirunepe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/El_Salvador b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/El_Salvador deleted file mode 100644 index 9b8bc7a8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/El_Salvador and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Ensenada b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Ensenada deleted file mode 100644 index 29c83e71..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Ensenada and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Fort_Nelson b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Fort_Nelson deleted file mode 100644 index 5923cc68..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Fort_Nelson and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Fort_Wayne b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Fort_Wayne deleted file mode 100644 index 4a92c065..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Fort_Wayne and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Fortaleza b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Fortaleza deleted file mode 100644 index 22396bb5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Fortaleza and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Glace_Bay b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Glace_Bay deleted file mode 100644 index f58522b6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Glace_Bay and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Godthab b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Godthab deleted file mode 100644 index ea293cc4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Godthab and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Goose_Bay b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Goose_Bay deleted file mode 100644 index b4b945e8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Goose_Bay and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Grand_Turk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Grand_Turk deleted file mode 100644 index a9740dae..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Grand_Turk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Grenada b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Grenada deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Grenada and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guadeloupe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guadeloupe deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guadeloupe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guatemala b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guatemala deleted file mode 100644 index abf943be..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guatemala and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guayaquil b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guayaquil deleted file mode 100644 index 92de38be..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guayaquil and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guyana b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guyana deleted file mode 100644 index 7d298767..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Guyana and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Halifax b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Halifax deleted file mode 100644 index f86ece4c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Halifax and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Havana b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Havana deleted file mode 100644 index 1a58fcdc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Havana and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Hermosillo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Hermosillo deleted file mode 100644 index ec435c23..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Hermosillo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Indianapolis b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Indianapolis deleted file mode 100644 index 4a92c065..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Indianapolis and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Knox b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Knox deleted file mode 100644 index cc785da9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Knox and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Marengo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Marengo deleted file mode 100644 index a23d7b75..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Marengo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Petersburg b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Petersburg deleted file mode 100644 index f16cb304..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Petersburg and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Tell_City b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Tell_City deleted file mode 100644 index 0250bf90..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Tell_City and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Vevay b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Vevay deleted file mode 100644 index e934de61..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Vevay and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Vincennes b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Vincennes deleted file mode 100644 index adbdbeee..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Vincennes and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Winamac b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Winamac deleted file mode 100644 index b34f7b27..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Winamac and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indianapolis b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indianapolis deleted file mode 100644 index 4a92c065..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Indianapolis and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Inuvik b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Inuvik deleted file mode 100644 index 1388e8a4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Inuvik and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Iqaluit b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Iqaluit deleted file mode 100644 index 0785ac57..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Iqaluit and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Jamaica b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Jamaica deleted file mode 100644 index 006689bc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Jamaica and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Jujuy b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Jujuy deleted file mode 100644 index a74ba046..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Jujuy and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Juneau b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Juneau deleted file mode 100644 index d00668ad..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Juneau and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Kentucky/Louisville b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Kentucky/Louisville deleted file mode 100644 index fdf2e88b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Kentucky/Louisville and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Kentucky/Monticello b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Kentucky/Monticello deleted file mode 100644 index 60991aa3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Kentucky/Monticello and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Knox_IN b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Knox_IN deleted file mode 100644 index cc785da9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Knox_IN and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Kralendijk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Kralendijk deleted file mode 100644 index d308336b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Kralendijk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/La_Paz b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/La_Paz deleted file mode 100644 index bc3df523..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/La_Paz and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Lima b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Lima deleted file mode 100644 index 44280a5c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Lima and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Los_Angeles b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Los_Angeles deleted file mode 100644 index c0ce4402..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Los_Angeles and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Louisville b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Louisville deleted file mode 100644 index fdf2e88b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Louisville and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Lower_Princes b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Lower_Princes deleted file mode 100644 index d308336b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Lower_Princes and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Maceio b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Maceio deleted file mode 100644 index 54442dc7..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Maceio and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Managua b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Managua deleted file mode 100644 index c543ffd4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Managua and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Manaus b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Manaus deleted file mode 100644 index 855cb02c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Manaus and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Marigot b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Marigot deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Marigot and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Martinique b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Martinique deleted file mode 100644 index f9e2399c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Martinique and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Matamoros b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Matamoros deleted file mode 100644 index 5671d258..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Matamoros and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Mazatlan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Mazatlan deleted file mode 100644 index afa94c2a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Mazatlan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Mendoza b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Mendoza deleted file mode 100644 index 5e8c44c8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Mendoza and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Menominee b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Menominee deleted file mode 100644 index 55d6e326..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Menominee and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Merida b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Merida deleted file mode 100644 index ecc1856e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Merida and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Metlakatla b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Metlakatla deleted file mode 100644 index c0335970..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Metlakatla and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Mexico_City b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Mexico_City deleted file mode 100644 index f11e3d2d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Mexico_City and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Miquelon b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Miquelon deleted file mode 100644 index 75bbcf2b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Miquelon and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Moncton b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Moncton deleted file mode 100644 index 51cb1ba3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Moncton and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Monterrey b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Monterrey deleted file mode 100644 index dcac92ba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Monterrey and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Montevideo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Montevideo deleted file mode 100644 index 9c6abeb9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Montevideo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Montreal b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Montreal deleted file mode 100644 index 7b4682a3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Montreal and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Montserrat b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Montserrat deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Montserrat and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Nassau b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Nassau deleted file mode 100644 index e5d0289b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Nassau and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/New_York b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/New_York deleted file mode 100644 index 7553fee3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/New_York and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Nipigon b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Nipigon deleted file mode 100644 index f8a0292b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Nipigon and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Nome b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Nome deleted file mode 100644 index c886c9bc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Nome and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Noronha b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Noronha deleted file mode 100644 index 6d91f914..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Noronha and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/Beulah b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/Beulah deleted file mode 100644 index 8174c882..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/Beulah and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/Center b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/Center deleted file mode 100644 index 8035b24f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/Center and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/New_Salem b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/New_Salem deleted file mode 100644 index 5b630ee6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/New_Salem and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Ojinaga b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Ojinaga deleted file mode 100644 index 190c5c86..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Ojinaga and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Panama b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Panama deleted file mode 100644 index 5c1c0637..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Panama and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Pangnirtung b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Pangnirtung deleted file mode 100644 index df78b626..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Pangnirtung and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Paramaribo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Paramaribo deleted file mode 100644 index 1b608b3e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Paramaribo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Phoenix b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Phoenix deleted file mode 100644 index adf28236..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Phoenix and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Port-au-Prince b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Port-au-Prince deleted file mode 100644 index 7306caef..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Port-au-Prince and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Port_of_Spain b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Port_of_Spain deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Port_of_Spain and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Porto_Acre b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Porto_Acre deleted file mode 100644 index b612ac23..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Porto_Acre and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Porto_Velho b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Porto_Velho deleted file mode 100644 index 2423fc19..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Porto_Velho and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Puerto_Rico b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Puerto_Rico deleted file mode 100644 index d4525a68..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Puerto_Rico and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Punta_Arenas b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Punta_Arenas deleted file mode 100644 index 4d84eed4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Punta_Arenas and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rainy_River b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rainy_River deleted file mode 100644 index 70dcd2d8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rainy_River and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rankin_Inlet b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rankin_Inlet deleted file mode 100644 index 9f50f36e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rankin_Inlet and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Recife b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Recife deleted file mode 100644 index fe55739d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Recife and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Regina b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Regina deleted file mode 100644 index 5fe8d6b6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Regina and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Resolute b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Resolute deleted file mode 100644 index 884b1f64..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Resolute and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rio_Branco b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rio_Branco deleted file mode 100644 index b612ac23..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rio_Branco and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rosario b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rosario deleted file mode 100644 index 8c58f8c2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Rosario and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santa_Isabel b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santa_Isabel deleted file mode 100644 index 29c83e71..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santa_Isabel and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santarem b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santarem deleted file mode 100644 index d776a438..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santarem and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santiago b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santiago deleted file mode 100644 index ab766a41..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santiago and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santo_Domingo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santo_Domingo deleted file mode 100644 index cc2cbf2b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Santo_Domingo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Sao_Paulo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Sao_Paulo deleted file mode 100644 index 308a545c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Sao_Paulo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Scoresbysund b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Scoresbysund deleted file mode 100644 index 8e1366ca..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Scoresbysund and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Shiprock b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Shiprock deleted file mode 100644 index 7fc66917..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Shiprock and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Sitka b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Sitka deleted file mode 100644 index 662b8b67..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Sitka and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Barthelemy b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Barthelemy deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Barthelemy and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Johns b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Johns deleted file mode 100644 index a1d14854..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Johns and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Kitts b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Kitts deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Kitts and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Lucia b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Lucia deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Lucia and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Thomas b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Thomas deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Thomas and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Vincent b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Vincent deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Vincent and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Swift_Current b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Swift_Current deleted file mode 100644 index 4db1300a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Swift_Current and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Tegucigalpa b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Tegucigalpa deleted file mode 100644 index 7aea8f99..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Tegucigalpa and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Thule b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Thule deleted file mode 100644 index deefcc8d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Thule and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Thunder_Bay b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Thunder_Bay deleted file mode 100644 index aa1d4860..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Thunder_Bay and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Tijuana b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Tijuana deleted file mode 100644 index 29c83e71..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Tijuana and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Toronto b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Toronto deleted file mode 100644 index 7b4682a3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Toronto and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Tortola b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Tortola deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Tortola and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Vancouver b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Vancouver deleted file mode 100644 index 9b5d9241..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Vancouver and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Virgin b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Virgin deleted file mode 100644 index 447efbe2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Virgin and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Whitehorse b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Whitehorse deleted file mode 100644 index 6b62e2d3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Whitehorse and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Winnipeg b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Winnipeg deleted file mode 100644 index 2ffe3d8d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Winnipeg and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Yakutat b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Yakutat deleted file mode 100644 index 523b0a10..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Yakutat and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Yellowknife b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Yellowknife deleted file mode 100644 index d9d6eff7..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/America/Yellowknife and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Casey b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Casey deleted file mode 100644 index 676f06da..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Casey and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Davis b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Davis deleted file mode 100644 index 40a99266..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Davis and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/DumontDUrville b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/DumontDUrville deleted file mode 100644 index 06863534..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/DumontDUrville and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Macquarie b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Macquarie deleted file mode 100644 index aea2be77..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Macquarie and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Mawson b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Mawson deleted file mode 100644 index 5197dd97..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Mawson and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/McMurdo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/McMurdo deleted file mode 100644 index a5f5b6d5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/McMurdo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Palmer b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Palmer deleted file mode 100644 index 43a01d3e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Palmer and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Rothera b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Rothera deleted file mode 100644 index 56913f8a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Rothera and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/South_Pole b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/South_Pole deleted file mode 100644 index a5f5b6d5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/South_Pole and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Syowa b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Syowa deleted file mode 100644 index 94a9d5a2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Syowa and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Troll b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Troll deleted file mode 100644 index 3757facc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Troll and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Vostok b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Vostok deleted file mode 100644 index 9fa335c4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Vostok and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Arctic/Longyearbyen b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Arctic/Longyearbyen deleted file mode 100644 index 239c0174..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Arctic/Longyearbyen and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aden b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aden deleted file mode 100644 index e71bc4e8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aden and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Almaty b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Almaty deleted file mode 100644 index 49a4b4de..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Almaty and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Amman b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Amman deleted file mode 100644 index c3f0994a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Amman and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Anadyr b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Anadyr deleted file mode 100644 index 0e623cf7..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Anadyr and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aqtau b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aqtau deleted file mode 100644 index 5803a3d3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aqtau and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aqtobe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aqtobe deleted file mode 100644 index 808a5026..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aqtobe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ashgabat b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ashgabat deleted file mode 100644 index 046c4728..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ashgabat and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ashkhabad b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ashkhabad deleted file mode 100644 index 046c4728..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ashkhabad and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Atyrau b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Atyrau deleted file mode 100644 index 27072eb5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Atyrau and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Baghdad b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Baghdad deleted file mode 100644 index 3aacd78b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Baghdad and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bahrain b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bahrain deleted file mode 100644 index a0c5f669..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bahrain and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Baku b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Baku deleted file mode 100644 index a17d1ad8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Baku and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bangkok b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bangkok deleted file mode 100644 index 8db5e8a6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bangkok and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Barnaul b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Barnaul deleted file mode 100644 index 60efb41b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Barnaul and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Beirut b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Beirut deleted file mode 100644 index 72f08963..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Beirut and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bishkek b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bishkek deleted file mode 100644 index e3f81ee3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bishkek and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Brunei b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Brunei deleted file mode 100644 index cad16b0d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Brunei and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Calcutta b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Calcutta deleted file mode 100644 index b57972dd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Calcutta and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chita b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chita deleted file mode 100644 index 95f56456..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chita and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Choibalsan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Choibalsan deleted file mode 100644 index 15b358f2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Choibalsan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chongqing b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chongqing deleted file mode 100644 index dbd132f2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chongqing and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chungking b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chungking deleted file mode 100644 index dbd132f2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chungking and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Colombo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Colombo deleted file mode 100644 index 28fe4307..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Colombo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dacca b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dacca deleted file mode 100644 index 98881f09..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dacca and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Damascus b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Damascus deleted file mode 100644 index ac457646..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Damascus and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dhaka b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dhaka deleted file mode 100644 index 98881f09..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dhaka and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dili b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dili deleted file mode 100644 index c94fa610..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dili and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dubai b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dubai deleted file mode 100644 index c12f31a1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dubai and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dushanbe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dushanbe deleted file mode 100644 index 67c772b4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dushanbe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Famagusta b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Famagusta deleted file mode 100644 index 021f8a2d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Famagusta and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Gaza b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Gaza deleted file mode 100644 index 1818affb..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Gaza and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Harbin b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Harbin deleted file mode 100644 index dbd132f2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Harbin and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hebron b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hebron deleted file mode 100644 index 286a9351..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hebron and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ho_Chi_Minh b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ho_Chi_Minh deleted file mode 100644 index 92642679..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ho_Chi_Minh and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hong_Kong b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hong_Kong deleted file mode 100644 index dc9058e4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hong_Kong and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hovd b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hovd deleted file mode 100644 index f367a550..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hovd and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Irkutsk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Irkutsk deleted file mode 100644 index 84136366..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Irkutsk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Istanbul b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Istanbul deleted file mode 100644 index 9a53b3a3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Istanbul and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jakarta b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jakarta deleted file mode 100644 index 37b4edde..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jakarta and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jayapura b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jayapura deleted file mode 100644 index 39ddc843..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jayapura and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jerusalem b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jerusalem deleted file mode 100644 index df511993..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jerusalem and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kabul b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kabul deleted file mode 100644 index 80429ec4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kabul and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kamchatka b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kamchatka deleted file mode 100644 index fab27def..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kamchatka and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Karachi b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Karachi deleted file mode 100644 index b7dcaab8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Karachi and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kashgar b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kashgar deleted file mode 100644 index b44a1e19..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kashgar and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kathmandu b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kathmandu deleted file mode 100644 index 0cbd2952..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kathmandu and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Katmandu b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Katmandu deleted file mode 100644 index 0cbd2952..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Katmandu and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Khandyga b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Khandyga deleted file mode 100644 index 91836953..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Khandyga and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kolkata b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kolkata deleted file mode 100644 index b57972dd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kolkata and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Krasnoyarsk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Krasnoyarsk deleted file mode 100644 index faec35d3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Krasnoyarsk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuala_Lumpur b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuala_Lumpur deleted file mode 100644 index 5c95ebcd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuala_Lumpur and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuching b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuching deleted file mode 100644 index 62b53892..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuching and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuwait b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuwait deleted file mode 100644 index e71bc4e8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuwait and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Macao b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Macao deleted file mode 100644 index 46c1bad5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Macao and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Macau b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Macau deleted file mode 100644 index 46c1bad5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Macau and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Magadan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Magadan deleted file mode 100644 index 2db06356..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Magadan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Makassar b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Makassar deleted file mode 100644 index 3a5dcb27..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Makassar and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Manila b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Manila deleted file mode 100644 index 06859a70..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Manila and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Muscat b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Muscat deleted file mode 100644 index c12f31a1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Muscat and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Nicosia b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Nicosia deleted file mode 100644 index 3e663b21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Nicosia and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Novokuznetsk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Novokuznetsk deleted file mode 100644 index ed4b2482..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Novokuznetsk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Novosibirsk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Novosibirsk deleted file mode 100644 index a5d39dff..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Novosibirsk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Omsk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Omsk deleted file mode 100644 index 5e0d9b67..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Omsk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Oral b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Oral deleted file mode 100644 index b8eb58d1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Oral and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Phnom_Penh b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Phnom_Penh deleted file mode 100644 index 8db5e8a6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Phnom_Penh and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Pontianak b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Pontianak deleted file mode 100644 index ec98c62b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Pontianak and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Pyongyang b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Pyongyang deleted file mode 100644 index de5c2b15..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Pyongyang and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Qatar b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Qatar deleted file mode 100644 index a0c5f669..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Qatar and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Qyzylorda b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Qyzylorda deleted file mode 100644 index 0fc7fada..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Qyzylorda and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Rangoon b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Rangoon deleted file mode 100644 index 3cc2aafa..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Rangoon and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Riyadh b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Riyadh deleted file mode 100644 index e71bc4e8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Riyadh and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Saigon b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Saigon deleted file mode 100644 index 92642679..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Saigon and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Sakhalin b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Sakhalin deleted file mode 100644 index 8d6b4dfe..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Sakhalin and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Samarkand b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Samarkand deleted file mode 100644 index 10c7af7f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Samarkand and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Seoul b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Seoul deleted file mode 100644 index 312ec40a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Seoul and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Shanghai b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Shanghai deleted file mode 100644 index dbd132f2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Shanghai and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Singapore b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Singapore deleted file mode 100644 index 78583666..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Singapore and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Srednekolymsk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Srednekolymsk deleted file mode 100644 index 16b1cd8f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Srednekolymsk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Taipei b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Taipei deleted file mode 100644 index 748873be..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Taipei and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tashkent b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tashkent deleted file mode 100644 index 6f7dea4a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tashkent and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tbilisi b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tbilisi deleted file mode 100644 index 4b2d2e29..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tbilisi and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tehran b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tehran deleted file mode 100644 index 3157f806..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tehran and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tel_Aviv b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tel_Aviv deleted file mode 100644 index df511993..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tel_Aviv and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Thimbu b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Thimbu deleted file mode 100644 index a8bddb9f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Thimbu and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Thimphu b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Thimphu deleted file mode 100644 index a8bddb9f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Thimphu and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tokyo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tokyo deleted file mode 100644 index 8ad44ba9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tokyo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tomsk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tomsk deleted file mode 100644 index 919b0031..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tomsk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ujung_Pandang b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ujung_Pandang deleted file mode 100644 index 3a5dcb27..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ujung_Pandang and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ulaanbaatar b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ulaanbaatar deleted file mode 100644 index 94ddfea5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ulaanbaatar and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ulan_Bator b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ulan_Bator deleted file mode 100644 index 94ddfea5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ulan_Bator and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Urumqi b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Urumqi deleted file mode 100644 index b44a1e19..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Urumqi and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ust-Nera b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ust-Nera deleted file mode 100644 index 7431eb97..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ust-Nera and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Vientiane b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Vientiane deleted file mode 100644 index 8db5e8a6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Vientiane and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Vladivostok b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Vladivostok deleted file mode 100644 index 80b170bc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Vladivostok and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yakutsk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yakutsk deleted file mode 100644 index 220ad3db..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yakutsk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yangon b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yangon deleted file mode 100644 index 3cc2aafa..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yangon and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yekaterinburg b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yekaterinburg deleted file mode 100644 index c1abb935..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yekaterinburg and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yerevan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yerevan deleted file mode 100644 index 4c4e045b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yerevan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Azores b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Azores deleted file mode 100644 index 37218e12..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Azores and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Bermuda b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Bermuda deleted file mode 100644 index 548d979b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Bermuda and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Canary b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Canary deleted file mode 100644 index 544f443a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Canary and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Cape_Verde b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Cape_Verde deleted file mode 100644 index 1c012da5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Cape_Verde and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Faeroe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Faeroe deleted file mode 100644 index c4865186..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Faeroe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Faroe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Faroe deleted file mode 100644 index c4865186..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Faroe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Jan_Mayen b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Jan_Mayen deleted file mode 100644 index 239c0174..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Jan_Mayen and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Madeira b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Madeira deleted file mode 100644 index 9c60071e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Madeira and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Reykjavik b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Reykjavik deleted file mode 100644 index dc49c324..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Reykjavik and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/South_Georgia b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/South_Georgia deleted file mode 100644 index 56b383b1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/South_Georgia and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/St_Helena b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/St_Helena deleted file mode 100644 index 6fd1af32..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/St_Helena and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Stanley b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Stanley deleted file mode 100644 index 3649415b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Stanley and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/ACT b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/ACT deleted file mode 100644 index aaed12ca..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/ACT and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Adelaide b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Adelaide deleted file mode 100644 index 4f331a87..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Adelaide and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Brisbane b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Brisbane deleted file mode 100644 index a327d83b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Brisbane and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Broken_Hill b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Broken_Hill deleted file mode 100644 index 768b1678..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Broken_Hill and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Canberra b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Canberra deleted file mode 100644 index aaed12ca..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Canberra and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Currie b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Currie deleted file mode 100644 index a3f6f29a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Currie and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Darwin b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Darwin deleted file mode 100644 index c6ae9a7b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Darwin and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Eucla b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Eucla deleted file mode 100644 index 99f07a9f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Eucla and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Hobart b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Hobart deleted file mode 100644 index 07784ce5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Hobart and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/LHI b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/LHI deleted file mode 100644 index 57597b0b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/LHI and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Lindeman b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Lindeman deleted file mode 100644 index 71ca143f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Lindeman and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Lord_Howe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Lord_Howe deleted file mode 100644 index 57597b0b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Lord_Howe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Melbourne b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Melbourne deleted file mode 100644 index ec8dfe03..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Melbourne and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/NSW b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/NSW deleted file mode 100644 index aaed12ca..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/NSW and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/North b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/North deleted file mode 100644 index c6ae9a7b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/North and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Perth b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Perth deleted file mode 100644 index 85c26d50..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Perth and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Queensland b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Queensland deleted file mode 100644 index a327d83b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Queensland and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/South b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/South deleted file mode 100644 index 4f331a87..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/South and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Sydney b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Sydney deleted file mode 100644 index aaed12ca..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Sydney and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Tasmania b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Tasmania deleted file mode 100644 index 07784ce5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Tasmania and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Victoria b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Victoria deleted file mode 100644 index ec8dfe03..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Victoria and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/West b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/West deleted file mode 100644 index 85c26d50..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/West and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Yancowinna b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Yancowinna deleted file mode 100644 index 768b1678..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Yancowinna and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/Acre b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/Acre deleted file mode 100644 index b612ac23..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/Acre and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/DeNoronha b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/DeNoronha deleted file mode 100644 index 6d91f914..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/DeNoronha and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/East b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/East deleted file mode 100644 index 308a545c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/East and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/West b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/West deleted file mode 100644 index 855cb02c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/West and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/CET b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/CET deleted file mode 100644 index 4c4f8ef9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/CET and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/CST6CDT b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/CST6CDT deleted file mode 100644 index 5c8a1d9a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/CST6CDT and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Atlantic b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Atlantic deleted file mode 100644 index f86ece4c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Atlantic and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Central b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Central deleted file mode 100644 index 2ffe3d8d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Central and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Eastern b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Eastern deleted file mode 100644 index 7b4682a3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Eastern and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Mountain b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Mountain deleted file mode 100644 index d02fbcd4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Mountain and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Newfoundland b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Newfoundland deleted file mode 100644 index a1d14854..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Newfoundland and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Pacific b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Pacific deleted file mode 100644 index 9b5d9241..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Pacific and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Saskatchewan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Saskatchewan deleted file mode 100644 index 5fe8d6b6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Saskatchewan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Yukon b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Yukon deleted file mode 100644 index 6b62e2d3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Yukon and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Chile/Continental b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Chile/Continental deleted file mode 100644 index ab766a41..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Chile/Continental and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Chile/EasterIsland b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Chile/EasterIsland deleted file mode 100644 index 060bef81..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Chile/EasterIsland and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Cuba b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Cuba deleted file mode 100644 index 1a58fcdc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Cuba and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/EET b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/EET deleted file mode 100644 index beb273a2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/EET and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/EST b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/EST deleted file mode 100644 index ae346633..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/EST and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/EST5EDT b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/EST5EDT deleted file mode 100644 index 54541fc2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/EST5EDT and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Egypt b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Egypt deleted file mode 100644 index ba097504..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Egypt and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Eire b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Eire deleted file mode 100644 index df3ecddd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Eire and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT deleted file mode 100644 index c05e45fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+0 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+0 deleted file mode 100644 index c05e45fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+0 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+1 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+1 deleted file mode 100644 index 082986e7..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+1 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+10 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+10 deleted file mode 100644 index 23276cd1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+10 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+11 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+11 deleted file mode 100644 index 28c579dc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+11 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+12 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+12 deleted file mode 100644 index c7406039..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+12 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+2 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+2 deleted file mode 100644 index 721cde2f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+2 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+3 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+3 deleted file mode 100644 index ae06bcb6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+3 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+4 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+4 deleted file mode 100644 index 5a7f878c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+4 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+5 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+5 deleted file mode 100644 index 18cbf1fe..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+5 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+6 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+6 deleted file mode 100644 index 1aa4be88..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+6 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+7 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+7 deleted file mode 100644 index cd8ed49a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+7 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+8 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+8 deleted file mode 100644 index e0ba6b88..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+8 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+9 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+9 deleted file mode 100644 index eee1bcb7..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+9 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-0 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-0 deleted file mode 100644 index c05e45fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-0 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-1 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-1 deleted file mode 100644 index 4ff87014..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-1 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-10 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-10 deleted file mode 100644 index e12e461d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-10 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-11 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-11 deleted file mode 100644 index 37f27397..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-11 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-12 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-12 deleted file mode 100644 index 09297f1b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-12 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-13 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-13 deleted file mode 100644 index 97ae1e14..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-13 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-14 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-14 deleted file mode 100644 index 58d6d1b2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-14 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-2 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-2 deleted file mode 100644 index f0dc7062..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-2 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-3 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-3 deleted file mode 100644 index a0790fe9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-3 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-4 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-4 deleted file mode 100644 index a75a173d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-4 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-5 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-5 deleted file mode 100644 index 85ebf22e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-5 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-6 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-6 deleted file mode 100644 index 95def1f9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-6 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-7 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-7 deleted file mode 100644 index c6a776e9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-7 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-8 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-8 deleted file mode 100644 index f74a16f9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-8 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-9 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-9 deleted file mode 100644 index 9b647c0f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-9 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT0 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT0 deleted file mode 100644 index c05e45fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT0 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Greenwich b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Greenwich deleted file mode 100644 index c05e45fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Greenwich and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/UCT b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/UCT deleted file mode 100644 index 40147b9e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/UCT and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/UTC b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/UTC deleted file mode 100644 index c3b97f1a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/UTC and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Universal b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Universal deleted file mode 100644 index c3b97f1a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Universal and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Zulu b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Zulu deleted file mode 100644 index c3b97f1a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Zulu and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Amsterdam b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Amsterdam deleted file mode 100644 index 6dae5e47..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Amsterdam and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Andorra b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Andorra deleted file mode 100644 index b06de7a5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Andorra and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Astrakhan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Astrakhan deleted file mode 100644 index 90d7c2a8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Astrakhan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Athens b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Athens deleted file mode 100644 index 0001602f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Athens and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Belfast b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Belfast deleted file mode 100644 index 4527515c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Belfast and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Belgrade b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Belgrade deleted file mode 100644 index 79c25d70..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Belgrade and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Berlin b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Berlin deleted file mode 100644 index b4f2a2af..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Berlin and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Bratislava b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Bratislava deleted file mode 100644 index 4eabe5c8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Bratislava and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Brussels b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Brussels deleted file mode 100644 index d8f19a63..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Brussels and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Bucharest b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Bucharest deleted file mode 100644 index e0eac4ce..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Bucharest and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Budapest b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Budapest deleted file mode 100644 index 3ddf6a52..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Budapest and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Busingen b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Busingen deleted file mode 100644 index 9c2b600b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Busingen and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Chisinau b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Chisinau deleted file mode 100644 index 2109b52a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Chisinau and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Copenhagen b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Copenhagen deleted file mode 100644 index be87cf16..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Copenhagen and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Dublin b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Dublin deleted file mode 100644 index df3ecddd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Dublin and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Gibraltar b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Gibraltar deleted file mode 100644 index a7105faa..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Gibraltar and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Guernsey b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Guernsey deleted file mode 100644 index 4527515c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Guernsey and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Helsinki b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Helsinki deleted file mode 100644 index 29b3c817..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Helsinki and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Isle_of_Man b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Isle_of_Man deleted file mode 100644 index 4527515c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Isle_of_Man and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Istanbul b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Istanbul deleted file mode 100644 index 9a53b3a3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Istanbul and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Jersey b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Jersey deleted file mode 100644 index 4527515c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Jersey and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kaliningrad b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kaliningrad deleted file mode 100644 index 37280d05..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kaliningrad and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kiev b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kiev deleted file mode 100644 index b3e20a7e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kiev and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kirov b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kirov deleted file mode 100644 index 40b558f8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kirov and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Lisbon b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Lisbon deleted file mode 100644 index b9aff3a5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Lisbon and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Ljubljana b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Ljubljana deleted file mode 100644 index 79c25d70..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Ljubljana and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/London b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/London deleted file mode 100644 index 4527515c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/London and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Luxembourg b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Luxembourg deleted file mode 100644 index 6fae86c5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Luxembourg and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Madrid b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Madrid deleted file mode 100644 index 9b51a73b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Madrid and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Malta b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Malta deleted file mode 100644 index c1208e2d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Malta and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Mariehamn b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Mariehamn deleted file mode 100644 index 29b3c817..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Mariehamn and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Minsk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Minsk deleted file mode 100644 index 60041a41..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Minsk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Monaco b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Monaco deleted file mode 100644 index 0b40f1ec..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Monaco and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Moscow b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Moscow deleted file mode 100644 index 906bd05f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Moscow and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Nicosia b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Nicosia deleted file mode 100644 index 3e663b21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Nicosia and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Oslo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Oslo deleted file mode 100644 index 239c0174..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Oslo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Paris b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Paris deleted file mode 100644 index cf6e2e2e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Paris and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Podgorica b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Podgorica deleted file mode 100644 index 79c25d70..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Podgorica and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Prague b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Prague deleted file mode 100644 index 4eabe5c8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Prague and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Riga b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Riga deleted file mode 100644 index b729ee8c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Riga and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Rome b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Rome deleted file mode 100644 index bdd3449e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Rome and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Samara b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Samara deleted file mode 100644 index 0539acfd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Samara and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/San_Marino b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/San_Marino deleted file mode 100644 index bdd3449e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/San_Marino and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Sarajevo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Sarajevo deleted file mode 100644 index 79c25d70..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Sarajevo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Saratov b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Saratov deleted file mode 100644 index e8cd6b10..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Saratov and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Simferopol b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Simferopol deleted file mode 100644 index f3b42b00..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Simferopol and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Skopje b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Skopje deleted file mode 100644 index 79c25d70..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Skopje and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Sofia b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Sofia deleted file mode 100644 index 763e0747..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Sofia and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Stockholm b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Stockholm deleted file mode 100644 index 43c7f2e2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Stockholm and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tallinn b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tallinn deleted file mode 100644 index 18f903fa..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tallinn and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tirane b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tirane deleted file mode 100644 index 52c16a42..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tirane and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tiraspol b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tiraspol deleted file mode 100644 index 2109b52a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tiraspol and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Ulyanovsk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Ulyanovsk deleted file mode 100644 index c280f430..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Ulyanovsk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Uzhgorod b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Uzhgorod deleted file mode 100644 index 8ddba909..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Uzhgorod and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vaduz b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vaduz deleted file mode 100644 index 9c2b600b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vaduz and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vatican b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vatican deleted file mode 100644 index bdd3449e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vatican and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vienna b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vienna deleted file mode 100644 index 9c0fac53..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vienna and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vilnius b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vilnius deleted file mode 100644 index da380af0..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vilnius and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Volgograd b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Volgograd deleted file mode 100644 index f4cb64f1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Volgograd and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Warsaw b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Warsaw deleted file mode 100644 index 5cbba412..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Warsaw and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zagreb b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zagreb deleted file mode 100644 index 79c25d70..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zagreb and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zaporozhye b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zaporozhye deleted file mode 100644 index 6f148505..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zaporozhye and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zurich b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zurich deleted file mode 100644 index 9c2b600b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zurich and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Factory b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Factory deleted file mode 100644 index afeeb88d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Factory and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GB b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GB deleted file mode 100644 index 4527515c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GB and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GB-Eire b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GB-Eire deleted file mode 100644 index 4527515c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GB-Eire and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT deleted file mode 100644 index c05e45fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT+0 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT+0 deleted file mode 100644 index c05e45fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT+0 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT-0 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT-0 deleted file mode 100644 index c05e45fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT-0 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT0 b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT0 deleted file mode 100644 index c05e45fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/GMT0 and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Greenwich b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Greenwich deleted file mode 100644 index c05e45fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Greenwich and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/HST b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/HST deleted file mode 100644 index 03e4db07..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/HST and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Hongkong b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Hongkong deleted file mode 100644 index dc9058e4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Hongkong and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Iceland b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Iceland deleted file mode 100644 index dc49c324..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Iceland and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Antananarivo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Antananarivo deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Antananarivo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Chagos b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Chagos deleted file mode 100644 index 0e5e7192..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Chagos and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Christmas b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Christmas deleted file mode 100644 index 066c1e9f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Christmas and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Cocos b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Cocos deleted file mode 100644 index 34a2457b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Cocos and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Comoro b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Comoro deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Comoro and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Kerguelen b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Kerguelen deleted file mode 100644 index e7d4d3d0..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Kerguelen and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mahe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mahe deleted file mode 100644 index db8ac687..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mahe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Maldives b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Maldives deleted file mode 100644 index 3f1a76e5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Maldives and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mauritius b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mauritius deleted file mode 100644 index fd8d9111..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mauritius and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mayotte b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mayotte deleted file mode 100644 index 39631f21..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mayotte and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Reunion b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Reunion deleted file mode 100644 index d5f9aa49..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Reunion and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Iran b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Iran deleted file mode 100644 index 3157f806..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Iran and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Israel b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Israel deleted file mode 100644 index df511993..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Israel and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Jamaica b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Jamaica deleted file mode 100644 index 006689bc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Jamaica and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Japan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Japan deleted file mode 100644 index 8ad44ba9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Japan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Kwajalein b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Kwajalein deleted file mode 100644 index 1a27122e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Kwajalein and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Libya b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Libya deleted file mode 100644 index b32e2202..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Libya and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/MET b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/MET deleted file mode 100644 index 71963d53..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/MET and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/MST b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/MST deleted file mode 100644 index a1bee7c6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/MST and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/MST7MDT b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/MST7MDT deleted file mode 100644 index 726a7e57..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/MST7MDT and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/BajaNorte b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/BajaNorte deleted file mode 100644 index 29c83e71..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/BajaNorte and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/BajaSur b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/BajaSur deleted file mode 100644 index afa94c2a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/BajaSur and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/General b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/General deleted file mode 100644 index f11e3d2d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/General and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/NZ b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/NZ deleted file mode 100644 index a5f5b6d5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/NZ and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/NZ-CHAT b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/NZ-CHAT deleted file mode 100644 index 957c80b7..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/NZ-CHAT and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Navajo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Navajo deleted file mode 100644 index 7fc66917..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Navajo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/PRC b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/PRC deleted file mode 100644 index dbd132f2..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/PRC and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/PST8PDT b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/PST8PDT deleted file mode 100644 index 6242ac04..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/PST8PDT and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Apia b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Apia deleted file mode 100644 index 4091a85f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Apia and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Auckland b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Auckland deleted file mode 100644 index a5f5b6d5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Auckland and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Bougainville b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Bougainville deleted file mode 100644 index dc5a7d73..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Bougainville and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Chatham b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Chatham deleted file mode 100644 index 957c80b7..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Chatham and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Chuuk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Chuuk deleted file mode 100644 index 289b795a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Chuuk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Easter b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Easter deleted file mode 100644 index 060bef81..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Easter and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Efate b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Efate deleted file mode 100644 index 5cee55df..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Efate and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Enderbury b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Enderbury deleted file mode 100644 index b729b256..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Enderbury and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Fakaofo b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Fakaofo deleted file mode 100644 index 6e4b8afd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Fakaofo and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Fiji b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Fiji deleted file mode 100644 index 912db189..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Fiji and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Funafuti b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Funafuti deleted file mode 100644 index 3289094a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Funafuti and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Galapagos b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Galapagos deleted file mode 100644 index 76b2b3a1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Galapagos and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Gambier b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Gambier deleted file mode 100644 index 625016d5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Gambier and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Guadalcanal b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Guadalcanal deleted file mode 100644 index 0c24095b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Guadalcanal and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Guam b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Guam deleted file mode 100644 index 4286e6ba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Guam and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Honolulu b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Honolulu deleted file mode 100644 index bd855772..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Honolulu and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Johnston b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Johnston deleted file mode 100644 index bd855772..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Johnston and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kiritimati b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kiritimati deleted file mode 100644 index 94384558..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kiritimati and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kosrae b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kosrae deleted file mode 100644 index f8222e66..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kosrae and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kwajalein b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kwajalein deleted file mode 100644 index 1a27122e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kwajalein and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Majuro b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Majuro deleted file mode 100644 index b3a8c184..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Majuro and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Marquesas b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Marquesas deleted file mode 100644 index 10c5c9bc..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Marquesas and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Midway b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Midway deleted file mode 100644 index 3e38e97c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Midway and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Nauru b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Nauru deleted file mode 100644 index 6092119f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Nauru and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Niue b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Niue deleted file mode 100644 index df6110dd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Niue and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Norfolk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Norfolk deleted file mode 100644 index d0b9607e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Norfolk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Noumea b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Noumea deleted file mode 100644 index d9c68f88..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Noumea and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pago_Pago b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pago_Pago deleted file mode 100644 index 3e38e97c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pago_Pago and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Palau b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Palau deleted file mode 100644 index e1bbea56..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Palau and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pitcairn b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pitcairn deleted file mode 100644 index 54783cf6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pitcairn and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pohnpei b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pohnpei deleted file mode 100644 index 9743bc3c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pohnpei and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Ponape b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Ponape deleted file mode 100644 index 9743bc3c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Ponape and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Port_Moresby b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Port_Moresby deleted file mode 100644 index 3fa1f7fa..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Port_Moresby and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Rarotonga b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Rarotonga deleted file mode 100644 index ace1ce4b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Rarotonga and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Saipan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Saipan deleted file mode 100644 index 4286e6ba..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Saipan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Samoa b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Samoa deleted file mode 100644 index 3e38e97c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Samoa and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tahiti b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tahiti deleted file mode 100644 index 7867d8bd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tahiti and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tarawa b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tarawa deleted file mode 100644 index 33404138..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tarawa and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tongatapu b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tongatapu deleted file mode 100644 index b3a5a89b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tongatapu and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Truk b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Truk deleted file mode 100644 index 289b795a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Truk and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Wake b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Wake deleted file mode 100644 index 2dc630c6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Wake and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Wallis b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Wallis deleted file mode 100644 index b4f0f9bf..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Wallis and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Yap b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Yap deleted file mode 100644 index 289b795a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Yap and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Poland b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Poland deleted file mode 100644 index 5cbba412..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Poland and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Portugal b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Portugal deleted file mode 100644 index b9aff3a5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Portugal and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/ROC b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/ROC deleted file mode 100644 index 748873be..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/ROC and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/ROK b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/ROK deleted file mode 100644 index 312ec40a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/ROK and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Singapore b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Singapore deleted file mode 100644 index 78583666..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Singapore and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Turkey b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Turkey deleted file mode 100644 index 9a53b3a3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Turkey and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/UCT b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/UCT deleted file mode 100644 index 40147b9e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/UCT and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Alaska b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Alaska deleted file mode 100644 index 6c8bdf22..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Alaska and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Aleutian b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Aleutian deleted file mode 100644 index 5696e0f8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Aleutian and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Arizona b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Arizona deleted file mode 100644 index adf28236..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Arizona and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Central b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Central deleted file mode 100644 index 3dd8f0fa..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Central and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/East-Indiana b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/East-Indiana deleted file mode 100644 index 4a92c065..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/East-Indiana and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Eastern b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Eastern deleted file mode 100644 index 7553fee3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Eastern and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Hawaii b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Hawaii deleted file mode 100644 index bd855772..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Hawaii and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Indiana-Starke b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Indiana-Starke deleted file mode 100644 index cc785da9..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Indiana-Starke and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Michigan b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Michigan deleted file mode 100644 index e3ea5c3e..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Michigan and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Mountain b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Mountain deleted file mode 100644 index 7fc66917..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Mountain and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Pacific b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Pacific deleted file mode 100644 index c0ce4402..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Pacific and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Samoa b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Samoa deleted file mode 100644 index 3e38e97c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/US/Samoa and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/UTC b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/UTC deleted file mode 100644 index c3b97f1a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/UTC and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Universal b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Universal deleted file mode 100644 index c3b97f1a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Universal and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/W-SU b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/W-SU deleted file mode 100644 index 906bd05f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/W-SU and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/WET b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/WET deleted file mode 100644 index 444a1933..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/WET and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Zulu b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Zulu deleted file mode 100644 index c3b97f1a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/Zulu and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/iso3166.tab b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/iso3166.tab deleted file mode 100644 index c2e0f8ea..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/iso3166.tab +++ /dev/null @@ -1,274 +0,0 @@ -# ISO 3166 alpha-2 country codes -# -# This file is in the public domain, so clarified as of -# 2009-05-17 by Arthur David Olson. -# -# From Paul Eggert (2015-05-02): -# This file contains a table of two-letter country codes. Columns are -# separated by a single tab. Lines beginning with '#' are comments. -# All text uses UTF-8 encoding. The columns of the table are as follows: -# -# 1. ISO 3166-1 alpha-2 country code, current as of -# ISO 3166-1 N905 (2016-11-15). See: Updates on ISO 3166-1 -# http://isotc.iso.org/livelink/livelink/Open/16944257 -# 2. The usual English name for the coded region, -# chosen so that alphabetic sorting of subsets produces helpful lists. -# This is not the same as the English name in the ISO 3166 tables. -# -# The table is sorted by country code. -# -# This table is intended as an aid for users, to help them select time -# zone data appropriate for their practical needs. It is not intended -# to take or endorse any position on legal or territorial claims. -# -#country- -#code name of country, territory, area, or subdivision -AD Andorra -AE United Arab Emirates -AF Afghanistan -AG Antigua & Barbuda -AI Anguilla -AL Albania -AM Armenia -AO Angola -AQ Antarctica -AR Argentina -AS Samoa (American) -AT Austria -AU Australia -AW Aruba -AX Åland Islands -AZ Azerbaijan -BA Bosnia & Herzegovina -BB Barbados -BD Bangladesh -BE Belgium -BF Burkina Faso -BG Bulgaria -BH Bahrain -BI Burundi -BJ Benin -BL St Barthelemy -BM Bermuda -BN Brunei -BO Bolivia -BQ Caribbean NL -BR Brazil -BS Bahamas -BT Bhutan -BV Bouvet Island -BW Botswana -BY Belarus -BZ Belize -CA Canada -CC Cocos (Keeling) Islands -CD Congo (Dem. Rep.) -CF Central African Rep. -CG Congo (Rep.) -CH Switzerland -CI Côte d'Ivoire -CK Cook Islands -CL Chile -CM Cameroon -CN China -CO Colombia -CR Costa Rica -CU Cuba -CV Cape Verde -CW Curaçao -CX Christmas Island -CY Cyprus -CZ Czech Republic -DE Germany -DJ Djibouti -DK Denmark -DM Dominica -DO Dominican Republic -DZ Algeria -EC Ecuador -EE Estonia -EG Egypt -EH Western Sahara -ER Eritrea -ES Spain -ET Ethiopia -FI Finland -FJ Fiji -FK Falkland Islands -FM Micronesia -FO Faroe Islands -FR France -GA Gabon -GB Britain (UK) -GD Grenada -GE Georgia -GF French Guiana -GG Guernsey -GH Ghana -GI Gibraltar -GL Greenland -GM Gambia -GN Guinea -GP Guadeloupe -GQ Equatorial Guinea -GR Greece -GS South Georgia & the South Sandwich Islands -GT Guatemala -GU Guam -GW Guinea-Bissau -GY Guyana -HK Hong Kong -HM Heard Island & McDonald Islands -HN Honduras -HR Croatia -HT Haiti -HU Hungary -ID Indonesia -IE Ireland -IL Israel -IM Isle of Man -IN India -IO British Indian Ocean Territory -IQ Iraq -IR Iran -IS Iceland -IT Italy -JE Jersey -JM Jamaica -JO Jordan -JP Japan -KE Kenya -KG Kyrgyzstan -KH Cambodia -KI Kiribati -KM Comoros -KN St Kitts & Nevis -KP Korea (North) -KR Korea (South) -KW Kuwait -KY Cayman Islands -KZ Kazakhstan -LA Laos -LB Lebanon -LC St Lucia -LI Liechtenstein -LK Sri Lanka -LR Liberia -LS Lesotho -LT Lithuania -LU Luxembourg -LV Latvia -LY Libya -MA Morocco -MC Monaco -MD Moldova -ME Montenegro -MF St Martin (French) -MG Madagascar -MH Marshall Islands -MK Macedonia -ML Mali -MM Myanmar (Burma) -MN Mongolia -MO Macau -MP Northern Mariana Islands -MQ Martinique -MR Mauritania -MS Montserrat -MT Malta -MU Mauritius -MV Maldives -MW Malawi -MX Mexico -MY Malaysia -MZ Mozambique -NA Namibia -NC New Caledonia -NE Niger -NF Norfolk Island -NG Nigeria -NI Nicaragua -NL Netherlands -NO Norway -NP Nepal -NR Nauru -NU Niue -NZ New Zealand -OM Oman -PA Panama -PE Peru -PF French Polynesia -PG Papua New Guinea -PH Philippines -PK Pakistan -PL Poland -PM St Pierre & Miquelon -PN Pitcairn -PR Puerto Rico -PS Palestine -PT Portugal -PW Palau -PY Paraguay -QA Qatar -RE Réunion -RO Romania -RS Serbia -RU Russia -RW Rwanda -SA Saudi Arabia -SB Solomon Islands -SC Seychelles -SD Sudan -SE Sweden -SG Singapore -SH St Helena -SI Slovenia -SJ Svalbard & Jan Mayen -SK Slovakia -SL Sierra Leone -SM San Marino -SN Senegal -SO Somalia -SR Suriname -SS South Sudan -ST Sao Tome & Principe -SV El Salvador -SX St Maarten (Dutch) -SY Syria -SZ Swaziland -TC Turks & Caicos Is -TD Chad -TF French Southern & Antarctic Lands -TG Togo -TH Thailand -TJ Tajikistan -TK Tokelau -TL East Timor -TM Turkmenistan -TN Tunisia -TO Tonga -TR Turkey -TT Trinidad & Tobago -TV Tuvalu -TW Taiwan -TZ Tanzania -UA Ukraine -UG Uganda -UM US minor outlying islands -US United States -UY Uruguay -UZ Uzbekistan -VA Vatican City -VC St Vincent -VE Venezuela -VG Virgin Islands (UK) -VI Virgin Islands (US) -VN Vietnam -VU Vanuatu -WF Wallis & Futuna -WS Samoa (western) -YE Yemen -YT Mayotte -ZA South Africa -ZM Zambia -ZW Zimbabwe diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/leapseconds b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/leapseconds deleted file mode 100644 index 358e7410..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/leapseconds +++ /dev/null @@ -1,61 +0,0 @@ -# Allowance for leap seconds added to each time zone file. - -# This file is in the public domain. - -# This file is generated automatically from the data in the public-domain -# leap-seconds.list file, which is copied from: -# ftp://ftp.nist.gov/pub/time/leap-seconds.list -# For more about leap-seconds.list, please see -# The NTP Timescale and Leap Seconds -# https://www.eecis.udel.edu/~mills/leap.html - -# The International Earth Rotation and Reference Systems Service -# periodically uses leap seconds to keep UTC to within 0.9 s of UT1 -# (which measures the true angular orientation of the earth in space); see -# Levine J. Coordinated Universal Time and the leap second. -# URSI Radio Sci Bull. 2016;89(4):30-6. doi:10.23919/URSIRSB.2016.7909995 -# http://ieeexplore.ieee.org/document/7909995/ -# There were no leap seconds before 1972, because the official mechanism -# accounting for the discrepancy between atomic time and the earth's rotation -# did not exist until the early 1970s. - -# The correction (+ or -) is made at the given time, so lines -# will typically look like: -# Leap YEAR MON DAY 23:59:60 + R/S -# or -# Leap YEAR MON DAY 23:59:59 - R/S - -# If the leapsecond is Rolling (R) the given time is local time. -# If the leapsecond is Stationary (S) the given time is UTC. - -# Leap YEAR MONTH DAY HH:MM:SS CORR R/S -Leap 1972 Jun 30 23:59:60 + S -Leap 1972 Dec 31 23:59:60 + S -Leap 1973 Dec 31 23:59:60 + S -Leap 1974 Dec 31 23:59:60 + S -Leap 1975 Dec 31 23:59:60 + S -Leap 1976 Dec 31 23:59:60 + S -Leap 1977 Dec 31 23:59:60 + S -Leap 1978 Dec 31 23:59:60 + S -Leap 1979 Dec 31 23:59:60 + S -Leap 1981 Jun 30 23:59:60 + S -Leap 1982 Jun 30 23:59:60 + S -Leap 1983 Jun 30 23:59:60 + S -Leap 1985 Jun 30 23:59:60 + S -Leap 1987 Dec 31 23:59:60 + S -Leap 1989 Dec 31 23:59:60 + S -Leap 1990 Dec 31 23:59:60 + S -Leap 1992 Jun 30 23:59:60 + S -Leap 1993 Jun 30 23:59:60 + S -Leap 1994 Jun 30 23:59:60 + S -Leap 1995 Dec 31 23:59:60 + S -Leap 1997 Jun 30 23:59:60 + S -Leap 1998 Dec 31 23:59:60 + S -Leap 2005 Dec 31 23:59:60 + S -Leap 2008 Dec 31 23:59:60 + S -Leap 2012 Jun 30 23:59:60 + S -Leap 2015 Jun 30 23:59:60 + S -Leap 2016 Dec 31 23:59:60 + S - -# Updated through IERS Bulletin C55 -# File expires on: 28 December 2018 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/posixrules b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/posixrules deleted file mode 100644 index 7553fee3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/posixrules and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/tzdata.zi b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/tzdata.zi deleted file mode 100644 index 0b938fce..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/tzdata.zi +++ /dev/null @@ -1,4150 +0,0 @@ -# version unknown -# This zic input file is in the public domain. -R A 1916 o - Jun 14 23s 1 S -R A 1916 1919 - O Sun>=1 23s 0 - -R A 1917 o - Mar 24 23s 1 S -R A 1918 o - Mar 9 23s 1 S -R A 1919 o - Mar 1 23s 1 S -R A 1920 o - F 14 23s 1 S -R A 1920 o - O 23 23s 0 - -R A 1921 o - Mar 14 23s 1 S -R A 1921 o - Jun 21 23s 0 - -R A 1939 o - S 11 23s 1 S -R A 1939 o - N 19 1 0 - -R A 1944 1945 - Ap M>=1 2 1 S -R A 1944 o - O 8 2 0 - -R A 1945 o - S 16 1 0 - -R A 1971 o - Ap 25 23s 1 S -R A 1971 o - S 26 23s 0 - -R A 1977 o - May 6 0 1 S -R A 1977 o - O 21 0 0 - -R A 1978 o - Mar 24 1 1 S -R A 1978 o - S 22 3 0 - -R A 1980 o - Ap 25 0 1 S -R A 1980 o - O 31 2 0 - -Z Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:1 -0:9:21 - PMT 1911 Mar 11 -0 A WE%sT 1940 F 25 2 -1 A CE%sT 1946 O 7 -0 - WET 1956 Ja 29 -1 - CET 1963 Ap 14 -0 A WE%sT 1977 O 21 -1 A CE%sT 1979 O 26 -0 A WE%sT 1981 May -1 - CET -Z Atlantic/Cape_Verde -1:34:4 - LMT 1907 --2 - -02 1942 S --2 1 -01 1945 O 15 --2 - -02 1975 N 25 2 --1 - -01 -Z Africa/Ndjamena 1:0:12 - LMT 1912 -1 - WAT 1979 O 14 -1 1 WAST 1980 Mar 8 -1 - WAT -Z Africa/Abidjan -0:16:8 - LMT 1912 -0 - GMT -Li Africa/Abidjan Africa/Bamako -Li Africa/Abidjan Africa/Banjul -Li Africa/Abidjan Africa/Conakry -Li Africa/Abidjan Africa/Dakar -Li Africa/Abidjan Africa/Freetown -Li Africa/Abidjan Africa/Lome -Li Africa/Abidjan Africa/Nouakchott -Li Africa/Abidjan Africa/Ouagadougou -Li Africa/Abidjan Atlantic/St_Helena -R B 1940 o - Jul 15 0 1 S -R B 1940 o - O 1 0 0 - -R B 1941 o - Ap 15 0 1 S -R B 1941 o - S 16 0 0 - -R B 1942 1944 - Ap 1 0 1 S -R B 1942 o - O 27 0 0 - -R B 1943 1945 - N 1 0 0 - -R B 1945 o - Ap 16 0 1 S -R B 1957 o - May 10 0 1 S -R B 1957 1958 - O 1 0 0 - -R B 1958 o - May 1 0 1 S -R B 1959 1981 - May 1 1 1 S -R B 1959 1965 - S 30 3 0 - -R B 1966 1994 - O 1 3 0 - -R B 1982 o - Jul 25 1 1 S -R B 1983 o - Jul 12 1 1 S -R B 1984 1988 - May 1 1 1 S -R B 1989 o - May 6 1 1 S -R B 1990 1994 - May 1 1 1 S -R B 1995 2010 - Ap lastF 0s 1 S -R B 1995 2005 - S lastTh 24 0 - -R B 2006 o - S 21 24 0 - -R B 2007 o - S Th>=1 24 0 - -R B 2008 o - Au lastTh 24 0 - -R B 2009 o - Au 20 24 0 - -R B 2010 o - Au 10 24 0 - -R B 2010 o - S 9 24 1 S -R B 2010 o - S lastTh 24 0 - -R B 2014 o - May 15 24 1 S -R B 2014 o - Jun 26 24 0 - -R B 2014 o - Jul 31 24 1 S -R B 2014 o - S lastTh 24 0 - -Z Africa/Cairo 2:5:9 - LMT 1900 O -2 B EE%sT -R C 1920 1942 - S 1 0 0:20 GHST -R C 1920 1942 - D 31 0 0 GMT -Z Africa/Accra -0:0:52 - LMT 1918 -0 C GMT/+0020 -Z Africa/Bissau -1:2:20 - LMT 1912 --1 - -01 1975 -0 - GMT -Z Africa/Nairobi 2:27:16 - LMT 1928 Jul -3 - EAT 1930 -2:30 - +0230 1940 -2:45 - +0245 1960 -3 - EAT -Li Africa/Nairobi Africa/Addis_Ababa -Li Africa/Nairobi Africa/Asmara -Li Africa/Nairobi Africa/Dar_es_Salaam -Li Africa/Nairobi Africa/Djibouti -Li Africa/Nairobi Africa/Kampala -Li Africa/Nairobi Africa/Mogadishu -Li Africa/Nairobi Indian/Antananarivo -Li Africa/Nairobi Indian/Comoro -Li Africa/Nairobi Indian/Mayotte -Z Africa/Monrovia -0:43:8 - LMT 1882 --0:43:8 - MMT 1919 Mar --0:44:30 - MMT 1972 Ja 7 -0 - GMT -R D 1951 o - O 14 2 1 S -R D 1952 o - Ja 1 0 0 - -R D 1953 o - O 9 2 1 S -R D 1954 o - Ja 1 0 0 - -R D 1955 o - S 30 0 1 S -R D 1956 o - Ja 1 0 0 - -R D 1982 1984 - Ap 1 0 1 S -R D 1982 1985 - O 1 0 0 - -R D 1985 o - Ap 6 0 1 S -R D 1986 o - Ap 4 0 1 S -R D 1986 o - O 3 0 0 - -R D 1987 1989 - Ap 1 0 1 S -R D 1987 1989 - O 1 0 0 - -R D 1997 o - Ap 4 0 1 S -R D 1997 o - O 4 0 0 - -R D 2013 o - Mar lastF 1 1 S -R D 2013 o - O lastF 2 0 - -Z Africa/Tripoli 0:52:44 - LMT 1920 -1 D CE%sT 1959 -2 - EET 1982 -1 D CE%sT 1990 May 4 -2 - EET 1996 S 30 -1 D CE%sT 1997 O 4 -2 - EET 2012 N 10 2 -1 D CE%sT 2013 O 25 2 -2 - EET -R E 1982 o - O 10 0 1 S -R E 1983 o - Mar 21 0 0 - -R E 2008 o - O lastSun 2 1 S -R E 2009 o - Mar lastSun 2 0 - -Z Indian/Mauritius 3:50 - LMT 1907 -4 E +04/+05 -R F 1939 o - S 12 0 1 S -R F 1939 o - N 19 0 0 - -R F 1940 o - F 25 0 1 S -R F 1945 o - N 18 0 0 - -R F 1950 o - Jun 11 0 1 S -R F 1950 o - O 29 0 0 - -R F 1967 o - Jun 3 12 1 S -R F 1967 o - O 1 0 0 - -R F 1974 o - Jun 24 0 1 S -R F 1974 o - S 1 0 0 - -R F 1976 1977 - May 1 0 1 S -R F 1976 o - Au 1 0 0 - -R F 1977 o - S 28 0 0 - -R F 1978 o - Jun 1 0 1 S -R F 1978 o - Au 4 0 0 - -R F 2008 o - Jun 1 0 1 S -R F 2008 o - S 1 0 0 - -R F 2009 o - Jun 1 0 1 S -R F 2009 o - Au 21 0 0 - -R F 2010 o - May 2 0 1 S -R F 2010 o - Au 8 0 0 - -R F 2011 o - Ap 3 0 1 S -R F 2011 o - Jul 31 0 0 - -R F 2012 2013 - Ap lastSun 2 1 S -R F 2012 o - Jul 20 3 0 - -R F 2012 o - Au 20 2 1 S -R F 2012 o - S 30 3 0 - -R F 2013 o - Jul 7 3 0 - -R F 2013 o - Au 10 2 1 S -R F 2013 ma - O lastSun 3 0 - -R F 2014 2021 - Mar lastSun 2 1 S -R F 2014 o - Jun 28 3 0 - -R F 2014 o - Au 2 2 1 S -R F 2015 o - Jun 14 3 0 - -R F 2015 o - Jul 19 2 1 S -R F 2016 o - Jun 5 3 0 - -R F 2016 o - Jul 10 2 1 S -R F 2017 o - May 21 3 0 - -R F 2017 o - Jul 2 2 1 S -R F 2018 o - May 13 3 0 - -R F 2018 o - Jun 17 2 1 S -R F 2019 o - May 5 3 0 - -R F 2019 o - Jun 9 2 1 S -R F 2020 o - Ap 19 3 0 - -R F 2020 o - May 24 2 1 S -R F 2021 o - Ap 11 3 0 - -R F 2021 o - May 16 2 1 S -R F 2022 o - May 8 2 1 S -R F 2023 o - Ap 23 2 1 S -R F 2024 o - Ap 14 2 1 S -R F 2025 o - Ap 6 2 1 S -R F 2026 ma - Mar lastSun 2 1 S -R F 2036 o - O 19 3 0 - -R F 2037 o - O 4 3 0 - -Z Africa/Casablanca -0:30:20 - LMT 1913 O 26 -0 F WE%sT 1984 Mar 16 -1 - CET 1986 -0 F WE%sT -Z Africa/El_Aaiun -0:52:48 - LMT 1934 --1 - -01 1976 Ap 14 -0 F WE%sT -Z Africa/Maputo 2:10:20 - LMT 1903 Mar -2 - CAT -Li Africa/Maputo Africa/Blantyre -Li Africa/Maputo Africa/Bujumbura -Li Africa/Maputo Africa/Gaborone -Li Africa/Maputo Africa/Harare -Li Africa/Maputo Africa/Kigali -Li Africa/Maputo Africa/Lubumbashi -Li Africa/Maputo Africa/Lusaka -R G 1994 o - Mar 21 0 0 - -R G 1994 2016 - S Sun>=1 2 1 S -R G 1995 2017 - Ap Sun>=1 2 0 - -Z Africa/Windhoek 1:8:24 - LMT 1892 F 8 -1:30 - +0130 1903 Mar -2 - SAST 1942 S 20 2 -2 1 SAST 1943 Mar 21 2 -2 - SAST 1990 Mar 21 -2 - CAT 1994 Mar 21 -1 G WA%sT 2017 S 3 2 -2 - CAT -Z Africa/Lagos 0:13:36 - LMT 1919 S -1 - WAT -Li Africa/Lagos Africa/Bangui -Li Africa/Lagos Africa/Brazzaville -Li Africa/Lagos Africa/Douala -Li Africa/Lagos Africa/Kinshasa -Li Africa/Lagos Africa/Libreville -Li Africa/Lagos Africa/Luanda -Li Africa/Lagos Africa/Malabo -Li Africa/Lagos Africa/Niamey -Li Africa/Lagos Africa/Porto-Novo -Z Indian/Reunion 3:41:52 - LMT 1911 Jun -4 - +04 -Z Africa/Sao_Tome 0:26:56 - LMT 1884 --0:36:45 - LMT 1912 -0 - GMT 2018 Ja 1 1 -1 - WAT -Z Indian/Mahe 3:41:48 - LMT 1906 Jun -4 - +04 -R H 1942 1943 - S Sun>=15 2 1 - -R H 1943 1944 - Mar Sun>=15 2 0 - -Z Africa/Johannesburg 1:52 - LMT 1892 F 8 -1:30 - SAST 1903 Mar -2 H SAST -Li Africa/Johannesburg Africa/Maseru -Li Africa/Johannesburg Africa/Mbabane -R I 1970 o - May 1 0 1 S -R I 1970 1985 - O 15 0 0 - -R I 1971 o - Ap 30 0 1 S -R I 1972 1985 - Ap lastSun 0 1 S -Z Africa/Khartoum 2:10:8 - LMT 1931 -2 I CA%sT 2000 Ja 15 12 -3 - EAT 2017 N -2 - CAT -Z Africa/Juba 2:6:28 - LMT 1931 -2 I CA%sT 2000 Ja 15 12 -3 - EAT -R J 1939 o - Ap 15 23s 1 S -R J 1939 o - N 18 23s 0 - -R J 1940 o - F 25 23s 1 S -R J 1941 o - O 6 0 0 - -R J 1942 o - Mar 9 0 1 S -R J 1942 o - N 2 3 0 - -R J 1943 o - Mar 29 2 1 S -R J 1943 o - Ap 17 2 0 - -R J 1943 o - Ap 25 2 1 S -R J 1943 o - O 4 2 0 - -R J 1944 1945 - Ap M>=1 2 1 S -R J 1944 o - O 8 0 0 - -R J 1945 o - S 16 0 0 - -R J 1977 o - Ap 30 0s 1 S -R J 1977 o - S 24 0s 0 - -R J 1978 o - May 1 0s 1 S -R J 1978 o - O 1 0s 0 - -R J 1988 o - Jun 1 0s 1 S -R J 1988 1990 - S lastSun 0s 0 - -R J 1989 o - Mar 26 0s 1 S -R J 1990 o - May 1 0s 1 S -R J 2005 o - May 1 0s 1 S -R J 2005 o - S 30 1s 0 - -R J 2006 2008 - Mar lastSun 2s 1 S -R J 2006 2008 - O lastSun 2s 0 - -Z Africa/Tunis 0:40:44 - LMT 1881 May 12 -0:9:21 - PMT 1911 Mar 11 -1 J CE%sT -Z Antarctica/Casey 0 - -00 1969 -8 - +08 2009 O 18 2 -11 - +11 2010 Mar 5 2 -8 - +08 2011 O 28 2 -11 - +11 2012 F 21 17u -8 - +08 2016 O 22 -11 - +11 -Z Antarctica/Davis 0 - -00 1957 Ja 13 -7 - +07 1964 N -0 - -00 1969 F -7 - +07 2009 O 18 2 -5 - +05 2010 Mar 10 20u -7 - +07 2011 O 28 2 -5 - +05 2012 F 21 20u -7 - +07 -Z Antarctica/Mawson 0 - -00 1954 F 13 -6 - +06 2009 O 18 2 -5 - +05 -Z Indian/Kerguelen 0 - -00 1950 -5 - +05 -Z Antarctica/DumontDUrville 0 - -00 1947 -10 - +10 1952 Ja 14 -0 - -00 1956 N -10 - +10 -Z Antarctica/Syowa 0 - -00 1957 Ja 29 -3 - +03 -R K 2005 ma - Mar lastSun 1u 2 +02 -R K 2004 ma - O lastSun 1u 0 +00 -Z Antarctica/Troll 0 - -00 2005 F 12 -0 K %s -Z Antarctica/Vostok 0 - -00 1957 D 16 -6 - +06 -Z Antarctica/Rothera 0 - -00 1976 D --3 - -03 -Z Asia/Kabul 4:36:48 - LMT 1890 -4 - +04 1945 -4:30 - +0430 -R L 2011 o - Mar lastSun 2s 1 S -R L 2011 o - O lastSun 2s 0 - -Z Asia/Yerevan 2:58 - LMT 1924 May 2 -3 - +03 1957 Mar -4 M +04/+05 1991 Mar 31 2s -3 M +03/+04 1995 S 24 2s -4 - +04 1997 -4 M +04/+05 2011 -4 L +04/+05 -R N 1997 2015 - Mar lastSun 4 1 S -R N 1997 2015 - O lastSun 5 0 - -Z Asia/Baku 3:19:24 - LMT 1924 May 2 -3 - +03 1957 Mar -4 M +04/+05 1991 Mar 31 2s -3 M +03/+04 1992 S lastSun 2s -4 - +04 1996 -4 O +04/+05 1997 -4 N +04/+05 -R P 2009 o - Jun 19 23 1 S -R P 2009 o - D 31 24 0 - -Z Asia/Dhaka 6:1:40 - LMT 1890 -5:53:20 - HMT 1941 O -6:30 - +0630 1942 May 15 -5:30 - +0530 1942 S -6:30 - +0630 1951 S 30 -6 - +06 2009 -6 P +06/+07 -Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15 -5:30 - +0530 1987 O -6 - +06 -Z Indian/Chagos 4:49:40 - LMT 1907 -5 - +05 1996 -6 - +06 -Z Asia/Brunei 7:39:40 - LMT 1926 Mar -7:30 - +0730 1933 -8 - +08 -Z Asia/Yangon 6:24:47 - LMT 1880 -6:24:47 - RMT 1920 -6:30 - +0630 1942 May -9 - +09 1945 May 3 -6:30 - +0630 -R Q 1940 o - Jun 3 0 1 D -R Q 1940 1941 - O 1 0 0 S -R Q 1941 o - Mar 16 0 1 D -R R 1986 o - May 4 0 1 D -R R 1986 1991 - S Sun>=11 0 0 S -R R 1987 1991 - Ap Sun>=10 0 1 D -Z Asia/Shanghai 8:5:43 - LMT 1901 -8 Q C%sT 1949 -8 R C%sT -Z Asia/Urumqi 5:50:20 - LMT 1928 -6 - +06 -R S 1941 o - Ap 1 3:30 1 S -R S 1941 o - S 30 3:30 0 - -R S 1946 o - Ap 20 3:30 1 S -R S 1946 o - D 1 3:30 0 - -R S 1947 o - Ap 13 3:30 1 S -R S 1947 o - D 30 3:30 0 - -R S 1948 o - May 2 3:30 1 S -R S 1948 1951 - O lastSun 3:30 0 - -R S 1952 o - O 25 3:30 0 - -R S 1949 1953 - Ap Sun>=1 3:30 1 S -R S 1953 o - N 1 3:30 0 - -R S 1954 1964 - Mar Sun>=18 3:30 1 S -R S 1954 o - O 31 3:30 0 - -R S 1955 1964 - N Sun>=1 3:30 0 - -R S 1965 1976 - Ap Sun>=16 3:30 1 S -R S 1965 1976 - O Sun>=16 3:30 0 - -R S 1973 o - D 30 3:30 1 S -R S 1979 o - May Sun>=8 3:30 1 S -R S 1979 o - O Sun>=16 3:30 0 - -Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 30 -8 S HK%sT 1941 D 25 -9 - JST 1945 S 15 -8 S HK%sT -R T 1946 o - May 15 0 1 D -R T 1946 o - O 1 0 0 S -R T 1947 o - Ap 15 0 1 D -R T 1947 o - N 1 0 0 S -R T 1948 1951 - May 1 0 1 D -R T 1948 1951 - O 1 0 0 S -R T 1952 o - Mar 1 0 1 D -R T 1952 1954 - N 1 0 0 S -R T 1953 1959 - Ap 1 0 1 D -R T 1955 1961 - O 1 0 0 S -R T 1960 1961 - Jun 1 0 1 D -R T 1974 1975 - Ap 1 0 1 D -R T 1974 1975 - O 1 0 0 S -R T 1979 o - Jul 1 0 1 D -R T 1979 o - O 1 0 0 S -Z Asia/Taipei 8:6 - LMT 1896 -8 - CST 1937 O -9 - JST 1945 S 21 1 -8 T C%sT -R U 1961 1962 - Mar Sun>=16 3:30 1 D -R U 1961 1964 - N Sun>=1 3:30 0 S -R U 1963 o - Mar Sun>=16 0 1 D -R U 1964 o - Mar Sun>=16 3:30 1 D -R U 1965 o - Mar Sun>=16 0 1 D -R U 1965 o - O 31 0 0 S -R U 1966 1971 - Ap Sun>=16 3:30 1 D -R U 1966 1971 - O Sun>=16 3:30 0 S -R U 1972 1974 - Ap Sun>=15 0 1 D -R U 1972 1973 - O Sun>=15 0 0 S -R U 1974 1977 - O Sun>=15 3:30 0 S -R U 1975 1977 - Ap Sun>=15 3:30 1 D -R U 1978 1980 - Ap Sun>=15 0 1 D -R U 1978 1980 - O Sun>=15 0 0 S -Z Asia/Macau 7:34:20 - LMT 1912 -8 U C%sT -R V 1975 o - Ap 13 0 1 S -R V 1975 o - O 12 0 0 - -R V 1976 o - May 15 0 1 S -R V 1976 o - O 11 0 0 - -R V 1977 1980 - Ap Sun>=1 0 1 S -R V 1977 o - S 25 0 0 - -R V 1978 o - O 2 0 0 - -R V 1979 1997 - S lastSun 0 0 - -R V 1981 1998 - Mar lastSun 0 1 S -Z Asia/Nicosia 2:13:28 - LMT 1921 N 14 -2 V EE%sT 1998 S -2 O EE%sT -Z Asia/Famagusta 2:15:48 - LMT 1921 N 14 -2 V EE%sT 1998 S -2 O EE%sT 2016 S 8 -3 - +03 2017 O 29 1u -2 O EE%sT -Li Asia/Nicosia Europe/Nicosia -Z Asia/Tbilisi 2:59:11 - LMT 1880 -2:59:11 - TBMT 1924 May 2 -3 - +03 1957 Mar -4 M +04/+05 1991 Mar 31 2s -3 M +03/+04 1992 -3 W +03/+04 1994 S lastSun -4 W +04/+05 1996 O lastSun -4 1 +05 1997 Mar lastSun -4 W +04/+05 2004 Jun 27 -3 M +03/+04 2005 Mar lastSun 2 -4 - +04 -Z Asia/Dili 8:22:20 - LMT 1912 -8 - +08 1942 F 21 23 -9 - +09 1976 May 3 -8 - +08 2000 S 17 -9 - +09 -Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 -5:53:20 - HMT 1870 -5:21:10 - MMT 1906 -5:30 - IST 1941 O -5:30 1 +0630 1942 May 15 -5:30 - IST 1942 S -5:30 1 +0630 1945 O 15 -5:30 - IST -Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10 -7:7:12 - BMT 1923 D 31 23:47:12 -7:20 - +0720 1932 N -7:30 - +0730 1942 Mar 23 -9 - +09 1945 S 23 -7:30 - +0730 1948 May -8 - +08 1950 May -7:30 - +0730 1964 -7 - WIB -Z Asia/Pontianak 7:17:20 - LMT 1908 May -7:17:20 - PMT 1932 N -7:30 - +0730 1942 Ja 29 -9 - +09 1945 S 23 -7:30 - +0730 1948 May -8 - +08 1950 May -7:30 - +0730 1964 -8 - WITA 1988 -7 - WIB -Z Asia/Makassar 7:57:36 - LMT 1920 -7:57:36 - MMT 1932 N -8 - +08 1942 F 9 -9 - +09 1945 S 23 -8 - WITA -Z Asia/Jayapura 9:22:48 - LMT 1932 N -9 - +09 1944 S -9:30 - +0930 1964 -9 - WIT -R X 1978 1980 - Mar 21 0 1 D -R X 1978 o - O 21 0 0 S -R X 1979 o - S 19 0 0 S -R X 1980 o - S 23 0 0 S -R X 1991 o - May 3 0 1 D -R X 1992 1995 - Mar 22 0 1 D -R X 1991 1995 - S 22 0 0 S -R X 1996 o - Mar 21 0 1 D -R X 1996 o - S 21 0 0 S -R X 1997 1999 - Mar 22 0 1 D -R X 1997 1999 - S 22 0 0 S -R X 2000 o - Mar 21 0 1 D -R X 2000 o - S 21 0 0 S -R X 2001 2003 - Mar 22 0 1 D -R X 2001 2003 - S 22 0 0 S -R X 2004 o - Mar 21 0 1 D -R X 2004 o - S 21 0 0 S -R X 2005 o - Mar 22 0 1 D -R X 2005 o - S 22 0 0 S -R X 2008 o - Mar 21 0 1 D -R X 2008 o - S 21 0 0 S -R X 2009 2011 - Mar 22 0 1 D -R X 2009 2011 - S 22 0 0 S -R X 2012 o - Mar 21 0 1 D -R X 2012 o - S 21 0 0 S -R X 2013 2015 - Mar 22 0 1 D -R X 2013 2015 - S 22 0 0 S -R X 2016 o - Mar 21 0 1 D -R X 2016 o - S 21 0 0 S -R X 2017 2019 - Mar 22 0 1 D -R X 2017 2019 - S 22 0 0 S -R X 2020 o - Mar 21 0 1 D -R X 2020 o - S 21 0 0 S -R X 2021 2023 - Mar 22 0 1 D -R X 2021 2023 - S 22 0 0 S -R X 2024 o - Mar 21 0 1 D -R X 2024 o - S 21 0 0 S -R X 2025 2027 - Mar 22 0 1 D -R X 2025 2027 - S 22 0 0 S -R X 2028 2029 - Mar 21 0 1 D -R X 2028 2029 - S 21 0 0 S -R X 2030 2031 - Mar 22 0 1 D -R X 2030 2031 - S 22 0 0 S -R X 2032 2033 - Mar 21 0 1 D -R X 2032 2033 - S 21 0 0 S -R X 2034 2035 - Mar 22 0 1 D -R X 2034 2035 - S 22 0 0 S -R X 2036 ma - Mar 21 0 1 D -R X 2036 ma - S 21 0 0 S -Z Asia/Tehran 3:25:44 - LMT 1916 -3:25:44 - TMT 1946 -3:30 - +0330 1977 N -4 X +04/+05 1979 -3:30 X +0330/+0430 -R Y 1982 o - May 1 0 1 D -R Y 1982 1984 - O 1 0 0 S -R Y 1983 o - Mar 31 0 1 D -R Y 1984 1985 - Ap 1 0 1 D -R Y 1985 1990 - S lastSun 1s 0 S -R Y 1986 1990 - Mar lastSun 1s 1 D -R Y 1991 2007 - Ap 1 3s 1 D -R Y 1991 2007 - O 1 3s 0 S -Z Asia/Baghdad 2:57:40 - LMT 1890 -2:57:36 - BMT 1918 -3 - +03 1982 May -3 Y +03/+04 -R Z 1940 o - Jun 1 0 1 D -R Z 1942 1944 - N 1 0 0 S -R Z 1943 o - Ap 1 2 1 D -R Z 1944 o - Ap 1 0 1 D -R Z 1945 o - Ap 16 0 1 D -R Z 1945 o - N 1 2 0 S -R Z 1946 o - Ap 16 2 1 D -R Z 1946 o - N 1 0 0 S -R Z 1948 o - May 23 0 2 DD -R Z 1948 o - S 1 0 1 D -R Z 1948 1949 - N 1 2 0 S -R Z 1949 o - May 1 0 1 D -R Z 1950 o - Ap 16 0 1 D -R Z 1950 o - S 15 3 0 S -R Z 1951 o - Ap 1 0 1 D -R Z 1951 o - N 11 3 0 S -R Z 1952 o - Ap 20 2 1 D -R Z 1952 o - O 19 3 0 S -R Z 1953 o - Ap 12 2 1 D -R Z 1953 o - S 13 3 0 S -R Z 1954 o - Jun 13 0 1 D -R Z 1954 o - S 12 0 0 S -R Z 1955 o - Jun 11 2 1 D -R Z 1955 o - S 11 0 0 S -R Z 1956 o - Jun 3 0 1 D -R Z 1956 o - S 30 3 0 S -R Z 1957 o - Ap 29 2 1 D -R Z 1957 o - S 22 0 0 S -R Z 1974 o - Jul 7 0 1 D -R Z 1974 o - O 13 0 0 S -R Z 1975 o - Ap 20 0 1 D -R Z 1975 o - Au 31 0 0 S -R Z 1985 o - Ap 14 0 1 D -R Z 1985 o - S 15 0 0 S -R Z 1986 o - May 18 0 1 D -R Z 1986 o - S 7 0 0 S -R Z 1987 o - Ap 15 0 1 D -R Z 1987 o - S 13 0 0 S -R Z 1988 o - Ap 10 0 1 D -R Z 1988 o - S 4 0 0 S -R Z 1989 o - Ap 30 0 1 D -R Z 1989 o - S 3 0 0 S -R Z 1990 o - Mar 25 0 1 D -R Z 1990 o - Au 26 0 0 S -R Z 1991 o - Mar 24 0 1 D -R Z 1991 o - S 1 0 0 S -R Z 1992 o - Mar 29 0 1 D -R Z 1992 o - S 6 0 0 S -R Z 1993 o - Ap 2 0 1 D -R Z 1993 o - S 5 0 0 S -R Z 1994 o - Ap 1 0 1 D -R Z 1994 o - Au 28 0 0 S -R Z 1995 o - Mar 31 0 1 D -R Z 1995 o - S 3 0 0 S -R Z 1996 o - Mar 15 0 1 D -R Z 1996 o - S 16 0 0 S -R Z 1997 o - Mar 21 0 1 D -R Z 1997 o - S 14 0 0 S -R Z 1998 o - Mar 20 0 1 D -R Z 1998 o - S 6 0 0 S -R Z 1999 o - Ap 2 2 1 D -R Z 1999 o - S 3 2 0 S -R Z 2000 o - Ap 14 2 1 D -R Z 2000 o - O 6 1 0 S -R Z 2001 o - Ap 9 1 1 D -R Z 2001 o - S 24 1 0 S -R Z 2002 o - Mar 29 1 1 D -R Z 2002 o - O 7 1 0 S -R Z 2003 o - Mar 28 1 1 D -R Z 2003 o - O 3 1 0 S -R Z 2004 o - Ap 7 1 1 D -R Z 2004 o - S 22 1 0 S -R Z 2005 o - Ap 1 2 1 D -R Z 2005 o - O 9 2 0 S -R Z 2006 2010 - Mar F>=26 2 1 D -R Z 2006 o - O 1 2 0 S -R Z 2007 o - S 16 2 0 S -R Z 2008 o - O 5 2 0 S -R Z 2009 o - S 27 2 0 S -R Z 2010 o - S 12 2 0 S -R Z 2011 o - Ap 1 2 1 D -R Z 2011 o - O 2 2 0 S -R Z 2012 o - Mar F>=26 2 1 D -R Z 2012 o - S 23 2 0 S -R Z 2013 ma - Mar F>=23 2 1 D -R Z 2013 ma - O lastSun 2 0 S -Z Asia/Jerusalem 2:20:54 - LMT 1880 -2:20:40 - JMT 1918 -2 Z I%sT -R a 1948 o - May Sat>=1 24 1 D -R a 1948 1951 - S Sun>=9 0 0 S -R a 1949 o - Ap Sat>=1 24 1 D -R a 1950 1951 - May Sat>=1 24 1 D -Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u -9 a J%sT -R b 1973 o - Jun 6 0 1 S -R b 1973 1975 - O 1 0 0 - -R b 1974 1977 - May 1 0 1 S -R b 1976 o - N 1 0 0 - -R b 1977 o - O 1 0 0 - -R b 1978 o - Ap 30 0 1 S -R b 1978 o - S 30 0 0 - -R b 1985 o - Ap 1 0 1 S -R b 1985 o - O 1 0 0 - -R b 1986 1988 - Ap F>=1 0 1 S -R b 1986 1990 - O F>=1 0 0 - -R b 1989 o - May 8 0 1 S -R b 1990 o - Ap 27 0 1 S -R b 1991 o - Ap 17 0 1 S -R b 1991 o - S 27 0 0 - -R b 1992 o - Ap 10 0 1 S -R b 1992 1993 - O F>=1 0 0 - -R b 1993 1998 - Ap F>=1 0 1 S -R b 1994 o - S F>=15 0 0 - -R b 1995 1998 - S F>=15 0s 0 - -R b 1999 o - Jul 1 0s 1 S -R b 1999 2002 - S lastF 0s 0 - -R b 2000 2001 - Mar lastTh 0s 1 S -R b 2002 2012 - Mar lastTh 24 1 S -R b 2003 o - O 24 0s 0 - -R b 2004 o - O 15 0s 0 - -R b 2005 o - S lastF 0s 0 - -R b 2006 2011 - O lastF 0s 0 - -R b 2013 o - D 20 0 0 - -R b 2014 ma - Mar lastTh 24 1 S -R b 2014 ma - O lastF 0s 0 - -Z Asia/Amman 2:23:44 - LMT 1931 -2 b EE%sT -Z Asia/Almaty 5:7:48 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 M +06/+07 1991 Mar 31 2s -5 M +05/+06 1992 Ja 19 2s -6 M +06/+07 2004 O 31 2s -6 - +06 -Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 M +05/+06 1991 Mar 31 2s -4 M +04/+05 1991 S 29 2s -5 M +05/+06 1992 Ja 19 2s -6 M +06/+07 1992 Mar 29 2s -5 M +05/+06 2004 O 31 2s -6 - +06 -Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 M +05/+06 1991 Mar 31 2s -4 M +04/+05 1992 Ja 19 2s -5 M +05/+06 2004 O 31 2s -5 - +05 -Z Asia/Aqtau 3:21:4 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 O -6 - +06 1982 Ap -5 M +05/+06 1991 Mar 31 2s -4 M +04/+05 1992 Ja 19 2s -5 M +05/+06 1994 S 25 2s -4 M +04/+05 2004 O 31 2s -5 - +05 -Z Asia/Atyrau 3:27:44 - LMT 1924 May 2 -3 - +03 1930 Jun 21 -5 - +05 1981 O -6 - +06 1982 Ap -5 M +05/+06 1991 Mar 31 2s -4 M +04/+05 1992 Ja 19 2s -5 M +05/+06 1999 Mar 28 2s -4 M +04/+05 2004 O 31 2s -5 - +05 -Z Asia/Oral 3:25:24 - LMT 1924 May 2 -3 - +03 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 M +05/+06 1989 Mar 26 2s -4 M +04/+05 1992 Ja 19 2s -5 M +05/+06 1992 Mar 29 2s -4 M +04/+05 2004 O 31 2s -5 - +05 -R c 1992 1996 - Ap Sun>=7 0s 1 S -R c 1992 1996 - S lastSun 0 0 - -R c 1997 2005 - Mar lastSun 2:30 1 S -R c 1997 2004 - O lastSun 2:30 0 - -Z Asia/Bishkek 4:58:24 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 M +06/+07 1991 Mar 31 2s -5 M +05/+06 1991 Au 31 2 -5 c +05/+06 2005 Au 12 -6 - +06 -R d 1948 o - Jun 1 0 1 D -R d 1948 o - S 13 0 0 S -R d 1949 o - Ap 3 0 1 D -R d 1949 1951 - S Sun>=8 0 0 S -R d 1950 o - Ap 1 0 1 D -R d 1951 o - May 6 0 1 D -R d 1955 o - May 5 0 1 D -R d 1955 o - S 9 0 0 S -R d 1956 o - May 20 0 1 D -R d 1956 o - S 30 0 0 S -R d 1957 1960 - May Sun>=1 0 1 D -R d 1957 1960 - S Sun>=18 0 0 S -R d 1987 1988 - May Sun>=8 2 1 D -R d 1987 1988 - O Sun>=8 3 0 S -Z Asia/Seoul 8:27:52 - LMT 1908 Ap -8:30 - KST 1912 -9 - JST 1945 S 8 -9 - KST 1954 Mar 21 -8:30 d K%sT 1961 Au 10 -9 d K%sT -Z Asia/Pyongyang 8:23 - LMT 1908 Ap -8:30 - KST 1912 -9 - JST 1945 Au 24 -9 - KST 2015 Au 15 -8:30 - KST -R e 1920 o - Mar 28 0 1 S -R e 1920 o - O 25 0 0 - -R e 1921 o - Ap 3 0 1 S -R e 1921 o - O 3 0 0 - -R e 1922 o - Mar 26 0 1 S -R e 1922 o - O 8 0 0 - -R e 1923 o - Ap 22 0 1 S -R e 1923 o - S 16 0 0 - -R e 1957 1961 - May 1 0 1 S -R e 1957 1961 - O 1 0 0 - -R e 1972 o - Jun 22 0 1 S -R e 1972 1977 - O 1 0 0 - -R e 1973 1977 - May 1 0 1 S -R e 1978 o - Ap 30 0 1 S -R e 1978 o - S 30 0 0 - -R e 1984 1987 - May 1 0 1 S -R e 1984 1991 - O 16 0 0 - -R e 1988 o - Jun 1 0 1 S -R e 1989 o - May 10 0 1 S -R e 1990 1992 - May 1 0 1 S -R e 1992 o - O 4 0 0 - -R e 1993 ma - Mar lastSun 0 1 S -R e 1993 1998 - S lastSun 0 0 - -R e 1999 ma - O lastSun 0 0 - -Z Asia/Beirut 2:22 - LMT 1880 -2 e EE%sT -R f 1935 1941 - S 14 0 0:20 TS -R f 1935 1941 - D 14 0 0 - -Z Asia/Kuala_Lumpur 6:46:46 - LMT 1901 -6:55:25 - SMT 1905 Jun -7 - +07 1933 -7 0:20 +0720 1936 -7:20 - +0720 1941 S -7:30 - +0730 1942 F 16 -9 - +09 1945 S 12 -7:30 - +0730 1982 -8 - +08 -Z Asia/Kuching 7:21:20 - LMT 1926 Mar -7:30 - +0730 1933 -8 f +08/+0820 1942 F 16 -9 - +09 1945 S 12 -8 - +08 -Z Indian/Maldives 4:54 - LMT 1880 -4:54 - MMT 1960 -5 - +05 -R g 1983 1984 - Ap 1 0 1 S -R g 1983 o - O 1 0 0 - -R g 1985 1998 - Mar lastSun 0 1 S -R g 1984 1998 - S lastSun 0 0 - -R g 2001 o - Ap lastSat 2 1 S -R g 2001 2006 - S lastSat 2 0 - -R g 2002 2006 - Mar lastSat 2 1 S -R g 2015 2016 - Mar lastSat 2 1 S -R g 2015 2016 - S lastSat 0 0 - -Z Asia/Hovd 6:6:36 - LMT 1905 Au -6 - +06 1978 -7 g +07/+08 -Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au -7 - +07 1978 -8 g +08/+09 -Z Asia/Choibalsan 7:38 - LMT 1905 Au -7 - +07 1978 -8 - +08 1983 Ap -9 g +09/+10 2008 Mar 31 -8 g +08/+09 -Z Asia/Kathmandu 5:41:16 - LMT 1920 -5:30 - +0530 1986 -5:45 - +0545 -R h 2002 o - Ap Sun>=2 0 1 S -R h 2002 o - O Sun>=2 0 0 - -R h 2008 o - Jun 1 0 1 S -R h 2008 2009 - N 1 0 0 - -R h 2009 o - Ap 15 0 1 S -Z Asia/Karachi 4:28:12 - LMT 1907 -5:30 - +0530 1942 S -5:30 1 +0630 1945 O 15 -5:30 - +0530 1951 S 30 -5 - +05 1971 Mar 26 -5 h PK%sT -R i 1999 2005 - Ap F>=15 0 1 S -R i 1999 2003 - O F>=15 0 0 - -R i 2004 o - O 1 1 0 - -R i 2005 o - O 4 2 0 - -R i 2006 2007 - Ap 1 0 1 S -R i 2006 o - S 22 0 0 - -R i 2007 o - S Th>=8 2 0 - -R i 2008 2009 - Mar lastF 0 1 S -R i 2008 o - S 1 0 0 - -R i 2009 o - S F>=1 1 0 - -R i 2010 o - Mar 26 0 1 S -R i 2010 o - Au 11 0 0 - -R i 2011 o - Ap 1 0:1 1 S -R i 2011 o - Au 1 0 0 - -R i 2011 o - Au 30 0 1 S -R i 2011 o - S 30 0 0 - -R i 2012 2014 - Mar lastTh 24 1 S -R i 2012 o - S 21 1 0 - -R i 2013 o - S F>=21 0 0 - -R i 2014 2015 - O F>=21 0 0 - -R i 2015 o - Mar lastF 24 1 S -R i 2016 ma - Mar lastSat 1 1 S -R i 2016 ma - O lastSat 1 0 - -Z Asia/Gaza 2:17:52 - LMT 1900 O -2 Z EET/EEST 1948 May 15 -2 B EE%sT 1967 Jun 5 -2 Z I%sT 1996 -2 b EE%sT 1999 -2 i EE%sT 2008 Au 29 -2 - EET 2008 S -2 i EE%sT 2010 -2 - EET 2010 Mar 27 0:1 -2 i EE%sT 2011 Au -2 - EET 2012 -2 i EE%sT -Z Asia/Hebron 2:20:23 - LMT 1900 O -2 Z EET/EEST 1948 May 15 -2 B EE%sT 1967 Jun 5 -2 Z I%sT 1996 -2 b EE%sT 1999 -2 i EE%sT -R j 1936 o - N 1 0 1 S -R j 1937 o - F 1 0 0 - -R j 1954 o - Ap 12 0 1 S -R j 1954 o - Jul 1 0 0 - -R j 1978 o - Mar 22 0 1 S -R j 1978 o - S 21 0 0 - -Z Asia/Manila -15:56 - LMT 1844 D 31 -8:4 - LMT 1899 May 11 -8 j +08/+09 1942 May -9 - +09 1944 N -8 j +08/+09 -Z Asia/Qatar 3:26:8 - LMT 1920 -4 - +04 1972 Jun -3 - +03 -Li Asia/Qatar Asia/Bahrain -Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14 -3 - +03 -Li Asia/Riyadh Asia/Aden -Li Asia/Riyadh Asia/Kuwait -Z Asia/Singapore 6:55:25 - LMT 1901 -6:55:25 - SMT 1905 Jun -7 - +07 1933 -7 0:20 +0720 1936 -7:20 - +0720 1941 S -7:30 - +0730 1942 F 16 -9 - +09 1945 S 12 -7:30 - +0730 1982 -8 - +08 -Z Asia/Colombo 5:19:24 - LMT 1880 -5:19:32 - MMT 1906 -5:30 - +0530 1942 Ja 5 -5:30 0:30 +06 1942 S -5:30 1 +0630 1945 O 16 2 -5:30 - +0530 1996 May 25 -6:30 - +0630 1996 O 26 0:30 -6 - +06 2006 Ap 15 0:30 -5:30 - +0530 -R k 1920 1923 - Ap Sun>=15 2 1 S -R k 1920 1923 - O Sun>=1 2 0 - -R k 1962 o - Ap 29 2 1 S -R k 1962 o - O 1 2 0 - -R k 1963 1965 - May 1 2 1 S -R k 1963 o - S 30 2 0 - -R k 1964 o - O 1 2 0 - -R k 1965 o - S 30 2 0 - -R k 1966 o - Ap 24 2 1 S -R k 1966 1976 - O 1 2 0 - -R k 1967 1978 - May 1 2 1 S -R k 1977 1978 - S 1 2 0 - -R k 1983 1984 - Ap 9 2 1 S -R k 1983 1984 - O 1 2 0 - -R k 1986 o - F 16 2 1 S -R k 1986 o - O 9 2 0 - -R k 1987 o - Mar 1 2 1 S -R k 1987 1988 - O 31 2 0 - -R k 1988 o - Mar 15 2 1 S -R k 1989 o - Mar 31 2 1 S -R k 1989 o - O 1 2 0 - -R k 1990 o - Ap 1 2 1 S -R k 1990 o - S 30 2 0 - -R k 1991 o - Ap 1 0 1 S -R k 1991 1992 - O 1 0 0 - -R k 1992 o - Ap 8 0 1 S -R k 1993 o - Mar 26 0 1 S -R k 1993 o - S 25 0 0 - -R k 1994 1996 - Ap 1 0 1 S -R k 1994 2005 - O 1 0 0 - -R k 1997 1998 - Mar lastM 0 1 S -R k 1999 2006 - Ap 1 0 1 S -R k 2006 o - S 22 0 0 - -R k 2007 o - Mar lastF 0 1 S -R k 2007 o - N F>=1 0 0 - -R k 2008 o - Ap F>=1 0 1 S -R k 2008 o - N 1 0 0 - -R k 2009 o - Mar lastF 0 1 S -R k 2010 2011 - Ap F>=1 0 1 S -R k 2012 ma - Mar lastF 0 1 S -R k 2009 ma - O lastF 0 0 - -Z Asia/Damascus 2:25:12 - LMT 1920 -2 k EE%sT -Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 M +06/+07 1991 Mar 31 2s -5 1 +05/+06 1991 S 9 2s -5 - +05 -Z Asia/Bangkok 6:42:4 - LMT 1880 -6:42:4 - BMT 1920 Ap -7 - +07 -Li Asia/Bangkok Asia/Phnom_Penh -Li Asia/Bangkok Asia/Vientiane -Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 M +05/+06 1991 Mar 31 2 -4 M +04/+05 1992 Ja 19 2 -5 - +05 -Z Asia/Dubai 3:41:12 - LMT 1920 -4 - +04 -Li Asia/Dubai Asia/Muscat -Z Asia/Samarkand 4:27:53 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 M +05/+06 1992 -5 - +05 -Z Asia/Tashkent 4:37:11 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 M +06/+07 1991 Mar 31 2 -5 M +05/+06 1992 -5 - +05 -Z Asia/Ho_Chi_Minh 7:6:40 - LMT 1906 Jul -7:6:30 - PLMT 1911 May -7 - +07 1942 D 31 23 -8 - +08 1945 Mar 14 23 -9 - +09 1945 S 2 -7 - +07 1947 Ap -8 - +08 1955 Jul -7 - +07 1959 D 31 23 -8 - +08 1975 Jun 13 -7 - +07 -R l 1917 o - Ja 1 0:1 1 D -R l 1917 o - Mar 25 2 0 S -R l 1942 o - Ja 1 2 1 D -R l 1942 o - Mar 29 2 0 S -R l 1942 o - S 27 2 1 D -R l 1943 1944 - Mar lastSun 2 0 S -R l 1943 o - O 3 2 1 D -Z Australia/Darwin 8:43:20 - LMT 1895 F -9 - ACST 1899 May -9:30 l AC%sT -R m 1974 o - O lastSun 2s 1 D -R m 1975 o - Mar Sun>=1 2s 0 S -R m 1983 o - O lastSun 2s 1 D -R m 1984 o - Mar Sun>=1 2s 0 S -R m 1991 o - N 17 2s 1 D -R m 1992 o - Mar Sun>=1 2s 0 S -R m 2006 o - D 3 2s 1 D -R m 2007 2009 - Mar lastSun 2s 0 S -R m 2007 2008 - O lastSun 2s 1 D -Z Australia/Perth 7:43:24 - LMT 1895 D -8 l AW%sT 1943 Jul -8 m AW%sT -Z Australia/Eucla 8:35:28 - LMT 1895 D -8:45 l +0845/+0945 1943 Jul -8:45 m +0845/+0945 -R n 1971 o - O lastSun 2s 1 D -R n 1972 o - F lastSun 2s 0 S -R n 1989 1991 - O lastSun 2s 1 D -R n 1990 1992 - Mar Sun>=1 2s 0 S -R o 1992 1993 - O lastSun 2s 1 D -R o 1993 1994 - Mar Sun>=1 2s 0 S -Z Australia/Brisbane 10:12:8 - LMT 1895 -10 l AE%sT 1971 -10 n AE%sT -Z Australia/Lindeman 9:55:56 - LMT 1895 -10 l AE%sT 1971 -10 n AE%sT 1992 Jul -10 o AE%sT -R p 1971 1985 - O lastSun 2s 1 D -R p 1986 o - O 19 2s 1 D -R p 1987 2007 - O lastSun 2s 1 D -R p 1972 o - F 27 2s 0 S -R p 1973 1985 - Mar Sun>=1 2s 0 S -R p 1986 1990 - Mar Sun>=15 2s 0 S -R p 1991 o - Mar 3 2s 0 S -R p 1992 o - Mar 22 2s 0 S -R p 1993 o - Mar 7 2s 0 S -R p 1994 o - Mar 20 2s 0 S -R p 1995 2005 - Mar lastSun 2s 0 S -R p 2006 o - Ap 2 2s 0 S -R p 2007 o - Mar lastSun 2s 0 S -R p 2008 ma - Ap Sun>=1 2s 0 S -R p 2008 ma - O Sun>=1 2s 1 D -Z Australia/Adelaide 9:14:20 - LMT 1895 F -9 - ACST 1899 May -9:30 l AC%sT 1971 -9:30 p AC%sT -R q 1967 o - O Sun>=1 2s 1 D -R q 1968 o - Mar lastSun 2s 0 S -R q 1968 1985 - O lastSun 2s 1 D -R q 1969 1971 - Mar Sun>=8 2s 0 S -R q 1972 o - F lastSun 2s 0 S -R q 1973 1981 - Mar Sun>=1 2s 0 S -R q 1982 1983 - Mar lastSun 2s 0 S -R q 1984 1986 - Mar Sun>=1 2s 0 S -R q 1986 o - O Sun>=15 2s 1 D -R q 1987 1990 - Mar Sun>=15 2s 0 S -R q 1987 o - O Sun>=22 2s 1 D -R q 1988 1990 - O lastSun 2s 1 D -R q 1991 1999 - O Sun>=1 2s 1 D -R q 1991 2005 - Mar lastSun 2s 0 S -R q 2000 o - Au lastSun 2s 1 D -R q 2001 ma - O Sun>=1 2s 1 D -R q 2006 o - Ap Sun>=1 2s 0 S -R q 2007 o - Mar lastSun 2s 0 S -R q 2008 ma - Ap Sun>=1 2s 0 S -Z Australia/Hobart 9:49:16 - LMT 1895 S -10 - AEST 1916 O 1 2 -10 1 AEDT 1917 F -10 l AE%sT 1967 -10 q AE%sT -Z Australia/Currie 9:35:28 - LMT 1895 S -10 - AEST 1916 O 1 2 -10 1 AEDT 1917 F -10 l AE%sT 1971 Jul -10 q AE%sT -R r 1971 1985 - O lastSun 2s 1 D -R r 1972 o - F lastSun 2s 0 S -R r 1973 1985 - Mar Sun>=1 2s 0 S -R r 1986 1990 - Mar Sun>=15 2s 0 S -R r 1986 1987 - O Sun>=15 2s 1 D -R r 1988 1999 - O lastSun 2s 1 D -R r 1991 1994 - Mar Sun>=1 2s 0 S -R r 1995 2005 - Mar lastSun 2s 0 S -R r 2000 o - Au lastSun 2s 1 D -R r 2001 2007 - O lastSun 2s 1 D -R r 2006 o - Ap Sun>=1 2s 0 S -R r 2007 o - Mar lastSun 2s 0 S -R r 2008 ma - Ap Sun>=1 2s 0 S -R r 2008 ma - O Sun>=1 2s 1 D -Z Australia/Melbourne 9:39:52 - LMT 1895 F -10 l AE%sT 1971 -10 r AE%sT -R s 1971 1985 - O lastSun 2s 1 D -R s 1972 o - F 27 2s 0 S -R s 1973 1981 - Mar Sun>=1 2s 0 S -R s 1982 o - Ap Sun>=1 2s 0 S -R s 1983 1985 - Mar Sun>=1 2s 0 S -R s 1986 1989 - Mar Sun>=15 2s 0 S -R s 1986 o - O 19 2s 1 D -R s 1987 1999 - O lastSun 2s 1 D -R s 1990 1995 - Mar Sun>=1 2s 0 S -R s 1996 2005 - Mar lastSun 2s 0 S -R s 2000 o - Au lastSun 2s 1 D -R s 2001 2007 - O lastSun 2s 1 D -R s 2006 o - Ap Sun>=1 2s 0 S -R s 2007 o - Mar lastSun 2s 0 S -R s 2008 ma - Ap Sun>=1 2s 0 S -R s 2008 ma - O Sun>=1 2s 1 D -Z Australia/Sydney 10:4:52 - LMT 1895 F -10 l AE%sT 1971 -10 s AE%sT -Z Australia/Broken_Hill 9:25:48 - LMT 1895 F -10 - AEST 1896 Au 23 -9 - ACST 1899 May -9:30 l AC%sT 1971 -9:30 s AC%sT 2000 -9:30 p AC%sT -R t 1981 1984 - O lastSun 2 1 D -R t 1982 1985 - Mar Sun>=1 2 0 S -R t 1985 o - O lastSun 2 0:30 D -R t 1986 1989 - Mar Sun>=15 2 0 S -R t 1986 o - O 19 2 0:30 D -R t 1987 1999 - O lastSun 2 0:30 D -R t 1990 1995 - Mar Sun>=1 2 0 S -R t 1996 2005 - Mar lastSun 2 0 S -R t 2000 o - Au lastSun 2 0:30 D -R t 2001 2007 - O lastSun 2 0:30 D -R t 2006 o - Ap Sun>=1 2 0 S -R t 2007 o - Mar lastSun 2 0 S -R t 2008 ma - Ap Sun>=1 2 0 S -R t 2008 ma - O Sun>=1 2 0:30 D -Z Australia/Lord_Howe 10:36:20 - LMT 1895 F -10 - AEST 1981 Mar -10:30 t +1030/+1130 1985 Jul -10:30 t +1030/+11 -Z Antarctica/Macquarie 0 - -00 1899 N -10 - AEST 1916 O 1 2 -10 1 AEDT 1917 F -10 l AE%sT 1919 Ap 1 0s -0 - -00 1948 Mar 25 -10 l AE%sT 1967 -10 q AE%sT 2010 Ap 4 3 -11 - +11 -Z Indian/Christmas 7:2:52 - LMT 1895 F -7 - +07 -Z Indian/Cocos 6:27:40 - LMT 1900 -6:30 - +0630 -R u 1998 1999 - N Sun>=1 2 1 S -R u 1999 2000 - F lastSun 3 0 - -R u 2009 o - N 29 2 1 S -R u 2010 o - Mar lastSun 3 0 - -R u 2010 2013 - O Sun>=21 2 1 S -R u 2011 o - Mar Sun>=1 3 0 - -R u 2012 2013 - Ja Sun>=18 3 0 - -R u 2014 o - Ja Sun>=18 2 0 - -R u 2014 ma - N Sun>=1 2 1 S -R u 2015 ma - Ja Sun>=14 3 0 - -Z Pacific/Fiji 11:55:44 - LMT 1915 O 26 -12 u +12/+13 -Z Pacific/Gambier -8:59:48 - LMT 1912 O --9 - -09 -Z Pacific/Marquesas -9:18 - LMT 1912 O --9:30 - -0930 -Z Pacific/Tahiti -9:58:16 - LMT 1912 O --10 - -10 -Z Pacific/Guam -14:21 - LMT 1844 D 31 -9:39 - LMT 1901 -10 - GST 2000 D 23 -10 - ChST -Li Pacific/Guam Pacific/Saipan -Z Pacific/Tarawa 11:32:4 - LMT 1901 -12 - +12 -Z Pacific/Enderbury -11:24:20 - LMT 1901 --12 - -12 1979 O --11 - -11 1995 -13 - +13 -Z Pacific/Kiritimati -10:29:20 - LMT 1901 --10:40 - -1040 1979 O --10 - -10 1995 -14 - +14 -Z Pacific/Majuro 11:24:48 - LMT 1901 -11 - +11 1969 O -12 - +12 -Z Pacific/Kwajalein 11:9:20 - LMT 1901 -11 - +11 1969 O --12 - -12 1993 Au 20 -12 - +12 -Z Pacific/Chuuk 10:7:8 - LMT 1901 -10 - +10 -Z Pacific/Pohnpei 10:32:52 - LMT 1901 -11 - +11 -Z Pacific/Kosrae 10:51:56 - LMT 1901 -11 - +11 1969 O -12 - +12 1999 -11 - +11 -Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15 -11:30 - +1130 1942 Mar 15 -9 - +09 1944 Au 15 -11:30 - +1130 1979 May -12 - +12 -R v 1977 1978 - D Sun>=1 0 1 S -R v 1978 1979 - F 27 0 0 - -R v 1996 o - D 1 2s 1 S -R v 1997 o - Mar 2 2s 0 - -Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13 -11 v +11/+12 -R w 1927 o - N 6 2 1 S -R w 1928 o - Mar 4 2 0 M -R w 1928 1933 - O Sun>=8 2 0:30 S -R w 1929 1933 - Mar Sun>=15 2 0 M -R w 1934 1940 - Ap lastSun 2 0 M -R w 1934 1940 - S lastSun 2 0:30 S -R w 1946 o - Ja 1 0 0 S -R w 1974 o - N Sun>=1 2s 1 D -R x 1974 o - N Sun>=1 2:45s 1 D -R w 1975 o - F lastSun 2s 0 S -R x 1975 o - F lastSun 2:45s 0 S -R w 1975 1988 - O lastSun 2s 1 D -R x 1975 1988 - O lastSun 2:45s 1 D -R w 1976 1989 - Mar Sun>=1 2s 0 S -R x 1976 1989 - Mar Sun>=1 2:45s 0 S -R w 1989 o - O Sun>=8 2s 1 D -R x 1989 o - O Sun>=8 2:45s 1 D -R w 1990 2006 - O Sun>=1 2s 1 D -R x 1990 2006 - O Sun>=1 2:45s 1 D -R w 1990 2007 - Mar Sun>=15 2s 0 S -R x 1990 2007 - Mar Sun>=15 2:45s 0 S -R w 2007 ma - S lastSun 2s 1 D -R x 2007 ma - S lastSun 2:45s 1 D -R w 2008 ma - Ap Sun>=1 2s 0 S -R x 2008 ma - Ap Sun>=1 2:45s 0 S -Z Pacific/Auckland 11:39:4 - LMT 1868 N 2 -11:30 w NZ%sT 1946 -12 w NZ%sT -Z Pacific/Chatham 12:13:48 - LMT 1868 N 2 -12:15 - +1215 1946 -12:45 x +1245/+1345 -Li Pacific/Auckland Antarctica/McMurdo -R y 1978 o - N 12 0 0:30 HS -R y 1979 1991 - Mar Sun>=1 0 0 - -R y 1979 1990 - O lastSun 0 0:30 HS -Z Pacific/Rarotonga -10:39:4 - LMT 1901 --10:30 - -1030 1978 N 12 --10 y -10/-0930 -Z Pacific/Niue -11:19:40 - LMT 1901 --11:20 - -1120 1951 --11:30 - -1130 1978 O --11 - -11 -Z Pacific/Norfolk 11:11:52 - LMT 1901 -11:12 - +1112 1951 -11:30 - +1130 1974 O 27 2 -11:30 1 +1230 1975 Mar 2 2 -11:30 - +1130 2015 O 4 2 -11 - +11 -Z Pacific/Palau 8:57:56 - LMT 1901 -9 - +09 -Z Pacific/Port_Moresby 9:48:40 - LMT 1880 -9:48:32 - PMMT 1895 -10 - +10 -Z Pacific/Bougainville 10:22:16 - LMT 1880 -9:48:32 - PMMT 1895 -10 - +10 1942 Jul -9 - +09 1945 Au 21 -10 - +10 2014 D 28 2 -11 - +11 -Z Pacific/Pitcairn -8:40:20 - LMT 1901 --8:30 - -0830 1998 Ap 27 --8 - -08 -Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5 --11:22:48 - LMT 1911 --11 - SST -Li Pacific/Pago_Pago Pacific/Midway -R z 2010 o - S lastSun 0 1 D -R z 2011 o - Ap Sat>=1 4 0 S -R z 2011 o - S lastSat 3 1 D -R z 2012 ma - Ap Sun>=1 4 0 S -R z 2012 ma - S lastSun 3 1 D -Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5 --11:26:56 - LMT 1911 --11:30 - -1130 1950 --11 z -11/-10 2011 D 29 24 -13 z +13/+14 -Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O -11 - +11 -Z Pacific/Fakaofo -11:24:56 - LMT 1901 --11 - -11 2011 D 30 -13 - +13 -R ! 1999 o - O 7 2s 1 S -R ! 2000 o - Mar 19 2s 0 - -R ! 2000 2001 - N Sun>=1 2 1 S -R ! 2001 2002 - Ja lastSun 2 0 - -R ! 2016 o - N Sun>=1 2 1 S -R ! 2017 o - Ja Sun>=15 3 0 - -Z Pacific/Tongatapu 12:19:20 - LMT 1901 -12:20 - +1220 1941 -13 - +13 1999 -13 ! +13/+14 -Z Pacific/Funafuti 11:56:52 - LMT 1901 -12 - +12 -Z Pacific/Wake 11:6:28 - LMT 1901 -12 - +12 -R $ 1983 o - S 25 0 1 S -R $ 1984 1991 - Mar Sun>=23 0 0 - -R $ 1984 o - O 23 0 1 S -R $ 1985 1991 - S Sun>=23 0 1 S -R $ 1992 1993 - Ja Sun>=23 0 0 - -R $ 1992 o - O Sun>=23 0 1 S -Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13 -11 $ +11/+12 -Z Pacific/Wallis 12:15:20 - LMT 1901 -12 - +12 -R % 1916 o - May 21 2s 1 BST -R % 1916 o - O 1 2s 0 GMT -R % 1917 o - Ap 8 2s 1 BST -R % 1917 o - S 17 2s 0 GMT -R % 1918 o - Mar 24 2s 1 BST -R % 1918 o - S 30 2s 0 GMT -R % 1919 o - Mar 30 2s 1 BST -R % 1919 o - S 29 2s 0 GMT -R % 1920 o - Mar 28 2s 1 BST -R % 1920 o - O 25 2s 0 GMT -R % 1921 o - Ap 3 2s 1 BST -R % 1921 o - O 3 2s 0 GMT -R % 1922 o - Mar 26 2s 1 BST -R % 1922 o - O 8 2s 0 GMT -R % 1923 o - Ap Sun>=16 2s 1 BST -R % 1923 1924 - S Sun>=16 2s 0 GMT -R % 1924 o - Ap Sun>=9 2s 1 BST -R % 1925 1926 - Ap Sun>=16 2s 1 BST -R % 1925 1938 - O Sun>=2 2s 0 GMT -R % 1927 o - Ap Sun>=9 2s 1 BST -R % 1928 1929 - Ap Sun>=16 2s 1 BST -R % 1930 o - Ap Sun>=9 2s 1 BST -R % 1931 1932 - Ap Sun>=16 2s 1 BST -R % 1933 o - Ap Sun>=9 2s 1 BST -R % 1934 o - Ap Sun>=16 2s 1 BST -R % 1935 o - Ap Sun>=9 2s 1 BST -R % 1936 1937 - Ap Sun>=16 2s 1 BST -R % 1938 o - Ap Sun>=9 2s 1 BST -R % 1939 o - Ap Sun>=16 2s 1 BST -R % 1939 o - N Sun>=16 2s 0 GMT -R % 1940 o - F Sun>=23 2s 1 BST -R % 1941 o - May Sun>=2 1s 2 BDST -R % 1941 1943 - Au Sun>=9 1s 1 BST -R % 1942 1944 - Ap Sun>=2 1s 2 BDST -R % 1944 o - S Sun>=16 1s 1 BST -R % 1945 o - Ap M>=2 1s 2 BDST -R % 1945 o - Jul Sun>=9 1s 1 BST -R % 1945 1946 - O Sun>=2 2s 0 GMT -R % 1946 o - Ap Sun>=9 2s 1 BST -R % 1947 o - Mar 16 2s 1 BST -R % 1947 o - Ap 13 1s 2 BDST -R % 1947 o - Au 10 1s 1 BST -R % 1947 o - N 2 2s 0 GMT -R % 1948 o - Mar 14 2s 1 BST -R % 1948 o - O 31 2s 0 GMT -R % 1949 o - Ap 3 2s 1 BST -R % 1949 o - O 30 2s 0 GMT -R % 1950 1952 - Ap Sun>=14 2s 1 BST -R % 1950 1952 - O Sun>=21 2s 0 GMT -R % 1953 o - Ap Sun>=16 2s 1 BST -R % 1953 1960 - O Sun>=2 2s 0 GMT -R % 1954 o - Ap Sun>=9 2s 1 BST -R % 1955 1956 - Ap Sun>=16 2s 1 BST -R % 1957 o - Ap Sun>=9 2s 1 BST -R % 1958 1959 - Ap Sun>=16 2s 1 BST -R % 1960 o - Ap Sun>=9 2s 1 BST -R % 1961 1963 - Mar lastSun 2s 1 BST -R % 1961 1968 - O Sun>=23 2s 0 GMT -R % 1964 1967 - Mar Sun>=19 2s 1 BST -R % 1968 o - F 18 2s 1 BST -R % 1972 1980 - Mar Sun>=16 2s 1 BST -R % 1972 1980 - O Sun>=23 2s 0 GMT -R % 1981 1995 - Mar lastSun 1u 1 BST -R % 1981 1989 - O Sun>=23 1u 0 GMT -R % 1990 1995 - O Sun>=22 1u 0 GMT -Z Europe/London -0:1:15 - LMT 1847 D 1 0s -0 % %s 1968 O 27 -1 - BST 1971 O 31 2u -0 % %s 1996 -0 O GMT/BST -Li Europe/London Europe/Jersey -Li Europe/London Europe/Guernsey -Li Europe/London Europe/Isle_of_Man -Z Europe/Dublin -0:25 - LMT 1880 Au 2 --0:25:21 - DMT 1916 May 21 2s --0:25:21 1 IST 1916 O 1 2s -0 % %s 1921 D 6 -0 % GMT/IST 1940 F 25 2s -0 1 IST 1946 O 6 2s -0 - GMT 1947 Mar 16 2s -0 1 IST 1947 N 2 2s -0 - GMT 1948 Ap 18 2s -0 % GMT/IST 1968 O 27 -1 - IST 1971 O 31 2u -0 % GMT/IST 1996 -0 O GMT/IST -R O 1977 1980 - Ap Sun>=1 1u 1 S -R O 1977 o - S lastSun 1u 0 - -R O 1978 o - O 1 1u 0 - -R O 1979 1995 - S lastSun 1u 0 - -R O 1981 ma - Mar lastSun 1u 1 S -R O 1996 ma - O lastSun 1u 0 - -R & 1977 1980 - Ap Sun>=1 1s 1 S -R & 1977 o - S lastSun 1s 0 - -R & 1978 o - O 1 1s 0 - -R & 1979 1995 - S lastSun 1s 0 - -R & 1981 ma - Mar lastSun 1s 1 S -R & 1996 ma - O lastSun 1s 0 - -R ' 1916 o - Ap 30 23 1 S -R ' 1916 o - O 1 1 0 - -R ' 1917 1918 - Ap M>=15 2s 1 S -R ' 1917 1918 - S M>=15 2s 0 - -R ' 1940 o - Ap 1 2s 1 S -R ' 1942 o - N 2 2s 0 - -R ' 1943 o - Mar 29 2s 1 S -R ' 1943 o - O 4 2s 0 - -R ' 1944 1945 - Ap M>=1 2s 1 S -R ' 1944 o - O 2 2s 0 - -R ' 1945 o - S 16 2s 0 - -R ' 1977 1980 - Ap Sun>=1 2s 1 S -R ' 1977 o - S lastSun 2s 0 - -R ' 1978 o - O 1 2s 0 - -R ' 1979 1995 - S lastSun 2s 0 - -R ' 1981 ma - Mar lastSun 2s 1 S -R ' 1996 ma - O lastSun 2s 0 - -R W 1977 1980 - Ap Sun>=1 0 1 S -R W 1977 o - S lastSun 0 0 - -R W 1978 o - O 1 0 0 - -R W 1979 1995 - S lastSun 0 0 - -R W 1981 ma - Mar lastSun 0 1 S -R W 1996 ma - O lastSun 0 0 - -R M 1917 o - Jul 1 23 1 MST -R M 1917 o - D 28 0 0 MMT -R M 1918 o - May 31 22 2 MDST -R M 1918 o - S 16 1 1 MST -R M 1919 o - May 31 23 2 MDST -R M 1919 o - Jul 1 0u 1 MSD -R M 1919 o - Au 16 0 0 MSK -R M 1921 o - F 14 23 1 MSD -R M 1921 o - Mar 20 23 2 +05 -R M 1921 o - S 1 0 1 MSD -R M 1921 o - O 1 0 0 - -R M 1981 1984 - Ap 1 0 1 S -R M 1981 1983 - O 1 0 0 - -R M 1984 1995 - S lastSun 2s 0 - -R M 1985 2010 - Mar lastSun 2s 1 S -R M 1996 2010 - O lastSun 2s 0 - -Z WET 0 O WE%sT -Z CET 1 ' CE%sT -Z MET 1 ' ME%sT -Z EET 2 O EE%sT -R ( 1940 o - Jun 16 0 1 S -R ( 1942 o - N 2 3 0 - -R ( 1943 o - Mar 29 2 1 S -R ( 1943 o - Ap 10 3 0 - -R ( 1974 o - May 4 0 1 S -R ( 1974 o - O 2 0 0 - -R ( 1975 o - May 1 0 1 S -R ( 1975 o - O 2 0 0 - -R ( 1976 o - May 2 0 1 S -R ( 1976 o - O 3 0 0 - -R ( 1977 o - May 8 0 1 S -R ( 1977 o - O 2 0 0 - -R ( 1978 o - May 6 0 1 S -R ( 1978 o - O 1 0 0 - -R ( 1979 o - May 5 0 1 S -R ( 1979 o - S 30 0 0 - -R ( 1980 o - May 3 0 1 S -R ( 1980 o - O 4 0 0 - -R ( 1981 o - Ap 26 0 1 S -R ( 1981 o - S 27 0 0 - -R ( 1982 o - May 2 0 1 S -R ( 1982 o - O 3 0 0 - -R ( 1983 o - Ap 18 0 1 S -R ( 1983 o - O 1 0 0 - -R ( 1984 o - Ap 1 0 1 S -Z Europe/Tirane 1:19:20 - LMT 1914 -1 - CET 1940 Jun 16 -1 ( CE%sT 1984 Jul -1 O CE%sT -Z Europe/Andorra 0:6:4 - LMT 1901 -0 - WET 1946 S 30 -1 - CET 1985 Mar 31 2 -1 O CE%sT -R ) 1920 o - Ap 5 2s 1 S -R ) 1920 o - S 13 2s 0 - -R ) 1946 o - Ap 14 2s 1 S -R ) 1946 1948 - O Sun>=1 2s 0 - -R ) 1947 o - Ap 6 2s 1 S -R ) 1948 o - Ap 18 2s 1 S -R ) 1980 o - Ap 6 0 1 S -R ) 1980 o - S 28 0 0 - -Z Europe/Vienna 1:5:21 - LMT 1893 Ap -1 ' CE%sT 1920 -1 ) CE%sT 1940 Ap 1 2s -1 ' CE%sT 1945 Ap 2 2s -1 1 CEST 1945 Ap 12 2s -1 - CET 1946 -1 ) CE%sT 1981 -1 O CE%sT -Z Europe/Minsk 1:50:16 - LMT 1880 -1:50 - MMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 Jun 28 -1 ' CE%sT 1944 Jul 3 -3 M MSK/MSD 1990 -3 - MSK 1991 Mar 31 2s -2 M EE%sT 2011 Mar 27 2s -3 - +03 -R * 1918 o - Mar 9 0s 1 S -R * 1918 1919 - O Sat>=1 23s 0 - -R * 1919 o - Mar 1 23s 1 S -R * 1920 o - F 14 23s 1 S -R * 1920 o - O 23 23s 0 - -R * 1921 o - Mar 14 23s 1 S -R * 1921 o - O 25 23s 0 - -R * 1922 o - Mar 25 23s 1 S -R * 1922 1927 - O Sat>=1 23s 0 - -R * 1923 o - Ap 21 23s 1 S -R * 1924 o - Mar 29 23s 1 S -R * 1925 o - Ap 4 23s 1 S -R * 1926 o - Ap 17 23s 1 S -R * 1927 o - Ap 9 23s 1 S -R * 1928 o - Ap 14 23s 1 S -R * 1928 1938 - O Sun>=2 2s 0 - -R * 1929 o - Ap 21 2s 1 S -R * 1930 o - Ap 13 2s 1 S -R * 1931 o - Ap 19 2s 1 S -R * 1932 o - Ap 3 2s 1 S -R * 1933 o - Mar 26 2s 1 S -R * 1934 o - Ap 8 2s 1 S -R * 1935 o - Mar 31 2s 1 S -R * 1936 o - Ap 19 2s 1 S -R * 1937 o - Ap 4 2s 1 S -R * 1938 o - Mar 27 2s 1 S -R * 1939 o - Ap 16 2s 1 S -R * 1939 o - N 19 2s 0 - -R * 1940 o - F 25 2s 1 S -R * 1944 o - S 17 2s 0 - -R * 1945 o - Ap 2 2s 1 S -R * 1945 o - S 16 2s 0 - -R * 1946 o - May 19 2s 1 S -R * 1946 o - O 7 2s 0 - -Z Europe/Brussels 0:17:30 - LMT 1880 -0:17:30 - BMT 1892 May 1 12 -0 - WET 1914 N 8 -1 - CET 1916 May -1 ' CE%sT 1918 N 11 11u -0 * WE%sT 1940 May 20 2s -1 ' CE%sT 1944 S 3 -1 * CE%sT 1977 -1 O CE%sT -R + 1979 o - Mar 31 23 1 S -R + 1979 o - O 1 1 0 - -R + 1980 1982 - Ap Sat>=1 23 1 S -R + 1980 o - S 29 1 0 - -R + 1981 o - S 27 2 0 - -Z Europe/Sofia 1:33:16 - LMT 1880 -1:56:56 - IMT 1894 N 30 -2 - EET 1942 N 2 3 -1 ' CE%sT 1945 -1 - CET 1945 Ap 2 3 -2 - EET 1979 Mar 31 23 -2 + EE%sT 1982 S 26 3 -2 ' EE%sT 1991 -2 W EE%sT 1997 -2 O EE%sT -R , 1945 o - Ap 8 2s 1 S -R , 1945 o - N 18 2s 0 - -R , 1946 o - May 6 2s 1 S -R , 1946 1949 - O Sun>=1 2s 0 - -R , 1947 o - Ap 20 2s 1 S -R , 1948 o - Ap 18 2s 1 S -R , 1949 o - Ap 9 2s 1 S -Z Europe/Prague 0:57:44 - LMT 1850 -0:57:44 - PMT 1891 O -1 ' CE%sT 1944 S 17 2s -1 , CE%sT 1979 -1 O CE%sT -R . 1916 o - May 14 23 1 S -R . 1916 o - S 30 23 0 - -R . 1940 o - May 15 0 1 S -R . 1945 o - Ap 2 2s 1 S -R . 1945 o - Au 15 2s 0 - -R . 1946 o - May 1 2s 1 S -R . 1946 o - S 1 2s 0 - -R . 1947 o - May 4 2s 1 S -R . 1947 o - Au 10 2s 0 - -R . 1948 o - May 9 2s 1 S -R . 1948 o - Au 8 2s 0 - -Z Europe/Copenhagen 0:50:20 - LMT 1890 -0:50:20 - CMT 1894 -1 . CE%sT 1942 N 2 2s -1 ' CE%sT 1945 Ap 2 2 -1 . CE%sT 1980 -1 O CE%sT -Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11 -0 - WET 1981 -0 O WE%sT -R / 1991 1992 - Mar lastSun 2 1 D -R / 1991 1992 - S lastSun 2 0 S -R / 1993 2006 - Ap Sun>=1 2 1 D -R / 1993 2006 - O lastSun 2 0 S -R / 2007 ma - Mar Sun>=8 2 1 D -R / 2007 ma - N Sun>=1 2 0 S -Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 --3 - -03 1980 Ap 6 2 --3 O -03/-02 1996 -0 - GMT -Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 --2 - -02 1980 Ap 6 2 --2 ' -02/-01 1981 Mar 29 --1 O -01/+00 -Z America/Godthab -3:26:56 - LMT 1916 Jul 28 --3 - -03 1980 Ap 6 2 --3 O -03/-02 -Z America/Thule -4:35:8 - LMT 1916 Jul 28 --4 / A%sT -Z Europe/Tallinn 1:39 - LMT 1880 -1:39 - TMT 1918 F -1 ' CE%sT 1919 Jul -1:39 - TMT 1921 May -2 - EET 1940 Au 6 -3 - MSK 1941 S 15 -1 ' CE%sT 1944 S 22 -3 M MSK/MSD 1989 Mar 26 2s -2 1 EEST 1989 S 24 2s -2 ' EE%sT 1998 S 22 -2 O EE%sT 1999 O 31 4 -2 - EET 2002 F 21 -2 O EE%sT -R : 1942 o - Ap 2 24 1 S -R : 1942 o - O 4 1 0 - -R : 1981 1982 - Mar lastSun 2 1 S -R : 1981 1982 - S lastSun 3 0 - -Z Europe/Helsinki 1:39:49 - LMT 1878 May 31 -1:39:49 - HMT 1921 May -2 : EE%sT 1983 -2 O EE%sT -Li Europe/Helsinki Europe/Mariehamn -R ; 1916 o - Jun 14 23s 1 S -R ; 1916 1919 - O Sun>=1 23s 0 - -R ; 1917 o - Mar 24 23s 1 S -R ; 1918 o - Mar 9 23s 1 S -R ; 1919 o - Mar 1 23s 1 S -R ; 1920 o - F 14 23s 1 S -R ; 1920 o - O 23 23s 0 - -R ; 1921 o - Mar 14 23s 1 S -R ; 1921 o - O 25 23s 0 - -R ; 1922 o - Mar 25 23s 1 S -R ; 1922 1938 - O Sat>=1 23s 0 - -R ; 1923 o - May 26 23s 1 S -R ; 1924 o - Mar 29 23s 1 S -R ; 1925 o - Ap 4 23s 1 S -R ; 1926 o - Ap 17 23s 1 S -R ; 1927 o - Ap 9 23s 1 S -R ; 1928 o - Ap 14 23s 1 S -R ; 1929 o - Ap 20 23s 1 S -R ; 1930 o - Ap 12 23s 1 S -R ; 1931 o - Ap 18 23s 1 S -R ; 1932 o - Ap 2 23s 1 S -R ; 1933 o - Mar 25 23s 1 S -R ; 1934 o - Ap 7 23s 1 S -R ; 1935 o - Mar 30 23s 1 S -R ; 1936 o - Ap 18 23s 1 S -R ; 1937 o - Ap 3 23s 1 S -R ; 1938 o - Mar 26 23s 1 S -R ; 1939 o - Ap 15 23s 1 S -R ; 1939 o - N 18 23s 0 - -R ; 1940 o - F 25 2 1 S -R ; 1941 o - May 5 0 2 M -R ; 1941 o - O 6 0 1 S -R ; 1942 o - Mar 9 0 2 M -R ; 1942 o - N 2 3 1 S -R ; 1943 o - Mar 29 2 2 M -R ; 1943 o - O 4 3 1 S -R ; 1944 o - Ap 3 2 2 M -R ; 1944 o - O 8 1 1 S -R ; 1945 o - Ap 2 2 2 M -R ; 1945 o - S 16 3 0 - -R ; 1976 o - Mar 28 1 1 S -R ; 1976 o - S 26 1 0 - -Z Europe/Paris 0:9:21 - LMT 1891 Mar 15 0:1 -0:9:21 - PMT 1911 Mar 11 0:1 -0 ; WE%sT 1940 Jun 14 23 -1 ' CE%sT 1944 Au 25 -0 ; WE%sT 1945 S 16 3 -1 ; CE%sT 1977 -1 O CE%sT -R < 1946 o - Ap 14 2s 1 S -R < 1946 o - O 7 2s 0 - -R < 1947 1949 - O Sun>=1 2s 0 - -R < 1947 o - Ap 6 3s 1 S -R < 1947 o - May 11 2s 2 M -R < 1947 o - Jun 29 3 1 S -R < 1948 o - Ap 18 2s 1 S -R < 1949 o - Ap 10 2s 1 S -R = 1945 o - May 24 2 2 M -R = 1945 o - S 24 3 1 S -R = 1945 o - N 18 2s 0 - -Z Europe/Berlin 0:53:28 - LMT 1893 Ap -1 ' CE%sT 1945 May 24 2 -1 = CE%sT 1946 -1 < CE%sT 1980 -1 O CE%sT -Li Europe/Zurich Europe/Busingen -Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2 0s -0 % %s 1957 Ap 14 2 -1 - CET 1982 -1 O CE%sT -R > 1932 o - Jul 7 0 1 S -R > 1932 o - S 1 0 0 - -R > 1941 o - Ap 7 0 1 S -R > 1942 o - N 2 3 0 - -R > 1943 o - Mar 30 0 1 S -R > 1943 o - O 4 0 0 - -R > 1952 o - Jul 1 0 1 S -R > 1952 o - N 2 0 0 - -R > 1975 o - Ap 12 0s 1 S -R > 1975 o - N 26 0s 0 - -R > 1976 o - Ap 11 2s 1 S -R > 1976 o - O 10 2s 0 - -R > 1977 1978 - Ap Sun>=1 2s 1 S -R > 1977 o - S 26 2s 0 - -R > 1978 o - S 24 4 0 - -R > 1979 o - Ap 1 9 1 S -R > 1979 o - S 29 2 0 - -R > 1980 o - Ap 1 0 1 S -R > 1980 o - S 28 0 0 - -Z Europe/Athens 1:34:52 - LMT 1895 S 14 -1:34:52 - AMT 1916 Jul 28 0:1 -2 > EE%sT 1941 Ap 30 -1 > CE%sT 1944 Ap 4 -2 > EE%sT 1981 -2 O EE%sT -R ? 1918 o - Ap 1 3 1 S -R ? 1918 o - S 16 3 0 - -R ? 1919 o - Ap 15 3 1 S -R ? 1919 o - N 24 3 0 - -R ? 1945 o - May 1 23 1 S -R ? 1945 o - N 1 0 0 - -R ? 1946 o - Mar 31 2s 1 S -R ? 1946 1949 - O Sun>=1 2s 0 - -R ? 1947 1949 - Ap Sun>=4 2s 1 S -R ? 1950 o - Ap 17 2s 1 S -R ? 1950 o - O 23 2s 0 - -R ? 1954 1955 - May 23 0 1 S -R ? 1954 1955 - O 3 0 0 - -R ? 1956 o - Jun Sun>=1 0 1 S -R ? 1956 o - S lastSun 0 0 - -R ? 1957 o - Jun Sun>=1 1 1 S -R ? 1957 o - S lastSun 3 0 - -R ? 1980 o - Ap 6 1 1 S -Z Europe/Budapest 1:16:20 - LMT 1890 O -1 ' CE%sT 1918 -1 ? CE%sT 1941 Ap 8 -1 ' CE%sT 1945 -1 ? CE%sT 1980 S 28 2s -1 O CE%sT -R @ 1917 1919 - F 19 23 1 S -R @ 1917 o - O 21 1 0 - -R @ 1918 1919 - N 16 1 0 - -R @ 1921 o - Mar 19 23 1 S -R @ 1921 o - Jun 23 1 0 - -R @ 1939 o - Ap 29 23 1 S -R @ 1939 o - O 29 2 0 - -R @ 1940 o - F 25 2 1 S -R @ 1940 1941 - N Sun>=2 1s 0 - -R @ 1941 1942 - Mar Sun>=2 1s 1 S -R @ 1943 1946 - Mar Sun>=1 1s 1 S -R @ 1942 1948 - O Sun>=22 1s 0 - -R @ 1947 1967 - Ap Sun>=1 1s 1 S -R @ 1949 o - O 30 1s 0 - -R @ 1950 1966 - O Sun>=22 1s 0 - -R @ 1967 o - O 29 1s 0 - -Z Atlantic/Reykjavik -1:28 - LMT 1908 --1 @ -01/+00 1968 Ap 7 1s -0 - GMT -R [ 1916 o - Jun 3 24 1 S -R [ 1916 1917 - S 30 24 0 - -R [ 1917 o - Mar 31 24 1 S -R [ 1918 o - Mar 9 24 1 S -R [ 1918 o - O 6 24 0 - -R [ 1919 o - Mar 1 24 1 S -R [ 1919 o - O 4 24 0 - -R [ 1920 o - Mar 20 24 1 S -R [ 1920 o - S 18 24 0 - -R [ 1940 o - Jun 14 24 1 S -R [ 1942 o - N 2 2s 0 - -R [ 1943 o - Mar 29 2s 1 S -R [ 1943 o - O 4 2s 0 - -R [ 1944 o - Ap 2 2s 1 S -R [ 1944 o - S 17 2s 0 - -R [ 1945 o - Ap 2 2 1 S -R [ 1945 o - S 15 1 0 - -R [ 1946 o - Mar 17 2s 1 S -R [ 1946 o - O 6 2s 0 - -R [ 1947 o - Mar 16 0s 1 S -R [ 1947 o - O 5 0s 0 - -R [ 1948 o - F 29 2s 1 S -R [ 1948 o - O 3 2s 0 - -R [ 1966 1968 - May Sun>=22 0s 1 S -R [ 1966 o - S 24 24 0 - -R [ 1967 1969 - S Sun>=22 0s 0 - -R [ 1969 o - Jun 1 0s 1 S -R [ 1970 o - May 31 0s 1 S -R [ 1970 o - S lastSun 0s 0 - -R [ 1971 1972 - May Sun>=22 0s 1 S -R [ 1971 o - S lastSun 0s 0 - -R [ 1972 o - O 1 0s 0 - -R [ 1973 o - Jun 3 0s 1 S -R [ 1973 1974 - S lastSun 0s 0 - -R [ 1974 o - May 26 0s 1 S -R [ 1975 o - Jun 1 0s 1 S -R [ 1975 1977 - S lastSun 0s 0 - -R [ 1976 o - May 30 0s 1 S -R [ 1977 1979 - May Sun>=22 0s 1 S -R [ 1978 o - O 1 0s 0 - -R [ 1979 o - S 30 0s 0 - -Z Europe/Rome 0:49:56 - LMT 1866 S 22 -0:49:56 - RMT 1893 O 31 23:49:56 -1 [ CE%sT 1943 S 10 -1 ' CE%sT 1944 Jun 4 -1 [ CE%sT 1980 -1 O CE%sT -Li Europe/Rome Europe/Vatican -Li Europe/Rome Europe/San_Marino -R \ 1989 1996 - Mar lastSun 2s 1 S -R \ 1989 1996 - S lastSun 2s 0 - -Z Europe/Riga 1:36:34 - LMT 1880 -1:36:34 - RMT 1918 Ap 15 2 -1:36:34 1 LST 1918 S 16 3 -1:36:34 - RMT 1919 Ap 1 2 -1:36:34 1 LST 1919 May 22 3 -1:36:34 - RMT 1926 May 11 -2 - EET 1940 Au 5 -3 - MSK 1941 Jul -1 ' CE%sT 1944 O 13 -3 M MSK/MSD 1989 Mar lastSun 2s -2 1 EEST 1989 S lastSun 2s -2 \ EE%sT 1997 Ja 21 -2 O EE%sT 2000 F 29 -2 - EET 2001 Ja 2 -2 O EE%sT -Li Europe/Zurich Europe/Vaduz -Z Europe/Vilnius 1:41:16 - LMT 1880 -1:24 - WMT 1917 -1:35:36 - KMT 1919 O 10 -1 - CET 1920 Jul 12 -2 - EET 1920 O 9 -1 - CET 1940 Au 3 -3 - MSK 1941 Jun 24 -1 ' CE%sT 1944 Au -3 M MSK/MSD 1989 Mar 26 2s -2 M EE%sT 1991 S 29 2s -2 ' EE%sT 1998 -2 - EET 1998 Mar 29 1u -1 O CE%sT 1999 O 31 1u -2 - EET 2003 -2 O EE%sT -R ] 1916 o - May 14 23 1 S -R ] 1916 o - O 1 1 0 - -R ] 1917 o - Ap 28 23 1 S -R ] 1917 o - S 17 1 0 - -R ] 1918 o - Ap M>=15 2s 1 S -R ] 1918 o - S M>=15 2s 0 - -R ] 1919 o - Mar 1 23 1 S -R ] 1919 o - O 5 3 0 - -R ] 1920 o - F 14 23 1 S -R ] 1920 o - O 24 2 0 - -R ] 1921 o - Mar 14 23 1 S -R ] 1921 o - O 26 2 0 - -R ] 1922 o - Mar 25 23 1 S -R ] 1922 o - O Sun>=2 1 0 - -R ] 1923 o - Ap 21 23 1 S -R ] 1923 o - O Sun>=2 2 0 - -R ] 1924 o - Mar 29 23 1 S -R ] 1924 1928 - O Sun>=2 1 0 - -R ] 1925 o - Ap 5 23 1 S -R ] 1926 o - Ap 17 23 1 S -R ] 1927 o - Ap 9 23 1 S -R ] 1928 o - Ap 14 23 1 S -R ] 1929 o - Ap 20 23 1 S -Z Europe/Luxembourg 0:24:36 - LMT 1904 Jun -1 ] CE%sT 1918 N 25 -0 ] WE%sT 1929 O 6 2s -0 * WE%sT 1940 May 14 3 -1 ' WE%sT 1944 S 18 3 -1 * CE%sT 1977 -1 O CE%sT -R ^ 1973 o - Mar 31 0s 1 S -R ^ 1973 o - S 29 0s 0 - -R ^ 1974 o - Ap 21 0s 1 S -R ^ 1974 o - S 16 0s 0 - -R ^ 1975 1979 - Ap Sun>=15 2 1 S -R ^ 1975 1980 - S Sun>=15 2 0 - -R ^ 1980 o - Mar 31 2 1 S -Z Europe/Malta 0:58:4 - LMT 1893 N 2 0s -1 [ CE%sT 1973 Mar 31 -1 ^ CE%sT 1981 -1 O CE%sT -R _ 1997 ma - Mar lastSun 2 1 S -R _ 1997 ma - O lastSun 3 0 - -Z Europe/Chisinau 1:55:20 - LMT 1880 -1:55 - CMT 1918 F 15 -1:44:24 - BMT 1931 Jul 24 -2 ` EE%sT 1940 Au 15 -2 1 EEST 1941 Jul 17 -1 ' CE%sT 1944 Au 24 -3 M MSK/MSD 1990 May 6 2 -2 M EE%sT 1992 -2 W EE%sT 1997 -2 _ EE%sT -Z Europe/Monaco 0:29:32 - LMT 1891 Mar 15 -0:9:21 - PMT 1911 Mar 11 -0 ; WE%sT 1945 S 16 3 -1 ; CE%sT 1977 -1 O CE%sT -R { 1916 o - May 1 0 1 NST -R { 1916 o - O 1 0 0 AMT -R { 1917 o - Ap 16 2s 1 NST -R { 1917 o - S 17 2s 0 AMT -R { 1918 1921 - Ap M>=1 2s 1 NST -R { 1918 1921 - S lastM 2s 0 AMT -R { 1922 o - Mar lastSun 2s 1 NST -R { 1922 1936 - O Sun>=2 2s 0 AMT -R { 1923 o - Jun F>=1 2s 1 NST -R { 1924 o - Mar lastSun 2s 1 NST -R { 1925 o - Jun F>=1 2s 1 NST -R { 1926 1931 - May 15 2s 1 NST -R { 1932 o - May 22 2s 1 NST -R { 1933 1936 - May 15 2s 1 NST -R { 1937 o - May 22 2s 1 NST -R { 1937 o - Jul 1 0 1 S -R { 1937 1939 - O Sun>=2 2s 0 - -R { 1938 1939 - May 15 2s 1 S -R { 1945 o - Ap 2 2s 1 S -R { 1945 o - S 16 2s 0 - -Z Europe/Amsterdam 0:19:32 - LMT 1835 -0:19:32 { %s 1937 Jul -0:20 { +0020/+0120 1940 May 16 -1 ' CE%sT 1945 Ap 2 2 -1 { CE%sT 1977 -1 O CE%sT -R | 1916 o - May 22 1 1 S -R | 1916 o - S 30 0 0 - -R | 1945 o - Ap 2 2s 1 S -R | 1945 o - O 1 2s 0 - -R | 1959 1964 - Mar Sun>=15 2s 1 S -R | 1959 1965 - S Sun>=15 2s 0 - -R | 1965 o - Ap 25 2s 1 S -Z Europe/Oslo 0:43 - LMT 1895 -1 | CE%sT 1940 Au 10 23 -1 ' CE%sT 1945 Ap 2 2 -1 | CE%sT 1980 -1 O CE%sT -Li Europe/Oslo Arctic/Longyearbyen -R } 1918 1919 - S 16 2s 0 - -R } 1919 o - Ap 15 2s 1 S -R } 1944 o - Ap 3 2s 1 S -R } 1944 o - O 4 2 0 - -R } 1945 o - Ap 29 0 1 S -R } 1945 o - N 1 0 0 - -R } 1946 o - Ap 14 0s 1 S -R } 1946 o - O 7 2s 0 - -R } 1947 o - May 4 2s 1 S -R } 1947 1949 - O Sun>=1 2s 0 - -R } 1948 o - Ap 18 2s 1 S -R } 1949 o - Ap 10 2s 1 S -R } 1957 o - Jun 2 1s 1 S -R } 1957 1958 - S lastSun 1s 0 - -R } 1958 o - Mar 30 1s 1 S -R } 1959 o - May 31 1s 1 S -R } 1959 1961 - O Sun>=1 1s 0 - -R } 1960 o - Ap 3 1s 1 S -R } 1961 1964 - May lastSun 1s 1 S -R } 1962 1964 - S lastSun 1s 0 - -Z Europe/Warsaw 1:24 - LMT 1880 -1:24 - WMT 1915 Au 5 -1 ' CE%sT 1918 S 16 3 -2 } EE%sT 1922 Jun -1 } CE%sT 1940 Jun 23 2 -1 ' CE%sT 1944 O -1 } CE%sT 1977 -1 & CE%sT 1988 -1 O CE%sT -R ~ 1916 o - Jun 17 23 1 S -R ~ 1916 o - N 1 1 0 - -R ~ 1917 o - F 28 23s 1 S -R ~ 1917 1921 - O 14 23s 0 - -R ~ 1918 o - Mar 1 23s 1 S -R ~ 1919 o - F 28 23s 1 S -R ~ 1920 o - F 29 23s 1 S -R ~ 1921 o - F 28 23s 1 S -R ~ 1924 o - Ap 16 23s 1 S -R ~ 1924 o - O 14 23s 0 - -R ~ 1926 o - Ap 17 23s 1 S -R ~ 1926 1929 - O Sat>=1 23s 0 - -R ~ 1927 o - Ap 9 23s 1 S -R ~ 1928 o - Ap 14 23s 1 S -R ~ 1929 o - Ap 20 23s 1 S -R ~ 1931 o - Ap 18 23s 1 S -R ~ 1931 1932 - O Sat>=1 23s 0 - -R ~ 1932 o - Ap 2 23s 1 S -R ~ 1934 o - Ap 7 23s 1 S -R ~ 1934 1938 - O Sat>=1 23s 0 - -R ~ 1935 o - Mar 30 23s 1 S -R ~ 1936 o - Ap 18 23s 1 S -R ~ 1937 o - Ap 3 23s 1 S -R ~ 1938 o - Mar 26 23s 1 S -R ~ 1939 o - Ap 15 23s 1 S -R ~ 1939 o - N 18 23s 0 - -R ~ 1940 o - F 24 23s 1 S -R ~ 1940 1941 - O 5 23s 0 - -R ~ 1941 o - Ap 5 23s 1 S -R ~ 1942 1945 - Mar Sat>=8 23s 1 S -R ~ 1942 o - Ap 25 22s 2 M -R ~ 1942 o - Au 15 22s 1 S -R ~ 1942 1945 - O Sat>=24 23s 0 - -R ~ 1943 o - Ap 17 22s 2 M -R ~ 1943 1945 - Au Sat>=25 22s 1 S -R ~ 1944 1945 - Ap Sat>=21 22s 2 M -R ~ 1946 o - Ap Sat>=1 23s 1 S -R ~ 1946 o - O Sat>=1 23s 0 - -R ~ 1947 1949 - Ap Sun>=1 2s 1 S -R ~ 1947 1949 - O Sun>=1 2s 0 - -R ~ 1951 1965 - Ap Sun>=1 2s 1 S -R ~ 1951 1965 - O Sun>=1 2s 0 - -R ~ 1977 o - Mar 27 0s 1 S -R ~ 1977 o - S 25 0s 0 - -R ~ 1978 1979 - Ap Sun>=1 0s 1 S -R ~ 1978 o - O 1 0s 0 - -R ~ 1979 1982 - S lastSun 1s 0 - -R ~ 1980 o - Mar lastSun 0s 1 S -R ~ 1981 1982 - Mar lastSun 1s 1 S -R ~ 1983 o - Mar lastSun 2s 1 S -Z Europe/Lisbon -0:36:45 - LMT 1884 --0:36:45 - LMT 1912 -0 ~ WE%sT 1966 Ap 3 2 -1 - CET 1976 S 26 1 -0 ~ WE%sT 1983 S 25 1s -0 & WE%sT 1992 S 27 1s -1 O CE%sT 1996 Mar 31 1u -0 O WE%sT -Z Atlantic/Azores -1:42:40 - LMT 1884 --1:54:32 - HMT 1912 --2 ~ -02/-01 1942 Ap 25 22s --2 ~ +00 1942 Au 15 22s --2 ~ -02/-01 1943 Ap 17 22s --2 ~ +00 1943 Au 28 22s --2 ~ -02/-01 1944 Ap 22 22s --2 ~ +00 1944 Au 26 22s --2 ~ -02/-01 1945 Ap 21 22s --2 ~ +00 1945 Au 25 22s --2 ~ -02/-01 1966 Ap 3 2 --1 ~ -01/+00 1983 S 25 1s --1 & -01/+00 1992 S 27 1s -0 O WE%sT 1993 Mar 28 1u --1 O -01/+00 -Z Atlantic/Madeira -1:7:36 - LMT 1884 --1:7:36 - FMT 1912 --1 ~ -01/+00 1942 Ap 25 22s --1 ~ +01 1942 Au 15 22s --1 ~ -01/+00 1943 Ap 17 22s --1 ~ +01 1943 Au 28 22s --1 ~ -01/+00 1944 Ap 22 22s --1 ~ +01 1944 Au 26 22s --1 ~ -01/+00 1945 Ap 21 22s --1 ~ +01 1945 Au 25 22s --1 ~ -01/+00 1966 Ap 3 2 -0 ~ WE%sT 1983 S 25 1s -0 O WE%sT -R ` 1932 o - May 21 0s 1 S -R ` 1932 1939 - O Sun>=1 0s 0 - -R ` 1933 1939 - Ap Sun>=2 0s 1 S -R ` 1979 o - May 27 0 1 S -R ` 1979 o - S lastSun 0 0 - -R ` 1980 o - Ap 5 23 1 S -R ` 1980 o - S lastSun 1 0 - -R ` 1991 1993 - Mar lastSun 0s 1 S -R ` 1991 1993 - S lastSun 0s 0 - -Z Europe/Bucharest 1:44:24 - LMT 1891 O -1:44:24 - BMT 1931 Jul 24 -2 ` EE%sT 1981 Mar 29 2s -2 ' EE%sT 1991 -2 ` EE%sT 1994 -2 W EE%sT 1997 -2 O EE%sT -Z Europe/Kaliningrad 1:22 - LMT 1893 Ap -1 ' CE%sT 1945 -2 } CE%sT 1946 -3 M MSK/MSD 1989 Mar 26 2s -2 M EE%sT 2011 Mar 27 2s -3 - +03 2014 O 26 2s -2 - EET -Z Europe/Moscow 2:30:17 - LMT 1880 -2:30:17 - MMT 1916 Jul 3 -2:31:19 M %s 1919 Jul 1 0u -3 M %s 1921 O -3 M MSK/MSD 1922 O -2 - EET 1930 Jun 21 -3 M MSK/MSD 1991 Mar 31 2s -2 M EE%sT 1992 Ja 19 2s -3 M MSK/MSD 2011 Mar 27 2s -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Simferopol 2:16:24 - LMT 1880 -2:16 - SMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 N -1 ' CE%sT 1944 Ap 13 -3 M MSK/MSD 1990 -3 - MSK 1990 Jul 1 2 -2 - EET 1992 -2 W EE%sT 1994 May -3 W MSK/MSD 1996 Mar 31 0s -3 1 MSD 1996 O 27 3s -3 M MSK/MSD 1997 -3 - MSK 1997 Mar lastSun 1u -2 O EE%sT 2014 Mar 30 2 -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Astrakhan 3:12:12 - LMT 1924 May -3 - +03 1930 Jun 21 -4 M +04/+05 1989 Mar 26 2s -3 M +03/+04 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 M +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 Mar 27 2s -4 - +04 -Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3 -3 - +03 1930 Jun 21 -4 - +04 1961 N 11 -4 M +04/+05 1988 Mar 27 2s -3 M +03/+04 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 M +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 -Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 M +04/+05 1988 Mar 27 2s -3 M +03/+04 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 M +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 D 4 2s -4 - +04 -Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 M +04/+05 1989 Mar 26 2s -3 M +03/+04 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 M +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 -Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 - +04 1935 Ja 27 -4 M +04/+05 1989 Mar 26 2s -3 M +03/+04 1991 Mar 31 2s -2 M +02/+03 1991 S 29 2s -3 - +03 1991 O 20 3 -4 M +04/+05 2010 Mar 28 2s -3 M +03/+04 2011 Mar 27 2s -4 - +04 -Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 M +04/+05 1989 Mar 26 2s -3 M +03/+04 1991 Mar 31 2s -2 M +02/+03 1992 Ja 19 2s -3 M +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 Mar 27 2s -4 - +04 -Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3 -3:45:5 - PMT 1919 Jul 15 4 -4 - +04 1930 Jun 21 -5 M +05/+06 1991 Mar 31 2s -4 M +04/+05 1992 Ja 19 2s -5 M +05/+06 2011 Mar 27 2s -6 - +06 2014 O 26 2s -5 - +05 -Z Asia/Omsk 4:53:30 - LMT 1919 N 14 -5 - +05 1930 Jun 21 -6 M +06/+07 1991 Mar 31 2s -5 M +05/+06 1992 Ja 19 2s -6 M +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 -Z Asia/Barnaul 5:35 - LMT 1919 D 10 -6 - +06 1930 Jun 21 -7 M +07/+08 1991 Mar 31 2s -6 M +06/+07 1992 Ja 19 2s -7 M +07/+08 1995 May 28 -6 M +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 Mar 27 2s -7 - +07 -Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6 -6 - +06 1930 Jun 21 -7 M +07/+08 1991 Mar 31 2s -6 M +06/+07 1992 Ja 19 2s -7 M +07/+08 1993 May 23 -6 M +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 Jul 24 2s -7 - +07 -Z Asia/Tomsk 5:39:51 - LMT 1919 D 22 -6 - +06 1930 Jun 21 -7 M +07/+08 1991 Mar 31 2s -6 M +06/+07 1992 Ja 19 2s -7 M +07/+08 2002 May 1 3 -6 M +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 May 29 2s -7 - +07 -Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May -6 - +06 1930 Jun 21 -7 M +07/+08 1991 Mar 31 2s -6 M +06/+07 1992 Ja 19 2s -7 M +07/+08 2010 Mar 28 2s -6 M +06/+07 2011 Mar 27 2s -7 - +07 -Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6 -6 - +06 1930 Jun 21 -7 M +07/+08 1991 Mar 31 2s -6 M +06/+07 1992 Ja 19 2s -7 M +07/+08 2011 Mar 27 2s -8 - +08 2014 O 26 2s -7 - +07 -Z Asia/Irkutsk 6:57:5 - LMT 1880 -6:57:5 - IMT 1920 Ja 25 -7 - +07 1930 Jun 21 -8 M +08/+09 1991 Mar 31 2s -7 M +07/+08 1992 Ja 19 2s -8 M +08/+09 2011 Mar 27 2s -9 - +09 2014 O 26 2s -8 - +08 -Z Asia/Chita 7:33:52 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 M +09/+10 1991 Mar 31 2s -8 M +08/+09 1992 Ja 19 2s -9 M +09/+10 2011 Mar 27 2s -10 - +10 2014 O 26 2s -8 - +08 2016 Mar 27 2 -9 - +09 -Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 M +09/+10 1991 Mar 31 2s -8 M +08/+09 1992 Ja 19 2s -9 M +09/+10 2011 Mar 27 2s -10 - +10 2014 O 26 2s -9 - +09 -Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15 -9 - +09 1930 Jun 21 -10 M +10/+11 1991 Mar 31 2s -9 M +09/+10 1992 Ja 19 2s -10 M +10/+11 2011 Mar 27 2s -11 - +11 2014 O 26 2s -10 - +10 -Z Asia/Khandyga 9:2:13 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 M +09/+10 1991 Mar 31 2s -8 M +08/+09 1992 Ja 19 2s -9 M +09/+10 2004 -10 M +10/+11 2011 Mar 27 2s -11 - +11 2011 S 13 0s -10 - +10 2014 O 26 2s -9 - +09 -Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23 -9 - +09 1945 Au 25 -11 M +11/+12 1991 Mar 31 2s -10 M +10/+11 1992 Ja 19 2s -11 M +11/+12 1997 Mar lastSun 2s -10 M +10/+11 2011 Mar 27 2s -11 - +11 2014 O 26 2s -10 - +10 2016 Mar 27 2s -11 - +11 -Z Asia/Magadan 10:3:12 - LMT 1924 May 2 -10 - +10 1930 Jun 21 -11 M +11/+12 1991 Mar 31 2s -10 M +10/+11 1992 Ja 19 2s -11 M +11/+12 2011 Mar 27 2s -12 - +12 2014 O 26 2s -10 - +10 2016 Ap 24 2s -11 - +11 -Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2 -10 - +10 1930 Jun 21 -11 M +11/+12 1991 Mar 31 2s -10 M +10/+11 1992 Ja 19 2s -11 M +11/+12 2011 Mar 27 2s -12 - +12 2014 O 26 2s -11 - +11 -Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 M +09/+10 1981 Ap -11 M +11/+12 1991 Mar 31 2s -10 M +10/+11 1992 Ja 19 2s -11 M +11/+12 2011 Mar 27 2s -12 - +12 2011 S 13 0s -11 - +11 2014 O 26 2s -10 - +10 -Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10 -11 - +11 1930 Jun 21 -12 M +12/+13 1991 Mar 31 2s -11 M +11/+12 1992 Ja 19 2s -12 M +12/+13 2010 Mar 28 2s -11 M +11/+12 2011 Mar 27 2s -12 - +12 -Z Asia/Anadyr 11:49:56 - LMT 1924 May 2 -12 - +12 1930 Jun 21 -13 M +13/+14 1982 Ap 1 0s -12 M +12/+13 1991 Mar 31 2s -11 M +11/+12 1992 Ja 19 2s -12 M +12/+13 2010 Mar 28 2s -11 M +11/+12 2011 Mar 27 2s -12 - +12 -Z Europe/Belgrade 1:22 - LMT 1884 -1 - CET 1941 Ap 18 23 -1 ' CE%sT 1945 -1 - CET 1945 May 8 2s -1 1 CEST 1945 S 16 2s -1 - CET 1982 N 27 -1 O CE%sT -Li Europe/Belgrade Europe/Ljubljana -Li Europe/Belgrade Europe/Podgorica -Li Europe/Belgrade Europe/Sarajevo -Li Europe/Belgrade Europe/Skopje -Li Europe/Belgrade Europe/Zagreb -Li Europe/Prague Europe/Bratislava -R AA 1918 o - Ap 15 23 1 S -R AA 1918 1919 - O 6 24s 0 - -R AA 1919 o - Ap 6 23 1 S -R AA 1924 o - Ap 16 23 1 S -R AA 1924 o - O 4 24s 0 - -R AA 1926 o - Ap 17 23 1 S -R AA 1926 1929 - O Sat>=1 24s 0 - -R AA 1927 o - Ap 9 23 1 S -R AA 1928 o - Ap 15 0 1 S -R AA 1929 o - Ap 20 23 1 S -R AA 1937 o - Jun 16 23 1 S -R AA 1937 o - O 2 24s 0 - -R AA 1938 o - Ap 2 23 1 S -R AA 1938 o - Ap 30 23 2 M -R AA 1938 o - O 2 24 1 S -R AA 1939 o - O 7 24s 0 - -R AA 1942 o - May 2 23 1 S -R AA 1942 o - S 1 1 0 - -R AA 1943 1946 - Ap Sat>=13 23 1 S -R AA 1943 1944 - O Sun>=1 1 0 - -R AA 1945 1946 - S lastSun 1 0 - -R AA 1949 o - Ap 30 23 1 S -R AA 1949 o - O 2 1 0 - -R AA 1974 1975 - Ap Sat>=12 23 1 S -R AA 1974 1975 - O Sun>=1 1 0 - -R AA 1976 o - Mar 27 23 1 S -R AA 1976 1977 - S lastSun 1 0 - -R AA 1977 o - Ap 2 23 1 S -R AA 1978 o - Ap 2 2s 1 S -R AA 1978 o - O 1 2s 0 - -R AB 1967 o - Jun 3 12 1 S -R AB 1967 o - O 1 0 0 - -R AB 1974 o - Jun 24 0 1 S -R AB 1974 o - S 1 0 0 - -R AB 1976 1977 - May 1 0 1 S -R AB 1976 o - Au 1 0 0 - -R AB 1977 o - S 28 0 0 - -R AB 1978 o - Jun 1 0 1 S -R AB 1978 o - Au 4 0 0 - -Z Europe/Madrid -0:14:44 - LMT 1900 D 31 23:45:16 -0 AA WE%sT 1940 Mar 16 23 -1 AA CE%sT 1979 -1 O CE%sT -Z Africa/Ceuta -0:21:16 - LMT 1900 D 31 23:38:44 -0 - WET 1918 May 6 23 -0 1 WEST 1918 O 7 23 -0 - WET 1924 -0 AA WE%sT 1929 -0 AB WE%sT 1984 Mar 16 -1 - CET 1986 -1 O CE%sT -Z Atlantic/Canary -1:1:36 - LMT 1922 Mar --1 - -01 1946 S 30 1 -0 - WET 1980 Ap 6 0s -0 1 WEST 1980 S 28 1u -0 O WE%sT -Z Europe/Stockholm 1:12:12 - LMT 1879 -1:0:14 - SET 1900 -1 - CET 1916 May 14 23 -1 1 CEST 1916 O 1 1 -1 - CET 1980 -1 O CE%sT -R AC 1941 1942 - May M>=1 1 1 S -R AC 1941 1942 - O M>=1 2 0 - -Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16 -0:29:46 - BMT 1894 Jun -1 AC CE%sT 1981 -1 O CE%sT -R AD 1916 o - May 1 0 1 S -R AD 1916 o - O 1 0 0 - -R AD 1920 o - Mar 28 0 1 S -R AD 1920 o - O 25 0 0 - -R AD 1921 o - Ap 3 0 1 S -R AD 1921 o - O 3 0 0 - -R AD 1922 o - Mar 26 0 1 S -R AD 1922 o - O 8 0 0 - -R AD 1924 o - May 13 0 1 S -R AD 1924 1925 - O 1 0 0 - -R AD 1925 o - May 1 0 1 S -R AD 1940 o - Jun 30 0 1 S -R AD 1940 o - O 5 0 0 - -R AD 1940 o - D 1 0 1 S -R AD 1941 o - S 21 0 0 - -R AD 1942 o - Ap 1 0 1 S -R AD 1942 o - N 1 0 0 - -R AD 1945 o - Ap 2 0 1 S -R AD 1945 o - O 8 0 0 - -R AD 1946 o - Jun 1 0 1 S -R AD 1946 o - O 1 0 0 - -R AD 1947 1948 - Ap Sun>=16 0 1 S -R AD 1947 1950 - O Sun>=2 0 0 - -R AD 1949 o - Ap 10 0 1 S -R AD 1950 o - Ap 19 0 1 S -R AD 1951 o - Ap 22 0 1 S -R AD 1951 o - O 8 0 0 - -R AD 1962 o - Jul 15 0 1 S -R AD 1962 o - O 8 0 0 - -R AD 1964 o - May 15 0 1 S -R AD 1964 o - O 1 0 0 - -R AD 1970 1972 - May Sun>=2 0 1 S -R AD 1970 1972 - O Sun>=2 0 0 - -R AD 1973 o - Jun 3 1 1 S -R AD 1973 o - N 4 3 0 - -R AD 1974 o - Mar 31 2 1 S -R AD 1974 o - N 3 5 0 - -R AD 1975 o - Mar 30 0 1 S -R AD 1975 1976 - O lastSun 0 0 - -R AD 1976 o - Jun 1 0 1 S -R AD 1977 1978 - Ap Sun>=1 0 1 S -R AD 1977 o - O 16 0 0 - -R AD 1979 1980 - Ap Sun>=1 3 1 S -R AD 1979 1982 - O M>=11 0 0 - -R AD 1981 1982 - Mar lastSun 3 1 S -R AD 1983 o - Jul 31 0 1 S -R AD 1983 o - O 2 0 0 - -R AD 1985 o - Ap 20 0 1 S -R AD 1985 o - S 28 0 0 - -R AD 1986 1993 - Mar lastSun 1s 1 S -R AD 1986 1995 - S lastSun 1s 0 - -R AD 1994 o - Mar 20 1s 1 S -R AD 1995 2006 - Mar lastSun 1s 1 S -R AD 1996 2006 - O lastSun 1s 0 - -Z Europe/Istanbul 1:55:52 - LMT 1880 -1:56:56 - IMT 1910 O -2 AD EE%sT 1978 O 15 -3 AD +03/+04 1985 Ap 20 -2 AD EE%sT 2007 -2 O EE%sT 2011 Mar 27 1u -2 - EET 2011 Mar 28 1u -2 O EE%sT 2014 Mar 30 1u -2 - EET 2014 Mar 31 1u -2 O EE%sT 2015 O 25 1u -2 1 EEST 2015 N 8 1u -2 O EE%sT 2016 S 7 -3 - +03 -Li Europe/Istanbul Asia/Istanbul -Z Europe/Kiev 2:2:4 - LMT 1880 -2:2:4 - KMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 S 20 -1 ' CE%sT 1943 N 6 -3 M MSK/MSD 1990 Jul 1 2 -2 1 EEST 1991 S 29 3 -2 W EE%sT 1995 -2 O EE%sT -Z Europe/Uzhgorod 1:29:12 - LMT 1890 O -1 - CET 1940 -1 ' CE%sT 1944 O -1 1 CEST 1944 O 26 -1 - CET 1945 Jun 29 -3 M MSK/MSD 1990 -3 - MSK 1990 Jul 1 2 -1 - CET 1991 Mar 31 3 -2 - EET 1992 -2 W EE%sT 1995 -2 O EE%sT -Z Europe/Zaporozhye 2:20:40 - LMT 1880 -2:20 - +0220 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 Au 25 -1 ' CE%sT 1943 O 25 -3 M MSK/MSD 1991 Mar 31 2 -2 W EE%sT 1995 -2 O EE%sT -R AE 1918 1919 - Mar lastSun 2 1 D -R AE 1918 1919 - O lastSun 2 0 S -R AE 1942 o - F 9 2 1 W -R AE 1945 o - Au 14 23u 1 P -R AE 1945 o - S lastSun 2 0 S -R AE 1967 2006 - O lastSun 2 0 S -R AE 1967 1973 - Ap lastSun 2 1 D -R AE 1974 o - Ja 6 2 1 D -R AE 1975 o - F 23 2 1 D -R AE 1976 1986 - Ap lastSun 2 1 D -R AE 1987 2006 - Ap Sun>=1 2 1 D -R AE 2007 ma - Mar Sun>=8 2 1 D -R AE 2007 ma - N Sun>=1 2 0 S -Z EST -5 - EST -Z MST -7 - MST -Z HST -10 - HST -Z EST5EDT -5 AE E%sT -Z CST6CDT -6 AE C%sT -Z MST7MDT -7 AE M%sT -Z PST8PDT -8 AE P%sT -R AF 1920 o - Mar lastSun 2 1 D -R AF 1920 o - O lastSun 2 0 S -R AF 1921 1966 - Ap lastSun 2 1 D -R AF 1921 1954 - S lastSun 2 0 S -R AF 1955 1966 - O lastSun 2 0 S -Z America/New_York -4:56:2 - LMT 1883 N 18 12:3:58 --5 AE E%sT 1920 --5 AF E%sT 1942 --5 AE E%sT 1946 --5 AF E%sT 1967 --5 AE E%sT -R AG 1920 o - Jun 13 2 1 D -R AG 1920 1921 - O lastSun 2 0 S -R AG 1921 o - Mar lastSun 2 1 D -R AG 1922 1966 - Ap lastSun 2 1 D -R AG 1922 1954 - S lastSun 2 0 S -R AG 1955 1966 - O lastSun 2 0 S -Z America/Chicago -5:50:36 - LMT 1883 N 18 12:9:24 --6 AE C%sT 1920 --6 AG C%sT 1936 Mar 1 2 --5 - EST 1936 N 15 2 --6 AG C%sT 1942 --6 AE C%sT 1946 --6 AG C%sT 1967 --6 AE C%sT -Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 12:14:48 --7 AE M%sT 1992 O 25 2 --6 AE C%sT -Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 12:14:21 --7 AE M%sT 2003 O 26 2 --6 AE C%sT -Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 12:12:53 --7 AE M%sT 2010 N 7 2 --6 AE C%sT -R AH 1920 1921 - Mar lastSun 2 1 D -R AH 1920 o - O lastSun 2 0 S -R AH 1921 o - May 22 2 0 S -R AH 1965 1966 - Ap lastSun 2 1 D -R AH 1965 1966 - O lastSun 2 0 S -Z America/Denver -6:59:56 - LMT 1883 N 18 12:0:4 --7 AE M%sT 1920 --7 AH M%sT 1942 --7 AE M%sT 1946 --7 AH M%sT 1967 --7 AE M%sT -R AI 1948 o - Mar 14 2:1 1 D -R AI 1949 o - Ja 1 2 0 S -R AI 1950 1966 - Ap lastSun 1 1 D -R AI 1950 1961 - S lastSun 2 0 S -R AI 1962 1966 - O lastSun 2 0 S -Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 12:7:2 --8 AE P%sT 1946 --8 AI P%sT 1967 --8 AE P%sT -Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32 --8:57:41 - LMT 1900 Au 20 12 --8 - PST 1942 --8 AE P%sT 1946 --8 - PST 1969 --8 AE P%sT 1980 Ap 27 2 --9 AE Y%sT 1980 O 26 2 --8 AE P%sT 1983 O 30 2 --9 AE Y%sT 1983 N 30 --9 AE AK%sT -Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30 --9:1:13 - LMT 1900 Au 20 12 --8 - PST 1942 --8 AE P%sT 1946 --8 - PST 1969 --8 AE P%sT 1983 O 30 2 --9 AE Y%sT 1983 N 30 --9 AE AK%sT -Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55 --8:46:18 - LMT 1900 Au 20 12 --8 - PST 1942 --8 AE P%sT 1946 --8 - PST 1969 --8 AE P%sT 1983 O 30 2 --8 - PST 2015 N 1 2 --9 AE AK%sT -Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18 --9:18:55 - LMT 1900 Au 20 12 --9 - YST 1942 --9 AE Y%sT 1946 --9 - YST 1969 --9 AE Y%sT 1983 N 30 --9 AE AK%sT -Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37 --9:59:36 - LMT 1900 Au 20 12 --10 - AST 1942 --10 AE A%sT 1967 Ap --10 - AHST 1969 --10 AE AH%sT 1983 O 30 2 --9 AE Y%sT 1983 N 30 --9 AE AK%sT -Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35 --11:1:38 - LMT 1900 Au 20 12 --11 - NST 1942 --11 AE N%sT 1946 --11 - NST 1967 Ap --11 - BST 1969 --11 AE B%sT 1983 O 30 2 --9 AE Y%sT 1983 N 30 --9 AE AK%sT -Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35 --11:46:38 - LMT 1900 Au 20 12 --11 - NST 1942 --11 AE N%sT 1946 --11 - NST 1967 Ap --11 - BST 1969 --11 AE B%sT 1983 O 30 2 --10 AE AH%sT 1983 N 30 --10 AE H%sT -Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12 --10:30 - HST 1933 Ap 30 2 --10:30 1 HDT 1933 May 21 12 --10:30 - HST 1942 F 9 2 --10:30 1 HDT 1945 S 30 2 --10:30 - HST 1947 Jun 8 2 --10 - HST -Z America/Phoenix -7:28:18 - LMT 1883 N 18 11:31:42 --7 AE M%sT 1944 Ja 1 0:1 --7 - MST 1944 Ap 1 0:1 --7 AE M%sT 1944 O 1 0:1 --7 - MST 1967 --7 AE M%sT 1968 Mar 21 --7 - MST -Z America/Boise -7:44:49 - LMT 1883 N 18 12:15:11 --8 AE P%sT 1923 May 13 2 --7 AE M%sT 1974 --7 - MST 1974 F 3 2 --7 AE M%sT -R AJ 1941 o - Jun 22 2 1 D -R AJ 1941 1954 - S lastSun 2 0 S -R AJ 1946 1954 - Ap lastSun 2 1 D -Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 12:15:22 --6 AE C%sT 1920 --6 AJ C%sT 1942 --6 AE C%sT 1946 --6 AJ C%sT 1955 Ap 24 2 --5 - EST 1957 S 29 2 --6 - CST 1958 Ap 27 2 --5 - EST 1969 --5 AE E%sT 1971 --5 - EST 2006 --5 AE E%sT -R AK 1951 o - Ap lastSun 2 1 D -R AK 1951 o - S lastSun 2 0 S -R AK 1954 1960 - Ap lastSun 2 1 D -R AK 1954 1960 - S lastSun 2 0 S -Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 12:14:37 --6 AE C%sT 1951 --6 AK C%sT 1961 Ap 30 2 --5 - EST 1969 --5 AE E%sT 1974 Ja 6 2 --6 1 CDT 1974 O 27 2 --5 AE E%sT 1976 --5 - EST 2006 --5 AE E%sT -R AL 1946 o - Ap lastSun 2 1 D -R AL 1946 o - S lastSun 2 0 S -R AL 1953 1954 - Ap lastSun 2 1 D -R AL 1953 1959 - S lastSun 2 0 S -R AL 1955 o - May 1 0 1 D -R AL 1956 1963 - Ap lastSun 2 1 D -R AL 1960 o - O lastSun 2 0 S -R AL 1961 o - S lastSun 2 0 S -R AL 1962 1963 - O lastSun 2 0 S -Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 12:9:53 --6 AE C%sT 1946 --6 AL C%sT 1964 Ap 26 2 --5 - EST 1969 --5 AE E%sT 1971 --5 - EST 2006 Ap 2 2 --6 AE C%sT 2007 N 4 2 --5 AE E%sT -R AM 1946 o - Ap lastSun 2 1 D -R AM 1946 o - S lastSun 2 0 S -R AM 1953 1954 - Ap lastSun 2 1 D -R AM 1953 1959 - S lastSun 2 0 S -R AM 1955 o - May 1 0 1 D -R AM 1956 1963 - Ap lastSun 2 1 D -R AM 1960 o - O lastSun 2 0 S -R AM 1961 o - S lastSun 2 0 S -R AM 1962 1963 - O lastSun 2 0 S -Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 12:12:57 --6 AE C%sT 1946 --6 AM C%sT 1964 Ap 26 2 --5 - EST 1969 --5 AE E%sT 1971 --5 - EST 2006 Ap 2 2 --6 AE C%sT -R AN 1955 o - May 1 0 1 D -R AN 1955 1960 - S lastSun 2 0 S -R AN 1956 1964 - Ap lastSun 2 1 D -R AN 1961 1964 - O lastSun 2 0 S -Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 12:10:53 --6 AE C%sT 1955 --6 AN C%sT 1965 Ap 25 2 --5 - EST 1966 O 30 2 --6 AE C%sT 1977 O 30 2 --5 - EST 2006 Ap 2 2 --6 AE C%sT 2007 N 4 2 --5 AE E%sT -R AO 1947 1961 - Ap lastSun 2 1 D -R AO 1947 1954 - S lastSun 2 0 S -R AO 1955 1956 - O lastSun 2 0 S -R AO 1957 1958 - S lastSun 2 0 S -R AO 1959 1961 - O lastSun 2 0 S -Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 12:13:30 --6 AE C%sT 1947 --6 AO C%sT 1962 Ap 29 2 --5 - EST 1963 O 27 2 --6 AE C%sT 1991 O 27 2 --5 - EST 2006 Ap 2 2 --6 AE C%sT -R AP 1946 1960 - Ap lastSun 2 1 D -R AP 1946 1954 - S lastSun 2 0 S -R AP 1955 1956 - O lastSun 2 0 S -R AP 1957 1960 - S lastSun 2 0 S -Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 12:13:35 --6 AE C%sT 1946 --6 AP C%sT 1961 Ap 30 2 --5 - EST 1969 --5 AE E%sT 1971 --5 - EST 2006 Ap 2 2 --6 AE C%sT 2007 Mar 11 2 --5 AE E%sT -Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 12:19:44 --6 AE C%sT 1954 Ap 25 2 --5 - EST 1969 --5 AE E%sT 1973 --5 - EST 2006 --5 AE E%sT -R AQ 1921 o - May 1 2 1 D -R AQ 1921 o - S 1 2 0 S -R AQ 1941 1961 - Ap lastSun 2 1 D -R AQ 1941 o - S lastSun 2 0 S -R AQ 1946 o - Jun 2 2 0 S -R AQ 1950 1955 - S lastSun 2 0 S -R AQ 1956 1960 - O lastSun 2 0 S -Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 12:16:58 --6 AE C%sT 1921 --6 AQ C%sT 1942 --6 AE C%sT 1946 --6 AQ C%sT 1961 Jul 23 2 --5 - EST 1968 --5 AE E%sT 1974 Ja 6 2 --6 1 CDT 1974 O 27 2 --5 AE E%sT -Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 12:20:36 --6 AE C%sT 1946 --6 - CST 1968 --6 AE C%sT 2000 O 29 2 --5 AE E%sT -R AR 1948 o - Ap lastSun 2 1 D -R AR 1948 o - S lastSun 2 0 S -Z America/Detroit -5:32:11 - LMT 1905 --6 - CST 1915 May 15 2 --5 - EST 1942 --5 AE E%sT 1946 --5 AR E%sT 1973 --5 AE E%sT 1975 --5 - EST 1975 Ap 27 2 --5 AE E%sT -R AS 1946 o - Ap lastSun 2 1 D -R AS 1946 o - S lastSun 2 0 S -R AS 1966 o - Ap lastSun 2 1 D -R AS 1966 o - O lastSun 2 0 S -Z America/Menominee -5:50:27 - LMT 1885 S 18 12 --6 AE C%sT 1946 --6 AS C%sT 1969 Ap 27 2 --5 - EST 1973 Ap 29 2 --6 AE C%sT -R AT 1918 o - Ap 14 2 1 D -R AT 1918 o - O 27 2 0 S -R AT 1942 o - F 9 2 1 W -R AT 1945 o - Au 14 23u 1 P -R AT 1945 o - S 30 2 0 S -R AT 1974 1986 - Ap lastSun 2 1 D -R AT 1974 2006 - O lastSun 2 0 S -R AT 1987 2006 - Ap Sun>=1 2 1 D -R AT 2007 ma - Mar Sun>=8 2 1 D -R AT 2007 ma - N Sun>=1 2 0 S -R AU 1917 o - Ap 8 2 1 D -R AU 1917 o - S 17 2 0 S -R AU 1919 o - May 5 23 1 D -R AU 1919 o - Au 12 23 0 S -R AU 1920 1935 - May Sun>=1 23 1 D -R AU 1920 1935 - O lastSun 23 0 S -R AU 1936 1941 - May M>=9 0 1 D -R AU 1936 1941 - O M>=2 0 0 S -R AU 1946 1950 - May Sun>=8 2 1 D -R AU 1946 1950 - O Sun>=2 2 0 S -R AU 1951 1986 - Ap lastSun 2 1 D -R AU 1951 1959 - S lastSun 2 0 S -R AU 1960 1986 - O lastSun 2 0 S -R AU 1987 o - Ap Sun>=1 0:1 1 D -R AU 1987 2006 - O lastSun 0:1 0 S -R AU 1988 o - Ap Sun>=1 0:1 2 DD -R AU 1989 2006 - Ap Sun>=1 0:1 1 D -R AU 2007 2011 - Mar Sun>=8 0:1 1 D -R AU 2007 2010 - N Sun>=1 0:1 0 S -Z America/St_Johns -3:30:52 - LMT 1884 --3:30:52 AU N%sT 1918 --3:30:52 AT N%sT 1919 --3:30:52 AU N%sT 1935 Mar 30 --3:30 AU N%sT 1942 May 11 --3:30 AT N%sT 1946 --3:30 AU N%sT 2011 N --3:30 AT N%sT -Z America/Goose_Bay -4:1:40 - LMT 1884 --3:30:52 - NST 1918 --3:30:52 AT N%sT 1919 --3:30:52 - NST 1935 Mar 30 --3:30 - NST 1936 --3:30 AU N%sT 1942 May 11 --3:30 AT N%sT 1946 --3:30 AU N%sT 1966 Mar 15 2 --4 AU A%sT 2011 N --4 AT A%sT -R AV 1916 o - Ap 1 0 1 D -R AV 1916 o - O 1 0 0 S -R AV 1920 o - May 9 0 1 D -R AV 1920 o - Au 29 0 0 S -R AV 1921 o - May 6 0 1 D -R AV 1921 1922 - S 5 0 0 S -R AV 1922 o - Ap 30 0 1 D -R AV 1923 1925 - May Sun>=1 0 1 D -R AV 1923 o - S 4 0 0 S -R AV 1924 o - S 15 0 0 S -R AV 1925 o - S 28 0 0 S -R AV 1926 o - May 16 0 1 D -R AV 1926 o - S 13 0 0 S -R AV 1927 o - May 1 0 1 D -R AV 1927 o - S 26 0 0 S -R AV 1928 1931 - May Sun>=8 0 1 D -R AV 1928 o - S 9 0 0 S -R AV 1929 o - S 3 0 0 S -R AV 1930 o - S 15 0 0 S -R AV 1931 1932 - S M>=24 0 0 S -R AV 1932 o - May 1 0 1 D -R AV 1933 o - Ap 30 0 1 D -R AV 1933 o - O 2 0 0 S -R AV 1934 o - May 20 0 1 D -R AV 1934 o - S 16 0 0 S -R AV 1935 o - Jun 2 0 1 D -R AV 1935 o - S 30 0 0 S -R AV 1936 o - Jun 1 0 1 D -R AV 1936 o - S 14 0 0 S -R AV 1937 1938 - May Sun>=1 0 1 D -R AV 1937 1941 - S M>=24 0 0 S -R AV 1939 o - May 28 0 1 D -R AV 1940 1941 - May Sun>=1 0 1 D -R AV 1946 1949 - Ap lastSun 2 1 D -R AV 1946 1949 - S lastSun 2 0 S -R AV 1951 1954 - Ap lastSun 2 1 D -R AV 1951 1954 - S lastSun 2 0 S -R AV 1956 1959 - Ap lastSun 2 1 D -R AV 1956 1959 - S lastSun 2 0 S -R AV 1962 1973 - Ap lastSun 2 1 D -R AV 1962 1973 - O lastSun 2 0 S -Z America/Halifax -4:14:24 - LMT 1902 Jun 15 --4 AV A%sT 1918 --4 AT A%sT 1919 --4 AV A%sT 1942 F 9 2s --4 AT A%sT 1946 --4 AV A%sT 1974 --4 AT A%sT -Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15 --4 AT A%sT 1953 --4 AV A%sT 1954 --4 - AST 1972 --4 AV A%sT 1974 --4 AT A%sT -R AW 1933 1935 - Jun Sun>=8 1 1 D -R AW 1933 1935 - S Sun>=8 1 0 S -R AW 1936 1938 - Jun Sun>=1 1 1 D -R AW 1936 1938 - S Sun>=1 1 0 S -R AW 1939 o - May 27 1 1 D -R AW 1939 1941 - S Sat>=21 1 0 S -R AW 1940 o - May 19 1 1 D -R AW 1941 o - May 4 1 1 D -R AW 1946 1972 - Ap lastSun 2 1 D -R AW 1946 1956 - S lastSun 2 0 S -R AW 1957 1972 - O lastSun 2 0 S -R AW 1993 2006 - Ap Sun>=1 0:1 1 D -R AW 1993 2006 - O lastSun 0:1 0 S -Z America/Moncton -4:19:8 - LMT 1883 D 9 --5 - EST 1902 Jun 15 --4 AT A%sT 1933 --4 AW A%sT 1942 --4 AT A%sT 1946 --4 AW A%sT 1973 --4 AT A%sT 1993 --4 AW A%sT 2007 --4 AT A%sT -Z America/Blanc-Sablon -3:48:28 - LMT 1884 --4 AT A%sT 1970 --4 - AST -R AX 1919 o - Mar 30 23:30 1 D -R AX 1919 o - O 26 0 0 S -R AX 1920 o - May 2 2 1 D -R AX 1920 o - S 26 0 0 S -R AX 1921 o - May 15 2 1 D -R AX 1921 o - S 15 2 0 S -R AX 1922 1923 - May Sun>=8 2 1 D -R AX 1922 1926 - S Sun>=15 2 0 S -R AX 1924 1927 - May Sun>=1 2 1 D -R AX 1927 1932 - S lastSun 2 0 S -R AX 1928 1931 - Ap lastSun 2 1 D -R AX 1932 o - May 1 2 1 D -R AX 1933 1940 - Ap lastSun 2 1 D -R AX 1933 o - O 1 2 0 S -R AX 1934 1939 - S lastSun 2 0 S -R AX 1945 1946 - S lastSun 2 0 S -R AX 1946 o - Ap lastSun 2 1 D -R AX 1947 1949 - Ap lastSun 0 1 D -R AX 1947 1948 - S lastSun 0 0 S -R AX 1949 o - N lastSun 0 0 S -R AX 1950 1973 - Ap lastSun 2 1 D -R AX 1950 o - N lastSun 2 0 S -R AX 1951 1956 - S lastSun 2 0 S -R AX 1957 1973 - O lastSun 2 0 S -Z America/Toronto -5:17:32 - LMT 1895 --5 AT E%sT 1919 --5 AX E%sT 1942 F 9 2s --5 AT E%sT 1946 --5 AX E%sT 1974 --5 AT E%sT -Z America/Thunder_Bay -5:57 - LMT 1895 --6 - CST 1910 --5 - EST 1942 --5 AT E%sT 1970 --5 AX E%sT 1973 --5 - EST 1974 --5 AT E%sT -Z America/Nipigon -5:53:4 - LMT 1895 --5 AT E%sT 1940 S 29 --5 1 EDT 1942 F 9 2s --5 AT E%sT -Z America/Rainy_River -6:18:16 - LMT 1895 --6 AT C%sT 1940 S 29 --6 1 CDT 1942 F 9 2s --6 AT C%sT -Z America/Atikokan -6:6:28 - LMT 1895 --6 AT C%sT 1940 S 29 --6 1 CDT 1942 F 9 2s --6 AT C%sT 1945 S 30 2 --5 - EST -R AY 1916 o - Ap 23 0 1 D -R AY 1916 o - S 17 0 0 S -R AY 1918 o - Ap 14 2 1 D -R AY 1918 o - O 27 2 0 S -R AY 1937 o - May 16 2 1 D -R AY 1937 o - S 26 2 0 S -R AY 1942 o - F 9 2 1 W -R AY 1945 o - Au 14 23u 1 P -R AY 1945 o - S lastSun 2 0 S -R AY 1946 o - May 12 2 1 D -R AY 1946 o - O 13 2 0 S -R AY 1947 1949 - Ap lastSun 2 1 D -R AY 1947 1949 - S lastSun 2 0 S -R AY 1950 o - May 1 2 1 D -R AY 1950 o - S 30 2 0 S -R AY 1951 1960 - Ap lastSun 2 1 D -R AY 1951 1958 - S lastSun 2 0 S -R AY 1959 o - O lastSun 2 0 S -R AY 1960 o - S lastSun 2 0 S -R AY 1963 o - Ap lastSun 2 1 D -R AY 1963 o - S 22 2 0 S -R AY 1966 1986 - Ap lastSun 2s 1 D -R AY 1966 2005 - O lastSun 2s 0 S -R AY 1987 2005 - Ap Sun>=1 2s 1 D -Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16 --6 AY C%sT 2006 --6 AT C%sT -R AZ 1918 o - Ap 14 2 1 D -R AZ 1918 o - O 27 2 0 S -R AZ 1930 1934 - May Sun>=1 0 1 D -R AZ 1930 1934 - O Sun>=1 0 0 S -R AZ 1937 1941 - Ap Sun>=8 0 1 D -R AZ 1937 o - O Sun>=8 0 0 S -R AZ 1938 o - O Sun>=1 0 0 S -R AZ 1939 1941 - O Sun>=8 0 0 S -R AZ 1942 o - F 9 2 1 W -R AZ 1945 o - Au 14 23u 1 P -R AZ 1945 o - S lastSun 2 0 S -R AZ 1946 o - Ap Sun>=8 2 1 D -R AZ 1946 o - O Sun>=8 2 0 S -R AZ 1947 1957 - Ap lastSun 2 1 D -R AZ 1947 1957 - S lastSun 2 0 S -R AZ 1959 o - Ap lastSun 2 1 D -R AZ 1959 o - O lastSun 2 0 S -R Aa 1957 o - Ap lastSun 2 1 D -R Aa 1957 o - O lastSun 2 0 S -R Aa 1959 1961 - Ap lastSun 2 1 D -R Aa 1959 o - O lastSun 2 0 S -R Aa 1960 1961 - S lastSun 2 0 S -Z America/Regina -6:58:36 - LMT 1905 S --7 AZ M%sT 1960 Ap lastSun 2 --6 - CST -Z America/Swift_Current -7:11:20 - LMT 1905 S --7 AT M%sT 1946 Ap lastSun 2 --7 AZ M%sT 1950 --7 Aa M%sT 1972 Ap lastSun 2 --6 - CST -R Ab 1918 1919 - Ap Sun>=8 2 1 D -R Ab 1918 o - O 27 2 0 S -R Ab 1919 o - May 27 2 0 S -R Ab 1920 1923 - Ap lastSun 2 1 D -R Ab 1920 o - O lastSun 2 0 S -R Ab 1921 1923 - S lastSun 2 0 S -R Ab 1942 o - F 9 2 1 W -R Ab 1945 o - Au 14 23u 1 P -R Ab 1945 o - S lastSun 2 0 S -R Ab 1947 o - Ap lastSun 2 1 D -R Ab 1947 o - S lastSun 2 0 S -R Ab 1967 o - Ap lastSun 2 1 D -R Ab 1967 o - O lastSun 2 0 S -R Ab 1969 o - Ap lastSun 2 1 D -R Ab 1969 o - O lastSun 2 0 S -R Ab 1972 1986 - Ap lastSun 2 1 D -R Ab 1972 2006 - O lastSun 2 0 S -Z America/Edmonton -7:33:52 - LMT 1906 S --7 Ab M%sT 1987 --7 AT M%sT -R Ac 1918 o - Ap 14 2 1 D -R Ac 1918 o - O 27 2 0 S -R Ac 1942 o - F 9 2 1 W -R Ac 1945 o - Au 14 23u 1 P -R Ac 1945 o - S 30 2 0 S -R Ac 1946 1986 - Ap lastSun 2 1 D -R Ac 1946 o - O 13 2 0 S -R Ac 1947 1961 - S lastSun 2 0 S -R Ac 1962 2006 - O lastSun 2 0 S -Z America/Vancouver -8:12:28 - LMT 1884 --8 Ac P%sT 1987 --8 AT P%sT -Z America/Dawson_Creek -8:0:56 - LMT 1884 --8 AT P%sT 1947 --8 Ac P%sT 1972 Au 30 2 --7 - MST -Z America/Fort_Nelson -8:10:47 - LMT 1884 --8 Ac P%sT 1946 --8 - PST 1947 --8 Ac P%sT 1987 --8 AT P%sT 2015 Mar 8 2 --7 - MST -Z America/Creston -7:46:4 - LMT 1884 --7 - MST 1916 O --8 - PST 1918 Jun 2 --7 - MST -R Ad 1918 o - Ap 14 2 1 D -R Ad 1918 o - O 27 2 0 S -R Ad 1919 o - May 25 2 1 D -R Ad 1919 o - N 1 0 0 S -R Ad 1942 o - F 9 2 1 W -R Ad 1945 o - Au 14 23u 1 P -R Ad 1945 o - S 30 2 0 S -R Ad 1965 o - Ap lastSun 0 2 DD -R Ad 1965 o - O lastSun 2 0 S -R Ad 1980 1986 - Ap lastSun 2 1 D -R Ad 1980 2006 - O lastSun 2 0 S -R Ad 1987 2006 - Ap Sun>=1 2 1 D -Z America/Pangnirtung 0 - -00 1921 --4 Ad A%sT 1995 Ap Sun>=1 2 --5 AT E%sT 1999 O 31 2 --6 AT C%sT 2000 O 29 2 --5 AT E%sT -Z America/Iqaluit 0 - -00 1942 Au --5 Ad E%sT 1999 O 31 2 --6 AT C%sT 2000 O 29 2 --5 AT E%sT -Z America/Resolute 0 - -00 1947 Au 31 --6 Ad C%sT 2000 O 29 2 --5 - EST 2001 Ap 1 3 --6 AT C%sT 2006 O 29 2 --5 - EST 2007 Mar 11 3 --6 AT C%sT -Z America/Rankin_Inlet 0 - -00 1957 --6 Ad C%sT 2000 O 29 2 --5 - EST 2001 Ap 1 3 --6 AT C%sT -Z America/Cambridge_Bay 0 - -00 1920 --7 Ad M%sT 1999 O 31 2 --6 AT C%sT 2000 O 29 2 --5 - EST 2000 N 5 --6 - CST 2001 Ap 1 3 --7 AT M%sT -Z America/Yellowknife 0 - -00 1935 --7 Ad M%sT 1980 --7 AT M%sT -Z America/Inuvik 0 - -00 1953 --8 Ad P%sT 1979 Ap lastSun 2 --7 Ad M%sT 1980 --7 AT M%sT -Z America/Whitehorse -9:0:12 - LMT 1900 Au 20 --9 Ad Y%sT 1967 May 28 --8 Ad P%sT 1980 --8 AT P%sT -Z America/Dawson -9:17:40 - LMT 1900 Au 20 --9 Ad Y%sT 1973 O 28 --8 Ad P%sT 1980 --8 AT P%sT -R Ae 1939 o - F 5 0 1 D -R Ae 1939 o - Jun 25 0 0 S -R Ae 1940 o - D 9 0 1 D -R Ae 1941 o - Ap 1 0 0 S -R Ae 1943 o - D 16 0 1 W -R Ae 1944 o - May 1 0 0 S -R Ae 1950 o - F 12 0 1 D -R Ae 1950 o - Jul 30 0 0 S -R Ae 1996 2000 - Ap Sun>=1 2 1 D -R Ae 1996 2000 - O lastSun 2 0 S -R Ae 2001 o - May Sun>=1 2 1 D -R Ae 2001 o - S lastSun 2 0 S -R Ae 2002 ma - Ap Sun>=1 2 1 D -R Ae 2002 ma - O lastSun 2 0 S -Z America/Cancun -5:47:4 - LMT 1922 Ja 1 0:12:56 --6 - CST 1981 D 23 --5 Ae E%sT 1998 Au 2 2 --6 Ae C%sT 2015 F 1 2 --5 - EST -Z America/Merida -5:58:28 - LMT 1922 Ja 1 0:1:32 --6 - CST 1981 D 23 --5 - EST 1982 D 2 --6 Ae C%sT -Z America/Matamoros -6:40 - LMT 1921 D 31 23:20 --6 - CST 1988 --6 AE C%sT 1989 --6 Ae C%sT 2010 --6 AE C%sT -Z America/Monterrey -6:41:16 - LMT 1921 D 31 23:18:44 --6 - CST 1988 --6 AE C%sT 1989 --6 Ae C%sT -Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 0:23:24 --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 - MST 1931 May 1 23 --6 - CST 1931 O --7 - MST 1932 Ap --6 Ae C%sT 2001 S 30 2 --6 - CST 2002 F 20 --6 Ae C%sT -Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 0:2:20 --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 - MST 1931 May 1 23 --6 - CST 1931 O --7 - MST 1932 Ap --6 - CST 1996 --6 Ae C%sT 1998 --6 - CST 1998 Ap Sun>=1 3 --7 Ae M%sT 2010 --7 AE M%sT -Z America/Chihuahua -7:4:20 - LMT 1921 D 31 23:55:40 --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 - MST 1931 May 1 23 --6 - CST 1931 O --7 - MST 1932 Ap --6 - CST 1996 --6 Ae C%sT 1998 --6 - CST 1998 Ap Sun>=1 3 --7 Ae M%sT -Z America/Hermosillo -7:23:52 - LMT 1921 D 31 23:36:8 --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 - MST 1931 May 1 23 --6 - CST 1931 O --7 - MST 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 Ae M%sT 1999 --7 - MST -Z America/Mazatlan -7:5:40 - LMT 1921 D 31 23:54:20 --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 - MST 1931 May 1 23 --6 - CST 1931 O --7 - MST 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 Ae M%sT -Z America/Bahia_Banderas -7:1 - LMT 1921 D 31 23:59 --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 - MST 1931 May 1 23 --6 - CST 1931 O --7 - MST 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 Ae M%sT 2010 Ap 4 2 --6 Ae C%sT -Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 0:11:56 --7 - MST 1924 --8 - PST 1927 Jun 10 23 --7 - MST 1930 N 15 --8 - PST 1931 Ap --8 1 PDT 1931 S 30 --8 - PST 1942 Ap 24 --8 1 PWT 1945 Au 14 23u --8 1 PPT 1945 N 12 --8 - PST 1948 Ap 5 --8 1 PDT 1949 Ja 14 --8 - PST 1954 --8 AI P%sT 1961 --8 - PST 1976 --8 AE P%sT 1996 --8 Ae P%sT 2001 --8 AE P%sT 2002 F 20 --8 Ae P%sT 2010 --8 AE P%sT -R Af 1964 1975 - O lastSun 2 0 S -R Af 1964 1975 - Ap lastSun 2 1 D -Z America/Nassau -5:9:30 - LMT 1912 Mar 2 --5 Af E%sT 1976 --5 AE E%sT -R Ag 1977 o - Jun 12 2 1 D -R Ag 1977 1978 - O Sun>=1 2 0 S -R Ag 1978 1980 - Ap Sun>=15 2 1 D -R Ag 1979 o - S 30 2 0 S -R Ag 1980 o - S 25 2 0 S -Z America/Barbados -3:58:29 - LMT 1924 --3:58:29 - BMT 1932 --4 Ag A%sT -R Ah 1918 1942 - O Sun>=2 0 0:30 -0530 -R Ah 1919 1943 - F Sun>=9 0 0 CST -R Ah 1973 o - D 5 0 1 CDT -R Ah 1974 o - F 9 0 0 CST -R Ah 1982 o - D 18 0 1 CDT -R Ah 1983 o - F 12 0 0 CST -Z America/Belize -5:52:48 - LMT 1912 Ap --6 Ah %s -Z Atlantic/Bermuda -4:19:18 - LMT 1930 Ja 1 2 --4 - AST 1974 Ap 28 2 --4 AT A%sT 1976 --4 AE A%sT -R Ai 1979 1980 - F lastSun 0 1 D -R Ai 1979 1980 - Jun Sun>=1 0 0 S -R Ai 1991 1992 - Ja Sat>=15 0 1 D -R Ai 1991 o - Jul 1 0 0 S -R Ai 1992 o - Mar 15 0 0 S -Z America/Costa_Rica -5:36:13 - LMT 1890 --5:36:13 - SJMT 1921 Ja 15 --6 Ai C%sT -R Aj 1928 o - Jun 10 0 1 D -R Aj 1928 o - O 10 0 0 S -R Aj 1940 1942 - Jun Sun>=1 0 1 D -R Aj 1940 1942 - S Sun>=1 0 0 S -R Aj 1945 1946 - Jun Sun>=1 0 1 D -R Aj 1945 1946 - S Sun>=1 0 0 S -R Aj 1965 o - Jun 1 0 1 D -R Aj 1965 o - S 30 0 0 S -R Aj 1966 o - May 29 0 1 D -R Aj 1966 o - O 2 0 0 S -R Aj 1967 o - Ap 8 0 1 D -R Aj 1967 1968 - S Sun>=8 0 0 S -R Aj 1968 o - Ap 14 0 1 D -R Aj 1969 1977 - Ap lastSun 0 1 D -R Aj 1969 1971 - O lastSun 0 0 S -R Aj 1972 1974 - O 8 0 0 S -R Aj 1975 1977 - O lastSun 0 0 S -R Aj 1978 o - May 7 0 1 D -R Aj 1978 1990 - O Sun>=8 0 0 S -R Aj 1979 1980 - Mar Sun>=15 0 1 D -R Aj 1981 1985 - May Sun>=5 0 1 D -R Aj 1986 1989 - Mar Sun>=14 0 1 D -R Aj 1990 1997 - Ap Sun>=1 0 1 D -R Aj 1991 1995 - O Sun>=8 0s 0 S -R Aj 1996 o - O 6 0s 0 S -R Aj 1997 o - O 12 0s 0 S -R Aj 1998 1999 - Mar lastSun 0s 1 D -R Aj 1998 2003 - O lastSun 0s 0 S -R Aj 2000 2003 - Ap Sun>=1 0s 1 D -R Aj 2004 o - Mar lastSun 0s 1 D -R Aj 2006 2010 - O lastSun 0s 0 S -R Aj 2007 o - Mar Sun>=8 0s 1 D -R Aj 2008 o - Mar Sun>=15 0s 1 D -R Aj 2009 2010 - Mar Sun>=8 0s 1 D -R Aj 2011 o - Mar Sun>=15 0s 1 D -R Aj 2011 o - N 13 0s 0 S -R Aj 2012 o - Ap 1 0s 1 D -R Aj 2012 ma - N Sun>=1 0s 0 S -R Aj 2013 ma - Mar Sun>=8 0s 1 D -Z America/Havana -5:29:28 - LMT 1890 --5:29:36 - HMT 1925 Jul 19 12 --5 Aj C%sT -R Ak 1966 o - O 30 0 1 EDT -R Ak 1967 o - F 28 0 0 EST -R Ak 1969 1973 - O lastSun 0 0:30 -0430 -R Ak 1970 o - F 21 0 0 EST -R Ak 1971 o - Ja 20 0 0 EST -R Ak 1972 1974 - Ja 21 0 0 EST -Z America/Santo_Domingo -4:39:36 - LMT 1890 --4:40 - SDMT 1933 Ap 1 12 --5 Ak %s 1974 O 27 --4 - AST 2000 O 29 2 --5 AE E%sT 2000 D 3 1 --4 - AST -R Al 1987 1988 - May Sun>=1 0 1 D -R Al 1987 1988 - S lastSun 0 0 S -Z America/El_Salvador -5:56:48 - LMT 1921 --6 Al C%sT -R Am 1973 o - N 25 0 1 D -R Am 1974 o - F 24 0 0 S -R Am 1983 o - May 21 0 1 D -R Am 1983 o - S 22 0 0 S -R Am 1991 o - Mar 23 0 1 D -R Am 1991 o - S 7 0 0 S -R Am 2006 o - Ap 30 0 1 D -R Am 2006 o - O 1 0 0 S -Z America/Guatemala -6:2:4 - LMT 1918 O 5 --6 Am C%sT -R An 1983 o - May 8 0 1 D -R An 1984 1987 - Ap lastSun 0 1 D -R An 1983 1987 - O lastSun 0 0 S -R An 1988 1997 - Ap Sun>=1 1s 1 D -R An 1988 1997 - O lastSun 1s 0 S -R An 2005 2006 - Ap Sun>=1 0 1 D -R An 2005 2006 - O lastSun 0 0 S -R An 2012 2015 - Mar Sun>=8 2 1 D -R An 2012 2015 - N Sun>=1 2 0 S -R An 2017 ma - Mar Sun>=8 2 1 D -R An 2017 ma - N Sun>=1 2 0 S -Z America/Port-au-Prince -4:49:20 - LMT 1890 --4:49 - PPMT 1917 Ja 24 12 --5 An E%sT -R Ao 1987 1988 - May Sun>=1 0 1 D -R Ao 1987 1988 - S lastSun 0 0 S -R Ao 2006 o - May Sun>=1 0 1 D -R Ao 2006 o - Au M>=1 0 0 S -Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap --6 Ao C%sT -Z America/Jamaica -5:7:11 - LMT 1890 --5:7:11 - KMT 1912 F --5 - EST 1974 --5 AE E%sT 1984 --5 - EST -Z America/Martinique -4:4:20 - LMT 1890 --4:4:20 - FFMT 1911 May --4 - AST 1980 Ap 6 --4 1 ADT 1980 S 28 --4 - AST -R Ap 1979 1980 - Mar Sun>=16 0 1 D -R Ap 1979 1980 - Jun M>=23 0 0 S -R Ap 2005 o - Ap 10 0 1 D -R Ap 2005 o - O Sun>=1 0 0 S -R Ap 2006 o - Ap 30 2 1 D -R Ap 2006 o - O Sun>=1 1 0 S -Z America/Managua -5:45:8 - LMT 1890 --5:45:12 - MMT 1934 Jun 23 --6 - CST 1973 May --5 - EST 1975 F 16 --6 Ap C%sT 1992 Ja 1 4 --5 - EST 1992 S 24 --6 - CST 1993 --5 - EST 1997 --6 Ap C%sT -Z America/Panama -5:18:8 - LMT 1890 --5:19:36 - CMT 1908 Ap 22 --5 - EST -Li America/Panama America/Cayman -Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12 --4 - AST 1942 May 3 --4 AE A%sT 1946 --4 - AST -Z America/Miquelon -3:44:40 - LMT 1911 May 15 --4 - AST 1980 May --3 - -03 1987 --3 AT -03/-02 -Z America/Grand_Turk -4:44:32 - LMT 1890 --5:7:11 - KMT 1912 F --5 - EST 1979 --5 AE E%sT 2015 N Sun>=1 2 --4 - AST 2018 Mar 11 3 --5 AE E%sT -R Aq 1930 o - D 1 0 1 S -R Aq 1931 o - Ap 1 0 0 - -R Aq 1931 o - O 15 0 1 S -R Aq 1932 1940 - Mar 1 0 0 - -R Aq 1932 1939 - N 1 0 1 S -R Aq 1940 o - Jul 1 0 1 S -R Aq 1941 o - Jun 15 0 0 - -R Aq 1941 o - O 15 0 1 S -R Aq 1943 o - Au 1 0 0 - -R Aq 1943 o - O 15 0 1 S -R Aq 1946 o - Mar 1 0 0 - -R Aq 1946 o - O 1 0 1 S -R Aq 1963 o - O 1 0 0 - -R Aq 1963 o - D 15 0 1 S -R Aq 1964 1966 - Mar 1 0 0 - -R Aq 1964 1966 - O 15 0 1 S -R Aq 1967 o - Ap 2 0 0 - -R Aq 1967 1968 - O Sun>=1 0 1 S -R Aq 1968 1969 - Ap Sun>=1 0 0 - -R Aq 1974 o - Ja 23 0 1 S -R Aq 1974 o - May 1 0 0 - -R Aq 1988 o - D 1 0 1 S -R Aq 1989 1993 - Mar Sun>=1 0 0 - -R Aq 1989 1992 - O Sun>=15 0 1 S -R Aq 1999 o - O Sun>=1 0 1 S -R Aq 2000 o - Mar 3 0 0 - -R Aq 2007 o - D 30 0 1 S -R Aq 2008 2009 - Mar Sun>=15 0 0 - -R Aq 2008 o - O Sun>=15 0 1 S -Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 Aq -03/-02 -Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 Aq -03/-02 -Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 Aq -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 13 --3 Aq -03/-02 -Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1991 Mar --4 - -04 1991 May 7 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 Aq -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1991 Mar --4 - -04 1991 May 7 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 - -03 2004 May 31 --4 - -04 2004 Jul 25 --3 Aq -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1990 Mar 4 --4 - -04 1990 O 28 --4 1 -03 1991 Mar 17 --4 - -04 1991 O 6 --3 1 -02 1992 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 Aq -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 Aq -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1990 Mar 4 --4 - -04 1990 O 15 --4 1 -03 1991 Mar --4 - -04 1991 O 15 --4 1 -03 1992 Mar --4 - -04 1992 O 18 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 - -03 2004 May 23 --4 - -04 2004 S 26 --3 Aq -03/-02 2008 O 18 --3 - -03 -R Ar 2008 2009 - Mar Sun>=8 0 0 - -R Ar 2007 2008 - O Sun>=8 0 1 S -Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1990 --3 1 -02 1990 Mar 14 --4 - -04 1990 O 15 --4 1 -03 1991 Mar --4 - -04 1991 Jun --3 - -03 1999 O 3 --4 1 -03 2000 Mar 3 --3 - -03 2004 May 31 --4 - -04 2004 Jul 25 --3 Aq -03/-02 2008 Ja 21 --4 Ar -04/-03 2009 O 11 --3 - -03 -Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 Aq -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1999 O 3 --4 Aq -04/-03 2000 Mar 3 --3 - -03 2004 May 30 --4 - -04 2004 Jun 20 --3 Aq -03/-02 2008 O 18 --3 - -03 -Li America/Curacao America/Aruba -Z America/La_Paz -4:32:36 - LMT 1890 --4:32:36 - CMT 1931 O 15 --4:32:36 1 BST 1932 Mar 21 --4 - -04 -R As 1931 o - O 3 11 1 S -R As 1932 1933 - Ap 1 0 0 - -R As 1932 o - O 3 0 1 S -R As 1949 1952 - D 1 0 1 S -R As 1950 o - Ap 16 1 0 - -R As 1951 1952 - Ap 1 0 0 - -R As 1953 o - Mar 1 0 0 - -R As 1963 o - D 9 0 1 S -R As 1964 o - Mar 1 0 0 - -R As 1965 o - Ja 31 0 1 S -R As 1965 o - Mar 31 0 0 - -R As 1965 o - D 1 0 1 S -R As 1966 1968 - Mar 1 0 0 - -R As 1966 1967 - N 1 0 1 S -R As 1985 o - N 2 0 1 S -R As 1986 o - Mar 15 0 0 - -R As 1986 o - O 25 0 1 S -R As 1987 o - F 14 0 0 - -R As 1987 o - O 25 0 1 S -R As 1988 o - F 7 0 0 - -R As 1988 o - O 16 0 1 S -R As 1989 o - Ja 29 0 0 - -R As 1989 o - O 15 0 1 S -R As 1990 o - F 11 0 0 - -R As 1990 o - O 21 0 1 S -R As 1991 o - F 17 0 0 - -R As 1991 o - O 20 0 1 S -R As 1992 o - F 9 0 0 - -R As 1992 o - O 25 0 1 S -R As 1993 o - Ja 31 0 0 - -R As 1993 1995 - O Sun>=11 0 1 S -R As 1994 1995 - F Sun>=15 0 0 - -R As 1996 o - F 11 0 0 - -R As 1996 o - O 6 0 1 S -R As 1997 o - F 16 0 0 - -R As 1997 o - O 6 0 1 S -R As 1998 o - Mar 1 0 0 - -R As 1998 o - O 11 0 1 S -R As 1999 o - F 21 0 0 - -R As 1999 o - O 3 0 1 S -R As 2000 o - F 27 0 0 - -R As 2000 2001 - O Sun>=8 0 1 S -R As 2001 2006 - F Sun>=15 0 0 - -R As 2002 o - N 3 0 1 S -R As 2003 o - O 19 0 1 S -R As 2004 o - N 2 0 1 S -R As 2005 o - O 16 0 1 S -R As 2006 o - N 5 0 1 S -R As 2007 o - F 25 0 0 - -R As 2007 o - O Sun>=8 0 1 S -R As 2008 2017 - O Sun>=15 0 1 S -R As 2008 2011 - F Sun>=15 0 0 - -R As 2012 o - F Sun>=22 0 0 - -R As 2013 2014 - F Sun>=15 0 0 - -R As 2015 o - F Sun>=22 0 0 - -R As 2016 2022 - F Sun>=15 0 0 - -R As 2018 ma - N Sun>=1 0 1 S -R As 2023 o - F Sun>=22 0 0 - -R As 2024 2025 - F Sun>=15 0 0 - -R As 2026 o - F Sun>=22 0 0 - -R As 2027 2033 - F Sun>=15 0 0 - -R As 2034 o - F Sun>=22 0 0 - -R As 2035 2036 - F Sun>=15 0 0 - -R As 2037 o - F Sun>=22 0 0 - -R As 2038 ma - F Sun>=15 0 0 - -Z America/Noronha -2:9:40 - LMT 1914 --2 As -02/-01 1990 S 17 --2 - -02 1999 S 30 --2 As -02/-01 2000 O 15 --2 - -02 2001 S 13 --2 As -02/-01 2002 O --2 - -02 -Z America/Belem -3:13:56 - LMT 1914 --3 As -03/-02 1988 S 12 --3 - -03 -Z America/Santarem -3:38:48 - LMT 1914 --4 As -04/-03 1988 S 12 --4 - -04 2008 Jun 24 --3 - -03 -Z America/Fortaleza -2:34 - LMT 1914 --3 As -03/-02 1990 S 17 --3 - -03 1999 S 30 --3 As -03/-02 2000 O 22 --3 - -03 2001 S 13 --3 As -03/-02 2002 O --3 - -03 -Z America/Recife -2:19:36 - LMT 1914 --3 As -03/-02 1990 S 17 --3 - -03 1999 S 30 --3 As -03/-02 2000 O 15 --3 - -03 2001 S 13 --3 As -03/-02 2002 O --3 - -03 -Z America/Araguaina -3:12:48 - LMT 1914 --3 As -03/-02 1990 S 17 --3 - -03 1995 S 14 --3 As -03/-02 2003 S 24 --3 - -03 2012 O 21 --3 As -03/-02 2013 S --3 - -03 -Z America/Maceio -2:22:52 - LMT 1914 --3 As -03/-02 1990 S 17 --3 - -03 1995 O 13 --3 As -03/-02 1996 S 4 --3 - -03 1999 S 30 --3 As -03/-02 2000 O 22 --3 - -03 2001 S 13 --3 As -03/-02 2002 O --3 - -03 -Z America/Bahia -2:34:4 - LMT 1914 --3 As -03/-02 2003 S 24 --3 - -03 2011 O 16 --3 As -03/-02 2012 O 21 --3 - -03 -Z America/Sao_Paulo -3:6:28 - LMT 1914 --3 As -03/-02 1963 O 23 --3 1 -02 1964 --3 As -03/-02 -Z America/Campo_Grande -3:38:28 - LMT 1914 --4 As -04/-03 -Z America/Cuiaba -3:44:20 - LMT 1914 --4 As -04/-03 2003 S 24 --4 - -04 2004 O --4 As -04/-03 -Z America/Porto_Velho -4:15:36 - LMT 1914 --4 As -04/-03 1988 S 12 --4 - -04 -Z America/Boa_Vista -4:2:40 - LMT 1914 --4 As -04/-03 1988 S 12 --4 - -04 1999 S 30 --4 As -04/-03 2000 O 15 --4 - -04 -Z America/Manaus -4:0:4 - LMT 1914 --4 As -04/-03 1988 S 12 --4 - -04 1993 S 28 --4 As -04/-03 1994 S 22 --4 - -04 -Z America/Eirunepe -4:39:28 - LMT 1914 --5 As -05/-04 1988 S 12 --5 - -05 1993 S 28 --5 As -05/-04 1994 S 22 --5 - -05 2008 Jun 24 --4 - -04 2013 N 10 --5 - -05 -Z America/Rio_Branco -4:31:12 - LMT 1914 --5 As -05/-04 1988 S 12 --5 - -05 2008 Jun 24 --4 - -04 2013 N 10 --5 - -05 -R At 1927 1931 - S 1 0 1 S -R At 1928 1932 - Ap 1 0 0 - -R At 1968 o - N 3 4u 1 S -R At 1969 o - Mar 30 3u 0 - -R At 1969 o - N 23 4u 1 S -R At 1970 o - Mar 29 3u 0 - -R At 1971 o - Mar 14 3u 0 - -R At 1970 1972 - O Sun>=9 4u 1 S -R At 1972 1986 - Mar Sun>=9 3u 0 - -R At 1973 o - S 30 4u 1 S -R At 1974 1987 - O Sun>=9 4u 1 S -R At 1987 o - Ap 12 3u 0 - -R At 1988 1990 - Mar Sun>=9 3u 0 - -R At 1988 1989 - O Sun>=9 4u 1 S -R At 1990 o - S 16 4u 1 S -R At 1991 1996 - Mar Sun>=9 3u 0 - -R At 1991 1997 - O Sun>=9 4u 1 S -R At 1997 o - Mar 30 3u 0 - -R At 1998 o - Mar Sun>=9 3u 0 - -R At 1998 o - S 27 4u 1 S -R At 1999 o - Ap 4 3u 0 - -R At 1999 2010 - O Sun>=9 4u 1 S -R At 2000 2007 - Mar Sun>=9 3u 0 - -R At 2008 o - Mar 30 3u 0 - -R At 2009 o - Mar Sun>=9 3u 0 - -R At 2010 o - Ap Sun>=1 3u 0 - -R At 2011 o - May Sun>=2 3u 0 - -R At 2011 o - Au Sun>=16 4u 1 S -R At 2012 2014 - Ap Sun>=23 3u 0 - -R At 2012 2014 - S Sun>=2 4u 1 S -R At 2016 ma - May Sun>=9 3u 0 - -R At 2016 ma - Au Sun>=9 4u 1 S -Z America/Santiago -4:42:46 - LMT 1890 --4:42:46 - SMT 1910 Ja 10 --5 - -05 1916 Jul --4:42:46 - SMT 1918 S 10 --4 - -04 1919 Jul --4:42:46 - SMT 1927 S --5 At -05/-04 1932 S --4 - -04 1942 Jun --5 - -05 1942 Au --4 - -04 1946 Jul 15 --4 1 -03 1946 S --4 - -04 1947 Ap --5 - -05 1947 May 21 23 --4 At -04/-03 -Z America/Punta_Arenas -4:43:40 - LMT 1890 --4:42:46 - SMT 1910 Ja 10 --5 - -05 1916 Jul --4:42:46 - SMT 1918 S 10 --4 - -04 1919 Jul --4:42:46 - SMT 1927 S --5 At -05/-04 1932 S --4 - -04 1942 Jun --5 - -05 1942 Au --4 - -04 1947 Ap --5 - -05 1947 May 21 23 --4 At -04/-03 2016 D 4 --3 - -03 -Z Pacific/Easter -7:17:28 - LMT 1890 --7:17:28 - EMT 1932 S --7 At -07/-06 1982 Mar 14 3u --6 At -06/-05 -Z Antarctica/Palmer 0 - -00 1965 --4 Aq -04/-03 1969 O 5 --3 Aq -03/-02 1982 May --4 At -04/-03 2016 D 4 --3 - -03 -R Au 1992 o - May 3 0 1 S -R Au 1993 o - Ap 4 0 0 - -Z America/Bogota -4:56:16 - LMT 1884 Mar 13 --4:56:16 - BMT 1914 N 23 --5 Au -05/-04 -Z America/Curacao -4:35:47 - LMT 1912 F 12 --4:30 - -0430 1965 --4 - AST -Li America/Curacao America/Lower_Princes -Li America/Curacao America/Kralendijk -R Av 1992 o - N 28 0 1 S -R Av 1993 o - F 5 0 0 - -Z America/Guayaquil -5:19:20 - LMT 1890 --5:14 - QMT 1931 --5 Av -05/-04 -Z Pacific/Galapagos -5:58:24 - LMT 1931 --5 - -05 1986 --6 Av -06/-05 -R Aw 1937 1938 - S lastSun 0 1 S -R Aw 1938 1942 - Mar Sun>=19 0 0 - -R Aw 1939 o - O 1 0 1 S -R Aw 1940 1942 - S lastSun 0 1 S -R Aw 1943 o - Ja 1 0 0 - -R Aw 1983 o - S lastSun 0 1 S -R Aw 1984 1985 - Ap lastSun 0 0 - -R Aw 1984 o - S 16 0 1 S -R Aw 1985 2000 - S Sun>=9 0 1 S -R Aw 1986 2000 - Ap Sun>=16 0 0 - -R Aw 2001 2010 - Ap Sun>=15 2 0 - -R Aw 2001 2010 - S Sun>=1 2 1 S -Z Atlantic/Stanley -3:51:24 - LMT 1890 --3:51:24 - SMT 1912 Mar 12 --4 Aw -04/-03 1983 May --3 Aw -03/-02 1985 S 15 --4 Aw -04/-03 2010 S 5 2 --3 - -03 -Z America/Cayenne -3:29:20 - LMT 1911 Jul --4 - -04 1967 O --3 - -03 -Z America/Guyana -3:52:40 - LMT 1915 Mar --3:45 - -0345 1975 Jul 31 --3 - -03 1991 --4 - -04 -R Ax 1975 1988 - O 1 0 1 S -R Ax 1975 1978 - Mar 1 0 0 - -R Ax 1979 1991 - Ap 1 0 0 - -R Ax 1989 o - O 22 0 1 S -R Ax 1990 o - O 1 0 1 S -R Ax 1991 o - O 6 0 1 S -R Ax 1992 o - Mar 1 0 0 - -R Ax 1992 o - O 5 0 1 S -R Ax 1993 o - Mar 31 0 0 - -R Ax 1993 1995 - O 1 0 1 S -R Ax 1994 1995 - F lastSun 0 0 - -R Ax 1996 o - Mar 1 0 0 - -R Ax 1996 2001 - O Sun>=1 0 1 S -R Ax 1997 o - F lastSun 0 0 - -R Ax 1998 2001 - Mar Sun>=1 0 0 - -R Ax 2002 2004 - Ap Sun>=1 0 0 - -R Ax 2002 2003 - S Sun>=1 0 1 S -R Ax 2004 2009 - O Sun>=15 0 1 S -R Ax 2005 2009 - Mar Sun>=8 0 0 - -R Ax 2010 ma - O Sun>=1 0 1 S -R Ax 2010 2012 - Ap Sun>=8 0 0 - -R Ax 2013 ma - Mar Sun>=22 0 0 - -Z America/Asuncion -3:50:40 - LMT 1890 --3:50:40 - AMT 1931 O 10 --4 - -04 1972 O --3 - -03 1974 Ap --4 Ax -04/-03 -R Ay 1938 o - Ja 1 0 1 S -R Ay 1938 o - Ap 1 0 0 - -R Ay 1938 1939 - S lastSun 0 1 S -R Ay 1939 1940 - Mar Sun>=24 0 0 - -R Ay 1986 1987 - Ja 1 0 1 S -R Ay 1986 1987 - Ap 1 0 0 - -R Ay 1990 o - Ja 1 0 1 S -R Ay 1990 o - Ap 1 0 0 - -R Ay 1994 o - Ja 1 0 1 S -R Ay 1994 o - Ap 1 0 0 - -Z America/Lima -5:8:12 - LMT 1890 --5:8:36 - LMT 1908 Jul 28 --5 Ay -05/-04 -Z Atlantic/South_Georgia -2:26:8 - LMT 1890 --2 - -02 -Z America/Paramaribo -3:40:40 - LMT 1911 --3:40:52 - PMT 1935 --3:40:36 - PMT 1945 O --3:30 - -0330 1984 O --3 - -03 -Z America/Port_of_Spain -4:6:4 - LMT 1912 Mar 2 --4 - AST -Li America/Port_of_Spain America/Anguilla -Li America/Port_of_Spain America/Antigua -Li America/Port_of_Spain America/Dominica -Li America/Port_of_Spain America/Grenada -Li America/Port_of_Spain America/Guadeloupe -Li America/Port_of_Spain America/Marigot -Li America/Port_of_Spain America/Montserrat -Li America/Port_of_Spain America/St_Barthelemy -Li America/Port_of_Spain America/St_Kitts -Li America/Port_of_Spain America/St_Lucia -Li America/Port_of_Spain America/St_Thomas -Li America/Port_of_Spain America/St_Vincent -Li America/Port_of_Spain America/Tortola -R Az 1923 o - O 2 0 0:30 HS -R Az 1924 1926 - Ap 1 0 0 - -R Az 1924 1925 - O 1 0 0:30 HS -R Az 1933 1935 - O lastSun 0 0:30 HS -R Az 1934 1936 - Mar Sat>=25 23:30s 0 - -R Az 1936 o - N 1 0 0:30 HS -R Az 1937 1941 - Mar lastSun 0 0 - -R Az 1937 1940 - O lastSun 0 0:30 HS -R Az 1941 o - Au 1 0 0:30 HS -R Az 1942 o - Ja 1 0 0 - -R Az 1942 o - D 14 0 1 S -R Az 1943 o - Mar 14 0 0 - -R Az 1959 o - May 24 0 1 S -R Az 1959 o - N 15 0 0 - -R Az 1960 o - Ja 17 0 1 S -R Az 1960 o - Mar 6 0 0 - -R Az 1965 1967 - Ap Sun>=1 0 1 S -R Az 1965 o - S 26 0 0 - -R Az 1966 1967 - O 31 0 0 - -R Az 1968 1970 - May 27 0 0:30 HS -R Az 1968 1970 - D 2 0 0 - -R Az 1972 o - Ap 24 0 1 S -R Az 1972 o - Au 15 0 0 - -R Az 1974 o - Mar 10 0 0:30 HS -R Az 1974 o - D 22 0 1 S -R Az 1976 o - O 1 0 0 - -R Az 1977 o - D 4 0 1 S -R Az 1978 o - Ap 1 0 0 - -R Az 1979 o - O 1 0 1 S -R Az 1980 o - May 1 0 0 - -R Az 1987 o - D 14 0 1 S -R Az 1988 o - Mar 14 0 0 - -R Az 1988 o - D 11 0 1 S -R Az 1989 o - Mar 12 0 0 - -R Az 1989 o - O 29 0 1 S -R Az 1990 1992 - Mar Sun>=1 0 0 - -R Az 1990 1991 - O Sun>=21 0 1 S -R Az 1992 o - O 18 0 1 S -R Az 1993 o - F 28 0 0 - -R Az 2004 o - S 19 0 1 S -R Az 2005 o - Mar 27 2 0 - -R Az 2005 o - O 9 2 1 S -R Az 2006 o - Mar 12 2 0 - -R Az 2006 2014 - O Sun>=1 2 1 S -R Az 2007 2015 - Mar Sun>=8 2 0 - -Z America/Montevideo -3:44:44 - LMT 1898 Jun 28 --3:44:44 - MMT 1920 May --3:30 Az -0330/-03 1942 D 14 --3 Az -03/-02 1968 --3 Az -03/-0230 1971 --3 Az -03/-02 1974 --3 Az -03/-0230 1974 D 22 --3 Az -03/-02 -Z America/Caracas -4:27:44 - LMT 1890 --4:27:40 - CMT 1912 F 12 --4:30 - -0430 1965 --4 - -04 2007 D 9 3 --4:30 - -0430 2016 May 1 2:30 --4 - -04 -Z Etc/GMT 0 - GMT -Z Etc/UTC 0 - UTC -Z Etc/UCT 0 - UCT -Li Etc/GMT GMT -Li Etc/UTC Etc/Universal -Li Etc/UTC Etc/Zulu -Li Etc/GMT Etc/Greenwich -Li Etc/GMT Etc/GMT-0 -Li Etc/GMT Etc/GMT+0 -Li Etc/GMT Etc/GMT0 -Z Etc/GMT-14 14 - +14 -Z Etc/GMT-13 13 - +13 -Z Etc/GMT-12 12 - +12 -Z Etc/GMT-11 11 - +11 -Z Etc/GMT-10 10 - +10 -Z Etc/GMT-9 9 - +09 -Z Etc/GMT-8 8 - +08 -Z Etc/GMT-7 7 - +07 -Z Etc/GMT-6 6 - +06 -Z Etc/GMT-5 5 - +05 -Z Etc/GMT-4 4 - +04 -Z Etc/GMT-3 3 - +03 -Z Etc/GMT-2 2 - +02 -Z Etc/GMT-1 1 - +01 -Z Etc/GMT+1 -1 - -01 -Z Etc/GMT+2 -2 - -02 -Z Etc/GMT+3 -3 - -03 -Z Etc/GMT+4 -4 - -04 -Z Etc/GMT+5 -5 - -05 -Z Etc/GMT+6 -6 - -06 -Z Etc/GMT+7 -7 - -07 -Z Etc/GMT+8 -8 - -08 -Z Etc/GMT+9 -9 - -09 -Z Etc/GMT+10 -10 - -10 -Z Etc/GMT+11 -11 - -11 -Z Etc/GMT+12 -12 - -12 -Z Factory 0 - -00 -Li Africa/Nairobi Africa/Asmera -Li Africa/Abidjan Africa/Timbuktu -Li America/Argentina/Catamarca America/Argentina/ComodRivadavia -Li America/Adak America/Atka -Li America/Argentina/Buenos_Aires America/Buenos_Aires -Li America/Argentina/Catamarca America/Catamarca -Li America/Atikokan America/Coral_Harbour -Li America/Argentina/Cordoba America/Cordoba -Li America/Tijuana America/Ensenada -Li America/Indiana/Indianapolis America/Fort_Wayne -Li America/Indiana/Indianapolis America/Indianapolis -Li America/Argentina/Jujuy America/Jujuy -Li America/Indiana/Knox America/Knox_IN -Li America/Kentucky/Louisville America/Louisville -Li America/Argentina/Mendoza America/Mendoza -Li America/Toronto America/Montreal -Li America/Rio_Branco America/Porto_Acre -Li America/Argentina/Cordoba America/Rosario -Li America/Tijuana America/Santa_Isabel -Li America/Denver America/Shiprock -Li America/Port_of_Spain America/Virgin -Li Pacific/Auckland Antarctica/South_Pole -Li Asia/Ashgabat Asia/Ashkhabad -Li Asia/Kolkata Asia/Calcutta -Li Asia/Shanghai Asia/Chongqing -Li Asia/Shanghai Asia/Chungking -Li Asia/Dhaka Asia/Dacca -Li Asia/Shanghai Asia/Harbin -Li Asia/Urumqi Asia/Kashgar -Li Asia/Kathmandu Asia/Katmandu -Li Asia/Macau Asia/Macao -Li Asia/Yangon Asia/Rangoon -Li Asia/Ho_Chi_Minh Asia/Saigon -Li Asia/Jerusalem Asia/Tel_Aviv -Li Asia/Thimphu Asia/Thimbu -Li Asia/Makassar Asia/Ujung_Pandang -Li Asia/Ulaanbaatar Asia/Ulan_Bator -Li Atlantic/Faroe Atlantic/Faeroe -Li Europe/Oslo Atlantic/Jan_Mayen -Li Australia/Sydney Australia/ACT -Li Australia/Sydney Australia/Canberra -Li Australia/Lord_Howe Australia/LHI -Li Australia/Sydney Australia/NSW -Li Australia/Darwin Australia/North -Li Australia/Brisbane Australia/Queensland -Li Australia/Adelaide Australia/South -Li Australia/Hobart Australia/Tasmania -Li Australia/Melbourne Australia/Victoria -Li Australia/Perth Australia/West -Li Australia/Broken_Hill Australia/Yancowinna -Li America/Rio_Branco Brazil/Acre -Li America/Noronha Brazil/DeNoronha -Li America/Sao_Paulo Brazil/East -Li America/Manaus Brazil/West -Li America/Halifax Canada/Atlantic -Li America/Winnipeg Canada/Central -Li America/Toronto Canada/Eastern -Li America/Edmonton Canada/Mountain -Li America/St_Johns Canada/Newfoundland -Li America/Vancouver Canada/Pacific -Li America/Regina Canada/Saskatchewan -Li America/Whitehorse Canada/Yukon -Li America/Santiago Chile/Continental -Li Pacific/Easter Chile/EasterIsland -Li America/Havana Cuba -Li Africa/Cairo Egypt -Li Europe/Dublin Eire -Li Europe/London Europe/Belfast -Li Europe/Chisinau Europe/Tiraspol -Li Europe/London GB -Li Europe/London GB-Eire -Li Etc/GMT GMT+0 -Li Etc/GMT GMT-0 -Li Etc/GMT GMT0 -Li Etc/GMT Greenwich -Li Asia/Hong_Kong Hongkong -Li Atlantic/Reykjavik Iceland -Li Asia/Tehran Iran -Li Asia/Jerusalem Israel -Li America/Jamaica Jamaica -Li Asia/Tokyo Japan -Li Pacific/Kwajalein Kwajalein -Li Africa/Tripoli Libya -Li America/Tijuana Mexico/BajaNorte -Li America/Mazatlan Mexico/BajaSur -Li America/Mexico_City Mexico/General -Li Pacific/Auckland NZ -Li Pacific/Chatham NZ-CHAT -Li America/Denver Navajo -Li Asia/Shanghai PRC -Li Pacific/Honolulu Pacific/Johnston -Li Pacific/Pohnpei Pacific/Ponape -Li Pacific/Pago_Pago Pacific/Samoa -Li Pacific/Chuuk Pacific/Truk -Li Pacific/Chuuk Pacific/Yap -Li Europe/Warsaw Poland -Li Europe/Lisbon Portugal -Li Asia/Taipei ROC -Li Asia/Seoul ROK -Li Asia/Singapore Singapore -Li Europe/Istanbul Turkey -Li Etc/UCT UCT -Li America/Anchorage US/Alaska -Li America/Adak US/Aleutian -Li America/Phoenix US/Arizona -Li America/Chicago US/Central -Li America/Indiana/Indianapolis US/East-Indiana -Li America/New_York US/Eastern -Li Pacific/Honolulu US/Hawaii -Li America/Indiana/Knox US/Indiana-Starke -Li America/Detroit US/Michigan -Li America/Denver US/Mountain -Li America/Los_Angeles US/Pacific -Li Pacific/Pago_Pago US/Samoa -Li Etc/UTC UTC -Li Etc/UTC Universal -Li Europe/Moscow W-SU -Li Etc/UTC Zulu diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/zone.tab b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/zone.tab deleted file mode 100644 index e1bfdee2..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/zone.tab +++ /dev/null @@ -1,448 +0,0 @@ -# tz zone descriptions (deprecated version) -# -# This file is in the public domain, so clarified as of -# 2009-05-17 by Arthur David Olson. -# -# From Paul Eggert (2014-07-31): -# This file is intended as a backward-compatibility aid for older programs. -# New programs should use zone1970.tab. This file is like zone1970.tab (see -# zone1970.tab's comments), but with the following additional restrictions: -# -# 1. This file contains only ASCII characters. -# 2. The first data column contains exactly one country code. -# -# Because of (2), each row stands for an area that is the intersection -# of a region identified by a country code and of a zone where civil -# clocks have agreed since 1970; this is a narrower definition than -# that of zone1970.tab. -# -# This table is intended as an aid for users, to help them select time -# zone data entries appropriate for their practical needs. It is not -# intended to take or endorse any position on legal or territorial claims. -# -#country- -#code coordinates TZ comments -AD +4230+00131 Europe/Andorra -AE +2518+05518 Asia/Dubai -AF +3431+06912 Asia/Kabul -AG +1703-06148 America/Antigua -AI +1812-06304 America/Anguilla -AL +4120+01950 Europe/Tirane -AM +4011+04430 Asia/Yerevan -AO -0848+01314 Africa/Luanda -AQ -7750+16636 Antarctica/McMurdo New Zealand time - McMurdo, South Pole -AQ -6617+11031 Antarctica/Casey Casey -AQ -6835+07758 Antarctica/Davis Davis -AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville -AQ -6736+06253 Antarctica/Mawson Mawson -AQ -6448-06406 Antarctica/Palmer Palmer -AQ -6734-06808 Antarctica/Rothera Rothera -AQ -690022+0393524 Antarctica/Syowa Syowa -AQ -720041+0023206 Antarctica/Troll Troll -AQ -7824+10654 Antarctica/Vostok Vostok -AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF) -AR -3124-06411 America/Argentina/Cordoba Argentina (most areas: CB, CC, CN, ER, FM, MN, SE, SF) -AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN) -AR -2411-06518 America/Argentina/Jujuy Jujuy (JY) -AR -2649-06513 America/Argentina/Tucuman Tucuman (TM) -AR -2828-06547 America/Argentina/Catamarca Catamarca (CT); Chubut (CH) -AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR) -AR -3132-06831 America/Argentina/San_Juan San Juan (SJ) -AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ) -AR -3319-06621 America/Argentina/San_Luis San Luis (SL) -AR -5138-06913 America/Argentina/Rio_Gallegos Santa Cruz (SC) -AR -5448-06818 America/Argentina/Ushuaia Tierra del Fuego (TF) -AS -1416-17042 Pacific/Pago_Pago -AT +4813+01620 Europe/Vienna -AU -3133+15905 Australia/Lord_Howe Lord Howe Island -AU -5430+15857 Antarctica/Macquarie Macquarie Island -AU -4253+14719 Australia/Hobart Tasmania (most areas) -AU -3956+14352 Australia/Currie Tasmania (King Island) -AU -3749+14458 Australia/Melbourne Victoria -AU -3352+15113 Australia/Sydney New South Wales (most areas) -AU -3157+14127 Australia/Broken_Hill New South Wales (Yancowinna) -AU -2728+15302 Australia/Brisbane Queensland (most areas) -AU -2016+14900 Australia/Lindeman Queensland (Whitsunday Islands) -AU -3455+13835 Australia/Adelaide South Australia -AU -1228+13050 Australia/Darwin Northern Territory -AU -3157+11551 Australia/Perth Western Australia (most areas) -AU -3143+12852 Australia/Eucla Western Australia (Eucla) -AW +1230-06958 America/Aruba -AX +6006+01957 Europe/Mariehamn -AZ +4023+04951 Asia/Baku -BA +4352+01825 Europe/Sarajevo -BB +1306-05937 America/Barbados -BD +2343+09025 Asia/Dhaka -BE +5050+00420 Europe/Brussels -BF +1222-00131 Africa/Ouagadougou -BG +4241+02319 Europe/Sofia -BH +2623+05035 Asia/Bahrain -BI -0323+02922 Africa/Bujumbura -BJ +0629+00237 Africa/Porto-Novo -BL +1753-06251 America/St_Barthelemy -BM +3217-06446 Atlantic/Bermuda -BN +0456+11455 Asia/Brunei -BO -1630-06809 America/La_Paz -BQ +120903-0681636 America/Kralendijk -BR -0351-03225 America/Noronha Atlantic islands -BR -0127-04829 America/Belem Para (east); Amapa -BR -0343-03830 America/Fortaleza Brazil (northeast: MA, PI, CE, RN, PB) -BR -0803-03454 America/Recife Pernambuco -BR -0712-04812 America/Araguaina Tocantins -BR -0940-03543 America/Maceio Alagoas, Sergipe -BR -1259-03831 America/Bahia Bahia -BR -2332-04637 America/Sao_Paulo Brazil (southeast: GO, DF, MG, ES, RJ, SP, PR, SC, RS) -BR -2027-05437 America/Campo_Grande Mato Grosso do Sul -BR -1535-05605 America/Cuiaba Mato Grosso -BR -0226-05452 America/Santarem Para (west) -BR -0846-06354 America/Porto_Velho Rondonia -BR +0249-06040 America/Boa_Vista Roraima -BR -0308-06001 America/Manaus Amazonas (east) -BR -0640-06952 America/Eirunepe Amazonas (west) -BR -0958-06748 America/Rio_Branco Acre -BS +2505-07721 America/Nassau -BT +2728+08939 Asia/Thimphu -BW -2439+02555 Africa/Gaborone -BY +5354+02734 Europe/Minsk -BZ +1730-08812 America/Belize -CA +4734-05243 America/St_Johns Newfoundland; Labrador (southeast) -CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE -CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton) -CA +4606-06447 America/Moncton Atlantic - New Brunswick -CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas) -CA +5125-05707 America/Blanc-Sablon AST - QC (Lower North Shore) -CA +4339-07923 America/Toronto Eastern - ON, QC (most areas) -CA +4901-08816 America/Nipigon Eastern - ON, QC (no DST 1967-73) -CA +4823-08915 America/Thunder_Bay Eastern - ON (Thunder Bay) -CA +6344-06828 America/Iqaluit Eastern - NU (most east areas) -CA +6608-06544 America/Pangnirtung Eastern - NU (Pangnirtung) -CA +484531-0913718 America/Atikokan EST - ON (Atikokan); NU (Coral H) -CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba -CA +4843-09434 America/Rainy_River Central - ON (Rainy R, Ft Frances) -CA +744144-0944945 America/Resolute Central - NU (Resolute) -CA +624900-0920459 America/Rankin_Inlet Central - NU (central) -CA +5024-10439 America/Regina CST - SK (most areas) -CA +5017-10750 America/Swift_Current CST - SK (midwest) -CA +5333-11328 America/Edmonton Mountain - AB; BC (E); SK (W) -CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west) -CA +6227-11421 America/Yellowknife Mountain - NT (central) -CA +682059-1334300 America/Inuvik Mountain - NT (west) -CA +4906-11631 America/Creston MST - BC (Creston) -CA +5946-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John) -CA +5848-12242 America/Fort_Nelson MST - BC (Ft Nelson) -CA +4916-12307 America/Vancouver Pacific - BC (most areas) -CA +6043-13503 America/Whitehorse Pacific - Yukon (south) -CA +6404-13925 America/Dawson Pacific - Yukon (north) -CC -1210+09655 Indian/Cocos -CD -0418+01518 Africa/Kinshasa Dem. Rep. of Congo (west) -CD -1140+02728 Africa/Lubumbashi Dem. Rep. of Congo (east) -CF +0422+01835 Africa/Bangui -CG -0416+01517 Africa/Brazzaville -CH +4723+00832 Europe/Zurich -CI +0519-00402 Africa/Abidjan -CK -2114-15946 Pacific/Rarotonga -CL -3327-07040 America/Santiago Chile (most areas) -CL -5309-07055 America/Punta_Arenas Region of Magallanes -CL -2709-10926 Pacific/Easter Easter Island -CM +0403+00942 Africa/Douala -CN +3114+12128 Asia/Shanghai Beijing Time -CN +4348+08735 Asia/Urumqi Xinjiang Time -CO +0436-07405 America/Bogota -CR +0956-08405 America/Costa_Rica -CU +2308-08222 America/Havana -CV +1455-02331 Atlantic/Cape_Verde -CW +1211-06900 America/Curacao -CX -1025+10543 Indian/Christmas -CY +3510+03322 Asia/Nicosia Cyprus (most areas) -CY +3507+03357 Asia/Famagusta Northern Cyprus -CZ +5005+01426 Europe/Prague -DE +5230+01322 Europe/Berlin Germany (most areas) -DE +4742+00841 Europe/Busingen Busingen -DJ +1136+04309 Africa/Djibouti -DK +5540+01235 Europe/Copenhagen -DM +1518-06124 America/Dominica -DO +1828-06954 America/Santo_Domingo -DZ +3647+00303 Africa/Algiers -EC -0210-07950 America/Guayaquil Ecuador (mainland) -EC -0054-08936 Pacific/Galapagos Galapagos Islands -EE +5925+02445 Europe/Tallinn -EG +3003+03115 Africa/Cairo -EH +2709-01312 Africa/El_Aaiun -ER +1520+03853 Africa/Asmara -ES +4024-00341 Europe/Madrid Spain (mainland) -ES +3553-00519 Africa/Ceuta Ceuta, Melilla -ES +2806-01524 Atlantic/Canary Canary Islands -ET +0902+03842 Africa/Addis_Ababa -FI +6010+02458 Europe/Helsinki -FJ -1808+17825 Pacific/Fiji -FK -5142-05751 Atlantic/Stanley -FM +0725+15147 Pacific/Chuuk Chuuk/Truk, Yap -FM +0658+15813 Pacific/Pohnpei Pohnpei/Ponape -FM +0519+16259 Pacific/Kosrae Kosrae -FO +6201-00646 Atlantic/Faroe -FR +4852+00220 Europe/Paris -GA +0023+00927 Africa/Libreville -GB +513030-0000731 Europe/London -GD +1203-06145 America/Grenada -GE +4143+04449 Asia/Tbilisi -GF +0456-05220 America/Cayenne -GG +492717-0023210 Europe/Guernsey -GH +0533-00013 Africa/Accra -GI +3608-00521 Europe/Gibraltar -GL +6411-05144 America/Godthab Greenland (most areas) -GL +7646-01840 America/Danmarkshavn National Park (east coast) -GL +7029-02158 America/Scoresbysund Scoresbysund/Ittoqqortoormiit -GL +7634-06847 America/Thule Thule/Pituffik -GM +1328-01639 Africa/Banjul -GN +0931-01343 Africa/Conakry -GP +1614-06132 America/Guadeloupe -GQ +0345+00847 Africa/Malabo -GR +3758+02343 Europe/Athens -GS -5416-03632 Atlantic/South_Georgia -GT +1438-09031 America/Guatemala -GU +1328+14445 Pacific/Guam -GW +1151-01535 Africa/Bissau -GY +0648-05810 America/Guyana -HK +2217+11409 Asia/Hong_Kong -HN +1406-08713 America/Tegucigalpa -HR +4548+01558 Europe/Zagreb -HT +1832-07220 America/Port-au-Prince -HU +4730+01905 Europe/Budapest -ID -0610+10648 Asia/Jakarta Java, Sumatra -ID -0002+10920 Asia/Pontianak Borneo (west, central) -ID -0507+11924 Asia/Makassar Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west) -ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya); Malukus/Moluccas -IE +5320-00615 Europe/Dublin -IL +314650+0351326 Asia/Jerusalem -IM +5409-00428 Europe/Isle_of_Man -IN +2232+08822 Asia/Kolkata -IO -0720+07225 Indian/Chagos -IQ +3321+04425 Asia/Baghdad -IR +3540+05126 Asia/Tehran -IS +6409-02151 Atlantic/Reykjavik -IT +4154+01229 Europe/Rome -JE +491101-0020624 Europe/Jersey -JM +175805-0764736 America/Jamaica -JO +3157+03556 Asia/Amman -JP +353916+1394441 Asia/Tokyo -KE -0117+03649 Africa/Nairobi -KG +4254+07436 Asia/Bishkek -KH +1133+10455 Asia/Phnom_Penh -KI +0125+17300 Pacific/Tarawa Gilbert Islands -KI -0308-17105 Pacific/Enderbury Phoenix Islands -KI +0152-15720 Pacific/Kiritimati Line Islands -KM -1141+04316 Indian/Comoro -KN +1718-06243 America/St_Kitts -KP +3901+12545 Asia/Pyongyang -KR +3733+12658 Asia/Seoul -KW +2920+04759 Asia/Kuwait -KY +1918-08123 America/Cayman -KZ +4315+07657 Asia/Almaty Kazakhstan (most areas) -KZ +4448+06528 Asia/Qyzylorda Qyzylorda/Kyzylorda/Kzyl-Orda -KZ +5017+05710 Asia/Aqtobe Aqtobe/Aktobe -KZ +4431+05016 Asia/Aqtau Mangghystau/Mankistau -KZ +4707+05156 Asia/Atyrau Atyrau/Atirau/Gur'yev -KZ +5113+05121 Asia/Oral West Kazakhstan -LA +1758+10236 Asia/Vientiane -LB +3353+03530 Asia/Beirut -LC +1401-06100 America/St_Lucia -LI +4709+00931 Europe/Vaduz -LK +0656+07951 Asia/Colombo -LR +0618-01047 Africa/Monrovia -LS -2928+02730 Africa/Maseru -LT +5441+02519 Europe/Vilnius -LU +4936+00609 Europe/Luxembourg -LV +5657+02406 Europe/Riga -LY +3254+01311 Africa/Tripoli -MA +3339-00735 Africa/Casablanca -MC +4342+00723 Europe/Monaco -MD +4700+02850 Europe/Chisinau -ME +4226+01916 Europe/Podgorica -MF +1804-06305 America/Marigot -MG -1855+04731 Indian/Antananarivo -MH +0709+17112 Pacific/Majuro Marshall Islands (most areas) -MH +0905+16720 Pacific/Kwajalein Kwajalein -MK +4159+02126 Europe/Skopje -ML +1239-00800 Africa/Bamako -MM +1647+09610 Asia/Yangon -MN +4755+10653 Asia/Ulaanbaatar Mongolia (most areas) -MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan -MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar -MO +2214+11335 Asia/Macau -MP +1512+14545 Pacific/Saipan -MQ +1436-06105 America/Martinique -MR +1806-01557 Africa/Nouakchott -MS +1643-06213 America/Montserrat -MT +3554+01431 Europe/Malta -MU -2010+05730 Indian/Mauritius -MV +0410+07330 Indian/Maldives -MW -1547+03500 Africa/Blantyre -MX +1924-09909 America/Mexico_City Central Time -MX +2105-08646 America/Cancun Eastern Standard Time - Quintana Roo -MX +2058-08937 America/Merida Central Time - Campeche, Yucatan -MX +2540-10019 America/Monterrey Central Time - Durango; Coahuila, Nuevo Leon, Tamaulipas (most areas) -MX +2550-09730 America/Matamoros Central Time US - Coahuila, Nuevo Leon, Tamaulipas (US border) -MX +2313-10625 America/Mazatlan Mountain Time - Baja California Sur, Nayarit, Sinaloa -MX +2838-10605 America/Chihuahua Mountain Time - Chihuahua (most areas) -MX +2934-10425 America/Ojinaga Mountain Time US - Chihuahua (US border) -MX +2904-11058 America/Hermosillo Mountain Standard Time - Sonora -MX +3232-11701 America/Tijuana Pacific Time US - Baja California -MX +2048-10515 America/Bahia_Banderas Central Time - Bahia de Banderas -MY +0310+10142 Asia/Kuala_Lumpur Malaysia (peninsula) -MY +0133+11020 Asia/Kuching Sabah, Sarawak -MZ -2558+03235 Africa/Maputo -NA -2234+01706 Africa/Windhoek -NC -2216+16627 Pacific/Noumea -NE +1331+00207 Africa/Niamey -NF -2903+16758 Pacific/Norfolk -NG +0627+00324 Africa/Lagos -NI +1209-08617 America/Managua -NL +5222+00454 Europe/Amsterdam -NO +5955+01045 Europe/Oslo -NP +2743+08519 Asia/Kathmandu -NR -0031+16655 Pacific/Nauru -NU -1901-16955 Pacific/Niue -NZ -3652+17446 Pacific/Auckland New Zealand (most areas) -NZ -4357-17633 Pacific/Chatham Chatham Islands -OM +2336+05835 Asia/Muscat -PA +0858-07932 America/Panama -PE -1203-07703 America/Lima -PF -1732-14934 Pacific/Tahiti Society Islands -PF -0900-13930 Pacific/Marquesas Marquesas Islands -PF -2308-13457 Pacific/Gambier Gambier Islands -PG -0930+14710 Pacific/Port_Moresby Papua New Guinea (most areas) -PG -0613+15534 Pacific/Bougainville Bougainville -PH +1435+12100 Asia/Manila -PK +2452+06703 Asia/Karachi -PL +5215+02100 Europe/Warsaw -PM +4703-05620 America/Miquelon -PN -2504-13005 Pacific/Pitcairn -PR +182806-0660622 America/Puerto_Rico -PS +3130+03428 Asia/Gaza Gaza Strip -PS +313200+0350542 Asia/Hebron West Bank -PT +3843-00908 Europe/Lisbon Portugal (mainland) -PT +3238-01654 Atlantic/Madeira Madeira Islands -PT +3744-02540 Atlantic/Azores Azores -PW +0720+13429 Pacific/Palau -PY -2516-05740 America/Asuncion -QA +2517+05132 Asia/Qatar -RE -2052+05528 Indian/Reunion -RO +4426+02606 Europe/Bucharest -RS +4450+02030 Europe/Belgrade -RU +5443+02030 Europe/Kaliningrad MSK-01 - Kaliningrad -RU +554521+0373704 Europe/Moscow MSK+00 - Moscow area -RU +4457+03406 Europe/Simferopol MSK+00 - Crimea -RU +4844+04425 Europe/Volgograd MSK+00 - Volgograd -RU +5836+04939 Europe/Kirov MSK+00 - Kirov -RU +4621+04803 Europe/Astrakhan MSK+01 - Astrakhan -RU +5134+04602 Europe/Saratov MSK+01 - Saratov -RU +5420+04824 Europe/Ulyanovsk MSK+01 - Ulyanovsk -RU +5312+05009 Europe/Samara MSK+01 - Samara, Udmurtia -RU +5651+06036 Asia/Yekaterinburg MSK+02 - Urals -RU +5500+07324 Asia/Omsk MSK+03 - Omsk -RU +5502+08255 Asia/Novosibirsk MSK+04 - Novosibirsk -RU +5322+08345 Asia/Barnaul MSK+04 - Altai -RU +5630+08458 Asia/Tomsk MSK+04 - Tomsk -RU +5345+08707 Asia/Novokuznetsk MSK+04 - Kemerovo -RU +5601+09250 Asia/Krasnoyarsk MSK+04 - Krasnoyarsk area -RU +5216+10420 Asia/Irkutsk MSK+05 - Irkutsk, Buryatia -RU +5203+11328 Asia/Chita MSK+06 - Zabaykalsky -RU +6200+12940 Asia/Yakutsk MSK+06 - Lena River -RU +623923+1353314 Asia/Khandyga MSK+06 - Tomponsky, Ust-Maysky -RU +4310+13156 Asia/Vladivostok MSK+07 - Amur River -RU +643337+1431336 Asia/Ust-Nera MSK+07 - Oymyakonsky -RU +5934+15048 Asia/Magadan MSK+08 - Magadan -RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island -RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); North Kuril Is -RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka -RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea -RW -0157+03004 Africa/Kigali -SA +2438+04643 Asia/Riyadh -SB -0932+16012 Pacific/Guadalcanal -SC -0440+05528 Indian/Mahe -SD +1536+03232 Africa/Khartoum -SE +5920+01803 Europe/Stockholm -SG +0117+10351 Asia/Singapore -SH -1555-00542 Atlantic/St_Helena -SI +4603+01431 Europe/Ljubljana -SJ +7800+01600 Arctic/Longyearbyen -SK +4809+01707 Europe/Bratislava -SL +0830-01315 Africa/Freetown -SM +4355+01228 Europe/San_Marino -SN +1440-01726 Africa/Dakar -SO +0204+04522 Africa/Mogadishu -SR +0550-05510 America/Paramaribo -SS +0451+03137 Africa/Juba -ST +0020+00644 Africa/Sao_Tome -SV +1342-08912 America/El_Salvador -SX +180305-0630250 America/Lower_Princes -SY +3330+03618 Asia/Damascus -SZ -2618+03106 Africa/Mbabane -TC +2128-07108 America/Grand_Turk -TD +1207+01503 Africa/Ndjamena -TF -492110+0701303 Indian/Kerguelen -TG +0608+00113 Africa/Lome -TH +1345+10031 Asia/Bangkok -TJ +3835+06848 Asia/Dushanbe -TK -0922-17114 Pacific/Fakaofo -TL -0833+12535 Asia/Dili -TM +3757+05823 Asia/Ashgabat -TN +3648+01011 Africa/Tunis -TO -2110-17510 Pacific/Tongatapu -TR +4101+02858 Europe/Istanbul -TT +1039-06131 America/Port_of_Spain -TV -0831+17913 Pacific/Funafuti -TW +2503+12130 Asia/Taipei -TZ -0648+03917 Africa/Dar_es_Salaam -UA +5026+03031 Europe/Kiev Ukraine (most areas) -UA +4837+02218 Europe/Uzhgorod Ruthenia -UA +4750+03510 Europe/Zaporozhye Zaporozh'ye/Zaporizhia; Lugansk/Luhansk (east) -UG +0019+03225 Africa/Kampala -UM +2813-17722 Pacific/Midway Midway Islands -UM +1917+16637 Pacific/Wake Wake Island -US +404251-0740023 America/New_York Eastern (most areas) -US +421953-0830245 America/Detroit Eastern - MI (most areas) -US +381515-0854534 America/Kentucky/Louisville Eastern - KY (Louisville area) -US +364947-0845057 America/Kentucky/Monticello Eastern - KY (Wayne) -US +394606-0860929 America/Indiana/Indianapolis Eastern - IN (most areas) -US +384038-0873143 America/Indiana/Vincennes Eastern - IN (Da, Du, K, Mn) -US +410305-0863611 America/Indiana/Winamac Eastern - IN (Pulaski) -US +382232-0862041 America/Indiana/Marengo Eastern - IN (Crawford) -US +382931-0871643 America/Indiana/Petersburg Eastern - IN (Pike) -US +384452-0850402 America/Indiana/Vevay Eastern - IN (Switzerland) -US +415100-0873900 America/Chicago Central (most areas) -US +375711-0864541 America/Indiana/Tell_City Central - IN (Perry) -US +411745-0863730 America/Indiana/Knox Central - IN (Starke) -US +450628-0873651 America/Menominee Central - MI (Wisconsin border) -US +470659-1011757 America/North_Dakota/Center Central - ND (Oliver) -US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural) -US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer) -US +394421-1045903 America/Denver Mountain (most areas) -US +433649-1161209 America/Boise Mountain - ID (south); OR (east) -US +332654-1120424 America/Phoenix MST - Arizona (except Navajo) -US +340308-1181434 America/Los_Angeles Pacific -US +611305-1495401 America/Anchorage Alaska (most areas) -US +581807-1342511 America/Juneau Alaska - Juneau area -US +571035-1351807 America/Sitka Alaska - Sitka area -US +550737-1313435 America/Metlakatla Alaska - Annette Island -US +593249-1394338 America/Yakutat Alaska - Yakutat -US +643004-1652423 America/Nome Alaska (west) -US +515248-1763929 America/Adak Aleutian Islands -US +211825-1575130 Pacific/Honolulu Hawaii -UY -3453-05611 America/Montevideo -UZ +3940+06648 Asia/Samarkand Uzbekistan (west) -UZ +4120+06918 Asia/Tashkent Uzbekistan (east) -VA +415408+0122711 Europe/Vatican -VC +1309-06114 America/St_Vincent -VE +1030-06656 America/Caracas -VG +1827-06437 America/Tortola -VI +1821-06456 America/St_Thomas -VN +1045+10640 Asia/Ho_Chi_Minh -VU -1740+16825 Pacific/Efate -WF -1318-17610 Pacific/Wallis -WS -1350-17144 Pacific/Apia -YE +1245+04512 Asia/Aden -YT -1247+04514 Indian/Mayotte -ZA -2615+02800 Africa/Johannesburg -ZM -1525+02817 Africa/Lusaka -ZW -1750+03103 Africa/Harare diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/zone1970.tab b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/zone1970.tab deleted file mode 100644 index 4ee8ce51..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/pytz/zoneinfo/zone1970.tab +++ /dev/null @@ -1,382 +0,0 @@ -# tz zone descriptions -# -# This file is in the public domain. -# -# From Paul Eggert (2017-10-01): -# This file contains a table where each row stands for a zone where -# civil time stamps have agreed since 1970. Columns are separated by -# a single tab. Lines beginning with '#' are comments. All text uses -# UTF-8 encoding. The columns of the table are as follows: -# -# 1. The countries that overlap the zone, as a comma-separated list -# of ISO 3166 2-character country codes. See the file 'iso3166.tab'. -# 2. Latitude and longitude of the zone's principal location -# in ISO 6709 sign-degrees-minutes-seconds format, -# either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS, -# first latitude (+ is north), then longitude (+ is east). -# 3. Zone name used in value of TZ environment variable. -# Please see the theory.html file for how zone names are chosen. -# If multiple zones overlap a country, each has a row in the -# table, with each column 1 containing the country code. -# 4. Comments; present if and only if a country has multiple zones. -# -# If a zone covers multiple countries, the most-populous city is used, -# and that country is listed first in column 1; any other countries -# are listed alphabetically by country code. The table is sorted -# first by country code, then (if possible) by an order within the -# country that (1) makes some geographical sense, and (2) puts the -# most populous zones first, where that does not contradict (1). -# -# This table is intended as an aid for users, to help them select time -# zone data entries appropriate for their practical needs. It is not -# intended to take or endorse any position on legal or territorial claims. -# -#country- -#codes coordinates TZ comments -AD +4230+00131 Europe/Andorra -AE,OM +2518+05518 Asia/Dubai -AF +3431+06912 Asia/Kabul -AL +4120+01950 Europe/Tirane -AM +4011+04430 Asia/Yerevan -AQ -6617+11031 Antarctica/Casey Casey -AQ -6835+07758 Antarctica/Davis Davis -AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville -AQ -6736+06253 Antarctica/Mawson Mawson -AQ -6448-06406 Antarctica/Palmer Palmer -AQ -6734-06808 Antarctica/Rothera Rothera -AQ -690022+0393524 Antarctica/Syowa Syowa -AQ -720041+0023206 Antarctica/Troll Troll -AQ -7824+10654 Antarctica/Vostok Vostok -AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF) -AR -3124-06411 America/Argentina/Cordoba Argentina (most areas: CB, CC, CN, ER, FM, MN, SE, SF) -AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN) -AR -2411-06518 America/Argentina/Jujuy Jujuy (JY) -AR -2649-06513 America/Argentina/Tucuman Tucumán (TM) -AR -2828-06547 America/Argentina/Catamarca Catamarca (CT); Chubut (CH) -AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR) -AR -3132-06831 America/Argentina/San_Juan San Juan (SJ) -AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ) -AR -3319-06621 America/Argentina/San_Luis San Luis (SL) -AR -5138-06913 America/Argentina/Rio_Gallegos Santa Cruz (SC) -AR -5448-06818 America/Argentina/Ushuaia Tierra del Fuego (TF) -AS,UM -1416-17042 Pacific/Pago_Pago Samoa, Midway -AT +4813+01620 Europe/Vienna -AU -3133+15905 Australia/Lord_Howe Lord Howe Island -AU -5430+15857 Antarctica/Macquarie Macquarie Island -AU -4253+14719 Australia/Hobart Tasmania (most areas) -AU -3956+14352 Australia/Currie Tasmania (King Island) -AU -3749+14458 Australia/Melbourne Victoria -AU -3352+15113 Australia/Sydney New South Wales (most areas) -AU -3157+14127 Australia/Broken_Hill New South Wales (Yancowinna) -AU -2728+15302 Australia/Brisbane Queensland (most areas) -AU -2016+14900 Australia/Lindeman Queensland (Whitsunday Islands) -AU -3455+13835 Australia/Adelaide South Australia -AU -1228+13050 Australia/Darwin Northern Territory -AU -3157+11551 Australia/Perth Western Australia (most areas) -AU -3143+12852 Australia/Eucla Western Australia (Eucla) -AZ +4023+04951 Asia/Baku -BB +1306-05937 America/Barbados -BD +2343+09025 Asia/Dhaka -BE +5050+00420 Europe/Brussels -BG +4241+02319 Europe/Sofia -BM +3217-06446 Atlantic/Bermuda -BN +0456+11455 Asia/Brunei -BO -1630-06809 America/La_Paz -BR -0351-03225 America/Noronha Atlantic islands -BR -0127-04829 America/Belem Pará (east); Amapá -BR -0343-03830 America/Fortaleza Brazil (northeast: MA, PI, CE, RN, PB) -BR -0803-03454 America/Recife Pernambuco -BR -0712-04812 America/Araguaina Tocantins -BR -0940-03543 America/Maceio Alagoas, Sergipe -BR -1259-03831 America/Bahia Bahia -BR -2332-04637 America/Sao_Paulo Brazil (southeast: GO, DF, MG, ES, RJ, SP, PR, SC, RS) -BR -2027-05437 America/Campo_Grande Mato Grosso do Sul -BR -1535-05605 America/Cuiaba Mato Grosso -BR -0226-05452 America/Santarem Pará (west) -BR -0846-06354 America/Porto_Velho Rondônia -BR +0249-06040 America/Boa_Vista Roraima -BR -0308-06001 America/Manaus Amazonas (east) -BR -0640-06952 America/Eirunepe Amazonas (west) -BR -0958-06748 America/Rio_Branco Acre -BS +2505-07721 America/Nassau -BT +2728+08939 Asia/Thimphu -BY +5354+02734 Europe/Minsk -BZ +1730-08812 America/Belize -CA +4734-05243 America/St_Johns Newfoundland; Labrador (southeast) -CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE -CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton) -CA +4606-06447 America/Moncton Atlantic - New Brunswick -CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas) -CA +5125-05707 America/Blanc-Sablon AST - QC (Lower North Shore) -CA +4339-07923 America/Toronto Eastern - ON, QC (most areas) -CA +4901-08816 America/Nipigon Eastern - ON, QC (no DST 1967-73) -CA +4823-08915 America/Thunder_Bay Eastern - ON (Thunder Bay) -CA +6344-06828 America/Iqaluit Eastern - NU (most east areas) -CA +6608-06544 America/Pangnirtung Eastern - NU (Pangnirtung) -CA +484531-0913718 America/Atikokan EST - ON (Atikokan); NU (Coral H) -CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba -CA +4843-09434 America/Rainy_River Central - ON (Rainy R, Ft Frances) -CA +744144-0944945 America/Resolute Central - NU (Resolute) -CA +624900-0920459 America/Rankin_Inlet Central - NU (central) -CA +5024-10439 America/Regina CST - SK (most areas) -CA +5017-10750 America/Swift_Current CST - SK (midwest) -CA +5333-11328 America/Edmonton Mountain - AB; BC (E); SK (W) -CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west) -CA +6227-11421 America/Yellowknife Mountain - NT (central) -CA +682059-1334300 America/Inuvik Mountain - NT (west) -CA +4906-11631 America/Creston MST - BC (Creston) -CA +5946-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John) -CA +5848-12242 America/Fort_Nelson MST - BC (Ft Nelson) -CA +4916-12307 America/Vancouver Pacific - BC (most areas) -CA +6043-13503 America/Whitehorse Pacific - Yukon (south) -CA +6404-13925 America/Dawson Pacific - Yukon (north) -CC -1210+09655 Indian/Cocos -CH,DE,LI +4723+00832 Europe/Zurich Swiss time -CI,BF,GM,GN,ML,MR,SH,SL,SN,TG +0519-00402 Africa/Abidjan -CK -2114-15946 Pacific/Rarotonga -CL -3327-07040 America/Santiago Chile (most areas) -CL -5309-07055 America/Punta_Arenas Region of Magallanes -CL -2709-10926 Pacific/Easter Easter Island -CN +3114+12128 Asia/Shanghai Beijing Time -CN +4348+08735 Asia/Urumqi Xinjiang Time -CO +0436-07405 America/Bogota -CR +0956-08405 America/Costa_Rica -CU +2308-08222 America/Havana -CV +1455-02331 Atlantic/Cape_Verde -CW,AW,BQ,SX +1211-06900 America/Curacao -CX -1025+10543 Indian/Christmas -CY +3510+03322 Asia/Nicosia Cyprus (most areas) -CY +3507+03357 Asia/Famagusta Northern Cyprus -CZ,SK +5005+01426 Europe/Prague -DE +5230+01322 Europe/Berlin Germany (most areas) -DK +5540+01235 Europe/Copenhagen -DO +1828-06954 America/Santo_Domingo -DZ +3647+00303 Africa/Algiers -EC -0210-07950 America/Guayaquil Ecuador (mainland) -EC -0054-08936 Pacific/Galapagos Galápagos Islands -EE +5925+02445 Europe/Tallinn -EG +3003+03115 Africa/Cairo -EH +2709-01312 Africa/El_Aaiun -ES +4024-00341 Europe/Madrid Spain (mainland) -ES +3553-00519 Africa/Ceuta Ceuta, Melilla -ES +2806-01524 Atlantic/Canary Canary Islands -FI,AX +6010+02458 Europe/Helsinki -FJ -1808+17825 Pacific/Fiji -FK -5142-05751 Atlantic/Stanley -FM +0725+15147 Pacific/Chuuk Chuuk/Truk, Yap -FM +0658+15813 Pacific/Pohnpei Pohnpei/Ponape -FM +0519+16259 Pacific/Kosrae Kosrae -FO +6201-00646 Atlantic/Faroe -FR +4852+00220 Europe/Paris -GB,GG,IM,JE +513030-0000731 Europe/London -GE +4143+04449 Asia/Tbilisi -GF +0456-05220 America/Cayenne -GH +0533-00013 Africa/Accra -GI +3608-00521 Europe/Gibraltar -GL +6411-05144 America/Godthab Greenland (most areas) -GL +7646-01840 America/Danmarkshavn National Park (east coast) -GL +7029-02158 America/Scoresbysund Scoresbysund/Ittoqqortoormiit -GL +7634-06847 America/Thule Thule/Pituffik -GR +3758+02343 Europe/Athens -GS -5416-03632 Atlantic/South_Georgia -GT +1438-09031 America/Guatemala -GU,MP +1328+14445 Pacific/Guam -GW +1151-01535 Africa/Bissau -GY +0648-05810 America/Guyana -HK +2217+11409 Asia/Hong_Kong -HN +1406-08713 America/Tegucigalpa -HT +1832-07220 America/Port-au-Prince -HU +4730+01905 Europe/Budapest -ID -0610+10648 Asia/Jakarta Java, Sumatra -ID -0002+10920 Asia/Pontianak Borneo (west, central) -ID -0507+11924 Asia/Makassar Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west) -ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya); Malukus/Moluccas -IE +5320-00615 Europe/Dublin -IL +314650+0351326 Asia/Jerusalem -IN +2232+08822 Asia/Kolkata -IO -0720+07225 Indian/Chagos -IQ +3321+04425 Asia/Baghdad -IR +3540+05126 Asia/Tehran -IS +6409-02151 Atlantic/Reykjavik -IT,SM,VA +4154+01229 Europe/Rome -JM +175805-0764736 America/Jamaica -JO +3157+03556 Asia/Amman -JP +353916+1394441 Asia/Tokyo -KE,DJ,ER,ET,KM,MG,SO,TZ,UG,YT -0117+03649 Africa/Nairobi -KG +4254+07436 Asia/Bishkek -KI +0125+17300 Pacific/Tarawa Gilbert Islands -KI -0308-17105 Pacific/Enderbury Phoenix Islands -KI +0152-15720 Pacific/Kiritimati Line Islands -KP +3901+12545 Asia/Pyongyang -KR +3733+12658 Asia/Seoul -KZ +4315+07657 Asia/Almaty Kazakhstan (most areas) -KZ +4448+06528 Asia/Qyzylorda Qyzylorda/Kyzylorda/Kzyl-Orda -KZ +5017+05710 Asia/Aqtobe Aqtöbe/Aktobe -KZ +4431+05016 Asia/Aqtau Mangghystaū/Mankistau -KZ +4707+05156 Asia/Atyrau Atyraū/Atirau/Gur'yev -KZ +5113+05121 Asia/Oral West Kazakhstan -LB +3353+03530 Asia/Beirut -LK +0656+07951 Asia/Colombo -LR +0618-01047 Africa/Monrovia -LT +5441+02519 Europe/Vilnius -LU +4936+00609 Europe/Luxembourg -LV +5657+02406 Europe/Riga -LY +3254+01311 Africa/Tripoli -MA +3339-00735 Africa/Casablanca -MC +4342+00723 Europe/Monaco -MD +4700+02850 Europe/Chisinau -MH +0709+17112 Pacific/Majuro Marshall Islands (most areas) -MH +0905+16720 Pacific/Kwajalein Kwajalein -MM +1647+09610 Asia/Yangon -MN +4755+10653 Asia/Ulaanbaatar Mongolia (most areas) -MN +4801+09139 Asia/Hovd Bayan-Ölgii, Govi-Altai, Hovd, Uvs, Zavkhan -MN +4804+11430 Asia/Choibalsan Dornod, Sükhbaatar -MO +2214+11335 Asia/Macau -MQ +1436-06105 America/Martinique -MT +3554+01431 Europe/Malta -MU -2010+05730 Indian/Mauritius -MV +0410+07330 Indian/Maldives -MX +1924-09909 America/Mexico_City Central Time -MX +2105-08646 America/Cancun Eastern Standard Time - Quintana Roo -MX +2058-08937 America/Merida Central Time - Campeche, Yucatán -MX +2540-10019 America/Monterrey Central Time - Durango; Coahuila, Nuevo León, Tamaulipas (most areas) -MX +2550-09730 America/Matamoros Central Time US - Coahuila, Nuevo León, Tamaulipas (US border) -MX +2313-10625 America/Mazatlan Mountain Time - Baja California Sur, Nayarit, Sinaloa -MX +2838-10605 America/Chihuahua Mountain Time - Chihuahua (most areas) -MX +2934-10425 America/Ojinaga Mountain Time US - Chihuahua (US border) -MX +2904-11058 America/Hermosillo Mountain Standard Time - Sonora -MX +3232-11701 America/Tijuana Pacific Time US - Baja California -MX +2048-10515 America/Bahia_Banderas Central Time - Bahía de Banderas -MY +0310+10142 Asia/Kuala_Lumpur Malaysia (peninsula) -MY +0133+11020 Asia/Kuching Sabah, Sarawak -MZ,BI,BW,CD,MW,RW,ZM,ZW -2558+03235 Africa/Maputo Central Africa Time -NA -2234+01706 Africa/Windhoek -NC -2216+16627 Pacific/Noumea -NF -2903+16758 Pacific/Norfolk -NG,AO,BJ,CD,CF,CG,CM,GA,GQ,NE +0627+00324 Africa/Lagos West Africa Time -NI +1209-08617 America/Managua -NL +5222+00454 Europe/Amsterdam -NO,SJ +5955+01045 Europe/Oslo -NP +2743+08519 Asia/Kathmandu -NR -0031+16655 Pacific/Nauru -NU -1901-16955 Pacific/Niue -NZ,AQ -3652+17446 Pacific/Auckland New Zealand time -NZ -4357-17633 Pacific/Chatham Chatham Islands -PA,KY +0858-07932 America/Panama -PE -1203-07703 America/Lima -PF -1732-14934 Pacific/Tahiti Society Islands -PF -0900-13930 Pacific/Marquesas Marquesas Islands -PF -2308-13457 Pacific/Gambier Gambier Islands -PG -0930+14710 Pacific/Port_Moresby Papua New Guinea (most areas) -PG -0613+15534 Pacific/Bougainville Bougainville -PH +1435+12100 Asia/Manila -PK +2452+06703 Asia/Karachi -PL +5215+02100 Europe/Warsaw -PM +4703-05620 America/Miquelon -PN -2504-13005 Pacific/Pitcairn -PR +182806-0660622 America/Puerto_Rico -PS +3130+03428 Asia/Gaza Gaza Strip -PS +313200+0350542 Asia/Hebron West Bank -PT +3843-00908 Europe/Lisbon Portugal (mainland) -PT +3238-01654 Atlantic/Madeira Madeira Islands -PT +3744-02540 Atlantic/Azores Azores -PW +0720+13429 Pacific/Palau -PY -2516-05740 America/Asuncion -QA,BH +2517+05132 Asia/Qatar -RE,TF -2052+05528 Indian/Reunion Réunion, Crozet, Scattered Islands -RO +4426+02606 Europe/Bucharest -RS,BA,HR,ME,MK,SI +4450+02030 Europe/Belgrade -RU +5443+02030 Europe/Kaliningrad MSK-01 - Kaliningrad -RU +554521+0373704 Europe/Moscow MSK+00 - Moscow area -RU +4457+03406 Europe/Simferopol MSK+00 - Crimea -RU +4844+04425 Europe/Volgograd MSK+00 - Volgograd -RU +5836+04939 Europe/Kirov MSK+00 - Kirov -RU +4621+04803 Europe/Astrakhan MSK+01 - Astrakhan -RU +5134+04602 Europe/Saratov MSK+01 - Saratov -RU +5420+04824 Europe/Ulyanovsk MSK+01 - Ulyanovsk -RU +5312+05009 Europe/Samara MSK+01 - Samara, Udmurtia -RU +5651+06036 Asia/Yekaterinburg MSK+02 - Urals -RU +5500+07324 Asia/Omsk MSK+03 - Omsk -RU +5502+08255 Asia/Novosibirsk MSK+04 - Novosibirsk -RU +5322+08345 Asia/Barnaul MSK+04 - Altai -RU +5630+08458 Asia/Tomsk MSK+04 - Tomsk -RU +5345+08707 Asia/Novokuznetsk MSK+04 - Kemerovo -RU +5601+09250 Asia/Krasnoyarsk MSK+04 - Krasnoyarsk area -RU +5216+10420 Asia/Irkutsk MSK+05 - Irkutsk, Buryatia -RU +5203+11328 Asia/Chita MSK+06 - Zabaykalsky -RU +6200+12940 Asia/Yakutsk MSK+06 - Lena River -RU +623923+1353314 Asia/Khandyga MSK+06 - Tomponsky, Ust-Maysky -RU +4310+13156 Asia/Vladivostok MSK+07 - Amur River -RU +643337+1431336 Asia/Ust-Nera MSK+07 - Oymyakonsky -RU +5934+15048 Asia/Magadan MSK+08 - Magadan -RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island -RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); North Kuril Is -RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka -RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea -SA,KW,YE +2438+04643 Asia/Riyadh -SB -0932+16012 Pacific/Guadalcanal -SC -0440+05528 Indian/Mahe -SD +1536+03232 Africa/Khartoum -SE +5920+01803 Europe/Stockholm -SG +0117+10351 Asia/Singapore -SR +0550-05510 America/Paramaribo -SS +0451+03137 Africa/Juba -ST +0020+00644 Africa/Sao_Tome -SV +1342-08912 America/El_Salvador -SY +3330+03618 Asia/Damascus -TC +2128-07108 America/Grand_Turk -TD +1207+01503 Africa/Ndjamena -TF -492110+0701303 Indian/Kerguelen Kerguelen, St Paul Island, Amsterdam Island -TH,KH,LA,VN +1345+10031 Asia/Bangkok Indochina (most areas) -TJ +3835+06848 Asia/Dushanbe -TK -0922-17114 Pacific/Fakaofo -TL -0833+12535 Asia/Dili -TM +3757+05823 Asia/Ashgabat -TN +3648+01011 Africa/Tunis -TO -2110-17510 Pacific/Tongatapu -TR +4101+02858 Europe/Istanbul -TT,AG,AI,BL,DM,GD,GP,KN,LC,MF,MS,VC,VG,VI +1039-06131 America/Port_of_Spain -TV -0831+17913 Pacific/Funafuti -TW +2503+12130 Asia/Taipei -UA +5026+03031 Europe/Kiev Ukraine (most areas) -UA +4837+02218 Europe/Uzhgorod Ruthenia -UA +4750+03510 Europe/Zaporozhye Zaporozh'ye/Zaporizhia; Lugansk/Luhansk (east) -UM +1917+16637 Pacific/Wake Wake Island -US +404251-0740023 America/New_York Eastern (most areas) -US +421953-0830245 America/Detroit Eastern - MI (most areas) -US +381515-0854534 America/Kentucky/Louisville Eastern - KY (Louisville area) -US +364947-0845057 America/Kentucky/Monticello Eastern - KY (Wayne) -US +394606-0860929 America/Indiana/Indianapolis Eastern - IN (most areas) -US +384038-0873143 America/Indiana/Vincennes Eastern - IN (Da, Du, K, Mn) -US +410305-0863611 America/Indiana/Winamac Eastern - IN (Pulaski) -US +382232-0862041 America/Indiana/Marengo Eastern - IN (Crawford) -US +382931-0871643 America/Indiana/Petersburg Eastern - IN (Pike) -US +384452-0850402 America/Indiana/Vevay Eastern - IN (Switzerland) -US +415100-0873900 America/Chicago Central (most areas) -US +375711-0864541 America/Indiana/Tell_City Central - IN (Perry) -US +411745-0863730 America/Indiana/Knox Central - IN (Starke) -US +450628-0873651 America/Menominee Central - MI (Wisconsin border) -US +470659-1011757 America/North_Dakota/Center Central - ND (Oliver) -US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural) -US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer) -US +394421-1045903 America/Denver Mountain (most areas) -US +433649-1161209 America/Boise Mountain - ID (south); OR (east) -US +332654-1120424 America/Phoenix MST - Arizona (except Navajo) -US +340308-1181434 America/Los_Angeles Pacific -US +611305-1495401 America/Anchorage Alaska (most areas) -US +581807-1342511 America/Juneau Alaska - Juneau area -US +571035-1351807 America/Sitka Alaska - Sitka area -US +550737-1313435 America/Metlakatla Alaska - Annette Island -US +593249-1394338 America/Yakutat Alaska - Yakutat -US +643004-1652423 America/Nome Alaska (west) -US +515248-1763929 America/Adak Aleutian Islands -US,UM +211825-1575130 Pacific/Honolulu Hawaii -UY -3453-05611 America/Montevideo -UZ +3940+06648 Asia/Samarkand Uzbekistan (west) -UZ +4120+06918 Asia/Tashkent Uzbekistan (east) -VE +1030-06656 America/Caracas -VN +1045+10640 Asia/Ho_Chi_Minh Vietnam (south) -VU -1740+16825 Pacific/Efate -WF -1318-17610 Pacific/Wallis -WS -1350-17144 Pacific/Apia -ZA,LS,SZ -2615+02800 Africa/Johannesburg diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/DESCRIPTION.rst b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/DESCRIPTION.rst deleted file mode 100644 index f2dad243..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,243 +0,0 @@ -=============================== -Installing and Using Setuptools -=============================== - -.. contents:: **Table of Contents** - - -.. image:: https://setuptools.readthedocs.io/en/latest/?badge=latest - :target: https://setuptools.readthedocs.io - -------------------------- -Installation Instructions -------------------------- - -The recommended way to bootstrap setuptools on any system is to download -`ez_setup.py`_ and run it using the target Python environment. Different -operating systems have different recommended techniques to accomplish this -basic routine, so below are some examples to get you started. - -Setuptools requires Python 2.6 or later. To install setuptools -on Python 2.4 or Python 2.5, use the `bootstrap script for Setuptools 1.x -<https://raw.githubusercontent.com/pypa/setuptools/bootstrap-py24/ez_setup.py>`_. - -The link provided to ez_setup.py is a bookmark to bootstrap script for the -latest known stable release. - -.. _ez_setup.py: https://bootstrap.pypa.io/ez_setup.py - -Windows (Powershell 3 or later) -=============================== - -For best results, uninstall previous versions FIRST (see `Uninstalling`_). - -Using Windows 8 (which includes PowerShell 3) or earlier versions of Windows -with PowerShell 3 installed, it's possible to install with one simple -Powershell command. Start up Powershell and paste this command:: - - > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - - -.. image:: https://badges.gitter.im/pypa/setuptools.svg - :alt: Join the chat at https://gitter.im/pypa/setuptools - :target: https://gitter.im/pypa/setuptools?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge - -You must start the Powershell with Administrative privileges or you may choose -to install a user-local installation:: - - > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - --user - -If you have Python 3.3 or later, you can use the ``py`` command to install to -different Python versions. For example, to install to Python 3.3 if you have -Python 2.7 installed:: - - > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | py -3 - - -The recommended way to install setuptools on Windows is to download -`ez_setup.py`_ and run it. The script will download the appropriate -distribution file and install it for you. - -Once installation is complete, you will find an ``easy_install`` program in -your Python ``Scripts`` subdirectory. For simple invocation and best results, -add this directory to your ``PATH`` environment variable, if it is not already -present. If you did a user-local install, the ``Scripts`` subdirectory is -``$env:APPDATA\Python\Scripts``. - - -Windows (simplified) -==================== - -For Windows without PowerShell 3 or for installation without a command-line, -download `ez_setup.py`_ using your preferred web browser or other technique -and "run" that file. - - -Unix (wget) -=========== - -Most Linux distributions come with wget. - -Download `ez_setup.py`_ and run it using the target Python version. The script -will download the appropriate version and install it for you:: - - > wget https://bootstrap.pypa.io/ez_setup.py -O - | python - -Note that you will may need to invoke the command with superuser privileges to -install to the system Python:: - - > wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python - -Alternatively, Setuptools may be installed to a user-local path:: - - > wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user - -Note that on some older systems (noted on Debian 6 and CentOS 5 installations), -`wget` may refuse to download `ez_setup.py`, complaining that the certificate common name `*.c.ssl.fastly.net` -does not match the host name `bootstrap.pypa.io`. In addition, the `ez_setup.py` script may then encounter similar problems using -`wget` internally to download `setuptools-x.y.zip`, complaining that the certificate common name of `www.python.org` does not match the -host name `pypi.python.org`. Those are known issues, related to a bug in the older versions of `wget` -(see `Issue 59 <https://bitbucket.org/pypa/pypi/issue/59#comment-5881915>`_). If you happen to encounter them, -install Setuptools as follows:: - - > wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py - > python ez_setup.py --insecure - - -Unix including Mac OS X (curl) -============================== - -If your system has curl installed, follow the ``wget`` instructions but -replace ``wget`` with ``curl`` and ``-O`` with ``-o``. For example:: - - > curl https://bootstrap.pypa.io/ez_setup.py -o - | python - - -Advanced Installation -===================== - -For more advanced installation options, such as installing to custom -locations or prefixes, download and extract the source -tarball from `Setuptools on PyPI <https://pypi.python.org/pypi/setuptools>`_ -and run setup.py with any supported distutils and Setuptools options. -For example:: - - setuptools-x.x$ python setup.py install --prefix=/opt/setuptools - -Use ``--help`` to get a full options list, but we recommend consulting -the `EasyInstall manual`_ for detailed instructions, especially `the section -on custom installation locations`_. - -.. _EasyInstall manual: https://pythonhosted.org/setuptools/EasyInstall -.. _the section on custom installation locations: https://pythonhosted.org/setuptools/EasyInstall#custom-installation-locations - - -Downloads -========= - -All setuptools downloads can be found at `the project's home page in the Python -Package Index`_. Scroll to the very bottom of the page to find the links. - -.. _the project's home page in the Python Package Index: https://pypi.python.org/pypi/setuptools - -In addition to the PyPI downloads, the development version of ``setuptools`` -is available from the `Bitbucket repo`_, and in-development versions of the -`0.6 branch`_ are available as well. - -.. _Bitbucket repo: https://bitbucket.org/pypa/setuptools/get/default.tar.gz#egg=setuptools-dev -.. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06 - -Uninstalling -============ - -On Windows, if Setuptools was installed using an ``.exe`` or ``.msi`` -installer, simply use the uninstall feature of "Add/Remove Programs" in the -Control Panel. - -Otherwise, to uninstall Setuptools or Distribute, regardless of the Python -version, delete all ``setuptools*`` and ``distribute*`` files and -directories from your system's ``site-packages`` directory -(and any other ``sys.path`` directories) FIRST. - -If you are upgrading or otherwise plan to re-install Setuptools or Distribute, -nothing further needs to be done. If you want to completely remove Setuptools, -you may also want to remove the 'easy_install' and 'easy_install-x.x' scripts -and associated executables installed to the Python scripts directory. - --------------------------------- -Using Setuptools and EasyInstall --------------------------------- - -Here are some of the available manuals, tutorials, and other resources for -learning about Setuptools, Python Eggs, and EasyInstall: - -* `The EasyInstall user's guide and reference manual`_ -* `The setuptools Developer's Guide`_ -* `The pkg_resources API reference`_ -* `The Internal Structure of Python Eggs`_ - -Questions, comments, and bug reports should be directed to the `distutils-sig -mailing list`_. If you have written (or know of) any tutorials, documentation, -plug-ins, or other resources for setuptools users, please let us know about -them there, so this reference list can be updated. If you have working, -*tested* patches to correct problems or add features, you may submit them to -the `setuptools bug tracker`_. - -.. _setuptools bug tracker: https://github.com/pypa/setuptools/issues -.. _The Internal Structure of Python Eggs: https://setuptools.readthedocs.io/en/latest/formats.html -.. _The setuptools Developer's Guide: https://setuptools.readthedocs.io/en/latest/developer-guide.html -.. _The pkg_resources API reference: https://setuptools.readthedocs.io/en/latest/pkg_resources.html -.. _The EasyInstall user's guide and reference manual: https://setuptools.readthedocs.io/en/latest/easy_install.html -.. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/ - - -------- -Credits -------- - -* The original design for the ``.egg`` format and the ``pkg_resources`` API was - co-created by Phillip Eby and Bob Ippolito. Bob also implemented the first - version of ``pkg_resources``, and supplied the OS X operating system version - compatibility algorithm. - -* Ian Bicking implemented many early "creature comfort" features of - easy_install, including support for downloading via Sourceforge and - Subversion repositories. Ian's comments on the Web-SIG about WSGI - application deployment also inspired the concept of "entry points" in eggs, - and he has given talks at PyCon and elsewhere to inform and educate the - community about eggs and setuptools. - -* Jim Fulton contributed time and effort to build automated tests of various - aspects of ``easy_install``, and supplied the doctests for the command-line - ``.exe`` wrappers on Windows. - -* Phillip J. Eby is the seminal author of setuptools, and - first proposed the idea of an importable binary distribution format for - Python application plug-ins. - -* Significant parts of the implementation of setuptools were funded by the Open - Source Applications Foundation, to provide a plug-in infrastructure for the - Chandler PIM application. In addition, many OSAF staffers (such as Mike - "Code Bear" Taylor) contributed their time and stress as guinea pigs for the - use of eggs and setuptools, even before eggs were "cool". (Thanks, guys!) - -* Tarek Ziadé is the principal author of the Distribute fork, which - re-invigorated the community on the project, encouraged renewed innovation, - and addressed many defects. - -* Since the merge with Distribute, Jason R. Coombs is the - maintainer of setuptools. The project is maintained in coordination with - the Python Packaging Authority (PyPA) and the larger Python community. - -.. _files: - - ---------------- -Code of Conduct ---------------- - -Everyone interacting in the setuptools project's codebases, issue trackers, -chat rooms, and mailing lists is expected to follow the -`PyPA Code of Conduct`_. - -.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/ - - diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/INSTALLER b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/METADATA b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/METADATA deleted file mode 100644 index a38609cd..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/METADATA +++ /dev/null @@ -1,272 +0,0 @@ -Metadata-Version: 2.0 -Name: setuptools -Version: 28.8.0 -Summary: Easily download, build, install, upgrade, and uninstall Python packages -Home-page: https://github.com/pypa/setuptools -Author: Python Packaging Authority -Author-email: distutils-sig@python.org -License: UNKNOWN -Keywords: CPAN PyPI distutils eggs package management -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: System :: Archiving :: Packaging -Classifier: Topic :: System :: Systems Administration -Classifier: Topic :: Utilities -Provides-Extra: certs -Requires-Dist: certifi (==2016.9.26); extra == 'certs' -Provides-Extra: ssl -Requires-Dist: wincertstore (==0.2); sys_platform=='win32' and extra == 'ssl' - -=============================== -Installing and Using Setuptools -=============================== - -.. contents:: **Table of Contents** - - -.. image:: https://setuptools.readthedocs.io/en/latest/?badge=latest - :target: https://setuptools.readthedocs.io - -------------------------- -Installation Instructions -------------------------- - -The recommended way to bootstrap setuptools on any system is to download -`ez_setup.py`_ and run it using the target Python environment. Different -operating systems have different recommended techniques to accomplish this -basic routine, so below are some examples to get you started. - -Setuptools requires Python 2.6 or later. To install setuptools -on Python 2.4 or Python 2.5, use the `bootstrap script for Setuptools 1.x -<https://raw.githubusercontent.com/pypa/setuptools/bootstrap-py24/ez_setup.py>`_. - -The link provided to ez_setup.py is a bookmark to bootstrap script for the -latest known stable release. - -.. _ez_setup.py: https://bootstrap.pypa.io/ez_setup.py - -Windows (Powershell 3 or later) -=============================== - -For best results, uninstall previous versions FIRST (see `Uninstalling`_). - -Using Windows 8 (which includes PowerShell 3) or earlier versions of Windows -with PowerShell 3 installed, it's possible to install with one simple -Powershell command. Start up Powershell and paste this command:: - - > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - - -.. image:: https://badges.gitter.im/pypa/setuptools.svg - :alt: Join the chat at https://gitter.im/pypa/setuptools - :target: https://gitter.im/pypa/setuptools?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge - -You must start the Powershell with Administrative privileges or you may choose -to install a user-local installation:: - - > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - --user - -If you have Python 3.3 or later, you can use the ``py`` command to install to -different Python versions. For example, to install to Python 3.3 if you have -Python 2.7 installed:: - - > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | py -3 - - -The recommended way to install setuptools on Windows is to download -`ez_setup.py`_ and run it. The script will download the appropriate -distribution file and install it for you. - -Once installation is complete, you will find an ``easy_install`` program in -your Python ``Scripts`` subdirectory. For simple invocation and best results, -add this directory to your ``PATH`` environment variable, if it is not already -present. If you did a user-local install, the ``Scripts`` subdirectory is -``$env:APPDATA\Python\Scripts``. - - -Windows (simplified) -==================== - -For Windows without PowerShell 3 or for installation without a command-line, -download `ez_setup.py`_ using your preferred web browser or other technique -and "run" that file. - - -Unix (wget) -=========== - -Most Linux distributions come with wget. - -Download `ez_setup.py`_ and run it using the target Python version. The script -will download the appropriate version and install it for you:: - - > wget https://bootstrap.pypa.io/ez_setup.py -O - | python - -Note that you will may need to invoke the command with superuser privileges to -install to the system Python:: - - > wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python - -Alternatively, Setuptools may be installed to a user-local path:: - - > wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user - -Note that on some older systems (noted on Debian 6 and CentOS 5 installations), -`wget` may refuse to download `ez_setup.py`, complaining that the certificate common name `*.c.ssl.fastly.net` -does not match the host name `bootstrap.pypa.io`. In addition, the `ez_setup.py` script may then encounter similar problems using -`wget` internally to download `setuptools-x.y.zip`, complaining that the certificate common name of `www.python.org` does not match the -host name `pypi.python.org`. Those are known issues, related to a bug in the older versions of `wget` -(see `Issue 59 <https://bitbucket.org/pypa/pypi/issue/59#comment-5881915>`_). If you happen to encounter them, -install Setuptools as follows:: - - > wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py - > python ez_setup.py --insecure - - -Unix including Mac OS X (curl) -============================== - -If your system has curl installed, follow the ``wget`` instructions but -replace ``wget`` with ``curl`` and ``-O`` with ``-o``. For example:: - - > curl https://bootstrap.pypa.io/ez_setup.py -o - | python - - -Advanced Installation -===================== - -For more advanced installation options, such as installing to custom -locations or prefixes, download and extract the source -tarball from `Setuptools on PyPI <https://pypi.python.org/pypi/setuptools>`_ -and run setup.py with any supported distutils and Setuptools options. -For example:: - - setuptools-x.x$ python setup.py install --prefix=/opt/setuptools - -Use ``--help`` to get a full options list, but we recommend consulting -the `EasyInstall manual`_ for detailed instructions, especially `the section -on custom installation locations`_. - -.. _EasyInstall manual: https://pythonhosted.org/setuptools/EasyInstall -.. _the section on custom installation locations: https://pythonhosted.org/setuptools/EasyInstall#custom-installation-locations - - -Downloads -========= - -All setuptools downloads can be found at `the project's home page in the Python -Package Index`_. Scroll to the very bottom of the page to find the links. - -.. _the project's home page in the Python Package Index: https://pypi.python.org/pypi/setuptools - -In addition to the PyPI downloads, the development version of ``setuptools`` -is available from the `Bitbucket repo`_, and in-development versions of the -`0.6 branch`_ are available as well. - -.. _Bitbucket repo: https://bitbucket.org/pypa/setuptools/get/default.tar.gz#egg=setuptools-dev -.. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06 - -Uninstalling -============ - -On Windows, if Setuptools was installed using an ``.exe`` or ``.msi`` -installer, simply use the uninstall feature of "Add/Remove Programs" in the -Control Panel. - -Otherwise, to uninstall Setuptools or Distribute, regardless of the Python -version, delete all ``setuptools*`` and ``distribute*`` files and -directories from your system's ``site-packages`` directory -(and any other ``sys.path`` directories) FIRST. - -If you are upgrading or otherwise plan to re-install Setuptools or Distribute, -nothing further needs to be done. If you want to completely remove Setuptools, -you may also want to remove the 'easy_install' and 'easy_install-x.x' scripts -and associated executables installed to the Python scripts directory. - --------------------------------- -Using Setuptools and EasyInstall --------------------------------- - -Here are some of the available manuals, tutorials, and other resources for -learning about Setuptools, Python Eggs, and EasyInstall: - -* `The EasyInstall user's guide and reference manual`_ -* `The setuptools Developer's Guide`_ -* `The pkg_resources API reference`_ -* `The Internal Structure of Python Eggs`_ - -Questions, comments, and bug reports should be directed to the `distutils-sig -mailing list`_. If you have written (or know of) any tutorials, documentation, -plug-ins, or other resources for setuptools users, please let us know about -them there, so this reference list can be updated. If you have working, -*tested* patches to correct problems or add features, you may submit them to -the `setuptools bug tracker`_. - -.. _setuptools bug tracker: https://github.com/pypa/setuptools/issues -.. _The Internal Structure of Python Eggs: https://setuptools.readthedocs.io/en/latest/formats.html -.. _The setuptools Developer's Guide: https://setuptools.readthedocs.io/en/latest/developer-guide.html -.. _The pkg_resources API reference: https://setuptools.readthedocs.io/en/latest/pkg_resources.html -.. _The EasyInstall user's guide and reference manual: https://setuptools.readthedocs.io/en/latest/easy_install.html -.. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/ - - -------- -Credits -------- - -* The original design for the ``.egg`` format and the ``pkg_resources`` API was - co-created by Phillip Eby and Bob Ippolito. Bob also implemented the first - version of ``pkg_resources``, and supplied the OS X operating system version - compatibility algorithm. - -* Ian Bicking implemented many early "creature comfort" features of - easy_install, including support for downloading via Sourceforge and - Subversion repositories. Ian's comments on the Web-SIG about WSGI - application deployment also inspired the concept of "entry points" in eggs, - and he has given talks at PyCon and elsewhere to inform and educate the - community about eggs and setuptools. - -* Jim Fulton contributed time and effort to build automated tests of various - aspects of ``easy_install``, and supplied the doctests for the command-line - ``.exe`` wrappers on Windows. - -* Phillip J. Eby is the seminal author of setuptools, and - first proposed the idea of an importable binary distribution format for - Python application plug-ins. - -* Significant parts of the implementation of setuptools were funded by the Open - Source Applications Foundation, to provide a plug-in infrastructure for the - Chandler PIM application. In addition, many OSAF staffers (such as Mike - "Code Bear" Taylor) contributed their time and stress as guinea pigs for the - use of eggs and setuptools, even before eggs were "cool". (Thanks, guys!) - -* Tarek Ziadé is the principal author of the Distribute fork, which - re-invigorated the community on the project, encouraged renewed innovation, - and addressed many defects. - -* Since the merge with Distribute, Jason R. Coombs is the - maintainer of setuptools. The project is maintained in coordination with - the Python Packaging Authority (PyPA) and the larger Python community. - -.. _files: - - ---------------- -Code of Conduct ---------------- - -Everyone interacting in the setuptools project's codebases, issue trackers, -chat rooms, and mailing lists is expected to follow the -`PyPA Code of Conduct`_. - -.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/ - - diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/RECORD b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/RECORD deleted file mode 100644 index ae5524d5..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/RECORD +++ /dev/null @@ -1,143 +0,0 @@ -easy_install.py,sha256=MDC9vt5AxDsXX5qcKlBz2TnW6Tpuv_AobnfhCJ9X3PM,126 -pkg_resources/__init__.py,sha256=Z_i79ylo01fXF7p2lnMG7Ov4fLu0O-HLX-3JHMk0FCI,103301 -pkg_resources/_vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pkg_resources/_vendor/appdirs.py,sha256=tgGaL0m4Jo2VeuGfoOOifLv7a7oUEJu2n1vRkqoPw-0,22374 -pkg_resources/_vendor/pyparsing.py,sha256=PifeLY3-WhIcBVzLtv0U4T_pwDtPruBhBCkg5vLqa28,229867 -pkg_resources/_vendor/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 -pkg_resources/_vendor/packaging/__about__.py,sha256=E9KR5UJ_8U9K-R1mScu6FmkXtbnlFEEFjEXJp-7LxNU,720 -pkg_resources/_vendor/packaging/__init__.py,sha256=_vNac5TrzwsrzbOFIbF-5cHqc_Y2aPT2D7zrIR06BOo,513 -pkg_resources/_vendor/packaging/_compat.py,sha256=Vi_A0rAQeHbU-a9X0tt1yQm9RqkgQbDSxzRw8WlU9kA,860 -pkg_resources/_vendor/packaging/_structures.py,sha256=RImECJ4c_wTlaTYYwZYLHEiebDMaAJmK1oPARhw1T5o,1416 -pkg_resources/_vendor/packaging/markers.py,sha256=ndShKOQb_OgpQkFju6LR-2msB1La5u5iAfD5MIqXE4c,7939 -pkg_resources/_vendor/packaging/requirements.py,sha256=SikL2UynbsT0qtY9ltqngndha_sfo0w6XGFhAhoSoaQ,4355 -pkg_resources/_vendor/packaging/specifiers.py,sha256=SAMRerzO3fK2IkFZCaZkuwZaL_EGqHNOz4pni4vhnN0,28025 -pkg_resources/_vendor/packaging/utils.py,sha256=3m6WvPm6NNxE8rkTGmn0r75B_GZSGg7ikafxHsBN1WA,421 -pkg_resources/_vendor/packaging/version.py,sha256=OwGnxYfr2ghNzYx59qWIBkrK3SnB6n-Zfd1XaLpnnM0,11556 -pkg_resources/extern/__init__.py,sha256=JUtlHHvlxHSNuB4pWqNjcx7n6kG-fwXg7qmJ2zNJlIY,2487 -setuptools/__init__.py,sha256=hW5vya8Yp46AiWmYcALuQbGI7148nQSYVLsEIJLet54,5050 -setuptools/archive_util.py,sha256=Z58-gbZQ0j92UJy7X7uZevwI28JTVEXd__AjKy4aw78,6613 -setuptools/cli-32.exe,sha256=dfEuovMNnA2HLa3jRfMPVi5tk4R7alCbpTvuxtCyw0Y,65536 -setuptools/cli-64.exe,sha256=KLABu5pyrnokJCv6skjXZ6GsXeyYHGcqOUT3oHI3Xpo,74752 -setuptools/cli.exe,sha256=dfEuovMNnA2HLa3jRfMPVi5tk4R7alCbpTvuxtCyw0Y,65536 -setuptools/depends.py,sha256=h5tbRzianODRkECVsK4sLBbsOfpY1TGEnp9Zm0wg2To,6473 -setuptools/dist.py,sha256=5WUqgcvehkRw97T8NpV66vwneVp77LI9zOmWkPvgHoE,37129 -setuptools/extension.py,sha256=uc6nHI-MxwmNCNPbUiBnybSyqhpJqjbhvOQ-emdvt_E,1729 -setuptools/glob.py,sha256=Y-fpv8wdHZzv9DPCaGACpMSBWJ6amq_1e0R_i8_el4w,5207 -setuptools/gui-32.exe,sha256=XBr0bHMA6Hpz2s9s9Bzjl-PwXfa9nH4ie0rFn4V2kWA,65536 -setuptools/gui-64.exe,sha256=aYKMhX1IJLn4ULHgWX0sE0yREUt6B3TEHf_jOw6yNyE,75264 -setuptools/gui.exe,sha256=XBr0bHMA6Hpz2s9s9Bzjl-PwXfa9nH4ie0rFn4V2kWA,65536 -setuptools/launch.py,sha256=sd7ejwhBocCDx_wG9rIs0OaZ8HtmmFU8ZC6IR_S0Lvg,787 -setuptools/lib2to3_ex.py,sha256=t5e12hbR2pi9V4ezWDTB4JM-AISUnGOkmcnYHek3xjg,2013 -setuptools/monkey.py,sha256=qHoZT9IgmFM-_yF7BjCoPtXg4DYF1H49t_1nLq7dPRo,5337 -setuptools/msvc.py,sha256=6cKqwOxTH8pJNMrNyRLBGB6Efz2rxTTdQQJABUW-6WU,37091 -setuptools/namespaces.py,sha256=I2YrskOZU2ctBS8jdFwAc9q4M8SxbOr0DsFLxxO7gfA,2648 -setuptools/package_index.py,sha256=eYtVpQiaP_4RRFp8zsNbsvNGPAzyOUDM2Lf_q4hePcs,39947 -setuptools/py26compat.py,sha256=VRGHC7z2gliR4_uICJsQNodUcNUzybpus3BrJkWbnK4,679 -setuptools/py27compat.py,sha256=Yu8hW3y8Djps_IenCuz5xZ9OD9qQ-kmBIoVGVpWeQ5Y,330 -setuptools/py31compat.py,sha256=qGRk3tefux8HbhNzhM0laR3mD8vhAZtffZgzLkBMXJs,1645 -setuptools/sandbox.py,sha256=0aNeoJ2tCLhHmQZlx8DQPhuuhGt2690Q7PoGLz6KJ30,14324 -setuptools/script (dev).tmpl,sha256=f7MR17dTkzaqkCMSVseyOCMVrPVSMdmTQsaB8cZzfuI,201 -setuptools/script.tmpl,sha256=WGTt5piezO27c-Dbx6l5Q4T3Ff20A5z7872hv3aAhYY,138 -setuptools/site-patch.py,sha256=BVt6yIrDMXJoflA5J6DJIcsJUfW_XEeVhOzelTTFDP4,2307 -setuptools/ssl_support.py,sha256=qUzJ_2WeFWBVkGoN638qC42Uzs-Wvmb8cZub9gT1xuI,8131 -setuptools/unicode_utils.py,sha256=NOiZ_5hD72A6w-4wVj8awHFM3n51Kmw1Ic_vx15XFqw,996 -setuptools/version.py,sha256=fvr31nm9BOi4wvMhGVoU0VwmyGeeEAeF3fh33z84wx4,138 -setuptools/windows_support.py,sha256=5GrfqSP2-dLGJoZTq2g6dCKkyQxxa2n5IQiXlJCoYEE,714 -setuptools/command/__init__.py,sha256=FCLDWoQEGsNexQviqbeJ4MEYGYpYVbbwc7i-9gjzBkM,563 -setuptools/command/alias.py,sha256=KjpE0sz_SDIHv3fpZcIQK-sCkJz-SrC6Gmug6b9Nkc8,2426 -setuptools/command/bdist_egg.py,sha256=XDamu6-cfyYrqd67YGQ5gWo-0c8kuWqkPy1vYpfsAxw,17178 -setuptools/command/bdist_rpm.py,sha256=B7l0TnzCGb-0nLlm6rS00jWLkojASwVmdhW2w5Qz_Ak,1508 -setuptools/command/bdist_wininst.py,sha256=_6dz3lpB1tY200LxKPLM7qgwTCceOMgaWFF-jW2-pm0,637 -setuptools/command/build_ext.py,sha256=dO89j-IC0dAjSty1sSZxvi0LSdkPGR_ZPXFuAAFDZj4,13049 -setuptools/command/build_py.py,sha256=FwU7GNUnd2dT3yEtsTPsJBcl9a7loOcN6GB4uQ0W_IM,9596 -setuptools/command/develop.py,sha256=cHScw5hhILsZM3pk-ddORnd51aLFIbi-4gRm3yTnS_k,7384 -setuptools/command/easy_install.py,sha256=AlmasFuULxUXXgTcUhARle87a74rwStU5nSQn9Oakjw,85720 -setuptools/command/egg_info.py,sha256=f89c5gu9hWS89XheFLD0h0yONVmB4Z3FJR5hkAjn0SY,25110 -setuptools/command/install.py,sha256=a0EZpL_A866KEdhicTGbuyD_TYl1sykfzdrri-zazT4,4683 -setuptools/command/install_egg_info.py,sha256=bMgeIeRiXzQ4DAGPV1328kcjwQjHjOWU4FngAWLV78Q,2203 -setuptools/command/install_lib.py,sha256=11mxf0Ch12NsuYwS8PHwXBRvyh671QAM4cTRh7epzG0,3840 -setuptools/command/install_scripts.py,sha256=UD0rEZ6861mTYhIdzcsqKnUl8PozocXWl9VBQ1VTWnc,2439 -setuptools/command/launcher manifest.xml,sha256=xlLbjWrB01tKC0-hlVkOKkiSPbzMml2eOPtJ_ucCnbE,628 -setuptools/command/py36compat.py,sha256=SzjZcOxF7zdFUT47Zv2n7AM3H8koDys_0OpS-n9gIfc,4986 -setuptools/command/register.py,sha256=bHlMm1qmBbSdahTOT8w6UhA-EgeQIz7p6cD-qOauaiI,270 -setuptools/command/rotate.py,sha256=co5C1EkI7P0GGT6Tqz-T2SIj2LBJTZXYELpmao6d4KQ,2164 -setuptools/command/saveopts.py,sha256=za7QCBcQimKKriWcoCcbhxPjUz30gSB74zuTL47xpP4,658 -setuptools/command/sdist.py,sha256=cu745bayFZMEEGqzMg6kUbIYY9ZKXAbJjPBDXznNUyc,6650 -setuptools/command/setopt.py,sha256=NTWDyx-gjDF-txf4dO577s7LOzHVoKR0Mq33rFxaRr8,5085 -setuptools/command/test.py,sha256=IqkQ6rKdQsPh2BiLEXIx5FpzfGMpZttGl8dMa9utxVY,8535 -setuptools/command/upload.py,sha256=6LbdC9NWFe19tb8u-6L3Hriei-nVgtqfO7tn0Si7yLo,1077 -setuptools/command/upload_docs.py,sha256=0Ft5uo7Unnk4lJdZtIm6Nzq7hlyux-9zIYcXC8k_Czs,7275 -setuptools/extern/__init__.py,sha256=ZtCLYQ8JTtOtm7SYoxekZw-UzY3TR50SRIUaeqr2ROk,131 -setuptools-28.8.0.dist-info/DESCRIPTION.rst,sha256=UnjDOK_xBlHg-QN2JbfTbA55nmD_kStv89yxF9aOkqU,10257 -setuptools-28.8.0.dist-info/METADATA,sha256=Xf6UtJ6jxpg-nF5OHBErvUwMGLz-4nizC7iwdYmOcGc,11486 -setuptools-28.8.0.dist-info/RECORD,, -setuptools-28.8.0.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 -setuptools-28.8.0.dist-info/dependency_links.txt,sha256=HlkCFkoK5TbZ5EMLbLKYhLcY_E31kBWD8TqW2EgmatQ,239 -setuptools-28.8.0.dist-info/entry_points.txt,sha256=zPeIHv66mpCraHdiLlHQjxKDe-6gFIepEbEIjCvu8x4,2885 -setuptools-28.8.0.dist-info/metadata.json,sha256=EIv4nnlOffwLVnetEwhIkFs74vm5jfPJHsxZrjQyXFE,4614 -setuptools-28.8.0.dist-info/top_level.txt,sha256=2HUXVVwA4Pff1xgTFr3GsTXXKaPaO6vlG6oNJ_4u4Tg,38 -setuptools-28.8.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 -../../../bin/easy_install,sha256=w075A_hNzM1TJTpQ0vsiquRiNf4tk4nmaG2pXNdBTjs,275 -../../../bin/easy_install-3.6,sha256=w075A_hNzM1TJTpQ0vsiquRiNf4tk4nmaG2pXNdBTjs,275 -setuptools-28.8.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -__pycache__/easy_install.cpython-36.pyc,, -setuptools/__pycache__/package_index.cpython-36.pyc,, -setuptools/__pycache__/py31compat.cpython-36.pyc,, -setuptools/__pycache__/sandbox.cpython-36.pyc,, -setuptools/__pycache__/windows_support.cpython-36.pyc,, -setuptools/__pycache__/version.cpython-36.pyc,, -setuptools/__pycache__/site-patch.cpython-36.pyc,, -setuptools/__pycache__/py26compat.cpython-36.pyc,, -setuptools/__pycache__/launch.cpython-36.pyc,, -setuptools/__pycache__/unicode_utils.cpython-36.pyc,, -setuptools/__pycache__/ssl_support.cpython-36.pyc,, -setuptools/__pycache__/depends.cpython-36.pyc,, -setuptools/__pycache__/glob.cpython-36.pyc,, -setuptools/__pycache__/msvc.cpython-36.pyc,, -setuptools/__pycache__/py27compat.cpython-36.pyc,, -setuptools/__pycache__/lib2to3_ex.cpython-36.pyc,, -setuptools/__pycache__/monkey.cpython-36.pyc,, -setuptools/__pycache__/dist.cpython-36.pyc,, -setuptools/__pycache__/namespaces.cpython-36.pyc,, -setuptools/__pycache__/__init__.cpython-36.pyc,, -setuptools/__pycache__/extension.cpython-36.pyc,, -setuptools/__pycache__/archive_util.cpython-36.pyc,, -setuptools/command/__pycache__/alias.cpython-36.pyc,, -setuptools/command/__pycache__/register.cpython-36.pyc,, -setuptools/command/__pycache__/install_lib.cpython-36.pyc,, -setuptools/command/__pycache__/setopt.cpython-36.pyc,, -setuptools/command/__pycache__/bdist_egg.cpython-36.pyc,, -setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc,, -setuptools/command/__pycache__/develop.cpython-36.pyc,, -setuptools/command/__pycache__/build_py.cpython-36.pyc,, -setuptools/command/__pycache__/upload.cpython-36.pyc,, -setuptools/command/__pycache__/sdist.cpython-36.pyc,, -setuptools/command/__pycache__/install.cpython-36.pyc,, -setuptools/command/__pycache__/egg_info.cpython-36.pyc,, -setuptools/command/__pycache__/py36compat.cpython-36.pyc,, -setuptools/command/__pycache__/easy_install.cpython-36.pyc,, -setuptools/command/__pycache__/build_ext.cpython-36.pyc,, -setuptools/command/__pycache__/rotate.cpython-36.pyc,, -setuptools/command/__pycache__/upload_docs.cpython-36.pyc,, -setuptools/command/__pycache__/saveopts.cpython-36.pyc,, -setuptools/command/__pycache__/__init__.cpython-36.pyc,, -setuptools/command/__pycache__/test.cpython-36.pyc,, -setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc,, -setuptools/command/__pycache__/install_scripts.cpython-36.pyc,, -setuptools/command/__pycache__/install_egg_info.cpython-36.pyc,, -setuptools/extern/__pycache__/__init__.cpython-36.pyc,, -pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc,, -pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc,, -pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc,, -pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc,, -pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc,, -pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc,, -pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc,, -pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc,, -pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc,, -pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc,, -pkg_resources/_vendor/__pycache__/six.cpython-36.pyc,, -pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc,, -pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc,, -pkg_resources/__pycache__/__init__.cpython-36.pyc,, -pkg_resources/extern/__pycache__/__init__.cpython-36.pyc,, diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/WHEEL b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/WHEEL deleted file mode 100644 index 8b6dd1b5..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.29.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/dependency_links.txt b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/dependency_links.txt deleted file mode 100644 index e87d0210..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/dependency_links.txt +++ /dev/null @@ -1,2 +0,0 @@ -https://files.pythonhosted.org/packages/source/c/certifi/certifi-2016.9.26.tar.gz#md5=baa81e951a29958563689d868ef1064d -https://files.pythonhosted.org/packages/source/w/wincertstore/wincertstore-0.2.zip#md5=ae728f2f007185648d0c7a8679b361e2 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/entry_points.txt b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/entry_points.txt deleted file mode 100644 index c3dd2840..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/entry_points.txt +++ /dev/null @@ -1,63 +0,0 @@ -[console_scripts] -easy_install = setuptools.command.easy_install:main -easy_install-3.5 = setuptools.command.easy_install:main - -[distutils.commands] -alias = setuptools.command.alias:alias -bdist_egg = setuptools.command.bdist_egg:bdist_egg -bdist_rpm = setuptools.command.bdist_rpm:bdist_rpm -bdist_wininst = setuptools.command.bdist_wininst:bdist_wininst -build_ext = setuptools.command.build_ext:build_ext -build_py = setuptools.command.build_py:build_py -develop = setuptools.command.develop:develop -easy_install = setuptools.command.easy_install:easy_install -egg_info = setuptools.command.egg_info:egg_info -install = setuptools.command.install:install -install_egg_info = setuptools.command.install_egg_info:install_egg_info -install_lib = setuptools.command.install_lib:install_lib -install_scripts = setuptools.command.install_scripts:install_scripts -register = setuptools.command.register:register -rotate = setuptools.command.rotate:rotate -saveopts = setuptools.command.saveopts:saveopts -sdist = setuptools.command.sdist:sdist -setopt = setuptools.command.setopt:setopt -test = setuptools.command.test:test -upload = setuptools.command.upload:upload -upload_docs = setuptools.command.upload_docs:upload_docs - -[distutils.setup_keywords] -convert_2to3_doctests = setuptools.dist:assert_string_list -dependency_links = setuptools.dist:assert_string_list -eager_resources = setuptools.dist:assert_string_list -entry_points = setuptools.dist:check_entry_points -exclude_package_data = setuptools.dist:check_package_data -extras_require = setuptools.dist:check_extras -include_package_data = setuptools.dist:assert_bool -install_requires = setuptools.dist:check_requirements -namespace_packages = setuptools.dist:check_nsp -package_data = setuptools.dist:check_package_data -packages = setuptools.dist:check_packages -python_requires = setuptools.dist:check_specifier -setup_requires = setuptools.dist:check_requirements -test_loader = setuptools.dist:check_importable -test_runner = setuptools.dist:check_importable -test_suite = setuptools.dist:check_test_suite -tests_require = setuptools.dist:check_requirements -use_2to3 = setuptools.dist:assert_bool -use_2to3_exclude_fixers = setuptools.dist:assert_string_list -use_2to3_fixers = setuptools.dist:assert_string_list -zip_safe = setuptools.dist:assert_bool - -[egg_info.writers] -PKG-INFO = setuptools.command.egg_info:write_pkg_info -dependency_links.txt = setuptools.command.egg_info:overwrite_arg -depends.txt = setuptools.command.egg_info:warn_depends_obsolete -eager_resources.txt = setuptools.command.egg_info:overwrite_arg -entry_points.txt = setuptools.command.egg_info:write_entries -namespace_packages.txt = setuptools.command.egg_info:overwrite_arg -requires.txt = setuptools.command.egg_info:write_requirements -top_level.txt = setuptools.command.egg_info:write_toplevel_names - -[setuptools.installation] -eggsecutable = setuptools.command.easy_install:bootstrap - diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/metadata.json b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/metadata.json deleted file mode 100644 index 258f532f..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Archiving :: Packaging", "Topic :: System :: Systems Administration", "Topic :: Utilities"], "extensions": {"python.commands": {"wrap_console": {"easy_install": "setuptools.command.easy_install:main", "easy_install-3.5": "setuptools.command.easy_install:main"}}, "python.details": {"contacts": [{"email": "distutils-sig@python.org", "name": "Python Packaging Authority", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/pypa/setuptools"}}, "python.exports": {"console_scripts": {"easy_install": "setuptools.command.easy_install:main", "easy_install-3.5": "setuptools.command.easy_install:main"}, "distutils.commands": {"alias": "setuptools.command.alias:alias", "bdist_egg": "setuptools.command.bdist_egg:bdist_egg", "bdist_rpm": "setuptools.command.bdist_rpm:bdist_rpm", "bdist_wininst": "setuptools.command.bdist_wininst:bdist_wininst", "build_ext": "setuptools.command.build_ext:build_ext", "build_py": "setuptools.command.build_py:build_py", "develop": "setuptools.command.develop:develop", "easy_install": "setuptools.command.easy_install:easy_install", "egg_info": "setuptools.command.egg_info:egg_info", "install": "setuptools.command.install:install", "install_egg_info": "setuptools.command.install_egg_info:install_egg_info", "install_lib": "setuptools.command.install_lib:install_lib", "install_scripts": "setuptools.command.install_scripts:install_scripts", "register": "setuptools.command.register:register", "rotate": "setuptools.command.rotate:rotate", "saveopts": "setuptools.command.saveopts:saveopts", "sdist": "setuptools.command.sdist:sdist", "setopt": "setuptools.command.setopt:setopt", "test": "setuptools.command.test:test", "upload": "setuptools.command.upload:upload", "upload_docs": "setuptools.command.upload_docs:upload_docs"}, "distutils.setup_keywords": {"convert_2to3_doctests": "setuptools.dist:assert_string_list", "dependency_links": "setuptools.dist:assert_string_list", "eager_resources": "setuptools.dist:assert_string_list", "entry_points": "setuptools.dist:check_entry_points", "exclude_package_data": "setuptools.dist:check_package_data", "extras_require": "setuptools.dist:check_extras", "include_package_data": "setuptools.dist:assert_bool", "install_requires": "setuptools.dist:check_requirements", "namespace_packages": "setuptools.dist:check_nsp", "package_data": "setuptools.dist:check_package_data", "packages": "setuptools.dist:check_packages", "python_requires": "setuptools.dist:check_specifier", "setup_requires": "setuptools.dist:check_requirements", "test_loader": "setuptools.dist:check_importable", "test_runner": "setuptools.dist:check_importable", "test_suite": "setuptools.dist:check_test_suite", "tests_require": "setuptools.dist:check_requirements", "use_2to3": "setuptools.dist:assert_bool", "use_2to3_exclude_fixers": "setuptools.dist:assert_string_list", "use_2to3_fixers": "setuptools.dist:assert_string_list", "zip_safe": "setuptools.dist:assert_bool"}, "egg_info.writers": {"PKG-INFO": "setuptools.command.egg_info:write_pkg_info", "dependency_links.txt": "setuptools.command.egg_info:overwrite_arg", "depends.txt": "setuptools.command.egg_info:warn_depends_obsolete", "eager_resources.txt": "setuptools.command.egg_info:overwrite_arg", "entry_points.txt": "setuptools.command.egg_info:write_entries", "namespace_packages.txt": "setuptools.command.egg_info:overwrite_arg", "requires.txt": "setuptools.command.egg_info:write_requirements", "top_level.txt": "setuptools.command.egg_info:write_toplevel_names"}, "setuptools.installation": {"eggsecutable": "setuptools.command.easy_install:bootstrap"}}}, "extras": ["certs", "ssl"], "generator": "bdist_wheel (0.29.0)", "keywords": ["CPAN", "PyPI", "distutils", "eggs", "package", "management"], "metadata_version": "2.0", "name": "setuptools", "run_requires": [{"extra": "certs", "requires": ["certifi (==2016.9.26)"]}, {"environment": "sys_platform=='win32'", "extra": "ssl", "requires": ["wincertstore (==0.2)"]}], "summary": "Easily download, build, install, upgrade, and uninstall Python packages", "version": "28.8.0"} \ No newline at end of file diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/top_level.txt b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/top_level.txt deleted file mode 100644 index 4577c6a7..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/top_level.txt +++ /dev/null @@ -1,3 +0,0 @@ -easy_install -pkg_resources -setuptools diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/zip-safe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/zip-safe deleted file mode 100644 index 8b137891..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__init__.py deleted file mode 100644 index 54577ced..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__init__.py +++ /dev/null @@ -1,160 +0,0 @@ -"""Extensions to the 'distutils' for large or complex distributions""" - -import os -import functools -import distutils.core -import distutils.filelist -from distutils.util import convert_path -from fnmatch import fnmatchcase - -from setuptools.extern.six.moves import filter, filterfalse, map - -import setuptools.version -from setuptools.extension import Extension -from setuptools.dist import Distribution, Feature -from setuptools.depends import Require -from . import monkey - -__all__ = [ - 'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require', - 'find_packages', -] - -__version__ = setuptools.version.__version__ - -bootstrap_install_from = None - -# If we run 2to3 on .py files, should we also convert docstrings? -# Default: yes; assume that we can detect doctests reliably -run_2to3_on_doctests = True -# Standard package names for fixer packages -lib2to3_fixer_packages = ['lib2to3.fixes'] - - -class PackageFinder(object): - """ - Generate a list of all Python packages found within a directory - """ - - @classmethod - def find(cls, where='.', exclude=(), include=('*',)): - """Return a list all Python packages found within directory 'where' - - 'where' is the root directory which will be searched for packages. It - should be supplied as a "cross-platform" (i.e. URL-style) path; it will - be converted to the appropriate local path syntax. - - 'exclude' is a sequence of package names to exclude; '*' can be used - as a wildcard in the names, such that 'foo.*' will exclude all - subpackages of 'foo' (but not 'foo' itself). - - 'include' is a sequence of package names to include. If it's - specified, only the named packages will be included. If it's not - specified, all found packages will be included. 'include' can contain - shell style wildcard patterns just like 'exclude'. - """ - - return list(cls._find_packages_iter( - convert_path(where), - cls._build_filter('ez_setup', '*__pycache__', *exclude), - cls._build_filter(*include))) - - @classmethod - def _find_packages_iter(cls, where, exclude, include): - """ - All the packages found in 'where' that pass the 'include' filter, but - not the 'exclude' filter. - """ - for root, dirs, files in os.walk(where, followlinks=True): - # Copy dirs to iterate over it, then empty dirs. - all_dirs = dirs[:] - dirs[:] = [] - - for dir in all_dirs: - full_path = os.path.join(root, dir) - rel_path = os.path.relpath(full_path, where) - package = rel_path.replace(os.path.sep, '.') - - # Skip directory trees that are not valid packages - if ('.' in dir or not cls._looks_like_package(full_path)): - continue - - # Should this package be included? - if include(package) and not exclude(package): - yield package - - # Keep searching subdirectories, as there may be more packages - # down there, even if the parent was excluded. - dirs.append(dir) - - @staticmethod - def _looks_like_package(path): - """Does a directory look like a package?""" - return os.path.isfile(os.path.join(path, '__init__.py')) - - @staticmethod - def _build_filter(*patterns): - """ - Given a list of patterns, return a callable that will be true only if - the input matches at least one of the patterns. - """ - return lambda name: any(fnmatchcase(name, pat=pat) for pat in patterns) - - -class PEP420PackageFinder(PackageFinder): - @staticmethod - def _looks_like_package(path): - return True - - -find_packages = PackageFinder.find - -setup = distutils.core.setup - -_Command = monkey.get_unpatched(distutils.core.Command) - - -class Command(_Command): - __doc__ = _Command.__doc__ - - command_consumes_arguments = False - - def __init__(self, dist, **kw): - """ - Construct the command for dist, updating - vars(self) with any keyword parameters. - """ - _Command.__init__(self, dist) - vars(self).update(kw) - - def reinitialize_command(self, command, reinit_subcommands=0, **kw): - cmd = _Command.reinitialize_command(self, command, reinit_subcommands) - vars(cmd).update(kw) - return cmd - - -def _find_all_simple(path): - """ - Find all files under 'path' - """ - results = ( - os.path.join(base, file) - for base, dirs, files in os.walk(path, followlinks=True) - for file in files - ) - return filter(os.path.isfile, results) - - -def findall(dir=os.curdir): - """ - Find all files under 'dir' and return the list of full filenames. - Unless dir is '.', return full filenames with dir prepended. - """ - files = _find_all_simple(dir) - if dir == os.curdir: - make_rel = functools.partial(os.path.relpath, start=dir) - files = map(make_rel, files) - return list(files) - - -monkey.patch_all() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index e5131448..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.pyc deleted file mode 100644 index 3b3bd815..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.pyc deleted file mode 100644 index c91e03a4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.pyc deleted file mode 100644 index 80128132..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.pyc deleted file mode 100644 index 3c1c845c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.pyc deleted file mode 100644 index 0732b047..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.pyc deleted file mode 100644 index cceabedf..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.pyc deleted file mode 100644 index 9d5b4d79..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.pyc deleted file mode 100644 index e0894b9c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.pyc deleted file mode 100644 index ca04e65a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.pyc deleted file mode 100644 index 2c3f1eb4..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.pyc deleted file mode 100644 index bb87cfaf..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/py26compat.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/py26compat.cpython-36.pyc deleted file mode 100644 index 19836e71..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/py26compat.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.pyc deleted file mode 100644 index 68826c60..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.pyc deleted file mode 100644 index a0a46857..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.pyc deleted file mode 100644 index 882f5abf..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.pyc deleted file mode 100644 index 60166dac..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.pyc deleted file mode 100644 index f0adcc16..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.pyc deleted file mode 100644 index 6b20628d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.pyc deleted file mode 100644 index 77833e9d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.pyc deleted file mode 100644 index 6f220604..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/archive_util.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/archive_util.py deleted file mode 100644 index cc82b3da..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/archive_util.py +++ /dev/null @@ -1,173 +0,0 @@ -"""Utilities for extracting common archive formats""" - -import zipfile -import tarfile -import os -import shutil -import posixpath -import contextlib -from distutils.errors import DistutilsError - -from pkg_resources import ensure_directory, ContextualZipFile - -__all__ = [ - "unpack_archive", "unpack_zipfile", "unpack_tarfile", "default_filter", - "UnrecognizedFormat", "extraction_drivers", "unpack_directory", -] - - -class UnrecognizedFormat(DistutilsError): - """Couldn't recognize the archive type""" - - -def default_filter(src, dst): - """The default progress/filter callback; returns True for all files""" - return dst - - -def unpack_archive(filename, extract_dir, progress_filter=default_filter, - drivers=None): - """Unpack `filename` to `extract_dir`, or raise ``UnrecognizedFormat`` - - `progress_filter` is a function taking two arguments: a source path - internal to the archive ('/'-separated), and a filesystem path where it - will be extracted. The callback must return the desired extract path - (which may be the same as the one passed in), or else ``None`` to skip - that file or directory. The callback can thus be used to report on the - progress of the extraction, as well as to filter the items extracted or - alter their extraction paths. - - `drivers`, if supplied, must be a non-empty sequence of functions with the - same signature as this function (minus the `drivers` argument), that raise - ``UnrecognizedFormat`` if they do not support extracting the designated - archive type. The `drivers` are tried in sequence until one is found that - does not raise an error, or until all are exhausted (in which case - ``UnrecognizedFormat`` is raised). If you do not supply a sequence of - drivers, the module's ``extraction_drivers`` constant will be used, which - means that ``unpack_zipfile`` and ``unpack_tarfile`` will be tried, in that - order. - """ - for driver in drivers or extraction_drivers: - try: - driver(filename, extract_dir, progress_filter) - except UnrecognizedFormat: - continue - else: - return - else: - raise UnrecognizedFormat( - "Not a recognized archive type: %s" % filename - ) - - -def unpack_directory(filename, extract_dir, progress_filter=default_filter): - """"Unpack" a directory, using the same interface as for archives - - Raises ``UnrecognizedFormat`` if `filename` is not a directory - """ - if not os.path.isdir(filename): - raise UnrecognizedFormat("%s is not a directory" % filename) - - paths = { - filename: ('', extract_dir), - } - for base, dirs, files in os.walk(filename): - src, dst = paths[base] - for d in dirs: - paths[os.path.join(base, d)] = src + d + '/', os.path.join(dst, d) - for f in files: - target = os.path.join(dst, f) - target = progress_filter(src + f, target) - if not target: - # skip non-files - continue - ensure_directory(target) - f = os.path.join(base, f) - shutil.copyfile(f, target) - shutil.copystat(f, target) - - -def unpack_zipfile(filename, extract_dir, progress_filter=default_filter): - """Unpack zip `filename` to `extract_dir` - - Raises ``UnrecognizedFormat`` if `filename` is not a zipfile (as determined - by ``zipfile.is_zipfile()``). See ``unpack_archive()`` for an explanation - of the `progress_filter` argument. - """ - - if not zipfile.is_zipfile(filename): - raise UnrecognizedFormat("%s is not a zip file" % (filename,)) - - with ContextualZipFile(filename) as z: - for info in z.infolist(): - name = info.filename - - # don't extract absolute paths or ones with .. in them - if name.startswith('/') or '..' in name.split('/'): - continue - - target = os.path.join(extract_dir, *name.split('/')) - target = progress_filter(name, target) - if not target: - continue - if name.endswith('/'): - # directory - ensure_directory(target) - else: - # file - ensure_directory(target) - data = z.read(info.filename) - with open(target, 'wb') as f: - f.write(data) - unix_attributes = info.external_attr >> 16 - if unix_attributes: - os.chmod(target, unix_attributes) - - -def unpack_tarfile(filename, extract_dir, progress_filter=default_filter): - """Unpack tar/tar.gz/tar.bz2 `filename` to `extract_dir` - - Raises ``UnrecognizedFormat`` if `filename` is not a tarfile (as determined - by ``tarfile.open()``). See ``unpack_archive()`` for an explanation - of the `progress_filter` argument. - """ - try: - tarobj = tarfile.open(filename) - except tarfile.TarError: - raise UnrecognizedFormat( - "%s is not a compressed or uncompressed tar file" % (filename,) - ) - with contextlib.closing(tarobj): - # don't do any chowning! - tarobj.chown = lambda *args: None - for member in tarobj: - name = member.name - # don't extract absolute paths or ones with .. in them - if not name.startswith('/') and '..' not in name.split('/'): - prelim_dst = os.path.join(extract_dir, *name.split('/')) - - # resolve any links and to extract the link targets as normal - # files - while member is not None and (member.islnk() or member.issym()): - linkpath = member.linkname - if member.issym(): - base = posixpath.dirname(member.name) - linkpath = posixpath.join(base, linkpath) - linkpath = posixpath.normpath(linkpath) - member = tarobj._getmember(linkpath) - - if member is not None and (member.isfile() or member.isdir()): - final_dst = progress_filter(name, prelim_dst) - if final_dst: - if final_dst.endswith(os.sep): - final_dst = final_dst[:-1] - try: - # XXX Ugh - tarobj._extract_member(member, final_dst) - except tarfile.ExtractError: - # chown/chmod/mkfifo/mknode/makedev failed - pass - return True - - -extraction_drivers = unpack_directory, unpack_zipfile, unpack_tarfile diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/cli-32.exe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/cli-32.exe deleted file mode 100644 index b1487b78..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/cli-32.exe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/cli-64.exe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/cli-64.exe deleted file mode 100644 index 675e6bf3..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/cli-64.exe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/cli.exe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/cli.exe deleted file mode 100644 index b1487b78..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/cli.exe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__init__.py deleted file mode 100644 index efbe9411..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -__all__ = [ - 'alias', 'bdist_egg', 'bdist_rpm', 'build_ext', 'build_py', 'develop', - 'easy_install', 'egg_info', 'install', 'install_lib', 'rotate', 'saveopts', - 'sdist', 'setopt', 'test', 'install_egg_info', 'install_scripts', - 'register', 'bdist_wininst', 'upload_docs', 'upload', -] - -from distutils.command.bdist import bdist -import sys - -from setuptools.command import install_scripts - -if 'egg' not in bdist.format_commands: - bdist.format_command['egg'] = ('bdist_egg', "Python .egg file") - bdist.format_commands.append('egg') - -del bdist, sys diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index f480f768..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.pyc deleted file mode 100644 index 42101f17..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.pyc deleted file mode 100644 index 8f54b64f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc deleted file mode 100644 index f1e95948..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc deleted file mode 100644 index b43159da..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.pyc deleted file mode 100644 index 9e7d080d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.pyc deleted file mode 100644 index 88de789c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.pyc deleted file mode 100644 index 9aac041a..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.pyc deleted file mode 100644 index 345169e6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.pyc deleted file mode 100644 index 16735c57..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.pyc deleted file mode 100644 index a61a0020..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.pyc deleted file mode 100644 index 2910b8fa..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.pyc deleted file mode 100644 index 441664b6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.pyc deleted file mode 100644 index 3ef4af43..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.pyc deleted file mode 100644 index 05fc408b..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.pyc deleted file mode 100644 index eeba6590..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.pyc deleted file mode 100644 index 179b846f..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.pyc deleted file mode 100644 index 5b47b7e1..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.pyc deleted file mode 100644 index e943bee8..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.pyc deleted file mode 100644 index 1b6a6935..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.pyc deleted file mode 100644 index 0c5ad1f6..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.pyc deleted file mode 100644 index 32e814fd..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.pyc deleted file mode 100644 index 5680305d..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/alias.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/alias.py deleted file mode 100644 index 4532b1cc..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/alias.py +++ /dev/null @@ -1,80 +0,0 @@ -from distutils.errors import DistutilsOptionError - -from setuptools.extern.six.moves import map - -from setuptools.command.setopt import edit_config, option_base, config_file - - -def shquote(arg): - """Quote an argument for later parsing by shlex.split()""" - for c in '"', "'", "\\", "#": - if c in arg: - return repr(arg) - if arg.split() != [arg]: - return repr(arg) - return arg - - -class alias(option_base): - """Define a shortcut that invokes one or more commands""" - - description = "define a shortcut to invoke one or more commands" - command_consumes_arguments = True - - user_options = [ - ('remove', 'r', 'remove (unset) the alias'), - ] + option_base.user_options - - boolean_options = option_base.boolean_options + ['remove'] - - def initialize_options(self): - option_base.initialize_options(self) - self.args = None - self.remove = None - - def finalize_options(self): - option_base.finalize_options(self) - if self.remove and len(self.args) != 1: - raise DistutilsOptionError( - "Must specify exactly one argument (the alias name) when " - "using --remove" - ) - - def run(self): - aliases = self.distribution.get_option_dict('aliases') - - if not self.args: - print("Command Aliases") - print("---------------") - for alias in aliases: - print("setup.py alias", format_alias(alias, aliases)) - return - - elif len(self.args) == 1: - alias, = self.args - if self.remove: - command = None - elif alias in aliases: - print("setup.py alias", format_alias(alias, aliases)) - return - else: - print("No alias definition found for %r" % alias) - return - else: - alias = self.args[0] - command = ' '.join(map(shquote, self.args[1:])) - - edit_config(self.filename, {'aliases': {alias: command}}, self.dry_run) - - -def format_alias(name, aliases): - source, command = aliases[name] - if source == config_file('global'): - source = '--global-config ' - elif source == config_file('user'): - source = '--user-config ' - elif source == config_file('local'): - source = '' - else: - source = '--filename=%r' % source - return source + name + ' ' + command diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/bdist_egg.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/bdist_egg.py deleted file mode 100644 index 8cd9dfef..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/bdist_egg.py +++ /dev/null @@ -1,472 +0,0 @@ -"""setuptools.command.bdist_egg - -Build .egg distributions""" - -from distutils.errors import DistutilsSetupError -from distutils.dir_util import remove_tree, mkpath -from distutils import log -from types import CodeType -import sys -import os -import textwrap -import marshal - -from setuptools.extern import six - -from pkg_resources import get_build_platform, Distribution, ensure_directory -from pkg_resources import EntryPoint -from setuptools.extension import Library -from setuptools import Command - -try: - # Python 2.7 or >=3.2 - from sysconfig import get_path, get_python_version - - def _get_purelib(): - return get_path("purelib") -except ImportError: - from distutils.sysconfig import get_python_lib, get_python_version - - def _get_purelib(): - return get_python_lib(False) - - -def strip_module(filename): - if '.' in filename: - filename = os.path.splitext(filename)[0] - if filename.endswith('module'): - filename = filename[:-6] - return filename - - -def write_stub(resource, pyfile): - _stub_template = textwrap.dedent(""" - def __bootstrap__(): - global __bootstrap__, __loader__, __file__ - import sys, pkg_resources, imp - __file__ = pkg_resources.resource_filename(__name__, %r) - __loader__ = None; del __bootstrap__, __loader__ - imp.load_dynamic(__name__,__file__) - __bootstrap__() - """).lstrip() - with open(pyfile, 'w') as f: - f.write(_stub_template % resource) - - -class bdist_egg(Command): - description = "create an \"egg\" distribution" - - user_options = [ - ('bdist-dir=', 'b', - "temporary directory for creating the distribution"), - ('plat-name=', 'p', "platform name to embed in generated filenames " - "(default: %s)" % get_build_platform()), - ('exclude-source-files', None, - "remove all .py files from the generated egg"), - ('keep-temp', 'k', - "keep the pseudo-installation tree around after " + - "creating the distribution archive"), - ('dist-dir=', 'd', - "directory to put final built distributions in"), - ('skip-build', None, - "skip rebuilding everything (for testing/debugging)"), - ] - - boolean_options = [ - 'keep-temp', 'skip-build', 'exclude-source-files' - ] - - def initialize_options(self): - self.bdist_dir = None - self.plat_name = None - self.keep_temp = 0 - self.dist_dir = None - self.skip_build = 0 - self.egg_output = None - self.exclude_source_files = None - - def finalize_options(self): - ei_cmd = self.ei_cmd = self.get_finalized_command("egg_info") - self.egg_info = ei_cmd.egg_info - - if self.bdist_dir is None: - bdist_base = self.get_finalized_command('bdist').bdist_base - self.bdist_dir = os.path.join(bdist_base, 'egg') - - if self.plat_name is None: - self.plat_name = get_build_platform() - - self.set_undefined_options('bdist', ('dist_dir', 'dist_dir')) - - if self.egg_output is None: - - # Compute filename of the output egg - basename = Distribution( - None, None, ei_cmd.egg_name, ei_cmd.egg_version, - get_python_version(), - self.distribution.has_ext_modules() and self.plat_name - ).egg_name() - - self.egg_output = os.path.join(self.dist_dir, basename + '.egg') - - def do_install_data(self): - # Hack for packages that install data to install's --install-lib - self.get_finalized_command('install').install_lib = self.bdist_dir - - site_packages = os.path.normcase(os.path.realpath(_get_purelib())) - old, self.distribution.data_files = self.distribution.data_files, [] - - for item in old: - if isinstance(item, tuple) and len(item) == 2: - if os.path.isabs(item[0]): - realpath = os.path.realpath(item[0]) - normalized = os.path.normcase(realpath) - if normalized == site_packages or normalized.startswith( - site_packages + os.sep - ): - item = realpath[len(site_packages) + 1:], item[1] - # XXX else: raise ??? - self.distribution.data_files.append(item) - - try: - log.info("installing package data to %s", self.bdist_dir) - self.call_command('install_data', force=0, root=None) - finally: - self.distribution.data_files = old - - def get_outputs(self): - return [self.egg_output] - - def call_command(self, cmdname, **kw): - """Invoke reinitialized command `cmdname` with keyword args""" - for dirname in INSTALL_DIRECTORY_ATTRS: - kw.setdefault(dirname, self.bdist_dir) - kw.setdefault('skip_build', self.skip_build) - kw.setdefault('dry_run', self.dry_run) - cmd = self.reinitialize_command(cmdname, **kw) - self.run_command(cmdname) - return cmd - - def run(self): - # Generate metadata first - self.run_command("egg_info") - # We run install_lib before install_data, because some data hacks - # pull their data path from the install_lib command. - log.info("installing library code to %s", self.bdist_dir) - instcmd = self.get_finalized_command('install') - old_root = instcmd.root - instcmd.root = None - if self.distribution.has_c_libraries() and not self.skip_build: - self.run_command('build_clib') - cmd = self.call_command('install_lib', warn_dir=0) - instcmd.root = old_root - - all_outputs, ext_outputs = self.get_ext_outputs() - self.stubs = [] - to_compile = [] - for (p, ext_name) in enumerate(ext_outputs): - filename, ext = os.path.splitext(ext_name) - pyfile = os.path.join(self.bdist_dir, strip_module(filename) + - '.py') - self.stubs.append(pyfile) - log.info("creating stub loader for %s", ext_name) - if not self.dry_run: - write_stub(os.path.basename(ext_name), pyfile) - to_compile.append(pyfile) - ext_outputs[p] = ext_name.replace(os.sep, '/') - - if to_compile: - cmd.byte_compile(to_compile) - if self.distribution.data_files: - self.do_install_data() - - # Make the EGG-INFO directory - archive_root = self.bdist_dir - egg_info = os.path.join(archive_root, 'EGG-INFO') - self.mkpath(egg_info) - if self.distribution.scripts: - script_dir = os.path.join(egg_info, 'scripts') - log.info("installing scripts to %s", script_dir) - self.call_command('install_scripts', install_dir=script_dir, - no_ep=1) - - self.copy_metadata_to(egg_info) - native_libs = os.path.join(egg_info, "native_libs.txt") - if all_outputs: - log.info("writing %s", native_libs) - if not self.dry_run: - ensure_directory(native_libs) - libs_file = open(native_libs, 'wt') - libs_file.write('\n'.join(all_outputs)) - libs_file.write('\n') - libs_file.close() - elif os.path.isfile(native_libs): - log.info("removing %s", native_libs) - if not self.dry_run: - os.unlink(native_libs) - - write_safety_flag( - os.path.join(archive_root, 'EGG-INFO'), self.zip_safe() - ) - - if os.path.exists(os.path.join(self.egg_info, 'depends.txt')): - log.warn( - "WARNING: 'depends.txt' will not be used by setuptools 0.6!\n" - "Use the install_requires/extras_require setup() args instead." - ) - - if self.exclude_source_files: - self.zap_pyfiles() - - # Make the archive - make_zipfile(self.egg_output, archive_root, verbose=self.verbose, - dry_run=self.dry_run, mode=self.gen_header()) - if not self.keep_temp: - remove_tree(self.bdist_dir, dry_run=self.dry_run) - - # Add to 'Distribution.dist_files' so that the "upload" command works - getattr(self.distribution, 'dist_files', []).append( - ('bdist_egg', get_python_version(), self.egg_output)) - - def zap_pyfiles(self): - log.info("Removing .py files from temporary directory") - for base, dirs, files in walk_egg(self.bdist_dir): - for name in files: - if name.endswith('.py'): - path = os.path.join(base, name) - log.debug("Deleting %s", path) - os.unlink(path) - - def zip_safe(self): - safe = getattr(self.distribution, 'zip_safe', None) - if safe is not None: - return safe - log.warn("zip_safe flag not set; analyzing archive contents...") - return analyze_egg(self.bdist_dir, self.stubs) - - def gen_header(self): - epm = EntryPoint.parse_map(self.distribution.entry_points or '') - ep = epm.get('setuptools.installation', {}).get('eggsecutable') - if ep is None: - return 'w' # not an eggsecutable, do it the usual way. - - if not ep.attrs or ep.extras: - raise DistutilsSetupError( - "eggsecutable entry point (%r) cannot have 'extras' " - "or refer to a module" % (ep,) - ) - - pyver = sys.version[:3] - pkg = ep.module_name - full = '.'.join(ep.attrs) - base = ep.attrs[0] - basename = os.path.basename(self.egg_output) - - header = ( - "#!/bin/sh\n" - 'if [ `basename $0` = "%(basename)s" ]\n' - 'then exec python%(pyver)s -c "' - "import sys, os; sys.path.insert(0, os.path.abspath('$0')); " - "from %(pkg)s import %(base)s; sys.exit(%(full)s())" - '" "$@"\n' - 'else\n' - ' echo $0 is not the correct name for this egg file.\n' - ' echo Please rename it back to %(basename)s and try again.\n' - ' exec false\n' - 'fi\n' - ) % locals() - - if not self.dry_run: - mkpath(os.path.dirname(self.egg_output), dry_run=self.dry_run) - f = open(self.egg_output, 'w') - f.write(header) - f.close() - return 'a' - - def copy_metadata_to(self, target_dir): - "Copy metadata (egg info) to the target_dir" - # normalize the path (so that a forward-slash in egg_info will - # match using startswith below) - norm_egg_info = os.path.normpath(self.egg_info) - prefix = os.path.join(norm_egg_info, '') - for path in self.ei_cmd.filelist.files: - if path.startswith(prefix): - target = os.path.join(target_dir, path[len(prefix):]) - ensure_directory(target) - self.copy_file(path, target) - - def get_ext_outputs(self): - """Get a list of relative paths to C extensions in the output distro""" - - all_outputs = [] - ext_outputs = [] - - paths = {self.bdist_dir: ''} - for base, dirs, files in os.walk(self.bdist_dir): - for filename in files: - if os.path.splitext(filename)[1].lower() in NATIVE_EXTENSIONS: - all_outputs.append(paths[base] + filename) - for filename in dirs: - paths[os.path.join(base, filename)] = (paths[base] + - filename + '/') - - if self.distribution.has_ext_modules(): - build_cmd = self.get_finalized_command('build_ext') - for ext in build_cmd.extensions: - if isinstance(ext, Library): - continue - fullname = build_cmd.get_ext_fullname(ext.name) - filename = build_cmd.get_ext_filename(fullname) - if not os.path.basename(filename).startswith('dl-'): - if os.path.exists(os.path.join(self.bdist_dir, filename)): - ext_outputs.append(filename) - - return all_outputs, ext_outputs - - -NATIVE_EXTENSIONS = dict.fromkeys('.dll .so .dylib .pyd'.split()) - - -def walk_egg(egg_dir): - """Walk an unpacked egg's contents, skipping the metadata directory""" - walker = os.walk(egg_dir) - base, dirs, files = next(walker) - if 'EGG-INFO' in dirs: - dirs.remove('EGG-INFO') - yield base, dirs, files - for bdf in walker: - yield bdf - - -def analyze_egg(egg_dir, stubs): - # check for existing flag in EGG-INFO - for flag, fn in safety_flags.items(): - if os.path.exists(os.path.join(egg_dir, 'EGG-INFO', fn)): - return flag - if not can_scan(): - return False - safe = True - for base, dirs, files in walk_egg(egg_dir): - for name in files: - if name.endswith('.py') or name.endswith('.pyw'): - continue - elif name.endswith('.pyc') or name.endswith('.pyo'): - # always scan, even if we already know we're not safe - safe = scan_module(egg_dir, base, name, stubs) and safe - return safe - - -def write_safety_flag(egg_dir, safe): - # Write or remove zip safety flag file(s) - for flag, fn in safety_flags.items(): - fn = os.path.join(egg_dir, fn) - if os.path.exists(fn): - if safe is None or bool(safe) != flag: - os.unlink(fn) - elif safe is not None and bool(safe) == flag: - f = open(fn, 'wt') - f.write('\n') - f.close() - - -safety_flags = { - True: 'zip-safe', - False: 'not-zip-safe', -} - - -def scan_module(egg_dir, base, name, stubs): - """Check whether module possibly uses unsafe-for-zipfile stuff""" - - filename = os.path.join(base, name) - if filename[:-1] in stubs: - return True # Extension module - pkg = base[len(egg_dir) + 1:].replace(os.sep, '.') - module = pkg + (pkg and '.' or '') + os.path.splitext(name)[0] - if sys.version_info < (3, 3): - skip = 8 # skip magic & date - else: - skip = 12 # skip magic & date & file size - f = open(filename, 'rb') - f.read(skip) - code = marshal.load(f) - f.close() - safe = True - symbols = dict.fromkeys(iter_symbols(code)) - for bad in ['__file__', '__path__']: - if bad in symbols: - log.warn("%s: module references %s", module, bad) - safe = False - if 'inspect' in symbols: - for bad in [ - 'getsource', 'getabsfile', 'getsourcefile', 'getfile' - 'getsourcelines', 'findsource', 'getcomments', 'getframeinfo', - 'getinnerframes', 'getouterframes', 'stack', 'trace' - ]: - if bad in symbols: - log.warn("%s: module MAY be using inspect.%s", module, bad) - safe = False - return safe - - -def iter_symbols(code): - """Yield names and strings used by `code` and its nested code objects""" - for name in code.co_names: - yield name - for const in code.co_consts: - if isinstance(const, six.string_types): - yield const - elif isinstance(const, CodeType): - for name in iter_symbols(const): - yield name - - -def can_scan(): - if not sys.platform.startswith('java') and sys.platform != 'cli': - # CPython, PyPy, etc. - return True - log.warn("Unable to analyze compiled code on this platform.") - log.warn("Please ask the author to include a 'zip_safe'" - " setting (either True or False) in the package's setup.py") - - -# Attribute names of options for commands that might need to be convinced to -# install to the egg build directory - -INSTALL_DIRECTORY_ATTRS = [ - 'install_lib', 'install_dir', 'install_data', 'install_base' -] - - -def make_zipfile(zip_filename, base_dir, verbose=0, dry_run=0, compress=True, - mode='w'): - """Create a zip file from all the files under 'base_dir'. The output - zip file will be named 'base_dir' + ".zip". Uses either the "zipfile" - Python module (if available) or the InfoZIP "zip" utility (if installed - and found on the default search path). If neither tool is available, - raises DistutilsExecError. Returns the name of the output zip file. - """ - import zipfile - - mkpath(os.path.dirname(zip_filename), dry_run=dry_run) - log.info("creating '%s' and adding '%s' to it", zip_filename, base_dir) - - def visit(z, dirname, names): - for name in names: - path = os.path.normpath(os.path.join(dirname, name)) - if os.path.isfile(path): - p = path[len(base_dir) + 1:] - if not dry_run: - z.write(path, p) - log.debug("adding '%s'", p) - - compression = zipfile.ZIP_DEFLATED if compress else zipfile.ZIP_STORED - if not dry_run: - z = zipfile.ZipFile(zip_filename, mode, compression=compression) - for dirname, dirs, files in os.walk(base_dir): - visit(z, dirname, files) - z.close() - else: - for dirname, dirs, files in os.walk(base_dir): - visit(None, dirname, files) - return zip_filename diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/bdist_rpm.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/bdist_rpm.py deleted file mode 100644 index 70730927..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/bdist_rpm.py +++ /dev/null @@ -1,43 +0,0 @@ -import distutils.command.bdist_rpm as orig - - -class bdist_rpm(orig.bdist_rpm): - """ - Override the default bdist_rpm behavior to do the following: - - 1. Run egg_info to ensure the name and version are properly calculated. - 2. Always run 'install' using --single-version-externally-managed to - disable eggs in RPM distributions. - 3. Replace dash with underscore in the version numbers for better RPM - compatibility. - """ - - def run(self): - # ensure distro name is up-to-date - self.run_command('egg_info') - - orig.bdist_rpm.run(self) - - def _make_spec_file(self): - version = self.distribution.get_version() - rpmversion = version.replace('-', '_') - spec = orig.bdist_rpm._make_spec_file(self) - line23 = '%define version ' + version - line24 = '%define version ' + rpmversion - spec = [ - line.replace( - "Source0: %{name}-%{version}.tar", - "Source0: %{name}-%{unmangled_version}.tar" - ).replace( - "setup.py install ", - "setup.py install --single-version-externally-managed " - ).replace( - "%setup", - "%setup -n %{name}-%{unmangled_version}" - ).replace(line23, line24) - for line in spec - ] - insert_loc = spec.index(line24) + 1 - unmangled_version = "%define unmangled_version " + version - spec.insert(insert_loc, unmangled_version) - return spec diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/bdist_wininst.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/bdist_wininst.py deleted file mode 100644 index 073de97b..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/bdist_wininst.py +++ /dev/null @@ -1,21 +0,0 @@ -import distutils.command.bdist_wininst as orig - - -class bdist_wininst(orig.bdist_wininst): - def reinitialize_command(self, command, reinit_subcommands=0): - """ - Supplement reinitialize_command to work around - http://bugs.python.org/issue20819 - """ - cmd = self.distribution.reinitialize_command( - command, reinit_subcommands) - if command in ('install', 'install_lib'): - cmd.install_lib = None - return cmd - - def run(self): - self._is_running = True - try: - orig.bdist_wininst.run(self) - finally: - self._is_running = False diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/build_ext.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/build_ext.py deleted file mode 100644 index 36f53f0d..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/build_ext.py +++ /dev/null @@ -1,328 +0,0 @@ -import os -import sys -import itertools -import imp -from distutils.command.build_ext import build_ext as _du_build_ext -from distutils.file_util import copy_file -from distutils.ccompiler import new_compiler -from distutils.sysconfig import customize_compiler, get_config_var -from distutils.errors import DistutilsError -from distutils import log - -from setuptools.extension import Library -from setuptools.extern import six - -try: - # Attempt to use Cython for building extensions, if available - from Cython.Distutils.build_ext import build_ext as _build_ext -except ImportError: - _build_ext = _du_build_ext - -# make sure _config_vars is initialized -get_config_var("LDSHARED") -from distutils.sysconfig import _config_vars as _CONFIG_VARS - - -def _customize_compiler_for_shlib(compiler): - if sys.platform == "darwin": - # building .dylib requires additional compiler flags on OSX; here we - # temporarily substitute the pyconfig.h variables so that distutils' - # 'customize_compiler' uses them before we build the shared libraries. - tmp = _CONFIG_VARS.copy() - try: - # XXX Help! I don't have any idea whether these are right... - _CONFIG_VARS['LDSHARED'] = ( - "gcc -Wl,-x -dynamiclib -undefined dynamic_lookup") - _CONFIG_VARS['CCSHARED'] = " -dynamiclib" - _CONFIG_VARS['SO'] = ".dylib" - customize_compiler(compiler) - finally: - _CONFIG_VARS.clear() - _CONFIG_VARS.update(tmp) - else: - customize_compiler(compiler) - - -have_rtld = False -use_stubs = False -libtype = 'shared' - -if sys.platform == "darwin": - use_stubs = True -elif os.name != 'nt': - try: - import dl - use_stubs = have_rtld = hasattr(dl, 'RTLD_NOW') - except ImportError: - pass - -if_dl = lambda s: s if have_rtld else '' - - -def get_abi3_suffix(): - """Return the file extension for an abi3-compliant Extension()""" - for suffix, _, _ in (s for s in imp.get_suffixes() if s[2] == imp.C_EXTENSION): - if '.abi3' in suffix: # Unix - return suffix - elif suffix == '.pyd': # Windows - return suffix - - -class build_ext(_build_ext): - def run(self): - """Build extensions in build directory, then copy if --inplace""" - old_inplace, self.inplace = self.inplace, 0 - _build_ext.run(self) - self.inplace = old_inplace - if old_inplace: - self.copy_extensions_to_source() - - def copy_extensions_to_source(self): - build_py = self.get_finalized_command('build_py') - for ext in self.extensions: - fullname = self.get_ext_fullname(ext.name) - filename = self.get_ext_filename(fullname) - modpath = fullname.split('.') - package = '.'.join(modpath[:-1]) - package_dir = build_py.get_package_dir(package) - dest_filename = os.path.join(package_dir, - os.path.basename(filename)) - src_filename = os.path.join(self.build_lib, filename) - - # Always copy, even if source is older than destination, to ensure - # that the right extensions for the current Python/platform are - # used. - copy_file( - src_filename, dest_filename, verbose=self.verbose, - dry_run=self.dry_run - ) - if ext._needs_stub: - self.write_stub(package_dir or os.curdir, ext, True) - - def get_ext_filename(self, fullname): - filename = _build_ext.get_ext_filename(self, fullname) - if fullname in self.ext_map: - ext = self.ext_map[fullname] - use_abi3 = ( - six.PY3 - and getattr(ext, 'py_limited_api') - and get_abi3_suffix() - ) - if use_abi3: - so_ext = _get_config_var_837('EXT_SUFFIX') - filename = filename[:-len(so_ext)] - filename = filename + get_abi3_suffix() - if isinstance(ext, Library): - fn, ext = os.path.splitext(filename) - return self.shlib_compiler.library_filename(fn, libtype) - elif use_stubs and ext._links_to_dynamic: - d, fn = os.path.split(filename) - return os.path.join(d, 'dl-' + fn) - return filename - - def initialize_options(self): - _build_ext.initialize_options(self) - self.shlib_compiler = None - self.shlibs = [] - self.ext_map = {} - - def finalize_options(self): - _build_ext.finalize_options(self) - self.extensions = self.extensions or [] - self.check_extensions_list(self.extensions) - self.shlibs = [ext for ext in self.extensions - if isinstance(ext, Library)] - if self.shlibs: - self.setup_shlib_compiler() - for ext in self.extensions: - ext._full_name = self.get_ext_fullname(ext.name) - for ext in self.extensions: - fullname = ext._full_name - self.ext_map[fullname] = ext - - # distutils 3.1 will also ask for module names - # XXX what to do with conflicts? - self.ext_map[fullname.split('.')[-1]] = ext - - ltd = self.shlibs and self.links_to_dynamic(ext) or False - ns = ltd and use_stubs and not isinstance(ext, Library) - ext._links_to_dynamic = ltd - ext._needs_stub = ns - filename = ext._file_name = self.get_ext_filename(fullname) - libdir = os.path.dirname(os.path.join(self.build_lib, filename)) - if ltd and libdir not in ext.library_dirs: - ext.library_dirs.append(libdir) - if ltd and use_stubs and os.curdir not in ext.runtime_library_dirs: - ext.runtime_library_dirs.append(os.curdir) - - def setup_shlib_compiler(self): - compiler = self.shlib_compiler = new_compiler( - compiler=self.compiler, dry_run=self.dry_run, force=self.force - ) - _customize_compiler_for_shlib(compiler) - - if self.include_dirs is not None: - compiler.set_include_dirs(self.include_dirs) - if self.define is not None: - # 'define' option is a list of (name,value) tuples - for (name, value) in self.define: - compiler.define_macro(name, value) - if self.undef is not None: - for macro in self.undef: - compiler.undefine_macro(macro) - if self.libraries is not None: - compiler.set_libraries(self.libraries) - if self.library_dirs is not None: - compiler.set_library_dirs(self.library_dirs) - if self.rpath is not None: - compiler.set_runtime_library_dirs(self.rpath) - if self.link_objects is not None: - compiler.set_link_objects(self.link_objects) - - # hack so distutils' build_extension() builds a library instead - compiler.link_shared_object = link_shared_object.__get__(compiler) - - def get_export_symbols(self, ext): - if isinstance(ext, Library): - return ext.export_symbols - return _build_ext.get_export_symbols(self, ext) - - def build_extension(self, ext): - ext._convert_pyx_sources_to_lang() - _compiler = self.compiler - try: - if isinstance(ext, Library): - self.compiler = self.shlib_compiler - _build_ext.build_extension(self, ext) - if ext._needs_stub: - cmd = self.get_finalized_command('build_py').build_lib - self.write_stub(cmd, ext) - finally: - self.compiler = _compiler - - def links_to_dynamic(self, ext): - """Return true if 'ext' links to a dynamic lib in the same package""" - # XXX this should check to ensure the lib is actually being built - # XXX as dynamic, and not just using a locally-found version or a - # XXX static-compiled version - libnames = dict.fromkeys([lib._full_name for lib in self.shlibs]) - pkg = '.'.join(ext._full_name.split('.')[:-1] + ['']) - return any(pkg + libname in libnames for libname in ext.libraries) - - def get_outputs(self): - return _build_ext.get_outputs(self) + self.__get_stubs_outputs() - - def __get_stubs_outputs(self): - # assemble the base name for each extension that needs a stub - ns_ext_bases = ( - os.path.join(self.build_lib, *ext._full_name.split('.')) - for ext in self.extensions - if ext._needs_stub - ) - # pair each base with the extension - pairs = itertools.product(ns_ext_bases, self.__get_output_extensions()) - return list(base + fnext for base, fnext in pairs) - - def __get_output_extensions(self): - yield '.py' - yield '.pyc' - if self.get_finalized_command('build_py').optimize: - yield '.pyo' - - def write_stub(self, output_dir, ext, compile=False): - log.info("writing stub loader for %s to %s", ext._full_name, - output_dir) - stub_file = (os.path.join(output_dir, *ext._full_name.split('.')) + - '.py') - if compile and os.path.exists(stub_file): - raise DistutilsError(stub_file + " already exists! Please delete.") - if not self.dry_run: - f = open(stub_file, 'w') - f.write( - '\n'.join([ - "def __bootstrap__():", - " global __bootstrap__, __file__, __loader__", - " import sys, os, pkg_resources, imp" + if_dl(", dl"), - " __file__ = pkg_resources.resource_filename" - "(__name__,%r)" - % os.path.basename(ext._file_name), - " del __bootstrap__", - " if '__loader__' in globals():", - " del __loader__", - if_dl(" old_flags = sys.getdlopenflags()"), - " old_dir = os.getcwd()", - " try:", - " os.chdir(os.path.dirname(__file__))", - if_dl(" sys.setdlopenflags(dl.RTLD_NOW)"), - " imp.load_dynamic(__name__,__file__)", - " finally:", - if_dl(" sys.setdlopenflags(old_flags)"), - " os.chdir(old_dir)", - "__bootstrap__()", - "" # terminal \n - ]) - ) - f.close() - if compile: - from distutils.util import byte_compile - - byte_compile([stub_file], optimize=0, - force=True, dry_run=self.dry_run) - optimize = self.get_finalized_command('install_lib').optimize - if optimize > 0: - byte_compile([stub_file], optimize=optimize, - force=True, dry_run=self.dry_run) - if os.path.exists(stub_file) and not self.dry_run: - os.unlink(stub_file) - - -if use_stubs or os.name == 'nt': - # Build shared libraries - # - def link_shared_object( - self, objects, output_libname, output_dir=None, libraries=None, - library_dirs=None, runtime_library_dirs=None, export_symbols=None, - debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, - target_lang=None): - self.link( - self.SHARED_LIBRARY, objects, output_libname, - output_dir, libraries, library_dirs, runtime_library_dirs, - export_symbols, debug, extra_preargs, extra_postargs, - build_temp, target_lang - ) -else: - # Build static libraries everywhere else - libtype = 'static' - - def link_shared_object( - self, objects, output_libname, output_dir=None, libraries=None, - library_dirs=None, runtime_library_dirs=None, export_symbols=None, - debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, - target_lang=None): - # XXX we need to either disallow these attrs on Library instances, - # or warn/abort here if set, or something... - # libraries=None, library_dirs=None, runtime_library_dirs=None, - # export_symbols=None, extra_preargs=None, extra_postargs=None, - # build_temp=None - - assert output_dir is None # distutils build_ext doesn't pass this - output_dir, filename = os.path.split(output_libname) - basename, ext = os.path.splitext(filename) - if self.library_filename("x").startswith('lib'): - # strip 'lib' prefix; this is kludgy if some platform uses - # a different prefix - basename = basename[3:] - - self.create_static_lib( - objects, basename, output_dir, debug, target_lang - ) - - -def _get_config_var_837(name): - """ - In https://github.com/pypa/setuptools/pull/837, we discovered - Python 3.3.0 exposes the extension suffix under the name 'SO'. - """ - if sys.version_info < (3, 3, 1): - name = 'SO' - return get_config_var(name) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/build_py.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/build_py.py deleted file mode 100644 index 289e6fb8..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/build_py.py +++ /dev/null @@ -1,270 +0,0 @@ -from glob import glob -from distutils.util import convert_path -import distutils.command.build_py as orig -import os -import fnmatch -import textwrap -import io -import distutils.errors -import itertools - -from setuptools.extern import six -from setuptools.extern.six.moves import map, filter, filterfalse - -try: - from setuptools.lib2to3_ex import Mixin2to3 -except ImportError: - - class Mixin2to3: - def run_2to3(self, files, doctests=True): - "do nothing" - - -class build_py(orig.build_py, Mixin2to3): - """Enhanced 'build_py' command that includes data files with packages - - The data files are specified via a 'package_data' argument to 'setup()'. - See 'setuptools.dist.Distribution' for more details. - - Also, this version of the 'build_py' command allows you to specify both - 'py_modules' and 'packages' in the same setup operation. - """ - - def finalize_options(self): - orig.build_py.finalize_options(self) - self.package_data = self.distribution.package_data - self.exclude_package_data = (self.distribution.exclude_package_data or - {}) - if 'data_files' in self.__dict__: - del self.__dict__['data_files'] - self.__updated_files = [] - self.__doctests_2to3 = [] - - def run(self): - """Build modules, packages, and copy data files to build directory""" - if not self.py_modules and not self.packages: - return - - if self.py_modules: - self.build_modules() - - if self.packages: - self.build_packages() - self.build_package_data() - - self.run_2to3(self.__updated_files, False) - self.run_2to3(self.__updated_files, True) - self.run_2to3(self.__doctests_2to3, True) - - # Only compile actual .py files, using our base class' idea of what our - # output files are. - self.byte_compile(orig.build_py.get_outputs(self, include_bytecode=0)) - - def __getattr__(self, attr): - "lazily compute data files" - if attr == 'data_files': - self.data_files = self._get_data_files() - return self.data_files - return orig.build_py.__getattr__(self, attr) - - def build_module(self, module, module_file, package): - if six.PY2 and isinstance(package, six.string_types): - # avoid errors on Python 2 when unicode is passed (#190) - package = package.split('.') - outfile, copied = orig.build_py.build_module(self, module, module_file, - package) - if copied: - self.__updated_files.append(outfile) - return outfile, copied - - def _get_data_files(self): - """Generate list of '(package,src_dir,build_dir,filenames)' tuples""" - self.analyze_manifest() - return list(map(self._get_pkg_data_files, self.packages or ())) - - def _get_pkg_data_files(self, package): - # Locate package source directory - src_dir = self.get_package_dir(package) - - # Compute package build directory - build_dir = os.path.join(*([self.build_lib] + package.split('.'))) - - # Strip directory from globbed filenames - filenames = [ - os.path.relpath(file, src_dir) - for file in self.find_data_files(package, src_dir) - ] - return package, src_dir, build_dir, filenames - - def find_data_files(self, package, src_dir): - """Return filenames for package's data files in 'src_dir'""" - patterns = self._get_platform_patterns( - self.package_data, - package, - src_dir, - ) - globs_expanded = map(glob, patterns) - # flatten the expanded globs into an iterable of matches - globs_matches = itertools.chain.from_iterable(globs_expanded) - glob_files = filter(os.path.isfile, globs_matches) - files = itertools.chain( - self.manifest_files.get(package, []), - glob_files, - ) - return self.exclude_data_files(package, src_dir, files) - - def build_package_data(self): - """Copy data files into build directory""" - for package, src_dir, build_dir, filenames in self.data_files: - for filename in filenames: - target = os.path.join(build_dir, filename) - self.mkpath(os.path.dirname(target)) - srcfile = os.path.join(src_dir, filename) - outf, copied = self.copy_file(srcfile, target) - srcfile = os.path.abspath(srcfile) - if (copied and - srcfile in self.distribution.convert_2to3_doctests): - self.__doctests_2to3.append(outf) - - def analyze_manifest(self): - self.manifest_files = mf = {} - if not self.distribution.include_package_data: - return - src_dirs = {} - for package in self.packages or (): - # Locate package source directory - src_dirs[assert_relative(self.get_package_dir(package))] = package - - self.run_command('egg_info') - ei_cmd = self.get_finalized_command('egg_info') - for path in ei_cmd.filelist.files: - d, f = os.path.split(assert_relative(path)) - prev = None - oldf = f - while d and d != prev and d not in src_dirs: - prev = d - d, df = os.path.split(d) - f = os.path.join(df, f) - if d in src_dirs: - if path.endswith('.py') and f == oldf: - continue # it's a module, not data - mf.setdefault(src_dirs[d], []).append(path) - - def get_data_files(self): - pass # Lazily compute data files in _get_data_files() function. - - def check_package(self, package, package_dir): - """Check namespace packages' __init__ for declare_namespace""" - try: - return self.packages_checked[package] - except KeyError: - pass - - init_py = orig.build_py.check_package(self, package, package_dir) - self.packages_checked[package] = init_py - - if not init_py or not self.distribution.namespace_packages: - return init_py - - for pkg in self.distribution.namespace_packages: - if pkg == package or pkg.startswith(package + '.'): - break - else: - return init_py - - with io.open(init_py, 'rb') as f: - contents = f.read() - if b'declare_namespace' not in contents: - raise distutils.errors.DistutilsError( - "Namespace package problem: %s is a namespace package, but " - "its\n__init__.py does not call declare_namespace()! Please " - 'fix it.\n(See the setuptools manual under ' - '"Namespace Packages" for details.)\n"' % (package,) - ) - return init_py - - def initialize_options(self): - self.packages_checked = {} - orig.build_py.initialize_options(self) - - def get_package_dir(self, package): - res = orig.build_py.get_package_dir(self, package) - if self.distribution.src_root is not None: - return os.path.join(self.distribution.src_root, res) - return res - - def exclude_data_files(self, package, src_dir, files): - """Filter filenames for package's data files in 'src_dir'""" - files = list(files) - patterns = self._get_platform_patterns( - self.exclude_package_data, - package, - src_dir, - ) - match_groups = ( - fnmatch.filter(files, pattern) - for pattern in patterns - ) - # flatten the groups of matches into an iterable of matches - matches = itertools.chain.from_iterable(match_groups) - bad = set(matches) - keepers = ( - fn - for fn in files - if fn not in bad - ) - # ditch dupes - return list(_unique_everseen(keepers)) - - @staticmethod - def _get_platform_patterns(spec, package, src_dir): - """ - yield platfrom-specific path patterns (suitable for glob - or fn_match) from a glob-based spec (such as - self.package_data or self.exclude_package_data) - matching package in src_dir. - """ - raw_patterns = itertools.chain( - spec.get('', []), - spec.get(package, []), - ) - return ( - # Each pattern has to be converted to a platform-specific path - os.path.join(src_dir, convert_path(pattern)) - for pattern in raw_patterns - ) - - -# from Python docs -def _unique_everseen(iterable, key=None): - "List unique elements, preserving order. Remember all elements ever seen." - # unique_everseen('AAAABBBCCDAABBB') --> A B C D - # unique_everseen('ABBCcAD', str.lower) --> A B C D - seen = set() - seen_add = seen.add - if key is None: - for element in filterfalse(seen.__contains__, iterable): - seen_add(element) - yield element - else: - for element in iterable: - k = key(element) - if k not in seen: - seen_add(k) - yield element - - -def assert_relative(path): - if not os.path.isabs(path): - return path - from distutils.errors import DistutilsSetupError - - msg = textwrap.dedent(""" - Error: setup script specifies an absolute path: - - %s - - setup() arguments must *always* be /-separated paths relative to the - setup.py directory, *never* absolute paths. - """).lstrip() % path - raise DistutilsSetupError(msg) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/develop.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/develop.py deleted file mode 100644 index 3eb86120..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/develop.py +++ /dev/null @@ -1,197 +0,0 @@ -from distutils.util import convert_path -from distutils import log -from distutils.errors import DistutilsError, DistutilsOptionError -import os -import glob -import io - -from setuptools.extern import six - -from pkg_resources import Distribution, PathMetadata, normalize_path -from setuptools.command.easy_install import easy_install -import setuptools - - -class develop(easy_install): - """Set up package for development""" - - description = "install package in 'development mode'" - - user_options = easy_install.user_options + [ - ("uninstall", "u", "Uninstall this source package"), - ("egg-path=", None, "Set the path to be used in the .egg-link file"), - ] - - boolean_options = easy_install.boolean_options + ['uninstall'] - - command_consumes_arguments = False # override base - - def run(self): - if self.uninstall: - self.multi_version = True - self.uninstall_link() - else: - self.install_for_development() - self.warn_deprecated_options() - - def initialize_options(self): - self.uninstall = None - self.egg_path = None - easy_install.initialize_options(self) - self.setup_path = None - self.always_copy_from = '.' # always copy eggs installed in curdir - - def finalize_options(self): - ei = self.get_finalized_command("egg_info") - if ei.broken_egg_info: - template = "Please rename %r to %r before using 'develop'" - args = ei.egg_info, ei.broken_egg_info - raise DistutilsError(template % args) - self.args = [ei.egg_name] - - easy_install.finalize_options(self) - self.expand_basedirs() - self.expand_dirs() - # pick up setup-dir .egg files only: no .egg-info - self.package_index.scan(glob.glob('*.egg')) - - egg_link_fn = ei.egg_name + '.egg-link' - self.egg_link = os.path.join(self.install_dir, egg_link_fn) - self.egg_base = ei.egg_base - if self.egg_path is None: - self.egg_path = os.path.abspath(ei.egg_base) - - target = normalize_path(self.egg_base) - egg_path = normalize_path(os.path.join(self.install_dir, - self.egg_path)) - if egg_path != target: - raise DistutilsOptionError( - "--egg-path must be a relative path from the install" - " directory to " + target - ) - - # Make a distribution for the package's source - self.dist = Distribution( - target, - PathMetadata(target, os.path.abspath(ei.egg_info)), - project_name=ei.egg_name - ) - - p = self.egg_base.replace(os.sep, '/') - if p != os.curdir: - p = '../' * (p.count('/') + 1) - self.setup_path = p - p = normalize_path(os.path.join(self.install_dir, self.egg_path, p)) - if p != normalize_path(os.curdir): - raise DistutilsOptionError( - "Can't get a consistent path to setup script from" - " installation directory", p, normalize_path(os.curdir)) - - def install_for_development(self): - if six.PY3 and getattr(self.distribution, 'use_2to3', False): - # If we run 2to3 we can not do this inplace: - - # Ensure metadata is up-to-date - self.reinitialize_command('build_py', inplace=0) - self.run_command('build_py') - bpy_cmd = self.get_finalized_command("build_py") - build_path = normalize_path(bpy_cmd.build_lib) - - # Build extensions - self.reinitialize_command('egg_info', egg_base=build_path) - self.run_command('egg_info') - - self.reinitialize_command('build_ext', inplace=0) - self.run_command('build_ext') - - # Fixup egg-link and easy-install.pth - ei_cmd = self.get_finalized_command("egg_info") - self.egg_path = build_path - self.dist.location = build_path - # XXX - self.dist._provider = PathMetadata(build_path, ei_cmd.egg_info) - else: - # Without 2to3 inplace works fine: - self.run_command('egg_info') - - # Build extensions in-place - self.reinitialize_command('build_ext', inplace=1) - self.run_command('build_ext') - - self.install_site_py() # ensure that target dir is site-safe - if setuptools.bootstrap_install_from: - self.easy_install(setuptools.bootstrap_install_from) - setuptools.bootstrap_install_from = None - - # create an .egg-link in the installation dir, pointing to our egg - log.info("Creating %s (link to %s)", self.egg_link, self.egg_base) - if not self.dry_run: - with open(self.egg_link, "w") as f: - f.write(self.egg_path + "\n" + self.setup_path) - # postprocess the installed distro, fixing up .pth, installing scripts, - # and handling requirements - self.process_distribution(None, self.dist, not self.no_deps) - - def uninstall_link(self): - if os.path.exists(self.egg_link): - log.info("Removing %s (link to %s)", self.egg_link, self.egg_base) - egg_link_file = open(self.egg_link) - contents = [line.rstrip() for line in egg_link_file] - egg_link_file.close() - if contents not in ([self.egg_path], - [self.egg_path, self.setup_path]): - log.warn("Link points to %s: uninstall aborted", contents) - return - if not self.dry_run: - os.unlink(self.egg_link) - if not self.dry_run: - self.update_pth(self.dist) # remove any .pth link to us - if self.distribution.scripts: - # XXX should also check for entry point scripts! - log.warn("Note: you must uninstall or replace scripts manually!") - - def install_egg_scripts(self, dist): - if dist is not self.dist: - # Installing a dependency, so fall back to normal behavior - return easy_install.install_egg_scripts(self, dist) - - # create wrapper scripts in the script dir, pointing to dist.scripts - - # new-style... - self.install_wrapper_scripts(dist) - - # ...and old-style - for script_name in self.distribution.scripts or []: - script_path = os.path.abspath(convert_path(script_name)) - script_name = os.path.basename(script_path) - with io.open(script_path) as strm: - script_text = strm.read() - self.install_script(dist, script_name, script_text, script_path) - - def install_wrapper_scripts(self, dist): - dist = VersionlessRequirement(dist) - return easy_install.install_wrapper_scripts(self, dist) - - -class VersionlessRequirement(object): - """ - Adapt a pkg_resources.Distribution to simply return the project - name as the 'requirement' so that scripts will work across - multiple versions. - - >>> dist = Distribution(project_name='foo', version='1.0') - >>> str(dist.as_requirement()) - 'foo==1.0' - >>> adapted_dist = VersionlessRequirement(dist) - >>> str(adapted_dist.as_requirement()) - 'foo' - """ - - def __init__(self, dist): - self.__dist = dist - - def __getattr__(self, name): - return getattr(self.__dist, name) - - def as_requirement(self): - return self.project_name diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/easy_install.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/easy_install.py deleted file mode 100644 index 03dd6768..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/easy_install.py +++ /dev/null @@ -1,2287 +0,0 @@ -#!/usr/bin/env python -""" -Easy Install ------------- - -A tool for doing automatic download/extract/build of distutils-based Python -packages. For detailed documentation, see the accompanying EasyInstall.txt -file, or visit the `EasyInstall home page`__. - -__ https://setuptools.readthedocs.io/en/latest/easy_install.html - -""" - -from glob import glob -from distutils.util import get_platform -from distutils.util import convert_path, subst_vars -from distutils.errors import ( - DistutilsArgError, DistutilsOptionError, - DistutilsError, DistutilsPlatformError, -) -from distutils.command.install import INSTALL_SCHEMES, SCHEME_KEYS -from distutils import log, dir_util -from distutils.command.build_scripts import first_line_re -from distutils.spawn import find_executable -import sys -import os -import zipimport -import shutil -import tempfile -import zipfile -import re -import stat -import random -import textwrap -import warnings -import site -import struct -import contextlib -import subprocess -import shlex -import io - -from setuptools.extern import six -from setuptools.extern.six.moves import configparser, map - -from setuptools import Command -from setuptools.sandbox import run_setup -from setuptools.py31compat import get_path, get_config_vars -from setuptools.command import setopt -from setuptools.archive_util import unpack_archive -from setuptools.package_index import ( - PackageIndex, parse_requirement_arg, URL_SCHEME, -) -from setuptools.command import bdist_egg, egg_info -from pkg_resources import ( - yield_lines, normalize_path, resource_string, ensure_directory, - get_distribution, find_distributions, Environment, Requirement, - Distribution, PathMetadata, EggMetadata, WorkingSet, DistributionNotFound, - VersionConflict, DEVELOP_DIST, -) -import pkg_resources - -# Turn on PEP440Warnings -warnings.filterwarnings("default", category=pkg_resources.PEP440Warning) - -__all__ = [ - 'samefile', 'easy_install', 'PthDistributions', 'extract_wininst_cfg', - 'main', 'get_exe_prefixes', -] - - -def is_64bit(): - return struct.calcsize("P") == 8 - - -def samefile(p1, p2): - """ - Determine if two paths reference the same file. - - Augments os.path.samefile to work on Windows and - suppresses errors if the path doesn't exist. - """ - both_exist = os.path.exists(p1) and os.path.exists(p2) - use_samefile = hasattr(os.path, 'samefile') and both_exist - if use_samefile: - return os.path.samefile(p1, p2) - norm_p1 = os.path.normpath(os.path.normcase(p1)) - norm_p2 = os.path.normpath(os.path.normcase(p2)) - return norm_p1 == norm_p2 - - -if six.PY2: - - def _to_ascii(s): - return s - - def isascii(s): - try: - six.text_type(s, 'ascii') - return True - except UnicodeError: - return False -else: - - def _to_ascii(s): - return s.encode('ascii') - - def isascii(s): - try: - s.encode('ascii') - return True - except UnicodeError: - return False - - -_one_liner = lambda text: textwrap.dedent(text).strip().replace('\n', '; ') - - -class easy_install(Command): - """Manage a download/build/install process""" - description = "Find/get/install Python packages" - command_consumes_arguments = True - - user_options = [ - ('prefix=', None, "installation prefix"), - ("zip-ok", "z", "install package as a zipfile"), - ("multi-version", "m", "make apps have to require() a version"), - ("upgrade", "U", "force upgrade (searches PyPI for latest versions)"), - ("install-dir=", "d", "install package to DIR"), - ("script-dir=", "s", "install scripts to DIR"), - ("exclude-scripts", "x", "Don't install scripts"), - ("always-copy", "a", "Copy all needed packages to install dir"), - ("index-url=", "i", "base URL of Python Package Index"), - ("find-links=", "f", "additional URL(s) to search for packages"), - ("build-directory=", "b", - "download/extract/build in DIR; keep the results"), - ('optimize=', 'O', - "also compile with optimization: -O1 for \"python -O\", " - "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"), - ('record=', None, - "filename in which to record list of installed files"), - ('always-unzip', 'Z', "don't install as a zipfile, no matter what"), - ('site-dirs=', 'S', "list of directories where .pth files work"), - ('editable', 'e', "Install specified packages in editable form"), - ('no-deps', 'N', "don't install dependencies"), - ('allow-hosts=', 'H', "pattern(s) that hostnames must match"), - ('local-snapshots-ok', 'l', - "allow building eggs from local checkouts"), - ('version', None, "print version information and exit"), - ('no-find-links', None, - "Don't load find-links defined in packages being installed") - ] - boolean_options = [ - 'zip-ok', 'multi-version', 'exclude-scripts', 'upgrade', 'always-copy', - 'editable', - 'no-deps', 'local-snapshots-ok', 'version' - ] - - if site.ENABLE_USER_SITE: - help_msg = "install in user site-package '%s'" % site.USER_SITE - user_options.append(('user', None, help_msg)) - boolean_options.append('user') - - negative_opt = {'always-unzip': 'zip-ok'} - create_index = PackageIndex - - def initialize_options(self): - # the --user option seems to be an opt-in one, - # so the default should be False. - self.user = 0 - self.zip_ok = self.local_snapshots_ok = None - self.install_dir = self.script_dir = self.exclude_scripts = None - self.index_url = None - self.find_links = None - self.build_directory = None - self.args = None - self.optimize = self.record = None - self.upgrade = self.always_copy = self.multi_version = None - self.editable = self.no_deps = self.allow_hosts = None - self.root = self.prefix = self.no_report = None - self.version = None - self.install_purelib = None # for pure module distributions - self.install_platlib = None # non-pure (dists w/ extensions) - self.install_headers = None # for C/C++ headers - self.install_lib = None # set to either purelib or platlib - self.install_scripts = None - self.install_data = None - self.install_base = None - self.install_platbase = None - if site.ENABLE_USER_SITE: - self.install_userbase = site.USER_BASE - self.install_usersite = site.USER_SITE - else: - self.install_userbase = None - self.install_usersite = None - self.no_find_links = None - - # Options not specifiable via command line - self.package_index = None - self.pth_file = self.always_copy_from = None - self.site_dirs = None - self.installed_projects = {} - self.sitepy_installed = False - # Always read easy_install options, even if we are subclassed, or have - # an independent instance created. This ensures that defaults will - # always come from the standard configuration file(s)' "easy_install" - # section, even if this is a "develop" or "install" command, or some - # other embedding. - self._dry_run = None - self.verbose = self.distribution.verbose - self.distribution._set_command_options( - self, self.distribution.get_option_dict('easy_install') - ) - - def delete_blockers(self, blockers): - extant_blockers = ( - filename for filename in blockers - if os.path.exists(filename) or os.path.islink(filename) - ) - list(map(self._delete_path, extant_blockers)) - - def _delete_path(self, path): - log.info("Deleting %s", path) - if self.dry_run: - return - - is_tree = os.path.isdir(path) and not os.path.islink(path) - remover = rmtree if is_tree else os.unlink - remover(path) - - @staticmethod - def _render_version(): - """ - Render the Setuptools version and installation details, then exit. - """ - ver = sys.version[:3] - dist = get_distribution('setuptools') - tmpl = 'setuptools {dist.version} from {dist.location} (Python {ver})' - print(tmpl.format(**locals())) - raise SystemExit() - - def finalize_options(self): - self.version and self._render_version() - - py_version = sys.version.split()[0] - prefix, exec_prefix = get_config_vars('prefix', 'exec_prefix') - - self.config_vars = { - 'dist_name': self.distribution.get_name(), - 'dist_version': self.distribution.get_version(), - 'dist_fullname': self.distribution.get_fullname(), - 'py_version': py_version, - 'py_version_short': py_version[0:3], - 'py_version_nodot': py_version[0] + py_version[2], - 'sys_prefix': prefix, - 'prefix': prefix, - 'sys_exec_prefix': exec_prefix, - 'exec_prefix': exec_prefix, - # Only python 3.2+ has abiflags - 'abiflags': getattr(sys, 'abiflags', ''), - } - - if site.ENABLE_USER_SITE: - self.config_vars['userbase'] = self.install_userbase - self.config_vars['usersite'] = self.install_usersite - - self._fix_install_dir_for_user_site() - - self.expand_basedirs() - self.expand_dirs() - - self._expand( - 'install_dir', 'script_dir', 'build_directory', - 'site_dirs', - ) - # If a non-default installation directory was specified, default the - # script directory to match it. - if self.script_dir is None: - self.script_dir = self.install_dir - - if self.no_find_links is None: - self.no_find_links = False - - # Let install_dir get set by install_lib command, which in turn - # gets its info from the install command, and takes into account - # --prefix and --home and all that other crud. - self.set_undefined_options( - 'install_lib', ('install_dir', 'install_dir') - ) - # Likewise, set default script_dir from 'install_scripts.install_dir' - self.set_undefined_options( - 'install_scripts', ('install_dir', 'script_dir') - ) - - if self.user and self.install_purelib: - self.install_dir = self.install_purelib - self.script_dir = self.install_scripts - # default --record from the install command - self.set_undefined_options('install', ('record', 'record')) - # Should this be moved to the if statement below? It's not used - # elsewhere - normpath = map(normalize_path, sys.path) - self.all_site_dirs = get_site_dirs() - if self.site_dirs is not None: - site_dirs = [ - os.path.expanduser(s.strip()) for s in - self.site_dirs.split(',') - ] - for d in site_dirs: - if not os.path.isdir(d): - log.warn("%s (in --site-dirs) does not exist", d) - elif normalize_path(d) not in normpath: - raise DistutilsOptionError( - d + " (in --site-dirs) is not on sys.path" - ) - else: - self.all_site_dirs.append(normalize_path(d)) - if not self.editable: - self.check_site_dir() - self.index_url = self.index_url or "https://pypi.python.org/simple" - self.shadow_path = self.all_site_dirs[:] - for path_item in self.install_dir, normalize_path(self.script_dir): - if path_item not in self.shadow_path: - self.shadow_path.insert(0, path_item) - - if self.allow_hosts is not None: - hosts = [s.strip() for s in self.allow_hosts.split(',')] - else: - hosts = ['*'] - if self.package_index is None: - self.package_index = self.create_index( - self.index_url, search_path=self.shadow_path, hosts=hosts, - ) - self.local_index = Environment(self.shadow_path + sys.path) - - if self.find_links is not None: - if isinstance(self.find_links, six.string_types): - self.find_links = self.find_links.split() - else: - self.find_links = [] - if self.local_snapshots_ok: - self.package_index.scan_egg_links(self.shadow_path + sys.path) - if not self.no_find_links: - self.package_index.add_find_links(self.find_links) - self.set_undefined_options('install_lib', ('optimize', 'optimize')) - if not isinstance(self.optimize, int): - try: - self.optimize = int(self.optimize) - if not (0 <= self.optimize <= 2): - raise ValueError - except ValueError: - raise DistutilsOptionError("--optimize must be 0, 1, or 2") - - if self.editable and not self.build_directory: - raise DistutilsArgError( - "Must specify a build directory (-b) when using --editable" - ) - if not self.args: - raise DistutilsArgError( - "No urls, filenames, or requirements specified (see --help)") - - self.outputs = [] - - def _fix_install_dir_for_user_site(self): - """ - Fix the install_dir if "--user" was used. - """ - if not self.user or not site.ENABLE_USER_SITE: - return - - self.create_home_path() - if self.install_userbase is None: - msg = "User base directory is not specified" - raise DistutilsPlatformError(msg) - self.install_base = self.install_platbase = self.install_userbase - scheme_name = os.name.replace('posix', 'unix') + '_user' - self.select_scheme(scheme_name) - - def _expand_attrs(self, attrs): - for attr in attrs: - val = getattr(self, attr) - if val is not None: - if os.name == 'posix' or os.name == 'nt': - val = os.path.expanduser(val) - val = subst_vars(val, self.config_vars) - setattr(self, attr, val) - - def expand_basedirs(self): - """Calls `os.path.expanduser` on install_base, install_platbase and - root.""" - self._expand_attrs(['install_base', 'install_platbase', 'root']) - - def expand_dirs(self): - """Calls `os.path.expanduser` on install dirs.""" - dirs = [ - 'install_purelib', - 'install_platlib', - 'install_lib', - 'install_headers', - 'install_scripts', - 'install_data', - ] - self._expand_attrs(dirs) - - def run(self): - if self.verbose != self.distribution.verbose: - log.set_verbosity(self.verbose) - try: - for spec in self.args: - self.easy_install(spec, not self.no_deps) - if self.record: - outputs = self.outputs - if self.root: # strip any package prefix - root_len = len(self.root) - for counter in range(len(outputs)): - outputs[counter] = outputs[counter][root_len:] - from distutils import file_util - - self.execute( - file_util.write_file, (self.record, outputs), - "writing list of installed files to '%s'" % - self.record - ) - self.warn_deprecated_options() - finally: - log.set_verbosity(self.distribution.verbose) - - def pseudo_tempname(self): - """Return a pseudo-tempname base in the install directory. - This code is intentionally naive; if a malicious party can write to - the target directory you're already in deep doodoo. - """ - try: - pid = os.getpid() - except Exception: - pid = random.randint(0, sys.maxsize) - return os.path.join(self.install_dir, "test-easy-install-%s" % pid) - - def warn_deprecated_options(self): - pass - - def check_site_dir(self): - """Verify that self.install_dir is .pth-capable dir, if needed""" - - instdir = normalize_path(self.install_dir) - pth_file = os.path.join(instdir, 'easy-install.pth') - - # Is it a configured, PYTHONPATH, implicit, or explicit site dir? - is_site_dir = instdir in self.all_site_dirs - - if not is_site_dir and not self.multi_version: - # No? Then directly test whether it does .pth file processing - is_site_dir = self.check_pth_processing() - else: - # make sure we can write to target dir - testfile = self.pseudo_tempname() + '.write-test' - test_exists = os.path.exists(testfile) - try: - if test_exists: - os.unlink(testfile) - open(testfile, 'w').close() - os.unlink(testfile) - except (OSError, IOError): - self.cant_write_to_target() - - if not is_site_dir and not self.multi_version: - # Can't install non-multi to non-site dir - raise DistutilsError(self.no_default_version_msg()) - - if is_site_dir: - if self.pth_file is None: - self.pth_file = PthDistributions(pth_file, self.all_site_dirs) - else: - self.pth_file = None - - PYTHONPATH = os.environ.get('PYTHONPATH', '').split(os.pathsep) - if instdir not in map(normalize_path, filter(None, PYTHONPATH)): - # only PYTHONPATH dirs need a site.py, so pretend it's there - self.sitepy_installed = True - elif self.multi_version and not os.path.exists(pth_file): - self.sitepy_installed = True # don't need site.py in this case - self.pth_file = None # and don't create a .pth file - self.install_dir = instdir - - __cant_write_msg = textwrap.dedent(""" - can't create or remove files in install directory - - The following error occurred while trying to add or remove files in the - installation directory: - - %s - - The installation directory you specified (via --install-dir, --prefix, or - the distutils default setting) was: - - %s - """).lstrip() - - __not_exists_id = textwrap.dedent(""" - This directory does not currently exist. Please create it and try again, or - choose a different installation directory (using the -d or --install-dir - option). - """).lstrip() - - __access_msg = textwrap.dedent(""" - Perhaps your account does not have write access to this directory? If the - installation directory is a system-owned directory, you may need to sign in - as the administrator or "root" account. If you do not have administrative - access to this machine, you may wish to choose a different installation - directory, preferably one that is listed in your PYTHONPATH environment - variable. - - For information on other options, you may wish to consult the - documentation at: - - https://setuptools.readthedocs.io/en/latest/easy_install.html - - Please make the appropriate changes for your system and try again. - """).lstrip() - - def cant_write_to_target(self): - msg = self.__cant_write_msg % (sys.exc_info()[1], self.install_dir,) - - if not os.path.exists(self.install_dir): - msg += '\n' + self.__not_exists_id - else: - msg += '\n' + self.__access_msg - raise DistutilsError(msg) - - def check_pth_processing(self): - """Empirically verify whether .pth files are supported in inst. dir""" - instdir = self.install_dir - log.info("Checking .pth file support in %s", instdir) - pth_file = self.pseudo_tempname() + ".pth" - ok_file = pth_file + '.ok' - ok_exists = os.path.exists(ok_file) - tmpl = _one_liner(""" - import os - f = open({ok_file!r}, 'w') - f.write('OK') - f.close() - """) + '\n' - try: - if ok_exists: - os.unlink(ok_file) - dirname = os.path.dirname(ok_file) - if not os.path.exists(dirname): - os.makedirs(dirname) - f = open(pth_file, 'w') - except (OSError, IOError): - self.cant_write_to_target() - else: - try: - f.write(tmpl.format(**locals())) - f.close() - f = None - executable = sys.executable - if os.name == 'nt': - dirname, basename = os.path.split(executable) - alt = os.path.join(dirname, 'pythonw.exe') - use_alt = ( - basename.lower() == 'python.exe' and - os.path.exists(alt) - ) - if use_alt: - # use pythonw.exe to avoid opening a console window - executable = alt - - from distutils.spawn import spawn - - spawn([executable, '-E', '-c', 'pass'], 0) - - if os.path.exists(ok_file): - log.info( - "TEST PASSED: %s appears to support .pth files", - instdir - ) - return True - finally: - if f: - f.close() - if os.path.exists(ok_file): - os.unlink(ok_file) - if os.path.exists(pth_file): - os.unlink(pth_file) - if not self.multi_version: - log.warn("TEST FAILED: %s does NOT support .pth files", instdir) - return False - - def install_egg_scripts(self, dist): - """Write all the scripts for `dist`, unless scripts are excluded""" - if not self.exclude_scripts and dist.metadata_isdir('scripts'): - for script_name in dist.metadata_listdir('scripts'): - if dist.metadata_isdir('scripts/' + script_name): - # The "script" is a directory, likely a Python 3 - # __pycache__ directory, so skip it. - continue - self.install_script( - dist, script_name, - dist.get_metadata('scripts/' + script_name) - ) - self.install_wrapper_scripts(dist) - - def add_output(self, path): - if os.path.isdir(path): - for base, dirs, files in os.walk(path): - for filename in files: - self.outputs.append(os.path.join(base, filename)) - else: - self.outputs.append(path) - - def not_editable(self, spec): - if self.editable: - raise DistutilsArgError( - "Invalid argument %r: you can't use filenames or URLs " - "with --editable (except via the --find-links option)." - % (spec,) - ) - - def check_editable(self, spec): - if not self.editable: - return - - if os.path.exists(os.path.join(self.build_directory, spec.key)): - raise DistutilsArgError( - "%r already exists in %s; can't do a checkout there" % - (spec.key, self.build_directory) - ) - - def easy_install(self, spec, deps=False): - tmpdir = tempfile.mkdtemp(prefix="easy_install-") - if not self.editable: - self.install_site_py() - - try: - if not isinstance(spec, Requirement): - if URL_SCHEME(spec): - # It's a url, download it to tmpdir and process - self.not_editable(spec) - dl = self.package_index.download(spec, tmpdir) - return self.install_item(None, dl, tmpdir, deps, True) - - elif os.path.exists(spec): - # Existing file or directory, just process it directly - self.not_editable(spec) - return self.install_item(None, spec, tmpdir, deps, True) - else: - spec = parse_requirement_arg(spec) - - self.check_editable(spec) - dist = self.package_index.fetch_distribution( - spec, tmpdir, self.upgrade, self.editable, - not self.always_copy, self.local_index - ) - if dist is None: - msg = "Could not find suitable distribution for %r" % spec - if self.always_copy: - msg += " (--always-copy skips system and development eggs)" - raise DistutilsError(msg) - elif dist.precedence == DEVELOP_DIST: - # .egg-info dists don't need installing, just process deps - self.process_distribution(spec, dist, deps, "Using") - return dist - else: - return self.install_item(spec, dist.location, tmpdir, deps) - - finally: - if os.path.exists(tmpdir): - rmtree(tmpdir) - - def install_item(self, spec, download, tmpdir, deps, install_needed=False): - - # Installation is also needed if file in tmpdir or is not an egg - install_needed = install_needed or self.always_copy - install_needed = install_needed or os.path.dirname(download) == tmpdir - install_needed = install_needed or not download.endswith('.egg') - install_needed = install_needed or ( - self.always_copy_from is not None and - os.path.dirname(normalize_path(download)) == - normalize_path(self.always_copy_from) - ) - - if spec and not install_needed: - # at this point, we know it's a local .egg, we just don't know if - # it's already installed. - for dist in self.local_index[spec.project_name]: - if dist.location == download: - break - else: - install_needed = True # it's not in the local index - - log.info("Processing %s", os.path.basename(download)) - - if install_needed: - dists = self.install_eggs(spec, download, tmpdir) - for dist in dists: - self.process_distribution(spec, dist, deps) - else: - dists = [self.egg_distribution(download)] - self.process_distribution(spec, dists[0], deps, "Using") - - if spec is not None: - for dist in dists: - if dist in spec: - return dist - - def select_scheme(self, name): - """Sets the install directories by applying the install schemes.""" - # it's the caller's problem if they supply a bad name! - scheme = INSTALL_SCHEMES[name] - for key in SCHEME_KEYS: - attrname = 'install_' + key - if getattr(self, attrname) is None: - setattr(self, attrname, scheme[key]) - - def process_distribution(self, requirement, dist, deps=True, *info): - self.update_pth(dist) - self.package_index.add(dist) - if dist in self.local_index[dist.key]: - self.local_index.remove(dist) - self.local_index.add(dist) - self.install_egg_scripts(dist) - self.installed_projects[dist.key] = dist - log.info(self.installation_report(requirement, dist, *info)) - if (dist.has_metadata('dependency_links.txt') and - not self.no_find_links): - self.package_index.add_find_links( - dist.get_metadata_lines('dependency_links.txt') - ) - if not deps and not self.always_copy: - return - elif requirement is not None and dist.key != requirement.key: - log.warn("Skipping dependencies for %s", dist) - return # XXX this is not the distribution we were looking for - elif requirement is None or dist not in requirement: - # if we wound up with a different version, resolve what we've got - distreq = dist.as_requirement() - requirement = Requirement(str(distreq)) - log.info("Processing dependencies for %s", requirement) - try: - distros = WorkingSet([]).resolve( - [requirement], self.local_index, self.easy_install - ) - except DistributionNotFound as e: - raise DistutilsError(str(e)) - except VersionConflict as e: - raise DistutilsError(e.report()) - if self.always_copy or self.always_copy_from: - # Force all the relevant distros to be copied or activated - for dist in distros: - if dist.key not in self.installed_projects: - self.easy_install(dist.as_requirement()) - log.info("Finished processing dependencies for %s", requirement) - - def should_unzip(self, dist): - if self.zip_ok is not None: - return not self.zip_ok - if dist.has_metadata('not-zip-safe'): - return True - if not dist.has_metadata('zip-safe'): - return True - return False - - def maybe_move(self, spec, dist_filename, setup_base): - dst = os.path.join(self.build_directory, spec.key) - if os.path.exists(dst): - msg = ( - "%r already exists in %s; build directory %s will not be kept" - ) - log.warn(msg, spec.key, self.build_directory, setup_base) - return setup_base - if os.path.isdir(dist_filename): - setup_base = dist_filename - else: - if os.path.dirname(dist_filename) == setup_base: - os.unlink(dist_filename) # get it out of the tmp dir - contents = os.listdir(setup_base) - if len(contents) == 1: - dist_filename = os.path.join(setup_base, contents[0]) - if os.path.isdir(dist_filename): - # if the only thing there is a directory, move it instead - setup_base = dist_filename - ensure_directory(dst) - shutil.move(setup_base, dst) - return dst - - def install_wrapper_scripts(self, dist): - if self.exclude_scripts: - return - for args in ScriptWriter.best().get_args(dist): - self.write_script(*args) - - def install_script(self, dist, script_name, script_text, dev_path=None): - """Generate a legacy script wrapper and install it""" - spec = str(dist.as_requirement()) - is_script = is_python_script(script_text, script_name) - - if is_script: - body = self._load_template(dev_path) % locals() - script_text = ScriptWriter.get_header(script_text) + body - self.write_script(script_name, _to_ascii(script_text), 'b') - - @staticmethod - def _load_template(dev_path): - """ - There are a couple of template scripts in the package. This - function loads one of them and prepares it for use. - """ - # See https://github.com/pypa/setuptools/issues/134 for info - # on script file naming and downstream issues with SVR4 - name = 'script.tmpl' - if dev_path: - name = name.replace('.tmpl', ' (dev).tmpl') - - raw_bytes = resource_string('setuptools', name) - return raw_bytes.decode('utf-8') - - def write_script(self, script_name, contents, mode="t", blockers=()): - """Write an executable file to the scripts directory""" - self.delete_blockers( # clean up old .py/.pyw w/o a script - [os.path.join(self.script_dir, x) for x in blockers] - ) - log.info("Installing %s script to %s", script_name, self.script_dir) - target = os.path.join(self.script_dir, script_name) - self.add_output(target) - - mask = current_umask() - if not self.dry_run: - ensure_directory(target) - if os.path.exists(target): - os.unlink(target) - with open(target, "w" + mode) as f: - f.write(contents) - chmod(target, 0o777 - mask) - - def install_eggs(self, spec, dist_filename, tmpdir): - # .egg dirs or files are already built, so just return them - if dist_filename.lower().endswith('.egg'): - return [self.install_egg(dist_filename, tmpdir)] - elif dist_filename.lower().endswith('.exe'): - return [self.install_exe(dist_filename, tmpdir)] - - # Anything else, try to extract and build - setup_base = tmpdir - if os.path.isfile(dist_filename) and not dist_filename.endswith('.py'): - unpack_archive(dist_filename, tmpdir, self.unpack_progress) - elif os.path.isdir(dist_filename): - setup_base = os.path.abspath(dist_filename) - - if (setup_base.startswith(tmpdir) # something we downloaded - and self.build_directory and spec is not None): - setup_base = self.maybe_move(spec, dist_filename, setup_base) - - # Find the setup.py file - setup_script = os.path.join(setup_base, 'setup.py') - - if not os.path.exists(setup_script): - setups = glob(os.path.join(setup_base, '*', 'setup.py')) - if not setups: - raise DistutilsError( - "Couldn't find a setup script in %s" % - os.path.abspath(dist_filename) - ) - if len(setups) > 1: - raise DistutilsError( - "Multiple setup scripts in %s" % - os.path.abspath(dist_filename) - ) - setup_script = setups[0] - - # Now run it, and return the result - if self.editable: - log.info(self.report_editable(spec, setup_script)) - return [] - else: - return self.build_and_install(setup_script, setup_base) - - def egg_distribution(self, egg_path): - if os.path.isdir(egg_path): - metadata = PathMetadata(egg_path, os.path.join(egg_path, - 'EGG-INFO')) - else: - metadata = EggMetadata(zipimport.zipimporter(egg_path)) - return Distribution.from_filename(egg_path, metadata=metadata) - - def install_egg(self, egg_path, tmpdir): - destination = os.path.join( - self.install_dir, - os.path.basename(egg_path), - ) - destination = os.path.abspath(destination) - if not self.dry_run: - ensure_directory(destination) - - dist = self.egg_distribution(egg_path) - if not samefile(egg_path, destination): - if os.path.isdir(destination) and not os.path.islink(destination): - dir_util.remove_tree(destination, dry_run=self.dry_run) - elif os.path.exists(destination): - self.execute( - os.unlink, - (destination,), - "Removing " + destination, - ) - try: - new_dist_is_zipped = False - if os.path.isdir(egg_path): - if egg_path.startswith(tmpdir): - f, m = shutil.move, "Moving" - else: - f, m = shutil.copytree, "Copying" - elif self.should_unzip(dist): - self.mkpath(destination) - f, m = self.unpack_and_compile, "Extracting" - else: - new_dist_is_zipped = True - if egg_path.startswith(tmpdir): - f, m = shutil.move, "Moving" - else: - f, m = shutil.copy2, "Copying" - self.execute( - f, - (egg_path, destination), - (m + " %s to %s") % ( - os.path.basename(egg_path), - os.path.dirname(destination) - ), - ) - update_dist_caches( - destination, - fix_zipimporter_caches=new_dist_is_zipped, - ) - except Exception: - update_dist_caches(destination, fix_zipimporter_caches=False) - raise - - self.add_output(destination) - return self.egg_distribution(destination) - - def install_exe(self, dist_filename, tmpdir): - # See if it's valid, get data - cfg = extract_wininst_cfg(dist_filename) - if cfg is None: - raise DistutilsError( - "%s is not a valid distutils Windows .exe" % dist_filename - ) - # Create a dummy distribution object until we build the real distro - dist = Distribution( - None, - project_name=cfg.get('metadata', 'name'), - version=cfg.get('metadata', 'version'), platform=get_platform(), - ) - - # Convert the .exe to an unpacked egg - egg_path = os.path.join(tmpdir, dist.egg_name() + '.egg') - dist.location = egg_path - egg_tmp = egg_path + '.tmp' - _egg_info = os.path.join(egg_tmp, 'EGG-INFO') - pkg_inf = os.path.join(_egg_info, 'PKG-INFO') - ensure_directory(pkg_inf) # make sure EGG-INFO dir exists - dist._provider = PathMetadata(egg_tmp, _egg_info) # XXX - self.exe_to_egg(dist_filename, egg_tmp) - - # Write EGG-INFO/PKG-INFO - if not os.path.exists(pkg_inf): - f = open(pkg_inf, 'w') - f.write('Metadata-Version: 1.0\n') - for k, v in cfg.items('metadata'): - if k != 'target_version': - f.write('%s: %s\n' % (k.replace('_', '-').title(), v)) - f.close() - script_dir = os.path.join(_egg_info, 'scripts') - # delete entry-point scripts to avoid duping - self.delete_blockers([ - os.path.join(script_dir, args[0]) - for args in ScriptWriter.get_args(dist) - ]) - # Build .egg file from tmpdir - bdist_egg.make_zipfile( - egg_path, egg_tmp, verbose=self.verbose, dry_run=self.dry_run, - ) - # install the .egg - return self.install_egg(egg_path, tmpdir) - - def exe_to_egg(self, dist_filename, egg_tmp): - """Extract a bdist_wininst to the directories an egg would use""" - # Check for .pth file and set up prefix translations - prefixes = get_exe_prefixes(dist_filename) - to_compile = [] - native_libs = [] - top_level = {} - - def process(src, dst): - s = src.lower() - for old, new in prefixes: - if s.startswith(old): - src = new + src[len(old):] - parts = src.split('/') - dst = os.path.join(egg_tmp, *parts) - dl = dst.lower() - if dl.endswith('.pyd') or dl.endswith('.dll'): - parts[-1] = bdist_egg.strip_module(parts[-1]) - top_level[os.path.splitext(parts[0])[0]] = 1 - native_libs.append(src) - elif dl.endswith('.py') and old != 'SCRIPTS/': - top_level[os.path.splitext(parts[0])[0]] = 1 - to_compile.append(dst) - return dst - if not src.endswith('.pth'): - log.warn("WARNING: can't process %s", src) - return None - - # extract, tracking .pyd/.dll->native_libs and .py -> to_compile - unpack_archive(dist_filename, egg_tmp, process) - stubs = [] - for res in native_libs: - if res.lower().endswith('.pyd'): # create stubs for .pyd's - parts = res.split('/') - resource = parts[-1] - parts[-1] = bdist_egg.strip_module(parts[-1]) + '.py' - pyfile = os.path.join(egg_tmp, *parts) - to_compile.append(pyfile) - stubs.append(pyfile) - bdist_egg.write_stub(resource, pyfile) - self.byte_compile(to_compile) # compile .py's - bdist_egg.write_safety_flag( - os.path.join(egg_tmp, 'EGG-INFO'), - bdist_egg.analyze_egg(egg_tmp, stubs)) # write zip-safety flag - - for name in 'top_level', 'native_libs': - if locals()[name]: - txt = os.path.join(egg_tmp, 'EGG-INFO', name + '.txt') - if not os.path.exists(txt): - f = open(txt, 'w') - f.write('\n'.join(locals()[name]) + '\n') - f.close() - - __mv_warning = textwrap.dedent(""" - Because this distribution was installed --multi-version, before you can - import modules from this package in an application, you will need to - 'import pkg_resources' and then use a 'require()' call similar to one of - these examples, in order to select the desired version: - - pkg_resources.require("%(name)s") # latest installed version - pkg_resources.require("%(name)s==%(version)s") # this exact version - pkg_resources.require("%(name)s>=%(version)s") # this version or higher - """).lstrip() - - __id_warning = textwrap.dedent(""" - Note also that the installation directory must be on sys.path at runtime for - this to work. (e.g. by being the application's script directory, by being on - PYTHONPATH, or by being added to sys.path by your code.) - """) - - def installation_report(self, req, dist, what="Installed"): - """Helpful installation message for display to package users""" - msg = "\n%(what)s %(eggloc)s%(extras)s" - if self.multi_version and not self.no_report: - msg += '\n' + self.__mv_warning - if self.install_dir not in map(normalize_path, sys.path): - msg += '\n' + self.__id_warning - - eggloc = dist.location - name = dist.project_name - version = dist.version - extras = '' # TODO: self.report_extras(req, dist) - return msg % locals() - - __editable_msg = textwrap.dedent(""" - Extracted editable version of %(spec)s to %(dirname)s - - If it uses setuptools in its setup script, you can activate it in - "development" mode by going to that directory and running:: - - %(python)s setup.py develop - - See the setuptools documentation for the "develop" command for more info. - """).lstrip() - - def report_editable(self, spec, setup_script): - dirname = os.path.dirname(setup_script) - python = sys.executable - return '\n' + self.__editable_msg % locals() - - def run_setup(self, setup_script, setup_base, args): - sys.modules.setdefault('distutils.command.bdist_egg', bdist_egg) - sys.modules.setdefault('distutils.command.egg_info', egg_info) - - args = list(args) - if self.verbose > 2: - v = 'v' * (self.verbose - 1) - args.insert(0, '-' + v) - elif self.verbose < 2: - args.insert(0, '-q') - if self.dry_run: - args.insert(0, '-n') - log.info( - "Running %s %s", setup_script[len(setup_base) + 1:], ' '.join(args) - ) - try: - run_setup(setup_script, args) - except SystemExit as v: - raise DistutilsError("Setup script exited with %s" % (v.args[0],)) - - def build_and_install(self, setup_script, setup_base): - args = ['bdist_egg', '--dist-dir'] - - dist_dir = tempfile.mkdtemp( - prefix='egg-dist-tmp-', dir=os.path.dirname(setup_script) - ) - try: - self._set_fetcher_options(os.path.dirname(setup_script)) - args.append(dist_dir) - - self.run_setup(setup_script, setup_base, args) - all_eggs = Environment([dist_dir]) - eggs = [] - for key in all_eggs: - for dist in all_eggs[key]: - eggs.append(self.install_egg(dist.location, setup_base)) - if not eggs and not self.dry_run: - log.warn("No eggs found in %s (setup script problem?)", - dist_dir) - return eggs - finally: - rmtree(dist_dir) - log.set_verbosity(self.verbose) # restore our log verbosity - - def _set_fetcher_options(self, base): - """ - When easy_install is about to run bdist_egg on a source dist, that - source dist might have 'setup_requires' directives, requiring - additional fetching. Ensure the fetcher options given to easy_install - are available to that command as well. - """ - # find the fetch options from easy_install and write them out - # to the setup.cfg file. - ei_opts = self.distribution.get_option_dict('easy_install').copy() - fetch_directives = ( - 'find_links', 'site_dirs', 'index_url', 'optimize', - 'site_dirs', 'allow_hosts', - ) - fetch_options = {} - for key, val in ei_opts.items(): - if key not in fetch_directives: - continue - fetch_options[key.replace('_', '-')] = val[1] - # create a settings dictionary suitable for `edit_config` - settings = dict(easy_install=fetch_options) - cfg_filename = os.path.join(base, 'setup.cfg') - setopt.edit_config(cfg_filename, settings) - - def update_pth(self, dist): - if self.pth_file is None: - return - - for d in self.pth_file[dist.key]: # drop old entries - if self.multi_version or d.location != dist.location: - log.info("Removing %s from easy-install.pth file", d) - self.pth_file.remove(d) - if d.location in self.shadow_path: - self.shadow_path.remove(d.location) - - if not self.multi_version: - if dist.location in self.pth_file.paths: - log.info( - "%s is already the active version in easy-install.pth", - dist, - ) - else: - log.info("Adding %s to easy-install.pth file", dist) - self.pth_file.add(dist) # add new entry - if dist.location not in self.shadow_path: - self.shadow_path.append(dist.location) - - if not self.dry_run: - - self.pth_file.save() - - if dist.key == 'setuptools': - # Ensure that setuptools itself never becomes unavailable! - # XXX should this check for latest version? - filename = os.path.join(self.install_dir, 'setuptools.pth') - if os.path.islink(filename): - os.unlink(filename) - f = open(filename, 'wt') - f.write(self.pth_file.make_relative(dist.location) + '\n') - f.close() - - def unpack_progress(self, src, dst): - # Progress filter for unpacking - log.debug("Unpacking %s to %s", src, dst) - return dst # only unpack-and-compile skips files for dry run - - def unpack_and_compile(self, egg_path, destination): - to_compile = [] - to_chmod = [] - - def pf(src, dst): - if dst.endswith('.py') and not src.startswith('EGG-INFO/'): - to_compile.append(dst) - elif dst.endswith('.dll') or dst.endswith('.so'): - to_chmod.append(dst) - self.unpack_progress(src, dst) - return not self.dry_run and dst or None - - unpack_archive(egg_path, destination, pf) - self.byte_compile(to_compile) - if not self.dry_run: - for f in to_chmod: - mode = ((os.stat(f)[stat.ST_MODE]) | 0o555) & 0o7755 - chmod(f, mode) - - def byte_compile(self, to_compile): - if sys.dont_write_bytecode: - self.warn('byte-compiling is disabled, skipping.') - return - - from distutils.util import byte_compile - - try: - # try to make the byte compile messages quieter - log.set_verbosity(self.verbose - 1) - - byte_compile(to_compile, optimize=0, force=1, dry_run=self.dry_run) - if self.optimize: - byte_compile( - to_compile, optimize=self.optimize, force=1, - dry_run=self.dry_run, - ) - finally: - log.set_verbosity(self.verbose) # restore original verbosity - - __no_default_msg = textwrap.dedent(""" - bad install directory or PYTHONPATH - - You are attempting to install a package to a directory that is not - on PYTHONPATH and which Python does not read ".pth" files from. The - installation directory you specified (via --install-dir, --prefix, or - the distutils default setting) was: - - %s - - and your PYTHONPATH environment variable currently contains: - - %r - - Here are some of your options for correcting the problem: - - * You can choose a different installation directory, i.e., one that is - on PYTHONPATH or supports .pth files - - * You can add the installation directory to the PYTHONPATH environment - variable. (It must then also be on PYTHONPATH whenever you run - Python and want to use the package(s) you are installing.) - - * You can set up the installation directory to support ".pth" files by - using one of the approaches described here: - - https://setuptools.readthedocs.io/en/latest/easy_install.html#custom-installation-locations - - - Please make the appropriate changes for your system and try again.""").lstrip() - - def no_default_version_msg(self): - template = self.__no_default_msg - return template % (self.install_dir, os.environ.get('PYTHONPATH', '')) - - def install_site_py(self): - """Make sure there's a site.py in the target dir, if needed""" - - if self.sitepy_installed: - return # already did it, or don't need to - - sitepy = os.path.join(self.install_dir, "site.py") - source = resource_string("setuptools", "site-patch.py") - source = source.decode('utf-8') - current = "" - - if os.path.exists(sitepy): - log.debug("Checking existing site.py in %s", self.install_dir) - with io.open(sitepy) as strm: - current = strm.read() - - if not current.startswith('def __boot():'): - raise DistutilsError( - "%s is not a setuptools-generated site.py; please" - " remove it." % sitepy - ) - - if current != source: - log.info("Creating %s", sitepy) - if not self.dry_run: - ensure_directory(sitepy) - with io.open(sitepy, 'w', encoding='utf-8') as strm: - strm.write(source) - self.byte_compile([sitepy]) - - self.sitepy_installed = True - - def create_home_path(self): - """Create directories under ~.""" - if not self.user: - return - home = convert_path(os.path.expanduser("~")) - for name, path in six.iteritems(self.config_vars): - if path.startswith(home) and not os.path.isdir(path): - self.debug_print("os.makedirs('%s', 0o700)" % path) - os.makedirs(path, 0o700) - - INSTALL_SCHEMES = dict( - posix=dict( - install_dir='$base/lib/python$py_version_short/site-packages', - script_dir='$base/bin', - ), - ) - - DEFAULT_SCHEME = dict( - install_dir='$base/Lib/site-packages', - script_dir='$base/Scripts', - ) - - def _expand(self, *attrs): - config_vars = self.get_finalized_command('install').config_vars - - if self.prefix: - # Set default install_dir/scripts from --prefix - config_vars = config_vars.copy() - config_vars['base'] = self.prefix - scheme = self.INSTALL_SCHEMES.get(os.name, self.DEFAULT_SCHEME) - for attr, val in scheme.items(): - if getattr(self, attr, None) is None: - setattr(self, attr, val) - - from distutils.util import subst_vars - - for attr in attrs: - val = getattr(self, attr) - if val is not None: - val = subst_vars(val, config_vars) - if os.name == 'posix': - val = os.path.expanduser(val) - setattr(self, attr, val) - - -def get_site_dirs(): - # return a list of 'site' dirs - sitedirs = [_f for _f in os.environ.get('PYTHONPATH', - '').split(os.pathsep) if _f] - prefixes = [sys.prefix] - if sys.exec_prefix != sys.prefix: - prefixes.append(sys.exec_prefix) - for prefix in prefixes: - if prefix: - if sys.platform in ('os2emx', 'riscos'): - sitedirs.append(os.path.join(prefix, "Lib", "site-packages")) - elif os.sep == '/': - sitedirs.extend([ - os.path.join( - prefix, - "lib", - "python" + sys.version[:3], - "site-packages", - ), - os.path.join(prefix, "lib", "site-python"), - ]) - else: - sitedirs.extend([ - prefix, - os.path.join(prefix, "lib", "site-packages"), - ]) - if sys.platform == 'darwin': - # for framework builds *only* we add the standard Apple - # locations. Currently only per-user, but /Library and - # /Network/Library could be added too - if 'Python.framework' in prefix: - home = os.environ.get('HOME') - if home: - home_sp = os.path.join( - home, - 'Library', - 'Python', - sys.version[:3], - 'site-packages', - ) - sitedirs.append(home_sp) - lib_paths = get_path('purelib'), get_path('platlib') - for site_lib in lib_paths: - if site_lib not in sitedirs: - sitedirs.append(site_lib) - - if site.ENABLE_USER_SITE: - sitedirs.append(site.USER_SITE) - - try: - sitedirs.extend(site.getsitepackages()) - except AttributeError: - pass - - sitedirs = list(map(normalize_path, sitedirs)) - - return sitedirs - - -def expand_paths(inputs): - """Yield sys.path directories that might contain "old-style" packages""" - - seen = {} - - for dirname in inputs: - dirname = normalize_path(dirname) - if dirname in seen: - continue - - seen[dirname] = 1 - if not os.path.isdir(dirname): - continue - - files = os.listdir(dirname) - yield dirname, files - - for name in files: - if not name.endswith('.pth'): - # We only care about the .pth files - continue - if name in ('easy-install.pth', 'setuptools.pth'): - # Ignore .pth files that we control - continue - - # Read the .pth file - f = open(os.path.join(dirname, name)) - lines = list(yield_lines(f)) - f.close() - - # Yield existing non-dupe, non-import directory lines from it - for line in lines: - if not line.startswith("import"): - line = normalize_path(line.rstrip()) - if line not in seen: - seen[line] = 1 - if not os.path.isdir(line): - continue - yield line, os.listdir(line) - - -def extract_wininst_cfg(dist_filename): - """Extract configuration data from a bdist_wininst .exe - - Returns a configparser.RawConfigParser, or None - """ - f = open(dist_filename, 'rb') - try: - endrec = zipfile._EndRecData(f) - if endrec is None: - return None - - prepended = (endrec[9] - endrec[5]) - endrec[6] - if prepended < 12: # no wininst data here - return None - f.seek(prepended - 12) - - tag, cfglen, bmlen = struct.unpack("<iii", f.read(12)) - if tag not in (0x1234567A, 0x1234567B): - return None # not a valid tag - - f.seek(prepended - (12 + cfglen)) - init = {'version': '', 'target_version': ''} - cfg = configparser.RawConfigParser(init) - try: - part = f.read(cfglen) - # Read up to the first null byte. - config = part.split(b'\0', 1)[0] - # Now the config is in bytes, but for RawConfigParser, it should - # be text, so decode it. - config = config.decode(sys.getfilesystemencoding()) - cfg.readfp(six.StringIO(config)) - except configparser.Error: - return None - if not cfg.has_section('metadata') or not cfg.has_section('Setup'): - return None - return cfg - - finally: - f.close() - - -def get_exe_prefixes(exe_filename): - """Get exe->egg path translations for a given .exe file""" - - prefixes = [ - ('PURELIB/', ''), - ('PLATLIB/pywin32_system32', ''), - ('PLATLIB/', ''), - ('SCRIPTS/', 'EGG-INFO/scripts/'), - ('DATA/lib/site-packages', ''), - ] - z = zipfile.ZipFile(exe_filename) - try: - for info in z.infolist(): - name = info.filename - parts = name.split('/') - if len(parts) == 3 and parts[2] == 'PKG-INFO': - if parts[1].endswith('.egg-info'): - prefixes.insert(0, ('/'.join(parts[:2]), 'EGG-INFO/')) - break - if len(parts) != 2 or not name.endswith('.pth'): - continue - if name.endswith('-nspkg.pth'): - continue - if parts[0].upper() in ('PURELIB', 'PLATLIB'): - contents = z.read(name) - if six.PY3: - contents = contents.decode() - for pth in yield_lines(contents): - pth = pth.strip().replace('\\', '/') - if not pth.startswith('import'): - prefixes.append((('%s/%s/' % (parts[0], pth)), '')) - finally: - z.close() - prefixes = [(x.lower(), y) for x, y in prefixes] - prefixes.sort() - prefixes.reverse() - return prefixes - - -class PthDistributions(Environment): - """A .pth file with Distribution paths in it""" - - dirty = False - - def __init__(self, filename, sitedirs=()): - self.filename = filename - self.sitedirs = list(map(normalize_path, sitedirs)) - self.basedir = normalize_path(os.path.dirname(self.filename)) - self._load() - Environment.__init__(self, [], None, None) - for path in yield_lines(self.paths): - list(map(self.add, find_distributions(path, True))) - - def _load(self): - self.paths = [] - saw_import = False - seen = dict.fromkeys(self.sitedirs) - if os.path.isfile(self.filename): - f = open(self.filename, 'rt') - for line in f: - if line.startswith('import'): - saw_import = True - continue - path = line.rstrip() - self.paths.append(path) - if not path.strip() or path.strip().startswith('#'): - continue - # skip non-existent paths, in case somebody deleted a package - # manually, and duplicate paths as well - path = self.paths[-1] = normalize_path( - os.path.join(self.basedir, path) - ) - if not os.path.exists(path) or path in seen: - self.paths.pop() # skip it - self.dirty = True # we cleaned up, so we're dirty now :) - continue - seen[path] = 1 - f.close() - - if self.paths and not saw_import: - self.dirty = True # ensure anything we touch has import wrappers - while self.paths and not self.paths[-1].strip(): - self.paths.pop() - - def save(self): - """Write changed .pth file back to disk""" - if not self.dirty: - return - - rel_paths = list(map(self.make_relative, self.paths)) - if rel_paths: - log.debug("Saving %s", self.filename) - lines = self._wrap_lines(rel_paths) - data = '\n'.join(lines) + '\n' - - if os.path.islink(self.filename): - os.unlink(self.filename) - with open(self.filename, 'wt') as f: - f.write(data) - - elif os.path.exists(self.filename): - log.debug("Deleting empty %s", self.filename) - os.unlink(self.filename) - - self.dirty = False - - @staticmethod - def _wrap_lines(lines): - return lines - - def add(self, dist): - """Add `dist` to the distribution map""" - new_path = ( - dist.location not in self.paths and ( - dist.location not in self.sitedirs or - # account for '.' being in PYTHONPATH - dist.location == os.getcwd() - ) - ) - if new_path: - self.paths.append(dist.location) - self.dirty = True - Environment.add(self, dist) - - def remove(self, dist): - """Remove `dist` from the distribution map""" - while dist.location in self.paths: - self.paths.remove(dist.location) - self.dirty = True - Environment.remove(self, dist) - - def make_relative(self, path): - npath, last = os.path.split(normalize_path(path)) - baselen = len(self.basedir) - parts = [last] - sep = os.altsep == '/' and '/' or os.sep - while len(npath) >= baselen: - if npath == self.basedir: - parts.append(os.curdir) - parts.reverse() - return sep.join(parts) - npath, last = os.path.split(npath) - parts.append(last) - else: - return path - - -class RewritePthDistributions(PthDistributions): - @classmethod - def _wrap_lines(cls, lines): - yield cls.prelude - for line in lines: - yield line - yield cls.postlude - - prelude = _one_liner(""" - import sys - sys.__plen = len(sys.path) - """) - postlude = _one_liner(""" - import sys - new = sys.path[sys.__plen:] - del sys.path[sys.__plen:] - p = getattr(sys, '__egginsert', 0) - sys.path[p:p] = new - sys.__egginsert = p + len(new) - """) - - -if os.environ.get('SETUPTOOLS_SYS_PATH_TECHNIQUE', 'raw') == 'rewrite': - PthDistributions = RewritePthDistributions - - -def _first_line_re(): - """ - Return a regular expression based on first_line_re suitable for matching - strings. - """ - if isinstance(first_line_re.pattern, str): - return first_line_re - - # first_line_re in Python >=3.1.4 and >=3.2.1 is a bytes pattern. - return re.compile(first_line_re.pattern.decode()) - - -def auto_chmod(func, arg, exc): - if func is os.remove and os.name == 'nt': - chmod(arg, stat.S_IWRITE) - return func(arg) - et, ev, _ = sys.exc_info() - six.reraise(et, (ev[0], ev[1] + (" %s %s" % (func, arg)))) - - -def update_dist_caches(dist_path, fix_zipimporter_caches): - """ - Fix any globally cached `dist_path` related data - - `dist_path` should be a path of a newly installed egg distribution (zipped - or unzipped). - - sys.path_importer_cache contains finder objects that have been cached when - importing data from the original distribution. Any such finders need to be - cleared since the replacement distribution might be packaged differently, - e.g. a zipped egg distribution might get replaced with an unzipped egg - folder or vice versa. Having the old finders cached may then cause Python - to attempt loading modules from the replacement distribution using an - incorrect loader. - - zipimport.zipimporter objects are Python loaders charged with importing - data packaged inside zip archives. If stale loaders referencing the - original distribution, are left behind, they can fail to load modules from - the replacement distribution. E.g. if an old zipimport.zipimporter instance - is used to load data from a new zipped egg archive, it may cause the - operation to attempt to locate the requested data in the wrong location - - one indicated by the original distribution's zip archive directory - information. Such an operation may then fail outright, e.g. report having - read a 'bad local file header', or even worse, it may fail silently & - return invalid data. - - zipimport._zip_directory_cache contains cached zip archive directory - information for all existing zipimport.zipimporter instances and all such - instances connected to the same archive share the same cached directory - information. - - If asked, and the underlying Python implementation allows it, we can fix - all existing zipimport.zipimporter instances instead of having to track - them down and remove them one by one, by updating their shared cached zip - archive directory information. This, of course, assumes that the - replacement distribution is packaged as a zipped egg. - - If not asked to fix existing zipimport.zipimporter instances, we still do - our best to clear any remaining zipimport.zipimporter related cached data - that might somehow later get used when attempting to load data from the new - distribution and thus cause such load operations to fail. Note that when - tracking down such remaining stale data, we can not catch every conceivable - usage from here, and we clear only those that we know of and have found to - cause problems if left alive. Any remaining caches should be updated by - whomever is in charge of maintaining them, i.e. they should be ready to - handle us replacing their zip archives with new distributions at runtime. - - """ - # There are several other known sources of stale zipimport.zipimporter - # instances that we do not clear here, but might if ever given a reason to - # do so: - # * Global setuptools pkg_resources.working_set (a.k.a. 'master working - # set') may contain distributions which may in turn contain their - # zipimport.zipimporter loaders. - # * Several zipimport.zipimporter loaders held by local variables further - # up the function call stack when running the setuptools installation. - # * Already loaded modules may have their __loader__ attribute set to the - # exact loader instance used when importing them. Python 3.4 docs state - # that this information is intended mostly for introspection and so is - # not expected to cause us problems. - normalized_path = normalize_path(dist_path) - _uncache(normalized_path, sys.path_importer_cache) - if fix_zipimporter_caches: - _replace_zip_directory_cache_data(normalized_path) - else: - # Here, even though we do not want to fix existing and now stale - # zipimporter cache information, we still want to remove it. Related to - # Python's zip archive directory information cache, we clear each of - # its stale entries in two phases: - # 1. Clear the entry so attempting to access zip archive information - # via any existing stale zipimport.zipimporter instances fails. - # 2. Remove the entry from the cache so any newly constructed - # zipimport.zipimporter instances do not end up using old stale - # zip archive directory information. - # This whole stale data removal step does not seem strictly necessary, - # but has been left in because it was done before we started replacing - # the zip archive directory information cache content if possible, and - # there are no relevant unit tests that we can depend on to tell us if - # this is really needed. - _remove_and_clear_zip_directory_cache_data(normalized_path) - - -def _collect_zipimporter_cache_entries(normalized_path, cache): - """ - Return zipimporter cache entry keys related to a given normalized path. - - Alternative path spellings (e.g. those using different character case or - those using alternative path separators) related to the same path are - included. Any sub-path entries are included as well, i.e. those - corresponding to zip archives embedded in other zip archives. - - """ - result = [] - prefix_len = len(normalized_path) - for p in cache: - np = normalize_path(p) - if (np.startswith(normalized_path) and - np[prefix_len:prefix_len + 1] in (os.sep, '')): - result.append(p) - return result - - -def _update_zipimporter_cache(normalized_path, cache, updater=None): - """ - Update zipimporter cache data for a given normalized path. - - Any sub-path entries are processed as well, i.e. those corresponding to zip - archives embedded in other zip archives. - - Given updater is a callable taking a cache entry key and the original entry - (after already removing the entry from the cache), and expected to update - the entry and possibly return a new one to be inserted in its place. - Returning None indicates that the entry should not be replaced with a new - one. If no updater is given, the cache entries are simply removed without - any additional processing, the same as if the updater simply returned None. - - """ - for p in _collect_zipimporter_cache_entries(normalized_path, cache): - # N.B. pypy's custom zipimport._zip_directory_cache implementation does - # not support the complete dict interface: - # * Does not support item assignment, thus not allowing this function - # to be used only for removing existing cache entries. - # * Does not support the dict.pop() method, forcing us to use the - # get/del patterns instead. For more detailed information see the - # following links: - # https://github.com/pypa/setuptools/issues/202#issuecomment-202913420 - # https://bitbucket.org/pypy/pypy/src/dd07756a34a41f674c0cacfbc8ae1d4cc9ea2ae4/pypy/module/zipimport/interp_zipimport.py#cl-99 - old_entry = cache[p] - del cache[p] - new_entry = updater and updater(p, old_entry) - if new_entry is not None: - cache[p] = new_entry - - -def _uncache(normalized_path, cache): - _update_zipimporter_cache(normalized_path, cache) - - -def _remove_and_clear_zip_directory_cache_data(normalized_path): - def clear_and_remove_cached_zip_archive_directory_data(path, old_entry): - old_entry.clear() - - _update_zipimporter_cache( - normalized_path, zipimport._zip_directory_cache, - updater=clear_and_remove_cached_zip_archive_directory_data) - - -# PyPy Python implementation does not allow directly writing to the -# zipimport._zip_directory_cache and so prevents us from attempting to correct -# its content. The best we can do there is clear the problematic cache content -# and have PyPy repopulate it as needed. The downside is that if there are any -# stale zipimport.zipimporter instances laying around, attempting to use them -# will fail due to not having its zip archive directory information available -# instead of being automatically corrected to use the new correct zip archive -# directory information. -if '__pypy__' in sys.builtin_module_names: - _replace_zip_directory_cache_data = \ - _remove_and_clear_zip_directory_cache_data -else: - - def _replace_zip_directory_cache_data(normalized_path): - def replace_cached_zip_archive_directory_data(path, old_entry): - # N.B. In theory, we could load the zip directory information just - # once for all updated path spellings, and then copy it locally and - # update its contained path strings to contain the correct - # spelling, but that seems like a way too invasive move (this cache - # structure is not officially documented anywhere and could in - # theory change with new Python releases) for no significant - # benefit. - old_entry.clear() - zipimport.zipimporter(path) - old_entry.update(zipimport._zip_directory_cache[path]) - return old_entry - - _update_zipimporter_cache( - normalized_path, zipimport._zip_directory_cache, - updater=replace_cached_zip_archive_directory_data) - - -def is_python(text, filename='<string>'): - "Is this string a valid Python script?" - try: - compile(text, filename, 'exec') - except (SyntaxError, TypeError): - return False - else: - return True - - -def is_sh(executable): - """Determine if the specified executable is a .sh (contains a #! line)""" - try: - with io.open(executable, encoding='latin-1') as fp: - magic = fp.read(2) - except (OSError, IOError): - return executable - return magic == '#!' - - -def nt_quote_arg(arg): - """Quote a command line argument according to Windows parsing rules""" - return subprocess.list2cmdline([arg]) - - -def is_python_script(script_text, filename): - """Is this text, as a whole, a Python script? (as opposed to shell/bat/etc. - """ - if filename.endswith('.py') or filename.endswith('.pyw'): - return True # extension says it's Python - if is_python(script_text, filename): - return True # it's syntactically valid Python - if script_text.startswith('#!'): - # It begins with a '#!' line, so check if 'python' is in it somewhere - return 'python' in script_text.splitlines()[0].lower() - - return False # Not any Python I can recognize - - -try: - from os import chmod as _chmod -except ImportError: - # Jython compatibility - def _chmod(*args): - pass - - -def chmod(path, mode): - log.debug("changing mode of %s to %o", path, mode) - try: - _chmod(path, mode) - except os.error as e: - log.debug("chmod failed: %s", e) - - -class CommandSpec(list): - """ - A command spec for a #! header, specified as a list of arguments akin to - those passed to Popen. - """ - - options = [] - split_args = dict() - - @classmethod - def best(cls): - """ - Choose the best CommandSpec class based on environmental conditions. - """ - return cls - - @classmethod - def _sys_executable(cls): - _default = os.path.normpath(sys.executable) - return os.environ.get('__PYVENV_LAUNCHER__', _default) - - @classmethod - def from_param(cls, param): - """ - Construct a CommandSpec from a parameter to build_scripts, which may - be None. - """ - if isinstance(param, cls): - return param - if isinstance(param, list): - return cls(param) - if param is None: - return cls.from_environment() - # otherwise, assume it's a string. - return cls.from_string(param) - - @classmethod - def from_environment(cls): - return cls([cls._sys_executable()]) - - @classmethod - def from_string(cls, string): - """ - Construct a command spec from a simple string representing a command - line parseable by shlex.split. - """ - items = shlex.split(string, **cls.split_args) - return cls(items) - - def install_options(self, script_text): - self.options = shlex.split(self._extract_options(script_text)) - cmdline = subprocess.list2cmdline(self) - if not isascii(cmdline): - self.options[:0] = ['-x'] - - @staticmethod - def _extract_options(orig_script): - """ - Extract any options from the first line of the script. - """ - first = (orig_script + '\n').splitlines()[0] - match = _first_line_re().match(first) - options = match.group(1) or '' if match else '' - return options.strip() - - def as_header(self): - return self._render(self + list(self.options)) - - @staticmethod - def _strip_quotes(item): - _QUOTES = '"\'' - for q in _QUOTES: - if item.startswith(q) and item.endswith(q): - return item[1:-1] - return item - - @staticmethod - def _render(items): - cmdline = subprocess.list2cmdline( - CommandSpec._strip_quotes(item.strip()) for item in items) - return '#!' + cmdline + '\n' - - -# For pbr compat; will be removed in a future version. -sys_executable = CommandSpec._sys_executable() - - -class WindowsCommandSpec(CommandSpec): - split_args = dict(posix=False) - - -class ScriptWriter(object): - """ - Encapsulates behavior around writing entry point scripts for console and - gui apps. - """ - - template = textwrap.dedent(""" - # EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r - __requires__ = %(spec)r - import re - import sys - from pkg_resources import load_entry_point - - if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit( - load_entry_point(%(spec)r, %(group)r, %(name)r)() - ) - """).lstrip() - - command_spec_class = CommandSpec - - @classmethod - def get_script_args(cls, dist, executable=None, wininst=False): - # for backward compatibility - warnings.warn("Use get_args", DeprecationWarning) - writer = (WindowsScriptWriter if wininst else ScriptWriter).best() - header = cls.get_script_header("", executable, wininst) - return writer.get_args(dist, header) - - @classmethod - def get_script_header(cls, script_text, executable=None, wininst=False): - # for backward compatibility - warnings.warn("Use get_header", DeprecationWarning) - if wininst: - executable = "python.exe" - cmd = cls.command_spec_class.best().from_param(executable) - cmd.install_options(script_text) - return cmd.as_header() - - @classmethod - def get_args(cls, dist, header=None): - """ - Yield write_script() argument tuples for a distribution's - console_scripts and gui_scripts entry points. - """ - if header is None: - header = cls.get_header() - spec = str(dist.as_requirement()) - for type_ in 'console', 'gui': - group = type_ + '_scripts' - for name, ep in dist.get_entry_map(group).items(): - cls._ensure_safe_name(name) - script_text = cls.template % locals() - args = cls._get_script_args(type_, name, header, script_text) - for res in args: - yield res - - @staticmethod - def _ensure_safe_name(name): - """ - Prevent paths in *_scripts entry point names. - """ - has_path_sep = re.search(r'[\\/]', name) - if has_path_sep: - raise ValueError("Path separators not allowed in script names") - - @classmethod - def get_writer(cls, force_windows): - # for backward compatibility - warnings.warn("Use best", DeprecationWarning) - return WindowsScriptWriter.best() if force_windows else cls.best() - - @classmethod - def best(cls): - """ - Select the best ScriptWriter for this environment. - """ - if sys.platform == 'win32' or (os.name == 'java' and os._name == 'nt'): - return WindowsScriptWriter.best() - else: - return cls - - @classmethod - def _get_script_args(cls, type_, name, header, script_text): - # Simply write the stub with no extension. - yield (name, header + script_text) - - @classmethod - def get_header(cls, script_text="", executable=None): - """Create a #! line, getting options (if any) from script_text""" - cmd = cls.command_spec_class.best().from_param(executable) - cmd.install_options(script_text) - return cmd.as_header() - - -class WindowsScriptWriter(ScriptWriter): - command_spec_class = WindowsCommandSpec - - @classmethod - def get_writer(cls): - # for backward compatibility - warnings.warn("Use best", DeprecationWarning) - return cls.best() - - @classmethod - def best(cls): - """ - Select the best ScriptWriter suitable for Windows - """ - writer_lookup = dict( - executable=WindowsExecutableLauncherWriter, - natural=cls, - ) - # for compatibility, use the executable launcher by default - launcher = os.environ.get('SETUPTOOLS_LAUNCHER', 'executable') - return writer_lookup[launcher] - - @classmethod - def _get_script_args(cls, type_, name, header, script_text): - "For Windows, add a .py extension" - ext = dict(console='.pya', gui='.pyw')[type_] - if ext not in os.environ['PATHEXT'].lower().split(';'): - msg = ( - "{ext} not listed in PATHEXT; scripts will not be " - "recognized as executables." - ).format(**locals()) - warnings.warn(msg, UserWarning) - old = ['.pya', '.py', '-script.py', '.pyc', '.pyo', '.pyw', '.exe'] - old.remove(ext) - header = cls._adjust_header(type_, header) - blockers = [name + x for x in old] - yield name + ext, header + script_text, 't', blockers - - @classmethod - def _adjust_header(cls, type_, orig_header): - """ - Make sure 'pythonw' is used for gui and and 'python' is used for - console (regardless of what sys.executable is). - """ - pattern = 'pythonw.exe' - repl = 'python.exe' - if type_ == 'gui': - pattern, repl = repl, pattern - pattern_ob = re.compile(re.escape(pattern), re.IGNORECASE) - new_header = pattern_ob.sub(string=orig_header, repl=repl) - return new_header if cls._use_header(new_header) else orig_header - - @staticmethod - def _use_header(new_header): - """ - Should _adjust_header use the replaced header? - - On non-windows systems, always use. On - Windows systems, only use the replaced header if it resolves - to an executable on the system. - """ - clean_header = new_header[2:-1].strip('"') - return sys.platform != 'win32' or find_executable(clean_header) - - -class WindowsExecutableLauncherWriter(WindowsScriptWriter): - @classmethod - def _get_script_args(cls, type_, name, header, script_text): - """ - For Windows, add a .py extension and an .exe launcher - """ - if type_ == 'gui': - launcher_type = 'gui' - ext = '-script.pyw' - old = ['.pyw'] - else: - launcher_type = 'cli' - ext = '-script.py' - old = ['.py', '.pyc', '.pyo'] - hdr = cls._adjust_header(type_, header) - blockers = [name + x for x in old] - yield (name + ext, hdr + script_text, 't', blockers) - yield ( - name + '.exe', get_win_launcher(launcher_type), - 'b' # write in binary mode - ) - if not is_64bit(): - # install a manifest for the launcher to prevent Windows - # from detecting it as an installer (which it will for - # launchers like easy_install.exe). Consider only - # adding a manifest for launchers detected as installers. - # See Distribute #143 for details. - m_name = name + '.exe.manifest' - yield (m_name, load_launcher_manifest(name), 't') - - -# for backward-compatibility -get_script_args = ScriptWriter.get_script_args -get_script_header = ScriptWriter.get_script_header - - -def get_win_launcher(type): - """ - Load the Windows launcher (executable) suitable for launching a script. - - `type` should be either 'cli' or 'gui' - - Returns the executable as a byte string. - """ - launcher_fn = '%s.exe' % type - if is_64bit(): - launcher_fn = launcher_fn.replace(".", "-64.") - else: - launcher_fn = launcher_fn.replace(".", "-32.") - return resource_string('setuptools', launcher_fn) - - -def load_launcher_manifest(name): - manifest = pkg_resources.resource_string(__name__, 'launcher manifest.xml') - if six.PY2: - return manifest % vars() - else: - return manifest.decode('utf-8') % vars() - - -def rmtree(path, ignore_errors=False, onerror=auto_chmod): - return shutil.rmtree(path, ignore_errors, onerror) - - -def current_umask(): - tmp = os.umask(0o022) - os.umask(tmp) - return tmp - - -def bootstrap(): - # This function is called when setuptools*.egg is run using /bin/sh - import setuptools - - argv0 = os.path.dirname(setuptools.__path__[0]) - sys.argv[0] = argv0 - sys.argv.append(argv0) - main() - - -def main(argv=None, **kw): - from setuptools import setup - from setuptools.dist import Distribution - - class DistributionWithoutHelpCommands(Distribution): - common_usage = "" - - def _show_help(self, *args, **kw): - with _patch_usage(): - Distribution._show_help(self, *args, **kw) - - if argv is None: - argv = sys.argv[1:] - - with _patch_usage(): - setup( - script_args=['-q', 'easy_install', '-v'] + argv, - script_name=sys.argv[0] or 'easy_install', - distclass=DistributionWithoutHelpCommands, - **kw - ) - - -@contextlib.contextmanager -def _patch_usage(): - import distutils.core - USAGE = textwrap.dedent(""" - usage: %(script)s [options] requirement_or_url ... - or: %(script)s --help - """).lstrip() - - def gen_usage(script_name): - return USAGE % dict( - script=os.path.basename(script_name), - ) - - saved = distutils.core.gen_usage - distutils.core.gen_usage = gen_usage - try: - yield - finally: - distutils.core.gen_usage = saved diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/egg_info.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/egg_info.py deleted file mode 100644 index 6cc8f4c4..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/egg_info.py +++ /dev/null @@ -1,697 +0,0 @@ -"""setuptools.command.egg_info - -Create a distribution's .egg-info directory and contents""" - -from distutils.filelist import FileList as _FileList -from distutils.errors import DistutilsInternalError -from distutils.util import convert_path -from distutils import log -import distutils.errors -import distutils.filelist -import os -import re -import sys -import io -import warnings -import time -import collections - -from setuptools.extern import six -from setuptools.extern.six.moves import map - -from setuptools import Command -from setuptools.command.sdist import sdist -from setuptools.command.sdist import walk_revctrl -from setuptools.command.setopt import edit_config -from setuptools.command import bdist_egg -from pkg_resources import ( - parse_requirements, safe_name, parse_version, - safe_version, yield_lines, EntryPoint, iter_entry_points, to_filename) -import setuptools.unicode_utils as unicode_utils -from setuptools.glob import glob - -from pkg_resources.extern import packaging - -try: - from setuptools_svn import svn_utils -except ImportError: - pass - - -def translate_pattern(glob): - """ - Translate a file path glob like '*.txt' in to a regular expression. - This differs from fnmatch.translate which allows wildcards to match - directory separators. It also knows about '**/' which matches any number of - directories. - """ - pat = '' - - # This will split on '/' within [character classes]. This is deliberate. - chunks = glob.split(os.path.sep) - - sep = re.escape(os.sep) - valid_char = '[^%s]' % (sep,) - - for c, chunk in enumerate(chunks): - last_chunk = c == len(chunks) - 1 - - # Chunks that are a literal ** are globstars. They match anything. - if chunk == '**': - if last_chunk: - # Match anything if this is the last component - pat += '.*' - else: - # Match '(name/)*' - pat += '(?:%s+%s)*' % (valid_char, sep) - continue # Break here as the whole path component has been handled - - # Find any special characters in the remainder - i = 0 - chunk_len = len(chunk) - while i < chunk_len: - char = chunk[i] - if char == '*': - # Match any number of name characters - pat += valid_char + '*' - elif char == '?': - # Match a name character - pat += valid_char - elif char == '[': - # Character class - inner_i = i + 1 - # Skip initial !/] chars - if inner_i < chunk_len and chunk[inner_i] == '!': - inner_i = inner_i + 1 - if inner_i < chunk_len and chunk[inner_i] == ']': - inner_i = inner_i + 1 - - # Loop till the closing ] is found - while inner_i < chunk_len and chunk[inner_i] != ']': - inner_i = inner_i + 1 - - if inner_i >= chunk_len: - # Got to the end of the string without finding a closing ] - # Do not treat this as a matching group, but as a literal [ - pat += re.escape(char) - else: - # Grab the insides of the [brackets] - inner = chunk[i + 1:inner_i] - char_class = '' - - # Class negation - if inner[0] == '!': - char_class = '^' - inner = inner[1:] - - char_class += re.escape(inner) - pat += '[%s]' % (char_class,) - - # Skip to the end ] - i = inner_i - else: - pat += re.escape(char) - i += 1 - - # Join each chunk with the dir separator - if not last_chunk: - pat += sep - - return re.compile(pat + r'\Z(?ms)') - - -class egg_info(Command): - description = "create a distribution's .egg-info directory" - - user_options = [ - ('egg-base=', 'e', "directory containing .egg-info directories" - " (default: top of the source tree)"), - ('tag-svn-revision', 'r', - "Add subversion revision ID to version number"), - ('tag-date', 'd', "Add date stamp (e.g. 20050528) to version number"), - ('tag-build=', 'b', "Specify explicit tag to add to version number"), - ('no-svn-revision', 'R', - "Don't add subversion revision ID [default]"), - ('no-date', 'D', "Don't include date stamp [default]"), - ] - - boolean_options = ['tag-date', 'tag-svn-revision'] - negative_opt = { - 'no-svn-revision': 'tag-svn-revision', - 'no-date': 'tag-date', - } - - def initialize_options(self): - self.egg_name = None - self.egg_version = None - self.egg_base = None - self.egg_info = None - self.tag_build = None - self.tag_svn_revision = 0 - self.tag_date = 0 - self.broken_egg_info = False - self.vtags = None - - def save_version_info(self, filename): - """ - Materialize the values of svn_revision and date into the - build tag. Install these keys in a deterministic order - to avoid arbitrary reordering on subsequent builds. - """ - # python 2.6 compatibility - odict = getattr(collections, 'OrderedDict', dict) - egg_info = odict() - # follow the order these keys would have been added - # when PYTHONHASHSEED=0 - egg_info['tag_build'] = self.tags() - egg_info['tag_date'] = 0 - egg_info['tag_svn_revision'] = 0 - edit_config(filename, dict(egg_info=egg_info)) - - def finalize_options(self): - self.egg_name = safe_name(self.distribution.get_name()) - self.vtags = self.tags() - self.egg_version = self.tagged_version() - - parsed_version = parse_version(self.egg_version) - - try: - is_version = isinstance(parsed_version, packaging.version.Version) - spec = ( - "%s==%s" if is_version else "%s===%s" - ) - list( - parse_requirements(spec % (self.egg_name, self.egg_version)) - ) - except ValueError: - raise distutils.errors.DistutilsOptionError( - "Invalid distribution name or version syntax: %s-%s" % - (self.egg_name, self.egg_version) - ) - - if self.egg_base is None: - dirs = self.distribution.package_dir - self.egg_base = (dirs or {}).get('', os.curdir) - - self.ensure_dirname('egg_base') - self.egg_info = to_filename(self.egg_name) + '.egg-info' - if self.egg_base != os.curdir: - self.egg_info = os.path.join(self.egg_base, self.egg_info) - if '-' in self.egg_name: - self.check_broken_egg_info() - - # Set package version for the benefit of dumber commands - # (e.g. sdist, bdist_wininst, etc.) - # - self.distribution.metadata.version = self.egg_version - - # If we bootstrapped around the lack of a PKG-INFO, as might be the - # case in a fresh checkout, make sure that any special tags get added - # to the version info - # - pd = self.distribution._patched_dist - if pd is not None and pd.key == self.egg_name.lower(): - pd._version = self.egg_version - pd._parsed_version = parse_version(self.egg_version) - self.distribution._patched_dist = None - - def write_or_delete_file(self, what, filename, data, force=False): - """Write `data` to `filename` or delete if empty - - If `data` is non-empty, this routine is the same as ``write_file()``. - If `data` is empty but not ``None``, this is the same as calling - ``delete_file(filename)`. If `data` is ``None``, then this is a no-op - unless `filename` exists, in which case a warning is issued about the - orphaned file (if `force` is false), or deleted (if `force` is true). - """ - if data: - self.write_file(what, filename, data) - elif os.path.exists(filename): - if data is None and not force: - log.warn( - "%s not set in setup(), but %s exists", what, filename - ) - return - else: - self.delete_file(filename) - - def write_file(self, what, filename, data): - """Write `data` to `filename` (if not a dry run) after announcing it - - `what` is used in a log message to identify what is being written - to the file. - """ - log.info("writing %s to %s", what, filename) - if six.PY3: - data = data.encode("utf-8") - if not self.dry_run: - f = open(filename, 'wb') - f.write(data) - f.close() - - def delete_file(self, filename): - """Delete `filename` (if not a dry run) after announcing it""" - log.info("deleting %s", filename) - if not self.dry_run: - os.unlink(filename) - - def tagged_version(self): - version = self.distribution.get_version() - # egg_info may be called more than once for a distribution, - # in which case the version string already contains all tags. - if self.vtags and version.endswith(self.vtags): - return safe_version(version) - return safe_version(version + self.vtags) - - def run(self): - self.mkpath(self.egg_info) - installer = self.distribution.fetch_build_egg - for ep in iter_entry_points('egg_info.writers'): - ep.require(installer=installer) - writer = ep.resolve() - writer(self, ep.name, os.path.join(self.egg_info, ep.name)) - - # Get rid of native_libs.txt if it was put there by older bdist_egg - nl = os.path.join(self.egg_info, "native_libs.txt") - if os.path.exists(nl): - self.delete_file(nl) - - self.find_sources() - - def tags(self): - version = '' - if self.tag_build: - version += self.tag_build - if self.tag_svn_revision: - warnings.warn( - "tag_svn_revision is deprecated and will not be honored " - "in a future release" - ) - version += '-r%s' % self.get_svn_revision() - if self.tag_date: - version += time.strftime("-%Y%m%d") - return version - - @staticmethod - def get_svn_revision(): - if 'svn_utils' not in globals(): - return "0" - return str(svn_utils.SvnInfo.load(os.curdir).get_revision()) - - def find_sources(self): - """Generate SOURCES.txt manifest file""" - manifest_filename = os.path.join(self.egg_info, "SOURCES.txt") - mm = manifest_maker(self.distribution) - mm.manifest = manifest_filename - mm.run() - self.filelist = mm.filelist - - def check_broken_egg_info(self): - bei = self.egg_name + '.egg-info' - if self.egg_base != os.curdir: - bei = os.path.join(self.egg_base, bei) - if os.path.exists(bei): - log.warn( - "-" * 78 + '\n' - "Note: Your current .egg-info directory has a '-' in its name;" - '\nthis will not work correctly with "setup.py develop".\n\n' - 'Please rename %s to %s to correct this problem.\n' + '-' * 78, - bei, self.egg_info - ) - self.broken_egg_info = self.egg_info - self.egg_info = bei # make it work for now - - -class FileList(_FileList): - # Implementations of the various MANIFEST.in commands - - def process_template_line(self, line): - # Parse the line: split it up, make sure the right number of words - # is there, and return the relevant words. 'action' is always - # defined: it's the first word of the line. Which of the other - # three are defined depends on the action; it'll be either - # patterns, (dir and patterns), or (dir_pattern). - (action, patterns, dir, dir_pattern) = self._parse_template_line(line) - - # OK, now we know that the action is valid and we have the - # right number of words on the line for that action -- so we - # can proceed with minimal error-checking. - if action == 'include': - self.debug_print("include " + ' '.join(patterns)) - for pattern in patterns: - if not self.include(pattern): - log.warn("warning: no files found matching '%s'", pattern) - - elif action == 'exclude': - self.debug_print("exclude " + ' '.join(patterns)) - for pattern in patterns: - if not self.exclude(pattern): - log.warn(("warning: no previously-included files " - "found matching '%s'"), pattern) - - elif action == 'global-include': - self.debug_print("global-include " + ' '.join(patterns)) - for pattern in patterns: - if not self.global_include(pattern): - log.warn(("warning: no files found matching '%s' " - "anywhere in distribution"), pattern) - - elif action == 'global-exclude': - self.debug_print("global-exclude " + ' '.join(patterns)) - for pattern in patterns: - if not self.global_exclude(pattern): - log.warn(("warning: no previously-included files matching " - "'%s' found anywhere in distribution"), - pattern) - - elif action == 'recursive-include': - self.debug_print("recursive-include %s %s" % - (dir, ' '.join(patterns))) - for pattern in patterns: - if not self.recursive_include(dir, pattern): - log.warn(("warning: no files found matching '%s' " - "under directory '%s'"), - pattern, dir) - - elif action == 'recursive-exclude': - self.debug_print("recursive-exclude %s %s" % - (dir, ' '.join(patterns))) - for pattern in patterns: - if not self.recursive_exclude(dir, pattern): - log.warn(("warning: no previously-included files matching " - "'%s' found under directory '%s'"), - pattern, dir) - - elif action == 'graft': - self.debug_print("graft " + dir_pattern) - if not self.graft(dir_pattern): - log.warn("warning: no directories found matching '%s'", - dir_pattern) - - elif action == 'prune': - self.debug_print("prune " + dir_pattern) - if not self.prune(dir_pattern): - log.warn(("no previously-included directories found " - "matching '%s'"), dir_pattern) - - else: - raise DistutilsInternalError( - "this cannot happen: invalid action '%s'" % action) - - def _remove_files(self, predicate): - """ - Remove all files from the file list that match the predicate. - Return True if any matching files were removed - """ - found = False - for i in range(len(self.files) - 1, -1, -1): - if predicate(self.files[i]): - self.debug_print(" removing " + self.files[i]) - del self.files[i] - found = True - return found - - def include(self, pattern): - """Include files that match 'pattern'.""" - found = [f for f in glob(pattern) if not os.path.isdir(f)] - self.extend(found) - return bool(found) - - def exclude(self, pattern): - """Exclude files that match 'pattern'.""" - match = translate_pattern(pattern) - return self._remove_files(match.match) - - def recursive_include(self, dir, pattern): - """ - Include all files anywhere in 'dir/' that match the pattern. - """ - full_pattern = os.path.join(dir, '**', pattern) - found = [f for f in glob(full_pattern, recursive=True) - if not os.path.isdir(f)] - self.extend(found) - return bool(found) - - def recursive_exclude(self, dir, pattern): - """ - Exclude any file anywhere in 'dir/' that match the pattern. - """ - match = translate_pattern(os.path.join(dir, '**', pattern)) - return self._remove_files(match.match) - - def graft(self, dir): - """Include all files from 'dir/'.""" - found = distutils.filelist.findall(dir) - self.extend(found) - return bool(found) - - def prune(self, dir): - """Filter out files from 'dir/'.""" - match = translate_pattern(os.path.join(dir, '**')) - return self._remove_files(match.match) - - def global_include(self, pattern): - """ - Include all files anywhere in the current directory that match the - pattern. This is very inefficient on large file trees. - """ - if self.allfiles is None: - self.findall() - match = translate_pattern(os.path.join('**', pattern)) - found = [f for f in self.allfiles if match.match(f)] - self.extend(found) - return bool(found) - - def global_exclude(self, pattern): - """ - Exclude all files anywhere that match the pattern. - """ - match = translate_pattern(os.path.join('**', pattern)) - return self._remove_files(match.match) - - def append(self, item): - if item.endswith('\r'): # Fix older sdists built on Windows - item = item[:-1] - path = convert_path(item) - - if self._safe_path(path): - self.files.append(path) - - def extend(self, paths): - self.files.extend(filter(self._safe_path, paths)) - - def _repair(self): - """ - Replace self.files with only safe paths - - Because some owners of FileList manipulate the underlying - ``files`` attribute directly, this method must be called to - repair those paths. - """ - self.files = list(filter(self._safe_path, self.files)) - - def _safe_path(self, path): - enc_warn = "'%s' not %s encodable -- skipping" - - # To avoid accidental trans-codings errors, first to unicode - u_path = unicode_utils.filesys_decode(path) - if u_path is None: - log.warn("'%s' in unexpected encoding -- skipping" % path) - return False - - # Must ensure utf-8 encodability - utf8_path = unicode_utils.try_encode(u_path, "utf-8") - if utf8_path is None: - log.warn(enc_warn, path, 'utf-8') - return False - - try: - # accept is either way checks out - if os.path.exists(u_path) or os.path.exists(utf8_path): - return True - # this will catch any encode errors decoding u_path - except UnicodeEncodeError: - log.warn(enc_warn, path, sys.getfilesystemencoding()) - - -class manifest_maker(sdist): - template = "MANIFEST.in" - - def initialize_options(self): - self.use_defaults = 1 - self.prune = 1 - self.manifest_only = 1 - self.force_manifest = 1 - - def finalize_options(self): - pass - - def run(self): - self.filelist = FileList() - if not os.path.exists(self.manifest): - self.write_manifest() # it must exist so it'll get in the list - self.add_defaults() - if os.path.exists(self.template): - self.read_template() - self.prune_file_list() - self.filelist.sort() - self.filelist.remove_duplicates() - self.write_manifest() - - def _manifest_normalize(self, path): - path = unicode_utils.filesys_decode(path) - return path.replace(os.sep, '/') - - def write_manifest(self): - """ - Write the file list in 'self.filelist' to the manifest file - named by 'self.manifest'. - """ - self.filelist._repair() - - # Now _repairs should encodability, but not unicode - files = [self._manifest_normalize(f) for f in self.filelist.files] - msg = "writing manifest file '%s'" % self.manifest - self.execute(write_file, (self.manifest, files), msg) - - def warn(self, msg): # suppress missing-file warnings from sdist - if not msg.startswith("standard file not found:"): - sdist.warn(self, msg) - - def add_defaults(self): - sdist.add_defaults(self) - self.filelist.append(self.template) - self.filelist.append(self.manifest) - rcfiles = list(walk_revctrl()) - if rcfiles: - self.filelist.extend(rcfiles) - elif os.path.exists(self.manifest): - self.read_manifest() - ei_cmd = self.get_finalized_command('egg_info') - self.filelist.graft(ei_cmd.egg_info) - - def prune_file_list(self): - build = self.get_finalized_command('build') - base_dir = self.distribution.get_fullname() - self.filelist.prune(build.build_base) - self.filelist.prune(base_dir) - sep = re.escape(os.sep) - self.filelist.exclude_pattern(r'(^|' + sep + r')(RCS|CVS|\.svn)' + sep, - is_regex=1) - - -def write_file(filename, contents): - """Create a file with the specified name and write 'contents' (a - sequence of strings without line terminators) to it. - """ - contents = "\n".join(contents) - - # assuming the contents has been vetted for utf-8 encoding - contents = contents.encode("utf-8") - - with open(filename, "wb") as f: # always write POSIX-style manifest - f.write(contents) - - -def write_pkg_info(cmd, basename, filename): - log.info("writing %s", filename) - if not cmd.dry_run: - metadata = cmd.distribution.metadata - metadata.version, oldver = cmd.egg_version, metadata.version - metadata.name, oldname = cmd.egg_name, metadata.name - try: - # write unescaped data to PKG-INFO, so older pkg_resources - # can still parse it - metadata.write_pkg_info(cmd.egg_info) - finally: - metadata.name, metadata.version = oldname, oldver - - safe = getattr(cmd.distribution, 'zip_safe', None) - - bdist_egg.write_safety_flag(cmd.egg_info, safe) - - -def warn_depends_obsolete(cmd, basename, filename): - if os.path.exists(filename): - log.warn( - "WARNING: 'depends.txt' is not used by setuptools 0.6!\n" - "Use the install_requires/extras_require setup() args instead." - ) - - -def _write_requirements(stream, reqs): - lines = yield_lines(reqs or ()) - append_cr = lambda line: line + '\n' - lines = map(append_cr, lines) - stream.writelines(lines) - - -def write_requirements(cmd, basename, filename): - dist = cmd.distribution - data = six.StringIO() - _write_requirements(data, dist.install_requires) - extras_require = dist.extras_require or {} - for extra in sorted(extras_require): - data.write('\n[{extra}]\n'.format(**vars())) - _write_requirements(data, extras_require[extra]) - cmd.write_or_delete_file("requirements", filename, data.getvalue()) - - -def write_setup_requirements(cmd, basename, filename): - data = StringIO() - _write_requirements(data, cmd.distribution.setup_requires) - cmd.write_or_delete_file("setup-requirements", filename, data.getvalue()) - - -def write_toplevel_names(cmd, basename, filename): - pkgs = dict.fromkeys( - [ - k.split('.', 1)[0] - for k in cmd.distribution.iter_distribution_names() - ] - ) - cmd.write_file("top-level names", filename, '\n'.join(sorted(pkgs)) + '\n') - - -def overwrite_arg(cmd, basename, filename): - write_arg(cmd, basename, filename, True) - - -def write_arg(cmd, basename, filename, force=False): - argname = os.path.splitext(basename)[0] - value = getattr(cmd.distribution, argname, None) - if value is not None: - value = '\n'.join(value) + '\n' - cmd.write_or_delete_file(argname, filename, value, force) - - -def write_entries(cmd, basename, filename): - ep = cmd.distribution.entry_points - - if isinstance(ep, six.string_types) or ep is None: - data = ep - elif ep is not None: - data = [] - for section, contents in sorted(ep.items()): - if not isinstance(contents, six.string_types): - contents = EntryPoint.parse_group(section, contents) - contents = '\n'.join(sorted(map(str, contents.values()))) - data.append('[%s]\n%s\n\n' % (section, contents)) - data = ''.join(data) - - cmd.write_or_delete_file('entry points', filename, data, True) - - -def get_pkg_info_revision(): - """ - Get a -r### off of PKG-INFO Version in case this is an sdist of - a subversion revision. - """ - warnings.warn("get_pkg_info_revision is deprecated.", DeprecationWarning) - if os.path.exists('PKG-INFO'): - with io.open('PKG-INFO') as f: - for line in f: - match = re.match(r"Version:.*-r(\d+)\s*$", line) - if match: - return int(match.group(1)) - return 0 diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install.py deleted file mode 100644 index 31a5ddb5..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install.py +++ /dev/null @@ -1,125 +0,0 @@ -from distutils.errors import DistutilsArgError -import inspect -import glob -import warnings -import platform -import distutils.command.install as orig - -import setuptools - -# Prior to numpy 1.9, NumPy relies on the '_install' name, so provide it for -# now. See https://github.com/pypa/setuptools/issues/199/ -_install = orig.install - - -class install(orig.install): - """Use easy_install to install the package, w/dependencies""" - - user_options = orig.install.user_options + [ - ('old-and-unmanageable', None, "Try not to use this!"), - ('single-version-externally-managed', None, - "used by system package builders to create 'flat' eggs"), - ] - boolean_options = orig.install.boolean_options + [ - 'old-and-unmanageable', 'single-version-externally-managed', - ] - new_commands = [ - ('install_egg_info', lambda self: True), - ('install_scripts', lambda self: True), - ] - _nc = dict(new_commands) - - def initialize_options(self): - orig.install.initialize_options(self) - self.old_and_unmanageable = None - self.single_version_externally_managed = None - - def finalize_options(self): - orig.install.finalize_options(self) - if self.root: - self.single_version_externally_managed = True - elif self.single_version_externally_managed: - if not self.root and not self.record: - raise DistutilsArgError( - "You must specify --record or --root when building system" - " packages" - ) - - def handle_extra_path(self): - if self.root or self.single_version_externally_managed: - # explicit backward-compatibility mode, allow extra_path to work - return orig.install.handle_extra_path(self) - - # Ignore extra_path when installing an egg (or being run by another - # command without --root or --single-version-externally-managed - self.path_file = None - self.extra_dirs = '' - - def run(self): - # Explicit request for old-style install? Just do it - if self.old_and_unmanageable or self.single_version_externally_managed: - return orig.install.run(self) - - if not self._called_from_setup(inspect.currentframe()): - # Run in backward-compatibility mode to support bdist_* commands. - orig.install.run(self) - else: - self.do_egg_install() - - @staticmethod - def _called_from_setup(run_frame): - """ - Attempt to detect whether run() was called from setup() or by another - command. If called by setup(), the parent caller will be the - 'run_command' method in 'distutils.dist', and *its* caller will be - the 'run_commands' method. If called any other way, the - immediate caller *might* be 'run_command', but it won't have been - called by 'run_commands'. Return True in that case or if a call stack - is unavailable. Return False otherwise. - """ - if run_frame is None: - msg = "Call stack not available. bdist_* commands may fail." - warnings.warn(msg) - if platform.python_implementation() == 'IronPython': - msg = "For best results, pass -X:Frames to enable call stack." - warnings.warn(msg) - return True - res = inspect.getouterframes(run_frame)[2] - caller, = res[:1] - info = inspect.getframeinfo(caller) - caller_module = caller.f_globals.get('__name__', '') - return ( - caller_module == 'distutils.dist' - and info.function == 'run_commands' - ) - - def do_egg_install(self): - - easy_install = self.distribution.get_command_class('easy_install') - - cmd = easy_install( - self.distribution, args="x", root=self.root, record=self.record, - ) - cmd.ensure_finalized() # finalize before bdist_egg munges install cmd - cmd.always_copy_from = '.' # make sure local-dir eggs get installed - - # pick up setup-dir .egg files only: no .egg-info - cmd.package_index.scan(glob.glob('*.egg')) - - self.run_command('bdist_egg') - args = [self.distribution.get_command_obj('bdist_egg').egg_output] - - if setuptools.bootstrap_install_from: - # Bootstrap self-installation of setuptools - args.insert(0, setuptools.bootstrap_install_from) - - cmd.args = args - cmd.run() - setuptools.bootstrap_install_from = None - - -# XXX Python 3.1 doesn't see _nc if this is inside the class -install.sub_commands = ( - [cmd for cmd in orig.install.sub_commands if cmd[0] not in install._nc] + - install.new_commands -) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install_egg_info.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install_egg_info.py deleted file mode 100644 index edc4718b..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install_egg_info.py +++ /dev/null @@ -1,62 +0,0 @@ -from distutils import log, dir_util -import os - -from setuptools import Command -from setuptools import namespaces -from setuptools.archive_util import unpack_archive -import pkg_resources - - -class install_egg_info(namespaces.Installer, Command): - """Install an .egg-info directory for the package""" - - description = "Install an .egg-info directory for the package" - - user_options = [ - ('install-dir=', 'd', "directory to install to"), - ] - - def initialize_options(self): - self.install_dir = None - - def finalize_options(self): - self.set_undefined_options('install_lib', - ('install_dir', 'install_dir')) - ei_cmd = self.get_finalized_command("egg_info") - basename = pkg_resources.Distribution( - None, None, ei_cmd.egg_name, ei_cmd.egg_version - ).egg_name() + '.egg-info' - self.source = ei_cmd.egg_info - self.target = os.path.join(self.install_dir, basename) - self.outputs = [] - - def run(self): - self.run_command('egg_info') - if os.path.isdir(self.target) and not os.path.islink(self.target): - dir_util.remove_tree(self.target, dry_run=self.dry_run) - elif os.path.exists(self.target): - self.execute(os.unlink, (self.target,), "Removing " + self.target) - if not self.dry_run: - pkg_resources.ensure_directory(self.target) - self.execute( - self.copytree, (), "Copying %s to %s" % (self.source, self.target) - ) - self.install_namespaces() - - def get_outputs(self): - return self.outputs - - def copytree(self): - # Copy the .egg-info tree to site-packages - def skimmer(src, dst): - # filter out source-control directories; note that 'src' is always - # a '/'-separated path, regardless of platform. 'dst' is a - # platform-specific path. - for skip in '.svn/', 'CVS/': - if src.startswith(skip) or '/' + skip in src: - return None - self.outputs.append(dst) - log.debug("Copying %s to %s", src, dst) - return dst - - unpack_archive(self.source, self.target, skimmer) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install_lib.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install_lib.py deleted file mode 100644 index 2b31c3e3..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install_lib.py +++ /dev/null @@ -1,121 +0,0 @@ -import os -import imp -from itertools import product, starmap -import distutils.command.install_lib as orig - - -class install_lib(orig.install_lib): - """Don't add compiled flags to filenames of non-Python files""" - - def run(self): - self.build() - outfiles = self.install() - if outfiles is not None: - # always compile, in case we have any extension stubs to deal with - self.byte_compile(outfiles) - - def get_exclusions(self): - """ - Return a collections.Sized collections.Container of paths to be - excluded for single_version_externally_managed installations. - """ - all_packages = ( - pkg - for ns_pkg in self._get_SVEM_NSPs() - for pkg in self._all_packages(ns_pkg) - ) - - excl_specs = product(all_packages, self._gen_exclusion_paths()) - return set(starmap(self._exclude_pkg_path, excl_specs)) - - def _exclude_pkg_path(self, pkg, exclusion_path): - """ - Given a package name and exclusion path within that package, - compute the full exclusion path. - """ - parts = pkg.split('.') + [exclusion_path] - return os.path.join(self.install_dir, *parts) - - @staticmethod - def _all_packages(pkg_name): - """ - >>> list(install_lib._all_packages('foo.bar.baz')) - ['foo.bar.baz', 'foo.bar', 'foo'] - """ - while pkg_name: - yield pkg_name - pkg_name, sep, child = pkg_name.rpartition('.') - - def _get_SVEM_NSPs(self): - """ - Get namespace packages (list) but only for - single_version_externally_managed installations and empty otherwise. - """ - # TODO: is it necessary to short-circuit here? i.e. what's the cost - # if get_finalized_command is called even when namespace_packages is - # False? - if not self.distribution.namespace_packages: - return [] - - install_cmd = self.get_finalized_command('install') - svem = install_cmd.single_version_externally_managed - - return self.distribution.namespace_packages if svem else [] - - @staticmethod - def _gen_exclusion_paths(): - """ - Generate file paths to be excluded for namespace packages (bytecode - cache files). - """ - # always exclude the package module itself - yield '__init__.py' - - yield '__init__.pyc' - yield '__init__.pyo' - - if not hasattr(imp, 'get_tag'): - return - - base = os.path.join('__pycache__', '__init__.' + imp.get_tag()) - yield base + '.pyc' - yield base + '.pyo' - yield base + '.opt-1.pyc' - yield base + '.opt-2.pyc' - - def copy_tree( - self, infile, outfile, - preserve_mode=1, preserve_times=1, preserve_symlinks=0, level=1 - ): - assert preserve_mode and preserve_times and not preserve_symlinks - exclude = self.get_exclusions() - - if not exclude: - return orig.install_lib.copy_tree(self, infile, outfile) - - # Exclude namespace package __init__.py* files from the output - - from setuptools.archive_util import unpack_directory - from distutils import log - - outfiles = [] - - def pf(src, dst): - if dst in exclude: - log.warn("Skipping installation of %s (namespace package)", - dst) - return False - - log.info("copying %s -> %s", src, os.path.dirname(dst)) - outfiles.append(dst) - return dst - - unpack_directory(infile, outfile, pf) - return outfiles - - def get_outputs(self): - outputs = orig.install_lib.get_outputs(self) - exclude = self.get_exclusions() - if exclude: - return [f for f in outputs if f not in exclude] - return outputs diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install_scripts.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install_scripts.py deleted file mode 100644 index 16234273..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/install_scripts.py +++ /dev/null @@ -1,65 +0,0 @@ -from distutils import log -import distutils.command.install_scripts as orig -import os -import sys - -from pkg_resources import Distribution, PathMetadata, ensure_directory - - -class install_scripts(orig.install_scripts): - """Do normal script install, plus any egg_info wrapper scripts""" - - def initialize_options(self): - orig.install_scripts.initialize_options(self) - self.no_ep = False - - def run(self): - import setuptools.command.easy_install as ei - - self.run_command("egg_info") - if self.distribution.scripts: - orig.install_scripts.run(self) # run first to set up self.outfiles - else: - self.outfiles = [] - if self.no_ep: - # don't install entry point scripts into .egg file! - return - - ei_cmd = self.get_finalized_command("egg_info") - dist = Distribution( - ei_cmd.egg_base, PathMetadata(ei_cmd.egg_base, ei_cmd.egg_info), - ei_cmd.egg_name, ei_cmd.egg_version, - ) - bs_cmd = self.get_finalized_command('build_scripts') - exec_param = getattr(bs_cmd, 'executable', None) - bw_cmd = self.get_finalized_command("bdist_wininst") - is_wininst = getattr(bw_cmd, '_is_running', False) - writer = ei.ScriptWriter - if is_wininst: - exec_param = "python.exe" - writer = ei.WindowsScriptWriter - if exec_param == sys.executable: - # In case the path to the Python executable contains a space, wrap - # it so it's not split up. - exec_param = [exec_param] - # resolve the writer to the environment - writer = writer.best() - cmd = writer.command_spec_class.best().from_param(exec_param) - for args in writer.get_args(dist, cmd.as_header()): - self.write_script(*args) - - def write_script(self, script_name, contents, mode="t", *ignored): - """Write an executable file to the scripts directory""" - from setuptools.command.easy_install import chmod, current_umask - - log.info("Installing %s script to %s", script_name, self.install_dir) - target = os.path.join(self.install_dir, script_name) - self.outfiles.append(target) - - mask = current_umask() - if not self.dry_run: - ensure_directory(target) - f = open(target, "w" + mode) - f.write(contents) - f.close() - chmod(target, 0o777 - mask) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/launcher manifest.xml b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/launcher manifest.xml deleted file mode 100644 index 5972a96d..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/launcher manifest.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> - <assemblyIdentity version="1.0.0.0" - processorArchitecture="X86" - name="%(name)s" - type="win32"/> - <!-- Identify the application security requirements. --> - <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> - <security> - <requestedPrivileges> - <requestedExecutionLevel level="asInvoker" uiAccess="false"/> - </requestedPrivileges> - </security> - </trustInfo> -</assembly> diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/py36compat.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/py36compat.py deleted file mode 100644 index 61063e75..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/py36compat.py +++ /dev/null @@ -1,136 +0,0 @@ -import os -from glob import glob -from distutils.util import convert_path -from distutils.command import sdist - -from setuptools.extern.six.moves import filter - - -class sdist_add_defaults: - """ - Mix-in providing forward-compatibility for functionality as found in - distutils on Python 3.7. - - Do not edit the code in this class except to update functionality - as implemented in distutils. Instead, override in the subclass. - """ - - def add_defaults(self): - """Add all the default files to self.filelist: - - README or README.txt - - setup.py - - test/test*.py - - all pure Python modules mentioned in setup script - - all files pointed by package_data (build_py) - - all files defined in data_files. - - all files defined as scripts. - - all C sources listed as part of extensions or C libraries - in the setup script (doesn't catch C headers!) - Warns if (README or README.txt) or setup.py are missing; everything - else is optional. - """ - self._add_defaults_standards() - self._add_defaults_optional() - self._add_defaults_python() - self._add_defaults_data_files() - self._add_defaults_ext() - self._add_defaults_c_libs() - self._add_defaults_scripts() - - @staticmethod - def _cs_path_exists(fspath): - """ - Case-sensitive path existence check - - >>> sdist_add_defaults._cs_path_exists(__file__) - True - >>> sdist_add_defaults._cs_path_exists(__file__.upper()) - False - """ - if not os.path.exists(fspath): - return False - # make absolute so we always have a directory - abspath = os.path.abspath(fspath) - directory, filename = os.path.split(abspath) - return filename in os.listdir(directory) - - def _add_defaults_standards(self): - standards = [self.READMES, self.distribution.script_name] - for fn in standards: - if isinstance(fn, tuple): - alts = fn - got_it = False - for fn in alts: - if self._cs_path_exists(fn): - got_it = True - self.filelist.append(fn) - break - - if not got_it: - self.warn("standard file not found: should have one of " + - ', '.join(alts)) - else: - if self._cs_path_exists(fn): - self.filelist.append(fn) - else: - self.warn("standard file '%s' not found" % fn) - - def _add_defaults_optional(self): - optional = ['test/test*.py', 'setup.cfg'] - for pattern in optional: - files = filter(os.path.isfile, glob(pattern)) - self.filelist.extend(files) - - def _add_defaults_python(self): - # build_py is used to get: - # - python modules - # - files defined in package_data - build_py = self.get_finalized_command('build_py') - - # getting python files - if self.distribution.has_pure_modules(): - self.filelist.extend(build_py.get_source_files()) - - # getting package_data files - # (computed in build_py.data_files by build_py.finalize_options) - for pkg, src_dir, build_dir, filenames in build_py.data_files: - for filename in filenames: - self.filelist.append(os.path.join(src_dir, filename)) - - def _add_defaults_data_files(self): - # getting distribution.data_files - if self.distribution.has_data_files(): - for item in self.distribution.data_files: - if isinstance(item, str): - # plain file - item = convert_path(item) - if os.path.isfile(item): - self.filelist.append(item) - else: - # a (dirname, filenames) tuple - dirname, filenames = item - for f in filenames: - f = convert_path(f) - if os.path.isfile(f): - self.filelist.append(f) - - def _add_defaults_ext(self): - if self.distribution.has_ext_modules(): - build_ext = self.get_finalized_command('build_ext') - self.filelist.extend(build_ext.get_source_files()) - - def _add_defaults_c_libs(self): - if self.distribution.has_c_libraries(): - build_clib = self.get_finalized_command('build_clib') - self.filelist.extend(build_clib.get_source_files()) - - def _add_defaults_scripts(self): - if self.distribution.has_scripts(): - build_scripts = self.get_finalized_command('build_scripts') - self.filelist.extend(build_scripts.get_source_files()) - - -if hasattr(sdist.sdist, '_add_defaults_standards'): - # disable the functionality already available upstream - class sdist_add_defaults: - pass diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/register.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/register.py deleted file mode 100644 index 8d6336a1..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/register.py +++ /dev/null @@ -1,10 +0,0 @@ -import distutils.command.register as orig - - -class register(orig.register): - __doc__ = orig.register.__doc__ - - def run(self): - # Make sure that we are using valid current name/version info - self.run_command('egg_info') - orig.register.run(self) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/rotate.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/rotate.py deleted file mode 100644 index b89353f5..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/rotate.py +++ /dev/null @@ -1,66 +0,0 @@ -from distutils.util import convert_path -from distutils import log -from distutils.errors import DistutilsOptionError -import os -import shutil - -from setuptools.extern import six - -from setuptools import Command - - -class rotate(Command): - """Delete older distributions""" - - description = "delete older distributions, keeping N newest files" - user_options = [ - ('match=', 'm', "patterns to match (required)"), - ('dist-dir=', 'd', "directory where the distributions are"), - ('keep=', 'k', "number of matching distributions to keep"), - ] - - boolean_options = [] - - def initialize_options(self): - self.match = None - self.dist_dir = None - self.keep = None - - def finalize_options(self): - if self.match is None: - raise DistutilsOptionError( - "Must specify one or more (comma-separated) match patterns " - "(e.g. '.zip' or '.egg')" - ) - if self.keep is None: - raise DistutilsOptionError("Must specify number of files to keep") - try: - self.keep = int(self.keep) - except ValueError: - raise DistutilsOptionError("--keep must be an integer") - if isinstance(self.match, six.string_types): - self.match = [ - convert_path(p.strip()) for p in self.match.split(',') - ] - self.set_undefined_options('bdist', ('dist_dir', 'dist_dir')) - - def run(self): - self.run_command("egg_info") - from glob import glob - - for pattern in self.match: - pattern = self.distribution.get_name() + '*' + pattern - files = glob(os.path.join(self.dist_dir, pattern)) - files = [(os.path.getmtime(f), f) for f in files] - files.sort() - files.reverse() - - log.info("%d file(s) matching %s", len(files), pattern) - files = files[self.keep:] - for (t, f) in files: - log.info("Deleting %s", f) - if not self.dry_run: - if os.path.isdir(f): - shutil.rmtree(f) - else: - os.unlink(f) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/saveopts.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/saveopts.py deleted file mode 100644 index 611cec55..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/saveopts.py +++ /dev/null @@ -1,22 +0,0 @@ -from setuptools.command.setopt import edit_config, option_base - - -class saveopts(option_base): - """Save command-line options to a file""" - - description = "save supplied options to setup.cfg or other config file" - - def run(self): - dist = self.distribution - settings = {} - - for cmd in dist.command_options: - - if cmd == 'saveopts': - continue # don't save our own options! - - for opt, (src, val) in dist.get_option_dict(cmd).items(): - if src == "command line": - settings.setdefault(cmd, {})[opt] = val - - edit_config(self.filename, settings, self.dry_run) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/sdist.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/sdist.py deleted file mode 100644 index 9975753d..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/sdist.py +++ /dev/null @@ -1,202 +0,0 @@ -from distutils import log -import distutils.command.sdist as orig -import os -import sys -import io -import contextlib - -from setuptools.extern import six - -from .py36compat import sdist_add_defaults - -import pkg_resources - -_default_revctrl = list - - -def walk_revctrl(dirname=''): - """Find all files under revision control""" - for ep in pkg_resources.iter_entry_points('setuptools.file_finders'): - for item in ep.load()(dirname): - yield item - - -class sdist(sdist_add_defaults, orig.sdist): - """Smart sdist that finds anything supported by revision control""" - - user_options = [ - ('formats=', None, - "formats for source distribution (comma-separated list)"), - ('keep-temp', 'k', - "keep the distribution tree around after creating " + - "archive file(s)"), - ('dist-dir=', 'd', - "directory to put the source distribution archive(s) in " - "[default: dist]"), - ] - - negative_opt = {} - - READMES = 'README', 'README.rst', 'README.txt' - - def run(self): - self.run_command('egg_info') - ei_cmd = self.get_finalized_command('egg_info') - self.filelist = ei_cmd.filelist - self.filelist.append(os.path.join(ei_cmd.egg_info, 'SOURCES.txt')) - self.check_readme() - - # Run sub commands - for cmd_name in self.get_sub_commands(): - self.run_command(cmd_name) - - # Call check_metadata only if no 'check' command - # (distutils <= 2.6) - import distutils.command - - if 'check' not in distutils.command.__all__: - self.check_metadata() - - self.make_distribution() - - dist_files = getattr(self.distribution, 'dist_files', []) - for file in self.archive_files: - data = ('sdist', '', file) - if data not in dist_files: - dist_files.append(data) - - def initialize_options(self): - orig.sdist.initialize_options(self) - - self._default_to_gztar() - - def _default_to_gztar(self): - # only needed on Python prior to 3.6. - if sys.version_info >= (3, 6, 0, 'beta', 1): - return - self.formats = ['gztar'] - - def make_distribution(self): - """ - Workaround for #516 - """ - with self._remove_os_link(): - orig.sdist.make_distribution(self) - - @staticmethod - @contextlib.contextmanager - def _remove_os_link(): - """ - In a context, remove and restore os.link if it exists - """ - - class NoValue: - pass - - orig_val = getattr(os, 'link', NoValue) - try: - del os.link - except Exception: - pass - try: - yield - finally: - if orig_val is not NoValue: - setattr(os, 'link', orig_val) - - def __read_template_hack(self): - # This grody hack closes the template file (MANIFEST.in) if an - # exception occurs during read_template. - # Doing so prevents an error when easy_install attempts to delete the - # file. - try: - orig.sdist.read_template(self) - except Exception: - _, _, tb = sys.exc_info() - tb.tb_next.tb_frame.f_locals['template'].close() - raise - - # Beginning with Python 2.7.2, 3.1.4, and 3.2.1, this leaky file handle - # has been fixed, so only override the method if we're using an earlier - # Python. - has_leaky_handle = ( - sys.version_info < (2, 7, 2) - or (3, 0) <= sys.version_info < (3, 1, 4) - or (3, 2) <= sys.version_info < (3, 2, 1) - ) - if has_leaky_handle: - read_template = __read_template_hack - - def _add_defaults_python(self): - """getting python files""" - if self.distribution.has_pure_modules(): - build_py = self.get_finalized_command('build_py') - self.filelist.extend(build_py.get_source_files()) - # This functionality is incompatible with include_package_data, and - # will in fact create an infinite recursion if include_package_data - # is True. Use of include_package_data will imply that - # distutils-style automatic handling of package_data is disabled - if not self.distribution.include_package_data: - for _, src_dir, _, filenames in build_py.data_files: - self.filelist.extend([os.path.join(src_dir, filename) - for filename in filenames]) - - def _add_defaults_data_files(self): - """ - Don't add any data files, but why? - """ - - def check_readme(self): - for f in self.READMES: - if os.path.exists(f): - return - else: - self.warn( - "standard file not found: should have one of " + - ', '.join(self.READMES) - ) - - def make_release_tree(self, base_dir, files): - orig.sdist.make_release_tree(self, base_dir, files) - - # Save any egg_info command line options used to create this sdist - dest = os.path.join(base_dir, 'setup.cfg') - if hasattr(os, 'link') and os.path.exists(dest): - # unlink and re-copy, since it might be hard-linked, and - # we don't want to change the source version - os.unlink(dest) - self.copy_file('setup.cfg', dest) - - self.get_finalized_command('egg_info').save_version_info(dest) - - def _manifest_is_not_generated(self): - # check for special comment used in 2.7.1 and higher - if not os.path.isfile(self.manifest): - return False - - with io.open(self.manifest, 'rb') as fp: - first_line = fp.readline() - return (first_line != - '# file GENERATED by distutils, do NOT edit\n'.encode()) - - def read_manifest(self): - """Read the manifest file (named by 'self.manifest') and use it to - fill in 'self.filelist', the list of files to include in the source - distribution. - """ - log.info("reading manifest file '%s'", self.manifest) - manifest = open(self.manifest, 'rb') - for line in manifest: - # The manifest must contain UTF-8. See #303. - if six.PY3: - try: - line = line.decode('UTF-8') - except UnicodeDecodeError: - log.warn("%r not UTF-8 decodable -- skipping" % line) - continue - # ignore comments and blank lines - line = line.strip() - if line.startswith('#') or not line: - continue - self.filelist.append(line) - manifest.close() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/setopt.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/setopt.py deleted file mode 100644 index 7e57cc02..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/setopt.py +++ /dev/null @@ -1,149 +0,0 @@ -from distutils.util import convert_path -from distutils import log -from distutils.errors import DistutilsOptionError -import distutils -import os - -from setuptools.extern.six.moves import configparser - -from setuptools import Command - -__all__ = ['config_file', 'edit_config', 'option_base', 'setopt'] - - -def config_file(kind="local"): - """Get the filename of the distutils, local, global, or per-user config - - `kind` must be one of "local", "global", or "user" - """ - if kind == 'local': - return 'setup.cfg' - if kind == 'global': - return os.path.join( - os.path.dirname(distutils.__file__), 'distutils.cfg' - ) - if kind == 'user': - dot = os.name == 'posix' and '.' or '' - return os.path.expanduser(convert_path("~/%spydistutils.cfg" % dot)) - raise ValueError( - "config_file() type must be 'local', 'global', or 'user'", kind - ) - - -def edit_config(filename, settings, dry_run=False): - """Edit a configuration file to include `settings` - - `settings` is a dictionary of dictionaries or ``None`` values, keyed by - command/section name. A ``None`` value means to delete the entire section, - while a dictionary lists settings to be changed or deleted in that section. - A setting of ``None`` means to delete that setting. - """ - log.debug("Reading configuration from %s", filename) - opts = configparser.RawConfigParser() - opts.read([filename]) - for section, options in settings.items(): - if options is None: - log.info("Deleting section [%s] from %s", section, filename) - opts.remove_section(section) - else: - if not opts.has_section(section): - log.debug("Adding new section [%s] to %s", section, filename) - opts.add_section(section) - for option, value in options.items(): - if value is None: - log.debug( - "Deleting %s.%s from %s", - section, option, filename - ) - opts.remove_option(section, option) - if not opts.options(section): - log.info("Deleting empty [%s] section from %s", - section, filename) - opts.remove_section(section) - else: - log.debug( - "Setting %s.%s to %r in %s", - section, option, value, filename - ) - opts.set(section, option, value) - - log.info("Writing %s", filename) - if not dry_run: - with open(filename, 'w') as f: - opts.write(f) - - -class option_base(Command): - """Abstract base class for commands that mess with config files""" - - user_options = [ - ('global-config', 'g', - "save options to the site-wide distutils.cfg file"), - ('user-config', 'u', - "save options to the current user's pydistutils.cfg file"), - ('filename=', 'f', - "configuration file to use (default=setup.cfg)"), - ] - - boolean_options = [ - 'global-config', 'user-config', - ] - - def initialize_options(self): - self.global_config = None - self.user_config = None - self.filename = None - - def finalize_options(self): - filenames = [] - if self.global_config: - filenames.append(config_file('global')) - if self.user_config: - filenames.append(config_file('user')) - if self.filename is not None: - filenames.append(self.filename) - if not filenames: - filenames.append(config_file('local')) - if len(filenames) > 1: - raise DistutilsOptionError( - "Must specify only one configuration file option", - filenames - ) - self.filename, = filenames - - -class setopt(option_base): - """Save command-line options to a file""" - - description = "set an option in setup.cfg or another config file" - - user_options = [ - ('command=', 'c', 'command to set an option for'), - ('option=', 'o', 'option to set'), - ('set-value=', 's', 'value of the option'), - ('remove', 'r', 'remove (unset) the value'), - ] + option_base.user_options - - boolean_options = option_base.boolean_options + ['remove'] - - def initialize_options(self): - option_base.initialize_options(self) - self.command = None - self.option = None - self.set_value = None - self.remove = None - - def finalize_options(self): - option_base.finalize_options(self) - if self.command is None or self.option is None: - raise DistutilsOptionError("Must specify --command *and* --option") - if self.set_value is None and not self.remove: - raise DistutilsOptionError("Must specify --set-value or --remove") - - def run(self): - edit_config( - self.filename, { - self.command: {self.option.replace('-', '_'): self.set_value} - }, - self.dry_run - ) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/test.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/test.py deleted file mode 100644 index 270674e2..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/test.py +++ /dev/null @@ -1,247 +0,0 @@ -import os -import operator -import sys -import contextlib -import itertools -from distutils.errors import DistutilsOptionError -from unittest import TestLoader - -from setuptools.extern import six -from setuptools.extern.six.moves import map, filter - -from pkg_resources import (resource_listdir, resource_exists, normalize_path, - working_set, _namespace_packages, - add_activation_listener, require, EntryPoint) -from setuptools import Command -from setuptools.py31compat import unittest_main - - -class ScanningLoader(TestLoader): - def loadTestsFromModule(self, module, pattern=None): - """Return a suite of all tests cases contained in the given module - - If the module is a package, load tests from all the modules in it. - If the module has an ``additional_tests`` function, call it and add - the return value to the tests. - """ - tests = [] - tests.append(TestLoader.loadTestsFromModule(self, module)) - - if hasattr(module, "additional_tests"): - tests.append(module.additional_tests()) - - if hasattr(module, '__path__'): - for file in resource_listdir(module.__name__, ''): - if file.endswith('.py') and file != '__init__.py': - submodule = module.__name__ + '.' + file[:-3] - else: - if resource_exists(module.__name__, file + '/__init__.py'): - submodule = module.__name__ + '.' + file - else: - continue - tests.append(self.loadTestsFromName(submodule)) - - if len(tests) != 1: - return self.suiteClass(tests) - else: - return tests[0] # don't create a nested suite for only one return - - -# adapted from jaraco.classes.properties:NonDataProperty -class NonDataProperty(object): - def __init__(self, fget): - self.fget = fget - - def __get__(self, obj, objtype=None): - if obj is None: - return self - return self.fget(obj) - - -class test(Command): - """Command to run unit tests after in-place build""" - - description = "run unit tests after in-place build" - - user_options = [ - ('test-module=', 'm', "Run 'test_suite' in specified module"), - ('test-suite=', 's', - "Test suite to run (e.g. 'some_module.test_suite')"), - ('test-runner=', 'r', "Test runner to use"), - ] - - def initialize_options(self): - self.test_suite = None - self.test_module = None - self.test_loader = None - self.test_runner = None - - def finalize_options(self): - - if self.test_suite and self.test_module: - msg = "You may specify a module or a suite, but not both" - raise DistutilsOptionError(msg) - - if self.test_suite is None: - if self.test_module is None: - self.test_suite = self.distribution.test_suite - else: - self.test_suite = self.test_module + ".test_suite" - - if self.test_loader is None: - self.test_loader = getattr(self.distribution, 'test_loader', None) - if self.test_loader is None: - self.test_loader = "setuptools.command.test:ScanningLoader" - if self.test_runner is None: - self.test_runner = getattr(self.distribution, 'test_runner', None) - - @NonDataProperty - def test_args(self): - return list(self._test_args()) - - def _test_args(self): - if self.verbose: - yield '--verbose' - if self.test_suite: - yield self.test_suite - - def with_project_on_sys_path(self, func): - """ - Backward compatibility for project_on_sys_path context. - """ - with self.project_on_sys_path(): - func() - - @contextlib.contextmanager - def project_on_sys_path(self, include_dists=[]): - with_2to3 = six.PY3 and getattr(self.distribution, 'use_2to3', False) - - if with_2to3: - # If we run 2to3 we can not do this inplace: - - # Ensure metadata is up-to-date - self.reinitialize_command('build_py', inplace=0) - self.run_command('build_py') - bpy_cmd = self.get_finalized_command("build_py") - build_path = normalize_path(bpy_cmd.build_lib) - - # Build extensions - self.reinitialize_command('egg_info', egg_base=build_path) - self.run_command('egg_info') - - self.reinitialize_command('build_ext', inplace=0) - self.run_command('build_ext') - else: - # Without 2to3 inplace works fine: - self.run_command('egg_info') - - # Build extensions in-place - self.reinitialize_command('build_ext', inplace=1) - self.run_command('build_ext') - - ei_cmd = self.get_finalized_command("egg_info") - - old_path = sys.path[:] - old_modules = sys.modules.copy() - - try: - project_path = normalize_path(ei_cmd.egg_base) - sys.path.insert(0, project_path) - working_set.__init__() - add_activation_listener(lambda dist: dist.activate()) - require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) - with self.paths_on_pythonpath([project_path]): - yield - finally: - sys.path[:] = old_path - sys.modules.clear() - sys.modules.update(old_modules) - working_set.__init__() - - @staticmethod - @contextlib.contextmanager - def paths_on_pythonpath(paths): - """ - Add the indicated paths to the head of the PYTHONPATH environment - variable so that subprocesses will also see the packages at - these paths. - - Do this in a context that restores the value on exit. - """ - nothing = object() - orig_pythonpath = os.environ.get('PYTHONPATH', nothing) - current_pythonpath = os.environ.get('PYTHONPATH', '') - try: - prefix = os.pathsep.join(paths) - to_join = filter(None, [prefix, current_pythonpath]) - new_path = os.pathsep.join(to_join) - if new_path: - os.environ['PYTHONPATH'] = new_path - yield - finally: - if orig_pythonpath is nothing: - os.environ.pop('PYTHONPATH', None) - else: - os.environ['PYTHONPATH'] = orig_pythonpath - - @staticmethod - def install_dists(dist): - """ - Install the requirements indicated by self.distribution and - return an iterable of the dists that were built. - """ - ir_d = dist.fetch_build_eggs(dist.install_requires or []) - tr_d = dist.fetch_build_eggs(dist.tests_require or []) - return itertools.chain(ir_d, tr_d) - - def run(self): - installed_dists = self.install_dists(self.distribution) - - cmd = ' '.join(self._argv) - if self.dry_run: - self.announce('skipping "%s" (dry run)' % cmd) - return - - self.announce('running "%s"' % cmd) - - paths = map(operator.attrgetter('location'), installed_dists) - with self.paths_on_pythonpath(paths): - with self.project_on_sys_path(): - self.run_tests() - - def run_tests(self): - # Purge modules under test from sys.modules. The test loader will - # re-import them from the build location. Required when 2to3 is used - # with namespace packages. - if six.PY3 and getattr(self.distribution, 'use_2to3', False): - module = self.test_suite.split('.')[0] - if module in _namespace_packages: - del_modules = [] - if module in sys.modules: - del_modules.append(module) - module += '.' - for name in sys.modules: - if name.startswith(module): - del_modules.append(name) - list(map(sys.modules.__delitem__, del_modules)) - - unittest_main( - None, None, self._argv, - testLoader=self._resolve_as_ep(self.test_loader), - testRunner=self._resolve_as_ep(self.test_runner), - ) - - @property - def _argv(self): - return ['unittest'] + self.test_args - - @staticmethod - def _resolve_as_ep(val): - """ - Load the indicated attribute value, called, as a as if it were - specified as an entry point. - """ - if val is None: - return - parsed = EntryPoint.parse("x=" + val) - return parsed.resolve()() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/upload.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/upload.py deleted file mode 100644 index 484baa5a..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/upload.py +++ /dev/null @@ -1,38 +0,0 @@ -import getpass -from distutils.command import upload as orig - - -class upload(orig.upload): - """ - Override default upload behavior to obtain password - in a variety of different ways. - """ - - def finalize_options(self): - orig.upload.finalize_options(self) - # Attempt to obtain password. Short circuit evaluation at the first - # sign of success. - self.password = ( - self.password or - self._load_password_from_keyring() or - self._prompt_for_password() - ) - - def _load_password_from_keyring(self): - """ - Attempt to load password from keyring. Suppress Exceptions. - """ - try: - keyring = __import__('keyring') - return keyring.get_password(self.repository, self.username) - except Exception: - pass - - def _prompt_for_password(self): - """ - Prompt for a password on the tty. Suppress Exceptions. - """ - try: - return getpass.getpass() - except (Exception, KeyboardInterrupt): - pass diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/upload_docs.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/upload_docs.py deleted file mode 100644 index 269dc2d5..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/command/upload_docs.py +++ /dev/null @@ -1,206 +0,0 @@ -# -*- coding: utf-8 -*- -"""upload_docs - -Implements a Distutils 'upload_docs' subcommand (upload documentation to -PyPI's pythonhosted.org). -""" - -from base64 import standard_b64encode -from distutils import log -from distutils.errors import DistutilsOptionError -import os -import socket -import zipfile -import tempfile -import shutil -import itertools -import functools - -from setuptools.extern import six -from setuptools.extern.six.moves import http_client, urllib - -from pkg_resources import iter_entry_points -from .upload import upload - - -def _encode(s): - errors = 'surrogateescape' if six.PY3 else 'strict' - return s.encode('utf-8', errors) - - -class upload_docs(upload): - # override the default repository as upload_docs isn't - # supported by Warehouse (and won't be). - DEFAULT_REPOSITORY = 'https://pypi.python.org/pypi/' - - description = 'Upload documentation to PyPI' - - user_options = [ - ('repository=', 'r', - "url of repository [default: %s]" % upload.DEFAULT_REPOSITORY), - ('show-response', None, - 'display full response text from server'), - ('upload-dir=', None, 'directory to upload'), - ] - boolean_options = upload.boolean_options - - def has_sphinx(self): - if self.upload_dir is None: - for ep in iter_entry_points('distutils.commands', 'build_sphinx'): - return True - - sub_commands = [('build_sphinx', has_sphinx)] - - def initialize_options(self): - upload.initialize_options(self) - self.upload_dir = None - self.target_dir = None - - def finalize_options(self): - log.warn("Upload_docs command is deprecated. Use RTD instead.") - upload.finalize_options(self) - if self.upload_dir is None: - if self.has_sphinx(): - build_sphinx = self.get_finalized_command('build_sphinx') - self.target_dir = build_sphinx.builder_target_dir - else: - build = self.get_finalized_command('build') - self.target_dir = os.path.join(build.build_base, 'docs') - else: - self.ensure_dirname('upload_dir') - self.target_dir = self.upload_dir - self.announce('Using upload directory %s' % self.target_dir) - - def create_zipfile(self, filename): - zip_file = zipfile.ZipFile(filename, "w") - try: - self.mkpath(self.target_dir) # just in case - for root, dirs, files in os.walk(self.target_dir): - if root == self.target_dir and not files: - raise DistutilsOptionError( - "no files found in upload directory '%s'" - % self.target_dir) - for name in files: - full = os.path.join(root, name) - relative = root[len(self.target_dir):].lstrip(os.path.sep) - dest = os.path.join(relative, name) - zip_file.write(full, dest) - finally: - zip_file.close() - - def run(self): - # Run sub commands - for cmd_name in self.get_sub_commands(): - self.run_command(cmd_name) - - tmp_dir = tempfile.mkdtemp() - name = self.distribution.metadata.get_name() - zip_file = os.path.join(tmp_dir, "%s.zip" % name) - try: - self.create_zipfile(zip_file) - self.upload_file(zip_file) - finally: - shutil.rmtree(tmp_dir) - - @staticmethod - def _build_part(item, sep_boundary): - key, values = item - title = '\nContent-Disposition: form-data; name="%s"' % key - # handle multiple entries for the same name - if not isinstance(values, list): - values = [values] - for value in values: - if isinstance(value, tuple): - title += '; filename="%s"' % value[0] - value = value[1] - else: - value = _encode(value) - yield sep_boundary - yield _encode(title) - yield b"\n\n" - yield value - if value and value[-1:] == b'\r': - yield b'\n' # write an extra newline (lurve Macs) - - @classmethod - def _build_multipart(cls, data): - """ - Build up the MIME payload for the POST data - """ - boundary = b'--------------GHSKFJDLGDS7543FJKLFHRE75642756743254' - sep_boundary = b'\n--' + boundary - end_boundary = sep_boundary + b'--' - end_items = end_boundary, b"\n", - builder = functools.partial( - cls._build_part, - sep_boundary=sep_boundary, - ) - part_groups = map(builder, data.items()) - parts = itertools.chain.from_iterable(part_groups) - body_items = itertools.chain(parts, end_items) - content_type = 'multipart/form-data; boundary=%s' % boundary - return b''.join(body_items), content_type - - def upload_file(self, filename): - with open(filename, 'rb') as f: - content = f.read() - meta = self.distribution.metadata - data = { - ':action': 'doc_upload', - 'name': meta.get_name(), - 'content': (os.path.basename(filename), content), - } - # set up the authentication - credentials = _encode(self.username + ':' + self.password) - credentials = standard_b64encode(credentials) - if six.PY3: - credentials = credentials.decode('ascii') - auth = "Basic " + credentials - - body, ct = self._build_multipart(data) - - self.announce("Submitting documentation to %s" % (self.repository), - log.INFO) - - # build the Request - # We can't use urllib2 since we need to send the Basic - # auth right with the first request - schema, netloc, url, params, query, fragments = \ - urllib.parse.urlparse(self.repository) - assert not params and not query and not fragments - if schema == 'http': - conn = http_client.HTTPConnection(netloc) - elif schema == 'https': - conn = http_client.HTTPSConnection(netloc) - else: - raise AssertionError("unsupported schema " + schema) - - data = '' - try: - conn.connect() - conn.putrequest("POST", url) - content_type = ct - conn.putheader('Content-type', content_type) - conn.putheader('Content-length', str(len(body))) - conn.putheader('Authorization', auth) - conn.endheaders() - conn.send(body) - except socket.error as e: - self.announce(str(e), log.ERROR) - return - - r = conn.getresponse() - if r.status == 200: - self.announce('Server response (%s): %s' % (r.status, r.reason), - log.INFO) - elif r.status == 301: - location = r.getheader('Location') - if location is None: - location = 'https://pythonhosted.org/%s/' % meta.get_name() - self.announce('Upload successful. Visit %s' % location, - log.INFO) - else: - self.announce('Upload failed (%s): %s' % (r.status, r.reason), - log.ERROR) - if self.show_response: - print('-' * 75, r.read(), '-' * 75) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/depends.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/depends.py deleted file mode 100644 index 89d39a50..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/depends.py +++ /dev/null @@ -1,217 +0,0 @@ -import sys -import imp -import marshal -from distutils.version import StrictVersion -from imp import PKG_DIRECTORY, PY_COMPILED, PY_SOURCE, PY_FROZEN - -from setuptools.extern import six - -__all__ = [ - 'Require', 'find_module', 'get_module_constant', 'extract_constant' -] - - -class Require: - """A prerequisite to building or installing a distribution""" - - def __init__(self, name, requested_version, module, homepage='', - attribute=None, format=None): - - if format is None and requested_version is not None: - format = StrictVersion - - if format is not None: - requested_version = format(requested_version) - if attribute is None: - attribute = '__version__' - - self.__dict__.update(locals()) - del self.self - - def full_name(self): - """Return full package/distribution name, w/version""" - if self.requested_version is not None: - return '%s-%s' % (self.name, self.requested_version) - return self.name - - def version_ok(self, version): - """Is 'version' sufficiently up-to-date?""" - return self.attribute is None or self.format is None or \ - str(version) != "unknown" and version >= self.requested_version - - def get_version(self, paths=None, default="unknown"): - """Get version number of installed module, 'None', or 'default' - - Search 'paths' for module. If not found, return 'None'. If found, - return the extracted version attribute, or 'default' if no version - attribute was specified, or the value cannot be determined without - importing the module. The version is formatted according to the - requirement's version format (if any), unless it is 'None' or the - supplied 'default'. - """ - - if self.attribute is None: - try: - f, p, i = find_module(self.module, paths) - if f: - f.close() - return default - except ImportError: - return None - - v = get_module_constant(self.module, self.attribute, default, paths) - - if v is not None and v is not default and self.format is not None: - return self.format(v) - - return v - - def is_present(self, paths=None): - """Return true if dependency is present on 'paths'""" - return self.get_version(paths) is not None - - def is_current(self, paths=None): - """Return true if dependency is present and up-to-date on 'paths'""" - version = self.get_version(paths) - if version is None: - return False - return self.version_ok(version) - - -def _iter_code(code): - """Yield '(op,arg)' pair for each operation in code object 'code'""" - - from array import array - from dis import HAVE_ARGUMENT, EXTENDED_ARG - - bytes = array('b', code.co_code) - eof = len(code.co_code) - - ptr = 0 - extended_arg = 0 - - while ptr < eof: - - op = bytes[ptr] - - if op >= HAVE_ARGUMENT: - - arg = bytes[ptr + 1] + bytes[ptr + 2] * 256 + extended_arg - ptr += 3 - - if op == EXTENDED_ARG: - long_type = six.integer_types[-1] - extended_arg = arg * long_type(65536) - continue - - else: - arg = None - ptr += 1 - - yield op, arg - - -def find_module(module, paths=None): - """Just like 'imp.find_module()', but with package support""" - - parts = module.split('.') - - while parts: - part = parts.pop(0) - f, path, (suffix, mode, kind) = info = imp.find_module(part, paths) - - if kind == PKG_DIRECTORY: - parts = parts or ['__init__'] - paths = [path] - - elif parts: - raise ImportError("Can't find %r in %s" % (parts, module)) - - return info - - -def get_module_constant(module, symbol, default=-1, paths=None): - """Find 'module' by searching 'paths', and extract 'symbol' - - Return 'None' if 'module' does not exist on 'paths', or it does not define - 'symbol'. If the module defines 'symbol' as a constant, return the - constant. Otherwise, return 'default'.""" - - try: - f, path, (suffix, mode, kind) = find_module(module, paths) - except ImportError: - # Module doesn't exist - return None - - try: - if kind == PY_COMPILED: - f.read(8) # skip magic & date - code = marshal.load(f) - elif kind == PY_FROZEN: - code = imp.get_frozen_object(module) - elif kind == PY_SOURCE: - code = compile(f.read(), path, 'exec') - else: - # Not something we can parse; we'll have to import it. :( - if module not in sys.modules: - imp.load_module(module, f, path, (suffix, mode, kind)) - return getattr(sys.modules[module], symbol, None) - - finally: - if f: - f.close() - - return extract_constant(code, symbol, default) - - -def extract_constant(code, symbol, default=-1): - """Extract the constant value of 'symbol' from 'code' - - If the name 'symbol' is bound to a constant value by the Python code - object 'code', return that value. If 'symbol' is bound to an expression, - return 'default'. Otherwise, return 'None'. - - Return value is based on the first assignment to 'symbol'. 'symbol' must - be a global, or at least a non-"fast" local in the code block. That is, - only 'STORE_NAME' and 'STORE_GLOBAL' opcodes are checked, and 'symbol' - must be present in 'code.co_names'. - """ - - if symbol not in code.co_names: - # name's not there, can't possibly be an assigment - return None - - name_idx = list(code.co_names).index(symbol) - - STORE_NAME = 90 - STORE_GLOBAL = 97 - LOAD_CONST = 100 - - const = default - - for op, arg in _iter_code(code): - - if op == LOAD_CONST: - const = code.co_consts[arg] - elif arg == name_idx and (op == STORE_NAME or op == STORE_GLOBAL): - return const - else: - const = default - - -def _update_globals(): - """ - Patch the globals to remove the objects not available on some platforms. - - XXX it'd be better to test assertions about bytecode instead. - """ - - if not sys.platform.startswith('java') and sys.platform != 'cli': - return - incompatible = 'extract_constant', 'get_module_constant' - for name in incompatible: - del globals()[name] - __all__.remove(name) - - -_update_globals() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/dist.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/dist.py deleted file mode 100644 index 612040c8..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/dist.py +++ /dev/null @@ -1,914 +0,0 @@ -__all__ = ['Distribution'] - -import re -import os -import warnings -import numbers -import distutils.log -import distutils.core -import distutils.cmd -import distutils.dist -from distutils.errors import (DistutilsOptionError, DistutilsPlatformError, - DistutilsSetupError) -from distutils.util import rfc822_escape - -from setuptools.extern import six -from setuptools.extern.six.moves import map -from pkg_resources.extern import packaging - -from setuptools.depends import Require -from setuptools import windows_support -from setuptools.monkey import get_unpatched -import pkg_resources - - -def _get_unpatched(cls): - warnings.warn("Do not call this function", DeprecationWarning) - return get_unpatched(cls) - - -# Based on Python 3.5 version -def write_pkg_file(self, file): - """Write the PKG-INFO format data to a file object. - """ - version = '1.0' - if (self.provides or self.requires or self.obsoletes or - self.classifiers or self.download_url): - version = '1.1' - # Setuptools specific for PEP 345 - if hasattr(self, 'python_requires'): - version = '1.2' - - file.write('Metadata-Version: %s\n' % version) - file.write('Name: %s\n' % self.get_name()) - file.write('Version: %s\n' % self.get_version()) - file.write('Summary: %s\n' % self.get_description()) - file.write('Home-page: %s\n' % self.get_url()) - file.write('Author: %s\n' % self.get_contact()) - file.write('Author-email: %s\n' % self.get_contact_email()) - file.write('License: %s\n' % self.get_license()) - if self.download_url: - file.write('Download-URL: %s\n' % self.download_url) - - long_desc = rfc822_escape(self.get_long_description()) - file.write('Description: %s\n' % long_desc) - - keywords = ','.join(self.get_keywords()) - if keywords: - file.write('Keywords: %s\n' % keywords) - - self._write_list(file, 'Platform', self.get_platforms()) - self._write_list(file, 'Classifier', self.get_classifiers()) - - # PEP 314 - self._write_list(file, 'Requires', self.get_requires()) - self._write_list(file, 'Provides', self.get_provides()) - self._write_list(file, 'Obsoletes', self.get_obsoletes()) - - # Setuptools specific for PEP 345 - if hasattr(self, 'python_requires'): - file.write('Requires-Python: %s\n' % self.python_requires) - - -# from Python 3.4 -def write_pkg_info(self, base_dir): - """Write the PKG-INFO file into the release tree. - """ - with open(os.path.join(base_dir, 'PKG-INFO'), 'w', - encoding='UTF-8') as pkg_info: - self.write_pkg_file(pkg_info) - - -sequence = tuple, list - - -def check_importable(dist, attr, value): - try: - ep = pkg_resources.EntryPoint.parse('x=' + value) - assert not ep.extras - except (TypeError, ValueError, AttributeError, AssertionError): - raise DistutilsSetupError( - "%r must be importable 'module:attrs' string (got %r)" - % (attr, value) - ) - - -def assert_string_list(dist, attr, value): - """Verify that value is a string list or None""" - try: - assert ''.join(value) != value - except (TypeError, ValueError, AttributeError, AssertionError): - raise DistutilsSetupError( - "%r must be a list of strings (got %r)" % (attr, value) - ) - - -def check_nsp(dist, attr, value): - """Verify that namespace packages are valid""" - ns_packages = value - assert_string_list(dist, attr, ns_packages) - for nsp in ns_packages: - if not dist.has_contents_for(nsp): - raise DistutilsSetupError( - "Distribution contains no modules or packages for " + - "namespace package %r" % nsp - ) - parent, sep, child = nsp.rpartition('.') - if parent and parent not in ns_packages: - distutils.log.warn( - "WARNING: %r is declared as a package namespace, but %r" - " is not: please correct this in setup.py", nsp, parent - ) - - -def check_extras(dist, attr, value): - """Verify that extras_require mapping is valid""" - try: - for k, v in value.items(): - if ':' in k: - k, m = k.split(':', 1) - if pkg_resources.invalid_marker(m): - raise DistutilsSetupError("Invalid environment marker: " + m) - list(pkg_resources.parse_requirements(v)) - except (TypeError, ValueError, AttributeError): - raise DistutilsSetupError( - "'extras_require' must be a dictionary whose values are " - "strings or lists of strings containing valid project/version " - "requirement specifiers." - ) - - -def assert_bool(dist, attr, value): - """Verify that value is True, False, 0, or 1""" - if bool(value) != value: - tmpl = "{attr!r} must be a boolean value (got {value!r})" - raise DistutilsSetupError(tmpl.format(attr=attr, value=value)) - - -def check_requirements(dist, attr, value): - """Verify that install_requires is a valid requirements list""" - try: - list(pkg_resources.parse_requirements(value)) - except (TypeError, ValueError) as error: - tmpl = ( - "{attr!r} must be a string or list of strings " - "containing valid project/version requirement specifiers; {error}" - ) - raise DistutilsSetupError(tmpl.format(attr=attr, error=error)) - - -def check_specifier(dist, attr, value): - """Verify that value is a valid version specifier""" - try: - packaging.specifiers.SpecifierSet(value) - except packaging.specifiers.InvalidSpecifier as error: - tmpl = ( - "{attr!r} must be a string or list of strings " - "containing valid version specifiers; {error}" - ) - raise DistutilsSetupError(tmpl.format(attr=attr, error=error)) - - -def check_entry_points(dist, attr, value): - """Verify that entry_points map is parseable""" - try: - pkg_resources.EntryPoint.parse_map(value) - except ValueError as e: - raise DistutilsSetupError(e) - - -def check_test_suite(dist, attr, value): - if not isinstance(value, six.string_types): - raise DistutilsSetupError("test_suite must be a string") - - -def check_package_data(dist, attr, value): - """Verify that value is a dictionary of package names to glob lists""" - if isinstance(value, dict): - for k, v in value.items(): - if not isinstance(k, str): - break - try: - iter(v) - except TypeError: - break - else: - return - raise DistutilsSetupError( - attr + " must be a dictionary mapping package names to lists of " - "wildcard patterns" - ) - - -def check_packages(dist, attr, value): - for pkgname in value: - if not re.match(r'\w+(\.\w+)*', pkgname): - distutils.log.warn( - "WARNING: %r not a valid package name; please use only " - ".-separated package names in setup.py", pkgname - ) - - -_Distribution = get_unpatched(distutils.core.Distribution) - - -class Distribution(_Distribution): - """Distribution with support for features, tests, and package data - - This is an enhanced version of 'distutils.dist.Distribution' that - effectively adds the following new optional keyword arguments to 'setup()': - - 'install_requires' -- a string or sequence of strings specifying project - versions that the distribution requires when installed, in the format - used by 'pkg_resources.require()'. They will be installed - automatically when the package is installed. If you wish to use - packages that are not available in PyPI, or want to give your users an - alternate download location, you can add a 'find_links' option to the - '[easy_install]' section of your project's 'setup.cfg' file, and then - setuptools will scan the listed web pages for links that satisfy the - requirements. - - 'extras_require' -- a dictionary mapping names of optional "extras" to the - additional requirement(s) that using those extras incurs. For example, - this:: - - extras_require = dict(reST = ["docutils>=0.3", "reSTedit"]) - - indicates that the distribution can optionally provide an extra - capability called "reST", but it can only be used if docutils and - reSTedit are installed. If the user installs your package using - EasyInstall and requests one of your extras, the corresponding - additional requirements will be installed if needed. - - 'features' **deprecated** -- a dictionary mapping option names to - 'setuptools.Feature' - objects. Features are a portion of the distribution that can be - included or excluded based on user options, inter-feature dependencies, - and availability on the current system. Excluded features are omitted - from all setup commands, including source and binary distributions, so - you can create multiple distributions from the same source tree. - Feature names should be valid Python identifiers, except that they may - contain the '-' (minus) sign. Features can be included or excluded - via the command line options '--with-X' and '--without-X', where 'X' is - the name of the feature. Whether a feature is included by default, and - whether you are allowed to control this from the command line, is - determined by the Feature object. See the 'Feature' class for more - information. - - 'test_suite' -- the name of a test suite to run for the 'test' command. - If the user runs 'python setup.py test', the package will be installed, - and the named test suite will be run. The format is the same as - would be used on a 'unittest.py' command line. That is, it is the - dotted name of an object to import and call to generate a test suite. - - 'package_data' -- a dictionary mapping package names to lists of filenames - or globs to use to find data files contained in the named packages. - If the dictionary has filenames or globs listed under '""' (the empty - string), those names will be searched for in every package, in addition - to any names for the specific package. Data files found using these - names/globs will be installed along with the package, in the same - location as the package. Note that globs are allowed to reference - the contents of non-package subdirectories, as long as you use '/' as - a path separator. (Globs are automatically converted to - platform-specific paths at runtime.) - - In addition to these new keywords, this class also has several new methods - for manipulating the distribution's contents. For example, the 'include()' - and 'exclude()' methods can be thought of as in-place add and subtract - commands that add or remove packages, modules, extensions, and so on from - the distribution. They are used by the feature subsystem to configure the - distribution for the included and excluded features. - """ - - _patched_dist = None - - def patch_missing_pkg_info(self, attrs): - # Fake up a replacement for the data that would normally come from - # PKG-INFO, but which might not yet be built if this is a fresh - # checkout. - # - if not attrs or 'name' not in attrs or 'version' not in attrs: - return - key = pkg_resources.safe_name(str(attrs['name'])).lower() - dist = pkg_resources.working_set.by_key.get(key) - if dist is not None and not dist.has_metadata('PKG-INFO'): - dist._version = pkg_resources.safe_version(str(attrs['version'])) - self._patched_dist = dist - - def __init__(self, attrs=None): - have_package_data = hasattr(self, "package_data") - if not have_package_data: - self.package_data = {} - _attrs_dict = attrs or {} - if 'features' in _attrs_dict or 'require_features' in _attrs_dict: - Feature.warn_deprecated() - self.require_features = [] - self.features = {} - self.dist_files = [] - self.src_root = attrs and attrs.pop("src_root", None) - self.patch_missing_pkg_info(attrs) - # Make sure we have any eggs needed to interpret 'attrs' - if attrs is not None: - self.dependency_links = attrs.pop('dependency_links', []) - assert_string_list(self, 'dependency_links', self.dependency_links) - if attrs and 'setup_requires' in attrs: - self.fetch_build_eggs(attrs['setup_requires']) - for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'): - vars(self).setdefault(ep.name, None) - _Distribution.__init__(self, attrs) - if isinstance(self.metadata.version, numbers.Number): - # Some people apparently take "version number" too literally :) - self.metadata.version = str(self.metadata.version) - - if self.metadata.version is not None: - try: - ver = packaging.version.Version(self.metadata.version) - normalized_version = str(ver) - if self.metadata.version != normalized_version: - warnings.warn( - "Normalizing '%s' to '%s'" % ( - self.metadata.version, - normalized_version, - ) - ) - self.metadata.version = normalized_version - except (packaging.version.InvalidVersion, TypeError): - warnings.warn( - "The version specified (%r) is an invalid version, this " - "may not work as expected with newer versions of " - "setuptools, pip, and PyPI. Please see PEP 440 for more " - "details." % self.metadata.version - ) - if getattr(self, 'python_requires', None): - self.metadata.python_requires = self.python_requires - - def parse_command_line(self): - """Process features after parsing command line options""" - result = _Distribution.parse_command_line(self) - if self.features: - self._finalize_features() - return result - - def _feature_attrname(self, name): - """Convert feature name to corresponding option attribute name""" - return 'with_' + name.replace('-', '_') - - def fetch_build_eggs(self, requires): - """Resolve pre-setup requirements""" - resolved_dists = pkg_resources.working_set.resolve( - pkg_resources.parse_requirements(requires), - installer=self.fetch_build_egg, - replace_conflicting=True, - ) - for dist in resolved_dists: - pkg_resources.working_set.add(dist, replace=True) - return resolved_dists - - def finalize_options(self): - _Distribution.finalize_options(self) - if self.features: - self._set_global_opts_from_features() - - for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'): - value = getattr(self, ep.name, None) - if value is not None: - ep.require(installer=self.fetch_build_egg) - ep.load()(self, ep.name, value) - if getattr(self, 'convert_2to3_doctests', None): - # XXX may convert to set here when we can rely on set being builtin - self.convert_2to3_doctests = [os.path.abspath(p) for p in self.convert_2to3_doctests] - else: - self.convert_2to3_doctests = [] - - def get_egg_cache_dir(self): - egg_cache_dir = os.path.join(os.curdir, '.eggs') - if not os.path.exists(egg_cache_dir): - os.mkdir(egg_cache_dir) - windows_support.hide_file(egg_cache_dir) - readme_txt_filename = os.path.join(egg_cache_dir, 'README.txt') - with open(readme_txt_filename, 'w') as f: - f.write('This directory contains eggs that were downloaded ' - 'by setuptools to build, test, and run plug-ins.\n\n') - f.write('This directory caches those eggs to prevent ' - 'repeated downloads.\n\n') - f.write('However, it is safe to delete this directory.\n\n') - - return egg_cache_dir - - def fetch_build_egg(self, req): - """Fetch an egg needed for building""" - - try: - cmd = self._egg_fetcher - cmd.package_index.to_scan = [] - except AttributeError: - from setuptools.command.easy_install import easy_install - dist = self.__class__({'script_args': ['easy_install']}) - dist.parse_config_files() - opts = dist.get_option_dict('easy_install') - keep = ( - 'find_links', 'site_dirs', 'index_url', 'optimize', - 'site_dirs', 'allow_hosts' - ) - for key in list(opts): - if key not in keep: - del opts[key] # don't use any other settings - if self.dependency_links: - links = self.dependency_links[:] - if 'find_links' in opts: - links = opts['find_links'][1].split() + links - opts['find_links'] = ('setup', links) - install_dir = self.get_egg_cache_dir() - cmd = easy_install( - dist, args=["x"], install_dir=install_dir, exclude_scripts=True, - always_copy=False, build_directory=None, editable=False, - upgrade=False, multi_version=True, no_report=True, user=False - ) - cmd.ensure_finalized() - self._egg_fetcher = cmd - return cmd.easy_install(req) - - def _set_global_opts_from_features(self): - """Add --with-X/--without-X options based on optional features""" - - go = [] - no = self.negative_opt.copy() - - for name, feature in self.features.items(): - self._set_feature(name, None) - feature.validate(self) - - if feature.optional: - descr = feature.description - incdef = ' (default)' - excdef = '' - if not feature.include_by_default(): - excdef, incdef = incdef, excdef - - go.append(('with-' + name, None, 'include ' + descr + incdef)) - go.append(('without-' + name, None, 'exclude ' + descr + excdef)) - no['without-' + name] = 'with-' + name - - self.global_options = self.feature_options = go + self.global_options - self.negative_opt = self.feature_negopt = no - - def _finalize_features(self): - """Add/remove features and resolve dependencies between them""" - - # First, flag all the enabled items (and thus their dependencies) - for name, feature in self.features.items(): - enabled = self.feature_is_included(name) - if enabled or (enabled is None and feature.include_by_default()): - feature.include_in(self) - self._set_feature(name, 1) - - # Then disable the rest, so that off-by-default features don't - # get flagged as errors when they're required by an enabled feature - for name, feature in self.features.items(): - if not self.feature_is_included(name): - feature.exclude_from(self) - self._set_feature(name, 0) - - def get_command_class(self, command): - """Pluggable version of get_command_class()""" - if command in self.cmdclass: - return self.cmdclass[command] - - for ep in pkg_resources.iter_entry_points('distutils.commands', command): - ep.require(installer=self.fetch_build_egg) - self.cmdclass[command] = cmdclass = ep.load() - return cmdclass - else: - return _Distribution.get_command_class(self, command) - - def print_commands(self): - for ep in pkg_resources.iter_entry_points('distutils.commands'): - if ep.name not in self.cmdclass: - # don't require extras as the commands won't be invoked - cmdclass = ep.resolve() - self.cmdclass[ep.name] = cmdclass - return _Distribution.print_commands(self) - - def get_command_list(self): - for ep in pkg_resources.iter_entry_points('distutils.commands'): - if ep.name not in self.cmdclass: - # don't require extras as the commands won't be invoked - cmdclass = ep.resolve() - self.cmdclass[ep.name] = cmdclass - return _Distribution.get_command_list(self) - - def _set_feature(self, name, status): - """Set feature's inclusion status""" - setattr(self, self._feature_attrname(name), status) - - def feature_is_included(self, name): - """Return 1 if feature is included, 0 if excluded, 'None' if unknown""" - return getattr(self, self._feature_attrname(name)) - - def include_feature(self, name): - """Request inclusion of feature named 'name'""" - - if self.feature_is_included(name) == 0: - descr = self.features[name].description - raise DistutilsOptionError( - descr + " is required, but was excluded or is not available" - ) - self.features[name].include_in(self) - self._set_feature(name, 1) - - def include(self, **attrs): - """Add items to distribution that are named in keyword arguments - - For example, 'dist.exclude(py_modules=["x"])' would add 'x' to - the distribution's 'py_modules' attribute, if it was not already - there. - - Currently, this method only supports inclusion for attributes that are - lists or tuples. If you need to add support for adding to other - attributes in this or a subclass, you can add an '_include_X' method, - where 'X' is the name of the attribute. The method will be called with - the value passed to 'include()'. So, 'dist.include(foo={"bar":"baz"})' - will try to call 'dist._include_foo({"bar":"baz"})', which can then - handle whatever special inclusion logic is needed. - """ - for k, v in attrs.items(): - include = getattr(self, '_include_' + k, None) - if include: - include(v) - else: - self._include_misc(k, v) - - def exclude_package(self, package): - """Remove packages, modules, and extensions in named package""" - - pfx = package + '.' - if self.packages: - self.packages = [ - p for p in self.packages - if p != package and not p.startswith(pfx) - ] - - if self.py_modules: - self.py_modules = [ - p for p in self.py_modules - if p != package and not p.startswith(pfx) - ] - - if self.ext_modules: - self.ext_modules = [ - p for p in self.ext_modules - if p.name != package and not p.name.startswith(pfx) - ] - - def has_contents_for(self, package): - """Return true if 'exclude_package(package)' would do something""" - - pfx = package + '.' - - for p in self.iter_distribution_names(): - if p == package or p.startswith(pfx): - return True - - def _exclude_misc(self, name, value): - """Handle 'exclude()' for list/tuple attrs without a special handler""" - if not isinstance(value, sequence): - raise DistutilsSetupError( - "%s: setting must be a list or tuple (%r)" % (name, value) - ) - try: - old = getattr(self, name) - except AttributeError: - raise DistutilsSetupError( - "%s: No such distribution setting" % name - ) - if old is not None and not isinstance(old, sequence): - raise DistutilsSetupError( - name + ": this setting cannot be changed via include/exclude" - ) - elif old: - setattr(self, name, [item for item in old if item not in value]) - - def _include_misc(self, name, value): - """Handle 'include()' for list/tuple attrs without a special handler""" - - if not isinstance(value, sequence): - raise DistutilsSetupError( - "%s: setting must be a list (%r)" % (name, value) - ) - try: - old = getattr(self, name) - except AttributeError: - raise DistutilsSetupError( - "%s: No such distribution setting" % name - ) - if old is None: - setattr(self, name, value) - elif not isinstance(old, sequence): - raise DistutilsSetupError( - name + ": this setting cannot be changed via include/exclude" - ) - else: - setattr(self, name, old + [item for item in value if item not in old]) - - def exclude(self, **attrs): - """Remove items from distribution that are named in keyword arguments - - For example, 'dist.exclude(py_modules=["x"])' would remove 'x' from - the distribution's 'py_modules' attribute. Excluding packages uses - the 'exclude_package()' method, so all of the package's contained - packages, modules, and extensions are also excluded. - - Currently, this method only supports exclusion from attributes that are - lists or tuples. If you need to add support for excluding from other - attributes in this or a subclass, you can add an '_exclude_X' method, - where 'X' is the name of the attribute. The method will be called with - the value passed to 'exclude()'. So, 'dist.exclude(foo={"bar":"baz"})' - will try to call 'dist._exclude_foo({"bar":"baz"})', which can then - handle whatever special exclusion logic is needed. - """ - for k, v in attrs.items(): - exclude = getattr(self, '_exclude_' + k, None) - if exclude: - exclude(v) - else: - self._exclude_misc(k, v) - - def _exclude_packages(self, packages): - if not isinstance(packages, sequence): - raise DistutilsSetupError( - "packages: setting must be a list or tuple (%r)" % (packages,) - ) - list(map(self.exclude_package, packages)) - - def _parse_command_opts(self, parser, args): - # Remove --with-X/--without-X options when processing command args - self.global_options = self.__class__.global_options - self.negative_opt = self.__class__.negative_opt - - # First, expand any aliases - command = args[0] - aliases = self.get_option_dict('aliases') - while command in aliases: - src, alias = aliases[command] - del aliases[command] # ensure each alias can expand only once! - import shlex - args[:1] = shlex.split(alias, True) - command = args[0] - - nargs = _Distribution._parse_command_opts(self, parser, args) - - # Handle commands that want to consume all remaining arguments - cmd_class = self.get_command_class(command) - if getattr(cmd_class, 'command_consumes_arguments', None): - self.get_option_dict(command)['args'] = ("command line", nargs) - if nargs is not None: - return [] - - return nargs - - def get_cmdline_options(self): - """Return a '{cmd: {opt:val}}' map of all command-line options - - Option names are all long, but do not include the leading '--', and - contain dashes rather than underscores. If the option doesn't take - an argument (e.g. '--quiet'), the 'val' is 'None'. - - Note that options provided by config files are intentionally excluded. - """ - - d = {} - - for cmd, opts in self.command_options.items(): - - for opt, (src, val) in opts.items(): - - if src != "command line": - continue - - opt = opt.replace('_', '-') - - if val == 0: - cmdobj = self.get_command_obj(cmd) - neg_opt = self.negative_opt.copy() - neg_opt.update(getattr(cmdobj, 'negative_opt', {})) - for neg, pos in neg_opt.items(): - if pos == opt: - opt = neg - val = None - break - else: - raise AssertionError("Shouldn't be able to get here") - - elif val == 1: - val = None - - d.setdefault(cmd, {})[opt] = val - - return d - - def iter_distribution_names(self): - """Yield all packages, modules, and extension names in distribution""" - - for pkg in self.packages or (): - yield pkg - - for module in self.py_modules or (): - yield module - - for ext in self.ext_modules or (): - if isinstance(ext, tuple): - name, buildinfo = ext - else: - name = ext.name - if name.endswith('module'): - name = name[:-6] - yield name - - def handle_display_options(self, option_order): - """If there were any non-global "display-only" options - (--help-commands or the metadata display options) on the command - line, display the requested info and return true; else return - false. - """ - import sys - - if six.PY2 or self.help_commands: - return _Distribution.handle_display_options(self, option_order) - - # Stdout may be StringIO (e.g. in tests) - import io - if not isinstance(sys.stdout, io.TextIOWrapper): - return _Distribution.handle_display_options(self, option_order) - - # Don't wrap stdout if utf-8 is already the encoding. Provides - # workaround for #334. - if sys.stdout.encoding.lower() in ('utf-8', 'utf8'): - return _Distribution.handle_display_options(self, option_order) - - # Print metadata in UTF-8 no matter the platform - encoding = sys.stdout.encoding - errors = sys.stdout.errors - newline = sys.platform != 'win32' and '\n' or None - line_buffering = sys.stdout.line_buffering - - sys.stdout = io.TextIOWrapper( - sys.stdout.detach(), 'utf-8', errors, newline, line_buffering) - try: - return _Distribution.handle_display_options(self, option_order) - finally: - sys.stdout = io.TextIOWrapper( - sys.stdout.detach(), encoding, errors, newline, line_buffering) - - -class Feature: - """ - **deprecated** -- The `Feature` facility was never completely implemented - or supported, `has reported issues - <https://github.com/pypa/setuptools/issues/58>`_ and will be removed in - a future version. - - A subset of the distribution that can be excluded if unneeded/wanted - - Features are created using these keyword arguments: - - 'description' -- a short, human readable description of the feature, to - be used in error messages, and option help messages. - - 'standard' -- if true, the feature is included by default if it is - available on the current system. Otherwise, the feature is only - included if requested via a command line '--with-X' option, or if - another included feature requires it. The default setting is 'False'. - - 'available' -- if true, the feature is available for installation on the - current system. The default setting is 'True'. - - 'optional' -- if true, the feature's inclusion can be controlled from the - command line, using the '--with-X' or '--without-X' options. If - false, the feature's inclusion status is determined automatically, - based on 'availabile', 'standard', and whether any other feature - requires it. The default setting is 'True'. - - 'require_features' -- a string or sequence of strings naming features - that should also be included if this feature is included. Defaults to - empty list. May also contain 'Require' objects that should be - added/removed from the distribution. - - 'remove' -- a string or list of strings naming packages to be removed - from the distribution if this feature is *not* included. If the - feature *is* included, this argument is ignored. This argument exists - to support removing features that "crosscut" a distribution, such as - defining a 'tests' feature that removes all the 'tests' subpackages - provided by other features. The default for this argument is an empty - list. (Note: the named package(s) or modules must exist in the base - distribution when the 'setup()' function is initially called.) - - other keywords -- any other keyword arguments are saved, and passed to - the distribution's 'include()' and 'exclude()' methods when the - feature is included or excluded, respectively. So, for example, you - could pass 'packages=["a","b"]' to cause packages 'a' and 'b' to be - added or removed from the distribution as appropriate. - - A feature must include at least one 'requires', 'remove', or other - keyword argument. Otherwise, it can't affect the distribution in any way. - Note also that you can subclass 'Feature' to create your own specialized - feature types that modify the distribution in other ways when included or - excluded. See the docstrings for the various methods here for more detail. - Aside from the methods, the only feature attributes that distributions look - at are 'description' and 'optional'. - """ - - @staticmethod - def warn_deprecated(): - warnings.warn( - "Features are deprecated and will be removed in a future " - "version. See https://github.com/pypa/setuptools/issues/65.", - DeprecationWarning, - stacklevel=3, - ) - - def __init__(self, description, standard=False, available=True, - optional=True, require_features=(), remove=(), **extras): - self.warn_deprecated() - - self.description = description - self.standard = standard - self.available = available - self.optional = optional - if isinstance(require_features, (str, Require)): - require_features = require_features, - - self.require_features = [ - r for r in require_features if isinstance(r, str) - ] - er = [r for r in require_features if not isinstance(r, str)] - if er: - extras['require_features'] = er - - if isinstance(remove, str): - remove = remove, - self.remove = remove - self.extras = extras - - if not remove and not require_features and not extras: - raise DistutilsSetupError( - "Feature %s: must define 'require_features', 'remove', or at least one" - " of 'packages', 'py_modules', etc." - ) - - def include_by_default(self): - """Should this feature be included by default?""" - return self.available and self.standard - - def include_in(self, dist): - """Ensure feature and its requirements are included in distribution - - You may override this in a subclass to perform additional operations on - the distribution. Note that this method may be called more than once - per feature, and so should be idempotent. - - """ - - if not self.available: - raise DistutilsPlatformError( - self.description + " is required, " - "but is not available on this platform" - ) - - dist.include(**self.extras) - - for f in self.require_features: - dist.include_feature(f) - - def exclude_from(self, dist): - """Ensure feature is excluded from distribution - - You may override this in a subclass to perform additional operations on - the distribution. This method will be called at most once per - feature, and only after all included features have been asked to - include themselves. - """ - - dist.exclude(**self.extras) - - if self.remove: - for item in self.remove: - dist.exclude_package(item) - - def validate(self, dist): - """Verify that feature makes sense in context of distribution - - This method is called by the distribution just before it parses its - command line. It checks to ensure that the 'remove' attribute, if any, - contains only valid package/module names that are present in the base - distribution when 'setup()' is called. You may override it in a - subclass to perform any other required validation of the feature - against a target distribution. - """ - - for item in self.remove: - if not dist.has_contents_for(item): - raise DistutilsSetupError( - "%s wants to be able to remove %s, but the distribution" - " doesn't contain any packages or modules under %s" - % (self.description, item, item) - ) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/extension.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/extension.py deleted file mode 100644 index 29468894..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/extension.py +++ /dev/null @@ -1,57 +0,0 @@ -import re -import functools -import distutils.core -import distutils.errors -import distutils.extension - -from setuptools.extern.six.moves import map - -from .monkey import get_unpatched - - -def _have_cython(): - """ - Return True if Cython can be imported. - """ - cython_impl = 'Cython.Distutils.build_ext' - try: - # from (cython_impl) import build_ext - __import__(cython_impl, fromlist=['build_ext']).build_ext - return True - except Exception: - pass - return False - - -# for compatibility -have_pyrex = _have_cython - -_Extension = get_unpatched(distutils.core.Extension) - - -class Extension(_Extension): - """Extension that uses '.c' files in place of '.pyx' files""" - - def __init__(self, name, sources, *args, **kw): - # The *args is needed for compatibility as calls may use positional - # arguments. py_limited_api may be set only via keyword. - self.py_limited_api = kw.pop("py_limited_api", False) - _Extension.__init__(self, name, sources, *args, **kw) - - def _convert_pyx_sources_to_lang(self): - """ - Replace sources with .pyx extensions to sources with the target - language extension. This mechanism allows language authors to supply - pre-converted sources but to prefer the .pyx sources. - """ - if _have_cython(): - # the build has Cython, so allow it to compile the .pyx files - return - lang = self.language or '' - target_ext = '.cpp' if lang.lower() == 'c++' else '.c' - sub = functools.partial(re.sub, '.pyx$', target_ext) - self.sources = list(map(sub, self.sources)) - - -class Library(Extension): - """Just like a regular Extension, but built as a library instead""" diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/extern/__init__.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/extern/__init__.py deleted file mode 100644 index 2cd08b7e..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/extern/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from pkg_resources.extern import VendorImporter - -names = 'six', -VendorImporter(__name__, names, 'pkg_resources._vendor').install() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.pyc b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index a5dd295c..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/glob.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/glob.py deleted file mode 100644 index 6c781de3..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/glob.py +++ /dev/null @@ -1,176 +0,0 @@ -""" -Filename globbing utility. Mostly a copy of `glob` from Python 3.5. - -Changes include: - * `yield from` and PEP3102 `*` removed. - * `bytes` changed to `six.binary_type`. - * Hidden files are not ignored. -""" - -import os -import re -import fnmatch -from setuptools.extern.six import binary_type - -__all__ = ["glob", "iglob", "escape"] - - -def glob(pathname, recursive=False): - """Return a list of paths matching a pathname pattern. - - The pattern may contain simple shell-style wildcards a la - fnmatch. However, unlike fnmatch, filenames starting with a - dot are special cases that are not matched by '*' and '?' - patterns. - - If recursive is true, the pattern '**' will match any files and - zero or more directories and subdirectories. - """ - return list(iglob(pathname, recursive=recursive)) - - -def iglob(pathname, recursive=False): - """Return an iterator which yields the paths matching a pathname pattern. - - The pattern may contain simple shell-style wildcards a la - fnmatch. However, unlike fnmatch, filenames starting with a - dot are special cases that are not matched by '*' and '?' - patterns. - - If recursive is true, the pattern '**' will match any files and - zero or more directories and subdirectories. - """ - it = _iglob(pathname, recursive) - if recursive and _isrecursive(pathname): - s = next(it) # skip empty string - assert not s - return it - - -def _iglob(pathname, recursive): - dirname, basename = os.path.split(pathname) - if not has_magic(pathname): - if basename: - if os.path.lexists(pathname): - yield pathname - else: - # Patterns ending with a slash should match only directories - if os.path.isdir(dirname): - yield pathname - return - if not dirname: - if recursive and _isrecursive(basename): - for x in glob2(dirname, basename): - yield x - else: - for x in glob1(dirname, basename): - yield x - return - # `os.path.split()` returns the argument itself as a dirname if it is a - # drive or UNC path. Prevent an infinite recursion if a drive or UNC path - # contains magic characters (i.e. r'\\?\C:'). - if dirname != pathname and has_magic(dirname): - dirs = _iglob(dirname, recursive) - else: - dirs = [dirname] - if has_magic(basename): - if recursive and _isrecursive(basename): - glob_in_dir = glob2 - else: - glob_in_dir = glob1 - else: - glob_in_dir = glob0 - for dirname in dirs: - for name in glob_in_dir(dirname, basename): - yield os.path.join(dirname, name) - - -# These 2 helper functions non-recursively glob inside a literal directory. -# They return a list of basenames. `glob1` accepts a pattern while `glob0` -# takes a literal basename (so it only has to check for its existence). - - -def glob1(dirname, pattern): - if not dirname: - if isinstance(pattern, binary_type): - dirname = os.curdir.encode('ASCII') - else: - dirname = os.curdir - try: - names = os.listdir(dirname) - except OSError: - return [] - return fnmatch.filter(names, pattern) - - -def glob0(dirname, basename): - if not basename: - # `os.path.split()` returns an empty basename for paths ending with a - # directory separator. 'q*x/' should match only directories. - if os.path.isdir(dirname): - return [basename] - else: - if os.path.lexists(os.path.join(dirname, basename)): - return [basename] - return [] - - -# This helper function recursively yields relative pathnames inside a literal -# directory. - - -def glob2(dirname, pattern): - assert _isrecursive(pattern) - yield pattern[:0] - for x in _rlistdir(dirname): - yield x - - -# Recursively yields relative pathnames inside a literal directory. -def _rlistdir(dirname): - if not dirname: - if isinstance(dirname, binary_type): - dirname = binary_type(os.curdir, 'ASCII') - else: - dirname = os.curdir - try: - names = os.listdir(dirname) - except os.error: - return - for x in names: - yield x - path = os.path.join(dirname, x) if dirname else x - for y in _rlistdir(path): - yield os.path.join(x, y) - - -magic_check = re.compile('([*?[])') -magic_check_bytes = re.compile(b'([*?[])') - - -def has_magic(s): - if isinstance(s, binary_type): - match = magic_check_bytes.search(s) - else: - match = magic_check.search(s) - return match is not None - - -def _isrecursive(pattern): - if isinstance(pattern, binary_type): - return pattern == b'**' - else: - return pattern == '**' - - -def escape(pathname): - """Escape all special characters. - """ - # Escaping is done by wrapping any of "*?[" between square brackets. - # Metacharacters do not work in the drive part and shouldn't be escaped. - drive, pathname = os.path.splitdrive(pathname) - if isinstance(pathname, binary_type): - pathname = magic_check_bytes.sub(br'[\1]', pathname) - else: - pathname = magic_check.sub(r'[\1]', pathname) - return drive + pathname diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/gui-32.exe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/gui-32.exe deleted file mode 100644 index f8d35096..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/gui-32.exe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/gui-64.exe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/gui-64.exe deleted file mode 100644 index 330c51a5..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/gui-64.exe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/gui.exe b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/gui.exe deleted file mode 100644 index f8d35096..00000000 Binary files a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/gui.exe and /dev/null differ diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/launch.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/launch.py deleted file mode 100644 index 308283ea..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/launch.py +++ /dev/null @@ -1,35 +0,0 @@ -""" -Launch the Python script on the command line after -setuptools is bootstrapped via import. -""" - -# Note that setuptools gets imported implicitly by the -# invocation of this script using python -m setuptools.launch - -import tokenize -import sys - - -def run(): - """ - Run the script in sys.argv[1] as if it had - been invoked naturally. - """ - __builtins__ - script_name = sys.argv[1] - namespace = dict( - __file__=script_name, - __name__='__main__', - __doc__=None, - ) - sys.argv[:] = sys.argv[1:] - - open_ = getattr(tokenize, 'open', open) - script = open_(script_name).read() - norm_script = script.replace('\\r\\n', '\\n') - code = compile(norm_script, script_name, 'exec') - exec(code, namespace) - - -if __name__ == '__main__': - run() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/lib2to3_ex.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/lib2to3_ex.py deleted file mode 100644 index 4b1a73fe..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/lib2to3_ex.py +++ /dev/null @@ -1,62 +0,0 @@ -""" -Customized Mixin2to3 support: - - - adds support for converting doctests - - -This module raises an ImportError on Python 2. -""" - -from distutils.util import Mixin2to3 as _Mixin2to3 -from distutils import log -from lib2to3.refactor import RefactoringTool, get_fixers_from_package - -import setuptools - - -class DistutilsRefactoringTool(RefactoringTool): - def log_error(self, msg, *args, **kw): - log.error(msg, *args) - - def log_message(self, msg, *args): - log.info(msg, *args) - - def log_debug(self, msg, *args): - log.debug(msg, *args) - - -class Mixin2to3(_Mixin2to3): - def run_2to3(self, files, doctests=False): - # See of the distribution option has been set, otherwise check the - # setuptools default. - if self.distribution.use_2to3 is not True: - return - if not files: - return - log.info("Fixing " + " ".join(files)) - self.__build_fixer_names() - self.__exclude_fixers() - if doctests: - if setuptools.run_2to3_on_doctests: - r = DistutilsRefactoringTool(self.fixer_names) - r.refactor(files, write=True, doctests_only=True) - else: - _Mixin2to3.run_2to3(self, files) - - def __build_fixer_names(self): - if self.fixer_names: - return - self.fixer_names = [] - for p in setuptools.lib2to3_fixer_packages: - self.fixer_names.extend(get_fixers_from_package(p)) - if self.distribution.use_2to3_fixers is not None: - for p in self.distribution.use_2to3_fixers: - self.fixer_names.extend(get_fixers_from_package(p)) - - def __exclude_fixers(self): - excluded_fixers = getattr(self, 'exclude_fixers', []) - if self.distribution.use_2to3_exclude_fixers is not None: - excluded_fixers.extend(self.distribution.use_2to3_exclude_fixers) - for fixer_name in excluded_fixers: - if fixer_name in self.fixer_names: - self.fixer_names.remove(fixer_name) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/monkey.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/monkey.py deleted file mode 100644 index aabc280f..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/monkey.py +++ /dev/null @@ -1,186 +0,0 @@ -""" -Monkey patching of distutils. -""" - -import sys -import distutils.filelist -import platform -import types -import functools - -from .py26compat import import_module -from setuptools.extern import six - -import setuptools - -__all__ = [] -""" -Everything is private. Contact the project team -if you think you need this functionality. -""" - - -def get_unpatched(item): - lookup = ( - get_unpatched_class if isinstance(item, six.class_types) else - get_unpatched_function if isinstance(item, types.FunctionType) else - lambda item: None - ) - return lookup(item) - - -def get_unpatched_class(cls): - """Protect against re-patching the distutils if reloaded - - Also ensures that no other distutils extension monkeypatched the distutils - first. - """ - while cls.__module__.startswith('setuptools'): - cls, = cls.__bases__ - if not cls.__module__.startswith('distutils'): - msg = "distutils has already been patched by %r" % cls - raise AssertionError(msg) - return cls - - -def patch_all(): - # we can't patch distutils.cmd, alas - distutils.core.Command = setuptools.Command - - has_issue_12885 = ( - sys.version_info < (3, 4, 6) - or - (3, 5) < sys.version_info <= (3, 5, 3) - or - (3, 6) < sys.version_info - ) - - if has_issue_12885: - # fix findall bug in distutils (http://bugs.python.org/issue12885) - distutils.filelist.findall = setuptools.findall - - needs_warehouse = ( - sys.version_info < (2, 7, 13) - or - (3, 0) < sys.version_info < (3, 3, 7) - or - (3, 4) < sys.version_info < (3, 4, 6) - or - (3, 5) < sys.version_info <= (3, 5, 3) - or - (3, 6) < sys.version_info - ) - - if needs_warehouse: - warehouse = 'https://upload.pypi.org/legacy/' - distutils.config.PyPIRCCommand.DEFAULT_REPOSITORY = warehouse - - _patch_distribution_metadata_write_pkg_file() - _patch_distribution_metadata_write_pkg_info() - - # Install Distribution throughout the distutils - for module in distutils.dist, distutils.core, distutils.cmd: - module.Distribution = setuptools.dist.Distribution - - # Install the patched Extension - distutils.core.Extension = setuptools.extension.Extension - distutils.extension.Extension = setuptools.extension.Extension - if 'distutils.command.build_ext' in sys.modules: - sys.modules['distutils.command.build_ext'].Extension = ( - setuptools.extension.Extension - ) - - patch_for_msvc_specialized_compiler() - - -def _patch_distribution_metadata_write_pkg_file(): - """Patch write_pkg_file to also write Requires-Python/Requires-External""" - distutils.dist.DistributionMetadata.write_pkg_file = ( - setuptools.dist.write_pkg_file - ) - - -def _patch_distribution_metadata_write_pkg_info(): - """ - Workaround issue #197 - Python 3 prior to 3.2.2 uses an environment-local - encoding to save the pkg_info. Monkey-patch its write_pkg_info method to - correct this undesirable behavior. - """ - environment_local = (3,) <= sys.version_info[:3] < (3, 2, 2) - if not environment_local: - return - - distutils.dist.DistributionMetadata.write_pkg_info = ( - setuptools.dist.write_pkg_info - ) - - -def patch_func(replacement, target_mod, func_name): - """ - Patch func_name in target_mod with replacement - - Important - original must be resolved by name to avoid - patching an already patched function. - """ - original = getattr(target_mod, func_name) - - # set the 'unpatched' attribute on the replacement to - # point to the original. - vars(replacement).setdefault('unpatched', original) - - # replace the function in the original module - setattr(target_mod, func_name, replacement) - - -def get_unpatched_function(candidate): - return getattr(candidate, 'unpatched') - - -def patch_for_msvc_specialized_compiler(): - """ - Patch functions in distutils to use standalone Microsoft Visual C++ - compilers. - """ - # import late to avoid circular imports on Python < 3.5 - msvc = import_module('setuptools.msvc') - - if platform.system() != 'Windows': - # Compilers only availables on Microsoft Windows - return - - def patch_params(mod_name, func_name): - """ - Prepare the parameters for patch_func to patch indicated function. - """ - repl_prefix = 'msvc9_' if 'msvc9' in mod_name else 'msvc14_' - repl_name = repl_prefix + func_name.lstrip('_') - repl = getattr(msvc, repl_name) - mod = import_module(mod_name) - if not hasattr(mod, func_name): - raise ImportError(func_name) - return repl, mod, func_name - - # Python 2.7 to 3.4 - msvc9 = functools.partial(patch_params, 'distutils.msvc9compiler') - - # Python 3.5+ - msvc14 = functools.partial(patch_params, 'distutils._msvccompiler') - - try: - # Patch distutils.msvc9compiler - patch_func(*msvc9('find_vcvarsall')) - patch_func(*msvc9('query_vcvarsall')) - except ImportError: - pass - - try: - # Patch distutils._msvccompiler._get_vc_env - patch_func(*msvc14('_get_vc_env')) - except ImportError: - pass - - try: - # Patch distutils._msvccompiler.gen_lib_options for Numpy - patch_func(*msvc14('gen_lib_options')) - except ImportError: - pass diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/msvc.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/msvc.py deleted file mode 100644 index 447ddb38..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/msvc.py +++ /dev/null @@ -1,1193 +0,0 @@ -""" -Improved support for Microsoft Visual C++ compilers. - -Known supported compilers: --------------------------- -Microsoft Visual C++ 9.0: - Microsoft Visual C++ Compiler for Python 2.7 (x86, amd64); - Microsoft Windows SDK 7.0 (x86, x64, ia64); - Microsoft Windows SDK 6.1 (x86, x64, ia64) - -Microsoft Visual C++ 10.0: - Microsoft Windows SDK 7.1 (x86, x64, ia64) - -Microsoft Visual C++ 14.0: - Microsoft Visual C++ Build Tools 2015 (x86, x64, arm) -""" - -import os -import sys -import platform -import itertools -import distutils.errors -from pkg_resources.extern.packaging.version import LegacyVersion - -from setuptools.extern.six.moves import filterfalse - -from .monkey import get_unpatched - -if platform.system() == 'Windows': - from setuptools.extern.six.moves import winreg - safe_env = os.environ -else: - """ - Mock winreg and environ so the module can be imported - on this platform. - """ - - class winreg: - HKEY_USERS = None - HKEY_CURRENT_USER = None - HKEY_LOCAL_MACHINE = None - HKEY_CLASSES_ROOT = None - - safe_env = dict() - -try: - from distutils.msvc9compiler import Reg -except ImportError: - pass - - -def msvc9_find_vcvarsall(version): - """ - Patched "distutils.msvc9compiler.find_vcvarsall" to use the standalone - compiler build for Python (VCForPython). Fall back to original behavior - when the standalone compiler is not available. - - Redirect the path of "vcvarsall.bat". - - Known supported compilers - ------------------------- - Microsoft Visual C++ 9.0: - Microsoft Visual C++ Compiler for Python 2.7 (x86, amd64) - - Parameters - ---------- - version: float - Required Microsoft Visual C++ version. - - Return - ------ - vcvarsall.bat path: str - """ - VC_BASE = r'Software\%sMicrosoft\DevDiv\VCForPython\%0.1f' - key = VC_BASE % ('', version) - try: - # Per-user installs register the compiler path here - productdir = Reg.get_value(key, "installdir") - except KeyError: - try: - # All-user installs on a 64-bit system register here - key = VC_BASE % ('Wow6432Node\\', version) - productdir = Reg.get_value(key, "installdir") - except KeyError: - productdir = None - - if productdir: - vcvarsall = os.path.os.path.join(productdir, "vcvarsall.bat") - if os.path.isfile(vcvarsall): - return vcvarsall - - return get_unpatched(msvc9_find_vcvarsall)(version) - - -def msvc9_query_vcvarsall(ver, arch='x86', *args, **kwargs): - """ - Patched "distutils.msvc9compiler.query_vcvarsall" for support standalones - compilers. - - Set environment without use of "vcvarsall.bat". - - Known supported compilers - ------------------------- - Microsoft Visual C++ 9.0: - Microsoft Visual C++ Compiler for Python 2.7 (x86, amd64); - Microsoft Windows SDK 7.0 (x86, x64, ia64); - Microsoft Windows SDK 6.1 (x86, x64, ia64) - - Microsoft Visual C++ 10.0: - Microsoft Windows SDK 7.1 (x86, x64, ia64) - - Parameters - ---------- - ver: float - Required Microsoft Visual C++ version. - arch: str - Target architecture. - - Return - ------ - environment: dict - """ - # Try to get environement from vcvarsall.bat (Classical way) - try: - orig = get_unpatched(msvc9_query_vcvarsall) - return orig(ver, arch, *args, **kwargs) - except distutils.errors.DistutilsPlatformError: - # Pass error if Vcvarsall.bat is missing - pass - except ValueError: - # Pass error if environment not set after executing vcvarsall.bat - pass - - # If error, try to set environment directly - try: - return EnvironmentInfo(arch, ver).return_env() - except distutils.errors.DistutilsPlatformError as exc: - _augment_exception(exc, ver, arch) - raise - - -def msvc14_get_vc_env(plat_spec): - """ - Patched "distutils._msvccompiler._get_vc_env" for support standalones - compilers. - - Set environment without use of "vcvarsall.bat". - - Known supported compilers - ------------------------- - Microsoft Visual C++ 14.0: - Microsoft Visual C++ Build Tools 2015 (x86, x64, arm) - - Parameters - ---------- - plat_spec: str - Target architecture. - - Return - ------ - environment: dict - """ - # Try to get environment from vcvarsall.bat (Classical way) - try: - return get_unpatched(msvc14_get_vc_env)(plat_spec) - except distutils.errors.DistutilsPlatformError: - # Pass error Vcvarsall.bat is missing - pass - - # If error, try to set environment directly - try: - return EnvironmentInfo(plat_spec, vc_min_ver=14.0).return_env() - except distutils.errors.DistutilsPlatformError as exc: - _augment_exception(exc, 14.0) - raise - - -def msvc14_gen_lib_options(*args, **kwargs): - """ - Patched "distutils._msvccompiler.gen_lib_options" for fix - compatibility between "numpy.distutils" and "distutils._msvccompiler" - (for Numpy < 1.11.2) - """ - if "numpy.distutils" in sys.modules: - import numpy as np - if LegacyVersion(np.__version__) < LegacyVersion('1.11.2'): - return np.distutils.ccompiler.gen_lib_options(*args, **kwargs) - return get_unpatched(msvc14_gen_lib_options)(*args, **kwargs) - - -def _augment_exception(exc, version, arch=''): - """ - Add details to the exception message to help guide the user - as to what action will resolve it. - """ - # Error if MSVC++ directory not found or environment not set - message = exc.args[0] - - if "vcvarsall" in message.lower() or "visual c" in message.lower(): - # Special error message if MSVC++ not installed - tmpl = 'Microsoft Visual C++ {version:0.1f} is required.' - message = tmpl.format(**locals()) - msdownload = 'www.microsoft.com/download/details.aspx?id=%d' - if version == 9.0: - if arch.lower().find('ia64') > -1: - # For VC++ 9.0, if IA64 support is needed, redirect user - # to Windows SDK 7.0 - message += ' Get it with "Microsoft Windows SDK 7.0": ' - message += msdownload % 3138 - else: - # For VC++ 9.0 redirect user to Vc++ for Python 2.7 : - # This redirection link is maintained by Microsoft. - # Contact vspython@microsoft.com if it needs updating. - message += ' Get it from http://aka.ms/vcpython27' - elif version == 10.0: - # For VC++ 10.0 Redirect user to Windows SDK 7.1 - message += ' Get it with "Microsoft Windows SDK 7.1": ' - message += msdownload % 8279 - elif version >= 14.0: - # For VC++ 14.0 Redirect user to Visual C++ Build Tools - message += (' Get it with "Microsoft Visual C++ Build Tools": ' - r'http://landinghub.visualstudio.com/' - 'visual-cpp-build-tools') - - exc.args = (message, ) - - -class PlatformInfo: - """ - Current and Target Architectures informations. - - Parameters - ---------- - arch: str - Target architecture. - """ - current_cpu = safe_env.get('processor_architecture', '').lower() - - def __init__(self, arch): - self.arch = arch.lower().replace('x64', 'amd64') - - @property - def target_cpu(self): - return self.arch[self.arch.find('_') + 1:] - - def target_is_x86(self): - return self.target_cpu == 'x86' - - def current_is_x86(self): - return self.current_cpu == 'x86' - - def current_dir(self, hidex86=False, x64=False): - """ - Current platform specific subfolder. - - Parameters - ---------- - hidex86: bool - return '' and not '\x86' if architecture is x86. - x64: bool - return '\x64' and not '\amd64' if architecture is amd64. - - Return - ------ - subfolder: str - '\target', or '' (see hidex86 parameter) - """ - return ( - '' if (self.current_cpu == 'x86' and hidex86) else - r'\x64' if (self.current_cpu == 'amd64' and x64) else - r'\%s' % self.current_cpu - ) - - def target_dir(self, hidex86=False, x64=False): - """ - Target platform specific subfolder. - - Parameters - ---------- - hidex86: bool - return '' and not '\x86' if architecture is x86. - x64: bool - return '\x64' and not '\amd64' if architecture is amd64. - - Return - ------ - subfolder: str - '\current', or '' (see hidex86 parameter) - """ - return ( - '' if (self.target_cpu == 'x86' and hidex86) else - r'\x64' if (self.target_cpu == 'amd64' and x64) else - r'\%s' % self.target_cpu - ) - - def cross_dir(self, forcex86=False): - """ - Cross platform specific subfolder. - - Parameters - ---------- - forcex86: bool - Use 'x86' as current architecture even if current acritecture is - not x86. - - Return - ------ - subfolder: str - '' if target architecture is current architecture, - '\current_target' if not. - """ - current = 'x86' if forcex86 else self.current_cpu - return ( - '' if self.target_cpu == current else - self.target_dir().replace('\\', '\\%s_' % current) - ) - - -class RegistryInfo: - """ - Microsoft Visual Studio related registry informations. - - Parameters - ---------- - platform_info: PlatformInfo - "PlatformInfo" instance. - """ - HKEYS = (winreg.HKEY_USERS, - winreg.HKEY_CURRENT_USER, - winreg.HKEY_LOCAL_MACHINE, - winreg.HKEY_CLASSES_ROOT) - - def __init__(self, platform_info): - self.pi = platform_info - - @property - def visualstudio(self): - """ - Microsoft Visual Studio root registry key. - """ - return 'VisualStudio' - - @property - def sxs(self): - """ - Microsoft Visual Studio SxS registry key. - """ - return os.path.join(self.visualstudio, 'SxS') - - @property - def vc(self): - """ - Microsoft Visual C++ VC7 registry key. - """ - return os.path.join(self.sxs, 'VC7') - - @property - def vs(self): - """ - Microsoft Visual Studio VS7 registry key. - """ - return os.path.join(self.sxs, 'VS7') - - @property - def vc_for_python(self): - """ - Microsoft Visual C++ for Python registry key. - """ - return r'DevDiv\VCForPython' - - @property - def microsoft_sdk(self): - """ - Microsoft SDK registry key. - """ - return 'Microsoft SDKs' - - @property - def windows_sdk(self): - """ - Microsoft Windows/Platform SDK registry key. - """ - return os.path.join(self.microsoft_sdk, 'Windows') - - @property - def netfx_sdk(self): - """ - Microsoft .NET Framework SDK registry key. - """ - return os.path.join(self.microsoft_sdk, 'NETFXSDK') - - @property - def windows_kits_roots(self): - """ - Microsoft Windows Kits Roots registry key. - """ - return r'Windows Kits\Installed Roots' - - def microsoft(self, key, x86=False): - """ - Return key in Microsoft software registry. - - Parameters - ---------- - key: str - Registry key path where look. - x86: str - Force x86 software registry. - - Return - ------ - str: value - """ - node64 = '' if self.pi.current_is_x86() or x86 else r'\Wow6432Node' - return os.path.join('Software', node64, 'Microsoft', key) - - def lookup(self, key, name): - """ - Look for values in registry in Microsoft software registry. - - Parameters - ---------- - key: str - Registry key path where look. - name: str - Value name to find. - - Return - ------ - str: value - """ - KEY_READ = winreg.KEY_READ - openkey = winreg.OpenKey - ms = self.microsoft - for hkey in self.HKEYS: - try: - bkey = openkey(hkey, ms(key), 0, KEY_READ) - except (OSError, IOError): - if not self.pi.current_is_x86(): - try: - bkey = openkey(hkey, ms(key, True), 0, KEY_READ) - except (OSError, IOError): - continue - else: - continue - try: - return winreg.QueryValueEx(bkey, name)[0] - except (OSError, IOError): - pass - - -class SystemInfo: - """ - Microsoft Windows and Visual Studio related system inormations. - - Parameters - ---------- - registry_info: RegistryInfo - "RegistryInfo" instance. - vc_ver: float - Required Microsoft Visual C++ version. - """ - - # Variables and properties in this class use originals CamelCase variables - # names from Microsoft source files for more easy comparaison. - WinDir = safe_env.get('WinDir', '') - ProgramFiles = safe_env.get('ProgramFiles', '') - ProgramFilesx86 = safe_env.get('ProgramFiles(x86)', ProgramFiles) - - def __init__(self, registry_info, vc_ver=None): - self.ri = registry_info - self.pi = self.ri.pi - if vc_ver: - self.vc_ver = vc_ver - else: - try: - self.vc_ver = self.find_available_vc_vers()[-1] - except IndexError: - err = 'No Microsoft Visual C++ version found' - raise distutils.errors.DistutilsPlatformError(err) - - def find_available_vc_vers(self): - """ - Find all available Microsoft Visual C++ versions. - """ - vckeys = (self.ri.vc, self.ri.vc_for_python) - vc_vers = [] - for hkey in self.ri.HKEYS: - for key in vckeys: - try: - bkey = winreg.OpenKey(hkey, key, 0, winreg.KEY_READ) - except (OSError, IOError): - continue - subkeys, values, _ = winreg.QueryInfoKey(bkey) - for i in range(values): - try: - ver = float(winreg.EnumValue(bkey, i)[0]) - if ver not in vc_vers: - vc_vers.append(ver) - except ValueError: - pass - for i in range(subkeys): - try: - ver = float(winreg.EnumKey(bkey, i)) - if ver not in vc_vers: - vc_vers.append(ver) - except ValueError: - pass - return sorted(vc_vers) - - @property - def VSInstallDir(self): - """ - Microsoft Visual Studio directory. - """ - # Default path - name = 'Microsoft Visual Studio %0.1f' % self.vc_ver - default = os.path.join(self.ProgramFilesx86, name) - - # Try to get path from registry, if fail use default path - return self.ri.lookup(self.ri.vs, '%0.1f' % self.vc_ver) or default - - @property - def VCInstallDir(self): - """ - Microsoft Visual C++ directory. - """ - # Default path - default = r'Microsoft Visual Studio %0.1f\VC' % self.vc_ver - guess_vc = os.path.join(self.ProgramFilesx86, default) - - # Try to get "VC++ for Python" path from registry as default path - reg_path = os.path.join(self.ri.vc_for_python, '%0.1f' % self.vc_ver) - python_vc = self.ri.lookup(reg_path, 'installdir') - default_vc = os.path.join(python_vc, 'VC') if python_vc else guess_vc - - # Try to get path from registry, if fail use default path - path = self.ri.lookup(self.ri.vc, '%0.1f' % self.vc_ver) or default_vc - - if not os.path.isdir(path): - msg = 'Microsoft Visual C++ directory not found' - raise distutils.errors.DistutilsPlatformError(msg) - - return path - - @property - def WindowsSdkVersion(self): - """ - Microsoft Windows SDK versions. - """ - # Set Windows SDK versions for specified MSVC++ version - if self.vc_ver <= 9.0: - return ('7.0', '6.1', '6.0a') - elif self.vc_ver == 10.0: - return ('7.1', '7.0a') - elif self.vc_ver == 11.0: - return ('8.0', '8.0a') - elif self.vc_ver == 12.0: - return ('8.1', '8.1a') - elif self.vc_ver >= 14.0: - return ('10.0', '8.1') - - @property - def WindowsSdkDir(self): - """ - Microsoft Windows SDK directory. - """ - sdkdir = '' - for ver in self.WindowsSdkVersion: - # Try to get it from registry - loc = os.path.join(self.ri.windows_sdk, 'v%s' % ver) - sdkdir = self.ri.lookup(loc, 'installationfolder') - if sdkdir: - break - if not sdkdir or not os.path.isdir(sdkdir): - # Try to get "VC++ for Python" version from registry - path = os.path.join(self.ri.vc_for_python, '%0.1f' % self.vc_ver) - install_base = self.ri.lookup(path, 'installdir') - if install_base: - sdkdir = os.path.join(install_base, 'WinSDK') - if not sdkdir or not os.path.isdir(sdkdir): - # If fail, use default new path - for ver in self.WindowsSdkVersion: - intver = ver[:ver.rfind('.')] - path = r'Microsoft SDKs\Windows Kits\%s' % (intver) - d = os.path.join(self.ProgramFiles, path) - if os.path.isdir(d): - sdkdir = d - if not sdkdir or not os.path.isdir(sdkdir): - # If fail, use default old path - for ver in self.WindowsSdkVersion: - path = r'Microsoft SDKs\Windows\v%s' % ver - d = os.path.join(self.ProgramFiles, path) - if os.path.isdir(d): - sdkdir = d - if not sdkdir: - # If fail, use Platform SDK - sdkdir = os.path.join(self.VCInstallDir, 'PlatformSDK') - return sdkdir - - @property - def WindowsSDKExecutablePath(self): - """ - Microsoft Windows SDK executable directory. - """ - # Find WinSDK NetFx Tools registry dir name - if self.vc_ver <= 11.0: - netfxver = 35 - arch = '' - else: - netfxver = 40 - hidex86 = True if self.vc_ver <= 12.0 else False - arch = self.pi.current_dir(x64=True, hidex86=hidex86) - fx = 'WinSDK-NetFx%dTools%s' % (netfxver, arch.replace('\\', '-')) - - # liste all possibles registry paths - regpaths = [] - if self.vc_ver >= 14.0: - for ver in self.NetFxSdkVersion: - regpaths += [os.path.join(self.ri.netfx_sdk, ver, fx)] - - for ver in self.WindowsSdkVersion: - regpaths += [os.path.join(self.ri.windows_sdk, 'v%sA' % ver, fx)] - - # Return installation folder from the more recent path - for path in regpaths: - execpath = self.ri.lookup(path, 'installationfolder') - if execpath: - break - return execpath - - @property - def FSharpInstallDir(self): - """ - Microsoft Visual F# directory. - """ - path = r'%0.1f\Setup\F#' % self.vc_ver - path = os.path.join(self.ri.visualstudio, path) - return self.ri.lookup(path, 'productdir') or '' - - @property - def UniversalCRTSdkDir(self): - """ - Microsoft Universal CRT SDK directory. - """ - # Set Kit Roots versions for specified MSVC++ version - if self.vc_ver >= 14.0: - vers = ('10', '81') - else: - vers = () - - # Find path of the more recent Kit - for ver in vers: - sdkdir = self.ri.lookup(self.ri.windows_kits_roots, - 'kitsroot%s' % ver) - if sdkdir: - break - return sdkdir or '' - - @property - def NetFxSdkVersion(self): - """ - Microsoft .NET Framework SDK versions. - """ - # Set FxSdk versions for specified MSVC++ version - if self.vc_ver >= 14.0: - return ('4.6.1', '4.6') - else: - return () - - @property - def NetFxSdkDir(self): - """ - Microsoft .NET Framework SDK directory. - """ - for ver in self.NetFxSdkVersion: - loc = os.path.join(self.ri.netfx_sdk, ver) - sdkdir = self.ri.lookup(loc, 'kitsinstallationfolder') - if sdkdir: - break - return sdkdir or '' - - @property - def FrameworkDir32(self): - """ - Microsoft .NET Framework 32bit directory. - """ - # Default path - guess_fw = os.path.join(self.WinDir, r'Microsoft.NET\Framework') - - # Try to get path from registry, if fail use default path - return self.ri.lookup(self.ri.vc, 'frameworkdir32') or guess_fw - - @property - def FrameworkDir64(self): - """ - Microsoft .NET Framework 64bit directory. - """ - # Default path - guess_fw = os.path.join(self.WinDir, r'Microsoft.NET\Framework64') - - # Try to get path from registry, if fail use default path - return self.ri.lookup(self.ri.vc, 'frameworkdir64') or guess_fw - - @property - def FrameworkVersion32(self): - """ - Microsoft .NET Framework 32bit versions. - """ - return self._find_dot_net_versions(32) - - @property - def FrameworkVersion64(self): - """ - Microsoft .NET Framework 64bit versions. - """ - return self._find_dot_net_versions(64) - - def _find_dot_net_versions(self, bits=32): - """ - Find Microsoft .NET Framework versions. - - Parameters - ---------- - bits: int - Platform number of bits: 32 or 64. - """ - # Find actual .NET version - ver = self.ri.lookup(self.ri.vc, 'frameworkver%d' % bits) or '' - - # Set .NET versions for specified MSVC++ version - if self.vc_ver >= 12.0: - frameworkver = (ver, 'v4.0') - elif self.vc_ver >= 10.0: - frameworkver = ('v4.0.30319' if ver.lower()[:2] != 'v4' else ver, - 'v3.5') - elif self.vc_ver == 9.0: - frameworkver = ('v3.5', 'v2.0.50727') - if self.vc_ver == 8.0: - frameworkver = ('v3.0', 'v2.0.50727') - return frameworkver - - -class EnvironmentInfo: - """ - Return environment variables for specified Microsoft Visual C++ version - and platform : Lib, Include, Path and libpath. - - This function is compatible with Microsoft Visual C++ 9.0 to 14.0. - - Script created by analysing Microsoft environment configuration files like - "vcvars[...].bat", "SetEnv.Cmd", "vcbuildtools.bat", ... - - Parameters - ---------- - arch: str - Target architecture. - vc_ver: float - Required Microsoft Visual C++ version. If not set, autodetect the last - version. - vc_min_ver: float - Minimum Microsoft Visual C++ version. - """ - - # Variables and properties in this class use originals CamelCase variables - # names from Microsoft source files for more easy comparaison. - - def __init__(self, arch, vc_ver=None, vc_min_ver=None): - self.pi = PlatformInfo(arch) - self.ri = RegistryInfo(self.pi) - self.si = SystemInfo(self.ri, vc_ver) - - if vc_min_ver: - if self.vc_ver < vc_min_ver: - err = 'No suitable Microsoft Visual C++ version found' - raise distutils.errors.DistutilsPlatformError(err) - - @property - def vc_ver(self): - """ - Microsoft Visual C++ version. - """ - return self.si.vc_ver - - @property - def VSTools(self): - """ - Microsoft Visual Studio Tools - """ - paths = [r'Common7\IDE', r'Common7\Tools'] - - if self.vc_ver >= 14.0: - arch_subdir = self.pi.current_dir(hidex86=True, x64=True) - paths += [r'Common7\IDE\CommonExtensions\Microsoft\TestWindow'] - paths += [r'Team Tools\Performance Tools'] - paths += [r'Team Tools\Performance Tools%s' % arch_subdir] - - return [os.path.join(self.si.VSInstallDir, path) for path in paths] - - @property - def VCIncludes(self): - """ - Microsoft Visual C++ & Microsoft Foundation Class Includes - """ - return [os.path.join(self.si.VCInstallDir, 'Include'), - os.path.join(self.si.VCInstallDir, r'ATLMFC\Include')] - - @property - def VCLibraries(self): - """ - Microsoft Visual C++ & Microsoft Foundation Class Libraries - """ - arch_subdir = self.pi.target_dir(hidex86=True) - paths = ['Lib%s' % arch_subdir, r'ATLMFC\Lib%s' % arch_subdir] - - if self.vc_ver >= 14.0: - paths += [r'Lib\store%s' % arch_subdir] - - return [os.path.join(self.si.VCInstallDir, path) for path in paths] - - @property - def VCStoreRefs(self): - """ - Microsoft Visual C++ store references Libraries - """ - if self.vc_ver < 14.0: - return [] - return [os.path.join(self.si.VCInstallDir, r'Lib\store\references')] - - @property - def VCTools(self): - """ - Microsoft Visual C++ Tools - """ - si = self.si - tools = [os.path.join(si.VCInstallDir, 'VCPackages')] - - forcex86 = True if self.vc_ver <= 10.0 else False - arch_subdir = self.pi.cross_dir(forcex86) - if arch_subdir: - tools += [os.path.join(si.VCInstallDir, 'Bin%s' % arch_subdir)] - - if self.vc_ver >= 14.0: - path = 'Bin%s' % self.pi.current_dir(hidex86=True) - tools += [os.path.join(si.VCInstallDir, path)] - - else: - tools += [os.path.join(si.VCInstallDir, 'Bin')] - - return tools - - @property - def OSLibraries(self): - """ - Microsoft Windows SDK Libraries - """ - if self.vc_ver <= 10.0: - arch_subdir = self.pi.target_dir(hidex86=True, x64=True) - return [os.path.join(self.si.WindowsSdkDir, 'Lib%s' % arch_subdir)] - - else: - arch_subdir = self.pi.target_dir(x64=True) - lib = os.path.join(self.si.WindowsSdkDir, 'lib') - libver = self._get_content_dirname(lib) - return [os.path.join(lib, '%sum%s' % (libver, arch_subdir))] - - @property - def OSIncludes(self): - """ - Microsoft Windows SDK Include - """ - include = os.path.join(self.si.WindowsSdkDir, 'include') - - if self.vc_ver <= 10.0: - return [include, os.path.join(include, 'gl')] - - else: - if self.vc_ver >= 14.0: - sdkver = self._get_content_dirname(include) - else: - sdkver = '' - return [os.path.join(include, '%sshared' % sdkver), - os.path.join(include, '%sum' % sdkver), - os.path.join(include, '%swinrt' % sdkver)] - - @property - def OSLibpath(self): - """ - Microsoft Windows SDK Libraries Paths - """ - ref = os.path.join(self.si.WindowsSdkDir, 'References') - libpath = [] - - if self.vc_ver <= 9.0: - libpath += self.OSLibraries - - if self.vc_ver >= 11.0: - libpath += [os.path.join(ref, r'CommonConfiguration\Neutral')] - - if self.vc_ver >= 14.0: - libpath += [ - ref, - os.path.join(self.si.WindowsSdkDir, 'UnionMetadata'), - os.path.join( - ref, - 'Windows.Foundation.UniversalApiContract', - '1.0.0.0', - ), - os.path.join( - ref, - 'Windows.Foundation.FoundationContract', - '1.0.0.0', - ), - os.path.join( - ref, - 'Windows.Networking.Connectivity.WwanContract', - '1.0.0.0', - ), - os.path.join( - self.si.WindowsSdkDir, - 'ExtensionSDKs', - 'Microsoft.VCLibs', - '%0.1f' % self.vc_ver, - 'References', - 'CommonConfiguration', - 'neutral', - ), - ] - return libpath - - @property - def SdkTools(self): - """ - Microsoft Windows SDK Tools - """ - bin_dir = 'Bin' if self.vc_ver <= 11.0 else r'Bin\x86' - tools = [os.path.join(self.si.WindowsSdkDir, bin_dir)] - - if not self.pi.current_is_x86(): - arch_subdir = self.pi.current_dir(x64=True) - path = 'Bin%s' % arch_subdir - tools += [os.path.join(self.si.WindowsSdkDir, path)] - - if self.vc_ver == 10.0 or self.vc_ver == 11.0: - if self.pi.target_is_x86(): - arch_subdir = '' - else: - arch_subdir = self.pi.current_dir(hidex86=True, x64=True) - path = r'Bin\NETFX 4.0 Tools%s' % arch_subdir - tools += [os.path.join(self.si.WindowsSdkDir, path)] - - if self.si.WindowsSDKExecutablePath: - tools += [self.si.WindowsSDKExecutablePath] - - return tools - - @property - def SdkSetup(self): - """ - Microsoft Windows SDK Setup - """ - if self.vc_ver > 9.0: - return [] - - return [os.path.join(self.si.WindowsSdkDir, 'Setup')] - - @property - def FxTools(self): - """ - Microsoft .NET Framework Tools - """ - pi = self.pi - si = self.si - - if self.vc_ver <= 10.0: - include32 = True - include64 = not pi.target_is_x86() and not pi.current_is_x86() - else: - include32 = pi.target_is_x86() or pi.current_is_x86() - include64 = pi.current_cpu == 'amd64' or pi.target_cpu == 'amd64' - - tools = [] - if include32: - tools += [os.path.join(si.FrameworkDir32, ver) - for ver in si.FrameworkVersion32] - if include64: - tools += [os.path.join(si.FrameworkDir64, ver) - for ver in si.FrameworkVersion64] - return tools - - @property - def NetFxSDKLibraries(self): - """ - Microsoft .Net Framework SDK Libraries - """ - if self.vc_ver < 14.0 or not self.si.NetFxSdkDir: - return [] - - arch_subdir = self.pi.target_dir(x64=True) - return [os.path.join(self.si.NetFxSdkDir, r'lib\um%s' % arch_subdir)] - - @property - def NetFxSDKIncludes(self): - """ - Microsoft .Net Framework SDK Includes - """ - if self.vc_ver < 14.0 or not self.si.NetFxSdkDir: - return [] - - return [os.path.join(self.si.NetFxSdkDir, r'include\um')] - - @property - def VsTDb(self): - """ - Microsoft Visual Studio Team System Database - """ - return [os.path.join(self.si.VSInstallDir, r'VSTSDB\Deploy')] - - @property - def MSBuild(self): - """ - Microsoft Build Engine - """ - if self.vc_ver < 12.0: - return [] - - arch_subdir = self.pi.current_dir(hidex86=True) - path = r'MSBuild\%0.1f\bin%s' % (self.vc_ver, arch_subdir) - return [os.path.join(self.si.ProgramFilesx86, path)] - - @property - def HTMLHelpWorkshop(self): - """ - Microsoft HTML Help Workshop - """ - if self.vc_ver < 11.0: - return [] - - return [os.path.join(self.si.ProgramFilesx86, 'HTML Help Workshop')] - - @property - def UCRTLibraries(self): - """ - Microsoft Universal CRT Libraries - """ - if self.vc_ver < 14.0: - return [] - - arch_subdir = self.pi.target_dir(x64=True) - lib = os.path.join(self.si.UniversalCRTSdkDir, 'lib') - ucrtver = self._get_content_dirname(lib) - return [os.path.join(lib, '%sucrt%s' % (ucrtver, arch_subdir))] - - @property - def UCRTIncludes(self): - """ - Microsoft Universal CRT Include - """ - if self.vc_ver < 14.0: - return [] - - include = os.path.join(self.si.UniversalCRTSdkDir, 'include') - ucrtver = self._get_content_dirname(include) - return [os.path.join(include, '%sucrt' % ucrtver)] - - @property - def FSharp(self): - """ - Microsoft Visual F# - """ - if self.vc_ver < 11.0 and self.vc_ver > 12.0: - return [] - - return self.si.FSharpInstallDir - - @property - def VCRuntimeRedist(self): - """ - Microsoft Visual C++ runtime redistribuable dll - """ - arch_subdir = self.pi.target_dir(x64=True) - vcruntime = 'redist%s\\Microsoft.VC%d0.CRT\\vcruntime%d0.dll' - vcruntime = vcruntime % (arch_subdir, self.vc_ver, self.vc_ver) - return os.path.join(self.si.VCInstallDir, vcruntime) - - def return_env(self, exists=True): - """ - Return environment dict. - - Parameters - ---------- - exists: bool - It True, only return existing paths. - """ - env = dict( - include=self._build_paths('include', - [self.VCIncludes, - self.OSIncludes, - self.UCRTIncludes, - self.NetFxSDKIncludes], - exists), - lib=self._build_paths('lib', - [self.VCLibraries, - self.OSLibraries, - self.FxTools, - self.UCRTLibraries, - self.NetFxSDKLibraries], - exists), - libpath=self._build_paths('libpath', - [self.VCLibraries, - self.FxTools, - self.VCStoreRefs, - self.OSLibpath], - exists), - path=self._build_paths('path', - [self.VCTools, - self.VSTools, - self.VsTDb, - self.SdkTools, - self.SdkSetup, - self.FxTools, - self.MSBuild, - self.HTMLHelpWorkshop, - self.FSharp], - exists), - ) - if self.vc_ver >= 14 and os.path.isfile(self.VCRuntimeRedist): - env['py_vcruntime_redist'] = self.VCRuntimeRedist - return env - - def _build_paths(self, name, spec_path_lists, exists): - """ - Given an environment variable name and specified paths, - return a pathsep-separated string of paths containing - unique, extant, directories from those paths and from - the environment variable. Raise an error if no paths - are resolved. - """ - # flatten spec_path_lists - spec_paths = itertools.chain.from_iterable(spec_path_lists) - env_paths = safe_env.get(name, '').split(os.pathsep) - paths = itertools.chain(spec_paths, env_paths) - extant_paths = list(filter(os.path.isdir, paths)) if exists else paths - if not extant_paths: - msg = "%s environment variable is empty" % name.upper() - raise distutils.errors.DistutilsPlatformError(msg) - unique_paths = self._unique_everseen(extant_paths) - return os.pathsep.join(unique_paths) - - # from Python docs - def _unique_everseen(self, iterable, key=None): - """ - List unique elements, preserving order. - Remember all elements ever seen. - - _unique_everseen('AAAABBBCCDAABBB') --> A B C D - - _unique_everseen('ABBCcAD', str.lower) --> A B C D - """ - seen = set() - seen_add = seen.add - if key is None: - for element in filterfalse(seen.__contains__, iterable): - seen_add(element) - yield element - else: - for element in iterable: - k = key(element) - if k not in seen: - seen_add(k) - yield element - - def _get_content_dirname(self, path): - """ - Return name of the first dir in path or '' if no dir found. - - Parameters - ---------- - path: str - Path where search dir. - - Return - ------ - foldername: str - "name\" or "" - """ - try: - name = os.listdir(path) - if name: - return '%s\\' % name[0] - return '' - except (OSError, IOError): - return '' diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/namespaces.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/namespaces.py deleted file mode 100644 index cc934b7e..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/namespaces.py +++ /dev/null @@ -1,93 +0,0 @@ -import os -from distutils import log -import itertools - -from setuptools.extern.six.moves import map - - -flatten = itertools.chain.from_iterable - - -class Installer: - - nspkg_ext = '-nspkg.pth' - - def install_namespaces(self): - nsp = self._get_all_ns_packages() - if not nsp: - return - filename, ext = os.path.splitext(self._get_target()) - filename += self.nspkg_ext - self.outputs.append(filename) - log.info("Installing %s", filename) - lines = map(self._gen_nspkg_line, nsp) - - if self.dry_run: - # always generate the lines, even in dry run - list(lines) - return - - with open(filename, 'wt') as f: - f.writelines(lines) - - def _get_target(self): - return self.target - - _nspkg_tmpl = ( - "import sys, types, os", - "pep420 = sys.version_info > (3, 3)", - "p = os.path.join(%(root)s, *%(pth)r)", - "ie = os.path.exists(os.path.join(p,'__init__.py'))", - "m = not ie and not pep420 and " - "sys.modules.setdefault(%(pkg)r, types.ModuleType(%(pkg)r))", - "mp = (m or []) and m.__dict__.setdefault('__path__',[])", - "(p not in mp) and mp.append(p)", - ) - "lines for the namespace installer" - - _nspkg_tmpl_multi = ( - 'm and setattr(sys.modules[%(parent)r], %(child)r, m)', - ) - "additional line(s) when a parent package is indicated" - - def _get_root(self): - return "sys._getframe(1).f_locals['sitedir']" - - def _gen_nspkg_line(self, pkg): - # ensure pkg is not a unicode string under Python 2.7 - pkg = str(pkg) - pth = tuple(pkg.split('.')) - root = self._get_root() - tmpl_lines = self._nspkg_tmpl - parent, sep, child = pkg.rpartition('.') - if parent: - tmpl_lines += self._nspkg_tmpl_multi - return ';'.join(tmpl_lines) % locals() + '\n' - - def _get_all_ns_packages(self): - """Return sorted list of all package namespaces""" - pkgs = self.distribution.namespace_packages or [] - return sorted(flatten(map(self._pkg_names, pkgs))) - - @staticmethod - def _pkg_names(pkg): - """ - Given a namespace package, yield the components of that - package. - - >>> names = Installer._pkg_names('a.b.c') - >>> set(names) == set(['a', 'a.b', 'a.b.c']) - True - """ - parts = pkg.split('.') - while parts: - yield '.'.join(parts) - parts.pop() - - -class DevelopInstaller(Installer): - def _get_root(self): - return repr(str(self.egg_path)) - - def _get_target(self): - return self.egg_link diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/package_index.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/package_index.py deleted file mode 100644 index 024fab98..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/package_index.py +++ /dev/null @@ -1,1115 +0,0 @@ -"""PyPI and direct package downloading""" -import sys -import os -import re -import shutil -import socket -import base64 -import hashlib -import itertools -from functools import wraps - -try: - from urllib.parse import splituser -except ImportError: - from urllib2 import splituser - -from setuptools.extern import six -from setuptools.extern.six.moves import urllib, http_client, configparser, map - -import setuptools -from pkg_resources import ( - CHECKOUT_DIST, Distribution, BINARY_DIST, normalize_path, SOURCE_DIST, - require, Environment, find_distributions, safe_name, safe_version, - to_filename, Requirement, DEVELOP_DIST, -) -from setuptools import ssl_support -from distutils import log -from distutils.errors import DistutilsError -from fnmatch import translate -from setuptools.py26compat import strip_fragment -from setuptools.py27compat import get_all_headers - -EGG_FRAGMENT = re.compile(r'^egg=([-A-Za-z0-9_.]+)$') -HREF = re.compile("""href\\s*=\\s*['"]?([^'"> ]+)""", re.I) -# this is here to fix emacs' cruddy broken syntax highlighting -PYPI_MD5 = re.compile( - '<a href="([^"#]+)">([^<]+)</a>\n\s+\\(<a (?:title="MD5 hash"\n\s+)' - 'href="[^?]+\?:action=show_md5&digest=([0-9a-f]{32})">md5</a>\\)' -) -URL_SCHEME = re.compile('([-+.a-z0-9]{2,}):', re.I).match -EXTENSIONS = ".tar.gz .tar.bz2 .tar .zip .tgz".split() - -__all__ = [ - 'PackageIndex', 'distros_for_url', 'parse_bdist_wininst', - 'interpret_distro_name', -] - -_SOCKET_TIMEOUT = 15 - -_tmpl = "setuptools/{setuptools.__version__} Python-urllib/{py_major}" -user_agent = _tmpl.format(py_major=sys.version[:3], **globals()) - - -def parse_requirement_arg(spec): - try: - return Requirement.parse(spec) - except ValueError: - raise DistutilsError( - "Not a URL, existing file, or requirement spec: %r" % (spec,) - ) - - -def parse_bdist_wininst(name): - """Return (base,pyversion) or (None,None) for possible .exe name""" - - lower = name.lower() - base, py_ver, plat = None, None, None - - if lower.endswith('.exe'): - if lower.endswith('.win32.exe'): - base = name[:-10] - plat = 'win32' - elif lower.startswith('.win32-py', -16): - py_ver = name[-7:-4] - base = name[:-16] - plat = 'win32' - elif lower.endswith('.win-amd64.exe'): - base = name[:-14] - plat = 'win-amd64' - elif lower.startswith('.win-amd64-py', -20): - py_ver = name[-7:-4] - base = name[:-20] - plat = 'win-amd64' - return base, py_ver, plat - - -def egg_info_for_url(url): - parts = urllib.parse.urlparse(url) - scheme, server, path, parameters, query, fragment = parts - base = urllib.parse.unquote(path.split('/')[-1]) - if server == 'sourceforge.net' and base == 'download': # XXX Yuck - base = urllib.parse.unquote(path.split('/')[-2]) - if '#' in base: - base, fragment = base.split('#', 1) - return base, fragment - - -def distros_for_url(url, metadata=None): - """Yield egg or source distribution objects that might be found at a URL""" - base, fragment = egg_info_for_url(url) - for dist in distros_for_location(url, base, metadata): - yield dist - if fragment: - match = EGG_FRAGMENT.match(fragment) - if match: - for dist in interpret_distro_name( - url, match.group(1), metadata, precedence=CHECKOUT_DIST - ): - yield dist - - -def distros_for_location(location, basename, metadata=None): - """Yield egg or source distribution objects based on basename""" - if basename.endswith('.egg.zip'): - basename = basename[:-4] # strip the .zip - if basename.endswith('.egg') and '-' in basename: - # only one, unambiguous interpretation - return [Distribution.from_location(location, basename, metadata)] - if basename.endswith('.exe'): - win_base, py_ver, platform = parse_bdist_wininst(basename) - if win_base is not None: - return interpret_distro_name( - location, win_base, metadata, py_ver, BINARY_DIST, platform - ) - # Try source distro extensions (.zip, .tgz, etc.) - # - for ext in EXTENSIONS: - if basename.endswith(ext): - basename = basename[:-len(ext)] - return interpret_distro_name(location, basename, metadata) - return [] # no extension matched - - -def distros_for_filename(filename, metadata=None): - """Yield possible egg or source distribution objects based on a filename""" - return distros_for_location( - normalize_path(filename), os.path.basename(filename), metadata - ) - - -def interpret_distro_name( - location, basename, metadata, py_version=None, precedence=SOURCE_DIST, - platform=None - ): - """Generate alternative interpretations of a source distro name - - Note: if `location` is a filesystem filename, you should call - ``pkg_resources.normalize_path()`` on it before passing it to this - routine! - """ - # Generate alternative interpretations of a source distro name - # Because some packages are ambiguous as to name/versions split - # e.g. "adns-python-1.1.0", "egenix-mx-commercial", etc. - # So, we generate each possible interepretation (e.g. "adns, python-1.1.0" - # "adns-python, 1.1.0", and "adns-python-1.1.0, no version"). In practice, - # the spurious interpretations should be ignored, because in the event - # there's also an "adns" package, the spurious "python-1.1.0" version will - # compare lower than any numeric version number, and is therefore unlikely - # to match a request for it. It's still a potential problem, though, and - # in the long run PyPI and the distutils should go for "safe" names and - # versions in distribution archive names (sdist and bdist). - - parts = basename.split('-') - if not py_version and any(re.match('py\d\.\d$', p) for p in parts[2:]): - # it is a bdist_dumb, not an sdist -- bail out - return - - for p in range(1, len(parts) + 1): - yield Distribution( - location, metadata, '-'.join(parts[:p]), '-'.join(parts[p:]), - py_version=py_version, precedence=precedence, - platform=platform - ) - - -# From Python 2.7 docs -def unique_everseen(iterable, key=None): - "List unique elements, preserving order. Remember all elements ever seen." - # unique_everseen('AAAABBBCCDAABBB') --> A B C D - # unique_everseen('ABBCcAD', str.lower) --> A B C D - seen = set() - seen_add = seen.add - if key is None: - for element in six.moves.filterfalse(seen.__contains__, iterable): - seen_add(element) - yield element - else: - for element in iterable: - k = key(element) - if k not in seen: - seen_add(k) - yield element - - -def unique_values(func): - """ - Wrap a function returning an iterable such that the resulting iterable - only ever yields unique items. - """ - - @wraps(func) - def wrapper(*args, **kwargs): - return unique_everseen(func(*args, **kwargs)) - - return wrapper - - -REL = re.compile("""<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>""", re.I) -# this line is here to fix emacs' cruddy broken syntax highlighting - - -@unique_values -def find_external_links(url, page): - """Find rel="homepage" and rel="download" links in `page`, yielding URLs""" - - for match in REL.finditer(page): - tag, rel = match.groups() - rels = set(map(str.strip, rel.lower().split(','))) - if 'homepage' in rels or 'download' in rels: - for match in HREF.finditer(tag): - yield urllib.parse.urljoin(url, htmldecode(match.group(1))) - - for tag in ("<th>Home Page", "<th>Download URL"): - pos = page.find(tag) - if pos != -1: - match = HREF.search(page, pos) - if match: - yield urllib.parse.urljoin(url, htmldecode(match.group(1))) - - -class ContentChecker(object): - """ - A null content checker that defines the interface for checking content - """ - - def feed(self, block): - """ - Feed a block of data to the hash. - """ - return - - def is_valid(self): - """ - Check the hash. Return False if validation fails. - """ - return True - - def report(self, reporter, template): - """ - Call reporter with information about the checker (hash name) - substituted into the template. - """ - return - - -class HashChecker(ContentChecker): - pattern = re.compile( - r'(?P<hash_name>sha1|sha224|sha384|sha256|sha512|md5)=' - r'(?P<expected>[a-f0-9]+)' - ) - - def __init__(self, hash_name, expected): - self.hash_name = hash_name - self.hash = hashlib.new(hash_name) - self.expected = expected - - @classmethod - def from_url(cls, url): - "Construct a (possibly null) ContentChecker from a URL" - fragment = urllib.parse.urlparse(url)[-1] - if not fragment: - return ContentChecker() - match = cls.pattern.search(fragment) - if not match: - return ContentChecker() - return cls(**match.groupdict()) - - def feed(self, block): - self.hash.update(block) - - def is_valid(self): - return self.hash.hexdigest() == self.expected - - def report(self, reporter, template): - msg = template % self.hash_name - return reporter(msg) - - -class PackageIndex(Environment): - """A distribution index that scans web pages for download URLs""" - - def __init__( - self, index_url="https://pypi.python.org/simple", hosts=('*',), - ca_bundle=None, verify_ssl=True, *args, **kw - ): - Environment.__init__(self, *args, **kw) - self.index_url = index_url + "/" [:not index_url.endswith('/')] - self.scanned_urls = {} - self.fetched_urls = {} - self.package_pages = {} - self.allows = re.compile('|'.join(map(translate, hosts))).match - self.to_scan = [] - use_ssl = ( - verify_ssl - and ssl_support.is_available - and (ca_bundle or ssl_support.find_ca_bundle()) - ) - if use_ssl: - self.opener = ssl_support.opener_for(ca_bundle) - else: - self.opener = urllib.request.urlopen - - def process_url(self, url, retrieve=False): - """Evaluate a URL as a possible download, and maybe retrieve it""" - if url in self.scanned_urls and not retrieve: - return - self.scanned_urls[url] = True - if not URL_SCHEME(url): - self.process_filename(url) - return - else: - dists = list(distros_for_url(url)) - if dists: - if not self.url_ok(url): - return - self.debug("Found link: %s", url) - - if dists or not retrieve or url in self.fetched_urls: - list(map(self.add, dists)) - return # don't need the actual page - - if not self.url_ok(url): - self.fetched_urls[url] = True - return - - self.info("Reading %s", url) - self.fetched_urls[url] = True # prevent multiple fetch attempts - tmpl = "Download error on %s: %%s -- Some packages may not be found!" - f = self.open_url(url, tmpl % url) - if f is None: - return - self.fetched_urls[f.url] = True - if 'html' not in f.headers.get('content-type', '').lower(): - f.close() # not html, we can't process it - return - - base = f.url # handle redirects - page = f.read() - if not isinstance(page, str): # We are in Python 3 and got bytes. We want str. - if isinstance(f, urllib.error.HTTPError): - # Errors have no charset, assume latin1: - charset = 'latin-1' - else: - charset = f.headers.get_param('charset') or 'latin-1' - page = page.decode(charset, "ignore") - f.close() - for match in HREF.finditer(page): - link = urllib.parse.urljoin(base, htmldecode(match.group(1))) - self.process_url(link) - if url.startswith(self.index_url) and getattr(f, 'code', None) != 404: - page = self.process_index(url, page) - - def process_filename(self, fn, nested=False): - # process filenames or directories - if not os.path.exists(fn): - self.warn("Not found: %s", fn) - return - - if os.path.isdir(fn) and not nested: - path = os.path.realpath(fn) - for item in os.listdir(path): - self.process_filename(os.path.join(path, item), True) - - dists = distros_for_filename(fn) - if dists: - self.debug("Found: %s", fn) - list(map(self.add, dists)) - - def url_ok(self, url, fatal=False): - s = URL_SCHEME(url) - is_file = s and s.group(1).lower() == 'file' - if is_file or self.allows(urllib.parse.urlparse(url)[1]): - return True - msg = ("\nNote: Bypassing %s (disallowed host; see " - "http://bit.ly/1dg9ijs for details).\n") - if fatal: - raise DistutilsError(msg % url) - else: - self.warn(msg, url) - - def scan_egg_links(self, search_path): - dirs = filter(os.path.isdir, search_path) - egg_links = ( - (path, entry) - for path in dirs - for entry in os.listdir(path) - if entry.endswith('.egg-link') - ) - list(itertools.starmap(self.scan_egg_link, egg_links)) - - def scan_egg_link(self, path, entry): - with open(os.path.join(path, entry)) as raw_lines: - # filter non-empty lines - lines = list(filter(None, map(str.strip, raw_lines))) - - if len(lines) != 2: - # format is not recognized; punt - return - - egg_path, setup_path = lines - - for dist in find_distributions(os.path.join(path, egg_path)): - dist.location = os.path.join(path, *lines) - dist.precedence = SOURCE_DIST - self.add(dist) - - def process_index(self, url, page): - """Process the contents of a PyPI page""" - - def scan(link): - # Process a URL to see if it's for a package page - if link.startswith(self.index_url): - parts = list(map( - urllib.parse.unquote, link[len(self.index_url):].split('/') - )) - if len(parts) == 2 and '#' not in parts[1]: - # it's a package page, sanitize and index it - pkg = safe_name(parts[0]) - ver = safe_version(parts[1]) - self.package_pages.setdefault(pkg.lower(), {})[link] = True - return to_filename(pkg), to_filename(ver) - return None, None - - # process an index page into the package-page index - for match in HREF.finditer(page): - try: - scan(urllib.parse.urljoin(url, htmldecode(match.group(1)))) - except ValueError: - pass - - pkg, ver = scan(url) # ensure this page is in the page index - if pkg: - # process individual package page - for new_url in find_external_links(url, page): - # Process the found URL - base, frag = egg_info_for_url(new_url) - if base.endswith('.py') and not frag: - if ver: - new_url += '#egg=%s-%s' % (pkg, ver) - else: - self.need_version_info(url) - self.scan_url(new_url) - - return PYPI_MD5.sub( - lambda m: '<a href="%s#md5=%s">%s</a>' % m.group(1, 3, 2), page - ) - else: - return "" # no sense double-scanning non-package pages - - def need_version_info(self, url): - self.scan_all( - "Page at %s links to .py file(s) without version info; an index " - "scan is required.", url - ) - - def scan_all(self, msg=None, *args): - if self.index_url not in self.fetched_urls: - if msg: - self.warn(msg, *args) - self.info( - "Scanning index of all packages (this may take a while)" - ) - self.scan_url(self.index_url) - - def find_packages(self, requirement): - self.scan_url(self.index_url + requirement.unsafe_name + '/') - - if not self.package_pages.get(requirement.key): - # Fall back to safe version of the name - self.scan_url(self.index_url + requirement.project_name + '/') - - if not self.package_pages.get(requirement.key): - # We couldn't find the target package, so search the index page too - self.not_found_in_index(requirement) - - for url in list(self.package_pages.get(requirement.key, ())): - # scan each page that might be related to the desired package - self.scan_url(url) - - def obtain(self, requirement, installer=None): - self.prescan() - self.find_packages(requirement) - for dist in self[requirement.key]: - if dist in requirement: - return dist - self.debug("%s does not match %s", requirement, dist) - return super(PackageIndex, self).obtain(requirement, installer) - - def check_hash(self, checker, filename, tfp): - """ - checker is a ContentChecker - """ - checker.report(self.debug, - "Validating %%s checksum for %s" % filename) - if not checker.is_valid(): - tfp.close() - os.unlink(filename) - raise DistutilsError( - "%s validation failed for %s; " - "possible download problem?" % ( - checker.hash.name, os.path.basename(filename)) - ) - - def add_find_links(self, urls): - """Add `urls` to the list that will be prescanned for searches""" - for url in urls: - if ( - self.to_scan is None # if we have already "gone online" - or not URL_SCHEME(url) # or it's a local file/directory - or url.startswith('file:') - or list(distros_for_url(url)) # or a direct package link - ): - # then go ahead and process it now - self.scan_url(url) - else: - # otherwise, defer retrieval till later - self.to_scan.append(url) - - def prescan(self): - """Scan urls scheduled for prescanning (e.g. --find-links)""" - if self.to_scan: - list(map(self.scan_url, self.to_scan)) - self.to_scan = None # from now on, go ahead and process immediately - - def not_found_in_index(self, requirement): - if self[requirement.key]: # we've seen at least one distro - meth, msg = self.info, "Couldn't retrieve index page for %r" - else: # no distros seen for this name, might be misspelled - meth, msg = (self.warn, - "Couldn't find index page for %r (maybe misspelled?)") - meth(msg, requirement.unsafe_name) - self.scan_all() - - def download(self, spec, tmpdir): - """Locate and/or download `spec` to `tmpdir`, returning a local path - - `spec` may be a ``Requirement`` object, or a string containing a URL, - an existing local filename, or a project/version requirement spec - (i.e. the string form of a ``Requirement`` object). If it is the URL - of a .py file with an unambiguous ``#egg=name-version`` tag (i.e., one - that escapes ``-`` as ``_`` throughout), a trivial ``setup.py`` is - automatically created alongside the downloaded file. - - If `spec` is a ``Requirement`` object or a string containing a - project/version requirement spec, this method returns the location of - a matching distribution (possibly after downloading it to `tmpdir`). - If `spec` is a locally existing file or directory name, it is simply - returned unchanged. If `spec` is a URL, it is downloaded to a subpath - of `tmpdir`, and the local filename is returned. Various errors may be - raised if a problem occurs during downloading. - """ - if not isinstance(spec, Requirement): - scheme = URL_SCHEME(spec) - if scheme: - # It's a url, download it to tmpdir - found = self._download_url(scheme.group(1), spec, tmpdir) - base, fragment = egg_info_for_url(spec) - if base.endswith('.py'): - found = self.gen_setup(found, fragment, tmpdir) - return found - elif os.path.exists(spec): - # Existing file or directory, just return it - return spec - else: - spec = parse_requirement_arg(spec) - return getattr(self.fetch_distribution(spec, tmpdir), 'location', None) - - def fetch_distribution( - self, requirement, tmpdir, force_scan=False, source=False, - develop_ok=False, local_index=None - ): - """Obtain a distribution suitable for fulfilling `requirement` - - `requirement` must be a ``pkg_resources.Requirement`` instance. - If necessary, or if the `force_scan` flag is set, the requirement is - searched for in the (online) package index as well as the locally - installed packages. If a distribution matching `requirement` is found, - the returned distribution's ``location`` is the value you would have - gotten from calling the ``download()`` method with the matching - distribution's URL or filename. If no matching distribution is found, - ``None`` is returned. - - If the `source` flag is set, only source distributions and source - checkout links will be considered. Unless the `develop_ok` flag is - set, development and system eggs (i.e., those using the ``.egg-info`` - format) will be ignored. - """ - # process a Requirement - self.info("Searching for %s", requirement) - skipped = {} - dist = None - - def find(req, env=None): - if env is None: - env = self - # Find a matching distribution; may be called more than once - - for dist in env[req.key]: - - if dist.precedence == DEVELOP_DIST and not develop_ok: - if dist not in skipped: - self.warn("Skipping development or system egg: %s", dist) - skipped[dist] = 1 - continue - - if dist in req and (dist.precedence <= SOURCE_DIST or not source): - dist.download_location = self.download(dist.location, tmpdir) - if os.path.exists(dist.download_location): - return dist - - if force_scan: - self.prescan() - self.find_packages(requirement) - dist = find(requirement) - - if not dist and local_index is not None: - dist = find(requirement, local_index) - - if dist is None: - if self.to_scan is not None: - self.prescan() - dist = find(requirement) - - if dist is None and not force_scan: - self.find_packages(requirement) - dist = find(requirement) - - if dist is None: - self.warn( - "No local packages or working download links found for %s%s", - (source and "a source distribution of " or ""), - requirement, - ) - else: - self.info("Best match: %s", dist) - return dist.clone(location=dist.download_location) - - def fetch(self, requirement, tmpdir, force_scan=False, source=False): - """Obtain a file suitable for fulfilling `requirement` - - DEPRECATED; use the ``fetch_distribution()`` method now instead. For - backward compatibility, this routine is identical but returns the - ``location`` of the downloaded distribution instead of a distribution - object. - """ - dist = self.fetch_distribution(requirement, tmpdir, force_scan, source) - if dist is not None: - return dist.location - return None - - def gen_setup(self, filename, fragment, tmpdir): - match = EGG_FRAGMENT.match(fragment) - dists = match and [ - d for d in - interpret_distro_name(filename, match.group(1), None) if d.version - ] or [] - - if len(dists) == 1: # unambiguous ``#egg`` fragment - basename = os.path.basename(filename) - - # Make sure the file has been downloaded to the temp dir. - if os.path.dirname(filename) != tmpdir: - dst = os.path.join(tmpdir, basename) - from setuptools.command.easy_install import samefile - if not samefile(filename, dst): - shutil.copy2(filename, dst) - filename = dst - - with open(os.path.join(tmpdir, 'setup.py'), 'w') as file: - file.write( - "from setuptools import setup\n" - "setup(name=%r, version=%r, py_modules=[%r])\n" - % ( - dists[0].project_name, dists[0].version, - os.path.splitext(basename)[0] - ) - ) - return filename - - elif match: - raise DistutilsError( - "Can't unambiguously interpret project/version identifier %r; " - "any dashes in the name or version should be escaped using " - "underscores. %r" % (fragment, dists) - ) - else: - raise DistutilsError( - "Can't process plain .py files without an '#egg=name-version'" - " suffix to enable automatic setup script generation." - ) - - dl_blocksize = 8192 - - def _download_to(self, url, filename): - self.info("Downloading %s", url) - # Download the file - fp, info = None, None - try: - checker = HashChecker.from_url(url) - fp = self.open_url(strip_fragment(url)) - if isinstance(fp, urllib.error.HTTPError): - raise DistutilsError( - "Can't download %s: %s %s" % (url, fp.code, fp.msg) - ) - headers = fp.info() - blocknum = 0 - bs = self.dl_blocksize - size = -1 - if "content-length" in headers: - # Some servers return multiple Content-Length headers :( - sizes = get_all_headers(headers, 'Content-Length') - size = max(map(int, sizes)) - self.reporthook(url, filename, blocknum, bs, size) - with open(filename, 'wb') as tfp: - while True: - block = fp.read(bs) - if block: - checker.feed(block) - tfp.write(block) - blocknum += 1 - self.reporthook(url, filename, blocknum, bs, size) - else: - break - self.check_hash(checker, filename, tfp) - return headers - finally: - if fp: - fp.close() - - def reporthook(self, url, filename, blocknum, blksize, size): - pass # no-op - - def open_url(self, url, warning=None): - if url.startswith('file:'): - return local_open(url) - try: - return open_with_auth(url, self.opener) - except (ValueError, http_client.InvalidURL) as v: - msg = ' '.join([str(arg) for arg in v.args]) - if warning: - self.warn(warning, msg) - else: - raise DistutilsError('%s %s' % (url, msg)) - except urllib.error.HTTPError as v: - return v - except urllib.error.URLError as v: - if warning: - self.warn(warning, v.reason) - else: - raise DistutilsError("Download error for %s: %s" - % (url, v.reason)) - except http_client.BadStatusLine as v: - if warning: - self.warn(warning, v.line) - else: - raise DistutilsError( - '%s returned a bad status line. The server might be ' - 'down, %s' % - (url, v.line) - ) - except http_client.HTTPException as v: - if warning: - self.warn(warning, v) - else: - raise DistutilsError("Download error for %s: %s" - % (url, v)) - - def _download_url(self, scheme, url, tmpdir): - # Determine download filename - # - name, fragment = egg_info_for_url(url) - if name: - while '..' in name: - name = name.replace('..', '.').replace('\\', '_') - else: - name = "__downloaded__" # default if URL has no path contents - - if name.endswith('.egg.zip'): - name = name[:-4] # strip the extra .zip before download - - filename = os.path.join(tmpdir, name) - - # Download the file - # - if scheme == 'svn' or scheme.startswith('svn+'): - return self._download_svn(url, filename) - elif scheme == 'git' or scheme.startswith('git+'): - return self._download_git(url, filename) - elif scheme.startswith('hg+'): - return self._download_hg(url, filename) - elif scheme == 'file': - return urllib.request.url2pathname(urllib.parse.urlparse(url)[2]) - else: - self.url_ok(url, True) # raises error if not allowed - return self._attempt_download(url, filename) - - def scan_url(self, url): - self.process_url(url, True) - - def _attempt_download(self, url, filename): - headers = self._download_to(url, filename) - if 'html' in headers.get('content-type', '').lower(): - return self._download_html(url, headers, filename) - else: - return filename - - def _download_html(self, url, headers, filename): - file = open(filename) - for line in file: - if line.strip(): - # Check for a subversion index page - if re.search(r'<title>([^- ]+ - )?Revision \d+:', line): - # it's a subversion index page: - file.close() - os.unlink(filename) - return self._download_svn(url, filename) - break # not an index page - file.close() - os.unlink(filename) - raise DistutilsError("Unexpected HTML page found at " + url) - - def _download_svn(self, url, filename): - url = url.split('#', 1)[0] # remove any fragment for svn's sake - creds = '' - if url.lower().startswith('svn:') and '@' in url: - scheme, netloc, path, p, q, f = urllib.parse.urlparse(url) - if not netloc and path.startswith('//') and '/' in path[2:]: - netloc, path = path[2:].split('/', 1) - auth, host = splituser(netloc) - if auth: - if ':' in auth: - user, pw = auth.split(':', 1) - creds = " --username=%s --password=%s" % (user, pw) - else: - creds = " --username=" + auth - netloc = host - parts = scheme, netloc, url, p, q, f - url = urllib.parse.urlunparse(parts) - self.info("Doing subversion checkout from %s to %s", url, filename) - os.system("svn checkout%s -q %s %s" % (creds, url, filename)) - return filename - - @staticmethod - def _vcs_split_rev_from_url(url, pop_prefix=False): - scheme, netloc, path, query, frag = urllib.parse.urlsplit(url) - - scheme = scheme.split('+', 1)[-1] - - # Some fragment identification fails - path = path.split('#', 1)[0] - - rev = None - if '@' in path: - path, rev = path.rsplit('@', 1) - - # Also, discard fragment - url = urllib.parse.urlunsplit((scheme, netloc, path, query, '')) - - return url, rev - - def _download_git(self, url, filename): - filename = filename.split('#', 1)[0] - url, rev = self._vcs_split_rev_from_url(url, pop_prefix=True) - - self.info("Doing git clone from %s to %s", url, filename) - os.system("git clone --quiet %s %s" % (url, filename)) - - if rev is not None: - self.info("Checking out %s", rev) - os.system("(cd %s && git checkout --quiet %s)" % ( - filename, - rev, - )) - - return filename - - def _download_hg(self, url, filename): - filename = filename.split('#', 1)[0] - url, rev = self._vcs_split_rev_from_url(url, pop_prefix=True) - - self.info("Doing hg clone from %s to %s", url, filename) - os.system("hg clone --quiet %s %s" % (url, filename)) - - if rev is not None: - self.info("Updating to %s", rev) - os.system("(cd %s && hg up -C -r %s >&-)" % ( - filename, - rev, - )) - - return filename - - def debug(self, msg, *args): - log.debug(msg, *args) - - def info(self, msg, *args): - log.info(msg, *args) - - def warn(self, msg, *args): - log.warn(msg, *args) - - -# This pattern matches a character entity reference (a decimal numeric -# references, a hexadecimal numeric reference, or a named reference). -entity_sub = re.compile(r'&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?').sub - - -def uchr(c): - if not isinstance(c, int): - return c - if c > 255: - return six.unichr(c) - return chr(c) - - -def decode_entity(match): - what = match.group(1) - if what.startswith('#x'): - what = int(what[2:], 16) - elif what.startswith('#'): - what = int(what[1:]) - else: - what = six.moves.html_entities.name2codepoint.get(what, match.group(0)) - return uchr(what) - - -def htmldecode(text): - """Decode HTML entities in the given text.""" - return entity_sub(decode_entity, text) - - -def socket_timeout(timeout=15): - def _socket_timeout(func): - def _socket_timeout(*args, **kwargs): - old_timeout = socket.getdefaulttimeout() - socket.setdefaulttimeout(timeout) - try: - return func(*args, **kwargs) - finally: - socket.setdefaulttimeout(old_timeout) - - return _socket_timeout - - return _socket_timeout - - -def _encode_auth(auth): - """ - A function compatible with Python 2.3-3.3 that will encode - auth from a URL suitable for an HTTP header. - >>> str(_encode_auth('username%3Apassword')) - 'dXNlcm5hbWU6cGFzc3dvcmQ=' - - Long auth strings should not cause a newline to be inserted. - >>> long_auth = 'username:' + 'password'*10 - >>> chr(10) in str(_encode_auth(long_auth)) - False - """ - auth_s = urllib.parse.unquote(auth) - # convert to bytes - auth_bytes = auth_s.encode() - # use the legacy interface for Python 2.3 support - encoded_bytes = base64.encodestring(auth_bytes) - # convert back to a string - encoded = encoded_bytes.decode() - # strip the trailing carriage return - return encoded.replace('\n', '') - - -class Credential(object): - """ - A username/password pair. Use like a namedtuple. - """ - - def __init__(self, username, password): - self.username = username - self.password = password - - def __iter__(self): - yield self.username - yield self.password - - def __str__(self): - return '%(username)s:%(password)s' % vars(self) - - -class PyPIConfig(configparser.RawConfigParser): - def __init__(self): - """ - Load from ~/.pypirc - """ - defaults = dict.fromkeys(['username', 'password', 'repository'], '') - configparser.RawConfigParser.__init__(self, defaults) - - rc = os.path.join(os.path.expanduser('~'), '.pypirc') - if os.path.exists(rc): - self.read(rc) - - @property - def creds_by_repository(self): - sections_with_repositories = [ - section for section in self.sections() - if self.get(section, 'repository').strip() - ] - - return dict(map(self._get_repo_cred, sections_with_repositories)) - - def _get_repo_cred(self, section): - repo = self.get(section, 'repository').strip() - return repo, Credential( - self.get(section, 'username').strip(), - self.get(section, 'password').strip(), - ) - - def find_credential(self, url): - """ - If the URL indicated appears to be a repository defined in this - config, return the credential for that repository. - """ - for repository, cred in self.creds_by_repository.items(): - if url.startswith(repository): - return cred - - -def open_with_auth(url, opener=urllib.request.urlopen): - """Open a urllib2 request, handling HTTP authentication""" - - scheme, netloc, path, params, query, frag = urllib.parse.urlparse(url) - - # Double scheme does not raise on Mac OS X as revealed by a - # failing test. We would expect "nonnumeric port". Refs #20. - if netloc.endswith(':'): - raise http_client.InvalidURL("nonnumeric port: ''") - - if scheme in ('http', 'https'): - auth, host = splituser(netloc) - else: - auth = None - - if not auth: - cred = PyPIConfig().find_credential(url) - if cred: - auth = str(cred) - info = cred.username, url - log.info('Authenticating as %s for %s (from .pypirc)', *info) - - if auth: - auth = "Basic " + _encode_auth(auth) - parts = scheme, host, path, params, query, frag - new_url = urllib.parse.urlunparse(parts) - request = urllib.request.Request(new_url) - request.add_header("Authorization", auth) - else: - request = urllib.request.Request(url) - - request.add_header('User-Agent', user_agent) - fp = opener(request) - - if auth: - # Put authentication info back into request URL if same host, - # so that links found on the page will work - s2, h2, path2, param2, query2, frag2 = urllib.parse.urlparse(fp.url) - if s2 == scheme and h2 == host: - parts = s2, netloc, path2, param2, query2, frag2 - fp.url = urllib.parse.urlunparse(parts) - - return fp - - -# adding a timeout to avoid freezing package_index -open_with_auth = socket_timeout(_SOCKET_TIMEOUT)(open_with_auth) - - -def fix_sf_url(url): - return url # backward compatibility - - -def local_open(url): - """Read a local path, with special support for directories""" - scheme, server, path, param, query, frag = urllib.parse.urlparse(url) - filename = urllib.request.url2pathname(path) - if os.path.isfile(filename): - return urllib.request.urlopen(url) - elif path.endswith('/') and os.path.isdir(filename): - files = [] - for f in os.listdir(filename): - filepath = os.path.join(filename, f) - if f == 'index.html': - with open(filepath, 'r') as fp: - body = fp.read() - break - elif os.path.isdir(filepath): - f += '/' - files.append('<a href="{name}">{name}</a>'.format(name=f)) - else: - tmpl = ("<html><head><title>{url}" - "{files}") - body = tmpl.format(url=url, files='\n'.join(files)) - status, message = 200, "OK" - else: - status, message, body = 404, "Path not found", "Not found" - - headers = {'content-type': 'text/html'} - body_stream = six.StringIO(body) - return urllib.error.HTTPError(url, status, message, headers, body_stream) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/py26compat.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/py26compat.py deleted file mode 100644 index 4d3add8c..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/py26compat.py +++ /dev/null @@ -1,31 +0,0 @@ -""" -Compatibility Support for Python 2.6 and earlier -""" - -import sys - -try: - from urllib.parse import splittag -except ImportError: - from urllib import splittag - - -def strip_fragment(url): - """ - In `Python 8280 `_, Python 2.7 and - later was patched to disregard the fragment when making URL requests. - Do the same for Python 2.6 and earlier. - """ - url, fragment = splittag(url) - return url - - -if sys.version_info >= (2, 7): - strip_fragment = lambda x: x - -try: - from importlib import import_module -except ImportError: - - def import_module(module_name): - return __import__(module_name, fromlist=['__name__']) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/py27compat.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/py27compat.py deleted file mode 100644 index 4e3e4ab3..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/py27compat.py +++ /dev/null @@ -1,18 +0,0 @@ -""" -Compatibility Support for Python 2.7 and earlier -""" - -import sys - - -def get_all_headers(message, key): - """ - Given an HTTPMessage, return all headers matching a given key. - """ - return message.get_all(key) - - -if sys.version_info < (3,): - - def get_all_headers(message, key): - return message.getheaders(key) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/py31compat.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/py31compat.py deleted file mode 100644 index 44b025d4..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/py31compat.py +++ /dev/null @@ -1,56 +0,0 @@ -import sys -import unittest - -__all__ = ['get_config_vars', 'get_path'] - -try: - # Python 2.7 or >=3.2 - from sysconfig import get_config_vars, get_path -except ImportError: - from distutils.sysconfig import get_config_vars, get_python_lib - - def get_path(name): - if name not in ('platlib', 'purelib'): - raise ValueError("Name must be purelib or platlib") - return get_python_lib(name == 'platlib') - - -try: - # Python >=3.2 - from tempfile import TemporaryDirectory -except ImportError: - import shutil - import tempfile - - class TemporaryDirectory(object): - """ - Very simple temporary directory context manager. - Will try to delete afterward, but will also ignore OS and similar - errors on deletion. - """ - - def __init__(self): - self.name = None # Handle mkdtemp raising an exception - self.name = tempfile.mkdtemp() - - def __enter__(self): - return self.name - - def __exit__(self, exctype, excvalue, exctrace): - try: - shutil.rmtree(self.name, True) - except OSError: # removal errors are not the only possible - pass - self.name = None - - -unittest_main = unittest.main - -_PY31 = (3, 1) <= sys.version_info[:2] < (3, 2) -if _PY31: - # on Python 3.1, translate testRunner==None to TextTestRunner - # for compatibility with Python 2.6, 2.7, and 3.2+ - def unittest_main(*args, **kwargs): - if 'testRunner' in kwargs and kwargs['testRunner'] is None: - kwargs['testRunner'] = unittest.TextTestRunner - return unittest.main(*args, **kwargs) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/sandbox.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/sandbox.py deleted file mode 100644 index 39afd57e..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/sandbox.py +++ /dev/null @@ -1,492 +0,0 @@ -import os -import sys -import tempfile -import operator -import functools -import itertools -import re -import contextlib -import pickle - -from setuptools.extern import six -from setuptools.extern.six.moves import builtins, map - -import pkg_resources - -if sys.platform.startswith('java'): - import org.python.modules.posix.PosixModule as _os -else: - _os = sys.modules[os.name] -try: - _file = file -except NameError: - _file = None -_open = open -from distutils.errors import DistutilsError -from pkg_resources import working_set - -__all__ = [ - "AbstractSandbox", "DirectorySandbox", "SandboxViolation", "run_setup", -] - - -def _execfile(filename, globals, locals=None): - """ - Python 3 implementation of execfile. - """ - mode = 'rb' - with open(filename, mode) as stream: - script = stream.read() - # compile() function in Python 2.6 and 3.1 requires LF line endings. - if sys.version_info[:2] < (2, 7) or sys.version_info[:2] >= (3, 0) and sys.version_info[:2] < (3, 2): - script = script.replace(b'\r\n', b'\n') - script = script.replace(b'\r', b'\n') - if locals is None: - locals = globals - code = compile(script, filename, 'exec') - exec(code, globals, locals) - - -@contextlib.contextmanager -def save_argv(repl=None): - saved = sys.argv[:] - if repl is not None: - sys.argv[:] = repl - try: - yield saved - finally: - sys.argv[:] = saved - - -@contextlib.contextmanager -def save_path(): - saved = sys.path[:] - try: - yield saved - finally: - sys.path[:] = saved - - -@contextlib.contextmanager -def override_temp(replacement): - """ - Monkey-patch tempfile.tempdir with replacement, ensuring it exists - """ - if not os.path.isdir(replacement): - os.makedirs(replacement) - - saved = tempfile.tempdir - - tempfile.tempdir = replacement - - try: - yield - finally: - tempfile.tempdir = saved - - -@contextlib.contextmanager -def pushd(target): - saved = os.getcwd() - os.chdir(target) - try: - yield saved - finally: - os.chdir(saved) - - -class UnpickleableException(Exception): - """ - An exception representing another Exception that could not be pickled. - """ - - @staticmethod - def dump(type, exc): - """ - Always return a dumped (pickled) type and exc. If exc can't be pickled, - wrap it in UnpickleableException first. - """ - try: - return pickle.dumps(type), pickle.dumps(exc) - except Exception: - # get UnpickleableException inside the sandbox - from setuptools.sandbox import UnpickleableException as cls - return cls.dump(cls, cls(repr(exc))) - - -class ExceptionSaver: - """ - A Context Manager that will save an exception, serialized, and restore it - later. - """ - - def __enter__(self): - return self - - def __exit__(self, type, exc, tb): - if not exc: - return - - # dump the exception - self._saved = UnpickleableException.dump(type, exc) - self._tb = tb - - # suppress the exception - return True - - def resume(self): - "restore and re-raise any exception" - - if '_saved' not in vars(self): - return - - type, exc = map(pickle.loads, self._saved) - six.reraise(type, exc, self._tb) - - -@contextlib.contextmanager -def save_modules(): - """ - Context in which imported modules are saved. - - Translates exceptions internal to the context into the equivalent exception - outside the context. - """ - saved = sys.modules.copy() - with ExceptionSaver() as saved_exc: - yield saved - - sys.modules.update(saved) - # remove any modules imported since - del_modules = ( - mod_name for mod_name in sys.modules - if mod_name not in saved - # exclude any encodings modules. See #285 - and not mod_name.startswith('encodings.') - ) - _clear_modules(del_modules) - - saved_exc.resume() - - -def _clear_modules(module_names): - for mod_name in list(module_names): - del sys.modules[mod_name] - - -@contextlib.contextmanager -def save_pkg_resources_state(): - saved = pkg_resources.__getstate__() - try: - yield saved - finally: - pkg_resources.__setstate__(saved) - - -@contextlib.contextmanager -def setup_context(setup_dir): - temp_dir = os.path.join(setup_dir, 'temp') - with save_pkg_resources_state(): - with save_modules(): - hide_setuptools() - with save_path(): - with save_argv(): - with override_temp(temp_dir): - with pushd(setup_dir): - # ensure setuptools commands are available - __import__('setuptools') - yield - - -def _needs_hiding(mod_name): - """ - >>> _needs_hiding('setuptools') - True - >>> _needs_hiding('pkg_resources') - True - >>> _needs_hiding('setuptools_plugin') - False - >>> _needs_hiding('setuptools.__init__') - True - >>> _needs_hiding('distutils') - True - >>> _needs_hiding('os') - False - >>> _needs_hiding('Cython') - True - """ - pattern = re.compile('(setuptools|pkg_resources|distutils|Cython)(\.|$)') - return bool(pattern.match(mod_name)) - - -def hide_setuptools(): - """ - Remove references to setuptools' modules from sys.modules to allow the - invocation to import the most appropriate setuptools. This technique is - necessary to avoid issues such as #315 where setuptools upgrading itself - would fail to find a function declared in the metadata. - """ - modules = filter(_needs_hiding, sys.modules) - _clear_modules(modules) - - -def run_setup(setup_script, args): - """Run a distutils setup script, sandboxed in its directory""" - setup_dir = os.path.abspath(os.path.dirname(setup_script)) - with setup_context(setup_dir): - try: - sys.argv[:] = [setup_script] + list(args) - sys.path.insert(0, setup_dir) - # reset to include setup dir, w/clean callback list - working_set.__init__() - working_set.callbacks.append(lambda dist: dist.activate()) - - def runner(): - ns = dict(__file__=setup_script, __name__='__main__') - _execfile(setup_script, ns) - - DirectorySandbox(setup_dir).run(runner) - except SystemExit as v: - if v.args and v.args[0]: - raise - # Normal exit, just return - - -class AbstractSandbox: - """Wrap 'os' module and 'open()' builtin for virtualizing setup scripts""" - - _active = False - - def __init__(self): - self._attrs = [ - name for name in dir(_os) - if not name.startswith('_') and hasattr(self, name) - ] - - def _copy(self, source): - for name in self._attrs: - setattr(os, name, getattr(source, name)) - - def run(self, func): - """Run 'func' under os sandboxing""" - try: - self._copy(self) - if _file: - builtins.file = self._file - builtins.open = self._open - self._active = True - return func() - finally: - self._active = False - if _file: - builtins.file = _file - builtins.open = _open - self._copy(_os) - - def _mk_dual_path_wrapper(name): - original = getattr(_os, name) - - def wrap(self, src, dst, *args, **kw): - if self._active: - src, dst = self._remap_pair(name, src, dst, *args, **kw) - return original(src, dst, *args, **kw) - - return wrap - - for name in ["rename", "link", "symlink"]: - if hasattr(_os, name): - locals()[name] = _mk_dual_path_wrapper(name) - - def _mk_single_path_wrapper(name, original=None): - original = original or getattr(_os, name) - - def wrap(self, path, *args, **kw): - if self._active: - path = self._remap_input(name, path, *args, **kw) - return original(path, *args, **kw) - - return wrap - - if _file: - _file = _mk_single_path_wrapper('file', _file) - _open = _mk_single_path_wrapper('open', _open) - for name in [ - "stat", "listdir", "chdir", "open", "chmod", "chown", "mkdir", - "remove", "unlink", "rmdir", "utime", "lchown", "chroot", "lstat", - "startfile", "mkfifo", "mknod", "pathconf", "access" - ]: - if hasattr(_os, name): - locals()[name] = _mk_single_path_wrapper(name) - - def _mk_single_with_return(name): - original = getattr(_os, name) - - def wrap(self, path, *args, **kw): - if self._active: - path = self._remap_input(name, path, *args, **kw) - return self._remap_output(name, original(path, *args, **kw)) - return original(path, *args, **kw) - - return wrap - - for name in ['readlink', 'tempnam']: - if hasattr(_os, name): - locals()[name] = _mk_single_with_return(name) - - def _mk_query(name): - original = getattr(_os, name) - - def wrap(self, *args, **kw): - retval = original(*args, **kw) - if self._active: - return self._remap_output(name, retval) - return retval - - return wrap - - for name in ['getcwd', 'tmpnam']: - if hasattr(_os, name): - locals()[name] = _mk_query(name) - - def _validate_path(self, path): - """Called to remap or validate any path, whether input or output""" - return path - - def _remap_input(self, operation, path, *args, **kw): - """Called for path inputs""" - return self._validate_path(path) - - def _remap_output(self, operation, path): - """Called for path outputs""" - return self._validate_path(path) - - def _remap_pair(self, operation, src, dst, *args, **kw): - """Called for path pairs like rename, link, and symlink operations""" - return ( - self._remap_input(operation + '-from', src, *args, **kw), - self._remap_input(operation + '-to', dst, *args, **kw) - ) - - -if hasattr(os, 'devnull'): - _EXCEPTIONS = [os.devnull,] -else: - _EXCEPTIONS = [] - -try: - from win32com.client.gencache import GetGeneratePath - _EXCEPTIONS.append(GetGeneratePath()) - del GetGeneratePath -except ImportError: - # it appears pywin32 is not installed, so no need to exclude. - pass - - -class DirectorySandbox(AbstractSandbox): - """Restrict operations to a single subdirectory - pseudo-chroot""" - - write_ops = dict.fromkeys([ - "open", "chmod", "chown", "mkdir", "remove", "unlink", "rmdir", - "utime", "lchown", "chroot", "mkfifo", "mknod", "tempnam", - ]) - - _exception_patterns = [ - # Allow lib2to3 to attempt to save a pickled grammar object (#121) - '.*lib2to3.*\.pickle$', - ] - "exempt writing to paths that match the pattern" - - def __init__(self, sandbox, exceptions=_EXCEPTIONS): - self._sandbox = os.path.normcase(os.path.realpath(sandbox)) - self._prefix = os.path.join(self._sandbox, '') - self._exceptions = [ - os.path.normcase(os.path.realpath(path)) - for path in exceptions - ] - AbstractSandbox.__init__(self) - - def _violation(self, operation, *args, **kw): - from setuptools.sandbox import SandboxViolation - raise SandboxViolation(operation, args, kw) - - if _file: - - def _file(self, path, mode='r', *args, **kw): - if mode not in ('r', 'rt', 'rb', 'rU', 'U') and not self._ok(path): - self._violation("file", path, mode, *args, **kw) - return _file(path, mode, *args, **kw) - - def _open(self, path, mode='r', *args, **kw): - if mode not in ('r', 'rt', 'rb', 'rU', 'U') and not self._ok(path): - self._violation("open", path, mode, *args, **kw) - return _open(path, mode, *args, **kw) - - def tmpnam(self): - self._violation("tmpnam") - - def _ok(self, path): - active = self._active - try: - self._active = False - realpath = os.path.normcase(os.path.realpath(path)) - return ( - self._exempted(realpath) - or realpath == self._sandbox - or realpath.startswith(self._prefix) - ) - finally: - self._active = active - - def _exempted(self, filepath): - start_matches = ( - filepath.startswith(exception) - for exception in self._exceptions - ) - pattern_matches = ( - re.match(pattern, filepath) - for pattern in self._exception_patterns - ) - candidates = itertools.chain(start_matches, pattern_matches) - return any(candidates) - - def _remap_input(self, operation, path, *args, **kw): - """Called for path inputs""" - if operation in self.write_ops and not self._ok(path): - self._violation(operation, os.path.realpath(path), *args, **kw) - return path - - def _remap_pair(self, operation, src, dst, *args, **kw): - """Called for path pairs like rename, link, and symlink operations""" - if not self._ok(src) or not self._ok(dst): - self._violation(operation, src, dst, *args, **kw) - return (src, dst) - - def open(self, file, flags, mode=0o777, *args, **kw): - """Called for low-level os.open()""" - if flags & WRITE_FLAGS and not self._ok(file): - self._violation("os.open", file, flags, mode, *args, **kw) - return _os.open(file, flags, mode, *args, **kw) - - -WRITE_FLAGS = functools.reduce( - operator.or_, [getattr(_os, a, 0) for a in - "O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC O_TEMPORARY".split()] -) - - -class SandboxViolation(DistutilsError): - """A setup script attempted to modify the filesystem outside the sandbox""" - - def __str__(self): - return """SandboxViolation: %s%r %s - -The package setup script has attempted to modify files on your system -that are not within the EasyInstall build area, and has been aborted. - -This package cannot be safely installed by EasyInstall, and may not -support alternate installation locations even if you run its setup -script by hand. Please inform the package's author and the EasyInstall -maintainers to find out if a fix or workaround is available.""" % self.args - - -# diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/script (dev).tmpl b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/script (dev).tmpl deleted file mode 100644 index d58b1bb5..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/script (dev).tmpl +++ /dev/null @@ -1,5 +0,0 @@ -# EASY-INSTALL-DEV-SCRIPT: %(spec)r,%(script_name)r -__requires__ = %(spec)r -__import__('pkg_resources').require(%(spec)r) -__file__ = %(dev_path)r -exec(compile(open(__file__).read(), __file__, 'exec')) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/script.tmpl b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/script.tmpl deleted file mode 100644 index ff5efbca..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/script.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -# EASY-INSTALL-SCRIPT: %(spec)r,%(script_name)r -__requires__ = %(spec)r -__import__('pkg_resources').run_script(%(spec)r, %(script_name)r) diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/site-patch.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/site-patch.py deleted file mode 100644 index 0d2d2ff8..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/site-patch.py +++ /dev/null @@ -1,74 +0,0 @@ -def __boot(): - import sys - import os - PYTHONPATH = os.environ.get('PYTHONPATH') - if PYTHONPATH is None or (sys.platform == 'win32' and not PYTHONPATH): - PYTHONPATH = [] - else: - PYTHONPATH = PYTHONPATH.split(os.pathsep) - - pic = getattr(sys, 'path_importer_cache', {}) - stdpath = sys.path[len(PYTHONPATH):] - mydir = os.path.dirname(__file__) - - for item in stdpath: - if item == mydir or not item: - continue # skip if current dir. on Windows, or my own directory - importer = pic.get(item) - if importer is not None: - loader = importer.find_module('site') - if loader is not None: - # This should actually reload the current module - loader.load_module('site') - break - else: - try: - import imp # Avoid import loop in Python >= 3.3 - stream, path, descr = imp.find_module('site', [item]) - except ImportError: - continue - if stream is None: - continue - try: - # This should actually reload the current module - imp.load_module('site', stream, path, descr) - finally: - stream.close() - break - else: - raise ImportError("Couldn't find the real 'site' module") - - known_paths = dict([(makepath(item)[1], 1) for item in sys.path]) # 2.2 comp - - oldpos = getattr(sys, '__egginsert', 0) # save old insertion position - sys.__egginsert = 0 # and reset the current one - - for item in PYTHONPATH: - addsitedir(item) - - sys.__egginsert += oldpos # restore effective old position - - d, nd = makepath(stdpath[0]) - insert_at = None - new_path = [] - - for item in sys.path: - p, np = makepath(item) - - if np == nd and insert_at is None: - # We've hit the first 'system' path entry, so added entries go here - insert_at = len(new_path) - - if np in known_paths or insert_at is None: - new_path.append(item) - else: - # new path after the insert point, back-insert it - new_path.insert(insert_at, item) - insert_at += 1 - - sys.path[:] = new_path - - -if __name__ == 'site': - __boot() - del __boot diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/ssl_support.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/ssl_support.py deleted file mode 100644 index 82f8870a..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/ssl_support.py +++ /dev/null @@ -1,250 +0,0 @@ -import os -import socket -import atexit -import re - -from setuptools.extern.six.moves import urllib, http_client, map - -import pkg_resources -from pkg_resources import ResolutionError, ExtractionError - -try: - import ssl -except ImportError: - ssl = None - -__all__ = [ - 'VerifyingHTTPSHandler', 'find_ca_bundle', 'is_available', 'cert_paths', - 'opener_for' -] - -cert_paths = """ -/etc/pki/tls/certs/ca-bundle.crt -/etc/ssl/certs/ca-certificates.crt -/usr/share/ssl/certs/ca-bundle.crt -/usr/local/share/certs/ca-root.crt -/etc/ssl/cert.pem -/System/Library/OpenSSL/certs/cert.pem -/usr/local/share/certs/ca-root-nss.crt -/etc/ssl/ca-bundle.pem -""".strip().split() - -try: - HTTPSHandler = urllib.request.HTTPSHandler - HTTPSConnection = http_client.HTTPSConnection -except AttributeError: - HTTPSHandler = HTTPSConnection = object - -is_available = ssl is not None and object not in (HTTPSHandler, HTTPSConnection) - - -try: - from ssl import CertificateError, match_hostname -except ImportError: - try: - from backports.ssl_match_hostname import CertificateError - from backports.ssl_match_hostname import match_hostname - except ImportError: - CertificateError = None - match_hostname = None - -if not CertificateError: - - class CertificateError(ValueError): - pass - - -if not match_hostname: - - def _dnsname_match(dn, hostname, max_wildcards=1): - """Matching according to RFC 6125, section 6.4.3 - - http://tools.ietf.org/html/rfc6125#section-6.4.3 - """ - pats = [] - if not dn: - return False - - # Ported from python3-syntax: - # leftmost, *remainder = dn.split(r'.') - parts = dn.split(r'.') - leftmost = parts[0] - remainder = parts[1:] - - wildcards = leftmost.count('*') - if wildcards > max_wildcards: - # Issue #17980: avoid denials of service by refusing more - # than one wildcard per fragment. A survey of established - # policy among SSL implementations showed it to be a - # reasonable choice. - raise CertificateError( - "too many wildcards in certificate DNS name: " + repr(dn)) - - # speed up common case w/o wildcards - if not wildcards: - return dn.lower() == hostname.lower() - - # RFC 6125, section 6.4.3, subitem 1. - # The client SHOULD NOT attempt to match a presented identifier in which - # the wildcard character comprises a label other than the left-most label. - if leftmost == '*': - # When '*' is a fragment by itself, it matches a non-empty dotless - # fragment. - pats.append('[^.]+') - elif leftmost.startswith('xn--') or hostname.startswith('xn--'): - # RFC 6125, section 6.4.3, subitem 3. - # The client SHOULD NOT attempt to match a presented identifier - # where the wildcard character is embedded within an A-label or - # U-label of an internationalized domain name. - pats.append(re.escape(leftmost)) - else: - # Otherwise, '*' matches any dotless string, e.g. www* - pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) - - # add the remaining fragments, ignore any wildcards - for frag in remainder: - pats.append(re.escape(frag)) - - pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) - return pat.match(hostname) - - def match_hostname(cert, hostname): - """Verify that *cert* (in decoded format as returned by - SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 - rules are followed, but IP addresses are not accepted for *hostname*. - - CertificateError is raised on failure. On success, the function - returns nothing. - """ - if not cert: - raise ValueError("empty or no certificate") - dnsnames = [] - san = cert.get('subjectAltName', ()) - for key, value in san: - if key == 'DNS': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if not dnsnames: - # The subject is only checked when there is no dNSName entry - # in subjectAltName - for sub in cert.get('subject', ()): - for key, value in sub: - # XXX according to RFC 2818, the most specific Common Name - # must be used. - if key == 'commonName': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if len(dnsnames) > 1: - raise CertificateError("hostname %r " - "doesn't match either of %s" - % (hostname, ', '.join(map(repr, dnsnames)))) - elif len(dnsnames) == 1: - raise CertificateError("hostname %r " - "doesn't match %r" - % (hostname, dnsnames[0])) - else: - raise CertificateError("no appropriate commonName or " - "subjectAltName fields were found") - - -class VerifyingHTTPSHandler(HTTPSHandler): - """Simple verifying handler: no auth, subclasses, timeouts, etc.""" - - def __init__(self, ca_bundle): - self.ca_bundle = ca_bundle - HTTPSHandler.__init__(self) - - def https_open(self, req): - return self.do_open( - lambda host, **kw: VerifyingHTTPSConn(host, self.ca_bundle, **kw), req - ) - - -class VerifyingHTTPSConn(HTTPSConnection): - """Simple verifying connection: no auth, subclasses, timeouts, etc.""" - - def __init__(self, host, ca_bundle, **kw): - HTTPSConnection.__init__(self, host, **kw) - self.ca_bundle = ca_bundle - - def connect(self): - sock = socket.create_connection( - (self.host, self.port), getattr(self, 'source_address', None) - ) - - # Handle the socket if a (proxy) tunnel is present - if hasattr(self, '_tunnel') and getattr(self, '_tunnel_host', None): - self.sock = sock - self._tunnel() - # http://bugs.python.org/issue7776: Python>=3.4.1 and >=2.7.7 - # change self.host to mean the proxy server host when tunneling is - # being used. Adapt, since we are interested in the destination - # host for the match_hostname() comparison. - actual_host = self._tunnel_host - else: - actual_host = self.host - - self.sock = ssl.wrap_socket( - sock, cert_reqs=ssl.CERT_REQUIRED, ca_certs=self.ca_bundle - ) - try: - match_hostname(self.sock.getpeercert(), actual_host) - except CertificateError: - self.sock.shutdown(socket.SHUT_RDWR) - self.sock.close() - raise - - -def opener_for(ca_bundle=None): - """Get a urlopen() replacement that uses ca_bundle for verification""" - return urllib.request.build_opener( - VerifyingHTTPSHandler(ca_bundle or find_ca_bundle()) - ).open - - -_wincerts = None - - -def get_win_certfile(): - global _wincerts - if _wincerts is not None: - return _wincerts.name - - try: - from wincertstore import CertFile - except ImportError: - return None - - class MyCertFile(CertFile): - def __init__(self, stores=(), certs=()): - CertFile.__init__(self) - for store in stores: - self.addstore(store) - self.addcerts(certs) - atexit.register(self.close) - - def close(self): - try: - super(MyCertFile, self).close() - except OSError: - pass - - _wincerts = MyCertFile(stores=['CA', 'ROOT']) - return _wincerts.name - - -def find_ca_bundle(): - """Return an existing CA bundle path, or None""" - if os.name == 'nt': - return get_win_certfile() - else: - for cert_path in cert_paths: - if os.path.isfile(cert_path): - return cert_path - try: - import certifi - return certifi.where() - except (ImportError, ResolutionError, ExtractionError): - return None diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/unicode_utils.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/unicode_utils.py deleted file mode 100644 index 7c63efd2..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/unicode_utils.py +++ /dev/null @@ -1,44 +0,0 @@ -import unicodedata -import sys - -from setuptools.extern import six - - -# HFS Plus uses decomposed UTF-8 -def decompose(path): - if isinstance(path, six.text_type): - return unicodedata.normalize('NFD', path) - try: - path = path.decode('utf-8') - path = unicodedata.normalize('NFD', path) - path = path.encode('utf-8') - except UnicodeError: - pass # Not UTF-8 - return path - - -def filesys_decode(path): - """ - Ensure that the given path is decoded, - NONE when no expected encoding works - """ - - if isinstance(path, six.text_type): - return path - - fs_enc = sys.getfilesystemencoding() or 'utf-8' - candidates = fs_enc, 'utf-8' - - for enc in candidates: - try: - return path.decode(enc) - except UnicodeDecodeError: - continue - - -def try_encode(string, enc): - "turn unicode encoding into a functional routine" - try: - return string.encode(enc) - except UnicodeEncodeError: - return None diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/version.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/version.py deleted file mode 100644 index f2b40722..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/version.py +++ /dev/null @@ -1,6 +0,0 @@ -import pkg_resources - -try: - __version__ = pkg_resources.require('setuptools')[0].version -except Exception: - __version__ = 'unknown' diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/windows_support.py b/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/windows_support.py deleted file mode 100644 index cb977cff..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/lib/python3.6/site-packages/setuptools/windows_support.py +++ /dev/null @@ -1,29 +0,0 @@ -import platform -import ctypes - - -def windows_only(func): - if platform.system() != 'Windows': - return lambda *args, **kwargs: None - return func - - -@windows_only -def hide_file(path): - """ - Set the hidden attribute on a file or directory. - - From http://stackoverflow.com/questions/19622133/ - - `path` must be text. - """ - __import__('ctypes.wintypes') - SetFileAttributes = ctypes.windll.kernel32.SetFileAttributesW - SetFileAttributes.argtypes = ctypes.wintypes.LPWSTR, ctypes.wintypes.DWORD - SetFileAttributes.restype = ctypes.wintypes.BOOL - - FILE_ATTRIBUTE_HIDDEN = 0x02 - - ret = SetFileAttributes(path, FILE_ATTRIBUTE_HIDDEN) - if not ret: - raise ctypes.WinError() diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/pip-selfcheck.json b/Versi Lama 34 - Virtual Environment/Environment/project1/pip-selfcheck.json deleted file mode 100644 index 622c0eeb..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/pip-selfcheck.json +++ /dev/null @@ -1 +0,0 @@ -{"last_check":"2018-02-11T04:12:43Z","pypi_version":"9.0.1"} \ No newline at end of file diff --git a/Versi Lama 34 - Virtual Environment/Environment/project1/pyvenv.cfg b/Versi Lama 34 - Virtual Environment/Environment/project1/pyvenv.cfg deleted file mode 100644 index 6c008463..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/project1/pyvenv.cfg +++ /dev/null @@ -1,3 +0,0 @@ -home = /Library/Frameworks/Python.framework/Versions/3.6/bin -include-system-site-packages = false -version = 3.6.2 diff --git a/Versi Lama 34 - Virtual Environment/Environment/requirement.txt b/Versi Lama 34 - Virtual Environment/Environment/requirement.txt deleted file mode 100644 index b841e8e0..00000000 --- a/Versi Lama 34 - Virtual Environment/Environment/requirement.txt +++ /dev/null @@ -1,2 +0,0 @@ -Django==2.0.2 -pytz==2018.3 diff --git a/Versi Lama 35 - error handling try and exception/.idea/inspectionProfiles/Project_Default.xml b/Versi Lama 35 - error handling try and exception/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 146ab09b..00000000 --- a/Versi Lama 35 - error handling try and exception/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - \ No newline at end of file diff --git a/Versi Lama 35 - error handling try and exception/.idea/misc.xml b/Versi Lama 35 - error handling try and exception/.idea/misc.xml deleted file mode 100644 index 106775b8..00000000 --- a/Versi Lama 35 - error handling try and exception/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Versi Lama 35 - error handling try and exception/.idea/modules.xml b/Versi Lama 35 - error handling try and exception/.idea/modules.xml deleted file mode 100644 index 8e8ae069..00000000 --- a/Versi Lama 35 - error handling try and exception/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/Versi Lama 35 - error handling try and exception/.idea/part 35 - error handling try and exception.iml b/Versi Lama 35 - error handling try and exception/.idea/part 35 - error handling try and exception.iml deleted file mode 100644 index 67116063..00000000 --- a/Versi Lama 35 - error handling try and exception/.idea/part 35 - error handling try and exception.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/Versi Lama 35 - error handling try and exception/.idea/workspace.xml b/Versi Lama 35 - error handling try and exception/.idea/workspace.xml deleted file mode 100644 index 8429729a..00000000 --- a/Versi Lama 35 - error handling try and exception/.idea/workspace.xml +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -