§
    fŠtjãw  ã                   óø   — d Z ddlZddlZddlZddlZddlZddlZddlm	Z	 g d¢Z
 G d„ de¦  «        Z G d„ d¦  «        Z G d	„ d
e	¦  «        Zej        ej        hZd„ Zd„ Z	 dd„Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ ZdS )zÂ
Module to read / write wav files using NumPy arrays

Functions
---------
`read`: Return the sample rate (in samples/sec) and data from a WAV file.

`write`: Write a NumPy array as a WAV file.

é    N)ÚIntEnum)ÚWavFileWarningÚreadÚwritec                   ó   — e Zd ZdZdS )r   z×
    Warning for WAV files with format issues that can still be read.
    
    Raised when a WAV file has problems like missing metadata or 
    non-standard formatting, but can still be processed successfully.
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úN/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/io/wavfile.pyr   r      s   € € € € € ðð ð 	€Dr   r   c                   óF   — e Zd ZdZd„ Zd
d„Zej        fd„Zd„ Z	d„ Z
d„ Zd	S )ÚSeekEmulatingReadera
  
    Tracks stream position, provides tell(), and emulates only those
    seeks that can be supported by reading forward. Other seeks raise
    io.UnsupportedOperation. Note that this class implements only the
    minimum necessary to keep wavfile.read() happy.
    c                 ó"   — || _         d| _        d S )Nr   )ÚreaderÚpos)Úselfr   s     r   Ú__init__zSeekEmulatingReader.__init__,   s   € ØˆŒØˆŒˆˆr   éÿÿÿÿc                ót   — | j                              |¦  «        }| xj        t          |¦  «        z  c_        |S ©N)r   r   r   Úlen)r   ÚsizeÚdatas      r   r   zSeekEmulatingReader.read0   s2   € ØŒ{×Ò Ñ%Ô%ˆØˆŒ•C˜‘I”IÑˆŒØˆr   c                ó^  — |xt           j        k    r*|| j        k    r |                      || j        z
  ¦  «         nlxt           j        k    r|dk    r |                      |¦  «         n?t           j        k    r|dk    r|                      ¦   «          n	 t          j        d¦  «        ‚| j        S )Nr   zNSeekEmulatingReader was asked to emulate a seek operation it does not support.)ÚosÚSEEK_SETr   r   ÚSEEK_CURÚSEEK_ENDÚioÚUnsupportedOperation)r   ÚoffsetÚwhences      r   ÚseekzSeekEmulatingReader.seek5   s­   € ØØ•”’� ¨$¬(Ò 2Ð 2Ð 2Ø—	’	˜& 4¤8Ñ+Ñ,Ô,Ð,Ð,Ø•”’� ¨!¢  Ø—	’	˜&Ñ!Ô!Ð!Ð!Ý”’� ¨!¢ Ø—	’	‘”��ØÝÔ-ð /Wñ Xô Xð XàŒxˆr   c                 ó   — | j         S r   )r   ©r   s    r   ÚtellzSeekEmulatingReader.tellB   s	   € ØŒxˆr   c                 ó8   — | j                              ¦   «          d S r   )r   Úcloser'   s    r   r*   zSeekEmulatingReader.closeE   s   € ØŒ×ÒÑÔÐÐÐr   c                 ó*   — t          j        d¦  «        ‚)Nz SeekEmulatingReader can't flush.)r!   r"   r'   s    r   ÚflushzSeekEmulatingReader.flushJ   s   € ÝÔ%Ð&HÑIÔIÐIr   N)r   )r   r	   r
   r   r   r   r   r   r%   r(   r*   r,   r   r   r   r   r   %   sŽ   € € € € € ðð ðð ð ðð ð ð ð
 #%¤+ð ð ð ð ðð ð ðð ð ð
Jð Jð Jð Jð Jr   r   c                   ó~  — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6Z9d7Z:d8Z;d9Z<d:Z=d;Z>d<Z?d=Z@d>ZAd?ZBd@ZCdAZDdBZEdCZFdDZGdEZHdFZIdGZJdHZKdIZLdJZMdKZNdLZOdMZPdNZQdOZRdPZSdQZTdRZUdSZVdTZWdUZXdVZYdWZZdXZ[dYZ\dZZ]d[Z^d\Z_d]Z`d^Zad_Zbd`ZcdaZddbZedcZfddZgdeZhdfZidgZjdhZkdiZldjZmdkZndlZodmZpdnZqdoZrdpZsdqZtdrZudsZvdtZwduZxdvZydwZzdxZ{dyZ|dzZ}d{Z~d|Zd}Z€d~Z�dZ‚d€Zƒd�Z„d‚Z…dƒZ†d„Z‡d…Zˆd†Z‰d‡ZŠdˆZ‹d‰ZŒdŠZ�d‹ZŽdŒZ�d�Z�dŽZ‘d�Z’d�Z“d‘Z”d’Z•d“Z–d”Z—d•Z˜d–Z™d—Zšd˜Z›d™ZœdšZ�d›ZždœZŸd�Z džZ¡dŸZ¢d Z£d¡Z¤d¢Z¥d£Z¦d¤Z§d¥Z¨d¦Z©d§Zªd¨Z«d©Z¬dªZ­d«Z®d¬Z¯d­Z°d®Z±d¯Z²d°Z³d±Z´d²Zµd³Z¶d´Z·dµZ¸d¶Z¹d·Zºd¸Z»d¹Z¼dºZ½d»Z¾d¼Z¿d½ZÀd¾ZÁd¿ZÂdÀZÃdÁZÄdÂZÅdÃZÆdÄZÇdÅZÈdÆZÉdÇZÊdÈZËdÉZÌdÊZÍdËZÎdÌZÏdÍZÐdÎZÑdÏZÒdÐZÓdÑZÔdÒZÕdÓZÖdÔZ×dÕZØdÖZÙd×ZÚdØZÛdÙZÜdÚZÝdÛZÞdÜZßdÝZàdÞZádßZâdàZãdáZädâZådãZædäZçdåZèdæZédçZêdèZëdéZìdêZídëZîdìZïdíZðdîZñdïZòdðZódñZôdòZõdóZödôZ÷dõZødöZùd÷ZúdøZûdùZüdúZýdûZþdüZÿdý�Z dþ�Zdÿ�Z�d �Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z	�d�Z
�d�Z�d	�Z�d
�Z�d�Z�d�Z�dS (  ÚWAVE_FORMATzš
    WAVE form wFormatTag IDs

    Complete list is in mmreg.h in Windows 10 SDK.  ALAC and OPUS are the
    newest additions, in v10.0.14393 2016-07
    r   é   é   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é    é!   é"   é#   é$   é%   é&   é'   é(   é0   é1   é2   é3   é4   é5   é6   é7   é8   é9   é:   é;   é<   é=   é@   éA   éB   éC   éD   éE   éP   éR   éS   éU   éY   é`   éa   éb   éc   éd   ée   éf   ég   éi   ép   éq   ér   és   ét   éu   év   éw   éx   éy   éz   é{   é€   é�   é‚   éƒ   é„   é…   é†   éˆ   é‰   éŠ   é‹   éŒ   é�   é‘   é’   é“   é”   é—   é˜   é™   é    é¡   é¢   é£   é¤   é°   éÿ   é   i  i  i  i   i!  i#  i%  i0  i1  i2  i3  i4  i5  i6  i@  iA  iB  iP  iQ  iU  i`  ia  ib  ic  id  ip  iq  ir  is  it  iu  iv  iw  ix  i€  i�  i   i  i  i  i  i  i   i0  i@  iA  iI  iP  iQ  i`  ip  iq  ir  is  i€  i�  i…  i   iP  iQ  i   i  i  iP  i   i  i€  i�  i®  i   i  i  i  i  i   i  i  i  i  i   i  i   i   i  i  i  i	  i
  i  i  i  iq  iy  i  i  i  iÄ  i    i   i3  iCA  iB  iCB  iLC  iLV  iVW  iOg  iPg  iQg  iog  ipg  iqg  ial  i p  iOp  imp  ias  ibs  ics  i!z  i"z  i ¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i	¡  i
¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i ¡  i!¡  i"¡  i#¡  i$¡  i¬ñ  iþÿ  iÿÿ  N(  r   r	   r
   r   ÚUNKNOWNÚPCMÚADPCMÚ
IEEE_FLOATÚVSELPÚIBM_CVSDÚALAWÚMULAWÚDTSÚDRMÚ	WMAVOICE9Ú
WMAVOICE10Ú	OKI_ADPCMÚ	DVI_ADPCMÚ	IMA_ADPCMÚMEDIASPACE_ADPCMÚSIERRA_ADPCMÚ
G723_ADPCMÚDIGISTDÚDIGIFIXÚDIALOGIC_OKI_ADPCMÚMEDIAVISION_ADPCMÚCU_CODECÚHP_DYN_VOICEÚYAMAHA_ADPCMÚSONARCÚDSPGROUP_TRUESPEECHÚECHOSC1ÚAUDIOFILE_AF36ÚAPTXÚAUDIOFILE_AF10ÚPROSODY_1612ÚLRCÚ	DOLBY_AC2ÚGSM610ÚMSNAUDIOÚANTEX_ADPCMEÚCONTROL_RES_VQLPCÚDIGIREALÚ	DIGIADPCMÚCONTROL_RES_CR10ÚNMS_VBXADPCMÚCS_IMAADPCMÚECHOSC3ÚROCKWELL_ADPCMÚROCKWELL_DIGITALKÚXEBECÚ
G721_ADPCMÚ	G728_CELPÚMSG723ÚINTEL_G723_1Ú
INTEL_G729Ú
SHARP_G726ÚMPEGÚRT24ÚPACÚ
MPEGLAYER3ÚLUCENT_G723ÚCIRRUSÚESPCMÚVOXWAREÚCANOPUS_ATRACÚ
G726_ADPCMÚ
G722_ADPCMÚDSATÚDSAT_DISPLAYÚVOXWARE_BYTE_ALIGNEDÚVOXWARE_AC8ÚVOXWARE_AC10ÚVOXWARE_AC16ÚVOXWARE_AC20ÚVOXWARE_RT24ÚVOXWARE_RT29ÚVOXWARE_RT29HWÚVOXWARE_VR12ÚVOXWARE_VR18ÚVOXWARE_TQ40ÚVOXWARE_SC3ÚVOXWARE_SC3_1Ú	SOFTSOUNDÚVOXWARE_TQ60ÚMSRT24ÚG729AÚMVI_MVI2ÚDF_G726Ú	DF_GSM610ÚISIAUDIOÚONLIVEÚMULTITUDE_FT_SX20ÚINFOCOM_ITS_G721_ADPCMÚCONVEDIA_G729Ú
CONGRUENCYÚSBC24ÚDOLBY_AC3_SPDIFÚMEDIASONIC_G723ÚPROSODY_8KBPSÚZYXEL_ADPCMÚPHILIPS_LPCBBÚPACKEDÚMALDEN_PHONYTALKÚRACAL_RECORDER_GSMÚRACAL_RECORDER_G720_AÚRACAL_RECORDER_G723_1ÚRACAL_RECORDER_TETRA_ACELPÚNEC_AACÚRAW_AAC1ÚRHETOREX_ADPCMÚIRATÚ	VIVO_G723Ú
VIVO_SIRENÚPHILIPS_CELPÚPHILIPS_GRUNDIGÚDIGITAL_G723ÚSANYO_LD_ADPCMÚSIPROLAB_ACEPLNETÚSIPROLAB_ACELP4800ÚSIPROLAB_ACELP8V3ÚSIPROLAB_G729ÚSIPROLAB_G729AÚSIPROLAB_KELVINÚVOICEAGE_AMRÚ	G726ADPCMÚDICTAPHONE_CELP68ÚDICTAPHONE_CELP54ÚQUALCOMM_PUREVOICEÚQUALCOMM_HALFRATEÚTUBGSMÚMSAUDIO1ÚWMAUDIO2ÚWMAUDIO3ÚWMAUDIO_LOSSLESSÚWMASPDIFÚUNISYS_NAP_ADPCMÚUNISYS_NAP_ULAWÚUNISYS_NAP_ALAWÚUNISYS_NAP_16KÚSYCOM_ACM_SYC008ÚSYCOM_ACM_SYC701_G726LÚSYCOM_ACM_SYC701_CELP54ÚSYCOM_ACM_SYC701_CELP68ÚKNOWLEDGE_ADVENTURE_ADPCMÚFRAUNHOFER_IIS_MPEG2_AACÚDTS_DSÚCREATIVE_ADPCMÚCREATIVE_FASTSPEECH8ÚCREATIVE_FASTSPEECH10Ú
UHER_ADPCMÚULEAD_DV_AUDIOÚULEAD_DV_AUDIO_1ÚQUARTERDECKÚILINK_VCÚ	RAW_SPORTÚESST_AC3ÚGENERIC_PASSTHRUÚIPI_HSXÚ	IPI_RPELPÚCS2ÚSONY_SCXÚSONY_SCYÚSONY_ATRAC3ÚSONY_SPCÚTELUM_AUDIOÚTELUM_IA_AUDIOÚNORCOM_VOICE_SYSTEMS_ADPCMÚFM_TOWNS_SNDÚMICRONASÚMICRONAS_CELP833ÚBTV_DIGITALÚINTEL_MUSIC_CODERÚINDEO_AUDIOÚQDESIGN_MUSICÚON2_VP7_AUDIOÚON2_VP6_AUDIOÚ	VME_VMPCMÚTPCÚLIGHTWAVE_LOSSLESSÚOLIGSMÚOLIADPCMÚOLICELPÚOLISBCÚOLIOPRÚLH_CODECÚLH_CODEC_CELPÚLH_CODEC_SBC8ÚLH_CODEC_SBC12ÚLH_CODEC_SBC16ÚNORRISÚ
ISIAUDIO_2ÚSOUNDSPACE_MUSICOMPRESSÚMPEG_ADTS_AACÚMPEG_RAW_AACÚ	MPEG_LOASÚNOKIA_MPEG_ADTS_AACÚNOKIA_MPEG_RAW_AACÚVODAFONE_MPEG_ADTS_AACÚVODAFONE_MPEG_RAW_AACÚ
MPEG_HEAACÚVOXWARE_RT24_SPEECHÚSONICFOUNDRY_LOSSLESSÚINNINGS_TELECOM_ADPCMÚLUCENT_SX8300PÚLUCENT_SX5363SÚCUSEEMEÚNTCSOFT_ALF2CM_ACMÚDVMÚDTS2ÚMAKEAVISÚDIVIO_MPEG4_AACÚNOKIA_ADAPTIVE_MULTIRATEÚ
DIVIO_G726ÚLEAD_SPEECHÚLEAD_VORBISÚWAVPACK_AUDIOÚOGG_VORBIS_MODE_1ÚOGG_VORBIS_MODE_2ÚOGG_VORBIS_MODE_3ÚOGG_VORBIS_MODE_1_PLUSÚOGG_VORBIS_MODE_2_PLUSÚOGG_VORBIS_MODE_3_PLUSÚALACÚ	_3COM_NBXÚOPUSÚFAAD_AACÚAMR_NBÚAMR_WBÚAMR_WPÚGSM_AMR_CBRÚGSM_AMR_VBR_SIDÚCOMVERSE_INFOSYS_G723_1ÚCOMVERSE_INFOSYS_AVQSBCÚCOMVERSE_INFOSYS_SBCÚSYMBOL_G729_AÚVOICEAGE_AMR_WBÚINGENIENT_G726Ú	MPEG4_AACÚENCORE_G726Ú	ZOLL_ASAOÚSPEEX_VOICEÚVIANIX_MASCÚWM9_SPECTRUM_ANALYZERÚWMF_SPECTRUM_ANAYZERÚGSM_610ÚGSM_620ÚGSM_660ÚGSM_690ÚGSM_ADAPTIVE_MULTIRATE_WBÚPOLYCOM_G722ÚPOLYCOM_G728ÚPOLYCOM_G729_AÚPOLYCOM_SIRENÚGLOBAL_IP_ILBCÚRADIOTIME_TIME_SHIFT_RADIOÚNICE_ACAÚ
NICE_ADPCMÚVOCORD_G721ÚVOCORD_G726ÚVOCORD_G722_1ÚVOCORD_G728ÚVOCORD_G729ÚVOCORD_G729_AÚVOCORD_G723_1Ú
VOCORD_LBCÚ	NICE_G728ÚFRACE_TELECOM_G729ÚCODIANÚFLACÚ
EXTENSIBLEÚDEVELOPMENTr   r   r   r.   r.   N   s”  € € € € € ðð ð €GØ
€CØ€EØ€JØ€EØ€HØ€DØ€EØ
€CØ
€CØ€IØ€JØ€IØ€IØ€IØÐØ€LØ€JØ€GØ€GØÐØÐØ€HØ€LØ€LØ€FØ ÐØ€GØ€NØ€DØ€NØ€LØ
€CØ€IØ€FØ€HØ€LØÐØ€HØ€IØÐØ€LØ€KØ€GØ€NØÐØ€EØ€JØ€IØ€FØ€LØ€JØ€JØ€DØ€DØ
€CØ€JØ€KØ€FØ€EØ€GØ€MØ€JØ€JØ€DØ€LØ!ÐØ€KØ€LØ€LØ€LØ€LØ€LØ€NØ€LØ€LØ€LØ€KØ€MØ€IØ€LØ€FØ€EØ€HØ€GØ€IØ€HØ€FØÐØ#ÐØ€MØ€JØ€EØ€OØ€OØ€MØ€KØ€MØ€FØÐØÐØ"ÐØ"ÐØ!'ÐØ€GØ€HØ€NØ€DØ€IØ€JØ€LØ€OØ€LØ€NØÐØÐØÐØ€MØ€NØ€OØ€LØ€IØÐØÐØÐØÐØ€FØ€HØ€HØ€HØÐØ€HØÐØ€OØ€OØ€NØÐØ#ÐØ$ÐØ$ÐØ &ÐØ%ÐØ€FØ€NØ!ÐØ"ÐØ€JØ€NØÐØ€KØ€HØ€IØ€HØÐØ€GØ€IØ
€CØ€HØ€HØ€KØ€HØ€KØ€NØ!'ÐØ€LØ€HØÐØ€KØÐØ€KØ€MØ€MØ€MØ€IØ
€CØÐØ€FØ€HØ€GØ€FØ€FØ€HØ€MØ€MØ€NØ€NØ€FØ€JØ$ÐØ€MØ€LØ€IØ ÐØÐØ#ÐØ"ÐØ€JØ ÐØ"ÐØ"ÐØ€NØ€NØ€GØÐØ
€CØ€DØ€HØ€OØ%ÐØ€JØ€KØ€KØ€MØÐØÐØÐØ#ÐØ#ÐØ#ÐØ€DØ€IØ€DØ€HØ€FØ€FØ€FØ€KØ€OØ$ÐØ$ÐØ!ÐØ€MØ€OØ€NØ€IØ€KØ€IØ€KØ€KØ"ÐØ!ÐØ€GØ€GØ€GØ€GØ &ÐØ€LØ€LØ€NØ€MØ€NØ!'ÐØ�HØ�JØ�KÙ�KÙ�MÙ�KÙ�KÙ�MÙ�MÙ�JÙ�IÙÑÙ�FÙ�DÙ�JÙ�K�K€Kr   r.   c                 óÆ   — 	 t          | ¦  «        j        }n# t          $ r | d›}Y nw xY wt          d|› d�d                     d„ t          D ¦   «         ¦  «        z   ¦  «        ‚)Nz#06xzUnknown wave file format: z. Supported formats: z, c              3   ó$   K  — | ]}|j         V — Œd S r   )Úname)Ú.0Úxs     r   ú	<genexpr>z$_raise_bad_format.<locals>.<genexpr>m  s$   è è € ÐBÐB¨!˜qœvÐBÐBÐBÐBÐBÐBr   )r.   r¦  Ú
ValueErrorÚjoinÚKNOWN_WAVE_FORMATS)Ú
format_tagÚformat_names     r   Ú_raise_bad_formatr¯  f  s“   € ð+Ý! *Ñ-Ô-Ô2ˆˆøÝð +ð +ð +Ø#Ð*Ð*ˆˆˆð+øøøå
ð !°+ð !ð !ð !à—Y’YÐBÐBÕ/AÐBÑBÔBÑBÔBñCñ Dô Dð Ds   ‚ —(§(c                 ó˜  — |rd}nd}t          j        |dz   |                      d¦  «        ¦  «        d         }|dk     rt          d¦  «        ‚t          j        |dz   |                      d¦  «        ¦  «        }d}|\  }}}}	}
}|t          j        k    r¸|d	k    r²t          j        |d
z   |                      d¦  «        ¦  «        d         }|dz  }|dk    rg|                      d¦  «        }|dz  }|dd…         }|rd}nd}|                     |¦  «        r&t          j        |dz   |dd…         ¦  «        d         }nt          d¦  «        ‚|t          vrt          |¦  «         ||k    r|                      ||z
  ¦  «         t          | |¦  «         |t          j
        k    r!|	||
z  k    rt          d|› d|
› d|	› �¦  «        ‚|||||	|
|fS )a%  
    Returns
    -------
    size : int
        size of format subchunk in bytes (minus 8 for "fmt " and itself)
    format_tag : int
        PCM, float, or compressed format
    channels : int
        number of channels
    fs : int
        sampling frequency in samples per second
    bytes_per_second : int
        overall byte rate for the file
    block_align : int
        bytes per sample, including all channels
    bit_depth : int
        bits per sample

    Notes
    -----
    Assumes file pointer is immediately after the 'fmt ' id
    ú>ú<ÚIr2   r   r:   z.Binary structure of wave file is not compliantÚHHIIHHr<   ÚHr0   r@   r4   s      €  ª 8›qs      €  ª 8›qNz{WAV header is invalid: nAvgBytesPerSec must equal product of nSamplesPerSec and nBlockAlign, but file has nSamplesPerSec = z, nBlockAlign = z, and nAvgBytesPerSec = )ÚstructÚunpackr   rª  r.   r¢  Úendswithr¬  r¯  Ú_handle_pad_byter™   )ÚfidÚis_big_endianÚfmtr   ÚresÚ
bytes_readr­  ÚchannelsÚfsÚbytes_per_secondÚblock_alignÚ	bit_depthÚext_chunk_sizeÚextensible_chunk_dataÚraw_guidÚtails                   r   Ú_read_fmt_chunkrÈ  p  s;  € ð. ð ØˆˆàˆåŒ=˜˜S™ #§(¢(¨1¡+¤+Ñ.Ô.¨qÔ1€Dàˆb‚y€yÝÐIÑJÔJÐJå
Œ-˜˜H™ c§h¢h¨r¡l¤lÑ
3Ô
3€CØ€JàILÑF€J�˜"Ð.°¸Yà•[Ô+Ò+Ð+°¸²°Ýœ s¨3¡w°·²¸±´Ñ<Ô<¸QÔ?ˆØ�a‰ˆ
Ø˜RÒÐØ$'§H¢H¨R¡L¤LÐ!Ø˜"ÑˆJØ,¨S°¨ZÔ8ˆHð ð KØJ��àJ�Ø× Ò  Ñ&Ô&ð EÝ#œ]¨3¨s©7°H¸R¸a¸R´LÑAÔAÀ!ÔD�
øåÐMÑNÔNÐNàÕ+Ð+Ð+Ý˜*Ñ%Ô%Ð%ð ˆjÒÐØ�Š�˜
Ñ"Ñ#Ô#Ð#õ �S˜$ÑÔÐà•[”_Ò$Ð$Ø˜r KÑ/Ò/Ð/Ýð Fð "$ðFð Fð 6AðFð Fð 4Dð	Fð Fñ Gô Gð Gð �*˜h¨Ð,<¸kØðð r   Fc	                 óž  — |rd}	nd}	|s2t          j        |	dz   |                      d¦  «        ¦  «        d         }
n|}
|                      d¦  «         ||z  }|
|z  }|t          j        k    r;d|cxk    rdk    rn nd}nf|d	v rd
}n_|dk    r|	› d|› �}nQt          d|› d�¦  «        ‚|t          j        k    r|dv r|	› d|› �}n"t          d|› d�¦  «        ‚t          |¦  «         |                      ¦   «         }|�sF	 |d
k    r|
n|}t          j
        | ||¬¦  «        }nT# t          j        $ rB |                      |d¦  «         t          j        |                      |
¦  «        |¬¦  «        }Y nw xY w|d
k    rÈ|dk    r|	› d�n|	› d�}t          j        t!          |¦  «        |z  t          j        |¦  «        j        fd
¬¦  «        }|r!|                     d|f¦  «        |dd…d|…f<   n!|                     d|f¦  «        |dd…| d…f<   |                     |¦  «                             |j        dd…         ¦  «        }n^|dv rG|                      ¦   «         }t          j        | |d||f¬¦  «        }|                      ||
z   ¦  «         nt          d|› d�¦  «        ‚t/          | |
¦  «         |dk    r|                     d|¦  «        }|S )a  
    Notes
    -----
    Assumes file pointer is immediately after the 'data' id

    It's possible to not use all available bits in a container, or to store
    samples in a container bigger than necessary, so bytes_per_sample uses
    the actual reported container size (nBlockAlign / nChannels).  Real-world
    examples:

    Adobe Audition's "24-bit packed int (type 1, 20-bit)"

        nChannels = 2, nBlockAlign = 6, wBitsPerSample = 20

    http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Samples/AFsp/M1F1-int12-AFsp.wav
    is:

        nChannels = 2, nBlockAlign = 4, wBitsPerSample = 12

    http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/multichaudP.pdf
    gives an example of:

        nChannels = 2, nBlockAlign = 8, wBitsPerSample = 20
    r±  r²  r³  r2   r   r/   r6   Úu1>   r1   r3   r4   r5   ÚV1r\   Úiz(Unsupported bit depth: the WAV file has z-bit integer data.>   rE   r\   Úfz-bit floating-point data.)ÚdtypeÚcount)rÎ  r1   Úi4Úi8r   N>   r/   r0   r2   r6   Úc)rÎ  Úmoder#   Úshapezmmap=True not compatible with z-byte container size.)r¶  r·  r   r.   r™   rª  r›   r¯  r(   ÚnpÚfromfiler!   r"   r%   Ú
frombufferÚzerosr   rÎ  ÚitemsizeÚreshapeÚviewrÔ  Úmemmapr¹  )rº  r­  r¿  rÃ  r»  Úis_rf64rÂ  ÚmmapÚrf64_chunk_sizer¼  r   Úbytes_per_sampleÚ	n_samplesrÎ  ÚstartrÏ  r   ÚdtÚas                      r   Ú_read_data_chunkrå  ¿  s»  € ð4 ð Øˆˆàˆð ð ÝŒ}˜S ™W c§h¢h¨q¡k¤kÑ2Ô2°1Ô5ˆˆð ˆà�Š�‰Œˆð # hÑ.ÐØÐ(Ñ(€Ià•[”_Ò$Ð$Ø�	ÐÐÒÐ˜QÒÐÐÐÐØˆEˆEØ Ð-Ð-àˆEˆEØ˜"Š_ˆ_àÐ/Ð/Ð-Ð/Ð/ˆEˆEåð BØ$-ðBð Bð Bñ Cô Cð Cà	•{Ô-Ò	-Ð	-Ø˜Ð Ð ØÐ/Ð/Ð-Ð/Ð/ˆEˆEåð IØ$-ðIð Ið Iñ Jô Jð Jõ 	˜*Ñ%Ô%Ð%à�HŠH‰JŒJ€EØñ Ið	>Ø! TšM˜M�D�D¨yˆEÝ”;˜s¨%°uÐ=Ñ=Ô=ˆDˆDøÝÔ&ð 	>ð 	>ð 	>Ø�HŠH�U˜AÑÔÐÝ”= §¢¨$¡¤°uÐ=Ñ=Ô=ˆDˆDˆDð	>øøøð �DŠ=ˆ=à/°1Ò4Ð4�C����¸S¸*¸*¸*ˆBÝ”�#˜d™)œ)Ð'7Ñ7½¼À"¹¼Ô9NÐOØ"&ð(ñ (ô (ˆAàð PØ*.¯,ª,¸Ð<LÐ7MÑ*NÔ*N��!�!�!Ð&Ð&Ð&Ð&Ñ'Ð'à+/¯<ª<¸Ð=MÐ8NÑ+OÔ+O��!�!�!Ð&Ð&Ð'Ð'Ð'Ñ(Ø—6’6˜"‘:”:×%Ò% a¤g¨c¨r¨c¤lÑ3Ô3ˆDøà˜|Ð+Ð+Ø—H’H‘J”JˆEÝ”9˜S¨°CÀØ'0 lð4ñ 4ô 4ˆDà�HŠH�U˜T‘\Ñ"Ô"Ð"Ð"åð HØ 0ðHð Hð Hñ Iô Ið Iõ �S˜$ÑÔÐà�!‚|€|Ø�|Š|˜B Ñ)Ô)ˆØ€Ks   Ã>!D  Ä AE1Å0E1c                 óÈ   — |rd}nd}|                       d¦  «        }|rCt          j        ||¦  «        d         }|                      |d¦  «         t	          | |¦  «         d S d S )Nú>Iú<Ir2   r   r/   )r   r¶  r·  r%   r¹  )rº  r»  r¼  r   r   s        r   Ú_skip_unknown_chunkré  $  sy   € Øð Øˆˆàˆà�8Š8�A‰;Œ;€Dð
 ð $ÝŒ}˜S $Ñ'Ô'¨Ô*ˆØ�Š��qÑÔÐÝ˜˜dÑ#Ô#Ð#Ð#Ð#ð$ð $r   c                 óœ  — |                       d¦  «        }|dk    rd}d}d}n:|dk    rd}d}d}n-|dk    rd}d}d	}n t          d
t          |¦  «        › d�¦  «        ‚|sIt          j        ||                       d¦  «        ¦  «        d         dz   }d }|                       d¦  «        }nú|                       d¦  «         |                       d¦  «        }|                       d¦  «        }|dk    rt          d¦  «        ‚t          j        d|                       d¦  «        ¦  «        d         }	t          j        ||                       d¦  «        ¦  «        d         dz   }t          j        d	|                       d¦  «        ¦  «        d         }|                      |	dz
  d¦  «         |dk    r t          dt          |¦  «        › d�¦  «        ‚||||fS )Nr2   ó   RIFFFrè  s   RIFXTrç  ó   RF64ú<QzFile format z; not understood. Only 'RIFF', 'RIFX', and 'RF64' supported.r   r6   ó   ds64z(Invalid RF64 file: ds64 chunk not found.r:   r/   ó   WAVEz"Not a WAV file. RIFF form type is ú.)r   rª  Úreprr¶  r·  r%   )
rº  Ústr1rÝ  r»  r¼  Ú	file_sizerß  Ústr2Ústr3Ú	ds64_sizes
             r   Ú_read_riff_chunkr÷  5  sÙ  € Ø�8Š8�A‰;Œ;€DØˆw‚€ØˆØˆØˆˆØ	�ŠˆØˆØˆØˆˆØ	�ŠˆØˆØˆØˆˆõ ð A­¨T©
¬
ð Að Að Añ Bô Bð 	Bð ð $Ý”M # s§x¢x°¡{¤{Ñ3Ô3°AÔ6¸Ñ:ˆ	ØˆØ�xŠx˜‰{Œ{ˆˆð 	�Š�‰ŒˆØ�xŠx˜‰{Œ{ˆØ�xŠx˜‰{Œ{ˆØ�7Š?ˆ?ÝÐGÑHÔHÐHÝ”M $¨¯ª°©¬Ñ4Ô4°QÔ7ˆ	Ý”M # s§x¢x°¡{¤{Ñ3Ô3°AÔ6¸Ñ:ˆ	Ý œ-¨¨c¯hªh°q©k¬kÑ:Ô:¸1Ô=ˆð 	�Š�˜R‘ Ñ#Ô#Ð#àˆw‚€ÝÐK½dÀ4¹j¼jÐKÐKÐKÑLÔLÐLà�m W¨oÐ=Ð=r   c                 ó@   — |dz  r|                       dd¦  «         d S d S )Nr0   r/   )r%   )rº  r   s     r   r¹  r¹  `  s/   € ð ˆa�xð Ø�Š��A‰Œˆˆˆðð r   c                 óR  — t          | d¦  «        r| }d}nt          | d¦  «        }|                     ¦   «         x}st          |¦  «        }	 t	          |¦  «        \  }}}}d}d}	|                     ¦   «         |k     �r©|                     d¦  «        }
|
sJ|	r9t          j        d|                     ¦   «         d›d|d›d�t          d	¬
¦  «         �nWt          d¦  «        ‚t          |
¦  «        dk     rEdt          |
¦  «        › �}|r"|	r t          j        |dz   t          d	¬
¦  «         nt          |¦  «        ‚|
dk    r1d}t          ||¦  «        }|dd…         \  }}}|d         }|d         }n |
dk    rt          ||¦  «         n‰|
dk    r+d}	|st          d¦  «        ‚t          |||||||||¦	  «	        }nX|
dk    rt          ||¦  «         nA|
dv rt          ||¦  «         n,t          j        dt          d	¬
¦  «         t          ||¦  «         |                     ¦   «         |k     �°©t          | d¦  «        s|                     ¦   «          nZ|r|                     d¦  «         nB# t          | d¦  «        s|                     ¦   «          w |r|                     d¦  «         w w xY w||fS )a  
    Open a WAV file.

    Return the sample rate (in samples/sec) and data from an LPCM WAV file.

    Parameters
    ----------
    filename : string or open file handle
        Input WAV file.
    mmap : bool, optional
        Whether to read data as memory-mapped (default: False).  Not compatible
        with some bit depths; see Notes.  Only to be used on real files.

        .. versionadded:: 0.12.0

    Returns
    -------
    rate : int
        Sample rate of WAV file.
    data : numpy array
        Data read from WAV file. Data-type is determined from the file;
        see Notes.  Data is 1-D for 1-channel WAV, or 2-D of shape
        (Nsamples, Nchannels) otherwise. If a file-like input without a
        C-like file descriptor (e.g., :class:`python:io.BytesIO`) is
        passed, this will not be writeable.

    Notes
    -----
    Common data types: [1]_

    =====================  ===========  ===========  =============
         WAV format            Min          Max       NumPy dtype
    =====================  ===========  ===========  =============
    32-bit floating-point  -1.0         +1.0         float32
    32-bit integer PCM     -2147483648  +2147483647  int32
    24-bit integer PCM     -2147483648  +2147483392  int32
    16-bit integer PCM     -32768       +32767       int16
    8-bit integer PCM      0            255          uint8
    =====================  ===========  ===========  =============

    WAV files can specify arbitrary bit depth, and this function supports
    reading any integer PCM depth from 1 to 64 bits.  Data is returned in the
    smallest compatible numpy int type, in left-justified format.  8-bit and
    lower is unsigned, while 9-bit and higher is signed.

    For example, 24-bit data will be stored as int32, with the MSB of the
    24-bit data stored at the MSB of the int32, and typically the least
    significant byte is 0x00.  (However, if a file actually contains data past
    its specified bit depth, those bits will be read and output, too. [2]_)

    This bit justification and sign matches WAV's native internal format, which
    allows memory mapping of WAV files that use 1, 2, 4, or 8 bytes per sample
    (so 24-bit files cannot be memory-mapped, but 32-bit can).

    IEEE float PCM in 32- or 64-bit format is supported, with or without mmap.
    Values exceeding [-1, +1] are not clipped.

    Non-linear PCM (mu-law, A-law) is not supported.

    References
    ----------
    .. [1] IBM Corporation and Microsoft Corporation, "Multimedia Programming
       Interface and Data Specifications 1.0", section "Data Format of the
       Samples", August 1991
       http://www.tactilemedia.com/info/MCI_Control_Info.html
    .. [2] Adobe Systems Incorporated, "Adobe Audition 3 User Guide", section
       "Audio file formats: 24-bit Packed Int (type 1, 20-bit)", 2007

    Examples
    --------
    >>> from os.path import dirname, join as pjoin
    >>> from scipy.io import wavfile
    >>> import scipy.io

    Get the filename for an example .wav file from the tests/data directory.

    >>> data_dir = pjoin(dirname(scipy.io.__file__), 'tests', 'data')
    >>> wav_fname = pjoin(data_dir, 'test-44100Hz-2ch-32bit-float-be.wav')

    Load the .wav file contents.

    >>> samplerate, data = wavfile.read(wav_fname)
    >>> print(f"number of channels = {data.shape[1]}")
    number of channels = 2
    >>> length = data.shape[0] / samplerate
    >>> print(f"length = {length}s")
    length = 0.01s

    Plot the waveform.

    >>> import matplotlib.pyplot as plt
    >>> import numpy as np
    >>> time = np.linspace(0., length, data.shape[0])
    >>> plt.plot(time, data[:, 0], label="Left channel")
    >>> plt.plot(time, data[:, 1], label="Right channel")
    >>> plt.legend()
    >>> plt.xlabel("Time [s]")
    >>> plt.ylabel("Amplitude")
    >>> plt.show()

    r   FÚrbr2   z%Reached EOF prematurely; finished at Údz bytes, expected z bytes from header.r0   )Ú
stacklevelzUnexpected end of file.zIncomplete chunk ID: z, ignoring it.ó   fmt Tr/   r4   r3   ó   factó   datazNo fmt chunk before datas   LIST>   ó   Fakeó   JUNKz-Chunk (non-data) not understood, skipping it.r   )ÚhasattrÚopenÚseekabler   r÷  r(   r   ÚwarningsÚwarnr   rª  r   rñ  rÈ  ré  rå  r*   r%   )ÚfilenamerÞ  rº  Úwas_seekableró  r»  rÝ  rß  Úfmt_chunk_receivedÚdata_chunk_receivedÚchunk_idÚmsgÚ	fmt_chunkr­  r¿  rÀ  rÃ  rÂ  r   s                      r   r   r   g  sN  € õL ˆx˜Ñ Ô ð #ØˆØˆˆå�8˜TÑ"Ô"ˆàŸLšL™NœNÐ*ˆLð 'Ý! #Ñ&Ô&ˆð:Ý=MÈcÑ=RÔ=RÑ:ˆ	�= '¨?Ø"ÐØ#ÐØ�hŠh‰jŒj˜9Ò$Ñ$à—x’x ‘{”{ˆHàð *Ø&ð @å”MðEÀÇÂÁ
Ä
ÐVð Eð EØ$-ÐDðEð Eð Eå&°1ð6ñ 6ô 6ð 6ñ å$Ð%>Ñ?Ô?Ð?Ý�X‘” Ò"Ð"Ø>­d°8©n¬nÐ>Ð>�à%ð *Ð*=ð *Ý”M #Ð(8Ñ"8½.Ø-.ð0ñ 0ô 0ð 0ð 0õ % S™/œ/Ð)à˜7Ò"Ð"Ø%)Ð"Ý+¨C°Ñ?Ô?�	Ø+4°Q°q°S¬>Ñ(�
˜H bØ% aœL�	Ø'¨œl��Ø˜WÒ$Ð$Ý# C¨Ñ7Ô7Ð7Ð7Ø˜WÒ$Ð$Ø&*Ð#Ø)ð AÝ$Ð%?Ñ@Ô@Ð@Ý'¨¨Z¸À9Ø(5°wÀØ(,¨oñ?ô ?��ð ˜WÒ$Ð$å# C¨Ñ7Ô7Ð7Ð7ØÐ/Ð/Ð/å# C¨Ñ7Ô7Ð7Ð7å”ÐMÝ,¸ð<ñ <ô <ð <å# C¨Ñ7Ô7Ð7ð_ �hŠh‰jŒj˜9Ò$Ñ$õb �x Ñ(Ô(ð 	Ø�IŠI‰KŒKˆKˆKØð 	ð �HŠH�Q‰KŒKˆKøøõ �x Ñ(Ô(ð 	Ø�IŠI‰KŒKˆKˆKØð 	ð �HŠH�Q‰KŒKˆKˆKð	øøøð
 ˆtˆ8€Os   ÁGI# É#?J"c           	      ó4  — t          | d¦  «        r| }nt          | d¦  «        }|}	 |j        j        }g d¢}|j        j        |vrt          d|j        › d�¦  «        ‚d}|dz  }|dz  }|d	z  }|d
z  }|dk    rt          j        }nt          j        }|j	        dk    rd}	n|j
        d         }	|j        j        dz  }
||
dz  z  |	z  }|	|
dz  z  }t          j        d||	||||
¦  «        }|dk    s|dk    s|dz  }|t          j        dt          |¦  «        ¦  «        z  }||z  }t          |¦  «        dz   dz   |j        z   }|dz
  dk    }|rÍd}|dz  }|dz  }|d	z  }|dz  }|t          j        dd¦  «        z  }|t          j        dd¦  «        z  }|t          j        d|j        ¦  «        z  }|t          j        d|j
        d         ¦  «        z  }|t          j        dd¦  «        z  }|d
z  }|t          j        dt          |¦  «        ¦  «        z  }||z  }|dk    s/|dk    s)|dz  }|t          j        dd|j
        d         ¦  «        z  }|                     |¦  «         |                     d¦  «         |                     t          j        dt#          |j        d¦  «        ¦  «        ¦  «         |j        j        dk    s |j        j        dk    r$t&          j        d k    r|                     ¦   «         }t+          ||¦  «         |                     ¦   «         }|sA|                     d¦  «         |                     t          j        d|dz
  ¦  «        ¦  «         n@|                     d!¦  «         |                     t          j        d|dz
  ¦  «        ¦  «         t          | d¦  «        s|                     ¦   «          d"S |                     d¦  «         d"S # t          | d¦  «        s|                     ¦   «          w |                     d¦  «         w xY w)#aÿ  
    Write a NumPy array as a WAV file.

    Parameters
    ----------
    filename : string or open file handle
        Output wav file.
    rate : int
        The sample rate (in samples/sec).
    data : ndarray
        A 1-D or 2-D NumPy array of either integer or float data-type.

    Notes
    -----
    * Writes a simple uncompressed WAV file.
    * To write multiple-channels, use a 2-D array of shape
      (Nsamples, Nchannels).
    * The bits-per-sample and PCM/float will be determined by the data-type.

    Common data types: [1]_

    =====================  ===========  ===========  =============
         WAV format            Min          Max       NumPy dtype
    =====================  ===========  ===========  =============
    32-bit floating-point  -1.0         +1.0         float32
    32-bit PCM             -2147483648  +2147483647  int32
    16-bit PCM             -32768       +32767       int16
    8-bit PCM              0            255          uint8
    =====================  ===========  ===========  =============

    Note that 8-bit PCM is unsigned.

    References
    ----------
    .. [1] IBM Corporation and Microsoft Corporation, "Multimedia Programming
       Interface and Data Specifications 1.0", section "Data Format of the
       Samples", August 1991
       http://www.tactilemedia.com/info/MCI_Control_Info.html

    Examples
    --------
    Create a 100Hz sine wave, sampled at 44100Hz.
    Write to 16-bit PCM, Mono.

    >>> from scipy.io.wavfile import write
    >>> import numpy as np
    >>> samplerate = 44100; fs = 100
    >>> t = np.linspace(0., 1., samplerate)
    >>> amplitude = np.iinfo(np.int16).max
    >>> data = amplitude * np.sin(2. * np.pi * fs * t)
    >>> write("example.wav", samplerate, data.astype(np.int16))

    r   Úwb)Úfloat32Úfloat64Úuint8Úint16Úint32Úint64zUnsupported data type 'ú'r   rë  s       rï  rý  rÍ  r/   r6   z<HHIIHHrÌ  Úus     rè  r2   l   ÿÿ rì  s   ÿÿÿÿrî  é   rí  r   rþ  z<IIrÿ  r±  ú=Úbigr>   N)r  r  rÎ  Úkindr¦  rª  r.   r›   r™   ÚndimrÔ  rÙ  r¶  Úpackr   Únbytesr   ÚminÚ	byteorderÚsysÚbyteswapÚ_array_tofiler(   r%   r*   )r  Úrater   rº  rÀ  ÚdkindÚallowed_dtypesÚheader_datar­  r¿  rÃ  rÁ  rÂ  Úfmt_chunk_dataÚresulting_file_sizerÝ  r   s                    r   r   r     sH  € õl ˆx˜Ñ!Ô!ð #Øˆˆå�8˜TÑ"Ô"ˆà	€BðYØ”
”ˆð>ð >ð >ˆàŒ:Œ? .Ð0Ð0ÝÐD°t´zÐDÐDÐDÑEÔEÐEàˆà�wÑˆØÐ*Ñ*ˆØ�wÑˆð 	�wÑˆØ�CŠ<ˆ<Ý$Ô/ˆJˆJå$œˆJØŒ9˜Š>ˆ>ØˆHˆHà”z !”}ˆHØ”JÔ'¨!Ñ+ˆ	Ø˜y¨A™~Ñ.¨xÑ7ÐØ )¨q¡.Ñ1ˆåœ Y°
¸HÀbØ%5°{ÀIñOô Oˆà˜’� ¨¢ à˜kÑ)ˆNà•v”{ 4­¨^Ñ)<Ô)<Ñ=Ô=Ñ=ˆØ�~Ñ%ˆõ " +Ñ.Ô.°Ñ2°QÑ6¸¼ÑDÐØ&¨Ñ*¨jÒ8ˆØð 	*ØˆKØ˜7Ñ"ˆKØÐ.Ñ.ˆKØ˜7Ñ"ˆKØ˜7Ñ"ˆKà�6œ; t¨RÑ0Ô0Ñ0ˆKà�6œ; t¨QÑ/Ô/Ñ/ˆKØ�6œ; t¨T¬[Ñ9Ô9Ñ9ˆKØ�6œ; t¨T¬Z¸¬]Ñ;Ô;Ñ;ˆKà�6œ; t¨QÑ/Ô/Ñ/ˆKØ˜7Ñ"ˆKØ�6œ; t­S°Ñ-@Ô-@ÑAÔAÑAˆKØ˜>Ñ)ˆKð ˜’� ¨¢ Ø˜7Ñ"ˆKØ�6œ; u¨a°´¸A´Ñ?Ô?Ñ?ˆKà�	Š	�+ÑÔÐð 	�	Š	�'ÑÔÐà�	Š	•&”+˜d¥C¨¬°ZÑ$@Ô$@ÑAÔAÑBÔBÐBàŒ:Ô 3Ò&Ð&¨4¬:Ô+?À3Ò+FÐ+FÝ+.¬=¸EÒ+AÐ+AØ—=’=‘?”?ˆDÝ�c˜4Ñ Ô Ð ð �xŠx‰zŒzˆØð 	1Ø�HŠH�Q‰KŒKˆKØ�IŠI•f”k $¨¨Q©Ñ/Ô/Ñ0Ô0Ð0Ð0à�HŠH�R‰LŒLˆLØ�IŠI•f”k $¨¨Q©Ñ/Ô/Ñ0Ô0Ð0õ �x Ñ)Ô)ð 	Ø�IŠI‰KŒKˆKˆKˆKà�HŠH�Q‰KŒKˆKˆKˆKøõ �x Ñ)Ô)ð 	Ø�IŠI‰KŒKˆKˆKà�HŠH�Q‰KŒKˆKˆKøøøs   §M7O Ï<Pc                 ó„   — |                       |                     ¦   «                              d¦  «        j        ¦  «         d S )NÚb)r   ÚravelrÛ  r   )rº  r   s     r   r#  r#  ®  s3   € à‡I‚Iˆd�jŠj‰lŒl×Ò Ñ$Ô$Ô)Ñ*Ô*Ð*Ð*Ð*r   )FN)F)r   r!   r   r!  ÚnumpyrÕ  r¶  r  Úenumr   Ú__all__ÚUserWarningr   r   r.   r™   r›   r¬  r¯  rÈ  rå  ré  r÷  r¹  r   r   r#  r   r   r   ú<module>r1     sÄ  ðð	ð 	ð 
€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð ðð ð €ð	ð 	ð 	ð 	ð 	�[ñ 	ô 	ð 	ð&Jð &Jð &Jð &Jð &Jñ &Jô &Jð &JðRRð Rð Rð Rð R�'ñ Rô Rð Rðj "”o {Ô'=Ð>Ð ðDð Dð DðLð Lð Lð` ?Cðbð bð bð bðJ$ð $ð $ð"(>ð (>ð (>ðVð ð ðkð kð kð kð\Vð Vð Vðr+ð +ð +ð +ð +r   