рдЕрдореГрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВред рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдорд╣рд╛рди рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЛ рдХреЛрдб рдХреЗ рдХреБрдЫ рдЕрдиреНрдп рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рд╕реЗ рдкрд░реЗ рднреНрд░рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрдм рд╣рдо рдПрдХ рдЧрд╣рд░реА рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдпрд╣ рдереЛрдбрд╝рд╛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛрддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╢рд╛рдирджрд╛рд░ Access
рдПрдмреНрд╕рдЯреНрд░реИрдХреНрд╢рди рд╣реИ, рдЬреЛ Kernel
рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рдЧрд╣рд░реА рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдЪрд╛рд░ рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ:
рдпреЗ рдЪрд╛рд░ Kernel.get_and_update_in/{2,3}
(рдФрд░ Kernel.get_and_update_in/{2,3}
рдЖрдорддреМрд░ рдкрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
iex> users = %{"john" => %{age: 27, mood: ""}, "meg" => %{age: 23}}
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ... рд╕рд┐рд╡рд╛рдп рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдЬрдм рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Access
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓рдХреНрд╖реНрдп рддрддреНрд╡ рдХрд╛ рдкрде рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рдорд╛рдиреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░рд╛рд╢рд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди nil
рд╕рд╛рде рд╕рднреА рдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдпрд╛ рдЙрди рд╕рднреА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдЯрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЙрдЧ рдореЗрдВ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред
рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдереЛрдХ рдЫреВрдЯ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Iteraptor
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
TL; DR:
рд╕рдм рдХреБрдЫ Iterating рдЖрдк Elixir рдкрд░ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП Enumerable
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред рдЖрдк рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╕рдореВрд╣ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдирдХреНрд╢рд╛, рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкрддрд▓реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ... рдореЗрд░реЗ рдлреНрд░рд╛рдВрд╕реАрд╕реА рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╣рд╛рдБред рд╣рд░ рдХреЛрдИ рдЬреЛ рдЕрдореГрдд тАЛтАЛрдХреЗ рд╕рд╛рде рдХрдо рд╕реЗ рдХрдо рдЖрда рдШрдВрдЯреЗ рдмрд┐рддрд╛рддрд╛ рд╣реИ, рдЙрд╕рдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ (рдФрд░ рд╕рдВрднрд╡рддрдГ рд▓рд┐рдЦрд╛ рднреА) рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:
~w| | |> Enum.map(&String.capitalize/1) |> Enum.each(fn capitalized_name -> IO.puts "Hello, #{capitalized_name}!" end)
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдб рдЬрд▓реНрджреА рд╣реА рдмреЛрдЭрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЧрд╣рд░реА рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рдХреАрд╡рд░реНрдбреНрд╕ , рд╕реВрдЪрд┐рдпреЛрдВ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдореИрдк ред рдЗрд╕рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдиреЗрд╕реНрдЯреЗрдб рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рди рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╣реИред
рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде "рдореИрдВ рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ?" рдореБрдЭреЗ рдЕрдВрддрддрдГ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ред рдПрд▓рд┐рдХреНрдЬрд╝рд┐рд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЪрд╛рд░реЛрдВ рдУрд░ рд╕рдм рдХреБрдЫ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ, рдФрд░ рдЖрдк рд╕рдВрд░рдЪрдирд╛ рдХреА рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдиреАрдЪреЗ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рдмрджрд▓рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛрдб рдХреЗ рдХрд┐рд╕реА рднреА рд╣реБрдб рдХреЗ рддрд╣рдд, рдмреИрдЯрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдмрджрд▓рдирд╛ рд╢рд╛рдпрдж рдПрдХрдорд╛рддреНрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЬреАрд╡рди рдореЗрдВ рджреЗрдЦрд╛ рд╣реИ рдЬрдм рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдирд┐рдпрдорд┐рдд рдорд╛рдирдЪрд┐рддреНрд░ рдЕрдЧреНрд░рджреВрддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдВрджрд░ рдореВрд▓реНрдп рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛрдбрд╝рд╛, рдЬреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдордзреНрдпрд╡рд░реНрддреА рдХреБрдВрдЬреА рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░реВрдмреА рдХреЛрд░ Hash#bury
рдореЗрдВ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╣ рднреА рдЬрд╛рдирддреА рд╣реИ рдХрд┐ "рдЬрд╕реНрд╕реЛрдирд╛рдЗрдЬ" рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╡рд╛рд▓реЗ рдХреАрд╡рд░реНрдбреНрд╕ рдЬрд┐рдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЬреЛрдВрд╕ рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрджрд░ рдЙрдиреНрд╣реЗрдВ рджреЛ-рддрддреНрд╡ рдЯреНрдпреВрдкрд▓реНрд╕ рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( [foo: :bar] == [{:foo, :bar}]
), рдФрд░ рдЯреБрдкрд▓реНрд╕ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХреНрд░рдорд┐рдХ рдирд╣реАрдВ рд╣реИрдВред
рддреЛ, рдЪрд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЕрднрд┐рд╡рд╛рджрди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкреВрдВрдЫ рдФрд░ рдорд╛рдиреЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рдореИрдк / рдХреАрд╡рд░реНрдб / рд╕реВрдЪреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдорд╛рдирдХ Enum.each/2
рдФрд░ Enum.map/2
рд▓рдЧрднрдЧ рд╕рд░рд▓ рд╣реИред
рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ
Iteraptor.each/3
рд╕рд╛рдзрд╛рд░рдг рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕реНрд╡рдпрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ;Iteraptor.map/3
рдореИрдкрд┐рдВрдЧ, рдПрдХ рдореИрдк рдХреА рдЧрдИ рд╕рдВрд░рдЪрдирд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ;Iteraptor.reduce/4
reduus, рдмреИрдЯрд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ;Iteraptor.map_reduce/4
рдореИрдк рдФрд░ рд░рд┐рдбреНрдпреВрд╕, рдореИрдкрд┐рдВрдЧ рдФрд░ рдмреИрдЯрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЯрдкрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИ;Iteraptor.filter/3
рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ;Iteraptor.jsonify/2
, json рдореЗрдВ рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ: рд╕рднреА рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдХреЛ рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рддрд╛рд░реЛрдВ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;Iteraptor.Extras.bury/4
рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдордзреНрдпрд╡рд░реНрддреА рдХреБрдВрдЬреА Iteraptor.Extras.bury/4
;Iteraptor.to_flatmap/2
рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдПрдХ рдлреНрд▓реИрдЯ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдзреНрдпрд╛рди рд╕реЗ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ Iteraptor.to_flatmap/2
; рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИIteraptor.from_flatmap/3
рдПрдХ рдЧрд╣рд░реА рдиреЗрд╕реНрдЯреЗрдб рдореЗрдВ рдЕрд╡рддрд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд▓реИрдЯрдВрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ;use Iteraptor.Iteraptable
рдФрд░ Collectable
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде use Iteraptor.Iteraptable
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╕рд╛рде рд╣реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП Access
рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рд╣реИред
рд╢рдмреНрджреЛрдВ рдХреА рдХреАрдордд рдХреБрдЫ рднреА рдирд╣реАрдВ, рдХреЛрдб рджрд┐рдЦрд╛рдПрдВ!
Iteration, рдореИрдкрд┐рдВрдЧ, рд░рд┐рдбрдХреНрд╢рди
рдЧрд╣рд░рд╛ рдШреЛрдВрд╕рд▓рд╛ тЖТ рд╕рдкрд╛рдЯ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд
iex> %{a: %{b: %{c: 42, d: [nil, 42]}, e: [:f, 42]}} ...> |> Iteraptor.to_flatmap(delimiter: "_") #тЗТ %{"a_b_c" => 42, "a_b_d_0" => nil, "a_b_d_1" => 42, "a_e_0" => :f, "a_e_1" => 42} iex> %{"abc": 42, "abd0": nil, "abd1": 42, "ae0": :f, "ae1": 42} ...> |> Iteraptor.from_flatmap
рдмрди
iex> Iteraptor.jsonify([foo: [bar: [baz: :zoo], boo: 42]], values: true) %{"foo" => %{"bar" => %{"baz" => "zoo"}, "boo" => 42}} iex> Iteraptor.Extras.bury([foo: :bar], ~w|abcd|a, 42) [a: [b: [c: [d: 42]]], foo: :bar]
рд╕реНрд░реЛрдд рдЦреБрд▓реЗ рд╣реИрдВ , рдкреНрд░рд▓реЗрдЦрди рдХрд╛рдлреА рд╡рд┐рд╕реНрддреГрдд рд╣реИ , рд╣рдо рд▓рдЧрднрдЧ рджреЛ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╣реИрдВред
рдПрдХ рдЕрдЪреНрдЫрд╛ рдЪрд▓рдирд╛ рд╣реИ!