diff --git a/modules/swagger-parser/src/main/java/io/swagger/parser/util/DeserializationUtils.java b/modules/swagger-parser/src/main/java/io/swagger/parser/util/DeserializationUtils.java index 51206308cc..e1ce03dd9e 100644 --- a/modules/swagger-parser/src/main/java/io/swagger/parser/util/DeserializationUtils.java +++ b/modules/swagger-parser/src/main/java/io/swagger/parser/util/DeserializationUtils.java @@ -5,13 +5,18 @@ import io.swagger.util.Yaml; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.constructor.BaseConstructor; import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.nodes.MappingNode; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.NodeTuple; import org.yaml.snakeyaml.nodes.Tag; +import org.yaml.snakeyaml.representer.Representer; import java.io.IOException; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.IdentityHashMap; import java.util.List; @@ -26,6 +31,11 @@ public static class Options { private boolean supportYamlAnchors = System.getProperty("supportYamlAnchors") == null ? true : Boolean.valueOf(System.getProperty("supportYamlAnchors")); private boolean yamlCycleCheck = System.getProperty("yamlCycleCheck") == null ? true : Boolean.valueOf(System.getProperty("yamlCycleCheck")); + + private Integer maxYamlAliasesForCollections = System.getProperty("maxYamlAliasesForCollections") == null ? Integer.MAX_VALUE : Integer.valueOf(System.getProperty("maxYamlAliasesForCollections")); + private boolean yamlAllowRecursiveKeys = System.getProperty("yamlAllowRecursiveKeys") == null ? true : Boolean.valueOf(System.getProperty("yamlAllowRecursiveKeys")); + + public Integer getMaxYamlDepth() { return maxYamlDepth; } @@ -65,6 +75,34 @@ public boolean isYamlCycleCheck() { public void setYamlCycleCheck(boolean yamlCycleCheck) { this.yamlCycleCheck = yamlCycleCheck; } + + /** + * @since 1.0.52 + */ + public Integer getMaxYamlAliasesForCollections() { + return maxYamlAliasesForCollections; + } + + /** + * @since 1.0.52 + */ + public void setMaxYamlAliasesForCollections(Integer maxYamlAliasesForCollections) { + this.maxYamlAliasesForCollections = maxYamlAliasesForCollections; + } + + /** + * @since 1.0.52 + */ + public boolean isYamlAllowRecursiveKeys() { + return yamlAllowRecursiveKeys; + } + + /** + * @since 1.0.52 + */ + public void setYamlAllowRecursiveKeys(boolean yamlAllowRecursiveKeys) { + this.yamlAllowRecursiveKeys = yamlAllowRecursiveKeys; + } } private static Options options = new Options(); @@ -105,7 +143,7 @@ public static T deserialize(Object contents, String fileOrHost, Class exp if (isJson) { result = Json.mapper().readValue((String) contents, expectedType); } else { - result = Yaml.mapper().readValue((String) contents, expectedType); + result = Yaml.mapper().convertValue(readYamlTree((String) contents), expectedType); } } else { result = Json.mapper().convertValue(contents, expectedType); @@ -121,6 +159,29 @@ private static boolean isJson(String contents) { return contents.toString().trim().startsWith("{"); } + + public static org.yaml.snakeyaml.Yaml buildSnakeYaml(BaseConstructor constructor) { + try { + LoaderOptions.class.getMethod("getMaxAliasesForCollections"); + } catch (NoSuchMethodException e) { + return new org.yaml.snakeyaml.Yaml(constructor); + } + try { + LoaderOptions loaderOptions = new LoaderOptions(); + Method method = LoaderOptions.class.getMethod("setMaxAliasesForCollections", int.class); + method.invoke(loaderOptions, options.getMaxYamlAliasesForCollections()); + method = LoaderOptions.class.getMethod("setAllowRecursiveKeys", boolean.class); + method.invoke(loaderOptions, options.isYamlAllowRecursiveKeys()); + org.yaml.snakeyaml.Yaml yaml = new org.yaml.snakeyaml.Yaml(constructor, new Representer(), new DumperOptions(), loaderOptions); + return yaml; + } catch (ReflectiveOperationException e) { + // + LOGGER.debug("using snakeyaml < 1.25, not setting YAML Billion Laughs Attack snakeyaml level protection"); + } + return new org.yaml.snakeyaml.Yaml(constructor); + } + + public static JsonNode readYamlTree(String contents) throws IOException { if (!options.isSupportYamlAnchors()) { @@ -129,9 +190,9 @@ public static JsonNode readYamlTree(String contents) throws IOException { try { org.yaml.snakeyaml.Yaml yaml = null; if (options.isValidateYamlInput()) { - yaml = new org.yaml.snakeyaml.Yaml(new CustomSnakeYamlConstructor()); + yaml = buildSnakeYaml(new CustomSnakeYamlConstructor()); } else { - yaml = new org.yaml.snakeyaml.Yaml(new SafeConstructor()); + yaml = buildSnakeYaml(new SafeConstructor()); } Object o = yaml.load(contents); @@ -297,7 +358,7 @@ public Object getSingleData(Class type) { } catch (StackOverflowError e) { throw new SnakeException("StackOverflow safe-checking yaml content (maxDepth " + options.getMaxYamlDepth() + ")", e); } catch (Throwable e) { - throw new SnakeException("Exception safe-checking yaml content (maxDepth " + options.getMaxYamlDepth() + ")", e); + throw new SnakeException("Exception safe-checking yaml content (maxDepth " + options.getMaxYamlDepth() + ", maxYamlAliasesForCollections " + options.getMaxYamlAliasesForCollections() + ")", e); } } } diff --git a/modules/swagger-parser/src/test/java/io/swagger/parser/AnchorTest.java b/modules/swagger-parser/src/test/java/io/swagger/parser/AnchorTest.java index b08562fb57..eabeb005d0 100644 --- a/modules/swagger-parser/src/test/java/io/swagger/parser/AnchorTest.java +++ b/modules/swagger-parser/src/test/java/io/swagger/parser/AnchorTest.java @@ -2,6 +2,7 @@ import io.swagger.models.ModelImpl; import io.swagger.models.Swagger; +import io.swagger.models.properties.StringProperty; import io.swagger.parser.util.DeserializationUtils; import io.swagger.parser.util.SwaggerDeserializationResult; import io.swagger.util.Json; @@ -10,6 +11,7 @@ import java.util.Arrays; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; public class AnchorTest { @@ -111,4 +113,26 @@ public void testIssue998Billion() throws Exception{ DeserializationUtils.getOptions().setMaxYamlReferences(10000000L); } + + @org.testng.annotations.Test + public void testBillionLaughProtectionSnakeYaml() { + SwaggerDeserializationResult result = new SwaggerParser().readWithInfo("billion_laughs_snake_yaml.yaml", null, true); + + assertNotNull(result.getSwagger().getDefinitions().get("a1")); + assertEquals(((ModelImpl)result.getSwagger().getDefinitions().get("a1")).getEnum().get(0), "AA1"); + assertNotNull(result.getSwagger().getDefinitions().get("c1")); + assertEquals(((StringProperty)result.getSwagger().getDefinitions().get("c1").getProperties().get("a")).getEnum().get(0), "AA1"); + + + DeserializationUtils.getOptions().setMaxYamlAliasesForCollections(50); + DeserializationUtils.getOptions().setYamlAllowRecursiveKeys(false); + + result = new SwaggerParser().readWithInfo("billion_laughs_snake_yaml.yaml", null, true); + + assertNull(result.getSwagger()); + DeserializationUtils.getOptions().setMaxYamlAliasesForCollections(Integer.MAX_VALUE); + DeserializationUtils.getOptions().setYamlAllowRecursiveKeys(true); + + } + } diff --git a/modules/swagger-parser/src/test/resources/billion_laughs_snake_yaml.yaml b/modules/swagger-parser/src/test/resources/billion_laughs_snake_yaml.yaml new file mode 100644 index 0000000000..ce3f217d50 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/billion_laughs_snake_yaml.yaml @@ -0,0 +1,2910 @@ +swagger: "2.0" +info: + title: test BLA + version: 1.0.0 +basePath: / +consumes: + - application/json +produces: + - application/json +definitions: + a1: + type: string + enum: &A1 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a2: + type: string + enum: &A2 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a3: + type: string + enum: &A3 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a4: + type: string + enum: &A4 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a5: + type: string + enum: &A5 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a6: + type: string + enum: &A6 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a7: + type: string + enum: &A7 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a8: + type: string + enum: &A8 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a9: + type: string + enum: &A9 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a10: + type: string + enum: &A10 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a11: + type: string + enum: &A11 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a12: + type: string + enum: &A12 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a13: + type: string + enum: &A13 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a14: + type: string + enum: &A14 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a15: + type: string + enum: &A15 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a16: + type: string + enum: &A16 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a17: + type: string + enum: &A17 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a18: + type: string + enum: &A18 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a19: + type: string + enum: &A19 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a20: + type: string + enum: &A20 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a21: + type: string + enum: &A21 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a22: + type: string + enum: &A22 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a23: + type: string + enum: &A23 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a24: + type: string + enum: &A24 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a25: + type: string + enum: &A25 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a26: + type: string + enum: &A26 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a27: + type: string + enum: &A27 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a28: + type: string + enum: &A28 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a29: + type: string + enum: &A29 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a30: + type: string + enum: &A30 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a31: + type: string + enum: &A31 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a32: + type: string + enum: &A32 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a33: + type: string + enum: &A33 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a34: + type: string + enum: &A34 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a35: + type: string + enum: &A35 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a36: + type: string + enum: &A36 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a37: + type: string + enum: &A37 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a38: + type: string + enum: &A38 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a39: + type: string + enum: &A39 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a40: + type: string + enum: &A40 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a41: + type: string + enum: &A41 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a42: + type: string + enum: &A42 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a43: + type: string + enum: &A43 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a44: + type: string + enum: &A44 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a45: + type: string + enum: &A45 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a46: + type: string + enum: &A46 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a47: + type: string + enum: &A47 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a48: + type: string + enum: &A48 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a49: + type: string + enum: &A49 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a50: + type: string + enum: &A50 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a51: + type: string + enum: &A51 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a52: + type: string + enum: &A52 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a53: + type: string + enum: &A53 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a54: + type: string + enum: &A54 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a55: + type: string + enum: &A55 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a56: + type: string + enum: &A56 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a57: + type: string + enum: &A57 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a58: + type: string + enum: &A58 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a59: + type: string + enum: &A59 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a60: + type: string + enum: &A60 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a61: + type: string + enum: &A61 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a62: + type: string + enum: &A62 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a63: + type: string + enum: &A63 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a64: + type: string + enum: &A64 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a65: + type: string + enum: &A65 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a66: + type: string + enum: &A66 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a67: + type: string + enum: &A67 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a68: + type: string + enum: &A68 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a69: + type: string + enum: &A69 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a70: + type: string + enum: &A70 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a71: + type: string + enum: &A71 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a72: + type: string + enum: &A72 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a73: + type: string + enum: &A73 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a74: + type: string + enum: &A74 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a75: + type: string + enum: &A75 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a76: + type: string + enum: &A76 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a77: + type: string + enum: &A77 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a78: + type: string + enum: &A78 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a79: + type: string + enum: &A79 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a80: + type: string + enum: &A80 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a81: + type: string + enum: &A81 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a82: + type: string + enum: &A82 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a83: + type: string + enum: &A83 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a84: + type: string + enum: &A84 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a85: + type: string + enum: &A85 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a86: + type: string + enum: &A86 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a87: + type: string + enum: &A87 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a88: + type: string + enum: &A88 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a89: + type: string + enum: &A89 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a90: + type: string + enum: &A90 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a91: + type: string + enum: &A91 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a92: + type: string + enum: &A92 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a93: + type: string + enum: &A93 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a94: + type: string + enum: &A94 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a95: + type: string + enum: &A95 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a96: + type: string + enum: &A96 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a97: + type: string + enum: &A97 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a98: + type: string + enum: &A98 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a99: + type: string + enum: &A99 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + a100: + type: string + enum: &A100 + - AA1 + - AA2 + - AA3 + - AA4 + - AA5 + - AA6 + - AA7 + - AA8 + - AA9 + - AA10 + - AA11 + - AA12 + - AA13 + - AA14 + - AA15 + - AA16 + - AA17 + - AA18 + - AA19 + - AA20 + c1: + type: object + properties: + a: + type: string + enum: *A1 + c2: + type: object + properties: + a: + type: string + enum: *A2 + c3: + type: object + properties: + a: + type: string + enum: *A3 + c4: + type: object + properties: + a: + type: string + enum: *A4 + c5: + type: object + properties: + a: + type: string + enum: *A5 + c6: + type: object + properties: + a: + type: string + enum: *A6 + c7: + type: object + properties: + a: + type: string + enum: *A7 + c8: + type: object + properties: + a: + type: string + enum: *A8 + c9: + type: object + properties: + a: + type: string + enum: *A9 + c10: + type: object + properties: + a: + type: string + enum: *A10 + c11: + type: object + properties: + a: + type: string + enum: *A11 + c12: + type: object + properties: + a: + type: string + enum: *A12 + c13: + type: object + properties: + a: + type: string + enum: *A13 + c14: + type: object + properties: + a: + type: string + enum: *A14 + c15: + type: object + properties: + a: + type: string + enum: *A15 + c16: + type: object + properties: + a: + type: string + enum: *A16 + c17: + type: object + properties: + a: + type: string + enum: *A17 + c18: + type: object + properties: + a: + type: string + enum: *A18 + c19: + type: object + properties: + a: + type: string + enum: *A19 + c20: + type: object + properties: + a: + type: string + enum: *A20 + c21: + type: object + properties: + a: + type: string + enum: *A21 + c22: + type: object + properties: + a: + type: string + enum: *A22 + c23: + type: object + properties: + a: + type: string + enum: *A23 + c24: + type: object + properties: + a: + type: string + enum: *A24 + c25: + type: object + properties: + a: + type: string + enum: *A25 + c26: + type: object + properties: + a: + type: string + enum: *A26 + c27: + type: object + properties: + a: + type: string + enum: *A27 + c28: + type: object + properties: + a: + type: string + enum: *A28 + c29: + type: object + properties: + a: + type: string + enum: *A29 + c30: + type: object + properties: + a: + type: string + enum: *A30 + c31: + type: object + properties: + a: + type: string + enum: *A31 + c32: + type: object + properties: + a: + type: string + enum: *A32 + c33: + type: object + properties: + a: + type: string + enum: *A33 + c34: + type: object + properties: + a: + type: string + enum: *A34 + c35: + type: object + properties: + a: + type: string + enum: *A35 + c36: + type: object + properties: + a: + type: string + enum: *A36 + c37: + type: object + properties: + a: + type: string + enum: *A37 + c38: + type: object + properties: + a: + type: string + enum: *A38 + c39: + type: object + properties: + a: + type: string + enum: *A39 + c40: + type: object + properties: + a: + type: string + enum: *A40 + c41: + type: object + properties: + a: + type: string + enum: *A41 + c42: + type: object + properties: + a: + type: string + enum: *A42 + c43: + type: object + properties: + a: + type: string + enum: *A43 + c44: + type: object + properties: + a: + type: string + enum: *A44 + c45: + type: object + properties: + a: + type: string + enum: *A45 + c46: + type: object + properties: + a: + type: string + enum: *A46 + c47: + type: object + properties: + a: + type: string + enum: *A47 + c48: + type: object + properties: + a: + type: string + enum: *A48 + c49: + type: object + properties: + a: + type: string + enum: *A49 + c50: + type: object + properties: + a: + type: string + enum: *A50 + c51: + type: object + properties: + a: + type: string + enum: *A51 + c52: + type: object + properties: + a: + type: string + enum: *A52 + c53: + type: object + properties: + a: + type: string + enum: *A53 + c54: + type: object + properties: + a: + type: string + enum: *A54 + c55: + type: object + properties: + a: + type: string + enum: *A55 + c56: + type: object + properties: + a: + type: string + enum: *A56 + c57: + type: object + properties: + a: + type: string + enum: *A57 + c58: + type: object + properties: + a: + type: string + enum: *A58 + c59: + type: object + properties: + a: + type: string + enum: *A59 + c60: + type: object + properties: + a: + type: string + enum: *A60 + c61: + type: object + properties: + a: + type: string + enum: *A61 + c62: + type: object + properties: + a: + type: string + enum: *A62 + c63: + type: object + properties: + a: + type: string + enum: *A63 + c64: + type: object + properties: + a: + type: string + enum: *A64 + c65: + type: object + properties: + a: + type: string + enum: *A65 + c66: + type: object + properties: + a: + type: string + enum: *A66 + c67: + type: object + properties: + a: + type: string + enum: *A67 + c68: + type: object + properties: + a: + type: string + enum: *A68 + c69: + type: object + properties: + a: + type: string + enum: *A69 + c70: + type: object + properties: + a: + type: string + enum: *A70 + c71: + type: object + properties: + a: + type: string + enum: *A71 + c72: + type: object + properties: + a: + type: string + enum: *A72 + c73: + type: object + properties: + a: + type: string + enum: *A73 + c74: + type: object + properties: + a: + type: string + enum: *A74 + c75: + type: object + properties: + a: + type: string + enum: *A75 + c76: + type: object + properties: + a: + type: string + enum: *A76 + c77: + type: object + properties: + a: + type: string + enum: *A77 + c78: + type: object + properties: + a: + type: string + enum: *A78 + c79: + type: object + properties: + a: + type: string + enum: *A79 + c80: + type: object + properties: + a: + type: string + enum: *A80 + c81: + type: object + properties: + a: + type: string + enum: *A81 + c82: + type: object + properties: + a: + type: string + enum: *A82 + c83: + type: object + properties: + a: + type: string + enum: *A83 + c84: + type: object + properties: + a: + type: string + enum: *A84 + c85: + type: object + properties: + a: + type: string + enum: *A85 + c86: + type: object + properties: + a: + type: string + enum: *A86 + c87: + type: object + properties: + a: + type: string + enum: *A87 + c88: + type: object + properties: + a: + type: string + enum: *A88 + c89: + type: object + properties: + a: + type: string + enum: *A89 + c90: + type: object + properties: + a: + type: string + enum: *A90 + c91: + type: object + properties: + a: + type: string + enum: *A91 + c92: + type: object + properties: + a: + type: string + enum: *A92 + c93: + type: object + properties: + a: + type: string + enum: *A93 + c94: + type: object + properties: + a: + type: string + enum: *A94 + c95: + type: object + properties: + a: + type: string + enum: *A95 + c96: + type: object + properties: + a: + type: string + enum: *A96 + c97: + type: object + properties: + a: + type: string + enum: *A97 + c98: + type: object + properties: + a: + type: string + enum: *A98 + c99: + type: object + properties: + a: + type: string + enum: *A99 + c100: + type: object + properties: + a: + type: string + enum: *A100 diff --git a/pom.xml b/pom.xml index 21b38de421..a734324b7f 100644 --- a/pom.xml +++ b/pom.xml @@ -267,7 +267,7 @@ 2.4 - 1.24 + 1.26 1.7.28 1.6.1 4.8.1