From b5b318573d55559d99f8a178501f0263148f0eff Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Mon, 31 Aug 2026 10:26:51 +0100 Subject: [PATCH] feat(templates): add the CharcoalGold photographic CV preset --- CHANGELOG.md | 18 + .../readme/examples/cv-charcoal-gold-v2.pdf | Bin 0 -> 35782 bytes docs/templates/v2-layered/using-templates.md | 14 +- .../demcha/examples/GenerateAllExamples.java | 2 + .../support/CharcoalGoldSampleData.java | 186 + .../examples/support/ShowcaseMetadata.java | 1 + .../templates/cv/v2/CharcoalGoldExample.java | 57 + .../cv/presets/CharcoalGoldFixtures.java | 143 + .../CharcoalGoldLayoutSnapshotTest.java | 36 + .../cv/presets/CharcoalGoldSmokeTest.java | 258 + .../presets/CharcoalGoldVisualParityTest.java | 45 + .../cv/presets/CvFixturePortrait.java | 55 + .../cv/presets/NavySidebarFixtures.java | 32 +- .../cv-v2/charcoal_gold_layout.json | 7457 +++++++++++++++++ .../cv-v2-layered/charcoal_gold-page-0.png | Bin 0 -> 113860 bytes .../templates/cv/presets/CharcoalGold.java | 235 + .../cv/presets/CharcoalGoldAside.java | 386 + .../cv/presets/CharcoalGoldCredentials.java | 170 + .../cv/presets/CharcoalGoldIcons.java | 89 + .../cv/presets/CharcoalGoldMain.java | 233 + .../cv/presets/CharcoalGoldStyles.java | 200 + .../cv/presets/CharcoalGoldText.java | 53 + .../cv/presets/CharcoalGoldWidgets.java | 135 + .../templates/cv/presets/package-info.java | 6 +- .../cv/charcoal-gold/icons/certificate.svg | 1 + .../cv/charcoal-gold/icons/email.svg | 1 + .../cv/charcoal-gold/icons/growth.svg | 1 + .../cv/charcoal-gold/icons/linkedin.svg | 1 + .../cv/charcoal-gold/icons/location.svg | 1 + .../cv/charcoal-gold/icons/phone.svg | 1 + .../templates/cv/charcoal-gold/icons/star.svg | 1 + .../cv/charcoal-gold/icons/trophy.svg | 1 + .../cv/charcoal-gold/icons/website.svg | 1 + 33 files changed, 9780 insertions(+), 40 deletions(-) create mode 100644 assets/readme/examples/cv-charcoal-gold-v2.pdf create mode 100644 examples/src/main/java/com/demcha/examples/support/CharcoalGoldSampleData.java create mode 100644 examples/src/main/java/com/demcha/examples/templates/cv/v2/CharcoalGoldExample.java create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldFixtures.java create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldLayoutSnapshotTest.java create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldSmokeTest.java create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldVisualParityTest.java create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvFixturePortrait.java create mode 100644 qa/src/test/resources/layout-snapshots/canonical-templates/cv-v2/charcoal_gold_layout.json create mode 100644 qa/src/test/resources/visual-baselines/cv-v2-layered/charcoal_gold-page-0.png create mode 100644 templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGold.java create mode 100644 templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldAside.java create mode 100644 templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldCredentials.java create mode 100644 templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldIcons.java create mode 100644 templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldMain.java create mode 100644 templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldStyles.java create mode 100644 templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldText.java create mode 100644 templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldWidgets.java create mode 100644 templates/src/main/resources/templates/cv/charcoal-gold/icons/certificate.svg create mode 100644 templates/src/main/resources/templates/cv/charcoal-gold/icons/email.svg create mode 100644 templates/src/main/resources/templates/cv/charcoal-gold/icons/growth.svg create mode 100644 templates/src/main/resources/templates/cv/charcoal-gold/icons/linkedin.svg create mode 100644 templates/src/main/resources/templates/cv/charcoal-gold/icons/location.svg create mode 100644 templates/src/main/resources/templates/cv/charcoal-gold/icons/phone.svg create mode 100644 templates/src/main/resources/templates/cv/charcoal-gold/icons/star.svg create mode 100644 templates/src/main/resources/templates/cv/charcoal-gold/icons/trophy.svg create mode 100644 templates/src/main/resources/templates/cv/charcoal-gold/icons/website.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index e3bdd4ebf..f1990f136 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,6 +79,24 @@ follow semantic versioning; release dates are ISO 8601. colours the packaged marks come in, so a document chooses one deliberately rather than mixing navy and gold in a row by accident. +- **A photographic CV preset: `CharcoalGold`.** A one-page sheet in two columns: a + charcoal sidebar carrying a ringed photograph, the contact channels behind their + marks, rated skills, languages and degrees, beside a paper column carrying a two-tone + name — the given name in ink, the family name larger and in gold — the summary, the + roles held on a dated rail, a pair of credential columns divided by a hairline, and a + closing strip of tools. Ships as `cv.presets.CharcoalGold` on the existing + `CvDocument` model with **no model change at all**, porting the rendered layout of the + published standalone `charcoal-gold-cv` template. Unlike its ported siblings it leaves + the page size to the caller: the design is drawn on A4 and its geometry follows the + page's own width, so a different page rescales rather than breaks. Seven berths reach + their sections by title; credentials take the mark each entry names in + `CvEntry.icon()` from this preset's own set, every title it draws is a link when the + entry carries one, and a skill the document leaves unlevelled draws no rating rather + than five empty dots. Guarded by a smoke test (including the unknown-mark data error, + the missing portrait, the unlevelled skill, the link targets and the one-page limit), + an exact layout snapshot and a pixel-parity gate; the examples showcase gains + `cv-charcoal-gold-v2`. + - **A two-column editorial CV preset: `SerifHeadline`.** A one-page A4 sheet under a Volkhov masthead — the name in the display serif over its role and a short gold rule, the contact channels stacked opposite — then a two-column body: the roles held on a diff --git a/assets/readme/examples/cv-charcoal-gold-v2.pdf b/assets/readme/examples/cv-charcoal-gold-v2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ae9b0340a1c7ed80e69be7882e78d8f9da153633 GIT binary patch literal 35782 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 to the design: the preset draws a fixed one-page sheet, and a CV + * much longer than this one does not compose at all — the two columns are a + * single atomic row, so it raises {@code AtomicNodeTooLargeException}.

+ * + *

The credential marks are this preset's own vocabulary — + * {@code certificate}, {@code trophy}, {@code growth}, {@code star} — and + * each entry names the one it wants. The portrait is a neutral silhouette + * rather than a photograph, because the example ships in the repository; a + * real CV passes the candidate's own image the same way.

+ */ +public final class CharcoalGoldSampleData { + + private static final String NEWLINE = String.valueOf((char) 10); + private static final String PORTRAIT = "/cv-portrait-placeholder.png"; + + private CharcoalGoldSampleData() { + } + + /** + * A delivery lead's one-page CV. + * + * @return the sample document + */ + public static CvDocument sample() { + return CvDocument.builder() + .identity(CvIdentity.builder() + .name("HELENA", "MARSH") + .jobTitle("DELIVERY LEAD") + .contact(new Contact("+44 161 496 0114", + "helena@example.com", + "Manchester, United Kingdom")) + .link(new Link("helenamarsh.co.uk", "https://helenamarsh.co.uk")) + .link(new Link("linkedin.com/in/hmarsh", + "https://www.linkedin.com/in/hmarsh")) + .portrait(portrait()) + .build()) + .section(new ParagraphSection("Summary", String.join(NEWLINE, + "Delivery lead with nine years running software programmes for" + + " regulated clients, from discovery through the audit that" + + " follows go-live.", + "Happiest with a small team, a short feedback loop, and a plan that" + + " survives contact with the first week."))) + .section(SkillsSection.of("SKILLS", new SkillGroup("Core", List.of( + CvSkill.of("Delivery Management", 1.0), + CvSkill.of("Stakeholder Management", 1.0), + CvSkill.of("Risk & Assurance", 1.0), + CvSkill.of("Budget Ownership", 0.8), + CvSkill.of("Agile Coaching", 0.8), + CvSkill.of("Vendor Management", 0.8), + CvSkill.of("Roadmapping", 1.0), + CvSkill.of("Jira / Confluence", 1.0), + CvSkill.of("Power BI", 0.6), + CvSkill.of("Public Speaking", 0.6))))) + .section(RowsSection.builder("LANGUAGES", RowStyle.PLAIN) + .row("English", "Native") + .row("Welsh", "Native") + .row("Spanish", "B2 – Upper Intermediate") + .row("Italian", "A2 – Basic") + .build()) + .section(EntriesSection.builder("EDUCATION") + .entry(CvEntry.builder("MSc Programme Management") + .subtitle("University of Manchester") + .date("2015 – 2016") + .build()) + .entry(CvEntry.builder("BA Economics") + .subtitle("University of Leeds") + .date("2012 – 2015") + .build()) + .build()) + .section(EntriesSection.builder("EXPERIENCE") + .entry(CvEntry.builder("Delivery Lead") + .subtitle("NORTHWALL GROUP") + .place("MANCHESTER, UK") + .date("2021 – Present") + .link("https://northwall.example.com") + .body(List.of( + "Runs a portfolio of four programmes worth £8M against" + + " a fixed regulatory deadline.", + "Rebuilt the intake process so a request is either" + + " scheduled or refused within a week.", + "Coaches three delivery managers and chairs the monthly" + + " assurance review.", + "Cut third-party spend by 18% by consolidating four" + + " vendor contracts into one.")) + .build()) + .entry(CvEntry.builder("Senior Project Manager") + .subtitle("BRIDGEMOOR CONSULTING") + .place("LEEDS, UK") + .date("2018 – 2021") + .body(List.of( + "Delivered fourteen client programmes across finance" + + " and public sector.", + "Owned budgets, timelines and the escalation path to" + + " the client's board.", + "Introduced the risk register the practice still uses.")) + .build()) + .entry(CvEntry.builder("Project Manager") + .subtitle("ALDGATE DIGITAL") + .place("LONDON, UK") + .date("2016 – 2018") + .body(List.of( + "Ran delivery for two product teams and the platform" + + " work beneath them.", + "Built the reporting pack the leadership team read" + + " weekly.")) + .build()) + .build()) + .section(EntriesSection.builder("CERTIFICATIONS") + .entry(CvEntry.builder("PMP® Certification") + .subtitle("Project Management Institute") + .date("2019") + .icon("certificate") + .build()) + .entry(CvEntry.builder("PRINCE2® Practitioner") + .subtitle("AXELOS") + .date("2018") + .icon("certificate") + .build()) + .entry(CvEntry.builder("Certified Scrum Professional") + .subtitle("Scrum Alliance") + .date("2017") + .icon("certificate") + .build()) + .build()) + .section(EntriesSection.builder("ACHIEVEMENTS") + .entry(CvEntry.builder("Programme of the Year") + .subtitle("Northwall Group") + .date("2024") + .icon("trophy") + .build()) + .entry(CvEntry.builder("Intake Redesign") + .subtitle("Lead time down 62%") + .date("2023") + .icon("growth") + .build()) + .entry(CvEntry.builder("Client Choice Award") + .subtitle("Bridgemoor Consulting") + .date("2020") + .icon("star") + .build()) + .build()) + .section(new ParagraphSection("TECHNICAL TOOLS", String.join(NEWLINE, + "Jira", "Confluence", "Miro", "Power BI", "Smartsheet", "Slack"))) + .build(); + } + + /** + * The packaged silhouette that stands in for a photograph. + * + * @return the portrait image data + */ + private static DocumentImageData portrait() { + try (InputStream in = Objects.requireNonNull( + CharcoalGoldSampleData.class.getResourceAsStream(PORTRAIT), + "cv-portrait-placeholder.png missing from examples/src/main/resources/")) { + return DocumentImageData.fromBytes(in.readAllBytes()); + } catch (IOException e) { + throw new UncheckedIOException("Failed to read the sample portrait", e); + } + } +} diff --git a/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java b/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java index 6d893613e..f47ae6666 100644 --- a/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java +++ b/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java @@ -63,6 +63,7 @@ record Entry(String title, String description, List tags, String codeUrl cv("cv-professional-sidebar-v2", "ProfessionalSidebarExample", "Professional Sidebar", "Navy monogram plate over a pale sidebar of contact marks, skill meters, an education rail and language ratings, beside a white column of profile, roles and projects.", "sidebar", "navy"); cv("cv-navy-sidebar-v2", "NavySidebarExample", "Navy Sidebar", "Navy plate with a ringed portrait, contact marks, degrees, skills and languages, beside a white column of summary, badged sections and roles strung on a timeline rail.", "sidebar", "navy", "portrait"); cv("cv-serif-headline-v2", "SerifHeadlineExample", "Serif Headline", "Volkhov masthead over a two-column body: roles on a timeline rail and marked project cards beside degrees and skill meters, closing with full-width certification and achievement bands.", "serif", "two-column"); + cv("cv-charcoal-gold-v2", "CharcoalGoldExample", "Charcoal Gold", "Charcoal sidebar with a ringed photograph, rated skills and languages, beside a paper column with a two-tone name, a dated experience rail and paired credential columns.", "sidebar", "photo", "gold"); // ===== Templates / Cover Letter (v2 layered, paired 1:1 with CV) ===== // Registered directly: letter() points at the layered preset examples under diff --git a/examples/src/main/java/com/demcha/examples/templates/cv/v2/CharcoalGoldExample.java b/examples/src/main/java/com/demcha/examples/templates/cv/v2/CharcoalGoldExample.java new file mode 100644 index 000000000..db78ef2e2 --- /dev/null +++ b/examples/src/main/java/com/demcha/examples/templates/cv/v2/CharcoalGoldExample.java @@ -0,0 +1,57 @@ +package com.demcha.examples.templates.cv.v2; + +import com.demcha.compose.GraphCompose; +import com.demcha.compose.document.api.DocumentPageSize; +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.templates.api.DocumentTemplate; +import com.demcha.compose.document.templates.cv.data.CvDocument; +import com.demcha.compose.document.templates.cv.presets.CharcoalGold; +import com.demcha.examples.support.CharcoalGoldSampleData; +import com.demcha.examples.support.ExampleOutputPaths; + +import java.nio.file.Path; + +/** + * Renders the layered {@code cv.v2} Charcoal Gold preset against the + * project-manager sample. + * + *

Output: + * {@code examples/target/generated-pdfs/templates/cv/cv-charcoal-gold-v2.pdf}.

+ * + *

Unlike its ported siblings this preset leaves the page to the caller, + * so the session sets A4 with no margin: both columns run to the paper edge + * and each carries its own padding.

+ */ +public final class CharcoalGoldExample { + + private CharcoalGoldExample() { + } + + /** + * @return absolute path of the rendered PDF + * @throws Exception if rendering fails + */ + public static Path generate() throws Exception { + Path outputFile = ExampleOutputPaths.prepare( + "templates/cv", "cv-charcoal-gold-v2.pdf"); + CvDocument doc = CharcoalGoldSampleData.sample(); + DocumentTemplate template = CharcoalGold.create(); + + try (DocumentSession document = GraphCompose.document(outputFile) + .pageSize(DocumentPageSize.A4) + .margin(0f, 0f, 0f, 0f) + .create()) { + template.compose(document, doc); + document.buildPdf(); + } + return outputFile; + } + + /** + * @param args ignored + * @throws Exception if rendering fails + */ + public static void main(String[] args) throws Exception { + System.out.println("Generated: " + generate()); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldFixtures.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldFixtures.java new file mode 100644 index 000000000..84b063386 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldFixtures.java @@ -0,0 +1,143 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.templates.core.identity.Contact; +import com.demcha.compose.document.templates.core.identity.Link; +import com.demcha.compose.document.templates.cv.data.CvDocument; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.CvIdentity; +import com.demcha.compose.document.templates.cv.data.CvSkill; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; +import com.demcha.compose.document.templates.cv.data.RowStyle; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import com.demcha.compose.document.templates.cv.data.SkillGroup; +import com.demcha.compose.document.templates.cv.data.SkillsSection; + +import java.util.List; + +/** + * The canonical fixture for {@link CharcoalGold} — the document the design + * was drawn around, and the one both gates measure. + * + *

One fixture feeds the layout snapshot and the pixel baseline, so a + * change that moves the sheet moves both together instead of leaving one + * gate measuring a document the other no longer renders.

+ */ +public final class CharcoalGoldFixtures { + + private static final String NEWLINE = String.valueOf((char) 10); + + private CharcoalGoldFixtures() { + } + + /** + * The canonical CV: a photograph, five contact channels, ten rated + * skills, four languages, two degrees, three roles, three certifications, + * three achievements and a six-tool strip — one page. + * + * @return the fixture document + */ + public static CvDocument canonicalCv() { + return CvDocument.builder() + .identity(CvIdentity.builder() + .name("ANASTASIA", "SMITH") + .jobTitle("PROJECT MANAGER") + .contact(new Contact("+44 7700 900123", + "hello@anastasiasmith.com", + "London, United Kingdom")) + .link(new Link("anastasiasmith.com", + "https://anastasiasmith.com")) + .link(new Link("linkedin.com/in/anastasiasmith", + "https://www.linkedin.com/in/anastasiasmith")) + .portrait(CvFixturePortrait.silhouette()) + .build()) + .section(new ParagraphSection("Summary", String.join(NEWLINE, + "Results-driven Project Manager with 6+ years of experience leading cross-functional teams and delivering complex projects on time and within budget.", + "Skilled in agile and waterfall methodologies, process optimisation, and stakeholder management. Passionate about driving efficiency and creating value." + ))) + .section(SkillsSection.of("SKILLS", new SkillGroup("Core", List.of( + CvSkill.of("Project Management", 1.0), + CvSkill.of("Budgeting & Forecasting", 1.0), + CvSkill.of("Stakeholder Communication", 1.0), + CvSkill.of("Risk Management", 1.0), + CvSkill.of("Data Analysis", 0.8), + CvSkill.of("Process Improvement", 0.8), + CvSkill.of("Microsoft Excel", 1.0), + CvSkill.of("Power BI", 0.8), + CvSkill.of("Jira / Confluence", 1.0), + CvSkill.of("Agile Methodologies", 0.8) + )))) + .section(RowsSection.builder("LANGUAGES", RowStyle.PLAIN) + .row("English", "Native") + .row("Russian", "Native") + .row("French", "B2 – Upper Intermediate") + .row("German", "A2 – Basic") + .build()) + .section(EntriesSection.builder("EDUCATION") + .entry(CvEntry.builder("MSc Project Management") + .subtitle("University College London").date("2018 – 2019").build()) + .entry(CvEntry.builder("BSc Business Administration") + .subtitle("King's College London").date("2014 – 2017").build()) + .build()) + .section(EntriesSection.builder("EXPERIENCE") + .entry(CvEntry.builder("Senior Project Manager") + .subtitle("DIGITAL SOLUTIONS LTD") + .place("LONDON, UK") + .date("2021 – Present") + .body(List.of( + "Lead end-to-end delivery of enterprise software projects worth £1M–£3M.", + "Manage cross-functional teams of up to 15 members.", + "Implement agile practices that improved delivery speed by 25%.", + "Build strong client relationships and ensure stakeholder alignment." + )) + .build()) + .entry(CvEntry.builder("Project Manager") + .subtitle("INNOVATECH SYSTEMS") + .place("LONDON, UK") + .date("2019 – 2021") + .body(List.of( + "Delivered 12+ projects across IT and business transformation.", + "Monitored budgets, timelines, and resource allocation.", + "Identified risks and implemented mitigation strategies.", + "Achieved 98% on-time project delivery." + )) + .build()) + .entry(CvEntry.builder("Project Coordinator") + .subtitle("GLOBAL BUSINESS SERVICES") + .place("LONDON, UK") + .date("2017 – 2019") + .body(List.of( + "Supported project managers in planning and execution.", + "Prepared reports, dashboards, and documentation.", + "Coordinated meetings and tracked action items.", + "Improved internal processes and project templates." + )) + .build()) + .build()) + .section(EntriesSection.builder("CERTIFICATIONS") + .entry(CvEntry.builder("PMP® Certification") + .subtitle("Project Management Institute").date("2020").icon("certificate").build()) + .entry(CvEntry.builder("PRINCE2® Foundation") + .subtitle("AXELOS").date("2019").icon("certificate").build()) + .entry(CvEntry.builder("AgilePM® Foundation") + .subtitle("APMG International").date("2019").icon("certificate").build()) + .build()) + .section(EntriesSection.builder("ACHIEVEMENTS") + .entry(CvEntry.builder("Excellence in Delivery Award") + .subtitle("Digital Solutions Ltd").date("2023").icon("trophy").build()) + .entry(CvEntry.builder("Process Improvement Initiative") + .subtitle("Increased efficiency by 30%").date("2022").icon("growth").build()) + .entry(CvEntry.builder("Top Performer") + .subtitle("Innovatech Systems").date("2020").icon("star").build()) + .build()) + .section(new ParagraphSection("TECHNICAL TOOLS", String.join(NEWLINE, + "Microsoft 365", + "Jira", + "Confluence", + "Asana", + "Slack", + "Power BI" + ))) + .build(); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldLayoutSnapshotTest.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldLayoutSnapshotTest.java new file mode 100644 index 000000000..61d7e67a5 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldLayoutSnapshotTest.java @@ -0,0 +1,36 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.GraphCompose; +import com.demcha.compose.document.api.DocumentPageSize; +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.templates.TemplateTestSupport; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Exact layout snapshot gate for {@link CharcoalGold} - freezes the resolved + * geometry of the canonical one-page CV. + * + *

This preset leaves the page to the caller, so the session sets A4 with + * no margin: both columns run to the paper edge and each carries its own + * padding.

+ * + *

Refresh with {@code -Dgraphcompose.updateSnapshots=true} after a + * deliberate layout change, and commit the JSON with the change.

+ */ +class CharcoalGoldLayoutSnapshotTest { + + @Test + void canonicalCvMatchesLayoutSnapshot() throws Exception { + try (DocumentSession session = GraphCompose.document() + .pageSize(DocumentPageSize.A4) + .margin(0f, 0f, 0f, 0f) + .create()) { + CharcoalGold.create().compose(session, CharcoalGoldFixtures.canonicalCv()); + assertThat(session.layoutSnapshot().totalPages()).isEqualTo(1); + TemplateTestSupport.assertCanonicalSnapshot( + session, "charcoal_gold_layout", "cv-v2"); + } + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldSmokeTest.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldSmokeTest.java new file mode 100644 index 000000000..975bce03f --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldSmokeTest.java @@ -0,0 +1,258 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.GraphCompose; +import com.demcha.compose.document.api.DocumentPageSize; +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.exceptions.AtomicNodeTooLargeException; +import com.demcha.compose.document.templates.api.DocumentTemplate; +import com.demcha.compose.document.templates.core.identity.Contact; +import com.demcha.compose.document.templates.core.identity.Link; +import com.demcha.compose.document.templates.cv.data.CvDocument; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.CvIdentity; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.RowStyle; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import com.demcha.compose.document.templates.cv.data.SkillGroup; +import com.demcha.compose.document.templates.cv.data.SkillsSection; +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.interactive.action.PDActionURI; +import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation; +import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationLink; +import org.apache.pdfbox.text.PDFTextStripper; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * Smoke test for {@link CharcoalGold} — proves the preset renders a + * {@link CvDocument} end-to-end with its packaged marks, reaches its + * channels and titles as PDF links, and pins the contracts the class + * documents: the credential marks are this preset's own vocabulary, an + * entry without one is drawn plain, a skill without a level draws no + * rating, and the sheet holds one page. + */ +class CharcoalGoldSmokeTest { + + private static byte[] render(CvDocument doc) throws Exception { + try (DocumentSession session = open()) { + CharcoalGold.create().compose(session, doc); + assertThat(session.roots()).isNotEmpty(); + byte[] pdfBytes = session.toPdfBytes(); + assertThat(pdfBytes).isNotEmpty(); + return pdfBytes; + } + } + + /** Both columns run to the paper edge, so the page carries no margin. */ + private static DocumentSession open() { + return GraphCompose.document() + .pageSize(DocumentPageSize.A4) + .margin(0f, 0f, 0f, 0f) + .create(); + } + + private static String textOf(byte[] pdfBytes) throws Exception { + try (PDDocument document = Loader.loadPDF(pdfBytes)) { + return new PDFTextStripper().getText(document); + } + } + + private static List linkUris(byte[] pdfBytes) throws Exception { + List uris = new ArrayList<>(); + try (PDDocument document = Loader.loadPDF(pdfBytes)) { + for (PDPage page : document.getPages()) { + for (PDAnnotation annotation : page.getAnnotations()) { + if (annotation instanceof PDAnnotationLink link + && link.getAction() instanceof PDActionURI action) { + uris.add(action.getURI()); + } + } + } + } + return uris; + } + + @Test + void exposesStableIdentity() { + DocumentTemplate template = CharcoalGold.create(); + assertThat(template.id()).isEqualTo(CharcoalGold.ID); + assertThat(template.displayName()).isEqualTo(CharcoalGold.DISPLAY_NAME); + } + + @Test + void canonicalRenderCarriesTheText() throws Exception { + String text = textOf(render(CharcoalGoldFixtures.canonicalCv())); + assertThat(text) + .contains("hello@anastasiasmith.com") + .contains("London, United Kingdom") + .contains("Results-driven Project Manager") + .contains("Project Management") + .contains("B2 – Upper Intermediate") + .contains("MSc Project Management") + .contains("Senior Project Manager") + .contains("DIGITAL SOLUTIONS LTD · LONDON, UK") + .contains("Lead end-to-end delivery of enterprise software projects") + .contains("PMP® Certification") + .contains("Excellence in Delivery Award") + .contains("Confluence"); + } + + @Test + void rendersOneCanonicalPage() throws Exception { + try (PDDocument document = + Loader.loadPDF(render(CharcoalGoldFixtures.canonicalCv()))) { + assertThat(document.getNumberOfPages()).isEqualTo(1); + } + } + + @Test + void channelsReachThePdfAsLinks() throws Exception { + // The dial and mail targets are built from the values. They are + // annotations, so they move no pixel and no layout node — which is + // why the parity gates cannot see them either. + assertThat(linkUris(render(CharcoalGoldFixtures.canonicalCv()))) + .contains("tel:+447700900123", + "mailto:hello@anastasiasmith.com", + "https://anastasiasmith.com", + "https://www.linkedin.com/in/anastasiasmith"); + } + + @Test + void aTitleWithALinkReachesThePdfAsOne() throws Exception { + byte[] pdf = render(CvDocument.builder() + .identity(identity()) + .section(EntriesSection.builder("Experience") + .entry(CvEntry.builder("Engineer") + .subtitle("Acme") + .date("2024") + .body("Shipped a thing.") + .link("https://acme.example.com") + .build()) + .build()) + .section(EntriesSection.builder("Certifications") + .entry(CvEntry.builder("Certified Something") + .subtitle("An Institute") + .date("2023") + .icon("certificate") + .link("https://example.com/cert") + .build()) + .build()) + .build()); + assertThat(linkUris(pdf)) + .contains("https://acme.example.com", "https://example.com/cert"); + } + + @Test + void rejectsAnUnknownCredentialMarkByName() { + CvDocument doc = CvDocument.builder() + .identity(identity()) + .section(EntriesSection.builder("Achievements") + .entry(CvEntry.builder("Award").icon("no-such-mark").build()) + .build()) + .build(); + try (DocumentSession session = open()) { + assertThatThrownBy(() -> CharcoalGold.create().compose(session, doc)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("no-such-mark") + .hasMessageContaining("trophy"); + } + } + + @Test + void drawsACredentialWithoutAMark() throws Exception { + String text = textOf(render(CvDocument.builder() + .identity(identity()) + .section(EntriesSection.builder("Certifications") + .entry(CvEntry.builder("Certified Something") + .subtitle("An Institute") + .date("2023") + .build()) + .build()) + .build())); + assertThat(text).contains("Certified Something").contains("An Institute"); + } + + @Test + void drawsAnUnlevelledSkillWithoutARating() throws Exception { + // A rating needs a level; without one the row is the name and its + // bullet, not five empty dots that read as a score of zero. + String text = textOf(render(CvDocument.builder() + .identity(identity()) + .section(SkillsSection.of("Skills", SkillGroup.of("Core", "Java", "Kotlin"))) + .build())); + assertThat(text).contains("Java").contains("Kotlin"); + } + + @Test + void rendersWithoutAPortrait() throws Exception { + // No photograph: the sidebar starts at the contact block rather than + // leaving a hole above it. + String text = textOf(render(CvDocument.builder() + .identity(CvIdentity.builder() + .name("Ada", "Lovelace") + .jobTitle("Analyst") + .contact(new Contact("+44 20 7946 0000", "ada@example.com", + "London, UK")) + .build()) + .build())); + assertThat(text).contains("ada@example.com"); + } + + @Test + void writesTheLanguageLevelTheDocumentCarries() throws Exception { + // Languages are rows rather than levelled skills precisely so the + // words survive; the row style is not read. + String text = textOf(render(CvDocument.builder() + .identity(identity()) + .section(RowsSection.builder("Languages", RowStyle.BULLETED_STACKED) + .row("Portuguese", "B1 – Intermediate") + .build()) + .build())); + assertThat(text).contains("Portuguese").contains("B1 – Intermediate"); + } + + @Test + void refusesACvLongerThanTheSheet() { + // The two columns are a single row, and a row is atomic. A CV past + // the sheet raises rather than flowing. + EntriesSection.Builder experience = EntriesSection.builder("Experience"); + for (int i = 0; i < 16; i++) { + experience.entry(CvEntry.builder("Role " + i) + .subtitle("Employer " + i) + .place("City") + .date("2010 - 2011") + .body(List.of( + "Did a substantial thing that took a full line of text here.", + "Did a second substantial thing, also a full line of text.", + "And a third, so each role occupies real vertical space.")) + .build()); + } + CvDocument doc = CvDocument.builder() + .identity(identity()) + .section(experience.build()) + .build(); + try (DocumentSession session = open()) { + CharcoalGold.create().compose(session, doc); + assertThatThrownBy(session::toPdfBytes) + .isInstanceOf(AtomicNodeTooLargeException.class) + .hasMessageContaining("Body"); + } + } + + private static CvIdentity identity() { + return CvIdentity.builder() + .name("Ada", "Lovelace") + .jobTitle("Analyst") + .contact(new Contact("+44 20 7946 0000", "ada@example.com", "London, UK")) + .link(new Link("linkedin.com/in/ada", "https://linkedin.com/in/ada")) + .portrait(CvFixturePortrait.silhouette()) + .build(); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldVisualParityTest.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldVisualParityTest.java new file mode 100644 index 000000000..3a43c141a --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldVisualParityTest.java @@ -0,0 +1,45 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.GraphCompose; +import com.demcha.compose.document.api.DocumentPageSize; +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.testing.visual.PdfVisualRegression; +import org.junit.jupiter.api.Test; + +import java.nio.file.Path; + +/** + * Pixel-diff visual parity gate for {@link CharcoalGold} - the canonical + * one-page CV against a checked-in baseline. + * + *

Re-blessing baselines - after a deliberate visual + * change, re-run with {@code -Dgraphcompose.visual.approve=true} and commit + * the updated PNG with the change. Baselines live under + * {@code src/test/resources/visual-baselines/cv-v2-layered/}.

+ */ +class CharcoalGoldVisualParityTest { + + private static final Path BASELINE_ROOT = Path.of( + "src", "test", "resources", "visual-baselines", "cv-v2-layered"); + + private static final long PIXEL_DIFF_BUDGET = 50_000L; + private static final int PER_PIXEL_TOLERANCE = 8; + + @Test + void rendersWithinPixelDiffBudget() throws Exception { + byte[] pdfBytes; + try (DocumentSession document = GraphCompose.document() + .pageSize(DocumentPageSize.A4) + .margin(0f, 0f, 0f, 0f) + .create()) { + CharcoalGold.create().compose(document, CharcoalGoldFixtures.canonicalCv()); + pdfBytes = document.toPdfBytes(); + } + + PdfVisualRegression.standard() + .baselineRoot(BASELINE_ROOT) + .perPixelTolerance(PER_PIXEL_TOLERANCE) + .mismatchedPixelBudget(PIXEL_DIFF_BUDGET) + .assertMatchesBaseline("charcoal_gold", pdfBytes); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvFixturePortrait.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvFixturePortrait.java new file mode 100644 index 000000000..4b03a3504 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvFixturePortrait.java @@ -0,0 +1,55 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.image.DocumentImageData; + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UncheckedIOException; + +import javax.imageio.ImageIO; + +/** + * The photograph the CV fixtures use. + * + *

It is drawn rather than committed: a real face in the repository would + * be a licensed asset guarding a layout, and what the gates need is only + * that the disc has something in it. It is deterministic, so the pixel + * baselines that include it are stable.

+ */ +final class CvFixturePortrait { + + private CvFixturePortrait() { + } + + /** + * A flat two-tone silhouette. + * + * @return the portrait image data + */ + static DocumentImageData silhouette() { + BufferedImage image = new BufferedImage(512, 512, BufferedImage.TYPE_INT_RGB); + Graphics2D g = image.createGraphics(); + try { + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + g.setColor(new Color(222, 226, 231)); + g.fillRect(0, 0, 512, 512); + g.setColor(new Color(150, 160, 173)); + g.fillOval(171, 102, 169, 169); + g.fillOval(67, 307, 379, 379); + } finally { + g.dispose(); + } + ByteArrayOutputStream png = new ByteArrayOutputStream(); + try { + ImageIO.write(image, "png", png); + } catch (IOException e) { + throw new UncheckedIOException("Failed to draw the fixture portrait", e); + } + return DocumentImageData.fromBytes(png.toByteArray()); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/NavySidebarFixtures.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/NavySidebarFixtures.java index c5464103a..aeff9351d 100644 --- a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/NavySidebarFixtures.java +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/NavySidebarFixtures.java @@ -14,15 +14,6 @@ import com.demcha.compose.document.templates.cv.data.SkillsSection; import com.demcha.compose.document.templates.cv.data.Slot; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.UncheckedIOException; - -import javax.imageio.ImageIO; /** * The canonical fixture for {@link NavySidebar} — the document the design was @@ -144,30 +135,11 @@ public static CvDocument canonicalCv() { } /** - * A flat two-tone silhouette, drawn at fixture time. + * The silhouette the CV fixtures share. * * @return the portrait image data */ static DocumentImageData portrait() { - BufferedImage image = new BufferedImage(512, 512, BufferedImage.TYPE_INT_RGB); - Graphics2D g = image.createGraphics(); - try { - g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON); - g.setColor(new Color(222, 226, 231)); - g.fillRect(0, 0, 512, 512); - g.setColor(new Color(150, 160, 173)); - g.fillOval(171, 102, 169, 169); - g.fillOval(67, 307, 379, 379); - } finally { - g.dispose(); - } - ByteArrayOutputStream png = new ByteArrayOutputStream(); - try { - ImageIO.write(image, "png", png); - } catch (IOException e) { - throw new UncheckedIOException("Failed to draw the fixture portrait", e); - } - return DocumentImageData.fromBytes(png.toByteArray()); + return CvFixturePortrait.silhouette(); } } diff --git a/qa/src/test/resources/layout-snapshots/canonical-templates/cv-v2/charcoal_gold_layout.json b/qa/src/test/resources/layout-snapshots/canonical-templates/cv-v2/charcoal_gold_layout.json new file mode 100644 index 000000000..7721c9f40 --- /dev/null +++ b/qa/src/test/resources/layout-snapshots/canonical-templates/cv-v2/charcoal_gold_layout.json @@ -0,0 +1,7457 @@ +{ + "formatVersion" : "2.0", + "canvas" : { + "pageWidth" : 595.276, + "pageHeight" : 841.89, + "innerWidth" : 595.276, + "innerHeight" : 841.89, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, + "totalPages" : 1, + "nodes" : [ { + "path" : "CharcoalGoldCv[0]", + "entityName" : "CharcoalGoldCv", + "entityKind" : "ContainerNode", + "parentPath" : null, + "childIndex" : 0, + "depth" : 1, + "layer" : 1, + "computedX" : 0.0, + "computedY" : 29.49, + "placementX" : 0.0, + "placementY" : 29.49, + "placementWidth" : 595.276, + "placementHeight" : 812.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 595.276, + "contentHeight" : 812.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]", + "entityName" : "Body", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]", + "childIndex" : 0, + "depth" : 2, + "layer" : 2, + "computedX" : 0.0, + "computedY" : 29.49, + "placementX" : 0.0, + "placementY" : 29.49, + "placementWidth" : 595.276, + "placementHeight" : 812.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 595.276, + "contentHeight" : 812.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "entityName" : "Sidebar", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]", + "childIndex" : 0, + "depth" : 3, + "layer" : 3, + "computedX" : 0.0, + "computedY" : 44.209, + "placementX" : 0.0, + "placementY" : 44.209, + "placementWidth" : 190.31, + "placementHeight" : 797.68, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 190.31, + "contentHeight" : 797.68, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 24.3, + "right" : 17.0, + "bottom" : 0.0, + "left" : 17.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Align[0]", + "entityName" : null, + "entityKind" : "Align", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 0, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 692.229, + "placementX" : 17.0, + "placementY" : 692.229, + "placementWidth" : 156.31, + "placementHeight" : 125.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 125.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Align[0]/ProfilePhoto[0]", + "entityName" : "ProfilePhoto", + "entityKind" : "ShapeContainerNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Align[0]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 32.475, + "computedY" : 692.229, + "placementX" : 32.475, + "placementY" : 692.229, + "placementWidth" : 125.36, + "placementHeight" : 125.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 125.36, + "contentHeight" : 125.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Align[0]/ProfilePhoto[0]/PortraitImage[0]", + "entityName" : "PortraitImage", + "entityKind" : "ImageNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Align[0]/ProfilePhoto[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 32.475, + "computedY" : 692.229, + "placementX" : 32.475, + "placementY" : 692.229, + "placementWidth" : 125.36, + "placementHeight" : 125.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 125.36, + "contentHeight" : 125.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "entityName" : "Contact", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 1, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 542.829, + "placementX" : 17.0, + "placementY" : 542.829, + "placementWidth" : 119.526, + "placementHeight" : 120.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 119.526, + "contentHeight" : 120.0, + "margin" : { + "top" : 29.4, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Heading_CONTACT[0]", + "entityName" : "Heading_CONTACT", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 650.829, + "placementX" : 17.0, + "placementY" : 650.829, + "placementWidth" : 56.6, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 56.6, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Heading_CONTACT[0]/HeadingText_CONTACT[0]", + "entityName" : "HeadingText_CONTACT", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Heading_CONTACT[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 26.0, + "computedY" : 650.829, + "placementX" : 26.0, + "placementY" : 650.829, + "placementWidth" : 47.6, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 47.6, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Contact_0[1]", + "entityName" : "Contact_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 629.469, + "placementX" : 17.0, + "placementY" : 629.469, + "placementWidth" : 75.799, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 75.799, + "contentHeight" : 9.36, + "margin" : { + "top" : 12.0, + "right" : 0.0, + "bottom" : 9.84, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Contact_1[2]", + "entityName" : "Contact_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 610.269, + "placementX" : 17.0, + "placementY" : 610.269, + "placementWidth" : 102.616, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 102.616, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 9.84, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Contact_2[3]", + "entityName" : "Contact_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 3, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 591.069, + "placementX" : 17.0, + "placementY" : 591.069, + "placementWidth" : 98.599, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 98.599, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 9.84, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Contact_3[4]", + "entityName" : "Contact_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 4, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 571.869, + "placementX" : 17.0, + "placementY" : 571.869, + "placementWidth" : 79.512, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 79.512, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 9.84, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Contact_4[5]", + "entityName" : "Contact_4", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 5, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 552.669, + "placementX" : 17.0, + "placementY" : 552.669, + "placementWidth" : 119.526, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 119.526, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 9.84, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Divider_AfterContact[2]", + "entityName" : "Divider_AfterContact", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 2, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 522.829, + "placementX" : 17.0, + "placementY" : 522.829, + "placementWidth" : 156.31, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 1.0, + "margin" : { + "top" : 19.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "entityName" : "Skills", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 3, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 315.829, + "placementX" : 17.0, + "placementY" : 315.829, + "placementWidth" : 156.31, + "placementHeight" : 190.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 190.0, + "margin" : { + "top" : 17.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Heading_SKILLS[0]", + "entityName" : "Heading_SKILLS", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 493.829, + "placementX" : 17.0, + "placementY" : 493.829, + "placementWidth" : 39.57, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 39.57, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Heading_SKILLS[0]/HeadingText_SKILLS[0]", + "entityName" : "HeadingText_SKILLS", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Heading_SKILLS[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 26.0, + "computedY" : 493.829, + "placementX" : 26.0, + "placementY" : 493.829, + "placementWidth" : 30.57, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 30.57, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]", + "entityName" : "Skill_0Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 472.469, + "placementX" : 17.0, + "placementY" : 472.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 12.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]", + "entityName" : "Skill_0Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 472.469, + "placementX" : 17.0, + "placementY" : 472.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]", + "entityName" : "Skill_0", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 472.469, + "placementX" : 17.0, + "placementY" : 472.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]/SkillBullet_0[0]", + "entityName" : "SkillBullet_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 472.469, + "placementX" : 17.0, + "placementY" : 472.469, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]/SkillName_0[1]", + "entityName" : "SkillName_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 472.469, + "placementX" : 26.5, + "placementY" : 472.469, + "placementWidth" : 71.682, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 71.682, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]/SkillRating_0[2]", + "entityName" : "SkillRating_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 472.469, + "placementX" : 132.203, + "placementY" : 472.469, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]", + "entityName" : "Skill_1Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 455.869, + "placementX" : 17.0, + "placementY" : 455.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]", + "entityName" : "Skill_1Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 455.869, + "placementX" : 17.0, + "placementY" : 455.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]", + "entityName" : "Skill_1", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 455.869, + "placementX" : 17.0, + "placementY" : 455.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]/SkillBullet_1[0]", + "entityName" : "SkillBullet_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 455.869, + "placementX" : 17.0, + "placementY" : 455.869, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]/SkillName_1[1]", + "entityName" : "SkillName_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 455.869, + "placementX" : 26.5, + "placementY" : 455.869, + "placementWidth" : 84.427, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 84.427, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]/SkillRating_1[2]", + "entityName" : "SkillRating_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 455.869, + "placementX" : 132.203, + "placementY" : 455.869, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]", + "entityName" : "Skill_2Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 3, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 439.269, + "placementX" : 17.0, + "placementY" : 439.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]", + "entityName" : "Skill_2Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 439.269, + "placementX" : 17.0, + "placementY" : 439.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]", + "entityName" : "Skill_2", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 439.269, + "placementX" : 17.0, + "placementY" : 439.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]/SkillBullet_2[0]", + "entityName" : "SkillBullet_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 439.269, + "placementX" : 17.0, + "placementY" : 439.269, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]/SkillName_2[1]", + "entityName" : "SkillName_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 439.269, + "placementX" : 26.5, + "placementY" : 439.269, + "placementWidth" : 97.032, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 97.032, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]/SkillRating_2[2]", + "entityName" : "SkillRating_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 439.269, + "placementX" : 132.203, + "placementY" : 439.269, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]", + "entityName" : "Skill_3Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 4, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 422.669, + "placementX" : 17.0, + "placementY" : 422.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]", + "entityName" : "Skill_3Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 422.669, + "placementX" : 17.0, + "placementY" : 422.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]", + "entityName" : "Skill_3", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 422.669, + "placementX" : 17.0, + "placementY" : 422.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]/SkillBullet_3[0]", + "entityName" : "SkillBullet_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 422.669, + "placementX" : 17.0, + "placementY" : 422.669, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]/SkillName_3[1]", + "entityName" : "SkillName_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 422.669, + "placementX" : 26.5, + "placementY" : 422.669, + "placementWidth" : 61.316, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 61.316, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]/SkillRating_3[2]", + "entityName" : "SkillRating_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 422.669, + "placementX" : 132.203, + "placementY" : 422.669, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]", + "entityName" : "Skill_4Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 5, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 406.069, + "placementX" : 17.0, + "placementY" : 406.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]", + "entityName" : "Skill_4Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 406.069, + "placementX" : 17.0, + "placementY" : 406.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]", + "entityName" : "Skill_4", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 406.069, + "placementX" : 17.0, + "placementY" : 406.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]/SkillBullet_4[0]", + "entityName" : "SkillBullet_4", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 406.069, + "placementX" : 17.0, + "placementY" : 406.069, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]/SkillName_4[1]", + "entityName" : "SkillName_4", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 406.069, + "placementX" : 26.5, + "placementY" : 406.069, + "placementWidth" : 46.488, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 46.488, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]/SkillRating_4[2]", + "entityName" : "SkillRating_4", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 406.069, + "placementX" : 132.203, + "placementY" : 406.069, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]", + "entityName" : "Skill_5Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 6, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 389.469, + "placementX" : 17.0, + "placementY" : 389.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]", + "entityName" : "Skill_5Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 389.469, + "placementX" : 17.0, + "placementY" : 389.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]", + "entityName" : "Skill_5", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 389.469, + "placementX" : 17.0, + "placementY" : 389.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]/SkillBullet_5[0]", + "entityName" : "SkillBullet_5", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 389.469, + "placementX" : 17.0, + "placementY" : 389.469, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]/SkillName_5[1]", + "entityName" : "SkillName_5", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 389.469, + "placementX" : 26.5, + "placementY" : 389.469, + "placementWidth" : 74.623, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 74.623, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]/SkillRating_5[2]", + "entityName" : "SkillRating_5", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 389.469, + "placementX" : 132.203, + "placementY" : 389.469, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]", + "entityName" : "Skill_6Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 7, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 372.869, + "placementX" : 17.0, + "placementY" : 372.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]", + "entityName" : "Skill_6Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 372.869, + "placementX" : 17.0, + "placementY" : 372.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]", + "entityName" : "Skill_6", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 372.869, + "placementX" : 17.0, + "placementY" : 372.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]/SkillBullet_6[0]", + "entityName" : "SkillBullet_6", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 372.869, + "placementX" : 17.0, + "placementY" : 372.869, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]/SkillName_6[1]", + "entityName" : "SkillName_6", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 372.869, + "placementX" : 26.5, + "placementY" : 372.869, + "placementWidth" : 53.524, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 53.524, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]/SkillRating_6[2]", + "entityName" : "SkillRating_6", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 372.869, + "placementX" : 132.203, + "placementY" : 372.869, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]", + "entityName" : "Skill_7Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 8, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 356.269, + "placementX" : 17.0, + "placementY" : 356.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]", + "entityName" : "Skill_7Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 356.269, + "placementX" : 17.0, + "placementY" : 356.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]", + "entityName" : "Skill_7", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 356.269, + "placementX" : 17.0, + "placementY" : 356.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]/SkillBullet_7[0]", + "entityName" : "SkillBullet_7", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 356.269, + "placementX" : 17.0, + "placementY" : 356.269, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]/SkillName_7[1]", + "entityName" : "SkillName_7", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 356.269, + "placementX" : 26.5, + "placementY" : 356.269, + "placementWidth" : 31.426, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 31.426, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]/SkillRating_7[2]", + "entityName" : "SkillRating_7", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 356.269, + "placementX" : 132.203, + "placementY" : 356.269, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]", + "entityName" : "Skill_8Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 9, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 339.669, + "placementX" : 17.0, + "placementY" : 339.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]", + "entityName" : "Skill_8Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 339.669, + "placementX" : 17.0, + "placementY" : 339.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]", + "entityName" : "Skill_8", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 339.669, + "placementX" : 17.0, + "placementY" : 339.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]/SkillBullet_8[0]", + "entityName" : "SkillBullet_8", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 339.669, + "placementX" : 17.0, + "placementY" : 339.669, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]/SkillName_8[1]", + "entityName" : "SkillName_8", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 339.669, + "placementX" : 26.5, + "placementY" : 339.669, + "placementWidth" : 58.64, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 58.64, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]/SkillRating_8[2]", + "entityName" : "SkillRating_8", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 339.669, + "placementX" : 132.203, + "placementY" : 339.669, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]", + "entityName" : "Skill_9Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 10, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 323.069, + "placementX" : 17.0, + "placementY" : 323.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]", + "entityName" : "Skill_9Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 323.069, + "placementX" : 17.0, + "placementY" : 323.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]", + "entityName" : "Skill_9", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 323.069, + "placementX" : 17.0, + "placementY" : 323.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]/SkillBullet_9[0]", + "entityName" : "SkillBullet_9", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 323.069, + "placementX" : 17.0, + "placementY" : 323.069, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]/SkillName_9[1]", + "entityName" : "SkillName_9", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 323.069, + "placementX" : 26.5, + "placementY" : 323.069, + "placementWidth" : 70.582, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 70.582, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]/SkillRating_9[2]", + "entityName" : "SkillRating_9", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 323.069, + "placementX" : 132.203, + "placementY" : 323.069, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Divider_AfterSkills[4]", + "entityName" : "Divider_AfterSkills", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 4, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 295.829, + "placementX" : 17.0, + "placementY" : 295.829, + "placementWidth" : 156.31, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 1.0, + "margin" : { + "top" : 19.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "entityName" : "Languages", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 5, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 187.229, + "placementX" : 17.0, + "placementY" : 187.229, + "placementWidth" : 156.31, + "placementHeight" : 91.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 91.6, + "margin" : { + "top" : 17.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Heading_LANGUAGES[0]", + "entityName" : "Heading_LANGUAGES", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 266.829, + "placementX" : 17.0, + "placementY" : 266.829, + "placementWidth" : 68.51, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 68.51, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Heading_LANGUAGES[0]/HeadingText_LANGUAGES[0]", + "entityName" : "HeadingText_LANGUAGES", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Heading_LANGUAGES[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 26.0, + "computedY" : 266.829, + "placementX" : 26.0, + "placementY" : 266.829, + "placementWidth" : 59.51, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 59.51, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]", + "entityName" : "Language_0Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 243.909, + "placementX" : 17.0, + "placementY" : 243.909, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 12.0, + "right" : 0.0, + "bottom" : 5.98, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]", + "entityName" : "Language_0Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 243.909, + "placementX" : 17.0, + "placementY" : 243.909, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]/Language_0[0]", + "entityName" : "Language_0", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 243.909, + "placementX" : 17.0, + "placementY" : 243.909, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]/Language_0[0]/LanguageName_0[0]", + "entityName" : "LanguageName_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]/Language_0[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 243.909, + "placementX" : 17.0, + "placementY" : 243.909, + "placementWidth" : 28.419, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 28.419, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]/Language_0[0]/LanguageLevel_0[1]", + "entityName" : "LanguageLevel_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]/Language_0[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 73.271, + "computedY" : 243.909, + "placementX" : 73.271, + "placementY" : 243.909, + "placementWidth" : 26.426, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 26.426, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]", + "entityName" : "Language_1Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 227.009, + "placementX" : 17.0, + "placementY" : 227.009, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 5.98, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]", + "entityName" : "Language_1Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 227.009, + "placementX" : 17.0, + "placementY" : 227.009, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]/Language_1[0]", + "entityName" : "Language_1", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 227.009, + "placementX" : 17.0, + "placementY" : 227.009, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]/Language_1[0]/LanguageName_1[0]", + "entityName" : "LanguageName_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]/Language_1[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 227.009, + "placementX" : 17.0, + "placementY" : 227.009, + "placementWidth" : 30.449, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 30.449, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]/Language_1[0]/LanguageLevel_1[1]", + "entityName" : "LanguageLevel_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]/Language_1[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 73.271, + "computedY" : 227.009, + "placementX" : 73.271, + "placementY" : 227.009, + "placementWidth" : 26.426, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 26.426, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]", + "entityName" : "Language_2Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "childIndex" : 3, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 210.109, + "placementX" : 17.0, + "placementY" : 210.109, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 5.98, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]", + "entityName" : "Language_2Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 210.109, + "placementX" : 17.0, + "placementY" : 210.109, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]/Language_2[0]", + "entityName" : "Language_2", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 210.109, + "placementX" : 17.0, + "placementY" : 210.109, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]/Language_2[0]/LanguageName_2[0]", + "entityName" : "LanguageName_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]/Language_2[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 210.109, + "placementX" : 17.0, + "placementY" : 210.109, + "placementWidth" : 27.773, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 27.773, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]/Language_2[0]/LanguageLevel_2[1]", + "entityName" : "LanguageLevel_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]/Language_2[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 73.271, + "computedY" : 210.109, + "placementX" : 73.271, + "placementY" : 210.109, + "placementWidth" : 99.636, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 99.636, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]", + "entityName" : "Language_3Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "childIndex" : 4, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 193.209, + "placementX" : 17.0, + "placementY" : 193.209, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 5.98, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]", + "entityName" : "Language_3Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 193.209, + "placementX" : 17.0, + "placementY" : 193.209, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]/Language_3[0]", + "entityName" : "Language_3", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 193.209, + "placementX" : 17.0, + "placementY" : 193.209, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]/Language_3[0]/LanguageName_3[0]", + "entityName" : "LanguageName_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]/Language_3[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 193.209, + "placementX" : 17.0, + "placementY" : 193.209, + "placementWidth" : 31.859, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 31.859, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]/Language_3[0]/LanguageLevel_3[1]", + "entityName" : "LanguageLevel_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]/Language_3[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 73.271, + "computedY" : 193.209, + "placementX" : 73.271, + "placementY" : 193.209, + "placementWidth" : 42.26, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 42.26, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Divider_AfterLanguages[6]", + "entityName" : "Divider_AfterLanguages", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 6, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 167.229, + "placementX" : 17.0, + "placementY" : 167.229, + "placementWidth" : 156.31, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 1.0, + "margin" : { + "top" : 19.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]", + "entityName" : "Education", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 7, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 44.209, + "placementX" : 17.0, + "placementY" : 44.209, + "placementWidth" : 107.569, + "placementHeight" : 106.02, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 107.569, + "contentHeight" : 106.02, + "margin" : { + "top" : 17.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/Heading_EDUCATION[0]", + "entityName" : "Heading_EDUCATION", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 138.229, + "placementX" : 17.0, + "placementY" : 138.229, + "placementWidth" : 67.56, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 67.56, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/Heading_EDUCATION[0]/HeadingText_EDUCATION[0]", + "entityName" : "HeadingText_EDUCATION", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/Heading_EDUCATION[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 26.0, + "computedY" : 138.229, + "placementX" : 26.0, + "placementY" : 138.229, + "placementWidth" : 58.56, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 58.56, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]", + "entityName" : "EducationEntry_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 92.069, + "placementX" : 17.0, + "placementY" : 92.069, + "placementWidth" : 102.95, + "placementHeight" : 34.16, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 102.95, + "contentHeight" : 34.16, + "margin" : { + "top" : 12.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/Degree_0[0]", + "entityName" : "Degree_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 116.869, + "placementX" : 17.0, + "placementY" : 116.869, + "placementWidth" : 98.708, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 98.708, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.04, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/EducationDetail_0[1]", + "entityName" : "EducationDetail_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]", + "childIndex" : 1, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 92.069, + "placementX" : 17.0, + "placementY" : 92.069, + "placementWidth" : 102.95, + "placementHeight" : 21.76, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 102.95, + "contentHeight" : 21.76, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 12.4 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/EducationDetail_0[1]/Institution_0[0]", + "entityName" : "Institution_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/EducationDetail_0[1]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 29.4, + "computedY" : 104.469, + "placementX" : 29.4, + "placementY" : 104.469, + "placementWidth" : 90.55, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 90.55, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.04, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/EducationDetail_0[1]/Period_0[1]", + "entityName" : "Period_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/EducationDetail_0[1]", + "childIndex" : 1, + "depth" : 7, + "layer" : 7, + "computedX" : 29.4, + "computedY" : 92.069, + "placementX" : 29.4, + "placementY" : 92.069, + "placementWidth" : 44.71, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 44.71, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]", + "entityName" : "EducationEntry_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 44.209, + "placementX" : 17.0, + "placementY" : 44.209, + "placementWidth" : 107.569, + "placementHeight" : 34.16, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 107.569, + "contentHeight" : 34.16, + "margin" : { + "top" : 13.7, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/Degree_1[0]", + "entityName" : "Degree_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 69.009, + "placementX" : 17.0, + "placementY" : 69.009, + "placementWidth" : 107.569, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 107.569, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.04, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/EducationDetail_1[1]", + "entityName" : "EducationDetail_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]", + "childIndex" : 1, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 44.209, + "placementX" : 17.0, + "placementY" : 44.209, + "placementWidth" : 88.349, + "placementHeight" : 21.76, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 88.349, + "contentHeight" : 21.76, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 12.4 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/EducationDetail_1[1]/Institution_1[0]", + "entityName" : "Institution_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/EducationDetail_1[1]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 29.4, + "computedY" : 56.609, + "placementX" : 29.4, + "placementY" : 56.609, + "placementWidth" : 75.949, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 75.949, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.04, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/EducationDetail_1[1]/Period_1[1]", + "entityName" : "Period_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/EducationDetail_1[1]", + "childIndex" : 1, + "depth" : 7, + "layer" : 7, + "computedX" : 29.4, + "computedY" : 44.209, + "placementX" : 29.4, + "placementY" : 44.209, + "placementWidth" : 44.71, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 44.71, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "entityName" : "MainColumn", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]", + "childIndex" : 1, + "depth" : 3, + "layer" : 3, + "computedX" : 190.31, + "computedY" : 29.49, + "placementX" : 190.31, + "placementY" : 29.49, + "placementWidth" : 404.966, + "placementHeight" : 812.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 404.966, + "contentHeight" : 812.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 25.7, + "right" : 28.8, + "bottom" : 0.0, + "left" : 23.7 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]", + "entityName" : "Masthead", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "childIndex" : 0, + "depth" : 4, + "layer" : 4, + "computedX" : 214.01, + "computedY" : 691.43, + "placementX" : 214.01, + "placementY" : 691.43, + "placementWidth" : 193.815, + "placementHeight" : 124.76, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 193.815, + "contentHeight" : 124.76, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]/GivenName[0]", + "entityName" : "GivenName", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 773.35, + "placementX" : 214.01, + "placementY" : 773.35, + "placementWidth" : 193.815, + "placementHeight" : 42.84, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 193.815, + "contentHeight" : 42.84, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]/FamilyName[1]", + "entityName" : "FamilyName", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 718.75, + "placementX" : 214.01, + "placementY" : 718.75, + "placementWidth" : 141.369, + "placementHeight" : 54.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.369, + "contentHeight" : 54.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]/JobTitle[2]", + "entityName" : "JobTitle", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 704.83, + "placementX" : 214.01, + "placementY" : 704.83, + "placementWidth" : 152.099, + "placementHeight" : 13.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 152.099, + "contentHeight" : 13.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 12.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]/MastheadRule[3]", + "entityName" : "MastheadRule", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]", + "childIndex" : 3, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 691.43, + "placementX" : 214.01, + "placementY" : 691.43, + "placementWidth" : 32.779, + "placementHeight" : 1.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 32.779, + "contentHeight" : 1.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Summary[1]", + "entityName" : "Summary", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "childIndex" : 1, + "depth" : 4, + "layer" : 4, + "computedX" : 214.01, + "computedY" : 627.19, + "placementX" : 214.01, + "placementY" : 627.19, + "placementWidth" : 336.736, + "placementHeight" : 46.44, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 336.736, + "contentHeight" : 46.44, + "margin" : { + "top" : 17.8, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Summary[1]/Summary_0[0]", + "entityName" : "Summary_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Summary[1]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 650.41, + "placementX" : 214.01, + "placementY" : 650.41, + "placementWidth" : 336.736, + "placementHeight" : 23.22, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 336.736, + "contentHeight" : 23.22, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Summary[1]/Summary_1[1]", + "entityName" : "Summary_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Summary[1]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 627.19, + "placementX" : 214.01, + "placementY" : 627.19, + "placementWidth" : 327.09, + "placementHeight" : 23.22, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 327.09, + "contentHeight" : 23.22, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]", + "entityName" : "Experience", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "childIndex" : 2, + "depth" : 4, + "layer" : 4, + "computedX" : 214.01, + "computedY" : 274.21, + "placementX" : 214.01, + "placementY" : 274.21, + "placementWidth" : 352.466, + "placementHeight" : 324.58, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 324.58, + "margin" : { + "top" : 28.4, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]", + "entityName" : "Heading_EXPERIENCE", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 585.59, + "placementX" : 214.01, + "placementY" : 585.59, + "placementWidth" : 352.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]", + "entityName" : "HeadingRow_EXPERIENCEStack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 223.01, + "computedY" : 585.59, + "placementX" : 223.01, + "placementY" : 585.59, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]", + "entityName" : "HeadingRow_EXPERIENCELayer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 223.01, + "computedY" : 585.59, + "placementX" : 223.01, + "placementY" : 585.59, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]/HeadingRow_EXPERIENCE[0]", + "entityName" : "HeadingRow_EXPERIENCE", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 223.01, + "computedY" : 585.59, + "placementX" : 223.01, + "placementY" : 585.59, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]/HeadingRow_EXPERIENCE[0]/HeadingText_EXPERIENCE[0]", + "entityName" : "HeadingText_EXPERIENCE", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]/HeadingRow_EXPERIENCE[0]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 223.01, + "computedY" : 585.59, + "placementX" : 223.01, + "placementY" : 585.59, + "placementWidth" : 64.911, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 64.911, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]/HeadingRow_EXPERIENCE[0]/HeadingRule_EXPERIENCE[1]", + "entityName" : "HeadingRule_EXPERIENCE", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]/HeadingRow_EXPERIENCE[0]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 296.921, + "computedY" : 591.69, + "placementX" : 296.921, + "placementY" : 591.69, + "placementWidth" : 260.555, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 260.555, + "contentHeight" : 1.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]", + "entityName" : "ExperienceEntry_0Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 455.41, + "placementX" : 214.01, + "placementY" : 455.41, + "placementWidth" : 352.466, + "placementHeight" : 111.18, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 111.18, + "margin" : { + "top" : 19.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]", + "entityName" : "ExperienceEntry_0Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 214.01, + "computedY" : 455.41, + "placementX" : 214.01, + "placementY" : 455.41, + "placementWidth" : 352.466, + "placementHeight" : 111.18, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 111.18, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]", + "entityName" : "ExperienceEntry_0", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 214.01, + "computedY" : 455.41, + "placementX" : 214.01, + "placementY" : 455.41, + "placementWidth" : 352.466, + "placementHeight" : 111.18, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 111.18, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/Period_0[0]", + "entityName" : "Period_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 214.01, + "computedY" : 557.23, + "placementX" : 214.01, + "placementY" : 557.23, + "placementWidth" : 52.907, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 52.907, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]", + "entityName" : "EntryBody_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 288.588, + "computedY" : 455.41, + "placementX" : 288.588, + "placementY" : 455.41, + "placementWidth" : 252.368, + "placementHeight" : 111.18, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 252.368, + "contentHeight" : 111.18, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 19.6, + "left" : 16.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]", + "entityName" : "MarkerCap_0", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 553.99, + "placementX" : 304.588, + "placementY" : 553.99, + "placementWidth" : 110.292, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 110.292, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]/RoleLayer_0[0]", + "entityName" : "RoleLayer_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 304.588, + "computedY" : 553.99, + "placementX" : 304.588, + "placementY" : 553.99, + "placementWidth" : 110.292, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 110.292, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]/RoleLayer_0[0]/Role_0[0]", + "entityName" : "Role_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]/RoleLayer_0[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 304.588, + "computedY" : 553.99, + "placementX" : 304.588, + "placementY" : 553.99, + "placementWidth" : 110.292, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 110.292, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]/MarkerRing_0[1]", + "entityName" : "MarkerRing_0", + "entityKind" : "EllipseNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]", + "childIndex" : 1, + "depth" : 10, + "layer" : 10, + "computedX" : 285.488, + "computedY" : 560.39, + "placementX" : 285.488, + "placementY" : 560.39, + "placementWidth" : 6.2, + "placementHeight" : 6.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 6.2, + "contentHeight" : 6.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/Employer_0[1]", + "entityName" : "Employer_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 542.71, + "placementX" : 304.588, + "placementY" : 542.71, + "placementWidth" : 137.903, + "placementHeight" : 8.28, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 137.903, + "contentHeight" : 8.28, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/Highlights_0[2]", + "entityName" : "Highlights_0", + "entityKind" : "ListNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]", + "childIndex" : 2, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 475.01, + "placementX" : 304.588, + "placementY" : 475.01, + "placementWidth" : 236.368, + "placementHeight" : 60.7, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 236.368, + "contentHeight" : 60.7, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]", + "entityName" : "ExperienceEntry_1Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 355.01, + "placementX" : 214.01, + "placementY" : 355.01, + "placementWidth" : 352.466, + "placementHeight" : 100.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 100.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]", + "entityName" : "ExperienceEntry_1Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 214.01, + "computedY" : 355.01, + "placementX" : 214.01, + "placementY" : 355.01, + "placementWidth" : 352.466, + "placementHeight" : 100.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 100.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]", + "entityName" : "ExperienceEntry_1", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 214.01, + "computedY" : 355.01, + "placementX" : 214.01, + "placementY" : 355.01, + "placementWidth" : 352.466, + "placementHeight" : 100.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 100.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/Period_1[0]", + "entityName" : "Period_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 214.01, + "computedY" : 446.05, + "placementX" : 214.01, + "placementY" : 446.05, + "placementWidth" : 44.71, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 44.71, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]", + "entityName" : "EntryBody_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 288.588, + "computedY" : 355.01, + "placementX" : 288.588, + "placementY" : 355.01, + "placementWidth" : 236.671, + "placementHeight" : 100.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 236.671, + "contentHeight" : 100.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 19.6, + "left" : 16.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]", + "entityName" : "MarkerCap_1", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 442.81, + "placementX" : 304.588, + "placementY" : 442.81, + "placementWidth" : 77.826, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 77.826, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]/RoleLayer_1[0]", + "entityName" : "RoleLayer_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 304.588, + "computedY" : 442.81, + "placementX" : 304.588, + "placementY" : 442.81, + "placementWidth" : 77.826, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 77.826, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]/RoleLayer_1[0]/Role_1[0]", + "entityName" : "Role_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]/RoleLayer_1[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 304.588, + "computedY" : 442.81, + "placementX" : 304.588, + "placementY" : 442.81, + "placementWidth" : 77.826, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 77.826, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]/MarkerRing_1[1]", + "entityName" : "MarkerRing_1", + "entityKind" : "EllipseNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]", + "childIndex" : 1, + "depth" : 10, + "layer" : 10, + "computedX" : 285.488, + "computedY" : 449.21, + "placementX" : 285.488, + "placementY" : 449.21, + "placementWidth" : 6.2, + "placementHeight" : 6.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 6.2, + "contentHeight" : 6.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/Employer_1[1]", + "entityName" : "Employer_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 431.53, + "placementX" : 304.588, + "placementY" : 431.53, + "placementWidth" : 133.729, + "placementHeight" : 8.28, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 133.729, + "contentHeight" : 8.28, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/Highlights_1[2]", + "entityName" : "Highlights_1", + "entityKind" : "ListNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]", + "childIndex" : 2, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 374.61, + "placementX" : 304.588, + "placementY" : 374.61, + "placementWidth" : 220.671, + "placementHeight" : 49.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 220.671, + "contentHeight" : 49.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]", + "entityName" : "ExperienceEntry_2Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]", + "childIndex" : 3, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 274.21, + "placementX" : 214.01, + "placementY" : 274.21, + "placementWidth" : 352.466, + "placementHeight" : 80.8, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 80.8, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]", + "entityName" : "ExperienceEntry_2Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 214.01, + "computedY" : 274.21, + "placementX" : 214.01, + "placementY" : 274.21, + "placementWidth" : 352.466, + "placementHeight" : 80.8, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 80.8, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]", + "entityName" : "ExperienceEntry_2", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 214.01, + "computedY" : 274.21, + "placementX" : 214.01, + "placementY" : 274.21, + "placementWidth" : 352.466, + "placementHeight" : 80.8, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 80.8, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/Period_2[0]", + "entityName" : "Period_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 214.01, + "computedY" : 345.65, + "placementX" : 214.01, + "placementY" : 345.65, + "placementWidth" : 44.71, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 44.71, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]", + "entityName" : "EntryBody_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 288.588, + "computedY" : 274.21, + "placementX" : 288.588, + "placementY" : 274.21, + "placementWidth" : 213.35, + "placementHeight" : 80.8, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 213.35, + "contentHeight" : 80.8, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 16.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]", + "entityName" : "MarkerCap_2", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 342.41, + "placementX" : 304.588, + "placementY" : 342.41, + "placementWidth" : 92.935, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 92.935, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]/RoleLayer_2[0]", + "entityName" : "RoleLayer_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 304.588, + "computedY" : 342.41, + "placementX" : 304.588, + "placementY" : 342.41, + "placementWidth" : 92.935, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 92.935, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]/RoleLayer_2[0]/Role_2[0]", + "entityName" : "Role_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]/RoleLayer_2[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 304.588, + "computedY" : 342.41, + "placementX" : 304.588, + "placementY" : 342.41, + "placementWidth" : 92.935, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 92.935, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]/MarkerRing_2[1]", + "entityName" : "MarkerRing_2", + "entityKind" : "EllipseNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]", + "childIndex" : 1, + "depth" : 10, + "layer" : 10, + "computedX" : 285.488, + "computedY" : 348.81, + "placementX" : 285.488, + "placementY" : 348.81, + "placementWidth" : 6.2, + "placementHeight" : 6.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 6.2, + "contentHeight" : 6.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/Employer_2[1]", + "entityName" : "Employer_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 331.13, + "placementX" : 304.588, + "placementY" : 331.13, + "placementWidth" : 149.93, + "placementHeight" : 8.28, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 149.93, + "contentHeight" : 8.28, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/Highlights_2[2]", + "entityName" : "Highlights_2", + "entityKind" : "ListNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]", + "childIndex" : 2, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 274.21, + "placementX" : 304.588, + "placementY" : 274.21, + "placementWidth" : 197.35, + "placementHeight" : 49.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 197.35, + "contentHeight" : 49.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]", + "entityName" : "Credentials", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "childIndex" : 3, + "depth" : 4, + "layer" : 4, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 352.466, + "placementHeight" : 178.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 178.46, + "margin" : { + "top" : 18.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialsRule[0]", + "entityName" : "CredentialsRule", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 255.21, + "placementX" : 214.01, + "placementY" : 255.21, + "placementWidth" : 352.466, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 1.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]", + "entityName" : "CredentialColumnsStack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 352.466, + "placementHeight" : 155.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 155.46, + "margin" : { + "top" : 22.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]", + "entityName" : "CredentialColumnsLayer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 352.466, + "placementHeight" : 155.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 155.46, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]", + "entityName" : "CredentialColumns", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 352.466, + "placementHeight" : 155.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 155.46, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "entityName" : "Certifications", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 163.544, + "placementHeight" : 155.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 163.544, + "contentHeight" : 155.46, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 21.853, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Heading_CERTIFICATIONS[0]", + "entityName" : "Heading_CERTIFICATIONS", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 220.01, + "placementX" : 214.01, + "placementY" : 220.01, + "placementWidth" : 96.054, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 96.054, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Heading_CERTIFICATIONS[0]/HeadingText_CERTIFICATIONS[0]", + "entityName" : "HeadingText_CERTIFICATIONS", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Heading_CERTIFICATIONS[0]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 223.01, + "computedY" : 220.01, + "placementX" : 223.01, + "placementY" : 220.01, + "placementWidth" : 87.054, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 87.054, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]", + "entityName" : "Certification_0Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 170.39, + "placementX" : 214.01, + "placementY" : 170.39, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 17.3, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]", + "entityName" : "Certification_0Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 214.01, + "computedY" : 170.39, + "placementX" : 214.01, + "placementY" : 170.39, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]", + "entityName" : "Certification_0", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 214.01, + "computedY" : 170.39, + "placementX" : 214.01, + "placementY" : 170.39, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationIcon_0[0]", + "entityName" : "CertificationIcon_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 214.01, + "computedY" : 187.71, + "placementX" : 214.01, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationIcon_0[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationIcon_0[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 214.01, + "computedY" : 187.71, + "placementX" : 214.01, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationIcon_0[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationIcon_0[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 214.01, + "computedY" : 187.71, + "placementX" : 214.01, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]", + "entityName" : "CertificationText_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 233.846, + "computedY" : 170.39, + "placementX" : 233.846, + "placementY" : 170.39, + "placementWidth" : 103.648, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 103.648, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]/CertificationName_0[0]", + "entityName" : "CertificationName_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 193.35, + "placementX" : 233.846, + "placementY" : 193.35, + "placementWidth" : 68.741, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 68.741, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]/CertificationIssuer_0[1]", + "entityName" : "CertificationIssuer_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 181.87, + "placementX" : 233.846, + "placementY" : 181.87, + "placementWidth" : 103.648, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 103.648, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]/CertificationYear_0[2]", + "entityName" : "CertificationYear_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 170.39, + "placementX" : 233.846, + "placementY" : 170.39, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/CertificationRule_0[2]", + "entityName" : "CertificationRule_0", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 2, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 162.89, + "placementX" : 214.01, + "placementY" : 162.89, + "placementWidth" : 141.691, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 1.0, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]", + "entityName" : "Certification_1Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 3, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 124.07, + "placementX" : 214.01, + "placementY" : 124.07, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]", + "entityName" : "Certification_1Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 214.01, + "computedY" : 124.07, + "placementX" : 214.01, + "placementY" : 124.07, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]", + "entityName" : "Certification_1", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 214.01, + "computedY" : 124.07, + "placementX" : 214.01, + "placementY" : 124.07, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationIcon_1[0]", + "entityName" : "CertificationIcon_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 214.01, + "computedY" : 141.39, + "placementX" : 214.01, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationIcon_1[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationIcon_1[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 214.01, + "computedY" : 141.39, + "placementX" : 214.01, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationIcon_1[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationIcon_1[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 214.01, + "computedY" : 141.39, + "placementX" : 214.01, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]", + "entityName" : "CertificationText_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 233.846, + "computedY" : 124.07, + "placementX" : 233.846, + "placementY" : 124.07, + "placementWidth" : 80.527, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 80.527, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]/CertificationName_1[0]", + "entityName" : "CertificationName_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 147.03, + "placementX" : 233.846, + "placementY" : 147.03, + "placementWidth" : 80.527, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 80.527, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]/CertificationIssuer_1[1]", + "entityName" : "CertificationIssuer_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 135.55, + "placementX" : 233.846, + "placementY" : 135.55, + "placementWidth" : 29.72, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 29.72, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]/CertificationYear_1[2]", + "entityName" : "CertificationYear_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 124.07, + "placementX" : 233.846, + "placementY" : 124.07, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/CertificationRule_1[4]", + "entityName" : "CertificationRule_1", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 4, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 116.57, + "placementX" : 214.01, + "placementY" : 116.57, + "placementWidth" : 141.691, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 1.0, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]", + "entityName" : "Certification_2Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 5, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]", + "entityName" : "Certification_2Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]", + "entityName" : "Certification_2", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationIcon_2[0]", + "entityName" : "CertificationIcon_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 214.01, + "computedY" : 95.07, + "placementX" : 214.01, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationIcon_2[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationIcon_2[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 214.01, + "computedY" : 95.07, + "placementX" : 214.01, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationIcon_2[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationIcon_2[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 214.01, + "computedY" : 95.07, + "placementX" : 214.01, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]", + "entityName" : "CertificationText_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 233.846, + "computedY" : 77.75, + "placementX" : 233.846, + "placementY" : 77.75, + "placementWidth" : 78.008, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 78.008, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]/CertificationName_2[0]", + "entityName" : "CertificationName_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 100.71, + "placementX" : 233.846, + "placementY" : 100.71, + "placementWidth" : 78.008, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 78.008, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]/CertificationIssuer_2[1]", + "entityName" : "CertificationIssuer_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 89.23, + "placementX" : 233.846, + "placementY" : 89.23, + "placementWidth" : 69.481, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 69.481, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]/CertificationYear_2[2]", + "entityName" : "CertificationYear_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 77.75, + "placementX" : 233.846, + "placementY" : 77.75, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "entityName" : "Achievements", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 377.554, + "computedY" : 77.75, + "placementX" : 377.554, + "placementY" : 77.75, + "placementWidth" : 188.922, + "placementHeight" : 155.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 188.922, + "contentHeight" : 155.46, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 21.853 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Heading_ACHIEVEMENTS[0]", + "entityName" : "Heading_ACHIEVEMENTS", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 220.01, + "placementX" : 399.407, + "placementY" : 220.01, + "placementWidth" : 92.897, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 92.897, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Heading_ACHIEVEMENTS[0]/HeadingText_ACHIEVEMENTS[0]", + "entityName" : "HeadingText_ACHIEVEMENTS", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Heading_ACHIEVEMENTS[0]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 408.407, + "computedY" : 220.01, + "placementX" : 408.407, + "placementY" : 220.01, + "placementWidth" : 83.897, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 83.897, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]", + "entityName" : "Achievement_0Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 170.39, + "placementX" : 399.407, + "placementY" : 170.39, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 17.3, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]", + "entityName" : "Achievement_0Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 399.407, + "computedY" : 170.39, + "placementX" : 399.407, + "placementY" : 170.39, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]", + "entityName" : "Achievement_0", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 399.407, + "computedY" : 170.39, + "placementX" : 399.407, + "placementY" : 170.39, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementIcon_0[0]", + "entityName" : "AchievementIcon_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 399.407, + "computedY" : 187.71, + "placementX" : 399.407, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementIcon_0[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementIcon_0[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 399.407, + "computedY" : 187.71, + "placementX" : 399.407, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementIcon_0[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementIcon_0[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 399.407, + "computedY" : 187.71, + "placementX" : 399.407, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]", + "entityName" : "AchievementText_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 422.796, + "computedY" : 170.39, + "placementX" : 422.796, + "placementY" : 170.39, + "placementWidth" : 101.244, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 101.244, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]/AchievementName_0[0]", + "entityName" : "AchievementName_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 193.35, + "placementX" : 422.796, + "placementY" : 193.35, + "placementWidth" : 101.244, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 101.244, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]/AchievementIssuer_0[1]", + "entityName" : "AchievementIssuer_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 181.87, + "placementX" : 422.796, + "placementY" : 181.87, + "placementWidth" : 69.986, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 69.986, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]/AchievementYear_0[2]", + "entityName" : "AchievementYear_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 170.39, + "placementX" : 422.796, + "placementY" : 170.39, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/AchievementRule_0[2]", + "entityName" : "AchievementRule_0", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 2, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 162.89, + "placementX" : 399.407, + "placementY" : 162.89, + "placementWidth" : 167.069, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 1.0, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]", + "entityName" : "Achievement_1Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 3, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 124.07, + "placementX" : 399.407, + "placementY" : 124.07, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]", + "entityName" : "Achievement_1Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 399.407, + "computedY" : 124.07, + "placementX" : 399.407, + "placementY" : 124.07, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]", + "entityName" : "Achievement_1", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 399.407, + "computedY" : 124.07, + "placementX" : 399.407, + "placementY" : 124.07, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementIcon_1[0]", + "entityName" : "AchievementIcon_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 399.407, + "computedY" : 141.39, + "placementX" : 399.407, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementIcon_1[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementIcon_1[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 399.407, + "computedY" : 141.39, + "placementX" : 399.407, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementIcon_1[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementIcon_1[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 399.407, + "computedY" : 141.39, + "placementX" : 399.407, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]", + "entityName" : "AchievementText_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 422.796, + "computedY" : 124.07, + "placementX" : 422.796, + "placementY" : 124.07, + "placementWidth" : 108.475, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 108.475, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]/AchievementName_1[0]", + "entityName" : "AchievementName_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 147.03, + "placementX" : 422.796, + "placementY" : 147.03, + "placementWidth" : 108.475, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 108.475, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]/AchievementIssuer_1[1]", + "entityName" : "AchievementIssuer_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 135.55, + "placementX" : 422.796, + "placementY" : 135.55, + "placementWidth" : 97.17, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 97.17, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]/AchievementYear_1[2]", + "entityName" : "AchievementYear_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 124.07, + "placementX" : 422.796, + "placementY" : 124.07, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/AchievementRule_1[4]", + "entityName" : "AchievementRule_1", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 4, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 116.57, + "placementX" : 399.407, + "placementY" : 116.57, + "placementWidth" : 167.069, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 1.0, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]", + "entityName" : "Achievement_2Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 5, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 77.75, + "placementX" : 399.407, + "placementY" : 77.75, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]", + "entityName" : "Achievement_2Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 399.407, + "computedY" : 77.75, + "placementX" : 399.407, + "placementY" : 77.75, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]", + "entityName" : "Achievement_2", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 399.407, + "computedY" : 77.75, + "placementX" : 399.407, + "placementY" : 77.75, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementIcon_2[0]", + "entityName" : "AchievementIcon_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 399.407, + "computedY" : 95.07, + "placementX" : 399.407, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementIcon_2[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementIcon_2[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 399.407, + "computedY" : 95.07, + "placementX" : 399.407, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementIcon_2[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementIcon_2[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 399.407, + "computedY" : 95.07, + "placementX" : 399.407, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]", + "entityName" : "AchievementText_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 422.796, + "computedY" : 77.75, + "placementX" : 422.796, + "placementY" : 77.75, + "placementWidth" : 69.441, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 69.441, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]/AchievementName_2[0]", + "entityName" : "AchievementName_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 100.71, + "placementX" : 422.796, + "placementY" : 100.71, + "placementWidth" : 51.199, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 51.199, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]/AchievementIssuer_2[1]", + "entityName" : "AchievementIssuer_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 89.23, + "placementX" : 422.796, + "placementY" : 89.23, + "placementWidth" : 69.441, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 69.441, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]/AchievementYear_2[2]", + "entityName" : "AchievementYear_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 77.75, + "placementX" : 422.796, + "placementY" : 77.75, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]", + "entityName" : "TechnicalTools", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "childIndex" : 4, + "depth" : 4, + "layer" : 4, + "computedX" : 214.01, + "computedY" : 29.49, + "placementX" : 214.01, + "placementY" : 29.49, + "placementWidth" : 352.466, + "placementHeight" : 34.56, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 34.56, + "margin" : { + "top" : 13.7, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]", + "entityName" : "Heading_TECHNICALTOOLS", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 50.85, + "placementX" : 214.01, + "placementY" : 50.85, + "placementWidth" : 352.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]", + "entityName" : "HeadingRow_TECHNICALTOOLSStack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 223.01, + "computedY" : 50.85, + "placementX" : 223.01, + "placementY" : 50.85, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]", + "entityName" : "HeadingRow_TECHNICALTOOLSLayer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 223.01, + "computedY" : 50.85, + "placementX" : 223.01, + "placementY" : 50.85, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]/HeadingRow_TECHNICALTOOLS[0]", + "entityName" : "HeadingRow_TECHNICALTOOLS", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 223.01, + "computedY" : 50.85, + "placementX" : 223.01, + "placementY" : 50.85, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]/HeadingRow_TECHNICALTOOLS[0]/HeadingText_TECHNICALTOOLS[0]", + "entityName" : "HeadingText_TECHNICALTOOLS", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]/HeadingRow_TECHNICALTOOLS[0]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 223.01, + "computedY" : 50.85, + "placementX" : 223.01, + "placementY" : 50.85, + "placementWidth" : 99.11, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 99.11, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]/HeadingRow_TECHNICALTOOLS[0]/HeadingRule_TECHNICALTOOLS[1]", + "entityName" : "HeadingRule_TECHNICALTOOLS", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]/HeadingRow_TECHNICALTOOLS[0]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 331.12, + "computedY" : 56.95, + "placementX" : 331.12, + "placementY" : 56.95, + "placementWidth" : 226.356, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 226.356, + "contentHeight" : 1.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/ToolsStrip[1]", + "entityName" : "ToolsStrip", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 29.49, + "placementX" : 214.01, + "placementY" : 29.49, + "placementWidth" : 352.466, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 9.36, + "margin" : { + "top" : 12.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + } ] +} diff --git a/qa/src/test/resources/visual-baselines/cv-v2-layered/charcoal_gold-page-0.png b/qa/src/test/resources/visual-baselines/cv-v2-layered/charcoal_gold-page-0.png new file mode 100644 index 0000000000000000000000000000000000000000..cfdb346094a3aa85e6cf4739403c919548be454d GIT binary patch literal 113860 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 o)V0?(#ojLiDtv!pn4Mq2 zRt6)$eUxO8r^#wHE*pAUJgD+}!elo1$^;Y<`Fic8LO)gsrOwAw2TT7#Kpfrg`)L2( zQ{nphl6TJKpxbor;?DoFH^5iH^)80!^kfd^WoUn4c_5(G3#zsecNW|3XoN}4wvRF3 zq1Qa<4Dc7*Upv^Z4G5_!sg?ofm0WjTGa`!p^cUqKNL(2inCd)^1V%)Qb;qZ2X&4Ii zTkPyfsW7T9pJ~PXS;t8U5~5;Sm_RB)!zJuNfk_Wchli#Mc}jlsDtzuBLqhlZvlk%e zWEkJRjVtgC^jdKI(>S5q3`q%_1lJA;#!JQ>;XNLZdDwKS1p4sZKBbOX*EI)@?c4xD zgvRfdw(^FlV*bXq*>2ILo{~w;I#l^Qt~TbW?55tE{YH=A>9q1QO^yh0WtxK zfGE%usy(BJ{BHCPb`q-t7RfXLm&SRiKR5h`aidm{{$%RYW!SjWn>+!h9k5+IMgo-% z$gY7`mP;Qc%PfP>^Z*0>uDk4*QlfP|r*$!3X@n{|$ zU}Fma4O3FS#^pI}@aPiAqD=sKrr;9@b7w??teCM!jU^IB@vJj4aLc_j=YdWkYDq<; zXfBuHp@R4MU2A>>vqf_E;^Eb^1hrn$_>wxm($KTw^&EL=qN&!{9kB|4rH{t(x2J@t9r}ST7F;1Zs+^bcy`K9_G>JJ*?7F#?=NtZjsg306)Yz23A zyFc-O7fFKj7YMirxiRZCOaDn6k<$LUfg1FDk~{7(gE>a`0g*-mO;B9*h8N7@z`B2&^V_J9rQf-ADo978t5va4!Cc z<+Yu_b{*C!4^jL8tdG>)-KVRmd`5p>mS<63r_g7Ph|e|xxGnde9dQvE!-Z!2L>x!< zFeueA=O)BL@Fd_Z%;qeZEqiQ8@zH1NA7C`8u8p=27+utM|Fa$SZ;P>OWLfq3Zbd}f zDz>2eDWtult0w~$W)#>iK#|e;P0eMP{8KvHYsglzxCNjkSGx>(u-?NcKsPA;iKNna zt$YlT{dvB;Uo#yy;umV@Eg2xQq|Cqm7%CnNrk+T1W#@-Z2~^*!Ln7;J_h;Xf2Z87J zio{%akfFsx-Y4ASp%d;MW1C8x{(Yp__H%v48z%)zGTK-}Acq>=-zrn(4k!opY5eY> z^AHJBXwC3e3f=%Ov8_^{nLy+|XaKFVo3X>fMBs$!y9kKv&?&lc+8h=m+ul`u@!DCnu~86;zC8EOOk zUi;>?#Z=+sUTkmMj#-J@DLR5Ifu>N6Kw_8t%o7~^W#-TtRG^yEC3e2%c;V15>_9eIwW6(h-1@ttwK%ey%xPB?#~8{rw3{1;2XX0x+4 z%ebpR2Ly{n1J$_U1F{Z{L+j34K!-ZbDQdI{jwDzVZ-&m2mF4GfvCwF{oBRmRNc} z{2I)6BcP&b1#CZd+n;YS-Z}NWI#lUfDGxb&#RMupj_t?CLFf|%;n(dCZZ1G8-k)i- z&;UN@GpNrq1WqW>`B-=kFaanj3H}G7EdRLW(hO<9f8AfbeXto;IK2~wRkh*$RvH@lzVKtWV-W{=26!l4RtM8BSP z2OuqudXS6URxCD3D3_2YUiL`#L7|1H>H3a3~Rh#8@12%u>q(F89aCI zS#I+s5wu;)=VQQGmtS3bhm`B^4Hz4YsO94E7GsO*|ABI#d1VXKgxXzbUsro?9RgPW zV~r&}mK=L02((7|zZ3$b#5aF}0zv_=XFb)HTXy4*0<)~;{DhU;paEF8(5nI|>_J!< zbP7^ZgM?{p%`;~hTrS`Z?3x9+O!X377tk+(&I3-gc6MIZM&Q~1D7o6cvhuwPHaJj5 z2?*t43*bfwXo<@1{S*u$No=e;K(GLH5FTK;UQP}x+X2$ktS6^n$mJl2ZS=f}gx{qk z7WSDaD4YfMHo(fyg9-^VkDLPB<99)XgIe}XgcpLcFUfh_s;?6z^lQhmC5i!_ae2;kcqcC;P_QCq=kEONZ!) z2(|Zf3O@p(4z;{Js2ocJ3HR?BzzM7M8!@qC1ty@&??t=$L+}rnTHTU8sFX zJ4q!LCMZCE{HYKT>>e3migkcj3daZJM|%c;(gWu+YdmiL@#};ZGHHtz#4M1E+#t~S z0FnY6iR^KOW(w&-Mqn8LpYsdt7OrJYu@lYy&>w=gW74Q#a6=GplWA3WAMm}kCPG;) z{vVn5JR1@q2rAz&c3Jtv!tN1J@gRemiM*T&I<>DPA~LE4xY0I6>%rC=e-d1+V%vM5 z`lD+w4h_^&k%+!zT>$(m;#*#ph&y1;HFn$uU`#QU4F&Mr0ZmA3uh=t@pdRN$?W=5$ zH1)uTrN6nGV@&uVPW2ohc0ciQIOr$Ot1a}mIKYwYK(YG*@dYaKq4&<|OR%ViYSr3Z z$K`Y!_gkEdCFp~HQw+`~W1bL1G0+=iKETme2MRAOW91GpGl_A3SGfrXsWgE~mmNR) zbE;D;-yb53TqX~j8w$22S)ej456qU#I(sQyj;9C zOvqSfZ>a8`VvIvz3riFls9gmH{P~DKNeN&e<#wc_e zc-+=Mfq3gtiq&M8A6|ZY1-I=Ir7Z!-S8GJXY*Zpb8E)#F|1?092Bq>C6iDbdfX+i6 zo6IzDf?=L&oojWHk+|XV4h|&9>&4dO01UJsBEo;np!i2xbc{2u<;s1{^p7_goYG{U z$VmUVvctY%)qjeMi^D*&{as-NRMVdD1V~pRNS&mE&R0#iNU`=D!k_lm;~E2T^6RrC zfeau>-FL?vz6eys7e7X2|y|@X|$)Ky49pzs0sfR*)DZE5ErF?(t-;L~?=>#B zlFizWr!?G(B+GzNAkWG&(X-?K%c%7qp4Vc(l6u5WR~l(gF4*JI=ty88OS)F*ZtLUG z(rsyz)d=ra{bmU+i-DvPj0Co5v>zgEX2=)XEJ_SyT2k^aiS2%GS)RU@v`;@uE39#= zmD05tM>>QGZYAaCH-dk+L+*R$L#l3mtRs7iW<%+}yV(@aXEIl|?-BAwE8QHN?0z>i zkuP`t9E1%J)4G^s_7%W-nI3c)jw@tII0$NrzJ6IkfHq$4lHd^IRZ^sKd>dx38l7X- zl#}NQ=XZ1-3Z$cS>iEv@D!%XdyFLkJi%IvXn-MDUC$EFX^N?RJf9f>xp1p)VELOX( z)S_Rm?Hot}dxP%X)7tSm3?u3>QYsGOYQflVq8%V>poEA~8gb}rE}z1wcz*xh^H-!t zSq4K!|AML8eeiTW6F{&{oM9g2Id*;8;ug}&F!2L37z}wJfYt6CCbXE zNJUCZznj;mC_BIXrQePiysw{kC#t5XQ{lxyUz`4IM~{pYv9Oq%0ClL8PpRWgNfNX@ zS(n-i^aU$jPj2SuQbndi}4@qRVW!<_ zg{ofF$i^6b1fvi-$33L5HQ*d=@t#C`P@R#}!{DA_H2OVzeuVnk5l>{adg-IGykJ4! z+{37)5B<=zkIkHV7x7H33iofphti!E8Dk2v4C$#S7iy5MMmL*VoiO2OE)zU6c9|Tn zJ6I;&=BWxDJB_-p#Cl7+OWBgGTtrPo@*KisM7OycB%_f5W(;N8d&&CtaQ3fHl^Q%V zU{tMs7lJci+im;CcUXH8@t{lMMT^&6uUu+!Z1g;&YjGsN;bi!?GsMR5w8FG>IBB~w zuJ}6}RZfJ8=@9j!&e7rb_UBL^o9TyNCmhrC@&5EpNY9b#gc=`98-|baw`**sGkqVe znRaG!v&=MY^mgpHhr)N_QHS zE3v<{4r#W%Yz|6myyA^>FfCdH%?U1tbFXq3^=m$FJl@TpO25I>T1;=bB_k0xo(1p9 zTv_Aq=R#P~(FuHfQCeI!6} zU|m=8qwRd^fTh#h8)U+w*Jtx?WA>TSWOh0(+Y_Gck<{@dtVILuaRaI>G0Zbwbxt!2 zL9)Yjw-4KD%c5P|Tu9EDB}ObgQkAEqEKWL7o&qU2tTv;1L|W(-QPq{dg0a7S%)}m-hW2h))VDh9Wy_ zxy3WV?L>Jg_YRDL(PrH}M5gqYf5H!tSk)MlAA>ez29}qDpb**`<;BPdui|RKNsJnt zIL$B-A}So2YM$r|=2yDkx42&nJ2~d%W-PqI@?7~qNK{-vS#_}(SO zqlZ~mf1MrGbk*zyjXsZ+BzKiia`*f-5<68bd}G5a9R89=8UMRhX)48lP=c7r%z~&+BZ8EFN?j57^5sQqcZMynR~MxjTk@quxoq7LT7`<@3C85_T%e9RERqcxvmo z!92vv@wNHaDsR@u%6>K(x?uEj8*plv^D+ovDrAiC3{HQK>XI5th^sq~WSBHg@{KD6 z;fj%{qNG+{4(;{s9%4SZ&IH#r?4T{DvtJ1VvpdF?+Ksz8waihafnJ6^@<;OI1bCz* z&8rLGty72Ne`Z7&&o@7ul%F2+gN@x#UwMG_YFO`?Ejo|)%tCauazT%J@k~8BhXzk6 zl_BP+hW6686oIrph2bFCcr1?4pYQzT7r1Px2V!O-yHIL9a7IJM*E`hCA7I7L#?mmD zYzgd^8V`2X5#Wc=e!j222B<15p0|^679|DoN>;t3sKi5(J7hiKlv%j6Ad$l+ug9)n zvxyUt9J9usBZO*3%zW)Se9ozG%(o9QIoJCehS1Ab%eh9*e%S>jC5AeYD^ay=Q zU0@k)%^vqmV`J34=4kRT)L(CZ4QzZrBaFB7PPAzA8-`)Ad42j)w?z`kkI=lMd1Z_! z(i6O~W6syxCmfYt)A-t(aa~CQ-Z=MWZK~_3`56Mk4bzoNm8XvL0x?M&8|!GKL>l}~ z=DRHU^TVqGRdJF+Jy_LU&uIj6J#{f|L;{ZaDH#Y^s(1xg&mD8ODFZOI)q~+Lcq>x7 zJgIUC`Dds8AKuIDK$IJ-cL^%U-HnLaeM=aeV1z7-3F7rskb-sZmyPDo=lt5{4*65wED) zurlpv#p8#Aj$f<{I|oLqg);_B+>6kes9N(m`_LaV`Aem}=tV1NU)=Sd%?l&%Urc(l z=y8D_mdTlp?jd#}B|t?xtd1E}Heg;&mG)!2+Oc06Zz?x2i-{>~i&nOA<4T%{i?y*zW6!NarWwM^VnHl!A^6 zX%{f~8%jbO#h#YRT;J*4amVGUtGnNOM@mF{`iKL8pN{p@*$`A}1?@4B#>K_OC}vTS zdG`tIF)XY?_cfY3>1|4*74x0BOLw;k;WW(6-nrig+|#L-RHPZsTP{ow2y96a3W8=S`5sV_-*^MoXD_axB*G zCaEJMcoG);$y^KHhs$(fDl+5@sD}p#CRSEeIG0w2w}Q{FUy;?{^q1LKIJ7EX zQWt46H#)}O8;O`?d!LV58GgT{`s*7bMwv5tafCwodq#vX0et;-n1JLj&5IXVL zMrp~WST@(DeM42TI>3HQh$|MI)E*r+et1DgXV12;(v}!0Y950s>;~1mnv2c&0GrAZ zv_BTf+1Ao9_MEcN;})zevPYE8|UXb z_mVINaHJ>2=Ox1x#Go9je`WeM9;5_yG|In+nE(+i@j&U{fBvfwi2FCA{#B3C{qsO& z`WXm#Ui_ba6>MN<*H>dVsKb~iCeUa<gshOHid0R ze!{I@b!%Q6RXsg!}zK(kHgxmnqEbm)9Iy*tByRi6R%ZjL!0zltI78VmdiLZ@3u z=<&A1(u;rJDtNufOyT4f```i2;i|yINbh4!Miybj_6-9G7?8XKU6e`X+09kqie$9? zv*58dWCZ)&MazTX4Dy`Ma%OBMlh>FrbDNC9$hI>bSTC+|SP4?*>H08)Yb>a(_`gzD zW{TJQ@=_gn`S53B{g{U2nnD-oXaeOf>UjG03zY+=trr1bLZ2F~?4`D9lsh<_9(bJY zEqJ)$QL_mA>I#gcSIn%lA3%&(bH4g=b$4bJV;n`9RF_IN2I`{9R9 zjJx?MCHLRq%VAa9-$j7BufV={rzr~W6&NRM4w{61zR^x$b+eu9E`LjX28FtzcHKMk zaz4YzdlLbYd|IRet~n{ba})E4Nu~5FXqmMT^5!m+WXiDn06tYa-Q0XGQ&CYtDQenm ziy;fSH>*8@Sv#4RI0oErfz^(O{zh944+i=o_CtdMU`oCq12%r<6fn%9e02){t!kg@ z_J`oxdu`>H1CLr}3-AP%M*0_QD&#c_uo}n38_|(>>uve8)}2<$N^HxWph~BGJLxBf z#g&s|118BaaTSiWa)0Gg{53u<%u_ z{)$uyTvZpyq|Qvie*ja+;TCP~!XYy0d=fr>SH!55x-eFy|9hi8FTTbrT zv2Lh>ai>EjO|nHI%;bpT4Gg9Cr+XsfOyk&+ZR*7E4jEf*g|{O9&$S8^>ghA*R%??_ zO3+@m&AWZWTSO&zh^>;svV{AQv0w9eC;2xjQjVA<+H`AA@b2@8z?O8&-weetZVocx zB$mdUzz)TQT@%*#6ML@J&xAIF;m@@wA@}rn?f$GW%9P76533sgm@G2CQ(Q3VE$c(} zkdg6O)u3?sTCyCkuho58xDjoq6|f;zVITJ}=>3{3X8LI;%34{bhksm)MuD7EPWr75 z)ATGt|J5%EjB6uki!tP>ZJRiC@353%d~$}P3?F}dAC-o4a~J3zbEh@nfx17 z$yd_xmpX{(vWMmaj>~8d#ER=G-qlJyyG0f}GuthG*KCaPAfj8NpXhywQ&hCz0=Hh6 z9%LA+gf*UuchGATXRu8$6XY8`mxW5Kq^f1`^e=zrx5p^%P6}(e+Oo1bN$gbRi5@j^hoR{OkVUa`2%slS$O`t7DN!u5jQNbefd?q&iczg&Hd7%0%*AY7%p%co}ZNUu@f?PhqGTo6)r%$ ziJ+xrLiF?|GnB78gQ9XGIuico$#zhi)W3l^EPDSC{YgpbFrK=mz!K0gsSEI-eQ*ndHS~K~C`FNk{3o2LhYGmUqxFjhHd#; zkr)gP`tO50TACWRZ9T0as^>KS~E8=x-Jeb_Fw=j!T^-@$dDbvqo(EKPdN z3Z&a&=`ZBLjGwye5+G2x{-kk~3^E%T-)$RwR6bBxTv;STM|@oR8ky+w66vHiaR(9e z={u&fU;ICJA$MO28ZC2#{P)-X(>?!tEU=IgIT(!pCSx&ZbP>wnJ>>O#*_vJXeDIY_ zFHc?TcOUE9%I80ck_`OkB+lD+pcV-)EhzzI*g>vn+>QUEC``4sYR6l21OtD(+$evvLp1VcGzC!t3qflAHBe&hkz# zLIEG^@7@8_paJEC*o%TJF16Zr&8oUzco@%Q#9{_w0+I^9&QWS;=;u`Yb&caZz|u+{!1@} zf`@`BNkh1OzjtR2Kz>m4&I{zZ9{5s^S?0QE&cC=s&b za-Fq}DvVfZHC7?T$|MTcRry){9>f#a&GXDv0IIE`USx!xE48!YC(=$qQzNN7{8?xMClx z(^Q6we6%fbnA~0v;Xh2%;eT*ffXF_Ya43RaF8!qtdEBw=Loe%p>srni(BA8qMyIY9 z9Y(M{B~JR{aZpc8Bt;<)4`GsPLu_l&Z*g~1vOE+8`%+#M<#$i`CUA$M)aR9GGI_Ik zMSK~Ld~u^@q6MOR^{QzV>0b-J7Vr#giBeqqXoIdnbX~sh`t^AXuX?9R@?zLg;@2@k z`qL0rJZlBV3kokrly93`6#wJyi7ord$$6W2Zv?kp z?rD#G#pEIiZKAlk2E4^%w>gCjHeQ>&#S#sxVYPnAWUoFvZW}cq+u!nDc0PSG_0@kJ z!)TPKL4Ro}OFF~#Q-@fUiE&x>{+m~?hVIpwJo7x+6SaTN_M9L7{v3-S9iV&z$VbTj z`Gn8f;;LxVkui$HeDWYzvcdJxFyK~jn7`-XKzNb3J=jArl7yvN`)(!%&+K8Jthgob zQzmqasmbXQ&kwPMqts7o=papxOZ$0HP@6Qh+y!V=73Ib9tRJZuNVg54Yi?3Xb5FgC zkb=5O7xWY>1!8>dr0n>l16K^g0uy2SK5e~Y2xdw54FcUn$EVy|XW$t}p)NMDC0sR9 z?$?gPGmGrn+OozoHrtU}gBRLzHBopHzV1BPCqQquO>JPLj6X}skT7^BzQzHB6di=a z7aWP1wAD54SL>$~|3+WX=t7^}r4zXS{*EL45KDR#6Yt)0eDb;7h(!>U(MWtlPMl)S za@?TM>GY0ul?*x6J)t{v0?jlIQ>Sl?h^o1PPB@7@$ zAiI@@@5&3LynHdW@2xq1l8aN{`8w2RAd;3~+gWlVlIf8IA)*>QsZ9Uy@cgUHRtK%^ z`T9=UVTtk9Yat$v+ARS~Iv%F7q9V2UYC4&2?0ml?qdGxF!SRkcrr8QvJ+Y zkJrdQ3lihTnuhbO+wIf`=BM-b1gj{%W(Zh&Wu*~kN82|wVwIhfBXq7?Z8`dAw(_6&fTio_**Fdf)323H#ZK5~AxodG4`$r>HK-*dr)OEb=!4>kh z?bEF)L!i{_b}ldY%_V5*B>`dmajdITzo^t&$5y3ZQC$4z1iKMIM=@chc(qBHKHY2; zU@`TW1ZXbXDl)Cw0Xl|(5m-df+-Gg6)pTs)qAk=sENKA9qrb6sjQ+m&J|zojL<-h* zjAi|&TT`Xc#`N!zXYBfI2o;C^OLg6In{cfFsy9v&B{Co`n=`#SeiG28<2Q4GP`3uqzeOfvW=aCop@gF4Q@TAH*LGS<;E%E< z?B7W|NSRcC5^drnGhgIyup}m=nuiwLSoN}>OZ8c7?Y6jqei_z)Q9Z%8zgR`%5#z;% zd8dX_=FXiBmnTIX%1X0F1NWa|ZQ)-#rfp8CE5=)xHu0B@eK3>LUMU{c2A%t3T1F=>vV!AP%SDp?@(~jH=3n zV#c}*M+6%P0exTF)J7!@irMK65*2KT74|wycb`@Hr2Iuzpu%b1mQ0k&2joZFUFYO~ zp)0Gw>3WMtL7!BDIVqpPfsH5*BvY=)Xpn}B#5-U_#U&)55X||e-#6@5rDmt2FBK@} zLD(Ms{Hmi5@a}Rmr;4JY9Z?gsd4jrCLIR^258<+u>X`4KffW|v&cm6h7ok6i0uwq} zoyt5;LKh|YXD?t#Uk|sKM@8H{h~$39p)d6N>N-PvX;Y5Bv#No>RyT zqrROzKEOc?z8nRjX)j{cgFH{YSpAyq7Go5Jm)`#Hm!e zSU1JmKx5ojwjiQ9>Z%k_A|VZ(YLtQ|6_zAJ?NRU#Z(?{H!=GDcgMNh;+_mGtyl&G)^hjAGGQ zk5KymSjj_2{N8d+Hqb-ReiaFzM&WHGv5eY&kKR{ssPY)`8*m)@V>f_V$}gv$6Rnue z=-L@E$rU{5O@uVme{V9mx9N3cKm*A|ak){IHM(9KO4JVSuLS(w4YF=6h=b5M;O4w( zc1Cu>+iFg?^(x=ACF2Ui+B&uF_jk{Zhr70?ZKzGnG*Xd;OpEn<-|I#@vZt-*-FAyx zDR{h9Cf0ohpq8+svw_+y^(Vq$A;Q2!TrtHM0_10@i1f1wcGj{6q6?M3*gTAW^J)pF zZQAt-IH-97$|ACgqa&B^*$97u0d%bNyDTDG1SKBru7XM0@HhTg*>jnY+%+8toq_J< zm^<$4;AIm_P>TWRD?yu*IGeYMJ`;(X<#UHAofY|}$NP7UR9hh4u;RKgc0+ioJn_SE z&Y{l+?d$g68ti|xhO8$ji@!-w~();Zjpgjh{s; z+m(T{%!A%wUSR>)u?v~go|{U!9KVL@ZQ0&Dr8%H{;2lMfY3A#|c0K%o&0a_5XLK%* z8Q%%1*=iC3aC*tYwIBfd* zLZ{S8pb5X_ROx~Fcs&u9;a?~_DH3X+J@O+e-x2C%i5fMCJj&PjXrwKs8>u3Y*`{_x zaV!ErOH$(ef^;Rjr(m^FPa<{&x9wPcFcGpoz~7hAwsc9mVdIz(9y&u*=Ws~eQLyOx zd+KvuZLL!zbZfUgm6zeh`t8%D4x@H!)+l^>S~_dHp8tSwW55=6BzgP{D!s*A`-z29 zYW;_53CTru*&Cj$7h2)Y>$x{qCVF^ z1W{Vf`~Lm;8K(2TP$e6J)x}vQO{eyoLn58(5#G=Bm9_Gc@Z{$K!$1u(+bz}>nur)R zGs_(0&z(M@;I;vdqGJbMd2B2C z`{sykh4k8$WzO?&bA;hck%Lv&N^UP5 zPHJu;t)_wXrn%3}VX2x)NbaK=PPc>c16J}fZyL2RyahI#jMRGpE%OV?2Pk&^|2=rkfHXB{8sH+XCG-x0v-K`ux1{f~}Z7 zVn}~ty3@6k5x#AVl2v#R*{!HSf?C;FNhDTr2V(m7bEo>d?)mFYdT}6478N*#0Yd!O z*JB_D<@leU{(-DyXsvMm!Fg`~VAS6r5cr+Pe*Yjo(K3^y|CIQ*=j(sH&Oc@A?Fsk? z7WwN1|8HJ`Y#hvW$qbU99_y2UeGd#f|3AK*iT~{lIsAjCR1apT&EKD%HeddZ9-3IU zJ#O6E66k^ichTHw{`}aQSyQNnrcU_%8RNJ55r97(3Lc$SZOPXE&vl@pfo}_0ynnaY z0}yqiF6r=^azk6ff^RdF&4h0%?6s}+u0cp=(;sXoH)z*T(JuMpf-K=ls<_)%?HIiDU>8&tlDjuZs# zZH-k%R}7d6r-X|{u#@nAc3Y}5w*&dd_Ed%46?%GCFJ0JJBNh)1ls3cf!-GXk_{^_; zylnw*vlv#BTsqwhhzqL`SRgnk&BuF+YYDqTLIR&@40Knkp&mEB#jZ{^Pe}ebnPjv} z03uuVJ*Iq~=k+6_VgC^rSbncVNzB7-=l$akSXkJZmhCUV8+%wJ{zLyaFgBHF-gJVn z?iYyqDFUdz)vV^Q=36I2*V0C97qYFrJL5-0&KVKDwX=uB;AVVMKX_kvDA+9BXZ9_5 zgQU{-ms$%2e#?w~YYQf+E?6^JIxi)N)Bn51_Tt9=zuwgBw;d3&j70hD%8R7jOL6u3 zfdXiDPpy~iVN6uq&wNc$Yecj$9eqBzyxh6hPulI4bac&%xxIXSoG*U_-+uG|w&Mi1 z2R*DEpSy=algERkXs?o%^bpvK2<~XVoa-AN>vR|kkBM|+q)!KsI`zpVy`8@ny`}g6 zI*S+s=3Wh|(okZ6;YQy?oADqIL^3rnw|~~K7hPn)yV8EN06hyHVmPJcIUvq{XzT*K zjNT{!ma*t94~>dM2icd#Rnit4%UJ8fspbECvP{`3yJvFF!Ibdh75Y>TH&pO1894 zp{Q^6rdvb@4Bo@{y5Yv!i-1CZ{r~f^Dy}eLa=L}2WMEzb{g%A)^HnQf)_r0qp z>h>o6=VMHXBD=5ul0W@_7!IWRe^lx0C(Ve13vx8`YXUs;`TH(p$DVkkZ*{JBzx9bO zx3|}+3<1+ZRl5J-l04W>I}sgF1pqc^tK!bYEoXcC_Bh4b+WbCc3Zzcuo414h&F&HL ztVYogkbK^Z)EF$b7y#n#6|2wDKrJ}YYNJ-0i{>9#NqV5R|9p>raG{LrK0lKCq3^CY zek4@9dopE{X05j{=eh+ofhU2h>c1CeF_k?81WPA9-57y;XXP#z>ehOoK*TbB3#L#z zpUD7`*-UrWkf*iML9~BfyVsW%lp%r4CvNafpf^p0Q9+op5+i+7UX|odXeR*ZdEJ2R zVBv9IhTQ96AbL}6(o3YgE%-ax4d*kwI9^kv|807z(+Z<6K_Usb7E#<-o>}7+_{Ac-dm< zWbp$8Oy4eV%viP8(1byHkgh?50=2HD*@?ismskEv=t%~k;V#tStGhsna((PnQf6*;;|snf6h7HtZ->BxjeeU@w)fd~0^W^<2s zZ{bUV5^QE~n^|5YKL}26*3{Tk+LC@G49NYH(u`4ac_?wU(@2-4{_p2~L~;KomP^ZxRLDdbcq+H3D?Kwr|~!($9atIv-Ho8gQLC`JVo~Ab4#+ zf>vdiXrf z6Lm|;LJu=ERP>emTgO+XrbO6)@GJk(=6MQ46xTq3QFo=^;w^4_-0{rh$KMJOfd+p|xq+D4XI0xc7Z)DeGxP=n+7|Wcs4uPIiKbqay9PI~AZBgN=7X)DhfQBf$$un7Vt{TuV=jTxd!k#A?N}F>duI5Uv zVi^=cb-U1wu!T%*^6JGiu+662J^-I5BczlrTZ`t!xv~4xSs?ixaNlSyf%Uks9S3ND5*LhD~6f6hWaJrWmM^UA27?W%qTG z3b%H|6-VT%ZbhbXPI~D{T8GU-5aI z>c`Xvs#tEDr!)&z!;=O&PiS4qQyO`*6e(aIV^_+AxZQHpYM$$uSh zTyqmo9O$@W#`LSn4D;HZV8{K ztathe{|(nKNke%LbRpXHsa)*N(rBpsw#@mrGT(;DYAGn<6DV7j7%#b8bhfuJROJ&C zTz97+_4qHQo=LXpH0;mtUK?);MePIkGmbf#`Oa*ML41^NoyCt?K~D{~BLTQ^QjYoy zUFk2%bhZ|Dax5bqcgf#=G1VhPI5>D7Q3P!i#e{?m0@~+;NjR*h#|K%A3(x%uG~81< z;jmX>wHg%;V~h2>lN8sMc9Ix>*Rto1UV>?W$Tj9JXTK5x%q~R+k6U*A;2mWDiOqge zGRvQ!%g8YM$+H1)t^9-j{HYsXlI^X?z99U1C=ZkySi31V3EvS4Ss* zc#CLQ8!D35HY!_ z`)3SFFR>8#y1k0Y5yekbA0uxIE5L5e(Wd~Y5GbLlD%t5>$2g_8)gg45hs_V12bv$B zm%Di8WKctjfqqSu+HIf1iwc5$K)M)P{NCfjs%afB%T6BJdmjk9VP^;ULsx-e{q4FP zcae~T3C+5w&$b(Tg8|P+z;I6QcZ=HP>2LXTY>7yG)L2)=_*KH!QiTtu%j7ZDW3$76 z@cS;L>>$i|3}ETJ$;L=~8Fo`wzEe!AE9IQTeuCEvIIqPG@!M zo`LxhK+!ZdD4EIrpPmL}#)*}%9b1I+A&IA;7xxCJ=x1ijY{VA-91%{JLSI7f&VtHU z?&_^14a8+~pQ21MsiuSH`N?;qH_0i}9S7@{AX4N}*VI&v9c!kB&`C(8(8-VW z7dnHXOgS|le??~7$+rPkcqIFrtY7W|UBOz9$t3UBuX<&JDT@)zR!|{~|G&V*eJJT9|N`S#T1iJ9Jb(Q)|zpV1Z$e_;i# ztozVO`am;jXYKEq;q&fiB%D&v+JT9AuNuv5Ts;Q`bp#e-h4)UFsc!#~J6s%K@%)EN zF?ayBkW1lJHF$Q8^Y0nF4ZS?#)lroP0QT(Yh>A82(v7nFgNT3Z4`gjtS0YOlBA(KU zNo5NR+%MV&2XABQs9qy2hd{s=)vKp{Bi?PqK)?z~*S>kQmJ1j6?R<)}(nXU?dWY(KM)Sg-*RKyqttIb z$LnOa&jwsGCly94xn*&?XrzD|LF7F>*!R8!ndpJ6hSUaP~r zc2J;+WLzQbZT9k3U2gCI{SbQf3CFg9Fks%yMW{PP%B;Z=3(|b!nM)5-+@;vDJO*i3 z*%9IV>DWh>4AoLpkw+_nZ3=M;rGw&A{RARem+Z~Z|30+A-n8I71WOpu{&OW?7d*Y* z*km4HsGu&9{s#xhX+DkzZi_8tss6$Yxl)$r{FC)xH{Nvbi7a@WHn4s+z+NEBKL5Q{ z|HnX-FV|!+Y?i6G@3g1eb?aTm+lz^M5$D4CFZKf=oitMO(@5%6Zm)urdurx-9>*7> zpIL2(!e`Z51b~Yr@EXc%(Q>_IPtbfyVbK!Iaof$PHTc7FKGFQA;hzf@UEk%l`6Er} zc?_}9(QkJ>U2LUKDCP&UFn$)jv25$lpu+|}DKa4kD>0R7Td(A|G$8tjQC&@4VOkp?@Xt5OVXO zXw!>4*W<&|IFSM-ZtpG_4-EPXaj6I(z#J6Fya3{*5`0N$k_2bT$TwgSSWz_^lSjOM zyf0+&=G#lBm=YE7`)>QQPa0WGVhi~aQe3}!cm4u4x;IM2^Hv)!X|`Ln0C6iU81ABR zW1xqiZbf|to+=x}(vo&`qSIUx@nmFJ$jETZX1yiX&{3NA-LE&+X5N!=e*tEHKN3H9 zi-Ahc9(6=I_k$8Ww#M;VNu7^7O=&-YLn$UNk$saVXDpOFxcrY|Fhwx-(OLT0Y;PgtO!yNK?`lCjurXwon4tIL;MkOY+vF|yGsXHevuLIN-mSSj zF9yq0!e^Hx!$dN8pzp)1wk98cHX?i7Rxm~%yigZ~LN}%0PrC#A-G=mRA)2-YMLkD$ zIEvnLRDn%ACj2|OXsQilqPENa55SfVXXxq2W}*AYWxfEL#Wrij2nzn)I@q7-noJ}k z{{an_tivB^ej>wOU$B{NJM3&cqff|OWOOcf(8A+K$XxU>rz= zQI0awaxtem;j(DG=9@{#t=xle+&VLInt@cEhn(!`lIU!0OZs5hzUwvWt^G)O0c5ww z5&kd(GXMwFUu!~`9tEe{*7*ee*CG7}1OEHW{{QylON7hrlqmhl_og)6ox{S;%gmYO zm0Xp`!kfw3rW2rt0j7dtfkO%#=53pRiMiZhSqJHeUWmL}Y~YkBc4FDVAG})Do2vhO z&Jq%YdIAY?9>!ZYw(fSHn?;YQ7C!b+&fKZFA5%orr4rQXVNsve1KGf3>6J_R>Nr7c zOOa4fSw3NJGulSV&o|-i>yeu7)aDXc0phUNmDI`-6vGPuJ~^flEMcS~&~4oaTl8V= z+TB|>>O2B6f3#?#mj46Hep8hF15r<`I=PPLzA~d%1%@nuJoH_n`T=R*7uY3m&(+m| zGoc_WKLkz8-D)gz`&?9%C%oHT3~XDZxecQ8oXH3_{S=W=BhcxkHk`G&ANG307XZy> zX=$lL2B`hsKWSw*15M=xF1hp4PX6cfmq0cN99F$wfn)2Con%w<##oIV&fMZa&tq}d zri<=fS_EU0hgeN$uzn%U`WnN<@^ki#gw2LpmG>rbj=`W10!~CZ-8wpE4O6pp(54j_ zoVtHa2h>FVPsPH8u?sbG`yas0w>b?AL$vwiPWlZ`IRqpdwzzuEJ}6(0b(>s;jDi6( zSg`7&d{O_fsL?6g+=e9$y%lhA0YiD03!q%@pLlLQH$rzj!+eK5_s*NM6bJG4$Vmc`{xm8uV0UB^~{WcSpXo*%ghz(r~`IHvAwo(p?i)S z;o!WLi~~%-ey3;@yt9o`eKv;1MlsJq&S97p2gEp8fI&tGKSVz+@;LJnZ$~`81 z8G%%It@@YUnV(hi>*9*CfnRrOvl8$(-^K#@;wmct2aS;=OMvb__?QepW#;{St`dqj zuUT57-2Ql5S|a^0tzv;qO#gTNv*P+7V#Yp8`Gj}RAF9Q3jhNw*377$YA4`pOS^|1= zCv#x&i6iK=){<>xGSwlBVKYQ)^$s;w8Ef~jvPubO*J zuQ2cwcatjs6>Y-(f->vPH6BMRAK4UAyaE8ST!xxti^cYy_e&`kJq&aXFaPKz*kyzc z1iMVzo%q6(21mTF|FT#oeroL9$b4Ggr6L^;qaQk$1(kGR!#=Q$9W-<-Ka^tCfi;vA zxJvEmH<~m}b7tNw^~qC1Ba)w^Ls0-fRj`6QV_n&|F*}LE&wV-zcnx`8Frc>+;6=26 z6^*=8ZvZ%W zx0Jp9Nj~F{gmulz72s{jt6P8w>cEjYkhlXxtFMO!3x;b8NBTJk88wA$rwdTun6iu* zKJMcOz~JE1OoJCu+8G?4Y#h%mJZFG2+kUS0C^iIkJ961n}cXULwbQS#!x@4e4v{?cuo_|f&%*dL_3p>9wTpG9HR2KYQS=Z>o*$(*%YYOH z+K~J{V#qiRTQ5i}RGH0ggYikvO+W2YKG3;d`xrO5n#ByLYwzOwSP@(JqA4p82RdXB z)NX~4(jk)Q=CA0QG5fuU)1jq=$6T^xO`3fxmEPV(z% zBme%?A;WXL>wI*@rZ~9mIW4mJXsfT!1*q4cqfzWYU}Sf7x89c;Ac-L``_M89!G!ok zyQ80XkwtzJoYzzRn5Acz)~q$^4U4GuL|=!27@Vzj5cT{4rNSpSFl4E}Z(f6y)0Vifn%&CFPJlzm#N~ z@+w1>H0K-$ZKVuH*E6?|uzCc^2El%R({^HY?iznXflcb!P6ad}Gz6A*Na4ek4dY87 zOGw~2gTPeT+dE#F!WOvz|JFijKqi}mFLWM{gYerG8)gn zXbq4I)$WdUzz6`k)rVsyO&0nb(2rQ29PB0!$IqA{QX0Mk0 zEF;79TT#@WsXVk=aQA{M9CkqD_KcNzf6@F-ZmIUr`ZV10Xp_Tx99X+GURtC{yPzV< zotE;nX%u(I+_GFxiI!-1{Qtm+=bU$>mXMvI&QPQ73(M@YLKNo1m!jv`fDIc#kq9s3Z>vX}U3= z^^pt1S0VRUK~mrRwO&Cv)Hdgye$4fuZMN%}(TGl^g~7m5n*K|hKh-f0)NXgm zp9Ov{;ZlQUrb-V0V#s`v5Bs|2t_bM=$UP@T9mn>K7)A z9clSo7lnxD;zMym_Nc;bWp~u}WSX&-$!JPG^OE%fVgN;MkX^UC`{+Nh&(C(N@czbI zjZ~JU!&cbI0W#LJpm~77N&*z)*(8elqOAt@PrYf#GBjk+M4!~1o&UDi07Jj~G_7x5 z_>SIA*2t%R@;8ta_UyFsi6N@@V8~&FO3}h4?6lzg^5u`iz-#h>kjJ@Op|Dr#c<%}@ zBD$F4Moo709H?#9QxkoDu3hxKTG)Mf_0PlwspGS~o-{wUlwyNA3ph=h^4aDH`juIZ zRQ@>~#N*_^wewHbQIuuj*WG~=eUY2P&v&WE3ja3xmS|eSCq6&qQJ4}!#yR5IF$%Xx z8$2WMQu&XzrNATpm|a&w^aIGQbv$;T)9;D2*}nDYKT4gwI4+g^s|mX`fR|{t7V|0| z=jm^&j1B7mKnS8Jnk}DZR0_sdTgMt)mVY~}c|+f%)U0bSdBK3Vkzi0rpC*~z1O?jM zQqGg=zms=H*P3N862g?3YyHD+nHLasbCE9r{iyC^FlM5Y!*sm~@fqXNqSslm1^7TZMIjAdCn2>e`NC&;6f#S46%W{qVQ0XGssgB?oW>bPypZXfvA+61)+$wua+z z@#(QZC3xZrR4{;jnnD244q)T1(zC0%9NjD}lTS3R^vc+57k}xfs;X*f)d4SS>{_PL z`D2$y*NSTUaIUhBuJQi{&soz;!wG&xT1p4be^h2Mg z{{uq0k-$~Ckniy3W!Fhs*?W6zSHbcA_!wKq?_)4N%Mx%xHLm~O4aL7DZr4Cq(SX|x9yX35TSrxr%TMWLC6CFLrX>za;+LfFno2}U&Ox# zm9?shy1FDSofri_sd@Ef>igV{g#HE3&AbWiAAOOTmDxUql_~P;AcK7$abLiQ2(Y>1 zZ#M(ig8jHOz@5NE09ejPM~0LFHH3~XA5F=w{R5akiATvX=Vomvt3`%6GSj}ajGrw; zy*WcPgf=Tg?Yh9uME2a77E=WT0P{@(6ur93tEsI1K+Pi4OWF%v1)HBn723VYa^$EC zVD!(Y7z6^-XmHwn+Z7FlV1nr=mWJ{P*2>O@ z#3Vu14xl8TD=sfzOZlZ)GTdKeaoIQEPBH(h;_SmQIKqmsHdEr$s3mb;lJ$ytDt z8HVw!IW1CY4cM~sObDmNpmS)q@GLGwmWq?J*XQD-d?C&KQHsF%`SGRXYtTaMg$C21 z0zVqgHw({C;UB7FubBV^|wz8W7*5Ot1lr0rK0|PH>9=Y2(ATHTO zAv%%}yR;H`J#=CtFIo7Vr2&sg!=fl$NuNoe^Ku5t*(5}EsE6aowTIWQnc%%+m5whXrZ0D4Lg5sfajw9g3jLKcl+uAF}LHk8|3ZHs(WbMqv zJV~IhNC=E&f3Aj)fiDv6b~glY2Xbje<9&*DTzP8ZsmS~+K~T^E;lPC<9s;9veHh`} z4_w1?2?ARqCT4oh!(!&i{Oo#Bp)cTMp;tG%BUE);jdH_SPw*`i8}3qieDzl9 zB4vFot^5p?A!eeYPsIkL<8&V4*m2fR6|agE>t4WUbz>|(N=?bg$}&-8=~7TtGNhE2 zFIT-{+FNKJEvE8Zet}B?6+6>l_3_~WKKUhANBO#%&SFnxy;czT8A6;NQm^ZM@h^>f zqxzsk`Teuiuw!)foX6(s3u3@fPtn9aA^q`4_KW4>fL{v6iolp5^f>5O}ryozfmCqLEMPm_`7A> zTXrCZsFavZDJ0U(&BGK?ehdJQWkXD6(Zd&#>Z$tE$|*4;D>%2qu;cAo@cAHaq#u z_O7t=l~neShuiUz(iq;~W~_-DF`Pw;1i-`>)zU42WgTQAgv-GG{W&^v=evi~n478} z_0npeA{dAz)+jn~x&5^UP9slUuGVq`TQ%Ms<(6{+1XYEuf!(@4g~~UEDuq zqcSd_Mr#(dMZk1`>S+~&`^KVeUQ1O~`=qa|J7@p%Cvj+H;FIUtZ=25cT1_KLT1>_1gW5nuH*Vh_tjQN(h29sB|MK-HkK|EINBZ%Ewno zILDxzzuqh>rm3&63zB0zp(!A?fYYu8`g!}$u=6MWM`0~D4i6L0@4vtN z2c`czGwff`{(t)=48^sbs%L{$3BQB&)#XRAPAi}b56yfF{`{LF!YyB#2l^1@VGn+_nK`g804=Dz65UJ%+9 z!F!SI22#B%5}nZdd=wD|4R5vULRYFt@US>hgx2>=NP^w~=uQhl@H!!{4?^YgUetl& z=WMK~^)6^hE$XH7+WAGy_onm+FDh2fyMcm3O2F20o-loP<5Jf;^5(K$ezxG`xQnb$ zp@K*O*_W?BZRdZa9{cw7Yk!qj#kY$6{gFKqV1)7p&$If7j8NYfCEV}+JLqg=iWu&) zs7;wfRyv}*-#G$j5S|g71P5->^=X33erFdaf1g_&v2q2-2Sy#%&rVQS$JhOJXK}~_ z{4GaP7?P}(EhlEM2%s!-IjpQ9haW%Tv5A>A%^WV5KluI1r|55G%_bIxD$+C%?2C}6 zL&95e&3v>g`;||ym)9wgt;;@%;4V5)V)O}d;qV+hZvY(kUyEa?F}|xl zcVr=*NGR7UHk)`3lCu;U9&1WRb9p`~$^DLiG2w>TL)Mb6qUMW=5R@P~b9l5DC)7^5 zHs5izBc$8WZ0hh)-x8318me*6EDYDZzeBjOyg3rJ*+q1g*& zWS0gB;B>x#mbOnLi*i7jtlX{2Hh5Sm{6a;oOzM$s3 z2(Xdph!B^OSjf(^QuXKdkjW=dmSW3kah%c~1G(F@xYZ)g?RsQC{r4-+DcWgn=^;D| zCSdJ|^1iR-dm?++3bgAB8sF~{;qx}VW!F62UmHyek`8G2-2)!h(o2C>G)hu&CNgZK zHX!UNeRT^W9C$#Tr~_`D2N{`+kG7xMrJjK0@N{j~pk;Zp85) z^$t_}q`qCTZ4fSUC!K(lZxc1wH)^@L32Le>IioybBq)6VGA)YiW}Ta5HJ8F|87g%m zsV7P@RfGWv^U0%0qRKc7j7Z=2kU|vS**3WD^jg$cCugV9sgW)EU`B|oauzBA5L!al z>)U!7=ZH!c?hM)3Fx{T|T{a>F{xk}5GDE~orOR|7p2fK-bdAO9u4uQnA^%r(0qHmP z>>i%TS;hAgRetF93QBhv%6TU$rHnF3_rFEfaEU_}3|r}B!rFywJstm2#} zDR_m!TnuqgUY#a8Tj6x-gKcf}(IV~lHTg;#u9uZ0-4dx2iwhcuj&&-f7IHHfdmgCu z@M#-f`^Z0uwDsYeZFn=x`Q8VY@SP!1h0$SCkQEKrN30^p(fHt77(9le&1zg9Sy{PG zKxs$+L$sxB`WJ6dsKG;Dy|^dXXrI9C8@plANcM3sV1UqT>(OFwPExtQaQ6SxyxW?2 z7o|PAv|0I_h3e6xwlUi$+UB3mGj~Il44$)qCXa6bTVcS_hJJxMck>b3X#`?pvX<^w zh`9$j6+wg3z?CB5s2$uZgoQbl9AKtSzi!<2gIx0n9Stu-fo&!J)>)Q^`@((K?QO=( zdg1seU)j|U?85~WTJKwJDt4g%2D+az9cV5q1&gpX^v+zTdVW-&i8>*7i%rjvCOf z{PGTWE|qP@y(X6j6BDXKoL8Pl{ zcyO8Ea}0EpXqRx%>G^(FV?p}b>8yLuaZT;ULDfO*f>Ra_hc~`PjD0f^=Nq#hqZ!TB8_pK9 z4-HlXVa5C?nY5U}E0wNyJ;U}ywZ6cmzS2d0rAj)|EbY@K#lX4$H1_m^fMV^Ri(nDt zQcbJ+qwNIWXdg43;cC*B@9u2Jdpn;#sj;1R4+$Zw57u=?s4#SV#Xls@IJe#uE&y)0 zZt;7lm)*|QRgYDhp?@7eC#Okrq1@C=QLIN-TcvEzWk4gTEB zFLif+IT-n6Yi*BL$ER86FHZ-u9xG3A{*bAyi)wuI>#RVCIk&26enbB!={xVLr@yto z-wfNy?7bv*)9!Nx^E;|ePFgK|fp{rtq8F51KR6ZtY~cwrU>kD;w<&Lo)nu%Fs8^_O zWg~QbecT?hKXoaaNAu|H)TP{6R}d%55AOU#MDZ?BtKNh6RV)=J-2Vs;}lRnY8>EWVNwUxUzamTIXwI5r8nS(kgv z=YC^i2bDHKB0DfHuOi0g$U%#ADdJ2kXCK_enRao~?B)%(&(D57?kwHve` z`4p1_s|j|djR+MdvCar#`-b+;ldDO5uHPf^P(s^&Pek`bk+(LqcCuzk-|iG01=o(n z#`cqUr=+JkKOo25Jw?BDp<2o{hzoMq-(f8d3SH+m=4h<4-Z2bz^L+S5_MKZx%Tv>w z$q{?E-NUDTKw`1J-BztlKKPLwp5ArM#Or+SU|GvnXt95ZM=?=5{>Hd+zO+;~MNiF! z01Hv!rWk5W-f6Vn5qIcTMe#>>xt^lAk``uD?*(E-&xpOoLr=eS1_IWGi;seFs8DJ| zypwf%vp00=c{h3JH|wKrpAf;wOlO+Oy|IU5sjW8B{kw|ibJZ>d9na9W$++TE7(P5s zDZOV8hLDHP%+;loQWKx0MNuWqrqE8wwqNrST=)E__5v9{ zCa+weL1MsL*)~{+FOA`PrMz%{Iv6SCW;r?B z)aiQMg~4#{Kj-iJNfT*Pwlv>}Xp9YEqFrnGC8y{2$nS|aVo&!1!vBj2c#{si!@KKq zIlSW@Sx-ZHEg#*9$vkU4C`{2!S+g^rV$Qi&)&kC}LXzi}VGlW!F?!5F3 zXip>C`AprVxR7ya?09l@ZBGVSptZKUKm2Xv3O@K7_qhF4ZiF zEJ9Ok;NK)rWi|u)vb@Aue2Z&gzu346c^y-}e{sd4q#((n zsr{7({a`%@4Q)cahW%-1CS;|~{b<_cP{nSQ zFE%+2+u`U5dWkE%O$yZ{DE}Ly_tw{oOk)#H_rgd{Oc&{+T=M1QJ2ure_poFuxT*`( z^X}W4Ph`7qn>-~S1Os_XlnZ@uX=gvt4a~ve2z1)uR8d12t_*#|Ab2B6L zgeMw|$UDf#VfD6T2|5#Ba8m(I&mZ7-KKUx|WTbH9KX<$orQ{?38ZQjT_QTT9!&L&p zvHEvD{=$4#7{=a+bMTz*Qa5gJ+L?WGm-SV(vp<0Mz&QR>ilJ_Yb+~z1So)maUHrRM zLTR?ri76uA9BTB-9Hp2jOexsdw&6N?qv}k@M=95N{|p$vu~)n?KQdyQV}fRWP3s@s z>ovljNF7MX1%9d*0bMCBK_wYz`ug>n*%bt>oIxhtsJ&aq3yx4v089 z+MH9?j}}zPwe0I`LGiP{lTeE2N)x}t|K;0b7E`rD#)Ir`imA2cCXg7pK#c<7=Mw4_}&J6V=uk3GL{- zT=&aBrelKD2n(nq?*?Y8Ti97K=6$w-&jlqV#RprOtxTKf3r5q@4oURMSanz;JWKt` zS*LDxawxw`)b_uTm3K1zO7#jK(e5jQ8Rj46+_ny?&S;V;Nnbm$yNtV=B!qV2)xSK7 zC^Rc$ijU`GWjcSN<;7x3Sn+Pj#tnCbU_oMdxSM(^jQCnfO~;s_^B8z$Fp)jp|C=Rs^#g)o+(}9_VA*Jht%1NYyPHP-=AAf)-w!X zw>-D)QdcB=!Kd2@16FbCegf`oX^Z;%9=juZ$Puf+MP|Ep$haNK&LY8npv*lSKgd#S z^w@q&3lD{k7k=o#)+fX7{+9Xdq3@fUKeGsZPo|Fc$#BJ5v(nYrBwU~WC)A*SQMa+P zkf88s(0oSM=DqozrhdtV6cfEmmw1fC1Yan0nZze%=jSBs;_k}Zy$(PSsf#qNrp0~J zwDH^wmG*d1R34Fu?El<)u-G$u-Txj*z|NikAKMhb}~h3)~RM9XY?n-H( zUQGPVp(gw7w?(DrY|5+FM`(JM_0i5fVQC{gO({o;eUw^*J+s&mKN6i;*MfY<(Pmw; zl=3ugX?$raT8%y5v|^rW{NZa{@R65~}NqBAb$wmG);%{R|EDkEx18U(y6(jDzBR7BKMFJ`6U&K>N1Ym`oec~BKFS;v$xx~Mu>>^)-`sLVzNxKmqKne|G?WsXLD(Xci4*3-hU%QCTV8o){*(H ze1$9DLneX>lgNL6`gI?RP9Epgvr}}oKCADp+y+Ov%`%BzZ*OMoWalE-yITz!7p=3u zo+9X~D&xa5u6$@XQ}xLV?YC<|U$Bu`h=`o9wo+HvJ3)c&ROazxXiYP|rm>ojkdgWC zfI}-h3@#~;Ne{1A%b5IfB^OKvJT3WD390^V=%HIgwCX+Etf`#+!O z=*6~bMe>yTMR{EO?Mg3VulBLK#PG}4IfYMB(L7R8HV;e@Y-HO+0m^L3x!d&g$d@4* z4>Ha+r#Fk|xHM(W z%8=M_9WIq4(#jv2>cfxqs9~GnTfX@M?!bX~zL6*0K#?~$kt@*FC5D&eIB$4la$fL^ zFimCklyOo-Gj~C!P-D~5)XA&g&JHDi`6kmAI-bv)H#=`mw`SoJTNrh??dOVXd1n?~ zJo5c?$t3Sl(CJ^jai;1cX^(ltaxhtiIxm8M zFJ8GoMzq;wMeOAXX~CCL4+Hw?118p>7Ymp?AA8-uXv#I`q9T_}`l{v^%tq2*CL+%u z1H02=!u{||TA4DHZ>$dlSHWd&+E)};&S6+TH%L|$1_9jlyKit9)ZC|U-l{>zQ7kC3 z7)X{_D{Di;Az?HArnq*(H1a-~+GUqSzv?2-%8UT-qFcNm0N`2q3C@QU*kgXaE+{e3eeRafDU%# zdLeDQ(vuw(MQ$x3?a^XapYnGU)4%@AJU%xWj=dO^V3MhtaI{^^Bkr0yr7y5A+lfp1 z*G145$~lK+OCEXOIM4j>eeE^Vkd2YOFi36)?`r3FS#fwY#~mNGT++Icp`{v%+9|ML zKf3-PBOUijwiLzWN2xQKnOhI43e?Gp4UUN|$$hT-KafmxV15cBC9JOKHD;ImS<5vp zA82;Y1?s18Q{CSV$8u$X$∈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 literal 0 HcmV?d00001 diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGold.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGold.java new file mode 100644 index 000000000..54938f986 --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGold.java @@ -0,0 +1,235 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.api.PageBackgroundFill; +import com.demcha.compose.document.templates.api.DocumentTemplate; +import com.demcha.compose.document.templates.cv.components.SectionLookup; +import com.demcha.compose.document.templates.cv.data.CvDocument; +import com.demcha.compose.document.templates.cv.data.CvSection; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import com.demcha.compose.document.templates.cv.data.SkillsSection; + +import java.util.List; +import java.util.Objects; + +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MAIN_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.PAPER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_WEIGHT; + +/** + * Charcoal Gold — a one-page CV in two columns: a charcoal sidebar carrying + * a ringed photograph, the contact channels, rated skills, languages and + * degrees, beside a paper column carrying a two-tone name, the summary, the + * roles held on a dated rail, a pair of credential columns and a closing + * strip of tools. + * + *

The preset paints both columns as page backgrounds, so each reaches the + * foot of the sheet whatever it holds. It leaves the page size to the + * caller, unlike its ported siblings: the design is drawn on A4 and the + * geometry follows the page's own width, so a different page rescales rather + * than breaks.

+ * + *

One page, and what happens past it

+ * + *

The two columns are a single row, and a row is atomic — it cannot be + * split — so a CV longer than the sheet does not flow onto a second page: + * composing it raises {@code AtomicNodeTooLargeException}, naming the node + * and the height it needed. It draws no cap of its own, because a CV that + * quietly loses a job is worse than one that refuses to compose. + * {@link TimelineMinimal} is the preset in this package that splits its own + * columns across pages.

+ * + *

How a document reaches its berth

+ * + *

The columns are fixed, so the preset assigns each section a berth by + * title rather than reading {@link + * com.demcha.compose.document.templates.cv.data.Slot}. It has seven:

+ * + *
    + *
  • skills, a {@link SkillsSection}; languages, a {@link RowsSection}; + * and education, an {@link EntriesSection} — in the sidebar;
  • + *
  • the summary, a {@link ParagraphSection} of one paragraph per line, + * and experience, an {@link EntriesSection} — in the main column;
  • + *
  • certifications and achievements, {@link EntriesSection}s, as the + * credential pair;
  • + *
  • the tools, a {@link ParagraphSection} of one tool per line, as the + * closing strip.
  • + *
+ * + *

A section whose title matches no berth is not drawn, a berth with no + * section takes its heading and its divider with it, and a berth is filled + * by the first section that names it. Languages are rows rather than + * levelled skills because this design writes the level out — "Native", + * "B2 – Upper Intermediate" — which a number could not carry back; their + * {@code RowStyle} is not read.

+ * + *

The name, the photograph and the marks

+ * + *

The masthead changes colour halfway through the name: the given name in + * ink, the family name larger and in gold. It reads them from + * {@code CvName}, which is why this preset wants a structured name — nothing + * else could tell it where to change.

+ * + *

The photograph comes from {@code CvIdentity.portrait()} and is drawn to + * fill its disc, so a picture that is not square is cut rather than + * squeezed. An identity without one simply starts at the contact block.

+ * + *

Each credential takes the mark its entry names in + * {@code CvEntry.icon()}, from this preset's own vocabulary — + * {@code certificate}, {@code trophy}, {@code growth}, {@code star} — and an + * unknown token is reported as a data error naming the set. An entry with no + * token is drawn without a mark. Every title the preset draws — a role, a + * credential — becomes a link when its entry carries + * {@code CvEntry.link()}.

+ * + *

A skill's rating is drawn as five dots, of which its level fills the + * nearest whole number; a skill the document leaves unlevelled draws no + * rating rather than five empty dots. The phone, the email and each link are + * reachable from the PDF, with the {@code tel:} and {@code mailto:} targets + * built from the values.

+ * + *

Fonts

+ * + *

The sheet is set in Lato. The templates artifact does not carry it — + * register it on the session, or the engine substitutes and the measured + * geometry here no longer matches the type sitting in it.

+ * + *

Usage:

+ *
{@code
+ * DocumentTemplate template = CharcoalGold.create();
+ * template.compose(session, cv);
+ * }
+ */ +public final class CharcoalGold { + + /** Stable identifier of this preset. */ + public static final String ID = "charcoal-gold"; + + /** Human-readable name of this preset. */ + public static final String DISPLAY_NAME = "Charcoal Gold"; + + /** + * The margin this preset expects: none. Both columns run to the paper + * edge and each carries its own padding. + */ + public static final double RECOMMENDED_MARGIN = 0.0; + + private static final List SUMMARY_KEYS = + List.of("summary", "profile", "about"); + private static final List EXPERIENCE_KEYS = + List.of("experience", "employment", "work history", "career"); + private static final List EDUCATION_KEYS = + List.of("education", "qualifications"); + private static final List TOOL_KEYS = + List.of("tools", "stack", "software"); + private static final List SKILL_KEYS = + List.of("skills", "expertise", "competencies"); + private static final List LANGUAGE_KEYS = + List.of("languages", "language"); + private static final List CERTIFICATION_KEYS = + List.of("certifications", "certification", "licences", "licenses"); + private static final List ACHIEVEMENT_KEYS = + List.of("achievements", "achievement", "awards"); + + private CharcoalGold() { + } + + /** + * Creates the template. + * + * @return a template composing a {@link CvDocument} + */ + public static DocumentTemplate create() { + return new Template(); + } + + private record Template() implements DocumentTemplate { + + @Override + public String id() { + return ID; + } + + @Override + public String displayName() { + return DISPLAY_NAME; + } + + @Override + public void compose(DocumentSession document, CvDocument doc) { + Objects.requireNonNull(document, "document"); + Objects.requireNonNull(doc, "doc"); + List sections = doc.sections(); + + // Both fills are page backgrounds: a section is only as tall as + // what it holds, and each column has to reach the foot of the + // sheet whatever the other one carries. + document.pageBackgrounds(List.of( + PageBackgroundFill.leftColumn(SIDEBAR_WEIGHT, SIDEBAR), + PageBackgroundFill.rightColumn(MAIN_WEIGHT, PAPER))); + + SkillsSection skills = berth(sections, SkillsSection.class, SKILL_KEYS); + RowsSection languages = berth(sections, RowsSection.class, LANGUAGE_KEYS); + EntriesSection education = berth(sections, EntriesSection.class, EDUCATION_KEYS); + // Tools first: "Technical Tools" names no other berth, but the + // summary keys are broad and a document is free to title its + // closing strip loosely. + ParagraphSection tools = berth(sections, ParagraphSection.class, TOOL_KEYS); + ParagraphSection summary = berth(sections, ParagraphSection.class, SUMMARY_KEYS); + EntriesSection experience = berth(sections, EntriesSection.class, EXPERIENCE_KEYS); + EntriesSection certifications = + berth(sections, EntriesSection.class, CERTIFICATION_KEYS); + EntriesSection achievements = + berth(sections, EntriesSection.class, ACHIEVEMENT_KEYS); + + boolean hasCredentials = SectionLookup.hasContent(certifications) + || SectionLookup.hasContent(achievements); + boolean hasTools = SectionLookup.hasContent(tools); + + document.pageFlow(page -> page + .name("CharcoalGoldCv") + .spacing(0) + .addRow("Body", row -> { + row.name("Body"); + row.spacing(0); + row.weights(SIDEBAR_WEIGHT, MAIN_WEIGHT); + row.addSection("Sidebar", side -> + CharcoalGoldAside.compose(side, doc.identity(), + skills, languages, education)); + row.addSection("MainColumn", main -> { + CharcoalGoldMain.compose(main, doc.identity(), summary, experience); + if (hasCredentials) { + CharcoalGoldCredentials.renderCredentials(main, + certifications, achievements); + } + if (hasTools) { + CharcoalGoldCredentials.renderTools(main, tools); + } + }); + })); + } + + /** + * The first section of the wanted shape whose title names this berth, + * or {@code null} when the document fills no such berth. + */ + private static T berth(List sections, + Class type, + List keys) { + for (CvSection section : sections) { + if (!type.isInstance(section)) { + continue; + } + for (String key : keys) { + if (SectionLookup.titleContains(section.title(), key)) { + return type.cast(section); + } + } + } + return null; + } + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldAside.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldAside.java new file mode 100644 index 000000000..b2d71ce73 --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldAside.java @@ -0,0 +1,386 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.dsl.ImageBuilder; +import com.demcha.compose.document.dsl.ParagraphBuilder; +import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.dsl.ShapeContainerBuilder; +import com.demcha.compose.document.image.DocumentImageData; +import com.demcha.compose.document.image.DocumentImageFitMode; +import com.demcha.compose.document.node.DocumentLinkOptions; +import com.demcha.compose.document.node.DocumentNode; +import com.demcha.compose.document.node.HorizontalAlign; +import com.demcha.compose.document.node.InlineImageAlignment; +import com.demcha.compose.document.node.RowVerticalAlign; +import com.demcha.compose.document.node.TextAlign; +import com.demcha.compose.document.style.ClipPolicy; +import com.demcha.compose.document.style.DocumentInsets; +import com.demcha.compose.document.style.DocumentRowColumn; +import com.demcha.compose.document.style.DocumentStroke; +import com.demcha.compose.document.templates.core.identity.Link; +import com.demcha.compose.document.templates.cv.components.SectionLookup; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.CvIdentity; +import com.demcha.compose.document.templates.cv.data.CvRow; +import com.demcha.compose.document.templates.cv.data.CvSkill; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import com.demcha.compose.document.templates.cv.data.SkillGroup; +import com.demcha.compose.document.templates.cv.data.SkillsSection; + +import java.util.ArrayList; +import java.util.List; + +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ACCENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.BLOCK_TO_DIVIDER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.BODY_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CONTACT_PITCH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.DETAIL_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.DIVIDER_TO_HEADING; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EDUCATION_ENTRY_GAP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EDUCATION_INDENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EDUCATION_LINE_PITCH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.HEADING_TO_BODY; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.LANGUAGE_NAME_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.LANGUAGE_PITCH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.PHOTO_DIAMETER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.PHOTO_RING_WIDTH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.PHOTO_TO_CONTACT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RATING_DOT_DIAMETER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RATING_EMPTY; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_THICKNESS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_INK; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_PAD; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_PAD_TOP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SKILL_BULLET_COLUMN; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SKILL_BULLET_DIAMETER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SKILL_NAME_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SKILL_PITCH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.gap; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.textStyle; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.inlineGap; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.layeredRow; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.sidebarHeading; + +/** + * The charcoal left column: the ringed photograph, the contact channels + * behind their marks, the rated skills, the languages and the degrees, with + * a hairline between each block. + */ +final class CharcoalGoldAside { + + /** + * The contact heading. It is not read from the document because the + * channels are not a section — they come off the identity, which carries + * no title of its own. + */ + static final String CONTACT_HEADING = "CONTACT"; + + /** How many dots a skill rating is drawn out of. */ + static final int RATING_SCALE = 5; + + private CharcoalGoldAside() { + } + + static void compose(SectionBuilder side, + CvIdentity identity, + SkillsSection skills, + RowsSection languages, + EntriesSection education) { + side.name("Sidebar"); + side.spacing(0); + // No bottom padding: the sidebar's fill is a page background that + // already reaches the paper edge, so padding here would only shorten + // the column. + side.padding((float) SIDEBAR_PAD_TOP, (float) SIDEBAR_PAD, 0f, (float) SIDEBAR_PAD); + + identity.portrait().ifPresent(photo -> renderPhoto(side, photo)); + renderContact(side, identity, identity.portrait().isPresent()); + if (SectionLookup.hasContent(skills)) { + divider(side, "AfterContact"); + renderSkills(side, skills); + } + if (SectionLookup.hasContent(languages)) { + divider(side, "AfterSkills"); + renderLanguages(side, languages); + } + if (SectionLookup.hasContent(education)) { + divider(side, "AfterLanguages"); + renderEducation(side, education); + } + } + + private static void divider(SectionBuilder side, String name) { + side.addLine(line -> line + .name("Divider_" + name) + .fill() + .thickness(RULE_THICKNESS) + .color(SIDEBAR_RULE) + .margin(new DocumentInsets(BLOCK_TO_DIVIDER, 0, 0, 0))); + } + + // -- photograph ------------------------------------------------------ + + /** + * The photograph, clipped to a disc inside a pale ring. It is drawn with + * {@code COVER}, so a picture that is not square fills the circle and is + * cut rather than squeezed. + */ + private static void renderPhoto(SectionBuilder side, DocumentImageData photo) { + DocumentNode portrait = new ImageBuilder() + .name("PortraitImage") + .source(photo) + .size(PHOTO_DIAMETER, PHOTO_DIAMETER) + .fitMode(DocumentImageFitMode.COVER) + .build(); + DocumentNode circle = new ShapeContainerBuilder() + .name("ProfilePhoto") + .circle(PHOTO_DIAMETER) + .clipPolicy(ClipPolicy.CLIP_PATH) + .fillColor(SIDEBAR) + .stroke(DocumentStroke.of(RULE, PHOTO_RING_WIDTH)) + .center(portrait) + .build(); + side.addAligned(HorizontalAlign.CENTER, circle); + } + + // -- contact --------------------------------------------------------- + + /** + * The contact channels, in the order the design sets them: phone, email, + * address, then whatever links the identity carries. The phone and the + * email carry {@code tel:} and {@code mailto:} targets built from the + * values, and each link its own url. + */ + private static void renderContact(SectionBuilder side, CvIdentity identity, + boolean afterPhoto) { + side.addSection("Contact", block -> { + block.spacing(0); + block.margin(afterPhoto ? (float) PHOTO_TO_CONTACT : 0f, 0f, 0f, 0f); + sidebarHeading(block, CONTACT_HEADING); + List channels = channels(identity); + for (int i = 0; i < channels.size(); i++) { + Channel channel = channels.get(i); + boolean first = i == 0; + int index = i; + block.addParagraph(p -> { + p.name("Contact_" + index); + p.inlineSvgIcon(CharcoalGoldIcons.icon(channel.token()), + CharcoalGoldIcons.CONTACT_SIZE, InlineImageAlignment.CENTER); + inlineGap(p, textStyle(DETAIL_SIZE, SIDEBAR_INK, false)); + if (channel.href() == null) { + p.inlineText(channel.value(), textStyle(DETAIL_SIZE, SIDEBAR_INK, false)); + } else { + p.inlineText(channel.value(), textStyle(DETAIL_SIZE, SIDEBAR_INK, false), + new DocumentLinkOptions(channel.href())); + } + p.margin(first ? (float) HEADING_TO_BODY : 0f, 0f, + (float) gap(CONTACT_PITCH, DETAIL_SIZE), 0f); + }); + } + }); + } + + private static List channels(CvIdentity identity) { + List channels = new ArrayList<>(); + String phone = identity.contact().phone(); + channels.add(new Channel(CharcoalGoldIcons.PHONE, phone, telUri(phone))); + String email = identity.contact().email(); + channels.add(new Channel(CharcoalGoldIcons.EMAIL, email, "mailto:" + email)); + channels.add(new Channel(CharcoalGoldIcons.LOCATION, + identity.contact().address(), null)); + for (Link link : identity.links()) { + channels.add(new Channel(linkToken(link), link.label(), link.url())); + } + return channels; + } + + /** + * The dial target for a phone number: its digits, keeping a leading + * {@code +} so an international number stays international. + */ + private static String telUri(String phone) { + String digits = phone.replaceAll("[^0-9]", ""); + return digits.isEmpty() + ? null + : "tel:" + (phone.trim().startsWith("+") ? "+" : "") + digits; + } + + /** + * The mark for a link: the network's own when it names one, the globe + * otherwise. + */ + private static String linkToken(Link link) { + String haystack = SectionLookup.normalize(link.label() + " " + link.url()); + return haystack.contains("linkedin") + ? CharcoalGoldIcons.LINKEDIN + : CharcoalGoldIcons.WEBSITE; + } + + private record Channel(String token, String value, String href) { + } + + // -- skills ---------------------------------------------------------- + + /** + * Skill rows: a gold bullet, the name, and a rating drawn as five dots + * of which the level fills the nearest whole number. + * + *

A skill the document leaves unlevelled draws no rating at all, + * rather than five empty dots that read as a score of zero.

+ */ + private static void renderSkills(SectionBuilder side, SkillsSection skills) { + side.addSection("Skills", block -> { + block.spacing(0); + block.margin((float) DIVIDER_TO_HEADING, 0f, 0f, 0f); + sidebarHeading(block, skills.title()); + List items = flatten(skills); + for (int i = 0; i < items.size(); i++) { + CvSkill skill = items.get(i); + boolean first = i == 0; + int index = i; + layeredRow(block, "Skill_" + index, + first ? HEADING_TO_BODY : 0.0, + gap(SKILL_PITCH, DETAIL_SIZE), + row -> { + row.verticalAlign(RowVerticalAlign.CENTER); + row.columns( + DocumentRowColumn.fixed(SKILL_BULLET_COLUMN), + DocumentRowColumn.weight(SKILL_NAME_WEIGHT), + DocumentRowColumn.weight(1.0 - SKILL_NAME_WEIGHT)); + row.addParagraph(p -> p + .name("SkillBullet_" + index) + .align(TextAlign.CENTER) + // Styled even though it holds no text: a + // paragraph takes its line box from its + // type whether or not a glyph uses it, and + // the default size would set the row's + // pitch instead of this one. + .textStyle(textStyle(DETAIL_SIZE, SIDEBAR_INK, false)) + .dot(SKILL_BULLET_DIAMETER, ACCENT)); + row.addParagraph(p -> p + .name("SkillName_" + index) + .text(skill.name()) + .textStyle(textStyle(DETAIL_SIZE, SIDEBAR_INK, false))); + row.addParagraph(p -> renderRating(p, index, skill)); + }); + } + }); + } + + private static void renderRating(ParagraphBuilder p, int index, CvSkill skill) { + p.name("SkillRating_" + index); + p.align(TextAlign.RIGHT); + if (skill.level().isEmpty()) { + return; + } + long filled = Math.round(Math.max(0.0, Math.min(1.0, skill.level().getAsDouble())) + * RATING_SCALE); + for (int d = 0; d < RATING_SCALE; d++) { + p.dot(RATING_DOT_DIAMETER, d < filled ? ACCENT : RATING_EMPTY); + if (d < RATING_SCALE - 1) { + p.inlineText(" ", textStyle(DETAIL_SIZE, SIDEBAR_INK, false)); + } + } + } + + /** + * The section's skills as one list. This design sets no group headings, + * so a document that groups its skills gets them in the order the groups + * were declared. + */ + private static List flatten(SkillsSection section) { + List out = new ArrayList<>(); + for (SkillGroup group : section.groups()) { + out.addAll(group.entries()); + } + return out; + } + + // -- languages ------------------------------------------------------- + + /** + * Language rows: the name and the level in two columns, so the levels + * line up whatever the names measure. + * + *

They are {@link CvRow}s rather than levelled skills because this + * design writes the level out — "Native", "B2 – Upper Intermediate" — + * which a number could not carry back. The {@code RowStyle} is not + * read.

+ */ + private static void renderLanguages(SectionBuilder side, RowsSection languages) { + side.addSection("Languages", block -> { + block.spacing(0); + block.margin((float) DIVIDER_TO_HEADING, 0f, 0f, 0f); + sidebarHeading(block, languages.title()); + List items = languages.rows(); + for (int i = 0; i < items.size(); i++) { + CvRow language = items.get(i); + boolean first = i == 0; + int index = i; + layeredRow(block, "Language_" + index, + first ? HEADING_TO_BODY : 0.0, + gap(LANGUAGE_PITCH, BODY_SIZE), + row -> { + row.weights(LANGUAGE_NAME_WEIGHT, 1.0 - LANGUAGE_NAME_WEIGHT); + row.addParagraph(p -> p + .name("LanguageName_" + index) + .text(language.label()) + .textStyle(textStyle(BODY_SIZE, SIDEBAR_INK, false))); + row.addParagraph(p -> p + .name("LanguageLevel_" + index) + .text(language.body()) + .textStyle(textStyle(BODY_SIZE, SIDEBAR_INK, false))); + }); + } + }); + } + + // -- education ------------------------------------------------------- + + /** + * Each degree as three lines: the qualification behind a gold dot, then + * the institution and the years indented under it. + */ + private static void renderEducation(SectionBuilder side, EntriesSection education) { + side.addSection("Education", block -> { + block.spacing(0); + block.margin((float) DIVIDER_TO_HEADING, 0f, 0f, 0f); + sidebarHeading(block, education.title()); + List items = education.entries(); + for (int i = 0; i < items.size(); i++) { + CvEntry entry = items.get(i); + boolean first = i == 0; + int index = i; + block.addSection("EducationEntry_" + index, e -> { + e.spacing(0); + e.margin(first ? (float) HEADING_TO_BODY : (float) EDUCATION_ENTRY_GAP, + 0f, 0f, 0f); + e.addParagraph(p -> { + p.name("Degree_" + index); + p.dot(RATING_DOT_DIAMETER, ACCENT); + inlineGap(p, textStyle(DETAIL_SIZE, SIDEBAR_INK, false)); + p.inlineText(entry.title(), textStyle(DETAIL_SIZE, SIDEBAR_INK, true)); + p.margin(0f, 0f, (float) gap(EDUCATION_LINE_PITCH, DETAIL_SIZE), 0f); + }); + e.addSection("EducationDetail_" + index, d -> { + d.spacing(0); + d.padding(0f, 0f, 0f, (float) EDUCATION_INDENT); + d.addParagraph(p -> p + .name("Institution_" + index) + .text(entry.subtitle()) + .textStyle(textStyle(DETAIL_SIZE, SIDEBAR_INK, false)) + .margin(0f, 0f, + (float) gap(EDUCATION_LINE_PITCH, DETAIL_SIZE), 0f)); + d.addParagraph(p -> p + .name("Period_" + index) + .text(entry.date()) + .textStyle(textStyle(DETAIL_SIZE, SIDEBAR_INK, false))); + }); + }); + } + }); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldCredentials.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldCredentials.java new file mode 100644 index 000000000..5331019bf --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldCredentials.java @@ -0,0 +1,170 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.node.TextAlign; +import com.demcha.compose.document.style.DocumentInsets; +import com.demcha.compose.document.templates.cv.components.SectionLookup; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; + +import java.util.List; + +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIALS_TO_TOOLS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_ENTRY_GAP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_GUTTER_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_HALF_GUTTER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_HEADING_TO_BODY; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_ICON_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_LEFT_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_LINE_GAP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_RIGHT_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.DETAIL_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ENTRIES_TO_RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.HEADING_TO_BODY; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.INK; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_THICKNESS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_TO_CREDENTIALS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SMALL_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.TOOL_SEPARATOR; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.textStyle; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.layeredRow; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.mainHeading; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.plainHeading; + +/** + * The two closing blocks: the credentials in a pair of columns divided by a + * hairline, and the tools strip beneath them. + */ +final class CharcoalGoldCredentials { + + private CharcoalGoldCredentials() { + } + + /** + * The credential pair. + * + *

Two cells, not three: the gutter is split down the middle and half + * given to each column, so the divider can be the right-hand column's own + * left border and take its height from that column's content. A third + * cell holding a line would need a height, and a height here could only + * be computed against today's text.

+ */ + static void renderCredentials(SectionBuilder main, + EntriesSection certifications, + EntriesSection achievements) { + boolean left = SectionLookup.hasContent(certifications); + boolean right = SectionLookup.hasContent(achievements); + main.addSection("Credentials", block -> { + block.spacing(0); + block.margin((float) ENTRIES_TO_RULE, 0f, 0f, 0f); + block.addLine(line -> line + .name("CredentialsRule") + .fill() + .thickness(RULE_THICKNESS) + .color(RULE)); + layeredRow(block, "CredentialColumns", RULE_TO_CREDENTIALS, 0.0, row -> { + row.spacing(0); + row.weights( + CREDENTIAL_LEFT_WEIGHT + CREDENTIAL_GUTTER_WEIGHT / 2.0, + CREDENTIAL_RIGHT_WEIGHT + CREDENTIAL_GUTTER_WEIGHT / 2.0); + row.addSection("Certifications", column -> { + column.padding(0f, (float) CREDENTIAL_HALF_GUTTER, 0f, 0f); + if (left) { + renderColumn(column, "Certification", certifications); + } + }); + row.addSection("Achievements", column -> { + // The divider is this column's left border, so it stops + // where the column's own content does. + column.accentLeft(RULE, RULE_THICKNESS); + column.padding(0f, 0f, 0f, (float) CREDENTIAL_HALF_GUTTER); + if (right) { + renderColumn(column, "Achievement", achievements); + } + }); + }); + }); + } + + /** One credential column: a plain heading, then a marked entry per row. */ + private static void renderColumn(SectionBuilder column, String prefix, + EntriesSection credentials) { + column.spacing(0); + column.keepTogether(); + plainHeading(column, credentials.title()); + List items = credentials.entries(); + for (int i = 0; i < items.size(); i++) { + CvEntry item = items.get(i); + boolean first = i == 0; + boolean last = i == items.size() - 1; + int index = i; + layeredRow(column, prefix + "_" + index, + first ? CREDENTIAL_HEADING_TO_BODY : CREDENTIAL_ENTRY_GAP, 0.0, + row -> { + row.spacing(0); + row.weights(CREDENTIAL_ICON_WEIGHT, 1.0 - CREDENTIAL_ICON_WEIGHT); + row.addSection(prefix + "Icon_" + index, cell -> { + cell.spacing(0); + if (!item.icon().isBlank()) { + cell.addSvgIcon(CharcoalGoldIcons.icon(item.icon()), + CharcoalGoldIcons.CREDENTIAL_SIZE); + } + }); + row.addSection(prefix + "Text_" + index, text -> { + text.spacing(0); + text.addParagraph(p -> { + p.name(prefix + "Name_" + index) + .textStyle(textStyle(DETAIL_SIZE, INK, true)); + CharcoalGoldText.title(p, item, + textStyle(DETAIL_SIZE, INK, true)); + p.margin(0f, 0f, (float) CREDENTIAL_LINE_GAP, 0f); + }); + text.addParagraph(p -> p + .name(prefix + "Issuer_" + index) + .text(item.subtitle()) + .textStyle(textStyle(SMALL_SIZE, INK, false)) + .margin(0f, 0f, (float) CREDENTIAL_LINE_GAP, 0f)); + text.addParagraph(p -> p + .name(prefix + "Year_" + index) + .text(item.date()) + .textStyle(textStyle(SMALL_SIZE, INK, false))); + }); + }); + if (!last) { + column.addLine(line -> line + .name(prefix + "Rule_" + index) + .fill() + .thickness(RULE_THICKNESS) + .color(RULE) + .margin(new DocumentInsets(CREDENTIAL_ENTRY_GAP, 0, 0, 0))); + } + } + } + + /** + * The closing strip: one line of tools, centred, with a pale pipe + * between neighbours. + */ + static void renderTools(SectionBuilder main, ParagraphSection tools) { + List items = CharcoalGoldText.lines(tools.body()); + main.addSection("TechnicalTools", block -> { + block.spacing(0); + block.margin((float) CREDENTIALS_TO_TOOLS, 0f, 0f, 0f); + block.keepWithNext(); + mainHeading(block, tools.title()); + block.addParagraph(p -> { + p.name("ToolsStrip"); + p.align(TextAlign.CENTER); + p.margin((float) HEADING_TO_BODY, 0f, 0f, 0f); + for (int i = 0; i < items.size(); i++) { + if (i > 0) { + p.inlineText(TOOL_SEPARATOR, textStyle(DETAIL_SIZE, RULE, false)); + } + p.inlineText(items.get(i), textStyle(DETAIL_SIZE, INK, false)); + } + }); + }); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldIcons.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldIcons.java new file mode 100644 index 000000000..40627e8cf --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldIcons.java @@ -0,0 +1,89 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.svg.SvgIcon; + +import java.io.IOException; +import java.io.InputStream; +import java.io.UncheckedIOException; +import java.nio.charset.StandardCharsets; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Classpath loader for the Charcoal Gold CV marks — the five contact glyphs + * in the sidebar and the four credential marks in the closing columns. + * + *

They ship inside the templates artifact under + * {@code templates/cv/charcoal-gold/icons/} as SVG, so they scale with the + * box they are drawn into rather than being resampled. Parsed icons are + * cached per token, so a sheet that repeats a mark reads each file once per + * JVM.

+ * + *

The credential marks are the vocabulary a document names through + * {@code CvEntry.icon()}. It is scoped to this preset — another preset + * packages its own set — so {@link #ENTRY_TOKENS} is the list a document can + * choose from here.

+ */ +final class CharcoalGoldIcons { + + static final String PHONE = "phone"; + static final String EMAIL = "email"; + static final String LOCATION = "location"; + static final String WEBSITE = "website"; + static final String LINKEDIN = "linkedin"; + + private static final String ICON_ROOT = "/templates/cv/charcoal-gold/icons/"; + + /** Contact glyphs are set at the size of the text beside them. */ + static final double CONTACT_SIZE = 9.0; + + /** A credential mark stands on its own, so it is drawn larger. */ + static final double CREDENTIAL_SIZE = 15.0; + + /** The marks a document may name on a credential entry. */ + static final Set ENTRY_TOKENS = + Set.of("certificate", "trophy", "growth", "star"); + + private static final Set TOKENS = + Set.of(PHONE, EMAIL, LOCATION, WEBSITE, LINKEDIN, + "certificate", "trophy", "growth", "star"); + + private static final Map CACHE = new ConcurrentHashMap<>(); + + private CharcoalGoldIcons() { + } + + /** + * Reads one mark. + * + * @param token one of the packaged tokens + * @return the parsed icon + * @throws IllegalArgumentException when the token names no packaged mark, + * listing the ones a document may choose — an icon token is data, + * so a wrong one is a data error + */ + static SvgIcon icon(String token) { + if (!TOKENS.contains(token)) { + throw new IllegalArgumentException( + "Unknown charcoal gold CV icon token '" + token + + "'. This preset packages " + ENTRY_TOKENS.stream().sorted().toList() + + " for a credential mark."); + } + return CACHE.computeIfAbsent(token, CharcoalGoldIcons::read); + } + + private static SvgIcon read(String token) { + String resourcePath = ICON_ROOT + token + ".svg"; + try (InputStream input = CharcoalGoldIcons.class.getResourceAsStream(resourcePath)) { + if (input == null) { + throw new IllegalStateException( + "Missing charcoal gold CV icon: " + resourcePath); + } + return SvgIcon.parse(new String(input.readAllBytes(), StandardCharsets.UTF_8)); + } catch (IOException e) { + throw new UncheckedIOException( + "Failed to read charcoal gold CV icon: " + resourcePath, e); + } + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldMain.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldMain.java new file mode 100644 index 000000000..60ca50868 --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldMain.java @@ -0,0 +1,233 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.node.LayerAlign; +import com.demcha.compose.document.node.ListMarker; +import com.demcha.compose.document.style.DocumentInsets; +import com.demcha.compose.document.templates.cv.components.SectionLookup; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.CvIdentity; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; + +import java.util.List; + +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ACCENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.BODY_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.DATE_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.DETAIL_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EMPLOYER_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EMPLOYER_TO_HIGHLIGHTS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ENTRY_GAP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ENTRY_INDENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ENTRY_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EXPERIENCE_TO_ENTRIES; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.HIGHLIGHT_ITEM_GAP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.HIGHLIGHT_LEADING; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.INK; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MAIN_PAD_LEFT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MAIN_PAD_RIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MAIN_PAD_TOP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MARKER_DIAMETER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MARKER_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MASTHEAD_RULE_THICKNESS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MASTHEAD_RULE_WIDTH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MASTHEAD_TO_TITLE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.NAME_FAMILY_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.NAME_GIVEN_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.JOB_TITLE_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ROLE_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ROLE_TO_EMPLOYER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_THICKNESS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_TO_SUMMARY; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SMALL_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SUMMARY_LEADING; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SUMMARY_TO_EXPERIENCE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.TITLE_TO_RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.textStyle; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.tracked; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.layeredRow; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.mainHeading; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.marker; + +/** + * The paper right column: the two-tone name over its tracked role, the + * summary, and the roles held on a dated rail. + */ +final class CharcoalGoldMain { + + private CharcoalGoldMain() { + } + + static void compose(SectionBuilder main, + CvIdentity identity, + ParagraphSection summary, + EntriesSection experience) { + main.name("MainColumn"); + main.spacing(0); + main.padding((float) MAIN_PAD_TOP, (float) MAIN_PAD_RIGHT, 0f, (float) MAIN_PAD_LEFT); + renderMasthead(main, identity); + if (SectionLookup.hasContent(summary)) { + renderSummary(main, summary); + } + if (SectionLookup.hasContent(experience)) { + renderExperience(main, experience); + } + } + + // -- masthead -------------------------------------------------------- + + /** + * The name in two tones and two sizes — the given name in ink, the + * family name larger and in gold — then the role tracked out, and the + * short gold rule that closes the block. + * + *

The two halves come from {@code CvName}, which is why this preset + * wants a structured name rather than one string: nothing else could + * tell it where to change colour.

+ */ + private static void renderMasthead(SectionBuilder main, CvIdentity identity) { + main.addSection("Masthead", block -> { + block.spacing(0); + block.addParagraph(p -> p + .name("GivenName") + .text(identity.name().first()) + .textStyle(textStyle(NAME_GIVEN_SIZE, INK, false)) + .lineSpacing(1.0)); + block.addParagraph(p -> p + .name("FamilyName") + .text(identity.name().last()) + .textStyle(textStyle(NAME_FAMILY_SIZE, ACCENT, false)) + .lineSpacing(1.0) + .margin(0f, 0f, (float) MASTHEAD_TO_TITLE, 0f)); + block.addParagraph(p -> p + .name("JobTitle") + .text(tracked(identity.jobTitle())) + .textStyle(textStyle(JOB_TITLE_SIZE, INK, false)) + .margin(0f, 0f, (float) TITLE_TO_RULE, 0f)); + block.addLine(line -> line + .name("MastheadRule") + .horizontal(MASTHEAD_RULE_WIDTH) + .thickness(MASTHEAD_RULE_THICKNESS) + .color(ACCENT)); + }); + } + + // -- summary --------------------------------------------------------- + + /** + * The opening block, one paragraph per line of the section's body. This + * design gives it no heading, so the section's title is not drawn. + */ + private static void renderSummary(SectionBuilder main, ParagraphSection summary) { + main.addSection("Summary", block -> { + block.spacing(0); + block.margin((float) RULE_TO_SUMMARY, 0f, 0f, 0f); + List paragraphs = CharcoalGoldText.lines(summary.body()); + for (int i = 0; i < paragraphs.size(); i++) { + int index = i; + block.addParagraph(p -> p + .name("Summary_" + index) + .text(paragraphs.get(index)) + .textStyle(textStyle(BODY_SIZE, INK, false)) + .lineSpacing(SUMMARY_LEADING)); + } + }); + } + + // -- experience ------------------------------------------------------ + + /** + * The roles held: the dates in gold at the left, and the entry itself + * behind a hairline rail with a ringed marker capping each role. + */ + private static void renderExperience(SectionBuilder main, EntriesSection experience) { + main.addSection("Experience", block -> { + block.spacing(0); + block.margin((float) SUMMARY_TO_EXPERIENCE, 0f, 0f, 0f); + block.keepTogether(); + mainHeading(block, experience.title()); + List entries = experience.entries(); + for (int i = 0; i < entries.size(); i++) { + CvEntry entry = entries.get(i); + boolean first = i == 0; + boolean last = i == entries.size() - 1; + int index = i; + layeredRow(block, "ExperienceEntry_" + index, + first ? EXPERIENCE_TO_ENTRIES : 0.0, 0.0, + row -> { + row.spacing(0); + // Two cells, not three. Giving the marker a column + // of its own would put it in a different node from + // the rail, leaving the rail free to paint straight + // through it; the date column carries that width + // instead, so the body's left border lands in + // exactly the same place. + row.weights(DATE_WEIGHT + MARKER_WEIGHT, ENTRY_WEIGHT); + row.addParagraph(p -> p + .name("Period_" + index) + .text(entry.date()) + .textStyle(textStyle(DETAIL_SIZE, ACCENT, false))); + row.addSection("EntryBody_" + index, body -> + renderEntryBody(body, entry, index, last)); + }); + } + }); + } + + private static void renderEntryBody(SectionBuilder body, CvEntry entry, + int index, boolean last) { + body.spacing(0); + body.accentLeft(RULE, RULE_THICKNESS); + body.padding(0f, 0f, last ? 0f : (float) ENTRY_GAP, (float) ENTRY_INDENT); + renderRoleWithMarker(body, entry, index); + body.addParagraph(p -> p + .name("Employer_" + index) + .text(employerLine(entry)) + .textStyle(textStyle(EMPLOYER_SIZE, INK, true)) + .margin(0f, 0f, (float) EMPLOYER_TO_HIGHLIGHTS, 0f)); + List highlights = CharcoalGoldText.lines(entry.body()); + if (!highlights.isEmpty()) { + body.addList(list -> list + .name("Highlights_" + index) + .items(highlights) + .marker(ListMarker.bullet()) + .textStyle(textStyle(SMALL_SIZE, INK, false)) + .itemSpacing(HIGHLIGHT_ITEM_GAP) + .lineSpacing(HIGHLIGHT_LEADING)); + } + } + + /** The employer, and the place beside it behind a raised dot. */ + private static String employerLine(CvEntry entry) { + return entry.place().isBlank() + ? entry.subtitle() + : entry.subtitle() + " · " + entry.place(); + } + + /** + * The role, with the ring positioned back over the rail beside it. + * + *

The marker is placed from the title's own layer stack rather than + * from the row, so it sits on the role's first line whatever the title + * measures — and half its diameter left of the body's border, which puts + * the ring centred on the rail.

+ */ + private static void renderRoleWithMarker(SectionBuilder body, CvEntry entry, int index) { + SectionBuilder titleLayer = new SectionBuilder(); + titleLayer.name("RoleLayer_" + index); + titleLayer.spacing(0); + titleLayer.addParagraph(p -> { + p.name("Role_" + index).textStyle(textStyle(ROLE_SIZE, INK, true)); + CharcoalGoldText.title(p, entry, textStyle(ROLE_SIZE, INK, true)); + }); + body.addLayerStack(stack -> stack + .name("MarkerCap_" + index) + .margin(new DocumentInsets(0, 0, ROLE_TO_EMPLOYER, 0)) + .layer(titleLayer.build(), LayerAlign.TOP_LEFT, 0) + .position(marker(index), + -(ENTRY_INDENT + MARKER_DIAMETER / 2.0), 0.0, + LayerAlign.TOP_LEFT, 1)); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldStyles.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldStyles.java new file mode 100644 index 000000000..a8c3eda27 --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldStyles.java @@ -0,0 +1,200 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.style.DocumentColor; +import com.demcha.compose.document.style.DocumentTextDecoration; +import com.demcha.compose.document.style.DocumentTextStyle; +import com.demcha.compose.document.templates.core.text.TextStyles; +import com.demcha.compose.font.FontName; + +/** + * The measured geometry, palette and type scale of the Charcoal Gold CV. + * + *

Vertical rhythm here is authored as a pitch — the distance + * from one line's top to the next — rather than as a margin, which is how + * the design was drawn. {@link #gap} turns a pitch into the margin to set, + * by subtracting the line box the type already occupies.

+ */ +final class CharcoalGoldStyles { + + private CharcoalGoldStyles() { + } + + // -- page ------------------------------------------------------------ + + static final double PAGE_WIDTH = 595.276; + + static final double SIDEBAR_WEIGHT = 0.3197; + static final double MAIN_WEIGHT = 1.0 - SIDEBAR_WEIGHT; + + static final double SIDEBAR_PAD = 17.0; + static final double SIDEBAR_PAD_TOP = 24.3; + static final double SIDEBAR_CONTENT_WIDTH = + PAGE_WIDTH * SIDEBAR_WEIGHT - 2.0 * SIDEBAR_PAD; + + static final double MAIN_PAD_LEFT = 23.7; + static final double MAIN_PAD_RIGHT = 28.8; + static final double MAIN_PAD_TOP = 25.7; + static final double MAIN_CONTENT_WIDTH = + PAGE_WIDTH * MAIN_WEIGHT - MAIN_PAD_LEFT - MAIN_PAD_RIGHT; + + // -- type ------------------------------------------------------------ + + static final FontName FONT = FontName.LATO; + + static final double BODY_SIZE = 9.1; + static final double NAME_GIVEN_SIZE = 35.7; + static final double NAME_FAMILY_SIZE = 45.5; + static final double JOB_TITLE_SIZE = 11.6; + static final double MAIN_HEADING_SIZE = 11.0; + static final double SIDEBAR_HEADING_SIZE = 10.0; + static final double ROLE_SIZE = 10.5; + static final double EMPLOYER_SIZE = 6.9; + static final double DETAIL_SIZE = 7.8; + static final double SMALL_SIZE = 7.9; + + /** The share of its type size a line box occupies at the default leading. */ + static final double LINE_FACTOR = 1.2; + + // -- palette --------------------------------------------------------- + + static final DocumentColor SIDEBAR = DocumentColor.rgb(39, 45, 50); + static final DocumentColor PAPER = DocumentColor.rgb(254, 254, 254); + static final DocumentColor ACCENT = DocumentColor.rgb(186, 148, 88); + static final DocumentColor INK = DocumentColor.rgb(39, 45, 50); + static final DocumentColor SIDEBAR_INK = DocumentColor.rgb(251, 251, 251); + static final DocumentColor RULE = DocumentColor.rgb(218, 218, 219); + static final DocumentColor SIDEBAR_RULE = DocumentColor.rgb(61, 67, 69); + static final DocumentColor RATING_EMPTY = DocumentColor.rgb(119, 122, 125); + + // -- ornaments ------------------------------------------------------- + + static final double ACCENT_BAR_WIDTH = 1.7; + static final double HEADING_INDENT = 9.0; + static final double RULE_THICKNESS = 0.6; + static final double MARKER_DIAMETER = 6.2; + static final double RATING_DOT_DIAMETER = 4.5; + static final double SKILL_BULLET_DIAMETER = 2.3; + + /** + * The bullet gets a column of its own rather than an inline run plus + * counted spaces: its width is the design's own name indent, so neither + * the mark nor the name depends on how wide a space happens to be. + */ + static final double SKILL_BULLET_COLUMN = 9.5; + + static final double PHOTO_RING_WIDTH = 1.2; + static final double PHOTO_DIAMETER = SIDEBAR_CONTENT_WIDTH * 0.802; + + // -- sidebar rhythm -------------------------------------------------- + + static final double PHOTO_TO_CONTACT = 29.4; + static final double HEADING_TO_BODY = 12.0; + static final double BLOCK_TO_DIVIDER = 19.0; + static final double DIVIDER_TO_HEADING = 17.0; + static final double CONTACT_PITCH = 19.2; + static final double SKILL_PITCH = 16.6; + static final double LANGUAGE_PITCH = 16.9; + static final double EDUCATION_LINE_PITCH = 12.4; + static final double EDUCATION_ENTRY_GAP = 13.7; + static final double EDUCATION_INDENT = 12.4; + + static final double LANGUAGE_NAME_WEIGHT = 0.36; + static final double SKILL_NAME_WEIGHT = 0.72; + + // -- main rhythm ----------------------------------------------------- + + static final double MASTHEAD_TO_TITLE = 0.0; + static final double TITLE_TO_RULE = 12.0; + static final double MASTHEAD_RULE_WIDTH = MAIN_CONTENT_WIDTH * 0.093; + static final double MASTHEAD_RULE_THICKNESS = 1.4; + static final double RULE_TO_SUMMARY = 17.8; + static final double SUMMARY_LEADING = 1.38; + static final double SUMMARY_TO_EXPERIENCE = 28.4; + static final double EXPERIENCE_TO_ENTRIES = 19.0; + static final double ENTRY_GAP = 19.6; + static final double ENTRIES_TO_RULE = 18.0; + static final double CREDENTIALS_TO_TOOLS = 13.7; + + static final double DATE_WEIGHT = 0.194; + static final double MARKER_WEIGHT = MARKER_DIAMETER / MAIN_CONTENT_WIDTH; + static final double ENTRY_WEIGHT = 1.0 - DATE_WEIGHT - MARKER_WEIGHT; + static final double ENTRY_INDENT = 16.0; + static final double ROLE_TO_EMPLOYER = 3.0; + static final double EMPLOYER_TO_HIGHLIGHTS = 7.0; + static final double HIGHLIGHT_ITEM_GAP = 4.0; + static final double HIGHLIGHT_LEADING = 1.3; + + // -- credentials ----------------------------------------------------- + + static final double CREDENTIAL_LEFT_WEIGHT = 0.402; + static final double CREDENTIAL_GUTTER_WEIGHT = 0.124; + static final double CREDENTIAL_RIGHT_WEIGHT = + 1.0 - CREDENTIAL_LEFT_WEIGHT - CREDENTIAL_GUTTER_WEIGHT; + static final double CREDENTIAL_ICON_WEIGHT = 0.14; + static final double CREDENTIAL_HALF_GUTTER = + MAIN_CONTENT_WIDTH * CREDENTIAL_GUTTER_WEIGHT / 2.0; + static final double RULE_TO_CREDENTIALS = 22.0; + static final double CREDENTIAL_ENTRY_GAP = 6.5; + static final double CREDENTIAL_HEADING_TO_BODY = 17.3; + static final double CREDENTIAL_LINE_GAP = 2.0; + + /** The separator between two tools on the closing strip. */ + static final String TOOL_SEPARATOR = " | "; + + // -- helpers --------------------------------------------------------- + + static DocumentTextStyle textStyle(double size, DocumentColor color, boolean bold) { + return TextStyles.of(FONT, size, + bold ? DocumentTextDecoration.BOLD : DocumentTextDecoration.DEFAULT, color); + } + + /** + * The margin that realises an authored pitch: the distance between two + * line tops, less the line box the type above already fills. + * + * @param pitch the distance the design draws between line tops + * @param size the type size of the line above + * @return the margin to set, never negative + */ + static double gap(double pitch, double size) { + return Math.max(0.0, pitch - size * LINE_FACTOR); + } + + /** + * Letter-spacing by spaces rather than by sized runs: a space between + * letters and three between words. + * + *

This design tracks only one line — the job title — and does it + * coarsely enough that real spaces reach it, which is simpler than the + * per-letter spacer runs the other ported sheets need.

+ * + * @param text the text to space out + * @return the spaced text + */ + static String tracked(String text) { + if (text == null || text.isEmpty()) { + return ""; + } + StringBuilder out = new StringBuilder(text.length() * 2); + boolean startOfWord = true; + for (int i = 0; i < text.length(); i++) { + char ch = text.charAt(i); + if (ch == ' ') { + out.append(" "); + startOfWord = true; + continue; + } + if (!startOfWord) { + out.append(' '); + } + out.append(ch); + startOfWord = false; + } + return out.toString(); + } + + /** Strips a title down to the letters and digits a node name can carry. */ + static String compact(String text) { + return text == null ? "" : text.replaceAll("[^A-Za-z0-9]", ""); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldText.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldText.java new file mode 100644 index 000000000..71d29f2e1 --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldText.java @@ -0,0 +1,53 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.dsl.ParagraphBuilder; +import com.demcha.compose.document.node.DocumentLinkOptions; +import com.demcha.compose.document.style.DocumentTextStyle; +import com.demcha.compose.document.templates.core.text.MarkdownInline; +import com.demcha.compose.document.templates.cv.data.CvEntry; + +import java.util.ArrayList; +import java.util.List; + +/** Turning model fields into the runs and lines this sheet draws. */ +final class CharcoalGoldText { + + private CharcoalGoldText() { + } + + /** + * One item per non-blank line — the family's way of carrying a list in a + * field the model types as a single string. The summary reads its own + * paragraphs this way too. + * + * @param body the field's text + * @return the lines, in order + */ + static List lines(String body) { + List out = new ArrayList<>(); + for (String line : body.split("\\R")) { + String clean = MarkdownInline.plainText(line).trim(); + if (!clean.isBlank()) { + out.add(clean); + } + } + return out; + } + + /** + * Writes an entry's title into a paragraph, as a link when the entry + * carries one. A link is an annotation rather than ink, so a linked + * title and a plain one are the same sheet. + * + * @param paragraph the paragraph being built + * @param entry the entry whose title and link to write + * @param style the style of the title + */ + static void title(ParagraphBuilder paragraph, CvEntry entry, DocumentTextStyle style) { + if (entry.link().isBlank()) { + paragraph.inlineText(entry.title(), style); + } else { + paragraph.inlineText(entry.title(), style, new DocumentLinkOptions(entry.link())); + } + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldWidgets.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldWidgets.java new file mode 100644 index 000000000..8486ed15d --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldWidgets.java @@ -0,0 +1,135 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.dsl.EllipseBuilder; +import com.demcha.compose.document.dsl.ParagraphBuilder; +import com.demcha.compose.document.dsl.RowBuilder; +import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.node.DocumentNode; +import com.demcha.compose.document.node.LayerAlign; +import com.demcha.compose.document.node.RowVerticalAlign; +import com.demcha.compose.document.style.DocumentInsets; +import com.demcha.compose.document.style.DocumentRowColumn; +import com.demcha.compose.document.style.DocumentStroke; +import com.demcha.compose.document.style.DocumentTextStyle; + +import java.util.function.Consumer; + +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ACCENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ACCENT_BAR_WIDTH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.HEADING_INDENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.INK; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MAIN_HEADING_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MARKER_DIAMETER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.PAPER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_THICKNESS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_HEADING_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_INK; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.compact; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.textStyle; + +/** + * The pieces this sheet repeats: the heading with its gold bar, the ringed + * marker that caps a role, the two-space inline gap after a mark, and the + * row wrapper every measured row is built on. + */ +final class CharcoalGoldWidgets { + + private CharcoalGoldWidgets() { + } + + /** A sidebar heading: pale text behind the gold bar. */ + static void sidebarHeading(SectionBuilder block, String text) { + block.addSection("Heading_" + compact(text), heading -> heading + .spacing(0) + .accentLeft(ACCENT, ACCENT_BAR_WIDTH) + .padding(0f, 0f, 0f, (float) HEADING_INDENT) + .addParagraph(p -> p + .name("HeadingText_" + compact(text)) + .text(text) + .textStyle(textStyle(SIDEBAR_HEADING_SIZE, SIDEBAR_INK, false)))); + } + + /** + * A main-column heading: the same gold bar, with a hairline running from + * the words to the right edge. + * + *

The rule is a weighted cell beside an {@code auto} one, so it takes + * whatever the words leave — no measurement needed, unlike a rule that + * has to be given a width.

+ */ + static void mainHeading(SectionBuilder block, String text) { + block.addSection("Heading_" + compact(text), heading -> { + heading.spacing(0); + heading.accentLeft(ACCENT, ACCENT_BAR_WIDTH); + heading.padding(0f, 0f, 0f, (float) HEADING_INDENT); + layeredRow(heading, "HeadingRow_" + compact(text), 0.0, 0.0, row -> { + row.verticalAlign(RowVerticalAlign.CENTER); + row.columns(DocumentRowColumn.auto(), DocumentRowColumn.weight(1.0)); + row.addParagraph(p -> p + .name("HeadingText_" + compact(text)) + .text(text) + .textStyle(textStyle(MAIN_HEADING_SIZE, INK, false))); + row.addLine(line -> line + .name("HeadingRule_" + compact(text)) + .fill() + .thickness(RULE_THICKNESS) + .color(RULE) + .margin(new DocumentInsets(0, 0, 0, HEADING_INDENT))); + }); + }); + } + + /** A main-column heading without the trailing rule, for the closing columns. */ + static void plainHeading(SectionBuilder block, String text) { + block.addSection("Heading_" + compact(text), heading -> heading + .spacing(0) + .accentLeft(ACCENT, ACCENT_BAR_WIDTH) + .padding(0f, 0f, 0f, (float) HEADING_INDENT) + .addParagraph(p -> p + .name("HeadingText_" + compact(text)) + .text(text) + .textStyle(textStyle(MAIN_HEADING_SIZE, INK, false)))); + } + + /** + * A row wrapped in a layer stack, which is where its vertical margins + * live. + * + *

A row carries no margin of its own, so every measured row on this + * sheet is placed by the stack around it. That also gives the marker + * somewhere to be positioned from.

+ * + * @param parent the host section + * @param name node-name stem for the stack, its layer and the row + * @param marginTop the gap above + * @param marginBottom the gap below + * @param spec builds the row + */ + static void layeredRow(SectionBuilder parent, String name, double marginTop, + double marginBottom, Consumer spec) { + SectionBuilder layer = new SectionBuilder(); + layer.name(name + "Layer"); + layer.spacing(0); + layer.addRow(name, spec); + parent.addLayerStack(stack -> stack + .name(name + "Stack") + .margin(new DocumentInsets(marginTop, 0, marginBottom, 0)) + .layer(layer.build(), LayerAlign.TOP_LEFT, 0)); + } + + /** The hollow ring that caps a role on the experience rail. */ + static DocumentNode marker(int index) { + return new EllipseBuilder() + .name("MarkerRing_" + index) + .circle(MARKER_DIAMETER) + .fillColor(PAPER) + .stroke(DocumentStroke.of(INK, 0.8)) + .build(); + } + + /** The two spaces this design leaves between a mark and the text after it. */ + static void inlineGap(ParagraphBuilder paragraph, DocumentTextStyle style) { + paragraph.inlineText(" ", style); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/package-info.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/package-info.java index d9f61ae7a..f07954f04 100644 --- a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/package-info.java +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/package-info.java @@ -21,9 +21,9 @@ * fed a different theme.

* *

The package holds a second shape as well. A preset that reproduces a - * specific drawn sheet — {@code ProfessionalSidebar}, {@code NavySidebar} - * and {@code SerifHeadline} are the ones here — takes no - * {@code BrandTheme} and calls no shared + * specific drawn sheet — {@code ProfessionalSidebar}, {@code NavySidebar}, + * {@code SerifHeadline} and {@code CharcoalGold} are the ones here — takes + * no {@code BrandTheme} and calls no shared * renderer: its geometry, palette and type scale are measured constants of * its own, and it sets its own page. The data model is the same * {@code CvDocument}; what differs is that the cosmetics cannot be swapped, diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/certificate.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/certificate.svg new file mode 100644 index 000000000..70bfd06fe --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/certificate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/email.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/email.svg new file mode 100644 index 000000000..cb7317e63 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/growth.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/growth.svg new file mode 100644 index 000000000..7cd08248b --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/growth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/linkedin.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/linkedin.svg new file mode 100644 index 000000000..e8bf28f95 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/location.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/location.svg new file mode 100644 index 000000000..936b3c22d --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/phone.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/phone.svg new file mode 100644 index 000000000..ebdaf0d64 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/star.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/star.svg new file mode 100644 index 000000000..4a012dbc6 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/trophy.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/trophy.svg new file mode 100644 index 000000000..12e9bcef6 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/trophy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/website.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/website.svg new file mode 100644 index 000000000..26d1e0bc8 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/website.svg @@ -0,0 +1 @@ + \ No newline at end of file