рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
рд╣рд╛рдБ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рднреА рдЗрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдкреНрд▓рдВрдХ рд╣реИ
http://plnkr.co/edit/cwuwBN?p=preview
рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред
рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (google-map-info-window.ts):
// рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╢реАрд░реНрд╖ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ, рдиреАрдЪреЗ infoWindowId = 0; (рдкрдВрдХреНрддрд┐ 7)
рдЬрд╛рдирдХрд╛рд░реА рджреЗрдВ
open (): рд╡рд╛рджрд╛
рдЕрдЧрд░ (infoWindowLastContext! == null) {
this._infoWindowManager.close (infoWindowLastContext)
}
infoWindowLastContext = this;
return this._infoWindowManager.open(this);
}
рдореИрдВ рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рд╣реВрдБ рдХреА рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА...
рдореЗрд░рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗрд╡рд▓ рд╕рдорд╛рдзрд╛рди:
<sebm-google-map #gm [latitude]="lat" [longitude]="lng" [zoom]="zoom" [scrollwheel]="false" [styles]="mapStyles">
<sebm-google-map-marker *ngFor="let place of places"
[latitude]="place.point.lat"
[longitude]="place.point.lng"
[label]="place.name[0]"
(markerClick)="gm.lastOpen?.close(); gm.lastOpen = infoWindow">
<sebm-google-map-info-window #infoWindow>
<strong>{{place.name}}</strong>
</sebm-google-map-info-window>
</sebm-google-map-marker>
@soyersoyer @lazarljubenovic
<agm-map #gm [latitude]="lat" [longitude]="lng" [zoom]="zoom" [scrollwheel]="false" [styles]="mapStyles">
<sebm-google-map-marker *ngFor="let place of places"
[latitude]="place.point.lat"
[longitude]="place.point.lng"
[label]="place.name[0]"
(markerClick)="gm.lastOpen?.close(); gm.lastOpen = infoWindow">
<agm-info-window #infoWindow>
<strong>{{place.name}}</strong>
</agm-info-window>
</agm-marker>
рдирдП 1.0.0-beta.0 рдХреЗ рд╕рд╛рде - рдЧреНрд░реАрди-рдЬрд╝реЗрдмрд░рд╛ рдПрдУрдЯреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ:
рд╕рдВрдкрддреНрддрд┐ 'lastOpen' 'AgmMap' рдкреНрд░рдХрд╛рд░ рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ
рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рдорд╣рд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореЗрд░рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдХреНрд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
(markerClick)="gm.lastOpen?.close(); gm.lastOpen = infoWindow; markerClicked(m);"
рдирдорд╕реНрддреЗ,
@ рдорд╛рд░реНрдЯрд┐рди-рдмреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рднреА, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: /
рдХреЛрдИ рдорджрдж ?
@ рдорд╛рд░реНрдЯрд┐рди-рдмреА рдзрдиреНрдпрд╡рд╛рдж рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдвреЗрд░ред рдПрдХ рдЗрд▓рд╛рдЬ рдХрд░рддрд╛ рд╣реИ!
@ рдорд╛рд░реНрдЯрд┐рди-рдмреА рдирд╛рдЗрд╕ thx!
рдореБрдЭ рдкрд░ #infoWindow
<agm-info-window>
рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЧрдПред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЖрдкрдиреЗ рднреА рдпрд╣реА рдЧрд▓рддреА рдХреА рд╣реЛ?
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ OpenIW (рдбреЗрдЯрд╛ = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд) {
рдЕрдЧрд░ (рдпрд╣ред IW) {
this.IW.close ();
}
this.IW = data;
}
@ рдорд╛рд░реНрдЯрд┐рди-рдмреА рдЗрд╕реЗ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ((рдорд╛рд░реНрдХрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ) = "gm.lastOpen? .Close (); gm.lastOpen = infoWindow; рдорд╛рд░реНрдХрд░ рдХреНрд▓рд┐рдХрдб (рдПрдо);") рдПрдЧреНрдо-рдорд╛рд░реНрдХрд░ рдХреГрдкрдпрд╛ .ts рдХреЛрдб рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрд╣рд╛рдБ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ @menakav :
.ts рдлрд╝рд╛рдЗрд▓:
`
рдорд╛рд░реНрдХрд░рдХреНрд▓рд╛рдЗрдб
рдЕрдЧрд░ (рдпрд╣ред
рд╡рд╛рдкрд╕реА;
if(this.infoWindowOpened !== null)
{
this.infoWindowOpened.close();
}
this.infoWindowOpened = infoWindow;
}
in .html file:
(рдорд╛рд░реНрдХрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ) = "gm.lastOpen? .Close (); gm.lastOpen = infoWindow; рдорд╛рд░реНрдХрд░рдХреНрд▓рд┐рдкреНрдб (рдПрдо);" `
@menakav рдЖрдкрдХрд╛ рдХреЛрдб рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
:(
рдореИрдВрдиреЗ рдЗрд╕ рдордВрдЪ рдХреЗ рд╕рднреА рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣рд╛рдБ рдкреНрд░рд╛рдкреНрдд infoWindow
рд╣реИ:
clickedMarker(infoWindow, index: number) {
...
}
infoWindow
рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рднреА рдЕрдВрдХ рд╣реЛред рд╣рдореЗрд╢рд╛ рдореИрдВрдиреЗ _id = 0 рдХреЗ рд╕рд╛рде infoWindow
рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред
рдкреИрд░рд╛рдореАрдЯрд░ index
рдХреНрд▓рд┐рдХ рдХрд┐рдП рдЧрдП рдорд╛рд░реНрдХрд░ рдХреА рд╕рд╣реА рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ ...ред
рдпрд╣ рдореЗрд░рд╛ html рд╣реИ:
<agm-marker *ngFor="let point of points; let i = index" [latitude]="point.latitude"
[longitude]="point.longitude"
[iconUrl]="iconUrl" (markerClick)="clickedMarker(infoWindow, i)">
<agm-info-window [disableAutoPan]="true" #infoWindow *ngIf="!isDetailMovil">
<div class="marker__tittle">{{point.name}}</div>
рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдЬрд╛рдирдХрд╛рд░реА рдЖ рд░рд╣реА рд╣реИ?
@soyersoyer рдХрд╛ "рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ" рд╕рдорд╛рдзрд╛рди рд╢рд╛рдирджрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдмрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ agm- рдорд╛рд░реНрдХрд░ рд╕рд░рдгреА рдХреЛ рдирдП рдорд╛рд░реНрдХрд░ рддрддреНрд╡реЛрдВ (рдЬреИрд╕реЗ ajax рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж) рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЪрд╛рдирдХ, рдкрд┐рдЫрд▓реЗ infowindows рдЕрдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рдереА?
@ agch-initial рдПрд░реЗ-рдорд╛рд░реНрдХрд░ рд╕рд░рдгреА рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рдореЗрд░реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рджреЗрдЦреЗрдВред
(markerClick)="tmp=gm.lastOpen;gm.lastOpen=infoWindow;tmp?.close();"
рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди, @lauwrentius рдЙрддреНрддрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд:
*ред html
<agm-marker
*ngFor="let marker of markers; let i = index"
(markerClick)="showInfoWindow(infoWindow, i)"
>
<agm-info-window #infoWindow></agm-info-window>
</agm-marker>
* .ts
infoWindowOpened = null;
filter() {
infoWindowOpened = null;
// redraw the map with filtered markers
}
showInfoWindow(infoWindow, index) {
if (this.infoWindowOpened === infoWindow) {
return;
}
if (this.infoWindowOpened !== null) {
this.infoWindowOpened.close();
}
this.infoWindowOpened = infoWindow;
}
@ рдЬрд┐рдореА
рдХреНрдпрд╛ рдЖрдк рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдЖрдк filter(){infoWindowOpened = null;}
рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рдмрд┐рдирд╛ '' рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред '' рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВред рдпрд╣ рдорд╛рд░реНрдХрд░ рдЖрдЗрдХрди рдРрд░реЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреАред
рдореИрдВрдиреЗ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛:
clickedMarker (рдбреЗрдЯрд╛ = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди: рдХреЛрдИ рднреА, lat: string, lng: string) {
рдЕрдЧрд░ (рдпрд╣ред IW) {
this.IW.close ();
}
const details = data._infoWindowManager._infoWindows;
рдЕрдЧрд░ (рд╡рд┐рд╡рд░рдгред рдЖрдХрд╛рд░> 0) {
рд╡рд┐рд╡рд░рдгред
if (key.hostMarker.latitude === lat && key.hostMarker.longitude === ng) {
this.IW = рдХреБрдВрдЬреА;
}
};
}
}
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ
рдзрдиреНрдпрд╡рд╛рджред
рд╢рдирд┐рд╡рд╛рд░ рдХреЛ, 28 рдЕрдкреНрд░реИрд▓, 2018 рдХреЛ 02:04 рдмрдЬреЗ, рдХреНрд░рд┐рд╕реНрдЯрд┐рдпрди рд╣рд░реНрдирд╛рдВрдбреЗрдЬрд╝ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:
рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреАред
рдореИрдВрдиреЗ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛:[рдЕрдХреНрд╖рд╛рдВрд╢] = "рдмрд┐рдВрджреБред рдЕрдХреНрд╖рд╛рдВрд╢" [рджреЗрд╢рд╛рдВрддрд░] = "рдмрд┐рдВрджреБред рджреЗрд╢рд╛рдВрддрд░"
]
point.latitude, point.longitude) ">[рдЕрдХреНрд╖рдо рдХрд░реЗрдВ] = "рд╕рд╣реА" * ngIf = "! isDetailMovil"> clickedMarker (рдбреЗрдЯрд╛ = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди: рдХреЛрдИ рднреА, lat: string, lng:
string) {if (рдпрд╣ред IW) {this.IW.close (); } рдХрд╛рд╕реНрдЯ рд╡рд┐рд╡рд░рдг =
data._infoWindowManager._infoWindows; рдЕрдЧрд░ (рд╡рд┐рд╡рд░рдгред рдЖрдХрд╛рд░> 0) {
рд╡рд┐рд╡рд░рдгред
key.hostMarker.longitude === lng) {this.IW = key; }}); }}рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ
-
рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/SebastianM/angular-google-maps/issues/797#issuecomment-385086695 ,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AgIM0TGCgyHK-snaJdIlSZSQuq0MF1Ihks5ts4DDgaJpZM4Ln0M7
ред
рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдХреЛрдгреАрдп 6 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
HTML:
<agm-marker *ngFor="let marker of markers" [latitude]="marker.latitude"[longitude]="marker.longitude" (markerClick)="markerClick(infoWindow)">
<agm-info-window #infoWindow>
</agm-info-window>
</agm-marker>
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ:
lastSelectedInfoWindow: any;
markerClick(infoWindow: any) {
if (infoWindow == this.lastSelectedInfoWindow) {
return;
}
if (this.lastSelectedInfoWindow != null) {
try{
this.lastSelectedInfoWindow.close();
} catch {} //in case if you reload your markers
}
this.lastSelectedInfoWindow = infoWindow;
}
рдПрдХ рд▓рдВрдмреЗ рд╢реЛрдз рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рдж рдЖрдЦрд┐рд░рдХрд╛рд░ рдПрдХ рдирдпрд╛ рд╕рдорд╛рдзрд╛рди рдЦреБрд▓рдиреЗ рдкрд░ рд╕реНрдкрд╖реНрдЯ рдкрд┐рдЫрд▓реЗ рдПрдЧреНрдо-рдЗрдВрдлреЛ-рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛
рдпрд╣ рдореЗрд░рд╛ рдШрдЯрдХ рд╣реИред html:
<agm-map (mapClick)="close_window($event)" [fullscreenControl]='true' [mapTypeControl]='true' [latitude]="lat" [longitude]="lng" [zoom]="13" [scrollwheel]="false">
<div *ngFor="let data of zonas">
<agm-marker (markerClick)=select_marker(infoWindow) [latitude]="data.latitud" [longitude]="data.longitud">
<agm-info-window #infoWindow >
</agm-info-window>
</agm-marker>
</div>
</agm-map>
рдФрд░ рдпрд╣ рдореЗрд░рд╛ рдШрдЯрдХ рд╣реИ:
constructor(public apiService: ApiService) {}
infoWindowOpened = null
previous_info_window = null
...
close_window(){
if (this.previous_info_window != null ) {
this.previous_info_window.close()
}
}
select_marker(data,infoWindow){
if (this.previous_info_window == null)
this.previous_info_window = infoWindow;
else{
this.infoWindowOpened = infoWindow
this.previous_info_window.close()
}
this.previous_info_window = infoWindow
}
рдЗрд╕рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ рдЦреБрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдШрдЯрдирд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдФрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛, рдпрд╣ рднреА рдПрдХ рдЦреБрд▓реА рд╣реБрдИ рдЦрд┐рдбрд╝рдХреА рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореИрдк рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рдЧ рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдмрд╛рд╣рд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж @JimmyTheNerd , рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛!
рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди, @lauwrentius рдЙрддреНрддрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд:
*ред html
<agm-marker *ngFor="let marker of markers; let i = index" (markerClick)="showInfoWindow(infoWindow, i)" > <agm-info-window #infoWindow></agm-info-window> </agm-marker>
* .ts
infoWindowOpened = null; filter() { infoWindowOpened = null; // redraw the map with filtered markers } showInfoWindow(infoWindow, index) { if (this.infoWindowOpened === infoWindow) { return; } if (this.infoWindowOpened !== null) { this.infoWindowOpened.close(); } this.infoWindowOpened = infoWindow; }
рдзрдиреНрдпрд╡рд╛рдж @JimmyTheNerd , рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реАред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдереАред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗрд╡рд▓ рд╕рдорд╛рдзрд╛рди: