diff options
author | liamfallon <liam.fallon@est.tech> | 2023-05-31 11:51:54 +0100 |
---|---|---|
committer | liamfallon <liam.fallon@est.tech> | 2023-05-31 12:16:45 +0100 |
commit | d4f8ac0768b95d2f9da8f84de82b88c80a6705b6 (patch) | |
tree | d3a1aa35263aaeb173e656041b39df1d32068c01 /docs/release-notes.rst | |
parent | d7443e560835028c84b4f8b49fa506b820bad796 (diff) |
Update release notes for the London Release
Issue-ID: POLICY-4661
Change-Id: I6c5cdf5395f850c5f033b5c85cbf96ca0e71db75
Signed-off-by: liamfallon <liam.fallon@est.tech>
Diffstat (limited to 'docs/release-notes.rst')
-rw-r--r-- | docs/release-notes.rst | 420 |
1 files changed, 420 insertions, 0 deletions
diff --git a/docs/release-notes.rst b/docs/release-notes.rst index cf257275..fb43f4d5 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -15,6 +15,426 @@ Policy Framework Release Notes .. * one section describing the purpose of this new release. .. ========================== +.. * * * LONDON * * * +.. ========================== + +Version: 12.0.0 +--------------- + +:Release Date: 2023-06-15 (London Release) + +Artifacts released: + +.. list-table:: + :widths: 15 10 10 + :header-rows: 1 + + * - Repository + - Java Artifact + - Docker Image (if applicable) + * - policy/parent + - 3.7.2 + - N/A + * - policy/docker + - 2.6.2 + - | policy-jre-alpine + | policy-jdk-alpine + | policy-db-migrator + * - policy/common + - 1.12.2 + - N/A + * - policy/models + - 2.8.2 + - N/A + * - policy/api + - 2.8.2 + - policy-api + * - policy/pap + - 2.8.2 + - policy-pap + * - policy/apex-pdp + - 2.9.2 + - policy-apex-pdp + * - policy/drools-pdp + - 1.12.2 + - policy-drools + * - policy/xacml-pdp + - 2.8.2 + - policy-xacml-pdp + * - policy/distribution + - 2.9.2 + - policy-distribution + * - policy/clamp + - 6.4.3 + - | policy-clamp-ac-pf-ppnt + | policy-clamp-ac-k8s-ppnt + | policy-clamp-ac-http-ppnt + | policy-clamp-runtime-acm' + * - policy/gui + - 2.4.2 + - policy-gui + * - policy/drools-applications + - 1.12.2 + - policy-pdpd-cl + +Key Updates +=========== + +* Improvements to CLAMP Automation Composition Management (ACM) + + CLAMP ACM is improved to allow much more flexibility in the specification and life cycle management of rApps. ACM can manage the lifecycle of + rApps made up of an arbitrary number of microservices and rules/learning models/schemas in the form of metadata. In the London release, + the state machine is improved to allow priming of rApp types, and to support deploymeent/undeployment and locking/unlocking of rApps. + Update of the properties of rApps is also supported at run time. In addition, + `ITU Recommendation X.731 <https://www.itu.int/rec/T-REC-X.731-199201-I/en>`_ is now supported for state reporting from rApp microservices. + + See: + - `POLICY-4401 <https://jira.onap.org/browse/POLICY-4401>`_ - R12: Improvements specific to clamp + +* Improved database support in CLAMP ACM + + CLAMP ACM now supports MySql 8.x as a database and supports secured DB communication. + + See: + - `POLICY-4395 <https://jira.onap.org/browse/POLICY-4395>`_ - R12: Database related issues + +* Metadata driven API Generation + + Up until now, the Policy Framework components used handwritten code to implement their REST interfaces and the Swagger 2 API documentation was generated from + annotations in the code. From the London release on, the REST API code is generated from OpenAPI 3.0 (Swagger 3.0) documents. In addition, the API documentation + is substantially enhanced. See the `Policy Offered APIs in the documentation <https://docs.onap.org/projects/onap-policy-parent/en/london/offeredapis.html>`_. + + See: + - `POLICY-4123 <https://jira.onap.org/browse/POLICY-4123>`_ - R12: OpenAPI Adaption and Swagger Cleanup + +* Improved Metrics and SLAs + + The metrics generated by the Policy Framework have been substantially improved for the London release. In addition to gathering metrics on REST call + performance and policy deployment and execution time, we have defined SLA values for these metrics. We have implemented automated tests that run + as part of the CSIT testing that ensure the SLAs are complied with. + + See: + - `POLICY-4124 <https://jira.onap.org/browse/POLICY-4124>`_ - R12: Add metrics to measure SLAs + +* Improved Testing + + Testing is much improved in the London release. + - S3P tests have been automated and run as CSIT tests + - Automated tests to verify SLA compliance using prometheus metrics are added + - A suite of contract tests is provided for each REST API + - Tests now use http rather than https + + See: + - `POLICY-4125 <https://jira.onap.org/browse/POLICY-4125>`_ - R12: New Test Development + - `POLICY-4126 <https://jira.onap.org/browse/POLICY-4126>`_ - R12: Improve Automated Testing and Policy Framework S3P Tests + +Known Limitations, Issues and Workarounds +========================================= + +System Limitations +~~~~~~~~~~~~~~~~~~ +N/A + +Known Vulnerabilities +~~~~~~~~~~~~~~~~~~~~~ +.. list-table:: + :widths: 8 3 5 15 + :header-rows: 1 + + * - Dependency + - Security Threat Level + - Policy Framework Components + - Comment + * - com.fasterxml.jackson.core:jackson-core:2.14.1 (2.15.1) + - 10 + - | policy/common (D) + | policy/models (T) + | policy/api (T) + | policy/pap (T) + | policy/distribution (T) + | policy/clamp (T) + | policy/gui (T) + | policy/apex-pdp (T) + | policy/xacml-pdp (T) + | policy/drools-pdp (T) + | policy/drools-applications (T) + - Used in the implementation of policy endpoints + * - com.google.protobuf:protobuf-java:3.10.0 + - 10 + - | policy/models (T) + | policy/clamp (T) + | policy/apex-pdp (T) + | policy/drools-applications (T) + - Transitive dependency pulled in by CDS/Spring/Springboot + * - com.squareup.okhttp3:okhttp:4.9.1 + - 10 + - | policy/clamp (T) + - Transitive dependency pulled in by Spring/Springboot + * - com.sthoughtworks.xstrea:xstream:1.4.19 + - 10 + - | policy/drools-pdp (T) + - Transitive dependency pulled in by Drools rules + * - net.minidev:json-smart:2.4.6 + - 10 + - | policy/models (T) + | policy/apex-pdp (T) + | policy/drools-applications (T) + - Transitive dependency pulled in by CDS + * - io.grpc:grpc-core:1.25.0 + - 6 + - | policy/models (T) + | policy/apex-pdp (T) + | policy/drools-applications (T) + - Transitive dependency pulled in by CDS + * - org.apache.maven:maven-model:3.8.6 + - 6 + - | policy/drools-pdp (T) + - Transitive dependency pulled in to handle artifact generation + * - org.apache.tomcat.embed:tomcat-embed-core:9.0.71 + - 10 + - | policy/api (T) + | policy/pap (T) + | policy/clamp (T) + - Transitive dependency pulled in by org.springframework.boot:spring-boot-starter-web + * - org.bouncycastle:bc.fips:1.0.2.3 + - 6 + - | policy/common (T) + | policy/models (T) + | policy/distribution (T) + | policy/apex-pdp (T) + - Transitive dependency pulled in by org.bouncycastle:bcpkix-fips:1.0.5 in the utils-test module + * - org.eclipse.jetty:jetty-http:10.0.13 + - 6 + - | policy/common (T) + | policy/models (T) + | policy/api (T) + | policy/pap (T) + | policy/distribution (T) + | policy/clamp (T) + | policy/gui (T) + | policy/apex-pdp (T) + | policy/drools-pdp (T) + | policy/xacml-pdp (T) + | policy/drools-applications (T) + - Transitive dependency pulled in by org.eclipse.jetty:jetty-server + * - org.eclipse.jetty:jetty-server:10.0.13 + - 6 + - | policy/common (D) + | policy/models (T) + | policy/api (T) + | policy/pap (T) + | policy/distribution (T) + | policy/clamp (T) + | policy/gui (T) + | policy/apex-pdp (T) + | policy/drools-pdp (T) + | policy/xacml-pdp (T) + | policy/drools-applications (T) + - Used in the implementation of policy endpoints + * - org.jetbrains.kotlin:kotlin-daemon-client:1.3.61 + - 6 + - | policy/models (T) + | policy/apex-pdp (T) + | policy/drools-applications (T) + - Transitive dependency pulled in by CDS + * - org.jetbrains.kotlin:kotlin-scripting-jvm:1.3.61 + - 6 + - | policy/models (T) + | policy/apex-pdp (T) + | policy/drools-applications (T) + - Transitive dependency pulled in by CDS + * - org.springframework:spring-web:5.3.25 + - 10 + - | policy/api (T) + | policy/pap (T) + | policy/clamp (T) + | policy/gui (T) + - Transitive dependency pulled in by Spring/Springboot + * - org.springframework:spring-webmvc:5.3.25 + - 10 + - | policy/api (T) + | policy/pap (T) + | policy/clamp (T) + | policy/gui (T) + - Transitive dependency pulled in by Spring/Springboot + * - org.springframework.boot:spring-boot-actuator-autoconfigure:2.7.8 + - 10 + - | policy/api (T) + | policy/pap (T) + | policy/clamp (T) + | policy/gui (T) + - Transitive dependency pulled in by Spring/Springboot + * - org.springframework.boot:spring-boot-autoconfigure:2.7.8 + - 10 + - | policy/models (T) + | policy/api (T) + | policy/pap (T) + | policy/clamp (T) + | policy/gui (T) + | policy/apex-pdp (T) + | policy/drools-applications (T) + - Transitive dependency pulled in by Spring/Springboot + * - org.springframework.security:spring-security-config:5.7.6 + - 10 + - | policy/api (T) + | policy/pap (T) + | policy/clamp (T) + - Transitive dependency pulled in by Spring/Springboot + * - org.springframework.security:spring-security-web:5.7.6 + - 10 + - | policy/api (T) + | policy/pap (T) + | policy/clamp (T) + - Transitive dependency pulled in by Spring/Springboot + * - org.webjars:jquery-ui:1.12.1 + - 6 + - | policy/gui (T) + - Used by GUI for doing jquery queries + +Workarounds +~~~~~~~~~~~ +N/A + +Security Notes +============== + +Upgrading to Spring 6 and Springboot 3 is required to remove security vulnerabilities above. This change requries moving to Java 17. +This change will be done in the Montreal release of the Policy Framework. See `POLICY-4665 <https://jira.onap.org/browse/POLICY-4665>`_. + +Functional Improvements +======================= +| `POLICY-4395 <https://jira.onap.org/browse/POLICY-4395>`_ - R12: Database related issues +| `POLICY-4184 <https://jira.onap.org/browse/POLICY-4184>`_ - ACM Support for MySql 8.x DB client interfaces +| `POLICY-4358 <https://jira.onap.org/browse/POLICY-4358>`_ - Support secured DB communications for CLAMP/ACM +| `POLICY-4401 <https://jira.onap.org/browse/POLICY-4401>`_ - R12: Improvements specific to clamp +| `POLICY-4282 <https://jira.onap.org/browse/POLICY-4282>`_ - Test and Verification of ACM State Management +| `POLICY-4330 <https://jira.onap.org/browse/POLICY-4330>`_ - Add Prometheus metric messages for ACM +| `POLICY-4413 <https://jira.onap.org/browse/POLICY-4413>`_ - Refactor the state machines in CLAMP ACM-R and the Participant Intermediary +| `POLICY-4418 <https://jira.onap.org/browse/POLICY-4418>`_ - Remove old implementation of statistics in ACM +| `POLICY-4458 <https://jira.onap.org/browse/POLICY-4458>`_ - Create a Participant for A1-PMS +| `POLICY-4525 <https://jira.onap.org/browse/POLICY-4525>`_ - Create a Participant for KServe +| `POLICY-4563 <https://jira.onap.org/browse/POLICY-4563>`_ - ACM manual and automation tests +| `POLICY-4639 <https://jira.onap.org/browse/POLICY-4639>`_ - UseState and OperationalState support in ACM + +Necessary Improvements and Bug Fixes +==================================== + +Necessary Improvements +~~~~~~~~~~~~~~~~~~~~~~ +| `POLICY-4122 <https://jira.onap.org/browse/POLICY-4122>`_ - R12: Refactoring and Removal of Unused Code +| `POLICY-4138 <https://jira.onap.org/browse/POLICY-4138>`_ - Transfer the API handling from the clamp-backend microservice to another microservice +| `POLICY-4139 <https://jira.onap.org/browse/POLICY-4139>`_ - Remove the clamp-backend microservice +| `POLICY-4140 <https://jira.onap.org/browse/POLICY-4140>`_ - Ensure that all unit tests and automated integration and S3P tests still pass when the unused code is removed +| `POLICY-4157 <https://jira.onap.org/browse/POLICY-4157>`_ - Investigation story For Server-Client in PF +| `POLICY-4123 <https://jira.onap.org/browse/POLICY-4123>`_ - R12: OpenAPI Adaption and Swagger Cleanup +| `POLICY-3368 <https://jira.onap.org/browse/POLICY-3368>`_ - Revise Rest API conventions and structure +| `POLICY-3465 <https://jira.onap.org/browse/POLICY-3465>`_ - Upgrade Swagger to io.swagger.core.v3 +| `POLICY-4143 <https://jira.onap.org/browse/POLICY-4143>`_ - Generate Contract Testing stubs from OpenAPI specifications +| `POLICY-4144 <https://jira.onap.org/browse/POLICY-4144>`_ - Ensure that all unit tests and automated integration and S3P tests still pass when the OpenAPI approach is reversed +| `POLICY-4158 <https://jira.onap.org/browse/POLICY-4158>`_ - Open API Specifications as a Source Artifacts ACM +| `POLICY-4159 <https://jira.onap.org/browse/POLICY-4159>`_ - Maven build for OpenAPI Interface Generation +| `POLICY-4160 <https://jira.onap.org/browse/POLICY-4160>`_ - Rest endpoint implementation code Acm +| `POLICY-4162 <https://jira.onap.org/browse/POLICY-4162>`_ - Spike to understand OpenAPI Adaption +| `POLICY-4404 <https://jira.onap.org/browse/POLICY-4404>`_ - Remove SpringFox from Policy Framework +| `POLICY-4448 <https://jira.onap.org/browse/POLICY-4448>`_ - Rest endpoint implementation code Api and Pap +| `POLICY-4124 <https://jira.onap.org/browse/POLICY-4124>`_ - R12: Add metrics to measure SLAs +| `POLICY-4145 <https://jira.onap.org/browse/POLICY-4145>`_ - Enable Observability and Performance Management +| `POLICY-4147 <https://jira.onap.org/browse/POLICY-4147>`_ - Add Prometheus counters for measuring APEX PDP performance SLAs +| `POLICY-4148 <https://jira.onap.org/browse/POLICY-4148>`_ - Check counter names for consistency +| `POLICY-4149 <https://jira.onap.org/browse/POLICY-4149>`_ - Verify that the counters are being produced +| `POLICY-4165 <https://jira.onap.org/browse/POLICY-4165>`_ - SLAs from Global Requirements +| `POLICY-4469 <https://jira.onap.org/browse/POLICY-4469>`_ - SLAs on REST Interfaces for Async Requests +| `POLICY-4125 <https://jira.onap.org/browse/POLICY-4125>`_ - R12: New Test Development +| `POLICY-4150 <https://jira.onap.org/browse/POLICY-4150>`_ - Add the tests to the automated test suite in the Policy Framework +| `POLICY-4151 <https://jira.onap.org/browse/POLICY-4151>`_ - Add tests that check SLA compliance +| `POLICY-4152 <https://jira.onap.org/browse/POLICY-4152>`_ - Execute the new tests +| `POLICY-4164 <https://jira.onap.org/browse/POLICY-4164>`_ - Verify SLAs on Policy Execution in PDPs +| `POLICY-4571 <https://jira.onap.org/browse/POLICY-4571>`_ - S3P Test to check multiple PDP registration +| `POLICY-4655 <https://jira.onap.org/browse/POLICY-4655>`_ - Remove k8s based csit from jenkins +| `POLICY-4126 <https://jira.onap.org/browse/POLICY-4126>`_ - R12: Improve Automated Testing and Policy Framework S3P Tests +| `POLICY-4111 <https://jira.onap.org/browse/POLICY-4111>`_ - S3P testing of APEX-PDP prometheus metrics +| `POLICY-4153 <https://jira.onap.org/browse/POLICY-4153>`_ - Ensure reports on SLA compliance are generated by test execution +| `POLICY-4154 <https://jira.onap.org/browse/POLICY-4154>`_ - Write a suite of automated contract tests. +| `POLICY-4155 <https://jira.onap.org/browse/POLICY-4155>`_ - Add the tests to the automated test suite in the Policy Framework +| `POLICY-4156 <https://jira.onap.org/browse/POLICY-4156>`_ - Automate the current S3P test suites in the Policy Framework +| `POLICY-4417 <https://jira.onap.org/browse/POLICY-4417>`_ - Support Policy CSIT tests in kubernetes environment with helm chart +| `POLICY-4501 <https://jira.onap.org/browse/POLICY-4501>`_ - Add ACM demo service template example in clamp +| `POLICY-4127 <https://jira.onap.org/browse/POLICY-4127>`_ - R12: Enhance Policy Framework Documentation +| `POLICY-4581 <https://jira.onap.org/browse/POLICY-4581>`_ - Policy Offered APIs +| `POLICY-4583 <https://jira.onap.org/browse/POLICY-4583>`_ - Update Policy Platform Development Tools documentation +| `POLICY-4586 <https://jira.onap.org/browse/POLICY-4586>`_ - Review and update the ACM design documentation +| `POLICY-4587 <https://jira.onap.org/browse/POLICY-4587>`_ - Write documentation for Composition and participant development in ACM +| `POLICY-4396 <https://jira.onap.org/browse/POLICY-4396>`_ - R12: Improvements specific to apex-pdp +| `POLICY-4411 <https://jira.onap.org/browse/POLICY-4411>`_ - Make apex-pdp dockerfile consistent +| `POLICY-4460 <https://jira.onap.org/browse/POLICY-4460>`_ - Add documentation for KafkaAvroSerializer support in apex-pdp +| `POLICY-4397 <https://jira.onap.org/browse/POLICY-4397>`_ - R12: Improvements specific to xacml-pdp +| `POLICY-4218 <https://jira.onap.org/browse/POLICY-4218>`_ - Add handling of references in the XACML-PDP Tutorial code to the release scripts +| `POLICY-4398 <https://jira.onap.org/browse/POLICY-4398>`_ - R12: Improvements specific to drools-pdp and drools-applications +| `POLICY-4405 <https://jira.onap.org/browse/POLICY-4405>`_ - Mitigate vulnerable dependencies in drools-pdp +| `POLICY-4399 <https://jira.onap.org/browse/POLICY-4399>`_ - R12: Improvements to api/pap and policy handling +| `POLICY-4451 <https://jira.onap.org/browse/POLICY-4451>`_ - Policy PAP hard codes topic names +| `POLICY-4455 <https://jira.onap.org/browse/POLICY-4455>`_ - Make topics in PAP configurable +| `POLICY-4463 <https://jira.onap.org/browse/POLICY-4463>`_ - Fix pap csit with topics names +| `POLICY-4407 <https://jira.onap.org/browse/POLICY-4407>`_ - R12: Software (non functional) improvements +| `POLICY-4360 <https://jira.onap.org/browse/POLICY-4360>`_ - Fix grafana compose +| `POLICY-4466 <https://jira.onap.org/browse/POLICY-4466>`_ - Move duplicate POM config for git-commit-id-maven-plugin to policy/parent +| `POLICY-4471 <https://jira.onap.org/browse/POLICY-4471>`_ - Check and repair CSIT jobs +| `POLICY-4474 <https://jira.onap.org/browse/POLICY-4474>`_ - Ensure code coverage in all components is over 80% +| `POLICY-4482 <https://jira.onap.org/browse/POLICY-4482>`_ - Mitigate Vulnerabilities in Dependencies of Policy Components +| `POLICY-4484 <https://jira.onap.org/browse/POLICY-4484>`_ - Perform Interim Release of Policy Framework for London +| `POLICY-4536 <https://jira.onap.org/browse/POLICY-4536>`_ - Fix Sonar issues in PF components +| `POLICY-4547 <https://jira.onap.org/browse/POLICY-4547>`_ - Fix issue in StartAndStop Activator Test +| `POLICY-4549 <https://jira.onap.org/browse/POLICY-4549>`_ - Improve MariaDB sqls for db-migrator +| `POLICY-4558 <https://jira.onap.org/browse/POLICY-4558>`_ - Remove Integration Docker base images from Policy Framework base images +| `POLICY-4570 <https://jira.onap.org/browse/POLICY-4570>`_ - Policy Framework Interim Release +| `POLICY-4578 <https://jira.onap.org/browse/POLICY-4578>`_ - Update vulnerabilities in Policy Components +| `POLICY-4628 <https://jira.onap.org/browse/POLICY-4628>`_ - Update sdc-distribution-client to 2.0.1 +| `POLICY-4638 <https://jira.onap.org/browse/POLICY-4638>`_ - Restructure policy-gui +| `POLICY-4648 <https://jira.onap.org/browse/POLICY-4648>`_ - Release images for M4 +| `POLICY-4680 <https://jira.onap.org/browse/POLICY-4680>`_ - Pin versions of python libraries in csit configuration +| `REQ-439 <https://jira.onap.org/browse/REQ-439>`_ - Continuation of Package Upgrades in Direct Dependencies +| `POLICY-4472 <https://jira.onap.org/browse/POLICY-4472>`_ - Packages Upgrades in Direct Dependencies for London Release + +Bug Fixes +~~~~~~~~~ +| `POLICY-4649 <https://jira.onap.org/browse/POLICY-4649>`_ - Fix postgres script syntax errors +| `POLICY-4625 <https://jira.onap.org/browse/POLICY-4625>`_ - Participant primed status is not updated correctly in the runtime +| `POLICY-4623 <https://jira.onap.org/browse/POLICY-4623>`_ - Fix Anchor installing-or-upgrading-policy in docs +| `POLICY-4576 <https://jira.onap.org/browse/POLICY-4576>`_ - Omission in release script to update oom images +| `POLICY-4575 <https://jira.onap.org/browse/POLICY-4575>`_ - Fix ClassCastException in ACM +| `POLICY-4562 <https://jira.onap.org/browse/POLICY-4562>`_ - Sonar hotspot Interrupted Exception +| `POLICY-4561 <https://jira.onap.org/browse/POLICY-4561>`_ - Fix UNDEPLOY transition in policyParticipant in ACM +| `POLICY-4560 <https://jira.onap.org/browse/POLICY-4560>`_ - Fix participantHtml issue with multi instances in ACM +| `POLICY-4537 <https://jira.onap.org/browse/POLICY-4537>`_ - Policy DB scripts are bound to fixed MariaDB version +| `POLICY-4527 <https://jira.onap.org/browse/POLICY-4527>`_ - Galera jobs must use repositoryGenerator quitQuit images +| `POLICY-4491 <https://jira.onap.org/browse/POLICY-4491>`_ - Fix PAP CSIT intermittent failure +| `POLICY-4490 <https://jira.onap.org/browse/POLICY-4490>`_ - Disable ACM CSITs due to ongoing work +| `POLICY-4486 <https://jira.onap.org/browse/POLICY-4486>`_ - Fix copy contructor in DocToscaServiceTemplate in ACM +| `POLICY-4473 <https://jira.onap.org/browse/POLICY-4473>`_ - Clamp ACM dockersuse profile not working +| `POLICY-4429 <https://jira.onap.org/browse/POLICY-4429>`_ - PDP-X guard table creation script problems with = in password +| `POLICY-4410 <https://jira.onap.org/browse/POLICY-4410>`_ - Fix ACM stability and performance jmx configuration for random failures +| `POLICY-4381 <https://jira.onap.org/browse/POLICY-4381>`_ - The REST path of ACM endpoints is not configurable via Spring properties + +References +========== + +For more information on the ONAP London release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + +Quick Links: + - `POLICY project page`_ + - `Passing Badge information for POLICY`_ + +.. ========================== .. * * * KOHN * * * .. ========================== |