From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7489801618487539902==" MIME-Version: 1.0 From: helloway Subject: Re: [SPDK] Integrate OpenStack/Cyborg into SPDK Architecture Date: Sat, 28 Sep 2019 02:06:05 +0000 Message-ID: In-Reply-To: 82C9F782B054C94B9FC04A331649C77AAD46D4AA@FMSMSX108.amr.corp.intel.com List-ID: To: spdk@lists.01.org --===============7489801618487539902== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Paul, Thank you for your response, I have submitted a trello [0] titled =E2=80= =9CIntegrate OpenStack/Cyborg into SPDK Architecture=E2=80=9D. I am trying = to answer your questions from this trello, do I make sense? I really hope t= o receive your feedback. [0]https://trello.com/c/QfSAkLSS/121-integrate-openstack-cyborg-into-spdk-a= rchitecture = Thx, Helloway On 06/12/2018 08:16=EF=BC=8CLuse, Paul E wrote=EF= =BC=9A Hi Helloway, = I was actually just wondering what had happened with this. Looking at the = OpenStack patch it looks like it=E2=80=99s close to landing. Somewhere out = there we have a Cinder driver that=E2=80=99s also getting fairly close I be= lieve so for sure integration with OpenStack is interesting to many in the = community. = Would you be able to summarize more specifically how your patch would work = once it lands? I of course see your high level description below that some = questions that I have, I=E2=80=99m assuming others as well, include: = - what else is required to be pushed into OpenStack for this to work - is anything required in the SPDK repo for this to work - how will the necessary SPDK components be associated with the VM in quest= ion and subsequently configured = Thanks for continuing to work on this! = -Paul = From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of helloway Sent: Monday, June 11, 2018 1:35 AM To: Storage Performance Development Kit Subject: [SPDK] Integrate OpenStack/Cyborg into SPDK Architecture = Hi Jim and all, = Do you know OpenStack/Cyborg? It is OpenStack acceleration service which pr= ovides a management framework for accelerator devices (e.g. FPGA, GPU, NVMe= SSD). There is a strong demand for OpenStack to support hardware accelerat= ed devices in a dynamic model(mentioned in OpenStack Summit Vancouver 2018 = [0]). = = For this reason, we can use Cyborg to interactive with nvmf_tgt to realize = the management of the user space accelerator NVMe SSD device, which can bad= ly promote the efficiency. It is worth mentioning that the Cyborg_SPDK_Driv= er I summitted has been merged into the OpenStack version Q [1]. The driver= can report the detailed information of the device to the Cyborg agent. Whe= n user requests a vm with a user space NVMe SSD, Cyborg agent will update t= he Nova/Placement inventory on available NVMe devices. This is a complete p= rocess to describe the connection of Cyborg and SPDK. = I wonder whether you guys are interested in integrating OpenStack/Cyborg in= to SPDK architecture? Do I make sense? Please let me know what your thought= s. = [0]https://www.openstack.org/videos/vancouver-2018/optimized-hpcai-cloud-wi= th-openstack-acceleration-service-and-composable-hardware [1]https://review.openstack.org/#/c/538164/ = = Thx, Helloway --===============7489801618487539902== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWw+CjxoZWFkPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50 PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgo8L2hlYWQ+Cjxib2R5Pgo8c3R5bGU+CiAgICBm b250ewogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICB9CiAgICB1bCxvbHsKICAgICAgICBw YWRkaW5nLWxlZnQ6IDIwcHg7CiAgICAgICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlOwog ICAgfQo8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtIZWx2ZXRpY2EmcXVv dDs7IGxpbmUtaGVpZ2h0OjEuNjsiPgogICAgPGRpdj4KPGRpdj5IaSBQYXVsLDwvZGl2PjxkaXY+ PGRpdj5UaGFuayB5b3UgZm9yIHlvdXIgcmVzcG9uc2UsIEkgaGF2ZSBzdWJtaXR0ZWQgYSB0cmVs bG8gWzBdIHRpdGxlZCAmbmJzcDvigJxJbnRlZ3JhdGUgT3BlblN0YWNrL0N5Ym9yZyBpbnRvIFNQ REsgQXJjaGl0ZWN0dXJl4oCdLiBJIGFtIHRyeWluZyB0byBhbnN3ZXIgeW91ciBxdWVzdGlvbnMg ZnJvbSB0aGlzIHRyZWxsbywgZG8gSSBtYWtlIHNlbnNlPyBJIHJlYWxseSBob3BlIHRvIHJlY2Vp dmUgeW91ciBmZWVkYmFjay48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlswXTxhIGhyZWY9Imh0 dHBzOi8vdHJlbGxvLmNvbS9jL1FmU0FrTFNTLzEyMS1pbnRlZ3JhdGUtb3BlbnN0YWNrLWN5Ym9y Zy1pbnRvLXNwZGstYXJjaGl0ZWN0dXJlIiBfc3JjPSJodHRwczovL3RyZWxsby5jb20vYy9RZlNB a0xTUy8xMjEtaW50ZWdyYXRlLW9wZW5zdGFjay1jeWJvcmctaW50by1zcGRrLWFyY2hpdGVjdHVy ZSI+aHR0cHM6Ly90cmVsbG8uY29tL2MvUWZTQWtMU1MvMTIxLWludGVncmF0ZS1vcGVuc3RhY2st Y3lib3JnLWludG8tc3Bkay1hcmNoaXRlY3R1cmU8L2E+Jm5ic3A7PC9kaXY+PC9kaXY+PGRpdiBp ZD0ibnRlcy1wY21haWwtc2lnbmF0dXJlIiBzdHlsZT0iZm9udC1mYW1pbHk6JyciPjxmb250IHN0 eWxlPSJwYWRkaW5nOiAwOyBtYXJnaW46MDsiPiAgICAgICAgICAgICAgICA8L2ZvbnQ+Cgo8L2Rp dj48YnI+CjwvZGl2PjxkaXY+VGh4LDwvZGl2PjxkaXY+SGVsbG93YXk8L2Rpdj48ZGl2IGNsYXNz PSJKLXJlcGx5IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO2NvbG9yOmJsYWNrO3Bh ZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHg7Ym9yZGVyLXJhZGl1czozcHg7LW1vei1i b3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O21hcmdpbi10b3A6NDVw eDttYXJnaW4tYm90dG9tOjIwcHg7Zm9udC1mYW1pbHk6Jyc7Ij4KICAgIDxkaXYgc3R5bGU9ImZv bnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNjt3b3JkLWJyZWFrOmJyZWFrLWFsbDttYXJnaW4t bGVmdDoxMHB4O21hcmdpbi1yaWdodDoxMHB4Ij5PbiA8c3BhbiBjbGFzcz0ibWFpbC1kYXRlIj4w Ni8xMi8yMDE4IDA4OjE2PC9zcGFuPu+8jDxhIGNsYXNzPSJtYWlsLXRvIiBzdHlsZT0idGV4dC1k ZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzJhODNmMjsiIGhyZWY9Im1haWx0bzpwYXVsLmUubHVzZUBp bnRlbC5jb20iPkx1c2UsIFBhdWwgRSZsdDtwYXVsLmUubHVzZUBpbnRlbC5jb20mZ3Q7PC9hPiB3 cm90Ze+8miA8L2Rpdj4KPC9kaXY+CjxibG9ja3F1b3RlIGlkPSJudGVzLXBjbWFpbC1xdW90ZSIg c3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZzogMDsgZm9udC1zaXplOiAxNHB4OyBmb250LWZhbWls eTogJyc7Ij4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IS0tCgpfZm9udC1mYWNlCgl7Zm9udC1m YW1pbHk6SGVsdmV0aWNhOwoJcGFub3NlLTE6MiAxMSA2IDQgMiAyIDIgMiAyIDQ7fQpfZm9udC1m YWNlCgl7Zm9udC1mYW1pbHk6IkNhbWJyaWEgTWF0aCI7CglwYW5vc2UtMToyIDQgNSAzIDUgNCA2 IDMgMiA0O30KX2ZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7CglwYW5vc2UtMToyIDE1 IDUgMiAyIDIgNCAzIDIgNDt9CgpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9y bWFsCgl7bWFyZ2luOjBpbjsKCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCWZvbnQtc2l6ZToxMi4w cHQ7Cglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIixzZXJpZjt9CmE6bGluaywgc3Bhbi5N c29IeXBlcmxpbmsKCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7Cgljb2xvcjpibHVlOwoJdGV4dC1k ZWNvcmF0aW9uOnVuZGVybGluZTt9CmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dl ZAoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsKCWNvbG9yOnB1cnBsZTsKCXRleHQtZGVjb3JhdGlv bjp1bmRlcmxpbmU7fQpzcGFuLkVtYWlsU3R5bGUxNwoJe21zby1zdHlsZS10eXBlOnBlcnNvbmFs LXJlcGx5OwoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7Cgljb2xvcjojMUY0OTdE O30KLk1zb0NocERlZmF1bHQKCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKCWZvbnQtc2l6 ZToxMC4wcHQ7fQpfcGFnZSBXb3JkU2VjdGlvbjEKCXtzaXplOjguNWluIDExLjBpbjsKCW1hcmdp bjoxLjBpbiAxLjBpbiAxLjBpbiAxLjBpbjt9CmRpdi5Xb3JkU2VjdGlvbjEKCXtwYWdlOldvcmRT ZWN0aW9uMTt9Ci0tPgo8L3N0eWxlPgo8ZGl2IGNsYXNzPSJXb3JkU2VjdGlvbjEiPgo8cCBjbGFz cz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+SGkgSGVsbG93YXks PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy aWY7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0i TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVv dDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+SSB3YXMgYWN0dWFsbHkg anVzdCB3b25kZXJpbmcgd2hhdCBoYWQgaGFwcGVuZWQgd2l0aCB0aGlzLiZuYnNwOyBMb29raW5n IGF0IHRoZSBPcGVuU3RhY2sgcGF0Y2ggaXQgbG9va3MgbGlrZSBpdOKAmXMgY2xvc2UgdG8gbGFu ZGluZy4gU29tZXdoZXJlIG91dCB0aGVyZSB3ZSBoYXZlIGEKIENpbmRlciBkcml2ZXIgdGhhdOKA mXMgYWxzbyBnZXR0aW5nIGZhaXJseSBjbG9zZSBJIGJlbGlldmUgc28gZm9yIHN1cmUgaW50ZWdy YXRpb24gd2l0aCBPcGVuU3RhY2sgaXMgaW50ZXJlc3RpbmcgdG8gbWFueSBpbiB0aGUgY29tbXVu aXR5LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5z LXNlcmlmO2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPldvdWxkIHlvdSBi ZSBhYmxlIHRvIHN1bW1hcml6ZSBtb3JlIHNwZWNpZmljYWxseSBob3cgeW91ciBwYXRjaCB3b3Vs ZCB3b3JrIG9uY2UgaXQgbGFuZHM/IEkgb2YgY291cnNlIHNlZSB5b3VyIGhpZ2ggbGV2ZWwgZGVz Y3JpcHRpb24gYmVsb3cgdGhhdCBzb21lIHF1ZXN0aW9ucwogdGhhdCBJIGhhdmUsIEnigJltIGFz c3VtaW5nIG90aGVycyBhcyB3ZWxsLCBpbmNsdWRlOjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1p bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5i c3A7PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlm O2NvbG9yOiMxRjQ5N0QiPi0gd2hhdCBlbHNlIGlzIHJlcXVpcmVkIHRvIGJlIHB1c2hlZCBpbnRv IE9wZW5TdGFjayBmb3IgdGhpcyB0byB3b3JrPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFz cz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+LSBpcyBhbnl0aGlu ZyByZXF1aXJlZCBpbiB0aGUgU1BESyByZXBvIGZvciB0aGlzIHRvIHdvcms8bzpwPjwvbzpwPjwv c3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEu MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0 OTdEIj4tIGhvdyB3aWxsIHRoZSBuZWNlc3NhcnkgU1BESyBjb21wb25lbnRzIGJlIGFzc29jaWF0 ZWQgd2l0aCB0aGUgVk0gaW4gcXVlc3Rpb24gYW5kIHN1YnNlcXVlbnRseSBjb25maWd1cmVkPG86 cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48YSBuYW1lPSJfTWFpbEVu ZENvbXBvc2UiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpw Pjwvc3Bhbj48L2E+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29s b3I6IzFGNDk3RCI+VGhhbmtzIGZvciBjb250aW51aW5nIHRvIHdvcmsgb24gdGhpcyE8bzpwPjwv bzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xv cjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGli cmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj4tUGF1bDxvOnA+PC9vOnA+PC9zcGFu PjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7 Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0Qi PjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPGRpdj4KPGRpdiBzdHlsZT0iYm9yZGVyOm5v bmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAw aW4iPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBw dDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPkZyb206PC9zcGFu PjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxp YnJpJnF1b3Q7LHNhbnMtc2VyaWYiPiBTUERLIFttYWlsdG86PGEgaHJlZj0ibWFpbHRvOnNwZGst Ym91bmNlc0BsaXN0cy4wMS5vcmciPnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+XQo8Yj5P biBCZWhhbGYgT2YgPC9iPmhlbGxvd2F5PGJyPgo8Yj5TZW50OjwvYj4gTW9uZGF5LCBKdW5lIDEx LCAyMDE4IDE6MzUgQU08YnI+CjxiPlRvOjwvYj4gU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9w bWVudCBLaXQgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrQGxpc3RzLjAxLm9yZyI+c3Bka0BsaXN0 cy4wMS5vcmc8L2E+Jmd0Ozxicj4KPGI+U3ViamVjdDo8L2I+IFtTUERLXSBJbnRlZ3JhdGUgT3Bl blN0YWNrL0N5Ym9yZyBpbnRvIFNQREsgQXJjaGl0ZWN0dXJlPG86cD48L286cD48L3NwYW4+PC9w Pgo8L2Rpdj4KPC9kaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9w Pgo8ZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p bHk6JnF1b3Q7SGVsdmV0aWNhJnF1b3Q7LHNhbnMtc2VyaWYiPkhpIEppbSBhbmQgYWxsLDxvOnA+ PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtIZWx2ZXRpY2EmcXVvdDssc2Fucy1zZXJpZiI+PG86 cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdj4KPGRpdj4KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0hlbHZldGljYSZxdW90Oyxz YW5zLXNlcmlmIj5EbyB5b3Uga25vdyBPcGVuU3RhY2svQ3lib3JnPyBJdCBpcyBPcGVuU3RhY2sg YWNjZWxlcmF0aW9uIHNlcnZpY2Ugd2hpY2ggcHJvdmlkZXMgYSBtYW5hZ2VtZW50IGZyYW1ld29y ayBmb3IgYWNjZWxlcmF0b3IgZGV2aWNlcyAoZS5nLiBGUEdBLCBHUFUsIE5WTWUgU1NEKS4gVGhl cmUgaXMgYSBzdHJvbmcgZGVtYW5kIGZvciBPcGVuU3RhY2sKIHRvIHN1cHBvcnQgaGFyZHdhcmUg YWNjZWxlcmF0ZWQgZGV2aWNlcyBpbiBhIGR5bmFtaWMgbW9kZWwobWVudGlvbmVkIGluIE9wZW5T dGFjayBTdW1taXQgVmFuY291dmVyIDIwMTggWzBdKS4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48 L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1m YW1pbHk6JnF1b3Q7SGVsdmV0aWNhJnF1b3Q7LHNhbnMtc2VyaWYiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxl PSJmb250LWZhbWlseTomcXVvdDtIZWx2ZXRpY2EmcXVvdDssc2Fucy1zZXJpZiI+Rm9yIHRoaXMg cmVhc29uLCB3ZSBjYW4gdXNlIEN5Ym9yZyB0byBpbnRlcmFjdGl2ZSB3aXRoIG52bWZfdGd0IHRv IHJlYWxpemUgdGhlIG1hbmFnZW1lbnQgb2YgdGhlIHVzZXIgc3BhY2UgYWNjZWxlcmF0b3IgTlZN ZSBTU0QgZGV2aWNlLCB3aGljaCBjYW4gYmFkbHkgcHJvbW90ZSB0aGUgZWZmaWNpZW5jeS4gSXQg aXMgd29ydGgKIG1lbnRpb25pbmcgdGhhdCB0aGUgQ3lib3JnX1NQREtfRHJpdmVyIEkgc3VtbWl0 dGVkIGhhcyBiZWVuIG1lcmdlZCBpbnRvIHRoZSBPcGVuU3RhY2sgdmVyc2lvbiBRIFsxXS4gVGhl IGRyaXZlciBjYW4gcmVwb3J0IHRoZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvZiB0aGUgZGV2aWNl IHRvIHRoZSBDeWJvcmcgYWdlbnQuIFdoZW4gdXNlciByZXF1ZXN0cyBhIHZtIHdpdGggYSB1c2Vy IHNwYWNlIE5WTWUgU1NELCBDeWJvcmcgYWdlbnQgd2lsbCB1cGRhdGUKIHRoZSBOb3ZhL1BsYWNl bWVudCBpbnZlbnRvcnkgb24gYXZhaWxhYmxlIE5WTWUgZGV2aWNlcy4gVGhpcyBpcyBhIGNvbXBs ZXRlIHByb2Nlc3MgdG8gZGVzY3JpYmUgdGhlIGNvbm5lY3Rpb24gb2YgQ3lib3JnIGFuZCBTUERL LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwi PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtIZWx2ZXRpY2EmcXVvdDssc2Fucy1zZXJp ZiI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0hlbHZldGljYSZxdW90Oyxz YW5zLXNlcmlmIj5JIHdvbmRlciB3aGV0aGVyIHlvdSBndXlzIGFyZSBpbnRlcmVzdGVkIGluIGlu dGVncmF0aW5nIE9wZW5TdGFjay9DeWJvcmcgaW50byBTUERLIGFyY2hpdGVjdHVyZT8gRG8gSSBt YWtlIHNlbnNlPyBQbGVhc2UgbGV0IG1lIGtub3cgd2hhdCB5b3VyIHRob3VnaHRzLjxvOnA+PC9v OnA+PC9zcGFuPjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7SGVsdmV0aWNhJnF1b3Q7LHNhbnMtc2VyaWYi PjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29O b3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtIZWx2ZXRpY2EmcXVvdDssc2Fu cy1zZXJpZiI+WzBdPGEgaHJlZj0iaHR0cHM6Ly93d3cub3BlbnN0YWNrLm9yZy92aWRlb3MvdmFu Y291dmVyLTIwMTgvb3B0aW1pemVkLWhwY2FpLWNsb3VkLXdpdGgtb3BlbnN0YWNrLWFjY2VsZXJh dGlvbi1zZXJ2aWNlLWFuZC1jb21wb3NhYmxlLWhhcmR3YXJlIj5odHRwczovL3d3dy5vcGVuc3Rh Y2sub3JnL3ZpZGVvcy92YW5jb3V2ZXItMjAxOC9vcHRpbWl6ZWQtaHBjYWktY2xvdWQtd2l0aC1v cGVuc3RhY2stYWNjZWxlcmF0aW9uLXNlcnZpY2UtYW5kLWNvbXBvc2FibGUtaGFyZHdhcmU8L2E+ PG86cD48L286cD48L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0hlbHZldGljYSZxdW90OyxzYW5zLXNlcmlm Ij5bMV08YSBocmVmPSJodHRwczovL3Jldmlldy5vcGVuc3RhY2sub3JnLyMvYy81MzgxNjQvIj48 c3BhbiBzdHlsZT0iY29sb3I6cHVycGxlIj5odHRwczovL3Jldmlldy5vcGVuc3RhY2sub3JnLyMv Yy81MzgxNjQvPC9zcGFuPjwvYT48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2Pgo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7SGVsdmV0 aWNhJnF1b3Q7LHNhbnMtc2VyaWYiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+ CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVv dDtIZWx2ZXRpY2EmcXVvdDssc2Fucy1zZXJpZiI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9w Pgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt aWx5OiZxdW90O0hlbHZldGljYSZxdW90OyxzYW5zLXNlcmlmIj5UaHgsPG86cD48L286cD48L3Nw YW4+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZv bnQtZmFtaWx5OiZxdW90O0hlbHZldGljYSZxdW90OyxzYW5zLXNlcmlmIj5IZWxsb3dheTxvOnA+ PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Jsb2NrcXVvdGU+PHN0eWxl IHR5cGU9InRleHQvY3NzIj4KICAgICAgICBhI250ZXMtcGNtYWlsLXNpZ25hdHVyZS1kZWZhdWx0 OmhvdmVyIHsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgICAg ICAgIGNvbG9yOiAjMzU5M2RiOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAg fQogICAgPC9zdHlsZT48IS0t77+9LS0+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4= --===============7489801618487539902==--