From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============9155309115620653852==" MIME-Version: 1.0 From: Harris, James R Subject: Re: [SPDK] Request for comments regarding latency measurements Date: Tue, 14 Nov 2017 22:30:14 +0000 Message-ID: <20A62003-E208-4303-9016-699ED80EBD37@intel.com> In-Reply-To: 622F4407872BA447A16110F65453358C070FB4C9A1C1@FMSAMAIL.fmsa.local List-ID: To: spdk@lists.01.org --===============9155309115620653852== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable The histogram code also buckets by TSC, with conversions done =E2=80=9Coffl= ine=E2=80=9D by the caller. -Jim From: SPDK on behalf of Paul Von-Stamwitz Reply-To: Storage Performance Development Kit Date: Tuesday, November 14, 2017 at 2:28 PM To: Storage Performance Development Kit Subject: Re: [SPDK] Request for comments regarding latency measurements I thought of that. I don=E2=80=99t like doing the conversion on every comma= nd either, but I was thinking about how we would handle the histogram and I= was assuming that the buckets would be segmented in units of time. From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Harris, James R Sent: Tuesday, November 14, 2017 2:23 PM To: Storage Performance Development Kit Subject: Re: [SPDK] Request for comments regarding latency measurements Hi Paul, Agree on handling reset and histogram stuff separately. Instead of ns could we store as tsc? I=E2=80=99d like to avoid tsc =3D> ns= conversions in the I/O path if possible. Then store the TSC rate as a sep= arate member in this structure. -Jim From: SPDK = > on behalf of Paul Von-Stamwitz > Reply-To: Storage Performance Development Kit > Date: Tuesday, November 14, 2017 at 2:16 PM To: Storage Performance Development Kit > Subject: Re: [SPDK] Request for comments regarding latency measurements I don=E2=80=99t have a problem taking out the reset, but we need to check w= ith the VTune guys since they are resetting their data at each interval as = well. At the end of the day I would like the two methods to eventually conv= erge, or at least be consistent. I=E2=80=99m thinking for now, just appending a cumulative I/O time in nanos= econds to io_stat. struct spdk_bdev_io_stat { uint64_t bytes_read; uint64_t num_read_ops; uint64_t bytes_written; uint64_t num_write_ops; uint64_t read_time_ns; uint64_t write_time_ns; }; We can address the reset issue and histogram in subsequent PRs. Is this okay? -Paul From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Walker, Benjam= in Sent: Tuesday, November 14, 2017 8:36 AM To: Storage Performance Development Kit Subject: Re: [SPDK] Request for comments regarding latency measurements The only reason to reset is to deal with overflow. But the time between ove= rflows would be very large so the user could potentially account for it on = their end. -------- Original message -------- From: "Harris, James R" > Date: 11/14/17 9:01 AM (GMT-07:00) To: Storage Performance Development Kit > Subject: Re: [SPDK] Request for comments regarding latency measurements Or we leave out the reset stats API and provide helper functions on the cli= ent side (in Python) to diff results from two calls to spdk_bdev_get_io_sta= t(). From: SPDK = > on behalf of Paul E Luse > Reply-To: Storage Performance Development Kit > Date: Tuesday, November 14, 2017 at 7:50 AM To: Storage Performance Development Kit > Subject: Re: [SPDK] Request for comments regarding latency measurements Or maybe as an initial separate patch remove the auto-reset and add a new A= PI to reset stats=E2=80=A6. From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Harris, James R Sent: Tuesday, November 14, 2017 8:43 AM To: Storage Performance Development Kit > Subject: Re: [SPDK] Request for comments regarding latency measurements Agreed - #2 is the way to go. While we=E2=80=99re on the topic - should we be resetting the stats when sp= dk_bdev_get_io_stat() is called? This eliminates the ability for two separ= ate applications to monitor stats in parallel =E2=80=93 or even a separate = application plus some future yet-to-be-written internal load-balancing moni= tor. I=E2=80=99m thinking that bdev should just keep the running total and= let the caller own tracking differences from the last time it called spdk_= bdev_get_io_stat(). -Jim From: SPDK = > on behalf of Nathan Marushak > Reply-To: Storage Performance Development Kit > Date: Tuesday, November 14, 2017 at 7:29 AM To: Storage Performance Development Kit > Subject: Re: [SPDK] Request for comments regarding latency measurements So, not being the technical expert so to speak =E2=98=BA, please take this = with a grain of salt. Agree with option #2. Seems like this would allow for= keeping stats across the different device types e.g. NVMe, NVML, NVMe-oF (= although that has a transport within NVMe, so it might be covered for eithe= r option). From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Luse, Paul E Sent: Tuesday, November 14, 2017 7:57 AM To: Storage Performance Development Kit > Subject: Re: [SPDK] Request for comments regarding latency measurements FWIW option 2 sounds like the most appropriate to me=E2=80=A6 Thx Paul From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Paul Von-Stamw= itz Sent: Monday, November 13, 2017 7:29 PM To: spdk(a)lists.01.org Subject: [SPDK] Request for comments regarding latency measurements Background: Bdev.c currently maintains a count of reads/writes/bytes_read/bytes_written= in channel->stat. This information is retrieved (and reset) via spdk_bdev_= get_io_stat. Proposal: Add latency information to channel->stat and enable the option to provide a= histogram. We can measure the latency of each IO and keep a running total on a read/wr= ite basis. We can also use the measured latency to keep a running count of = reads/writes in their associated histogram =E2=80=9Cbuckets=E2=80=9D. The question is, how do we measure latency? Option 1: Measure latency at the NVMe tracker . Currently, we already timestamp every command placed on the tracker if the = abort timeout callback is registered. When we remove a completed IO from th= e tracker, we can timestamp it again and calculate the latency. There are several issues here that need to be considered. We need to get the latency information back up to the bdev layer, most like= ly through a callback argument, but this would require a change the NVMe AP= I. If the bdev breaks down a request into smaller IOs, it can add up the la= tencies of the child IOs for io_stat and histogram purposes. Also, this method does not take into account any latency added by the spdk = bdev/nvme layers (except the poller.) If a request was queued before being = placed on the tracker, then the time it was queued is not factored into the= latency calculation. Option 2: Measure latency at the bdev layer. We can timestamp at submit and again at completion. This would keep all io_= stat information local to bdev and would take into account the overhead of = most queued operations. Any applications written directly to the NVMe layer= would have to calculate their own latencies, but that is currently true fo= r all io_stats. I=E2=80=99m sure that there are other issues I am missing, but I would appr= eciate any comments on how best to move forward on this. Thanks, Paul --===============9155309115620653852== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4 bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiB4bWxuczptPSJo dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJo dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVp dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1l dGEgbmFtZT0iVGl0bGUiIGNvbnRlbnQ9IiI+DQo8bWV0YSBuYW1lPSJLZXl3b3JkcyIgY29udGVu dD0iIj4NCjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUg KGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxlPjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8N CkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsNCglwYW5vc2UtMToyIDcg MyA5IDIgMiA1IDIgNCA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6V2luZ2RpbmdzOw0K CXBhbm9zZS0xOjUgMCAwIDAgMCAwIDAgMCAwIDA7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWls eToiQ2FtYnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0O30NCkBmb250 LWZhY2UNCgl7Zm9udC1mYW1pbHk6RGVuZ1hpYW47DQoJcGFub3NlLTE6MiAxIDYgMCAzIDEgMSAx IDEgMTt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7DQoJcGFub3NlLTE6MiAx NSA1IDIgMiAyIDQgMyAyIDQ7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseToiSW50ZWwgQ2xl YXIiOw0KCXBhbm9zZS0xOjIgMTEgNiA0IDIgMiAzIDIgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9u dC1mYW1pbHk6VGFob21hOw0KCXBhbm9zZS0xOjIgMTEgNiA0IDMgNSA0IDQgMiA0O30NCi8qIFN0 eWxlIERlZmluaXRpb25zICovDQpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9y bWFsDQoJe21hcmdpbjowaW47DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCWZvbnQtc2l6ZTox MS4wcHQ7DQoJZm9udC1mYW1pbHk6Q2FsaWJyaTt9DQphOmxpbmssIHNwYW4uTXNvSHlwZXJsaW5r DQoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsNCgljb2xvcjpibHVlOw0KCXRleHQtZGVjb3JhdGlv bjp1bmRlcmxpbmU7fQ0KYTp2aXNpdGVkLCBzcGFuLk1zb0h5cGVybGlua0ZvbGxvd2VkDQoJe21z by1zdHlsZS1wcmlvcml0eTo5OTsNCgljb2xvcjpwdXJwbGU7DQoJdGV4dC1kZWNvcmF0aW9uOnVu ZGVybGluZTt9DQpwcmUNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCW1zby1zdHlsZS1saW5r OiJIVE1MIFByZWZvcm1hdHRlZCBDaGFyIjsNCgltYXJnaW46MGluOw0KCW1hcmdpbi1ib3R0b206 LjAwMDFwdDsNCglmb250LXNpemU6MTAuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7 fQ0KcC5Nc29BY2V0YXRlLCBsaS5Nc29BY2V0YXRlLCBkaXYuTXNvQWNldGF0ZQ0KCXttc28tc3R5 bGUtcHJpb3JpdHk6OTk7DQoJbXNvLXN0eWxlLWxpbms6IkJhbGxvb24gVGV4dCBDaGFyIjsNCglt YXJnaW46MGluOw0KCW1hcmdpbi1ib3R0b206LjAwMDFwdDsNCglmb250LXNpemU6OC4wcHQ7DQoJ Zm9udC1mYW1pbHk6VGFob21hO30NCnAuTXNvTGlzdFBhcmFncmFwaCwgbGkuTXNvTGlzdFBhcmFn cmFwaCwgZGl2Lk1zb0xpc3RQYXJhZ3JhcGgNCgl7bXNvLXN0eWxlLXByaW9yaXR5OjM0Ow0KCW1h cmdpbi10b3A6MGluOw0KCW1hcmdpbi1yaWdodDowaW47DQoJbWFyZ2luLWJvdHRvbTowaW47DQoJ bWFyZ2luLWxlZnQ6LjVpbjsNCgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJZm9udC1zaXplOjEx LjBwdDsNCglmb250LWZhbWlseTpDYWxpYnJpO30NCnNwYW4uSFRNTFByZWZvcm1hdHRlZENoYXIN Cgl7bXNvLXN0eWxlLW5hbWU6IkhUTUwgUHJlZm9ybWF0dGVkIENoYXIiOw0KCW1zby1zdHlsZS1w cmlvcml0eTo5OTsNCgltc28tc3R5bGUtbGluazoiSFRNTCBQcmVmb3JtYXR0ZWQiOw0KCWZvbnQt ZmFtaWx5OiJDb3VyaWVyIE5ldyI7fQ0Kc3Bhbi5CYWxsb29uVGV4dENoYXINCgl7bXNvLXN0eWxl LW5hbWU6IkJhbGxvb24gVGV4dCBDaGFyIjsNCgltc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJbXNv LXN0eWxlLWxpbms6IkJhbGxvb24gVGV4dCI7DQoJZm9udC1mYW1pbHk6VGFob21hO30NCnAubXNv Y2hwZGVmYXVsdCwgbGkubXNvY2hwZGVmYXVsdCwgZGl2Lm1zb2NocGRlZmF1bHQNCgl7bXNvLXN0 eWxlLW5hbWU6bXNvY2hwZGVmYXVsdDsNCgltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsNCgltYXJn aW4tcmlnaHQ6MGluOw0KCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOw0KCW1hcmdpbi1sZWZ0 OjBpbjsNCglmb250LXNpemU6MTAuMHB0Ow0KCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4i O30NCnNwYW4uZW1haWxzdHlsZTE4DQoJe21zby1zdHlsZS1uYW1lOmVtYWlsc3R5bGUxODsNCglm b250LWZhbWlseTpDYWxpYnJpOw0KCWNvbG9yOndpbmRvd3RleHQ7fQ0Kc3Bhbi5lbWFpbHN0eWxl MTkNCgl7bXNvLXN0eWxlLW5hbWU6ZW1haWxzdHlsZTE5Ow0KCWZvbnQtZmFtaWx5OkNhbGlicmk7 DQoJY29sb3I6IzFGNDk3RDt9DQpzcGFuLmVtYWlsc3R5bGUyMA0KCXttc28tc3R5bGUtbmFtZTpl bWFpbHN0eWxlMjA7DQoJZm9udC1mYW1pbHk6IkludGVsIENsZWFyIjsNCgljb2xvcjojOTkwMDAw Ow0KCWZvbnQtd2VpZ2h0Om5vcm1hbDsNCglmb250LXN0eWxlOm5vcm1hbDsNCgl0ZXh0LWRlY29y YXRpb246bm9uZSBub25lO30NCnNwYW4uZW1haWxzdHlsZTIxDQoJe21zby1zdHlsZS1uYW1lOmVt YWlsc3R5bGUyMTsNCglmb250LWZhbWlseTpDYWxpYnJpOw0KCWNvbG9yOndpbmRvd3RleHQ7fQ0K c3Bhbi5lbWFpbHN0eWxlMjINCgl7bXNvLXN0eWxlLW5hbWU6ZW1haWxzdHlsZTIyOw0KCWZvbnQt ZmFtaWx5OkNhbGlicmk7DQoJY29sb3I6IzFGNDk3RDt9DQpzcGFuLmVtYWlsc3R5bGUyMw0KCXtt c28tc3R5bGUtbmFtZTplbWFpbHN0eWxlMjM7DQoJZm9udC1mYW1pbHk6Q2FsaWJyaTsNCgljb2xv cjp3aW5kb3d0ZXh0O30NCnNwYW4uRW1haWxTdHlsZTI5DQoJe21zby1zdHlsZS10eXBlOnBlcnNv bmFsOw0KCWZvbnQtZmFtaWx5OkNhbGlicmk7DQoJY29sb3I6IzFGNDk3RDt9DQpzcGFuLnBsLWsN Cgl7bXNvLXN0eWxlLW5hbWU6cGwtazt9DQpzcGFuLnBsLWMxDQoJe21zby1zdHlsZS1uYW1lOnBs LWMxO30NCnNwYW4uRW1haWxTdHlsZTMyDQoJe21zby1zdHlsZS10eXBlOnBlcnNvbmFsOw0KCWZv bnQtZmFtaWx5OkNhbGlicmk7DQoJY29sb3I6d2luZG93dGV4dDt9DQpzcGFuLkVtYWlsU3R5bGUz Mw0KCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbDsNCglmb250LWZhbWlseTpDYWxpYnJpOw0KCWNv bG9yOiMxRjQ5N0Q7fQ0Kc3Bhbi5FbWFpbFN0eWxlMzQNCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29u YWwtcmVwbHk7DQoJZm9udC1mYW1pbHk6Q2FsaWJyaTsNCgljb2xvcjp3aW5kb3d0ZXh0O30NCnNw YW4ubXNvSW5zDQoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5Ow0KCW1zby1zdHlsZS1uYW1l OiIiOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7DQoJY29sb3I6dGVhbDt9DQouTXNvQ2hw RGVmYXVsdA0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsNCglmb250LXNpemU6MTAuMHB0 O30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjguNWluIDExLjBpbjsNCgltYXJnaW46MS4w aW4gMS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRTZWN0aW9uMQ0KCXtwYWdlOldvcmRTZWN0 aW9uMTt9DQotLT48L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHkgYmdjb2xvcj0id2hpdGUiIGxhbmc9 IkVOLVVTIiBsaW5rPSJibHVlIiB2bGluaz0icHVycGxlIj4NCjxkaXYgY2xhc3M9IldvcmRTZWN0 aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5UaGUgaGlzdG9ncmFtIGNvZGUgYWxzbyBidWNr ZXRzIGJ5IFRTQywgd2l0aCBjb252ZXJzaW9ucyBkb25lIOKAnG9mZmxpbmXigJ0gYnkgdGhlIGNh bGxlci48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9v OnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+LUppbTxvOnA+PC9vOnA+PC9wPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10 b3A6c29saWQgI0I1QzRERiAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48Yj48c3BhbiBzdHlsZT0i Y29sb3I6YmxhY2siPkZyb206IDwvc3Bhbj4NCjwvYj48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2si PlNQREsgJmx0O3NwZGstYm91bmNlc0BsaXN0cy4wMS5vcmcmZ3Q7IG9uIGJlaGFsZiBvZiBQYXVs IFZvbi1TdGFtd2l0eiAmbHQ7UFZvblN0YW13aXR6QHVzLmZ1aml0c3UuY29tJmd0Ozxicj4NCjxi PlJlcGx5LVRvOiA8L2I+U3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0O3Nw ZGtAbGlzdHMuMDEub3JnJmd0Ozxicj4NCjxiPkRhdGU6IDwvYj5UdWVzZGF5LCBOb3ZlbWJlciAx NCwgMjAxNyBhdCAyOjI4IFBNPGJyPg0KPGI+VG86IDwvYj5TdG9yYWdlIFBlcmZvcm1hbmNlIERl dmVsb3BtZW50IEtpdCAmbHQ7c3Bka0BsaXN0cy4wMS5vcmcmZ3Q7PGJyPg0KPGI+U3ViamVjdDog PC9iPlJlOiBbU1BES10gUmVxdWVzdCBmb3IgY29tbWVudHMgcmVnYXJkaW5nIGxhdGVuY3kgbWVh c3VyZW1lbnRzPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0O2NvbG9yOmJsYWNr Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx dW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0K PC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNw YW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPkkgdGhvdWdodCBvZiB0aGF0LiBJIGRvbuKAmXQgbGlr ZSBkb2luZyB0aGUgY29udmVyc2lvbiBvbiBldmVyeSBjb21tYW5kIGVpdGhlciwgYnV0IEkgd2Fz IHRoaW5raW5nIGFib3V0IGhvdyB3ZSB3b3VsZCBoYW5kbGUgdGhlIGhpc3RvZ3JhbSBhbmQgSSB3 YXMgYXNzdW1pbmcgdGhhdCB0aGUgYnVja2V0cyB3b3VsZCBiZSBzZWdtZW50ZWQNCiBpbiB1bml0 cyBvZiB0aW1lLjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+Jm5ic3A7 PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2Jv cmRlci10b3A6c29saWQgI0I1QzRERiAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48Yj48c3BhbiBz dHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTpUYWhvbWEiPkZyb206PC9zcGFuPjwv Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTpUYWhvbWEiPiBTUERL IFttYWlsdG86c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZ10NCjxiPk9uIEJlaGFsZiBPZiA8L2I+ SGFycmlzLCBKYW1lcyBSPGJyPg0KPGI+U2VudDo8L2I+IFR1ZXNkYXksIE5vdmVtYmVyIDE0LCAy MDE3IDI6MjMgUE08YnI+DQo8Yj5Ubzo8L2I+IFN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1l bnQgS2l0PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBbU1BES10gUmVxdWVzdCBmb3IgY29tbWVu dHMgcmVnYXJkaW5nIGxhdGVuY3kgbWVhc3VyZW1lbnRzPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0K PC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDou NWluIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt YXJnaW4tbGVmdDouNWluIj5IaSBQYXVsLDxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPkFncmVlIG9uIGhhbmRs aW5nIHJlc2V0IGFuZCBoaXN0b2dyYW0gc3R1ZmYgc2VwYXJhdGVseS48bzpwPjwvbzpwPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj4mbmJzcDs8bzpw PjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWlu Ij5JbnN0ZWFkIG9mIG5zIGNvdWxkIHdlIHN0b3JlIGFzIHRzYz8mbmJzcDsgSeKAmWQgbGlrZSB0 byBhdm9pZCB0c2MgPSZndDsgbnMgY29udmVyc2lvbnMgaW4gdGhlIEkvTyBwYXRoIGlmIHBvc3Np YmxlLiZuYnNwOyBUaGVuIHN0b3JlIHRoZSBUU0MgcmF0ZSBhcyBhIHNlcGFyYXRlIG1lbWJlciBp biB0aGlzIHN0cnVjdHVyZS48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDouNWluIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj4tSmltPG86cD48L286cD48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+Jm5ic3A7PG86cD48 L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+ Jm5ic3A7PG86cD48L286cD48L3A+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9w OnNvbGlkICNCNUM0REYgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPjxiPjxzcGFuIHN0eWxlPSJj b2xvcjpibGFjayI+RnJvbToNCjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj5T UERLICZsdDs8YSBocmVmPSJtYWlsdG86c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyI+c3Bkay1i b3VuY2VzQGxpc3RzLjAxLm9yZzwvYT4mZ3Q7IG9uIGJlaGFsZiBvZiBQYXVsIFZvbi1TdGFtd2l0 eiAmbHQ7PGEgaHJlZj0ibWFpbHRvOlBWb25TdGFtd2l0ekB1cy5mdWppdHN1LmNvbSI+UFZvblN0 YW13aXR6QHVzLmZ1aml0c3UuY29tPC9hPiZndDs8YnI+DQo8Yj5SZXBseS1UbzogPC9iPlN0b3Jh Z2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0ICZsdDs8YSBocmVmPSJtYWlsdG86c3Bka0Bs aXN0cy4wMS5vcmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPiZndDs8YnI+DQo8Yj5EYXRlOiA8L2I+ VHVlc2RheSwgTm92ZW1iZXIgMTQsIDIwMTcgYXQgMjoxNiBQTTxicj4NCjxiPlRvOiA8L2I+U3Rv cmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRr QGxpc3RzLjAxLm9yZyI+c3Bka0BsaXN0cy4wMS5vcmc8L2E+Jmd0Ozxicj4NCjxiPlN1YmplY3Q6 IDwvYj5SZTogW1NQREtdIFJlcXVlc3QgZm9yIGNvbW1lbnRzIHJlZ2FyZGluZyBsYXRlbmN5IG1l YXN1cmVtZW50czwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PHNwYW4gc3R5bGU9ImZvbnQt ZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7PC9zcGFuPjxvOnA+PC9v OnA+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6 MS4waW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj5JIGRvbuKAmXQgaGF2ZSBhIHByb2Js ZW0gdGFraW5nIG91dCB0aGUgcmVzZXQsIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIHdpdGggdGhlIFZU dW5lIGd1eXMgc2luY2UgdGhleSBhcmUgcmVzZXR0aW5nIHRoZWlyIGRhdGEgYXQgZWFjaCBpbnRl cnZhbCBhcyB3ZWxsLiBBdCB0aGUgZW5kIG9mIHRoZSBkYXkgSSB3b3VsZCBsaWtlDQogdGhlIHR3 byBtZXRob2RzIHRvIGV2ZW50dWFsbHkgY29udmVyZ2UsIG9yIGF0IGxlYXN0IGJlIGNvbnNpc3Rl bnQuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1h cmdpbi1sZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+Jm5ic3A7PC9zcGFu PjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0 OjEuMGluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+SeKAmW0gdGhpbmtpbmcgZm9yIG5v dywganVzdCBhcHBlbmRpbmcgYSBjdW11bGF0aXZlIEkvTyB0aW1lIGluIG5hbm9zZWNvbmRzIHRv IGlvX3N0YXQuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5 bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+Jm5ic3A7 PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp bi1sZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTom cXVvdDtDb3VyaWVyIE5ldyZxdW90Oztjb2xvcjpibGFjayI+c3RydWN0IHNwZGtfYmRldl9pb19z dGF0IHs8L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0i bWFyZ2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFt aWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7O2NvbG9yOmJsYWNrIj4mbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdWludDY0X3QgYnl0ZXNfcmVhZDs8L3NwYW4+PG86 cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4w aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NvdXJp ZXIgTmV3JnF1b3Q7O2NvbG9yOmJsYWNrIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgdWludDY0X3QgbnVtX3JlYWRfb3BzOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDs7 Y29sb3I6YmxhY2siPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB1 aW50NjRfdCBieXRlc193cml0dGVuOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDs7Y29sb3I6YmxhY2si PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB1aW50NjRfdCBudW1f d3JpdGVfb3BzOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9u dC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDs7Y29sb3I6YmxhY2siPiZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB1aW50NjRfdCByZWFkX3RpbWVfbnM7PC9z cGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1s ZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVv dDtDb3VyaWVyIE5ldyZxdW90Oztjb2xvcjpibGFjayI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IHVpbnQ2NF90IHdyaXRlX3RpbWVfbnM7PC9zcGFuPjxvOnA+PC9v OnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5l dyZxdW90Oztjb2xvcjpibGFjayI+fTs8L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJjb2xvcjoj MUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj5X ZSBjYW4gYWRkcmVzcyB0aGUgcmVzZXQgaXNzdWUgYW5kIGhpc3RvZ3JhbSBpbiBzdWJzZXF1ZW50 ICZuYnNwO1BScy48L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBz dHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj4mbmJz cDs8L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy Z2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj5JcyB0aGlzIG9rYXk/ PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp bi1sZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+LVBhdWw8L3NwYW4+PG86 cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4w aW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48 L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPjxzcGFu IHN0eWxlPSJjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+DQo8ZGl2 Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjQjVDNERGIDEuMHB0 O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9 Im1hcmdpbi1sZWZ0OjEuMGluIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250 LWZhbWlseTpUYWhvbWEiPkZyb206PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEw LjBwdDtmb250LWZhbWlseTpUYWhvbWEiPiBTUERLIFs8YSBocmVmPSJtYWlsdG86c3Bkay1ib3Vu Y2VzQGxpc3RzLjAxLm9yZyI+bWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+XQ0K PGI+T24gQmVoYWxmIE9mIDwvYj5XYWxrZXIsIEJlbmphbWluPGJyPg0KPGI+U2VudDo8L2I+IFR1 ZXNkYXksIE5vdmVtYmVyIDE0LCAyMDE3IDg6MzYgQU08YnI+DQo8Yj5Ubzo8L2I+IFN0b3JhZ2Ug UGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBbU1BE S10gUmVxdWVzdCBmb3IgY29tbWVudHMgcmVnYXJkaW5nIGxhdGVuY3kgbWVhc3VyZW1lbnRzPC9z cGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi IHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6MTIuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+VGhl IG9ubHkgcmVhc29uIHRvIHJlc2V0IGlzIHRvIGRlYWwgd2l0aCBvdmVyZmxvdy4gQnV0IHRoZSB0 aW1lIGJldHdlZW4gb3ZlcmZsb3dzIHdvdWxkIGJlIHZlcnkgbGFyZ2Ugc28gdGhlIHVzZXIgY291 bGQgcG90ZW50aWFsbHkgYWNjb3VudCBmb3IgaXQgb24NCiB0aGVpciBlbmQuJm5ic3A7IDwvc3Bh bj48bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy Z2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9w Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0 OjEuMGluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjBwdDtmb250LWZhbWlseTomcXVvdDtU aW1lcyBOZXcgUm9tYW4mcXVvdDsiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2 Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3 IFJvbWFuJnF1b3Q7Ij4tLS0tLS0tLSBPcmlnaW5hbCBtZXNzYWdlIC0tLS0tLS0tPC9zcGFuPjxv OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9 Im1hcmdpbi1sZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjBwdDtmb250LWZh bWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPkZyb206ICZxdW90O0hhcnJpcywgSmFt ZXMgUiZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOmphbWVzLnIuaGFycmlzQGludGVsLmNvbSI+ amFtZXMuci5oYXJyaXNAaW50ZWwuY29tPC9hPiZndDsNCjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4N CjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDox LjBpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGlt ZXMgTmV3IFJvbWFuJnF1b3Q7Ij5EYXRlOiAxMS8xNC8xNyA5OjAxIEFNIChHTVQtMDc6MDApDQo8 L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+VG86IFN0b3JhZ2UgUGVy Zm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0ICZsdDs8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0cy4w MS5vcmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPiZndDsNCjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4N CjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDox LjBpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGlt ZXMgTmV3IFJvbWFuJnF1b3Q7Ij5TdWJqZWN0OiBSZTogW1NQREtdIFJlcXVlc3QgZm9yIGNvbW1l bnRzIHJlZ2FyZGluZyBsYXRlbmN5IG1lYXN1cmVtZW50cw0KPC9zcGFuPjxvOnA+PC9vOnA+PC9w Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0 OjEuMGluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjBwdDtmb250LWZhbWlseTomcXVvdDtU aW1lcyBOZXcgUm9tYW4mcXVvdDsiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2 Pg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6 MS4waW4iPk9yIHdlIGxlYXZlIG91dCB0aGUgcmVzZXQgc3RhdHMgQVBJIGFuZCBwcm92aWRlIGhl bHBlciBmdW5jdGlvbnMgb24gdGhlIGNsaWVudCBzaWRlIChpbiBQeXRob24pIHRvIGRpZmYgcmVz dWx0cyBmcm9tIHR3byBjYWxscyB0byBzcGRrX2JkZXZfZ2V0X2lvX3N0YXQoKS48bzpwPjwvbzpw PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+Jm5i c3A7PG86cD48L286cD48L3A+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNv bGlkICNCNUM0REYgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS41aW4iPjxiPjxzcGFuIHN0eWxlPSJjb2xv cjpibGFjayI+RnJvbToNCjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj5TUERL ICZsdDs8YSBocmVmPSJtYWlsdG86c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyI+c3Bkay1ib3Vu Y2VzQGxpc3RzLjAxLm9yZzwvYT4mZ3Q7IG9uIGJlaGFsZiBvZiBQYXVsIEUgTHVzZSAmbHQ7PGEg aHJlZj0ibWFpbHRvOnBhdWwuZS5sdXNlQGludGVsLmNvbSI+cGF1bC5lLmx1c2VAaW50ZWwuY29t PC9hPiZndDs8YnI+DQo8Yj5SZXBseS1UbzogPC9iPlN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxv cG1lbnQgS2l0ICZsdDs8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0cy4wMS5vcmciPnNwZGtAbGlz dHMuMDEub3JnPC9hPiZndDs8YnI+DQo8Yj5EYXRlOiA8L2I+VHVlc2RheSwgTm92ZW1iZXIgMTQs IDIwMTcgYXQgNzo1MCBBTTxicj4NCjxiPlRvOiA8L2I+U3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZl bG9wbWVudCBLaXQgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrQGxpc3RzLjAxLm9yZyI+c3Bka0Bs aXN0cy4wMS5vcmc8L2E+Jmd0Ozxicj4NCjxiPlN1YmplY3Q6IDwvYj5SZTogW1NQREtdIFJlcXVl c3QgZm9yIGNvbW1lbnRzIHJlZ2FyZGluZyBsYXRlbmN5IG1lYXN1cmVtZW50czwvc3Bhbj48bzpw PjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt YXJnaW4tbGVmdDoxLjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5l dyBSb21hbiZxdW90OyI+Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS41aW4iPjxzcGFuIHN0eWxlPSJj b2xvcjojMUY0OTdEIj5PciBtYXliZSBhcyBhbiBpbml0aWFsIHNlcGFyYXRlIHBhdGNoIHJlbW92 ZSB0aGUgYXV0by1yZXNldCBhbmQgYWRkIGEgbmV3IEFQSSB0byByZXNldCBzdGF0c+KApi48L3Nw YW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl ZnQ6MS41aW4iPjxhIG5hbWU9Il9NYWlsRW5kQ29tcG9zZSI+PHNwYW4gc3R5bGU9ImNvbG9yOiMx RjQ5N0QiPiZuYnNwOzwvc3Bhbj48L2E+PG86cD48L286cD48L3A+DQo8ZGl2Pg0KPGRpdiBzdHls ZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4w cHQgMGluIDBpbiAwaW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0 OjEuNWluIj48YSBuYW1lPSJfX19fX3JlcGx5c2VwYXJhdG9yIj48L2E+PGI+RnJvbTo8L2I+IFNQ REsgWzxhIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnIj5tYWlsdG86c3Bk ay1ib3VuY2VzQGxpc3RzLjAxLm9yZzwvYT5dDQo8Yj5PbiBCZWhhbGYgT2YgPC9iPkhhcnJpcywg SmFtZXMgUjxicj4NCjxiPlNlbnQ6PC9iPiBUdWVzZGF5LCBOb3ZlbWJlciAxNCwgMjAxNyA4OjQz IEFNPGJyPg0KPGI+VG86PC9iPiBTdG9yYWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtpdCAm bHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGtAbGlzdHMuMDEub3JnIj5zcGRrQGxpc3RzLjAxLm9yZzwv YT4mZ3Q7PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBbU1BES10gUmVxdWVzdCBmb3IgY29tbWVu dHMgcmVnYXJkaW5nIGxhdGVuY3kgbWVhc3VyZW1lbnRzPG86cD48L286cD48L3A+DQo8L2Rpdj4N CjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuNWluIj4m bmJzcDs8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4t bGVmdDoxLjVpbiI+QWdyZWVkIC0gIzIgaXMgdGhlIHdheSB0byBnby48bzpwPjwvbzpwPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjVpbiI+Jm5ic3A7PG86 cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS41 aW4iPldoaWxlIHdl4oCZcmUgb24gdGhlIHRvcGljIC0gc2hvdWxkIHdlIGJlIHJlc2V0dGluZyB0 aGUgc3RhdHMgd2hlbiBzcGRrX2JkZXZfZ2V0X2lvX3N0YXQoKSBpcyBjYWxsZWQ/Jm5ic3A7IFRo aXMgZWxpbWluYXRlcyB0aGUgYWJpbGl0eSBmb3IgdHdvIHNlcGFyYXRlIGFwcGxpY2F0aW9ucyB0 byBtb25pdG9yIHN0YXRzIGluIHBhcmFsbGVsIOKAkyBvciBldmVuIGEgc2VwYXJhdGUgYXBwbGlj YXRpb24NCiBwbHVzIHNvbWUgZnV0dXJlIHlldC10by1iZS13cml0dGVuIGludGVybmFsIGxvYWQt YmFsYW5jaW5nIG1vbml0b3IuJm5ic3A7IEnigJltIHRoaW5raW5nIHRoYXQgYmRldiBzaG91bGQg anVzdCBrZWVwIHRoZSBydW5uaW5nIHRvdGFsIGFuZCBsZXQgdGhlIGNhbGxlciBvd24gdHJhY2tp bmcgZGlmZmVyZW5jZXMgZnJvbSB0aGUgbGFzdCB0aW1lIGl0IGNhbGxlZCBzcGRrX2JkZXZfZ2V0 X2lvX3N0YXQoKS48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt YXJnaW4tbGVmdDoxLjVpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS41aW4iPi1KaW08bzpwPjwvbzpwPjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjVpbiI+Jm5ic3A7PG86cD48L286 cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS41aW4iPiZu YnNwOzxvOnA+PC9vOnA+PC9wPg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpz b2xpZCAjQjVDNERGIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj48Yj48c3BhbiBzdHlsZT0iY29s b3I6YmxhY2siPkZyb206DQo8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+U1BE SyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPnNwZGstYm91 bmNlc0BsaXN0cy4wMS5vcmc8L2E+Jmd0OyBvbiBiZWhhbGYgb2YgTmF0aGFuIE1hcnVzaGFrICZs dDs8YSBocmVmPSJtYWlsdG86bmF0aGFuLm1hcnVzaGFrQGludGVsLmNvbSI+bmF0aGFuLm1hcnVz aGFrQGludGVsLmNvbTwvYT4mZ3Q7PGJyPg0KPGI+UmVwbHktVG86IDwvYj5TdG9yYWdlIFBlcmZv cm1hbmNlIERldmVsb3BtZW50IEtpdCAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGtAbGlzdHMuMDEu b3JnIj5zcGRrQGxpc3RzLjAxLm9yZzwvYT4mZ3Q7PGJyPg0KPGI+RGF0ZTogPC9iPlR1ZXNkYXks IE5vdmVtYmVyIDE0LCAyMDE3IGF0IDc6MjkgQU08YnI+DQo8Yj5UbzogPC9iPlN0b3JhZ2UgUGVy Zm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0ICZsdDs8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0cy4w MS5vcmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPiZndDs8YnI+DQo8Yj5TdWJqZWN0OiA8L2I+UmU6 IFtTUERLXSBSZXF1ZXN0IGZvciBjb21tZW50cyByZWdhcmRpbmcgbGF0ZW5jeSBtZWFzdXJlbWVu dHM8L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6Mi4waW4iPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom cXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4N CjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj48 c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7SW50ZWwgQ2xlYXImcXVvdDs7Y29sb3I6Izk5 MDAwMCI+U28sIG5vdCBiZWluZyB0aGUgdGVjaG5pY2FsIGV4cGVydCBzbyB0byBzcGVhaw0KPC9z cGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpXaW5nZGluZ3M7Y29sb3I6Izk5MDAwMCI+Sjwv c3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7SW50ZWwgQ2xlYXImcXVvdDs7Y29s b3I6Izk5MDAwMCI+LCBwbGVhc2UgdGFrZSB0aGlzIHdpdGggYSBncmFpbiBvZiBzYWx0LiBBZ3Jl ZSB3aXRoIG9wdGlvbiAjMi4gU2VlbXMgbGlrZSB0aGlzIHdvdWxkIGFsbG93IGZvciBrZWVwaW5n IHN0YXRzIGFjcm9zcyB0aGUgZGlmZmVyZW50IGRldmljZSB0eXBlcw0KIGUuZy4gTlZNZSwgTlZN TCwgTlZNZS1vRiAoYWx0aG91Z2ggdGhhdCBoYXMgYSB0cmFuc3BvcnQgd2l0aGluIE5WTWUsIHNv IGl0IG1pZ2h0IGJlIGNvdmVyZWQgZm9yIGVpdGhlciBvcHRpb24pLjwvc3Bhbj48bzpwPjwvbzpw PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+PHNw YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0ludGVsIENsZWFyJnF1b3Q7O2NvbG9yOiM5OTAw MDAiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25l O2JvcmRlci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7cGFkZGluZzowaW4gMGluIDBpbiA0LjBwdCI+ DQo8ZGl2Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUx IDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj48Yj5Gcm9tOjwvYj4gU1BESyBbPGEgaHJlZj0ibWFp bHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPm1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMu MDEub3JnPC9hPl0NCjxiPk9uIEJlaGFsZiBPZiA8L2I+THVzZSwgUGF1bCBFPGJyPg0KPGI+U2Vu dDo8L2I+IFR1ZXNkYXksIE5vdmVtYmVyIDE0LCAyMDE3IDc6NTcgQU08YnI+DQo8Yj5Ubzo8L2I+ IFN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0ICZsdDs8YSBocmVmPSJtYWlsdG86 c3Bka0BsaXN0cy4wMS5vcmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPiZndDs8YnI+DQo8Yj5TdWJq ZWN0OjwvYj4gUmU6IFtTUERLXSBSZXF1ZXN0IGZvciBjb21tZW50cyByZWdhcmRpbmcgbGF0ZW5j eSBtZWFzdXJlbWVudHM8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6Mi4waW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9w Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj48c3BhbiBz dHlsZT0iY29sb3I6IzFGNDk3RCI+RldJVyBvcHRpb24gMiBzb3VuZHMgbGlrZSB0aGUgbW9zdCBh cHByb3ByaWF0ZSB0byBtZeKApjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5 N0QiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPlRoeDwv c3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4t bGVmdDoyLjBpbiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPlBhdWw8L3NwYW4+PG86cD48 L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6Mi4waW4i PjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+ DQo8ZGl2Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUx IDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj48Yj5Gcm9tOjwvYj4gU1BESyBbPGEgaHJlZj0ibWFp bHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPm1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMu MDEub3JnPC9hPl0NCjxiPk9uIEJlaGFsZiBPZiA8L2I+UGF1bCBWb24tU3RhbXdpdHo8YnI+DQo8 Yj5TZW50OjwvYj4gTW9uZGF5LCBOb3ZlbWJlciAxMywgMjAxNyA3OjI5IFBNPGJyPg0KPGI+VG86 PC9iPiA8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0cy4wMS5vcmciPnNwZGtAbGlzdHMuMDEub3Jn PC9hPjxicj4NCjxiPlN1YmplY3Q6PC9iPiBbU1BES10gUmVxdWVzdCBmb3IgY29tbWVudHMgcmVn YXJkaW5nIGxhdGVuY3kgbWVhc3VyZW1lbnRzPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2 Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj4mbmJzcDs8 bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoy LjBpbiI+QmFja2dyb3VuZDo8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+QmRldi5jIGN1cnJlbnRseSBtYWludGFpbnMgYSBjb3Vu dCBvZiByZWFkcy93cml0ZXMvYnl0ZXNfcmVhZC9ieXRlc193cml0dGVuIGluIGNoYW5uZWwtJmd0 O3N0YXQuIFRoaXMgaW5mb3JtYXRpb24gaXMgcmV0cmlldmVkIChhbmQgcmVzZXQpIHZpYSBzcGRr X2JkZXZfZ2V0X2lvX3N0YXQuPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBz dHlsZT0ibWFyZ2luLWxlZnQ6Mi4waW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj5Qcm9wb3NhbDo8bzpwPjwvbzpw PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+QWRk IGxhdGVuY3kgaW5mb3JtYXRpb24gdG8gY2hhbm5lbC0mZ3Q7c3RhdCBhbmQgZW5hYmxlIHRoZSBv cHRpb24gdG8gcHJvdmlkZSBhIGhpc3RvZ3JhbS48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+V2UgY2FuIG1lYXN1cmUgdGhlIGxh dGVuY3kgb2YgZWFjaCBJTyBhbmQga2VlcCBhIHJ1bm5pbmcgdG90YWwgb24gYSByZWFkL3dyaXRl IGJhc2lzLiBXZSBjYW4gYWxzbyB1c2UgdGhlIG1lYXN1cmVkIGxhdGVuY3kgdG8ga2VlcCBhIHJ1 bm5pbmcgY291bnQgb2YgcmVhZHMvd3JpdGVzIGluIHRoZWlyIGFzc29jaWF0ZWQgaGlzdG9ncmFt IOKAnGJ1Y2tldHPigJ0uPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls ZT0ibWFyZ2luLWxlZnQ6Mi4waW4iPlRoZSBxdWVzdGlvbiBpcywgaG93IGRvIHdlIG1lYXN1cmUg bGF0ZW5jeT88bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJn aW4tbGVmdDoyLjBpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWxlZnQ6Mi4waW4iPk9wdGlvbiAxOjxvOnA+PC9vOnA+PC9wPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj5NZWFzdXJlIGxhdGVu Y3kgYXQgdGhlIE5WTWUgdHJhY2tlciAuPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6Mi4waW4iPkN1cnJlbnRseSwgd2UgYWxyZWFkeSB0aW1l c3RhbXAgZXZlcnkgY29tbWFuZCBwbGFjZWQgb24gdGhlIHRyYWNrZXIgaWYgdGhlIGFib3J0IHRp bWVvdXQgY2FsbGJhY2sgaXMgcmVnaXN0ZXJlZC4gV2hlbiB3ZSByZW1vdmUgYSBjb21wbGV0ZWQg SU8gZnJvbSB0aGUgdHJhY2tlciwgd2UgY2FuIHRpbWVzdGFtcCBpdCBhZ2FpbiBhbmQgY2FsY3Vs YXRlIHRoZSBsYXRlbmN5LjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5 bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj5UaGVyZSBhcmUgc2V2ZXJhbCBpc3N1ZXMgaGVyZSB0aGF0 IG5lZWQgdG8gYmUgY29uc2lkZXJlZC48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+V2UgbmVlZCB0byBnZXQgdGhlIGxhdGVuY3kg aW5mb3JtYXRpb24gYmFjayB1cCB0byB0aGUgYmRldiBsYXllciwgbW9zdCBsaWtlbHkgdGhyb3Vn aCBhIGNhbGxiYWNrIGFyZ3VtZW50LCBidXQgdGhpcyB3b3VsZCByZXF1aXJlIGEgY2hhbmdlIHRo ZSBOVk1lIEFQSS4gSWYgdGhlIGJkZXYgYnJlYWtzIGRvd24gYSByZXF1ZXN0IGludG8gc21hbGxl ciBJT3MsIGl0IGNhbg0KIGFkZCB1cCB0aGUgbGF0ZW5jaWVzIG9mIHRoZSBjaGlsZCBJT3MgZm9y IGlvX3N0YXQgYW5kIGhpc3RvZ3JhbSBwdXJwb3Nlcy48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+QWxzbywgdGhpcyBtZXRob2Qg ZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgYW55IGxhdGVuY3kgYWRkZWQgYnkgdGhlIHNwZGsg YmRldi9udm1lIGxheWVycyAoZXhjZXB0IHRoZSBwb2xsZXIuKSBJZiBhIHJlcXVlc3Qgd2FzIHF1 ZXVlZCBiZWZvcmUgYmVpbmcgcGxhY2VkIG9uIHRoZSB0cmFja2VyLCB0aGVuIHRoZSB0aW1lIGl0 IHdhcyBxdWV1ZWQgaXMgbm90IGZhY3RvcmVkDQogaW50byB0aGUgbGF0ZW5jeSBjYWxjdWxhdGlv bi48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVm dDoyLjBpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls ZT0ibWFyZ2luLWxlZnQ6Mi4waW4iPk9wdGlvbiAyOjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj5NZWFzdXJlIGxhdGVuY3kgYXQg dGhlIGJkZXYgbGF5ZXIuPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls ZT0ibWFyZ2luLWxlZnQ6Mi4waW4iPldlIGNhbiB0aW1lc3RhbXAgYXQgc3VibWl0IGFuZCBhZ2Fp biBhdCBjb21wbGV0aW9uLiBUaGlzIHdvdWxkIGtlZXAgYWxsIGlvX3N0YXQgaW5mb3JtYXRpb24g bG9jYWwgdG8gYmRldiBhbmQgd291bGQgdGFrZSBpbnRvIGFjY291bnQgdGhlIG92ZXJoZWFkIG9m IG1vc3QgcXVldWVkIG9wZXJhdGlvbnMuIEFueSBhcHBsaWNhdGlvbnMgd3JpdHRlbiBkaXJlY3Rs eSB0bw0KIHRoZSBOVk1lIGxheWVyIHdvdWxkIGhhdmUgdG8gY2FsY3VsYXRlIHRoZWlyIG93biBs YXRlbmNpZXMsIGJ1dCB0aGF0IGlzIGN1cnJlbnRseSB0cnVlIGZvciBhbGwgaW9fc3RhdHMuPG86 cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6Mi4w aW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1h cmdpbi1sZWZ0OjIuMGluIj5J4oCZbSBzdXJlIHRoYXQgdGhlcmUgYXJlIG90aGVyIGlzc3VlcyBJ IGFtIG1pc3NpbmcsIGJ1dCBJIHdvdWxkIGFwcHJlY2lhdGUgYW55IGNvbW1lbnRzIG9uIGhvdyBi ZXN0IHRvIG1vdmUgZm9yd2FyZCBvbiB0aGlzLjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+VGhhbmtzLDxv OnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjIu MGluIj5QYXVsPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy Z2luLWxlZnQ6Mi4waW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjwv ZGl2Pg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --===============9155309115620653852==--