From vlaero at yahoo.com.au Mon Dec 15 06:37:26 2014 Content-Type: multipart/mixed; boundary="===============1692610705587400432==" MIME-Version: 1.0 From: Paul Jansen To: users at ovirt.org Subject: Re: [ovirt-users] storage offload capability Date: Mon, 15 Dec 2014 11:37:24 +0000 Message-ID: <1885607432.201949.1418643444273.JavaMail.yahoo@jws10632.mail.bf1.yahoo.com> In-Reply-To: 548B0DCE.4030600@redhat.com --===============1692610705587400432== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_201948_1189109289.1418643444268 Content-Type: text/plain; charset=3DUTF-8 Content-Transfer-Encoding: quoted-printable Thanks Itamar.I heard the other day that NFS v4.2 is supposed to contain se= =3D rver side copy, so it's possible that we might see this kind of support in = =3D one of more storage domain available to ovirt at some stage perhaps next ye= =3D ar (in Fedora at least).Is this something that Gluster will also likely pro= =3D vide in a subsequent release once we have proper gfapi support? I'd be interested to hear if others on the list are clamouring for server s= =3D ide offload support in some form. From: Itamar Heim To: Paul Jansen ; users=3D20 Sent: Saturday, 13 December 2014, 2:16 Subject: Re: [ovirt-users] storage offload capability =3D20 On 11/13/2014 06:09 AM, Paul Jansen wrote: > I have an ovirt 3.5 cluster set up with three el7 hosts.=3DC2=3DA0 Storag= e is > provided by two Fedora 20 machines and the connection is via multipath > iscsi. > The performance is quite good.=3DC2=3DA0 The Fedora 20 iscsi targets are = usin=3D g > the 'target' (ie: lio) framework, which support the various t.10 scsi > offloads.=3DC2=3DA0 Vmware supports a subset of these called VAAI and Mic= roso=3D ft > has a subset called ODX. > Cloning is one if the t.10 extensions that the lio target framework > supports. > I just tried cloning a vm and noticed that during the process there is a > lof of traffic over the iscsi interfaces on the Storage Pool Manager > host and the iscsi target machine. > With proper support for t.10 cloning I shoudn't see any traffic on the > isci links (or very minimal traffic) > Is there some way to enable the storage offload functionality in Ovirt? > If not, is this on the VDSM roadmap?=3DC2=3DA0 If support were worked in = this > should be able to be applied to FCP connections as well.=3DC2=3DA0 The li= o ta=3D rget > supports these offloads when acting as a Fiber Channel target also. > > I've asked this sometime back but there hasn't been much in the way of > discussion on this users list or the devel list about this feature. > yes, on the roadmap, tbd yet on when. netapp did a plugin enabling this=3D20 for their storage array (VSC plugin) I hope the ceph integration will provide this, though that doesn't solve=3D= 20 it for other type of storage domains yet. = ------=3D_Part_201948_1189109289.1418643444268 Content-Type: text/html; charset=3DUTF-8 Content-Transfer-Encoding: quoted-printable
T= hank=3D s Itamar.
= I he=3D ard the other day that NFS v4.2 is supposed to contain server side copy, so= =3D it's possible that we might see this kind of support in one of more storag= =3D e domain available to ovirt at some stage perhaps next year (in Fedora at l= =3D east).
Is = this=3D something that Gluster will also likely provide in a subsequent release on= =3D ce we have proper gfapi support?

I'd be interested to hear if others on the list are clamouring = fo=3D r server side offload support in some form.


From: I= tama=3D r Heim
To: Paul Jans= en=3D ; users
Sent: Satu= rd=3D ay, 13 December 2014, 2:16
Subj= ec=3D t: Re: [ovirt-users] storage offload capability
On 11/13/2014 06:09 AM, Paul Jansen wrote:
=

> I have an ovirt 3.5 cluster set up with three el7 hosts.  Stor= =3D age is
> provided by two Fedora 20 machines and the = co=3D nnection is via multipath
> iscsi.
&=3D gt; The performance is quite good.  The Fedora 20 iscsi targets are us= =3D ing
> the 'target' (ie: lio) framework, which suppor= t =3D the various t.10 scsi
> offloads.  Vmware suppo= rt=3D s a subset of these called VAAI and Microsoft
> has = a =3D subset called ODX.
> Cloning is one if the t.10 exte= ns=3D ions that the lio target framework
> supports.
> I just tried cloning a vm and noticed that during the pro= ce=3D ss there is a
> lof of traffic over the iscsi interf= ac=3D es on the Storage Pool Manager
> host and the iscsi = ta=3D rget machine.
> With proper support for t.10 cloning= I=3D shoudn't see any traffic on the
> isci links (or ve= ry=3D minimal traffic)
> Is there some way to enable the = st=3D orage offload functionality in Ovirt?
> If not, is t= hi=3D s on the VDSM roadmap?  If support were worked in this
> should be able to be applied to FCP connections as well.  The = =3D lio target
> supports these offloads when acting as = a =3D Fiber Channel target also.
>
>= ; I'=3D ve asked this sometime back but there hasn't been much in the way of
> discussion on this users list or the devel list about th= is=3D feature.

>

yes, on the roadmap, tbd yet on when. netapp did a plugin enabling this for their storage array (VSC plugin)
I h=3D ope the ceph integration will provide this, though that doesn't solve
it for other type of storage domains yet.



=3D
------=3D_Part_201948_1189109289.1418643444268-- --===============1692610705587400432== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzIwMTk0OF8xMTg5MTA5Mjg5LjE0MTg2NDM0NDQyNjgKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1 b3RlZC1wcmludGFibGUKClRoYW5rcyBJdGFtYXIuSSBoZWFyZCB0aGUgb3RoZXIgZGF5IHRoYXQg TkZTIHY0LjIgaXMgc3VwcG9zZWQgdG8gY29udGFpbiBzZT0KcnZlciBzaWRlIGNvcHksIHNvIGl0 J3MgcG9zc2libGUgdGhhdCB3ZSBtaWdodCBzZWUgdGhpcyBraW5kIG9mIHN1cHBvcnQgaW4gPQpv bmUgb2YgbW9yZSBzdG9yYWdlIGRvbWFpbiBhdmFpbGFibGUgdG8gb3ZpcnQgYXQgc29tZSBzdGFn ZSBwZXJoYXBzIG5leHQgeWU9CmFyIChpbiBGZWRvcmEgYXQgbGVhc3QpLklzIHRoaXMgc29tZXRo aW5nIHRoYXQgR2x1c3RlciB3aWxsIGFsc28gbGlrZWx5IHBybz0KdmlkZSBpbiBhIHN1YnNlcXVl bnQgcmVsZWFzZSBvbmNlIHdlIGhhdmUgcHJvcGVyIGdmYXBpIHN1cHBvcnQ/CkknZCBiZSBpbnRl cmVzdGVkIHRvIGhlYXIgaWYgb3RoZXJzIG9uIHRoZSBsaXN0IGFyZSBjbGFtb3VyaW5nIGZvciBz ZXJ2ZXIgcz0KaWRlIG9mZmxvYWQgc3VwcG9ydCBpbiBzb21lIGZvcm0uCgogICAgICBGcm9tOiBJ dGFtYXIgSGVpbQogVG86IFBhdWwgSmFuc2VuIDsgdXNlcnM9MjAKIFNlbnQ6IFNhdHVyZGF5LCAx MyBEZWNlbWJlciAyMDE0LCAyOjE2CiBTdWJqZWN0OiBSZTogW292aXJ0LXVzZXJzXSBzdG9yYWdl IG9mZmxvYWQgY2FwYWJpbGl0eQogID0yMApPbiAxMS8xMy8yMDE0IDA2OjA5IEFNLCBQYXVsIEph bnNlbiB3cm90ZToKCgo+IEkgaGF2ZSBhbiBvdmlydCAzLjUgY2x1c3RlciBzZXQgdXAgd2l0aCB0 aHJlZSBlbDcgaG9zdHMuPUMyPUEwIFN0b3JhZ2UgaXMKPiBwcm92aWRlZCBieSB0d28gRmVkb3Jh IDIwIG1hY2hpbmVzIGFuZCB0aGUgY29ubmVjdGlvbiBpcyB2aWEgbXVsdGlwYXRoCj4gaXNjc2ku Cj4gVGhlIHBlcmZvcm1hbmNlIGlzIHF1aXRlIGdvb2QuPUMyPUEwIFRoZSBGZWRvcmEgMjAgaXNj c2kgdGFyZ2V0cyBhcmUgdXNpbj0KZwo+IHRoZSAndGFyZ2V0JyAoaWU6IGxpbykgZnJhbWV3b3Jr LCB3aGljaCBzdXBwb3J0IHRoZSB2YXJpb3VzIHQuMTAgc2NzaQo+IG9mZmxvYWRzLj1DMj1BMCBW bXdhcmUgc3VwcG9ydHMgYSBzdWJzZXQgb2YgdGhlc2UgY2FsbGVkIFZBQUkgYW5kIE1pY3Jvc289 CmZ0Cj4gaGFzIGEgc3Vic2V0IGNhbGxlZCBPRFguCj4gQ2xvbmluZyBpcyBvbmUgaWYgdGhlIHQu MTAgZXh0ZW5zaW9ucyB0aGF0IHRoZSBsaW8gdGFyZ2V0IGZyYW1ld29yawo+IHN1cHBvcnRzLgo+ IEkganVzdCB0cmllZCBjbG9uaW5nIGEgdm0gYW5kIG5vdGljZWQgdGhhdCBkdXJpbmcgdGhlIHBy b2Nlc3MgdGhlcmUgaXMgYQo+IGxvZiBvZiB0cmFmZmljIG92ZXIgdGhlIGlzY3NpIGludGVyZmFj ZXMgb24gdGhlIFN0b3JhZ2UgUG9vbCBNYW5hZ2VyCj4gaG9zdCBhbmQgdGhlIGlzY3NpIHRhcmdl dCBtYWNoaW5lLgo+IFdpdGggcHJvcGVyIHN1cHBvcnQgZm9yIHQuMTAgY2xvbmluZyBJIHNob3Vk bid0IHNlZSBhbnkgdHJhZmZpYyBvbiB0aGUKPiBpc2NpIGxpbmtzIChvciB2ZXJ5IG1pbmltYWwg dHJhZmZpYykKPiBJcyB0aGVyZSBzb21lIHdheSB0byBlbmFibGUgdGhlIHN0b3JhZ2Ugb2ZmbG9h ZCBmdW5jdGlvbmFsaXR5IGluIE92aXJ0Pwo+IElmIG5vdCwgaXMgdGhpcyBvbiB0aGUgVkRTTSBy b2FkbWFwPz1DMj1BMCBJZiBzdXBwb3J0IHdlcmUgd29ya2VkIGluIHRoaXMKPiBzaG91bGQgYmUg YWJsZSB0byBiZSBhcHBsaWVkIHRvIEZDUCBjb25uZWN0aW9ucyBhcyB3ZWxsLj1DMj1BMCBUaGUg bGlvIHRhPQpyZ2V0Cj4gc3VwcG9ydHMgdGhlc2Ugb2ZmbG9hZHMgd2hlbiBhY3RpbmcgYXMgYSBG aWJlciBDaGFubmVsIHRhcmdldCBhbHNvLgo+Cj4gSSd2ZSBhc2tlZCB0aGlzIHNvbWV0aW1lIGJh Y2sgYnV0IHRoZXJlIGhhc24ndCBiZWVuIG11Y2ggaW4gdGhlIHdheSBvZgo+IGRpc2N1c3Npb24g b24gdGhpcyB1c2VycyBsaXN0IG9yIHRoZSBkZXZlbCBsaXN0IGFib3V0IHRoaXMgZmVhdHVyZS4K PgoKeWVzLCBvbiB0aGUgcm9hZG1hcCwgdGJkIHlldCBvbiB3aGVuLiBuZXRhcHAgZGlkIGEgcGx1 Z2luIGVuYWJsaW5nIHRoaXM9MjAKZm9yIHRoZWlyIHN0b3JhZ2UgYXJyYXkgKFZTQyBwbHVnaW4p CkkgaG9wZSB0aGUgY2VwaCBpbnRlZ3JhdGlvbiB3aWxsIHByb3ZpZGUgdGhpcywgdGhvdWdoIHRo YXQgZG9lc24ndCBzb2x2ZT0yMAppdCBmb3Igb3RoZXIgdHlwZSBvZiBzdG9yYWdlIGRvbWFpbnMg eWV0LgoKCgogIAotLS0tLS09X1BhcnRfMjAxOTQ4XzExODkxMDkyODkuMTQxODY0MzQ0NDI2OApD b250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCgo8aHRtbD48Ym9keT48ZGl2IHN0eWxlPTNEImNvbG9y OiMwMDA7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgZm9udC1mYW1pbHk6SGU9Cmx2ZXRpY2FOZXVl LCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBBcmlhbCwgTHVjaWRhIEdyYW5kZSwgU2Fucy1T ZXJpZjtmbz0KbnQtc2l6ZToxMnB4Ij48ZGl2IGRpcj0zRCJsdHIiIGlkPTNEInl1aV8zXzE2XzBf MV8xNDE4NjQzMTI3OTkyXzI2NjUiPlRoYW5rPQpzIEl0YW1hci48L2Rpdj48ZGl2IGlkPTNEInl1 aV8zXzE2XzBfMV8xNDE4NjQzMTI3OTkyXzI3MDEiIGRpcj0zRCJsdHIiPkkgaGU9CmFyZCB0aGUg b3RoZXIgZGF5IHRoYXQgTkZTIHY0LjIgaXMgc3VwcG9zZWQgdG8gY29udGFpbiBzZXJ2ZXIgc2lk ZSBjb3B5LCBzbz0KIGl0J3MgcG9zc2libGUgdGhhdCB3ZSBtaWdodCBzZWUgdGhpcyBraW5kIG9m IHN1cHBvcnQgaW4gb25lIG9mIG1vcmUgc3RvcmFnPQplIGRvbWFpbiBhdmFpbGFibGUgdG8gb3Zp cnQgYXQgc29tZSBzdGFnZSBwZXJoYXBzIG5leHQgeWVhciAoaW4gRmVkb3JhIGF0IGw9CmVhc3Qp LjwvZGl2PjxkaXYgaWQ9M0QieXVpXzNfMTZfMF8xXzE0MTg2NDMxMjc5OTJfMjcwMCIgZGlyPTNE Imx0ciI+SXMgdGhpcz0KIHNvbWV0aGluZyB0aGF0IEdsdXN0ZXIgd2lsbCBhbHNvIGxpa2VseSBw cm92aWRlIGluIGEgc3Vic2VxdWVudCByZWxlYXNlIG9uPQpjZSB3ZSBoYXZlIHByb3BlciBnZmFw aSBzdXBwb3J0PzwvZGl2PjxkaXYgaWQ9M0QieXVpXzNfMTZfMF8xXzE0MTg2NDMxMjc5OTI9Cl8y ODkyIiBkaXI9M0QibHRyIj48YnI+PC9kaXY+PGRpdiBpZD0zRCJ5dWlfM18xNl8wXzFfMTQxODY0 MzEyNzk5Ml8yOTAxIiBkaT0Kcj0zRCJsdHIiPkknZCBiZSBpbnRlcmVzdGVkIHRvIGhlYXIgaWYg b3RoZXJzIG9uIHRoZSBsaXN0IGFyZSBjbGFtb3VyaW5nIGZvPQpyIHNlcnZlciBzaWRlIG9mZmxv YWQgc3VwcG9ydCBpbiBzb21lIGZvcm0uPGJyPjwvZGl2PjxkaXYgaWQ9M0QieXVpXzNfMTZfMF89 CjFfMTQxODY0MzEyNzk5Ml8yNjk5Ij48YnI+ICA8L2Rpdj48ZGl2IGlkPTNEInl1aV8zXzE2XzBf MV8xNDE4NjQzMTI3OTkyXzI2MD0KMCIgc3R5bGU9M0QiZm9udC1mYW1pbHk6IEhlbHZldGljYU5l dWUsIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIEFyaWFsLCBMPQp1Y2lkYSBHcmFuZGUsIFNh bnMtU2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPiA8ZGl2IGlkPTNEInl1aV8zXzE2XzBfMV8xNDE4 NjQ9CjMxMjc5OTJfMjU5OSIgc3R5bGU9M0QiZm9udC1mYW1pbHk6IEhlbHZldGljYU5ldWUsIEhl bHZldGljYSBOZXVlLCBIZWx2ZXRpYz0KYSwgQXJpYWwsIEx1Y2lkYSBHcmFuZGUsIFNhbnMtU2Vy aWY7IGZvbnQtc2l6ZTogMTJweDsiPiA8ZGl2IGlkPTNEInl1aV8zXzE2PQpfMF8xXzE0MTg2NDMx Mjc5OTJfMjY1OSIgZGlyPTNEImx0ciI+IDxociBpZD0zRCJ5dWlfM18xNl8wXzFfMTQxODY0MzEy Nzk5Ml89CjI5MDYiIHNpemU9M0QiMSI+ICA8Zm9udCBpZD0zRCJ5dWlfM18xNl8wXzFfMTQxODY0 MzEyNzk5Ml8yNjU4IiBmYWNlPTNEIkFyaT0KYWwiIHNpemU9M0QiMiI+IDxiPjxzcGFuIHN0eWxl PTNEImZvbnQtd2VpZ2h0OmJvbGQ7Ij5Gcm9tOjwvc3Bhbj48L2I+IEl0YW1hPQpyIEhlaW08YnI+ IDxiPjxzcGFuIHN0eWxlPTNEImZvbnQtd2VpZ2h0OiBib2xkOyI+VG86PC9zcGFuPjwvYj4gUGF1 bCBKYW5zZW49CiA7IHVzZXJzIDxicj4gPGI+PHNwYW4gc3R5bGU9M0QiZm9udC13ZWlnaHQ6IGJv bGQ7Ij5TZW50Ojwvc3Bhbj48L2I+IFNhdHVyZD0KYXksIDEzIERlY2VtYmVyIDIwMTQsIDI6MTY8 YnI+IDxiPjxzcGFuIHN0eWxlPTNEImZvbnQtd2VpZ2h0OiBib2xkOyI+U3ViamVjPQp0Ojwvc3Bh bj48L2I+IFJlOiBbb3ZpcnQtdXNlcnNdIHN0b3JhZ2Ugb2ZmbG9hZCBjYXBhYmlsaXR5PGJyPiA8 L2ZvbnQ+IDwvZGk9CnY+IDxkaXYgaWQ9M0QieXVpXzNfMTZfMF8xXzE0MTg2NDMxMjc5OTJfMjU5 OCIgY2xhc3M9M0QieV9tc2dfY29udGFpbmVyIj48Yj0Kcj5PbiAxMS8xMy8yMDE0IDA2OjA5IEFN LCBQYXVsIEphbnNlbiB3cm90ZTo8ZGl2IGNsYXNzPTNEInF0ZFNlcGFyYXRlQlIiPjxiPQpyPjxi cj48L2Rpdj48ZGl2IGNsYXNzPTNEInlxdDcwMzk5MTc5NDUiIGlkPTNEInlxdGZkODgzNTYiPjxi ciBjbGVhcj0zRCJub249CmUiPiZndDsgSSBoYXZlIGFuIG92aXJ0IDMuNSBjbHVzdGVyIHNldCB1 cCB3aXRoIHRocmVlIGVsNyBob3N0cy4mbmJzcDsgU3Rvcj0KYWdlIGlzPGJyIGNsZWFyPTNEIm5v bmUiPiZndDsgcHJvdmlkZWQgYnkgdHdvIEZlZG9yYSAyMCBtYWNoaW5lcyBhbmQgdGhlIGNvPQpu bmVjdGlvbiBpcyB2aWEgbXVsdGlwYXRoPGJyIGNsZWFyPTNEIm5vbmUiPiZndDsgaXNjc2kuPGJy IGNsZWFyPTNEIm5vbmUiPiY9Cmd0OyBUaGUgcGVyZm9ybWFuY2UgaXMgcXVpdGUgZ29vZC4mbmJz cDsgVGhlIEZlZG9yYSAyMCBpc2NzaSB0YXJnZXRzIGFyZSB1cz0KaW5nPGJyIGNsZWFyPTNEIm5v bmUiPiZndDsgdGhlICd0YXJnZXQnIChpZTogbGlvKSBmcmFtZXdvcmssIHdoaWNoIHN1cHBvcnQg PQp0aGUgdmFyaW91cyB0LjEwIHNjc2k8YnIgY2xlYXI9M0Qibm9uZSI+Jmd0OyBvZmZsb2Fkcy4m bmJzcDsgVm13YXJlIHN1cHBvcnQ9CnMgYSBzdWJzZXQgb2YgdGhlc2UgY2FsbGVkIFZBQUkgYW5k IE1pY3Jvc29mdDxiciBjbGVhcj0zRCJub25lIj4mZ3Q7IGhhcyBhID0Kc3Vic2V0IGNhbGxlZCBP RFguPGJyIGNsZWFyPTNEIm5vbmUiPiZndDsgQ2xvbmluZyBpcyBvbmUgaWYgdGhlIHQuMTAgZXh0 ZW5zPQppb25zIHRoYXQgdGhlIGxpbyB0YXJnZXQgZnJhbWV3b3JrPGJyIGNsZWFyPTNEIm5vbmUi PiZndDsgc3VwcG9ydHMuPGJyIGNsZWE9CnI9M0Qibm9uZSI+Jmd0OyBJIGp1c3QgdHJpZWQgY2xv bmluZyBhIHZtIGFuZCBub3RpY2VkIHRoYXQgZHVyaW5nIHRoZSBwcm9jZT0Kc3MgdGhlcmUgaXMg YTxiciBjbGVhcj0zRCJub25lIj4mZ3Q7IGxvZiBvZiB0cmFmZmljIG92ZXIgdGhlIGlzY3NpIGlu dGVyZmFjPQplcyBvbiB0aGUgU3RvcmFnZSBQb29sIE1hbmFnZXI8YnIgY2xlYXI9M0Qibm9uZSI+ Jmd0OyBob3N0IGFuZCB0aGUgaXNjc2kgdGE9CnJnZXQgbWFjaGluZS48YnIgY2xlYXI9M0Qibm9u ZSI+Jmd0OyBXaXRoIHByb3BlciBzdXBwb3J0IGZvciB0LjEwIGNsb25pbmcgST0KIHNob3Vkbid0 IHNlZSBhbnkgdHJhZmZpYyBvbiB0aGU8YnIgY2xlYXI9M0Qibm9uZSI+Jmd0OyBpc2NpIGxpbmtz IChvciB2ZXJ5PQogbWluaW1hbCB0cmFmZmljKTxiciBjbGVhcj0zRCJub25lIj4mZ3Q7IElzIHRo ZXJlIHNvbWUgd2F5IHRvIGVuYWJsZSB0aGUgc3Q9Cm9yYWdlIG9mZmxvYWQgZnVuY3Rpb25hbGl0 eSBpbiBPdmlydD88YnIgY2xlYXI9M0Qibm9uZSI+Jmd0OyBJZiBub3QsIGlzIHRoaT0KcyBvbiB0 aGUgVkRTTSByb2FkbWFwPyZuYnNwOyBJZiBzdXBwb3J0IHdlcmUgd29ya2VkIGluIHRoaXM8YnIg Y2xlYXI9M0Qibm9uPQplIj4mZ3Q7IHNob3VsZCBiZSBhYmxlIHRvIGJlIGFwcGxpZWQgdG8gRkNQ IGNvbm5lY3Rpb25zIGFzIHdlbGwuJm5ic3A7IFRoZSA9CmxpbyB0YXJnZXQ8YnIgY2xlYXI9M0Qi bm9uZSI+Jmd0OyBzdXBwb3J0cyB0aGVzZSBvZmZsb2FkcyB3aGVuIGFjdGluZyBhcyBhID0KRmli ZXIgQ2hhbm5lbCB0YXJnZXQgYWxzby48YnIgY2xlYXI9M0Qibm9uZSI+Jmd0OzxiciBjbGVhcj0z RCJub25lIj4mZ3Q7IEknPQp2ZSBhc2tlZCB0aGlzIHNvbWV0aW1lIGJhY2sgYnV0IHRoZXJlIGhh c24ndCBiZWVuIG11Y2ggaW4gdGhlIHdheSBvZjxiciBjbGU9CmFyPTNEIm5vbmUiPiZndDsgZGlz Y3Vzc2lvbiBvbiB0aGlzIHVzZXJzIGxpc3Qgb3IgdGhlIGRldmVsIGxpc3QgYWJvdXQgdGhpcz0K IGZlYXR1cmUuPC9kaXY+PGJyIGNsZWFyPTNEIm5vbmUiPiZndDs8YnIgY2xlYXI9M0Qibm9uZSI+ PGJyIGNsZWFyPTNEIm5vbmUiPQo+eWVzLCBvbiB0aGUgcm9hZG1hcCwgdGJkIHlldCBvbiB3aGVu LiBuZXRhcHAgZGlkIGEgcGx1Z2luIGVuYWJsaW5nIHRoaXMgPGI9CnIgY2xlYXI9M0Qibm9uZSI+ Zm9yIHRoZWlyIHN0b3JhZ2UgYXJyYXkgKFZTQyBwbHVnaW4pPGJyIGNsZWFyPTNEIm5vbmUiPkkg aD0Kb3BlIHRoZSBjZXBoIGludGVncmF0aW9uIHdpbGwgcHJvdmlkZSB0aGlzLCB0aG91Z2ggdGhh dCBkb2Vzbid0IHNvbHZlIDxiciBjPQpsZWFyPTNEIm5vbmUiPml0IGZvciBvdGhlciB0eXBlIG9m IHN0b3JhZ2UgZG9tYWlucyB5ZXQuPGRpdiBjbGFzcz0zRCJ5cXQ3MDM9Cjk5MTc5NDUiIGlkPTNE InlxdGZkMDc0MDkiPjxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+PC9kaXY+ PGJyPj0KPGJyPjwvZGl2PiA8L2Rpdj4gPC9kaXY+ICA8L2Rpdj48L2JvZHk+PC9odG1sPgotLS0t LS09X1BhcnRfMjAxOTQ4XzExODkxMDkyODkuMTQxODY0MzQ0NDI2OC0tCg== --===============1692610705587400432==--