From myusuf at redhat.com Mon Mar 22 05:56:59 2021 Content-Type: multipart/mixed; boundary="===============0280602765898534389==" MIME-Version: 1.0 From: Rizwan Shaikh To: freeipa-users at lists.fedorahosted.org Subject: [Freeipa-users] Re: ACME under Centos Stream 8 - Bad cert profile Date: Mon, 22 Mar 2021 11:26:29 +0530 Message-ID: In-Reply-To: 8362e5a1d89e77177ac549921589d7b9ab992af5.camel@infra-monkey.com --===============0280602765898534389== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hello, This is already logged here , and will be fixed soon. On Sun, Mar 21, 2021 at 2:45 PM Antoine Gatineau via FreeIPA-users < freeipa-users(a)lists.fedorahosted.org> wrote: > Hello, > > So I'm trying out the new acme feature in freeipa version > 4.9.0-1.module_el8.4.0+639+a88aab78 from CentOS Stream 8. > > My setup is a rebuild from replica (fresh install on centos stream as a > replica of a centos 8 non-stream existing replica). > > I enabled acme using "sudo ipa-acme-manage enable" > > From an ipa-client, I can successfully perform a certbot register. But > certbot certonly --standalone etc... fails with the error : > 2021-03-21 09:54:07,083:DEBUG:acme.client:Received response: > HTTP 500 > Date: Sun, 21 Mar 2021 08:54:05 GMT > Server: Apache/2.4.37 (centos) OpenSSL/1.1.1g mod_auth_gssapi/1.6.1 > mod_wsgi/4.6.4 Python/3.6 > Content-Type: text/html;charset=3Dutf-8 > Content-Language: en > Content-Length: 6750 > Connection: close > > HTTP Status 500 =E2=80=93 I= nternal > Server Error

HTTP Status 500 =E2= =80=93 > Internal Server Error


Type Exception > Report

Message > com.netscape.certsrv.base.BadRequestException: Unable to get enrollment > template for acmeIPAServerCert: Profile not found

Description > The server encountered an unexpected condition that > prevented it from fulfilling the > request.

Exception

org.jboss.resteasy.spi.UnhandledE=
xception:
> com.netscape.certsrv.base.BadRequestException: Unable to get enrollment
> template for
> acmeIPAServerCert: Profile not found
>
> org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(Excep=
tionHandler.java:78)
>
> org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler=
.java:222)
>
> org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousD=
ispatcher.java:179)
>
> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatche=
r.java:422)
>
> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatche=
r.java:213)
>
> org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.serv=
ice(ServletContainerDispatcher.java:228)
>
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(H=
ttpServletDispatcher.java:56)
>
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(H=
ttpServletDispatcher.java:51)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
>         sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source)
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>         java.lang.reflect.Method.invoke(Method.java:498)
>
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:282)
>
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:279)
>         java.security.AccessController.doPrivileged(Native Method)
>         javax.security.auth.Subject.doAsPrivileged(Subject.java:549)
>
> org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:314)
>
> org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java=
:170)
>         java.security.AccessController.doPrivileged(Native Method)
>
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
>         sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>         java.lang.reflect.Method.invoke(Method.java:498)
>
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:282)
>
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:279)
>         java.security.AccessController.doPrivileged(Native Method)
>         javax.security.auth.Subject.doAsPrivileged(Subject.java:549)
>
> org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:314)
>
> org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java=
:253)
> 

Root > Cause

com.netscape.certsrv.base.BadRequestException: Unable to
> get enrollment template for acmeIPAServerCert: Profile not found
>         sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAc=
cessorImpl.java:62)
>
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConst=
ructorAccessorImpl.java:45)
>         java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>
> com.netscape.certsrv.client.PKIClient.handleErrorResponse(PKIClient.java:=
135)
>         com.netscape.certsrv.client.PKIClient.getEntity(PKIClient.java:14=
3)
>         com.netscape.certsrv.ca
> .CACertClient.getEnrollmentTemplate(CACertClient.java:167)
>
> org.dogtagpki.acme.issuer.PKIIssuer.issueCertificate(PKIIssuer.java:148)
>
> org.dogtagpki.acme.server.ACMEFinalizeOrderService.handlePOST(ACMEFinaliz=
eOrderService.java:91)
>         sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java=
:62)
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>         java.lang.reflect.Method.invoke(Method.java:498)
>
> org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java=
:140)
>
> org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMeth=
odInvoker.java:295)
>
> org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoke=
r.java:249)
>
> org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoke=
r.java:236)
>
> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatche=
r.java:406)
>
> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatche=
r.java:213)
>
> org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.serv=
ice(ServletContainerDispatcher.java:228)
>
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(H=
ttpServletDispatcher.java:56)
>
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(H=
ttpServletDispatcher.java:51)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
>         sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source)
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>         java.lang.reflect.Method.invoke(Method.java:498)
>
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:282)
>
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:279)
>         java.security.AccessController.doPrivileged(Native Method)
>         javax.security.auth.Subject.doAsPrivileged(Subject.java:549)
>
> org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:314)
>
> org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java=
:170)
>         java.security.AccessController.doPrivileged(Native Method)
>
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
>         sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>         java.lang.reflect.Method.invoke(Method.java:498)
>
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:282)
>
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:279)
>         java.security.AccessController.doPrivileged(Native Method)
>         javax.security.auth.Subject.doAsPrivileged(Subject.java:549)
>
> org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:314)
>
> org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java=
:253)
> 

Note The full stack trace of the root cause is available > in the server logs.


Apache > Tomcat/9.0.30

> 2021-03-21 09:54:07,084:DEBUG:certbot.log:Exiting abnormally: > Traceback (most recent call last): > File "/usr/bin/certbot", line 11, in > load_entry_point('certbot=3D=3D0.31.0', 'console_scripts', 'certbot')= () > File "/usr/lib/python3/dist-packages/certbot/main.py", line 1365, in ma= in > return config.func(config, plugins) > File "/usr/lib/python3/dist-packages/certbot/main.py", line 1250, in > certonly > lineage =3D _get_and_save_cert(le_client, config, domains, certname, > lineage) > File "/usr/lib/python3/dist-packages/certbot/main.py", line 121, in > _get_and_save_cert > lineage =3D le_client.obtain_and_enroll_certificate(domains, certname) > File "/usr/lib/python3/dist-packages/certbot/client.py", line 410, in > obtain_and_enroll_certificate > cert, chain, key, _ =3D self.obtain_certificate(domains) > File "/usr/lib/python3/dist-packages/certbot/client.py", line 369, in > obtain_certificate > cert, chain =3D self.obtain_certificate_from_csr(csr, orderr) > File "/usr/lib/python3/dist-packages/certbot/client.py", line 301, in > obtain_certificate_from_csr > orderr =3D self.acme.finalize_order(orderr, deadline) > File "/usr/lib/python3/dist-packages/acme/client.py", line 927, in > finalize_order > return self.client.finalize_order(orderr, deadline) > File "/usr/lib/python3/dist-packages/acme/client.py", line 754, in > finalize_order > self._post(orderr.body.finalize, wrapped_csr) > File "/usr/lib/python3/dist-packages/acme/client.py", line 96, in _post > return self.net.post(*args, **kwargs) > File "/usr/lib/python3/dist-packages/acme/client.py", line 1204, in post > return self._post_once(*args, **kwargs) > File "/usr/lib/python3/dist-packages/acme/client.py", line 1218, in > _post_once > response =3D self._check_response(response, content_type=3Dcontent_ty= pe) > File "/usr/lib/python3/dist-packages/acme/client.py", line 1079, in > _check_response > raise errors.ClientError(response) > acme.errors.ClientError: > 2021-03-21 09:54:07,084:ERROR:certbot.log:An unexpected error occurred: > > From what I gathered pki-server should use the profile defined in freeipa > right? > $ sudo ls -l /usr/share/ipa/profiles/acmeIPAServerCert.cfg > -rw-r--r--. 1 root root 6707 Dec 23 15:38 > /usr/share/ipa/profiles/acmeIPAServerCert.cfg > > What's the best way to fix the configuration? > Is it best to open a bug for this? I know centos stream is not yet up to > date, so it's maybe already fixed. > > Thanks > > > _______________________________________________ > FreeIPA-users mailing list -- freeipa-users(a)lists.fedorahosted.org > To unsubscribe send an email to freeipa-users-leave(a)lists.fedorahosted.= org > Fedora Code of Conduct: > https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: > https://lists.fedorahosted.org/archives/list/freeipa-users(a)lists.fedora= hosted.org > Do not reply to spam on the list, report it: > https://pagure.io/fedora-infrastructure > -- = -- Regards Mohammad Rizwan Shaikh He/Him/His Senior Software Quality Engineer Red Hat Pune myusuf(a)redhat.com M: +91-9823948657 IM: rizwan --===============0280602765898534389== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+PGRpdj5IZWxsbyw8L2Rpdj48ZGl2PlRoaXMgaXMgYWxyZWFkeSBsb2dn ZWQgPGEgaHJlZj0iaHR0cHM6Ly9wYWd1cmUuaW8vZnJlZWlwYS9pc3N1ZS84NzM4Ij5oZXJlPC9h PiwgYW5kIHdpbGwgYmUgZml4ZWQgc29vbi48YnI+PC9kaXY+PGJyPjwvZGl2Pjxicj48ZGl2IGNs YXNzPSJnbWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPk9uIFN1 biwgTWFyIDIxLCAyMDIxIGF0IDI6NDUgUE0gQW50b2luZSBHYXRpbmVhdSB2aWEgRnJlZUlQQS11 c2VycyAmbHQ7PGEgaHJlZj0ibWFpbHRvOmZyZWVpcGEtdXNlcnNAbGlzdHMuZmVkb3JhaG9zdGVk Lm9yZyI+ZnJlZWlwYS11c2Vyc0BsaXN0cy5mZWRvcmFob3N0ZWQub3JnPC9hPiZndDsgd3JvdGU6 PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjow cHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtw YWRkaW5nLWxlZnQ6MWV4Ij5IZWxsbyw8YnI+Cjxicj4KU28gSSYjMzk7bSB0cnlpbmcgb3V0IHRo ZSBuZXcgYWNtZSBmZWF0dXJlIGluIGZyZWVpcGEgdmVyc2lvbiA0LjkuMC0xLm1vZHVsZV9lbDgu NC4wKzYzOSthODhhYWI3OCBmcm9tIENlbnRPUyBTdHJlYW0gOC48YnI+Cjxicj4KTXkgc2V0dXAg aXMgYSByZWJ1aWxkIGZyb20gcmVwbGljYSAoZnJlc2ggaW5zdGFsbCBvbiBjZW50b3Mgc3RyZWFt IGFzIGEgcmVwbGljYSBvZiBhIGNlbnRvcyA4IG5vbi1zdHJlYW0gZXhpc3RpbmcgcmVwbGljYSku PGJyPgo8YnI+CkkgZW5hYmxlZCBhY21lIHVzaW5nICZxdW90O3N1ZG8gaXBhLWFjbWUtbWFuYWdl IGVuYWJsZSZxdW90Ozxicj4KPGJyPgpGcm9tIGFuIGlwYS1jbGllbnQsIEkgY2FuIHN1Y2Nlc3Nm dWxseSBwZXJmb3JtIGEgY2VydGJvdCByZWdpc3Rlci4gQnV0IGNlcnRib3QgY2VydG9ubHkgLS1z dGFuZGFsb25lIGV0Yy4uLiBmYWlscyB3aXRoIHRoZSBlcnJvciA6PGJyPgoyMDIxLTAzLTIxIDA5 OjU0OjA3LDA4MzpERUJVRzphY21lLmNsaWVudDpSZWNlaXZlZCByZXNwb25zZTo8YnI+CkhUVFAg NTAwPGJyPgpEYXRlOiBTdW4sIDIxIE1hciAyMDIxIDA4OjU0OjA1IEdNVDxicj4KU2VydmVyOiBB cGFjaGUvMi40LjM3IChjZW50b3MpIE9wZW5TU0wvMS4xLjFnIG1vZF9hdXRoX2dzc2FwaS8xLjYu MSBtb2Rfd3NnaS80LjYuNCBQeXRob24vMy42PGJyPgpDb250ZW50LVR5cGU6IHRleHQvaHRtbDtj aGFyc2V0PXV0Zi04PGJyPgpDb250ZW50LUxhbmd1YWdlOiBlbjxicj4KQ29udGVudC1MZW5ndGg6 IDY3NTA8YnI+CkNvbm5lY3Rpb246IGNsb3NlPGJyPgo8YnI+CiZsdDshZG9jdHlwZSBodG1sJmd0 OyZsdDtodG1sIGxhbmc9JnF1b3Q7ZW4mcXVvdDsmZ3Q7Jmx0O2hlYWQmZ3Q7Jmx0O3RpdGxlJmd0 O0hUVFAgU3RhdHVzIDUwMCDigJMgSW50ZXJuYWwgU2VydmVyIEVycm9yJmx0Oy90aXRsZSZndDsm bHQ7c3R5bGUgdHlwZT0mcXVvdDt0ZXh0L2NzcyZxdW90OyZndDtib2R5IHtmb250LWZhbWlseTpU YWhvbWEsQXJpYWwsc2Fucy1zZXJpZjt9IGgxLCBoMiwgaDMsIGIge2NvbG9yOndoaXRlO2JhY2tn cm91bmQtPGJyPgpjb2xvcjojNTI1RDc2O30gaDEge2ZvbnQtc2l6ZToyMnB4O30gaDIge2ZvbnQt c2l6ZToxNnB4O30gaDMge2ZvbnQtc2l6ZToxNHB4O30gcCB7Zm9udC1zaXplOjEycHg7fSBhIHtj b2xvcjpibGFjazt9IC5saW5lIHtoZWlnaHQ6MXB4O2JhY2tncm91bmQtPGJyPgpjb2xvcjojNTI1 RDc2O2JvcmRlcjpub25lO30mbHQ7L3N0eWxlJmd0OyZsdDsvaGVhZCZndDsmbHQ7Ym9keSZndDsm bHQ7aDEmZ3Q7SFRUUCBTdGF0dXMgNTAwIOKAkyBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3ImbHQ7L2gx Jmd0OyZsdDtociBjbGFzcz0mcXVvdDtsaW5lJnF1b3Q7IC8mZ3Q7Jmx0O3AmZ3Q7Jmx0O2ImZ3Q7 VHlwZSZsdDsvYiZndDsgRXhjZXB0aW9uIFJlcG9ydCZsdDsvcCZndDsmbHQ7cCZndDsmbHQ7YiZn dDtNZXNzYWdlJmx0Oy9iJmd0Ozxicj4KY29tLm5ldHNjYXBlLmNlcnRzcnYuYmFzZS5CYWRSZXF1 ZXN0RXhjZXB0aW9uOiBVbmFibGUgdG8gZ2V0IGVucm9sbG1lbnQgdGVtcGxhdGUgZm9yIGFjbWVJ UEFTZXJ2ZXJDZXJ0OiBQcm9maWxlIG5vdCBmb3VuZCZsdDsvcCZndDsmbHQ7cCZndDsmbHQ7YiZn dDtEZXNjcmlwdGlvbiZsdDsvYiZndDsgVGhlIHNlcnZlciBlbmNvdW50ZXJlZCBhbiB1bmV4cGVj dGVkIGNvbmRpdGlvbiB0aGF0PGJyPgpwcmV2ZW50ZWQgaXQgZnJvbSBmdWxmaWxsaW5nIHRoZSBy ZXF1ZXN0LiZsdDsvcCZndDsmbHQ7cCZndDsmbHQ7YiZndDtFeGNlcHRpb24mbHQ7L2ImZ3Q7Jmx0 Oy9wJmd0OyZsdDtwcmUmZ3Q7b3JnLmpib3NzLnJlc3RlYXN5LnNwaS5VbmhhbmRsZWRFeGNlcHRp b246IGNvbS5uZXRzY2FwZS5jZXJ0c3J2LmJhc2UuQmFkUmVxdWVzdEV4Y2VwdGlvbjogVW5hYmxl IHRvIGdldCBlbnJvbGxtZW50IHRlbXBsYXRlIGZvcjxicj4KYWNtZUlQQVNlcnZlckNlcnQ6IFBy b2ZpbGUgbm90IGZvdW5kPGJyPgrCoCDCoCDCoCDCoCBvcmcuamJvc3MucmVzdGVhc3kuY29yZS5F eGNlcHRpb25IYW5kbGVyLmhhbmRsZUFwcGxpY2F0aW9uRXhjZXB0aW9uKEV4Y2VwdGlvbkhhbmRs ZXIuamF2YTo3OCk8YnI+CsKgIMKgIMKgIMKgIG9yZy5qYm9zcy5yZXN0ZWFzeS5jb3JlLkV4Y2Vw dGlvbkhhbmRsZXIuaGFuZGxlRXhjZXB0aW9uKEV4Y2VwdGlvbkhhbmRsZXIuamF2YToyMjIpPGJy PgrCoCDCoCDCoCDCoCBvcmcuamJvc3MucmVzdGVhc3kuY29yZS5TeW5jaHJvbm91c0Rpc3BhdGNo ZXIud3JpdGVFeGNlcHRpb24oU3luY2hyb25vdXNEaXNwYXRjaGVyLmphdmE6MTc5KTxicj4KwqAg wqAgwqAgwqAgb3JnLmpib3NzLnJlc3RlYXN5LmNvcmUuU3luY2hyb25vdXNEaXNwYXRjaGVyLmlu dm9rZShTeW5jaHJvbm91c0Rpc3BhdGNoZXIuamF2YTo0MjIpPGJyPgrCoCDCoCDCoCDCoCBvcmcu amJvc3MucmVzdGVhc3kuY29yZS5TeW5jaHJvbm91c0Rpc3BhdGNoZXIuaW52b2tlKFN5bmNocm9u b3VzRGlzcGF0Y2hlci5qYXZhOjIxMyk8YnI+CsKgIMKgIMKgIMKgIG9yZy5qYm9zcy5yZXN0ZWFz eS5wbHVnaW5zLnNlcnZlci5zZXJ2bGV0LlNlcnZsZXRDb250YWluZXJEaXNwYXRjaGVyLnNlcnZp Y2UoU2VydmxldENvbnRhaW5lckRpc3BhdGNoZXIuamF2YToyMjgpPGJyPgrCoCDCoCDCoCDCoCBv cmcuamJvc3MucmVzdGVhc3kucGx1Z2lucy5zZXJ2ZXIuc2VydmxldC5IdHRwU2VydmxldERpc3Bh dGNoZXIuc2VydmljZShIdHRwU2VydmxldERpc3BhdGNoZXIuamF2YTo1Nik8YnI+CsKgIMKgIMKg IMKgIG9yZy5qYm9zcy5yZXN0ZWFzeS5wbHVnaW5zLnNlcnZlci5zZXJ2bGV0Lkh0dHBTZXJ2bGV0 RGlzcGF0Y2hlci5zZXJ2aWNlKEh0dHBTZXJ2bGV0RGlzcGF0Y2hlci5qYXZhOjUxKTxicj4KwqAg wqAgwqAgwqAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0LnNlcnZpY2UoSHR0cFNlcnZs ZXQuamF2YTo3NDEpPGJyPgrCoCDCoCDCoCDCoCBzdW4ucmVmbGVjdC5HZW5lcmF0ZWRNZXRob2RB Y2Nlc3NvcjQzLmludm9rZShVbmtub3duIFNvdXJjZSk8YnI+CsKgIMKgIMKgIMKgIHN1bi5yZWZs ZWN0LkRlbGVnYXRpbmdNZXRob2RBY2Nlc3NvckltcGwuaW52b2tlKERlbGVnYXRpbmdNZXRob2RB Y2Nlc3NvckltcGwuamF2YTo0Myk8YnI+CsKgIMKgIMKgIMKgIGphdmEubGFuZy5yZWZsZWN0Lk1l dGhvZC5pbnZva2UoTWV0aG9kLmphdmE6NDk4KTxicj4KwqAgwqAgwqAgwqAgb3JnLmFwYWNoZS5j YXRhbGluYS5zZWN1cml0eS5TZWN1cml0eVV0aWwkMS5ydW4oU2VjdXJpdHlVdGlsLmphdmE6Mjgy KTxicj4KwqAgwqAgwqAgwqAgb3JnLmFwYWNoZS5jYXRhbGluYS5zZWN1cml0eS5TZWN1cml0eVV0 aWwkMS5ydW4oU2VjdXJpdHlVdGlsLmphdmE6Mjc5KTxicj4KwqAgwqAgwqAgwqAgamF2YS5zZWN1 cml0eS5BY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZChOYXRpdmUgTWV0aG9kKTxicj4KwqAg wqAgwqAgwqAgamF2YXguc2VjdXJpdHkuYXV0aC5TdWJqZWN0LmRvQXNQcml2aWxlZ2VkKFN1Ympl Y3QuamF2YTo1NDkpPGJyPgrCoCDCoCDCoCDCoCBvcmcuYXBhY2hlLmNhdGFsaW5hLnNlY3VyaXR5 LlNlY3VyaXR5VXRpbC5leGVjdXRlKFNlY3VyaXR5VXRpbC5qYXZhOjMxNCk8YnI+CsKgIMKgIMKg IMKgIG9yZy5hcGFjaGUuY2F0YWxpbmEuc2VjdXJpdHkuU2VjdXJpdHlVdGlsLmRvQXNQcml2aWxl Z2UoU2VjdXJpdHlVdGlsLmphdmE6MTcwKTxicj4KwqAgwqAgwqAgwqAgamF2YS5zZWN1cml0eS5B Y2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZChOYXRpdmUgTWV0aG9kKTxicj4KwqAgwqAgwqAg wqAgb3JnLmFwYWNoZS50b21jYXQud2Vic29ja2V0LnNlcnZlci5Xc0ZpbHRlci5kb0ZpbHRlcihX c0ZpbHRlci5qYXZhOjUzKTxicj4KwqAgwqAgwqAgwqAgc3VuLnJlZmxlY3QuR2VuZXJhdGVkTWV0 aG9kQWNjZXNzb3I0Mi5pbnZva2UoVW5rbm93biBTb3VyY2UpPGJyPgrCoCDCoCDCoCDCoCBzdW4u cmVmbGVjdC5EZWxlZ2F0aW5nTWV0aG9kQWNjZXNzb3JJbXBsLmludm9rZShEZWxlZ2F0aW5nTWV0 aG9kQWNjZXNzb3JJbXBsLmphdmE6NDMpPGJyPgrCoCDCoCDCoCDCoCBqYXZhLmxhbmcucmVmbGVj dC5NZXRob2QuaW52b2tlKE1ldGhvZC5qYXZhOjQ5OCk8YnI+CsKgIMKgIMKgIMKgIG9yZy5hcGFj aGUuY2F0YWxpbmEuc2VjdXJpdHkuU2VjdXJpdHlVdGlsJDEucnVuKFNlY3VyaXR5VXRpbC5qYXZh OjI4Mik8YnI+CsKgIMKgIMKgIMKgIG9yZy5hcGFjaGUuY2F0YWxpbmEuc2VjdXJpdHkuU2VjdXJp dHlVdGlsJDEucnVuKFNlY3VyaXR5VXRpbC5qYXZhOjI3OSk8YnI+CsKgIMKgIMKgIMKgIGphdmEu c2VjdXJpdHkuQWNjZXNzQ29udHJvbGxlci5kb1ByaXZpbGVnZWQoTmF0aXZlIE1ldGhvZCk8YnI+ CsKgIMKgIMKgIMKgIGphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdC5kb0FzUHJpdmlsZWdlZChT dWJqZWN0LmphdmE6NTQ5KTxicj4KwqAgwqAgwqAgwqAgb3JnLmFwYWNoZS5jYXRhbGluYS5zZWN1 cml0eS5TZWN1cml0eVV0aWwuZXhlY3V0ZShTZWN1cml0eVV0aWwuamF2YTozMTQpPGJyPgrCoCDC oCDCoCDCoCBvcmcuYXBhY2hlLmNhdGFsaW5hLnNlY3VyaXR5LlNlY3VyaXR5VXRpbC5kb0FzUHJp dmlsZWdlKFNlY3VyaXR5VXRpbC5qYXZhOjI1Myk8YnI+CiZsdDsvcHJlJmd0OyZsdDtwJmd0OyZs dDtiJmd0O1Jvb3QgQ2F1c2UmbHQ7L2ImZ3Q7Jmx0Oy9wJmd0OyZsdDtwcmUmZ3Q7Y29tLm5ldHNj YXBlLmNlcnRzcnYuYmFzZS5CYWRSZXF1ZXN0RXhjZXB0aW9uOiBVbmFibGUgdG8gZ2V0IGVucm9s bG1lbnQgdGVtcGxhdGUgZm9yIGFjbWVJUEFTZXJ2ZXJDZXJ0OiBQcm9maWxlIG5vdCBmb3VuZDxi cj4KwqAgwqAgwqAgwqAgc3VuLnJlZmxlY3QuTmF0aXZlQ29uc3RydWN0b3JBY2Nlc3NvckltcGwu bmV3SW5zdGFuY2UwKE5hdGl2ZSBNZXRob2QpPGJyPgrCoCDCoCDCoCDCoCBzdW4ucmVmbGVjdC5O YXRpdmVDb25zdHJ1Y3RvckFjY2Vzc29ySW1wbC5uZXdJbnN0YW5jZShOYXRpdmVDb25zdHJ1Y3Rv ckFjY2Vzc29ySW1wbC5qYXZhOjYyKTxicj4KwqAgwqAgwqAgwqAgc3VuLnJlZmxlY3QuRGVsZWdh dGluZ0NvbnN0cnVjdG9yQWNjZXNzb3JJbXBsLm5ld0luc3RhbmNlKERlbGVnYXRpbmdDb25zdHJ1 Y3RvckFjY2Vzc29ySW1wbC5qYXZhOjQ1KTxicj4KwqAgwqAgwqAgwqAgamF2YS5sYW5nLnJlZmxl Y3QuQ29uc3RydWN0b3IubmV3SW5zdGFuY2UoQ29uc3RydWN0b3IuamF2YTo0MjMpPGJyPgrCoCDC oCDCoCDCoCBjb20ubmV0c2NhcGUuY2VydHNydi5jbGllbnQuUEtJQ2xpZW50LmhhbmRsZUVycm9y UmVzcG9uc2UoUEtJQ2xpZW50LmphdmE6MTM1KTxicj4KwqAgwqAgwqAgwqAgY29tLm5ldHNjYXBl LmNlcnRzcnYuY2xpZW50LlBLSUNsaWVudC5nZXRFbnRpdHkoUEtJQ2xpZW50LmphdmE6MTQzKTxi cj4KwqAgwqAgwqAgwqAgPGEgaHJlZj0iaHR0cDovL2NvbS5uZXRzY2FwZS5jZXJ0c3J2LmNhIiB0 YXJnZXQ9Il9ibGFuayI+Y29tLm5ldHNjYXBlLmNlcnRzcnYuY2E8L2E+LkNBQ2VydENsaWVudC5n ZXRFbnJvbGxtZW50VGVtcGxhdGUoQ0FDZXJ0Q2xpZW50LmphdmE6MTY3KTxicj4KwqAgwqAgwqAg wqAgb3JnLmRvZ3RhZ3BraS5hY21lLmlzc3Vlci5QS0lJc3N1ZXIuaXNzdWVDZXJ0aWZpY2F0ZShQ S0lJc3N1ZXIuamF2YToxNDgpPGJyPgrCoCDCoCDCoCDCoCBvcmcuZG9ndGFncGtpLmFjbWUuc2Vy dmVyLkFDTUVGaW5hbGl6ZU9yZGVyU2VydmljZS5oYW5kbGVQT1NUKEFDTUVGaW5hbGl6ZU9yZGVy U2VydmljZS5qYXZhOjkxKTxicj4KwqAgwqAgwqAgwqAgc3VuLnJlZmxlY3QuTmF0aXZlTWV0aG9k QWNjZXNzb3JJbXBsLmludm9rZTAoTmF0aXZlIE1ldGhvZCk8YnI+CsKgIMKgIMKgIMKgIHN1bi5y ZWZsZWN0Lk5hdGl2ZU1ldGhvZEFjY2Vzc29ySW1wbC5pbnZva2UoTmF0aXZlTWV0aG9kQWNjZXNz b3JJbXBsLmphdmE6NjIpPGJyPgrCoCDCoCDCoCDCoCBzdW4ucmVmbGVjdC5EZWxlZ2F0aW5nTWV0 aG9kQWNjZXNzb3JJbXBsLmludm9rZShEZWxlZ2F0aW5nTWV0aG9kQWNjZXNzb3JJbXBsLmphdmE6 NDMpPGJyPgrCoCDCoCDCoCDCoCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QuaW52b2tlKE1ldGhv ZC5qYXZhOjQ5OCk8YnI+CsKgIMKgIMKgIMKgIG9yZy5qYm9zcy5yZXN0ZWFzeS5jb3JlLk1ldGhv ZEluamVjdG9ySW1wbC5pbnZva2UoTWV0aG9kSW5qZWN0b3JJbXBsLmphdmE6MTQwKTxicj4KwqAg wqAgwqAgwqAgb3JnLmpib3NzLnJlc3RlYXN5LmNvcmUuUmVzb3VyY2VNZXRob2RJbnZva2VyLmlu dm9rZU9uVGFyZ2V0KFJlc291cmNlTWV0aG9kSW52b2tlci5qYXZhOjI5NSk8YnI+CsKgIMKgIMKg IMKgIG9yZy5qYm9zcy5yZXN0ZWFzeS5jb3JlLlJlc291cmNlTWV0aG9kSW52b2tlci5pbnZva2Uo UmVzb3VyY2VNZXRob2RJbnZva2VyLmphdmE6MjQ5KTxicj4KwqAgwqAgwqAgwqAgb3JnLmpib3Nz LnJlc3RlYXN5LmNvcmUuUmVzb3VyY2VNZXRob2RJbnZva2VyLmludm9rZShSZXNvdXJjZU1ldGhv ZEludm9rZXIuamF2YToyMzYpPGJyPgrCoCDCoCDCoCDCoCBvcmcuamJvc3MucmVzdGVhc3kuY29y ZS5TeW5jaHJvbm91c0Rpc3BhdGNoZXIuaW52b2tlKFN5bmNocm9ub3VzRGlzcGF0Y2hlci5qYXZh OjQwNik8YnI+CsKgIMKgIMKgIMKgIG9yZy5qYm9zcy5yZXN0ZWFzeS5jb3JlLlN5bmNocm9ub3Vz RGlzcGF0Y2hlci5pbnZva2UoU3luY2hyb25vdXNEaXNwYXRjaGVyLmphdmE6MjEzKTxicj4KwqAg wqAgwqAgwqAgb3JnLmpib3NzLnJlc3RlYXN5LnBsdWdpbnMuc2VydmVyLnNlcnZsZXQuU2Vydmxl dENvbnRhaW5lckRpc3BhdGNoZXIuc2VydmljZShTZXJ2bGV0Q29udGFpbmVyRGlzcGF0Y2hlci5q YXZhOjIyOCk8YnI+CsKgIMKgIMKgIMKgIG9yZy5qYm9zcy5yZXN0ZWFzeS5wbHVnaW5zLnNlcnZl ci5zZXJ2bGV0Lkh0dHBTZXJ2bGV0RGlzcGF0Y2hlci5zZXJ2aWNlKEh0dHBTZXJ2bGV0RGlzcGF0 Y2hlci5qYXZhOjU2KTxicj4KwqAgwqAgwqAgwqAgb3JnLmpib3NzLnJlc3RlYXN5LnBsdWdpbnMu c2VydmVyLnNlcnZsZXQuSHR0cFNlcnZsZXREaXNwYXRjaGVyLnNlcnZpY2UoSHR0cFNlcnZsZXRE aXNwYXRjaGVyLmphdmE6NTEpPGJyPgrCoCDCoCDCoCDCoCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0 cFNlcnZsZXQuc2VydmljZShIdHRwU2VydmxldC5qYXZhOjc0MSk8YnI+CsKgIMKgIMKgIMKgIHN1 bi5yZWZsZWN0LkdlbmVyYXRlZE1ldGhvZEFjY2Vzc29yNDMuaW52b2tlKFVua25vd24gU291cmNl KTxicj4KwqAgwqAgwqAgwqAgc3VuLnJlZmxlY3QuRGVsZWdhdGluZ01ldGhvZEFjY2Vzc29ySW1w bC5pbnZva2UoRGVsZWdhdGluZ01ldGhvZEFjY2Vzc29ySW1wbC5qYXZhOjQzKTxicj4KwqAgwqAg wqAgwqAgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kLmludm9rZShNZXRob2QuamF2YTo0OTgpPGJy PgrCoCDCoCDCoCDCoCBvcmcuYXBhY2hlLmNhdGFsaW5hLnNlY3VyaXR5LlNlY3VyaXR5VXRpbCQx LnJ1bihTZWN1cml0eVV0aWwuamF2YToyODIpPGJyPgrCoCDCoCDCoCDCoCBvcmcuYXBhY2hlLmNh dGFsaW5hLnNlY3VyaXR5LlNlY3VyaXR5VXRpbCQxLnJ1bihTZWN1cml0eVV0aWwuamF2YToyNzkp PGJyPgrCoCDCoCDCoCDCoCBqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xsZXIuZG9Qcml2aWxl Z2VkKE5hdGl2ZSBNZXRob2QpPGJyPgrCoCDCoCDCoCDCoCBqYXZheC5zZWN1cml0eS5hdXRoLlN1 YmplY3QuZG9Bc1ByaXZpbGVnZWQoU3ViamVjdC5qYXZhOjU0OSk8YnI+CsKgIMKgIMKgIMKgIG9y Zy5hcGFjaGUuY2F0YWxpbmEuc2VjdXJpdHkuU2VjdXJpdHlVdGlsLmV4ZWN1dGUoU2VjdXJpdHlV dGlsLmphdmE6MzE0KTxicj4KwqAgwqAgwqAgwqAgb3JnLmFwYWNoZS5jYXRhbGluYS5zZWN1cml0 eS5TZWN1cml0eVV0aWwuZG9Bc1ByaXZpbGVnZShTZWN1cml0eVV0aWwuamF2YToxNzApPGJyPgrC oCDCoCDCoCDCoCBqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xsZXIuZG9Qcml2aWxlZ2VkKE5h dGl2ZSBNZXRob2QpPGJyPgrCoCDCoCDCoCDCoCBvcmcuYXBhY2hlLnRvbWNhdC53ZWJzb2NrZXQu c2VydmVyLldzRmlsdGVyLmRvRmlsdGVyKFdzRmlsdGVyLmphdmE6NTMpPGJyPgrCoCDCoCDCoCDC oCBzdW4ucmVmbGVjdC5HZW5lcmF0ZWRNZXRob2RBY2Nlc3NvcjQyLmludm9rZShVbmtub3duIFNv dXJjZSk8YnI+CsKgIMKgIMKgIMKgIHN1bi5yZWZsZWN0LkRlbGVnYXRpbmdNZXRob2RBY2Nlc3Nv ckltcGwuaW52b2tlKERlbGVnYXRpbmdNZXRob2RBY2Nlc3NvckltcGwuamF2YTo0Myk8YnI+CsKg IMKgIMKgIMKgIGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZC5pbnZva2UoTWV0aG9kLmphdmE6NDk4 KTxicj4KwqAgwqAgwqAgwqAgb3JnLmFwYWNoZS5jYXRhbGluYS5zZWN1cml0eS5TZWN1cml0eVV0 aWwkMS5ydW4oU2VjdXJpdHlVdGlsLmphdmE6MjgyKTxicj4KwqAgwqAgwqAgwqAgb3JnLmFwYWNo ZS5jYXRhbGluYS5zZWN1cml0eS5TZWN1cml0eVV0aWwkMS5ydW4oU2VjdXJpdHlVdGlsLmphdmE6 Mjc5KTxicj4KwqAgwqAgwqAgwqAgamF2YS5zZWN1cml0eS5BY2Nlc3NDb250cm9sbGVyLmRvUHJp dmlsZWdlZChOYXRpdmUgTWV0aG9kKTxicj4KwqAgwqAgwqAgwqAgamF2YXguc2VjdXJpdHkuYXV0 aC5TdWJqZWN0LmRvQXNQcml2aWxlZ2VkKFN1YmplY3QuamF2YTo1NDkpPGJyPgrCoCDCoCDCoCDC oCBvcmcuYXBhY2hlLmNhdGFsaW5hLnNlY3VyaXR5LlNlY3VyaXR5VXRpbC5leGVjdXRlKFNlY3Vy aXR5VXRpbC5qYXZhOjMxNCk8YnI+CsKgIMKgIMKgIMKgIG9yZy5hcGFjaGUuY2F0YWxpbmEuc2Vj dXJpdHkuU2VjdXJpdHlVdGlsLmRvQXNQcml2aWxlZ2UoU2VjdXJpdHlVdGlsLmphdmE6MjUzKTxi cj4KJmx0Oy9wcmUmZ3Q7Jmx0O3AmZ3Q7Jmx0O2ImZ3Q7Tm90ZSZsdDsvYiZndDsgVGhlIGZ1bGwg c3RhY2sgdHJhY2Ugb2YgdGhlIHJvb3QgY2F1c2UgaXMgYXZhaWxhYmxlIGluIHRoZSBzZXJ2ZXIg bG9ncy4mbHQ7L3AmZ3Q7Jmx0O2hyIGNsYXNzPSZxdW90O2xpbmUmcXVvdDsgLyZndDsmbHQ7aDMm Z3Q7QXBhY2hlIFRvbWNhdC85LjAuMzAmbHQ7L2gzJmd0OyZsdDsvYm9keSZndDsmbHQ7L2h0bWwm Z3Q7PGJyPgoyMDIxLTAzLTIxIDA5OjU0OjA3LDA4NDpERUJVRzpjZXJ0Ym90LmxvZzpFeGl0aW5n IGFibm9ybWFsbHk6PGJyPgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6PGJyPgrC oCBGaWxlICZxdW90Oy91c3IvYmluL2NlcnRib3QmcXVvdDssIGxpbmUgMTEsIGluICZsdDttb2R1 bGUmZ3Q7PGJyPgrCoCDCoCBsb2FkX2VudHJ5X3BvaW50KCYjMzk7Y2VydGJvdD09MC4zMS4wJiMz OTssICYjMzk7Y29uc29sZV9zY3JpcHRzJiMzOTssICYjMzk7Y2VydGJvdCYjMzk7KSgpPGJyPgrC oCBGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjMvZGlzdC1wYWNrYWdlcy9jZXJ0Ym90L21haW4u cHkmcXVvdDssIGxpbmUgMTM2NSwgaW4gbWFpbjxicj4KwqAgwqAgcmV0dXJuIGNvbmZpZy5mdW5j KGNvbmZpZywgcGx1Z2lucyk8YnI+CsKgIEZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMy9kaXN0 LXBhY2thZ2VzL2NlcnRib3QvbWFpbi5weSZxdW90OywgbGluZSAxMjUwLCBpbiBjZXJ0b25seTxi cj4KwqAgwqAgbGluZWFnZSA9IF9nZXRfYW5kX3NhdmVfY2VydChsZV9jbGllbnQsIGNvbmZpZywg ZG9tYWlucywgY2VydG5hbWUsIGxpbmVhZ2UpPGJyPgrCoCBGaWxlICZxdW90Oy91c3IvbGliL3B5 dGhvbjMvZGlzdC1wYWNrYWdlcy9jZXJ0Ym90L21haW4ucHkmcXVvdDssIGxpbmUgMTIxLCBpbiBf Z2V0X2FuZF9zYXZlX2NlcnQ8YnI+CsKgIMKgIGxpbmVhZ2UgPSBsZV9jbGllbnQub2J0YWluX2Fu ZF9lbnJvbGxfY2VydGlmaWNhdGUoZG9tYWlucywgY2VydG5hbWUpPGJyPgrCoCBGaWxlICZxdW90 Oy91c3IvbGliL3B5dGhvbjMvZGlzdC1wYWNrYWdlcy9jZXJ0Ym90L2NsaWVudC5weSZxdW90Oywg bGluZSA0MTAsIGluIG9idGFpbl9hbmRfZW5yb2xsX2NlcnRpZmljYXRlPGJyPgrCoCDCoCBjZXJ0 LCBjaGFpbiwga2V5LCBfID0gc2VsZi5vYnRhaW5fY2VydGlmaWNhdGUoZG9tYWlucyk8YnI+CsKg IEZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMy9kaXN0LXBhY2thZ2VzL2NlcnRib3QvY2xpZW50 LnB5JnF1b3Q7LCBsaW5lIDM2OSwgaW4gb2J0YWluX2NlcnRpZmljYXRlPGJyPgrCoCDCoCBjZXJ0 LCBjaGFpbiA9IHNlbGYub2J0YWluX2NlcnRpZmljYXRlX2Zyb21fY3NyKGNzciwgb3JkZXJyKTxi cj4KwqAgRmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24zL2Rpc3QtcGFja2FnZXMvY2VydGJvdC9j bGllbnQucHkmcXVvdDssIGxpbmUgMzAxLCBpbiBvYnRhaW5fY2VydGlmaWNhdGVfZnJvbV9jc3I8 YnI+CsKgIMKgIG9yZGVyciA9IHNlbGYuYWNtZS5maW5hbGl6ZV9vcmRlcihvcmRlcnIsIGRlYWRs aW5lKTxicj4KwqAgRmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24zL2Rpc3QtcGFja2FnZXMvYWNt ZS9jbGllbnQucHkmcXVvdDssIGxpbmUgOTI3LCBpbiBmaW5hbGl6ZV9vcmRlcjxicj4KwqAgwqAg cmV0dXJuIHNlbGYuY2xpZW50LmZpbmFsaXplX29yZGVyKG9yZGVyciwgZGVhZGxpbmUpPGJyPgrC oCBGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjMvZGlzdC1wYWNrYWdlcy9hY21lL2NsaWVudC5w eSZxdW90OywgbGluZSA3NTQsIGluIGZpbmFsaXplX29yZGVyPGJyPgrCoCDCoCBzZWxmLl9wb3N0 KG9yZGVyci5ib2R5LmZpbmFsaXplLCB3cmFwcGVkX2Nzcik8YnI+CsKgIEZpbGUgJnF1b3Q7L3Vz ci9saWIvcHl0aG9uMy9kaXN0LXBhY2thZ2VzL2FjbWUvY2xpZW50LnB5JnF1b3Q7LCBsaW5lIDk2 LCBpbiBfcG9zdDxicj4KwqAgwqAgcmV0dXJuIDxhIGhyZWY9Imh0dHA6Ly9zZWxmLm5ldC5wb3N0 IiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5zZWxmLm5ldC5wb3N0PC9hPigqYXJn cywgKiprd2FyZ3MpPGJyPgrCoCBGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjMvZGlzdC1wYWNr YWdlcy9hY21lL2NsaWVudC5weSZxdW90OywgbGluZSAxMjA0LCBpbiBwb3N0PGJyPgrCoCDCoCBy ZXR1cm4gc2VsZi5fcG9zdF9vbmNlKCphcmdzLCAqKmt3YXJncyk8YnI+CsKgIEZpbGUgJnF1b3Q7 L3Vzci9saWIvcHl0aG9uMy9kaXN0LXBhY2thZ2VzL2FjbWUvY2xpZW50LnB5JnF1b3Q7LCBsaW5l IDEyMTgsIGluIF9wb3N0X29uY2U8YnI+CsKgIMKgIHJlc3BvbnNlID0gc2VsZi5fY2hlY2tfcmVz cG9uc2UocmVzcG9uc2UsIGNvbnRlbnRfdHlwZT1jb250ZW50X3R5cGUpPGJyPgrCoCBGaWxlICZx dW90Oy91c3IvbGliL3B5dGhvbjMvZGlzdC1wYWNrYWdlcy9hY21lL2NsaWVudC5weSZxdW90Oywg bGluZSAxMDc5LCBpbiBfY2hlY2tfcmVzcG9uc2U8YnI+CsKgIMKgIHJhaXNlIGVycm9ycy5DbGll bnRFcnJvcihyZXNwb25zZSk8YnI+CmFjbWUuZXJyb3JzLkNsaWVudEVycm9yOiAmbHQ7UmVzcG9u c2UgWzUwMF0mZ3Q7PGJyPgoyMDIxLTAzLTIxIDA5OjU0OjA3LDA4NDpFUlJPUjpjZXJ0Ym90Lmxv ZzpBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkOjxicj4KPGJyPgpGcm9tIHdoYXQgSSBnYXRo ZXJlZCBwa2ktc2VydmVyIHNob3VsZCB1c2UgdGhlIHByb2ZpbGUgZGVmaW5lZCBpbiBmcmVlaXBh IHJpZ2h0Pzxicj4KJCBzdWRvIGxzIC1sIC91c3Ivc2hhcmUvaXBhL3Byb2ZpbGVzL2FjbWVJUEFT ZXJ2ZXJDZXJ0LmNmZyA8YnI+Ci1ydy1yLS1yLS0uIDEgcm9vdCByb290IDY3MDcgRGVjIDIzIDE1 OjM4IC91c3Ivc2hhcmUvaXBhL3Byb2ZpbGVzL2FjbWVJUEFTZXJ2ZXJDZXJ0LmNmZzxicj4KPGJy PgpXaGF0JiMzOTtzIHRoZSBiZXN0IHdheSB0byBmaXggdGhlIGNvbmZpZ3VyYXRpb24/PGJyPgpJ cyBpdCBiZXN0IHRvIG9wZW4gYSBidWcgZm9yIHRoaXM/IEkga25vdyBjZW50b3Mgc3RyZWFtIGlz IG5vdCB5ZXQgdXAgdG8gZGF0ZSwgc28gaXQmIzM5O3MgbWF5YmUgYWxyZWFkeSBmaXhlZC48YnI+ Cjxicj4KVGhhbmtzPGJyPgo8YnI+Cjxicj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX188YnI+CkZyZWVJUEEtdXNlcnMgbWFpbGluZyBsaXN0IC0tIDxhIGhy ZWY9Im1haWx0bzpmcmVlaXBhLXVzZXJzQGxpc3RzLmZlZG9yYWhvc3RlZC5vcmciIHRhcmdldD0i X2JsYW5rIj5mcmVlaXBhLXVzZXJzQGxpc3RzLmZlZG9yYWhvc3RlZC5vcmc8L2E+PGJyPgpUbyB1 bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIDxhIGhyZWY9Im1haWx0bzpmcmVlaXBhLXVzZXJz LWxlYXZlQGxpc3RzLmZlZG9yYWhvc3RlZC5vcmciIHRhcmdldD0iX2JsYW5rIj5mcmVlaXBhLXVz ZXJzLWxlYXZlQGxpc3RzLmZlZG9yYWhvc3RlZC5vcmc8L2E+PGJyPgpGZWRvcmEgQ29kZSBvZiBD b25kdWN0OiA8YSBocmVmPSJodHRwczovL2RvY3MuZmVkb3JhcHJvamVjdC5vcmcvZW4tVVMvcHJv amVjdC9jb2RlLW9mLWNvbmR1Y3QvIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5o dHRwczovL2RvY3MuZmVkb3JhcHJvamVjdC5vcmcvZW4tVVMvcHJvamVjdC9jb2RlLW9mLWNvbmR1 Y3QvPC9hPjxicj4KTGlzdCBHdWlkZWxpbmVzOiA8YSBocmVmPSJodHRwczovL2ZlZG9yYXByb2pl Y3Qub3JnL3dpa2kvTWFpbGluZ19saXN0X2d1aWRlbGluZXMiIHJlbD0ibm9yZWZlcnJlciIgdGFy Z2V0PSJfYmxhbmsiPmh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9NYWlsaW5nX2xpc3Rf Z3VpZGVsaW5lczwvYT48YnI+Ckxpc3QgQXJjaGl2ZXM6IDxhIGhyZWY9Imh0dHBzOi8vbGlzdHMu ZmVkb3JhaG9zdGVkLm9yZy9hcmNoaXZlcy9saXN0L2ZyZWVpcGEtdXNlcnNAbGlzdHMuZmVkb3Jh aG9zdGVkLm9yZyIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9saXN0 cy5mZWRvcmFob3N0ZWQub3JnL2FyY2hpdmVzL2xpc3QvZnJlZWlwYS11c2Vyc0BsaXN0cy5mZWRv cmFob3N0ZWQub3JnPC9hPjxicj4KRG8gbm90IHJlcGx5IHRvIHNwYW0gb24gdGhlIGxpc3QsIHJl cG9ydCBpdDogPGEgaHJlZj0iaHR0cHM6Ly9wYWd1cmUuaW8vZmVkb3JhLWluZnJhc3RydWN0dXJl IiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL3BhZ3VyZS5pby9mZWRv cmEtaW5mcmFzdHJ1Y3R1cmU8L2E+PGJyPgo8L2Jsb2NrcXVvdGU+PC9kaXY+PGJyIGNsZWFyPSJh bGwiPjxicj4tLSA8YnI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX3NpZ25hdHVyZSI+PGRp diBkaXI9Imx0ciI+PGRpdj4KICAgICAgICA8cCBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDttYXJn aW46MHB4O3BhZGRpbmc6MHB4O2ZvbnQtc2l6ZToxNHB4O3RleHQtdHJhbnNmb3JtOmNhcGl0YWxp emU7Zm9udC1mYW1pbHk6JnF1b3Q7UmVkSGF0VGV4dCZxdW90OyxzYW5zLXNlcmlmIj4KICAgICAg ICAgIDxzcGFuPi0tPGJyPjwvc3Bhbj48L3A+PHAgc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQ7bWFy Z2luOjBweDtwYWRkaW5nOjBweDtmb250LXNpemU6MTRweDt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFs aXplO2ZvbnQtZmFtaWx5OiZxdW90O1JlZEhhdFRleHQmcXVvdDssc2Fucy1zZXJpZiI+PHNwYW4+ UmVnYXJkczwvc3Bhbj48L3A+PHAgc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luOjBweDtw YWRkaW5nOjBweDtmb250LXNpemU6MTRweDt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplO2ZvbnQt ZmFtaWx5OiZxdW90O1JlZEhhdFRleHQmcXVvdDssc2Fucy1zZXJpZiI+PHNwYW4+TW9oYW1tYWQg Uml6d2FuPC9zcGFuPiA8c3Bhbj5TaGFpa2g8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOnJnYigx NzAsMTcwLDE3MCk7bWFyZ2luOjBweCI+PC9zcGFuPgogICAgICAgIDwvcD4KICAgICAgICA8cCBz dHlsZT0iZm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZToxMnB4O21hcmdpbjowcHggMHB4IDRw eDt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplO2ZvbnQtZmFtaWx5OiZxdW90O1JlZEhhdFRleHQm cXVvdDssc2Fucy1zZXJpZiI+SGUvSGltL0hpczwvcD4KICAgICAgICA8cCBzdHlsZT0iZm9udC13 ZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZToxMnB4O21hcmdpbjowcHg7dGV4dC10cmFuc2Zvcm06Y2Fw aXRhbGl6ZTtmb250LWZhbWlseTomcXVvdDtSZWRIYXRUZXh0JnF1b3Q7LHNhbnMtc2VyaWYiPgog ICAgICAgICAgPHNwYW4+U2VuaW9yIFNvZnR3YXJlIFF1YWxpdHkgRW5naW5lZXI8L3NwYW4+CiAg ICAgICAgPC9wPgogICAgICAgIDxwIHN0eWxlPSJmb250LXdlaWdodDpub3JtYWw7bWFyZ2luOjBw eCAwcHggNHB4O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OiZxdW90O1JlZEhhdFRleHQmcXVv dDssc2Fucy1zZXJpZiI+CiAgICAgICAgICA8YSBzdHlsZT0iY29sb3I6cmdiKDAsMTM2LDIwNik7 Zm9udC1zaXplOjEycHg7bWFyZ2luOjBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LWZhbWls eTomcXVvdDtSZWRIYXRUZXh0JnF1b3Q7LHNhbnMtc2VyaWYiIGhyZWY9Imh0dHBzOi8vd3d3LnJl ZGhhdC5jb20iIHRhcmdldD0iX2JsYW5rIj5SZWQgSGF0IDxzcGFuPlB1bmU8L3NwYW4+PC9hPgog ICAgICAgIDwvcD4KICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206NHB4Ij4KICAgICAgCiAg ICAgIAogICAgPC9kaXY+CiAgICA8cCBzdHlsZT0iZm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbjow cHg7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6JnF1b3Q7UmVkSGF0VGV4dCZxdW90OyxzYW5z LXNlcmlmIj4KICAgICAgPHNwYW4gc3R5bGU9Im1hcmdpbjowcHg7cGFkZGluZzowcHgiPjxhIHN0 eWxlPSJjb2xvcjpyZ2IoMCwwLDApO2ZvbnQtc2l6ZToxMnB4O21hcmdpbjowcHg7dGV4dC1kZWNv cmF0aW9uOm5vbmU7Zm9udC1mYW1pbHk6JnF1b3Q7UmVkSGF0VGV4dCZxdW90OyxzYW5zLXNlcmlm IiBocmVmPSJtYWlsdG86bXl1c3VmQHJlZGhhdC5jb20iIHRhcmdldD0iX2JsYW5rIj5teXVzdWZA cmVkaGF0LmNvbTwvYT7CoCDCoDwvc3Bhbj4KICAgICAgPHNwYW4+PGJyPk06IDxhIGhyZWY9InRl bDorOTEtOTgyMzk0ODY1NyIgc3R5bGU9ImNvbG9yOnJnYigwLDAsMCk7Zm9udC1zaXplOjEycHg7 bWFyZ2luOjBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LWZhbWlseTomcXVvdDtSZWRIYXRU ZXh0JnF1b3Q7LHNhbnMtc2VyaWYiIHRhcmdldD0iX2JsYW5rIj4rOTEtOTgyMzk0ODY1NzwvYT4g IMKgIMKgPC9zcGFuPgogICAgICA8c3Bhbj5JTTogPHNwYW4+cml6d2FuPC9zcGFuPjwvc3Bhbj4K ICAgIDwvcD4KICAgIAogICAgCgogICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4Ij4KICAg ICAgPHRhYmxlIGJvcmRlcj0iMCI+CiAgICAgICAgPHRib2R5Pjx0cj4KICAgICAgICAgIDx0ZCB3 aWR0aD0iMTAwcHgiPjxhIGhyZWY9Imh0dHBzOi8vcmVkLmh0L3NpZyIgdGFyZ2V0PSJfYmxhbmsi PiA8aW1nIHNyYz0iaHR0cHM6Ly9zdGF0aWMucmVkaGF0LmNvbS9saWJzL3JlZGhhdC9icmFuZC1h c3NldHMvbGF0ZXN0L2NvcnAvbG9nby5wbmciIHdpZHRoPSI5MCIgaGVpZ2h0PSJhdXRvIj48L2E+ IDwvdGQ+CiAgICAgICAgICAKICAgICAgICA8L3RyPgogICAgICA8L3Rib2R5PjwvdGFibGU+CiAg ICA8L2Rpdj4KCiAgPC9kaXY+PC9kaXY+PC9kaXY+Cg== --===============0280602765898534389==--