From 162ae5fb8428a91b4cad672dce327d521b95f032 Mon Sep 17 00:00:00 2001 From: Charlie Arehart Date: Thu, 23 Feb 2023 17:07:08 -0600 Subject: [PATCH 01/68] Revise discussion of Windows service control Clarified several points, and also tweaked wording and markdown elements. --- .../01.starting-stoping-lucee/page.md | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md b/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md index 184e19d1b..c7a80a736 100644 --- a/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md +++ b/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md @@ -3,20 +3,24 @@ title: Start and Stopping Lucee id: windows-start-stop-lucee --- -There are a couple different methods that allow you to start or stop the Lucee/Tomcat service on a Windows machine. We'll go over them below... +If you run the Lucee installer, it will create a Windows Service and also enable optional control panels based on the Apache Tomcat on which the installer implemented Lucee. There are then a couple different methods to start or stop the Lucee/Tomcat service on a Windows machine. We'll go over these items here. + +While the Tomcat implementation underlying Lucee also offers other ways to start and stop Lucee from the command line (via the lucee\tomcat\bin folder), this documentation is not referring to that. Note also that using that to startup.bat there will NOT use the configuration discussed below regarding the _Lucee-Tomcat Service Control panel_. ### Using Windows Service Controls ### -The Lucee/Tomcat service can be located in your Windows Server Service List and be stopped, started, and otherwise controlled from there: +The Lucee/Tomcat service can be found in the Services control panel, where it can be stopped, started, and otherwise controlled from there. The name of the service may show as "Apache Tomcat 9.0 Lucee", depending on the version of the Lucee installer. + +Note that if you use Windows Task Manager to view services (in its Services tab), Lucee shows by the name "Lucee". (Technically, this Task Manager display shows a service's "Service name" while the Services panel above shows a service's "Display Name", and those can differ.) -### Using the Tomcat Service Control Applet ### +### Using the Lucee-Tomcat Service Control panel ### -The Tomcat Service Control Applet can be found in the Windows Start Menu, and is labeled "Lucee-Tomcat Service Control": +The installer also implements the _Tomcat Service Control_ panel, which can be opened using the Windows _Start_ Menu, where it's found under `Lucee` as the `Lucee-Tomcat Service Control`. -Once launched the Tomcat Service Control Applet will give you the ability to Start and Stop the service, as well as customize the service settings (like JVM params). +Once launched the _Tomcat Service Control_ panel also offers the ability to start and stop the Lucee service, but it can also used to customize the Lucee (Tomcat) service settings (such as JVM params). See the "[Updating Memory Settings](lucee-server-adminstration-windows/updating-memory-settings.html)" discussion. -### Using the Tomcat Service Monitor ### +(Beware that if you make a change in in this Lucee-Tomcat Service Control panel, that change only takes effect on a restart of the Lucee service. If you restart Lucee using the Lucee Server Admin's _Restart_ option, that restarts the Lucee engine but does not technically restart the Windows Service for Lucee.) -The Tomcat Service Monitor is an applet that runs in the Notification Are of your Windows Start Bar. You can turn it on clicking the "Lucee-Tomcat Service Monitor". Once started, you'll see the Tomcat Monitor in the Notification Area like so: +### Using the Tomcat Service Monitor system tray feature### -You can right-click the service monitor and control the Lucee/Tomcat service from There \ No newline at end of file +The _Tomcat Service Monitor_ is another control panel, which can be opened from the _Start_ Menu for Lucee as `Lucee-Tomcat Service Monitor`. Once enabled, it appears in the Windows System Tray (bottom right corner of your display, by default). You can right-click it to stop/start Lucee, while the "configuration" option launches that _Lucee-Tomcat Service Control_ discussed above. From 227a9537cec59357136721a9d77485c644adac9d Mon Sep 17 00:00:00 2001 From: Charlie Arehart Date: Thu, 23 Feb 2023 17:19:05 -0600 Subject: [PATCH 02/68] Further refinements --- .../01.starting-stoping-lucee/page.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md b/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md index c7a80a736..312558f57 100644 --- a/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md +++ b/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md @@ -3,24 +3,24 @@ title: Start and Stopping Lucee id: windows-start-stop-lucee --- -If you run the Lucee installer, it will create a Windows Service and also enable optional control panels based on the Apache Tomcat on which the installer implemented Lucee. There are then a couple different methods to start or stop the Lucee/Tomcat service on a Windows machine. We'll go over these items here. +If you run the Lucee installer, it will create a Windows Service and also enable optional control panels based on Apache Tomcat which is implemented by the Lucee installer. There are then a couple different methods to start or stop the Lucee/Tomcat service on a Windows machine. We'll go over these items here. -While the Tomcat implementation underlying Lucee also offers other ways to start and stop Lucee from the command line (via the lucee\tomcat\bin folder), this documentation is not referring to that. Note also that using that to startup.bat there will NOT use the configuration discussed below regarding the _Lucee-Tomcat Service Control panel_. +While the Tomcat implementation underlying Lucee also offers other ways to start and stop Lucee from the command line (via the lucee\tomcat\bin folder), this documentation is not referring to that. Note in particular that using that to startup.bat there will NOT use the configuration discussed below regarding the _Lucee-Tomcat Service Control panel_. ### Using Windows Service Controls ### -The Lucee/Tomcat service can be found in the Services control panel, where it can be stopped, started, and otherwise controlled from there. The name of the service may show as "Apache Tomcat 9.0 Lucee", depending on the version of the Lucee installer. +The Lucee/Tomcat service can be found in the Services control panel, where like any Windows service it can be stopped, started, and otherwise controlled from there. The name of the service may show as "Apache Tomcat 9.0 Lucee", depending on the version of the Lucee installer. -Note that if you use Windows Task Manager to view services (in its Services tab), Lucee shows by the name "Lucee". (Technically, this Task Manager display shows a service's "Service name" while the Services panel above shows a service's "Display Name", and those can differ.) +Note that if you use _Windows Task Manager_ to view services (in its _Services_ tab), Lucee appears with the name "Lucee". (Technically, this Task Manager display shows a service's _Service name_ while the Services panel above shows a service's _Display Name_, and those can differ based on how the service was created.) ### Using the Lucee-Tomcat Service Control panel ### -The installer also implements the _Tomcat Service Control_ panel, which can be opened using the Windows _Start_ Menu, where it's found under `Lucee` as the `Lucee-Tomcat Service Control`. +The Lucee installer also implements the _Tomcat Service Control_ panel, which can be opened using the Windows _Start_ Menu, where it's found under `Lucee` as the `Lucee-Tomcat Service Control`. -Once launched the _Tomcat Service Control_ panel also offers the ability to start and stop the Lucee service, but it can also used to customize the Lucee (Tomcat) service settings (such as JVM params). See the "[Updating Memory Settings](lucee-server-adminstration-windows/updating-memory-settings.html)" discussion. +Once launched, the _Tomcat Service Control_ panel also offers the ability to start and stop the Lucee service, but it can also used to customize the Lucee (Tomcat) service settings (such as JVM params). See the "[Updating Memory Settings](lucee-server-adminstration-windows/updating-memory-settings.html)" discussion elsewhere in this Windows Administration section of the docs. -(Beware that if you make a change in in this Lucee-Tomcat Service Control panel, that change only takes effect on a restart of the Lucee service. If you restart Lucee using the Lucee Server Admin's _Restart_ option, that restarts the Lucee engine but does not technically restart the Windows Service for Lucee.) +(Beware that if you make a change in this _Lucee-Tomcat Service Control_ panel, that change only takes effect on a restart of the Lucee _service_. If instead you restart Lucee using the Lucee Server Admin's _Restart_ option, that will restart the Lucee engine but does not technically restart the Windows Service for Lucee, so would NOT see changes you made in the control panel. Always restart the Lucee service using one of the two options discussed above, if you change any configuration settings in that _Lucee-Tomcat Service Control_ panel.) ### Using the Tomcat Service Monitor system tray feature### -The _Tomcat Service Monitor_ is another control panel, which can be opened from the _Start_ Menu for Lucee as `Lucee-Tomcat Service Monitor`. Once enabled, it appears in the Windows System Tray (bottom right corner of your display, by default). You can right-click it to stop/start Lucee, while the "configuration" option launches that _Lucee-Tomcat Service Control_ discussed above. +The _Tomcat Service Monitor_ is another feature which can be opened from the _Start_ Menu for Lucee as `Lucee-Tomcat Service Monitor`. Once enabled, it appears in the Windows System Tray (bottom right corner of your display, by default). You can right-click it to stop/start Lucee, and the "configuration" option launches that _Lucee-Tomcat Service Control_ discussed above. \ No newline at end of file From 2858eebdd476237c12b072d2f7bf450628ec2b64 Mon Sep 17 00:00:00 2001 From: Charlie Arehart Date: Thu, 23 Feb 2023 22:05:19 -0600 Subject: [PATCH 03/68] Correct mistakes --- .../01.starting-stoping-lucee/page.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md b/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md index 312558f57..e7c7aca96 100644 --- a/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md +++ b/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/01.starting-stoping-lucee/page.md @@ -17,10 +17,10 @@ Note that if you use _Windows Task Manager_ to view services (in its _Services_ The Lucee installer also implements the _Tomcat Service Control_ panel, which can be opened using the Windows _Start_ Menu, where it's found under `Lucee` as the `Lucee-Tomcat Service Control`. -Once launched, the _Tomcat Service Control_ panel also offers the ability to start and stop the Lucee service, but it can also used to customize the Lucee (Tomcat) service settings (such as JVM params). See the "[Updating Memory Settings](lucee-server-adminstration-windows/updating-memory-settings.html)" discussion elsewhere in this Windows Administration section of the docs. +Once launched, the _Tomcat Service Control_ panel also offers the ability to start and stop the Lucee service, but it can also used to customize the Lucee (Tomcat) service settings (such as JVM params). See the "[Updating Memory Settings](../03.updating-memory-settings/page.md)" discussion elsewhere in this Windows Administration section of the docs. (Beware that if you make a change in this _Lucee-Tomcat Service Control_ panel, that change only takes effect on a restart of the Lucee _service_. If instead you restart Lucee using the Lucee Server Admin's _Restart_ option, that will restart the Lucee engine but does not technically restart the Windows Service for Lucee, so would NOT see changes you made in the control panel. Always restart the Lucee service using one of the two options discussed above, if you change any configuration settings in that _Lucee-Tomcat Service Control_ panel.) -### Using the Tomcat Service Monitor system tray feature### +### Using the Tomcat Service Monitor system tray feature ### The _Tomcat Service Monitor_ is another feature which can be opened from the _Start_ Menu for Lucee as `Lucee-Tomcat Service Monitor`. Once enabled, it appears in the Windows System Tray (bottom right corner of your display, by default). You can right-click it to stop/start Lucee, and the "configuration" option launches that _Lucee-Tomcat Service Control_ discussed above. \ No newline at end of file From fcdf08abef0d72b4e7333d529a3dcf0a1e7dc805 Mon Sep 17 00:00:00 2001 From: John Bampton Date: Wed, 29 Mar 2023 23:29:48 +1000 Subject: [PATCH 04/68] docs: fix grammar, spelling and word casing --- .../01.functions/arraynew/function.md | 2 +- .../01.functions/cacheregionnew/function.md | 2 +- .../01.functions/htmleditformat/function.md | 2 +- docs/03.reference/02.tags/zipparam/tag.md | 2 +- .../03.updating-memory-settings/page.md | 2 +- docs/04.guides/04.cookbooks/39.Retry/page.md | 2 +- .../02.build-4x-from-source/page.md | 2 +- .../04.3rd-party-libraries/page.md | 4 +- .../page.md | 2 +- .../02.tutorial-java-in-lucee/page.md | 38 +++++++++---------- .../37.deploy-AWSElasticBeanstalk/page.md | 2 +- 11 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/03.reference/01.functions/arraynew/function.md b/docs/03.reference/01.functions/arraynew/function.md index 1c3dec151..4b4ad3e9d 100644 --- a/docs/03.reference/01.functions/arraynew/function.md +++ b/docs/03.reference/01.functions/arraynew/function.md @@ -7,4 +7,4 @@ categories: - array --- -create a new array. shorthand syntax is []. +create a new array. Shorthand syntax is []. diff --git a/docs/03.reference/01.functions/cacheregionnew/function.md b/docs/03.reference/01.functions/cacheregionnew/function.md index 20162bfc9..4e341fac5 100644 --- a/docs/03.reference/01.functions/cacheregionnew/function.md +++ b/docs/03.reference/01.functions/cacheregionnew/function.md @@ -9,4 +9,4 @@ description: 'This function exists solely for the purpose of compatibility with This function exists solely for the purpose of compatibility with other CFML Engines. -We strongly recommend not to use this function. to create a cache connection either declare it in your Application.cfc or create it via the in the Administrator interface. +We strongly recommend not to use this function. To create a cache connection either declare it in your Application.cfc or create it via the in the Administrator interface. diff --git a/docs/03.reference/01.functions/htmleditformat/function.md b/docs/03.reference/01.functions/htmleditformat/function.md index ebd25a26a..4b173bb58 100644 --- a/docs/03.reference/01.functions/htmleditformat/function.md +++ b/docs/03.reference/01.functions/htmleditformat/function.md @@ -11,7 +11,7 @@ categories: --- Replaces special characters in a string with their HTML-escaped equivalents. [version] -HTML version to use. currently ignored. +HTML version to use is currently ignored. -1: The latest implementation of HTML diff --git a/docs/03.reference/02.tags/zipparam/tag.md b/docs/03.reference/02.tags/zipparam/tag.md index 070a47635..80f3df4c1 100644 --- a/docs/03.reference/02.tags/zipparam/tag.md +++ b/docs/03.reference/02.tags/zipparam/tag.md @@ -7,4 +7,4 @@ categories: - zip --- -The cfzipparam tag is always a child tag of the cfzip tag. see tag [[tag-zip]] for more details. +The cfzipparam tag is always a child tag of the cfzip tag. See tag [[tag-zip]] for more details. diff --git a/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/03.updating-memory-settings/page.md b/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/03.updating-memory-settings/page.md index 9df57874e..5709cf4b5 100644 --- a/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/03.updating-memory-settings/page.md +++ b/docs/04.guides/02.installing-lucee/10.lucee-server-adminstration-windows/03.updating-memory-settings/page.md @@ -13,4 +13,4 @@ Next, click on the "Java" tab, and edit the min/max JVM heap fields as you see f ### Additional JVM Settings ### -The same "Java" tab can be used to pass other parameters to your JVM, such as "-XX:MaxPermSize=128m". Simply add the option to the "Java Options" text area on that same screen. note that new items should each be added on a new line within that "Java Options" text area, which differs from when providing mutiple java arguments via other means. +The same "Java" tab can be used to pass other parameters to your JVM, such as "-XX:MaxPermSize=128m". Simply add the option to the "Java Options" text area on that same screen. Note that new items should each be added on a new line within that "Java Options" text area, which differs from when providing multiple java arguments via other means. diff --git a/docs/04.guides/04.cookbooks/39.Retry/page.md b/docs/04.guides/04.cookbooks/39.Retry/page.md index 23ef862f1..e935d5fb4 100644 --- a/docs/04.guides/04.cookbooks/39.Retry/page.md +++ b/docs/04.guides/04.cookbooks/39.Retry/page.md @@ -58,7 +58,7 @@ if(fileExists(path)) fileDelete(path); ``` -In this example we use the retry functionality. Here we also still check if the file exist or not. If the file does not exist, we create a new file by using ``fileWrite``. Then call retry to avoid duplicate code ``fr()``. Retry points to the beginning of the try block. block and then it will read again the file and output the file content. +In this example we use the retry functionality. Here we also still check if the file exist or not. If the file does not exist, we create a new file by using ``fileWrite``. Then call retry to avoid duplicate code ``fr()``. Retry points to the beginning of the try block and then it will read again the file and output the file content. We do not get an exception because if the file does not exist, we call retry (read the file again and output the file content). For this case we simply use retry, and if it fails we correct what is wrong. diff --git a/docs/04.guides/05.working-with-source/02.build-4x-from-source/page.md b/docs/04.guides/05.working-with-source/02.build-4x-from-source/page.md index 77713c059..34eb877ef 100644 --- a/docs/04.guides/05.working-with-source/02.build-4x-from-source/page.md +++ b/docs/04.guides/05.working-with-source/02.build-4x-from-source/page.md @@ -15,7 +15,7 @@ Before you can start building Lucee from source, you will need a few things inst 1. **Java JDK** - since you're going to compile Java code you need the JDK and not just the JRE. Lucee requires JDK 6 or later in order to compile. -1. **Apache ANT** - the source code contains several build scripts that will automate the build process for you. you will need ANT installed in order to run these build scripts. +1. **Apache ANT** - the source code contains several build scripts that will automate the build process for you. You will need ANT installed in order to run these build scripts. ### 2. Get the source code diff --git a/docs/04.guides/05.working-with-source/04.3rd-party-libraries/page.md b/docs/04.guides/05.working-with-source/04.3rd-party-libraries/page.md index 0fd503a36..d10c59848 100644 --- a/docs/04.guides/05.working-with-source/04.3rd-party-libraries/page.md +++ b/docs/04.guides/05.working-with-source/04.3rd-party-libraries/page.md @@ -5,13 +5,13 @@ id: 3rd-party-libraries ## Overview ## -Lucee ships with a set of 3rd party libraries that help Lucee perform certain tasks like connecting to databases, sending emails, logging, and more. these libraries are found in [lucee-install-folder]\WEB-INF\lib +Lucee ships with a set of 3rd party libraries that help Lucee perform certain tasks like connecting to databases, sending emails, logging, and more. These libraries are found in [lucee-install-folder]\WEB-INF\lib due to the risk in upgrading one piece of code without thoroughly testing its implications on the whole system, Lucee's policy is to update the libraries shipped with Lucee only in a major version release. sometimes, however, you need to use a newer library than the one that shipped with Lucee, in order to take advantage of bug fixes and/or new functionality. -keep in mind that if you upgrade a library you risk breaking the code that uses that library as not all libraries are 100% backward compatible, so do it judiciously and only if you must. this practice is Not recommended in a production environment. +keep in mind that if you upgrade a library you risk breaking the code that uses that library as not all libraries are 100% backward compatible, so do it judiciously and only if you must. This practice is Not recommended in a production environment. ## How To Update The Libraries ## diff --git a/docs/04.guides/05.working-with-source/05.building-and-testing-extensions/page.md b/docs/04.guides/05.working-with-source/05.building-and-testing-extensions/page.md index 9a369ebb6..52683d6e3 100644 --- a/docs/04.guides/05.working-with-source/05.building-and-testing-extensions/page.md +++ b/docs/04.guides/05.working-with-source/05.building-and-testing-extensions/page.md @@ -68,7 +68,7 @@ set testFilter= ant -buildfile="C:\work\script-runner" -DluceeVersion="6.0.0.300-SNAPSHOT" -Dwebroot="C:\work\lucee6\test" -Dexecute="/bootstrap-tests.cfm" -DextensionDir="C:\work\lucee-extensions\extension-s3\dist" ``` -This script will compile the extension using Ant, start a lightweight JSR-223 instance of Lucee `6.0.0.300`, installs the built extension and then runs any tests found with [labels="s3"](https://github.com/lucee/Lucee/blob/6.0/test/extension/S3.cfc#L19) in the Lucee `6.0` test suite. in the Lucee 6.0 test suite. +This script will compile the extension using Ant, start a lightweight JSR-223 instance of Lucee `6.0.0.300`, installs the built extension and then runs any tests found with [labels="s3"](https://github.com/lucee/Lucee/blob/6.0/test/extension/S3.cfc#L19) in the Lucee `6.0` test suite. **Initially this won't actually run any tests**, they will all be run but bypassed, as the S3 tests depend on a S3 service being configured for the test suite. diff --git a/docs/04.guides/13.Various/32.tutorial-lucee/02.tutorial-java-in-lucee/page.md b/docs/04.guides/13.Various/32.tutorial-lucee/02.tutorial-java-in-lucee/page.md index ce14f9cc5..7f2984b65 100644 --- a/docs/04.guides/13.Various/32.tutorial-lucee/02.tutorial-java-in-lucee/page.md +++ b/docs/04.guides/13.Various/32.tutorial-lucee/02.tutorial-java-in-lucee/page.md @@ -16,7 +16,7 @@ Having said that, there are some instances where it makes sense to use Java obje * you want to use a library that was written in Java * you must optimize a bottleneck segment of code for speed -In this tutorial I will focus on the first reason for using Java. there are many projects written in Java (many of them are open-source) that can add a lot of functionality to your application and save you a lot of time in writing, testing, and debugging. so instead of "reinventing the wheel" and writing your own code to achieve a task, it makes sense to utilize one of these projects. +In this tutorial I will focus on the first reason for using Java. There are many projects written in Java (many of them are open-source) that can add a lot of functionality to your application and save you a lot of time in writing, testing, and debugging. so instead of "reinventing the wheel" and writing your own code to achieve a task, it makes sense to utilize one of these projects. ### How to use Java? ### @@ -28,15 +28,15 @@ Since Lucee is written in Java, and is running inside a Java Virtual Machine (JV ### Step 1 - Check out the API ### -the PI in API stands for Public Interface. Public Interface defines the methods (functions) and properties that are exposed publicly. these are the methods and properties that the designers of the object or library decided to make public for your use. +the PI in API stands for Public Interface. Public Interface defines the methods (functions) and properties that are exposed publicly. These are the methods and properties that the designers of the object or library decided to make public for your use. -in order to interact with an object that someone else wrote you have to study the API for that object. fortunately, most objects that are intended for someone else's (like yourself) use come with documentation. +in order to interact with an object that someone else wrote you have to study the API for that object. Fortunately, most objects that are intended for someone else's (like yourself) use come with documentation. ### Step 2 - Get a reference to Java object(s) from CFML ### -in most cases you will want to call one or more methods (functions) of the objects that you use. in order to call a method you must first define the object in CFML so that Lucee will know on which object you want to call the method. +in most cases you will want to call one or more methods (functions) of the objects that you use. In order to call a method you must first define the object in CFML so that Lucee will know on which object you want to call the method. -in order to define an object, you must ensure that the object is "visible" to Lucee. if the object is of a type that's included with the Java Runtime Environment (JRE), then it is visible and you don't have to do anything else. but if you are using an object from another project then you must ensure that the Java Archive (JAR) file(s) are in one of the paths that are visible to Lucee. +in order to define an object, you must ensure that the object is "visible" to Lucee. If the object is of a type that's included with the Java Runtime Environment (JRE), then it is visible and you don't have to do anything else. But if you are using an object from another project then you must ensure that the Java Archive (JAR) file(s) are in one of the paths that are visible to Lucee. some of the paths include: @@ -45,9 +45,9 @@ some of the paths include: ### Getting a Reference to an Object ### -Now you are ready to define the object so that it's accessible to your code. you do that with the createObject( "java", objectType ) function. the objectType is the fully qualified name of the object, meaning it should have the package path as well the class name. +Now you are ready to define the object so that it's accessible to your code. You do that with the createObject( "java", objectType ) function. The objectType is the fully qualified name of the object, meaning it should have the package path as well the class name. -you will want to set the reference to a variable so that you can use it later. for example, to create a reference to the class Collections class in the java.util package, you will use: +you will want to set the reference to a variable so that you can use it later. For example, to create a reference to the class Collections class in the java.util package, you will use: @@ -60,7 +60,7 @@ please note that "createObject" is a misnomer and at this point you did not crea **Creating a new Object** Usually you create an instance of an object by calling its constructor. -in Java this is done by using the new keyword. for example: +in Java this is done by using the new keyword. For example: myList = new java.util.ArrayList(); @@ -68,13 +68,13 @@ In CFML, you use the init() method to call the constructor, so the equivalent to -I say "usually you create an instance by calling its constructor" because some objects do not expose a public constructor, but instead let you to create an instance by calling a static method. the API should explain how to create a new object in such a case. +I say "usually you create an instance by calling its constructor" because some objects do not expose a public constructor, but instead let you to create an instance by calling a static method. The API should explain how to create a new object in such a case. Sometimes you need to pass arguments to a constructor, you do that the same way you pass arguments to any method and I will show that below. **Inner Classes** -when you need to use an Inner Class, that is a class that is defined within another class in Java, the last part of the fully qualified class name is delimited by a $ sign rather than a dot. see example below in the Lucene BooleanClause segment. +when you need to use an Inner Class, that is a class that is defined within another class in Java, the last part of the fully qualified class name is delimited by a $ sign rather than a dot. See example below in the Lucene BooleanClause segment. ### Step 3 - Use the Java object(s) ### @@ -91,7 +91,7 @@ The API will tell you whether the methods that you want to use are static or not The thing that you need to remember is that if a method is an instance method then you need to first create a new instance of the object (or get a reference to an existing instance). -The following example creates a new instance of a java.util.ArrayList object, and then calls the instance method add() several times. then it defines a reference to the java.util.Collections, and calls the static method sort( List ). notice that we don't call init() on java.util.Collections since we're calling a static method. as a matter of fact, if you check out the API for java.util.Collections [http://download.oracle.com/javase/7/docs/api/java/util/Collections.html](http://download.oracle.com/javase/7/docs/api/java/util/Collections.html) you will see that it does not have a constructor. +The following example creates a new instance of a java.util.ArrayList object, and then calls the instance method add() several times. Then it defines a reference to the java.util.Collections, and calls the static method sort( List ). Notice that we don't call init() on java.util.Collections since we're calling a static method. as a matter of fact, if you check out the API for java.util.Collections [http://download.oracle.com/javase/7/docs/api/java/util/Collections.html](http://download.oracle.com/javase/7/docs/api/java/util/Collections.html) you will see that it does not have a constructor. ```lucee @@ -108,7 +108,7 @@ The following example creates a new instance of a java.util.ArrayList object, an Unlike ColdFusion, Java is a strongly typed language, meaning that if a variable is expected to be of a certain type -- it Must be of that type (or of a type that has a "is a" relationship of that type). -What this means is that if a method expects an argument to be of a certain type -- it Must be of that type. you can enforce the types passed to methods by using CFML's javaCast( type, variable ) function. +What this means is that if a method expects an argument to be of a certain type -- it Must be of that type. You can enforce the types passed to methods by using CFML's javaCast( type, variable ) function. Consider the following scenario: you have a Java method that expects an argument of type Integer. Let's say the method's signature is as follows: @@ -135,7 +135,7 @@ You can fix this by forcing CF to pass the argument as an Integer. **Data Types** -In addition to the simple CF types, you will likely see many times that you have to pass complex types to/from Java. the most popular types are Collection, List, and Map. the table below shows the equivalent CF type to these Java types: +In addition to the simple CF types, you will likely see many times that you have to pass complex types to/from Java. The most popular types are Collection, List, and Map. The table below shows the equivalent CF type to these Java types: | Java Type | Lucee type | | ---------------------------------------|-------------------------------------------| @@ -171,7 +171,7 @@ Check out StandardAnalyzer's API at , so you can not simply pass a string into the StandardAnalyzer's constructor -- that would not work! +The simplest constructor to use, using the default "stop words" is -- StandardAnalyzer( Version matchVersion ) -- and it expects a Version argument. The Version argument is an Enum type , so you can not simply pass a string into the StandardAnalyzer's constructor -- that would not work! So in order to call the StandardAnalyzer's constructor you must first get a reference to an org.apache.lucene.util.Version object. @@ -179,11 +179,11 @@ One way of getting a reference to Version type is: -Notice that the object's type is org.apache.lucene.util.Version and Not ~~org.apache.lucene.util.Version.LUCENE_33~~ so you can not do as that is not a valid type. what you do is create a reference to org.apache.lucene.util.Version and then use a property of that reference with a dot notation, i.e. ".LUCENE_33" +Notice that the object's type is org.apache.lucene.util.Version and Not ~~org.apache.lucene.util.Version.LUCENE_33~~ so you can not do as that is not a valid type. What you do is create a reference to org.apache.lucene.util.Version and then use a property of that reference with a dot notation, i.e. ".LUCENE_33" -The problem with this construct is that it forces version to be hard-coded as LUCENE_33. but what if you don't want to hard-code the version? what if you want to get it from a settings file, or get it via an argument to your own cfc or method? +The problem with this construct is that it forces version to be hard-coded as LUCENE_33. But what if you don't want to hard-code the version? what if you want to get it from a settings file, or get it via an argument to your own cfc or method? -Since the Version type is an Enum, it has a valueOf( String ) method. we can pass a string into that method and get a reference to the Version object that we can then pass to the StandardAnalyzer's constructor. +Since the Version type is an Enum, it has a valueOf( String ) method. We can pass a string into that method and get a reference to the Version object that we can then pass to the StandardAnalyzer's constructor. ```lucee @@ -324,7 +324,7 @@ If you use that value later and its implementation is different than you expect For example, imagine you have a method that returns a java.util.Map object. java.util.Map is a Java interface, and therefore the actual type of object returned can be one of many. -So if you try to use the returned object as a ColdFusion Struct, chances are that you'll not get the results you expect. the reason is that in ColdFusion Structs the keys are case insensitive, where as in most other implementations a Map the keys are cAsE sensitive. +So if you try to use the returned object as a ColdFusion Struct, chances are that you'll not get the results you expect. The reason is that in ColdFusion Structs the keys are case insensitive, whereas in most other implementations a Map the keys are cAsE sensitive. So if the returned Map object has a key named "Name", and you will try to reference it as myMap.Name you will likely get an error as behind the scenes Lucee will try to reference it as myMap.NAME which does not exist in a cAsE sensitive Map. @@ -332,7 +332,7 @@ You will still be able to get the value by calling myName[ "Name" ] which preser ### Inspect the object with CFDUMP ### -You can always use cfdump on a Java object to see what methods and properties are available. this is very useful when trying to troubleshoot a problem. +You can always use cfdump on a Java object to see what methods and properties are available. This is very useful when trying to troubleshoot a problem. diff --git a/docs/04.guides/13.Various/37.deploy-AWSElasticBeanstalk/page.md b/docs/04.guides/13.Various/37.deploy-AWSElasticBeanstalk/page.md index f821d0b65..3e8128505 100644 --- a/docs/04.guides/13.Various/37.deploy-AWSElasticBeanstalk/page.md +++ b/docs/04.guides/13.Various/37.deploy-AWSElasticBeanstalk/page.md @@ -45,7 +45,7 @@ Hit Next > Now we define the local server that we are going to be using, select Tomcat V6.0 and using the Browse... button point it to your local Tomcat installation directory -Press Finish and the local server should be created. and started, you should get a window in Eclipse like the one below: +Press Finish and the local server should be created and started, you should get a window in Eclipse like the one below: Now that we have this running fine, click on the Servers tab (shown above) and stop the server. Double click on the server and you will get a Server configuration screen. From 44085b126220ca7f4358ca9ece1e8bcdb1fa8ea4 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Fri, 14 Apr 2023 15:06:50 +0200 Subject: [PATCH 05/68] update build to us 6.0.0.373-SNAPSHOT --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 73aa93d45..b1ed769a5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,7 +38,7 @@ jobs: with: webroot: ${{ github.workspace }} execute: /build-all.cfm - luceeVersion: 6.0.0.346-BETA + luceeVersion: 6.0.0.373-SNAPSHOT # redis, chart, lucene, form. ajax, chart extensions: 60772C12-F179-D555-8E2CD2B4F7428718,D46B46A9-A0E3-44E1-D972A04AC3A8DC10,EFDEB172-F52E-4D84-9CD1A1F561B3DFC8,FAD67145-E3AE-30F8-1C11A6CCF544F0B7,6E2CB28F-98FB-4B51-B6BE6C64ADF35473,DF28D0A4-6748-44B9-A2FDC12E4E2E4D38 - name: Upload Artifact From a0bcdcb0b2f549d0e64d670177a88c3ad65ecd3c Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Fri, 14 Apr 2023 16:58:06 +0200 Subject: [PATCH 06/68] fix function title casing --- .../01.functions/applicationpathcacheclear/function.md | 2 +- docs/03.reference/01.functions/argon2checkhash/function.md | 2 +- .../01.functions/arrayremoveduplicates/function.md | 2 +- docs/03.reference/01.functions/arraysplice/function.md | 2 +- docs/03.reference/01.functions/cleartimezone/function.md | 2 +- .../03.reference/01.functions/componentlistpackage/function.md | 2 +- docs/03.reference/01.functions/configimport/function.md | 2 +- docs/03.reference/01.functions/directoryinfo/function.md | 2 +- docs/03.reference/01.functions/extensioninfo/function.md | 2 +- docs/03.reference/01.functions/findlast/function.md | 2 +- docs/03.reference/01.functions/findlastnocase/function.md | 2 +- docs/03.reference/01.functions/generateargon2hash/function.md | 2 +- docs/03.reference/01.functions/isfileobject/function.md | 3 ++- docs/03.reference/01.functions/iswithintransaction/function.md | 2 +- .../03.reference/01.functions/listqualifiedtoarray/function.md | 2 +- docs/03.reference/01.functions/markdowntohtml/function.md | 2 +- docs/03.reference/01.functions/queryappend/function.md | 2 +- docs/03.reference/01.functions/queryclear/function.md | 2 +- docs/03.reference/01.functions/queryinsertat/function.md | 2 +- docs/03.reference/01.functions/queryisempty/function.md | 2 +- docs/03.reference/01.functions/querylazy/function.md | 2 +- docs/03.reference/01.functions/queryprepend/function.md | 2 +- docs/03.reference/01.functions/queryrenamecolumn/function.md | 2 +- docs/03.reference/01.functions/queryreverse/function.md | 2 +- docs/03.reference/01.functions/querytostruct/function.md | 2 +- docs/03.reference/01.functions/rediscommand/function.md | 2 +- .../01.functions/rediscommandlowpriority/function.md | 2 +- .../01.functions/redisconnectionpoolinfo/function.md | 2 +- docs/03.reference/01.functions/sanitizehtml/function.md | 2 +- docs/03.reference/01.functions/stringeach/function.md | 2 +- docs/03.reference/01.functions/stringevery/function.md | 2 +- docs/03.reference/01.functions/stringfilter/function.md | 2 +- docs/03.reference/01.functions/stringmap/function.md | 2 +- docs/03.reference/01.functions/stringreduce/function.md | 2 +- docs/03.reference/01.functions/stringsome/function.md | 2 +- docs/03.reference/01.functions/stringsort/function.md | 2 +- docs/03.reference/01.functions/trimwhitespace/function.md | 2 +- docs/03.reference/01.functions/webservicenew/function.md | 2 +- 38 files changed, 39 insertions(+), 38 deletions(-) diff --git a/docs/03.reference/01.functions/applicationpathcacheclear/function.md b/docs/03.reference/01.functions/applicationpathcacheclear/function.md index 966f777c9..490179c85 100644 --- a/docs/03.reference/01.functions/applicationpathcacheclear/function.md +++ b/docs/03.reference/01.functions/applicationpathcacheclear/function.md @@ -1,5 +1,5 @@ --- -title: applicationPathCacheClear +title: ApplicationPathCacheClear id: function-applicationpathcacheclear categories: - application diff --git a/docs/03.reference/01.functions/argon2checkhash/function.md b/docs/03.reference/01.functions/argon2checkhash/function.md index 8b3bd2564..24159b150 100644 --- a/docs/03.reference/01.functions/argon2checkhash/function.md +++ b/docs/03.reference/01.functions/argon2checkhash/function.md @@ -1,5 +1,5 @@ --- -title: argon2checkhash +title: Argon2CheckHash id: function-argon2checkhash related: categories: diff --git a/docs/03.reference/01.functions/arrayremoveduplicates/function.md b/docs/03.reference/01.functions/arrayremoveduplicates/function.md index a1ec7ff90..886fedf1d 100644 --- a/docs/03.reference/01.functions/arrayremoveduplicates/function.md +++ b/docs/03.reference/01.functions/arrayremoveduplicates/function.md @@ -1,5 +1,5 @@ --- -title: arrayremoveduplicates +title: ArrayRemoveDuplicates id: function-arrayremoveduplicates related: categories: diff --git a/docs/03.reference/01.functions/arraysplice/function.md b/docs/03.reference/01.functions/arraysplice/function.md index 19632f908..9c5d5f979 100644 --- a/docs/03.reference/01.functions/arraysplice/function.md +++ b/docs/03.reference/01.functions/arraysplice/function.md @@ -1,5 +1,5 @@ --- -title: arraysplice +title: ArraySplice id: function-arraysplice related: categories: diff --git a/docs/03.reference/01.functions/cleartimezone/function.md b/docs/03.reference/01.functions/cleartimezone/function.md index 420e51f52..b3e16de67 100644 --- a/docs/03.reference/01.functions/cleartimezone/function.md +++ b/docs/03.reference/01.functions/cleartimezone/function.md @@ -1,5 +1,5 @@ --- -title: clearTimeZone +title: ClearTimeZone id: function-clearTimeZone categories: - datetime diff --git a/docs/03.reference/01.functions/componentlistpackage/function.md b/docs/03.reference/01.functions/componentlistpackage/function.md index 1344cbfe0..e6b8827f2 100644 --- a/docs/03.reference/01.functions/componentlistpackage/function.md +++ b/docs/03.reference/01.functions/componentlistpackage/function.md @@ -1,5 +1,5 @@ --- -title: componentlistpackage +title: ComponentListPackage id: function-componentlistpackage related: categories: diff --git a/docs/03.reference/01.functions/configimport/function.md b/docs/03.reference/01.functions/configimport/function.md index ccdb78d22..fb054265a 100644 --- a/docs/03.reference/01.functions/configimport/function.md +++ b/docs/03.reference/01.functions/configimport/function.md @@ -1,5 +1,5 @@ --- -title: configImport +title: ConfigImport id: function-configimport related: categories: diff --git a/docs/03.reference/01.functions/directoryinfo/function.md b/docs/03.reference/01.functions/directoryinfo/function.md index 4db3a4612..80c4b8eb6 100644 --- a/docs/03.reference/01.functions/directoryinfo/function.md +++ b/docs/03.reference/01.functions/directoryinfo/function.md @@ -1,5 +1,5 @@ --- -title: directoryinfo +title: DirectoryInfo id: function-directoryinfo related: categories: diff --git a/docs/03.reference/01.functions/extensioninfo/function.md b/docs/03.reference/01.functions/extensioninfo/function.md index a3efe2a94..239aadc77 100644 --- a/docs/03.reference/01.functions/extensioninfo/function.md +++ b/docs/03.reference/01.functions/extensioninfo/function.md @@ -1,5 +1,5 @@ --- -title: extensioninfo +title: ExtensionInfo id: function-extensioninfo related: categories: diff --git a/docs/03.reference/01.functions/findlast/function.md b/docs/03.reference/01.functions/findlast/function.md index 06f98f499..9d20e2f1a 100644 --- a/docs/03.reference/01.functions/findlast/function.md +++ b/docs/03.reference/01.functions/findlast/function.md @@ -1,5 +1,5 @@ --- -title: findlast +title: FindLast id: function-findlast related: categories: diff --git a/docs/03.reference/01.functions/findlastnocase/function.md b/docs/03.reference/01.functions/findlastnocase/function.md index 7af838544..da763e1f2 100644 --- a/docs/03.reference/01.functions/findlastnocase/function.md +++ b/docs/03.reference/01.functions/findlastnocase/function.md @@ -1,5 +1,5 @@ --- -title: findlastnocase +title: FindLastNoCase id: function-findlastnocase related: categories: diff --git a/docs/03.reference/01.functions/generateargon2hash/function.md b/docs/03.reference/01.functions/generateargon2hash/function.md index e7801f429..4d24915b1 100644 --- a/docs/03.reference/01.functions/generateargon2hash/function.md +++ b/docs/03.reference/01.functions/generateargon2hash/function.md @@ -1,5 +1,5 @@ --- -title: generateArgon2Hash +title: GenerateArgon2Hash id: function-generateargon2hash related: - function-argon2checkhash diff --git a/docs/03.reference/01.functions/isfileobject/function.md b/docs/03.reference/01.functions/isfileobject/function.md index bf50d2991..54d78ca66 100644 --- a/docs/03.reference/01.functions/isfileobject/function.md +++ b/docs/03.reference/01.functions/isfileobject/function.md @@ -1,9 +1,10 @@ --- -title: isfileobject +title: IsFileObject id: function-isfileobject related: categories: - decision + - files --- Determines whether a value is an file object. True, if the value represents a file object. \ No newline at end of file diff --git a/docs/03.reference/01.functions/iswithintransaction/function.md b/docs/03.reference/01.functions/iswithintransaction/function.md index 8ba6a42a4..878e52151 100644 --- a/docs/03.reference/01.functions/iswithintransaction/function.md +++ b/docs/03.reference/01.functions/iswithintransaction/function.md @@ -1,5 +1,5 @@ --- -title: isWithinTransaction +title: IsWithinTransaction id: function-iswithintransaction related: - tag-query diff --git a/docs/03.reference/01.functions/listqualifiedtoarray/function.md b/docs/03.reference/01.functions/listqualifiedtoarray/function.md index 60266fae2..b7ff88697 100644 --- a/docs/03.reference/01.functions/listqualifiedtoarray/function.md +++ b/docs/03.reference/01.functions/listqualifiedtoarray/function.md @@ -1,5 +1,5 @@ --- -title: listqualifiedtoarray +title: ListQualifiedToArray id: function-listqualifiedtoarray related: categories: diff --git a/docs/03.reference/01.functions/markdowntohtml/function.md b/docs/03.reference/01.functions/markdowntohtml/function.md index a75803869..d30522847 100644 --- a/docs/03.reference/01.functions/markdowntohtml/function.md +++ b/docs/03.reference/01.functions/markdowntohtml/function.md @@ -1,5 +1,5 @@ --- -title: markdowntohtml +title: MarkdownToHtml id: function-markdowntohtml related: categories: diff --git a/docs/03.reference/01.functions/queryappend/function.md b/docs/03.reference/01.functions/queryappend/function.md index 6a7cdc0f2..9c6ded283 100644 --- a/docs/03.reference/01.functions/queryappend/function.md +++ b/docs/03.reference/01.functions/queryappend/function.md @@ -1,5 +1,5 @@ --- -title: queryappend +title: QueryAppend id: function-queryappend related: categories: diff --git a/docs/03.reference/01.functions/queryclear/function.md b/docs/03.reference/01.functions/queryclear/function.md index 0df8b50df..57fe8d2b0 100644 --- a/docs/03.reference/01.functions/queryclear/function.md +++ b/docs/03.reference/01.functions/queryclear/function.md @@ -1,5 +1,5 @@ --- -title: queryclear +title: QueryClear id: function-queryclear related: categories: diff --git a/docs/03.reference/01.functions/queryinsertat/function.md b/docs/03.reference/01.functions/queryinsertat/function.md index 7b43fdc33..16026cb84 100644 --- a/docs/03.reference/01.functions/queryinsertat/function.md +++ b/docs/03.reference/01.functions/queryinsertat/function.md @@ -1,5 +1,5 @@ --- -title: queryinsertat +title: QueryInsertAt id: function-queryinsertat related: categories: diff --git a/docs/03.reference/01.functions/queryisempty/function.md b/docs/03.reference/01.functions/queryisempty/function.md index 7ebeb6a56..a14b69fad 100644 --- a/docs/03.reference/01.functions/queryisempty/function.md +++ b/docs/03.reference/01.functions/queryisempty/function.md @@ -1,5 +1,5 @@ --- -title: queryisempty +title: QueryIsEmpty id: function-queryisempty related: categories: diff --git a/docs/03.reference/01.functions/querylazy/function.md b/docs/03.reference/01.functions/querylazy/function.md index b04467c42..1c6cf5ca6 100644 --- a/docs/03.reference/01.functions/querylazy/function.md +++ b/docs/03.reference/01.functions/querylazy/function.md @@ -1,5 +1,5 @@ --- -title: querylazy +title: QueryLazy id: function-querylazy related: categories: diff --git a/docs/03.reference/01.functions/queryprepend/function.md b/docs/03.reference/01.functions/queryprepend/function.md index a96d4d99e..a7fa4cb47 100644 --- a/docs/03.reference/01.functions/queryprepend/function.md +++ b/docs/03.reference/01.functions/queryprepend/function.md @@ -1,5 +1,5 @@ --- -title: queryprepend +title: QueryPrepend id: function-queryprepend related: categories: diff --git a/docs/03.reference/01.functions/queryrenamecolumn/function.md b/docs/03.reference/01.functions/queryrenamecolumn/function.md index 074e9007b..0a2e52355 100644 --- a/docs/03.reference/01.functions/queryrenamecolumn/function.md +++ b/docs/03.reference/01.functions/queryrenamecolumn/function.md @@ -1,5 +1,5 @@ --- -title: queryrenamecolumn +title: QueryRenameColumn id: function-queryrenamecolumn related: categories: diff --git a/docs/03.reference/01.functions/queryreverse/function.md b/docs/03.reference/01.functions/queryreverse/function.md index c2a82681f..e6cb72f5e 100644 --- a/docs/03.reference/01.functions/queryreverse/function.md +++ b/docs/03.reference/01.functions/queryreverse/function.md @@ -1,5 +1,5 @@ --- -title: queryreverse +title: QueryReverse id: function-queryreverse related: categories: diff --git a/docs/03.reference/01.functions/querytostruct/function.md b/docs/03.reference/01.functions/querytostruct/function.md index 1ade1cdac..7e1417f28 100644 --- a/docs/03.reference/01.functions/querytostruct/function.md +++ b/docs/03.reference/01.functions/querytostruct/function.md @@ -1,5 +1,5 @@ --- -title: querytostruct +title: QueryToStruct id: function-querytostruct related: categories: diff --git a/docs/03.reference/01.functions/rediscommand/function.md b/docs/03.reference/01.functions/rediscommand/function.md index 3e662940f..42fb60673 100644 --- a/docs/03.reference/01.functions/rediscommand/function.md +++ b/docs/03.reference/01.functions/rediscommand/function.md @@ -1,5 +1,5 @@ --- -title: rediscommand +title: RedisCommand id: function-rediscommand related: categories: diff --git a/docs/03.reference/01.functions/rediscommandlowpriority/function.md b/docs/03.reference/01.functions/rediscommandlowpriority/function.md index 606a87a91..1cb41cbf7 100644 --- a/docs/03.reference/01.functions/rediscommandlowpriority/function.md +++ b/docs/03.reference/01.functions/rediscommandlowpriority/function.md @@ -1,5 +1,5 @@ --- -title: rediscommandlowpriority +title: RedisCommandLowPriority id: function-rediscommandlowpriority related: categories: diff --git a/docs/03.reference/01.functions/redisconnectionpoolinfo/function.md b/docs/03.reference/01.functions/redisconnectionpoolinfo/function.md index 87b923fcb..adb3e1813 100644 --- a/docs/03.reference/01.functions/redisconnectionpoolinfo/function.md +++ b/docs/03.reference/01.functions/redisconnectionpoolinfo/function.md @@ -1,5 +1,5 @@ --- -title: redisconnectionpoolinfo +title: RedisConnectionPoolInfo id: function-redisconnectionpoolinfo related: categories: diff --git a/docs/03.reference/01.functions/sanitizehtml/function.md b/docs/03.reference/01.functions/sanitizehtml/function.md index 91d0aafd2..76bf596ec 100644 --- a/docs/03.reference/01.functions/sanitizehtml/function.md +++ b/docs/03.reference/01.functions/sanitizehtml/function.md @@ -1,5 +1,5 @@ --- -title: sanitizehtml +title: SanitizeHtml id: function-sanitizehtml related: categories: diff --git a/docs/03.reference/01.functions/stringeach/function.md b/docs/03.reference/01.functions/stringeach/function.md index d03c2d79e..43d602ca1 100644 --- a/docs/03.reference/01.functions/stringeach/function.md +++ b/docs/03.reference/01.functions/stringeach/function.md @@ -1,5 +1,5 @@ --- -title: stringeach +title: StringEach id: function-stringeach related: categories: diff --git a/docs/03.reference/01.functions/stringevery/function.md b/docs/03.reference/01.functions/stringevery/function.md index da230e2f9..e92d09a77 100644 --- a/docs/03.reference/01.functions/stringevery/function.md +++ b/docs/03.reference/01.functions/stringevery/function.md @@ -1,5 +1,5 @@ --- -title: stringevery +title: StringEvery id: function-stringevery related: categories: diff --git a/docs/03.reference/01.functions/stringfilter/function.md b/docs/03.reference/01.functions/stringfilter/function.md index 44e88cead..b6a19459c 100644 --- a/docs/03.reference/01.functions/stringfilter/function.md +++ b/docs/03.reference/01.functions/stringfilter/function.md @@ -1,5 +1,5 @@ --- -title: stringfilter +title: StringFilter id: function-stringfilter related: categories: diff --git a/docs/03.reference/01.functions/stringmap/function.md b/docs/03.reference/01.functions/stringmap/function.md index 728ad1429..74ce0b0a1 100644 --- a/docs/03.reference/01.functions/stringmap/function.md +++ b/docs/03.reference/01.functions/stringmap/function.md @@ -1,5 +1,5 @@ --- -title: stringmap +title: StringMap id: function-stringmap related: categories: diff --git a/docs/03.reference/01.functions/stringreduce/function.md b/docs/03.reference/01.functions/stringreduce/function.md index ffe253a18..fb9191128 100644 --- a/docs/03.reference/01.functions/stringreduce/function.md +++ b/docs/03.reference/01.functions/stringreduce/function.md @@ -1,5 +1,5 @@ --- -title: stringreduce +title: StringReduce id: function-stringreduce related: categories: diff --git a/docs/03.reference/01.functions/stringsome/function.md b/docs/03.reference/01.functions/stringsome/function.md index f13487500..31c927ad7 100644 --- a/docs/03.reference/01.functions/stringsome/function.md +++ b/docs/03.reference/01.functions/stringsome/function.md @@ -1,5 +1,5 @@ --- -title: stringsome +title: StringSome id: function-stringsome related: categories: diff --git a/docs/03.reference/01.functions/stringsort/function.md b/docs/03.reference/01.functions/stringsort/function.md index f8249f5fb..8f948e3b8 100644 --- a/docs/03.reference/01.functions/stringsort/function.md +++ b/docs/03.reference/01.functions/stringsort/function.md @@ -1,5 +1,5 @@ --- -title: stringsort +title: StringSort id: function-stringsort related: categories: diff --git a/docs/03.reference/01.functions/trimwhitespace/function.md b/docs/03.reference/01.functions/trimwhitespace/function.md index ffb62321f..54a4c3bf4 100644 --- a/docs/03.reference/01.functions/trimwhitespace/function.md +++ b/docs/03.reference/01.functions/trimwhitespace/function.md @@ -1,5 +1,5 @@ --- -title: trimwhitespace +title: TrimWhitespace id: function-trimwhitespace related: categories: diff --git a/docs/03.reference/01.functions/webservicenew/function.md b/docs/03.reference/01.functions/webservicenew/function.md index 9600c3a02..e71039e61 100644 --- a/docs/03.reference/01.functions/webservicenew/function.md +++ b/docs/03.reference/01.functions/webservicenew/function.md @@ -1,5 +1,5 @@ --- -title: webservicenew +title: WebserviceNew id: function-webservicenew related: categories: From d71b76e7fc9da801b7f945fe96ad9f8ed55c4146 Mon Sep 17 00:00:00 2001 From: John Bampton Date: Thu, 20 Apr 2023 08:08:38 +1000 Subject: [PATCH 07/68] Fix spelling in Markdown files --- .../01.functions/binarydecode/_arguments/precise.md | 2 +- docs/03.reference/01.functions/decrypt/_arguments/precise.md | 2 +- .../05.installing-in-unattended-mode/page.md | 2 +- docs/04.guides/13.Various/01.system-properties/page.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/03.reference/01.functions/binarydecode/_arguments/precise.md b/docs/03.reference/01.functions/binarydecode/_arguments/precise.md index 1624a1c02..c14e517f1 100644 --- a/docs/03.reference/01.functions/binarydecode/_arguments/precise.md +++ b/docs/03.reference/01.functions/binarydecode/_arguments/precise.md @@ -1 +1 @@ -if set to true the input must follow the rule for that encoding a 100%, the decryptor will not try to interpret inputs that are not a 100% correct. This should be used to avoud false positives. \ No newline at end of file +if set to true the input must follow the rule for that encoding a 100%, the decryptor will not try to interpret inputs that are not a 100% correct. This should be used to avoid false positives. \ No newline at end of file diff --git a/docs/03.reference/01.functions/decrypt/_arguments/precise.md b/docs/03.reference/01.functions/decrypt/_arguments/precise.md index 1624a1c02..c14e517f1 100644 --- a/docs/03.reference/01.functions/decrypt/_arguments/precise.md +++ b/docs/03.reference/01.functions/decrypt/_arguments/precise.md @@ -1 +1 @@ -if set to true the input must follow the rule for that encoding a 100%, the decryptor will not try to interpret inputs that are not a 100% correct. This should be used to avoud false positives. \ No newline at end of file +if set to true the input must follow the rule for that encoding a 100%, the decryptor will not try to interpret inputs that are not a 100% correct. This should be used to avoid false positives. \ No newline at end of file diff --git a/docs/04.guides/02.installing-lucee/05.installation-linux/05.installing-in-unattended-mode/page.md b/docs/04.guides/02.installing-lucee/05.installation-linux/05.installing-in-unattended-mode/page.md index e432b2723..3dadcf52f 100644 --- a/docs/04.guides/02.installing-lucee/05.installation-linux/05.installing-in-unattended-mode/page.md +++ b/docs/04.guides/02.installing-lucee/05.installation-linux/05.installing-in-unattended-mode/page.md @@ -83,7 +83,7 @@ Specifies the location of the Apache log files. Used in the configuration of the **--installiis** **Default Value:** [true] This is a BOOLEAN value, meaning it must be true or false. -This value tells the installer to install the connector for IIS, the BonCode Connector. (Ignored on Linux) By setting this variable to [true], the Windows Lucee Installer will launch the BonCode Connector installer silently during the install process. You will see several DOS windows pop-up during the connector install process as the BonCode Connector varifies modules and installs what it needs. +This value tells the installer to install the connector for IIS, the BonCode Connector. (Ignored on Linux) By setting this variable to [true], the Windows Lucee Installer will launch the BonCode Connector installer silently during the install process. You will see several DOS windows pop-up during the connector install process as the BonCode Connector verifies modules and installs what it needs. **--installmodcfml** **Default Value:** [true] diff --git a/docs/04.guides/13.Various/01.system-properties/page.md b/docs/04.guides/13.Various/01.system-properties/page.md index 33a509bf2..16f0a4594 100644 --- a/docs/04.guides/13.Various/01.system-properties/page.md +++ b/docs/04.guides/13.Various/01.system-properties/page.md @@ -68,7 +68,7 @@ Find below a brief overview of available options about where and how to set your Where - Variables availablility + Variables availability How to configure From 08e984edf19d19f4c87d2033c81c441552da2f82 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Fri, 21 Apr 2023 13:07:12 +0200 Subject: [PATCH 08/68] add cfccamp 2023 banner --- .../assets/images/conferences/CFCAMP-2023.png | Bin 0 -> 146490 bytes docs/00.home/homepage.md | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 builders/html/assets/images/conferences/CFCAMP-2023.png diff --git a/builders/html/assets/images/conferences/CFCAMP-2023.png b/builders/html/assets/images/conferences/CFCAMP-2023.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f9e99d0be5e5daf03e9420189f4437b84e841d GIT binary patch literal 146490 zcmV)+K#0GIP)2W2t){1YRdv8`&kyYYblthUV+pV^&cEgXh zEE(OhTC%0qlOjY2hV7Amf&mXa@SpJ5fG7S7hGD=XkBo+AZRq8eM3I(AkyVwM_ug~% z7qL8uZ=cMfD0^g?1a4GTWo6#iIs5GMMZ}7=R`7rPFaLWW$RL6w2$3WKz#;{J0sz}p z_@Dp9|N6iDi~s2>zwpohwIBV*_xBe&t14m}F>Y?|-hTdZa@aZZa=BbSc>n#p>^1YP zXE&dE@2B$qy`dAzmwEr{@%?w+dH($Q-Fxr6{p{uriLxDKFv~CAfAR8zUGX`faQpoB?yXyh0J5fwFJHcTe6&xttAyWlz$l?VY&~mv=n=^~*m4??XX{7@)wiACH{A!sW{!jhHk3YP6asT1Vn{k`7-oAVO?5*)I z?%)6G%Uh?r`S|i5qSU`yqer zYkwAT`qcKr`@{auyYGDX@WK0jeD%T0&%XPK+tBmRo&Mz?|3UDX2mkaNUw{AQhabOv z{`bG|6DBY7lDUWZBcK2LzV9zyzWnxIedn{E{@ixU)ALt<@+aSX_nl9D_`&->_M@MF zc=dR5d;0UQ{m~~s@gpvN`m?vM9{=#!?d>~vKfJ}q&aYm)y8n*ezN5BR5BT5y;9q{` z+2?LB-g@V)$IC@q%=7-f_WOs2pM39=FLeK{zy7PYZl8Vl{)?N_voHMErz&}VoPYQi zfApDmKL6g`yYGJL{MI}9jsNS#oTsmU{TrYBc?*Hwm`#C4i=Y1VXFmStfBLQS zK5uSrKk>P@fBwJt-RGbGk1sR++yCmn_8h^pfdovVtV)6S*JVUiR{5yed#AW|SCxFDd=2}MvS z3cxjifrPE-?`+%I$BzOAX#zwntzC|3_xsSnmeVM7_5rbqA6hT5{*GM8m z3~Li8jgw--AcsVYps)M-iagKF5GArI0Z@Yb zfe=cCXb%qbi?Cjm5ETSzkO>0<0w8QzFb!J{3P}SJ&^LxbVrCYs*i?^1382?ak~uX_ z&I;+}vl4zI6=y!`raMq+~o9osxAXrXIgose> zNs@&TRCvIp_{m@Ty`TQ|-}U%tZhqrL=nIQCD$A#Mil_KHh?SlJ#NT}Pv5rKt{%lVm zi3n{#DL7|=1zItPI?e@jA4xG?5djhG9(|?y7^mZZ`(MKlIKe&V?{mCOJYR)t@)_F32zWRNVEZOCSo60DgZFtoW$7_x#20GOaO=vg(BXVXGd6_DU8 zTrw|EiAR^)Pt#R2y3jBIg9#ff8tw#dl=>-xUYC@Vow$}D1c0t_T;QN3izzZtq1ea( zHt{sDZ5TtNdw4^jtg3))IOOQQnIHk1woQ=?UoHY}F$gg>RNZ<|tg@)iXjK?NgC#Q% zUB?h!HIHI!Bqfq%+6;m&YREN7!JL(;6r~hkh37o#9Wk94irVUN7afS9;S!(`1BNr1 zwwS6ojs1S!XuH9X5j2nzV1z)HQ~?G<((%MWY1@V)?$3IBNdie3?3Z>gWF1mwxHDYYbicWDtapckxGS_d5Rc)J8wWQ~ZA(x@HT|V7=MW z0eBBzkze6(aRY`O?@ee=Gc1ZcT{J`>+O;A~xsk}JmGj|O1c>+9iC83qi(VGJU|;GXD~ zyR%)N#5y7(%_4_o)OvI@1A>=Pud2fs>IH(IE@WeLC#781(Pwb$=G7p zH55UP*fI+RxN8!Ms;UTy2yJo%B?4yWC1VTT0vpk@8%j}~aqVqvC-Z;Wa=?S|n|(%m@NBH(Xz@=iUdMp zFwj}As-v-{@t)Lac{cj8y$y0BSBb?$X1jCJW2 zicbqF8+Kl+pEc|Us@vT@9R;e7bWr`BS?Fmw(TI2d>U`LFdI9Z1&kNImW2W2--<9w2?GnTaw5z#$|$tF5^Hbm}NGk&ml^f2VQSu zMpO)Pcj01t#E>+|grf%@#O>|fwr!QUiTj>n1cQw(V3H2@&u5n!K#k7c(Y1sHSIvl! z#>@+8SC0S|ltg12Cl{O^3Y7a+q!e;PI^&Y@n5P)t6NXX!lFEX-XCA~65LN_inbe@g zny^t7F(j0WHo$Vs@%%GC_bWg03%@zXkipd!AC;uBifX*sCqMPgPw^Cgr!m-gYeTE- z);a#>=T%J_Bq#O}G2%)f>n~w-!vwFS=>k_r-dP-QM4)1I&kGurv>71R0YPF6^%M!He1Qsk9u$5&M8XD}Dopx2SGNnG3B)ZFmZlJSjY(n?GI1s$mT{AS?N3D@?Kn+%R zcAB-AOa@VZUW=>F1Ope?Q|I@#U9(5Rgj9P zg1BR*Jwjt3YmSKX<0EhvI+0O6H>g6fQHgag^$h@s5z^dufHowCL3!bZ#+;Wxz>Sa)tO)IUfr5j8P+QR1x0b4MjaBF^f+&$$ zsM<^0kN?x({roR{*<%DCz5$s1zl@lla`RI>#ot{FFjWGf*IDp;1WDPu=D8jKMjYr@ ze^ks$hKm)Qp=mgQq>4n56V-4dDk%$AEX-VCRQJ_Hc^g}d2~OLqhPSKpZ)3wKJB>>2 z+5DLGi7dkoAZ!Cwppj--Od)K0tYU(o$N`5*{QgXF4qx6HI_3VnNyf zNefjqRE?eY1R3x=kIVU4P$4j;P!!0WK;dF{>Nc*^==Bm*V-Qhv!8Qv{G%m>lGgSca zg57mo17poT^*Z~nxhPjfb$L9)1y}-v$$})tUK5R>gVF#Pio}HWozpR#6(@p?6i*;S z!D1OfAv72x;@ZyZD8c|#d5mq&bGf?Yf>iQ?G=d6KwzFJnDAGdYMLS``B~sz6OTo!$A_jOA z8U3c%cx!4_YR)ZO-U}*|2mtm3MrK|ymU2>i7qmc;Nf}0Y*9n#pDteEbpZU$N{_K~3 zy9NZmnQ>oFo1Xyer+A9*gBZYSC5wpH8M?l!hbBd5Gq9cAq2T&H?t{szAMIwsRKL+} zn+$hG#A1SpveAQ5WAVocsHv}ntJd_hB};CUdmYY!YPA<$A2EyHy&gYT7C0Wj(bQM< za2&X@lt>_(&PAxZ+>+Fs^Gdjog}G+)>wxXgCs2hfJL{^I;!#BGvtA-jTRa($1R$p_8(x{v?Hc4=r8$xE21f(u222Em88j4tnxquN2E1ENB zctixkH6w;yw1TSicG|Ls*`gTb3P!Wp8spfujo?WGHjPjKq*+-*LkFptB+Ee=7(+N) zWMB|w%$eoNBm_+O3Npm9r(l6L#uyOoR<>Lh#Xy{S;5}6#xIl zKqqDZXlgXnJ&jv3Rjs0FZIo!)lom7UsIo<5rLiCL)Rm+=eF=!}B6>Dzs98QodTWwU zpAw4)RqpXDnkYqEuExok0W6xdn{Lb&Iu(#`q8bMd$fs84xNTMVxLrci@{h&g<&a(8eo96UVnCT+4ULA0xg9W)R=)%Ebj4>hts0eL{n#n4-;xzW!Lz-35ENC!+EZoEpLsWCz1;&to z>h_mgD8v%sL>A{nRZc%n?Jz4nXRV1rfy{E1 z-Pa8vNX0`lJYocc*v*D42%@>%28bwwK*TW=C@Q4U@437@o?R6q&W{IEP>XNYbq~8d z^HN;RsIq*n{r37|it8wrAsxQUDQ;!e1u7{nC2r(-wDuo7?T}yYa)%PH)|g zQ|R4@Pomgd^gYj)`6}~ruKPV6cR#phRKc?fm048<_6WMc;>AsS^Xm5%rHhOF4(IvB ztANI~-QM09PR|I95xHss0O*#wpU^gLh@j~z*u-dl7RjOTT$A`FH}&NRn^iH!Aa@!- z5JSjnrChimaA?@5Dr^Nyit^5G{>5~`yosBadFj`%WyGWeA#1xGLu16qIeQ?EBeP_B z#1@D}LMSxv%SIK>bB3Zk_sdQM+*5ekg@rKtblRl7%Hmejo_lo9N`nrDAa-(30jSvw z_E0Vv0038w7=lCwvF{gZgGjUQ5|XZ-!K+DMtLt;w)t~I z%*j!TLfSS_x=yKz0-V)CUXb6Nya8U?&H*Y!Bz!Zrr6VGOttz76ecxwhR}9^$c|nE6 zm26ZjS#=$*dgVxaRz;P7Xp;szp+eOXB_mC?lSW<*7plkH-DCz3uo4AK7^*0zYe&tV z5W2sVSo314-t-tb{u`jQDefeOYAiyXydgr8i!VRq|M7|(7&qE(Pj`1WZ=bfi(|9ZR z40#t7f+jsVcRcPqpZPG6+G{({I9)UXV+S5BGDFMQgJNeAfQeNxg~$T;_g^UY7?8AA z?k-R<#-6iB#Rj55+6A11O=(cHSZOTjEkq`YWzWP0QZOnrs=35X+e#p7ari)WmpK&u z=`hUb+~lfDIib#!1U$gs=0%>ruNz(BbNRR#^SDnXa=BNWE>-E08={1 z?_yQOnsq>7aIacStHwqa;C@gMn~YbPGAdIfy+Ipv*=x=!m%#)kRqpqeR%ywD575&V z9?wG}m=b!vtsU@1ddr6tLTV{QLF)9p1~+1&@maNmy08oe{xqc-d+;WM**C~P`W=?Vw!*2RD%X#1^q*c?!?KA(@FaP*I`3=U+N3!smK0VEwpW-RLPh$XD z2q*x6Z8Wj?CeeP9hZmSh?E4;ZBd|QHW~VN)TO93|i%-}7(WI{eO1HJt3euHjajZYK zO2`FEeFXb(#57P%>~_}$V1Z#*wWrAv_@I;tq%EYNg%eAqq{|xJ!Po`6QfSDkA;$FHDmb8O)=5!o&N`N2mk0)7jW8yRfM%6IpwnC1vjNa@{$>KM za>TZ#5Cyq?DMKLay^>3R6s>5+0Zo92P`O-|*(UH3FPUi@2~(plHs@vDjT=^1RdYns z{?uaUM*T(F0z(09(VX)UV|jv-BBzTbxD*SC@cP<_7)+OE^tfIq)@5ESBqrIu1M{|^e+23w2c@o z|Iy(hQB@+#1+|~zo8Pm$Z>vGcTsR-hLU#$v<$3}D zgklSYZB^~SwoD4$isS;?ucFZOG#mXbaw(%pc9x~>N~pgu?QF-CMM`UW7Ft0@L-i) zw7}lB>M{;ba6m5CYy!QSG7i8+X+)^?@LhYs5R`ejgN&-oxf7HL!OE)a2Z$vkQVRC~T~-TBRMTnr8YMAgLj(r^Cqzxn&W&)DL44?o3IJjD-6jHxN( zu#@<%sCBZyZ~@46*(BH!o5sglj%6cgv6z6f=3%eVIXJ;-RJWqba>Q#DPVun&GSpOY zuRRk0KqP^xc8jWI6$U!X(+l@J;ACh`TWKI`(YVmmYxvz`)q|3q z^=P}iSM7p3C1qx3che|BRhU&`({YwJYBf+^?DmNzhMJsrdqU~iAu8$U=9 zdUZZOdq$d%50CffOUt0LJZwp2Ot{1`G`kiNq9@HNaCVCu-6Tho*9{Ki!nPV$Dpb`e zdB(7D0e084yAp!Ja0!fvy)sVZNweD13smuR>xc>5JzNH+bnfw!G^7FGYW$v+t)dXC z74Olb2#hcO#_#;YulxqaiN}baubuUt;whfu`#r`oUi{mzEgGmIETeiilM5ANETd-> zmf=^}pfqR32p(&e^cqB4&SYFo6-R_3(2!z7!~*Txo3U+Ue*}01J9|p}(F$Tc?m7&e zapdVY+0-AQF{AChUbD_^A`?~XTghtGRv&&@Nlt)O37fB>_9UWkwbm|IencpKu*Se9 z`>Z{k4UR*!=qL|j*lO9BfohAgR*}UUFG>UI3fV>pq5=#g8k~+AiV>iz=Kgqg$*yoP zBP7ib;|90B3_r$6gT=tMUlR1`w3*1P<%td07$fFRRE2`=a^A`+VB5wSRc_l0Sr|dI$=N0f|{_Qqk^bu30cKXepxk z$w&mFEm{DEHYy~~^K8yzTi9J@KI4Y8r!O-@V~O&QJ9AbUU;u?!&v^0KyEr7!HY(Bi z&J3uz=)n-3uI7Jbm73kaDyNGql8$AzN1{0Dx^WvL@)w(J3_HDXLf~QWjVuqRqFC z$Azkfz%vxo0naXU;iw_F>_XXtSYsI=uicPcL>PjDHL%uH1bXQbgkrt1K#a+?Uj(pL z;_D8-+Kg+>_8}-3C&q5<5o3&#a&r&ZBNT&vEEkNmAi@V}yQ?@wh%!@B*#TE&jP~f6 z?eN+#(Bcm)TmWdgTWh<4nll)xMdhetnYSYPQDJEg)x%|DJ?5;u4Iae}nqnCvTJe?p zS!jb30Bc>9F(p>DKlj!?tP#VY6^~>8(l3AYXMXR?6>Y25@rJDVDW2jfe(FMy(*OV< z07*naR1jilH3kb^URks`xJLCkwk*QDX0pwYI)=`NMVA3*&V@{)Z8C5e8?782Yz(fs zK*2tbt|&Nd^L&q2ALfB*HciOg_KI(O@@sN&w%mESd{ytWuwS#Quk6(3b)%}KKFfK` zex1m>h6vLWjSSl;?+9a}P;rbm4Y#2u+eQV(Yg5L9JLWnRPJMwppZ5M;U}?CjRAytv zPMB5_u~G@!%foA3NGG~7fyf0CG!jmTia2dbd20+kFpi%$0^@Oi$XTbg{F9kwU_?}t z&neMbL@5c0O0w6Q@wkR<)3ILnY=1RC5NrnWwdkA_b1#B}I;yLcts^3H*`N+=O*F2f zJq2ldi?w%auYyZ9OpCUo7itPdW+j)}E4nGoOl=&BrtC==W^ZIUolavLShF|6 zl*br2PtpiyX5aK)9&`j*OU$(K0GOB93XU z#$c9?Ck{GdSOd_*tCvBw(|n7w8?cCoIa}TLx*sNLYW%(b==c87SAK_aidE*k{;+XK zG@jxqp5psHnmB!ZhcB|09Ez<>B!xfQp_5r*hU@>{oULz_#Y_a@&4=>KL!9iiL7B-^eb`HUlRK z!A1X#^D1j71j;PH%Je0%ABA=|8Ct`VPLXAk^Lm}yBYHzB0TG3i;291t*u+U}#9TOFoW$V|a$476WI1@-82DP7I6j?9I4$3SsU6oRqf zf<|RckYgw;*?A5$vAg$4L@$DpES3}u7A8 zCwiy_^_kgNkvWOV+Tj~#oyM@L(uh_Lw{&V1gIGX0A`)O0ig3Hsi5OEz+Fecvab-AW z%@GM$(!M{ovbpBG8@KjuUdp+RJ96{bs*SeKueRaJa=I#o2)S)Y?e^Er9wRw0$LS0I z;XnPE-}q0xozxb%IF$Xz8^EvI|EGA0r}(~(@zFnC-?{ZS-@@kdFKL5EEcCNp=PMSN z#00kW-4;i?R`&piEJ}(uf8^`m3=*d;>?(Vc0z|o8uluA~{VCgdw7>Grb$E?AhXI!l zzfT{&B`edE^Y9t_-orR9Dl*Gu6q!}|=EGjs#6^v+5efxfne6QT4>MG^&Ap|)%S6Fy z6|t6K=`5-aBa!OGR*_y0z5Tvq#DVZz42VD;ctAJ)qK7=9hCI*;B9De3AVDK9_OUu5 z%d?VpjJV9pYV?U-nN1SKDo4n!@+3_*>LF*jHSsIaZ^=_#?pHrkw_3KCTd3_da}QU;Rz$O4Y4h1Pp8-r zzEr>7p;%>8?g0&HE_U>!keMMVP?rpCE%-ZxUP}rey{jsUOSJt4Koch2@W>lNZLI)jog%~lRpsC?p)HzQ_VUA*9}_cYRSw(;(X_`RvZ~*GfMs~Q`P{$vOF#ZA zUv}K+jTZR|G+is$r~dgVp5g~0M%!(+1k+crxD^_0#M_|cl8zQDNeZld?b+4t)5LH& z%OehrDz96ZfL?deJ)#1f3%p(?jRu*hx%=gZ4?>99hL!4Gg^6@B~Pxh0$ge+Huk5LJe%Jy^X{HB=pi^0uM7> zi_8k5Y?B9b4imvbt!X!CFI2W%Bzq5JJCc~aJ{fj}Xn2!ayVOggOECdStp#4={pFKG zL8ufexGgI#`!phEyTWLZ>H>91)Z7${YmRC>r%>870(9Gs7T{3Cg2Bz}TF-&L$_C`M zx?G_h{bnjVWAxIJvXe#h^jLw;&tlmTq?Z3_Fp3qMD9&>|zPh}pSd>O7G(`3FMHd04 z#ThrB{`p`0;;;PkIqr_a_0Tt84Bh+fBfx-mk(#|=!||)!-UeYspA?1 zyzD$1rFN|a$z>#d3!&RgB-Lj2^MS2Ss8Y@{kDW2 zsoQtk?GJzIhpW^XTqNZ5Wg=5Exldf2dkEaqOrmHZY~-47AGR1h^iMe9u;Gw)U@o7Q z_4ws!WII@(mjUBy@M&Kjc7r2s*J^58Xf{|@B~57rRke3{VpkhaRxdLKm%82Aqf-|J zYK>BlVeD!(udjagHba%`S}*}d^?WyUxNm~yT0dn#F{bxWZ!bpc#0|_!_a#P?zohjhs&bEY= zIXKj)$>Ii>v;u8{z2GCL7l;5Pf(*OHw!vXAZ7JIC4bbI0>r$aHFgvr;5j$)x2reDl6-w*~Ls={aKcd9r1b(`D2^++6gi8-Nq20;qy=B9}Zo zXo8Vd7K5>wF7JT5$y`rv!PBbNK`F?K-~qC{JF)bImICF|Hj17u1|?2fWCWx-_P)5a z&&}a4upnw2SW;CLEfNY#0wRlzZtDQb0Tnrc?X&?h>yqcwcG|?j5VrHn`|W(uEm~I3 zk)^h4ZD>o8QM&o!FaPRK|JJX~o6#2LYf5fDW#gxKiXZ40uldT0+PNlEGRRs|WeHVW z<`nadjJ%vl#9q;OMSH={d>Aq3jUT41RV1j}je?HCa&?_M?5 z)sByg!fuaav4MeZzsiq{Nz#a-Rm=X;HiB`d2wmnLTj;HAjImU^>8hk%RhiW;A>|yE zr~cxao)1Y`b@0np<66}?YVq(haqqJ-Y0t}ra4^DTIkTkERA&&bQfzJJB2p-0^0-h! zbDxgYShUtt51{>D(RScuQ6Zq{Qgx<=3(2b|bdR=Y?g5Jdn5xV)DyV=-ownPmIkxa# z{R0RTvRonq(F;f$e`fQVX=6F(C<08|`;H|!mpDPHRJArWv(aiCZv*dndpeojhpu}z zy3p&$l9rKAzZI&=Xf*=?xT@I>B12c_8cU;P+o7newhE}K#c3d>_nRS+p^(P;{sn#3 zDdt?;DzCRb%`9KW=}W)zOaI1KejQtIF*kU<|DJ}-Pw^B#&@rw|CUo~owyFv+9e7=h zFW8QUHmQRm^37AAWmGBlfxV2h7B!4MiUEOT7ZFzpvndUI?A_;=ef;$|U!s*S{UcDv zL45r={UetNy>EoM60LB>g2G8i5ENHFP@)yhWEVRUijHPo{@Lfsp=le0dGWGQm7{jh5^mXq*H*4yD?WHUa}t} z$xR}vg3Fb&FKt$@1(y_!om^r5=3^~nxl#3F<_xmrTsKdx+Y6oVdhnWp6r*pzwB0a@ zLFzP4p4JxWlDk`8uO)p5$-8voVkh7b91oqAB&|HBH{y^sNfd&`J;-g0kZc$URC(GJ zl38hoMyvE#MjdyJu0}e%`rk!M#(OrO5LwFsuC)VY7qvztBjQpFY8Gfq4ZWzc;-n%F zvi+RCOjmC^Y&$&cHeFgGpZ)4r(K@lK0AukYp1S9!c#0qF7~k`6iC&!8 zijdBZ{g>^z!HD4D?f{@$NxQfHHP`I*G7JEOYPoKqT;bdc#y)dh+V5qupLnFwFbIZ0s4@p0u;h-#a0RaG+licX= z!BKLpku|T+7uWCEaKWK+UO&Bc%vDb4weK?4qt4?X`1h6ee*=p9geO}6^B&~+jXL~x7|kF9TuRb{N3i5Ri9l)%PeJHv8~F(RbF zMR-_SlMT442xk_hE$Ff|=0z;i2z8;^#l?`Di@s(D0NRo@LbYF)Q}rEGO%p>en+dcN zN^{VI8W9UyPe=iQBfvO6yhQDaQ#wh@iZzYOOWgd(fAHHs`&(b(mO!<65UyqfPnr2C zp5g~TzIS?F-c{dYfW>r8*y^U>u#aw{sM*I{bG_?2fyLriiH1xW)$UV^HLHU|lm!Zx zedf#$+QA`5eIx2rl&8ZPG;ZCmOw zA{f1Hm>SrNN^-($UFC7`+EwsEKZW)V$z^W^14trSmamke9^NiL=GRwMFi>JSAP6js zYvkm@pNrwdyRU+i5hDBgN2IWNll+wD#@;4vu!Y3(vi^PrEj`A0QSWB24} z*O`TI42>$9La4-fh;~Up38ed1bF6!=-}6|xdRvuAu*d9GmDr8E9V6?ps@75>g2zlu$&a1WHH<1i}JAfq`~oY&UJ=!3RB@?KbXq zw;7+qXSdtKrfJ&^7=Z*rCPxY7fU*P#Wg)4QDu);DJ$udX$J+b6`>INzR8@d`u*Z|? z)~)-_-DjV3_DXZjIY5gLWHeV2Ez}`Lyqz$$O(MjUl6wwxccy3bC86nA(~tv4c7qU- zW|WlMHV_UZ+y^OX&}O+1dgIB=WXa9?jsb#6p2(5^CUR~Q3M!7C3JrVV$uoCPG+J_V zM%9DN@?3noSRaqvLhyK5nFKSkVDHV0ZZW`1$zx_$iL2W~#U7=pEK`?%p(H z&sHF;wjxjcb62+2f2ZD>VJZkmMLNGPcVtraJ!6V>=BbWmrQg-uJT+G$Szt=Nknb{xO>jl3lM?1WR~P`q1R(j z*)US_1#X=RBdusmG9@{(xsWx@Pse}^xPx$4^q9GOp%j&9#^fXulMuq95z5OQq*)4L z7R!^96b#IR?4Fs}v!-QQaNHS7&wL|N13+kI-jqKtIRAY7eEeTBno8E;og{7i!%*hB zXw^B~b1Tmy1+HC;Uw~_(>MOe7EIGg+u8=4MN2q~LW1OsQ`ifE4^zlvx9h+Oy(v$xu$msMWO9z&jj;LK6ZAO2&aivaykYCvg~)Rs<4CM^zlm zls!jjHa6>mRVrm{7c$X=gcZ=$XNL|M@HFo*(J?a+M27~KET}-eP<|63{tJR)GV~}D zGfO8MMayif+)0u!H9iTHlDxZ1-mp=Iqoomp))E2c=(LUOLIigT@ug&F1mrw0l)OGc z%IJX^%#z0$uq+b+6HK0I8SoB^2g-BqH6tlCFs5VxlX;>EErG^TKO-qxqyQQ$#Stuk zhYVWQ;Li>}&po%sWKL4qTS&>uA~p@t5L9E4<1i!LolU(aB*|VwFsrOV&N+Ow(vugE z42HgolMp-58$d9J0J*Bc4zHymBN?u!XkeQ&T@|mOet%%eQi{U4ty#4ijD`UiEjPWr z&pc(nv(9AdO}AL!-&h{|ClK9ND9X=$l%J1(+oP%J)~(#goUWFZcXG~f^_r%m(~MA0 zEaHh(5Kv`5sTQz)E(3KbZ&j@uHyeKh- zBomkhlT%r(StDS8K~_7`jAqGg5J~i8q{r%&mUz;IRwZkl=yc1nws;yLn9RsIWQT{H z$~hx!Rqg{G>Q$u2B?ym5a(Ol?8JR-wEAA(A54{IwV>D`&8G z@EhK8<-{_w4wpC)cidX5GdO zn>-g^bpCF$cU?Gd(UOI87tBIaiVAf<{|TB&;mHS9UG@1JmjBk9wtx@)jEydw*#7nD z?)aUw*uwaRsZ~#{ZK6xGzD-R3tww4kOzqU8;$$-|1q%0LoSB-8XQgp%ER)c}e zQV9qPomB@Rr=+l|3fxWTSC&X01l%K33b93n76jQcoCcM1@=9J^&LUF8UZ|I&zX)Jr zFDz^+lF#fnizeIh*AicpAYSrlsL7stO=x^LqFydQO;DxDBh7A{zUO8JMe&XR!R2)8 z&UEN{hac4So>{P^i$)}aBU;`va@&@&f&+k44J{UoVF0b3sDdvubwJ>-{bB47k!D1q zv?dvo6@K=}MOa8L7v^d+Izpc~8JK8<1y^X#n#2)FQm8zXt4}Z`LlZRSG8AHwpmj~D zp(PmQuu!97?UIuBtRV?=k8ZA%lBdKX2i~J)&u#WdmzOGn+{i4q#AGRoD!eFYONN;rb13e&c2A8ro6&l|&{ww;`sn-qVRBWl-38{~5Pcw&GXrs76`9!( z8<7Qv>(<{7*IqEMr*C8Y=;a@t|FYTJ*7_}gEijOeZCo>X=hZ*@!L>hn@b*X6JhR?g zN(LdNMsW9*Mj(&Q8rfs71qU6s^oZ9Sbl9?`X$~286t`(vUg8iy*VUJO?}pFca?bM8 z7A)QUC-9{&We6*Oy!zH_?mXboeGfc#i8yB4a#>~`2}HYg#fBTcd(Yzi_de>R1BY@M zJ8lSfU48HW`n^v>BgvaW6j&mmicyXIzt%BPh$UFeb~NmaVBy{i4nAh-iRZoYz~lDE zD7V#v>T1ubKV=MisqwP&(7g?ORxJcq(ht>4^w2L>Uqh81qr}uIv=*!Zmn5h^(1vw` z+$u$>4*=a;nHAy?l7K@gmP(c8vgmF^ueGR9d{W!C0~R99A;(rOxWfKQ({v7Th5_PD zK~&AgM&RO%wL!Iv)rqfEVkA2j6vTF0#5O#(yM!F_Q<&x_DGot7Y+b*SOfZz%^UUi* zY&M^GH}kF_qTjsD99e7GerLXtY3q1mspUT4N4(nOp`$1=%H|QL^q* zm%?udYs7_4Adx_M0>(yqX<%&SE_cv4X!F$MfWgF>nMip~phHb+XeD7JVbHc#`m`ex zu5dmA79JQwOJ)^*ol^2vk_kk3&Y_JBfQ8frphZhSR+CcPLhhmpO^~R5>zg)gXgO=~ zX%`&wmJ7X+A)$8a59hVFX?Ifbx4mus;hR=`>(kfVcEiKIo{a}+bA&8t5)%tYyqqu} z$J6((f98QZul?+;d+am&)C-S2^=+@3yKq*mufOOo?>F8eIDJ^W!bkzi%>rLanOC_Q zs=kk{ypKq`iL&mQpsamKTei@q6%Vfd_NTvdEEw4_G2)9D z8`ex*{l&Yre%4n%f8D!2eEy5R5I@;LeDUwEz5ddB79D=~AAjms)7=l<7A{=>Wl2}syBH}QprL5`*!x!?n@-({bA*XNJCF^E(R$lLqnPj-iZ?0qFA+nj03J5 zduE}+MpxQZmxus^A6f;y9#%<8iQabrBWWa2pUpi;y;ftyi$;4p#@s0 zbyqZ269zb0sI(#yRZuAhtr!Vs(T)Iz7PwgDaO5^`dqE7jKmY(B07*naRAX6o!bD?; zRYx)=*fB(JeQIh_g-gV8+qP|MB)s(e6r=!&Kz6@Z9M71kj9})5yGL5x%steM6EW!O z(;bw+pkTaIv8Hrc4uG^g7bnYz1X-IkMI@S(1oH$AoU*o+LoiE`3=m|gsm_PXoe9z) zu59&KBhU}zc4H|SksP!pQHMm1*d=gSO3eS>4DsgJ!KlW4jeHO6wlT$Xy!( zRS>k|;YtM;O((`ygwisQsU{kxI~O#32r|(aU~pF+NxdeK$gKuKVkCr!-b8LUj34pV zHy`rm3%zNGHWs?8X}p9Xs0CAt$M1UjvVXYh-fJJR)P0tmHS6v1iTm`E30 z!0Hv_|N1vqT=BV^&i&OhUVY(ly;){@F{RJCi!rOnpvK8`7|Zg#tm%c4QBtiI4ZqK6 z&X*D&)MrJMI_SlV7#V=D?x~HJ|Kk-mTz=P_vDv4+@rY&T9liL_J#Ccbg38;%35YSw z+2f$y4#v_`bzIx`XMeov#;@OU(^u}g^sm18mCxL;`~&Bm^7_NjO9(CToi?a^^JTYh z+N8bq+U1tZ?|IWZUNe93{GTcNEFeSc9$$0Ix9(oF_xzRjJ^h0l9zN>qSG@F95yn?f z+<5s-do7&5>Y3HIeC_+E|Ki~VJh?-M2{In_>Vp;^wtzK0Dw)hk=XUp6{9A}hm0K~) zmXN3x8=e`z;j6cP>l4@g`LBKKHE%ukZNGWJ$S%Dc*~J%}Mucy%tG?i*#Zrzd#m$PM zrb)_Gy#nQ!RA}(k${y*FEObf9%*vAoh-!fWCN@raZhO6C3C0w%2P{f~P5nCWV#%6z z^)9kh6nfRsdSwyr&olj83YZ(2>PYCT|B+XkW6JTXx4Oe~F#6d@}<&KD1s8 zz)u@g6+wGKIid?T0%v5(YZ{h z#~a?H25^t+DI$C9tesbteYIlYr*~AQN>sk33kfNrMRVK z$Oxef2he(URbx)%+#Y`Z8L$2I_o8TB6hM{g6T7V=BGh(W`^Eox)klBj3eT@%ZYz-@vkla?emr% zz0b&4GKMc^hLBYYD*g~0BZ=OK?Q`J5U-DkGh zjn(RJ(iNB9uxRP%^4~slV%?_eKX>aEy)ZxhVa}^By(PEf@B7nV*lWrBuU~STw_Y*3 z+c*RO*L~y84Qn>M>$lI}>yY_ZT=u=e)Yh4`wsWw+ft{*7tU#BIM7Kf5ho_-H<(FYF zqlu}xh>UIIZ?5yzpivRt4GEo)0~5xb=sSW1b2%v-8OLeoo)JS%5o>e7IMd+0kV z5H?}u7`6@t+#NXWYDS6?aVaZ$b4wo-YQQ6f#ud9KSyuD(EDb}XX92RNY$7GlE*nbS zJp=|I&WC;?q-Pf7@UjA-2AQc0k3~X=G**SO0Gcw z*hmV_O-spAcyEa)jCH{_mdxbdOUVdjurdJ%3eGTEP@K{tm7XkmtaFiZi^rga6QH*t z)fIO}fxbtAn}tXYa__N;4zJv1Kt@Y)6PtOxGvED2j1{kRn8A-P+V%_&mp^^~>c9NJ zC%*WxYX@t45FJ?|2OAPFp-mR@>&_xo8l(mRW`G$QQ?d|sv%y%_gI7KJXTSFG`)^sH z0WgD3VDmBb55w%>1|@`tATw{wlX(;Df>zq=6OafqnRzl#rWvn?KSKaAK9{oH7IT_f zKlRB!x%}fFxp==r_xk-$eBgrLdhPrrbGvRvE1mrW&0q#AyH@8YmCtEp*L3Pd$Nc_h zer4HPj=S-z5B-Rn4Wv_Vk zerLX8+2i*y@ zl-%9iLg>dzwNq{|MU0rUy!El3^=FN^X9byc)q(=+rArx>+|T1kN?B(e|pUmZE}N2 z$hGca5Ft;aK7aRFdmOOG!o>^b?=~kTwgVquJN49$pIN!$*)>mYL_1QDbaGjS5@E8u z`tk9<{JySvBWgKCt;~l|#i{ zOV6{snf;Cb=t(;xbq<$E8zV27IzC)iI{{LA%=7R^5CykpX6I{O``|F7Tv z+zns9?A}Os&}+ zM=H7QV%}YXyNO9%uuWp%dh)Rqcinx<+Eq_38eRCZ{STWve^IZuYnflNDcMjWAl9h_ znAJFSja_vui&v4P(v9jE5D82gN>(NjBBbKw!qbRs`xX zLc>B^6oVt(EtdwarciGMnI+7#8bIpv&MH+LydU{p(3-}^|j+o^VB zB%y&%l?;iyOGv2)z&)6=Ng5Ox^6-rqhy>C~2q{SHHI13tieZ$dsYwD@mo-2$%MzqK zXmgJ_&(iKEyk_1(CuKGrzHT`3+;-b6Ne^EC;Q##a#gosbL=y@@D}||Qf6H{p%~mGoZE zzgiofo%sJgboo;cu6+N0d+SkW9iH$=b9Su36!6e(k34Y46X*Z(NxfYgg2%n)h_AlU(CpW zZ)&f+ftoa z*=_W+3r_gT$G`FDJuCJ-dU0>ZqQirC_#JyA+lco>Q=IqKNDXCiv21YA|N>#n3BW@|2l*t+|2Gc>Wy1)|Hg5Uq) zt>3!x;tdlIE?JoN-|e6^Pu#!hv4wl?b=3U*j?Qj5I-P2zFD6!hJPP1j&b<6z$x;Go z2|zB@a!gmqQ7T#jN+T;ey8@AH)n@NU1)1hh=grhdH%_xuyf(XN;X?$cNA?mcxFBa< zzjoE_pa1Hj-F6*awQA1nF{2M5SS{Nx8uI%;q^9P#K(g?Xfc`5 z4wMB42d(;ID|l+uqD6wE^=6Pp1e20hKlM!OQ@s?54F-wsDar)0;NlM6?eGj-ZkF8J zAf+~y?lU0zdjKFPt;(GsD#$&NgeF*70Q9V(kmXsKHcC%|x#d9~L=IU1ILM_@I$37U zUNDFa3Vj!w1ar3TZcI&M&J6bDPBefyqjRsgQ9U%qsQ~pTBdG^9?Vz<0fedFcGSpH| zWVY-Hf-DtL$hd~?LNv>Rl1DRDf)NT9*wSQJBrjthkJN!#w6NujLNyl8l?t9h@Z7ht zxdsSr9`uz)7oGIlrDwe^+oao1CS|2r3NT0@K8vT$u>4z%+pU;B%v zo&Bzpc3ITG63}?LmL$Qzju=MgjqZ2MKKmWH&w0Oc()C}w3K}kQ%ght& z{9}Lgncw^0zdnD-+?wUv>L|W61<@HQZvmnbhM*x<{;NiK=4;#Rb-`%{c5b>o^*Jr{ zr>^J}Foz1)*)0G_O zV;Nt+5Pk(1&pbg-JJW2C;ihOUUJ8`?pb!x@jnCB83cZK{R2OKaMip2@O+HX zAv8Me?I(WcE4N+s1?Elh^T*R1@)w?4DMpHwr|Vlc3k8+7kl zzy5(IFJ1H0-HD(%s9JMW!84bJY8KNtM734-J|KF-z`5SFrgTcl$KQBG{!1Uz( zgNJX~@W2lSD_2yE5+IE-uB(0IO`zH7y=|ChHNa?*ZC>=NkR z6t{0XCW%+R{-_Jyciuf$KXlb4*G+Q_Zr^Y~!jliKy7Q_BUiI2Tci($nsQ?hio^$x3 zrTbj@sT=cnu9yF(GfMC@@GCFAVfTF&yy|sF##0Y!?}PR_>ZC)i{KBmpS5Iuy1nKzp zCvTiJXU?*Vjz&UUp!xgEKJMJ(Z~fZcYaUs*gHKsq!$Kru>$bcDhBb4V*)Vjg9 zFTVEqb3CPWwQH*xnje8mnNV}osys*8E3mTzt{^Z>s$EK@T|BgY0{j%w1Vtl5AMpG4 ze}8=N|3L^%fqhXn~T z=K``~{U-sW(ab$aIlPou6V2E(Ha0ry1<_V&t3${aMaz+<#jLtnp?b`4e&bf$fpSG*4H^==ESd9xzj)W_Z#xFPDJfYw zH%m;neEWePT=~G3m7bXgQ};!x6Po#f8DN;1ud7LZ?$^)j(1=;reBq9(zWlwnz5kq} z&OA)1fGSWr<~8#mFKrNDqMi4vryO#^qRao`+bbVmhnIv_-eS0bt1i9CCI@FPKNXyI zLuSou&U*Wa5B=z|JFfZR4*IU`8js%n%)NK4IOY5!X3g(KW3nO9(mC&Z&BW>r*M04K z8eZ%d8mpgJcjwpdS$6iZbM}nfj1e^Ithb&pfM4)@kDPxB_JNq87_?4$0cHI|l zo>)Bz^z|GN!V2--az3olP7SPOL@M=OSGH*k$Ywo7C8^u}E&~4R17kKK8Xp4pymsTW zgS=|NYz^ABKggQ~Xr*V@t$t$d)6cHGf76ClO-iY^^X{Qt0@4eGw0Dp3bG$avG}NP(pl4 za51|Ngn=;doZFoHBewe?OD9G~eeV1zQZl+l045imjIQY{&q6^_$<6zDAbOV5EG0{p z5-lY&OV&hlFq8F0no)yUGlJA0HDu~f^&{4IW|+C0$SEOmwoujhtXfa8i4G-Bit!_A zix>fBeR`zSty5;tXKNl75xVB*^JV0kO#SKdhCy4&l65M_U-TS(bSpca`Ti2 zYTF0lz_nkz_1^FPIQgjPk%R#?fKI;P$Y1+!?-<*o*{T_RLAzvRGtZX)?s=!4f0(g# z%VJ;{lePH5C%%%~{M-<30woviLtaBU(dV=4+dBjZdDRmeF8S+k9DB;)XTRs<;4hdN zyYH|;(8ln#-#ULV@NazmyWN(!JwwQwR&KiS%eTMs#6y<6VlOlZZ8`unopk z&i}b8_wx%LYUd3>$o}0+Zse@d(=I%=Yt91z(}73td(_cKUi0Z|eX{izakU-Uk-zhq z>w6qI=Ut}^8!JLf4&CDwCm(X#m+l^4xoJn+(Cy5iJl~MvHE%s(!z$c!%|pQtz12~P zpSJk*NCFL+XG7qpSfZJbx1R=2(g9UY*g%>@6x2cYPaE?c}VnkwvpdG&Qw) zvOn-NHZnHhdBb1|=+7CO9k{KC^12EjAgQec6hqz5HH`IWGL9bw%9owRNyE*_Lm;NE zzp3aJ6Nw4#+56IF~@}jA?r! zNGX8juw3%g1k@H~==|}697sh8Bz*o$U$T#TGJ$oK!&V{ zZm|T|kpy#ZqsuvY(1g)QC9=qyM0o2Gy#RedHzIr~2NEp_E#xT_lz}h@B8u90x$+); zddk^gE+6R`5NPlqka5zIHOU}lKxEenKRp;+uLd&ZlBmgMBSb~{O$T~~YZh?ybI)ci zJob#GXT1p{Bf)4h)aBkqn3Z?z#f=CgR(@)MP6j8XoVX74`h)o(fe zzPnc3bJGLbDJS%z2E}I|*>LOCcb@pVgLd0%UID0d<(5&r=AvVse)#FTuD-u}_xX=E zxoYZ~FWmm}llNV4z}%Vb!U-vz{mzq~UA^x5uiOK1hn@3Iz70toc--C#mh5)>)jyz* zKG*k^+a^)!zGAqfJVLvX$@|{eBA=)Id2d zpJz8q5Un9o`L0;phN-bgq(dko7RCmkXD^-I(bAtHaUIQc790R=ZdEyZQOq;}P&VF- zEI#+_mz{SJMt0k3R{1%S&CfRkI2_7Xee#w~PxcEu0uY$o=I=G{S3h!5Z*EgtzPD$v zw`=pBKX?mf_cHUy?z-@UXMgx_e`Wt8_U0B3%nQtT`qfS}DlR;H$78pB>xaMa-m@3( zzf1RiUEH1G99ZJQLv|aT&Eg|%-ARKby{`(xcI@naj;&$}d33rBiv$g*riypf7@!WsTHE4hWC9New z0Cl_TEcDPUUD>SGsv<@lnt3V3#cRdB;BuKUsYe=|Vc2M#oNRa5bpa`}?_UL{t1Rm~C0(RYX z(H>{K1ud}jm5u0_;z$qjBBBsbCaEZBR1FTfvfN0Yj-?dvC1qzSL2aShfR{X?2Sg5S z&Yp8<8=INj1IVYs`T{Fb17Xyqn)~gXwy=m~hQ4`Yn5?4pBiA*fKWU~EBQYim+8oO{$9;&<2RCF< zh4f5A&$Xm-$ArL_(Ff$K-n0DV_r60TspfrV?gE_g$BQ2Vo_%c7HJ9BY1ZhmcEvo15 z_^mh0Up#9EZ8ik3dE<9rG6HmSCgKypI;5}HM))(^?n+H2(L0FnJ z+4C>Uo@&Arwwmq;Uc-STCB|Hogt{o03)Kj+|Ry4n7-=mxj) zYI{etw=6w)$z3-;Fus0j{;XMB{aB^%3E1DI5nTWPAOJ~3K~#==g(Yu&A}$9FW|5|z z_P(c!3tNVnQX#=IsF4^1&aK*SUH9$Je*SOAIOu!c*l#y&n3Ob$(TAU2_v5G6&)M~m z`MWPnfdHt@Se@r2Wfi`v3Zhma^DC?)HPB?C+;CQ08yJ(asrKao^K-U-|I4 z%TH-`VFsRKliNvSd%sL@pK8B*@pZfIz3}8W9FO7rL`_-(fcd%0PicCyzWIr(bI!hl zF7k^VE}^~dn?G2;YU1>_oQR%p@%3dldi9%*p0oS>?|k}dZuyZJ2h2aX=H4eBdG?HV zEVD$Y*KLo*LJNc+`|5)iE!yQfpS>A_mOC!Py)y?z?y_)Be|&Os{5cuKI^=fE4o|aE zZspU1wsjDV6>_c!&WcyGSqiRf0Tp|eNy?eCGC1M+-XA~s-CHhycH@s$KKtxo@|g`2 zYu8MyUO&FEKj4bh8^8bXianPeK43B`u^Fn_6a-e;H$A&@gp~?*UIiXmm6%&Vm?4!a zstWCOL6JpimmPa^DdWa*vggKTA=3HNL&g40W5K2q4-&h%#rv)-WT(5b%RNe`-U3sB zl@p>Z&1UXR9aIXHH>|XysGvE zta+YEY7*c0)b$JZn{)hGht2$#AzQ=V*sfz|z43^LZu#NEcRaCqZS!Yx2%snnfRVKM z@|00BlK@e)R0-7hWhi?RTTX6U$U|>0>RDmW>YYNA!f%8bs+c_jG^et!SpCf9*Z=EB z|K+3q<1-)K&_1>n<3D_I#oBc%N9RvAv-<;|^ug4kS&Pm*^87`MmgbzP!dq0S{_6LJ zdQh-nun0g$SI#s7lk}i2WHJ_9PtadG+Q^>{Rd1qMce+Jf9%bVOwBeYxT4QbT<2A_c zqV4FsaR~_Kau*e?vc)GNX~vousKlL>OuI<*R2npTm;WQ;B1Lv0kYW%*>;aLP27oB# zMnPdP=mQ`P?kQ1p&WO2@Qi?940F#yadIvKLFChj0h)Hm@W7fqHI1Ol;UUh_mD?>)J)OG5D2=Z??2pLo(mHV@pZ~&4O znMuVl0LswFCR4NE#M2Kx|BW2&O&jhVI_|$?#gmVZ7h?I+pWhsK+|q-NS}YPuC?t8{ zPdJ8r-ocr0u^l?Royd1x@z4<`A2w&v8103TYd>p4Ex&uot)p}1z4jMQ4DIU}obf|~ zvi#b2FY96SihsPm5CiS}*@YE$@SbaawEBT{=e&7Y8Y`){?y?TAcqU%E{3N%Lt3G?v zbD2}AedL}MKfLFub1pn(bat=OB>?qIhe9Kr`o?2s&z=9xOKy_y2xs>vad%K{t_YCf z7;k!1L8uCd1)@7eWJM%(#@XerL>UN&s{ojzB^0dTTG)$%sqQe}%$Bad@1{S$^iMzY zy??l4&3B)~kJ^z*OQSzryYiaHA5L@Afd|js`(Y_ak0023m#0DKR zNoTAelrGX>m4aBf!Mn`0BPxSozcWgLz+>A51XDEbqKI{Hcx~F8;bxrC9X>R?NO53T z45L89Sox$}CAc!xKHB0WnCBAQtIB7i9OipFUL@TTTCD4|u zu_k5`3|us(l(IZag!NJ)3IQsC@T4LMFZaZh+tvg_v^i%HK#B(3A?{^^kP8Ys?r3+k zlG;IDziy-FX!nQ~azvDDtjgncNsUaUQ$T@xAT5DpQY?Z9Fj*6~5`aL5MSq@3(Z2Lj zH>qK0xhq^Sv?(n*ec1u$zmX$B*f&&_+fhTf`KsFx0$vI_6=d{Jed{qA@y;LJEZOzb zAC>xHXG}>LefW+?*FLrOxYr$u6qG^yw`HN9d1U21S3P*lS%>Yi&pd}u=d`q?h3@Tr z$im}KKlpoBe1Fv=YkwlKWHBw?>MNhVcK0Q_A9cpzRphNR&okyhVE4syPdej}o4thCWwhDZ5_+gp5$5>fSZD6+u1L2H=pX zFdHJ|8;W)`{bzS1fq7<4I)c|iF6ELVD$^iRvc`t<_TAyClQ^scKK-FCsl$?gj$odh ze^ss>T^++S-938?F#3X`9G;<+lEYhg24M`^85$kgSqt`o)QZ=IWt3e5f^d%R9{gvVH9@p7QKQ-SCxrFcehO z;ZHxj>aMFFJmuVD=j}O$;l$g1N|6h0uIsMRAb`T0|Mp*v^!?Vyo?NlPdTDm1(kSlVaK}G?>mS!`Tt!vF z4K}2oz?)X?aizBy_iS@u3T6FPx2fj{*2uv(2cr=bf=EmT})L z&n(%0?>T$Srgn-#@Xi|)##c?=_~qMPvFxBFhwddZ4K;CYCEGw4(gBC; zTl@GXpxpsYT`xGCSN_Y5yUZRr`3=W_UTN#M<^>jlw%&e6?)CB$7k}-t@AfwgfEnx@ za$WOs;?%Q64G?b8w-ybfxBTgB69lXbpCm(qGmv7(n^!QeD#Xmd4fjp&0fB58* zLl>kTLuz&_<~b5`r3Wesw<_h`8bJ^F+oZwZ9>r5sRzvp=0v+|N@;VNg+kE$revsjw zTY2{E8R%0}NfWuBl38O9Jhl4jyH-B=^r&Ih?A|OIe?0Zjo%i1y-MJ(a$ASlO$YUth zNT?v5iW?#c83d!;`vFLgTtG~lrDzMWC^0!@$vPt(U(qzZf{mIcT`g7An7|N_uFE(W zN-aA0aglwBQ0PJiWu-j3w{X!bbV#Jv52!eWo9BbN_?$JB9lpgh&3JuatHrMA4??0b z=g3SeM{HQkV?8C0o@15#IUzU|ShrZ@T0pAi#j{U0m&KJYydo?K4^1bbVy+eKR?{9r zO1;2jJI_Vc=Wy%{i#8{V@k5<6-OV+$Tj}VjH)L;^v+Im8K%bD#~*%T|5v<> zJ4Tt}Co~F|gX_A>Zr!k6=UsF>(~B}W1g+=iziU~46R-TjZFKGAOHaX`d35#d-?{6Q zbC2C+&$*F;eBMi1BBl$LFMIZh@jI`6U^8R7Vb#R-U%va8Q(v)Y>HHzw6u0;p8i{AW z{iIDRCvW=Zom*hhw)KQ&{B390`Nw~_a^>TL!;d)(wsqSKz+5IqzS0Y+aDf~}#5lbQ z1QMBSM#?*kp(|=ybpxNK*AT(SS3mvarnLhfcy8UZJm>6$(Vgy1lV+unu{8R`Q6rfY_LQ>)CBB1QS2NIBMj}z$iQfdm%T1s?p z%el)EjTWg01;#zr*s}uT1xAV@m+vXjc~GHBf{|8e(B$qRePWhibctYgk2cNfk5q)D zl>ooM^&Da2%WGAV9vPY7L68nhvLq=@Hob$+dHoshe?NLntr%*nVb69C5_szIHBb@> zN|9=z_CI9F(5H6%7jNrehgvCr@Ba5v$MXhD>sN0YU$<$=;d}F?p~`=nLz5fYYd?R- zK8Nmg*s=q<5c3877$rOKgneIr^y065;hK%B+MPQ^K;jjb-VE!XzWh~6ooLN-OmoPi zKm6o__CMhNr|!+;?5eIa(QmE2&%HHErFlj|NMZ&tNQlJhEAOBB+tp~ z?j-GYerdl9uYVmU-Oh8Iwi6s6cJPFmF|)vc5Hn&FpaIQuRo#2`TI>C>_PJFO5@JQF}OPM$dR zxbgS>+vBN0`_vF&+kM$u&i2<}!{a|*%rTyH?#zz>jG}W<&CKl?TXCzkyjlymG}k)x zW*oL58yX{W{Ig1|a-l$>sh}rcThvGWk~vu>u%?vtqV8dwmB?TmR&CfYW?cWuzD*-X zjn)mim6|Vq@aEQS>q1X&P^yLYz7%YSJ2#{nVJ?*DG07x=4GM@@vle=YnOIE~2(BWg zfRZu07rhH~QH!6&!I|OUz@T76K&pJTX**n{bt+~6Bv-Vv&=r9dVh%<7?^JEK3SrZ% zS73vb`IbE+03)zZGtXuXRTH%1mR_@UFqRF3tazPsVgO)5U?cUGF+r{YxbQg{=Z_`; z%FIrFGI+vY@d~TPuI;Zk@7gN45Cc4LbM@Y^XWYc>`vw>@@@~g@b*`A9BuZ+AT0!JR zQ&MImZ3YSotxiPMDPDfYlqx;A)-=d^nH8&3K@Qc>Fhf-->#21_C!4unY7Kr#8ui%f2DRczN~q%0kt7(vW|;tFHkNYVGw=Q-|&9 zzOG%lArg-mw`U&12Ynd8mKHtq`ifrVd8*B*Fd@$w_*j8`rQ zX!fW3zQ1VdF%zfH9=}K1*ifhQu0P{{{_(#({lKepFFj`OFX_Mz-S|P@(|5mc)VvA3 zlRL2M)gT%Kx#X8y0eOf?5fsLQP_iZwDwPcx!p&v_8Pm>!9#wxaA(5@#yy5ltmMAw( zL`}gcwG<@p&hmPpQRciZU$e4F<+~re3rc~~X4$-X+lt}cJrE;PSj$!iJIqXv0$7xCZICys;bd>FT<#G zJ-t6Uz#tf`jb~h!)F2?uwu3OG!N%v-)Xt??h6T%QYvheG3^j`W-&|iuwLMZ*_SO+X zizH#NdRtwY5)8~_LN4=VWK2pBHs^VnYdl?mNA8IW*Aj1fo*Q}RJOV3Stu_Jc$wgEmfTg(g`#Ascu zxd!0LdtX@iv&CegB0)N}-nYVDZVUMzlWXo#Rvj4f^^tQ9|ATM-!mh~J+cx#3lzMtQ z4)}%b@1gy6|GzxiGoqMt*>R`=2v#jXA3dB^bo~4oGp3Jw__n7mxcY?J@B#;*kI!Sv z<99sWzkcKSpS^~OvM=s#d=dl1eCkEV-TBRj9=vVgtdp*?x|w0|W3O&}=Yy;M?0V~r zyT6llIP|#lj~@SxM<2Z9u{jqWjeuQEiGwx_NcPijKQz$SyzHj45I^bySzMzLLmLiv z#ECpFBqJ3iLlL~IwDknCh+4%WMyrC#weZp#uM9K?oG#-slSJgkiryUT`3DgbhxMB_ zZXMVzg-ia_X{)VNk%q0qtCc&epu!nQxhyBiBsimJ3dl$+A>#U0}Wj ztA-djX5yI3n0mYkF(i>vTF}tWcdM4k9rlgk(vYrX^C! zw?qlbq>(rb78hFSMAc!yx&OdE}Ub=NMhXh50BU6<6caWb^b zR1JVJGd$VNtTA$8zIuoAkVUpN7xLeUTp`9(nMg#vYsnSah>%iJRgf|VGcpr1G#X+? zrIZHdz^cOP?UckJgb-9D&lX~Xctd>F8YdPA%zf)P_y27-na!2BQ<78)S%{HgLPV;@ z6x7`6idB$_4q26qVu)Vt0l>x~Z$L77ZxB}(Av2LuO+;;5QR_W#?$OtMnu=nFhj`!y zfuu1gX6v6@Z>!hZYun>YwP9?eid|Hy15`YWXMYD#y1 zcj4HH<7S_CEUL9=_fNgOtG?j6)8Bdi{Uy)6lkgGFX&--PL;tp4?wvxF(!*0y+zfMt!8DJ7?dE91BHTe7Yl_LlBhMMi;9`!Caqeza>|ipB1EmAk|Twxx}7r( z5!a}`ph_gH#Z${aGQ*2FL0}vMCvsv@vzddt4R(W9QD~42M+7iK zHE&h`^YU|^UX}~FUd8lmdg;a$cRhLMiskS1w)YI{7}itoYOiS%En7CTB3f{VXjNgS0y1TyLAAYMvfypM zRjXM>%9)_*qONA}J|*9uBaB=Jfv&R0zsC#aC?2OA#3LX1XpU#IFzi{tMYu?{{#jjmR1!d))J(*U9 zIQKKB{q%d!Jn)0ZKKtdX-hA%8<>tdnOjs{;PN%A*KXa^G%*oHau_g`rJ0(s5|~J!CS|m!WE4WP zIbf=x2=A3E(rP+t!YKq&B?_!;3IUAOEfy>6cj#R;RijXyG%+PfR-xY&c^e*vJt%?A zMU=pV;5@f{>_)TM*WX9{;WoiUHmm61)g8~y%GAo>a^i~$gGRIg?pxPb@$$;& zIyyR-2&!ZpD0J)in@+!C+7XAjkeLz0+jIJw5s3&JKw?8IY|XPfJeg_|O(F&kiPYVe&D0I3TdrS~JBYLCEBbx@I|-?f1Qdi|NTnn-ZL1Y+ zwOX_3>js%YlMvuqoR(cc${1NwGcpm78VWT=B1vo%LjWMC^u*y^XQgp+XKt?o2~ct!?QBj_f(lA4<|o-C<8eJ0y8R+393xf_Ui5!V2DG| zf$i_OSx09ZfJU>iPv`mx4uvtW;;nUyA9?HaOOG5rrAG;&RleHoVL5JYdiw=|{10#R*BN+x2auC?S* zgvlvGE-`?v`a>%H}=|gMv?hUn1iRR6?58DjYAd!CK#FI zUSr>wL>gohb0t4z#^eMhDvClywqI4N*sM8PR8c>PCKm|}if>&zIU?yhC zL`vfoYgbSxg_=SQ3ke}{NP+r?#SS=%%6Zf5OIWTPAi05lrJuDlRB=-c9nE<`nf zU?w40MTPU0E;duO6gUJ00ZNq2{DV{lfT=1-80z^u5h(3stsq7A;U+i#U<5yknW{CN z>yNy#)7&&)RU=FRp$0@y`V;kl$e9tIp8_)n<_w;nfFT`-?C9!^YKHfBnDRIPH|fjX&PeHIga-%iaJj11kq|heYdK)MVnCB;=*L z>K!6t$C)!D$p~a(v}VP|9&2Zc1H>Ce2ZEH%rkODZQw<@y@fBMZ!Ex~1mvw_0HT$-# z3(!CuC{%X6sOVh|ZV%430F^*$znmkm%ZtF_RLk^iFok5Ia4{`YRTG2&R^-i%f*7dk zih;R^R0SIyQm%7~3K0`31B@XA1W)_YU=~|-`sPo`pm#1?Hp?{7Xdrj25i1C!W`%{$ zjxOhdRn>EV5G(-fRVY>EOiY4-2CL4h2xOWUXh+diEhRNG?@v+_G4&_zMvMe7lO!?s za@Gp3hHHI5C2>ncEbsfOR;vohH$NM-K%Cr3)QF7KS@W>!{#phpgc$*5s+y8YGDH?r zm~td5y~D{d>L8NJBxYPGykgKBDi^4TjUobr;pBKV1BF=g2gJUeDO15rCV{gxwIr=6 zH=C(etM&EE`o6Su?Leuvbzq=hlQg!rZCc;fQEuqB{wC_uY+8TP2Gor>v&l0^2WmWd z{$2)j86{nPX0vcgzz%cqVp-^RGVx zRK=k^A51)c(um{FoAuOB7G3_UXAK+Ey{AXWehlX1;>^7oa>A|prdM8Q`|lIwj#q{O zrM>^c^83E?$Wsq488>6xm;U>8laHI^Io!uyTU2;MRBHlcH3?C*fGoLC6#!z4M1@(X zFz}%SB&d2?MFIiQwk_L+HDWuBV_0C>*wuKcv23lb$s{h%hlrV(siNToW+Qi95KSoh z-hJoM!$(aUK5aH7WeQ^KS+9#?_>${LyybM!h$?Yw*TiHB9DF~)L~6z`Q56xVf|~;f z*2@( zDfn$-DE;lA68!`==8fN|r;4A~g?ZNjRhYepR2ZM(4|d}6~n z2n38eeAw(yAGxo$$A&JTJC5GbUCeRCvUSH{`o4Y4Cp6gfnV&whVdK{M*Uh0JcV_Q4 zd}Ma!)yLg=%iVW>`@v(*n8C$6+D1IUnU)B0^Imabm9`27#wTwU+wOTKudFFjFIQ6xU%?5djgAdgl-#!GH)TLS%+P5hLfgWjPwzpoQU1=1k5kxgvp^=d`&d zMo{;-fMul0j0Of8sw!e?>IHxQ)reTMwTn~SOw9uMLd(&_+1EMEccytVw|L4^MO6tw zCFN{6r}+6_Tfku3I?PD?zY+P_<|3C3aUVf$sPen+M^kMXiR3yySULa=|RKN-64U(vO_W&DQnN38rUMsft z4MZgbGqWVA*=z!!3S9C{iRaKFwrz7`Tc0$NGz1!h6ooR08JRZK3ggx2AHHq%SRIBW z3KP;`sSG@0!5PPX`Ua}C!@RP6a8lHX)5oGyw_zUuUQ zzxDW=&%Qr%&XoOgmTC`vZxMmd|IBGSQY`jrY+AQX!5da@6tPh3U8K*$2-8lQIQgWB zkA45e^R7R=7#8TsvCws&$uDU~5x6f>Br&}A)YOUf-Y0MOOhHDdH|UB5Y6+0|J; zY-INf&F+=UHu>9_jSkJXDNfO1H67jCJG`rF_9;irnRn8|_dT<0`M{!Oi$1t(?hCCg#C=m(RUFc^_wWNKh1 zB$G%fYK-LdUW2#Q8a~uh=RIS@l*_$NhBq>p5ql_N^{}c?+OTo+Pwu>P%a*M%G6F!P zjz}u0p?{#i$6bfmEDXwul5u5(k$bh=aF~c(>63_t8d@>~FcBe`k|-IN)UCDp46AQjHxRPXCjsHD#jB}gstv6>wif(@dAj@cvv+wgs?+$RdRM-% zPSSxB=h%P4@XSL?RxDrl`Cq-XXmdB9A&+X$cUJ@k#|59A`|xc)|LJ!hKjPHM9QO4V zkYVe}{%3#u!U<;{HD>y#eW>H)i<50~|E~IEPJ1>6m@4+<$dMz@KIhDLe)8PF zz!udAQg{WQLXGQf-5r(vvxC;YCqSU=xj6IzRWC4^89Rt?>UK)Oxml7jZth!fqLfky z3{?{k&lE7ULnYf{QnqdOlXu4u|FICLl7`68K|t>9@_mCkEh4a%qH0iL3t%V-OrS(A zTB1foj3APie;_|s) z`~t;;-?u}cuCC50Gbg{Y@GXC-{rgK^e0|gEEj<%EhlrzCRVh5AvgrddnCO^Oj=tq* zKis%#d$U_e8kw{r!F{Q#|*%R{QsU^1do`|JLi&<@BhKm@4UL| z@MA|3;yyfggW01$esR;bfd!vEjo3cap|D4TVEXc-ufO-^@-O`H)%X9?&+fnFp`%Xy zf<>c!5=qw+=T94b__%v-ed@G}jtyuLkV?QxTkIz*b=wxP z)ZE(NoK$Zc5!+Uml1t~AGH&cq$cWTdez3e(=4@HLX~d-7NfRd4thYCkc5Ldiw^qHe zZA_d=V}_ffsm@X&Q&+J9E8KDz2uwww5QvGu>-*mwKXX7K>LJHKW+I#4(53u-K@y0- zM9dLj1wo0mU@Ii1=BUlRof}0Gkpj(x&aG?6w#uM#UD5)mcmD8au7b2yEFn)US=9TA|9WR+38#UOLW-+yJ1W>S-{6 z%!I*4k&KB+NJPs_HY9JaOHhIl8@Y})!2$(EVhYI;huET|F}X*z!HW~%;3aKnX73}I zd!)L0sGpuG5Jb^zYHB7CEto1@7gk|Wf>QrLInYd%C@PUDm@>NUS4F0(WDv8G`0y)l zod3lyYAqZpQI2rJyu)67@=bDF4gk=<$)11gjWe%3fmpB|3;3X?&Y#Q)*fD2L4}Vd6 z;h|U0{@iK2dzHU~HC}(}t@oc>d)cp_+c~@jz@XMzZua_a5ezu@#<`FE_^C&}^YGz+ zejU6(wC6{33QA*h?h);jp2Yfk;wzrOR0XWu&Vj3ajcYF#kVgsh6KLlf4#&{v<7)s0)IVvfr+ z$QVYBKdd3KOz7`V-7(JU9TUom zeDB<45jF9|PMMdjTrH}#qKF~Rnt9ZPhhM+o_^VT+wr$&%ZG9`3z5kL~%0*>oM1jC+ zfkHdiyXtK{9kt;dQsdBG=URiYP~YI<=My|4<;t;V9&;i=W}vGw(ZX~e7ThpioUL^)z+=$#ct&#-z|v*HApGmhQA zYmm>}D)D9XzoOTwLK%Mux4C778DLL_yQFPMgc3aT*$P=GOcyH`s#M6(4AnO171 zFa-ZRkI;_7fXIEKn21f2ng$N$rrm6=>X{YPi30~`1*#g6sR=v}&-22`AMT&+m!TYj zH%IMcsyK-b03f1LDwJV?*bFWkXC@X9$jnsBGMO<`)KWkKGGgzLQ-VVlYLbZDKw7IZ zI1vRS5;%_2Y=8*i@bj)&@aw-p?d<_BA$y>Er#@yF0LDq@998QsiM8tHQdWBC-=5cguVNk& zyNFM8a2hqC^N6D+FTD3n=pkKv7U6qte?0cIpYfUFH3&#uIceXYnURg2HS**Ok6C>0 z>#N?_uum$pO3(gm$+{IAKXt<#4tvo|wZoa&J1?$!`MDKmUw?AZTbz2?F>!e3{oh+y zadh^25CWZX@loBwyYIgJX)X8QVk^20DiZ;!+yn`&KNY{ZwJ=u9u}U>_-_9NYyD7bR z9}Ry@Yo>|{Ou1^nHAfJ$y`&3!p<+mhK{a%bIc%VrLnE=xZ$G%n`VU*6{`?X zQZ*?F8~U4fKJ)l3cii=tfBvmo|LOJ6^>Vo42e@qF&vU0AZkr z9m9Hh$BgJ1Ijpm%z33>seX>Pr7BXRLn3P0K34K)WLopyhBtq-SVuM1HiiXC91+id4 zYAR%nfCN@wzD-IkO~t4QxO1g%O@_)w62K;6R=N^I&e*K=#C>Fu|kz$N- z`r+d`I%<*I+G_3E&K!&)!0Jm1xt0ipp$ag*O`@u~nFy+2ssup^svs1qqLzp>Y01I7 zVa!N`oUi2*j8v6~iDKTmnRh?IV>p0Brs7FC%Ihh@6| z!Ng1rRp&3G_lVvZvnRJ^9vPzAnip5TzVO{@zeI(2{faI7cw`WFj_o@6@>7;P_WH8d*6o_w zzv}~FyP`60U;b~E8U_RBeq92FX!F`ot$YB3#3z@1K;;4F%^HA{xd0-~PC|a>+WIGI z)Y;QBZpxH?wZ1ZK-nw;6y>muaFD$7^E>F7d7@0yElnBGyb^KN6k99ciQnClaH=X zm{l8lgmjPFIsi#9agRu;T9H~0$g27{v zRM$--%I$ry!L*p&Fq>N7wHXWyrzH>}KuA=)Ev?FBTfNUbbVsRx8Iuks0o9$Of&-~~ zH&<51)I>lGP*bCzqMol3Md$Jb3XDLl&&sq67Bzz~lo2iC*)7diKRYI6D5s=JOh85? zYAQ;AsY$k~r1rKpiXnsmn5sA%KLiFK(j+B8oIL-E{&U8xDS?t3VrYEYG`U zo<)CR`J1K4_rLu}*}p@svmbW(2HU)Tn{S73@NdH|2I16;kMHj3df;Cl@vh2)eL_1M zA`jg5WTM77*Ulvl!2W1~+I}2<^kGNNJL2hk7Oh#n&TP-`f&qqC7QOS9!49?X?K zcI8oKH{cghjVUVdg%fI&>X)@`H)5(b-+1dvhCB4}5Pv8^q3 zboUnZ>BH*74x2VLX{1C<>P#leqKv-H%hl*2Dg$~&Elv;U>LEOdto!w6ejp;}6k?DJ)s>HA(LF_3D4N}xdSPQqX+Fs48ds}->sOc9R!)Xm3V|7)pMZ1-mF z1@~kB4Zmj1bgy{q+?f-PoUro6)zuCRAS``)*%LonboO?x$vxD{t&IMh>v)6F>gB zL^=1G)4_H3DIYVf_xQ7pdG?N%F1hi{jxlX}{Q>?)j-5K<__Jp$x_j|wZa!ngq%Nb~ zqOB8AE6b=3wO#ptD6Fvq#Ie5+j|@leu&JOSCj(yqnTRRINUfaASK-VKBO+#E=4?Qq z$T+=0xmG*w#Ca4)HwR*0e`7*h*D)i;tCk|kWu20ls8>AIOkCO15IREFh~5!QI%Zt= zr!Kwuw6m}87(d!TTCM#?Rc(#TC`(Lh6;+I!;Nqcd!~+1O*^MpdfN74_IXYZB^w%!9*tRaKUC$g+elb z7%5eK)l6)`(TzZCZf;577+cRhZ$GM$v-T>K!vHlEHDukAyo6-!cJmmos!39HE7UM( zbLj{18^;{fEQz>XH$@2C3BzD)YR(Zs2L%~+Lg_3LBsIdQ* zN|Gc=OHnYjS`S4t0n@ZVbz-9jiB!XZ=6t->zH zu6V^w^AH7=_s$9?#hrh1|Ejmwnb}7kW_O1|QQH0gv~c5+^*_Jkl|Q-Z@4xp~Ki#@w zix+?P%SY_TA#4k7IHg`Me(*mZCJVEsOH4^Xgmc*0Wa1nU>`rm7JMG?km`Wrd_Yxwk*?%+0YV9%^Mh@B$Vx`lQ}z_JTe(US`0@34&`THoCyXhjYLc> zFvpnhycshz1ZeWO4}-vjprKNv1RIng!PG6bn4(gYAWE=IAc=)yS>V#dCc(cJprureG@}r6x6FFkoypqIcNbIVZPub_|4g;f?B3T$NU`vzPj6e>xZwKv6oOSnQ2;YeIBfdt2~YgnLfO*T_Xs`p=!r8>61V{dbKBCR(xZD%6=Gj6B@5>bj0Zn-~;i zl$trHgNU*QSq`Bs*xVJ$+#ZSuAUC~l;VW#+l}MM0CC3}8K4q&?=N888rWZt}K+3>> zwl>Ud&1$B^-cqfqATY72W;JXenIu&L6``i7%=g8ZTv-JKFjEX*Gl&^cAPd>i)HJ{X zk%?*Y8zM$Z1h>f|rs#_Tsgbf53}Q6mj*(@y7Fan*Ga% z3mfepS|mq z6Bf+snKDdv^i$u1;d7|jpYHzN;v;8InSRm)PqzzARvtLMf9Vqb3^X>cqW8KH%#5kltX zd5R}uk}WA16eyPg$lH$`>d){SA=^l8zqG26kr5lW)Tmqv&3R;*q~%^F&Q62Db8IzH z(W-gA_0&wOs%Xw%RiPjaSyY^i0-K4LnlWQAg1b(cNGa0vNyzT`sLGW8B`Q3D5tt&( z%gy5VN<~4HxQpAQh%%Us+Uxbgc(}zj3w4Sxe&&Uj{`znK*SVKo`lT=bUm?ayw=UN( zhL)oar9lLmcKoD^e`9{LXgY%8^OS)X9(>~)zkf&n>gFDH*H}eRRS2zKvf=;voqyc0 z+=4{_q%bg;Yu)zg&!4HZ&;2$BW`vG-^B;X?%LgBP=WBOp^8kOCA@#{EU%g9-FS+^b zokr(eDjSgdZhdmZ*kN-nnr)RD(LUy;yBvgA3m4yT?v{7AJoDqldvy3mf3#@Jrsnyd zpBn>(?X{uyXn0S?q6c2s@ZRe4Z=B=rZxs;T-#Z*Xch=Y`WA42532UT%DVF%6cH-GH zCQTpq$Q=u9_kGKT^ids@F$BdP%%g^m!E-Z0Qe|Rd5;4cITR(DSe8_KA6m)~CZrrp1 zAhocyzuDhNo457#4fJi^vT^gK4ZXv9W2_m7DR?`OyF(L5f&RV$1hlsYOC?)j7P8JH zK3wh_Opo)mRT9zJAww00X0utZcNC$Pn#px1K^1=O*8)-<^ktHYkzSzyADW7}vaNZ& zcKae5Y=SM*fNvcPMqXDHQYDhyqD7|EZX?G;4rBoq2n8sDq9IUD>DlwdP{dHwY6NCt z_xmyx5%-E9Rbv)bqzI(dMy4{Jg7exeJ3m^hae|D2pw4Xb z@Awn&NgLl?C z(ZgSqk2v7aH%rxCdF1u4|I)WMzt(5f95t=2kP5^)#0CSCPaSv7?_9R% z?w9WR#{HQ>aX^N_>?eQ!z&lSZzv7q97&~*+u1L;gSh8r@@)uX0{pk~nu8Qh$AO}S{ z;eweXr;qySzdkvzb+>R7gKpi>_rwpMIeOmA!;hYV!QwdY6(O<-v3qZMV)CR3$Iai- z5XDKQwJtvYs#9Km_U*S{T)i)k$QP-iJubNV^kpwBd+FI%4pqo&$1!N+K|5J@EH`vf z)zf9!GeKaIl9PZO76t_lK~)FWX(KW!LhPuw%{ct9;oV&-^x~=ywyJF!C^t1^K*PrV z^v1GfePwczoI6A&MN%O)VhTkhwpgHup0Y83tZTKa8RbtybENU6m*nAq0799P5G6t~ zGa_dnt0YxXHAz*^5y-tVvv0Jisfs2;+QAzq-?(B@j|7g7{J%@Co5S|Nyvs9DM^m<0wC6Paq@Kv4D`C!;Kir7eCIX>vzpNv7Uq zt{F@SLRL~~Q4?fP?WUD46I6{UfHLc?%*cX5-QCJd0w5DJ7ua%7>m4dtW)Nluf*6bA z*{TEuNvTPh5{U(^48(laAen$Dsn$bLaPSA|US3q0iczo-i5VavBGn|)P#H+cEC7^@ z{Hm>#G6@8vL=+ICR61-3%nUMDVhwDOsBK{Q2pipDW4mJ~Bqn1j&i~vEzwk$24(*+- z+4X6=4gU`D5l&WfCAjyf}0hn_Hsdv+v zH=na=>Bi^pf9YdCz@Q3Q{J@g+tG1qd!>LsGy0Kfn4m&#<47DZCz4i8M%je&CV$rdy zTSN0MIc9WM*ZsHt%=SkW;`ED;A2Xuov2Q)A%WYa1gb#t$x^~$;TXdeA~D&%UD+>`=DX3uH4XPZ6kZe zbj6N#t_2G!RLMfKh$@=!;w4#8V=^L*tt@$`ca4yBM#=kW420koiY|Fk#A3_VEqwz6 z979pBdw;M<3wb3SRLQC|Vu-6^EUH?2bvTD%z%U|J?>u4-n%jZQV4m87f>YB~kimFW z6NRf|g%~*&opq`K(NHtgfPxW0kto8F1|B)5&VEHRApJl?({UnNyea3&aYZVD&O{?bFc zxqW}&(ym&B!kKH99Q^hR3Y0++W7Z^^65R9Kk!*knkuqja1{TYYfe;8000l)bux|#n zsMTP`6pU0MMZKuC74=$-M72;W>h1GCfAv*=@LODqd;5wV{LwR_`-^}1h4ItJ!iEqS z84PM{ig*0Q<6rsg-#q*;i?^<6wq7cK@vX(mFrcBUmu&d{U)}e|*ZlRvw?0)4BsJfS z`n0!XI`!DGzxrRVi(Szt$RSmD9y*AKI`oD=I`_l{M}Oz9ZomKAk4O?=2#B!nOS00V z-&^$Uzx>IRW!gAb#Isxq2f)N^ zs1cJv8QESu5(_2&mwp-GgwjZhg3CbJ_k+X5H(q_ySN{<8n74#O7Lh|X_I!8{(Wt|E zf9-Ft{KoIxvGVn`L9<^r8=G017Hi(<`=_todHdJzIrgN(kC;7m?6k4HBYW!YwIs4_ z)7Et>*S+)Fdv83ybom?WQeTL|MQ$adEH6*06epcD_BXzEZP(Zi+j$&1lm-FdqNn)c zS3bjk+PLj6?pgcZmdpSB#qHfiG=TR_tIHq*cGo{X@`JyBbn1yCzVx-vb&u-EKiK}5 zxu_)i!0k^;vWspwn-GRn84hsWlhD)KcK+4#e)#|1`O;%cPFQgCu3Rnr#eU<-_t(6< z{_;P*u+|YhFX8;dy-A=~ytVfEN8h;krn&9I+jez{1Xu|3t~&YdTNgh3{e{>6{>2}@ zhkG=L%X!z#z2{$^ee}DJP5rM|9+J)Z+l{K77lDi@5LK!UuBzcdPvIKQ*@dvEgtZ3= zbylf$>}<_a)%LcIazMIzdQ7YwDBJ2?sVu#7nTTpsBTGe$-2ng;#>~BKBZg~j)tXh! zrT`XWV3x|E+q_c-tgXDZnk5FnRhogUb=8{VqADtp32?)V<=Ht6^$m?5)NiC^uZRo~I{t6&RAFAwWdtBG)dK2J-P}>sc~k8C zeD%#+tEU{5cpmpL>cwZYX2^6(`(#%Om%EbKwbdj-rlTeVl2j_ucwP*SPjGE;^A=8$@9C zoceAsDDJxD;aX8U|FdUi*EH<>_7Hf?)R8BjdEDc7EWY%Y&*|;5&dWeB z5fd5U*>ldEayb-cm@sx?S6k1v&HW~1YVGy5j<$AYRZNVK3m5CoVnJNREmh17eQ5} zI-D31P?7~eStYs!MMm;-7;w8oBUT5S%|Zy?og7+}y9}0#4bjnMLU1M0AW10{fjXJG z2yH+e(vhrYdHQBibhFmF=ojjVKci|^H!{ugVX9T2BKMP2@<3$FnaWN~O7JdnCzrJz ztASvF5X^{})wC+rtD2Tp3YE-CloTWg4%}zN-T)>6#Fufe+mln-AS}YkOo)iVoInmO zu=C#uFbgc26rwB!695GXnhH~5VHRQ|1qq1Q1F9uZBF>RmL>;=I7%YPbYC)*TC4UB) znTV)~1{F%aBa2ioxoy@pS6%yuzf1K)euKRyW7xRPfA{s9F8R%~LR|pU+}|%ssvspY zmT1~02&JN_XeyMMB2n}=#@LiZI0+~36A0b$sy{gY7ytU2_EBxN^Zofp4?2i@9|DTb z`ZZs^;urtRl^fn$^Jl;Ozi$8Q`?juWC`=%`jcS^r6lnk2#!vq4k*{3$cT1jr_lDm) z@7MnP`u5%q`=|h5X7e-zm+qeJu9;eO*+xkKO;=2}|cJ9%=6T9u>0w6KYzy6fw+JUET zdv4Iab}t8kasIV)2Fm#851s_%V-98qP_T1%1}9AlF_dZzL8&Hc0;p&+p^>!oKT6GH z&4iMP3UY}E&1FpQmNkPJx8y!-5b7nO_M-E|StmBOG*VfTAvMdEJg?>k8-U0`X$6{P zxox07kq&4>%aQ^(QfGTRTR{}EqEv42XjMG9r7$ew9Z;U&89<)#GBH!Az-t(s(OpSc z!93*>soH@2`~kAy#A`3K$q@9^lgcVq4qiS1ObmmHiD=TK(7bOkQ79RL8jBebMG#_9 zE35<3rKwA--MG$(RZ}+`h>e5!VPP;=5F>9xHifxznt}g+_TD_kvh%tRJm-Ahz4vXk zuf0_D-rScKNs$z_FP3F_i*3nLq)9x9J#ks40-E4MOb#<+8skhwi`_4J@$9G?MQ3{Ku{f!ZMy(#|un?Y4@>+O3=djWI)W3QZoW7nVhXCa9i@*7` zD3bU5@VVFg>^nI*C512j))Q_d@B8Zys{Pi*j}cbyJ9_eg)zALc<34}G@f(OMcP^iN zXyp$+_3Usz|7N6p95({Lzjwd=jnDs{0VHHXHDs*`y+M^wY5-ImAt0H;#yj0@1tl_J zz6h#h%y>v$;krsIxM7ASqGTbB_(0) z^n0!>qIwGe4Pw34>N&dps^dpKp@LGiQ&+*UeRSyV@^#i4Ax6ej&R3OGcWj_Bw(L*} z+&7`?#+Cr%XvmPU5uRIPmn^LMx1m%iC|dI1m9(1vQt&U6P$mgQ$)So$VyjOG(VLc! zi+*7|LW9&OKx7;#DOpkuL>@!cNE-+Z2jV$|ZZ?JQOGG1URe&sw$!Q1?DXJ(4-e~nB zq6amK22dbqnNb44Ofe7+jEzJqjaVSWK}G*Uqrv-3WxOh(>Zt-ZJyuW^2u+}jk4X$S zt>MD25CC0I=rAZ&M2s=Y0+vLT0ErABh=_rpw&W0Zq1A&dXysvSy>0;gxN#c<$~d-F z6Hp;SLNqjXN=FQ$GKwfS@$$QW{Qkf8)0{*AL{NElzlqzle{LYbnfnj_H~;eEU;WJa z-~aW`ZN0KjzKK*K`EYdw`ab}ofRc=RG#CuvMEl89a{GI3f8WR7dg`tfjNrAjQ26G% zA;L-%4=}!xKH1^>(RjfJ;B%J^^X&`Wm!G@%#Ft*&e0~p+&%W)%2mZ#}Z@uSCctDQBW9aLT zbrYWX{B!Ng{SW+;55wywu-}6#4gmn{^r6<UAgpTKwQg-~PY--QRrdv(LZ#<8KL!(XT(tH^-vfuJ3IcM1x{b2@H!m6$LR6 zC)PM|P6{MYWkmxbu^KMNkE}o-Ru~U?!^0OV{;-S-FR_Jkrhe$i;;9#}{s{mQ(e+g(PXpB~K1h}bwOGqNou_L#t2$F_GPL3=U?8y)cn(;Y^3L!_rb{_HA9cD|nPe1tHd&f(hn>u^&y;&3zSopvv9(nr7mv*;zkKJ|T>wm6z@wtr? zCzjs(i3iDi7ifRN{*(Xhk1yXc_w6N9RL8sjUAO+?FMoXbXzL9g9RLvIjt5sC{DG6# zUcQ8U-!~+P>2)E<_Z9YSx19?!%c5|sK2#b|N=#!Q!-7jgMnOlzVQbRA{hjCbE|)Ew zQdYGZb~)FbO^8T@$FC4rzXBL+#3X{Gl}x*$+VjD9-yF8Z0-Ad#IHo%Vvrht#P^4ZJ z02whn&FSVVM8-G4HzemPpdd1e2BsB&u)x^*R;u1rcmWEJBtnRcxrz1$)dOwZvmHBo zhZ;=diE4Fls-n9+APWm383Up$B#Z*+$rK<6tky+kIx*PE(xQL4-^)$mI|DPEl_?}e zAY~hhmm&g^kWsX142r4TtkEC}8Z@A6ZmfC6hLhEE7*)Zj1t<{(0F^|HI9J9TjeK;e zmt%xGg)2M^y?D`)`bfR;5If@>=LDsoqE#RP0aZ{kVl5j9w12CpOkRwa5&#i|8OHl& zR8&#EA>62@0xY7c1gH{*{t61DAY2#(V{GY5gT^RYB}>K&6l&N|8JWn41vFJHApm9c z9z=uzNsJMMlA+MrCTE>)zed_LYYS89azX}d5)+CAaRPz>%)VwKW;pR9@4feLene_U ztHS!YR?9!2i zV|O1qd~%^V-N0yU8v#|D4X+P5000 z2Z#{W>C8J<&%WbW-Yqv@-nsbV9N5YlaoqF$4o|Q(Rln~CZ;`Q=#<%qfh^9tw`@oqu?sF3!jJ9e2*8lPeQ2oZ@ ze1&6o9{=P&{P67ZJSntT2WN5D&RefGug-+m*kSiHdc{HqWO6^wR*Ic z7Q7c&v(@&OFth+eP!fa>orqL95VONBlndV5?I1?NtSa7l5w#|^REx0Unh|C}!v%t( zz`_{YD2iRlkp)7DOhicXTDnE}#KU~{wO%Em;!+j+04fTefiz5(QIrG%8TcluX0;8b z8&OPQusdGkBVe#a8MjXnA&|WZzznkf+SNihX{mr$Vdmnh<55DrbGV)XJUcot|!UF1*>yEIkx&tC$)gp`|wFrsG5CJ0q z86@>;5DnVvOCAWa->?Cyz7quy5j2K`u$QL2oUgh3xz3eb$`T4fefGI$tO{^x_AXmX zqH4GICi+t(k*JTey&bjnBqB@R`JyNkc@iMyxJeDFsdFatv2oZ;Say# z7ybs;ViO!eZ!XN=g+0TY4zIa?EVLHtXXlTfeaG?O#u^r*f}ukzh>F+k_s73$s{Qac zec^9#P{Kz(^njAWjZc_VF}NLlciz|=Lr|D1C=%4?_doa9g;+njPI>)y zPqBK`em8)Cfk*L8UJhaY#MIl5-$UQ;wwbLb2@(nsu!;o`G*nluZI?YOkwtF^RI!mH zt*D;31t`~o+%$M-AtDi8cT^5HY#50W1(vS@f+|=vNxep7ys8Qqvepp!q-9RNb>-pA z@E0zArqE5*4Af{4>?$G{m@}#P79^G+Hc`+ORmTD##lXw0j8Uq+_t>UWC@k-$LX?z4ykaufBZgaKHBIZ~oRD+Z#{1a{u4GvN(Af z?^YzWxfy(=-2dFQt+kg+bhC#J9bQ^##8VhEu?@cH2w)Jr3K>EPY1|>!6H!rB5RIxT z0i&vtC?JSIRHUNh5+D;O$uJmJ<3UTWgc2n-O-JAYuiMl-Mp*ak3mrVu?~sV1prBEl zY9%L+E^3SWNzItZp)(U%F^Vs5UTI%`rKG%*4?BBTrn7x6b|w*=u$MCIoC9@_h!{jf zKnMWi*yKgFU&rUNF8S<;mW(h$cz)yJ%f-;4TXS+L8%)#2p^5q}M`*&CWWDUBR7{uDxu9ZoO{q`t7pTFlwaw=&ccoagw{g_XF=;23x{^MH1>s^x9 z+?Q{P!toc2*O2$do1!YhLCx0}iW{rhZ#Xdh=ARb#zX`=}`8j^~QCU`eyLf{e`|nX-;5);(1^L}*<-al5beQ&Skae~I z03ZNKL_t&s1B`5u<;KutYXXg}*Nlk?3yjEEA`k?_gYIx|YiHOSCeU!ch~gF?s0amP zh>#yAdYwuY4iMC6sib@Fb*_*byyqU^K}SPph$2p5Zv7<8k`n)r?|VjySux)7Aq8Y zcZ$20Vg(Ak`FwxRn`i$@^6cKbJ9FmT*|~Er-BnqCk`gItiZZO%vPKgc1R=vz!P_pK z-It_lsvJO7k`up8;MI3`Ha6D|pdeg2_&`X+#4F+mg>k( zV=pucjQQP<9=0n&FJkq_zUB?l#nbft2QCNQEG4SSK&+w22|0E$Zq4wK#x|?5e%drQ ze`nwQ)FCh1)8D(1#S7WlYqL6chNJw<{5|@(coZ=&)?Mg~HO8W;_}cybQE^P9UL}s^ zZ{rIa#f!xaH$gzeLF9ujpn~4H0uzrCVyeht8>!#%fba`jgiR{R>+27iUi-gh_AfJ! zjy~1zFRoj7+t)DLJVVyY4E5(LzMJ`Pz_>TF;p~@-E&MIP>#4Un4N?*m1QFFVz6#3L z2(|2~%mtcjNzSm*Bnfd5W3^efNTe;CPn=?K{f=#FRHdl7uu7=RMcmpqe-a~y#L*cir?SG|@5K##8hbuS>^hTSh)}sy4Jh%u*KqkP;gmj8dPr^k zgF(28ilf|U3WP*pWlhd1F;PYH7VNH^@*&C3OoLpT6mt{LstMKmFGy!O4e zhZ{*E0ly_`i@oWXJDoW_ybMr>i~^4Rx(ZR-xIkW zBhfxC9oS_vrcB`$(9EpQe2%st9Uo0f3NImUhlZ|RXP40Dd)4E;xCyx;%ovWjunDg; zT#dNtGb8FL9|NxKwY9YwgpV9@c0gK*0sNrqfzU)ykMHT3(QQLx#M=)p(0q+I_ZXbGf9U_nekR>Hy z-TE*6>NhvE_?o=#erFQ%GBumggT$M<3hgK>u`+t0Z$hq;s?G308jBKj_7 z#?-v>_))c$ONLHj)W_w=m)+wRC!7BFSI6&TLq>DA-5=>?HTgfCIlO3_zokiRh#)Y4 zBkpYfz$S>H00D$ShM3ArrwMnUQESmN=i(EM&Za6YmZCr#?WvsM%eozVcA*qtgqLQQ zi{w>Mxv`9157S*vk5MQ3pQd7B?jEE@P-aJk zUb|R&8vKknHgIG_TabbzlSjQxR%{F|{2wk3x?`y;DIwsNB4a?X4edz?i1)5nJc5cm zlAW9$xd;cnh@2dVXJ#(<#apZV06Zn7jqO%&E9h-u>S#>;!@+L?GpP#wk17PHn%Z%6 zz}VXM($mwOU%cNa!{hzQY_2+eBUZbK6RYPkQAhYC)I6Y(psO_VKXKN+H@{=qYs}?m zwuZDbus|bg5BulTtDC}1EP>Ol(A+6KVO5I6OrjR4bT=NJTVF*mL^KkM*VF0nSBLlV z3N!k6O-4g4XVH&R+25hkl1f7_Wjx1b3Z=6dSF?GEtxDd;gQkQl7NW=m0~)nh1}efe1HK-C`AO&4ypn$3q(c! z4D-WMV=}^{&=aPB0w;-v?x*K(8Oi%8!ZImw$)c{EU`=;i1e0%^+dO-20Nz#XYZ)**{92Yc*0xmYJn@ zx25{9Cac4n;m)o~(pWdAFZkFmj!iH|6?qX)$#X4s%vtzbdNwZQX!Qy*I#+1>D!V>} zzy7=!%e->n`4U}6%4dYwb})Ll+`vffJLgDqD{$3eZRFP3!;@n}NfW=_)+MlNYwvCf zchm5xE31_QEArf2YUY>QUZ4(wLTUC!_Ia^goN-8aaZ~)6Gf66ZaLDysqy7({4o1BA zT;8^owa#_Be2!|kk|=$#9BP=Lu~H=mt#}o-5gK#cHPSpg{joaRYqZSh*jnp}2|3{> zgSV;n_ttnBn~F~GjW7qy(trNnyVwxQfPz`1gcf2Hk1)E*8!0`NdVf4ox0$d^R6J;i@$-wAiji$o-YqUc0834e+QrXzt9Gyt2QNn?bwB0u^`E!f>6;EbOPZBMPDMYK{ zI?qFn89RGB=frqPTUFs6PXFiJN1ixlU|37kSxl=}_1jPr$8sla92giwA;ESB&-bX?A(QGQ3vT4}hd(L4nN18n zjt8@2nQM_>yBK|uij4B=0Utj)W66AEW0o_ZZ>A>%8iHMbFU3I<{nU+*Yb5TqKBwsU zntDG-Or4zl?ac$k(T!JEn=;9;SlV{ht64~U-+u^u-7#o{dkX~nveOpD_IJO&wZDa% z3#Iq@?K+#{!XpsJ%>Q(_gX)-XJ053lT5FWJ@`C);_*x!^`qcS4RWH&SF13p@;h{Nk zt}|#snTaX<&%%XfQlIw?;im;`2_OJ*+db-kF#*EkbqBdXdqEU&=j?nWP|@_QFW zAG{>CBZ)f{yHB(TN4VK~QYq})*4tt4gH6CLY3*vcc=7fWtCgL8A zku%ius|FjiSi`ld5${*M%-_f+qfJ3P!FpR;+cxo%0#vSHs|$4c`kB9eHEFav$D#yQ zFKuS3Fbq71e5MprFNnNvu0CGx`AmPS;wG)`+iQ_VeWBc&kLEm0KGuQH zhvA?!OkAB?sUTw<8=pr0$0e;?-5l>n=fk*o_|+#DsbWF%`=5_$5Y0t)JG<+pbL|6I z0R14H$52usK<7Hb_j$>D#=h3G*l(w0pAgk~Z*k8TUAV#H;e_D<`>!>RD_+H~Jxa17+=bdX9wGBMMh0I^P~c&0os+}1Dgi7rOLjE@j?(4ViTTXX@&SQ6iQI*o`6>4^@F;l~;S_C4} zG8n9yf<)g41gtMjGX+h2w%zh1Ae?CzkpnchNdlYtKR*RXQzeXQktcV5yqwW}{*x=n zu1v$)T0vFzFpu|xJ2|$j!LxN0e@S)jqern=<(;?0=g5!fBU2@-4C`HocyR0SJgnN_451vvy9|4q8EU3_u0HnlX>EGgavAv}q6_LG^AfH?wK3kZYD zl$SD#9MWuZX@q>PM%?v1{k+6h(?ylXt59SSd~4l0iZ@#~Sw6qL51t&Ur)_zk>qN)e z8KfzY8u&f*yPbYkC8r!kj5?FZa`d%q*GS{%uAr2WAXR9~scD#QIRBJFn32qJ#x=F95d~c9>P7u*XkN^CD8~F8fZD$|KBEFjR2(ksOBJm*&ftfwh)~`UB*Gg( zu-(MTd2Ghv_qo1fBFZQ9Iqjg~$E!n=@}0BG(?=LRGQ+de%F4I<)$`*N7w^asGe-@+ zDUlqEO$nRWHO z|BZER-~U+pa78*O#+z4Z?a+oEYY(J?V>M$$fL9%2XK3z$IS_Lcoc&|rtQ`fzO^wFH zBz*I)St~PMh8XF{Qa~+?t>;aG0~keAgYMWfjlc! z)r+Bceeb3#ScbQlA(kj6%=GHz)X;qOva@bEN;}xiJ2yq@WB8H(zY+ffj{Ik6`@y;z z_v3Ul1Dm@%8{tcvMrG?oYnQ#no39;w+43(y_fB|zaaES3QXv+J+xgUffu7u@h3Fo< z$B*{O&v(kUiOA!;T+6&5nlnhyD=n}fN)#eK6-iws6W){h7hhqrCH&Ibo1}(_EiM7h z!OO0U17Cl`GW`>dY;2RZyS0(0R@A(_Q~h!r^*`nL7~Mu{Js>i%cQk_5v3Z%jfal*j z@sT`|8a+$&uktK4wm2-;G02X?%R%;nft72NP00HCzE4q+)Z4cPK7Y18kpATDZ=4{G zTf5w?{+GAu@qzb08frd(Knek4CBigOv2wr$RM223#wH(P@RkIeT*n0(z^NcKYx?PJ38%5f|e=qJDKPdciE4{tT|5rWJ7F}J3AH`~@ z{#S1aZ1pth&aN-qX**b@REuI{jh6=yy2EzE!X!YLu6vsUf9@#Doe*q|58C8;%BI^C1f`ckcWb zNaOA#3@kDOg^0O79DZ-H>r7^87X%d(S6g>uW7WpqZGJ043fj$ga1Sg!|H>F?*|L2- ze56O}aozhgHPd}}Hr)u_6;@i&Wtmdd;d|&2Go1coE8?7*U)dlkY4iybrPcfL)g=RO z&5)IGUdh_jX>XNDgGY|;uLm({-O4%El+8CL^J}`lTERGmBN&w$ji%bq!_)dB=p9QP z{5)JdlOI&L#8II+CEViWBv$(tffrM=J=!UD^~4^1_k?!s*zcw@kM+MCuS|NauNvCl z-lkP9*_U=WB~u`dm_rnC{`cEHj@I?~SMk%RFX5MyW5dQXrTREU2##3 z6QN?asO3m3JM3FjDc?+L-ZK3BmiyXu<&|ClgQ8rNkPj=y)1e33=dq0fdU#yl*xJ(S z>bECvfi@tTw$E3!v`=>b+jm03+}74#P1Z|jusXK!{qZrv7o37(E)a*?KauXvpo3#uV} zRFYSkT4ra`JB8kw(4PXWjk&_?T>f`|ITQpr)~4b}oZ7cM?>G!rAyxOj?wrKk^V?R= z21wdd!!9PbO7xSFdw&+O7Y6Lrt*pb&C1MPB)C&s%J9my zwR$#4hpD6BWCy0Pr@hpDPiXw0TPxmDWZMJ7^3a!XSV(Oh^dIm$b^ zBC4WEDVt53*L)RKO^KLIz|&|rIBPYj*KIPtZ@x|DGRUg1p)%pf{2i%bLWKeRB$>t_ z>W;GrZ-j(}67mId5yeSV!GOk66H_4Q>akmSrEP4Cd#nlw9;)=XH^GLdP{|xtBG$^` zV`tOrwJrq_?#4{5#4$0uN@-vu4*VmE7+tikMc;faW~g?5A$PNB>u7iLJoaI^rei=% zP#)mcWxF%U^}?{?B$QA((BkIU$jZ#iv0XylA-l}yP3%7ZwfhloK7Av--q!wVlx&|9 z%pogfshyo?^BwHI_0qqj?btjAa2rRofr&vZDJvY?(74Hj4>Z8BGK1*7$W^|pSjS1qZdlj>_`GPEK5VyS5i zP=!3a_5KOY|4aH_C$rb!hq5w>zZ?Hy^720_Vb81y55l1lWNboML!1Tw6$vUE_sFV& z>5BjxilF{XvWch~{0M>oQXN@{RKvUsMMix~x#kw}iCJ4*D!F(=rSNy@>=1(;&S zr?c~WhtXYmj_qAM^&B#ses;Zz z%k3#Y%Y2l4&h@2cx0vs5L?lZiLkm<@PPI#O=UHgJ-(3^3S zN075Y8lRR4f}G=3TVB^4Dbd2chjHX$NGWXG)C9~<*|81lSGK*x4HbmBry48bzj^b$aVE5Rs zy{EO8FG?yP6rK!@9b3XNXK+J%P*IjP;FJNM-VVpSQ zYWkinhYr4TIgRg5ti+w&EyG8Lg9|fwmp#$1fiu2zaE4QmYEumAtf|UK$ux9%YP3H=&onIJSUGvw01#^(Wfewm*6nc!c{xMqj>};L#I7zAa z8F#N@C84Cz;pGE~-5m3!@s_0mP-FyqNw85*Pi%j+l!C|gwa0PS+u8fwBW+~qp6Rzz z`tOb(iBpdM=lznahJJ?-!3t3}!x#-o#H)lYXX_%m0 z%YhzaiT=}oF}4Jm*f9Nxs%;T&<4k8Ur|Xud2@C)ts#qNJ6Pr+a3Ec}fQcng!j%6#l z3HxbhZ)v;t{DOwe%8SvW8`Vqin+}d3pkvZ;ccSI4l$9R>v7c3*&cTHzXu!ppBNUe` zqBTP=0^%aV7?~uCC3NG{QUxZchE@=kZNr%)GAhL+rgiMUmSQcmJ|pqa+iXgWfl9es zGZ~l6cu7EFk}1s$b4aw+VZQFWx=d}Y+Qdubn{tAe*^YA`Jf z0i2jR3ndDec4fUMbxl0oy>0t_LHK6w{p^^t&8wL5T$Jm7F+UxM3jqA2qbM+M4M0fL zN=Q)y^?{b)7Vf{~3Tf33O>QLt!Ofb=xJWSgCWwF#0x?8R3~-cm!wB}AHYU>-W~ue9 zO%{Y;6jVCa=wszvL=ci_L!P2Civ^eh0+cO65gGOfxH5F+UALLaO*wbmNtHe2x|Yps ze`qtKPH)wpVGp+|qWv>I0A3K2o6!%%770KUjE=>^F;rvU36vmMk{D(u5Dyw8H!qTn zgES2jwyL-Ix;8g=QLsuAYAFvy$S)SCV#v`+5occf{-ugdI?g$hs$$@V&{Jr_*NptJ z2rS{aXfb5D$Di3OcXS9~Dti z8Yku7mmP6wz_lO0>n~qMX$(G99_r^QOizDVp?Ped#yhjRFQH|p+0wKIh&O~sV6p;T z9~P8$m5(J4E9&0-ur_rJe15LiU%HD!H)qb&fFokyq^$tXG#byZq_3k2zIVrd(;1q8 z)}-fHJf{!ONB?tiFHL+RZ#rNELSj=<5-=LSsC)EVxT75b_FR~S8xRu%14)elP~pTR zi6ikHgET}0u3!&!Z){0rL#LDsFYS5T` z<0dVUTNuk1Cg$e&`e?O!EZ<>c8nM(PT@E23BmE4RmVm*cuUZW4N{RrMJ*^^M;F4sl z?rDtDabSi@~_ZY!*))qilH;r|eo~!H|CM z!YO(V1EZGO{iG{VuCAb}L&xV;f;6ql0Av~BwZZO1U!PjNG~bnsC{S@Cg9Oe%S-dnx zO)N+>B;4`kkw=I_+8x?sMQT=TV3{^=i%55B{Fh`IRNVwc44i~#!OF~J>2kl+!#^xJ z>dkE-7G$=x2k09gCRP;{iP|;PjO&CIpf5M?=-~8klA=)f|Fr-oc>>p7r$gz_n{R(6 z$)YAAjLlf8LKNfo^>}=QHVhO#bdW>N6OkK;yw@@pq-dzi{=A||M3`YqG}cPp=iq9q zq%Rv>n)}9<{AOly#-OrBlo1&j+XY0Fo(wN9pQ?nj*xCP3eK5)3ZgkyVdwE>AO}}-6 zsyj2*42DDy0tG_me!agvzV)-bCN(0oj9(&ae3O_Hs+jsO1+aD303gGG_D>U0>)s#5 zClkR@H9VG=k!hBgDnl$PYFZy`l1&u_M5z6R!@!3zJ96A(hl@;(YIqFCO*8Q1BPlDT zrKbnOyTy}J?2T-FK}OVfRW)gh73qJ9Y+f?9o0O~Mg?P)a5-o6%IGY+%>USr!!&;TtRQ zc}D~a0llYxeV6MgyBDcc3Yv=f-FidU<|%JWo}n;lWRM!@2H^`uWisYLK!KwTZdn

rK)hfPW06~W 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:J0SBc)7zvKW1rbRKzcO{7%T`S%r{IJ;Itv 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 v=!cWbp*I>99X+0$yHr22pDY Date: Fri, 21 Apr 2023 13:30:00 +0200 Subject: [PATCH 09/68] Update s3_website.yml --- s3_website.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/s3_website.yml b/s3_website.yml index 9edebe4b9..c3ec6206a 100644 --- a/s3_website.yml +++ b/s3_website.yml @@ -19,3 +19,4 @@ gzip: concurrency_level: 100 # redirects: # index.html: / +cloudfront_distribution_id: <%= ENV['AWS_CLOUDFRONT_DISTRIBUTION'] %> From 58c79536ede059cf67bc7b09aad5df9c3a3bf6df Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Fri, 21 Apr 2023 13:45:34 +0200 Subject: [PATCH 10/68] Update s3_website.yml --- s3_website.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/s3_website.yml b/s3_website.yml index c3ec6206a..9b74036af 100644 --- a/s3_website.yml +++ b/s3_website.yml @@ -1,5 +1,5 @@ -# s3_id: <%= ENV['S3_ACCESS_KEY_ID'] %> -# s3_secret: <%= ENV['S3_SECRET_KEY'] %> +s3_id: <%= ENV['AWS_ACCESS_KEY_ID'] %> +s3_secret: <%= ENV['AWS_SECRET_ACCESS_KEY'] %> s3_bucket: lucee-docs site: builds/artifacts gzip: From caef17f0a70a0d869cf2d67deb5d3856c14dba07 Mon Sep 17 00:00:00 2001 From: CF Mitrah Date: Mon, 24 Apr 2023 19:24:42 +0530 Subject: [PATCH 11/68] Added a examples to the functions at 24-04-2023 --- .../01.functions/imagesetdrawingalpha/_examples.md | 14 ++++++++++++++ .../05.objects/image/getexifmetadata/_examples.md | 4 ++++ .../05.objects/image/getexiftag/_examples.md | 5 +++++ .../05.objects/image/setdrawingalpha/_examples.md | 14 ++++++++++++++ 4 files changed, 37 insertions(+) create mode 100644 docs/03.reference/05.objects/image/getexifmetadata/_examples.md create mode 100644 docs/03.reference/05.objects/image/getexiftag/_examples.md create mode 100644 docs/03.reference/05.objects/image/setdrawingalpha/_examples.md diff --git a/docs/03.reference/01.functions/imagesetdrawingalpha/_examples.md b/docs/03.reference/01.functions/imagesetdrawingalpha/_examples.md index e69de29bb..a9a042446 100644 --- a/docs/03.reference/01.functions/imagesetdrawingalpha/_examples.md +++ b/docs/03.reference/01.functions/imagesetdrawingalpha/_examples.md @@ -0,0 +1,14 @@ +```luceescript+trycf + img=imageNew("", 250, 250, "RGB", "a29bfe"); + + imagesetDrawingAlpha(img ,0.3); + imagedrawRect(img, 50, 50, 50, 50); + + imagesetDrawingAlpha(img ,0.6); + imagedrawRect(img, 75, 75, 75, 75); + + imagesetDrawingAlpha(img ,1); + imagedrawRect(img, 100, 100, 100, 100); + + writeOutput(img); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/image/getexifmetadata/_examples.md b/docs/03.reference/05.objects/image/getexifmetadata/_examples.md new file mode 100644 index 000000000..8bba1aa88 --- /dev/null +++ b/docs/03.reference/05.objects/image/getexifmetadata/_examples.md @@ -0,0 +1,4 @@ +```luceescript+trycf + img = imageNew("", 105, 100, "rgb", "yellow"); + writeDump(img.GetExifMetaData()); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/image/getexiftag/_examples.md b/docs/03.reference/05.objects/image/getexiftag/_examples.md new file mode 100644 index 000000000..d556c2aab --- /dev/null +++ b/docs/03.reference/05.objects/image/getexiftag/_examples.md @@ -0,0 +1,5 @@ +```luceescript+trycf + img = imageNew("", 105, 100, "rgb", "yellow"); + writeDump(img.GetEXIFTag('width')); + writeDump(img.GetEXIFTag('height')); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/image/setdrawingalpha/_examples.md b/docs/03.reference/05.objects/image/setdrawingalpha/_examples.md new file mode 100644 index 000000000..c1cd383df --- /dev/null +++ b/docs/03.reference/05.objects/image/setdrawingalpha/_examples.md @@ -0,0 +1,14 @@ +```luceescript+trycf + img=imageNew("", 250, 250, "RGB", "a29bfe"); + + img.setDrawingAlpha(0.3); + img.drawRect(50, 50, 50, 50); + + img.setDrawingAlpha(0.6); + img.drawRect(75, 75, 75, 75); + + img.setDrawingAlpha(1); + img.drawRect(100, 100, 100, 100); + + writeOutput(img); +``` \ No newline at end of file From 34da5e0be3f85c62d31ba0b94f5277cd2e886f19 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Tue, 25 Apr 2023 09:40:15 +0200 Subject: [PATCH 12/68] formatting --- docs/03.reference/02.tags/lock/_attributes/result.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/03.reference/02.tags/lock/_attributes/result.md b/docs/03.reference/02.tags/lock/_attributes/result.md index 688f54c9a..9379b48b1 100644 --- a/docs/03.reference/02.tags/lock/_attributes/result.md +++ b/docs/03.reference/02.tags/lock/_attributes/result.md @@ -1,2 +1,3 @@ -Specifies a name for the structure in which cflock returns the statusCode and ExecutionTime variables. -Default variable is "cflock". \ No newline at end of file +Specifies a name for the structure in which cflock returns the `statusCode` and `ExecutionTime` variables. + +Default variable is "cflock". From 638b5061916c631865ed093927b54bdb5ed415e1 Mon Sep 17 00:00:00 2001 From: Nitin Raj Yadav Date: Tue, 25 Apr 2023 22:47:13 +0530 Subject: [PATCH 13/68] Fix: typo in invoke function example arguments (#1365) * Fix: typo in invoke function example arguments * Apply suggestions from code review --- docs/03.reference/01.functions/invoke/_examples.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/03.reference/01.functions/invoke/_examples.md b/docs/03.reference/01.functions/invoke/_examples.md index e4dd72017..d132d50b6 100644 --- a/docs/03.reference/01.functions/invoke/_examples.md +++ b/docs/03.reference/01.functions/invoke/_examples.md @@ -6,7 +6,7 @@ } writeDump(label:"Adding numbers with invoke()", var:invoke(variables,'calc',{a:3,b:2})); - private function calc(a numeric,b numeric){ + private function calc(numeric a, numeric b){ return a+b; } From 457e578de88d1994e48b2fb5613c5569a53be168 Mon Sep 17 00:00:00 2001 From: CF Mitrah Date: Wed, 3 May 2023 21:13:59 +0530 Subject: [PATCH 14/68] Added a examples to the functions at 03-05-2023 --- .../01.functions/queryappend/_examples.md | 6 ++++++ .../01.functions/queryprepend/_examples.md | 6 ++++++ .../01.functions/queryreverse/_examples.md | 7 +++++++ .../01.functions/queryrowswap/_examples.md | 11 ++++++----- .../01.functions/querysetrow/_examples.md | 12 ++++++++++++ .../05.objects/query/append/_examples.md | 6 ++++++ .../05.objects/query/prepend/_examples.md | 6 ++++++ .../05.objects/query/reverse/_examples.md | 7 +++++++ .../05.objects/query/rowswap/_examples.md | 12 ++++++++++++ .../05.objects/query/setrow/_examples.md | 12 ++++++++++++ 10 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 docs/03.reference/01.functions/queryappend/_examples.md create mode 100644 docs/03.reference/01.functions/queryprepend/_examples.md create mode 100644 docs/03.reference/01.functions/queryreverse/_examples.md create mode 100644 docs/03.reference/01.functions/querysetrow/_examples.md create mode 100644 docs/03.reference/05.objects/query/append/_examples.md create mode 100644 docs/03.reference/05.objects/query/prepend/_examples.md create mode 100644 docs/03.reference/05.objects/query/reverse/_examples.md create mode 100644 docs/03.reference/05.objects/query/rowswap/_examples.md create mode 100644 docs/03.reference/05.objects/query/setrow/_examples.md diff --git a/docs/03.reference/01.functions/queryappend/_examples.md b/docs/03.reference/01.functions/queryappend/_examples.md new file mode 100644 index 000000000..d89d1970e --- /dev/null +++ b/docs/03.reference/01.functions/queryappend/_examples.md @@ -0,0 +1,6 @@ +```luceescript+trycf + testQuery = queryNew( "name , age" , "varchar , numeric" , { name: [ "Susi" , "Urs" ] , age: [ 20 , 24 ] } ); + newTestQuery = queryNew( "name , age" , "varchar , numeric" , [ [ "Smith" , 20 ] , [ "John", 24 ] ]); + queryAppend(testQuery, newTestQuery); + writeDump(testQuery); +``` diff --git a/docs/03.reference/01.functions/queryprepend/_examples.md b/docs/03.reference/01.functions/queryprepend/_examples.md new file mode 100644 index 000000000..6751bf0a9 --- /dev/null +++ b/docs/03.reference/01.functions/queryprepend/_examples.md @@ -0,0 +1,6 @@ +```luceescript+trycf + testQuery = queryNew( "name , age" , "varchar , numeric" , { name: [ "Susi" , "Urs" ] , age: [ 20 , 24 ] } ); + newTestQuery = queryNew( "name , age" , "varchar , numeric" , [ [ "Smith" , 20 ] , [ "John", 24 ] ]); + queryPrepend(testQuery, newTestQuery); + writeDump(testQuery); +``` diff --git a/docs/03.reference/01.functions/queryreverse/_examples.md b/docs/03.reference/01.functions/queryreverse/_examples.md new file mode 100644 index 000000000..19468409b --- /dev/null +++ b/docs/03.reference/01.functions/queryreverse/_examples.md @@ -0,0 +1,7 @@ +```luceescript+trycf + testQuery = queryNew( "name , age" , "varchar , numeric" , { name: [ "Susi" , "Urs" ] , age: [ 20 , 24 ] } ); + writeOutput("The query:
"); + writeDump(testQuery); + writeOutput("The reversed query:
"); + writeDump(queryreverse(testQuery)); +``` \ No newline at end of file diff --git a/docs/03.reference/01.functions/queryrowswap/_examples.md b/docs/03.reference/01.functions/queryrowswap/_examples.md index ef75bc9a4..bdc357240 100644 --- a/docs/03.reference/01.functions/queryrowswap/_examples.md +++ b/docs/03.reference/01.functions/queryrowswap/_examples.md @@ -1,11 +1,12 @@ ```luceescript+trycf - qry = queryNew("id,name", "integer,varchar",[ - [1, "a"], - [2, "b"], - [3, "c"] + qry = queryNew("id,name", "integer,varchar", + [ + [1, "a"], + [2, "b"], + [3, "c"] ]); swapped = QueryRowSwap(qry,2,3) dump(swapped); dump(qry); -``` +``` \ No newline at end of file diff --git a/docs/03.reference/01.functions/querysetrow/_examples.md b/docs/03.reference/01.functions/querysetrow/_examples.md new file mode 100644 index 000000000..560b718a9 --- /dev/null +++ b/docs/03.reference/01.functions/querysetrow/_examples.md @@ -0,0 +1,12 @@ +```luceescript+trycf + testQuery=queryNew("id,name", "integer,varchar", + [ + {"id"=1,"name"="jenifer"}, + {"id"=2,"name"="ajay"}, + {"id"=3,"name"="john"}, + {"id"=4,"name"="smith"} + ]); + + querySetRow(testQuery, 3, {"id"=5,"name"="alpha"}); + writeDump(testQuery); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/query/append/_examples.md b/docs/03.reference/05.objects/query/append/_examples.md new file mode 100644 index 000000000..981a8aaf5 --- /dev/null +++ b/docs/03.reference/05.objects/query/append/_examples.md @@ -0,0 +1,6 @@ +```luceescript+trycf + testQuery = queryNew( "name , age" , "varchar , numeric" , { name: [ "Susi" , "Urs" ] , age: [ 20 , 24 ] } ); + newTestQuery = queryNew( "name , age" , "varchar , numeric" , [ [ "Smith" , 20 ] , [ "John", 24 ] ]); + testQuery.append(newTestQuery); + writeDump(testQuery); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/query/prepend/_examples.md b/docs/03.reference/05.objects/query/prepend/_examples.md new file mode 100644 index 000000000..c51f6d575 --- /dev/null +++ b/docs/03.reference/05.objects/query/prepend/_examples.md @@ -0,0 +1,6 @@ +```luceescript+trycf + testQuery = queryNew( "name , age" , "varchar , numeric" , { name: [ "Susi" , "Urs" ] , age: [ 20 , 24 ] } ); + newTestQuery = queryNew( "name , age" , "varchar , numeric" , [ [ "Smith" , 20 ] , [ "John", 24 ] ]); + testQuery.prepend(newTestQuery); + writeDump(testQuery); +``` diff --git a/docs/03.reference/05.objects/query/reverse/_examples.md b/docs/03.reference/05.objects/query/reverse/_examples.md new file mode 100644 index 000000000..037ec8a1f --- /dev/null +++ b/docs/03.reference/05.objects/query/reverse/_examples.md @@ -0,0 +1,7 @@ +```luceescript+trycf + testQuery = queryNew( "name , age" , "varchar , numeric" , { name: [ "Susi" , "Urs" ] , age: [ 20 , 24 ] } ); + writeOutput("The query:
"); + writeDump(testQuery); + writeOutput("The reversed query:
"); + writeDump(testQuery.reverse()); +``` diff --git a/docs/03.reference/05.objects/query/rowswap/_examples.md b/docs/03.reference/05.objects/query/rowswap/_examples.md new file mode 100644 index 000000000..a3a168b0f --- /dev/null +++ b/docs/03.reference/05.objects/query/rowswap/_examples.md @@ -0,0 +1,12 @@ +```luceescript+trycf + qry = queryNew("id,name", "integer,varchar", + [ + [1, "a"], + [2, "b"], + [3, "c"] + ]); + + dump(qry); + swapped = qry.rowSwap(2,3) + dump(swapped); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/query/setrow/_examples.md b/docs/03.reference/05.objects/query/setrow/_examples.md new file mode 100644 index 000000000..13d83ef87 --- /dev/null +++ b/docs/03.reference/05.objects/query/setrow/_examples.md @@ -0,0 +1,12 @@ +```luceescript+trycf + testQuery=queryNew("id,name", "integer,varchar", + [ + {"id"=1,"name"="jenifer"}, + {"id"=2,"name"="ajay"}, + {"id"=3,"name"="john"}, + {"id"=4,"name"="smith"} + ]); + + testQuery.setRow(3, {"id"=5,"name"="alpha"}); + writeDump(testQuery); +``` \ No newline at end of file From 1e8796d7d54608602e4371422b02654d79394f89 Mon Sep 17 00:00:00 2001 From: CF Mitrah Date: Fri, 5 May 2023 12:04:12 +0530 Subject: [PATCH 15/68] Added a examples to the functions at 05-05-2023 --- .../01.functions/queryclear/_examples.md | 16 +++++++++++++++ .../01.functions/queryinsertat/_examples.md | 20 +++++++++++++++++++ .../queryrenamecolumn/_examples.md | 11 ++++++++++ .../05.objects/query/clear/_examples.md | 16 +++++++++++++++ .../05.objects/query/insertat/_examples.md | 20 +++++++++++++++++++ .../query/renamecolumn/_examples.md | 11 ++++++++++ 6 files changed, 94 insertions(+) create mode 100644 docs/03.reference/01.functions/queryclear/_examples.md create mode 100644 docs/03.reference/01.functions/queryinsertat/_examples.md create mode 100644 docs/03.reference/01.functions/queryrenamecolumn/_examples.md create mode 100644 docs/03.reference/05.objects/query/clear/_examples.md create mode 100644 docs/03.reference/05.objects/query/insertat/_examples.md create mode 100644 docs/03.reference/05.objects/query/renamecolumn/_examples.md diff --git a/docs/03.reference/01.functions/queryclear/_examples.md b/docs/03.reference/01.functions/queryclear/_examples.md new file mode 100644 index 000000000..4245b73b4 --- /dev/null +++ b/docs/03.reference/01.functions/queryclear/_examples.md @@ -0,0 +1,16 @@ +```luceescript+trycf + qry = queryNew( "name, age", "varchar, integer", + [ + [ "Susi", 20 ], + [ "Urs", 24 ], + [ "Smith", 21 ], + [ "John", 26 ] + ]); + writeOutput("Before QueryClear :"); + writeDump(qry); + + result = queryClear(qry); + + writeOutput("After QueryClear :"); + writeDump(qry); +``` \ No newline at end of file diff --git a/docs/03.reference/01.functions/queryinsertat/_examples.md b/docs/03.reference/01.functions/queryinsertat/_examples.md new file mode 100644 index 000000000..7870014b1 --- /dev/null +++ b/docs/03.reference/01.functions/queryinsertat/_examples.md @@ -0,0 +1,20 @@ +```luceescript+trycf + qry1 = queryNew( "name, age", "varchar, integer", + [ + [ "Susi", 20 ], + [ "Urs", 24 ], + [ "Smith", 21 ], + [ "John", 26 ] + ]); + qry2 = queryNew( "name, age", "varchar, integer", + [ + [ "Jeni", 19 ] + ]); + writeOutput("Before QueryInsert :"); + writeDump(qry1); + + QueryInsertAt( qry1, qry2, 3 ); + + writeOutput("After QueryInsert :"); + writeDump(qry1); +``` \ No newline at end of file diff --git a/docs/03.reference/01.functions/queryrenamecolumn/_examples.md b/docs/03.reference/01.functions/queryrenamecolumn/_examples.md new file mode 100644 index 000000000..8f4f4f017 --- /dev/null +++ b/docs/03.reference/01.functions/queryrenamecolumn/_examples.md @@ -0,0 +1,11 @@ +```luceescript+trycf + qry= queryNew( "name , age" , "varchar , integer" , [ [ "Susi" , 24 ] , [ "Urs", 28 ] ]); + + writeOutput("Before changing the QueryColumn name : "); + writeDump(qry); + + QueryRenameColumn( qry, "name", "employee" ); + + writeOutput("After changing the QueryColumn name : "); + writeDump(qry); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/query/clear/_examples.md b/docs/03.reference/05.objects/query/clear/_examples.md new file mode 100644 index 000000000..3ca6e4d1e --- /dev/null +++ b/docs/03.reference/05.objects/query/clear/_examples.md @@ -0,0 +1,16 @@ +```luceescript+trycf + qry = queryNew( "name, age", "varchar, integer", + [ + [ "Susi", 20 ], + [ "Urs", 24 ], + [ "Smith", 21 ], + [ "John", 26 ] + ]); + writeOutput("Before QueryClear :"); + writeDump(qry); + + result = qry.clear(); + + writeOutput("After QueryClear :"); + writeDump(qry); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/query/insertat/_examples.md b/docs/03.reference/05.objects/query/insertat/_examples.md new file mode 100644 index 000000000..eb609d613 --- /dev/null +++ b/docs/03.reference/05.objects/query/insertat/_examples.md @@ -0,0 +1,20 @@ +```luceescript+trycf + qry1 = queryNew( "name, age", "varchar, integer", + [ + [ "Susi", 20 ], + [ "Urs", 24 ], + [ "Smith", 21 ], + [ "John", 26 ] + ]); + qry2 = queryNew( "name, age", "varchar, integer", + [ + [ "Jeni", 19 ] + ]); + writeOutput("Before QueryInsert :"); + writeDump(qry1); + + qry1.insertAt( qry2, 3 ); + + writeOutput("After QueryInsert :"); + writeDump(qry1); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/query/renamecolumn/_examples.md b/docs/03.reference/05.objects/query/renamecolumn/_examples.md new file mode 100644 index 000000000..6d49ac6d7 --- /dev/null +++ b/docs/03.reference/05.objects/query/renamecolumn/_examples.md @@ -0,0 +1,11 @@ +```luceescript+trycf + qry= queryNew( "name , age" , "varchar , integer" , [ [ "Susi" , 20 ] , [ "Urs", 24 ] ]); + + writeOutput("Before changing the QueryColumn name : "); + writeDump(qry); + + qry.renameColumn( "name", "employee" ); + + writeOutput("After changing the QueryColumn name : "); + writeDump(qry); +``` \ No newline at end of file From 0bd3cad89da68c853a7a3ff96e3f05bafda77a28 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Sun, 7 May 2023 10:16:59 +0200 Subject: [PATCH 16/68] 6.0.0.386-SNAPSHOT --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b1ed769a5..de95049ad 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,7 +38,7 @@ jobs: with: webroot: ${{ github.workspace }} execute: /build-all.cfm - luceeVersion: 6.0.0.373-SNAPSHOT + luceeVersion: 6.0.0.386-SNAPSHOT # redis, chart, lucene, form. ajax, chart extensions: 60772C12-F179-D555-8E2CD2B4F7428718,D46B46A9-A0E3-44E1-D972A04AC3A8DC10,EFDEB172-F52E-4D84-9CD1A1F561B3DFC8,FAD67145-E3AE-30F8-1C11A6CCF544F0B7,6E2CB28F-98FB-4B51-B6BE6C64ADF35473,DF28D0A4-6748-44B9-A2FDC12E4E2E4D38 - name: Upload Artifact From ade4bdb61f271bb0b499b684bd4e75ef3e09ab72 Mon Sep 17 00:00:00 2001 From: Adam Cameron Date: Sun, 7 May 2023 13:06:19 +0100 Subject: [PATCH 17/68] Update result.md Fixing error in docs --- docs/03.reference/02.tags/query/_attributes/result.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/03.reference/02.tags/query/_attributes/result.md b/docs/03.reference/02.tags/query/_attributes/result.md index 4e6c2d146..a36cf3bb5 100644 --- a/docs/03.reference/02.tags/query/_attributes/result.md +++ b/docs/03.reference/02.tags/query/_attributes/result.md @@ -5,5 +5,5 @@ the result variables. - Cached: If the query was cached. (boolean) - SqlParameters: An ordered Array of cfqueryparam values. (array) - RecordCount: Total number of records in the query. (numeric) -- ColumnList: Column list, comma separated. (numeric) -- ExecutionTime: Execution time for the SQL request. (numeric) \ No newline at end of file +- ColumnList: Column list, comma separated. (string) +- ExecutionTime: Execution time for the SQL request. (numeric) From 0dc6160160fa3d61bf9900dc8c040b461d66afef Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Mon, 8 May 2023 12:10:53 +0200 Subject: [PATCH 18/68] cross ref inputBaseN / formatBaseN --- docs/03.reference/01.functions/formatbasen/function.md | 5 +++-- docs/03.reference/01.functions/inputbasen/function.md | 7 +++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/03.reference/01.functions/formatbasen/function.md b/docs/03.reference/01.functions/formatbasen/function.md index 912fcd449..3a0669015 100644 --- a/docs/03.reference/01.functions/formatbasen/function.md +++ b/docs/03.reference/01.functions/formatbasen/function.md @@ -1,8 +1,9 @@ --- title: FormatBaseN id: function-formatbasen -related: categories: +- math +- number --- -Converts a number to a string, formatted in the base specified by radix. \ No newline at end of file +Converts a number to a string, formatted in the base specified by radix. diff --git a/docs/03.reference/01.functions/inputbasen/function.md b/docs/03.reference/01.functions/inputbasen/function.md index 6007e0f75..7e4fc6dba 100644 --- a/docs/03.reference/01.functions/inputbasen/function.md +++ b/docs/03.reference/01.functions/inputbasen/function.md @@ -2,9 +2,12 @@ title: InputBaseN id: function-inputbasen related: +- function-formatbasen categories: - - number +- math +- number --- Converts string, using the base specified by radix, to an integer. -For example: #InputBaseN("3ff",16)# \ No newline at end of file + +For example: `#InputBaseN("3ff",16)#` From 9205857c8f731190414ead88f11beed57e71d9dc Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Wed, 10 May 2023 14:19:01 +0200 Subject: [PATCH 19/68] cross ref --- docs/03.reference/01.functions/storesetacl/function.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/03.reference/01.functions/storesetacl/function.md b/docs/03.reference/01.functions/storesetacl/function.md index a5060c04f..fabf2994b 100644 --- a/docs/03.reference/01.functions/storesetacl/function.md +++ b/docs/03.reference/01.functions/storesetacl/function.md @@ -1,6 +1,8 @@ --- title: StoreSetACL id: function-storesetacl +related: +- function-storegetacl categories: - s3 --- From d4b2297623594529a5af9d4bc6395e8dcc2938be Mon Sep 17 00:00:00 2001 From: AndreasRu <5096188+andreasRu@users.noreply.github.com> Date: Thu, 11 May 2023 17:44:07 +0200 Subject: [PATCH 20/68] Add version numbering to the download and installing docs --- .../01.download-and-install/page.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/04.guides/02.installing-lucee/01.download-and-install/page.md b/docs/04.guides/02.installing-lucee/01.download-and-install/page.md index 2806b7985..5d253f46c 100644 --- a/docs/04.guides/02.installing-lucee/01.download-and-install/page.md +++ b/docs/04.guides/02.installing-lucee/01.download-and-install/page.md @@ -299,6 +299,22 @@ Once the Lucee code reaches a certain level of maturity in its development cycle Once the new bugs and regressions are fixed, a stable snapshot is selected and released as a **Stable Release**. +### Explanation of the Lucee Version Numbers ### + +Whenever Lucee publishes a "Release" for Stable Releases, "RC" for Release Candidate, and "Snapshot" the version number is added to each built (e.g. **5.3.10.120**). The version numbering is a direct reference to a development state in the development timeline. It follows a pretty standard release process using (mostly) semantic versioning. The version numbers are built as follows: + +`major.minor.patch.build` + +- **major** is a paradigm shifting release where major overhauls happen +- **minor** releases are when breaking changes are made and happen once a year or so +- **patch** releases represent a stable collection of bug fixes and enhancements +- **builds** represent a single commit/build fixing one issue or adding one feature + +Because the version number reflect the state of development, the Lucee Engine builds will also be consistent across all these categories **whenever they have an identical version number**. + +As an example: +**Release 5.3.10.120, RC 5.3.10.120 and Snapshot 5.3.10.120** reflect the very same Lucee Engine *build* in its development timeline. Thus, all these Lucee engines are identical too. + ### Java Versions Supported ### From 7a812cff7e136c41e0bfa7a5e5ec6e02152ec3f9 Mon Sep 17 00:00:00 2001 From: Andreas <5096188+andreasRu@users.noreply.github.com> Date: Thu, 11 May 2023 17:50:59 +0200 Subject: [PATCH 21/68] fix spelling --- .../02.installing-lucee/01.download-and-install/page.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/04.guides/02.installing-lucee/01.download-and-install/page.md b/docs/04.guides/02.installing-lucee/01.download-and-install/page.md index 5d253f46c..e5eb7a358 100644 --- a/docs/04.guides/02.installing-lucee/01.download-and-install/page.md +++ b/docs/04.guides/02.installing-lucee/01.download-and-install/page.md @@ -301,7 +301,7 @@ Once the new bugs and regressions are fixed, a stable snapshot is selected and r ### Explanation of the Lucee Version Numbers ### -Whenever Lucee publishes a "Release" for Stable Releases, "RC" for Release Candidate, and "Snapshot" the version number is added to each built (e.g. **5.3.10.120**). The version numbering is a direct reference to a development state in the development timeline. It follows a pretty standard release process using (mostly) semantic versioning. The version numbers are built as follows: +Whenever Lucee publishes a "Release" for Stable Releases, "RC" for Release Candidate, and "Snapshot" the version number is added to each build (e.g. **5.3.10.120**). The version numbering is a direct reference to a development state in the development timeline. It follows a pretty standard release process using (mostly) semantic versioning. The version numbers are built as follows: `major.minor.patch.build` From 98edf6d1f1cb6ae36867bde86b2648b4aaa355ab Mon Sep 17 00:00:00 2001 From: Andreas <5096188+andreasRu@users.noreply.github.com> Date: Thu, 11 May 2023 17:52:31 +0200 Subject: [PATCH 22/68] fix spelling --- .../02.installing-lucee/01.download-and-install/page.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/04.guides/02.installing-lucee/01.download-and-install/page.md b/docs/04.guides/02.installing-lucee/01.download-and-install/page.md index e5eb7a358..db001e886 100644 --- a/docs/04.guides/02.installing-lucee/01.download-and-install/page.md +++ b/docs/04.guides/02.installing-lucee/01.download-and-install/page.md @@ -310,7 +310,7 @@ Whenever Lucee publishes a "Release" for Stable Releases, "RC" for Release Candi - **patch** releases represent a stable collection of bug fixes and enhancements - **builds** represent a single commit/build fixing one issue or adding one feature -Because the version number reflect the state of development, the Lucee Engine builds will also be consistent across all these categories **whenever they have an identical version number**. +Because the version number reflects the state of development, the Lucee Engine builds will also be consistent across all these categories **whenever they have an identical version number**. As an example: **Release 5.3.10.120, RC 5.3.10.120 and Snapshot 5.3.10.120** reflect the very same Lucee Engine *build* in its development timeline. Thus, all these Lucee engines are identical too. From 23f7785744ae905f47eb34ab3a96e1da677bedc4 Mon Sep 17 00:00:00 2001 From: Andreas <5096188+andreasRu@users.noreply.github.com> Date: Thu, 11 May 2023 17:54:33 +0200 Subject: [PATCH 23/68] Change sentence --- .../02.installing-lucee/01.download-and-install/page.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/04.guides/02.installing-lucee/01.download-and-install/page.md b/docs/04.guides/02.installing-lucee/01.download-and-install/page.md index db001e886..988b88fe8 100644 --- a/docs/04.guides/02.installing-lucee/01.download-and-install/page.md +++ b/docs/04.guides/02.installing-lucee/01.download-and-install/page.md @@ -313,7 +313,7 @@ Whenever Lucee publishes a "Release" for Stable Releases, "RC" for Release Candi Because the version number reflects the state of development, the Lucee Engine builds will also be consistent across all these categories **whenever they have an identical version number**. As an example: -**Release 5.3.10.120, RC 5.3.10.120 and Snapshot 5.3.10.120** reflect the very same Lucee Engine *build* in its development timeline. Thus, all these Lucee engines are identical too. +**Release 5.3.10.120, RC 5.3.10.120 and Snapshot 5.3.10.120** reflect the very same Lucee Engine *build* in its development timeline. Thus, all these Lucee engines shipped within these bundles are identical too. From 7ceb83f170c54f36f06ffffcb798f69df22f6577 Mon Sep 17 00:00:00 2001 From: Adam Cameron Date: Thu, 11 May 2023 17:13:51 +0100 Subject: [PATCH 24/68] Update requestTimeOut.md Clarifying what the units of the value are. --- .../03.reference/02.tags/schedule/_attributes/requestTimeOut.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/03.reference/02.tags/schedule/_attributes/requestTimeOut.md b/docs/03.reference/02.tags/schedule/_attributes/requestTimeOut.md index 70bfb4f9e..eeeb6e71c 100644 --- a/docs/03.reference/02.tags/schedule/_attributes/requestTimeOut.md +++ b/docs/03.reference/02.tags/schedule/_attributes/requestTimeOut.md @@ -1,2 +1,2 @@ Customizes the requestTimeOut for the task operation. Can be used to extend the default timeout -for operations that require more time to execute. \ No newline at end of file +for operations that require more time to execute. Value in seconds. From aa9125eeb2c37684bdc506246619929961a0bee0 Mon Sep 17 00:00:00 2001 From: CF Mitrah Date: Wed, 17 May 2023 20:57:06 +0530 Subject: [PATCH 25/68] Added a examples to the functions at 17-05-2023 --- .../01.functions/stringeach/_examples.md | 8 ++++++++ .../01.functions/trimwhitespace/_examples.md | 11 +++++++++++ .../01.functions/xmlelemnew/_examples.md | 2 +- .../05.objects/boolean/yesnoformat/_examples.md | 8 ++++++++ .../05.objects/string/each/_examples.md | 8 ++++++++ .../05.objects/string/tobase64/_examples.md | 6 ++++++ .../05.objects/string/trimwhitespace/_examples.md | 11 +++++++++++ .../05.objects/string/urldecode/_examples.md | 6 +++--- .../05.objects/xml/elemnew/_examples.md | 14 ++++++++++++++ 9 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 docs/03.reference/01.functions/stringeach/_examples.md create mode 100644 docs/03.reference/01.functions/trimwhitespace/_examples.md create mode 100644 docs/03.reference/05.objects/boolean/yesnoformat/_examples.md create mode 100644 docs/03.reference/05.objects/string/each/_examples.md create mode 100644 docs/03.reference/05.objects/string/tobase64/_examples.md create mode 100644 docs/03.reference/05.objects/string/trimwhitespace/_examples.md create mode 100644 docs/03.reference/05.objects/xml/elemnew/_examples.md diff --git a/docs/03.reference/01.functions/stringeach/_examples.md b/docs/03.reference/01.functions/stringeach/_examples.md new file mode 100644 index 000000000..d33059e20 --- /dev/null +++ b/docs/03.reference/01.functions/stringeach/_examples.md @@ -0,0 +1,8 @@ +```luceescript+trycf + inputString = "abcd"; + stringEach(inputString, + function(val) { + writeoutput(val == "c"); + } + ); +``` \ No newline at end of file diff --git a/docs/03.reference/01.functions/trimwhitespace/_examples.md b/docs/03.reference/01.functions/trimwhitespace/_examples.md new file mode 100644 index 000000000..7562faacc --- /dev/null +++ b/docs/03.reference/01.functions/trimwhitespace/_examples.md @@ -0,0 +1,11 @@ +```luceescript+trycf + res = " I love Lucee "; + + writeDump(var=res, label="Original string"); + + writeOutput("Before Trim the Whitespace
"); + writeDump(var=res.len(), label="string length"); + + writeOutput("After Trim the Whitespace
"); + writeDump(var=TrimWhitespace(res).len(), label="string length"); +``` \ No newline at end of file diff --git a/docs/03.reference/01.functions/xmlelemnew/_examples.md b/docs/03.reference/01.functions/xmlelemnew/_examples.md index 7409a3148..41865eb04 100644 --- a/docs/03.reference/01.functions/xmlelemnew/_examples.md +++ b/docs/03.reference/01.functions/xmlelemnew/_examples.md @@ -11,4 +11,4 @@ xml_root.XmlChildren.append(xml_child); // add the first child node to the XML document dump(xml_document); -``` +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/boolean/yesnoformat/_examples.md b/docs/03.reference/05.objects/boolean/yesnoformat/_examples.md new file mode 100644 index 000000000..096edead1 --- /dev/null +++ b/docs/03.reference/05.objects/boolean/yesnoformat/_examples.md @@ -0,0 +1,8 @@ +```luceescript+trycf + a = true; + b = false; + writeDump(a.yesNoFormat()); + writeDump(b.yesNoFormat()); + writeDump(true.yesNoFormat()); + writeDump(false.yesNoFormat()); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/string/each/_examples.md b/docs/03.reference/05.objects/string/each/_examples.md new file mode 100644 index 000000000..2276b1bb7 --- /dev/null +++ b/docs/03.reference/05.objects/string/each/_examples.md @@ -0,0 +1,8 @@ +```luceescript+trycf + inputString="abcd"; + inputString.each( + function(val) { + writeoutput(val == "C"); + } + ); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/string/tobase64/_examples.md b/docs/03.reference/05.objects/string/tobase64/_examples.md new file mode 100644 index 000000000..aaf6d3683 --- /dev/null +++ b/docs/03.reference/05.objects/string/tobase64/_examples.md @@ -0,0 +1,6 @@ +```luceescript+trycf + res = "I love Lucee"; + writeDump(res.toBase64()); // SSBsb3ZlIEx1Y2Vl + + writeDump("ToBase64".toBase64()); // VG9CYXNlNjQ= +``` diff --git a/docs/03.reference/05.objects/string/trimwhitespace/_examples.md b/docs/03.reference/05.objects/string/trimwhitespace/_examples.md new file mode 100644 index 000000000..074b23079 --- /dev/null +++ b/docs/03.reference/05.objects/string/trimwhitespace/_examples.md @@ -0,0 +1,11 @@ +```luceescript+trycf + res = " I love Lucee "; + + writeDump(var=res, label="Original string"); + + writeOutput("Before Trim the Whitespace
"); + writeDump(var=res.len(), label="string length"); + + writeOutput("After Trim the Whitespace
"); + writeDump(var=res.trimWhitespace().len(), label="string length"); +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/string/urldecode/_examples.md b/docs/03.reference/05.objects/string/urldecode/_examples.md index 13dfda58a..e29d26374 100644 --- a/docs/03.reference/05.objects/string/urldecode/_examples.md +++ b/docs/03.reference/05.objects/string/urldecode/_examples.md @@ -1,4 +1,4 @@ - ```luceescript+trycf -encoded_string = "https%3A%2F%2Fdev%2Elucee%2Eorg%2Ft%2Fwelcome%2Dto%2Dlucee%2Ddev%2F2064"; - dump(encoded_string.URLDecode()); // https://dev.lucee.org/t/welcome-to-lucee-dev/2064``` \ No newline at end of file + encoded_string = "https%3A%2F%2Fdev%2Elucee%2Eorg%2Ft%2Fwelcome%2Dto%2Dlucee%2Ddev%2F2064"; + dump(encoded_string.URLDecode()); // https://dev.lucee.org/t/welcome-to-lucee-dev/2064 +``` \ No newline at end of file diff --git a/docs/03.reference/05.objects/xml/elemnew/_examples.md b/docs/03.reference/05.objects/xml/elemnew/_examples.md new file mode 100644 index 000000000..90036b2cd --- /dev/null +++ b/docs/03.reference/05.objects/xml/elemnew/_examples.md @@ -0,0 +1,14 @@ +```luceescript + xml_document = XmlNew(); // new XML document to populate + xml_root = xml_document.elemNew("notes"); + xml_document.XmlRoot = xml_root; // set the root node of the XML document + + xml_child = xml_document.elemNew("note"); // first child node + + xml_secondary_child = xml_document.elemNew("to", "second_child"); // child node for the first child node + xml_child.XmlChildren.append(xml_secondary_child); + + xml_root.XmlChildren.append(xml_child); // add the first child node to the XML document + + writeDump(xml_document); +``` \ No newline at end of file From afb61eb7af76ba0883ee8c5a1bc60e11e3220426 Mon Sep 17 00:00:00 2001 From: CF Mitrah Date: Tue, 23 May 2023 12:51:35 +0530 Subject: [PATCH 26/68] Corrected the example on cfcookie in lucee docs --- docs/03.reference/02.tags/cookie/_examples.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/03.reference/02.tags/cookie/_examples.md b/docs/03.reference/02.tags/cookie/_examples.md index 809f491f9..e6229f66e 100644 --- a/docs/03.reference/02.tags/cookie/_examples.md +++ b/docs/03.reference/02.tags/cookie/_examples.md @@ -1,5 +1,5 @@ ### CFCOOKIE Syntax ```lucee - + ``` \ No newline at end of file From 21ed0e7644dd1c3bf8b08b49af20c0ca832d5963 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Thu, 25 May 2023 11:27:11 +0200 Subject: [PATCH 27/68] cross ref xml fast n easy --- docs/04.guides/04.cookbooks/54.xmlFast&Easy/page.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/04.guides/04.cookbooks/54.xmlFast&Easy/page.md b/docs/04.guides/04.cookbooks/54.xmlFast&Easy/page.md index ab115386e..074f82cb2 100644 --- a/docs/04.guides/04.cookbooks/54.xmlFast&Easy/page.md +++ b/docs/04.guides/04.cookbooks/54.xmlFast&Easy/page.md @@ -1,6 +1,10 @@ --- title: XML fast And Easy id: xml_fast-easy +related: +- function-xmlparse +categories: +- XML --- This document explains how to use XML parsing in lucee. From 6f77b355a1428a74eb20eec98cb3e4fa3e4c28ee Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Thu, 25 May 2023 11:33:31 +0200 Subject: [PATCH 28/68] improve title --- docs/04.guides/04.cookbooks/54.xmlFast&Easy/page.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/04.guides/04.cookbooks/54.xmlFast&Easy/page.md b/docs/04.guides/04.cookbooks/54.xmlFast&Easy/page.md index 074f82cb2..914fd17f0 100644 --- a/docs/04.guides/04.cookbooks/54.xmlFast&Easy/page.md +++ b/docs/04.guides/04.cookbooks/54.xmlFast&Easy/page.md @@ -1,5 +1,5 @@ --- -title: XML fast And Easy +title: XML Fast And Easy, using SAX - Listener Functions id: xml_fast-easy related: - function-xmlparse From e698709cb0177e05a499745451fb7b22da32e217 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Fri, 2 Jun 2023 12:56:04 +0200 Subject: [PATCH 29/68] use lucee 6.0.0.419 --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index de95049ad..4429ed658 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,7 +38,7 @@ jobs: with: webroot: ${{ github.workspace }} execute: /build-all.cfm - luceeVersion: 6.0.0.386-SNAPSHOT + luceeVersion: 6.0.0.419-SNAPSHOT # redis, chart, lucene, form. ajax, chart extensions: 60772C12-F179-D555-8E2CD2B4F7428718,D46B46A9-A0E3-44E1-D972A04AC3A8DC10,EFDEB172-F52E-4D84-9CD1A1F561B3DFC8,FAD67145-E3AE-30F8-1C11A6CCF544F0B7,6E2CB28F-98FB-4B51-B6BE6C64ADF35473,DF28D0A4-6748-44B9-A2FDC12E4E2E4D38 - name: Upload Artifact From f9f42a46bee0f3334e86e196e9c1a9b7fd4fb54d Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Wed, 7 Jun 2023 13:47:39 +0200 Subject: [PATCH 30/68] fix github search syntax for tests --- api/build/BuildProperties.cfc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/build/BuildProperties.cfc b/api/build/BuildProperties.cfc index b66aa43a2..9d80dbbce 100644 --- a/api/build/BuildProperties.cfc +++ b/api/build/BuildProperties.cfc @@ -17,6 +17,6 @@ component accessors=true { property name="issueTrackerLink" default= "https://luceeserver.atlassian.net/secure/QuickSearch.jspa?jql=#urlEncodedFormat('text ~ "')#{search}#urlEncodedFormat('" ORDER BY updated')#"; property name="testCasesLink" default= - "https://github.com/search?q={search}+repo%3Alucee%2FLucee+path%3A%2Ftest&type=code"; + "https://github.com/search?q={search}+repo%3Alucee%2FLucee+path%3A%2Ftest%2F%2A%2A&type=code"; } From 99b562d4afe3e779c530a66976b86903bf2f5d68 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Fri, 9 Jun 2023 21:39:10 +0200 Subject: [PATCH 31/68] use 6.0.0.451-BETA --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4429ed658..b8065e6ac 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,7 +38,7 @@ jobs: with: webroot: ${{ github.workspace }} execute: /build-all.cfm - luceeVersion: 6.0.0.419-SNAPSHOT + luceeVersion: 6.0.0.451-BETA # redis, chart, lucene, form. ajax, chart extensions: 60772C12-F179-D555-8E2CD2B4F7428718,D46B46A9-A0E3-44E1-D972A04AC3A8DC10,EFDEB172-F52E-4D84-9CD1A1F561B3DFC8,FAD67145-E3AE-30F8-1C11A6CCF544F0B7,6E2CB28F-98FB-4B51-B6BE6C64ADF35473,DF28D0A4-6748-44B9-A2FDC12E4E2E4D38 - name: Upload Artifact From d679a4f7c69921df45c6f55b1003b66579d5d69f Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Wed, 14 Jun 2023 19:24:15 +0200 Subject: [PATCH 32/68] Update mask.md --- .../01.functions/datetimeformat/_arguments/mask.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/03.reference/01.functions/datetimeformat/_arguments/mask.md b/docs/03.reference/01.functions/datetimeformat/_arguments/mask.md index af23d7f29..2eb798642 100644 --- a/docs/03.reference/01.functions/datetimeformat/_arguments/mask.md +++ b/docs/03.reference/01.functions/datetimeformat/_arguments/mask.md @@ -48,4 +48,6 @@ The following masks can be used to format the full date and time and may not be - medium: equivalent to "mmm d, yyyy h:nn:ss tt" - long: medium followed by three-letter time zone; i.e. "mmmm d, yyyy h:nn:ss tt zzz" - full: equivalent to "dddd, mmmm d, yyyy h:nn:ss tt zz" -- ISO8601/ISO: equivalent to "yyyy-mm-dd'T'HH:nn:ssXXX" \ No newline at end of file +- ISO8601/ISO: equivalent to "yyyy-mm-dd'T'HH:nn:ssXXX" +- epoch: Total seconds of a given date (Example:1567517664) (added in Lucee 6.0.0.83) +- epochms: Total millseconds of a given date (Example:1567517664000) (added in Lucee 6.0.0.83) From 0fe459d7bec92049f19c3beb38cc740743d4c125 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Thu, 15 Jun 2023 10:08:20 +0200 Subject: [PATCH 33/68] show introduced for tags --- builders/html/templates/tag.cfm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/builders/html/templates/tag.cfm b/builders/html/templates/tag.cfm index 14485c93a..78f8f2b9f 100644 --- a/builders/html/templates/tag.cfm +++ b/builders/html/templates/tag.cfm @@ -22,6 +22,9 @@

Status: #local.status#

+ +

Introduced: #local.tag.getIntroduced()#

+

Requires Extension: #local.tag.getSrcExtension().name#

From 248e8ef7de4e934dbc0ebe381158177c6700ce64 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Sun, 18 Jun 2023 14:15:03 +0200 Subject: [PATCH 34/68] queryToStruct examples --- .../01.functions/querytostruct/_examples.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 docs/03.reference/01.functions/querytostruct/_examples.md diff --git a/docs/03.reference/01.functions/querytostruct/_examples.md b/docs/03.reference/01.functions/querytostruct/_examples.md new file mode 100644 index 000000000..d0e799d4a --- /dev/null +++ b/docs/03.reference/01.functions/querytostruct/_examples.md @@ -0,0 +1,19 @@ +```luceescript+trycf + qry = query( + id: [ 1, 2, 3, 4 ], + name: [ "mssql", "mysql", "image", "pdf" ], + version: [ "7.2.2.jre8", "8.0.30", "1.0.0.42", "1.1.0.7" ] + ); + + basic = queryToStruct( qry, "name"); + dump( var=basic, label="basic (ordered)"); + + normal = queryToStruct( qry, "version", "normal", false); + dump( var=normal, label="normal (unordered)"); + + row = queryToStruct( qry, "version", "normal", true); + dump( var=row, label="valueRowNumber=true,unordered"); + + member = qry.ToStruct("id"); + dump(var=member, label="member"); +``` \ No newline at end of file From 6346f17b842aeeeef82ca62288f2b00bc9752a92 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Sun, 18 Jun 2023 14:35:54 +0200 Subject: [PATCH 35/68] add lucee 6 beta as an try cf option --- builders/html/assets/trycf/js/code-editor3.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/builders/html/assets/trycf/js/code-editor3.js b/builders/html/assets/trycf/js/code-editor3.js index caa317e6d..d04ff01da 100644 --- a/builders/html/assets/trycf/js/code-editor3.js +++ b/builders/html/assets/trycf/js/code-editor3.js @@ -92,6 +92,7 @@ angular.module("code.editor", []).directive("codeEditor", function ($timeout) { ' ' + "
" + ' " + @@ -140,7 +141,10 @@ angular.module("code.editor", []).directive("codeEditor", function ($timeout) { scope.setupCodeGist = attrs.setupCodeGist; scope.asserts = attrs.asserts; scope.saveGist = saveGist; - scope.engines = { lucee4: "Lucee 4.5", lucee: "Lucee 5" }; + scope.engines = { lucee4: "Lucee 4.5", + lucee: "Lucee 5", + "lucee6-beta": "Lucee 6 BETA" + }; scope.engine = attrs.engine || "lucee"; scope.basepath = attrs.basepath || "/gist/"; var editor = element.find(".code-editor"), @@ -207,6 +211,7 @@ angular.module("code.editor", []).directive("codeEditor", function ($timeout) { urlPool = { lucee4: ["https://lucee4-sbx.trycf.com/lucee4/getremote.cfm"], lucee: ["https://lucee5-sbx.trycf.com/lucee5/getremote.cfm"], + "lucee6-beta": ["https://lucee6-sbx.trycf.com/lucee/getremote.cfm"] }, url = attrs.url || From dbf8170accd6e0f035c9332ef42c04f63c58b31c Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Sun, 18 Jun 2023 15:04:38 +0200 Subject: [PATCH 36/68] change cfengine selector to a radio --- builders/html/assets/trycf/js/code-editor3.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/builders/html/assets/trycf/js/code-editor3.js b/builders/html/assets/trycf/js/code-editor3.js index d04ff01da..322c491ca 100644 --- a/builders/html/assets/trycf/js/code-editor3.js +++ b/builders/html/assets/trycf/js/code-editor3.js @@ -45,7 +45,7 @@ angular.module("code.editor", []).directive("codeEditor", function ($timeout) { '