+
    -Iëjîl  ã                   ó
  € ^ RI HtHtHtHtHtHtHtHtH	t	H
t
Ht ^ RIHtHt ^ RIHt ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHtHt R R lt ! R	 R
]P@                  4      t! ! R R]P@                  4      t" ! R R]P@                  4      t# ! R R]P@                  4      t$ ! R R]P@                  4      t% ! R R]P@                  4      t& ! R R]P@                  4      t' ! R R]P@                  4      t(R# )é    )Ú
url_concatÚparse_multipart_form_dataÚHTTPHeadersÚformat_timestampÚHTTPServerRequestÚparse_request_start_lineÚparse_cookieÚ	qs_to_qslÚHTTPInputErrorÚHTTPFileÚParseMultipartConfig)Úutf8Ú
native_str)Úgen_log)Úignore_deprecationN)ÚTupleÚDictÚListc                ó¶   € V ^8„  d   QhR\         \        \        \        \        ,          3,          \        \        \        \
        ,          3,          3,          /# )é   Úreturn)r   r   Ústrr   Úbytesr   )Úformats   "Ú</usr/lib/python3/dist-packages/tornado/test/httputil_test.pyÚ__annotate__r      s9   € ÷ ñ œœd¤3¬¬U­Ð#3Õ4´d¼3ÄÄXÅÐ;NÕ6OÐOÕPñ ó    c                 ó
   € / / 3# )z»Return two empty dicts suitable for use with parse_multipart_form_data.

mypy insists on type annotations for dict literals, so this lets us avoid
the verbose types throughout this test.
© r   r   r   Úform_data_argsr       s   € ð ˆrˆ6€Mr   c                   óh   a € ] tR t^&t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tRtV tR# )ÚTestUrlConcatc                óF   € \        R RR.4      pV P                  VR4       R# )úhttps://localhost/pathúhttps://localhost/path?y=y&z=zN©Úyr'   ©Úzr)   ©r   ÚassertEqual©ÚselfÚurls   & r   Útest_url_concat_no_query_paramsÚ-TestUrlConcat.test_url_concat_no_query_params'   s%   € ÜÐ1°JÀ
Ð3KÓLˆØ×Ñ˜Ð>Ö?r   c                óF   € \        R RR.4      pV P                  VR4       R# )r$   z!https://localhost/path?y=%2Fy&z=zN)r'   z/yr(   r*   r,   s   & r   Útest_url_concat_encode_argsÚ)TestUrlConcat.test_url_concat_encode_args+   s%   € ÜÐ1°KÀÐ3LÓMˆØ×Ñ˜ÐAÖBr   c                óF   € \        R RR.4      pV P                  VR4       R# )zhttps://localhost/path?r%   Nr&   r(   r*   r,   s   & r   Útest_url_concat_trailing_qÚ(TestUrlConcat.test_url_concat_trailing_q/   s%   € ÜÐ2°ZÀÐ4LÓMˆØ×Ñ˜Ð>Ö?r   c                óF   € \        R RR.4      pV P                  VR4       R# )zhttps://localhost/path?xú!https://localhost/path?x=&y=y&z=zNr&   r(   r*   r,   s   & r   Ú&test_url_concat_q_with_no_trailing_ampÚ4TestUrlConcat.test_url_concat_q_with_no_trailing_amp3   s%   € ÜÐ3°jÀ*Ð5MÓNˆØ×Ñ˜ÐAÖBr   c                óF   € \        R RR.4      pV P                  VR4       R# )zhttps://localhost/path?x&r8   Nr&   r(   r*   r,   s   & r   Útest_url_concat_trailing_ampÚ*TestUrlConcat.test_url_concat_trailing_amp7   s%   € ÜÐ4°zÀ:Ð6NÓOˆØ×Ñ˜ÐAÖBr   c                óF   € \        R RR.4      pV P                  VR4       R# )zhttps://localhost/path?a=1&b=2z&https://localhost/path?a=1&b=2&y=y&z=zNr&   r(   r*   r,   s   & r   Útest_url_concat_mult_paramsÚ)TestUrlConcat.test_url_concat_mult_params;   s%   € ÜÐ9¸JÈ
Ð;SÓTˆØ×Ñ˜ÐFÖGr   c                óB   € \        R . 4      pV P                  VR 4       R# ©zhttps://localhost/path?r=1&t=2Nr*   r,   s   & r   Útest_url_concat_no_paramsÚ'TestUrlConcat.test_url_concat_no_params?   s    € ÜÐ9¸2Ó>ˆØ×Ñ˜Ð>Ö?r   c                óB   € \        R R4      pV P                  VR 4       R# rB   r*   r,   s   & r   Útest_url_concat_none_paramsÚ)TestUrlConcat.test_url_concat_none_paramsC   s    € ÜÐ9¸4Ó@ˆØ×Ñ˜Ð>Ö?r   c                óD   € \        R R.4      pV P                  VR4       R# )zhttps://localhost/path#tabzhttps://localhost/path?y=y#tabNr&   r*   r,   s   & r   Útest_url_concat_with_fragÚ'TestUrlConcat.test_url_concat_with_fragG   s"   € ÜÐ5¸
°|ÓDˆØ×Ñ˜Ð>Ö?r   c                óF   € \        R RR.4      pV P                  VR4       R# )r$   z https://localhost/path?y=y1&y=y2N)r'   Úy1)r'   Úy2r*   r,   s   & r   Ú!test_url_concat_multi_same_paramsÚ/TestUrlConcat.test_url_concat_multi_same_paramsK   s%   € ÜÐ1°KÀÐ3MÓNˆØ×Ñ˜Ð@ÖAr   c                óD   € \        R R.4      pV P                  VR4       R# )zhttps://localhost/path?r=1&r=2z"https://localhost/path?r=1&r=2&y=yNr&   r*   r,   s   & r   Ú'test_url_concat_multi_same_query_paramsÚ5TestUrlConcat.test_url_concat_multi_same_query_paramsO   s"   € ÜÐ9¸J¸<ÓHˆØ×Ñ˜ÐBÖCr   c                óV   € \        R \        RR7      4      pV P                  VR4       R# )r$   r'   )r'   zhttps://localhost/path?y=yN)r   Údictr+   r,   s   & r   Útest_url_concat_dict_paramsÚ)TestUrlConcat.test_url_concat_dict_paramsS   s$   € ÜÐ1´4¸#´;Ó?ˆØ×Ñ˜Ð:Ö;r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r/   r2   r5   r9   r<   r?   rC   rF   rI   rN   rQ   rU   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r"   r"   &   sQ   ø‡ € ò@òCò@òCòCòHò@ò@ò@òBòD÷<ð <r   r"   c                   ó&   a € ] tR t^Xt o R tRtV tR# )ÚQsParseTestc                óÜ   € R p\         P                  P                  V4      p\        \	        V4      4      pV P                  RV4       V P                  RV4       V P                  RV4       R# )za=1&b=2&a=3N)ÚaÚ1)rb   Ú3)ÚbÚ2)ÚurllibÚparseÚparse_qsÚlistr
   ÚassertIn)r-   ÚqsstringÚqsÚqsls   &   r   Útest_parsingÚQsParseTest.test_parsingY   sS   € Ø ˆÜ�\‰\×"Ñ" 8Ó,ˆÜ”9˜R“=Ó!ˆØ�‰�j #Ô&Ø�‰�j #Ô&Ø�‰�j #Ö&r   r   N)rW   rX   rY   rZ   ro   r[   r\   r]   s   @r   r`   r`   X   s   ø‡ € ÷'ð 'r   r`   c                   ón   a € ] tR t^bt o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tRtV tR# )ÚMultipartFormDataTestc                óà   € R P                  RR4      p\        4       w  r#\        RWV4       VR,          ^ ,          pV P                  VR,          R4       V P                  VR,          R4       R	# )
óT   --1234
Content-Disposition: form-data; name="files"; filename="ab.txt"

Foo
--1234--ó   
ó   
ó   1234ÚfilesÚfilenameúab.txtÚbodyó   FooN©Úreplacer    r   r+   ©r-   ÚdataÚargsrx   Úfiles   &    r   Útest_file_uploadÚ&MultipartFormDataTest.test_file_uploadc   sl   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆÜ! '¨4°uÔ=Ø�W�~˜aÕ ˆØ×Ñ˜˜jÕ)¨8Ô4Ø×Ñ˜˜f� vÖ.r   c                óà   € R P                  RR4      p\        4       w  r#\        RWV4       VR,          ^ ,          pV P                  VR,          R4       V P                  VR,          R4       R	# )
sP   --1234
Content-Disposition: form-data; name=files; filename=ab.txt

Foo
--1234--ru   rv   rw   rx   ry   rz   r{   r|   Nr}   r   s   &    r   Útest_unquoted_namesÚ)MultipartFormDataTest.test_unquoted_namesr   sl   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆÜ! '¨4°uÔ=Ø�W�~˜aÕ ˆØ×Ñ˜˜jÕ)¨8Ô4Ø×Ñ˜˜f� vÖ.r   c                óŒ  € . ROpV F¹  p\         P                  ! RV4       RVP                  RR4      P                  RR4      ,          p\        VP                  RR4      4      p\	        4       w  rV\        R	WEV4       VR
,          ^ ,          pV P                  VR,          V4       V P                  VR,          R4       K»  	  R# )úa;b.txtztrying filename %rzP--1234
Content-Disposition: form-data; name="files"; filename="%s"

Foo
--1234--Ú\ú\\Ú"z\"Ú
ú
rw   rx   ry   r{   r|   N)r‰   za"b.txtza";b.txtza;"b.txtz	a";";.txtza\"b.txtza\b.txt)ÚloggingÚdebugr~   r   r    r   r+   )r-   Ú	filenamesry   Ústr_datar€   r�   rx   r‚   s   &       r   Útest_special_filenamesÚ,MultipartFormDataTest.test_special_filenames‚   sº   € ò
ˆ	ó "ˆHÜ�MŠMÐ.°Ô9ðð
 ×ÑØ�fóç‰gØ�Uóõ	ˆHô ˜×(Ñ(¨¨vÓ6Ó7ˆDÜ(Ó*‰KˆDÜ% g¨t¸5ÔAØ˜•> !Õ$ˆDØ×Ñ˜T *Õ-¨xÔ8Ø×Ñ˜T &�\¨6Ö2ó# "r   c                óà   € R P                  RR4      p\        4       w  r#\        RWV4       VR,          ^ ,          pV P                  VR,          R4       V P                  VR,          R4       R	# )
sr   --1234
Content-Disposition: form-data; name="files"; filename="ab.txt"; filename*=UTF-8''%C3%A1b.txt

Foo
--1234--ru   rv   rw   rx   ry   u   Ã¡b.txtr{   r|   Nr}   r   s   &    r   Útest_non_ascii_filename_rfc5987Ú5MultipartFormDataTest.test_non_ascii_filename_rfc5987Ÿ   sl   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆÜ! '¨4°uÔ=Ø�W�~˜aÕ ˆØ×Ñ˜˜jÕ)¨9Ô5Ø×Ñ˜˜f� vÖ.r   c                óþ   € R P                  R4      P                  RR4      p\        4       w  r#\        RWV4       VR,          ^ ,          pV P	                  VR,          R4       V P	                  VR,          R	4       R
# )uX   --1234
Content-Disposition: form-data; name="files"; filename="æµ‹è¯•.txt"

Foo
--1234--zutf-8ru   rv   rw   rx   ry   u
   æµ‹è¯•.txtr{   r|   N)Úencoder~   r    r   r+   r   s   &    r   Útest_non_ascii_filename_rawÚ1MultipartFormDataTest.test_non_ascii_filename_raw®   sy   € ð÷
 ‰FØó
ç
‰'Ø�7ó
ð 	ô %Ó&‰ˆÜ! '¨4°uÔ=Ø�W�~˜aÕ ˆØ×Ñ˜˜jÕ)¨<Ô8Ø×Ñ˜˜f� vÖ.r   c                óà   € R P                  RR4      p\        4       w  r#\        RWV4       VR,          ^ ,          pV P                  VR,          R4       V P                  VR,          R4       R	# )
rt   ru   rv   s   "1234"rx   ry   rz   r{   r|   Nr}   r   s   &    r   Ú)test_boundary_starts_and_ends_with_quotesÚ?MultipartFormDataTest.test_boundary_starts_and_ends_with_quotes¿   sl   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆÜ! )¨T¸Ô?Ø�W�~˜aÕ ˆØ×Ñ˜˜jÕ)¨8Ô4Ø×Ñ˜˜f� vÖ.r   c                óö   € R P                  RR4      p\        4       w  r#V P                  \        RR7      ;_uu_ 4        \	        RWV4       RRR4       V P                  V/ 4       R#   + '       g   i     L$; i)s   --1234

Foo
--1234--ru   rv   z#multipart/form-data missing headers©Úmsgrw   N©r~   r    ÚassertRaisesr   r   r+   ©r-   r€   r�   rx   s   &   r   Útest_missing_headersÚ*MultipartFormDataTest.test_missing_headersÎ   sw   € ð÷ ‰GØ�7ó
ð	 	ô %Ó&‰ˆØ×ÑÜÐ Eð ÷ 
õ 
ô & g¨t¸5ÔA÷
ð 	×Ñ˜ Ö#÷	
÷ 
úó   ¾A(Á(A8	c                óö   € R P                  RR4      p\        4       w  r#V P                  \        RR7      ;_uu_ 4        \	        RWV4       RRR4       V P                  V/ 4       R#   + '       g   i     L$; i)sR   --1234
Content-Disposition: invalid; name="files"; filename="ab.txt"

Foo
--1234--ru   rv   úInvalid multipart/form-datar    rw   Nr¢   r¤   s   &   r   Ú test_invalid_content_dispositionÚ6MultipartFormDataTest.test_invalid_content_dispositionÝ   sl   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆØ×Ñœ~Ð3PÐ×QÕQÜ% g¨t¸5ÔA÷ Rà×Ñ˜ Ö#÷ R×Qúr§   c                óö   € R P                  RR4      p\        4       w  r#V P                  \        RR7      ;_uu_ 4        \	        RWV4       RRR4       V P                  V/ 4       R#   + '       g   i     L$; i)sS   --1234
Content-Disposition: form-data; name="files"; filename="ab.txt"

Foo--1234--ru   rv   r©   r    rw   Nr¢   r¤   s   &   r   Ú.test_line_does_not_end_with_correct_line_breakÚDMultipartFormDataTest.test_line_does_not_end_with_correct_line_breakë   sl   € ð÷ ‰wØ�7ó
ð	 	ô %Ó&‰ˆØ×Ñœ~Ð3PÐ×QÕQÜ% g¨t¸5ÔA÷ Rà×Ñ˜ Ö#÷ R×Qúr§   c                óö   € R P                  RR4      p\        4       w  r#V P                  \        RR7      ;_uu_ 4        \	        RWV4       RRR4       V P                  V/ 4       R#   + '       g   i     L$; i)sF   --1234
Content-Disposition: form-data; filename="ab.txt"

Foo
--1234--ru   rv   z&multipart/form-data value missing namer    rw   Nr¢   r¤   s   &   r   Ú6test_content_disposition_header_without_name_parameterÚLMultipartFormDataTest.test_content_disposition_header_without_name_parameterø   sw   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆØ×ÑÜÐ Hð ÷ 
õ 
ô & g¨t¸5ÔA÷
ð 	×Ñ˜ Ö#÷	
÷ 
úr§   c                óà   € R P                  RR4      p\        4       w  r#\        RWV4       VR,          ^ ,          pV P                  VR,          R4       V P                  VR,          R4       R	# )
sU   --1234
Content-Disposition: form-data; name="files"; filename="ab.txt"

Foo
--1234--
ru   rv   rw   rx   ry   rz   r{   r|   Nr}   r   s   &    r   Útest_data_after_final_boundaryÚ4MultipartFormDataTest.test_data_after_final_boundary  sl   € ð÷ �GØ�7ó
ð 	ô %Ó&‰ˆÜ! '¨4°uÔ=Ø�W�~˜aÕ ˆØ×Ñ˜˜jÕ)¨8Ô4Ø×Ñ˜˜f� vÖ.r   c                ó|   € R  pV! R4      pV! R4      pW2,          ^8”  d   V P                  RV: RV: 24       R# R# )c                 óÂ   € \         P                  ! 4       pRRV ,          ,           R,           R,           p/ p/ p\        RW#V4       \         P                  ! 4       V,
          # )s(   --1234
Content-Disposition: form-data; ó   ;s   "; s1   name="files"; filename="a.txt"

Foo
--1234--
rw   s+   --1234
Content-Disposition: form-data; x=")ÚtimeÚperf_counterr   )ÚnÚstartÚmessager�   rx   s   &    r   ÚfÚJMultipartFormDataTest.test_disposition_param_linear_performance.<locals>.f  sh   € Ü×%Ò%Ó'ˆEðà˜•(õð õð Oõ	Oð ð ,.ˆDØ/1ˆEÜ% g¨w¸eÔDÜ×$Ò$Ó&¨Õ.Ð.r   iè  é'  z,Disposition param parsing is not linear: d1=ú vs d2=N©Úfail©r-   r½   Úd1Úd2s   &   r   Ú)test_disposition_param_linear_performanceÚ?MultipartFormDataTest.test_disposition_param_linear_performance  sC   € ò	/ñ ˆu‹Xˆáˆv‹YˆØ�7�RŒ<Ø�I‰IÐEÀ"ÁÀhÈ2É%ÐPÖQñ r   c           
     ó–  € R pRP                  RR4      p\        4       p\        4       w  rE\        WWEVR7       V P	                  VR,          ^ ,          R,          R4       \        ^ R7      pV P                  \        4      ;_uu_ 4       p\        WWEVR7       R	R	R	4       V P                  R
\        XP                  4      4       \        ^
R7      pV P                  \        4      ;_uu_ 4       p\        WWEVR7       R	R	R	4       V P                  R\        VP                  4      4       \        RR7      p	V P                  \        4      ;_uu_ 4       p\        WWEV	R7       R	R	R	4       V P                  R\        VP                  4      4       R	#   + '       g   i     EL; i  + '       g   i     L°; i  + '       g   i     L^; i)rw   sP   --1234
Content-Disposition: form-data; name="files"; filename="ab.txt"

--1234--ru   rv   )Úconfigrx   ry   rz   )Ú	max_partsNztoo many parts)Úmax_part_header_sizezheader too largeF)Úenabledz'multipart/form-data parsing is disabled)
r~   r   r    r   r+   r£   r   rk   r   Ú	exception)
r-   Úboundaryr{   rÉ   r�   rx   Úconfig_no_partsÚcmÚconfig_small_headersÚconfig_disableds
   &         r   Útest_multipart_configÚ+MultipartFormDataTest.test_multipart_config3  sa  € Øˆð÷ ‰GØ�7ó
ð 	ô &Ó'ˆÜ$Ó&‰ˆÜ! (°$ÀfÕMØ×Ñ˜˜w�¨Õ*¨:Õ6¸ÔAä.¸Ô;ˆØ×Ñœ~×.Ô.°"Ü%Ø °Oõ÷ /ð 	�‰Ð&¬¨B¯L©LÓ(9Ô:ä3ÈÔLÐØ×Ñœ~×.Ô.°"Ü%Ø Ð4Hõ÷ /ð 	�‰Ð(¬#¨b¯l©lÓ*;Ô<ä.°uÔ=ˆØ×Ñœ~×.Ô.°"Ü%Ø °Oõ÷ /ð 	�‰Ð?ÄÀRÇ\Á\ÓARÖS÷% /×.Ð.ú÷ /×.ú÷ /×.ús$   Â	FÃ.F%ÅF8ÆF"	Æ%F5	Æ8G	r   N)rW   rX   rY   rZ   rƒ   r†   r“   r–   rš   r�   r¥   rª   r­   r°   r³   rÆ   rÓ   r[   r\   r]   s   @r   rr   rr   b   sN   ø‡ € ò/ò/ò 3ò:/ò/ò"/ò$ò$ò$ò$ò /ò&R÷0 Tð  Tr   rr   c                   óh   a € ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tRtV tR# )ÚHTTPHeadersTestiV  c                óü  € R P                  RR4      p\        P                  ! V4      pV P                  VR,          R4       V P                  VP	                  R4      R.4       V P                  VR,          R4       V P                  VP	                  R4      RR	.4       V P                  \        \        VP                  4       4      4      . RO4       V P                  RV9   4       V P                  R
V9   4       R# )z>Foo: bar
 baz
Asdf: qwer
	zxcv
Foo: even
     more
     lines
r�   rŽ   Úasdfú	qwer zxcvÚFoozbar baz,even more linesÚfooúbar bazúeven more linesÚAsdfN))rÞ   rÙ   )rÚ   rÜ   )rÚ   rÝ   )	r~   r   rh   r+   Úget_listÚsortedrj   Úget_allÚ
assertTrue©r-   r€   Úheaderss   &  r   Útest_multi_lineÚHTTPHeadersTest.test_multi_lineW  sß   € ð
÷ �GØ�&ó
ð 	ô ×#Ò# DÓ)ˆØ×Ñ˜ �¨+Ô6Ø×Ñ˜×)Ñ)¨&Ó1°K°=ÔAØ×Ñ˜ �Ð)BÔCØ×Ñ˜×)Ñ)¨%Ó0°9Ð>OÐ2PÔQØ×ÑÜ”4˜Ÿ™Ó)Ó*Ó+ÚSô	
ð
 	�‰˜ 'Ñ)Ô*Ø�‰˜ 'Ñ)Ö*r   c                ó  € R p\         P                  ! V4      pV P                  VR,          R4       RpV P                  \        \         P                  V4       RpV P                  \        \         P                  V4       R# )zFoo: bar
	asdfrÚ   zbar asdfz	 Foo: barzFoo: bar
asdfN)r   rh   r+   r£   r   rã   s   &  r   Útest_continuationÚ!HTTPHeadersTest.test_continuationt  si   € Ø#ˆÜ×#Ò# DÓ)ˆØ×Ñ˜ �¨Ô4ð
 ˆØ×Ñœ.¬+×*;Ñ*;¸TÔBð $ˆØ×Ñœ.¬+×*;Ñ*;¸TÖBr   c                ó8  € \        ^ÿ4       FŠ  pR\        V4       R2pV^	8X  g   V^ 8¼  dF   V^8w  d?   \        P                  ! V4      pV P	                  VR,          R\        V4       R24       Ke  V P                  \        \        P                  V4       KŒ  	  R# )éÿ   zFoo: barzbaz
rÚ   ÚbarÚbazN)ÚrangeÚchrr   rh   r+   r£   r   )r-   Úcr€   rä   s   &   r   Útest_forbidden_ascii_charactersÚ/HTTPHeadersTest.test_forbidden_ascii_characters„  s€   € ô �t–ˆAØœc !›f˜X WÐ-ˆDØ�DŒy˜Q $œY¨1°¬9Ü%×+Ò+¨DÓ1�Ø× Ñ  ¨¥°3´s¸1³v°h¸cÐ1BÖCà×!Ñ!¤.´+×2CÑ2CÀTÖJó r   c           	     óî  € . R	OpV F±  pR
 F¨  p  VP                  V4      pRT,           R,           p\        P                  ! \	        TP                  R4      4      4      pRR\	        TP                  R4      4      ,           R,           3.pT P                  T\        TP                  4       4      4       Kª  	  K³  	  R#   \         d     KÀ  i ; i  \         d    \        P                  ! RY#4       h i ; i)ô   Â…Úlatin1s   Cookie: foo=s   barÚCookiezfoo=rì   zfailed while trying %r in %sN)rô   u   â€¨u   â€©)r   rõ   )r™   ÚUnicodeEncodeErrorr   rh   r   Údecoder+   rj   rá   Ú	Exceptionr   Úwarning)r-   ÚnewlinesÚnewlineÚencodingÚencodedr€   rä   Úexpecteds   &       r   Útest_unicode_newlinesÚ%HTTPHeadersTest.test_unicode_newlines�  sè   € ò
ˆó  ˆGã.�ðð!Ø")§.¡.°Ó":˜ð +¨WÕ4°vÕ=�Dô *×/Ò/´
¸4¿;¹;ÀxÓ;PÓ0QÓR�Gð %Ø"¤Z°·±¸xÓ0HÓ%IÕIÈEÕQðð �Hð ×$Ñ$ X¬t°G·O±OÓ4EÓ/FÖGó# /ó  øô .ô !â ð!ûô !ô Ü—O’OÐ$BÀGÔVØðús)   ‘B>¢BCÂ>CÃ	CÃCÃCÃ$C4c                óà   € . ROpV Fc  w  r#\         P                  ! RV,          4      pV'       d   R.pMRRV,          3.pV P                  V\        VP	                  4       4      4       Ke  	  R# )Ú zTransfer-Encoding: %schunkedúTransfer-Encodingz	%schunkedN))r  T)Ú	T)ô   Â F)rô   F)r  Úchunked)r   rh   r+   rj   rá   )r-   Ú
whitespacerð   Ústrippedrä   rÿ   s   &     r   Útest_unicode_whitespaceÚ'HTTPHeadersTest.test_unicode_whitespaceº  se   € ò

ˆ
ó &‰KˆAÜ!×'Ò'Ð(FÈÕ(JÓKˆGßØ<Ð=‘à0°+Àµ/ÐBÐC�Ø×Ñ˜X¤t¨G¯O©OÓ,=Ó'>Ö?ó &r   c                ó&  € V P                  \        4      ;_uu_ 4        \        P                  ! R 4       RRR4       \        P                  ! R4      pV P	                  \        VP                  4       4      . RO4       R#   + '       g   i     LS; i)z&CRLF: crlf
LF: lf
CR: crMore: more
NzCRLF: crlf
LF: lf
More: more
))ÚCrlfÚcrlf)ÚLfÚlf)ÚMoreÚmore)r£   r   r   rh   r+   rà   rá   ©r-   rä   s   & r   Útest_optional_crÚ HTTPHeadersTest.test_optional_crÍ  sc   € à×Ñœ~×.Õ.Ü×ÒÐLÔM÷ /ô
 ×#Ò#Ð$JÓKˆØ×ÑÜ�7—?‘?Ó$Ó%Ú>ö	
÷ /×.ús   žB Â B	c           	     óä  € . ROp\        4       pV F  w  r4VP                  W44       K  	  VP                  4       p\        P                  ! V4      p\        P                  ! V4      pW%Wg3 F5  pV P	                  \        \        VP                  4       4      4      V4       K7  	  WVV3 FD  pV P                  W‚4       V P                  VP                  R 4      VP                  R 4      4       KF  	  R# )ÚAN))r  rc   )r  rf   )ÚBrð   )
r   ÚaddÚcopyÚdeepcopyr+   rj   rà   rá   ÚassertIsNotrß   )	r-   Ú	all_pairsÚh1ÚkÚvÚh2Úh3Úh4rä   s	   &        r   Ú	test_copyÚHTTPHeadersTest.test_copyÚ  s¿   € Ú8ˆ	Ü‹]ˆÛ‰DˆAØ�F‰F�1ŽLñ à�W‰W‹YˆÜ�YŠY�r‹]ˆÜ�]Š]˜2ÓˆØ Ó'ˆGð ×ÑœT¤&¨¯©Ó):Ó";Ó<¸iÖHñ (ð  “|ˆGà×Ñ˜WÔ)Ø×Ñ˜W×-Ñ-¨cÓ2°B·K±KÀÓ4DÖEó $r   c                óÞ  € \        4       pVP                  R R4       VP                  R R4       VP                  RR4       \        P                  ! V4      p\        P                  ! V4      pV P                  \        VP                  4       4      \        VP                  4       4      4       V P                  \        VP                  4       4      \        VP                  4       4      4       R# )z
Set-Cookieza=bzc=dzContent-Typez	text/htmlN)	r   r  ÚpickleÚdumpsÚloadsr+   rà   rá   Úitems)r-   rä   ÚpickledÚ	unpickleds   &   r   Útest_pickle_roundtripÚ%HTTPHeadersTest.test_pickle_roundtripë  s    € Ü“-ˆØ�‰�L %Ô(Ø�‰�L %Ô(Ø�‰�N KÔ0Ü—,’,˜wÓ'ˆÜ—L’L Ó)ˆ	Ø×Ñœ §¡Ó 1Ó2´F¸9×;LÑ;LÓ;NÓ4OÔPØ×Ñœ §¡£Ó0´&¸¿¹Ó9JÓ2KÖLr   c                óf  € \        4       pR VR&   V P                  VP                  RR4      R 4       V P                  VR,          R 4       V P                  VP                  RR4      R4       V P                  VR,          R4       V P                  \        VP	                  4       4      RR.4       R# )rì   rÛ   rí   ÚquuxÚxyzzyN)rÚ   rì   )ÚQuuxr1  )r   r+   Ú
setdefaultrà   rá   r  s   & r   Útest_setdefaultÚHTTPHeadersTest.test_setdefaultõ  s–   € Ü“-ˆØˆ�‰à×Ñ˜×+Ñ+¨E°5Ó9¸5ÔAØ×Ñ˜ �¨Ô/à×Ñ˜×+Ñ+¨F°GÓ<¸gÔFØ×Ñ˜ �¨'Ô2Ø×Ñœ §¡Ó 1Ó2°^ÐEVÐ4WÖXr   c                óæ   € \        4       pVP                  R R4       VP                  R R4       VP                  R R4       \         P                  ! \        V4      4      pV P	                  W4       R# )rÚ   rc   rf   rd   N)r   r  rh   r   r+   )r-   rä   Úheaders2s   &  r   Útest_stringÚHTTPHeadersTest.test_string   sU   € Ü“-ˆØ�‰�E˜3ÔØ�‰�E˜3ÔØ�‰�E˜3ÔÜ×$Ò$¤S¨£\Ó2ˆØ×Ñ˜Ö+r   c                óÌ   € . ROpV FE  p\        4       pV P                  \        4      ;_uu_ 4        VP                  VR4       RRR4       KG  	  R#   + '       g   i     K\  ; i)Ú rì   N)r;  zfoo barzfoo	barzfoo
barzfoo barzfoo z fooô   Ã©)r   r£   r   r  )r-   Úinvalid_namesÚnamerä   s   &   r   Útest_invalid_header_namesÚ)HTTPHeadersTest.test_invalid_header_names  sM   € ò	
ˆó "ˆDÜ!“mˆGØ×"Ñ"¤>×2Õ2Ø—‘˜D %Ô(÷ 3Ñ2ó "ç2×2Ð2ús   ±AÁA#c                ó|   € R  pV! R4      pV! R4      pW2,          ^8”  d   V P                  RV: RV: 24       R# R# )c                 óÀ   € \         P                  ! 4       p\        4       p\        V 4       F  pVP	                  R R4       K  	  \         P                  ! 4       V,
          # )zX-Foorì   )r¸   r¹   r   rî   r  )rº   r»   rä   Úis   &   r   r½   Ú2HTTPHeadersTest.test_linear_performance.<locals>.f  sG   € Ü×%Ò%Ó'ˆEÜ!“mˆGÜ˜1–X�Ø—‘˜G UÖ+ñ ä×$Ò$Ó&¨Õ.Ð.r   r¿   é † z.HTTPHeaders.add() does not scale linearly: d1=rÀ   NrÁ   rÃ   s   &   r   Útest_linear_performanceÚ'HTTPHeadersTest.test_linear_performance  sC   € ò	/ñ ˆv‹YˆÙˆw‹ZˆØ�7�RŒ<à�I‰IÐGÀBÁ5ÈÈRÉEÐRÖSñ r   r   N)rW   rX   rY   rZ   rå   rè   rñ   r   r
  r  r$  r-  r4  r8  r?  rF  r[   r\   r]   s   @r   rÖ   rÖ   V  sO   ø‡ € ò+ò:Cò 	Kò)òV@ò&
òFò"Mò	Yò,ò)÷ Tð Tr   rÖ   c                   ó^   a € ] tR tRt o RtRtR tR tR tR t	R t
R	 tR
 tR tR tRtV tR# )ÚFormatTimestampTesti(  g*; R]AÔAzSun, 27 Jan 2013 18:43:20 GMTc                óP   € V P                  \        V4      V P                  4       R # ©N)r+   r   ÚEXPECTED)r-   Úvalues   &&r   ÚcheckÚFormatTimestampTest.check-  s   € Ø×ÑÔ)¨%Ó0°$·-±-Ö@r   c                ó<   € V P                  V P                  4       R # rK  )rN  Ú	TIMESTAMP©r-   s   &r   Útest_unix_time_floatÚ(FormatTimestampTest.test_unix_time_float0  s   € Ø�
‰
�4—>‘>Ö"r   c                óN   € V P                  \        V P                  4      4       R # rK  )rN  ÚintrQ  rR  s   &r   Útest_unix_time_intÚ&FormatTimestampTest.test_unix_time_int3  s   € Ø�
‰
”3�t—~‘~Ó&Ö'r   c                ód   € V P                  \        P                  ! V P                  4      4       R # rK  )rN  r¸   ÚgmtimerQ  rR  s   &r   Útest_struct_timeÚ$FormatTimestampTest.test_struct_time6  s   € Ø�
‰
”4—;’;˜tŸ~™~Ó.Ö/r   c                ó°   € \        \        P                  ! V P                  4      4      pV P	                  ^	\        V4      4       V P                  V4       R# )é	   N)Útupler¸   rZ  rQ  r+   ÚlenrN  )r-   Útups   & r   Útest_time_tupleÚ#FormatTimestampTest.test_time_tuple9  s8   € Ü”D—K’K §¡Ó/Ó0ˆØ×Ñ˜œC ›HÔ%Ø�
‰
�3Žr   c                óÈ   € V P                  \        P                  P                  V P                  \        P                  P
                  4      P                  R R7      4       R # )N)Útzinfo)rN  ÚdatetimeÚfromtimestamprQ  ÚtimezoneÚutcr~   rR  s   &r   Útest_utc_naive_datetimeÚ+FormatTimestampTest.test_utc_naive_datetime>  sC   € Ø�
‰
Ü×Ñ×+Ñ+Ø—‘¤× 1Ñ 1× 5Ñ 5óç‰g˜TˆgÓ"ö	
r   c                óÔ   € \        4       ;_uu_ 4        V P                  \        P                  P                  V P                  4      4       R R R 4       R #   + '       g   i     R # ; irK  )r   rN  rf  ÚutcfromtimestamprQ  rR  s   &r   Ú"test_utc_naive_datetime_deprecatedÚ6FormatTimestampTest.test_utc_naive_datetime_deprecatedE  s;   € Ü×!Õ!Ø�J‰J”x×(Ñ(×9Ñ9¸$¿.¹.ÓIÔJ÷ "×!×!Ò!ús   “9AÁA'	c                ó¨   € V P                  \        P                  P                  V P                  \        P                  P
                  4      4       R # rK  )rN  rf  rg  rQ  rh  ri  rR  s   &r   Útest_utc_aware_datetimeÚ+FormatTimestampTest.test_utc_aware_datetimeI  s4   € Ø�
‰
Ü×Ñ×+Ñ+¨D¯N©N¼H×<MÑ<M×<QÑ<QÓRö	
r   c                óÊ   € V P                  \        P                  P                  V P                  \        P                  ! \        P
                  ! RR7      4      4      4       R# )é   )ÚhoursNéüÿÿÿ)rN  rf  rg  rQ  rh  Ú	timedeltarR  s   &r   Útest_other_aware_datetimeÚ-FormatTimestampTest.test_other_aware_datetimeN  sA   € à�
‰
Ü×Ñ×+Ñ+Ø—‘¤× 1Ò 1´(×2DÒ2DÈ2Ô2NÓ Oóö	
r   r   N)rW   rX   rY   rZ   rQ  rL  rN  rS  rW  r[  rb  rj  rn  rq  rx  r[   r\   r]   s   @r   rI  rI  (  sC   ø‡ € à!€IØ.€HòAò#ò(ò0òò

òKò
÷

ð 
r   rI  c                   ó2   a € ] tR tRt o R tR tR tRtV tR# )ÚHTTPServerRequestTestiY  c                ó   € \        R R7       R# ©Ú/)ÚuriN)r   rR  s   &r   Útest_default_constructorÚ.HTTPServerRequestTest.test_default_constructorZ  s   € ô 	˜c×"r   c                ó^   € \        R R7      pV P                  VP                  \        4       R# r}  )r   ÚassertIsInstancer{   r   ©r-   Úrequests   & r   Útest_body_is_a_byte_stringÚ0HTTPServerRequestTest.test_body_is_a_byte_string`  s    € Ü#¨Ô,ˆØ×Ñ˜gŸl™l¬EÖ2r   c                ón   € \        R \        RR./4      R7      pV P                  R\        V4      4       R# )r~  ÚCanaryz	Coal Mine)r  rä   N)r   r   ÚassertNotInÚreprr„  s   & r   Ú"test_repr_does_not_contain_headersÚ8HTTPServerRequestTest.test_repr_does_not_contain_headersd  s3   € Ü#Øœ[¨(°[°MÐ)BÓCô
ˆð 	×Ñ˜¤4¨£=Ö1r   r   N)	rW   rX   rY   rZ   r€  r†  rŒ  r[   r\   r]   s   @r   r{  r{  Y  s   ø‡ € ò#ò3÷2ð 2r   r{  c                   ó2   a € ] tR tRt o RtRtRtR tRtV t	R# )ÚParseRequestStartLineTestik  ÚGETz/foozHTTP/1.1c                ód  € R P                  V P                  V P                  V P                  .4      p\	        V4      pV P                  VP                  V P                  4       V P                  VP                  V P                  4       V P                  VP                  V P                  4       R# )r  N)	ÚjoinÚMETHODÚPATHÚVERSIONr   r+   ÚmethodÚpathÚversion)r-   Ú
start_lineÚparsed_start_lines   &  r   Útest_parse_request_start_lineÚ7ParseRequestStartLineTest.test_parse_request_start_linep  s   € Ø—X‘X˜tŸ{™{¨D¯I©I°t·|±|ÐDÓEˆ
Ü4°ZÓ@ÐØ×ÑÐ*×1Ñ1°4·;±;Ô?Ø×ÑÐ*×/Ñ/°·±Ô;Ø×ÑÐ*×2Ñ2°D·L±LÖAr   r   N)
rW   rX   rY   rZ   r“  r”  r•  r›  r[   r\   r]   s   @r   r�  r�  k  s    ø‡ € Ø€FØ€DØ€G÷Bð Br   r�  c                   ó>   a € ] tR tRt o R tR tR tR tR tRt	V t
R# )	ÚParseCookieTestix  c                óD  € V P                  \        R4      RRRR/4       V P                  \        R4      RRR	R
RRRR/4       V P                  \        R4      RR/4       V P                  \        R4      RR/4       V P                  \        R4      RRRRRRRR/4       R# )z?
Test cases copied from Python's Lib/test/test_http_cookies.py
zchips=ahoy; vienna=fingerÚchipsÚahoyÚviennaÚfingerz)keebler="E=mc2; L=\"Loves\"; fudge=\012;"Úkeeblerz"E=mc2ÚLz	\"Loves\"Úfudgez\012r;  rŒ   zkeebler=E=mc2zE=mc2zkey:term=value:termzkey:termz
value:termza=b; c=[; d=r; f=hrb   re   rð   Ú[ÚdÚrr½   ÚhN©r+   r	   rR  s   &r   Útest_python_cookiesÚ#ParseCookieTest.test_python_cookies{  s»   € ð 	×ÑÜÐ4Ó5Ø�f˜h¨Ð1ô	
ð 	×ÑÜÐGÓHØ˜ # }°g¸wÈÈCÐPô	
ð
 	×Ñœ oÓ6¸ÀGÐ8LÔMà×ÑÜÐ.Ó/°*¸lÐ1Kô	
ð 	×ÑÜÐ-Ó.°°c¸3ÀÀSÈ#ÈsÐTWÐ0Xö	
r   c                ó‚   € V P                  \        R 4      RRRR/4       V P                  \        R4      RRRR/4       R	# )
za=b; Domain=example.comrb   re   ÚDomainzexample.comza=b; h=i; a=crð   rª  rC  Nr«  rR  s   &r   Útest_cookie_edgecasesÚ%ParseCookieTest.test_cookie_edgecases”  sD   € à×ÑÜÐ2Ó3°c¸3ÀÈ-Ð5Xô	
ð
 	×Ñœ oÓ6¸¸cÀ3ÈÐ8LÖMr   c           	     óœ  € V P                  R\        R4      P                  4       4       V P                  \        R4      RRRRRR	/4       V P                  \        R
4      RRRR/4       V P                  \        R4      RR/4       V P                  \        R4      R\	        R4      /4       V P                  \        R4      RRRR/4       R# )z[
Cookie strings that go against RFC6265 but browsers will send if set
via document.cookie.
Údjango_languagez$abc=def; unnamed; django_language=enza=b; "; c=drb   re   r;  rŒ   rð   r¨  za b c=d e = f; gh=iza b czd e = fÚghrC  za   b,c<>@:/[]?{}=d  "  =e,f gza   b,c<>@:/[]?{}zd  "  =e,f gu   saint=AndrÃ© BessetteÚsaintu   AndrÃ© Bessettez  =  b  ;  ;  =  ;   c  =  ;  N)rk   r	   Úkeysr+   r   rR  s   &r   Útest_invalid_cookiesÚ$ParseCookieTest.test_invalid_cookies�  s×   € ð 	�‰ØÜÐ?Ó@×EÑEÓGô	
ð
 	×Ñœ mÓ4°s¸CÀÀSÈ#ÈsÐ6SÔTà×ÑÜÐ.Ó/°'¸9ÀdÈCÐ1Pô	
ð 	×ÑÜÐ9Ó:Ø  .Ð1ô	
ð
 	×ÑÜÐ0Ó1Ø”jÐ!2Ó3Ð4ô	
ð 	×ÑÜÐ9Ó:¸RÀÀcÈ2Ð<Nö	
r   c                óØ   € . ROpV FK  w  r#V P                  V4      ;_uu_ 4        \        V4      pV P                  VR,          V4       RRR4       KM  	  R#   + '       g   i     Kb  ; i)úa="b=\""rb   N))rº  úb=")za="b=\\"úb=\)za="b=\="zb==)za="b=\n"zb=n)z
a="b=\042"r»  )z
a="b=\134"r¼  )z
a="b=\377"u   b=Ã¿)z
a="b=\400"zb=400)z	a="b=\42"zb=42)za="b=\\042"zb=\042)za="b=\\134"zb=\134)z
a="b=\\\""úb=\")za="b=\\\042"r½  )za="b=\134\""r½  )za="b=\134\042"r½  )ÚsubTestr	   r+   )r-   Úcasesrþ   Údecodedrð   s   &    r   Útest_unquoteÚParseCookieTest.test_unquote¿  sW   € ò
ˆó" !&ÑˆGØ—‘˜g×&Õ&Ü  Ó)�Ø× Ñ   3¥¨Ô1÷ 'Ñ&ó !&ß&×&Ð&ús   ¥%AÁA)c                óþ  € R pR	 Fà  pV P                  V4      ;_uu_ 4        \        P                  ! 4       pRW!,          ,           R,           p\        V4      R,          p\        P                  ! 4       pV P                  VR,          R4       V P                  VR
R R4       V P                  \	        V4      V^,           4       V P                  Wc,
          ^R4       RRR4       Kâ  	  R#   + '       g   i     K÷  ; i)rE  za="b=rŒ   rb   :Né   Nr¼  Nz\\\zTest took too long)r‹   z\134éýÿÿÿ)r¾  r¸   r	   r+   r`  Ú
assertLess)r-   rº   rþ   r»   r€   rM  Úends   &      r   Útest_unquote_largeÚ"ParseCookieTest.test_unquote_largeØ  sÁ   € ð ˆÛ%ˆGØ—‘˜g×&Õ&ÜŸ	š	›�Ø ¥Õ,¨sÕ2�Ü$ TÓ*¨3Õ/�Ü—i’i“k�Ø× Ñ   r¥¨FÔ3Ø× Ñ   r s ¨XÔ6Ø× Ñ ¤ U£¨Q°­UÔ3ð —‘ ¥¨QÐ0DÔE÷ 'Ñ&ó &ß&×&Ð&ús   ¡B<C+Ã+C<r   N)rW   rX   rY   rZ   r¬  r°  r·  rÁ  rÈ  r[   r\   r]   s   @r   rž  rž  x  s'   ø‡ € ò
ò2Nò 
òD2÷2Fð Fr   rž  ))Útornado.httputilr   r   r   r   r   r   r	   r
   r   r   r   Útornado.escaper   r   Útornado.logr   Útornado.test.utilr   r  rf  r�   r'  r¸   Úurllib.parserg   ÚunittestÚtypingr   r   r   r    ÚTestCaser"   r`   rr   rÖ   rI  r{  r�  rž  r   r   r   Ú<module>rÒ     sæ   ð÷÷ ÷ ñ ÷ ,Ý Ý 0ã Û Û Û Û Û Û ç $Ñ $õô/<�H×%Ñ%ô /<ôd'�(×#Ñ#ô 'ôqT˜H×-Ñ-ô qTôhOT�h×'Ñ'ô OTôd,
˜(×+Ñ+ô ,
ôb2˜H×-Ñ-ô 2ô$
B × 1Ñ 1ô 
BôsF�h×'Ñ'ö sFr   