
Pptx
- 89 installs
- 8 repo stars
- Updated August 4, 2026
- bbeierle12/skill-mcp-claude
pptx is a Claude skill that creates, edits, and analyzes PowerPoint .pptx files by working with their ZIP/XML structure and converting HTML slides to slides.
About
This skill teaches an agent to create, edit, and analyze .pptx PowerPoint files by manipulating their underlying ZIP and OOXML XML structure. A developer uses it to generate slide decks from HTML using the bundled html2pptx.js library, or to extract and edit slide content directly. It ships a global.css slide framework and OOXML schema references so generated files stay valid and open in PowerPoint.
- Creates, edits, and analyzes .pptx PowerPoint files by working with the ZIP/XML OOXML structure
- Converts HTML slides to PowerPoint via the html2pptx.js library with accurate positioning
- Bundles a global.css framework (960x540, 16:9) and full OOXML schema references
Pptx by the numbers
- 89 all-time installs (skills.sh)
- Ranked #337 of 688 Office & Documents skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
pptx capabilities & compatibility
- Capabilities
- docx · scientific documentation
- Use cases
- presentations · documentation
What pptx says it does
Create, edit, or analyze .pptx files. Handles the ZIP/XML structure of PowerPoint files with tools for slide creation, content extraction, and template manipulation.
Convert HTML slides to PowerPoint presentations with accurate positioning using the `html2pptx.js` library.
Fixed slide dimensions** (960×540px, 16:9 aspect ratio)
npx skills add https://github.com/bbeierle12/skill-mcp-claude --skill pptxAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 89 |
|---|---|
| repo stars | ★ 8 |
| Last updated | August 4, 2026 |
| Repository | bbeierle12/skill-mcp-claude ↗ |
What it does
Generate or edit PowerPoint decks programmatically from HTML slides or raw OOXML.
Who is it for?
Generating or editing PowerPoint presentations from HTML or raw OOXML.
What you get
- A valid .pptx PowerPoint file
By the numbers
- Fixed slide dimensions of 960x540px (16:9 aspect ratio)
Files
{
"name": "pptx",
"description": "Create, edit, or analyze .pptx files. Handles the ZIP/XML structure of PowerPoint files with tools for slide creation, content extraction, and template manipulation.",
"tags": [
"documentation",
"python",
"code-generation"
],
"sub_skills": [],
"source": "claude-public",
"type": "template",
"depends_on": [],
"enhances": [
"internal-comms",
"scientific-documentation"
],
"last_reviewed_at": null,
"review_score": null,
"relevance_tier": null
}
Global CSS Framework Reference
This document provides a comprehensive reference for the global.css framework used in HTML slide creation for PowerPoint conversion.
---
⚠️ No Import Necessary
The global.css framework is automatically added to every slide. Do NOT try to include it in a slide with <style> or <link> tags.
---
Overview
The global.css framework is designed specifically for creating HTML slides that convert cleanly to PowerPoint presentations. It provides:
- Fixed slide dimensions (960×540px, 16:9 aspect ratio)
- Consistent design system with predefined colors, typography, and spacing
- Flexbox-based layout system for responsive slide content
- Utility-first approach for rapid slide development
- Professional styling optimized for business presentations
Design System Variables
IMPORTANT: When creating a shared CSS file for your presentation, only override CSS variables (using the :root selector). DO NOT create custom classes - use the utility classes provided by this framework instead.
Typography Variables
/* Headings */
--font-family-display: Arial, sans-serif;
--font-weight-display: 600;
/* Body text */
--font-family-content: Arial, sans-serif;
--font-weight-content: 400;
--font-size-content: 16px;
--line-height-content: 1.4;Color Palette
Surface Colors
--color-surface:#ffffff- Default background--color-surface-foreground:#1d1d1d- Text on default background
Primary Colors
--color-primary:#1791e8- Primary actions/accents--color-primary-light: Lightened primary (10% white mix)--color-primary-dark: Darkened primary (10% black mix)--color-primary-foreground:#fafafa- Text on primary background
Secondary Colors
--color-secondary:#f5f5f5- Secondary actions--color-secondary-foreground:#171717- Text on secondary background
Utility Colors
--color-muted:#f5f5f5- Subtle backgrounds--color-muted-foreground:#737373- Muted text--color-accent:#f5f5f5- Accent elements--color-accent-foreground:#171717- Text on accent background--color-border:#c8c8c8- Border elements
Color Utility Classes
Background: .bg-surface, .bg-primary, .bg-secondary, .bg-muted, .bg-accent, .bg-border Text: .text-surface-foreground, .text-primary, .text-muted-foreground, etc. _Uses the color variables defined above except *-light and *-dark_
Spacing & Layout
--spacing:0.25rem- Base spacing unit--gap:calc(var(--spacing) * 4)- Standard gap (1rem)--radius:0.4rem- Standard border radius--radius-pill:999em- Pill-shaped border radius
Slide Structure
Fixed Dimensions
body {
width: 960px;
height: 540px;
overflow: hidden; /* Prevents content overflow */
}Layout System
Container Classes
.row - Horizontal Layout
flex-direction: rowalign-items: centerjustify-content: stretch- Children with
.fill-widthclass expand to fill available width - Children with
.fill-heightclass stretch to fill available height
.col - Vertical Layout
flex-direction: columnalign-items: stretchjustify-content: center- Children with
.fill-heightclass expand to fill available height - Children with
.fill-widthclass stretch to fill available width
Flex Item Behavior
.fill-width and .fill-height - Expandable Elements
.fill-width:flex: 1in row containers (expands to fill available width).fill-height:flex: 1in column containers (expands to fill available height)- Cross-axis variants also apply
align-self: stretch - Required for elements that should expand within flex containers
- Use for main content areas
.items-fill-width and .items-fill-height - Auto-Expanding Children
.items-fill-width: Makes all direct children expandable horizontally (flex: 1).items-fill-height: Makes all direct children expandable vertically (flex: 1)- Cross-axis variants also apply
align-self: stretchto children - Convenient alternative to adding
.fill-width/.fill-heightclass to each child - Use when all children should expand equally
.fit, .fit-width, and .fit-height - Fixed-Size Elements
flex: none(maintains natural size)align-self: auto(uses parent's align-items value)- Default behavior for elements without
.fill-width/.fill-heightclasses .fit-width: axis-specific for row containers (prevents horizontal expansion).fit-height: axis-specific for column containers (prevents vertical expansion)- Use for elements with fixed size inside
.items-fill-width/.items-fill-heightcontainers
.center - Center Content
- Centers content both horizontally and vertically
Example Layout Structure
<body class="col">
<header>Fixed header</header>
<main class="fill-height row">
<aside>Sidebar</aside>
<section class="fill-width">Main content</section>
</main>
<footer>Fixed footer</footer>
</body>Typography Scale
Text Sizes
.text-xs:0.75rem(12px).text-sm:0.875rem(14px).text-base:1rem(16px).text-lg:1.125rem(18px).text-xl:1.25rem(20px).text-2xl:1.5rem(24px).text-3xl:1.875rem(30px).text-4xl:2.25rem(36px).text-5xl:3rem(48px).text-6xl:3.75rem(60px).text-7xl:4.5rem(72px).text-8xl:6rem(96px)
Utility Classes
Alignment Classes
text-align: .text-left/right/center align-items: .items-start/center/baseline/stretch/end align-self: .self-start/center/end justify-content: .justify-start/center/end
Spacing
Gap Classes
.gap-sm: Half standard gap.gap: Standard gap (1rem).gap-lg: Double standard gap.gap-xl: Triple standard gap.gap-2xl: Quadruple standard gap
Spacing Classes (Padding & Margin)
Scale: 0 (0), 1 (0.25rem), 2 (0.5rem), 4 (1rem), 6 (1.5rem), 8 (2rem), 10 (2.5rem), 12 (3rem), 16 (4rem)
Padding: .p-* (all), .px-* (horizontal), .py-* (vertical), .pt-* (top), .pb-* (bottom), .ps-* (start), .pe-* (end)
Margin: .m-* (all), .mx-* (horizontal), .my-* (vertical), .mt-* (top), .mb-* (bottom), .ms-* (start), .me-* (end)
Color Utilities
Visual Utilities
Opacity
.opacity-0to.opacity-100in increments of 10
Border Radius
.rounded: Standard border radius.pill: Pill-shaped (fully rounded)
Width/Height Classes
.w-full,.h-full- Full width/height.w-1/2through.w-5/6,.h-1/2through.h-5/6- Fractional sizing (halves, thirds, fourths, and sixths available)
Aspect Ratio Classes
Auto .aspect-auto (browser default) Square: .aspect-1/1 Landscape: .aspect-4/3, .aspect-3/2, .aspect-16/9, .aspect-21/9 Portrait: .aspect-2/3, .aspect-3/4, .aspect-9/16
Components
Badge Component
<p><span class="badge">Status</span></p>Placeholder Component
<div class="placeholder">Chart Area</div>Styling:
- Uses a default
aspect-ratio: 4 / 3; - Customize by setting
widthheightoraspect-ratioproperties - Automatically stretches to fill available space
- Used for reserved areas that will be filled with charts or other content
Usage Examples
Title Slide
<body class="col center">
<h1>Presentation Title</h1>
<h2 class="text-2xl opacity-70">Subtitle</h2>
<p class="text-sm opacity-50">Author Name • Date</p>
</body>Content Slide with Sidebar
<body class="col">
<header>
<h2 class="text-primary">Slide Title</h2>
</header>
<main class="fill-height row gap-lg">
<section class="fill-width">
<p>Main content goes here...</p>
</section>
<aside class="bg-muted p-4 rounded" style="min-width: 200px;">
<div class="badge bg-primary text-primary-foreground">Important</div>
<p class="text-sm text-muted-foreground">Sidebar content</p>
</aside>
</main>
</body>Two-Column Layout
<body class="col">
<h2 class="fit text-center">Comparison</h2>
<div class="fill-height row gap-lg items-fill-width">
<section>
<h3>Option A</h3>
<p>Content for option A...</p>
</section>
<section>
<h3>Option B</h3>
<p>Content for option B...</p>
</section>
</div>
</body>Centered Content with List
<body class="col center">
<h2>Key Points</h2>
<ul>
<li>First important point</li>
<li>Second important point</li>
<li>Third important point</li>
</ul>
</body>Best Practices
Layout Structure
1. Start with body class: Use .col for vertical layouts and .row for horizontal layouts, add .center for centered content 2. Apply `.fill-width`/`.fill-height` and `.fit`: Control which elements expand vs. maintain fixed size 3. Maintain hierarchy: Use appropriate heading levels (h1-h6)
Spacing and Visual Hierarchy
1. Consistent gaps: Use gap classes instead of margins between flex items 2. Padding for breathing room: Apply padding classes to containers, not individual elements 3. Selective margins: Use margin classes sparingly for specific adjustments outside flex containers 4. Directional spacing: Use directional classes (px, py, mx, my) only when you need asymmetric spacing 5. Typography scale: Use utility classes for consistent font sizing 6. Color usage: Stick to the defined color palette for professional appearance
Responsive Considerations
1. Fixed dimensions: Content must fit within 960×540px 2. Overflow prevention: Use .fit class to prevent content from growing too large 3. Text scaling: Use appropriate text size classes for readability 4. White space: Don't cram too much content on a single slide
Performance Tips
1. Minimal custom CSS: Leverage utility classes instead of writing custom styles 2. Consistent structure: Use similar layout patterns across slides 3. Semantic HTML: Use appropriate HTML elements for better conversion to PowerPoint
HTML to PowerPoint Guide
Convert HTML slides to PowerPoint presentations with accurate positioning using the html2pptx.js library.
Table of Contents
1. Design Principles 2. Creating HTML Slides 3. Using the @ant/html2pptx Library 4. Using PptxGenJS
---
⚠️ Prerequisites Check
Extract the html2pptx library next to your script before proceeding:
# Extract the library to a html2pptx subdirectory
mkdir -p html2pptx && tar -xzf skills/public/pptx/html2pptx.tgz -C html2pptxThis creates a html2pptx/ directory with the library files and CLI binaries. Then use require("./html2pptx") in your script.
---
Design Philosophy
CRITICAL: Before writing any code, commit to a BOLD aesthetic direction that serves the content and audience. PowerPoint presentations are experienced in moments - make those moments memorable.
Remember: Claude is capable of extraordinary creative work. Don't hold back. Show what can truly be created when thinking outside the box and committing fully to a distinctive vision. These are not "just slides" - they're opportunities for visual storytelling.
Think First: Purpose and Differentiation
- What problem does this solve? Who is the audience and what do they need to remember?
- What's the one unforgettable thing? Not "professional slides" but something specific - a color choice, a spatial pattern, a typographic voice, a striking visual diagram
- Pick an aesthetic tone: Here are some examples. You don't need to pick one of these exactly, but use these as inspiration for the kind of exceptional work Claude is capable of:
- Brutally minimal: Maximum whitespace, one element per slide, precision typography
- Editorial/magazine: Multi-column layouts, dramatic type scale, photojournalistic feel
- Retro-futuristic: Geometric shapes, bold colors, space-age optimism
- Luxury/refined: Muted metallics, serif elegance, generous breathing room
- Industrial/utilitarian: Monospace fonts, grid structures, no-nonsense clarity
- Art deco/geometric: Strong lines, symmetry, decorative patterns, gold accents
- Organic/natural: Earthy tones, flowing shapes, textured backgrounds
- Brutalist/raw: Harsh contrasts, exposed structure, intentional roughness
- Context matters: A healthcare startup pitch looks different from a quarterly finance review, which looks different from a design portfolio showcase
Taking Aesthetic Risks
CRITICAL: Every presentation must make at least ONE bold, unexpected design choice. Safe, predictable designs are forgettable. Push boundaries.
Risk-taking examples (every presentation should have something distinctive about it):
- Extreme typography: 120pt headlines, rotated text at 90°, all-caps with 20px letter-spacing, mixing serif headers with sans-serif body
- Unexpected colors: Burgundy and gold instead of blue, coral and teal, black backgrounds with bright accents, monochrome with single pop color
- Spatial surprises: Asymmetric 30/70 splits, diagonal section dividers, overlapping shapes, text positioned at slide edges, breaking the grid
- Visual personality: Thick single-side borders (15px), L-shaped corner accents, geometric patterns as backgrounds, color blocking 50% of the slide
- Layout boldness: Full-bleed color backgrounds, sidebar layouts, magazine-style multi-column, floating text boxes over shapes
What makes presentations forgettable (NEVER do this):
- Generic "AI slop" aesthetics: default gradients, centered everything, no distinctive choices
- Timid, evenly-distributed color palettes with no hierarchy or dominance
- Cookie-cutter designs that could work for any topic
- Converging on the same safe choices across all presentations
Requirements:
- ✅ State your content-informed design approach BEFORE writing code
- ✅ Use web-safe fonts only (see Critical Text Rules section for complete list)
- ✅ Create clear visual hierarchy through size, weight, and color
- ✅ Ensure readability: strong contrast, appropriately sized text, clean alignment
- ✅ Be consistent: repeat patterns, spacing, and visual language across slides
Spacing, Sizing, and Information Density
Master these ratios to create balanced, readable layouts that maximize content without crowding.
The 4px Base Unit System
Use multiples of 4px for all spacing decisions. This creates visual rhythm:
- 4px - Tight: between related lines of text
- 8px - Compact: between elements within a group
- 12px - Standard: between distinct content blocks
- 16px - Comfortable: section padding
- 20px - Generous: major separations, slide margins
Apply consistently: If gaps between cards are 12px, gaps between all cards should be 12px. Inconsistent spacing looks unfinished.
Font Size Hierarchy for Dense Slides
When packing information, use this aggressive scale:
Title: 32-40px (one size, prominent)
Section headers: 13-15px (small but bold)
Body text: 11-13px (readable at this size)
Supporting text: 10-11px (fine print, lists)
Footnotes: 10px (minimal footprint)Rule: Each level should be ~2-3px smaller than the previous. Bigger jumps (e.g., 36px → 11px) work when there's clear visual separation (containers, color).
Container Padding Rules
Match padding to content density:
Dense information boxes: 12-14px padding
Standard content cards: 14-16px padding
Spacious hero sections: 20-24px paddingInternal margin pattern: For text within containers:
margin: 0 0 4px 0; /* Tight: lines within a paragraph */
margin: 0 0 6px 0; /* Compact: list items */
margin: 0 0 8px 0; /* Standard: between paragraphs */
margin: 0 0 10px 0; /* Separated: section header to content */Gap vs Padding Decision Tree
- Gap (between siblings): Use for spacing between cards, columns, list items
- Padding (inside containers): Use for breathing room within a box
<!-- Correct: gap for sibling spacing -->
<div class="col" style="gap: 12px;">
<div style="padding: 14px;">Box 1</div>
<div style="padding: 14px;">Box 2</div>
</div>
<!-- Wrong: margin on children instead of gap on parent -->
<div class="col">
<div style="margin-bottom: 12px; padding: 14px;">Box 1</div>
<div style="padding: 14px;">Box 2</div>
</div>Responsive-ish Widths
Use percentage widths for columns, fixed widths for consistent elements:
<!-- Columns: percentage (adapt to container) -->
<div style="width: 35%;">Sidebar</div>
<div style="width: 65%;">Main</div>
<!-- Accent bars: fixed (always same visual weight; don't overuse these!) -->
<div style="width: 12px; height: 100%;">Accent</div>
<!-- Padding/margins: fixed (consistent breathing room) -->
<div style="padding: 20px 32px;">Content</div>Common Spacing Mistakes
Too much space:
- 24px+ gaps between every element (looks sparse, wastes real estate)
- 20px+ padding in every container (content floats in empty space)
Too little space:
- 4px gaps between unrelated items (everything bleeds together)
- 8px padding in complex containers (text touches edges)
Inconsistent:
- 12px gap here, 16px there, 10px elsewhere (looks unfinished)
- Different padding on similar containers (breaks visual pattern)
The fix: Pick your spacing scale (4, 8, 12, 16, 20) and stick to it religiously.
Typography and Content Design
IMPORTANT: Font constraints: Use web-safe fonts only (see Critical Text Rules section for complete list). PowerPoint requires universally available fonts for reliable rendering.
Within this constraint, make distinctive choices:
- Size contrast is your power tool: Extreme size differences (72pt headers vs 14pt body) create hierarchy and impact
- Weight and spacing: Use bold strategically. Add letter-spacing to all-caps headers for sophistication
- Serif vs sans-serif: Mix thoughtfully - serif for warmth/tradition, sans-serif for modern clarity
- Monospace for technical: Use Courier New for code, data, or technical content to signal precision
- Consistency matters: Pick 2-3 typefaces maximum and vary them through size, weight, and spacing
Content brevity - this is a presentation, not a report:
- Paragraphs should be 1 sentence, _maybe_ 2
- Restrict yourself to 3-5 bullet points per list
- Cards should support short statements/fragments, maybe one complete sentence if it's short
Visual hierarchy through typography:
- Generally no more than 2-3 text sizes per slide (complex slides with charts may use 4)
- If you need additional distinction beyond size, use weight (bold) or opacity
Slide layout zones (for 960×540px canvas):
The slide is divided into distinct zones with buffer spacing:
1. Title zone (top 100px, y=0 to y=100):
- Reserved exclusively for the slide title (
<h1>) - The title TEXT BOX MUST span full width with 20px padding on left and right (920px wide)
- CRITICAL: Wrap the h1 in a div with explicit width to force full-width text box:
<div style="width: 920px; margin: 0 20px;">
<h1>Title Text</h1>
</div>- Setting width directly on h1 does NOT work - the text box will shrink to fit content
- NEVER place titles in narrow text boxes - this causes text wrapping issues
- The title establishes the slide's visual anchor
2. Buffer after title (10px, y=100 to y=110):
- Empty space to separate title from content
- No content should start immediately under the title
3. Content zone (380px, y=110 to y=490):
- Main content area for text, charts, images, cards
- Use 20-40px left/right margins for breathing room
- CRITICAL: Cards, boxes, and other containers must be horizontally aligned - they must start at the same y-position (same height from top)
- Ensure visual balance and consistent spacing between elements
4. Buffer before footnote (10px, y=490 to y=500):
- Empty space to separate content from footnotes
- Ensures content doesn't crowd the bottom edge
5. Footnote zone (bottom 40px, y=500 to y=540):
- Reserved ONLY for footnotes, sources, or disclaimers
- Footnotes must use 10pt font size (small, unobtrusive, left-aligned)
- No other content allowed in this zone
- Keep footnotes brief
Example structure:
<body class="col bg-surface" style="width: 960px; height: 540px; position: relative;">
<!-- Title zone: use fit class to shrink to content height -->
<div style="width: 920px; margin: 0 20px; padding-top: 20px;" class="fit">
<h1 style="margin: 0;">Slide Title</h1>
<p class="text-muted-foreground" style="margin-top: 4px;">Optional subtitle</p>
</div>
<!-- Content zone: fill-height takes remaining space -->
<div class="row gap-lg fill-height" style="padding: 10px 20px;">
<div class="col" style="width: 45%;"><!-- Left column content --></div>
<div class="col" style="width: 55%;"><!-- Right column content --></div>
</div>
<!-- Footnote zone: absolute positioning for fixed bottom placement -->
<p style="position: absolute; bottom: 8px; left: 20px; font-size: 10pt; color: #666; margin: 0;">
Source: Data from Q4 2024 report
</p>
</body>IMPORTANT:
- Use
class="col"on body to enable flexbox layout - Use
class="fit"on title container to shrink to content height - Use
class="fill-height"on content to expand into remaining space - Only use
position: absolutefor footnotes (fixed bottom placement) - This prevents layering issues where content appears on top of titles
Color & Theme
Commit to a cohesive, bold aesthetic. Dominant colors with sharp accents outperform timid, evenly-distributed palettes. Every presentation should have a distinct color personality.
Core principles:
- Dominance over equality: One color should clearly dominate (60-70% of visual weight), with 1-2 supporting tones and one sharp accent. Never give all colors equal weight.
- Create atmosphere: Don't default to solid white backgrounds. Use color blocking, gradient backgrounds, tinted surfaces, or dramatic contrast (dark slides with bright text) to create depth and mood.
- Context-specific choices: The palette should feel designed for THIS topic. If someone could swap your colors into a completely different presentation and it would still "work," you haven't made specific enough choices.
NEVER use generic AI aesthetics:
- Cliched color schemes (blue gradients on white, purple-to-pink gradients)
- Safe corporate blues without intentional reasoning
- Overused teals, greys, and muted "professional" tones
Create visual depth:
- Gradient backgrounds: Use
linear-gradient()orradial-gradient()on slide backgrounds for atmosphere - Color blocking: 40-60% of a slide in solid color creates visual punctuation
- Layered transparencies: Overlapping shapes with opacity create depth
- Dramatic shadows: Bold drop shadows on cards or text boxes add dimension
- Tinted surfaces: Off-white, cream, charcoal instead of pure white/black
Build cohesion: Your 3-5 colors should feel intentionally paired - either through shared undertones (all warm or all cool), similar saturation levels, or deliberate high contrast. The palette should feel like it was designed by someone with a point of view.
Maintaining Visual Interest
Create rhythm and variety across your deck:
- Vary slide layouts: Don't use the same layout for every slide
- Strategic use of visuals: Icons, image placeholders, charts, geometric shapes - but each should serve a purpose, not decorate
- Spatial surprise: Break expectations occasionally - a diagonal element, an asymmetric split, overlapping shapes
- Typography variation: Alternate between text-heavy and minimal slides. Use size contrast for impact
- Color blocking: Dedicate 40-60% of occasional slides to solid color blocks for visual punctuation
- White space as a tool: Generous negative space makes key slides breathe and content stand out
Visual Elements: Icons, Diagrams, and Illustrations
CRITICAL: Visuals should COMMUNICATE, not decorate. Every icon, diagram, or illustration must serve a purpose - clarifying concepts, showing relationships, or adding meaningful emphasis. Generic decoration is worse than no visuals at all.
When to Use Visuals
Icons work best for:
- Quick recognition: Represent concepts at a glance (settings gear, user profile, warning triangle)
- List enhancement: Add visual anchors to bullet points or feature lists (max 4-6 items)
- Navigation cues: Guide attention to key sections or actions
- Category markers: Distinguish between types of content on a slide
- Status indicators: Show state (complete, in-progress, error)
Diagrams work best for:
- Process flows: Sequential steps, workflows, pipelines
- Relationships: Hierarchies, networks, dependencies, comparisons
- Architecture: System components, data flows, integrations
- Timelines: Chronological sequences, project phases, milestones
- Comparisons: Before/after, option A vs B, feature matrices
Illustrations/Images work best for:
- Emotional impact: When you need to evoke feeling, not just convey information
- Concrete examples: Showing actual products, places, or people
- Complex concepts: Abstract ideas that benefit from metaphorical visualization
- Brand storytelling: Establishing tone and personality
Icon Usage Patterns
DO:
- Use a consistent icon set throughout (don't mix styles - all outline OR all filled, all same weight)
- Keep icons small and supporting (24-48px typical, 64px max for emphasis)
- Choose icons that are immediately recognizable for your audience
- Use color strategically - monochrome icons with one accent color for emphasis
- Align icons with text baselines or center them in cards
- Use react-icons library for consistent, high-quality SVG icons
DON'T:
- Use icons as pure decoration without meaning
- Mix icon styles (outline + filled, different weights, different visual languages)
- Make icons compete with text for attention (keep them subordinate)
- Use obscure or ambiguous icons that require explanation
- Overcrowd slides with too many icons (3-5 per slide maximum)
- Use clipart-style or cartoonish icons in professional contexts
Diagram Design Principles
Clarity over complexity:
- Each diagram should convey ONE main idea
- Remove unnecessary elements (every line, box, arrow must earn its place)
- Use visual hierarchy: primary elements larger/bolder, secondary elements subdued
- Limit to 5-7 main elements per diagram (cognitive load limit)
Flow and direction:
- Left-to-right for sequential processes (Western reading pattern)
- Top-to-bottom for hierarchies
- Center-outward for radial/hub-spoke relationships
- Use arrows sparingly - direction should be obvious from layout
Visual consistency:
- Same shape for same type of element (all rectangles for steps, all circles for milestones)
- Consistent spacing between elements
- Uniform line weights and colors
- Clear grouping through proximity and enclosure
Common Diagram Types: 1. Flowchart - Decision trees, process steps
- Rectangles for actions, diamonds for decisions
- Arrows show direction, color-code paths
2. Hierarchy/Org Chart - Reporting structures, taxonomies
- Top-down with clear levels
- Use consistent box sizes per level
3. Timeline - Milestones, project phases
- Horizontal with clear date markers
- Highlight current position or key moments
4. Comparison Matrix - Feature comparisons, option evaluation
- Clear labels, consistent formatting
- Use checkmarks/X or color coding
5. Cycle Diagram - Iterative processes, feedback loops
- Circular arrangement with directional flow
- Equal spacing, consistent element sizes
6. Hub and Spoke - Central concept with related elements
- Central element emphasized (larger, bolder)
- Radial symmetry for balance
7. Funnel - Conversion processes, filtering
- Wide at top, narrow at bottom
- Labels show quantities or stages
Building Diagrams in HTML
Create diagrams using positioned divs with borders, backgrounds, and text:
<!-- Simple 3-step process flow -->
<div class="row items-center gap-md" style="padding: 20px;">
<!-- Step 1 -->
<div class="col items-center" style="width: 200px;">
<div class="rounded p-4" style="background: var(--color-primary); color: white; width: 100%;">
<p class="text-lg bold text-center" style="margin: 0;">1. Research</p>
</div>
</div>
<!-- Arrow -->
<div style="font-size: 24px; color: var(--color-muted-foreground);">→</div>
<!-- Step 2 -->
<div class="col items-center" style="width: 200px;">
<div class="rounded p-4" style="background: var(--color-primary); color: white; width: 100%;">
<p class="text-lg bold text-center" style="margin: 0;">2. Design</p>
</div>
</div>
<!-- Arrow -->
<div style="font-size: 24px; color: var(--color-muted-foreground);">→</div>
<!-- Step 3 -->
<div class="col items-center" style="width: 200px;">
<div class="rounded p-4" style="background: var(--color-primary); color: white; width: 100%;">
<p class="text-lg bold text-center" style="margin: 0;">3. Build</p>
</div>
</div>
</div><!-- Metric cards with icons -->
<div class="row gap-lg" style="padding: 20px;">
<div class="col items-center p-6 rounded" style="background: var(--color-surface); flex: 1;">
<!-- Icon placeholder - use react-icons SVG -->
<div style="width: 48px; height: 48px; margin-bottom: 12px;">
<!-- Insert SVG icon here -->
</div>
<p class="text-3xl bold" style="margin: 0; color: var(--color-primary);">45%</p>
<p class="text-muted-foreground" style="margin: 4px 0 0 0;">Growth Rate</p>
</div>
<div class="col items-center p-6 rounded" style="background: var(--color-surface); flex: 1;">
<div style="width: 48px; height: 48px; margin-bottom: 12px;">
<!-- Insert SVG icon here -->
</div>
<p class="text-3xl bold" style="margin: 0; color: var(--color-primary);">1.2M</p>
<p class="text-muted-foreground" style="margin: 4px 0 0 0;">Active Users</p>
</div>
</div>WARNING SIGNS your visual isn't working:
- You need to explain what the icon means
- The diagram requires more than 5 seconds to parse
- You're adding a visual because "the slide looks empty"
- The visual could be swapped into any other presentation
- Elements overlap or crowd each other
Anti-Patterns: What NEVER to Do
Avoid these patterns that create forgettable presentations:
Typography failures:
- Using default type sizes with no distinctive scale, weight, or spacing choices
- Multiple font families on one slide (mixing 3+ typefaces = chaos)
- Centered body text (center headlines only; left-align paragraphs and lists)
- Insufficient size contrast (18pt header with 16pt body is nearly invisible)
Color failures:
- Default gradients that appear in generic templates (particularly purple/blue)
- Evenly distributing 5+ colors across slides with no hierarchy or dominance
- Low contrast combinations (light gray text on white, dark blue on black)
- Off-brand colors when brand identity is specified
Layout failures:
- Centered alignment for everything (static, boring, no flow)
- Cramming too much content per slide (more than 5 bullets, paragraphs over 2 sentences)
- Inconsistent spacing and alignment across slides (looks unfinished)
- Using the same exact layout for every single slide (monotonous)
Visual detail failures:
- Generic clipart-style icons that could apply to anything
- Decorative elements that don't serve the aesthetic direction
- Half-committed design (one fancy slide, rest are defaults)
- Copying the exact same design as your previous presentation (vary your choices)
Remember: Professional doesn't mean generic. Commit to intentional choices that serve your audience and content.
Layout Tips
To create slides with charts or tables:
- Two-column layout (PREFERRED): Use a header spanning the full width, then two columns below - text/bullets in one column and the featured content in the other. This provides better balance and makes charts/tables more readable. Use unequal column widths (e.g., 40%/60% split) to optimize space for each content type.
- Full-slide layout: Let the featured content (chart/table) take up the entire slide for maximum impact and readability
- NEVER vertically stack: Do not place charts/tables below text in a single column - this causes poor readability and layout issues
Creating HTML Slides
Every HTML slide must include proper body dimensions:
- 16:9 (automatically applied):
width: 960px; height: 540px - 4:3:
width: 960px; height: 720px - 16:10:
width: 960px; height: 600px
How to write CSS
MANDATORY - READ ENTIRE FILE: Read `css.md` (~400 lines) completely from start to finish. NEVER set any range limits when reading this file. Read the full file content for detailed guidance on CSS structure before writing any HTML.
Slides are automatically provided with a global stylesheet which is injected when the HTML is rendered. Guidelines for styles:
- Override CSS variables (using the
:rootselector) to customize colors, typography, and spacing for your slides - Use the classes from `css.md` when creating your slides. Reference the examples provided in that guide.
Supported Elements
Block Elements
<div>,<section>,<header>,<footer>,<main>,<article>,<nav>,<aside>- Container elements with bg/border support (supports gradients and background images)
Text Elements
<p>- Paragraphs with styling<h1>-<h6>- Headings with styling
Lists
<ul>,<ol>- Lists (never use manual bullets •, -, \*)
Inline Formatting
<b>,<strong>- Bold text<i>,<em>- Italic text<u>- Underlined text<br>- Line breaks
Media
<img>- Images
Special Features
class="placeholder"- Reserved space for charts (returns{ id, x, y, w, h })- Automatically styled with muted background and dashed border
- Stretches to fill available container space
- Provides visual indication during development
data-balanceattribute - Auto-balance text line lengths for better typography.<h1>and<h2>elements are automatically balanced without needing thedata-balanceattribute.
Critical Text Rules
IMPORTANT: These rules must be followed to safely convert HTML to PowerPoint.
ALL text MUST be inside `<p>`, `<h1>`-`<h6>`, `<ul>`, or `<ol>` tags:
- ✅ Correct:
<div><p>Text here</p></div> - ❌ Wrong:
<div>Text here</div>- Text will NOT appear in PowerPoint - Text in
<div>without a text tag is silently ignored
*NEVER use manual bullet symbols (•, -, \, etc.)** - Use <ul> or <ol> lists instead
Use `row` and `col` classes INSTEAD of flexbox:
- ✅ Correct:
<div class="row"><p>Text here</p></div> - ❌ Wrong:
<div style="display: flex;"><p>Text here</p></div>
ONLY use web-safe fonts that are universally available:
- ✅ Web-safe fonts:
Arial,Helvetica,Times New Roman,Georgia,Courier New,Verdana,Tahoma,Trebuchet MS,Impact - ❌ Wrong:
'Segoe UI','SF Pro','Roboto', custom fonts - May cause rendering issues
NEVER use `white-space: nowrap` on titles or text:
- PowerPoint does NOT respect this CSS property
- Text will wrap based on the container width, regardless of
nowrapsetting - Instead of using
nowrap, ensure the text box is wide enough to fit the text naturally - For titles: ALWAYS use full-width text boxes (920px with 20px padding on each side) so titles fit on one line without needing
nowrap
Shape Styling (block elements only)
IMPORTANT: Backgrounds, borders, and shadows only work on block elements, NOT on text elements (`<p>`, `<h1>`-`<h6>`, `<ul>`, `<ol>`)
- Backgrounds: CSS
backgroundorbackground-colororbackground-image background: var(--color-surface);background: linear-gradient(135deg, var(--color-primary-light) 0%, var(--color-primary-dark) 100%);background: radial-gradient(circle, var(--color-accent-light) 0%, var(--color-accent-dark) 100%);background: url(path/to/image.png)- Borders
- Supports uniform borders:
border: 1px solid var(--color-border) - Supports partial borders:
border-left,border-right,border-top,border-bottom - Border radius
roundedCSS class applies the default border-radiuspillCSS class applies maximum border-radius to create pill-shaped elements- When height and width are equal, this creates a circle
- Box shadows
- Supports outer shadows only
- PowerPoint does not support inset shadows
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
Icons
Icons can be included using either inline SVG or SVG files, which are automatically converted to images in PowerPoint.
How to use react-icons
const React = require("react");
const ReactDOMServer = require("react-dom/server");
const { FaHome } = require("react-icons/fa");
// Generate SVG string from react-icon
function renderIconSvg(IconComponent, color, size = "48") {
return ReactDOMServer.renderToStaticMarkup(
React.createElement(IconComponent, { color: color, size: size })
);
}
// Get SVG markup
const homeIconSvg = renderIconSvg(FaHome, "#4472c4", "48");
// Use in HTML template (inline SVG)
// <div style="width: 48px; height: 48px;">${homeIconSvg}</div>Example Slide HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Slide with title, context, and full bleed placeholder</title>
<style>
/* Shared CSS variable overrides */
:root {
--color-primary: #00a4fc;
--color-primary-foreground: #ffffff;
}
</style>
</head>
<body class="row items-fill-width gap-lg">
<div class="p-8 pe-0">
<h1>Slide title</h1>
<p class="text-2xl text-muted-foreground">Subtitle or context</p>
</div>
<div class="placeholder w-3/5 fit"></div>
</body>
</html>Using the html2pptx Library
Installation & Setup
Important: Extract the html2pptx library next to your script before using. See the Prerequisites Check section at the top of this document.
When running scripts, set NODE_PATH for global packages like pptxgenjs:
NODE_PATH="$(npm root -g)" node your-script.js 2>&1Dependencies
These libraries have been globally installed and are available to use:
pptxgenjsplaywright
⚠️ IMPORTANT: How To Use html2pptx
Common errors:
- LIBRARY NOT EXTRACTED: Extract the tarball first with
mkdir -p html2pptx && tar -xzf skills/public/pptx/html2pptx.tgz -C html2pptx - ✅ Correct:
require("./html2pptx") - ❌ Wrong:
require("@ant/html2pptx")- Use relative path, not package name - DO NOT call
pptx.addSlide()directly,html2pptxcreates a slide for you html2pptxaccepts anhtmlFilePathand apptxpresentation object- If you pass the wrong arguments, your script will throw errors or time out
Your script MUST follow the following example.
const pptxgen = require("pptxgenjs");
const { html2pptx } = require("./html2pptx");
// Create a new pptx presentation
const pptx = new pptxgen();
pptx.layout = "LAYOUT_16x9"; // Must match HTML body dimensions
// Add an HTML-only slide
await html2pptx("slide1.html", pptx);
// Add a slide with a chart placeholder
const { slide, placeholders } = await html2pptx("slide2.html", pptx);
slide.addChart(pptx.charts.LINE, chartData, placeholders[0]);
// Save the presentation
await pptx.writeFile("output.pptx");API Reference
Function Signature
await html2pptx(htmlFilePath, pptxPresentation, options);Parameters
htmlFilePath(string): Path to HTML file (absolute or relative)pptxPresentation(pptxgen): PptxGenJS presentation instance with layout already setoptions(object, optional):tmpDir(string): Temporary directory for generated files (default:process.env.TMPDIR || '/tmp')
Returns
{
slide: pptxgenSlide, // The created/updated slide
placeholders: [ // Array of placeholder positions
{ id: string, x: number, y: number, w: number, h: number },
...
]
}Validation
The library automatically validates and collects all errors before throwing:
1. HTML dimensions must match presentation layout - Reports dimension mismatches 2. Content must not overflow body - Reports overflow with exact measurements 3. Text element styling - Reports backgrounds/borders/shadows on text elements (only allowed on block elements)
All validation errors are collected and reported together in a single error message, allowing you to fix all issues at once instead of one at a time.
Working with Placeholders
const { slide, placeholders } = await html2pptx("slide.html", pptx);
// Use first placeholder
slide.addChart(pptx.charts.BAR, data, placeholders[0]);
// Find by ID
const chartArea = placeholders.find((p) => p.id === "chart-area");
slide.addChart(pptx.charts.LINE, data, chartArea);Complete Example
const pptxgen = require("pptxgenjs");
const { html2pptx } = require("./html2pptx");
async function createPresentation() {
const pptx = new pptxgen();
pptx.layout = "LAYOUT_16x9";
pptx.author = "Your Name";
pptx.title = "My Presentation";
// Slide 1: Title
const { slide: slide1 } = await html2pptx("slides/title.html", pptx);
// Slide 2: Content with chart
const { slide: slide2, placeholders } = await html2pptx(
"slides/data.html",
pptx
);
const chartData = [
{
name: "Sales",
labels: ["Q1", "Q2", "Q3", "Q4"],
values: [4500, 5500, 6200, 7100],
},
];
slide2.addChart(pptx.charts.BAR, chartData, {
...placeholders[0],
showTitle: true,
title: "Quarterly Sales",
showCatAxisTitle: true,
catAxisTitle: "Quarter",
showValAxisTitle: true,
valAxisTitle: "Sales ($000s)",
});
// Save
await pptx.writeFile({ fileName: "presentation.pptx" });
console.log("Presentation created successfully!");
}
createPresentation().catch(console.error);Run with:
NODE_PATH="$(npm root -g)" node create-presentation.js 2>&1Using PptxGenJS
After converting HTML to slides with html2pptx, you'll use PptxGenJS to add dynamic content like charts, images, and additional elements.
⚠️ Critical Rules
Colors
- NEVER use `#` prefix with hex colors in PptxGenJS - causes file corruption
- ✅ Correct:
color: "FF0000",fill: { color: "0066CC" } - ❌ Wrong:
color: "#FF0000"(breaks document)
Adding Images
Always calculate aspect ratios from actual image dimensions:
// Get image dimensions: identify image.png | grep -o '[0-9]* x [0-9]*'
const imgWidth = 1860,
imgHeight = 1519; // From actual file
const aspectRatio = imgWidth / imgHeight;
const h = 3; // Max height
const w = h * aspectRatio;
const x = (10 - w) / 2; // Center on 16:9 slide
slide.addImage({ path: "chart.png", x, y: 1.5, w, h });Adding Text
// Rich text with formatting
slide.addText(
[
{ text: "Bold ", options: { bold: true } },
{ text: "Italic ", options: { italic: true } },
{ text: "Normal" },
],
{
x: 1,
y: 2,
w: 8,
h: 1,
}
);Adding Shapes
// Rectangle
slide.addShape(pptx.shapes.RECTANGLE, {
x: 1,
y: 1,
w: 3,
h: 2,
fill: { color: "4472C4" },
line: { color: "000000", width: 2 },
});
// Circle
slide.addShape(pptx.shapes.OVAL, {
x: 5,
y: 1,
w: 2,
h: 2,
fill: { color: "ED7D31" },
});
// Rounded rectangle
slide.addShape(pptx.shapes.ROUNDED_RECTANGLE, {
x: 1,
y: 4,
w: 3,
h: 1.5,
fill: { color: "70AD47" },
rectRadius: 0.2,
});Adding Charts
Required for most charts: Axis labels using catAxisTitle (category) and valAxisTitle (value).
Chart Data Format:
- Use single series with all labels for simple bar/line charts
- Each series creates a separate legend entry
- Labels array defines X-axis values
Time Series Data - Choose Correct Granularity:
- < 30 days: Use daily grouping (e.g., "10-01", "10-02") - avoid monthly aggregation that creates single-point charts
- 30-365 days: Use monthly grouping (e.g., "2024-01", "2024-02")
- > 365 days: Use yearly grouping (e.g., "2023", "2024")
- Validate: Charts with only 1 data point likely indicate incorrect aggregation for the time period
const { slide, placeholders } = await html2pptx("slide.html", pptx);
// CORRECT: Single series with all labels
slide.addChart(
pptx.charts.BAR,
[
{
name: "Sales 2024",
labels: ["Q1", "Q2", "Q3", "Q4"],
values: [4500, 5500, 6200, 7100],
},
],
{
...placeholders[0], // Use placeholder position
barDir: "col", // 'col' = vertical bars, 'bar' = horizontal
showTitle: true,
title: "Quarterly Sales",
showLegend: false, // No legend needed for single series
// Required axis labels
showCatAxisTitle: true,
catAxisTitle: "Quarter",
showValAxisTitle: true,
valAxisTitle: "Sales ($000s)",
// Optional: Control scaling (adjust min based on data range for better visualization)
valAxisMaxVal: 8000,
valAxisMinVal: 0, // Use 0 for counts/amounts; for clustered data (e.g., 4500-7100), consider starting closer to min value
valAxisMajorUnit: 2000, // Control y-axis label spacing to prevent crowding
catAxisLabelRotate: 45, // Rotate labels if crowded
dataLabelPosition: "outEnd",
dataLabelColor: "000000",
// Use single color for single-series charts
chartColors: ["4472C4"], // All bars same color
}
);Scatter Chart
IMPORTANT: Scatter chart data format is unusual - first series contains X-axis values, subsequent series contain Y-values:
// Prepare data
const data1 = [
{ x: 10, y: 20 },
{ x: 15, y: 25 },
{ x: 20, y: 30 },
];
const data2 = [
{ x: 12, y: 18 },
{ x: 18, y: 22 },
];
const allXValues = [...data1.map((d) => d.x), ...data2.map((d) => d.x)];
slide.addChart(
pptx.charts.SCATTER,
[
{ name: "X-Axis", values: allXValues }, // First series = X values
{ name: "Series 1", values: data1.map((d) => d.y) }, // Y values only
{ name: "Series 2", values: data2.map((d) => d.y) }, // Y values only
],
{
x: 1,
y: 1,
w: 8,
h: 4,
lineSize: 0, // 0 = no connecting lines
lineDataSymbol: "circle",
lineDataSymbolSize: 6,
showCatAxisTitle: true,
catAxisTitle: "X Axis",
showValAxisTitle: true,
valAxisTitle: "Y Axis",
chartColors: ["4472C4", "ED7D31"],
}
);Line Chart
slide.addChart(
pptx.charts.LINE,
[
{
name: "Temperature",
labels: ["Jan", "Feb", "Mar", "Apr"],
values: [32, 35, 42, 55],
},
],
{
x: 1,
y: 1,
w: 8,
h: 4,
lineSize: 4,
lineSmooth: true,
// Required axis labels
showCatAxisTitle: true,
catAxisTitle: "Month",
showValAxisTitle: true,
valAxisTitle: "Temperature (°F)",
// Optional: Y-axis range (set min based on data range for better visualization)
valAxisMinVal: 0, // For ranges starting at 0 (counts, percentages, etc.)
valAxisMaxVal: 60,
valAxisMajorUnit: 20, // Control y-axis label spacing to prevent crowding (e.g., 10, 20, 25)
// valAxisMinVal: 30, // PREFERRED: For data clustered in a range (e.g., 32-55 or ratings 3-5), start axis closer to min value to show variation
// Optional: Chart colors
chartColors: ["4472C4", "ED7D31", "A5A5A5"],
}
);Pie Chart (No Axis Labels Required)
CRITICAL: Pie charts require a single data series with all categories in the labels array and corresponding values in the values array.
slide.addChart(
pptx.charts.PIE,
[
{
name: "Market Share",
labels: ["Product A", "Product B", "Other"], // All categories in one array
values: [35, 45, 20], // All values in one array
},
],
{
x: 2,
y: 1,
w: 6,
h: 4,
showPercent: true,
showLegend: true,
legendPos: "r", // right
chartColors: ["4472C4", "ED7D31", "A5A5A5"],
}
);Multiple Data Series
slide.addChart(
pptx.charts.LINE,
[
{
name: "Product A",
labels: ["Q1", "Q2", "Q3", "Q4"],
values: [10, 20, 30, 40],
},
{
name: "Product B",
labels: ["Q1", "Q2", "Q3", "Q4"],
values: [15, 25, 20, 35],
},
],
{
x: 1,
y: 1,
w: 8,
h: 4,
showCatAxisTitle: true,
catAxisTitle: "Quarter",
showValAxisTitle: true,
valAxisTitle: "Revenue ($M)",
}
);Chart Colors
CRITICAL: Use hex colors without the # prefix - including # causes file corruption.
Align chart colors with your chosen design palette, ensuring sufficient contrast and distinctiveness for data visualization. Adjust colors for:
- Strong contrast between adjacent series
- Readability against slide backgrounds
- Accessibility (avoid red-green only combinations)
// Example: Ocean palette-inspired chart colors (adjusted for contrast)
const chartColors = ["16A085", "FF6B9D", "2C3E50", "F39C12", "9B59B6"];
// Single-series chart: Use one color for all bars/points
slide.addChart(
pptx.charts.BAR,
[
{
name: "Sales",
labels: ["Q1", "Q2", "Q3", "Q4"],
values: [4500, 5500, 6200, 7100],
},
],
{
...placeholders[0],
chartColors: ["16A085"], // All bars same color
showLegend: false,
}
);
// Multi-series chart: Each series gets a different color
slide.addChart(
pptx.charts.LINE,
[
{ name: "Product A", labels: ["Q1", "Q2", "Q3"], values: [10, 20, 30] },
{ name: "Product B", labels: ["Q1", "Q2", "Q3"], values: [15, 25, 20] },
],
{
...placeholders[0],
chartColors: ["16A085", "FF6B9D"], // One color per series
}
);Adding Tables
Tables can be added with basic or advanced formatting:
Basic Table
slide.addTable(
[
["Header 1", "Header 2", "Header 3"],
["Row 1, Col 1", "Row 1, Col 2", "Row 1, Col 3"],
["Row 2, Col 1", "Row 2, Col 2", "Row 2, Col 3"],
],
{
x: 0.5,
y: 1,
w: 9,
h: 3,
border: { pt: 1, color: "999999" },
fill: { color: "F1F1F1" },
}
);Table with Custom Formatting
const tableData = [
// Header row with custom styling
[
{
text: "Product",
options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true },
},
{
text: "Revenue",
options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true },
},
{
text: "Growth",
options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true },
},
],
// Data rows
["Product A", "$50M", "+15%"],
["Product B", "$35M", "+22%"],
["Product C", "$28M", "+8%"],
];
slide.addTable(tableData, {
x: 1,
y: 1.5,
w: 8,
h: 3,
colW: [3, 2.5, 2.5], // Column widths
rowH: [0.5, 0.6, 0.6, 0.6], // Row heights
border: { pt: 1, color: "CCCCCC" },
align: "center",
valign: "middle",
fontSize: 14,
});Table with Merged Cells
const mergedTableData = [
[
{
text: "Q1 Results",
options: {
colspan: 3,
fill: { color: "4472C4" },
color: "FFFFFF",
bold: true,
},
},
],
["Product", "Sales", "Market Share"],
["Product A", "$25M", "35%"],
["Product B", "$18M", "25%"],
];
slide.addTable(mergedTableData, {
x: 1,
y: 1,
w: 8,
h: 2.5,
colW: [3, 2.5, 2.5],
border: { pt: 1, color: "DDDDDD" },
});Table Options
Common table options:
x, y, w, h- Position and sizecolW- Array of column widths (in inches)rowH- Array of row heights (in inches)border- Border style:{ pt: 1, color: "999999" }fill- Background color (no # prefix)align- Text alignment: "left", "center", "right"valign- Vertical alignment: "top", "middle", "bottom"fontSize- Text sizeautoPage- Auto-create new slides if content overflows
© 2025 Anthropic, PBC. All rights reserved.
LICENSE: Use of these materials (including all code, prompts, assets, files,
and other components of this Skill) is governed by your agreement with
Anthropic regarding use of Anthropic's services. If no separate agreement
exists, use is governed by Anthropic's Consumer Terms of Service or
Commercial Terms of Service, as applicable:
https://www.anthropic.com/legal/consumer-terms
https://www.anthropic.com/legal/commercial-terms
Your applicable agreement is referred to as the "Agreement." "Services" are
as defined in the Agreement.
ADDITIONAL RESTRICTIONS: Notwithstanding anything in the Agreement to the
contrary, users may not:
- Extract these materials from the Services or retain copies of these
materials outside the Services
- Reproduce or copy these materials, except for temporary copies created
automatically during authorized use of the Services
- Create derivative works based on these materials
- Distribute, sublicense, or transfer these materials to any third party
- Make, offer to sell, sell, or import any inventions embodied in these
materials
- Reverse engineer, decompile, or disassemble these materials
The receipt, viewing, or possession of these materials does not convey or
imply any license or right beyond those expressly granted above.
Anthropic retains all right, title, and interest in these materials,
including all copyrights, patents, and other intellectual property rights.
Office Open XML Technical Reference for PowerPoint
Important: Read this entire document before starting. Critical XML schema rules and formatting requirements are covered throughout. Incorrect implementation can create invalid PPTX files that PowerPoint cannot open.
Technical Guidelines
Schema Compliance
- Element ordering in `<p:txBody>`:
<a:bodyPr>,<a:lstStyle>,<a:p> - Whitespace: Add
xml:space='preserve'to<a:t>elements with leading/trailing spaces - Unicode: Escape characters in ASCII content:
"becomes“ - Images: Add to
ppt/media/, reference in slide XML, set dimensions to fit slide bounds - Relationships: Update
ppt/slides/_rels/slideN.xml.relsfor each slide's resources - Dirty attribute: Add
dirty="0"to<a:rPr>and<a:endParaRPr>elements to indicate clean state
Presentation Structure
Basic Slide Structure
<!-- ppt/slides/slide1.xml -->
<p:sld>
<p:cSld>
<p:spTree>
<p:nvGrpSpPr>...</p:nvGrpSpPr>
<p:grpSpPr>...</p:grpSpPr>
<!-- Shapes go here -->
</p:spTree>
</p:cSld>
</p:sld>Text Box / Shape with Text
<p:sp>
<p:nvSpPr>
<p:cNvPr id="2" name="Title"/>
<p:cNvSpPr>
<a:spLocks noGrp="1"/>
</p:cNvSpPr>
<p:nvPr>
<p:ph type="ctrTitle"/>
</p:nvPr>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x="838200" y="365125"/>
<a:ext cx="7772400" cy="1470025"/>
</a:xfrm>
</p:spPr>
<p:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:r>
<a:t>Slide Title</a:t>
</a:r>
</a:p>
</p:txBody>
</p:sp>Text Formatting
<!-- Bold -->
<a:r>
<a:rPr b="1"/>
<a:t>Bold Text</a:t>
</a:r>
<!-- Italic -->
<a:r>
<a:rPr i="1"/>
<a:t>Italic Text</a:t>
</a:r>
<!-- Underline -->
<a:r>
<a:rPr u="sng"/>
<a:t>Underlined</a:t>
</a:r>
<!-- Highlight -->
<a:r>
<a:rPr>
<a:highlight>
<a:srgbClr val="FFFF00"/>
</a:highlight>
</a:rPr>
<a:t>Highlighted Text</a:t>
</a:r>
<!-- Font and Size -->
<a:r>
<a:rPr sz="2400" typeface="Arial">
<a:solidFill>
<a:srgbClr val="FF0000"/>
</a:solidFill>
</a:rPr>
<a:t>Colored Arial 24pt</a:t>
</a:r>
<!-- Complete formatting example -->
<a:r>
<a:rPr lang="en-US" sz="1400" b="1" dirty="0">
<a:solidFill>
<a:srgbClr val="FAFAFA"/>
</a:solidFill>
</a:rPr>
<a:t>Formatted text</a:t>
</a:r>Lists
<!-- Bullet list -->
<a:p>
<a:pPr lvl="0">
<a:buChar char="•"/>
</a:pPr>
<a:r>
<a:t>First bullet point</a:t>
</a:r>
</a:p>
<!-- Numbered list -->
<a:p>
<a:pPr lvl="0">
<a:buAutoNum type="arabicPeriod"/>
</a:pPr>
<a:r>
<a:t>First numbered item</a:t>
</a:r>
</a:p>
<!-- Second level indent -->
<a:p>
<a:pPr lvl="1">
<a:buChar char="•"/>
</a:pPr>
<a:r>
<a:t>Indented bullet</a:t>
</a:r>
</a:p>Shapes
<!-- Rectangle -->
<p:sp>
<p:nvSpPr>
<p:cNvPr id="3" name="Rectangle"/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x="1000000" y="1000000"/>
<a:ext cx="3000000" cy="2000000"/>
</a:xfrm>
<a:prstGeom prst="rect">
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val="FF0000"/>
</a:solidFill>
<a:ln w="25400">
<a:solidFill>
<a:srgbClr val="000000"/>
</a:solidFill>
</a:ln>
</p:spPr>
</p:sp>
<!-- Rounded Rectangle -->
<p:sp>
<p:spPr>
<a:prstGeom prst="roundRect">
<a:avLst/>
</a:prstGeom>
</p:spPr>
</p:sp>
<!-- Circle/Ellipse -->
<p:sp>
<p:spPr>
<a:prstGeom prst="ellipse">
<a:avLst/>
</a:prstGeom>
</p:spPr>
</p:sp>Images
<p:pic>
<p:nvPicPr>
<p:cNvPr id="4" name="Picture">
<a:hlinkClick r:id="" action="ppaction://media"/>
</p:cNvPr>
<p:cNvPicPr>
<a:picLocks noChangeAspect="1"/>
</p:cNvPicPr>
<p:nvPr/>
</p:nvPicPr>
<p:blipFill>
<a:blip r:embed="rId2"/>
<a:stretch>
<a:fillRect/>
</a:stretch>
</p:blipFill>
<p:spPr>
<a:xfrm>
<a:off x="1000000" y="1000000"/>
<a:ext cx="3000000" cy="2000000"/>
</a:xfrm>
<a:prstGeom prst="rect">
<a:avLst/>
</a:prstGeom>
</p:spPr>
</p:pic>Tables
<p:graphicFrame>
<p:nvGraphicFramePr>
<p:cNvPr id="5" name="Table"/>
<p:cNvGraphicFramePr>
<a:graphicFrameLocks noGrp="1"/>
</p:cNvGraphicFramePr>
<p:nvPr/>
</p:nvGraphicFramePr>
<p:xfrm>
<a:off x="1000000" y="1000000"/>
<a:ext cx="6000000" cy="2000000"/>
</p:xfrm>
<a:graphic>
<a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table">
<a:tbl>
<a:tblGrid>
<a:gridCol w="3000000"/>
<a:gridCol w="3000000"/>
</a:tblGrid>
<a:tr h="500000">
<a:tc>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:r>
<a:t>Cell 1</a:t>
</a:r>
</a:p>
</a:txBody>
</a:tc>
<a:tc>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:r>
<a:t>Cell 2</a:t>
</a:r>
</a:p>
</a:txBody>
</a:tc>
</a:tr>
</a:tbl>
</a:graphicData>
</a:graphic>
</p:graphicFrame>Slide Layouts
<!-- Title Slide Layout -->
<p:sp>
<p:nvSpPr>
<p:nvPr>
<p:ph type="ctrTitle"/>
</p:nvPr>
</p:nvSpPr>
<!-- Title content -->
</p:sp>
<p:sp>
<p:nvSpPr>
<p:nvPr>
<p:ph type="subTitle" idx="1"/>
</p:nvPr>
</p:nvSpPr>
<!-- Subtitle content -->
</p:sp>
<!-- Content Slide Layout -->
<p:sp>
<p:nvSpPr>
<p:nvPr>
<p:ph type="title"/>
</p:nvPr>
</p:nvSpPr>
<!-- Slide title -->
</p:sp>
<p:sp>
<p:nvSpPr>
<p:nvPr>
<p:ph type="body" idx="1"/>
</p:nvPr>
</p:nvSpPr>
<!-- Content body -->
</p:sp>File Updates
When adding content, update these files:
`ppt/_rels/presentation.xml.rels`:
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="slides/slide1.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" Target="slideMasters/slideMaster1.xml"/>`ppt/slides/_rels/slide1.xml.rels`:
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" Target="../slideLayouts/slideLayout1.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="../media/image1.png"/>`[Content_Types].xml`:
<Default Extension="png" ContentType="image/png"/>
<Default Extension="jpg" ContentType="image/jpeg"/>
<Override PartName="/ppt/slides/slide1.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml"/>`ppt/presentation.xml`:
<p:sldIdLst>
<p:sldId id="256" r:id="rId1"/>
<p:sldId id="257" r:id="rId2"/>
</p:sldIdLst>`docProps/app.xml`: Update slide count and statistics
<Slides>2</Slides>
<Paragraphs>10</Paragraphs>
<Words>50</Words>Slide Operations
Adding a New Slide
When adding a slide to the end of the presentation:
1. Create the slide file (ppt/slides/slideN.xml) 2. Update `[Content_Types].xml`: Add Override for the new slide 3. Update `ppt/_rels/presentation.xml.rels`: Add relationship for the new slide 4. Update `ppt/presentation.xml`: Add slide ID to <p:sldIdLst> 5. Create slide relationships (ppt/slides/_rels/slideN.xml.rels) if needed 6. Update `docProps/app.xml`: Increment slide count and update statistics (if present)
Duplicating a Slide
1. Copy the source slide XML file with a new name 2. Update all IDs in the new slide to be unique 3. Follow the "Adding a New Slide" steps above 4. CRITICAL: Remove or update any notes slide references in _rels files 5. Remove references to unused media files
Reordering Slides
1. Update `ppt/presentation.xml`: Reorder <p:sldId> elements in <p:sldIdLst> 2. The order of <p:sldId> elements determines slide order 3. Keep slide IDs and relationship IDs unchanged
Example:
<!-- Original order -->
<p:sldIdLst>
<p:sldId id="256" r:id="rId2"/>
<p:sldId id="257" r:id="rId3"/>
<p:sldId id="258" r:id="rId4"/>
</p:sldIdLst>
<!-- After moving slide 3 to position 2 -->
<p:sldIdLst>
<p:sldId id="256" r:id="rId2"/>
<p:sldId id="258" r:id="rId4"/>
<p:sldId id="257" r:id="rId3"/>
</p:sldIdLst>Deleting a Slide
1. Remove from `ppt/presentation.xml`: Delete the <p:sldId> entry 2. Remove from `ppt/_rels/presentation.xml.rels`: Delete the relationship 3. Remove from `[Content_Types].xml`: Delete the Override entry 4. Delete files: Remove ppt/slides/slideN.xml and ppt/slides/_rels/slideN.xml.rels 5. Update `docProps/app.xml`: Decrement slide count and update statistics 6. Clean up unused media: Remove orphaned images from ppt/media/
Note: Don't renumber remaining slides - keep their original IDs and filenames.
Common Errors to Avoid
- Encodings: Escape unicode characters in ASCII content:
"becomes“ - Images: Add to
ppt/media/and update relationship files - Lists: Omit bullets from list headers
- IDs: Use valid hexadecimal values for UUIDs
- Themes: Check all themes in
themedirectory for colors
Validation Checklist for Template-Based Presentations
Before Packing, Always:
- Clean unused resources: Remove unreferenced media, fonts, and notes directories
- Fix Content_Types.xml: Declare ALL slides, layouts, and themes present in the package
- Fix relationship IDs:
- Remove font embed references if not using embedded fonts
- Remove broken references: Check all
_relsfiles for references to deleted resources
Common Template Duplication Pitfalls:
- Multiple slides referencing the same notes slide after duplication
- Image/media references from template slides that no longer exist
- Font embedding references when fonts aren't included
- Missing slideLayout declarations for layouts 12-25
- docProps directory may not unpack - this is optional
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns="http://schemas.openxmlformats.org/package/2006/content-types"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.openxmlformats.org/package/2006/content-types"
elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all">
<xs:element name="Types" type="CT_Types"/>
<xs:element name="Default" type="CT_Default"/>
<xs:element name="Override" type="CT_Override"/>
<xs:complexType name="CT_Types">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Default"/>
<xs:element ref="Override"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="CT_Default">
<xs:attribute name="Extension" type="ST_Extension" use="required"/>
<xs:attribute name="ContentType" type="ST_ContentType" use="required"/>
</xs:complexType>
<xs:complexType name="CT_Override">
<xs:attribute name="ContentType" type="ST_ContentType" use="required"/>
<xs:attribute name="PartName" type="xs:anyURI" use="required"/>
</xs:complexType>
<xs:simpleType name="ST_ContentType">
<xs:restriction base="xs:string">
<xs:pattern
value="(((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))/((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))((\s+)*;(\s+)*(((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))=((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+)|("(([\p{IsLatin-1Supplement}\p{IsBasicLatin}-[\p{Cc}"\n\r]]|(\s+))|(\\[\p{IsBasicLatin}]))*"))))*)"
/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ST_Extension">
<xs:restriction base="xs:string">
<xs:pattern
value="([!$&'\(\)\*\+,:=]|(%[0-9a-fA-F][0-9a-fA-F])|[:@]|[a-zA-Z0-9\-_~])+"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
xmlns="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/" elementFormDefault="qualified" blockDefault="#all">
<xs:import namespace="http://purl.org/dc/elements/1.1/"
schemaLocation="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd"/>
<xs:import namespace="http://purl.org/dc/terms/"
schemaLocation="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd"/>
<xs:import id="xml" namespace="http://www.w3.org/XML/1998/namespace"/>
<xs:element name="coreProperties" type="CT_CoreProperties"/>
<xs:complexType name="CT_CoreProperties">
<xs:all>
<xs:element name="category" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element name="contentStatus" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element ref="dcterms:created" minOccurs="0" maxOccurs="1"/>
<xs:element ref="dc:creator" minOccurs="0" maxOccurs="1"/>
<xs:element ref="dc:description" minOccurs="0" maxOccurs="1"/>
<xs:element ref="dc:identifier" minOccurs="0" maxOccurs="1"/>
<xs:element name="keywords" minOccurs="0" maxOccurs="1" type="CT_Keywords"/>
<xs:element ref="dc:language" minOccurs="0" maxOccurs="1"/>
<xs:element name="lastModifiedBy" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element name="lastPrinted" minOccurs="0" maxOccurs="1" type="xs:dateTime"/>
<xs:element ref="dcterms:modified" minOccurs="0" maxOccurs="1"/>
<xs:element name="revision" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element ref="dc:subject" minOccurs="0" maxOccurs="1"/>
<xs:element ref="dc:title" minOccurs="0" maxOccurs="1"/>
<xs:element name="version" minOccurs="0" maxOccurs="1" type="xs:string"/>
</xs:all>
</xs:complexType>
<xs:complexType name="CT_Keywords" mixed="true">
<xs:sequence>
<xs:element name="value" minOccurs="0" maxOccurs="unbounded" type="CT_Keyword"/>
</xs:sequence>
<xs:attribute ref="xml:lang" use="optional"/>
</xs:complexType>
<xs:complexType name="CT_Keyword">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="xml:lang" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://schemas.openxmlformats.org/package/2006/digital-signature"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.openxmlformats.org/package/2006/digital-signature"
elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all">
<xsd:element name="SignatureTime" type="CT_SignatureTime"/>
<xsd:element name="RelationshipReference" type="CT_RelationshipReference"/>
<xsd:element name="RelationshipsGroupReference" type="CT_RelationshipsGroupReference"/>
<xsd:complexType name="CT_SignatureTime">
<xsd:sequence>
<xsd:element name="Format" type="ST_Format"/>
<xsd:element name="Value" type="ST_Value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_RelationshipReference">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="SourceId" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="CT_RelationshipsGroupReference">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="SourceType" type="xsd:anyURI" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="ST_Format">
<xsd:restriction base="xsd:string">
<xsd:pattern
value="(YYYY)|(YYYY-MM)|(YYYY-MM-DD)|(YYYY-MM-DDThh:mmTZD)|(YYYY-MM-DDThh:mm:ssTZD)|(YYYY-MM-DDThh:mm:ss.sTZD)"
/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_Value">
<xsd:restriction base="xsd:string">
<xsd:pattern
value="(([0-9][0-9][0-9][0-9]))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2))))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1))))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])):(((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))\.[0-9])(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))"
/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns="http://schemas.openxmlformats.org/package/2006/relationships"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.openxmlformats.org/package/2006/relationships"
elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all">
<xsd:element name="Relationships" type="CT_Relationships"/>
<xsd:element name="Relationship" type="CT_Relationship"/>
<xsd:complexType name="CT_Relationships">
<xsd:sequence>
<xsd:element ref="Relationship" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Relationship">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="TargetMode" type="ST_TargetMode" use="optional"/>
<xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
<xsd:attribute name="Type" type="xsd:anyURI" use="required"/>
<xsd:attribute name="Id" type="xsd:ID" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="ST_TargetMode">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="External"/>
<xsd:enumeration value="Internal"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing"
elementFormDefault="qualified">
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:complexType name="CT_ShapeNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"
/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Shape">
<xsd:sequence>
<xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
<xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="textlink" type="xsd:string" use="optional"/>
<xsd:attribute name="fLocksText" type="xsd:boolean" use="optional" default="true"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_ConnectorNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Connector">
<xsd:sequence>
<xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_PictureNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Picture">
<xsd:sequence>
<xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_GraphicFrameNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_GraphicFrame">
<xsd:sequence>
<xsd:element name="nvGraphicFramePr" type="CT_GraphicFrameNonVisual" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_GroupShapeNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_GroupShape">
<xsd:sequence>
<xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="sp" type="CT_Shape"/>
<xsd:element name="grpSp" type="CT_GroupShape"/>
<xsd:element name="graphicFrame" type="CT_GraphicFrame"/>
<xsd:element name="cxnSp" type="CT_Connector"/>
<xsd:element name="pic" type="CT_Picture"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:group name="EG_ObjectChoices">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="sp" type="CT_Shape"/>
<xsd:element name="grpSp" type="CT_GroupShape"/>
<xsd:element name="graphicFrame" type="CT_GraphicFrame"/>
<xsd:element name="cxnSp" type="CT_Connector"/>
<xsd:element name="pic" type="CT_Picture"/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
<xsd:simpleType name="ST_MarkerCoordinate">
<xsd:restriction base="xsd:double">
<xsd:minInclusive value="0.0"/>
<xsd:maxInclusive value="1.0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_Marker">
<xsd:sequence>
<xsd:element name="x" type="ST_MarkerCoordinate" minOccurs="1" maxOccurs="1"/>
<xsd:element name="y" type="ST_MarkerCoordinate" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_RelSizeAnchor">
<xsd:sequence>
<xsd:element name="from" type="CT_Marker"/>
<xsd:element name="to" type="CT_Marker"/>
<xsd:group ref="EG_ObjectChoices"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_AbsSizeAnchor">
<xsd:sequence>
<xsd:element name="from" type="CT_Marker"/>
<xsd:element name="ext" type="a:CT_PositiveSize2D"/>
<xsd:group ref="EG_ObjectChoices"/>
</xsd:sequence>
</xsd:complexType>
<xsd:group name="EG_Anchor">
<xsd:choice>
<xsd:element name="relSizeAnchor" type="CT_RelSizeAnchor"/>
<xsd:element name="absSizeAnchor" type="CT_AbsSizeAnchor"/>
</xsd:choice>
</xsd:group>
<xsd:complexType name="CT_Drawing">
<xsd:sequence>
<xsd:group ref="EG_Anchor" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
elementFormDefault="qualified"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas">
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:element name="lockedCanvas" type="a:CT_GvmlGroupShape"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/picture"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" elementFormDefault="qualified"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/picture">
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:complexType name="CT_PictureNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Picture">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="pic" type="CT_Picture"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
elementFormDefault="qualified">
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:import schemaLocation="shared-relationshipReference.xsd"
namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
<xsd:element name="from" type="CT_Marker"/>
<xsd:element name="to" type="CT_Marker"/>
<xsd:complexType name="CT_AnchorClientData">
<xsd:attribute name="fLocksWithSheet" type="xsd:boolean" use="optional" default="true"/>
<xsd:attribute name="fPrintsWithSheet" type="xsd:boolean" use="optional" default="true"/>
</xsd:complexType>
<xsd:complexType name="CT_ShapeNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"
/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Shape">
<xsd:sequence>
<xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
<xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="textlink" type="xsd:string" use="optional"/>
<xsd:attribute name="fLocksText" type="xsd:boolean" use="optional" default="true"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_ConnectorNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Connector">
<xsd:sequence>
<xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_PictureNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Picture">
<xsd:sequence>
<xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_GraphicalObjectFrameNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_GraphicalObjectFrame">
<xsd:sequence>
<xsd:element name="nvGraphicFramePr" type="CT_GraphicalObjectFrameNonVisual" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_GroupShapeNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_GroupShape">
<xsd:sequence>
<xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="sp" type="CT_Shape"/>
<xsd:element name="grpSp" type="CT_GroupShape"/>
<xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/>
<xsd:element name="cxnSp" type="CT_Connector"/>
<xsd:element name="pic" type="CT_Picture"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:group name="EG_ObjectChoices">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="sp" type="CT_Shape"/>
<xsd:element name="grpSp" type="CT_GroupShape"/>
<xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/>
<xsd:element name="cxnSp" type="CT_Connector"/>
<xsd:element name="pic" type="CT_Picture"/>
<xsd:element name="contentPart" type="CT_Rel"/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
<xsd:complexType name="CT_Rel">
<xsd:attribute ref="r:id" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_ColID">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_RowID">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_Marker">
<xsd:sequence>
<xsd:element name="col" type="ST_ColID"/>
<xsd:element name="colOff" type="a:ST_Coordinate"/>
<xsd:element name="row" type="ST_RowID"/>
<xsd:element name="rowOff" type="a:ST_Coordinate"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ST_EditAs">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="twoCell"/>
<xsd:enumeration value="oneCell"/>
<xsd:enumeration value="absolute"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_TwoCellAnchor">
<xsd:sequence>
<xsd:element name="from" type="CT_Marker"/>
<xsd:element name="to" type="CT_Marker"/>
<xsd:group ref="EG_ObjectChoices"/>
<xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="editAs" type="ST_EditAs" use="optional" default="twoCell"/>
</xsd:complexType>
<xsd:complexType name="CT_OneCellAnchor">
<xsd:sequence>
<xsd:element name="from" type="CT_Marker"/>
<xsd:element name="ext" type="a:CT_PositiveSize2D"/>
<xsd:group ref="EG_ObjectChoices"/>
<xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_AbsoluteAnchor">
<xsd:sequence>
<xsd:element name="pos" type="a:CT_Point2D"/>
<xsd:element name="ext" type="a:CT_PositiveSize2D"/>
<xsd:group ref="EG_ObjectChoices"/>
<xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:group name="EG_Anchor">
<xsd:choice>
<xsd:element name="twoCellAnchor" type="CT_TwoCellAnchor"/>
<xsd:element name="oneCellAnchor" type="CT_OneCellAnchor"/>
<xsd:element name="absoluteAnchor" type="CT_AbsoluteAnchor"/>
</xsd:choice>
</xsd:group>
<xsd:complexType name="CT_Drawing">
<xsd:sequence>
<xsd:group ref="EG_Anchor" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="wsDr" type="CT_Drawing"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
xmlns:dpct="http://schemas.openxmlformats.org/drawingml/2006/picture"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
elementFormDefault="qualified">
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:import schemaLocation="wml.xsd"
namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main"/>
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/picture"
schemaLocation="dml-picture.xsd"/>
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
schemaLocation="shared-relationshipReference.xsd"/>
<xsd:complexType name="CT_EffectExtent">
<xsd:attribute name="l" type="a:ST_Coordinate" use="required"/>
<xsd:attribute name="t" type="a:ST_Coordinate" use="required"/>
<xsd:attribute name="r" type="a:ST_Coordinate" use="required"/>
<xsd:attribute name="b" type="a:ST_Coordinate" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_WrapDistance">
<xsd:restriction base="xsd:unsignedInt"/>
</xsd:simpleType>
<xsd:complexType name="CT_Inline">
<xsd:sequence>
<xsd:element name="extent" type="a:CT_PositiveSize2D"/>
<xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
<xsd:element name="docPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
minOccurs="0" maxOccurs="1"/>
<xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="ST_WrapText">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="bothSides"/>
<xsd:enumeration value="left"/>
<xsd:enumeration value="right"/>
<xsd:enumeration value="largest"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_WrapPath">
<xsd:sequence>
<xsd:element name="start" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/>
<xsd:element name="lineTo" type="a:CT_Point2D" minOccurs="2" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="edited" type="xsd:boolean" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_WrapNone"/>
<xsd:complexType name="CT_WrapSquare">
<xsd:sequence>
<xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="wrapText" type="ST_WrapText" use="required"/>
<xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_WrapTight">
<xsd:sequence>
<xsd:element name="wrapPolygon" type="CT_WrapPath" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="wrapText" type="ST_WrapText" use="required"/>
<xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_WrapThrough">
<xsd:sequence>
<xsd:element name="wrapPolygon" type="CT_WrapPath" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="wrapText" type="ST_WrapText" use="required"/>
<xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_WrapTopBottom">
<xsd:sequence>
<xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
</xsd:complexType>
<xsd:group name="EG_WrapType">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="wrapNone" type="CT_WrapNone" minOccurs="1" maxOccurs="1"/>
<xsd:element name="wrapSquare" type="CT_WrapSquare" minOccurs="1" maxOccurs="1"/>
<xsd:element name="wrapTight" type="CT_WrapTight" minOccurs="1" maxOccurs="1"/>
<xsd:element name="wrapThrough" type="CT_WrapThrough" minOccurs="1" maxOccurs="1"/>
<xsd:element name="wrapTopAndBottom" type="CT_WrapTopBottom" minOccurs="1" maxOccurs="1"/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
<xsd:simpleType name="ST_PositionOffset">
<xsd:restriction base="xsd:int"/>
</xsd:simpleType>
<xsd:simpleType name="ST_AlignH">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="left"/>
<xsd:enumeration value="right"/>
<xsd:enumeration value="center"/>
<xsd:enumeration value="inside"/>
<xsd:enumeration value="outside"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_RelFromH">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="margin"/>
<xsd:enumeration value="page"/>
<xsd:enumeration value="column"/>
<xsd:enumeration value="character"/>
<xsd:enumeration value="leftMargin"/>
<xsd:enumeration value="rightMargin"/>
<xsd:enumeration value="insideMargin"/>
<xsd:enumeration value="outsideMargin"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_PosH">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="align" type="ST_AlignH" minOccurs="1" maxOccurs="1"/>
<xsd:element name="posOffset" type="ST_PositionOffset" minOccurs="1" maxOccurs="1"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="relativeFrom" type="ST_RelFromH" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_AlignV">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="top"/>
<xsd:enumeration value="bottom"/>
<xsd:enumeration value="center"/>
<xsd:enumeration value="inside"/>
<xsd:enumeration value="outside"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_RelFromV">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="margin"/>
<xsd:enumeration value="page"/>
<xsd:enumeration value="paragraph"/>
<xsd:enumeration value="line"/>
<xsd:enumeration value="topMargin"/>
<xsd:enumeration value="bottomMargin"/>
<xsd:enumeration value="insideMargin"/>
<xsd:enumeration value="outsideMargin"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_PosV">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="align" type="ST_AlignV" minOccurs="1" maxOccurs="1"/>
<xsd:element name="posOffset" type="ST_PositionOffset" minOccurs="1" maxOccurs="1"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="relativeFrom" type="ST_RelFromV" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_Anchor">
<xsd:sequence>
<xsd:element name="simplePos" type="a:CT_Point2D"/>
<xsd:element name="positionH" type="CT_PosH"/>
<xsd:element name="positionV" type="CT_PosV"/>
<xsd:element name="extent" type="a:CT_PositiveSize2D"/>
<xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
<xsd:group ref="EG_WrapType"/>
<xsd:element name="docPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
minOccurs="0" maxOccurs="1"/>
<xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="simplePos" type="xsd:boolean"/>
<xsd:attribute name="relativeHeight" type="xsd:unsignedInt" use="required"/>
<xsd:attribute name="behindDoc" type="xsd:boolean" use="required"/>
<xsd:attribute name="locked" type="xsd:boolean" use="required"/>
<xsd:attribute name="layoutInCell" type="xsd:boolean" use="required"/>
<xsd:attribute name="hidden" type="xsd:boolean" use="optional"/>
<xsd:attribute name="allowOverlap" type="xsd:boolean" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_TxbxContent">
<xsd:group ref="w:EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/>
</xsd:complexType>
<xsd:complexType name="CT_TextboxInfo">
<xsd:sequence>
<xsd:element name="txbxContent" type="CT_TxbxContent" minOccurs="1" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:unsignedShort" use="optional" default="0"/>
</xsd:complexType>
<xsd:complexType name="CT_LinkedTextboxInformation">
<xsd:sequence>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:unsignedShort" use="required"/>
<xsd:attribute name="seq" type="xsd:unsignedShort" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_WordprocessingShape">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="cNvCnPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:choice>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element name="txbx" type="CT_TextboxInfo" minOccurs="1" maxOccurs="1"/>
<xsd:element name="linkedTxbx" type="CT_LinkedTextboxInformation" minOccurs="1"
maxOccurs="1"/>
</xsd:choice>
<xsd:element name="bodyPr" type="a:CT_TextBodyProperties" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="normalEastAsianFlow" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_GraphicFrame">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvFrPr" type="a:CT_NonVisualGraphicFrameProperties" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_WordprocessingContentPartNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/>
<xsd:element name="cNvContentPartPr" type="a:CT_NonVisualContentPartProperties" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_WordprocessingContentPart">
<xsd:sequence>
<xsd:element name="nvContentPartPr" type="CT_WordprocessingContentPartNonVisual" minOccurs="0" maxOccurs="1"/>
<xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="0" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="bwMode" type="a:ST_BlackWhiteMode" use="optional"/>
<xsd:attribute ref="r:id" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_WordprocessingGroup">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/>
<xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="wsp"/>
<xsd:element name="grpSp" type="CT_WordprocessingGroup"/>
<xsd:element name="graphicFrame" type="CT_GraphicFrame"/>
<xsd:element ref="dpct:pic"/>
<xsd:element name="contentPart" type="CT_WordprocessingContentPart"/>
</xsd:choice>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_WordprocessingCanvas">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="bg" type="a:CT_BackgroundFormatting" minOccurs="0" maxOccurs="1"/>
<xsd:element name="whole" type="a:CT_WholeE2oFormatting" minOccurs="0" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="wsp"/>
<xsd:element ref="dpct:pic"/>
<xsd:element name="contentPart" type="CT_WordprocessingContentPart"/>
<xsd:element ref="wgp"/>
<xsd:element name="graphicFrame" type="CT_GraphicFrame"/>
</xsd:choice>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="wpc" type="CT_WordprocessingCanvas"/>
<xsd:element name="wgp" type="CT_WordprocessingGroup"/>
<xsd:element name="wsp" type="CT_WordprocessingShape"/>
<xsd:element name="inline" type="CT_Inline"/>
<xsd:element name="anchor" type="CT_Anchor"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/officeDocument/2006/characteristics"
targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/characteristics"
elementFormDefault="qualified">
<xsd:complexType name="CT_AdditionalCharacteristics">
<xsd:sequence>
<xsd:element name="characteristic" type="CT_Characteristic" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Characteristic">
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="relation" type="ST_Relation" use="required"/>
<xsd:attribute name="val" type="xsd:string" use="required"/>
<xsd:attribute name="vocabulary" type="xsd:anyURI" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="ST_Relation">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ge"/>
<xsd:enumeration value="le"/>
<xsd:enumeration value="gt"/>
<xsd:enumeration value="lt"/>
<xsd:enumeration value="eq"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="additionalCharacteristics" type="CT_AdditionalCharacteristics"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"
xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"
elementFormDefault="qualified">
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
schemaLocation="shared-commonSimpleTypes.xsd"/>
<xsd:simpleType name="ST_SourceType">
<xsd:restriction base="s:ST_String">
<xsd:enumeration value="ArticleInAPeriodical"/>
<xsd:enumeration value="Book"/>
<xsd:enumeration value="BookSection"/>
<xsd:enumeration value="JournalArticle"/>
<xsd:enumeration value="ConferenceProceedings"/>
<xsd:enumeration value="Report"/>
<xsd:enumeration value="SoundRecording"/>
<xsd:enumeration value="Performance"/>
<xsd:enumeration value="Art"/>
<xsd:enumeration value="DocumentFromInternetSite"/>
<xsd:enumeration value="InternetSite"/>
<xsd:enumeration value="Film"/>
<xsd:enumeration value="Interview"/>
<xsd:enumeration value="Patent"/>
<xsd:enumeration value="ElectronicSource"/>
<xsd:enumeration value="Case"/>
<xsd:enumeration value="Misc"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_NameListType">
<xsd:sequence>
<xsd:element name="Person" type="CT_PersonType" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_PersonType">
<xsd:sequence>
<xsd:element name="Last" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="First" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Middle" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_NameType">
<xsd:sequence>
<xsd:element name="NameList" type="CT_NameListType" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_NameOrCorporateType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element name="NameList" type="CT_NameListType" minOccurs="1" maxOccurs="1"/>
<xsd:element name="Corporate" minOccurs="1" maxOccurs="1" type="s:ST_String"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_AuthorType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="Artist" type="CT_NameType"/>
<xsd:element name="Author" type="CT_NameOrCorporateType"/>
<xsd:element name="BookAuthor" type="CT_NameType"/>
<xsd:element name="Compiler" type="CT_NameType"/>
<xsd:element name="Composer" type="CT_NameType"/>
<xsd:element name="Conductor" type="CT_NameType"/>
<xsd:element name="Counsel" type="CT_NameType"/>
<xsd:element name="Director" type="CT_NameType"/>
<xsd:element name="Editor" type="CT_NameType"/>
<xsd:element name="Interviewee" type="CT_NameType"/>
<xsd:element name="Interviewer" type="CT_NameType"/>
<xsd:element name="Inventor" type="CT_NameType"/>
<xsd:element name="Performer" type="CT_NameOrCorporateType"/>
<xsd:element name="ProducerName" type="CT_NameType"/>
<xsd:element name="Translator" type="CT_NameType"/>
<xsd:element name="Writer" type="CT_NameType"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_SourceType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="AbbreviatedCaseNumber" type="s:ST_String"/>
<xsd:element name="AlbumTitle" type="s:ST_String"/>
<xsd:element name="Author" type="CT_AuthorType"/>
<xsd:element name="BookTitle" type="s:ST_String"/>
<xsd:element name="Broadcaster" type="s:ST_String"/>
<xsd:element name="BroadcastTitle" type="s:ST_String"/>
<xsd:element name="CaseNumber" type="s:ST_String"/>
<xsd:element name="ChapterNumber" type="s:ST_String"/>
<xsd:element name="City" type="s:ST_String"/>
<xsd:element name="Comments" type="s:ST_String"/>
<xsd:element name="ConferenceName" type="s:ST_String"/>
<xsd:element name="CountryRegion" type="s:ST_String"/>
<xsd:element name="Court" type="s:ST_String"/>
<xsd:element name="Day" type="s:ST_String"/>
<xsd:element name="DayAccessed" type="s:ST_String"/>
<xsd:element name="Department" type="s:ST_String"/>
<xsd:element name="Distributor" type="s:ST_String"/>
<xsd:element name="Edition" type="s:ST_String"/>
<xsd:element name="Guid" type="s:ST_String"/>
<xsd:element name="Institution" type="s:ST_String"/>
<xsd:element name="InternetSiteTitle" type="s:ST_String"/>
<xsd:element name="Issue" type="s:ST_String"/>
<xsd:element name="JournalName" type="s:ST_String"/>
<xsd:element name="LCID" type="s:ST_Lang"/>
<xsd:element name="Medium" type="s:ST_String"/>
<xsd:element name="Month" type="s:ST_String"/>
<xsd:element name="MonthAccessed" type="s:ST_String"/>
<xsd:element name="NumberVolumes" type="s:ST_String"/>
<xsd:element name="Pages" type="s:ST_String"/>
<xsd:element name="PatentNumber" type="s:ST_String"/>
<xsd:element name="PeriodicalTitle" type="s:ST_String"/>
<xsd:element name="ProductionCompany" type="s:ST_String"/>
<xsd:element name="PublicationTitle" type="s:ST_String"/>
<xsd:element name="Publisher" type="s:ST_String"/>
<xsd:element name="RecordingNumber" type="s:ST_String"/>
<xsd:element name="RefOrder" type="s:ST_String"/>
<xsd:element name="Reporter" type="s:ST_String"/>
<xsd:element name="SourceType" type="ST_SourceType"/>
<xsd:element name="ShortTitle" type="s:ST_String"/>
<xsd:element name="StandardNumber" type="s:ST_String"/>
<xsd:element name="StateProvince" type="s:ST_String"/>
<xsd:element name="Station" type="s:ST_String"/>
<xsd:element name="Tag" type="s:ST_String"/>
<xsd:element name="Theater" type="s:ST_String"/>
<xsd:element name="ThesisType" type="s:ST_String"/>
<xsd:element name="Title" type="s:ST_String"/>
<xsd:element name="Type" type="s:ST_String"/>
<xsd:element name="URL" type="s:ST_String"/>
<xsd:element name="Version" type="s:ST_String"/>
<xsd:element name="Volume" type="s:ST_String"/>
<xsd:element name="Year" type="s:ST_String"/>
<xsd:element name="YearAccessed" type="s:ST_String"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Sources" type="CT_Sources"/>
<xsd:complexType name="CT_Sources">
<xsd:sequence>
<xsd:element name="Source" type="CT_SourceType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="SelectedStyle" type="s:ST_String"/>
<xsd:attribute name="StyleName" type="s:ST_String"/>
<xsd:attribute name="URI" type="s:ST_String"/>
</xsd:complexType>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
elementFormDefault="qualified">
<xsd:simpleType name="ST_Lang">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="ST_HexColorRGB">
<xsd:restriction base="xsd:hexBinary">
<xsd:length value="3" fixed="true"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_Panose">
<xsd:restriction base="xsd:hexBinary">
<xsd:length value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_CalendarType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="gregorian"/>
<xsd:enumeration value="gregorianUs"/>
<xsd:enumeration value="gregorianMeFrench"/>
<xsd:enumeration value="gregorianArabic"/>
<xsd:enumeration value="hijri"/>
<xsd:enumeration value="hebrew"/>
<xsd:enumeration value="taiwan"/>
<xsd:enumeration value="japan"/>
<xsd:enumeration value="thai"/>
<xsd:enumeration value="korea"/>
<xsd:enumeration value="saka"/>
<xsd:enumeration value="gregorianXlitEnglish"/>
<xsd:enumeration value="gregorianXlitFrench"/>
<xsd:enumeration value="none"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_AlgClass">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="hash"/>
<xsd:enumeration value="custom"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_CryptProv">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="rsaAES"/>
<xsd:enumeration value="rsaFull"/>
<xsd:enumeration value="custom"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_AlgType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="typeAny"/>
<xsd:enumeration value="custom"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ColorType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="ST_Guid">
<xsd:restriction base="xsd:token">
<xsd:pattern value="\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_OnOff">
<xsd:union memberTypes="xsd:boolean ST_OnOff1"/>
</xsd:simpleType>
<xsd:simpleType name="ST_OnOff1">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="on"/>
<xsd:enumeration value="off"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_String">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="ST_XmlName">
<xsd:restriction base="xsd:NCName">
<xsd:minLength value="1"/>
<xsd:maxLength value="255"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_TrueFalse">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="t"/>
<xsd:enumeration value="f"/>
<xsd:enumeration value="true"/>
<xsd:enumeration value="false"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_TrueFalseBlank">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="t"/>
<xsd:enumeration value="f"/>
<xsd:enumeration value="true"/>
<xsd:enumeration value="false"/>
<xsd:enumeration value=""/>
<xsd:enumeration value="True"/>
<xsd:enumeration value="False"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_UnsignedDecimalNumber">
<xsd:restriction base="xsd:decimal">
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_TwipsMeasure">
<xsd:union memberTypes="ST_UnsignedDecimalNumber ST_PositiveUniversalMeasure"/>
</xsd:simpleType>
<xsd:simpleType name="ST_VerticalAlignRun">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="baseline"/>
<xsd:enumeration value="superscript"/>
<xsd:enumeration value="subscript"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_Xstring">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="ST_XAlign">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="left"/>
<xsd:enumeration value="center"/>
<xsd:enumeration value="right"/>
<xsd:enumeration value="inside"/>
<xsd:enumeration value="outside"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_YAlign">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="inline"/>
<xsd:enumeration value="top"/>
<xsd:enumeration value="center"/>
<xsd:enumeration value="bottom"/>
<xsd:enumeration value="inside"/>
<xsd:enumeration value="outside"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ConformanceClass">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="strict"/>
<xsd:enumeration value="transitional"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_UniversalMeasure">
<xsd:restriction base="xsd:string">
<xsd:pattern value="-?[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_PositiveUniversalMeasure">
<xsd:restriction base="ST_UniversalMeasure">
<xsd:pattern value="[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_Percentage">
<xsd:restriction base="xsd:string">
<xsd:pattern value="-?[0-9]+(\.[0-9]+)?%"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_FixedPercentage">
<xsd:restriction base="ST_Percentage">
<xsd:pattern value="-?((100)|([0-9][0-9]?))(\.[0-9][0-9]?)?%"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_PositivePercentage">
<xsd:restriction base="ST_Percentage">
<xsd:pattern value="[0-9]+(\.[0-9]+)?%"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_PositiveFixedPercentage">
<xsd:restriction base="ST_Percentage">
<xsd:pattern value="((100)|([0-9][0-9]?))(\.[0-9][0-9]?)?%"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/officeDocument/2006/customXml"
xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/customXml"
elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all">
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
schemaLocation="shared-commonSimpleTypes.xsd"/>
<xsd:complexType name="CT_DatastoreSchemaRef">
<xsd:attribute name="uri" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_DatastoreSchemaRefs">
<xsd:sequence>
<xsd:element name="schemaRef" type="CT_DatastoreSchemaRef" minOccurs="0" maxOccurs="unbounded"
/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_DatastoreItem">
<xsd:sequence>
<xsd:element name="schemaRefs" type="CT_DatastoreSchemaRefs" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="itemID" type="s:ST_Guid" use="required"/>
</xsd:complexType>
<xsd:element name="datastoreItem" type="CT_DatastoreItem"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/schemaLibrary/2006/main"
targetNamespace="http://schemas.openxmlformats.org/schemaLibrary/2006/main"
attributeFormDefault="qualified" elementFormDefault="qualified">
<xsd:complexType name="CT_Schema">
<xsd:attribute name="uri" type="xsd:string" default=""/>
<xsd:attribute name="manifestLocation" type="xsd:string"/>
<xsd:attribute name="schemaLocation" type="xsd:string"/>
<xsd:attribute name="schemaLanguage" type="xsd:token"/>
</xsd:complexType>
<xsd:complexType name="CT_SchemaLibrary">
<xsd:sequence>
<xsd:element name="schema" type="CT_Schema" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="schemaLibrary" type="CT_SchemaLibrary"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"
xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"
blockDefault="#all" elementFormDefault="qualified">
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
schemaLocation="shared-documentPropertiesVariantTypes.xsd"/>
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
schemaLocation="shared-commonSimpleTypes.xsd"/>
<xsd:element name="Properties" type="CT_Properties"/>
<xsd:complexType name="CT_Properties">
<xsd:sequence>
<xsd:element name="property" minOccurs="0" maxOccurs="unbounded" type="CT_Property"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Property">
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element ref="vt:vector"/>
<xsd:element ref="vt:array"/>
<xsd:element ref="vt:blob"/>
<xsd:element ref="vt:oblob"/>
<xsd:element ref="vt:empty"/>
<xsd:element ref="vt:null"/>
<xsd:element ref="vt:i1"/>
<xsd:element ref="vt:i2"/>
<xsd:element ref="vt:i4"/>
<xsd:element ref="vt:i8"/>
<xsd:element ref="vt:int"/>
<xsd:element ref="vt:ui1"/>
<xsd:element ref="vt:ui2"/>
<xsd:element ref="vt:ui4"/>
<xsd:element ref="vt:ui8"/>
<xsd:element ref="vt:uint"/>
<xsd:element ref="vt:r4"/>
<xsd:element ref="vt:r8"/>
<xsd:element ref="vt:decimal"/>
<xsd:element ref="vt:lpstr"/>
<xsd:element ref="vt:lpwstr"/>
<xsd:element ref="vt:bstr"/>
<xsd:element ref="vt:date"/>
<xsd:element ref="vt:filetime"/>
<xsd:element ref="vt:bool"/>
<xsd:element ref="vt:cy"/>
<xsd:element ref="vt:error"/>
<xsd:element ref="vt:stream"/>
<xsd:element ref="vt:ostream"/>
<xsd:element ref="vt:storage"/>
<xsd:element ref="vt:ostorage"/>
<xsd:element ref="vt:vstream"/>
<xsd:element ref="vt:clsid"/>
</xsd:choice>
<xsd:attribute name="fmtid" use="required" type="s:ST_Guid"/>
<xsd:attribute name="pid" use="required" type="xsd:int"/>
<xsd:attribute name="name" use="optional" type="xsd:string"/>
<xsd:attribute name="linkTarget" use="optional" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
elementFormDefault="qualified" blockDefault="#all">
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
schemaLocation="shared-documentPropertiesVariantTypes.xsd"/>
<xsd:element name="Properties" type="CT_Properties"/>
<xsd:complexType name="CT_Properties">
<xsd:all>
<xsd:element name="Template" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="Manager" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="Company" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="Pages" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="Words" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="Characters" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="PresentationFormat" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="Lines" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="Paragraphs" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="Slides" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="Notes" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="TotalTime" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="HiddenSlides" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="MMClips" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="ScaleCrop" minOccurs="0" maxOccurs="1" type="xsd:boolean"/>
<xsd:element name="HeadingPairs" minOccurs="0" maxOccurs="1" type="CT_VectorVariant"/>
<xsd:element name="TitlesOfParts" minOccurs="0" maxOccurs="1" type="CT_VectorLpstr"/>
<xsd:element name="LinksUpToDate" minOccurs="0" maxOccurs="1" type="xsd:boolean"/>
<xsd:element name="CharactersWithSpaces" minOccurs="0" maxOccurs="1" type="xsd:int"/>
<xsd:element name="SharedDoc" minOccurs="0" maxOccurs="1" type="xsd:boolean"/>
<xsd:element name="HyperlinkBase" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="HLinks" minOccurs="0" maxOccurs="1" type="CT_VectorVariant"/>
<xsd:element name="HyperlinksChanged" minOccurs="0" maxOccurs="1" type="xsd:boolean"/>
<xsd:element name="DigSig" minOccurs="0" maxOccurs="1" type="CT_DigSigBlob"/>
<xsd:element name="Application" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="AppVersion" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="DocSecurity" minOccurs="0" maxOccurs="1" type="xsd:int"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="CT_VectorVariant">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element ref="vt:vector"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_VectorLpstr">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element ref="vt:vector"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_DigSigBlob">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element ref="vt:blob"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="urn:schemas-microsoft-com:office:powerpoint"
targetNamespace="urn:schemas-microsoft-com:office:powerpoint" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:element name="iscomment" type="CT_Empty"/>
<xsd:element name="textdata" type="CT_Rel"/>
<xsd:complexType name="CT_Empty"/>
<xsd:complexType name="CT_Rel">
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" targetNamespace="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash">
<xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/>
<xsd:attribute name="storeItemChecksum" type="w12:ST_String"/>
</xsd:schema>