diff --git a/redaction-service-v1/redaction-service-server-v1/pom.xml b/redaction-service-v1/redaction-service-server-v1/pom.xml index e063363e..4130b3bc 100644 --- a/redaction-service-v1/redaction-service-server-v1/pom.xml +++ b/redaction-service-v1/redaction-service-server-v1/pom.xml @@ -22,6 +22,18 @@ + + org.jsonschema2pojo + jsonschema2pojo-core + 1.1.1 + + + + org.apache.httpcomponents.client5 + httpclient5 + 5.1.3 + + com.knecon.fforesight tenant-commons diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/ApryseAiResponse.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/ApryseAiResponse.java new file mode 100644 index 00000000..6bf7f3ca --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/ApryseAiResponse.java @@ -0,0 +1,98 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "pages" +}) +@Generated("jsonschema2pojo") +public class ApryseAiResponse { + + @JsonProperty("pages") + private List pages = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("pages") + public List getPages() { + return pages; + } + + @JsonProperty("pages") + public void setPages(List pages) { + this.pages = pages; + } + + public ApryseAiResponse withPages(List pages) { + this.pages = pages; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public ApryseAiResponse withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(ApryseAiResponse.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("pages"); + sb.append('='); + sb.append(((this.pages == null)?"":this.pages)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.pages == null)? 0 :this.pages.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof ApryseAiResponse) == false) { + return false; + } + ApryseAiResponse rhs = ((ApryseAiResponse) other); + return (((this.pages == rhs.pages)||((this.pages!= null)&&this.pages.equals(rhs.pages)))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Cell.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Cell.java new file mode 100644 index 00000000..a0470824 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Cell.java @@ -0,0 +1,213 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "rect", + "rowStart", + "rowEnd", + "columnStart", + "columnEnd", + "kids" +}) +@Generated("jsonschema2pojo") +public class Cell { + + @JsonProperty("rect") + private List rect = new ArrayList(); + @JsonProperty("rowStart") + private Integer rowStart; + @JsonProperty("rowEnd") + private Integer rowEnd; + @JsonProperty("columnStart") + private Integer columnStart; + @JsonProperty("columnEnd") + private Integer columnEnd; + @JsonProperty("kids") + private List kids = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("rect") + public List getRect() { + return rect; + } + + @JsonProperty("rect") + public void setRect(List rect) { + this.rect = rect; + } + + public Cell withRect(List rect) { + this.rect = rect; + return this; + } + + @JsonProperty("rowStart") + public Integer getRowStart() { + return rowStart; + } + + @JsonProperty("rowStart") + public void setRowStart(Integer rowStart) { + this.rowStart = rowStart; + } + + public Cell withRowStart(Integer rowStart) { + this.rowStart = rowStart; + return this; + } + + @JsonProperty("rowEnd") + public Integer getRowEnd() { + return rowEnd; + } + + @JsonProperty("rowEnd") + public void setRowEnd(Integer rowEnd) { + this.rowEnd = rowEnd; + } + + public Cell withRowEnd(Integer rowEnd) { + this.rowEnd = rowEnd; + return this; + } + + @JsonProperty("columnStart") + public Integer getColumnStart() { + return columnStart; + } + + @JsonProperty("columnStart") + public void setColumnStart(Integer columnStart) { + this.columnStart = columnStart; + } + + public Cell withColumnStart(Integer columnStart) { + this.columnStart = columnStart; + return this; + } + + @JsonProperty("columnEnd") + public Integer getColumnEnd() { + return columnEnd; + } + + @JsonProperty("columnEnd") + public void setColumnEnd(Integer columnEnd) { + this.columnEnd = columnEnd; + } + + public Cell withColumnEnd(Integer columnEnd) { + this.columnEnd = columnEnd; + return this; + } + + @JsonProperty("kids") + public List getKids() { + return kids; + } + + @JsonProperty("kids") + public void setKids(List kids) { + this.kids = kids; + } + + public Cell withKids(List kids) { + this.kids = kids; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Cell withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Cell.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("rect"); + sb.append('='); + sb.append(((this.rect == null)?"":this.rect)); + sb.append(','); + sb.append("rowStart"); + sb.append('='); + sb.append(((this.rowStart == null)?"":this.rowStart)); + sb.append(','); + sb.append("rowEnd"); + sb.append('='); + sb.append(((this.rowEnd == null)?"":this.rowEnd)); + sb.append(','); + sb.append("columnStart"); + sb.append('='); + sb.append(((this.columnStart == null)?"":this.columnStart)); + sb.append(','); + sb.append("columnEnd"); + sb.append('='); + sb.append(((this.columnEnd == null)?"":this.columnEnd)); + sb.append(','); + sb.append("kids"); + sb.append('='); + sb.append(((this.kids == null)?"":this.kids)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.rect == null)? 0 :this.rect.hashCode())); + result = ((result* 31)+((this.columnEnd == null)? 0 :this.columnEnd.hashCode())); + result = ((result* 31)+((this.columnStart == null)? 0 :this.columnStart.hashCode())); + result = ((result* 31)+((this.rowStart == null)? 0 :this.rowStart.hashCode())); + result = ((result* 31)+((this.rowEnd == null)? 0 :this.rowEnd.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + result = ((result* 31)+((this.kids == null)? 0 :this.kids.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Cell) == false) { + return false; + } + Cell rhs = ((Cell) other); + return ((((((((this.rect == rhs.rect)||((this.rect!= null)&&this.rect.equals(rhs.rect)))&&((this.columnEnd == rhs.columnEnd)||((this.columnEnd!= null)&&this.columnEnd.equals(rhs.columnEnd))))&&((this.columnStart == rhs.columnStart)||((this.columnStart!= null)&&this.columnStart.equals(rhs.columnStart))))&&((this.rowStart == rhs.rowStart)||((this.rowStart!= null)&&this.rowStart.equals(rhs.rowStart))))&&((this.rowEnd == rhs.rowEnd)||((this.rowEnd!= null)&&this.rowEnd.equals(rhs.rowEnd))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.kids == rhs.kids)||((this.kids!= null)&&this.kids.equals(rhs.kids)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Element.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Element.java new file mode 100644 index 00000000..c71595c7 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Element.java @@ -0,0 +1,236 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "type", + "kids", + "confidence", + "rect", + "rowSeparators", + "columnSeparators", + "cells" +}) +@Generated("jsonschema2pojo") +public class Element { + + @JsonProperty("type") + private String type; + @JsonProperty("kids") + private List kids = new ArrayList(); + @JsonProperty("confidence") + private Double confidence; + @JsonProperty("rect") + private List rect = new ArrayList(); + @JsonProperty("rowSeparators") + private List rowSeparators = new ArrayList(); + @JsonProperty("columnSeparators") + private List columnSeparators = new ArrayList(); + @JsonProperty("cells") + private List cells = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("type") + public String getType() { + return type; + } + + @JsonProperty("type") + public void setType(String type) { + this.type = type; + } + + public Element withType(String type) { + this.type = type; + return this; + } + + @JsonProperty("kids") + public List getKids() { + return kids; + } + + @JsonProperty("kids") + public void setKids(List kids) { + this.kids = kids; + } + + public Element withKids(List kids) { + this.kids = kids; + return this; + } + + @JsonProperty("confidence") + public Double getConfidence() { + return confidence; + } + + @JsonProperty("confidence") + public void setConfidence(Double confidence) { + this.confidence = confidence; + } + + public Element withConfidence(Double confidence) { + this.confidence = confidence; + return this; + } + + @JsonProperty("rect") + public List getRect() { + return rect; + } + + @JsonProperty("rect") + public void setRect(List rect) { + this.rect = rect; + } + + public Element withRect(List rect) { + this.rect = rect; + return this; + } + + @JsonProperty("rowSeparators") + public List getRowSeparators() { + return rowSeparators; + } + + @JsonProperty("rowSeparators") + public void setRowSeparators(List rowSeparators) { + this.rowSeparators = rowSeparators; + } + + public Element withRowSeparators(List rowSeparators) { + this.rowSeparators = rowSeparators; + return this; + } + + @JsonProperty("columnSeparators") + public List getColumnSeparators() { + return columnSeparators; + } + + @JsonProperty("columnSeparators") + public void setColumnSeparators(List columnSeparators) { + this.columnSeparators = columnSeparators; + } + + public Element withColumnSeparators(List columnSeparators) { + this.columnSeparators = columnSeparators; + return this; + } + + @JsonProperty("cells") + public List getCells() { + return cells; + } + + @JsonProperty("cells") + public void setCells(List cells) { + this.cells = cells; + } + + public Element withCells(List cells) { + this.cells = cells; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Element withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Element.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("type"); + sb.append('='); + sb.append(((this.type == null)?"":this.type)); + sb.append(','); + sb.append("kids"); + sb.append('='); + sb.append(((this.kids == null)?"":this.kids)); + sb.append(','); + sb.append("confidence"); + sb.append('='); + sb.append(((this.confidence == null)?"":this.confidence)); + sb.append(','); + sb.append("rect"); + sb.append('='); + sb.append(((this.rect == null)?"":this.rect)); + sb.append(','); + sb.append("rowSeparators"); + sb.append('='); + sb.append(((this.rowSeparators == null)?"":this.rowSeparators)); + sb.append(','); + sb.append("columnSeparators"); + sb.append('='); + sb.append(((this.columnSeparators == null)?"":this.columnSeparators)); + sb.append(','); + sb.append("cells"); + sb.append('='); + sb.append(((this.cells == null)?"":this.cells)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.rect == null)? 0 :this.rect.hashCode())); + result = ((result* 31)+((this.cells == null)? 0 :this.cells.hashCode())); + result = ((result* 31)+((this.confidence == null)? 0 :this.confidence.hashCode())); + result = ((result* 31)+((this.columnSeparators == null)? 0 :this.columnSeparators.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + result = ((result* 31)+((this.type == null)? 0 :this.type.hashCode())); + result = ((result* 31)+((this.rowSeparators == null)? 0 :this.rowSeparators.hashCode())); + result = ((result* 31)+((this.kids == null)? 0 :this.kids.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Element) == false) { + return false; + } + Element rhs = ((Element) other); + return (((((((((this.rect == rhs.rect)||((this.rect!= null)&&this.rect.equals(rhs.rect)))&&((this.cells == rhs.cells)||((this.cells!= null)&&this.cells.equals(rhs.cells))))&&((this.confidence == rhs.confidence)||((this.confidence!= null)&&this.confidence.equals(rhs.confidence))))&&((this.columnSeparators == rhs.columnSeparators)||((this.columnSeparators!= null)&&this.columnSeparators.equals(rhs.columnSeparators))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.type == rhs.type)||((this.type!= null)&&this.type.equals(rhs.type))))&&((this.rowSeparators == rhs.rowSeparators)||((this.rowSeparators!= null)&&this.rowSeparators.equals(rhs.rowSeparators))))&&((this.kids == rhs.kids)||((this.kids!= null)&&this.kids.equals(rhs.kids)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid.java new file mode 100644 index 00000000..867b13f3 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid.java @@ -0,0 +1,213 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "type", + "rect", + "quad", + "text", + "style", + "kids" +}) +@Generated("jsonschema2pojo") +public class Kid { + + @JsonProperty("type") + private String type; + @JsonProperty("rect") + private List rect = new ArrayList(); + @JsonProperty("quad") + private List quad = new ArrayList(); + @JsonProperty("text") + private String text; + @JsonProperty("style") + private Style style; + @JsonProperty("kids") + private List kids = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("type") + public String getType() { + return type; + } + + @JsonProperty("type") + public void setType(String type) { + this.type = type; + } + + public Kid withType(String type) { + this.type = type; + return this; + } + + @JsonProperty("rect") + public List getRect() { + return rect; + } + + @JsonProperty("rect") + public void setRect(List rect) { + this.rect = rect; + } + + public Kid withRect(List rect) { + this.rect = rect; + return this; + } + + @JsonProperty("quad") + public List getQuad() { + return quad; + } + + @JsonProperty("quad") + public void setQuad(List quad) { + this.quad = quad; + } + + public Kid withQuad(List quad) { + this.quad = quad; + return this; + } + + @JsonProperty("text") + public String getText() { + return text; + } + + @JsonProperty("text") + public void setText(String text) { + this.text = text; + } + + public Kid withText(String text) { + this.text = text; + return this; + } + + @JsonProperty("style") + public Style getStyle() { + return style; + } + + @JsonProperty("style") + public void setStyle(Style style) { + this.style = style; + } + + public Kid withStyle(Style style) { + this.style = style; + return this; + } + + @JsonProperty("kids") + public List getKids() { + return kids; + } + + @JsonProperty("kids") + public void setKids(List kids) { + this.kids = kids; + } + + public Kid withKids(List kids) { + this.kids = kids; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Kid withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Kid.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("type"); + sb.append('='); + sb.append(((this.type == null)?"":this.type)); + sb.append(','); + sb.append("rect"); + sb.append('='); + sb.append(((this.rect == null)?"":this.rect)); + sb.append(','); + sb.append("quad"); + sb.append('='); + sb.append(((this.quad == null)?"":this.quad)); + sb.append(','); + sb.append("text"); + sb.append('='); + sb.append(((this.text == null)?"":this.text)); + sb.append(','); + sb.append("style"); + sb.append('='); + sb.append(((this.style == null)?"":this.style)); + sb.append(','); + sb.append("kids"); + sb.append('='); + sb.append(((this.kids == null)?"":this.kids)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.rect == null)? 0 :this.rect.hashCode())); + result = ((result* 31)+((this.quad == null)? 0 :this.quad.hashCode())); + result = ((result* 31)+((this.style == null)? 0 :this.style.hashCode())); + result = ((result* 31)+((this.text == null)? 0 :this.text.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + result = ((result* 31)+((this.type == null)? 0 :this.type.hashCode())); + result = ((result* 31)+((this.kids == null)? 0 :this.kids.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Kid) == false) { + return false; + } + Kid rhs = ((Kid) other); + return ((((((((this.rect == rhs.rect)||((this.rect!= null)&&this.rect.equals(rhs.rect)))&&((this.quad == rhs.quad)||((this.quad!= null)&&this.quad.equals(rhs.quad))))&&((this.style == rhs.style)||((this.style!= null)&&this.style.equals(rhs.style))))&&((this.text == rhs.text)||((this.text!= null)&&this.text.equals(rhs.text))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.type == rhs.type)||((this.type!= null)&&this.type.equals(rhs.type))))&&((this.kids == rhs.kids)||((this.kids!= null)&&this.kids.equals(rhs.kids)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__1.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__1.java new file mode 100644 index 00000000..4c50f1fd --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__1.java @@ -0,0 +1,167 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "type", + "rect", + "quad", + "text" +}) +@Generated("jsonschema2pojo") +public class Kid__1 { + + @JsonProperty("type") + private String type; + @JsonProperty("rect") + private List rect = new ArrayList(); + @JsonProperty("quad") + private List quad = new ArrayList(); + @JsonProperty("text") + private String text; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("type") + public String getType() { + return type; + } + + @JsonProperty("type") + public void setType(String type) { + this.type = type; + } + + public Kid__1 withType(String type) { + this.type = type; + return this; + } + + @JsonProperty("rect") + public List getRect() { + return rect; + } + + @JsonProperty("rect") + public void setRect(List rect) { + this.rect = rect; + } + + public Kid__1 withRect(List rect) { + this.rect = rect; + return this; + } + + @JsonProperty("quad") + public List getQuad() { + return quad; + } + + @JsonProperty("quad") + public void setQuad(List quad) { + this.quad = quad; + } + + public Kid__1 withQuad(List quad) { + this.quad = quad; + return this; + } + + @JsonProperty("text") + public String getText() { + return text; + } + + @JsonProperty("text") + public void setText(String text) { + this.text = text; + } + + public Kid__1 withText(String text) { + this.text = text; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Kid__1 withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Kid__1 .class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("type"); + sb.append('='); + sb.append(((this.type == null)?"":this.type)); + sb.append(','); + sb.append("rect"); + sb.append('='); + sb.append(((this.rect == null)?"":this.rect)); + sb.append(','); + sb.append("quad"); + sb.append('='); + sb.append(((this.quad == null)?"":this.quad)); + sb.append(','); + sb.append("text"); + sb.append('='); + sb.append(((this.text == null)?"":this.text)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.rect == null)? 0 :this.rect.hashCode())); + result = ((result* 31)+((this.quad == null)? 0 :this.quad.hashCode())); + result = ((result* 31)+((this.text == null)? 0 :this.text.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + result = ((result* 31)+((this.type == null)? 0 :this.type.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Kid__1) == false) { + return false; + } + Kid__1 rhs = ((Kid__1) other); + return ((((((this.rect == rhs.rect)||((this.rect!= null)&&this.rect.equals(rhs.rect)))&&((this.quad == rhs.quad)||((this.quad!= null)&&this.quad.equals(rhs.quad))))&&((this.text == rhs.text)||((this.text!= null)&&this.text.equals(rhs.text))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.type == rhs.type)||((this.type!= null)&&this.type.equals(rhs.type)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__2.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__2.java new file mode 100644 index 00000000..901d0fa0 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__2.java @@ -0,0 +1,121 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "type", + "kids" +}) +@Generated("jsonschema2pojo") +public class Kid__2 { + + @JsonProperty("type") + private String type; + @JsonProperty("kids") + private List kids = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("type") + public String getType() { + return type; + } + + @JsonProperty("type") + public void setType(String type) { + this.type = type; + } + + public Kid__2 withType(String type) { + this.type = type; + return this; + } + + @JsonProperty("kids") + public List getKids() { + return kids; + } + + @JsonProperty("kids") + public void setKids(List kids) { + this.kids = kids; + } + + public Kid__2 withKids(List kids) { + this.kids = kids; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Kid__2 withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Kid__2 .class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("type"); + sb.append('='); + sb.append(((this.type == null)?"":this.type)); + sb.append(','); + sb.append("kids"); + sb.append('='); + sb.append(((this.kids == null)?"":this.kids)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.type == null)? 0 :this.type.hashCode())); + result = ((result* 31)+((this.kids == null)? 0 :this.kids.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Kid__2) == false) { + return false; + } + Kid__2 rhs = ((Kid__2) other); + return ((((this.type == rhs.type)||((this.type!= null)&&this.type.equals(rhs.type)))&&((this.kids == rhs.kids)||((this.kids!= null)&&this.kids.equals(rhs.kids))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__3.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__3.java new file mode 100644 index 00000000..b41f6dbd --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__3.java @@ -0,0 +1,213 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "type", + "rect", + "quad", + "text", + "style", + "kids" +}) +@Generated("jsonschema2pojo") +public class Kid__3 { + + @JsonProperty("type") + private String type; + @JsonProperty("rect") + private List rect = new ArrayList(); + @JsonProperty("quad") + private List quad = new ArrayList(); + @JsonProperty("text") + private String text; + @JsonProperty("style") + private Style__1 style; + @JsonProperty("kids") + private List kids = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("type") + public String getType() { + return type; + } + + @JsonProperty("type") + public void setType(String type) { + this.type = type; + } + + public Kid__3 withType(String type) { + this.type = type; + return this; + } + + @JsonProperty("rect") + public List getRect() { + return rect; + } + + @JsonProperty("rect") + public void setRect(List rect) { + this.rect = rect; + } + + public Kid__3 withRect(List rect) { + this.rect = rect; + return this; + } + + @JsonProperty("quad") + public List getQuad() { + return quad; + } + + @JsonProperty("quad") + public void setQuad(List quad) { + this.quad = quad; + } + + public Kid__3 withQuad(List quad) { + this.quad = quad; + return this; + } + + @JsonProperty("text") + public String getText() { + return text; + } + + @JsonProperty("text") + public void setText(String text) { + this.text = text; + } + + public Kid__3 withText(String text) { + this.text = text; + return this; + } + + @JsonProperty("style") + public Style__1 getStyle() { + return style; + } + + @JsonProperty("style") + public void setStyle(Style__1 style) { + this.style = style; + } + + public Kid__3 withStyle(Style__1 style) { + this.style = style; + return this; + } + + @JsonProperty("kids") + public List getKids() { + return kids; + } + + @JsonProperty("kids") + public void setKids(List kids) { + this.kids = kids; + } + + public Kid__3 withKids(List kids) { + this.kids = kids; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Kid__3 withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Kid__3 .class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("type"); + sb.append('='); + sb.append(((this.type == null)?"":this.type)); + sb.append(','); + sb.append("rect"); + sb.append('='); + sb.append(((this.rect == null)?"":this.rect)); + sb.append(','); + sb.append("quad"); + sb.append('='); + sb.append(((this.quad == null)?"":this.quad)); + sb.append(','); + sb.append("text"); + sb.append('='); + sb.append(((this.text == null)?"":this.text)); + sb.append(','); + sb.append("style"); + sb.append('='); + sb.append(((this.style == null)?"":this.style)); + sb.append(','); + sb.append("kids"); + sb.append('='); + sb.append(((this.kids == null)?"":this.kids)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.rect == null)? 0 :this.rect.hashCode())); + result = ((result* 31)+((this.quad == null)? 0 :this.quad.hashCode())); + result = ((result* 31)+((this.style == null)? 0 :this.style.hashCode())); + result = ((result* 31)+((this.text == null)? 0 :this.text.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + result = ((result* 31)+((this.type == null)? 0 :this.type.hashCode())); + result = ((result* 31)+((this.kids == null)? 0 :this.kids.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Kid__3) == false) { + return false; + } + Kid__3 rhs = ((Kid__3) other); + return ((((((((this.rect == rhs.rect)||((this.rect!= null)&&this.rect.equals(rhs.rect)))&&((this.quad == rhs.quad)||((this.quad!= null)&&this.quad.equals(rhs.quad))))&&((this.style == rhs.style)||((this.style!= null)&&this.style.equals(rhs.style))))&&((this.text == rhs.text)||((this.text!= null)&&this.text.equals(rhs.text))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.type == rhs.type)||((this.type!= null)&&this.type.equals(rhs.type))))&&((this.kids == rhs.kids)||((this.kids!= null)&&this.kids.equals(rhs.kids)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__4.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__4.java new file mode 100644 index 00000000..20650deb --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Kid__4.java @@ -0,0 +1,167 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "type", + "rect", + "quad", + "text" +}) +@Generated("jsonschema2pojo") +public class Kid__4 { + + @JsonProperty("type") + private String type; + @JsonProperty("rect") + private List rect = new ArrayList(); + @JsonProperty("quad") + private List quad = new ArrayList(); + @JsonProperty("text") + private String text; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("type") + public String getType() { + return type; + } + + @JsonProperty("type") + public void setType(String type) { + this.type = type; + } + + public Kid__4 withType(String type) { + this.type = type; + return this; + } + + @JsonProperty("rect") + public List getRect() { + return rect; + } + + @JsonProperty("rect") + public void setRect(List rect) { + this.rect = rect; + } + + public Kid__4 withRect(List rect) { + this.rect = rect; + return this; + } + + @JsonProperty("quad") + public List getQuad() { + return quad; + } + + @JsonProperty("quad") + public void setQuad(List quad) { + this.quad = quad; + } + + public Kid__4 withQuad(List quad) { + this.quad = quad; + return this; + } + + @JsonProperty("text") + public String getText() { + return text; + } + + @JsonProperty("text") + public void setText(String text) { + this.text = text; + } + + public Kid__4 withText(String text) { + this.text = text; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Kid__4 withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Kid__4 .class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("type"); + sb.append('='); + sb.append(((this.type == null)?"":this.type)); + sb.append(','); + sb.append("rect"); + sb.append('='); + sb.append(((this.rect == null)?"":this.rect)); + sb.append(','); + sb.append("quad"); + sb.append('='); + sb.append(((this.quad == null)?"":this.quad)); + sb.append(','); + sb.append("text"); + sb.append('='); + sb.append(((this.text == null)?"":this.text)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.rect == null)? 0 :this.rect.hashCode())); + result = ((result* 31)+((this.quad == null)? 0 :this.quad.hashCode())); + result = ((result* 31)+((this.text == null)? 0 :this.text.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + result = ((result* 31)+((this.type == null)? 0 :this.type.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Kid__4) == false) { + return false; + } + Kid__4 rhs = ((Kid__4) other); + return ((((((this.rect == rhs.rect)||((this.rect!= null)&&this.rect.equals(rhs.rect)))&&((this.quad == rhs.quad)||((this.quad!= null)&&this.quad.equals(rhs.quad))))&&((this.text == rhs.text)||((this.text!= null)&&this.text.equals(rhs.text))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.type == rhs.type)||((this.type!= null)&&this.type.equals(rhs.type)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Page.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Page.java new file mode 100644 index 00000000..773a62af --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Page.java @@ -0,0 +1,121 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "properties", + "elements" +}) +@Generated("jsonschema2pojo") +public class Page { + + @JsonProperty("properties") + private Properties properties; + @JsonProperty("elements") + private List elements = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("properties") + public Properties getProperties() { + return properties; + } + + @JsonProperty("properties") + public void setProperties(Properties properties) { + this.properties = properties; + } + + public Page withProperties(Properties properties) { + this.properties = properties; + return this; + } + + @JsonProperty("elements") + public List getElements() { + return elements; + } + + @JsonProperty("elements") + public void setElements(List elements) { + this.elements = elements; + } + + public Page withElements(List elements) { + this.elements = elements; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Page withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Page.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("properties"); + sb.append('='); + sb.append(((this.properties == null)?"":this.properties)); + sb.append(','); + sb.append("elements"); + sb.append('='); + sb.append(((this.elements == null)?"":this.elements)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.properties == null)? 0 :this.properties.hashCode())); + result = ((result* 31)+((this.elements == null)? 0 :this.elements.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Page) == false) { + return false; + } + Page rhs = ((Page) other); + return ((((this.properties == rhs.properties)||((this.properties!= null)&&this.properties.equals(rhs.properties)))&&((this.elements == rhs.elements)||((this.elements!= null)&&this.elements.equals(rhs.elements))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Properties.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Properties.java new file mode 100644 index 00000000..e41a2035 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Properties.java @@ -0,0 +1,190 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "pageNumber", + "cropBox", + "mediaBox", + "rotation", + "langCode" +}) +@Generated("jsonschema2pojo") +public class Properties { + + @JsonProperty("pageNumber") + private Integer pageNumber; + @JsonProperty("cropBox") + private List cropBox = new ArrayList(); + @JsonProperty("mediaBox") + private List mediaBox = new ArrayList(); + @JsonProperty("rotation") + private Integer rotation; + @JsonProperty("langCode") + private String langCode; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("pageNumber") + public Integer getPageNumber() { + return pageNumber; + } + + @JsonProperty("pageNumber") + public void setPageNumber(Integer pageNumber) { + this.pageNumber = pageNumber; + } + + public Properties withPageNumber(Integer pageNumber) { + this.pageNumber = pageNumber; + return this; + } + + @JsonProperty("cropBox") + public List getCropBox() { + return cropBox; + } + + @JsonProperty("cropBox") + public void setCropBox(List cropBox) { + this.cropBox = cropBox; + } + + public Properties withCropBox(List cropBox) { + this.cropBox = cropBox; + return this; + } + + @JsonProperty("mediaBox") + public List getMediaBox() { + return mediaBox; + } + + @JsonProperty("mediaBox") + public void setMediaBox(List mediaBox) { + this.mediaBox = mediaBox; + } + + public Properties withMediaBox(List mediaBox) { + this.mediaBox = mediaBox; + return this; + } + + @JsonProperty("rotation") + public Integer getRotation() { + return rotation; + } + + @JsonProperty("rotation") + public void setRotation(Integer rotation) { + this.rotation = rotation; + } + + public Properties withRotation(Integer rotation) { + this.rotation = rotation; + return this; + } + + @JsonProperty("langCode") + public String getLangCode() { + return langCode; + } + + @JsonProperty("langCode") + public void setLangCode(String langCode) { + this.langCode = langCode; + } + + public Properties withLangCode(String langCode) { + this.langCode = langCode; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Properties withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Properties.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("pageNumber"); + sb.append('='); + sb.append(((this.pageNumber == null)?"":this.pageNumber)); + sb.append(','); + sb.append("cropBox"); + sb.append('='); + sb.append(((this.cropBox == null)?"":this.cropBox)); + sb.append(','); + sb.append("mediaBox"); + sb.append('='); + sb.append(((this.mediaBox == null)?"":this.mediaBox)); + sb.append(','); + sb.append("rotation"); + sb.append('='); + sb.append(((this.rotation == null)?"":this.rotation)); + sb.append(','); + sb.append("langCode"); + sb.append('='); + sb.append(((this.langCode == null)?"":this.langCode)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.mediaBox == null)? 0 :this.mediaBox.hashCode())); + result = ((result* 31)+((this.cropBox == null)? 0 :this.cropBox.hashCode())); + result = ((result* 31)+((this.pageNumber == null)? 0 :this.pageNumber.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + result = ((result* 31)+((this.rotation == null)? 0 :this.rotation.hashCode())); + result = ((result* 31)+((this.langCode == null)? 0 :this.langCode.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Properties) == false) { + return false; + } + Properties rhs = ((Properties) other); + return (((((((this.mediaBox == rhs.mediaBox)||((this.mediaBox!= null)&&this.mediaBox.equals(rhs.mediaBox)))&&((this.cropBox == rhs.cropBox)||((this.cropBox!= null)&&this.cropBox.equals(rhs.cropBox))))&&((this.pageNumber == rhs.pageNumber)||((this.pageNumber!= null)&&this.pageNumber.equals(rhs.pageNumber))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.rotation == rhs.rotation)||((this.rotation!= null)&&this.rotation.equals(rhs.rotation))))&&((this.langCode == rhs.langCode)||((this.langCode!= null)&&this.langCode.equals(rhs.langCode)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Style.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Style.java new file mode 100644 index 00000000..74fbb889 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Style.java @@ -0,0 +1,211 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "color", + "name", + "size", + "weight", + "italic", + "serif" +}) +@Generated("jsonschema2pojo") +public class Style { + + @JsonProperty("color") + private String color; + @JsonProperty("name") + private String name; + @JsonProperty("size") + private Double size; + @JsonProperty("weight") + private Double weight; + @JsonProperty("italic") + private Boolean italic; + @JsonProperty("serif") + private Boolean serif; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("color") + public String getColor() { + return color; + } + + @JsonProperty("color") + public void setColor(String color) { + this.color = color; + } + + public Style withColor(String color) { + this.color = color; + return this; + } + + @JsonProperty("name") + public String getName() { + return name; + } + + @JsonProperty("name") + public void setName(String name) { + this.name = name; + } + + public Style withName(String name) { + this.name = name; + return this; + } + + @JsonProperty("size") + public Double getSize() { + return size; + } + + @JsonProperty("size") + public void setSize(Double size) { + this.size = size; + } + + public Style withSize(Double size) { + this.size = size; + return this; + } + + @JsonProperty("weight") + public Double getWeight() { + return weight; + } + + @JsonProperty("weight") + public void setWeight(Double weight) { + this.weight = weight; + } + + public Style withWeight(Double weight) { + this.weight = weight; + return this; + } + + @JsonProperty("italic") + public Boolean getItalic() { + return italic; + } + + @JsonProperty("italic") + public void setItalic(Boolean italic) { + this.italic = italic; + } + + public Style withItalic(Boolean italic) { + this.italic = italic; + return this; + } + + @JsonProperty("serif") + public Boolean getSerif() { + return serif; + } + + @JsonProperty("serif") + public void setSerif(Boolean serif) { + this.serif = serif; + } + + public Style withSerif(Boolean serif) { + this.serif = serif; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Style withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Style.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("color"); + sb.append('='); + sb.append(((this.color == null)?"":this.color)); + sb.append(','); + sb.append("name"); + sb.append('='); + sb.append(((this.name == null)?"":this.name)); + sb.append(','); + sb.append("size"); + sb.append('='); + sb.append(((this.size == null)?"":this.size)); + sb.append(','); + sb.append("weight"); + sb.append('='); + sb.append(((this.weight == null)?"":this.weight)); + sb.append(','); + sb.append("italic"); + sb.append('='); + sb.append(((this.italic == null)?"":this.italic)); + sb.append(','); + sb.append("serif"); + sb.append('='); + sb.append(((this.serif == null)?"":this.serif)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.color == null)? 0 :this.color.hashCode())); + result = ((result* 31)+((this.size == null)? 0 :this.size.hashCode())); + result = ((result* 31)+((this.name == null)? 0 :this.name.hashCode())); + result = ((result* 31)+((this.weight == null)? 0 :this.weight.hashCode())); + result = ((result* 31)+((this.serif == null)? 0 :this.serif.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + result = ((result* 31)+((this.italic == null)? 0 :this.italic.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Style) == false) { + return false; + } + Style rhs = ((Style) other); + return ((((((((this.color == rhs.color)||((this.color!= null)&&this.color.equals(rhs.color)))&&((this.size == rhs.size)||((this.size!= null)&&this.size.equals(rhs.size))))&&((this.name == rhs.name)||((this.name!= null)&&this.name.equals(rhs.name))))&&((this.weight == rhs.weight)||((this.weight!= null)&&this.weight.equals(rhs.weight))))&&((this.serif == rhs.serif)||((this.serif!= null)&&this.serif.equals(rhs.serif))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.italic == rhs.italic)||((this.italic!= null)&&this.italic.equals(rhs.italic)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Style__1.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Style__1.java new file mode 100644 index 00000000..59d9887a --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/apryse/Style__1.java @@ -0,0 +1,211 @@ + +package com.iqser.red.service.redaction.v1.server.apryse; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "color", + "name", + "size", + "weight", + "italic", + "serif" +}) +@Generated("jsonschema2pojo") +public class Style__1 { + + @JsonProperty("color") + private String color; + @JsonProperty("name") + private String name; + @JsonProperty("size") + private Double size; + @JsonProperty("weight") + private Double weight; + @JsonProperty("italic") + private Boolean italic; + @JsonProperty("serif") + private Boolean serif; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + @JsonProperty("color") + public String getColor() { + return color; + } + + @JsonProperty("color") + public void setColor(String color) { + this.color = color; + } + + public Style__1 withColor(String color) { + this.color = color; + return this; + } + + @JsonProperty("name") + public String getName() { + return name; + } + + @JsonProperty("name") + public void setName(String name) { + this.name = name; + } + + public Style__1 withName(String name) { + this.name = name; + return this; + } + + @JsonProperty("size") + public Double getSize() { + return size; + } + + @JsonProperty("size") + public void setSize(Double size) { + this.size = size; + } + + public Style__1 withSize(Double size) { + this.size = size; + return this; + } + + @JsonProperty("weight") + public Double getWeight() { + return weight; + } + + @JsonProperty("weight") + public void setWeight(Double weight) { + this.weight = weight; + } + + public Style__1 withWeight(Double weight) { + this.weight = weight; + return this; + } + + @JsonProperty("italic") + public Boolean getItalic() { + return italic; + } + + @JsonProperty("italic") + public void setItalic(Boolean italic) { + this.italic = italic; + } + + public Style__1 withItalic(Boolean italic) { + this.italic = italic; + return this; + } + + @JsonProperty("serif") + public Boolean getSerif() { + return serif; + } + + @JsonProperty("serif") + public void setSerif(Boolean serif) { + this.serif = serif; + } + + public Style__1 withSerif(Boolean serif) { + this.serif = serif; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Style__1 withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(Style__1 .class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('['); + sb.append("color"); + sb.append('='); + sb.append(((this.color == null)?"":this.color)); + sb.append(','); + sb.append("name"); + sb.append('='); + sb.append(((this.name == null)?"":this.name)); + sb.append(','); + sb.append("size"); + sb.append('='); + sb.append(((this.size == null)?"":this.size)); + sb.append(','); + sb.append("weight"); + sb.append('='); + sb.append(((this.weight == null)?"":this.weight)); + sb.append(','); + sb.append("italic"); + sb.append('='); + sb.append(((this.italic == null)?"":this.italic)); + sb.append(','); + sb.append("serif"); + sb.append('='); + sb.append(((this.serif == null)?"":this.serif)); + sb.append(','); + sb.append("additionalProperties"); + sb.append('='); + sb.append(((this.additionalProperties == null)?"":this.additionalProperties)); + sb.append(','); + if (sb.charAt((sb.length()- 1)) == ',') { + sb.setCharAt((sb.length()- 1), ']'); + } else { + sb.append(']'); + } + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 1; + result = ((result* 31)+((this.color == null)? 0 :this.color.hashCode())); + result = ((result* 31)+((this.size == null)? 0 :this.size.hashCode())); + result = ((result* 31)+((this.name == null)? 0 :this.name.hashCode())); + result = ((result* 31)+((this.weight == null)? 0 :this.weight.hashCode())); + result = ((result* 31)+((this.serif == null)? 0 :this.serif.hashCode())); + result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode())); + result = ((result* 31)+((this.italic == null)? 0 :this.italic.hashCode())); + return result; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Style__1) == false) { + return false; + } + Style__1 rhs = ((Style__1) other); + return ((((((((this.color == rhs.color)||((this.color!= null)&&this.color.equals(rhs.color)))&&((this.size == rhs.size)||((this.size!= null)&&this.size.equals(rhs.size))))&&((this.name == rhs.name)||((this.name!= null)&&this.name.equals(rhs.name))))&&((this.weight == rhs.weight)||((this.weight!= null)&&this.weight.equals(rhs.weight))))&&((this.serif == rhs.serif)||((this.serif!= null)&&this.serif.equals(rhs.serif))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.italic == rhs.italic)||((this.italic!= null)&&this.italic.equals(rhs.italic)))); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/ApryseAiTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/ApryseAiTest.java new file mode 100644 index 00000000..e53f674e --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/ApryseAiTest.java @@ -0,0 +1,261 @@ +package com.iqser.red.service.redaction.v1.server; + +import static org.mockito.Mockito.when; + +import java.awt.Color; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.util.List; +import java.util.UUID; + +import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; +import org.apache.commons.compress.archivers.zip.ZipFile; +import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder; +import org.apache.hc.client5.http.ssl.NoopHostnameVerifier; +import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder; +import org.apache.hc.client5.http.ssl.TrustAllStrategy; +import org.apache.hc.core5.ssl.SSLContextBuilder; +import org.apache.pdfbox.io.MemoryUsageSetting; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.jsonschema2pojo.DefaultGenerationConfig; +import org.jsonschema2pojo.GenerationConfig; +import org.jsonschema2pojo.Jackson2Annotator; +import org.jsonschema2pojo.SchemaGenerator; +import org.jsonschema2pojo.SchemaMapper; +import org.jsonschema2pojo.SchemaStore; +import org.jsonschema2pojo.SourceType; +import org.jsonschema2pojo.rules.RuleFactory; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.web.client.RestTemplate; + +import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type; +import com.iqser.red.service.redaction.v1.server.apryse.ApryseAiResponse; +import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.utils.FileUtils; +import com.iqser.red.storage.commons.StorageAutoConfiguration; +import com.iqser.red.storage.commons.service.StorageService; +import com.knecon.fforesight.tenantcommons.TenantContext; +import com.sun.codemodel.JCodeModel; + +import lombok.SneakyThrows; + +@ExtendWith(SpringExtension.class) +@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = {"application.type=DocuMine"}) +@Import(ApryseAiTest.RedactionIntegrationTestConfiguration.class) +public class ApryseAiTest extends AbstractRedactionIntegrationTest { + + private static final String RULES = loadFromClassPath("drools/documine_flora.drl"); + + private static final String APRYSE_URL = "https://ai-serve.pdftron.com/recog/predict"; + + @Autowired + private RestTemplate restTemplate; + + + @Test + @SneakyThrows + @Disabled + public void testApryseEndpoint() { + + ClassPathResource inputPdf = new ClassPathResource("files/apryseAi/Input.pdf"); + String outFile = "/tmp/Output.pdf"; + + byte[] inputAsBytes = inputPdf.getContentAsByteArray(); + + String filename = UUID.randomUUID().toString(); + HttpHeaders headers = new HttpHeaders(); + headers.add("Output-JSON", "true"); + headers.add("File-Name", filename); + headers.add("Force-OCR", "true"); + + HttpEntity httpEntity = new HttpEntity<>(inputAsBytes, headers); + + byte[] result = restTemplate.postForObject(APRYSE_URL, httpEntity, byte[].class); + + File responseFile = FileUtils.createTempFile(filename, "zip"); + try (FileOutputStream outputStream = new FileOutputStream(responseFile)) { + outputStream.write(result); + } + + ZipFile zipFile = new ZipFile(responseFile); + ZipArchiveEntry zipEntry = zipFile.getEntry(filename + ".json"); + byte[] jsonResponse = readCurrentZipEntry(zipEntry, zipFile); + zipFile.close(); + ApryseAiResponse response = objectMapper.readValue(jsonResponse, ApryseAiResponse.class); + + var pdDocument = PDDocument.load(inputPdf.getInputStream(), MemoryUsageSetting.setupMixed(67108864L)); + pdDocument.setAllSecurityToBeRemoved(true); + + response.getPages().forEach(page -> { + + try (PDPageContentStream contentStream = new PDPageContentStream(pdDocument, pdDocument.getPage(page.getProperties().getPageNumber() - 1), PDPageContentStream.AppendMode.APPEND, true)){ + contentStream.setStrokingColor(Color.BLUE); + contentStream.setLineWidth(1f); + + var tables = page.getElements().stream().filter(e -> e.getType().equals("table")).toList(); + tables.forEach(table -> { + table.getCells().forEach(cell -> { + try { + contentStream.addRect(cell.getRect().get(0).floatValue(), + cell.getRect().get(1).floatValue(), + cell.getRect().get(2).floatValue() - cell.getRect().get(0).floatValue(), + cell.getRect().get(3).floatValue() - cell.getRect().get(1).floatValue()); + contentStream.stroke(); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + }); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + + pdDocument.save(new File(outFile)); + pdDocument.close(); + } + + + private byte[] readCurrentZipEntry(ZipArchiveEntry ze, ZipFile zipFile) throws IOException { + + var bos = new ByteArrayOutputStream(); + + try (var entryStream = zipFile.getInputStream(ze)) { + var buffer = new byte[2048]; + var nBytes = 0; + + while ((nBytes = entryStream.read(buffer)) > 0) { + bos.write(buffer, 0, nBytes); + } + } + + return bos.toByteArray(); + } + + + @Test + @Disabled + public void generateJavaPojos() throws IOException { + + URL url = new URL("file:///tmp/Input.json"); + File file = new File("/tmp/Output/"); + convertJsonToJavaClass(url, file, "com.knecon.ai", "ApryseAiResponse"); + } + + + public void convertJsonToJavaClass(URL inputJsonUrl, File outputJavaClassDirectory, String packageName, String javaClassName) throws IOException { + + JCodeModel jcodeModel = new JCodeModel(); + GenerationConfig config = new DefaultGenerationConfig() { + @Override + public boolean isGenerateBuilders() { + + return true; + } + + + @Override + public SourceType getSourceType() { + + return SourceType.JSON; + } + }; + + SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator()); + mapper.generate(jcodeModel, javaClassName, packageName, inputJsonUrl); + jcodeModel.build(outputJavaClassDirectory); + } + + + @Configuration + @EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class}) + @ComponentScan(excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = StorageAutoConfiguration.class)}) + static class RedactionIntegrationTestConfiguration { + + @Bean + public RestTemplate restTemplate() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException { + + CloseableHttpClient httpClient = HttpClients.custom() + .setConnectionManager(PoolingHttpClientConnectionManagerBuilder.create() + .setSSLSocketFactory(SSLConnectionSocketFactoryBuilder.create() + .setSslContext(SSLContextBuilder.create().loadTrustMaterial(TrustAllStrategy.INSTANCE).build()) + .setHostnameVerifier(NoopHostnameVerifier.INSTANCE) + .build()) + .build()) + .build(); + HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); + requestFactory.setHttpClient(httpClient); + requestFactory.setConnectTimeout(30000); + requestFactory.setConnectionRequestTimeout(30000); + return new RestTemplate(requestFactory); + } + + + @Bean + @Primary + public StorageService inmemoryStorage() { + + return new FileSystemBackedStorageService(); + } + + } + + + @BeforeEach + public void stubClients() { + + TenantContext.setTenantId("redaction"); + + when(rulesClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(0L); + when(rulesClient.getRules(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(JSONPrimitive.of(RULES)); + + loadTypeForTest(); + loadNerForTest(); + when(dictionaryClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(0L); + when(dictionaryClient.getAllTypesForDossierTemplate(TEST_DOSSIER_TEMPLATE_ID, false)).thenReturn(getTypeResponse()); + + when(dictionaryClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(0L); + when(dictionaryClient.getAllTypesForDossier(TEST_DOSSIER_ID, false)).thenReturn(List.of(Type.builder() + .id(DOSSIER_REDACTIONS_INDICATOR + ":" + TEST_DOSSIER_TEMPLATE_ID) + .type(DOSSIER_REDACTIONS_INDICATOR) + .dossierTemplateId(TEST_DOSSIER_ID) + .hexColor("#ffe187") + .isHint(hintTypeMap.get(DOSSIER_REDACTIONS_INDICATOR)) + .isCaseInsensitive(caseInSensitiveMap.get(DOSSIER_REDACTIONS_INDICATOR)) + .isRecommendation(recommendationTypeMap.get(DOSSIER_REDACTIONS_INDICATOR)) + .rank(rankTypeMap.get(DOSSIER_REDACTIONS_INDICATOR)) + .build())); + + mockDictionaryCalls(null); + + when(dictionaryClient.getColors(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(colors); + } + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/apryseAi/Input.json b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/apryseAi/Input.json new file mode 100644 index 00000000..91a0a030 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/apryseAi/Input.json @@ -0,0 +1,3526 @@ +{ + "pages": [ + { + "properties": { + "pageNumber": 1, + "cropBox": [0.0, 0.0, 595.304, 841.89], + "mediaBox": [0.0, 0.0, 595.304, 841.89], + "rotation": 0, + "langCode": "eng" + }, + "elements": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [247.6, 770.3530000000001, 347.79999999999986, 785.773], + "quad": [247.6, 770.3530000000001, 347.79999999999986, 770.3530000000001, 347.79999999999986, 785.773, 247.6, 785.773], + "text": "Here is some Header", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [247.6, 770.3530000000001, 270.89199999999996, 785.773], + "quad": [247.6, 770.3530000000001, 270.89199999999996, 770.3530000000001, 270.89199999999996, 785.773, 247.6, 785.773], + "text": "Here" + }, + { + "type": "word", + "rect": [273.89199999999996, 770.3530000000001, 281.88399999999998, 785.773], + "quad": [273.89199999999996, 770.3530000000001, 281.88399999999998, 770.3530000000001, 281.88399999999998, 785.773, 273.89199999999996, 785.773], + "text": "is" + }, + { + "type": "word", + "rect": [284.88399999999998, 770.3530000000001, 310.19199999999997, 785.773], + "quad": [284.88399999999998, 770.3530000000001, 310.19199999999997, 770.3530000000001, 310.19199999999997, 785.773, 284.88399999999998, 785.773], + "text": "some" + }, + { + "type": "word", + "rect": [313.19199999999997, 770.3530000000001, 347.79999999999986, 785.773], + "quad": [313.19199999999997, 770.3530000000001, 347.79999999999986, 770.3530000000001, 347.79999999999986, 785.773, 313.19199999999997, 785.773], + "text": "Header" + }] + }] + }, + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [56.8, 728.9530000000001, 238.1920000000001, 744.373], + "quad": [56.8, 728.9530000000001, 238.1920000000001, 728.9530000000001, 238.1920000000001, 744.373, 56.8, 744.373], + "text": "This is some text describing the Table", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [56.8, 728.9530000000001, 78.11200000000001, 744.373], + "quad": [56.8, 728.9530000000001, 78.11200000000001, 728.9530000000001, 78.11200000000001, 744.373, 56.8, 744.373], + "text": "This" + }, + { + "type": "word", + "rect": [81.11200000000001, 728.9530000000001, 89.10400000000002, 744.373], + "quad": [81.11200000000001, 728.9530000000001, 89.10400000000002, 728.9530000000001, 89.10400000000002, 744.373, 81.11200000000001, 744.373], + "text": "is" + }, + { + "type": "word", + "rect": [92.10400000000002, 728.9530000000001, 117.41200000000002, 744.373], + "quad": [92.10400000000002, 728.9530000000001, 117.41200000000002, 728.9530000000001, 117.41200000000002, 744.373, 92.10400000000002, 744.373], + "text": "some" + }, + { + "type": "word", + "rect": [120.41200000000002, 728.9530000000001, 138.37600000000004, 744.373], + "quad": [120.41200000000002, 728.9530000000001, 138.37600000000004, 728.9530000000001, 138.37600000000004, 744.373, 120.41200000000002, 744.373], + "text": "text" + }, + { + "type": "word", + "rect": [141.37600000000004, 728.9530000000001, 191.32000000000009, 744.373], + "quad": [141.37600000000004, 728.9530000000001, 191.32000000000009, 728.9530000000001, 191.32000000000009, 744.373, 141.37600000000004, 744.373], + "text": "describing" + }, + { + "type": "word", + "rect": [194.32000000000009, 728.9530000000001, 208.9600000000001, 744.373], + "quad": [194.32000000000009, 728.9530000000001, 208.9600000000001, 728.9530000000001, 208.9600000000001, 744.373, 194.32000000000009, 744.373], + "text": "the" + }, + { + "type": "word", + "rect": [211.74400000000009, 728.9530000000001, 238.1920000000001, 744.373], + "quad": [211.74400000000009, 728.9530000000001, 238.1920000000001, 728.9530000000001, 238.1920000000001, 744.373, 211.74400000000009, 744.373], + "text": "Table" + }] + }, + { + "type": "line", + "rect": [56.8, 715.1530000000001, 195.83200000000009, 730.5730000000001], + "quad": [56.8, 715.1530000000001, 195.83200000000009, 715.1530000000001, 195.83200000000009, 730.5730000000001, 56.8, 730.5730000000001], + "text": "With some more information", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [56.8, 715.1530000000001, 80.28399999999999, 730.5730000000001], + "quad": [56.8, 715.1530000000001, 80.28399999999999, 715.1530000000001, 80.28399999999999, 730.5730000000001, 56.8, 730.5730000000001], + "text": "With" + }, + { + "type": "word", + "rect": [83.28399999999999, 715.1530000000001, 108.592, 730.5730000000001], + "quad": [83.28399999999999, 715.1530000000001, 108.592, 715.1530000000001, 108.592, 730.5730000000001, 83.28399999999999, 730.5730000000001], + "text": "some" + }, + { + "type": "word", + "rect": [111.592, 715.1530000000001, 136.228, 730.5730000000001], + "quad": [111.592, 715.1530000000001, 136.228, 715.1530000000001, 136.228, 730.5730000000001, 111.592, 730.5730000000001], + "text": "more" + }, + { + "type": "word", + "rect": [139.228, 715.1530000000001, 195.83200000000009, 730.5730000000001], + "quad": [139.228, 715.1530000000001, 195.83200000000009, 715.1530000000001, 195.83200000000009, 730.5730000000001, 139.228, 730.5730000000001], + "text": "information" + }] + }, + { + "type": "line", + "rect": [56.8, 701.3530000000001, 252.50800000000008, 716.773], + "quad": [56.8, 701.3530000000001, 252.50800000000008, 701.3530000000001, 252.50800000000008, 716.773, 56.8, 716.773], + "text": "Since this Table contains a bunch of data", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [56.8, 701.3530000000001, 83.428, 716.773], + "quad": [56.8, 701.3530000000001, 83.428, 701.3530000000001, 83.428, 716.773, 56.8, 716.773], + "text": "Since" + }, + { + "type": "word", + "rect": [86.428, 701.3530000000001, 103.744, 716.773], + "quad": [86.428, 701.3530000000001, 103.744, 701.3530000000001, 103.744, 716.773, 86.428, 716.773], + "text": "this" + }, + { + "type": "word", + "rect": [106.528, 701.3530000000001, 132.976, 716.773], + "quad": [106.528, 701.3530000000001, 132.976, 701.3530000000001, 132.976, 716.773, 106.528, 716.773], + "text": "Table" + }, + { + "type": "word", + "rect": [135.976, 701.3530000000001, 175.92400000000004, 716.773], + "quad": [135.976, 701.3530000000001, 175.92400000000004, 701.3530000000001, 175.92400000000004, 716.773, 135.976, 716.773], + "text": "contains" + }, + { + "type": "word", + "rect": [178.92400000000004, 701.3530000000001, 184.24000000000005, 716.773], + "quad": [178.92400000000004, 701.3530000000001, 184.24000000000005, 701.3530000000001, 184.24000000000005, 716.773, 178.92400000000004, 716.773], + "text": "a" + }, + { + "type": "word", + "rect": [187.24000000000005, 701.3530000000001, 216.55600000000005, 716.773], + "quad": [187.24000000000005, 701.3530000000001, 216.55600000000005, 701.3530000000001, 216.55600000000005, 716.773, 187.24000000000005, 716.773], + "text": "bunch" + }, + { + "type": "word", + "rect": [219.55600000000005, 701.3530000000001, 229.55209375000005, 716.773], + "quad": [219.55600000000005, 701.3530000000001, 229.55209375000005, 701.3530000000001, 229.55209375000005, 716.773, 219.55600000000005, 716.773], + "text": "of" + }, + { + "type": "word", + "rect": [232.55200000000006, 701.3530000000001, 252.50800000000008, 716.773], + "quad": [232.55200000000006, 701.3530000000001, 252.50800000000008, 701.3530000000001, 252.50800000000008, 716.773, 232.55200000000006, 716.773], + "text": "data" + }] + }] + }, + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [386.45, 646.1530000000001, 538.6459999999998, 661.5730000000001], + "quad": [386.45, 646.1530000000001, 538.6459999999998, 646.1530000000001, 538.6459999999998, 661.5730000000001, 386.45, 661.5730000000001], + "text": "Very confusing text on the right", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [386.45, 646.1530000000001, 409.09399999999996, 661.5730000000001], + "quad": [386.45, 646.1530000000001, 409.09399999999996, 646.1530000000001, 409.09399999999996, 661.5730000000001, 386.45, 661.5730000000001], + "text": "Very" + }, + { + "type": "word", + "rect": [412.09399999999996, 646.1530000000001, 459.3979999999999, 661.5730000000001], + "quad": [412.09399999999996, 646.1530000000001, 459.3979999999999, 646.1530000000001, 459.3979999999999, 661.5730000000001, 412.09399999999996, 661.5730000000001], + "text": "confusing" + }, + { + "type": "word", + "rect": [462.3979999999999, 646.1530000000001, 480.3619999999999, 661.5730000000001], + "quad": [462.3979999999999, 646.1530000000001, 480.3619999999999, 646.1530000000001, 480.3619999999999, 661.5730000000001, 462.3979999999999, 661.5730000000001], + "text": "text" + }, + { + "type": "word", + "rect": [483.3619999999999, 646.1530000000001, 495.3619999999999, 661.5730000000001], + "quad": [483.3619999999999, 646.1530000000001, 495.3619999999999, 646.1530000000001, 495.3619999999999, 661.5730000000001, 483.3619999999999, 661.5730000000001], + "text": "on" + }, + { + "type": "word", + "rect": [498.3619999999999, 646.1530000000001, 513.002, 661.5730000000001], + "quad": [498.3619999999999, 646.1530000000001, 513.002, 646.1530000000001, 513.002, 661.5730000000001, 498.3619999999999, 661.5730000000001], + "text": "the" + }, + { + "type": "word", + "rect": [516.002, 646.1530000000001, 538.6459999999998, 661.5730000000001], + "quad": [516.002, 646.1530000000001, 538.6459999999998, 646.1530000000001, 538.6459999999998, 661.5730000000001, 516.002, 661.5730000000001], + "text": "right" + }] + }] + }, + { + "type": "table", + "confidence": 0.952, + "rect": [50.0, 397.614, 546.0, 645.558], + "rowSeparators": [566.621, 547.392, 513.49, 481.611, 462.383, 443.154, 423.926], + "columnSeparators": [101.0, 149.0, 199.0, 245.0, 294.0, 343.0, 391.0, 441.0, 487.0], + "cells": [ + { + "rect": [50.0, 566.621, 101.0, 645.558], + "rowStart": 0, + "rowEnd": 0, + "columnStart": 0, + "columnEnd": 0, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [59.55, 568.903, 93.18599999999999, 584.323], + "quad": [59.55, 568.903, 93.18599999999999, 568.903, 93.18599999999999, 584.323, 59.55, 584.323], + "text": "Field 1", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [59.55, 568.903, 84.18599999999999, 584.323], + "quad": [59.55, 568.903, 84.18599999999999, 568.903, 84.18599999999999, 584.323, 59.55, 584.323], + "text": "Field" + }, + { + "type": "word", + "rect": [87.18599999999999, 568.903, 93.18599999999999, 584.323], + "quad": [87.18599999999999, 568.903, 93.18599999999999, 568.903, 93.18599999999999, 584.323, 87.18599999999999, 584.323], + "text": "1" + }] + }] + }] + }, + { + "rect": [101.0, 566.621, 149.0, 645.558], + "rowStart": 0, + "rowEnd": 0, + "columnStart": 1, + "columnEnd": 1, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [107.7, 615.803, 141.336, 631.223], + "quad": [107.7, 615.803, 141.336, 615.803, 141.336, 631.223, 107.7, 631.223], + "text": "Field 1", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 615.803, 132.336, 631.223], + "quad": [107.7, 615.803, 132.336, 615.803, 132.336, 631.223, 107.7, 631.223], + "text": "Field" + }, + { + "type": "word", + "rect": [135.336, 615.803, 141.336, 631.223], + "quad": [135.336, 615.803, 141.336, 615.803, 141.336, 631.223, 135.336, 631.223], + "text": "1" + }] + }, + { + "type": "line", + "rect": [107.7, 602.003, 131.184, 617.423], + "quad": [107.7, 602.003, 131.184, 602.003, 131.184, 617.423, 107.7, 617.423], + "text": "With", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 602.003, 131.184, 617.423], + "quad": [107.7, 602.003, 131.184, 602.003, 131.184, 617.423, 107.7, 617.423], + "text": "With" + }] + }, + { + "type": "line", + "rect": [107.7, 588.203, 130.332, 603.6229999999999], + "quad": [107.7, 588.203, 130.332, 588.203, 130.332, 603.6229999999999, 107.7, 603.6229999999999], + "text": "lines", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 588.203, 130.332, 603.6229999999999], + "quad": [107.7, 588.203, 130.332, 588.203, 130.332, 603.6229999999999, 107.7, 603.6229999999999], + "text": "lines" + }] + }] + }, + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [107.7, 568.903, 113.7, 584.323], + "quad": [107.7, 568.903, 113.7, 568.903, 113.7, 584.323, 107.7, 584.323], + "text": "g", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 568.903, 113.7, 584.323], + "quad": [107.7, 568.903, 113.7, 568.903, 113.7, 584.323, 107.7, 584.323], + "text": "g" + }] + }] + }] + }, + { + "rect": [149.0, 566.621, 199.0, 645.558], + "rowStart": 0, + "rowEnd": 0, + "columnStart": 2, + "columnEnd": 2, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [155.9, 602.003, 195.86000000000005, 617.423], + "quad": [155.9, 602.003, 195.86000000000005, 602.003, 195.86000000000005, 617.423, 155.9, 617.423], + "text": "Somethi", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [155.9, 602.003, 195.86000000000005, 617.423], + "quad": [155.9, 602.003, 195.86000000000005, 602.003, 195.86000000000005, 617.423, 155.9, 617.423], + "text": "Somethi" + }] + }, + { + "type": "line", + "rect": [155.9, 588.203, 167.9, 603.6229999999999], + "quad": [155.9, 588.203, 167.9, 588.203, 167.9, 603.6229999999999, 155.9, 603.6229999999999], + "text": "ng", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [155.9, 588.203, 167.9, 603.6229999999999], + "quad": [155.9, 588.203, 167.9, 588.203, 167.9, 603.6229999999999, 155.9, 603.6229999999999], + "text": "ng" + }] + }, + { + "type": "line", + "rect": [155.9, 568.903, 161.9, 584.323], + "quad": [155.9, 568.903, 161.9, 568.903, 161.9, 584.323, 155.9, 584.323], + "text": "g", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [155.9, 568.903, 161.9, 584.323], + "quad": [155.9, 568.903, 161.9, 568.903, 161.9, 584.323, 155.9, 584.323], + "text": "g" + }] + }] + }] + }, + { + "rect": [199.0, 566.621, 245.0, 645.558], + "rowStart": 0, + "rowEnd": 0, + "columnStart": 3, + "columnEnd": 3, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [204.1, 615.803, 226.756, 631.223], + "quad": [204.1, 615.803, 226.756, 615.803, 226.756, 631.223, 204.1, 631.223], + "text": "Also", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 615.803, 226.756, 631.223], + "quad": [204.1, 615.803, 226.756, 615.803, 226.756, 631.223, 204.1, 631.223], + "text": "Also" + }] + }, + { + "type": "line", + "rect": [204.1, 602.003, 228.73600000000003, 617.423], + "quad": [204.1, 602.003, 228.73600000000003, 602.003, 228.73600000000003, 617.423, 204.1, 617.423], + "text": "more", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 602.003, 228.73600000000003, 617.423], + "quad": [204.1, 602.003, 228.73600000000003, 602.003, 228.73600000000003, 617.423, 204.1, 617.423], + "text": "more" + }] + }, + { + "type": "line", + "rect": [204.1, 588.203, 226.73200000000004, 603.6229999999999], + "quad": [204.1, 588.203, 226.73200000000004, 588.203, 226.73200000000004, 603.6229999999999, 204.1, 603.6229999999999], + "text": "lines", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 588.203, 226.73200000000004, 603.6229999999999], + "quad": [204.1, 588.203, 226.73200000000004, 588.203, 226.73200000000004, 603.6229999999999, 204.1, 603.6229999999999], + "text": "lines" + }] + }] + }, + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [204.1, 568.903, 210.1, 584.323], + "quad": [204.1, 568.903, 210.1, 568.903, 210.1, 584.323, 204.1, 584.323], + "text": "g", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 568.903, 210.1, 584.323], + "quad": [204.1, 568.903, 210.1, 568.903, 210.1, 584.323, 204.1, 584.323], + "text": "g" + }] + }] + }] + }, + { + "rect": [245.0, 566.621, 294.0, 645.558], + "rowStart": 0, + "rowEnd": 0, + "columnStart": 4, + "columnEnd": 4, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [252.3, 588.203, 276.288, 603.6229999999999], + "quad": [252.3, 588.203, 276.288, 588.203, 276.288, 603.6229999999999, 252.3, 603.6229999999999], + "text": "short", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [252.3, 588.203, 276.288, 603.6229999999999], + "quad": [252.3, 588.203, 276.288, 588.203, 276.288, 603.6229999999999, 252.3, 603.6229999999999], + "text": "short" + }] + }, + { + "type": "line", + "rect": [252.3, 568.903, 267.624, 584.323], + "quad": [252.3, 568.903, 267.624, 568.903, 267.624, 584.323, 252.3, 584.323], + "text": "mg", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [252.3, 568.903, 267.624, 584.323], + "quad": [252.3, 568.903, 267.624, 568.903, 267.624, 584.323, 252.3, 584.323], + "text": "mg" + }] + }] + }] + }, + { + "rect": [294.0, 566.621, 343.0, 645.558], + "rowStart": 0, + "rowEnd": 0, + "columnStart": 5, + "columnEnd": 5, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [300.5, 602.003, 323.14399999999997, 617.423], + "quad": [300.5, 602.003, 323.14399999999997, 602.003, 323.14399999999997, 617.423, 300.5, 617.423], + "text": "Very", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [300.5, 602.003, 323.14399999999997, 617.423], + "quad": [300.5, 602.003, 323.14399999999997, 602.003, 323.14399999999997, 617.423, 300.5, 617.423], + "text": "Very" + }] + }, + { + "type": "line", + "rect": [300.5, 588.203, 324.488, 603.6229999999999], + "quad": [300.5, 588.203, 324.488, 588.203, 324.488, 603.6229999999999, 300.5, 603.6229999999999], + "text": "short", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [300.5, 588.203, 324.488, 603.6229999999999], + "quad": [300.5, 588.203, 324.488, 588.203, 324.488, 603.6229999999999, 300.5, 603.6229999999999], + "text": "short" + }] + }] + }, + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [300.5, 568.903, 306.5, 584.323], + "quad": [300.5, 568.903, 306.5, 568.903, 306.5, 584.323, 300.5, 584.323], + "text": "g", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [300.5, 568.903, 306.5, 584.323], + "quad": [300.5, 568.903, 306.5, 568.903, 306.5, 584.323, 300.5, 584.323], + "text": "g" + }] + }] + }] + }, + { + "rect": [343.0, 566.621, 391.0, 645.558], + "rowStart": 0, + "rowEnd": 0, + "columnStart": 6, + "columnEnd": 6, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [348.65000000000006, 602.003, 361.97, 617.423], + "quad": [348.65000000000006, 602.003, 361.97, 602.003, 361.97, 617.423, 348.65000000000006, 617.423], + "text": "Im", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [348.65000000000006, 602.003, 361.97, 617.423], + "quad": [348.65000000000006, 602.003, 361.97, 602.003, 361.97, 617.423, 348.65000000000006, 617.423], + "text": "Im" + }] + }] + }, + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [348.65000000000006, 588.203, 385.97, 603.6229999999999], + "quad": [348.65000000000006, 588.203, 385.97, 588.203, 385.97, 603.6229999999999, 348.65000000000006, 603.6229999999999], + "text": "running", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [348.65000000000006, 588.203, 385.97, 603.6229999999999], + "quad": [348.65000000000006, 588.203, 385.97, 588.203, 385.97, 603.6229999999999, 348.65000000000006, 603.6229999999999], + "text": "running" + }] + }, + { + "type": "line", + "rect": [348.65000000000006, 568.903, 354.65000000000006, 584.323], + "quad": [348.65000000000006, 568.903, 354.65000000000006, 568.903, 354.65000000000006, 584.323, 348.65000000000006, 584.323], + "text": "g", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [348.65000000000006, 568.903, 354.65000000000006, 584.323], + "quad": [348.65000000000006, 568.903, 354.65000000000006, 568.903, 354.65000000000006, 584.323, 348.65000000000006, 584.323], + "text": "g" + }] + }] + }] + }, + { + "rect": [391.0, 566.621, 441.0, 645.558], + "rowStart": 0, + "rowEnd": 0, + "columnStart": 7, + "columnEnd": 7, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [396.85, 615.803, 427.83409375, 631.223], + "quad": [396.85, 615.803, 427.83409375, 615.803, 427.83409375, 631.223, 396.85, 631.223], + "text": "Out of", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 615.803, 414.838, 631.223], + "quad": [396.85, 615.803, 414.838, 615.803, 414.838, 631.223, 396.85, 631.223], + "text": "Out" + }, + { + "type": "word", + "rect": [417.838, 615.803, 427.83409375, 631.223], + "quad": [417.838, 615.803, 427.83409375, 615.803, 427.83409375, 631.223, 417.838, 631.223], + "text": "of" + }] + }] + }, + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [396.85, 602.003, 438.49000000000009, 617.423], + "quad": [396.85, 602.003, 438.49000000000009, 602.003, 438.49000000000009, 617.423, 396.85, 617.423], + "text": "things to", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 602.003, 426.16600000000008, 617.423], + "quad": [396.85, 602.003, 426.16600000000008, 602.003, 426.16600000000008, 617.423, 396.85, 617.423], + "text": "things" + }, + { + "type": "word", + "rect": [429.16600000000008, 602.003, 438.49000000000009, 617.423], + "quad": [429.16600000000008, 602.003, 438.49000000000009, 602.003, 438.49000000000009, 617.423, 429.16600000000008, 617.423], + "text": "to" + }] + }, + { + "type": "line", + "rect": [396.85, 588.203, 421.474, 603.6229999999999], + "quad": [396.85, 588.203, 421.474, 588.203, 421.474, 603.6229999999999, 396.85, 603.6229999999999], + "text": "write", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 588.203, 421.474, 603.6229999999999], + "quad": [396.85, 588.203, 421.474, 588.203, 421.474, 603.6229999999999, 396.85, 603.6229999999999], + "text": "write" + }] + }, + { + "type": "line", + "rect": [396.85, 568.903, 402.85, 584.323], + "quad": [396.85, 568.903, 402.85, 568.903, 402.85, 584.323, 396.85, 584.323], + "text": "g", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 568.903, 402.85, 584.323], + "quad": [396.85, 568.903, 402.85, 568.903, 402.85, 584.323, 396.85, 584.323], + "text": "g" + }] + }] + }] + }, + { + "rect": [441.0, 566.621, 487.0, 645.558], + "rowStart": 0, + "rowEnd": 0, + "columnStart": 8, + "columnEnd": 8, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [445.05, 602.003, 477.35400000000007, 617.423], + "quad": [445.05, 602.003, 477.35400000000007, 602.003, 477.35400000000007, 617.423, 445.05, 617.423], + "text": "This is", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [445.05, 602.003, 466.362, 617.423], + "quad": [445.05, 602.003, 466.362, 602.003, 466.362, 617.423, 445.05, 617.423], + "text": "This" + }, + { + "type": "word", + "rect": [469.362, 602.003, 477.35400000000007, 617.423], + "quad": [469.362, 602.003, 477.35400000000007, 602.003, 477.35400000000007, 617.423, 469.362, 617.423], + "text": "is" + }] + }, + { + "type": "line", + "rect": [445.05, 588.203, 476.37, 603.6229999999999], + "quad": [445.05, 588.203, 476.37, 588.203, 476.37, 603.6229999999999, 445.05, 603.6229999999999], + "text": "boring", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [445.05, 588.203, 476.37, 603.6229999999999], + "quad": [445.05, 588.203, 476.37, 588.203, 476.37, 603.6229999999999, 445.05, 603.6229999999999], + "text": "boring" + }] + }, + { + "type": "line", + "rect": [445.05, 568.903, 460.374, 584.323], + "quad": [445.05, 568.903, 460.374, 568.903, 460.374, 584.323, 445.05, 584.323], + "text": "mg", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [445.05, 568.903, 460.374, 584.323], + "quad": [445.05, 568.903, 460.374, 568.903, 460.374, 584.323, 445.05, 584.323], + "text": "mg" + }] + }] + }] + }, + { + "rect": [487.0, 566.621, 546.0, 645.558], + "rowStart": 0, + "rowEnd": 0, + "columnStart": 9, + "columnEnd": 9, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [493.25, 588.203, 516.578, 603.6229999999999], + "quad": [493.25, 588.203, 516.578, 588.203, 516.578, 603.6229999999999, 493.25, 603.6229999999999], + "text": "wow", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [493.25, 588.203, 516.578, 603.6229999999999], + "quad": [493.25, 588.203, 516.578, 588.203, 516.578, 603.6229999999999, 493.25, 603.6229999999999], + "text": "wow" + }] + }, + { + "type": "line", + "rect": [493.25, 568.903, 499.25, 584.323], + "quad": [493.25, 568.903, 499.25, 568.903, 499.25, 584.323, 493.25, 584.323], + "text": "g", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [493.25, 568.903, 499.25, 584.323], + "quad": [493.25, 568.903, 499.25, 568.903, 499.25, 584.323, 493.25, 584.323], + "text": "g" + }] + }] + }] + }, + { + "rect": [50.0, 547.392, 101.0, 566.621], + "rowStart": 1, + "rowEnd": 1, + "columnStart": 0, + "columnEnd": 0, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [59.55, 549.6030000000001, 84.174, 565.023], + "quad": [59.55, 549.6030000000001, 84.174, 549.6030000000001, 84.174, 565.023, 59.55, 565.023], + "text": "Mice", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [59.55, 549.6030000000001, 84.174, 565.023], + "quad": [59.55, 549.6030000000001, 84.174, 549.6030000000001, 84.174, 565.023, 59.55, 565.023], + "text": "Mice" + }] + }] + }] + }, + { + "rect": [101.0, 547.392, 149.0, 566.621], + "rowStart": 1, + "rowEnd": 1, + "columnStart": 1, + "columnEnd": 1, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [107.7, 549.6030000000001, 113.7, 565.023], + "quad": [107.7, 549.6030000000001, 113.7, 549.6030000000001, 113.7, 565.023, 107.7, 565.023], + "text": "2", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 549.6030000000001, 113.7, 565.023], + "quad": [107.7, 549.6030000000001, 113.7, 549.6030000000001, 113.7, 565.023, 107.7, 565.023], + "text": "2" + }] + }] + }] + }, + { + "rect": [149.0, 547.392, 199.0, 566.621], + "rowStart": 1, + "rowEnd": 1, + "columnStart": 2, + "columnEnd": 2, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [155.9, 549.6030000000001, 173.9, 565.023], + "quad": [155.9, 549.6030000000001, 173.9, 549.6030000000001, 173.9, 565.023, 155.9, 565.023], + "text": "123", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [155.9, 549.6030000000001, 173.9, 565.023], + "quad": [155.9, 549.6030000000001, 173.9, 549.6030000000001, 173.9, 565.023, 155.9, 565.023], + "text": "123" + }] + }] + }] + }, + { + "rect": [199.0, 547.392, 245.0, 566.621], + "rowStart": 1, + "rowEnd": 1, + "columnStart": 3, + "columnEnd": 3, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [204.1, 549.6030000000001, 222.1, 565.023], + "quad": [204.1, 549.6030000000001, 222.1, 549.6030000000001, 222.1, 565.023, 204.1, 565.023], + "text": "145", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 549.6030000000001, 222.1, 565.023], + "quad": [204.1, 549.6030000000001, 222.1, 549.6030000000001, 222.1, 565.023, 204.1, 565.023], + "text": "145" + }] + }] + }] + }, + { + "rect": [245.0, 547.392, 294.0, 566.621], + "rowStart": 1, + "rowEnd": 1, + "columnStart": 4, + "columnEnd": 4, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [252.3, 549.6030000000001, 264.3, 565.023], + "quad": [252.3, 549.6030000000001, 264.3, 549.6030000000001, 264.3, 565.023, 252.3, 565.023], + "text": "45", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [252.3, 549.6030000000001, 264.3, 565.023], + "quad": [252.3, 549.6030000000001, 264.3, 549.6030000000001, 264.3, 565.023, 252.3, 565.023], + "text": "45" + }] + }] + }] + }, + { + "rect": [294.0, 547.392, 343.0, 566.621], + "rowStart": 1, + "rowEnd": 1, + "columnStart": 5, + "columnEnd": 5, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [300.5, 549.6030000000001, 312.5, 565.023], + "quad": [300.5, 549.6030000000001, 312.5, 549.6030000000001, 312.5, 565.023, 300.5, 565.023], + "text": "55", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [300.5, 549.6030000000001, 312.5, 565.023], + "quad": [300.5, 549.6030000000001, 312.5, 549.6030000000001, 312.5, 565.023, 300.5, 565.023], + "text": "55" + }] + }] + }] + }, + { + "rect": [343.0, 547.392, 391.0, 566.621], + "rowStart": 1, + "rowEnd": 1, + "columnStart": 6, + "columnEnd": 6, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [348.65000000000006, 549.6030000000001, 372.65000000000006, 565.023], + "quad": [348.65000000000006, 549.6030000000001, 372.65000000000006, 549.6030000000001, 372.65000000000006, 565.023, 348.65000000000006, 565.023], + "text": "4573", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [348.65000000000006, 549.6030000000001, 372.65000000000006, 565.023], + "quad": [348.65000000000006, 549.6030000000001, 372.65000000000006, 549.6030000000001, 372.65000000000006, 565.023, 348.65000000000006, 565.023], + "text": "4573" + }] + }] + }] + }, + { + "rect": [391.0, 547.392, 441.0, 566.621], + "rowStart": 1, + "rowEnd": 1, + "columnStart": 7, + "columnEnd": 7, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [396.85, 549.6030000000001, 414.85, 565.023], + "quad": [396.85, 549.6030000000001, 414.85, 549.6030000000001, 414.85, 565.023, 396.85, 565.023], + "text": "453", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 549.6030000000001, 414.85, 565.023], + "quad": [396.85, 549.6030000000001, 414.85, 549.6030000000001, 414.85, 565.023, 396.85, 565.023], + "text": "453" + }] + }] + }] + }, + { + "rect": [441.0, 547.392, 487.0, 566.621], + "rowStart": 1, + "rowEnd": 1, + "columnStart": 8, + "columnEnd": 8, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [445.05, 549.6030000000001, 457.05, 565.023], + "quad": [445.05, 549.6030000000001, 457.05, 549.6030000000001, 457.05, 565.023, 445.05, 565.023], + "text": "39", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [445.05, 549.6030000000001, 457.05, 565.023], + "quad": [445.05, 549.6030000000001, 457.05, 549.6030000000001, 457.05, 565.023, 445.05, 565.023], + "text": "39" + }] + }] + }] + }, + { + "rect": [487.0, 547.392, 546.0, 566.621], + "rowStart": 1, + "rowEnd": 1, + "columnStart": 9, + "columnEnd": 9, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [493.25, 549.6030000000001, 529.25, 565.023], + "quad": [493.25, 549.6030000000001, 529.25, 549.6030000000001, 529.25, 565.023, 493.25, 565.023], + "text": "783453", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [493.25, 549.6030000000001, 529.25, 565.023], + "quad": [493.25, 549.6030000000001, 529.25, 549.6030000000001, 529.25, 565.023, 493.25, 565.023], + "text": "783453" + }] + }] + }] + }, + { + "rect": [50.0, 513.49, 101.0, 547.392], + "rowStart": 2, + "rowEnd": 2, + "columnStart": 0, + "columnEnd": 0, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [59.55, 530.303, 94.182, 545.723], + "quad": [59.55, 530.303, 94.182, 530.303, 94.182, 545.723, 59.55, 545.723], + "text": "Longer", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [59.55, 530.303, 94.182, 545.723], + "quad": [59.55, 530.303, 94.182, 530.303, 94.182, 545.723, 59.55, 545.723], + "text": "Longer" + }] + }, + { + "type": "line", + "rect": [59.55, 516.503, 81.51, 531.923], + "quad": [59.55, 516.503, 81.51, 516.503, 81.51, 531.923, 59.55, 531.923], + "text": "field", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [59.55, 516.503, 81.51, 531.923], + "quad": [59.55, 516.503, 81.51, 516.503, 81.51, 531.923, 59.55, 531.923], + "text": "field" + }] + }] + }] + }, + { + "rect": [101.0, 513.49, 149.0, 547.392], + "rowStart": 2, + "rowEnd": 2, + "columnStart": 1, + "columnEnd": 1, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [107.7, 530.303, 113.7, 545.723], + "quad": [107.7, 530.303, 113.7, 530.303, 113.7, 545.723, 107.7, 545.723], + "text": "4", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 530.303, 113.7, 545.723], + "quad": [107.7, 530.303, 113.7, 530.303, 113.7, 545.723, 107.7, 545.723], + "text": "4" + }] + }] + }] + }, + { + "rect": [149.0, 513.49, 199.0, 547.392], + "rowStart": 2, + "rowEnd": 2, + "columnStart": 2, + "columnEnd": 2, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [155.9, 530.303, 185.9, 545.723], + "quad": [155.9, 530.303, 185.9, 530.303, 185.9, 545.723, 155.9, 545.723], + "text": "15415", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [155.9, 530.303, 185.9, 545.723], + "quad": [155.9, 530.303, 185.9, 530.303, 185.9, 545.723, 155.9, 545.723], + "text": "15415" + }] + }] + }] + }, + { + "rect": [199.0, 513.49, 245.0, 547.392], + "rowStart": 2, + "rowEnd": 2, + "columnStart": 3, + "columnEnd": 3, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [204.1, 530.303, 222.1, 545.723], + "quad": [204.1, 530.303, 222.1, 530.303, 222.1, 545.723, 204.1, 545.723], + "text": "124", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 530.303, 222.1, 545.723], + "quad": [204.1, 530.303, 222.1, 530.303, 222.1, 545.723, 204.1, 545.723], + "text": "124" + }] + }] + }] + }, + { + "rect": [245.0, 513.49, 294.0, 547.392], + "rowStart": 2, + "rowEnd": 2, + "columnStart": 4, + "columnEnd": 4, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [252.3, 530.303, 270.3, 545.723], + "quad": [252.3, 530.303, 270.3, 530.303, 270.3, 545.723, 252.3, 545.723], + "text": "654", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [252.3, 530.303, 270.3, 545.723], + "quad": [252.3, 530.303, 270.3, 530.303, 270.3, 545.723, 252.3, 545.723], + "text": "654" + }] + }] + }] + }, + { + "rect": [294.0, 513.49, 343.0, 547.392], + "rowStart": 2, + "rowEnd": 2, + "columnStart": 5, + "columnEnd": 5, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [300.5, 530.303, 312.5, 545.723], + "quad": [300.5, 530.303, 312.5, 530.303, 312.5, 545.723, 300.5, 545.723], + "text": "44", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [300.5, 530.303, 312.5, 545.723], + "quad": [300.5, 530.303, 312.5, 530.303, 312.5, 545.723, 300.5, 545.723], + "text": "44" + }] + }] + }] + }, + { + "rect": [343.0, 513.49, 391.0, 547.392], + "rowStart": 2, + "rowEnd": 2, + "columnStart": 6, + "columnEnd": 6, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [348.65000000000006, 530.303, 366.65000000000006, 545.723], + "quad": [348.65000000000006, 530.303, 366.65000000000006, 530.303, 366.65000000000006, 545.723, 348.65000000000006, 545.723], + "text": "783", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [348.65000000000006, 530.303, 366.65000000000006, 545.723], + "quad": [348.65000000000006, 530.303, 366.65000000000006, 530.303, 366.65000000000006, 545.723, 348.65000000000006, 545.723], + "text": "783" + }] + }] + }] + }, + { + "rect": [391.0, 513.49, 441.0, 547.392], + "rowStart": 2, + "rowEnd": 2, + "columnStart": 7, + "columnEnd": 7, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [396.85, 530.303, 414.85, 545.723], + "quad": [396.85, 530.303, 414.85, 530.303, 414.85, 545.723, 396.85, 545.723], + "text": "453", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 530.303, 414.85, 545.723], + "quad": [396.85, 530.303, 414.85, 530.303, 414.85, 545.723, 396.85, 545.723], + "text": "453" + }] + }] + }] + }, + { + "rect": [441.0, 513.49, 487.0, 547.392], + "rowStart": 2, + "rowEnd": 2, + "columnStart": 8, + "columnEnd": 8, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [445.05, 530.303, 469.05, 545.723], + "quad": [445.05, 530.303, 469.05, 530.303, 469.05, 545.723, 445.05, 545.723], + "text": "3453", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [445.05, 530.303, 469.05, 545.723], + "quad": [445.05, 530.303, 469.05, 530.303, 469.05, 545.723, 445.05, 545.723], + "text": "3453" + }] + }] + }] + }, + { + "rect": [487.0, 513.49, 546.0, 547.392], + "rowStart": 2, + "rowEnd": 2, + "columnStart": 9, + "columnEnd": 9, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [493.25, 530.303, 511.25, 545.723], + "quad": [493.25, 530.303, 511.25, 530.303, 511.25, 545.723, 493.25, 545.723], + "text": "453", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [493.25, 530.303, 511.25, 545.723], + "quad": [493.25, 530.303, 511.25, 530.303, 511.25, 545.723, 493.25, 545.723], + "text": "453" + }] + }] + }] + }, + { + "rect": [50.0, 481.611, 101.0, 513.49], + "rowStart": 3, + "rowEnd": 3, + "columnStart": 0, + "columnEnd": 0, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [59.55, 483.40299999999999, 87.54599999999999, 498.823], + "quad": [59.55, 483.40299999999999, 87.54599999999999, 483.40299999999999, 87.54599999999999, 498.823, 59.55, 498.823], + "text": "qdfgq", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [59.55, 483.40299999999999, 87.54599999999999, 498.823], + "quad": [59.55, 483.40299999999999, 87.54599999999999, 483.40299999999999, 87.54599999999999, 498.823, 59.55, 498.823], + "text": "qdfgq" + }] + }] + }] + }, + { + "rect": [101.0, 481.611, 149.0, 513.49], + "rowStart": 3, + "rowEnd": 3, + "columnStart": 1, + "columnEnd": 1, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [107.7, 483.40299999999999, 113.7, 498.823], + "quad": [107.7, 483.40299999999999, 113.7, 483.40299999999999, 113.7, 498.823, 107.7, 498.823], + "text": "3", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 483.40299999999999, 113.7, 498.823], + "quad": [107.7, 483.40299999999999, 113.7, 483.40299999999999, 113.7, 498.823, 107.7, 498.823], + "text": "3" + }] + }] + }] + }, + { + "rect": [149.0, 481.611, 199.0, 513.49], + "rowStart": 3, + "rowEnd": 3, + "columnStart": 2, + "columnEnd": 2, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [155.9, 483.40299999999999, 167.9, 498.823], + "quad": [155.9, 483.40299999999999, 167.9, 483.40299999999999, 167.9, 498.823, 155.9, 498.823], + "text": "12", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [155.9, 483.40299999999999, 167.9, 498.823], + "quad": [155.9, 483.40299999999999, 167.9, 483.40299999999999, 167.9, 498.823, 155.9, 498.823], + "text": "12" + }] + }] + }] + }, + { + "rect": [199.0, 481.611, 245.0, 513.49], + "rowStart": 3, + "rowEnd": 3, + "columnStart": 3, + "columnEnd": 3, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [204.1, 483.40299999999999, 240.1, 498.823], + "quad": [204.1, 483.40299999999999, 240.1, 483.40299999999999, 240.1, 498.823, 204.1, 498.823], + "text": "123545", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 483.40299999999999, 240.1, 498.823], + "quad": [204.1, 483.40299999999999, 240.1, 483.40299999999999, 240.1, 498.823, 204.1, 498.823], + "text": "123545" + }] + }] + }] + }, + { + "rect": [245.0, 481.611, 294.0, 513.49], + "rowStart": 3, + "rowEnd": 3, + "columnStart": 4, + "columnEnd": 4, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [252.3, 483.40299999999999, 264.3, 498.823], + "quad": [252.3, 483.40299999999999, 264.3, 483.40299999999999, 264.3, 498.823, 252.3, 498.823], + "text": "45", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [252.3, 483.40299999999999, 264.3, 498.823], + "quad": [252.3, 483.40299999999999, 264.3, 483.40299999999999, 264.3, 498.823, 252.3, 498.823], + "text": "45" + }] + }] + }] + }, + { + "rect": [294.0, 481.611, 343.0, 513.49], + "rowStart": 3, + "rowEnd": 3, + "columnStart": 5, + "columnEnd": 5, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [300.5, 483.40299999999999, 312.5, 498.823], + "quad": [300.5, 483.40299999999999, 312.5, 483.40299999999999, 312.5, 498.823, 300.5, 498.823], + "text": "44", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [300.5, 483.40299999999999, 312.5, 498.823], + "quad": [300.5, 483.40299999999999, 312.5, 483.40299999999999, 312.5, 498.823, 300.5, 498.823], + "text": "44" + }] + }] + }] + }, + { + "rect": [343.0, 481.611, 391.0, 513.49], + "rowStart": 3, + "rowEnd": 3, + "columnStart": 6, + "columnEnd": 6, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [348.65000000000006, 483.40299999999999, 360.65000000000006, 498.823], + "quad": [348.65000000000006, 483.40299999999999, 360.65000000000006, 483.40299999999999, 360.65000000000006, 498.823, 348.65000000000006, 498.823], + "text": "78", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [348.65000000000006, 483.40299999999999, 360.65000000000006, 498.823], + "quad": [348.65000000000006, 483.40299999999999, 360.65000000000006, 483.40299999999999, 360.65000000000006, 498.823, 348.65000000000006, 498.823], + "text": "78" + }] + }] + }] + }, + { + "rect": [391.0, 481.611, 441.0, 513.49], + "rowStart": 3, + "rowEnd": 3, + "columnStart": 7, + "columnEnd": 7, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [396.85, 483.40299999999999, 408.85, 498.823], + "quad": [396.85, 483.40299999999999, 408.85, 483.40299999999999, 408.85, 498.823, 396.85, 498.823], + "text": "48", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 483.40299999999999, 408.85, 498.823], + "quad": [396.85, 483.40299999999999, 408.85, 483.40299999999999, 408.85, 498.823, 396.85, 498.823], + "text": "48" + }] + }] + }] + }, + { + "rect": [441.0, 481.611, 487.0, 513.49], + "rowStart": 3, + "rowEnd": 3, + "columnStart": 8, + "columnEnd": 8, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [445.05, 483.40299999999999, 457.05, 498.823], + "quad": [445.05, 483.40299999999999, 457.05, 483.40299999999999, 457.05, 498.823, 445.05, 498.823], + "text": "45", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [445.05, 483.40299999999999, 457.05, 498.823], + "quad": [445.05, 483.40299999999999, 457.05, 483.40299999999999, 457.05, 498.823, 445.05, 498.823], + "text": "45" + }] + }] + }] + }, + { + "rect": [487.0, 481.611, 546.0, 513.49], + "rowStart": 3, + "rowEnd": 3, + "columnStart": 9, + "columnEnd": 9, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [493.25, 483.40299999999999, 511.25, 498.823], + "quad": [493.25, 483.40299999999999, 511.25, 483.40299999999999, 511.25, 498.823, 493.25, 498.823], + "text": "453", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [493.25, 483.40299999999999, 511.25, 498.823], + "quad": [493.25, 483.40299999999999, 511.25, 483.40299999999999, 511.25, 498.823, 493.25, 498.823], + "text": "453" + }] + }] + }] + }, + { + "rect": [50.0, 462.383, 101.0, 481.611], + "rowStart": 4, + "rowEnd": 4, + "columnStart": 0, + "columnEnd": 0, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [59.55, 464.10299999999998, 69.534, 479.52299999999999], + "quad": [59.55, 464.10299999999998, 69.534, 464.10299999999998, 69.534, 479.52299999999999, 59.55, 479.52299999999999], + "text": "as", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [59.55, 464.10299999999998, 69.534, 479.52299999999999], + "quad": [59.55, 464.10299999999998, 69.534, 464.10299999999998, 69.534, 479.52299999999999, 59.55, 479.52299999999999], + "text": "as" + }] + }] + }] + }, + { + "rect": [101.0, 462.383, 149.0, 481.611], + "rowStart": 4, + "rowEnd": 4, + "columnStart": 1, + "columnEnd": 1, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [107.7, 464.10299999999998, 113.7, 479.52299999999999], + "quad": [107.7, 464.10299999999998, 113.7, 464.10299999999998, 113.7, 479.52299999999999, 107.7, 479.52299999999999], + "text": "5", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 464.10299999999998, 113.7, 479.52299999999999], + "quad": [107.7, 464.10299999999998, 113.7, 464.10299999999998, 113.7, 479.52299999999999, 107.7, 479.52299999999999], + "text": "5" + }] + }] + }] + }, + { + "rect": [149.0, 462.383, 199.0, 481.611], + "rowStart": 4, + "rowEnd": 4, + "columnStart": 2, + "columnEnd": 2, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [155.9, 464.10299999999998, 173.9, 479.52299999999999], + "quad": [155.9, 464.10299999999998, 173.9, 464.10299999999998, 173.9, 479.52299999999999, 155.9, 479.52299999999999], + "text": "123", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [155.9, 464.10299999999998, 173.9, 479.52299999999999], + "quad": [155.9, 464.10299999999998, 173.9, 464.10299999999998, 173.9, 479.52299999999999, 155.9, 479.52299999999999], + "text": "123" + }] + }] + }] + }, + { + "rect": [199.0, 462.383, 245.0, 481.611], + "rowStart": 4, + "rowEnd": 4, + "columnStart": 3, + "columnEnd": 3, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [204.1, 464.10299999999998, 216.1, 479.52299999999999], + "quad": [204.1, 464.10299999999998, 216.1, 464.10299999999998, 216.1, 479.52299999999999, 204.1, 479.52299999999999], + "text": "12", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 464.10299999999998, 216.1, 479.52299999999999], + "quad": [204.1, 464.10299999999998, 216.1, 464.10299999999998, 216.1, 479.52299999999999, 204.1, 479.52299999999999], + "text": "12" + }] + }] + }] + }, + { + "rect": [245.0, 462.383, 294.0, 481.611], + "rowStart": 4, + "rowEnd": 4, + "columnStart": 4, + "columnEnd": 4, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [252.3, 464.10299999999998, 264.3, 479.52299999999999], + "quad": [252.3, 464.10299999999998, 264.3, 464.10299999999998, 264.3, 479.52299999999999, 252.3, 479.52299999999999], + "text": "45", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [252.3, 464.10299999999998, 264.3, 479.52299999999999], + "quad": [252.3, 464.10299999999998, 264.3, 464.10299999999998, 264.3, 479.52299999999999, 252.3, 479.52299999999999], + "text": "45" + }] + }] + }] + }, + { + "rect": [294.0, 462.383, 343.0, 481.611], + "rowStart": 4, + "rowEnd": 4, + "columnStart": 5, + "columnEnd": 5, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [300.5, 464.10299999999998, 312.5, 479.52299999999999], + "quad": [300.5, 464.10299999999998, 312.5, 464.10299999999998, 312.5, 479.52299999999999, 300.5, 479.52299999999999], + "text": "44", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [300.5, 464.10299999999998, 312.5, 479.52299999999999], + "quad": [300.5, 464.10299999999998, 312.5, 464.10299999999998, 312.5, 479.52299999999999, 300.5, 479.52299999999999], + "text": "44" + }] + }] + }] + }, + { + "rect": [343.0, 462.383, 391.0, 481.611], + "rowStart": 4, + "rowEnd": 4, + "columnStart": 6, + "columnEnd": 6, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [348.65000000000006, 464.10299999999998, 360.65000000000006, 479.52299999999999], + "quad": [348.65000000000006, 464.10299999999998, 360.65000000000006, 464.10299999999998, 360.65000000000006, 479.52299999999999, 348.65000000000006, 479.52299999999999], + "text": "73", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [348.65000000000006, 464.10299999999998, 360.65000000000006, 479.52299999999999], + "quad": [348.65000000000006, 464.10299999999998, 360.65000000000006, 464.10299999999998, 360.65000000000006, 479.52299999999999, 348.65000000000006, 479.52299999999999], + "text": "73" + }] + }] + }] + }, + { + "rect": [391.0, 462.383, 441.0, 481.611], + "rowStart": 4, + "rowEnd": 4, + "columnStart": 7, + "columnEnd": 7, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [396.85, 464.10299999999998, 414.85, 479.52299999999999], + "quad": [396.85, 464.10299999999998, 414.85, 464.10299999999998, 414.85, 479.52299999999999, 396.85, 479.52299999999999], + "text": "345", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 464.10299999999998, 414.85, 479.52299999999999], + "quad": [396.85, 464.10299999999998, 414.85, 464.10299999999998, 414.85, 479.52299999999999, 396.85, 479.52299999999999], + "text": "345" + }] + }] + }] + }, + { + "rect": [441.0, 462.383, 487.0, 481.611], + "rowStart": 4, + "rowEnd": 4, + "columnStart": 8, + "columnEnd": 8, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [445.05, 464.10299999999998, 463.05, 479.52299999999999], + "quad": [445.05, 464.10299999999998, 463.05, 464.10299999999998, 463.05, 479.52299999999999, 445.05, 479.52299999999999], + "text": "453", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [445.05, 464.10299999999998, 463.05, 479.52299999999999], + "quad": [445.05, 464.10299999999998, 463.05, 464.10299999999998, 463.05, 479.52299999999999, 445.05, 479.52299999999999], + "text": "453" + }] + }] + }] + }, + { + "rect": [487.0, 462.383, 546.0, 481.611], + "rowStart": 4, + "rowEnd": 4, + "columnStart": 9, + "columnEnd": 9, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [493.25, 464.10299999999998, 511.25, 479.52299999999999], + "quad": [493.25, 464.10299999999998, 511.25, 464.10299999999998, 511.25, 479.52299999999999, 493.25, 479.52299999999999], + "text": "453", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [493.25, 464.10299999999998, 511.25, 479.52299999999999], + "quad": [493.25, 464.10299999999998, 511.25, 464.10299999999998, 511.25, 479.52299999999999, 493.25, 479.52299999999999], + "text": "453" + }] + }] + }] + }, + { + "rect": [50.0, 443.154, 101.0, 462.383], + "rowStart": 5, + "rowEnd": 5, + "columnStart": 0, + "columnEnd": 0, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [59.55, 444.80299999999996, 76.86609375, 460.22299999999998], + "quad": [59.55, 444.80299999999996, 76.86609375, 444.80299999999996, 76.86609375, 460.22299999999998, 59.55, 460.22299999999998], + "text": "Edf", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [59.55, 444.80299999999996, 76.86609375, 460.22299999999998], + "quad": [59.55, 444.80299999999996, 76.86609375, 444.80299999999996, 76.86609375, 460.22299999999998, 59.55, 460.22299999999998], + "text": "Edf" + }] + }] + }] + }, + { + "rect": [101.0, 443.154, 149.0, 462.383], + "rowStart": 5, + "rowEnd": 5, + "columnStart": 1, + "columnEnd": 1, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [107.7, 444.80299999999996, 113.7, 460.22299999999998], + "quad": [107.7, 444.80299999999996, 113.7, 444.80299999999996, 113.7, 460.22299999999998, 107.7, 460.22299999999998], + "text": "1", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 444.80299999999996, 113.7, 460.22299999999998], + "quad": [107.7, 444.80299999999996, 113.7, 444.80299999999996, 113.7, 460.22299999999998, 107.7, 460.22299999999998], + "text": "1" + }] + }] + }] + }, + { + "rect": [149.0, 443.154, 199.0, 462.383], + "rowStart": 5, + "rowEnd": 5, + "columnStart": 2, + "columnEnd": 2, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [155.9, 444.80299999999996, 176.9, 460.22299999999998], + "quad": [155.9, 444.80299999999996, 176.9, 444.80299999999996, 176.9, 460.22299999999998, 155.9, 460.22299999999998], + "text": "0.77", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [155.9, 444.80299999999996, 176.9, 460.22299999999998], + "quad": [155.9, 444.80299999999996, 176.9, 444.80299999999996, 176.9, 460.22299999999998, 155.9, 460.22299999999998], + "text": "0.77" + }] + }] + }] + }, + { + "rect": [199.0, 443.154, 245.0, 462.383], + "rowStart": 5, + "rowEnd": 5, + "columnStart": 3, + "columnEnd": 3, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [204.1, 444.80299999999996, 216.1, 460.22299999999998], + "quad": [204.1, 444.80299999999996, 216.1, 444.80299999999996, 216.1, 460.22299999999998, 204.1, 460.22299999999998], + "text": "21", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 444.80299999999996, 216.1, 460.22299999999998], + "quad": [204.1, 444.80299999999996, 216.1, 444.80299999999996, 216.1, 460.22299999999998, 204.1, 460.22299999999998], + "text": "21" + }] + }] + }] + }, + { + "rect": [245.0, 443.154, 294.0, 462.383], + "rowStart": 5, + "rowEnd": 5, + "columnStart": 4, + "columnEnd": 4, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [252.3, 444.80299999999996, 264.3, 460.22299999999998], + "quad": [252.3, 444.80299999999996, 264.3, 444.80299999999996, 264.3, 460.22299999999998, 252.3, 460.22299999999998], + "text": "45", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [252.3, 444.80299999999996, 264.3, 460.22299999999998], + "quad": [252.3, 444.80299999999996, 264.3, 444.80299999999996, 264.3, 460.22299999999998, 252.3, 460.22299999999998], + "text": "45" + }] + }] + }] + }, + { + "rect": [294.0, 443.154, 343.0, 462.383], + "rowStart": 5, + "rowEnd": 5, + "columnStart": 5, + "columnEnd": 5, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [300.5, 444.80299999999996, 306.5, 460.22299999999998], + "quad": [300.5, 444.80299999999996, 306.5, 444.80299999999996, 306.5, 460.22299999999998, 300.5, 460.22299999999998], + "text": "4", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [300.5, 444.80299999999996, 306.5, 460.22299999999998], + "quad": [300.5, 444.80299999999996, 306.5, 444.80299999999996, 306.5, 460.22299999999998, 300.5, 460.22299999999998], + "text": "4" + }] + }] + }] + }, + { + "rect": [343.0, 443.154, 391.0, 462.383], + "rowStart": 5, + "rowEnd": 5, + "columnStart": 6, + "columnEnd": 6, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [348.65000000000006, 444.80299999999996, 366.65000000000006, 460.22299999999998], + "quad": [348.65000000000006, 444.80299999999996, 366.65000000000006, 444.80299999999996, 366.65000000000006, 460.22299999999998, 348.65000000000006, 460.22299999999998], + "text": "254", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [348.65000000000006, 444.80299999999996, 366.65000000000006, 460.22299999999998], + "quad": [348.65000000000006, 444.80299999999996, 366.65000000000006, 444.80299999999996, 366.65000000000006, 460.22299999999998, 348.65000000000006, 460.22299999999998], + "text": "254" + }] + }] + }] + }, + { + "rect": [391.0, 443.154, 441.0, 462.383], + "rowStart": 5, + "rowEnd": 5, + "columnStart": 7, + "columnEnd": 7, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [396.85, 444.80299999999996, 408.85, 460.22299999999998], + "quad": [396.85, 444.80299999999996, 408.85, 444.80299999999996, 408.85, 460.22299999999998, 396.85, 460.22299999999998], + "text": "45", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 444.80299999999996, 408.85, 460.22299999999998], + "quad": [396.85, 444.80299999999996, 408.85, 444.80299999999996, 408.85, 460.22299999999998, 396.85, 460.22299999999998], + "text": "45" + }] + }] + }] + }, + { + "rect": [441.0, 443.154, 487.0, 462.383], + "rowStart": 5, + "rowEnd": 5, + "columnStart": 8, + "columnEnd": 8, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [445.05, 444.80299999999996, 463.05, 460.22299999999998], + "quad": [445.05, 444.80299999999996, 463.05, 444.80299999999996, 463.05, 460.22299999999998, 445.05, 460.22299999999998], + "text": "453", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [445.05, 444.80299999999996, 463.05, 460.22299999999998], + "quad": [445.05, 444.80299999999996, 463.05, 444.80299999999996, 463.05, 460.22299999999998, 445.05, 460.22299999999998], + "text": "453" + }] + }] + }] + }, + { + "rect": [487.0, 443.154, 546.0, 462.383], + "rowStart": 5, + "rowEnd": 5, + "columnStart": 9, + "columnEnd": 9, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [493.25, 444.80299999999996, 511.25, 460.22299999999998], + "quad": [493.25, 444.80299999999996, 511.25, 444.80299999999996, 511.25, 460.22299999999998, 493.25, 460.22299999999998], + "text": "453", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [493.25, 444.80299999999996, 511.25, 460.22299999999998], + "quad": [493.25, 444.80299999999996, 511.25, 444.80299999999996, 511.25, 460.22299999999998, 493.25, 460.22299999999998], + "text": "453" + }] + }] + }] + }, + { + "rect": [50.0, 423.926, 101.0, 443.154], + "rowStart": 6, + "rowEnd": 6, + "columnStart": 0, + "columnEnd": 0, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [59.55, 425.503, 69.54599999999999, 440.923], + "quad": [59.55, 425.503, 69.54599999999999, 425.503, 69.54599999999999, 440.923, 59.55, 440.923], + "text": "fq", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [59.55, 425.503, 69.54599999999999, 440.923], + "quad": [59.55, 425.503, 69.54599999999999, 425.503, 69.54599999999999, 440.923, 59.55, 440.923], + "text": "fq" + }] + }] + }] + }, + { + "rect": [101.0, 423.926, 149.0, 443.154], + "rowStart": 6, + "rowEnd": 6, + "columnStart": 1, + "columnEnd": 1, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [107.7, 425.503, 119.7, 440.923], + "quad": [107.7, 425.503, 119.7, 425.503, 119.7, 440.923, 107.7, 440.923], + "text": "22", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 425.503, 119.7, 440.923], + "quad": [107.7, 425.503, 119.7, 425.503, 119.7, 440.923, 107.7, 440.923], + "text": "22" + }] + }] + }] + }, + { + "rect": [149.0, 423.926, 199.0, 443.154], + "rowStart": 6, + "rowEnd": 6, + "columnStart": 2, + "columnEnd": 2, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [155.9, 425.503, 185.9, 440.923], + "quad": [155.9, 425.503, 185.9, 425.503, 185.9, 440.923, 155.9, 440.923], + "text": "12455", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [155.9, 425.503, 185.9, 440.923], + "quad": [155.9, 425.503, 185.9, 425.503, 185.9, 440.923, 155.9, 440.923], + "text": "12455" + }] + }] + }] + }, + { + "rect": [199.0, 423.926, 245.0, 443.154], + "rowStart": 6, + "rowEnd": 6, + "columnStart": 3, + "columnEnd": 3, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [204.1, 425.503, 216.1, 440.923], + "quad": [204.1, 425.503, 216.1, 425.503, 216.1, 440.923, 204.1, 440.923], + "text": "12", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 425.503, 216.1, 440.923], + "quad": [204.1, 425.503, 216.1, 425.503, 216.1, 440.923, 204.1, 440.923], + "text": "12" + }] + }] + }] + }, + { + "rect": [245.0, 423.926, 294.0, 443.154], + "rowStart": 6, + "rowEnd": 6, + "columnStart": 4, + "columnEnd": 4, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [252.3, 425.503, 258.3, 440.923], + "quad": [252.3, 425.503, 258.3, 425.503, 258.3, 440.923, 252.3, 440.923], + "text": "5", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [252.3, 425.503, 258.3, 440.923], + "quad": [252.3, 425.503, 258.3, 425.503, 258.3, 440.923, 252.3, 440.923], + "text": "5" + }] + }] + }] + }, + { + "rect": [294.0, 423.926, 343.0, 443.154], + "rowStart": 6, + "rowEnd": 6, + "columnStart": 5, + "columnEnd": 5, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [300.5, 425.503, 318.5, 440.923], + "quad": [300.5, 425.503, 318.5, 425.503, 318.5, 440.923, 300.5, 440.923], + "text": "564", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [300.5, 425.503, 318.5, 440.923], + "quad": [300.5, 425.503, 318.5, 425.503, 318.5, 440.923, 300.5, 440.923], + "text": "564" + }] + }] + }] + }, + { + "rect": [343.0, 423.926, 391.0, 443.154], + "rowStart": 6, + "rowEnd": 6, + "columnStart": 6, + "columnEnd": 6, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [348.65000000000006, 425.503, 372.65000000000006, 440.923], + "quad": [348.65000000000006, 425.503, 372.65000000000006, 425.503, 372.65000000000006, 440.923, 348.65000000000006, 440.923], + "text": "3445", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [348.65000000000006, 425.503, 372.65000000000006, 440.923], + "quad": [348.65000000000006, 425.503, 372.65000000000006, 425.503, 372.65000000000006, 440.923, 348.65000000000006, 440.923], + "text": "3445" + }] + }] + }] + }, + { + "rect": [391.0, 423.926, 441.0, 443.154], + "rowStart": 6, + "rowEnd": 6, + "columnStart": 7, + "columnEnd": 7, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [396.85, 425.503, 414.85, 440.923], + "quad": [396.85, 425.503, 414.85, 425.503, 414.85, 440.923, 396.85, 440.923], + "text": "435", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 425.503, 414.85, 440.923], + "quad": [396.85, 425.503, 414.85, 425.503, 414.85, 440.923, 396.85, 440.923], + "text": "435" + }] + }] + }] + }, + { + "rect": [441.0, 423.926, 487.0, 443.154], + "rowStart": 6, + "rowEnd": 6, + "columnStart": 8, + "columnEnd": 8, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [445.05, 425.503, 451.05, 440.923], + "quad": [445.05, 425.503, 451.05, 425.503, 451.05, 440.923, 445.05, 440.923], + "text": "4", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [445.05, 425.503, 451.05, 440.923], + "quad": [445.05, 425.503, 451.05, 425.503, 451.05, 440.923, 445.05, 440.923], + "text": "4" + }] + }] + }] + }, + { + "rect": [487.0, 423.926, 546.0, 443.154], + "rowStart": 6, + "rowEnd": 6, + "columnStart": 9, + "columnEnd": 9, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [493.25, 425.503, 499.25, 440.923], + "quad": [493.25, 425.503, 499.25, 425.503, 499.25, 440.923, 493.25, 440.923], + "text": "4", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [493.25, 425.503, 499.25, 440.923], + "quad": [493.25, 425.503, 499.25, 425.503, 499.25, 440.923, 493.25, 440.923], + "text": "4" + }] + }] + }] + }, + { + "rect": [50.0, 397.614, 101.0, 423.926], + "rowStart": 7, + "rowEnd": 7, + "columnStart": 0, + "columnEnd": 0, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [59.55, 406.203, 79.53, 421.623], + "quad": [59.55, 406.203, 79.53, 406.203, 79.53, 421.623, 59.55, 421.623], + "text": "qew", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [59.55, 406.203, 79.53, 421.623], + "quad": [59.55, 406.203, 79.53, 406.203, 79.53, 421.623, 59.55, 421.623], + "text": "qew" + }] + }] + }] + }, + { + "rect": [101.0, 397.614, 149.0, 423.926], + "rowStart": 7, + "rowEnd": 7, + "columnStart": 1, + "columnEnd": 1, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [107.7, 406.203, 113.7, 421.623], + "quad": [107.7, 406.203, 113.7, 406.203, 113.7, 421.623, 107.7, 421.623], + "text": "2", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [107.7, 406.203, 113.7, 421.623], + "quad": [107.7, 406.203, 113.7, 406.203, 113.7, 421.623, 107.7, 421.623], + "text": "2" + }] + }] + }] + }, + { + "rect": [149.0, 397.614, 199.0, 423.926], + "rowStart": 7, + "rowEnd": 7, + "columnStart": 2, + "columnEnd": 2, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [155.9, 406.203, 173.9, 421.623], + "quad": [155.9, 406.203, 173.9, 406.203, 173.9, 421.623, 155.9, 421.623], + "text": "122", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [155.9, 406.203, 173.9, 421.623], + "quad": [155.9, 406.203, 173.9, 406.203, 173.9, 421.623, 155.9, 421.623], + "text": "122" + }] + }] + }] + }, + { + "rect": [199.0, 397.614, 245.0, 423.926], + "rowStart": 7, + "rowEnd": 7, + "columnStart": 3, + "columnEnd": 3, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [204.1, 406.203, 216.1, 421.623], + "quad": [204.1, 406.203, 216.1, 406.203, 216.1, 421.623, 204.1, 421.623], + "text": "12", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [204.1, 406.203, 216.1, 421.623], + "quad": [204.1, 406.203, 216.1, 406.203, 216.1, 421.623, 204.1, 421.623], + "text": "12" + }] + }] + }] + }, + { + "rect": [245.0, 397.614, 294.0, 423.926], + "rowStart": 7, + "rowEnd": 7, + "columnStart": 4, + "columnEnd": 4, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [252.3, 406.203, 264.3, 421.623], + "quad": [252.3, 406.203, 264.3, 406.203, 264.3, 421.623, 252.3, 421.623], + "text": "44", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [252.3, 406.203, 264.3, 421.623], + "quad": [252.3, 406.203, 264.3, 406.203, 264.3, 421.623, 252.3, 421.623], + "text": "44" + }] + }] + }] + }, + { + "rect": [294.0, 397.614, 343.0, 423.926], + "rowStart": 7, + "rowEnd": 7, + "columnStart": 5, + "columnEnd": 5, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [300.5, 406.203, 306.5, 421.623], + "quad": [300.5, 406.203, 306.5, 406.203, 306.5, 421.623, 300.5, 421.623], + "text": "3", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [300.5, 406.203, 306.5, 421.623], + "quad": [300.5, 406.203, 306.5, 406.203, 306.5, 421.623, 300.5, 421.623], + "text": "3" + }] + }] + }] + }, + { + "rect": [343.0, 397.614, 391.0, 423.926], + "rowStart": 7, + "rowEnd": 7, + "columnStart": 6, + "columnEnd": 6, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [348.65000000000006, 406.203, 360.65000000000006, 421.623], + "quad": [348.65000000000006, 406.203, 360.65000000000006, 406.203, 360.65000000000006, 421.623, 348.65000000000006, 421.623], + "text": "34", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [348.65000000000006, 406.203, 360.65000000000006, 421.623], + "quad": [348.65000000000006, 406.203, 360.65000000000006, 406.203, 360.65000000000006, 421.623, 348.65000000000006, 421.623], + "text": "34" + }] + }] + }] + }, + { + "rect": [391.0, 397.614, 441.0, 423.926], + "rowStart": 7, + "rowEnd": 7, + "columnStart": 7, + "columnEnd": 7, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [396.85, 406.203, 408.85, 421.623], + "quad": [396.85, 406.203, 408.85, 406.203, 408.85, 421.623, 396.85, 421.623], + "text": "45", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [396.85, 406.203, 408.85, 421.623], + "quad": [396.85, 406.203, 408.85, 406.203, 408.85, 421.623, 396.85, 421.623], + "text": "45" + }] + }] + }] + }, + { + "rect": [441.0, 397.614, 487.0, 423.926], + "rowStart": 7, + "rowEnd": 7, + "columnStart": 8, + "columnEnd": 8, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [445.05, 406.203, 457.05, 421.623], + "quad": [445.05, 406.203, 457.05, 406.203, 457.05, 421.623, 445.05, 421.623], + "text": "37", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [445.05, 406.203, 457.05, 421.623], + "quad": [445.05, 406.203, 457.05, 406.203, 457.05, 421.623, 445.05, 421.623], + "text": "37" + }] + }] + }] + }, + { + "rect": [487.0, 397.614, 546.0, 423.926], + "rowStart": 7, + "rowEnd": 7, + "columnStart": 9, + "columnEnd": 9, + "kids": [ + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [493.25, 406.203, 511.25, 421.623], + "quad": [493.25, 406.203, 511.25, 406.203, 511.25, 421.623, 493.25, 421.623], + "text": "345", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [493.25, 406.203, 511.25, 421.623], + "quad": [493.25, 406.203, 511.25, 406.203, 511.25, 421.623, 493.25, 421.623], + "text": "345" + }] + }] + }] + }] + }, + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [56.8, 362.053, 337.7080000000001, 377.473], + "quad": [56.8, 362.053, 337.7080000000001, 362.053, 337.7080000000001, 377.473, 56.8, 377.473], + "text": "This is some text beneath the Table that is just not relevant", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [56.8, 362.053, 78.11200000000001, 377.473], + "quad": [56.8, 362.053, 78.11200000000001, 362.053, 78.11200000000001, 377.473, 56.8, 377.473], + "text": "This" + }, + { + "type": "word", + "rect": [81.11200000000001, 362.053, 89.10400000000002, 377.473], + "quad": [81.11200000000001, 362.053, 89.10400000000002, 362.053, 89.10400000000002, 377.473, 81.11200000000001, 377.473], + "text": "is" + }, + { + "type": "word", + "rect": [92.10400000000002, 362.053, 117.41200000000002, 377.473], + "quad": [92.10400000000002, 362.053, 117.41200000000002, 362.053, 117.41200000000002, 377.473, 92.10400000000002, 377.473], + "text": "some" + }, + { + "type": "word", + "rect": [120.41200000000002, 362.053, 138.37600000000004, 377.473], + "quad": [120.41200000000002, 362.053, 138.37600000000004, 362.053, 138.37600000000004, 377.473, 120.41200000000002, 377.473], + "text": "text" + }, + { + "type": "word", + "rect": [141.37600000000004, 362.053, 178.64800000000006, 377.473], + "quad": [141.37600000000004, 362.053, 178.64800000000006, 362.053, 178.64800000000006, 377.473, 141.37600000000004, 377.473], + "text": "beneath" + }, + { + "type": "word", + "rect": [181.64800000000006, 362.053, 196.28800000000008, 377.473], + "quad": [181.64800000000006, 362.053, 196.28800000000008, 362.053, 196.28800000000008, 377.473, 181.64800000000006, 377.473], + "text": "the" + }, + { + "type": "word", + "rect": [199.07200000000007, 362.053, 225.52000000000008, 377.473], + "quad": [199.07200000000007, 362.053, 225.52000000000008, 362.053, 225.52000000000008, 377.473, 199.07200000000007, 377.473], + "text": "Table" + }, + { + "type": "word", + "rect": [228.52000000000008, 362.053, 246.4840000000001, 377.473], + "quad": [228.52000000000008, 362.053, 246.4840000000001, 362.053, 246.4840000000001, 377.473, 228.52000000000008, 377.473], + "text": "that" + }, + { + "type": "word", + "rect": [249.4840000000001, 362.053, 257.4760000000001, 377.473], + "quad": [249.4840000000001, 362.053, 257.4760000000001, 362.053, 257.4760000000001, 377.473, 249.4840000000001, 377.473], + "text": "is" + }, + { + "type": "word", + "rect": [260.4760000000001, 362.053, 277.79200000000017, 377.473], + "quad": [260.4760000000001, 362.053, 277.79200000000017, 362.053, 277.79200000000017, 377.473, 260.4760000000001, 377.473], + "text": "just" + }, + { + "type": "word", + "rect": [280.79200000000017, 362.053, 296.11600000000018, 377.473], + "quad": [280.79200000000017, 362.053, 296.11600000000018, 362.053, 296.11600000000018, 377.473, 280.79200000000017, 377.473], + "text": "not" + }, + { + "type": "word", + "rect": [299.11600000000018, 362.053, 337.7080000000001, 377.473], + "quad": [299.11600000000018, 362.053, 337.7080000000001, 362.053, 337.7080000000001, 377.473, 299.11600000000018, 377.473], + "text": "relevant" + }] + }] + }, + { + "type": "paragraph", + "kids": [ + { + "type": "line", + "rect": [232.25, 58.452999999999999, 363.17, 73.87299999999999], + "quad": [232.25, 58.452999999999999, 363.17, 58.452999999999999, 363.17, 73.87299999999999, 232.25, 73.87299999999999], + "text": "HERE IS SOME FOOTER", + "style": { + "color": "#000000", + "name": "LiberationSerif", + "size": 12.0, + "weight": 400.0, + "italic": false, + "serif": false + }, + "kids": [ + { + "type": "word", + "rect": [232.25, 58.452999999999999, 263.546, 73.87299999999999], + "quad": [232.25, 58.452999999999999, 263.546, 58.452999999999999, 263.546, 73.87299999999999, 232.25, 73.87299999999999], + "text": "HERE" + }, + { + "type": "word", + "rect": [266.546, 58.452999999999999, 277.214, 73.87299999999999], + "quad": [266.546, 58.452999999999999, 277.214, 58.452999999999999, 277.214, 73.87299999999999, 266.546, 73.87299999999999], + "text": "IS" + }, + { + "type": "word", + "rect": [280.214, 58.452999999999999, 313.538, 73.87299999999999], + "quad": [280.214, 58.452999999999999, 313.538, 58.452999999999999, 313.538, 73.87299999999999, 280.214, 73.87299999999999], + "text": "SOME" + }, + { + "type": "word", + "rect": [316.538, 58.452999999999999, 363.17, 73.87299999999999], + "quad": [316.538, 58.452999999999999, 363.17, 58.452999999999999, 363.17, 73.87299999999999, 316.538, 73.87299999999999], + "text": "FOOTER" + }] + }] + }] + }] +} \ No newline at end of file diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/apryseAi/Input.pdf b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/apryseAi/Input.pdf new file mode 100644 index 00000000..0fa1765e Binary files /dev/null and b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/apryseAi/Input.pdf differ