From f810f469e856239397196b29aa7a0d9497ca742f Mon Sep 17 00:00:00 2001 From: Alexander Russell Date: Wed, 26 Jan 2022 17:11:29 +0100 Subject: [PATCH 1/6] Added node usage mode to the templates. --- README.md | 19 +++++++++---- docs/config.png | Bin 25235 -> 45532 bytes docs/options.png | Bin 36701 -> 42816 bytes .../openstack/compute/JCloudsSlave.java | 4 +-- .../compute/JCloudsSlaveTemplate.java | 26 ++++++++++++++---- .../compute/JCloudsSlaveTemplate/config.jelly | 1 + .../jenkins/plugins/openstack/JcascTest.java | 1 + .../plugins/openstack/PluginTestRule.java | 2 +- .../compute/InstanceCapacityTest.java | 3 +- .../openstack/compute/JCloudsCloudTest.java | 4 ++- .../compute/JCloudsRetentionStrategyTest.java | 3 +- .../compute/JCloudsSlaveTemplateTest.java | 7 +++-- .../openstack/compute/JCloudsSlaveTest.java | 8 +++--- .../openstack/compute/ServerScopeTest.java | 3 +- .../plugins/openstack/JcascTest/jcasc.yaml | 6 ++++ .../globalConfigMigrationFromV1/config.xml | 1 + 16 files changed, 63 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index e60a4f8cf..e67e536fb 100644 --- a/README.md +++ b/README.md @@ -23,15 +23,18 @@ template, it can be configured on cloud level and leave the filed blank in the templates. -Aside from machine/node attributes, every template require name and -labels to be configured. Name will serve both as an identifier of the +Aside from machine/node attributes, every template requires name, labels and +usage mode to be configured. Name will serve both as an identifier of the template as well as a name prefix for Jenkins node and OpenStack machine (that is why some limitations apply here). Labels field expects a set of Jenkins labels that will be assigned to all nodes that the template -provisions. It will also be used to determine which cloud and template to -use to process Jenkins load. When there is a build with no label -requirements, any -template can be used to provision the node. Build with label restriction +provisions. The Usage field specifies whether nodes will be provisioned for +builds that have no label requirement (_Use this node as much as possible_) +or only if a build's label is present (_Only build jobs with label expressions matching this node_). +The combination of the Labels and Usage fields will be used to determine +which cloud and template to use to process Jenkins load. When there is a build with no label +requirements, any template where the Usage mode is '_Use this node as much as possible_' +can be used to provision the node. Builds with label restrictions can trigger provisioning only on templates with matching label set. The attributes at template level will inherit all global values (the value in effect is printed under the field on hte config page). In case required @@ -107,18 +110,22 @@ jenkins: templates: - name: "empty" labels: "linux" + mode: EXCLUSIVE - name: "jnlp" labels: "jnlp" + mode: NORMAL slaveOptions: launcherFactory: "jnlp" - name: "volumeSnapshot" labels: "volume" + mode: NORMAL slaveOptions: bootSource: volumeSnapshot: name: "Volume name" - name: "volumeFromImage" labels: "volume from image" + mode: NORMAL slaveOptions: bootSource: volumeFromImage: diff --git a/docs/config.png b/docs/config.png index 710903fc5e3106c103e69d743a6b30aeb7853955..954852cc838e18f95890e6fad1c3b3062d2fc582 100644 GIT binary patch literal 45532 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 e;T_L77vXYzSOg*5xd}KIRHiLYf4H+ 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 Hzx(tbFr-!< literal 25235 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 KN=OCsKmQ9V)Mf_& literal 36701 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 Rz9NwhDjiWwr<}U{KL9gPzZ3uf diff --git a/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlave.java b/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlave.java index 7a4da78c2..da83b831b 100644 --- a/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlave.java +++ b/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlave.java @@ -82,7 +82,7 @@ public class JCloudsSlave extends AbstractCloudSlave implements TrackedItem { private transient @Deprecated Server metadata; public JCloudsSlave( - @Nonnull ProvisioningActivity.Id id, @Nonnull Server metadata, @Nonnull String labelString, @Nonnull SlaveOptions slaveOptions + @Nonnull ProvisioningActivity.Id id, @Nonnull Server metadata, @Nonnull String labelString, @Nonnull Node.Mode mode, @Nonnull SlaveOptions slaveOptions ) throws IOException, Descriptor.FormException { super(Objects.requireNonNull(metadata.getName()), slaveOptions.getFsRoot(), null /*needs to be set later via setter*/); @@ -94,7 +94,7 @@ public JCloudsSlave( this.cache = makeCache(); setNumExecutors(slaveOptions.getNumExecutors()); - setMode(Mode.NORMAL); + setMode(mode); setLabelString(labelString); setRetentionStrategy(new JCloudsRetentionStrategy()); setNodeProperties(mkNodeProperties(Openstack.getAccessIpAddress(metadata), slaveOptions.getNodeProperties())); diff --git a/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java b/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java index 6cff171d1..ed35e2501 100644 --- a/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java +++ b/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java @@ -8,6 +8,7 @@ import hudson.model.Descriptor; import hudson.model.Failure; import hudson.model.Label; +import hudson.model.Node; import hudson.model.TaskListener; import hudson.model.labels.LabelAtom; import hudson.util.FormValidation; @@ -64,6 +65,7 @@ public class JCloudsSlaveTemplate implements Describable, private final @Nonnull String name; private final @Nonnull String labelString; + private final @Nonnull Node.Mode mode; // Difference compared to cloud private /*final*/ @Nonnull SlaveOptions slaveOptions; @@ -87,10 +89,11 @@ public class JCloudsSlaveTemplate implements Describable, private transient @Deprecated @SuppressWarnings("DeprecatedIsStillUsed") String availabilityZone; @DataBoundConstructor - public JCloudsSlaveTemplate(final @Nonnull String name, final @Nonnull String labels, final @CheckForNull SlaveOptions slaveOptions) { + public JCloudsSlaveTemplate(final @Nonnull String name, final @Nonnull String labels, Node.Mode mode, final @CheckForNull SlaveOptions slaveOptions) { this.name = Util.fixNull(name).trim(); this.labelString = Util.fixNull(labels).trim(); - + this.mode = mode != null ? mode : Node.Mode.NORMAL; + LOGGER.info("Constructing new JCloudsSlaveTemplate - mode=" + this.mode); this.slaveOptions = slaveOptions == null ? SlaveOptions.empty() : slaveOptions; readResolve(); @@ -193,8 +196,12 @@ public Set getLabelSet() { return labelString; } + public @Nonnull Node.Mode getMode() { + return mode != null ? mode : Node.Mode.NORMAL; + } + public boolean canProvision(final Label label) { - return label == null || label.matches(labelSet); + return (label == null && getMode() == Node.Mode.NORMAL) || (label != null && label.matches(labelSet)); } /*package*/ boolean hasProvisioned(@Nonnull Server server) { @@ -219,7 +226,7 @@ public boolean canProvision(final Label label) { JCloudsSlave node = null; // Terminate node unless provisioned successfully try { - node = new JCloudsSlave(id, server, labelString, opts); + node = new JCloudsSlave(id, server, labelString, mode, opts); String cause; while ((cause = cloud.slaveIsWaitingFor(node)) != null) { @@ -280,7 +287,7 @@ public boolean canProvision(final Label label) { } builder.addMetadataItem(ServerScope.METADATA_KEY, scope.getValue()); - LOGGER.info("Provisioning new openstack server " + serverName + " with options " + opts); + LOGGER.info("Provisioning new openstack server " + serverName + " (mode=" + getMode() + ") with options " + opts); // Ensure predictable server name so we can inject it into user data builder.name(serverName); @@ -534,5 +541,14 @@ public FormValidation doCheckName(@QueryParameter String value) { return FormValidation.error(ex.getMessage()); } } + + @Restricted(DoNotUse.class) + @RequirePOST + public FormValidation doCheckLabels(@QueryParameter String value, @QueryParameter Node.Mode mode) { + if ((value == null || value.trim().isEmpty()) && mode == Node.Mode.EXCLUSIVE) { + return FormValidation.warning("Nodes without any labels and running in exclusive mode will never be provisioned"); + } + return FormValidation.ok(); + } } } diff --git a/plugin/src/main/resources/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate/config.jelly b/plugin/src/main/resources/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate/config.jelly index 3a4ccc137..5ae88406b 100644 --- a/plugin/src/main/resources/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate/config.jelly +++ b/plugin/src/main/resources/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate/config.jelly @@ -8,6 +8,7 @@ + diff --git a/plugin/src/test/java/jenkins/plugins/openstack/JcascTest.java b/plugin/src/test/java/jenkins/plugins/openstack/JcascTest.java index 028d35647..8e04f682f 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/JcascTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/JcascTest.java @@ -119,6 +119,7 @@ public void configure() { // The only use-case for empty template is when all options are inherited by a single configured template JCloudsSlaveTemplate t = c.getTemplate("empty"); assertEquals("linux", t.getLabels()); + assertEquals(Node.Mode.NORMAL, t.getMode()); assertEquals(SlaveOptions.empty(), t.getRawSlaveOptions()); SlaveOptions jso = c.getTemplate("jnlp").getRawSlaveOptions(); diff --git a/plugin/src/test/java/jenkins/plugins/openstack/PluginTestRule.java b/plugin/src/test/java/jenkins/plugins/openstack/PluginTestRule.java index 1416d0490..47864dce4 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/PluginTestRule.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/PluginTestRule.java @@ -295,7 +295,7 @@ public JCloudsSlaveTemplate dummySlaveTemplate(String labels) { public JCloudsSlaveTemplate dummySlaveTemplate(SlaveOptions opts, String labels) { int num = templateCount.getAndIncrement(); - return new JCloudsSlaveTemplate("template" + num, labels, opts); + return new JCloudsSlaveTemplate("template" + num, labels, Node.Mode.NORMAL, opts); } public JCloudsCloud dummyCloud(JCloudsSlaveTemplate... templates) { diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/InstanceCapacityTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/InstanceCapacityTest.java index 7e661ee59..2d3748d70 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/InstanceCapacityTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/InstanceCapacityTest.java @@ -25,6 +25,7 @@ import hudson.model.Descriptor; import hudson.model.Label; +import hudson.model.Node; import hudson.model.labels.LabelAtom; import hudson.slaves.NodeProvisioner; import jenkins.plugins.openstack.PluginTestRule; @@ -90,7 +91,7 @@ public void reportInstanceCapBasedOnSlaves() throws IOException, Descriptor.Form Server server = j.mockServer().name("foo0").withFixedIPv4("0.0.0.0").get(); ProvisioningActivity.Id id = new ProvisioningActivity.Id(cloud.name, restrictedTmplt.getName()); - j.jenkins.addNode(new JCloudsSlave(id, server, "restricted common", restrictedTmplt.getEffectiveSlaveOptions())); + j.jenkins.addNode(new JCloudsSlave(id, server, "restricted common", Node.Mode.NORMAL, restrictedTmplt.getEffectiveSlaveOptions())); lr.capture(5); lr.record(JCloudsCloud.class, Level.INFO); diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java index 808c62847..e748c67f1 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java @@ -15,6 +15,7 @@ import hudson.ExtensionList; import hudson.model.Item; import hudson.model.Label; +import hudson.model.Node; import hudson.model.UnprotectedRootAction; import hudson.model.User; import hudson.security.ACL; @@ -141,7 +142,7 @@ public void presentUIDefaults() throws Exception { String openstackAuth = j.dummyCredentials(); - JCloudsSlaveTemplate template = new JCloudsSlaveTemplate("template", "label", new SlaveOptions( + JCloudsSlaveTemplate template = new JCloudsSlaveTemplate("template", "label", Node.Mode.NORMAL, new SlaveOptions( new BootSource.Image("iid"), "hw", "nw", "ud", 1, 0, "public", "sg", "az", 2, "kp", 3, "jvmo", "fsRoot", LauncherFactory.JNLP.JNLP, null, 4, false )); JCloudsCloud cloud = new JCloudsCloud("openstack", "endPointUrl", false,"zone", new SlaveOptions( @@ -259,6 +260,7 @@ public void globalConfigMigrationFromV1() throws Exception { JCloudsSlaveTemplate template = cloud.getTemplate("ath-integration-test"); assertEquals(Label.parse("label"), template.getLabelSet()); + assertEquals(Node.Mode.EXCLUSIVE, template.getMode()); SlaveOptions to = template.getEffectiveSlaveOptions(); assertEquals("16", to.getHardwareId()); assertEquals("ac98e93d-34a3-437d-a7ba-9ad24c02f5b2", ((BootSource.Image) to.getBootSource()).getName()); diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsRetentionStrategyTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsRetentionStrategyTest.java index 19fd92cc9..390142a04 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsRetentionStrategyTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsRetentionStrategyTest.java @@ -3,6 +3,7 @@ import hudson.Functions; import hudson.model.Computer; import hudson.model.Label; +import hudson.model.Node; import hudson.model.TaskListener; import hudson.model.User; import hudson.slaves.ComputerListener; @@ -46,7 +47,7 @@ public void scheduleSlaveDelete() throws Exception { int retentionTime = 1; // minute JCloudsSlaveTemplate template = new JCloudsSlaveTemplate( - "template", "label", SlaveOptions.builder().retentionTime(retentionTime).build() + "template", "label", Node.Mode.NORMAL, SlaveOptions.builder().retentionTime(retentionTime).build() ); JCloudsCloud cloud = j.configureSlaveLaunchingWithFloatingIP(j.dummyCloud(template)); diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplateTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplateTest.java index d392ef736..f1f9b1350 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplateTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplateTest.java @@ -10,6 +10,7 @@ import java.util.stream.Stream; import com.gargoylesoftware.htmlunit.html.HtmlForm; +import hudson.model.Node; import hudson.util.FormValidation; import jenkins.plugins.openstack.PluginTestRule; @@ -67,13 +68,13 @@ public void configRoundtrip() throws Exception { .build() ; JCloudsSlaveTemplate jnlpTemplate = new JCloudsSlaveTemplate( - "jnlp-template", "openstack-slave-type1 openstack-type2", jnlpOpts + "jnlp-template", "openstack-slave-type1 openstack-type2", Node.Mode.NORMAL, jnlpOpts ); LauncherFactory.SSH slaveType = new LauncherFactory.SSH(j.dummySshCredentials("sshid"), "mypath"); SlaveOptions sshOpts = dummySlaveOptions().getBuilder().launcherFactory(slaveType).build(); JCloudsSlaveTemplate sshTemplate = new JCloudsSlaveTemplate( - "ssh-template", "openstack-slave-type1 openstack-type2", sshOpts + "ssh-template", "openstack-slave-type1 openstack-type2", Node.Mode.NORMAL, sshOpts ); JCloudsCloud originalCloud = new JCloudsCloud( @@ -112,7 +113,7 @@ public void eraseDefaults() { assertEquals(cloudOpts.getHardwareId(), templateOpts.getHardwareId()); JCloudsSlaveTemplate template = new JCloudsSlaveTemplate( - "test-templateOpts", "openstack-slave-type1 openstack-type2", templateOpts + "test-templateOpts", "openstack-slave-type1 openstack-type2", Node.Mode.NORMAL, templateOpts ); JCloudsCloud cloud = new JCloudsCloud( diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTest.java index 2db4877d4..42cf202cc 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTest.java @@ -46,7 +46,7 @@ public void constructorGivenNoNodePropertiesThenProvidesIPAddressAsEnvVar() thro expectedIpAddress); // When - JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, mockSlaveOptions); + JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, Node.Mode.NORMAL, mockSlaveOptions); // Then final List> actualNPs = instance.getNodeProperties().toList(); @@ -76,7 +76,7 @@ public void constructorGivenSomeNodePropertiesThenAddsIPAddressAsEnvVar() throws expectedIpAddress); // When - JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, mockSlaveOptions); + JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, Node.Mode.NORMAL, mockSlaveOptions); // Then final List> actualNPs = instance.getNodeProperties().toList(); @@ -114,7 +114,7 @@ public void constructorGivenSomeNodePropertiesIncludingEnvVarsThenIncludesIPAddr envVar2Value, EXPECTED_IP_ADDRESS_ENV_VAR_NAME, expectedIpAddress); // When - JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, mockSlaveOptions); + JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, Node.Mode.NORMAL, mockSlaveOptions); // Then final List> actualNPs = instance.getNodeProperties().toList(); @@ -145,7 +145,7 @@ public void constructorGivenSomeNodePropertiesThenCreatesCopiesOfThoseNodeProper expectedIpAddress); // When - JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, mockSlaveOptions); + JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, Node.Mode.NORMAL, mockSlaveOptions); // Then final List> actualNPs = instance.getNodeProperties().toList(); diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/ServerScopeTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/ServerScopeTest.java index 7039797c8..cd8fc54bb 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/ServerScopeTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/ServerScopeTest.java @@ -2,6 +2,7 @@ import hudson.model.FreeStyleBuild; import hudson.model.FreeStyleProject; +import hudson.model.Node; import hudson.util.OneShotEvent; import jenkins.plugins.openstack.PluginTestRule; import jenkins.plugins.openstack.compute.internal.Openstack; @@ -73,7 +74,7 @@ public void parse() { @Test public void nodeScope() throws Exception { final Id id = new Id("foo", "bar", "baz"); - final JCloudsSlave js = new JCloudsSlave(id, j.mockServer().withFixedIPv4("1.1.1.1").name("foo").get(), "foo", j.defaultSlaveOptions()); + final JCloudsSlave js = new JCloudsSlave(id, j.mockServer().withFixedIPv4("1.1.1.1").name("foo").get(), "foo", Node.Mode.NORMAL, j.defaultSlaveOptions()); Server mock = mock(Server.class); when(mock.getMetadata()).thenReturn(Collections.singletonMap( ServerScope.METADATA_KEY, diff --git a/plugin/src/test/resources/jenkins/plugins/openstack/JcascTest/jcasc.yaml b/plugin/src/test/resources/jenkins/plugins/openstack/JcascTest/jcasc.yaml index 8ed30d3d6..fb0ab5fd5 100644 --- a/plugin/src/test/resources/jenkins/plugins/openstack/JcascTest/jcasc.yaml +++ b/plugin/src/test/resources/jenkins/plugins/openstack/JcascTest/jcasc.yaml @@ -34,18 +34,22 @@ jenkins: templates: - name: "empty" labels: "linux" + mode: NORMAL - name: "jnlp" labels: "jnlp" + mode: NORMAL slaveOptions: launcherFactory: "jnlp" - name: "volumeSnapshot" labels: "volume" + mode: NORMAL slaveOptions: bootSource: volumeSnapshot: name: "Volume name" - name: "volumeFromImage" labels: "volume from image" + mode: NORMAL slaveOptions: bootSource: volumeFromImage: @@ -53,11 +57,13 @@ jenkins: volumeSize: 15 - name: "customNodeProperties" labels: "templateWithItsOwnNodeProperties" + mode: NORMAL slaveOptions: nodeProperties: - nodePropertyTwo - name: "noNodeProperties" labels: "templateWithNoNodePropertiesInsteadOfDefaults" + mode: NORMAL slaveOptions: nodeProperties: [] diff --git a/plugin/src/test/resources/jenkins/plugins/openstack/compute/JCloudsCloudTest/globalConfigMigrationFromV1/config.xml b/plugin/src/test/resources/jenkins/plugins/openstack/compute/JCloudsCloudTest/globalConfigMigrationFromV1/config.xml index 09383e3b7..881c17b21 100644 --- a/plugin/src/test/resources/jenkins/plugins/openstack/compute/JCloudsCloudTest/globalConfigMigrationFromV1/config.xml +++ b/plugin/src/test/resources/jenkins/plugins/openstack/compute/JCloudsCloudTest/globalConfigMigrationFromV1/config.xml @@ -29,6 +29,7 @@ RDU2/ac98e93d-34a3-437d-a7ba-9ad24c02f5b2 RDU2/16 label + EXCLUSIVE jenkins.plugins.openstack.compute.UserDataConfig.1455188317989 1 false From 0ccb5d298d83c1981f807a3bc12d175194052100 Mon Sep 17 00:00:00 2001 From: Alexander Russell Date: Mon, 31 Jan 2022 10:44:58 +0100 Subject: [PATCH 2/6] Removed the mode field as this file is for testing the migration of the config from version 1. --- .../JCloudsCloudTest/globalConfigMigrationFromV1/config.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/plugin/src/test/resources/jenkins/plugins/openstack/compute/JCloudsCloudTest/globalConfigMigrationFromV1/config.xml b/plugin/src/test/resources/jenkins/plugins/openstack/compute/JCloudsCloudTest/globalConfigMigrationFromV1/config.xml index 881c17b21..09383e3b7 100644 --- a/plugin/src/test/resources/jenkins/plugins/openstack/compute/JCloudsCloudTest/globalConfigMigrationFromV1/config.xml +++ b/plugin/src/test/resources/jenkins/plugins/openstack/compute/JCloudsCloudTest/globalConfigMigrationFromV1/config.xml @@ -29,7 +29,6 @@ RDU2/ac98e93d-34a3-437d-a7ba-9ad24c02f5b2 RDU2/16 label - EXCLUSIVE jenkins.plugins.openstack.compute.UserDataConfig.1455188317989 1 false From 4a639b285e8ca6cd72ccb872074e0477c55e6161 Mon Sep 17 00:00:00 2001 From: Alexander Russell Date: Mon, 31 Jan 2022 10:46:16 +0100 Subject: [PATCH 3/6] Fixed log level and made the canProvision code cleaner as per the review comments. --- .../plugins/openstack/compute/JCloudsSlaveTemplate.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java b/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java index ed35e2501..ec72262fc 100644 --- a/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java +++ b/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java @@ -93,7 +93,7 @@ public JCloudsSlaveTemplate(final @Nonnull String name, final @Nonnull String la this.name = Util.fixNull(name).trim(); this.labelString = Util.fixNull(labels).trim(); this.mode = mode != null ? mode : Node.Mode.NORMAL; - LOGGER.info("Constructing new JCloudsSlaveTemplate - mode=" + this.mode); + LOGGER.fine("Constructing new JCloudsSlaveTemplate - mode=" + this.mode); this.slaveOptions = slaveOptions == null ? SlaveOptions.empty() : slaveOptions; readResolve(); @@ -201,7 +201,9 @@ public Set getLabelSet() { } public boolean canProvision(final Label label) { - return (label == null && getMode() == Node.Mode.NORMAL) || (label != null && label.matches(labelSet)); + return label == null + ? getMode() == Node.Mode.NORMAL + : label.matches(labelSet); } /*package*/ boolean hasProvisioned(@Nonnull Server server) { From 3f50b909a69fc9628301c220d7660380cf902870 Mon Sep 17 00:00:00 2001 From: Alexander Russell Date: Mon, 31 Jan 2022 12:19:38 +0100 Subject: [PATCH 4/6] The default mode is NORMAL. --- .../jenkins/plugins/openstack/compute/JCloudsCloudTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java index e748c67f1..603c80aae 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java @@ -260,7 +260,7 @@ public void globalConfigMigrationFromV1() throws Exception { JCloudsSlaveTemplate template = cloud.getTemplate("ath-integration-test"); assertEquals(Label.parse("label"), template.getLabelSet()); - assertEquals(Node.Mode.EXCLUSIVE, template.getMode()); + assertEquals(Node.Mode.NORMAL, template.getMode()); SlaveOptions to = template.getEffectiveSlaveOptions(); assertEquals("16", to.getHardwareId()); assertEquals("ac98e93d-34a3-437d-a7ba-9ad24c02f5b2", ((BootSource.Image) to.getBootSource()).getName()); From cc02776faf864fb8873eb5faf450fba12e3f0b60 Mon Sep 17 00:00:00 2001 From: Alexander Russell Date: Tue, 22 Mar 2022 13:50:05 +0100 Subject: [PATCH 5/6] Moved the usage mode field to the SlaveOptions class. --- docs/options.png | Bin 42816 -> 39091 bytes .../openstack/compute/JCloudsSlave.java | 4 +-- .../compute/JCloudsSlaveTemplate.java | 18 +++++--------- .../openstack/compute/SlaveOptions.java | 23 +++++++++++++++++- .../compute/JCloudsSlaveTemplate/config.jelly | 1 - .../compute/SlaveOptions/config.jelly | 1 + .../jenkins/plugins/openstack/JcascTest.java | 1 - .../plugins/openstack/PluginTestRule.java | 5 ++-- .../compute/InstanceCapacityTest.java | 3 +-- .../openstack/compute/JCloudsCloudTest.java | 7 +++--- .../compute/JCloudsRetentionStrategyTest.java | 3 +-- .../compute/JCloudsSlaveTemplateTest.java | 7 +++--- .../openstack/compute/JCloudsSlaveTest.java | 8 +++--- .../openstack/compute/ServerScopeTest.java | 3 +-- .../openstack/compute/SlaveOptionsTest.java | 5 +++- .../plugins/openstack/JcascTest/jcasc.yaml | 11 ++++----- 16 files changed, 56 insertions(+), 44 deletions(-) diff --git a/docs/options.png b/docs/options.png index a70af351cb88bdd2dea513d5c85a3322b69e3b55..bb235622c3383978a586b0bfa95ab5f4e451f63a 100644 GIT binary patch literal 39091 zcmbrk1yr5EvL=cXAV6>@!QCx5fsMPnySrOR0zpD>cXxMpcbCn^-Q8t2=iEDU=B<0@ zy)%!sXqxW+yQ{0KtE;}M5Cu7LWJG*K2nYydNeO@w1O)Ua2neY84^ZG1P2J4~2ndWS zFBJ_JB}4Zw4o>!FmNuqeTs$32znFShnn6H#ESIHNx{=dF{(5r`<%TMO9)KiVO(7V) z*t;53iJzyXnJZHtR)HyD+BE~z0^jaB23}C#B#)MMlu}&KCj6WBh~f2E)#R<%_9n>N z|GGT&@*4fDFP}d+x_GN&M~W-u`V0pn zS$<2adz-$Kb4|I6s(6PnV8w%)#b{|jJ`1x(U2o z)yJ#UmwYS~guT-SC%pTey;Hw8+R6{Ad>V{wT%2E@Taj6$?=iFwE}gS=H?HD^yHwjy zzlS8YR3=8Ae@}>%id?t;!vS+Fp|g&>W;E=$8K5Agf{o`ag{~XUu)K0zv|&Xc9cz)$ zMMyiT{VgLa>o_ONMQN)pUNzEW;R0fUct2WNuDPUnGYT zmQtnGYNp&6zTsPFn)_1qkzLD~V{l!JoWRatQ9+tte~-0$h2Q-{z(P03`rYpuis~{ z9;e!V&UwBg_80o;&b!TT-OeZrzSlr1J>?STqsv7Gq_KQ~DBps=L!r2ig(xidc)Wen zLPGg4ueU~~hUGFO>4r{OrLY!bc+iaKC3uoJL~cam`6F~6Wo@$R%A(M@LJxb7e=TSF zuUg)-)&9zko8J_VLMHvu8iPH0rn|@i;T$D(v~+%}5qPb~VI)F}%kt^*vRO$xGlblY zk6l`qTT;;3(ip9d7r`@n+`3d!Pdp;Qy}V#1#R89r%8?FQbx*^9bA`OwjIb&p(?%OU zzPfCu*wh)}M7TpNd3^Gb?ELPYm zh#7o;WDL^fA=#pkGnk4o-1v^yvh4%)VbdE@fJEC+EfultyUq8RlJl2)GG9v_5F{>r z^KIBRlTq?Y`Y*B4POdIax3DZ}+F6!0h*wPbkC9!R)UMQ!zaJf%=_q~k3_gvkkx1oh#zg zz4vN5X!wcvbg8Tr+-kll$iH$X^IY)ziAl$vf5m^}QIQFy>G_sot^`Z;A-CWjVA5g7#|ApR73o(w2 ziicroZY)GO0kM>W84h2M>d)j*wMtU3)Tbs5a5;{$RwAQ@sKdm?Dw~(l#(u7LpV!W3 zV(4^oV*b0Oxj+j)9xgCwR~6;39#Uya*6YJRnV^IPn#z~s4>k*&ADhBp&6FqKz1?z% zLhHkZEa$B?D=f>U$B@p#DkLUP&Sl*H1BDd$vdzLbo8if6(@b@WN^KZ!1p_eZ5*t|D zDm))`g=6>Zwv42t+WnaGYkagnXfcAEnll;~P84ssgk-KhN}CrMX-L;d4_#Xt+6}fT zBA9O!Bk3;*{&P_rXqZ(@MOMRq7*qGvzH#693$<=?T~aGjNmi}W6qZRvYMqqiaUpw0 zaRJN(kHIL^gn(EMnwv2p&d8ToZ&92vLM}`+_QkK5Q>M8_i*EUu;*K1ljPa-DY#@kZ z_CZ=k<+UJas5^Qepi^Xm(s5)ytVS@aBQc!v&5Oz?Y-c9nJ@ zhAp`_Yk&*mV#)22dq;Yn^$p%~%FJ%;I*M9C)})&B7wv7zE4>hwsh(+ll6}a{7%E{^qU&I)9p0Xxc5OZBs3e6llg&bI7b?e+f%zWdJZYImyo|+hnsuCHNiIHdvYvbs|4$WxuGn6^b*v zly?0kR7K$K<3YzVgcLb~f#$B|+(b8Lx~{_M^`>L*!FT&;*!PhTiWr8FtmSXbmBG<| z8RIZ)zS~Rl*W%zfDdnR|<^NUe&nDrDfHcQ!y5!+3s$Ewz=pVfU+j>?`?# z%J?l07;d(t+5+c|Sfc!ga>c^smYrHN8#7vXY9e#1U2coEnoCtuxXT%#EP0PtCX7UftJrFc*27pjFv_3M{!F=sbNHoIp8#t=m3BIrg&(tAKOs;JB1F zzH5zg4`7x;KF1ece7Mz`M|Mg5GB7-hf$pjH^J^DLO@#whWDmx2%i_k#H966p{K~e2 zBTP2YN#-X5E1GX1b;8l;&$2`A9w<9Lzqbv&IZ8dU9X-hM5TkyS-P`R|0=s^E!*oHw zSN)@<12MnLG8$=`1WS@g_KPnQqEkf7wO0oJj9`jo`XGjE%(p@eb|&~-xGqPQm(_^X zZNyCOcQ$z=vQFIgQI1HQc?$0b9)lx2{KDEk2#%US=9I(bS0PPW8eS4rZOH*{DjjR4 z+Mnc^us0=>576X)*wil_3hH%7a0qH^_F8#S2o?CR1Bv(o0`9Z-$X%glkkSc49Ut_1 za7Tw12XjIqk?hbh%4FjgXmyakbZ7L*U76w)A)<9GN)}_9pnq+(QKd2{5-^l$=&|2^ zMBrb307Bxy+!lPg@pOU5_ywa7Gq^LNR%ipNIK!KpwgU3v^3DMvA#?HgozwXIOZLjP za#Ef&J1VGL*3vHYF`CcD@9WLaVM7+tIK&PlGj=1RIgkWxfm=|cAf)LnKe^-(!w&px zmODNBxs-0(o0LP@R#HeZSG;~Tw7(XHCXG0VpE2@cWe}F7QKz&&L`(Je$=B!oId>HL zwI}>dZ1Yj+*sB16UV2MG7Ks593)V>d)?4KoD=E-L>y}4|@n;kXaqO7HEgAQ&h9ypn z=Qg3G#E7w~6MeN2*}0eYZK(j4_r4GjbkHB^UKHmA0xCx(Mdgp}%SJzujx{?&b*x%R z5huyce-J+7vSfS7XnEw<_56|DZ)YZS-$LJsNh=UNsI$^jf4hSB({<}LiMX{y;%Y(} z`D3vp!uaGoT7q}+{b-aiAI4BaarJfMrMb>Wv|iZ#2Aa&9_b$a1gzdzz<%aKmT9P@f zhtw2rNM-bdPs2m=Alf_c-b2|DyS6nl!&1m<m$d39suLS>K!sLlRz5O# zaU+F@7Q%-Dbcu=z0<07(#Wxjv?f1}gn-l`b607UrilDHehGzLwtWkN3e|;)+KrNRQ z((BHvH5|Z(lbTTjE9b5>(K0@sE6l9mtDFj&`u|K8X#}Ra)cBc(~(;;o!cK0h=#V%sk)&=Gx*H61>+t`#+=Hj2|)C3Ji zcb8TYQ7X$M7$7JQoTDYo*H!cPk4wPWs3@!FP4O%h62-yPoNBO(#;6-jnU|pF5T^Kw>qnI`brx z75s{hWuX6t0t&C`qEXp4oau>F>!RCim4q34k5#<|7RmF8Bu&V2$i#s94`GxpJz)f? z+dudDSx;B|LAS4`85IW5rQLsZm?V}0_dR{;ezM=WOt=$)X86}!UF7e47N+n`>-Nh}hJ*&%@GNEN>NKB!%IpRK< zsynYpQSWO=)Lht)F5Ro^rAfFyI`cZ4CoOv&F3}`99F`%)bC#8}lFH3R$Q30`$zOl` z`axT%D>Z>%DN#F9!T}vMqGzZ|*0y;cdZ|%nf6(*S5Nfk;b@^fh7&2DLl|1R3O%Gq2 zgll{GJ3B8@*HmkR#Ze}YKy3*VW9bM|nB^h?zOMmx`>)>K{ zGTUGm`}sBE$09p)c6iTXPEp;+Um;3I;7|neMX*73nhNa=C2<0yr@@}X?Q`T|(;@k{ z5=pJ$*mAvZ#!iSsLgO~1^T1Tg%!|DhH@h!}IOZ9VSr#8{3h?r44Trf7Kaf<`=_t?< z;pN;ens|xcafW)GC@tp`M>_m?lD40#O z*3fX!`((gb%eA#~(7zOPlbM*rM7`?7zJy=}a-z3C;i6TrtPjt~igFu_y*fIEn@Bsh zgKvjD?47pnIKjGUpL9;m{#_`HG^rH7I?bw-TrFq(W*c)k&?FXP|?qvIzxJw zOc-W8-P>|0qT9mg*qaDEWtC9;?lMnv`9Fqour!%h)aWEL~S(ZA;~U>}m@o!Cn;uXm?xSu|Sm?s%7_Y(BZq||qL zW_%qDt(NkU!QAx}t&jbvL|%R-loe}U-;m~$D%VI?j} zZTM=vLu=rUiIvVWj+HQ0^0){+h* zg!Bb=_PI(c-+mt>-$AKMV!kAT*J@pzZv*097ctS!xvm{&%NF zK=p#}DhRX+>@ZJ$d4X`SaLSK7p5g>!st67en$8dqNEq+GkPykKxZp;37fD%B_+4o1 zj|60V3dUa`Aih9I0=}tuEFXjXRg~S+1z&O6Jd`b&l%gxrWobtk$|XU@vusVj?Yi$l zCaJK;c!g_BnabH2SSRtH*@V5N9NI64%1 zC6dnqGSIMejtJ6?OG@IfI}i}-{JsZR*LtXKa13wS=SRb#gMjG#iSF-i*tc+DS5h)S z6-2Q)+bUrEf~~D~X!Bq@y>vS7e%IpNw@&S7l~y^drD&$;zo3*Iz|Y~fmK~a}?n+p) ziJ`I9ZSGPk<+xVNKwMsS%y}ZaV1-9YYJ@)5%9t(F+Xn{5&p*NCSGL$WyQ-TkAq!otL$eMxpJIzZM%yi= zeL}z6qKwyVO9~cz|8SvWw(aa3!p&yS>_?ORU4hAxErRZx?Cu^=BwCg94K~_+v>a%# zD2w1ZWf{9Cx!46>qlC zz*%K$Qc^^3pxYwqGs&mFl~NoP-tEPfHR=4e6Q0}#F9z;iKBS~~NBxHuV^qMJMKpV0 zN{it6!%wo_Jk6B5ghRO{uKC8^N`Rz~Si3FIjO6y`_G^9jH7BVO7=W}X=}uQC)VSL? ztsB0ux2gX8l|-skY>=jiwx$q|6wz%#t-+5HC6GchYZiY&&6Z)BYU2_P%-PBS$x9c1 z^j)r49ck$pq%LOdvOb0;kchKDT6MCfST@ezW$w(>Wq>aUn{V^PwdGJhdy`kLEtRY?1}&w zPbslkrRMFM<|UcJ!NJ*|!{|{%lVKhrIm^7APEChz@nrgtUYJ*#FFYbya5r~y5rQ^d zqs*zb-e@kNzEUeYF`N^^Ct?$7I-?eINE7I?yfmp}tADw{NhS?A?p}F>qnr3dVHy0) zen3FfL4WpVg0ZM#@{dPqi%nn7*on5R4*Ry?4%tk7z6^)%wHrGx?b^JbhOv=j05k*y z-(aT;%U8^e+OP-h)9aTrl#crC9tKS*QmyFyv!#6jwA%dQkYL@+5eXa((r*;aT;AUB z5*d`utAgo`ZWXrS@xj+|U0c?=r$T{x(tyN{(Iow*-#!uiR;7Daj+Pnq|B1ZA{# z%4k0kWA=QkXcJ9FbgTPZu$Pj|nW8}&^Ue98Pk8UC{f87k8rlexF3pFJ2y~bM@^t)d zhSpZ49(^%1S^~B{-w&6WtS{K6Z zs{`gigM%1oRZ_C}g6X%}><EV}8Iat@JHEW;S4K;#Qt#@Pmw^^f{k~0Kd)czF0_H-w4WxC||w3o~fe30yorZ1V^ zIf(eoLnns)p?fZ9JO0RX`HWY*Dd;H0Eh||}7`@!?on*qq-4YJOA%8}R{t#TuCO%SK z;_y#2)KaBO^LmszVQP}eDQsigf3lhEfM)55QMnSWeQ5$k-YsK}t4cRVv~8h2Z#qlN zHx7T5%GAW#ULl9IczUP@`(yarT5|eLj23Aqqs8s~n~&={=J)5+RZiH8u#EQVt(at^ zuJU{3;&8AUYat;ZPScXgdwP@T4|LWIO3b&h9RuZ6hxdL&C+{f_ycNder_1$RHml&H zixkg>Y|Rb-NQI{t`h}U9`{k9;We!qLBMgAoJ&@b+k4Ot<- zIqfoxR~HbvN8{1Vw}uP z#k5BsY{p&p+y~EQ^<4AXFb6!au&?N|wNnh3#>KhV+Lf-*Yc7~FXb(oYXvOxE{fO*P z^LLTIISR=W)Gk($==wIjr+H5kwpnv2`_#a-s1iL_XeQpXx#06{SC(rV7i&U!prf`~ z$=Q`Q(BtCpr7@QZgJ%Ea)(i{bFhnKZfYz5|uiaCGoQ5Rq9#2-=q?Va>(X~Qj8TVlN>pz6rGh{ zimk<|#o}RPu=3Hu!k&!hQ*iLC^`Z8loqdCPy>x8m{7We<@6|3AbZk?_Y#8w5c0ore zb|+e;RkII0inXP%vf#1P?(XV`>$D5$PVr-#B+r1}!s`jqhGKlm#E~p4CdJO-V*?p7 zviH%jHfid-(xcnlee6jRIi+%(FTsfePraLjBoC##}b`RB)YkV z`1xsh*oa_Vmi97X@`X9P<+`r5WT0c@Wlvgv1cTsB z>A_^f+0xVu)Y?SfOb8y+Uh;Vs9D&kDF$ek!a?{Fk+A{)GFO>gqg30d8AxH%G5coTr zY#M_UBe=>i;0LnifdYVvzXSkO$<2m5PcPQn+Wwk9|&mF8L8;DFd7QBM+ z>(8s$v3WY965!m%Th+9m6?}<(JtzRzYzEn6j+4zkyk`%rr^DqZR<;&-c!=NWuIL1iXIPflT}p7-CV1f^ zIgg6vbXknkc+ODtcaMs?8*3VlTh&ZiFq`cHwRlqP9-xUQ1Bi&u{1MZ71qJV&dT3%`2|i|9v$2{MN@M0iYSCqC&9{e1QGWHFL*lwaQS4 zi_3Vi+YKW&X*lc$88ytujY;4;omtl2>CBh;kXW<8 z3RJ6~g^Lmn)wH!fe%Ch~WEh+h6|gQ@U8WQ(DCz4(gkpIkemyKB^KEDPZT#7oEouCB zN3u_6uO4`}-+|2|rm!k_aW^jIjb%k$b=grFwLf+3%Jk&`fSkv{E6%$;NK5DmG_)wQ zoqStUEuNB5{WZ5GovHg~p&Yme&y=TFCJC>bK1OqQg`}lL6`D#w{IBfn+X!#C(EC~% zI!8+-t>$kdURx1wR$U`c@~NL+&v^O3HYddTDja1t%*(F-%JGBuZ{L=Z!vpJ-9xB2* zUY<7S=+R1>*lmgJ{vjKtiR0JaKrRFtnT`mtL?WC4U|QL~_PuM{ep5+m<&&W+ld{*9&w zcG!}{`?rrzU!~cJi%0>z6-#C#D)NNIQ*!D7p3ZwKPTt36sW}7wdj;S*AyyJP0f1#> z4z;`f`WjXi@a67f>Qz*#(6rah%cH*WDcGs=B${w}nvg6mgPK^G!h0-;!Ppyb@|n@C zzdcenNREtthKV;9ps0mmT*md z9igie&Cks$Z*%jOPDt!U(wZYeWusx}uq*PP%EiBEMsamX!<76M1x!;m^W?n9Z?Qr4 z3>uPF>n9(7Z^0%)1<&bz3jbtz zaO0}J&j#~;$-h7Cv#`IP83YvA|NM8#FU;?s{dXmw$)>r_?!(pI@87?3rl|4Jz+=rA zf()Z$Vw9DXPV*xh>D0?d=^4Vq!^cv%&Z-8O#omRoW}#ut&--9H@BaS2Wk`mN&=8-P zSWa46nHuxr;$r`OtBG~}{rwv8Cue8=5CJs!;R3JsTi`xNN5}u@-W^TCz`=1(hzU0H z6A3rO&82w%YG-qE6E~=7M3@=+U)|34`uYZn%w|^ep>O+{hf<}tx966)q09R*@Zkp> zm?ZFidbHaEh`h$=p?Us;*HNAC`uzKUl-EQO?RPeTNn#?+Q?22LN9mN#t+9HlIX&NT%5;Kh?9aDy$It1xy^D|*w*GZ`^p60x3$XeTQ!t4 z-)z=VU)>~@;qmaSu=z}ISAzV2wT!O%gPgdUYj)X{4!B-!NM6kAUyFk~pz|3WP0|3RIwMzvGM=_JyR*>^+&X*m71C>BeA)3QY7(O9d)l| z-G>nM;h{|j1~3hscW8+pVUH3pfk;=r)};?e)qxMkH!Y?Yg*~S(Pj6)86Fa1eN}|Cg z9roW{j;@cxO^1BFi`z=`E)2?f>XW&1xbmEd+E&klj@$L#s_TxHp!LrBNW<5Tj02%w zFn88W3iV@ig>Gm?Zh9$gB}j!0{-IVVn5&kv-BD7!c<#<>5(r(i+-p^FDR&~-ylw1V ziu8-Ew1()!TJWWGw}1n7y7B#qV`<0L9VdEf#vvePZ8J>Fj$04$+4dRQEb6cm(3&^x z=#!5L^<0f|g8xsJq}{#ww-{C43pKpkX5e@5CLy>Q7vzUnQr%P)Usm0K(OG|g>UmBR zTYh2gHN~{4-N(6F&f}T$(AaP-s(y==Z!aRB3!UCgQ#;LR9`+4b)SEY8VbQy5Kiw)d zkWx+gXk|a~dWsQk!0D(Q=Z`T)nvV4J^W#K;-b+sZ{yQe)V;^AI336QA;>GxI?d407 zB)zFY$`}$e(Wv`^-VmuSIlz0{>}w7czy`e~--wnGXCIBapmyry>D9JMoM67L<+*Y> zov(gvBz=<3#)_sW9MmUqddtYFRr~RRPPSM+tsJe(Xgk;<^wPc;zpM!f+Pk8(b`h`gTir`=|fQ&HC)QbwDmwlHwQVvH%kjD?R zv6Ilh=4qLGg$7Hs<+lgA0q>UR?j&P-J1Xalv^>gWZjzHj1-ChD++R)Xqv8$O(i^BF zJlW{INJ&rRM-S^Kqv@q>epwupjdUpfXz!jHJ#{$tui+y!j4Q%Rxo+zA(Ro(|%z6J% zW9zkouNM(?YNZ~>ET!J>9W|hLJ$5)-^!a69oQ)AO1gwN1{&&FZeb~RYtVbcqeC+uX z9-j38?l8C|ARsWt-Gzk7-`?IfV7?#YTFZRbNd}xxyD9cRx(uA0EAJ%Mx~`_B(o zJv}{B7MT3+JgUL&VICS9qM@NdrTmAE<|Ac3AOLs#>uUd>>i>6$oF7 z=mKF=(OWls21gVgOj;)ydSbS|%UN}UYuII4`j-cRLkHh&q%40hZR;c`GE?7;%eo?$ z_WQnoGfw~K(*jcdS$ONab1Jo??-WIDnPakvf@#Kr-K^ch`Y0`NoE#oyF0QxU zzOwEn$X;<*G{RWAeaV8kd~}q?uBZ3?o%0xk#wbv-W~;c!Wch%J7|voF2+QM zZQ2@1LGE|prlQvJ0|40QiR-g>LoQ-PoHrH3aN?!4*2S@>Ry?#Tw&V5GOi-?U=(91b z((21xcqiH$%Rgd7nl)}dIXF1m@I=BaZDKECH`%Bq-o|QKFOwXRVED?4k7%HG1^F_- zEh5&+cBNf%AhI=9uhhlWAAfwzmD5~P|g#Ka|!PNOJE#qh>p`V~AIgQA{N{cAqoPCMN~Q@OH;Sv_p= z{dq!lHb8W1)dV^QO_bS;N~wCd$2Hun9Tu`A1!MmCA(2fzg>JotjlqSMILkNXN)x6J zTuFZnxDwif_dZ$?Z@qass)^nI`p!8CXk{0R^;Q|nrIbs0D^g2H=>|lZF8P&L>H`-( zib4+#PdHJUylz(iOA<6#G(`YD#b$7@Y5~sTG*amq*3Pj*i~O)=iRSgYSHedgAjz|O z+i$vX{~OTNOcQ5b)R0py$!R(0-y<9cU7iMn$0YL|@P@j4ra!XcU{O(^Zmjn{oX7D} zV^kIu*$kYGZjiqDSdcmqb!_`m7gNy?3_NN@&~im55THSKOhx~vHI&^+4&NqDrG~O@ z5m)ACJ=S?UUoL`TA8X28=k~xxOKPN|71Md=x52$a(nseRQ+F75fwywl+K*igTyy^{ zNEnGFr7l~3JJG}^Of=)=l8*yjLm=U%T541>d#fvXVA z$feiF;J^QA7yPS@@PDfRw|-%b-1DCaKL6L}^K%Dwd{Hv6Y;>0PG0QkPIY~(kgD}zE zcZTDV^75*xsywfD`EPOi3&G19+&z>+mlxD8%%V9{1E2l*1Ox;a8BzYDJC)lRY%ZNTp-+w47qWc(S^K_$8XX-S z!X9RK%@1Z@{-35FA0U8ce^v41D@m5-dtZPh;#AgZ#7Y1X0N~QE*hstPh|lm5-0?w1 zd4v6#RIe{95Ik-@%Y7|AO(#)%EjsKLZ2x`#{QZfun|+_2b(eP>{T=WQy<{B|`$+;y zY^rMBDkbCvtY};49DV4Wj|zP}=I)P%HjIY;ixZwyM;sC?fpSdCUhWEGa{X?GJfB0& zkY@>c`s&=)r?t3qshYB-_tXBiPwwN?JlWO9B6s6DK8-6{TXGO$yq_~;2upvzeDJ&8 zUKoTeLJ3ifm4F{oF7~&#D3JoThd&eIm**Qt8r1c7TeIfEQ{u@O-xb==>$ZxX++7Y# z#Fquz%Qyuc)2I~?w6JB>_mC|x4d=nIltGmJVc;8=-H@I}j_LueUt^Oy;mi6*?jKiO z%b@w{VMzyF9Ovie{+Q_f?W}tx!R;x-JmFf^O!(kC+XYiQdka-0FLC@G9!}{u9VRs6 zr!MAC0kpY0X;@3=aXl0le4P3tEwuT5+CuN<&wpEbY(ru6FdG{iTL^$h zCBA^ocibRPu9`G;1 z{}bUKSW3hPnMW|l|KG0s-_i9?*XQ3T|2dIIW&q8xWl5F0ek(l1ka-J{_sX~HcgyH` z5^6?beJi51Ysy<8+GTi$Zxcz>U+9DZ-Z#Tb^kG^4cr`gm^8j&63Vfi6eVb>D1P?r` zwyrn#@8OQt@krfEt0;$#62j}RZag||0q4{sMXthfef8m9r{7FIR}CyJzXt5dD1@qC zO0zj}#cIvOHE`2RDz_rs4Yt_(5KW$4?}8cm8S3p5y0lJb!NxGE^ND42Hbh$kV{E;D!sl za476ZHPL`0)YJ2|_OQe+2IJ~S_LjirrJhhHjXSGITBUm_1`E4A1 z@2xGSd>l5sMNZU$bI8mqFC_~cUYeLBlLuFPCdJ&=B6JS-6K4-S-=T) zRPAItih_In-ZW3Trpc-x07LgStzPS+1_GYk(2M|pT%k4mt&9^P1*3bxv)vqySv zr;9YO)ESY-SJ;vvD0}R=J(cfivW|_q@?HHFeiKgn4GoQd9K_N0ZMUsoRSFzB(XOo# z&=&12X8#ySi5Lt=_-_QAOe40C%?EX6o~`v*NTrY>7?vB@A_F?t8u#f8a^e zGyUdWraJN|4{0SZBd(#PcQm_5E=JzPP4|=3YSqp-6={szrAwRt3)-Ld+@0 zilrlNtf>Sfn?;Z#{bl#xWGHCq+_l?iD(Bxo0*<8MV2wF_^Tdx_ zFLQ<=G9pX_FkG@`jgE`{=Z6(}g_pj%L!7ECAhvMR^EE${#{1SCWuKF1QLQpE7{=F! zxnT9cZzwhe04TLmEXDs{K_@gCavFB8ZyMRT1pOOeMy#hdw-f+M2UEbN@jr3_w(T$) zx?f*E72woXRSK6HX!NIF!Ee*Z}S%uLybPf-JQtAo>N^rW2*S~YWKjDu_HI`_b! zza6%0;X~|#4X+uc>OFX9B}y0|Lho8Z4(nyXQ@lzk{sB{wA_^L{FZQ6NL|#YbFi8~( zS!GYP8U>LyKgZbF82BW{`xhJyK+PkLsph;&>{5j^y$B$cepay`b z_ARQyj>9KUatjN`XBA03j2A>V&9*GsUOd7JCedyk$ALT~{Z99r z+$0leeBCZ1{j##^7`CZ(Tq!&5woFrZ8CC9;=ETu0J5ZFdWoQr$ZERv(f6fZ1x`bPo ztjx_#FNIWH6E9DYG+oLeIuNEE%863WbboPQ4K*%LmS3jYgyCtq?XlOQC0P*-%{XAF z>A?|3m0jSf6Q*w82uyub)r0J?GD*GBV zJb89CS7tgEtW@UIRm&*RPioR?7po0G!P@(lP^z3Qw#`wnlsZ8&m8#SLdab12inyyh z-3M-?*QrNnIJ{!y`ecYp4Kc8?OY-P$|L}LPdjo+Knv#Ir3J3NYUc#p}dQ@=@Q>%W; z7nOjJ*(6xJmg1MBru+*6tJJ*ayw`@?dG``tF%!9>x@XcY&VUe&lim3GS^gHFV5K{J zo(Dw-d5(*D(cD){56P?#zN=adOt>4hczt8Q%UJ*bA%1%Jc-YMQfknv*$x1DW5=Ya@ zKAZCQRvijWfPQ^*`wmY20WAybHgEOSPa?yluQ%v1WnOLZT{mFfIOzBO!;5j4ko-Nu z=5CoBu?+JI91;8ed(GJ5-Lm@+sJP{aw$uB64FPEHF7>}*Km7x0hG@*Y|9m@f<;(5! zaAY4$?RZM~GBdPq51t9^@wy*ad#XqHCp=9gw8v9%zUEyHb?;3Nk2ZTcYr61($E-Ac zUjP3W&}tN6OS>kz0l((B^NYSyCEB^CPB~o)D`m5CJt)%I-O>Bz1{lx@#_YOfcK(CUmtNfcgYCGCGk@F35sb z=GOG~=ky(OhsQ}Ysq*%g{0l}RlG(0oh@b%gC3#~*@c-<%W84(>&AlaCyqB3kMa{&f zX#)waWM@R_dUtp##3e<&#$_9Jv)ztE2YCCpx{i~k_yDj&w#sw(G^VJ3yw!0J7eX!i zu-yxJLe(L32R5HOp^;>|L|p6OpDaYbDJs6o$LAJD2M1%y7kP@fb@5ocY4v&+W}W&* z1xsAA$1W}NO|zAhiUuw{TXcF)e-1?lt06r--_8o=ZS3uR(u_J)ds~d08Q+8dm++P4 zN`fh@un0+#qG_v!mQ~{|gkZ~xR!3@Zu-Hx1p6%%b^fa8_>);ZW$xTK5v7e$WdA;xM zrLQaifYXu+`etfoten@0u8AHR`mWrmH)rynr=?@2r;)Yh3H+bck@QymH=ob_*EVRt z?1#AHVm|Oo&f{O4ui7zxRkbdABU_8^M^n82mE$H};4T!67atx?7%~VD*^C^u_y~6s zE_x5`mz0}RKbnJ)68q0kRnq?+szMEr?4k`8%Ny(ss$d#XBvtD|uacI&Yi}sc0WCT9 z8b0m+{E>E2Pmvz90OXU@!~#0kArz!>pvafT!oZ3$`MW;sUXuMYc9lA)gc$DDj5wCU zyB7~M=Gr3Uf8`Z?7aW7?q;W$dk92dI;}ZdzKF;9JH`k()X~WI{KyQ9>X~mg9V?l5P zT+82w{Y{)r>Y}luvJw~)-=f{aG@jKjg)}R3M(!CXFmhhcWa=Y(u6!aQd*pM7-DQawr_W?wb^FJ3XY?Byl>prl#A?^8CHbIm8=l7gNat#toDIV?2a z40uzy%H5+7>dJ}TuLaY^8L{wuB8tQg>x@j0ht$gZV<>cOui&J~(H`NegnYx-_=H= ze?Um1i?;Mk%q>6T8IAlGy`cgemDsp#Msm_nK;HV$R(j>AlNHEHTQw{G>j^k;rc_g6 zU7<@Euic5Hg(VHhWmm2LJaYE{2+|a9at3)wIegq zxG_f!m`$Ym6m^p6eks<9|9(=$>7DF{<*Spl2MLzDVnK2)o^X$G4OHIo;C}+Hr(yq>83X@k=;=H% zB;z7!ZzAI}G4Wrq918$=!NfY;AW1nnIZ4T;6yeQsohH_rT6RuOPW#o?0pcE9Ebx#~ zy*0n5lRW8!&8@97O13eFUzQ#oUl|x=vlMy<26CvtLk#Be!Ck;jW$Y#k?hUaJiP^I{Sn=r+Rj^(E*O63mG&gVII3aQBq(Y$m@>xv`@;S zBEX@>n(WSc=0549C^POwY5P3U+qTdwTVXfP`%aNeJdLOOJz)Pc#MkZL_I@Vt`4*i~ z=JYFMtCbWTrujXDiWysTR(qBY_3*U2R}=Kp4u~$NA_yR`ey^ECbx5aIvf8=>DFC`VnYQxG6Y1*p;ZM0Y=q5rzeuycbzKQ9O}T6 zzh_I_dJNp5HlI{Yk0u2IK?@mRhm~Pi-H=DEWR4FqP@8?&+65Wx#H3SLrQYU{f-*w!fTgtY^ubo8rv5&;-{HyhI^j zcD8MLScbIUY&jHR=*>&%DN+Z|3LoFhg?05p5oo=Y}C8Fi8 zcQwPIHZ--5<%WKQ#ljB?CYM+CJfZRJo5$8|U0X7#SQ+vM=P_3BMqt$+*ClC?21?NH8xUit-0w0rNdp|vzFwiY!3qMDLk+d-aUGr-F0;gqQ zgL9m6efhR6ZM|SVgUYX-QpydK*KVlk1w`f0A>W#}sDXW?CZbzceOC(@c-pXC2^L$s_^U! zre;uBBPC-yJa)1^SRt8c2hCMPUVfKtd`GF;!)0*Gzh-lJ}SDt4k{~( z`OzDUX{6F5_N|0ctF%p&U&HS}>YIUtM%D)(9>3;_nFCeq+6Aq;kBZHmy7!u%Ez+a( z)2aK%&0k_$jYrbt0hDRm2VQS~tp)V$L-NA&u$Wx-e0|J<|AbEZqqSHhRjQ0c-Nwf$ zGob(4kh3Hrh$+d* zo>4YhI9fOd=NE-kwsxF+DPzfOvz8tMwRtzGd^V+za5lrmo_PO2Bt>Two2RSlqrZ>h@tO1q zP#7zXe`A06dvi4Q{avAy#YbWk@zQ*;Xus=yesN(*{Y9qklzg z^N|I3^0zJe5w_->+~WZ@^eMiI~3`35Ov#dfeF%a+#Bqi_nTvsNZs`*XI^l_e1$80I*q6>jM-o_ zJw8_Bk=(HUd#pCCptX77@qBx{$tYK2Y)bud7Giq7OO1XNy$vq|jKemAk4RS>*znS+Y^aK3jw(&8Jw%yklEiB-bfY#hkG9 zWv3I&3!;&$8wXSJlLQeec-8{Ua^rgU5}$`bMDnYfd+XdFLJM+0k$e4q$F@jh$OubP zCC=Jdap&?fD$oRym1hxm&o;f+@OycTc?yDFPaEme9%7PuA~(_d@_ynOz_S=+b_8H8 z1((}Ggk#wIX0h<}gH8*g3u61KLwTn(x4xRRu%d~BSI`RAP%5Ot9d8mW$WwwV8TS^J%gcAJEy4Kys#p-jhTZUwuBW{BOlc8-FfeGUf@_LkG+cZ#K;~3d90l*CP4P zqiPBgS$OzXlc8DkYNs??Nf*VnW@#K9qR17nP^o}c!`N@q=O*aZGfz}*G9Tt}%_w_J z$^|q5d@#XGKl&ZtRsHcD`%gcXY1O!-@*}Gmh(!STIOp1C<|zo+0MKzP zx#sFuefvpIT5F*gdF-H4`Koc)btH{KUL=5(R-Pxvp~X8m zn9;!nl_tohvF*seL$RvL;V`8vpvi@r7tG^DVMoaszhn_6_9NrM_dsq-qpq@4xm27( zSh^8H&7(6d6|E?MmCa*ob7Tlv3@^$Pu3{Rsuj#b^uF`z5pU&N;YC(+M1gHhxPO z%^IzyYt#3`E+b0LUbv2~t}|UzZi(OCrLLh=BlTs)p`pS|tm=CYD8QHJ#_sS&;{6LU zj<*(Y6JzU`2ZW)|lUCjU;_ZVuizXhs-SJ@e^EB+}Z|zT{+TRg@rNipTOL``CsWU%3 zX5ejZRQlE@YVn`r1t7DD)JGd&=!RW^^YnLsJddGYg9ewqtvMng0q@=GrkhRNb0FyX ztKVSB^-PlfgM^e+V?4h>^(Y%kBAwF*uC_WOBjh4TqhQcpN-JUx2 zpJ@jFv-kh|(!}O85%Y=W#{q4Yi7Vr%YL;`zDj(y36IeTyR$&59hCuwIC&gnYX zmTER25IG)>-I24FpJ%HI#m&*}DG*3v+TUrbyE$tuEN!{^ZpX&(q7x83YN=}&&FvvdQ%W4> zu;RRX{k`UPOca;z>O3&4wz%fuptG}TZZ`OGe^5?ZNq!v4g!3zMp~T&O3#cgG4TEv1!0Y1C1XwN;a)avrCf=DC5HVyQYJINNz`d{BQhn_o z5a67XJr$8`jVzR2hPNHXAt%&JwTB{Y^icocBbQ+PkJD zGS60uNC}tktUoY4B_R-GG~13SByQE>K(D=0)suWvJ&`V*($n)hc`l-eQ@?18sNTIf zIF#I(fz&rGvE|Yl&6qM36Jt$7sBH=6k7#qN=)vH9kht-Tq)p7b_}tUm-S?d0?voji zNVQ^fw@K6>kxMDH@rY^tR}+=f4kCmzoI|~{fi723#$=7-caQE6FyvOz?Gb{!aWY!V zdBsppzqLUCd;T3(A%+7bex&u3C@ac~bq&ISPe70h(^73gMJZ90s|`zUZeBiLN+~yk z^11$=iK>#|98qi_$}%dF&Wy#dOI*foYR`UEW-t2z{`GTh|64q|xB-JQj;ui@F@VZ) zyYlhlAvfgOPP~tJ(m`;iADaK5@MOy`-Npv>mQugfZ#;awmMbwjXec6yHlTEzkpH@# zGpBs$TvcHzIRTaO6#{|B_yRFwPle$!<^rNLc~nBL`t({4#X%Ob5$2S$lj|Pz>k9S*iyNwr;jz1PYgoH+=-X%KFHG4!;1p z?H+B{2@&Ni2qVXV50;Qa&k_Tvpm%ITDf{VGXN-pLjI~BtF@|iIZ##x#r0Cz4@ZENd z6-4~@;N&<_e3t!C_PF{$X1QPIjSsbX9%UT#m0ZsJ5t5$D`l8jS}19fByIzD%D4seV^V&~E8hpk42Ei6X!z+BRJys zz;!%KS8w@jDCjCFfZFkJORY*NUmgX8WRHdlmG=Io40d&$bJh+^_JDQ9)9rA8Qhzj! z=J*WW&rw(u!T5|@-~$A?2x8V@?*rA*hY~LnZ{?O-r=(9Z?{hs|Z)%7Qc2i>_F#1p* z&!l0OUEvL|WO4?|M`6Am%?kcB-=w>3j~Wa$o2O>HZ9ywTy&xYa^d3k@f=sy{E%a*$JLr+}IKz?wb({q%W_s(P%?Rhf5Od-b*T=Yl$ z3qbNCJT^a`kzlN<19tDl}u1<4J3Y-Apzd{dv_*m z{J*HO*UiF2LsizJ9aCzeqCv#ypMMdi01^J7`J zC4wGpHs0D0VL7K2lQM=uH^QNR(*i628B(PU3vS7)K03Uxeh^|-b<={=n*-q5e=W_l z)l0FZRUA&cWxaviS9f*kn@z%C`wLcIUsgkUeUI&a}j>AqQxpu zj%*)DwPmwPUlHqBX}J|`@xtNEC?#y(g)z$1k=XlqMyFJEPA7Q38ZWK7sw$omyi$*2~e!`9G{;Z&sG zv$S9Fh8vt}Qx>!|%*j|IVr#x?7oV_7JSRl76*T%hEl7IHQ6RJ-{>NHIeaa+0PsAK35~dNGu7R;z$W@Jr;`U(I7?OO0+`mQ!e;FUXe%b5|dbP8xpEBi{00dF49n zRZ@Rk32UpIQ{}i4X^;^D6Kg9JVQn>$B0%h?d2uMP+z?@34@ESUO2Ty?-p@&iXWRqL zFdJ9x?a5+2pgoR)K(RvsH(jLGeintP7!1_ZAM1B#qccIYtYwxx(_2`re##$FYm?4YiX?9h(VkS$*a^L2`XCi2 zetx9urMl5Mi*N?dmknus?UuE#iR1nii&Lh;N@+=&O%aRY$KYmMF1(^uwggYhY`QgV zk%USFI@xvbtO+GFH=|+(?&_lLWdTWx!{kKP?AI#60pIT@@NkcXz{JQUL;>^RaC^Sf z;Br+;jVmd>H&xW+dc%nFa2nm@>iirHMaGpfYl8aY>Ub-bPn?ZLs>~2FN(U8FSp|YG zd*rlnHun?>&c!;X@Tk!BdnKtZfy0ir)1usL$V+w^%?f0ks0bP6jq$*_CN8Yx?1hjFCB zW)!L$_E_|eh7GUlaDCAf`g6$l)+3*WwHTZ(d1$(~O$-7xtpyvdDG?Ose?<+g<+ilX zXxpKZqr+(um=SaaQr>g6UMC(PCK2?yA1t~fb9EkxvN{V!8M7c9V*yg*By)>~i^-j_ zEILSIz5By0Fd3*a%rrF0#mfa%i_W=1F^7*oHBZurcj4f{rFDH9pElTPAH0^!46G(c z0(*admh)($vF+SRij}E~xG}FA7#yZ4ozc)-op`h<zF`y!E=}dgi0~y%25k-4i?PB z1&}7dT{SkgZQh|klmMfqcE9NR366v2J{p!;+gAIEh6UrN*9^UY@FFB0SeDIl4)8b` zS8}URI=Veu-O&B+do>zOe3#=z0&?mclCQ+f%8EF!z03gyCbbSbgyJr}9P=5+jjP%g zDk@}lzkFE-nYFmFi@#6wua)q&EiTBMW^m_|7*+*rtRV{%%80JCI5W>un0Qi=mcZgS zaA+duj7GW@P>-gD;jq%PY>;mH*RIPMYRT+=a&c4|;vmMv?T^sbB;A25et(Ra5i-+L z>Tm-GxjU=Oy*!dk>YMRddpd7f!LIp4qO1txM`~#04=xHGAXiIM z688n=5?lY8Lkdo*c(P^+2B6fgq^L||Egi=)WAl|qcq+M=ve-0TMYn z0?GL1D;gkz20;e2pVX}?D%tD#7^jM` zRop&j4v7LqJBr6j{S#*7%;wyn6Y+tPf_1Elex_xS`Hne;#7pF*XXS6Irj)~8GSL~n z7I=*Jcl~}^h)Gtw>XenHrW=C3rw5HjH_RM(mia790rQ^RUc7HxF!DeR*s2*7EXaoiFL3JR3tPj`?DC$`YvW==} zY>S#@WqC;5Y93Rz*H@93$R#%DIBiicj$$JAW4>1KH=X^GI}5 zHdS%*gV4ytHRIB>{CwA`a&dbMOiLoG-lCH!J*0xVe&e|euvlR3(M{v1a&xFnDMr6G z-Jfg~3SCu>RnKtKpLg$eU!MfnXl}{a9k>ZRo4d;civ7#zrh9!L%aE>~{=lQo;rD`0 zzP7ttscP3UE6~)D*X{103X4|#`Xtzcdjm()v64%Kealw7{MPpGWWriQE_%4a_iPz^ zT^ViFSXUOulfUub&xKUtvW`S~LQ!-))K?5fxj*!E&~;_>lOgxHJf34s}l z0)s>)BqT&dZ?yj;Z#LUJ4{v-r^PlDIWR@t~w&*!F?lxJSVWM;lC8W5spx^@|27sWp z!XyXv(=X*5DqM&!19nE~TA2xzj^VypU7^q7Os>Xjx-ER+6N3P)1W zt&N!n4sK*;980({)g87FpiTTM>CKq&`>`e7Ik~0f>JJH|#(uDYtTf{sEfrO@8Gylb z*DR){QMG=^?1pX14JkcT|NPTsQsfhs{B?GL0xrf(;^?)gU6PhH>QrRN#zlu{KFbsRPl50Ys=sv-WG zEA;7;PWXE7uLQRK8&0R=goRr*VP9X6TOyeT@0X+!5Fej-nk=zQaD#2y0LSm{o`I>} z`=A3{Q%(ZZSRo~3-`n6}HbVDV7EYy}dg?&mLZ3$LyI1{sPphSpXSVct%4F*KWSy7+ z5)2Ysr;mUlC^BAFv$vlV@JyAO3=jpMU1ExJ0%@+?m1zW4l{w}|m^9+HHAEJ6Oemq? zjE(6@IgO-evgeN6&qLd%CIn`G&_cegQ*pdPAu$S|ssMvSL#&&>Zk#xNB0aENWK=Ng z4Q@2rT67;qQ^fL6PQ3b*s_uPk5P6oaHoikxOwfG6V7x;Rn0J$W|B!I;W=P`zb|iWT zboQ?yH!YoYoJ40m#J^gu45K~PhmwNxOjHMN`9TctP)fe9SlJVv-@RzpGhyCuxX7)* z+59ngfHJXgxU60wdu*@y_AOkZ28v3Mq9AyDPP48c<$(XQFa56{A~*y`e?3d41BZTX zqts|KQlTeDmegMG^3pfn)Hja$bQm>MXSD=$;3K^xPP~k=@rZ~o`R!stAD;-A*#3}W zX@j`2`gWkhtXZb4;o(apxK%sV#m7}yDo;BhX|U|j+yfO-#i>`oePrKL+x{}po{Xh15m)*+ge?_*oLu|HtA2spkmyDxqp8_kbp>ZA$g{bjm+Eam=Wk3Iuw z@WX3JD5lP3^zmf7joo6T{*06x>ed>ToJFw`Wk-v|eZ#c+>RDIQZ_;-oaU?|~x#Hst ze3Ye%{66`gU#MeH&=^7sHKmCAwTD>%VZ{Rs<5(!oGmE=z#b>C6MaIRcXH*jCgw#})tz#u7HawLd> z51IQ}wIr1XhkwOubTX7$l#B1GA0p=sjTVE6W21Amvdb!RrN&9ar}#$1M1EZkO!Qv9 z?#g`LB$cK^;V8JAUvZOzWDKjT^(G9e$7Ji}Z3$;T>y~}ekss$fGg|aCD9Sg;&=Fd) z9+l1nIa4SU#NqNCVr@|E;;?Pe`JHhES613BYGD~M_pWpkkLjC!&>3T5wgQ)V&#;J$iZVBWo9G`K zv&>j(=BG)h(pC)z$w%ngp@4UEY!)xoM8cK`_Q26M6NMJ~_)-hc>mm$2?Amb$0|@zN zE$2cexypkjbBSWT&-eY<2l{-%s=zb?Cl&=gZrUH6uBN@CWlPO7LzyQGhGL(KbZg-dCqoc#a!}%&@nvTzO<$)&jZcqE`R1qXNFwiZc zpSc4i6WG?u%b9cJ0Uc4m-<#Xy@Gx>4{ldZmurvCDL3EARI%Z~Oz!q5uOdxO5-QLvoHZ_-eaza>R+0e*g=BE-SUaQ~d6_HXn84`F-X0peZaGux*tJs&F*G+NT5 zkKp1Tk$!QwdCL7_$SNVFQtsSCJzGs?50gw|>ebH&Ica3^G~m$yrB~igFKr?oaXr^P z^>iF+!f^pc+AaPYelOJv=7N-Z}zQ`R0jYzOR|!- zO*Ch)&CGPIT5T3$IV-xdIdRFqC$P zw||<9d#^puzQL!dR?gpbR&Nzpaj|;r&`uX8zQl?HM7fDm1?0IrD}-+AB(B<3g$%on znpLUY_PdQWpBtpq{A9Xp>Ic6TFHj(leCw+$X^!cz*}-e7Zyw#QWtu0sopXrTq}jTW z5NI)|Gc5NcayZ+3EF_Da0GLvc;V>;j}2r72!TTCVu_IfM^LWP#2op-s51#@9SDTkHc z12b@c@Cf&^yn`#O9qmQfEtL$+RW526RBV(x=~1LXJ7KvO$Vs&JuZp5rN=YdO3)o@qL0JQ)_6M#d><#v0%*x;fP z6_}ZEu{Q;2bdB|Ozv+YUzVh@F$yKh%$hQfEs^u9dxsN8Eepc&Kac(FyPmCfOweDe4 z#F&O{_s}T;QKx@LEKcALX7P+hrj5eE5DtaSn`p(N((UlT8AgyQ`q6>%8aEbwR!}BA z(KV#KACjt)uP2&QZ}aae#V%X5f5hJazE%a@* zs;I5Y&HR3rEq#jVyIG>O^4yf~ja1q*CnTVc)`2e zYuDKOy<>YyfCz6b-3J~(8j&&3M=-i1uvDd_#kD|T`brVW8WjbXmd^yv6E{7?W0g^V z`kZ@P#{8doR?Epu}*~_Lmw?#DAb(q0q(veZ16Py;UePaJc0BmC_SZ1 zbmn{c)`-Hy-aC>HDZ4m%_0$$6;~w({u=rYb>4$F*EKXDtWS44eU05)k5(&ze&Z3EV zO27OBlGdPKYA88^ZfRe>6us}GmWd%BojSSO)N5N!x0o-ukP=dg|MV#}p+29q@9=ci zS0%dFpQwqRjO>mjs)sp#9T$f(H=AB9_M;Dfe&_F`@t%RC-~0!=_2Vpee8r4FT*t_; zjNqT%&I6zo$Lox8=SaZ~r_)DA+y?QK@c1=>pPrdGT@+eM4tVB{cGBmKV;$vwIP0Br z9EIO=U|_i@V2Q_hsk5;=G0|BvboCODHz9gl{(OyXe;Ae^8O3IRc7Yli0hb6ZWqm19 zI9R%W`*{eUkep3*FN7;ImsHf=fE6>xo8m(saKwMr=BEVBj93Pv7(m6F(fTB$vo~Yrsw||ntD5dN=)|LG-B!GJ z9{MO7E?XntA9@hdYW{7eZ!UnOSj}q76(C#oB*L`W;!hQ%zxNyNxM{^RICKGxh~n} z1Ue;$9rJoVD2nx{S>6F_p@PcR+v6Aw#oM*ehIgfI(()j`p<{#U6o z+%eV_|Ga~GNb|u{hR(xtx#mY!i~KY0mPygo4fsfYOlk1rTI9w>@+*4ZC--HkZrXT( z({Hq17m4;y-fc0#*r%G1K1Err{?!`WprKx>g#-A&_pbzR@i2t&Js>wMN&-%vGF@jr z+~R3moP8qoz%SYKG3lME*A7+>kO*;CVz`c^tWb#PIM{sQ?6OMGj*s^hIj=e*A5a@S zi}mpuupin+%lTh1-MTj!{K5g(5&<^r6l&WdC{6W~_yDu3SipR|gBNW~K0WUYYvY4? zK6lsuPN%BYuFJG&9CPfwP}>Qh(+mEfxt!1C!)093hWXZu3c<@a-!qzQWVLW_P zgDl^mR;B+8E*h_LVY0VIcsGy{1cJ+RZeWM8s9cw}U5<#xeX7%eh{5;{Gx1Jnjm0}<&c%y_GnZBV-{7#HPLxYw^+`dQ0vE$Y&_ z6^YgYRm$8{vUQ~g6ir9(4Qwc7ezXd#)HOQgE<-#cex5 zMinWQZHC|nzDZ16WzZ<;RfV1HqJp1#+W>T%{pgdFXzH9DQ9kViJ(xJu^qn;*wZkN5 zYuZPA5t%|ioE5ok2k z;hixYx$mR~LO5%toG!CfEynXm(qqTQDsu-G1ZD-nWfQkEU~qZ$e&FT&5bXs@QF8+V zV1AijXUgQS3X6`Tq5B@b$IEw3zZa^4AiGXd4|3MZV59p^_Yk%p{o8&Ef`0v2J9`G? zS<)p{llq-z#rD`o_d!zS9n}pjO#Gdqe96}+5?~ZTmFU=1ShlZxgh`=U{!#XsZe0gv=jIE5zuo9b4o#h-C1?ah%pq{o`;Q0 zoc`JvvhATswmXmU4k`mFkzeuHU#hNiH|O7D-3Prpp2Qj;N@L zF*`KIhHyW6V(YIguFVFuz2U3Gz%Pk+V2-wOc*W&|J!ak0jU8Y<_ol+!PNhStKz*05 zzGJr&`qVkcS>oKrB$5$R#^iljdsk(=QAx?+wLt~ih>-|+8mpdiP z$*%^4XvD#x->$@zBdaDOXvsif;yaDa?WD!FG|Pm<8yZBynIe&XTQ9uSQOHkE61RdYqVRV>8GJJRL!8Q zZ*>d!$bK4`5Prk>%DKd?`NOlMkq-JNwGPP#Lb9kzL zdc(Pp^t+q1I6SU~M>xe7fn7~i1Iw+kZ?Sp%<`-1$xp+(ACDXI|&rdWs@%`sL`i`7F zoZVP_#5YxuKCQo~S#%3#(_@u1Rnlg-h74($!w$cBk3()@0kaD$!Q22aE za>?8-OH8>{n^XU}W`#%Hz@?{vFTEKc)Q)aP4yDd2{@vzm6nthE=v0_6kAyKIA8eH_uFu)0$AR?&@Dz0JSc7 zQ5dZ&7<+hd!LS@%UO{*JSqJv8t-MFPx#Uivj1q$Zz1d!OpAi6{_-5F7#q(42-3<@q z+M7(qF1_e1yKM(9$VFLNS7GA)9MRIlmtN?SjG7AcO1M!#b=Bi+$4He@Iciez@~pBn z8H*ZsP<_h6|K5W4!gV5e4p_p=H}54-AZ=nnOv-qk45B(eL&e!u$%O1?n%{GJT}j-DuLOm)AAY{Dk@9m1w)^QYp)6VLFiWgk5W2{hmM1Ov1OwGjmGf{bES~MUYI*EeVeT za2(1Jn)~!Twwvz)J%o6->3LP)DteNWj1i-Xxf`WS>G8Cr5Y^lm9vw=@D61-kcT_Q&D zRkxj8WKt_!>zFE(RPcbosYkBych<_Gk;xY0CYU6_K?L4!+y*crrDQZN=inQDi5%Nq zAeV_0gdv9xYZ^j%Jp}Zr)vG9l%RVO&6M+nRWHI~*f{%!@xN5yVk9+)Ryg42#9H|il zU|g^*%lW`GofaujDzlks86_G+q?f!XlL|L(&je506eFzzWhn(SI>e-Kp;3{9$cmwW z(xE&VF4o%5ms~1RPBuTVu>f<0*}4=`|KX$LHNTRt@8iOnU(7fb&*Iy>EqQeI$#DX$ zQJTQIvkh>{T1HLe;P~o%9uoW9p6=)<5026q-_0Gz9#T@>ENm%! z{wd)x2{ZUUN<`b=7>YP(^Wq|=y@-3R!24p2@x_Nh_nh=~H~>D@irV0^8S1v^IAmU&J$ zo*(ZD>=SB<)rdUFl!58Ar@gqjr+!r%8@)58tPi;>6L$qKxpI_&W|RTPs`*VlZWU0$ zskv;6fm*$XntWdMdL~Xt?R$c+P|`0!U(8rjHWT6Gh>kuC@RhW^PSi2ZWpxul(5ucZ}7oTACN5cRSi#Sp^0=3KD4@I6lY}8 z12aPkbh`IAaq%1BYt$FtQbhQ}VT~pwYCH^K296uTAS?$XehOv!qNuxfwHA6`{X?_1 z)a>ziPaES3ITE)7LGW()$i9(%`bfNzfB`;Pd-WT@+1c>89Xy=GR>hSYfuLv^`#1)0 z0b~mA6x_Qw>-cVEQv2zK*(>XE6|t%rqlpE*9*g7x>@o64@~uO?2CH#cRorsWB^W0P z$B^@Sqzn_Y?j>qDK6z@};_QeTejABN8ya8d*xV<*vYPWjBpBEaxhq!-*-^s90Hg6n zglBFjS?sD;)VLXH_!ziU{!*Ze6)zMg@BkM@yu?$>o3|2kdXC0b9q^;!Hhyec_1tng4xRjYYy*+b}g_=SAQrb}XN~2#n!PRE zJvCXyzIMz;@Gm`Tf!ln zPU4VqwW&XttkyspcUhoJRU z6!wW|N!ShSs21iDq<1ZQE z5zsqeMD6YEpFdjeP12|X|7Qym{xgI$6#f52Sn#F)V6JKeVeQm)B3butY&x5HGCx)V&$TH_2Izgwlxv0&-l@btaBsWz-2!F_`eo%P_{V+!?ES+XvXGUG4 z?(VpUPr2NzTLCgLD-I^M9mo7&$2|nNZ6mB*i61ad*qR0aj-~;Mge+6kRy+E;Z=GE; zx@u(e9e4fB|AUwIH$CYBvgmmgq^Lk}LaM)sMXS?TBPI$5$RE}=a4Tz6Xvz4(T@QkM zPK)=yHW*iKb1iK)_UA@#<*l0k*dpW8+C>SEf}GgbSw&|ZL@d<{5xEH#E?YCh{aQA* z!7Ip#%QJUZ`vRnJ&Bk=~_-o%Rwx?E`-lIxB=vNNc`1IocT;TB{*N%DX zw{m=K6Yo4{TE$YX@%Al>Pbjiz+X@9f?QLqphOf*1pISTLn$Q1|6%u16pNAu4v+zX$ z3H2f~1Oy=6Ym1r&G+d0m?#t1=;Zmax@CAVb`YUiN(oiTg3$F`>FChEyC^>Q%#N|_F z=Jq6d(NH#uHQL!K*6L2al+SyWy_4eba!yeD-0_CG@*8bqLtrCVixMX6WU+N5YXah< zzqpq?MN_|$f8bm*=c6+MD*D}Lan^!}rSUakzM>OxY^G;Q%;@>X=3F}^mXzKJ>VPkl zA;ITjCb+Z`$hIPDbI`@>Kc;8cvop&8``DwD&uU0P!H?f>6r@YBiu6(tcgUvOW%r)M33DBl9)d6FW;*uiRdZUnABvXeij9v&d&;!&OB~&yUde`>HBx&{v-go zOO;X&uI*V~6ThPpSJcNaz{+Q((Mj_>Xz1lnSsbx%CPi%y0cL5OONUd6vT z0Apug>VdSeCG5|_z*GaN8frf-C0`5Fd_sR!)xrcD4l-20odkEjB)|^Ar zh{B(wbN;EbXpbYpnypy&dpK!9TXt0bW?6^v2;+O@k-+xUwfFATT;g*S#A-8KgkLJ$ z(Ss*_2-JavTx}YuO>V-*i`Gd)%;;v7E<(5;tl2DR>Ge)sGgGwUnZWC_xod0{0bsDU z3_1_jFFXL-7_krK|LK2?!79D}1;d}`pkhQ38$LhTonkczaFZP80d+XpTL*8%|EZhT z^MI48EziC*bb+r@o9J~8zb}+b37mgOMi*%JK)OFw)YaH8s8(+2mU~Emi zjYOpkLcLEK{JpzSOJj__YtA*TT>E9(CSAQPWI30rp#C@Q+<3PC#q6Hh1{X%M*#sj1 zLh(h+Qe-)r#xl~Pe~|4y4EWZ|axpO@3Ld?#0Y@L=x!uFRS*X0qhr-?H&sB&nT_^sG zx0D73%6(a0Zn4w|(DO$Nb{;<&(?Y9jGTsP#9V|>&771Vk;r=}|_Ozbzv z7ATO)D-trM_I4+Yu|YJ^uDS}I55YJ%# zPwB)-f>k4zP3}IKn?31Bb^sweC!nqX#suhvnjDTaLH?N;uMjZnFDBK3_sC16AHnOH z14lKA6Y}_@<3T~wzM4ZAvJD)JRidfm*(xqoY+#2Wd!6;3vK}tW@4od5&q~TBLo~VS zDfmxe?@$9@lR8OxHrkmwnOh9@s@rHrc{LQ_GfL&*aBkP}gL#j%x)oZh7H6^%;l~|j z2$RxAx|{AOZppHXy9lF9qq{Aco*n}Qb>HDa9UD&AWD!IfJW|fgxqM#!k`$z3FL*Pf zFlT~?Mrc*SXvbuY}(?$U-_qQX4zjf^A4Fzq)ea=S>=X6&d+@(e+ zXmI@!Am|e87 zz-Sc=PTtI*^p%y}61}~LbOkGB#8Bz_g~?%ze(U1#jwB(=rI#dnm_69-NCarwV>i7_ zVE(!N0QJMzTQrnV>br;4%0bF0OR#Lr;y7V$VM%Y_DW>>C7xc0zC*W)xX&MqiTI#lQLG?(_ zwt|BZ)Z5c%Qo2uD6c}TdlmFoq!3Mz3bOEiRXk$uBsy}>LB%BU;yUDv<(ZuT*bAz&AW;gm7mdF~#OB8UV4=5|u(&rnn!NLEnnjwL6zq*|8q<)dPurUn%6&Q)ynFtzs)q{sX&)E0+##z8liN}>-(suyw|_?o8~k> zw?r`b_=^BV=uc4i&l2&Z)@I^R5g#9)VK<;1{R0qJixLNyTc4x9kOSh$ zkI2<_dze7>4IsWV1VrlaFQ5DQ`31}Npex;yrv6V2;Qzld=(GQq+V<=x{2>i1N#I{A z+5zViz6OU1D!lOcER06A%G4u8_SEP?@WKVPINYydpb-@>uy_?)usR_cqiOBxvsm;6am~44R17==Z%Y z*pF>o*L^Ax&?uj(b}g!8ar)+G7$5sNaO7vM4FtGpBPLa6Mc3lMu#Vq)QlJCU^n^FT zw?6|4@yn9oQBV+nz0B17X_xUOy2q-X)*@{H`y;5OW}-P`YlhYzOq`IzXzAMW3?}fN zv>FP_YhhwvjH270WC4QRC#T@ee9D`tPftSnvr!9fq#;z?hk z$}@EP*l~zM3_8W<-6yT!l@nSC`G^dFmc&X1>-E}$Q$63e_9vG(`P+BJm&VE-CpqgN zmPa!?$e1xznB)Yu&LVcR%m50^{S7y7F(SRQ0syNO}PDr-7rp{J3?dTcQ9=fD; z^PP(uV$mz>O;@Rip_bOB3qlb^zx_j?#M$-2W#ap}52;8aQIwvZ1!A8}sShaTt>K`+ z9oS87p0UYyw%X-cGb600NuTTO+<2S9BTTJlr-M;hDHLK$xR>fdpB^m+eG0fVz9VIa zXID+g%I;MYE9l2sk7Aq>M-jDDG>kiUQ*B7x2q|2j8SG^mc>LHtbvMXUOb4e(~CGr#ziuk9!)BUTw zGCy+uOpaGhfsKU(qqK3^Qj-g#KsD7&jRCdm(7$X8CKd@ouub*=9cn0VVR7+BSx^#x zhsSF#l>brLl?OF_wBaBr8bBpc##FFC1c6k*P%sTdL`fiM1{)56ph!LlmVgkX5g`~f zRf#B2KmwtF2bT!)QEucCsf42(AtcC63@yZ<4Nl6?cgeQ3fLgFlQCg4O2%t!%0G0?Ys4YCkH(7P@C-*xr(3it}l8G9**}x z`!^--RPVcTd8f4!aJy3LOvks0#yH#q`yUMt*L4fcPaSf`vSJ;3l_m5ja>DIR3t5-9 zY0G%CE9{QkEkb^)xIliE+rOg)Q1S9$A5ypx-TVPi%MALgc9}HVfPN=GrMw;nlsX~g zD<25C;U0Th_ozauUA9n_HIq#!Fd`J2*qlrZi~6h~4k_im>ax@Q80%0m9fM}64JpHP zs??20NlV4jvO~pSFxfA}6I#FFf~eJ0Aw6ceQKxn8zF8N(cJe)Ob)=3FtxLp3s=6J$Dh28W{L4ZdZi%; zpf%eW7P!FXE)8fbeEs$0Ty7bTY!djy1Z3dl% zrrFC?gun-mr|X6%3U~bH(m4&()MhY|Y?sb^v{IlLzh4n}cAVda%6|NfzIInIoU{DaJEXDP{*-Zx@BEnUN& zWgcTZO)pH2Qxx(#fAtaIlF`n&=X%NL7mz8((I7J>eC(y@^FUnU`^5Z!wf3d}3mPfL z@VRz7>N2__rti4l!nfWL{n-O-Vr}m;PMd@Umg9?&!727>uWq+V@41|B=(tc~7Tp_j z-c`Xg&vFWOKeUEzSMekA%B@UWS$5I<69`c{PNOodd_!)@WCFbmG#i2u>0rk5zURi5 zzIO88>hywbY(gYaW8|!&Clh68Q6i#5zOU^&nCPpNMwdFKz|O;>lO@(*b{Or32;iuFDhWXNNH{h!Dd zcghhF*Xqzl@z~M&)vG?K?gl>@WPOjN^~VA_oJ~rzdB16*2o;UfIE?@aR;qIHgZ?D|hE`q9^6RS| zNb+d9xz78lw}lm543>p6gJTYxDl2%nq_r;>J>`tbXYeA`{8};Pa^3Hab*%_-dYPFy zBSbwen+x{YA;nf-eB1gZ|0+m@I6u($=v)n}a%+3R{*px)tC}TQ`H6{fMF44=OItQK zn5l(Kj2WPpSqBC!@b>@@i7Ww4wOzoS6u_VfY^A~bKsN!hOoa#nv4LRtw^f!@6*_uM zxkMb2W`F<{xIsy0CZ((vZ68-Iqoj*G{c?^@2edC|x(M9Lr~5)l$=Kp4`zAmq=~S17G>Ed{@ap;T*zUPg&TL$(9}=e%vQ2e4*|{owUYqXq zh?!oxQY#P#Z?*OtM>+0~PC_O8J*RL#>fhivVw$9SQ& z!sT~uB7>>wVIsV%pUwZ?5;eaU2{=x6aw|~)n%Ep$qWvl+`Fp<|k#l9i` zT^lahRwRM~@7I&y}F%;84G46& z*+C=Li06O}L#@p%y~ie(N$EXSnnT@@Tx;_>8-%--A#$m5)N+q(&e=TKpkXdRUlqLY zFrG*YGrQiPLKB>)_pQpwJf&r-M6ZUH&&E4Gts1uK!o$8->{mR=p(rvj8l~(UF>XNe1&uS%YW76SsyekgEQfSH z=NNw;^??j>U!4UaYM;tt2-7h(CJFnf#NdDx&2v*gA=~+;|CcUbwyy<6dR%$A5}8>b6qy^enxNNrwyLaY|+m-gppheBF!Rj4$2)0wxHW9(+woB8LxB z?1#adfecrqmo~K@na4L%`7EIcxdgg#S zV8_uGD8Zn`yB5>9dp?!|dJ#h#5#1|G9gac~}~czBLv7TiAQqgY7a@oKO$tdwKN>!pS>c@fC!l*AXL_8L`UV(X}yRc<$$PVg`M}BgHznM9dDE(W zC-|J!S(eOQoO?V@FkVqIqy)CzA;OrnS`epKRAWAV(MwVfASK|qkL+MJyK6?T^Y%KB$xLuaL@1gWx7upq!anRgAcci(JwP=sumD>LpbC$^K zH89WTe0@$4-qVmE^N*%audQ&dt4_A%%dAfhWB9Hm$ak&C9$IXOXJDzl&@(&M*(JLb z*;0fI476-F4q@`92>hkPi0p#qVr)H+6JByeBgl_S5K!eKY_1q4f&&Pe0pB4mUe=zB>a}k>&uTQ*tN#NCzcdm#D zUZL9&ohBUo@PE(YOyC_lc7pmR?^hUr`(%YDGr;im4L0_Qev?3VT|-OoS;RfSeZWNm zg^_Hf=W#gS@Oj|Z%+GktT`qc^$osjFB~|ICqyI^5!XK*jug&{lztRL1MF+#7OOwkc6W0B zK5|uyWH!hUoLv_TfSVh8R((qTt+3B$%cEG1m|s(`dP~2CZRQX7$AauO>_)D7XtGR*aYq!fnNflQQk0ZC+N^e(+M#a=(f{BN?$x^8XZIrmPNEG>SF_Yq4AG z8f9sHwJ{k9EB8!twW*ymO^iIVM?9+f7qa+3oXiRYUnBmK7d_CVw@MME}6Y$DM6UapXg593**Mu5!q2=pOyS+-%4O@p{Y$)#ynu~ zq1(mdyb6Wm)(=GX^aaH5F!_e4+xKVGWhJBUfln6yY*28>lXD!rW12^Tm3#fp7{=Ns zo*rBr6o;8v_b#8!MUrC4`kNG!`ZU2DAuogZ&kt-&eD6P0&$-eZRCM6~B$6Z38aaWt zBO09zNl@bcOb>)BLxwqMro1sr1+O6boA=6TP8?o0MW_q3thG$+Jev{Q{_Obv-sjzB zsO6v+qovjTdmPFmq}K@q$ZxuEM>X=&>G4#Y=@U4Q_XCn-uQ?@! zx#1|{7Q-_$^9&YBZCkt_7Onatp6AHJADF#6TK-DIoW#)fhj-_Z-w)H@*jgf8?WgM( zkILSZ9TuxHoT#Cy;#Pw&jKy~Jl)@UpB$bktyH<&H$A~iJzilajzAk`B@{m9=oKQ{G z0!Q20U>(D}66-xi?ziv-hP;9prE_!~R}`|feSTrI$|}3Xt=nmbzXYge^h1q(r+SHn z%tS9@y59pDm@}d}n$mh*xr;LL9rIx}FqzhdGMoWJ=v7(HhHj?wY4=%)dli`+);{1U zvx&m1Z>bd5#)Y+Lo~$E8RdpN_yfSNLW-W`O1H4Dhcy5V(kJiGBRdp*?J4S@pjY!Q0 zy)S}$J2^aao~#k2K7<}jKUs3kTHmAC>?mZgaN>gp8`f?EHEgi4*sO_>|D=kNfCW+V0E=0n- zN`%xD%h(Bq%5TP61SS%YjQPzhQ@CB2TrD%F7>C#XYivEw`}ZSV3N$oMoO1;1E+Tem zQW0BkjL1G}3`(0;quylvP)ftG+!m&)?k0?N+p!sZ&s`ia2i7oN`lcn0AGCxhh>u5g zIrGlv(B$}NfuJi^3LZ)4waB|KmY+O#1TlU!EiJ#1!2vs{dv>!tafj91-zc2(f*+dq z4p&#F2V6R>qvS&xe+KPJ)p2HS@m6qU+1HXCho1YFqT4b#A6|h8dBj{&@*3sx>WwQL zLIPd+e|A3_^F%h=sU`MZQW5?RNG?oexSa2--g zATFu=tHU}zYxx@HW=QlRp(Ni0%-w>d<2*=&*D^yp}K@r0V?uFqAcdJ`GV$9l2gLAE;AI8&)tI$IpR6iZxdrP_7xCnKI@hH z+T0{ZD609RT=@)0+717)R?-}6p{!ls95dJy?{V@8vJIUgl$-qWes=F`>}DkY@WvY; zhzGBCc9LGd$DC}q{e4%Cc5m_3Ce`7hGoIJf@T22aLhI=S8mry7h% zclhSErfDj|VAD)@dHBTw^R;>A&r4ZPPIejq%j1)ykR{VEcjAF^Zgy6;T{TGQG`d)|Vp4lCk|T+~(MO~u?0K5}9;7$)VIM(r zN1an5?!QrWAlG>^O|1}HU5;BFglk5)3d|#2M1A_jR_rc~x?W0j4Xp?_oGWVik-S)n zcals$c=Ch&)JDH7p(UiLP0^4c6IDUxKemY>54KMYf*oesO&5zIU}a+_$gSvU7dvc;tTW z$(MS+?4c{S-NLalGf{t>e15*Wcs+D`>v(j(_29vMU1b`~H?lW#1%{<@CT+0HDGlG8 zS38kIt*a@)yYoB{xc|&cV?%=67;cy?L#MDA<9w~+d)(5>^ReCvCCufTC^9a?nBa?! zAq>nbe=}iWc}Zd6{~^erv{;H~6rV(=Ji5P}W)3L^fJe7mz|J&=SL(XWmZZ@>n7*j-%o2OIMU}GXgnU-Q?RFm^>}?s zH-QxD;_KozG0t_27O1YE7&H>xi`YPXN;YGZu)>Lje|0`s9wj@378vX=gg0O{7!n}G zD~hk89DeqQlYlX-nKES`$9CMOi`{Pq9MH;R^Lv9?@dohPP+36;2UEY=BKxPrnCoJv zz|M`RecuM{wG82LZ&1#XBQ(n=E3Q*2{|?0%hh*9eIDtTK$|&s|+tSaHbuw6WOc zKpx__na(BMN^(RaeU`0O*BWyA+}k#hnNG5$12!aHX*_ulx(H<1^uKu&QVfE^xf7g8~`0|Hwxzm7#Lz0NfAM1m-&Mw6E(EC1-KIv$`8%LI|Ogq1Kul& z3RWaQ$gUvQ3_BX?2w?OI=ZX@i868aRneW==B=6x#e>v`wB)SUx3WBFCebOCxyeCiO zqGB280$w|94Swi6=Y0jOv<<5x^9}R~Bcb~5sgL7ZsOX>Re^L7Tvwtf6{SG5w+OYPC zu_V3zKp8hs`u$%u=n4({I+$4JpnErS{NUwc_m+Q0bR95!M22kG)WlTl89Me(u|+2- zCc9TFB5Y_=_gUM~Nw0Uy*O_0;3u@#|%X@(=qy!94+x1-7XA!<(YSjEa&1thqgUOwE z%uJj0u$zb3^<<6*yDhQB^VguE@&Mt97K1=G_G06(jkLpbj^`%*Rx_Zsqkq4c##vtg z2n5d!KRCl}$#6OQ5Zt@Seq619^$`&Dd1!Q8sxZrMgc{mGC~2j2VL@EJxvA7nH#xo8 z?Z&heiG6mp(IIcY+mLHCH?`>R+-T!WTRrq#R7@G$qaJH{>YU-!mu);9VvCOWdwSsO zvP~bfT24J*C~ufwX;k78$wT{}Wt~tEqo)RyYI3OT}&M?%E@h$VuaU2Q_|;2hAKP@`fH$+MQlP1ott`s9`n;Xkn@B=F!{F0jVw(fW<{GS!}VTIy+wpLpHyEQjpmhB zrB&V1VH~WD`DnTAF1PibPk;s@Ad1e*w{-xH6qI+~-x-6h3Pr6e$E$_b4RnA6 zFQb9+xO;}4R%IqTa~{JEc_K6}Qij{vre9X7Yw1QC(xMviM_y>J?>WtxZq#65U_1nN z3s=v^s^&n=a5sA(`@C@JMKmUolwDS@cD1Fjsv@l6lu|25Ms4DO=-?D~9I``vLy?3c zqqTO6X<__O+L)8bVknxRf$&6A?;E6A>V_IKy%Thmfz&K>mR;u&UHW1HGeI5)1rjRu zuQ*XoRj(#A_6ihw;^+~Cjctl*EnJ4A&_s3*4XDy~YwixQs+`4(ZU!eD#D-ce1c<-d zS^Zfjv*_sgVq8ZXB~&jW_a&yQvx_H_+qm&6l1-3M1|nW8j;0zU05dn3ury-x!*F#*84Un1_aQ41vDI53p{zhb zJ*>|&DRw|(Zsv#kaa}s$l3j!q#AO)9nSzu<+&4uB7JLwT#M?p$h-$Lqs|}DPwJ!v^ z*?K8%gcmPw&5M*7^Q*_bg^Y9LxgM{UYT{~xo|jhy(}I**b9%Bpt8K%QAfbUVL;Lr6 zZpi#@A|i%mmp9qZyZ1CHMO*-8QW-QLu&A;*+eQOR^l0vW7QA}oGfYVrRh3FyFwjI` z0@vU;NemsbfY72U25F=(EM$#`4fteMlb?f7*r6Tf99>tE0xMqm6Umoy*}R6f zI&eHoe3ybF0epezieZ+m=!=zz9}EN&GcmD$)iK_-CzlCwrwfieoH3QYJqn>rtdt_v zo(@0x0TH(*Z=yz}{cy&K5bRg>u%i}0qW|-{7a~Q}-K8{S?W8LMz*6VP&qIA;Vvi}x zQ?ujX5;ox5(gQQdsUV90(($gDWGZxo-ET)qxze4VKby`z{jQtjRYb**X45L-&QN_T z5gblG>Rj|}Zp@$cXVsKq0W*e}qPKQfXJ%IZ<`Web3J&zd&O>}R1OpEz1b&Su$Nng{ z3@-j=yd$M}QJ)4da-My_X7>0SuIzY#nUw9(dF3-T`o~^7-c#OQ1cHF#F_!X@Rd zW0}v}RdR3TG|~@Pyn1FExG%nHu0BlCW~GNjMd3PM>Is?cH>6*~WPPS4PFv@Xb#h4z zBg^>t_N@+$h4!>(&T(IYjrXPOmmD7W zH$t-g>%vGdFelH2NeCGEobHX(J@~VPiTBG1oLPE$8S2p|)xSp{*jUI)3dLPSj6u1v zH{{aWLr1yXQpf(73=|A4*<#6F1X>3r#g20^pjuw=K`a zd4!v-*wQ?yu$BA0>s!|r;<8`Swq3Y$8o(UUB`+t?!@y2*(x=)@*ZBfimhbco-iQlmzGYR({2_|yGy|c6h5sY!ek3ixV zHz$SKW{^N|0Tn52A-H>Euhz!IjohQhBm7UvU``|%Lv~AueQ`!|-c(^pMyLg%xpA(V z2cwKwQe0|nO?|!n-dyTEe#6XE%z)GokcR|R6c7&Xsn>4A?YFF-6k3l@vq_?ExN~C0 zYtoxX-4v9$bResxZ~ZlHZpT6pZ+HXq5(18QLnKV6UB@VwPMj7ZOA{e{s-*JMpIDu( z^s{6|g!cKRh5QCOuNcy*Gvt36D>p7&Acqfa6z&DHSqgB3A!t{SS?)z>>CCm&9Cl&0 z9OnSViZ=al?9NsFWpB=NzGN4Z)R<=idp~AP6x)nUIDpIeCMpGOCeGgU?y)D=D^zXW z4S8FmET^lB&^BN~mKvpvitD-uN7sIIYi>oTQ%w~AVRM;#Bj6y2!Li1VS!Rx+!Kzv5 zGO@K1u?bY4H4nkQtt`+fRw?^s#<*36gutu(StSQf4yG3s~5@djZerWGPSg$l%!xo=9lwL^0r1z!C(gHAp7>gTkkD1+oVpm<%8 z-XACu^szzhJpY-0P87SWHEH&x|3{Ye0_oukXdK&qL>-okkZwGiiF@s-#K*=?wY4*! zb$i*%T|}($f-=XawsVUH0|AXsb=P!NK1$=YPRFgbmhOC*M$l}ZPjxIW0P%!EZ}bIn z!tA~r_y4c-N9l{?pXsW$z`S|pSl?W|C@QI#IdL$bLVCj6TA22T0wS^ zTsY|HJTmrq_gH^!U@9r7gN*2~DO&#NE{DbnP!3gr+1(?v4XRD;ExVi$9oy_ zB!on8L+pWMgl~>ob!sHF6&#PRW$Q#=nx?DCmW~tKUAlWTUOtuGIbv9*8!g6oJUf~* z5#nC?{5TdU%1a#yqSWXo^E^Nn=VME&>vdU6>r{{vzne`orAe?FqNjy!lzjG~E(vBu zt$~!3l;Lr)g9h&i^YNL;)5Xx^wiPGSwKsE{Ae8q0+*TPCkZ4vAdt9E?G5lh$Zr?U9 z%kT0peZE61@l$iW-P)-Ib^asVjkcD*S0r~`b3*PQFX(ZlM=`Aq3qT^6%t)SXw6)<- zh-sbbRS@HPG&;94iOMD|_uTi5Z@-XPM1&$Z4@AFk=B%t=niA{~_$LO=9miwmBr~Qe z9poa!L{s#2c`W}-U}1`dBD1UbA%sVS%EaIb18R(iN;(U;d#CnbVVZbz^cX=l&%wq< zL4kwG+59S0w-yr=y#wpuy%O^qaLQ$;TE;i1ST<8>;EpvE>#&dIpE^)=V!qHsiRbOs zT}@GQb}Rql z%Wh{i^rq>ul$E#VEpvr%4V})af^(XrKazcf=Xd;I&Vu4ug?aG!io!KQ-jP-=LcWlX%$$d(jDJ zWm|VV|91-}#SLP|^w-3(XaGR3ok-VvQK0}S*NC8Pt~9Kl&MAOV#b=c?eUUX>BJQS! zo+RiLJzl&g%Op@;bJi*_eBBrv|A|r?x{BLslS_j(EZyE-Jh`t11fuHv5)^qjr;>ad zrq`Rc?kRQNKD_2I0OrFVK289PJ%4erwWTKSHQL zO;}Sv=3=lN{qkWjNr0>K2->>F*9*C!NBy(i)c`}#7dpq@B&;N-sv2pmEyf^_aOdWr@KDiB)_CXE z;Lg6!>9PMlZL_`pXK!nY^5i!{ghUcpZ)k)6(32Mza*|wkBn1~(gaS2QH|?a=nZ&)E zo|>-5x?_z75{HmxRJc&s z&K6agMaLZX{c`p1mTJ1MP7TKo5N-OY^y%8@qeeU`t0Ur#=;Or!+To^q`S~98uAD{B z9|n6{zlJ__NZlpyH{#ey&l+DT+AznA;O>`4yIb_g@s+OFEJjPxN(KtYe@Qf{GqKZT z?m2=Qx|%GlswE3T&NA4ZZ(El5Tytz=0y$_-`Up^dbfsEVVfvGRJp6D=8`MgUQG@)@vWON6$&@LK~J(ds=OC7PnTKMSsYkM!~FT zG@wo$AJ_QHVTezNCO>|FgTY+3Avpj$jP7`JZM`|{KVAgx@BM^adb z^9-nlNq-Z}yYx=2ZX5VQ^L#8ycAe0T*K%eiR~%)b)NMhf${?U>l2rSXg0z1AXc)eV z)Mf*FIc(fwwzd8NlB#O6sV1@#%Z9!AOJ3#qxEmOuw!~f)e_i3~`7SzY=F{ium!-&f zh_H$9EkI`Csfyi(z$Cryc@+{}3Da#SqI`2R#zMi-+QN^_4q}ItR1Yl68(JGlG1q1y ztQ-a@IOC&M&g$NN8J#>)`v3sYaNX9yTc<49-GzLQ2~EtXs#-qu2B$Qoto#ZNl~Q?Z zbxsNZZJnu~76>Vw&kQ0?iqt(phv5V%7sznBNF>g%+(P7V+%xqKrzxbN&_~S)X=?m_ zTef$T_Gi*QhR9O|-`dvW?Cj6%#Yz(3bY^&Z=*I7+HkCj|tyb5|#i-B^nO9=p`w$P}`` zY6QO7{hiEFCi39A)9=8``WL!d#;Rjciv~EjJra==+@^ewfb9FI`{D)#l`I(jxE`7U zIcTJ;ymJmOWW6gBGq772bU4FJid9)MdKRo>am&iA{<+Sy=5o*C<}F!THHC zYP=HCxE&$K2rx_Jx-Od<7Da*HR)vOz4(znD9+Z*AI=d{{RBqC!AU*8K7q95`m3Jf| zK7P60Ay3d3Zpu8!b?HT47j^t)!omD!O8gRP|Jp~dm%pcizCNJyGhQj%uqjlir6eVp zTUyeg!zp zMDX(R{{?yf7p1>H`zJjA`~APD{!__o*s8#88&xfUGe4QoAV*wEPF&-4KN_*3v)onN_+o zJ#bu63nmQQX}4~r80pW^6({Bs{R$LZ`j=hmfr?zDN4H}*S=&UC(^or-&Glwi^(rwY zk8xMvmNnfpb#4O-Lxu3G$Gdwr=klo;)K&c#5as;&#%MfFEGwf555O4HZ%^;AFx-fT z0kql%UBN-_2h)%9M$QtED8Z>trz1*o-n%OH)DJ?X>XEnSaI^0v6;-F*&w`b(Sa=*k z`9DhS)AF#QlEk-3d_5;|v|gsmP5pQr`R-(hYf*$~-iD;8eTSlsn(`o8Ge!uuOmD#S z_w$O=;PH;8pX7;OQ2Dz!9xg%O`a{1&ge@Nop+TniUfQ`T^0fOkZ6h3+cDJ;e6)_n2oqh%%?VdOH}Umq>c*F z_E(SR&x^n@i-pFxSHRKZ+0Nb74sYN4N4NF~oxlOFvqgQ=->VHmt`%u;nr=qxgQ>ZK z%O66wbyNz?a@%u7`J+DV&Cio+(L<}f5u8x5TiY}UE_?bq>5^_YK`H0m^z|@Uc)v6r z9)0T43g3LET%>q*d5HP0CuSg!2(tng)4G`|oM11f{UdWvs;_D#Q1yu0{q{F(fy6|% zj!ZliX_Ue72krF)BKME!RE{+C{S8jw-d$2L$(ebRoqQ5m`#O!61|J%@q>2CKNm|ec z(cVEt|3rd+zyBA|_@7GuRQ0h5EN?*imowpfY2d${$zF}VOIjJII$A1cetw=VRFLr{ zGs+G>Au*8#9li*!ypRJNmzHL2U_gc%{FftG4U|*Wui#{7zuM0QlA;ES`~~7pSh9;o zEYuDiyP^2860!5w&P!upfdjnh6CWW^%nEZ8U4cjeeg0c}?#Q*y5`UOkFm9ewzsz=G zZO>rG%eCpms_XF_5%R{?(uA^=LQ@)A1Zbv&sxC}crj40VL0Jf11XOSmgX%SRq&9IS zXfdBv{34jR>+t=uIC1#M_b}bl|8ffR+WT;RzPEF#yIHdFsp_g1{Y*qeYi+uPaA~Hi zKPX577gF8aJ1U@K8+~u#?pA})a1u?G8GT>$h<9Jsp!yx*Wn(7b+)()Wige37Oe)k& zT38q>>>BXUXu22Bn4@ycV6wvTD|x&i$HE3Zo_`)K2B{ns%R8@T>kfx&bLM?!`;@10Li~fu+6c?OBz&S}OXB zCe*nXn&qFKV#zKKP(Q{x=8U&Zd}Am^SOx%GAMd8}H`XfADZ*DEE|Jv}UCR*5M!ACm zC+piJ;O+01v&a*rT;Kq>wPvch)=SB7EU$|M)Y@6S@`y-eoyc$8wbOR;M!UCx5=IvK#O|KM2D&6DHT*;C12s+2uLn^j`b{0{>CR>gbL##- zZqSw1Hq&#$`)rUR>1Yow`VmtvniFTOqKZyHwD5Xe?WM;YFAK){J)fe^1Rk~N-0L;a z6kIm4QdLp=bz50;=wD+(b)c(IL^djW`T}+{3)G&PDt0%!i7pu=A*^6+)aBduI5WUr z01P>LT>en|{$*_T3$|E%$CE?n*)3Bot^FRYOdd2KZB9=04V)gal!Ft z5=4zqhAf=wh&iop+jepyiXRN6CyX>5LZv!M30DhW?B|FnZIS#Fb-MX%9JECcn&wPb zcrenbASq&)o1@s$83E7p;!iy6bT1MG`(oBf5T?_^Wa*=3SRD_Dn#zkPVw}K#W`DHC zjGs$kTv~A8VKcRa=kNleHg@NbGLj>7!bhk9g}X_Uw#VlS*_dK<3X*FDDg!kS1aUus zCToj&H`(nva75g{cQy|4Fw#DL>8Jha%v$&`0>1nbOw9~zT|kck&^9ExB#pWw#%p4pA{ulha=T5y1acVMVF(D9 z901!$4s9-Qtxr&pyVs`&mn2Zp>gtE#5b|?nY+lFhf}mc{;^Lyz*MHBEAwFD{(?r3S z%8seEKUgKzG&yS`!@*_7aKgB-hz1el*Cl>fJiz0L@;!kQF>1mJ90KJ%)v>koGK|7 zKtWG%Y~KjKuH!){4Lhm{U-%3XSd3D;(rR$Myl#<~!oN&!xbK&g@So%uFCZ&F`}c{f z>n;A6=55G-;l+OcUwN?^r6C^c*9OuKuKd8W!OH|*fWqzsi}y-Gr5gy777@TKWvtVj zS32KV(+WA*-BogyN*9o%{fd};ad5Q0Hd$U;(NUx`n2NWfa2GsfF}xV;>B9Gk@_fo3 zS;)b{fg~a6M}c;2J21jYMkNu2NSRT!=vsFXfTO#+{w?n4g%Ll=QFb^889TYMXxu$( z@kMJ`DY7Y3y}Ow{%QZXGviY;OvuvwZKc0-l`gl}wq7ew7+P zxw>!o0A`INv>JjV`)zCeGzoDRqv5*4oY${}yG%KfF)7i?7TxxGf?+9MI|(;lb?B#U z@N>H5WKcWnYlVii`U#7CF_MuDv-sve|6)|p-SZs!InR_P6y%Wq3I%N!C&;Xa}P9@ z`&I=?TjG?+KZLq`B*f9Ri-t0$_Rv8B@Pn}-FEO2nUE6LKAnmP5a7xYA_(K`-aFGWI zZ~Zv`audWJ{=Z4Vll8n89?*vfBNP?-gt}I!!T&4$f88_w-&NaCB-NJSBqb%G1RwRw z6{UxhF8zvv0y8H~X5JB1poV0QqLr0ZeD|-Ht=GeE&WM4*L3DWkDI~QiyhbTGx!Q^f z!2iIv&OBg+8a^K0z0(8+R7m<433-D9Jq2Pb1~=%d#~Y~!=*hoq*lxbX8KsSw1-XEkQ)T$2BnC{jN6%lVD4G@VS5Gfsx@E;6+)w z+9;u_GPS4q|G>j2)<1*OO9|=C&XXPr5B@Pxa%ZkD1^cAaYWE!lIyoIf3Oa0q54_Y= zou8fT(r+-M`popQxy@O~|M2+CM zuc*mRuytYIWS-wt#(fgnbT2hy74Os@qk(n}Z`_ccQ=u%~=)8Ih|uDIH>Ldn4EiIeYklv z*K|LN0g%(RSw+xCe&GM*iROGwdH9Z=Ctcmk$K%Nt_B_DJ;?L%v39r$nRzi$s_r)32 zE3@^(qqX^b(a2!D(s-F^TA3&J-4j{0f9mNTXBI$GQy83f3ygem^-}>{n4n^YYZ1fA^MVbVf<9c?442?yhpsk0$cXqf5iiC&6#X@cxl&-HItQl@u~DAfKlojuxBrR!4^5zj>BHZmSpH9g7CG?jC6QMnQ+(I~4q zG5KRef|gmepl*lnugg8lR`b#EcjHvzs&wi#9hIFy%;$jv6hxX8hRcfga0B!E$|~CY z&*r~>7vw>BP?A}ue-8Ei;86HQYp#+(7zQf2A~SZz0!qh_P17Y2S^g={4OG~D2QT5# zzMec&WhpkCs82r_%+qYNv=POaV3R&8pLkXl5S9iOo3XigtqQ3Q3fDvHi7Q>;olNsC zJA92Ov{Oj>nM^9!lnSC=*pP@*ouL5&er;W-xtDY`RP!3CK}+RwZCA-tXvfh z8^uw&Jv}NZBI_iIGAtL;6g9P=mB(p6vfNt(>-^4b+CZ$X`&O0Q5;xKb`F6W5OtF;)$>x1TiH*ED%_w=Zy8*Y(ia$j?x@n~Tv? zs2Hc6z(^;kIG2dfT<6E6KUA^))IS4ER@8)k~a9b#%?BuUohhMvL~li*Uvf4 z0)2Xyv)Y2imDJf}y(#b!`2lCiMDY>+&)#}BbT@gkGy5_g#v^IXE~omWNo*D%DXD(w zP_>p-0KdsJrZMzlBJBevYLa!YudH*W!st%*JWfN444R%jE=y?Wjg~%zxJ2JquP~$I zVDBxL;s;hV1fnQE&WMVIgS3J z?(E_OQ`}g_4enn(`Ce0Vp*s`{g@D^} zx>#N0VnpD%SiP!edio0Qiz;c3%`7Nm*`O&N22)#PRzn<2j7aKBKjDH*&K0sJ$D1SbB z?CbztR>j<_Iiz`Sr(y@(R63gkm2HSux~8rBBMVQ)2F0*c`{BEiT1m zb=EA2rTEa%UHpTBrmWcA6FeIYye${_tDrxb^nrwOCxHk*U`I)ae2Q2P#@6=}A_1I= zbiu1dORgjbcLC&xo~#b9ExIX=lP?#Dw6-N3URzB{mzLtzRyMpP*H;g4Su3hj_SkH0 z)_t>1i;}$U8nMg;iNu65imPaxTwFsbTn<+Ub0Vw`TVJTC@)*Yt6Vj#_MmabDIg53t z2Tu4j;jL~gO6`k6We2HhMl6wp-z+*!*!y|vk3BFA%*}?$sj`a_6I+c7ixf|PVZVL3 zd)3;2@TD(!znZY->;2x--SstL3-Hl}Ak4BPZamXEFOGoY`P1DN*|)e7|Ic5oEhvIo z!DQ=89u%LdKIL>#sdI0NTN@W;@CynBYL=juZxvB`*U*(?vkq%nH=|6!J;>7 z$eF*J^U{^2SvR^)=VzH|)br|h9i#iL`5a5>`67Je&i1x#l*! z-8es9a_!JiOOD5&{R39Eo_l3GVzVNvP+rN5sXVrjhncbQG_~O0z|O|{v+|;0zdYWmfn$*XAOBa(($bVj!G^0x zhEeZU&87iw@xR>@qqpd3ZSuTO&ef3-#!#Ox$$kyemZ@*Jg#-jPy7abC=mj({A#PS0 zu(*CACj~7|mfddk4Nx-D>}?ulC_gmG&kPKl7 z?x@A#sG1pUg}85WaUIt$b0Z4#Kb3HVYo0Ec=av<@&9CgwEU_F`P74=AFYjy~k{x4Y zTpUhbJv`+U&6|%;T6h=FB`bMb=FJP~qfbrwC)ScOkWZODM6E%Y3XcX#nIw-nzCi(v`_SSK2ZELsiZoAv=Qd&wW4yCw5f#TK{cZcG|o!}Cz1_Uqe z?iSohDDLj=q!0-1_N}z%+;5-voOAEXAB5iwSu(TcoX<1Hc*c}@(N=AHFE(^jTjMk2 zEa_Xtaw15mpE-K;b>X7(1szDuFt0nRG>wxyk*l9Cj#}-Rwnvzql_r~RS$(m1SiO)( z>m1vq7})u;4|Fo@)Q-rW7s3NGQNg||O_WTVAAtldJ$tN4crV|PKb~%9)ObkJ70K;j z&Ec{Bmn)|qM3pF1yG~Kicz#0DpF{dj21AvH`i>@k5VrrMj;jXI1k=}JCC+oZwQuBq zEvLFG=1j^#d(XsgP%2QMbj$O-dfD6Y+ECEa+R4Q@sZdm*u+z=ioUb;%0wyb7o;mR} z@3i@22*Hz*AEk>Ltn;O|7jPYA4vRPC@|j`Tj1!f}s83n<6Y)YH4II*qoQXFKf$cu?;knx}cp3Z5Gtu(E0Y zMb?&4?s$bsXu8eOzNV2Y9!Eikvlk7NWPCV^nu419_RauDbur)AoTF1R7Cw5Gxy5Qd z9IuUbTI~qobKZi8QusBWPALR>)O&qeRGRGP_nZ2N!HdqH+)`MXnPH9y`L7S26pTL; z7Wf5KP?P_r_oUuO{ZSCxDF+6@r-+?_)F|(u;rV~SyTN3g_IYS9@(S}83#i`kfk|FY zj+2Xv<#PO&(t<2nl|fEU4mYTM+~xypTr`00xAFrQSbqPh{J7rw4RH$nQSmDe`#VMV zzvA)!{(=7o<@fK$TcVZJ(Amg7=7>#}UcK?q@Ga|{v?*!6bmqGGV!wZJtaU`jU9S6tn!@6!oTb(93abc} z)A?L#U~n&4nVs42bBRFsT6g!5uT>a;y0K?E5vA6k~{A|bs9FvUt55ttv>{{)0j!E9nTKvS=3B|>bACx4igxF zt1;Y#glaRzkR@!l3G(7rTldE2wRuuAmgwQop5_&HJd4FEqj2l3^9UO~kc8a~jT;Cu z>(2{EQ*Y~)vJF^Hb(DH@t_48yltxWMo3A^W^<74cq=-p#&L%eUd&A~@A`(<6#$G#G zPy6%@;o)JJgvfxHtViw0!+%&Vog_EG<3`!j?4+mbBB^){cOt6%O9YwKE1Y%(EIobj zbz>y)8W1&0Uc(B?VRji7Prb+X(N8c+e1j96 zl`9S*=PC8Rk8V-ZZimUFFM?&AYH@tXf)4j9l=5GjQrFekUX86@Tz4?XXGJ*i7!jG6dis9!J)a8h~L3eefiycJb_;l&{i_vZF6Sjav%+L$Zg z_uRtpIJrT!Gu{>HI~mwh+!)zSY0~=OGxEh{BjdfiwW4=UxkRpf2R-*A)Cq$YHa6Q9 z%XR&@APM-&QynR<6=6245pi@mkg%4f7dfKa^z7T9O^%!>Rpl+GvG`*fzwpsF zctb(l@7@48-A@ZMr)zOmJ2jc0DFQA7oz41wk)3s8RzqkN@Kn66j^*dBQxrcz~n z5)5q>gT~|D%z5+#YQ|(FWeEt9iUP3Jr(GUh`@zT*=_sq2c<()8UGV7-=q%qnci&zO zK6c%hiX4*9pmSMtQD3g0$2#^YiGnLZHQ1BZD<&_!zxPnWr3vPrxA1BDD~_4pv4u|; zOs;c4ccw0poIdkTmPlf!glC^W}v zK(wQqXzH^_#npnSq-Zb{<{wlc5T2>N;`=VPges(n zd7!%opK!vy7?j(tDChYF82NC{agwu-A7ThD_P)^y(V~_evu8p%_4<$03lPSGR05u= z$|j~VUP&J^^b4!c?mcYHo4j>C|4cb+>hxOj%1Am4YUDD4OC!CoR55V3@n=MLNt_!EhxDFZ3yqiI~YTDUuksT~Ia#=J?=2$AiA!ZJki10O}lRM9;Pz2tpJ zQXz*@A}+ZrTF%Wm``Ipi4d%;=ZcEyK>Y}h4QPO(7pRzMfSE8L&$RhWA25659TyG3N zuRgWY%J0Td;x2fp88>Tj*WRlmT_WVzAng>qI8%k`13~F6|n`KxW1e7Ww&6n$j zQ6)?@AQLHVa-#=uhy66frM zswTm7Ul={LZi+fwI29HV73joaOPJtn^K}Jv!iXy98y#2gfNZUp6^e3V9;7BjT@8GC zY-Mg#90y+2ir5}~`hKA$9~vhk=Pm!QQY!{sl6N2HGqTlMHjR8z_%wb_bf|nKpBNiS zl9HFy;9vw<7Ze_(ga0b>(*A&-G+)h)>VHj=>fww`F?XMg38`ENl59WS?TE;)s)G>x zDh_E%E0^!LDgN_OO{POHMvq{V7r$6@PsfM7bd0Wl&0B)@(SsBu#c5W>p#`UuNFu1T z+xoO^>&?7Hm~ZD!j|Iw}BzRK^82<33dafUZsCy+Lolr`rC2AE2%P?~@O|aQ+Am#Hx zi=94A!zc3s#p*UsbajjrIXK!^JS^Bps3?@3j*+&UZbm;aT@){8X09rxid@Tyfu-%Z zg^^+4xcFEt{)!gg^(MM#W&0z&VhnPm8ORanEAC%wPg`;DDyT&3&Nlp1b3sIKS`Bx2 z8=0F&6o5(-iA35Ui7topB(;VI84-GNMPu3V3Jz`XViKXsZ!tgWC6+z~QEEIPOZvIk z-Yc$hA#kxaFn^0z|1i{s+M83h9icZ}u{rn!49>>Ff(oe)eKcfrjQL!Jo67W`Tupp(z`OzT38|3WaQPRBCV5RlY zY^C-d`}D~7olyysM{QM!a!*M|rDLfnCJHo$D)A2|{qDbHcttIDuh1{$;x0u*1sOrP zj=lTT!ue_o27!r9=FH291YE!HGv)hgfVS0HBGvRo*IHHI)|TTXxB1G&cMKAltD%o? zt=jV|J=ObbV>*9)Zx+-!UK~@R1G_s~4Na)#`&A)^+9SQ$i~}U6t-7)%INpnNq`qQK z9N_R|C~|Jk`;RfV{yO%ayG2cy@5{$htj1BtR$N5a+F?X@J%iD+AbDSIpX(Qe)+PaV zxLTZEm;UDg3RNH-TB7xBj{sKcf0Ty6)&5T<$@ah1ko=v;|M!S>$?AE=pZd}O&21b0 z4KjwizC~n}@d`Myq{bdEQ0h@Q(D6;*J1R;|@g^f5AaJ;m%L|;GFV+<)fH9Mb;r$39 z93Veni|fE%lUF%XycL+SYNY*<1T8e##1P`tsv8tmzR7J0GGW!QqQD6AtUQ!{e~ygJ zsTBJGg#K^qFBZSAQ3--o(^MAaHTGb*KskxB)y3xnrNX5Fd7vl+xCGIxbh;Y$m3K=w zNRz}dT(MK{-EZ38fD;G@SPF4;QST(~1(n2FiI^e$Z1vzf9w8|;hvI(Qj;-TO&E8(( zphivQX?~OW8NxTUktMl>g%YDDUNlUC(Nvc)82EVmX#!e6rAgRP89&MKnA^(B)c_Bm z5`}cr$SfmUr<$`S?+w$+9U;qKT@t+<#1Wz5I86kHT^wyq%(TD0J!v*Ey5~ykpnq0c z8})UxlbPR>R)72F`nq*?1R-uBwJ|)q#aE&u_BN3`!IcTTP?lFNj3q&h9UdPeeg2f6 zVH-_V3Re$;O%;p1Yp^r79tG4!>5A~N!tjqvvvT7pu=Sr^YWyrOHp>{LD%gDKet=(8i;Raj?OzeNSZJT9slc$qo^Xz;|MXg?olEv z=^4(d!fwv#g?s~wE+SqAD#5OaBgs|REQfqhD=)e3vRrNqm=t1(3&}=Wj#-a*wA8Yk z6sYCa{l8iNPflw0HE#~rauxFFC{K>+I@!f8!CVKTZP_p5g$z;m1LC!VstXiY#jPKa zsFmuhTTA~_3t%{#<;PI|ZSPU0$S%b4jqMHvIFLn zr`#e*u%tv$v)yLR!2CeoW)UToxV*fmDAn~xjp%S8xYLS5k@&TGvUM~@5OYWr_3307 zVFkH5+|NvgyLbiPVTO;X`?-reQ3HkgWQEP7`2CttQr$Q2avIFkjj9R`)a28%3Qo00 zXJNX6kcRSCw&;Xb*rR?W<(9LmSKs8;bd9OuW~L{KI-;F)#+yx})%E6rSB{fF zQ~B)s%U-Nq2*J-ecH2`Ze|yJ#j7{9s+W={A&FRZY8=vjKZPGRBR}{}bydmak%pREq zkxwp7{$O!6Ma}YMtagKicKBR(0i2imRd)!Mi`uc~1d52Ku8sm*>1I*ov`yOTNWaNF zF8QjkKcdiQJ2+$e-f}SVMby`Kx$u%1vlomVOsQ*h4aqcOS%X)PFJ*uJ}9K^J* zCws?eZNr4}mWCM)3F+UU8aB8QS^$1_zTVI;Q4wyk7NXQd@(-HJ%W(-e$bxQ;Xn+gc z`+8o){}qGgiD$wD&U2++Q}AYSZnE$tXylVEnYrRRCXL_u4^`*S3DL2OZY8$YEPZ6J zZ-zFG&G=;V>KXk^2qU_MPISlz0hATg#N4?rkh#Wgy zd4TM~%*6XFGi{Mb2asMM3l#-}`+ERhqmuhTng8;yd_Uy2*VnIU2%qh^OxG5NeykiIjSL zu5-U;(?~B#QqRdHeRqxrrrwXqxh}0-q7SFXC77AvQZm2EkyENT8Q^QUncH7Ion|r3 zsEk|To}-Lb+I?N>zwDbV97YuJb0P;jGS!Ud9WN4dxd~|Xg$2j>s^?=W2POzw8E0C3Opx6E2C#t`; zcGfjDDql@<#r9^lTF}! zRZ!tRt|VMX^As9$70JJ^Q8HH>sYmt3?#O|C7=$# zJkZ9Vc!$7~^A<`~bu>WWU0{mPf^sKy+$gmaeM>_f%EJn7M1reRuI zkWUW@4ec!90Um@jXd26bG-C?|4wnS=q(Jw)qRjMSw`XN8r?(z@0&%{7{313++qqZq z2{mt@2GF5t|IpiiWCNfh0M|pSIsO>?CDGmb6|pG(@?rUV`|pqZ-`k%=ltLM^va*a# zO%0cTBc?Uu1htEci#zKEExW_zEvTcVtE#Fr@gntrH;29hlHBBE<`)=9q7TlA4LyB* zm6eq*0z`kE)qKwxsOgG~h!C;`$_FK>-lHMO9|%Q_W9_m5=YJ@2KMtYqA?&-T(EhdDRrP$pL%-T=*X`ruv2lrrKq2Wwy1tBJOlcK?g|;JNdnf@0%t;wzG!?QN1qd~pppp2jqS z5>(Itu8b%w)4p$}&dfXD(Z5*hY3;+R5&Lxho@vn&vPpI$WX7Vcnqv26d`g6pkH8`y zZfX(=#kN|qaynNNNE=SRdKdn4duwfNX1#&=)a3rd&IYF^aAhgcHhfxCJaXqj7sW zA2-kQ4^6fx7Tfu|-ZMlRKPJm-cp`xiTF7X5dD++3moxSS9-cTLZ#iW4X{%#|p8>+& z`xA=~ug%GsWasd!T}(@t2i67KMMblWhn@TWAPzZbxYQ`|h9~9M;<6cZV9%4U#>%Nn z@jffJ27kW^%@#6bsC8Vv!l~HZPyprYC_ybL=!8``utF}FFi;?hkKZi8Et40ht9-ZU z6a6YEwuUN+^O|h>`cTPyBO4N}$1$C4u_rruva0dVaA>XA z`o!~BCT32jxoHmjrhi6MN8%s9#*Vf#6pXRGg>m>W6V#mfiTzlk-cfbLk+(fxcL(sX z&;in#t$@y{x=dM_5^Eh20o`$H3*Cq&;rAI9CHb4(N)NtHe02W6gHfn2P(SzJ@6W<%hts#MTF6S9 zmoX+-%Ce(}2| z*_#&Sw_}C}tB3baQsDdrCWl(H{^ORY4It8G4o($&sq1qH?`t5v?BUs)zN{vTcGf=` zee2<#p-!_XdihPXL%o&)>eSOYbPsLx#aB3ODpO!!V#+EgU}0h1W+9+@1575@ zGzsNvjev|$UkjRb>d71HbE>DLbif3PomR7P~+wn?BO|3I1K@|1NhE;3`#%P3eX+7bR|=zqJ3h2eSH2n zTUo5tnoz0uj;hP;&x9dnGaSIbQ93X>I?2|AnRd1J<-8P&2cF=B(PEICdij86c5N20 z?ks`S)zxKUSx9*uj6Z&Sg`LdnXgXi-3^d***Hb+I>wa4=&rL`#Z|Icx{5_2astQG~ z546A_LAIg-Rm+kGLZ|Q7o={8K&Bm?<+E^REVvwzmZ002#pK@uR|8|*Fo%@+x#M-DP zw7<1F8Ga4xsH(_UUqH!ykcM8uVek^n{i>@eu0hAfAyd&d%rN}?j#7q|nXtz_&$;9i zJ>I+iTobeHkQVb{Cah>Uv0sAVYhh|}HEA5PluPp!VB#*N0vf;{i`(1VfG$MPY=DF! zLC~W*IeGr!^meXe|EoffEk$Z%68W10c5iy^1qYL~#xDZ;IvyL2FK-}Ym4L-b+MyCGwxq50sbCW5F8v*um$)m+TF0oY!3nEH zy%0$pM#tuK#>w(4Od?q2qwumiY+awYOrwzlW)1^2UG;;d1tV&Ny}tVl1j6vrvZ5;N zo|Um_3rS;YzUg*R>zEY?SQdqF1i?pne7imK^VcFahdA|=U&|dA_2fFNlY}JpoF_MC zWc4il%2gCPJ3#TT4672fEX|S^s{7xWwwpu|xHWKl*$3jLx^AilHy$>+1eQSC^6Gqq z^ABr23qS4M5zf=*zvug9?a+g3S7C&>(ps{&V4RRN3>BJwC{ly5o$JA6h^zvYz>3u+ zZeKQq=ySAQx` z8iUX~z03ZCv%H7eT^G=a;&l5L>R56gS*GZ<1P4$$-fA?BjvJAxVpCz+{W z=JUq#l<2`MmgM5Kn-r(#)u_v2iN2ZfSw80!UaGyzT$!3a!YXJmx+b*LMcvGb^x^5I zf#amF^&CMhw?x6K>OF#;?GSXe{h7vV0e%0-pJDhCpyM6$A6d#4;^KZEn4ri&=Y~W&?CjscVH-Mb`$up{2Kyb1 zGTW)6x#B;52cUmD)87NrG=m>KtC6{9<66m6+rph# zsdH<=>ESWuO%?5QVWxl`3ITwR{o#f)CwHV~Z&9Z!61pC%K5lD?py5s0^yRFp9Pog61sJ z2azr$5INFS3!A)bonvcn3zHAVcj1D-k@mun1@C4_qIIqpF_ngvYtvfG)UdGHa-M~k z#Yi7Nt{!t^1ODrW1c2FFS^1rVJ*r(}+>Xw`6QPN|0@(ZQ_S$BlBxCcV?cMoax$n~1 zqD9Ni@LOr0Zm(?3Em#d*;S9P_P@rtTrDlGe{E~-3v68Y)fMO!7;*X@w7*P>+pOO*Z z>0Ya=ycPz8Zre2WF2`H9B0o2s04KE5v$caqBA&3hq+}|TAkD4}0@52YEr6UA(z9hr z5%lk$cW&6z?Ic|taZs_+A&-ktA#tMP5@N2|G6>@m7d@iO&D(gqq9=fU3iradr1M6) z<~mw)Z{Mb>XLv}&3|_3~L_t{P1w0OBD3vN$;9m7o+e}1{jZbT26YH0Ca;hW4!enqP z^w<P`16ONzE!sI$Mf+SM^!<%Qv;hCD2SSB^{azJg@X2NDJ z>N8+Ws3!Ul6cSl|#X?tF@>0aBFYrOXu-CSB7Jbv0f(fA8{S`wMS z&HQM*nC|N`UWuRTgYX;^0pBcgd+XP_A$`}j*~R5U-Smo!wvWfpBm7TO_udDHXh&Y~X8AW|}L!%Z1)N<2RF9qKhqPj}=?B*^@(6C-!A>TxF zLF?q_(QPpRL~J1C+B;}frpO2^M0)FxN<}OmKB!dkY6LB>M1pt-I$yU%%F=jvwYo%b zIhaB911xWr;MG*-Z%>Mre)h&z8p({4=xB9g$KIF?%_Y~!HN{m{Mw07la_>wwRN1Dk zx}_*NT-ojqab;}D5nI5H>CCO}$%!zpYlL2756AR&YqLx`+-*pYVYhWhPm*Lg(1lNf zK1Z+p$Lde8_8ekXBUV)x6*+>-#Z>M!`_^`G4Ax%&cEe)9IawlB%PXT+H3<5dr=`w) zmhB~HUN8q}pvXgQKtOTP8in!M_f$i_meYVS@B|}oqTY~LJFbAO=4H0p2hW|XfyUE^ zd#>z0UZGoZlMgQV<5y?VnJ`%ul)#zeF`F(w%rs>HX3C&BSf9!j=mlf``P_eY# zVnCUxlfZz`@#%>?b0^rW1y^gr>G;&fJ)E?u`wb^!g7Edbm5&dc6lo|Xx>{u4fo(cl z)=lKWvW5=p#3!N)wr_7uJ6o~(2$Ck6yWguNxHomVi0{3PbWLgzo*Ct1Voy)o&hA&A z7j>FJ6>{Pi&_l#Mw0>V*$>sM+%$}-i7u0Do=Hb9K9K1dQ3%DDJ$Be0J>7{a=^0>u& z%PezmuMaNhU$SngHN&rE!7d8aCuar~-!0r;GA$7;3N4hd!Y*9iU{*4LKy1d0dip-^ ztf8(5v5A184~1sSsU*(`eNGx5!c7-;0?|kc!F*0{R31^k=S9t5mH>4(PM)zEiQ(iM zRhuQ5s|`yvN$6!s{R|hO(Vo2yF5x-p!Bpquygxj=e}-!Y^yypOaWOp$u@A;A8+mI9 zv~|Rm^q2hcVJDRxMQH3K4Z20o0!&>o=|s{Falf9?Uzo~|rYB7+XkOu;D<^Q8e?Tz* zx}u`n|9$=Y4Q2ejedzTgWc_<-X=zhang{6opGctWgSD}->SPr`3IZ9WuAHx`t(|DX zwuycep8)1L)6>&{c@FfmT1{PHU!Sauj0|9tgI>o!Jma-9)y2ioPnFU)sY$rhlGS%kcgw-bv`~{ z`6n=fjg1X3#H+?lEYQ#s^g7qG3%Z#o96Tso-)+dxAinhGcjLfEult|s3jp50nuuaQ zrIuCg;klPXY$l%GaYNeZ!1>B(V{kZauuMmiFewqD!b(r6g-H1<0h91WR zcsUV0YCv6(urfJ&WK1-_88d&Z%B%uG%$#7UTNFqFKfq%!-Lbk8R~44Sw1FtQ17AQr zrFp!joDQ`;t3S~S zA+8F@9-N*yIJ!jDx?;rq1iA%Kj!N&UNEF6-$bc z$oov0voBv)b?YDK=Toip_A)X+S&^F`&CC#c?SZv{X8aQMXMPxj&E=b$8e*ARc@!ZXKN($6)Xg&_Na0MaUT<+)E)Afg@ zgL5}|9bD&)IE)*lQ7%^&^CiS0rkM8JDh3c%?`Mvjoeo`B(Sa&!Yz^$+^K;Uc;Hk3U;{R#xavc71A}ECkFK_z zzZk4xx}v-6?TUYrBzQCP9ry6oyrRG-b8B5^E1fxa8Y+XpiloEltr_h-B&%Kzs};hT zc?NhnRNA|g;)Ls3DYZ;@D@{5)NHlNTUGSdWN}SJx5m$&#tVRrA3VV^S%B<217Jg?P z=r2~}0wISA;xR<}3l_dX2-Go-GsDS6S| z+`~fT;bpii17hLYSR1?wm+tSmi}5Ac&%eY9hh>BY#Jf|*0ClbEq#C?cpwj+!K?!yn zxHf;YMl7{MDHD%}9Y4Gkc!E=7_V)IG+wP0!Fxv#|23`;l#HFOXeEISw9~j_e;CaBe z{zz@_OLAy$r9M+pV{Dvk|3!^@0hq45)F!k1Twa-LQoL-V-r?dwNIZYtxq!kc$|R|%{@gb8$4Lf3s%x7(lcus@aaoor)zK6{qz|&&pf7=9BkygP1>J5`<$$&emHrp z+-%rL@B}ucPK``b>*;+-vk;wdQ8k>0lrk)rsIpaz*Dfk>W`s$sLK%>xdJ%wR=GOe5dvgwuEX{@wBz*c#|FK1P^759{=d72V3 zqf0|C@vIzequgonjnl6t5ZV+7t)4lX`Sg_@n6=&? zEy{sVrfeM-j_K?Wd-gor7YKcTzLJ&yl=c_x8KF2b*Ll6?^lu(>;mUMJLnMt&Eu{HN zI-{L{hbH{UTUIB$I@uRbCc6sswslOkLV%%4wMjvxjvF5G1)jXi)4($D_+iMR^OZqK zIx8%KwI28OJLirq)kk*@oQ*SlRE)~Rt3Zk$Ez)cE zXQE$dK318l2FCMJ;o$0et2q0@drsH1l0Ssh`3-oXE)XF&GC$}%J116= zcs0}%{j>Qq=WI$P$#hK!WI<7b%5rtKWV-qIvv7gup>GH@kLntGu|VPB>XwnMXLE>1 zX9Y3$s7AP8U5avFK_NYk+H?EOTy7Bi&oP~fpBE?Nx$6RWZa-f$Id3nX$6BPT#6(>- zBo@k4kZlC;yH+U~wUa&sU$dLEN10^b0QE8^3Nl1>b(>8Jx&c;;X&IwG?rgLIqN1Sd zYBL#|8++xa8)d+AE2K$QT6hx;eAC3PWZc_7#;aJrWc6;VnUKr)=)UH9pEEsXa~2qI zPwr1qP#;#h*pKpO%RQyKGPEE%>^x43X&=*)ryb)JDxP}MV=0_wyNIYqs!z0>Q@FBo zS!D7>gBxER>YNopn4W99CN&y<@uv|HO+bydZa^PT*Rt7xLRH^cFSE@|&x(f_yqU}K z?bmMb6lv=dK9K4ka+YPBJk4h`Tqu24x3T!GNL7ch+G_c%)KFZrK}rVyv0RcbuxjnO zf828VGE`+Xsa0i34R}0kjKUP?VlOUBKl>+nPqVi?f4G5Omr?+ClA@yEu&|n{s^ZbW zI3@I|fA;-1vqBb8y6i1guz}2H#zm z=h~W81+}jP2V>s5cQ0KLf{m6{KagdJHZ?Yew6D}dyT*>M0yE5NaamH^`= zO3KVIyP2Xc)S}u1ASAd_DTvMtvp|wU%5cN)oa;|oE+^H>Ta4^yzGdjNfpLB zF8zyp7G1&xn#7GQw}50J4v0s>YEfL z`1$!C?)nZ#i>lu2ogI{U&(G=3)!)CWQ85nQ^l&l2tE6 zV|Pcm$db;~B<2Q1X10x<`VS@Zi_l!Sy2jQz9g$XSwH#vIK)ujUn8L7dLc>ZB*?g_i z$7`>lFuazQHZKD!vj@Z|odp$HQBi3;-A>HXVY;RUpW`h=Z+xIOHjXLDFe$tDv~hIQ zJ@Ve1hnu?}wkUJH@Z%2%vt8QW9L4nDt{2dJIpE;DHtq(G zSm6(*SH~C`Dkum#XLsc$Vqmjb z;)Sxf#M}kIfGe5ZS0iuUaB~A2L+t-I)?i%>#jCQ6O>m@Z#_89kce-EJl%aQ%rall# z#LprjOlX=u_(BinB-6gIs3j>X{xmrR0_oBsaJ3uTnLYR92yykXwzxv=)D**~1!o%A zWQ+w_Hv9HQ@!8>TY)8O-0~|(rsM5wH0rAe6?rL|OJDTHXIxD83E<0=8Is2KBW~Y@u z*H$N_C0+PV!!F4}J?I>*SY8=ipP+-C5ReL>9)He0vgeUDjsY zDkpiI$QeAom#jn|PU2D>&M-W)=bZ%hR3&S4xz)^9lv3=9S66Ku+~*eBU4Zo+#I3_- z{TrvS^A{?tLlYXk^VG(w!}Jfy)bF1y{^b0)^vQOIs26r6P{=%CcyL$%4Kl8DdK16W zLJ=ydIQVNMJW$pUy_^2Yjj*%Hp0^WwHqT?J=TiYa1BKyQ)zJcYOGAzM8YUI$mfoIb za_FH}(gBn&vbQ}G5jdTQTw1r`t1FP>^J1Hox$eU~KXII)f1c_g;C68FX7Eu(N7Y37 zH@Q(f)5dzd-g2r)xXWiMv>82@`!#{~aF8Hw{^o>GLLd0`FvyBKkM5Hwhz8fk&_u>3sK4)5vl37B%g;A;SGCOdPR()H#YrKG zA#HluRpcGNVz@RRPyDCrGxA05pSY`XnUJZ z=-eq{-F2=zaNN=|KiSz7pbRxK6n2EYG#F4*O%+?~L-aB(V&a`T4Q_^~%f$BqXO!{b zCV!Ws9;s%21u>xAbLX7_^TXjaE$7pThL_kb^7Dla0C-jgrV(%P@aHCl1S$Yz(p6=a zCAGMkZn8py=Zcm%VW#2ig5Q9|pP+!?dN3y+S8>r6bp{vwI>BTImI@%>A~Z%2#IT_oUbu~hF3hllg)m_j~C_heD>K~WnH($&xS zg*^rzo_y=wrYhWFkGa5Ouao|1P~3HqoYl>d<*f)KIlK>j>wo$o*mlwJ&0cfqe}W5u zcm7x6lmERa=0OpPh!dmnYQSm0{tz9zP)zKohtmYaE{>$zW%1Gl{6}V!6 z7&$}xI;KGvI7}iYp4d745NdgC-RKsDWTFLLn+@>DsRnsIWl2$0C(ppd$VETnP)HV=j0X>o*SRA*5NSrgGQVrUxsQr(A5=e7@wZ>UoSM7(Q44r0uYaTE{5gyz0G3Zly{XW6Set_>s z&E3-*9M7x+;3S0s-w@>P_`-Di{H$wR$C)&+rwS}LL}xjBlx;T-7AVszS8VV5QCi-9 zD1GV-AE9wx9`oYBUN&D2+7bZ^`jM>KZ|s^q#oyki)aE{V zq&Wucf@ef?tFsqJ#;s4!dAPS}+}^&E!~tH|X9|_PSXvpDky2JsScJpotP?qvyxCaW zV;3&mFIrSgxH9n+cGCKl?OTc;vioinCt?JgeTnQfyT((SsYHA)c?h2Vuxa@Sm}|@z zMj-U^wdYGa5=@8xg#dYDecZ4Z?bmx&Cp!Ysk7aSNAT|B~`{1%W*pE02dB}`OWJ;eE zI8olL68f^~`+T9Rnl9%lAzP1>sHmtiKfmCNH-}Ji#q#P3J8wz@X{_Sr=z;pSZhS(6 z7YCQo;;sb88flJi$yR3Pf#yl%#bCgk16|dqM!l$LOU!kS+`cju5DYVlijEvn0*3x} z5?AdjOU*HWy4gg?ox!C2q8|7YA=uAE%^531>E|)QBipsbHH>SgF`C+wSC@v$Ttb*{ z>>9(D6t^dOPxs}3IpGuHvr^MILALs0-&MV4_cU%0mQa4mIelGX97Uwylt4y>zrVjk ztkh+yeR+}Dbd^ptt@Va=Nk8=>q`x;P#64{yBinm9Bh5?zB+P>t_!tTr$KMM zwK4`6G>gx6XU8kL2=D6wP`d=!@v^>4R(Fw%wtBLlfEHdxClo90p|sDd|N3wQ3+g!}q!3pcj57%&@FOp9UsSGBXF0L-(QAB8+CCrQ z7{{mTyk2QFj9(jPUB~s@L(PwXB8MeBZ?@d`$mI%df}OH#G?V`t$hW_cw8q9pABu|J z9sSJ6ow&0Iw?W)2ZY1$}THJsR`H-cmn(7_lih4IYnL{&gM-^qxqm6t-E7u(kVtT8R ze%R(^2YUnpJ?&Y2(|rwHW4g|LYO56!uBXV!-%ghpk9<@+=6~*IW0Pt%siPlm@FMC3 zgms{Y<-DOJ%6gtu6@$fQia>XIrh8$aTb*rra1ST!TQR@n8^Y&toK_4`3$SO$QIr%y z{9ErcR6kmpuz-zp-S7K_R>U@3UMf6RFm(`ZgE$jEsx6{b(3f@XM)DsemKx5+*xTG6 zlqYLYmKL2Gr5)r^FPc0{_P>9f+^4T!OU+O>(R;=rpO=l zr?2>m{Ny!D-S!(dGdo1vq=3?t^1A%Am4g|2$5^Hm4x`m73<~A4-Je+zw|h$V zRvHpdvR!OLG4ioSd~F0~k$^!f^fY#%-ej0jJTwJnH*ngDpUgbsbb87L?nU*)AE$Cu zMY>D`WXmWR1I8a8IJxnnXyzJODOcD}?uVY+?{7gMkW>Yss9(OY6!6#k8BZtU?P0}VWx5gMvxnYvh#^;Npql9U7a~c*2)qpt%YI6-Q$g60EED~ zCchAISrw^pV|BYPnq$&5ZDs1d+2{q*w9nmNY{*|v(W*One`heE8U&KGK*-Zd1xPc< zI6}#0$_-jKy3FcRC=tP>k(5HWBl&R-CYMjE19z|D0G?l>)79OCy!F}P%yRGlp>%}I zo}6nW)kXC$Vq$o$zzip4@z-Zkt^wvX62<7+Z>J7!deZTW@KIM(zpOh3l*gH?`-}s? z*OH+?Q3ohbY06q7|6L(Y~>FRIKQh{|$xoTlM;PYRUZjH)maPYHDf@4xD=cUh>Bi z^ll66>;*_I%)vuv>3{CF5cg}h1;60c+U;%Ybj1&oKMH2&)J#otva_@Qp}_?}8^BgA zDJts79vKK&3t<0>&4m2x3l;;Np^Sj3T8s(7gRf{->d6PS!!a|lU^IF3!@rLm6CDZu zoyYn+qV)In{}2=YLZ<#h`~O{#{OuZAmaLC)Qw0J=w!NEe{Ukc+N+Dk>~ zEjRuL4~A~}`^o=X0Q=wC|0!HXALmx>J!Z3ZTlV@!topO?`V1X_c*aB<&I5cSWl5!B ze|}qkEGm2Lg$C=J5#$yyD*d*UVikPAF=BqxGMC4Za(;| zzA!No27`UAu#!mqOzERj#mb_6GU3bsD!T6Q8SAOwy)|Y9llmF;l&RaA2JWl0>rYP);EtBaCdZpTvvv=3v8a?E9PNx|Mt*%XA2#>q zR=a7RKax@CfEW}i4ZQ*R(fzd38Csqy@PBBi0_pl7lYMbt+p-a$j{ZoSc?dHtU0DwQ zE`|&PSvUu8si@S6o|fytegS#lw)A#q76L7l!=(Gi*-@`1&3 zlv{Iq`jcyHGU%MBPt88TB2k`)#PhdS}rJr&^ zj;2WQ*qir9QG^te>;IG{(-8pEOJ&+<=rd+VuvgIZ^byw-8V|d!EM>-ufL>lAhto>r z)W(iwxB046@Nwq^+>HmnxXWqXkbDF%z#^#1qHVvLq`4ve;A@722Xe`8NYtkLtR%v2 zg**Z_Q`QA57q3{{sX<9Z+T0&TGDDX4N}8Ki6{E9ytn2b@g22PLJG8Yre;)mB&u)ilbs&9@tOG z2lC!$|J(yWNn=~pHbC7tfghyS41e-|@s!89l3w<&{gWDtzR;dePUK1Qz9g#Lu+ssj z1De{RHQ#I#5R6AzB>&{`AOAzra!MNk>=X1N7EXr?&C2^mD^A7Q`Q5V@8_CVR2s62a zQZA1wkZh72%(j^Ve)iVbr9VCJqY)D81Y&}#d?_-6*&XwJ8y~EU?o}_X9i)20il)ym zmr`Od9yJYWIr_R$7(&P?3Q)8x*Mn(w{Gdc{HVX?{k@|AmnG)B<{g=g0-aM&_(&s&q z5Y=X(1=Z>FKH3IWG@f5Yt9lxp1K0#{@m+_!O0*?-d!nMz`Lwt7%qGN%i3P7k+vo@z zo}`qSYMf2tm5w5v}X}BoRb>HTYE8{%R7s)*78yGvo5>FKLot~ zzt*lZs;O;TTh3AMK}7{bqzMQpp$JHChaw(AlU@YrASLt;0X?8}L8OEl6(Q8nB=kgj zCqU>(?}5+*p@p}@9pjC2$GPvl`{V6j8Efpa)?RC8%{jks&JU*Dy#ml(&&XcZo|dVz?GXnJc`w zPs?lH>w9CqtFiSoSAPPkTyBdYYhv16y6abo&TJ2j1~zd`@m@uHdf%wAc3Wyz%n*I^ z{(!j2sg~tG!>-FrqpNQwA8+NYw#UsDO&_98$~_qG+7u)$=1kUjb7aRs)&-$>`Xk<# zuPt&qS>>vv4bdSHCY=QOk*$A3zkI6mg(e`xHeu9()(xV3#Sr%Rk79yhRb97Atcn^k z5Kb-j-&`2_s|TeVU-8G``dT`-VgTAmC1o!ryP4k3niFSpDn07F5r#CuxSHiUuk;-p zYi0Q}0_r?A1Mz#R0RqcOw)myTjihkh$za&AS4aM7n<$dUif+)W+gJ?uiGw}y zW|rMvmx&+gWJ=~Yb*Gr9mQzG`V9BGC75MG`M4&2?scKq|a0BYhkZOB9TZ(Pn2}Yx_gl>iAg_4&)ui}Xaa2K8 zeF!!lwsV|@A>zwV91f42^H*BY(>JHOpHVCkz!*s6q~sRWac`(5lIsiCNwoBpteSc! z$*s?{oSdAI#r%MXRF|XO=~2~UF6UbCsb31F;*Y$KdDYdKsTa&BMf!8!ZE-k#>XNLr z#!Jodwr=*R-jbP9{@i03yVgJmOL+>m8|>h)v(v`i-zE|Krh<;j+R;lyndq> zGlmv}lq`VTNk5uw;`^zRub%ex#66zhrUO6&QnS+p3ep^Yd+4p6p`o~Cb9m9qO7bor zm0TxT$ldm`T`We_y5&S}ybwQ~>o1Y)|GLW_wKj0r^boAnOW4~v34Y0F1cVYB@Jg;EUrEvWl^vzppx1z z(@y&wae6gKS1>YGyvtgSxDMXlkTN%S@u8|P;GQ>R4tVadifRrkbN1w}UN_n^jD-rI z^g1N%5_ihNB7CxQf*?=v{_(JNts=$*8);u%B*^}8D-i~KdvJb0-#J?~`2&-L(32-| z;l1e+<<66mK%-_AGThK@S%n6BByer&H2aR`*P23}Tfc=bivtVd?zN?!txJrz%SFy0v5FcGwi*uy7!M24ZJ-ATJ6!fgN|h z_WQtkkbL&1dW*I@C;Ocgqtt=kH8;*lU;#a>XQeUt2C@6nqHRxL?0X_I#2X9d8`{L_ zZp64`eRf%v>P1HFHpXXbs z(6D;W9FysTob!wIJn)zl_32;dlG}6P^mjGyL2>gv--mE~6&s|B7$@yJdb>hrVtJ+m zEwVs7D#6W_cw9r(5scByb-r(Vy|rgg&sr0Spe@HcbSfn(nH;V5q+OR38R4x#Ly7hh zvA?oNURPy4_95FCuOx6Tk~fy{1M6XabG@dJK|{B;x34g2MuIj*d6=|3?J-=uva|Ei zrjEhfxLEGWQ`a|#TX00LC5AAjofe#)5aP#6`L`Orx}G1LjSL@coou@y=uKjW_A>)R!~N>xHmBLf|b;9nfnjrZYW1tD(4by|4x zoeI02v119FOL`&t83^^&ye@5?+Z+Pz()6+*_NeAzX6|Cx%$JT^A9IfPN~+fsM4hky zOydA*Ir>I>@1wM=?%k-gx7Z!#pS~ry8yl!C3`i|^5~27=n3&TGn6UiOUwk zw1%Ar23izo>@0vCERY2zneo6AD0Z!1WDGD--yeEz(sX8%Wu0c&5N4?8lIFKS(ZUP4 z+?mTD5NLjW9;gJr_MP2U7ihd7`|zJs+pvdDzN`@(dG?6b@;pD~;wNx60|SF)X%!MA)z~TmI!GgcRV}WQBlC5n=732uj2ZVvGP3XI=&TWSoC=LwZP(($!=fc6< zRP5tSUM_2k$3tBL8VB;`z$t?h%TRr(WI8%Qw-@vPCQ^xP3PST8w=pK%{l;yIIjmZz zIVl8iCLpy&Pwx7L75(j*f$CZ)8&y}Cis=Fs0bFQctp+2Iq;5H7mGz9H zVzl1wSx|KXU(@)66!m0!D>SY?Kl;@QVP;)w)5)9IY}`^kmdU!s93D>kIUi-`R25gS zxio=A)LY?N*Sn-<#Ggp#IXCF}SrNp@S^Aj(ZdQ-+q`*@bZp7*CUJ76#rw2&C@q~9^6ROR z&Qs+5@JO!rj|&rQEvJg~_T&xJaosfXZyg`HnDKE-o0GRS~{tqnV>dAF;n&J(69NVt>kGdt90pTQr)Z6>}@iHQz1NSQ>E)JVc$xxGY0Iw@H6b z$iDYOxliaVpP=sWmnSEo56*s+>R6$Ib-vLnTzi&$++VX&f;bJltl0Rm4WApl=O+AnG=v&;%#;@j~qn)ENjvl>jT6+h&IitrPjQ*CZzN#j%9Khf51 z3eHhf?-C-d((V?4B~91vJZ1X^PtPcGo@Hc^>r!|Wd8;wkr7x-&D&f^V6Lb@$>=QQFz%3*xDS4D# z%EA>NS2Ie4vTvn?=c>r+i+$MeB}~qX@WFMiRX^bLp3Twp&^uM+3O$lMD67OhqBFt- zELK3Pa}?nj_eDR??)6R={?RFRO>qi2BF0+du*xd3*5Vp0#$DtE3hvrTy&JY%zZzr_ z;*TBks`Cq~2m*qZub(j<)W(Cly6E~VHp{g>NJLRXVG>wwQW!Ng`87?MdF1In$FzQe z!J|g~_`=J}MO3tr@-Dfqd9af0;^o~v3-o>#y#QFQ-eNi5Z~vXxks36(_084w!f$wq zAYy9d3MVUuVY5;SHKsP00uAuMGjYt{NxC6I@6%YR5j&MwcF?>>sfZM$o5R zH`^xHehSD?6i8+*G(`u^{BX|EHiWH51~Zj-^!_tfSIoIn0GjCRL{{ zw)G^qwO+ymRC)QyYDNYqkoUeO&$OBfxYl0E8JCmY)E&z9!?U+ehT%C9EuKZvFD=9~ zGs*ZQIo4L@`ja0g+sh(dSR|)UDDvGi7T?`Az8jS7DIe+9`#eWqosPjUIKV7UGUTY1~%GW#Zz^IQ>?YYVevBWu26~ z8X~}Lbd0WX2NzFV6>DJyVZ?$tr#ov+xC-Bs{8FgcLRI827RFl8!#T|ZjIeE$`?hz#G(qk;sz`b%v$QIF*6cr1@1A@H-J@9&74 zB7S*mb{h9qm**Lu@Xf}{=M~guefQNk)Zch_$6{5+J^UH&{u4#=J5~Q`((dTCJaDj; z`-@MfmESd2d^H?)}2hM1f5)%vCeykdsPElp6Fu^SbhY_eQmAv!zQpUUBab|YX7B|otC(A5 zyi^to(ju}Qi!w7ZIj7Ib zS?Vqm{AZqFnlfZHb#=~;puq+6wEThJqJBL7 zBBL80k&^eqp`d`MfOaeTJk`$UsZ0u=Z3;Z{5vxi5ht2b|5>7=i>y5G}#{~gXM-OU| zr6b6Uqow1o`okocoCLSGcI*J-Gh)o_7yJ}zMYM_ZcelVD5%ctW%Dty1BC+OsYW_E4!y_ir>PRYC6VIvP z$i(jM?uUvUSasHnrzRNh$-mV$t7`e}j~-yG<7$dunpK#1 zW;gdbu9zy;rPqKJt|ex-!IDRyab-5~ijytTS%*c=tb#plM6+O6Ap04bmAY>8)5Qxv zFj+Ak2L2hySGT!xxZ-b_27X-%9a^eV4;TmEX>4y+;z&rv8$VlIShCEQD?clm9y#2L z<6oGr{}mxs&p~!wq@l93BX^EVER#BAUdFcuZk6p;`z#57`3_7dvnsT(7W`nDJ6+*At?vpHO!kk`Do$SmWoMdHHauH;?17aX&QIe;u5yB;q++z- z+|qo_$#5qVBjLdsW0t3Kt+=A%qXHZdIOr{E5UsEa_V3#_;sWFiPX~MgnWVB@zg1?r zd6g2Yh*YgItm$<^RukzA)3Ns!J|lVRENQBt_HXtk_hI$f$c@P!2X|}&5B{vQ+`%i- z*~0Y<^4uM?MxHelb7rrZo8L@5>l@H5e^MoP#t0-ZbK}ANs}8g(5C?~cp||eGb`(QW z0|nlysi{BARz~RP);C$2)gDb8;N&LV@*CQ_I~%M@YU|@M!E0|BC*h_HvtN^xwtmvr zlbPUkGLX5Xh7A_)yCX8`MK4t^cLEK+~Y;_cy?6lsN4w`QRGHN_A*+7 zT&6FyxpY^0GqHNARYAmkwljQ=Bv2-+B0>=Pu352gzk+MOb*Z`d;B*^XmJ_93OxCP1 zEC_vFS{5y1*K*n*PL9oM!$`Xh52CQ`Z+Kext%;%`-j0^7DSLxb%K9?Lnz|#8BXdWl ztKIjS3c>ZQH3y%=^|~4ZP)C`CJ<+)2Xb4$dT;bYkP*x_|ns<8f`i0+Xw`D?Nlh+%| z`l_1Fo`wuH59oeEhq}030gyR`mkA@oE>iJnp6r-I_Jb*uY0hC4|Md+lCE0M0Zv1g= zNugWU3r7#Dr2&t^TwU%eDiOv-&W`34kd6GRs?nw< z#jJkHqdwzC67>suy1LdzYwjq#etMtsKCCOHhU5(_HYm?gw%0Q)5*8D~c6alD0ChIto-Cq83JRAL6)s6WEuq|_ z@6fakHVxAk71eKTO>OTT!hxh_u$&whW7Hl?socHEGJmVyo=rf$VRONNoTL>7(1(jzS KN=OCsKmQ9V)Mf_& diff --git a/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlave.java b/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlave.java index da83b831b..606c7be08 100644 --- a/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlave.java +++ b/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlave.java @@ -82,7 +82,7 @@ public class JCloudsSlave extends AbstractCloudSlave implements TrackedItem { private transient @Deprecated Server metadata; public JCloudsSlave( - @Nonnull ProvisioningActivity.Id id, @Nonnull Server metadata, @Nonnull String labelString, @Nonnull Node.Mode mode, @Nonnull SlaveOptions slaveOptions + @Nonnull ProvisioningActivity.Id id, @Nonnull Server metadata, @Nonnull String labelString, @Nonnull SlaveOptions slaveOptions ) throws IOException, Descriptor.FormException { super(Objects.requireNonNull(metadata.getName()), slaveOptions.getFsRoot(), null /*needs to be set later via setter*/); @@ -94,7 +94,7 @@ public JCloudsSlave( this.cache = makeCache(); setNumExecutors(slaveOptions.getNumExecutors()); - setMode(mode); + setMode(slaveOptions.getMode() != null ? slaveOptions.getMode() : Node.Mode.NORMAL); setLabelString(labelString); setRetentionStrategy(new JCloudsRetentionStrategy()); setNodeProperties(mkNodeProperties(Openstack.getAccessIpAddress(metadata), slaveOptions.getNodeProperties())); diff --git a/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java b/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java index ec72262fc..cab4f280a 100644 --- a/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java +++ b/plugin/src/main/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate.java @@ -3,6 +3,7 @@ import com.google.common.annotations.VisibleForTesting; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Extension; +import hudson.RelativePath; import hudson.Util; import hudson.model.Describable; import hudson.model.Descriptor; @@ -65,7 +66,6 @@ public class JCloudsSlaveTemplate implements Describable, private final @Nonnull String name; private final @Nonnull String labelString; - private final @Nonnull Node.Mode mode; // Difference compared to cloud private /*final*/ @Nonnull SlaveOptions slaveOptions; @@ -89,11 +89,9 @@ public class JCloudsSlaveTemplate implements Describable, private transient @Deprecated @SuppressWarnings("DeprecatedIsStillUsed") String availabilityZone; @DataBoundConstructor - public JCloudsSlaveTemplate(final @Nonnull String name, final @Nonnull String labels, Node.Mode mode, final @CheckForNull SlaveOptions slaveOptions) { + public JCloudsSlaveTemplate(final @Nonnull String name, final @Nonnull String labels, final @CheckForNull SlaveOptions slaveOptions) { this.name = Util.fixNull(name).trim(); this.labelString = Util.fixNull(labels).trim(); - this.mode = mode != null ? mode : Node.Mode.NORMAL; - LOGGER.fine("Constructing new JCloudsSlaveTemplate - mode=" + this.mode); this.slaveOptions = slaveOptions == null ? SlaveOptions.empty() : slaveOptions; readResolve(); @@ -196,13 +194,9 @@ public Set getLabelSet() { return labelString; } - public @Nonnull Node.Mode getMode() { - return mode != null ? mode : Node.Mode.NORMAL; - } - public boolean canProvision(final Label label) { return label == null - ? getMode() == Node.Mode.NORMAL + ? slaveOptions.getMode() == null || slaveOptions.getMode() == Node.Mode.NORMAL : label.matches(labelSet); } @@ -228,7 +222,7 @@ public boolean canProvision(final Label label) { JCloudsSlave node = null; // Terminate node unless provisioned successfully try { - node = new JCloudsSlave(id, server, labelString, mode, opts); + node = new JCloudsSlave(id, server, labelString, opts); String cause; while ((cause = cloud.slaveIsWaitingFor(node)) != null) { @@ -289,7 +283,7 @@ public boolean canProvision(final Label label) { } builder.addMetadataItem(ServerScope.METADATA_KEY, scope.getValue()); - LOGGER.info("Provisioning new openstack server " + serverName + " (mode=" + getMode() + ") with options " + opts); + LOGGER.info("Provisioning new openstack server " + serverName + " with options " + opts); // Ensure predictable server name so we can inject it into user data builder.name(serverName); @@ -546,7 +540,7 @@ public FormValidation doCheckName(@QueryParameter String value) { @Restricted(DoNotUse.class) @RequirePOST - public FormValidation doCheckLabels(@QueryParameter String value, @QueryParameter Node.Mode mode) { + public FormValidation doCheckLabels(@QueryParameter String value, @RelativePath("slaveOptions") @QueryParameter Node.Mode mode) { if ((value == null || value.trim().isEmpty()) && mode == Node.Mode.EXCLUSIVE) { return FormValidation.warning("Nodes without any labels and running in exclusive mode will never be provisioned"); } diff --git a/plugin/src/main/java/jenkins/plugins/openstack/compute/SlaveOptions.java b/plugin/src/main/java/jenkins/plugins/openstack/compute/SlaveOptions.java index 86b3c2bff..4c49f4fec 100644 --- a/plugin/src/main/java/jenkins/plugins/openstack/compute/SlaveOptions.java +++ b/plugin/src/main/java/jenkins/plugins/openstack/compute/SlaveOptions.java @@ -26,6 +26,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Util; import hudson.model.Describable; +import hudson.model.Node; import hudson.slaves.NodeProperty; import jenkins.model.Jenkins; import jenkins.plugins.openstack.compute.slaveopts.BootSource; @@ -54,7 +55,7 @@ */ public class SlaveOptions implements Describable, Serializable { private static final long serialVersionUID = -1L; - private static final SlaveOptions EMPTY = new SlaveOptions(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); + private static final SlaveOptions EMPTY = new SlaveOptions(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); // Provisioning attributes private /*final*/ @CheckForNull BootSource bootSource; @@ -70,6 +71,7 @@ public class SlaveOptions implements Describable, Serializable { private final @CheckForNull String keyPairName; // Slave launch attributes + private final @Nonnull Node.Mode mode; private final Integer numExecutors; private final @CheckForNull String jvmOptions; private final String fsRoot; @@ -138,6 +140,10 @@ public Integer getStartTimeout() { return keyPairName; } + public @Nonnull Node.Mode getMode() { + return mode; + } + public Integer getNumExecutors() { return numExecutors; } @@ -173,6 +179,7 @@ public SlaveOptions(Builder b) { b.availabilityZone, b.startTimeout, b.keyPairName, + b.mode, b.numExecutors, b.jvmOptions, b.fsRoot, @@ -196,6 +203,7 @@ public SlaveOptions( String availabilityZone, Integer startTimeout, String keyPairName, + Node.Mode mode, Integer numExecutors, String jvmOptions, String fsRoot, @@ -215,6 +223,7 @@ public SlaveOptions( this.availabilityZone = Util.fixEmpty(availabilityZone); this.startTimeout = startTimeout; this.keyPairName = Util.fixEmpty(keyPairName); + this.mode = mode; this.numExecutors = numExecutors; this.jvmOptions = Util.fixEmpty(jvmOptions); this.fsRoot = Util.fixEmpty(fsRoot); @@ -252,6 +261,7 @@ private Object readResolve() { .availabilityZone(_override(this.availabilityZone, o.availabilityZone)) .startTimeout(_override(this.startTimeout, o.startTimeout)) .keyPairName(_override(this.keyPairName, o.keyPairName)) + .mode(_override(this.mode, o.mode)) .numExecutors(_override(this.numExecutors, o.numExecutors)) .jvmOptions(_override(this.jvmOptions, o.jvmOptions)) .fsRoot(_override(this.fsRoot, o.fsRoot)) @@ -283,6 +293,7 @@ private Object readResolve() { .availabilityZone(_erase(this.availabilityZone, defaults.availabilityZone)) .startTimeout(_erase(this.startTimeout, defaults.startTimeout)) .keyPairName(_erase(this.keyPairName, defaults.keyPairName)) + .mode(_erase(this.mode, defaults.mode)) .numExecutors(_erase(this.numExecutors, defaults.numExecutors)) .jvmOptions(_erase(this.jvmOptions, defaults.jvmOptions)) .fsRoot(_erase(this.fsRoot, defaults.fsRoot)) @@ -315,6 +326,7 @@ public String toString() { .append("availabilityZone", availabilityZone) .append("startTimeout", startTimeout) .append("keyPairName", keyPairName) + .append("mode", mode) .append("numExecutors", numExecutors) .append("jvmOptions", jvmOptions) .append("fsRoot", fsRoot) @@ -344,6 +356,7 @@ public boolean equals(Object o) { if (!Objects.equals(availabilityZone, that.availabilityZone)) return false; if (!Objects.equals(startTimeout, that.startTimeout)) return false; if (!Objects.equals(keyPairName, that.keyPairName)) return false; + if (!Objects.equals(mode, that.mode)) return false; if (!Objects.equals(numExecutors, that.numExecutors)) return false; if (!Objects.equals(jvmOptions, that.jvmOptions)) return false; if (!Objects.equals(fsRoot, that.fsRoot)) return false; @@ -366,6 +379,7 @@ public int hashCode() { result = 31 * result + (availabilityZone != null ? availabilityZone.hashCode() : 0); result = 31 * result + (startTimeout != null ? startTimeout.hashCode() : 0); result = 31 * result + (keyPairName != null ? keyPairName.hashCode() : 0); + result = 31 * result + (mode != null ? mode.hashCode() : 0); result = 31 * result + (numExecutors != null ? numExecutors.hashCode() : 0); result = 31 * result + (jvmOptions != null ? jvmOptions.hashCode() : 0); result = 31 * result + (fsRoot != null ? fsRoot.hashCode() : 0); @@ -392,6 +406,7 @@ public Builder getBuilder() { .availabilityZone(availabilityZone) .startTimeout(startTimeout) .keyPairName(keyPairName) + .mode(mode) .numExecutors(numExecutors) .jvmOptions(jvmOptions) .fsRoot(fsRoot) @@ -426,6 +441,7 @@ public static final class Builder { private @CheckForNull Integer startTimeout; private @CheckForNull String keyPairName; + private @CheckForNull Node.Mode mode; private @CheckForNull Integer numExecutors; private @CheckForNull String jvmOptions; private @CheckForNull String fsRoot; @@ -496,6 +512,11 @@ public Builder() {} return this; } + public @Nonnull Builder mode(Node.Mode mode) { + this.mode = mode; + return this; + } + public @Nonnull Builder numExecutors(Integer numExecutors) { this.numExecutors = numExecutors; return this; diff --git a/plugin/src/main/resources/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate/config.jelly b/plugin/src/main/resources/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate/config.jelly index 5ae88406b..3a4ccc137 100644 --- a/plugin/src/main/resources/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate/config.jelly +++ b/plugin/src/main/resources/jenkins/plugins/openstack/compute/JCloudsSlaveTemplate/config.jelly @@ -8,7 +8,6 @@ - diff --git a/plugin/src/main/resources/jenkins/plugins/openstack/compute/SlaveOptions/config.jelly b/plugin/src/main/resources/jenkins/plugins/openstack/compute/SlaveOptions/config.jelly index 3ea4f467b..a4ea01df3 100644 --- a/plugin/src/main/resources/jenkins/plugins/openstack/compute/SlaveOptions/config.jelly +++ b/plugin/src/main/resources/jenkins/plugins/openstack/compute/SlaveOptions/config.jelly @@ -17,6 +17,7 @@

+ diff --git a/plugin/src/test/java/jenkins/plugins/openstack/JcascTest.java b/plugin/src/test/java/jenkins/plugins/openstack/JcascTest.java index 8e04f682f..028d35647 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/JcascTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/JcascTest.java @@ -119,7 +119,6 @@ public void configure() { // The only use-case for empty template is when all options are inherited by a single configured template JCloudsSlaveTemplate t = c.getTemplate("empty"); assertEquals("linux", t.getLabels()); - assertEquals(Node.Mode.NORMAL, t.getMode()); assertEquals(SlaveOptions.empty(), t.getRawSlaveOptions()); SlaveOptions jso = c.getTemplate("jnlp").getRawSlaveOptions(); diff --git a/plugin/src/test/java/jenkins/plugins/openstack/PluginTestRule.java b/plugin/src/test/java/jenkins/plugins/openstack/PluginTestRule.java index 47864dce4..a1d8fc86d 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/PluginTestRule.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/PluginTestRule.java @@ -124,7 +124,7 @@ public static SlaveOptions dummySlaveOptions() { dummyUserData("dummyUserDataId"); } return new SlaveOptions( - new BootSource.VolumeSnapshot("id"), "hw", "nw1,mw2", "dummyUserDataId", 1, 2, "pool", "sg", "az", 1, null, 10, + new BootSource.VolumeSnapshot("id"), "hw", "nw1,mw2", "dummyUserDataId", 1, 2, "pool", "sg", "az", 1, null, Node.Mode.NORMAL, 10, "jvmo", "fsRoot", LauncherFactory.JNLP.JNLP, mkListOfNodeProperties(1, 2), 1, null ); } @@ -183,6 +183,7 @@ public SlaveOptions defaultSlaveOptions() { .keyPairName("dummyKeyPairName") .jvmOptions("dummyJvmOptions") .fsRoot("/tmp/jenkins") + .mode(Node.Mode.NORMAL) .launcherFactory(LauncherFactory.JNLP.JNLP) .build() ; @@ -295,7 +296,7 @@ public JCloudsSlaveTemplate dummySlaveTemplate(String labels) { public JCloudsSlaveTemplate dummySlaveTemplate(SlaveOptions opts, String labels) { int num = templateCount.getAndIncrement(); - return new JCloudsSlaveTemplate("template" + num, labels, Node.Mode.NORMAL, opts); + return new JCloudsSlaveTemplate("template" + num, labels, opts); } public JCloudsCloud dummyCloud(JCloudsSlaveTemplate... templates) { diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/InstanceCapacityTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/InstanceCapacityTest.java index 2d3748d70..7e661ee59 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/InstanceCapacityTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/InstanceCapacityTest.java @@ -25,7 +25,6 @@ import hudson.model.Descriptor; import hudson.model.Label; -import hudson.model.Node; import hudson.model.labels.LabelAtom; import hudson.slaves.NodeProvisioner; import jenkins.plugins.openstack.PluginTestRule; @@ -91,7 +90,7 @@ public void reportInstanceCapBasedOnSlaves() throws IOException, Descriptor.Form Server server = j.mockServer().name("foo0").withFixedIPv4("0.0.0.0").get(); ProvisioningActivity.Id id = new ProvisioningActivity.Id(cloud.name, restrictedTmplt.getName()); - j.jenkins.addNode(new JCloudsSlave(id, server, "restricted common", Node.Mode.NORMAL, restrictedTmplt.getEffectiveSlaveOptions())); + j.jenkins.addNode(new JCloudsSlave(id, server, "restricted common", restrictedTmplt.getEffectiveSlaveOptions())); lr.capture(5); lr.record(JCloudsCloud.class, Level.INFO); diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java index 603c80aae..b2e3597df 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsCloudTest.java @@ -142,11 +142,11 @@ public void presentUIDefaults() throws Exception { String openstackAuth = j.dummyCredentials(); - JCloudsSlaveTemplate template = new JCloudsSlaveTemplate("template", "label", Node.Mode.NORMAL, new SlaveOptions( - new BootSource.Image("iid"), "hw", "nw", "ud", 1, 0, "public", "sg", "az", 2, "kp", 3, "jvmo", "fsRoot", LauncherFactory.JNLP.JNLP, null, 4, false + JCloudsSlaveTemplate template = new JCloudsSlaveTemplate("template", "label", new SlaveOptions( + new BootSource.Image("iid"), "hw", "nw", "ud", 1, 0, "public", "sg", "az", 2, "kp", Node.Mode.NORMAL, 3, "jvmo", "fsRoot", LauncherFactory.JNLP.JNLP, null, 4, false )); JCloudsCloud cloud = new JCloudsCloud("openstack", "endPointUrl", false,"zone", new SlaveOptions( - new BootSource.VolumeSnapshot("vsid"), "HW", "NW", "UD", 6, 4, null, "SG", "AZ", 7, "KP", 8, "JVMO", "FSrOOT", new LauncherFactory.SSH("cid"), null, 9, false + new BootSource.VolumeSnapshot("vsid"), "HW", "NW", "UD", 6, 4, null, "SG", "AZ", 7, "KP", Node.Mode.NORMAL, 8, "JVMO", "FSrOOT", new LauncherFactory.SSH("cid"), null, 9, false ), Collections.singletonList(template),openstackAuth); j.jenkins.clouds.add(cloud); @@ -260,7 +260,6 @@ public void globalConfigMigrationFromV1() throws Exception { JCloudsSlaveTemplate template = cloud.getTemplate("ath-integration-test"); assertEquals(Label.parse("label"), template.getLabelSet()); - assertEquals(Node.Mode.NORMAL, template.getMode()); SlaveOptions to = template.getEffectiveSlaveOptions(); assertEquals("16", to.getHardwareId()); assertEquals("ac98e93d-34a3-437d-a7ba-9ad24c02f5b2", ((BootSource.Image) to.getBootSource()).getName()); diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsRetentionStrategyTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsRetentionStrategyTest.java index 390142a04..19fd92cc9 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsRetentionStrategyTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsRetentionStrategyTest.java @@ -3,7 +3,6 @@ import hudson.Functions; import hudson.model.Computer; import hudson.model.Label; -import hudson.model.Node; import hudson.model.TaskListener; import hudson.model.User; import hudson.slaves.ComputerListener; @@ -47,7 +46,7 @@ public void scheduleSlaveDelete() throws Exception { int retentionTime = 1; // minute JCloudsSlaveTemplate template = new JCloudsSlaveTemplate( - "template", "label", Node.Mode.NORMAL, SlaveOptions.builder().retentionTime(retentionTime).build() + "template", "label", SlaveOptions.builder().retentionTime(retentionTime).build() ); JCloudsCloud cloud = j.configureSlaveLaunchingWithFloatingIP(j.dummyCloud(template)); diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplateTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplateTest.java index f1f9b1350..d392ef736 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplateTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTemplateTest.java @@ -10,7 +10,6 @@ import java.util.stream.Stream; import com.gargoylesoftware.htmlunit.html.HtmlForm; -import hudson.model.Node; import hudson.util.FormValidation; import jenkins.plugins.openstack.PluginTestRule; @@ -68,13 +67,13 @@ public void configRoundtrip() throws Exception { .build() ; JCloudsSlaveTemplate jnlpTemplate = new JCloudsSlaveTemplate( - "jnlp-template", "openstack-slave-type1 openstack-type2", Node.Mode.NORMAL, jnlpOpts + "jnlp-template", "openstack-slave-type1 openstack-type2", jnlpOpts ); LauncherFactory.SSH slaveType = new LauncherFactory.SSH(j.dummySshCredentials("sshid"), "mypath"); SlaveOptions sshOpts = dummySlaveOptions().getBuilder().launcherFactory(slaveType).build(); JCloudsSlaveTemplate sshTemplate = new JCloudsSlaveTemplate( - "ssh-template", "openstack-slave-type1 openstack-type2", Node.Mode.NORMAL, sshOpts + "ssh-template", "openstack-slave-type1 openstack-type2", sshOpts ); JCloudsCloud originalCloud = new JCloudsCloud( @@ -113,7 +112,7 @@ public void eraseDefaults() { assertEquals(cloudOpts.getHardwareId(), templateOpts.getHardwareId()); JCloudsSlaveTemplate template = new JCloudsSlaveTemplate( - "test-templateOpts", "openstack-slave-type1 openstack-type2", Node.Mode.NORMAL, templateOpts + "test-templateOpts", "openstack-slave-type1 openstack-type2", templateOpts ); JCloudsCloud cloud = new JCloudsCloud( diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTest.java index 42cf202cc..2db4877d4 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/JCloudsSlaveTest.java @@ -46,7 +46,7 @@ public void constructorGivenNoNodePropertiesThenProvidesIPAddressAsEnvVar() thro expectedIpAddress); // When - JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, Node.Mode.NORMAL, mockSlaveOptions); + JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, mockSlaveOptions); // Then final List> actualNPs = instance.getNodeProperties().toList(); @@ -76,7 +76,7 @@ public void constructorGivenSomeNodePropertiesThenAddsIPAddressAsEnvVar() throws expectedIpAddress); // When - JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, Node.Mode.NORMAL, mockSlaveOptions); + JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, mockSlaveOptions); // Then final List> actualNPs = instance.getNodeProperties().toList(); @@ -114,7 +114,7 @@ public void constructorGivenSomeNodePropertiesIncludingEnvVarsThenIncludesIPAddr envVar2Value, EXPECTED_IP_ADDRESS_ENV_VAR_NAME, expectedIpAddress); // When - JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, Node.Mode.NORMAL, mockSlaveOptions); + JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, mockSlaveOptions); // Then final List> actualNPs = instance.getNodeProperties().toList(); @@ -145,7 +145,7 @@ public void constructorGivenSomeNodePropertiesThenCreatesCopiesOfThoseNodeProper expectedIpAddress); // When - JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, Node.Mode.NORMAL, mockSlaveOptions); + JCloudsSlave instance = new JCloudsSlave(stubId, mockMetadata, labelString, mockSlaveOptions); // Then final List> actualNPs = instance.getNodeProperties().toList(); diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/ServerScopeTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/ServerScopeTest.java index cd8fc54bb..7039797c8 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/ServerScopeTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/ServerScopeTest.java @@ -2,7 +2,6 @@ import hudson.model.FreeStyleBuild; import hudson.model.FreeStyleProject; -import hudson.model.Node; import hudson.util.OneShotEvent; import jenkins.plugins.openstack.PluginTestRule; import jenkins.plugins.openstack.compute.internal.Openstack; @@ -74,7 +73,7 @@ public void parse() { @Test public void nodeScope() throws Exception { final Id id = new Id("foo", "bar", "baz"); - final JCloudsSlave js = new JCloudsSlave(id, j.mockServer().withFixedIPv4("1.1.1.1").name("foo").get(), "foo", Node.Mode.NORMAL, j.defaultSlaveOptions()); + final JCloudsSlave js = new JCloudsSlave(id, j.mockServer().withFixedIPv4("1.1.1.1").name("foo").get(), "foo", j.defaultSlaveOptions()); Server mock = mock(Server.class); when(mock.getMetadata()).thenReturn(Collections.singletonMap( ServerScope.METADATA_KEY, diff --git a/plugin/src/test/java/jenkins/plugins/openstack/compute/SlaveOptionsTest.java b/plugin/src/test/java/jenkins/plugins/openstack/compute/SlaveOptionsTest.java index 877bdc4f4..98030385a 100644 --- a/plugin/src/test/java/jenkins/plugins/openstack/compute/SlaveOptionsTest.java +++ b/plugin/src/test/java/jenkins/plugins/openstack/compute/SlaveOptionsTest.java @@ -34,6 +34,7 @@ public void defaultOverrides() { assertEquals("sg", unmodified.getSecurityGroups()); assertEquals("az", unmodified.getAvailabilityZone()); assertEquals(1, (int) unmodified.getStartTimeout()); + assertEquals(Node.Mode.NORMAL, unmodified.getMode()); assertEquals(10, (int) unmodified.getNumExecutors()); assertEquals("jvmo", unmodified.getJvmOptions()); assertEquals("fsRoot", unmodified.getFsRoot()); @@ -53,6 +54,7 @@ public void defaultOverrides() { .securityGroups("SG") .availabilityZone("AZ") .startTimeout(4) + .mode(Node.Mode.NORMAL) .numExecutors(2) .jvmOptions("JVMO") .fsRoot("FSROOT") @@ -74,6 +76,7 @@ public void defaultOverrides() { assertEquals("SG", overridden.getSecurityGroups()); assertEquals("AZ", overridden.getAvailabilityZone()); assertEquals(4, (int) overridden.getStartTimeout()); + assertEquals(Node.Mode.NORMAL, overridden.getMode()); assertEquals(2, (int) overridden.getNumExecutors()); assertEquals("JVMO", overridden.getJvmOptions()); assertEquals("FSROOT", overridden.getFsRoot()); @@ -99,7 +102,7 @@ public void eraseDefaults() { public void emptyStrings() { SlaveOptions nulls = SlaveOptions.empty(); SlaveOptions emptyStrings = new SlaveOptions( - null, "", "", "", null, null, "", "", "", null, "", null, "", "", null, null, null, null + null, "", "", "", null, null, "", "", "", null, "", null, null, "", "", null, null, null, null ); SlaveOptions emptyBuilt = SlaveOptions.builder() .hardwareId("") diff --git a/plugin/src/test/resources/jenkins/plugins/openstack/JcascTest/jcasc.yaml b/plugin/src/test/resources/jenkins/plugins/openstack/JcascTest/jcasc.yaml index fb0ab5fd5..01e0019b7 100644 --- a/plugin/src/test/resources/jenkins/plugins/openstack/JcascTest/jcasc.yaml +++ b/plugin/src/test/resources/jenkins/plugins/openstack/JcascTest/jcasc.yaml @@ -34,37 +34,36 @@ jenkins: templates: - name: "empty" labels: "linux" - mode: NORMAL - name: "jnlp" labels: "jnlp" - mode: NORMAL slaveOptions: + mode: NORMAL launcherFactory: "jnlp" - name: "volumeSnapshot" labels: "volume" - mode: NORMAL slaveOptions: + mode: NORMAL bootSource: volumeSnapshot: name: "Volume name" - name: "volumeFromImage" labels: "volume from image" - mode: NORMAL slaveOptions: + mode: NORMAL bootSource: volumeFromImage: name: "Volume name" volumeSize: 15 - name: "customNodeProperties" labels: "templateWithItsOwnNodeProperties" - mode: NORMAL slaveOptions: + mode: NORMAL nodeProperties: - nodePropertyTwo - name: "noNodeProperties" labels: "templateWithNoNodePropertiesInsteadOfDefaults" - mode: NORMAL slaveOptions: + mode: NORMAL nodeProperties: [] unclassified: From 8f829da7b71276b87ca2277c7b863fe87211dbaa Mon Sep 17 00:00:00 2001 From: Alexander Russell Date: Fri, 8 Apr 2022 16:38:08 +0200 Subject: [PATCH 6/6] Moved mode under slaveOptions in the documentation. --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e67e536fb..ffbfac3b2 100644 --- a/README.md +++ b/README.md @@ -110,23 +110,24 @@ jenkins: templates: - name: "empty" labels: "linux" - mode: EXCLUSIVE + slaveOptions: + mode: EXCLUSIVE - name: "jnlp" labels: "jnlp" - mode: NORMAL slaveOptions: + mode: NORMAL launcherFactory: "jnlp" - name: "volumeSnapshot" labels: "volume" - mode: NORMAL slaveOptions: + mode: NORMAL bootSource: volumeSnapshot: name: "Volume name" - name: "volumeFromImage" labels: "volume from image" - mode: NORMAL slaveOptions: + mode: NORMAL bootSource: volumeFromImage: name: "Volume name"