X-CGP-ClamAV-Result: CLEAN X-VirusScanner: Niversoft's CGPClamav Helper v1.25a (ClamAV 0.103.8/26838) X-Junk-Score: 0 [] X-KAS-Score: 0 [] Return-Path: Received: from mail01.rucotec.ch ([65.21.159.64] verified) by post.selbstdenker.com (CommuniGate Pro SMTP 6.3.17) with ESMTPS id 29942915 for webobjects-dev@wocommunity.org; Sat, 11 Mar 2023 17:27:06 +0100 Received-SPF: pass receiver=post.selbstdenker.com; client-ip=65.21.159.64; envelope-from=markus.ruggiero@rucotec.ch Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 4985C5FA4B for ; Sat, 11 Mar 2023 17:26:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rucotec.ch; s=dkim; t=1678552004; h=from:subject:date:message-id:to:mime-version:content-type:in-reply-to: references; bh=lwZVWTv+pRentudvc8LixPldIEsxp7g4ll8KDgjYepg=; b=K7SVevYwhrYghR6rek0B0X/Ap5sp+2tzz0Srk3Ck0QbGdJVGazKWl4nAcCDQRaIvYOwBP0 3PFDlCmOg9UPKWtAqY263Y2A2O5pOGsrTgml+AOQlWC+/SLIGCzbPk0bRiAmVPNHVfmufQ F8rFXvfBekaHW0a/UcM3zD2yuzzdeadidG3joEvQrRZ/gcwZmfN7tVRB4QruG9JZZSlT1G kd8sAbcfx085uNBFSfdXqC+JEayuKCQDewjxCGGbgjA9mIDUjHpXqdmK1+5PuW7DW+KoNZ d97P+nh5bd9fXiBbzcdKZKuI4qEld+j6d/LNy+nL7kCdPtYmrFAigweBXLzuFw== From: "Markus Ruggiero (rucotec)" Content-Type: multipart/signed; boundary="Apple-Mail=_0C8963FA-8987-49EB-AE01-EDB6B357A464"; protocol="application/pkcs7-signature"; micalg=sha-256 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.2\)) Subject: Re: [WO-DEV] Load additional D2W models? Date: Sat, 11 Mar 2023 11:26:40 -0500 References: To: WebObjects & WOnder Development In-Reply-To: Message-Id: <39FD7F91-E739-4CB8-8EC2-E85371AA1678@rucotec.ch> X-Last-TLS-Session-Version: TLSv1.2 X-Rspamd-Fuzzy: 17dae90d8eba049c120f49ea0a701c8cad669800b345e8e13c4ecf80f6383398566005dc7069b72a47b3536bb0d5d94683c2957a8b727f21515243d2e410aea4 --Apple-Mail=_0C8963FA-8987-49EB-AE01-EDB6B357A464 Content-Type: multipart/alternative; boundary="Apple-Mail=_72F2439A-6DFE-4D28-B0A4-D16D0A23C802" --Apple-Mail=_72F2439A-6DFE-4D28-B0A4-D16D0A23C802 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Well, here are my observations so far: Added code to Application.main() right before the call to = ERXApplication.main() to read in the d2wmodel files. Works well and I = can create a suitable property which I then push with = System.setProperty(). However it seems that when Wonder is initializing that property gets = reset to the default. Whatever I specify in the Properties file will be = used, no matter what I push into System properties. Thus I assume the = ERXProperty code (or something related) reloads all the properties from = the Properties and Properties.dev/.prod and Properties.ruggiero files = zapping my carefully built property. I did not have time to investigate = further (what about defining the property on the command line? Will that = get zapped, too?). So for the time being I edit my Properties file = manually which seems to work and that value is used. Maybe when I find = some free time (anyone having some for sale=F0=9F=98=87?) I might start = to dive deeper into that particular part of Wonder. Oh the Wonders of Wonder ---markus--- PS=20 Why did it "seem to work=E2=80=9D?=20 I had a stray definition for that property already in the global = Properties file. I realized my error when I started to add more d2wmodel = files and my code worked but the model files did not make it, only the = first 5 entries were picked up (which where the ones set in the = Properties file). It took me a moment to figure what was going on. Morale of this story: "Never assume something works just because it = does!" > On 24 Feb 2023, at 22:50, Markus Ruggiero (rucotec) = wrote: >=20 > Hi Ramsey, >=20 > was think in the same lines. Started a test in main() right before = calling EXRApplication.main(). Seems to work in dev mode. Will test in = prod. Unfortunately (well, no really) I=E2=80=99ll be on vacation so I = can only finish my work when I=E2=80=99m back. Will report here. >=20 > J=C3=BCrgen, >=20 > That method was my entry point into searching for a solution. But this = requires to dabble with the Wonder code itself which I dit not want to = do, at least not for a start. Might get back to it after my vacation. >=20 > Thanks all that responded. Even if someone cannot provide an = out-of-the-box solution discussing things here is extremely valuable. > ---markus--- >=20 >=20 >> On 22 Feb 2023, at 20:22, Ramsey Gurley = > = wrote: >>=20 >> Have you tried scanning for your additional model names in a static{} = block in your application class? That should happen very early and seems = like it should have enough access to the classpath to find everything. I = never really used additional model names and just used the = d2w.d2wmodel/user.d2wmodel files. >>=20 >> From: WebObjects & WOnder Development on behalf of Markus Ruggiero = (rucotec) >> Sent: Thursday, February 23, 2023 4:58 AM >> To: WebObjects & WOnder Development >> Subject: [WO-DEV] Re: Load additional D2W models? >>=20 >> Please tick >> [ ] Nobody knows anything >> [ ] Nobody ever had such an idea and does not care >> [ ] Nobody out there anymore >>=20 >>> On 21 Feb 2023, at 15:38, Markus Ruggiero (rucotec) = > wrote: >>>=20 >>> I found this property = =E2=80=9Cer.directtoweb.ERD2WModel.additionalModelNames=E2=80=9D that = can be use to load additional D2W model files. I want to make this = property dynamic so that its list of model names is built from a = directory scan of the resources folder (or a subfolder) and all models = found are loaded. This would allow to have models built around some = grouping criteria like e.g. per entity without having to manually = maintain the list of names in the properties file. I am in a prototype = phase where I play extensively with a rather extensive EOModel, adding = and removing entities. Such functionality would be great to have. >>>=20 >>> Anyone done something like this? When during app startup would be a = good time to build this list? I think it must be done before D2W is = initialized. Probably application.run() right before calling super.run() = might already be too late? >>>=20 >>> Open for any tip, idea, help, code snippets, whatever. >>> Thanks a lot >>>=20 >>> ---markus--- >>>=20 >>>=20 >>>=20 >>=20 >>=20 >> Markus Ruggiero >>=20 >> rucotec GmbH web https://rucotec.ch = >> Leonhardsberg 1 email markus.ruggiero@rucotec.ch = >> 4051 Basel / Switzerland mobile +41 79 508 4701 >>=20 >>=20 >>=20 >>=20 >>=20 >>=20 >>=20 >>=20 >> Confidentiality Notice: This email, including all attachments and = replies thereto, are covered by the Electronic Communications Privacy = Act, 18 U.S.C. Sections 2510-2521 and are legally privileged. This = information is confidential, and intended only for the use of the = individuals or entities named above. If you are not the intended = recipient, you are hereby notified that any disclosure, copying, = distribution or the taking of any action in reliance on the contents of = this transmitted information is strictly prohibited. Please notify us if = you have received this transmission in error. Thank you. >=20 >=20 >=20 >=20 > Markus Ruggiero >=20 > rucotec GmbH web https://rucotec.ch = > Leonhardsberg 1 email markus.ruggiero@rucotec.ch = > 4051 Basel / Switzerland mobile +41 79 508 4701 >=20 >=20 >=20 >=20 >=20 >=20 >=20 >=20 Markus Ruggiero rucotec GmbH web https://rucotec.ch Leonhardsberg 1 email markus.ruggiero@rucotec.ch 4051 Basel / Switzerland mobile +41 79 508 4701 --Apple-Mail=_72F2439A-6DFE-4D28-B0A4-D16D0A23C802 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 Well,= here are my observations so far:

Added code to Application.main() right before the call to = ERXApplication.main() to read in the d2wmodel files. Works well and I = can create a suitable property which I then push with = System.setProperty().

However it seems that when Wonder is initializing that = property gets reset to the default. Whatever I specify in the Properties = file will be used, no matter what I push into System properties. Thus I = assume the ERXProperty code (or something related) reloads all the = properties from the Properties and Properties.dev/.prod and = Properties.ruggiero files zapping my carefully built property. I did not = have time to investigate further (what about defining the property on = the command line? Will that get zapped, too?). So for the time being I = edit my Properties file manually which seems to work and that value is = used. Maybe when I find some free time (anyone having some for = sale=F0=9F=98=87?) I might start to dive deeper into that particular = part of Wonder.

Oh the Wonders of Wonder

---markus---

PS 
Why did it "seem to = work=E2=80=9D? 
I had a stray definition for that = property already in the global Properties file. I realized my error when = I started to add more d2wmodel files and my code worked but the model = files did not make it, only the first 5 entries were picked up (which = where the ones set in the Properties file). It took me a moment to = figure what was going on.

Morale of = this story: "Never assume something works just because it = does!"


On 24 Feb 2023, at 22:50, = Markus Ruggiero (rucotec) <markus.ruggiero@rucotec.ch> wrote:

Hi Ramsey,

was think in the same = lines. Started a test in main() right before calling = EXRApplication.main(). Seems to work in dev mode. Will test in prod. = Unfortunately (well, no really) I=E2=80=99ll be on vacation so I can = only finish my work when I=E2=80=99m back. Will report here.

J=C3=BCrgen,

That method was my entry = point into searching for a solution. But this requires to dabble with = the Wonder code itself which I dit not want to do, at least not for a = start. Might get back to it after my vacation.

Thanks all that responded. Even if = someone cannot provide an out-of-the-box solution discussing things here = is extremely valuable.
---markus---


On 22 = Feb 2023, at 20:22, Ramsey Gurley <Ramsey.Gurley@practicemojo.com> wrote:

Have you tried scanning for your = additional model names in a static{} block in your application class? = That should happen very early and seems like it should have enough = access to the classpath to find everything. I never really used = additional model names and just used the d2w.d2wmodel/user.d2wmodel = files.


From: WebObjects & WOnder = Development on behalf of Markus Ruggiero (rucotec)
Sent: Thursday, February 23, 2023 = 4:58 AM
To: WebObjects & WOnder = Development
Subject: [WO-DEV] Re: Load = additional D2W models?

Please tick
[ =  ] Nobody knows anything
[  ] Nobody ever had = such an idea and does not care
[  ] Nobody out = there anymore

On 21 Feb 2023, at 15:38, Markus Ruggiero = (rucotec) <markus.ruggiero@rucotec.ch> = wrote:

I found this property = =E2=80=9Cer.directtoweb.ERD2WModel.additionalModelNames=E2=80=9D that = can be use to load additional D2W model files. I want to make this = property dynamic so that its list of model names is built from a = directory scan of the resources folder (or a subfolder) and all models = found are loaded. This would allow to have models built around some = grouping criteria like e.g. per entity without having to manually = maintain the list of names in the properties file. I am in a prototype = phase where I play extensively with a rather extensive EOModel, adding = and removing entities. Such functionality would be great to have.

Anyone done something like this? When during = app startup would be a good time to build this list? I think it must be = done before D2W is initialized. Probably application.run() right before = calling super.run() might already be too late?

Open for any tip, idea, help, code snippets, whatever.
Thanks a lot

---markus---





Markus = Ruggiero

rucotec GmbH              =         =   web https://rucotec.ch
Leonhardsberg 1         =           email markus.ruggiero@rucotec.ch
4051 Basel / Switzerland    =      mobile +41 79 508 = 4701









Confidentiality Notice: This email, including all = attachments and replies thereto, are covered by the Electronic = Communications Privacy Act, 18 U.S.C. Sections 2510-2521 and are legally = privileged. This information is confidential, and intended only for the = use of the individuals or entities named above. If you are not the = intended recipient, you are hereby notified that any disclosure, = copying, distribution or the taking of any action in reliance on the = contents of this transmitted information is strictly prohibited. Please = notify us if you have received this transmission in error. Thank = you.




Markus = Ruggiero

rucotec GmbH              =           web https://rucotec.ch
Leonhardsberg 1         =           email markus.ruggiero@rucotec.ch
4051 Basel / = Switzerland         mobile +41 79 508 4701










Markus = Ruggiero


rucotec GmbH              =           web https://rucotec.ch
Leonhardsberg 1         =           email markus.ruggiero@rucotec.ch
4051 Basel / = Switzerland         mobile +41 79 508 4701








= --Apple-Mail=_72F2439A-6DFE-4D28-B0A4-D16D0A23C802-- --Apple-Mail=_0C8963FA-8987-49EB-AE01-EDB6B357A464 Content-Disposition: attachment; filename=smime.p7s Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCCzow ggUiMIIECqADAgECAhEA+bJBRVU88Wt+/tk032YQpDANBgkqhkiG9w0BAQsFADCBljELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTAeFw0yMjA1MTQwMDAwMDBaFw0yNTA1MTMyMzU5 NTlaMCsxKTAnBgkqhkiG9w0BCQEWGm1hcmt1cy5ydWdnaWVyb0BydWNvdGVjLmNoMIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmyWv+KHiux3seusiaMG6GkTnzpAtZAQoNEuUSF/NCltV 8vC5c5mSp3S9nwQwd9vsncR35LsmXWCxDFE/EsOPr8q/ulmuN2DFxar17CoQzR2WkOJ4hn60FjuS gXuQMW2UsdRBajEqaMtmPKmFV3KN4wLi9fQLzve5Psykv+da4TUI5QB1y/1d1F00co+k5Xq16xXG Mq2kBLRpo3+ykiLJHKx/1YVTDhhrT72jkcGcc6GjUINbtqV0Z84m3PC26eOUoSGIqKSOls8GnmQY AA/al1OPBI5AjCh+sxq9MCNtTs4EJW4+sMmZE4CRY/60odb++HxdsRuAwYdqfg5fjHPqvQIDAQAB o4IB0zCCAc8wHwYDVR0jBBgwFoAUCcDy/AvalNtf/ivfqJlCz8ngrQAwHQYDVR0OBBYEFNt3xL6+ uF93aKx7OyZ+5X0tJkOiMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQG CCsGAQUFBwMEBggrBgEFBQcDAjBABgNVHSAEOTA3MDUGDCsGAQQBsjEBAgEBATAlMCMGCCsGAQUF BwIBFhdodHRwczovL3NlY3RpZ28uY29tL0NQUzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3Js LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWls Q0EuY3JsMIGKBggrBgEFBQcBAQR+MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5j b20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYI KwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMCUGA1UdEQQeMByBGm1hcmt1cy5ydWdn aWVyb0BydWNvdGVjLmNoMA0GCSqGSIb3DQEBCwUAA4IBAQBbChLqbBr/EGVvqY3JhZltmRwUBagV XqgrWDgMk3xqkXlPVBucGuRq/wg2sCZBUVQFDXoIiyFrCjQy5A80F3fJ+H/dr8M4KT5hMrPSrsj9 dTQP9T7MnluDRuhma5+x9vSvMIttSD1EhkHJsSvGw0BH2BOrUsqQJP5k2bEa9j8faLZaJRUbQG0G zpZnLUrRbhnndW5OEdKa+F5x9lkWM/Lj0eiEdkYoJJPnD/JF3uqAn12U3FZI4yv+K6IxA9M0kn/M Vxm0AVEdYDsgIkbBI+BhS1QWsOxC4utrY3A2nfLtY0RrbcR7g8B4N/QbD657Wrb7i45485+yYZon cp6nqFwyMIIGEDCCA/igAwIBAgIQTZQsENQ74JQJxYEtOisGTzANBgkqhkiG9w0BAQwFADCBiDEL MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4w HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy dGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgxMTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBljEL MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9y ZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQg QXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAMo87ZQKQf/e+Ua56NY75tqSvysQTqoavIK9viYcKSoq0s2cUIE/bZQu85eoZ9X1 40qOTKl1HyLTJbazGl6nBEibivHbSuejQkq6uIgymiqvTcTlxZql19szfBxxo0Nm9l79L9S+TZNT EDygNfcXlkHKRhBhVFHdJDfqB6Mfi/Wlda43zYgo92yZOpCWjj2mz4tudN55/yE1+XvFnz5xsOFb me/SoY9WAa39uJORHtbC0x7C7aYivToxuIkEQXaumf05Vcf4RgHs+Yd+mwSTManRy6XcCFJE6k/L Ht3ndD3sA3If/JBz6OX2ZebtQdHnKav7Azf+bAhudg7PkFOTuRMCAwEAAaOCAWQwggFgMB8GA1Ud IwQYMBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBQJwPL8C9qU21/+K9+omULPyeCt ADAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcD AgYIKwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9j cmwudXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2 BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VS VHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0 LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAQUR1AKs5whX13o6VbTJxaIwA3RfXehwQOJDI47G9FzGR 87bjgrShfsbMIYdhqpFuSUKzPM1ZVPgNlT+9istp5UQNRsJiD4KLu+E2f102qxxvM3TEoGg65FWM 89YN5yFTvSB5PelcLGnCLwRfCX6iLPvGlh9j30lKzcT+mLO1NLGWMeK1w+vnKhav2VuQVHwpTf64 ZNnXUF8p+5JJpGtkUG/XfdJ5jR3YCq8H0OPZkNoVkDQ5CSSF8Co2AOlVEf32VBXglIrHQ3v9AAS0 yPo4Xl1FdXqGFe5TcDQSqXh3TbjugGnG+d9yZX3lB8bwc/Tn2FlIl7tPbDAL4jNdUNA7jGee+tAn TtlZ6bFz+CsWmCIb6j6lDFqkXVsp+3KyLTZGXq6F2nnBtN4t5jO3ZIj2gpIKHAYNBAWLG2Q2fG7B t2tPC8BLC9WIM90gbMhAmtMGquITn/2fORdsNmaV3z/sPKuIn8DvdEhmWVfh0fyYeqxGlTw0Rfwh BlakdYYrkDmdWC+XszE19GUi8K8plBNKcIvyg2omAdebrMIHiAHAOiczxX/aS5ABRVrNUDcjfvp4 hYbDOO6qHcfzy/uY0fO5ssebmHQREJJA3PpSgdVnLernF6pthJrGkNDPeUI05svqw1o5A2HcNzLO pklhNwZ+4uWYLcAi14ACHuVvJsmzNicxggPHMIIDwwIBATCBrDCBljELMAkGA1UEBhMCR0IxGzAZ BgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2Vj dGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVudGljYXRpb24g YW5kIFNlY3VyZSBFbWFpbCBDQQIRAPmyQUVVPPFrfv7ZNN9mEKQwDQYJYIZIAWUDBAIBBQCgggHr MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDMxMTE2MjY0MFow LwYJKoZIhvcNAQkEMSIEIFo6A5kCYLYv2hW3/ZgSm/EJ5l630yLXKI36HL3iDZRpMIG9BgkrBgEE AYI3EAQxga8wgawwgZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIx EDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2Vj dGlnbyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEQD5skFF VTzxa37+2TTfZhCkMIG/BgsqhkiG9w0BCRACCzGBr6CBrDCBljELMAkGA1UEBhMCR0IxGzAZBgNV BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGln byBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVudGljYXRpb24gYW5k IFNlY3VyZSBFbWFpbCBDQQIRAPmyQUVVPPFrfv7ZNN9mEKQwDQYJKoZIhvcNAQELBQAEggEAWJrg ZML81y0pMQZUAZqxa96XlHzeIqXGTOPSF/sMZXluDbmnRTl8vpLCRWDrfeSUACQnIXR+q8aiUz8r 7wdcUU2WfRrMXtrTDoJ/nE5KB8/Z4S5Fuz17AEBgsZrkG5oIEHGJNZ4CVnXLNhbL2PQm/w7ZfRSv Qr6dJ3bM4A5D10RI+Xs7jAkmCR9MXeV8hGCih/CdFoyEJZlbEPzpSLUsKwKm2LkZpIRu2puAd5N7 t4Sh2Lq7g06zEJnHTPf4hIxG7Z0KxG+I+suziU4SYnolI+NCTb1wWlEW+BNVnUuZ1Bxd82d9ndLO 6u3Psb4PEdrAYq20uv1HXvkVKE9rzrn0hwAAAAAAAA== --Apple-Mail=_0C8963FA-8987-49EB-AE01-EDB6B357A464--